From: Andrea Bianco Date: Mon, 19 Sep 2016 08:30:41 +0000 (+0200) Subject: Built motion from commit 2ce5a8e.|0.0.143 X-Git-Tag: 20/10/16~57 X-Git-Url: http://repos.xcallymotion.com/base/%22angular-material.themes.css/%22https:/fonts.googleapis.com/%22my-avatar.png//%22%7B%7Blicense.messaging?a=commitdiff_plain;h=2a933b5c1a3f70078029b76495cf3ff33e507cfe;p=motion.git Built motion from commit 2ce5a8e.|0.0.143 --- diff --git a/public/app/442dccae.app.js b/public/app/6b804832.app.js similarity index 98% rename from public/app/442dccae.app.js rename to public/app/6b804832.app.js index 219264a..d58242b 100644 --- a/public/app/442dccae.app.js +++ b/public/app/6b804832.app.js @@ -20,7 +20,7 @@ j.nAccept=h,j.nReject=i,f){case"chat":j["class"]="alert-info",j.icon="icon-bubbl },{value:"Asia/Vladivostok",name:"Vladivostok"},{value:"Asia/Yakutsk",name:"Yakutsk"},{value:"Asia/Yekaterinburg",name:"Yekaterinburg"},{value:"Asia/Yerevan",name:"Yerevan"}]},{group:"Africa",zones:[{value:"Africa/Abidjan",name:"Abidjan"},{value:"Africa/Accra",name:"Accra"},{value:"Africa/Addis_Ababa",name:"Addis Ababa"},{value:"Africa/Algiers",name:"Algiers"},{value:"Africa/Asmara",name:"Asmara"},{value:"Africa/Asmera",name:"Asmera"},{value:"Africa/Bamako",name:"Bamako"},{value:"Africa/Bangui",name:"Bangui"},{value:"Africa/Banjul",name:"Banjul"},{value:"Africa/Bissau",name:"Bissau"},{value:"Africa/Blantyre",name:"Blantyre"},{value:"Africa/Brazzaville",name:"Brazzaville"},{value:"Africa/Bujumbura",name:"Bujumbura"},{value:"Africa/Cairo",name:"Cairo"},{value:"Africa/Casablanca",name:"Casablanca"},{value:"Africa/Ceuta",name:"Ceuta"},{value:"Africa/Conakry",name:"Conakry"},{value:"Africa/Dakar",name:"Dakar"},{value:"Africa/Dar_es_Salaam",name:"Dar es Salaam"},{value:"Africa/Djibouti",name:"Djibouti"},{value:"Africa/Douala",name:"Douala"},{value:"Africa/El_Aaiun",name:"El Aaiun"},{value:"Africa/Freetown",name:"Freetown"},{value:"Africa/Gaborone",name:"Gaborone"},{value:"Africa/Harare",name:"Harare"},{value:"Africa/Johannesburg",name:"Johannesburg"},{value:"Africa/Kampala",name:"Kampala"},{value:"Africa/Khartoum",name:"Khartoum"},{value:"Africa/Kigali",name:"Kigali"},{value:"Africa/Kinshasa",name:"Kinshasa"},{value:"Africa/Lagos",name:"Lagos"},{value:"Africa/Libreville",name:"Libreville"},{value:"Africa/Lome",name:"Lome"},{value:"Africa/Luanda",name:"Luanda"},{value:"Africa/Lubumbashi",name:"Lubumbashi"},{value:"Africa/Lusaka",name:"Lusaka"},{value:"Africa/Malabo",name:"Malabo"},{value:"Africa/Maputo",name:"Maputo"},{value:"Africa/Maseru",name:"Maseru"},{value:"Africa/Mbabane",name:"Mbabane"},{value:"Africa/Mogadishu",name:"Mogadishu"},{value:"Africa/Monrovia",name:"Monrovia"},{value:"Africa/Nairobi",name:"Nairobi"},{value:"Africa/Ndjamena",name:"Ndjamena"},{value:"Africa/Niamey",name:"Niamey"},{value:"Africa/Nouakchott",name:"Nouakchott"},{value:"Africa/Ouagadougou",name:"Ouagadougou"},{value:"Africa/Porto-Novo",name:"Porto-Novo"},{value:"Africa/Sao_Tome",name:"Sao Tome"},{value:"Africa/Timbuktu",name:"Timbuktu"},{value:"Africa/Tripoli",name:"Tripoli"},{value:"Africa/Tunis",name:"Tunis"},{value:"Africa/Windhoek",name:"Windhoek"}]},{group:"Australia",zones:[{value:"Australia/ACT",name:"ACT"},{value:"Australia/Adelaide",name:"Adelaide"},{value:"Australia/Brisbane",name:"Brisbane"},{value:"Australia/Broken_Hill",name:"Broken Hill"},{value:"Australia/Canberra",name:"Canberra"},{value:"Australia/Currie",name:"Currie"},{value:"Australia/Darwin",name:"Darwin"},{value:"Australia/Eucla",name:"Eucla"},{value:"Australia/Hobart",name:"Hobart"},{value:"Australia/LHI",name:"LHI"},{value:"Australia/Lindeman",name:"Lindeman"},{value:"Australia/Lord_Howe",name:"Lord Howe"},{value:"Australia/Melbourne",name:"Melbourne"},{value:"Australia/North",name:"North"},{value:"Australia/NSW",name:"NSW"},{value:"Australia/Perth",name:"Perth"},{value:"Australia/Queensland",name:"Queensland"},{value:"Australia/South",name:"South"},{value:"Australia/Sydney",name:"Sydney"},{value:"Australia/Tasmania",name:"Tasmania"},{value:"Australia/Victoria",name:"Victoria"},{value:"Australia/West",name:"West"},{value:"Australia/Yancowinna",name:"Yancowinna"}]},{group:"Indian",zones:[{value:"Indian/Antananarivo",name:"Antananarivo"},{value:"Indian/Chagos",name:"Chagos"},{value:"Indian/Christmas",name:"Christmas"},{value:"Indian/Cocos",name:"Cocos"},{value:"Indian/Comoro",name:"Comoro"},{value:"Indian/Kerguelen",name:"Kerguelen"},{value:"Indian/Mahe",name:"Mahe"},{value:"Indian/Maldives",name:"Maldives"},{value:"Indian/Mauritius",name:"Mauritius"},{value:"Indian/Mayotte",name:"Mayotte"},{value:"Indian/Reunion",name:"Reunion"}]},{group:"Atlantic",zones:[{value:"Atlantic/Azores",name:"Azores"},{value:"Atlantic/Bermuda",name:"Bermuda"},{value:"Atlantic/Canary",name:"Canary"},{value:"Atlantic/Cape_Verde",name:"Cape Verde"},{value:"Atlantic/Faeroe",name:"Faeroe"},{value:"Atlantic/Faroe",name:"Faroe"},{value:"Atlantic/Jan_Mayen",name:"Jan Mayen"},{value:"Atlantic/Madeira",name:"Madeira"},{value:"Atlantic/Reykjavik",name:"Reykjavik"},{value:"Atlantic/South_Georgia",name:"South Georgia"},{value:"Atlantic/Stanley",name:"Stanley"},{value:"Atlantic/St_Helena",name:"St Helena"}]},{group:"Pacific",zones:[{value:"Pacific/Apia",name:"Apia"},{value:"Pacific/Auckland",name:"Auckland"},{value:"Pacific/Chatham",name:"Chatham"},{value:"Pacific/Easter",name:"Easter"},{value:"Pacific/Efate",name:"Efate"},{value:"Pacific/Enderbury",name:"Enderbury"},{value:"Pacific/Fakaofo",name:"Fakaofo"},{value:"Pacific/Fiji",name:"Fiji"},{value:"Pacific/Funafuti",name:"Funafuti"},{value:"Pacific/Galapagos",name:"Galapagos"},{value:"Pacific/Gambier",name:"Gambier"},{value:"Pacific/Guadalcanal",name:"Guadalcanal"},{value:"Pacific/Guam",name:"Guam"},{value:"Pacific/Honolulu",name:"Honolulu"},{value:"Pacific/Johnston",name:"Johnston"},{value:"Pacific/Kiritimati",name:"Kiritimati"},{value:"Pacific/Kosrae",name:"Kosrae"},{value:"Pacific/Kwajalein",name:"Kwajalein"},{value:"Pacific/Majuro",name:"Majuro"},{value:"Pacific/Marquesas",name:"Marquesas"},{value:"Pacific/Midway",name:"Midway"},{value:"Pacific/Nauru",name:"Nauru"},{value:"Pacific/Niue",name:"Niue"},{value:"Pacific/Norfolk",name:"Norfolk"},{value:"Pacific/Noumea",name:"Noumea"},{value:"Pacific/Pago_Pago",name:"Pago Pago"},{value:"Pacific/Palau",name:"Palau"},{value:"Pacific/Pitcairn",name:"Pitcairn"},{value:"Pacific/Ponape",name:"Ponape"},{value:"Pacific/Port_Moresby",name:"Port Moresby"},{value:"Pacific/Rarotonga",name:"Rarotonga"},{value:"Pacific/Saipan",name:"Saipan"},{value:"Pacific/Samoa",name:"Samoa"},{value:"Pacific/Tahiti",name:"Tahiti"},{value:"Pacific/Tarawa",name:"Tarawa"},{value:"Pacific/Tongatapu",name:"Tongatapu"},{value:"Pacific/Truk",name:"Truk"},{value:"Pacific/Wake",name:"Wake"},{value:"Pacific/Wallis",name:"Wallis"},{value:"Pacific/Yap",name:"Yap"}]},{group:"Antarctica",zones:[{value:"Antarctica/Casey",name:"Casey"},{value:"Antarctica/Davis",name:"Davis"},{value:"Antarctica/DumontDUrville",name:"DumontDUrville"},{value:"Antarctica/Macquarie",name:"Macquarie"},{value:"Antarctica/Mawson",name:"Mawson"},{value:"Antarctica/McMurdo",name:"McMurdo"},{value:"Antarctica/Palmer",name:"Palmer"},{value:"Antarctica/Rothera",name:"Rothera"},{value:"Antarctica/South_Pole",name:"South Pole"},{value:"Antarctica/Syowa",name:"Syowa"},{value:"Antarctica/Vostok",name:"Vostok"}]},{group:"Arctic",zones:[{value:"Arctic/Longyearbyen",name:"Longyearbyen"}]},{group:"UTC",zones:[{value:"UTC",name:"UTC"}]},{group:"Manual Offsets",zones:[{value:"UTC-12",name:"UTC-12"},{value:"UTC-11",name:"UTC-11"},{value:"UTC-10",name:"UTC-10"},{value:"UTC-9",name:"UTC-9"},{value:"UTC-8",name:"UTC-8"},{value:"UTC-7",name:"UTC-7"},{value:"UTC-6",name:"UTC-6"},{value:"UTC-5",name:"UTC-5"},{value:"UTC-4",name:"UTC-4"},{value:"UTC-3",name:"UTC-3"},{value:"UTC-2",name:"UTC-2"},{value:"UTC-1",name:"UTC-1"},{value:"UTC+0",name:"UTC+0"},{value:"UTC+1",name:"UTC+1"},{value:"UTC+2",name:"UTC+2"},{value:"UTC+3",name:"UTC+3"},{value:"UTC+4",name:"UTC+4"},{value:"UTC+5",name:"UTC+5"},{value:"UTC+6",name:"UTC+6"},{value:"UTC+7",name:"UTC+7"},{value:"UTC+8",name:"UTC+8"},{value:"UTC+9",name:"UTC+9"},{value:"UTC+10",name:"UTC+10"},{value:"UTC+11",name:"UTC+11"},{value:"UTC+12",name:"UTC+12"},{value:"UTC+13",name:"UTC+13"},{value:"UTC+14",name:"UTC+14"}]}]}}}),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.motiondialer",{url:"/motiondialer",template:"
","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:16}}})}]),angular.module("xCallyShuttleApp").controller("MotionDialerProcessListCtrl",["$scope","$uibModal","$translate","xAlert","Modal","MotionDialerProcess","uiGridConstants","usSpinnerService",function(a,b,c,d,e,f,g,h){a.initView=function(){return a.gridOptions={paginationPageSizes:[10,25,50,75],paginationPageSize:10,enableFiltering:!0,enableSorting:!0,enableGridMenu:!0,flatEntityAccess:!0,showGridFooter:!0,fastWatch:!0,columnDefs:[{name:"id",width:60},{name:"name"},{name:"queue",enableSorting:!1},{name:"extension",enableSorting:!1},{name:"id_list",enableSorting:!1,cellTemplate:'
{{row.entity.id_list}}
',cellClass:"ui-grid-vcenter"},{name:"status",cellTemplate:"
{{ (row.entity.status === 'RUN') ? 'RUNNING' : 'STOPPED'}}
",cellClass:"ui-grid-vcenter",filter:{type:g.filter.SELECT,selectOptions:[{value:"RUN",label:"RUNNING"},{value:"STOP",label:"STOPPED"}]}},{name:"updatedtime",sort:{direction:g.DESC},enableFiltering:!1},{name:"action",cellTemplate:'
',enableSorting:!1,cellClass:"ui-grid-vcenter",enableFiltering:!1}]},f.list({page:1,size:6e5}).$promise.then(function(b){console.log(b),b.status>0?a.gridOptions.data=b.response.RMI.rows:d.show("Please, check your connection!","danger")})["catch"](function(a){d.error(a)})["finally"](function(){h.stop("spinner-grid")})},a.createProcessQueue=function(){var c=b.open({animation:!0,templateUrl:"app/motiondialer/process/list/list.create.queue.modal.html",controller:"MotionDialerProcessListCreateQueueCtrl"});c.result.then(function(b){a.gridOptions.data.push(b.response.RMI)})},a.createProcessSquare=function(){var c=b.open({animation:!0,templateUrl:"app/motiondialer/process/list/list.create.square.modal.html",controller:"MotionDialerProcessListCreateSquareCtrl"});c.result.then(function(b){a.gridOptions.data.push(b.response.RMI)})},a.deleteItem=e.confirm["delete"](function(b){return f["delete"]({id:b}).$promise.then(function(e){e.status>0?(_.remove(a.gridOptions.data,{id:b}),d.show(c.instant("MESSAGE_WELL_DONE"),"success")):d.show(e.message||"Please, check your connection!","danger")})["catch"](function(a){d.error(a)})})}]),angular.module("xCallyShuttleApp").controller("MotionDialerProcessListCreateQueueCtrl",["$scope","$translate","$uibModalInstance","MotionDialerProcess","MotionDialerList","Trunk","VoiceQueue","Route","xAlert",function(a,b,c,d,e,f,g,h,i){a.form={},a.item={fetch_sort:"ASC",timeout:3},a.initModal=function(){return g.get().$promise.then(function(b){return a.queues={},b&&(a.queues=b.rows),f.get().$promise}).then(function(b){return a.trunks={},b&&(a.trunks=b.rows),a.trunks.push({name:"fake"}),e.list({page:1,size:6e5}).$promise}).then(function(b){a.lists={},b.status>0?a.lists=b.response.RMI.rows:i.show("Please, check your connection!","danger")})["catch"](function(a){i.error(a)})},a.save=function(){console.log(a.item);var e="process_"+a.item.name+"_queue_"+a.item.queue.name+"_"+Math.round(1e5*Math.random()),f="Generated by Motion Dialer, Process Queue"+(a.item.description?", "+a.item.description:"");return h.save({appdata:"Internal Call",context:"from-sip",exten:e.replace(/\s/g,"_"),type:"internal",description:f,Applications:[{appdata:["CDR(type)=tigerdial"],app:"Set",interval:"*,*,*,*",type:"internal"},{appdata:["QUEUE_PRIO=99"],app:"Set",interval:"*,*,*,*",type:"internal"},{appdata:[a.item.queue.name,"","","",a.item.timeout],app:"Queue",interval:"*,*,*,*",type:"internal"}]}).$promise.then(function(b){return console.log(b),d.insert({name:a.item.name,id_list:a.item.list.id,queue:a.item.queue.name,device:a.item.device.name,context:"from-sip",extension:e.replace(/\s/g,"_"),description:a.item.description,auto_closed:!0,fetch_sort:a.item.fetch_sort}).$promise}).then(function(a){a.status>0?(i.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)):i.show(a.message||"Please, check your connection!","danger")})["catch"](function(a){i.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").controller("MotionDialerProcessListCreateSquareCtrl",["$scope","$translate","$uibModalInstance","MotionDialerProcess","MotionDialerList","SquareProject","Trunk","Route","xAlert",function(a,b,c,d,e,f,g,h,i){a.form={},a.item={fetch_sort:"ASC"},a.initModal=function(){return f.get().$promise.then(function(b){return a.projects={},b&&(a.projects=b.rows),g.get().$promise}).then(function(b){return a.trunks={},b&&(a.trunks=b.rows),a.trunks.push({name:"fake"}),e.list({page:1,size:6e5}).$promise}).then(function(b){a.lists={},b.status>0?a.lists=b.response.RMI.rows:i.show("Please, check your connection!","danger")})["catch"](function(a){i.error(a)})},a.save=function(){console.log(a.item);var e="process_"+a.item.name+"_square_"+a.item.project.name+"_"+Math.round(1e5*Math.random()),f="Generated by Motion Dialer, Process Square"+(a.item.description?", "+a.item.description:"");return h.save({appdata:"Internal Call",context:"from-sip",exten:e.replace(/\s/g,"_"),type:"internal",description:f,Applications:[{appdata:["CDR(type)=tigerdial"],app:"Set",interval:"*,*,*,*",type:"internal"},{appdata:["agi://127.0.0.1/square",a.item.project.name],app:"AGI",interval:"*,*,*,*",type:"internal"}]}).$promise.then(function(b){return console.log(b),d.insert({name:a.item.name,id_list:a.item.list.id,queue:"none",device:a.item.device.name,context:"from-sip",extension:e.replace(/\s/g,"_"),description:a.item.description,auto_closed:!0,channel_limit:15,fetch_sort:a.item.fetch_sort}).$promise}).then(function(a){a.status>0?(i.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)):i.show(a.message||"Please, check your connection!","danger")})["catch"](function(a){i.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.motiondialer.processes.list",{url:"/list",templateUrl:"app/motiondialer/process/list/list.html",controller:"MotionDialerProcessListCtrl",authenticate:!0})}]),angular.module("xCallyShuttleApp").factory("MotionDialerProcess",["$resource",function(a){return a("/api/rest/process/:controller",null,{list:{method:"POST",params:{controller:"list"}},insert:{method:"POST",params:{controller:"insert"}},"delete":{method:"POST",params:{controller:"delete"}},find:{method:"POST",params:{controller:"find"}},update:{method:"POST",params:{controller:"update"}}})}]),angular.module("xCallyShuttleApp").factory("MotionDialerSpooler",["$resource",function(a){return a("/api/rest/spooler/:controller/:retrieve/:peer",null,{list:{method:"POST",params:{controller:"list"}},"delete":{method:"POST",params:{controller:"delete"}},find:{method:"POST",params:{controller:"find"}},summary:{method:"POST",params:{controller:"summary"}},close:{method:"POST",params:{controller:"retrieve",retrieve:"close"}},open:{method:"POST",params:{controller:"retrieve",retrieve:"open"}},blacklist:{method:"POST",params:{controller:"retrieve",retrieve:"blacklist"}},planning:{method:"POST",params:{controller:"retrieve",retrieve:"planning"}},planningpeer:{method:"POST",params:{controller:"retrieve",retrieve:"planning",peer:"peer"}}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.motiondialer.processes",{url:"/processes",template:"
","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("MotionDialerProcessViewCtrl",["$scope","$translate","$stateParams","$uibModal","xAlert","uiGridConstants","usSpinnerService","MotionDialerProcess","MotionDialerSpooler","Modal","VoiceQueue",function(a,b,c,d,e,f,g,h,i,j,k){a.process={},a.techs=["SIP","IAX","LOCAL","KHOMP"],a.dialFormats=["tech/device/number","tech/number@device"],a.checkDuplicates=["ALWAYS","IFOPEN","NO"],a.codecs=["g729","ilbc","gsm","ulaw","alaw"],a.getProcess=function(){return h.find({id:parseInt(c.id)}).$promise.then(function(b){console.log(b),b.status>0?(b.response.RMI.codecs=b.response.RMI.codecs.split(","),a.process=b.response.RMI):e.show(b.message||"Please, check your connection!","danger")})["catch"](function(a){e.error(a)})},a.getSummary=function(){return i.summary({id_process:parseInt(c.id)}).$promise.then(function(b){if(b.status>0){a.summary=b.response.RMI.totals,a.total=0;for(var c=0;c0?(c.response.RMI.codecs=c.response.RMI.codecs.split(","),a.process=c.response.RMI,e.show(b.instant("MESSAGE_WELL_DONE"),"success")):c.response.RMI.errors.forEach(function(a){a?e.show(a.field+": "+a.error,"danger"):e.show("Please, check your connection!","danger")})})["catch"](function(a){e.error(a)})},a.getSpooler=function(){return a.gridOptions={paginationPageSizes:[10,25,50,75],paginationPageSize:10,enableFiltering:!0,enableSorting:!0,enableGridMenu:!0,flatEntityAccess:!0,showGridFooter:!0,fastWatch:!0,headerCellFilter:"translate",columnDefs:[{name:"name"},{name:"phones",cellTemplate:"
{{row.entity.phones.join(',')}}
",cellClass:"ui-grid-vcenter"},{name:"retrieve",filter:{type:f.filter.SELECT,selectOptions:[{value:"PLANNED_PEER",label:"PLANNED PEER"},{value:"PLANNED",label:"PLANNED"},{value:"BLACK_LIST",label:"BLACKLIST"},{value:"OPEN",label:"OPEN"},{value:"CLOSED",label:"CLOSED"},{value:"MAX_ATTEMPTS",label:"MAX ATTEMPTS"},{value:"COUNTER_BLOCK",label:"COUNTER BLOCK"},{value:"PLANNED_REQUEST",label:"PLANNED REQUEST"},{value:"DELETE",label:"DELETE"}]}},{name:"counter",enableFiltering:!1},{name:"planningtime",cellTemplate:"
{{row.entity.planningtime | date:'yyyy-MM-dd HH:mm'}}
",cellClass:"ui-grid-vcenter",enableFiltering:!1},{name:"action",cellTemplate:'
',enableSorting:!1,cellClass:"ui-grid-vcenter",enableFiltering:!1}]},i.list({id_process:parseInt(c.id),page:1,size:6e5}).$promise.then(function(b){b.status>0?a.gridOptions.data=b.response.RMI.rows:e.show(b.message||"Please, check your connection!","danger")})["catch"](function(a){e.error(a)})["finally"](function(){g.stop("spinner-grid")})},a.deleteSpooler=j.confirm["delete"](function(c){return i["delete"]({id:c}).$promise.then(function(d){d.status>0?(_.remove(a.gridOptions.data,{id:c}),e.show(b.instant("MESSAGE_WELL_DONE"),"success")):e.show(d.message||"Please, check your connection!","danger")})["catch"](function(a){e.error(a)})}),a.historySpooler=function(b){var c=d.open({animation:!0,templateUrl:"app/motiondialer/process/view/view.spooler.history.modal.html",controller:"MotionDialerViewSpoolerHistoryCtrl",resolve:{historySpooler:function(){return b}}});c.result.then(function(b){a.gridOptions.data.push(b.response.RMI)})},a.editSpooler=function(a){var b=d.open({animation:!0,templateUrl:"app/motiondialer/process/view/view.spooler.edit.modal.html",controller:"MotionDialerViewSpoolerEditCtrl",resolve:{entitySpooler:function(){return a}}});b.result.then(function(){})},a.initSettings=function(){return a.queues=null,k.get().$promise.then(function(b){b&&(a.queues=b.rows,a.process.queue&&"none"!==a.process.queue&&(a.queue=_.find(b.rows,{name:a.process.queue})))})["catch"](function(a){e.error(a)})},a.createInterval=function(b){var c=d.open({animation:!0,templateUrl:"app/motiondialer/process/view/view.create.interval.modal.html",controller:"MotionDialerViewCreateIntervalCtrl",resolve:{objectProcess:function(){return a.process},intervalType:function(){return b},intervalValue:function(){return b?"8:00-20:00|MON-FRI|*|*":"00:01-07:59|SAT-SUN|*|*"}}});c.result.then(function(b){a.process=b})},a.editInterval=function(b,c){var e=d.open({animation:!0,templateUrl:"app/motiondialer/process/view/view.create.interval.modal.html",controller:"MotionDialerViewCreateIntervalCtrl",resolve:{objectProcess:function(){return a.process},intervalType:function(){return b},intervalValue:function(){return c}}});e.result.then(function(b){a.process=b})},a.deleteInterval=j.confirm["delete"](function(c,d){var f={id:a.process.id};return d?(f.intervals=[],f.intervals=f.intervals.concat(a.process.intervals),f.intervals.splice(c,1)):(f.not_intervals=[],f.not_intervals=f.not_intervals.concat(a.process.not_intervals),f.not_intervals.splice(c,1)),h.update(f).$promise.then(function(c){c.status>0?(c.response.RMI.codecs=c.response.RMI.codecs.split(","),a.process=c.response.RMI,e.show(b.instant("MESSAGE_WELL_DONE"),"success")):c.response.RMI.errors.forEach(function(a){a?e.show(a.field+": "+a.error,"danger"):e.show("Please, check your connection!","danger")})})["catch"](function(a){e.error(a)})}),a.runOrStop=function(){var b=d.open({animation:!0,templateUrl:"app/motiondialer/process/view/view.run.process.modal.html",controller:"MotionDialerViewRunProcessCtrl",resolve:{statusProcess:function(){return a.process.status}}});b.result.then(function(b){a.process.status=b.status})}}]),angular.module("xCallyShuttleApp").controller("MotionDialerViewCreateIntervalCtrl",["$scope","$translate","$uibModalInstance","$stateParams","MotionDialerProcess","xAlert","objectProcess","intervalType","intervalValue","interval",function(a,b,c,d,e,f,g,h,i,j){function k(a){var b,c=a.split("|"),d={};return c.forEach(function(a,c){switch(c){case 0:"*"!==a?(b=a.split("-"),d.t_from=moment(b[0],"HH:mm"),d.t_to=moment(b[1],"HH:mm"),d.alwaysTime=!1):(d.t_from=moment(new Date),d.t_to=moment(new Date),d.alwaysTime=!0);break;case 1:"*"!==a?(b=a.split("-"),d.wd_from=b[0].toLowerCase(),d.wd_to=b[1]?b[1].toLowerCase():"always"):(d.wd_from="always",d.wd_to="always");break;case 2:"*"!==a?(b=a.split("-"),d.md_from=b[0],d.md_to=b[1]?b[1]:"always"):(d.md_from="always",d.md_to="always");break;case 3:"*"!==a?(b=a.split("-"),d.m_from=b[0],d.m_to=b[1]?b[1]:"always"):(d.m_from="always",d.m_to="always")}}),d}function l(a){var b,c,d,e;return b=a.t_from&&a.t_to&&!a.alwaysTime?moment(a.t_from).format("HH:mm")+"-"+moment(a.t_to).format("HH:mm"):"*",a.wd_from&&"always"!==a.wd_from?(c=a.wd_from.toUpperCase(),a.wd_to&&"always"!==a.wd_to&&(c+="-"+a.wd_to.toUpperCase())):c="*",a.md_from&&"always"!==a.md_from?(d=a.md_from,a.md_to&&"always"!==a.md_to&&(d+="-"+a.md_to)):d="*",a.m_from&&"always"!==a.m_from?(e=a.m_from,a.m_to&&"always"!==a.m_to&&(e+="-"+a.m_to)):e="*",b+"|"+c+"|"+d+"|"+e}a.form={},a.$interval=j.interval,a.splittedInterval=k(i),a.save=function(){var d=l(a.splittedInterval);console.log(d);var i={id:g.id};return h?(i.intervals=[],i.intervals=i.intervals.concat(g.intervals),i.intervals.push(d)):(i.not_intervals=[],i.not_intervals=i.not_intervals.concat(g.not_intervals),i.not_intervals.push(d)),console.log(i),e.update(i).$promise.then(function(a){a.status>0?(a.response.RMI.codecs=a.response.RMI.codecs.split(","),f.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a.response.RMI)):a.response.RMI.errors.forEach(function(a){a?f.show(a.field+": "+a.error,"danger"):f.show("Please, check your connection!","danger")})})["catch"](function(a){f.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.motiondialer.processes.view",{url:"/view/:id",templateUrl:"app/motiondialer/process/view/view.html",controller:"MotionDialerProcessViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.motiondialer.processes.view.overview",{url:"/overview",templateUrl:"app/motiondialer/process/view/view.overview.html"}).state("main.motiondialer.processes.view.settings",{url:"/settings",templateUrl:"app/motiondialer/process/view/view.settings.html"}).state("main.motiondialer.processes.view.intervals",{url:"/intervals",templateUrl:"app/motiondialer/process/view/view.intervals.html"}).state("main.motiondialer.processes.view.spooler",{url:"/spooler",templateUrl:"app/motiondialer/process/view/view.spooler.html"})}]),angular.module("xCallyShuttleApp").controller("MotionDialerViewRunProcessCtrl",["$scope","$stateParams","$uibModalInstance","$translate","statusProcess","MotionDialerProcess","xAlert",function(a,b,c,d,e,f,g){a.status="RUN"===e?"STOP":"RUN",a.yes=function(){f.update({id:parseInt(b.id),status:a.status}).$promise.then(function(a){a.status>0?(g.show(d.instant("MESSAGE_WELL_DONE"),"success"),c.close(a.response.RMI)):g.show(a.message||"Please, check your connection!","danger")})["catch"](function(a){g.error(a)})},a.no=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").controller("MotionDialerViewSpoolerEditCtrl",["$scope","$translate","$uibModalInstance","$stateParams","MotionDialerSpooler","xAlert","entitySpooler","Agent",function(a,b,c,d,e,f,g,h){a.moment=moment,a.initModal=function(){return h.get().$promise.then(function(b){a.agents=[],b&&b.rows.forEach(function(b){a.agents.push("SIP/"+b.name)})})["catch"](function(a){f.error(a)})},a.entitySpooler=g,a.save=function(){var d;switch(a.entitySpooler.retrieve){case"CLOSED":d=e.close({id:parseInt(a.entitySpooler.id)});break;case"OPEN":d=e.open({id:parseInt(a.entitySpooler.id)});break;case"BLACK_LIST":d=e.blacklist({id:parseInt(a.entitySpooler.id)});break;case"PLANNED":d=e.planning({id:parseInt(a.entitySpooler.id),date:moment(a.entitySpooler.planningtime).format("YYYY-MM-DD HH:mm")});break;case"PLANNED_PEER":d=e.planningpeer({id:parseInt(a.entitySpooler.id),date:moment(a.entitySpooler.planningtime).format("YYYY-MM-DD HH:mm"),peer:a.entitySpooler.planningpeer})}d?d.$promise.then(function(a){console.log(a),a.status>0?(f.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close()):a.response.RMI.errors.forEach(function(a){a?f.show(a.field+": "+a.error,"danger"):f.show("Please, check your connection!","danger")})})["catch"](function(a){f.error(a)}):f.show("RETRIEVE NOT FOUND","danger")},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").controller("MotionDialerViewSpoolerHistoryCtrl",["$scope","$translate","$uibModalInstance","$stateParams","MotionDialerSpooler","xAlert","historySpooler",function(a,b,c,d,e,f,g){a.historySpooler=g,a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").controller("ResetCtrl",["$scope","Auth","$location","$window","$rootScope","Setting","xAlert","$stateParams","$state",function(a,b,c,d,e,f,g,h,i){a.userReset={},a.getInfo=function(){return f.get({controller:"info"}).$promise.then(function(b){a.info=b})["catch"](function(a){console.error(a)})},e.bodyLayout="login",a.$on("$viewContentLoaded",function(){Metronic.init(),Layout.init()}),a.reset=function(){b.reset({token:h.token,password:a.userReset.password}).then(function(){i.go("login",{reset:!0})})["catch"](function(a){g.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("reset",{url:"/reset/:token",templateUrl:"app/reset/reset.html",controller:"ResetCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/css/login.css"]}])}]}})}]),angular.module("xCallyShuttleApp").controller("SalesforceListCtrl",["$scope","SalesforceAccount","gridOptions","xAlert","$translate",function(a,b,c,d,e){a.initView=function(){var d={exporterCsvFilename:"salesforce_account.csv",columnDefs:[{name:"name",displayName:"APPLICATION_NAME"},{name:"username"},{name:"remoteUri",displayName:"APPLICATION_URI"},{name:"action",buttons:[{"class":"blue-hoki",href:"/salesforce/view/{{row.entity.id}}/account",name:"profile"},{"class":"green-jungle",name:"check",onClick:"grid.appScope.checkAccount(row.entity.id)"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(b,d,a)},a.checkAccount=function(a){return b.check({id:a}).$promise.then(function(){d.show(e.instant("MESSAGE_ACCOUNT_VERIFIED"),"success")})["catch"](function(){d.show(e.instant("MESSAGE_ACCOUNT_INVALID"),"danger")})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.salesforce.list",{url:"/list",templateUrl:"app/salesforce/list/list.html",controller:"SalesforceListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{name:"smart-table",insertBefore:"#ng_load_plugins_before",files:["assets/css/smart_table.css"]}])}]}})}]),angular.module("xCallyShuttleApp").factory("SalesforceAccount",["$resource",function(a){return a("/api/salesforce/accounts/:id/:controller",{id:"@id"},{update:{method:"PUT"},fields:{params:{controller:"fields"},isArray:!0},check:{params:{controller:"check"}}})}]).factory("SalesforceConfiguration",["$resource",function(a){return a("/api/salesforce/accounts/:accountId/configurations/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]).factory("SalesforceField",["$resource",function(a){return a("/api/salesforce/accounts/:accountId/configurations/:configurationId/fields/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.salesforce",{url:"/salesforce",template:"
","abstract":!0,data:{permissions:{only:["admin"],redirectTo:"main.dashboard.voice"}}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.salesforce.view.configurations",{url:"/configurations",template:"
","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("SalesforceViewConfigurationListCtrl",["$scope","$stateParams","$translate","gridOptions","SalesforceConfiguration","$uibModal",function(a,b,c,d,e,f){a.initView=function(){var c={exporterCsvFilename:"salesforce_configurations.csv",columnDefs:[{name:"name"},{name:"description"},{name:"action",width:125,buttons:[{"class":"blue-hoki",href:"/salesforce/view/{{row.entity.AccountId}}/configurations/view/{{row.entity.id}}",name:"profile"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=d.gridOptions(e,c,a,{accountId:b.id})},a.createItem=function(){var b=f.open({animation:!0,templateUrl:"app/salesforce/view/configuration/list/create.modal.html",controller:"SalesforceCreateConfigurationCtrl"});b.result.then(function(){a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("SalesforceCreateConfigurationCtrl",["$scope","$translate","$uibModalInstance","SalesforceConfiguration","xAlert","$stateParams","channel",function(a,b,c,d,e,f,g){a.form={},a.item={},a.channels=g,a.item.channel="voice",a.item.type="Queue",a.save=function(){return d.save({accountId:f.id},a.item).$promise.then(function(a){e.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)})["catch"](function(a){e.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.salesforce.view.configurations.list",{url:"/list",templateUrl:"app/salesforce/view/configuration/list/list.html",controller:"SalesforceViewConfigurationListCtrl"})}]),angular.module("xCallyShuttleApp").controller("SalesforceViewConfigurationViewCtrl",["$scope","$filter","$stateParams","$translate","socket","variable","xAlert","SalesforceAccount","SalesforceConfiguration","SalesforceField","Variable",function(a,b,c,d,e,f,g,h,i,j,k){a.$on("$destroy",function(){e.unsyncUpdates("salesforce_field")}),a.config={autoHideScrollbar:!1, theme:"dark",advanced:{updateOnContentResize:!0},setHeight:300,scrollInertia:0},a.fieldType=[{type:"string",title:"String"},{type:"variable",title:"Variable"},{type:"customVariable",title:"Custom Variable"}],a.descFieldType=[{type:"string",title:"String"},{type:"keyValue",title:"Key Value"}],a.groupVariableByGroup=function(a){switch(a.group){case"voice_queue":return"Voice: Queue";default:return"Other"}},a.initView=function(){a.configurationName="",a.subjectConfig=[],a.descriptionConfig=[],a.fieldConfig=[],a.variables=f},a.getConfiguration=function(){return i.get({accountId:c.id,id:c.configurationId}).$promise.then(function(b){a.configurationName=b.name,a.subjectConfig=b.Subject,a.descriptionConfig=b.Description,a.fieldConfig=b.Field,e.socket.on("salesforce_field:remove",function(b){_.remove(a.subjectConfig,{id:b.id}),_.remove(a.descriptionConfig,{id:b.id}),_.remove(a.fieldConfig,{id:b.id})})})["catch"](function(a){g.error(a)})},a.getCustomVariables=function(){return k.get().$promise.then(function(b){a.customVariables=b.rows})["catch"](function(a){g.error(a)})},a.getFields=function(){return h.fields({id:c.id}).$promise.then(function(c){a.accountFields=_.sortByOrder(b("salesforce")(c),"name","asc"),console.log(a.accountFields)})["catch"](function(a){g.error(a)})},a.addItem=function(b){var d={};switch(b){case"subject":case"description":d={type:"string",content:""};break;case"field":d={content:""}}return i.save({accountId:c.id,id:c.configurationId,controller:b},d).$promise.then(function(c){switch(b){case"subject":a.subjectConfig.push(c);break;case"description":a.descriptionConfig.push(c);break;case"field":a.fieldConfig.push(c)}})["catch"](function(a){g.error(a)})},a.changeType=function(b){"variable"===b.type?(b.content="",b.variableName=""):"string"===b.type?(b.VariableId=null,b.variableName=""):"customVariable"===b.type&&(b.VariableId=null,b.content=""),a.updateField(b)},a.updateField=function(a){return j.update({accountId:c.id,configurationId:c.configurationId,id:a.id},a).$promise.then(function(){})["catch"](function(a){g.error(a)})},a.removeItem=function(a){return j["delete"]({accountId:c.id,configurationId:c.configurationId,id:a.id}).$promise.then(function(){g.show(d.instant("MESSAGE_WELL_DONE")+"!","success")})["catch"](function(a){g.error(a)})},a.changeDescType=function(b){"keyValue"===b.type?(b.content="","string"===b.keyType?(b.VariableId=null,b.variableName=""):"variable"===b.keyType?(b.keyContent="",b.VariableId=null):"customVariable"===b.keyType&&(b.keyContent="",b.variableName="")):"string"===b.type&&(b.VariableId=null,b.variableName="",b.key="",b.keyContent=""),a.updateField(b)},a.getSystemFieldOptions=function(b){if(b){var c=_.find(a.accountFields,"name",b);if(c)switch(c.type){case"picklist":return c.picklistValues;default:return}}}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.salesforce.view.configurations.view",{url:"/view/:configurationId",templateUrl:"app/salesforce/view/configuration/view/view.html",controller:"SalesforceViewConfigurationViewCtrl"})}]),angular.module("xCallyShuttleApp").controller("SalesforceViewCtrl",["$scope","$http","$stateParams","$translate","$location","WizardHandler","socket","xAlert","Modal","$filter","SalesforceAccount",function(a,b,c,d,e,f,g,h,i,j,k){a.initView=function(){return k.get({id:c.id}).$promise.then(function(b){a.account=b})["catch"](function(a){h.error(a)})},a.updateItem=function(){return k.update({id:c.id},a.account).$promise.then(function(){h.show(d.instant("MESSAGE_WELL_DONE")+".","success")})["catch"](function(a){h.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.salesforce.view",{url:"/view/:id",templateUrl:"app/salesforce/view/view.html",controller:"SalesforceViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.salesforce.view.account",{url:"/account",templateUrl:"app/salesforce/view/view.account.html"})}]),angular.module("xCallyShuttleApp").controller("SalesforceWizardCtrl",["$scope","$http","$location","$translate","xAlert","WizardHandler",function(a,b,c,d,e,f){a.translate=d,a.initWizard=function(){a.$translate=d,a.forms={},a.item={},a.item.serverUrl=c.protocol()+"://"+location.host},a.next=function(){f.wizard().next()},a.exitValidation=function(a){return a},a.createItem=function(){console.log(a.item),b.post("api/salesforce/accounts",a.item).success(function(){e.show(d.instant("MESSAGE_WELL_DONE")+".","success"),c.path("/salesforce/list")}).error(function(a){e.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.salesforce.wizard",{url:"/wizard",templateUrl:"app/salesforce/wizard/wizard.html",controller:"SalesforceWizardCtrl"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.customization",{url:"/customization",template:"
","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("CustomizationGeneralViewCtrl",["$scope","gridOptions","$uibModal","FileUploader","$cookieStore","xAlert","$translate","Setting","$rootScope",function(a,b,c,d,e,f,g,h,i){a.radioSwitch={isActive:!!i.license.custom,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"};var j=a.uploader=new d({url:"api/settings/logo/main",queueLimit:1,withCredentials:!0,headers:{Authorization:"Bearer "+e.get("token")}});j.filters.push({name:"imageFilter",fn:function(a){var b="|"+a.type.slice(a.type.lastIndexOf("/")+1)+"|";return-1!=="|jpg|png|jpeg|".indexOf(b)}}),j.onSuccessItem=function(a,b){i.settings.logo=b.logo,f.show(g.instant("MESSAGE_WELL_DONE"),"success")},j.onErrorItem=function(){f.show(g.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")},j.onCompleteAll=function(){j.clearQueue()};var k=a.uploader2=new d({url:"api/settings/logo/login",queueLimit:1,withCredentials:!0,headers:{Authorization:"Bearer "+e.get("token")}});k.filters.push({name:"imageFilter",fn:function(a){var b="|"+a.type.slice(a.type.lastIndexOf("/")+1)+"|";return-1!=="|jpg|png|jpeg|".indexOf(b)}}),k.onSuccessItem=function(a,b){f.show(g.instant("MESSAGE_WELL_DONE"),"success")},k.onErrorItem=function(){f.show(g.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")},k.onCompleteAll=function(){k.clearQueue()},a.initView=function(){return h.get({id:1}).$promise.then(function(b){a.settings={defaultLogo:b.defaultLogo,defaultLoginLogo:b.defaultLoginLogo,footerWhiteLabel:b.footerWhiteLabel,defaultFooterWhiteLabel:b.defaultFooterWhiteLabel}})["catch"](function(a){f.error(a)})},a.update=function(){return h.update({id:1},a.settings).$promise.then(function(b){_.merge(i.settings,a.settings),f.show(g.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){f.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.customization.view.general",{url:"/general",templateUrl:"app/setting/customization/view/general/general.html",controller:"CustomizationGeneralViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/scripts/jquery.sparkline.min.js","assets/plugins/bootstrap-fileinput/bootstrap-fileinput.js","assets/scripts/profile.js"]})}]}})}]),angular.module("xCallyShuttleApp").controller("CustomizationViewCtrl",["$scope",function(a){}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.customization.view",{url:"/view",templateUrl:"app/setting/customization/view/view.html",controller:"CustomizationViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.general",{url:"/general",template:"
","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("GeneralMainViewCtrl",["$scope","xAlert","$translate","Setting",function(a,b,c,d){a.initView=function(){return d.get({id:1}).$promise.then(function(b){a.settings={agi_port:b.agi_port,min_internal:b.min_internal,min_mailbox:b.min_mailbox,securePassword:b.securePassword}})["catch"](function(a){b.error(a)})},a.update=function(){return d.update({id:1},a.settings).$promise.then(function(a){b.show(c.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){b.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.general.view.main",{url:"/main",templateUrl:"app/setting/general/view/main/main.html",controller:"GeneralMainViewCtrl"})}]),angular.module("xCallyShuttleApp").controller("GeneralViewCtrl",["$scope",function(a){}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.general.view",{url:"/view",templateUrl:"app/setting/general/view/view.html",controller:"GeneralViewCtrl"})}]),angular.module("xCallyShuttleApp").factory("License",["$resource",function(a){return a("/api/licenses/:id/:controller",{id:"@id"},{request:{method:"POST",params:{id:"request"}}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.license",{url:"/license",template:"
","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("LicenseUpdateCtrl",["$scope","$translate","$uibModalInstance","xAlert","Setting",function(a,b,c,d,e){a.form={},a.item={},a.getLicense=function(){return e.get({id:1}).$promise.then(function(b){a.item.license=b.license})["catch"](function(a){d.error(a)})},a.update=function(){return e.update({id:1},a.item).$promise.then(function(a){d.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)})["catch"](function(a){d.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").controller("LicenseViewCtrl",["$scope","$rootScope","$translate","License","xAlert","$window","$uibModal",function(a,b,c,d,e,f,g){a.radioSwitch={isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.initView=function(){return d.get(function(b){a.item=b.license})},a.submitRequest=function(){return d.request(a.item,function(){e.show(c.instant("MESSAGE_WELL_DONE"),"success")},function(a){switch(a.status){case 304:e.show(a.statusText,"info");break;default:e.error(a)}})},a.updateLicense=function(){var a=g.open({animation:!0,templateUrl:"app/setting/license/view/update.modal.html",controller:"LicenseUpdateCtrl"});a.result.then(function(){f.location.reload()})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.license.view",{url:"/view",templateUrl:"app/setting/license/view/view.html",controller:"LicenseViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/css/pricing-tables.css"]}])}]}})}]),angular.module("xCallyShuttleApp").factory("Externip",["$resource",function(a){return a("/api/network/externips/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("Localnet",["$resource",function(a){return a("/api/network/localnets/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.network",{url:"/network",template:"
","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("ExternipCtrl",["$scope","$uibModal","gridOptions","Externip",function(a,b,c,d){a.initView=function(){var b={exporterCsvFilename:"network_externip.csv",columnDefs:[{name:"value"},{name:"action",buttons:[{"class":"blue-hoki",onClick:"grid.appScope.createItem(row.entity)",name:"profile"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(d,b,a)},a.createItem=function(c){var d=b.open({animation:!0,templateUrl:"app/setting/network/view/externip/externip.create.modal.html",controller:"ExternipCreateCtrl",resolve:{item:c}});d.result.then(function(){a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("ExternipCreateCtrl",["$scope","$translate","$uibModalInstance","$stateParams","Externip","xAlert","item",function(a,b,c,d,e,f,g){a.initModal=function(){a.form={},a.item=g||{},a.title=g?b.instant("APPLICATION_EDIT_EXTERNIP"):b.instant("APPLICATION_NEW_EXTERNIP")},a.save=function(){return g?e.update({id:a.item.id},a.item).$promise.then(function(a){f.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)})["catch"](function(a){f.error(a)}):e.save({},a.item).$promise.then(function(a){f.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)})["catch"](function(a){f.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.network.view.externip",{url:"/externip",templateUrl:"app/setting/network/view/externip/externip.html",controller:"ExternipCtrl"})}]),angular.module("xCallyShuttleApp").controller("LocalnetCtrl",["$scope","gridOptions","Localnet","$uibModal",function(a,b,c,d){a.initView=function(){var d={exporterCsvFilename:"network_localnet.csv",columnDefs:[{name:"value"},{name:"action",buttons:[{"class":"blue-hoki",onClick:"grid.appScope.createItem(row.entity)",name:"profile"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=b.gridOptions(c,d,a)},a.createItem=function(b){var c=d.open({animation:!0,templateUrl:"app/setting/network/view/localnet/localnet.create.modal.html",controller:"LocalnetCreateCtrl",resolve:{item:b}});c.result.then(function(){a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("LocalnetCreateCtrl",["$scope","$translate","$uibModalInstance","$stateParams","Localnet","xAlert","item",function(a,b,c,d,e,f,g){a.initModal=function(){if(a.form={},a.item=g||{},a.title=g?b.instant("APPLICATION_EDIT_LOCALNET"):b.instant("APPLICATION_NEW_LOCALNET"),g&&g.value){var c=a.item.value.split("/");c.length>1&&(a.item.address=c[0],a.item.mask=c[1])}},a.save=function(){var d=a.item.address+"/"+a.item.mask;return g?e.update({id:a.item.id},{value:d}).$promise.then(function(a){f.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)})["catch"](function(a){f.error(a)}):e.save({},{value:d}).$promise.then(function(a){f.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)})["catch"](function(a){f.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.network.view.localnet",{url:"/localnet",templateUrl:"app/setting/network/view/localnet/localnet.html",controller:"LocalnetCtrl"})}]),angular.module("xCallyShuttleApp").controller("NetworkViewCtrl",function(){}),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.network.view",{url:"/view",templateUrl:"app/setting/network/view/view.html",controller:"NetworkViewCtrl"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting",{url:"/setting",template:"
","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:18}}})}]),angular.module("xCallyShuttleApp").factory("Setting",["$resource",function(a){return a("/api/settings/:id/:controller/:param",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("Smtp",["$resource",function(a){return a("/api/mail/servers/out/:id/:controller/:controller2",{id:"@id"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.smtp",{url:"/smtp",template:"
","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("SmtpViewCtrl",["$scope","$stateParams","$translate","socket","MailServerOut","Setting","MailAccount","xAlert",function(a,b,c,d,e,f,g,h){a.initView=function(){return a.smtpDisabled=!1,a.isActive=!0,a.size="small",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.CONST_TIMEOUT=3e4,a.item={account:{service:!0,MailServerOut:{ssl:!1}}},f.get({id:"smtp"}).$promise.then(function(b){a.item.account=b,d.socket.on("mail_server_out:state",function(b){Number(b.id)===a.item.account.MailServerOut.id&&(a.item.account.MailServerOut.state=b.state,a.item.account.MailServerOut.source=JSON.parse(b.source))})})["catch"](function(b){switch(console.log(b),b.status){case 404:a.item.account.name=null,a.item.account.address=null,a.item.account.MailServerOut={ssl:!1},h.show("Service SMTP server not configured.","info");break;default:h.error(b)}})},a.updateItem=function(){return a.item.account.id?(delete a.item.account.MailServerOut.state,delete a.item.account.MailServerOut.source,f.update({id:"smtp",controller:a.item.account.id},a.item.account).$promise.then(function(){h.show(c.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){h.error(a)})):f.save({id:"smtp"},{description:"Custom Account",name:a.item.account.name,address:a.item.account.address,service:a.item.account.service,custom:!0,MailServerOut:a.item.account.MailServerOut}).$promise.then(function(){h.show(c.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){h.error(a)})},a.test=function(){return e.get({id:a.item.account.MailServerOut.id,controller:"test"}).$promise["catch"](function(a){console.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.smtp.view",{url:"/view",templateUrl:"app/setting/smtp/view/view.html",controller:"SmtpViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.system",{url:"/system",template:"
","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("SystemViewConsoleCtrl",["$scope","Setting","xAlert","usSpinnerService","$timeout","$translate",function(a,b,c,d,e,f){function g(b){var c=_.findIndex(a.commandHistory.commands,function(a){return a===b});-1!==c&&a.commandHistory.commands.splice(c,1),a.commandHistory.commands.unshift(b)}a.output=""+f.instant("APPLICATION_CONSOLE_WELCOME")+"
",a.item={command:""},a.commandHistory={commands:[],index:-1},a.busy=!1,a.cmdFocus=function(){e(function(){angular.element("#command").trigger("focus")})},a.sendCmd=function(){return a.commandHistory.index=-1,a.tmp=a.item.command,a.item.command="",a.output+="motion*CLI> "+a.tmp+"
",a.tmp?(g(a.tmp.trim()),a.busy=!0,d.spin("console-spinner"),b.save({controller:"asterisk"},{command:a.tmp}).$promise.then(function(b){a.output+=b.content.replace(/(?:\r\n|\r|\n)/g,"
").replace("Response: Follows
Privilege: Command
","").replace(/ActionID: .[0-9]*
/,"").replace(/ActionID: .[0-9]*/,"")+"
",d.stop("console-spinner"),a.busy=!1,a.cmdFocus()})["catch"](function(b){d.stop("console-spinner"),a.output+="command error:"+b.data.message+"
",a.busy=!1,a.cmdFocus()})):void 0},a.keyUp=function(b){switch(b.keyCode){case 40:a.commandHistory.commands[a.commandHistory.index-1]?a.item.command=a.commandHistory.commands[--a.commandHistory.index]:(a.item.command="",a.commandHistory.index=-1);break;case 38:a.commandHistory.commands[a.commandHistory.index+1]&&(a.item.command=a.commandHistory.commands[++a.commandHistory.index]);break;case 37:break;case 39:break;default:a.commandHistory.index=-1}},e(function(){angular.element("#command").trigger("focus"),d.stop("console-spinner")})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.system.view.console",{url:"/console",templateUrl:"app/setting/system/view/console/console.html",controller:"SystemViewConsoleCtrl"})}]),angular.module("xCallyShuttleApp").controller("SystemViewGeneralCtrl",["$scope","$stateParams","$translate","socket","Setting","xAlert","usSpinnerService",function(a,b,c,d,e,f,g){function h(b){a.system.memory={labels:_.keys(b.memory.details),values:_.values(_.map(b.memory.details,function(a){return Math.round(a/1024)})),Total:Math.round(b.memory.Total/1024)},g.stop("memory-spinner"),a.system.disks=[],_.forEach(b.disks,function(b){a.system.disks.push({mount:b.mount,size:Number((b.size/1048576).toFixed(2)),values:_.values(_.map(b.details,function(a){return Number((a/1048576).toFixed(2))})),labels:_.keys(b.details)})}),a.system.mount=a.system.disks[0],g.stop("disk-spinner"),a.system.cpu={motion:Math.round(b.cpu.motion),cores:[]},_.forEach(b.cpu.cores,function(b){delete b.nice,delete b.irq,a.system.cpu.cores.push({labels:_.keys(b),values:_.values(b),colours:["#803690","#DCDCDC","#00ADF9"]})}),g.stop("cpu-spinner")}a.system={mount:void 0},a.initView=function(){return g.spin("memory-spinner"),g.spin("disk-spinner"),g.spin("cpu-spinner"),e.get({controller:"system"}).$promise.then(function(a){h(a)})["catch"](function(a){f.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.system.view.general",{url:"/general",templateUrl:"app/setting/system/view/general/general.html",controller:"SystemViewGeneralCtrl"})}]),angular.module("xCallyShuttleApp").controller("SystemViewLogsCtrl",["$scope","$stateParams","$translate","socket","Setting","xAlert","usSpinnerService",function(a,b,c,d,e,f,g){a.initView=function(){return a.logs={errors:"",output:""},g.spin("logs-spinner"),e.get({controller:"logs"}).$promise.then(function(b){a.logs=b,g.stop("logs-spinner")})["catch"](function(a){f.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.system.view.logs",{url:"/logs",templateUrl:"app/setting/system/view/logs/logs.html",controller:"SystemViewLogsCtrl"})}]),angular.module("xCallyShuttleApp").controller("SystemViewCtrl",["$scope",function(a){}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.system.view",{url:"/view",templateUrl:"app/setting/system/view/view.html",controller:"SystemViewCtrl"})}]),angular.module("xCallyShuttleApp").controller("UpdateListCtrl",["$scope","gridOptions","$uibModal","$location","Update",function(a,b,c,d,e){a.initCounter=function(){a.$on("timer-stopped",function(a,b){console.log("Timer Stopped - data = ",b),d.path("/dashboard/voice")})},a.initView=function(){var c={exporterCsvFilename:"updates.csv",enableFiltering:!1,enableSorting:!1,enablePaginationControls:!1,enableSelectAll:!1,columnDefs:[{name:"message"},{width:125,name:"version",cellClass:"text-center ui-grid-vcenter"},{width:125,name:"createdAt",displayName:"APPLICATION_UPDATED_AT",cellClass:"text-center ui-grid-vcenter",cellTemplate:'
'}]};a.gridOptions=b.gridOptions(e,c,a)},a.pull=function(){c.open({animation:!0,templateUrl:"app/setting/update/list/list.pull.html",controller:"UpdateListPullCtrl"})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.updates.list",{url:"/list",templateUrl:"app/setting/update/list/list.html",controller:"UpdateListCtrl"}).state("main.setting.updates.landing",{url:"/landing",templateUrl:"app/setting/update/list/landing.html",controller:"UpdateListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{name:"smart-table",insertBefore:"#ng_load_plugins_before",files:["assets/css/error.css"]}])}]}})}]),angular.module("xCallyShuttleApp").controller("UpdateListPullCtrl",["$scope","$uibModalInstance","$translate","$location","Update",function(a,b,c,d,e){a.modal={dismissable:!0,title:"Confirm Checkout",html:"Are you sure you want to checkout?",buttons:[{classes:"btn btn-success",text:"Checkout",click:function(){return e.pull().$promise["finally"](function(){b.dismiss("close"),d.path("/setting/updates/landing")})}},{classes:"btn default",text:"Cancel",click:function(){b.dismiss("cancel")}}]}}]),angular.module("xCallyShuttleApp").factory("Update",["$resource",function(a){return a("/api/updates/:id/:controller",{id:"@id"},{pull:{method:"GET",params:{id:"pull"}}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.updates",{url:"/updates",template:"
","abstract":!0,data:{permissions:{only:["hasUpdate"],redirectTo:"main.dashboard.voice"}}})}]),angular.module("xCallyShuttleApp").controller("SquareOdbcListCtrl",["$scope","$uibModal","$translate","SquareOdbc","gridOptions","xAlert",function(a,b,c,d,e,f){a.initView=function(){var b={exporterCsvFilename:"odbc.csv",columnDefs:[{name:"name"},{name:"dsn",displayName:"APPLICATION_ODBC"},{name:"description"},{name:"action",width:250,buttons:[{"class":"blue-hoki",href:"/square/odbc/view/{{row.entity.id}}/settings",name:"settings"},{"class":"green-jungle",name:"check",onClick:"grid.appScope.checkConnection(row.entity.id)"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=e.gridOptions(d,b,a)},a.createItem=function(){var c=b.open({animation:!0,templateUrl:"app/square/odbc/list/list.create.modal.html",controller:"SquareOdbcListCreateCtrl"});c.result.then(function(){a.gridOptions.getPage()})},a.checkConnection=function(a){return d.get({id:a,controller:"check"}).$promise.then(function(){f.show(c.instant("MESSAGE_CONNECTION_VERIFIED"),"success")})["catch"](function(){f.show(c.instant("MESSAGE_CONNECTION_INVALID"),"danger")})}}]),angular.module("xCallyShuttleApp").controller("SquareOdbcListCreateCtrl",["$scope","$translate","$uibModalInstance","SquareOdbc","xAlert",function(a,b,c,d,e){a.form={},a.item={},a.item.dsn||(a.item.dsn="DRIVER=MySQL;SERVER=127.0.0.1;UID=xcall;PWD=password;DATABASE=motion"),a.save=function(){return d.save(a.item).$promise.then(function(a){e.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)})["catch"](function(a){e.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.square.odbc.list",{url:"/list",templateUrl:"app/square/odbc/list/list.html",controller:"SquareOdbcListCtrl"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.square.odbc",{url:"/odbc",template:"
","abstract":!0})}]),angular.module("xCallyShuttleApp").factory("SquareOdbc",["$resource",function(a){return a("/api/square/odbc/:id/:controller",{name:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").controller("SquareOdbcViewCtrl",["$scope","$translate","$stateParams","SquareOdbc","xAlert",function(a,b,c,d,e){a.odbc={},a.getOdbc=function(){return d.get({id:c.id}).$promise.then(function(b){a.odbc=b})["catch"](function(a){e.error(a)})},a.updateOdbc=function(){var f=angular.copy(a.odbc);return d.update({id:c.id},f).$promise.then(function(){e.show(b.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){e.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.square.odbc.view",{url:"/view/:id",templateUrl:"app/square/odbc/view/view.html",controller:"SquareOdbcViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.square.odbc.view.settings",{url:"/settings",templateUrl:"app/square/odbc/view/view.settings.html"})}]),angular.module("xCallyShuttleApp").controller("SquareProjectListCtrl",["$scope","$uibModal","SquareProject","gridOptions",function(a,b,c,d){a.initView=function(){var b={exporterCsvFilename:"projects.csv",columnDefs:[{name:"name"},{name:"description"},{name:"action",width:160,buttons:[{"class":"blue-hoki",href:"/square/projects/view/{{row.entity.id}}",name:"settings"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=d.gridOptions(c,b,a)},a.createItem=function(){var c=b.open({animation:!0,templateUrl:"app/square/project/list/list.create.modal.html",controller:"SquareProjectListCreateCtrl"});c.result.then(function(b){console.log(b),a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("SquareProjectListCreateCtrl",["$scope","$translate","$uibModalInstance","SquareProject","xAlert",function(a,b,c,d,e){a.form={},a.item={},a.save=function(){return d.save(a.item).$promise.then(function(a){e.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)})["catch"](function(a){e.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.square.projects.list",{url:"/list",templateUrl:"app/square/project/list/list.html",controller:"SquareProjectListCtrl",authenticate:!0})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.square.projects",{url:"/projects",template:"
","abstract":!0})}]),angular.module("xCallyShuttleApp").factory("SquareProject",["$resource",function(a){return a("/api/square/projects/:id/:controller",{name:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").controller("SquareProjectViewCtrl",["$scope","$stateParams","Auth","xAlert","SquareProject","socket","$translate","$log","$uibModal",function(a,b,c,d,e,f,g,h,i){a.squareProject={},a.$on("$destroy",function(){f.unsyncUpdates("square_project")}),a.getProject=function(){return e.get({id:b.id}).$promise.then(function(b){a.squareProject=b,angular.element(document).ready(function(){window.onerror=function(a,b,c){try{if(null!==a&&-1!==a.indexOf("Script error."));else{var e=new Image;e.src="assets/plugins/mxgraph/images/1x1.png?msg="+encodeURIComponent(a)+"&url="+encodeURIComponent(b)+"&lnum="+encodeURIComponent(c)}}catch(f){d.error(f)}},b.token=c.getToken();var a=new EditorUi(new Editor);a.openString(b.preproduction,b.name,b),a.editor.graphChangeListener=function(a,b){var c=b.properties.rtChange||!1;c||(this.modified=!0)}}),f.socket.on("square_project:save",function(c){c.id===b.id&&(a.squareProject=_.merge(a.squareProject,c))})})["catch"](function(a){d.error(a)})},a.editNotes=function(){var c=i.open({animation:!0,templateUrl:"app/square/project/view/projectNotes.modal.html",controller:["$scope","$uibModalInstance","notes",function(a,b,c){a.notes=c,a.close=function(){b.close(a.notes)},a.cancel=function(){b.dismiss("cancel")}}],resolve:{notes:{value:a.squareProject.notes}}});c.result.then(function(a){return e.update({id:b.id},{notes:a.value}).$promise.then(function(){d.show(g.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){d.error(a)})},function(){h.info("Modal dismissed at: "+new Date)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.square.projects.view",{url:"/view/:id",templateUrl:"app/square/project/view/view.html",controller:"SquareProjectViewCtrl",authenticate:!0,resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",serie:!0,cache:!1,files:["assets/plugins/mxgraph/css/common.css","assets/plugins/mxgraph/css/explorer.css","assets/plugins/mxgraph/styles/grapheditor.css","assets/plugins/mxgraph/styles/custom.css","assets/plugins/square/js/custom.js","assets/plugins/mxgraph/js/mxClient.js","assets/plugins/square/js/Editor.js","assets/plugins/square/js/Graph.js","assets/plugins/square/js/EditorUi.js","assets/plugins/square/js/Actions.js","assets/plugins/square/js/Menus.js","assets/plugins/square/js/Sidebar.js","assets/plugins/square/js/Toolbar.js","assets/plugins/square/js/Dialogs.js"]}])}]}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){ a.state("main.square.realtime",{url:"/realtime",template:"
","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:14}}})}]),angular.module("xCallyShuttleApp").factory("ReportSquare",["$resource",function(a){return a("/api/report/square/:id/:controller",{name:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("ReportSquareDetail",["$resource",function(a){return a("/api/report/square/details/:id/:controller",{name:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").controller("SquareRealtimeViewGeneralCtrl",["$scope","$log","$uibModal","$translate","socket","xAlert","ReportSquare","usSpinnerService","$q","uiGridConstants",function(a,b,c,d,e,f,g,h,i,j){function k(b){return h.spin("spinner-grid"),g.get(m).$promise.then(function(b){a.gridOptions.totalItems=b.count,a.gridOptions.data=b.rows})["catch"](function(a){f.error(a)})["finally"](function(){b&&l(),h.stop("spinner-grid")})}function l(){e.socket.on("report_square:save",function(b){if(b.leaveAt){var c=_.remove(a.gridOptions.data,{id:b.id});c&&k()}else{var d=_.find(a.gridOptions.data,{id:b.id});if(!d&&a.gridOptions.data.length{{hhours}}:{{mminutes}}:{{sseconds}}',enableSorting:!1,enableColumnMenu:!1,enableFiltering:!1}],data:[],gridMenuTitleFilter:function(a){var b=i.defer();return b.resolve(d.instant(a)),b.promise},onRegisterApi:function(b){a.gridApi=b,a.gridApi.grid.registerDataChangeCallback(function(){n(a.gridApi.core.getVisibleRows(a.gridApi.grid).length)}),a.gridApi.core.on.sortChanged(a,function(a,b){0===b.length?m.order=null:m.order=b[0].name+" "+b[0].sort.direction.toUpperCase(),k()}),a.gridApi.pagination.on.paginationChanged(a,function(a,b){m.offset=(a-1)*b,m.limit=b,k()}),a.gridApi.core.on.filterChanged(a,function(){var a=this.grid;a.columns.forEach(function(a){a.filters[0].term?m[a.name]=a.filters[0].term:delete m[a.name]}),k()})}},k(!0)};var n=function(a){var b=a?30*a+130:270;angular.element(document.getElementsByClassName("ui-grid")[0]).css("height",b+"px"),angular.element(document.getElementsByClassName("ui-grid-viewport")).css("height",30*a+"px")};a.$on("$destroy",function(){e.unsyncUpdates("report_square")})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.square.realtime.view.general",{url:"/general",templateUrl:"app/square/realtime/view/general/general.html",controller:"SquareRealtimeViewGeneralCtrl"})}]),angular.module("xCallyShuttleApp").controller("SquareRealtimeViewCtrl",["$scope",function(a){}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.square.realtime.view",{url:"/view",templateUrl:"app/square/realtime/view/view.html",controller:"SquareRealtimeViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/css/profile.css","assets/css/tasks.css"]}])}]}})}]),angular.module("xCallyShuttleApp").controller("SquareRecordingListCtrl",["$scope","SquareRecording","gridOptions",function(a,b,c){a.SquareRecording=b;a.initView=function(){var d={exporterCsvFilename:"recordings.csv",rowHeight:30,columnDefs:[{name:"uniqueid"},{name:"callerid",displayName:"APPLICATION_CALLERIDNUM"},{name:"filename"},{name:"extension"},{name:"projectName",displayName:"APPLICATION_PROJECT"},{name:"audio",displayName:"",width:100,enableSorting:!1,enableFiltering:!1,cellClass:"ui-grid-vcenter",cellTemplate:"
{{'MESSAGE_GSM_PREVIEW_NOT_SUPPORTED' | translate}}
"},{name:"action",width:80,buttons:[{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.filename || row.entity.uniqueid, row.entity.id)"},{directive:''}]}]};a.gridOptions=c.gridOptions(b,d,a)}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.square.recordings.list",{url:"/list",templateUrl:"app/square/recording/list/list.html",controller:"SquareRecordingListCtrl"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.square.recordings",{url:"/recordings",template:"
","abstract":!0})}]),angular.module("xCallyShuttleApp").factory("SquareRecording",["$resource",function(a){return a("/api/square/recordings/:id/:controller",{id:"@id"},{update:{method:"PUT"},patch:{method:"PATCH"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.square",{url:"/square",template:"
","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:14}}})}]),angular.module("xCallyShuttleApp").factory("Agent",["$resource",function(a){return a("/api/agents/:id/:controller/:controller1/:controller2/:controller3",{id:"@id"},{changePassword:{method:"PUT",params:{controller:"password"}},update:{method:"PUT"},patch:{method:"PATCH"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff.agents",{url:"/agents",template:"
","abstract":!0,data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:4}}})}]),angular.module("xCallyShuttleApp").controller("AgentListCtrl",["$scope","$timeout","Agent","Auth","gridOptions",function(a,b,c,d,e){a.initView=function(){a.Auth=d;var b={exporterCsvFilename:"agents.csv",columnDefs:[{name:"fullname"},{name:"name",displayName:"APPLICATION_USERNAME"},{name:"internal"},{name:"email"},{name:"description"},{name:"action",width:100,buttons:[{"class":"blue-hoki",href:"/staff/agents/view/{{row.entity.id}}/account",name:"profile"},{"class":"green-meadow",href:"/staff/agents/view/{{row.entity.id}}/queues/voice",name:"queues"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.fullname, row.entity.id)"}]}]};a.gridOptions=e.gridOptions(c,b,a)}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff.agents.list",{url:"/list",templateUrl:"app/staff/agent/list/list.html",controller:"AgentListCtrl",data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:4}}})}]),angular.module("xCallyShuttleApp").controller("AgentViewCtrl",["$scope","$http","xAlert","$translate","$stateParams","$cookieStore","Agent","FileUploader","Auth","MailQueue","User","VoiceQueue","ChatQueue","FaxQueue","SmsQueue","OpenChannelQueue","Setting",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q){a.Auth=i,a.radioSwitch={isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.recordSwitch={onText:"On",offText:"Off",isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.initVoiceQueues=function(){var a={},b={};return l.get().$promise.then(function(b){return a.queues=_.map(b.rows,function(a){return{name:a.name}}),g.get({id:e.id,controller:"voice",controller2:"queues"}).$promise}).then(function(a){b.queues=_.map(a.rows,function(a){return{name:a.name}})}).then(function(){ComponentsDropdowns.bindAgent(a,b,"voice",e.id,g)})["catch"](function(a){console.error(a)})},a.initChatQueues=function(){var a={},b={};return m.get().$promise.then(function(b){return a.queues=_.map(b.rows,function(a){return{id:a.id,name:a.name}}),g.get({id:e.id,controller:"chat",controller2:"queues"}).$promise}).then(function(a){b.queues=_.map(a.rows,function(a){return{id:a.id,name:a.name}})}).then(function(){ComponentsDropdowns.bindAgent(a,b,"chat",e.id,g)})["catch"](function(a){console.error(a)})},a.initMailQueues=function(){var a={},b={};return j.get().$promise.then(function(b){return a.queues=_.map(b.rows,function(a){return{id:a.id,name:a.name}}),g.get({id:e.id,controller:"mail",controller2:"queues"}).$promise}).then(function(a){b.queues=_.map(a.rows,function(a){return{id:a.id,name:a.name}})}).then(function(){ComponentsDropdowns.bindAgent(a,b,"mail",e.id,g)})["catch"](function(a){console.error(a)})},a.initSmsQueues=function(){var a={},b={};return o.get().$promise.then(function(b){return a.queues=_.map(b.rows,function(a){return{id:a.id,name:a.name}}),g.get({id:e.id,controller:"sms",controller2:"queues"}).$promise}).then(function(a){b.queues=_.map(a.rows,function(a){return{id:a.id,name:a.name}})}).then(function(){ComponentsDropdowns.bindAgent(a,b,"sms",e.id,g)})["catch"](function(a){console.error(a)})},a.initFaxQueues=function(){var a={},b={};return n.get().$promise.then(function(b){return a.queues=_.map(b.rows,function(a){return{id:a.id,name:a.name}}),g.get({id:e.id,controller:"fax",controller2:"queues"}).$promise}).then(function(a){b.queues=_.map(a.rows,function(a){return{id:a.id,name:a.name}})}).then(function(){ComponentsDropdowns.bindAgent(a,b,"fax",e.id,g)})["catch"](function(a){console.error(a)})},a.initOpenchannelQueues=function(){var a={},b={};return p.get().$promise.then(function(b){return a.queues=_.map(b.rows,function(a){return{id:a.id,name:a.name}}),g.get({id:e.id,controller:"openchannel",controller2:"queues"}).$promise}).then(function(a){b.queues=_.map(a.rows,function(a){return{id:a.id,name:a.name}})}).then(function(){ComponentsDropdowns.bindAgent(a,b,"openchannel",e.id,g)})["catch"](function(a){console.error(a)})},a.updatePassword=function(){var b={newPassword:a.agent.newPwd};return i.isAdmin()?b.id=e.id:b.oldPassword=a.agent.currentPwd,k.changePassword(b).$promise.then(function(){c.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){c.error(a)})};var r=a.uploader=new h({url:"api/users/"+e.id+"/avatar",queueLimit:1,withCredentials:!0,headers:{Authorization:"Bearer "+f.get("token")}});r.filters.push({name:"imageFilter",fn:function(a){var b="|"+a.type.slice(a.type.lastIndexOf("/")+1)+"|";return-1!=="|jpg|png|jpeg|".indexOf(b)}}),r.onSuccessItem=function(b,e){a.agent.userpic=e.userpic,a.agent.id===i.getCurrentUser().id&&(i.getCurrentUser().userpic=e.userpic),c.show(d.instant("MESSAGE_WELL_DONE"),"success")},r.onErrorItem=function(){c.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")},r.onCompleteAll=function(){r.clearQueue()},a.initView=function(){return g.get({id:e.id}).$promise.then(function(b){return a.agent=b,a.agent.transport=a.agent.transport?a.agent.transport.split(","):[],a.agent.allow=a.agent.allow?a.agent.allow.split(";"):[],a.agent.nat=a.agent.nat?a.agent.nat.split(","):[],q.get({id:1}).$promise}).then(function(b){a.setting=b})["catch"](function(a){c.error(a)})},a.patchItem=function(){return g.update({id:e.id},{chatCapacity:a.agent.chatCapacity,mailCapacity:a.agent.mailCapacity,faxCapacity:a.agent.faxCapacity,smsCapacity:a.agent.smsCapacity,openchannelCapacity:a.agent.openchannelCapacity}).$promise.then(function(){c.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){c.error(a)})},a.updateItem=function(){var b=angular.copy(a.agent);return delete b.password,delete b.md5secret,b.transport=b.transport.join(","),b.allow=b.allow.join(";"),b.nat=b.nat.join(","),g.update({id:e.id},b).$promise.then(function(){c.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){c.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff.agents.view",{url:"/view/:id",templateUrl:"app/staff/agent/view/view.html",controller:"AgentViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]},data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:4}}}).state("main.staff.agents.view.account",{url:"/account",templateUrl:"app/staff/agent/view/view.account.html",data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:4}},resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/scripts/jquery.sparkline.min.js","assets/plugins/bootstrap-fileinput/bootstrap-fileinput.js","assets/scripts/profile.js"]})}]}}).state("main.staff.agents.view.voice",{url:"/voice",templateUrl:"app/staff/agent/view/view.voice.html",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:4}}}).state("main.staff.agents.view.chat",{url:"/chat",templateUrl:"app/staff/agent/view/view.chat.html",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:4}}}).state("main.staff.agents.view.mail",{url:"/mail",templateUrl:"app/staff/agent/view/view.mail.html",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:4}}}).state("main.staff.agents.view.fax",{url:"/fax",templateUrl:"app/staff/agent/view/view.fax.html",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:4}}}).state("main.staff.agents.view.sms",{url:"/sms",templateUrl:"app/staff/agent/view/view.sms.html",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:4}}}).state("main.staff.agents.view.openchannel",{url:"/openchannel",templateUrl:"app/staff/agent/view/view.openchannel.html",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:4}}}).state("main.staff.agents.view.motionbar",{url:"/motionbar",templateUrl:"app/staff/agent/view/view.motionbar.html",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:4}}}).state("main.staff.agents.view.queues",{url:"/queues",templateUrl:"app/staff/agent/view/view.queues.html",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:4}},cache:!1,serie:!0,resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/jquery-multi-select/css/multi-select.css","assets/plugins/jquery-multi-select/js/jquery.multi-select.js","assets/plugins/jquery-quicksearch/jquery.quicksearch.js","assets/scripts/components-dropdowns.js"]})}]}}).state("main.staff.agents.view.queues.voice",{url:"/voice",templateUrl:"app/staff/agent/view/view.queues.voice.html",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:7}}}).state("main.staff.agents.view.queues.chat",{url:"/chat",templateUrl:"app/staff/agent/view/view.queues.chat.html",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:8}}}).state("main.staff.agents.view.queues.mail",{url:"/mail",templateUrl:"app/staff/agent/view/view.queues.mail.html",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:9}}}).state("main.staff.agents.view.queues.fax",{url:"/fax",templateUrl:"app/staff/agent/view/view.queues.fax.html",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:10}}}).state("main.staff.agents.view.queues.sms",{url:"/sms",templateUrl:"app/staff/agent/view/view.queues.sms.html",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:11}}}).state("main.staff.agents.view.queues.openchannel",{url:"/openchannel",templateUrl:"app/staff/agent/view/view.queues.openchannel.html",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:20}}})}]),angular.module("xCallyShuttleApp").controller("AgentWizardCtrl",["$scope","$rootScope","$location","$translate","$http","Agent","VoiceQueue","ChatQueue","MailQueue","SmsQueue","FaxQueue","OpenChannelQueue","Setting","xAlert","WizardHandler",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o){a.maxAmount=1e3,a._data={voice:{queues:[]},chat:{queues:[]},mail:{queues:[]},sms:{queues:[]},fax:{queues:[]},openchannel:{queues:[]}},a._agent=angular.copy(a._data),a.initVoiceQueues=function(){return g.get().$promise.then(function(b){a._data.voice.queues=_.map(b.rows,function(a){return{name:a.name}})}).then(function(){ComponentsDropdowns.bindAgent(a._data.voice,a._agent.voice,"voice",null,null)})["catch"](function(a){console.error(a)})},a.initChatQueues=function(){return h.get().$promise.then(function(b){a._data.chat.queues=_.map(b.rows,function(a){return{id:a.id,name:a.name}})}).then(function(){ComponentsDropdowns.bindAgent(a._data.chat,a._agent.chat,"chat",null,null)})["catch"](function(a){console.error(a)})},a.initMailQueues=function(){return i.get().$promise.then(function(b){a._data.mail.queues=_.map(b.rows,function(a){return{id:a.id,name:a.name}})}).then(function(){ComponentsDropdowns.bindAgent(a._data.mail,a._agent.mail,"mail",null,null)})["catch"](function(a){console.error(a)})},a.initSmsQueues=function(){return j.get().$promise.then(function(b){a._data.sms.queues=_.map(b.rows,function(a){return{id:a.id,name:a.name}})}).then(function(){ComponentsDropdowns.bindAgent(a._data.sms,a._agent.sms,"sms",null,null)})["catch"](function(a){console.error(a)})},a.initFaxQueues=function(){return k.get().$promise.then(function(b){a._data.fax.queues=_.map(b.rows,function(a){return{id:a.id,name:a.name}})}).then(function(){ComponentsDropdowns.bindAgent(a._data.fax,a._agent.fax,"fax",null,null)})["catch"](function(a){console.error(a)})},a.initOpenchannelQueues=function(){return l.get().$promise.then(function(b){a._data.openchannel.queues=_.map(b.rows,function(a){return{id:a.id,name:a.name}})}).then(function(){ComponentsDropdowns.bindAgent(a._data.openchannel,a._agent.openchannel,"openchannel",null,null)})["catch"](function(a){console.error(a)})},a.forms={info:void 0,voice:void 0},a.item={role:"agent",allow:["alaw","ulaw","gsm"],transport:["udp"],context:"from-sip"},a.next=function(){o.wizard().next()},a.getAmount=function(){return m.get({controller:"internal",internal:a.item.minInternal}).$promise.then(function(b){a.item.minInternal=Number(b.value),a.maxAmount=b.range||1e3})["catch"](function(a){n.error(a)})},a.exitValidation=function(a){return a},a.getFirstFreeInternal=function(){return m.get({controller:"internal"}).$promise.then(function(b){return a.internal=b,a.item.internal=b.value,a.item.minInternal=b.value,a.maxAmount=b.range||1e3,m.get({id:1}).$promise}).then(function(b){a.setting=b})["catch"](function(a){n.error(a)})},a.createItem=function(){var b=angular.copy(a.item);return delete b.minInternal,b.transport&&(b.transport=b.transport.join(",")),a.item.allow&&(b.allow=b.allow.join(";")),b.channels=a._agent,f.save(b).$promise.then(function(){c.path("/staff/agents/list")})["catch"](function(a){console.log(a),n.error(a)})},a.createItems=function(){var b=angular.copy(a.item);return delete b.internal,b.transport&&(b.transport=b.transport.join(",")),b.allow&&(b.allow=b.allow.join(";")),f.save({id:"bulk"},b).$promise.then(function(){c.path("/staff/agents/list")})["catch"](function(a){console.log(a),n.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff.agents.wizard",{url:"/wizard",templateUrl:"app/staff/agent/wizard/wizard.html",controller:"AgentWizardCtrl",data:{permissions:{only:["admin"],redirectTo:"main.dashboard.voice"}},resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/jquery-multi-select/css/multi-select.css","assets/plugins/jquery-multi-select/js/jquery.multi-select.js","assets/plugins/jquery-quicksearch/jquery.quicksearch.js","assets/scripts/components-dropdowns.js"]})}]}}).state("main.staff.agents.bulk",{url:"/bulk",templateUrl:"app/staff/agent/wizard/wizard-bulk.html",controller:"AgentWizardCtrl",data:{permissions:{only:["admin"],redirectTo:"main.dashboard.voice"}}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff",{url:"/staff",template:"
","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("TeamCreateCtrl",["$scope","$uibModalInstance","Team","xAlert",function(a,b,c,d){a.form={},a.item={},a.ok=function(){return c.save(a.item).$promise.then(function(){b.close(a.item)})["catch"](function(a){d.error(a)})},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("TeamListCtrl",["$scope","Team","gridOptions","$uibModal",function(a,b,c,d){a.initView=function(){var d={exporterCsvFilename:"teams.csv",columnDefs:[{name:"name"},{name:"description"},{name:"action",width:100,buttons:[{"class":"{{row.entity.defaultEntry ? 'blue-hoki disabled' : 'blue-hoki'}}",href:"/staff/teams/view/{{row.entity.id}}/settings",name:"profile"},{"class":"{{row.entity.defaultEntry ? 'green-turquoise disabled' : 'green-turquoise'}}",name:"agents",href:"/staff/teams/view/{{row.entity.id}}/agents"},{"class":"{{row.entity.defaultEntry ? 'red-sunglo disabled' : 'red-sunglo'}}",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(b,d,a)},a.createItem=function(){d.open({animation:!0,templateUrl:"app/staff/team/list/create.modal.html",controller:"TeamCreateCtrl"}).result.then(function(){a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff.teams.list",{url:"/list",templateUrl:"app/staff/team/list/list.html",controller:"TeamListCtrl"})}]),angular.module("xCallyShuttleApp").factory("Team",["$resource",function(a){return a("/api/teams/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff.teams",{url:"/teams",template:"
","abstract":!0,data:{permissions:{only:["admin"],redirectTo:"landing"}}})}]),angular.module("xCallyShuttleApp").controller("TeamViewCtrl",["$scope","$http","$stateParams","$translate","Team","Agent","xAlert",function(a,b,c,d,e,f,g){var h=function(){return{select:function(b){return console.log("agents",b),e.save({id:a.team.id,controller:"agents"},{agents:b})},deselect:function(b){return e["delete"]({id:a.team.id,controller:"agents",agents:b})}}};a.initView=function(){return e.get({id:c.id}).$promise.then(function(b){a.team=b})["catch"](function(a){g.error(a)})},a.initAgents=function(){return f.get().$promise.then(function(b){return a.agents=b.rows,e.get({id:c.id,controller:"agents"}).$promise}).then(function(b){ComponentsDropdowns.bindTeam(_.map(b.rows,"id"),_.map(a.agents,function(a){return{id:a.id,name:a.name,fullname:a.fullname,internal:a.internal}}),h)})["catch"](function(a){g.error(a)})},a.updateItem=function(){var b=angular.copy(a.team);return e.update({id:c.id},b).$promise.then(function(){g.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){g.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff.teams.view",{url:"/view/:id",templateUrl:"app/staff/team/view/view.html",controller:"TeamViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.staff.teams.view.agents",{url:"/agents",templateUrl:"app/staff/team/view/view.agents.html",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/jquery-multi-select/css/multi-select.css","assets/plugins/jquery-multi-select/js/jquery.multi-select.js","assets/plugins/jquery-quicksearch/jquery.quicksearch.js","assets/scripts/components-dropdowns.js"]}])}]}}).state("main.staff.teams.view.settings",{url:"/settings",templateUrl:"app/staff/team/view/view.settings.html"})}]),angular.module("xCallyShuttleApp").controller("TelephoneListCtrl",["$scope","Telephone","gridOptions",function(a,b,c){a.initView=function(){var d={exporterCsvFilename:"telephones.csv",columnDefs:[{name:"fullname"},{name:"name"},{name:"internal"},{name:"description"},{name:"action",width:75,buttons:[{"class":"blue-hoki",href:"/staff/telephones/view/{{row.entity.id}}/account",name:"profile"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.fullname, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(b,d,a)}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff.telephones.list",{url:"/list",templateUrl:"app/staff/telephone/list/list.html",controller:"TelephoneListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{name:"smart-table",insertBefore:"#ng_load_plugins_before",files:["assets/css/smart_table.css"]}])}]}})}]),angular.module("xCallyShuttleApp").factory("Telephone",["$resource",function(a){return a("/api/telephones/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff.telephones",{url:"/telephones",template:"
","abstract":!0,data:{permissions:{only:["admin"],redirectTo:"landing"}}})}]),angular.module("xCallyShuttleApp").controller("TelephoneViewCtrl",["$scope","$http","$stateParams","$translate","$cookieStore","Auth","xAlert","Telephone",function(a,b,c,d,e,f,g,h){a.initView=function(){return a.Auth=f,a.forms={},h.get({id:c.id}).$promise.then(function(b){delete b.password,a.item=b,a.item.transport=a.item.transport?a.item.transport.split(","):[],a.item.allow=a.item.allow?a.item.allow.split(";"):[]})["catch"](function(a){g.error(a)})},a.updateItem=function(){var b=angular.copy(a.item);return b.transport=b.transport.join(","),b.allow=b.allow.join(";"),h.update(b).$promise.then(function(){g.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){g.error(a)})},a.updatePassword=function(){return h.update({password:a.item.password}).$promise.then(function(){g.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){g.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff.telephones.view",{url:"/view/:id",templateUrl:"app/staff/telephone/view/view.html",controller:"TelephoneViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.staff.telephones.view.account",{url:"/account",templateUrl:"app/staff/telephone/view/view.account.html",resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css","assets/scripts/jquery.sparkline.min.js","assets/plugins/bootstrap-fileinput/bootstrap-fileinput.js","assets/scripts/profile.js"]})}]}}).state("main.staff.telephones.view.voice",{url:"/voice",templateUrl:"app/staff/telephone/view/view.voice.html",data:{permissions:{only:["admin"],redirectTo:"main.dashboard.voice"}}})}]),angular.module("xCallyShuttleApp").controller("TelephoneWizardCtrl",["$scope","$http","$location","WizardHandler","xAlert","$translate","Telephone","Setting",function(a,b,c,d,e,f,g,h){a.forms={},a.item={allow:["alaw","ulaw","gsm"],transport:["udp"],context:"from-sip"},a.next=function(){d.wizard().next()},a.exitValidation=function(a){return a},a.getFirstFreeInternal=function(){return h.get({controller:"internal"}).$promise.then(function(b){a.item.internal=b.value})["catch"](function(a){e.error(a)})},a.createItem=function(){var b=angular.copy(a.item);return b.transport&&(b.transport=b.transport.join(",")),a.item.allow&&(b.allow=b.allow.join(";")),g.save(b).$promise.then(function(){c.path("/staff/telephones/list")})["catch"](function(a){e.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff.telephones.wizard",{url:"/wizard",templateUrl:"app/staff/telephone/wizard/wizard.html",controller:"TelephoneWizardCtrl"})}]),angular.module("xCallyShuttleApp").controller("UserListCtrl",["$scope","$timeout","User","Auth","gridOptions",function(a,b,c,d,e){function f(a){if(a){var b=_.words(a),c=_.map(b,function(a){return a?a[0]:""});return c.join("").toUpperCase()}return!1}a.getUserAvatar=function(a,c,d){b(function(){angular.element("#userImg"+a).avatar({useGravatar:!1,initials:d?[]:f(c),fallbackImage:"api/users/avatar/"+d,size:80})})},a.isAdmin=function(a){return"admin"===a},a.initView=function(){var b={exporterCsvFilename:"users.csv",columnDefs:[{name:"fullname"},{name:"name",displayName:"APPLICATION_USERNAME"},{name:"internal"},{name:"email"},{name:"description"},{name:"action",width:100,buttons:[{"class":"blue-hoki",href:"/staff/users/view/{{row.entity.id}}/account",name:"profile"},{"class":"green-meadow",href:"/staff/users/view/{{row.entity.id}}/permit/voice",name:"permits",hide:"grid.appScope.isAdmin(row.entity.role)"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.fullname, row.entity.id)"}]}]};a.gridOptions=e.gridOptions(c,b,a)}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff.users.list",{url:"/list",templateUrl:"app/staff/user/list/list.html",controller:"UserListCtrl"})}]),angular.module("xCallyShuttleApp").factory("Module",["$resource",function(a){return a("/api/modules/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("User",["$resource",function(a){return a("/api/users/:id/:controller/:controller2/:controller3",{id:"@id"},{changePassword:{method:"PUT",params:{controller:"password"}},update:{method:"PUT"},me:{method:"GET",params:{id:"me"}}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff.users",{url:"/users",template:"
","abstract":!0,data:{permissions:{only:["admin"],redirectTo:"landing"}}})}]),angular.module("xCallyShuttleApp").controller("UserViewCtrl",["$scope","$stateParams","$cookieStore","$translate","FileUploader","User","Auth","xAlert","MailQueue","VoiceQueue","ChatQueue","FaxQueue","SmsQueue","OpenChannelQueue","Team","Module","Setting",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q){function r(b){var c=_.find(a.modules,{id:b.ModuleId});if(b.status===!0)c.status=!0;else{var d=_.filter(c.SubModules,{status:!0});d.length||(c.status=!1)}c.ModuleId&&r(c)}function s(a,b){a.forEach(function(a){a.status=b,a.SubModules&&a.SubModules.length&&s(a.SubModules,b)})}function t(a,b){b.forEach(function(b){_.find(a,{id:b.id})?b.status=!0:b.status=!1,b.SubModules&&b.SubModules.length&&t(a,b.SubModules)})}function u(a,b){return a=_.union(a,_.map(_.filter(b,{status:!0}),"id")),b.forEach(function(b){b.SubModules&&b.SubModules.length&&(a=_.union(a,u(a,b.SubModules)))}),a}a.Auth=g,a._=_,a.moduleSwitch={onText:"On",offText:"Off",isActive:!0,size:"mini",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.initVoiceQueues=function(){var a={},c={};return j.get().$promise.then(function(c){return a.queues=_.map(c.rows,function(a){return{name:a.name}}),f.query({id:b.id,controller:"allowed",controller2:"voice", -controller3:"queues"}).$promise}).then(function(a){c.queues=_.map(a,function(a){return{name:a.name}})}).then(function(){ComponentsDropdowns.bindPermit(a,c,"voice",b.id,f)})["catch"](function(a){console.error(a)})},a.initChatQueues=function(){var a={},c={};return k.get().$promise.then(function(c){return a.queues=_.map(c.rows,function(a){return{id:a.id,name:a.name}}),f.query({id:b.id,controller:"allowed",controller2:"chat",controller3:"queues"}).$promise}).then(function(a){c.queues=_.map(a,function(a){return{id:a.id,name:a.name}})}).then(function(){ComponentsDropdowns.bindPermit(a,c,"chat",b.id,f)})["catch"](function(a){console.error(a)})},a.initMailQueues=function(){var a={},c={};return i.get().$promise.then(function(c){return a.queues=_.map(c.rows,function(a){return{id:a.id,name:a.name}}),f.query({id:b.id,controller:"allowed",controller2:"mail",controller3:"queues"}).$promise}).then(function(a){c.queues=_.map(a,function(a){return{id:a.id,name:a.name}})}).then(function(){ComponentsDropdowns.bindPermit(a,c,"mail",b.id,f)})["catch"](function(a){console.error(a)})},a.initSmsQueues=function(){var a={},c={};return m.get().$promise.then(function(c){return a.queues=_.map(c.rows,function(a){return{id:a.id,name:a.name}}),f.query({id:b.id,controller:"allowed",controller2:"sms",controller3:"queues"}).$promise}).then(function(a){c.queues=_.map(a,function(a){return{id:a.id,name:a.name}})}).then(function(){ComponentsDropdowns.bindPermit(a,c,"sms",b.id,f)})["catch"](function(a){console.error(a)})},a.initFaxQueues=function(){var a={},c={};return l.get().$promise.then(function(c){return a.queues=_.map(c.rows,function(a){return{id:a.id,name:a.name}}),f.query({id:b.id,controller:"allowed",controller2:"fax",controller3:"queues"}).$promise}).then(function(a){c.queues=_.map(a,function(a){return{id:a.id,name:a.name}})}).then(function(){ComponentsDropdowns.bindPermit(a,c,"fax",b.id,f)})["catch"](function(a){console.error(a)})},a.initOpenchannelQueues=function(){var a={},c={};return n.get().$promise.then(function(c){return a.queues=_.map(c.rows,function(a){return{id:a.id,name:a.name}}),f.query({id:b.id,controller:"allowed",controller2:"openchannel",controller3:"queues"}).$promise}).then(function(a){c.queues=_.map(a,function(a){return{id:a.id,name:a.name}})}).then(function(){ComponentsDropdowns.bindPermit(a,c,"openchannel",b.id,f)})["catch"](function(a){console.error(a)})},a.initView=function(){return f.get({id:b.id}).$promise.then(function(b){return a.user=b,a.user.transport=a.user.transport?a.user.transport.split(","):[],a.user.allow=a.user.allow?a.user.allow.split(";"):[],q.get({id:1}).$promise}).then(function(b){a.setting=b})["catch"](function(a){h.error(a)})},a.updateItem=function(){var c=angular.copy(a.user);return delete c.password,delete c.md5secret,c.transport=c.transport.join(","),c.allow=c.allow.join(";"),f.update({id:b.id},c).$promise.then(function(){h.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){h.error(a)})},a.updatePassword=function(){var c={newPassword:a.user.newPwd};return g.isAdmin()?c.id=b.id:c.oldPassword=a.user.currentPwd,f.changePassword(c).$promise.then(function(){h.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){h.error(a)})};var v=a.uploader=new e({url:"api/users/"+b.id+"/avatar",queueLimit:1,withCredentials:!0,headers:{Authorization:"Bearer "+c.get("token")}});v.filters.push({name:"imageFilter",fn:function(a){var b="|"+a.type.slice(a.type.lastIndexOf("/")+1)+"|";return-1!=="|jpg|png|jpeg|".indexOf(b)}}),a.getModules=function(){return a.associatedModules=[],p.get().$promise.then(function(c){return a.modules=_.filter(c.rows,function(a){return!a.ModuleId}),f.query({id:b.id,controller:"allowed",controller2:"modules"}).$promise}).then(function(b){t(b,a.modules)})["catch"](function(a){h.error(a)})},a.updatePermissions=function(c){c.ModuleId&&r(c),c.SubModules&&c.SubModules.length&&s(c.SubModules,c.status);var e=u([],a.modules);return f.save({id:b.id,controller:"allowed",controller2:"modules"},{modules:e}).$promise.then(function(){h.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){h.error(a)})},v.onSuccessItem=function(b,c){a.user.userpic=c.userpic,a.user.id===g.getCurrentUser().id&&(g.getCurrentUser().userpic=c.userpic),h.show(d.instant("MESSAGE_WELL_DONE"),"success")},v.onErrorItem=function(){h.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")},v.onCompleteAll=function(){v.clearQueue()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff.users.view",{url:"/view/:id",templateUrl:"app/staff/user/view/view.html",controller:"UserViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.staff.users.view.account",{url:"/account",templateUrl:"app/staff/user/view/view.account.html",resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css","assets/scripts/jquery.sparkline.min.js","assets/plugins/bootstrap-fileinput/bootstrap-fileinput.js","assets/scripts/profile.js"]})}]}}).state("main.staff.users.view.voice",{url:"/voice",templateUrl:"app/staff/user/view/view.voice.html",data:{permissions:{only:["admin"],redirectTo:"main.dashboard.voice"}}}).state("main.staff.users.view.permit",{url:"/permit",templateUrl:"app/staff/user/view/view.permit.html",data:{permissions:{only:["admin"],redirectTo:"main.dashboard.voice"}},cache:!1,serie:!0,resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/jquery-multi-select/css/multi-select.css","assets/plugins/jquery-multi-select/js/jquery.multi-select.js","assets/plugins/jquery-quicksearch/jquery.quicksearch.js","assets/scripts/components-dropdowns.js"]})}]}}).state("main.staff.users.view.permit.voice",{url:"/voice",templateUrl:"app/staff/user/view/view.permit.voice.html",data:{permissions:{only:["admin"],redirectTo:"main.dashboard.voice"}}}).state("main.staff.users.view.permit.chat",{url:"/chat",templateUrl:"app/staff/user/view/view.permit.chat.html",data:{permissions:{only:["admin"],redirectTo:"main.dashboard.chat"}}}).state("main.staff.users.view.permit.mail",{url:"/mail",templateUrl:"app/staff/user/view/view.permit.mail.html",data:{permissions:{only:["admin"],redirectTo:"main.dashboard.mail"}}}).state("main.staff.users.view.permit.fax",{url:"/fax",templateUrl:"app/staff/user/view/view.permit.fax.html",data:{permissions:{only:["admin"],redirectTo:"main.dashboard.fax"}}}).state("main.staff.users.view.permit.sms",{url:"/sms",templateUrl:"app/staff/user/view/view.permit.sms.html",data:{permissions:{only:["admin"],redirectTo:"main.dashboard.sms"}}}).state("main.staff.users.view.permit.openchannel",{url:"/openchannel",templateUrl:"app/staff/user/view/view.permit.openchannel.html",data:{permissions:{only:["admin"],redirectTo:"main.dashboard.openchannel"}}}).state("main.staff.users.view.permit.modules",{url:"/modules",templateUrl:"app/staff/user/view/view.permit.modules.html",data:{permissions:{only:["admin"],redirectTo:"main.dashboard.voice"}}})}]),angular.module("xCallyShuttleApp").controller("UserWizardCtrl",["$scope","$location","WizardHandler","xAlert","$translate","User","Setting","Auth",function(a,b,c,d,e,f,g,h){a.initWizard=function(){return a.Auht=h,a.forms={info:void 0,voice:void 0},a.item={role:"user",host:"dynamic",context:"from-sip"},g.get({controller:"internal"}).$promise.then(function(b){a.item.internal=b.value})["catch"](function(a){d.error(a)})},a.next=function(){c.wizard().next()},a.exitValidation=function(a){return a},a.createItem=function(){return f.save(a.item).$promise.then(function(){b.path("/staff/users/list")})["catch"](function(a){d.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff.users.wizard",{url:"/wizard",templateUrl:"app/staff/user/wizard/wizard.html",controller:"UserWizardCtrl"})}]),angular.module("xCallyShuttleApp").controller("SugarcrmListCtrl",["$scope","SugarcrmAccount","gridOptions","xAlert","$translate","Modal",function(a,b,c,d,e,f){a.initView=function(){var d={exporterCsvFilename:"sugarcrm_account.csv",columnDefs:[{name:"name",displayName:"APPLICATION_NAME"},{name:"username"},{name:"remoteUri",displayName:"APPLICATION_REMOTE_ADDRESS"},{name:"action",width:250,buttons:[{"class":"blue-hoki",href:"/sugarcrm/view/{{row.entity.id}}/account",name:"profile"},{"class":"green-jungle",name:"check",onClick:"grid.appScope.checkAccount(row.entity.id)"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(b,d,a)},a.checkAccount=function(a){return b.get({id:a,controller:"check"}).$promise.then(function(){d.show(e.instant("MESSAGE_ACCOUNT_VERIFIED"),"success")})["catch"](function(a){d.show(e.instant("MESSAGE_ACCOUNT_INVALID"),"danger")})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.sugarcrm.list",{url:"/list",templateUrl:"app/sugarcrm/list/list.html",controller:"SugarcrmListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{name:"smart-table",insertBefore:"#ng_load_plugins_before",files:["assets/css/smart_table.css"]}])}]}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.sugarcrm",{url:"/sugarcrm",template:"
","abstract":!0,data:{permissions:{only:["admin"],redirectTo:"main.dashboard.voice"}}})}]),angular.module("xCallyShuttleApp").factory("SugarcrmAccount",["$resource",function(a){return a("/api/sugarcrm/accounts/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("SugarcrmConfiguration",["$resource",function(a){return a("/api/sugarcrm/configurations/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("SugarcrmField",["$resource",function(a){return a("/api/sugarcrm/fields/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").controller("SugarcrmViewCtrl",["$scope","$http","$stateParams","$translate","$location","$filter","WizardHandler","socket","xAlert","Modal",function(a,b,c,d,e,f,g,h,i,j){a.$stateParams=c,a.config={autoHideScrollbar:!1,theme:"dark",advanced:{updateOnContentResize:!0},setHeight:500,scrollInertia:0},a.initConfiguration=function(){a.formsConfiguration={},a.configuration={}},a.goNext=function(){g.wizard().next()},a.formValidation=function(a){return a},a.$on("$destroy",function(){h.unsyncUpdates("sugarcrm_configuration"),h.unsyncUpdates("sugarcrm_field")}),a.initView=function(){b.get("/api/sugarcrm/accounts/"+c.id).success(function(b){a.account=b}).error(function(a){i.error(a)})},a.updateItem=function(){b.put("/api/sugarcrm/accounts/"+c.id,a.account).success(function(){i.show(d.instant("MESSAGE_WELL_DONE")+".","success")}).error(function(){i.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG")+".","danger")})},a.getConfigurations=function(){b.get("/api/sugarcrm/configurations",{params:{AccountId:c.id}}).success(function(b){a.configurations=b,h.socket.on("sugarcrm_configuration:remove",function(b){_.remove(a.configurations,{id:b.id})})}).error(function(a){i.error(a)})},a.deleteConfiguration=j.confirm["delete"](function(a){b["delete"]("api/sugarcrm/configurations/"+a).success(function(){i.show(d.instant("MESSAGE_WELL_DONE"),"success")}).error(function(){i.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})}),a.createConfiguration=function(){a.configuration.AccountId=c.id,b.post("api/sugarcrm/configurations",a.configuration).success(function(a){e.path("sugarcrm/view/"+c.id+"/configurations/settings/"+a.id)}).error(function(){i.show("Something went wrong!","danger")})},a.fieldType=["string","variable"],a.descFieldType=["string","key_value"],a.getFields=function(){b.get("/api/sugarcrm/accounts/"+c.id+"/fields").success(function(b){a.accountFields=_.sortByOrder(f("sugarcrm")(_.toArray(b)),"name","asc"),_.forEach(b,function(a){a.options=_.toArray(a.options)})}).error(function(a){i.error(a)})},a.getConfiguration=function(){b.get("/api/sugarcrm/configurations/"+c.configurationId).success(function(b){a.configurationName=b.name,a.subjectConfig=b.Subject,a.descriptionConfig=b.Description,a.fieldConfig=b.Field,h.socket.on("sugarcrm_field:remove",function(b){_.remove(a.subjectConfig,{id:b.id}),_.remove(a.descriptionConfig,{id:b.id}),_.remove(a.fieldConfig,{id:b.id})})}).error(function(a){i.error(a)})},a.getVariables=function(){b.get("/api/variables").success(function(b){a.variables=b.rows}).error(function(a){i.error(a)})},a.removeItem=function(a){b["delete"]("api/sugarcrm/fields/"+a.id).success(function(){i.show(d.instant("MESSAGE_WELL_DONE"),"success")}).error(function(){i.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})},a.addItemSubject=function(){var d={type:"string",content:""};b.post("/api/sugarcrm/configurations/"+c.configurationId+"/subject",d).success(function(b){a.subjectConfig.push(b)}).error(function(){i.show("Something went wrong!","danger")})},a.addItemDescription=function(){var d={type:"string",content:""};b.post("/api/sugarcrm/configurations/"+c.configurationId+"/description",d).success(function(b){a.descriptionConfig.push(b)}).error(function(){i.show("Something went wrong!","danger")})},a.addItemField=function(){var d={content:""};b.post("/api/sugarcrm/configurations/"+c.configurationId+"/field",d).success(function(b){a.fieldConfig.push(b)}).error(function(){i.show("Something went wrong!","danger")})},a.updateField=function(a){b.put("/api/sugarcrm/fields/"+a.id,a).success(function(){}).error(function(){i.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG")+".","danger")})},a.changeType=function(b){"variable"===b.type?b.content="":"string"===b.type&&(b.VariableId=null),a.updateField(b)},a.changeDescType=function(b){"key_value"===b.type?(b.content="","string"===b.keyType?b.VariableId=null:"variable"===b.keyType&&(b.keyContent="")):"string"===b.type&&(b.VariableId=null,b.key="",b.keyContent=""),a.updateField(b)},a.changeFieldType=function(b){b.content="",a.updateField(b)},a.getSystemFieldOptions=function(b){if(b){var c=_.find(a.accountFields,"name",b);return c?c.options.length>0?c.options:null:void 0}}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.sugarcrm.view",{url:"/view/:id",templateUrl:"app/sugarcrm/view/view.html",controller:"SugarcrmViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.sugarcrm.view.account",{url:"/account",templateUrl:"app/sugarcrm/view/view.account.html"}).state("main.sugarcrm.view.configurations",{url:"/configurations",templateUrl:"app/sugarcrm/view/view.configurations.html"}).state("main.sugarcrm.view.configurations.settings",{url:"/settings/:configurationId",templateUrl:"app/sugarcrm/view/view.configurationSettings.html",controller:"SugarcrmViewCtrl"}).state("main.sugarcrm.view.configuration",{url:"/configuration",templateUrl:"app/sugarcrm/view/view.configuration.html"})}]),angular.module("xCallyShuttleApp").controller("SugarcrmkWizardCtrl",["$scope","$http","$location","$translate","xAlert","WizardHandler",function(a,b,c,d,e,f){a.translate=d,a.initWizard=function(){a.$translate=d,a.forms={},a.item={}},a.next=function(){f.wizard().next()},a.exitValidation=function(a){return a},a.createItem=function(){b.post("api/sugarcrm/accounts",a.item).success(function(){e.show(d.instant("MESSAGE_WELL_DONE")+".","success"),c.path("/sugarcrm/list")}).error(function(){e.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG")+".","danger")})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.sugarcrm.wizard",{url:"/wizard",templateUrl:"app/sugarcrm/wizard/wizard.html",controller:"SugarcrmkWizardCtrl"})}]),angular.module("xCallyShuttleApp").factory("CannedAnswer",["$resource",function(a){return a("/api/answers/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.answers",{url:"/answers",template:"
","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:13}}})}]),angular.module("xCallyShuttleApp").controller("AnswerListCtrl",["$scope","$uibModal","CannedAnswer","gridOptions",function(a,b,c,d){a.initView=function(){var b={exporterCsvFilename:"answers.csv",columnDefs:[{name:"key",displayName:"APPLICATION_NAME"},{name:"value"},{name:"description"},{name:"action",width:75,buttons:[{"class":"blue-hoki",href:"/tools/answers/view/{{row.entity.id}}/settings",name:"settings"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.key, row.entity.id)"}]}]};a.gridOptions=d.gridOptions(c,b,a)},a.createItem=function(){b.open({animation:!0,templateUrl:"app/tools/answer/list/list.create.modal.html",controller:"AnswerListCreateCtrl"}).result.then(function(b){a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("AnswerListCreateCtrl",["$scope","$translate","$uibModalInstance","CannedAnswer","xAlert",function(a,b,c,d,e){a.form={},a.item={},a.save=function(){return d.save(a.item).$promise.then(function(a){e.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)})["catch"](function(a){e.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.answers.list",{url:"/list",templateUrl:"app/tools/answer/list/list.html",controller:"AnswerListCtrl"})}]),angular.module("xCallyShuttleApp").controller("AnswerViewCtrl",["$scope","$http","xAlert","$translate","$stateParams","$location","CannedAnswer",function(a,b,c,d,e,f,g){a.getAnswer=function(){return g.get({id:e.id}).$promise.then(function(b){a.answer=b})["catch"](function(a){c.error(a)})},a.updateAnswer=function(){var b=angular.copy(a.answer);return g.update({id:e.id},b).$promise.then(function(){c.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){c.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.answers.view",{url:"/view/:id",templateUrl:"app/tools/answer/view/view.html",controller:"AnswerViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.tools.answers.view.settings",{url:"/settings",templateUrl:"app/tools/answer/view/view.settings.html"})}]),angular.module("xCallyShuttleApp").factory("Automation",["$resource",function(a){return a("/api/automations/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.automations",{url:"/automations",template:"
","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:13}}})}]),angular.module("xCallyShuttleApp").controller("AutomationListCtrl",["$scope","$http","$translate","xAlert","Automation","gridOptions",function(a,b,c,d,e,f){a.onText="On",a.offText="Off",a.isActive=!0,a.size="mini",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.initView=function(){var b={exporterCsvFilename:"Automations.csv",columnDefs:[{name:"name"},{name:"description"},{name:"channel"},{name:"status",cellTemplate:'
',width:100,enableFiltering:!1},{name:"action",width:75,buttons:[{"class":"blue-hoki",href:"/tools/automations/view/{{row.entity.id}}/settings",name:"settings"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=f.gridOptions(e,b,a)},a.updateItem=function(a){return e.update({id:a.id},a).$promise.then(function(){d.show(c.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){console.error(a),d.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.automations.list",{url:"/list",templateUrl:"app/tools/automation/list/list.html",controller:"AutomationListCtrl"})}]),angular.module("xCallyShuttleApp").controller("AutomationViewCtrl",["$scope","$stateParams","$http","$translate","xAlert","automations","Automation","$location",function(a,b,c,d,e,f,g,h){a.$automations=f,a.recordSwitch={onText:"On",offText:"Off",isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.forms={general:{}},a.addCondition=function(b){a.automation[b].push({field:"",operator:"",value:""})},a.removeCondition=function(b,c){a.automation[b].splice(c,1)},a.addAction=function(){a.automation.Actions.push({action:"",data1:"",data2:"",data3:"",data4:"",data5:""})},a.resetActionData=function(a){a.data1="",a.data2="",a.data3="",a.data4="",a.data5=""},a.removeAction=function(b){a.automation.Actions.splice(b,1)},a.initView=function(){return g.get({id:b.id}).$promise.then(function(b){a.automation=b})["catch"](function(a){e.error(a),h.path("/tools/automations/list")})},a.updateAutomation=function(){return g.update({id:b.id},a.automation).$promise.then(function(){e.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){console.error(a),e.error(a)})},a.exitValidation=function(b){return console.log(b&&(a.automation.All.length||a.automation.Any.length)&&a.automation.Actions.length),!(!b||!a.automation.All.length&&!a.automation.Any.length||!a.automation.Actions.length)}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.automations.view",{url:"/view/:id",templateUrl:"app/tools/automation/view/view.html",controller:"AutomationViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/css/profile.css","assets/css/tasks.css"]})}]}}).state("main.tools.automations.view.settings",{url:"/settings",templateUrl:"app/tools/automation/view/view.settings.html"}).state("main.tools.automations.view.routes",{url:"/routes",templateUrl:"app/tools/automation/view/view.routes.html"}).state("main.tools.automations.view.application",{url:"/application",templateUrl:"app/tools/automation/view/view.application.html"})}]),angular.module("xCallyShuttleApp").controller("AutomationWizardCtrl",["$scope","$http","$location","xAlert","automations","WizardHandler","Automation",function(a,b,c,d,e,f,g){a.$automations=e,a.statusSwitch={onText:"On",offText:"Off",isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.tempData={voice:{},mail:{},chat:{},fax:{}},a.item={All:[],Any:[],Actions:[]},a.forms={general:void 0,settings:void 0},a.addCondition=function(b){a.item[b].push({field:"",operator:"",value:""})},a.removeCondition=function(b,c){a.item[b].splice(c,1)},a.addAction=function(){a.item.Actions.push({action:"",data1:"",data2:"",data3:"",data4:"",data5:""})},a.resetActionData=function(a){a.data1="",a.data2="",a.data3="",a.data4="",a.data5=""},a.removeAction=function(b){a.item.Actions.splice(b,1)},a.$watch("item.channel",function(b,c){c&&(a.tempData[c].All=_.clone(a.item.All,!0),a.tempData[c].Any=_.clone(a.item.Any,!0),a.tempData[c].Actions=_.clone(a.item.Actions,!0)),a.item.All=a.tempData[b].All?a.tempData[b].All:[],a.item.Any=a.tempData[b].Any?a.tempData[b].Any:[],a.item.Actions=a.tempData[b].Actions?a.tempData[b].Actions:[]},!0),a.item.channel="mail",a.createItem=function(){return g.save(a.item).$promise.then(function(){c.path("/tools/automations/list")})["catch"](function(a){console.error(a),d.error(a)})},a.next=function(){f.wizard().next()},a.previous=function(){f.wizard().previous()},a.exitValidation=function(a){return a},a.exitSettingsValidation=function(b){return!(!b||!a.item.All.length&&!a.item.Any.length||!a.item.Actions.length)}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.automations.wizard",{url:"/wizard",templateUrl:"app/tools/automation/wizard/wizard.html",controller:"AutomationWizardCtrl"})}]),angular.module("xCallyShuttleApp").factory("Interval",["$resource",function(a){return a("/api/intervals/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.intervals",{url:"/intervals",template:"
","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:13}}})}]),angular.module("xCallyShuttleApp").controller("IntervalListCtrl",["$scope","$uibModal","Interval","gridOptions",function(a,b,c,d){a.initView=function(){var b={exporterCsvFilename:"intervals.csv",columnDefs:[{name:"name"},{name:"description"},{name:"action",width:75,buttons:[{"class":"blue-hoki",href:"/tools/intervals/view/{{row.entity.id}}/settings",name:"settings"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=d.gridOptions(c,b,a)},a.createItem=function(){var c=b.open({animation:!0,templateUrl:"app/tools/interval/list/list.create.modal.html",controller:"IntervalListCreateCtrl"});c.result.then(function(b){console.log(b),a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("IntervalListCreateCtrl",["$scope","$translate","$uibModalInstance","Interval","xAlert",function(a,b,c,d,e){a.form={},a.item={},a.save=function(){return d.save(a.item).$promise.then(function(a){e.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)})["catch"](function(a){e.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.intervals.list",{url:"/list",templateUrl:"app/tools/interval/list/list.html",controller:"IntervalListCtrl"})}]),angular.module("xCallyShuttleApp").controller("IntervalViewCtrl",["$scope","$http","xAlert","$translate","$stateParams","socket","$location","WizardHandler","Modal","interval",function(a,b,c,d,e,f,g,h,i,j){function k(b){var c,d,e,f;c=b.t_from&&b.t_to&&!b.alwaysTime?moment(b.t_from).format("HH:mm")+"-"+moment(b.t_to).format("HH:mm"):"*",b.wd_from&&"always"!==b.wd_from?(d=b.wd_from,b.wd_to&&"always"!==b.wd_to&&(d+="-"+b.wd_to)):d="*",b.md_from&&"always"!==b.md_from?(e=b.md_from,b.md_to&&"always"!==b.md_to&&(e+="-"+b.md_to)):e="*",b.m_from&&"always"!==b.m_from?(f=b.m_from,b.m_to&&"always"!==b.m_to&&(f+="-"+b.m_to)):f="*",void 0!==a.selectedSubInterval?a.interval.SubIntervals[a.selectedSubInterval].interval=c+","+d+","+e+","+f:a.subinterval.interval=c+","+d+","+e+","+f}a.$translate=d,a.$interval=j.interval,a.selectedSubInterval=void 0,a["switch"]={isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.gridOptions={columnDefs:[{name:"name",displayName:"APPLICATION_NAME",headerCellFilter:"translate"},{name:"interval",displayName:"APPLICATION_INTERVAL",headerCellFilter:"translate"},{name:"action",displayName:"APPLICATION_ACTION",headerCellFilter:"translate",width:125,cellTemplate:'{{\'APPLICATION_SETTINGS\' | translate}}{{\'APPLICATION_DELETE\' | translate}}'}]},a.forms={subinterval:void 0,general:void 0},a.initSubInterval=function(b){b&&(a.selectedSubInterval=void 0),a.subinterval={},a.splittedInterval={t_from:moment(new Date),t_to:moment(new Date),wd_from:"always",wd_to:"always",md_from:"always",md_to:"always",m_from:"always",m_to:"always",alwaysTime:!0}},a.next=function(){h.wizard().next()},a.previous=function(){h.wizard().previous()},a.exitValidation=function(a){return a},a.deselectAndRedirect=function(b){a.selectedSubInterval=void 0,g.path(b)},a.getInterval=function(){b.get("/api/intervals/"+e.id).success(function(b){a.interval=b,a.gridOptions.data=b.SubIntervals}).error(function(a){console.error(a),g.path("/tools/intervals/list")})},a.openSubInterval=function(b){a.selectedSubInterval=b,g.path("/tools/intervals/view/"+e.id+"/subintervals/settings")},a.updateInterval=function(f){a.selectedSubInterval=void 0,b.put("/api/intervals/"+e.id,a.interval).success(function(){a.getInterval(),c.show(d.instant("MESSAGE_WELL_DONE")+"!","success"),f&&g.path("/tools/intervals/view/"+e.id+"/"+f)}).error(function(a){c.error(a)})},a.getSubInterval=function(){void 0===a.selectedSubInterval&&g.path("/tools/intervals/list"),a.splittedInterval={t_from:moment(new Date),t_to:moment(new Date)};var b,c=a.interval.SubIntervals[a.selectedSubInterval]?a.interval.SubIntervals[a.selectedSubInterval].interval.split(","):["*","*","*","*"];c.forEach(function(c,d){switch(d){case 0:"*"!==c?(b=c.split("-"),a.splittedInterval.t_from=moment(b[0],"HH:mm"),a.splittedInterval.t_to=moment(b[1],"HH:mm"),a.splittedInterval.alwaysTime=!1):(a.splittedInterval.t_from=moment(new Date),a.splittedInterval.t_to=moment(new Date),a.splittedInterval.alwaysTime=!0);break;case 1:"*"!==c?(b=c.split("-"),a.splittedInterval.wd_from=b[0],a.splittedInterval.wd_to=b[1]?b[1]:"always"):(a.splittedInterval.wd_from="always",a.splittedInterval.wd_to="always");break;case 2:"*"!==c?(b=c.split("-"),a.splittedInterval.md_from=b[0],a.splittedInterval.md_to=b[1]?b[1]:"always"):(a.splittedInterval.md_from="always",a.splittedInterval.md_to="always");break;case 3:"*"!==c?(b=c.split("-"),a.splittedInterval.m_from=b[0],a.splittedInterval.m_to=b[1]?b[1]:"always"):(a.splittedInterval.m_from="always",a.splittedInterval.m_to="always")}})},a.$watch("splittedInterval",function(a){a&&k(a)},!0),a.addSubInterval=function(){a.interval.SubIntervals.push(a.subinterval),a.updateInterval("subintervals")},a.deleteSubInterval=i.confirm["delete"](function(b){a.interval.SubIntervals.splice(b,1),a.updateInterval()})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.intervals.view",{url:"/view/:id",templateUrl:"app/tools/interval/view/view.html",controller:"IntervalViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.tools.intervals.view.settings",{url:"/settings",templateUrl:"app/tools/interval/view/view.settings.html"}).state("main.tools.intervals.view.subintervals",{url:"/subintervals",templateUrl:"app/tools/interval/view/view.subintervals.html"}).state("main.tools.intervals.view.subinterval",{url:"/subinterval",templateUrl:"app/tools/interval/view/view.subinterval.html"}).state("main.tools.intervals.view.subintervals.settings",{url:"/settings",templateUrl:"app/tools/interval/view/view.subintervalSettings.html"})}]),angular.module("xCallyShuttleApp").controller("PauseListCtrl",["$scope","$log","$uibModal","$translate","Pause","gridOptions",function(a,b,c,d,e,f){ +controller3:"queues"}).$promise}).then(function(a){c.queues=_.map(a,function(a){return{name:a.name}})}).then(function(){ComponentsDropdowns.bindPermit(a,c,"voice",b.id,f)})["catch"](function(a){console.error(a)})},a.initChatQueues=function(){var a={},c={};return k.get().$promise.then(function(c){return a.queues=_.map(c.rows,function(a){return{id:a.id,name:a.name}}),f.query({id:b.id,controller:"allowed",controller2:"chat",controller3:"queues"}).$promise}).then(function(a){c.queues=_.map(a,function(a){return{id:a.id,name:a.name}})}).then(function(){ComponentsDropdowns.bindPermit(a,c,"chat",b.id,f)})["catch"](function(a){console.error(a)})},a.initMailQueues=function(){var a={},c={};return i.get().$promise.then(function(c){return a.queues=_.map(c.rows,function(a){return{id:a.id,name:a.name}}),f.query({id:b.id,controller:"allowed",controller2:"mail",controller3:"queues"}).$promise}).then(function(a){c.queues=_.map(a,function(a){return{id:a.id,name:a.name}})}).then(function(){ComponentsDropdowns.bindPermit(a,c,"mail",b.id,f)})["catch"](function(a){console.error(a)})},a.initSmsQueues=function(){var a={},c={};return m.get().$promise.then(function(c){return a.queues=_.map(c.rows,function(a){return{id:a.id,name:a.name}}),f.query({id:b.id,controller:"allowed",controller2:"sms",controller3:"queues"}).$promise}).then(function(a){c.queues=_.map(a,function(a){return{id:a.id,name:a.name}})}).then(function(){ComponentsDropdowns.bindPermit(a,c,"sms",b.id,f)})["catch"](function(a){console.error(a)})},a.initFaxQueues=function(){var a={},c={};return l.get().$promise.then(function(c){return a.queues=_.map(c.rows,function(a){return{id:a.id,name:a.name}}),f.query({id:b.id,controller:"allowed",controller2:"fax",controller3:"queues"}).$promise}).then(function(a){c.queues=_.map(a,function(a){return{id:a.id,name:a.name}})}).then(function(){ComponentsDropdowns.bindPermit(a,c,"fax",b.id,f)})["catch"](function(a){console.error(a)})},a.initOpenchannelQueues=function(){var a={},c={};return n.get().$promise.then(function(c){return a.queues=_.map(c.rows,function(a){return{id:a.id,name:a.name}}),f.query({id:b.id,controller:"allowed",controller2:"openchannel",controller3:"queues"}).$promise}).then(function(a){c.queues=_.map(a,function(a){return{id:a.id,name:a.name}})}).then(function(){ComponentsDropdowns.bindPermit(a,c,"openchannel",b.id,f)})["catch"](function(a){console.error(a)})},a.initView=function(){return f.get({id:b.id}).$promise.then(function(b){return a.user=b,a.user.transport=a.user.transport?a.user.transport.split(","):[],a.user.allow=a.user.allow?a.user.allow.split(";"):[],q.get({id:1}).$promise}).then(function(b){a.setting=b})["catch"](function(a){h.error(a)})},a.updateItem=function(){var c=angular.copy(a.user);return delete c.password,delete c.md5secret,c.transport=c.transport.join(","),c.allow=c.allow.join(";"),f.update({id:b.id},c).$promise.then(function(){h.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){h.error(a)})},a.updatePassword=function(){var c={newPassword:a.user.newPwd};return g.isAdmin()?c.id=b.id:c.oldPassword=a.user.currentPwd,f.changePassword(c).$promise.then(function(){h.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){h.error(a)})};var v=a.uploader=new e({url:"api/users/"+b.id+"/avatar",queueLimit:1,withCredentials:!0,headers:{Authorization:"Bearer "+c.get("token")}});v.filters.push({name:"imageFilter",fn:function(a){var b="|"+a.type.slice(a.type.lastIndexOf("/")+1)+"|";return-1!=="|jpg|png|jpeg|".indexOf(b)}}),a.getModules=function(){return a.associatedModules=[],p.get().$promise.then(function(c){return a.modules=_.filter(c.rows,function(a){return!a.ModuleId}),f.query({id:b.id,controller:"allowed",controller2:"modules"}).$promise}).then(function(b){t(b,a.modules)})["catch"](function(a){h.error(a)})},a.updatePermissions=function(c){c.ModuleId&&r(c),c.SubModules&&c.SubModules.length&&s(c.SubModules,c.status);var e=u([],a.modules);return f.save({id:b.id,controller:"allowed",controller2:"modules"},{modules:e}).$promise.then(function(){h.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){h.error(a)})},v.onSuccessItem=function(b,c){a.user.userpic=c.userpic,a.user.id===g.getCurrentUser().id&&(g.getCurrentUser().userpic=c.userpic),h.show(d.instant("MESSAGE_WELL_DONE"),"success")},v.onErrorItem=function(){h.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")},v.onCompleteAll=function(){v.clearQueue()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff.users.view",{url:"/view/:id",templateUrl:"app/staff/user/view/view.html",controller:"UserViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.staff.users.view.account",{url:"/account",templateUrl:"app/staff/user/view/view.account.html",resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css","assets/scripts/jquery.sparkline.min.js","assets/plugins/bootstrap-fileinput/bootstrap-fileinput.js","assets/scripts/profile.js"]})}]}}).state("main.staff.users.view.voice",{url:"/voice",templateUrl:"app/staff/user/view/view.voice.html",data:{permissions:{only:["admin"],redirectTo:"main.dashboard.voice"}}}).state("main.staff.users.view.permit",{url:"/permit",templateUrl:"app/staff/user/view/view.permit.html",data:{permissions:{only:["admin"],redirectTo:"main.dashboard.voice"}},cache:!1,serie:!0,resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/jquery-multi-select/css/multi-select.css","assets/plugins/jquery-multi-select/js/jquery.multi-select.js","assets/plugins/jquery-quicksearch/jquery.quicksearch.js","assets/scripts/components-dropdowns.js"]})}]}}).state("main.staff.users.view.permit.voice",{url:"/voice",templateUrl:"app/staff/user/view/view.permit.voice.html",data:{permissions:{only:["admin"],redirectTo:"main.dashboard.voice"}}}).state("main.staff.users.view.permit.chat",{url:"/chat",templateUrl:"app/staff/user/view/view.permit.chat.html",data:{permissions:{only:["admin"],redirectTo:"main.dashboard.chat"}}}).state("main.staff.users.view.permit.mail",{url:"/mail",templateUrl:"app/staff/user/view/view.permit.mail.html",data:{permissions:{only:["admin"],redirectTo:"main.dashboard.mail"}}}).state("main.staff.users.view.permit.fax",{url:"/fax",templateUrl:"app/staff/user/view/view.permit.fax.html",data:{permissions:{only:["admin"],redirectTo:"main.dashboard.fax"}}}).state("main.staff.users.view.permit.sms",{url:"/sms",templateUrl:"app/staff/user/view/view.permit.sms.html",data:{permissions:{only:["admin"],redirectTo:"main.dashboard.sms"}}}).state("main.staff.users.view.permit.openchannel",{url:"/openchannel",templateUrl:"app/staff/user/view/view.permit.openchannel.html",data:{permissions:{only:["admin"],redirectTo:"main.dashboard.openchannel"}}}).state("main.staff.users.view.permit.modules",{url:"/modules",templateUrl:"app/staff/user/view/view.permit.modules.html",data:{permissions:{only:["admin"],redirectTo:"main.dashboard.voice"}}})}]),angular.module("xCallyShuttleApp").controller("UserWizardCtrl",["$scope","$location","WizardHandler","xAlert","$translate","User","Setting","Auth",function(a,b,c,d,e,f,g,h){a.initWizard=function(){return a.Auht=h,a.forms={info:void 0,voice:void 0},a.item={role:"user",host:"dynamic",context:"from-sip"},g.get({controller:"internal"}).$promise.then(function(b){a.item.internal=b.value})["catch"](function(a){d.error(a)})},a.next=function(){c.wizard().next()},a.exitValidation=function(a){return a},a.createItem=function(){return f.save(a.item).$promise.then(function(a){b.path("user"===a.role?"/staff/users/view/"+a.id+"/permit/voice":"/staff/users/view/"+a.id+"/account")})["catch"](function(a){d.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff.users.wizard",{url:"/wizard",templateUrl:"app/staff/user/wizard/wizard.html",controller:"UserWizardCtrl"})}]),angular.module("xCallyShuttleApp").controller("SugarcrmListCtrl",["$scope","SugarcrmAccount","gridOptions","xAlert","$translate","Modal",function(a,b,c,d,e,f){a.initView=function(){var d={exporterCsvFilename:"sugarcrm_account.csv",columnDefs:[{name:"name",displayName:"APPLICATION_NAME"},{name:"username"},{name:"remoteUri",displayName:"APPLICATION_REMOTE_ADDRESS"},{name:"action",width:250,buttons:[{"class":"blue-hoki",href:"/sugarcrm/view/{{row.entity.id}}/account",name:"profile"},{"class":"green-jungle",name:"check",onClick:"grid.appScope.checkAccount(row.entity.id)"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(b,d,a)},a.checkAccount=function(a){return b.get({id:a,controller:"check"}).$promise.then(function(){d.show(e.instant("MESSAGE_ACCOUNT_VERIFIED"),"success")})["catch"](function(a){d.show(e.instant("MESSAGE_ACCOUNT_INVALID"),"danger")})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.sugarcrm.list",{url:"/list",templateUrl:"app/sugarcrm/list/list.html",controller:"SugarcrmListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{name:"smart-table",insertBefore:"#ng_load_plugins_before",files:["assets/css/smart_table.css"]}])}]}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.sugarcrm",{url:"/sugarcrm",template:"
","abstract":!0,data:{permissions:{only:["admin"],redirectTo:"main.dashboard.voice"}}})}]),angular.module("xCallyShuttleApp").factory("SugarcrmAccount",["$resource",function(a){return a("/api/sugarcrm/accounts/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("SugarcrmConfiguration",["$resource",function(a){return a("/api/sugarcrm/configurations/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("SugarcrmField",["$resource",function(a){return a("/api/sugarcrm/fields/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").controller("SugarcrmViewCtrl",["$scope","$http","$stateParams","$translate","$location","$filter","WizardHandler","socket","xAlert","Modal",function(a,b,c,d,e,f,g,h,i,j){a.$stateParams=c,a.config={autoHideScrollbar:!1,theme:"dark",advanced:{updateOnContentResize:!0},setHeight:500,scrollInertia:0},a.initConfiguration=function(){a.formsConfiguration={},a.configuration={}},a.goNext=function(){g.wizard().next()},a.formValidation=function(a){return a},a.$on("$destroy",function(){h.unsyncUpdates("sugarcrm_configuration"),h.unsyncUpdates("sugarcrm_field")}),a.initView=function(){b.get("/api/sugarcrm/accounts/"+c.id).success(function(b){a.account=b}).error(function(a){i.error(a)})},a.updateItem=function(){b.put("/api/sugarcrm/accounts/"+c.id,a.account).success(function(){i.show(d.instant("MESSAGE_WELL_DONE")+".","success")}).error(function(){i.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG")+".","danger")})},a.getConfigurations=function(){b.get("/api/sugarcrm/configurations",{params:{AccountId:c.id}}).success(function(b){a.configurations=b,h.socket.on("sugarcrm_configuration:remove",function(b){_.remove(a.configurations,{id:b.id})})}).error(function(a){i.error(a)})},a.deleteConfiguration=j.confirm["delete"](function(a){b["delete"]("api/sugarcrm/configurations/"+a).success(function(){i.show(d.instant("MESSAGE_WELL_DONE"),"success")}).error(function(){i.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})}),a.createConfiguration=function(){a.configuration.AccountId=c.id,b.post("api/sugarcrm/configurations",a.configuration).success(function(a){e.path("sugarcrm/view/"+c.id+"/configurations/settings/"+a.id)}).error(function(){i.show("Something went wrong!","danger")})},a.fieldType=["string","variable"],a.descFieldType=["string","key_value"],a.getFields=function(){b.get("/api/sugarcrm/accounts/"+c.id+"/fields").success(function(b){a.accountFields=_.sortByOrder(f("sugarcrm")(_.toArray(b)),"name","asc"),_.forEach(b,function(a){a.options=_.toArray(a.options)})}).error(function(a){i.error(a)})},a.getConfiguration=function(){b.get("/api/sugarcrm/configurations/"+c.configurationId).success(function(b){a.configurationName=b.name,a.subjectConfig=b.Subject,a.descriptionConfig=b.Description,a.fieldConfig=b.Field,h.socket.on("sugarcrm_field:remove",function(b){_.remove(a.subjectConfig,{id:b.id}),_.remove(a.descriptionConfig,{id:b.id}),_.remove(a.fieldConfig,{id:b.id})})}).error(function(a){i.error(a)})},a.getVariables=function(){b.get("/api/variables").success(function(b){a.variables=b.rows}).error(function(a){i.error(a)})},a.removeItem=function(a){b["delete"]("api/sugarcrm/fields/"+a.id).success(function(){i.show(d.instant("MESSAGE_WELL_DONE"),"success")}).error(function(){i.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")})},a.addItemSubject=function(){var d={type:"string",content:""};b.post("/api/sugarcrm/configurations/"+c.configurationId+"/subject",d).success(function(b){a.subjectConfig.push(b)}).error(function(){i.show("Something went wrong!","danger")})},a.addItemDescription=function(){var d={type:"string",content:""};b.post("/api/sugarcrm/configurations/"+c.configurationId+"/description",d).success(function(b){a.descriptionConfig.push(b)}).error(function(){i.show("Something went wrong!","danger")})},a.addItemField=function(){var d={content:""};b.post("/api/sugarcrm/configurations/"+c.configurationId+"/field",d).success(function(b){a.fieldConfig.push(b)}).error(function(){i.show("Something went wrong!","danger")})},a.updateField=function(a){b.put("/api/sugarcrm/fields/"+a.id,a).success(function(){}).error(function(){i.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG")+".","danger")})},a.changeType=function(b){"variable"===b.type?b.content="":"string"===b.type&&(b.VariableId=null),a.updateField(b)},a.changeDescType=function(b){"key_value"===b.type?(b.content="","string"===b.keyType?b.VariableId=null:"variable"===b.keyType&&(b.keyContent="")):"string"===b.type&&(b.VariableId=null,b.key="",b.keyContent=""),a.updateField(b)},a.changeFieldType=function(b){b.content="",a.updateField(b)},a.getSystemFieldOptions=function(b){if(b){var c=_.find(a.accountFields,"name",b);return c?c.options.length>0?c.options:null:void 0}}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.sugarcrm.view",{url:"/view/:id",templateUrl:"app/sugarcrm/view/view.html",controller:"SugarcrmViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.sugarcrm.view.account",{url:"/account",templateUrl:"app/sugarcrm/view/view.account.html"}).state("main.sugarcrm.view.configurations",{url:"/configurations",templateUrl:"app/sugarcrm/view/view.configurations.html"}).state("main.sugarcrm.view.configurations.settings",{url:"/settings/:configurationId",templateUrl:"app/sugarcrm/view/view.configurationSettings.html",controller:"SugarcrmViewCtrl"}).state("main.sugarcrm.view.configuration",{url:"/configuration",templateUrl:"app/sugarcrm/view/view.configuration.html"})}]),angular.module("xCallyShuttleApp").controller("SugarcrmkWizardCtrl",["$scope","$http","$location","$translate","xAlert","WizardHandler",function(a,b,c,d,e,f){a.translate=d,a.initWizard=function(){a.$translate=d,a.forms={},a.item={}},a.next=function(){f.wizard().next()},a.exitValidation=function(a){return a},a.createItem=function(){b.post("api/sugarcrm/accounts",a.item).success(function(){e.show(d.instant("MESSAGE_WELL_DONE")+".","success"),c.path("/sugarcrm/list")}).error(function(){e.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG")+".","danger")})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.sugarcrm.wizard",{url:"/wizard",templateUrl:"app/sugarcrm/wizard/wizard.html",controller:"SugarcrmkWizardCtrl"})}]),angular.module("xCallyShuttleApp").factory("CannedAnswer",["$resource",function(a){return a("/api/answers/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.answers",{url:"/answers",template:"
","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:13}}})}]),angular.module("xCallyShuttleApp").controller("AnswerListCtrl",["$scope","$uibModal","CannedAnswer","gridOptions",function(a,b,c,d){a.initView=function(){var b={exporterCsvFilename:"answers.csv",columnDefs:[{name:"key",displayName:"APPLICATION_NAME"},{name:"value"},{name:"description"},{name:"action",width:75,buttons:[{"class":"blue-hoki",href:"/tools/answers/view/{{row.entity.id}}/settings",name:"settings"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.key, row.entity.id)"}]}]};a.gridOptions=d.gridOptions(c,b,a)},a.createItem=function(){b.open({animation:!0,templateUrl:"app/tools/answer/list/list.create.modal.html",controller:"AnswerListCreateCtrl"}).result.then(function(b){a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("AnswerListCreateCtrl",["$scope","$translate","$uibModalInstance","CannedAnswer","xAlert",function(a,b,c,d,e){a.form={},a.item={},a.save=function(){return d.save(a.item).$promise.then(function(a){e.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)})["catch"](function(a){e.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.answers.list",{url:"/list",templateUrl:"app/tools/answer/list/list.html",controller:"AnswerListCtrl"})}]),angular.module("xCallyShuttleApp").controller("AnswerViewCtrl",["$scope","$http","xAlert","$translate","$stateParams","$location","CannedAnswer",function(a,b,c,d,e,f,g){a.getAnswer=function(){return g.get({id:e.id}).$promise.then(function(b){a.answer=b})["catch"](function(a){c.error(a)})},a.updateAnswer=function(){var b=angular.copy(a.answer);return g.update({id:e.id},b).$promise.then(function(){c.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){c.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.answers.view",{url:"/view/:id",templateUrl:"app/tools/answer/view/view.html",controller:"AnswerViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.tools.answers.view.settings",{url:"/settings",templateUrl:"app/tools/answer/view/view.settings.html"})}]),angular.module("xCallyShuttleApp").factory("Automation",["$resource",function(a){return a("/api/automations/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.automations",{url:"/automations",template:"
","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:13}}})}]),angular.module("xCallyShuttleApp").controller("AutomationListCtrl",["$scope","$http","$translate","xAlert","Automation","gridOptions",function(a,b,c,d,e,f){a.onText="On",a.offText="Off",a.isActive=!0,a.size="mini",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.initView=function(){var b={exporterCsvFilename:"Automations.csv",columnDefs:[{name:"name"},{name:"description"},{name:"channel"},{name:"status",cellTemplate:'
',width:100,enableFiltering:!1},{name:"action",width:75,buttons:[{"class":"blue-hoki",href:"/tools/automations/view/{{row.entity.id}}/settings",name:"settings"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=f.gridOptions(e,b,a)},a.updateItem=function(a){return e.update({id:a.id},a).$promise.then(function(){d.show(c.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){console.error(a),d.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.automations.list",{url:"/list",templateUrl:"app/tools/automation/list/list.html",controller:"AutomationListCtrl"})}]),angular.module("xCallyShuttleApp").controller("AutomationViewCtrl",["$scope","$stateParams","$http","$translate","xAlert","automations","Automation","$location",function(a,b,c,d,e,f,g,h){a.$automations=f,a.recordSwitch={onText:"On",offText:"Off",isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.forms={general:{}},a.addCondition=function(b){a.automation[b].push({field:"",operator:"",value:""})},a.removeCondition=function(b,c){a.automation[b].splice(c,1)},a.addAction=function(){a.automation.Actions.push({action:"",data1:"",data2:"",data3:"",data4:"",data5:""})},a.resetActionData=function(a){a.data1="",a.data2="",a.data3="",a.data4="",a.data5=""},a.removeAction=function(b){a.automation.Actions.splice(b,1)},a.initView=function(){return g.get({id:b.id}).$promise.then(function(b){a.automation=b})["catch"](function(a){e.error(a),h.path("/tools/automations/list")})},a.updateAutomation=function(){return g.update({id:b.id},a.automation).$promise.then(function(){e.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){console.error(a),e.error(a)})},a.exitValidation=function(b){return console.log(b&&(a.automation.All.length||a.automation.Any.length)&&a.automation.Actions.length),!(!b||!a.automation.All.length&&!a.automation.Any.length||!a.automation.Actions.length)}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.automations.view",{url:"/view/:id",templateUrl:"app/tools/automation/view/view.html",controller:"AutomationViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/css/profile.css","assets/css/tasks.css"]})}]}}).state("main.tools.automations.view.settings",{url:"/settings",templateUrl:"app/tools/automation/view/view.settings.html"}).state("main.tools.automations.view.routes",{url:"/routes",templateUrl:"app/tools/automation/view/view.routes.html"}).state("main.tools.automations.view.application",{url:"/application",templateUrl:"app/tools/automation/view/view.application.html"})}]),angular.module("xCallyShuttleApp").controller("AutomationWizardCtrl",["$scope","$http","$location","xAlert","automations","WizardHandler","Automation",function(a,b,c,d,e,f,g){a.$automations=e,a.statusSwitch={onText:"On",offText:"Off",isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.tempData={voice:{},mail:{},chat:{},fax:{}},a.item={All:[],Any:[],Actions:[]},a.forms={general:void 0,settings:void 0},a.addCondition=function(b){a.item[b].push({field:"",operator:"",value:""})},a.removeCondition=function(b,c){a.item[b].splice(c,1)},a.addAction=function(){a.item.Actions.push({action:"",data1:"",data2:"",data3:"",data4:"",data5:""})},a.resetActionData=function(a){a.data1="",a.data2="",a.data3="",a.data4="",a.data5=""},a.removeAction=function(b){a.item.Actions.splice(b,1)},a.$watch("item.channel",function(b,c){c&&(a.tempData[c].All=_.clone(a.item.All,!0),a.tempData[c].Any=_.clone(a.item.Any,!0),a.tempData[c].Actions=_.clone(a.item.Actions,!0)),a.item.All=a.tempData[b].All?a.tempData[b].All:[],a.item.Any=a.tempData[b].Any?a.tempData[b].Any:[],a.item.Actions=a.tempData[b].Actions?a.tempData[b].Actions:[]},!0),a.item.channel="mail",a.createItem=function(){return g.save(a.item).$promise.then(function(){c.path("/tools/automations/list")})["catch"](function(a){console.error(a),d.error(a)})},a.next=function(){f.wizard().next()},a.previous=function(){f.wizard().previous()},a.exitValidation=function(a){return a},a.exitSettingsValidation=function(b){return!(!b||!a.item.All.length&&!a.item.Any.length||!a.item.Actions.length)}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.automations.wizard",{url:"/wizard",templateUrl:"app/tools/automation/wizard/wizard.html",controller:"AutomationWizardCtrl"})}]),angular.module("xCallyShuttleApp").factory("Interval",["$resource",function(a){return a("/api/intervals/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.intervals",{url:"/intervals",template:"
","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:13}}})}]),angular.module("xCallyShuttleApp").controller("IntervalListCtrl",["$scope","$uibModal","Interval","gridOptions",function(a,b,c,d){a.initView=function(){var b={exporterCsvFilename:"intervals.csv",columnDefs:[{name:"name"},{name:"description"},{name:"action",width:75,buttons:[{"class":"blue-hoki",href:"/tools/intervals/view/{{row.entity.id}}/settings",name:"settings"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=d.gridOptions(c,b,a)},a.createItem=function(){var c=b.open({animation:!0,templateUrl:"app/tools/interval/list/list.create.modal.html",controller:"IntervalListCreateCtrl"});c.result.then(function(b){console.log(b),a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("IntervalListCreateCtrl",["$scope","$translate","$uibModalInstance","Interval","xAlert",function(a,b,c,d,e){a.form={},a.item={},a.save=function(){return d.save(a.item).$promise.then(function(a){e.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)})["catch"](function(a){e.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.intervals.list",{url:"/list",templateUrl:"app/tools/interval/list/list.html",controller:"IntervalListCtrl"})}]),angular.module("xCallyShuttleApp").controller("IntervalViewCtrl",["$scope","$http","xAlert","$translate","$stateParams","socket","$location","WizardHandler","Modal","interval",function(a,b,c,d,e,f,g,h,i,j){function k(b){var c,d,e,f;c=b.t_from&&b.t_to&&!b.alwaysTime?moment(b.t_from).format("HH:mm")+"-"+moment(b.t_to).format("HH:mm"):"*",b.wd_from&&"always"!==b.wd_from?(d=b.wd_from,b.wd_to&&"always"!==b.wd_to&&(d+="-"+b.wd_to)):d="*",b.md_from&&"always"!==b.md_from?(e=b.md_from,b.md_to&&"always"!==b.md_to&&(e+="-"+b.md_to)):e="*",b.m_from&&"always"!==b.m_from?(f=b.m_from,b.m_to&&"always"!==b.m_to&&(f+="-"+b.m_to)):f="*",void 0!==a.selectedSubInterval?a.interval.SubIntervals[a.selectedSubInterval].interval=c+","+d+","+e+","+f:a.subinterval.interval=c+","+d+","+e+","+f}a.$translate=d,a.$interval=j.interval,a.selectedSubInterval=void 0,a["switch"]={isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.gridOptions={columnDefs:[{name:"name",displayName:"APPLICATION_NAME",headerCellFilter:"translate"},{name:"interval",displayName:"APPLICATION_INTERVAL",headerCellFilter:"translate"},{name:"action",displayName:"APPLICATION_ACTION",headerCellFilter:"translate",width:125,cellTemplate:'{{\'APPLICATION_SETTINGS\' | translate}}{{\'APPLICATION_DELETE\' | translate}}'}]},a.forms={subinterval:void 0,general:void 0},a.initSubInterval=function(b){b&&(a.selectedSubInterval=void 0),a.subinterval={},a.splittedInterval={t_from:moment(new Date),t_to:moment(new Date),wd_from:"always",wd_to:"always",md_from:"always",md_to:"always",m_from:"always",m_to:"always",alwaysTime:!0}},a.next=function(){h.wizard().next()},a.previous=function(){h.wizard().previous()},a.exitValidation=function(a){return a},a.deselectAndRedirect=function(b){a.selectedSubInterval=void 0,g.path(b)},a.getInterval=function(){b.get("/api/intervals/"+e.id).success(function(b){a.interval=b,a.gridOptions.data=b.SubIntervals}).error(function(a){console.error(a),g.path("/tools/intervals/list")})},a.openSubInterval=function(b){a.selectedSubInterval=b,g.path("/tools/intervals/view/"+e.id+"/subintervals/settings")},a.updateInterval=function(f){a.selectedSubInterval=void 0,b.put("/api/intervals/"+e.id,a.interval).success(function(){a.getInterval(),c.show(d.instant("MESSAGE_WELL_DONE")+"!","success"),f&&g.path("/tools/intervals/view/"+e.id+"/"+f)}).error(function(a){c.error(a)})},a.getSubInterval=function(){void 0===a.selectedSubInterval&&g.path("/tools/intervals/list"),a.splittedInterval={t_from:moment(new Date),t_to:moment(new Date)};var b,c=a.interval.SubIntervals[a.selectedSubInterval]?a.interval.SubIntervals[a.selectedSubInterval].interval.split(","):["*","*","*","*"];c.forEach(function(c,d){switch(d){case 0:"*"!==c?(b=c.split("-"),a.splittedInterval.t_from=moment(b[0],"HH:mm"),a.splittedInterval.t_to=moment(b[1],"HH:mm"),a.splittedInterval.alwaysTime=!1):(a.splittedInterval.t_from=moment(new Date),a.splittedInterval.t_to=moment(new Date),a.splittedInterval.alwaysTime=!0);break;case 1:"*"!==c?(b=c.split("-"),a.splittedInterval.wd_from=b[0],a.splittedInterval.wd_to=b[1]?b[1]:"always"):(a.splittedInterval.wd_from="always",a.splittedInterval.wd_to="always");break;case 2:"*"!==c?(b=c.split("-"),a.splittedInterval.md_from=b[0],a.splittedInterval.md_to=b[1]?b[1]:"always"):(a.splittedInterval.md_from="always",a.splittedInterval.md_to="always");break;case 3:"*"!==c?(b=c.split("-"),a.splittedInterval.m_from=b[0],a.splittedInterval.m_to=b[1]?b[1]:"always"):(a.splittedInterval.m_from="always",a.splittedInterval.m_to="always")}})},a.$watch("splittedInterval",function(a){a&&k(a)},!0),a.addSubInterval=function(){a.interval.SubIntervals.push(a.subinterval),a.updateInterval("subintervals")},a.deleteSubInterval=i.confirm["delete"](function(b){a.interval.SubIntervals.splice(b,1),a.updateInterval()})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.intervals.view",{url:"/view/:id",templateUrl:"app/tools/interval/view/view.html",controller:"IntervalViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.tools.intervals.view.settings",{url:"/settings",templateUrl:"app/tools/interval/view/view.settings.html"}).state("main.tools.intervals.view.subintervals",{url:"/subintervals",templateUrl:"app/tools/interval/view/view.subintervals.html"}).state("main.tools.intervals.view.subinterval",{url:"/subinterval",templateUrl:"app/tools/interval/view/view.subinterval.html"}).state("main.tools.intervals.view.subintervals.settings",{url:"/settings",templateUrl:"app/tools/interval/view/view.subintervalSettings.html"})}]),angular.module("xCallyShuttleApp").controller("PauseListCtrl",["$scope","$log","$uibModal","$translate","Pause","gridOptions",function(a,b,c,d,e,f){ a.initView=function(){var b={exporterCsvFilename:"pauses.csv",columnDefs:[{name:"name"},{name:"description"},{name:"action",width:75,buttons:[{"class":"blue-hoki",href:"/tools/pauses/view/{{row.entity.id}}/settings",name:"settings"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=f.gridOptions(e,b,a)},a.createItem=function(){var b=c.open({animation:!0,templateUrl:"app/tools/pause/list/list.create.modal.html",controller:"PauseListCreateCtrl"});b.result.then(function(b){console.log(b),a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("PauseListCreateCtrl",["$scope","$translate","$uibModalInstance","Pause","xAlert",function(a,b,c,d,e){a.form={},a.item={},a.save=function(){return d.save(a.item).$promise.then(function(a){e.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)})["catch"](function(a){e.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.pauses.list",{url:"/list",templateUrl:"app/tools/pause/list/list.html",controller:"PauseListCtrl"})}]),angular.module("xCallyShuttleApp").factory("Pause",["$resource",function(a){return a("/api/pauses/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.pauses",{url:"/pauses",template:"
","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:13}}})}]),angular.module("xCallyShuttleApp").controller("PauseViewCtrl",["$scope","$http","xAlert","$translate","$stateParams","$location","Pause",function(a,b,c,d,e,f,g){a.getPause=function(){return g.get({id:e.id}).$promise.then(function(b){a.pause=b})["catch"](function(a){c.error(a)})},a.updatePause=function(){var b=angular.copy(a.pause);return g.update({id:e.id},b).$promise.then(function(){c.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){c.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.pauses.view",{url:"/view/:id",templateUrl:"app/tools/pause/view/view.html",controller:"PauseViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.tools.pauses.view.settings",{url:"/settings",templateUrl:"app/tools/pause/view/view.settings.html"})}]),angular.module("xCallyShuttleApp").controller("SchedulerListCtrl",["$scope","Scheduler","gridOptions","xAlert","$translate","socket",function(a,b,c,d,e,f){a._=_,a.switches={isActive:!0,size:"mini",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.scheduleTypes=[{name:"APPLICATION_REPORT_EXTRACTION",value:"report"},{name:"APPLICATION_HISTORY_MOVE",value:"history"},{name:"APPLICATION_DB_BACKUP",value:"backup"}],a.initView=function(){var d={exporterCsvFilename:"Schedules.csv",columnDefs:[{name:"name"},{name:"type",cellTemplate:'
{{grid.appScope._.find(grid.appScope.scheduleTypes,{value:row.entity.type}).name | translate}}
'},{name:"description"},{name:"active",cellTemplate:'
',enableFiltering:!1,enableSorting:!1},{name:"sendMail",displayName:"APPLICATION_SEND_MAIL",cellTemplate:'
',enableFiltering:!1,enableSorting:!1},{name:"action",width:100,buttons:[{"class":"blue-hoki",href:"/tools/scheduler/view/{{row.entity.id}}/settings",name:"settings"},{"class":"green-turquoise",name:"run",onClick:"grid.appScope.runSchedule(row.entity.id)"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(b,d,a)},a.updateItem=function(a){return b.update({id:a.id},a).$promise.then(function(){d.show(e.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){console.error(a),d.error(a)})},a.runSchedule=function(a){return b.get({id:a,controller:"run"}).$promise.then(function(){d.show(e.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){console.error(a),d.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.scheduler.list",{url:"/list",templateUrl:"app/tools/scheduler/list/list.html",controller:"SchedulerListCtrl"})}]),angular.module("xCallyShuttleApp").factory("Scheduler",["$resource",function(a){return a("/api/scheduler/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.scheduler",{url:"/scheduler",template:"
","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:13}}})}]),angular.module("xCallyShuttleApp").controller("SchedulerViewCtrl",["$scope","xAlert","$translate","$stateParams","socket","$location","ReportTree","Scheduler","DefaultReport","CustomReport","$timeout","MailServerOut",function(a,b,c,d,e,f,g,h,i,j,k,l){function m(){switch(a.schedule.cronType=a.rangeExec.type,a.rangeExec.type){case"daily":a.schedule.cron="00 "+a.rangeExec.hour+" * * *";break;case"weekly":a.schedule.cron="00 "+a.rangeExec.hour+" * * "+a.rangeExec.weekDays.join(",");break;case"monthly":a.schedule.cron="00 "+a.rangeExec.hour+" "+a.rangeExec.monthDay+" * *"}}function n(b){var c;switch(b.cronType){case"daily":a.rangeExec.hour=Number(b.cron.split(" ")[1]),a.rangeExec.type=b.cronType;break;case"weekly":c=b.cron.split(" "),a.rangeExec.hour=Number(c[1]),c[4].split(",").forEach(function(b){a.rangeExec.weekDays.push(Number(b))}),a.rangeExec.type=b.cronType;break;case"monthly":c=b.cron.split(" "),a.rangeExec.hour=Number(c[1]),a.rangeExec.monthDay=Number(c[2]),a.rangeExec.type=b.cronType;break;case"currentDay":a.switchValues.today=!0}a.$watch("rangeExec",function(b){a.switchValues.today||m()},!0)}a.forms={},a.rangeExec={weekDays:[],monthDay:null,hour:0,type:null},a.initReports=function(){var c;return a.reports=[],a.tempTodayCron=null,g.query().$promise.then(function(b){return a.defaultTreeData=JSON.parse(b[0].tree),a.customTreeData=JSON.parse(b[1].tree),i.get().$promise}).then(function(b){return a.defRep=b.rows,a.defRep.length&&_.forEach(a.defRep,function(b){c=_.find(a.defaultTreeData,{id:b.parent}),c&&(b.parent="Motion Reports - "+c.text,b.type="default")}),j.get().$promise}).then(function(b){return a.cusRep=b.rows,a.cusRep.length&&_.forEach(a.cusRep,function(b){c=_.find(a.customTreeData,{id:b.parent}),c&&(b.parent="Custom Reports - "+c.text,b.type="custom")}),l.get().$promise}).then(function(b){a.mailServers=b.rows})["catch"](function(a){b.error(a)})},a.initView=function(){return h.get({id:d.id}).$promise.then(function(b){a.schedule=b,n(b)}).then(function(){e.socket.on("schedule:update",function(b){a.schedule.id===b.id&&(a.schedule.active=b.active,a.schedule.sendMail=b.sendMail)})})["catch"](function(a){console.error(a),f.path("/tools/scheduler/list")})},a.refreshSlider=function(){k(function(){a.$broadcast("rzSliderForceRender"),a.refreshSlider=null})},a.monthDays=function(){for(var a=[],b=1;31>=b;b++)a.push(b);return a}(),a.hours=function(){for(var a=[],b=0;23>=b;b++)a.push(b);return a}(),a.setReportTree=function(b){a.schedule.reportType=b.type},a.validitySlider={ceil:24,floor:0,showTicks:!0},a.switchValues={today:!1},a.switches={isActive:!0,size:"mini",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.scheduleTypes=[{name:"APPLICATION_REPORT_EXTRACTION",value:"report"}],a.todayCron=[{name:"15 min",value:"*/15 * * * *"},{name:"30 min",value:"*/30 * * * *"},{name:"1 h",value:"0 * * * *"}],a.reportRanges=[{name:"APPLICATION_PREVIOUS_DAY",value:"yesterday"},{name:"APPLICATION_LAST_SEVEN_DAYS",value:"last7"},{name:"APPLICATION_LAST_THIRTY_DAYS",value:"last30"},{name:"APPLICATION_LAST_MONTH",value:"lastMonth"}],a.cronTypes=[{name:"APPLICATION_DAY",value:"daily"},{name:"APPLICATION_WEEK",value:"weekly"},{name:"APPLICATION_MONTH",value:"monthly"}],a.weekDays=[{name:"APPLICATION_MONDAY",value:1},{name:"APPLICATION_TUESDAY",value:2},{name:"APPLICATION_WEDNESDAY",value:3},{name:"APPLICATION_THURSDAY",value:4},{name:"APPLICATION_FRIDAY",value:5},{name:"APPLICATION_SATURDAY",value:6},{name:"APPLICATION_SUNDAY",value:0}],a.checkToday=function(){a.switchValues.today?(a.schedule.cron=angular.copy(a.tempTodayCron),a.schedule.cronType="currentDay"):(a.tempTodayCron=angular.copy(a.schedule.cron),a.schedule.cron=void 0,m())},a.updateSchedule=function(){return h.update({id:a.schedule.id},a.schedule).$promise.then(function(){b.show(c.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){console.error(a),b.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.scheduler.view",{url:"/view/:id",templateUrl:"app/tools/scheduler/view/view.html",controller:"SchedulerViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.tools.scheduler.view.settings",{url:"/settings",templateUrl:"app/tools/scheduler/view/view.settings.html"})}]),angular.module("xCallyShuttleApp").controller("SchedulerWizardCtrl",["$scope","WizardHandler","$location","xAlert","Scheduler","ReportTree","$translate","DefaultReport","CustomReport","MailServerOut",function(a,b,c,d,e,f,g,h,i,j){function k(){switch(a.item.cronType=a.rangeExec.type,a.rangeExec.type){case"daily":a.item.cron="00 "+a.rangeExec.hour+" * * *";break;case"weekly":a.item.cron="00 "+a.rangeExec.hour+" * * "+a.rangeExec.weekDays.join(",");break;case"monthly":a.item.cron="00 "+a.rangeExec.hour+" "+a.rangeExec.monthDay+" * *"}}a.forms={},a.item={validityStart:8,validityEnd:16,type:"report",reportType:"default"},a.initReports=function(){a.reports=[];var b;return f.query().$promise.then(function(b){return a.defaultTreeData=JSON.parse(b[0].tree),a.customTreeData=JSON.parse(b[1].tree),h.get().$promise}).then(function(c){return a.defRep=c.rows,a.defRep.length&&_.forEach(a.defRep,function(c){b=_.find(a.defaultTreeData,{id:c.parent}),b&&(c.parent="Motion Reports - "+b.text,c.type="default")}),i.get().$promise}).then(function(c){return a.cusRep=c.rows,a.cusRep.length&&_.forEach(a.cusRep,function(c){b=_.find(a.customTreeData,{id:c.parent}),b&&(c.parent="Custom Reports - "+b.text,c.type="custom")}),j.get().$promise}).then(function(b){a.mailServers=b.rows;var c=_.find(a.mailServers,{MailAccountId:null});c&&(c.username+=" (custom)")})["catch"](function(a){d.error(a)})},a.setReportTree=function(b){a.item.reportType=b.type},a.validitySlider={ceil:24,floor:0,showTicks:!0},a.switchValues={today:!1},a.switches={isActive:!0,size:"mini",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.scheduleTypes=[{name:"APPLICATION_REPORT_EXTRACTION",value:"report"}],a.todayCron=[{name:"15 min",value:"*/15 * * * *"},{name:"30 min",value:"*/30 * * * *"},{name:"1 h",value:"0 * * * *"}],a.reportRanges=[{name:"APPLICATION_PREVIOUS_DAY",value:"yesterday"},{name:"APPLICATION_LAST_SEVEN_DAYS",value:"last7"},{name:"APPLICATION_LAST_THIRTY_DAYS",value:"last30"},{name:"APPLICATION_LAST_MONTH",value:"lastMonth"}],a.cronTypes=[{name:"APPLICATION_DAY",value:"daily"},{name:"APPLICATION_WEEK",value:"weekly"},{name:"APPLICATION_MONTH",value:"monthly"}],a.weekDays=[{name:"APPLICATION_MONDAY",value:1},{name:"APPLICATION_TUESDAY",value:2},{name:"APPLICATION_WEDNESDAY",value:3},{name:"APPLICATION_THURSDAY",value:4},{name:"APPLICATION_FRIDAY",value:5},{name:"APPLICATION_SATURDAY",value:6},{name:"APPLICATION_SUNDAY",value:0}],a.tempTodayCron=null,a.checkToday=function(){a.switchValues.today?(a.item.cron=angular.copy(a.tempTodayCron),a.item.cronType="currentDay"):(a.tempTodayCron=angular.copy(a.item.cron),a.item.cron=void 0,k())},a.monthDays=function(){for(var a=[],b=1;31>=b;b++)a.push(b);return a}(),a.hours=function(){for(var a=[],b=0;23>=b;b++)a.push(b);return a}(),a.rangeExec={weekDays:[],monthDay:null,hour:0,type:null},a.$watch("rangeExec",function(b){a.switchValues.today||k()},!0),a.next=function(){b.wizard().next()},a.previous=function(){b.wizard().previous()},a.exitValidation=function(a){return a},a.createItem=function(){return e.save(a.item).$promise.then(function(){c.path("/tools/scheduler/list")})["catch"](function(a){d.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.scheduler.wizard",{url:"/wizard",templateUrl:"app/tools/scheduler/wizard/wizard.html",controller:"SchedulerWizardCtrl"})}]),angular.module("xCallyShuttleApp").controller("SoundListCtrl",["$scope","$http","socket","Modal","$q","FileUploader","$translate","xAlert","$cookieStore","$sce","Sound",function(a,b,c,d,e,f,g,h,i,j,k){a.Sound=k,a.isCollapsed=!0,a.downloadButtonClass="btn btn-xs blue-hoki",a["delete"]=d.confirm["delete"](function(a){b["delete"]("/api/sounds/"+a).success(function(a){}).error(function(a){console.log(a)})}),a.updateAudio=function(a,c){var d=e.defer();return b.put("/api/sounds/"+a,c).success(function(a){d.resolve()}).error(function(a){console.log(a.message),d.reject(a.message)}),d.promise},a.$on("$destroy",function(){c.unsyncUpdates("sound")}),a.initList=function(){b.get("/api/sounds").success(function(b){a.sounds=b.rows,b.rows.length||(a.isCollapsed=!1),c.syncUpdates("sound",a.sounds,function(){a.sounds.length||(a.isCollapsed=!1)})})};var l=a.uploader=new f({url:"/api/sounds",withCredentials:!0,headers:{Authorization:"Bearer "+i.get("token")}});l.filters.push({name:"customFilter",fn:function(a,b){return this.queue.length<10}}),l.onWhenAddingFileFailed=function(a,b,c){console.info("onWhenAddingFileFailed",a,b,c)},l.onAfterAddingFile=function(a){console.info("onAfterAddingFile",a)},l.onAfterAddingAll=function(a){console.info("onAfterAddingAll",a)},l.onBeforeUploadItem=function(a){console.info("onBeforeUploadItem",a)},l.onProgressItem=function(a,b){console.info("onProgressItem",a,b),a.isUploading=!0},l.onProgressAll=function(a){console.info("onProgressAll",a)},l.onSuccessItem=function(a,b,c,d){console.info("onSuccessItem",a,b,c,d),a.isUploading=!1},l.onErrorItem=function(a,b,c,d){console.info("onErrorItem",a,b,c,d),a.responseMessage=b,a.isUploading=!1},l.onCancelItem=function(a,b,c,d){console.info("onCancelItem",a,b,c,d),a.isUploading=!1},l.onCompleteItem=function(a,b,c,d){console.info("onCompleteItem",a,b,c,d),a.isUploading=!1},l.onCompleteAll=function(){console.info("onCompleteAll")}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.sounds.list",{url:"/list",templateUrl:"app/tools/sound/list/list.html",controller:"SoundListCtrl",authenticate:!0,resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/plugins/bootstrap-fileinput/bootstrap-fileinput.js"]})}]}})}]),angular.module("xCallyShuttleApp").factory("Sound",["$resource",function(a){return a("/api/sounds/:id/:controller",{name:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.sounds",{url:"/sounds",template:"
","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:13}}})}]),angular.module("xCallyShuttleApp").controller("TagListCtrl",["$scope","$uibModal","Tag","gridOptions","$rootScope",function(a,b,c,d,e){a.initView=function(){var b={exporterCsvFilename:"tag.csv",columnDefs:[{name:"name"},{name:"description"},{name:"action",width:75,buttons:[{"class":"blue-hoki",href:"/tools/tags/view/{{row.entity.id}}/settings",name:"settings"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=d.gridOptions(c,b,a)},a.createItem=function(){var c=b.open({animation:!0,templateUrl:"app/tools/tag/list/list.create.modal.html",controller:"TagListCreateCtrl"});c.result.then(function(){a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("TagListCreateCtrl",["$scope","$translate","$uibModalInstance","Tag","xAlert",function(a,b,c,d,e){a.form={},a.item={},a.save=function(){return d.save(a.item).$promise.then(function(a){e.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)})["catch"](function(a){e.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.tags.list",{url:"/list",templateUrl:"app/tools/tag/list/list.html",controller:"TagListCtrl"})}]),angular.module("xCallyShuttleApp").factory("Tag",["$resource",function(a){return a("/api/tags/:id/:controller/:tag",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.tags",{url:"/tags",template:"
","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:13}}})}]),angular.module("xCallyShuttleApp").controller("TagViewCtrl",["$scope","$http","xAlert","$translate","$stateParams","$location","Tag","gridOptions","List","Company","Contact","uiGridConstants","usSpinnerService",function(a,b,c,d,e,f,g,h,i,j,k,l,m){function n(){m.stop("spinner-grid"),a.readyGrid=!0}a.getTag=function(){return g.get({id:e.id}).$promise.then(function(b){a.tag=b})["catch"](function(a){c.error(a)})},a.updateTag=function(){var b=angular.copy(a.tag);return g.update({id:e.id},b).$promise.then(function(){c.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){c.error(a)})},a.initChat=function(){m.spin("spinner-grid");var b={enableRowSelection:!1,exporterCsvFilename:"tagChat.csv",columnDefs:[{name:"type"},{name:"status"},{name:"ChatWebsite.name",displayName:"APPLICATION_WEBSITE"},{name:"ChatVisitor.email",displayName:"APPLICATION_VISITOR"},{name:"action",width:40,buttons:[{"class":"green",name:"chatRoom",onClick:"grid.appScope.openRoom(row.entity.id, 'chatRoom')"}]}]};a.gridOptions=h.gridOptions(g,b,a,{controller:"chat",tag:a.tag.name},null,null,n())},a.initMail=function(){m.spin("spinner-grid");var b={enableRowSelection:!1,exporterCsvFilename:"tagMail.csv",columnDefs:[{name:"subject"},{name:"from"},{name:"account"},{name:"status"},{name:"action",width:40,buttons:[{"class":"green",name:"mailRoom",onClick:"grid.appScope.openRoom(row.entity.id, 'mailRoom')"}]}]};a.gridOptions=h.gridOptions(g,b,a,{controller:"mail",tag:a.tag.name},null,null,n())},a.initFax=function(){m.spin("spinner-grid");var b={enableRowSelection:!1,exporterCsvFilename:"tagFax.csv",columnDefs:[{name:"from"},{name:"account"},{name:"status"},{name:"action",width:40,buttons:[{"class":"green",name:"faxRoom",onClick:"grid.appScope.openRoom(row.entity.id, 'faxRoom')"}]}]};a.gridOptions=h.gridOptions(g,b,a,{controller:"fax",tag:a.tag.name},null,null,n())},a.initSms=function(){m.spin("spinner-grid");var b={enableRowSelection:!1,exporterCsvFilename:"tagSms.csv",columnDefs:[{name:"from"},{name:"status"},{name:"action",width:40,buttons:[{"class":"green",name:"smsRoom",onClick:"grid.appScope.openRoom(row.entity.id, 'smsRoom')"}]}]};a.gridOptions=h.gridOptions(g,b,a,{controller:"sms",tag:a.tag.name},null,null,n())},a.initContacts=function(){a.readyGrid=!1,m.spin("spinner-grid");var b;return i.get().$promise.then(function(b){return a.lists=[],b.rows.forEach(function(b,c){a.lists.push({value:b.id,label:b.name})}),j.get().$promise}).then(function(b){a.companies=[],b.rows.forEach(function(b,c){a.companies.push({value:b.id,label:b.name})})}).then(function(){b={enableRowSelection:!1,exporterCsvFilename:"tagContacts.csv",columnDefs:[{name:"firstName"},{name:"lastName"},{name:"phone"},{name:"email"},{name:"ListId",displayName:"APPLICATION_LIST",field:"List.name",filter:{type:l.filter.SELECT,selectOptions:a.lists}},{name:"CompanyId",displayName:"APPLICATION_COMPANY",field:"Company.name",filter:{type:l.filter.SELECT,term:e.companyId||null,selectOptions:a.companies}},{name:"action",width:40,buttons:[{"class":"blue-hoki",name:"profile",onClick:"grid.appScope.openContactTab(row.entity)"}]}]},a.gridOptions=h.gridOptions(g,b,a,{controller:"contacts",tag:a.tag.name},null,null,n())})["catch"](function(a){c.error(a)})},a.openRoom=function(b,c){var d=_.find(a.workspaces,{id:b,type:c});if(d)d.active=!0;else{var e;switch(c){case"mailRoom":e="icon-envelope";break;case"chatRoom":e="fa fa-users";break;case"faxRoom":e="icon-paper-plane";break;case"smsRoom":e="glyphicon glyphicon-comment"}a.workspaces.push({id:b,type:c,"class":e,active:!0})}}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.tags.view",{url:"/view/:id",templateUrl:"app/tools/tag/view/view.html",controller:"TagViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.tools.tags.view.settings",{url:"/settings",templateUrl:"app/tools/tag/view/view.settings.html"}).state("main.tools.tags.view.chat",{url:"/chat",templateUrl:"app/tools/tag/view/view.chat.html"}).state("main.tools.tags.view.mail",{url:"/mail",templateUrl:"app/tools/tag/view/view.mail.html"}).state("main.tools.tags.view.fax",{url:"/fax",templateUrl:"app/tools/tag/view/view.fax.html"}).state("main.tools.tags.view.sms",{url:"/sms",templateUrl:"app/tools/tag/view/view.sms.html"}).state("main.tools.tags.view.contacts",{url:"/contacts",templateUrl:"app/tools/tag/view/view.contacts.html"})}]),angular.module("xCallyShuttleApp").controller("TemplateListCtrl",["$scope","Template","gridOptions",function(a,b,c){a.initView=function(){var d={exporterCsvFilename:"templates.csv",columnDefs:[{name:"name"},{name:"description"},{name:"action",width:75,buttons:[{"class":"blue-hoki",href:"/tools/templates/view/{{row.entity.id}}/settings",name:"settings"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(b,d,a)}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.templates.list",{url:"/list",templateUrl:"app/tools/template/list/list.html",controller:"TemplateListCtrl"})}]),angular.module("xCallyShuttleApp").factory("Template",["$resource",function(a){return a("/api/templates/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.templates",{url:"/templates",template:"
","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:13}}})}]),angular.module("xCallyShuttleApp").controller("TemplateViewCtrl",["$scope","$rootScope","$http","$translate","$stateParams","xAlert","Template","templateVariable","Variable",function(a,b,c,d,e,f,g,h,i){a.initItem=function(){CKEDITOR.plugins.addExternal("richparams","/assets/plugins/ckeditor-richparams/"),a.options={language:b.language,allowedContent:!0,entities:!1,skin:"office2013",contentsCss:"/assets/css/global/richparams.css",extraPlugins:"richparams,autogrow",autoGrow_minHeight:450,richparams:h,disableNativeSpellChecker:!1,toolbar:[{name:"clipboard",items:["Cut","Copy","Paste","PasteText","PasteFromWord","-","Undo","Redo"]},{name:"links",items:["Link","Unlink","Anchor"]},{name:"insert",items:["Image","Table","HorizontalRule","SpecialChar"]},{name:"tools",items:["Maximize"]},{name:"document",items:["Source"]},"/",{name:"basicstyles",items:["Bold","Italic","Underline","Strike","Subscript","Superscript","-","RemoveFormat"]},{name:"paragraph",items:["NumberedList","BulletedList","-","Outdent","Indent","-","Blockquote"]},{name:"styles",items:["Styles","Format"]},"/",{name:"motion",items:["voice","chat","mail"]}]},a.form={},a.item={},a.item=g.get({id:e.id})},a.updateItem=function(){return g.update(a.item).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){f.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.templates.view",{url:"/view/:id",templateUrl:"app/tools/template/view/view.html",controller:"TemplateViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.tools.templates.view.settings",{url:"/settings",templateUrl:"app/tools/template/view/view.settings.html"})}]),angular.module("xCallyShuttleApp").controller("TemplateWizardCtrl",["$scope","$rootScope","$location","$http","WizardHandler","xAlert","Template","templateVariable",function(a,b,c,d,e,f,g,h){a.initWizard=function(){CKEDITOR.plugins.addExternal("richparams","/assets/plugins/ckeditor-richparams/"),a.options={language:b.language,allowedContent:!0,entities:!1,skin:"office2013",contentsCss:"/assets/css/global/richparams.css",extraPlugins:"richparams,autogrow",autoGrow_minHeight:450,disableNativeSpellChecker:!1,richparams:h,toolbar:[{name:"clipboard",items:["Cut","Copy","Paste","PasteText","PasteFromWord","-","Undo","Redo"]},{name:"links",items:["Link","Unlink","Anchor"]},{name:"insert",items:["Image","Table","HorizontalRule","SpecialChar"]},{name:"tools",items:["Maximize"]},{name:"document",items:["Source"]},"/",{name:"basicstyles",items:["Bold","Italic","Underline","Strike","Subscript","Superscript","-","RemoveFormat"]},{name:"paragraph",items:["NumberedList","BulletedList","-","Outdent","Indent","-","Blockquote"]},{name:"styles",items:["Styles","Format"]},"/",{name:"motion",items:["voice","chat","mail"]}]},a.item={},a.form={}},a.exitValidation=function(a){return a},a.createItem=function(){return g.save({name:a.item.name,description:a.item.description,subject:a.item.subject||null,html:a.item.html||null,text:a.item.text||null}).$promise.then(function(){c.path("/tools/templates/list")})["catch"](function(a){f.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.templates.wizard",{url:"/wizard",templateUrl:"app/tools/template/wizard/wizard.html",controller:"TemplateWizardCtrl"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools",{url:"/tools",template:"
","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("TriggerListCtrl",["$scope","$http","$translate","Modal","xAlert","Trigger","gridOptions",function(a,b,c,d,e,f,g){a.onText="On",a.offText="Off",a.isActive=!0,a.size="mini",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.initView=function(){var b={exporterCsvFilename:"Triggers.csv",columnDefs:[{name:"name"},{name:"description"},{name:"channel"},{name:"status",cellTemplate:'
',width:100,enableFiltering:!1},{name:"action",width:75,buttons:[{"class":"blue-hoki",href:"/tools/triggers/view/{{row.entity.id}}/settings",name:"settings"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=g.gridOptions(f,b,a)},a.updateItem=function(a){return f.update({id:a.id},a).$promise.then(function(){e.show(c.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){e.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.triggers.list",{url:"/list",templateUrl:"app/tools/trigger/list/list.html",controller:"TriggerListCtrl"})}]),angular.module("xCallyShuttleApp").factory("Trigger",["$resource",function(a){return a("/api/triggers/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.triggers",{url:"/triggers",template:"
","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:13}}})}]),angular.module("xCallyShuttleApp").controller("TriggerViewCtrl",["$scope","$stateParams","$http","$translate","xAlert","triggers","Trigger","$location",function(a,b,c,d,e,f,g,h){a.$triggers=f,a.recordSwitch={onText:"On",offText:"Off",isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.forms={general:{}},a.addCondition=function(b){a.trigger[b].push({field:"",operator:"",value:""})},a.removeCondition=function(b,c){a.trigger[b].splice(c,1)},a.addAction=function(){a.trigger.Actions.push({action:"",data1:"",data2:"",data3:"",data4:"",data5:""})},a.resetActionData=function(a){a.data1="",a.data2="",a.data3="",a.data4="",a.data5=""},a.removeAction=function(b){a.trigger.Actions.splice(b,1)},a.initView=function(){return g.get({id:b.id}).$promise.then(function(b){a.trigger=b})["catch"](function(a){e.error(a),h.path("/tools/triggers/list")})},a.updateTrigger=function(){return g.update({id:b.id},a.trigger).$promise.then(function(){e.show(d.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){console.error(a),e.error(a)})},a.exitValidation=function(b){return!(!b||!a.trigger.All.length&&!a.trigger.Any.length||!a.trigger.Actions.length)}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.triggers.view",{url:"/view/:id",templateUrl:"app/tools/trigger/view/view.html",controller:"TriggerViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/css/profile.css","assets/css/tasks.css"] })}]}}).state("main.tools.triggers.view.settings",{url:"/settings",templateUrl:"app/tools/trigger/view/view.settings.html"}).state("main.tools.triggers.view.routes",{url:"/routes",templateUrl:"app/tools/trigger/view/view.routes.html"}).state("main.tools.triggers.view.application",{url:"/application",templateUrl:"app/tools/trigger/view/view.application.html"})}]),angular.module("xCallyShuttleApp").controller("TriggerWizardCtrl",["$scope","$http","$location","xAlert","triggers","WizardHandler","Trigger",function(a,b,c,d,e,f,g){a.$triggers=e,a.statusSwitch={onText:"On",offText:"Off",isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.tempData={voice:{},mail:{},chat:{},fax:{}},a.item={All:[],Any:[],Actions:[]},a.forms={general:void 0,settings:void 0},a.addCondition=function(b){a.item[b].push({field:"",operator:"",value:""})},a.removeCondition=function(b,c){a.item[b].splice(c,1)},a.addAction=function(){a.item.Actions.push({action:"",data1:"",data2:"",data3:"",data4:"",data5:""})},a.resetActionData=function(a){a.data1="",a.data2="",a.data3="",a.data4="",a.data5=""},a.removeAction=function(b){a.item.Actions.splice(b,1)},a.$watch("item.channel",function(b,c){c&&(a.tempData[c].All=_.clone(a.item.All,!0),a.tempData[c].Any=_.clone(a.item.Any,!0),a.tempData[c].Actions=_.clone(a.item.Actions,!0)),a.item.All=a.tempData[b].All?a.tempData[b].All:[],a.item.Any=a.tempData[b].Any?a.tempData[b].Any:[],a.item.Actions=a.tempData[b].Actions?a.tempData[b].Actions:[]},!0),a.item.channel="voice",a.createItem=function(){return g.save(a.item).$promise.then(function(){c.path("/tools/triggers/list")})["catch"](function(a){console.error(a),d.error(a)})},a.next=function(){f.wizard().next()},a.previous=function(){f.wizard().previous()},a.exitValidation=function(a){return a},a.exitSettingsValidation=function(b){return!(!b||!a.item.All.length&&!a.item.Any.length||!a.item.Actions.length)}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.triggers.wizard",{url:"/wizard",templateUrl:"app/tools/trigger/wizard/wizard.html",controller:"TriggerWizardCtrl"})}]),angular.module("xCallyShuttleApp").controller("TrunkListCtrl",["$scope","Trunk","gridOptions","xAlert","$translate","socket",function(a,b,c,d,e,f){function g(){f.socket.on("trunk:update",function(b){var c=_.find(a.gridOptions.data,{name:b.name});c&&(c.status=b.status,c.peerstatus=b.peerstatus)})}a.isActive=!0,a.size="mini",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.initView=function(){var d={exporterCsvFilename:"Trunks.csv",columnDefs:[{name:"name"},{name:"active",cellTemplate:'
'},{name:"host"},{name:"description"},{name:"status",cellTemplate:'
{{row.entity.status}}
'},{name:"peerstatus",cellTemplate:'
{{row.entity.peerstatus}}
'},{name:"action",width:75,buttons:[{"class":"blue-hoki",href:"/tools/trunks/view/{{row.entity.name}}/settings",name:"settings"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.name)"}]}]};a.gridOptions=c.gridOptions(b,d,a,null,null,null,g)},a.updateItem=function(a){return b.update({id:a.name},a).$promise.then(function(){d.show(e.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){console.error(a),d.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.trunks.list",{url:"/list",templateUrl:"app/tools/trunk/list/list.html",controller:"TrunkListCtrl"})}]),angular.module("xCallyShuttleApp").factory("Trunk",["$resource",function(a){return a("/api/trunks/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.trunks",{url:"/trunks",template:"
","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:13}}})}]),angular.module("xCallyShuttleApp").controller("TrunkViewCtrl",["$scope","$http","xAlert","$translate","$stateParams","socket","$location","Trunk","VoiceContext",function(a,b,c,d,e,f,g,h,i){a.activeSwitch={isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.initView=function(){return h.get({id:e.id}).$promise.then(function(b){b.nat=b.nat?b.nat.split(","):[],b.allow=b.allow?b.allow.split(";"):[],b.insecure=b.insecure?b.insecure.split(","):[],b.transport=b.transport?b.transport.split(","):[],a.trunk=b}).then(function(){f.socket.on("trunk:update",function(b){a.trunk.name===b.name&&(a.trunk.status=b.status)})})["catch"](function(a){console.error(a),g.path("/tools/trunks/list")})},a.updateTrunk=function(){""===a.trunk.password&&delete a.trunk.password;var b=angular.copy(a.trunk);return b.nat=b.nat.join(","),b.allow=b.allow.join(";"),b.insecure=b.insecure.join(","),b.transport=b.transport.join(","),h.update({id:e.id},b).$promise.then(function(){c.show(d.instant("MESSAGE_WELL_DONE")+"!","success")})["catch"](function(a){c.error(a)})},a.getContexts=function(){return i.get().$promise.then(function(b){a.voiceContexts=b.rows})["catch"](function(a){c.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.trunks.view",{url:"/view/:id",templateUrl:"app/tools/trunk/view/view.html",controller:"TrunkViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.tools.trunks.view.settings",{url:"/settings",templateUrl:"app/tools/trunk/view/view.settings.html"})}]),angular.module("xCallyShuttleApp").controller("TrunkWizardCtrl",["$scope","WizardHandler","$location","xAlert","Trunk",function(a,b,c,d,e){a.initWizard=function(){a.forms={},a.item={context:"from-voip-provider"}},a.next=function(){b.wizard().next()},a.previous=function(){b.wizard().previous()},a.exitValidation=function(a){return a},a.createItem=function(){return a.item.fromuser=a.item.defaultuser,a.item.fromdomain=a.item.host,e.save(a.item).$promise.then(function(){c.path("/tools/trunks/list")})["catch"](function(a){d.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.trunks.wizard",{url:"/wizard",templateUrl:"app/tools/trunk/wizard/wizard.html",controller:"TrunkWizardCtrl"})}]),angular.module("xCallyShuttleApp").controller("VariableListCtrl",["$scope","$uibModal","Variable","gridOptions",function(a,b,c,d){a.initView=function(){var b={exporterCsvFilename:"variables.csv",columnDefs:[{name:"name"},{name:"description"},{name:"action",width:75,buttons:[{"class":"blue-hoki",href:"/tools/variables/view/{{row.entity.id}}/settings",name:"settings"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=d.gridOptions(c,b,a)},a.createItem=function(){var c=b.open({animation:!0,templateUrl:"app/tools/variable/list/list.create.modal.html",controller:"VariableListCreateCtrl"});c.result.then(function(b){console.log(b),a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("VariableListCreateCtrl",["$scope","$translate","$uibModalInstance","Variable","xAlert",function(a,b,c,d,e){a.form={},a.item={},a.save=function(){return d.save(a.item).$promise.then(function(a){e.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)})["catch"](function(a){e.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.variables.list",{url:"/list",templateUrl:"app/tools/variable/list/list.html",controller:"VariableListCtrl"})}]),angular.module("xCallyShuttleApp").factory("Variable",["$resource",function(a){return a("/api/variables/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.variables",{url:"/variables",template:"
","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:13}}})}]),angular.module("xCallyShuttleApp").controller("VariableViewCtrl",["$scope","$translate","$stateParams","xAlert","Variable",function(a,b,c,d,e){a.getVariable=function(){return e.get({id:c.id}).$promise.then(function(b){a.variable=b})["catch"](function(a){d.error(a)})},a.updateVariable=function(){return e.update({id:c.id},a.variable).$promise.then(function(){d.show(b.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){d.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.variables.view",{url:"/view/:id",templateUrl:"app/tools/variable/view/view.html",controller:"VariableViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.tools.variables.view.settings",{url:"/settings",templateUrl:"app/tools/variable/view/view.settings.html"})}]),angular.module("xCallyShuttleApp").controller("YourdashboardListCloneModalCtrl",["$scope","$uibModalInstance",function(a,b){a.forms={dashboard:void 0},a.item={},a.ok=function(){b.close(a.item)},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("YourdashboardListCreateModalCtrl",["$scope","$uibModalInstance",function(a,b){a.forms={dashboard:void 0},a.item={},a.ok=function(){a.item.model=JSON.stringify({title:a.item.name}),b.close(a.item)},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("YourdashboardListCtrl",["$scope","$http","$translate","xAlert","Modal","$uibModal","$log","YourDashboard","gridOptions",function(a,b,c,d,e,f,g,h,i){a.initView=function(){var b={exporterCsvFilename:"voice_contexts.csv",columnDefs:[{name:"name"},{name:"description"},{name:"action",width:125,buttons:[{"class":"green",href:"/tools/yourdashboards/show/{{row.entity.id}}",name:"view"},{"class":"blue-hoki",href:"/tools/yourdashboards/view/{{row.entity.id}}/settings",name:"settings"},{"class":"{{row.entity.defaultEntry ? 'red-sunglo disabled' : 'red-sunglo'}}",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"},{"class":"purple",name:"clone",onClick:"grid.appScope.clone(row.entity.id)"}]}]};a.gridOptions=i.gridOptions(h,b,a)},a.create=function(){var b=f.open({animation:!0,templateUrl:"app/tools/yourdashboard/list/create.modal.html",controller:"YourdashboardListCreateModalCtrl"});b.result.then(function(b){return h.save(b).$promise.then(function(){d.show(c.instant("MESSAGE_WELL_DONE"),"success"),a.gridOptions.getPage()})["catch"](function(a){console.error(a),d.error(a)})},function(){g.info("Modal dismissed at: "+new Date)})},a.clone=function(b){var e=f.open({animation:!0,templateUrl:"app/tools/yourdashboard/list/clone.modal.html",controller:"YourdashboardListCloneModalCtrl"});e.result.then(function(e){return h.save({id:b,controller:"clone"},e).$promise.then(function(){d.show(c.instant("MESSAGE_WELL_DONE"),"success"),a.gridOptions.getPage()})["catch"](function(a){console.error(a),d.error(a)})},function(){g.info("Modal dismissed at: "+new Date)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.yourdashboards.list",{url:"/list",templateUrl:"app/tools/yourdashboard/list/list.html",controller:"YourdashboardListCtrl"})}]),angular.module("xCallyShuttleApp").controller("LeaveEditedDashboardModalCtrl",["$scope","$uibModalInstance",function(a,b){a.close=function(){b.close()},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("YourdashboardShowCtrl",["$scope","$rootScope","localStorageService","xAlert","$translate","Auth","$stateParams","$location","$uibModal","$log","YourDashboard",function(a,b,c,d,e,f,g,h,i,j,k){a.Auth=f,a.editMode=!1,a.getDashboard=function(){return k.get({id:g.id}).$promise.then(function(b){var c={name:"dashboard",structure:"4-8",enableconfirmdelete:!0,maximizable:!0,collapsible:!0};b.model=JSON.parse(b.model||'{"title":"Dashboard"}'),b.editable=!(!f.isAdmin()||!b.editable),a.dashboard=_.merge(c,b)})["catch"](function(a){h.path("/tools/yourdashboards/list")})},a.$on("$locationChangeStart",function(b,c,d){if(a.editMode){b.preventDefault();var e=i.open({animation:!0,templateUrl:"app/tools/yourdashboard/show/leaveEditedDashboard.modal.html",controller:"LeaveEditedDashboardModalCtrl"});e.result.then(function(b){a.editMode=!1;var d=location.protocol+"//"+location.host;h.path(c.replace(d,""))},function(){j.info("Modal dismissed at: "+new Date)})}});var l=function(b,c,f){var h=angular.copy(a.dashboard);return h.name=a.dashboard.model.title,h.model=JSON.stringify(h.model),k.update({id:g.id},h).$promise.then(function(){d.show(e.instant("MESSAGE_DASHBOARD_SAVED")+"!","success"),a.editMode=!1})["catch"](function(b){d.error(b),h.model=JSON.parse(h.model),h.name="dashboard",a.dashboard=h})};a.$on("adfDashboardChanged",l),a.$on("adfIsEditMode",function(){a.editMode=!0}),a.$on("destroy",function(){console.log("main dashboard")})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.yourdashboards.show",{url:"/show/:id",templateUrl:"app/tools/yourdashboard/show/show.html",controller:"YourdashboardShowCtrl"})}]),angular.module("xCallyShuttleApp").controller("YourdashboardViewCtrl",["$scope","$http","xAlert","$translate","$stateParams","$location",function(a,b,c,d,e,f){a.radioSwitch={isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.getDashboard=function(){b.get("/api/dashboards/"+e.id).success(function(b){delete b.model,a.dashboard=b}).error(function(a){f.path("/tools/yourdashboards/list")})},a.updateDashboard=function(){var f=angular.copy(a.dashboard);b.put("/api/dashboards/"+e.id,f).success(function(){c.show(d.instant("MESSAGE_WELL_DONE")+"!","success")}).error(function(b){c.error(b),a.dashboard=f})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.yourdashboards.view",{url:"/view/:id",templateUrl:"app/tools/yourdashboard/view/view.html",controller:"YourdashboardViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.tools.yourdashboards.view.settings",{url:"/settings",templateUrl:"app/tools/yourdashboard/view/view.settings.html"})}]),angular.module("xCallyShuttleApp").factory("YourDashboard",["$resource",function(a){return a("/api/dashboards/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.yourdashboards",{url:"/yourdashboards",template:"
","abstract":!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:2}}})}]),angular.module("xCallyShuttleApp").controller("ZendeskListCtrl",["$scope","ZendeskAccount","gridOptions","xAlert","$translate",function(a,b,c,d,e){a.initView=function(){var d={exporterCsvFilename:"zendesk_account.csv",columnDefs:[{name:"name",displayName:"APPLICATION_NAME"},{name:"username"},{name:"remoteUri",displayName:"APPLICATION_URI"},{name:"action",buttons:[{"class":"blue-hoki",href:"/zendesk/view/{{row.entity.id}}/account",name:"profile"},{"class":"green-jungle",name:"check",onClick:"grid.appScope.checkAccount(row.entity.id)"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(b,d,a)},a.checkAccount=function(a){return b.check({id:a}).$promise.then(function(){d.show(e.instant("MESSAGE_ACCOUNT_VERIFIED"),"success")})["catch"](function(){d.show(e.instant("MESSAGE_ACCOUNT_INVALID"),"danger")})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.zendesk.list",{url:"/list",templateUrl:"app/zendesk/list/list.html",controller:"ZendeskListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{name:"smart-table",insertBefore:"#ng_load_plugins_before",files:["assets/css/smart_table.css"]}])}]}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.zendesk.view.configurations",{url:"/configurations",template:"
","abstract":!0})}]),angular.module("xCallyShuttleApp").controller("ZendeskViewConfigurationListCtrl",["$scope","$stateParams","$translate","gridOptions","ZendeskConfiguration","$uibModal",function(a,b,c,d,e,f){a.initView=function(){var c={exporterCsvFilename:"zendesk_configurations.csv",columnDefs:[{name:"name"},{name:"description"},{name:"action",width:125,buttons:[{"class":"blue-hoki",href:"/zendesk/view/{{row.entity.AccountId}}/configurations/view/{{row.entity.id}}",name:"profile"},{"class":"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=d.gridOptions(e,c,a,{accountId:b.id})},a.createItem=function(){var b=f.open({animation:!0,templateUrl:"app/zendesk/view/configuration/list/create.modal.html",controller:"ZendeskCreateConfigurationCtrl"});b.result.then(function(){a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("ZendeskCreateConfigurationCtrl",["$scope","$translate","$uibModalInstance","ZendeskConfiguration","xAlert","$stateParams","channel",function(a,b,c,d,e,f,g){a.form={},a.item={},a.channels=g,a.item.channel="voice",a.item.type="Queue",a.save=function(){return d.save({accountId:f.id},a.item).$promise.then(function(a){e.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)})["catch"](function(a){e.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.zendesk.view.configurations.list",{url:"/list",templateUrl:"app/zendesk/view/configuration/list/list.html",controller:"ZendeskViewConfigurationListCtrl"})}]),angular.module("xCallyShuttleApp").controller("ZendeskViewConfigurationViewCtrl",["$scope","$stateParams","$filter","$translate","socket","ZendeskConfiguration","xAlert","variable","Variable","ZendeskAccount","Tag","ZendeskField",function(a,b,c,d,e,f,g,h,i,j,k,l){a.$on("$destroy",function(){e.unsyncUpdates("zendesk_field")}),a.config={autoHideScrollbar:!1,theme:"dark",advanced:{updateOnContentResize:!0},setHeight:300,scrollInertia:0},a.fieldType=[{type:"string",title:"String"},{type:"variable",title:"Variable"},{type:"customVariable",title:"Custom Variable"}],a.descFieldType=[{type:"string",title:"String"},{type:"keyValue",title:"Key Value"}],a.groupVariableByGroup=function(a){switch(a.group){case"voice_queue":return"Voice: Queue";case"voice_outbound":return"Voice: Outbound";default:return"Other"}},a.initView=function(){a.configurationName="",a.subjectConfig=[],a.descriptionConfig=[],a.fieldConfig=[],a.selectedTags={tags:[]},a.variables=h},a.getConfiguration=function(){return f.get({accountId:b.id,id:b.configurationId}).$promise.then(function(b){a.configurationName=b.name,a.subjectConfig=b.Subject,a.descriptionConfig=b.Description,a.fieldConfig=b.Field,a.selectedTags={tags:_.map(b.Tags,function(a){return a.id})},e.socket.on("zendesk_field:remove",function(b){_.remove(a.subjectConfig,{id:b.id}),_.remove(a.descriptionConfig,{id:b.id}),_.remove(a.fieldConfig,{id:b.id})})})["catch"](function(a){g.error(a)})},a.getCustomVariables=function(){return i.get().$promise.then(function(b){a.customVariables=b.rows})["catch"](function(a){g.error(a)})},a.getFields=function(){return j.fields({id:b.id}).$promise.then(function(b){a.accountFields=c("zendesk")(b)})["catch"](function(a){g.error(a)})},a.getTags=function(){return k.get().$promise.then(function(b){a.tags=b.rows})["catch"](function(a){g.error(a)})},a.addItem=function(c){var d={};switch(c){case"subject":case"description":d={type:"string",content:""};break;case"field":d={content:""}}return f.save({accountId:b.id,id:b.configurationId,controller:c},d).$promise.then(function(b){switch(c){case"subject":a.subjectConfig.push(b);break;case"description":a.descriptionConfig.push(b);break;case"field":a.fieldConfig.push(b)}})["catch"](function(a){g.error(a)})},a.changeType=function(b){"variable"===b.type?(b.content="",b.variableName=""):"string"===b.type?(b.VariableId=null,b.variableName=""):"customVariable"===b.type&&(b.VariableId=null,b.content=""),a.updateField(b)},a.updateField=function(a){return l.update({accountId:b.id,configurationId:b.configurationId,id:a.id},a).$promise.then(function(){})["catch"](function(a){g.error(a)})},a.removeItem=function(a){return l["delete"]({accountId:b.id,configurationId:b.configurationId,id:a.id}).$promise.then(function(){g.show(d.instant("MESSAGE_WELL_DONE")+"!","success")})["catch"](function(a){g.error(a)})},a.changeDescType=function(b){"keyValue"===b.type?(b.content="","string"===b.keyType?(b.VariableId=null,b.variableName=""):"variable"===b.keyType?(b.keyContent="",b.VariableId=null):"customVariable"===b.keyType&&(b.keyContent="",b.variableName="")):"string"===b.type&&(b.VariableId=null,b.variableName="",b.key="",b.keyContent=""),a.updateField(b)},a.changeFieldType=function(b){if(b.content="",b.variableName="",b.nameField="",b.VariableId=null,b.idField){var c=_.find(a.accountFields,"id",b.idField);c&&(c.system_field_options?(b.customField=!1,b.nameField=c.title.toLowerCase()):b.customField=!0)}a.updateField(b)},a.updateTags=function(){return f.update({accountId:b.id,id:b.configurationId,controller:"tags"},a.selectedTags.tags).$promise.then(function(){g.show(d.instant("MESSAGE_WELL_DONE")+".","success")})["catch"](function(a){g.error(a)})},a.getSystemFieldOptions=function(b){if(b){var c=_.find(a.accountFields,"id",b);return c?c.system_field_options?c.system_field_options:null:void 0}}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.zendesk.view.configurations.view",{url:"/view/:configurationId",templateUrl:"app/zendesk/view/configuration/view/view.html",controller:"ZendeskViewConfigurationViewCtrl"})}]),angular.module("xCallyShuttleApp").controller("ZendeskViewCtrl",["$scope","$stateParams","$translate","xAlert","Modal","ZendeskAccount",function(a,b,c,d,e,f){a.initView=function(){return f.get({id:b.id}).$promise.then(function(b){a.account=b})["catch"](function(a){d.error(a)})},a.updateItem=function(){return f.update({id:b.id},a.account).$promise.then(function(){d.show(c.instant("MESSAGE_WELL_DONE")+".","success")})["catch"](function(a){d.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.zendesk.view",{url:"/view/:id",templateUrl:"app/zendesk/view/view.html",controller:"ZendeskViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.zendesk.view.account",{url:"/account",templateUrl:"app/zendesk/view/view.account.html"})}]),angular.module("xCallyShuttleApp").controller("ZendeskWizardCtrl",["$scope","$http","$location","$translate","xAlert","WizardHandler","ZendeskAccount",function(a,b,c,d,e,f,g){a.translate=d,a.initWizard=function(){a.$translate=d,a.forms={},a.item={},a.item.authType="password",a.item.serverUrl=c.protocol()+"://"+location.host},a.next=function(){f.wizard().next()},a.exitValidation=function(a){return a},a.createItem=function(){return g.save(a.item).$promise.then(function(){e.show(d.instant("MESSAGE_WELL_DONE")+".","success"),c.path("/zendesk/list")})["catch"](function(a){e.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.zendesk.wizard",{url:"/wizard",templateUrl:"app/zendesk/wizard/wizard.html",controller:"ZendeskWizardCtrl"})}]),angular.module("xCallyShuttleApp").factory("ZendeskAccount",["$resource",function(a){return a("/api/zendesk/accounts/:id/:controller",{id:"@id"},{update:{method:"PUT"},fields:{params:{controller:"fields"},isArray:!0},check:{params:{controller:"check"}}})}]).factory("ZendeskConfiguration",["$resource",function(a){return a("/api/zendesk/accounts/:accountId/configurations/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]).factory("ZendeskField",["$resource",function(a){return a("/api/zendesk/accounts/:accountId/configurations/:configurationId/fields/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.zendesk",{url:"/zendesk",template:"
","abstract":!0})}]),angular.module("xCallyShuttleApp").factory("Auth",["$location","$rootScope","$http","User","$cookieStore","$q","localStorageService",function(a,b,c,d,e,f,g){var h={};return e.get("token")&&(h=d.me()),{login:function(a,i){var j=i||angular.noop,k=f.defer();return c.post("/auth/local",{name:a.name,password:a.password,remember:a.remember}).success(function(a){return e.put("role",a.role),e.put("token",a.token),e.put("userId",a.userId),g.set("loggedIn",!0),h=d.me({},function(){b.$broadcast("login")}),k.resolve(a),j()}).error(function(a){return this.logout(),k.reject(a),j(a)}.bind(this)),k.promise},recover:function(a,b){var d=b||angular.noop,e=f.defer();return c.post("/auth/local/recover",{email:a.email}).success(function(a){return e.resolve(a),d()}).error(function(a){return e.reject(a),d(a)}.bind(this)),e.promise},reset:function(a,b){var d=b||angular.noop,e=f.defer();return c.post("/auth/local/reset/"+a.token,{password:a.password}).success(function(a){return e.resolve(a),d()}).error(function(a){return e.reject(a),d(a)}.bind(this)),e.promise},loginWithToken:function(a,c,f){e.put("role",f),e.put("token",a),e.put("userId",c),h=d.me({},function(){b.$broadcast("login")})},logout:function(){c.put("/api/users/"+h.id,{online:!1}).success(function(){e.remove("role"),e.remove("token"),e.remove("userId"),g.set("loggedIn"),h={},b.$broadcast("logout")}).error(function(a){return a})},createUser:function(a,b){var c=b||angular.noop;return d.save(a,function(b){return e.put("token",b.token),h=d.me(),c(a)},function(a){return this.logout(),c(a)}.bind(this)).$promise},changePassword:function(a,b,c){var e=c||angular.noop;return d.changePassword({id:h.id},{oldPassword:a,newPassword:b},function(a){return e(null,a)},function(a){return e(a)}).$promise},getCurrentUser:function(){return h},isLoggedIn:function(){return h.hasOwnProperty("role")},isLoggedInAsync:function(a){h.hasOwnProperty("$promise")?h.$promise.then(function(){a(!0)})["catch"](function(){a(!1)}):a(h.hasOwnProperty("role")?!0:!1)},isAdmin:function(){return"admin"===(e.get("role")||h.role)},isUser:function(){return"user"===(e.get("role")||h.role)},isAgent:function(){return"agent"===(e.get("role")||h.role)},getRole:function(){return h.role},getToken:function(){return e.get("token")}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderAccountEmail",["$compile","$timeout","MailAccount","xAlert",function(a,b,c,d){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/accountEmail/actionBuilder.html",compile:function(e){function f(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}var g,h;return g=e.contents().remove(),function(e,i){e.randomName=f(),b(function(){return c.get().$promise.then(function(a){e.accounts=a})["catch"](function(a){d.error(a)})}),h||(h=a(g)),i.append(h(e,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderAccountTemplate",["$compile","xAlert","$http","$timeout","Template","MailAccount",function(a,b,c,d,e,f){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/accountTemplate/actionBuilder.html",compile:function(c){function g(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}var h,i;return h=c.contents().remove(),function(c,j){c.randomName=g(),d(function(){return e.get().$promise.then(function(a){c.templates=a}).then(function(){return f.get()}).then(function(a){c.accounts=a})["catch"](function(a){b.error(a)})}),i||(i=a(h)),j.append(i(c,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderClose",["$compile",function(a){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/close/actionBuilder.html",compile:function(b){function c(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}var d,e;return d=b.contents().remove(),function(b,f){b.randomName=c(),e||(e=a(d)),f.append(e(b,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderEmail",["$compile",function(a){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/email/actionBuilder.html",compile:function(b){function c(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}var d,e;return d=b.contents().remove(),function(b,f){b.randomName=c(),e||(e=a(d)),f.append(e(b,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderForward",["$compile",function(a){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/forward/actionBuilder.html",compile:function(b){function c(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}var d,e;return d=b.contents().remove(),function(b,f){b.randomName=c(),e||(e=a(d)),f.append(e(b,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderHttp",["$compile",function(a){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/http/actionBuilder.html",compile:function(b){function c(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}var d,e;return d=b.contents().remove(),function(b,f){b.randomName=c(),b.methods=["GET","POST"],e||(e=a(d)),f.append(e(b,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderIntegration",["$compile","xAlert","$http","$timeout","Integration","$translate","ZendeskAccount","DeskAccount","SalesforceAccount","FreshdeskAccount","SugarcrmAccount",function(a,b,c,d,e,f,g,h,i,j,k){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/integration/actionBuilder.html",compile:function(c){function f(a,b){var c=[];for(a=a||5, b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}var l,m;return l=c.contents().remove(),function(c,n){c.randomName=f(),d(function(){return e.get({active:1}).$promise.then(function(a){_.remove(a.rows,function(a){return"iframe"===a.state}),c.integrations=a.rows,c.element.data1&&o()})["catch"](function(a){b.error(a)})});var o=function(){var a;switch(c.element.data1){case"zendesk":a=g;break;case"desk":a=h;break;case"salesforce":a=i;break;case"freshdesk":a=j;break;case"sugarcrm":a=k}return a?a.get().$promise.then(function(a){c.accounts=a.rows,c.element.data2&&p()})["catch"](function(a){b.error(a)}):void 0},p=function(){c.configurations=_.find(c.accounts,{id:Number(c.element.data2)}).Configurations};c.changeIntegration=function(){c.element.data2="",o()},c.changeAccount=function(){c.element.data3="",p()},m||(m=a(l)),n.append(m(c,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderJscripty",["$compile","xAlert","$http","$timeout","Template","$translate","JscriptyProject",function(a,b,c,d,e,f,g){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/jscripty/actionBuilder.html",compile:function(c){var e,f;return e=c.contents().remove(),function(c,h){function i(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}c.randomName=i(),d(function(){return g.get().$promise.then(function(a){console.log(a),c.projects=a.rows})["catch"](function(a){b.error(a)})}),f||(f=a(e)),h.append(f(c,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderMotionBar",["$compile","xAlert","$http","$timeout","Template",function(a,b,c,d,e){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/motionbar/actionBuilder.html",compile:function(c){var f,g;return f=c.contents().remove(),function(c,h){function i(){return e.get().$promise.then(function(a){c.templates=a.rows})["catch"](function(a){b.error(a)})}function j(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}c.randomName=j(),c.motionActions=[{name:"Popup",value:"0"},{name:"URL",value:"1"},{name:"Windows App",value:"2"}],c.changeMode=function(){c.element.data2="",c.element.data3="",i()},d(function(){return i()}),g||(g=a(f)),h.append(g(c,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderStatus",["$compile",function(a){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/status/actionBuilder.html",compile:function(b){var c,d;return c=b.contents().remove(),function(b,e){function f(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}b.randomName=f(),b.states=[{name:"APPLICATION_STATUS_NEW",value:"NEW"},{name:"APPLICATION_STATUS_OPEN",value:"OPEN"},{name:"APPLICATION_STATUS_PENDING",value:"PENDING"},{name:"APPLICATION_STATUS_CLOSED",value:"CLOSED"}],d||(d=a(c)),e.append(d(b,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderTag",["$compile","xAlert","$http","$timeout","Tag",function(a,b,c,d,e){return{restrict:"E",scope:{myElement:"=element",form:"="},templateUrl:"components/directives/action/tag/actionBuilder.html",compile:function(c){function f(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}var g,h;return g=c.contents().remove(),function(c,i){console.log("myElement",c.myElement),c.randomName=f(),c.data={tags:c.myElement.data1?c.myElement.data1.split(";"):[]},c.$watch("data.tags",function(a){c.myElement.data1=a.join(";")}),d(function(){return e.get().$promise.then(function(a){c.tags=a.rows})["catch"](function(a){b.error(a)})}),h||(h=a(g)),i.append(h(c,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderTemplate",["$compile","xAlert","$http","$timeout","Template",function(a,b,c,d,e){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/template/actionBuilder.html",compile:function(c){function f(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}var g,h;return g=c.contents().remove(),function(c,i){c.randomName=f(),d(function(){return e.get().$promise.then(function(a){c.templates=a.rows})["catch"](function(a){b.error(a)})}),h||(h=a(g)),i.append(h(c,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderUrlForward",["$compile",function(a){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/urlforward/actionBuilder.html",compile:function(b){function c(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}var d,e;return d=b.contents().remove(),function(b,f){b.randomName=c(),b.types=[{name:"HTTP GET",value:"GET"},{name:"HTTP POST",value:"POST"}],e||(e=a(d)),f.append(e(b,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("conditionBuilder",["$compile","$timeout","$translate","xAlert",function(a,b,c,d){return{restrict:"E",scope:{element:"=",serviceindex:"=",service:"=",form:"="},templateUrl:"components/directives/condition/conditionBuilder.html",compile:function(e){var f,g;return f=e.contents().remove(),function(e,h){function i(a){var b=_.find(e.service.services[e.serviceindex].conditions,{value:a});if(b)if(e.elementType=b.type,b.arr)e.values=b.arr;else if(b.resource)return b.resource.get(b.params||{}).$promise.then(function(a){e.values=_.map(a.rows,function(a){return{name:a[b.resName||b.resValue],value:a[b.resValue]}})})["catch"](function(a){d.show(c.instant(a.message),"danger")})}function j(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}e._=_,e.randomName=j(),b(function(){e.element.field&&i(e.element.field)}),e.checkCondition=function(a){e.element.value="",e.element.operator="",i(a)},g||(g=a(f)),h.append(g(e,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").factory("xNotificationLicense",["Notification","$rootScope","$location",function(a,b,c){return{show:function(d){var e=b.$new();return e["class"]="alert-warning",e.icon="fa fa-exclamation-triangle",e.more=function(){c.path("/setting/license/view")},new a({delay:d,templateUrl:"components/factories/xNotificationLicense/xNotificationLicense.html",scope:e})}}}]),angular.module("xCallyShuttleApp").filter("secToTime",[function(){return function(a){return new Date(1970,0,1).setSeconds(a)}}]),angular.module("xCallyShuttleApp").controller("FooterController",["$scope","Setting",function(a,b){a.year=moment().year(),a.$on("$includeContentLoaded",function(){Layout.initFooter()}),a.initFooter=function(){return b.get({controller:"info"}).$promise.then(function(b){a.info=b})["catch"](function(a){console.error(a)})}}]),angular.module("xCallyShuttleApp").controller("HeaderController",["$scope","$rootScope","$location","$state","$http","$interval","$notification","Auth","xAlert","socket","xNotificationLicense","toastr","localStorageService","Agent","SmsReport","MailReport","OpenChannelReport","ChatReport","ChatRoom","xNotification","$timeout","$translate","$window","User","Pause","Action","FaxReport","List","MailAccount","ChatWebsite","FaxAccount","SmsAccount","OpenChannelAccount","ReportAgent","$uibModal","$log","ReportDial",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K){function L(a,b,c){return null===b&&(b=50),null===c&&(c="..."),a&&a.length>b?a.substring(0,b-c.length)+c:a}function M(b){var c,d="reason";switch(b){case"mail":c=p;break;case"chat":c=r;break;case"fax":c=A;break;case"sms":c=o;break;case"agent":c=H,d="lastevent";break;case"dial":c=K,d="dialstatus";break;case"openchannel":c=q;break;default:return}return c.get({limit:10,order:"updatedAt DESC"}).$promise.then(function(c){_.forEach(c.rows,function(a){if(a[d])switch(a[d].toLowerCase()){case"answer":case"connect":case"complete":a.status="taken";break;case"answered_elsewhere":a.status="taken_elsewhere";break;case"called":a.status="lost";break;case"busy":a.status="busy";break;case"rejected":a.status="rejected";break;case"cancel":case"abandoned":a.status="abandoned"}}),a.agentNotifications[b].rows=c.rows,j.socket.on("report_"+b+":save",function(c){c.status="none",a.agentNotifications[b].rows.unshift(c),"agent"!==b&&"dial"!==b&&(a.agentNotifications[b].timeout[c.id]=setTimeout(function(){clearTimeout(a.agentNotifications[b].timeout[c.id]),_.find(a.agentNotifications[b].rows,{id:c.id}).status="lost",angular.element(document.getElementById("header_"+b+"_notification_bar")).hasClass("open")||a.agentNotifications[b]["new"]++,delete a.agentNotifications[b].timeout[c.id]},1e3*c.timeslot))}),j.socket.on("report_"+b+":update",function(c){if("agent"===b){var e=_.find(a.activeCalls,{id:c.id});e&&(c.agentcomplete||c.agentringnoanswer||c.agentdump)?_.remove(a.activeCalls,{id:c.id}):!c.agentconnectAt||c.agentcomplete||c.agentringnoanswer||c.agentdump||a.activeCalls.push(c)}var f=_.find(a.agentNotifications[b].rows,{id:c.id});if(f&&("agent"!==b&&"dial"!==b&&a.agentNotifications[b].timeout[c.id]&&(clearTimeout(a.agentNotifications[b].timeout[c.id]),delete a.agentNotifications[b].timeout[c.id]),c[d])){switch(c[d].toLowerCase()){case"answer":case"connect":case"complete":c.status="taken";break;case"answered_elsewhere":c.status="taken_elsewhere",angular.element(document.getElementById("header_"+b+"_notification_bar")).hasClass("open")||a.agentNotifications.chat["new"]++;break;case"busy":c.status="busy",angular.element(document.getElementById("header_"+b+"_notification_bar")).hasClass("open")||a.agentNotifications[b]["new"]++;break;case"rejected":c.status="rejected";break;case"cancel":case"abandoned":c.status="abandoned",angular.element(document.getElementById("header_"+b+"_notification_bar")).hasClass("open")||a.agentNotifications[b]["new"]++}_.merge(f,c)}})})["catch"](function(a){i.error(a)})}function N(){return a.headerAgent=h.getCurrentUser(),a.readyTimer=1e3*moment().unix(),y.get().$promise.then(function(b){a.headerPauses=b.rows,j.syncUpdates("pause",a.headerPauses)}).then(function(){j.socket.on("agent:save",function(b){a.headerAgent.id===b.id&&(_.merge(a.headerAgent,b),b.voicePause&&b.mailPause&&b.chatPause&&b.faxPause&&b.smsPause&&b.openchannelPause||(a.readyTimer=1e3*moment().unix()))})})["finally"](function(){h.getCurrentUser().loginInPause&&!m.get("loggedIn")&&a.headerPause("pause")})["catch"](function(a){console.log("Error synchronizing agent status:",a)})}function O(){return H.get({id:"active",controller:"calls"}).$promise.then(function(b){a.activeCalls=b.rows})["catch"](function(a){i.error(a)})}a.moment=moment,$(document).on("click",".tabbed-dropdown",function(a){a.stopPropagation()}),a.license.token!==a.license.token2&&(h.isAdmin()||h.isUser())&&f(function(){"main.setting.license.view"!==d.current.name&&k.show(3e4)},3e4),a.openRoom=function(b,c){var d=_.find(a.workspaces,{id:b,type:c});if(d)d.active=!0;else{var e;switch(c){case"mailRoom":e="icon-envelope";break;case"chatRoom":e="fa fa-users";break;case"faxRoom":e="icon-paper-plane";break;case"smsRoom":e="glyphicon glyphicon-comment";break;case"openchannelRoom":e="icon-globe"}a.workspaces.push({id:b,type:c,"class":e,active:!0})}},a.toggleSidebar=function(){b.settings.layout.pageSidebarClosed=!b.settings.layout.pageSidebarClosed,m.set("sidebarClosed",b.settings.layout.pageSidebarClosed)},a.chooseContact=function(b){var c=I.open({animation:!0,templateUrl:"app/main/chooseContact.modal.html",controller:"ChooseContactModalCtrl",resolve:{data:function(){return{type:"detail",phone:b,mobile:b}}}});c.result.then(function(c){c?a.openContactTab(c):a.newContact({calleridnum:b})},function(){J.info("Modal dismissed at: "+new Date)})},a.loadNotifications=function(b){if(!a.busyLoad[b].end){a.busyLoad[b].busy=!0;var c,d="reason";switch(b){case"mail":c=p;break;case"chat":c=r;break;case"fax":c=A;break;case"sms":c=o;break;case"agent":c=H,d="lastevent";break;case"dial":c=K,d="dialstatus";break;case"openchannel":c=q;break;default:return}return c.get({limit:10,offset:a.agentNotifications[b].rows.length,order:"updatedAt DESC"}).$promise.then(function(c){c.rows.length?(_.forEach(c.rows,function(a){if(a[d])switch(a[d].toLowerCase()){case"answer":case"connect":case"complete":a.status="taken";break;case"answered_elsewhere":a.status="taken_elsewhere";break;case"called":a.status="lost";break;case"busy":a.status="busy";break;case"rejected":a.status="rejected";break;case"abandoned":a.status="abandoned"}}),a.agentNotifications[b].rows=a.agentNotifications[b].rows.concat(c.rows)):a.busyLoad[b].end=!0,a.busyLoad[b].busy=!1})["catch"](function(a){i.error(a)})}},a.headerPause=function(b,c,d){return z.save({name:b,agent:a.headerAgent.id,type:c||"DEFAULT PAUSE",data4:c||"DEFAULT PAUSE",channel:d||"all"}).$promise.then(function(){i.show(v.instant("MESSAGE_WELL_DONE"),"success")})["catch"](function(a){i.error(a)})},h.isAgent()&&(N(),a.agentNotifications={mail:{rows:[],"new":0,timeout:{}},chat:{rows:[],"new":0,timeout:{}},fax:{rows:[],"new":0,timeout:{}},sms:{rows:[],"new":0,timeout:{}},agent:{rows:[],"new":0},dial:{rows:[],"new":0},openchannel:{rows:[],"new":0}},a.busyLoad={mail:{busy:!1,end:!1},chat:{busy:!1,end:!1},fax:{busy:!1,end:!1},sms:{busy:!1,end:!1},agent:{busy:!1,end:!1},dial:{busy:!1,end:!1},openchannel:{busy:!1,end:!1}},O(),M("agent"),M("dial"),a.license.mail&&M("mail"),a.license.chat&&M("chat"),a.license.fax&&M("fax"),a.license.messaging&&M("sms"),a.license.openchannel&&M("openchannel")),j.socket.on("user_has_chat_room:save",function(b){var c;return s.get({id:Number(b.ChatRoomId)}).$promise.then(function(b){console.log("chatRoom",b),c=b;var d=_.find(a.workspaces,{id:Number(c.id),type:"chatRoom"});d?d.name=a.getFullnames(c):a.workspaces.push({id:c.id,name:a.getFullnames(c),type:"chatRoom","class":"icon-bubble",unread:1})})["catch"](function(a){console.error(a)})}),j.socket.on("chat_message:save",function(b){var c;if(b.UserId!==h.getCurrentUser().id){var d=_.find(a.workspaces,{id:Number(b.ChatRoomId),type:"chatRoom"});if(!d)return s.get({id:Number(b.ChatRoomId)}).$promise.then(function(b){c=b,a.workspaces.push({id:c.id,name:a.getFullnames(b),type:"chatRoom","class":"icon-bubble",unread:1})})["catch"](function(a){console.error(a)})}});var P=function(){return w.Notification},Q=function(){b.settings.layout.onFocus=!0},R=function(){b.settings.layout.onFocus=!1};w.onfocus=Q,w.onblur=R,a.getFullnames=function(a){var b=_.map(a.Users,"fullname");return a.ChatVisitor&&b.unshift(a.ChatVisitor.fullname),_.without(b,h.getCurrentUser().fullname).join(", ")},a.openContact=function(b,c,d){if(d&&""!==d){var e,f;switch(b){case"mail":e=C,f={email:d};break;case"chat":e=D,f={email:d};break;case"fax":e=E,f={fax:d};break;case"sms":e=F,f={mobile:d};break;default:return}return e.get({id:c}).$promise.then(function(a){return a.ListId?B.save({listId:a.ListId,controller:"contacts"},f).$promise:null}).then(function(b){if(b){var c=_.find(a.workspaces,{contactID:b.id});c?c.active=!0:a.workspaces.push({active:!0,"class":"icon-user",contactID:b.id,name:b.email,type:"contact"})}else i.show(v.instant("MESSAGE_NO_LIST_CONFIGURED"),"info")})["catch"](function(a){console.error(a)})}},a.initHeader=function(){"agent"===h.getCurrentUser().role&&(j.socket.on("report_chat:save",function(a){P&&!b.settings.layout.onFocus&&g("CHAT CHANNEL",{icon:"assets/images/media/channels/chat64.png",body:"NEW Incoming Chat Visitor!",delay:1e3*a.timeslot});var c=""+v.instant("APPLICATION_FROM")+": "+a.visitorname+"
"+v.instant("APPLICATION_EMAIL")+": "+a.visitoremail;"queue"===a.application&&(c+="
"+v.instant("APPLICATION_QUEUE")+": "+a.queuename),t.show(v.instant("APPLICATION_NEW_CHAT_REQUEST"),c,"chat",1e3*a.timeslot,function(){return r.get({id:a.id,controller1:"accept",controller2:a.uniqueid}).$promise.then(function(){i.show("Chat properly assigned","success")})["catch"](function(a){switch(a.status){case 504:i.show(v.instant("MESSAGE_CHAT_ALREADY_MANAGED"),"info");break;default:i.error(a)}})},function(){return r.get({id:a.id,controller1:"reject"}).$promise.then(function(){i.show("Chat properly rejected","success")})["catch"](function(a){i.error(a)})})}),j.socket.on("report_mail:save",function(c){var d=_.find(a.workspaces,{id:c.roomid,type:"mailRoom"});if(!d){var e=""+v.instant("APPLICATION_ACCOUNT")+": "+c.accountname+"
"+v.instant("APPLICATION_FROM")+": "+c.from+"
"+v.instant("APPLICATION_SUBJECT")+": "+(L(c.subject,30,"...")||"No subject");"queue"===c.application&&(e+="
"+v.instant("APPLICATION_QUEUE")+": "+c.queuename),t.show(v.instant("APPLICATION_NEW_MAIL_REQUEST"),e,"mail",1e3*c.timeslot,function(){return p.get({id:c.id,controller1:"accept",controller2:c.uniqueid}).$promise.then(function(){var b=_.find(a.workspaces,{id:c.roomid,type:"mailRoom"});b?b.active=!0:a.workspaces.push({id:c.roomid,name:c.subject||"No subject",type:"mailRoom","class":"icon-envelope",active:!0,unread:0})})["catch"](function(a){switch(a.status){case 504:i.show(v.instant("MESSAGE_MAIL_ALREADY_MANAGED"),"info");break;default:i.error(a)}})},function(){return p.get({id:c.id,controller1:"reject"}).$promise["catch"](function(a){i.error(a)})}),P&&!b.settings.layout.onFocus?g("MAIL CHANNEL",{icon:"assets/images/media/channels/mail64.png",body:"NEW Incoming Mail Message!",delay:1e3*c.timeslot}):console.log("Notification API not supported in your browser")}}),j.socket.on("report_sms:save",function(b){var c=""+v.instant("APPLICATION_ACCOUNT")+": "+b.accountname+"
"+v.instant("APPLICATION_FROM")+": "+b.from;"queue"===b.application&&(c+="
"+v.instant("APPLICATION_QUEUE")+": "+b.queuename),t.show(v.instant("APPLICATION_NEW_SMS_REQUEST"),c,"sms",1e3*b.timeslot,function(){return o.get({id:b.id,controller1:"accept",controller2:b.uniqueid}).$promise.then(function(){var c=_.find(a.workspaces,{id:b.roomid,type:"smsRoom"});c?c.active=!0:a.workspaces.push({id:b.roomid,name:b.from,type:"smsRoom","class":"glyphicon glyphicon-comment",active:!0})})["catch"](function(a){switch(a.status){case 504:i.show(v.instant("MESSAGE_SMS_ALREADY_MANAGED"),"info");break;default:i.error(a)}})},function(){return o.get({id:b.id,controller1:"reject"}).$promise.then(function(){i.show("SMS properly rejected","success")})["catch"](function(a){i.error(a)})}),P?g("SMS CHANNEL",{icon:"assets/images/media/channels/chat64.png",body:"NEW Incoming SMS Message!",delay:1e3*b.timeslot}):console.log("Notification API not supported in your browser")}),j.socket.on("report_openchannel:save",function(b){var c=""+v.instant("APPLICATION_ACCOUNT")+": "+b.accountname+"
"+v.instant("APPLICATION_FROM")+": "+b.from;"queue"===b.application&&(c+="
"+v.instant("APPLICATION_QUEUE")+": "+b.queuename),t.show(v.instant("APPLICATION_NEW_MESSAGE"),c,"openchannel",1e3*b.timeslot,function(){return q.get({id:b.id,controller1:"accept",controller2:b.uniqueid}).$promise.then(function(){var c=_.find(a.workspaces,{id:b.roomid,type:"openchannelRoom"});c?c.active=!0:a.workspaces.push({id:b.roomid,name:b.from,type:"openchannelRoom","class":"icon-globe",active:!0})})["catch"](function(a){switch(a.status){case 504:i.show(v.instant("MESSAGE_ALREADY_MANAGED"),"info");break;default:i.error(a)}})},function(){return q.get({id:b.id,controller1:"reject"}).$promise.then(function(){i.show("Message properly rejected","success")})["catch"](function(a){i.error(a)})}),P?g("OPEN CHANNEL",{icon:"assets/images/media/channels/chat64.png",body:"NEW Incoming Message!",delay:1e3*b.timeslot}):console.log("Notification API not supported in your browser")}),j.socket.on("report_fax:save",function(c){var d=_.find(a.workspaces,{id:c.roomid,type:"faxRoom"});if(!d){var e=""+v.instant("APPLICATION_ACCOUNT")+": "+c.accountname+"
"+v.instant("APPLICATION_PHONE")+": "+c.from;"queue"===c.application&&(e+="
"+v.instant("APPLICATION_QUEUE")+": "+c.queuename),t.show(v.instant("APPLICATION_NEW_FAX_REQUEST"),e,"fax",1e3*c.timeslot,function(){return A.get({id:c.id,controller1:"accept",controller2:c.uniqueid}).$promise.then(function(){var b=_.find(a.workspaces,{id:c.roomid,type:"faxRoom"});b?b.active=!0:a.workspaces.push({id:c.roomid,name:c.from,type:"faxRoom","class":"icon-paper-plane",active:!0,unread:0})})["catch"](function(a){switch(a.status){case 504:i.show(v.instant("MESSAGE_FAX_ALREADY_MANAGED"),"info");break;default:i.error(a)}})},function(){return A.get({id:c.id,controller1:"reject"}).$promise["catch"](function(a){i.err(a)})}),P&&!b.settings.layout.onFocus?g("FAX CHANNEL",{icon:"assets/images/media/channels/telephone124.png",body:"NEW Incoming Fax Message!",delay:1e3*c.timeslot}):console.log("Notification API not supported in your browser")}}))},a.logout=function(){return e.get("/auth/local/logout").success(function(){h.logout(),c.path("/login")}).error(function(a){console.error(a)})},a.isActive=function(a){return a===c.path()},a.$on("$destroy",function(){console.log("header $destroy"),j.unsyncUpdates("pause"),j.unsyncUpdates("agent"),j.unsyncUpdates("report_chat"),j.unsyncUpdates("report_mail"),j.unsyncUpdates("report_fax"),j.unsyncUpdates("report_sms"),j.unsyncUpdates("report_openchannel"),j.unsyncUpdates("user_has_chat_room"),j.unsyncUpdates("chat_message")})}]),angular.module("xCallyShuttleApp").factory("Modal",["$rootScope","$uibModal",function(a,b){function c(c,d){var e=a.$new();return c=c||{},d=d||"modal-default",angular.extend(e,c),b.open({templateUrl:"components/modal/delete.html",windowClass:d,scope:e})}return{confirm:{"delete":function(a){return a=a||angular.noop,function(){var b,d=Array.prototype.slice.call(arguments),e=d.shift();b=c({modal:{dismissable:!0,title:"Confirm Delete",html:"

Are you sure you want to delete"+(e?" "+e+"":" selected items")+"?

",buttons:[{classes:"btn red",text:"Delete",click:function(a){b.close(a)}},{classes:"btn default",text:"Cancel",click:function(a){b.dismiss(a)}}]}},"over-topbar center"),b.result.then(function(b){a.apply(b,d)})}}}}}]),angular.module("xCallyShuttleApp").service("application",function(){var a={applications:[{type:null,name:"APPLICATION_QUEUE",value:"Queue"},{type:null,name:"APPLICATION_PLAYBACK",value:"Playback"},{type:null,name:"Dial",value:"Dial"},{type:"internalDial",name:"APPLICATION_INTERNAL_DIAL",value:"Dial"},{type:"externalDial",name:"APPLICATION_EXTERNAL_DIAL",value:"Dial"},{type:"RingGroup",name:"Ring Group",value:"Dial"},{type:null,name:"Cally-Square Project",value:"AGI"},{type:null,name:"GoTo",value:"Goto"},{type:null,name:"Hangup",value:"Hangup"},{type:null,name:"Set",value:"Set"},{type:"custom",name:"Custom",value:"custom"},{type:null,name:"APPLICATION_VOICEMAIL",value:"Voicemail"}],queueOptions:[{value:"C",name:"APPLICATION_QUEUE_OPTION_C"},{value:"c",name:"APPLICATION_QUEUE_OPTION_c"},{value:"d",name:"APPLICATION_QUEUE_OPTION_d"},{value:"F",name:"APPLICATION_QUEUE_OPTION_F"},{value:"h",name:"APPLICATION_QUEUE_OPTION_h"},{value:"H",name:"APPLICATION_QUEUE_OPTION_H"},{value:"n",name:"APPLICATION_QUEUE_OPTION_n"},{value:"i",name:"APPLICATION_QUEUE_OPTION_i"},{value:"I",name:"APPLICATION_QUEUE_OPTION_I"},{value:"r",name:"APPLICATION_QUEUE_OPTION_r"},{value:"R",name:"APPLICATION_QUEUE_OPTION_R"},{value:"t",name:"APPLICATION_QUEUE_OPTION_t"},{value:"T",name:"APPLICATION_QUEUE_OPTION_T"},{value:"w",name:"APPLICATION_QUEUE_OPTION_w"},{value:"W",name:"APPLICATION_QUEUE_OPTION_W"},{value:"k",name:"APPLICATION_QUEUE_OPTION_k"},{value:"K",name:"APPLICATION_QUEUE_OPTION_K"},{value:"x",name:"APPLICATION_QUEUE_OPTION_x"},{value:"X",name:"APPLICATION_QUEUE_OPTION_X"}],audioOptions:[{value:"skip",name:"APPLICATION_PLAYBACK_OPTION_SKIP"},{value:"noanswer",name:"APPLICATION_PLAYBACK_OPTION_NOANSWER"},{value:"j",name:"APPLICATION_PLAYBACK_OPTION_J"},{value:"say",name:"APPLICATION_PLAYBACK_OPTION_SAY"}],hangupCauses:[{value:"",name:"--"},{value:"1",name:"APPLICATION_HANGUP_CAUSE_1"},{value:"16",name:"APPLICATION_HANGUP_CAUSE_16"},{value:"17",name:"APPLICATION_HANGUP_CAUSE_17"},{value:"18",name:"APPLICATION_HANGUP_CAUSE_18"},{value:"21",name:"APPLICATION_HANGUP_CAUSE_21"},{value:"22",name:"APPLICATION_HANGUP_CAUSE_22"},{value:"27",name:"APPLICATION_HANGUP_CAUSE_27"},{value:"38",name:"APPLICATION_HANGUP_CAUSE_38"},{value:"41",name:"APPLICATION_HANGUP_CAUSE_41"}],intTypes:[{value:"always",name:"APPLICATION_ALWAYS"},{value:"custom",name:"APPLICATION_CUSTOM"},{value:"list",name:"APPLICATION_FROM_LIST"}],checkUnderscore:function(a){return 0===a.indexOf("_")?a:"_"+a}};return{application:a}}),angular.module("xCallyShuttleApp").service("automations",function(){var a={mail:{conditions:[{name:"APPLICATION_STATUS",value:"status",type:"select",arr:[{name:"APPLICATION_STATUS_NEW",value:"NEW"},{name:"APPLICATION_STATUS_OPEN",value:"OPEN"},{name:"APPLICATION_STATUS_CLOSED",value:"CLOSED"},{name:"APPLICATION_STATUS_PENDING",value:"PENDING"}],operators:[{value:"equals",name:"APPLICATION_EQUALS_TO"},{value:"not_equals",name:"APPLICATION_NOT_EQUALS_TO"}]},{name:"APPLICATION_HOURS_SINCE_CREATED",value:"createdAt",type:"input",operators:[{value:"greater_or_equal",name:"APPLICATION_GTE_TO"},{value:"less_or_equal",name:"APPLICATION_LTE_TO"},{value:"greater",name:"APPLICATION_GREATER_THAN"},{value:"less",name:"APPLICATION_LESS_THAN"}]}],actions:[{name:"APPLICATION_STATUS",value:"status"}]},chat:{conditions:[{name:"APPLICATION_STATUS",value:"status",type:"select",arr:[{name:"APPLICATION_STATUS_NEW",value:"NEW"},{name:"APPLICATION_STATUS_OPEN",value:"OPEN"},{name:"APPLICATION_STATUS_CLOSED",value:"CLOSED"},{name:"APPLICATION_STATUS_PENDING",value:"PENDING"}],operators:[{value:"equals",name:"APPLICATION_EQUALS_TO"},{value:"not_equals",name:"APPLICATION_NOT_EQUALS_TO"}]},{name:"APPLICATION_HOURS_SINCE_CREATED",value:"createdAt",type:"input",operators:[{value:"greater_or_equal",name:"APPLICATION_GTE_TO"},{value:"less_or_equal",name:"APPLICATION_LTE_TO"},{value:"greater",name:"APPLICATION_GREATER_THAN"},{value:"less",name:"APPLICATION_LESS_THAN"}]}],actions:[{name:"APPLICATION_STATUS",value:"status"}]},fax:{conditions:[{name:"APPLICATION_STATUS",value:"status",type:"select",arr:[{name:"APPLICATION_STATUS_NEW",value:"NEW"},{name:"APPLICATION_STATUS_OPEN",value:"OPEN"},{name:"APPLICATION_STATUS_CLOSED",value:"CLOSED"}],operators:[{value:"equals",name:"APPLICATION_EQUALS_TO"},{value:"not_equals",name:"APPLICATION_NOT_EQUALS_TO"}]},{name:"APPLICATION_HOURS_SINCE_CREATED",value:"createdAt",type:"input",operators:[{value:"greater_or_equal",name:"APPLICATION_GTE_TO"},{value:"less_or_equal",name:"APPLICATION_LTE_TO"},{value:"greater",name:"APPLICATION_GREATER_THAN"},{value:"less",name:"APPLICATION_LESS_THAN"}]}],actions:[{name:"APPLICATION_STATUS",value:"status"}]}},b=["mail","fax","chat"];return{services:a,channels:b}}),angular.module("xCallyShuttleApp").service("channel",function(){var a=[{name:"Voice",value:"voice"}];return a}),angular.module("xCallyShuttleApp").service("desk_com",function(){var a=[{id:"priority",label:"Priority",custom:!1,data:{choices:[1,2,3,4,5,6,7,8,9,10]}},{id:"status",label:"Status",custom:!1,data:{choices:["new","open","pending","resolved","closed"]}},{id:"type",label:"Type",custom:!1,data:{choices:["chat","twitter","email","qna","facebook","phone"]}}];return{fields:a}}),angular.module("xCallyShuttleApp").service("interval",function(){var a={months:[{value:"always",name:"APPLICATION_ALWAYS"},{value:"jan",name:"APPLICATION_JANUARY"},{value:"feb",name:"APPLICATION_FEBRUARY"},{value:"mar",name:"APPLICATION_MARCH"},{value:"apr",name:"APPLICATION_APRIL"},{value:"may",name:"APPLICATION_MAY"},{value:"jun",name:"APPLICATION_JUNE"},{value:"jul",name:"APPLICATION_JULY"},{value:"aug",name:"APPLICATION_AUGUST"},{value:"sep",name:"APPLICATION_SEPTEMBER"},{value:"oct",name:"APPLICATION_OCTOBER"},{value:"nov",name:"APPLICATION_NOVEMBER"},{value:"dec",name:"APPLICATION_DECEMBER"}],monthsNumber:[{value:"always",name:"APPLICATION_ALWAYS"},{value:"1",name:"APPLICATION_JANUARY"},{value:"2",name:"APPLICATION_FEBRUARY"},{value:"3",name:"APPLICATION_MARCH"},{value:"4",name:"APPLICATION_APRIL"},{value:"5",name:"APPLICATION_MAY"},{value:"6",name:"APPLICATION_JUNE"},{value:"7",name:"APPLICATION_JULY"},{value:"8",name:"APPLICATION_AUGUST"},{value:"9",name:"APPLICATION_SEPTEMBER"},{value:"10",name:"APPLICATION_OCTOBER"},{value:"11",name:"APPLICATION_NOVEMBER"},{value:"12",name:"APPLICATION_DECEMBER"}],daysOfWeek:[{value:"always",name:"APPLICATION_ALWAYS"},{value:"mon",name:"APPLICATION_MONDAY"},{value:"tue",name:"APPLICATION_TUESDAY"},{value:"wed",name:"APPLICATION_WEDNESDAY"},{value:"thu",name:"APPLICATION_THURSDAY"},{value:"fri",name:"APPLICATION_FRIDAY"},{value:"sat",name:"APPLICATION_SATURDAY"},{value:"sun",name:"APPLICATION_SUNDAY"}],daysOfMonth:["always",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{interval:a}}),angular.module("xCallyShuttleApp").service("report",["ReportAgent","ReportCall","ReportMailSession","ReportMember","ReportQueue","ReportIntegration","ReportChatSession","ReportSmsSession","Contact","Recording","ReportSquare","ReportSquareDetail","User","ReportFaxSession","MailRoom","MailMessage","FaxRoom","FaxMessage","ChatRoom","ChatMessage","SmsRoom","SmsMessage","OpenChannelRoom","OpenChannelMessage","ReportOpenChannelSession",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y){var z=[{value:"users",resource:m,channel:"General"},{value:"cm_contacts",resource:i,channel:"General"},{value:"report_integration_history",resource:f,channel:"General"},{value:"report_agent_history",resource:a,channel:"Voice"},{value:"report_call_history",resource:b,channel:"Voice"},{value:"report_member_history",resource:d,channel:"Voice"},{value:"report_queue_history",resource:e,channel:"Voice"},{value:"voice_recordings",resource:j,channel:"Voice"},{value:"report_square_history",resource:k,channel:"Voice"},{value:"report_square_details_history",resource:l,channel:"Voice"},{value:"report_chat_session_history",resource:g,channel:"Chat"},{value:"chat_rooms",resource:s,channel:"Chat"},{value:"chat_messages",resource:t,channel:"Chat"},{value:"report_mail_session_history",resource:c,channel:"Mail"},{value:"mail_rooms",resource:o,channel:"Mail"},{value:"mail_messages",resource:p,channel:"Mail"},{value:"report_fax_session_history",resource:n,channel:"Fax"},{value:"fax_rooms",resource:q,channel:"Fax"},{value:"fax_messages",resource:r,channel:"Fax"},{value:"report_sms_session_history",resource:h,channel:"Sms"},{value:"sms_rooms",resource:u,channel:"Sms"},{value:"sms_messages",resource:v,channel:"Sms"},{value:"report_openchannel_session_history",resource:y,channel:"Open Channel"},{value:"openchannel_rooms",resource:w,channel:"Open Channel"},{value:"openchannel_messages",resource:x,channel:"Open Channel"}];return{tables:z}}]),angular.module("xCallyShuttleApp").service("strategies",function(){return["beepall","roundrobin","rrmemory"]}),angular.module("xCallyShuttleApp").service("triggers",["VoiceQueue","Route",function(a,b){var c={voice:{conditions:[{name:"APPLICATION_QUEUE",value:"queue",type:"select",resource:a,resValue:"name",operators:[{value:"equals",name:"APPLICATION_EQUALS_TO"},{value:"not_equals",name:"APPLICATION_NOT_EQUALS_TO"}]},{name:"APPLICATION_CALL_STATUS",value:"lastevent",type:"select",arr:[{name:"ringing",value:"called"},{name:"up", @@ -74,7 +74,7 @@ a.put("app/square/odbc/list/list.html",'\n
\n
\n
\n
\n
\n \n {{ \'APPLICATION_PROFILE\' | translate}} {{ \'APPLICATION_FAX\' | translate}}\n
\n
\n\n
\n \n
\n \n
\n \n \n \n {{\'MESSAGE_ZERO_MEANS_UNLIMITED\' | translate}}\n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n
\n \n \n
\n \n
\n
\n
\n
\n\n'),a.put("app/staff/agent/view/view.html",'\n\n\n'),a.put("app/staff/agent/view/view.mail.html",'
\n
\n
\n
\n
\n \n {{ \'APPLICATION_PROFILE\' | translate}} {{ \'APPLICATION_MAIL\' | translate}}\n
\n
\n\n
\n \n
\n \n
\n \n \n \n {{\'MESSAGE_ZERO_MEANS_UNLIMITED\' | translate}}\n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n
\n \n \n
\n \n
\n
\n
\n
\n\n'),a.put("app/staff/agent/view/view.motionbar.html",'
\n
\n
\n
\n
\n \n {{ \'APPLICATION_PROFILE\' | translate}} {{ \'APPLICATION_MOTION_BAR\' | translate}}\n
\n \n
\n\n
\n
\n \n
\n
\n\n \n
\n
\n \n
\n \n\n \n
\n
\n \n
\n \n\n \n \n \n\n \n
\n
\n \n \n
\n
\n\n \n
\n
\n \n
\n \n\n\n \n
\n \n \n \n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n
\n \n\n \n
\n
\n \n
\n \n\n \n
\n \n \n \n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n
\n \n\n \n
\n
\n \n
\n \n\n \n
\n \n \n \n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n
\n \n\n \n
\n
\n \n \n
\n
\n\n \n
\n
\n \n
\n \n\n\n \n
\n \n \n Default: 9888\n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_INVALID_NUMBER\' | translate}}.\n \n
\n \n\n \n
\n \n \n Default: 160\n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_INVALID_NUMBER\' | translate}} (min 1).\n \n
\n \n\n \n
\n \n \n Default: 5060\n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_INVALID_NUMBER\' | translate}} (0-65535).\n \n
\n \n\n \n
\n
\n \n
\n
\n
\n
\n
\n'),a.put("app/staff/agent/view/view.openchannel.html",'
\n
\n
\n
\n
\n \n {{ \'APPLICATION_PROFILE\' | translate}} {{ \'APPLICATION_OPEN_CHANNEL\' | translate}}\n
\n
\n\n
\n \n
\n \n
\n \n \n \n {{\'MESSAGE_ZERO_MEANS_UNLIMITED\' | translate}}\n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n
\n \n \n
\n \n
\n
\n
\n
\n\n'),a.put("app/staff/agent/view/view.queues.chat.html",'\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n\n'),a.put("app/staff/agent/view/view.queues.fax.html",'\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n\n'),a.put("app/staff/agent/view/view.queues.html","\n\n\n"),a.put("app/staff/agent/view/view.queues.mail.html",'\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n\n'),a.put("app/staff/agent/view/view.queues.openchannel.html",'\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n\n'),a.put("app/staff/agent/view/view.queues.sms.html",'\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n\n'),a.put("app/staff/agent/view/view.queues.voice.html",'\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n\n'),a.put("app/staff/agent/view/view.sms.html",'
\n
\n
\n
\n
\n \n {{ \'APPLICATION_PROFILE\' | translate}} {{ \'APPLICATION_SMS\' | translate}}\n
\n
\n\n
\n \n
\n \n
\n \n \n \n {{\'MESSAGE_ZERO_MEANS_UNLIMITED\' | translate}}\n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n
\n \n \n
\n \n
\n
\n
\n
\n\n'), a.put("app/staff/agent/view/view.voice.html",'
\n
\n
\n
\n
\n \n {{ \'APPLICATION_PROFILE\' | translate}} {{ \'APPLICATION_VOICE\' | translate}}\n
\n
\n
\n
\n\n \n
\n \n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n
\n \n\n \n
\n \n \n {{$item}}\n \n {{transport}}\n \n \n \n {{ \'DESCRIPTION_VOICE_TRANSPORT\' | translate }}\n \n
\n \n\n \n
\n \n \n \n {{ \'DESCRIPTION_VOICE_HOST\' | translate }}\n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n
\n \n\n \n
\n \n \n {{$item}}\n \n {{nat}}\n \n \n \n {{ \'DESCRIPTION_VOICE_NAT\' | translate }}\n \n
\n \n\n \n
\n \n \n {{$select.selected}}\n \n
\n
\n
\n \n {{ \'DESCRIPTION_VOICE_TYPE\' | translate }}\n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n
\n \n\n \n
\n \n \n {{$item}}\n \n {{allow}}\n \n \n \n {{ \'DESCRIPTION_VOICE_CODEC\' | translate }}\n \n
\n \n\n \n
\n
\n \n
\n \n\n \n
\n
\n
\n
\n
\n'),a.put("app/staff/agent/wizard/wizard-bulk.html",'
\n \n \n \n\n \n
\n
\n
\n \n {{ \'APPLICATION_AGENT\' | translate }} WIZARD \n
\n
\n
\n \n \n
\n\n \n
\n \n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n \n {{\'MESSAGE_STARTING_FROM_INTERNAL\' | translate}} {{item.minInternal}} {{\'MESSAGE_MAX_NUM_OF_BULK_AGENTS_IS\' | translate}} {{maxAmount}}\n \n
\n \n\n \n
\n \n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n
\n \n\n \n
\n \n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n
\n \n\n \n
\n \n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n
\n \n\n \n
\n \n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_INVALID_PATTERN_NAME\' | translate}}.\n \n
\n \n\n \n
\n \n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n \n
\n \n\n \n
\n \n \n \n {{setting.securePassword ? \'MESSAGE_PASSWORD_FORMAT\' : \'MESSAGE_PASSWORD_LIGTH_FORMAT\' | translate}}\n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n \n
\n \n\n \n
\n \n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_WRONG_PASSWORD\' | translate}}.\n \n
\n \n\n \n
\n \n \n
\n \n\n \n
\n
\n\n \n
\n\n \n
\n \n \n {{$item}}\n \n {{transport}}\n \n \n \n {{ \'DESCRIPTION_VOICE_TRANSPORT\' | translate }}\n \n
\n \n\n \n
\n \n \n {{$item}}\n \n {{allow}}\n \n \n \n {{ \'DESCRIPTION_VOICE_CODEC\' | translate }}\n \n
\n \n\n \n \n
\n
\n\n \n

{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}

\n \n \n
\n
\n
\n
\n \n
\n'),a.put("app/staff/agent/wizard/wizard.html",'
\n \n \n \n\n \n
\n
\n
\n \n {{ \'APPLICATION_AGENT\' | translate }} WIZARD \n
\n
\n
\n \n \n
\n\n \n
\n \n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n
\n \n\n \n
\n \n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_INVALID_PATTERN_NAME\' | translate}}.\n \n
\n \n\n \n
\n \n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n \n
\n \n\n \n
\n \n \n \n {{setting.securePassword ? \'MESSAGE_PASSWORD_FORMAT\' : \'MESSAGE_PASSWORD_LIGTH_FORMAT\' | translate}}\n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n
\n \n\n \n
\n \n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_WRONG_PASSWORD\' | translate}}.\n \n
\n \n\n \n
\n \n
\n \n \n \n \n
\n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n
\n \n\n \n
\n \n \n
\n \n\n \n
\n
\n\n \n
\n\n \n
\n \n \n {{$item}}\n \n {{transport}}\n \n \n \n {{ \'DESCRIPTION_VOICE_TRANSPORT\' | translate }}\n \n
\n \n\n \n
\n \n \n {{$item}}\n \n {{allow}}\n \n \n \n {{ \'DESCRIPTION_VOICE_CODEC\' | translate }}\n \n
\n \n\n \n
\n \n
\n
\n
\n
\n
\n \n\n \n \n
\n
\n\n \n
\n \n
\n \n
\n
\n
\n
\n
\n \n\n \n \n
\n
\n\n \n
\n \n
\n \n
\n
\n
\n
\n
\n \n\n \n \n
\n
\n\n\n \n
\n \n
\n \n
\n
\n
\n
\n
\n \n\n \n \n
\n
\n\n \n
\n \n
\n \n
\n
\n
\n
\n
\n \n\n \n \n
\n
\n\n \n
\n \n
\n \n
\n
\n
\n
\n
\n \n\n \n \n
\n
\n\n \n

{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}

\n \n \n
\n
\n
\n
\n \n
\n'), a.put("app/staff/team/list/create.modal.html",'\n\n\n'),a.put("app/staff/team/list/list.html",'\n
\n
\n \n\n \n
\n
\n
\n \n {{ \'APPLICATION_TEAMS\' | translate }} \n
\n \n
\n
\n \n
\n
{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}
\n
\n \n
\n
\n \n
\n
\n\n'),a.put("app/staff/team/view/view.agents.html",'
\n
\n
\n
\n
\n \n {{\'APPLICATION_AGENTS\' | translate}}\n
\n
\n
\n \n \n \n
\n
\n
\n
\n
\n
\n
\n
\n \n \n \n
\n
\n
\n
\n'),a.put("app/staff/team/view/view.html",'\n
\n
\n \n\n \n
\n \n
\n \n
\n \n
\n \n \n
\n
\n {{team.name}}\n
\n\n
\n \n\n \n \n \n
\n \n
\n \n \n
\n \n
\n
\n\n'),a.put("app/staff/team/view/view.settings.html",'
\n
\n
\n
\n
\n \n {{ \'APPLICATION_PROFILE\' | translate}} {{ \'APPLICATION_ACCOUNT\' | translate}}\n
\n
\n\n
\n \n
\n\n
\n \n
\n \n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n
\n \n\n \n
\n \n \n
\n \n\n \n
\n
\n \n
\n
\n
\n
\n'),a.put("app/staff/telephone/list/list.html",'\n
\n
\n \n\n \n
\n
\n
\n \n {{ \'APPLICATION_TELEPHONES\' | translate }} \n
\n \n
\n
\n \n
\n
{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}
\n
\n \n
\n
\n \n
\n
\n\n'),a.put("app/staff/telephone/view/view.account.html",'
\n
\n
\n
\n
\n \n {{ \'APPLICATION_ACCOUNT\' | translate}}\n
\n \n
\n\n
\n
\n \n
\n
\n\n \n
\n \n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n
\n \n\n \n
\n \n \n
\n \n\n \n
\n \n \n
\n \n\n \n
\n
\n \n\n \n
\n
\n \n \n \n \n
\n \n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n
\n \n \n
\n \n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n
\n \n \n
\n
\n \n
\n
\n
\n
\n
\n'),a.put("app/staff/telephone/view/view.html",'\n
\n
\n \n\n \n
\n \n
\n \n
\n \n
\n \n \n
\n
\n {{item.fullname}}\n
\n
\n {{item.role}}\n
\n
\n \n\n \n \n \n
\n \n
\n \n \n
\n
\n \n
\n
\n\n'),a.put("app/staff/telephone/view/view.voice.html",'
\n
\n
\n
\n
\n \n {{ \'APPLICATION_ACCOUNT\' | translate}} {{ \'APPLICATION_VOICE\' | translate}}\n
\n
\n
\n
\n\n \n
\n \n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_EXIST_INTERNAL\' | translate}}.\n \n
\n \n\n \n
\n \n \n {{$item}}\n \n {{transport}}\n \n \n \n {{ \'DESCRIPTION_VOICE_TRANSPORT\' | translate }}\n \n
\n \n\n \n
\n \n \n {{$item}}\n'+" \n {{allow}}\n \n \n \n {{ 'DESCRIPTION_VOICE_CODEC' | translate }}\n \n
\n \n\n \n
\n
\n
\n
\n
\n"),a.put("app/staff/telephone/wizard/wizard.html",'
\n \n \n \n\n \n
\n
\n
\n \n {{ \'APPLICATION_TELEPHONE\' | translate }} WIZARD \n
\n
\n
\n \n \n
\n\n \n
\n \n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n
\n \n\n \n
\n \n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_EXIST_USERNAME\' | translate}}.\n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_INVALID_PATTERN_NAME\' | translate}}.\n \n
\n \n\n \n
\n \n \n \n {{\'MESSAGE_PASSWORD_FORMAT\' | translate}}\n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n
\n \n\n \n
\n \n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_WRONG_PASSWORD\' | translate}}.\n \n
\n \n\n \n
\n \n
\n \n \n \n \n
\n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n
\n \n\n \n
\n \n \n
\n \n\n \n
\n
\n\n \n
\n\n \n
\n \n \n {{$item}}\n \n {{transport}}\n \n \n \n {{ \'DESCRIPTION_VOICE_TRANSPORT\' | translate }}\n \n
\n \n\n \n
\n \n \n {{$item}}\n \n {{allow}}\n \n \n \n {{ \'DESCRIPTION_VOICE_CODEC\' | translate }}\n \n
\n \n\n \n \n
\n
\n\n \n

{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}

\n \n \n
\n
\n
\n
\n \n
\n'), -a.put("app/staff/user/list/list.html",'\n
\n
\n \n\n \n
\n
\n
\n \n {{ \'APPLICATION_USERS\' | translate }} \n
\n \n
\n
\n \n
\n
{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}
\n
\n \n
\n
\n \n
\n
\n\n'),a.put("app/staff/user/view/view.account.html",'
\n
\n
\n
\n
\n \n {{ \'APPLICATION_PROFILE\' | translate}} {{ \'APPLICATION_ACCOUNT\' | translate}}\n
\n \n
\n\n
\n
\n \n
\n
\n\n \n
\n \n \n {{$select.selected | uppercase}}\n \n {{role | uppercase}}\n \n \n
\n \n\n \n
\n \n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n
\n \n\n \n
\n \n \n
\n \n\n \n
\n \n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n \n
\n \n\n \n
\n \n \n
\n \n\n \n
\n
\n \n\n \n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n \n {{ \'APPLICATION_SELECT_IMAGE\' | translate }} \n
\n
\n \n \n
\n

\n
{{ \'MESSAGE_SUPPORTED_FORMATS\' | translate }} jpg, png, jpeg.\n

\n
\n
\n
\n
\n
\n \n \n \n \n \n \n \n \n
\n \n {{ item.file.name }}\n \n \n {{ item.file.size/1024/1024|number:2 }} MB\n \n \n
\n
\n
\n
\n \n \n
\n
\n \n
\n \n \n \n {{\'MESSAGE_PASSWORD_FORMAT\' | translate}}\n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n
\n \n \n
\n \n \n \n {{setting.securePassword ? \'MESSAGE_PASSWORD_FORMAT\' : \'MESSAGE_PASSWORD_LIGTH_FORMAT\' | translate}}\n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n
\n \n \n
\n \n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n
\n \n \n
\n
\n \n
\n
\n
\n
\n
\n'),a.put("app/staff/user/view/view.html",'\n
\n
\n \n\n \n
\n \n
\n \n
\n \n
\n \n \n
\n
\n {{user.fullname}}\n
\n
\n {{user.role}}\n
\n
\n \n\n \n \n \n
\n \n
\n \n \n
\n
\n \n
\n
\n\n'),a.put("app/staff/user/view/view.permit.chat.html",'\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n\n'),a.put("app/staff/user/view/view.permit.fax.html",'\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n\n'),a.put("app/staff/user/view/view.permit.html","\n\n\n"),a.put("app/staff/user/view/view.permit.mail.html",'\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n\n'),a.put("app/staff/user/view/view.permit.modules.html",'\n
\n
\n
\n └── \n \n
\n
\n └── \n \n
\n
\n
\n\n'),a.put("app/staff/user/view/view.permit.openchannel.html",'\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n\n'),a.put("app/staff/user/view/view.permit.sms.html",'\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n\n'),a.put("app/staff/user/view/view.permit.voice.html",'\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n\n'),a.put("app/staff/user/view/view.voice.html",'
\n
\n
\n
\n
\n \n {{ \'APPLICATION_ACCOUNT\' | translate}} {{ \'APPLICATION_VOICE\' | translate}}\n
\n
\n
\n
\n\n \n
\n \n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_EXIST_INTERNAL\' | translate}}.\n \n
\n \n\n \n
\n \n \n {{$item}}\n \n {{transport}}\n \n \n \n {{ \'DESCRIPTION_VOICE_TRANSPORT\' | translate }}\n \n
\n \n\n \n
\n \n \n {{$item}}\n'+" \n {{allow}}\n \n \n \n {{ 'DESCRIPTION_VOICE_CODEC' | translate }}\n \n
\n \n\n \n
\n
\n
\n
\n
\n"),a.put("app/staff/user/wizard/wizard.html",'
\n \n \n \n\n \n
\n
\n
\n \n {{ \'APPLICATION_USER\' | translate }} WIZARD \n
\n
\n
\n \n \n
\n\n \n
\n \n \n {{$select.selected | uppercase}}\n \n {{role | uppercase}}\n \n \n
\n \n\n \n
\n \n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n
\n \n\n \n
\n \n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_INVALID_PATTERN_NAME\' | translate}}.\n \n
\n \n\n \n
\n \n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n \n
\n \n\n \n
\n \n \n \n {{\'MESSAGE_PASSWORD_FORMAT\' | translate}}\n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n
\n \n\n \n
\n \n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_WRONG_PASSWORD\' | translate}}.\n \n
\n \n\n \n
\n \n
\n \n \n \n \n
\n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n
\n \n\n \n
\n \n \n
\n \n\n \n
\n
\n\n \n

{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}

\n \n \n
\n
\n
\n
\n \n
\n'), +a.put("app/staff/user/list/list.html",'\n
\n
\n \n\n \n
\n
\n
\n \n {{ \'APPLICATION_USERS\' | translate }} \n
\n \n
\n
\n \n
\n
{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}
\n
\n \n
\n
\n \n
\n
\n\n'),a.put("app/staff/user/view/view.account.html",'
\n
\n
\n
\n
\n \n {{ \'APPLICATION_PROFILE\' | translate}} {{ \'APPLICATION_ACCOUNT\' | translate}}\n
\n \n
\n\n
\n
\n \n
\n
\n\n \n
\n \n \n {{$select.selected | uppercase}}\n \n {{role | uppercase}}\n \n \n
\n \n\n \n
\n \n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n
\n \n\n \n
\n \n \n
\n \n\n \n
\n \n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n \n
\n \n\n \n
\n \n \n
\n \n\n \n
\n
\n \n\n \n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n \n {{ \'APPLICATION_SELECT_IMAGE\' | translate }} \n
\n
\n \n \n
\n

\n
{{ \'MESSAGE_SUPPORTED_FORMATS\' | translate }} jpg, png, jpeg.\n

\n
\n
\n
\n
\n
\n \n \n \n \n \n \n \n \n
\n \n {{ item.file.name }}\n \n \n {{ item.file.size/1024/1024|number:2 }} MB\n \n \n
\n
\n
\n
\n \n \n
\n
\n \n
\n \n \n \n {{\'MESSAGE_PASSWORD_FORMAT\' | translate}}\n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n
\n \n \n
\n \n \n \n {{setting.securePassword ? \'MESSAGE_PASSWORD_FORMAT\' : \'MESSAGE_PASSWORD_LIGTH_FORMAT\' | translate}}\n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n
\n \n \n
\n \n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n
\n \n \n
\n
\n \n
\n
\n
\n
\n
\n'),a.put("app/staff/user/view/view.html",'\n
\n
\n \n\n \n
\n \n
\n \n
\n \n
\n \n \n
\n
\n {{user.fullname}}\n
\n
\n {{user.role}}\n
\n
\n \n\n \n \n \n
\n \n
\n \n \n
\n
\n \n
\n
\n\n'),a.put("app/staff/user/view/view.permit.chat.html",'\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n\n'),a.put("app/staff/user/view/view.permit.fax.html",'\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n\n'),a.put("app/staff/user/view/view.permit.html","\n\n\n"),a.put("app/staff/user/view/view.permit.mail.html",'\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n\n'),a.put("app/staff/user/view/view.permit.modules.html",'\n
\n
\n
\n └── \n \n
\n
\n └── \n \n
\n
\n
\n\n'),a.put("app/staff/user/view/view.permit.openchannel.html",'\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n\n'),a.put("app/staff/user/view/view.permit.sms.html",'\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n\n'),a.put("app/staff/user/view/view.permit.voice.html",'\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n\n'),a.put("app/staff/user/view/view.voice.html",'
\n
\n
\n
\n
\n \n {{ \'APPLICATION_ACCOUNT\' | translate}} {{ \'APPLICATION_VOICE\' | translate}}\n
\n
\n
\n
\n\n \n
\n \n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_EXIST_INTERNAL\' | translate}}.\n \n
\n \n\n \n
\n \n \n {{$item}}\n \n {{transport}}\n \n \n \n {{ \'DESCRIPTION_VOICE_TRANSPORT\' | translate }}\n \n
\n \n\n \n
\n \n \n {{$item}}\n'+" \n {{allow}}\n \n \n \n {{ 'DESCRIPTION_VOICE_CODEC' | translate }}\n \n
\n \n\n \n
\n
\n
\n
\n
\n"),a.put("app/staff/user/wizard/wizard.html",'
\n \n \n \n\n \n
\n
\n
\n \n {{ \'APPLICATION_USER\' | translate }} WIZARD \n
\n
\n
\n \n \n
\n\n \n
\n \n \n {{$select.selected | uppercase}}\n \n {{role | uppercase}}\n \n \n
\n \n\n \n
\n \n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n
\n \n\n \n
\n \n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_INVALID_PATTERN_NAME\' | translate}}.\n \n
\n \n\n \n
\n \n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n \n
\n \n\n \n
\n \n \n \n {{\'MESSAGE_PASSWORD_FORMAT\' | translate}}\n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n
\n \n\n \n
\n \n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_WRONG_PASSWORD\' | translate}}.\n \n
\n \n\n \n
\n \n
\n \n \n \n \n
\n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n
\n \n\n \n
\n \n \n
\n \n\n \n
\n
\n\n \n

{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}

\n \n \n
\n
\n
\n
\n \n
\n'), a.put("app/sugarcrm/list/list.html",'\n
\n
\n \n\n \n
\n
\n
\n \n {{ \'APPLICATION_SUGARCRM\' | translate }} \n
\n \n
\n
\n \n
\n
{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}
\n
\n \n
\n
\n \n
\n
\n\n'),a.put("app/sugarcrm/view/view.account.html",'
\n
\n
\n
\n
\n \n {{\'APPLICATION_ACCOUNT\' | translate}}\n
\n \n
\n
\n
\n \n
\n
\n \n
\n \n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n
\n \n \n
\n \n \n
\n \n\n \n
\n \n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n
\n \n\n \n
\n \n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n
\n \n\n \n
\n \n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n
\n \n\n \n
\n
\n \n\n
\n
\n
\n
\n
\n'),a.put("app/sugarcrm/view/view.configuration.html",'
\n
\n \n
\n
\n
\n \n {{ \'APPLICATION_CONFIGURATION\' | translate }} WIZARD \n
\n
\n
\n \n \n
\n \n
\n \n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n
\n \n \n
\n \n \n
\n \n\n \n
\n
\n\n \n

{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}

\n \n \n
\n
\n
\n
\n \n
\n
\n\n'),a.put("app/sugarcrm/view/view.configurationSettings.html",'
\n
\n
\n
\n
\n \n {{\'APPLICATION_CONFIGURATION\' | translate}}: {{configurationName}}\n
\n \n
\n
\n
\n \n
\n
\n
\n All following fields will be join by blank space:\n
\n
\n \n
\n
\n
\n \n
\n
\n \n {{$select.selected | capitalize}}\n \n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n \n {{$select.selected.name}}\n \n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n \n
\n \n \n
\n
\n
\n All following fields will be join by new line:\n
\n
\n \n
\n
\n
\n \n
\n \n
\n \n {{$select.selected | ucfirst}}\n \n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n \n
\n
\n \n {{$select.selected | capitalize}}\n \n
\n
\n
\n
\n
\n \n
\n
\n
\n \n {{$select.selected.name}}\n \n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n \n
\n \n \n
\n
\n
\n Add how to fill the fields present in your account:\n
\n
\n \n
\n
\n
\n \n
\n
\n \n {{$select.selected.label}}\n \n
\n
\n
\n
\n
\n
\n \n {{$select.selected.name}}\n \n
\n
\n
\n
\n
\n
\n
\n \n {{$select.selected | ucfirst}}\n \n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n \n {{$select.selected.name}}\n \n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n \n
\n \n
\n
\n
\n
\n
\n'),a.put("app/sugarcrm/view/view.configurations.html",'
\n
\n
\n
\n
\n
\n \n {{\'APPLICATION_CONFIGURATIONS\' | translate}}\n
\n \n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{\'APPLICATION_NAME\' | translate}}{{\'APPLICATION_DESCRIPTION\' | translate}}{{ \'APPLICATION_ACTIONS\' | translate }}
{{configuration.name}}{{configuration.description}}\n \n {{ \'APPLICATION_SETTINGS\' | translate}}\n \n \n {{ \'APPLICATION_DELETE\' | translate }}\n \n
\n No configuration available\n
\n \n
\n
\n
\n
\n
\n'),a.put("app/sugarcrm/view/view.html",'\n
\n
\n \n\n \n
\n \n
\n \n
\n \n
\n \n \n
\n
\n {{account.name}}\n
\n
\n {{account.remoteUri}}\n
\n
\n \n \n \n \n
\n \n
\n \n \n
\n
\n \n
\n
\n\n'),a.put("app/sugarcrm/wizard/wizard.html",'\n\n\n\n\n
\n
\n \n
\n
\n
\n \n {{ \'APPLICATION_ACCOUNT\' | translate }} WIZARD \n
\n
\n
\n \n \n
\n\n \n
\n \n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n
\n \n\n \n
\n \n \n
\n \n\n \n
\n \n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n
\n \n\n\n \n
\n \n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_EXIST_DOMAIN\' | translate}}.\n \n
\n \n\n \n
\n \n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n
\n \n\n \n\n
\n
\n\n \n

{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}

\n \n \n
\n\n
\n\n
\n
\n \n
\n
\n\n'),a.put("app/tools/answer/list/list.create.modal.html",'\n\n\n'), a.put("app/tools/answer/list/list.html",'\n
\n
\n \n\n \n
\n
\n
\n \n {{ \'APPLICATION_CANNED_ANSWERS\' | translate }} \n
\n \n
\n
\n \n
\n
{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}
\n
\n \n
\n
\n \n
\n
\n\n'),a.put("app/tools/answer/view/view.html",'\n
\n
\n \n\n \n
\n \n
\n \n
\n \n
\n \n \n
\n
\n {{answer.name}}\n
\n
\n \n\n \n \n \n
\n \n
\n \n \n
\n
\n \n
\n
\n\n'),a.put("app/tools/answer/view/view.settings.html",'
\n
\n
\n
\n
\n \n {{ \'APPLICATION_CANNED_ANSWER\' | translate}} {{ \'APPLICATION_SETTINGS\' | translate}} \n
\n \n
\n\n
\n
\n \n
\n
\n\n \n
\n \n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n
\n \n\n \n
\n \n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n
\n \n\n \n
\n \n \n
\n \n \n
\n
\n \n\n
\n
\n
\n
\n
\n'),a.put("app/tools/automation/list/list.html",'\n\n\n
\n
\n \n
\n
\n
\n \n {{ \'APPLICATION_AUTOMATIONS\' | translate }} \n
\n \n
\n
\n \n
\n
{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}
\n
\n \n
\n
\n \n
\n
\n\n'),a.put("app/tools/automation/view/view.html",'\n
\n
\n \n\n\n\n\n \n
\n \n
\n \n
\n \n
\n \n\n \n
\n
\n {{ automation.name }}\n
\n
\n {{ automation.description }}\n
\n
\n \n\n \n \n \n
\n
\n \n \n
\n
\n \n
\n
\n\n'),a.put("app/tools/automation/view/view.settings.html",'
\n
\n
\n \n
\n
\n
\n \n
\n \n
\n \n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n
\n \n\n \n
\n \n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n
\n \n\n \n
\n \n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n
\n \n\n \n
\n \n
\n \n
\n \n\n \n
\n \n \n
\n \n\n \n
\n \n
\n \n
\n
\n
\n \n :\n
\n
\n
\n
\n
\n
\n {{ \'APPLICATION_ALL\' | translate }} #{{$index+1}}\n
\n
\n \n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n\n \n
\n
\n
\n \n :\n
\n
\n
\n
\n
\n
\n {{ \'APPLICATION_ANY\' | translate }} #{{$index+1}}\n
\n
\n \n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n\n \n
\n
\n
\n \n {{ \'APPLICATION_ACTIONS\' | translate }}:\n
\n
\n
\n
\n
\n
\n {{ \'APPLICATION_ACTIONS\' | translate }} #{{$index+1}}\n
\n
\n \n
\n
\n
\n
\n
\n
\n \n {{$select.selected.name | translate}}\n \n
\n
\n
\n \n {{ \'APPLICATION_ACTION\' | translate }}\n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_INSERT_AT_LEAST_ONE_CONDITION\' | translate}}.\n \n
\n
\n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_INSERT_AT_LEAST_ONE_ACTION\' | translate}}.\n \n
\n \n
\n
\n
\n
\n
\n
\n
\n'),a.put("app/tools/automation/wizard/wizard.html",'
\n
\n \n \n \n\n \n
\n
\n
\n \n {{ \'APPLICATION_AUTOMATIONS\' | translate }} WIZARD \n
\n
\n
\n \n \n
\n \n
\n \n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n
\n \n\n \n
\n
\n \n
\n \n\n \n
\n \n \n
\n \n\n \n
\n
\n \n
\n
\n
\n
\n \n {{ \'APPLICATION_CHANNEL\' | translate }}\n
\n
\n
\n
\n \n \n {{$select.selected | capitalize}}\n \n
\n
\n
\n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n
\n
\n
\n\n \n
\n
\n
\n \n :\n
\n
\n
\n
\n
\n
\n {{ \'APPLICATION_ALL\' | translate }} #{{$index+1}}\n
\n
\n \n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n\n \n
\n
\n
\n \n :\n
\n
\n
\n
\n
\n
\n {{ \'APPLICATION_ANY\' | translate }} #{{$index+1}}\n
\n
\n \n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n\n \n
\n
\n
\n \n {{ \'APPLICATION_ACTIONS\' | translate }}:\n
\n
\n
\n
\n
\n
\n {{ \'APPLICATION_ACTIONS\' | translate }} #{{$index+1}}\n
\n
\n \n
\n
\n
\n
\n
\n
\n \n {{$select.selected.name | translate}}\n \n
\n
\n
\n \n {{ \'APPLICATION_ACTION\' | translate }}\n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_INSERT_AT_LEAST_ONE_CONDITION\' | translate}}.\n \n
\n
\n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_INSERT_AT_LEAST_ONE_ACTION\' | translate}}.\n \n
\n \n \n
\n
\n \n

{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}

\n \n \n
\n
\n
\n
\n \n
\n
\n\n'), a.put("app/tools/interval/list/list.create.modal.html",'\n\n\n'),a.put("app/tools/interval/list/list.html",'\n
\n
\n \n\n \n
\n
\n
\n \n {{ \'APPLICATION_INTERVALS\' | translate }} \n
\n
\n \n
\n \n
\n
\n
\n
\n \n
\n
{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}
\n
\n \n
\n
\n \n
\n
\n\n'),a.put("app/tools/interval/view/view.html",'\n
\n
\n \n\n \n
\n \n
\n \n
\n \n
\n \n \n
\n
\n {{interval.name}}\n
\n \n
\n \n\n \n \n \n
\n \n
\n \n \n
\n
\n \n
\n
\n\n"),a.put("app/tools/interval/view/view.settings.html",'
\n
\n
\n
\n
\n \n {{ \'APPLICATION_INTERVAL\' | translate}} {{ \'APPLICATION_SETTINGS\' | translate}} \n
\n \n
\n\n
\n
\n \n
\n
\n\n \n
\n \n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n
\n \n\n \n
\n \n \n
\n \n\n \n
\n
\n \n\n
\n
\n
\n
\n
\n'),a.put("app/tools/interval/view/view.subinterval.html",'\n
\n
\n \n
\n
\n
\n \n {{ \'APPLICATION_NEW_SUBINTERVAL\' | translate }} WIZARD \n
\n
\n
\n \n \n
\n\n \n
\n \n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n
\n \n\n \n
\n \n
\n
\n
to
\n
\n \n
\n
\n \n\n \n
\n \n
\n \n {{$select.selected.name | translate}}\n \n {{weekDay.name | translate}}\n \n \n to\n \n {{$select.selected.name | translate}}\n \n {{weekDay.name | translate}}\n \n \n
\n
\n \n\n \n
\n \n
\n \n {{$select.selected === \'always\' ? \'APPLICATION_ALWAYS\' : $select.selected | translate}}\n \n {{monthDay === \'always\' ? \'APPLICATION_ALWAYS\' : monthDay | translate}}\n \n \n to\n \n {{$select.selected === \'always\' ? \'APPLICATION_ALWAYS\' : $select.selected | translate}}\n \n {{monthDay === \'always\' ? \'APPLICATION_ALWAYS\' : monthDay | translate}}\n \n \n
\n
\n \n\n \n
\n \n
\n \n {{$select.selected.name | translate}}\n \n {{month.name | translate}}\n \n \n to\n \n {{$select.selected.name | translate}}\n \n {{month.name | translate}}\n \n \n
\n
\n \n\n\n\n \n
\n
\n\n\n \n

{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}

\n \n \n
\n
\n
\n
\n \n
\n
\n\n'),a.put("app/tools/interval/view/view.subintervalSettings.html",'\n
\n
\n \n
\n
\n
\n \n {{ \'APPLICATION_SUBINTERVAL_SETTINGS\' | translate }} WIZARD \n
\n
\n
\n \n
\n {{subinterval.name}}\n
\n \n
\n\n \n
\n \n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n
\n \n\n \n
\n \n
\n
\n
to
\n
\n \n
\n
\n \n\n \n
\n \n
\n \n {{$select.selected.name | translate}}\n \n {{weekDay.name | translate}}\n \n \n to\n \n {{$select.selected.name | translate}}\n \n {{weekDay.name | translate}}\n \n \n
\n
\n \n\n \n
\n \n
\n \n {{$select.selected === \'always\' ? \'APPLICATION_ALWAYS\' : $select.selected | translate}}\n \n {{monthDay === \'always\' ? \'APPLICATION_ALWAYS\' : monthDay | translate}}\n \n \n to\n \n {{$select.selected === \'always\' ? \'APPLICATION_ALWAYS\' : $select.selected | translate}}\n \n {{monthDay === \'always\' ? \'APPLICATION_ALWAYS\' : monthDay | translate}}\n \n \n
\n
\n \n\n \n
\n \n
\n \n {{$select.selected.name | translate}}\n \n {{month.name | translate}}\n \n \n to\n \n {{$select.selected.name | translate}}\n \n {{month.name | translate}}\n \n \n
\n
\n \n\n\n\n \n
\n
\n\n\n \n

{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}

\n \n \n
\n
\n
\n
\n \n
\n
\n\n'),a.put("app/tools/interval/view/view.subintervals.html",'
\n
\n
\n
\n
\n
\n \n {{\'APPLICATION_SUBINTERVALS\' | translate}}\n
\n \n
\n
\n \n
\n
{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}
\n
\n \n
\n
\n
\n
\n
\n'),a.put("app/tools/pause/list/list.create.modal.html",'\n\n\n'),a.put("app/tools/pause/list/list.html",'\n
\n
\n \n\n \n
\n
\n
\n \n {{ \'APPLICATION_PAUSES\' | translate }} \n
\n \n
\n
\n \n
\n
{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}
\n
\n \n
\n
\n \n
\n
\n\n'),a.put("app/tools/pause/view/view.html",'\n
\n
\n \n\n \n
\n \n
\n \n
\n \n
\n \n \n
\n
\n {{pause.name}}\n
\n
\n \n\n \n \n \n
\n \n
\n \n \n
\n
\n \n
\n
\n\n'),a.put("app/tools/pause/view/view.settings.html",'
\n
\n
\n
\n
\n \n {{ \'APPLICATION_PAUSE\' | translate}} {{ \'APPLICATION_SETTINGS\' | translate}} \n
\n \n
\n\n
\n
\n \n
\n
\n\n \n
\n \n \n \n {{\'APPLICATION_WARNING\' | translate}}! {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n \n
\n \n\n \n
\n \n \n
\n \n \n
\n
\n \n\n
\n
\n
\n
\n
\n'), diff --git a/public/assets/plugins/jscripty/js/Actions.js b/public/assets/plugins/jscripty/js/Actions.js index aeaa420..77e066e 100644 --- a/public/assets/plugins/jscripty/js/Actions.js +++ b/public/assets/plugins/jscripty/js/Actions.js @@ -1,634 +1 @@ -'use strict'; -/** - * $Id: Actions.js,v 1.7 2013-02-14 07:48:01 gaudenz Exp $ - * Copyright (c) 2006-2012, JGraph Ltd - */ -/** - * Constructs the actions object for the given UI. - */ -function Actions(editorUi) { - this.editorUi = editorUi; - this.actions = new Object(); - this.init(); -}; - -/** - * Adds the default actions. - */ -Actions.prototype.init = function() { - var ui = this.editorUi; - var editor = ui.editor; - var graph = editor.graph; - - // File actions - this.addAction('new', function() { - ui.showDialog(new NewDialog(ui).container, 300, 180, true, true); - }); - this.addAction('open', function() { - ui.showDialog(new OpenDialog(ui).container, 300, 180, true, true); - }); - this.addAction('save', function() { - ui.saveFile(false); - }, null, null, 'Ctrl+S'); - this.addAction('saveAs', function() { - ui.saveFile(true); - }, null, null, 'Ctrl+Shift-S'); - this.addAction('publish', function() { - ui.publishFile(false); - }, null, null, 'Ctrl+Shift+P'); - this.addAction('variable', function() { - ui.showDialog(new VariableDialog(ui).container, 300, 180, true, true); - }); - this.addAction('import', function() { - ui.showDialog(new ImportDialog(ui).container, 300, 200, true, true); - }); - this.addAction('export', function() { - ui.showDialog(new ExportDialog(ui).container, 300, 200, true, true); - }, null, null, 'Ctrl+E'); - this.put('editFile', new Action(mxResources.get('edit'), mxUtils.bind(this, - function() { - this.editorUi.showDialog(new EditFileDialog(ui).container, 620, 420, - true, true); - }))); - this.addAction('rename', function() { - ui.showDialog(new RenameDialog(ui).container, 300, 180, true, true); - }); - this.addAction('print', function() { - mxUtils.printScreen(graph); - }, null, 'sprite-print', 'Ctrl+P'); - this.addAction('preview', function() { - mxUtils.show(graph, null, 10, 10); - }); - - // Edit actions - this.addAction('undo', function() { - editor.undoManager.undo(); - }, null, 'sprite-undo', 'Ctrl+Z'); - this.addAction('redo', function() { - editor.undoManager.redo(); - }, null, 'sprite-redo', 'Ctrl+Y'); - this.addAction('cut', function() { - mxClipboard.cut(graph); - }, null, 'sprite-cut', 'Ctrl+X'); - this.addAction('copy', function() { - mxClipboard.copy(graph); - }, null, 'sprite-copy', 'Ctrl+C'); - this.addAction('paste', function() { - mxClipboard.paste(graph); - }, false, 'sprite-paste', 'Ctrl+V'); - this.addAction('delete', function() { - graph.removeCells(); - }, null, null, 'Delete'); - this.addAction('duplicate', function() { - var s = graph.gridSize; - graph.setSelectionCells(graph.moveCells(graph.getSelectionCells(), s, s, - true)); - }, null, null, 'Ctrl+D'); - this.addAction('selectVertices', function() { - graph.selectVertices(); - }, null, null, 'Ctrl+Shift+V'); - this.addAction('selectEdges', function() { - graph.selectEdges(); - }, null, null, 'Ctrl+Shift+E'); - this.addAction('selectAll', function() { - graph.selectAll(); - }, null, null, 'Ctrl+A'); - - // Navigation actions - this.addAction('home', function() { - graph.home(); - }, null, null, 'Home'); - this.addAction('exitGroup', function() { - graph.exitGroup(); - }, null, null, 'Page Up'); - this.addAction('enterGroup', function() { - graph.enterGroup(); - }, null, null, 'Page Down'); - this.addAction('expand', function() { - graph.foldCells(false); - }, null, null, 'Enter'); - this.addAction('collapse', function() { - graph.foldCells(true); - }, null, null, 'Backspace'); - - // Arrange actions - this.addAction('toFront', function() { - graph.orderCells(false); - }, null, null, 'Ctrl+F'); - this.addAction('toBack', function() { - graph.orderCells(true); - }, null, null, 'Ctrl+B'); - this.addAction('group', function() { - graph.setSelectionCell(graph.groupCells(null, 0)); - }, null, null, 'Ctrl+G'); - this.addAction('ungroup', function() { - graph.setSelectionCells(graph.ungroupCells()); - }, null, null, 'Ctrl+U'); - this.addAction('removeFromGroup', function() { - graph.removeCellsFromParent(); - }); - this.addAction('editLink', function() { - var cell = graph.getSelectionCell(); - var link = graph.getLinkForCell(cell); - - if (link == null) { - link = ''; - } - - link = mxUtils.prompt(mxResources.get('enterValue'), link); - - if (link != null) { - graph.setLinkForCell(cell, link); - } - }); - this.addAction('openLink', function() { - var cell = graph.getSelectionCell(); - var link = graph.getLinkForCell(cell); - - if (link != null) { - window.open(link); - } - }); - this.addAction('autosize', function() { - var cells = graph.getSelectionCells(); - - if (cells != null) { - graph.getModel().beginUpdate(); - try { - for (var i = 0; i < cells.length; i++) { - var cell = cells[i]; - - if (graph.getModel().getChildCount(cell)) { - graph.updateGroupBounds([cell], 20); - } else { - graph.updateCellSize(cell); - } - } - } finally { - graph.getModel().endUpdate(); - } - } - }); - this.addAction('wordWrap', function() { - var state = graph.getView().getState(graph.getSelectionCell()); - var value = 'wrap'; - - if (state != null && state.style[mxConstants.STYLE_WHITE_SPACE] == 'wrap') { - value = null; - } - - graph.setCellStyles(mxConstants.STYLE_WHITE_SPACE, value); - }); - this.addAction('rotation', function() { - var value = '0'; - var state = graph.getView().getState(graph.getSelectionCell()); - - if (state != null) { - value = state.style[mxConstants.STYLE_ROTATION] || value; - } - - value = mxUtils.prompt(mxResources.get('enterValue') + ' (' + - mxResources.get('rotation') + ' 0-360)', value); - - if (value != null) { - graph.setCellStyles(mxConstants.STYLE_ROTATION, value); - } - }); - this.addAction('tilt', function() { - var cells = graph.getSelectionCells(); - - if (cells != null) { - graph.getModel().beginUpdate(); - try { - for (var i = 0; i < cells.length; i++) { - var cell = cells[i]; - - if (graph.getModel().isVertex(cell) && graph.getModel().getChildCount( - cell) == 0) { - var geo = graph.getCellGeometry(cell); - - if (geo != null) { - // Rotates the size and position in the geometry - geo = geo.clone(); - geo.x += geo.width / 2 - geo.height / 2; - geo.y += geo.height / 2 - geo.width / 2; - var tmp = geo.width; - geo.width = geo.height; - geo.height = tmp; - graph.getModel().setGeometry(cell, geo); - - // Reads the current direction and advances by 90 degrees - var state = graph.view.getState(cell); - - if (state != null) { - var dir = state.style[mxConstants.STYLE_DIRECTION] || 'east' /*default*/ ; - - if (dir == 'east') { - dir = 'south'; - } else if (dir == 'south') { - dir = 'west'; - } else if (dir == 'west') { - dir = 'north'; - } else if (dir == 'north') { - dir = 'east'; - } - - graph.setCellStyles(mxConstants.STYLE_DIRECTION, dir, [cell]); - } - } - } - } - } finally { - graph.getModel().endUpdate(); - } - } - }, null, null, 'Ctrl+R'); - - // View actions - this.addAction('actualSize', function() { - graph.zoomTo(1); - }); - this.addAction('zoomIn', function() { - graph.zoomIn(); - }, null, null, 'Add'); - this.addAction('zoomOut', function() { - graph.zoomOut(); - }, null, null, 'Subtract'); - this.addAction('fitWindow', function() { - graph.fit(); - }); - - this.addAction('fitPage', mxUtils.bind(this, function() { - if (!graph.pageVisible) { - this.get('pageView').funct(); - } - - var fmt = graph.pageFormat; - var ps = graph.pageScale; - var cw = graph.container.clientWidth - 20; - var ch = graph.container.clientHeight - 20; - - var scale = Math.floor(100 * Math.min(cw / fmt.width / ps, ch / fmt.height / - ps)) / 100; - graph.zoomTo(scale); - - graph.container.scrollLeft = Math.round(graph.view.translate.x * scale - - Math.max(10, (graph.container.clientWidth - fmt.width * ps * scale) / 2) - ); - graph.container.scrollTop = Math.round(graph.view.translate.y * scale - - Math.max(10, (graph.container.clientHeight - fmt.height * ps * scale) / - 2)); - })); - this.addAction('fitPageWidth', mxUtils.bind(this, function() { - if (!graph.pageVisible) { - this.get('pageView').funct(); - } - - var fmt = graph.pageFormat; - var ps = graph.pageScale; - var cw = graph.container.clientWidth - 20; - - var scale = Math.floor(100 * cw / fmt.width / ps) / 100; - graph.zoomTo(scale); - - graph.container.scrollLeft = Math.round(graph.view.translate.x * scale - - Math.max(10, (graph.container.clientWidth - fmt.width * ps * scale) / 2) - ); - graph.container.scrollTop = Math.round(graph.view.translate.y * scale - - Math.max(10, (graph.container.clientHeight - fmt.height * ps * scale) / - 2)); - })); - this.put('customZoom', new Action(mxResources.get('custom'), function() { - var value = mxUtils.prompt(mxResources.get('enterValue') + ' (%)', - parseInt(graph.getView().getScale() * 100)); - - if (value != null && value.length > 0 && !isNaN(parseInt(value))) { - graph.zoomTo(parseInt(value) / 100); - } - })); - - // Option actions - var action = null; - action = this.addAction('grid', function() { - graph.setGridEnabled(!graph.isGridEnabled()); - editor.updateGraphComponents(); - }, null, null, 'Ctrl+Shift+G'); - action.setToggleAction(true); - action.setSelectedCallback(function() { - return graph.isGridEnabled(); - }); - action = this.addAction('guides', function() { - graph.graphHandler.guidesEnabled = !graph.graphHandler.guidesEnabled; - }); - action.setToggleAction(true); - action.setSelectedCallback(function() { - return graph.graphHandler.guidesEnabled; - }); - action = this.addAction('tooltips', function() { - graph.tooltipHandler.setEnabled(!graph.tooltipHandler.isEnabled()); - }); - action.setToggleAction(true); - action.setSelectedCallback(function() { - return graph.tooltipHandler.isEnabled(); - }); - action = this.addAction('navigation', function() { - graph.foldingEnabled = !graph.foldingEnabled; - graph.view.revalidate(); - }); - action.setToggleAction(true); - action.setSelectedCallback(function() { - return graph.foldingEnabled; - }); - action = this.addAction('scrollbars', function() { - graph.scrollbars = !graph.scrollbars; - editor.updateGraphComponents(); - - if (!graph.scrollbars) { - var t = graph.view.translate; - graph.view.setTranslate(t.x - graph.container.scrollLeft / graph.view.scale, - t.y - graph.container.scrollTop / graph.view.scale); - graph.container.scrollLeft = 0; - graph.container.scrollTop = 0; - graph.sizeDidChange(); - } else { - var dx = graph.view.translate.x; - var dy = graph.view.translate.y; - - graph.view.translate.x = 0; - graph.view.translate.y = 0; - graph.sizeDidChange(); - graph.container.scrollLeft -= Math.round(dx * graph.view.scale); - graph.container.scrollTop -= Math.round(dy * graph.view.scale); - } - }, !mxClient.IS_TOUCH); - action.setToggleAction(true); - action.setSelectedCallback(function() { - return graph.container.style.overflow == 'auto'; - }); - action = this.addAction('pageView', mxUtils.bind(this, function() { - graph.pageVisible = !graph.pageVisible; - graph.pageBreaksVisible = graph.pageVisible; - graph.preferPageSize = graph.pageBreaksVisible; - graph.view.validate(); - graph.sizeDidChange(); - - editor.updateGraphComponents(); - editor.outline.update(); - - if (mxUtils.hasScrollbars(graph.container)) { - if (graph.pageVisible) { - graph.container.scrollLeft -= 20; - graph.container.scrollTop -= 20; - } else { - graph.container.scrollLeft += 20; - graph.container.scrollTop += 20; - } - } - })); - action.setToggleAction(true); - action.setSelectedCallback(function() { - return graph.pageVisible; - }); - action = this.addAction('connect', function() { - graph.setConnectable(!graph.connectionHandler.isEnabled()); - }, null, null, 'Ctrl+Q'); - action.setToggleAction(true); - action.setSelectedCallback(function() { - return graph.connectionHandler.isEnabled(); - }); - action = this.addAction('copyConnect', function() { - graph.connectionHandler.setCreateTarget(!graph.connectionHandler.isCreateTarget()); - }); - action.setToggleAction(true); - action.setSelectedCallback(function() { - return graph.connectionHandler.isCreateTarget(); - }); - - // Help actions - this.addAction('help', function() { - var ext = ''; - - if (mxResources.isLanguageSupported(mxClient.language)) { - ext = '_' + mxClient.language; - } - - window.open(RESOURCES_PATH + '/help' + ext + '.html'); - }); - this.put('about', new Action(mxResources.get('about') + ' Cally Square', - function() { - ui.showDialog(new AboutDialog(ui).container, 320, 280, true, true); - }, null, null, 'F1')); - - // Font style actions - var toggleFontStyle = mxUtils.bind(this, function(key, style) { - this.addAction(key, function() { - graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE, style); - }); - }); - - toggleFontStyle('bold', mxConstants.FONT_BOLD); - toggleFontStyle('italic', mxConstants.FONT_ITALIC); - toggleFontStyle('underline', mxConstants.FONT_UNDERLINE); - - // Format actions - this.addAction('shadow', function() { - graph.toggleCellStyles(mxConstants.STYLE_SHADOW); - }); - this.addAction('dashed', function() { - graph.toggleCellStyles(mxConstants.STYLE_DASHED); - }); - this.addAction('rounded', function() { - graph.toggleCellStyles(mxConstants.STYLE_ROUNDED); - }); - this.addAction('curved', function() { - graph.toggleCellStyles(mxConstants.STYLE_CURVED); - }); - this.addAction('style', function() { - var cells = graph.getSelectionCells(); - - if (cells != null && cells.length > 0) { - var model = graph.getModel(); - var style = mxUtils.prompt(mxResources.get('enterValue') + ' (' + - mxResources.get('style') + ')', - model.getStyle(cells[0]) || ''); - - if (style != null) { - graph.setCellStyle(style, cells); - } - } - }); - this.addAction('setAsDefaultEdge', function() { - graph.setDefaultEdge(graph.getSelectionCell()); - }); - this.addAction('addWaypoint', function() { - var cell = graph.getSelectionCell(); - - if (cell != null && graph.getModel().isEdge(cell)) { - var handler = editor.graph.selectionCellsHandler.getHandler(cell); - - if (handler instanceof mxEdgeHandler) { - var t = graph.view.translate; - var s = graph.view.scale; - var dx = t.x; - var dy = t.y; - - var parent = graph.getModel().getParent(cell); - var pgeo = graph.getCellGeometry(parent); - - if (graph.getModel().isVertex(parent) && pgeo != null) { - dx += pgeo.x; - dy += pgeo.y; - } - - handler.addPointAt(handler.state, graph.panningHandler.triggerX / s - dx, - graph.panningHandler.triggerY / s - dy); - } - } - }); - this.addAction('removeWaypoint', function() { - // TODO: Action should run with "this" set to action - var rmWaypointAction = ui.actions.get('removeWaypoint'); - - if (rmWaypointAction.handler != null) { - // NOTE: Popupevent handled and action updated in Menus.createPopupMenu - rmWaypointAction.handler.removePoint(rmWaypointAction.handler.state, - rmWaypointAction.index); - } - }); - this.addAction('image', function() { - function updateImage(value, w, h) { - var select = null; - var cells = graph.getSelectionCells(); - - graph.getModel().beginUpdate(); - try { - // Inserts new cell if no cell is selected - if (cells.length == 0) { - var gs = graph.getGridSize(); - cells = [graph.insertVertex(graph.getDefaultParent(), null, '', gs, gs, - w, h)]; - select = cells; - } - - graph.setCellStyles(mxConstants.STYLE_IMAGE, value, cells); - graph.setCellStyles(mxConstants.STYLE_SHAPE, 'image', cells); - - if (graph.getSelectionCount() == 1) { - if (w != null && h != null) { - var cell = cells[0]; - var geo = graph.getModel().getGeometry(cell); - - if (geo != null) { - geo = geo.clone(); - geo.width = w; - geo.height = h; - graph.getModel().setGeometry(cell, geo); - } - } - } - } finally { - graph.getModel().endUpdate(); - } - - if (select != null) { - graph.setSelectionCells(select); - graph.scrollCellToVisible(select[0]); - } - }; - - var value = ''; - var state = graph.getView().getState(graph.getSelectionCell()); - - if (state != null) { - value = state.style[mxConstants.STYLE_IMAGE] || value; - } - - value = mxUtils.prompt(mxResources.get('enterValue') + ' (' + mxResources.get( - 'url') + ')', value); - - if (value != null) { - if (value.length > 0) { - var img = new Image(); - - img.onload = function() { - updateImage(value, img.width, img.height); - }; - img.onerror = function() { - mxUtils.alert(mxResources.get('fileNotFound')); - }; - - img.src = value; - } - } - }); -}; - -/** - * Registers the given action under the given name. - */ -Actions.prototype.addAction = function(key, funct, enabled, iconCls, shortcut) { - return this.put(key, new Action(mxResources.get(key), funct, enabled, iconCls, - shortcut)); -}; - -/** - * Registers the given action under the given name. - */ -Actions.prototype.put = function(name, action) { - this.actions[name] = action; - - return action; -}; - -/** - * Returns the action for the given name or null if no such action exists. - */ -Actions.prototype.get = function(name) { - return this.actions[name]; -}; - -/** - * Constructs a new action for the given parameters. - */ -function Action(label, funct, enabled, iconCls, shortcut) { - mxEventSource.call(this); - this.label = label; - this.funct = funct; - this.enabled = (enabled != null) ? enabled : true; - this.iconCls = iconCls; - this.shortcut = shortcut; -}; - -// Action inherits from mxEventSource -mxUtils.extend(Action, mxEventSource); - -/** - * Sets the enabled state of the action and fires a stateChanged event. - */ -Action.prototype.setEnabled = function(value) { - if (this.enabled != value) { - this.enabled = value; - this.fireEvent(new mxEventObject('stateChanged')); - } -}; - -/** - * Sets the enabled state of the action and fires a stateChanged event. - */ -Action.prototype.setToggleAction = function(value) { - this.toggleAction = value; -}; - -/** - * Sets the enabled state of the action and fires a stateChanged event. - */ -Action.prototype.setSelectedCallback = function(funct) { - this.selectedCallback = funct; -}; - -/** - * Sets the enabled state of the action and fires a stateChanged event. - */ -Action.prototype.isSelected = function() { - return this.selectedCallback(); -}; +var _0xc245=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x64\x69\x74\x6F\x72\x55\x69","\x61\x63\x74\x69\x6F\x6E\x73","\x69\x6E\x69\x74","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x65\x64\x69\x74\x6F\x72","\x67\x72\x61\x70\x68","\x6E\x65\x77","\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x73\x68\x6F\x77\x44\x69\x61\x6C\x6F\x67","\x61\x64\x64\x41\x63\x74\x69\x6F\x6E","\x6F\x70\x65\x6E","\x73\x61\x76\x65","\x73\x61\x76\x65\x46\x69\x6C\x65","\x43\x74\x72\x6C\x2B\x53","\x73\x61\x76\x65\x41\x73","\x43\x74\x72\x6C\x2B\x53\x68\x69\x66\x74\x2D\x53","\x70\x75\x62\x6C\x69\x73\x68","\x70\x75\x62\x6C\x69\x73\x68\x46\x69\x6C\x65","\x43\x74\x72\x6C\x2B\x53\x68\x69\x66\x74\x2B\x50","\x76\x61\x72\x69\x61\x62\x6C\x65","\x69\x6D\x70\x6F\x72\x74","\x65\x78\x70\x6F\x72\x74","\x43\x74\x72\x6C\x2B\x45","\x65\x64\x69\x74\x46\x69\x6C\x65","\x65\x64\x69\x74","\x67\x65\x74","\x62\x69\x6E\x64","\x70\x75\x74","\x72\x65\x6E\x61\x6D\x65","\x70\x72\x69\x6E\x74","\x70\x72\x69\x6E\x74\x53\x63\x72\x65\x65\x6E","\x73\x70\x72\x69\x74\x65\x2D\x70\x72\x69\x6E\x74","\x43\x74\x72\x6C\x2B\x50","\x70\x72\x65\x76\x69\x65\x77","\x73\x68\x6F\x77","\x75\x6E\x64\x6F","\x75\x6E\x64\x6F\x4D\x61\x6E\x61\x67\x65\x72","\x73\x70\x72\x69\x74\x65\x2D\x75\x6E\x64\x6F","\x43\x74\x72\x6C\x2B\x5A","\x72\x65\x64\x6F","\x73\x70\x72\x69\x74\x65\x2D\x72\x65\x64\x6F","\x43\x74\x72\x6C\x2B\x59","\x63\x75\x74","\x73\x70\x72\x69\x74\x65\x2D\x63\x75\x74","\x43\x74\x72\x6C\x2B\x58","\x63\x6F\x70\x79","\x73\x70\x72\x69\x74\x65\x2D\x63\x6F\x70\x79","\x43\x74\x72\x6C\x2B\x43","\x70\x61\x73\x74\x65","\x73\x70\x72\x69\x74\x65\x2D\x70\x61\x73\x74\x65","\x43\x74\x72\x6C\x2B\x56","\x64\x65\x6C\x65\x74\x65","\x72\x65\x6D\x6F\x76\x65\x43\x65\x6C\x6C\x73","\x44\x65\x6C\x65\x74\x65","\x64\x75\x70\x6C\x69\x63\x61\x74\x65","\x67\x72\x69\x64\x53\x69\x7A\x65","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C\x73","\x6D\x6F\x76\x65\x43\x65\x6C\x6C\x73","\x73\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C\x73","\x43\x74\x72\x6C\x2B\x44","\x73\x65\x6C\x65\x63\x74\x56\x65\x72\x74\x69\x63\x65\x73","\x43\x74\x72\x6C\x2B\x53\x68\x69\x66\x74\x2B\x56","\x73\x65\x6C\x65\x63\x74\x45\x64\x67\x65\x73","\x43\x74\x72\x6C\x2B\x53\x68\x69\x66\x74\x2B\x45","\x73\x65\x6C\x65\x63\x74\x41\x6C\x6C","\x43\x74\x72\x6C\x2B\x41","\x68\x6F\x6D\x65","\x48\x6F\x6D\x65","\x65\x78\x69\x74\x47\x72\x6F\x75\x70","\x50\x61\x67\x65\x20\x55\x70","\x65\x6E\x74\x65\x72\x47\x72\x6F\x75\x70","\x50\x61\x67\x65\x20\x44\x6F\x77\x6E","\x65\x78\x70\x61\x6E\x64","\x66\x6F\x6C\x64\x43\x65\x6C\x6C\x73","\x45\x6E\x74\x65\x72","\x63\x6F\x6C\x6C\x61\x70\x73\x65","\x42\x61\x63\x6B\x73\x70\x61\x63\x65","\x74\x6F\x46\x72\x6F\x6E\x74","\x6F\x72\x64\x65\x72\x43\x65\x6C\x6C\x73","\x43\x74\x72\x6C\x2B\x46","\x74\x6F\x42\x61\x63\x6B","\x43\x74\x72\x6C\x2B\x42","\x67\x72\x6F\x75\x70","\x67\x72\x6F\x75\x70\x43\x65\x6C\x6C\x73","\x73\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C","\x43\x74\x72\x6C\x2B\x47","\x75\x6E\x67\x72\x6F\x75\x70","\x75\x6E\x67\x72\x6F\x75\x70\x43\x65\x6C\x6C\x73","\x43\x74\x72\x6C\x2B\x55","\x72\x65\x6D\x6F\x76\x65\x46\x72\x6F\x6D\x47\x72\x6F\x75\x70","\x72\x65\x6D\x6F\x76\x65\x43\x65\x6C\x6C\x73\x46\x72\x6F\x6D\x50\x61\x72\x65\x6E\x74","\x65\x64\x69\x74\x4C\x69\x6E\x6B","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C","\x67\x65\x74\x4C\x69\x6E\x6B\x46\x6F\x72\x43\x65\x6C\x6C","","\x65\x6E\x74\x65\x72\x56\x61\x6C\x75\x65","\x70\x72\x6F\x6D\x70\x74","\x73\x65\x74\x4C\x69\x6E\x6B\x46\x6F\x72\x43\x65\x6C\x6C","\x6F\x70\x65\x6E\x4C\x69\x6E\x6B","\x61\x75\x74\x6F\x73\x69\x7A\x65","\x62\x65\x67\x69\x6E\x55\x70\x64\x61\x74\x65","\x67\x65\x74\x4D\x6F\x64\x65\x6C","\x6C\x65\x6E\x67\x74\x68","\x67\x65\x74\x43\x68\x69\x6C\x64\x43\x6F\x75\x6E\x74","\x75\x70\x64\x61\x74\x65\x47\x72\x6F\x75\x70\x42\x6F\x75\x6E\x64\x73","\x75\x70\x64\x61\x74\x65\x43\x65\x6C\x6C\x53\x69\x7A\x65","\x65\x6E\x64\x55\x70\x64\x61\x74\x65","\x77\x6F\x72\x64\x57\x72\x61\x70","\x67\x65\x74\x53\x74\x61\x74\x65","\x67\x65\x74\x56\x69\x65\x77","\x77\x72\x61\x70","\x53\x54\x59\x4C\x45\x5F\x57\x48\x49\x54\x45\x5F\x53\x50\x41\x43\x45","\x73\x74\x79\x6C\x65","\x73\x65\x74\x43\x65\x6C\x6C\x53\x74\x79\x6C\x65\x73","\x72\x6F\x74\x61\x74\x69\x6F\x6E","\x30","\x53\x54\x59\x4C\x45\x5F\x52\x4F\x54\x41\x54\x49\x4F\x4E","\x20\x28","\x20\x30\x2D\x33\x36\x30\x29","\x74\x69\x6C\x74","\x69\x73\x56\x65\x72\x74\x65\x78","\x67\x65\x74\x43\x65\x6C\x6C\x47\x65\x6F\x6D\x65\x74\x72\x79","\x63\x6C\x6F\x6E\x65","\x78","\x77\x69\x64\x74\x68","\x68\x65\x69\x67\x68\x74","\x79","\x73\x65\x74\x47\x65\x6F\x6D\x65\x74\x72\x79","\x76\x69\x65\x77","\x53\x54\x59\x4C\x45\x5F\x44\x49\x52\x45\x43\x54\x49\x4F\x4E","\x65\x61\x73\x74","\x73\x6F\x75\x74\x68","\x77\x65\x73\x74","\x6E\x6F\x72\x74\x68","\x43\x74\x72\x6C\x2B\x52","\x61\x63\x74\x75\x61\x6C\x53\x69\x7A\x65","\x7A\x6F\x6F\x6D\x54\x6F","\x7A\x6F\x6F\x6D\x49\x6E","\x41\x64\x64","\x7A\x6F\x6F\x6D\x4F\x75\x74","\x53\x75\x62\x74\x72\x61\x63\x74","\x66\x69\x74\x57\x69\x6E\x64\x6F\x77","\x66\x69\x74","\x66\x69\x74\x50\x61\x67\x65","\x70\x61\x67\x65\x56\x69\x73\x69\x62\x6C\x65","\x66\x75\x6E\x63\x74","\x70\x61\x67\x65\x56\x69\x65\x77","\x70\x61\x67\x65\x46\x6F\x72\x6D\x61\x74","\x70\x61\x67\x65\x53\x63\x61\x6C\x65","\x63\x6C\x69\x65\x6E\x74\x57\x69\x64\x74\x68","\x63\x6C\x69\x65\x6E\x74\x48\x65\x69\x67\x68\x74","\x6D\x69\x6E","\x66\x6C\x6F\x6F\x72","\x73\x63\x72\x6F\x6C\x6C\x4C\x65\x66\x74","\x74\x72\x61\x6E\x73\x6C\x61\x74\x65","\x6D\x61\x78","\x72\x6F\x75\x6E\x64","\x73\x63\x72\x6F\x6C\x6C\x54\x6F\x70","\x66\x69\x74\x50\x61\x67\x65\x57\x69\x64\x74\x68","\x63\x75\x73\x74\x6F\x6D\x5A\x6F\x6F\x6D","\x63\x75\x73\x74\x6F\x6D","\x20\x28\x25\x29","\x67\x65\x74\x53\x63\x61\x6C\x65","\x67\x72\x69\x64","\x69\x73\x47\x72\x69\x64\x45\x6E\x61\x62\x6C\x65\x64","\x73\x65\x74\x47\x72\x69\x64\x45\x6E\x61\x62\x6C\x65\x64","\x75\x70\x64\x61\x74\x65\x47\x72\x61\x70\x68\x43\x6F\x6D\x70\x6F\x6E\x65\x6E\x74\x73","\x43\x74\x72\x6C\x2B\x53\x68\x69\x66\x74\x2B\x47","\x73\x65\x74\x54\x6F\x67\x67\x6C\x65\x41\x63\x74\x69\x6F\x6E","\x73\x65\x74\x53\x65\x6C\x65\x63\x74\x65\x64\x43\x61\x6C\x6C\x62\x61\x63\x6B","\x67\x75\x69\x64\x65\x73","\x67\x75\x69\x64\x65\x73\x45\x6E\x61\x62\x6C\x65\x64","\x67\x72\x61\x70\x68\x48\x61\x6E\x64\x6C\x65\x72","\x74\x6F\x6F\x6C\x74\x69\x70\x73","\x69\x73\x45\x6E\x61\x62\x6C\x65\x64","\x74\x6F\x6F\x6C\x74\x69\x70\x48\x61\x6E\x64\x6C\x65\x72","\x73\x65\x74\x45\x6E\x61\x62\x6C\x65\x64","\x6E\x61\x76\x69\x67\x61\x74\x69\x6F\x6E","\x66\x6F\x6C\x64\x69\x6E\x67\x45\x6E\x61\x62\x6C\x65\x64","\x72\x65\x76\x61\x6C\x69\x64\x61\x74\x65","\x73\x63\x72\x6F\x6C\x6C\x62\x61\x72\x73","\x73\x63\x61\x6C\x65","\x73\x65\x74\x54\x72\x61\x6E\x73\x6C\x61\x74\x65","\x73\x69\x7A\x65\x44\x69\x64\x43\x68\x61\x6E\x67\x65","\x6F\x76\x65\x72\x66\x6C\x6F\x77","\x61\x75\x74\x6F","\x70\x61\x67\x65\x42\x72\x65\x61\x6B\x73\x56\x69\x73\x69\x62\x6C\x65","\x70\x72\x65\x66\x65\x72\x50\x61\x67\x65\x53\x69\x7A\x65","\x76\x61\x6C\x69\x64\x61\x74\x65","\x75\x70\x64\x61\x74\x65","\x6F\x75\x74\x6C\x69\x6E\x65","\x68\x61\x73\x53\x63\x72\x6F\x6C\x6C\x62\x61\x72\x73","\x63\x6F\x6E\x6E\x65\x63\x74","\x63\x6F\x6E\x6E\x65\x63\x74\x69\x6F\x6E\x48\x61\x6E\x64\x6C\x65\x72","\x73\x65\x74\x43\x6F\x6E\x6E\x65\x63\x74\x61\x62\x6C\x65","\x43\x74\x72\x6C\x2B\x51","\x63\x6F\x70\x79\x43\x6F\x6E\x6E\x65\x63\x74","\x69\x73\x43\x72\x65\x61\x74\x65\x54\x61\x72\x67\x65\x74","\x73\x65\x74\x43\x72\x65\x61\x74\x65\x54\x61\x72\x67\x65\x74","\x68\x65\x6C\x70","\x6C\x61\x6E\x67\x75\x61\x67\x65","\x69\x73\x4C\x61\x6E\x67\x75\x61\x67\x65\x53\x75\x70\x70\x6F\x72\x74\x65\x64","\x5F","\x2F\x68\x65\x6C\x70","\x2E\x68\x74\x6D\x6C","\x61\x62\x6F\x75\x74","\x20\x43\x61\x6C\x6C\x79\x20\x53\x71\x75\x61\x72\x65","\x46\x31","\x74\x6F\x67\x67\x6C\x65\x43\x65\x6C\x6C\x53\x74\x79\x6C\x65\x46\x6C\x61\x67\x73","\x62\x6F\x6C\x64","\x69\x74\x61\x6C\x69\x63","\x75\x6E\x64\x65\x72\x6C\x69\x6E\x65","\x73\x68\x61\x64\x6F\x77","\x74\x6F\x67\x67\x6C\x65\x43\x65\x6C\x6C\x53\x74\x79\x6C\x65\x73","\x64\x61\x73\x68\x65\x64","\x72\x6F\x75\x6E\x64\x65\x64","\x63\x75\x72\x76\x65\x64","\x29","\x67\x65\x74\x53\x74\x79\x6C\x65","\x73\x65\x74\x43\x65\x6C\x6C\x53\x74\x79\x6C\x65","\x73\x65\x74\x41\x73\x44\x65\x66\x61\x75\x6C\x74\x45\x64\x67\x65","\x73\x65\x74\x44\x65\x66\x61\x75\x6C\x74\x45\x64\x67\x65","\x61\x64\x64\x57\x61\x79\x70\x6F\x69\x6E\x74","\x69\x73\x45\x64\x67\x65","\x67\x65\x74\x48\x61\x6E\x64\x6C\x65\x72","\x73\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C\x73\x48\x61\x6E\x64\x6C\x65\x72","\x67\x65\x74\x50\x61\x72\x65\x6E\x74","\x73\x74\x61\x74\x65","\x74\x72\x69\x67\x67\x65\x72\x58","\x70\x61\x6E\x6E\x69\x6E\x67\x48\x61\x6E\x64\x6C\x65\x72","\x74\x72\x69\x67\x67\x65\x72\x59","\x61\x64\x64\x50\x6F\x69\x6E\x74\x41\x74","\x72\x65\x6D\x6F\x76\x65\x57\x61\x79\x70\x6F\x69\x6E\x74","\x68\x61\x6E\x64\x6C\x65\x72","\x69\x6E\x64\x65\x78","\x72\x65\x6D\x6F\x76\x65\x50\x6F\x69\x6E\x74","\x69\x6D\x61\x67\x65","\x67\x65\x74\x47\x72\x69\x64\x53\x69\x7A\x65","\x67\x65\x74\x44\x65\x66\x61\x75\x6C\x74\x50\x61\x72\x65\x6E\x74","\x69\x6E\x73\x65\x72\x74\x56\x65\x72\x74\x65\x78","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x6F\x75\x6E\x74","\x67\x65\x74\x47\x65\x6F\x6D\x65\x74\x72\x79","\x73\x63\x72\x6F\x6C\x6C\x43\x65\x6C\x6C\x54\x6F\x56\x69\x73\x69\x62\x6C\x65","\x53\x54\x59\x4C\x45\x5F\x49\x4D\x41\x47\x45","\x75\x72\x6C","\x6F\x6E\x6C\x6F\x61\x64","\x6F\x6E\x65\x72\x72\x6F\x72","\x66\x69\x6C\x65\x4E\x6F\x74\x46\x6F\x75\x6E\x64","\x61\x6C\x65\x72\x74","\x73\x72\x63","\x63\x61\x6C\x6C","\x6C\x61\x62\x65\x6C","\x65\x6E\x61\x62\x6C\x65\x64","\x69\x63\x6F\x6E\x43\x6C\x73","\x73\x68\x6F\x72\x74\x63\x75\x74","\x65\x78\x74\x65\x6E\x64","\x73\x74\x61\x74\x65\x43\x68\x61\x6E\x67\x65\x64","\x66\x69\x72\x65\x45\x76\x65\x6E\x74","\x74\x6F\x67\x67\x6C\x65\x41\x63\x74\x69\x6F\x6E","\x73\x65\x6C\x65\x63\x74\x65\x64\x43\x61\x6C\x6C\x62\x61\x63\x6B","\x69\x73\x53\x65\x6C\x65\x63\x74\x65\x64"];_0xc245[0];function Actions(_0x2e1dx2){this[_0xc245[1]]= _0x2e1dx2;this[_0xc245[2]]= new Object();this[_0xc245[3]]()}Actions[_0xc245[4]][_0xc245[3]]= function(){var _0x2e1dx3=this[_0xc245[1]];var _0x2e1dx4=_0x2e1dx3[_0xc245[5]];var _0x2e1dx5=_0x2e1dx4[_0xc245[6]];this[_0xc245[10]](_0xc245[7],function(){_0x2e1dx3[_0xc245[9]]( new NewDialog(_0x2e1dx3)[_0xc245[8]],300,180,true,true)});this[_0xc245[10]](_0xc245[11],function(){_0x2e1dx3[_0xc245[9]]( new OpenDialog(_0x2e1dx3)[_0xc245[8]],300,180,true,true)});this[_0xc245[10]](_0xc245[12],function(){_0x2e1dx3[_0xc245[13]](false)},null,null,_0xc245[14]);this[_0xc245[10]](_0xc245[15],function(){_0x2e1dx3[_0xc245[13]](true)},null,null,_0xc245[16]);this[_0xc245[10]](_0xc245[17],function(){_0x2e1dx3[_0xc245[18]](false)},null,null,_0xc245[19]);this[_0xc245[10]](_0xc245[20],function(){_0x2e1dx3[_0xc245[9]]( new VariableDialog(_0x2e1dx3)[_0xc245[8]],300,180,true,true)});this[_0xc245[10]](_0xc245[21],function(){_0x2e1dx3[_0xc245[9]]( new ImportDialog(_0x2e1dx3)[_0xc245[8]],300,200,true,true)});this[_0xc245[10]](_0xc245[22],function(){_0x2e1dx3[_0xc245[9]]( new ExportDialog(_0x2e1dx3)[_0xc245[8]],300,200,true,true)},null,null,_0xc245[23]);this[_0xc245[28]](_0xc245[24], new Action(mxResources[_0xc245[26]](_0xc245[25]),mxUtils[_0xc245[27]](this,function(){this[_0xc245[1]][_0xc245[9]]( new EditFileDialog(_0x2e1dx3)[_0xc245[8]],620,420,true,true)})));this[_0xc245[10]](_0xc245[29],function(){_0x2e1dx3[_0xc245[9]]( new RenameDialog(_0x2e1dx3)[_0xc245[8]],300,180,true,true)});this[_0xc245[10]](_0xc245[30],function(){mxUtils[_0xc245[31]](_0x2e1dx5)},null,_0xc245[32],_0xc245[33]);this[_0xc245[10]](_0xc245[34],function(){mxUtils[_0xc245[35]](_0x2e1dx5,null,10,10)});this[_0xc245[10]](_0xc245[36],function(){_0x2e1dx4[_0xc245[37]][_0xc245[36]]()},null,_0xc245[38],_0xc245[39]);this[_0xc245[10]](_0xc245[40],function(){_0x2e1dx4[_0xc245[37]][_0xc245[40]]()},null,_0xc245[41],_0xc245[42]);this[_0xc245[10]](_0xc245[43],function(){mxClipboard[_0xc245[43]](_0x2e1dx5)},null,_0xc245[44],_0xc245[45]);this[_0xc245[10]](_0xc245[46],function(){mxClipboard[_0xc245[46]](_0x2e1dx5)},null,_0xc245[47],_0xc245[48]);this[_0xc245[10]](_0xc245[49],function(){mxClipboard[_0xc245[49]](_0x2e1dx5)},false,_0xc245[50],_0xc245[51]);this[_0xc245[10]](_0xc245[52],function(){_0x2e1dx5[_0xc245[53]]()},null,null,_0xc245[54]);this[_0xc245[10]](_0xc245[55],function(){var _0x2e1dx6=_0x2e1dx5[_0xc245[56]];_0x2e1dx5[_0xc245[59]](_0x2e1dx5[_0xc245[58]](_0x2e1dx5[_0xc245[57]](),_0x2e1dx6,_0x2e1dx6,true))},null,null,_0xc245[60]);this[_0xc245[10]](_0xc245[61],function(){_0x2e1dx5[_0xc245[61]]()},null,null,_0xc245[62]);this[_0xc245[10]](_0xc245[63],function(){_0x2e1dx5[_0xc245[63]]()},null,null,_0xc245[64]);this[_0xc245[10]](_0xc245[65],function(){_0x2e1dx5[_0xc245[65]]()},null,null,_0xc245[66]);this[_0xc245[10]](_0xc245[67],function(){_0x2e1dx5[_0xc245[67]]()},null,null,_0xc245[68]);this[_0xc245[10]](_0xc245[69],function(){_0x2e1dx5[_0xc245[69]]()},null,null,_0xc245[70]);this[_0xc245[10]](_0xc245[71],function(){_0x2e1dx5[_0xc245[71]]()},null,null,_0xc245[72]);this[_0xc245[10]](_0xc245[73],function(){_0x2e1dx5[_0xc245[74]](false)},null,null,_0xc245[75]);this[_0xc245[10]](_0xc245[76],function(){_0x2e1dx5[_0xc245[74]](true)},null,null,_0xc245[77]);this[_0xc245[10]](_0xc245[78],function(){_0x2e1dx5[_0xc245[79]](false)},null,null,_0xc245[80]);this[_0xc245[10]](_0xc245[81],function(){_0x2e1dx5[_0xc245[79]](true)},null,null,_0xc245[82]);this[_0xc245[10]](_0xc245[83],function(){_0x2e1dx5[_0xc245[85]](_0x2e1dx5[_0xc245[84]](null,0))},null,null,_0xc245[86]);this[_0xc245[10]](_0xc245[87],function(){_0x2e1dx5[_0xc245[59]](_0x2e1dx5[_0xc245[88]]())},null,null,_0xc245[89]);this[_0xc245[10]](_0xc245[90],function(){_0x2e1dx5[_0xc245[91]]()});this[_0xc245[10]](_0xc245[92],function(){var _0x2e1dx7=_0x2e1dx5[_0xc245[93]]();var _0x2e1dx8=_0x2e1dx5[_0xc245[94]](_0x2e1dx7);if(_0x2e1dx8== null){_0x2e1dx8= _0xc245[95]};_0x2e1dx8= mxUtils[_0xc245[97]](mxResources[_0xc245[26]](_0xc245[96]),_0x2e1dx8);if(_0x2e1dx8!= null){_0x2e1dx5[_0xc245[98]](_0x2e1dx7,_0x2e1dx8)}});this[_0xc245[10]](_0xc245[99],function(){var _0x2e1dx7=_0x2e1dx5[_0xc245[93]]();var _0x2e1dx8=_0x2e1dx5[_0xc245[94]](_0x2e1dx7);if(_0x2e1dx8!= null){window[_0xc245[11]](_0x2e1dx8)}});this[_0xc245[10]](_0xc245[100],function(){var _0x2e1dx9=_0x2e1dx5[_0xc245[57]]();if(_0x2e1dx9!= null){_0x2e1dx5[_0xc245[102]]()[_0xc245[101]]();try{for(var _0x2e1dxa=0;_0x2e1dxa< _0x2e1dx9[_0xc245[103]];_0x2e1dxa++){var _0x2e1dx7=_0x2e1dx9[_0x2e1dxa];if(_0x2e1dx5[_0xc245[102]]()[_0xc245[104]](_0x2e1dx7)){_0x2e1dx5[_0xc245[105]]([_0x2e1dx7],20)}else {_0x2e1dx5[_0xc245[106]](_0x2e1dx7)}}}finally{_0x2e1dx5[_0xc245[102]]()[_0xc245[107]]()}}});this[_0xc245[10]](_0xc245[108],function(){var _0x2e1dxb=_0x2e1dx5[_0xc245[110]]()[_0xc245[109]](_0x2e1dx5[_0xc245[93]]());var _0x2e1dxc=_0xc245[111];if(_0x2e1dxb!= null&& _0x2e1dxb[_0xc245[113]][mxConstants[_0xc245[112]]]== _0xc245[111]){_0x2e1dxc= null};_0x2e1dx5[_0xc245[114]](mxConstants.STYLE_WHITE_SPACE,_0x2e1dxc)});this[_0xc245[10]](_0xc245[115],function(){var _0x2e1dxc=_0xc245[116];var _0x2e1dxb=_0x2e1dx5[_0xc245[110]]()[_0xc245[109]](_0x2e1dx5[_0xc245[93]]());if(_0x2e1dxb!= null){_0x2e1dxc= _0x2e1dxb[_0xc245[113]][mxConstants[_0xc245[117]]]|| _0x2e1dxc};_0x2e1dxc= mxUtils[_0xc245[97]](mxResources[_0xc245[26]](_0xc245[96])+ _0xc245[118]+ mxResources[_0xc245[26]](_0xc245[115])+ _0xc245[119],_0x2e1dxc);if(_0x2e1dxc!= null){_0x2e1dx5[_0xc245[114]](mxConstants.STYLE_ROTATION,_0x2e1dxc)}});this[_0xc245[10]](_0xc245[120],function(){var _0x2e1dx9=_0x2e1dx5[_0xc245[57]]();if(_0x2e1dx9!= null){_0x2e1dx5[_0xc245[102]]()[_0xc245[101]]();try{for(var _0x2e1dxa=0;_0x2e1dxa< _0x2e1dx9[_0xc245[103]];_0x2e1dxa++){var _0x2e1dx7=_0x2e1dx9[_0x2e1dxa];if(_0x2e1dx5[_0xc245[102]]()[_0xc245[121]](_0x2e1dx7)&& _0x2e1dx5[_0xc245[102]]()[_0xc245[104]](_0x2e1dx7)== 0){var _0x2e1dxd=_0x2e1dx5[_0xc245[122]](_0x2e1dx7);if(_0x2e1dxd!= null){_0x2e1dxd= _0x2e1dxd[_0xc245[123]]();_0x2e1dxd[_0xc245[124]]+= _0x2e1dxd[_0xc245[125]]/ 2- _0x2e1dxd[_0xc245[126]]/ 2;_0x2e1dxd[_0xc245[127]]+= _0x2e1dxd[_0xc245[126]]/ 2- _0x2e1dxd[_0xc245[125]]/ 2;var _0x2e1dxe=_0x2e1dxd[_0xc245[125]];_0x2e1dxd[_0xc245[125]]= _0x2e1dxd[_0xc245[126]];_0x2e1dxd[_0xc245[126]]= _0x2e1dxe;_0x2e1dx5[_0xc245[102]]()[_0xc245[128]](_0x2e1dx7,_0x2e1dxd);var _0x2e1dxb=_0x2e1dx5[_0xc245[129]][_0xc245[109]](_0x2e1dx7);if(_0x2e1dxb!= null){var _0x2e1dxf=_0x2e1dxb[_0xc245[113]][mxConstants[_0xc245[130]]]|| _0xc245[131];if(_0x2e1dxf== _0xc245[131]){_0x2e1dxf= _0xc245[132]}else {if(_0x2e1dxf== _0xc245[132]){_0x2e1dxf= _0xc245[133]}else {if(_0x2e1dxf== _0xc245[133]){_0x2e1dxf= _0xc245[134]}else {if(_0x2e1dxf== _0xc245[134]){_0x2e1dxf= _0xc245[131]}}}};_0x2e1dx5[_0xc245[114]](mxConstants.STYLE_DIRECTION,_0x2e1dxf,[_0x2e1dx7])}}}}}finally{_0x2e1dx5[_0xc245[102]]()[_0xc245[107]]()}}},null,null,_0xc245[135]);this[_0xc245[10]](_0xc245[136],function(){_0x2e1dx5[_0xc245[137]](1)});this[_0xc245[10]](_0xc245[138],function(){_0x2e1dx5[_0xc245[138]]()},null,null,_0xc245[139]);this[_0xc245[10]](_0xc245[140],function(){_0x2e1dx5[_0xc245[140]]()},null,null,_0xc245[141]);this[_0xc245[10]](_0xc245[142],function(){_0x2e1dx5[_0xc245[143]]()});this[_0xc245[10]](_0xc245[144],mxUtils[_0xc245[27]](this,function(){if(!_0x2e1dx5[_0xc245[145]]){this[_0xc245[26]](_0xc245[147])[_0xc245[146]]()};var _0x2e1dx10=_0x2e1dx5[_0xc245[148]];var _0x2e1dx11=_0x2e1dx5[_0xc245[149]];var _0x2e1dx12=_0x2e1dx5[_0xc245[8]][_0xc245[150]]- 20;var _0x2e1dx13=_0x2e1dx5[_0xc245[8]][_0xc245[151]]- 20;var _0x2e1dx14=Math[_0xc245[153]](100* Math[_0xc245[152]](_0x2e1dx12/ _0x2e1dx10[_0xc245[125]]/ _0x2e1dx11,_0x2e1dx13/ _0x2e1dx10[_0xc245[126]]/ _0x2e1dx11))/ 100;_0x2e1dx5[_0xc245[137]](_0x2e1dx14);_0x2e1dx5[_0xc245[8]][_0xc245[154]]= Math[_0xc245[157]](_0x2e1dx5[_0xc245[129]][_0xc245[155]][_0xc245[124]]* _0x2e1dx14- Math[_0xc245[156]](10,(_0x2e1dx5[_0xc245[8]][_0xc245[150]]- _0x2e1dx10[_0xc245[125]]* _0x2e1dx11* _0x2e1dx14)/ 2));_0x2e1dx5[_0xc245[8]][_0xc245[158]]= Math[_0xc245[157]](_0x2e1dx5[_0xc245[129]][_0xc245[155]][_0xc245[127]]* _0x2e1dx14- Math[_0xc245[156]](10,(_0x2e1dx5[_0xc245[8]][_0xc245[151]]- _0x2e1dx10[_0xc245[126]]* _0x2e1dx11* _0x2e1dx14)/ 2))}));this[_0xc245[10]](_0xc245[159],mxUtils[_0xc245[27]](this,function(){if(!_0x2e1dx5[_0xc245[145]]){this[_0xc245[26]](_0xc245[147])[_0xc245[146]]()};var _0x2e1dx10=_0x2e1dx5[_0xc245[148]];var _0x2e1dx11=_0x2e1dx5[_0xc245[149]];var _0x2e1dx12=_0x2e1dx5[_0xc245[8]][_0xc245[150]]- 20;var _0x2e1dx14=Math[_0xc245[153]](100* _0x2e1dx12/ _0x2e1dx10[_0xc245[125]]/ _0x2e1dx11)/ 100;_0x2e1dx5[_0xc245[137]](_0x2e1dx14);_0x2e1dx5[_0xc245[8]][_0xc245[154]]= Math[_0xc245[157]](_0x2e1dx5[_0xc245[129]][_0xc245[155]][_0xc245[124]]* _0x2e1dx14- Math[_0xc245[156]](10,(_0x2e1dx5[_0xc245[8]][_0xc245[150]]- _0x2e1dx10[_0xc245[125]]* _0x2e1dx11* _0x2e1dx14)/ 2));_0x2e1dx5[_0xc245[8]][_0xc245[158]]= Math[_0xc245[157]](_0x2e1dx5[_0xc245[129]][_0xc245[155]][_0xc245[127]]* _0x2e1dx14- Math[_0xc245[156]](10,(_0x2e1dx5[_0xc245[8]][_0xc245[151]]- _0x2e1dx10[_0xc245[126]]* _0x2e1dx11* _0x2e1dx14)/ 2))}));this[_0xc245[28]](_0xc245[160], new Action(mxResources[_0xc245[26]](_0xc245[161]),function(){var _0x2e1dxc=mxUtils[_0xc245[97]](mxResources[_0xc245[26]](_0xc245[96])+ _0xc245[162],parseInt(_0x2e1dx5[_0xc245[110]]()[_0xc245[163]]()* 100));if(_0x2e1dxc!= null&& _0x2e1dxc[_0xc245[103]]> 0&& !isNaN(parseInt(_0x2e1dxc))){_0x2e1dx5[_0xc245[137]](parseInt(_0x2e1dxc)/ 100)}}));var _0x2e1dx15=null;_0x2e1dx15= this[_0xc245[10]](_0xc245[164],function(){_0x2e1dx5[_0xc245[166]](!_0x2e1dx5[_0xc245[165]]());_0x2e1dx4[_0xc245[167]]()},null,null,_0xc245[168]);_0x2e1dx15[_0xc245[169]](true);_0x2e1dx15[_0xc245[170]](function(){return _0x2e1dx5[_0xc245[165]]()});_0x2e1dx15= this[_0xc245[10]](_0xc245[171],function(){_0x2e1dx5[_0xc245[173]][_0xc245[172]]= !_0x2e1dx5[_0xc245[173]][_0xc245[172]]});_0x2e1dx15[_0xc245[169]](true);_0x2e1dx15[_0xc245[170]](function(){return _0x2e1dx5[_0xc245[173]][_0xc245[172]]});_0x2e1dx15= this[_0xc245[10]](_0xc245[174],function(){_0x2e1dx5[_0xc245[176]][_0xc245[177]](!_0x2e1dx5[_0xc245[176]][_0xc245[175]]())});_0x2e1dx15[_0xc245[169]](true);_0x2e1dx15[_0xc245[170]](function(){return _0x2e1dx5[_0xc245[176]][_0xc245[175]]()});_0x2e1dx15= this[_0xc245[10]](_0xc245[178],function(){_0x2e1dx5[_0xc245[179]]= !_0x2e1dx5[_0xc245[179]];_0x2e1dx5[_0xc245[129]][_0xc245[180]]()});_0x2e1dx15[_0xc245[169]](true);_0x2e1dx15[_0xc245[170]](function(){return _0x2e1dx5[_0xc245[179]]});_0x2e1dx15= this[_0xc245[10]](_0xc245[181],function(){_0x2e1dx5[_0xc245[181]]= !_0x2e1dx5[_0xc245[181]];_0x2e1dx4[_0xc245[167]]();if(!_0x2e1dx5[_0xc245[181]]){var _0x2e1dx16=_0x2e1dx5[_0xc245[129]][_0xc245[155]];_0x2e1dx5[_0xc245[129]][_0xc245[183]](_0x2e1dx16[_0xc245[124]]- _0x2e1dx5[_0xc245[8]][_0xc245[154]]/ _0x2e1dx5[_0xc245[129]][_0xc245[182]],_0x2e1dx16[_0xc245[127]]- _0x2e1dx5[_0xc245[8]][_0xc245[158]]/ _0x2e1dx5[_0xc245[129]][_0xc245[182]]);_0x2e1dx5[_0xc245[8]][_0xc245[154]]= 0;_0x2e1dx5[_0xc245[8]][_0xc245[158]]= 0;_0x2e1dx5[_0xc245[184]]()}else {var _0x2e1dx17=_0x2e1dx5[_0xc245[129]][_0xc245[155]][_0xc245[124]];var _0x2e1dx18=_0x2e1dx5[_0xc245[129]][_0xc245[155]][_0xc245[127]];_0x2e1dx5[_0xc245[129]][_0xc245[155]][_0xc245[124]]= 0;_0x2e1dx5[_0xc245[129]][_0xc245[155]][_0xc245[127]]= 0;_0x2e1dx5[_0xc245[184]]();_0x2e1dx5[_0xc245[8]][_0xc245[154]]-= Math[_0xc245[157]](_0x2e1dx17* _0x2e1dx5[_0xc245[129]][_0xc245[182]]);_0x2e1dx5[_0xc245[8]][_0xc245[158]]-= Math[_0xc245[157]](_0x2e1dx18* _0x2e1dx5[_0xc245[129]][_0xc245[182]])}},!mxClient.IS_TOUCH);_0x2e1dx15[_0xc245[169]](true);_0x2e1dx15[_0xc245[170]](function(){return _0x2e1dx5[_0xc245[8]][_0xc245[113]][_0xc245[185]]== _0xc245[186]});_0x2e1dx15= this[_0xc245[10]](_0xc245[147],mxUtils[_0xc245[27]](this,function(){_0x2e1dx5[_0xc245[145]]= !_0x2e1dx5[_0xc245[145]];_0x2e1dx5[_0xc245[187]]= _0x2e1dx5[_0xc245[145]];_0x2e1dx5[_0xc245[188]]= _0x2e1dx5[_0xc245[187]];_0x2e1dx5[_0xc245[129]][_0xc245[189]]();_0x2e1dx5[_0xc245[184]]();_0x2e1dx4[_0xc245[167]]();_0x2e1dx4[_0xc245[191]][_0xc245[190]]();if(mxUtils[_0xc245[192]](_0x2e1dx5[_0xc245[8]])){if(_0x2e1dx5[_0xc245[145]]){_0x2e1dx5[_0xc245[8]][_0xc245[154]]-= 20;_0x2e1dx5[_0xc245[8]][_0xc245[158]]-= 20}else {_0x2e1dx5[_0xc245[8]][_0xc245[154]]+= 20;_0x2e1dx5[_0xc245[8]][_0xc245[158]]+= 20}}}));_0x2e1dx15[_0xc245[169]](true);_0x2e1dx15[_0xc245[170]](function(){return _0x2e1dx5[_0xc245[145]]});_0x2e1dx15= this[_0xc245[10]](_0xc245[193],function(){_0x2e1dx5[_0xc245[195]](!_0x2e1dx5[_0xc245[194]][_0xc245[175]]())},null,null,_0xc245[196]);_0x2e1dx15[_0xc245[169]](true);_0x2e1dx15[_0xc245[170]](function(){return _0x2e1dx5[_0xc245[194]][_0xc245[175]]()});_0x2e1dx15= this[_0xc245[10]](_0xc245[197],function(){_0x2e1dx5[_0xc245[194]][_0xc245[199]](!_0x2e1dx5[_0xc245[194]][_0xc245[198]]())});_0x2e1dx15[_0xc245[169]](true);_0x2e1dx15[_0xc245[170]](function(){return _0x2e1dx5[_0xc245[194]][_0xc245[198]]()});this[_0xc245[10]](_0xc245[200],function(){var _0x2e1dx19=_0xc245[95];if(mxResources[_0xc245[202]](mxClient[_0xc245[201]])){_0x2e1dx19= _0xc245[203]+ mxClient[_0xc245[201]]};window[_0xc245[11]](RESOURCES_PATH+ _0xc245[204]+ _0x2e1dx19+ _0xc245[205])});this[_0xc245[28]](_0xc245[206], new Action(mxResources[_0xc245[26]](_0xc245[206])+ _0xc245[207],function(){_0x2e1dx3[_0xc245[9]]( new AboutDialog(_0x2e1dx3)[_0xc245[8]],320,280,true,true)},null,null,_0xc245[208]));var _0x2e1dx1a=mxUtils[_0xc245[27]](this,function(_0x2e1dx1b,_0x2e1dx1c){this[_0xc245[10]](_0x2e1dx1b,function(){_0x2e1dx5[_0xc245[209]](mxConstants.STYLE_FONTSTYLE,_0x2e1dx1c)})});_0x2e1dx1a(_0xc245[210],mxConstants.FONT_BOLD);_0x2e1dx1a(_0xc245[211],mxConstants.FONT_ITALIC);_0x2e1dx1a(_0xc245[212],mxConstants.FONT_UNDERLINE);this[_0xc245[10]](_0xc245[213],function(){_0x2e1dx5[_0xc245[214]](mxConstants.STYLE_SHADOW)});this[_0xc245[10]](_0xc245[215],function(){_0x2e1dx5[_0xc245[214]](mxConstants.STYLE_DASHED)});this[_0xc245[10]](_0xc245[216],function(){_0x2e1dx5[_0xc245[214]](mxConstants.STYLE_ROUNDED)});this[_0xc245[10]](_0xc245[217],function(){_0x2e1dx5[_0xc245[214]](mxConstants.STYLE_CURVED)});this[_0xc245[10]](_0xc245[113],function(){var _0x2e1dx9=_0x2e1dx5[_0xc245[57]]();if(_0x2e1dx9!= null&& _0x2e1dx9[_0xc245[103]]> 0){var _0x2e1dx1d=_0x2e1dx5[_0xc245[102]]();var _0x2e1dx1c=mxUtils[_0xc245[97]](mxResources[_0xc245[26]](_0xc245[96])+ _0xc245[118]+ mxResources[_0xc245[26]](_0xc245[113])+ _0xc245[218],_0x2e1dx1d[_0xc245[219]](_0x2e1dx9[0])|| _0xc245[95]);if(_0x2e1dx1c!= null){_0x2e1dx5[_0xc245[220]](_0x2e1dx1c,_0x2e1dx9)}}});this[_0xc245[10]](_0xc245[221],function(){_0x2e1dx5[_0xc245[222]](_0x2e1dx5[_0xc245[93]]())});this[_0xc245[10]](_0xc245[223],function(){var _0x2e1dx7=_0x2e1dx5[_0xc245[93]]();if(_0x2e1dx7!= null&& _0x2e1dx5[_0xc245[102]]()[_0xc245[224]](_0x2e1dx7)){var _0x2e1dx1e=_0x2e1dx4[_0xc245[6]][_0xc245[226]][_0xc245[225]](_0x2e1dx7);if(_0x2e1dx1e instanceof mxEdgeHandler){var _0x2e1dx16=_0x2e1dx5[_0xc245[129]][_0xc245[155]];var _0x2e1dx6=_0x2e1dx5[_0xc245[129]][_0xc245[182]];var _0x2e1dx17=_0x2e1dx16[_0xc245[124]];var _0x2e1dx18=_0x2e1dx16[_0xc245[127]];var _0x2e1dx1f=_0x2e1dx5[_0xc245[102]]()[_0xc245[227]](_0x2e1dx7);var _0x2e1dx20=_0x2e1dx5[_0xc245[122]](_0x2e1dx1f);if(_0x2e1dx5[_0xc245[102]]()[_0xc245[121]](_0x2e1dx1f)&& _0x2e1dx20!= null){_0x2e1dx17+= _0x2e1dx20[_0xc245[124]];_0x2e1dx18+= _0x2e1dx20[_0xc245[127]]};_0x2e1dx1e[_0xc245[232]](_0x2e1dx1e[_0xc245[228]],_0x2e1dx5[_0xc245[230]][_0xc245[229]]/ _0x2e1dx6- _0x2e1dx17,_0x2e1dx5[_0xc245[230]][_0xc245[231]]/ _0x2e1dx6- _0x2e1dx18)}}});this[_0xc245[10]](_0xc245[233],function(){var _0x2e1dx21=_0x2e1dx3[_0xc245[2]][_0xc245[26]](_0xc245[233]);if(_0x2e1dx21[_0xc245[234]]!= null){_0x2e1dx21[_0xc245[234]][_0xc245[236]](_0x2e1dx21[_0xc245[234]][_0xc245[228]],_0x2e1dx21[_0xc245[235]])}});this[_0xc245[10]](_0xc245[237],function(){function _0x2e1dx22(_0x2e1dxc,_0x2e1dx23,_0x2e1dx24){var _0x2e1dx25=null;var _0x2e1dx9=_0x2e1dx5[_0xc245[57]]();_0x2e1dx5[_0xc245[102]]()[_0xc245[101]]();try{if(_0x2e1dx9[_0xc245[103]]== 0){var _0x2e1dx26=_0x2e1dx5[_0xc245[238]]();_0x2e1dx9= [_0x2e1dx5[_0xc245[240]](_0x2e1dx5[_0xc245[239]](),null,_0xc245[95],_0x2e1dx26,_0x2e1dx26,_0x2e1dx23,_0x2e1dx24)];_0x2e1dx25= _0x2e1dx9};_0x2e1dx5[_0xc245[114]](mxConstants.STYLE_IMAGE,_0x2e1dxc,_0x2e1dx9);_0x2e1dx5[_0xc245[114]](mxConstants.STYLE_SHAPE,_0xc245[237],_0x2e1dx9);if(_0x2e1dx5[_0xc245[241]]()== 1){if(_0x2e1dx23!= null&& _0x2e1dx24!= null){var _0x2e1dx7=_0x2e1dx9[0];var _0x2e1dxd=_0x2e1dx5[_0xc245[102]]()[_0xc245[242]](_0x2e1dx7);if(_0x2e1dxd!= null){_0x2e1dxd= _0x2e1dxd[_0xc245[123]]();_0x2e1dxd[_0xc245[125]]= _0x2e1dx23;_0x2e1dxd[_0xc245[126]]= _0x2e1dx24;_0x2e1dx5[_0xc245[102]]()[_0xc245[128]](_0x2e1dx7,_0x2e1dxd)}}}}finally{_0x2e1dx5[_0xc245[102]]()[_0xc245[107]]()};if(_0x2e1dx25!= null){_0x2e1dx5[_0xc245[59]](_0x2e1dx25);_0x2e1dx5[_0xc245[243]](_0x2e1dx25[0])}}var _0x2e1dxc=_0xc245[95];var _0x2e1dxb=_0x2e1dx5[_0xc245[110]]()[_0xc245[109]](_0x2e1dx5[_0xc245[93]]());if(_0x2e1dxb!= null){_0x2e1dxc= _0x2e1dxb[_0xc245[113]][mxConstants[_0xc245[244]]]|| _0x2e1dxc};_0x2e1dxc= mxUtils[_0xc245[97]](mxResources[_0xc245[26]](_0xc245[96])+ _0xc245[118]+ mxResources[_0xc245[26]](_0xc245[245])+ _0xc245[218],_0x2e1dxc);if(_0x2e1dxc!= null){if(_0x2e1dxc[_0xc245[103]]> 0){var _0x2e1dx27= new Image();_0x2e1dx27[_0xc245[246]]= function(){_0x2e1dx22(_0x2e1dxc,_0x2e1dx27[_0xc245[125]],_0x2e1dx27[_0xc245[126]])};_0x2e1dx27[_0xc245[247]]= function(){mxUtils[_0xc245[249]](mxResources[_0xc245[26]](_0xc245[248]))};_0x2e1dx27[_0xc245[250]]= _0x2e1dxc}}})};Actions[_0xc245[4]][_0xc245[10]]= function(_0x2e1dx1b,_0x2e1dx28,_0x2e1dx29,_0x2e1dx2a,_0x2e1dx2b){return this[_0xc245[28]](_0x2e1dx1b, new Action(mxResources[_0xc245[26]](_0x2e1dx1b),_0x2e1dx28,_0x2e1dx29,_0x2e1dx2a,_0x2e1dx2b))};Actions[_0xc245[4]][_0xc245[28]]= function(_0x2e1dx2c,_0x2e1dx15){this[_0xc245[2]][_0x2e1dx2c]= _0x2e1dx15;return _0x2e1dx15};Actions[_0xc245[4]][_0xc245[26]]= function(_0x2e1dx2c){return this[_0xc245[2]][_0x2e1dx2c]};function Action(_0x2e1dx2e,_0x2e1dx28,_0x2e1dx29,_0x2e1dx2a,_0x2e1dx2b){mxEventSource[_0xc245[251]](this);this[_0xc245[252]]= _0x2e1dx2e;this[_0xc245[146]]= _0x2e1dx28;this[_0xc245[253]]= (_0x2e1dx29!= null)?_0x2e1dx29:true;this[_0xc245[254]]= _0x2e1dx2a;this[_0xc245[255]]= _0x2e1dx2b}mxUtils[_0xc245[256]](Action,mxEventSource);Action[_0xc245[4]][_0xc245[177]]= function(_0x2e1dxc){if(this[_0xc245[253]]!= _0x2e1dxc){this[_0xc245[253]]= _0x2e1dxc;this[_0xc245[258]]( new mxEventObject(_0xc245[257]))}};Action[_0xc245[4]][_0xc245[169]]= function(_0x2e1dxc){this[_0xc245[259]]= _0x2e1dxc};Action[_0xc245[4]][_0xc245[170]]= function(_0x2e1dx28){this[_0xc245[260]]= _0x2e1dx28};Action[_0xc245[4]][_0xc245[261]]= function(){return this[_0xc245[260]]()} \ No newline at end of file diff --git a/public/assets/plugins/jscripty/js/Dialogs.js b/public/assets/plugins/jscripty/js/Dialogs.js index 791874e..9fb3a6d 100644 --- a/public/assets/plugins/jscripty/js/Dialogs.js +++ b/public/assets/plugins/jscripty/js/Dialogs.js @@ -1,1194 +1 @@ -'use strict'; -/** - * $Id: Dialogs.js,v 1.5 2013-01-29 17:23:31 gaudenz Exp $ - * Copyright (c) 2006-2012, JGraph Ltd - */ -/** - * Constructs a new dialog. - */ - -function createCheckbox(value) { - var input = document.createElement('input'); - input.setAttribute('type', 'checkbox'); - if (value) { - input.setAttribute('checked', true); - } - return input; -} - -function createDropdownFromApi(path, value, option_name, option_value, editorUi, - keys, pattern) { - var req = new XMLHttpRequest(); - req.open('GET', path, false); // `false` makes the request synchronous - req.setRequestHeader('Authorization', 'Bearer ' + editorUi.editor.data.token); - req.send(null); - var res = []; - if (req.status === 200) { - res = JSON.parse(req.response); - } - var input = document.createElement('select'); - var option = document.createElement('option'); - option.text = '-- None --'; - option.value = '-1'; - input.appendChild(option); - res.rows.forEach(function(elem) { - option = document.createElement('option'); - option.text = elem[option_name]; - if (keys && pattern) { - keys.forEach(function(key) { - pattern = pattern.replace('%' + key + '%', elem[key]); - }); - option.value = pattern; - option.selected = (pattern == value); - } else { - option.value = elem[option_value]; - option.selected = (elem[option_value] == value); - } - input.appendChild(option); - }); - input.className = 'form-control select2'; - - return input; -} - -function createGroupedDropdownFromApi(path, value, option_name, option_value, editorUi, paginated, associationField) { - var req = new XMLHttpRequest(); - req.open('GET', path, false); // `false` makes the request synchronous - req.setRequestHeader('Authorization', 'Bearer ' + editorUi.editor.data.token); - req.send(null); - var res = []; - if (req.status === 200) { - res = JSON.parse(req.response); - } - var input = document.createElement('select'); - var option = document.createElement('option'); - option.text = '-- None --'; - option.value = '0'; - input.appendChild(option); - var selectValues = paginated ? res.rows : res; - var mainFilter = {}; - var groupFilter = {}; - mainFilter[associationField] = null; - var mainValues = _.filter(selectValues, mainFilter); - var groupValues = {}; - mainValues.forEach(function(elem) { - option = document.createElement('option'); - option.className = 'select-group-father'; - option.text = elem[option_name].toUpperCase(); - option.value = elem[option_value]; - option.selected = (elem[option_value] == value); - input.appendChild(option); - groupFilter[associationField] = elem[option_value]; - groupValues = _.filter(selectValues, groupFilter); - groupValues.forEach(function(elem) { - option = document.createElement('option'); - option.className = 'select-group-son'; - option.text = '-' + _.capitalize(elem[option_name]); - option.value = elem[option_value]; - option.selected = (elem[option_value] == value); - input.appendChild(option); - }); - }) - input.className = 'form-control select2'; - - return input; -} - -function createDropdownFromArray(array, value) { - var input = document.createElement('select'); - - for (var item in array) { - var option = document.createElement('option'); - option.text = array[item]; - option.value = item; - if (value > 0 || value != '') - option.selected = (value === item) ? true : false; - - input.appendChild(option); - } - - input.className = 'form-control select2'; - - return input; -} - -function Dialog(editorUi, elt, w, h, modal, closable, onClose) { - var dx = 0; - - if (mxClient.IS_IE && document.documentMode != 9) { - dx = 60; - } - - w += dx; - h += dx; - - var left = Math.max(0, Math.round((document.body.scrollWidth - w) / 2)); - var top = Math.max(0, Math.round((Math.max(document.body.scrollHeight, - document.documentElement.scrollHeight) - h) / 3)); - - var div = editorUi.createDiv('geDialog'); - div.className = 'modal fade in center'; - div.style.display = 'block'; - div.style.paddingRight = '12px'; - // div.style.width = w + 'px'; - // div.style.height = h + 'px'; - // div.style.left = left + 'px'; - // div.style.top = top + 'px'; - - var divModalDialog = editorUi.createDiv('geModalDialog'); - divModalDialog.className = 'modal-dialog'; - divModalDialog.appendChild(elt); - div.appendChild(divModalDialog); - - if (this.bg == null) { - this.bg = editorUi.createDiv('background'); - this.bg.className = 'modal-backdrop fade in'; - - if (mxClient.IS_QUIRKS) { - new mxDivResizer(this.bg); - } - } - - if (modal) { - document.body.appendChild(this.bg); - } - - document.body.appendChild(div); - - this.onDialogClose = onClose; - this.container = div; -}; - -/** - * Removes the dialog from the DOM. - */ -Dialog.prototype.close = function() { - if (this.onDialogClose != null) { - this.onDialogClose(); - this.onDialogClose = null; - } - - this.container.parentNode.removeChild(this.container); - this.bg.parentNode.removeChild(this.bg); -}; - -/** - * Constructs a new open dialog. - */ -function ImportDialog(editorUi) { - - var content = editorUi.createDiv('modal-content'); - var header = editorUi.createDiv('modal-header'); - var body = editorUi.createDiv('modal-body'); - var footer = editorUi.createDiv('modal-footer'); - - //--- START HEADER - var title = editorUi.createHeader('h4'); - mxUtils.write(title, mxResources.get('import') + ' XML'); - - var x = mxUtils.button('', function() { - editorUi.hideDialog(); - }); - x.className = 'close'; - - header.appendChild(x); - header.appendChild(title); - //--- END HEADER - - //--- START BODY - var row = editorUi.createDiv('row'); - var col1 = editorUi.createDiv('col-md-12'); - - var textarea = document.createElement('textarea'); - textarea.style.width = '100%'; - textarea.style.height = '374px'; - - var input = document.createElement('input'); - input.type = 'file'; - input.setAttribute('accept', 'text/xml'); - - input.addEventListener('change', function readSingleFile(evt) { - //Retrieve the first (and only!) File from the FileList object - var f = evt.target.files[0]; - console.log(f); - if (f) { - if (f.type === 'text/xml') { - var r = new FileReader(); - r.onload = function(e) { - var contents = e.target.result; - mxUtils.write(textarea, contents); - }; - r.readAsText(f); - } else { - alert('Failed to load format file'); - } - } else { - alert('Failed to load file'); - } - }, false); - - col1.appendChild(input); - col1.appendChild(textarea); - - row.appendChild(col1); - body.appendChild(row); - //--- END BODY - - //--- START FOOTER - var save = mxUtils.button(mxResources.get('import'), mxUtils.bind(this, - function(data) { - var doc = mxUtils.parseXml(textarea.value); - editorUi.editor.setGraphXml(doc.documentElement); - editorUi.hideDialog(); - })); - save.className = 'btn blue'; - - var close = mxUtils.button(mxResources.get('cancel'), function() { - editorUi.hideDialog(); - }); - close.className = 'btn default'; - - footer.appendChild(save); - footer.appendChild(close); - //--- END FOOTER - - //--- START CONTENT - content.appendChild(header); - content.appendChild(body); - content.appendChild(footer); - //--- END CONTENT - - this.container = content; - -}; - -/** - * Constructs a new about dialog. - */ -function AboutDialog(editorUi) { - var content = editorUi.createDiv('modal-content'); - var header = editorUi.createDiv('modal-header'); - var body = editorUi.createDiv('modal-body'); - var footer = editorUi.createDiv('modal-footer'); - - //--- START HEADER - var title = editorUi.createHeader('h4'); - mxUtils.write(title, mxResources.get('about') + ' Cally Square'); - - var x = mxUtils.button('', function() { - editorUi.hideDialog(); - }); - x.className = 'close'; - - header.appendChild(x); - header.appendChild(title); - //--- END HEADER - - //--- START BODY - var img = document.createElement('img'); - img.style.border = '0px'; - img.setAttribute('width', '176'); - img.setAttribute('width', '151'); - img.setAttribute('src', IMAGE_PATH + '/logo.png'); - body.appendChild(img); - mxUtils.br(body); - mxUtils.write(body, 'Powered by Xenialab ' + mxClient.VERSION); - mxUtils.br(body); - var link = document.createElement('a'); - link.setAttribute('href', 'http://www.callysquare.com/'); - link.setAttribute('target', '_blank'); - mxUtils.write(link, 'www.callysquare.com'); - body.appendChild(link); - mxUtils.br(body); - mxUtils.br(body); - //--- END BODY - - var close = mxUtils.button(mxResources.get('close'), function() { - editorUi.hideDialog(); - }); - close.className = 'btn default'; - - footer.appendChild(close); - //--- END FOOTER - - //--- START CONTENT - content.appendChild(header); - content.appendChild(body); - content.appendChild(footer); - //--- END CONTENT - - this.container = content; -}; - -/** - * Constructs a new save dialog. - */ -function SaveDialog(editorUi) { - - var content = editorUi.createDiv('modal-content'); - var header = editorUi.createDiv('modal-header'); - var body = editorUi.createDiv('modal-body'); - var footer = editorUi.createDiv('modal-footer'); - - //--- START HEADER - var title = editorUi.createHeader('h4'); - mxUtils.write(title, mxResources.get('saveAs')); - - var x = mxUtils.button('', function() { - editorUi.hideDialog(); - }); - x.className = 'close'; - - header.appendChild(x); - header.appendChild(title); - //--- END HEADER - - //--- START BODY - var name = 'name'; - var id = '_' + name; - var value = editorUi.editor.getOrCreateFilename(); - - var row = editorUi.createDiv('row'); - var col1 = editorUi.createDiv('col-md-4'); - var col2 = editorUi.createDiv('col-md-8'); - - var label = document.createElement('label'); - label.className = 'control-label pull-right'; - mxUtils.write(label, mxResources.get(name)); - col1.appendChild(label); - - var select = document.createElement('input'); - select.setAttribute('value', value + '_copy'); - select.setAttribute('id', id) - select.className = 'form-control'; - col2.appendChild(select); - - row.appendChild(col1); - row.appendChild(col2); - body.appendChild(row); - //--- END BODY - - //--- START FOOTER - var save = mxUtils.button(mxResources.get('save'), function() { - editorUi.saveAs(select.value); - editorUi.hideDialog(); - }); - save.className = 'btn blue'; - - var close = mxUtils.button(mxResources.get('cancel'), function() { - editorUi.hideDialog(); - }); - close.className = 'btn default'; - - footer.appendChild(save); - footer.appendChild(close); - //--- END FOOTER - - //--- START CONTENT - content.appendChild(header); - content.appendChild(body); - content.appendChild(footer); - //--- END CONTENT - - this.container = content; - //nameInput.setAttribute('value', editorUi.editor.getOrCreateFilename()); -}; - -/** - * Constructs a new save dialog. - */ -function NewDialog(editorUi) { - - var content = editorUi.createDiv('modal-content'); - var header = editorUi.createDiv('modal-header'); - var body = editorUi.createDiv('modal-body'); - var footer = editorUi.createDiv('modal-footer'); - - //--- START HEADER - var title = editorUi.createHeader('h4'); - mxUtils.write(title, mxResources.get('new')); - - var x = mxUtils.button('', function() { - editorUi.hideDialog(); - }); - x.className = 'close'; - - header.appendChild(x); - header.appendChild(title); - //--- END HEADER - - //--- START BODY - var name = 'name'; - var id = '_' + name; - var value = editorUi.editor.getOrCreateFilename(); - - var row = editorUi.createDiv('row'); - var col1 = editorUi.createDiv('col-md-4'); - var col2 = editorUi.createDiv('col-md-8'); - - var label = document.createElement('label'); - label.className = 'control-label pull-right'; - mxUtils.write(label, mxResources.get(name)); - col1.appendChild(label); - - var select = document.createElement('input'); - select.setAttribute('value', value + '_new'); - select.setAttribute('id', id) - select.className = 'form-control'; - col2.appendChild(select); - - row.appendChild(col1); - row.appendChild(col2); - body.appendChild(row); - //--- END BODY - - //--- START FOOTER - var save = mxUtils.button(mxResources.get('new'), function() { - editorUi.new(select.value); - editorUi.hideDialog(); - }); - save.className = 'btn blue'; - - var close = mxUtils.button(mxResources.get('cancel'), function() { - editorUi.hideDialog(); - }); - close.className = 'btn default'; - - footer.appendChild(save); - footer.appendChild(close); - //--- END FOOTER - - //--- START CONTENT - content.appendChild(header); - content.appendChild(body); - content.appendChild(footer); - //--- END CONTENT - - this.container = content; - //nameInput.setAttribute('value', editorUi.editor.getOrCreateFilename()); -}; - -/** - * Constructs a new save dialog. - */ -function VariableDialog(editorUi) { - - var content = editorUi.createDiv('modal-content'); - var header = editorUi.createDiv('modal-header'); - var body = editorUi.createDiv('modal-body'); - var footer = editorUi.createDiv('modal-footer'); - - //--- START HEADER - var title = editorUi.createHeader('h4'); - mxUtils.write(title, mxResources.get('variable')); - - var x = mxUtils.button('', function() { - editorUi.hideDialog(); - }); - x.className = 'close'; - - header.appendChild(x); - header.appendChild(title); - //--- END HEADER - - //--- START BODY - var name = 'name'; - var id = '_' + name; - var value = editorUi.editor.getOrCreateFilename(); - - var row = editorUi.createDiv('row'); - var col1 = editorUi.createDiv('col-md-4'); - var col2 = editorUi.createDiv('col-md-8'); - - var label = document.createElement('label'); - label.className = 'control-label pull-right'; - mxUtils.write(label, mxResources.get(name)); - col1.appendChild(label); - - var select = document.createElement('input'); - select.setAttribute('value', 'variable name'); - select.setAttribute('id', id) - select.className = 'form-control'; - col2.appendChild(select); - - row.appendChild(col1); - row.appendChild(col2); - body.appendChild(row); - //--- END BODY - - //--- START FOOTER - var save = mxUtils.button(mxResources.get('new'), function() { - editorUi.variable(select.value); - editorUi.hideDialog(); - }); - save.className = 'btn blue'; - - var close = mxUtils.button(mxResources.get('cancel'), function() { - editorUi.hideDialog(); - }); - close.className = 'btn default'; - - footer.appendChild(save); - footer.appendChild(close); - //--- END FOOTER - - //--- START CONTENT - content.appendChild(header); - content.appendChild(body); - content.appendChild(footer); - //--- END CONTENT - - this.container = content; - //nameInput.setAttribute('value', editorUi.editor.getOrCreateFilename()); -}; - -/** - * Constructs a new save dialog. - */ -function OpenDialog(editorUi) { - - var content = editorUi.createDiv('modal-content'); - var header = editorUi.createDiv('modal-header'); - var body = editorUi.createDiv('modal-body'); - var footer = editorUi.createDiv('modal-footer'); - - //--- START HEADER - var title = editorUi.createHeader('h4'); - mxUtils.write(title, mxResources.get('open')); - - var x = mxUtils.button('', function() { - editorUi.hideDialog(); - }); - x.className = 'close'; - - header.appendChild(x); - header.appendChild(title); - //--- END HEADER - - //--- START BODY - var row = editorUi.createDiv('row'); - var col1 = editorUi.createDiv('col-md-4'); - var col2 = editorUi.createDiv('col-md-8'); - - var label = document.createElement('label'); - label.className = 'control-label pull-right'; - mxUtils.write(label, mxResources.get('name')); - col1.appendChild(label); - - var req = new XMLHttpRequest(); - req.open('GET', '/api/jscripty/projects', false); // `false` makes the request synchronous - req.setRequestHeader('Authorization', 'Bearer ' + editorUi.editor.data.token); - req.send(null); - var res = []; - if (req.status === 200) { - res = JSON.parse(req.response).rows; - } - - var select = document.createElement('select'); - - for (var j = 0; j < res.length; j++) { - var option = document.createElement('option'); - option.text = res[j].name; - option.value = res[j].id; - select.appendChild(option); - } - select.className = 'form-control'; - col2.appendChild(select); - - row.appendChild(col1); - row.appendChild(col2); - body.appendChild(row); - //--- END BODY - - //--- START FOOTER - var save = mxUtils.button(mxResources.get('open'), function() { - console.log(select); - console.log(select.value); - window.open('jscripty/projects/view/' + select.value, '_blank'); - editorUi.hideDialog(); - }); - save.className = 'btn blue'; - - var close = mxUtils.button(mxResources.get('cancel'), function() { - editorUi.hideDialog(); - }); - close.className = 'btn default'; - - footer.appendChild(save); - footer.appendChild(close); - //--- END FOOTER - - //--- START CONTENT - content.appendChild(header); - content.appendChild(body); - content.appendChild(footer); - //--- END CONTENT - - this.container = content; - //nameInput.setAttribute('value', editorUi.editor.getOrCreateFilename()); -}; - -/** - * Constructs a new rename dialog. - */ -function RenameDialog(editorUi) { - - var content = editorUi.createDiv('modal-content'); - var header = editorUi.createDiv('modal-header'); - var body = editorUi.createDiv('modal-body'); - var footer = editorUi.createDiv('modal-footer'); - - //--- START HEADER - var title = editorUi.createHeader('h4'); - mxUtils.write(title, mxResources.get('rename')); - - var x = mxUtils.button('', function() { - editorUi.hideDialog(); - }); - x.className = 'close'; - - header.appendChild(x); - header.appendChild(title); - //--- END HEADER - - //--- START BODY - var row = editorUi.createDiv('row'); - var col1 = editorUi.createDiv('col-md-4'); - var col2 = editorUi.createDiv('col-md-8'); - - var label = document.createElement('label'); - label.className = 'control-label pull-right'; - mxUtils.write(label, mxResources.get('name')); - col1.appendChild(label); - var name = editorUi.editor.filename; - var input = document.createElement('input'); - input.setAttribute('value', name); - input.className = 'form-control'; - - col2.appendChild(input); - - row.appendChild(col1); - row.appendChild(col2); - body.appendChild(row); - //--- END BODY - - //--- START FOOTER - var save = mxUtils.button(mxResources.get('save'), function() { - var req = new XMLHttpRequest(); - - req.open("PUT", SAVE_URL + editorUi.editor.data.id, true); - req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); - req.setRequestHeader('Authorization', 'Bearer ' + editorUi.editor.data.token); - req.send('name=' + input.value); - - req.onload = function(e) { - if (req.status === 200) { - editorUi.editor.setStatus('Project successfully renamed'); - editorUi.editor.filename = input.value; - - } else { - editorUi.editor.setStatus(JSON.parse(req.response).errors[0].message) - } - } - req.onerror = function(e) { - mxUtils.alert(req.statusText); - }; - editorUi.hideDialog(); - }); - save.className = 'btn blue'; - - var close = mxUtils.button(mxResources.get('cancel'), function() { - editorUi.hideDialog(); - }); - close.className = 'btn default'; - - footer.appendChild(save); - footer.appendChild(close); - //--- END FOOTER - - //--- START CONTENT - content.appendChild(header); - content.appendChild(body); - content.appendChild(footer); - //--- END CONTENT - - this.container = content; - //nameInput.setAttribute('value', editorUi.editor.getOrCreateFilename()); -}; -/** - * Constructs a new edit file dialog. - */ -function EditFileDialog(editorUi) { - - var content = editorUi.createDiv('modal-content'); - var header = editorUi.createDiv('modal-header'); - var body = editorUi.createDiv('modal-body'); - var footer = editorUi.createDiv('modal-footer'); - - //--- START HEADER - var title = editorUi.createHeader('h4'); - mxUtils.write(title, mxResources.get('edit')); - - var x = mxUtils.button('', function() { - editorUi.hideDialog(); - }); - x.className = 'close'; - - header.appendChild(x); - header.appendChild(title); - //--- END HEADER - - //--- START BODY - var row = editorUi.createDiv('row'); - var col1 = editorUi.createDiv('col-md-12'); - - var textarea = document.createElement('textarea'); - textarea.style.width = '100%'; - textarea.style.height = '374px'; - textarea.value = mxUtils.getPrettyXml(editorUi.editor.getGraphXml()); - - // Enables dropping files - if (fileSupport) { - function handleDrop(evt) { - evt.stopPropagation(); - evt.preventDefault(); - - if (evt.dataTransfer.files.length > 0) { - var file = evt.dataTransfer.files[0]; - - var reader = new FileReader(); - reader.onload = function(e) { - textarea.value = e.target.result; - }; - reader.readAsText(file); - } - }; - - function handleDragOver(evt) { - evt.stopPropagation(); - evt.preventDefault(); - }; - - // Setup the dnd listeners. - textarea.addEventListener('dragover', handleDragOver, false); - textarea.addEventListener('drop', handleDrop, false); - } - col1.appendChild(textarea); - - row.appendChild(col1); - body.appendChild(row); - //--- END BODY - - //--- START FOOTER - var save = mxUtils.button(mxResources.get('save'), function() { - var doc = mxUtils.parseXml(textarea.value); - editorUi.editor.setGraphXml(doc.documentElement); - editorUi.hideDialog(); - }); - save.className = 'btn blue'; - - var close = mxUtils.button(mxResources.get('cancel'), function() { - editorUi.hideDialog(); - }); - close.className = 'btn default'; - - footer.appendChild(save); - footer.appendChild(close); - //--- END FOOTER - - //--- START CONTENT - content.appendChild(header); - content.appendChild(body); - content.appendChild(footer); - //--- END CONTENT - - this.container = content; -}; - -/** - * Constructs a new export dialog. - */ -function ExportDialog(editorUi) { - var content = editorUi.createDiv('modal-content'); - var header = editorUi.createDiv('modal-header'); - var body = editorUi.createDiv('modal-body form'); - var footer = editorUi.createDiv('modal-footer'); - - //--- START HEADER - var title = editorUi.createHeader('h4'); - mxUtils.write(title, mxResources.get('export') + ' XML'); - - var x = mxUtils.button('', function() { - editorUi.hideDialog(); - }); - x.className = 'close'; - - header.appendChild(x); - header.appendChild(title); - //--- END HEADER - - //--- START BODY - var form = editorUi.createDiv('form-horizontal form-row-seperated'); - var group = editorUi.createDiv('form-group last'); - - var label = document.createElement('label'); - label.className = 'col-sm-4 control-label'; - mxUtils.write(label, mxResources.get('filename')); - - var input = document.createElement('input'); - input.setAttribute('value', editorUi.editor.getOrCreateFilename()); - input.className = 'form-control'; - - var div = editorUi.createDiv('col-sm-8'); - div.appendChild(input); - - group.appendChild(label); - group.appendChild(div); - form.appendChild(group); - - body.appendChild(form); - //--- END BODY - - //--- START FOOTER - var save = mxUtils.button(mxResources.get('export'), mxUtils.bind(this, - function(data) { - editorUi.save(false); - - var xml = encodeURIComponent(mxUtils.getXml(editorUi.editor.getGraphXml())); - new mxXmlRequest(SAVE_URL + editorUi.editor.data.id + '/download', - 'filename=' + input.value, 'GET').simulate(document, "_blank"); - editorUi.hideDialog(); - })); - save.className = 'btn blue'; - - var close = mxUtils.button(mxResources.get('cancel'), function() { - editorUi.hideDialog(); - }); - close.className = 'btn default'; - - footer.appendChild(save); - footer.appendChild(close); - //--- END FOOTER - - //--- START CONTENT - content.appendChild(header); - content.appendChild(body); - content.appendChild(footer); - //--- END CONTENT - - this.container = content; -}; - -/** - * Giuseppe Careri - * Constructs a new general dialog. - */ - -function GeneralDialog(editorUi, cell) { - var graph = editorUi.editor.graph; - - var content = editorUi.createDiv('modal-content'); - var header = editorUi.createDiv('modal-header'); - var body = editorUi.createDiv('modal-body form modal-body-scroll'); - var footer = editorUi.createDiv('modal-footer'); - //--- START HEADER - var title = editorUi.createHeader('h4'); - mxUtils.write(title, mxResources.get('edit') + ' ' + mxResources.get(cell.value - .nodeName)); - - var x = mxUtils.button('', function() { - editorUi.hideDialog(); - }); - x.className = 'close'; - - header.appendChild(x); - header.appendChild(title); - //--- END HEADER - - //--- START BODY - var inputGroup = editorUi.createDiv('form-horizontal form-row-seperated'); - inputGroup.setAttribute('id', 'inputGroup'); - var length = cell.value.attributes.length; - var form = editorUi.createDiv('form-horizontal form-row-seperated'); - - for (var i = 0; i < length; i++) { - var name = cell.value.attributes[i].name; - var id = '_' + name; - var value = cell.value.attributes[i].value; - console.log(name); - var group = editorUi.createDiv((i == length - 1) ? 'form-group last' : - 'form-group'); - - var label = document.createElement('label'); - label.className = 'col-sm-4 control-label'; - mxUtils.write(label, mxResources.get(name)); - group.appendChild(label); - - var input; - - switch (name) { - case 'id': - input = document.createElement('input'); - value = cell.id; - input.setAttribute('value', value); - input.setAttribute('disabled', true) - input.className = 'form-control'; - break; - case 'state': - input = document.createElement('input'); - input.setAttribute('type', 'button') - input.onclick = function() { - if (this.value == 'ON') { - this.setAttribute('value', 'OFF'); - this.className = 'btn btn-danger btn-md'; - } else { - this.className = 'btn btn-success btn-md'; - this.setAttribute('value', 'ON'); - } - - }; - input.setAttribute('value', value); - input.className = (value == 'ON' ? 'btn btn-success btn-md' : 'btn btn-danger btn-md'); - - break; - case 'text': - input = document.createElement('textarea'); - input.innerHTML = value; - input.className = 'form-control'; - break; - case 'Body': - input = document.createElement('textarea'); - input.innerHTML = value; - input.className = 'form-control'; - break; - case 'question': - input = document.createElement('textarea'); - input.innerHTML = value; - input.className = 'form-control'; - - break; - case 'other': - input = document.createElement('input'); - input.setAttribute('value', value); - input.setAttribute('placeholder', 'Insert label for "Other" answer option'); - input.className = 'form-control'; - break; - // case 'addtext': - // var input = document.createElement('input'); - // input.setAttribute('type', 'checkbox'); - // console.log('value', value); - // if (value == 'true') { - // input.setAttribute('checked', true); - // - // } else { - // input.removeAttribute("checked"); - // - // } - // // input.value = input.checked; - // - // input.onclick = function() { - // this.value = this.checked; - // - // console.log(input); - // if (this.checked) { - // console.log(this.checked); - // var rowdiv = editorUi.createDiv('form-group'); - // rowdiv.setAttribute('id', 'rowdiv'); - // var col1 = editorUi.createDiv('col-md-4'); - // var col2 = editorUi.createDiv('col-md-8'); - // var label = document.createElement('label'); - // // input.setAttribute('placeholder', 'Insert label'); - // label.className = 'pull-right control-label'; - // mxUtils.write(label, 'Texarea Label'); - // col1.appendChild(label); - // var input = document.createElement('input'); - // // input.setAttribute('placeholder', 'Insert label'); - // // input.value = inputValue; - // input.className = 'form-control'; - // col2.appendChild(input); - // rowdiv.appendChild(col1); - // rowdiv.appendChild(col2); - // inputGroup.appendChild(rowdiv); - // body.appendChild(inputGroup); - // } else { - // console.log(this.checked); - // document.getElementById('inputGroup').removeChild(document.getElementById('rowdiv')); - // } - // }; - // - // - // input.className = 'btn green'; - // break; - case 'account_id': - input = createDropdownFromApi('/api/sms/accounts', value, 'name', 'id', - editorUi); - break; - case 'sms_text': - input = document.createElement('textarea'); - input.innerHTML = value; - input.className = 'form-control'; - input.setAttribute('maxlength', "160"); - - break; - case 'add': - var input = mxUtils.button('+', function() { - var rowdiv = createDynamicInput(null, null, editorUi); - inputGroup.appendChild(rowdiv); - body.appendChild(inputGroup); - }) - - input.className = 'btn green'; - break; - default: - input = document.createElement('input'); - input.setAttribute('value', value); - input.className = 'form-control'; - break; - } - - input.setAttribute('id', id) - var div = editorUi.createDiv('col-sm-8'); - div.appendChild(input); - // Help - if (mxResources.get('help_' + name)) { - var help = editorUi.createDiv('p'); - help.className = 'help-block'; - mxUtils.write(help, mxResources.get('help_' + name)); - div.appendChild(help); - } - - group.appendChild(div); - form.appendChild(group); - } - body.appendChild(form); - // console.log(cell); - if (cell.value.nodeName == 'input') { - - if (cell.children) { - for (var j = 0; j < cell.children.length; j++) { - var selectValue = ''; - var inputValue = ''; - _.forEach(cell.children[j].value.attributes, function(element) { - // console.log(element); - if (element.name == 'type') { - selectValue = element.value; - - } else if (element.name == 'label') { - inputValue = element.value; - - } - }) - var rowdiv = createDynamicInput(selectValue, inputValue, editorUi); - inputGroup.appendChild(rowdiv); - - } - } - - } - body.appendChild(inputGroup); - - //--- END BODY - - //--- START FOOTER - var save = mxUtils.button(mxResources.get('save'), mxUtils.bind(this, - function(data) { - for (var i = 0; i < cell.value.attributes.length; i++) { - var id = '_' + cell.value.attributes[i].name; - var name = cell.value.attributes[i].name; - console.log(name); - - cell.setAttribute(name, document.getElementById(id).value); - console.log(document.getElementById(id).value); - - - }; - - if (cell.value.nodeName == 'input') { - if (graph.model.getChildCount(cell)) { - cell.children = []; - } - if (document.getElementById('inputGroup')) { - var inputGroup = document.getElementById('inputGroup').children; - for (var j = 0; j < inputGroup.length; j++) { - - var divSelect = inputGroup[j].children[1]; - var divInput = inputGroup[j].children[0]; - var doc = mxUtils.createXmlDocument(); - var node = doc.createElement('inputGroup'); - node.setAttribute('type', inputGroup[j].getElementsByTagName('select')[0].value); - node.setAttribute('label', inputGroup[j].getElementsByTagName('input')[0].value); - var cells = new mxCell(node); - graph.model.add(cell, cells); - } - } - } - - graph.refresh(cell); - editorUi.hideDialog(); - })); - save.className = 'btn blue'; - - var close = mxUtils.button(mxResources.get('cancel'), function() { - editorUi.hideDialog(); - }); - close.className = 'btn default'; - - footer.appendChild(save); - footer.appendChild(close); - //--- END FOOTER - - //--- START CONTENT - content.appendChild(header); - content.appendChild(body); - content.appendChild(footer); - //--- END CONTENT - - this.container = content; -}; - - - -function createDynamicInput(selectValue, inputValue, editorUi) { - - var rowdiv = editorUi.createDiv('form-group'); - var col1 = editorUi.createDiv('col-md-5'); - var col2 = editorUi.createDiv('col-md-5'); - var col3 = editorUi.createDiv('col-md-2'); - - var input = document.createElement('input'); - input.setAttribute('placeholder', 'Insert label'); - input.value = inputValue; - input.className = 'form-control'; - col1.appendChild(input); - - var select = document.createElement('select'); - var option = document.createElement('option'); - option.text = '-- None --'; - option.value = ''; - select.appendChild(option); - - var selectValues = ['text', 'number', 'textarea', 'checkbox']; - selectValues.forEach(function(elem) { - option = document.createElement('option'); - option.text = elem; - option.value = elem; - option.selected = (elem == selectValue); - select.appendChild(option); - }) - select.className = 'form-control'; - col2.appendChild(select); - var button = mxUtils.button('x', function() { - var buttonParent = button.parentElement; - var divParent = buttonParent.parentElement; - document.getElementById('inputGroup').removeChild(divParent); - }) - - button.className = 'btn red'; - col3.appendChild(button); - rowdiv.appendChild(col1); - rowdiv.appendChild(col2); - rowdiv.appendChild(col3); - return rowdiv; - - -} +var _0xb232=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x69\x6E\x70\x75\x74","\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74","\x74\x79\x70\x65","\x63\x68\x65\x63\x6B\x62\x6F\x78","\x73\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x63\x68\x65\x63\x6B\x65\x64","\x47\x45\x54","\x6F\x70\x65\x6E","\x41\x75\x74\x68\x6F\x72\x69\x7A\x61\x74\x69\x6F\x6E","\x42\x65\x61\x72\x65\x72\x20","\x74\x6F\x6B\x65\x6E","\x64\x61\x74\x61","\x65\x64\x69\x74\x6F\x72","\x73\x65\x74\x52\x65\x71\x75\x65\x73\x74\x48\x65\x61\x64\x65\x72","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x72\x65\x73\x70\x6F\x6E\x73\x65","\x70\x61\x72\x73\x65","\x73\x65\x6C\x65\x63\x74","\x6F\x70\x74\x69\x6F\x6E","\x74\x65\x78\x74","\x2D\x2D\x20\x4E\x6F\x6E\x65\x20\x2D\x2D","\x76\x61\x6C\x75\x65","\x2D\x31","\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64","\x25","\x72\x65\x70\x6C\x61\x63\x65","\x66\x6F\x72\x45\x61\x63\x68","\x73\x65\x6C\x65\x63\x74\x65\x64","\x72\x6F\x77\x73","\x63\x6C\x61\x73\x73\x4E\x61\x6D\x65","\x66\x6F\x72\x6D\x2D\x63\x6F\x6E\x74\x72\x6F\x6C\x20\x73\x65\x6C\x65\x63\x74\x32","\x30","\x66\x69\x6C\x74\x65\x72","\x73\x65\x6C\x65\x63\x74\x2D\x67\x72\x6F\x75\x70\x2D\x66\x61\x74\x68\x65\x72","\x74\x6F\x55\x70\x70\x65\x72\x43\x61\x73\x65","\x73\x65\x6C\x65\x63\x74\x2D\x67\x72\x6F\x75\x70\x2D\x73\x6F\x6E","\x2D","\x63\x61\x70\x69\x74\x61\x6C\x69\x7A\x65","","\x49\x53\x5F\x49\x45","\x64\x6F\x63\x75\x6D\x65\x6E\x74\x4D\x6F\x64\x65","\x73\x63\x72\x6F\x6C\x6C\x57\x69\x64\x74\x68","\x62\x6F\x64\x79","\x72\x6F\x75\x6E\x64","\x6D\x61\x78","\x73\x63\x72\x6F\x6C\x6C\x48\x65\x69\x67\x68\x74","\x64\x6F\x63\x75\x6D\x65\x6E\x74\x45\x6C\x65\x6D\x65\x6E\x74","\x67\x65\x44\x69\x61\x6C\x6F\x67","\x63\x72\x65\x61\x74\x65\x44\x69\x76","\x6D\x6F\x64\x61\x6C\x20\x66\x61\x64\x65\x20\x69\x6E\x20\x63\x65\x6E\x74\x65\x72","\x64\x69\x73\x70\x6C\x61\x79","\x73\x74\x79\x6C\x65","\x62\x6C\x6F\x63\x6B","\x70\x61\x64\x64\x69\x6E\x67\x52\x69\x67\x68\x74","\x31\x32\x70\x78","\x67\x65\x4D\x6F\x64\x61\x6C\x44\x69\x61\x6C\x6F\x67","\x6D\x6F\x64\x61\x6C\x2D\x64\x69\x61\x6C\x6F\x67","\x62\x67","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64","\x6D\x6F\x64\x61\x6C\x2D\x62\x61\x63\x6B\x64\x72\x6F\x70\x20\x66\x61\x64\x65\x20\x69\x6E","\x49\x53\x5F\x51\x55\x49\x52\x4B\x53","\x6F\x6E\x44\x69\x61\x6C\x6F\x67\x43\x6C\x6F\x73\x65","\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x63\x6C\x6F\x73\x65","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x72\x65\x6D\x6F\x76\x65\x43\x68\x69\x6C\x64","\x70\x61\x72\x65\x6E\x74\x4E\x6F\x64\x65","\x6D\x6F\x64\x61\x6C\x2D\x63\x6F\x6E\x74\x65\x6E\x74","\x6D\x6F\x64\x61\x6C\x2D\x68\x65\x61\x64\x65\x72","\x6D\x6F\x64\x61\x6C\x2D\x62\x6F\x64\x79","\x6D\x6F\x64\x61\x6C\x2D\x66\x6F\x6F\x74\x65\x72","\x68\x34","\x63\x72\x65\x61\x74\x65\x48\x65\x61\x64\x65\x72","\x69\x6D\x70\x6F\x72\x74","\x67\x65\x74","\x20\x58\x4D\x4C","\x77\x72\x69\x74\x65","\x68\x69\x64\x65\x44\x69\x61\x6C\x6F\x67","\x62\x75\x74\x74\x6F\x6E","\x72\x6F\x77","\x63\x6F\x6C\x2D\x6D\x64\x2D\x31\x32","\x74\x65\x78\x74\x61\x72\x65\x61","\x77\x69\x64\x74\x68","\x31\x30\x30\x25","\x68\x65\x69\x67\x68\x74","\x33\x37\x34\x70\x78","\x66\x69\x6C\x65","\x61\x63\x63\x65\x70\x74","\x74\x65\x78\x74\x2F\x78\x6D\x6C","\x63\x68\x61\x6E\x67\x65","\x66\x69\x6C\x65\x73","\x74\x61\x72\x67\x65\x74","\x6C\x6F\x67","\x6F\x6E\x6C\x6F\x61\x64","\x72\x65\x73\x75\x6C\x74","\x72\x65\x61\x64\x41\x73\x54\x65\x78\x74","\x46\x61\x69\x6C\x65\x64\x20\x74\x6F\x20\x6C\x6F\x61\x64\x20\x66\x6F\x72\x6D\x61\x74\x20\x66\x69\x6C\x65","\x46\x61\x69\x6C\x65\x64\x20\x74\x6F\x20\x6C\x6F\x61\x64\x20\x66\x69\x6C\x65","\x61\x64\x64\x45\x76\x65\x6E\x74\x4C\x69\x73\x74\x65\x6E\x65\x72","\x70\x61\x72\x73\x65\x58\x6D\x6C","\x73\x65\x74\x47\x72\x61\x70\x68\x58\x6D\x6C","\x62\x69\x6E\x64","\x62\x74\x6E\x20\x62\x6C\x75\x65","\x63\x61\x6E\x63\x65\x6C","\x62\x74\x6E\x20\x64\x65\x66\x61\x75\x6C\x74","\x61\x62\x6F\x75\x74","\x20\x43\x61\x6C\x6C\x79\x20\x53\x71\x75\x61\x72\x65","\x69\x6D\x67","\x62\x6F\x72\x64\x65\x72","\x30\x70\x78","\x31\x37\x36","\x31\x35\x31","\x73\x72\x63","\x2F\x6C\x6F\x67\x6F\x2E\x70\x6E\x67","\x62\x72","\x50\x6F\x77\x65\x72\x65\x64\x20\x62\x79\x20\x58\x65\x6E\x69\x61\x6C\x61\x62\x20","\x56\x45\x52\x53\x49\x4F\x4E","\x61","\x68\x72\x65\x66","\x68\x74\x74\x70\x3A\x2F\x2F\x77\x77\x77\x2E\x63\x61\x6C\x6C\x79\x73\x71\x75\x61\x72\x65\x2E\x63\x6F\x6D\x2F","\x5F\x62\x6C\x61\x6E\x6B","\x77\x77\x77\x2E\x63\x61\x6C\x6C\x79\x73\x71\x75\x61\x72\x65\x2E\x63\x6F\x6D","\x73\x61\x76\x65\x41\x73","\x6E\x61\x6D\x65","\x5F","\x67\x65\x74\x4F\x72\x43\x72\x65\x61\x74\x65\x46\x69\x6C\x65\x6E\x61\x6D\x65","\x63\x6F\x6C\x2D\x6D\x64\x2D\x34","\x63\x6F\x6C\x2D\x6D\x64\x2D\x38","\x6C\x61\x62\x65\x6C","\x63\x6F\x6E\x74\x72\x6F\x6C\x2D\x6C\x61\x62\x65\x6C\x20\x70\x75\x6C\x6C\x2D\x72\x69\x67\x68\x74","\x5F\x63\x6F\x70\x79","\x69\x64","\x66\x6F\x72\x6D\x2D\x63\x6F\x6E\x74\x72\x6F\x6C","\x73\x61\x76\x65","\x6E\x65\x77","\x5F\x6E\x65\x77","\x76\x61\x72\x69\x61\x62\x6C\x65","\x76\x61\x72\x69\x61\x62\x6C\x65\x20\x6E\x61\x6D\x65","\x2F\x61\x70\x69\x2F\x6A\x73\x63\x72\x69\x70\x74\x79\x2F\x70\x72\x6F\x6A\x65\x63\x74\x73","\x6C\x65\x6E\x67\x74\x68","\x6A\x73\x63\x72\x69\x70\x74\x79\x2F\x70\x72\x6F\x6A\x65\x63\x74\x73\x2F\x76\x69\x65\x77\x2F","\x72\x65\x6E\x61\x6D\x65","\x66\x69\x6C\x65\x6E\x61\x6D\x65","\x50\x55\x54","\x43\x6F\x6E\x74\x65\x6E\x74\x2D\x54\x79\x70\x65","\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2F\x78\x2D\x77\x77\x77\x2D\x66\x6F\x72\x6D\x2D\x75\x72\x6C\x65\x6E\x63\x6F\x64\x65\x64","\x6E\x61\x6D\x65\x3D","\x50\x72\x6F\x6A\x65\x63\x74\x20\x73\x75\x63\x63\x65\x73\x73\x66\x75\x6C\x6C\x79\x20\x72\x65\x6E\x61\x6D\x65\x64","\x73\x65\x74\x53\x74\x61\x74\x75\x73","\x6D\x65\x73\x73\x61\x67\x65","\x65\x72\x72\x6F\x72\x73","\x6F\x6E\x65\x72\x72\x6F\x72","\x73\x74\x61\x74\x75\x73\x54\x65\x78\x74","\x61\x6C\x65\x72\x74","\x65\x64\x69\x74","\x67\x65\x74\x47\x72\x61\x70\x68\x58\x6D\x6C","\x67\x65\x74\x50\x72\x65\x74\x74\x79\x58\x6D\x6C","\x73\x74\x6F\x70\x50\x72\x6F\x70\x61\x67\x61\x74\x69\x6F\x6E","\x70\x72\x65\x76\x65\x6E\x74\x44\x65\x66\x61\x75\x6C\x74","\x64\x61\x74\x61\x54\x72\x61\x6E\x73\x66\x65\x72","\x64\x72\x61\x67\x6F\x76\x65\x72","\x64\x72\x6F\x70","\x6D\x6F\x64\x61\x6C\x2D\x62\x6F\x64\x79\x20\x66\x6F\x72\x6D","\x65\x78\x70\x6F\x72\x74","\x66\x6F\x72\x6D\x2D\x68\x6F\x72\x69\x7A\x6F\x6E\x74\x61\x6C\x20\x66\x6F\x72\x6D\x2D\x72\x6F\x77\x2D\x73\x65\x70\x65\x72\x61\x74\x65\x64","\x66\x6F\x72\x6D\x2D\x67\x72\x6F\x75\x70\x20\x6C\x61\x73\x74","\x63\x6F\x6C\x2D\x73\x6D\x2D\x34\x20\x63\x6F\x6E\x74\x72\x6F\x6C\x2D\x6C\x61\x62\x65\x6C","\x63\x6F\x6C\x2D\x73\x6D\x2D\x38","\x67\x65\x74\x58\x6D\x6C","\x73\x69\x6D\x75\x6C\x61\x74\x65","\x2F\x64\x6F\x77\x6E\x6C\x6F\x61\x64","\x66\x69\x6C\x65\x6E\x61\x6D\x65\x3D","\x67\x72\x61\x70\x68","\x6D\x6F\x64\x61\x6C\x2D\x62\x6F\x64\x79\x20\x66\x6F\x72\x6D\x20\x6D\x6F\x64\x61\x6C\x2D\x62\x6F\x64\x79\x2D\x73\x63\x72\x6F\x6C\x6C","\x20","\x6E\x6F\x64\x65\x4E\x61\x6D\x65","\x69\x6E\x70\x75\x74\x47\x72\x6F\x75\x70","\x61\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x66\x6F\x72\x6D\x2D\x67\x72\x6F\x75\x70","\x64\x69\x73\x61\x62\x6C\x65\x64","\x6F\x6E\x63\x6C\x69\x63\x6B","\x4F\x4E","\x4F\x46\x46","\x62\x74\x6E\x20\x62\x74\x6E\x2D\x64\x61\x6E\x67\x65\x72\x20\x62\x74\x6E\x2D\x6D\x64","\x62\x74\x6E\x20\x62\x74\x6E\x2D\x73\x75\x63\x63\x65\x73\x73\x20\x62\x74\x6E\x2D\x6D\x64","\x73\x74\x61\x74\x65","\x69\x6E\x6E\x65\x72\x48\x54\x4D\x4C","\x42\x6F\x64\x79","\x71\x75\x65\x73\x74\x69\x6F\x6E","\x70\x6C\x61\x63\x65\x68\x6F\x6C\x64\x65\x72","\x49\x6E\x73\x65\x72\x74\x20\x6C\x61\x62\x65\x6C\x20\x66\x6F\x72\x20\x22\x4F\x74\x68\x65\x72\x22\x20\x61\x6E\x73\x77\x65\x72\x20\x6F\x70\x74\x69\x6F\x6E","\x6F\x74\x68\x65\x72","\x2F\x61\x70\x69\x2F\x73\x6D\x73\x2F\x61\x63\x63\x6F\x75\x6E\x74\x73","\x61\x63\x63\x6F\x75\x6E\x74\x5F\x69\x64","\x6D\x61\x78\x6C\x65\x6E\x67\x74\x68","\x31\x36\x30","\x73\x6D\x73\x5F\x74\x65\x78\x74","\x2B","\x62\x74\x6E\x20\x67\x72\x65\x65\x6E","\x61\x64\x64","\x68\x65\x6C\x70\x5F","\x70","\x68\x65\x6C\x70\x2D\x62\x6C\x6F\x63\x6B","\x63\x68\x69\x6C\x64\x72\x65\x6E","\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x42\x79\x49\x64","\x67\x65\x74\x43\x68\x69\x6C\x64\x43\x6F\x75\x6E\x74","\x6D\x6F\x64\x65\x6C","\x63\x72\x65\x61\x74\x65\x58\x6D\x6C\x44\x6F\x63\x75\x6D\x65\x6E\x74","\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x73\x42\x79\x54\x61\x67\x4E\x61\x6D\x65","\x72\x65\x66\x72\x65\x73\x68","\x63\x6F\x6C\x2D\x6D\x64\x2D\x35","\x63\x6F\x6C\x2D\x6D\x64\x2D\x32","\x49\x6E\x73\x65\x72\x74\x20\x6C\x61\x62\x65\x6C","\x6E\x75\x6D\x62\x65\x72","\x78","\x70\x61\x72\x65\x6E\x74\x45\x6C\x65\x6D\x65\x6E\x74","\x62\x74\x6E\x20\x72\x65\x64"];_0xb232[0];function createCheckbox(_0xc0b7x2){var _0xc0b7x3=document[_0xb232[2]](_0xb232[1]);_0xc0b7x3[_0xb232[5]](_0xb232[3],_0xb232[4]);if(_0xc0b7x2){_0xc0b7x3[_0xb232[5]](_0xb232[6],true)};return _0xc0b7x3}function createDropdownFromApi(_0xc0b7x5,_0xc0b7x2,_0xc0b7x6,_0xc0b7x7,_0xc0b7x8,_0xc0b7x9,_0xc0b7xa){var _0xc0b7xb= new XMLHttpRequest();_0xc0b7xb[_0xb232[8]](_0xb232[7],_0xc0b7x5,false);_0xc0b7xb[_0xb232[14]](_0xb232[9],_0xb232[10]+ _0xc0b7x8[_0xb232[13]][_0xb232[12]][_0xb232[11]]);_0xc0b7xb[_0xb232[15]](null);var _0xc0b7xc=[];if(_0xc0b7xb[_0xb232[16]]=== 200){_0xc0b7xc= JSON[_0xb232[18]](_0xc0b7xb[_0xb232[17]])};var _0xc0b7x3=document[_0xb232[2]](_0xb232[19]);var _0xc0b7xd=document[_0xb232[2]](_0xb232[20]);_0xc0b7xd[_0xb232[21]]= _0xb232[22];_0xc0b7xd[_0xb232[23]]= _0xb232[24];_0xc0b7x3[_0xb232[25]](_0xc0b7xd);_0xc0b7xc[_0xb232[30]][_0xb232[28]](function(_0xc0b7xe){_0xc0b7xd= document[_0xb232[2]](_0xb232[20]);_0xc0b7xd[_0xb232[21]]= _0xc0b7xe[_0xc0b7x6];if(_0xc0b7x9&& _0xc0b7xa){_0xc0b7x9[_0xb232[28]](function(_0xc0b7xf){_0xc0b7xa= _0xc0b7xa[_0xb232[27]](_0xb232[26]+ _0xc0b7xf+ _0xb232[26],_0xc0b7xe[_0xc0b7xf])});_0xc0b7xd[_0xb232[23]]= _0xc0b7xa;_0xc0b7xd[_0xb232[29]]= (_0xc0b7xa== _0xc0b7x2)}else {_0xc0b7xd[_0xb232[23]]= _0xc0b7xe[_0xc0b7x7];_0xc0b7xd[_0xb232[29]]= (_0xc0b7xe[_0xc0b7x7]== _0xc0b7x2)};_0xc0b7x3[_0xb232[25]](_0xc0b7xd)});_0xc0b7x3[_0xb232[31]]= _0xb232[32];return _0xc0b7x3}function createGroupedDropdownFromApi(_0xc0b7x5,_0xc0b7x2,_0xc0b7x6,_0xc0b7x7,_0xc0b7x8,_0xc0b7x11,_0xc0b7x12){var _0xc0b7xb= new XMLHttpRequest();_0xc0b7xb[_0xb232[8]](_0xb232[7],_0xc0b7x5,false);_0xc0b7xb[_0xb232[14]](_0xb232[9],_0xb232[10]+ _0xc0b7x8[_0xb232[13]][_0xb232[12]][_0xb232[11]]);_0xc0b7xb[_0xb232[15]](null);var _0xc0b7xc=[];if(_0xc0b7xb[_0xb232[16]]=== 200){_0xc0b7xc= JSON[_0xb232[18]](_0xc0b7xb[_0xb232[17]])};var _0xc0b7x3=document[_0xb232[2]](_0xb232[19]);var _0xc0b7xd=document[_0xb232[2]](_0xb232[20]);_0xc0b7xd[_0xb232[21]]= _0xb232[22];_0xc0b7xd[_0xb232[23]]= _0xb232[33];_0xc0b7x3[_0xb232[25]](_0xc0b7xd);var _0xc0b7x13=_0xc0b7x11?_0xc0b7xc[_0xb232[30]]:_0xc0b7xc;var _0xc0b7x14={};var _0xc0b7x15={};_0xc0b7x14[_0xc0b7x12]= null;var _0xc0b7x16=_[_0xb232[34]](_0xc0b7x13,_0xc0b7x14);var _0xc0b7x17={};_0xc0b7x16[_0xb232[28]](function(_0xc0b7xe){_0xc0b7xd= document[_0xb232[2]](_0xb232[20]);_0xc0b7xd[_0xb232[31]]= _0xb232[35];_0xc0b7xd[_0xb232[21]]= _0xc0b7xe[_0xc0b7x6][_0xb232[36]]();_0xc0b7xd[_0xb232[23]]= _0xc0b7xe[_0xc0b7x7];_0xc0b7xd[_0xb232[29]]= (_0xc0b7xe[_0xc0b7x7]== _0xc0b7x2);_0xc0b7x3[_0xb232[25]](_0xc0b7xd);_0xc0b7x15[_0xc0b7x12]= _0xc0b7xe[_0xc0b7x7];_0xc0b7x17= _[_0xb232[34]](_0xc0b7x13,_0xc0b7x15);_0xc0b7x17[_0xb232[28]](function(_0xc0b7xe){_0xc0b7xd= document[_0xb232[2]](_0xb232[20]);_0xc0b7xd[_0xb232[31]]= _0xb232[37];_0xc0b7xd[_0xb232[21]]= _0xb232[38]+ _[_0xb232[39]](_0xc0b7xe[_0xc0b7x6]);_0xc0b7xd[_0xb232[23]]= _0xc0b7xe[_0xc0b7x7];_0xc0b7xd[_0xb232[29]]= (_0xc0b7xe[_0xc0b7x7]== _0xc0b7x2);_0xc0b7x3[_0xb232[25]](_0xc0b7xd)})});_0xc0b7x3[_0xb232[31]]= _0xb232[32];return _0xc0b7x3}function createDropdownFromArray(_0xc0b7x19,_0xc0b7x2){var _0xc0b7x3=document[_0xb232[2]](_0xb232[19]);for(var _0xc0b7x1a in _0xc0b7x19){var _0xc0b7xd=document[_0xb232[2]](_0xb232[20]);_0xc0b7xd[_0xb232[21]]= _0xc0b7x19[_0xc0b7x1a];_0xc0b7xd[_0xb232[23]]= _0xc0b7x1a;if(_0xc0b7x2> 0|| _0xc0b7x2!= _0xb232[40]){_0xc0b7xd[_0xb232[29]]= (_0xc0b7x2=== _0xc0b7x1a)?true:false};_0xc0b7x3[_0xb232[25]](_0xc0b7xd)};_0xc0b7x3[_0xb232[31]]= _0xb232[32];return _0xc0b7x3}function Dialog(_0xc0b7x8,_0xc0b7x1c,_0xc0b7x1d,_0xc0b7x1e,_0xc0b7x1f,_0xc0b7x20,_0xc0b7x21){var _0xc0b7x22=0;if(mxClient[_0xb232[41]]&& document[_0xb232[42]]!= 9){_0xc0b7x22= 60};_0xc0b7x1d+= _0xc0b7x22;_0xc0b7x1e+= _0xc0b7x22;var _0xc0b7x23=Math[_0xb232[46]](0,Math[_0xb232[45]]((document[_0xb232[44]][_0xb232[43]]- _0xc0b7x1d)/ 2));var _0xc0b7x24=Math[_0xb232[46]](0,Math[_0xb232[45]]((Math[_0xb232[46]](document[_0xb232[44]][_0xb232[47]],document[_0xb232[48]][_0xb232[47]])- _0xc0b7x1e)/ 3));var _0xc0b7x25=_0xc0b7x8[_0xb232[50]](_0xb232[49]);_0xc0b7x25[_0xb232[31]]= _0xb232[51];_0xc0b7x25[_0xb232[53]][_0xb232[52]]= _0xb232[54];_0xc0b7x25[_0xb232[53]][_0xb232[55]]= _0xb232[56];var _0xc0b7x26=_0xc0b7x8[_0xb232[50]](_0xb232[57]);_0xc0b7x26[_0xb232[31]]= _0xb232[58];_0xc0b7x26[_0xb232[25]](_0xc0b7x1c);_0xc0b7x25[_0xb232[25]](_0xc0b7x26);if(this[_0xb232[59]]== null){this[_0xb232[59]]= _0xc0b7x8[_0xb232[50]](_0xb232[60]);this[_0xb232[59]][_0xb232[31]]= _0xb232[61];if(mxClient[_0xb232[62]]){ new mxDivResizer(this[_0xb232[59]])}};if(_0xc0b7x1f){document[_0xb232[44]][_0xb232[25]](this[_0xb232[59]])};document[_0xb232[44]][_0xb232[25]](_0xc0b7x25);this[_0xb232[63]]= _0xc0b7x21;this[_0xb232[64]]= _0xc0b7x25}Dialog[_0xb232[66]][_0xb232[65]]= function(){if(this[_0xb232[63]]!= null){this[_0xb232[63]]();this[_0xb232[63]]= null};this[_0xb232[64]][_0xb232[68]][_0xb232[67]](this[_0xb232[64]]);this[_0xb232[59]][_0xb232[68]][_0xb232[67]](this[_0xb232[59]])};function ImportDialog(_0xc0b7x8){var _0xc0b7x28=_0xc0b7x8[_0xb232[50]](_0xb232[69]);var _0xc0b7x29=_0xc0b7x8[_0xb232[50]](_0xb232[70]);var _0xc0b7x2a=_0xc0b7x8[_0xb232[50]](_0xb232[71]);var _0xc0b7x2b=_0xc0b7x8[_0xb232[50]](_0xb232[72]);var _0xc0b7x2c=_0xc0b7x8[_0xb232[74]](_0xb232[73]);mxUtils[_0xb232[78]](_0xc0b7x2c,mxResources[_0xb232[76]](_0xb232[75])+ _0xb232[77]);var _0xc0b7x2d=mxUtils[_0xb232[80]](_0xb232[40],function(){_0xc0b7x8[_0xb232[79]]()});_0xc0b7x2d[_0xb232[31]]= _0xb232[65];_0xc0b7x29[_0xb232[25]](_0xc0b7x2d);_0xc0b7x29[_0xb232[25]](_0xc0b7x2c);var _0xc0b7x2e=_0xc0b7x8[_0xb232[50]](_0xb232[81]);var _0xc0b7x2f=_0xc0b7x8[_0xb232[50]](_0xb232[82]);var _0xc0b7x30=document[_0xb232[2]](_0xb232[83]);_0xc0b7x30[_0xb232[53]][_0xb232[84]]= _0xb232[85];_0xc0b7x30[_0xb232[53]][_0xb232[86]]= _0xb232[87];var _0xc0b7x3=document[_0xb232[2]](_0xb232[1]);_0xc0b7x3[_0xb232[3]]= _0xb232[88];_0xc0b7x3[_0xb232[5]](_0xb232[89],_0xb232[90]);_0xc0b7x3[_0xb232[100]](_0xb232[91],function _0xc0b7x31(_0xc0b7x32){var _0xc0b7x33=_0xc0b7x32[_0xb232[93]][_0xb232[92]][0];console[_0xb232[94]](_0xc0b7x33);if(_0xc0b7x33){if(_0xc0b7x33[_0xb232[3]]=== _0xb232[90]){var _0xc0b7x34= new FileReader();_0xc0b7x34[_0xb232[95]]= function(_0xc0b7x35){var _0xc0b7x36=_0xc0b7x35[_0xb232[93]][_0xb232[96]];mxUtils[_0xb232[78]](_0xc0b7x30,_0xc0b7x36)};_0xc0b7x34[_0xb232[97]](_0xc0b7x33)}else {alert(_0xb232[98])}}else {alert(_0xb232[99])}},false);_0xc0b7x2f[_0xb232[25]](_0xc0b7x3);_0xc0b7x2f[_0xb232[25]](_0xc0b7x30);_0xc0b7x2e[_0xb232[25]](_0xc0b7x2f);_0xc0b7x2a[_0xb232[25]](_0xc0b7x2e);var _0xc0b7x37=mxUtils[_0xb232[80]](mxResources[_0xb232[76]](_0xb232[75]),mxUtils[_0xb232[103]](this,function(_0xc0b7x38){var _0xc0b7x39=mxUtils[_0xb232[101]](_0xc0b7x30[_0xb232[23]]);_0xc0b7x8[_0xb232[13]][_0xb232[102]](_0xc0b7x39[_0xb232[48]]);_0xc0b7x8[_0xb232[79]]()}));_0xc0b7x37[_0xb232[31]]= _0xb232[104];var _0xc0b7x3a=mxUtils[_0xb232[80]](mxResources[_0xb232[76]](_0xb232[105]),function(){_0xc0b7x8[_0xb232[79]]()});_0xc0b7x3a[_0xb232[31]]= _0xb232[106];_0xc0b7x2b[_0xb232[25]](_0xc0b7x37);_0xc0b7x2b[_0xb232[25]](_0xc0b7x3a);_0xc0b7x28[_0xb232[25]](_0xc0b7x29);_0xc0b7x28[_0xb232[25]](_0xc0b7x2a);_0xc0b7x28[_0xb232[25]](_0xc0b7x2b);this[_0xb232[64]]= _0xc0b7x28}function AboutDialog(_0xc0b7x8){var _0xc0b7x28=_0xc0b7x8[_0xb232[50]](_0xb232[69]);var _0xc0b7x29=_0xc0b7x8[_0xb232[50]](_0xb232[70]);var _0xc0b7x2a=_0xc0b7x8[_0xb232[50]](_0xb232[71]);var _0xc0b7x2b=_0xc0b7x8[_0xb232[50]](_0xb232[72]);var _0xc0b7x2c=_0xc0b7x8[_0xb232[74]](_0xb232[73]);mxUtils[_0xb232[78]](_0xc0b7x2c,mxResources[_0xb232[76]](_0xb232[107])+ _0xb232[108]);var _0xc0b7x2d=mxUtils[_0xb232[80]](_0xb232[40],function(){_0xc0b7x8[_0xb232[79]]()});_0xc0b7x2d[_0xb232[31]]= _0xb232[65];_0xc0b7x29[_0xb232[25]](_0xc0b7x2d);_0xc0b7x29[_0xb232[25]](_0xc0b7x2c);var _0xc0b7x3c=document[_0xb232[2]](_0xb232[109]);_0xc0b7x3c[_0xb232[53]][_0xb232[110]]= _0xb232[111];_0xc0b7x3c[_0xb232[5]](_0xb232[84],_0xb232[112]);_0xc0b7x3c[_0xb232[5]](_0xb232[84],_0xb232[113]);_0xc0b7x3c[_0xb232[5]](_0xb232[114],IMAGE_PATH+ _0xb232[115]);_0xc0b7x2a[_0xb232[25]](_0xc0b7x3c);mxUtils[_0xb232[116]](_0xc0b7x2a);mxUtils[_0xb232[78]](_0xc0b7x2a,_0xb232[117]+ mxClient[_0xb232[118]]);mxUtils[_0xb232[116]](_0xc0b7x2a);var _0xc0b7x3d=document[_0xb232[2]](_0xb232[119]);_0xc0b7x3d[_0xb232[5]](_0xb232[120],_0xb232[121]);_0xc0b7x3d[_0xb232[5]](_0xb232[93],_0xb232[122]);mxUtils[_0xb232[78]](_0xc0b7x3d,_0xb232[123]);_0xc0b7x2a[_0xb232[25]](_0xc0b7x3d);mxUtils[_0xb232[116]](_0xc0b7x2a);mxUtils[_0xb232[116]](_0xc0b7x2a);var _0xc0b7x3a=mxUtils[_0xb232[80]](mxResources[_0xb232[76]](_0xb232[65]),function(){_0xc0b7x8[_0xb232[79]]()});_0xc0b7x3a[_0xb232[31]]= _0xb232[106];_0xc0b7x2b[_0xb232[25]](_0xc0b7x3a);_0xc0b7x28[_0xb232[25]](_0xc0b7x29);_0xc0b7x28[_0xb232[25]](_0xc0b7x2a);_0xc0b7x28[_0xb232[25]](_0xc0b7x2b);this[_0xb232[64]]= _0xc0b7x28}function SaveDialog(_0xc0b7x8){var _0xc0b7x28=_0xc0b7x8[_0xb232[50]](_0xb232[69]);var _0xc0b7x29=_0xc0b7x8[_0xb232[50]](_0xb232[70]);var _0xc0b7x2a=_0xc0b7x8[_0xb232[50]](_0xb232[71]);var _0xc0b7x2b=_0xc0b7x8[_0xb232[50]](_0xb232[72]);var _0xc0b7x2c=_0xc0b7x8[_0xb232[74]](_0xb232[73]);mxUtils[_0xb232[78]](_0xc0b7x2c,mxResources[_0xb232[76]](_0xb232[124]));var _0xc0b7x2d=mxUtils[_0xb232[80]](_0xb232[40],function(){_0xc0b7x8[_0xb232[79]]()});_0xc0b7x2d[_0xb232[31]]= _0xb232[65];_0xc0b7x29[_0xb232[25]](_0xc0b7x2d);_0xc0b7x29[_0xb232[25]](_0xc0b7x2c);var _0xc0b7x3f=_0xb232[125];var _0xc0b7x40=_0xb232[126]+ _0xc0b7x3f;var _0xc0b7x2=_0xc0b7x8[_0xb232[13]][_0xb232[127]]();var _0xc0b7x2e=_0xc0b7x8[_0xb232[50]](_0xb232[81]);var _0xc0b7x2f=_0xc0b7x8[_0xb232[50]](_0xb232[128]);var _0xc0b7x41=_0xc0b7x8[_0xb232[50]](_0xb232[129]);var _0xc0b7x42=document[_0xb232[2]](_0xb232[130]);_0xc0b7x42[_0xb232[31]]= _0xb232[131];mxUtils[_0xb232[78]](_0xc0b7x42,mxResources[_0xb232[76]](_0xc0b7x3f));_0xc0b7x2f[_0xb232[25]](_0xc0b7x42);var _0xc0b7x43=document[_0xb232[2]](_0xb232[1]);_0xc0b7x43[_0xb232[5]](_0xb232[23],_0xc0b7x2+ _0xb232[132]);_0xc0b7x43[_0xb232[5]](_0xb232[133],_0xc0b7x40);_0xc0b7x43[_0xb232[31]]= _0xb232[134];_0xc0b7x41[_0xb232[25]](_0xc0b7x43);_0xc0b7x2e[_0xb232[25]](_0xc0b7x2f);_0xc0b7x2e[_0xb232[25]](_0xc0b7x41);_0xc0b7x2a[_0xb232[25]](_0xc0b7x2e);var _0xc0b7x37=mxUtils[_0xb232[80]](mxResources[_0xb232[76]](_0xb232[135]),function(){_0xc0b7x8[_0xb232[124]](_0xc0b7x43[_0xb232[23]]);_0xc0b7x8[_0xb232[79]]()});_0xc0b7x37[_0xb232[31]]= _0xb232[104];var _0xc0b7x3a=mxUtils[_0xb232[80]](mxResources[_0xb232[76]](_0xb232[105]),function(){_0xc0b7x8[_0xb232[79]]()});_0xc0b7x3a[_0xb232[31]]= _0xb232[106];_0xc0b7x2b[_0xb232[25]](_0xc0b7x37);_0xc0b7x2b[_0xb232[25]](_0xc0b7x3a);_0xc0b7x28[_0xb232[25]](_0xc0b7x29);_0xc0b7x28[_0xb232[25]](_0xc0b7x2a);_0xc0b7x28[_0xb232[25]](_0xc0b7x2b);this[_0xb232[64]]= _0xc0b7x28}function NewDialog(_0xc0b7x8){var _0xc0b7x28=_0xc0b7x8[_0xb232[50]](_0xb232[69]);var _0xc0b7x29=_0xc0b7x8[_0xb232[50]](_0xb232[70]);var _0xc0b7x2a=_0xc0b7x8[_0xb232[50]](_0xb232[71]);var _0xc0b7x2b=_0xc0b7x8[_0xb232[50]](_0xb232[72]);var _0xc0b7x2c=_0xc0b7x8[_0xb232[74]](_0xb232[73]);mxUtils[_0xb232[78]](_0xc0b7x2c,mxResources[_0xb232[76]](_0xb232[136]));var _0xc0b7x2d=mxUtils[_0xb232[80]](_0xb232[40],function(){_0xc0b7x8[_0xb232[79]]()});_0xc0b7x2d[_0xb232[31]]= _0xb232[65];_0xc0b7x29[_0xb232[25]](_0xc0b7x2d);_0xc0b7x29[_0xb232[25]](_0xc0b7x2c);var _0xc0b7x3f=_0xb232[125];var _0xc0b7x40=_0xb232[126]+ _0xc0b7x3f;var _0xc0b7x2=_0xc0b7x8[_0xb232[13]][_0xb232[127]]();var _0xc0b7x2e=_0xc0b7x8[_0xb232[50]](_0xb232[81]);var _0xc0b7x2f=_0xc0b7x8[_0xb232[50]](_0xb232[128]);var _0xc0b7x41=_0xc0b7x8[_0xb232[50]](_0xb232[129]);var _0xc0b7x42=document[_0xb232[2]](_0xb232[130]);_0xc0b7x42[_0xb232[31]]= _0xb232[131];mxUtils[_0xb232[78]](_0xc0b7x42,mxResources[_0xb232[76]](_0xc0b7x3f));_0xc0b7x2f[_0xb232[25]](_0xc0b7x42);var _0xc0b7x43=document[_0xb232[2]](_0xb232[1]);_0xc0b7x43[_0xb232[5]](_0xb232[23],_0xc0b7x2+ _0xb232[137]);_0xc0b7x43[_0xb232[5]](_0xb232[133],_0xc0b7x40);_0xc0b7x43[_0xb232[31]]= _0xb232[134];_0xc0b7x41[_0xb232[25]](_0xc0b7x43);_0xc0b7x2e[_0xb232[25]](_0xc0b7x2f);_0xc0b7x2e[_0xb232[25]](_0xc0b7x41);_0xc0b7x2a[_0xb232[25]](_0xc0b7x2e);var _0xc0b7x37=mxUtils[_0xb232[80]](mxResources[_0xb232[76]](_0xb232[136]),function(){_0xc0b7x8[_0xb232[136]](_0xc0b7x43[_0xb232[23]]);_0xc0b7x8[_0xb232[79]]()});_0xc0b7x37[_0xb232[31]]= _0xb232[104];var _0xc0b7x3a=mxUtils[_0xb232[80]](mxResources[_0xb232[76]](_0xb232[105]),function(){_0xc0b7x8[_0xb232[79]]()});_0xc0b7x3a[_0xb232[31]]= _0xb232[106];_0xc0b7x2b[_0xb232[25]](_0xc0b7x37);_0xc0b7x2b[_0xb232[25]](_0xc0b7x3a);_0xc0b7x28[_0xb232[25]](_0xc0b7x29);_0xc0b7x28[_0xb232[25]](_0xc0b7x2a);_0xc0b7x28[_0xb232[25]](_0xc0b7x2b);this[_0xb232[64]]= _0xc0b7x28}function VariableDialog(_0xc0b7x8){var _0xc0b7x28=_0xc0b7x8[_0xb232[50]](_0xb232[69]);var _0xc0b7x29=_0xc0b7x8[_0xb232[50]](_0xb232[70]);var _0xc0b7x2a=_0xc0b7x8[_0xb232[50]](_0xb232[71]);var _0xc0b7x2b=_0xc0b7x8[_0xb232[50]](_0xb232[72]);var _0xc0b7x2c=_0xc0b7x8[_0xb232[74]](_0xb232[73]);mxUtils[_0xb232[78]](_0xc0b7x2c,mxResources[_0xb232[76]](_0xb232[138]));var _0xc0b7x2d=mxUtils[_0xb232[80]](_0xb232[40],function(){_0xc0b7x8[_0xb232[79]]()});_0xc0b7x2d[_0xb232[31]]= _0xb232[65];_0xc0b7x29[_0xb232[25]](_0xc0b7x2d);_0xc0b7x29[_0xb232[25]](_0xc0b7x2c);var _0xc0b7x3f=_0xb232[125];var _0xc0b7x40=_0xb232[126]+ _0xc0b7x3f;var _0xc0b7x2=_0xc0b7x8[_0xb232[13]][_0xb232[127]]();var _0xc0b7x2e=_0xc0b7x8[_0xb232[50]](_0xb232[81]);var _0xc0b7x2f=_0xc0b7x8[_0xb232[50]](_0xb232[128]);var _0xc0b7x41=_0xc0b7x8[_0xb232[50]](_0xb232[129]);var _0xc0b7x42=document[_0xb232[2]](_0xb232[130]);_0xc0b7x42[_0xb232[31]]= _0xb232[131];mxUtils[_0xb232[78]](_0xc0b7x42,mxResources[_0xb232[76]](_0xc0b7x3f));_0xc0b7x2f[_0xb232[25]](_0xc0b7x42);var _0xc0b7x43=document[_0xb232[2]](_0xb232[1]);_0xc0b7x43[_0xb232[5]](_0xb232[23],_0xb232[139]);_0xc0b7x43[_0xb232[5]](_0xb232[133],_0xc0b7x40);_0xc0b7x43[_0xb232[31]]= _0xb232[134];_0xc0b7x41[_0xb232[25]](_0xc0b7x43);_0xc0b7x2e[_0xb232[25]](_0xc0b7x2f);_0xc0b7x2e[_0xb232[25]](_0xc0b7x41);_0xc0b7x2a[_0xb232[25]](_0xc0b7x2e);var _0xc0b7x37=mxUtils[_0xb232[80]](mxResources[_0xb232[76]](_0xb232[136]),function(){_0xc0b7x8[_0xb232[138]](_0xc0b7x43[_0xb232[23]]);_0xc0b7x8[_0xb232[79]]()});_0xc0b7x37[_0xb232[31]]= _0xb232[104];var _0xc0b7x3a=mxUtils[_0xb232[80]](mxResources[_0xb232[76]](_0xb232[105]),function(){_0xc0b7x8[_0xb232[79]]()});_0xc0b7x3a[_0xb232[31]]= _0xb232[106];_0xc0b7x2b[_0xb232[25]](_0xc0b7x37);_0xc0b7x2b[_0xb232[25]](_0xc0b7x3a);_0xc0b7x28[_0xb232[25]](_0xc0b7x29);_0xc0b7x28[_0xb232[25]](_0xc0b7x2a);_0xc0b7x28[_0xb232[25]](_0xc0b7x2b);this[_0xb232[64]]= _0xc0b7x28}function OpenDialog(_0xc0b7x8){var _0xc0b7x28=_0xc0b7x8[_0xb232[50]](_0xb232[69]);var _0xc0b7x29=_0xc0b7x8[_0xb232[50]](_0xb232[70]);var _0xc0b7x2a=_0xc0b7x8[_0xb232[50]](_0xb232[71]);var _0xc0b7x2b=_0xc0b7x8[_0xb232[50]](_0xb232[72]);var _0xc0b7x2c=_0xc0b7x8[_0xb232[74]](_0xb232[73]);mxUtils[_0xb232[78]](_0xc0b7x2c,mxResources[_0xb232[76]](_0xb232[8]));var _0xc0b7x2d=mxUtils[_0xb232[80]](_0xb232[40],function(){_0xc0b7x8[_0xb232[79]]()});_0xc0b7x2d[_0xb232[31]]= _0xb232[65];_0xc0b7x29[_0xb232[25]](_0xc0b7x2d);_0xc0b7x29[_0xb232[25]](_0xc0b7x2c);var _0xc0b7x2e=_0xc0b7x8[_0xb232[50]](_0xb232[81]);var _0xc0b7x2f=_0xc0b7x8[_0xb232[50]](_0xb232[128]);var _0xc0b7x41=_0xc0b7x8[_0xb232[50]](_0xb232[129]);var _0xc0b7x42=document[_0xb232[2]](_0xb232[130]);_0xc0b7x42[_0xb232[31]]= _0xb232[131];mxUtils[_0xb232[78]](_0xc0b7x42,mxResources[_0xb232[76]](_0xb232[125]));_0xc0b7x2f[_0xb232[25]](_0xc0b7x42);var _0xc0b7xb= new XMLHttpRequest();_0xc0b7xb[_0xb232[8]](_0xb232[7],_0xb232[140],false);_0xc0b7xb[_0xb232[14]](_0xb232[9],_0xb232[10]+ _0xc0b7x8[_0xb232[13]][_0xb232[12]][_0xb232[11]]);_0xc0b7xb[_0xb232[15]](null);var _0xc0b7xc=[];if(_0xc0b7xb[_0xb232[16]]=== 200){_0xc0b7xc= JSON[_0xb232[18]](_0xc0b7xb[_0xb232[17]])[_0xb232[30]]};var _0xc0b7x43=document[_0xb232[2]](_0xb232[19]);for(var _0xc0b7x47=0;_0xc0b7x47< _0xc0b7xc[_0xb232[141]];_0xc0b7x47++){var _0xc0b7xd=document[_0xb232[2]](_0xb232[20]);_0xc0b7xd[_0xb232[21]]= _0xc0b7xc[_0xc0b7x47][_0xb232[125]];_0xc0b7xd[_0xb232[23]]= _0xc0b7xc[_0xc0b7x47][_0xb232[133]];_0xc0b7x43[_0xb232[25]](_0xc0b7xd)};_0xc0b7x43[_0xb232[31]]= _0xb232[134];_0xc0b7x41[_0xb232[25]](_0xc0b7x43);_0xc0b7x2e[_0xb232[25]](_0xc0b7x2f);_0xc0b7x2e[_0xb232[25]](_0xc0b7x41);_0xc0b7x2a[_0xb232[25]](_0xc0b7x2e);var _0xc0b7x37=mxUtils[_0xb232[80]](mxResources[_0xb232[76]](_0xb232[8]),function(){console[_0xb232[94]](_0xc0b7x43);console[_0xb232[94]](_0xc0b7x43[_0xb232[23]]);window[_0xb232[8]](_0xb232[142]+ _0xc0b7x43[_0xb232[23]],_0xb232[122]);_0xc0b7x8[_0xb232[79]]()});_0xc0b7x37[_0xb232[31]]= _0xb232[104];var _0xc0b7x3a=mxUtils[_0xb232[80]](mxResources[_0xb232[76]](_0xb232[105]),function(){_0xc0b7x8[_0xb232[79]]()});_0xc0b7x3a[_0xb232[31]]= _0xb232[106];_0xc0b7x2b[_0xb232[25]](_0xc0b7x37);_0xc0b7x2b[_0xb232[25]](_0xc0b7x3a);_0xc0b7x28[_0xb232[25]](_0xc0b7x29);_0xc0b7x28[_0xb232[25]](_0xc0b7x2a);_0xc0b7x28[_0xb232[25]](_0xc0b7x2b);this[_0xb232[64]]= _0xc0b7x28}function RenameDialog(_0xc0b7x8){var _0xc0b7x28=_0xc0b7x8[_0xb232[50]](_0xb232[69]);var _0xc0b7x29=_0xc0b7x8[_0xb232[50]](_0xb232[70]);var _0xc0b7x2a=_0xc0b7x8[_0xb232[50]](_0xb232[71]);var _0xc0b7x2b=_0xc0b7x8[_0xb232[50]](_0xb232[72]);var _0xc0b7x2c=_0xc0b7x8[_0xb232[74]](_0xb232[73]);mxUtils[_0xb232[78]](_0xc0b7x2c,mxResources[_0xb232[76]](_0xb232[143]));var _0xc0b7x2d=mxUtils[_0xb232[80]](_0xb232[40],function(){_0xc0b7x8[_0xb232[79]]()});_0xc0b7x2d[_0xb232[31]]= _0xb232[65];_0xc0b7x29[_0xb232[25]](_0xc0b7x2d);_0xc0b7x29[_0xb232[25]](_0xc0b7x2c);var _0xc0b7x2e=_0xc0b7x8[_0xb232[50]](_0xb232[81]);var _0xc0b7x2f=_0xc0b7x8[_0xb232[50]](_0xb232[128]);var _0xc0b7x41=_0xc0b7x8[_0xb232[50]](_0xb232[129]);var _0xc0b7x42=document[_0xb232[2]](_0xb232[130]);_0xc0b7x42[_0xb232[31]]= _0xb232[131];mxUtils[_0xb232[78]](_0xc0b7x42,mxResources[_0xb232[76]](_0xb232[125]));_0xc0b7x2f[_0xb232[25]](_0xc0b7x42);var _0xc0b7x3f=_0xc0b7x8[_0xb232[13]][_0xb232[144]];var _0xc0b7x3=document[_0xb232[2]](_0xb232[1]);_0xc0b7x3[_0xb232[5]](_0xb232[23],_0xc0b7x3f);_0xc0b7x3[_0xb232[31]]= _0xb232[134];_0xc0b7x41[_0xb232[25]](_0xc0b7x3);_0xc0b7x2e[_0xb232[25]](_0xc0b7x2f);_0xc0b7x2e[_0xb232[25]](_0xc0b7x41);_0xc0b7x2a[_0xb232[25]](_0xc0b7x2e);var _0xc0b7x37=mxUtils[_0xb232[80]](mxResources[_0xb232[76]](_0xb232[135]),function(){var _0xc0b7xb= new XMLHttpRequest();_0xc0b7xb[_0xb232[8]](_0xb232[145],SAVE_URL+ _0xc0b7x8[_0xb232[13]][_0xb232[12]][_0xb232[133]],true);_0xc0b7xb[_0xb232[14]](_0xb232[146],_0xb232[147]);_0xc0b7xb[_0xb232[14]](_0xb232[9],_0xb232[10]+ _0xc0b7x8[_0xb232[13]][_0xb232[12]][_0xb232[11]]);_0xc0b7xb[_0xb232[15]](_0xb232[148]+ _0xc0b7x3[_0xb232[23]]);_0xc0b7xb[_0xb232[95]]= function(_0xc0b7x35){if(_0xc0b7xb[_0xb232[16]]=== 200){_0xc0b7x8[_0xb232[13]][_0xb232[150]](_0xb232[149]);_0xc0b7x8[_0xb232[13]][_0xb232[144]]= _0xc0b7x3[_0xb232[23]]}else {_0xc0b7x8[_0xb232[13]][_0xb232[150]](JSON[_0xb232[18]](_0xc0b7xb[_0xb232[17]])[_0xb232[152]][0][_0xb232[151]])}};_0xc0b7xb[_0xb232[153]]= function(_0xc0b7x35){mxUtils[_0xb232[155]](_0xc0b7xb[_0xb232[154]])};_0xc0b7x8[_0xb232[79]]()});_0xc0b7x37[_0xb232[31]]= _0xb232[104];var _0xc0b7x3a=mxUtils[_0xb232[80]](mxResources[_0xb232[76]](_0xb232[105]),function(){_0xc0b7x8[_0xb232[79]]()});_0xc0b7x3a[_0xb232[31]]= _0xb232[106];_0xc0b7x2b[_0xb232[25]](_0xc0b7x37);_0xc0b7x2b[_0xb232[25]](_0xc0b7x3a);_0xc0b7x28[_0xb232[25]](_0xc0b7x29);_0xc0b7x28[_0xb232[25]](_0xc0b7x2a);_0xc0b7x28[_0xb232[25]](_0xc0b7x2b);this[_0xb232[64]]= _0xc0b7x28}function EditFileDialog(_0xc0b7x8){var _0xc0b7x28=_0xc0b7x8[_0xb232[50]](_0xb232[69]);var _0xc0b7x29=_0xc0b7x8[_0xb232[50]](_0xb232[70]);var _0xc0b7x2a=_0xc0b7x8[_0xb232[50]](_0xb232[71]);var _0xc0b7x2b=_0xc0b7x8[_0xb232[50]](_0xb232[72]);var _0xc0b7x2c=_0xc0b7x8[_0xb232[74]](_0xb232[73]);mxUtils[_0xb232[78]](_0xc0b7x2c,mxResources[_0xb232[76]](_0xb232[156]));var _0xc0b7x2d=mxUtils[_0xb232[80]](_0xb232[40],function(){_0xc0b7x8[_0xb232[79]]()});_0xc0b7x2d[_0xb232[31]]= _0xb232[65];_0xc0b7x29[_0xb232[25]](_0xc0b7x2d);_0xc0b7x29[_0xb232[25]](_0xc0b7x2c);var _0xc0b7x2e=_0xc0b7x8[_0xb232[50]](_0xb232[81]);var _0xc0b7x2f=_0xc0b7x8[_0xb232[50]](_0xb232[82]);var _0xc0b7x30=document[_0xb232[2]](_0xb232[83]);_0xc0b7x30[_0xb232[53]][_0xb232[84]]= _0xb232[85];_0xc0b7x30[_0xb232[53]][_0xb232[86]]= _0xb232[87];_0xc0b7x30[_0xb232[23]]= mxUtils[_0xb232[158]](_0xc0b7x8[_0xb232[13]][_0xb232[157]]());if(fileSupport){function _0xc0b7x4a(_0xc0b7x32){_0xc0b7x32[_0xb232[159]]();_0xc0b7x32[_0xb232[160]]();if(_0xc0b7x32[_0xb232[161]][_0xb232[92]][_0xb232[141]]> 0){var _0xc0b7x4b=_0xc0b7x32[_0xb232[161]][_0xb232[92]][0];var _0xc0b7x4c= new FileReader();_0xc0b7x4c[_0xb232[95]]= function(_0xc0b7x35){_0xc0b7x30[_0xb232[23]]= _0xc0b7x35[_0xb232[93]][_0xb232[96]]};_0xc0b7x4c[_0xb232[97]](_0xc0b7x4b)}}function _0xc0b7x4d(_0xc0b7x32){_0xc0b7x32[_0xb232[159]]();_0xc0b7x32[_0xb232[160]]()}_0xc0b7x30[_0xb232[100]](_0xb232[162],_0xc0b7x4d,false);_0xc0b7x30[_0xb232[100]](_0xb232[163],_0xc0b7x4a,false)};_0xc0b7x2f[_0xb232[25]](_0xc0b7x30);_0xc0b7x2e[_0xb232[25]](_0xc0b7x2f);_0xc0b7x2a[_0xb232[25]](_0xc0b7x2e);var _0xc0b7x37=mxUtils[_0xb232[80]](mxResources[_0xb232[76]](_0xb232[135]),function(){var _0xc0b7x39=mxUtils[_0xb232[101]](_0xc0b7x30[_0xb232[23]]);_0xc0b7x8[_0xb232[13]][_0xb232[102]](_0xc0b7x39[_0xb232[48]]);_0xc0b7x8[_0xb232[79]]()});_0xc0b7x37[_0xb232[31]]= _0xb232[104];var _0xc0b7x3a=mxUtils[_0xb232[80]](mxResources[_0xb232[76]](_0xb232[105]),function(){_0xc0b7x8[_0xb232[79]]()});_0xc0b7x3a[_0xb232[31]]= _0xb232[106];_0xc0b7x2b[_0xb232[25]](_0xc0b7x37);_0xc0b7x2b[_0xb232[25]](_0xc0b7x3a);_0xc0b7x28[_0xb232[25]](_0xc0b7x29);_0xc0b7x28[_0xb232[25]](_0xc0b7x2a);_0xc0b7x28[_0xb232[25]](_0xc0b7x2b);this[_0xb232[64]]= _0xc0b7x28}function ExportDialog(_0xc0b7x8){var _0xc0b7x28=_0xc0b7x8[_0xb232[50]](_0xb232[69]);var _0xc0b7x29=_0xc0b7x8[_0xb232[50]](_0xb232[70]);var _0xc0b7x2a=_0xc0b7x8[_0xb232[50]](_0xb232[164]);var _0xc0b7x2b=_0xc0b7x8[_0xb232[50]](_0xb232[72]);var _0xc0b7x2c=_0xc0b7x8[_0xb232[74]](_0xb232[73]);mxUtils[_0xb232[78]](_0xc0b7x2c,mxResources[_0xb232[76]](_0xb232[165])+ _0xb232[77]);var _0xc0b7x2d=mxUtils[_0xb232[80]](_0xb232[40],function(){_0xc0b7x8[_0xb232[79]]()});_0xc0b7x2d[_0xb232[31]]= _0xb232[65];_0xc0b7x29[_0xb232[25]](_0xc0b7x2d);_0xc0b7x29[_0xb232[25]](_0xc0b7x2c);var _0xc0b7x4f=_0xc0b7x8[_0xb232[50]](_0xb232[166]);var _0xc0b7x50=_0xc0b7x8[_0xb232[50]](_0xb232[167]);var _0xc0b7x42=document[_0xb232[2]](_0xb232[130]);_0xc0b7x42[_0xb232[31]]= _0xb232[168];mxUtils[_0xb232[78]](_0xc0b7x42,mxResources[_0xb232[76]](_0xb232[144]));var _0xc0b7x3=document[_0xb232[2]](_0xb232[1]);_0xc0b7x3[_0xb232[5]](_0xb232[23],_0xc0b7x8[_0xb232[13]][_0xb232[127]]());_0xc0b7x3[_0xb232[31]]= _0xb232[134];var _0xc0b7x25=_0xc0b7x8[_0xb232[50]](_0xb232[169]);_0xc0b7x25[_0xb232[25]](_0xc0b7x3);_0xc0b7x50[_0xb232[25]](_0xc0b7x42);_0xc0b7x50[_0xb232[25]](_0xc0b7x25);_0xc0b7x4f[_0xb232[25]](_0xc0b7x50);_0xc0b7x2a[_0xb232[25]](_0xc0b7x4f);var _0xc0b7x37=mxUtils[_0xb232[80]](mxResources[_0xb232[76]](_0xb232[165]),mxUtils[_0xb232[103]](this,function(_0xc0b7x38){_0xc0b7x8[_0xb232[135]](false);var _0xc0b7x51=encodeURIComponent(mxUtils[_0xb232[170]](_0xc0b7x8[_0xb232[13]][_0xb232[157]]())); new mxXmlRequest(SAVE_URL+ _0xc0b7x8[_0xb232[13]][_0xb232[12]][_0xb232[133]]+ _0xb232[172],_0xb232[173]+ _0xc0b7x3[_0xb232[23]],_0xb232[7])[_0xb232[171]](document,_0xb232[122]);_0xc0b7x8[_0xb232[79]]()}));_0xc0b7x37[_0xb232[31]]= _0xb232[104];var _0xc0b7x3a=mxUtils[_0xb232[80]](mxResources[_0xb232[76]](_0xb232[105]),function(){_0xc0b7x8[_0xb232[79]]()});_0xc0b7x3a[_0xb232[31]]= _0xb232[106];_0xc0b7x2b[_0xb232[25]](_0xc0b7x37);_0xc0b7x2b[_0xb232[25]](_0xc0b7x3a);_0xc0b7x28[_0xb232[25]](_0xc0b7x29);_0xc0b7x28[_0xb232[25]](_0xc0b7x2a);_0xc0b7x28[_0xb232[25]](_0xc0b7x2b);this[_0xb232[64]]= _0xc0b7x28}function GeneralDialog(_0xc0b7x8,_0xc0b7x53){var _0xc0b7x54=_0xc0b7x8[_0xb232[13]][_0xb232[174]];var _0xc0b7x28=_0xc0b7x8[_0xb232[50]](_0xb232[69]);var _0xc0b7x29=_0xc0b7x8[_0xb232[50]](_0xb232[70]);var _0xc0b7x2a=_0xc0b7x8[_0xb232[50]](_0xb232[175]);var _0xc0b7x2b=_0xc0b7x8[_0xb232[50]](_0xb232[72]);var _0xc0b7x2c=_0xc0b7x8[_0xb232[74]](_0xb232[73]);mxUtils[_0xb232[78]](_0xc0b7x2c,mxResources[_0xb232[76]](_0xb232[156])+ _0xb232[176]+ mxResources[_0xb232[76]](_0xc0b7x53[_0xb232[23]][_0xb232[177]]));var _0xc0b7x2d=mxUtils[_0xb232[80]](_0xb232[40],function(){_0xc0b7x8[_0xb232[79]]()});_0xc0b7x2d[_0xb232[31]]= _0xb232[65];_0xc0b7x29[_0xb232[25]](_0xc0b7x2d);_0xc0b7x29[_0xb232[25]](_0xc0b7x2c);var _0xc0b7x55=_0xc0b7x8[_0xb232[50]](_0xb232[166]);_0xc0b7x55[_0xb232[5]](_0xb232[133],_0xb232[178]);var _0xc0b7x56=_0xc0b7x53[_0xb232[23]][_0xb232[179]][_0xb232[141]];var _0xc0b7x4f=_0xc0b7x8[_0xb232[50]](_0xb232[166]);for(var _0xc0b7x57=0;_0xc0b7x57< _0xc0b7x56;_0xc0b7x57++){var _0xc0b7x3f=_0xc0b7x53[_0xb232[23]][_0xb232[179]][_0xc0b7x57][_0xb232[125]];var _0xc0b7x40=_0xb232[126]+ _0xc0b7x3f;var _0xc0b7x2=_0xc0b7x53[_0xb232[23]][_0xb232[179]][_0xc0b7x57][_0xb232[23]];console[_0xb232[94]](_0xc0b7x3f);var _0xc0b7x50=_0xc0b7x8[_0xb232[50]]((_0xc0b7x57== _0xc0b7x56- 1)?_0xb232[167]:_0xb232[180]);var _0xc0b7x42=document[_0xb232[2]](_0xb232[130]);_0xc0b7x42[_0xb232[31]]= _0xb232[168];mxUtils[_0xb232[78]](_0xc0b7x42,mxResources[_0xb232[76]](_0xc0b7x3f));_0xc0b7x50[_0xb232[25]](_0xc0b7x42);var _0xc0b7x3;switch(_0xc0b7x3f){case _0xb232[133]:_0xc0b7x3= document[_0xb232[2]](_0xb232[1]);_0xc0b7x2= _0xc0b7x53[_0xb232[133]];_0xc0b7x3[_0xb232[5]](_0xb232[23],_0xc0b7x2);_0xc0b7x3[_0xb232[5]](_0xb232[181],true);_0xc0b7x3[_0xb232[31]]= _0xb232[134];break;case _0xb232[187]:_0xc0b7x3= document[_0xb232[2]](_0xb232[1]);_0xc0b7x3[_0xb232[5]](_0xb232[3],_0xb232[80]);_0xc0b7x3[_0xb232[182]]= function(){if(this[_0xb232[23]]== _0xb232[183]){this[_0xb232[5]](_0xb232[23],_0xb232[184]);this[_0xb232[31]]= _0xb232[185]}else {this[_0xb232[31]]= _0xb232[186];this[_0xb232[5]](_0xb232[23],_0xb232[183])}};_0xc0b7x3[_0xb232[5]](_0xb232[23],_0xc0b7x2);_0xc0b7x3[_0xb232[31]]= (_0xc0b7x2== _0xb232[183]?_0xb232[186]:_0xb232[185]);break;case _0xb232[21]:_0xc0b7x3= document[_0xb232[2]](_0xb232[83]);_0xc0b7x3[_0xb232[188]]= _0xc0b7x2;_0xc0b7x3[_0xb232[31]]= _0xb232[134];break;case _0xb232[189]:_0xc0b7x3= document[_0xb232[2]](_0xb232[83]);_0xc0b7x3[_0xb232[188]]= _0xc0b7x2;_0xc0b7x3[_0xb232[31]]= _0xb232[134];break;case _0xb232[190]:_0xc0b7x3= document[_0xb232[2]](_0xb232[83]);_0xc0b7x3[_0xb232[188]]= _0xc0b7x2;_0xc0b7x3[_0xb232[31]]= _0xb232[134];break;case _0xb232[193]:_0xc0b7x3= document[_0xb232[2]](_0xb232[1]);_0xc0b7x3[_0xb232[5]](_0xb232[23],_0xc0b7x2);_0xc0b7x3[_0xb232[5]](_0xb232[191],_0xb232[192]);_0xc0b7x3[_0xb232[31]]= _0xb232[134];break;case _0xb232[195]:_0xc0b7x3= createDropdownFromApi(_0xb232[194],_0xc0b7x2,_0xb232[125],_0xb232[133],_0xc0b7x8);break;case _0xb232[198]:_0xc0b7x3= document[_0xb232[2]](_0xb232[83]);_0xc0b7x3[_0xb232[188]]= _0xc0b7x2;_0xc0b7x3[_0xb232[31]]= _0xb232[134];_0xc0b7x3[_0xb232[5]](_0xb232[196],_0xb232[197]);break;case _0xb232[201]:var _0xc0b7x3=mxUtils[_0xb232[80]](_0xb232[199],function(){var _0xc0b7x58=createDynamicInput(null,null,_0xc0b7x8);_0xc0b7x55[_0xb232[25]](_0xc0b7x58);_0xc0b7x2a[_0xb232[25]](_0xc0b7x55)});_0xc0b7x3[_0xb232[31]]= _0xb232[200];break;default:_0xc0b7x3= document[_0xb232[2]](_0xb232[1]);_0xc0b7x3[_0xb232[5]](_0xb232[23],_0xc0b7x2);_0xc0b7x3[_0xb232[31]]= _0xb232[134];break};_0xc0b7x3[_0xb232[5]](_0xb232[133],_0xc0b7x40);var _0xc0b7x25=_0xc0b7x8[_0xb232[50]](_0xb232[169]);_0xc0b7x25[_0xb232[25]](_0xc0b7x3);if(mxResources[_0xb232[76]](_0xb232[202]+ _0xc0b7x3f)){var _0xc0b7x59=_0xc0b7x8[_0xb232[50]](_0xb232[203]);_0xc0b7x59[_0xb232[31]]= _0xb232[204];mxUtils[_0xb232[78]](_0xc0b7x59,mxResources[_0xb232[76]](_0xb232[202]+ _0xc0b7x3f));_0xc0b7x25[_0xb232[25]](_0xc0b7x59)};_0xc0b7x50[_0xb232[25]](_0xc0b7x25);_0xc0b7x4f[_0xb232[25]](_0xc0b7x50)};_0xc0b7x2a[_0xb232[25]](_0xc0b7x4f);if(_0xc0b7x53[_0xb232[23]][_0xb232[177]]== _0xb232[1]){if(_0xc0b7x53[_0xb232[205]]){for(var _0xc0b7x47=0;_0xc0b7x47< _0xc0b7x53[_0xb232[205]][_0xb232[141]];_0xc0b7x47++){var _0xc0b7x5a=_0xb232[40];var _0xc0b7x5b=_0xb232[40];_[_0xb232[28]](_0xc0b7x53[_0xb232[205]][_0xc0b7x47][_0xb232[23]][_0xb232[179]],function(_0xc0b7x5c){if(_0xc0b7x5c[_0xb232[125]]== _0xb232[3]){_0xc0b7x5a= _0xc0b7x5c[_0xb232[23]]}else {if(_0xc0b7x5c[_0xb232[125]]== _0xb232[130]){_0xc0b7x5b= _0xc0b7x5c[_0xb232[23]]}}});var _0xc0b7x58=createDynamicInput(_0xc0b7x5a,_0xc0b7x5b,_0xc0b7x8);_0xc0b7x55[_0xb232[25]](_0xc0b7x58)}}};_0xc0b7x2a[_0xb232[25]](_0xc0b7x55);var _0xc0b7x37=mxUtils[_0xb232[80]](mxResources[_0xb232[76]](_0xb232[135]),mxUtils[_0xb232[103]](this,function(_0xc0b7x38){for(var _0xc0b7x57=0;_0xc0b7x57< _0xc0b7x53[_0xb232[23]][_0xb232[179]][_0xb232[141]];_0xc0b7x57++){var _0xc0b7x40=_0xb232[126]+ _0xc0b7x53[_0xb232[23]][_0xb232[179]][_0xc0b7x57][_0xb232[125]];var _0xc0b7x3f=_0xc0b7x53[_0xb232[23]][_0xb232[179]][_0xc0b7x57][_0xb232[125]];console[_0xb232[94]](_0xc0b7x3f);_0xc0b7x53[_0xb232[5]](_0xc0b7x3f,document[_0xb232[206]](_0xc0b7x40)[_0xb232[23]]);console[_0xb232[94]](document[_0xb232[206]](_0xc0b7x40)[_0xb232[23]])};if(_0xc0b7x53[_0xb232[23]][_0xb232[177]]== _0xb232[1]){if(_0xc0b7x54[_0xb232[208]][_0xb232[207]](_0xc0b7x53)){_0xc0b7x53[_0xb232[205]]= []};if(document[_0xb232[206]](_0xb232[178])){var _0xc0b7x55=document[_0xb232[206]](_0xb232[178])[_0xb232[205]];for(var _0xc0b7x47=0;_0xc0b7x47< _0xc0b7x55[_0xb232[141]];_0xc0b7x47++){var _0xc0b7x5d=_0xc0b7x55[_0xc0b7x47][_0xb232[205]][1];var _0xc0b7x5e=_0xc0b7x55[_0xc0b7x47][_0xb232[205]][0];var _0xc0b7x39=mxUtils[_0xb232[209]]();var _0xc0b7x5f=_0xc0b7x39[_0xb232[2]](_0xb232[178]);_0xc0b7x5f[_0xb232[5]](_0xb232[3],_0xc0b7x55[_0xc0b7x47][_0xb232[210]](_0xb232[19])[0][_0xb232[23]]);_0xc0b7x5f[_0xb232[5]](_0xb232[130],_0xc0b7x55[_0xc0b7x47][_0xb232[210]](_0xb232[1])[0][_0xb232[23]]);var _0xc0b7x60= new mxCell(_0xc0b7x5f);_0xc0b7x54[_0xb232[208]][_0xb232[201]](_0xc0b7x53,_0xc0b7x60)}}};_0xc0b7x54[_0xb232[211]](_0xc0b7x53);_0xc0b7x8[_0xb232[79]]()}));_0xc0b7x37[_0xb232[31]]= _0xb232[104];var _0xc0b7x3a=mxUtils[_0xb232[80]](mxResources[_0xb232[76]](_0xb232[105]),function(){_0xc0b7x8[_0xb232[79]]()});_0xc0b7x3a[_0xb232[31]]= _0xb232[106];_0xc0b7x2b[_0xb232[25]](_0xc0b7x37);_0xc0b7x2b[_0xb232[25]](_0xc0b7x3a);_0xc0b7x28[_0xb232[25]](_0xc0b7x29);_0xc0b7x28[_0xb232[25]](_0xc0b7x2a);_0xc0b7x28[_0xb232[25]](_0xc0b7x2b);this[_0xb232[64]]= _0xc0b7x28}function createDynamicInput(_0xc0b7x5a,_0xc0b7x5b,_0xc0b7x8){var _0xc0b7x58=_0xc0b7x8[_0xb232[50]](_0xb232[180]);var _0xc0b7x2f=_0xc0b7x8[_0xb232[50]](_0xb232[212]);var _0xc0b7x41=_0xc0b7x8[_0xb232[50]](_0xb232[212]);var _0xc0b7x62=_0xc0b7x8[_0xb232[50]](_0xb232[213]);var _0xc0b7x3=document[_0xb232[2]](_0xb232[1]);_0xc0b7x3[_0xb232[5]](_0xb232[191],_0xb232[214]);_0xc0b7x3[_0xb232[23]]= _0xc0b7x5b;_0xc0b7x3[_0xb232[31]]= _0xb232[134];_0xc0b7x2f[_0xb232[25]](_0xc0b7x3);var _0xc0b7x43=document[_0xb232[2]](_0xb232[19]);var _0xc0b7xd=document[_0xb232[2]](_0xb232[20]);_0xc0b7xd[_0xb232[21]]= _0xb232[22];_0xc0b7xd[_0xb232[23]]= _0xb232[40];_0xc0b7x43[_0xb232[25]](_0xc0b7xd);var _0xc0b7x13=[_0xb232[21],_0xb232[215],_0xb232[83],_0xb232[4]];_0xc0b7x13[_0xb232[28]](function(_0xc0b7xe){_0xc0b7xd= document[_0xb232[2]](_0xb232[20]);_0xc0b7xd[_0xb232[21]]= _0xc0b7xe;_0xc0b7xd[_0xb232[23]]= _0xc0b7xe;_0xc0b7xd[_0xb232[29]]= (_0xc0b7xe== _0xc0b7x5a);_0xc0b7x43[_0xb232[25]](_0xc0b7xd)});_0xc0b7x43[_0xb232[31]]= _0xb232[134];_0xc0b7x41[_0xb232[25]](_0xc0b7x43);var _0xc0b7x63=mxUtils[_0xb232[80]](_0xb232[216],function(){var _0xc0b7x64=_0xc0b7x63[_0xb232[217]];var _0xc0b7x65=_0xc0b7x64[_0xb232[217]];document[_0xb232[206]](_0xb232[178])[_0xb232[67]](_0xc0b7x65)});_0xc0b7x63[_0xb232[31]]= _0xb232[218];_0xc0b7x62[_0xb232[25]](_0xc0b7x63);_0xc0b7x58[_0xb232[25]](_0xc0b7x2f);_0xc0b7x58[_0xb232[25]](_0xc0b7x41);_0xc0b7x58[_0xb232[25]](_0xc0b7x62);return _0xc0b7x58} \ No newline at end of file diff --git a/public/assets/plugins/jscripty/js/Editor.js b/public/assets/plugins/jscripty/js/Editor.js index 9858989..1437734 100644 --- a/public/assets/plugins/jscripty/js/Editor.js +++ b/public/assets/plugins/jscripty/js/Editor.js @@ -1,888 +1 @@ -/** - * $Id: Editor.js,v 1.14 2013/03/06 17:57:10 boris Exp $ - * Copyright (c) 2006-2012, JGraph Ltd - */ -// Specifies if local storage should be used (eg. on the iPad which has no filesystem) -var useLocalStorage = (mxClient.IS_TOUCH || urlParams['storage'] == 'local') && typeof(localStorage) != 'undefined'; -var fileSupport = window.File != null && window.FileReader != null && window.FileList != null; - -// Specifies if connector should be shown on selected cells -var touchStyle = mxClient.IS_TOUCH || urlParams['touch'] == '1'; - -// Counts open editor tabs (must be global for cross-window access) -var counter = 0; - -// Cross-domain window access is not allowed in FF, so if we -// were opened from another domain then this will fail. -try { - var op = window; - - while (op.opener != null && !isNaN(op.opener.counter)) { - op = op.opener; - } - - // Increments the counter in the first opener in the chain - if (op != null) { - op.counter++; - counter = op.counter; - } -} catch (e) { - // ignore -} - -/** - * Editor constructor executed on page load. - */ -Editor = function() { - mxEventSource.call(this); - this.init(); - this.initStencilRegistry(); - this.graph = new Graph(); - this.outline = new mxOutline(this.graph); - this.outline.updateOnPan = true; - this.undoManager = this.createUndoManager(); - this.status = ''; - - // Contains the name which was used for the last save. Default value is null. - this.filename = null; - - this.getOrCreateFilename = function() { - return this.filename || mxResources.get('drawing', [counter]) + '.xml'; - }; - - this.getFilename = function() { - return this.filename; - }; - - // Sets the status and fires a statusChanged event - this.setStatus = function(value) { - this.status = value; - this.fireEvent(new mxEventObject('statusChanged')); - }; - - // Returns the current status - this.getStatus = function() { - return this.status; - }; - - // Contains the current modified state of the diagram. This is false for - // new diagrams and after the diagram was saved. - this.modified = false; - - // Updates modified state if graph changes - this.graphChangeListener = function() { - this.modified = true; - }; - this.graph.getModel().addListener(mxEvent.CHANGE, mxUtils.bind(this, function() { - this.graphChangeListener.apply(this, arguments); - })); - - // Installs dialog if browser window is closed without saving - // This must be disabled during save and image export - window.onbeforeunload = mxUtils.bind(this, function() { - if (this.modified) { - return mxResources.get('allChangesLost'); - } - }); - - // Sets persistent graph state defaults - this.graph.resetViewOnRootChange = false; - this.graph.scrollbars = true; - this.graph.background = null; -}; - -// Editor inherits from mxEventSource -mxUtils.extend(Editor, mxEventSource); - -/** - * Specifies the image URL to be used for the grid. - */ -Editor.prototype.gridImage = IMAGE_PATH + '/grid.gif'; - -/** - * Specifies the image URL to be used for the transparent background. - */ -Editor.prototype.transparentImage = IMAGE_PATH + '/transparent.gif'; - -/** - * Sets the XML node for the current diagram. - */ -Editor.prototype.setGraphXml = function(node) { - var dec = new mxCodec(node.ownerDocument); - - if (node.nodeName == 'mxGraphModel') { - this.graph.view.scale = 1; - this.graph.gridEnabled = node.getAttribute('grid') != '0'; - this.graph.graphHandler.guidesEnabled = node.getAttribute('guides') != '0'; - this.graph.setTooltips(node.getAttribute('tooltips') != '0'); - this.graph.setConnectable(node.getAttribute('connect') != '0'); - this.graph.foldingEnabled = node.getAttribute('fold') != '0'; - this.graph.scrollbars = node.getAttribute('scrollbars') != '0'; - - if (!this.graph.scrollbars) { - this.graph.container.scrollLeft = 0; - this.graph.container.scrollTop = 0; - this.graph.view.translate.x = Number(node.getAttribute('dx') || 0); - this.graph.view.translate.y = Number(node.getAttribute('dy') || 0); - } - - this.graph.pageVisible = node.getAttribute('page') == '1'; - this.graph.pageBreaksVisible = this.graph.pageVisible; - this.graph.preferPageSize = this.graph.pageBreaksVisible; - - // Loads the persistent state settings - var ps = node.getAttribute('pageScale'); - - if (ps != null) { - this.graph.pageScale = ps; - } else { - this.graph.pageScale = 1.5; - } - - var pw = node.getAttribute('pageWidth'); - var ph = node.getAttribute('pageHeight'); - - if (pw != null && ph != null) { - this.graph.pageFormat = new mxRectangle(0, 0, parseFloat(pw), parseFloat(ph)); - this.outline.outline.pageFormat = this.graph.pageFormat; - } - - // Loads the persistent state settings - var bg = node.getAttribute('background'); - - if (bg != null && bg.length > 0) { - this.graph.background = bg; - } - - dec.decode(node, this.graph.getModel()); - this.updateGraphComponents(); - } -}; - -/** - * Returns the XML node that represents the current diagram. - */ -Editor.prototype.getGraphXml = function() { - var enc = new mxCodec(mxUtils.createXmlDocument()); - var node = enc.encode(this.graph.getModel()); - - if (this.graph.view.translate.x != 0 || this.graph.view.translate.y != 0) { - node.setAttribute('dx', Math.round(this.graph.view.translate.x * 100) / 100); - node.setAttribute('dy', Math.round(this.graph.view.translate.y * 100) / 100); - } - - node.setAttribute('grid', (this.graph.isGridEnabled()) ? '1' : '0'); - node.setAttribute('guides', (this.graph.graphHandler.guidesEnabled) ? '1' : '0'); - node.setAttribute('guides', (this.graph.graphHandler.guidesEnabled) ? '1' : '0'); - node.setAttribute('tooltips', (this.graph.tooltipHandler.isEnabled()) ? '1' : '0'); - node.setAttribute('connect', (this.graph.connectionHandler.isEnabled()) ? '1' : '0'); - node.setAttribute('fold', (this.graph.foldingEnabled) ? '1' : '0'); - node.setAttribute('page', (this.graph.pageVisible) ? '1' : '0'); - node.setAttribute('pageScale', this.graph.pageScale); - node.setAttribute('pageWidth', this.graph.pageFormat.width); - node.setAttribute('pageHeight', this.graph.pageFormat.height); - - if (!this.graph.scrollbars) { - node.setAttribute('scrollbars', '0'); - } - - if (this.graph.background != null) { - node.setAttribute('background', this.graph.background); - } - - return node; -}; - -/** - * Keeps the graph container in sync with the persistent graph state - */ -Editor.prototype.updateGraphComponents = function() { - var graph = this.graph; - var outline = this.outline; - - if (graph.container != null && outline.outline.container != null) { - if (graph.background != null) { - if (graph.background == 'none') { - graph.container.style.backgroundColor = 'transparent'; - } else { - if (graph.view.backgroundPageShape != null) { - graph.view.backgroundPageShape.fill = graph.background; - graph.view.backgroundPageShape.reconfigure(); - } - - graph.container.style.backgroundColor = graph.background; - } - } else { - graph.container.style.backgroundColor = ''; - } - - if (graph.pageVisible) { - graph.container.style.backgroundColor = '#ebebeb'; - graph.container.style.borderStyle = 'solid'; - graph.container.style.borderColor = '#e5e5e5'; - graph.container.style.borderTopWidth = '1px'; - graph.container.style.borderLeftWidth = '1px'; - graph.container.style.borderRightWidth = '0px'; - graph.container.style.borderBottomWidth = '0px'; - } else { - graph.container.style.border = ''; - } - - outline.outline.container.style.backgroundColor = graph.container.style.backgroundColor; - - if (outline.outline.pageVisible != graph.pageVisible || - outline.outline.pageScale != graph.pageScale) { - outline.outline.pageScale = graph.pageScale; - outline.outline.pageVisible = graph.pageVisible; - outline.outline.view.validate(); - } - - if (graph.scrollbars && graph.container.style.overflow == 'hidden' && !touchStyle) { - graph.container.style.overflow = 'auto'; - } else if (!graph.scrollbars || touchStyle) { - graph.container.style.overflow = 'hidden'; - } - - // Transparent.gif is a workaround for focus repaint problems in IE - var noBackground = (mxClient.IS_IE && document.documentMode >= 9) ? 'url(' + this.transparentImage + ')' : 'none'; - graph.container.style.backgroundImage = (!graph.pageVisible && graph.isGridEnabled()) ? 'url(' + this.gridImage + ')' : noBackground; - - if (graph.view.backgroundPageShape != null) { - graph.view.backgroundPageShape.node.style.backgroundImage = (this.graph.isGridEnabled()) ? 'url(' + this.gridImage + ')' : 'none'; - } - } -}; - -/** - * Initializes the environment. - */ -Editor.prototype.init = function() { - // Adds stylesheet for IE6 - if (mxClient.IS_IE6) { - mxClient.link('stylesheet', CSS_PATH + '/grapheditor-ie6.css'); - } - - // Adds required resources (disables loading of fallback properties, this can only - // be used if we know that all keys are defined in the language specific file) - mxResources.loadDefaultBundle = false; - mxResources.add(RESOURCE_BASE); - - // Makes the connection hotspot smaller - mxConstants.DEFAULT_HOTSPOT = 0.3; - - var mxConnectionHandlerCreateMarker = mxConnectionHandler.prototype.createMarker; - mxConnectionHandler.prototype.createMarker = function() { - var marker = mxConnectionHandlerCreateMarker.apply(this, arguments); - - // Overrides to ignore hotspot only for target terminal - marker.intersects = mxUtils.bind(this, function(state, evt) { - if (this.isConnecting()) { - return true; - } - - return mxCellMarker.prototype.intersects.apply(marker, arguments); - }); - - return marker; - }; - - // Makes the shadow brighter - mxConstants.SHADOWCOLOR = '#d0d0d0'; - - // Changes some default colors - 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; - - // Increases default rubberband opacity (default is 20) - mxRubberband.prototype.defaultOpacity = 30; - - // Changes border color of background page shape - mxGraphView.prototype.createBackgroundPageShape = function(bounds) { - return new mxRectangleShape(bounds, this.graph.background || 'white', '#cacaca'); - }; - - // Fits the number of background pages to the graph - mxGraphView.prototype.getBackgroundPageBounds = function() { - var gb = this.getGraphBounds(); - - // Computes unscaled, untranslated graph bounds - var x = (gb.width > 0) ? gb.x / this.scale - this.translate.x : 0; - var y = (gb.height > 0) ? gb.y / this.scale - this.translate.y : 0; - var w = gb.width / this.scale; - var h = gb.height / this.scale; - - var fmt = this.graph.pageFormat; - var ps = this.graph.pageScale; - - var pw = fmt.width * ps; - var ph = fmt.height * ps; - - var x0 = Math.floor(Math.min(0, x) / pw); - var y0 = Math.floor(Math.min(0, y) / ph); - var xe = Math.ceil(Math.max(1, x + w) / pw); - var ye = Math.ceil(Math.max(1, y + h) / ph); - - var rows = xe - x0; - var cols = ye - y0; - - var bounds = new mxRectangle(this.scale * (this.translate.x + x0 * pw), this.scale * - (this.translate.y + y0 * ph), this.scale * rows * pw, this.scale * cols * ph); - - return bounds; - }; - - // Add panning for background page in VML - var graphPanGraph = mxGraph.prototype.panGraph; - mxGraph.prototype.panGraph = function(dx, dy) { - graphPanGraph.apply(this, arguments); - - if ((this.dialect != mxConstants.DIALECT_SVG && this.view.backgroundPageShape != null) && - (!this.useScrollbarsForPanning || !mxUtils.hasScrollbars(this.container))) { - this.view.backgroundPageShape.node.style.marginLeft = dx + 'px'; - this.view.backgroundPageShape.node.style.marginTop = dy + 'px'; - } - }; - - var editor = this; - - // Uses HTML for background pages (to support grid background image) - mxGraphView.prototype.validateBackground = function() { - var bg = this.graph.getBackgroundImage(); - - if (bg != null) { - if (this.backgroundImage == null || this.backgroundImage.image != bg.src) { - if (this.backgroundImage != null) { - this.backgroundImage.destroy(); - } - - var bounds = new mxRectangle(0, 0, 1, 1); - - this.backgroundImage = new mxImageShape(bounds, bg.src); - this.backgroundImage.dialect = this.graph.dialect; - this.backgroundImage.init(this.backgroundPane); - this.backgroundImage.redraw(); - } - - this.redrawBackgroundImage(this.backgroundImage, bg); - } else if (this.backgroundImage != null) { - this.backgroundImage.destroy(); - this.backgroundImage = null; - } - - if (this.graph.pageVisible) { - var bounds = this.getBackgroundPageBounds(); - - if (this.backgroundPageShape == null) { - this.backgroundPageShape = this.createBackgroundPageShape(bounds); - this.backgroundPageShape.scale = 1; - this.backgroundPageShape.isShadow = true; - this.backgroundPageShape.dialect = mxConstants.DIALECT_STRICTHTML; - this.backgroundPageShape.init(this.graph.container); - // Required for the browser to render the background page in correct order - 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'; - - // Adds listener for double click handling on background - mxEvent.addListener(this.backgroundPageShape.node, 'dblclick', - mxUtils.bind(this, function(evt) { - this.graph.dblClick(evt); - }) - ); - - // Adds basic listeners for graph event dispatching outside of the - // container and finishing the handling of a single gesture - mxEvent.addGestureListeners(this.backgroundPageShape.node, - mxUtils.bind(this, function(evt) { - this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN, new mxMouseEvent(evt)); - }), - mxUtils.bind(this, function(evt) { - // Hides the tooltip if mouse is outside container - if (this.graph.tooltipHandler != null && - this.graph.tooltipHandler.isHideOnHover()) { - this.graph.tooltipHandler.hide(); - } - - if (this.graph.isMouseDown && - !mxEvent.isConsumed(evt)) { - this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE, - new mxMouseEvent(evt)); - } - }), - mxUtils.bind(this, function(evt) { - this.graph.fireMouseEvent(mxEvent.MOUSE_UP, - new mxMouseEvent(evt)); - })); - } else { - this.backgroundPageShape.scale = 1; - this.backgroundPageShape.bounds = bounds; - this.backgroundPageShape.redraw(); - } - - this.backgroundPageShape.node.style.backgroundImage = (this.graph.isGridEnabled()) ? - 'url(' + editor.gridImage + ')' : 'none'; - } else if (this.backgroundPageShape != null) { - this.backgroundPageShape.destroy(); - this.backgroundPageShape = null; - } - }; - - // Draws page breaks only within the page - mxGraph.prototype.updatePageBreaks = function(visible, width, height) { - var scale = this.view.scale; - var tr = this.view.translate; - var fmt = this.pageFormat; - var ps = scale * this.pageScale; - - var bounds2 = this.view.getBackgroundPageBounds(); - - width = bounds2.width; - height = bounds2.height; - var bounds = new mxRectangle(scale * tr.x, scale * tr.y, - fmt.width * ps, fmt.height * ps); - - // Does not show page breaks if the scale is too small - visible = visible && Math.min(bounds.width, bounds.height) > this.minPageBreakDist; - - var horizontalCount = (visible) ? Math.ceil(width / bounds.width) - 1 : 0; - var verticalCount = (visible) ? Math.ceil(height / bounds.height) - 1 : 0; - var right = bounds2.x + width; - var bottom = bounds2.y + height; - - if (this.horizontalPageBreaks == null && horizontalCount > 0) { - this.horizontalPageBreaks = []; - } - - if (this.horizontalPageBreaks != null) { - for (var i = 0; i <= horizontalCount; i++) { - var pts = [new mxPoint(bounds2.x + (i + 1) * bounds.width, bounds2.y), - new mxPoint(bounds2.x + (i + 1) * bounds.width, bottom) - ]; - - if (this.horizontalPageBreaks[i] != null) { - this.horizontalPageBreaks[i].scale = 1; - this.horizontalPageBreaks[i].points = pts; - this.horizontalPageBreaks[i].redraw(); - } else { - var pageBreak = new mxPolyline(pts, this.pageBreakColor, this.scale); - pageBreak.dialect = this.dialect; - pageBreak.isDashed = this.pageBreakDashed; - pageBreak.addPipe = false; - pageBreak.scale = scale; - pageBreak.init(this.view.backgroundPane); - pageBreak.redraw(); - - this.horizontalPageBreaks[i] = pageBreak; - } - } - - for (var i = horizontalCount; i < this.horizontalPageBreaks.length; i++) { - this.horizontalPageBreaks[i].destroy(); - } - - this.horizontalPageBreaks.splice(horizontalCount, this.horizontalPageBreaks.length - horizontalCount); - } - - if (this.verticalPageBreaks == null && verticalCount > 0) { - this.verticalPageBreaks = []; - } - - if (this.verticalPageBreaks != null) { - for (var i = 0; i <= verticalCount; i++) { - var pts = [new mxPoint(bounds2.x, bounds2.y + (i + 1) * bounds.height), - new mxPoint(right, bounds2.y + (i + 1) * bounds.height) - ]; - - if (this.verticalPageBreaks[i] != null) { - this.verticalPageBreaks[i].scale = 1; //scale; - this.verticalPageBreaks[i].points = pts; - this.verticalPageBreaks[i].redraw(); - } else { - var pageBreak = new mxPolyline(pts, this.pageBreakColor, scale); - pageBreak.dialect = this.dialect; - pageBreak.isDashed = this.pageBreakDashed; - pageBreak.addPipe = false; - pageBreak.scale = scale; - pageBreak.init(this.view.backgroundPane); - pageBreak.redraw(); - - this.verticalPageBreaks[i] = pageBreak; - } - } - - for (var i = verticalCount; i < this.verticalPageBreaks.length; i++) { - this.verticalPageBreaks[i].destroy(); - } - - this.verticalPageBreaks.splice(verticalCount, this.verticalPageBreaks.length - verticalCount); - } - }; - - // Enables snapping to off-grid terminals for edge waypoints - mxEdgeHandler.prototype.snapToTerminals = true; - - // Enables guides - mxGraphHandler.prototype.guidesEnabled = true; - - // Disables removing relative children from parents - var mxGraphHandlerShouldRemoveCellsFromParent = mxGraphHandler.prototype.shouldRemoveCellsFromParent; - mxGraphHandler.prototype.shouldRemoveCellsFromParent = function(parent, cells, evt) { - for (var i = 0; i < cells.length; i++) { - if (this.graph.getModel().isVertex(cells[i])) { - var geo = this.graph.getCellGeometry(cells[i]); - - if (geo != null && geo.relative) { - return false; - } - } - } - - return mxGraphHandlerShouldRemoveCellsFromParent.apply(this, arguments); - }; - - // Alt-move disables guides - mxGuide.prototype.isEnabledForEvent = function(evt) { - return !mxEvent.isAltDown(evt); - }; - - // Consumes click events for disabled menu items - mxPopupMenuAddItem = mxPopupMenu.prototype.addItem; - mxPopupMenu.prototype.addItem = function(title, image, funct, parent, iconCls, enabled) { - var result = mxPopupMenuAddItem.apply(this, arguments); - - if (enabled != null && !enabled) { - mxEvent.addListener(result, 'mousedown', function(evt) { - mxEvent.consume(evt); - }); - } - - return result; - }; - - // Selects descendants before children selection mode - var graphHandlerGetInitialCellForEvent = mxGraphHandler.prototype.getInitialCellForEvent; - mxGraphHandler.prototype.getInitialCellForEvent = function(me) { - var model = this.graph.getModel(); - var psel = model.getParent(this.graph.getSelectionCell()); - var cell = graphHandlerGetInitialCellForEvent.apply(this, arguments); - var parent = model.getParent(cell); - - if (psel == null || (psel != cell && psel != parent)) { - while (!this.graph.isCellSelected(cell) && !this.graph.isCellSelected(parent) && - model.isVertex(parent) && !this.graph.isValidRoot(parent)) { - cell = parent; - parent = this.graph.getModel().getParent(cell); - } - } - - return cell; - }; - - // Selection is delayed to mouseup if child selected - var graphHandlerIsDelayedSelection = mxGraphHandler.prototype.isDelayedSelection; - mxGraphHandler.prototype.isDelayedSelection = function(cell) { - var result = graphHandlerIsDelayedSelection.apply(this, arguments); - var model = this.graph.getModel(); - var psel = model.getParent(this.graph.getSelectionCell()); - var parent = model.getParent(cell); - - if (psel == null || (psel != cell && psel != parent)) { - if (!this.graph.isCellSelected(cell) && model.isVertex(parent) && !this.graph.isValidRoot(parent)) { - result = true; - } - } - - return result; - }; - - // Delayed selection of parent group - mxGraphHandler.prototype.selectDelayed = function(me) { - var cell = me.getCell(); - - if (cell == null) { - cell = this.cell; - } - - var model = this.graph.getModel(); - var parent = model.getParent(cell); - - while (this.graph.isCellSelected(cell) && model.isVertex(parent) && !this.graph.isValidRoot(parent)) { - cell = parent; - parent = model.getParent(cell); - } - - this.graph.selectCellForEvent(cell, me.getEvent()); - }; - - // Returns last selected ancestor - mxPanningHandler.prototype.getCellForPopupEvent = function(me) { - var cell = me.getCell(); - var model = this.graph.getModel(); - var parent = model.getParent(cell); - - while (model.isVertex(parent) && !this.graph.isValidRoot(parent)) { - if (this.graph.isCellSelected(parent)) { - cell = parent; - } - - parent = model.getParent(parent); - } - - return cell; - }; -}; - -/** - * Creates and returns a new undo manager. - */ -Editor.prototype.createUndoManager = function() { - var graph = this.graph; - var undoMgr = new mxUndoManager(); - - // Installs the command history - var listener = function(sender, evt) { - undoMgr.undoableEditHappened(evt.getProperty('edit')); - }; - - graph.getModel().addListener(mxEvent.UNDO, listener); - graph.getView().addListener(mxEvent.UNDO, listener); - - // Keeps the selection in sync with the history - var undoHandler = function(sender, evt) { - var cand = graph.getSelectionCellsForChanges(evt.getProperty('edit').changes); - var cells = []; - - for (var i = 1; i < cand.length; i++) { - if (graph.view.getState(cand[i]) != null) { - cells.push(cand[i]); - } - } - - graph.setSelectionCells(cells); - }; - - undoMgr.addListener(mxEvent.UNDO, undoHandler); - undoMgr.addListener(mxEvent.REDO, undoHandler); - - return undoMgr; -}; - -/** - * Adds basic stencil set (no namespace). - */ -Editor.prototype.initStencilRegistry = function() { - // Loads default stencils - mxStencilRegistry.loadStencilSet(STENCIL_PATH + '/general.xml'); -}; - -/** - * Overrides stencil registry for dynamic loading of stencils. - */ -(function() { - /** - * Maps from library names to an array of Javascript filenames, - * which are synchronously loaded. Currently only stencil files - * (.xml) and JS files (.js) are supported. - * IMPORTANT: For embedded diagrams to work entries must also - * be added in EmbedServlet.java. - */ - mxStencilRegistry.libraries = {}; - - /** - * Stores all package names that have been dynamically loaded. - * Each package is only loaded once. - */ - mxStencilRegistry.packages = []; - - // Extends the default stencil registry to add dynamic loading - mxStencilRegistry.getStencil = function(name) { - var result = mxStencilRegistry.stencils[name]; - - if (result == null) { - var basename = mxStencilRegistry.getBasenameForStencil(name); - - // Loads stencil files and tries again - if (basename != null) { - var libs = mxStencilRegistry.libraries[basename]; - - if (libs != null) { - if (mxStencilRegistry.packages[basename] == null) { - mxStencilRegistry.packages[basename] = 1; - - for (var i = 0; i < libs.length; i++) { - var fname = libs[i]; - - if (fname.toLowerCase().substring(fname.length - 4, fname.length) == '.xml') { - mxStencilRegistry.loadStencilSet(fname, null); - } else if (fname.toLowerCase().substring(fname.length - 3, fname.length) == '.js') { - var req = mxUtils.load(fname); - - if (req != null) { - eval.call(window, req.getText()); - } - } else { - // FIXME: This does not yet work as the loading is triggered after - // the shape was used in the graph, at which point the keys have - // typically been translated in the calling method. - //mxResources.add(fname); - } - } - } - } else { - mxStencilRegistry.loadStencilSet(STENCIL_PATH + '/' + basename + '.xml', null); - } - - result = mxStencilRegistry.stencils[name]; - } - } - - return result; - }; - - // Returns the basename for the given stencil or null if no file must be - // loaded to render the given stencil. - mxStencilRegistry.getBasenameForStencil = function(name) { - var parts = name.split('.'); - var tmp = null; - - if (parts.length > 0 && parts[0] == 'mxgraph') { - tmp = parts[1]; - - for (var i = 2; i < parts.length - 1; i++) { - tmp += '/' + parts[i]; - } - } - - return tmp; - }; - - // Loads the given stencil set - mxStencilRegistry.loadStencilSet = function(stencilFile, postStencilLoad, force) { - force = (force != null) ? force : false; - - // Uses additional cache for detecting previous load attempts - var xmlDoc = mxStencilRegistry.packages[stencilFile]; - - if (force || xmlDoc == null) { - var install = false; - - if (xmlDoc == null) { - var req = mxUtils.load(stencilFile); - xmlDoc = req.getXml(); - mxStencilRegistry.packages[stencilFile] = xmlDoc; - install = true; - } - - mxStencilRegistry.parseStencilSet(xmlDoc, postStencilLoad, install); - } - }; - - // Parses the given stencil set - mxStencilRegistry.parseStencilSet = function(xmlDocument, postStencilLoad, install) { - install = (install != null) ? install : true; - var root = xmlDocument.documentElement; - var shape = root.firstChild; - var packageName = ''; - var name = root.getAttribute('name'); - - if (name != null) { - packageName = name + '.'; - } - - while (shape != null) { - if (shape.nodeType == mxConstants.NODETYPE_ELEMENT) { - name = shape.getAttribute('name'); - - if (name != null) { - packageName = packageName.toLowerCase(); - var stencilName = name.replace(/ /g, "_"); - - if (install) { - mxStencilRegistry.addStencil(packageName + stencilName.toLowerCase(), new mxStencil(shape)); - } - - if (postStencilLoad != null) { - var w = shape.getAttribute('w'); - var h = shape.getAttribute('h'); - - w = (w == null) ? 80 : parseInt(w, 10); - h = (h == null) ? 80 : parseInt(h, 10); - - postStencilLoad(packageName, stencilName, name, w, h); - } - } - } - - shape = shape.nextSibling; - } - }; -})(); - -/** - * Class for asynchronously opening a new window and loading a file at the same - * time. This acts as a bridge between the open dialog and the new editor. - */ -OpenFile = function(done) { - this.producer = null; - this.consumer = null; - this.done = done; -}; - -/** - * Registers the editor from the new window. - */ -OpenFile.prototype.setConsumer = function(value) { - this.consumer = value; - this.execute(); -}; - -/** - * Sets the data from the loaded file. - */ -OpenFile.prototype.setData = function(value, filename) { - this.data = value; - this.filename = filename; - this.execute(); -}; - -/** - * Displays an error message. - */ -OpenFile.prototype.error = function(msg) { - this.cancel(); - mxUtils.alert(msg); -}; - -/** - * Consumes the data. - */ -OpenFile.prototype.execute = function() { - if (this.consumer != null && this.data != null) { - this.consumer(this.data, this.filename); - this.cancel(); - } -}; - -/** - * Cancels the operation. - */ -OpenFile.prototype.cancel = function() { - if (this.done != null) { - this.done(); - } -}; +var _0xea71=["\x49\x53\x5F\x54\x4F\x55\x43\x48","\x73\x74\x6F\x72\x61\x67\x65","\x6C\x6F\x63\x61\x6C","\x75\x6E\x64\x65\x66\x69\x6E\x65\x64","\x46\x69\x6C\x65","\x46\x69\x6C\x65\x52\x65\x61\x64\x65\x72","\x46\x69\x6C\x65\x4C\x69\x73\x74","\x74\x6F\x75\x63\x68","\x31","\x6F\x70\x65\x6E\x65\x72","\x63\x6F\x75\x6E\x74\x65\x72","\x63\x61\x6C\x6C","\x69\x6E\x69\x74","\x69\x6E\x69\x74\x53\x74\x65\x6E\x63\x69\x6C\x52\x65\x67\x69\x73\x74\x72\x79","\x67\x72\x61\x70\x68","\x6F\x75\x74\x6C\x69\x6E\x65","\x75\x70\x64\x61\x74\x65\x4F\x6E\x50\x61\x6E","\x75\x6E\x64\x6F\x4D\x61\x6E\x61\x67\x65\x72","\x63\x72\x65\x61\x74\x65\x55\x6E\x64\x6F\x4D\x61\x6E\x61\x67\x65\x72","\x73\x74\x61\x74\x75\x73","","\x66\x69\x6C\x65\x6E\x61\x6D\x65","\x67\x65\x74\x4F\x72\x43\x72\x65\x61\x74\x65\x46\x69\x6C\x65\x6E\x61\x6D\x65","\x64\x72\x61\x77\x69\x6E\x67","\x67\x65\x74","\x2E\x78\x6D\x6C","\x67\x65\x74\x46\x69\x6C\x65\x6E\x61\x6D\x65","\x73\x65\x74\x53\x74\x61\x74\x75\x73","\x73\x74\x61\x74\x75\x73\x43\x68\x61\x6E\x67\x65\x64","\x66\x69\x72\x65\x45\x76\x65\x6E\x74","\x67\x65\x74\x53\x74\x61\x74\x75\x73","\x6D\x6F\x64\x69\x66\x69\x65\x64","\x67\x72\x61\x70\x68\x43\x68\x61\x6E\x67\x65\x4C\x69\x73\x74\x65\x6E\x65\x72","\x61\x70\x70\x6C\x79","\x62\x69\x6E\x64","\x61\x64\x64\x4C\x69\x73\x74\x65\x6E\x65\x72","\x67\x65\x74\x4D\x6F\x64\x65\x6C","\x6F\x6E\x62\x65\x66\x6F\x72\x65\x75\x6E\x6C\x6F\x61\x64","\x61\x6C\x6C\x43\x68\x61\x6E\x67\x65\x73\x4C\x6F\x73\x74","\x72\x65\x73\x65\x74\x56\x69\x65\x77\x4F\x6E\x52\x6F\x6F\x74\x43\x68\x61\x6E\x67\x65","\x73\x63\x72\x6F\x6C\x6C\x62\x61\x72\x73","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64","\x65\x78\x74\x65\x6E\x64","\x67\x72\x69\x64\x49\x6D\x61\x67\x65","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x2F\x67\x72\x69\x64\x2E\x67\x69\x66","\x74\x72\x61\x6E\x73\x70\x61\x72\x65\x6E\x74\x49\x6D\x61\x67\x65","\x2F\x74\x72\x61\x6E\x73\x70\x61\x72\x65\x6E\x74\x2E\x67\x69\x66","\x73\x65\x74\x47\x72\x61\x70\x68\x58\x6D\x6C","\x6F\x77\x6E\x65\x72\x44\x6F\x63\x75\x6D\x65\x6E\x74","\x6E\x6F\x64\x65\x4E\x61\x6D\x65","\x6D\x78\x47\x72\x61\x70\x68\x4D\x6F\x64\x65\x6C","\x73\x63\x61\x6C\x65","\x76\x69\x65\x77","\x67\x72\x69\x64\x45\x6E\x61\x62\x6C\x65\x64","\x67\x72\x69\x64","\x67\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x30","\x67\x75\x69\x64\x65\x73\x45\x6E\x61\x62\x6C\x65\x64","\x67\x72\x61\x70\x68\x48\x61\x6E\x64\x6C\x65\x72","\x67\x75\x69\x64\x65\x73","\x74\x6F\x6F\x6C\x74\x69\x70\x73","\x73\x65\x74\x54\x6F\x6F\x6C\x74\x69\x70\x73","\x63\x6F\x6E\x6E\x65\x63\x74","\x73\x65\x74\x43\x6F\x6E\x6E\x65\x63\x74\x61\x62\x6C\x65","\x66\x6F\x6C\x64\x69\x6E\x67\x45\x6E\x61\x62\x6C\x65\x64","\x66\x6F\x6C\x64","\x73\x63\x72\x6F\x6C\x6C\x4C\x65\x66\x74","\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x73\x63\x72\x6F\x6C\x6C\x54\x6F\x70","\x78","\x74\x72\x61\x6E\x73\x6C\x61\x74\x65","\x64\x78","\x79","\x64\x79","\x70\x61\x67\x65\x56\x69\x73\x69\x62\x6C\x65","\x70\x61\x67\x65","\x70\x61\x67\x65\x42\x72\x65\x61\x6B\x73\x56\x69\x73\x69\x62\x6C\x65","\x70\x72\x65\x66\x65\x72\x50\x61\x67\x65\x53\x69\x7A\x65","\x70\x61\x67\x65\x53\x63\x61\x6C\x65","\x70\x61\x67\x65\x57\x69\x64\x74\x68","\x70\x61\x67\x65\x48\x65\x69\x67\x68\x74","\x70\x61\x67\x65\x46\x6F\x72\x6D\x61\x74","\x6C\x65\x6E\x67\x74\x68","\x64\x65\x63\x6F\x64\x65","\x75\x70\x64\x61\x74\x65\x47\x72\x61\x70\x68\x43\x6F\x6D\x70\x6F\x6E\x65\x6E\x74\x73","\x67\x65\x74\x47\x72\x61\x70\x68\x58\x6D\x6C","\x63\x72\x65\x61\x74\x65\x58\x6D\x6C\x44\x6F\x63\x75\x6D\x65\x6E\x74","\x65\x6E\x63\x6F\x64\x65","\x72\x6F\x75\x6E\x64","\x73\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x69\x73\x47\x72\x69\x64\x45\x6E\x61\x62\x6C\x65\x64","\x69\x73\x45\x6E\x61\x62\x6C\x65\x64","\x74\x6F\x6F\x6C\x74\x69\x70\x48\x61\x6E\x64\x6C\x65\x72","\x63\x6F\x6E\x6E\x65\x63\x74\x69\x6F\x6E\x48\x61\x6E\x64\x6C\x65\x72","\x77\x69\x64\x74\x68","\x68\x65\x69\x67\x68\x74","\x6E\x6F\x6E\x65","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x43\x6F\x6C\x6F\x72","\x73\x74\x79\x6C\x65","\x74\x72\x61\x6E\x73\x70\x61\x72\x65\x6E\x74","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x50\x61\x67\x65\x53\x68\x61\x70\x65","\x66\x69\x6C\x6C","\x72\x65\x63\x6F\x6E\x66\x69\x67\x75\x72\x65","\x23\x65\x62\x65\x62\x65\x62","\x62\x6F\x72\x64\x65\x72\x53\x74\x79\x6C\x65","\x73\x6F\x6C\x69\x64","\x62\x6F\x72\x64\x65\x72\x43\x6F\x6C\x6F\x72","\x23\x65\x35\x65\x35\x65\x35","\x62\x6F\x72\x64\x65\x72\x54\x6F\x70\x57\x69\x64\x74\x68","\x31\x70\x78","\x62\x6F\x72\x64\x65\x72\x4C\x65\x66\x74\x57\x69\x64\x74\x68","\x62\x6F\x72\x64\x65\x72\x52\x69\x67\x68\x74\x57\x69\x64\x74\x68","\x30\x70\x78","\x62\x6F\x72\x64\x65\x72\x42\x6F\x74\x74\x6F\x6D\x57\x69\x64\x74\x68","\x62\x6F\x72\x64\x65\x72","\x76\x61\x6C\x69\x64\x61\x74\x65","\x6F\x76\x65\x72\x66\x6C\x6F\x77","\x68\x69\x64\x64\x65\x6E","\x61\x75\x74\x6F","\x49\x53\x5F\x49\x45","\x64\x6F\x63\x75\x6D\x65\x6E\x74\x4D\x6F\x64\x65","\x75\x72\x6C\x28","\x29","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x49\x6D\x61\x67\x65","\x6E\x6F\x64\x65","\x49\x53\x5F\x49\x45\x36","\x73\x74\x79\x6C\x65\x73\x68\x65\x65\x74","\x2F\x67\x72\x61\x70\x68\x65\x64\x69\x74\x6F\x72\x2D\x69\x65\x36\x2E\x63\x73\x73","\x6C\x69\x6E\x6B","\x6C\x6F\x61\x64\x44\x65\x66\x61\x75\x6C\x74\x42\x75\x6E\x64\x6C\x65","\x61\x64\x64","\x44\x45\x46\x41\x55\x4C\x54\x5F\x48\x4F\x54\x53\x50\x4F\x54","\x63\x72\x65\x61\x74\x65\x4D\x61\x72\x6B\x65\x72","\x69\x6E\x74\x65\x72\x73\x65\x63\x74\x73","\x69\x73\x43\x6F\x6E\x6E\x65\x63\x74\x69\x6E\x67","\x53\x48\x41\x44\x4F\x57\x43\x4F\x4C\x4F\x52","\x23\x64\x30\x64\x30\x64\x30","\x48\x41\x4E\x44\x4C\x45\x5F\x46\x49\x4C\x4C\x43\x4F\x4C\x4F\x52","\x23\x39\x39\x63\x63\x66\x66","\x48\x41\x4E\x44\x4C\x45\x5F\x53\x54\x52\x4F\x4B\x45\x43\x4F\x4C\x4F\x52","\x23\x30\x30\x38\x38\x63\x66","\x56\x45\x52\x54\x45\x58\x5F\x53\x45\x4C\x45\x43\x54\x49\x4F\x4E\x5F\x43\x4F\x4C\x4F\x52","\x23\x30\x30\x61\x38\x66\x66","\x4F\x55\x54\x4C\x49\x4E\x45\x5F\x43\x4F\x4C\x4F\x52","\x4F\x55\x54\x4C\x49\x4E\x45\x5F\x48\x41\x4E\x44\x4C\x45\x5F\x46\x49\x4C\x4C\x43\x4F\x4C\x4F\x52","\x4F\x55\x54\x4C\x49\x4E\x45\x5F\x48\x41\x4E\x44\x4C\x45\x5F\x53\x54\x52\x4F\x4B\x45\x43\x4F\x4C\x4F\x52","\x43\x4F\x4E\x4E\x45\x43\x54\x5F\x48\x41\x4E\x44\x4C\x45\x5F\x46\x49\x4C\x4C\x43\x4F\x4C\x4F\x52","\x23\x63\x65\x65\x37\x66\x66","\x45\x44\x47\x45\x5F\x53\x45\x4C\x45\x43\x54\x49\x4F\x4E\x5F\x43\x4F\x4C\x4F\x52","\x44\x45\x46\x41\x55\x4C\x54\x5F\x56\x41\x4C\x49\x44\x5F\x43\x4F\x4C\x4F\x52","\x4C\x41\x42\x45\x4C\x5F\x48\x41\x4E\x44\x4C\x45\x5F\x46\x49\x4C\x4C\x43\x4F\x4C\x4F\x52","\x47\x55\x49\x44\x45\x5F\x43\x4F\x4C\x4F\x52","\x70\x61\x67\x65\x42\x72\x65\x61\x6B\x43\x6F\x6C\x6F\x72","\x23\x63\x30\x63\x30\x63\x30","\x64\x65\x66\x61\x75\x6C\x74\x4F\x70\x61\x63\x69\x74\x79","\x63\x72\x65\x61\x74\x65\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x50\x61\x67\x65\x53\x68\x61\x70\x65","\x77\x68\x69\x74\x65","\x23\x63\x61\x63\x61\x63\x61","\x67\x65\x74\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x50\x61\x67\x65\x42\x6F\x75\x6E\x64\x73","\x67\x65\x74\x47\x72\x61\x70\x68\x42\x6F\x75\x6E\x64\x73","\x6D\x69\x6E","\x66\x6C\x6F\x6F\x72","\x6D\x61\x78","\x63\x65\x69\x6C","\x70\x61\x6E\x47\x72\x61\x70\x68","\x64\x69\x61\x6C\x65\x63\x74","\x44\x49\x41\x4C\x45\x43\x54\x5F\x53\x56\x47","\x75\x73\x65\x53\x63\x72\x6F\x6C\x6C\x62\x61\x72\x73\x46\x6F\x72\x50\x61\x6E\x6E\x69\x6E\x67","\x68\x61\x73\x53\x63\x72\x6F\x6C\x6C\x62\x61\x72\x73","\x6D\x61\x72\x67\x69\x6E\x4C\x65\x66\x74","\x70\x78","\x6D\x61\x72\x67\x69\x6E\x54\x6F\x70","\x76\x61\x6C\x69\x64\x61\x74\x65\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64","\x67\x65\x74\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x49\x6D\x61\x67\x65","\x69\x6D\x61\x67\x65","\x73\x72\x63","\x64\x65\x73\x74\x72\x6F\x79","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x50\x61\x6E\x65","\x72\x65\x64\x72\x61\x77","\x72\x65\x64\x72\x61\x77\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x49\x6D\x61\x67\x65","\x69\x73\x53\x68\x61\x64\x6F\x77","\x44\x49\x41\x4C\x45\x43\x54\x5F\x53\x54\x52\x49\x43\x54\x48\x54\x4D\x4C","\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x66\x69\x72\x73\x74\x43\x68\x69\x6C\x64","\x61\x62\x73\x6F\x6C\x75\x74\x65","\x69\x6E\x73\x65\x72\x74\x42\x65\x66\x6F\x72\x65","\x63\x6C\x61\x73\x73\x4E\x61\x6D\x65","\x67\x65\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x50\x61\x67\x65","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x50\x6F\x73\x69\x74\x69\x6F\x6E","\x2D\x31\x70\x78\x20\x2D\x31\x70\x78","\x64\x62\x6C\x63\x6C\x69\x63\x6B","\x64\x62\x6C\x43\x6C\x69\x63\x6B","\x66\x69\x72\x65\x4D\x6F\x75\x73\x65\x45\x76\x65\x6E\x74","\x69\x73\x48\x69\x64\x65\x4F\x6E\x48\x6F\x76\x65\x72","\x68\x69\x64\x65","\x69\x73\x4D\x6F\x75\x73\x65\x44\x6F\x77\x6E","\x69\x73\x43\x6F\x6E\x73\x75\x6D\x65\x64","\x61\x64\x64\x47\x65\x73\x74\x75\x72\x65\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x62\x6F\x75\x6E\x64\x73","\x75\x70\x64\x61\x74\x65\x50\x61\x67\x65\x42\x72\x65\x61\x6B\x73","\x6D\x69\x6E\x50\x61\x67\x65\x42\x72\x65\x61\x6B\x44\x69\x73\x74","\x68\x6F\x72\x69\x7A\x6F\x6E\x74\x61\x6C\x50\x61\x67\x65\x42\x72\x65\x61\x6B\x73","\x70\x6F\x69\x6E\x74\x73","\x69\x73\x44\x61\x73\x68\x65\x64","\x70\x61\x67\x65\x42\x72\x65\x61\x6B\x44\x61\x73\x68\x65\x64","\x61\x64\x64\x50\x69\x70\x65","\x73\x70\x6C\x69\x63\x65","\x76\x65\x72\x74\x69\x63\x61\x6C\x50\x61\x67\x65\x42\x72\x65\x61\x6B\x73","\x73\x6E\x61\x70\x54\x6F\x54\x65\x72\x6D\x69\x6E\x61\x6C\x73","\x73\x68\x6F\x75\x6C\x64\x52\x65\x6D\x6F\x76\x65\x43\x65\x6C\x6C\x73\x46\x72\x6F\x6D\x50\x61\x72\x65\x6E\x74","\x69\x73\x56\x65\x72\x74\x65\x78","\x67\x65\x74\x43\x65\x6C\x6C\x47\x65\x6F\x6D\x65\x74\x72\x79","\x72\x65\x6C\x61\x74\x69\x76\x65","\x69\x73\x45\x6E\x61\x62\x6C\x65\x64\x46\x6F\x72\x45\x76\x65\x6E\x74","\x69\x73\x41\x6C\x74\x44\x6F\x77\x6E","\x61\x64\x64\x49\x74\x65\x6D","\x6D\x6F\x75\x73\x65\x64\x6F\x77\x6E","\x63\x6F\x6E\x73\x75\x6D\x65","\x67\x65\x74\x49\x6E\x69\x74\x69\x61\x6C\x43\x65\x6C\x6C\x46\x6F\x72\x45\x76\x65\x6E\x74","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C","\x67\x65\x74\x50\x61\x72\x65\x6E\x74","\x69\x73\x43\x65\x6C\x6C\x53\x65\x6C\x65\x63\x74\x65\x64","\x69\x73\x56\x61\x6C\x69\x64\x52\x6F\x6F\x74","\x69\x73\x44\x65\x6C\x61\x79\x65\x64\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E","\x73\x65\x6C\x65\x63\x74\x44\x65\x6C\x61\x79\x65\x64","\x67\x65\x74\x43\x65\x6C\x6C","\x63\x65\x6C\x6C","\x67\x65\x74\x45\x76\x65\x6E\x74","\x73\x65\x6C\x65\x63\x74\x43\x65\x6C\x6C\x46\x6F\x72\x45\x76\x65\x6E\x74","\x67\x65\x74\x43\x65\x6C\x6C\x46\x6F\x72\x50\x6F\x70\x75\x70\x45\x76\x65\x6E\x74","\x65\x64\x69\x74","\x67\x65\x74\x50\x72\x6F\x70\x65\x72\x74\x79","\x75\x6E\x64\x6F\x61\x62\x6C\x65\x45\x64\x69\x74\x48\x61\x70\x70\x65\x6E\x65\x64","\x67\x65\x74\x56\x69\x65\x77","\x63\x68\x61\x6E\x67\x65\x73","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C\x73\x46\x6F\x72\x43\x68\x61\x6E\x67\x65\x73","\x67\x65\x74\x53\x74\x61\x74\x65","\x70\x75\x73\x68","\x73\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C\x73","\x2F\x67\x65\x6E\x65\x72\x61\x6C\x2E\x78\x6D\x6C","\x6C\x6F\x61\x64\x53\x74\x65\x6E\x63\x69\x6C\x53\x65\x74","\x6C\x69\x62\x72\x61\x72\x69\x65\x73","\x70\x61\x63\x6B\x61\x67\x65\x73","\x67\x65\x74\x53\x74\x65\x6E\x63\x69\x6C","\x73\x74\x65\x6E\x63\x69\x6C\x73","\x67\x65\x74\x42\x61\x73\x65\x6E\x61\x6D\x65\x46\x6F\x72\x53\x74\x65\x6E\x63\x69\x6C","\x73\x75\x62\x73\x74\x72\x69\x6E\x67","\x74\x6F\x4C\x6F\x77\x65\x72\x43\x61\x73\x65","\x2E\x6A\x73","\x6C\x6F\x61\x64","\x67\x65\x74\x54\x65\x78\x74","\x2F","\x2E","\x73\x70\x6C\x69\x74","\x6D\x78\x67\x72\x61\x70\x68","\x67\x65\x74\x58\x6D\x6C","\x70\x61\x72\x73\x65\x53\x74\x65\x6E\x63\x69\x6C\x53\x65\x74","\x64\x6F\x63\x75\x6D\x65\x6E\x74\x45\x6C\x65\x6D\x65\x6E\x74","\x6E\x61\x6D\x65","\x6E\x6F\x64\x65\x54\x79\x70\x65","\x4E\x4F\x44\x45\x54\x59\x50\x45\x5F\x45\x4C\x45\x4D\x45\x4E\x54","\x5F","\x72\x65\x70\x6C\x61\x63\x65","\x61\x64\x64\x53\x74\x65\x6E\x63\x69\x6C","\x77","\x68","\x6E\x65\x78\x74\x53\x69\x62\x6C\x69\x6E\x67","\x70\x72\x6F\x64\x75\x63\x65\x72","\x63\x6F\x6E\x73\x75\x6D\x65\x72","\x64\x6F\x6E\x65","\x73\x65\x74\x43\x6F\x6E\x73\x75\x6D\x65\x72","\x65\x78\x65\x63\x75\x74\x65","\x73\x65\x74\x44\x61\x74\x61","\x64\x61\x74\x61","\x65\x72\x72\x6F\x72","\x63\x61\x6E\x63\x65\x6C","\x61\x6C\x65\x72\x74"];var useLocalStorage=(mxClient[_0xea71[0]]|| urlParams[_0xea71[1]]== _0xea71[2])&& typeof (localStorage)!= _0xea71[3];var fileSupport=window[_0xea71[4]]!= null&& window[_0xea71[5]]!= null&& window[_0xea71[6]]!= null;var touchStyle=mxClient[_0xea71[0]]|| urlParams[_0xea71[7]]== _0xea71[8];var counter=0;try{var op=window;while(op[_0xea71[9]]!= null&& !isNaN(op[_0xea71[9]][_0xea71[10]])){op= op[_0xea71[9]]};if(op!= null){op[_0xea71[10]]++;counter= op[_0xea71[10]]}}catch(e){};Editor= function(){mxEventSource[_0xea71[11]](this);this[_0xea71[12]]();this[_0xea71[13]]();this[_0xea71[14]]= new Graph();this[_0xea71[15]]= new mxOutline(this[_0xea71[14]]);this[_0xea71[15]][_0xea71[16]]= true;this[_0xea71[17]]= this[_0xea71[18]]();this[_0xea71[19]]= _0xea71[20];this[_0xea71[21]]= null;this[_0xea71[22]]= function(){return this[_0xea71[21]]|| mxResources[_0xea71[24]](_0xea71[23],[counter])+ _0xea71[25]};this[_0xea71[26]]= function(){return this[_0xea71[21]]};this[_0xea71[27]]= function(_0x1aa6x6){this[_0xea71[19]]= _0x1aa6x6;this[_0xea71[29]]( new mxEventObject(_0xea71[28]))};this[_0xea71[30]]= function(){return this[_0xea71[19]]};this[_0xea71[31]]= false;this[_0xea71[32]]= function(){this[_0xea71[31]]= true};this[_0xea71[14]][_0xea71[36]]()[_0xea71[35]](mxEvent.CHANGE,mxUtils[_0xea71[34]](this,function(){this[_0xea71[32]][_0xea71[33]](this,arguments)}));window[_0xea71[37]]= mxUtils[_0xea71[34]](this,function(){if(this[_0xea71[31]]){return mxResources[_0xea71[24]](_0xea71[38])}});this[_0xea71[14]][_0xea71[39]]= false;this[_0xea71[14]][_0xea71[40]]= true;this[_0xea71[14]][_0xea71[41]]= null};mxUtils[_0xea71[42]](Editor,mxEventSource);Editor[_0xea71[44]][_0xea71[43]]= IMAGE_PATH+ _0xea71[45];Editor[_0xea71[44]][_0xea71[46]]= IMAGE_PATH+ _0xea71[47];Editor[_0xea71[44]][_0xea71[48]]= function(_0x1aa6x7){var _0x1aa6x8= new mxCodec(_0x1aa6x7[_0xea71[49]]);if(_0x1aa6x7[_0xea71[50]]== _0xea71[51]){this[_0xea71[14]][_0xea71[53]][_0xea71[52]]= 1;this[_0xea71[14]][_0xea71[54]]= _0x1aa6x7[_0xea71[56]](_0xea71[55])!= _0xea71[57];this[_0xea71[14]][_0xea71[59]][_0xea71[58]]= _0x1aa6x7[_0xea71[56]](_0xea71[60])!= _0xea71[57];this[_0xea71[14]][_0xea71[62]](_0x1aa6x7[_0xea71[56]](_0xea71[61])!= _0xea71[57]);this[_0xea71[14]][_0xea71[64]](_0x1aa6x7[_0xea71[56]](_0xea71[63])!= _0xea71[57]);this[_0xea71[14]][_0xea71[65]]= _0x1aa6x7[_0xea71[56]](_0xea71[66])!= _0xea71[57];this[_0xea71[14]][_0xea71[40]]= _0x1aa6x7[_0xea71[56]](_0xea71[40])!= _0xea71[57];if(!this[_0xea71[14]][_0xea71[40]]){this[_0xea71[14]][_0xea71[68]][_0xea71[67]]= 0;this[_0xea71[14]][_0xea71[68]][_0xea71[69]]= 0;this[_0xea71[14]][_0xea71[53]][_0xea71[71]][_0xea71[70]]= Number(_0x1aa6x7[_0xea71[56]](_0xea71[72])|| 0);this[_0xea71[14]][_0xea71[53]][_0xea71[71]][_0xea71[73]]= Number(_0x1aa6x7[_0xea71[56]](_0xea71[74])|| 0)};this[_0xea71[14]][_0xea71[75]]= _0x1aa6x7[_0xea71[56]](_0xea71[76])== _0xea71[8];this[_0xea71[14]][_0xea71[77]]= this[_0xea71[14]][_0xea71[75]];this[_0xea71[14]][_0xea71[78]]= this[_0xea71[14]][_0xea71[77]];var _0x1aa6x9=_0x1aa6x7[_0xea71[56]](_0xea71[79]);if(_0x1aa6x9!= null){this[_0xea71[14]][_0xea71[79]]= _0x1aa6x9}else {this[_0xea71[14]][_0xea71[79]]= 1.5};var _0x1aa6xa=_0x1aa6x7[_0xea71[56]](_0xea71[80]);var _0x1aa6xb=_0x1aa6x7[_0xea71[56]](_0xea71[81]);if(_0x1aa6xa!= null&& _0x1aa6xb!= null){this[_0xea71[14]][_0xea71[82]]= new mxRectangle(0,0,parseFloat(_0x1aa6xa),parseFloat(_0x1aa6xb));this[_0xea71[15]][_0xea71[15]][_0xea71[82]]= this[_0xea71[14]][_0xea71[82]]};var _0x1aa6xc=_0x1aa6x7[_0xea71[56]](_0xea71[41]);if(_0x1aa6xc!= null&& _0x1aa6xc[_0xea71[83]]> 0){this[_0xea71[14]][_0xea71[41]]= _0x1aa6xc};_0x1aa6x8[_0xea71[84]](_0x1aa6x7,this[_0xea71[14]][_0xea71[36]]());this[_0xea71[85]]()}};Editor[_0xea71[44]][_0xea71[86]]= function(){var _0x1aa6xd= new mxCodec(mxUtils[_0xea71[87]]());var _0x1aa6x7=_0x1aa6xd[_0xea71[88]](this[_0xea71[14]][_0xea71[36]]());if(this[_0xea71[14]][_0xea71[53]][_0xea71[71]][_0xea71[70]]!= 0|| this[_0xea71[14]][_0xea71[53]][_0xea71[71]][_0xea71[73]]!= 0){_0x1aa6x7[_0xea71[90]](_0xea71[72],Math[_0xea71[89]](this[_0xea71[14]][_0xea71[53]][_0xea71[71]][_0xea71[70]]* 100)/ 100);_0x1aa6x7[_0xea71[90]](_0xea71[74],Math[_0xea71[89]](this[_0xea71[14]][_0xea71[53]][_0xea71[71]][_0xea71[73]]* 100)/ 100)};_0x1aa6x7[_0xea71[90]](_0xea71[55],(this[_0xea71[14]][_0xea71[91]]())?_0xea71[8]:_0xea71[57]);_0x1aa6x7[_0xea71[90]](_0xea71[60],(this[_0xea71[14]][_0xea71[59]][_0xea71[58]])?_0xea71[8]:_0xea71[57]);_0x1aa6x7[_0xea71[90]](_0xea71[60],(this[_0xea71[14]][_0xea71[59]][_0xea71[58]])?_0xea71[8]:_0xea71[57]);_0x1aa6x7[_0xea71[90]](_0xea71[61],(this[_0xea71[14]][_0xea71[93]][_0xea71[92]]())?_0xea71[8]:_0xea71[57]);_0x1aa6x7[_0xea71[90]](_0xea71[63],(this[_0xea71[14]][_0xea71[94]][_0xea71[92]]())?_0xea71[8]:_0xea71[57]);_0x1aa6x7[_0xea71[90]](_0xea71[66],(this[_0xea71[14]][_0xea71[65]])?_0xea71[8]:_0xea71[57]);_0x1aa6x7[_0xea71[90]](_0xea71[76],(this[_0xea71[14]][_0xea71[75]])?_0xea71[8]:_0xea71[57]);_0x1aa6x7[_0xea71[90]](_0xea71[79],this[_0xea71[14]][_0xea71[79]]);_0x1aa6x7[_0xea71[90]](_0xea71[80],this[_0xea71[14]][_0xea71[82]][_0xea71[95]]);_0x1aa6x7[_0xea71[90]](_0xea71[81],this[_0xea71[14]][_0xea71[82]][_0xea71[96]]);if(!this[_0xea71[14]][_0xea71[40]]){_0x1aa6x7[_0xea71[90]](_0xea71[40],_0xea71[57])};if(this[_0xea71[14]][_0xea71[41]]!= null){_0x1aa6x7[_0xea71[90]](_0xea71[41],this[_0xea71[14]][_0xea71[41]])};return _0x1aa6x7};Editor[_0xea71[44]][_0xea71[85]]= function(){var _0x1aa6xe=this[_0xea71[14]];var _0x1aa6xf=this[_0xea71[15]];if(_0x1aa6xe[_0xea71[68]]!= null&& _0x1aa6xf[_0xea71[15]][_0xea71[68]]!= null){if(_0x1aa6xe[_0xea71[41]]!= null){if(_0x1aa6xe[_0xea71[41]]== _0xea71[97]){_0x1aa6xe[_0xea71[68]][_0xea71[99]][_0xea71[98]]= _0xea71[100]}else {if(_0x1aa6xe[_0xea71[53]][_0xea71[101]]!= null){_0x1aa6xe[_0xea71[53]][_0xea71[101]][_0xea71[102]]= _0x1aa6xe[_0xea71[41]];_0x1aa6xe[_0xea71[53]][_0xea71[101]][_0xea71[103]]()};_0x1aa6xe[_0xea71[68]][_0xea71[99]][_0xea71[98]]= _0x1aa6xe[_0xea71[41]]}}else {_0x1aa6xe[_0xea71[68]][_0xea71[99]][_0xea71[98]]= _0xea71[20]};if(_0x1aa6xe[_0xea71[75]]){_0x1aa6xe[_0xea71[68]][_0xea71[99]][_0xea71[98]]= _0xea71[104];_0x1aa6xe[_0xea71[68]][_0xea71[99]][_0xea71[105]]= _0xea71[106];_0x1aa6xe[_0xea71[68]][_0xea71[99]][_0xea71[107]]= _0xea71[108];_0x1aa6xe[_0xea71[68]][_0xea71[99]][_0xea71[109]]= _0xea71[110];_0x1aa6xe[_0xea71[68]][_0xea71[99]][_0xea71[111]]= _0xea71[110];_0x1aa6xe[_0xea71[68]][_0xea71[99]][_0xea71[112]]= _0xea71[113];_0x1aa6xe[_0xea71[68]][_0xea71[99]][_0xea71[114]]= _0xea71[113]}else {_0x1aa6xe[_0xea71[68]][_0xea71[99]][_0xea71[115]]= _0xea71[20]};_0x1aa6xf[_0xea71[15]][_0xea71[68]][_0xea71[99]][_0xea71[98]]= _0x1aa6xe[_0xea71[68]][_0xea71[99]][_0xea71[98]];if(_0x1aa6xf[_0xea71[15]][_0xea71[75]]!= _0x1aa6xe[_0xea71[75]]|| _0x1aa6xf[_0xea71[15]][_0xea71[79]]!= _0x1aa6xe[_0xea71[79]]){_0x1aa6xf[_0xea71[15]][_0xea71[79]]= _0x1aa6xe[_0xea71[79]];_0x1aa6xf[_0xea71[15]][_0xea71[75]]= _0x1aa6xe[_0xea71[75]];_0x1aa6xf[_0xea71[15]][_0xea71[53]][_0xea71[116]]()};if(_0x1aa6xe[_0xea71[40]]&& _0x1aa6xe[_0xea71[68]][_0xea71[99]][_0xea71[117]]== _0xea71[118]&& !touchStyle){_0x1aa6xe[_0xea71[68]][_0xea71[99]][_0xea71[117]]= _0xea71[119]}else {if(!_0x1aa6xe[_0xea71[40]]|| touchStyle){_0x1aa6xe[_0xea71[68]][_0xea71[99]][_0xea71[117]]= _0xea71[118]}};var _0x1aa6x10=(mxClient[_0xea71[120]]&& document[_0xea71[121]]>= 9)?_0xea71[122]+ this[_0xea71[46]]+ _0xea71[123]:_0xea71[97];_0x1aa6xe[_0xea71[68]][_0xea71[99]][_0xea71[124]]= (!_0x1aa6xe[_0xea71[75]]&& _0x1aa6xe[_0xea71[91]]())?_0xea71[122]+ this[_0xea71[43]]+ _0xea71[123]:_0x1aa6x10;if(_0x1aa6xe[_0xea71[53]][_0xea71[101]]!= null){_0x1aa6xe[_0xea71[53]][_0xea71[101]][_0xea71[125]][_0xea71[99]][_0xea71[124]]= (this[_0xea71[14]][_0xea71[91]]())?_0xea71[122]+ this[_0xea71[43]]+ _0xea71[123]:_0xea71[97]}}};Editor[_0xea71[44]][_0xea71[12]]= function(){if(mxClient[_0xea71[126]]){mxClient[_0xea71[129]](_0xea71[127],CSS_PATH+ _0xea71[128])};mxResources[_0xea71[130]]= false;mxResources[_0xea71[131]](RESOURCE_BASE);mxConstants[_0xea71[132]]= 0.3;var _0x1aa6x11=mxConnectionHandler[_0xea71[44]][_0xea71[133]];mxConnectionHandler[_0xea71[44]][_0xea71[133]]= function(){var _0x1aa6x12=_0x1aa6x11[_0xea71[33]](this,arguments);_0x1aa6x12[_0xea71[134]]= mxUtils[_0xea71[34]](this,function(_0x1aa6x13,_0x1aa6x14){if(this[_0xea71[135]]()){return true};return mxCellMarker[_0xea71[44]][_0xea71[134]][_0xea71[33]](_0x1aa6x12,arguments)});return _0x1aa6x12};mxConstants[_0xea71[136]]= _0xea71[137];mxConstants[_0xea71[138]]= _0xea71[139];mxConstants[_0xea71[140]]= _0xea71[141];mxConstants[_0xea71[142]]= _0xea71[143];mxConstants[_0xea71[144]]= _0xea71[143];mxConstants[_0xea71[145]]= _0xea71[139];mxConstants[_0xea71[146]]= _0xea71[143];mxConstants[_0xea71[147]]= _0xea71[148];mxConstants[_0xea71[149]]= _0xea71[143];mxConstants[_0xea71[150]]= _0xea71[143];mxConstants[_0xea71[151]]= _0xea71[148];mxConstants[_0xea71[152]]= _0xea71[141];mxGraph[_0xea71[44]][_0xea71[153]]= _0xea71[154];mxGraph[_0xea71[44]][_0xea71[79]]= 1;mxRubberband[_0xea71[44]][_0xea71[155]]= 30;mxGraphView[_0xea71[44]][_0xea71[156]]= function(_0x1aa6x15){return new mxRectangleShape(_0x1aa6x15,this[_0xea71[14]][_0xea71[41]]|| _0xea71[157],_0xea71[158])};mxGraphView[_0xea71[44]][_0xea71[159]]= function(){var _0x1aa6x16=this[_0xea71[160]]();var _0x1aa6x17=(_0x1aa6x16[_0xea71[95]]> 0)?_0x1aa6x16[_0xea71[70]]/ this[_0xea71[52]]- this[_0xea71[71]][_0xea71[70]]:0;var _0x1aa6x18=(_0x1aa6x16[_0xea71[96]]> 0)?_0x1aa6x16[_0xea71[73]]/ this[_0xea71[52]]- this[_0xea71[71]][_0xea71[73]]:0;var _0x1aa6x19=_0x1aa6x16[_0xea71[95]]/ this[_0xea71[52]];var _0x1aa6x1a=_0x1aa6x16[_0xea71[96]]/ this[_0xea71[52]];var _0x1aa6x1b=this[_0xea71[14]][_0xea71[82]];var _0x1aa6x9=this[_0xea71[14]][_0xea71[79]];var _0x1aa6xa=_0x1aa6x1b[_0xea71[95]]* _0x1aa6x9;var _0x1aa6xb=_0x1aa6x1b[_0xea71[96]]* _0x1aa6x9;var _0x1aa6x1c=Math[_0xea71[162]](Math[_0xea71[161]](0,_0x1aa6x17)/ _0x1aa6xa);var _0x1aa6x1d=Math[_0xea71[162]](Math[_0xea71[161]](0,_0x1aa6x18)/ _0x1aa6xb);var _0x1aa6x1e=Math[_0xea71[164]](Math[_0xea71[163]](1,_0x1aa6x17+ _0x1aa6x19)/ _0x1aa6xa);var _0x1aa6x1f=Math[_0xea71[164]](Math[_0xea71[163]](1,_0x1aa6x18+ _0x1aa6x1a)/ _0x1aa6xb);var _0x1aa6x20=_0x1aa6x1e- _0x1aa6x1c;var _0x1aa6x21=_0x1aa6x1f- _0x1aa6x1d;var _0x1aa6x15= new mxRectangle(this[_0xea71[52]]* (this[_0xea71[71]][_0xea71[70]]+ _0x1aa6x1c* _0x1aa6xa),this[_0xea71[52]]* (this[_0xea71[71]][_0xea71[73]]+ _0x1aa6x1d* _0x1aa6xb),this[_0xea71[52]]* _0x1aa6x20* _0x1aa6xa,this[_0xea71[52]]* _0x1aa6x21* _0x1aa6xb);return _0x1aa6x15};var _0x1aa6x22=mxGraph[_0xea71[44]][_0xea71[165]];mxGraph[_0xea71[44]][_0xea71[165]]= function(_0x1aa6x23,_0x1aa6x24){_0x1aa6x22[_0xea71[33]](this,arguments);if((this[_0xea71[166]]!= mxConstants[_0xea71[167]]&& this[_0xea71[53]][_0xea71[101]]!= null)&& (!this[_0xea71[168]]|| !mxUtils[_0xea71[169]](this[_0xea71[68]]))){this[_0xea71[53]][_0xea71[101]][_0xea71[125]][_0xea71[99]][_0xea71[170]]= _0x1aa6x23+ _0xea71[171];this[_0xea71[53]][_0xea71[101]][_0xea71[125]][_0xea71[99]][_0xea71[172]]= _0x1aa6x24+ _0xea71[171]}};var _0x1aa6x25=this;mxGraphView[_0xea71[44]][_0xea71[173]]= function(){var _0x1aa6xc=this[_0xea71[14]][_0xea71[174]]();if(_0x1aa6xc!= null){if(this[_0xea71[124]]== null|| this[_0xea71[124]][_0xea71[175]]!= _0x1aa6xc[_0xea71[176]]){if(this[_0xea71[124]]!= null){this[_0xea71[124]][_0xea71[177]]()};var _0x1aa6x15= new mxRectangle(0,0,1,1);this[_0xea71[124]]= new mxImageShape(_0x1aa6x15,_0x1aa6xc[_0xea71[176]]);this[_0xea71[124]][_0xea71[166]]= this[_0xea71[14]][_0xea71[166]];this[_0xea71[124]][_0xea71[12]](this[_0xea71[178]]);this[_0xea71[124]][_0xea71[179]]()};this[_0xea71[180]](this[_0xea71[124]],_0x1aa6xc)}else {if(this[_0xea71[124]]!= null){this[_0xea71[124]][_0xea71[177]]();this[_0xea71[124]]= null}};if(this[_0xea71[14]][_0xea71[75]]){var _0x1aa6x15=this[_0xea71[159]]();if(this[_0xea71[101]]== null){this[_0xea71[101]]= this[_0xea71[156]](_0x1aa6x15);this[_0xea71[101]][_0xea71[52]]= 1;this[_0xea71[101]][_0xea71[181]]= true;this[_0xea71[101]][_0xea71[166]]= mxConstants[_0xea71[182]];this[_0xea71[101]][_0xea71[12]](this[_0xea71[14]][_0xea71[68]]);this[_0xea71[14]][_0xea71[68]][_0xea71[184]][_0xea71[99]][_0xea71[183]]= _0xea71[185];this[_0xea71[14]][_0xea71[68]][_0xea71[186]](this[_0xea71[101]][_0xea71[125]],this[_0xea71[14]][_0xea71[68]][_0xea71[184]]);this[_0xea71[101]][_0xea71[179]]();this[_0xea71[101]][_0xea71[125]][_0xea71[187]]= _0xea71[188];this[_0xea71[101]][_0xea71[125]][_0xea71[99]][_0xea71[189]]= _0xea71[190];mxEvent[_0xea71[35]](this[_0xea71[101]][_0xea71[125]],_0xea71[191],mxUtils[_0xea71[34]](this,function(_0x1aa6x14){this[_0xea71[14]][_0xea71[192]](_0x1aa6x14)}));mxEvent[_0xea71[198]](this[_0xea71[101]][_0xea71[125]],mxUtils[_0xea71[34]](this,function(_0x1aa6x14){this[_0xea71[14]][_0xea71[193]](mxEvent.MOUSE_DOWN, new mxMouseEvent(_0x1aa6x14))}),mxUtils[_0xea71[34]](this,function(_0x1aa6x14){if(this[_0xea71[14]][_0xea71[93]]!= null&& this[_0xea71[14]][_0xea71[93]][_0xea71[194]]()){this[_0xea71[14]][_0xea71[93]][_0xea71[195]]()};if(this[_0xea71[14]][_0xea71[196]]&& !mxEvent[_0xea71[197]](_0x1aa6x14)){this[_0xea71[14]][_0xea71[193]](mxEvent.MOUSE_MOVE, new mxMouseEvent(_0x1aa6x14))}}),mxUtils[_0xea71[34]](this,function(_0x1aa6x14){this[_0xea71[14]][_0xea71[193]](mxEvent.MOUSE_UP, new mxMouseEvent(_0x1aa6x14))}))}else {this[_0xea71[101]][_0xea71[52]]= 1;this[_0xea71[101]][_0xea71[199]]= _0x1aa6x15;this[_0xea71[101]][_0xea71[179]]()};this[_0xea71[101]][_0xea71[125]][_0xea71[99]][_0xea71[124]]= (this[_0xea71[14]][_0xea71[91]]())?_0xea71[122]+ _0x1aa6x25[_0xea71[43]]+ _0xea71[123]:_0xea71[97]}else {if(this[_0xea71[101]]!= null){this[_0xea71[101]][_0xea71[177]]();this[_0xea71[101]]= null}}};mxGraph[_0xea71[44]][_0xea71[200]]= function(_0x1aa6x26,_0x1aa6x27,_0x1aa6x28){var _0x1aa6x29=this[_0xea71[53]][_0xea71[52]];var _0x1aa6x2a=this[_0xea71[53]][_0xea71[71]];var _0x1aa6x1b=this[_0xea71[82]];var _0x1aa6x9=_0x1aa6x29* this[_0xea71[79]];var _0x1aa6x2b=this[_0xea71[53]][_0xea71[159]]();_0x1aa6x27= _0x1aa6x2b[_0xea71[95]];_0x1aa6x28= _0x1aa6x2b[_0xea71[96]];var _0x1aa6x15= new mxRectangle(_0x1aa6x29* _0x1aa6x2a[_0xea71[70]],_0x1aa6x29* _0x1aa6x2a[_0xea71[73]],_0x1aa6x1b[_0xea71[95]]* _0x1aa6x9,_0x1aa6x1b[_0xea71[96]]* _0x1aa6x9);_0x1aa6x26= _0x1aa6x26&& Math[_0xea71[161]](_0x1aa6x15[_0xea71[95]],_0x1aa6x15[_0xea71[96]])> this[_0xea71[201]];var _0x1aa6x2c=(_0x1aa6x26)?Math[_0xea71[164]](_0x1aa6x27/ _0x1aa6x15[_0xea71[95]])- 1:0;var _0x1aa6x2d=(_0x1aa6x26)?Math[_0xea71[164]](_0x1aa6x28/ _0x1aa6x15[_0xea71[96]])- 1:0;var _0x1aa6x2e=_0x1aa6x2b[_0xea71[70]]+ _0x1aa6x27;var _0x1aa6x2f=_0x1aa6x2b[_0xea71[73]]+ _0x1aa6x28;if(this[_0xea71[202]]== null&& _0x1aa6x2c> 0){this[_0xea71[202]]= []};if(this[_0xea71[202]]!= null){for(var _0x1aa6x30=0;_0x1aa6x30<= _0x1aa6x2c;_0x1aa6x30++){var _0x1aa6x31=[ new mxPoint(_0x1aa6x2b[_0xea71[70]]+ (_0x1aa6x30+ 1)* _0x1aa6x15[_0xea71[95]],_0x1aa6x2b[_0xea71[73]]), new mxPoint(_0x1aa6x2b[_0xea71[70]]+ (_0x1aa6x30+ 1)* _0x1aa6x15[_0xea71[95]],_0x1aa6x2f)];if(this[_0xea71[202]][_0x1aa6x30]!= null){this[_0xea71[202]][_0x1aa6x30][_0xea71[52]]= 1;this[_0xea71[202]][_0x1aa6x30][_0xea71[203]]= _0x1aa6x31;this[_0xea71[202]][_0x1aa6x30][_0xea71[179]]()}else {var _0x1aa6x32= new mxPolyline(_0x1aa6x31,this[_0xea71[153]],this[_0xea71[52]]);_0x1aa6x32[_0xea71[166]]= this[_0xea71[166]];_0x1aa6x32[_0xea71[204]]= this[_0xea71[205]];_0x1aa6x32[_0xea71[206]]= false;_0x1aa6x32[_0xea71[52]]= _0x1aa6x29;_0x1aa6x32[_0xea71[12]](this[_0xea71[53]][_0xea71[178]]);_0x1aa6x32[_0xea71[179]]();this[_0xea71[202]][_0x1aa6x30]= _0x1aa6x32}};for(var _0x1aa6x30=_0x1aa6x2c;_0x1aa6x30< this[_0xea71[202]][_0xea71[83]];_0x1aa6x30++){this[_0xea71[202]][_0x1aa6x30][_0xea71[177]]()};this[_0xea71[202]][_0xea71[207]](_0x1aa6x2c,this[_0xea71[202]][_0xea71[83]]- _0x1aa6x2c)};if(this[_0xea71[208]]== null&& _0x1aa6x2d> 0){this[_0xea71[208]]= []};if(this[_0xea71[208]]!= null){for(var _0x1aa6x30=0;_0x1aa6x30<= _0x1aa6x2d;_0x1aa6x30++){var _0x1aa6x31=[ new mxPoint(_0x1aa6x2b[_0xea71[70]],_0x1aa6x2b[_0xea71[73]]+ (_0x1aa6x30+ 1)* _0x1aa6x15[_0xea71[96]]), new mxPoint(_0x1aa6x2e,_0x1aa6x2b[_0xea71[73]]+ (_0x1aa6x30+ 1)* _0x1aa6x15[_0xea71[96]])];if(this[_0xea71[208]][_0x1aa6x30]!= null){this[_0xea71[208]][_0x1aa6x30][_0xea71[52]]= 1;this[_0xea71[208]][_0x1aa6x30][_0xea71[203]]= _0x1aa6x31;this[_0xea71[208]][_0x1aa6x30][_0xea71[179]]()}else {var _0x1aa6x32= new mxPolyline(_0x1aa6x31,this[_0xea71[153]],_0x1aa6x29);_0x1aa6x32[_0xea71[166]]= this[_0xea71[166]];_0x1aa6x32[_0xea71[204]]= this[_0xea71[205]];_0x1aa6x32[_0xea71[206]]= false;_0x1aa6x32[_0xea71[52]]= _0x1aa6x29;_0x1aa6x32[_0xea71[12]](this[_0xea71[53]][_0xea71[178]]);_0x1aa6x32[_0xea71[179]]();this[_0xea71[208]][_0x1aa6x30]= _0x1aa6x32}};for(var _0x1aa6x30=_0x1aa6x2d;_0x1aa6x30< this[_0xea71[208]][_0xea71[83]];_0x1aa6x30++){this[_0xea71[208]][_0x1aa6x30][_0xea71[177]]()};this[_0xea71[208]][_0xea71[207]](_0x1aa6x2d,this[_0xea71[208]][_0xea71[83]]- _0x1aa6x2d)}};mxEdgeHandler[_0xea71[44]][_0xea71[209]]= true;mxGraphHandler[_0xea71[44]][_0xea71[58]]= true;var _0x1aa6x33=mxGraphHandler[_0xea71[44]][_0xea71[210]];mxGraphHandler[_0xea71[44]][_0xea71[210]]= function(_0x1aa6x34,_0x1aa6x35,_0x1aa6x14){for(var _0x1aa6x30=0;_0x1aa6x30< _0x1aa6x35[_0xea71[83]];_0x1aa6x30++){if(this[_0xea71[14]][_0xea71[36]]()[_0xea71[211]](_0x1aa6x35[_0x1aa6x30])){var _0x1aa6x36=this[_0xea71[14]][_0xea71[212]](_0x1aa6x35[_0x1aa6x30]);if(_0x1aa6x36!= null&& _0x1aa6x36[_0xea71[213]]){return false}}};return _0x1aa6x33[_0xea71[33]](this,arguments)};mxGuide[_0xea71[44]][_0xea71[214]]= function(_0x1aa6x14){return !mxEvent[_0xea71[215]](_0x1aa6x14)};mxPopupMenuAddItem= mxPopupMenu[_0xea71[44]][_0xea71[216]];mxPopupMenu[_0xea71[44]][_0xea71[216]]= function(_0x1aa6x37,_0x1aa6x38,_0x1aa6x39,_0x1aa6x34,_0x1aa6x3a,_0x1aa6x3b){var _0x1aa6x3c=mxPopupMenuAddItem[_0xea71[33]](this,arguments);if(_0x1aa6x3b!= null&& !_0x1aa6x3b){mxEvent[_0xea71[35]](_0x1aa6x3c,_0xea71[217],function(_0x1aa6x14){mxEvent[_0xea71[218]](_0x1aa6x14)})};return _0x1aa6x3c};var _0x1aa6x3d=mxGraphHandler[_0xea71[44]][_0xea71[219]];mxGraphHandler[_0xea71[44]][_0xea71[219]]= function(_0x1aa6x3e){var _0x1aa6x3f=this[_0xea71[14]][_0xea71[36]]();var _0x1aa6x40=_0x1aa6x3f[_0xea71[221]](this[_0xea71[14]][_0xea71[220]]());var _0x1aa6x41=_0x1aa6x3d[_0xea71[33]](this,arguments);var _0x1aa6x34=_0x1aa6x3f[_0xea71[221]](_0x1aa6x41);if(_0x1aa6x40== null|| (_0x1aa6x40!= _0x1aa6x41&& _0x1aa6x40!= _0x1aa6x34)){while(!this[_0xea71[14]][_0xea71[222]](_0x1aa6x41)&& !this[_0xea71[14]][_0xea71[222]](_0x1aa6x34)&& _0x1aa6x3f[_0xea71[211]](_0x1aa6x34)&& !this[_0xea71[14]][_0xea71[223]](_0x1aa6x34)){_0x1aa6x41= _0x1aa6x34;_0x1aa6x34= this[_0xea71[14]][_0xea71[36]]()[_0xea71[221]](_0x1aa6x41)}};return _0x1aa6x41};var _0x1aa6x42=mxGraphHandler[_0xea71[44]][_0xea71[224]];mxGraphHandler[_0xea71[44]][_0xea71[224]]= function(_0x1aa6x41){var _0x1aa6x3c=_0x1aa6x42[_0xea71[33]](this,arguments);var _0x1aa6x3f=this[_0xea71[14]][_0xea71[36]]();var _0x1aa6x40=_0x1aa6x3f[_0xea71[221]](this[_0xea71[14]][_0xea71[220]]());var _0x1aa6x34=_0x1aa6x3f[_0xea71[221]](_0x1aa6x41);if(_0x1aa6x40== null|| (_0x1aa6x40!= _0x1aa6x41&& _0x1aa6x40!= _0x1aa6x34)){if(!this[_0xea71[14]][_0xea71[222]](_0x1aa6x41)&& _0x1aa6x3f[_0xea71[211]](_0x1aa6x34)&& !this[_0xea71[14]][_0xea71[223]](_0x1aa6x34)){_0x1aa6x3c= true}};return _0x1aa6x3c};mxGraphHandler[_0xea71[44]][_0xea71[225]]= function(_0x1aa6x3e){var _0x1aa6x41=_0x1aa6x3e[_0xea71[226]]();if(_0x1aa6x41== null){_0x1aa6x41= this[_0xea71[227]]};var _0x1aa6x3f=this[_0xea71[14]][_0xea71[36]]();var _0x1aa6x34=_0x1aa6x3f[_0xea71[221]](_0x1aa6x41);while(this[_0xea71[14]][_0xea71[222]](_0x1aa6x41)&& _0x1aa6x3f[_0xea71[211]](_0x1aa6x34)&& !this[_0xea71[14]][_0xea71[223]](_0x1aa6x34)){_0x1aa6x41= _0x1aa6x34;_0x1aa6x34= _0x1aa6x3f[_0xea71[221]](_0x1aa6x41)};this[_0xea71[14]][_0xea71[229]](_0x1aa6x41,_0x1aa6x3e[_0xea71[228]]())};mxPanningHandler[_0xea71[44]][_0xea71[230]]= function(_0x1aa6x3e){var _0x1aa6x41=_0x1aa6x3e[_0xea71[226]]();var _0x1aa6x3f=this[_0xea71[14]][_0xea71[36]]();var _0x1aa6x34=_0x1aa6x3f[_0xea71[221]](_0x1aa6x41);while(_0x1aa6x3f[_0xea71[211]](_0x1aa6x34)&& !this[_0xea71[14]][_0xea71[223]](_0x1aa6x34)){if(this[_0xea71[14]][_0xea71[222]](_0x1aa6x34)){_0x1aa6x41= _0x1aa6x34};_0x1aa6x34= _0x1aa6x3f[_0xea71[221]](_0x1aa6x34)};return _0x1aa6x41}};Editor[_0xea71[44]][_0xea71[18]]= function(){var _0x1aa6xe=this[_0xea71[14]];var _0x1aa6x43= new mxUndoManager();var _0x1aa6x44=function(_0x1aa6x45,_0x1aa6x14){_0x1aa6x43[_0xea71[233]](_0x1aa6x14[_0xea71[232]](_0xea71[231]))};_0x1aa6xe[_0xea71[36]]()[_0xea71[35]](mxEvent.UNDO,_0x1aa6x44);_0x1aa6xe[_0xea71[234]]()[_0xea71[35]](mxEvent.UNDO,_0x1aa6x44);var _0x1aa6x46=function(_0x1aa6x45,_0x1aa6x14){var _0x1aa6x47=_0x1aa6xe[_0xea71[236]](_0x1aa6x14[_0xea71[232]](_0xea71[231])[_0xea71[235]]);var _0x1aa6x35=[];for(var _0x1aa6x30=1;_0x1aa6x30< _0x1aa6x47[_0xea71[83]];_0x1aa6x30++){if(_0x1aa6xe[_0xea71[53]][_0xea71[237]](_0x1aa6x47[_0x1aa6x30])!= null){_0x1aa6x35[_0xea71[238]](_0x1aa6x47[_0x1aa6x30])}};_0x1aa6xe[_0xea71[239]](_0x1aa6x35)};_0x1aa6x43[_0xea71[35]](mxEvent.UNDO,_0x1aa6x46);_0x1aa6x43[_0xea71[35]](mxEvent.REDO,_0x1aa6x46);return _0x1aa6x43};Editor[_0xea71[44]][_0xea71[13]]= function(){mxStencilRegistry[_0xea71[241]](STENCIL_PATH+ _0xea71[240])};(function(){mxStencilRegistry[_0xea71[242]]= {};mxStencilRegistry[_0xea71[243]]= [];mxStencilRegistry[_0xea71[244]]= function(_0x1aa6x48){var _0x1aa6x3c=mxStencilRegistry[_0xea71[245]][_0x1aa6x48];if(_0x1aa6x3c== null){var _0x1aa6x49=mxStencilRegistry[_0xea71[246]](_0x1aa6x48);if(_0x1aa6x49!= null){var _0x1aa6x4a=mxStencilRegistry[_0xea71[242]][_0x1aa6x49];if(_0x1aa6x4a!= null){if(mxStencilRegistry[_0xea71[243]][_0x1aa6x49]== null){mxStencilRegistry[_0xea71[243]][_0x1aa6x49]= 1;for(var _0x1aa6x30=0;_0x1aa6x30< _0x1aa6x4a[_0xea71[83]];_0x1aa6x30++){var _0x1aa6x4b=_0x1aa6x4a[_0x1aa6x30];if(_0x1aa6x4b[_0xea71[248]]()[_0xea71[247]](_0x1aa6x4b[_0xea71[83]]- 4,_0x1aa6x4b[_0xea71[83]])== _0xea71[25]){mxStencilRegistry[_0xea71[241]](_0x1aa6x4b,null)}else {if(_0x1aa6x4b[_0xea71[248]]()[_0xea71[247]](_0x1aa6x4b[_0xea71[83]]- 3,_0x1aa6x4b[_0xea71[83]])== _0xea71[249]){var _0x1aa6x4c=mxUtils[_0xea71[250]](_0x1aa6x4b);if(_0x1aa6x4c!= null){eval[_0xea71[11]](window,_0x1aa6x4c[_0xea71[251]]())}}else {}}}}}else {mxStencilRegistry[_0xea71[241]](STENCIL_PATH+ _0xea71[252]+ _0x1aa6x49+ _0xea71[25],null)};_0x1aa6x3c= mxStencilRegistry[_0xea71[245]][_0x1aa6x48]}};return _0x1aa6x3c};mxStencilRegistry[_0xea71[246]]= function(_0x1aa6x48){var _0x1aa6x4d=_0x1aa6x48[_0xea71[254]](_0xea71[253]);var _0x1aa6x4e=null;if(_0x1aa6x4d[_0xea71[83]]> 0&& _0x1aa6x4d[0]== _0xea71[255]){_0x1aa6x4e= _0x1aa6x4d[1];for(var _0x1aa6x30=2;_0x1aa6x30< _0x1aa6x4d[_0xea71[83]]- 1;_0x1aa6x30++){_0x1aa6x4e+= _0xea71[252]+ _0x1aa6x4d[_0x1aa6x30]}};return _0x1aa6x4e};mxStencilRegistry[_0xea71[241]]= function(_0x1aa6x4f,_0x1aa6x50,_0x1aa6x51){_0x1aa6x51= (_0x1aa6x51!= null)?_0x1aa6x51:false;var _0x1aa6x52=mxStencilRegistry[_0xea71[243]][_0x1aa6x4f];if(_0x1aa6x51|| _0x1aa6x52== null){var _0x1aa6x53=false;if(_0x1aa6x52== null){var _0x1aa6x4c=mxUtils[_0xea71[250]](_0x1aa6x4f);_0x1aa6x52= _0x1aa6x4c[_0xea71[256]]();mxStencilRegistry[_0xea71[243]][_0x1aa6x4f]= _0x1aa6x52;_0x1aa6x53= true};mxStencilRegistry[_0xea71[257]](_0x1aa6x52,_0x1aa6x50,_0x1aa6x53)}};mxStencilRegistry[_0xea71[257]]= function(_0x1aa6x54,_0x1aa6x50,_0x1aa6x53){_0x1aa6x53= (_0x1aa6x53!= null)?_0x1aa6x53:true;var _0x1aa6x55=_0x1aa6x54[_0xea71[258]];var _0x1aa6x56=_0x1aa6x55[_0xea71[184]];var _0x1aa6x57=_0xea71[20];var _0x1aa6x48=_0x1aa6x55[_0xea71[56]](_0xea71[259]);if(_0x1aa6x48!= null){_0x1aa6x57= _0x1aa6x48+ _0xea71[253]};while(_0x1aa6x56!= null){if(_0x1aa6x56[_0xea71[260]]== mxConstants[_0xea71[261]]){_0x1aa6x48= _0x1aa6x56[_0xea71[56]](_0xea71[259]);if(_0x1aa6x48!= null){_0x1aa6x57= _0x1aa6x57[_0xea71[248]]();var _0x1aa6x58=_0x1aa6x48[_0xea71[263]](/ /g,_0xea71[262]);if(_0x1aa6x53){mxStencilRegistry[_0xea71[264]](_0x1aa6x57+ _0x1aa6x58[_0xea71[248]](), new mxStencil(_0x1aa6x56))};if(_0x1aa6x50!= null){var _0x1aa6x19=_0x1aa6x56[_0xea71[56]](_0xea71[265]);var _0x1aa6x1a=_0x1aa6x56[_0xea71[56]](_0xea71[266]);_0x1aa6x19= (_0x1aa6x19== null)?80:parseInt(_0x1aa6x19,10);_0x1aa6x1a= (_0x1aa6x1a== null)?80:parseInt(_0x1aa6x1a,10);_0x1aa6x50(_0x1aa6x57,_0x1aa6x58,_0x1aa6x48,_0x1aa6x19,_0x1aa6x1a)}}};_0x1aa6x56= _0x1aa6x56[_0xea71[267]]}}})();OpenFile= function(_0x1aa6x59){this[_0xea71[268]]= null;this[_0xea71[269]]= null;this[_0xea71[270]]= _0x1aa6x59};OpenFile[_0xea71[44]][_0xea71[271]]= function(_0x1aa6x6){this[_0xea71[269]]= _0x1aa6x6;this[_0xea71[272]]()};OpenFile[_0xea71[44]][_0xea71[273]]= function(_0x1aa6x6,_0x1aa6x5a){this[_0xea71[274]]= _0x1aa6x6;this[_0xea71[21]]= _0x1aa6x5a;this[_0xea71[272]]()};OpenFile[_0xea71[44]][_0xea71[275]]= function(_0x1aa6x5b){this[_0xea71[276]]();mxUtils[_0xea71[277]](_0x1aa6x5b)};OpenFile[_0xea71[44]][_0xea71[272]]= function(){if(this[_0xea71[269]]!= null&& this[_0xea71[274]]!= null){this[_0xea71[269]](this[_0xea71[274]],this[_0xea71[21]]);this[_0xea71[276]]()}};OpenFile[_0xea71[44]][_0xea71[276]]= function(){if(this[_0xea71[270]]!= null){this[_0xea71[270]]()}} \ No newline at end of file diff --git a/public/assets/plugins/jscripty/js/EditorUi.js b/public/assets/plugins/jscripty/js/EditorUi.js index 8d5d72b..0746ac4 100644 --- a/public/assets/plugins/jscripty/js/EditorUi.js +++ b/public/assets/plugins/jscripty/js/EditorUi.js @@ -1,1345 +1 @@ -/** - * $Id: EditorUi.js,v 1.21 2013/03/14 20:46:36 david Exp $ - * Copyright (c) 2006-2012, JGraph Ltd - */ -/** - * Constructs a new graph editor - */ -EditorUi = function(editor, container) { - this.editor = editor || new Editor(); - this.container = container || document.getElementById('geEditor'); - var graph = editor.graph; - var self = this; - - // Disables scrollbars - this.container.style.overflow = 'hidden'; - - // Pre-fetches submenu image - new Image().src = mxPopupMenu.prototype.submenuImage; - - // Pre-fetches connect image - if (mxConnectionHandler.prototype.connectImage != null) { - new Image().src = mxConnectionHandler.prototype.connectImage.src; - } - - // Creates the user interface - this.actions = new Actions(this); - this.menus = new Menus(this); - this.createDivs(); - this.refresh(); - this.createUi(); - - // Disables HTML and text selection - var textEditing = mxUtils.bind(this, function(evt) { - if (evt == null) { - evt = window.event; - } - - if (this.isSelectionAllowed(evt)) { - return true; - } - - return graph.isEditing(); - }); - - // Disables text selection while not editing and no dialog visible - if (this.container == document.body) { - this.menubarContainer.onselectstart = textEditing; - this.menubarContainer.onmousedown = textEditing; - this.toolbarContainer.onselectstart = textEditing; - this.toolbarContainer.onmousedown = textEditing; - this.diagramContainer.onselectstart = textEditing; - this.diagramContainer.onmousedown = textEditing; - this.sidebarContainer.onselectstart = textEditing; - this.sidebarContainer.onmousedown = textEditing; - this.footerContainer.onselectstart = textEditing; - this.footerContainer.onmousedown = textEditing; - } - - // And uses built-in context menu while editing - if (mxClient.IS_IE && (typeof(document.documentMode) === 'undefined' || - document.documentMode < 9)) { - mxEvent.addListener(this.diagramContainer, 'contextmenu', textEditing); - mxEvent.addListener(this.sidebarContainer, 'contextmenu', textEditing); - } else { - // Allows browser context menu outside of diagram and sidebar - this.diagramContainer.oncontextmenu = textEditing; - this.sidebarContainer.oncontextmenu = textEditing; - } - - // Contains the main graph instance inside the given panel - graph.init(this.diagramContainer); - graph.refresh(); - - // Enables scrollbars and sets cursor style for the container - graph.container.setAttribute('tabindex', '0'); - // graph.container.style.overflow = (touchStyle) ? 'hidden' : 'auto'; - graph.container.style.cursor = 'default'; - graph.container.style.backgroundImage = 'url(' + editor.gridImage + ')'; - graph.container.style.backgroundPosition = '-1px -1px'; - graph.container.focus(); - - // Keeps graph container focused on mouse down - var graphFireMouseEvent = graph.fireMouseEvent; - graph.fireMouseEvent = function(evtName, me, sender) { - if (evtName == mxEvent.MOUSE_DOWN) { - this.container.focus(); - } - - graphFireMouseEvent.apply(this, arguments); - }; - - // Giuseppe Careri - // Defines invalid connections along with the error messages that they produce. - - this.createMultiplicities(graph.multiplicities, ['start', 'end', 'input', - 'question', 'email' - ], [ - [1, 1], - [0, 0], - [1, 1], - [1, 'n'], - [1, 'n'] - ], [ - [0, 0], - [1, 'n'], - [1, 'n'], - [1, 'n'], - [1, 'n'] - - ]); - - - // Giuseppe Careri - // Processes a doubleclick on an optional cell and fires a event. - // The event is fired initially. - // If the graph is enabled and the event has not been consumed, then is called with the given cell. - // The event is ignored if no cell was specified. - graph.dblClick = function(evt, cell) { - var edges = ['question']; - var mxe = new mxEventObject(mxEvent.DOUBLE_CLICK, 'event', evt, 'cell', - cell); - this.fireEvent(mxe); - - if (this.isEnabled() && !mxEvent.isConsumed(evt) && !mxe.isConsumed()) { - // Override dblClick Vertices and Edges - if (this.getModel().isEdge(cell)) { - if (edges.indexOf(cell.source.value.tagName) >= 0) - this.startEditingAtCell(cell); - } else if (this.getModel().isVertex(cell)) { - console.log(self); - console.log(cell); - self.showDialog(new GeneralDialog(self, cell).container, 320, 280, true, - true); - } - mxe.consume(); - } - } - - // Configures automatic expand on mouseover - graph.panningHandler.autoExpand = true; - - // Installs context menu - graph.panningHandler.factoryMethod = mxUtils.bind(this, function(menu, cell, - evt) { - this.menus.createPopupMenu(menu, cell, evt); - }); - - // Initializes the outline - editor.outline.init(this.outlineContainer); - - // Hides context menu - mxEvent.addGestureListeners(document, mxUtils.bind(this, function(evt) { - graph.panningHandler.hideMenu(); - })); - - // Adds gesture handling (pinch to zoom) - if (mxClient.IS_TOUCH) { - mxEvent.addListener(graph.container, 'gesturechange', - mxUtils.bind(this, function(evt) { - graph.view.getDrawPane().setAttribute('transform', 'scale(' + evt.scale + - ')'); - graph.view.getOverlayPane().style.visibility = 'hidden'; - }) - ); - - mxEvent.addListener(graph.container, 'gestureend', - mxUtils.bind(this, function(evt) { - graph.view.getDrawPane().removeAttribute('transform'); - graph.zoomToCenter = true; - graph.zoom(evt.scale); - graph.view.getOverlayPane().style.visibility = 'visible'; - }) - ); - } - - // Create handler for key events - var keyHandler = this.createKeyHandler(editor); - - // Getter for key handler - this.getKeyHandler = function() { - return keyHandler; - }; - - // Updates the editor UI after the window has been resized - mxEvent.addListener(window, 'resize', mxUtils.bind(this, function() { - this.refresh(); - graph.sizeDidChange(); - this.editor.outline.update(false); - this.editor.outline.outline.sizeDidChange(); - })); - - // Updates action and menu states - this.init(); - this.open(); -}; - -/** - * Specifies the size of the split bar. - */ -EditorUi.prototype.splitSize = (mxClient.IS_TOUCH) ? 16 : 8; - -/** - * Specifies the height of the menubar. Default is 34. - */ -EditorUi.prototype.menubarHeight = 33; - -/** - * Specifies the height of the toolbar. Default is 36. - */ -EditorUi.prototype.toolbarHeight = 36; - -/** - * Specifies the height of the footer. Default is 28. - */ -EditorUi.prototype.footerHeight = 28; - -/** - * Specifies the position of the horizontal split bar. Default is 212. - */ -EditorUi.prototype.hsplitPosition = 204; - -/** - * Specifies the position of the vertical split bar. Default is 190. - */ -EditorUi.prototype.vsplitPosition = 190; - -/** - * Installs the listeners to update the action states. - */ -EditorUi.prototype.init = function() { - // Updates action states - this.addUndoListener(); - this.addSelectionListener(); - - // Overrides clipboard to update paste action state - var paste = this.actions.get('paste'); - - var updatePaste = function() { - paste.setEnabled(!mxClipboard.isEmpty()); - }; - - var mxClipboardCut = mxClipboard.cut; - mxClipboard.cut = function() { - mxClipboardCut.apply(this, arguments); - updatePaste(); - }; - - var mxClipboardCopy = mxClipboard.copy; - mxClipboard.copy = function() { - mxClipboardCopy.apply(this, arguments); - updatePaste(); - }; -}; - -/** - * Hook for allowing selection and context menu for certain events. - */ -EditorUi.prototype.isSelectionAllowed = function(evt) { - return false; -}; - -/** - * Opens the current diagram via the window.opener if one exists. - */ -EditorUi.prototype.open = function() { - // Cross-domain window access is not allowed in FF, so if we - // were opened from another domain then this will fail. - try { - if (window.opener != null && window.opener.openFile != null) { - window.opener.openFile.setConsumer(mxUtils.bind(this, function(xml, - filename) { - try { - var doc = mxUtils.parseXml(xml); - this.editor.setGraphXml(doc.documentElement); - this.editor.modified = false; - this.editor.undoManager.clear(); - - if (filename != null) { - this.editor.filename = filename; - } - } catch (e) { - mxUtils.alert(mxResources.get('invalidOrMissingFile') + ': ' + e.message); - } - })); - } - } catch (e) { - // ignore - } -}; - -/** - * Giuseppe Careri - * Opens the current diagram via string. - */ -EditorUi.prototype.openString = function(xml, filename, data) { - try { - var doc = mxUtils.parseXml(xml); - this.editor.setGraphXml(doc.documentElement); - this.editor.modified = false; - this.editor.undoManager.clear(); - - if (filename != null) { - this.editor.filename = filename; - } - - if (data != null) { - this.editor.data = data; - } - } catch (e) { - mxUtils.alert(mxResources.get('invalidOrMissingFile') + ': ' + e.message); - } -}; - -/** - * Saves As the current graph under the given project name. - */ -EditorUi.prototype.new = function(name) { - var editor = this.editor; - - if (name != null) { - var xml = mxUtils.getPrettyXml(this.editor.getGraphXml()); - try { - if (useLocalStorage) { - if (localStorage.getItem(name) != null && - !mxUtils.confirm(mxResources.get('replace', [name]))) { - return; - } - - localStorage.setItem(name, xml); - this.editor.setStatus(mxResources.get('saved') + ' ' + new Date()); - } else { - console.log(xml.length); - console.log(MAX_REQUEST_SIZE); - if (xml.length < MAX_REQUEST_SIZE) { - xml = encodeURIComponent(xml); - name = encodeURIComponent(name); - - var xhr = new XMLHttpRequest(); - xhr.open("POST", SAVE_URL, true); - xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); - xhr.setRequestHeader('Authorization', 'Bearer ' + editor.data.token); - xhr.onload = function(e) { - if (xhr.readyState === 4) { - if (xhr.status === 201) { - editor.setStatus('Project ' + JSON.parse(xhr.response).name + - ' is opening in new window!'); - setTimeout(function() { - window.open('jscripty/projects/view/' + JSON.parse(xhr.response).id, - '_blank'); - }, 1500); - } else { - try { - var response = JSON.parse(xhr.response); - editor.setStatus('Error creating project: ' + response.errors[0].message); - } catch (e) { - editor.setStatus('Error creating project' + ' (' + xhr.status + ' ' + xhr.statusText + ')'); - } - } - } - }; - xhr.onerror = function(e) { - mxUtils.alert(xhr.statusText); - }; - xhr.send('description=project_new&name=' + name); - } else { - mxUtils.alert(mxResources.get('drawingTooLarge')); - mxUtils.popup(xml); - - return; - } - } - - this.editor.filename = name; - this.editor.modified = false; - } catch (e) { - this.editor.setStatus('Error creating project'); - } - } else { - this.editor.setStatus('Error creating project'); - } -}; - - -/** - * Saves the current graph under the given project name. - */ -EditorUi.prototype.save = function(name) { - var editor = this.editor; - - if (name != null) { - var xml = mxUtils.getPrettyXml(this.editor.getGraphXml()); - try { - if (useLocalStorage) { - if (localStorage.getItem(name) != null && - !mxUtils.confirm(mxResources.get('replace', [name]))) { - return; - } - - localStorage.setItem(name, xml); - this.editor.setStatus(mxResources.get('saved') + ' ' + new Date()); - } else { - console.log(xml.length); - console.log(MAX_REQUEST_SIZE); - if (xml.length < MAX_REQUEST_SIZE) { - xml = encodeURIComponent(xml); - - var xhr = new XMLHttpRequest(); - xhr.open("PUT", SAVE_URL + this.editor.data.id, true); - xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); - xhr.setRequestHeader('Authorization', 'Bearer ' + editor.data.token); - xhr.onload = function(e) { - if (xhr.readyState === 4) { - if (xhr.status === 200) { - editor.setStatus('Updated at ' + JSON.parse(xhr.response).updatedAt + - ' (' + xhr.status + ' ' + xhr.statusText + ')'); - } else { - try { - var response = JSON.parse(xhr.response); - editor.setStatus('Error saving project: ' + response.errors[0].message); - } catch (e) { - editor.setStatus('Error saving project' + ' (' + xhr.status + ' ' + xhr.statusText + ')'); - } - } - } - }; - xhr.onerror = function(e) { - mxUtils.alert(xhr.statusText); - }; - xhr.send('draft=' + xml); - } else { - mxUtils.alert(mxResources.get('drawingTooLarge')); - mxUtils.popup(xml); - - return; - } - } - - this.editor.filename = name; - this.editor.modified = false; - } catch (e) { - this.editor.setStatus('Error saving file'); - } - } else { - this.editor.setStatus('Error saving file'); - } -}; - -/** - * Saves As the current graph under the given project name. - */ -EditorUi.prototype.saveAs = function(name) { - var editor = this.editor; - console.log(name); - if (name != null) { - var xml = mxUtils.getPrettyXml(this.editor.getGraphXml()); - try { - if (useLocalStorage) { - if (localStorage.getItem(name) != null && - !mxUtils.confirm(mxResources.get('replace', [name]))) { - return; - } - - localStorage.setItem(name, xml); - this.editor.setStatus(mxResources.get('saved') + ' ' + new Date()); - } else { - console.log(xml.length); - console.log(MAX_REQUEST_SIZE); - if (xml.length < MAX_REQUEST_SIZE) { - xml = encodeURIComponent(xml); - name = encodeURIComponent(name); - - var xhr = new XMLHttpRequest(); - xhr.open("POST", SAVE_URL, true); - xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); - xhr.setRequestHeader('Authorization', 'Bearer ' + editor.data.token); - xhr.onload = function(e) { - if (xhr.readyState === 4) { - if (xhr.status === 201) { - editor.setStatus('Project ' + JSON.parse(xhr.response).name + - ' is opening in new window!'); - setTimeout(function() { - window.open('jscripty/project/' + JSON.parse(xhr.response).id, - '_blank'); - }, 1500); - } else { - try { - var response = JSON.parse(xhr.response); - editor.setStatus('Error cloning project: ' + response.errors[0].message); - } catch (e) { - editor.setStatus('Error cloning project' + ' (' + xhr.status + ' ' + xhr.statusText + ')'); - } - } - } - }; - xhr.onerror = function(e) { - mxUtils.alert(xhr.statusText); - }; - xhr.send('description=project_cloned&name=' + name + - '&draft=' + xml + '&production=' + xml); - } else { - mxUtils.alert(mxResources.get('drawingTooLarge')); - mxUtils.popup(xml); - - return; - } - } - - this.editor.filename = name; - this.editor.modified = false; - } catch (e) { - this.editor.setStatus('Error saving file'); - } - } else { - this.editor.setStatus('Error saving file'); - } -}; - -/** - * Plush the current graph under the given project name. - */ -EditorUi.prototype.validate = function(a, b) { - var graph = this.editor.graph; - a = null != a ? a : graph.model.getRoot(); - b = null != b ? b : {}; - for (var c = !0, d = graph.model.getChildCount(a), e = 0; e < d; e++) { - var f = graph.model.getChildAt(a, e), - g = b; - graph.isValidRoot(f) && (g = {}); - g = this.validate(f, g); - null != g ? graph.setCellWarning(f, g.replace(/\n/g, "\x3cbr\x3e")) : graph.setCellWarning(f, null); - c = c && null == g - } - d = ""; - if (graph.model.isVertex(a)) { - switch (a.value.nodeName) { - case 'question': - d = (a.value.getAttribute('question') !== "") ? "" : - 'Question can not be empty' + "\n"; - d += (a.value.getAttribute('label') !== "") ? "" : 'Label can not be empty' + "\n"; - - break; - case 'input': - d = (a.value.getAttribute('question') !== "") ? "" : 'Question can not be empty' + "\n"; - d += (a.value.getAttribute('label') !== "") ? "" : 'Label can not be empty' + "\n"; - - break; - case 'start': - d = this.validateBlock('start') ? '' : "Only one Start block is allowed" + "\n"; - d += (a.value.getAttribute('label') !== "") ? "" : 'Label can not be empty' + "\n"; - - break; - } - } - - if (graph.model.isEdge(a)) { - var z = graph.model.getCell(a.source.getId()); - switch (z.value.nodeName) { - case 'question': - // var patt = /^[a-zA-Z0-9][a-zA-Z0-9\s]*$/; - var str = String(a.getValue()); - console.log(str); - if (str === 'null' || str === 'undefined') { - d = "Value can not be empty" + "\n"; - } else { - var result = str.split(","); - result.forEach(function(entry, key) { - d = d + ((entry.trim() !== "") ? "" : 'Value' + (key + 1) + ' can not be empty' + "\n"); - }); - } - // console.log(a.getValue()); - // if ((str == 'undefined') || (str == 'null')) { - // str = ' '; - // } - // d = ((a.getValue() !== "") && (a.getValue() !== 'undefined') && (a.getValue() !== null)) ? '' : "Value can not be empty" + "\n"; - // d = d + ((patt.test(str.trim())) ? "" : 'Value can not be empty' + "\n"); - // - // res.forEach(function(entry) { - // d = d + ((patt.test(entry.trim())) ? "" : 'Can not be empty' + "\n"); - // }); - break; - - } - } - - graph.isCellCollapsed(a) && !c && (d += (mxResources.get(graph.containsValidationErrorsResource) || graph.containsValidationErrorsResource) + "\n"); - d = graph.model.isEdge(a) ? d + (graph.getEdgeValidationError(a, graph.model.getTerminal(a, !0), graph.model.getTerminal(a, !1)) || "") : d + (graph.getCellValidationError(a) || ""); - e = graph.validateCell(a, b); - null != e && (d += e); - null == graph.model.getParent(a) && graph.view.validate(); - return 0 < d.length || !c ? d : null -} - -EditorUi.prototype.validateBlock = function(blockName) { - var graph = this.editor.graph; - var parent = graph.getDefaultParent(); - var count = 0; - // var model = graph.getModel(); - //We can also use model.getChildren(parent) - parent.children.forEach(function(n) { - if (graph.model.isVertex(n) && n.value.nodeName == blockName) { - count++; - } - }); - return count > 1 ? false : true; -} - -EditorUi.prototype.publish = function(name) { - - var editor = this.editor; - - if (name != null) { - - var response = this.validate(); - if (response === null) { - var xml = mxUtils.getPrettyXml(this.editor.getGraphXml()); - try { - if (useLocalStorage) { - if (localStorage.getItem(name) != null && - !mxUtils.confirm(mxResources.get('replace', [name]))) { - return; - } - - localStorage.setItem(name, xml); - this.editor.setStatus(mxResources.get('saved') + ' ' + new Date()); - } else { - console.log(xml.length); - console.log(MAX_REQUEST_SIZE); - if (xml.length < MAX_REQUEST_SIZE) { - xml = encodeURIComponent(xml); - - var xhr = new XMLHttpRequest(); - xhr.open("PUT", SAVE_URL + this.editor.data.id, true); - xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); - xhr.setRequestHeader('Authorization', 'Bearer ' + editor.data.token); - xhr.onload = function(e) { - if (xhr.readyState === 4) { - if (xhr.status === 200) { - editor.setStatus('Published at ' + JSON.parse(xhr.response).updatedAt + - ' (' + xhr.status + ' ' + xhr.statusText + ')'); - } else { - try { - var response = JSON.parse(xhr.response); - editor.setStatus('Error publishing project: ' + response.errors[0].message); - } catch (e) { - editor.setStatus('Error publishing project' + ' (' + xhr.status + ' ' + xhr.statusText + ')'); - } - } - } - }; - xhr.onerror = function(e) { - mxUtils.alert(xhr.statusText); - }; - xhr.send('draft=' + xml + '&production=' + xml); - } else { - mxUtils.alert(mxResources.get('drawingTooLarge')); - mxUtils.popup(xml); - - return; - } - } - - this.editor.filename = name; - this.editor.modified = false; - } catch (e) { - this.editor.setStatus('Error publishing file'); - } - } else { - editor.setStatus('Error publishing project: '); - } - } else { - this.editor.setStatus('Error publishing file'); - } - // } - - - -}; - -/** - * Create variable - */ -EditorUi.prototype.variable = function(name) { - var editor = this.editor; - - if (name != null) { - try { - - var xhr = new XMLHttpRequest(); - xhr.open("POST", VARIABLE_URL, true); - xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); - xhr.setRequestHeader('Authorization', 'Bearer ' + editor.data.token); - xhr.onload = function(e) { - if (xhr.readyState === 4) { - if (xhr.status === 201) { - editor.setStatus('Variable created at ' + JSON.parse(xhr.response).createdAt + - ' (' + xhr.status + ' ' + xhr.statusText + ')'); - } else { - try { - var response = JSON.parse(xhr.response); - editor.setStatus('Error creating variable: ' + response.errors[0].message); - } catch (e) { - editor.setStatus('Error creating variable' + ' (' + xhr.status + ' ' + xhr.statusText + ')'); - } - } - } - }; - xhr.onerror = function(e) { - mxUtils.alert(xhr.statusText); - }; - xhr.send('name=' + name); - } catch (e) { - this.editor.setStatus('Error creating variable'); - } - } else { - this.editor.setStatus('Error creating variable'); - } -}; - -/** - * Returns the URL for a copy of this editor with no state. - */ -EditorUi.prototype.getUrl = function(pathname) { - var href = (pathname != null) ? pathname : window.location.pathname; - var parms = (href.indexOf('?') > 0) ? 1 : 0; - - // Removes template URL parameter for new blank diagram - for (var key in urlParams) { - if (parms == 0) { - href += '?'; - } else { - href += '&'; - } - - href += key + '=' + urlParams[key]; - parms++; - } - - return href; -}; - -/** - * Updates the states of the given undo/redo items. - */ -EditorUi.prototype.addUndoListener = function() { - var undo = this.actions.get('undo'); - var redo = this.actions.get('redo'); - - var undoMgr = this.editor.undoManager; - - var undoListener = function() { - undo.setEnabled(undoMgr.canUndo()); - redo.setEnabled(undoMgr.canRedo()); - }; - - undoMgr.addListener(mxEvent.ADD, undoListener); - undoMgr.addListener(mxEvent.UNDO, undoListener); - undoMgr.addListener(mxEvent.REDO, undoListener); - undoMgr.addListener(mxEvent.CLEAR, undoListener); - - // Updates the button states once - undoListener(); -}; - -/** - * Updates the states of the given toolbar items based on the selection. - */ -EditorUi.prototype.addSelectionListener = function() { - var selectionListener = mxUtils.bind(this, function() { - var graph = this.editor.graph; - var selected = !graph.isSelectionEmpty(); - var vertexSelected = false; - var edgeSelected = false; - - var cells = graph.getSelectionCells(); - - if (cells != null) { - for (var i = 0; i < cells.length; i++) { - var cell = cells[i]; - - if (graph.getModel().isEdge(cell)) { - edgeSelected = true; - } - - if (graph.getModel().isVertex(cell)) { - vertexSelected = true; - } - - if (edgeSelected && vertexSelected) { - break; - } - } - } - - // Updates action states - var actions = ['cut', 'copy', 'delete', 'duplicate', 'bold', 'italic', - 'style', 'underline', 'toFront', 'toBack', 'dashed', 'rounded', - 'shadow', - 'tilt', 'autosize' - ]; - - for (var i = 0; i < actions.length; i++) { - this.actions.get(actions[i]).setEnabled(selected); - } - - this.actions.get('curved').setEnabled(edgeSelected); - this.actions.get('rotation').setEnabled(vertexSelected); - this.actions.get('wordWrap').setEnabled(vertexSelected); - this.actions.get('group').setEnabled(graph.getSelectionCount() > 1); - this.actions.get('ungroup').setEnabled(graph.getSelectionCount() == 1 && - graph.getModel().getChildCount(graph.getSelectionCell()) > 0); - var oneVertexSelected = vertexSelected && graph.getSelectionCount() == 1; - this.actions.get('removeFromGroup').setEnabled(oneVertexSelected && - graph.getModel().isVertex(graph.getModel().getParent(graph.getSelectionCell())) - ); - - // Updates menu states - var menus = ['fontFamily', 'fontSize', 'alignment', 'position', 'text', - 'format', - 'arrange', 'linewidth', 'spacing' - ]; - - for (var i = 0; i < menus.length; i++) { - this.menus.get(menus[i]).setEnabled(selected); - } - - menus = ['line', 'lineend', 'linestart']; - - for (var i = 0; i < menus.length; i++) { - this.menus.get(menus[i]).setEnabled(edgeSelected); - } - - this.actions.get('setAsDefaultEdge').setEnabled(edgeSelected); - - this.menus.get('align').setEnabled(graph.getSelectionCount() > 1); - this.menus.get('direction').setEnabled(vertexSelected || (edgeSelected && - graph.isLoop(graph.view.getState(graph.getSelectionCell())))); - this.menus.get('navigation').setEnabled(graph.foldingEnabled && ((graph.view - .currentRoot != null) || - (graph.getSelectionCount() == 1 && graph.isValidRoot(graph.getSelectionCell())) - )); - this.actions.get('home').setEnabled(graph.view.currentRoot != null); - this.actions.get('exitGroup').setEnabled(graph.view.currentRoot != null); - var groupEnabled = graph.getSelectionCount() == 1 && graph.isValidRoot( - graph.getSelectionCell()); - this.actions.get('enterGroup').setEnabled(groupEnabled); - this.actions.get('expand').setEnabled(groupEnabled); - this.actions.get('collapse').setEnabled(groupEnabled); - this.actions.get('editLink').setEnabled(graph.getSelectionCount() == 1); - this.actions.get('openLink').setEnabled(graph.getSelectionCount() == 1 && - graph.getLinkForCell(graph.getSelectionCell()) != null); - }); - - this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE, - selectionListener); - selectionListener(); -}; - -/** - * Refreshes the viewport. - */ -EditorUi.prototype.refresh = function() { - var quirks = mxClient.IS_IE && (document.documentMode == null || document.documentMode == - 5); - var w = this.container.clientWidth; - var h = this.container.clientHeight; - - if (this.container == document.body) { - w = document.body.clientWidth || document.documentElement.clientWidth; - h = (quirks) ? document.body.clientHeight || document.documentElement.clientHeight : - document.documentElement.clientHeight; - } - - var effHsplitPosition = Math.max(0, Math.min(this.hsplitPosition, w - this.splitSize - - 20)); - var effVsplitPosition = Math.max(0, Math.min(this.vsplitPosition, h - this.menubarHeight - - this.toolbarHeight - this.footerHeight - 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 tmp = this.menubarHeight + this.toolbarHeight; - - if (!mxClient.IS_QUIRKS) { - tmp += 1; - } - - this.sidebarContainer.style.top = tmp + 'px'; - this.sidebarContainer.style.width = effHsplitPosition + 'px'; - this.outlineContainer.style.width = effHsplitPosition + 'px'; - this.outlineContainer.style.height = effVsplitPosition + 'px'; - this.outlineContainer.style.bottom = this.footerHeight + 'px'; - this.diagramContainer.style.left = (effHsplitPosition + this.splitSize) + - 'px'; - this.diagramContainer.style.top = this.sidebarContainer.style.top; - this.footerContainer.style.height = this.footerHeight + 'px'; - this.footerContainer.style.display = 'none'; - this.hsplit.style.top = this.sidebarContainer.style.top; - this.hsplit.style.bottom = this.outlineContainer.style.bottom; - this.hsplit.style.left = effHsplitPosition + 'px'; - this.vsplit.style.width = this.sidebarContainer.style.width; - this.vsplit.style.bottom = (effVsplitPosition + this.footerHeight) + 'px'; - - if (quirks) { - this.menubarContainer.style.width = w + 'px'; - this.toolbarContainer.style.width = this.menubarContainer.style.width; - var sidebarHeight = (h - effVsplitPosition - this.splitSize - this.footerHeight - - this.menubarHeight - this.toolbarHeight); - this.sidebarContainer.style.height = sidebarHeight + 'px'; - this.diagramContainer.style.width = (w - effHsplitPosition - this.splitSize) + - 'px'; - var diagramHeight = (h - this.footerHeight - this.menubarHeight - this.toolbarHeight); - this.diagramContainer.style.height = diagramHeight + 'px'; - this.footerContainer.style.width = this.menubarContainer.style.width; - this.hsplit.style.height = diagramHeight + 'px'; - } else { - this.sidebarContainer.style.bottom = (effVsplitPosition + this.splitSize + - this.footerHeight) + 'px'; - this.diagramContainer.style.bottom = this.outlineContainer.style.bottom; - } -}; - -/** - * Creates the required containers. - */ -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'); - - // Sets static style for containers - 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.left = '0px'; - 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'; -}; - -/** - * Creates the required containers. - */ -EditorUi.prototype.createUi = function() { - // Creates menubar - this.menubar = this.menus.createMenubar(this.createDiv('geMenubar')); - this.menubarContainer.appendChild(this.menubar.container); - - // Creates toolbar - this.toolbar = this.createToolbar(this.createDiv('geToolbar')); - this.toolbarContainer.appendChild(this.toolbar.container); - - // Creates the sidebar - this.sidebar = this.createSidebar(this.sidebarContainer); - - // Creates the footer - this.footerContainer.appendChild(this.createFooter()); - - // Adds status bar in menubar - this.statusContainer = this.createStatusContainer(); - - // Connects the status bar to the editor status - this.editor.addListener('statusChanged', mxUtils.bind(this, function() { - this.setStatusText(this.editor.getStatus()); - })); - - this.setStatusText(this.editor.getStatus()); - this.menubar.container.appendChild(this.statusContainer); - - // Inserts into DOM - this.container.appendChild(this.menubarContainer); - this.container.appendChild(this.toolbarContainer); - this.container.appendChild(this.sidebarContainer); - this.container.appendChild(this.outlineContainer); - this.container.appendChild(this.diagramContainer); - this.container.appendChild(this.footerContainer); - this.container.appendChild(this.hsplit); - this.container.appendChild(this.vsplit); - - // HSplit - this.addSplitHandler(this.hsplit, true, 0, mxUtils.bind(this, function( - value) { - this.hsplitPosition = value; - this.refresh(); - this.editor.graph.sizeDidChange(); - this.editor.outline.update(false); - this.editor.outline.outline.sizeDidChange(); - })); - - // VSplit - this.addSplitHandler(this.vsplit, false, this.footerHeight, mxUtils.bind( - this, - function(value) { - this.vsplitPosition = value; - this.refresh(); - this.editor.outline.update(false); - this.editor.outline.outline.sizeDidChange(); - })); -}; - -/** - * Creates a new toolbar for the given container. - */ -EditorUi.prototype.createStatusContainer = function() { - var container = document.createElement('a'); - container.className = 'geItem geStatus'; - - return container; -}; - -/** - * Creates a new toolbar for the given container. - */ -EditorUi.prototype.createStatusContainer = function() { - var container = document.createElement('a'); - container.className = 'geItem geStatus'; - - return container; -}; - -/** - * Creates a new toolbar for the given container. - */ -EditorUi.prototype.setStatusText = function(value) { - this.statusContainer.innerHTML = value; -}; - -/** - * Creates a new toolbar for the given container. - */ -EditorUi.prototype.createToolbar = function(container) { - return new Toolbar(this, container); -}; - -/** - * Creates a new sidebar for the given container. - */ -EditorUi.prototype.createSidebar = function(container) { - return new Sidebar(this, container); -}; - -/** - * Creates and returns a new footer. - */ -EditorUi.prototype.createFooter = function() { - return this.createDiv('geFooter'); -}; - -/** - * Creates the actual toolbar for the toolbar container. - */ -EditorUi.prototype.createDiv = function(classname) { - var elt = document.createElement('div'); - elt.className = classname; - - return elt; -}; - -/** - * Creates the custom header. - */ -EditorUi.prototype.createHeader = function(classname) { - var elt = document.createElement(classname); - return elt; -}; - -/** - * Creates the custom header. - */ -EditorUi.prototype.createForm = function(classname) { - var elt = document.createElement('form'); - elt.className = classname; - - return elt; -}; - -/** - * Updates the states of the given undo/redo items. - */ -EditorUi.prototype.addSplitHandler = function(elt, horizontal, dx, onChange) { - var start = null; - var initial = null; - - function getValue() { - return parseInt(((horizontal) ? elt.style.left : elt.style.bottom)); - }; - - function moveHandler(evt) { - if (start != null) { - var pt = new mxPoint(mxEvent.getClientX(evt), mxEvent.getClientY(evt)); - onChange(Math.max(0, initial + ((horizontal) ? (pt.x - start.x) : (start.y - - pt.y)) - dx)); - mxEvent.consume(evt); - } - }; - - function dropHandler(evt) { - moveHandler(evt); - start = null; - initial = null; - }; - - mxEvent.addGestureListeners(elt, function(evt) { - start = new mxPoint(mxEvent.getClientX(evt), mxEvent.getClientY(evt)); - initial = getValue(); - mxEvent.consume(evt); - }); - - mxEvent.addListener(document, 'mousemove', moveHandler); - mxEvent.addListener(document, 'touchmove', moveHandler); - mxEvent.addListener(document, 'mouseup', dropHandler); - mxEvent.addListener(document, 'touchend', dropHandler); -}; - -/** - * Displays a print dialog. - */ -EditorUi.prototype.showDialog = function(elt, w, h, modal, closable, onClose) { - this.hideDialog(); - this.dialog = new Dialog(this, elt, w, (mxClient.IS_VML) ? h - 12 : h, - modal, - closable, onClose); -}; - -/** - * Displays a print dialog. - */ -EditorUi.prototype.hideDialog = function() { - if (this.dialog != null) { - this.dialog.close(); - this.dialog = null; - this.editor.graph.container.focus(); - } -}; - -/** - * Adds the label menu items to the given menu and parent. - */ -EditorUi.prototype.saveFile = function(forceDialog) { - if (!forceDialog && this.editor.filename != null) { - this.save(this.editor.getOrCreateFilename()); - } else { - this.showDialog(new SaveDialog(this).container, 300, 100, true, true); - } -}; - -/** - * Adds the label menu items to the given menu and parent. - */ -EditorUi.prototype.publishFile = function(forceDialog) { - if (!forceDialog && this.editor.filename != null) { - this.publish(this.editor.getOrCreateFilename()); - } else { - //this.showDialog(new SaveDialog(this).container, 300, 100, true, true); - } -}; - -/** - * Executes the given layout. - */ -EditorUi.prototype.executeLayout = function(layout, animate, ignoreChildCount) { - var graph = this.editor.graph; - var cell = graph.getSelectionCell(); - - // Allow global overridding of animation - animate = this.animate != null ? this.animate : animate; - - graph.getModel().beginUpdate(); - try { - layout.execute(graph.getDefaultParent(), cell); - } catch (e) { - throw e; - } finally { - // Animates the changes in the graph model except - // for Camino, where animation is too slow - if (animate && navigator.userAgent.indexOf('Camino') < 0) { - // New API for animating graph layout results asynchronously - var morph = new mxMorphing(graph); - morph.addListener(mxEvent.DONE, mxUtils.bind(this, function() { - graph.getModel().endUpdate(); - })); - - morph.startAnimation(); - } else { - graph.getModel().endUpdate(); - } - } -}; - -/** - * Creates the keyboard event handler for the current graph and history. - */ -EditorUi.prototype.createKeyHandler = function(editor) { - var graph = this.editor.graph; - var keyHandler = new mxKeyHandler(graph); - - // Routes command-key to control-key on Mac - keyHandler.isControlDown = function(evt) { - return mxEvent.isControlDown(evt) || (mxClient.IS_MAC && evt.metaKey); - }; - - // Helper function to move cells with the cursor keys - function nudge(keyCode) { - if (!graph.isSelectionEmpty()) { - var dx = 0; - var dy = 0; - - if (keyCode == 37) { - dx = -1; - } else if (keyCode == 38) { - dy = -1; - } else if (keyCode == 39) { - dx = 1; - } else if (keyCode == 40) { - dy = 1; - } - - graph.moveCells(graph.getSelectionCells(), dx, dy); - graph.scrollCellToVisible(graph.getSelectionCell()); - } - }; - - // Binds keystrokes to actions - var bindAction = mxUtils.bind(this, function(code, control, key, shift) { - var action = this.actions.get(key); - - if (action != null) { - var f = function() { - if (action.enabled) { - action.funct(); - } - }; - - if (control) { - if (shift) { - keyHandler.bindControlShiftKey(code, f); - } else { - keyHandler.bindControlKey(code, f); - } - } else { - if (shift) { - keyHandler.bindShiftKey(code, f); - } else { - keyHandler.bindKey(code, f); - } - } - } - }); - - var ui = this; - var keyHandleEscape = keyHandler.escape; - keyHandler.escape = function(evt) { - ui.hideDialog(); - keyHandleEscape.apply(this, arguments); - }; - - // Ignores enter keystroke. Remove this line if you want the - // enter keystroke to stop editing. - keyHandler.enter = function() {}; - keyHandler.bindKey(8, function() { - graph.foldCells(true); - }); // Backspace - keyHandler.bindKey(13, function() { - graph.foldCells(false); - }); // Enter - keyHandler.bindKey(33, function() { - graph.exitGroup(); - }); // Page Up - keyHandler.bindKey(34, function() { - graph.enterGroup(); - }); // Page Down - keyHandler.bindKey(36, function() { - graph.home(); - }); // Home - keyHandler.bindKey(35, function() { - graph.refresh(); - }); // End - keyHandler.bindKey(37, function() { - nudge(37); - }); // Left arrow - keyHandler.bindKey(38, function() { - nudge(38); - }); // Up arrow - keyHandler.bindKey(39, function() { - nudge(39); - }); // Right arrow - keyHandler.bindKey(40, function() { - nudge(40); - }); // Down arrow - keyHandler.bindKey(113, function() { - graph.startEditingAtCell(); - }); - bindAction(46, false, 'delete'); // Delete - bindAction(82, true, 'tilt'); // Ctrl+R - bindAction(83, true, 'save'); // Ctrl+S - bindAction(83, true, 'saveAs', true); // Ctrl+Shift+S - bindAction(107, false, 'zoomIn'); // Add - bindAction(109, false, 'zoomOut'); // Subtract - bindAction(65, true, 'selectAll'); // Ctrl+A - bindAction(86, true, 'selectVertices', true); // Ctrl+Shift+V - bindAction(69, true, 'selectEdges', true); // Ctrl+Shift+E - bindAction(69, true, 'export'); // Ctrl+Shift+E - bindAction(66, true, 'toBack'); // Ctrl+B - bindAction(70, true, 'toFront'); // Ctrl+F - bindAction(68, true, 'duplicate'); // Ctrl+D - bindAction(90, true, 'undo'); // Ctrl+Z - bindAction(89, true, 'redo'); // Ctrl+Y - bindAction(88, true, 'cut'); // Ctrl+X - bindAction(67, true, 'copy'); // Ctrl+C - bindAction(81, true, 'connect'); // Ctrl+Q - bindAction(86, true, 'paste'); // Ctrl+V - bindAction(71, true, 'group'); // Ctrl+G - bindAction(71, true, 'grid', true); // Ctrl+Shift+G - bindAction(85, true, 'ungroup'); // Ctrl+U - bindAction(112, false, 'about'); // F1 - bindAction(80, true, 'publish', true); // Ctrl+Shift+P - - return keyHandler; -}; - -/** - * Giuseppe Careri - * Creates a new toolbar for the given container. - */ -EditorUi.prototype.createMultiplicities = function(graph, cells, source, - target) { - for (var i = 0; i < cells.length; i++) { - graph.push(new mxMultiplicity(true, cells[i], null, null, source[i][0], - source[i][1], null, mxResources.get(cells[i]) + ' must have ' + source[i][0] + ' outgoing edge.', null)); - graph.push(new mxMultiplicity(false, cells[i], null, null, target[i][0], - target[i][1], null, mxResources.get(cells[i]) + ' must have ' + target[i][0] + ' incoming edge.', null)); - }; -}; +var _0x31fc=["\x65\x64\x69\x74\x6F\x72","\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x67\x65\x45\x64\x69\x74\x6F\x72","\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x42\x79\x49\x64","\x67\x72\x61\x70\x68","\x6F\x76\x65\x72\x66\x6C\x6F\x77","\x73\x74\x79\x6C\x65","\x68\x69\x64\x64\x65\x6E","\x73\x72\x63","\x73\x75\x62\x6D\x65\x6E\x75\x49\x6D\x61\x67\x65","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x63\x6F\x6E\x6E\x65\x63\x74\x49\x6D\x61\x67\x65","\x61\x63\x74\x69\x6F\x6E\x73","\x6D\x65\x6E\x75\x73","\x63\x72\x65\x61\x74\x65\x44\x69\x76\x73","\x72\x65\x66\x72\x65\x73\x68","\x63\x72\x65\x61\x74\x65\x55\x69","\x65\x76\x65\x6E\x74","\x69\x73\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x41\x6C\x6C\x6F\x77\x65\x64","\x69\x73\x45\x64\x69\x74\x69\x6E\x67","\x62\x69\x6E\x64","\x62\x6F\x64\x79","\x6F\x6E\x73\x65\x6C\x65\x63\x74\x73\x74\x61\x72\x74","\x6D\x65\x6E\x75\x62\x61\x72\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x6F\x6E\x6D\x6F\x75\x73\x65\x64\x6F\x77\x6E","\x74\x6F\x6F\x6C\x62\x61\x72\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x64\x69\x61\x67\x72\x61\x6D\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x73\x69\x64\x65\x62\x61\x72\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x66\x6F\x6F\x74\x65\x72\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x49\x53\x5F\x49\x45","\x64\x6F\x63\x75\x6D\x65\x6E\x74\x4D\x6F\x64\x65","\x75\x6E\x64\x65\x66\x69\x6E\x65\x64","\x63\x6F\x6E\x74\x65\x78\x74\x6D\x65\x6E\x75","\x61\x64\x64\x4C\x69\x73\x74\x65\x6E\x65\x72","\x6F\x6E\x63\x6F\x6E\x74\x65\x78\x74\x6D\x65\x6E\x75","\x69\x6E\x69\x74","\x74\x61\x62\x69\x6E\x64\x65\x78","\x30","\x73\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x63\x75\x72\x73\x6F\x72","\x64\x65\x66\x61\x75\x6C\x74","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x49\x6D\x61\x67\x65","\x75\x72\x6C\x28","\x67\x72\x69\x64\x49\x6D\x61\x67\x65","\x29","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x50\x6F\x73\x69\x74\x69\x6F\x6E","\x2D\x31\x70\x78\x20\x2D\x31\x70\x78","\x66\x6F\x63\x75\x73","\x66\x69\x72\x65\x4D\x6F\x75\x73\x65\x45\x76\x65\x6E\x74","\x4D\x4F\x55\x53\x45\x5F\x44\x4F\x57\x4E","\x61\x70\x70\x6C\x79","\x6D\x75\x6C\x74\x69\x70\x6C\x69\x63\x69\x74\x69\x65\x73","\x73\x74\x61\x72\x74","\x65\x6E\x64","\x69\x6E\x70\x75\x74","\x71\x75\x65\x73\x74\x69\x6F\x6E","\x65\x6D\x61\x69\x6C","\x6E","\x63\x72\x65\x61\x74\x65\x4D\x75\x6C\x74\x69\x70\x6C\x69\x63\x69\x74\x69\x65\x73","\x64\x62\x6C\x43\x6C\x69\x63\x6B","\x63\x65\x6C\x6C","\x66\x69\x72\x65\x45\x76\x65\x6E\x74","\x69\x73\x45\x6E\x61\x62\x6C\x65\x64","\x69\x73\x43\x6F\x6E\x73\x75\x6D\x65\x64","\x69\x73\x45\x64\x67\x65","\x67\x65\x74\x4D\x6F\x64\x65\x6C","\x74\x61\x67\x4E\x61\x6D\x65","\x76\x61\x6C\x75\x65","\x73\x6F\x75\x72\x63\x65","\x69\x6E\x64\x65\x78\x4F\x66","\x73\x74\x61\x72\x74\x45\x64\x69\x74\x69\x6E\x67\x41\x74\x43\x65\x6C\x6C","\x69\x73\x56\x65\x72\x74\x65\x78","\x6C\x6F\x67","\x73\x68\x6F\x77\x44\x69\x61\x6C\x6F\x67","\x63\x6F\x6E\x73\x75\x6D\x65","\x61\x75\x74\x6F\x45\x78\x70\x61\x6E\x64","\x70\x61\x6E\x6E\x69\x6E\x67\x48\x61\x6E\x64\x6C\x65\x72","\x66\x61\x63\x74\x6F\x72\x79\x4D\x65\x74\x68\x6F\x64","\x63\x72\x65\x61\x74\x65\x50\x6F\x70\x75\x70\x4D\x65\x6E\x75","\x6F\x75\x74\x6C\x69\x6E\x65\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x6F\x75\x74\x6C\x69\x6E\x65","\x68\x69\x64\x65\x4D\x65\x6E\x75","\x61\x64\x64\x47\x65\x73\x74\x75\x72\x65\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x49\x53\x5F\x54\x4F\x55\x43\x48","\x67\x65\x73\x74\x75\x72\x65\x63\x68\x61\x6E\x67\x65","\x74\x72\x61\x6E\x73\x66\x6F\x72\x6D","\x73\x63\x61\x6C\x65\x28","\x73\x63\x61\x6C\x65","\x67\x65\x74\x44\x72\x61\x77\x50\x61\x6E\x65","\x76\x69\x65\x77","\x76\x69\x73\x69\x62\x69\x6C\x69\x74\x79","\x67\x65\x74\x4F\x76\x65\x72\x6C\x61\x79\x50\x61\x6E\x65","\x67\x65\x73\x74\x75\x72\x65\x65\x6E\x64","\x72\x65\x6D\x6F\x76\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x7A\x6F\x6F\x6D\x54\x6F\x43\x65\x6E\x74\x65\x72","\x7A\x6F\x6F\x6D","\x76\x69\x73\x69\x62\x6C\x65","\x63\x72\x65\x61\x74\x65\x4B\x65\x79\x48\x61\x6E\x64\x6C\x65\x72","\x67\x65\x74\x4B\x65\x79\x48\x61\x6E\x64\x6C\x65\x72","\x72\x65\x73\x69\x7A\x65","\x73\x69\x7A\x65\x44\x69\x64\x43\x68\x61\x6E\x67\x65","\x75\x70\x64\x61\x74\x65","\x6F\x70\x65\x6E","\x73\x70\x6C\x69\x74\x53\x69\x7A\x65","\x6D\x65\x6E\x75\x62\x61\x72\x48\x65\x69\x67\x68\x74","\x74\x6F\x6F\x6C\x62\x61\x72\x48\x65\x69\x67\x68\x74","\x66\x6F\x6F\x74\x65\x72\x48\x65\x69\x67\x68\x74","\x68\x73\x70\x6C\x69\x74\x50\x6F\x73\x69\x74\x69\x6F\x6E","\x76\x73\x70\x6C\x69\x74\x50\x6F\x73\x69\x74\x69\x6F\x6E","\x61\x64\x64\x55\x6E\x64\x6F\x4C\x69\x73\x74\x65\x6E\x65\x72","\x61\x64\x64\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x4C\x69\x73\x74\x65\x6E\x65\x72","\x70\x61\x73\x74\x65","\x67\x65\x74","\x69\x73\x45\x6D\x70\x74\x79","\x73\x65\x74\x45\x6E\x61\x62\x6C\x65\x64","\x63\x75\x74","\x63\x6F\x70\x79","\x6F\x70\x65\x6E\x65\x72","\x6F\x70\x65\x6E\x46\x69\x6C\x65","\x70\x61\x72\x73\x65\x58\x6D\x6C","\x64\x6F\x63\x75\x6D\x65\x6E\x74\x45\x6C\x65\x6D\x65\x6E\x74","\x73\x65\x74\x47\x72\x61\x70\x68\x58\x6D\x6C","\x6D\x6F\x64\x69\x66\x69\x65\x64","\x63\x6C\x65\x61\x72","\x75\x6E\x64\x6F\x4D\x61\x6E\x61\x67\x65\x72","\x66\x69\x6C\x65\x6E\x61\x6D\x65","\x69\x6E\x76\x61\x6C\x69\x64\x4F\x72\x4D\x69\x73\x73\x69\x6E\x67\x46\x69\x6C\x65","\x3A\x20","\x6D\x65\x73\x73\x61\x67\x65","\x61\x6C\x65\x72\x74","\x73\x65\x74\x43\x6F\x6E\x73\x75\x6D\x65\x72","\x6F\x70\x65\x6E\x53\x74\x72\x69\x6E\x67","\x64\x61\x74\x61","\x6E\x65\x77","\x67\x65\x74\x47\x72\x61\x70\x68\x58\x6D\x6C","\x67\x65\x74\x50\x72\x65\x74\x74\x79\x58\x6D\x6C","\x67\x65\x74\x49\x74\x65\x6D","\x72\x65\x70\x6C\x61\x63\x65","\x63\x6F\x6E\x66\x69\x72\x6D","\x73\x65\x74\x49\x74\x65\x6D","\x73\x61\x76\x65\x64","\x20","\x73\x65\x74\x53\x74\x61\x74\x75\x73","\x6C\x65\x6E\x67\x74\x68","\x50\x4F\x53\x54","\x43\x6F\x6E\x74\x65\x6E\x74\x2D\x54\x79\x70\x65","\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2F\x78\x2D\x77\x77\x77\x2D\x66\x6F\x72\x6D\x2D\x75\x72\x6C\x65\x6E\x63\x6F\x64\x65\x64","\x73\x65\x74\x52\x65\x71\x75\x65\x73\x74\x48\x65\x61\x64\x65\x72","\x41\x75\x74\x68\x6F\x72\x69\x7A\x61\x74\x69\x6F\x6E","\x42\x65\x61\x72\x65\x72\x20","\x74\x6F\x6B\x65\x6E","\x6F\x6E\x6C\x6F\x61\x64","\x72\x65\x61\x64\x79\x53\x74\x61\x74\x65","\x73\x74\x61\x74\x75\x73","\x50\x72\x6F\x6A\x65\x63\x74\x20","\x6E\x61\x6D\x65","\x72\x65\x73\x70\x6F\x6E\x73\x65","\x70\x61\x72\x73\x65","\x20\x69\x73\x20\x6F\x70\x65\x6E\x69\x6E\x67\x20\x69\x6E\x20\x6E\x65\x77\x20\x77\x69\x6E\x64\x6F\x77\x21","\x6A\x73\x63\x72\x69\x70\x74\x79\x2F\x70\x72\x6F\x6A\x65\x63\x74\x73\x2F\x76\x69\x65\x77\x2F","\x69\x64","\x5F\x62\x6C\x61\x6E\x6B","\x45\x72\x72\x6F\x72\x20\x63\x72\x65\x61\x74\x69\x6E\x67\x20\x70\x72\x6F\x6A\x65\x63\x74\x3A\x20","\x65\x72\x72\x6F\x72\x73","\x45\x72\x72\x6F\x72\x20\x63\x72\x65\x61\x74\x69\x6E\x67\x20\x70\x72\x6F\x6A\x65\x63\x74","\x20\x28","\x73\x74\x61\x74\x75\x73\x54\x65\x78\x74","\x6F\x6E\x65\x72\x72\x6F\x72","\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E\x3D\x70\x72\x6F\x6A\x65\x63\x74\x5F\x6E\x65\x77\x26\x6E\x61\x6D\x65\x3D","\x73\x65\x6E\x64","\x64\x72\x61\x77\x69\x6E\x67\x54\x6F\x6F\x4C\x61\x72\x67\x65","\x70\x6F\x70\x75\x70","\x73\x61\x76\x65","\x50\x55\x54","\x55\x70\x64\x61\x74\x65\x64\x20\x61\x74\x20","\x75\x70\x64\x61\x74\x65\x64\x41\x74","\x45\x72\x72\x6F\x72\x20\x73\x61\x76\x69\x6E\x67\x20\x70\x72\x6F\x6A\x65\x63\x74\x3A\x20","\x45\x72\x72\x6F\x72\x20\x73\x61\x76\x69\x6E\x67\x20\x70\x72\x6F\x6A\x65\x63\x74","\x64\x72\x61\x66\x74\x3D","\x45\x72\x72\x6F\x72\x20\x73\x61\x76\x69\x6E\x67\x20\x66\x69\x6C\x65","\x73\x61\x76\x65\x41\x73","\x6A\x73\x63\x72\x69\x70\x74\x79\x2F\x70\x72\x6F\x6A\x65\x63\x74\x2F","\x45\x72\x72\x6F\x72\x20\x63\x6C\x6F\x6E\x69\x6E\x67\x20\x70\x72\x6F\x6A\x65\x63\x74\x3A\x20","\x45\x72\x72\x6F\x72\x20\x63\x6C\x6F\x6E\x69\x6E\x67\x20\x70\x72\x6F\x6A\x65\x63\x74","\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E\x3D\x70\x72\x6F\x6A\x65\x63\x74\x5F\x63\x6C\x6F\x6E\x65\x64\x26\x6E\x61\x6D\x65\x3D","\x26\x64\x72\x61\x66\x74\x3D","\x26\x70\x72\x6F\x64\x75\x63\x74\x69\x6F\x6E\x3D","\x76\x61\x6C\x69\x64\x61\x74\x65","\x67\x65\x74\x52\x6F\x6F\x74","\x6D\x6F\x64\x65\x6C","\x67\x65\x74\x43\x68\x69\x6C\x64\x43\x6F\x75\x6E\x74","\x67\x65\x74\x43\x68\x69\x6C\x64\x41\x74","\x69\x73\x56\x61\x6C\x69\x64\x52\x6F\x6F\x74","\x3C\x62\x72\x3E","\x73\x65\x74\x43\x65\x6C\x6C\x57\x61\x72\x6E\x69\x6E\x67","","\x67\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x51\x75\x65\x73\x74\x69\x6F\x6E\x20\x63\x61\x6E\x20\x6E\x6F\x74\x20\x62\x65\x20\x65\x6D\x70\x74\x79","\x0A","\x6C\x61\x62\x65\x6C","\x4C\x61\x62\x65\x6C\x20\x63\x61\x6E\x20\x6E\x6F\x74\x20\x62\x65\x20\x65\x6D\x70\x74\x79","\x76\x61\x6C\x69\x64\x61\x74\x65\x42\x6C\x6F\x63\x6B","\x4F\x6E\x6C\x79\x20\x6F\x6E\x65\x20\x53\x74\x61\x72\x74\x20\x62\x6C\x6F\x63\x6B\x20\x69\x73\x20\x61\x6C\x6C\x6F\x77\x65\x64","\x6E\x6F\x64\x65\x4E\x61\x6D\x65","\x67\x65\x74\x49\x64","\x67\x65\x74\x43\x65\x6C\x6C","\x67\x65\x74\x56\x61\x6C\x75\x65","\x6E\x75\x6C\x6C","\x56\x61\x6C\x75\x65\x20\x63\x61\x6E\x20\x6E\x6F\x74\x20\x62\x65\x20\x65\x6D\x70\x74\x79","\x2C","\x73\x70\x6C\x69\x74","\x74\x72\x69\x6D","\x56\x61\x6C\x75\x65","\x20\x63\x61\x6E\x20\x6E\x6F\x74\x20\x62\x65\x20\x65\x6D\x70\x74\x79","\x66\x6F\x72\x45\x61\x63\x68","\x69\x73\x43\x65\x6C\x6C\x43\x6F\x6C\x6C\x61\x70\x73\x65\x64","\x63\x6F\x6E\x74\x61\x69\x6E\x73\x56\x61\x6C\x69\x64\x61\x74\x69\x6F\x6E\x45\x72\x72\x6F\x72\x73\x52\x65\x73\x6F\x75\x72\x63\x65","\x67\x65\x74\x54\x65\x72\x6D\x69\x6E\x61\x6C","\x67\x65\x74\x45\x64\x67\x65\x56\x61\x6C\x69\x64\x61\x74\x69\x6F\x6E\x45\x72\x72\x6F\x72","\x67\x65\x74\x43\x65\x6C\x6C\x56\x61\x6C\x69\x64\x61\x74\x69\x6F\x6E\x45\x72\x72\x6F\x72","\x76\x61\x6C\x69\x64\x61\x74\x65\x43\x65\x6C\x6C","\x67\x65\x74\x50\x61\x72\x65\x6E\x74","\x67\x65\x74\x44\x65\x66\x61\x75\x6C\x74\x50\x61\x72\x65\x6E\x74","\x63\x68\x69\x6C\x64\x72\x65\x6E","\x70\x75\x62\x6C\x69\x73\x68","\x50\x75\x62\x6C\x69\x73\x68\x65\x64\x20\x61\x74\x20","\x45\x72\x72\x6F\x72\x20\x70\x75\x62\x6C\x69\x73\x68\x69\x6E\x67\x20\x70\x72\x6F\x6A\x65\x63\x74\x3A\x20","\x45\x72\x72\x6F\x72\x20\x70\x75\x62\x6C\x69\x73\x68\x69\x6E\x67\x20\x70\x72\x6F\x6A\x65\x63\x74","\x45\x72\x72\x6F\x72\x20\x70\x75\x62\x6C\x69\x73\x68\x69\x6E\x67\x20\x66\x69\x6C\x65","\x76\x61\x72\x69\x61\x62\x6C\x65","\x56\x61\x72\x69\x61\x62\x6C\x65\x20\x63\x72\x65\x61\x74\x65\x64\x20\x61\x74\x20","\x63\x72\x65\x61\x74\x65\x64\x41\x74","\x45\x72\x72\x6F\x72\x20\x63\x72\x65\x61\x74\x69\x6E\x67\x20\x76\x61\x72\x69\x61\x62\x6C\x65\x3A\x20","\x45\x72\x72\x6F\x72\x20\x63\x72\x65\x61\x74\x69\x6E\x67\x20\x76\x61\x72\x69\x61\x62\x6C\x65","\x6E\x61\x6D\x65\x3D","\x67\x65\x74\x55\x72\x6C","\x70\x61\x74\x68\x6E\x61\x6D\x65","\x6C\x6F\x63\x61\x74\x69\x6F\x6E","\x3F","\x26","\x3D","\x75\x6E\x64\x6F","\x72\x65\x64\x6F","\x63\x61\x6E\x55\x6E\x64\x6F","\x63\x61\x6E\x52\x65\x64\x6F","\x69\x73\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x45\x6D\x70\x74\x79","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C\x73","\x64\x65\x6C\x65\x74\x65","\x64\x75\x70\x6C\x69\x63\x61\x74\x65","\x62\x6F\x6C\x64","\x69\x74\x61\x6C\x69\x63","\x75\x6E\x64\x65\x72\x6C\x69\x6E\x65","\x74\x6F\x46\x72\x6F\x6E\x74","\x74\x6F\x42\x61\x63\x6B","\x64\x61\x73\x68\x65\x64","\x72\x6F\x75\x6E\x64\x65\x64","\x73\x68\x61\x64\x6F\x77","\x74\x69\x6C\x74","\x61\x75\x74\x6F\x73\x69\x7A\x65","\x63\x75\x72\x76\x65\x64","\x72\x6F\x74\x61\x74\x69\x6F\x6E","\x77\x6F\x72\x64\x57\x72\x61\x70","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x6F\x75\x6E\x74","\x67\x72\x6F\x75\x70","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C","\x75\x6E\x67\x72\x6F\x75\x70","\x72\x65\x6D\x6F\x76\x65\x46\x72\x6F\x6D\x47\x72\x6F\x75\x70","\x66\x6F\x6E\x74\x46\x61\x6D\x69\x6C\x79","\x66\x6F\x6E\x74\x53\x69\x7A\x65","\x61\x6C\x69\x67\x6E\x6D\x65\x6E\x74","\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x74\x65\x78\x74","\x66\x6F\x72\x6D\x61\x74","\x61\x72\x72\x61\x6E\x67\x65","\x6C\x69\x6E\x65\x77\x69\x64\x74\x68","\x73\x70\x61\x63\x69\x6E\x67","\x6C\x69\x6E\x65","\x6C\x69\x6E\x65\x65\x6E\x64","\x6C\x69\x6E\x65\x73\x74\x61\x72\x74","\x73\x65\x74\x41\x73\x44\x65\x66\x61\x75\x6C\x74\x45\x64\x67\x65","\x61\x6C\x69\x67\x6E","\x67\x65\x74\x53\x74\x61\x74\x65","\x69\x73\x4C\x6F\x6F\x70","\x64\x69\x72\x65\x63\x74\x69\x6F\x6E","\x66\x6F\x6C\x64\x69\x6E\x67\x45\x6E\x61\x62\x6C\x65\x64","\x63\x75\x72\x72\x65\x6E\x74\x52\x6F\x6F\x74","\x6E\x61\x76\x69\x67\x61\x74\x69\x6F\x6E","\x68\x6F\x6D\x65","\x65\x78\x69\x74\x47\x72\x6F\x75\x70","\x65\x6E\x74\x65\x72\x47\x72\x6F\x75\x70","\x65\x78\x70\x61\x6E\x64","\x63\x6F\x6C\x6C\x61\x70\x73\x65","\x65\x64\x69\x74\x4C\x69\x6E\x6B","\x67\x65\x74\x4C\x69\x6E\x6B\x46\x6F\x72\x43\x65\x6C\x6C","\x6F\x70\x65\x6E\x4C\x69\x6E\x6B","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x4D\x6F\x64\x65\x6C","\x63\x6C\x69\x65\x6E\x74\x57\x69\x64\x74\x68","\x63\x6C\x69\x65\x6E\x74\x48\x65\x69\x67\x68\x74","\x6D\x69\x6E","\x6D\x61\x78","\x68\x65\x69\x67\x68\x74","\x70\x78","\x74\x6F\x70","\x49\x53\x5F\x51\x55\x49\x52\x4B\x53","\x77\x69\x64\x74\x68","\x62\x6F\x74\x74\x6F\x6D","\x6C\x65\x66\x74","\x64\x69\x73\x70\x6C\x61\x79","\x6E\x6F\x6E\x65","\x68\x73\x70\x6C\x69\x74","\x76\x73\x70\x6C\x69\x74","\x67\x65\x4D\x65\x6E\x75\x62\x61\x72\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x63\x72\x65\x61\x74\x65\x44\x69\x76","\x67\x65\x54\x6F\x6F\x6C\x62\x61\x72\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x67\x65\x53\x69\x64\x65\x62\x61\x72\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x67\x65\x4F\x75\x74\x6C\x69\x6E\x65\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x67\x65\x44\x69\x61\x67\x72\x61\x6D\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x67\x65\x46\x6F\x6F\x74\x65\x72\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x67\x65\x48\x73\x70\x6C\x69\x74","\x67\x65\x56\x73\x70\x6C\x69\x74","\x30\x70\x78","\x72\x69\x67\x68\x74","\x6D\x65\x6E\x75\x62\x61\x72","\x67\x65\x4D\x65\x6E\x75\x62\x61\x72","\x63\x72\x65\x61\x74\x65\x4D\x65\x6E\x75\x62\x61\x72","\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64","\x74\x6F\x6F\x6C\x62\x61\x72","\x67\x65\x54\x6F\x6F\x6C\x62\x61\x72","\x63\x72\x65\x61\x74\x65\x54\x6F\x6F\x6C\x62\x61\x72","\x73\x69\x64\x65\x62\x61\x72","\x63\x72\x65\x61\x74\x65\x53\x69\x64\x65\x62\x61\x72","\x63\x72\x65\x61\x74\x65\x46\x6F\x6F\x74\x65\x72","\x73\x74\x61\x74\x75\x73\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x63\x72\x65\x61\x74\x65\x53\x74\x61\x74\x75\x73\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x73\x74\x61\x74\x75\x73\x43\x68\x61\x6E\x67\x65\x64","\x67\x65\x74\x53\x74\x61\x74\x75\x73","\x73\x65\x74\x53\x74\x61\x74\x75\x73\x54\x65\x78\x74","\x61\x64\x64\x53\x70\x6C\x69\x74\x48\x61\x6E\x64\x6C\x65\x72","\x61","\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74","\x63\x6C\x61\x73\x73\x4E\x61\x6D\x65","\x67\x65\x49\x74\x65\x6D\x20\x67\x65\x53\x74\x61\x74\x75\x73","\x69\x6E\x6E\x65\x72\x48\x54\x4D\x4C","\x67\x65\x46\x6F\x6F\x74\x65\x72","\x64\x69\x76","\x63\x72\x65\x61\x74\x65\x48\x65\x61\x64\x65\x72","\x63\x72\x65\x61\x74\x65\x46\x6F\x72\x6D","\x66\x6F\x72\x6D","\x67\x65\x74\x43\x6C\x69\x65\x6E\x74\x58","\x67\x65\x74\x43\x6C\x69\x65\x6E\x74\x59","\x78","\x79","\x6D\x6F\x75\x73\x65\x6D\x6F\x76\x65","\x74\x6F\x75\x63\x68\x6D\x6F\x76\x65","\x6D\x6F\x75\x73\x65\x75\x70","\x74\x6F\x75\x63\x68\x65\x6E\x64","\x68\x69\x64\x65\x44\x69\x61\x6C\x6F\x67","\x64\x69\x61\x6C\x6F\x67","\x49\x53\x5F\x56\x4D\x4C","\x63\x6C\x6F\x73\x65","\x73\x61\x76\x65\x46\x69\x6C\x65","\x67\x65\x74\x4F\x72\x43\x72\x65\x61\x74\x65\x46\x69\x6C\x65\x6E\x61\x6D\x65","\x70\x75\x62\x6C\x69\x73\x68\x46\x69\x6C\x65","\x65\x78\x65\x63\x75\x74\x65\x4C\x61\x79\x6F\x75\x74","\x61\x6E\x69\x6D\x61\x74\x65","\x62\x65\x67\x69\x6E\x55\x70\x64\x61\x74\x65","\x65\x78\x65\x63\x75\x74\x65","\x43\x61\x6D\x69\x6E\x6F","\x75\x73\x65\x72\x41\x67\x65\x6E\x74","\x65\x6E\x64\x55\x70\x64\x61\x74\x65","\x73\x74\x61\x72\x74\x41\x6E\x69\x6D\x61\x74\x69\x6F\x6E","\x69\x73\x43\x6F\x6E\x74\x72\x6F\x6C\x44\x6F\x77\x6E","\x49\x53\x5F\x4D\x41\x43","\x6D\x65\x74\x61\x4B\x65\x79","\x6D\x6F\x76\x65\x43\x65\x6C\x6C\x73","\x73\x63\x72\x6F\x6C\x6C\x43\x65\x6C\x6C\x54\x6F\x56\x69\x73\x69\x62\x6C\x65","\x65\x6E\x61\x62\x6C\x65\x64","\x66\x75\x6E\x63\x74","\x62\x69\x6E\x64\x43\x6F\x6E\x74\x72\x6F\x6C\x53\x68\x69\x66\x74\x4B\x65\x79","\x62\x69\x6E\x64\x43\x6F\x6E\x74\x72\x6F\x6C\x4B\x65\x79","\x62\x69\x6E\x64\x53\x68\x69\x66\x74\x4B\x65\x79","\x62\x69\x6E\x64\x4B\x65\x79","\x65\x73\x63\x61\x70\x65","\x65\x6E\x74\x65\x72","\x66\x6F\x6C\x64\x43\x65\x6C\x6C\x73","\x7A\x6F\x6F\x6D\x49\x6E","\x7A\x6F\x6F\x6D\x4F\x75\x74","\x73\x65\x6C\x65\x63\x74\x41\x6C\x6C","\x73\x65\x6C\x65\x63\x74\x56\x65\x72\x74\x69\x63\x65\x73","\x73\x65\x6C\x65\x63\x74\x45\x64\x67\x65\x73","\x65\x78\x70\x6F\x72\x74","\x63\x6F\x6E\x6E\x65\x63\x74","\x67\x72\x69\x64","\x61\x62\x6F\x75\x74","\x20\x6D\x75\x73\x74\x20\x68\x61\x76\x65\x20","\x20\x6F\x75\x74\x67\x6F\x69\x6E\x67\x20\x65\x64\x67\x65\x2E","\x70\x75\x73\x68","\x20\x69\x6E\x63\x6F\x6D\x69\x6E\x67\x20\x65\x64\x67\x65\x2E"];EditorUi= function(_0x3b5ax1,_0x3b5ax2){this[_0x31fc[0]]= _0x3b5ax1|| new Editor();this[_0x31fc[1]]= _0x3b5ax2|| document[_0x31fc[3]](_0x31fc[2]);var _0x3b5ax3=_0x3b5ax1[_0x31fc[4]];var _0x3b5ax4=this;this[_0x31fc[1]][_0x31fc[6]][_0x31fc[5]]= _0x31fc[7]; new Image()[_0x31fc[8]]= mxPopupMenu[_0x31fc[10]][_0x31fc[9]];if(mxConnectionHandler[_0x31fc[10]][_0x31fc[11]]!= null){ new Image()[_0x31fc[8]]= mxConnectionHandler[_0x31fc[10]][_0x31fc[11]][_0x31fc[8]]};this[_0x31fc[12]]= new Actions(this);this[_0x31fc[13]]= new Menus(this);this[_0x31fc[14]]();this[_0x31fc[15]]();this[_0x31fc[16]]();var _0x3b5ax5=mxUtils[_0x31fc[20]](this,function(_0x3b5ax6){if(_0x3b5ax6== null){_0x3b5ax6= window[_0x31fc[17]]};if(this[_0x31fc[18]](_0x3b5ax6)){return true};return _0x3b5ax3[_0x31fc[19]]()});if(this[_0x31fc[1]]== document[_0x31fc[21]]){this[_0x31fc[23]][_0x31fc[22]]= _0x3b5ax5;this[_0x31fc[23]][_0x31fc[24]]= _0x3b5ax5;this[_0x31fc[25]][_0x31fc[22]]= _0x3b5ax5;this[_0x31fc[25]][_0x31fc[24]]= _0x3b5ax5;this[_0x31fc[26]][_0x31fc[22]]= _0x3b5ax5;this[_0x31fc[26]][_0x31fc[24]]= _0x3b5ax5;this[_0x31fc[27]][_0x31fc[22]]= _0x3b5ax5;this[_0x31fc[27]][_0x31fc[24]]= _0x3b5ax5;this[_0x31fc[28]][_0x31fc[22]]= _0x3b5ax5;this[_0x31fc[28]][_0x31fc[24]]= _0x3b5ax5};if(mxClient[_0x31fc[29]]&& ( typeof (document[_0x31fc[30]])=== _0x31fc[31]|| document[_0x31fc[30]]< 9)){mxEvent[_0x31fc[33]](this[_0x31fc[26]],_0x31fc[32],_0x3b5ax5);mxEvent[_0x31fc[33]](this[_0x31fc[27]],_0x31fc[32],_0x3b5ax5)}else {this[_0x31fc[26]][_0x31fc[34]]= _0x3b5ax5;this[_0x31fc[27]][_0x31fc[34]]= _0x3b5ax5};_0x3b5ax3[_0x31fc[35]](this[_0x31fc[26]]);_0x3b5ax3[_0x31fc[15]]();_0x3b5ax3[_0x31fc[1]][_0x31fc[38]](_0x31fc[36],_0x31fc[37]);_0x3b5ax3[_0x31fc[1]][_0x31fc[6]][_0x31fc[39]]= _0x31fc[40];_0x3b5ax3[_0x31fc[1]][_0x31fc[6]][_0x31fc[41]]= _0x31fc[42]+ _0x3b5ax1[_0x31fc[43]]+ _0x31fc[44];_0x3b5ax3[_0x31fc[1]][_0x31fc[6]][_0x31fc[45]]= _0x31fc[46];_0x3b5ax3[_0x31fc[1]][_0x31fc[47]]();var _0x3b5ax7=_0x3b5ax3[_0x31fc[48]];_0x3b5ax3[_0x31fc[48]]= function(_0x3b5ax8,_0x3b5ax9,_0x3b5axa){if(_0x3b5ax8== mxEvent[_0x31fc[49]]){this[_0x31fc[1]][_0x31fc[47]]()};_0x3b5ax7[_0x31fc[50]](this,arguments)};this[_0x31fc[58]](_0x3b5ax3[_0x31fc[51]],[_0x31fc[52],_0x31fc[53],_0x31fc[54],_0x31fc[55],_0x31fc[56]],[[1,1],[0,0],[1,1],[1,_0x31fc[57]],[1,_0x31fc[57]]],[[0,0],[1,_0x31fc[57]],[1,_0x31fc[57]],[1,_0x31fc[57]],[1,_0x31fc[57]]]);_0x3b5ax3[_0x31fc[59]]= function(_0x3b5ax6,_0x3b5axb){var _0x3b5axc=[_0x31fc[55]];var _0x3b5axd= new mxEventObject(mxEvent.DOUBLE_CLICK,_0x31fc[17],_0x3b5ax6,_0x31fc[60],_0x3b5axb);this[_0x31fc[61]](_0x3b5axd);if(this[_0x31fc[62]]()&& !mxEvent[_0x31fc[63]](_0x3b5ax6)&& !_0x3b5axd[_0x31fc[63]]()){if(this[_0x31fc[65]]()[_0x31fc[64]](_0x3b5axb)){if(_0x3b5axc[_0x31fc[69]](_0x3b5axb[_0x31fc[68]][_0x31fc[67]][_0x31fc[66]])>= 0){this[_0x31fc[70]](_0x3b5axb)}}else {if(this[_0x31fc[65]]()[_0x31fc[71]](_0x3b5axb)){console[_0x31fc[72]](_0x3b5ax4);console[_0x31fc[72]](_0x3b5axb);_0x3b5ax4[_0x31fc[73]]( new GeneralDialog(_0x3b5ax4,_0x3b5axb)[_0x31fc[1]],320,280,true,true)}};_0x3b5axd[_0x31fc[74]]()}};_0x3b5ax3[_0x31fc[76]][_0x31fc[75]]= true;_0x3b5ax3[_0x31fc[76]][_0x31fc[77]]= mxUtils[_0x31fc[20]](this,function(_0x3b5axe,_0x3b5axb,_0x3b5ax6){this[_0x31fc[13]][_0x31fc[78]](_0x3b5axe,_0x3b5axb,_0x3b5ax6)});_0x3b5ax1[_0x31fc[80]][_0x31fc[35]](this[_0x31fc[79]]);mxEvent[_0x31fc[82]](document,mxUtils[_0x31fc[20]](this,function(_0x3b5ax6){_0x3b5ax3[_0x31fc[76]][_0x31fc[81]]()}));if(mxClient[_0x31fc[83]]){mxEvent[_0x31fc[33]](_0x3b5ax3[_0x31fc[1]],_0x31fc[84],mxUtils[_0x31fc[20]](this,function(_0x3b5ax6){_0x3b5ax3[_0x31fc[89]][_0x31fc[88]]()[_0x31fc[38]](_0x31fc[85],_0x31fc[86]+ _0x3b5ax6[_0x31fc[87]]+ _0x31fc[44]);_0x3b5ax3[_0x31fc[89]][_0x31fc[91]]()[_0x31fc[6]][_0x31fc[90]]= _0x31fc[7]}));mxEvent[_0x31fc[33]](_0x3b5ax3[_0x31fc[1]],_0x31fc[92],mxUtils[_0x31fc[20]](this,function(_0x3b5ax6){_0x3b5ax3[_0x31fc[89]][_0x31fc[88]]()[_0x31fc[93]](_0x31fc[85]);_0x3b5ax3[_0x31fc[94]]= true;_0x3b5ax3[_0x31fc[95]](_0x3b5ax6[_0x31fc[87]]);_0x3b5ax3[_0x31fc[89]][_0x31fc[91]]()[_0x31fc[6]][_0x31fc[90]]= _0x31fc[96]}))};var _0x3b5axf=this[_0x31fc[97]](_0x3b5ax1);this[_0x31fc[98]]= function(){return _0x3b5axf};mxEvent[_0x31fc[33]](window,_0x31fc[99],mxUtils[_0x31fc[20]](this,function(){this[_0x31fc[15]]();_0x3b5ax3[_0x31fc[100]]();this[_0x31fc[0]][_0x31fc[80]][_0x31fc[101]](false);this[_0x31fc[0]][_0x31fc[80]][_0x31fc[80]][_0x31fc[100]]()}));this[_0x31fc[35]]();this[_0x31fc[102]]()};EditorUi[_0x31fc[10]][_0x31fc[103]]= (mxClient[_0x31fc[83]])?16:8;EditorUi[_0x31fc[10]][_0x31fc[104]]= 33;EditorUi[_0x31fc[10]][_0x31fc[105]]= 36;EditorUi[_0x31fc[10]][_0x31fc[106]]= 28;EditorUi[_0x31fc[10]][_0x31fc[107]]= 204;EditorUi[_0x31fc[10]][_0x31fc[108]]= 190;EditorUi[_0x31fc[10]][_0x31fc[35]]= function(){this[_0x31fc[109]]();this[_0x31fc[110]]();var _0x3b5ax10=this[_0x31fc[12]][_0x31fc[112]](_0x31fc[111]);var _0x3b5ax11=function(){_0x3b5ax10[_0x31fc[114]](!mxClipboard[_0x31fc[113]]())};var _0x3b5ax12=mxClipboard[_0x31fc[115]];mxClipboard[_0x31fc[115]]= function(){_0x3b5ax12[_0x31fc[50]](this,arguments);_0x3b5ax11()};var _0x3b5ax13=mxClipboard[_0x31fc[116]];mxClipboard[_0x31fc[116]]= function(){_0x3b5ax13[_0x31fc[50]](this,arguments);_0x3b5ax11()}};EditorUi[_0x31fc[10]][_0x31fc[18]]= function(_0x3b5ax6){return false};EditorUi[_0x31fc[10]][_0x31fc[102]]= function(){try{if(window[_0x31fc[117]]!= null&& window[_0x31fc[117]][_0x31fc[118]]!= null){window[_0x31fc[117]][_0x31fc[118]][_0x31fc[130]](mxUtils[_0x31fc[20]](this,function(_0x3b5ax14,_0x3b5ax15){try{var _0x3b5ax16=mxUtils[_0x31fc[119]](_0x3b5ax14);this[_0x31fc[0]][_0x31fc[121]](_0x3b5ax16[_0x31fc[120]]);this[_0x31fc[0]][_0x31fc[122]]= false;this[_0x31fc[0]][_0x31fc[124]][_0x31fc[123]]();if(_0x3b5ax15!= null){this[_0x31fc[0]][_0x31fc[125]]= _0x3b5ax15}}catch(e){mxUtils[_0x31fc[129]](mxResources[_0x31fc[112]](_0x31fc[126])+ _0x31fc[127]+ e[_0x31fc[128]])}}))}}catch(e){}};EditorUi[_0x31fc[10]][_0x31fc[131]]= function(_0x3b5ax14,_0x3b5ax15,_0x3b5ax17){try{var _0x3b5ax16=mxUtils[_0x31fc[119]](_0x3b5ax14);this[_0x31fc[0]][_0x31fc[121]](_0x3b5ax16[_0x31fc[120]]);this[_0x31fc[0]][_0x31fc[122]]= false;this[_0x31fc[0]][_0x31fc[124]][_0x31fc[123]]();if(_0x3b5ax15!= null){this[_0x31fc[0]][_0x31fc[125]]= _0x3b5ax15};if(_0x3b5ax17!= null){this[_0x31fc[0]][_0x31fc[132]]= _0x3b5ax17}}catch(e){mxUtils[_0x31fc[129]](mxResources[_0x31fc[112]](_0x31fc[126])+ _0x31fc[127]+ e[_0x31fc[128]])}};EditorUi[_0x31fc[10]][_0x31fc[133]]= function(_0x3b5ax18){var _0x3b5ax1=this[_0x31fc[0]];if(_0x3b5ax18!= null){var _0x3b5ax14=mxUtils[_0x31fc[135]](this[_0x31fc[0]][_0x31fc[134]]());try{if(useLocalStorage){if(localStorage[_0x31fc[136]](_0x3b5ax18)!= null&& !mxUtils[_0x31fc[138]](mxResources[_0x31fc[112]](_0x31fc[137],[_0x3b5ax18]))){return};localStorage[_0x31fc[139]](_0x3b5ax18,_0x3b5ax14);this[_0x31fc[0]][_0x31fc[142]](mxResources[_0x31fc[112]](_0x31fc[140])+ _0x31fc[141]+ new Date())}else {console[_0x31fc[72]](_0x3b5ax14[_0x31fc[143]]);console[_0x31fc[72]](MAX_REQUEST_SIZE);if(_0x3b5ax14[_0x31fc[143]]< MAX_REQUEST_SIZE){_0x3b5ax14= encodeURIComponent(_0x3b5ax14);_0x3b5ax18= encodeURIComponent(_0x3b5ax18);var _0x3b5ax19= new XMLHttpRequest();_0x3b5ax19[_0x31fc[102]](_0x31fc[144],SAVE_URL,true);_0x3b5ax19[_0x31fc[147]](_0x31fc[145],_0x31fc[146]);_0x3b5ax19[_0x31fc[147]](_0x31fc[148],_0x31fc[149]+ _0x3b5ax1[_0x31fc[132]][_0x31fc[150]]);_0x3b5ax19[_0x31fc[151]]= function(_0x3b5ax1a){if(_0x3b5ax19[_0x31fc[152]]=== 4){if(_0x3b5ax19[_0x31fc[153]]=== 201){_0x3b5ax1[_0x31fc[142]](_0x31fc[154]+ JSON[_0x31fc[157]](_0x3b5ax19[_0x31fc[156]])[_0x31fc[155]]+ _0x31fc[158]);setTimeout(function(){window[_0x31fc[102]](_0x31fc[159]+ JSON[_0x31fc[157]](_0x3b5ax19[_0x31fc[156]])[_0x31fc[160]],_0x31fc[161])},1500)}else {try{var _0x3b5ax1b=JSON[_0x31fc[157]](_0x3b5ax19[_0x31fc[156]]);_0x3b5ax1[_0x31fc[142]](_0x31fc[162]+ _0x3b5ax1b[_0x31fc[163]][0][_0x31fc[128]])}catch(_0x3b5ax1a){_0x3b5ax1[_0x31fc[142]](_0x31fc[164]+ _0x31fc[165]+ _0x3b5ax19[_0x31fc[153]]+ _0x31fc[141]+ _0x3b5ax19[_0x31fc[166]]+ _0x31fc[44])}}}};_0x3b5ax19[_0x31fc[167]]= function(_0x3b5ax1a){mxUtils[_0x31fc[129]](_0x3b5ax19[_0x31fc[166]])};_0x3b5ax19[_0x31fc[169]](_0x31fc[168]+ _0x3b5ax18)}else {mxUtils[_0x31fc[129]](mxResources[_0x31fc[112]](_0x31fc[170]));mxUtils[_0x31fc[171]](_0x3b5ax14);return}};this[_0x31fc[0]][_0x31fc[125]]= _0x3b5ax18;this[_0x31fc[0]][_0x31fc[122]]= false}catch(e){this[_0x31fc[0]][_0x31fc[142]](_0x31fc[164])}}else {this[_0x31fc[0]][_0x31fc[142]](_0x31fc[164])}};EditorUi[_0x31fc[10]][_0x31fc[172]]= function(_0x3b5ax18){var _0x3b5ax1=this[_0x31fc[0]];if(_0x3b5ax18!= null){var _0x3b5ax14=mxUtils[_0x31fc[135]](this[_0x31fc[0]][_0x31fc[134]]());try{if(useLocalStorage){if(localStorage[_0x31fc[136]](_0x3b5ax18)!= null&& !mxUtils[_0x31fc[138]](mxResources[_0x31fc[112]](_0x31fc[137],[_0x3b5ax18]))){return};localStorage[_0x31fc[139]](_0x3b5ax18,_0x3b5ax14);this[_0x31fc[0]][_0x31fc[142]](mxResources[_0x31fc[112]](_0x31fc[140])+ _0x31fc[141]+ new Date())}else {console[_0x31fc[72]](_0x3b5ax14[_0x31fc[143]]);console[_0x31fc[72]](MAX_REQUEST_SIZE);if(_0x3b5ax14[_0x31fc[143]]< MAX_REQUEST_SIZE){_0x3b5ax14= encodeURIComponent(_0x3b5ax14);var _0x3b5ax19= new XMLHttpRequest();_0x3b5ax19[_0x31fc[102]](_0x31fc[173],SAVE_URL+ this[_0x31fc[0]][_0x31fc[132]][_0x31fc[160]],true);_0x3b5ax19[_0x31fc[147]](_0x31fc[145],_0x31fc[146]);_0x3b5ax19[_0x31fc[147]](_0x31fc[148],_0x31fc[149]+ _0x3b5ax1[_0x31fc[132]][_0x31fc[150]]);_0x3b5ax19[_0x31fc[151]]= function(_0x3b5ax1a){if(_0x3b5ax19[_0x31fc[152]]=== 4){if(_0x3b5ax19[_0x31fc[153]]=== 200){_0x3b5ax1[_0x31fc[142]](_0x31fc[174]+ JSON[_0x31fc[157]](_0x3b5ax19[_0x31fc[156]])[_0x31fc[175]]+ _0x31fc[165]+ _0x3b5ax19[_0x31fc[153]]+ _0x31fc[141]+ _0x3b5ax19[_0x31fc[166]]+ _0x31fc[44])}else {try{var _0x3b5ax1b=JSON[_0x31fc[157]](_0x3b5ax19[_0x31fc[156]]);_0x3b5ax1[_0x31fc[142]](_0x31fc[176]+ _0x3b5ax1b[_0x31fc[163]][0][_0x31fc[128]])}catch(_0x3b5ax1a){_0x3b5ax1[_0x31fc[142]](_0x31fc[177]+ _0x31fc[165]+ _0x3b5ax19[_0x31fc[153]]+ _0x31fc[141]+ _0x3b5ax19[_0x31fc[166]]+ _0x31fc[44])}}}};_0x3b5ax19[_0x31fc[167]]= function(_0x3b5ax1a){mxUtils[_0x31fc[129]](_0x3b5ax19[_0x31fc[166]])};_0x3b5ax19[_0x31fc[169]](_0x31fc[178]+ _0x3b5ax14)}else {mxUtils[_0x31fc[129]](mxResources[_0x31fc[112]](_0x31fc[170]));mxUtils[_0x31fc[171]](_0x3b5ax14);return}};this[_0x31fc[0]][_0x31fc[125]]= _0x3b5ax18;this[_0x31fc[0]][_0x31fc[122]]= false}catch(e){this[_0x31fc[0]][_0x31fc[142]](_0x31fc[179])}}else {this[_0x31fc[0]][_0x31fc[142]](_0x31fc[179])}};EditorUi[_0x31fc[10]][_0x31fc[180]]= function(_0x3b5ax18){var _0x3b5ax1=this[_0x31fc[0]];console[_0x31fc[72]](_0x3b5ax18);if(_0x3b5ax18!= null){var _0x3b5ax14=mxUtils[_0x31fc[135]](this[_0x31fc[0]][_0x31fc[134]]());try{if(useLocalStorage){if(localStorage[_0x31fc[136]](_0x3b5ax18)!= null&& !mxUtils[_0x31fc[138]](mxResources[_0x31fc[112]](_0x31fc[137],[_0x3b5ax18]))){return};localStorage[_0x31fc[139]](_0x3b5ax18,_0x3b5ax14);this[_0x31fc[0]][_0x31fc[142]](mxResources[_0x31fc[112]](_0x31fc[140])+ _0x31fc[141]+ new Date())}else {console[_0x31fc[72]](_0x3b5ax14[_0x31fc[143]]);console[_0x31fc[72]](MAX_REQUEST_SIZE);if(_0x3b5ax14[_0x31fc[143]]< MAX_REQUEST_SIZE){_0x3b5ax14= encodeURIComponent(_0x3b5ax14);_0x3b5ax18= encodeURIComponent(_0x3b5ax18);var _0x3b5ax19= new XMLHttpRequest();_0x3b5ax19[_0x31fc[102]](_0x31fc[144],SAVE_URL,true);_0x3b5ax19[_0x31fc[147]](_0x31fc[145],_0x31fc[146]);_0x3b5ax19[_0x31fc[147]](_0x31fc[148],_0x31fc[149]+ _0x3b5ax1[_0x31fc[132]][_0x31fc[150]]);_0x3b5ax19[_0x31fc[151]]= function(_0x3b5ax1a){if(_0x3b5ax19[_0x31fc[152]]=== 4){if(_0x3b5ax19[_0x31fc[153]]=== 201){_0x3b5ax1[_0x31fc[142]](_0x31fc[154]+ JSON[_0x31fc[157]](_0x3b5ax19[_0x31fc[156]])[_0x31fc[155]]+ _0x31fc[158]);setTimeout(function(){window[_0x31fc[102]](_0x31fc[181]+ JSON[_0x31fc[157]](_0x3b5ax19[_0x31fc[156]])[_0x31fc[160]],_0x31fc[161])},1500)}else {try{var _0x3b5ax1b=JSON[_0x31fc[157]](_0x3b5ax19[_0x31fc[156]]);_0x3b5ax1[_0x31fc[142]](_0x31fc[182]+ _0x3b5ax1b[_0x31fc[163]][0][_0x31fc[128]])}catch(_0x3b5ax1a){_0x3b5ax1[_0x31fc[142]](_0x31fc[183]+ _0x31fc[165]+ _0x3b5ax19[_0x31fc[153]]+ _0x31fc[141]+ _0x3b5ax19[_0x31fc[166]]+ _0x31fc[44])}}}};_0x3b5ax19[_0x31fc[167]]= function(_0x3b5ax1a){mxUtils[_0x31fc[129]](_0x3b5ax19[_0x31fc[166]])};_0x3b5ax19[_0x31fc[169]](_0x31fc[184]+ _0x3b5ax18+ _0x31fc[185]+ _0x3b5ax14+ _0x31fc[186]+ _0x3b5ax14)}else {mxUtils[_0x31fc[129]](mxResources[_0x31fc[112]](_0x31fc[170]));mxUtils[_0x31fc[171]](_0x3b5ax14);return}};this[_0x31fc[0]][_0x31fc[125]]= _0x3b5ax18;this[_0x31fc[0]][_0x31fc[122]]= false}catch(e){this[_0x31fc[0]][_0x31fc[142]](_0x31fc[179])}}else {this[_0x31fc[0]][_0x31fc[142]](_0x31fc[179])}};EditorUi[_0x31fc[10]][_0x31fc[187]]= function(_0x3b5ax1c,_0x3b5ax1d){var _0x3b5ax3=this[_0x31fc[0]][_0x31fc[4]];_0x3b5ax1c= null!= _0x3b5ax1c?_0x3b5ax1c:_0x3b5ax3[_0x31fc[189]][_0x31fc[188]]();_0x3b5ax1d= null!= _0x3b5ax1d?_0x3b5ax1d:{};for(var _0x3b5ax1e=!0,_0x3b5ax1f=_0x3b5ax3[_0x31fc[189]][_0x31fc[190]](_0x3b5ax1c),_0x3b5ax1a=0;_0x3b5ax1a< _0x3b5ax1f;_0x3b5ax1a++){var _0x3b5ax20=_0x3b5ax3[_0x31fc[189]][_0x31fc[191]](_0x3b5ax1c,_0x3b5ax1a),_0x3b5ax21=_0x3b5ax1d;_0x3b5ax3[_0x31fc[192]](_0x3b5ax20)&& (_0x3b5ax21= {});_0x3b5ax21= this[_0x31fc[187]](_0x3b5ax20,_0x3b5ax21);null!= _0x3b5ax21?_0x3b5ax3[_0x31fc[194]](_0x3b5ax20,_0x3b5ax21[_0x31fc[137]](/\n/g,_0x31fc[193])):_0x3b5ax3[_0x31fc[194]](_0x3b5ax20,null);_0x3b5ax1e= _0x3b5ax1e&& null== _0x3b5ax21};_0x3b5ax1f= _0x31fc[195];if(_0x3b5ax3[_0x31fc[189]][_0x31fc[71]](_0x3b5ax1c)){switch(_0x3b5ax1c[_0x31fc[67]][_0x31fc[203]]){case _0x31fc[55]:_0x3b5ax1f= (_0x3b5ax1c[_0x31fc[67]][_0x31fc[196]](_0x31fc[55])!== _0x31fc[195])?_0x31fc[195]:_0x31fc[197]+ _0x31fc[198];_0x3b5ax1f+= (_0x3b5ax1c[_0x31fc[67]][_0x31fc[196]](_0x31fc[199])!== _0x31fc[195])?_0x31fc[195]:_0x31fc[200]+ _0x31fc[198];break;case _0x31fc[54]:_0x3b5ax1f= (_0x3b5ax1c[_0x31fc[67]][_0x31fc[196]](_0x31fc[55])!== _0x31fc[195])?_0x31fc[195]:_0x31fc[197]+ _0x31fc[198];_0x3b5ax1f+= (_0x3b5ax1c[_0x31fc[67]][_0x31fc[196]](_0x31fc[199])!== _0x31fc[195])?_0x31fc[195]:_0x31fc[200]+ _0x31fc[198];break;case _0x31fc[52]:_0x3b5ax1f= this[_0x31fc[201]](_0x31fc[52])?_0x31fc[195]:_0x31fc[202]+ _0x31fc[198];_0x3b5ax1f+= (_0x3b5ax1c[_0x31fc[67]][_0x31fc[196]](_0x31fc[199])!== _0x31fc[195])?_0x31fc[195]:_0x31fc[200]+ _0x31fc[198];break}};if(_0x3b5ax3[_0x31fc[189]][_0x31fc[64]](_0x3b5ax1c)){var _0x3b5ax22=_0x3b5ax3[_0x31fc[189]][_0x31fc[205]](_0x3b5ax1c[_0x31fc[68]][_0x31fc[204]]());switch(_0x3b5ax22[_0x31fc[67]][_0x31fc[203]]){case _0x31fc[55]:var _0x3b5ax23=String(_0x3b5ax1c[_0x31fc[206]]());console[_0x31fc[72]](_0x3b5ax23);if(_0x3b5ax23=== _0x31fc[207]|| _0x3b5ax23=== _0x31fc[31]){_0x3b5ax1f= _0x31fc[208]+ _0x31fc[198]}else {var _0x3b5ax24=_0x3b5ax23[_0x31fc[210]](_0x31fc[209]);_0x3b5ax24[_0x31fc[214]](function(_0x3b5ax25,_0x3b5ax26){_0x3b5ax1f= _0x3b5ax1f+ ((_0x3b5ax25[_0x31fc[211]]()!== _0x31fc[195])?_0x31fc[195]:_0x31fc[212]+ (_0x3b5ax26+ 1)+ _0x31fc[213]+ _0x31fc[198])})};break}};_0x3b5ax3[_0x31fc[215]](_0x3b5ax1c)&& !_0x3b5ax1e&& (_0x3b5ax1f+= (mxResources[_0x31fc[112]](_0x3b5ax3[_0x31fc[216]])|| _0x3b5ax3[_0x31fc[216]])+ _0x31fc[198]);_0x3b5ax1f= _0x3b5ax3[_0x31fc[189]][_0x31fc[64]](_0x3b5ax1c)?_0x3b5ax1f+ (_0x3b5ax3[_0x31fc[218]](_0x3b5ax1c,_0x3b5ax3[_0x31fc[189]][_0x31fc[217]](_0x3b5ax1c,!0),_0x3b5ax3[_0x31fc[189]][_0x31fc[217]](_0x3b5ax1c,!1))|| _0x31fc[195]):_0x3b5ax1f+ (_0x3b5ax3[_0x31fc[219]](_0x3b5ax1c)|| _0x31fc[195]);_0x3b5ax1a= _0x3b5ax3[_0x31fc[220]](_0x3b5ax1c,_0x3b5ax1d);null!= _0x3b5ax1a&& (_0x3b5ax1f+= _0x3b5ax1a);null== _0x3b5ax3[_0x31fc[189]][_0x31fc[221]](_0x3b5ax1c)&& _0x3b5ax3[_0x31fc[89]][_0x31fc[187]]();return 0< _0x3b5ax1f[_0x31fc[143]]|| !_0x3b5ax1e?_0x3b5ax1f:null};EditorUi[_0x31fc[10]][_0x31fc[201]]= function(_0x3b5ax27){var _0x3b5ax3=this[_0x31fc[0]][_0x31fc[4]];var _0x3b5ax28=_0x3b5ax3[_0x31fc[222]]();var _0x3b5ax29=0;_0x3b5ax28[_0x31fc[223]][_0x31fc[214]](function(_0x3b5ax2a){if(_0x3b5ax3[_0x31fc[189]][_0x31fc[71]](_0x3b5ax2a)&& _0x3b5ax2a[_0x31fc[67]][_0x31fc[203]]== _0x3b5ax27){_0x3b5ax29++}});return _0x3b5ax29> 1?false:true};EditorUi[_0x31fc[10]][_0x31fc[224]]= function(_0x3b5ax18){var _0x3b5ax1=this[_0x31fc[0]];if(_0x3b5ax18!= null){var _0x3b5ax1b=this[_0x31fc[187]]();if(_0x3b5ax1b=== null){var _0x3b5ax14=mxUtils[_0x31fc[135]](this[_0x31fc[0]][_0x31fc[134]]());try{if(useLocalStorage){if(localStorage[_0x31fc[136]](_0x3b5ax18)!= null&& !mxUtils[_0x31fc[138]](mxResources[_0x31fc[112]](_0x31fc[137],[_0x3b5ax18]))){return};localStorage[_0x31fc[139]](_0x3b5ax18,_0x3b5ax14);this[_0x31fc[0]][_0x31fc[142]](mxResources[_0x31fc[112]](_0x31fc[140])+ _0x31fc[141]+ new Date())}else {console[_0x31fc[72]](_0x3b5ax14[_0x31fc[143]]);console[_0x31fc[72]](MAX_REQUEST_SIZE);if(_0x3b5ax14[_0x31fc[143]]< MAX_REQUEST_SIZE){_0x3b5ax14= encodeURIComponent(_0x3b5ax14);var _0x3b5ax19= new XMLHttpRequest();_0x3b5ax19[_0x31fc[102]](_0x31fc[173],SAVE_URL+ this[_0x31fc[0]][_0x31fc[132]][_0x31fc[160]],true);_0x3b5ax19[_0x31fc[147]](_0x31fc[145],_0x31fc[146]);_0x3b5ax19[_0x31fc[147]](_0x31fc[148],_0x31fc[149]+ _0x3b5ax1[_0x31fc[132]][_0x31fc[150]]);_0x3b5ax19[_0x31fc[151]]= function(_0x3b5ax1a){if(_0x3b5ax19[_0x31fc[152]]=== 4){if(_0x3b5ax19[_0x31fc[153]]=== 200){_0x3b5ax1[_0x31fc[142]](_0x31fc[225]+ JSON[_0x31fc[157]](_0x3b5ax19[_0x31fc[156]])[_0x31fc[175]]+ _0x31fc[165]+ _0x3b5ax19[_0x31fc[153]]+ _0x31fc[141]+ _0x3b5ax19[_0x31fc[166]]+ _0x31fc[44])}else {try{var _0x3b5ax1b=JSON[_0x31fc[157]](_0x3b5ax19[_0x31fc[156]]);_0x3b5ax1[_0x31fc[142]](_0x31fc[226]+ _0x3b5ax1b[_0x31fc[163]][0][_0x31fc[128]])}catch(_0x3b5ax1a){_0x3b5ax1[_0x31fc[142]](_0x31fc[227]+ _0x31fc[165]+ _0x3b5ax19[_0x31fc[153]]+ _0x31fc[141]+ _0x3b5ax19[_0x31fc[166]]+ _0x31fc[44])}}}};_0x3b5ax19[_0x31fc[167]]= function(_0x3b5ax1a){mxUtils[_0x31fc[129]](_0x3b5ax19[_0x31fc[166]])};_0x3b5ax19[_0x31fc[169]](_0x31fc[178]+ _0x3b5ax14+ _0x31fc[186]+ _0x3b5ax14)}else {mxUtils[_0x31fc[129]](mxResources[_0x31fc[112]](_0x31fc[170]));mxUtils[_0x31fc[171]](_0x3b5ax14);return}};this[_0x31fc[0]][_0x31fc[125]]= _0x3b5ax18;this[_0x31fc[0]][_0x31fc[122]]= false}catch(e){this[_0x31fc[0]][_0x31fc[142]](_0x31fc[228])}}else {_0x3b5ax1[_0x31fc[142]](_0x31fc[226])}}else {this[_0x31fc[0]][_0x31fc[142]](_0x31fc[228])}};EditorUi[_0x31fc[10]][_0x31fc[229]]= function(_0x3b5ax18){var _0x3b5ax1=this[_0x31fc[0]];if(_0x3b5ax18!= null){try{var _0x3b5ax19= new XMLHttpRequest();_0x3b5ax19[_0x31fc[102]](_0x31fc[144],VARIABLE_URL,true);_0x3b5ax19[_0x31fc[147]](_0x31fc[145],_0x31fc[146]);_0x3b5ax19[_0x31fc[147]](_0x31fc[148],_0x31fc[149]+ _0x3b5ax1[_0x31fc[132]][_0x31fc[150]]);_0x3b5ax19[_0x31fc[151]]= function(_0x3b5ax1a){if(_0x3b5ax19[_0x31fc[152]]=== 4){if(_0x3b5ax19[_0x31fc[153]]=== 201){_0x3b5ax1[_0x31fc[142]](_0x31fc[230]+ JSON[_0x31fc[157]](_0x3b5ax19[_0x31fc[156]])[_0x31fc[231]]+ _0x31fc[165]+ _0x3b5ax19[_0x31fc[153]]+ _0x31fc[141]+ _0x3b5ax19[_0x31fc[166]]+ _0x31fc[44])}else {try{var _0x3b5ax1b=JSON[_0x31fc[157]](_0x3b5ax19[_0x31fc[156]]);_0x3b5ax1[_0x31fc[142]](_0x31fc[232]+ _0x3b5ax1b[_0x31fc[163]][0][_0x31fc[128]])}catch(_0x3b5ax1a){_0x3b5ax1[_0x31fc[142]](_0x31fc[233]+ _0x31fc[165]+ _0x3b5ax19[_0x31fc[153]]+ _0x31fc[141]+ _0x3b5ax19[_0x31fc[166]]+ _0x31fc[44])}}}};_0x3b5ax19[_0x31fc[167]]= function(_0x3b5ax1a){mxUtils[_0x31fc[129]](_0x3b5ax19[_0x31fc[166]])};_0x3b5ax19[_0x31fc[169]](_0x31fc[234]+ _0x3b5ax18)}catch(e){this[_0x31fc[0]][_0x31fc[142]](_0x31fc[233])}}else {this[_0x31fc[0]][_0x31fc[142]](_0x31fc[233])}};EditorUi[_0x31fc[10]][_0x31fc[235]]= function(_0x3b5ax2b){var _0x3b5ax2c=(_0x3b5ax2b!= null)?_0x3b5ax2b:window[_0x31fc[237]][_0x31fc[236]];var _0x3b5ax2d=(_0x3b5ax2c[_0x31fc[69]](_0x31fc[238])> 0)?1:0;for(var _0x3b5ax26 in urlParams){if(_0x3b5ax2d== 0){_0x3b5ax2c+= _0x31fc[238]}else {_0x3b5ax2c+= _0x31fc[239]};_0x3b5ax2c+= _0x3b5ax26+ _0x31fc[240]+ urlParams[_0x3b5ax26];_0x3b5ax2d++};return _0x3b5ax2c};EditorUi[_0x31fc[10]][_0x31fc[109]]= function(){var _0x3b5ax2e=this[_0x31fc[12]][_0x31fc[112]](_0x31fc[241]);var _0x3b5ax2f=this[_0x31fc[12]][_0x31fc[112]](_0x31fc[242]);var _0x3b5ax30=this[_0x31fc[0]][_0x31fc[124]];var _0x3b5ax31=function(){_0x3b5ax2e[_0x31fc[114]](_0x3b5ax30[_0x31fc[243]]());_0x3b5ax2f[_0x31fc[114]](_0x3b5ax30[_0x31fc[244]]())};_0x3b5ax30[_0x31fc[33]](mxEvent.ADD,_0x3b5ax31);_0x3b5ax30[_0x31fc[33]](mxEvent.UNDO,_0x3b5ax31);_0x3b5ax30[_0x31fc[33]](mxEvent.REDO,_0x3b5ax31);_0x3b5ax30[_0x31fc[33]](mxEvent.CLEAR,_0x3b5ax31);_0x3b5ax31()};EditorUi[_0x31fc[10]][_0x31fc[110]]= function(){var _0x3b5ax32=mxUtils[_0x31fc[20]](this,function(){var _0x3b5ax3=this[_0x31fc[0]][_0x31fc[4]];var _0x3b5ax33=!_0x3b5ax3[_0x31fc[245]]();var _0x3b5ax34=false;var _0x3b5ax35=false;var _0x3b5ax36=_0x3b5ax3[_0x31fc[246]]();if(_0x3b5ax36!= null){for(var _0x3b5ax37=0;_0x3b5ax37< _0x3b5ax36[_0x31fc[143]];_0x3b5ax37++){var _0x3b5axb=_0x3b5ax36[_0x3b5ax37];if(_0x3b5ax3[_0x31fc[65]]()[_0x31fc[64]](_0x3b5axb)){_0x3b5ax35= true};if(_0x3b5ax3[_0x31fc[65]]()[_0x31fc[71]](_0x3b5axb)){_0x3b5ax34= true};if(_0x3b5ax35&& _0x3b5ax34){break}}};var _0x3b5ax38=[_0x31fc[115],_0x31fc[116],_0x31fc[247],_0x31fc[248],_0x31fc[249],_0x31fc[250],_0x31fc[6],_0x31fc[251],_0x31fc[252],_0x31fc[253],_0x31fc[254],_0x31fc[255],_0x31fc[256],_0x31fc[257],_0x31fc[258]];for(var _0x3b5ax37=0;_0x3b5ax37< _0x3b5ax38[_0x31fc[143]];_0x3b5ax37++){this[_0x31fc[12]][_0x31fc[112]](_0x3b5ax38[_0x3b5ax37])[_0x31fc[114]](_0x3b5ax33)};this[_0x31fc[12]][_0x31fc[112]](_0x31fc[259])[_0x31fc[114]](_0x3b5ax35);this[_0x31fc[12]][_0x31fc[112]](_0x31fc[260])[_0x31fc[114]](_0x3b5ax34);this[_0x31fc[12]][_0x31fc[112]](_0x31fc[261])[_0x31fc[114]](_0x3b5ax34);this[_0x31fc[12]][_0x31fc[112]](_0x31fc[263])[_0x31fc[114]](_0x3b5ax3[_0x31fc[262]]()> 1);this[_0x31fc[12]][_0x31fc[112]](_0x31fc[265])[_0x31fc[114]](_0x3b5ax3[_0x31fc[262]]()== 1&& _0x3b5ax3[_0x31fc[65]]()[_0x31fc[190]](_0x3b5ax3[_0x31fc[264]]())> 0);var _0x3b5ax39=_0x3b5ax34&& _0x3b5ax3[_0x31fc[262]]()== 1;this[_0x31fc[12]][_0x31fc[112]](_0x31fc[266])[_0x31fc[114]](_0x3b5ax39&& _0x3b5ax3[_0x31fc[65]]()[_0x31fc[71]](_0x3b5ax3[_0x31fc[65]]()[_0x31fc[221]](_0x3b5ax3[_0x31fc[264]]())));var _0x3b5ax3a=[_0x31fc[267],_0x31fc[268],_0x31fc[269],_0x31fc[270],_0x31fc[271],_0x31fc[272],_0x31fc[273],_0x31fc[274],_0x31fc[275]];for(var _0x3b5ax37=0;_0x3b5ax37< _0x3b5ax3a[_0x31fc[143]];_0x3b5ax37++){this[_0x31fc[13]][_0x31fc[112]](_0x3b5ax3a[_0x3b5ax37])[_0x31fc[114]](_0x3b5ax33)};_0x3b5ax3a= [_0x31fc[276],_0x31fc[277],_0x31fc[278]];for(var _0x3b5ax37=0;_0x3b5ax37< _0x3b5ax3a[_0x31fc[143]];_0x3b5ax37++){this[_0x31fc[13]][_0x31fc[112]](_0x3b5ax3a[_0x3b5ax37])[_0x31fc[114]](_0x3b5ax35)};this[_0x31fc[12]][_0x31fc[112]](_0x31fc[279])[_0x31fc[114]](_0x3b5ax35);this[_0x31fc[13]][_0x31fc[112]](_0x31fc[280])[_0x31fc[114]](_0x3b5ax3[_0x31fc[262]]()> 1);this[_0x31fc[13]][_0x31fc[112]](_0x31fc[283])[_0x31fc[114]](_0x3b5ax34|| (_0x3b5ax35&& _0x3b5ax3[_0x31fc[282]](_0x3b5ax3[_0x31fc[89]][_0x31fc[281]](_0x3b5ax3[_0x31fc[264]]()))));this[_0x31fc[13]][_0x31fc[112]](_0x31fc[286])[_0x31fc[114]](_0x3b5ax3[_0x31fc[284]]&& ((_0x3b5ax3[_0x31fc[89]][_0x31fc[285]]!= null)|| (_0x3b5ax3[_0x31fc[262]]()== 1&& _0x3b5ax3[_0x31fc[192]](_0x3b5ax3[_0x31fc[264]]()))));this[_0x31fc[12]][_0x31fc[112]](_0x31fc[287])[_0x31fc[114]](_0x3b5ax3[_0x31fc[89]][_0x31fc[285]]!= null);this[_0x31fc[12]][_0x31fc[112]](_0x31fc[288])[_0x31fc[114]](_0x3b5ax3[_0x31fc[89]][_0x31fc[285]]!= null);var _0x3b5ax3b=_0x3b5ax3[_0x31fc[262]]()== 1&& _0x3b5ax3[_0x31fc[192]](_0x3b5ax3[_0x31fc[264]]());this[_0x31fc[12]][_0x31fc[112]](_0x31fc[289])[_0x31fc[114]](_0x3b5ax3b);this[_0x31fc[12]][_0x31fc[112]](_0x31fc[290])[_0x31fc[114]](_0x3b5ax3b);this[_0x31fc[12]][_0x31fc[112]](_0x31fc[291])[_0x31fc[114]](_0x3b5ax3b);this[_0x31fc[12]][_0x31fc[112]](_0x31fc[292])[_0x31fc[114]](_0x3b5ax3[_0x31fc[262]]()== 1);this[_0x31fc[12]][_0x31fc[112]](_0x31fc[294])[_0x31fc[114]](_0x3b5ax3[_0x31fc[262]]()== 1&& _0x3b5ax3[_0x31fc[293]](_0x3b5ax3[_0x31fc[264]]())!= null)});this[_0x31fc[0]][_0x31fc[4]][_0x31fc[295]]()[_0x31fc[33]](mxEvent.CHANGE,_0x3b5ax32);_0x3b5ax32()};EditorUi[_0x31fc[10]][_0x31fc[15]]= function(){var _0x3b5ax3c=mxClient[_0x31fc[29]]&& (document[_0x31fc[30]]== null|| document[_0x31fc[30]]== 5);var _0x3b5ax3d=this[_0x31fc[1]][_0x31fc[296]];var _0x3b5ax3e=this[_0x31fc[1]][_0x31fc[297]];if(this[_0x31fc[1]]== document[_0x31fc[21]]){_0x3b5ax3d= document[_0x31fc[21]][_0x31fc[296]]|| document[_0x31fc[120]][_0x31fc[296]];_0x3b5ax3e= (_0x3b5ax3c)?document[_0x31fc[21]][_0x31fc[297]]|| document[_0x31fc[120]][_0x31fc[297]]:document[_0x31fc[120]][_0x31fc[297]]};var _0x3b5ax3f=Math[_0x31fc[299]](0,Math[_0x31fc[298]](this[_0x31fc[107]],_0x3b5ax3d- this[_0x31fc[103]]- 20));var _0x3b5ax40=Math[_0x31fc[299]](0,Math[_0x31fc[298]](this[_0x31fc[108]],_0x3b5ax3e- this[_0x31fc[104]]- this[_0x31fc[105]]- this[_0x31fc[106]]- this[_0x31fc[103]]- 1));this[_0x31fc[23]][_0x31fc[6]][_0x31fc[300]]= this[_0x31fc[104]]+ _0x31fc[301];this[_0x31fc[25]][_0x31fc[6]][_0x31fc[302]]= this[_0x31fc[104]]+ _0x31fc[301];this[_0x31fc[25]][_0x31fc[6]][_0x31fc[300]]= this[_0x31fc[105]]+ _0x31fc[301];var _0x3b5ax41=this[_0x31fc[104]]+ this[_0x31fc[105]];if(!mxClient[_0x31fc[303]]){_0x3b5ax41+= 1};this[_0x31fc[27]][_0x31fc[6]][_0x31fc[302]]= _0x3b5ax41+ _0x31fc[301];this[_0x31fc[27]][_0x31fc[6]][_0x31fc[304]]= _0x3b5ax3f+ _0x31fc[301];this[_0x31fc[79]][_0x31fc[6]][_0x31fc[304]]= _0x3b5ax3f+ _0x31fc[301];this[_0x31fc[79]][_0x31fc[6]][_0x31fc[300]]= _0x3b5ax40+ _0x31fc[301];this[_0x31fc[79]][_0x31fc[6]][_0x31fc[305]]= this[_0x31fc[106]]+ _0x31fc[301];this[_0x31fc[26]][_0x31fc[6]][_0x31fc[306]]= (_0x3b5ax3f+ this[_0x31fc[103]])+ _0x31fc[301];this[_0x31fc[26]][_0x31fc[6]][_0x31fc[302]]= this[_0x31fc[27]][_0x31fc[6]][_0x31fc[302]];this[_0x31fc[28]][_0x31fc[6]][_0x31fc[300]]= this[_0x31fc[106]]+ _0x31fc[301];this[_0x31fc[28]][_0x31fc[6]][_0x31fc[307]]= _0x31fc[308];this[_0x31fc[309]][_0x31fc[6]][_0x31fc[302]]= this[_0x31fc[27]][_0x31fc[6]][_0x31fc[302]];this[_0x31fc[309]][_0x31fc[6]][_0x31fc[305]]= this[_0x31fc[79]][_0x31fc[6]][_0x31fc[305]];this[_0x31fc[309]][_0x31fc[6]][_0x31fc[306]]= _0x3b5ax3f+ _0x31fc[301];this[_0x31fc[310]][_0x31fc[6]][_0x31fc[304]]= this[_0x31fc[27]][_0x31fc[6]][_0x31fc[304]];this[_0x31fc[310]][_0x31fc[6]][_0x31fc[305]]= (_0x3b5ax40+ this[_0x31fc[106]])+ _0x31fc[301];if(_0x3b5ax3c){this[_0x31fc[23]][_0x31fc[6]][_0x31fc[304]]= _0x3b5ax3d+ _0x31fc[301];this[_0x31fc[25]][_0x31fc[6]][_0x31fc[304]]= this[_0x31fc[23]][_0x31fc[6]][_0x31fc[304]];var _0x3b5ax42=(_0x3b5ax3e- _0x3b5ax40- this[_0x31fc[103]]- this[_0x31fc[106]]- this[_0x31fc[104]]- this[_0x31fc[105]]);this[_0x31fc[27]][_0x31fc[6]][_0x31fc[300]]= _0x3b5ax42+ _0x31fc[301];this[_0x31fc[26]][_0x31fc[6]][_0x31fc[304]]= (_0x3b5ax3d- _0x3b5ax3f- this[_0x31fc[103]])+ _0x31fc[301];var _0x3b5ax43=(_0x3b5ax3e- this[_0x31fc[106]]- this[_0x31fc[104]]- this[_0x31fc[105]]);this[_0x31fc[26]][_0x31fc[6]][_0x31fc[300]]= _0x3b5ax43+ _0x31fc[301];this[_0x31fc[28]][_0x31fc[6]][_0x31fc[304]]= this[_0x31fc[23]][_0x31fc[6]][_0x31fc[304]];this[_0x31fc[309]][_0x31fc[6]][_0x31fc[300]]= _0x3b5ax43+ _0x31fc[301]}else {this[_0x31fc[27]][_0x31fc[6]][_0x31fc[305]]= (_0x3b5ax40+ this[_0x31fc[103]]+ this[_0x31fc[106]])+ _0x31fc[301];this[_0x31fc[26]][_0x31fc[6]][_0x31fc[305]]= this[_0x31fc[79]][_0x31fc[6]][_0x31fc[305]]}};EditorUi[_0x31fc[10]][_0x31fc[14]]= function(){this[_0x31fc[23]]= this[_0x31fc[312]](_0x31fc[311]);this[_0x31fc[25]]= this[_0x31fc[312]](_0x31fc[313]);this[_0x31fc[27]]= this[_0x31fc[312]](_0x31fc[314]);this[_0x31fc[79]]= this[_0x31fc[312]](_0x31fc[315]);this[_0x31fc[26]]= this[_0x31fc[312]](_0x31fc[316]);this[_0x31fc[28]]= this[_0x31fc[312]](_0x31fc[317]);this[_0x31fc[309]]= this[_0x31fc[312]](_0x31fc[318]);this[_0x31fc[310]]= this[_0x31fc[312]](_0x31fc[319]);this[_0x31fc[23]][_0x31fc[6]][_0x31fc[302]]= _0x31fc[320];this[_0x31fc[23]][_0x31fc[6]][_0x31fc[306]]= _0x31fc[320];this[_0x31fc[23]][_0x31fc[6]][_0x31fc[321]]= _0x31fc[320];this[_0x31fc[25]][_0x31fc[6]][_0x31fc[306]]= _0x31fc[320];this[_0x31fc[25]][_0x31fc[6]][_0x31fc[321]]= _0x31fc[320];this[_0x31fc[27]][_0x31fc[6]][_0x31fc[306]]= _0x31fc[320];this[_0x31fc[79]][_0x31fc[6]][_0x31fc[306]]= _0x31fc[320];this[_0x31fc[26]][_0x31fc[6]][_0x31fc[321]]= _0x31fc[320];this[_0x31fc[28]][_0x31fc[6]][_0x31fc[306]]= _0x31fc[320];this[_0x31fc[28]][_0x31fc[6]][_0x31fc[321]]= _0x31fc[320];this[_0x31fc[28]][_0x31fc[6]][_0x31fc[305]]= _0x31fc[320];this[_0x31fc[310]][_0x31fc[6]][_0x31fc[306]]= _0x31fc[320];this[_0x31fc[310]][_0x31fc[6]][_0x31fc[300]]= this[_0x31fc[103]]+ _0x31fc[301];this[_0x31fc[309]][_0x31fc[6]][_0x31fc[304]]= this[_0x31fc[103]]+ _0x31fc[301]};EditorUi[_0x31fc[10]][_0x31fc[16]]= function(){this[_0x31fc[322]]= this[_0x31fc[13]][_0x31fc[324]](this[_0x31fc[312]](_0x31fc[323]));this[_0x31fc[23]][_0x31fc[325]](this[_0x31fc[322]][_0x31fc[1]]);this[_0x31fc[326]]= this[_0x31fc[328]](this[_0x31fc[312]](_0x31fc[327]));this[_0x31fc[25]][_0x31fc[325]](this[_0x31fc[326]][_0x31fc[1]]);this[_0x31fc[329]]= this[_0x31fc[330]](this[_0x31fc[27]]);this[_0x31fc[28]][_0x31fc[325]](this[_0x31fc[331]]());this[_0x31fc[332]]= this[_0x31fc[333]]();this[_0x31fc[0]][_0x31fc[33]](_0x31fc[334],mxUtils[_0x31fc[20]](this,function(){this[_0x31fc[336]](this[_0x31fc[0]][_0x31fc[335]]())}));this[_0x31fc[336]](this[_0x31fc[0]][_0x31fc[335]]());this[_0x31fc[322]][_0x31fc[1]][_0x31fc[325]](this[_0x31fc[332]]);this[_0x31fc[1]][_0x31fc[325]](this[_0x31fc[23]]);this[_0x31fc[1]][_0x31fc[325]](this[_0x31fc[25]]);this[_0x31fc[1]][_0x31fc[325]](this[_0x31fc[27]]);this[_0x31fc[1]][_0x31fc[325]](this[_0x31fc[79]]);this[_0x31fc[1]][_0x31fc[325]](this[_0x31fc[26]]);this[_0x31fc[1]][_0x31fc[325]](this[_0x31fc[28]]);this[_0x31fc[1]][_0x31fc[325]](this[_0x31fc[309]]);this[_0x31fc[1]][_0x31fc[325]](this[_0x31fc[310]]);this[_0x31fc[337]](this[_0x31fc[309]],true,0,mxUtils[_0x31fc[20]](this,function(_0x3b5ax44){this[_0x31fc[107]]= _0x3b5ax44;this[_0x31fc[15]]();this[_0x31fc[0]][_0x31fc[4]][_0x31fc[100]]();this[_0x31fc[0]][_0x31fc[80]][_0x31fc[101]](false);this[_0x31fc[0]][_0x31fc[80]][_0x31fc[80]][_0x31fc[100]]()}));this[_0x31fc[337]](this[_0x31fc[310]],false,this[_0x31fc[106]],mxUtils[_0x31fc[20]](this,function(_0x3b5ax44){this[_0x31fc[108]]= _0x3b5ax44;this[_0x31fc[15]]();this[_0x31fc[0]][_0x31fc[80]][_0x31fc[101]](false);this[_0x31fc[0]][_0x31fc[80]][_0x31fc[80]][_0x31fc[100]]()}))};EditorUi[_0x31fc[10]][_0x31fc[333]]= function(){var _0x3b5ax2=document[_0x31fc[339]](_0x31fc[338]);_0x3b5ax2[_0x31fc[340]]= _0x31fc[341];return _0x3b5ax2};EditorUi[_0x31fc[10]][_0x31fc[333]]= function(){var _0x3b5ax2=document[_0x31fc[339]](_0x31fc[338]);_0x3b5ax2[_0x31fc[340]]= _0x31fc[341];return _0x3b5ax2};EditorUi[_0x31fc[10]][_0x31fc[336]]= function(_0x3b5ax44){this[_0x31fc[332]][_0x31fc[342]]= _0x3b5ax44};EditorUi[_0x31fc[10]][_0x31fc[328]]= function(_0x3b5ax2){return new Toolbar(this,_0x3b5ax2)};EditorUi[_0x31fc[10]][_0x31fc[330]]= function(_0x3b5ax2){return new Sidebar(this,_0x3b5ax2)};EditorUi[_0x31fc[10]][_0x31fc[331]]= function(){return this[_0x31fc[312]](_0x31fc[343])};EditorUi[_0x31fc[10]][_0x31fc[312]]= function(_0x3b5ax45){var _0x3b5ax46=document[_0x31fc[339]](_0x31fc[344]);_0x3b5ax46[_0x31fc[340]]= _0x3b5ax45;return _0x3b5ax46};EditorUi[_0x31fc[10]][_0x31fc[345]]= function(_0x3b5ax45){var _0x3b5ax46=document[_0x31fc[339]](_0x3b5ax45);return _0x3b5ax46};EditorUi[_0x31fc[10]][_0x31fc[346]]= function(_0x3b5ax45){var _0x3b5ax46=document[_0x31fc[339]](_0x31fc[347]);_0x3b5ax46[_0x31fc[340]]= _0x3b5ax45;return _0x3b5ax46};EditorUi[_0x31fc[10]][_0x31fc[337]]= function(_0x3b5ax46,_0x3b5ax47,_0x3b5ax48,_0x3b5ax49){var _0x3b5ax4a=null;var _0x3b5ax4b=null;function _0x3b5ax4c(){return parseInt(((_0x3b5ax47)?_0x3b5ax46[_0x31fc[6]][_0x31fc[306]]:_0x3b5ax46[_0x31fc[6]][_0x31fc[305]]))}function _0x3b5ax4d(_0x3b5ax6){if(_0x3b5ax4a!= null){var _0x3b5ax4e= new mxPoint(mxEvent[_0x31fc[348]](_0x3b5ax6),mxEvent[_0x31fc[349]](_0x3b5ax6));_0x3b5ax49(Math[_0x31fc[299]](0,_0x3b5ax4b+ ((_0x3b5ax47)?(_0x3b5ax4e[_0x31fc[350]]- _0x3b5ax4a[_0x31fc[350]]):(_0x3b5ax4a[_0x31fc[351]]- _0x3b5ax4e[_0x31fc[351]]))- _0x3b5ax48));mxEvent[_0x31fc[74]](_0x3b5ax6)}}function _0x3b5ax4f(_0x3b5ax6){_0x3b5ax4d(_0x3b5ax6);_0x3b5ax4a= null;_0x3b5ax4b= null}mxEvent[_0x31fc[82]](_0x3b5ax46,function(_0x3b5ax6){_0x3b5ax4a= new mxPoint(mxEvent[_0x31fc[348]](_0x3b5ax6),mxEvent[_0x31fc[349]](_0x3b5ax6));_0x3b5ax4b= _0x3b5ax4c();mxEvent[_0x31fc[74]](_0x3b5ax6)});mxEvent[_0x31fc[33]](document,_0x31fc[352],_0x3b5ax4d);mxEvent[_0x31fc[33]](document,_0x31fc[353],_0x3b5ax4d);mxEvent[_0x31fc[33]](document,_0x31fc[354],_0x3b5ax4f);mxEvent[_0x31fc[33]](document,_0x31fc[355],_0x3b5ax4f)};EditorUi[_0x31fc[10]][_0x31fc[73]]= function(_0x3b5ax46,_0x3b5ax3d,_0x3b5ax3e,_0x3b5ax50,_0x3b5ax51,_0x3b5ax52){this[_0x31fc[356]]();this[_0x31fc[357]]= new Dialog(this,_0x3b5ax46,_0x3b5ax3d,(mxClient[_0x31fc[358]])?_0x3b5ax3e- 12:_0x3b5ax3e,_0x3b5ax50,_0x3b5ax51,_0x3b5ax52)};EditorUi[_0x31fc[10]][_0x31fc[356]]= function(){if(this[_0x31fc[357]]!= null){this[_0x31fc[357]][_0x31fc[359]]();this[_0x31fc[357]]= null;this[_0x31fc[0]][_0x31fc[4]][_0x31fc[1]][_0x31fc[47]]()}};EditorUi[_0x31fc[10]][_0x31fc[360]]= function(_0x3b5ax53){if(!_0x3b5ax53&& this[_0x31fc[0]][_0x31fc[125]]!= null){this[_0x31fc[172]](this[_0x31fc[0]][_0x31fc[361]]())}else {this[_0x31fc[73]]( new SaveDialog(this)[_0x31fc[1]],300,100,true,true)}};EditorUi[_0x31fc[10]][_0x31fc[362]]= function(_0x3b5ax53){if(!_0x3b5ax53&& this[_0x31fc[0]][_0x31fc[125]]!= null){this[_0x31fc[224]](this[_0x31fc[0]][_0x31fc[361]]())}else {}};EditorUi[_0x31fc[10]][_0x31fc[363]]= function(_0x3b5ax54,_0x3b5ax55,_0x3b5ax56){var _0x3b5ax3=this[_0x31fc[0]][_0x31fc[4]];var _0x3b5axb=_0x3b5ax3[_0x31fc[264]]();_0x3b5ax55= this[_0x31fc[364]]!= null?this[_0x31fc[364]]:_0x3b5ax55;_0x3b5ax3[_0x31fc[65]]()[_0x31fc[365]]();try{_0x3b5ax54[_0x31fc[366]](_0x3b5ax3[_0x31fc[222]](),_0x3b5axb)}catch(e){throw e}finally{if(_0x3b5ax55&& navigator[_0x31fc[368]][_0x31fc[69]](_0x31fc[367])< 0){var _0x3b5ax57= new mxMorphing(_0x3b5ax3);_0x3b5ax57[_0x31fc[33]](mxEvent.DONE,mxUtils[_0x31fc[20]](this,function(){_0x3b5ax3[_0x31fc[65]]()[_0x31fc[369]]()}));_0x3b5ax57[_0x31fc[370]]()}else {_0x3b5ax3[_0x31fc[65]]()[_0x31fc[369]]()}}};EditorUi[_0x31fc[10]][_0x31fc[97]]= function(_0x3b5ax1){var _0x3b5ax3=this[_0x31fc[0]][_0x31fc[4]];var _0x3b5axf= new mxKeyHandler(_0x3b5ax3);_0x3b5axf[_0x31fc[371]]= function(_0x3b5ax6){return mxEvent[_0x31fc[371]](_0x3b5ax6)|| (mxClient[_0x31fc[372]]&& _0x3b5ax6[_0x31fc[373]])};function _0x3b5ax58(_0x3b5ax59){if(!_0x3b5ax3[_0x31fc[245]]()){var _0x3b5ax48=0;var _0x3b5ax5a=0;if(_0x3b5ax59== 37){_0x3b5ax48= -1}else {if(_0x3b5ax59== 38){_0x3b5ax5a= -1}else {if(_0x3b5ax59== 39){_0x3b5ax48= 1}else {if(_0x3b5ax59== 40){_0x3b5ax5a= 1}}}};_0x3b5ax3[_0x31fc[374]](_0x3b5ax3[_0x31fc[246]](),_0x3b5ax48,_0x3b5ax5a);_0x3b5ax3[_0x31fc[375]](_0x3b5ax3[_0x31fc[264]]())}}var _0x3b5ax5b=mxUtils[_0x31fc[20]](this,function(_0x3b5ax5c,_0x3b5ax5d,_0x3b5ax26,_0x3b5ax5e){var _0x3b5ax5f=this[_0x31fc[12]][_0x31fc[112]](_0x3b5ax26);if(_0x3b5ax5f!= null){var _0x3b5ax20=function(){if(_0x3b5ax5f[_0x31fc[376]]){_0x3b5ax5f[_0x31fc[377]]()}};if(_0x3b5ax5d){if(_0x3b5ax5e){_0x3b5axf[_0x31fc[378]](_0x3b5ax5c,_0x3b5ax20)}else {_0x3b5axf[_0x31fc[379]](_0x3b5ax5c,_0x3b5ax20)}}else {if(_0x3b5ax5e){_0x3b5axf[_0x31fc[380]](_0x3b5ax5c,_0x3b5ax20)}else {_0x3b5axf[_0x31fc[381]](_0x3b5ax5c,_0x3b5ax20)}}}});var _0x3b5ax60=this;var _0x3b5ax61=_0x3b5axf[_0x31fc[382]];_0x3b5axf[_0x31fc[382]]= function(_0x3b5ax6){_0x3b5ax60[_0x31fc[356]]();_0x3b5ax61[_0x31fc[50]](this,arguments)};_0x3b5axf[_0x31fc[383]]= function(){};_0x3b5axf[_0x31fc[381]](8,function(){_0x3b5ax3[_0x31fc[384]](true)});_0x3b5axf[_0x31fc[381]](13,function(){_0x3b5ax3[_0x31fc[384]](false)});_0x3b5axf[_0x31fc[381]](33,function(){_0x3b5ax3[_0x31fc[288]]()});_0x3b5axf[_0x31fc[381]](34,function(){_0x3b5ax3[_0x31fc[289]]()});_0x3b5axf[_0x31fc[381]](36,function(){_0x3b5ax3[_0x31fc[287]]()});_0x3b5axf[_0x31fc[381]](35,function(){_0x3b5ax3[_0x31fc[15]]()});_0x3b5axf[_0x31fc[381]](37,function(){_0x3b5ax58(37)});_0x3b5axf[_0x31fc[381]](38,function(){_0x3b5ax58(38)});_0x3b5axf[_0x31fc[381]](39,function(){_0x3b5ax58(39)});_0x3b5axf[_0x31fc[381]](40,function(){_0x3b5ax58(40)});_0x3b5axf[_0x31fc[381]](113,function(){_0x3b5ax3[_0x31fc[70]]()});_0x3b5ax5b(46,false,_0x31fc[247]);_0x3b5ax5b(82,true,_0x31fc[257]);_0x3b5ax5b(83,true,_0x31fc[172]);_0x3b5ax5b(83,true,_0x31fc[180],true);_0x3b5ax5b(107,false,_0x31fc[385]);_0x3b5ax5b(109,false,_0x31fc[386]);_0x3b5ax5b(65,true,_0x31fc[387]);_0x3b5ax5b(86,true,_0x31fc[388],true);_0x3b5ax5b(69,true,_0x31fc[389],true);_0x3b5ax5b(69,true,_0x31fc[390]);_0x3b5ax5b(66,true,_0x31fc[253]);_0x3b5ax5b(70,true,_0x31fc[252]);_0x3b5ax5b(68,true,_0x31fc[248]);_0x3b5ax5b(90,true,_0x31fc[241]);_0x3b5ax5b(89,true,_0x31fc[242]);_0x3b5ax5b(88,true,_0x31fc[115]);_0x3b5ax5b(67,true,_0x31fc[116]);_0x3b5ax5b(81,true,_0x31fc[391]);_0x3b5ax5b(86,true,_0x31fc[111]);_0x3b5ax5b(71,true,_0x31fc[263]);_0x3b5ax5b(71,true,_0x31fc[392],true);_0x3b5ax5b(85,true,_0x31fc[265]);_0x3b5ax5b(112,false,_0x31fc[393]);_0x3b5ax5b(80,true,_0x31fc[224],true);return _0x3b5axf};EditorUi[_0x31fc[10]][_0x31fc[58]]= function(_0x3b5ax3,_0x3b5ax36,_0x3b5ax62,_0x3b5ax63){for(var _0x3b5ax37=0;_0x3b5ax37< _0x3b5ax36[_0x31fc[143]];_0x3b5ax37++){_0x3b5ax3[_0x31fc[396]]( new mxMultiplicity(true,_0x3b5ax36[_0x3b5ax37],null,null,_0x3b5ax62[_0x3b5ax37][0],_0x3b5ax62[_0x3b5ax37][1],null,mxResources[_0x31fc[112]](_0x3b5ax36[_0x3b5ax37])+ _0x31fc[394]+ _0x3b5ax62[_0x3b5ax37][0]+ _0x31fc[395],null));_0x3b5ax3[_0x31fc[396]]( new mxMultiplicity(false,_0x3b5ax36[_0x3b5ax37],null,null,_0x3b5ax63[_0x3b5ax37][0],_0x3b5ax63[_0x3b5ax37][1],null,mxResources[_0x31fc[112]](_0x3b5ax36[_0x3b5ax37])+ _0x31fc[394]+ _0x3b5ax63[_0x3b5ax37][0]+ _0x31fc[397],null))}} \ No newline at end of file diff --git a/public/assets/plugins/jscripty/js/Graph.js b/public/assets/plugins/jscripty/js/Graph.js index dda2a33..b82fbcd 100644 --- a/public/assets/plugins/jscripty/js/Graph.js +++ b/public/assets/plugins/jscripty/js/Graph.js @@ -1,644 +1 @@ -/** - * $Id: Graph.js,v 1.14 2013-02-16 10:19:54 gaudenz Exp $ - * Copyright (c) 2006-2012, JGraph Ltd - */ -/** - * Constructs a new graph instance. Note that the constructor does not take a - * container because the graph instance is needed for creating the UI, which - * in turn will create the container for the graph. Hence, the container is - * assigned later in EditorUi. - */ -Graph = function(container, model, renderHint, stylesheet) { - mxGraph.call(this, container, model, renderHint, stylesheet); - - this.setConnectable(true); - this.setDropEnabled(false); - this.setPanning(true); - this.setTooltips(!mxClient.IS_TOUCH); - this.setAllowLoops(false); - this.setMultigraph(false); - this.allowAutoPanning = true; - this.resetEdgesOnConnect = false; - this.constrainChildren = false; - - // Centers the port icon on the target port - this.connectionHandler.targetConnectImage = true; - - // Does not allow dangling edges - this.setAllowDanglingEdges(false); - - // Enables cloning of connection sources - this.connectionHandler.setCreateTarget(false); - - // Disables built-in connection starts - this.connectionHandler.isValidSource = function() { - return mxConnectionHandler.prototype.isValidSource.apply(this, arguments) && urlParams['connect'] != '2'; - }; - - // Sets the style to be used when an elbow edge is double clicked - this.alternateEdgeStyle = 'vertical'; - - if (stylesheet == null) { - this.loadStylesheet(); - } - - // Creates rubberband selection - var rubberband = new mxRubberband(this); - - this.getRubberband = function() { - return rubberband; - }; - - // Shows hand cursor while panning - 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'; - })); - - // Adds support for HTML labels via style. Note: Currently, only the Java - // backend supports HTML labels but CSS support is limited to the following: - // http://docs.oracle.com/javase/6/docs/api/index.html?javax/swing/text/html/CSS.html - this.isHtmlLabel = function(cell) { - var state = this.view.getState(cell); - var style = (state != null) ? state.style : this.getCellStyle(cell); - - return style['html'] == '1' || style['whiteSpace'] == 'wrap'; - }; - - // HTML entities are displayed as plain text in wrapped plain text labels - this.cellRenderer.getLabelValue = function(state) { - var result = mxCellRenderer.prototype.getLabelValue.apply(this, arguments); - - if (state.style['whiteSpace'] == 'wrap' && state.style['html'] != 1) { - result = mxUtils.htmlEntities(result, false); - } - - return result; - }; - - // Unlocks all cells - this.isCellLocked = function(cell) { - return false; - }; - - // Tap and hold brings up context menu. - // Tolerance slightly below graph tolerance is better. - this.connectionHandler.tapAndHoldTolerance = 16; - - // Tap and hold on background starts rubberband on cell starts connecting - var connectionHandlerTapAndHold = this.connectionHandler.tapAndHold; - this.connectionHandler.tapAndHold = function(me, state) { - if (state == null) { - if (!this.graph.panningHandler.active) { - rubberband.start(me.getGraphX(), me.getGraphY()); - this.graph.panningHandler.panningTrigger = false; - } - } else if (tapAndHoldStartsConnection) { - connectionHandlerTapAndHold.apply(this, arguments); - } else if (this.graph.isCellSelected(state.cell) && this.graph.getSelectionCount() > 1) { - this.graph.removeSelectionCell(state.cell); - } - }; - - if (touchStyle) { - this.initTouch(); - } -}; - -// Graph inherits from mxGraph -mxUtils.extend(Graph, mxGraph); - -/** - * Allows to all values in fit. - */ -Graph.prototype.minFitScale = null; - -/** - * Allows to all values in fit. - */ -Graph.prototype.maxFitScale = null; - -/** - * Loads the stylesheet for this graph. - */ -Graph.prototype.loadStylesheet = function() { - var node = mxUtils.load(STYLE_PATH + '/default.xml').getDocumentElement(); - var dec = new mxCodec(node.ownerDocument); - dec.decode(node, this.getStylesheet()); -}; - -/** - * Inverts the elbow edge style without removing existing styles. - */ -Graph.prototype.flipEdge = function(edge) { - if (edge != null) { - var state = this.view.getState(edge); - var style = (state != null) ? state.style : this.getCellStyle(edge); - - if (style != null) { - var elbow = mxUtils.getValue(style, mxConstants.STYLE_ELBOW, - mxConstants.ELBOW_HORIZONTAL); - var value = (elbow == mxConstants.ELBOW_HORIZONTAL) ? - mxConstants.ELBOW_VERTICAL : mxConstants.ELBOW_HORIZONTAL; - this.setCellStyles(mxConstants.STYLE_ELBOW, value, [edge]); - } - } -}; - -/** - * Sets the default edge for future connections. - */ -Graph.prototype.setDefaultEdge = function(cell) { - if (cell != null && this.getModel().isEdge(cell)) { - // Take a snapshot of the cell at the moment of calling - var proto = this.getModel().cloneCells([cell])[0]; - - // Delete existing points - if (proto.geometry != null) { - proto.geometry.points = null; - } - - // Delete entry-/exitXY styles - var style = proto.getStyle(); - style = mxUtils.setStyle(style, mxConstants.STYLE_ENTRY_X, null); - style = mxUtils.setStyle(style, mxConstants.STYLE_ENTRY_Y, null); - style = mxUtils.setStyle(style, mxConstants.STYLE_EXIT_X, null); - style = mxUtils.setStyle(style, mxConstants.STYLE_EXIT_Y, null); - proto.setStyle(style); - - // Uses edge template for connect preview - this.connectionHandler.createEdgeState = function(me) { - return this.graph.view.createState(proto); - }; - - // Creates new connections from edge template - this.connectionHandler.factoryMethod = function() { - return this.graph.cloneCells([proto])[0]; - }; - } -}; - -/** - * Disables folding for non-swimlanes. - */ -Graph.prototype.isCellFoldable = function(cell) { - return this.foldingEnabled && this.isSwimlane(cell); -}; - -/** - * Disables drill-down for non-swimlanes. - */ -Graph.prototype.isValidRoot = function(cell) { - return this.isSwimlane(cell); -}; - -/** - * Overrides createGroupCell to set the group style for new groups to 'group'. - */ -Graph.prototype.createGroupCell = function() { - var group = mxGraph.prototype.createGroupCell.apply(this, arguments); - group.setStyle('group'); - - return group; -}; - -/** - * Giuseppe Careri - * Overrides tooltips to show position and size - */ -Graph.prototype.getTooltipForCell = function(cell) { - var tip = ''; - - if (this.getModel().isVertex(cell)) { - // var geo = this.getCellGeometry(cell); - - // var f2 = function(x) - // { - // return Math.round(parseFloat(x) * 100) / 100; - // }; - - // if (geo != null) - // { - // if (tip == null) - // { - // tip = ''; - // } - // else if (tip.length > 0) - // { - // tip += '\n'; - // } - - // tip += 'X: ' + f2(geo.x) + '\nY: ' + f2(geo.y) + '\nW: ' + f2(geo.width) + '\nH: ' + f2(geo.height); - // } - - tip += mxResources.get('description_' + cell.value.nodeName) || ''; - } else if (this.getModel().isEdge(cell)) { - tip = mxGraph.prototype.getTooltipForCell.apply(this, arguments); - } - - return tip; -}; - -/** - * Giuseppe Careri - * Returns the label for the given cell. - */ -Graph.prototype.convertValueToString = function(cell) { - if (cell.value != null && typeof(cell.value) == 'object') { - return cell.value.getAttribute('label'); - } - - return mxGraph.prototype.convertValueToString.apply(this, arguments); -}; - -/** - * Giuseppe Careri - * Handles label changes for XML user objects. - */ -Graph.prototype.cellLabelChanged = function(cell, value, autoSize) { - if (cell.value != null && typeof(cell.value) == 'object') { - var tmp = cell.value.cloneNode(true); - tmp.setAttribute('label', value); - value = tmp; - } - - mxGraph.prototype.cellLabelChanged.apply(this, arguments); -}; - -/** - * Sets the link for the given cell. - */ -Graph.prototype.setLinkForCell = function(cell, link) { - var value = null; - - if (cell.value != null && typeof(cell.value) == 'object') { - value = cell.value.cloneNode(true); - } else { - var doc = mxUtils.createXmlDocument(); - - value = doc.createElement('UserObject'); - value.setAttribute('label', cell.value); - } - - if (link != null && link.length > 0) { - value.setAttribute('link', link); - } else { - value.removeAttribute('link'); - } - - this.model.setValue(cell, value); -}; - -/** - * Returns the link for the given cell. - */ -Graph.prototype.getLinkForCell = function(cell) { - if (cell.value != null && typeof(cell.value) == 'object') { - return cell.value.getAttribute('link'); - } - - return null; -}; - -/** - * Customized graph for touch devices. - */ -Graph.prototype.initTouch = function() { - // Disables new connections via "hotspot" - this.connectionHandler.marker.isEnabled = function() { - return this.graph.connectionHandler.first != null; - }; - - // Hides menu when editing starts - this.addListener(mxEvent.START_EDITING, function(sender, evt) { - this.panningHandler.hideMenu(); - }); - - // Context menu for touchstyle - var showMenu = false; - var menuCell = null; - - // Checks if native hit detection did not return anything and does custom - // hit detection for edges to take into account the tolerance - this.updateMouseEvent = function(me) { - mxGraph.prototype.updateMouseEvent.apply(this, arguments); - - if (me.getState() == null) { - var cell = this.getCellAt(me.graphX, me.graphY); - - if (this.getModel().isEdge(cell)) { - me.state = this.view.getState(cell); - - if (me.state != null && me.state.shape != null) { - this.container.style.cursor = me.state.shape.node.style.cursor; - } - } - } - - if (me.getState() == null) { - this.container.style.cursor = 'default'; - } - }; - - // Handles popup menu on touch devices (tap selected cell) - this.fireMouseEvent = function(evtName, me, sender) { - if (evtName == mxEvent.MOUSE_DOWN) { - if (!this.panningHandler.isMenuShowing()) { - menuCell = me.getCell(); - showMenu = (menuCell != null) ? this.isCellSelected(menuCell) : this.isSelectionEmpty(); - } else { - showMenu = false; - menuCell = null; - } - } else if (evtName == mxEvent.MOUSE_UP) { - if (showMenu && !this.isEditing()) { - if (!this.panningHandler.isMenuShowing()) { - var x = mxEvent.getClientX(me.getEvent()); - var y = mxEvent.getClientY(me.getEvent()); - - this.panningHandler.popup(x + 16, y, menuCell, me.getEvent()); - } - - showMenu = false; - menuCell = null; - me.consume(); - - return; - } - - showMenu = false; - menuCell = null; - } - - mxGraph.prototype.fireMouseEvent.apply(this, arguments); - - if (evtName == mxEvent.MOUSE_MOVE && me.isConsumed()) { - showMenu = false; - menuCell = null; - } - }; -}; - -/** - * Implements touch devices. - */ -(function() { - // Enables rotation handle - mxVertexHandler.prototype.rotationEnabled = true; - - // Matches label positions of mxGraph 1.x - mxText.prototype.baseSpacingTop = 5; - mxText.prototype.baseSpacingBottom = 1; - - // Touch-specific static overrides - if (touchStyle) { - // Sets constants for touch style - mxConstants.HANDLE_SIZE = 16; - mxConstants.LABEL_HANDLE_SIZE = 7; - - // Larger tolerance and grid for real touch devices - if (mxClient.IS_TOUCH) { - mxVertexHandler.prototype.tolerance = 4; - mxEdgeHandler.prototype.tolerance = 6; - Graph.prototype.tolerance = 14; - Graph.prototype.gridSize = 20; - - // One finger pans (no rubberband selection) must start regardless of mouse button - mxPanningHandler.prototype.selectOnPopup = false; - mxPanningHandler.prototype.useLeftButtonForPanning = true; - mxPanningHandler.prototype.isPanningTrigger = function(me) { - var evt = me.getEvent(); - - return (this.useLeftButtonForPanning && (this.ignoreCell || me.getState() == null) - /* && - mxEvent.isLeftMouseButton(evt)*/ - ) || (mxEvent.isControlDown(evt) && - mxEvent.isShiftDown(evt)) || (this.usePopupTrigger && - mxEvent.isPopupTrigger(evt)); - }; - } - - // Don't clear selection if multiple cells selected - var graphHandlerMouseDown = mxGraphHandler.prototype.mouseDown; - mxGraphHandler.prototype.mouseDown = function(sender, me) { - graphHandlerMouseDown.apply(this, arguments); - - if (this.graph.isCellSelected(me.getCell()) && this.graph.getSelectionCount() > 1) { - this.delayedSelection = false; - } - }; - - // Changes order of panninghandler - Graph.prototype.createHandlers = function(container) { - this.tooltipHandler = new mxTooltipHandler(this); - this.tooltipHandler.setEnabled(false); - // Selection cells first - this.selectionCellsHandler = new mxSelectionCellsHandler(this); - this.panningHandler = new mxPanningHandler(this); - this.panningHandler.panningEnabled = false; - this.connectionHandler = new mxConnectionHandler(this); - this.connectionHandler.setEnabled(false); - this.graphHandler = new mxGraphHandler(this); - }; - - // On connect the target is selected and we clone the cell of the preview edge for insert - mxConnectionHandler.prototype.selectCells = function(edge, target) { - if (touchStyle && target != null) { - this.graph.setSelectionCell(target); - } else { - this.graph.setSelectionCell(edge); - } - }; - - // Overrides double click handling to use the tolerance - // FIXME: Double click on edges in iPad needs focus on textarea - var graphDblClick = mxGraph.prototype.dblClick; - Graph.prototype.dblClick = function(evt, cell) { - if (cell == null) { - var pt = mxUtils.convertPoint(this.container, - mxEvent.getClientX(evt), mxEvent.getClientY(evt)); - cell = this.getCellAt(pt.x, pt.y); - } - - graphDblClick.call(this, evt, cell); - }; - - // Rounded edge and vertex handles - var touchHandle = new mxImage(IMAGE_PATH + '/touch-handle.png', 16, 16); - mxVertexHandler.prototype.handleImage = touchHandle; - mxEdgeHandler.prototype.handleImage = touchHandle; - mxOutline.prototype.sizerImage = touchHandle; - - // Pre-fetches touch handle - new Image().src = touchHandle.src; - - // Adds connect icon to selected vertices - var connectorSrc = IMAGE_PATH + '/touch-connector.png'; - - var vertexHandlerInit = mxVertexHandler.prototype.init; - mxVertexHandler.prototype.init = function() { - vertexHandlerInit.apply(this, arguments); - - // Only show connector image on one cell and do not show on containers - if (showConnectorImg && this.graph.connectionHandler.isEnabled() && - this.graph.isCellConnectable(this.state.cell) && - !this.graph.isValidRoot(this.state.cell) && - this.graph.getSelectionCount() == 1) { - this.connectorImg = mxUtils.createImage(connectorSrc); - this.connectorImg.style.cursor = 'pointer'; - this.connectorImg.style.width = '29px'; - this.connectorImg.style.height = '29px'; - this.connectorImg.style.position = 'absolute'; - - if (!mxClient.IS_TOUCH) { - this.connectorImg.setAttribute('title', mxResources.get('connect')); - mxEvent.redirectMouseEvents(this.connectorImg, this.graph, this.state); - } - - // Adds 2px tolerance - this.connectorImg.style.padding = '2px'; - - // Starts connecting on touch/mouse down - mxEvent.addGestureListeners(this.connectorImg, - mxUtils.bind(this, function(evt) { - this.graph.panningHandler.hideMenu(); - var pt = mxUtils.convertPoint(this.graph.container, - mxEvent.getClientX(evt), mxEvent.getClientY(evt)); - this.graph.connectionHandler.start(this.state, pt.x, pt.y); - this.graph.isMouseDown = true; - mxEvent.consume(evt); - }) - ); - - this.graph.container.appendChild(this.connectorImg); - } - - this.redrawTools(); - }; - - var vertexHandlerRedraw = mxVertexHandler.prototype.redraw; - mxVertexHandler.prototype.redraw = function() { - vertexHandlerRedraw.apply(this); - this.redrawTools(); - }; - - mxVertexHandler.prototype.redrawTools = function() { - if (this.state != null && this.connectorImg != null) { - // Top right for single-sizer - if (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'; - } else { - this.connectorImg.style.left = (this.state.x + this.state.width + mxConstants.HANDLE_SIZE / 2 + 4 /* - 2 padding*/ ) + 'px'; - this.connectorImg.style.top = (this.state.y + (this.state.height - this.connectorImg.offsetHeight) / 2) + 'px'; - } - } - }; - - var vertexHandlerDestroy = mxVertexHandler.prototype.destroy; - mxVertexHandler.prototype.destroy = function(sender, me) { - vertexHandlerDestroy.apply(this, arguments); - - if (this.connectorImg != null) { - this.connectorImg.parentNode.removeChild(this.connectorImg); - this.connectorImg = null; - } - }; - - // Pre-fetches touch connector - new Image().src = connectorSrc; - } else { - var img = new mxImage(IMAGE_PATH + '/connector.png', 15, 15); - mxConnectionHandler.prototype.connectImage = img; - - // Pre-fetches img - new Image().src = img.src; - - if (urlParams['connect'] == '2') // not touchStyle - { - var img = new mxImage(IMAGE_PATH + '/connector.png', 15, 15); - - var vertexHandlerInit = mxVertexHandler.prototype.init; - mxVertexHandler.prototype.init = function() { - vertexHandlerInit.apply(this, arguments); - - // Only show connector image on one cell and do not show on containers - if (showConnectorImg && this.graph.connectionHandler.isEnabled() && - this.graph.isCellConnectable(this.state.cell) && - !this.graph.isValidRoot(this.state.cell) && - this.graph.getSelectionCount() == 1) { - // Workaround for event redirection via image tag in quirks and IE8 - if (mxClient.IS_IE && !mxClient.IS_SVG) { - this.connectorImg = document.createElement('div'); - this.connectorImg.style.backgroundImage = 'url(' + img.src + ')'; - this.connectorImg.style.backgroundPosition = 'center'; - this.connectorImg.style.backgroundRepeat = 'no-repeat'; - this.connectorImg.style.width = (img.width + 4) + 'px'; - this.connectorImg.style.height = (img.height + 4) + 'px'; - this.connectorImg.style.display = (mxClient.IS_QUIRKS) ? 'inline' : 'inline-block'; - } else { - this.connectorImg = mxUtils.createImage(img.src); - this.connectorImg.style.width = img.width + 'px'; - this.connectorImg.style.height = img.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); - - // Adds 2px tolerance - this.connectorImg.style.padding = '2px'; - - // Starts connecting on touch/mouse down - mxEvent.addListener(this.connectorImg, 'mousedown', - mxUtils.bind(this, function(evt) { - this.graph.panningHandler.hideMenu(); - var pt = mxUtils.convertPoint(this.graph.container, - mxEvent.getClientX(evt), mxEvent.getClientY(evt)); - this.graph.connectionHandler.start(this.state, pt.x, pt.y); - this.graph.isMouseDown = true; - mxEvent.consume(evt); - }) - ); - - this.graph.container.appendChild(this.connectorImg); - } - - this.redrawTools(); - }; - - var vertexHandlerRedraw = mxVertexHandler.prototype.redraw; - mxVertexHandler.prototype.redraw = function() { - vertexHandlerRedraw.apply(this); - this.redrawTools(); - }; - - mxVertexHandler.prototype.redrawTools = function() { - if (this.state != null && this.connectorImg != null) { - // Top right for single-sizer - if (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'; - } else { - this.connectorImg.style.left = (this.state.x + this.state.width + mxConstants.HANDLE_SIZE / 2 + 2 /* - 2 padding*/ ) + 'px'; - this.connectorImg.style.top = (this.state.y + (this.state.height - this.connectorImg.offsetHeight) / 2) + 'px'; - } - } - }; - - var vertexHandlerDestroy = mxVertexHandler.prototype.destroy; - mxVertexHandler.prototype.destroy = function(sender, me) { - vertexHandlerDestroy.apply(this, arguments); - - if (this.connectorImg != null) { - this.connectorImg.parentNode.removeChild(this.connectorImg); - this.connectorImg = null; - } - }; - } - } -})(); +var _0x4d54=["\x63\x61\x6C\x6C","\x73\x65\x74\x43\x6F\x6E\x6E\x65\x63\x74\x61\x62\x6C\x65","\x73\x65\x74\x44\x72\x6F\x70\x45\x6E\x61\x62\x6C\x65\x64","\x73\x65\x74\x50\x61\x6E\x6E\x69\x6E\x67","\x73\x65\x74\x54\x6F\x6F\x6C\x74\x69\x70\x73","\x73\x65\x74\x41\x6C\x6C\x6F\x77\x4C\x6F\x6F\x70\x73","\x73\x65\x74\x4D\x75\x6C\x74\x69\x67\x72\x61\x70\x68","\x61\x6C\x6C\x6F\x77\x41\x75\x74\x6F\x50\x61\x6E\x6E\x69\x6E\x67","\x72\x65\x73\x65\x74\x45\x64\x67\x65\x73\x4F\x6E\x43\x6F\x6E\x6E\x65\x63\x74","\x63\x6F\x6E\x73\x74\x72\x61\x69\x6E\x43\x68\x69\x6C\x64\x72\x65\x6E","\x74\x61\x72\x67\x65\x74\x43\x6F\x6E\x6E\x65\x63\x74\x49\x6D\x61\x67\x65","\x63\x6F\x6E\x6E\x65\x63\x74\x69\x6F\x6E\x48\x61\x6E\x64\x6C\x65\x72","\x73\x65\x74\x41\x6C\x6C\x6F\x77\x44\x61\x6E\x67\x6C\x69\x6E\x67\x45\x64\x67\x65\x73","\x73\x65\x74\x43\x72\x65\x61\x74\x65\x54\x61\x72\x67\x65\x74","\x69\x73\x56\x61\x6C\x69\x64\x53\x6F\x75\x72\x63\x65","\x61\x70\x70\x6C\x79","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x63\x6F\x6E\x6E\x65\x63\x74","\x32","\x61\x6C\x74\x65\x72\x6E\x61\x74\x65\x45\x64\x67\x65\x53\x74\x79\x6C\x65","\x76\x65\x72\x74\x69\x63\x61\x6C","\x6C\x6F\x61\x64\x53\x74\x79\x6C\x65\x73\x68\x65\x65\x74","\x67\x65\x74\x52\x75\x62\x62\x65\x72\x62\x61\x6E\x64","\x63\x75\x72\x73\x6F\x72","\x73\x74\x79\x6C\x65","\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x70\x6F\x69\x6E\x74\x65\x72","\x62\x69\x6E\x64","\x61\x64\x64\x4C\x69\x73\x74\x65\x6E\x65\x72","\x70\x61\x6E\x6E\x69\x6E\x67\x48\x61\x6E\x64\x6C\x65\x72","\x64\x65\x66\x61\x75\x6C\x74","\x69\x73\x48\x74\x6D\x6C\x4C\x61\x62\x65\x6C","\x67\x65\x74\x53\x74\x61\x74\x65","\x76\x69\x65\x77","\x67\x65\x74\x43\x65\x6C\x6C\x53\x74\x79\x6C\x65","\x68\x74\x6D\x6C","\x31","\x77\x68\x69\x74\x65\x53\x70\x61\x63\x65","\x77\x72\x61\x70","\x67\x65\x74\x4C\x61\x62\x65\x6C\x56\x61\x6C\x75\x65","\x63\x65\x6C\x6C\x52\x65\x6E\x64\x65\x72\x65\x72","\x68\x74\x6D\x6C\x45\x6E\x74\x69\x74\x69\x65\x73","\x69\x73\x43\x65\x6C\x6C\x4C\x6F\x63\x6B\x65\x64","\x74\x61\x70\x41\x6E\x64\x48\x6F\x6C\x64\x54\x6F\x6C\x65\x72\x61\x6E\x63\x65","\x74\x61\x70\x41\x6E\x64\x48\x6F\x6C\x64","\x61\x63\x74\x69\x76\x65","\x67\x72\x61\x70\x68","\x67\x65\x74\x47\x72\x61\x70\x68\x58","\x67\x65\x74\x47\x72\x61\x70\x68\x59","\x73\x74\x61\x72\x74","\x70\x61\x6E\x6E\x69\x6E\x67\x54\x72\x69\x67\x67\x65\x72","\x63\x65\x6C\x6C","\x69\x73\x43\x65\x6C\x6C\x53\x65\x6C\x65\x63\x74\x65\x64","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x6F\x75\x6E\x74","\x72\x65\x6D\x6F\x76\x65\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C","\x69\x6E\x69\x74\x54\x6F\x75\x63\x68","\x65\x78\x74\x65\x6E\x64","\x6D\x69\x6E\x46\x69\x74\x53\x63\x61\x6C\x65","\x6D\x61\x78\x46\x69\x74\x53\x63\x61\x6C\x65","\x67\x65\x74\x44\x6F\x63\x75\x6D\x65\x6E\x74\x45\x6C\x65\x6D\x65\x6E\x74","\x2F\x64\x65\x66\x61\x75\x6C\x74\x2E\x78\x6D\x6C","\x6C\x6F\x61\x64","\x6F\x77\x6E\x65\x72\x44\x6F\x63\x75\x6D\x65\x6E\x74","\x67\x65\x74\x53\x74\x79\x6C\x65\x73\x68\x65\x65\x74","\x64\x65\x63\x6F\x64\x65","\x66\x6C\x69\x70\x45\x64\x67\x65","\x67\x65\x74\x56\x61\x6C\x75\x65","\x45\x4C\x42\x4F\x57\x5F\x48\x4F\x52\x49\x5A\x4F\x4E\x54\x41\x4C","\x45\x4C\x42\x4F\x57\x5F\x56\x45\x52\x54\x49\x43\x41\x4C","\x73\x65\x74\x43\x65\x6C\x6C\x53\x74\x79\x6C\x65\x73","\x73\x65\x74\x44\x65\x66\x61\x75\x6C\x74\x45\x64\x67\x65","\x69\x73\x45\x64\x67\x65","\x67\x65\x74\x4D\x6F\x64\x65\x6C","\x63\x6C\x6F\x6E\x65\x43\x65\x6C\x6C\x73","\x67\x65\x6F\x6D\x65\x74\x72\x79","\x70\x6F\x69\x6E\x74\x73","\x67\x65\x74\x53\x74\x79\x6C\x65","\x73\x65\x74\x53\x74\x79\x6C\x65","\x63\x72\x65\x61\x74\x65\x45\x64\x67\x65\x53\x74\x61\x74\x65","\x63\x72\x65\x61\x74\x65\x53\x74\x61\x74\x65","\x66\x61\x63\x74\x6F\x72\x79\x4D\x65\x74\x68\x6F\x64","\x69\x73\x43\x65\x6C\x6C\x46\x6F\x6C\x64\x61\x62\x6C\x65","\x66\x6F\x6C\x64\x69\x6E\x67\x45\x6E\x61\x62\x6C\x65\x64","\x69\x73\x53\x77\x69\x6D\x6C\x61\x6E\x65","\x69\x73\x56\x61\x6C\x69\x64\x52\x6F\x6F\x74","\x63\x72\x65\x61\x74\x65\x47\x72\x6F\x75\x70\x43\x65\x6C\x6C","\x67\x72\x6F\x75\x70","\x67\x65\x74\x54\x6F\x6F\x6C\x74\x69\x70\x46\x6F\x72\x43\x65\x6C\x6C","","\x69\x73\x56\x65\x72\x74\x65\x78","\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E\x5F","\x6E\x6F\x64\x65\x4E\x61\x6D\x65","\x76\x61\x6C\x75\x65","\x67\x65\x74","\x63\x6F\x6E\x76\x65\x72\x74\x56\x61\x6C\x75\x65\x54\x6F\x53\x74\x72\x69\x6E\x67","\x6F\x62\x6A\x65\x63\x74","\x6C\x61\x62\x65\x6C","\x67\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x63\x65\x6C\x6C\x4C\x61\x62\x65\x6C\x43\x68\x61\x6E\x67\x65\x64","\x63\x6C\x6F\x6E\x65\x4E\x6F\x64\x65","\x73\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x73\x65\x74\x4C\x69\x6E\x6B\x46\x6F\x72\x43\x65\x6C\x6C","\x63\x72\x65\x61\x74\x65\x58\x6D\x6C\x44\x6F\x63\x75\x6D\x65\x6E\x74","\x55\x73\x65\x72\x4F\x62\x6A\x65\x63\x74","\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74","\x6C\x65\x6E\x67\x74\x68","\x6C\x69\x6E\x6B","\x72\x65\x6D\x6F\x76\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x73\x65\x74\x56\x61\x6C\x75\x65","\x6D\x6F\x64\x65\x6C","\x67\x65\x74\x4C\x69\x6E\x6B\x46\x6F\x72\x43\x65\x6C\x6C","\x69\x73\x45\x6E\x61\x62\x6C\x65\x64","\x6D\x61\x72\x6B\x65\x72","\x66\x69\x72\x73\x74","\x68\x69\x64\x65\x4D\x65\x6E\x75","\x75\x70\x64\x61\x74\x65\x4D\x6F\x75\x73\x65\x45\x76\x65\x6E\x74","\x67\x72\x61\x70\x68\x58","\x67\x72\x61\x70\x68\x59","\x67\x65\x74\x43\x65\x6C\x6C\x41\x74","\x73\x74\x61\x74\x65","\x73\x68\x61\x70\x65","\x6E\x6F\x64\x65","\x66\x69\x72\x65\x4D\x6F\x75\x73\x65\x45\x76\x65\x6E\x74","\x4D\x4F\x55\x53\x45\x5F\x44\x4F\x57\x4E","\x69\x73\x4D\x65\x6E\x75\x53\x68\x6F\x77\x69\x6E\x67","\x67\x65\x74\x43\x65\x6C\x6C","\x69\x73\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x45\x6D\x70\x74\x79","\x4D\x4F\x55\x53\x45\x5F\x55\x50","\x69\x73\x45\x64\x69\x74\x69\x6E\x67","\x67\x65\x74\x45\x76\x65\x6E\x74","\x67\x65\x74\x43\x6C\x69\x65\x6E\x74\x58","\x67\x65\x74\x43\x6C\x69\x65\x6E\x74\x59","\x70\x6F\x70\x75\x70","\x63\x6F\x6E\x73\x75\x6D\x65","\x4D\x4F\x55\x53\x45\x5F\x4D\x4F\x56\x45","\x69\x73\x43\x6F\x6E\x73\x75\x6D\x65\x64","\x72\x6F\x74\x61\x74\x69\x6F\x6E\x45\x6E\x61\x62\x6C\x65\x64","\x62\x61\x73\x65\x53\x70\x61\x63\x69\x6E\x67\x54\x6F\x70","\x62\x61\x73\x65\x53\x70\x61\x63\x69\x6E\x67\x42\x6F\x74\x74\x6F\x6D","\x48\x41\x4E\x44\x4C\x45\x5F\x53\x49\x5A\x45","\x4C\x41\x42\x45\x4C\x5F\x48\x41\x4E\x44\x4C\x45\x5F\x53\x49\x5A\x45","\x49\x53\x5F\x54\x4F\x55\x43\x48","\x74\x6F\x6C\x65\x72\x61\x6E\x63\x65","\x67\x72\x69\x64\x53\x69\x7A\x65","\x73\x65\x6C\x65\x63\x74\x4F\x6E\x50\x6F\x70\x75\x70","\x75\x73\x65\x4C\x65\x66\x74\x42\x75\x74\x74\x6F\x6E\x46\x6F\x72\x50\x61\x6E\x6E\x69\x6E\x67","\x69\x73\x50\x61\x6E\x6E\x69\x6E\x67\x54\x72\x69\x67\x67\x65\x72","\x69\x67\x6E\x6F\x72\x65\x43\x65\x6C\x6C","\x69\x73\x43\x6F\x6E\x74\x72\x6F\x6C\x44\x6F\x77\x6E","\x69\x73\x53\x68\x69\x66\x74\x44\x6F\x77\x6E","\x75\x73\x65\x50\x6F\x70\x75\x70\x54\x72\x69\x67\x67\x65\x72","\x69\x73\x50\x6F\x70\x75\x70\x54\x72\x69\x67\x67\x65\x72","\x6D\x6F\x75\x73\x65\x44\x6F\x77\x6E","\x64\x65\x6C\x61\x79\x65\x64\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E","\x63\x72\x65\x61\x74\x65\x48\x61\x6E\x64\x6C\x65\x72\x73","\x74\x6F\x6F\x6C\x74\x69\x70\x48\x61\x6E\x64\x6C\x65\x72","\x73\x65\x74\x45\x6E\x61\x62\x6C\x65\x64","\x73\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C\x73\x48\x61\x6E\x64\x6C\x65\x72","\x70\x61\x6E\x6E\x69\x6E\x67\x45\x6E\x61\x62\x6C\x65\x64","\x67\x72\x61\x70\x68\x48\x61\x6E\x64\x6C\x65\x72","\x73\x65\x6C\x65\x63\x74\x43\x65\x6C\x6C\x73","\x73\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C","\x64\x62\x6C\x43\x6C\x69\x63\x6B","\x63\x6F\x6E\x76\x65\x72\x74\x50\x6F\x69\x6E\x74","\x78","\x79","\x2F\x74\x6F\x75\x63\x68\x2D\x68\x61\x6E\x64\x6C\x65\x2E\x70\x6E\x67","\x68\x61\x6E\x64\x6C\x65\x49\x6D\x61\x67\x65","\x73\x69\x7A\x65\x72\x49\x6D\x61\x67\x65","\x73\x72\x63","\x2F\x74\x6F\x75\x63\x68\x2D\x63\x6F\x6E\x6E\x65\x63\x74\x6F\x72\x2E\x70\x6E\x67","\x69\x6E\x69\x74","\x69\x73\x43\x65\x6C\x6C\x43\x6F\x6E\x6E\x65\x63\x74\x61\x62\x6C\x65","\x63\x6F\x6E\x6E\x65\x63\x74\x6F\x72\x49\x6D\x67","\x63\x72\x65\x61\x74\x65\x49\x6D\x61\x67\x65","\x77\x69\x64\x74\x68","\x32\x39\x70\x78","\x68\x65\x69\x67\x68\x74","\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x61\x62\x73\x6F\x6C\x75\x74\x65","\x74\x69\x74\x6C\x65","\x72\x65\x64\x69\x72\x65\x63\x74\x4D\x6F\x75\x73\x65\x45\x76\x65\x6E\x74\x73","\x70\x61\x64\x64\x69\x6E\x67","\x32\x70\x78","\x69\x73\x4D\x6F\x75\x73\x65\x44\x6F\x77\x6E","\x61\x64\x64\x47\x65\x73\x74\x75\x72\x65\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64","\x72\x65\x64\x72\x61\x77\x54\x6F\x6F\x6C\x73","\x72\x65\x64\x72\x61\x77","\x73\x69\x6E\x67\x6C\x65\x53\x69\x7A\x65\x72","\x6C\x65\x66\x74","\x6F\x66\x66\x73\x65\x74\x57\x69\x64\x74\x68","\x70\x78","\x74\x6F\x70","\x6F\x66\x66\x73\x65\x74\x48\x65\x69\x67\x68\x74","\x64\x65\x73\x74\x72\x6F\x79","\x72\x65\x6D\x6F\x76\x65\x43\x68\x69\x6C\x64","\x70\x61\x72\x65\x6E\x74\x4E\x6F\x64\x65","\x2F\x63\x6F\x6E\x6E\x65\x63\x74\x6F\x72\x2E\x70\x6E\x67","\x63\x6F\x6E\x6E\x65\x63\x74\x49\x6D\x61\x67\x65","\x49\x53\x5F\x49\x45","\x49\x53\x5F\x53\x56\x47","\x64\x69\x76","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x49\x6D\x61\x67\x65","\x75\x72\x6C\x28","\x29","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x50\x6F\x73\x69\x74\x69\x6F\x6E","\x63\x65\x6E\x74\x65\x72","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x52\x65\x70\x65\x61\x74","\x6E\x6F\x2D\x72\x65\x70\x65\x61\x74","\x64\x69\x73\x70\x6C\x61\x79","\x49\x53\x5F\x51\x55\x49\x52\x4B\x53","\x69\x6E\x6C\x69\x6E\x65","\x69\x6E\x6C\x69\x6E\x65\x2D\x62\x6C\x6F\x63\x6B","\x6D\x6F\x75\x73\x65\x64\x6F\x77\x6E"];Graph= function(_0x9d97x1,_0x9d97x2,_0x9d97x3,_0x9d97x4){mxGraph[_0x4d54[0]](this,_0x9d97x1,_0x9d97x2,_0x9d97x3,_0x9d97x4);this[_0x4d54[1]](true);this[_0x4d54[2]](false);this[_0x4d54[3]](true);this[_0x4d54[4]](!mxClient.IS_TOUCH);this[_0x4d54[5]](false);this[_0x4d54[6]](false);this[_0x4d54[7]]= true;this[_0x4d54[8]]= false;this[_0x4d54[9]]= false;this[_0x4d54[11]][_0x4d54[10]]= true;this[_0x4d54[12]](false);this[_0x4d54[11]][_0x4d54[13]](false);this[_0x4d54[11]][_0x4d54[14]]= function(){return mxConnectionHandler[_0x4d54[16]][_0x4d54[14]][_0x4d54[15]](this,arguments)&& urlParams[_0x4d54[17]]!= _0x4d54[18]};this[_0x4d54[19]]= _0x4d54[20];if(_0x9d97x4== null){this[_0x4d54[21]]()};var _0x9d97x5= new mxRubberband(this);this[_0x4d54[22]]= function(){return _0x9d97x5};this[_0x4d54[29]][_0x4d54[28]](mxEvent.PAN_START,mxUtils[_0x4d54[27]](this,function(){this[_0x4d54[25]][_0x4d54[24]][_0x4d54[23]]= _0x4d54[26]}));this[_0x4d54[29]][_0x4d54[28]](mxEvent.PAN_END,mxUtils[_0x4d54[27]](this,function(){this[_0x4d54[25]][_0x4d54[24]][_0x4d54[23]]= _0x4d54[30]}));this[_0x4d54[31]]= function(_0x9d97x6){var _0x9d97x7=this[_0x4d54[33]][_0x4d54[32]](_0x9d97x6);var _0x9d97x8=(_0x9d97x7!= null)?_0x9d97x7[_0x4d54[24]]:this[_0x4d54[34]](_0x9d97x6);return _0x9d97x8[_0x4d54[35]]== _0x4d54[36]|| _0x9d97x8[_0x4d54[37]]== _0x4d54[38]};this[_0x4d54[40]][_0x4d54[39]]= function(_0x9d97x7){var _0x9d97x9=mxCellRenderer[_0x4d54[16]][_0x4d54[39]][_0x4d54[15]](this,arguments);if(_0x9d97x7[_0x4d54[24]][_0x4d54[37]]== _0x4d54[38]&& _0x9d97x7[_0x4d54[24]][_0x4d54[35]]!= 1){_0x9d97x9= mxUtils[_0x4d54[41]](_0x9d97x9,false)};return _0x9d97x9};this[_0x4d54[42]]= function(_0x9d97x6){return false};this[_0x4d54[11]][_0x4d54[43]]= 16;var _0x9d97xa=this[_0x4d54[11]][_0x4d54[44]];this[_0x4d54[11]][_0x4d54[44]]= function(_0x9d97xb,_0x9d97x7){if(_0x9d97x7== null){if(!this[_0x4d54[46]][_0x4d54[29]][_0x4d54[45]]){_0x9d97x5[_0x4d54[49]](_0x9d97xb[_0x4d54[47]](),_0x9d97xb[_0x4d54[48]]());this[_0x4d54[46]][_0x4d54[29]][_0x4d54[50]]= false}}else {if(tapAndHoldStartsConnection){_0x9d97xa[_0x4d54[15]](this,arguments)}else {if(this[_0x4d54[46]][_0x4d54[52]](_0x9d97x7[_0x4d54[51]])&& this[_0x4d54[46]][_0x4d54[53]]()> 1){this[_0x4d54[46]][_0x4d54[54]](_0x9d97x7[_0x4d54[51]])}}}};if(touchStyle){this[_0x4d54[55]]()}};mxUtils[_0x4d54[56]](Graph,mxGraph);Graph[_0x4d54[16]][_0x4d54[57]]= null;Graph[_0x4d54[16]][_0x4d54[58]]= null;Graph[_0x4d54[16]][_0x4d54[21]]= function(){var _0x9d97xc=mxUtils[_0x4d54[61]](STYLE_PATH+ _0x4d54[60])[_0x4d54[59]]();var _0x9d97xd= new mxCodec(_0x9d97xc[_0x4d54[62]]);_0x9d97xd[_0x4d54[64]](_0x9d97xc,this[_0x4d54[63]]())};Graph[_0x4d54[16]][_0x4d54[65]]= function(_0x9d97xe){if(_0x9d97xe!= null){var _0x9d97x7=this[_0x4d54[33]][_0x4d54[32]](_0x9d97xe);var _0x9d97x8=(_0x9d97x7!= null)?_0x9d97x7[_0x4d54[24]]:this[_0x4d54[34]](_0x9d97xe);if(_0x9d97x8!= null){var _0x9d97xf=mxUtils[_0x4d54[66]](_0x9d97x8,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL);var _0x9d97x10=(_0x9d97xf== mxConstants[_0x4d54[67]])?mxConstants[_0x4d54[68]]:mxConstants[_0x4d54[67]];this[_0x4d54[69]](mxConstants.STYLE_ELBOW,_0x9d97x10,[_0x9d97xe])}}};Graph[_0x4d54[16]][_0x4d54[70]]= function(_0x9d97x6){if(_0x9d97x6!= null&& this[_0x4d54[72]]()[_0x4d54[71]](_0x9d97x6)){var _0x9d97x11=this[_0x4d54[72]]()[_0x4d54[73]]([_0x9d97x6])[0];if(_0x9d97x11[_0x4d54[74]]!= null){_0x9d97x11[_0x4d54[74]][_0x4d54[75]]= null};var _0x9d97x8=_0x9d97x11[_0x4d54[76]]();_0x9d97x8= mxUtils[_0x4d54[77]](_0x9d97x8,mxConstants.STYLE_ENTRY_X,null);_0x9d97x8= mxUtils[_0x4d54[77]](_0x9d97x8,mxConstants.STYLE_ENTRY_Y,null);_0x9d97x8= mxUtils[_0x4d54[77]](_0x9d97x8,mxConstants.STYLE_EXIT_X,null);_0x9d97x8= mxUtils[_0x4d54[77]](_0x9d97x8,mxConstants.STYLE_EXIT_Y,null);_0x9d97x11[_0x4d54[77]](_0x9d97x8);this[_0x4d54[11]][_0x4d54[78]]= function(_0x9d97xb){return this[_0x4d54[46]][_0x4d54[33]][_0x4d54[79]](_0x9d97x11)};this[_0x4d54[11]][_0x4d54[80]]= function(){return this[_0x4d54[46]][_0x4d54[73]]([_0x9d97x11])[0]}}};Graph[_0x4d54[16]][_0x4d54[81]]= function(_0x9d97x6){return this[_0x4d54[82]]&& this[_0x4d54[83]](_0x9d97x6)};Graph[_0x4d54[16]][_0x4d54[84]]= function(_0x9d97x6){return this[_0x4d54[83]](_0x9d97x6)};Graph[_0x4d54[16]][_0x4d54[85]]= function(){var _0x9d97x12=mxGraph[_0x4d54[16]][_0x4d54[85]][_0x4d54[15]](this,arguments);_0x9d97x12[_0x4d54[77]](_0x4d54[86]);return _0x9d97x12};Graph[_0x4d54[16]][_0x4d54[87]]= function(_0x9d97x6){var _0x9d97x13=_0x4d54[88];if(this[_0x4d54[72]]()[_0x4d54[89]](_0x9d97x6)){_0x9d97x13+= mxResources[_0x4d54[93]](_0x4d54[90]+ _0x9d97x6[_0x4d54[92]][_0x4d54[91]])|| _0x4d54[88]}else {if(this[_0x4d54[72]]()[_0x4d54[71]](_0x9d97x6)){_0x9d97x13= mxGraph[_0x4d54[16]][_0x4d54[87]][_0x4d54[15]](this,arguments)}};return _0x9d97x13};Graph[_0x4d54[16]][_0x4d54[94]]= function(_0x9d97x6){if(_0x9d97x6[_0x4d54[92]]!= null&& typeof (_0x9d97x6[_0x4d54[92]])== _0x4d54[95]){return _0x9d97x6[_0x4d54[92]][_0x4d54[97]](_0x4d54[96])};return mxGraph[_0x4d54[16]][_0x4d54[94]][_0x4d54[15]](this,arguments)};Graph[_0x4d54[16]][_0x4d54[98]]= function(_0x9d97x6,_0x9d97x10,_0x9d97x14){if(_0x9d97x6[_0x4d54[92]]!= null&& typeof (_0x9d97x6[_0x4d54[92]])== _0x4d54[95]){var _0x9d97x15=_0x9d97x6[_0x4d54[92]][_0x4d54[99]](true);_0x9d97x15[_0x4d54[100]](_0x4d54[96],_0x9d97x10);_0x9d97x10= _0x9d97x15};mxGraph[_0x4d54[16]][_0x4d54[98]][_0x4d54[15]](this,arguments)};Graph[_0x4d54[16]][_0x4d54[101]]= function(_0x9d97x6,_0x9d97x16){var _0x9d97x10=null;if(_0x9d97x6[_0x4d54[92]]!= null&& typeof (_0x9d97x6[_0x4d54[92]])== _0x4d54[95]){_0x9d97x10= _0x9d97x6[_0x4d54[92]][_0x4d54[99]](true)}else {var _0x9d97x17=mxUtils[_0x4d54[102]]();_0x9d97x10= _0x9d97x17[_0x4d54[104]](_0x4d54[103]);_0x9d97x10[_0x4d54[100]](_0x4d54[96],_0x9d97x6[_0x4d54[92]])};if(_0x9d97x16!= null&& _0x9d97x16[_0x4d54[105]]> 0){_0x9d97x10[_0x4d54[100]](_0x4d54[106],_0x9d97x16)}else {_0x9d97x10[_0x4d54[107]](_0x4d54[106])};this[_0x4d54[109]][_0x4d54[108]](_0x9d97x6,_0x9d97x10)};Graph[_0x4d54[16]][_0x4d54[110]]= function(_0x9d97x6){if(_0x9d97x6[_0x4d54[92]]!= null&& typeof (_0x9d97x6[_0x4d54[92]])== _0x4d54[95]){return _0x9d97x6[_0x4d54[92]][_0x4d54[97]](_0x4d54[106])};return null};Graph[_0x4d54[16]][_0x4d54[55]]= function(){this[_0x4d54[11]][_0x4d54[112]][_0x4d54[111]]= function(){return this[_0x4d54[46]][_0x4d54[11]][_0x4d54[113]]!= null};this[_0x4d54[28]](mxEvent.START_EDITING,function(_0x9d97x18,_0x9d97x19){this[_0x4d54[29]][_0x4d54[114]]()});var _0x9d97x1a=false;var _0x9d97x1b=null;this[_0x4d54[115]]= function(_0x9d97xb){mxGraph[_0x4d54[16]][_0x4d54[115]][_0x4d54[15]](this,arguments);if(_0x9d97xb[_0x4d54[32]]()== null){var _0x9d97x6=this[_0x4d54[118]](_0x9d97xb[_0x4d54[116]],_0x9d97xb[_0x4d54[117]]);if(this[_0x4d54[72]]()[_0x4d54[71]](_0x9d97x6)){_0x9d97xb[_0x4d54[119]]= this[_0x4d54[33]][_0x4d54[32]](_0x9d97x6);if(_0x9d97xb[_0x4d54[119]]!= null&& _0x9d97xb[_0x4d54[119]][_0x4d54[120]]!= null){this[_0x4d54[25]][_0x4d54[24]][_0x4d54[23]]= _0x9d97xb[_0x4d54[119]][_0x4d54[120]][_0x4d54[121]][_0x4d54[24]][_0x4d54[23]]}}};if(_0x9d97xb[_0x4d54[32]]()== null){this[_0x4d54[25]][_0x4d54[24]][_0x4d54[23]]= _0x4d54[30]}};this[_0x4d54[122]]= function(_0x9d97x1c,_0x9d97xb,_0x9d97x18){if(_0x9d97x1c== mxEvent[_0x4d54[123]]){if(!this[_0x4d54[29]][_0x4d54[124]]()){_0x9d97x1b= _0x9d97xb[_0x4d54[125]]();_0x9d97x1a= (_0x9d97x1b!= null)?this[_0x4d54[52]](_0x9d97x1b):this[_0x4d54[126]]()}else {_0x9d97x1a= false;_0x9d97x1b= null}}else {if(_0x9d97x1c== mxEvent[_0x4d54[127]]){if(_0x9d97x1a&& !this[_0x4d54[128]]()){if(!this[_0x4d54[29]][_0x4d54[124]]()){var _0x9d97x1d=mxEvent[_0x4d54[130]](_0x9d97xb[_0x4d54[129]]());var _0x9d97x1e=mxEvent[_0x4d54[131]](_0x9d97xb[_0x4d54[129]]());this[_0x4d54[29]][_0x4d54[132]](_0x9d97x1d+ 16,_0x9d97x1e,_0x9d97x1b,_0x9d97xb[_0x4d54[129]]())};_0x9d97x1a= false;_0x9d97x1b= null;_0x9d97xb[_0x4d54[133]]();return};_0x9d97x1a= false;_0x9d97x1b= null}};mxGraph[_0x4d54[16]][_0x4d54[122]][_0x4d54[15]](this,arguments);if(_0x9d97x1c== mxEvent[_0x4d54[134]]&& _0x9d97xb[_0x4d54[135]]()){_0x9d97x1a= false;_0x9d97x1b= null}}};(function(){mxVertexHandler[_0x4d54[16]][_0x4d54[136]]= true;mxText[_0x4d54[16]][_0x4d54[137]]= 5;mxText[_0x4d54[16]][_0x4d54[138]]= 1;if(touchStyle){mxConstants[_0x4d54[139]]= 16;mxConstants[_0x4d54[140]]= 7;if(mxClient[_0x4d54[141]]){mxVertexHandler[_0x4d54[16]][_0x4d54[142]]= 4;mxEdgeHandler[_0x4d54[16]][_0x4d54[142]]= 6;Graph[_0x4d54[16]][_0x4d54[142]]= 14;Graph[_0x4d54[16]][_0x4d54[143]]= 20;mxPanningHandler[_0x4d54[16]][_0x4d54[144]]= false;mxPanningHandler[_0x4d54[16]][_0x4d54[145]]= true;mxPanningHandler[_0x4d54[16]][_0x4d54[146]]= function(_0x9d97xb){var _0x9d97x19=_0x9d97xb[_0x4d54[129]]();return (this[_0x4d54[145]]&& (this[_0x4d54[147]]|| _0x9d97xb[_0x4d54[32]]()== null))|| (mxEvent[_0x4d54[148]](_0x9d97x19)&& mxEvent[_0x4d54[149]](_0x9d97x19))|| (this[_0x4d54[150]]&& mxEvent[_0x4d54[151]](_0x9d97x19))}};var _0x9d97x1f=mxGraphHandler[_0x4d54[16]][_0x4d54[152]];mxGraphHandler[_0x4d54[16]][_0x4d54[152]]= function(_0x9d97x18,_0x9d97xb){_0x9d97x1f[_0x4d54[15]](this,arguments);if(this[_0x4d54[46]][_0x4d54[52]](_0x9d97xb[_0x4d54[125]]())&& this[_0x4d54[46]][_0x4d54[53]]()> 1){this[_0x4d54[153]]= false}};Graph[_0x4d54[16]][_0x4d54[154]]= function(_0x9d97x1){this[_0x4d54[155]]= new mxTooltipHandler(this);this[_0x4d54[155]][_0x4d54[156]](false);this[_0x4d54[157]]= new mxSelectionCellsHandler(this);this[_0x4d54[29]]= new mxPanningHandler(this);this[_0x4d54[29]][_0x4d54[158]]= false;this[_0x4d54[11]]= new mxConnectionHandler(this);this[_0x4d54[11]][_0x4d54[156]](false);this[_0x4d54[159]]= new mxGraphHandler(this)};mxConnectionHandler[_0x4d54[16]][_0x4d54[160]]= function(_0x9d97xe,_0x9d97x20){if(touchStyle&& _0x9d97x20!= null){this[_0x4d54[46]][_0x4d54[161]](_0x9d97x20)}else {this[_0x4d54[46]][_0x4d54[161]](_0x9d97xe)}};var _0x9d97x21=mxGraph[_0x4d54[16]][_0x4d54[162]];Graph[_0x4d54[16]][_0x4d54[162]]= function(_0x9d97x19,_0x9d97x6){if(_0x9d97x6== null){var _0x9d97x22=mxUtils[_0x4d54[163]](this[_0x4d54[25]],mxEvent[_0x4d54[130]](_0x9d97x19),mxEvent[_0x4d54[131]](_0x9d97x19));_0x9d97x6= this[_0x4d54[118]](_0x9d97x22[_0x4d54[164]],_0x9d97x22[_0x4d54[165]])};_0x9d97x21[_0x4d54[0]](this,_0x9d97x19,_0x9d97x6)};var _0x9d97x23= new mxImage(IMAGE_PATH+ _0x4d54[166],16,16);mxVertexHandler[_0x4d54[16]][_0x4d54[167]]= _0x9d97x23;mxEdgeHandler[_0x4d54[16]][_0x4d54[167]]= _0x9d97x23;mxOutline[_0x4d54[16]][_0x4d54[168]]= _0x9d97x23; new Image()[_0x4d54[169]]= _0x9d97x23[_0x4d54[169]];var _0x9d97x24=IMAGE_PATH+ _0x4d54[170];var _0x9d97x25=mxVertexHandler[_0x4d54[16]][_0x4d54[171]];mxVertexHandler[_0x4d54[16]][_0x4d54[171]]= function(){_0x9d97x25[_0x4d54[15]](this,arguments);if(showConnectorImg&& this[_0x4d54[46]][_0x4d54[11]][_0x4d54[111]]()&& this[_0x4d54[46]][_0x4d54[172]](this[_0x4d54[119]][_0x4d54[51]])&& !this[_0x4d54[46]][_0x4d54[84]](this[_0x4d54[119]][_0x4d54[51]])&& this[_0x4d54[46]][_0x4d54[53]]()== 1){this[_0x4d54[173]]= mxUtils[_0x4d54[174]](_0x9d97x24);this[_0x4d54[173]][_0x4d54[24]][_0x4d54[23]]= _0x4d54[26];this[_0x4d54[173]][_0x4d54[24]][_0x4d54[175]]= _0x4d54[176];this[_0x4d54[173]][_0x4d54[24]][_0x4d54[177]]= _0x4d54[176];this[_0x4d54[173]][_0x4d54[24]][_0x4d54[178]]= _0x4d54[179];if(!mxClient[_0x4d54[141]]){this[_0x4d54[173]][_0x4d54[100]](_0x4d54[180],mxResources[_0x4d54[93]](_0x4d54[17]));mxEvent[_0x4d54[181]](this[_0x4d54[173]],this[_0x4d54[46]],this[_0x4d54[119]])};this[_0x4d54[173]][_0x4d54[24]][_0x4d54[182]]= _0x4d54[183];mxEvent[_0x4d54[185]](this[_0x4d54[173]],mxUtils[_0x4d54[27]](this,function(_0x9d97x19){this[_0x4d54[46]][_0x4d54[29]][_0x4d54[114]]();var _0x9d97x22=mxUtils[_0x4d54[163]](this[_0x4d54[46]][_0x4d54[25]],mxEvent[_0x4d54[130]](_0x9d97x19),mxEvent[_0x4d54[131]](_0x9d97x19));this[_0x4d54[46]][_0x4d54[11]][_0x4d54[49]](this[_0x4d54[119]],_0x9d97x22[_0x4d54[164]],_0x9d97x22[_0x4d54[165]]);this[_0x4d54[46]][_0x4d54[184]]= true;mxEvent[_0x4d54[133]](_0x9d97x19)}));this[_0x4d54[46]][_0x4d54[25]][_0x4d54[186]](this[_0x4d54[173]])};this[_0x4d54[187]]()};var _0x9d97x26=mxVertexHandler[_0x4d54[16]][_0x4d54[188]];mxVertexHandler[_0x4d54[16]][_0x4d54[188]]= function(){_0x9d97x26[_0x4d54[15]](this);this[_0x4d54[187]]()};mxVertexHandler[_0x4d54[16]][_0x4d54[187]]= function(){if(this[_0x4d54[119]]!= null&& this[_0x4d54[173]]!= null){if(mxVertexHandler[_0x4d54[16]][_0x4d54[189]]){this[_0x4d54[173]][_0x4d54[24]][_0x4d54[190]]= (this[_0x4d54[119]][_0x4d54[164]]+ this[_0x4d54[119]][_0x4d54[175]]- this[_0x4d54[173]][_0x4d54[191]]/ 2)+ _0x4d54[192];this[_0x4d54[173]][_0x4d54[24]][_0x4d54[193]]= (this[_0x4d54[119]][_0x4d54[165]]- this[_0x4d54[173]][_0x4d54[194]]/ 2)+ _0x4d54[192]}else {this[_0x4d54[173]][_0x4d54[24]][_0x4d54[190]]= (this[_0x4d54[119]][_0x4d54[164]]+ this[_0x4d54[119]][_0x4d54[175]]+ mxConstants[_0x4d54[139]]/ 2+ 4)+ _0x4d54[192];this[_0x4d54[173]][_0x4d54[24]][_0x4d54[193]]= (this[_0x4d54[119]][_0x4d54[165]]+ (this[_0x4d54[119]][_0x4d54[177]]- this[_0x4d54[173]][_0x4d54[194]])/ 2)+ _0x4d54[192]}}};var _0x9d97x27=mxVertexHandler[_0x4d54[16]][_0x4d54[195]];mxVertexHandler[_0x4d54[16]][_0x4d54[195]]= function(_0x9d97x18,_0x9d97xb){_0x9d97x27[_0x4d54[15]](this,arguments);if(this[_0x4d54[173]]!= null){this[_0x4d54[173]][_0x4d54[197]][_0x4d54[196]](this[_0x4d54[173]]);this[_0x4d54[173]]= null}}; new Image()[_0x4d54[169]]= _0x9d97x24}else {var _0x9d97x28= new mxImage(IMAGE_PATH+ _0x4d54[198],15,15);mxConnectionHandler[_0x4d54[16]][_0x4d54[199]]= _0x9d97x28; new Image()[_0x4d54[169]]= _0x9d97x28[_0x4d54[169]];if(urlParams[_0x4d54[17]]== _0x4d54[18]){var _0x9d97x28= new mxImage(IMAGE_PATH+ _0x4d54[198],15,15);var _0x9d97x25=mxVertexHandler[_0x4d54[16]][_0x4d54[171]];mxVertexHandler[_0x4d54[16]][_0x4d54[171]]= function(){_0x9d97x25[_0x4d54[15]](this,arguments);if(showConnectorImg&& this[_0x4d54[46]][_0x4d54[11]][_0x4d54[111]]()&& this[_0x4d54[46]][_0x4d54[172]](this[_0x4d54[119]][_0x4d54[51]])&& !this[_0x4d54[46]][_0x4d54[84]](this[_0x4d54[119]][_0x4d54[51]])&& this[_0x4d54[46]][_0x4d54[53]]()== 1){if(mxClient[_0x4d54[200]]&& !mxClient[_0x4d54[201]]){this[_0x4d54[173]]= document[_0x4d54[104]](_0x4d54[202]);this[_0x4d54[173]][_0x4d54[24]][_0x4d54[203]]= _0x4d54[204]+ _0x9d97x28[_0x4d54[169]]+ _0x4d54[205];this[_0x4d54[173]][_0x4d54[24]][_0x4d54[206]]= _0x4d54[207];this[_0x4d54[173]][_0x4d54[24]][_0x4d54[208]]= _0x4d54[209];this[_0x4d54[173]][_0x4d54[24]][_0x4d54[175]]= (_0x9d97x28[_0x4d54[175]]+ 4)+ _0x4d54[192];this[_0x4d54[173]][_0x4d54[24]][_0x4d54[177]]= (_0x9d97x28[_0x4d54[177]]+ 4)+ _0x4d54[192];this[_0x4d54[173]][_0x4d54[24]][_0x4d54[210]]= (mxClient[_0x4d54[211]])?_0x4d54[212]:_0x4d54[213]}else {this[_0x4d54[173]]= mxUtils[_0x4d54[174]](_0x9d97x28[_0x4d54[169]]);this[_0x4d54[173]][_0x4d54[24]][_0x4d54[175]]= _0x9d97x28[_0x4d54[175]]+ _0x4d54[192];this[_0x4d54[173]][_0x4d54[24]][_0x4d54[177]]= _0x9d97x28[_0x4d54[177]]+ _0x4d54[192]};this[_0x4d54[173]][_0x4d54[24]][_0x4d54[23]]= _0x4d54[26];this[_0x4d54[173]][_0x4d54[24]][_0x4d54[178]]= _0x4d54[179];this[_0x4d54[173]][_0x4d54[100]](_0x4d54[180],mxResources[_0x4d54[93]](_0x4d54[17]));mxEvent[_0x4d54[181]](this[_0x4d54[173]],this[_0x4d54[46]],this[_0x4d54[119]]);this[_0x4d54[173]][_0x4d54[24]][_0x4d54[182]]= _0x4d54[183];mxEvent[_0x4d54[28]](this[_0x4d54[173]],_0x4d54[214],mxUtils[_0x4d54[27]](this,function(_0x9d97x19){this[_0x4d54[46]][_0x4d54[29]][_0x4d54[114]]();var _0x9d97x22=mxUtils[_0x4d54[163]](this[_0x4d54[46]][_0x4d54[25]],mxEvent[_0x4d54[130]](_0x9d97x19),mxEvent[_0x4d54[131]](_0x9d97x19));this[_0x4d54[46]][_0x4d54[11]][_0x4d54[49]](this[_0x4d54[119]],_0x9d97x22[_0x4d54[164]],_0x9d97x22[_0x4d54[165]]);this[_0x4d54[46]][_0x4d54[184]]= true;mxEvent[_0x4d54[133]](_0x9d97x19)}));this[_0x4d54[46]][_0x4d54[25]][_0x4d54[186]](this[_0x4d54[173]])};this[_0x4d54[187]]()};var _0x9d97x26=mxVertexHandler[_0x4d54[16]][_0x4d54[188]];mxVertexHandler[_0x4d54[16]][_0x4d54[188]]= function(){_0x9d97x26[_0x4d54[15]](this);this[_0x4d54[187]]()};mxVertexHandler[_0x4d54[16]][_0x4d54[187]]= function(){if(this[_0x4d54[119]]!= null&& this[_0x4d54[173]]!= null){if(mxVertexHandler[_0x4d54[16]][_0x4d54[189]]){this[_0x4d54[173]][_0x4d54[24]][_0x4d54[190]]= (this[_0x4d54[119]][_0x4d54[164]]+ this[_0x4d54[119]][_0x4d54[175]]- this[_0x4d54[173]][_0x4d54[191]]/ 2)+ _0x4d54[192];this[_0x4d54[173]][_0x4d54[24]][_0x4d54[193]]= (this[_0x4d54[119]][_0x4d54[165]]- this[_0x4d54[173]][_0x4d54[194]]/ 2)+ _0x4d54[192]}else {this[_0x4d54[173]][_0x4d54[24]][_0x4d54[190]]= (this[_0x4d54[119]][_0x4d54[164]]+ this[_0x4d54[119]][_0x4d54[175]]+ mxConstants[_0x4d54[139]]/ 2+ 2)+ _0x4d54[192];this[_0x4d54[173]][_0x4d54[24]][_0x4d54[193]]= (this[_0x4d54[119]][_0x4d54[165]]+ (this[_0x4d54[119]][_0x4d54[177]]- this[_0x4d54[173]][_0x4d54[194]])/ 2)+ _0x4d54[192]}}};var _0x9d97x27=mxVertexHandler[_0x4d54[16]][_0x4d54[195]];mxVertexHandler[_0x4d54[16]][_0x4d54[195]]= function(_0x9d97x18,_0x9d97xb){_0x9d97x27[_0x4d54[15]](this,arguments);if(this[_0x4d54[173]]!= null){this[_0x4d54[173]][_0x4d54[197]][_0x4d54[196]](this[_0x4d54[173]]);this[_0x4d54[173]]= null}}}}})() \ No newline at end of file diff --git a/public/assets/plugins/jscripty/js/Menus.js b/public/assets/plugins/jscripty/js/Menus.js index 7d33b9e..e8ecaf2 100644 --- a/public/assets/plugins/jscripty/js/Menus.js +++ b/public/assets/plugins/jscripty/js/Menus.js @@ -1,716 +1 @@ -/** - * $Id: Menus.js,v 1.13 2013-02-20 16:21:29 gaudenz Exp $ - * Copyright (c) 2006-2012, JGraph Ltd - */ -/** - * Constructs a new graph editor - */ -Menus = function(editorUi) { - this.editorUi = editorUi; - this.menus = new Object(); - this.init(); - - // Pre-fetches checkmark image - new Image().src = IMAGE_PATH + '/checkmark.gif'; -}; - -/** - * Adds the label menu items to the given menu and parent. - */ -Menus.prototype.init = function() { - var graph = this.editorUi.editor.graph; - - this.put('fontFamily', new Menu(mxUtils.bind(this, function(menu, parent) { - var fonts = ['Helvetica', 'Verdana', 'Times New Roman', 'Garamond', - 'Comic Sans MS', - 'Courier New', 'Georgia', 'Lucida Console', 'Tahoma' - ]; - - for (var i = 0; i < fonts.length; i++) { - var tr = this.styleChange(menu, fonts[i], [mxConstants.STYLE_FONTFAMILY], [ - fonts[i] - ], null, parent); - tr.firstChild.nextSibling.style.fontFamily = fonts[i]; - } - - menu.addSeparator(parent); - this.promptChange(menu, mxResources.get('custom'), '', mxConstants.DEFAULT_FONTFAMILY, - mxConstants.STYLE_FONTFAMILY, parent); - }))); - this.put('fontSize', new Menu(mxUtils.bind(this, function(menu, parent) { - var sizes = [6, 8, 9, 10, 11, 12, 14, 18, 24, 36, 48, 72]; - - for (var i = 0; i < sizes.length; i++) { - this.styleChange(menu, sizes[i], [mxConstants.STYLE_FONTSIZE], [sizes[i]], - null, parent); - } - - menu.addSeparator(parent); - this.promptChange(menu, mxResources.get('custom'), '(pt)', '12', - mxConstants.STYLE_FONTSIZE, parent); - }))); - this.put('linewidth', new Menu(mxUtils.bind(this, function(menu, parent) { - var sizes = [1, 2, 3, 4, 8, 12, 16, 24]; - - for (var i = 0; i < sizes.length; i++) { - this.styleChange(menu, sizes[i] + 'px', [mxConstants.STYLE_STROKEWIDTH], [ - sizes[i] - ], null, parent); - } - - menu.addSeparator(parent); - this.promptChange(menu, mxResources.get('custom'), '(px)', '1', - mxConstants.STYLE_STROKEWIDTH, parent); - }))); - this.put('line', new Menu(mxUtils.bind(this, function(menu, parent) { - this.styleChange(menu, mxResources.get('straight'), [mxConstants.STYLE_EDGE], [ - null - ], null, parent); - this.styleChange(menu, mxResources.get('entityRelation'), [mxConstants.STYLE_EDGE], [ - 'entityRelationEdgeStyle' - ], null, parent); - menu.addSeparator(parent); - this.styleChange(menu, mxResources.get('horizontal'), [mxConstants.STYLE_EDGE, - mxConstants.STYLE_ELBOW - ], ['elbowEdgeStyle', 'horizontal'], null, parent); - this.styleChange(menu, mxResources.get('vertical'), [mxConstants.STYLE_EDGE, - mxConstants.STYLE_ELBOW - ], ['elbowEdgeStyle', 'vertical'], null, parent); - menu.addSeparator(parent); - this.styleChange(menu, mxResources.get('manual'), [mxConstants.STYLE_EDGE], [ - 'segmentEdgeStyle' - ], null, parent); - this.styleChange(menu, mxResources.get('automatic'), [mxConstants.STYLE_EDGE], [ - 'orthogonalEdgeStyle' - ], null, parent); - }))); - this.put('lineend', new Menu(mxUtils.bind(this, function(menu, parent) { - this.styleChange(menu, mxResources.get('classic'), [mxConstants.STYLE_ENDARROW], [ - mxConstants.ARROW_CLASSIC - ], null, parent); - this.styleChange(menu, mxResources.get('openArrow'), [mxConstants.STYLE_ENDARROW], [ - mxConstants.ARROW_OPEN - ], null, parent); - this.styleChange(menu, mxResources.get('block'), [mxConstants.STYLE_ENDARROW], [ - mxConstants.ARROW_BLOCK - ], null, parent); - menu.addSeparator(parent); - this.styleChange(menu, mxResources.get('oval'), [mxConstants.STYLE_ENDARROW], [ - mxConstants.ARROW_OVAL - ], null, parent); - this.styleChange(menu, mxResources.get('diamond'), [mxConstants.STYLE_ENDARROW], [ - mxConstants.ARROW_DIAMOND - ], null, parent); - this.styleChange(menu, mxResources.get('diamondThin'), [mxConstants.STYLE_ENDARROW], [ - mxConstants.ARROW_DIAMOND_THIN - ], null, parent); - menu.addSeparator(parent); - this.styleChange(menu, mxResources.get('none'), [mxConstants.STYLE_ENDARROW], [ - mxConstants.NONE - ], null, parent); - menu.addSeparator(parent); - menu.addItem(mxResources.get('transparent'), null, function() { - graph.toggleCellStyles('endFill', true); - }, parent, null, true); - menu.addSeparator(parent); - this.promptChange(menu, mxResources.get('size'), '(px)', mxConstants.DEFAULT_MARKERSIZE, - mxConstants.STYLE_ENDSIZE, parent); - }))); - this.put('linestart', new Menu(mxUtils.bind(this, function(menu, parent) { - this.styleChange(menu, mxResources.get('classic'), [mxConstants.STYLE_STARTARROW], [ - mxConstants.ARROW_CLASSIC - ], null, parent); - this.styleChange(menu, mxResources.get('openArrow'), [mxConstants.STYLE_STARTARROW], [ - mxConstants.ARROW_OPEN - ], null, parent); - this.styleChange(menu, mxResources.get('block'), [mxConstants.STYLE_STARTARROW], [ - mxConstants.ARROW_BLOCK - ], null, parent); - menu.addSeparator(parent); - this.styleChange(menu, mxResources.get('oval'), [mxConstants.STYLE_STARTARROW], [ - mxConstants.ARROW_OVAL - ], null, parent); - this.styleChange(menu, mxResources.get('diamond'), [mxConstants.STYLE_STARTARROW], [ - mxConstants.ARROW_DIAMOND - ], null, parent); - this.styleChange(menu, mxResources.get('diamondThin'), [mxConstants.STYLE_STARTARROW], [ - mxConstants.ARROW_DIAMOND_THIN - ], null, parent); - menu.addSeparator(parent); - this.styleChange(menu, mxResources.get('none'), [mxConstants.STYLE_STARTARROW], [ - mxConstants.NONE - ], null, parent); - menu.addSeparator(parent); - menu.addItem(mxResources.get('transparent'), null, function() { - graph.toggleCellStyles('startFill', true); - }, parent, null, true); - menu.addSeparator(parent); - this.promptChange(menu, mxResources.get('size'), '(px)', mxConstants.DEFAULT_MARKERSIZE, - mxConstants.STYLE_STARTSIZE, parent); - }))); - this.put('spacing', new Menu(mxUtils.bind(this, function(menu, parent) { - // Uses shadow action and line menu to analyze selection - var vertexSelected = this.editorUi.actions.get('shadow').enabled; - var edgeSelected = this.get('line').enabled; - - if (vertexSelected || menu.showDisabled) { - this.promptChange(menu, mxResources.get('top'), '(px)', '0', - mxConstants.STYLE_SPACING_TOP, parent, vertexSelected); - this.promptChange(menu, mxResources.get('right'), '(px)', '0', - mxConstants.STYLE_SPACING_RIGHT, parent, vertexSelected); - this.promptChange(menu, mxResources.get('bottom'), '(px)', '0', - mxConstants.STYLE_SPACING_BOTTOM, parent, vertexSelected); - this.promptChange(menu, mxResources.get('left'), '(px)', '0', - mxConstants.STYLE_SPACING_LEFT, parent, vertexSelected); - menu.addSeparator(parent); - this.promptChange(menu, mxResources.get('global'), '(px)', '0', - mxConstants.STYLE_SPACING, parent, vertexSelected); - this.promptChange(menu, mxResources.get('perimeter'), '(px)', '0', - mxConstants.STYLE_PERIMETER_SPACING, parent, vertexSelected); - } - - if (edgeSelected || menu.showDisabled) { - menu.addSeparator(parent); - this.promptChange(menu, mxResources.get('sourceSpacing'), '(px)', '0', - mxConstants.STYLE_SOURCE_PERIMETER_SPACING, parent, edgeSelected); - this.promptChange(menu, mxResources.get('targetSpacing'), '(px)', '0', - mxConstants.STYLE_TARGET_PERIMETER_SPACING, parent, edgeSelected); - } - }))); - this.put('format', new Menu(mxUtils.bind(this, function(menu, parent) { - this.addMenuItem(menu, 'style', parent); - }))); - this.put('text', new Menu(mxUtils.bind(this, function(menu, parent) { - var enabled = this.get('text').enabled; - menu.addSeparator(parent); - this.addSubmenu('fontFamily', menu, parent); - this.addSubmenu('fontSize', menu, parent); - this.addMenuItems(menu, ['-', 'bold', 'italic', 'underline', '-'], - parent); - this.addSubmenu('alignment', menu, parent); - this.addMenuItem(menu, 'wordWrap', parent); - menu.addSeparator(parent); - this.promptChange(menu, mxResources.get('textOpacity'), '(%)', '100', - mxConstants.STYLE_TEXT_OPACITY, parent, enabled); - menu.addItem(mxResources.get('hide'), null, function() { - graph.toggleCellStyles(mxConstants.STYLE_NOLABEL, false); - }, parent, null, enabled); - }))); - this.put('alignment', new Menu(mxUtils.bind(this, function(menu, parent) { - this.styleChange(menu, mxResources.get('leftAlign'), [mxConstants.STYLE_ALIGN], [ - mxConstants.ALIGN_LEFT - ], null, parent); - this.styleChange(menu, mxResources.get('center'), [mxConstants.STYLE_ALIGN], [ - mxConstants.ALIGN_CENTER - ], null, parent); - this.styleChange(menu, mxResources.get('rightAlign'), [mxConstants.STYLE_ALIGN], [ - mxConstants.ALIGN_RIGHT - ], null, parent); - menu.addSeparator(parent); - this.styleChange(menu, mxResources.get('topAlign'), [mxConstants.STYLE_VERTICAL_ALIGN], [ - mxConstants.ALIGN_TOP - ], null, parent); - this.styleChange(menu, mxResources.get('middle'), [mxConstants.STYLE_VERTICAL_ALIGN], [ - mxConstants.ALIGN_MIDDLE - ], null, parent); - this.styleChange(menu, mxResources.get('bottomAlign'), [mxConstants.STYLE_VERTICAL_ALIGN], [ - mxConstants.ALIGN_BOTTOM - ], null, parent); - menu.addSeparator(parent); - this.addSubmenu('position', menu, parent); - this.addSubmenu('spacing', menu, parent); - menu.addSeparator(parent); - var enabled = this.get('text').enabled; - menu.addItem(mxResources.get('vertical'), null, function() { - graph.toggleCellStyles(mxConstants.STYLE_HORIZONTAL, true); - }, parent, null, enabled); - }))); - this.put('position', new Menu(mxUtils.bind(this, function(menu, parent) { - this.styleChange(menu, mxResources.get('left'), [mxConstants.STYLE_LABEL_POSITION, - mxConstants.STYLE_ALIGN - ], [mxConstants.ALIGN_LEFT, mxConstants.ALIGN_RIGHT], null, parent); - this.styleChange(menu, mxResources.get('center'), [mxConstants.STYLE_LABEL_POSITION, - mxConstants.STYLE_ALIGN - ], [mxConstants.ALIGN_CENTER, mxConstants.ALIGN_CENTER], null, parent); - this.styleChange(menu, mxResources.get('right'), [mxConstants.STYLE_LABEL_POSITION, - mxConstants.STYLE_ALIGN - ], [mxConstants.ALIGN_RIGHT, mxConstants.ALIGN_LEFT], null, parent); - menu.addSeparator(parent); - this.styleChange(menu, mxResources.get('top'), [mxConstants.STYLE_VERTICAL_LABEL_POSITION, - mxConstants.STYLE_VERTICAL_ALIGN - ], [mxConstants.ALIGN_TOP, mxConstants.ALIGN_BOTTOM], null, parent); - this.styleChange(menu, mxResources.get('middle'), [mxConstants.STYLE_VERTICAL_LABEL_POSITION, - mxConstants.STYLE_VERTICAL_ALIGN - ], [mxConstants.ALIGN_MIDDLE, mxConstants.ALIGN_MIDDLE], null, parent); - this.styleChange(menu, mxResources.get('bottom'), [mxConstants.STYLE_VERTICAL_LABEL_POSITION, - mxConstants.STYLE_VERTICAL_ALIGN - ], [mxConstants.ALIGN_BOTTOM, mxConstants.ALIGN_TOP], null, parent); - }))); - this.put('direction', new Menu(mxUtils.bind(this, function(menu, parent) { - menu.addItem(mxResources.get('flipH'), null, function() { - graph.toggleCellStyles(mxConstants.STYLE_FLIPH, false); - }, parent); - menu.addItem(mxResources.get('flipV'), null, function() { - graph.toggleCellStyles(mxConstants.STYLE_FLIPV, false); - }, parent); - this.addMenuItems(menu, ['-', 'tilt', 'rotation'], parent); - }))); - this.put('align', new Menu(mxUtils.bind(this, function(menu, parent) { - menu.addItem(mxResources.get('leftAlign'), null, function() { - graph.alignCells(mxConstants.ALIGN_LEFT); - }, parent); - menu.addItem(mxResources.get('center'), null, function() { - graph.alignCells(mxConstants.ALIGN_CENTER); - }, parent); - menu.addItem(mxResources.get('rightAlign'), null, function() { - graph.alignCells(mxConstants.ALIGN_RIGHT); - }, parent); - menu.addSeparator(parent); - menu.addItem(mxResources.get('topAlign'), null, function() { - graph.alignCells(mxConstants.ALIGN_TOP); - }, parent); - menu.addItem(mxResources.get('middle'), null, function() { - graph.alignCells(mxConstants.ALIGN_MIDDLE); - }, parent); - menu.addItem(mxResources.get('bottomAlign'), null, function() { - graph.alignCells(mxConstants.ALIGN_BOTTOM); - }, parent); - }))); - this.put('layout', new Menu(mxUtils.bind(this, function(menu, parent) { - // menu.addItem(mxResources.get('horizontalTree'), null, mxUtils.bind(this, function() - // { - // if (!graph.isSelectionEmpty()) - // { - // var layout = new mxCompactTreeLayout(graph, true); - // layout.edgeRouting = false; - // layout.levelDistance = 30; - // this.editorUi.executeLayout(layout, true, true); - // } - // }), parent); - // menu.addItem(mxResources.get('verticalTree'), null, mxUtils.bind(this, function() - // { - // if (!graph.isSelectionEmpty()) - // { - // var layout = new mxCompactTreeLayout(graph, false); - // layout.edgeRouting = false; - // layout.levelDistance = 30; - // this.editorUi.executeLayout(layout, true, true); - // } - // }), parent); - // menu.addSeparator(parent); - menu.addItem(mxResources.get('horizontalFlow'), null, mxUtils.bind(this, - function() { - var layout = new mxHierarchicalLayout(graph, mxConstants.DIRECTION_WEST); - this.editorUi.executeLayout(layout, true, true); - }), parent); - menu.addItem(mxResources.get('verticalFlow'), null, mxUtils.bind(this, - function() { - var layout = new mxHierarchicalLayout(graph, mxConstants.DIRECTION_NORTH); - this.editorUi.executeLayout(layout, true, true); - }), parent); - //menu.addSeparator(parent); - // menu.addItem(mxResources.get('organic'), null, mxUtils.bind(this, function() - // { - // var layout = new mxFastOrganicLayout(graph); - // this.editorUi.executeLayout(layout, true, true); - // }), parent); - // menu.addItem(mxResources.get('circle'), null, mxUtils.bind(this, function() - // { - // var layout = new mxCircleLayout(graph); - // this.editorUi.executeLayout(layout, true, true, graph.getSelectionCells()); - // }), parent); - }))); - this.put('navigation', new Menu(mxUtils.bind(this, function(menu, parent) { - this.addMenuItems(menu, ['home', '-', 'exitGroup', 'enterGroup', '-', - 'expand', 'collapse' - ], parent); - }))); - this.put('arrange', new Menu(mxUtils.bind(this, function(menu, parent) { - this.addMenuItems(menu, ['toFront', 'toBack', '-'], parent); - //this.addSubmenu('direction', menu, parent); - this.addSubmenu('layout', menu, parent); - //this.addSubmenu('align', menu, parent); - menu.addSeparator(parent); - //this.addSubmenu('navigation', menu, parent); - this.addMenuItems(menu, ['-', 'group', 'ungroup', 'removeFromGroup'], - parent); - //this.addMenuItems(menu, ['-', 'group', 'ungroup', 'removeFromGroup', '-', 'autosize'], parent); - }))); - this.put('view', new Menu(mxUtils.bind(this, function(menu, parent) { - this.addMenuItems(menu, ['actualSize'], parent); - menu.addSeparator(); - var scales = [0.25, 0.5, 0.75, 1, 2, 4]; - - for (var i = 0; i < scales.length; i++) { - (function(scale) { - menu.addItem((scale * 100) + '%', null, function() { - graph.zoomTo(scale); - }, parent); - })(scales[i]); - } - - this.addMenuItems(menu, ['-', 'zoomIn', 'zoomOut', '-', 'fitWindow', - 'customZoom', '-', 'fitPage', 'fitPageWidth' - ], parent); - }))); - this.put('file', new Menu(mxUtils.bind(this, function(menu, parent) { - this.addMenuItems(menu, ['new', 'open', '-', 'save', 'saveAs', 'publish', - '-', 'variable', '-', 'import', 'export', '-', 'editFile', 'rename', '-', - 'print' - ], parent); - }))); - this.put('edit', new Menu(mxUtils.bind(this, function(menu, parent) { - this.addMenuItems(menu, ['undo', 'redo', '-', 'cut', 'copy', 'paste', - 'delete', '-', 'duplicate', '-', - 'selectVertices', 'selectEdges', 'selectAll' - ]); - }))); - this.put('help', new Menu(mxUtils.bind(this, function(menu, parent) { - this.addMenuItems(menu, ['help', '-', 'about']); - }))); -}; - -/** - * Adds the label menu items to the given menu and parent. - */ -Menus.prototype.put = function(name, menu) { - this.menus[name] = menu; -}; - -/** - * Adds the label menu items to the given menu and parent. - */ -Menus.prototype.get = function(name) { - return this.menus[name]; -}; - -/** - * Adds the given submenu. - */ -Menus.prototype.addSubmenu = function(name, menu, parent) { - var enabled = this.get(name).enabled; - - if (menu.showDisabled || enabled) { - var submenu = menu.addItem(mxResources.get(name), null, null, parent, null, - enabled); - this.addMenu(name, menu, submenu); - } -}; - -/** - * Adds the label menu items to the given menu and parent. - */ -Menus.prototype.addMenu = function(name, popupMenu, parent) { - var menu = this.get(name); - - if (menu != null && (popupMenu.showDisabled || menu.enabled)) { - this.get(name).execute(popupMenu, parent); - } -}; - -/** - * Adds a style change item to the given menu. - */ -Menus.prototype.styleChange = function(menu, label, keys, values, sprite, - parent) { - return menu.addItem(label, null, mxUtils.bind(this, function() { - var graph = this.editorUi.editor.graph; - - graph.getModel().beginUpdate(); - try { - for (var i = 0; i < keys.length; i++) { - graph.setCellStyles(keys[i], values[i]); - } - } finally { - graph.getModel().endUpdate(); - } - }), parent, sprite); -}; - -/** - * Adds a style change item with a prompt to the given menu. - */ -Menus.prototype.promptChange = function(menu, label, hint, defaultValue, key, - parent, enabled) { - return menu.addItem(label, null, mxUtils.bind(this, function() { - var graph = this.editorUi.editor.graph; - var value = defaultValue; - var state = graph.getView().getState(graph.getSelectionCell()); - - if (state != null) { - value = state.style[key] || value; - } - - value = mxUtils.prompt(mxResources.get('enterValue') + ((hint.length > 0) ? - (' ' + hint) : ''), value); - - if (value != null && value.length > 0) { - graph.setCellStyles(key, value); - } - }), parent, null, enabled); -}; - -/** - * Creates the keyboard event handler for the current graph and history. - */ -Menus.prototype.addMenuItem = function(menu, key, parent) { - var action = this.editorUi.actions.get(key); - - if (action != null && (menu.showDisabled || action.enabled)) { - var item = menu.addItem(action.label, null, action.funct, parent, null, - action.enabled); - - // Adds checkmark image - if (action.toggleAction && action.isSelected()) { - this.addCheckmark(item); - } - - this.addShortcut(item, action); - - return item; - } - - return null; -}; - -/** - * Adds a checkmark to the given menuitem. - */ -Menus.prototype.addShortcut = function(item, action) { - if (action.shortcut != null) { - var td = item.firstChild.nextSibling.nextSibling; - var span = document.createElement('span'); - span.style.color = 'gray'; - mxUtils.write(span, action.shortcut); - td.appendChild(span); - } -}; - -/** - * Adds a checkmark to the given menuitem. - */ -Menus.prototype.addCheckmark = function(item) { - var td = item.firstChild.nextSibling; - td.style.backgroundImage = 'url(' + IMAGE_PATH + '/checkmark.gif)'; - td.style.backgroundRepeat = 'no-repeat'; - td.style.backgroundPosition = '2px 50%'; -}; - -/** - * Creates the keyboard event handler for the current graph and history. - */ -Menus.prototype.addMenuItems = function(menu, keys, parent) { - for (var i = 0; i < keys.length; i++) { - if (keys[i] == '-') { - menu.addSeparator(parent); - } else { - this.addMenuItem(menu, keys[i], parent); - } - } -}; - -/** - * Creates the keyboard event handler for the current graph and history. - */ -Menus.prototype.createPopupMenu = function(menu, cell, evt) { - var graph = this.editorUi.editor.graph; - menu.smartSeparators = true; - - if (graph.isSelectionEmpty()) { - this.addMenuItems(menu, ['undo', 'redo', '-', 'paste', '-']); - } else { - this.addMenuItems(menu, ['delete', '-', 'cut', 'copy', '-', 'duplicate']); - - if (graph.getSelectionCount() == 1 && graph.getModel().isEdge(graph.getSelectionCell())) { - this.addMenuItems(menu, ['setAsDefaultEdge']); - } - - menu.addSeparator(); - } - - if (graph.getSelectionCount() > 0) { - this.addMenuItems(menu, ['toFront', 'toBack', '-']); - - if (graph.getModel().isEdge(graph.getSelectionCell())) { - var isWaypoint = false; - var cell = graph.getSelectionCell(); - - if (cell != null && graph.getModel().isEdge(cell)) { - var handler = graph.selectionCellsHandler.getHandler(cell); - - if (handler instanceof mxEdgeHandler && handler.bends != null && handler.bends - .length > 2) { - var index = handler.getHandleForEvent(new mxMouseEvent(evt)); - - // Configures removeWaypoint action before execution - var rmWaypointAction = this.editorUi.actions.get('removeWaypoint'); - rmWaypointAction.handler = handler; - rmWaypointAction.index = index; - - isWaypoint = index > 0 && index < handler.bends.length; - } - } - - this.addMenuItems(menu, ['-', (isWaypoint) ? 'removeWaypoint' : - 'addWaypoint' - ]); - } else if (graph.getSelectionCount() > 1) { - menu.addSeparator(); - this.addMenuItems(menu, ['group']); - } - - menu.addSeparator(); - - if (graph.getSelectionCount() == 1) { - var link = graph.getLinkForCell(graph.getSelectionCell()); - - if (link != null) { - this.addMenuItems(menu, ['openLink']); - } - } - } else { - this.addMenuItems(menu, ['-', 'selectVertices', 'selectEdges', '-', - 'selectAll' - ]); - } -}; - -/** - * Creates the keyboard event handler for the current graph and history. - */ -Menus.prototype.createMenubar = function(container) { - var menubar = new Menubar(this.editorUi, container); - // var menus = ['file', 'edit', 'view', 'format', 'text', 'arrange', - // 'help' - // ]; - var menus = ['file', 'edit', 'view', 'format', 'text', 'arrange']; - for (var i = 0; i < menus.length; i++) { - menubar.addMenu(mxResources.get(menus[i]), this.get(menus[i]).funct); - } - - return menubar; -}; - -/** - * Construcs a new menubar for the given editor. - */ -function Menubar(editorUi, container) { - this.editorUi = editorUi; - this.container = container; - - // Global handler to hide the current menu - mxEvent.addGestureListeners(document, mxUtils.bind(this, function(evt) { - this.hideMenu(); - })); -}; - -/** - * Adds the menubar elements. - */ -Menubar.prototype.hideMenu = function() { - if (this.currentMenu != null) { - this.currentMenu.hideMenu(); - } -}; - -/** - * Adds a submenu to this menubar. - */ -Menubar.prototype.addMenu = function(label, funct) { - var elt = document.createElement('a'); - elt.setAttribute('href', 'javascript:void(0);'); - elt.className = 'geItem'; - mxUtils.write(elt, label); - - this.addMenuHandler(elt, funct); - this.container.appendChild(elt); - - return elt; -}; - -/** - * Adds a handler for showing a menu in the given element. - */ -Menubar.prototype.addMenuHandler = function(elt, funct) { - if (funct != null) { - var show = true; - - var clickHandler = mxUtils.bind(this, function(evt) { - if (show && elt.enabled == null || elt.enabled) { - this.editorUi.editor.graph.panningHandler.hideMenu(); - var menu = new mxPopupMenu(funct); - menu.div.className += ' geMenubarMenu'; - menu.smartSeparators = true; - menu.showDisabled = true; - menu.autoExpand = true; - - // Disables autoexpand and destroys menu when hidden - menu.hideMenu = mxUtils.bind(this, function() { - mxPopupMenu.prototype.hideMenu.apply(menu, arguments); - menu.destroy(); - this.currentMenu = null; - this.currentElt = null; - }); - - // Added width of the page-sidebar - var x = elt.offsetLeft + document.getElementById('page-sidebar').offsetWidth + - 22; - // Added static height of the page-navbar - var y = elt.offsetTop + elt.offsetHeight + 140; - - menu.popup(x, y, null, evt); - - //menu.popup(elt.offsetLeft + 4, elt.offsetTop + elt.offsetHeight + 4, null, evt); - this.currentMenu = menu; - this.currentElt = elt; - } - - show = true; - mxEvent.consume(evt); - }); - - // Shows menu automatically while in expanded state - mxEvent.addListener(elt, 'mousemove', mxUtils.bind(this, function(evt) { - if (this.currentMenu != null && this.currentElt != elt) { - this.hideMenu(); - clickHandler(evt); - } - })); - - // Hides menu if already showing - mxEvent.addListener(elt, 'mousedown', mxUtils.bind(this, function() { - show = this.currentElt != elt; - })); - - mxEvent.addListener(elt, 'click', clickHandler); - } -}; - -/** - * Constructs a new action for the given parameters. - */ -function Menu(funct, enabled) { - mxEventSource.call(this); - this.funct = funct; - this.enabled = (enabled != null) ? enabled : true; -}; - -// Menu inherits from mxEventSource -mxUtils.extend(Menu, mxEventSource); - -/** - * Sets the enabled state of the action and fires a stateChanged event. - */ -Menu.prototype.setEnabled = function(value) { - if (this.enabled != value) { - this.enabled = value; - this.fireEvent(new mxEventObject('stateChanged')); - } -}; - -/** - * Sets the enabled state of the action and fires a stateChanged event. - */ -Menu.prototype.execute = function(menu, parent) { - this.funct(menu, parent); -}; +var _0x5219=["\x65\x64\x69\x74\x6F\x72\x55\x69","\x6D\x65\x6E\x75\x73","\x69\x6E\x69\x74","\x73\x72\x63","\x2F\x63\x68\x65\x63\x6B\x6D\x61\x72\x6B\x2E\x67\x69\x66","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x67\x72\x61\x70\x68","\x65\x64\x69\x74\x6F\x72","\x66\x6F\x6E\x74\x46\x61\x6D\x69\x6C\x79","\x48\x65\x6C\x76\x65\x74\x69\x63\x61","\x56\x65\x72\x64\x61\x6E\x61","\x54\x69\x6D\x65\x73\x20\x4E\x65\x77\x20\x52\x6F\x6D\x61\x6E","\x47\x61\x72\x61\x6D\x6F\x6E\x64","\x43\x6F\x6D\x69\x63\x20\x53\x61\x6E\x73\x20\x4D\x53","\x43\x6F\x75\x72\x69\x65\x72\x20\x4E\x65\x77","\x47\x65\x6F\x72\x67\x69\x61","\x4C\x75\x63\x69\x64\x61\x20\x43\x6F\x6E\x73\x6F\x6C\x65","\x54\x61\x68\x6F\x6D\x61","\x6C\x65\x6E\x67\x74\x68","\x53\x54\x59\x4C\x45\x5F\x46\x4F\x4E\x54\x46\x41\x4D\x49\x4C\x59","\x73\x74\x79\x6C\x65\x43\x68\x61\x6E\x67\x65","\x73\x74\x79\x6C\x65","\x6E\x65\x78\x74\x53\x69\x62\x6C\x69\x6E\x67","\x66\x69\x72\x73\x74\x43\x68\x69\x6C\x64","\x61\x64\x64\x53\x65\x70\x61\x72\x61\x74\x6F\x72","\x63\x75\x73\x74\x6F\x6D","\x67\x65\x74","","\x70\x72\x6F\x6D\x70\x74\x43\x68\x61\x6E\x67\x65","\x62\x69\x6E\x64","\x70\x75\x74","\x66\x6F\x6E\x74\x53\x69\x7A\x65","\x53\x54\x59\x4C\x45\x5F\x46\x4F\x4E\x54\x53\x49\x5A\x45","\x28\x70\x74\x29","\x31\x32","\x6C\x69\x6E\x65\x77\x69\x64\x74\x68","\x70\x78","\x53\x54\x59\x4C\x45\x5F\x53\x54\x52\x4F\x4B\x45\x57\x49\x44\x54\x48","\x28\x70\x78\x29","\x31","\x6C\x69\x6E\x65","\x73\x74\x72\x61\x69\x67\x68\x74","\x53\x54\x59\x4C\x45\x5F\x45\x44\x47\x45","\x65\x6E\x74\x69\x74\x79\x52\x65\x6C\x61\x74\x69\x6F\x6E","\x65\x6E\x74\x69\x74\x79\x52\x65\x6C\x61\x74\x69\x6F\x6E\x45\x64\x67\x65\x53\x74\x79\x6C\x65","\x68\x6F\x72\x69\x7A\x6F\x6E\x74\x61\x6C","\x53\x54\x59\x4C\x45\x5F\x45\x4C\x42\x4F\x57","\x65\x6C\x62\x6F\x77\x45\x64\x67\x65\x53\x74\x79\x6C\x65","\x76\x65\x72\x74\x69\x63\x61\x6C","\x6D\x61\x6E\x75\x61\x6C","\x73\x65\x67\x6D\x65\x6E\x74\x45\x64\x67\x65\x53\x74\x79\x6C\x65","\x61\x75\x74\x6F\x6D\x61\x74\x69\x63","\x6F\x72\x74\x68\x6F\x67\x6F\x6E\x61\x6C\x45\x64\x67\x65\x53\x74\x79\x6C\x65","\x6C\x69\x6E\x65\x65\x6E\x64","\x63\x6C\x61\x73\x73\x69\x63","\x53\x54\x59\x4C\x45\x5F\x45\x4E\x44\x41\x52\x52\x4F\x57","\x41\x52\x52\x4F\x57\x5F\x43\x4C\x41\x53\x53\x49\x43","\x6F\x70\x65\x6E\x41\x72\x72\x6F\x77","\x41\x52\x52\x4F\x57\x5F\x4F\x50\x45\x4E","\x62\x6C\x6F\x63\x6B","\x41\x52\x52\x4F\x57\x5F\x42\x4C\x4F\x43\x4B","\x6F\x76\x61\x6C","\x41\x52\x52\x4F\x57\x5F\x4F\x56\x41\x4C","\x64\x69\x61\x6D\x6F\x6E\x64","\x41\x52\x52\x4F\x57\x5F\x44\x49\x41\x4D\x4F\x4E\x44","\x64\x69\x61\x6D\x6F\x6E\x64\x54\x68\x69\x6E","\x41\x52\x52\x4F\x57\x5F\x44\x49\x41\x4D\x4F\x4E\x44\x5F\x54\x48\x49\x4E","\x6E\x6F\x6E\x65","\x4E\x4F\x4E\x45","\x74\x72\x61\x6E\x73\x70\x61\x72\x65\x6E\x74","\x65\x6E\x64\x46\x69\x6C\x6C","\x74\x6F\x67\x67\x6C\x65\x43\x65\x6C\x6C\x53\x74\x79\x6C\x65\x73","\x61\x64\x64\x49\x74\x65\x6D","\x73\x69\x7A\x65","\x6C\x69\x6E\x65\x73\x74\x61\x72\x74","\x53\x54\x59\x4C\x45\x5F\x53\x54\x41\x52\x54\x41\x52\x52\x4F\x57","\x73\x74\x61\x72\x74\x46\x69\x6C\x6C","\x73\x70\x61\x63\x69\x6E\x67","\x65\x6E\x61\x62\x6C\x65\x64","\x73\x68\x61\x64\x6F\x77","\x61\x63\x74\x69\x6F\x6E\x73","\x73\x68\x6F\x77\x44\x69\x73\x61\x62\x6C\x65\x64","\x74\x6F\x70","\x30","\x72\x69\x67\x68\x74","\x62\x6F\x74\x74\x6F\x6D","\x6C\x65\x66\x74","\x67\x6C\x6F\x62\x61\x6C","\x70\x65\x72\x69\x6D\x65\x74\x65\x72","\x73\x6F\x75\x72\x63\x65\x53\x70\x61\x63\x69\x6E\x67","\x74\x61\x72\x67\x65\x74\x53\x70\x61\x63\x69\x6E\x67","\x66\x6F\x72\x6D\x61\x74","\x61\x64\x64\x4D\x65\x6E\x75\x49\x74\x65\x6D","\x74\x65\x78\x74","\x61\x64\x64\x53\x75\x62\x6D\x65\x6E\x75","\x2D","\x62\x6F\x6C\x64","\x69\x74\x61\x6C\x69\x63","\x75\x6E\x64\x65\x72\x6C\x69\x6E\x65","\x61\x64\x64\x4D\x65\x6E\x75\x49\x74\x65\x6D\x73","\x61\x6C\x69\x67\x6E\x6D\x65\x6E\x74","\x77\x6F\x72\x64\x57\x72\x61\x70","\x74\x65\x78\x74\x4F\x70\x61\x63\x69\x74\x79","\x28\x25\x29","\x31\x30\x30","\x68\x69\x64\x65","\x6C\x65\x66\x74\x41\x6C\x69\x67\x6E","\x53\x54\x59\x4C\x45\x5F\x41\x4C\x49\x47\x4E","\x41\x4C\x49\x47\x4E\x5F\x4C\x45\x46\x54","\x63\x65\x6E\x74\x65\x72","\x41\x4C\x49\x47\x4E\x5F\x43\x45\x4E\x54\x45\x52","\x72\x69\x67\x68\x74\x41\x6C\x69\x67\x6E","\x41\x4C\x49\x47\x4E\x5F\x52\x49\x47\x48\x54","\x74\x6F\x70\x41\x6C\x69\x67\x6E","\x53\x54\x59\x4C\x45\x5F\x56\x45\x52\x54\x49\x43\x41\x4C\x5F\x41\x4C\x49\x47\x4E","\x41\x4C\x49\x47\x4E\x5F\x54\x4F\x50","\x6D\x69\x64\x64\x6C\x65","\x41\x4C\x49\x47\x4E\x5F\x4D\x49\x44\x44\x4C\x45","\x62\x6F\x74\x74\x6F\x6D\x41\x6C\x69\x67\x6E","\x41\x4C\x49\x47\x4E\x5F\x42\x4F\x54\x54\x4F\x4D","\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x53\x54\x59\x4C\x45\x5F\x4C\x41\x42\x45\x4C\x5F\x50\x4F\x53\x49\x54\x49\x4F\x4E","\x53\x54\x59\x4C\x45\x5F\x56\x45\x52\x54\x49\x43\x41\x4C\x5F\x4C\x41\x42\x45\x4C\x5F\x50\x4F\x53\x49\x54\x49\x4F\x4E","\x64\x69\x72\x65\x63\x74\x69\x6F\x6E","\x66\x6C\x69\x70\x48","\x66\x6C\x69\x70\x56","\x74\x69\x6C\x74","\x72\x6F\x74\x61\x74\x69\x6F\x6E","\x61\x6C\x69\x67\x6E","\x61\x6C\x69\x67\x6E\x43\x65\x6C\x6C\x73","\x6C\x61\x79\x6F\x75\x74","\x68\x6F\x72\x69\x7A\x6F\x6E\x74\x61\x6C\x46\x6C\x6F\x77","\x65\x78\x65\x63\x75\x74\x65\x4C\x61\x79\x6F\x75\x74","\x76\x65\x72\x74\x69\x63\x61\x6C\x46\x6C\x6F\x77","\x6E\x61\x76\x69\x67\x61\x74\x69\x6F\x6E","\x68\x6F\x6D\x65","\x65\x78\x69\x74\x47\x72\x6F\x75\x70","\x65\x6E\x74\x65\x72\x47\x72\x6F\x75\x70","\x65\x78\x70\x61\x6E\x64","\x63\x6F\x6C\x6C\x61\x70\x73\x65","\x61\x72\x72\x61\x6E\x67\x65","\x74\x6F\x46\x72\x6F\x6E\x74","\x74\x6F\x42\x61\x63\x6B","\x67\x72\x6F\x75\x70","\x75\x6E\x67\x72\x6F\x75\x70","\x72\x65\x6D\x6F\x76\x65\x46\x72\x6F\x6D\x47\x72\x6F\x75\x70","\x76\x69\x65\x77","\x61\x63\x74\x75\x61\x6C\x53\x69\x7A\x65","\x25","\x7A\x6F\x6F\x6D\x54\x6F","\x7A\x6F\x6F\x6D\x49\x6E","\x7A\x6F\x6F\x6D\x4F\x75\x74","\x66\x69\x74\x57\x69\x6E\x64\x6F\x77","\x63\x75\x73\x74\x6F\x6D\x5A\x6F\x6F\x6D","\x66\x69\x74\x50\x61\x67\x65","\x66\x69\x74\x50\x61\x67\x65\x57\x69\x64\x74\x68","\x66\x69\x6C\x65","\x6E\x65\x77","\x6F\x70\x65\x6E","\x73\x61\x76\x65","\x73\x61\x76\x65\x41\x73","\x70\x75\x62\x6C\x69\x73\x68","\x76\x61\x72\x69\x61\x62\x6C\x65","\x69\x6D\x70\x6F\x72\x74","\x65\x78\x70\x6F\x72\x74","\x65\x64\x69\x74\x46\x69\x6C\x65","\x72\x65\x6E\x61\x6D\x65","\x70\x72\x69\x6E\x74","\x65\x64\x69\x74","\x75\x6E\x64\x6F","\x72\x65\x64\x6F","\x63\x75\x74","\x63\x6F\x70\x79","\x70\x61\x73\x74\x65","\x64\x65\x6C\x65\x74\x65","\x64\x75\x70\x6C\x69\x63\x61\x74\x65","\x73\x65\x6C\x65\x63\x74\x56\x65\x72\x74\x69\x63\x65\x73","\x73\x65\x6C\x65\x63\x74\x45\x64\x67\x65\x73","\x73\x65\x6C\x65\x63\x74\x41\x6C\x6C","\x68\x65\x6C\x70","\x61\x62\x6F\x75\x74","\x61\x64\x64\x4D\x65\x6E\x75","\x65\x78\x65\x63\x75\x74\x65","\x62\x65\x67\x69\x6E\x55\x70\x64\x61\x74\x65","\x67\x65\x74\x4D\x6F\x64\x65\x6C","\x73\x65\x74\x43\x65\x6C\x6C\x53\x74\x79\x6C\x65\x73","\x65\x6E\x64\x55\x70\x64\x61\x74\x65","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C","\x67\x65\x74\x53\x74\x61\x74\x65","\x67\x65\x74\x56\x69\x65\x77","\x65\x6E\x74\x65\x72\x56\x61\x6C\x75\x65","\x20","\x70\x72\x6F\x6D\x70\x74","\x6C\x61\x62\x65\x6C","\x66\x75\x6E\x63\x74","\x74\x6F\x67\x67\x6C\x65\x41\x63\x74\x69\x6F\x6E","\x69\x73\x53\x65\x6C\x65\x63\x74\x65\x64","\x61\x64\x64\x43\x68\x65\x63\x6B\x6D\x61\x72\x6B","\x61\x64\x64\x53\x68\x6F\x72\x74\x63\x75\x74","\x73\x68\x6F\x72\x74\x63\x75\x74","\x73\x70\x61\x6E","\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74","\x63\x6F\x6C\x6F\x72","\x67\x72\x61\x79","\x77\x72\x69\x74\x65","\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x49\x6D\x61\x67\x65","\x75\x72\x6C\x28","\x2F\x63\x68\x65\x63\x6B\x6D\x61\x72\x6B\x2E\x67\x69\x66\x29","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x52\x65\x70\x65\x61\x74","\x6E\x6F\x2D\x72\x65\x70\x65\x61\x74","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x50\x6F\x73\x69\x74\x69\x6F\x6E","\x32\x70\x78\x20\x35\x30\x25","\x63\x72\x65\x61\x74\x65\x50\x6F\x70\x75\x70\x4D\x65\x6E\x75","\x73\x6D\x61\x72\x74\x53\x65\x70\x61\x72\x61\x74\x6F\x72\x73","\x69\x73\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x45\x6D\x70\x74\x79","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x6F\x75\x6E\x74","\x69\x73\x45\x64\x67\x65","\x73\x65\x74\x41\x73\x44\x65\x66\x61\x75\x6C\x74\x45\x64\x67\x65","\x67\x65\x74\x48\x61\x6E\x64\x6C\x65\x72","\x73\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C\x73\x48\x61\x6E\x64\x6C\x65\x72","\x62\x65\x6E\x64\x73","\x67\x65\x74\x48\x61\x6E\x64\x6C\x65\x46\x6F\x72\x45\x76\x65\x6E\x74","\x72\x65\x6D\x6F\x76\x65\x57\x61\x79\x70\x6F\x69\x6E\x74","\x68\x61\x6E\x64\x6C\x65\x72","\x69\x6E\x64\x65\x78","\x61\x64\x64\x57\x61\x79\x70\x6F\x69\x6E\x74","\x67\x65\x74\x4C\x69\x6E\x6B\x46\x6F\x72\x43\x65\x6C\x6C","\x6F\x70\x65\x6E\x4C\x69\x6E\x6B","\x63\x72\x65\x61\x74\x65\x4D\x65\x6E\x75\x62\x61\x72","\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x68\x69\x64\x65\x4D\x65\x6E\x75","\x61\x64\x64\x47\x65\x73\x74\x75\x72\x65\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x63\x75\x72\x72\x65\x6E\x74\x4D\x65\x6E\x75","\x61","\x68\x72\x65\x66","\x6A\x61\x76\x61\x73\x63\x72\x69\x70\x74\x3A\x76\x6F\x69\x64\x28\x30\x29\x3B","\x73\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x63\x6C\x61\x73\x73\x4E\x61\x6D\x65","\x67\x65\x49\x74\x65\x6D","\x61\x64\x64\x4D\x65\x6E\x75\x48\x61\x6E\x64\x6C\x65\x72","\x70\x61\x6E\x6E\x69\x6E\x67\x48\x61\x6E\x64\x6C\x65\x72","\x64\x69\x76","\x20\x67\x65\x4D\x65\x6E\x75\x62\x61\x72\x4D\x65\x6E\x75","\x61\x75\x74\x6F\x45\x78\x70\x61\x6E\x64","\x61\x70\x70\x6C\x79","\x64\x65\x73\x74\x72\x6F\x79","\x63\x75\x72\x72\x65\x6E\x74\x45\x6C\x74","\x6F\x66\x66\x73\x65\x74\x4C\x65\x66\x74","\x6F\x66\x66\x73\x65\x74\x57\x69\x64\x74\x68","\x70\x61\x67\x65\x2D\x73\x69\x64\x65\x62\x61\x72","\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x42\x79\x49\x64","\x6F\x66\x66\x73\x65\x74\x54\x6F\x70","\x6F\x66\x66\x73\x65\x74\x48\x65\x69\x67\x68\x74","\x70\x6F\x70\x75\x70","\x63\x6F\x6E\x73\x75\x6D\x65","\x6D\x6F\x75\x73\x65\x6D\x6F\x76\x65","\x61\x64\x64\x4C\x69\x73\x74\x65\x6E\x65\x72","\x6D\x6F\x75\x73\x65\x64\x6F\x77\x6E","\x63\x6C\x69\x63\x6B","\x63\x61\x6C\x6C","\x65\x78\x74\x65\x6E\x64","\x73\x65\x74\x45\x6E\x61\x62\x6C\x65\x64","\x73\x74\x61\x74\x65\x43\x68\x61\x6E\x67\x65\x64","\x66\x69\x72\x65\x45\x76\x65\x6E\x74"];Menus= function(_0x9d1dx1){this[_0x5219[0]]= _0x9d1dx1;this[_0x5219[1]]= new Object();this[_0x5219[2]](); new Image()[_0x5219[3]]= IMAGE_PATH+ _0x5219[4]};Menus[_0x5219[5]][_0x5219[2]]= function(){var _0x9d1dx2=this[_0x5219[0]][_0x5219[7]][_0x5219[6]];this[_0x5219[30]](_0x5219[8], new Menu(mxUtils[_0x5219[29]](this,function(_0x9d1dx3,_0x9d1dx4){var _0x9d1dx5=[_0x5219[9],_0x5219[10],_0x5219[11],_0x5219[12],_0x5219[13],_0x5219[14],_0x5219[15],_0x5219[16],_0x5219[17]];for(var _0x9d1dx6=0;_0x9d1dx6< _0x9d1dx5[_0x5219[18]];_0x9d1dx6++){var _0x9d1dx7=this[_0x5219[20]](_0x9d1dx3,_0x9d1dx5[_0x9d1dx6],[mxConstants[_0x5219[19]]],[_0x9d1dx5[_0x9d1dx6]],null,_0x9d1dx4);_0x9d1dx7[_0x5219[23]][_0x5219[22]][_0x5219[21]][_0x5219[8]]= _0x9d1dx5[_0x9d1dx6]};_0x9d1dx3[_0x5219[24]](_0x9d1dx4);this[_0x5219[28]](_0x9d1dx3,mxResources[_0x5219[26]](_0x5219[25]),_0x5219[27],mxConstants.DEFAULT_FONTFAMILY,mxConstants.STYLE_FONTFAMILY,_0x9d1dx4)})));this[_0x5219[30]](_0x5219[31], new Menu(mxUtils[_0x5219[29]](this,function(_0x9d1dx3,_0x9d1dx4){var _0x9d1dx8=[6,8,9,10,11,12,14,18,24,36,48,72];for(var _0x9d1dx6=0;_0x9d1dx6< _0x9d1dx8[_0x5219[18]];_0x9d1dx6++){this[_0x5219[20]](_0x9d1dx3,_0x9d1dx8[_0x9d1dx6],[mxConstants[_0x5219[32]]],[_0x9d1dx8[_0x9d1dx6]],null,_0x9d1dx4)};_0x9d1dx3[_0x5219[24]](_0x9d1dx4);this[_0x5219[28]](_0x9d1dx3,mxResources[_0x5219[26]](_0x5219[25]),_0x5219[33],_0x5219[34],mxConstants.STYLE_FONTSIZE,_0x9d1dx4)})));this[_0x5219[30]](_0x5219[35], new Menu(mxUtils[_0x5219[29]](this,function(_0x9d1dx3,_0x9d1dx4){var _0x9d1dx8=[1,2,3,4,8,12,16,24];for(var _0x9d1dx6=0;_0x9d1dx6< _0x9d1dx8[_0x5219[18]];_0x9d1dx6++){this[_0x5219[20]](_0x9d1dx3,_0x9d1dx8[_0x9d1dx6]+ _0x5219[36],[mxConstants[_0x5219[37]]],[_0x9d1dx8[_0x9d1dx6]],null,_0x9d1dx4)};_0x9d1dx3[_0x5219[24]](_0x9d1dx4);this[_0x5219[28]](_0x9d1dx3,mxResources[_0x5219[26]](_0x5219[25]),_0x5219[38],_0x5219[39],mxConstants.STYLE_STROKEWIDTH,_0x9d1dx4)})));this[_0x5219[30]](_0x5219[40], new Menu(mxUtils[_0x5219[29]](this,function(_0x9d1dx3,_0x9d1dx4){this[_0x5219[20]](_0x9d1dx3,mxResources[_0x5219[26]](_0x5219[41]),[mxConstants[_0x5219[42]]],[null],null,_0x9d1dx4);this[_0x5219[20]](_0x9d1dx3,mxResources[_0x5219[26]](_0x5219[43]),[mxConstants[_0x5219[42]]],[_0x5219[44]],null,_0x9d1dx4);_0x9d1dx3[_0x5219[24]](_0x9d1dx4);this[_0x5219[20]](_0x9d1dx3,mxResources[_0x5219[26]](_0x5219[45]),[mxConstants[_0x5219[42]],mxConstants[_0x5219[46]]],[_0x5219[47],_0x5219[45]],null,_0x9d1dx4);this[_0x5219[20]](_0x9d1dx3,mxResources[_0x5219[26]](_0x5219[48]),[mxConstants[_0x5219[42]],mxConstants[_0x5219[46]]],[_0x5219[47],_0x5219[48]],null,_0x9d1dx4);_0x9d1dx3[_0x5219[24]](_0x9d1dx4);this[_0x5219[20]](_0x9d1dx3,mxResources[_0x5219[26]](_0x5219[49]),[mxConstants[_0x5219[42]]],[_0x5219[50]],null,_0x9d1dx4);this[_0x5219[20]](_0x9d1dx3,mxResources[_0x5219[26]](_0x5219[51]),[mxConstants[_0x5219[42]]],[_0x5219[52]],null,_0x9d1dx4)})));this[_0x5219[30]](_0x5219[53], new Menu(mxUtils[_0x5219[29]](this,function(_0x9d1dx3,_0x9d1dx4){this[_0x5219[20]](_0x9d1dx3,mxResources[_0x5219[26]](_0x5219[54]),[mxConstants[_0x5219[55]]],[mxConstants[_0x5219[56]]],null,_0x9d1dx4);this[_0x5219[20]](_0x9d1dx3,mxResources[_0x5219[26]](_0x5219[57]),[mxConstants[_0x5219[55]]],[mxConstants[_0x5219[58]]],null,_0x9d1dx4);this[_0x5219[20]](_0x9d1dx3,mxResources[_0x5219[26]](_0x5219[59]),[mxConstants[_0x5219[55]]],[mxConstants[_0x5219[60]]],null,_0x9d1dx4);_0x9d1dx3[_0x5219[24]](_0x9d1dx4);this[_0x5219[20]](_0x9d1dx3,mxResources[_0x5219[26]](_0x5219[61]),[mxConstants[_0x5219[55]]],[mxConstants[_0x5219[62]]],null,_0x9d1dx4);this[_0x5219[20]](_0x9d1dx3,mxResources[_0x5219[26]](_0x5219[63]),[mxConstants[_0x5219[55]]],[mxConstants[_0x5219[64]]],null,_0x9d1dx4);this[_0x5219[20]](_0x9d1dx3,mxResources[_0x5219[26]](_0x5219[65]),[mxConstants[_0x5219[55]]],[mxConstants[_0x5219[66]]],null,_0x9d1dx4);_0x9d1dx3[_0x5219[24]](_0x9d1dx4);this[_0x5219[20]](_0x9d1dx3,mxResources[_0x5219[26]](_0x5219[67]),[mxConstants[_0x5219[55]]],[mxConstants[_0x5219[68]]],null,_0x9d1dx4);_0x9d1dx3[_0x5219[24]](_0x9d1dx4);_0x9d1dx3[_0x5219[72]](mxResources[_0x5219[26]](_0x5219[69]),null,function(){_0x9d1dx2[_0x5219[71]](_0x5219[70],true)},_0x9d1dx4,null,true);_0x9d1dx3[_0x5219[24]](_0x9d1dx4);this[_0x5219[28]](_0x9d1dx3,mxResources[_0x5219[26]](_0x5219[73]),_0x5219[38],mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_ENDSIZE,_0x9d1dx4)})));this[_0x5219[30]](_0x5219[74], new Menu(mxUtils[_0x5219[29]](this,function(_0x9d1dx3,_0x9d1dx4){this[_0x5219[20]](_0x9d1dx3,mxResources[_0x5219[26]](_0x5219[54]),[mxConstants[_0x5219[75]]],[mxConstants[_0x5219[56]]],null,_0x9d1dx4);this[_0x5219[20]](_0x9d1dx3,mxResources[_0x5219[26]](_0x5219[57]),[mxConstants[_0x5219[75]]],[mxConstants[_0x5219[58]]],null,_0x9d1dx4);this[_0x5219[20]](_0x9d1dx3,mxResources[_0x5219[26]](_0x5219[59]),[mxConstants[_0x5219[75]]],[mxConstants[_0x5219[60]]],null,_0x9d1dx4);_0x9d1dx3[_0x5219[24]](_0x9d1dx4);this[_0x5219[20]](_0x9d1dx3,mxResources[_0x5219[26]](_0x5219[61]),[mxConstants[_0x5219[75]]],[mxConstants[_0x5219[62]]],null,_0x9d1dx4);this[_0x5219[20]](_0x9d1dx3,mxResources[_0x5219[26]](_0x5219[63]),[mxConstants[_0x5219[75]]],[mxConstants[_0x5219[64]]],null,_0x9d1dx4);this[_0x5219[20]](_0x9d1dx3,mxResources[_0x5219[26]](_0x5219[65]),[mxConstants[_0x5219[75]]],[mxConstants[_0x5219[66]]],null,_0x9d1dx4);_0x9d1dx3[_0x5219[24]](_0x9d1dx4);this[_0x5219[20]](_0x9d1dx3,mxResources[_0x5219[26]](_0x5219[67]),[mxConstants[_0x5219[75]]],[mxConstants[_0x5219[68]]],null,_0x9d1dx4);_0x9d1dx3[_0x5219[24]](_0x9d1dx4);_0x9d1dx3[_0x5219[72]](mxResources[_0x5219[26]](_0x5219[69]),null,function(){_0x9d1dx2[_0x5219[71]](_0x5219[76],true)},_0x9d1dx4,null,true);_0x9d1dx3[_0x5219[24]](_0x9d1dx4);this[_0x5219[28]](_0x9d1dx3,mxResources[_0x5219[26]](_0x5219[73]),_0x5219[38],mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_STARTSIZE,_0x9d1dx4)})));this[_0x5219[30]](_0x5219[77], new Menu(mxUtils[_0x5219[29]](this,function(_0x9d1dx3,_0x9d1dx4){var _0x9d1dx9=this[_0x5219[0]][_0x5219[80]][_0x5219[26]](_0x5219[79])[_0x5219[78]];var _0x9d1dxa=this[_0x5219[26]](_0x5219[40])[_0x5219[78]];if(_0x9d1dx9|| _0x9d1dx3[_0x5219[81]]){this[_0x5219[28]](_0x9d1dx3,mxResources[_0x5219[26]](_0x5219[82]),_0x5219[38],_0x5219[83],mxConstants.STYLE_SPACING_TOP,_0x9d1dx4,_0x9d1dx9);this[_0x5219[28]](_0x9d1dx3,mxResources[_0x5219[26]](_0x5219[84]),_0x5219[38],_0x5219[83],mxConstants.STYLE_SPACING_RIGHT,_0x9d1dx4,_0x9d1dx9);this[_0x5219[28]](_0x9d1dx3,mxResources[_0x5219[26]](_0x5219[85]),_0x5219[38],_0x5219[83],mxConstants.STYLE_SPACING_BOTTOM,_0x9d1dx4,_0x9d1dx9);this[_0x5219[28]](_0x9d1dx3,mxResources[_0x5219[26]](_0x5219[86]),_0x5219[38],_0x5219[83],mxConstants.STYLE_SPACING_LEFT,_0x9d1dx4,_0x9d1dx9);_0x9d1dx3[_0x5219[24]](_0x9d1dx4);this[_0x5219[28]](_0x9d1dx3,mxResources[_0x5219[26]](_0x5219[87]),_0x5219[38],_0x5219[83],mxConstants.STYLE_SPACING,_0x9d1dx4,_0x9d1dx9);this[_0x5219[28]](_0x9d1dx3,mxResources[_0x5219[26]](_0x5219[88]),_0x5219[38],_0x5219[83],mxConstants.STYLE_PERIMETER_SPACING,_0x9d1dx4,_0x9d1dx9)};if(_0x9d1dxa|| _0x9d1dx3[_0x5219[81]]){_0x9d1dx3[_0x5219[24]](_0x9d1dx4);this[_0x5219[28]](_0x9d1dx3,mxResources[_0x5219[26]](_0x5219[89]),_0x5219[38],_0x5219[83],mxConstants.STYLE_SOURCE_PERIMETER_SPACING,_0x9d1dx4,_0x9d1dxa);this[_0x5219[28]](_0x9d1dx3,mxResources[_0x5219[26]](_0x5219[90]),_0x5219[38],_0x5219[83],mxConstants.STYLE_TARGET_PERIMETER_SPACING,_0x9d1dx4,_0x9d1dxa)}})));this[_0x5219[30]](_0x5219[91], new Menu(mxUtils[_0x5219[29]](this,function(_0x9d1dx3,_0x9d1dx4){this[_0x5219[92]](_0x9d1dx3,_0x5219[21],_0x9d1dx4)})));this[_0x5219[30]](_0x5219[93], new Menu(mxUtils[_0x5219[29]](this,function(_0x9d1dx3,_0x9d1dx4){var _0x9d1dxb=this[_0x5219[26]](_0x5219[93])[_0x5219[78]];_0x9d1dx3[_0x5219[24]](_0x9d1dx4);this[_0x5219[94]](_0x5219[8],_0x9d1dx3,_0x9d1dx4);this[_0x5219[94]](_0x5219[31],_0x9d1dx3,_0x9d1dx4);this[_0x5219[99]](_0x9d1dx3,[_0x5219[95],_0x5219[96],_0x5219[97],_0x5219[98],_0x5219[95]],_0x9d1dx4);this[_0x5219[94]](_0x5219[100],_0x9d1dx3,_0x9d1dx4);this[_0x5219[92]](_0x9d1dx3,_0x5219[101],_0x9d1dx4);_0x9d1dx3[_0x5219[24]](_0x9d1dx4);this[_0x5219[28]](_0x9d1dx3,mxResources[_0x5219[26]](_0x5219[102]),_0x5219[103],_0x5219[104],mxConstants.STYLE_TEXT_OPACITY,_0x9d1dx4,_0x9d1dxb);_0x9d1dx3[_0x5219[72]](mxResources[_0x5219[26]](_0x5219[105]),null,function(){_0x9d1dx2[_0x5219[71]](mxConstants.STYLE_NOLABEL,false)},_0x9d1dx4,null,_0x9d1dxb)})));this[_0x5219[30]](_0x5219[100], new Menu(mxUtils[_0x5219[29]](this,function(_0x9d1dx3,_0x9d1dx4){this[_0x5219[20]](_0x9d1dx3,mxResources[_0x5219[26]](_0x5219[106]),[mxConstants[_0x5219[107]]],[mxConstants[_0x5219[108]]],null,_0x9d1dx4);this[_0x5219[20]](_0x9d1dx3,mxResources[_0x5219[26]](_0x5219[109]),[mxConstants[_0x5219[107]]],[mxConstants[_0x5219[110]]],null,_0x9d1dx4);this[_0x5219[20]](_0x9d1dx3,mxResources[_0x5219[26]](_0x5219[111]),[mxConstants[_0x5219[107]]],[mxConstants[_0x5219[112]]],null,_0x9d1dx4);_0x9d1dx3[_0x5219[24]](_0x9d1dx4);this[_0x5219[20]](_0x9d1dx3,mxResources[_0x5219[26]](_0x5219[113]),[mxConstants[_0x5219[114]]],[mxConstants[_0x5219[115]]],null,_0x9d1dx4);this[_0x5219[20]](_0x9d1dx3,mxResources[_0x5219[26]](_0x5219[116]),[mxConstants[_0x5219[114]]],[mxConstants[_0x5219[117]]],null,_0x9d1dx4);this[_0x5219[20]](_0x9d1dx3,mxResources[_0x5219[26]](_0x5219[118]),[mxConstants[_0x5219[114]]],[mxConstants[_0x5219[119]]],null,_0x9d1dx4);_0x9d1dx3[_0x5219[24]](_0x9d1dx4);this[_0x5219[94]](_0x5219[120],_0x9d1dx3,_0x9d1dx4);this[_0x5219[94]](_0x5219[77],_0x9d1dx3,_0x9d1dx4);_0x9d1dx3[_0x5219[24]](_0x9d1dx4);var _0x9d1dxb=this[_0x5219[26]](_0x5219[93])[_0x5219[78]];_0x9d1dx3[_0x5219[72]](mxResources[_0x5219[26]](_0x5219[48]),null,function(){_0x9d1dx2[_0x5219[71]](mxConstants.STYLE_HORIZONTAL,true)},_0x9d1dx4,null,_0x9d1dxb)})));this[_0x5219[30]](_0x5219[120], new Menu(mxUtils[_0x5219[29]](this,function(_0x9d1dx3,_0x9d1dx4){this[_0x5219[20]](_0x9d1dx3,mxResources[_0x5219[26]](_0x5219[86]),[mxConstants[_0x5219[121]],mxConstants[_0x5219[107]]],[mxConstants[_0x5219[108]],mxConstants[_0x5219[112]]],null,_0x9d1dx4);this[_0x5219[20]](_0x9d1dx3,mxResources[_0x5219[26]](_0x5219[109]),[mxConstants[_0x5219[121]],mxConstants[_0x5219[107]]],[mxConstants[_0x5219[110]],mxConstants[_0x5219[110]]],null,_0x9d1dx4);this[_0x5219[20]](_0x9d1dx3,mxResources[_0x5219[26]](_0x5219[84]),[mxConstants[_0x5219[121]],mxConstants[_0x5219[107]]],[mxConstants[_0x5219[112]],mxConstants[_0x5219[108]]],null,_0x9d1dx4);_0x9d1dx3[_0x5219[24]](_0x9d1dx4);this[_0x5219[20]](_0x9d1dx3,mxResources[_0x5219[26]](_0x5219[82]),[mxConstants[_0x5219[122]],mxConstants[_0x5219[114]]],[mxConstants[_0x5219[115]],mxConstants[_0x5219[119]]],null,_0x9d1dx4);this[_0x5219[20]](_0x9d1dx3,mxResources[_0x5219[26]](_0x5219[116]),[mxConstants[_0x5219[122]],mxConstants[_0x5219[114]]],[mxConstants[_0x5219[117]],mxConstants[_0x5219[117]]],null,_0x9d1dx4);this[_0x5219[20]](_0x9d1dx3,mxResources[_0x5219[26]](_0x5219[85]),[mxConstants[_0x5219[122]],mxConstants[_0x5219[114]]],[mxConstants[_0x5219[119]],mxConstants[_0x5219[115]]],null,_0x9d1dx4)})));this[_0x5219[30]](_0x5219[123], new Menu(mxUtils[_0x5219[29]](this,function(_0x9d1dx3,_0x9d1dx4){_0x9d1dx3[_0x5219[72]](mxResources[_0x5219[26]](_0x5219[124]),null,function(){_0x9d1dx2[_0x5219[71]](mxConstants.STYLE_FLIPH,false)},_0x9d1dx4);_0x9d1dx3[_0x5219[72]](mxResources[_0x5219[26]](_0x5219[125]),null,function(){_0x9d1dx2[_0x5219[71]](mxConstants.STYLE_FLIPV,false)},_0x9d1dx4);this[_0x5219[99]](_0x9d1dx3,[_0x5219[95],_0x5219[126],_0x5219[127]],_0x9d1dx4)})));this[_0x5219[30]](_0x5219[128], new Menu(mxUtils[_0x5219[29]](this,function(_0x9d1dx3,_0x9d1dx4){_0x9d1dx3[_0x5219[72]](mxResources[_0x5219[26]](_0x5219[106]),null,function(){_0x9d1dx2[_0x5219[129]](mxConstants.ALIGN_LEFT)},_0x9d1dx4);_0x9d1dx3[_0x5219[72]](mxResources[_0x5219[26]](_0x5219[109]),null,function(){_0x9d1dx2[_0x5219[129]](mxConstants.ALIGN_CENTER)},_0x9d1dx4);_0x9d1dx3[_0x5219[72]](mxResources[_0x5219[26]](_0x5219[111]),null,function(){_0x9d1dx2[_0x5219[129]](mxConstants.ALIGN_RIGHT)},_0x9d1dx4);_0x9d1dx3[_0x5219[24]](_0x9d1dx4);_0x9d1dx3[_0x5219[72]](mxResources[_0x5219[26]](_0x5219[113]),null,function(){_0x9d1dx2[_0x5219[129]](mxConstants.ALIGN_TOP)},_0x9d1dx4);_0x9d1dx3[_0x5219[72]](mxResources[_0x5219[26]](_0x5219[116]),null,function(){_0x9d1dx2[_0x5219[129]](mxConstants.ALIGN_MIDDLE)},_0x9d1dx4);_0x9d1dx3[_0x5219[72]](mxResources[_0x5219[26]](_0x5219[118]),null,function(){_0x9d1dx2[_0x5219[129]](mxConstants.ALIGN_BOTTOM)},_0x9d1dx4)})));this[_0x5219[30]](_0x5219[130], new Menu(mxUtils[_0x5219[29]](this,function(_0x9d1dx3,_0x9d1dx4){_0x9d1dx3[_0x5219[72]](mxResources[_0x5219[26]](_0x5219[131]),null,mxUtils[_0x5219[29]](this,function(){var _0x9d1dxc= new mxHierarchicalLayout(_0x9d1dx2,mxConstants.DIRECTION_WEST);this[_0x5219[0]][_0x5219[132]](_0x9d1dxc,true,true)}),_0x9d1dx4);_0x9d1dx3[_0x5219[72]](mxResources[_0x5219[26]](_0x5219[133]),null,mxUtils[_0x5219[29]](this,function(){var _0x9d1dxc= new mxHierarchicalLayout(_0x9d1dx2,mxConstants.DIRECTION_NORTH);this[_0x5219[0]][_0x5219[132]](_0x9d1dxc,true,true)}),_0x9d1dx4)})));this[_0x5219[30]](_0x5219[134], new Menu(mxUtils[_0x5219[29]](this,function(_0x9d1dx3,_0x9d1dx4){this[_0x5219[99]](_0x9d1dx3,[_0x5219[135],_0x5219[95],_0x5219[136],_0x5219[137],_0x5219[95],_0x5219[138],_0x5219[139]],_0x9d1dx4)})));this[_0x5219[30]](_0x5219[140], new Menu(mxUtils[_0x5219[29]](this,function(_0x9d1dx3,_0x9d1dx4){this[_0x5219[99]](_0x9d1dx3,[_0x5219[141],_0x5219[142],_0x5219[95]],_0x9d1dx4);this[_0x5219[94]](_0x5219[130],_0x9d1dx3,_0x9d1dx4);_0x9d1dx3[_0x5219[24]](_0x9d1dx4);this[_0x5219[99]](_0x9d1dx3,[_0x5219[95],_0x5219[143],_0x5219[144],_0x5219[145]],_0x9d1dx4)})));this[_0x5219[30]](_0x5219[146], new Menu(mxUtils[_0x5219[29]](this,function(_0x9d1dx3,_0x9d1dx4){this[_0x5219[99]](_0x9d1dx3,[_0x5219[147]],_0x9d1dx4);_0x9d1dx3[_0x5219[24]]();var _0x9d1dxd=[0.25,0.5,0.75,1,2,4];for(var _0x9d1dx6=0;_0x9d1dx6< _0x9d1dxd[_0x5219[18]];_0x9d1dx6++){(function(_0x9d1dxe){_0x9d1dx3[_0x5219[72]]((_0x9d1dxe* 100)+ _0x5219[148],null,function(){_0x9d1dx2[_0x5219[149]](_0x9d1dxe)},_0x9d1dx4)})(_0x9d1dxd[_0x9d1dx6])};this[_0x5219[99]](_0x9d1dx3,[_0x5219[95],_0x5219[150],_0x5219[151],_0x5219[95],_0x5219[152],_0x5219[153],_0x5219[95],_0x5219[154],_0x5219[155]],_0x9d1dx4)})));this[_0x5219[30]](_0x5219[156], new Menu(mxUtils[_0x5219[29]](this,function(_0x9d1dx3,_0x9d1dx4){this[_0x5219[99]](_0x9d1dx3,[_0x5219[157],_0x5219[158],_0x5219[95],_0x5219[159],_0x5219[160],_0x5219[161],_0x5219[95],_0x5219[162],_0x5219[95],_0x5219[163],_0x5219[164],_0x5219[95],_0x5219[165],_0x5219[166],_0x5219[95],_0x5219[167]],_0x9d1dx4)})));this[_0x5219[30]](_0x5219[168], new Menu(mxUtils[_0x5219[29]](this,function(_0x9d1dx3,_0x9d1dx4){this[_0x5219[99]](_0x9d1dx3,[_0x5219[169],_0x5219[170],_0x5219[95],_0x5219[171],_0x5219[172],_0x5219[173],_0x5219[174],_0x5219[95],_0x5219[175],_0x5219[95],_0x5219[176],_0x5219[177],_0x5219[178]])})));this[_0x5219[30]](_0x5219[179], new Menu(mxUtils[_0x5219[29]](this,function(_0x9d1dx3,_0x9d1dx4){this[_0x5219[99]](_0x9d1dx3,[_0x5219[179],_0x5219[95],_0x5219[180]])})))};Menus[_0x5219[5]][_0x5219[30]]= function(_0x9d1dxf,_0x9d1dx3){this[_0x5219[1]][_0x9d1dxf]= _0x9d1dx3};Menus[_0x5219[5]][_0x5219[26]]= function(_0x9d1dxf){return this[_0x5219[1]][_0x9d1dxf]};Menus[_0x5219[5]][_0x5219[94]]= function(_0x9d1dxf,_0x9d1dx3,_0x9d1dx4){var _0x9d1dxb=this[_0x5219[26]](_0x9d1dxf)[_0x5219[78]];if(_0x9d1dx3[_0x5219[81]]|| _0x9d1dxb){var _0x9d1dx10=_0x9d1dx3[_0x5219[72]](mxResources[_0x5219[26]](_0x9d1dxf),null,null,_0x9d1dx4,null,_0x9d1dxb);this[_0x5219[181]](_0x9d1dxf,_0x9d1dx3,_0x9d1dx10)}};Menus[_0x5219[5]][_0x5219[181]]= function(_0x9d1dxf,_0x9d1dx11,_0x9d1dx4){var _0x9d1dx3=this[_0x5219[26]](_0x9d1dxf);if(_0x9d1dx3!= null&& (_0x9d1dx11[_0x5219[81]]|| _0x9d1dx3[_0x5219[78]])){this[_0x5219[26]](_0x9d1dxf)[_0x5219[182]](_0x9d1dx11,_0x9d1dx4)}};Menus[_0x5219[5]][_0x5219[20]]= function(_0x9d1dx3,_0x9d1dx12,_0x9d1dx13,_0x9d1dx14,_0x9d1dx15,_0x9d1dx4){return _0x9d1dx3[_0x5219[72]](_0x9d1dx12,null,mxUtils[_0x5219[29]](this,function(){var _0x9d1dx2=this[_0x5219[0]][_0x5219[7]][_0x5219[6]];_0x9d1dx2[_0x5219[184]]()[_0x5219[183]]();try{for(var _0x9d1dx6=0;_0x9d1dx6< _0x9d1dx13[_0x5219[18]];_0x9d1dx6++){_0x9d1dx2[_0x5219[185]](_0x9d1dx13[_0x9d1dx6],_0x9d1dx14[_0x9d1dx6])}}finally{_0x9d1dx2[_0x5219[184]]()[_0x5219[186]]()}}),_0x9d1dx4,_0x9d1dx15)};Menus[_0x5219[5]][_0x5219[28]]= function(_0x9d1dx3,_0x9d1dx12,_0x9d1dx16,_0x9d1dx17,_0x9d1dx18,_0x9d1dx4,_0x9d1dxb){return _0x9d1dx3[_0x5219[72]](_0x9d1dx12,null,mxUtils[_0x5219[29]](this,function(){var _0x9d1dx2=this[_0x5219[0]][_0x5219[7]][_0x5219[6]];var _0x9d1dx19=_0x9d1dx17;var _0x9d1dx1a=_0x9d1dx2[_0x5219[189]]()[_0x5219[188]](_0x9d1dx2[_0x5219[187]]());if(_0x9d1dx1a!= null){_0x9d1dx19= _0x9d1dx1a[_0x5219[21]][_0x9d1dx18]|| _0x9d1dx19};_0x9d1dx19= mxUtils[_0x5219[192]](mxResources[_0x5219[26]](_0x5219[190])+ ((_0x9d1dx16[_0x5219[18]]> 0)?(_0x5219[191]+ _0x9d1dx16):_0x5219[27]),_0x9d1dx19);if(_0x9d1dx19!= null&& _0x9d1dx19[_0x5219[18]]> 0){_0x9d1dx2[_0x5219[185]](_0x9d1dx18,_0x9d1dx19)}}),_0x9d1dx4,null,_0x9d1dxb)};Menus[_0x5219[5]][_0x5219[92]]= function(_0x9d1dx3,_0x9d1dx18,_0x9d1dx4){var _0x9d1dx1b=this[_0x5219[0]][_0x5219[80]][_0x5219[26]](_0x9d1dx18);if(_0x9d1dx1b!= null&& (_0x9d1dx3[_0x5219[81]]|| _0x9d1dx1b[_0x5219[78]])){var _0x9d1dx1c=_0x9d1dx3[_0x5219[72]](_0x9d1dx1b[_0x5219[193]],null,_0x9d1dx1b[_0x5219[194]],_0x9d1dx4,null,_0x9d1dx1b[_0x5219[78]]);if(_0x9d1dx1b[_0x5219[195]]&& _0x9d1dx1b[_0x5219[196]]()){this[_0x5219[197]](_0x9d1dx1c)};this[_0x5219[198]](_0x9d1dx1c,_0x9d1dx1b);return _0x9d1dx1c};return null};Menus[_0x5219[5]][_0x5219[198]]= function(_0x9d1dx1c,_0x9d1dx1b){if(_0x9d1dx1b[_0x5219[199]]!= null){var _0x9d1dx1d=_0x9d1dx1c[_0x5219[23]][_0x5219[22]][_0x5219[22]];var _0x9d1dx1e=document[_0x5219[201]](_0x5219[200]);_0x9d1dx1e[_0x5219[21]][_0x5219[202]]= _0x5219[203];mxUtils[_0x5219[204]](_0x9d1dx1e,_0x9d1dx1b[_0x5219[199]]);_0x9d1dx1d[_0x5219[205]](_0x9d1dx1e)}};Menus[_0x5219[5]][_0x5219[197]]= function(_0x9d1dx1c){var _0x9d1dx1d=_0x9d1dx1c[_0x5219[23]][_0x5219[22]];_0x9d1dx1d[_0x5219[21]][_0x5219[206]]= _0x5219[207]+ IMAGE_PATH+ _0x5219[208];_0x9d1dx1d[_0x5219[21]][_0x5219[209]]= _0x5219[210];_0x9d1dx1d[_0x5219[21]][_0x5219[211]]= _0x5219[212]};Menus[_0x5219[5]][_0x5219[99]]= function(_0x9d1dx3,_0x9d1dx13,_0x9d1dx4){for(var _0x9d1dx6=0;_0x9d1dx6< _0x9d1dx13[_0x5219[18]];_0x9d1dx6++){if(_0x9d1dx13[_0x9d1dx6]== _0x5219[95]){_0x9d1dx3[_0x5219[24]](_0x9d1dx4)}else {this[_0x5219[92]](_0x9d1dx3,_0x9d1dx13[_0x9d1dx6],_0x9d1dx4)}}};Menus[_0x5219[5]][_0x5219[213]]= function(_0x9d1dx3,_0x9d1dx1f,_0x9d1dx20){var _0x9d1dx2=this[_0x5219[0]][_0x5219[7]][_0x5219[6]];_0x9d1dx3[_0x5219[214]]= true;if(_0x9d1dx2[_0x5219[215]]()){this[_0x5219[99]](_0x9d1dx3,[_0x5219[169],_0x5219[170],_0x5219[95],_0x5219[173],_0x5219[95]])}else {this[_0x5219[99]](_0x9d1dx3,[_0x5219[174],_0x5219[95],_0x5219[171],_0x5219[172],_0x5219[95],_0x5219[175]]);if(_0x9d1dx2[_0x5219[216]]()== 1&& _0x9d1dx2[_0x5219[184]]()[_0x5219[217]](_0x9d1dx2[_0x5219[187]]())){this[_0x5219[99]](_0x9d1dx3,[_0x5219[218]])};_0x9d1dx3[_0x5219[24]]()};if(_0x9d1dx2[_0x5219[216]]()> 0){this[_0x5219[99]](_0x9d1dx3,[_0x5219[141],_0x5219[142],_0x5219[95]]);if(_0x9d1dx2[_0x5219[184]]()[_0x5219[217]](_0x9d1dx2[_0x5219[187]]())){var _0x9d1dx21=false;var _0x9d1dx1f=_0x9d1dx2[_0x5219[187]]();if(_0x9d1dx1f!= null&& _0x9d1dx2[_0x5219[184]]()[_0x5219[217]](_0x9d1dx1f)){var _0x9d1dx22=_0x9d1dx2[_0x5219[220]][_0x5219[219]](_0x9d1dx1f);if(_0x9d1dx22 instanceof mxEdgeHandler&& _0x9d1dx22[_0x5219[221]]!= null&& _0x9d1dx22[_0x5219[221]][_0x5219[18]]> 2){var _0x9d1dx23=_0x9d1dx22[_0x5219[222]]( new mxMouseEvent(_0x9d1dx20));var _0x9d1dx24=this[_0x5219[0]][_0x5219[80]][_0x5219[26]](_0x5219[223]);_0x9d1dx24[_0x5219[224]]= _0x9d1dx22;_0x9d1dx24[_0x5219[225]]= _0x9d1dx23;_0x9d1dx21= _0x9d1dx23> 0&& _0x9d1dx23< _0x9d1dx22[_0x5219[221]][_0x5219[18]]}};this[_0x5219[99]](_0x9d1dx3,[_0x5219[95],(_0x9d1dx21)?_0x5219[223]:_0x5219[226]])}else {if(_0x9d1dx2[_0x5219[216]]()> 1){_0x9d1dx3[_0x5219[24]]();this[_0x5219[99]](_0x9d1dx3,[_0x5219[143]])}};_0x9d1dx3[_0x5219[24]]();if(_0x9d1dx2[_0x5219[216]]()== 1){var _0x9d1dx25=_0x9d1dx2[_0x5219[227]](_0x9d1dx2[_0x5219[187]]());if(_0x9d1dx25!= null){this[_0x5219[99]](_0x9d1dx3,[_0x5219[228]])}}}else {this[_0x5219[99]](_0x9d1dx3,[_0x5219[95],_0x5219[176],_0x5219[177],_0x5219[95],_0x5219[178]])}};Menus[_0x5219[5]][_0x5219[229]]= function(_0x9d1dx26){var _0x9d1dx27= new Menubar(this[_0x5219[0]],_0x9d1dx26);var _0x9d1dx28=[_0x5219[156],_0x5219[168],_0x5219[146],_0x5219[91],_0x5219[93],_0x5219[140]];for(var _0x9d1dx6=0;_0x9d1dx6< _0x9d1dx28[_0x5219[18]];_0x9d1dx6++){_0x9d1dx27[_0x5219[181]](mxResources[_0x5219[26]](_0x9d1dx28[_0x9d1dx6]),this[_0x5219[26]](_0x9d1dx28[_0x9d1dx6])[_0x5219[194]])};return _0x9d1dx27};function Menubar(_0x9d1dx1,_0x9d1dx26){this[_0x5219[0]]= _0x9d1dx1;this[_0x5219[230]]= _0x9d1dx26;mxEvent[_0x5219[232]](document,mxUtils[_0x5219[29]](this,function(_0x9d1dx20){this[_0x5219[231]]()}))}Menubar[_0x5219[5]][_0x5219[231]]= function(){if(this[_0x5219[233]]!= null){this[_0x5219[233]][_0x5219[231]]()}};Menubar[_0x5219[5]][_0x5219[181]]= function(_0x9d1dx12,_0x9d1dx2a){var _0x9d1dx2b=document[_0x5219[201]](_0x5219[234]);_0x9d1dx2b[_0x5219[237]](_0x5219[235],_0x5219[236]);_0x9d1dx2b[_0x5219[238]]= _0x5219[239];mxUtils[_0x5219[204]](_0x9d1dx2b,_0x9d1dx12);this[_0x5219[240]](_0x9d1dx2b,_0x9d1dx2a);this[_0x5219[230]][_0x5219[205]](_0x9d1dx2b);return _0x9d1dx2b};Menubar[_0x5219[5]][_0x5219[240]]= function(_0x9d1dx2b,_0x9d1dx2a){if(_0x9d1dx2a!= null){var _0x9d1dx2c=true;var _0x9d1dx2d=mxUtils[_0x5219[29]](this,function(_0x9d1dx20){if(_0x9d1dx2c&& _0x9d1dx2b[_0x5219[78]]== null|| _0x9d1dx2b[_0x5219[78]]){this[_0x5219[0]][_0x5219[7]][_0x5219[6]][_0x5219[241]][_0x5219[231]]();var _0x9d1dx3= new mxPopupMenu(_0x9d1dx2a);_0x9d1dx3[_0x5219[242]][_0x5219[238]]+= _0x5219[243];_0x9d1dx3[_0x5219[214]]= true;_0x9d1dx3[_0x5219[81]]= true;_0x9d1dx3[_0x5219[244]]= true;_0x9d1dx3[_0x5219[231]]= mxUtils[_0x5219[29]](this,function(){mxPopupMenu[_0x5219[5]][_0x5219[231]][_0x5219[245]](_0x9d1dx3,arguments);_0x9d1dx3[_0x5219[246]]();this[_0x5219[233]]= null;this[_0x5219[247]]= null});var _0x9d1dx2e=_0x9d1dx2b[_0x5219[248]]+ document[_0x5219[251]](_0x5219[250])[_0x5219[249]]+ 22;var _0x9d1dx2f=_0x9d1dx2b[_0x5219[252]]+ _0x9d1dx2b[_0x5219[253]]+ 140;_0x9d1dx3[_0x5219[254]](_0x9d1dx2e,_0x9d1dx2f,null,_0x9d1dx20);this[_0x5219[233]]= _0x9d1dx3;this[_0x5219[247]]= _0x9d1dx2b};_0x9d1dx2c= true;mxEvent[_0x5219[255]](_0x9d1dx20)});mxEvent[_0x5219[257]](_0x9d1dx2b,_0x5219[256],mxUtils[_0x5219[29]](this,function(_0x9d1dx20){if(this[_0x5219[233]]!= null&& this[_0x5219[247]]!= _0x9d1dx2b){this[_0x5219[231]]();_0x9d1dx2d(_0x9d1dx20)}}));mxEvent[_0x5219[257]](_0x9d1dx2b,_0x5219[258],mxUtils[_0x5219[29]](this,function(){_0x9d1dx2c= this[_0x5219[247]]!= _0x9d1dx2b}));mxEvent[_0x5219[257]](_0x9d1dx2b,_0x5219[259],_0x9d1dx2d)}};function Menu(_0x9d1dx2a,_0x9d1dxb){mxEventSource[_0x5219[260]](this);this[_0x5219[194]]= _0x9d1dx2a;this[_0x5219[78]]= (_0x9d1dxb!= null)?_0x9d1dxb:true}mxUtils[_0x5219[261]](Menu,mxEventSource);Menu[_0x5219[5]][_0x5219[262]]= function(_0x9d1dx19){if(this[_0x5219[78]]!= _0x9d1dx19){this[_0x5219[78]]= _0x9d1dx19;this[_0x5219[264]]( new mxEventObject(_0x5219[263]))}};Menu[_0x5219[5]][_0x5219[182]]= function(_0x9d1dx3,_0x9d1dx4){this[_0x5219[194]](_0x9d1dx3,_0x9d1dx4)} \ No newline at end of file diff --git a/public/assets/plugins/jscripty/js/Shapes.js b/public/assets/plugins/jscripty/js/Shapes.js index 42e13ca..d6a4c2f 100644 --- a/public/assets/plugins/jscripty/js/Shapes.js +++ b/public/assets/plugins/jscripty/js/Shapes.js @@ -1,1234 +1 @@ -/** - * $Id: Shapes.js,v 1.13 2013-02-02 06:44:30 gaudenz Exp $ - * Copyright (c) 2006-2012, JGraph Ltd - */ - -/** - * Registers shapes. - */ -(function() -{ - // Cube Shape, supports size style - function CubeShape() { }; - CubeShape.prototype = new mxCylinder(); - CubeShape.prototype.constructor = CubeShape; - CubeShape.prototype.size = 20; - CubeShape.prototype.redrawPath = function(path, x, y, w, h, isForeground) - { - var s = Math.min(w, Math.min(h, mxUtils.getValue(this.style, 'size', this.size))); - - if (isForeground) - { - path.moveTo(s, h); - path.lineTo(s, s); - path.lineTo(0, 0); - path.moveTo(s, s); - path.lineTo(w, s); - path.end(); - } - else - { - path.moveTo(0, 0); - path.lineTo(w - s, 0); - path.lineTo(w, s); - path.lineTo(w, h); - path.lineTo(s, h); - path.lineTo(0, h - s); - path.lineTo(0, 0); - path.close(); - path.end(); - } - }; - - mxCellRenderer.prototype.defaultShapes['cube'] = CubeShape; - - // Note Shape, supports size style - function NoteShape() { }; - NoteShape.prototype = new mxCylinder(); - NoteShape.prototype.constructor = NoteShape; - NoteShape.prototype.size = 30; - NoteShape.prototype.redrawPath = function(path, x, y, w, h, isForeground) - { - var s = Math.min(w, Math.min(h, mxUtils.getValue(this.style, 'size', this.size))); - - if (isForeground) - { - path.moveTo(w - s, 0); - path.lineTo(w - s, s); - path.lineTo(w, s); - path.end(); - } - else - { - path.moveTo(0, 0); - path.lineTo(w - s, 0); - path.lineTo(w, s); - path.lineTo(w, h); - path.lineTo(0, h); - path.lineTo(0, 0); - path.close(); - path.end(); - } - }; - - mxCellRenderer.prototype.defaultShapes['note'] = NoteShape; - - // Folder Shape, supports tabWidth, tabHeight styles - function FolderShape() { }; - FolderShape.prototype = new mxCylinder(); - FolderShape.prototype.constructor = FolderShape; - FolderShape.prototype.tabWidth = 60; - FolderShape.prototype.tabHeight = 20; - FolderShape.prototype.tabPosition = 'right'; - FolderShape.prototype.redrawPath = function(path, x, y, w, h, isForeground) - { - var tw = mxUtils.getValue(this.style, 'tabWidth', this.tabWidth); - var th = mxUtils.getValue(this.style, 'tabHeight', this.tabHeight); - var tp = mxUtils.getValue(this.style, 'tabPosition', this.tabPosition); - var dx = Math.min(w, tw); - var dy = Math.min(h, th); - - if (isForeground) - { - if (tp == 'left') - { - path.moveTo(0, dy); - path.lineTo(dx, dy); - } - // Right is default - else - { - path.moveTo(w - dx, dy); - path.lineTo(w, dy); - } - - path.end(); - } - else - { - if (tp == 'left') - { - path.moveTo(0, 0); - path.lineTo(dx, 0); - path.lineTo(dx, dy); - path.lineTo(w, dy); - } - // Right is default - else - { - path.moveTo(0, dy); - path.lineTo(w - dx, dy); - path.lineTo(w - dx, 0); - path.lineTo(w, 0); - } - - path.lineTo(w, h); - path.lineTo(0, h); - path.lineTo(0, dy); - path.close(); - path.end(); - } - }; - - mxCellRenderer.prototype.defaultShapes['folder'] = FolderShape; - - // Card Shape, supports size style - function CardShape() { }; - CardShape.prototype = new mxCylinder(); - CardShape.prototype.constructor = CardShape; - CardShape.prototype.size = 30; - CardShape.prototype.redrawPath = function(path, x, y, w, h, isForeground) - { - var s = Math.min(w, Math.min(h, mxUtils.getValue(this.style, 'size', this.size))); - - if (!isForeground) - { - path.moveTo(s, 0); - path.lineTo(w, 0); - path.lineTo(w, h); - path.lineTo(0, h); - path.lineTo(0, s); - path.lineTo(s, 0); - path.close(); - path.end(); - } - }; - - mxCellRenderer.prototype.defaultShapes['card'] = CardShape; - - // Tape Shape, supports size style - function TapeShape() { }; - TapeShape.prototype = new mxCylinder(); - TapeShape.prototype.constructor = TapeShape; - TapeShape.prototype.size = 0.4; - TapeShape.prototype.redrawPath = function(path, x, y, w, h, isForeground) - { - var s = mxUtils.getValue(this.style, 'size', this.size); - var dy = h * s; - var fy = 1.4; - - if (!isForeground) - { - path.moveTo(0, dy / 2); - path.quadTo(w / 4, dy * fy, w / 2, dy / 2); - path.quadTo(w * 3 / 4, dy * (1 - fy), w, dy / 2); - path.lineTo(w, h - dy / 2); - path.quadTo(w * 3 / 4, h - dy * fy, w / 2, h - dy / 2); - path.quadTo(w / 4, h - dy * (1 - fy), 0, h - dy / 2); - path.lineTo(0, dy / 2); - path.close(); - path.end(); - } - }; - - mxCellRenderer.prototype.defaultShapes['tape'] = TapeShape; - - // Tape Shape, supports size style - function StepShape() { }; - StepShape.prototype = new mxCylinder(); - StepShape.prototype.constructor = StepShape; - StepShape.prototype.size = 0.2; - StepShape.prototype.redrawPath = function(path, x, y, w, h, isForeground) - { - var s = w * mxUtils.getValue(this.style, 'size', this.size); - - if (!isForeground) - { - path.moveTo(0, 0); - path.lineTo(w - s, 0); - path.lineTo(w, h / 2); - path.lineTo(w - s, h); - path.lineTo(0, h); - path.lineTo(s, h / 2); - path.close(); - path.end(); - } - }; - - mxCellRenderer.prototype.defaultShapes['step'] = StepShape; - - // Plus Shape - function PlusShape() - { - mxRectangleShape.call(this); - }; - mxUtils.extend(PlusShape, mxRectangleShape); - PlusShape.prototype.isHtmlAllowed = function() - { - return false; - }; - PlusShape.prototype.paintForeground = function(c, x, y, w, h) - { - var border = Math.min(w / 5, h / 5) + 1; - - c.begin(); - c.moveTo(x + w / 2, y + border); - c.lineTo(x + w / 2, y + h - border); - c.moveTo(x + border, y + h / 2); - c.lineTo(x + w - border, y + h / 2); - c.end(); - c.stroke(); - mxRectangleShape.prototype.paintForeground.apply(this, arguments); - }; - - mxCellRenderer.prototype.defaultShapes['plus'] = PlusShape; - - // CompositeShape - function ExtendedShape() - { - mxRectangleShape.call(this); - }; - mxUtils.extend(ExtendedShape, mxRectangleShape); - ExtendedShape.prototype.isHtmlAllowed = function() - { - return false; - }; - ExtendedShape.prototype.paintForeground = function(c, x, y, w, h) - { - if (this.style != null) - { - if (this.style['double'] == 1) - { - var inset = Math.max(2, this.strokewidth + 1); - - mxRectangleShape.prototype.paintBackground.call(this, c, x + inset, y + inset, w - 2 * inset, h - 2 * inset); - mxRectangleShape.prototype.paintForeground.apply(this, arguments); - - x += inset; - y += inset; - w -= 2 * inset; - h -= 2 * inset; - } - - c.setDashed(false); - - // Draws the symbols defined in the style. The symbols are - // numbered from 1...n. Possible postfixes are align, - // verticalAlign, spacing, arcSpacing, width, height - var counter = 0; - var shape = null; - - do - { - shape = mxCellRenderer.prototype.defaultShapes[this.style['symbol' + counter]]; - - if (shape != null) - { - var align = this.style['symbol' + counter + 'Align']; - var valign = this.style['symbol' + counter + 'VerticalAlign']; - var width = this.style['symbol' + counter + 'Width']; - var height = this.style['symbol' + counter + 'Height']; - var spacing = this.style['symbol' + counter + 'Spacing'] || 0; - var arcspacing = this.style['symbol' + counter + 'ArcSpacing']; - - if (arcspacing != null) - { - spacing += this.getArcSize(w + this.strokewidth, h + this.strokewidth) * arcspacing; - } - - var x2 = x; - var y2 = y; - - if (align == mxConstants.ALIGN_CENTER) - { - x2 += (w - width) / 2; - } - else if (align == mxConstants.ALIGN_RIGHT) - { - x2 += w - width - spacing; - } - else - { - x2 += spacing; - } - - if (valign == mxConstants.ALIGN_MIDDLE) - { - y2 += (h - height) / 2; - } - else if (valign == mxConstants.ALIGN_BOTTOM) - { - y2 += h - height - spacing; - } - else - { - y2 += spacing; - } - - c.save(); - - // Small hack to pass style along into subshape - var tmp = new shape(); - // TODO: Clone style and override settings (eg. strokewidth) - tmp.style = this.style; - shape.prototype.paintVertexShape.call(tmp, c, x2, y2, width, height); - c.restore(); - } - - counter++; - } - while (shape != null); - } - }; - - mxCellRenderer.prototype.defaultShapes['ext'] = ExtendedShape; - - // Tape Shape, supports size style - function MessageShape() { }; - MessageShape.prototype = new mxCylinder(); - MessageShape.prototype.constructor = MessageShape; - MessageShape.prototype.redrawPath = function(path, x, y, w, h, isForeground) - { - if (isForeground) - { - path.moveTo(0, 0); - path.lineTo(w / 2, h / 2); - path.lineTo(w, 0); - path.end(); - } - else - { - path.moveTo(0, 0); - path.lineTo(w, 0); - path.lineTo(w, h); - path.lineTo(0, h); - path.close(); - } - }; - - mxCellRenderer.prototype.defaultShapes['message'] = MessageShape; - - // New Actor Shape - function UmlActorShape() { }; - UmlActorShape.prototype = new mxCylinder(); - UmlActorShape.prototype.constructor = UmlActorShape; - UmlActorShape.prototype.addPipe = true; - UmlActorShape.prototype.redrawPath = function(path, x, y, w, h, isForeground) - { - var width = w / 3; - var height = h / 4; - - if (!isForeground) - { - path.moveTo(w / 2, height); - path.curveTo(w / 2 - width, height, w / 2 - width, 0, w / 2, 0); - path.curveTo(w / 2 + width, 0, w / 2 + width, height, w / 2, height); - path.close(); - - path.moveTo(w / 2, height); - path.lineTo(w / 2, 2 * h / 3); - - // Arms - path.moveTo(w / 2, h / 3); - path.lineTo(0, h / 3); - path.moveTo(w / 2, h / 3); - path.lineTo(w, h / 3); - - // Legs - path.moveTo(w / 2, 2 * h / 3); - path.lineTo(0, h); - path.moveTo(w / 2, 2 * h / 3); - path.lineTo(w, h); - path.end(); - } - }; - - // Replaces existing actor shape - mxCellRenderer.prototype.defaultShapes['umlActor'] = UmlActorShape; - - // New Actor Shape - function LollipopShape() { }; - LollipopShape.prototype = new mxCylinder(); - LollipopShape.prototype.constructor = LollipopShape; - LollipopShape.prototype.size = 10; - LollipopShape.prototype.addPipe = true; - LollipopShape.prototype.redrawPath = function(path, x, y, w, h, isForeground) - { - var ss = mxUtils.getValue(this.style, 'size', this.size); - var width = ss * 2 / 3; - var height = ss; - - if (!isForeground) - { - path.moveTo(w / 2, height); - path.curveTo(w / 2 - width, height, w / 2 - width, 0, w / 2, 0); - path.curveTo(w / 2 + width, 0, w / 2 + width, height, w / 2, height); - path.close(); - - path.moveTo(w / 2, height); - path.lineTo(w / 2, h); - path.end(); - } - }; - - // Replaces existing actor shape - mxCellRenderer.prototype.defaultShapes['lollipop'] = LollipopShape; - - // Folder Shape, supports tabWidth, tabHeight styles - function ComponentShape() { }; - ComponentShape.prototype = new mxCylinder(); - ComponentShape.prototype.constructor = ComponentShape; - ComponentShape.prototype.jettyWidth = 32; - ComponentShape.prototype.jettyHeight = 12; - ComponentShape.prototype.redrawPath = function(path, x, y, w, h, isForeground) - { - var dx = mxUtils.getValue(this.style, 'jettyWidth', this.jettyWidth); - var dy = mxUtils.getValue(this.style, 'jettyHeight', this.jettyHeight); - var x0 = dx / 2; - var x1 = x0 + dx / 2; - var y0 = 0.3 * h - dy / 2; - var y1 = 0.7 * h - dy / 2; - - if (isForeground) - { - path.moveTo(x0, y0); - path.lineTo(x1, y0); - path.lineTo(x1, y0 + dy); - path.lineTo(x0, y0 + dy); - path.moveTo(x0, y1); - path.lineTo(x1, y1); - path.lineTo(x1, y1 + dy); - path.lineTo(x0, y1 + dy); - path.end(); - } - else - { - path.moveTo(x0, 0); - path.lineTo(w, 0); - path.lineTo(w, h); - path.lineTo(x0, h); - path.lineTo(x0, y1 + dy); - path.lineTo(0, y1 + dy); - path.lineTo(0, y1); - path.lineTo(x0, y1); - path.lineTo(x0, y0 + dy); - path.lineTo(0, y0 + dy); - path.lineTo(0, y0); - path.lineTo(x0, y0); - path.close(); - path.end(); - } - }; - - mxCellRenderer.prototype.defaultShapes['component'] = ComponentShape; - - // State Shapes derives from double ellipse - function StateShape() { }; - StateShape.prototype = new mxDoubleEllipse(); - StateShape.prototype.constructor = StateShape; - StateShape.prototype.outerStroke = true; - StateShape.prototype.paintVertexShape = function(c, x, y, w, h) - { - var inset = Math.min(4, Math.min(w / 5, h / 5)); - - if (w > 0 && h > 0) - { - c.ellipse(x + inset, y + inset, w - 2 * inset, h - 2 * inset); - c.fillAndStroke(); - } - - c.setShadow(false); - - if (this.outerStroke) - { - c.ellipse(x, y, w, h); - c.stroke(); - } - }; - - mxCellRenderer.prototype.defaultShapes['endState'] = StateShape; - - function StartStateShape() { }; - StartStateShape.prototype = new StateShape(); - StartStateShape.prototype.constructor = StartStateShape; - StartStateShape.prototype.outerStroke = false; - - mxCellRenderer.prototype.defaultShapes['startState'] = StartStateShape; - - // Image export for state shapes - var imageExportInitShapes = mxImageExport.prototype.initShapes; - mxImageExport.prototype.initShapes = function() - { - imageExportInitShapes.apply(this, arguments); - - function createStateShape(outerStroke) - { - return { - drawShape: function(canvas, state, bounds, background) - { - var x = bounds.x; - var y = bounds.y; - var w = bounds.width; - var h = bounds.height; - - if (background) - { - var inset = Math.min(4, Math.min(w / 5, h / 5)); - x += inset; - y += inset; - w -= 2 * inset; - h -= 2 * inset; - - if (w > 0 && h > 0) - { - canvas.ellipse(x, y, w, h); - } - - return true; - } - else - { - canvas.fillAndStroke(); - - if (outerStroke) - { - canvas.ellipse(x, y, w, h); - canvas.stroke(); - } - } - } - }; - }; - - this.shapes['endState'] = createStateShape(true); - this.shapes['startState'] = createStateShape(false); - }; - - // Defines custom edge shape - function LinkShape() - { - mxArrow.call(this); - }; - mxUtils.extend(LinkShape, mxArrow); - LinkShape.prototype.paintEdgeShape = function(c, pts) - { - var width = 10; - - // Base vector (between end points) - var p0 = pts[0]; - var pe = pts[pts.length - 1]; - - var dx = pe.x - p0.x; - var dy = pe.y - p0.y; - var dist = Math.sqrt(dx * dx + dy * dy); - var length = dist; - - // Computes the norm and the inverse norm - var nx = dx / dist; - var ny = dy / dist; - var basex = length * nx; - var basey = length * ny; - var floorx = width * ny/3; - var floory = -width * nx/3; - - // Computes points - var p0x = p0.x - floorx / 2; - var p0y = p0.y - floory / 2; - var p1x = p0x + floorx; - var p1y = p0y + floory; - var p2x = p1x + basex; - var p2y = p1y + basey; - var p3x = p2x + floorx; - var p3y = p2y + floory; - // p4 not necessary - var p5x = p3x - 3 * floorx; - var p5y = p3y - 3 * floory; - - c.begin(); - c.moveTo(p1x, p1y); - c.lineTo(p2x, p2y); - c.moveTo(p5x + floorx, p5y + floory); - c.lineTo(p0x, p0y); - c.stroke(); - }; - - // Registers the link shape - mxCellRenderer.prototype.defaultShapes['link'] = LinkShape; - - // Registers and defines the custom marker - mxMarker.addMarker('dash', function(canvas, shape, type, pe, unitX, unitY, size, source, sw, filled) - { - var nx = unitX * (size + sw + 1); - var ny = unitY * (size + sw + 1); - - return function() - { - canvas.begin(); - canvas.moveTo(pe.x - nx / 2 - ny / 2, pe.y - ny / 2 + nx / 2); - canvas.lineTo(pe.x + ny / 2 - 3 * nx / 2, pe.y - 3 * ny / 2 - nx / 2); - canvas.stroke(); - }; - }); - - // Implements custom handlers - var SPECIAL_HANDLE_INDEX = -99; - - // Handlers are only added if mxVertexHandler is defined (ie. not in embedded graph) - if (typeof(mxVertexHandler) != 'undefined') - { - function mxExtVertexHandler(state) - { - mxVertexHandler.call(this, state); - }; - - mxUtils.extend(mxExtVertexHandler, mxVertexHandler); - - mxExtVertexHandler.prototype.useGridForSpecialHandle = false; - - mxExtVertexHandler.prototype.init = function() - { - this.horizontal = mxUtils.getValue(this.state.style, mxConstants.STYLE_HORIZONTAL, true); - var graph = this.state.view.graph; - - if (this.handleImage != null) - { - var bounds = new mxRectangle(0, 0, this.handleImage.width, this.handleImage.height); - this.specialHandle = new mxImageShape(bounds, this.handleImage.src); - } - else - { - var size = 10; - var bounds = new mxRectangle(0, 0, size, size); - this.specialHandle = new mxRhombus(bounds, mxConstants.HANDLE_FILLCOLOR, mxConstants.HANDLE_STROKECOLOR); - } - - this.specialHandle.dialect = (graph.dialect != mxConstants.DIALECT_SVG) ? - mxConstants.DIALECT_VML : mxConstants.DIALECT_SVG; - this.specialHandle.init(graph.getView().getOverlayPane()); - this.specialHandle.node.style.cursor = this.getSpecialHandleCursor(); - - mxEvent.redirectMouseEvents(this.specialHandle.node, graph, this.state); - mxVertexHandler.prototype.init.apply(this, arguments); - }; - - mxExtVertexHandler.prototype.getSpecialHandleCursor = function() - { - return 'default'; - }; - - mxExtVertexHandler.prototype.redraw = function() - { - mxVertexHandler.prototype.redraw.apply(this, arguments); - - var size = this.specialHandle.bounds.width; - this.specialHandle.bounds = this.getSpecialHandleBounds(size); - this.specialHandle.redraw(); - }; - - mxExtVertexHandler.prototype.destroy = function() - { - mxVertexHandler.prototype.destroy.apply(this, arguments); - - if (this.specialHandle != null) - { - this.specialHandle.destroy(); - this.specialHandle = null; - } - }; - - mxExtVertexHandler.prototype.getHandleForEvent = function(me) - { - if (me.isSource(this.specialHandle)) - { - return SPECIAL_HANDLE_INDEX; - } - - return mxVertexHandler.prototype.getHandleForEvent.apply(this, arguments); - }; - - mxExtVertexHandler.prototype.mouseMove = function(sender, me) - { - if (!me.isConsumed() && this.index == SPECIAL_HANDLE_INDEX) - { - var point = new mxPoint(me.getGraphX(), me.getGraphY()); - this.constrainPoint(point); - var gridEnabled = this.graph.isGridEnabledEvent(me.getEvent()); - var scale = this.graph.getView().scale; - - if (gridEnabled && this.useGridForSpecialHandle) - { - point.x = this.graph.snap(point.x / scale) * scale; - point.y = this.graph.snap(point.y / scale) * scale; - } - - this.updateStyle(point); - this.moveSizerTo(this.specialHandle, point.x, point.y); - this.state.view.graph.cellRenderer.redraw(this.state, true); - me.consume(); - } - else - { - mxVertexHandler.prototype.mouseMove.apply(this, arguments); - } - }; - - mxExtVertexHandler.prototype.mouseUp = function(sender, me) - { - if (!me.isConsumed() && this.index == SPECIAL_HANDLE_INDEX) - { - this.applyStyle(); - this.reset(); - me.consume(); - } - else - { - mxVertexHandler.prototype.mouseUp.apply(this, arguments); - } - }; - - mxExtVertexHandler.prototype.getSpecialHandleBounds = function(size) - { - var rotation = this.state.shape.getShapeRotation(); - var alpha = mxUtils.toRadians(rotation); - var cos = Math.cos(alpha); - var sin = Math.sin(alpha); - - var bounds = new mxRectangle(this.state.x, this.state.y, this.state.width, this.state.height); - - if (this.state.shape.isPaintBoundsInverted()) - { - var t = (bounds.width - bounds.height) / 2; - bounds.x += t; - bounds.y -= t; - var tmp = bounds.width; - bounds.width = bounds.height; - bounds.height = tmp; - } - - var pt = this.getSpecialHandlePoint(bounds); - - if (this.state.shape.flipH) - { - pt.x = 2 * bounds.x + bounds.width - pt.x; - } - - if (this.state.shape.flipV) - { - pt.y = 2 * bounds.y + bounds.height - pt.y; - } - - pt = mxUtils.getRotatedPoint(pt, cos, sin, - new mxPoint(this.state.getCenterX(), this.state.getCenterY())); - - return new mxRectangle(pt.x - size / 2, pt.y - size / 2, size, size); - }; - - mxExtVertexHandler.prototype.getSpecialHandlePoint = function(bounds) - { - // Hook for subclassers - return null; - }; - - mxExtVertexHandler.prototype.updateStyle = function(point) - { - // Hook for subclassers - }; - - mxExtVertexHandler.prototype.constrainPoint = function(point) - { - point.x = Math.max(this.state.x, Math.min(this.state.x + this.state.width, point.x)); - point.y = Math.max(this.state.y, Math.min(this.state.y + this.state.height, point.y)); - }; - - mxExtVertexHandler.prototype.applyStyle = function() - { - // Hook for subclassers - }; - - // Folder Handler - function mxFolderHandler(state) - { - mxExtVertexHandler.call(this, state); - }; - - mxUtils.extend(mxFolderHandler, mxExtVertexHandler); - - mxFolderHandler.prototype.getSpecialHandlePoint = function(bounds) - { - var scale = this.graph.getView().scale; - var tw = Math.min(bounds.width, mxUtils.getValue(this.state.style, 'tabWidth', 60) * scale); - var th = Math.min(bounds.height, mxUtils.getValue(this.state.style, 'tabHeight', 20) * scale); - - var tp = mxUtils.getValue(this.state.style, 'tabPosition', 'right'); - var x = (tp == 'left') ? bounds.x + tw : bounds.x + bounds.width - tw; - - return new mxPoint(x, bounds.y + th); - }; - - mxFolderHandler.prototype.updateStyle = function(point) - { - var rotation = this.state.shape.getShapeRotation(); - var alpha = mxUtils.toRadians(rotation); - var cos = Math.cos(-alpha); - var sin = Math.sin(-alpha); - - var bounds = new mxRectangle(this.state.x, this.state.y, this.state.width, this.state.height); - - if (this.state.shape.isPaintBoundsInverted()) - { - var t = (bounds.width - bounds.height) / 2; - bounds.x += t; - bounds.y -= t; - var tmp = bounds.width; - bounds.width = bounds.height; - bounds.height = tmp; - } - - var pt = new mxPoint(point.x, point.y); - pt = mxUtils.getRotatedPoint(pt, cos, sin, - new mxPoint(this.state.getCenterX(), this.state.getCenterY())); - - if (this.state.shape.flipH) - { - pt.x = 2 * bounds.x + bounds.width - pt.x; - } - - if (this.state.shape.flipV) - { - pt.y = 2 * bounds.y + bounds.height - pt.y; - } - - var result = this.updateStyleUnrotated(pt, bounds); - - // Modifies point to use rotated coordinates of return value - if (result != null) - { - if (this.state.shape.flipH) - { - result.x = 2 * bounds.x + bounds.width - result.x; - } - - if (this.state.shape.flipV) - { - result.y = 2 * bounds.y + bounds.height - result.y; - } - - cos = Math.cos(alpha); - sin = Math.sin(alpha); - result = mxUtils.getRotatedPoint(result, cos, sin, - new mxPoint(this.state.getCenterX(), this.state.getCenterY())); - point.x = result.x; - point.y = result.y; - } - }; - - mxFolderHandler.prototype.updateStyleUnrotated = function(pt, bounds) - { - var tp = mxUtils.getValue(this.state.style, 'tabPosition', 'right'); - var tw = (tp == 'left') ? pt.x - bounds.x : bounds.x + bounds.width - pt.x; - var th = pt.y - bounds.y; - - var scale = this.graph.getView().scale; - this.state.style['tabWidth'] = Math.round(Math.max(1, tw) / scale); - this.state.style['tabHeight'] = Math.round(Math.max(1, th) / scale); - }; - - mxFolderHandler.prototype.applyStyle = function() - { - var model = this.graph.getModel(); - model.beginUpdate(); - try - { - this.state.view.graph.setCellStyles('tabWidth', this.state.style['tabWidth'], [this.state.cell]); - this.state.view.graph.setCellStyles('tabHeight', this.state.style['tabHeight'], [this.state.cell]); - } - finally - { - model.endUpdate(); - } - }; - - // Swimlane Handler - function mxSwimlaneHandler(state) - { - mxFolderHandler.call(this, state); - }; - - mxUtils.extend(mxSwimlaneHandler, mxFolderHandler); - - mxSwimlaneHandler.prototype.getSpecialHandlePoint = function(bounds) - { - var scale = this.graph.getView().scale; - var startSize = mxUtils.getValue(this.state.style, mxConstants.STYLE_STARTSIZE, mxConstants.DEFAULT_STARTSIZE); - - return new mxPoint(bounds.x + bounds.width / 2, bounds.y + Math.min(bounds.height, startSize * scale)); - }; - - mxSwimlaneHandler.prototype.updateStyleUnrotated = function(point, bounds) - { - point.x = bounds.x + bounds.width / 2; - startSize = point.y - bounds.y; - var scale = this.graph.getView().scale; - this.state.style['startSize'] = Math.round(Math.max(1, startSize) / scale); - - return point; - }; - - mxSwimlaneHandler.prototype.applyStyle = function() - { - this.state.view.graph.setCellStyles('startSize', this.state.style['startSize'], [this.state.cell]); - }; - - // Cube Handler - function mxCubeHandler(state) - { - mxFolderHandler.call(this, state); - }; - - mxUtils.extend(mxCubeHandler, mxFolderHandler); - - mxCubeHandler.prototype.defaultValue = 20; - - mxCubeHandler.prototype.scaleFactor = 1; - - mxCubeHandler.prototype.getSpecialHandlePoint = function(bounds) - { - var scale = this.graph.getView().scale; - var sz = Math.min(bounds.width, Math.min(bounds.height, - mxUtils.getValue(this.state.style, 'size', this.defaultValue) * scale / this.scaleFactor)); - - return new mxPoint(bounds.x + sz, bounds.y + sz); - }; - - mxCubeHandler.prototype.updateStyleUnrotated = function(pt, bounds) - { - var size = Math.max(0, Math.min(Math.min(bounds.width / this.scaleFactor, pt.x - bounds.x), - Math.min(bounds.height / this.scaleFactor, pt.y - bounds.y))); - var scale = this.graph.getView().scale; - this.state.style['size'] = Math.round(Math.max(1, size) / scale) * this.scaleFactor; - - // Stays on the diagonal - return new mxPoint(bounds.x + size, bounds.y + size); - }; - - mxCubeHandler.prototype.applyStyle = function() - { - this.state.view.graph.setCellStyles('size', this.state.style['size'], [this.state.cell]); - }; - - // Card Handler - function mxCardHandler(state) - { - mxCubeHandler.call(this, state); - }; - - mxUtils.extend(mxCardHandler, mxCubeHandler); - - mxCardHandler.prototype.defaultValue = 30; - - mxCardHandler.prototype.scaleFactor = 2; - - // Note Handler - function mxNoteHandler(state) - { - mxCubeHandler.call(this, state); - }; - - mxUtils.extend(mxNoteHandler, mxCubeHandler); - - mxNoteHandler.prototype.defaultValue = 30; - - mxNoteHandler.prototype.scaleFactor = 1; - - mxNoteHandler.prototype.getSpecialHandlePoint = function(bounds) - { - var scale = this.graph.getView().scale; - var sz = Math.min(bounds.width, Math.min(bounds.height, - mxUtils.getValue(this.state.style, 'size', this.defaultValue) * scale / this.scaleFactor)); - - return new mxPoint(bounds.x + bounds.width - sz, bounds.y + sz); - }; - - mxNoteHandler.prototype.updateStyleUnrotated = function(pt, bounds) - { - var size = Math.max(0, Math.min(Math.min(bounds.width / this.scaleFactor, pt.x - bounds.x + bounds.width), - Math.min(bounds.height / this.scaleFactor, pt.y - bounds.y))); - var scale = this.graph.getView().scale; - this.state.style['size'] = Math.round(Math.max(1, size) / scale) * this.scaleFactor; - - // Stays on the diagonal - return new mxPoint(bounds.x + bounds.width - size, bounds.y + size); - }; - - // Step Handler - function mxStepHandler(state) - { - mxCubeHandler.call(this, state); - }; - - mxUtils.extend(mxStepHandler, mxCubeHandler); - - mxStepHandler.prototype.defaultValue = 0.2; - - mxStepHandler.prototype.scaleFactor = 1; - - mxStepHandler.prototype.getSpecialHandlePoint = function(bounds) - { - var sz = mxUtils.getValue(this.state.style, 'size', this.defaultValue); - - return new mxPoint(bounds.x + bounds.width * sz, bounds.y + bounds.height / 2); - }; - - mxStepHandler.prototype.updateStyleUnrotated = function(pt, bounds) - { - var size = Math.min(1, (pt.x - bounds.x) / bounds.width); - this.state.style['size'] = size; - - return new mxPoint(bounds.x + size * bounds.width, bounds.y + bounds.height / 2); - }; - - // Tape Handler - function mxTapeHandler(state) - { - mxCubeHandler.call(this, state); - }; - - mxUtils.extend(mxTapeHandler, mxCubeHandler); - - mxTapeHandler.prototype.defaultValue = 0.4; - - mxTapeHandler.prototype.scaleFactor = 1; - - mxTapeHandler.prototype.getSpecialHandlePoint = function(bounds) - { - var sz = mxUtils.getValue(this.state.style, 'size', this.defaultValue); - - return new mxPoint(bounds.x + bounds.width / 2, bounds.y + sz * bounds.height / 2); - }; - - mxTapeHandler.prototype.updateStyleUnrotated = function(pt, bounds) - { - var size = Math.max(0, Math.min(1, ((pt.y - bounds.y) / bounds.height) * 2)); - this.state.style['size'] = size; - - return new mxPoint(bounds.x + bounds.width / 2, bounds.y + size * bounds.height / 2); - }; - - var handlers = {'swimlane': mxSwimlaneHandler, 'folder': mxFolderHandler, 'cube': mxCubeHandler, - 'card': mxCardHandler, 'note': mxNoteHandler, 'step': mxStepHandler, 'tape': mxTapeHandler}; - - var mxGraphCreateHandler = mxGraph.prototype.createHandler; - mxGraph.prototype.createHandler = function(state) - { - if (state != null) - { - var ctor = handlers[state.style['shape']]; - - if (ctor != null) - { - return new ctor(state); - } - } - - return mxGraphCreateHandler.apply(this, arguments); - }; - } - - // Constraints - mxGraph.prototype.getAllConnectionConstraints = function(terminal, source) - { - if (terminal != null && terminal.shape != null) - { - if (terminal.shape.stencil != null) - { - if (terminal.shape.stencil != null) - { - return terminal.shape.stencil.constraints; - } - } - else if (terminal.shape.constraints != null) - { - return terminal.shape.constraints; - } - } - - return null; - }; - - mxRectangleShape.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.25, 0), true), - new mxConnectionConstraint(new mxPoint(0.5, 0), true), - new mxConnectionConstraint(new mxPoint(0.75, 0), true), - new mxConnectionConstraint(new mxPoint(0, 0.25), true), - new mxConnectionConstraint(new mxPoint(0, 0.5), true), - new mxConnectionConstraint(new mxPoint(0, 0.75), true), - new mxConnectionConstraint(new mxPoint(1, 0.25), true), - new mxConnectionConstraint(new mxPoint(1, 0.5), true), - new mxConnectionConstraint(new mxPoint(1, 0.75), true), - new mxConnectionConstraint(new mxPoint(0.25, 1), true), - new mxConnectionConstraint(new mxPoint(0.5, 1), true), - new mxConnectionConstraint(new mxPoint(0.75, 1), true)]; - mxLabel.prototype.constraints = mxRectangleShape.prototype.constraints; - mxImageShape.prototype.constraints = mxRectangleShape.prototype.constraints; - mxSwimlane.prototype.constraints = mxRectangleShape.prototype.constraints; - PlusShape.prototype.constraints = mxRectangleShape.prototype.constraints; - NoteShape.prototype.constraints = mxRectangleShape.prototype.constraints; - CardShape.prototype.constraints = mxRectangleShape.prototype.constraints; - CubeShape.prototype.constraints = mxRectangleShape.prototype.constraints; - FolderShape.prototype.constraints = mxRectangleShape.prototype.constraints; - mxCylinder.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.15, 0.05), false), - new mxConnectionConstraint(new mxPoint(0.5, 0), true), - new mxConnectionConstraint(new mxPoint(0.85, 0.05), false), - new mxConnectionConstraint(new mxPoint(0, 0.3), true), - new mxConnectionConstraint(new mxPoint(0, 0.5), true), - new mxConnectionConstraint(new mxPoint(0, 0.7), true), - new mxConnectionConstraint(new mxPoint(1, 0.3), true), - new mxConnectionConstraint(new mxPoint(1, 0.5), true), - new mxConnectionConstraint(new mxPoint(1, 0.7), true), - new mxConnectionConstraint(new mxPoint(0.15, 0.95), false), - new mxConnectionConstraint(new mxPoint(0.5, 1), true), - new mxConnectionConstraint(new mxPoint(0.85, 0.95), false)]; - UmlActorShape.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.25, 0.1), false), - new mxConnectionConstraint(new mxPoint(0.5, 0), false), - new mxConnectionConstraint(new mxPoint(0.75, 0.1), false), - new mxConnectionConstraint(new mxPoint(0, 1/3), false), - new mxConnectionConstraint(new mxPoint(0, 1), false), - new mxConnectionConstraint(new mxPoint(1, 1/3), false), - new mxConnectionConstraint(new mxPoint(1, 1), false), - new mxConnectionConstraint(new mxPoint(0.5, 0.5), false)]; - ComponentShape.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.25, 0), true), - new mxConnectionConstraint(new mxPoint(0.5, 0), true), - new mxConnectionConstraint(new mxPoint(0.75, 0), true), - new mxConnectionConstraint(new mxPoint(0, 0.3), true), - new mxConnectionConstraint(new mxPoint(0, 0.7), true), - new mxConnectionConstraint(new mxPoint(1, 0.25), true), - new mxConnectionConstraint(new mxPoint(1, 0.5), true), - new mxConnectionConstraint(new mxPoint(1, 0.75), true), - new mxConnectionConstraint(new mxPoint(0.25, 1), true), - new mxConnectionConstraint(new mxPoint(0.5, 1), true), - new mxConnectionConstraint(new mxPoint(0.75, 1), true)]; - mxActor.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.5, 0), true), - new mxConnectionConstraint(new mxPoint(0.25, 0.2), false), - new mxConnectionConstraint(new mxPoint(0.1, 0.5), false), - new mxConnectionConstraint(new mxPoint(0, 0.75), true), - new mxConnectionConstraint(new mxPoint(0.75, 0.25), false), - new mxConnectionConstraint(new mxPoint(0.9, 0.5), false), - new mxConnectionConstraint(new mxPoint(1, 0.75), true), - new mxConnectionConstraint(new mxPoint(0.25, 1), true), - new mxConnectionConstraint(new mxPoint(0.5, 1), true), - new mxConnectionConstraint(new mxPoint(0.75, 1), true)]; - TapeShape.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0, 0.35), false), - new mxConnectionConstraint(new mxPoint(0, 0.5), false), - new mxConnectionConstraint(new mxPoint(0, 0.65), false), - new mxConnectionConstraint(new mxPoint(1, 0.35), false), - new mxConnectionConstraint(new mxPoint(1, 0.5), false), - new mxConnectionConstraint(new mxPoint(1, 0.65), false), - new mxConnectionConstraint(new mxPoint(0.25, 1), false), - new mxConnectionConstraint(new mxPoint(0.75, 0), false)]; - // TODO: Relative ports - StepShape.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.25, 0), true), - new mxConnectionConstraint(new mxPoint(0.5, 0), true), - new mxConnectionConstraint(new mxPoint(0.75, 0), true), - new mxConnectionConstraint(new mxPoint(0.25, 1), true), - new mxConnectionConstraint(new mxPoint(0.5, 1), true), - new mxConnectionConstraint(new mxPoint(0.75, 1), true), - new mxConnectionConstraint(new mxPoint(0.1, 0.25), false), - new mxConnectionConstraint(new mxPoint(0.2, 0.5), false), - new mxConnectionConstraint(new mxPoint(0.1, 0.75), false), - new mxConnectionConstraint(new mxPoint(0.9, 0.25), false), - new mxConnectionConstraint(new mxPoint(1, 0.5), false), - new mxConnectionConstraint(new mxPoint(0.9, 0.75), false)]; - mxLine.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0, 0.5), false), - new mxConnectionConstraint(new mxPoint(0.25, 0.5), false), - new mxConnectionConstraint(new mxPoint(0.75, 0.5), false), - new mxConnectionConstraint(new mxPoint(1, 0.5), false)]; - LollipopShape.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.5, 0), false), - new mxConnectionConstraint(new mxPoint(0.5, 1), false)]; - mxEllipse.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0, 0), true), new mxConnectionConstraint(new mxPoint(1, 0), true), - new mxConnectionConstraint(new mxPoint(0, 1), true), new mxConnectionConstraint(new mxPoint(1, 1), true), - new mxConnectionConstraint(new mxPoint(0.5, 0), true), new mxConnectionConstraint(new mxPoint(0.5, 1), true), - new mxConnectionConstraint(new mxPoint(0, 0.5), true), new mxConnectionConstraint(new mxPoint(1, 0.5))]; - mxDoubleEllipse.prototype.constraints = mxEllipse.prototype.constraints; - mxRhombus.prototype.constraints = mxEllipse.prototype.constraints; - mxTriangle.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0, 0.25), true), - new mxConnectionConstraint(new mxPoint(0, 0.5), true), - new mxConnectionConstraint(new mxPoint(0, 0.75), true), - new mxConnectionConstraint(new mxPoint(0.5, 0), true), - new mxConnectionConstraint(new mxPoint(0.5, 1), true), - new mxConnectionConstraint(new mxPoint(1, 0.5), true)]; - mxHexagon.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.375, 0), true), - new mxConnectionConstraint(new mxPoint(0.5, 0), true), - new mxConnectionConstraint(new mxPoint(0.625, 0), true), - new mxConnectionConstraint(new mxPoint(0.125, 0.25), false), - new mxConnectionConstraint(new mxPoint(0, 0.5), true), - new mxConnectionConstraint(new mxPoint(0.125, 0.75), false), - new mxConnectionConstraint(new mxPoint(0.875, 0.25), false), - new mxConnectionConstraint(new mxPoint(0, 0.5), true), - new mxConnectionConstraint(new mxPoint(1, 0.5), true), - new mxConnectionConstraint(new mxPoint(0.875, 0.75), false), - new mxConnectionConstraint(new mxPoint(0.375, 1), true), - new mxConnectionConstraint(new mxPoint(0.5, 1), true), - new mxConnectionConstraint(new mxPoint(0.625, 1), true)]; - mxCloud.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.25, 0.25), false), - new mxConnectionConstraint(new mxPoint(0.4, 0.1), false), - new mxConnectionConstraint(new mxPoint(0.16, 0.55), false), - new mxConnectionConstraint(new mxPoint(0.07, 0.4), false), - new mxConnectionConstraint(new mxPoint(0.31, 0.8), false), - new mxConnectionConstraint(new mxPoint(0.13, 0.77), false), - new mxConnectionConstraint(new mxPoint(0.8, 0.8), false), - new mxConnectionConstraint(new mxPoint(0.55, 0.95), false), - new mxConnectionConstraint(new mxPoint(0.875, 0.5), false), - new mxConnectionConstraint(new mxPoint(0.96, 0.7), false), - new mxConnectionConstraint(new mxPoint(0.625, 0.2), false), - new mxConnectionConstraint(new mxPoint(0.88, 0.25), false)]; - mxArrow.prototype.constraints = null; -})(); +var _0x6df6=["\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x63\x6F\x6E\x73\x74\x72\x75\x63\x74\x6F\x72","\x73\x69\x7A\x65","\x72\x65\x64\x72\x61\x77\x50\x61\x74\x68","\x73\x74\x79\x6C\x65","\x67\x65\x74\x56\x61\x6C\x75\x65","\x6D\x69\x6E","\x6D\x6F\x76\x65\x54\x6F","\x6C\x69\x6E\x65\x54\x6F","\x65\x6E\x64","\x63\x6C\x6F\x73\x65","\x63\x75\x62\x65","\x64\x65\x66\x61\x75\x6C\x74\x53\x68\x61\x70\x65\x73","\x6E\x6F\x74\x65","\x74\x61\x62\x57\x69\x64\x74\x68","\x74\x61\x62\x48\x65\x69\x67\x68\x74","\x74\x61\x62\x50\x6F\x73\x69\x74\x69\x6F\x6E","\x72\x69\x67\x68\x74","\x6C\x65\x66\x74","\x66\x6F\x6C\x64\x65\x72","\x63\x61\x72\x64","\x71\x75\x61\x64\x54\x6F","\x74\x61\x70\x65","\x73\x74\x65\x70","\x63\x61\x6C\x6C","\x65\x78\x74\x65\x6E\x64","\x69\x73\x48\x74\x6D\x6C\x41\x6C\x6C\x6F\x77\x65\x64","\x70\x61\x69\x6E\x74\x46\x6F\x72\x65\x67\x72\x6F\x75\x6E\x64","\x62\x65\x67\x69\x6E","\x73\x74\x72\x6F\x6B\x65","\x61\x70\x70\x6C\x79","\x70\x6C\x75\x73","\x64\x6F\x75\x62\x6C\x65","\x73\x74\x72\x6F\x6B\x65\x77\x69\x64\x74\x68","\x6D\x61\x78","\x70\x61\x69\x6E\x74\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64","\x73\x65\x74\x44\x61\x73\x68\x65\x64","\x73\x79\x6D\x62\x6F\x6C","\x41\x6C\x69\x67\x6E","\x56\x65\x72\x74\x69\x63\x61\x6C\x41\x6C\x69\x67\x6E","\x57\x69\x64\x74\x68","\x48\x65\x69\x67\x68\x74","\x53\x70\x61\x63\x69\x6E\x67","\x41\x72\x63\x53\x70\x61\x63\x69\x6E\x67","\x67\x65\x74\x41\x72\x63\x53\x69\x7A\x65","\x41\x4C\x49\x47\x4E\x5F\x43\x45\x4E\x54\x45\x52","\x41\x4C\x49\x47\x4E\x5F\x52\x49\x47\x48\x54","\x41\x4C\x49\x47\x4E\x5F\x4D\x49\x44\x44\x4C\x45","\x41\x4C\x49\x47\x4E\x5F\x42\x4F\x54\x54\x4F\x4D","\x73\x61\x76\x65","\x70\x61\x69\x6E\x74\x56\x65\x72\x74\x65\x78\x53\x68\x61\x70\x65","\x72\x65\x73\x74\x6F\x72\x65","\x65\x78\x74","\x6D\x65\x73\x73\x61\x67\x65","\x61\x64\x64\x50\x69\x70\x65","\x63\x75\x72\x76\x65\x54\x6F","\x75\x6D\x6C\x41\x63\x74\x6F\x72","\x6C\x6F\x6C\x6C\x69\x70\x6F\x70","\x6A\x65\x74\x74\x79\x57\x69\x64\x74\x68","\x6A\x65\x74\x74\x79\x48\x65\x69\x67\x68\x74","\x63\x6F\x6D\x70\x6F\x6E\x65\x6E\x74","\x6F\x75\x74\x65\x72\x53\x74\x72\x6F\x6B\x65","\x65\x6C\x6C\x69\x70\x73\x65","\x66\x69\x6C\x6C\x41\x6E\x64\x53\x74\x72\x6F\x6B\x65","\x73\x65\x74\x53\x68\x61\x64\x6F\x77","\x65\x6E\x64\x53\x74\x61\x74\x65","\x73\x74\x61\x72\x74\x53\x74\x61\x74\x65","\x69\x6E\x69\x74\x53\x68\x61\x70\x65\x73","\x78","\x79","\x77\x69\x64\x74\x68","\x68\x65\x69\x67\x68\x74","\x73\x68\x61\x70\x65\x73","\x70\x61\x69\x6E\x74\x45\x64\x67\x65\x53\x68\x61\x70\x65","\x6C\x65\x6E\x67\x74\x68","\x73\x71\x72\x74","\x6C\x69\x6E\x6B","\x64\x61\x73\x68","\x61\x64\x64\x4D\x61\x72\x6B\x65\x72","\x75\x6E\x64\x65\x66\x69\x6E\x65\x64","\x75\x73\x65\x47\x72\x69\x64\x46\x6F\x72\x53\x70\x65\x63\x69\x61\x6C\x48\x61\x6E\x64\x6C\x65","\x69\x6E\x69\x74","\x68\x6F\x72\x69\x7A\x6F\x6E\x74\x61\x6C","\x73\x74\x61\x74\x65","\x67\x72\x61\x70\x68","\x76\x69\x65\x77","\x68\x61\x6E\x64\x6C\x65\x49\x6D\x61\x67\x65","\x73\x70\x65\x63\x69\x61\x6C\x48\x61\x6E\x64\x6C\x65","\x73\x72\x63","\x64\x69\x61\x6C\x65\x63\x74","\x44\x49\x41\x4C\x45\x43\x54\x5F\x53\x56\x47","\x44\x49\x41\x4C\x45\x43\x54\x5F\x56\x4D\x4C","\x67\x65\x74\x4F\x76\x65\x72\x6C\x61\x79\x50\x61\x6E\x65","\x67\x65\x74\x56\x69\x65\x77","\x63\x75\x72\x73\x6F\x72","\x6E\x6F\x64\x65","\x67\x65\x74\x53\x70\x65\x63\x69\x61\x6C\x48\x61\x6E\x64\x6C\x65\x43\x75\x72\x73\x6F\x72","\x72\x65\x64\x69\x72\x65\x63\x74\x4D\x6F\x75\x73\x65\x45\x76\x65\x6E\x74\x73","\x64\x65\x66\x61\x75\x6C\x74","\x72\x65\x64\x72\x61\x77","\x62\x6F\x75\x6E\x64\x73","\x67\x65\x74\x53\x70\x65\x63\x69\x61\x6C\x48\x61\x6E\x64\x6C\x65\x42\x6F\x75\x6E\x64\x73","\x64\x65\x73\x74\x72\x6F\x79","\x67\x65\x74\x48\x61\x6E\x64\x6C\x65\x46\x6F\x72\x45\x76\x65\x6E\x74","\x69\x73\x53\x6F\x75\x72\x63\x65","\x6D\x6F\x75\x73\x65\x4D\x6F\x76\x65","\x69\x73\x43\x6F\x6E\x73\x75\x6D\x65\x64","\x69\x6E\x64\x65\x78","\x67\x65\x74\x47\x72\x61\x70\x68\x58","\x67\x65\x74\x47\x72\x61\x70\x68\x59","\x63\x6F\x6E\x73\x74\x72\x61\x69\x6E\x50\x6F\x69\x6E\x74","\x67\x65\x74\x45\x76\x65\x6E\x74","\x69\x73\x47\x72\x69\x64\x45\x6E\x61\x62\x6C\x65\x64\x45\x76\x65\x6E\x74","\x73\x63\x61\x6C\x65","\x73\x6E\x61\x70","\x75\x70\x64\x61\x74\x65\x53\x74\x79\x6C\x65","\x6D\x6F\x76\x65\x53\x69\x7A\x65\x72\x54\x6F","\x63\x65\x6C\x6C\x52\x65\x6E\x64\x65\x72\x65\x72","\x63\x6F\x6E\x73\x75\x6D\x65","\x6D\x6F\x75\x73\x65\x55\x70","\x61\x70\x70\x6C\x79\x53\x74\x79\x6C\x65","\x72\x65\x73\x65\x74","\x67\x65\x74\x53\x68\x61\x70\x65\x52\x6F\x74\x61\x74\x69\x6F\x6E","\x73\x68\x61\x70\x65","\x74\x6F\x52\x61\x64\x69\x61\x6E\x73","\x63\x6F\x73","\x73\x69\x6E","\x69\x73\x50\x61\x69\x6E\x74\x42\x6F\x75\x6E\x64\x73\x49\x6E\x76\x65\x72\x74\x65\x64","\x67\x65\x74\x53\x70\x65\x63\x69\x61\x6C\x48\x61\x6E\x64\x6C\x65\x50\x6F\x69\x6E\x74","\x66\x6C\x69\x70\x48","\x66\x6C\x69\x70\x56","\x67\x65\x74\x43\x65\x6E\x74\x65\x72\x58","\x67\x65\x74\x43\x65\x6E\x74\x65\x72\x59","\x67\x65\x74\x52\x6F\x74\x61\x74\x65\x64\x50\x6F\x69\x6E\x74","\x75\x70\x64\x61\x74\x65\x53\x74\x79\x6C\x65\x55\x6E\x72\x6F\x74\x61\x74\x65\x64","\x72\x6F\x75\x6E\x64","\x67\x65\x74\x4D\x6F\x64\x65\x6C","\x62\x65\x67\x69\x6E\x55\x70\x64\x61\x74\x65","\x63\x65\x6C\x6C","\x73\x65\x74\x43\x65\x6C\x6C\x53\x74\x79\x6C\x65\x73","\x65\x6E\x64\x55\x70\x64\x61\x74\x65","\x73\x74\x61\x72\x74\x53\x69\x7A\x65","\x64\x65\x66\x61\x75\x6C\x74\x56\x61\x6C\x75\x65","\x73\x63\x61\x6C\x65\x46\x61\x63\x74\x6F\x72","\x63\x72\x65\x61\x74\x65\x48\x61\x6E\x64\x6C\x65\x72","\x67\x65\x74\x41\x6C\x6C\x43\x6F\x6E\x6E\x65\x63\x74\x69\x6F\x6E\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74\x73","\x73\x74\x65\x6E\x63\x69\x6C","\x63\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74\x73"];(function(){function _0xd7dex1(){}_0xd7dex1[_0x6df6[0]]= new mxCylinder();_0xd7dex1[_0x6df6[0]][_0x6df6[1]]= _0xd7dex1;_0xd7dex1[_0x6df6[0]][_0x6df6[2]]= 20;_0xd7dex1[_0x6df6[0]][_0x6df6[3]]= function(_0xd7dex2,_0xd7dex3,_0xd7dex4,_0xd7dex5,_0xd7dex6,_0xd7dex7){var _0xd7dex8=Math[_0x6df6[6]](_0xd7dex5,Math[_0x6df6[6]](_0xd7dex6,mxUtils[_0x6df6[5]](this[_0x6df6[4]],_0x6df6[2],this[_0x6df6[2]])));if(_0xd7dex7){_0xd7dex2[_0x6df6[7]](_0xd7dex8,_0xd7dex6);_0xd7dex2[_0x6df6[8]](_0xd7dex8,_0xd7dex8);_0xd7dex2[_0x6df6[8]](0,0);_0xd7dex2[_0x6df6[7]](_0xd7dex8,_0xd7dex8);_0xd7dex2[_0x6df6[8]](_0xd7dex5,_0xd7dex8);_0xd7dex2[_0x6df6[9]]()}else {_0xd7dex2[_0x6df6[7]](0,0);_0xd7dex2[_0x6df6[8]](_0xd7dex5- _0xd7dex8,0);_0xd7dex2[_0x6df6[8]](_0xd7dex5,_0xd7dex8);_0xd7dex2[_0x6df6[8]](_0xd7dex5,_0xd7dex6);_0xd7dex2[_0x6df6[8]](_0xd7dex8,_0xd7dex6);_0xd7dex2[_0x6df6[8]](0,_0xd7dex6- _0xd7dex8);_0xd7dex2[_0x6df6[8]](0,0);_0xd7dex2[_0x6df6[10]]();_0xd7dex2[_0x6df6[9]]()}};mxCellRenderer[_0x6df6[0]][_0x6df6[12]][_0x6df6[11]]= _0xd7dex1;function _0xd7dex9(){}_0xd7dex9[_0x6df6[0]]= new mxCylinder();_0xd7dex9[_0x6df6[0]][_0x6df6[1]]= _0xd7dex9;_0xd7dex9[_0x6df6[0]][_0x6df6[2]]= 30;_0xd7dex9[_0x6df6[0]][_0x6df6[3]]= function(_0xd7dex2,_0xd7dex3,_0xd7dex4,_0xd7dex5,_0xd7dex6,_0xd7dex7){var _0xd7dex8=Math[_0x6df6[6]](_0xd7dex5,Math[_0x6df6[6]](_0xd7dex6,mxUtils[_0x6df6[5]](this[_0x6df6[4]],_0x6df6[2],this[_0x6df6[2]])));if(_0xd7dex7){_0xd7dex2[_0x6df6[7]](_0xd7dex5- _0xd7dex8,0);_0xd7dex2[_0x6df6[8]](_0xd7dex5- _0xd7dex8,_0xd7dex8);_0xd7dex2[_0x6df6[8]](_0xd7dex5,_0xd7dex8);_0xd7dex2[_0x6df6[9]]()}else {_0xd7dex2[_0x6df6[7]](0,0);_0xd7dex2[_0x6df6[8]](_0xd7dex5- _0xd7dex8,0);_0xd7dex2[_0x6df6[8]](_0xd7dex5,_0xd7dex8);_0xd7dex2[_0x6df6[8]](_0xd7dex5,_0xd7dex6);_0xd7dex2[_0x6df6[8]](0,_0xd7dex6);_0xd7dex2[_0x6df6[8]](0,0);_0xd7dex2[_0x6df6[10]]();_0xd7dex2[_0x6df6[9]]()}};mxCellRenderer[_0x6df6[0]][_0x6df6[12]][_0x6df6[13]]= _0xd7dex9;function _0xd7dexa(){}_0xd7dexa[_0x6df6[0]]= new mxCylinder();_0xd7dexa[_0x6df6[0]][_0x6df6[1]]= _0xd7dexa;_0xd7dexa[_0x6df6[0]][_0x6df6[14]]= 60;_0xd7dexa[_0x6df6[0]][_0x6df6[15]]= 20;_0xd7dexa[_0x6df6[0]][_0x6df6[16]]= _0x6df6[17];_0xd7dexa[_0x6df6[0]][_0x6df6[3]]= function(_0xd7dex2,_0xd7dex3,_0xd7dex4,_0xd7dex5,_0xd7dex6,_0xd7dex7){var _0xd7dexb=mxUtils[_0x6df6[5]](this[_0x6df6[4]],_0x6df6[14],this[_0x6df6[14]]);var _0xd7dexc=mxUtils[_0x6df6[5]](this[_0x6df6[4]],_0x6df6[15],this[_0x6df6[15]]);var _0xd7dexd=mxUtils[_0x6df6[5]](this[_0x6df6[4]],_0x6df6[16],this[_0x6df6[16]]);var _0xd7dexe=Math[_0x6df6[6]](_0xd7dex5,_0xd7dexb);var _0xd7dexf=Math[_0x6df6[6]](_0xd7dex6,_0xd7dexc);if(_0xd7dex7){if(_0xd7dexd== _0x6df6[18]){_0xd7dex2[_0x6df6[7]](0,_0xd7dexf);_0xd7dex2[_0x6df6[8]](_0xd7dexe,_0xd7dexf)}else {_0xd7dex2[_0x6df6[7]](_0xd7dex5- _0xd7dexe,_0xd7dexf);_0xd7dex2[_0x6df6[8]](_0xd7dex5,_0xd7dexf)};_0xd7dex2[_0x6df6[9]]()}else {if(_0xd7dexd== _0x6df6[18]){_0xd7dex2[_0x6df6[7]](0,0);_0xd7dex2[_0x6df6[8]](_0xd7dexe,0);_0xd7dex2[_0x6df6[8]](_0xd7dexe,_0xd7dexf);_0xd7dex2[_0x6df6[8]](_0xd7dex5,_0xd7dexf)}else {_0xd7dex2[_0x6df6[7]](0,_0xd7dexf);_0xd7dex2[_0x6df6[8]](_0xd7dex5- _0xd7dexe,_0xd7dexf);_0xd7dex2[_0x6df6[8]](_0xd7dex5- _0xd7dexe,0);_0xd7dex2[_0x6df6[8]](_0xd7dex5,0)};_0xd7dex2[_0x6df6[8]](_0xd7dex5,_0xd7dex6);_0xd7dex2[_0x6df6[8]](0,_0xd7dex6);_0xd7dex2[_0x6df6[8]](0,_0xd7dexf);_0xd7dex2[_0x6df6[10]]();_0xd7dex2[_0x6df6[9]]()}};mxCellRenderer[_0x6df6[0]][_0x6df6[12]][_0x6df6[19]]= _0xd7dexa;function _0xd7dex10(){}_0xd7dex10[_0x6df6[0]]= new mxCylinder();_0xd7dex10[_0x6df6[0]][_0x6df6[1]]= _0xd7dex10;_0xd7dex10[_0x6df6[0]][_0x6df6[2]]= 30;_0xd7dex10[_0x6df6[0]][_0x6df6[3]]= function(_0xd7dex2,_0xd7dex3,_0xd7dex4,_0xd7dex5,_0xd7dex6,_0xd7dex7){var _0xd7dex8=Math[_0x6df6[6]](_0xd7dex5,Math[_0x6df6[6]](_0xd7dex6,mxUtils[_0x6df6[5]](this[_0x6df6[4]],_0x6df6[2],this[_0x6df6[2]])));if(!_0xd7dex7){_0xd7dex2[_0x6df6[7]](_0xd7dex8,0);_0xd7dex2[_0x6df6[8]](_0xd7dex5,0);_0xd7dex2[_0x6df6[8]](_0xd7dex5,_0xd7dex6);_0xd7dex2[_0x6df6[8]](0,_0xd7dex6);_0xd7dex2[_0x6df6[8]](0,_0xd7dex8);_0xd7dex2[_0x6df6[8]](_0xd7dex8,0);_0xd7dex2[_0x6df6[10]]();_0xd7dex2[_0x6df6[9]]()}};mxCellRenderer[_0x6df6[0]][_0x6df6[12]][_0x6df6[20]]= _0xd7dex10;function _0xd7dex11(){}_0xd7dex11[_0x6df6[0]]= new mxCylinder();_0xd7dex11[_0x6df6[0]][_0x6df6[1]]= _0xd7dex11;_0xd7dex11[_0x6df6[0]][_0x6df6[2]]= 0.4;_0xd7dex11[_0x6df6[0]][_0x6df6[3]]= function(_0xd7dex2,_0xd7dex3,_0xd7dex4,_0xd7dex5,_0xd7dex6,_0xd7dex7){var _0xd7dex8=mxUtils[_0x6df6[5]](this[_0x6df6[4]],_0x6df6[2],this[_0x6df6[2]]);var _0xd7dexf=_0xd7dex6* _0xd7dex8;var _0xd7dex12=1.4;if(!_0xd7dex7){_0xd7dex2[_0x6df6[7]](0,_0xd7dexf/ 2);_0xd7dex2[_0x6df6[21]](_0xd7dex5/ 4,_0xd7dexf* _0xd7dex12,_0xd7dex5/ 2,_0xd7dexf/ 2);_0xd7dex2[_0x6df6[21]](_0xd7dex5* 3/ 4,_0xd7dexf* (1- _0xd7dex12),_0xd7dex5,_0xd7dexf/ 2);_0xd7dex2[_0x6df6[8]](_0xd7dex5,_0xd7dex6- _0xd7dexf/ 2);_0xd7dex2[_0x6df6[21]](_0xd7dex5* 3/ 4,_0xd7dex6- _0xd7dexf* _0xd7dex12,_0xd7dex5/ 2,_0xd7dex6- _0xd7dexf/ 2);_0xd7dex2[_0x6df6[21]](_0xd7dex5/ 4,_0xd7dex6- _0xd7dexf* (1- _0xd7dex12),0,_0xd7dex6- _0xd7dexf/ 2);_0xd7dex2[_0x6df6[8]](0,_0xd7dexf/ 2);_0xd7dex2[_0x6df6[10]]();_0xd7dex2[_0x6df6[9]]()}};mxCellRenderer[_0x6df6[0]][_0x6df6[12]][_0x6df6[22]]= _0xd7dex11;function _0xd7dex13(){}_0xd7dex13[_0x6df6[0]]= new mxCylinder();_0xd7dex13[_0x6df6[0]][_0x6df6[1]]= _0xd7dex13;_0xd7dex13[_0x6df6[0]][_0x6df6[2]]= 0.2;_0xd7dex13[_0x6df6[0]][_0x6df6[3]]= function(_0xd7dex2,_0xd7dex3,_0xd7dex4,_0xd7dex5,_0xd7dex6,_0xd7dex7){var _0xd7dex8=_0xd7dex5* mxUtils[_0x6df6[5]](this[_0x6df6[4]],_0x6df6[2],this[_0x6df6[2]]);if(!_0xd7dex7){_0xd7dex2[_0x6df6[7]](0,0);_0xd7dex2[_0x6df6[8]](_0xd7dex5- _0xd7dex8,0);_0xd7dex2[_0x6df6[8]](_0xd7dex5,_0xd7dex6/ 2);_0xd7dex2[_0x6df6[8]](_0xd7dex5- _0xd7dex8,_0xd7dex6);_0xd7dex2[_0x6df6[8]](0,_0xd7dex6);_0xd7dex2[_0x6df6[8]](_0xd7dex8,_0xd7dex6/ 2);_0xd7dex2[_0x6df6[10]]();_0xd7dex2[_0x6df6[9]]()}};mxCellRenderer[_0x6df6[0]][_0x6df6[12]][_0x6df6[23]]= _0xd7dex13;function _0xd7dex14(){mxRectangleShape[_0x6df6[24]](this)}mxUtils[_0x6df6[25]](_0xd7dex14,mxRectangleShape);_0xd7dex14[_0x6df6[0]][_0x6df6[26]]= function(){return false};_0xd7dex14[_0x6df6[0]][_0x6df6[27]]= function(_0xd7dex15,_0xd7dex3,_0xd7dex4,_0xd7dex5,_0xd7dex6){var _0xd7dex16=Math[_0x6df6[6]](_0xd7dex5/ 5,_0xd7dex6/ 5)+ 1;_0xd7dex15[_0x6df6[28]]();_0xd7dex15[_0x6df6[7]](_0xd7dex3+ _0xd7dex5/ 2,_0xd7dex4+ _0xd7dex16);_0xd7dex15[_0x6df6[8]](_0xd7dex3+ _0xd7dex5/ 2,_0xd7dex4+ _0xd7dex6- _0xd7dex16);_0xd7dex15[_0x6df6[7]](_0xd7dex3+ _0xd7dex16,_0xd7dex4+ _0xd7dex6/ 2);_0xd7dex15[_0x6df6[8]](_0xd7dex3+ _0xd7dex5- _0xd7dex16,_0xd7dex4+ _0xd7dex6/ 2);_0xd7dex15[_0x6df6[9]]();_0xd7dex15[_0x6df6[29]]();mxRectangleShape[_0x6df6[0]][_0x6df6[27]][_0x6df6[30]](this,arguments)};mxCellRenderer[_0x6df6[0]][_0x6df6[12]][_0x6df6[31]]= _0xd7dex14;function _0xd7dex17(){mxRectangleShape[_0x6df6[24]](this)}mxUtils[_0x6df6[25]](_0xd7dex17,mxRectangleShape);_0xd7dex17[_0x6df6[0]][_0x6df6[26]]= function(){return false};_0xd7dex17[_0x6df6[0]][_0x6df6[27]]= function(_0xd7dex15,_0xd7dex3,_0xd7dex4,_0xd7dex5,_0xd7dex6){if(this[_0x6df6[4]]!= null){if(this[_0x6df6[4]][_0x6df6[32]]== 1){var _0xd7dex18=Math[_0x6df6[34]](2,this[_0x6df6[33]]+ 1);mxRectangleShape[_0x6df6[0]][_0x6df6[35]][_0x6df6[24]](this,_0xd7dex15,_0xd7dex3+ _0xd7dex18,_0xd7dex4+ _0xd7dex18,_0xd7dex5- 2* _0xd7dex18,_0xd7dex6- 2* _0xd7dex18);mxRectangleShape[_0x6df6[0]][_0x6df6[27]][_0x6df6[30]](this,arguments);_0xd7dex3+= _0xd7dex18;_0xd7dex4+= _0xd7dex18;_0xd7dex5-= 2* _0xd7dex18;_0xd7dex6-= 2* _0xd7dex18};_0xd7dex15[_0x6df6[36]](false);var _0xd7dex19=0;var _0xd7dex1a=null;do{_0xd7dex1a= mxCellRenderer[_0x6df6[0]][_0x6df6[12]][this[_0x6df6[4]][_0x6df6[37]+ _0xd7dex19]];if(_0xd7dex1a!= null){var _0xd7dex1b=this[_0x6df6[4]][_0x6df6[37]+ _0xd7dex19+ _0x6df6[38]];var _0xd7dex1c=this[_0x6df6[4]][_0x6df6[37]+ _0xd7dex19+ _0x6df6[39]];var _0xd7dex1d=this[_0x6df6[4]][_0x6df6[37]+ _0xd7dex19+ _0x6df6[40]];var _0xd7dex1e=this[_0x6df6[4]][_0x6df6[37]+ _0xd7dex19+ _0x6df6[41]];var _0xd7dex1f=this[_0x6df6[4]][_0x6df6[37]+ _0xd7dex19+ _0x6df6[42]]|| 0;var _0xd7dex20=this[_0x6df6[4]][_0x6df6[37]+ _0xd7dex19+ _0x6df6[43]];if(_0xd7dex20!= null){_0xd7dex1f+= this[_0x6df6[44]](_0xd7dex5+ this[_0x6df6[33]],_0xd7dex6+ this[_0x6df6[33]])* _0xd7dex20};var _0xd7dex21=_0xd7dex3;var _0xd7dex22=_0xd7dex4;if(_0xd7dex1b== mxConstants[_0x6df6[45]]){_0xd7dex21+= (_0xd7dex5- _0xd7dex1d)/ 2}else {if(_0xd7dex1b== mxConstants[_0x6df6[46]]){_0xd7dex21+= _0xd7dex5- _0xd7dex1d- _0xd7dex1f}else {_0xd7dex21+= _0xd7dex1f}};if(_0xd7dex1c== mxConstants[_0x6df6[47]]){_0xd7dex22+= (_0xd7dex6- _0xd7dex1e)/ 2}else {if(_0xd7dex1c== mxConstants[_0x6df6[48]]){_0xd7dex22+= _0xd7dex6- _0xd7dex1e- _0xd7dex1f}else {_0xd7dex22+= _0xd7dex1f}};_0xd7dex15[_0x6df6[49]]();var _0xd7dex23= new _0xd7dex1a();_0xd7dex23[_0x6df6[4]]= this[_0x6df6[4]];_0xd7dex1a[_0x6df6[0]][_0x6df6[50]][_0x6df6[24]](_0xd7dex23,_0xd7dex15,_0xd7dex21,_0xd7dex22,_0xd7dex1d,_0xd7dex1e);_0xd7dex15[_0x6df6[51]]()};_0xd7dex19++}while(_0xd7dex1a!= null);}};mxCellRenderer[_0x6df6[0]][_0x6df6[12]][_0x6df6[52]]= _0xd7dex17;function _0xd7dex24(){}_0xd7dex24[_0x6df6[0]]= new mxCylinder();_0xd7dex24[_0x6df6[0]][_0x6df6[1]]= _0xd7dex24;_0xd7dex24[_0x6df6[0]][_0x6df6[3]]= function(_0xd7dex2,_0xd7dex3,_0xd7dex4,_0xd7dex5,_0xd7dex6,_0xd7dex7){if(_0xd7dex7){_0xd7dex2[_0x6df6[7]](0,0);_0xd7dex2[_0x6df6[8]](_0xd7dex5/ 2,_0xd7dex6/ 2);_0xd7dex2[_0x6df6[8]](_0xd7dex5,0);_0xd7dex2[_0x6df6[9]]()}else {_0xd7dex2[_0x6df6[7]](0,0);_0xd7dex2[_0x6df6[8]](_0xd7dex5,0);_0xd7dex2[_0x6df6[8]](_0xd7dex5,_0xd7dex6);_0xd7dex2[_0x6df6[8]](0,_0xd7dex6);_0xd7dex2[_0x6df6[10]]()}};mxCellRenderer[_0x6df6[0]][_0x6df6[12]][_0x6df6[53]]= _0xd7dex24;function _0xd7dex25(){}_0xd7dex25[_0x6df6[0]]= new mxCylinder();_0xd7dex25[_0x6df6[0]][_0x6df6[1]]= _0xd7dex25;_0xd7dex25[_0x6df6[0]][_0x6df6[54]]= true;_0xd7dex25[_0x6df6[0]][_0x6df6[3]]= function(_0xd7dex2,_0xd7dex3,_0xd7dex4,_0xd7dex5,_0xd7dex6,_0xd7dex7){var _0xd7dex1d=_0xd7dex5/ 3;var _0xd7dex1e=_0xd7dex6/ 4;if(!_0xd7dex7){_0xd7dex2[_0x6df6[7]](_0xd7dex5/ 2,_0xd7dex1e);_0xd7dex2[_0x6df6[55]](_0xd7dex5/ 2- _0xd7dex1d,_0xd7dex1e,_0xd7dex5/ 2- _0xd7dex1d,0,_0xd7dex5/ 2,0);_0xd7dex2[_0x6df6[55]](_0xd7dex5/ 2+ _0xd7dex1d,0,_0xd7dex5/ 2+ _0xd7dex1d,_0xd7dex1e,_0xd7dex5/ 2,_0xd7dex1e);_0xd7dex2[_0x6df6[10]]();_0xd7dex2[_0x6df6[7]](_0xd7dex5/ 2,_0xd7dex1e);_0xd7dex2[_0x6df6[8]](_0xd7dex5/ 2,2* _0xd7dex6/ 3);_0xd7dex2[_0x6df6[7]](_0xd7dex5/ 2,_0xd7dex6/ 3);_0xd7dex2[_0x6df6[8]](0,_0xd7dex6/ 3);_0xd7dex2[_0x6df6[7]](_0xd7dex5/ 2,_0xd7dex6/ 3);_0xd7dex2[_0x6df6[8]](_0xd7dex5,_0xd7dex6/ 3);_0xd7dex2[_0x6df6[7]](_0xd7dex5/ 2,2* _0xd7dex6/ 3);_0xd7dex2[_0x6df6[8]](0,_0xd7dex6);_0xd7dex2[_0x6df6[7]](_0xd7dex5/ 2,2* _0xd7dex6/ 3);_0xd7dex2[_0x6df6[8]](_0xd7dex5,_0xd7dex6);_0xd7dex2[_0x6df6[9]]()}};mxCellRenderer[_0x6df6[0]][_0x6df6[12]][_0x6df6[56]]= _0xd7dex25;function _0xd7dex26(){}_0xd7dex26[_0x6df6[0]]= new mxCylinder();_0xd7dex26[_0x6df6[0]][_0x6df6[1]]= _0xd7dex26;_0xd7dex26[_0x6df6[0]][_0x6df6[2]]= 10;_0xd7dex26[_0x6df6[0]][_0x6df6[54]]= true;_0xd7dex26[_0x6df6[0]][_0x6df6[3]]= function(_0xd7dex2,_0xd7dex3,_0xd7dex4,_0xd7dex5,_0xd7dex6,_0xd7dex7){var _0xd7dex27=mxUtils[_0x6df6[5]](this[_0x6df6[4]],_0x6df6[2],this[_0x6df6[2]]);var _0xd7dex1d=_0xd7dex27* 2/ 3;var _0xd7dex1e=_0xd7dex27;if(!_0xd7dex7){_0xd7dex2[_0x6df6[7]](_0xd7dex5/ 2,_0xd7dex1e);_0xd7dex2[_0x6df6[55]](_0xd7dex5/ 2- _0xd7dex1d,_0xd7dex1e,_0xd7dex5/ 2- _0xd7dex1d,0,_0xd7dex5/ 2,0);_0xd7dex2[_0x6df6[55]](_0xd7dex5/ 2+ _0xd7dex1d,0,_0xd7dex5/ 2+ _0xd7dex1d,_0xd7dex1e,_0xd7dex5/ 2,_0xd7dex1e);_0xd7dex2[_0x6df6[10]]();_0xd7dex2[_0x6df6[7]](_0xd7dex5/ 2,_0xd7dex1e);_0xd7dex2[_0x6df6[8]](_0xd7dex5/ 2,_0xd7dex6);_0xd7dex2[_0x6df6[9]]()}};mxCellRenderer[_0x6df6[0]][_0x6df6[12]][_0x6df6[57]]= _0xd7dex26;function _0xd7dex28(){}_0xd7dex28[_0x6df6[0]]= new mxCylinder();_0xd7dex28[_0x6df6[0]][_0x6df6[1]]= _0xd7dex28;_0xd7dex28[_0x6df6[0]][_0x6df6[58]]= 32;_0xd7dex28[_0x6df6[0]][_0x6df6[59]]= 12;_0xd7dex28[_0x6df6[0]][_0x6df6[3]]= function(_0xd7dex2,_0xd7dex3,_0xd7dex4,_0xd7dex5,_0xd7dex6,_0xd7dex7){var _0xd7dexe=mxUtils[_0x6df6[5]](this[_0x6df6[4]],_0x6df6[58],this[_0x6df6[58]]);var _0xd7dexf=mxUtils[_0x6df6[5]](this[_0x6df6[4]],_0x6df6[59],this[_0x6df6[59]]);var _0xd7dex29=_0xd7dexe/ 2;var _0xd7dex2a=_0xd7dex29+ _0xd7dexe/ 2;var _0xd7dex2b=0.3* _0xd7dex6- _0xd7dexf/ 2;var _0xd7dex2c=0.7* _0xd7dex6- _0xd7dexf/ 2;if(_0xd7dex7){_0xd7dex2[_0x6df6[7]](_0xd7dex29,_0xd7dex2b);_0xd7dex2[_0x6df6[8]](_0xd7dex2a,_0xd7dex2b);_0xd7dex2[_0x6df6[8]](_0xd7dex2a,_0xd7dex2b+ _0xd7dexf);_0xd7dex2[_0x6df6[8]](_0xd7dex29,_0xd7dex2b+ _0xd7dexf);_0xd7dex2[_0x6df6[7]](_0xd7dex29,_0xd7dex2c);_0xd7dex2[_0x6df6[8]](_0xd7dex2a,_0xd7dex2c);_0xd7dex2[_0x6df6[8]](_0xd7dex2a,_0xd7dex2c+ _0xd7dexf);_0xd7dex2[_0x6df6[8]](_0xd7dex29,_0xd7dex2c+ _0xd7dexf);_0xd7dex2[_0x6df6[9]]()}else {_0xd7dex2[_0x6df6[7]](_0xd7dex29,0);_0xd7dex2[_0x6df6[8]](_0xd7dex5,0);_0xd7dex2[_0x6df6[8]](_0xd7dex5,_0xd7dex6);_0xd7dex2[_0x6df6[8]](_0xd7dex29,_0xd7dex6);_0xd7dex2[_0x6df6[8]](_0xd7dex29,_0xd7dex2c+ _0xd7dexf);_0xd7dex2[_0x6df6[8]](0,_0xd7dex2c+ _0xd7dexf);_0xd7dex2[_0x6df6[8]](0,_0xd7dex2c);_0xd7dex2[_0x6df6[8]](_0xd7dex29,_0xd7dex2c);_0xd7dex2[_0x6df6[8]](_0xd7dex29,_0xd7dex2b+ _0xd7dexf);_0xd7dex2[_0x6df6[8]](0,_0xd7dex2b+ _0xd7dexf);_0xd7dex2[_0x6df6[8]](0,_0xd7dex2b);_0xd7dex2[_0x6df6[8]](_0xd7dex29,_0xd7dex2b);_0xd7dex2[_0x6df6[10]]();_0xd7dex2[_0x6df6[9]]()}};mxCellRenderer[_0x6df6[0]][_0x6df6[12]][_0x6df6[60]]= _0xd7dex28;function _0xd7dex2d(){}_0xd7dex2d[_0x6df6[0]]= new mxDoubleEllipse();_0xd7dex2d[_0x6df6[0]][_0x6df6[1]]= _0xd7dex2d;_0xd7dex2d[_0x6df6[0]][_0x6df6[61]]= true;_0xd7dex2d[_0x6df6[0]][_0x6df6[50]]= function(_0xd7dex15,_0xd7dex3,_0xd7dex4,_0xd7dex5,_0xd7dex6){var _0xd7dex18=Math[_0x6df6[6]](4,Math[_0x6df6[6]](_0xd7dex5/ 5,_0xd7dex6/ 5));if(_0xd7dex5> 0&& _0xd7dex6> 0){_0xd7dex15[_0x6df6[62]](_0xd7dex3+ _0xd7dex18,_0xd7dex4+ _0xd7dex18,_0xd7dex5- 2* _0xd7dex18,_0xd7dex6- 2* _0xd7dex18);_0xd7dex15[_0x6df6[63]]()};_0xd7dex15[_0x6df6[64]](false);if(this[_0x6df6[61]]){_0xd7dex15[_0x6df6[62]](_0xd7dex3,_0xd7dex4,_0xd7dex5,_0xd7dex6);_0xd7dex15[_0x6df6[29]]()}};mxCellRenderer[_0x6df6[0]][_0x6df6[12]][_0x6df6[65]]= _0xd7dex2d;function _0xd7dex2e(){}_0xd7dex2e[_0x6df6[0]]= new _0xd7dex2d();_0xd7dex2e[_0x6df6[0]][_0x6df6[1]]= _0xd7dex2e;_0xd7dex2e[_0x6df6[0]][_0x6df6[61]]= false;mxCellRenderer[_0x6df6[0]][_0x6df6[12]][_0x6df6[66]]= _0xd7dex2e;var _0xd7dex2f=mxImageExport[_0x6df6[0]][_0x6df6[67]];mxImageExport[_0x6df6[0]][_0x6df6[67]]= function(){_0xd7dex2f[_0x6df6[30]](this,arguments);function _0xd7dex30(_0xd7dex31){return {drawShape:function(_0xd7dex32,_0xd7dex33,_0xd7dex34,_0xd7dex35){var _0xd7dex3=_0xd7dex34[_0x6df6[68]];var _0xd7dex4=_0xd7dex34[_0x6df6[69]];var _0xd7dex5=_0xd7dex34[_0x6df6[70]];var _0xd7dex6=_0xd7dex34[_0x6df6[71]];if(_0xd7dex35){var _0xd7dex18=Math[_0x6df6[6]](4,Math[_0x6df6[6]](_0xd7dex5/ 5,_0xd7dex6/ 5));_0xd7dex3+= _0xd7dex18;_0xd7dex4+= _0xd7dex18;_0xd7dex5-= 2* _0xd7dex18;_0xd7dex6-= 2* _0xd7dex18;if(_0xd7dex5> 0&& _0xd7dex6> 0){_0xd7dex32[_0x6df6[62]](_0xd7dex3,_0xd7dex4,_0xd7dex5,_0xd7dex6)};return true}else {_0xd7dex32[_0x6df6[63]]();if(_0xd7dex31){_0xd7dex32[_0x6df6[62]](_0xd7dex3,_0xd7dex4,_0xd7dex5,_0xd7dex6);_0xd7dex32[_0x6df6[29]]()}}}}}this[_0x6df6[72]][_0x6df6[65]]= _0xd7dex30(true);this[_0x6df6[72]][_0x6df6[66]]= _0xd7dex30(false)};function _0xd7dex36(){mxArrow[_0x6df6[24]](this)}mxUtils[_0x6df6[25]](_0xd7dex36,mxArrow);_0xd7dex36[_0x6df6[0]][_0x6df6[73]]= function(_0xd7dex15,_0xd7dex37){var _0xd7dex1d=10;var _0xd7dex38=_0xd7dex37[0];var _0xd7dex39=_0xd7dex37[_0xd7dex37[_0x6df6[74]]- 1];var _0xd7dexe=_0xd7dex39[_0x6df6[68]]- _0xd7dex38[_0x6df6[68]];var _0xd7dexf=_0xd7dex39[_0x6df6[69]]- _0xd7dex38[_0x6df6[69]];var _0xd7dex3a=Math[_0x6df6[75]](_0xd7dexe* _0xd7dexe+ _0xd7dexf* _0xd7dexf);var _0xd7dex3b=_0xd7dex3a;var _0xd7dex3c=_0xd7dexe/ _0xd7dex3a;var _0xd7dex3d=_0xd7dexf/ _0xd7dex3a;var _0xd7dex3e=_0xd7dex3b* _0xd7dex3c;var _0xd7dex3f=_0xd7dex3b* _0xd7dex3d;var _0xd7dex40=_0xd7dex1d* _0xd7dex3d/ 3;var _0xd7dex41=-_0xd7dex1d* _0xd7dex3c/ 3;var _0xd7dex42=_0xd7dex38[_0x6df6[68]]- _0xd7dex40/ 2;var _0xd7dex43=_0xd7dex38[_0x6df6[69]]- _0xd7dex41/ 2;var _0xd7dex44=_0xd7dex42+ _0xd7dex40;var _0xd7dex45=_0xd7dex43+ _0xd7dex41;var _0xd7dex46=_0xd7dex44+ _0xd7dex3e;var _0xd7dex47=_0xd7dex45+ _0xd7dex3f;var _0xd7dex48=_0xd7dex46+ _0xd7dex40;var _0xd7dex49=_0xd7dex47+ _0xd7dex41;var _0xd7dex4a=_0xd7dex48- 3* _0xd7dex40;var _0xd7dex4b=_0xd7dex49- 3* _0xd7dex41;_0xd7dex15[_0x6df6[28]]();_0xd7dex15[_0x6df6[7]](_0xd7dex44,_0xd7dex45);_0xd7dex15[_0x6df6[8]](_0xd7dex46,_0xd7dex47);_0xd7dex15[_0x6df6[7]](_0xd7dex4a+ _0xd7dex40,_0xd7dex4b+ _0xd7dex41);_0xd7dex15[_0x6df6[8]](_0xd7dex42,_0xd7dex43);_0xd7dex15[_0x6df6[29]]()};mxCellRenderer[_0x6df6[0]][_0x6df6[12]][_0x6df6[76]]= _0xd7dex36;mxMarker[_0x6df6[78]](_0x6df6[77],function(_0xd7dex32,_0xd7dex1a,_0xd7dex4c,_0xd7dex39,_0xd7dex4d,_0xd7dex4e,_0xd7dex4f,_0xd7dex50,_0xd7dex51,_0xd7dex52){var _0xd7dex3c=_0xd7dex4d* (_0xd7dex4f+ _0xd7dex51+ 1);var _0xd7dex3d=_0xd7dex4e* (_0xd7dex4f+ _0xd7dex51+ 1);return function(){_0xd7dex32[_0x6df6[28]]();_0xd7dex32[_0x6df6[7]](_0xd7dex39[_0x6df6[68]]- _0xd7dex3c/ 2- _0xd7dex3d/ 2,_0xd7dex39[_0x6df6[69]]- _0xd7dex3d/ 2+ _0xd7dex3c/ 2);_0xd7dex32[_0x6df6[8]](_0xd7dex39[_0x6df6[68]]+ _0xd7dex3d/ 2- 3* _0xd7dex3c/ 2,_0xd7dex39[_0x6df6[69]]- 3* _0xd7dex3d/ 2- _0xd7dex3c/ 2);_0xd7dex32[_0x6df6[29]]()}});var _0xd7dex53=-99;if( typeof (mxVertexHandler)!= _0x6df6[79]){function _0xd7dex54(_0xd7dex33){mxVertexHandler[_0x6df6[24]](this,_0xd7dex33)}mxUtils[_0x6df6[25]](_0xd7dex54,mxVertexHandler);_0xd7dex54[_0x6df6[0]][_0x6df6[80]]= false;_0xd7dex54[_0x6df6[0]][_0x6df6[81]]= function(){this[_0x6df6[82]]= mxUtils[_0x6df6[5]](this[_0x6df6[83]][_0x6df6[4]],mxConstants.STYLE_HORIZONTAL,true);var _0xd7dex55=this[_0x6df6[83]][_0x6df6[85]][_0x6df6[84]];if(this[_0x6df6[86]]!= null){var _0xd7dex34= new mxRectangle(0,0,this[_0x6df6[86]][_0x6df6[70]],this[_0x6df6[86]][_0x6df6[71]]);this[_0x6df6[87]]= new mxImageShape(_0xd7dex34,this[_0x6df6[86]][_0x6df6[88]])}else {var _0xd7dex4f=10;var _0xd7dex34= new mxRectangle(0,0,_0xd7dex4f,_0xd7dex4f);this[_0x6df6[87]]= new mxRhombus(_0xd7dex34,mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)};this[_0x6df6[87]][_0x6df6[89]]= (_0xd7dex55[_0x6df6[89]]!= mxConstants[_0x6df6[90]])?mxConstants[_0x6df6[91]]:mxConstants[_0x6df6[90]];this[_0x6df6[87]][_0x6df6[81]](_0xd7dex55[_0x6df6[93]]()[_0x6df6[92]]());this[_0x6df6[87]][_0x6df6[95]][_0x6df6[4]][_0x6df6[94]]= this[_0x6df6[96]]();mxEvent[_0x6df6[97]](this[_0x6df6[87]][_0x6df6[95]],_0xd7dex55,this[_0x6df6[83]]);mxVertexHandler[_0x6df6[0]][_0x6df6[81]][_0x6df6[30]](this,arguments)};_0xd7dex54[_0x6df6[0]][_0x6df6[96]]= function(){return _0x6df6[98]};_0xd7dex54[_0x6df6[0]][_0x6df6[99]]= function(){mxVertexHandler[_0x6df6[0]][_0x6df6[99]][_0x6df6[30]](this,arguments);var _0xd7dex4f=this[_0x6df6[87]][_0x6df6[100]][_0x6df6[70]];this[_0x6df6[87]][_0x6df6[100]]= this[_0x6df6[101]](_0xd7dex4f);this[_0x6df6[87]][_0x6df6[99]]()};_0xd7dex54[_0x6df6[0]][_0x6df6[102]]= function(){mxVertexHandler[_0x6df6[0]][_0x6df6[102]][_0x6df6[30]](this,arguments);if(this[_0x6df6[87]]!= null){this[_0x6df6[87]][_0x6df6[102]]();this[_0x6df6[87]]= null}};_0xd7dex54[_0x6df6[0]][_0x6df6[103]]= function(_0xd7dex56){if(_0xd7dex56[_0x6df6[104]](this[_0x6df6[87]])){return _0xd7dex53};return mxVertexHandler[_0x6df6[0]][_0x6df6[103]][_0x6df6[30]](this,arguments)};_0xd7dex54[_0x6df6[0]][_0x6df6[105]]= function(_0xd7dex57,_0xd7dex56){if(!_0xd7dex56[_0x6df6[106]]()&& this[_0x6df6[107]]== _0xd7dex53){var _0xd7dex58= new mxPoint(_0xd7dex56[_0x6df6[108]](),_0xd7dex56[_0x6df6[109]]());this[_0x6df6[110]](_0xd7dex58);var _0xd7dex59=this[_0x6df6[84]][_0x6df6[112]](_0xd7dex56[_0x6df6[111]]());var _0xd7dex5a=this[_0x6df6[84]][_0x6df6[93]]()[_0x6df6[113]];if(_0xd7dex59&& this[_0x6df6[80]]){_0xd7dex58[_0x6df6[68]]= this[_0x6df6[84]][_0x6df6[114]](_0xd7dex58[_0x6df6[68]]/ _0xd7dex5a)* _0xd7dex5a;_0xd7dex58[_0x6df6[69]]= this[_0x6df6[84]][_0x6df6[114]](_0xd7dex58[_0x6df6[69]]/ _0xd7dex5a)* _0xd7dex5a};this[_0x6df6[115]](_0xd7dex58);this[_0x6df6[116]](this[_0x6df6[87]],_0xd7dex58[_0x6df6[68]],_0xd7dex58[_0x6df6[69]]);this[_0x6df6[83]][_0x6df6[85]][_0x6df6[84]][_0x6df6[117]][_0x6df6[99]](this[_0x6df6[83]],true);_0xd7dex56[_0x6df6[118]]()}else {mxVertexHandler[_0x6df6[0]][_0x6df6[105]][_0x6df6[30]](this,arguments)}};_0xd7dex54[_0x6df6[0]][_0x6df6[119]]= function(_0xd7dex57,_0xd7dex56){if(!_0xd7dex56[_0x6df6[106]]()&& this[_0x6df6[107]]== _0xd7dex53){this[_0x6df6[120]]();this[_0x6df6[121]]();_0xd7dex56[_0x6df6[118]]()}else {mxVertexHandler[_0x6df6[0]][_0x6df6[119]][_0x6df6[30]](this,arguments)}};_0xd7dex54[_0x6df6[0]][_0x6df6[101]]= function(_0xd7dex4f){var _0xd7dex5b=this[_0x6df6[83]][_0x6df6[123]][_0x6df6[122]]();var _0xd7dex5c=mxUtils[_0x6df6[124]](_0xd7dex5b);var _0xd7dex5d=Math[_0x6df6[125]](_0xd7dex5c);var _0xd7dex5e=Math[_0x6df6[126]](_0xd7dex5c);var _0xd7dex34= new mxRectangle(this[_0x6df6[83]][_0x6df6[68]],this[_0x6df6[83]][_0x6df6[69]],this[_0x6df6[83]][_0x6df6[70]],this[_0x6df6[83]][_0x6df6[71]]);if(this[_0x6df6[83]][_0x6df6[123]][_0x6df6[127]]()){var _0xd7dex5f=(_0xd7dex34[_0x6df6[70]]- _0xd7dex34[_0x6df6[71]])/ 2;_0xd7dex34[_0x6df6[68]]+= _0xd7dex5f;_0xd7dex34[_0x6df6[69]]-= _0xd7dex5f;var _0xd7dex23=_0xd7dex34[_0x6df6[70]];_0xd7dex34[_0x6df6[70]]= _0xd7dex34[_0x6df6[71]];_0xd7dex34[_0x6df6[71]]= _0xd7dex23};var _0xd7dex60=this[_0x6df6[128]](_0xd7dex34);if(this[_0x6df6[83]][_0x6df6[123]][_0x6df6[129]]){_0xd7dex60[_0x6df6[68]]= 2* _0xd7dex34[_0x6df6[68]]+ _0xd7dex34[_0x6df6[70]]- _0xd7dex60[_0x6df6[68]]};if(this[_0x6df6[83]][_0x6df6[123]][_0x6df6[130]]){_0xd7dex60[_0x6df6[69]]= 2* _0xd7dex34[_0x6df6[69]]+ _0xd7dex34[_0x6df6[71]]- _0xd7dex60[_0x6df6[69]]};_0xd7dex60= mxUtils[_0x6df6[133]](_0xd7dex60,_0xd7dex5d,_0xd7dex5e, new mxPoint(this[_0x6df6[83]][_0x6df6[131]](),this[_0x6df6[83]][_0x6df6[132]]()));return new mxRectangle(_0xd7dex60[_0x6df6[68]]- _0xd7dex4f/ 2,_0xd7dex60[_0x6df6[69]]- _0xd7dex4f/ 2,_0xd7dex4f,_0xd7dex4f)};_0xd7dex54[_0x6df6[0]][_0x6df6[128]]= function(_0xd7dex34){return null};_0xd7dex54[_0x6df6[0]][_0x6df6[115]]= function(_0xd7dex58){};_0xd7dex54[_0x6df6[0]][_0x6df6[110]]= function(_0xd7dex58){_0xd7dex58[_0x6df6[68]]= Math[_0x6df6[34]](this[_0x6df6[83]][_0x6df6[68]],Math[_0x6df6[6]](this[_0x6df6[83]][_0x6df6[68]]+ this[_0x6df6[83]][_0x6df6[70]],_0xd7dex58[_0x6df6[68]]));_0xd7dex58[_0x6df6[69]]= Math[_0x6df6[34]](this[_0x6df6[83]][_0x6df6[69]],Math[_0x6df6[6]](this[_0x6df6[83]][_0x6df6[69]]+ this[_0x6df6[83]][_0x6df6[71]],_0xd7dex58[_0x6df6[69]]))};_0xd7dex54[_0x6df6[0]][_0x6df6[120]]= function(){};function _0xd7dex61(_0xd7dex33){_0xd7dex54[_0x6df6[24]](this,_0xd7dex33)}mxUtils[_0x6df6[25]](_0xd7dex61,_0xd7dex54);_0xd7dex61[_0x6df6[0]][_0x6df6[128]]= function(_0xd7dex34){var _0xd7dex5a=this[_0x6df6[84]][_0x6df6[93]]()[_0x6df6[113]];var _0xd7dexb=Math[_0x6df6[6]](_0xd7dex34[_0x6df6[70]],mxUtils[_0x6df6[5]](this[_0x6df6[83]][_0x6df6[4]],_0x6df6[14],60)* _0xd7dex5a);var _0xd7dexc=Math[_0x6df6[6]](_0xd7dex34[_0x6df6[71]],mxUtils[_0x6df6[5]](this[_0x6df6[83]][_0x6df6[4]],_0x6df6[15],20)* _0xd7dex5a);var _0xd7dexd=mxUtils[_0x6df6[5]](this[_0x6df6[83]][_0x6df6[4]],_0x6df6[16],_0x6df6[17]);var _0xd7dex3=(_0xd7dexd== _0x6df6[18])?_0xd7dex34[_0x6df6[68]]+ _0xd7dexb:_0xd7dex34[_0x6df6[68]]+ _0xd7dex34[_0x6df6[70]]- _0xd7dexb;return new mxPoint(_0xd7dex3,_0xd7dex34[_0x6df6[69]]+ _0xd7dexc)};_0xd7dex61[_0x6df6[0]][_0x6df6[115]]= function(_0xd7dex58){var _0xd7dex5b=this[_0x6df6[83]][_0x6df6[123]][_0x6df6[122]]();var _0xd7dex5c=mxUtils[_0x6df6[124]](_0xd7dex5b);var _0xd7dex5d=Math[_0x6df6[125]](-_0xd7dex5c);var _0xd7dex5e=Math[_0x6df6[126]](-_0xd7dex5c);var _0xd7dex34= new mxRectangle(this[_0x6df6[83]][_0x6df6[68]],this[_0x6df6[83]][_0x6df6[69]],this[_0x6df6[83]][_0x6df6[70]],this[_0x6df6[83]][_0x6df6[71]]);if(this[_0x6df6[83]][_0x6df6[123]][_0x6df6[127]]()){var _0xd7dex5f=(_0xd7dex34[_0x6df6[70]]- _0xd7dex34[_0x6df6[71]])/ 2;_0xd7dex34[_0x6df6[68]]+= _0xd7dex5f;_0xd7dex34[_0x6df6[69]]-= _0xd7dex5f;var _0xd7dex23=_0xd7dex34[_0x6df6[70]];_0xd7dex34[_0x6df6[70]]= _0xd7dex34[_0x6df6[71]];_0xd7dex34[_0x6df6[71]]= _0xd7dex23};var _0xd7dex60= new mxPoint(_0xd7dex58[_0x6df6[68]],_0xd7dex58[_0x6df6[69]]);_0xd7dex60= mxUtils[_0x6df6[133]](_0xd7dex60,_0xd7dex5d,_0xd7dex5e, new mxPoint(this[_0x6df6[83]][_0x6df6[131]](),this[_0x6df6[83]][_0x6df6[132]]()));if(this[_0x6df6[83]][_0x6df6[123]][_0x6df6[129]]){_0xd7dex60[_0x6df6[68]]= 2* _0xd7dex34[_0x6df6[68]]+ _0xd7dex34[_0x6df6[70]]- _0xd7dex60[_0x6df6[68]]};if(this[_0x6df6[83]][_0x6df6[123]][_0x6df6[130]]){_0xd7dex60[_0x6df6[69]]= 2* _0xd7dex34[_0x6df6[69]]+ _0xd7dex34[_0x6df6[71]]- _0xd7dex60[_0x6df6[69]]};var _0xd7dex62=this[_0x6df6[134]](_0xd7dex60,_0xd7dex34);if(_0xd7dex62!= null){if(this[_0x6df6[83]][_0x6df6[123]][_0x6df6[129]]){_0xd7dex62[_0x6df6[68]]= 2* _0xd7dex34[_0x6df6[68]]+ _0xd7dex34[_0x6df6[70]]- _0xd7dex62[_0x6df6[68]]};if(this[_0x6df6[83]][_0x6df6[123]][_0x6df6[130]]){_0xd7dex62[_0x6df6[69]]= 2* _0xd7dex34[_0x6df6[69]]+ _0xd7dex34[_0x6df6[71]]- _0xd7dex62[_0x6df6[69]]};_0xd7dex5d= Math[_0x6df6[125]](_0xd7dex5c);_0xd7dex5e= Math[_0x6df6[126]](_0xd7dex5c);_0xd7dex62= mxUtils[_0x6df6[133]](_0xd7dex62,_0xd7dex5d,_0xd7dex5e, new mxPoint(this[_0x6df6[83]][_0x6df6[131]](),this[_0x6df6[83]][_0x6df6[132]]()));_0xd7dex58[_0x6df6[68]]= _0xd7dex62[_0x6df6[68]];_0xd7dex58[_0x6df6[69]]= _0xd7dex62[_0x6df6[69]]}};_0xd7dex61[_0x6df6[0]][_0x6df6[134]]= function(_0xd7dex60,_0xd7dex34){var _0xd7dexd=mxUtils[_0x6df6[5]](this[_0x6df6[83]][_0x6df6[4]],_0x6df6[16],_0x6df6[17]);var _0xd7dexb=(_0xd7dexd== _0x6df6[18])?_0xd7dex60[_0x6df6[68]]- _0xd7dex34[_0x6df6[68]]:_0xd7dex34[_0x6df6[68]]+ _0xd7dex34[_0x6df6[70]]- _0xd7dex60[_0x6df6[68]];var _0xd7dexc=_0xd7dex60[_0x6df6[69]]- _0xd7dex34[_0x6df6[69]];var _0xd7dex5a=this[_0x6df6[84]][_0x6df6[93]]()[_0x6df6[113]];this[_0x6df6[83]][_0x6df6[4]][_0x6df6[14]]= Math[_0x6df6[135]](Math[_0x6df6[34]](1,_0xd7dexb)/ _0xd7dex5a);this[_0x6df6[83]][_0x6df6[4]][_0x6df6[15]]= Math[_0x6df6[135]](Math[_0x6df6[34]](1,_0xd7dexc)/ _0xd7dex5a)};_0xd7dex61[_0x6df6[0]][_0x6df6[120]]= function(){var _0xd7dex63=this[_0x6df6[84]][_0x6df6[136]]();_0xd7dex63[_0x6df6[137]]();try{this[_0x6df6[83]][_0x6df6[85]][_0x6df6[84]][_0x6df6[139]](_0x6df6[14],this[_0x6df6[83]][_0x6df6[4]][_0x6df6[14]],[this[_0x6df6[83]][_0x6df6[138]]]);this[_0x6df6[83]][_0x6df6[85]][_0x6df6[84]][_0x6df6[139]](_0x6df6[15],this[_0x6df6[83]][_0x6df6[4]][_0x6df6[15]],[this[_0x6df6[83]][_0x6df6[138]]])}finally{_0xd7dex63[_0x6df6[140]]()}};function _0xd7dex64(_0xd7dex33){_0xd7dex61[_0x6df6[24]](this,_0xd7dex33)}mxUtils[_0x6df6[25]](_0xd7dex64,_0xd7dex61);_0xd7dex64[_0x6df6[0]][_0x6df6[128]]= function(_0xd7dex34){var _0xd7dex5a=this[_0x6df6[84]][_0x6df6[93]]()[_0x6df6[113]];var _0xd7dex65=mxUtils[_0x6df6[5]](this[_0x6df6[83]][_0x6df6[4]],mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE);return new mxPoint(_0xd7dex34[_0x6df6[68]]+ _0xd7dex34[_0x6df6[70]]/ 2,_0xd7dex34[_0x6df6[69]]+ Math[_0x6df6[6]](_0xd7dex34[_0x6df6[71]],_0xd7dex65* _0xd7dex5a))};_0xd7dex64[_0x6df6[0]][_0x6df6[134]]= function(_0xd7dex58,_0xd7dex34){_0xd7dex58[_0x6df6[68]]= _0xd7dex34[_0x6df6[68]]+ _0xd7dex34[_0x6df6[70]]/ 2;startSize= _0xd7dex58[_0x6df6[69]]- _0xd7dex34[_0x6df6[69]];var _0xd7dex5a=this[_0x6df6[84]][_0x6df6[93]]()[_0x6df6[113]];this[_0x6df6[83]][_0x6df6[4]][_0x6df6[141]]= Math[_0x6df6[135]](Math[_0x6df6[34]](1,startSize)/ _0xd7dex5a);return _0xd7dex58};_0xd7dex64[_0x6df6[0]][_0x6df6[120]]= function(){this[_0x6df6[83]][_0x6df6[85]][_0x6df6[84]][_0x6df6[139]](_0x6df6[141],this[_0x6df6[83]][_0x6df6[4]][_0x6df6[141]],[this[_0x6df6[83]][_0x6df6[138]]])};function _0xd7dex66(_0xd7dex33){_0xd7dex61[_0x6df6[24]](this,_0xd7dex33)}mxUtils[_0x6df6[25]](_0xd7dex66,_0xd7dex61);_0xd7dex66[_0x6df6[0]][_0x6df6[142]]= 20;_0xd7dex66[_0x6df6[0]][_0x6df6[143]]= 1;_0xd7dex66[_0x6df6[0]][_0x6df6[128]]= function(_0xd7dex34){var _0xd7dex5a=this[_0x6df6[84]][_0x6df6[93]]()[_0x6df6[113]];var _0xd7dex67=Math[_0x6df6[6]](_0xd7dex34[_0x6df6[70]],Math[_0x6df6[6]](_0xd7dex34[_0x6df6[71]],mxUtils[_0x6df6[5]](this[_0x6df6[83]][_0x6df6[4]],_0x6df6[2],this[_0x6df6[142]])* _0xd7dex5a/ this[_0x6df6[143]]));return new mxPoint(_0xd7dex34[_0x6df6[68]]+ _0xd7dex67,_0xd7dex34[_0x6df6[69]]+ _0xd7dex67)};_0xd7dex66[_0x6df6[0]][_0x6df6[134]]= function(_0xd7dex60,_0xd7dex34){var _0xd7dex4f=Math[_0x6df6[34]](0,Math[_0x6df6[6]](Math[_0x6df6[6]](_0xd7dex34[_0x6df6[70]]/ this[_0x6df6[143]],_0xd7dex60[_0x6df6[68]]- _0xd7dex34[_0x6df6[68]]),Math[_0x6df6[6]](_0xd7dex34[_0x6df6[71]]/ this[_0x6df6[143]],_0xd7dex60[_0x6df6[69]]- _0xd7dex34[_0x6df6[69]])));var _0xd7dex5a=this[_0x6df6[84]][_0x6df6[93]]()[_0x6df6[113]];this[_0x6df6[83]][_0x6df6[4]][_0x6df6[2]]= Math[_0x6df6[135]](Math[_0x6df6[34]](1,_0xd7dex4f)/ _0xd7dex5a)* this[_0x6df6[143]];return new mxPoint(_0xd7dex34[_0x6df6[68]]+ _0xd7dex4f,_0xd7dex34[_0x6df6[69]]+ _0xd7dex4f)};_0xd7dex66[_0x6df6[0]][_0x6df6[120]]= function(){this[_0x6df6[83]][_0x6df6[85]][_0x6df6[84]][_0x6df6[139]](_0x6df6[2],this[_0x6df6[83]][_0x6df6[4]][_0x6df6[2]],[this[_0x6df6[83]][_0x6df6[138]]])};function _0xd7dex68(_0xd7dex33){_0xd7dex66[_0x6df6[24]](this,_0xd7dex33)}mxUtils[_0x6df6[25]](_0xd7dex68,_0xd7dex66);_0xd7dex68[_0x6df6[0]][_0x6df6[142]]= 30;_0xd7dex68[_0x6df6[0]][_0x6df6[143]]= 2;function _0xd7dex69(_0xd7dex33){_0xd7dex66[_0x6df6[24]](this,_0xd7dex33)}mxUtils[_0x6df6[25]](_0xd7dex69,_0xd7dex66);_0xd7dex69[_0x6df6[0]][_0x6df6[142]]= 30;_0xd7dex69[_0x6df6[0]][_0x6df6[143]]= 1;_0xd7dex69[_0x6df6[0]][_0x6df6[128]]= function(_0xd7dex34){var _0xd7dex5a=this[_0x6df6[84]][_0x6df6[93]]()[_0x6df6[113]];var _0xd7dex67=Math[_0x6df6[6]](_0xd7dex34[_0x6df6[70]],Math[_0x6df6[6]](_0xd7dex34[_0x6df6[71]],mxUtils[_0x6df6[5]](this[_0x6df6[83]][_0x6df6[4]],_0x6df6[2],this[_0x6df6[142]])* _0xd7dex5a/ this[_0x6df6[143]]));return new mxPoint(_0xd7dex34[_0x6df6[68]]+ _0xd7dex34[_0x6df6[70]]- _0xd7dex67,_0xd7dex34[_0x6df6[69]]+ _0xd7dex67)};_0xd7dex69[_0x6df6[0]][_0x6df6[134]]= function(_0xd7dex60,_0xd7dex34){var _0xd7dex4f=Math[_0x6df6[34]](0,Math[_0x6df6[6]](Math[_0x6df6[6]](_0xd7dex34[_0x6df6[70]]/ this[_0x6df6[143]],_0xd7dex60[_0x6df6[68]]- _0xd7dex34[_0x6df6[68]]+ _0xd7dex34[_0x6df6[70]]),Math[_0x6df6[6]](_0xd7dex34[_0x6df6[71]]/ this[_0x6df6[143]],_0xd7dex60[_0x6df6[69]]- _0xd7dex34[_0x6df6[69]])));var _0xd7dex5a=this[_0x6df6[84]][_0x6df6[93]]()[_0x6df6[113]];this[_0x6df6[83]][_0x6df6[4]][_0x6df6[2]]= Math[_0x6df6[135]](Math[_0x6df6[34]](1,_0xd7dex4f)/ _0xd7dex5a)* this[_0x6df6[143]];return new mxPoint(_0xd7dex34[_0x6df6[68]]+ _0xd7dex34[_0x6df6[70]]- _0xd7dex4f,_0xd7dex34[_0x6df6[69]]+ _0xd7dex4f)};function _0xd7dex6a(_0xd7dex33){_0xd7dex66[_0x6df6[24]](this,_0xd7dex33)}mxUtils[_0x6df6[25]](_0xd7dex6a,_0xd7dex66);_0xd7dex6a[_0x6df6[0]][_0x6df6[142]]= 0.2;_0xd7dex6a[_0x6df6[0]][_0x6df6[143]]= 1;_0xd7dex6a[_0x6df6[0]][_0x6df6[128]]= function(_0xd7dex34){var _0xd7dex67=mxUtils[_0x6df6[5]](this[_0x6df6[83]][_0x6df6[4]],_0x6df6[2],this[_0x6df6[142]]);return new mxPoint(_0xd7dex34[_0x6df6[68]]+ _0xd7dex34[_0x6df6[70]]* _0xd7dex67,_0xd7dex34[_0x6df6[69]]+ _0xd7dex34[_0x6df6[71]]/ 2)};_0xd7dex6a[_0x6df6[0]][_0x6df6[134]]= function(_0xd7dex60,_0xd7dex34){var _0xd7dex4f=Math[_0x6df6[6]](1,(_0xd7dex60[_0x6df6[68]]- _0xd7dex34[_0x6df6[68]])/ _0xd7dex34[_0x6df6[70]]);this[_0x6df6[83]][_0x6df6[4]][_0x6df6[2]]= _0xd7dex4f;return new mxPoint(_0xd7dex34[_0x6df6[68]]+ _0xd7dex4f* _0xd7dex34[_0x6df6[70]],_0xd7dex34[_0x6df6[69]]+ _0xd7dex34[_0x6df6[71]]/ 2)};function _0xd7dex6b(_0xd7dex33){_0xd7dex66[_0x6df6[24]](this,_0xd7dex33)}mxUtils[_0x6df6[25]](_0xd7dex6b,_0xd7dex66);_0xd7dex6b[_0x6df6[0]][_0x6df6[142]]= 0.4;_0xd7dex6b[_0x6df6[0]][_0x6df6[143]]= 1;_0xd7dex6b[_0x6df6[0]][_0x6df6[128]]= function(_0xd7dex34){var _0xd7dex67=mxUtils[_0x6df6[5]](this[_0x6df6[83]][_0x6df6[4]],_0x6df6[2],this[_0x6df6[142]]);return new mxPoint(_0xd7dex34[_0x6df6[68]]+ _0xd7dex34[_0x6df6[70]]/ 2,_0xd7dex34[_0x6df6[69]]+ _0xd7dex67* _0xd7dex34[_0x6df6[71]]/ 2)};_0xd7dex6b[_0x6df6[0]][_0x6df6[134]]= function(_0xd7dex60,_0xd7dex34){var _0xd7dex4f=Math[_0x6df6[34]](0,Math[_0x6df6[6]](1,((_0xd7dex60[_0x6df6[69]]- _0xd7dex34[_0x6df6[69]])/ _0xd7dex34[_0x6df6[71]])* 2));this[_0x6df6[83]][_0x6df6[4]][_0x6df6[2]]= _0xd7dex4f;return new mxPoint(_0xd7dex34[_0x6df6[68]]+ _0xd7dex34[_0x6df6[70]]/ 2,_0xd7dex34[_0x6df6[69]]+ _0xd7dex4f* _0xd7dex34[_0x6df6[71]]/ 2)};var _0xd7dex6c={"\x73\x77\x69\x6D\x6C\x61\x6E\x65":_0xd7dex64,"\x66\x6F\x6C\x64\x65\x72":_0xd7dex61,"\x63\x75\x62\x65":_0xd7dex66,"\x63\x61\x72\x64":_0xd7dex68,"\x6E\x6F\x74\x65":_0xd7dex69,"\x73\x74\x65\x70":_0xd7dex6a,"\x74\x61\x70\x65":_0xd7dex6b};var _0xd7dex6d=mxGraph[_0x6df6[0]][_0x6df6[144]];mxGraph[_0x6df6[0]][_0x6df6[144]]= function(_0xd7dex33){if(_0xd7dex33!= null){var _0xd7dex6e=_0xd7dex6c[_0xd7dex33[_0x6df6[4]][_0x6df6[123]]];if(_0xd7dex6e!= null){return new _0xd7dex6e(_0xd7dex33)}};return _0xd7dex6d[_0x6df6[30]](this,arguments)}};mxGraph[_0x6df6[0]][_0x6df6[145]]= function(_0xd7dex6f,_0xd7dex50){if(_0xd7dex6f!= null&& _0xd7dex6f[_0x6df6[123]]!= null){if(_0xd7dex6f[_0x6df6[123]][_0x6df6[146]]!= null){if(_0xd7dex6f[_0x6df6[123]][_0x6df6[146]]!= null){return _0xd7dex6f[_0x6df6[123]][_0x6df6[146]][_0x6df6[147]]}}else {if(_0xd7dex6f[_0x6df6[123]][_0x6df6[147]]!= null){return _0xd7dex6f[_0x6df6[123]][_0x6df6[147]]}}};return null};mxRectangleShape[_0x6df6[0]][_0x6df6[147]]= [ new mxConnectionConstraint( new mxPoint(0.25,0),true), new mxConnectionConstraint( new mxPoint(0.5,0),true), new mxConnectionConstraint( new mxPoint(0.75,0),true), new mxConnectionConstraint( new mxPoint(0,0.25),true), new mxConnectionConstraint( new mxPoint(0,0.5),true), new mxConnectionConstraint( new mxPoint(0,0.75),true), new mxConnectionConstraint( new mxPoint(1,0.25),true), new mxConnectionConstraint( new mxPoint(1,0.5),true), new mxConnectionConstraint( new mxPoint(1,0.75),true), new mxConnectionConstraint( new mxPoint(0.25,1),true), new mxConnectionConstraint( new mxPoint(0.5,1),true), new mxConnectionConstraint( new mxPoint(0.75,1),true)];mxLabel[_0x6df6[0]][_0x6df6[147]]= mxRectangleShape[_0x6df6[0]][_0x6df6[147]];mxImageShape[_0x6df6[0]][_0x6df6[147]]= mxRectangleShape[_0x6df6[0]][_0x6df6[147]];mxSwimlane[_0x6df6[0]][_0x6df6[147]]= mxRectangleShape[_0x6df6[0]][_0x6df6[147]];_0xd7dex14[_0x6df6[0]][_0x6df6[147]]= mxRectangleShape[_0x6df6[0]][_0x6df6[147]];_0xd7dex9[_0x6df6[0]][_0x6df6[147]]= mxRectangleShape[_0x6df6[0]][_0x6df6[147]];_0xd7dex10[_0x6df6[0]][_0x6df6[147]]= mxRectangleShape[_0x6df6[0]][_0x6df6[147]];_0xd7dex1[_0x6df6[0]][_0x6df6[147]]= mxRectangleShape[_0x6df6[0]][_0x6df6[147]];_0xd7dexa[_0x6df6[0]][_0x6df6[147]]= mxRectangleShape[_0x6df6[0]][_0x6df6[147]];mxCylinder[_0x6df6[0]][_0x6df6[147]]= [ new mxConnectionConstraint( new mxPoint(0.15,0.05),false), new mxConnectionConstraint( new mxPoint(0.5,0),true), new mxConnectionConstraint( new mxPoint(0.85,0.05),false), new mxConnectionConstraint( new mxPoint(0,0.3),true), new mxConnectionConstraint( new mxPoint(0,0.5),true), new mxConnectionConstraint( new mxPoint(0,0.7),true), new mxConnectionConstraint( new mxPoint(1,0.3),true), new mxConnectionConstraint( new mxPoint(1,0.5),true), new mxConnectionConstraint( new mxPoint(1,0.7),true), new mxConnectionConstraint( new mxPoint(0.15,0.95),false), new mxConnectionConstraint( new mxPoint(0.5,1),true), new mxConnectionConstraint( new mxPoint(0.85,0.95),false)];_0xd7dex25[_0x6df6[0]][_0x6df6[147]]= [ new mxConnectionConstraint( new mxPoint(0.25,0.1),false), new mxConnectionConstraint( new mxPoint(0.5,0),false), new mxConnectionConstraint( new mxPoint(0.75,0.1),false), new mxConnectionConstraint( new mxPoint(0,1/ 3),false), new mxConnectionConstraint( new mxPoint(0,1),false), new mxConnectionConstraint( new mxPoint(1,1/ 3),false), new mxConnectionConstraint( new mxPoint(1,1),false), new mxConnectionConstraint( new mxPoint(0.5,0.5),false)];_0xd7dex28[_0x6df6[0]][_0x6df6[147]]= [ new mxConnectionConstraint( new mxPoint(0.25,0),true), new mxConnectionConstraint( new mxPoint(0.5,0),true), new mxConnectionConstraint( new mxPoint(0.75,0),true), new mxConnectionConstraint( new mxPoint(0,0.3),true), new mxConnectionConstraint( new mxPoint(0,0.7),true), new mxConnectionConstraint( new mxPoint(1,0.25),true), new mxConnectionConstraint( new mxPoint(1,0.5),true), new mxConnectionConstraint( new mxPoint(1,0.75),true), new mxConnectionConstraint( new mxPoint(0.25,1),true), new mxConnectionConstraint( new mxPoint(0.5,1),true), new mxConnectionConstraint( new mxPoint(0.75,1),true)];mxActor[_0x6df6[0]][_0x6df6[147]]= [ new mxConnectionConstraint( new mxPoint(0.5,0),true), new mxConnectionConstraint( new mxPoint(0.25,0.2),false), new mxConnectionConstraint( new mxPoint(0.1,0.5),false), new mxConnectionConstraint( new mxPoint(0,0.75),true), new mxConnectionConstraint( new mxPoint(0.75,0.25),false), new mxConnectionConstraint( new mxPoint(0.9,0.5),false), new mxConnectionConstraint( new mxPoint(1,0.75),true), new mxConnectionConstraint( new mxPoint(0.25,1),true), new mxConnectionConstraint( new mxPoint(0.5,1),true), new mxConnectionConstraint( new mxPoint(0.75,1),true)];_0xd7dex11[_0x6df6[0]][_0x6df6[147]]= [ new mxConnectionConstraint( new mxPoint(0,0.35),false), new mxConnectionConstraint( new mxPoint(0,0.5),false), new mxConnectionConstraint( new mxPoint(0,0.65),false), new mxConnectionConstraint( new mxPoint(1,0.35),false), new mxConnectionConstraint( new mxPoint(1,0.5),false), new mxConnectionConstraint( new mxPoint(1,0.65),false), new mxConnectionConstraint( new mxPoint(0.25,1),false), new mxConnectionConstraint( new mxPoint(0.75,0),false)];_0xd7dex13[_0x6df6[0]][_0x6df6[147]]= [ new mxConnectionConstraint( new mxPoint(0.25,0),true), new mxConnectionConstraint( new mxPoint(0.5,0),true), new mxConnectionConstraint( new mxPoint(0.75,0),true), new mxConnectionConstraint( new mxPoint(0.25,1),true), new mxConnectionConstraint( new mxPoint(0.5,1),true), new mxConnectionConstraint( new mxPoint(0.75,1),true), new mxConnectionConstraint( new mxPoint(0.1,0.25),false), new mxConnectionConstraint( new mxPoint(0.2,0.5),false), new mxConnectionConstraint( new mxPoint(0.1,0.75),false), new mxConnectionConstraint( new mxPoint(0.9,0.25),false), new mxConnectionConstraint( new mxPoint(1,0.5),false), new mxConnectionConstraint( new mxPoint(0.9,0.75),false)];mxLine[_0x6df6[0]][_0x6df6[147]]= [ new mxConnectionConstraint( new mxPoint(0,0.5),false), new mxConnectionConstraint( new mxPoint(0.25,0.5),false), new mxConnectionConstraint( new mxPoint(0.75,0.5),false), new mxConnectionConstraint( new mxPoint(1,0.5),false)];_0xd7dex26[_0x6df6[0]][_0x6df6[147]]= [ new mxConnectionConstraint( new mxPoint(0.5,0),false), new mxConnectionConstraint( new mxPoint(0.5,1),false)];mxEllipse[_0x6df6[0]][_0x6df6[147]]= [ new mxConnectionConstraint( new mxPoint(0,0),true), new mxConnectionConstraint( new mxPoint(1,0),true), new mxConnectionConstraint( new mxPoint(0,1),true), new mxConnectionConstraint( new mxPoint(1,1),true), new mxConnectionConstraint( new mxPoint(0.5,0),true), new mxConnectionConstraint( new mxPoint(0.5,1),true), new mxConnectionConstraint( new mxPoint(0,0.5),true), new mxConnectionConstraint( new mxPoint(1,0.5))];mxDoubleEllipse[_0x6df6[0]][_0x6df6[147]]= mxEllipse[_0x6df6[0]][_0x6df6[147]];mxRhombus[_0x6df6[0]][_0x6df6[147]]= mxEllipse[_0x6df6[0]][_0x6df6[147]];mxTriangle[_0x6df6[0]][_0x6df6[147]]= [ new mxConnectionConstraint( new mxPoint(0,0.25),true), new mxConnectionConstraint( new mxPoint(0,0.5),true), new mxConnectionConstraint( new mxPoint(0,0.75),true), new mxConnectionConstraint( new mxPoint(0.5,0),true), new mxConnectionConstraint( new mxPoint(0.5,1),true), new mxConnectionConstraint( new mxPoint(1,0.5),true)];mxHexagon[_0x6df6[0]][_0x6df6[147]]= [ new mxConnectionConstraint( new mxPoint(0.375,0),true), new mxConnectionConstraint( new mxPoint(0.5,0),true), new mxConnectionConstraint( new mxPoint(0.625,0),true), new mxConnectionConstraint( new mxPoint(0.125,0.25),false), new mxConnectionConstraint( new mxPoint(0,0.5),true), new mxConnectionConstraint( new mxPoint(0.125,0.75),false), new mxConnectionConstraint( new mxPoint(0.875,0.25),false), new mxConnectionConstraint( new mxPoint(0,0.5),true), new mxConnectionConstraint( new mxPoint(1,0.5),true), new mxConnectionConstraint( new mxPoint(0.875,0.75),false), new mxConnectionConstraint( new mxPoint(0.375,1),true), new mxConnectionConstraint( new mxPoint(0.5,1),true), new mxConnectionConstraint( new mxPoint(0.625,1),true)];mxCloud[_0x6df6[0]][_0x6df6[147]]= [ new mxConnectionConstraint( new mxPoint(0.25,0.25),false), new mxConnectionConstraint( new mxPoint(0.4,0.1),false), new mxConnectionConstraint( new mxPoint(0.16,0.55),false), new mxConnectionConstraint( new mxPoint(0.07,0.4),false), new mxConnectionConstraint( new mxPoint(0.31,0.8),false), new mxConnectionConstraint( new mxPoint(0.13,0.77),false), new mxConnectionConstraint( new mxPoint(0.8,0.8),false), new mxConnectionConstraint( new mxPoint(0.55,0.95),false), new mxConnectionConstraint( new mxPoint(0.875,0.5),false), new mxConnectionConstraint( new mxPoint(0.96,0.7),false), new mxConnectionConstraint( new mxPoint(0.625,0.2),false), new mxConnectionConstraint( new mxPoint(0.88,0.25),false)];mxArrow[_0x6df6[0]][_0x6df6[147]]= null})() \ No newline at end of file diff --git a/public/assets/plugins/jscripty/js/Sidebar.js b/public/assets/plugins/jscripty/js/Sidebar.js index 8b618e6..0aa4711 100644 --- a/public/assets/plugins/jscripty/js/Sidebar.js +++ b/public/assets/plugins/jscripty/js/Sidebar.js @@ -1,793 +1 @@ -'use strict'; - -/** - * Construcs a new sidebar for the given editor. - */ -function Sidebar(editorUi, container) { - this.editorUi = editorUi; - this.container = container; - this.palettes = new Object(); - this.showTooltips = true; - this.graph = new Graph(document.createElement('div'), null, null, this.editorUi - .editor.graph.getStylesheet()); - this.graph.resetViewOnRootChange = false; - this.graph.foldingEnabled = false; - this.graph.setConnectable(false); - this.graph.autoScroll = false; - this.graph.setTooltips(false); - this.graph.setEnabled(false); - - // Container must be in the DOM for correct HTML rendering - this.graph.container.style.visibility = 'hidden'; - this.graph.container.style.position = 'absolute'; - document.body.appendChild(this.graph.container); - - if (!mxClient.IS_TOUCH) { - mxEvent.addListener(document, 'mouseup', mxUtils.bind(this, function() { - this.showTooltips = true; - })); - - // Enables tooltips after scroll - mxEvent.addListener(container, 'scroll', mxUtils.bind(this, function() { - this.showTooltips = true; - })); - - mxEvent.addListener(document, 'mousedown', mxUtils.bind(this, function() { - this.showTooltips = false; - this.hideTooltip(); - })); - - mxEvent.addListener(document, 'mousemove', mxUtils.bind(this, function(evt) { - var src = mxEvent.getSource(evt); - - while (src != null) { - if (src == this.currentElt) { - return; - } - - src = src.parentNode; - } - - this.hideTooltip(); - })); - - // Handles mouse leaving the window - mxEvent.addListener(document, 'mouseout', mxUtils.bind(this, function(evt) { - if (evt.toElement == null && evt.relatedTarget == null) { - this.hideTooltip(); - } - })); - } - - this.init(); - - // Pre-fetches tooltip image - new Image().src = IMAGE_PATH + '/tooltip.png'; -}; - -/** - * Adds all palettes to the sidebar. - */ -Sidebar.prototype.init = function() { - var dir = STENCIL_PATH; - console.log(dir); - - // this.addImagePalette('entry', mxResources.get('application'), dir + '/', - // '_128x128.png', ['start', 'question', 'input', 'end', 'email'], [mxResources.get('start'), - // mxResources.get('question'), mxResources.get('input'), mxResources.get('end'), mxResources.get('email') - // ]); - this.addImagePalette('entry', mxResources.get('application'), dir + '/', - '_128x128.png', ['start', 'question', 'input', 'end'], [mxResources.get('start'), - mxResources.get('question'), mxResources.get('input'), mxResources.get('end') - ]); - // this.addBpmnPalette(dir, false); - -}; - -/** - * Specifies if tooltips should be visible. Default is true. - */ -Sidebar.prototype.enableTooltips = !mxClient.IS_TOUCH; - -/** - * Specifies the delay for the tooltip. Default is 16 px. - */ -Sidebar.prototype.tooltipBorder = 16; - -/** - * Specifies the delay for the tooltip. Default is 3 px. - */ -Sidebar.prototype.thumbBorder = 3; - -/** - * Specifies the delay for the tooltip. Default is 300 ms. - */ -Sidebar.prototype.tooltipDelay = 300; - -/** - * Specifies if edges should be used as templates if clicked. Default is true. - */ -Sidebar.prototype.installEdges = true; - -/** - * Specifies the URL of the gear image. - */ -Sidebar.prototype.gearImage = STENCIL_PATH + '/clipart/Gear_128x128.png'; - -/** - * Specifies the width of the thumbnails. - */ -Sidebar.prototype.thumbWidth = 34; - -/** - * Specifies the height of the thumbnails. - */ -Sidebar.prototype.thumbHeight = 34; - -/** - * Specifies the padding for the thumbnails. Default is 3. - */ -Sidebar.prototype.thumbPadding = 2; - -/** - * Specifies the size of the sidebar titles. - */ -Sidebar.prototype.sidebarTitleSize = 9; - -/** - * Specifies if titles in the sidebar should be enabled. - */ -Sidebar.prototype.sidebarTitles = false; - -/** - * Specifies if titles in the tooltips should be enabled. - */ -Sidebar.prototype.tooltipTitles = false; - -/** - * Adds all palettes to the sidebar. - */ -Sidebar.prototype.showTooltip = function(elt, cells, title, showLabel) { - if (this.enableTooltips && this.showTooltips) { - if (this.currentElt != elt) { - if (this.thread != null) { - window.clearTimeout(this.thread); - this.thread = null; - } - - var show = mxUtils.bind(this, function() { - // Lazy creation of the DOM nodes and graph instance - if (this.tooltip == null) { - this.tooltip = document.createElement('div'); - this.tooltip.className = 'geSidebarTooltip'; - document.body.appendChild(this.tooltip); - - this.graph2 = new Graph(this.tooltip, null, null, this.editorUi.editor.graph - .getStylesheet()); - this.graph2.view.setTranslate(this.tooltipBorder, this.tooltipBorder); - this.graph2.resetViewOnRootChange = false; - this.graph2.foldingEnabled = false; - this.graph2.autoScroll = false; - this.graph2.setTooltips(false); - this.graph2.setConnectable(false); - this.graph2.setEnabled(false); - - if (!mxClient.IS_SVG) { - this.graph2.view.canvas.style.position = 'relative'; - } - - this.tooltipImage = mxUtils.createImage(IMAGE_PATH + '/tooltip.png'); - this.tooltipImage.style.position = 'absolute'; - this.tooltipImage.style.width = '14px'; - this.tooltipImage.style.height = '27px'; - - document.body.appendChild(this.tooltipImage); - } - - this.tooltip.style.display = 'block'; - this.graph2.labelsVisible = (showLabel == null || showLabel); - this.graph2.model.clear(); - this.graph2.addCells(cells); - - var bounds = this.graph2.getGraphBounds(); - var width = bounds.width + 2 * this.tooltipBorder; - var height = bounds.height + 2 * this.tooltipBorder; - - if (mxClient.IS_QUIRKS) { - width += 4; - height += 4; - this.tooltip.style.overflow = 'hidden'; - } else { - this.tooltip.style.overflow = 'visible'; - } - - this.tooltipImage.style.visibility = 'visible'; - this.tooltip.style.width = width + 'px'; - - // Adds title for entry - if (this.tooltipTitles && title != null && title.length > 0) { - if (this.tooltipTitle == null) { - this.tooltipTitle = document.createElement('div'); - this.tooltipTitle.style.borderTop = '1px solid gray'; - this.tooltipTitle.style.textAlign = 'center'; - this.tooltipTitle.style.width = '100%'; - - // Oversize titles are cut-off currently. Should make tooltip wider later. - this.tooltipTitle.style.overflow = 'hidden'; - - if (mxClient.IS_SVG) { - this.tooltipTitle.style.paddingTop = '2px'; - } else { - this.tooltipTitle.style.position = 'absolute'; - this.tooltipTitle.style.paddingTop = '6px'; - } - - this.tooltip.appendChild(this.tooltipTitle); - } else { - this.tooltipTitle.innerHTML = ''; - } - - this.tooltipTitle.style.display = ''; - mxUtils.write(this.tooltipTitle, title); - - var dy = this.tooltipTitle.offsetHeight + 10; - height += dy; - - if (mxClient.IS_SVG) { - this.tooltipTitle.style.marginTop = (-dy) + 'px'; - } else { - height -= 6; - this.tooltipTitle.style.top = (height - dy) + 'px'; - } - } else if (this.tooltipTitle != null && this.tooltipTitle.parentNode != - null) { - this.tooltipTitle.style.display = 'none'; - } - - this.tooltip.style.height = height + 'px'; - var x0 = -Math.min(0, bounds.x - this.tooltipBorder); - var y0 = -Math.min(0, bounds.y - this.tooltipBorder); - - var left = this.container.clientWidth + this.editorUi.splitSize + 3; - var top = Math.max(0, (this.container.offsetTop + elt.offsetTop - this.container - .scrollTop - height / 2 + 16)); - - if (mxClient.IS_SVG) { - this.graph2.view.canvas.setAttribute('transform', 'translate(' + x0 + - ',' + y0 + ')'); - } else { - this.graph2.view.drawPane.style.left = x0 + 'px'; - this.graph2.view.drawPane.style.top = y0 + 'px'; - } - - // Workaround for ignored position CSS style in IE9 - // (changes to relative without the following line) - // Added width of the page-sidebar - // left += document.getElementById('page-sidebar').offsetWidth; - // Added static height of the page-navbar - top += 90; - - this.tooltip.style.position = 'absolute'; - this.tooltip.style.left = left + 'px'; - this.tooltip.style.top = top + 'px'; - this.tooltipImage.style.left = (left - 13) + 'px'; - this.tooltipImage.style.top = (top + height / 2 - 13) + 'px'; - }); - - if (this.tooltip != null && this.tooltip.style.display != 'none') { - show(); - } else { - this.thread = window.setTimeout(show, this.tooltipDelay); - } - - this.currentElt = elt; - } - } -}; - -/** - * Hides the current tooltip. - */ -Sidebar.prototype.hideTooltip = function() { - if (this.thread != null) { - window.clearTimeout(this.thread); - this.thread = null; - } - - if (this.tooltip != null) { - this.tooltip.style.display = 'none'; - this.tooltipImage.style.visibility = 'hidden'; - this.currentElt = null; - } -}; - -/** - * Creates and returns the given title element. - */ -Sidebar.prototype.createTitle = function(label) { - var elt = document.createElement('a'); - elt.setAttribute('href', 'javascript:void(0);'); - elt.className = 'geTitle'; - mxUtils.write(elt, label); - - return elt; -}; - -/** - * Creates a thumbnail for the given cells. - */ -Sidebar.prototype.createThumb = function(cells, width, height, parent, title, - showLabel) { - this.graph.labelsVisible = (showLabel == null || showLabel); - this.graph.view.scaleAndTranslate(1, 0, 0); - this.graph.addCells(cells); - var bounds = this.graph.getGraphBounds(); - var corr = this.thumbBorder; - var s = Math.min((width - 2) / (bounds.width - bounds.x + corr), (height - 2) / - (bounds.height - bounds.y + corr)); - var x0 = -Math.min(bounds.x, 0); - var y0 = -Math.min(bounds.y, 0); - this.graph.view.scaleAndTranslate(s, x0, y0); - - bounds = this.graph.getGraphBounds(); - var dx = Math.max(0, Math.floor((width - bounds.width - bounds.x) / 2)); - var dy = Math.max(0, Math.floor((height - bounds.height - bounds.y) / 2)); - - var node = null; - - // For supporting HTML labels in IE9 standards mode the container is cloned instead - if (this.graph.dialect == mxConstants.DIALECT_SVG && !mxClient.NO_FO) { - node = this.graph.view.getCanvas().ownerSVGElement.cloneNode(true); - } - // LATER: Check if deep clone can be used for quirks if container in DOM - else { - node = this.graph.container.cloneNode(false); - node.innerHTML = this.graph.container.innerHTML; - } - - this.graph.getModel().clear(); - - // Catch-all event handling - if (mxClient.IS_IE6) { - parent.style.backgroundImage = 'url(' + this.editorUi.editor.transparentImage + - ')'; - } - - var dd = 3; - node.style.position = 'relative'; - node.style.overflow = 'hidden'; - node.style.cursor = 'pointer'; - node.style.left = (dx + dd) + 'px'; - node.style.top = (dy + dd) + 'px'; - node.style.width = width + 'px'; - node.style.height = height + 'px'; - node.style.visibility = ''; - node.style.minWidth = ''; - node.style.minHeight = ''; - - parent.appendChild(node); - - // Adds title for sidebar entries - if (this.sidebarTitles && title != null) { - var border = (mxClient.IS_QUIRKS) ? 2 * this.thumbPadding + 2 : 0; - parent.style.height = (this.thumbHeight + border + this.sidebarTitleSize + 8) + - 'px'; - - var div = document.createElement('div'); - div.style.fontSize = this.sidebarTitleSize + 'px'; - div.style.textAlign = 'center'; - div.style.whiteSpace = 'nowrap'; - - if (mxClient.IS_IE) { - div.style.height = (this.sidebarTitleSize + 12) + 'px'; - } - - div.style.paddingTop = '4px'; - mxUtils.write(div, title); - parent.appendChild(div); - } -}; - -/** - * Creates and returns a new palette item for the given image. - */ -Sidebar.prototype.createItem = function(cells, title, showLabel) { - var elt = document.createElement('a'); - elt.setAttribute('href', 'javascript:void(0);'); - elt.className = 'geItem'; - elt.style.overflow = 'hidden'; - var border = (mxClient.IS_QUIRKS) ? 8 + 2 * this.thumbPadding : 6; - elt.style.width = (this.thumbWidth + border) + 'px'; - elt.style.height = (this.thumbHeight + border) + 'px'; - elt.style.padding = this.thumbPadding + 'px'; - - // Blocks default click action - mxEvent.addListener(elt, 'click', function(evt) { - mxEvent.consume(evt); - }); - - this.createThumb(cells, this.thumbWidth, this.thumbHeight, elt, title, - showLabel); - - return elt; -}; - - -/** - * Creates a drop handler for inserting the given cells. - */ -Sidebar.prototype.createDropHandler = function(cells, allowSplit) { - return function(graph, evt, target, x, y) { - if (graph.isEnabled()) { - cells = graph.getImportableCells(cells); - - if (cells.length > 0) { - var validDropTarget = (target != null) ? - graph.isValidDropTarget(target, cells, evt) : false; - var select = null; - - if (target != null && !validDropTarget) { - target = null; - } - - // Splits the target edge or inserts into target group - if (allowSplit && graph.isSplitEnabled() && graph.isSplitTarget(target, - cells, evt)) { - graph.splitEdge(target, cells, null, x, y); - select = cells; - } else if (cells.length > 0) { - select = graph.importCells(cells, x, y, target); - } - - if (select != null && select.length > 0) { - graph.scrollCellToVisible(select[0]); - graph.setSelectionCells(select); - } - } - } - }; -}; - -/** - * Creates and returns a preview element for the given width and height. - */ -Sidebar.prototype.createDragPreview = function(width, height) { - var elt = document.createElement('div'); - elt.style.border = '1px dashed black'; - elt.style.width = width + 'px'; - elt.style.height = height + 'px'; - - return elt; -}; - -/** - * Creates a drag source for the given element. - */ -Sidebar.prototype.createDragSource = function(elt, dropHandler, preview) { - var dragSource = mxUtils.makeDraggable(elt, this.editorUi.editor.graph, - dropHandler, - preview, 0, 0, this.editorUi.editor.graph.autoscroll, true, true); - - - - // Allows drop into cell only if target is a valid root - dragSource.getDropTarget = function(graph, x, y) { - var target = mxDragSource.prototype.getDropTarget.apply(this, arguments); - if (!graph.isValidRoot(target)) { - target = null; - } - - return target; - }; - - return dragSource; -}; - - - -/** - * Adds a handler for inserting the cell with a single click. - */ -Sidebar.prototype.addClickHandler = function(elt, ds) { - var graph = this.editorUi.editor.graph; - var first = null; - - mxEvent.addGestureListeners(elt, function(evt) { - first = new mxPoint(mxEvent.getClientX(evt), mxEvent.getClientY(evt)); - }); - - var oldMouseUp = ds.mouseUp; - ds.mouseUp = function(evt) { - if (!mxEvent.isPopupTrigger(evt) && this.currentGraph == null && first != - null) { - var tol = graph.tolerance; - - if (Math.abs(first.x - mxEvent.getClientX(evt)) <= tol && - Math.abs(first.y - mxEvent.getClientY(evt)) <= tol) { - var gs = graph.getGridSize(); - ds.drop(graph, evt, null, gs, gs); - } - } - - oldMouseUp.apply(this, arguments); - first = null; - }; -}; - -/** - * Giuseppe Careri - * Create xml document vertex - */ -Sidebar.prototype.createXmlDocument = function(element, label, variables, - values) { - var doc = mxUtils.createXmlDocument(); - var node = doc.createElement(element) - node.setAttribute('label', label); - - variables.forEach(function(variable, index) { - node.setAttribute(variable, values[index] ? values[index] : ''); - }); - - return node; -} - -/** - * Giuseppe Careri - * Creates a drop handler for inserting the given cells. - */ -Sidebar.prototype.createVertexTemplate = function(style, width, height, value, - title, showLabel) { - var variables = []; - var values = []; - - switch (value) { - case 'start': - variables = ['id', 'text', 'state']; - values = ['0', '', "OFF"]; - break; - case 'end': - variables = ['id', 'text']; - values = ['0', '']; - break; - case 'question': - variables = ['id', 'question', 'other']; - values = ['0', '']; - break; - case 'input': - variables = ['id', 'question', 'add']; - values = ['0', '']; - break; - // case 'email': - // variables = ["Host", "Username", "Password", "To", "Subject", "Body"]; - // values = ['']; - // break; - // case 'sms': - // variables = ['account_id', 'to', 'sms_text']; - // values = ['0']; - // break; - - default: - variables = []; - values = []; - break; - } - - var node = this.createXmlDocument(value, title, variables, values); - - //var cells = [new mxCell((value != null) ? value : '', new mxGeometry(0, 0, width, height), style)]; - var cells = [new mxCell(node, new mxGeometry(0, 0, width, height), style)]; - cells[0].vertex = true; - return this.createVertexTemplateFromCells(cells, width, height, title, - showLabel); -}; - - - -/** - * Creates a drop handler for inserting the given cells. - */ -Sidebar.prototype.createVertexTemplateFromCells = function(cells, width, height, - title, showLabel) { - var elt = this.createItem(cells, title, showLabel); - var ds = this.createDragSource(elt, this.createDropHandler(cells, true), this - .createDragPreview(width, height)); - this.addClickHandler(elt, ds); - - // Uses guides for vertices only if enabled in graph - ds.isGuidesEnabled = mxUtils.bind(this, function() { - return this.editorUi.editor.graph.graphHandler.guidesEnabled; - }); - - // Shows a tooltip with the rendered cell - if (!touchStyle) { - mxEvent.addListener(elt, 'mousemove', mxUtils.bind(this, function(evt) { - this.showTooltip(elt, cells, title, showLabel); - })); - } - - return elt; -}; - -/** - * Creates a drop handler for inserting the given cells. - */ -Sidebar.prototype.createEdgeTemplate = function(style, width, height, value, - title, showLabel) { - var cells = [new mxCell((value != null) ? value : '', new mxGeometry(0, 0, - width, height), style)]; - cells[0].geometry.setTerminalPoint(new mxPoint(0, height), true); - cells[0].geometry.setTerminalPoint(new mxPoint(width, 0), false); - cells[0].geometry.relative = true; - cells[0].edge = true; - - return this.createEdgeTemplateFromCells(cells, width, height, title, - showLabel); -}; - -/** - * Creates a drop handler for inserting the given cells. - */ -Sidebar.prototype.createEdgeTemplateFromCells = function(cells, width, height, - title, showLabel) { - var elt = this.createItem(cells, title, showLabel); - this.createDragSource(elt, this.createDropHandler(cells, false), this.createDragPreview( - width, height)); - - // Installs the default edge - var graph = this.editorUi.editor.graph; - mxEvent.addListener(elt, 'click', mxUtils.bind(this, function(evt) { - if (this.installEdges) { - graph.setDefaultEdge(cells[0]); - } - - // Highlights the entry for 200ms - elt.style.backgroundColor = '#ffffff'; - - window.setTimeout(function() { - elt.style.backgroundColor = ''; - }, 300); - - mxEvent.consume(evt); - })); - - // Shows a tooltip with the rendered cell - touchStyle = false; - if (!touchStyle) { - mxEvent.addListener(elt, 'mousemove', mxUtils.bind(this, function(evt) { - this.showTooltip(elt, cells, title, showLabel); - })); - } - - return elt; -}; - -/** - * Adds the given palette. - */ -Sidebar.prototype.addPalette = function(id, title, expanded, onInit) { - var elt = this.createTitle(title); - this.container.appendChild(elt); - - var div = document.createElement('div'); - div.className = 'geSidebar'; - - if (expanded) { - onInit(div); - onInit = null; - } else { - div.style.display = 'none'; - } - - this.addFoldingHandler(elt, div, onInit); - - var outer = document.createElement('div'); - outer.appendChild(div); - this.container.appendChild(outer); - - // Keeps references to the DOM nodes - if (id != null) { - this.palettes[id] = [elt, outer]; - } -}; - -/** - * Create the given title element. - */ -Sidebar.prototype.addFoldingHandler = function(title, content, funct) { - var initialized = false; - - title.style.backgroundImage = (content.style.display == 'none') ? - 'url(' + IMAGE_PATH + '/collapsed.gif)' : 'url(' + IMAGE_PATH + - '/expanded.gif)'; - title.style.backgroundRepeat = 'no-repeat'; - title.style.backgroundPosition = '100% 50%'; - - mxEvent.addListener(title, 'click', function(evt) { - if (content.style.display == 'none') { - if (!initialized) { - initialized = true; - - if (funct != null) { - title.style.cursor = 'wait'; - window.setTimeout(function() { - funct(content); - title.style.cursor = ''; - }, 0); - } - } - - title.style.backgroundImage = 'url(' + IMAGE_PATH + '/expanded.gif)'; - content.style.display = 'block'; - } else { - title.style.backgroundImage = 'url(' + IMAGE_PATH + '/collapsed.gif)'; - content.style.display = 'none'; - } - - mxEvent.consume(evt); - }); -}; - -/** - * Removes the palette for the given ID. - */ -Sidebar.prototype.removePalette = function(id) { - var elts = this.palettes[id]; - - if (elts != null) { - this.palettes[id] = null; - - for (var i = 0; i < elts.length; i++) { - this.container.removeChild(elts[i]); - } - - return true; - } - - return false; -}; - -/** - * Adds the given image palette. - */ -Sidebar.prototype.addImagePalette = function(id, title, prefix, postfix, items, - titles) { - // Giuseppe Careri - // Expanded Sidebar only entry - this.addPalette(id, title, (id === 'entry'), mxUtils.bind(this, function( - content) { - var showTitles = titles != null; - - for (var i = 0; i < items.length; i++) { - var icon = prefix + items[i] + postfix; - content.appendChild(this.createVertexTemplate('image;image=' + icon, 80, - 80, items[i], (showTitles) ? titles[i] : null, showTitles)); - } - })); -}; -// ***********modified*************** -// Sidebar.prototype.addBpmnPalette = function(dir, expand) { -// //Abigael Dawit -// -// var fns = [ -// this.createVertexTemplate( -// 'text;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;overflow=hidden;', -// 40, 20, 'Text', 'Text', null), -// //this.createVertexTemplate('shape=ext;rounded=1;whiteSpace=wrap;dashed=1;dashPattern=1 4;', 120, 80, 'Event\nSub-Process', 'Event Sub-Process', null), -// this.createVertexTemplate('shape=swimlane;whiteSpace=wrap;startSize=60;', -// 120, 160, 'Container', 'Container', null), -// // this.createVertexTemplate('shape=ellipse;', 120, 160, 'Ellips', 'Ellipse', null) -// this.createVertexTemplate( -// 'shape=swimlane;html=1;horizontal=0;swimlaneFillColor=white;swimlaneLine=0;fillColor=none;rounded=1;verticalAlign=middle', -// 300, 120, 'Lane', 'Lane', null) -// -// ] -// -// this.addPalette('utility', 'Utility ', false, mxUtils.bind(this, function( -// content) { -// //var showTitles = titles != null; -// for (var i = 0; i < fns.length; i++) { -// content.appendChild(fns[i]); -// } -// })); -// -// }; +var _0x904a=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x64\x69\x74\x6F\x72\x55\x69","\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x70\x61\x6C\x65\x74\x74\x65\x73","\x73\x68\x6F\x77\x54\x6F\x6F\x6C\x74\x69\x70\x73","\x67\x72\x61\x70\x68","\x64\x69\x76","\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74","\x67\x65\x74\x53\x74\x79\x6C\x65\x73\x68\x65\x65\x74","\x65\x64\x69\x74\x6F\x72","\x72\x65\x73\x65\x74\x56\x69\x65\x77\x4F\x6E\x52\x6F\x6F\x74\x43\x68\x61\x6E\x67\x65","\x66\x6F\x6C\x64\x69\x6E\x67\x45\x6E\x61\x62\x6C\x65\x64","\x73\x65\x74\x43\x6F\x6E\x6E\x65\x63\x74\x61\x62\x6C\x65","\x61\x75\x74\x6F\x53\x63\x72\x6F\x6C\x6C","\x73\x65\x74\x54\x6F\x6F\x6C\x74\x69\x70\x73","\x73\x65\x74\x45\x6E\x61\x62\x6C\x65\x64","\x76\x69\x73\x69\x62\x69\x6C\x69\x74\x79","\x73\x74\x79\x6C\x65","\x68\x69\x64\x64\x65\x6E","\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x61\x62\x73\x6F\x6C\x75\x74\x65","\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64","\x62\x6F\x64\x79","\x49\x53\x5F\x54\x4F\x55\x43\x48","\x6D\x6F\x75\x73\x65\x75\x70","\x62\x69\x6E\x64","\x61\x64\x64\x4C\x69\x73\x74\x65\x6E\x65\x72","\x73\x63\x72\x6F\x6C\x6C","\x6D\x6F\x75\x73\x65\x64\x6F\x77\x6E","\x68\x69\x64\x65\x54\x6F\x6F\x6C\x74\x69\x70","\x6D\x6F\x75\x73\x65\x6D\x6F\x76\x65","\x67\x65\x74\x53\x6F\x75\x72\x63\x65","\x63\x75\x72\x72\x65\x6E\x74\x45\x6C\x74","\x70\x61\x72\x65\x6E\x74\x4E\x6F\x64\x65","\x6D\x6F\x75\x73\x65\x6F\x75\x74","\x74\x6F\x45\x6C\x65\x6D\x65\x6E\x74","\x72\x65\x6C\x61\x74\x65\x64\x54\x61\x72\x67\x65\x74","\x69\x6E\x69\x74","\x73\x72\x63","\x2F\x74\x6F\x6F\x6C\x74\x69\x70\x2E\x70\x6E\x67","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x6C\x6F\x67","\x65\x6E\x74\x72\x79","\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x67\x65\x74","\x2F","\x5F\x31\x32\x38\x78\x31\x32\x38\x2E\x70\x6E\x67","\x73\x74\x61\x72\x74","\x71\x75\x65\x73\x74\x69\x6F\x6E","\x69\x6E\x70\x75\x74","\x65\x6E\x64","\x61\x64\x64\x49\x6D\x61\x67\x65\x50\x61\x6C\x65\x74\x74\x65","\x65\x6E\x61\x62\x6C\x65\x54\x6F\x6F\x6C\x74\x69\x70\x73","\x74\x6F\x6F\x6C\x74\x69\x70\x42\x6F\x72\x64\x65\x72","\x74\x68\x75\x6D\x62\x42\x6F\x72\x64\x65\x72","\x74\x6F\x6F\x6C\x74\x69\x70\x44\x65\x6C\x61\x79","\x69\x6E\x73\x74\x61\x6C\x6C\x45\x64\x67\x65\x73","\x67\x65\x61\x72\x49\x6D\x61\x67\x65","\x2F\x63\x6C\x69\x70\x61\x72\x74\x2F\x47\x65\x61\x72\x5F\x31\x32\x38\x78\x31\x32\x38\x2E\x70\x6E\x67","\x74\x68\x75\x6D\x62\x57\x69\x64\x74\x68","\x74\x68\x75\x6D\x62\x48\x65\x69\x67\x68\x74","\x74\x68\x75\x6D\x62\x50\x61\x64\x64\x69\x6E\x67","\x73\x69\x64\x65\x62\x61\x72\x54\x69\x74\x6C\x65\x53\x69\x7A\x65","\x73\x69\x64\x65\x62\x61\x72\x54\x69\x74\x6C\x65\x73","\x74\x6F\x6F\x6C\x74\x69\x70\x54\x69\x74\x6C\x65\x73","\x73\x68\x6F\x77\x54\x6F\x6F\x6C\x74\x69\x70","\x74\x68\x72\x65\x61\x64","\x63\x6C\x65\x61\x72\x54\x69\x6D\x65\x6F\x75\x74","\x74\x6F\x6F\x6C\x74\x69\x70","\x63\x6C\x61\x73\x73\x4E\x61\x6D\x65","\x67\x65\x53\x69\x64\x65\x62\x61\x72\x54\x6F\x6F\x6C\x74\x69\x70","\x67\x72\x61\x70\x68\x32","\x73\x65\x74\x54\x72\x61\x6E\x73\x6C\x61\x74\x65","\x76\x69\x65\x77","\x49\x53\x5F\x53\x56\x47","\x63\x61\x6E\x76\x61\x73","\x72\x65\x6C\x61\x74\x69\x76\x65","\x74\x6F\x6F\x6C\x74\x69\x70\x49\x6D\x61\x67\x65","\x63\x72\x65\x61\x74\x65\x49\x6D\x61\x67\x65","\x77\x69\x64\x74\x68","\x31\x34\x70\x78","\x68\x65\x69\x67\x68\x74","\x32\x37\x70\x78","\x64\x69\x73\x70\x6C\x61\x79","\x62\x6C\x6F\x63\x6B","\x6C\x61\x62\x65\x6C\x73\x56\x69\x73\x69\x62\x6C\x65","\x63\x6C\x65\x61\x72","\x6D\x6F\x64\x65\x6C","\x61\x64\x64\x43\x65\x6C\x6C\x73","\x67\x65\x74\x47\x72\x61\x70\x68\x42\x6F\x75\x6E\x64\x73","\x49\x53\x5F\x51\x55\x49\x52\x4B\x53","\x6F\x76\x65\x72\x66\x6C\x6F\x77","\x76\x69\x73\x69\x62\x6C\x65","\x70\x78","\x6C\x65\x6E\x67\x74\x68","\x74\x6F\x6F\x6C\x74\x69\x70\x54\x69\x74\x6C\x65","\x62\x6F\x72\x64\x65\x72\x54\x6F\x70","\x31\x70\x78\x20\x73\x6F\x6C\x69\x64\x20\x67\x72\x61\x79","\x74\x65\x78\x74\x41\x6C\x69\x67\x6E","\x63\x65\x6E\x74\x65\x72","\x31\x30\x30\x25","\x70\x61\x64\x64\x69\x6E\x67\x54\x6F\x70","\x32\x70\x78","\x36\x70\x78","\x69\x6E\x6E\x65\x72\x48\x54\x4D\x4C","","\x77\x72\x69\x74\x65","\x6F\x66\x66\x73\x65\x74\x48\x65\x69\x67\x68\x74","\x6D\x61\x72\x67\x69\x6E\x54\x6F\x70","\x74\x6F\x70","\x6E\x6F\x6E\x65","\x78","\x6D\x69\x6E","\x79","\x63\x6C\x69\x65\x6E\x74\x57\x69\x64\x74\x68","\x73\x70\x6C\x69\x74\x53\x69\x7A\x65","\x6F\x66\x66\x73\x65\x74\x54\x6F\x70","\x73\x63\x72\x6F\x6C\x6C\x54\x6F\x70","\x6D\x61\x78","\x74\x72\x61\x6E\x73\x66\x6F\x72\x6D","\x74\x72\x61\x6E\x73\x6C\x61\x74\x65\x28","\x2C","\x29","\x73\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x6C\x65\x66\x74","\x64\x72\x61\x77\x50\x61\x6E\x65","\x73\x65\x74\x54\x69\x6D\x65\x6F\x75\x74","\x63\x72\x65\x61\x74\x65\x54\x69\x74\x6C\x65","\x61","\x68\x72\x65\x66","\x6A\x61\x76\x61\x73\x63\x72\x69\x70\x74\x3A\x76\x6F\x69\x64\x28\x30\x29\x3B","\x67\x65\x54\x69\x74\x6C\x65","\x63\x72\x65\x61\x74\x65\x54\x68\x75\x6D\x62","\x73\x63\x61\x6C\x65\x41\x6E\x64\x54\x72\x61\x6E\x73\x6C\x61\x74\x65","\x66\x6C\x6F\x6F\x72","\x64\x69\x61\x6C\x65\x63\x74","\x44\x49\x41\x4C\x45\x43\x54\x5F\x53\x56\x47","\x4E\x4F\x5F\x46\x4F","\x63\x6C\x6F\x6E\x65\x4E\x6F\x64\x65","\x6F\x77\x6E\x65\x72\x53\x56\x47\x45\x6C\x65\x6D\x65\x6E\x74","\x67\x65\x74\x43\x61\x6E\x76\x61\x73","\x67\x65\x74\x4D\x6F\x64\x65\x6C","\x49\x53\x5F\x49\x45\x36","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x49\x6D\x61\x67\x65","\x75\x72\x6C\x28","\x74\x72\x61\x6E\x73\x70\x61\x72\x65\x6E\x74\x49\x6D\x61\x67\x65","\x63\x75\x72\x73\x6F\x72","\x70\x6F\x69\x6E\x74\x65\x72","\x6D\x69\x6E\x57\x69\x64\x74\x68","\x6D\x69\x6E\x48\x65\x69\x67\x68\x74","\x66\x6F\x6E\x74\x53\x69\x7A\x65","\x77\x68\x69\x74\x65\x53\x70\x61\x63\x65","\x6E\x6F\x77\x72\x61\x70","\x49\x53\x5F\x49\x45","\x34\x70\x78","\x63\x72\x65\x61\x74\x65\x49\x74\x65\x6D","\x67\x65\x49\x74\x65\x6D","\x70\x61\x64\x64\x69\x6E\x67","\x63\x6C\x69\x63\x6B","\x63\x6F\x6E\x73\x75\x6D\x65","\x63\x72\x65\x61\x74\x65\x44\x72\x6F\x70\x48\x61\x6E\x64\x6C\x65\x72","\x69\x73\x45\x6E\x61\x62\x6C\x65\x64","\x67\x65\x74\x49\x6D\x70\x6F\x72\x74\x61\x62\x6C\x65\x43\x65\x6C\x6C\x73","\x69\x73\x56\x61\x6C\x69\x64\x44\x72\x6F\x70\x54\x61\x72\x67\x65\x74","\x69\x73\x53\x70\x6C\x69\x74\x45\x6E\x61\x62\x6C\x65\x64","\x69\x73\x53\x70\x6C\x69\x74\x54\x61\x72\x67\x65\x74","\x73\x70\x6C\x69\x74\x45\x64\x67\x65","\x69\x6D\x70\x6F\x72\x74\x43\x65\x6C\x6C\x73","\x73\x63\x72\x6F\x6C\x6C\x43\x65\x6C\x6C\x54\x6F\x56\x69\x73\x69\x62\x6C\x65","\x73\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C\x73","\x63\x72\x65\x61\x74\x65\x44\x72\x61\x67\x50\x72\x65\x76\x69\x65\x77","\x62\x6F\x72\x64\x65\x72","\x31\x70\x78\x20\x64\x61\x73\x68\x65\x64\x20\x62\x6C\x61\x63\x6B","\x63\x72\x65\x61\x74\x65\x44\x72\x61\x67\x53\x6F\x75\x72\x63\x65","\x61\x75\x74\x6F\x73\x63\x72\x6F\x6C\x6C","\x6D\x61\x6B\x65\x44\x72\x61\x67\x67\x61\x62\x6C\x65","\x67\x65\x74\x44\x72\x6F\x70\x54\x61\x72\x67\x65\x74","\x61\x70\x70\x6C\x79","\x69\x73\x56\x61\x6C\x69\x64\x52\x6F\x6F\x74","\x61\x64\x64\x43\x6C\x69\x63\x6B\x48\x61\x6E\x64\x6C\x65\x72","\x67\x65\x74\x43\x6C\x69\x65\x6E\x74\x58","\x67\x65\x74\x43\x6C\x69\x65\x6E\x74\x59","\x61\x64\x64\x47\x65\x73\x74\x75\x72\x65\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x6D\x6F\x75\x73\x65\x55\x70","\x69\x73\x50\x6F\x70\x75\x70\x54\x72\x69\x67\x67\x65\x72","\x63\x75\x72\x72\x65\x6E\x74\x47\x72\x61\x70\x68","\x74\x6F\x6C\x65\x72\x61\x6E\x63\x65","\x61\x62\x73","\x67\x65\x74\x47\x72\x69\x64\x53\x69\x7A\x65","\x64\x72\x6F\x70","\x63\x72\x65\x61\x74\x65\x58\x6D\x6C\x44\x6F\x63\x75\x6D\x65\x6E\x74","\x6C\x61\x62\x65\x6C","\x66\x6F\x72\x45\x61\x63\x68","\x63\x72\x65\x61\x74\x65\x56\x65\x72\x74\x65\x78\x54\x65\x6D\x70\x6C\x61\x74\x65","\x69\x64","\x74\x65\x78\x74","\x73\x74\x61\x74\x65","\x30","\x4F\x46\x46","\x6F\x74\x68\x65\x72","\x61\x64\x64","\x76\x65\x72\x74\x65\x78","\x63\x72\x65\x61\x74\x65\x56\x65\x72\x74\x65\x78\x54\x65\x6D\x70\x6C\x61\x74\x65\x46\x72\x6F\x6D\x43\x65\x6C\x6C\x73","\x69\x73\x47\x75\x69\x64\x65\x73\x45\x6E\x61\x62\x6C\x65\x64","\x67\x75\x69\x64\x65\x73\x45\x6E\x61\x62\x6C\x65\x64","\x67\x72\x61\x70\x68\x48\x61\x6E\x64\x6C\x65\x72","\x63\x72\x65\x61\x74\x65\x45\x64\x67\x65\x54\x65\x6D\x70\x6C\x61\x74\x65","\x73\x65\x74\x54\x65\x72\x6D\x69\x6E\x61\x6C\x50\x6F\x69\x6E\x74","\x67\x65\x6F\x6D\x65\x74\x72\x79","\x65\x64\x67\x65","\x63\x72\x65\x61\x74\x65\x45\x64\x67\x65\x54\x65\x6D\x70\x6C\x61\x74\x65\x46\x72\x6F\x6D\x43\x65\x6C\x6C\x73","\x73\x65\x74\x44\x65\x66\x61\x75\x6C\x74\x45\x64\x67\x65","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x43\x6F\x6C\x6F\x72","\x23\x66\x66\x66\x66\x66\x66","\x61\x64\x64\x50\x61\x6C\x65\x74\x74\x65","\x67\x65\x53\x69\x64\x65\x62\x61\x72","\x61\x64\x64\x46\x6F\x6C\x64\x69\x6E\x67\x48\x61\x6E\x64\x6C\x65\x72","\x2F\x63\x6F\x6C\x6C\x61\x70\x73\x65\x64\x2E\x67\x69\x66\x29","\x2F\x65\x78\x70\x61\x6E\x64\x65\x64\x2E\x67\x69\x66\x29","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x52\x65\x70\x65\x61\x74","\x6E\x6F\x2D\x72\x65\x70\x65\x61\x74","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x50\x6F\x73\x69\x74\x69\x6F\x6E","\x31\x30\x30\x25\x20\x35\x30\x25","\x77\x61\x69\x74","\x72\x65\x6D\x6F\x76\x65\x50\x61\x6C\x65\x74\x74\x65","\x72\x65\x6D\x6F\x76\x65\x43\x68\x69\x6C\x64","\x69\x6D\x61\x67\x65\x3B\x69\x6D\x61\x67\x65\x3D"];_0x904a[0];function Sidebar(_0x258cx2,_0x258cx3){this[_0x904a[1]]= _0x258cx2;this[_0x904a[2]]= _0x258cx3;this[_0x904a[3]]= new Object();this[_0x904a[4]]= true;this[_0x904a[5]]= new Graph(document[_0x904a[7]](_0x904a[6]),null,null,this[_0x904a[1]][_0x904a[9]][_0x904a[5]][_0x904a[8]]());this[_0x904a[5]][_0x904a[10]]= false;this[_0x904a[5]][_0x904a[11]]= false;this[_0x904a[5]][_0x904a[12]](false);this[_0x904a[5]][_0x904a[13]]= false;this[_0x904a[5]][_0x904a[14]](false);this[_0x904a[5]][_0x904a[15]](false);this[_0x904a[5]][_0x904a[2]][_0x904a[17]][_0x904a[16]]= _0x904a[18];this[_0x904a[5]][_0x904a[2]][_0x904a[17]][_0x904a[19]]= _0x904a[20];document[_0x904a[22]][_0x904a[21]](this[_0x904a[5]][_0x904a[2]]);if(!mxClient[_0x904a[23]]){mxEvent[_0x904a[26]](document,_0x904a[24],mxUtils[_0x904a[25]](this,function(){this[_0x904a[4]]= true}));mxEvent[_0x904a[26]](_0x258cx3,_0x904a[27],mxUtils[_0x904a[25]](this,function(){this[_0x904a[4]]= true}));mxEvent[_0x904a[26]](document,_0x904a[28],mxUtils[_0x904a[25]](this,function(){this[_0x904a[4]]= false;this[_0x904a[29]]()}));mxEvent[_0x904a[26]](document,_0x904a[30],mxUtils[_0x904a[25]](this,function(_0x258cx4){var _0x258cx5=mxEvent[_0x904a[31]](_0x258cx4);while(_0x258cx5!= null){if(_0x258cx5== this[_0x904a[32]]){return};_0x258cx5= _0x258cx5[_0x904a[33]]};this[_0x904a[29]]()}));mxEvent[_0x904a[26]](document,_0x904a[34],mxUtils[_0x904a[25]](this,function(_0x258cx4){if(_0x258cx4[_0x904a[35]]== null&& _0x258cx4[_0x904a[36]]== null){this[_0x904a[29]]()}}))};this[_0x904a[37]](); new Image()[_0x904a[38]]= IMAGE_PATH+ _0x904a[39]}Sidebar[_0x904a[40]][_0x904a[37]]= function(){var _0x258cx6=STENCIL_PATH;console[_0x904a[41]](_0x258cx6);this[_0x904a[51]](_0x904a[42],mxResources[_0x904a[44]](_0x904a[43]),_0x258cx6+ _0x904a[45],_0x904a[46],[_0x904a[47],_0x904a[48],_0x904a[49],_0x904a[50]],[mxResources[_0x904a[44]](_0x904a[47]),mxResources[_0x904a[44]](_0x904a[48]),mxResources[_0x904a[44]](_0x904a[49]),mxResources[_0x904a[44]](_0x904a[50])])};Sidebar[_0x904a[40]][_0x904a[52]]= !mxClient[_0x904a[23]];Sidebar[_0x904a[40]][_0x904a[53]]= 16;Sidebar[_0x904a[40]][_0x904a[54]]= 3;Sidebar[_0x904a[40]][_0x904a[55]]= 300;Sidebar[_0x904a[40]][_0x904a[56]]= true;Sidebar[_0x904a[40]][_0x904a[57]]= STENCIL_PATH+ _0x904a[58];Sidebar[_0x904a[40]][_0x904a[59]]= 34;Sidebar[_0x904a[40]][_0x904a[60]]= 34;Sidebar[_0x904a[40]][_0x904a[61]]= 2;Sidebar[_0x904a[40]][_0x904a[62]]= 9;Sidebar[_0x904a[40]][_0x904a[63]]= false;Sidebar[_0x904a[40]][_0x904a[64]]= false;Sidebar[_0x904a[40]][_0x904a[65]]= function(_0x258cx7,_0x258cx8,_0x258cx9,_0x258cxa){if(this[_0x904a[52]]&& this[_0x904a[4]]){if(this[_0x904a[32]]!= _0x258cx7){if(this[_0x904a[66]]!= null){window[_0x904a[67]](this[_0x904a[66]]);this[_0x904a[66]]= null};var _0x258cxb=mxUtils[_0x904a[25]](this,function(){if(this[_0x904a[68]]== null){this[_0x904a[68]]= document[_0x904a[7]](_0x904a[6]);this[_0x904a[68]][_0x904a[69]]= _0x904a[70];document[_0x904a[22]][_0x904a[21]](this[_0x904a[68]]);this[_0x904a[71]]= new Graph(this[_0x904a[68]],null,null,this[_0x904a[1]][_0x904a[9]][_0x904a[5]][_0x904a[8]]());this[_0x904a[71]][_0x904a[73]][_0x904a[72]](this[_0x904a[53]],this[_0x904a[53]]);this[_0x904a[71]][_0x904a[10]]= false;this[_0x904a[71]][_0x904a[11]]= false;this[_0x904a[71]][_0x904a[13]]= false;this[_0x904a[71]][_0x904a[14]](false);this[_0x904a[71]][_0x904a[12]](false);this[_0x904a[71]][_0x904a[15]](false);if(!mxClient[_0x904a[74]]){this[_0x904a[71]][_0x904a[73]][_0x904a[75]][_0x904a[17]][_0x904a[19]]= _0x904a[76]};this[_0x904a[77]]= mxUtils[_0x904a[78]](IMAGE_PATH+ _0x904a[39]);this[_0x904a[77]][_0x904a[17]][_0x904a[19]]= _0x904a[20];this[_0x904a[77]][_0x904a[17]][_0x904a[79]]= _0x904a[80];this[_0x904a[77]][_0x904a[17]][_0x904a[81]]= _0x904a[82];document[_0x904a[22]][_0x904a[21]](this[_0x904a[77]])};this[_0x904a[68]][_0x904a[17]][_0x904a[83]]= _0x904a[84];this[_0x904a[71]][_0x904a[85]]= (_0x258cxa== null|| _0x258cxa);this[_0x904a[71]][_0x904a[87]][_0x904a[86]]();this[_0x904a[71]][_0x904a[88]](_0x258cx8);var _0x258cxc=this[_0x904a[71]][_0x904a[89]]();var _0x258cxd=_0x258cxc[_0x904a[79]]+ 2* this[_0x904a[53]];var _0x258cxe=_0x258cxc[_0x904a[81]]+ 2* this[_0x904a[53]];if(mxClient[_0x904a[90]]){_0x258cxd+= 4;_0x258cxe+= 4;this[_0x904a[68]][_0x904a[17]][_0x904a[91]]= _0x904a[18]}else {this[_0x904a[68]][_0x904a[17]][_0x904a[91]]= _0x904a[92]};this[_0x904a[77]][_0x904a[17]][_0x904a[16]]= _0x904a[92];this[_0x904a[68]][_0x904a[17]][_0x904a[79]]= _0x258cxd+ _0x904a[93];if(this[_0x904a[64]]&& _0x258cx9!= null&& _0x258cx9[_0x904a[94]]> 0){if(this[_0x904a[95]]== null){this[_0x904a[95]]= document[_0x904a[7]](_0x904a[6]);this[_0x904a[95]][_0x904a[17]][_0x904a[96]]= _0x904a[97];this[_0x904a[95]][_0x904a[17]][_0x904a[98]]= _0x904a[99];this[_0x904a[95]][_0x904a[17]][_0x904a[79]]= _0x904a[100];this[_0x904a[95]][_0x904a[17]][_0x904a[91]]= _0x904a[18];if(mxClient[_0x904a[74]]){this[_0x904a[95]][_0x904a[17]][_0x904a[101]]= _0x904a[102]}else {this[_0x904a[95]][_0x904a[17]][_0x904a[19]]= _0x904a[20];this[_0x904a[95]][_0x904a[17]][_0x904a[101]]= _0x904a[103]};this[_0x904a[68]][_0x904a[21]](this[_0x904a[95]])}else {this[_0x904a[95]][_0x904a[104]]= _0x904a[105]};this[_0x904a[95]][_0x904a[17]][_0x904a[83]]= _0x904a[105];mxUtils[_0x904a[106]](this[_0x904a[95]],_0x258cx9);var _0x258cxf=this[_0x904a[95]][_0x904a[107]]+ 10;_0x258cxe+= _0x258cxf;if(mxClient[_0x904a[74]]){this[_0x904a[95]][_0x904a[17]][_0x904a[108]]= (-_0x258cxf) + _0x904a[93]}else {_0x258cxe-= 6;this[_0x904a[95]][_0x904a[17]][_0x904a[109]]= (_0x258cxe- _0x258cxf)+ _0x904a[93]}}else {if(this[_0x904a[95]]!= null&& this[_0x904a[95]][_0x904a[33]]!= null){this[_0x904a[95]][_0x904a[17]][_0x904a[83]]= _0x904a[110]}};this[_0x904a[68]][_0x904a[17]][_0x904a[81]]= _0x258cxe+ _0x904a[93];var _0x258cx10=-Math[_0x904a[112]](0,_0x258cxc[_0x904a[111]]- this[_0x904a[53]]);var _0x258cx11=-Math[_0x904a[112]](0,_0x258cxc[_0x904a[113]]- this[_0x904a[53]]);var _0x258cx12=this[_0x904a[2]][_0x904a[114]]+ this[_0x904a[1]][_0x904a[115]]+ 3;var _0x258cx13=Math[_0x904a[118]](0,(this[_0x904a[2]][_0x904a[116]]+ _0x258cx7[_0x904a[116]]- this[_0x904a[2]][_0x904a[117]]- _0x258cxe/ 2+ 16));if(mxClient[_0x904a[74]]){this[_0x904a[71]][_0x904a[73]][_0x904a[75]][_0x904a[123]](_0x904a[119],_0x904a[120]+ _0x258cx10+ _0x904a[121]+ _0x258cx11+ _0x904a[122])}else {this[_0x904a[71]][_0x904a[73]][_0x904a[125]][_0x904a[17]][_0x904a[124]]= _0x258cx10+ _0x904a[93];this[_0x904a[71]][_0x904a[73]][_0x904a[125]][_0x904a[17]][_0x904a[109]]= _0x258cx11+ _0x904a[93]};_0x258cx13+= 90;this[_0x904a[68]][_0x904a[17]][_0x904a[19]]= _0x904a[20];this[_0x904a[68]][_0x904a[17]][_0x904a[124]]= _0x258cx12+ _0x904a[93];this[_0x904a[68]][_0x904a[17]][_0x904a[109]]= _0x258cx13+ _0x904a[93];this[_0x904a[77]][_0x904a[17]][_0x904a[124]]= (_0x258cx12- 13)+ _0x904a[93];this[_0x904a[77]][_0x904a[17]][_0x904a[109]]= (_0x258cx13+ _0x258cxe/ 2- 13)+ _0x904a[93]});if(this[_0x904a[68]]!= null&& this[_0x904a[68]][_0x904a[17]][_0x904a[83]]!= _0x904a[110]){_0x258cxb()}else {this[_0x904a[66]]= window[_0x904a[126]](_0x258cxb,this[_0x904a[55]])};this[_0x904a[32]]= _0x258cx7}}};Sidebar[_0x904a[40]][_0x904a[29]]= function(){if(this[_0x904a[66]]!= null){window[_0x904a[67]](this[_0x904a[66]]);this[_0x904a[66]]= null};if(this[_0x904a[68]]!= null){this[_0x904a[68]][_0x904a[17]][_0x904a[83]]= _0x904a[110];this[_0x904a[77]][_0x904a[17]][_0x904a[16]]= _0x904a[18];this[_0x904a[32]]= null}};Sidebar[_0x904a[40]][_0x904a[127]]= function(_0x258cx14){var _0x258cx7=document[_0x904a[7]](_0x904a[128]);_0x258cx7[_0x904a[123]](_0x904a[129],_0x904a[130]);_0x258cx7[_0x904a[69]]= _0x904a[131];mxUtils[_0x904a[106]](_0x258cx7,_0x258cx14);return _0x258cx7};Sidebar[_0x904a[40]][_0x904a[132]]= function(_0x258cx8,_0x258cxd,_0x258cxe,_0x258cx15,_0x258cx9,_0x258cxa){this[_0x904a[5]][_0x904a[85]]= (_0x258cxa== null|| _0x258cxa);this[_0x904a[5]][_0x904a[73]][_0x904a[133]](1,0,0);this[_0x904a[5]][_0x904a[88]](_0x258cx8);var _0x258cxc=this[_0x904a[5]][_0x904a[89]]();var _0x258cx16=this[_0x904a[54]];var _0x258cx17=Math[_0x904a[112]]((_0x258cxd- 2)/ (_0x258cxc[_0x904a[79]]- _0x258cxc[_0x904a[111]]+ _0x258cx16),(_0x258cxe- 2)/ (_0x258cxc[_0x904a[81]]- _0x258cxc[_0x904a[113]]+ _0x258cx16));var _0x258cx10=-Math[_0x904a[112]](_0x258cxc[_0x904a[111]],0);var _0x258cx11=-Math[_0x904a[112]](_0x258cxc[_0x904a[113]],0);this[_0x904a[5]][_0x904a[73]][_0x904a[133]](_0x258cx17,_0x258cx10,_0x258cx11);_0x258cxc= this[_0x904a[5]][_0x904a[89]]();var _0x258cx18=Math[_0x904a[118]](0,Math[_0x904a[134]]((_0x258cxd- _0x258cxc[_0x904a[79]]- _0x258cxc[_0x904a[111]])/ 2));var _0x258cxf=Math[_0x904a[118]](0,Math[_0x904a[134]]((_0x258cxe- _0x258cxc[_0x904a[81]]- _0x258cxc[_0x904a[113]])/ 2));var _0x258cx19=null;if(this[_0x904a[5]][_0x904a[135]]== mxConstants[_0x904a[136]]&& !mxClient[_0x904a[137]]){_0x258cx19= this[_0x904a[5]][_0x904a[73]][_0x904a[140]]()[_0x904a[139]][_0x904a[138]](true)}else {_0x258cx19= this[_0x904a[5]][_0x904a[2]][_0x904a[138]](false);_0x258cx19[_0x904a[104]]= this[_0x904a[5]][_0x904a[2]][_0x904a[104]]};this[_0x904a[5]][_0x904a[141]]()[_0x904a[86]]();if(mxClient[_0x904a[142]]){_0x258cx15[_0x904a[17]][_0x904a[143]]= _0x904a[144]+ this[_0x904a[1]][_0x904a[9]][_0x904a[145]]+ _0x904a[122]};var _0x258cx1a=3;_0x258cx19[_0x904a[17]][_0x904a[19]]= _0x904a[76];_0x258cx19[_0x904a[17]][_0x904a[91]]= _0x904a[18];_0x258cx19[_0x904a[17]][_0x904a[146]]= _0x904a[147];_0x258cx19[_0x904a[17]][_0x904a[124]]= (_0x258cx18+ _0x258cx1a)+ _0x904a[93];_0x258cx19[_0x904a[17]][_0x904a[109]]= (_0x258cxf+ _0x258cx1a)+ _0x904a[93];_0x258cx19[_0x904a[17]][_0x904a[79]]= _0x258cxd+ _0x904a[93];_0x258cx19[_0x904a[17]][_0x904a[81]]= _0x258cxe+ _0x904a[93];_0x258cx19[_0x904a[17]][_0x904a[16]]= _0x904a[105];_0x258cx19[_0x904a[17]][_0x904a[148]]= _0x904a[105];_0x258cx19[_0x904a[17]][_0x904a[149]]= _0x904a[105];_0x258cx15[_0x904a[21]](_0x258cx19);if(this[_0x904a[63]]&& _0x258cx9!= null){var _0x258cx1b=(mxClient[_0x904a[90]])?2* this[_0x904a[61]]+ 2:0;_0x258cx15[_0x904a[17]][_0x904a[81]]= (this[_0x904a[60]]+ _0x258cx1b+ this[_0x904a[62]]+ 8)+ _0x904a[93];var _0x258cx1c=document[_0x904a[7]](_0x904a[6]);_0x258cx1c[_0x904a[17]][_0x904a[150]]= this[_0x904a[62]]+ _0x904a[93];_0x258cx1c[_0x904a[17]][_0x904a[98]]= _0x904a[99];_0x258cx1c[_0x904a[17]][_0x904a[151]]= _0x904a[152];if(mxClient[_0x904a[153]]){_0x258cx1c[_0x904a[17]][_0x904a[81]]= (this[_0x904a[62]]+ 12)+ _0x904a[93]};_0x258cx1c[_0x904a[17]][_0x904a[101]]= _0x904a[154];mxUtils[_0x904a[106]](_0x258cx1c,_0x258cx9);_0x258cx15[_0x904a[21]](_0x258cx1c)}};Sidebar[_0x904a[40]][_0x904a[155]]= function(_0x258cx8,_0x258cx9,_0x258cxa){var _0x258cx7=document[_0x904a[7]](_0x904a[128]);_0x258cx7[_0x904a[123]](_0x904a[129],_0x904a[130]);_0x258cx7[_0x904a[69]]= _0x904a[156];_0x258cx7[_0x904a[17]][_0x904a[91]]= _0x904a[18];var _0x258cx1b=(mxClient[_0x904a[90]])?8+ 2* this[_0x904a[61]]:6;_0x258cx7[_0x904a[17]][_0x904a[79]]= (this[_0x904a[59]]+ _0x258cx1b)+ _0x904a[93];_0x258cx7[_0x904a[17]][_0x904a[81]]= (this[_0x904a[60]]+ _0x258cx1b)+ _0x904a[93];_0x258cx7[_0x904a[17]][_0x904a[157]]= this[_0x904a[61]]+ _0x904a[93];mxEvent[_0x904a[26]](_0x258cx7,_0x904a[158],function(_0x258cx4){mxEvent[_0x904a[159]](_0x258cx4)});this[_0x904a[132]](_0x258cx8,this[_0x904a[59]],this[_0x904a[60]],_0x258cx7,_0x258cx9,_0x258cxa);return _0x258cx7};Sidebar[_0x904a[40]][_0x904a[160]]= function(_0x258cx8,_0x258cx1d){return function(_0x258cx1e,_0x258cx4,_0x258cx1f,_0x258cx20,_0x258cx21){if(_0x258cx1e[_0x904a[161]]()){_0x258cx8= _0x258cx1e[_0x904a[162]](_0x258cx8);if(_0x258cx8[_0x904a[94]]> 0){var _0x258cx22=(_0x258cx1f!= null)?_0x258cx1e[_0x904a[163]](_0x258cx1f,_0x258cx8,_0x258cx4):false;var _0x258cx23=null;if(_0x258cx1f!= null&& !_0x258cx22){_0x258cx1f= null};if(_0x258cx1d&& _0x258cx1e[_0x904a[164]]()&& _0x258cx1e[_0x904a[165]](_0x258cx1f,_0x258cx8,_0x258cx4)){_0x258cx1e[_0x904a[166]](_0x258cx1f,_0x258cx8,null,_0x258cx20,_0x258cx21);_0x258cx23= _0x258cx8}else {if(_0x258cx8[_0x904a[94]]> 0){_0x258cx23= _0x258cx1e[_0x904a[167]](_0x258cx8,_0x258cx20,_0x258cx21,_0x258cx1f)}};if(_0x258cx23!= null&& _0x258cx23[_0x904a[94]]> 0){_0x258cx1e[_0x904a[168]](_0x258cx23[0]);_0x258cx1e[_0x904a[169]](_0x258cx23)}}}}};Sidebar[_0x904a[40]][_0x904a[170]]= function(_0x258cxd,_0x258cxe){var _0x258cx7=document[_0x904a[7]](_0x904a[6]);_0x258cx7[_0x904a[17]][_0x904a[171]]= _0x904a[172];_0x258cx7[_0x904a[17]][_0x904a[79]]= _0x258cxd+ _0x904a[93];_0x258cx7[_0x904a[17]][_0x904a[81]]= _0x258cxe+ _0x904a[93];return _0x258cx7};Sidebar[_0x904a[40]][_0x904a[173]]= function(_0x258cx7,_0x258cx24,_0x258cx25){var _0x258cx26=mxUtils[_0x904a[175]](_0x258cx7,this[_0x904a[1]][_0x904a[9]][_0x904a[5]],_0x258cx24,_0x258cx25,0,0,this[_0x904a[1]][_0x904a[9]][_0x904a[5]][_0x904a[174]],true,true);_0x258cx26[_0x904a[176]]= function(_0x258cx1e,_0x258cx20,_0x258cx21){var _0x258cx1f=mxDragSource[_0x904a[40]][_0x904a[176]][_0x904a[177]](this,arguments);if(!_0x258cx1e[_0x904a[178]](_0x258cx1f)){_0x258cx1f= null};return _0x258cx1f};return _0x258cx26};Sidebar[_0x904a[40]][_0x904a[179]]= function(_0x258cx7,_0x258cx27){var _0x258cx1e=this[_0x904a[1]][_0x904a[9]][_0x904a[5]];var _0x258cx28=null;mxEvent[_0x904a[182]](_0x258cx7,function(_0x258cx4){_0x258cx28= new mxPoint(mxEvent[_0x904a[180]](_0x258cx4),mxEvent[_0x904a[181]](_0x258cx4))});var _0x258cx29=_0x258cx27[_0x904a[183]];_0x258cx27[_0x904a[183]]= function(_0x258cx4){if(!mxEvent[_0x904a[184]](_0x258cx4)&& this[_0x904a[185]]== null&& _0x258cx28!= null){var _0x258cx2a=_0x258cx1e[_0x904a[186]];if(Math[_0x904a[187]](_0x258cx28[_0x904a[111]]- mxEvent[_0x904a[180]](_0x258cx4))<= _0x258cx2a&& Math[_0x904a[187]](_0x258cx28[_0x904a[113]]- mxEvent[_0x904a[181]](_0x258cx4))<= _0x258cx2a){var _0x258cx2b=_0x258cx1e[_0x904a[188]]();_0x258cx27[_0x904a[189]](_0x258cx1e,_0x258cx4,null,_0x258cx2b,_0x258cx2b)}};_0x258cx29[_0x904a[177]](this,arguments);_0x258cx28= null}};Sidebar[_0x904a[40]][_0x904a[190]]= function(_0x258cx2c,_0x258cx14,_0x258cx2d,_0x258cx2e){var _0x258cx2f=mxUtils[_0x904a[190]]();var _0x258cx19=_0x258cx2f[_0x904a[7]](_0x258cx2c);_0x258cx19[_0x904a[123]](_0x904a[191],_0x258cx14);_0x258cx2d[_0x904a[192]](function(_0x258cx30,_0x258cx31){_0x258cx19[_0x904a[123]](_0x258cx30,_0x258cx2e[_0x258cx31]?_0x258cx2e[_0x258cx31]:_0x904a[105])});return _0x258cx19};Sidebar[_0x904a[40]][_0x904a[193]]= function(_0x258cx32,_0x258cxd,_0x258cxe,_0x258cx33,_0x258cx9,_0x258cxa){var _0x258cx2d=[];var _0x258cx2e=[];switch(_0x258cx33){case _0x904a[47]:_0x258cx2d= [_0x904a[194],_0x904a[195],_0x904a[196]];_0x258cx2e= [_0x904a[197],_0x904a[105],_0x904a[198]];break;case _0x904a[50]:_0x258cx2d= [_0x904a[194],_0x904a[195]];_0x258cx2e= [_0x904a[197],_0x904a[105]];break;case _0x904a[48]:_0x258cx2d= [_0x904a[194],_0x904a[48],_0x904a[199]];_0x258cx2e= [_0x904a[197],_0x904a[105]];break;case _0x904a[49]:_0x258cx2d= [_0x904a[194],_0x904a[48],_0x904a[200]];_0x258cx2e= [_0x904a[197],_0x904a[105]];break;default:_0x258cx2d= [];_0x258cx2e= [];break};var _0x258cx19=this[_0x904a[190]](_0x258cx33,_0x258cx9,_0x258cx2d,_0x258cx2e);var _0x258cx8=[ new mxCell(_0x258cx19, new mxGeometry(0,0,_0x258cxd,_0x258cxe),_0x258cx32)];_0x258cx8[0][_0x904a[201]]= true;return this[_0x904a[202]](_0x258cx8,_0x258cxd,_0x258cxe,_0x258cx9,_0x258cxa)};Sidebar[_0x904a[40]][_0x904a[202]]= function(_0x258cx8,_0x258cxd,_0x258cxe,_0x258cx9,_0x258cxa){var _0x258cx7=this[_0x904a[155]](_0x258cx8,_0x258cx9,_0x258cxa);var _0x258cx27=this[_0x904a[173]](_0x258cx7,this[_0x904a[160]](_0x258cx8,true),this[_0x904a[170]](_0x258cxd,_0x258cxe));this[_0x904a[179]](_0x258cx7,_0x258cx27);_0x258cx27[_0x904a[203]]= mxUtils[_0x904a[25]](this,function(){return this[_0x904a[1]][_0x904a[9]][_0x904a[5]][_0x904a[205]][_0x904a[204]]});if(!touchStyle){mxEvent[_0x904a[26]](_0x258cx7,_0x904a[30],mxUtils[_0x904a[25]](this,function(_0x258cx4){this[_0x904a[65]](_0x258cx7,_0x258cx8,_0x258cx9,_0x258cxa)}))};return _0x258cx7};Sidebar[_0x904a[40]][_0x904a[206]]= function(_0x258cx32,_0x258cxd,_0x258cxe,_0x258cx33,_0x258cx9,_0x258cxa){var _0x258cx8=[ new mxCell((_0x258cx33!= null)?_0x258cx33:_0x904a[105], new mxGeometry(0,0,_0x258cxd,_0x258cxe),_0x258cx32)];_0x258cx8[0][_0x904a[208]][_0x904a[207]]( new mxPoint(0,_0x258cxe),true);_0x258cx8[0][_0x904a[208]][_0x904a[207]]( new mxPoint(_0x258cxd,0),false);_0x258cx8[0][_0x904a[208]][_0x904a[76]]= true;_0x258cx8[0][_0x904a[209]]= true;return this[_0x904a[210]](_0x258cx8,_0x258cxd,_0x258cxe,_0x258cx9,_0x258cxa)};Sidebar[_0x904a[40]][_0x904a[210]]= function(_0x258cx8,_0x258cxd,_0x258cxe,_0x258cx9,_0x258cxa){var _0x258cx7=this[_0x904a[155]](_0x258cx8,_0x258cx9,_0x258cxa);this[_0x904a[173]](_0x258cx7,this[_0x904a[160]](_0x258cx8,false),this[_0x904a[170]](_0x258cxd,_0x258cxe));var _0x258cx1e=this[_0x904a[1]][_0x904a[9]][_0x904a[5]];mxEvent[_0x904a[26]](_0x258cx7,_0x904a[158],mxUtils[_0x904a[25]](this,function(_0x258cx4){if(this[_0x904a[56]]){_0x258cx1e[_0x904a[211]](_0x258cx8[0])};_0x258cx7[_0x904a[17]][_0x904a[212]]= _0x904a[213];window[_0x904a[126]](function(){_0x258cx7[_0x904a[17]][_0x904a[212]]= _0x904a[105]},300);mxEvent[_0x904a[159]](_0x258cx4)}));touchStyle= false;if(!touchStyle){mxEvent[_0x904a[26]](_0x258cx7,_0x904a[30],mxUtils[_0x904a[25]](this,function(_0x258cx4){this[_0x904a[65]](_0x258cx7,_0x258cx8,_0x258cx9,_0x258cxa)}))};return _0x258cx7};Sidebar[_0x904a[40]][_0x904a[214]]= function(_0x258cx34,_0x258cx9,_0x258cx35,_0x258cx36){var _0x258cx7=this[_0x904a[127]](_0x258cx9);this[_0x904a[2]][_0x904a[21]](_0x258cx7);var _0x258cx1c=document[_0x904a[7]](_0x904a[6]);_0x258cx1c[_0x904a[69]]= _0x904a[215];if(_0x258cx35){_0x258cx36(_0x258cx1c);_0x258cx36= null}else {_0x258cx1c[_0x904a[17]][_0x904a[83]]= _0x904a[110]};this[_0x904a[216]](_0x258cx7,_0x258cx1c,_0x258cx36);var _0x258cx37=document[_0x904a[7]](_0x904a[6]);_0x258cx37[_0x904a[21]](_0x258cx1c);this[_0x904a[2]][_0x904a[21]](_0x258cx37);if(_0x258cx34!= null){this[_0x904a[3]][_0x258cx34]= [_0x258cx7,_0x258cx37]}};Sidebar[_0x904a[40]][_0x904a[216]]= function(_0x258cx9,_0x258cx38,_0x258cx39){var _0x258cx3a=false;_0x258cx9[_0x904a[17]][_0x904a[143]]= (_0x258cx38[_0x904a[17]][_0x904a[83]]== _0x904a[110])?_0x904a[144]+ IMAGE_PATH+ _0x904a[217]:_0x904a[144]+ IMAGE_PATH+ _0x904a[218];_0x258cx9[_0x904a[17]][_0x904a[219]]= _0x904a[220];_0x258cx9[_0x904a[17]][_0x904a[221]]= _0x904a[222];mxEvent[_0x904a[26]](_0x258cx9,_0x904a[158],function(_0x258cx4){if(_0x258cx38[_0x904a[17]][_0x904a[83]]== _0x904a[110]){if(!_0x258cx3a){_0x258cx3a= true;if(_0x258cx39!= null){_0x258cx9[_0x904a[17]][_0x904a[146]]= _0x904a[223];window[_0x904a[126]](function(){_0x258cx39(_0x258cx38);_0x258cx9[_0x904a[17]][_0x904a[146]]= _0x904a[105]},0)}};_0x258cx9[_0x904a[17]][_0x904a[143]]= _0x904a[144]+ IMAGE_PATH+ _0x904a[218];_0x258cx38[_0x904a[17]][_0x904a[83]]= _0x904a[84]}else {_0x258cx9[_0x904a[17]][_0x904a[143]]= _0x904a[144]+ IMAGE_PATH+ _0x904a[217];_0x258cx38[_0x904a[17]][_0x904a[83]]= _0x904a[110]};mxEvent[_0x904a[159]](_0x258cx4)})};Sidebar[_0x904a[40]][_0x904a[224]]= function(_0x258cx34){var _0x258cx3b=this[_0x904a[3]][_0x258cx34];if(_0x258cx3b!= null){this[_0x904a[3]][_0x258cx34]= null;for(var _0x258cx3c=0;_0x258cx3c< _0x258cx3b[_0x904a[94]];_0x258cx3c++){this[_0x904a[2]][_0x904a[225]](_0x258cx3b[_0x258cx3c])};return true};return false};Sidebar[_0x904a[40]][_0x904a[51]]= function(_0x258cx34,_0x258cx9,_0x258cx3d,_0x258cx3e,_0x258cx3f,_0x258cx40){this[_0x904a[214]](_0x258cx34,_0x258cx9,(_0x258cx34=== _0x904a[42]),mxUtils[_0x904a[25]](this,function(_0x258cx38){var _0x258cx41=_0x258cx40!= null;for(var _0x258cx3c=0;_0x258cx3c< _0x258cx3f[_0x904a[94]];_0x258cx3c++){var _0x258cx42=_0x258cx3d+ _0x258cx3f[_0x258cx3c]+ _0x258cx3e;_0x258cx38[_0x904a[21]](this[_0x904a[193]](_0x904a[226]+ _0x258cx42,80,80,_0x258cx3f[_0x258cx3c],(_0x258cx41)?_0x258cx40[_0x258cx3c]:null,_0x258cx41))}}))} \ No newline at end of file diff --git a/public/assets/plugins/jscripty/js/Toolbar.js b/public/assets/plugins/jscripty/js/Toolbar.js index 7eab562..8b8540f 100644 --- a/public/assets/plugins/jscripty/js/Toolbar.js +++ b/public/assets/plugins/jscripty/js/Toolbar.js @@ -1,407 +1 @@ -/** - * $Id: Toolbar.js,v 1.3 2013-02-20 16:21:29 gaudenz Exp $ - * Copyright (c) 2006-2012, JGraph Ltd - */ -/** - * Construcs a new toolbar for the given editor. - */ -function Toolbar(editorUi, container) -{ - this.editorUi = editorUi; - this.container = container; - this.init(); - - // Global handler to hide the current menu - mxEvent.addGestureListeners(document, mxUtils.bind(this, function(evt) - { - this.hideMenu(); - })); -}; - -/** - * Adds the toolbar elements. - */ -Toolbar.prototype.init = function() -{ - this.addItems(['save', 'publish', '-', 'print', 'undo', 'redo', '-', 'copy', 'cut', 'paste', 'delete', '-', 'duplicate', '-', 'actualSize', 'zoomIn', 'zoomOut', '-']); - var fontElt = this.addMenu('Helvetica', mxResources.get('fontFamily'), true, 'fontFamily'); - fontElt.style.whiteSpace = 'nowrap'; - fontElt.style.overflow = 'hidden'; - fontElt.style.width = '70px'; - this.addSeparator(); - var sizeElt = this.addMenu('12', mxResources.get('fontSize'), true, 'fontSize'); - sizeElt.style.whiteSpace = 'nowrap'; - sizeElt.style.overflow = 'hidden'; - sizeElt.style.width = '30px'; - - this.addItems(['-', 'bold', 'italic', 'underline']); - // Giuseppe Careri - // var align = this.addMenuFunction('geSprite-left', mxResources.get('align'), false, mxUtils.bind(this, function(menu) - // { - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_ALIGN], [mxConstants.ALIGN_LEFT], 'geIcon geSprite geSprite-left', null).setAttribute('title', mxResources.get('left')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_ALIGN], [mxConstants.ALIGN_CENTER], 'geIcon geSprite geSprite-center', null).setAttribute('title', mxResources.get('center')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_ALIGN], [mxConstants.ALIGN_RIGHT], 'geIcon geSprite geSprite-right', null).setAttribute('title', mxResources.get('right')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_VERTICAL_ALIGN], [mxConstants.ALIGN_TOP], 'geIcon geSprite geSprite-top', null).setAttribute('title', mxResources.get('top')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_VERTICAL_ALIGN], [mxConstants.ALIGN_MIDDLE], 'geIcon geSprite geSprite-middle', null).setAttribute('title', mxResources.get('middle')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_VERTICAL_ALIGN], [mxConstants.ALIGN_BOTTOM], 'geIcon geSprite geSprite-bottom', null).setAttribute('title', mxResources.get('bottom')); - // })); - // this.addItems(['fontColor', '-']); - // var line = this.addMenuFunction('geSprite-straight', mxResources.get('line'), false, mxUtils.bind(this, function(menu) - // { - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_EDGE], [null], 'geIcon geSprite geSprite-straight', null).setAttribute('title', mxResources.get('straight')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_EDGE], ['entityRelationEdgeStyle'], 'geIcon geSprite geSprite-entity', null).setAttribute('title', mxResources.get('entityRelation')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_EDGE, mxConstants.STYLE_ELBOW], ['elbowEdgeStyle', 'horizontal'], 'geIcon geSprite geSprite-helbow', null).setAttribute('title', mxResources.get('horizontal')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_EDGE, mxConstants.STYLE_ELBOW], ['elbowEdgeStyle', 'vertical'], 'geIcon geSprite geSprite-velbow', null).setAttribute('title', mxResources.get('vertical')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_EDGE], ['segmentEdgeStyle'], 'geIcon geSprite geSprite-segment', null).setAttribute('title', mxResources.get('manual')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_EDGE], ['orthogonalEdgeStyle'], 'geIcon geSprite geSprite-orthogonal', null).setAttribute('title', mxResources.get('automatic')); - // })); - // var linestart = this.addMenuFunction('geSprite-startclassic', mxResources.get('lineend'), false, mxUtils.bind(this, function(menu) - // { - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_STARTARROW, 'startFill'], [mxConstants.NONE, 0], 'geIcon geSprite geSprite-noarrow', null).setAttribute('title', mxResources.get('none')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_STARTARROW, 'startFill'], [mxConstants.ARROW_CLASSIC, 1], 'geIcon geSprite geSprite-startclassic', null).setAttribute('title', mxResources.get('classic')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_STARTARROW, 'startFill'], [mxConstants.ARROW_OPEN, 1], 'geIcon geSprite geSprite-startopen', null).setAttribute('title', mxResources.get('openArrow')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_STARTARROW, 'startFill'], [mxConstants.ARROW_BLOCK, 1], 'geIcon geSprite geSprite-startblock', null).setAttribute('title', mxResources.get('block')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_STARTARROW, 'startFill'], [mxConstants.ARROW_OVAL, 1], 'geIcon geSprite geSprite-startoval', null).setAttribute('title', mxResources.get('oval')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_STARTARROW, 'startFill'], [mxConstants.ARROW_DIAMOND, 1], 'geIcon geSprite geSprite-startdiamond', null).setAttribute('title', mxResources.get('diamond')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_STARTARROW, 'startFill'], [mxConstants.ARROW_DIAMOND_THIN, 1], 'geIcon geSprite geSprite-startthindiamond', null).setAttribute('title', mxResources.get('diamondThin')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_STARTARROW, 'startFill'], [mxConstants.ARROW_CLASSIC, 0], 'geIcon geSprite geSprite-startclassictrans', null).setAttribute('title', mxResources.get('classic')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_STARTARROW, 'startFill'], [mxConstants.ARROW_BLOCK, 0], 'geIcon geSprite geSprite-startblocktrans', null).setAttribute('title', mxResources.get('block')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_STARTARROW, 'startFill'], [mxConstants.ARROW_OVAL, 0], 'geIcon geSprite geSprite-startovaltrans', null).setAttribute('title', mxResources.get('oval')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_STARTARROW, 'startFill'], [mxConstants.ARROW_DIAMOND, 0], 'geIcon geSprite geSprite-startdiamondtrans', null).setAttribute('title', mxResources.get('diamond')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_STARTARROW, 'startFill'], [mxConstants.ARROW_DIAMOND_THIN, 0], 'geIcon geSprite geSprite-startthindiamondtrans', null).setAttribute('title', mxResources.get('diamondThin')); - // })); - // var lineend = this.addMenuFunction('geSprite-endclassic', mxResources.get('lineend'), false, mxUtils.bind(this, function(menu) - // { - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_ENDARROW, 'endFill'], [mxConstants.NONE, 0], 'geIcon geSprite geSprite-noarrow', null).setAttribute('title', mxResources.get('none')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_ENDARROW, 'endFill'], [mxConstants.ARROW_CLASSIC, 1], 'geIcon geSprite geSprite-endclassic', null).setAttribute('title', mxResources.get('classic')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_ENDARROW, 'endFill'], [mxConstants.ARROW_OPEN, 1], 'geIcon geSprite geSprite-endopen', null).setAttribute('title', mxResources.get('openArrow')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_ENDARROW, 'endFill'], [mxConstants.ARROW_BLOCK, 1], 'geIcon geSprite geSprite-endblock', null).setAttribute('title', mxResources.get('block')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_ENDARROW, 'endFill'], [mxConstants.ARROW_OVAL, 1], 'geIcon geSprite geSprite-endoval', null).setAttribute('title', mxResources.get('oval')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_ENDARROW, 'endFill'], [mxConstants.ARROW_DIAMOND, 1], 'geIcon geSprite geSprite-enddiamond', null).setAttribute('title', mxResources.get('diamond')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_ENDARROW, 'endFill'], [mxConstants.ARROW_DIAMOND_THIN, 1], 'geIcon geSprite geSprite-endthindiamond', null).setAttribute('title', mxResources.get('diamondThin')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_ENDARROW, 'endFill'], [mxConstants.ARROW_CLASSIC, 0], 'geIcon geSprite geSprite-endclassictrans', null).setAttribute('title', mxResources.get('classic')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_ENDARROW, 'endFill'], [mxConstants.ARROW_BLOCK, 0], 'geIcon geSprite geSprite-endblocktrans', null).setAttribute('title', mxResources.get('block')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_ENDARROW, 'endFill'], [mxConstants.ARROW_OVAL, 0], 'geIcon geSprite geSprite-endovaltrans', null).setAttribute('title', mxResources.get('oval')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_ENDARROW, 'endFill'], [mxConstants.ARROW_DIAMOND, 0], 'geIcon geSprite geSprite-enddiamondtrans', null).setAttribute('title', mxResources.get('diamond')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_ENDARROW, 'endFill'], [mxConstants.ARROW_DIAMOND_THIN, 0], 'geIcon geSprite geSprite-endthindiamondtrans', null).setAttribute('title', mxResources.get('diamondThin')); - // })); - // this.addItems(['-', 'strokeColor', 'image', 'fillColor']); - // this.addItem('geSprite-gradientcolor', 'gradientColor').setAttribute('title', mxResources.get('gradient')); - // this.addItems(['shadow']); - - var graph = this.editorUi.editor.graph; - - // Update font size and font family labels - var update = mxUtils.bind(this, function() - { - var ff = 'Helvetica'; - var fs = '12'; - var state = graph.getView().getState(graph.getSelectionCell()); - - if (state != null) - { - ff = state.style[mxConstants.STYLE_FONTFAMILY] || ff; - fs = state.style[mxConstants.STYLE_FONTSIZE] || fs; - - if (ff.length > 10) - { - ff = ff.substring(0, 8) + '...'; - } - - fontElt.innerHTML = ff; - sizeElt.innerHTML = fs; - } - }); - - graph.getSelectionModel().addListener(mxEvent.CHANGE, update); - graph.getModel().addListener(mxEvent.CHANGE, update); - - // Giuseppe Careri - // Updates button states - //this.addEdgeSelectionHandler([line, linestart, lineend]); - //this.addSelectionHandler([align]); -}; - -/** - * Hides the current menu. - */ -Toolbar.prototype.hideMenu = function() -{ - if (this.currentMenu != null) - { - this.currentMenu.hideMenu(); - this.currentMenu.destroy(); - this.currentMenu = null; - } -}; - -/** - * Adds a label to the toolbar. - */ -Toolbar.prototype.addMenu = function(label, tooltip, showLabels, name) -{ - var menu = this.editorUi.menus.get(name); - var elt = this.addMenuFunction(label, tooltip, showLabels, menu.funct); - - menu.addListener('stateChanged', function() - { - elt.setEnabled(menu.enabled); - }); - - return elt; -}; - -/** - * Adds a label to the toolbar. - */ -Toolbar.prototype.addMenuFunction = function(label, tooltip, showLabels, funct) -{ - var elt = (showLabels) ? this.createLabel(label) : this.createButton(label); - this.initElement(elt, tooltip); - this.addMenuHandler(elt, showLabels, funct); - this.container.appendChild(elt); - - return elt; -}; - -/** - * Adds a separator to the separator. - */ -Toolbar.prototype.addSeparator = function() -{ - var elt = document.createElement('div'); - elt.className = 'geSeparator'; - this.container.appendChild(elt); - - return elt; -}; - -/** - * Adds given action item - */ -Toolbar.prototype.addItems = function(keys) -{ - for (var i = 0; i < keys.length; i++) - { - var key = keys[i]; - - if (key == '-') - { - this.addSeparator(); - } - else - { - this.addItem('geSprite-' + key.toLowerCase(), key); - } - } -}; - -/** - * Adds given action item - */ -Toolbar.prototype.addItem = function(sprite, key) -{ - var action = this.editorUi.actions.get(key); - var elt = null; - - if (action != null) - { - elt = this.addButton(sprite, action.label, action.funct); - elt.setEnabled(action.enabled); - - action.addListener('stateChanged', function() - { - elt.setEnabled(action.enabled); - }); - } - - return elt; -}; - -/** - * Adds a button to the toolbar. - */ -Toolbar.prototype.addButton = function(classname, tooltip, funct) -{ - var elt = this.createButton(classname); - - this.initElement(elt, tooltip); - this.addClickHandler(elt, funct); - this.container.appendChild(elt); - - return elt; -}; - -/** - * Updates the states of the given toolbar items based on the selection. - */ -Toolbar.prototype.addSelectionHandler = function(items) -{ - var graph = this.editorUi.editor.graph; - - var selectionListener = function() - { - var selected = !graph.isSelectionEmpty(); - - for (var i = 0; i < items.length; i++) - { - items[i].setEnabled(selected); - } - }; - - graph.getSelectionModel().addListener(mxEvent.CHANGE, selectionListener); - selectionListener(); -}; - -/** - * Updates the states of the given toolbar items based on the selection. - */ -Toolbar.prototype.addEdgeSelectionHandler = function(items) -{ - var graph = this.editorUi.editor.graph; - - var selectionListener = function() - { - var edgeSelected = false; - - if (!graph.isSelectionEmpty()) - { - var cells = graph.getSelectionCells(); - - for (var i = 0; i < cells.length; i++) - { - if (graph.getModel().isEdge(cells[i])) - { - edgeSelected = true; - break; - } - } - } - - for (var i = 0; i < items.length; i++) - { - items[i].setEnabled(edgeSelected); - } - }; - - graph.getSelectionModel().addListener(mxEvent.CHANGE, selectionListener); - selectionListener(); -}; - -/** - * Initializes the given toolbar element. - */ -Toolbar.prototype.initElement = function(elt, tooltip) -{ - elt.setAttribute('tabindex', '0'); - - // Adds tooltip - if (tooltip != null) - { - elt.setAttribute('title', tooltip); - } - - this.addEnabledState(elt); -}; - -/** - * Adds enabled state with setter to DOM node (avoids JS wrapper). - */ -Toolbar.prototype.addEnabledState = function(elt) -{ - var classname = elt.className; - - elt.setEnabled = function(value) - { - elt.enabled = value; - - if (value) - { - elt.className = classname; - } - else - { - elt.className = classname + ' geDisabled'; - } - }; - - elt.setEnabled(true); -}; - -/** - * Adds enabled state with setter to DOM node (avoids JS wrapper). - */ -Toolbar.prototype.addClickHandler = function(elt, funct) -{ - if (funct != null) - { - mxEvent.addListener(elt, 'click', function(evt) - { - if (elt.enabled) - { - funct(evt); - } - - mxEvent.consume(evt); - }); - } -}; - -/** - * Creates and returns a new button. - */ -Toolbar.prototype.createButton = function(classname) -{ - var elt = document.createElement('a'); - elt.setAttribute('href', 'javascript:void(0);'); - elt.className = 'geButton'; - - var inner = document.createElement('div'); - inner.className = 'geSprite ' + classname; - elt.appendChild(inner); - - return elt; -}; - -/** - * Creates and returns a new button. - */ -Toolbar.prototype.createLabel = function(label, tooltip) -{ - var elt = document.createElement('a'); - elt.setAttribute('href', 'javascript:void(0);'); - elt.className = 'geLabel'; - mxUtils.write(elt, label); - - return elt; -}; - -/** - * Adds a handler for showing a menu in the given element. - */ -Toolbar.prototype.addMenuHandler = function(elt, showLabels, funct, showAll) -{ - if (funct != null) - { - var graph = this.editorUi.editor.graph; - var menu = null; - - mxEvent.addListener(elt, 'click', mxUtils.bind(this, function(evt) - { - if (elt.enabled == null || elt.enabled) - { - graph.panningHandler.hideMenu(); - menu = new mxPopupMenu(funct); - menu.div.className += ' geToolbarMenu'; - menu.showDisabled = showAll; - menu.labels = showLabels; - menu.autoExpand = true; - - menu.popup(elt.offsetLeft, elt.offsetTop + elt.offsetHeight + 34, null, evt); - this.currentMenu = menu; - } - - mxEvent.consume(evt); - })); - } -}; +var _0xea6e=["\x65\x64\x69\x74\x6F\x72\x55\x69","\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x69\x6E\x69\x74","\x68\x69\x64\x65\x4D\x65\x6E\x75","\x62\x69\x6E\x64","\x61\x64\x64\x47\x65\x73\x74\x75\x72\x65\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x73\x61\x76\x65","\x70\x75\x62\x6C\x69\x73\x68","\x2D","\x70\x72\x69\x6E\x74","\x75\x6E\x64\x6F","\x72\x65\x64\x6F","\x63\x6F\x70\x79","\x63\x75\x74","\x70\x61\x73\x74\x65","\x64\x65\x6C\x65\x74\x65","\x64\x75\x70\x6C\x69\x63\x61\x74\x65","\x61\x63\x74\x75\x61\x6C\x53\x69\x7A\x65","\x7A\x6F\x6F\x6D\x49\x6E","\x7A\x6F\x6F\x6D\x4F\x75\x74","\x61\x64\x64\x49\x74\x65\x6D\x73","\x48\x65\x6C\x76\x65\x74\x69\x63\x61","\x66\x6F\x6E\x74\x46\x61\x6D\x69\x6C\x79","\x67\x65\x74","\x61\x64\x64\x4D\x65\x6E\x75","\x77\x68\x69\x74\x65\x53\x70\x61\x63\x65","\x73\x74\x79\x6C\x65","\x6E\x6F\x77\x72\x61\x70","\x6F\x76\x65\x72\x66\x6C\x6F\x77","\x68\x69\x64\x64\x65\x6E","\x77\x69\x64\x74\x68","\x37\x30\x70\x78","\x61\x64\x64\x53\x65\x70\x61\x72\x61\x74\x6F\x72","\x31\x32","\x66\x6F\x6E\x74\x53\x69\x7A\x65","\x33\x30\x70\x78","\x62\x6F\x6C\x64","\x69\x74\x61\x6C\x69\x63","\x75\x6E\x64\x65\x72\x6C\x69\x6E\x65","\x67\x72\x61\x70\x68","\x65\x64\x69\x74\x6F\x72","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C","\x67\x65\x74\x53\x74\x61\x74\x65","\x67\x65\x74\x56\x69\x65\x77","\x53\x54\x59\x4C\x45\x5F\x46\x4F\x4E\x54\x46\x41\x4D\x49\x4C\x59","\x53\x54\x59\x4C\x45\x5F\x46\x4F\x4E\x54\x53\x49\x5A\x45","\x6C\x65\x6E\x67\x74\x68","\x73\x75\x62\x73\x74\x72\x69\x6E\x67","\x2E\x2E\x2E","\x69\x6E\x6E\x65\x72\x48\x54\x4D\x4C","\x61\x64\x64\x4C\x69\x73\x74\x65\x6E\x65\x72","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x4D\x6F\x64\x65\x6C","\x67\x65\x74\x4D\x6F\x64\x65\x6C","\x63\x75\x72\x72\x65\x6E\x74\x4D\x65\x6E\x75","\x64\x65\x73\x74\x72\x6F\x79","\x6D\x65\x6E\x75\x73","\x66\x75\x6E\x63\x74","\x61\x64\x64\x4D\x65\x6E\x75\x46\x75\x6E\x63\x74\x69\x6F\x6E","\x73\x74\x61\x74\x65\x43\x68\x61\x6E\x67\x65\x64","\x65\x6E\x61\x62\x6C\x65\x64","\x73\x65\x74\x45\x6E\x61\x62\x6C\x65\x64","\x63\x72\x65\x61\x74\x65\x4C\x61\x62\x65\x6C","\x63\x72\x65\x61\x74\x65\x42\x75\x74\x74\x6F\x6E","\x69\x6E\x69\x74\x45\x6C\x65\x6D\x65\x6E\x74","\x61\x64\x64\x4D\x65\x6E\x75\x48\x61\x6E\x64\x6C\x65\x72","\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64","\x64\x69\x76","\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74","\x63\x6C\x61\x73\x73\x4E\x61\x6D\x65","\x67\x65\x53\x65\x70\x61\x72\x61\x74\x6F\x72","\x67\x65\x53\x70\x72\x69\x74\x65\x2D","\x74\x6F\x4C\x6F\x77\x65\x72\x43\x61\x73\x65","\x61\x64\x64\x49\x74\x65\x6D","\x61\x63\x74\x69\x6F\x6E\x73","\x6C\x61\x62\x65\x6C","\x61\x64\x64\x42\x75\x74\x74\x6F\x6E","\x61\x64\x64\x43\x6C\x69\x63\x6B\x48\x61\x6E\x64\x6C\x65\x72","\x61\x64\x64\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x48\x61\x6E\x64\x6C\x65\x72","\x69\x73\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x45\x6D\x70\x74\x79","\x61\x64\x64\x45\x64\x67\x65\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x48\x61\x6E\x64\x6C\x65\x72","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C\x73","\x69\x73\x45\x64\x67\x65","\x74\x61\x62\x69\x6E\x64\x65\x78","\x30","\x73\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x74\x69\x74\x6C\x65","\x61\x64\x64\x45\x6E\x61\x62\x6C\x65\x64\x53\x74\x61\x74\x65","\x20\x67\x65\x44\x69\x73\x61\x62\x6C\x65\x64","\x63\x6C\x69\x63\x6B","\x63\x6F\x6E\x73\x75\x6D\x65","\x61","\x68\x72\x65\x66","\x6A\x61\x76\x61\x73\x63\x72\x69\x70\x74\x3A\x76\x6F\x69\x64\x28\x30\x29\x3B","\x67\x65\x42\x75\x74\x74\x6F\x6E","\x67\x65\x53\x70\x72\x69\x74\x65\x20","\x67\x65\x4C\x61\x62\x65\x6C","\x77\x72\x69\x74\x65","\x70\x61\x6E\x6E\x69\x6E\x67\x48\x61\x6E\x64\x6C\x65\x72","\x20\x67\x65\x54\x6F\x6F\x6C\x62\x61\x72\x4D\x65\x6E\x75","\x73\x68\x6F\x77\x44\x69\x73\x61\x62\x6C\x65\x64","\x6C\x61\x62\x65\x6C\x73","\x61\x75\x74\x6F\x45\x78\x70\x61\x6E\x64","\x6F\x66\x66\x73\x65\x74\x4C\x65\x66\x74","\x6F\x66\x66\x73\x65\x74\x54\x6F\x70","\x6F\x66\x66\x73\x65\x74\x48\x65\x69\x67\x68\x74","\x70\x6F\x70\x75\x70"];function Toolbar(_0xc7dfx2,_0xc7dfx3){this[_0xea6e[0]]= _0xc7dfx2;this[_0xea6e[1]]= _0xc7dfx3;this[_0xea6e[2]]();mxEvent[_0xea6e[5]](document,mxUtils[_0xea6e[4]](this,function(_0xc7dfx4){this[_0xea6e[3]]()}))}Toolbar[_0xea6e[6]][_0xea6e[2]]= function(){this[_0xea6e[21]]([_0xea6e[7],_0xea6e[8],_0xea6e[9],_0xea6e[10],_0xea6e[11],_0xea6e[12],_0xea6e[9],_0xea6e[13],_0xea6e[14],_0xea6e[15],_0xea6e[16],_0xea6e[9],_0xea6e[17],_0xea6e[9],_0xea6e[18],_0xea6e[19],_0xea6e[20],_0xea6e[9]]);var _0xc7dfx5=this[_0xea6e[25]](_0xea6e[22],mxResources[_0xea6e[24]](_0xea6e[23]),true,_0xea6e[23]);_0xc7dfx5[_0xea6e[27]][_0xea6e[26]]= _0xea6e[28];_0xc7dfx5[_0xea6e[27]][_0xea6e[29]]= _0xea6e[30];_0xc7dfx5[_0xea6e[27]][_0xea6e[31]]= _0xea6e[32];this[_0xea6e[33]]();var _0xc7dfx6=this[_0xea6e[25]](_0xea6e[34],mxResources[_0xea6e[24]](_0xea6e[35]),true,_0xea6e[35]);_0xc7dfx6[_0xea6e[27]][_0xea6e[26]]= _0xea6e[28];_0xc7dfx6[_0xea6e[27]][_0xea6e[29]]= _0xea6e[30];_0xc7dfx6[_0xea6e[27]][_0xea6e[31]]= _0xea6e[36];this[_0xea6e[21]]([_0xea6e[9],_0xea6e[37],_0xea6e[38],_0xea6e[39]]);var _0xc7dfx7=this[_0xea6e[0]][_0xea6e[41]][_0xea6e[40]];var _0xc7dfx8=mxUtils[_0xea6e[4]](this,function(){var _0xc7dfx9=_0xea6e[22];var _0xc7dfxa=_0xea6e[34];var _0xc7dfxb=_0xc7dfx7[_0xea6e[44]]()[_0xea6e[43]](_0xc7dfx7[_0xea6e[42]]());if(_0xc7dfxb!= null){_0xc7dfx9= _0xc7dfxb[_0xea6e[27]][mxConstants[_0xea6e[45]]]|| _0xc7dfx9;_0xc7dfxa= _0xc7dfxb[_0xea6e[27]][mxConstants[_0xea6e[46]]]|| _0xc7dfxa;if(_0xc7dfx9[_0xea6e[47]]> 10){_0xc7dfx9= _0xc7dfx9[_0xea6e[48]](0,8)+ _0xea6e[49]};_0xc7dfx5[_0xea6e[50]]= _0xc7dfx9;_0xc7dfx6[_0xea6e[50]]= _0xc7dfxa}});_0xc7dfx7[_0xea6e[52]]()[_0xea6e[51]](mxEvent.CHANGE,_0xc7dfx8);_0xc7dfx7[_0xea6e[53]]()[_0xea6e[51]](mxEvent.CHANGE,_0xc7dfx8)};Toolbar[_0xea6e[6]][_0xea6e[3]]= function(){if(this[_0xea6e[54]]!= null){this[_0xea6e[54]][_0xea6e[3]]();this[_0xea6e[54]][_0xea6e[55]]();this[_0xea6e[54]]= null}};Toolbar[_0xea6e[6]][_0xea6e[25]]= function(_0xc7dfxc,_0xc7dfxd,_0xc7dfxe,_0xc7dfxf){var _0xc7dfx10=this[_0xea6e[0]][_0xea6e[56]][_0xea6e[24]](_0xc7dfxf);var _0xc7dfx11=this[_0xea6e[58]](_0xc7dfxc,_0xc7dfxd,_0xc7dfxe,_0xc7dfx10[_0xea6e[57]]);_0xc7dfx10[_0xea6e[51]](_0xea6e[59],function(){_0xc7dfx11[_0xea6e[61]](_0xc7dfx10[_0xea6e[60]])});return _0xc7dfx11};Toolbar[_0xea6e[6]][_0xea6e[58]]= function(_0xc7dfxc,_0xc7dfxd,_0xc7dfxe,_0xc7dfx12){var _0xc7dfx11=(_0xc7dfxe)?this[_0xea6e[62]](_0xc7dfxc):this[_0xea6e[63]](_0xc7dfxc);this[_0xea6e[64]](_0xc7dfx11,_0xc7dfxd);this[_0xea6e[65]](_0xc7dfx11,_0xc7dfxe,_0xc7dfx12);this[_0xea6e[1]][_0xea6e[66]](_0xc7dfx11);return _0xc7dfx11};Toolbar[_0xea6e[6]][_0xea6e[33]]= function(){var _0xc7dfx11=document[_0xea6e[68]](_0xea6e[67]);_0xc7dfx11[_0xea6e[69]]= _0xea6e[70];this[_0xea6e[1]][_0xea6e[66]](_0xc7dfx11);return _0xc7dfx11};Toolbar[_0xea6e[6]][_0xea6e[21]]= function(_0xc7dfx13){for(var _0xc7dfx14=0;_0xc7dfx14< _0xc7dfx13[_0xea6e[47]];_0xc7dfx14++){var _0xc7dfx15=_0xc7dfx13[_0xc7dfx14];if(_0xc7dfx15== _0xea6e[9]){this[_0xea6e[33]]()}else {this[_0xea6e[73]](_0xea6e[71]+ _0xc7dfx15[_0xea6e[72]](),_0xc7dfx15)}}};Toolbar[_0xea6e[6]][_0xea6e[73]]= function(_0xc7dfx16,_0xc7dfx15){var _0xc7dfx17=this[_0xea6e[0]][_0xea6e[74]][_0xea6e[24]](_0xc7dfx15);var _0xc7dfx11=null;if(_0xc7dfx17!= null){_0xc7dfx11= this[_0xea6e[76]](_0xc7dfx16,_0xc7dfx17[_0xea6e[75]],_0xc7dfx17[_0xea6e[57]]);_0xc7dfx11[_0xea6e[61]](_0xc7dfx17[_0xea6e[60]]);_0xc7dfx17[_0xea6e[51]](_0xea6e[59],function(){_0xc7dfx11[_0xea6e[61]](_0xc7dfx17[_0xea6e[60]])})};return _0xc7dfx11};Toolbar[_0xea6e[6]][_0xea6e[76]]= function(_0xc7dfx18,_0xc7dfxd,_0xc7dfx12){var _0xc7dfx11=this[_0xea6e[63]](_0xc7dfx18);this[_0xea6e[64]](_0xc7dfx11,_0xc7dfxd);this[_0xea6e[77]](_0xc7dfx11,_0xc7dfx12);this[_0xea6e[1]][_0xea6e[66]](_0xc7dfx11);return _0xc7dfx11};Toolbar[_0xea6e[6]][_0xea6e[78]]= function(_0xc7dfx19){var _0xc7dfx7=this[_0xea6e[0]][_0xea6e[41]][_0xea6e[40]];var _0xc7dfx1a=function(){var _0xc7dfx1b=!_0xc7dfx7[_0xea6e[79]]();for(var _0xc7dfx14=0;_0xc7dfx14< _0xc7dfx19[_0xea6e[47]];_0xc7dfx14++){_0xc7dfx19[_0xc7dfx14][_0xea6e[61]](_0xc7dfx1b)}};_0xc7dfx7[_0xea6e[52]]()[_0xea6e[51]](mxEvent.CHANGE,_0xc7dfx1a);_0xc7dfx1a()};Toolbar[_0xea6e[6]][_0xea6e[80]]= function(_0xc7dfx19){var _0xc7dfx7=this[_0xea6e[0]][_0xea6e[41]][_0xea6e[40]];var _0xc7dfx1a=function(){var _0xc7dfx1c=false;if(!_0xc7dfx7[_0xea6e[79]]()){var _0xc7dfx1d=_0xc7dfx7[_0xea6e[81]]();for(var _0xc7dfx14=0;_0xc7dfx14< _0xc7dfx1d[_0xea6e[47]];_0xc7dfx14++){if(_0xc7dfx7[_0xea6e[53]]()[_0xea6e[82]](_0xc7dfx1d[_0xc7dfx14])){_0xc7dfx1c= true;break}}};for(var _0xc7dfx14=0;_0xc7dfx14< _0xc7dfx19[_0xea6e[47]];_0xc7dfx14++){_0xc7dfx19[_0xc7dfx14][_0xea6e[61]](_0xc7dfx1c)}};_0xc7dfx7[_0xea6e[52]]()[_0xea6e[51]](mxEvent.CHANGE,_0xc7dfx1a);_0xc7dfx1a()};Toolbar[_0xea6e[6]][_0xea6e[64]]= function(_0xc7dfx11,_0xc7dfxd){_0xc7dfx11[_0xea6e[85]](_0xea6e[83],_0xea6e[84]);if(_0xc7dfxd!= null){_0xc7dfx11[_0xea6e[85]](_0xea6e[86],_0xc7dfxd)};this[_0xea6e[87]](_0xc7dfx11)};Toolbar[_0xea6e[6]][_0xea6e[87]]= function(_0xc7dfx11){var _0xc7dfx18=_0xc7dfx11[_0xea6e[69]];_0xc7dfx11[_0xea6e[61]]= function(_0xc7dfx1e){_0xc7dfx11[_0xea6e[60]]= _0xc7dfx1e;if(_0xc7dfx1e){_0xc7dfx11[_0xea6e[69]]= _0xc7dfx18}else {_0xc7dfx11[_0xea6e[69]]= _0xc7dfx18+ _0xea6e[88]}};_0xc7dfx11[_0xea6e[61]](true)};Toolbar[_0xea6e[6]][_0xea6e[77]]= function(_0xc7dfx11,_0xc7dfx12){if(_0xc7dfx12!= null){mxEvent[_0xea6e[51]](_0xc7dfx11,_0xea6e[89],function(_0xc7dfx4){if(_0xc7dfx11[_0xea6e[60]]){_0xc7dfx12(_0xc7dfx4)};mxEvent[_0xea6e[90]](_0xc7dfx4)})}};Toolbar[_0xea6e[6]][_0xea6e[63]]= function(_0xc7dfx18){var _0xc7dfx11=document[_0xea6e[68]](_0xea6e[91]);_0xc7dfx11[_0xea6e[85]](_0xea6e[92],_0xea6e[93]);_0xc7dfx11[_0xea6e[69]]= _0xea6e[94];var _0xc7dfx1f=document[_0xea6e[68]](_0xea6e[67]);_0xc7dfx1f[_0xea6e[69]]= _0xea6e[95]+ _0xc7dfx18;_0xc7dfx11[_0xea6e[66]](_0xc7dfx1f);return _0xc7dfx11};Toolbar[_0xea6e[6]][_0xea6e[62]]= function(_0xc7dfxc,_0xc7dfxd){var _0xc7dfx11=document[_0xea6e[68]](_0xea6e[91]);_0xc7dfx11[_0xea6e[85]](_0xea6e[92],_0xea6e[93]);_0xc7dfx11[_0xea6e[69]]= _0xea6e[96];mxUtils[_0xea6e[97]](_0xc7dfx11,_0xc7dfxc);return _0xc7dfx11};Toolbar[_0xea6e[6]][_0xea6e[65]]= function(_0xc7dfx11,_0xc7dfxe,_0xc7dfx12,_0xc7dfx20){if(_0xc7dfx12!= null){var _0xc7dfx7=this[_0xea6e[0]][_0xea6e[41]][_0xea6e[40]];var _0xc7dfx10=null;mxEvent[_0xea6e[51]](_0xc7dfx11,_0xea6e[89],mxUtils[_0xea6e[4]](this,function(_0xc7dfx4){if(_0xc7dfx11[_0xea6e[60]]== null|| _0xc7dfx11[_0xea6e[60]]){_0xc7dfx7[_0xea6e[98]][_0xea6e[3]]();_0xc7dfx10= new mxPopupMenu(_0xc7dfx12);_0xc7dfx10[_0xea6e[67]][_0xea6e[69]]+= _0xea6e[99];_0xc7dfx10[_0xea6e[100]]= _0xc7dfx20;_0xc7dfx10[_0xea6e[101]]= _0xc7dfxe;_0xc7dfx10[_0xea6e[102]]= true;_0xc7dfx10[_0xea6e[106]](_0xc7dfx11[_0xea6e[103]],_0xc7dfx11[_0xea6e[104]]+ _0xc7dfx11[_0xea6e[105]]+ 34,null,_0xc7dfx4);this[_0xea6e[54]]= _0xc7dfx10};mxEvent[_0xea6e[90]](_0xc7dfx4)}))}} \ No newline at end of file diff --git a/public/assets/plugins/jscripty/js/custom.js b/public/assets/plugins/jscripty/js/custom.js index a53e30b..2effbb2 100644 --- a/public/assets/plugins/jscripty/js/custom.js +++ b/public/assets/plugins/jscripty/js/custom.js @@ -1,283 +1 @@ -var urlParams = (function(url) { - var result = new Object(); - var idx = url.lastIndexOf('?'); - - if (idx > 0) { - var params = url.substring(idx + 1).split('&'); - - for (var i = 0; i < params.length; i++) { - idx = params[i].indexOf('='); - - if (idx > 0) { - result[params[i].substring(0, idx)] = params[i].substring(idx + 1); - } - } - } - - return result; -})(window.location.href); - -var t0 = new Date(); - -// Public global variables -var MAX_REQUEST_SIZE = 10485760; -var MAX_WIDTH = 12000; -var MAX_HEIGHT = 12000; - -// CUSTOM_PARAMETERS - URLs for save and export -var EXPORT_URL = 'http://exp.draw.io/ImageExport2/export'; -var SHARE_HOST = 'http://localhost:3000'; - -var SAVE_URL = 'api/jscripty/projects/'; -var VARIABLE_URL = 'api/square/variables/'; - -// Paths and files -var STENCIL_PATH = '/assets/plugins/jscripty/stencils'; -var SHAPES_PATH = '/assets/plugins/mxgraph/shapes'; -var IMAGE_PATH = '/assets/plugins/mxgraph/images'; -// Path for images inside the diagram -//var GRAPH_IMAGE_PATH = 'assets/plugins/mxgraph/img'; -//var ICONFINDER_PATH = 'iconfinder'; -var STYLE_PATH = '/assets/plugins/mxgraph/styles'; -var CSS_PATH = '/assets/plugins/mxgraph/styles'; -var OPEN_FORM = 'api/jscripty/projects/open'; -var TEMPLATE_PATH = '/assets/plugins/jscripty/templates'; - -// Directory for i18 files and basename for main i18n file -var RESOURCES_PATH = '/assets/plugins/jscripty/resources'; -var RESOURCE_BASE = RESOURCES_PATH + '/dia'; - -// Specifies connection mode for touch devices (at least one should be true) -var tapAndHoldStartsConnection = true; -var showConnectorImg = true; - -var mxLoadResources = false; -// var mxLanguage = ''; -console.log('custom', localStorage.getItem("NG_TRANSLATE_LANG_KEY")); -switch (localStorage.getItem("NG_TRANSLATE_LANG_KEY")) { - case 'en_EN': - mxLanguage = 'en'; - break; - case 'it': - mxLanguage = 'it'; - break; - default: - mxLanguage = 'it'; -} -console.log('mxLanguage', mxLanguage); - -var mxLanguages = ['ar', 'bs', 'cs', 'da', 'de', 'el', 'es', 'es-ar', 'fr', - 'hu', 'id', 'it', 'ja', 'ko', 'nl', 'no', 'pl', 'pt-br', 'pt', 'ro', 'ru', - 'sr', 'sv', 'th', 'tr', 'uk', 'zh' -]; -var mxBasePath = 'assets/plugins/mxgraph'; -var geBasePath = 'assets/plugins/mxgraph/js'; - -var ISPEECHLANG = { - usenglishfemale: "US English Female", - usenglishmale: "US English Male", - ukenglishfemale: "UK English Female", - ukenglishmale: "UK English Male", - auenglishfemale: "Australian English", - usspanishfemale: "US Spanish Female", - usspanishmale: "US Spanish Male", - chchinesefemale: "Chinese Female", - chchinesemale: "Chinese Male", - hkchinesefemale: "Hong Kong Cantonese Female", - twchinesefemale: "Taiwan Chinese Female", - jpjapanesefemale: "Japanese Female", - jpjapanesemale: "Japanese Male", - krkoreanfemale: "Korean Female", - krkoreanmale: "Korean Male", - caenglishfemale: "Canadian English Female", - huhungarianfemale: "Hungarian Female", - brportuguesefemale: "Brazilian Portuguese Female", - eurportuguesefemale: "European Portuguese Female", - eurportuguesemale: "European Portuguese Male", - eurspanishfemale: "European Spanish Female", - eurspanishmale: "European Spanish Male", - eurcatalanfemale: "European Catalan Female", - eurczechfemale: "European Czech Female", - eurdanishfemale: "European Danish Female", - eurfinnishfemale: "European Finnish Female", - eurfrenchfemale: "European French Female", - eurfrenchmale: "European French Male", - eurnorwegianfemale: "European Norwegian Female", - eurdutchfemale: "European Dutch Female", - eurpolishfemale: "European Polish Female", - euritalianfemale: "European Italian Female", - eurturkishfemale: "European Turkish Female ", - eurturkishmale: "European Turkish Male", - eurgermanfemale: "European German Female", - eurgermanmale: "European German Male", - rurussianfemale: "Russian Female", - rurussianmale: "Russian Male", - swswedishfemale: "Swedish Female", - cafrenchfemale: "Canadian French Female", - cafrenchmale: "Canadian French Male" -}; - -var ISPEECHASRLANG = { - "en-US": "English (US)", - "en-CA": "English (Canada)", - "en-GB": "English (UK)", - "en-AU": "English (Australia)", - "es-ES": "Spanish (Spain)", - "es-MX": "Spanish (Mexico)", - "it-IT": "Italian (Italy) / Finnish (Finland)", - "fr-FR": "French (France)", - "fr-CA": "French (Canada)", - "pl-PL": "Polish (Poland)", - "pt-PT": "Portuguese (Portugal)", - "ca-ES": "Catalan (Catalan)", - "zh-TW": "Chinese (Taiwan)", - "da-DK": "Danish (Denmark)", - "fr-FR": "German (Germany)", - "ja-JP": "Japanese (Japan)", - "ko-KR": "Korean (Korea)", - "nl-NL": "Dutch (Netherlands)", - "nb-NO": "Norwegian (Norway)", - "pt-BR": "Portuguese (Brazil)", - "ru-RU": "Russian (Russia)", - "sv-SE": "Swedish (Sweden)", - "zh-CN": "Chinese (China)", - "zh-HK": "Chinese (Hong Kong)" -}; - -var ISPEECHASRMODEL = { - 0: "Default", - date: "Date", - usmoney: "US Money", - numbersto9: "Numbers to 9", - numbersto99: "Numbers to 99", - numbersto999: "Numbers to 999", - time: "Time", - phonenumber: "Phone number", - streets: "Streets", - citystate: "US City/States" -}; - -var GOOGLETTSLANG = { - "af": "Afrikaans", - "sq": "Albanian", - "am": "Amharic", - "ar": "Arabic", - "hy": "Armenian", - "az": "Azerbaijani", - "eu": "Basque", - "be": "Belarusian", - "bn": "Bengali", - "bh": "Bihari", - "bs": "Bosnian", - "br": "Breton", - "bg": "Bulgarian", - "km": "Cambodian", - "ca": "Catalan", - "zh-CN": "Chinese (Simplified)", - "zh-TW": "Chinese (Traditional)", - "co": "Corsican", - "hr": "Croatian", - "cs": "Czech", - "da": "Danish", - "nl": "Dutch", - "en": "English", - "eo": "Esperanto", - "et": "Estonian", - "fo": "Faroese", - "tl": "Filipino", - "fi": "Finnish", - "fr": "French", - "fy": "Frisian", - "gl": "Galician", - "ka": "Georgian", - "de": "German", - "el": "Greek", - "gn": "Guarani", - "gu": "Gujarati", - "xx-hacker": "Hacker", - "ha": "Hausa", - "iw": "Hebrew", - "hi": "Hindi", - "hu": "Hungarian", - "is": "Icelandic", - "id": "Indonesian", - "ia": "Interlingua", - "ga": "Irish", - "it": "Italian", - "jw": "Javanese", - "ja": "Japanese", - "kn": "Kannada", - "kk": "Kazakh", - "rw": "Kinyarwanda", - "rn": "Kirundi", - "xx-klingon": "Klingon", - "ku": "Kurdish", - "ko": "Korean", - "ky": "Kyrgyz", - "lo": "Laothian", - "la": "Latin", - "lv": "Latvian", - "ln": "Lingala", - "lt": "Lithuanian", - "mk": "Macedonian", - "mg": "Malagasy", - "ms": "Malay", - "ml": "Malayalam", - "mt": "Maltese", - "mi": "Maori", - "mr": "Marathi", - "mo": "Moldavian", - "mn": "Mongolian", - "sr-ME": "Montenegrin", - "ne": "Nepali", - "no": "Norwegian", - "nn": "Norwegian (Nynorsk)", - "oc": "Occitan", - "or": "Oriya", - "om": "Oromo", - "ps": "Pashto", - "fa": "Persian", - "xx-pirate": "Pirate", - "pl": "Polish", - "pt-BR": "Portuguese (Brazil)", - "pt-PT": "Portuguese (Portugal)", - "pa": "Punjabi", - "qu": "Quechua", - "ro": "Romanian", - "rm": "Romansh", - "ru": "Russian", - "gd": "Scots Gaelic", - "sr": "Serbian", - "sh": "Serbo-Croatian", - "st": "Sesotho", - "sn": "Shona", - "sd": "Sindhi", - "si": "Sinhalese", - "sk": "Slovak", - "sl": "Slovenian", - "so": "Somali", - "es": "Spanish", - "su": "Sundanese", - "sw": "Swahili", - "sv": "Swedish", - "tg": "Tajik", - "ta": "Tamil", - "tt": "Tatar", - "te": "Telugu", - "th": "Thai", - "ti": "Tigrinya", - "to": "Tonga", - "tr": "Turkish", - "tk": "Turkmen", - "tw": "Twi", - "ug": "Uighur", - "uk": "Ukrainian", - "ur": "Urdu", - "uz": "Uzbek", - "vi": "Vietnamese", - "cy": "Welsh", - "xh": "Xhosa", - "yi": "Yiddish", - "yo": "Yoruba", - "zu": "Zulu" -}; +var _0xbfa9=["\x68\x72\x65\x66","\x6C\x6F\x63\x61\x74\x69\x6F\x6E","\x3F","\x6C\x61\x73\x74\x49\x6E\x64\x65\x78\x4F\x66","\x26","\x73\x70\x6C\x69\x74","\x73\x75\x62\x73\x74\x72\x69\x6E\x67","\x6C\x65\x6E\x67\x74\x68","\x3D","\x69\x6E\x64\x65\x78\x4F\x66","\x68\x74\x74\x70\x3A\x2F\x2F\x65\x78\x70\x2E\x64\x72\x61\x77\x2E\x69\x6F\x2F\x49\x6D\x61\x67\x65\x45\x78\x70\x6F\x72\x74\x32\x2F\x65\x78\x70\x6F\x72\x74","\x68\x74\x74\x70\x3A\x2F\x2F\x6C\x6F\x63\x61\x6C\x68\x6F\x73\x74\x3A\x33\x30\x30\x30","\x61\x70\x69\x2F\x6A\x73\x63\x72\x69\x70\x74\x79\x2F\x70\x72\x6F\x6A\x65\x63\x74\x73\x2F","\x61\x70\x69\x2F\x73\x71\x75\x61\x72\x65\x2F\x76\x61\x72\x69\x61\x62\x6C\x65\x73\x2F","\x2F\x61\x73\x73\x65\x74\x73\x2F\x70\x6C\x75\x67\x69\x6E\x73\x2F\x6A\x73\x63\x72\x69\x70\x74\x79\x2F\x73\x74\x65\x6E\x63\x69\x6C\x73","\x2F\x61\x73\x73\x65\x74\x73\x2F\x70\x6C\x75\x67\x69\x6E\x73\x2F\x6D\x78\x67\x72\x61\x70\x68\x2F\x73\x68\x61\x70\x65\x73","\x2F\x61\x73\x73\x65\x74\x73\x2F\x70\x6C\x75\x67\x69\x6E\x73\x2F\x6D\x78\x67\x72\x61\x70\x68\x2F\x69\x6D\x61\x67\x65\x73","\x2F\x61\x73\x73\x65\x74\x73\x2F\x70\x6C\x75\x67\x69\x6E\x73\x2F\x6D\x78\x67\x72\x61\x70\x68\x2F\x73\x74\x79\x6C\x65\x73","\x61\x70\x69\x2F\x6A\x73\x63\x72\x69\x70\x74\x79\x2F\x70\x72\x6F\x6A\x65\x63\x74\x73\x2F\x6F\x70\x65\x6E","\x2F\x61\x73\x73\x65\x74\x73\x2F\x70\x6C\x75\x67\x69\x6E\x73\x2F\x6A\x73\x63\x72\x69\x70\x74\x79\x2F\x74\x65\x6D\x70\x6C\x61\x74\x65\x73","\x2F\x61\x73\x73\x65\x74\x73\x2F\x70\x6C\x75\x67\x69\x6E\x73\x2F\x6A\x73\x63\x72\x69\x70\x74\x79\x2F\x72\x65\x73\x6F\x75\x72\x63\x65\x73","\x2F\x64\x69\x61","\x63\x75\x73\x74\x6F\x6D","\x4E\x47\x5F\x54\x52\x41\x4E\x53\x4C\x41\x54\x45\x5F\x4C\x41\x4E\x47\x5F\x4B\x45\x59","\x67\x65\x74\x49\x74\x65\x6D","\x6C\x6F\x67","\x65\x6E","\x65\x6E\x5F\x45\x4E","\x69\x74","\x6D\x78\x4C\x61\x6E\x67\x75\x61\x67\x65","\x61\x72","\x62\x73","\x63\x73","\x64\x61","\x64\x65","\x65\x6C","\x65\x73","\x65\x73\x2D\x61\x72","\x66\x72","\x68\x75","\x69\x64","\x6A\x61","\x6B\x6F","\x6E\x6C","\x6E\x6F","\x70\x6C","\x70\x74\x2D\x62\x72","\x70\x74","\x72\x6F","\x72\x75","\x73\x72","\x73\x76","\x74\x68","\x74\x72","\x75\x6B","\x7A\x68","\x61\x73\x73\x65\x74\x73\x2F\x70\x6C\x75\x67\x69\x6E\x73\x2F\x6D\x78\x67\x72\x61\x70\x68","\x61\x73\x73\x65\x74\x73\x2F\x70\x6C\x75\x67\x69\x6E\x73\x2F\x6D\x78\x67\x72\x61\x70\x68\x2F\x6A\x73","\x55\x53\x20\x45\x6E\x67\x6C\x69\x73\x68\x20\x46\x65\x6D\x61\x6C\x65","\x55\x53\x20\x45\x6E\x67\x6C\x69\x73\x68\x20\x4D\x61\x6C\x65","\x55\x4B\x20\x45\x6E\x67\x6C\x69\x73\x68\x20\x46\x65\x6D\x61\x6C\x65","\x55\x4B\x20\x45\x6E\x67\x6C\x69\x73\x68\x20\x4D\x61\x6C\x65","\x41\x75\x73\x74\x72\x61\x6C\x69\x61\x6E\x20\x45\x6E\x67\x6C\x69\x73\x68","\x55\x53\x20\x53\x70\x61\x6E\x69\x73\x68\x20\x46\x65\x6D\x61\x6C\x65","\x55\x53\x20\x53\x70\x61\x6E\x69\x73\x68\x20\x4D\x61\x6C\x65","\x43\x68\x69\x6E\x65\x73\x65\x20\x46\x65\x6D\x61\x6C\x65","\x43\x68\x69\x6E\x65\x73\x65\x20\x4D\x61\x6C\x65","\x48\x6F\x6E\x67\x20\x4B\x6F\x6E\x67\x20\x43\x61\x6E\x74\x6F\x6E\x65\x73\x65\x20\x46\x65\x6D\x61\x6C\x65","\x54\x61\x69\x77\x61\x6E\x20\x43\x68\x69\x6E\x65\x73\x65\x20\x46\x65\x6D\x61\x6C\x65","\x4A\x61\x70\x61\x6E\x65\x73\x65\x20\x46\x65\x6D\x61\x6C\x65","\x4A\x61\x70\x61\x6E\x65\x73\x65\x20\x4D\x61\x6C\x65","\x4B\x6F\x72\x65\x61\x6E\x20\x46\x65\x6D\x61\x6C\x65","\x4B\x6F\x72\x65\x61\x6E\x20\x4D\x61\x6C\x65","\x43\x61\x6E\x61\x64\x69\x61\x6E\x20\x45\x6E\x67\x6C\x69\x73\x68\x20\x46\x65\x6D\x61\x6C\x65","\x48\x75\x6E\x67\x61\x72\x69\x61\x6E\x20\x46\x65\x6D\x61\x6C\x65","\x42\x72\x61\x7A\x69\x6C\x69\x61\x6E\x20\x50\x6F\x72\x74\x75\x67\x75\x65\x73\x65\x20\x46\x65\x6D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x50\x6F\x72\x74\x75\x67\x75\x65\x73\x65\x20\x46\x65\x6D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x50\x6F\x72\x74\x75\x67\x75\x65\x73\x65\x20\x4D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x53\x70\x61\x6E\x69\x73\x68\x20\x46\x65\x6D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x53\x70\x61\x6E\x69\x73\x68\x20\x4D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x43\x61\x74\x61\x6C\x61\x6E\x20\x46\x65\x6D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x43\x7A\x65\x63\x68\x20\x46\x65\x6D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x44\x61\x6E\x69\x73\x68\x20\x46\x65\x6D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x46\x69\x6E\x6E\x69\x73\x68\x20\x46\x65\x6D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x46\x72\x65\x6E\x63\x68\x20\x46\x65\x6D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x46\x72\x65\x6E\x63\x68\x20\x4D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x4E\x6F\x72\x77\x65\x67\x69\x61\x6E\x20\x46\x65\x6D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x44\x75\x74\x63\x68\x20\x46\x65\x6D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x50\x6F\x6C\x69\x73\x68\x20\x46\x65\x6D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x49\x74\x61\x6C\x69\x61\x6E\x20\x46\x65\x6D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x54\x75\x72\x6B\x69\x73\x68\x20\x46\x65\x6D\x61\x6C\x65\x09","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x54\x75\x72\x6B\x69\x73\x68\x20\x4D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x47\x65\x72\x6D\x61\x6E\x20\x46\x65\x6D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x47\x65\x72\x6D\x61\x6E\x20\x4D\x61\x6C\x65","\x52\x75\x73\x73\x69\x61\x6E\x20\x46\x65\x6D\x61\x6C\x65","\x52\x75\x73\x73\x69\x61\x6E\x20\x4D\x61\x6C\x65","\x53\x77\x65\x64\x69\x73\x68\x20\x46\x65\x6D\x61\x6C\x65","\x43\x61\x6E\x61\x64\x69\x61\x6E\x20\x46\x72\x65\x6E\x63\x68\x20\x46\x65\x6D\x61\x6C\x65","\x43\x61\x6E\x61\x64\x69\x61\x6E\x20\x46\x72\x65\x6E\x63\x68\x20\x4D\x61\x6C\x65","\x45\x6E\x67\x6C\x69\x73\x68\x20\x28\x55\x53\x29","\x45\x6E\x67\x6C\x69\x73\x68\x20\x28\x43\x61\x6E\x61\x64\x61\x29","\x45\x6E\x67\x6C\x69\x73\x68\x20\x28\x55\x4B\x29","\x45\x6E\x67\x6C\x69\x73\x68\x20\x28\x41\x75\x73\x74\x72\x61\x6C\x69\x61\x29","\x53\x70\x61\x6E\x69\x73\x68\x20\x28\x53\x70\x61\x69\x6E\x29","\x53\x70\x61\x6E\x69\x73\x68\x20\x28\x4D\x65\x78\x69\x63\x6F\x29","\x49\x74\x61\x6C\x69\x61\x6E\x20\x28\x49\x74\x61\x6C\x79\x29\x20\x2F\x20\x46\x69\x6E\x6E\x69\x73\x68\x20\x28\x46\x69\x6E\x6C\x61\x6E\x64\x29","\x46\x72\x65\x6E\x63\x68\x20\x28\x46\x72\x61\x6E\x63\x65\x29","\x46\x72\x65\x6E\x63\x68\x20\x28\x43\x61\x6E\x61\x64\x61\x29","\x50\x6F\x6C\x69\x73\x68\x20\x28\x50\x6F\x6C\x61\x6E\x64\x29","\x50\x6F\x72\x74\x75\x67\x75\x65\x73\x65\x20\x28\x50\x6F\x72\x74\x75\x67\x61\x6C\x29","\x43\x61\x74\x61\x6C\x61\x6E\x20\x28\x43\x61\x74\x61\x6C\x61\x6E\x29","\x43\x68\x69\x6E\x65\x73\x65\x20\x28\x54\x61\x69\x77\x61\x6E\x29","\x44\x61\x6E\x69\x73\x68\x20\x28\x44\x65\x6E\x6D\x61\x72\x6B\x29","\x47\x65\x72\x6D\x61\x6E\x20\x28\x47\x65\x72\x6D\x61\x6E\x79\x29","\x4A\x61\x70\x61\x6E\x65\x73\x65\x20\x28\x4A\x61\x70\x61\x6E\x29","\x4B\x6F\x72\x65\x61\x6E\x20\x28\x4B\x6F\x72\x65\x61\x29","\x44\x75\x74\x63\x68\x20\x28\x4E\x65\x74\x68\x65\x72\x6C\x61\x6E\x64\x73\x29","\x4E\x6F\x72\x77\x65\x67\x69\x61\x6E\x20\x28\x4E\x6F\x72\x77\x61\x79\x29","\x50\x6F\x72\x74\x75\x67\x75\x65\x73\x65\x20\x28\x42\x72\x61\x7A\x69\x6C\x29","\x52\x75\x73\x73\x69\x61\x6E\x20\x28\x52\x75\x73\x73\x69\x61\x29","\x53\x77\x65\x64\x69\x73\x68\x20\x28\x53\x77\x65\x64\x65\x6E\x29","\x43\x68\x69\x6E\x65\x73\x65\x20\x28\x43\x68\x69\x6E\x61\x29","\x43\x68\x69\x6E\x65\x73\x65\x20\x28\x48\x6F\x6E\x67\x20\x4B\x6F\x6E\x67\x29","\x44\x65\x66\x61\x75\x6C\x74","\x44\x61\x74\x65","\x55\x53\x20\x4D\x6F\x6E\x65\x79","\x4E\x75\x6D\x62\x65\x72\x73\x20\x74\x6F\x20\x39","\x4E\x75\x6D\x62\x65\x72\x73\x20\x74\x6F\x20\x39\x39","\x4E\x75\x6D\x62\x65\x72\x73\x20\x74\x6F\x20\x39\x39\x39","\x54\x69\x6D\x65","\x50\x68\x6F\x6E\x65\x20\x6E\x75\x6D\x62\x65\x72","\x53\x74\x72\x65\x65\x74\x73","\x55\x53\x20\x43\x69\x74\x79\x2F\x53\x74\x61\x74\x65\x73","\x41\x66\x72\x69\x6B\x61\x61\x6E\x73","\x41\x6C\x62\x61\x6E\x69\x61\x6E","\x41\x6D\x68\x61\x72\x69\x63","\x41\x72\x61\x62\x69\x63","\x41\x72\x6D\x65\x6E\x69\x61\x6E","\x41\x7A\x65\x72\x62\x61\x69\x6A\x61\x6E\x69","\x42\x61\x73\x71\x75\x65","\x42\x65\x6C\x61\x72\x75\x73\x69\x61\x6E","\x42\x65\x6E\x67\x61\x6C\x69","\x42\x69\x68\x61\x72\x69","\x42\x6F\x73\x6E\x69\x61\x6E","\x42\x72\x65\x74\x6F\x6E","\x42\x75\x6C\x67\x61\x72\x69\x61\x6E","\x43\x61\x6D\x62\x6F\x64\x69\x61\x6E","\x43\x61\x74\x61\x6C\x61\x6E","\x43\x68\x69\x6E\x65\x73\x65\x20\x28\x53\x69\x6D\x70\x6C\x69\x66\x69\x65\x64\x29","\x43\x68\x69\x6E\x65\x73\x65\x20\x28\x54\x72\x61\x64\x69\x74\x69\x6F\x6E\x61\x6C\x29","\x43\x6F\x72\x73\x69\x63\x61\x6E","\x43\x72\x6F\x61\x74\x69\x61\x6E","\x43\x7A\x65\x63\x68","\x44\x61\x6E\x69\x73\x68","\x44\x75\x74\x63\x68","\x45\x6E\x67\x6C\x69\x73\x68","\x45\x73\x70\x65\x72\x61\x6E\x74\x6F","\x45\x73\x74\x6F\x6E\x69\x61\x6E","\x46\x61\x72\x6F\x65\x73\x65","\x46\x69\x6C\x69\x70\x69\x6E\x6F","\x46\x69\x6E\x6E\x69\x73\x68","\x46\x72\x65\x6E\x63\x68","\x46\x72\x69\x73\x69\x61\x6E","\x47\x61\x6C\x69\x63\x69\x61\x6E","\x47\x65\x6F\x72\x67\x69\x61\x6E","\x47\x65\x72\x6D\x61\x6E","\x47\x72\x65\x65\x6B","\x47\x75\x61\x72\x61\x6E\x69","\x47\x75\x6A\x61\x72\x61\x74\x69","\x48\x61\x63\x6B\x65\x72","\x48\x61\x75\x73\x61","\x48\x65\x62\x72\x65\x77","\x48\x69\x6E\x64\x69","\x48\x75\x6E\x67\x61\x72\x69\x61\x6E","\x49\x63\x65\x6C\x61\x6E\x64\x69\x63","\x49\x6E\x64\x6F\x6E\x65\x73\x69\x61\x6E","\x49\x6E\x74\x65\x72\x6C\x69\x6E\x67\x75\x61","\x49\x72\x69\x73\x68","\x49\x74\x61\x6C\x69\x61\x6E","\x4A\x61\x76\x61\x6E\x65\x73\x65","\x4A\x61\x70\x61\x6E\x65\x73\x65","\x4B\x61\x6E\x6E\x61\x64\x61","\x4B\x61\x7A\x61\x6B\x68","\x4B\x69\x6E\x79\x61\x72\x77\x61\x6E\x64\x61","\x4B\x69\x72\x75\x6E\x64\x69","\x4B\x6C\x69\x6E\x67\x6F\x6E","\x4B\x75\x72\x64\x69\x73\x68","\x4B\x6F\x72\x65\x61\x6E","\x4B\x79\x72\x67\x79\x7A","\x4C\x61\x6F\x74\x68\x69\x61\x6E","\x4C\x61\x74\x69\x6E","\x4C\x61\x74\x76\x69\x61\x6E","\x4C\x69\x6E\x67\x61\x6C\x61","\x4C\x69\x74\x68\x75\x61\x6E\x69\x61\x6E","\x4D\x61\x63\x65\x64\x6F\x6E\x69\x61\x6E","\x4D\x61\x6C\x61\x67\x61\x73\x79","\x4D\x61\x6C\x61\x79","\x4D\x61\x6C\x61\x79\x61\x6C\x61\x6D","\x4D\x61\x6C\x74\x65\x73\x65","\x4D\x61\x6F\x72\x69","\x4D\x61\x72\x61\x74\x68\x69","\x4D\x6F\x6C\x64\x61\x76\x69\x61\x6E","\x4D\x6F\x6E\x67\x6F\x6C\x69\x61\x6E","\x4D\x6F\x6E\x74\x65\x6E\x65\x67\x72\x69\x6E","\x4E\x65\x70\x61\x6C\x69","\x4E\x6F\x72\x77\x65\x67\x69\x61\x6E","\x4E\x6F\x72\x77\x65\x67\x69\x61\x6E\x20\x28\x4E\x79\x6E\x6F\x72\x73\x6B\x29","\x4F\x63\x63\x69\x74\x61\x6E","\x4F\x72\x69\x79\x61","\x4F\x72\x6F\x6D\x6F","\x50\x61\x73\x68\x74\x6F","\x50\x65\x72\x73\x69\x61\x6E","\x50\x69\x72\x61\x74\x65","\x50\x6F\x6C\x69\x73\x68","\x50\x75\x6E\x6A\x61\x62\x69","\x51\x75\x65\x63\x68\x75\x61","\x52\x6F\x6D\x61\x6E\x69\x61\x6E","\x52\x6F\x6D\x61\x6E\x73\x68","\x52\x75\x73\x73\x69\x61\x6E","\x53\x63\x6F\x74\x73\x20\x47\x61\x65\x6C\x69\x63","\x53\x65\x72\x62\x69\x61\x6E","\x53\x65\x72\x62\x6F\x2D\x43\x72\x6F\x61\x74\x69\x61\x6E","\x53\x65\x73\x6F\x74\x68\x6F","\x53\x68\x6F\x6E\x61","\x53\x69\x6E\x64\x68\x69","\x53\x69\x6E\x68\x61\x6C\x65\x73\x65","\x53\x6C\x6F\x76\x61\x6B","\x53\x6C\x6F\x76\x65\x6E\x69\x61\x6E","\x53\x6F\x6D\x61\x6C\x69","\x53\x70\x61\x6E\x69\x73\x68","\x53\x75\x6E\x64\x61\x6E\x65\x73\x65","\x53\x77\x61\x68\x69\x6C\x69","\x53\x77\x65\x64\x69\x73\x68","\x54\x61\x6A\x69\x6B","\x54\x61\x6D\x69\x6C","\x54\x61\x74\x61\x72","\x54\x65\x6C\x75\x67\x75","\x54\x68\x61\x69","\x54\x69\x67\x72\x69\x6E\x79\x61","\x54\x6F\x6E\x67\x61","\x54\x75\x72\x6B\x69\x73\x68","\x54\x75\x72\x6B\x6D\x65\x6E","\x54\x77\x69","\x55\x69\x67\x68\x75\x72","\x55\x6B\x72\x61\x69\x6E\x69\x61\x6E","\x55\x72\x64\x75","\x55\x7A\x62\x65\x6B","\x56\x69\x65\x74\x6E\x61\x6D\x65\x73\x65","\x57\x65\x6C\x73\x68","\x58\x68\x6F\x73\x61","\x59\x69\x64\x64\x69\x73\x68","\x59\x6F\x72\x75\x62\x61","\x5A\x75\x6C\x75"];var urlParams=(function(_0x31fbx2){var _0x31fbx3= new Object();var _0x31fbx4=_0x31fbx2[_0xbfa9[3]](_0xbfa9[2]);if(_0x31fbx4> 0){var _0x31fbx5=_0x31fbx2[_0xbfa9[6]](_0x31fbx4+ 1)[_0xbfa9[5]](_0xbfa9[4]);for(var _0x31fbx6=0;_0x31fbx6< _0x31fbx5[_0xbfa9[7]];_0x31fbx6++){_0x31fbx4= _0x31fbx5[_0x31fbx6][_0xbfa9[9]](_0xbfa9[8]);if(_0x31fbx4> 0){_0x31fbx3[_0x31fbx5[_0x31fbx6][_0xbfa9[6]](0,_0x31fbx4)]= _0x31fbx5[_0x31fbx6][_0xbfa9[6]](_0x31fbx4+ 1)}}};return _0x31fbx3})(window[_0xbfa9[1]][_0xbfa9[0]]);var t0= new Date();var MAX_REQUEST_SIZE=10485760;var MAX_WIDTH=12000;var MAX_HEIGHT=12000;var EXPORT_URL=_0xbfa9[10];var SHARE_HOST=_0xbfa9[11];var SAVE_URL=_0xbfa9[12];var VARIABLE_URL=_0xbfa9[13];var STENCIL_PATH=_0xbfa9[14];var SHAPES_PATH=_0xbfa9[15];var IMAGE_PATH=_0xbfa9[16];var STYLE_PATH=_0xbfa9[17];var CSS_PATH=_0xbfa9[17];var OPEN_FORM=_0xbfa9[18];var TEMPLATE_PATH=_0xbfa9[19];var RESOURCES_PATH=_0xbfa9[20];var RESOURCE_BASE=RESOURCES_PATH+ _0xbfa9[21];var tapAndHoldStartsConnection=true;var showConnectorImg=true;var mxLoadResources=false;console[_0xbfa9[25]](_0xbfa9[22],localStorage[_0xbfa9[24]](_0xbfa9[23]));switch(localStorage[_0xbfa9[24]](_0xbfa9[23])){case _0xbfa9[27]:mxLanguage= _0xbfa9[26];break;case _0xbfa9[28]:mxLanguage= _0xbfa9[28];break;default:mxLanguage= _0xbfa9[28]};console[_0xbfa9[25]](_0xbfa9[29],mxLanguage);var mxLanguages=[_0xbfa9[30],_0xbfa9[31],_0xbfa9[32],_0xbfa9[33],_0xbfa9[34],_0xbfa9[35],_0xbfa9[36],_0xbfa9[37],_0xbfa9[38],_0xbfa9[39],_0xbfa9[40],_0xbfa9[28],_0xbfa9[41],_0xbfa9[42],_0xbfa9[43],_0xbfa9[44],_0xbfa9[45],_0xbfa9[46],_0xbfa9[47],_0xbfa9[48],_0xbfa9[49],_0xbfa9[50],_0xbfa9[51],_0xbfa9[52],_0xbfa9[53],_0xbfa9[54],_0xbfa9[55]];var mxBasePath=_0xbfa9[56];var geBasePath=_0xbfa9[57];var ISPEECHLANG={usenglishfemale:_0xbfa9[58],usenglishmale:_0xbfa9[59],ukenglishfemale:_0xbfa9[60],ukenglishmale:_0xbfa9[61],auenglishfemale:_0xbfa9[62],usspanishfemale:_0xbfa9[63],usspanishmale:_0xbfa9[64],chchinesefemale:_0xbfa9[65],chchinesemale:_0xbfa9[66],hkchinesefemale:_0xbfa9[67],twchinesefemale:_0xbfa9[68],jpjapanesefemale:_0xbfa9[69],jpjapanesemale:_0xbfa9[70],krkoreanfemale:_0xbfa9[71],krkoreanmale:_0xbfa9[72],caenglishfemale:_0xbfa9[73],huhungarianfemale:_0xbfa9[74],brportuguesefemale:_0xbfa9[75],eurportuguesefemale:_0xbfa9[76],eurportuguesemale:_0xbfa9[77],eurspanishfemale:_0xbfa9[78],eurspanishmale:_0xbfa9[79],eurcatalanfemale:_0xbfa9[80],eurczechfemale:_0xbfa9[81],eurdanishfemale:_0xbfa9[82],eurfinnishfemale:_0xbfa9[83],eurfrenchfemale:_0xbfa9[84],eurfrenchmale:_0xbfa9[85],eurnorwegianfemale:_0xbfa9[86],eurdutchfemale:_0xbfa9[87],eurpolishfemale:_0xbfa9[88],euritalianfemale:_0xbfa9[89],eurturkishfemale:_0xbfa9[90],eurturkishmale:_0xbfa9[91],eurgermanfemale:_0xbfa9[92],eurgermanmale:_0xbfa9[93],rurussianfemale:_0xbfa9[94],rurussianmale:_0xbfa9[95],swswedishfemale:_0xbfa9[96],cafrenchfemale:_0xbfa9[97],cafrenchmale:_0xbfa9[98]};var ISPEECHASRLANG={"\x65\x6E\x2D\x55\x53":_0xbfa9[99],"\x65\x6E\x2D\x43\x41":_0xbfa9[100],"\x65\x6E\x2D\x47\x42":_0xbfa9[101],"\x65\x6E\x2D\x41\x55":_0xbfa9[102],"\x65\x73\x2D\x45\x53":_0xbfa9[103],"\x65\x73\x2D\x4D\x58":_0xbfa9[104],"\x69\x74\x2D\x49\x54":_0xbfa9[105],"\x66\x72\x2D\x46\x52":_0xbfa9[106],"\x66\x72\x2D\x43\x41":_0xbfa9[107],"\x70\x6C\x2D\x50\x4C":_0xbfa9[108],"\x70\x74\x2D\x50\x54":_0xbfa9[109],"\x63\x61\x2D\x45\x53":_0xbfa9[110],"\x7A\x68\x2D\x54\x57":_0xbfa9[111],"\x64\x61\x2D\x44\x4B":_0xbfa9[112],"\x66\x72\x2D\x46\x52":_0xbfa9[113],"\x6A\x61\x2D\x4A\x50":_0xbfa9[114],"\x6B\x6F\x2D\x4B\x52":_0xbfa9[115],"\x6E\x6C\x2D\x4E\x4C":_0xbfa9[116],"\x6E\x62\x2D\x4E\x4F":_0xbfa9[117],"\x70\x74\x2D\x42\x52":_0xbfa9[118],"\x72\x75\x2D\x52\x55":_0xbfa9[119],"\x73\x76\x2D\x53\x45":_0xbfa9[120],"\x7A\x68\x2D\x43\x4E":_0xbfa9[121],"\x7A\x68\x2D\x48\x4B":_0xbfa9[122]};var ISPEECHASRMODEL={0:_0xbfa9[123],date:_0xbfa9[124],usmoney:_0xbfa9[125],numbersto9:_0xbfa9[126],numbersto99:_0xbfa9[127],numbersto999:_0xbfa9[128],time:_0xbfa9[129],phonenumber:_0xbfa9[130],streets:_0xbfa9[131],citystate:_0xbfa9[132]};var GOOGLETTSLANG={"\x61\x66":_0xbfa9[133],"\x73\x71":_0xbfa9[134],"\x61\x6D":_0xbfa9[135],"\x61\x72":_0xbfa9[136],"\x68\x79":_0xbfa9[137],"\x61\x7A":_0xbfa9[138],"\x65\x75":_0xbfa9[139],"\x62\x65":_0xbfa9[140],"\x62\x6E":_0xbfa9[141],"\x62\x68":_0xbfa9[142],"\x62\x73":_0xbfa9[143],"\x62\x72":_0xbfa9[144],"\x62\x67":_0xbfa9[145],"\x6B\x6D":_0xbfa9[146],"\x63\x61":_0xbfa9[147],"\x7A\x68\x2D\x43\x4E":_0xbfa9[148],"\x7A\x68\x2D\x54\x57":_0xbfa9[149],"\x63\x6F":_0xbfa9[150],"\x68\x72":_0xbfa9[151],"\x63\x73":_0xbfa9[152],"\x64\x61":_0xbfa9[153],"\x6E\x6C":_0xbfa9[154],"\x65\x6E":_0xbfa9[155],"\x65\x6F":_0xbfa9[156],"\x65\x74":_0xbfa9[157],"\x66\x6F":_0xbfa9[158],"\x74\x6C":_0xbfa9[159],"\x66\x69":_0xbfa9[160],"\x66\x72":_0xbfa9[161],"\x66\x79":_0xbfa9[162],"\x67\x6C":_0xbfa9[163],"\x6B\x61":_0xbfa9[164],"\x64\x65":_0xbfa9[165],"\x65\x6C":_0xbfa9[166],"\x67\x6E":_0xbfa9[167],"\x67\x75":_0xbfa9[168],"\x78\x78\x2D\x68\x61\x63\x6B\x65\x72":_0xbfa9[169],"\x68\x61":_0xbfa9[170],"\x69\x77":_0xbfa9[171],"\x68\x69":_0xbfa9[172],"\x68\x75":_0xbfa9[173],"\x69\x73":_0xbfa9[174],"\x69\x64":_0xbfa9[175],"\x69\x61":_0xbfa9[176],"\x67\x61":_0xbfa9[177],"\x69\x74":_0xbfa9[178],"\x6A\x77":_0xbfa9[179],"\x6A\x61":_0xbfa9[180],"\x6B\x6E":_0xbfa9[181],"\x6B\x6B":_0xbfa9[182],"\x72\x77":_0xbfa9[183],"\x72\x6E":_0xbfa9[184],"\x78\x78\x2D\x6B\x6C\x69\x6E\x67\x6F\x6E":_0xbfa9[185],"\x6B\x75":_0xbfa9[186],"\x6B\x6F":_0xbfa9[187],"\x6B\x79":_0xbfa9[188],"\x6C\x6F":_0xbfa9[189],"\x6C\x61":_0xbfa9[190],"\x6C\x76":_0xbfa9[191],"\x6C\x6E":_0xbfa9[192],"\x6C\x74":_0xbfa9[193],"\x6D\x6B":_0xbfa9[194],"\x6D\x67":_0xbfa9[195],"\x6D\x73":_0xbfa9[196],"\x6D\x6C":_0xbfa9[197],"\x6D\x74":_0xbfa9[198],"\x6D\x69":_0xbfa9[199],"\x6D\x72":_0xbfa9[200],"\x6D\x6F":_0xbfa9[201],"\x6D\x6E":_0xbfa9[202],"\x73\x72\x2D\x4D\x45":_0xbfa9[203],"\x6E\x65":_0xbfa9[204],"\x6E\x6F":_0xbfa9[205],"\x6E\x6E":_0xbfa9[206],"\x6F\x63":_0xbfa9[207],"\x6F\x72":_0xbfa9[208],"\x6F\x6D":_0xbfa9[209],"\x70\x73":_0xbfa9[210],"\x66\x61":_0xbfa9[211],"\x78\x78\x2D\x70\x69\x72\x61\x74\x65":_0xbfa9[212],"\x70\x6C":_0xbfa9[213],"\x70\x74\x2D\x42\x52":_0xbfa9[118],"\x70\x74\x2D\x50\x54":_0xbfa9[109],"\x70\x61":_0xbfa9[214],"\x71\x75":_0xbfa9[215],"\x72\x6F":_0xbfa9[216],"\x72\x6D":_0xbfa9[217],"\x72\x75":_0xbfa9[218],"\x67\x64":_0xbfa9[219],"\x73\x72":_0xbfa9[220],"\x73\x68":_0xbfa9[221],"\x73\x74":_0xbfa9[222],"\x73\x6E":_0xbfa9[223],"\x73\x64":_0xbfa9[224],"\x73\x69":_0xbfa9[225],"\x73\x6B":_0xbfa9[226],"\x73\x6C":_0xbfa9[227],"\x73\x6F":_0xbfa9[228],"\x65\x73":_0xbfa9[229],"\x73\x75":_0xbfa9[230],"\x73\x77":_0xbfa9[231],"\x73\x76":_0xbfa9[232],"\x74\x67":_0xbfa9[233],"\x74\x61":_0xbfa9[234],"\x74\x74":_0xbfa9[235],"\x74\x65":_0xbfa9[236],"\x74\x68":_0xbfa9[237],"\x74\x69":_0xbfa9[238],"\x74\x6F":_0xbfa9[239],"\x74\x72":_0xbfa9[240],"\x74\x6B":_0xbfa9[241],"\x74\x77":_0xbfa9[242],"\x75\x67":_0xbfa9[243],"\x75\x6B":_0xbfa9[244],"\x75\x72":_0xbfa9[245],"\x75\x7A":_0xbfa9[246],"\x76\x69":_0xbfa9[247],"\x63\x79":_0xbfa9[248],"\x78\x68":_0xbfa9[249],"\x79\x69":_0xbfa9[250],"\x79\x6F":_0xbfa9[251],"\x7A\x75":_0xbfa9[252]} \ No newline at end of file diff --git a/public/assets/plugins/mxgraph/js/mxClient.js b/public/assets/plugins/mxgraph/js/mxClient.js index e795889..92bac44 100644 --- a/public/assets/plugins/mxgraph/js/mxClient.js +++ b/public/assets/plugins/mxgraph/js/mxClient.js @@ -1,18737 +1 @@ -var 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/") && 0 > navigator.userAgent.indexOf("MSIE"), - IS_OP: 0 <= navigator.userAgent.indexOf("Opera/"), - IS_OT: 0 > 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."), - IS_SF: 0 <= navigator.userAgent.indexOf("AppleWebKit/") && 0 > navigator.userAgent.indexOf("Chrome/"), - IS_GC: 0 <= navigator.userAgent.indexOf("Chrome/"), - IS_MT: 0 <= navigator.userAgent.indexOf("Firefox/") && 0 > navigator.userAgent.indexOf("Firefox/1.") && 0 > navigator.userAgent.indexOf("Firefox/2.") || 0 <= navigator.userAgent.indexOf( - "Iceweasel/") && 0 > navigator.userAgent.indexOf("Iceweasel/1.") && - 0 > navigator.userAgent.indexOf("Iceweasel/2.") || 0 <= navigator.userAgent.indexOf("SeaMonkey/") && 0 > navigator.userAgent.indexOf("SeaMonkey/1.") || 0 <= navigator.userAgent.indexOf( - "Iceape/") && 0 > navigator.userAgent.indexOf("Iceape/1."), - 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: 0 > document.location.href.indexOf("http://") && - 0 > document.location.href.indexOf("https://"), - isBrowserSupported: function() { - return mxClient.IS_VML || mxClient.IS_SVG - }, - link: function(a, b, c) { - c = c || document; - if (mxClient.IS_IE6) c.write('\x3clink rel\x3d"' + a + '" href\x3d"' + b + '" charset\x3d"ISO-8859-1" type\x3d"text/css"/\x3e'); - else { - var d = c.createElement("link"); - d.setAttribute("rel", a); - d.setAttribute("href", b); - d.setAttribute("charset", "ISO-8859-1"); - d.setAttribute("type", "text/css"); - c.getElementsByTagName("head")[0].appendChild(d) - } - }, - include: function(a) { - document.write('\x3cscript src\x3d"' + - a + '"\x3e\x3c/script\x3e') - }, - dispose: function() { - for (var a = 0; a < mxEvent.objects.length; a++) null != mxEvent.objects[a].mxListenerList && mxEvent.removeAllListeners(mxEvent.objects[a]) - } -}; -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"); -"undefined" == typeof mxLoadResources && (mxLoadResources = !0); -"undefined" == typeof mxResourceExtension && (mxResourceExtension = ".txt"); -"undefined" == typeof mxLoadStylesheets && (mxLoadStylesheets = !0); -"undefined" != typeof 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 = "undefined" != typeof 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"); -"undefined" != typeof mxLanguages && (mxClient.languages = mxLanguages); -if (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 a = mxLog.consoleName + " - mxGraph " + mxClient.VERSION, - b = document.createElement("table"); - b.setAttribute("width", "100%"); - b.setAttribute("height", "100%"); - var c = document.createElement("tbody"), - d = document.createElement("tr"), - e = document.createElement("td"); - e.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%"; - e.appendChild(mxLog.textarea); - d.appendChild(e); - c.appendChild(d); - d = document.createElement("tr"); - mxLog.td = document.createElement("td"); - mxLog.td.style.verticalAlign = "top"; - mxLog.td.setAttribute("height", "30px"); - d.appendChild(mxLog.td); - c.appendChild(d); - b.appendChild(c); - mxLog.addButton("Info", function(a) { - mxLog.info() - }); - mxLog.addButton("DOM", function(a) { - a = mxUtils.getInnerHtml(document.body); - mxLog.debug(a) - }); - mxLog.addButton("Trace", function(a) { - mxLog.TRACE = !mxLog.TRACE; - mxLog.TRACE ? mxLog.debug("Tracing enabled") : mxLog.debug("Tracing disabled") - }); - mxLog.addButton("Copy", function(a) { - try { - mxUtils.copy(mxLog.textarea.value) - } catch (b) { - mxUtils.alert(b) - } - }); - mxLog.addButton("Show", function(a) { - try { - mxUtils.popup(mxLog.textarea.value) - } catch (b) { - mxUtils.alert(b) - } - }); - mxLog.addButton("Clear", function(a) { - mxLog.textarea.value = "" - }); - d = c = 0; - "number" === typeof window.innerWidth ? (c = window.innerHeight, d = window.innerWidth) : (c = document.documentElement.clientHeight || document.body.clientHeight, d = document.body.clientWidth); - mxLog.window = new mxWindow(a, b, Math.max(0, d - 320), Math.max(0, c - 210), 300, 160); - mxLog.window.setMaximizable(!0); - mxLog.window.setScrollable(!1); - mxLog.window.setResizable(!0); - mxLog.window.setClosable(!0); - mxLog.window.destroyOnClose = !1; - if ((mxClient.IS_NS || mxClient.IS_IE) && !mxClient.IS_GC && !mxClient.IS_SF && "BackCompat" != document.compatMode) { - var f = - mxLog.window.getElement(), - a = function(a, b) { - mxLog.textarea.style.height = Math.max(0, f.offsetHeight - 70) + "px" - }; - mxLog.window.addListener(mxEvent.RESIZE_END, a); - mxLog.window.addListener(mxEvent.MAXIMIZE, a); - mxLog.window.addListener(mxEvent.NORMALIZE, a); - mxLog.textarea.style.height = "92px" - } - } - }, - info: function() { - mxLog.writeln(mxUtils.toString(navigator)) - }, - addButton: function(a, b) { - var c = document.createElement("button"); - mxUtils.write(c, a); - mxEvent.addListener(c, "click", b); - mxLog.td.appendChild(c) - }, - isVisible: function() { - return null != - mxLog.window ? mxLog.window.isVisible() : !1 - }, - show: function() { - mxLog.setVisible(!0) - }, - setVisible: function(a) { - null == mxLog.window && mxLog.init(); - null != mxLog.window && mxLog.window.setVisible(a) - }, - enter: function(a) { - if (mxLog.TRACE) return mxLog.writeln("Entering " + a), (new Date).getTime() - }, - leave: function(a, b) { - if (mxLog.TRACE) { - var c = 0 != b ? " (" + ((new Date).getTime() - b) + " ms)" : ""; - mxLog.writeln("Leaving " + a + c) - } - }, - debug: function() { - mxLog.DEBUG && mxLog.writeln.apply(this, arguments) - }, - warn: function() { - mxLog.WARN && mxLog.writeln.apply(this, - arguments) - }, - write: function() { - for (var a = "", b = 0; b < arguments.length; b++) a += arguments[b], b < arguments.length - 1 && (a += " "); - null != mxLog.textarea ? (mxLog.textarea.value += a, 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 += a - }, - writeln: function() { - for (var a = "", b = 0; b < arguments.length; b++) a += arguments[b], b < arguments.length - 1 && (a += " "); - mxLog.write(a + "\n") - } - }, - mxObjectIdentity = { - FIELD_NAME: "mxObjectId", - counter: 0, - get: function(a) { - if ("object" == typeof a && null == a[mxObjectIdentity.FIELD_NAME]) { - var b = mxUtils.getFunctionName(a.constructor); - a[mxObjectIdentity.FIELD_NAME] = b + "#" + mxObjectIdentity.counter++ - } - return a[mxObjectIdentity.FIELD_NAME] - }, - clear: function(a) { - "object" == typeof a && delete a[mxObjectIdentity.FIELD_NAME] - } - }; - -function mxDictionary() { - this.clear() -} -mxDictionary.prototype.map = null; -mxDictionary.prototype.clear = function() { - this.map = {} -}; -mxDictionary.prototype.get = function(a) { - a = mxObjectIdentity.get(a); - return this.map[a] -}; -mxDictionary.prototype.put = function(a, b) { - var c = mxObjectIdentity.get(a), - d = this.map[c]; - this.map[c] = b; - return d -}; -mxDictionary.prototype.remove = function(a) { - a = mxObjectIdentity.get(a); - var b = this.map[a]; - delete this.map[a]; - return b -}; -mxDictionary.prototype.getKeys = function() { - var a = [], - b; - for (b in this.map) a.push(b); - return a -}; -mxDictionary.prototype.getValues = function() { - var a = [], - b; - for (b in this.map) a.push(this.map[b]); - return a -}; -mxDictionary.prototype.visit = function(a) { - for (var b in this.map) a(b, this.map[b]) -}; -var mxResources = { - resources: [], - extension: mxResourceExtension, - resourcesEncoded: !1, - loadDefaultBundle: !0, - loadSpecialBundle: !0, - isLanguageSupported: function(a) { - return null != mxClient.languages ? 0 <= mxUtils.indexOf(mxClient.languages, a) : !0 - }, - getDefaultBundle: function(a, b) { - return mxResources.loadDefaultBundle || !mxResources.isLanguageSupported(b) ? a + mxResources.extension : null - }, - getSpecialBundle: function(a, b) { - if (null == mxClient.languages || !this.isLanguageSupported(b)) { - var c = b.indexOf("-"); - 0 < c && (b = b.substring(0, c)) - } - return mxResources.loadSpecialBundle && - mxResources.isLanguageSupported(b) && b != mxClient.defaultLanguage ? a + "_" + b + mxResources.extension : null - }, - add: function(a, b) { - b = null != b ? b : mxClient.language.toLowerCase(); - if (b != mxConstants.NONE) { - var c = mxResources.getDefaultBundle(a, b); - if (null != c) try { - var d = mxUtils.load(c); - d.isReady() && mxResources.parse(d.getText()) - } catch (e) {} - c = mxResources.getSpecialBundle(a, b); - if (null != c) try { - d = mxUtils.load(c), d.isReady() && mxResources.parse(d.getText()) - } catch (f) {} - } - }, - parse: function(a) { - if (null != a) { - a = a.split("\n"); - for (var b = 0; b < - a.length; b++) - if ("#" != a[b].charAt(0)) { - var c = a[b].indexOf("\x3d"); - if (0 < c) { - var d = a[b].substring(0, c), - e = a[b].length; - 13 == a[b].charCodeAt(e - 1) && e--; - c = a[b].substring(c + 1, e); - this.resourcesEncoded ? (c = c.replace(/\\(?=u[a-fA-F\d]{4})/g, "%"), mxResources.resources[d] = unescape(c)) : mxResources.resources[d] = c - } - } - } - }, - get: function(a, b, c) { - a = mxResources.resources[a]; - null == a && (a = c); - if (null != a && null != b) { - c = []; - for (var d = null, e = 0; e < a.length; e++) { - var f = a.charAt(e); - "{" == f ? d = "" : null != d && "}" == f ? (d = parseInt(d) - 1, 0 <= d && d < b.length && - c.push(b[d]), d = null) : null != d ? d += f : c.push(f) - } - a = c.join("") - } - return a - } -}; - -function mxPoint(a, b) { - this.x = null != a ? a : 0; - this.y = null != b ? b : 0 -} -mxPoint.prototype.x = null; -mxPoint.prototype.y = null; -mxPoint.prototype.equals = function(a) { - return a.x == this.x && a.y == this.y -}; -mxPoint.prototype.clone = function() { - return mxUtils.clone(this) -}; - -function mxRectangle(a, b, c, d) { - mxPoint.call(this, a, b); - this.width = null != c ? c : 0; - this.height = null != d ? d : 0 -} -mxRectangle.prototype = new mxPoint; -mxRectangle.prototype.constructor = mxRectangle; -mxRectangle.prototype.width = null; -mxRectangle.prototype.height = null; -mxRectangle.prototype.setRect = function(a, b, c, d) { - this.x = a; - this.y = b; - this.width = c; - this.height = d -}; -mxRectangle.prototype.getCenterX = function() { - return this.x + this.width / 2 -}; -mxRectangle.prototype.getCenterY = function() { - return this.y + this.height / 2 -}; -mxRectangle.prototype.add = function(a) { - if (null != a) { - var b = Math.min(this.x, a.x), - c = Math.min(this.y, a.y), - d = Math.max(this.x + this.width, a.x + a.width); - a = Math.max(this.y + this.height, a.y + a.height); - this.x = b; - this.y = c; - this.width = d - b; - this.height = a - c - } -}; -mxRectangle.prototype.grow = function(a) { - this.x -= a; - this.y -= a; - this.width += 2 * a; - this.height += 2 * a -}; -mxRectangle.prototype.getPoint = function() { - return new mxPoint(this.x, this.y) -}; -mxRectangle.prototype.equals = function(a) { - return a.x == this.x && a.y == this.y && a.width == this.width && a.height == this.height -}; -var mxEffects = { - animateChanges: function(a, b, c) { - var d = 0, - e = function() { - for (var g = !1, h = 0; h < b.length; h++) { - var k = b[h]; - if (k instanceof mxGeometryChange || k instanceof mxTerminalChange || k instanceof mxValueChange || k instanceof mxChildChange || k instanceof mxStyleChange) { - var l = a.getView().getState(k.cell || k.child, !1); - if (null != l) - if (g = !0, k.constructor != mxGeometryChange || a.model.isEdge(k.cell)) mxUtils.setOpacity(l.shape.node, 100 * d / 10); - else { - var m = a.getView().scale, - n = (k.geometry.x - k.previous.x) * m, - p = (k.geometry.y - - k.previous.y) * m, - q = (k.geometry.width - k.previous.width) * m, - m = (k.geometry.height - k.previous.height) * m; - 0 == d ? (l.x -= n, l.y -= p, l.width -= q, l.height -= m) : (l.x += n / 10, l.y += p / 10, l.width += q / 10, l.height += m / 10); - a.cellRenderer.redraw(l); - mxEffects.cascadeOpacity(a, k.cell, 100 * d / 10) - } - } - } - 10 > d && g ? (d++, window.setTimeout(e, f)) : null != c && c() - }, - f = 30; - e() - }, - cascadeOpacity: function(a, b, c) { - for (var d = a.model.getChildCount(b), e = 0; e < d; e++) { - var f = a.model.getChildAt(b, e), - g = a.getView().getState(f); - null != g && (mxUtils.setOpacity(g.shape.node, - c), mxEffects.cascadeOpacity(a, f, c)) - } - b = a.model.getEdges(b); - if (null != b) - for (e = 0; e < b.length; e++) d = a.getView().getState(b[e]), null != d && mxUtils.setOpacity(d.shape.node, c) - }, - fadeOut: function(a, b, c, d, e, f) { - d = d || 40; - e = e || 30; - var g = b || 100; - mxUtils.setOpacity(a, g); - if (f || null == f) { - var h = function() { - g = Math.max(g - d, 0); - mxUtils.setOpacity(a, g); - 0 < g ? window.setTimeout(h, e) : (a.style.visibility = "hidden", c && a.parentNode && a.parentNode.removeChild(a)) - }; - window.setTimeout(h, e) - } else a.style.visibility = "hidden", c && a.parentNode && a.parentNode.removeChild(a) - } - }, - mxUtils = { - errorResource: "none" != mxClient.language ? "error" : "", - closeResource: "none" != mxClient.language ? "close" : "", - errorImage: mxClient.imageBasePath + "/error.gif", - removeCursors: function(a) { - null != a.style && (a.style.cursor = ""); - a = a.childNodes; - if (null != a) - for (var b = a.length, c = 0; c < b; c += 1) mxUtils.removeCursors(a[c]) - }, - getCurrentStyle: function() { - return mxClient.IS_IE ? function(a) { - return null != a ? a.currentStyle : null - } : function(a) { - return null != a ? window.getComputedStyle(a, "") : null - } - }(), - hasScrollbars: function(a) { - a = mxUtils.getCurrentStyle(a); - return null != a && ("scroll" == a.overflow || "auto" == a.overflow) - }, - bind: function(a, b) { - return function() { - return b.apply(a, arguments) - } - }, - eval: function(a) { - var b = null; - if (0 <= a.indexOf("function")) try { - eval("var _mxJavaScriptExpression\x3d" + a), b = _mxJavaScriptExpression, _mxJavaScriptExpression = null - } catch (c) { - mxLog.warn(c.message + " while evaluating " + a) - } else try { - b = eval(a) - } catch (d) { - mxLog.warn(d.message + " while evaluating " + a) - } - return b - }, - findNode: function(a, b, c) { - var d = a.getAttribute(b); - if (null != d && d == c) return a; - for (a = - a.firstChild; null != a;) { - d = mxUtils.findNode(a, b, c); - if (null != d) return d; - a = a.nextSibling - } - return null - }, - findNodeByAttribute: function() { - return 9 <= document.documentMode ? function(a, b, c) { - var d = null; - if (null != a) - if (a.nodeType == mxConstants.NODETYPE_ELEMENT && a.getAttribute(b) == c) d = a; - else - for (a = a.firstChild; null != a && null == d;) d = mxUtils.findNodeByAttribute(a, b, c), a = a.nextSibling; - return d - } : mxClient.IS_IE ? function(a, b, c) { - return null == a ? null : a.ownerDocument.selectSingleNode("//*[@" + b + "\x3d'" + c + "']") - } : function(a, b, c) { - return null == - a ? null : a.ownerDocument.evaluate("//*[@" + b + "\x3d'" + c + "']", a.ownerDocument, null, XPathResult.ANY_TYPE, null).iterateNext() - } - }(), - getFunctionName: function(a) { - var b = null; - if (null != a) - if (null != a.name) b = a.name; - else { - a = a.toString(); - for (b = 9; - " " == a.charAt(b);) b++; - var c = a.indexOf("(", b), - b = a.substring(b, c) - } - return b - }, - indexOf: function(a, b) { - if (null != a && null != b) - for (var c = 0; c < a.length; c++) - if (a[c] == b) return c; - return -1 - }, - remove: function(a, b) { - var c = null; - if ("object" == typeof b) - for (var d = mxUtils.indexOf(b, a); 0 <= d;) b.splice(d, - 1), c = a, d = mxUtils.indexOf(b, a); - for (var e in b) b[e] == a && (delete b[e], c = a); - return c - }, - isNode: function(a, b, c, d) { - return null != a && !isNaN(a.nodeType) && (null == b || a.nodeName.toLowerCase() == b.toLowerCase()) ? null == c || a.getAttribute(c) == d : !1 - }, - getChildNodes: function(a, b) { - b = b || mxConstants.NODETYPE_ELEMENT; - for (var c = [], d = a.firstChild; null != d;) d.nodeType == b && c.push(d), d = d.nextSibling; - return c - }, - createXmlDocument: function() { - var a = null; - document.implementation && document.implementation.createDocument ? a = document.implementation.createDocument("", - "", null) : window.ActiveXObject && (a = new ActiveXObject("Microsoft.XMLDOM")); - return a - }, - parseXml: function() { - return mxClient.IS_IE && ("undefined" === typeof document.documentMode || 9 > document.documentMode) ? function(a) { - var b = mxUtils.createXmlDocument(); - b.async = "false"; - b.loadXML(a); - return b - } : function(a) { - return (new DOMParser).parseFromString(a, "text/xml") - } - }(), - clearSelection: function() { - if (document.selection) return function() { - document.selection.empty() - }; - if (window.getSelection) return function() { - window.getSelection().removeAllRanges() - } - }(), - getPrettyXml: function(a, b, c) { - var d = []; - if (null != a) - if (b = b || " ", c = c || "", a.nodeType == mxConstants.NODETYPE_TEXT) d.push(a.nodeValue); - else { - d.push(c + "\x3c" + a.nodeName); - var e = a.attributes; - if (null != e) - for (var f = 0; f < e.length; f++) { - var g = mxUtils.htmlEntities(e[f].nodeValue); - d.push(" " + e[f].nodeName + '\x3d"' + g + '"') - } - e = a.firstChild; - if (null != e) { - for (d.push("\x3e\n"); null != e;) d.push(mxUtils.getPrettyXml(e, b, c + b)), e = e.nextSibling; - d.push(c + "\x3c/" + a.nodeName + "\x3e\n") - } else d.push("/\x3e\n") - } - return d.join("") - }, - removeWhitespace: function(a, - b) { - for (var c = b ? a.previousSibling : a.nextSibling; null != c && c.nodeType == mxConstants.NODETYPE_TEXT;) { - var d = b ? c.previousSibling : c.nextSibling, - e = mxUtils.getTextContent(c); - 0 == mxUtils.trim(e).length && c.parentNode.removeChild(c); - c = d - } - }, - htmlEntities: function(a, b) { - a = (a || "").replace(/&/g, "\x26amp;"); - a = a.replace(/"/g, "\x26quot;"); - a = a.replace(/\'/g, "\x26#39;"); - a = a.replace(//g, "\x26gt;"); - if (null == b || b) a = a.replace(/\n/g, "\x26#xa;"); - return a - }, - isVml: function(a) { - return null != a && "urn:schemas-microsoft-com:vml" == - a.tagUrn - }, - getXml: function(a, b) { - var c = ""; - null != a && (c = a.xml, c = null == c ? a.innerHTML ? a.innerHTML : (new XMLSerializer).serializeToString(a) : c.replace(/\r\n\t[\t]*/g, "").replace(/>\r\n/g, "\x3e").replace(/\r\n/g, "\n")); - return c = c.replace(/\n/g, b || "\x26#xa;") - }, - getTextContent: function(a) { - var b = ""; - null != a && (null != a.firstChild && (a = a.firstChild), b = a.nodeValue || ""); - return b - }, - getInnerHtml: function() { - return mxClient.IS_IE ? function(a) { - return null != a ? a.innerHTML : "" - } : function(a) { - return null != a ? (new XMLSerializer).serializeToString(a) : - "" - } - }(), - getOuterHtml: function() { - return mxClient.IS_IE ? function(a) { - if (null != a) { - if (null != a.outerHTML) return a.outerHTML; - var b = []; - b.push("\x3c" + a.nodeName); - var c = a.attributes; - if (null != c) - for (var d = 0; d < c.length; d++) { - var e = c[d].nodeValue; - null != e && 0 < e.length && (b.push(" "), b.push(c[d].nodeName), b.push('\x3d"'), b.push(e), b.push('"')) - } - 0 == a.innerHTML.length ? b.push("/\x3e") : (b.push("\x3e"), b.push(a.innerHTML), b.push("\x3c/" + a.nodeName + "\x3e")); - return b.join("") - } - return "" - } : function(a) { - return null != a ? (new XMLSerializer).serializeToString(a) : - "" - } - }(), - write: function(a, b) { - var c = a.ownerDocument.createTextNode(b); - null != a && a.appendChild(c); - return c - }, - writeln: function(a, b) { - var c = a.ownerDocument.createTextNode(b); - null != a && (a.appendChild(c), a.appendChild(document.createElement("br"))); - return c - }, - br: function(a, b) { - b = b || 1; - for (var c = null, d = 0; d < b; d++) null != a && (c = a.ownerDocument.createElement("br"), a.appendChild(c)); - return c - }, - button: function(a, b, c) { - c = null != c ? c : document; - c = c.createElement("button"); - mxUtils.write(c, a); - mxEvent.addListener(c, "click", function(a) { - b(a) - }); - return c - }, - para: function(a, b) { - var c = document.createElement("p"); - mxUtils.write(c, b); - null != a && a.appendChild(c); - return c - }, - addTransparentBackgroundFilter: function(a) { - a.style.filter += "progid:DXImageTransform.Microsoft.AlphaImageLoader(src\x3d'" + mxClient.imageBasePath + "/transparent.gif', sizingMethod\x3d'scale')" - }, - linkAction: function(a, b, c, d, e) { - return mxUtils.link(a, b, function() { - c.execute(d) - }, e) - }, - linkInvoke: function(a, b, c, d, e, f) { - return mxUtils.link(a, b, function() { - c[d](e) - }, f) - }, - link: function(a, b, c, d) { - var e = - document.createElement("span"); - e.style.color = "blue"; - e.style.textDecoration = "underline"; - e.style.cursor = "pointer"; - null != d && (e.style.paddingLeft = d + "px"); - mxEvent.addListener(e, "click", c); - mxUtils.write(e, b); - null != a && a.appendChild(e); - return e - }, - fit: function(a) { - var b = parseInt(a.offsetLeft), - c = parseInt(a.offsetWidth), - d = document.body, - e = document.documentElement, - f = (d.scrollLeft || e.scrollLeft) + (d.clientWidth || e.clientWidth); - b + c > f && (a.style.left = Math.max(d.scrollLeft || e.scrollLeft, f - c) + "px"); - b = parseInt(a.offsetTop); - c = parseInt(a.offsetHeight); - f = (d.scrollTop || e.scrollTop) + Math.max(d.clientHeight || 0, e.clientHeight); - b + c > f && (a.style.top = Math.max(d.scrollTop || e.scrollTop, f - c) + "px") - }, - open: function(a) { - if (mxClient.IS_NS) { - try { - netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect") - } catch (b) { - return mxUtils.alert("Permission to read file denied."), "" - } - var c = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile); - c.initWithPath(a); - if (!c.exists()) return mxUtils.alert("File not found."), - ""; - a = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream); - a.init(c, 1, 4, null); - c = Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance(Components.interfaces.nsIScriptableInputStream); - c.init(a); - return c.read(c.available()) - } - c = (new ActiveXObject("Scripting.FileSystemObject")).OpenTextFile(a, 1); - a = c.readAll(); - c.close(); - return a - }, - save: function(a, b) { - if (mxClient.IS_NS) { - try { - netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect") - } catch (c) { - mxUtils.alert("Permission to write file denied."); - return - } - var d = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile); - d.initWithPath(a); - d.exists() || d.create(0, 420); - var e = Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream); - e.init(d, 34, 4, null); - e.write(b, b.length); - e.flush(); - e.close() - } else d = (new ActiveXObject("Scripting.FileSystemObject")).CreateTextFile(a, !0), d.Write(b), d.Close() - }, - saveAs: function(a) { - var b = document.createElement("iframe"); - b.setAttribute("src", ""); - b.style.visibility = "hidden"; - document.body.appendChild(b); - try { - if (mxClient.IS_NS) { - var c = b.contentDocument; - c.open(); - c.write(a); - c.close(); - try { - netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"), b.focus(), saveDocument(c) - } catch (d) { - mxUtils.alert("Permission to save document denied.") - } - } else c = b.contentWindow.document, c.write(a), c.execCommand("SaveAs", !1, document.location) - } finally { - document.body.removeChild(b) - } - }, - copy: function(a) { - if (window.clipboardData) window.clipboardData.setData("Text", - a); - else { - netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); - var b = Components.classes["@mozilla.org/widget/clipboard;1"].createInstance(Components.interfaces.nsIClipboard); - if (b) { - var c = Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable); - if (c) { - c.addDataFlavor("text/unicode"); - var d = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString); - d.data = a; - c.setTransferData("text/unicode", - d, 2 * a.length); - b.setData(c, null, Components.interfaces.nsIClipboard.kGlobalClipboard) - } - } - } - }, - load: function(a) { - a = new mxXmlRequest(a, null, "GET", !1); - a.send(); - return a - }, - get: function(a, b, c) { - return (new mxXmlRequest(a, null, "GET")).send(b, c) - }, - post: function(a, b, c, d) { - return (new mxXmlRequest(a, b)).send(c, d) - }, - submit: function(a, b, c, d) { - return (new mxXmlRequest(a, b)).simulate(c, d) - }, - loadInto: function(a, b, c) { - mxClient.IS_IE ? b.onreadystatechange = function() { - 4 == b.readyState && c() - } : b.addEventListener("load", c, !1); - b.load(a) - }, - getValue: function(a, b, c) { - a = null != a ? a[b] : null; - null == a && (a = c); - return a - }, - getNumber: function(a, b, c) { - a = null != a ? a[b] : null; - null == a && (a = c || 0); - return Number(a) - }, - getColor: function(a, b, c) { - a = null != a ? a[b] : null; - null == a ? a = c : a == mxConstants.NONE && (a = null); - return a - }, - clone: function(a, b, c) { - c = null != c ? c : !1; - var d = null; - if (null != a && "function" == typeof a.constructor) { - var d = new a.constructor, - e; - for (e in a) - if (e != mxObjectIdentity.FIELD_NAME && (null == b || 0 > mxUtils.indexOf(b, e))) d[e] = !c && "object" == typeof a[e] ? mxUtils.clone(a[e]) : a[e] - } - return d - }, - equalPoints: function(a, b) { - if (null == a && null != b || null != a && null == b || null != a && null != b && a.length != b.length) return !1; - if (null != a && null != b) - for (var c = 0; c < a.length; c++) - if (a[c] == b[c] || null != a[c] && !a[c].equals(b[c])) return !1; - return !0 - }, - equalEntries: function(a, b) { - if (null == a && null != b || null != a && null == b || null != a && null != b && a.length != b.length) return !1; - if (null != a && null != b) - for (var c in a) - if (a[c] != b[c]) return !1; - return !0 - }, - extend: function(a, b) { - var c = function() {}; - c.prototype = b.prototype; - a.prototype = new c; - a.prototype.constructor = - a - }, - toString: function(a) { - var b = "", - c; - for (c in a) try { - if (null == a[c]) b += c + " \x3d [null]\n"; - else if ("function" == typeof a[c]) b += c + " \x3d\x3e [Function]\n"; - else if ("object" == typeof a[c]) var d = mxUtils.getFunctionName(a[c].constructor), - b = b + (c + " \x3d\x3e [" + d + "]\n"); - else b += c + " \x3d " + a[c] + "\n" - } catch (e) { - b += c + "\x3d" + e.message - } - return b - }, - toRadians: function(a) { - return Math.PI * a / 180 - }, - arcToCurves: function(a, b, c, d, e, f, g, h, k) { - h -= a; - k -= b; - if (0 === c || 0 === d) return p; - c = Math.abs(c); - d = Math.abs(d); - var l = -h / 2, - m = -k / 2, - n = Math.cos(e * - Math.PI / 180), - p = Math.sin(e * Math.PI / 180); - e = n * l + p * m; - var l = -1 * p * l + n * m, - m = e * e, - q = l * l, - s = c * c, - r = d * d, - t = m / s + q / r; - 1 < t ? (c *= Math.sqrt(t), d *= Math.sqrt(t), f = 0) : (t = 1, f === g && (t = -1), f = t * Math.sqrt((s * r - s * q - r * m) / (s * q + r * m))); - m = f * c * l / d; - q = -1 * f * d * e / c; - h = n * m - p * q + h / 2; - k = p * m + n * q + k / 2; - s = Math.atan2((l - q) / d, (e - m) / c) - Math.atan2(0, 1); - f = 0 <= s ? s : 2 * Math.PI + s; - s = Math.atan2((-l - q) / d, (-e - m) / c) - Math.atan2((l - q) / d, (e - m) / c); - e = 0 <= s ? s : 2 * Math.PI + s; - 0 == g && 0 < e ? e -= 2 * Math.PI : 0 != g && 0 > e && (e += 2 * Math.PI); - g = 2 * e / Math.PI; - g = Math.ceil(0 > g ? -1 * g : g); - e /= g; - l = 8 / 3 * Math.sin(e / - 4) * Math.sin(e / 4) / Math.sin(e / 2); - m = n * c; - n *= d; - c *= p; - d *= p; - for (var v = Math.cos(f), w = Math.sin(f), q = -l * (m * w + d * v), s = -l * (c * w - n * v), t = r = 0, p = [], u = 0; u < g; ++u) { - f += e; - var v = Math.cos(f), - w = Math.sin(f), - r = m * v - d * w + h, - t = c * v + n * w + k, - y = -l * (m * w + d * v), - v = -l * (c * w - n * v), - w = 6 * u; - p[w] = Number(q + a); - p[w + 1] = Number(s + b); - p[w + 2] = Number(r - y + a); - p[w + 3] = Number(t - v + b); - p[w + 4] = Number(r + a); - p[w + 5] = Number(t + b); - q = r + y; - s = t + v - } - return p - }, - getBoundingBox: function(a, b) { - var c = null; - if (null != a && null != b && 0 != b) { - var d = mxUtils.toRadians(b), - c = Math.cos(d), - e = Math.sin(d), - f = - new mxPoint(a.x + a.width / 2, a.y + a.height / 2), - g = new mxPoint(a.x, a.y), - d = new mxPoint(a.x + a.width, a.y), - h = new mxPoint(d.x, a.y + a.height), - k = new mxPoint(a.x, h.y), - g = mxUtils.getRotatedPoint(g, c, e, f), - d = mxUtils.getRotatedPoint(d, c, e, f), - h = mxUtils.getRotatedPoint(h, c, e, f), - k = mxUtils.getRotatedPoint(k, c, e, f), - c = new mxRectangle(g.x, g.y, 0, 0); - c.add(new mxRectangle(d.x, d.y, 0, 0)); - c.add(new mxRectangle(h.x, h.y, 0, 0)); - c.add(new mxRectangle(k.x, k.y, 0, 0)) - } - return c - }, - getRotatedPoint: function(a, b, c, d) { - d = null != d ? d : new mxPoint; - var e = - a.x - d.x; - a = a.y - d.y; - return new mxPoint(e * b - a * c + d.x, a * b + e * c + d.y) - }, - getPortConstraints: function(a, b, c, d) { - a = mxUtils.getValue(a.style, mxConstants.STYLE_PORT_CONSTRAINT, null); - if (null == a) return d; - d = a.toString(); - a = mxConstants.DIRECTION_MASK_NONE; - 0 <= d.indexOf(mxConstants.DIRECTION_NORTH) && (a |= mxConstants.DIRECTION_MASK_NORTH); - 0 <= d.indexOf(mxConstants.DIRECTION_WEST) && (a |= mxConstants.DIRECTION_MASK_WEST); - 0 <= d.indexOf(mxConstants.DIRECTION_SOUTH) && (a |= mxConstants.DIRECTION_MASK_SOUTH); - 0 <= d.indexOf(mxConstants.DIRECTION_EAST) && - (a |= mxConstants.DIRECTION_MASK_EAST); - return a - }, - reversePortConstraints: function(a) { - var b = 0, - b = (a & mxConstants.DIRECTION_MASK_WEST) << 3, - b = b | (a & mxConstants.DIRECTION_MASK_NORTH) << 1, - b = b | (a & mxConstants.DIRECTION_MASK_SOUTH) >> 1; - return b |= (a & mxConstants.DIRECTION_MASK_EAST) >> 3 - }, - findNearestSegment: function(a, b, c) { - var d = -1; - if (0 < a.absolutePoints.length) - for (var e = a.absolutePoints[0], f = null, g = 1; g < a.absolutePoints.length; g++) { - var h = a.absolutePoints[g], - e = mxUtils.ptSegDistSq(e.x, e.y, h.x, h.y, b, c); - if (null == f || e < f) f = - e, d = g - 1; - e = h - } - return d - }, - rectangleIntersectsSegment: function(a, b, c) { - var d = a.y, - e = a.x, - f = d + a.height, - g = e + a.width; - a = b.x; - var h = c.x; - b.x > c.x && (a = c.x, h = b.x); - h > g && (h = g); - a < e && (a = e); - if (a > h) return !1; - var e = b.y, - g = c.y, - k = c.x - b.x; - 1E-7 < Math.abs(k) && (c = (c.y - b.y) / k, b = b.y - c * b.x, e = c * a + b, g = c * h + b); - e > g && (b = g, g = e, e = b); - g > f && (g = f); - e < d && (e = d); - return e > g ? !1 : !0 - }, - contains: function(a, b, c) { - return a.x <= b && a.x + a.width >= b && a.y <= c && a.y + a.height >= c - }, - intersects: function(a, b) { - var c = a.width, - d = a.height, - e = b.width, - f = b.height; - if (0 >= e || 0 >= f || 0 >= c || - 0 >= d) return !1; - var g = a.x, - h = a.y, - k = b.x, - l = b.y, - e = e + k, - f = f + l, - c = c + g, - d = d + h; - return (e < k || e > g) && (f < l || f > h) && (c < g || c > k) && (d < h || d > l) - }, - intersectsHotspot: function(a, b, c, d, e, f) { - d = null != d ? d : 1; - e = null != e ? e : 0; - f = null != f ? f : 0; - if (0 < d) { - var g = a.getCenterX(), - h = a.getCenterY(), - k = a.width, - l = a.height, - m = mxUtils.getValue(a.style, mxConstants.STYLE_STARTSIZE) * a.view.scale; - 0 < m && (mxUtils.getValue(a.style, mxConstants.STYLE_HORIZONTAL, !0) ? (h = a.y + m / 2, l = m) : (g = a.x + m / 2, k = m)); - k = Math.max(e, k * d); - l = Math.max(e, l * d); - 0 < f && (k = Math.min(k, f), l = Math.min(l, - f)); - d = new mxRectangle(g - k / 2, h - l / 2, k, l); - g = mxUtils.toRadians(mxUtils.getValue(a.style, mxConstants.STYLE_ROTATION) || 0); - 0 != g && (e = Math.cos(-g), f = Math.sin(-g), g = new mxPoint(a.getCenterX(), a.getCenterY()), a = mxUtils.getRotatedPoint(new mxPoint(b, c), e, f, g), b = a.x, c = a.y); - return mxUtils.contains(d, b, c) - } - return !0 - }, - getOffset: function(a, b) { - var c = 0, - d = 0; - if (null != b && b) var e = document.body, - f = document.documentElement, - c = c + (e.scrollLeft || f.scrollLeft), - d = d + (e.scrollTop || f.scrollTop); - for (; a.offsetParent;) c += a.offsetLeft, d += - a.offsetTop, a = a.offsetParent; - return new mxPoint(c, d) - }, - getScrollOrigin: function(a) { - for (var b = document.body, c = document.documentElement, d = new mxPoint(b.scrollLeft || c.scrollLeft, b.scrollTop || c.scrollTop); null != a && a != b && a != c;) !isNaN(a.scrollLeft) && ! - isNaN(a.scrollTop) && (d.x += a.scrollLeft, d.y += a.scrollTop), a = a.parentNode; - return d - }, - convertPoint: function(a, b, c) { - var d = mxUtils.getScrollOrigin(a); - a = mxUtils.getOffset(a); - a.x -= d.x; - a.y -= d.y; - return new mxPoint(b - a.x, c - a.y) - }, - ltrim: function(a, b) { - return a.replace(RegExp("^[" + - (b || "\\s") + "]+", "g"), "") - }, - rtrim: function(a, b) { - return a.replace(RegExp("[" + (b || "\\s") + "]+$", "g"), "") - }, - trim: function(a, b) { - return mxUtils.ltrim(mxUtils.rtrim(a, b), b) - }, - isNumeric: function(a) { - return null != a && (null == a.length || 0 < a.length && 0 > a.indexOf("0x") && 0 > a.indexOf("0X")) && !isNaN(a) - }, - mod: function(a, b) { - return (a % b + b) % b - }, - intersection: function(a, b, c, d, e, f, g, h) { - var k = (h - f) * (c - a) - (g - e) * (d - b); - g = ((g - e) * (b - f) - (h - f) * (a - e)) / k; - e = ((c - a) * (b - f) - (d - b) * (a - e)) / k; - return 0 <= g && 1 >= g && 0 <= e && 1 >= e ? new mxPoint(a + g * (c - a), b + g * - (d - b)) : null - }, - ptSegDistSq: function(a, b, c, d, e, f) { - c -= a; - d -= b; - e -= a; - f -= b; - 0 >= e * c + f * d ? c = 0 : (e = c - e, f = d - f, a = e * c + f * d, c = 0 >= a ? 0 : a * a / (c * c + d * d)); - e = e * e + f * f - c; - 0 > e && (e = 0); - return e - }, - relativeCcw: function(a, b, c, d, e, f) { - c -= a; - d -= b; - e -= a; - f -= b; - a = e * d - f * c; - 0 == a && (a = e * c + f * d, 0 < a && (a = (e - c) * c + (f - d) * d, 0 > a && (a = 0))); - return 0 > a ? -1 : 0 < a ? 1 : 0 - }, - animateChanges: function(a, b) { - mxEffects.animateChanges.apply(this, arguments) - }, - cascadeOpacity: function(a, b, c) { - mxEffects.cascadeOpacity.apply(this, arguments) - }, - fadeOut: function(a, b, c, d, e, f) { - mxEffects.fadeOut.apply(this, - arguments) - }, - setOpacity: function(a, b) { - mxUtils.isVml(a) ? a.style.filter = 100 <= b ? null : "alpha(opacity\x3d" + b / 5 + ")" : mxClient.IS_IE && ("undefined" === typeof document.documentMode || 9 > document.documentMode) ? a.style - .filter = 100 <= b ? null : "alpha(opacity\x3d" + b + ")" : a.style.opacity = b / 100 - }, - createImage: function(a) { - var b = null; - mxClient.IS_IE6 && "CSS1Compat" != document.compatMode ? (b = document.createElement(mxClient.VML_PREFIX + ":image"), b.setAttribute("src", a), b.style.borderStyle = "none") : (b = document.createElement( - "img"), b.setAttribute("src", - a), b.setAttribute("border", "0")); - return b - }, - sortCells: function(a, b) { - b = null != b ? b : !0; - var c = new mxDictionary; - a.sort(function(a, e) { - var f = c.get(a); - null == f && (f = mxCellPath.create(a).split(mxCellPath.PATH_SEPARATOR), c.put(a, f)); - var g = c.get(e); - null == g && (g = mxCellPath.create(e).split(mxCellPath.PATH_SEPARATOR), c.put(e, g)); - f = mxCellPath.compare(f, g); - return 0 == f ? 0 : 0 < f == b ? 1 : -1 - }); - return a - }, - getStylename: function(a) { - return null != a && (a = a.split(";")[0], 0 > a.indexOf("\x3d")) ? a : "" - }, - getStylenames: function(a) { - var b = []; - if (null != - a) { - a = a.split(";"); - for (var c = 0; c < a.length; c++) 0 > a[c].indexOf("\x3d") && b.push(a[c]) - } - return b - }, - indexOfStylename: function(a, b) { - if (null != a && null != b) - for (var c = a.split(";"), d = 0, e = 0; e < c.length; e++) { - if (c[e] == b) return d; - d += c[e].length + 1 - } - return -1 - }, - addStylename: function(a, b) { - 0 > mxUtils.indexOfStylename(a, b) && (null == a ? a = "" : 0 < a.length && ";" != a.charAt(a.length - 1) && (a += ";"), a += b); - return a - }, - removeStylename: function(a, b) { - var c = []; - if (null != a) - for (var d = a.split(";"), e = 0; e < d.length; e++) d[e] != b && c.push(d[e]); - return c.join(";") - }, - removeAllStylenames: function(a) { - var b = []; - if (null != a) { - a = a.split(";"); - for (var c = 0; c < a.length; c++) 0 <= a[c].indexOf("\x3d") && b.push(a[c]) - } - return b.join(";") - }, - setCellStyles: function(a, b, c, d) { - if (null != b && 0 < b.length) { - a.beginUpdate(); - try { - for (var e = 0; e < b.length; e++) - if (null != b[e]) { - var f = mxUtils.setStyle(a.getStyle(b[e]), c, d); - a.setStyle(b[e], f) - } - } finally { - a.endUpdate() - } - } - }, - setStyle: function(a, b, c) { - var d = null != c && ("undefined" == typeof c.length || 0 < c.length); - if (null == a || 0 == a.length) d && (a = b + "\x3d" + c); - else { - var e = a.indexOf(b + - "\x3d"); - 0 > e ? d && (d = ";" == a.charAt(a.length - 1) ? "" : ";", a = a + d + b + "\x3d" + c) : (b = d ? b + "\x3d" + c : "", c = a.indexOf(";", e), d || c++, a = a.substring(0, e) + b + (c > e ? - a.substring(c) : "")) - } - return a - }, - setCellStyleFlags: function(a, b, c, d, e) { - if (null != b && 0 < b.length) { - a.beginUpdate(); - try { - for (var f = 0; f < b.length; f++) - if (null != b[f]) { - var g = mxUtils.setStyleFlag(a.getStyle(b[f]), c, d, e); - a.setStyle(b[f], g) - } - } finally { - a.endUpdate() - } - } - }, - setStyleFlag: function(a, b, c, d) { - if (null == a || 0 == a.length) a = d || null == d ? b + "\x3d" + c : b + "\x3d0"; - else { - var e = a.indexOf(b + - "\x3d"); - if (0 > e) e = ";" == a.charAt(a.length - 1) ? "" : ";", a = d || null == d ? a + e + b + "\x3d" + c : a + e + b + "\x3d0"; - else { - var f = a.indexOf(";", e), - g = "", - g = 0 > f ? a.substring(e + b.length + 1) : a.substring(e + b.length + 1, f), - g = null == d ? parseInt(g) ^ c : d ? parseInt(g) | c : parseInt(g) & ~c; - a = a.substring(0, e) + b + "\x3d" + g + (0 <= f ? a.substring(f) : "") - } - } - return a - }, - getAlignmentAsPoint: function(a, b) { - var c = 0, - d = 0; - a == mxConstants.ALIGN_CENTER ? c = -0.5 : a == mxConstants.ALIGN_RIGHT && (c = -1); - b == mxConstants.ALIGN_MIDDLE ? d = -0.5 : b == mxConstants.ALIGN_BOTTOM && (d = -1); - return new mxPoint(c, - d) - }, - getSizeForString: function(a, b, c) { - b = null != b ? b : mxConstants.DEFAULT_FONTSIZE; - c = null != c ? c : mxConstants.DEFAULT_FONTFAMILY; - var d = document.createElement("div"); - d.style.fontFamily = c; - d.style.fontSize = Math.round(b) + "px"; - d.style.lineHeight = Math.round(b * mxConstants.LINE_HEIGHT) + "px"; - d.style.position = "absolute"; - d.style.whiteSpace = "nowrap"; - d.style.visibility = "hidden"; - d.style.display = mxClient.IS_QUIRKS ? "inline" : "inline-block"; - d.style.zoom = "1"; - d.innerHTML = a; - document.body.appendChild(d); - a = new mxRectangle(0, 0, - d.offsetWidth, d.offsetHeight); - document.body.removeChild(d); - return a - }, - getViewXml: function(a, b, c, d, e) { - d = null != d ? d : 0; - e = null != e ? e : 0; - b = null != b ? b : 1; - null == c && (c = [a.getModel().getRoot()]); - var f = a.getView(), - g = null, - h = f.isEventsEnabled(); - f.setEventsEnabled(!1); - var k = f.drawPane, - l = f.overlayPane; - a.dialect == mxConstants.DIALECT_SVG ? (f.drawPane = document.createElementNS(mxConstants.NS_SVG, "g"), f.canvas.appendChild(f.drawPane), f.overlayPane = document.createElementNS(mxConstants.NS_SVG, - "g")) : (f.drawPane = f.drawPane.cloneNode(!1), - f.canvas.appendChild(f.drawPane), f.overlayPane = f.overlayPane.cloneNode(!1)); - f.canvas.appendChild(f.overlayPane); - var m = f.getTranslate(); - f.translate = new mxPoint(d, e); - b = new mxTemporaryCellStates(a.getView(), b, c); - try { - g = (new mxCodec).encode(a.getView()) - } finally { - b.destroy(), f.translate = m, f.canvas.removeChild(f.drawPane), f.canvas.removeChild(f.overlayPane), f.drawPane = k, f.overlayPane = l, f.setEventsEnabled(h) - } - return g - }, - getScaleForPageCount: function(a, b, c, d) { - if (1 > a) return 1; - c = null != c ? c : mxConstants.PAGE_FORMAT_A4_PORTRAIT; - d = null != d ? d : 0; - var e = c.width - 2 * d; - c = c.height - 2 * d; - d = b.getGraphBounds().clone(); - b = b.getView().getScale(); - d.width /= b; - d.height /= b; - b = d.width; - c = b / d.height / (e / c); - d = Math.sqrt(a); - var f = Math.sqrt(c); - c = d * f; - d /= f; - if (1 > c && d > a) { - var g = d / a; - d = a; - c /= g - } - 1 > d && c > a && (g = c / a, c = a, d /= g); - g = Math.ceil(c) * Math.ceil(d); - for (f = 0; g > a;) { - var g = Math.floor(c) / c, - h = Math.floor(d) / d; - 1 == g && (g = Math.floor(c - 1) / c); - 1 == h && (h = Math.floor(d - 1) / d); - g = g > h ? g : h; - c *= g; - d *= g; - g = Math.ceil(c) * Math.ceil(d); - f++; - if (10 < f) break - } - return 0.99999 * (e * c / b) - }, - show: function(a, - b, c, d) { - c = null != c ? c : 0; - d = null != d ? d : 0; - null == b ? b = window.open().document : b.open(); - var e = a.getGraphBounds(); - c = -e.x + c; - d = -e.y + d; - if (mxClient.IS_IE) { - for (var e = "\x3chtml\x3e\x3chead\x3e", f = document.getElementsByTagName("base"), g = 0; g < f.length; g++) e += f[g].outerHTML; - e += "\x3cstyle\x3e"; - for (g = 0; g < document.styleSheets.length; g++) try { - e += document.styleSheets(g).cssText - } catch (h) {} - e += "\x3c/style\x3e\x3c/head\x3e"; - e += "\x3cbody\x3e"; - e += a.container.innerHTML; - e += "\x3c/body\x3e"; - e += "\x3chtml\x3e"; - b.writeln(e); - b.close(); - a = - b.body.getElementsByTagName("DIV")[0]; - null != a && (a.style.position = "absolute", a.style.left = c + "px", a.style.top = d + "px") - } else { - b.writeln("\x3chtml"); - b.writeln("\x3chead\x3e"); - f = document.getElementsByTagName("base"); - for (g = 0; g < f.length; g++) b.writeln(mxUtils.getOuterHtml(f[g])); - f = document.getElementsByTagName("link"); - for (g = 0; g < f.length; g++) b.writeln(mxUtils.getOuterHtml(f[g])); - f = document.getElementsByTagName("style"); - for (g = 0; g < f.length; g++) b.writeln(mxUtils.getOuterHtml(f[g])); - b.writeln("\x3c/head\x3e"); - b.writeln("\x3c/html\x3e"); - b.close(); - null == b.body && b.documentElement.appendChild(b.createElement("body")); - b.body.style.overflow = "auto"; - for (a = a.container.firstChild; null != a;) g = a.cloneNode(!0), b.body.appendChild(g), a = a.nextSibling; - a = b.getElementsByTagName("g")[0]; - null != a && (a.setAttribute("transform", "translate(" + c + "," + d + ")"), c = a.ownerSVGElement, c.setAttribute("width", e.width + Math.max(e.x, 0) + 3), c.setAttribute("height", e.height + - Math.max(e.y, 0) + 3)) - } - mxUtils.removeCursors(b.body); - return b - }, - printScreen: function(a) { - var b = window.open(); - mxUtils.show(a, b.document); - a = function() { - b.focus(); - b.print(); - b.close() - }; - mxClient.IS_GC ? b.setTimeout(a, 500) : a() - }, - popup: function(a, b) { - if (b) { - var c = document.createElement("div"); - c.style.overflow = "scroll"; - c.style.width = "636px"; - c.style.height = "460px"; - var d = document.createElement("pre"); - d.innerHTML = mxUtils.htmlEntities(a, !1).replace(/\n/g, "\x3cbr\x3e").replace(/ /g, "\x26nbsp;"); - c.appendChild(d); - c = new mxWindow("Popup Window", c, document.body.clientWidth / 2 - 320, (document.body.clientHeight || document.documentElement.clientHeight) / - 2 - 240, 640, 480, !1, !0); - c.setClosable(!0); - c.setVisible(!0) - } else mxClient.IS_NS ? (c = window.open(), c.document.writeln("\x3cpre\x3e" + mxUtils.htmlEntities(a) + "\x3c/pre"), c.document.close()) : (c = window.open(), d = c.document.createElement( - "pre"), d.innerHTML = mxUtils.htmlEntities(a, !1).replace(/\n/g, "\x3cbr\x3e").replace(/ /g, "\x26nbsp;"), c.document.body.appendChild(d)) - }, - alert: function(a) { - alert(a) - }, - prompt: function(a, b) { - return prompt(a, b) - }, - confirm: function(a) { - return confirm(a) - }, - error: function(a, b, c, d) { - var e = document.createElement("div"); - e.style.padding = "20px"; - var f = document.createElement("img"); - f.setAttribute("src", d || mxUtils.errorImage); - f.setAttribute("valign", "bottom"); - f.style.verticalAlign = "middle"; - e.appendChild(f); - e.appendChild(document.createTextNode("\u00a0")); - e.appendChild(document.createTextNode("\u00a0")); - e.appendChild(document.createTextNode("\u00a0")); - mxUtils.write(e, a); - a = document.body.clientWidth; - d = document.body.clientHeight || document.documentElement.clientHeight; - var g = new mxWindow(mxResources.get(mxUtils.errorResource) || - mxUtils.errorResource, e, (a - b) / 2, d / 4, b, null, !1, !0); - c && (mxUtils.br(e), b = document.createElement("p"), c = document.createElement("button"), mxClient.IS_IE ? c.style.cssText = "float:right" : c.setAttribute("style", "float:right"), mxEvent.addListener( - c, "click", - function(a) { - g.destroy() - }), mxUtils.write(c, mxResources.get(mxUtils.closeResource) || mxUtils.closeResource), b.appendChild(c), e.appendChild(b), mxUtils.br(e), g.setClosable(!0)); - g.setVisible(!0); - return g - }, - makeDraggable: function(a, b, c, d, e, f, g, h, k, l) { - a = new mxDragSource(a, - c); - a.dragOffset = new mxPoint(null != e ? e : 0, null != f ? f : mxConstants.TOOLTIP_VERTICAL_OFFSET); - a.autoscroll = g; - a.setGuidesEnabled(!1); - null != k && (a.highlightDropTargets = k); - null != l && (a.getDropTarget = l); - a.getGraphForEvent = function(a) { - return "function" == typeof b ? b(a) : b - }; - null != d && (a.createDragElement = function() { - return d.cloneNode(!0) - }, h && (a.createPreviewElement = function(a) { - var b = d.cloneNode(!0), - c = parseInt(b.style.width), - e = parseInt(b.style.height); - b.style.width = Math.round(c * a.view.scale) + "px"; - b.style.height = Math.round(e * - a.view.scale) + "px"; - return b - })); - return a - } - }, - mxConstants = { - DEFAULT_HOTSPOT: 0.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: 0.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(a) { - this.name = a; - this.properties = []; - for (var b = 1; b < arguments.length; b += 2) null != arguments[b + 1] && (this.properties[arguments[b]] = arguments[b + 1]) -} -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(a) { - return this.properties[a] -}; -mxEventObject.prototype.isConsumed = function() { - return this.consumed -}; -mxEventObject.prototype.consume = function() { - this.consumed = !0 -}; - -function mxMouseEvent(a, b) { - this.evt = a; - this.state = b -} -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(a) { - if (null != a) - for (var b = this.getSource(); null != b;) { - if (b == a.node) return !0; - b = b.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 a = this.getState(); - return null != a ? a.cell : null -}; -mxMouseEvent.prototype.isPopupTrigger = function() { - return mxEvent.isPopupTrigger(this.getEvent()) -}; -mxMouseEvent.prototype.isConsumed = function() { - return this.consumed -}; -mxMouseEvent.prototype.consume = function(a) { - (null != a ? a : 1) && this.evt.preventDefault && this.evt.preventDefault(); - this.evt.returnValue = !1; - this.consumed = !0 -}; - -function mxEventSource(a) { - this.setEventSource(a) -} -mxEventSource.prototype.eventListeners = null; -mxEventSource.prototype.eventsEnabled = !0; -mxEventSource.prototype.eventSource = null; -mxEventSource.prototype.isEventsEnabled = function() { - return this.eventsEnabled -}; -mxEventSource.prototype.setEventsEnabled = function(a) { - this.eventsEnabled = a -}; -mxEventSource.prototype.getEventSource = function() { - return this.eventSource -}; -mxEventSource.prototype.setEventSource = function(a) { - this.eventSource = a -}; -mxEventSource.prototype.addListener = function(a, b) { - null == this.eventListeners && (this.eventListeners = []); - this.eventListeners.push(a); - this.eventListeners.push(b) -}; -mxEventSource.prototype.removeListener = function(a) { - if (null != this.eventListeners) - for (var b = 0; b < this.eventListeners.length;) this.eventListeners[b + 1] == a ? this.eventListeners.splice(b, 2) : b += 2 -}; -mxEventSource.prototype.fireEvent = function(a, b) { - if (null != this.eventListeners && this.isEventsEnabled()) { - null == a && (a = new mxEventObject); - null == b && (b = this.getEventSource()); - null == b && (b = this); - for (var c = [b, a], d = 0; d < this.eventListeners.length; d += 2) { - var e = this.eventListeners[d]; - (null == e || e == a.getName()) && this.eventListeners[d + 1].apply(this, c) - } - } -}; -var mxEvent = { - objects: [], - addListener: function() { - var a = function(a, c, d) { - null == a.mxListenerList && (a.mxListenerList = [], mxEvent.objects.push(a)); - a.mxListenerList.push({ - name: c, - f: d - }) - }; - return window.addEventListener ? function(b, c, d) { - b.addEventListener(c, d, !1); - a(b, c, d) - } : function(b, c, d) { - b.attachEvent("on" + c, d); - a(b, c, d) - } - }(), - removeListener: function() { - var a = function(a, c, d) { - if (null != a.mxListenerList) { - c = a.mxListenerList.length; - for (var e = 0; e < c; e++) - if (a.mxListenerList[e].f == d) { - a.mxListenerList.splice(e, 1); - break - } - 0 == - a.mxListenerList.length && (a.mxListenerList = null) - } - }; - return window.removeEventListener ? function(b, c, d) { - b.removeEventListener(c, d, !1); - a(b, c, d) - } : function(b, c, d) { - b.detachEvent("on" + c, d); - a(b, c, d) - } - }(), - removeAllListeners: function(a) { - var b = a.mxListenerList; - if (null != b) - for (; 0 < b.length;) { - var c = b[0]; - mxEvent.removeListener(a, c.name, c.f) - } - }, - addGestureListeners: function(a, b, c, d) { - null != b && mxEvent.addListener(a, "mousedown", b); - null != c && mxEvent.addListener(a, "mousemove", c); - null != d && mxEvent.addListener(a, "mouseup", d); - mxClient.IS_TOUCH && (null != b && mxEvent.addListener(a, "touchstart", b), null != c && mxEvent.addListener(a, "touchmove", c), null != d && mxEvent.addListener(a, "touchend", d)) - }, - removeGestureListeners: function(a, b, c, d) { - null != b && mxEvent.removeListener(a, "mousedown", b); - null != c && mxEvent.removeListener(a, "mousemove", c); - null != d && mxEvent.removeListener(a, "mouseup", d); - mxClient.IS_TOUCH && (null != b && mxEvent.removeListener(a, "touchstart", b), null != c && mxEvent.removeListener(a, "touchmove", c), null != d && mxEvent.removeListener(a, "touchend", - d)) - }, - redirectMouseEvents: function(a, b, c, d, e, f, g) { - var h = function(a) { - return "function" == typeof c ? c(a) : c - }; - mxEvent.addGestureListeners(a, function(a) { - null != d ? d(a) : mxEvent.isConsumed(a) || b.fireMouseEvent(mxEvent.MOUSE_DOWN, new mxMouseEvent(a, h(a))) - }, function(a) { - null != e ? e(a) : mxEvent.isConsumed(a) || b.fireMouseEvent(mxEvent.MOUSE_MOVE, new mxMouseEvent(a, h(a))) - }, function(a) { - null != f ? f(a) : mxEvent.isConsumed(a) || b.fireMouseEvent(mxEvent.MOUSE_UP, new mxMouseEvent(a, h(a))) - }); - mxEvent.addListener(a, "dblclick", function(a) { - if (null != - g) g(a); - else if (!mxEvent.isConsumed(a)) { - var c = h(a); - b.dblClick(a, null != c ? c.cell : null) - } - }) - }, - release: function(a) { - if (null != a && (mxEvent.removeAllListeners(a), a = a.childNodes, null != a)) - for (var b = a.length, c = 0; c < b; c += 1) mxEvent.release(a[c]) - }, - addMouseWheelListener: function(a) { - if (null != a) { - var b = function(b) { - null == b && (b = window.event); - var d = 0, - d = mxClient.IS_NS && !mxClient.IS_SF && !mxClient.IS_GC ? -b.detail / 2 : b.wheelDelta / 120; - 0 != d && a(b, 0 < d) - }; - mxClient.IS_NS ? mxEvent.addListener(window, mxClient.IS_SF || mxClient.IS_GC ? "mousewheel" : - "DOMMouseScroll", b) : mxEvent.addListener(document, "mousewheel", b) - } - }, - disableContextMenu: function() { - return mxClient.IS_IE && ("undefined" === typeof document.documentMode || 9 > document.documentMode) ? function(a) { - mxEvent.addListener(a, "contextmenu", function() { - return !1 - }) - } : function(a) { - a.setAttribute("oncontextmenu", "return false;") - } - }(), - getSource: function(a) { - return null != a.srcElement ? a.srcElement : a.target - }, - isConsumed: function(a) { - return null != a.isConsumed && a.isConsumed - }, - isLeftMouseButton: function(a) { - return a.button == - (mxClient.IS_IE && ("undefined" === typeof document.documentMode || 9 > document.documentMode) ? 1 : 0) - }, - isRightMouseButton: function(a) { - return 2 == a.button - }, - isPopupTrigger: function(a) { - return mxEvent.isRightMouseButton(a) || mxEvent.isShiftDown(a) && !mxEvent.isControlDown(a) - }, - isShiftDown: function(a) { - return null != a ? a.shiftKey : !1 - }, - isAltDown: function(a) { - return null != a ? a.altKey : !1 - }, - isControlDown: function(a) { - return null != a ? a.ctrlKey : !1 - }, - isMetaDown: function(a) { - return null != a ? a.metaKey : !1 - }, - getMainEvent: function(a) { - ("touchstart" == - a.type || "touchmove" == a.type) && null != a.touches && null != a.touches[0] ? a = a.touches[0] : "touchend" == a.type && (null != a.changedTouches && null != a.changedTouches[0]) && (a = - a.changedTouches[0]); - return a - }, - getClientX: function(a) { - return mxEvent.getMainEvent(a).clientX - }, - getClientY: function(a) { - return mxEvent.getMainEvent(a).clientY - }, - consume: function(a, b, c) { - c = null != c ? c : !0; - if (null != b ? b : 1) a.preventDefault ? (c && a.stopPropagation(), a.preventDefault()) : c && (a.cancelBubble = !0); - a.isConsumed = !0; - a.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(a, b, c, d, e, f) { - this.url = a; - this.params = b; - this.method = c || "POST"; - this.async = null != d ? d : !0; - this.username = e; - this.password = f -} -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(a) { - this.binary = a -}; -mxXmlRequest.prototype.getText = function() { - return this.request.responseText -}; -mxXmlRequest.prototype.isReady = function() { - return 4 == this.request.readyState -}; -mxXmlRequest.prototype.getDocumentElement = function() { - var a = this.getXml(); - return null != a ? a.documentElement : null -}; -mxXmlRequest.prototype.getXml = function() { - var a = this.request.responseXML; - if (9 <= document.documentMode || null == a || null == a.documentElement) a = mxUtils.parseXml(this.request.responseText); - return a -}; -mxXmlRequest.prototype.getText = function() { - return this.request.responseText -}; -mxXmlRequest.prototype.getStatus = function() { - return this.request.status -}; -mxXmlRequest.prototype.create = function() { - if (window.XMLHttpRequest) return function() { - var a = new XMLHttpRequest; - this.isBinary() && a.overrideMimeType && a.overrideMimeType("text/plain; charset\x3dx-user-defined"); - return a - }; - if ("undefined" != typeof ActiveXObject) return function() { - return new ActiveXObject("Microsoft.XMLHTTP") - } -}(); -mxXmlRequest.prototype.send = function(a, b) { - this.request = this.create(); - null != this.request && (null != a && (this.request.onreadystatechange = mxUtils.bind(this, function() { - this.isReady() && (a(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(a, b) { - null != b && a.setRequestHeader("Content-Type", "application/x-www-form-urlencoded") -}; -mxXmlRequest.prototype.simulate = function(a, b) { - a = a || document; - var c = null; - a == document && (c = window.onbeforeunload, window.onbeforeunload = null); - var d = a.createElement("form"); - d.setAttribute("method", this.method); - d.setAttribute("action", this.url); - null != b && d.setAttribute("target", b); - d.style.display = "none"; - d.style.visibility = "hidden"; - for (var e = 0 < this.params.indexOf("\x26") ? this.params.split("\x26") : this.params.split(), f = 0; f < e.length; f++) { - var g = e[f].indexOf("\x3d"); - if (0 < g) { - var h = e[f].substring(0, g), - k = e[f].substring(g + - 1), - g = a.createElement("textarea"); - g.setAttribute("name", h); - k = k.replace(/\n/g, "\x26#xa;"); - h = a.createTextNode(k); - g.appendChild(h); - d.appendChild(g) - } - } - a.body.appendChild(d); - d.submit(); - a.body.removeChild(d); - null != c && (window.onbeforeunload = c) -}; -var mxClipboard = { - STEPSIZE: 10, - insertCount: 1, - cells: null, - isEmpty: function() { - return null == mxClipboard.cells - }, - cut: function(a, b) { - b = mxClipboard.copy(a, b); - mxClipboard.insertCount = 0; - mxClipboard.removeCells(a, b); - return b - }, - removeCells: function(a, b) { - a.removeCells(b) - }, - copy: function(a, b) { - b = b || a.getSelectionCells(); - var c = a.getExportableCells(b); - mxClipboard.insertCount = 1; - mxClipboard.cells = a.cloneCells(c); - return c - }, - paste: function(a) { - if (null != mxClipboard.cells) { - var b = a.getImportableCells(mxClipboard.cells), - c = mxClipboard.insertCount * - mxClipboard.STEPSIZE, - d = a.getDefaultParent(), - b = a.importCells(b, c, c, d); - mxClipboard.insertCount++; - a.setSelectionCells(b) - } - } -}; - -function mxWindow(a, b, c, d, e, f, g, h, k, l) { - null != b && (g = null != g ? g : !0, this.content = b, this.init(c, d, e, f, l), this.installMaximizeHandler(), this.installMinimizeHandler(), this.installCloseHandler(), this.setMinimizable(g), - this.setTitle(a), (null == h || h) && this.installMoveHandler(), null != k && null != k.parentNode ? k.parentNode.replaceChild(this.div, k) : document.body.appendChild(this.div)) -} -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(a, b, c, d, e) { - e = null != e ? e : "mxWindow"; - this.div = document.createElement("div"); - this.div.className = e; - this.div.style.left = a + "px"; - this.div.style.top = b + "px"; - this.table = document.createElement("table"); - this.table.className = e; - null != c && (mxClient.IS_IE || (this.div.style.width = c + "px"), this.table.style.width = c + "px"); - null != d && (mxClient.IS_IE || (this.div.style.height = d + "px"), this.table.style.height = d + "px"); - a = document.createElement("tbody"); - b = document.createElement("tr"); - this.title = document.createElement("td"); - this.title.className = e + "Title"; - b.appendChild(this.title); - a.appendChild(b); - b = document.createElement("tr"); - this.td = document.createElement("td"); - this.td.className = e + "Pane"; - this.contentWrapper = document.createElement("div"); - this.contentWrapper.className = e + "Pane"; - this.contentWrapper.style.width = "100%"; - this.contentWrapper.appendChild(this.content); - if (mxClient.IS_IE || "DIV" != this.content.nodeName.toUpperCase()) this.contentWrapper.style.height = "100%"; - this.td.appendChild(this.contentWrapper); - b.appendChild(this.td); - a.appendChild(b); - this.table.appendChild(a); - this.div.appendChild(this.table); - e = mxUtils.bind(this, function(a) { - this.activate() - }); - mxEvent.addListener(this.title, "mousedown", e); - mxEvent.addListener(this.table, "mousedown", e); - mxClient.IS_TOUCH && (mxEvent.addListener(this.title, "touchstart", e), mxEvent.addListener(this.table, "touchstart", e)); - this.hide() -}; -mxWindow.prototype.setTitle = function(a) { - for (var b = this.title.firstChild; null != b;) { - var c = b.nextSibling; - b.nodeType == mxConstants.NODETYPE_TEXT && b.parentNode.removeChild(b); - b = c - } - mxUtils.write(this.title, a || "") -}; -mxWindow.prototype.setScrollable = function(a) { - 0 > navigator.userAgent.indexOf("Presto/2.5") && (this.contentWrapper.style.overflow = a ? "auto" : "hidden") -}; -mxWindow.prototype.activate = function() { - if (mxWindow.activeWindow != this) { - var a = mxUtils.getCurrentStyle(this.getElement()), - a = null != a ? a.zIndex : 3; - if (mxWindow.activeWindow) { - var b = mxWindow.activeWindow.getElement(); - null != b && null != b.style && (b.style.zIndex = a) - } - b = mxWindow.activeWindow; - this.getElement().style.zIndex = parseInt(a) + 1; - mxWindow.activeWindow = this; - this.fireEvent(new mxEventObject(mxEvent.ACTIVATE, "previousWindow", b)) - } -}; -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 : !1 -}; -mxWindow.prototype.setResizable = function(a) { - a ? 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(a) { - this.activate(); - var c = mxEvent.getClientX(a), - d = mxEvent.getClientY(a), - e = this.div.offsetWidth, - f = this.div.offsetHeight, - g = mxUtils.bind(this, - function(a) { - var b = mxEvent.getClientX(a) - c, - g = mxEvent.getClientY(a) - d; - this.setSize(e + b, f + g); - this.fireEvent(new mxEventObject(mxEvent.RESIZE, "event", a)); - mxEvent.consume(a) - }), - h = mxUtils.bind(this, function(a) { - mxEvent.removeGestureListeners(document, null, g, h); - this.fireEvent(new mxEventObject(mxEvent.RESIZE_END, "event", a)); - mxEvent.consume(a) - }); - mxEvent.addGestureListeners(document, null, g, h); - this.fireEvent(new mxEventObject(mxEvent.RESIZE_START, "event", a)); - mxEvent.consume(a) - }), null, null), this.div.appendChild(this.resize)) : - this.resize.style.display = "inline" : null != this.resize && (this.resize.style.display = "none") -}; -mxWindow.prototype.setSize = function(a, b) { - a = Math.max(this.minimumSize.width, a); - b = Math.max(this.minimumSize.height, b); - mxClient.IS_IE || (this.div.style.width = a + "px", this.div.style.height = b + "px"); - this.table.style.width = a + "px"; - this.table.style.height = b + "px"; - mxClient.IS_IE || (this.contentWrapper.style.height = this.div.offsetHeight - this.title.offsetHeight - 2 + "px") -}; -mxWindow.prototype.setMinimizable = function(a) { - this.minimize.style.display = a ? "" : "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 a = !1, - b = null, - c = null, - d = mxUtils.bind(this, function(d) { - this.activate(); - if (a) a = !1, this.minimize.setAttribute("src", - this.minimizeImage), this.minimize.setAttribute("title", "Minimize"), this.contentWrapper.style.display = "", this.maximize.style.display = b, mxClient.IS_IE || (this.div.style.height = - c), this.table.style.height = c, null != this.resize && (this.resize.style.visibility = ""), this.fireEvent(new mxEventObject(mxEvent.NORMALIZE, "event", d)); - else { - a = !0; - this.minimize.setAttribute("src", this.normalizeImage); - this.minimize.setAttribute("title", "Normalize"); - this.contentWrapper.style.display = "none"; - b = this.maximize.style.display; - this.maximize.style.display = "none"; - c = this.table.style.height; - var f = this.getMinimumSize(); - 0 < f.height && (mxClient.IS_IE || (this.div.style.height = f.height + "px"), this.table.style.height = f.height + "px"); - 0 < f.width && (mxClient.IS_IE || (this.div.style.width = f.width + "px"), this.table.style.width = f.width + "px"); - null != this.resize && (this.resize.style.visibility = "hidden"); - this.fireEvent(new mxEventObject(mxEvent.MINIMIZE, "event", d)) - } - mxEvent.consume(d) - }); - mxEvent.addListener(this.minimize, "mousedown", d); - mxClient.IS_TOUCH && - mxEvent.addListener(this.minimize, "touchstart", d) -}; -mxWindow.prototype.setMaximizable = function(a) { - this.maximize.style.display = a ? "" : "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 a = !1, - b = null, - c = null, - d = null, - e = null, - f = mxUtils.bind(this, function(f) { - this.activate(); - if ("none" != this.maximize.style.display) { - if (a) { - a = !1; - this.maximize.setAttribute("src", this.maximizeImage); - this.maximize.setAttribute("title", "Maximize"); - this.contentWrapper.style.display = ""; - this.minimize.style.visibility = ""; - this.div.style.left = b + "px"; - this.div.style.top = c + "px"; - if (!mxClient.IS_IE && (this.div.style.height = d, this.div.style.width = e, h = mxUtils.getCurrentStyle(this.contentWrapper), "auto" == h.overflow || null != this.resize)) this.contentWrapper - .style.height = this.div.offsetHeight - this.title.offsetHeight - - 2 + "px"; - this.table.style.height = d; - this.table.style.width = e; - null != this.resize && (this.resize.style.visibility = ""); - this.fireEvent(new mxEventObject(mxEvent.NORMALIZE, "event", f)) - } else { - a = !0; - this.maximize.setAttribute("src", this.normalizeImage); - this.maximize.setAttribute("title", "Normalize"); - this.contentWrapper.style.display = ""; - this.minimize.style.visibility = "hidden"; - b = parseInt(this.div.style.left); - c = parseInt(this.div.style.top); - d = this.table.style.height; - e = 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"); - if (!mxClient.IS_IE) { - var h = mxUtils.getCurrentStyle(this.contentWrapper); - if ("auto" == h.overflow || null != this.resize) this.contentWrapper.style.height = this.div.offsetHeight - this.title.offsetHeight - - 2 + "px" - } - this.fireEvent(new mxEventObject(mxEvent.MAXIMIZE, "event", f)) - } - mxEvent.consume(f) - } - }); - mxEvent.addGestureListeners(this.maximize, f); - mxEvent.addListener(this.title, "dblclick", f) -}; -mxWindow.prototype.installMoveHandler = function() { - this.title.style.cursor = "move"; - mxEvent.addGestureListeners(this.title, mxUtils.bind(this, function(a) { - var b = mxEvent.getClientX(a), - c = mxEvent.getClientY(a), - d = this.getX(), - e = this.getY(), - f = mxUtils.bind(this, function(a) { - var f = mxEvent.getClientX(a) - b, - g = mxEvent.getClientY(a) - c; - this.setLocation(d + f, e + g); - this.fireEvent(new mxEventObject(mxEvent.MOVE, "event", a)); - mxEvent.consume(a) - }), - g = mxUtils.bind(this, function(a) { - mxEvent.removeGestureListeners(document, null, f, - g); - this.fireEvent(new mxEventObject(mxEvent.MOVE_END, "event", a)); - mxEvent.consume(a) - }); - mxEvent.addGestureListeners(document, null, f, g); - this.fireEvent(new mxEventObject(mxEvent.MOVE_START, "event", a)); - mxEvent.consume(a) - })) -}; -mxWindow.prototype.setLocation = function(a, b) { - this.div.style.left = a + "px"; - this.div.style.top = b + "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(a) { - this.fireEvent(new mxEventObject(mxEvent.CLOSE, - "event", a)); - this.destroyOnClose ? this.destroy() : this.setVisible(!1); - mxEvent.consume(a) - })) -}; -mxWindow.prototype.setImage = function(a) { - this.image = document.createElement("img"); - this.image.setAttribute("src", a); - 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(a) { - this.closeImg.style.display = a ? "" : "none" -}; -mxWindow.prototype.isVisible = function() { - return null != this.div ? "hidden" != this.div.style.visibility : !1 -}; -mxWindow.prototype.setVisible = function(a) { - null != this.div && this.isVisible() != a && (a ? this.show() : this.hide()) -}; -mxWindow.prototype.show = function() { - this.div.style.visibility = ""; - this.activate(); - var a = mxUtils.getCurrentStyle(this.contentWrapper); - if (!mxClient.IS_IE && ("auto" == a.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 -}; - -function mxForm(a) { - this.table = document.createElement("table"); - this.table.className = a; - this.body = document.createElement("tbody"); - this.table.appendChild(this.body) -} -mxForm.prototype.table = null; -mxForm.prototype.body = !1; -mxForm.prototype.getTable = function() { - return this.table -}; -mxForm.prototype.addButtons = function(a, b) { - var c = document.createElement("tr"), - d = document.createElement("td"); - c.appendChild(d); - var d = document.createElement("td"), - e = document.createElement("button"); - mxUtils.write(e, mxResources.get("ok") || "OK"); - d.appendChild(e); - mxEvent.addListener(e, "click", function() { - a() - }); - e = document.createElement("button"); - mxUtils.write(e, mxResources.get("cancel") || "Cancel"); - d.appendChild(e); - mxEvent.addListener(e, "click", function() { - b() - }); - c.appendChild(d); - this.body.appendChild(c) -}; -mxForm.prototype.addText = function(a, b) { - var c = document.createElement("input"); - c.setAttribute("type", "text"); - c.value = b; - return this.addField(a, c) -}; -mxForm.prototype.addCheckbox = function(a, b) { - var c = document.createElement("input"); - c.setAttribute("type", "checkbox"); - this.addField(a, c); - b && (c.checked = !0); - return c -}; -mxForm.prototype.addTextarea = function(a, b, c) { - var d = document.createElement("textarea"); - mxClient.IS_NS && c--; - d.setAttribute("rows", c || 2); - d.value = b; - return this.addField(a, d) -}; -mxForm.prototype.addCombo = function(a, b, c) { - var d = document.createElement("select"); - null != c && d.setAttribute("size", c); - b && d.setAttribute("multiple", "true"); - return this.addField(a, d) -}; -mxForm.prototype.addOption = function(a, b, c, d) { - var e = document.createElement("option"); - mxUtils.writeln(e, b); - e.setAttribute("value", c); - d && e.setAttribute("selected", d); - a.appendChild(e) -}; -mxForm.prototype.addField = function(a, b) { - var c = document.createElement("tr"), - d = document.createElement("td"); - mxUtils.write(d, a); - c.appendChild(d); - d = document.createElement("td"); - d.appendChild(b); - c.appendChild(d); - this.body.appendChild(c); - return b -}; - -function mxImage(a, b, c) { - this.src = a; - this.width = b; - this.height = c -} -mxImage.prototype.src = null; -mxImage.prototype.width = null; -mxImage.prototype.height = null; - -function mxDivResizer(a, b) { - if ("div" == a.nodeName.toLowerCase()) { - null == b && (b = window); - this.div = a; - var c = mxUtils.getCurrentStyle(a); - null != c && (this.resizeWidth = "auto" == c.width, this.resizeHeight = "auto" == c.height); - mxEvent.addListener(b, "resize", mxUtils.bind(this, function(a) { - this.handlingResize || (this.handlingResize = !0, this.resize(), this.handlingResize = !1) - })); - this.resize() - } -} -mxDivResizer.prototype.resizeWidth = !0; -mxDivResizer.prototype.resizeHeight = !0; -mxDivResizer.prototype.handlingResize = !1; -mxDivResizer.prototype.resize = function() { - var a = this.getDocumentWidth(), - b = this.getDocumentHeight(), - c = parseInt(this.div.style.left), - d = parseInt(this.div.style.right), - e = parseInt(this.div.style.top), - f = parseInt(this.div.style.bottom); - this.resizeWidth && (!isNaN(c) && !isNaN(d) && 0 <= c && 0 <= d && 0 < a - d - c) && (this.div.style.width = a - d - c + "px"); - this.resizeHeight && (!isNaN(e) && !isNaN(f) && 0 <= e && 0 <= f && 0 < b - e - f) && (this.div.style.height = b - e - f + "px") -}; -mxDivResizer.prototype.getDocumentWidth = function() { - return document.body.clientWidth -}; -mxDivResizer.prototype.getDocumentHeight = function() { - return document.body.clientHeight -}; - -function mxDragSource(a, b) { - this.element = a; - this.dropHandler = b; - mxEvent.addGestureListeners(a, mxUtils.bind(this, this.mouseDown)) -} -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(a) { - this.enabled = a -}; -mxDragSource.prototype.isGuidesEnabled = function() { - return this.guidesEnabled -}; -mxDragSource.prototype.setGuidesEnabled = function(a) { - this.guidesEnabled = a -}; -mxDragSource.prototype.isGridEnabled = function() { - return this.gridEnabled -}; -mxDragSource.prototype.setGridEnabled = function(a) { - this.gridEnabled = a -}; -mxDragSource.prototype.getGraphForEvent = function(a) { - return null -}; -mxDragSource.prototype.getDropTarget = function(a, b, c) { - return a.getCellAt(b, c) -}; -mxDragSource.prototype.createDragElement = function(a) { - return this.element.cloneNode(!0) -}; -mxDragSource.prototype.createPreviewElement = function(a) { - return null -}; -mxDragSource.prototype.mouseDown = function(a) { - this.enabled && (!mxEvent.isConsumed(a) && null == this.mouseMoveHandler) && (this.startDrag(a), this.mouseMoveHandler = mxUtils.bind(this, this.mouseMove), this.mouseUpHandler = mxUtils.bind( - this, this.mouseUp), mxEvent.addGestureListeners(document, null, this.mouseMoveHandler, this.mouseUpHandler), mxEvent.consume(a, !0, !1)) -}; -mxDragSource.prototype.startDrag = function(a) { - this.dragElement = this.createDragElement(a); - this.dragElement.style.position = "absolute"; - this.dragElement.style.zIndex = this.dragElementZIndex; - mxUtils.setOpacity(this.dragElement, this.dragElementOpacity) -}; -mxDragSource.prototype.stopDrag = function(a) { - null != this.dragElement && (null != this.dragElement.parentNode && this.dragElement.parentNode.removeChild(this.dragElement), this.dragElement = null) -}; -mxDragSource.prototype.graphContainsEvent = function(a, b) { - var c = mxEvent.getClientX(b), - d = mxEvent.getClientY(b), - e = mxUtils.getOffset(a.container), - f = mxUtils.getScrollOrigin(); - return c >= e.x - f.x && d >= e.y - f.y && c <= e.x - f.x + a.container.offsetWidth && d <= e.y - f.y + a.container.offsetHeight -}; -mxDragSource.prototype.mouseMove = function(a) { - var b = this.getGraphForEvent(a); - null != b && !this.graphContainsEvent(b, a) && (b = null); - b != this.currentGraph && (null != this.currentGraph && this.dragExit(this.currentGraph), this.currentGraph = b, null != this.currentGraph && this.dragEnter(this.currentGraph)); - null != this.currentGraph && this.dragOver(this.currentGraph, a); - if (null != this.dragElement && (null == this.previewElement || "visible" != this.previewElement.style.visibility)) { - var b = mxEvent.getClientX(a), - c = mxEvent.getClientY(a); - null == this.dragElement.parentNode && document.body.appendChild(this.dragElement); - this.dragElement.style.visibility = "visible"; - null != this.dragOffset && (b += this.dragOffset.x, c += this.dragOffset.y); - b += document.body.scrollLeft || document.documentElement.scrollLeft; - c += document.body.scrollTop || document.documentElement.scrollTop; - this.dragElement.style.left = b + "px"; - this.dragElement.style.top = c + "px" - } else null != this.dragElement && (this.dragElement.style.visibility = "hidden"); - mxEvent.consume(a) -}; -mxDragSource.prototype.mouseUp = function(a) { - if (null != this.currentGraph) { - if (null != this.currentPoint && (null == this.previewElement || "hidden" != this.previewElement.style.visibility)) { - var b = this.currentGraph.view.scale, - c = this.currentGraph.view.translate; - this.drop(this.currentGraph, a, this.currentDropTarget, this.currentPoint.x / b - c.x, this.currentPoint.y / b - c.y) - } - this.dragExit(this.currentGraph) - } - this.stopDrag(a); - mxEvent.removeGestureListeners(document, null, this.mouseMoveHandler, this.mouseUpHandler); - this.currentGraph = - this.mouseUpHandler = this.mouseMoveHandler = null; - mxEvent.consume(a) -}; -mxDragSource.prototype.dragEnter = function(a) { - a.isMouseDown = !0; - this.previewElement = this.createPreviewElement(a); - this.isGuidesEnabled() && null != this.previewElement && (this.currentGuide = new mxGuide(a, a.graphHandler.getGuideStates())); - this.highlightDropTargets && (this.currentHighlight = new mxCellHighlight(a, mxConstants.DROP_TARGET_COLOR)) -}; -mxDragSource.prototype.dragExit = function(a) { - this.currentPoint = this.currentDropTarget = null; - a.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(a, b) { - var c = mxUtils.getOffset(a.container), - d = mxUtils.getScrollOrigin(a.container), - e = mxEvent.getClientX(b) - c.x + d.x, - c = mxEvent.getClientY(b) - c.y + d.y; - a.autoScroll && (null == this.autoscroll || this.autoscroll) && a.scrollPointToVisible(e, c, a.autoExtend); - null != this.currentHighlight && a.isDropEnabled() && (this.currentDropTarget = this.getDropTarget(a, e, c), d = a.getView().getState(this.currentDropTarget), this.currentHighlight.highlight(d)); - if (null != this.previewElement) { - null == this.previewElement.parentNode && - (a.container.appendChild(this.previewElement), this.previewElement.style.zIndex = "3", this.previewElement.style.position = "absolute"); - var d = this.isGridEnabled() && a.isGridEnabledEvent(b), - f = !0; - if (null != this.currentGuide && this.currentGuide.isEnabledForEvent(b)) var f = parseInt(this.previewElement.style.width), - g = parseInt(this.previewElement.style.height), - f = new mxRectangle(0, 0, f, g), - c = new mxPoint(e, c), - c = this.currentGuide.move(f, c, d), - f = !1, - e = c.x, - c = c.y; - else if (d) var d = a.view.scale, - g = a.view.translate, - h = a.gridSize / - 2, - e = (a.snap(e / d - g.x - h) + g.x) * d, - c = (a.snap(c / d - g.y - h) + g.y) * d; - null != this.currentGuide && f && this.currentGuide.hide(); - null != this.previewOffset && (e += this.previewOffset.x, c += this.previewOffset.y); - this.previewElement.style.left = Math.round(e) + "px"; - this.previewElement.style.top = Math.round(c) + "px"; - this.previewElement.style.visibility = "visible" - } - this.currentPoint = new mxPoint(e, c) -}; -mxDragSource.prototype.drop = function(a, b, c, d, e) { - this.dropHandler(a, b, c, d, e); - a.container.focus() -}; - -function mxToolbar(a) { - this.container = a -} -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(a, b, c, d, e, f) { - var g = document.createElement(null != b ? "img" : "button"), - h = e || (null != f ? "mxToolbarMode" : "mxToolbarItem"); - g.className = h; - g.setAttribute("src", b); - null != a && (null != b ? g.setAttribute("title", a) : mxUtils.write(g, a)); - this.container.appendChild(g); - null != c && (mxEvent.addListener(g, "click", c), mxClient.IS_TOUCH && mxEvent.addListener(g, "touchend", c)); - a = mxUtils.bind(this, function(a) { - null != d ? g.setAttribute("src", b) : g.style.backgroundColor = "" - }); - mxEvent.addGestureListeners(g, - mxUtils.bind(this, function(a) { - null != d ? g.setAttribute("src", d) : g.style.backgroundColor = "gray"; - if (null != f) { - null == this.menu && (this.menu = new mxPopupMenu, this.menu.init()); - var b = this.currentImg; - this.menu.isMenuShowing() && this.menu.hideMenu(); - b != g && (this.currentImg = g, this.menu.factoryMethod = f, b = new mxPoint(g.offsetLeft, g.offsetTop + g.offsetHeight), this.menu.popup(b.x, b.y, null, a), this.menu.isMenuShowing() && - (g.className = h + "Selected", this.menu.hideMenu = function() { - mxPopupMenu.prototype.hideMenu.apply(this); - g.className = h; - this.currentImg = null - })) - } - }), null, a); - mxEvent.addListener(g, "mouseout", a); - return g -}; -mxToolbar.prototype.addCombo = function(a) { - var b = document.createElement("div"); - b.style.display = "inline"; - b.className = "mxToolbarComboContainer"; - var c = document.createElement("select"); - c.className = a || "mxToolbarCombo"; - b.appendChild(c); - this.container.appendChild(b); - return c -}; -mxToolbar.prototype.addActionCombo = function(a, b) { - var c = document.createElement("select"); - c.className = b || "mxToolbarCombo"; - this.addOption(c, a, null); - mxEvent.addListener(c, "change", function(a) { - var b = c.options[c.selectedIndex]; - c.selectedIndex = 0; - null != b.funct && b.funct(a) - }); - this.container.appendChild(c); - return c -}; -mxToolbar.prototype.addOption = function(a, b, c) { - var d = document.createElement("option"); - mxUtils.writeln(d, b); - "function" == typeof c ? d.funct = c : d.setAttribute("value", c); - a.appendChild(d); - return d -}; -mxToolbar.prototype.addSwitchMode = function(a, b, c, d, e) { - var f = document.createElement("img"); - f.initialClassName = e || "mxToolbarMode"; - f.className = f.initialClassName; - f.setAttribute("src", b); - f.altIcon = d; - null != a && f.setAttribute("title", a); - mxEvent.addListener(f, "click", mxUtils.bind(this, function(a) { - a = this.selectedMode.altIcon; - null != a ? (this.selectedMode.altIcon = this.selectedMode.getAttribute("src"), this.selectedMode.setAttribute("src", a)) : this.selectedMode.className = this.selectedMode.initialClassName; - this.updateDefaultMode && - (this.defaultMode = f); - this.selectedMode = f; - a = f.altIcon; - null != a ? (f.altIcon = f.getAttribute("src"), f.setAttribute("src", a)) : f.className = f.initialClassName + "Selected"; - this.fireEvent(new mxEventObject(mxEvent.SELECT)); - c() - })); - this.container.appendChild(f); - null == this.defaultMode && (this.defaultMode = f, this.selectMode(f), c()); - return f -}; -mxToolbar.prototype.addMode = function(a, b, c, d, e, f) { - f = null != f ? f : !0; - var g = document.createElement(null != b ? "img" : "button"); - g.initialClassName = e || "mxToolbarMode"; - g.className = g.initialClassName; - g.setAttribute("src", b); - g.altIcon = d; - null != a && g.setAttribute("title", a); - this.enabled && f && (mxEvent.addListener(g, "click", mxUtils.bind(this, function(a) { - this.selectMode(g, c); - this.noReset = !1 - })), mxEvent.addListener(g, "dblclick", mxUtils.bind(this, function(a) { - this.selectMode(g, c); - this.noReset = !0 - })), null == this.defaultMode && - (this.defaultMode = g, this.defaultFunction = c, this.selectMode(g, c))); - this.container.appendChild(g); - return g -}; -mxToolbar.prototype.selectMode = function(a, b) { - if (this.selectedMode != a) { - if (null != this.selectedMode) { - var c = this.selectedMode.altIcon; - null != c ? (this.selectedMode.altIcon = this.selectedMode.getAttribute("src"), this.selectedMode.setAttribute("src", c)) : this.selectedMode.className = this.selectedMode.initialClassName - } - this.selectedMode = a; - c = this.selectedMode.altIcon; - null != c ? (this.selectedMode.altIcon = this.selectedMode.getAttribute("src"), this.selectedMode.setAttribute("src", c)) : this.selectedMode.className = this.selectedMode.initialClassName + - "Selected"; - this.fireEvent(new mxEventObject(mxEvent.SELECT, "function", b)) - } -}; -mxToolbar.prototype.resetMode = function(a) { - (a || !this.noReset) && this.selectedMode != this.defaultMode && this.selectMode(this.defaultMode, this.defaultFunction) -}; -mxToolbar.prototype.addSeparator = function(a) { - return this.addItem(null, a, null) -}; -mxToolbar.prototype.addBreak = function() { - mxUtils.br(this.container) -}; -mxToolbar.prototype.addLine = function() { - var a = document.createElement("hr"); - a.style.marginRight = "6px"; - a.setAttribute("size", "1"); - this.container.appendChild(a) -}; -mxToolbar.prototype.destroy = function() { - mxEvent.release(this.container); - this.selectedMode = this.defaultFunction = this.defaultMode = this.container = null; - null != this.menu && this.menu.destroy() -}; - -function mxSession(a, b, c, d) { - this.model = a; - this.urlInit = b; - this.urlPoll = c; - this.urlNotify = d; - null != a && (this.codec = new mxCodec, this.codec.lookup = function(b) { - return a.getCell(b) - }); - a.addListener(mxEvent.NOTIFY, mxUtils.bind(this, function(a, b) { - var c = b.getProperty("edit"); - (null != c && this.debug || this.connected && !this.suspended) && this.notify("\x3cedit\x3e" + this.encodeChanges(c.changes, c.undone) + "\x3c/edit\x3e") - })) -} -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 = "\x26#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(a) { - 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(a, b, c) { - this.connected && this.suspended && (this.suspended = !1, this.fireEvent(new mxEventObject(mxEvent.RESUME)), this.polling || this.poll()) -}; -mxSession.prototype.stop = function(a) { - this.connected && (this.connected = !1); - this.fireEvent(new mxEventObject(mxEvent.DISCONNECT, "reason", a)) -}; -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(a, b, c) { - null != a && 0 < a.length && (null != this.urlNotify && (this.debug ? (mxLog.show(), mxLog.debug("mxSession.notify: " + this.urlNotify + " xml\x3d" + a)) : (a = "\x3cmessage\x3e\x3cdelta\x3e" + a + - "\x3c/delta\x3e\x3c/message\x3e", this.escapePostData && (a = encodeURIComponent(a)), mxUtils.post(this.urlNotify, "xml\x3d" + a, b, c))), this.sent += a.length, this.fireEvent(new mxEventObject( - mxEvent.NOTIFY, "url", this.urlNotify, "xml", a))) -}; -mxSession.prototype.get = function(a, b, c) { - if ("undefined" != typeof mxUtils) { - var d = mxUtils.bind(this, function(a) { - null != c ? c(a) : this.stop(a) - }); - mxUtils.get(a, mxUtils.bind(this, function(c) { - if ("undefined" != typeof mxUtils) - if (c.isReady() && 404 != c.getStatus()) { - if (this.received += c.getText().length, this.fireEvent(new mxEventObject(mxEvent.GET, "url", a, "request", c)), this.isValidResponse(c)) { - if (0 < c.getText().length) { - var f = c.getDocumentElement(); - null == f ? d("Invalid response: " + c.getText()) : this.receive(f) - } - null != b && b(c) - } - } else d("Response not ready") - }), - function(a) { - d("Transmission error") - }) - } -}; -mxSession.prototype.isValidResponse = function(a) { - return 0 > a.getText().indexOf("\x3c?php") -}; -mxSession.prototype.encodeChanges = function(a, b) { - for (var c = "", d = b ? -1 : 1, e = b ? a.length - 1 : 0; 0 <= e && e < a.length; e += d) var f = this.codec.encode(a[e]), - c = c + mxUtils.getXml(f, this.linefeed); - return c -}; -mxSession.prototype.receive = function(a) { - if (null != a && a.nodeType == mxConstants.NODETYPE_ELEMENT) { - var b = a.getAttribute("namespace"); - null != b && (this.model.prefix = b + "-"); - for (b = a.firstChild; null != b;) { - var c = b.nodeName.toLowerCase(); - "state" == c ? this.processState(b) : "delta" == c && this.processDelta(b); - b = b.nextSibling - } - this.fireEvent(new mxEventObject(mxEvent.RECEIVE, "node", a)) - } -}; -mxSession.prototype.processState = function(a) { - (new mxCodec(a.ownerDocument)).decode(a.firstChild, this.model) -}; -mxSession.prototype.processDelta = function(a) { - for (a = a.firstChild; null != a;) "edit" == a.nodeName && this.processEdit(a), a = a.nextSibling -}; -mxSession.prototype.processEdit = function(a) { - a = this.decodeChanges(a); - if (0 < a.length) { - var b = this.createUndoableEdit(a); - this.model.fireEvent(new mxEventObject(mxEvent.CHANGE, "edit", b, "changes", a)); - this.model.fireEvent(new mxEventObject(mxEvent.UNDO, "edit", b)); - this.fireEvent(new mxEventObject(mxEvent.FIRED, "edit", b)) - } -}; -mxSession.prototype.createUndoableEdit = function(a) { - var b = new mxUndoableEdit(this.model, this.significantRemoteChanges); - b.changes = a; - b.notify = function() { - b.source.fireEvent(new mxEventObject(mxEvent.CHANGE, "edit", b, "changes", b.changes)); - b.source.fireEvent(new mxEventObject(mxEvent.NOTIFY, "edit", b, "changes", b.changes)) - }; - return b -}; -mxSession.prototype.decodeChanges = function(a) { - this.codec.document = a.ownerDocument; - var b = []; - for (a = a.firstChild; null != a;) { - var c = this.decodeChange(a); - null != c && b.push(c); - a = a.nextSibling - } - return b -}; -mxSession.prototype.decodeChange = function(a) { - var b = null; - a.nodeType == mxConstants.NODETYPE_ELEMENT && (b = "mxRootChange" == a.nodeName ? (new mxCodec(a.ownerDocument)).decode(a) : this.codec.decode(a), null != b && (b.model = this.model, b.execute(), - "mxChildChange" == a.nodeName && null == b.parent && this.cellRemoved(b.child))); - return b -}; -mxSession.prototype.cellRemoved = function(a, b) { - this.codec.putObject(a.getId(), a); - for (var c = this.model.getChildCount(a), d = 0; d < c; d++) this.cellRemoved(this.model.getChildAt(a, d)) -}; - -function mxUndoableEdit(a, b) { - this.source = a; - this.changes = []; - this.significant = null != b ? b : !0 -} -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(a) { - this.changes.push(a) -}; -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 a = this.changes.length - 1; 0 <= a; a--) { - var b = this.changes[a]; - null != b.execute ? b.execute() : null != b.undo && b.undo(); - this.source.fireEvent(new mxEventObject(mxEvent.EXECUTED, "change", b)) - } - 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 a = this.changes.length, b = 0; b < a; b++) { - var c = this.changes[b]; - null != c.execute ? c.execute() : null != c.redo && c.redo(); - this.source.fireEvent(new mxEventObject(mxEvent.EXECUTED, "change", c)) - } - this.undone = !1; - this.redone = !0; - this.source.fireEvent(new mxEventObject(mxEvent.END_EDIT)) - } - this.notify() -}; - -function mxUndoManager(a) { - this.size = null != a ? a : 100; - this.clear() -} -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 a = this.history[--this.indexOfNextAdd]; - a.undo(); - if (a.isSignificant()) { - this.fireEvent(new mxEventObject(mxEvent.UNDO, "edit", a)); - break - } - } -}; -mxUndoManager.prototype.canRedo = function() { - return this.indexOfNextAdd < this.history.length -}; -mxUndoManager.prototype.redo = function() { - for (var a = this.history.length; this.indexOfNextAdd < a;) { - var b = this.history[this.indexOfNextAdd++]; - b.redo(); - if (b.isSignificant()) { - this.fireEvent(new mxEventObject(mxEvent.REDO, "edit", b)); - break - } - } -}; -mxUndoManager.prototype.undoableEditHappened = function(a) { - this.trim(); - 0 < this.size && this.size == this.history.length && this.history.shift(); - this.history.push(a); - this.indexOfNextAdd = this.history.length; - this.fireEvent(new mxEventObject(mxEvent.ADD, "edit", a)) -}; -mxUndoManager.prototype.trim = function() { - if (this.history.length > this.indexOfNextAdd) - for (var a = this.history.splice(this.indexOfNextAdd, this.history.length - this.indexOfNextAdd), b = 0; b < a.length; b++) a[b].die() -}; -var mxUrlConverter = function(a) { - var b = !0, - c = null, - d = null; - return { - isEnabled: function() { - return b - }, - setEnabled: function(a) { - b = a - }, - getBaseUrl: function() { - return c - }, - setBaseUrl: function(a) { - c = a - }, - getBaseDomain: function() { - return c - }, - setBaseDomain: function(a) { - c = a - }, - isRelativeUrl: function(a) { - return "http://" != a.substring(0, 7) && "https://" != a.substring(0, 8) && "data:image" != a.substring(0, 10) - }, - convert: function(a) { - if (b && this.isRelativeUrl(a)) { - if (null == c) { - d = location.protocol + "//" + location.host; - c = d + location.pathname; - var f = c.lastIndexOf("/"); - 0 < f && (c = c.substring(0, f + 1)) - } - a = "/" == a.charAt(0) ? d + a : c + a - } - return a - } - } -}; - -function mxPanningManager(a) { - 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(a, b) {}, - mouseMove: function(a, b) {}, - mouseUp: mxUtils.bind(this, function(a, b) { - this.active && this.stop() - }) - }; - a.addMouseListener(this.mouseListener); - mxEvent.addListener(document, "mouseup", mxUtils.bind(this, function() { - this.active && this.stop() - })); - var b = mxUtils.bind(this, function() { - this.scrollbars = mxUtils.hasScrollbars(a.container); - this.scrollLeft = a.container.scrollLeft; - this.scrollTop = a.container.scrollTop; - return window.setInterval(mxUtils.bind(this, function() { - this.tdx -= this.dx; - this.tdy -= this.dy; - if (this.scrollbars) { - var b = -a.container.scrollLeft - Math.ceil(this.dx), - d = -a.container.scrollTop - Math.ceil(this.dy); - a.panGraph(b, d); - a.panDx = this.scrollLeft - a.container.scrollLeft; - a.panDy = this.scrollTop - a.container.scrollTop; - a.fireEvent(new mxEventObject(mxEvent.PAN)) - } else a.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 = a.view.translate.x; - this.t0y = a.view.translate.y; - this.active = !0 - }; - this.panTo = function(c, d, e, f) { - this.active || this.start(); - this.scrollLeft = a.container.scrollLeft; - this.scrollTop = a.container.scrollTop; - f = null != f ? f : 0; - var g = a.container; - this.dx = c + (null != e ? e : 0) - g.scrollLeft - g.clientWidth; - 0 > this.dx && 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 = c - g.scrollLeft, this.dx = 0 < this.dx && this.dx < this.border ? this.dx - this.border : this.handleMouseOut ? Math.min(0, this.dx) : 0); - this.dy = d + f - g.scrollTop - g.clientHeight; - 0 > this.dy && 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 = d - g.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 = b())) : 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) a.panDx = 0, a.panDy = 0, a.fireEvent(new mxEventObject( - mxEvent.PAN)); - else { - var b = a.panDx, - d = a.panDy; - if (0 != b || 0 != d) a.panGraph(0, 0), a.view.setTranslate(this.t0x + b / a.view.scale, this.t0y + d / a.view.scale) - } - }; - this.destroy = function() { - a.removeMouseListener(this.mouseListener) - } -} -mxPanningManager.prototype.damper = 1 / 6; -mxPanningManager.prototype.delay = 10; -mxPanningManager.prototype.handleMouseOut = !0; -mxPanningManager.prototype.border = 0; - -function mxPopupMenu(a) { - this.factoryMethod = a; - null != a && this.init() -} -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(a) { - this.enabled = a -}; -mxPopupMenu.prototype.isPopupTrigger = function(a) { - return a.isPopupTrigger() || this.useLeftButtonForPopup && mxEvent.isLeftMouseButton(a.getEvent()) -}; -mxPopupMenu.prototype.addItem = function(a, b, c, d, e, f) { - d = d || this; - this.itemCount++; - d.willAddSeparator && (d.containsItems && this.addSeparator(d, !0), d.willAddSeparator = !1); - d.containsItems = !0; - var g = document.createElement("tr"); - g.className = "mxPopupMenuItem"; - var h = document.createElement("td"); - h.className = "mxPopupMenuIcon"; - null != b ? (e = document.createElement("img"), e.src = b, h.appendChild(e)) : null != e && (b = document.createElement("div"), b.className = e, h.appendChild(b)); - g.appendChild(h); - this.labels && (h = document.createElement("td"), - h.className = "mxPopupMenuItem" + (null != f && !f ? " disabled" : ""), mxUtils.write(h, a), h.align = "left", g.appendChild(h), a = document.createElement("td"), a.className = - "mxPopupMenuItem" + (null != f && !f ? " disabled" : ""), a.style.paddingRight = "6px", a.style.textAlign = "right", g.appendChild(a), null == d.div && this.createSubmenu(d)); - d.tbody.appendChild(g); - if (null == f || f) mxEvent.addGestureListeners(g, mxUtils.bind(this, function(a) { - this.eventReceiver = g; - d.activeRow != g && d.activeRow != d && (null != d.activeRow && null != d.activeRow.div.parentNode && - this.hideSubmenu(d), null != g.div && (this.showSubmenu(d, g), d.activeRow = g)); - mxEvent.consume(a) - }), mxUtils.bind(this, function(a) { - d.activeRow != g && d.activeRow != d && (null != d.activeRow && null != d.activeRow.div.parentNode && this.hideSubmenu(d), this.autoExpand && null != g.div && (this.showSubmenu(d, g), d.activeRow = - g)); - g.className = "mxPopupMenuItemHover" - }), mxUtils.bind(this, function(a) { - this.eventReceiver == g && (d.activeRow != g && this.hideMenu(), null != c && c(a)); - this.eventReceiver = null; - mxEvent.consume(a) - })), mxEvent.addListener(g, - "mouseout", mxUtils.bind(this, function(a) { - g.className = "mxPopupMenuItem" - })); - return g -}; -mxPopupMenu.prototype.createSubmenu = function(a) { - a.table = document.createElement("table"); - a.table.className = "mxPopupMenu"; - a.tbody = document.createElement("tbody"); - a.table.appendChild(a.tbody); - a.div = document.createElement("div"); - a.div.className = "mxPopupMenu"; - a.div.style.position = "absolute"; - a.div.style.display = "inline"; - a.div.style.zIndex = this.zIndex; - a.div.appendChild(a.table); - var b = document.createElement("img"); - b.setAttribute("src", this.submenuImage); - td = a.firstChild.nextSibling.nextSibling; - td.appendChild(b) -}; -mxPopupMenu.prototype.showSubmenu = function(a, b) { - if (null != b.div) { - b.div.style.left = a.div.offsetLeft + b.offsetLeft + b.offsetWidth - 1 + "px"; - b.div.style.top = a.div.offsetTop + b.offsetTop + "px"; - document.body.appendChild(b.div); - var c = parseInt(b.div.offsetLeft), - d = parseInt(b.div.offsetWidth), - e = document.body, - f = document.documentElement; - if (c + d > (e.scrollLeft || f.scrollLeft) + (e.clientWidth || f.clientWidth)) b.div.style.left = a.div.offsetLeft - d + (mxClient.IS_IE ? 6 : -6) + "px"; - mxUtils.fit(b.div) - } -}; -mxPopupMenu.prototype.addSeparator = function(a, b) { - a = a || this; - if (this.smartSeparators && !b) a.willAddSeparator = !0; - else if (null != a.tbody) { - a.willAddSeparator = !1; - var c = document.createElement("tr"), - d = document.createElement("td"); - d.className = "mxPopupMenuIcon"; - d.style.padding = "0 0 0 0px"; - c.appendChild(d); - d = document.createElement("td"); - d.style.padding = "0 0 0 0px"; - d.setAttribute("colSpan", "2"); - var e = document.createElement("hr"); - e.setAttribute("size", "1"); - d.appendChild(e); - c.appendChild(d); - a.tbody.appendChild(c) - } -}; -mxPopupMenu.prototype.popup = function(a, b, c, d) { - if (null != this.div && null != this.tbody && null != this.factoryMethod) { - this.div.style.left = a + "px"; - for (this.div.style.top = b + "px"; null != this.tbody.firstChild;) mxEvent.release(this.tbody.firstChild), this.tbody.removeChild(this.tbody.firstChild); - this.itemCount = 0; - this.factoryMethod(this, c, d); - 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(a) { - null != a.activeRow && (this.hideSubmenu(a.activeRow), null != a.activeRow.div.parentNode && a.activeRow.div.parentNode.removeChild(a.activeRow.div), a.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) -}; - -function mxAutoSaveManager(a) { - this.changeHandler = mxUtils.bind(this, function(a, c) { - this.isEnabled() && this.graphModelChanged(c.getProperty("edit").changes) - }); - this.setGraph(a) -} -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(a) { - this.enabled = a -}; -mxAutoSaveManager.prototype.setGraph = function(a) { - null != this.graph && this.graph.getModel().removeListener(this.changeHandler); - this.graph = a; - null != this.graph && this.graph.getModel().addListener(mxEvent.CHANGE, this.changeHandler) -}; -mxAutoSaveManager.prototype.save = function() {}; -mxAutoSaveManager.prototype.graphModelChanged = function(a) { - a = ((new Date).getTime() - this.lastSnapshot) / 1E3; - a > this.autoSaveDelay || this.ignoredChanges >= this.autoSaveThreshold && a > 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) -}; - -function mxAnimation(a) { - this.delay = null != a ? a : 20 -} -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))) -}; - -function mxMorphing(a, b, c, d) { - mxAnimation.call(this, d); - this.graph = a; - this.steps = null != b ? b : 6; - this.ease = null != c ? c : 1.5 -} -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 a = new mxCellStatePreview(this.graph); - if (null != this.cells) - for (var b = 0; b < this.cells.length; b++) this.animateCell(cells[b], a, !1); - else this.animateCell(this.graph.getModel().getRoot(), a, !0); - this.show(a); - (a.isEmpty() || this.step++ >= this.steps) && this.stopAnimation() -}; -mxMorphing.prototype.show = function(a) { - a.show() -}; -mxMorphing.prototype.animateCell = function(a, b, c) { - var d = this.graph.getView().getState(a), - e = null; - if (null != d && (e = this.getDelta(d), this.graph.getModel().isVertex(a) && (0 != e.x || 0 != e.y))) { - var f = this.graph.view.getTranslate(), - g = this.graph.view.getScale(); - e.x += f.x * g; - e.y += f.y * g; - b.moveState(d, -e.x / this.ease, -e.y / this.ease) - } - if (c && !this.stopRecursion(d, e)) { - d = this.graph.getModel().getChildCount(a); - for (e = 0; e < d; e++) this.animateCell(this.graph.getModel().getChildAt(a, e), b, c) - } -}; -mxMorphing.prototype.stopRecursion = function(a, b) { - return null != b && (0 != b.x || 0 != b.y) -}; -mxMorphing.prototype.getDelta = function(a) { - var b = this.getOriginForCell(a.cell), - c = this.graph.getView().getTranslate(), - d = this.graph.getView().getScale(); - a = new mxPoint(a.x / d - c.x, a.y / d - c.y); - return new mxPoint((b.x - a.x) * d, (b.y - a.y) * d) -}; -mxMorphing.prototype.getOriginForCell = function(a) { - var b = null; - null != a && (b = this.getOriginForCell(this.graph.getModel().getParent(a)), a = this.graph.getCellGeometry(a), null != a && (b.x += a.x, b.y += a.y)); - null == b && (b = this.graph.view.getTranslate(), b = new mxPoint(-b.x, -b.y)); - return b -}; - -function mxImageBundle(a) { - this.images = []; - this.alt = null != a ? a : !1 -} -mxImageBundle.prototype.images = null; -mxImageBundle.prototype.images = null; -mxImageBundle.prototype.putImage = function(a, b, c) { - this.images[a] = { - value: b, - fallback: c - } -}; -mxImageBundle.prototype.getImage = function(a) { - var b = null; - null != a && (a = this.images[a], null != a && (b = this.alt ? a.fallback : a.value)); - return b -}; - -function mxImageExport() {} -mxImageExport.prototype.includeOverlays = !1; -mxImageExport.prototype.drawState = function(a, b) { - null != a && (this.visitStatesRecursive(a, b, this.drawCellState), this.includeOverlays && this.visitStatesRecursive(a, b, this.drawOverlays)) -}; -mxImageExport.prototype.visitStatesRecursive = function(a, b, c) { - if (null != a) { - c(a, b); - for (var d = a.view.graph, e = d.model.getChildCount(a.cell), f = 0; f < e; f++) { - var g = d.view.getState(d.model.getChildAt(a.cell, f)); - this.visitStatesRecursive(g, b, c) - } - } -}; -mxImageExport.prototype.drawCellState = function(a, b) { - a.shape instanceof mxShape && (b.save(), a.shape.paint(b), b.restore()); - null != a.text && (b.save(), a.text.paint(b), b.restore()) -}; -mxImageExport.prototype.drawOverlays = function(a, b) { - null != a.overlays && a.overlays.visit(function(a, d) { - d instanceof mxShape && d.paint(b) - }) -}; - -function mxAbstractCanvas2D() { - this.converter = this.createUrlConverter(); - this.reset() -} -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(a) { - return Math.round(parseFloat(a)) -}; -mxAbstractCanvas2D.prototype.addOp = function() { - if (null != this.path && (this.path.push(arguments[0]), 2 < arguments.length)) - for (var a = this.state, b = 2; b < arguments.length; b += 2) this.lastX = arguments[b - 1], this.lastY = arguments[b], this.path.push(this.format((this.lastX + a.dx) * a.scale)), this.path.push( - this.format((this.lastY + a.dy) * a.scale)) -}; -mxAbstractCanvas2D.prototype.rotatePoint = function(a, b, c, d, e) { - c *= Math.PI / 180; - return mxUtils.getRotatedPoint(new mxPoint(a, b), Math.cos(c), Math.sin(c), new mxPoint(d, e)) -}; -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(a) { - this.state.scale *= a; - this.state.strokeWidth *= a -}; -mxAbstractCanvas2D.prototype.translate = function(a, b) { - this.state.dx += a; - this.state.dy += b -}; -mxAbstractCanvas2D.prototype.setAlpha = function(a) { - this.state.alpha = a -}; -mxAbstractCanvas2D.prototype.setFillColor = function(a) { - a == mxConstants.NONE && (a = null); - this.state.fillColor = a; - this.state.gradientColor = null -}; -mxAbstractCanvas2D.prototype.setGradient = function(a, b, c, d, e, f, g, h, k) { - c = this.state; - c.fillColor = a; - c.fillAlpha = null != h ? h : 1; - c.gradientColor = b; - c.gradientAlpha = null != k ? k : 1; - c.gradientDirection = g -}; -mxAbstractCanvas2D.prototype.setStrokeColor = function(a) { - a == mxConstants.NONE && (a = null); - this.state.strokeColor = a -}; -mxAbstractCanvas2D.prototype.setStrokeWidth = function(a) { - this.state.strokeWidth = a -}; -mxAbstractCanvas2D.prototype.setDashed = function(a) { - this.state.dashed = a -}; -mxAbstractCanvas2D.prototype.setDashPattern = function(a) { - this.state.dashPattern = a -}; -mxAbstractCanvas2D.prototype.setLineCap = function(a) { - this.state.lineCap = a -}; -mxAbstractCanvas2D.prototype.setLineJoin = function(a) { - this.state.lineJoin = a -}; -mxAbstractCanvas2D.prototype.setMiterLimit = function(a) { - this.state.miterLimit = a -}; -mxAbstractCanvas2D.prototype.setFontColor = function(a) { - a == mxConstants.NONE && (a = null); - this.state.fontColor = a -}; -mxAbstractCanvas2D.prototype.setFontBackgroundColor = function(a) { - a == mxConstants.NONE && (a = null); - this.state.fontBackgroundColor = a -}; -mxAbstractCanvas2D.prototype.setFontBorderColor = function(a) { - a == mxConstants.NONE && (a = null); - this.state.fontBorderColor = a -}; -mxAbstractCanvas2D.prototype.setFontSize = function(a) { - this.state.fontSize = a -}; -mxAbstractCanvas2D.prototype.setFontFamily = function(a) { - this.state.fontFamily = a -}; -mxAbstractCanvas2D.prototype.setFontStyle = function(a) { - null == a && (a = 0); - this.state.fontStyle = a -}; -mxAbstractCanvas2D.prototype.setShadow = function(a) { - this.state.shadow = a -}; -mxAbstractCanvas2D.prototype.setShadowColor = function(a) { - a == mxConstants.NONE && (a = null); - this.state.shadowColor = a -}; -mxAbstractCanvas2D.prototype.setShadowAlpha = function(a) { - this.state.shadowAlpha = a -}; -mxAbstractCanvas2D.prototype.setShadowOffset = function(a, b) { - this.state.shadowDx = a; - this.state.shadowDy = b -}; -mxAbstractCanvas2D.prototype.begin = function() { - this.lastY = this.lastX = 0; - this.path = [] -}; -mxAbstractCanvas2D.prototype.moveTo = function(a, b) { - this.addOp(this.moveOp, a, b) -}; -mxAbstractCanvas2D.prototype.lineTo = function(a, b) { - this.addOp(this.lineOp, a, b) -}; -mxAbstractCanvas2D.prototype.quadTo = function(a, b, c, d) { - this.addOp(this.quadOp, a, b, c, d) -}; -mxAbstractCanvas2D.prototype.curveTo = function(a, b, c, d, e, f) { - this.addOp(this.curveOp, a, b, c, d, e, f) -}; -mxAbstractCanvas2D.prototype.arcTo = function(a, b, c, d, e, f, g) { - a = mxUtils.arcToCurves(this.lastX, this.lastY, a, b, c, d, e, f, g); - for (b = 0; b < a.length; b += 6) this.curveTo(a[b], a[b + 1], a[b + 2], a[b + 3], a[b + 4], a[b + 5]) -}; -mxAbstractCanvas2D.prototype.close = function(a, b, c, d, e, f) { - this.addOp(this.closeOp) -}; -mxAbstractCanvas2D.prototype.end = function() {}; - -function mxXmlCanvas2D(a) { - mxAbstractCanvas2D.call(this); - this.root = a; - this.writeDefaults() -} -mxUtils.extend(mxXmlCanvas2D, mxAbstractCanvas2D); -mxXmlCanvas2D.prototype.textEnabled = !0; -mxXmlCanvas2D.prototype.compressed = !0; -mxXmlCanvas2D.prototype.writeDefaults = function() { - var a; - a = this.createElement("fontfamily"); - a.setAttribute("family", mxConstants.DEFAULT_FONTFAMILY); - this.root.appendChild(a); - a = this.createElement("fontsize"); - a.setAttribute("size", mxConstants.DEFAULT_FONTSIZE); - this.root.appendChild(a); - a = this.createElement("shadowcolor"); - a.setAttribute("color", mxConstants.SHADOWCOLOR); - this.root.appendChild(a); - a = this.createElement("shadowalpha"); - a.setAttribute("alpha", mxConstants.SHADOW_OPACITY); - this.root.appendChild(a); - a = this.createElement("shadowoffset"); - a.setAttribute("dx", mxConstants.SHADOW_OFFSET_X); - a.setAttribute("dy", mxConstants.SHADOW_OFFSET_Y); - this.root.appendChild(a) -}; -mxXmlCanvas2D.prototype.format = function(a) { - return parseFloat(parseFloat(a).toFixed(2)) -}; -mxXmlCanvas2D.prototype.createElement = function(a) { - return this.root.ownerDocument.createElement(a) -}; -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(a) { - if (this.compressed) { - if (this.state.scale == a) return; - mxAbstractCanvas2D.prototype.setAlpha.apply(this, arguments) - } - var b = this.createElement("scale"); - b.setAttribute("scale", a); - this.root.appendChild(b) -}; -mxXmlCanvas2D.prototype.translate = function(a, b) { - var c = this.createElement("translate"); - c.setAttribute("dx", this.format(a)); - c.setAttribute("dy", this.format(b)); - this.root.appendChild(c) -}; -mxXmlCanvas2D.prototype.rotate = function(a, b, c, d, e) { - var f = this.createElement("rotate"); - if (0 != a || b || c) f.setAttribute("theta", this.format(a)), f.setAttribute("flipH", b ? "1" : "0"), f.setAttribute("flipV", c ? "1" : "0"), f.setAttribute("cx", this.format(d)), f.setAttribute( - "cy", this.format(e)), this.root.appendChild(f) -}; -mxXmlCanvas2D.prototype.setAlpha = function(a) { - if (this.compressed) { - if (this.state.alpha == a) return; - mxAbstractCanvas2D.prototype.setAlpha.apply(this, arguments) - } - var b = this.createElement("alpha"); - b.setAttribute("alpha", this.format(a)); - this.root.appendChild(b) -}; -mxXmlCanvas2D.prototype.setFillColor = function(a) { - a == mxConstants.NONE && (a = null); - if (this.compressed) { - if (this.state.fillColor == a) return; - mxAbstractCanvas2D.prototype.setFillColor.apply(this, arguments) - } - var b = this.createElement("fillcolor"); - b.setAttribute("color", null != a ? a : mxConstants.NONE); - this.root.appendChild(b) -}; -mxXmlCanvas2D.prototype.setGradient = function(a, b, c, d, e, f, g, h, k) { - if (null != a && null != b) { - mxAbstractCanvas2D.prototype.setGradient.apply(this, arguments); - var l = this.createElement("gradient"); - l.setAttribute("c1", a); - l.setAttribute("c2", b); - l.setAttribute("x", this.format(c)); - l.setAttribute("y", this.format(d)); - l.setAttribute("w", this.format(e)); - l.setAttribute("h", this.format(f)); - null != g && l.setAttribute("direction", g); - null != h && l.setAttribute("alpha1", h); - null != k && l.setAttribute("alpha2", k); - this.root.appendChild(l) - } -}; -mxXmlCanvas2D.prototype.setStrokeColor = function(a) { - a == mxConstants.NONE && (a = null); - if (this.compressed) { - if (this.state.strokeColor == a) return; - mxAbstractCanvas2D.prototype.setStrokeColor.apply(this, arguments) - } - var b = this.createElement("strokecolor"); - b.setAttribute("color", null != a ? a : mxConstants.NONE); - this.root.appendChild(b) -}; -mxXmlCanvas2D.prototype.setStrokeWidth = function(a) { - if (this.compressed) { - if (this.state.strokeWidth == a) return; - mxAbstractCanvas2D.prototype.setStrokeWidth.apply(this, arguments) - } - var b = this.createElement("strokewidth"); - b.setAttribute("width", this.format(a)); - this.root.appendChild(b) -}; -mxXmlCanvas2D.prototype.setDashed = function(a) { - if (this.compressed) { - if (this.state.dashed == a) return; - mxAbstractCanvas2D.prototype.setDashed.apply(this, arguments) - } - var b = this.createElement("dashed"); - b.setAttribute("dashed", a ? "1" : "0"); - this.root.appendChild(b) -}; -mxXmlCanvas2D.prototype.setDashPattern = function(a) { - if (this.compressed) { - if (this.state.dashPattern == a) return; - mxAbstractCanvas2D.prototype.setDashPattern.apply(this, arguments) - } - var b = this.createElement("dashpattern"); - b.setAttribute("pattern", a); - this.root.appendChild(b) -}; -mxXmlCanvas2D.prototype.setLineCap = function(a) { - if (this.compressed) { - if (this.state.lineCap == a) return; - mxAbstractCanvas2D.prototype.setLineCap.apply(this, arguments) - } - var b = this.createElement("linecap"); - b.setAttribute("cap", a); - this.root.appendChild(b) -}; -mxXmlCanvas2D.prototype.setLineJoin = function(a) { - if (this.compressed) { - if (this.state.lineJoin == a) return; - mxAbstractCanvas2D.prototype.setLineJoin.apply(this, arguments) - } - var b = this.createElement("linejoin"); - b.setAttribute("join", a); - this.root.appendChild(b) -}; -mxXmlCanvas2D.prototype.setMiterLimit = function(a) { - if (this.compressed) { - if (this.state.miterLimit == a) return; - mxAbstractCanvas2D.prototype.setMiterLimit.apply(this, arguments) - } - var b = this.createElement("miterlimit"); - b.setAttribute("limit", a); - this.root.appendChild(b) -}; -mxXmlCanvas2D.prototype.setFontColor = function(a) { - if (this.textEnabled) { - a == mxConstants.NONE && (a = null); - if (this.compressed) { - if (this.state.fontColor == a) return; - mxAbstractCanvas2D.prototype.setFontColor.apply(this, arguments) - } - var b = this.createElement("fontcolor"); - b.setAttribute("color", null != a ? a : mxConstants.NONE); - this.root.appendChild(b) - } -}; -mxXmlCanvas2D.prototype.setFontBackgroundColor = function(a) { - if (this.textEnabled) { - a == mxConstants.NONE && (a = null); - if (this.compressed) { - if (this.state.fontBackgroundColor == a) return; - mxAbstractCanvas2D.prototype.setFontBackgroundColor.apply(this, arguments) - } - var b = this.createElement("fontbackgroundcolor"); - b.setAttribute("color", null != a ? a : mxConstants.NONE); - this.root.appendChild(b) - } -}; -mxXmlCanvas2D.prototype.setFontBorderColor = function(a) { - if (this.textEnabled) { - a == mxConstants.NONE && (a = null); - if (this.compressed) { - if (this.state.fontBorderColor == a) return; - mxAbstractCanvas2D.prototype.setFontBorderColor.apply(this, arguments) - } - var b = this.createElement("fontbordercolor"); - b.setAttribute("color", null != a ? a : mxConstants.NONE); - this.root.appendChild(b) - } -}; -mxXmlCanvas2D.prototype.setFontSize = function(a) { - if (this.textEnabled) { - if (this.compressed) { - if (this.state.fontSize == a) return; - mxAbstractCanvas2D.prototype.setFontSize.apply(this, arguments) - } - var b = this.createElement("fontsize"); - b.setAttribute("size", a); - this.root.appendChild(b) - } -}; -mxXmlCanvas2D.prototype.setFontFamily = function(a) { - if (this.textEnabled) { - if (this.compressed) { - if (this.state.fontFamily == a) return; - mxAbstractCanvas2D.prototype.setFontFamily.apply(this, arguments) - } - var b = this.createElement("fontfamily"); - b.setAttribute("family", a); - this.root.appendChild(b) - } -}; -mxXmlCanvas2D.prototype.setFontStyle = function(a) { - if (this.textEnabled) { - null == a && (a = 0); - if (this.compressed) { - if (this.state.fontStyle == a) return; - mxAbstractCanvas2D.prototype.setFontStyle.apply(this, arguments) - } - var b = this.createElement("fontstyle"); - b.setAttribute("style", a); - this.root.appendChild(b) - } -}; -mxXmlCanvas2D.prototype.setShadow = function(a) { - if (this.compressed) { - if (this.state.shadow == a) return; - mxAbstractCanvas2D.prototype.setShadow.apply(this, arguments) - } - var b = this.createElement("shadow"); - b.setAttribute("enabled", a ? "1" : "0"); - this.root.appendChild(b) -}; -mxXmlCanvas2D.prototype.setShadowColor = function(a) { - if (this.compressed) { - a == mxConstants.NONE && (a = null); - if (this.state.shadowColor == a) return; - mxAbstractCanvas2D.prototype.setShadowColor.apply(this, arguments) - } - var b = this.createElement("shadowcolor"); - b.setAttribute("color", null != a ? a : mxConstants.NONE); - this.root.appendChild(b) -}; -mxXmlCanvas2D.prototype.setShadowAlpha = function(a) { - if (this.compressed) { - if (this.state.shadowAlpha == a) return; - mxAbstractCanvas2D.prototype.setShadowAlpha.apply(this, arguments) - } - var b = this.createElement("shadowalpha"); - b.setAttribute("alpha", a); - this.root.appendChild(b) -}; -mxXmlCanvas2D.prototype.setShadowOffset = function(a, b) { - if (this.compressed) { - if (this.state.shadowDx == a && this.state.shadowDy == b) return; - mxAbstractCanvas2D.prototype.setShadowOffset.apply(this, arguments) - } - var c = this.createElement("shadowoffset"); - c.setAttribute("dx", a); - c.setAttribute("dy", b); - this.root.appendChild(c) -}; -mxXmlCanvas2D.prototype.rect = function(a, b, c, d) { - var e = this.createElement("rect"); - e.setAttribute("x", this.format(a)); - e.setAttribute("y", this.format(b)); - e.setAttribute("w", this.format(c)); - e.setAttribute("h", this.format(d)); - this.root.appendChild(e) -}; -mxXmlCanvas2D.prototype.roundrect = function(a, b, c, d, e, f) { - var g = this.createElement("roundrect"); - g.setAttribute("x", this.format(a)); - g.setAttribute("y", this.format(b)); - g.setAttribute("w", this.format(c)); - g.setAttribute("h", this.format(d)); - g.setAttribute("dx", this.format(e)); - g.setAttribute("dy", this.format(f)); - this.root.appendChild(g) -}; -mxXmlCanvas2D.prototype.ellipse = function(a, b, c, d) { - var e = this.createElement("ellipse"); - e.setAttribute("x", this.format(a)); - e.setAttribute("y", this.format(b)); - e.setAttribute("w", this.format(c)); - e.setAttribute("h", this.format(d)); - this.root.appendChild(e) -}; -mxXmlCanvas2D.prototype.image = function(a, b, c, d, e, f, g, h) { - e = this.converter.convert(e); - var k = this.createElement("image"); - k.setAttribute("x", this.format(a)); - k.setAttribute("y", this.format(b)); - k.setAttribute("w", this.format(c)); - k.setAttribute("h", this.format(d)); - k.setAttribute("src", e); - k.setAttribute("aspect", f ? "1" : "0"); - k.setAttribute("flipH", g ? "1" : "0"); - k.setAttribute("flipV", h ? "1" : "0"); - this.root.appendChild(k) -}; -mxXmlCanvas2D.prototype.begin = function() { - this.root.appendChild(this.createElement("begin")); - this.lastY = this.lastX = 0 -}; -mxXmlCanvas2D.prototype.moveTo = function(a, b) { - var c = this.createElement("move"); - c.setAttribute("x", this.format(a)); - c.setAttribute("y", this.format(b)); - this.root.appendChild(c); - this.lastX = a; - this.lastY = b -}; -mxXmlCanvas2D.prototype.lineTo = function(a, b) { - var c = this.createElement("line"); - c.setAttribute("x", this.format(a)); - c.setAttribute("y", this.format(b)); - this.root.appendChild(c); - this.lastX = a; - this.lastY = b -}; -mxXmlCanvas2D.prototype.quadTo = function(a, b, c, d) { - var e = this.createElement("quad"); - e.setAttribute("x1", this.format(a)); - e.setAttribute("y1", this.format(b)); - e.setAttribute("x2", this.format(c)); - e.setAttribute("y2", this.format(d)); - this.root.appendChild(e); - this.lastX = c; - this.lastY = d -}; -mxXmlCanvas2D.prototype.curveTo = function(a, b, c, d, e, f) { - var g = this.createElement("curve"); - g.setAttribute("x1", this.format(a)); - g.setAttribute("y1", this.format(b)); - g.setAttribute("x2", this.format(c)); - g.setAttribute("y2", this.format(d)); - g.setAttribute("x3", this.format(e)); - g.setAttribute("y3", this.format(f)); - this.root.appendChild(g); - this.lastX = e; - this.lastY = f -}; -mxXmlCanvas2D.prototype.close = function() { - this.root.appendChild(this.createElement("close")) -}; -mxXmlCanvas2D.prototype.text = function(a, b, c, d, e, f, g, h, k, l, m, n) { - if (this.textEnabled && null != e) { - mxUtils.isNode(e) && (e = mxUtils.getOuterHtml(e)); - var p = this.createElement("text"); - p.setAttribute("x", this.format(a)); - p.setAttribute("y", this.format(b)); - p.setAttribute("w", this.format(c)); - p.setAttribute("h", this.format(d)); - p.setAttribute("str", e); - null != f && p.setAttribute("align", f); - null != g && p.setAttribute("valign", g); - p.setAttribute("wrap", h ? "1" : "0"); - null == k && (k = ""); - p.setAttribute("format", k); - null != l && p.setAttribute("fill", - l ? "1" : "0"); - null != m && p.setAttribute("clip", m ? "1" : "0"); - null != n && p.setAttribute("rotation", n); - this.root.appendChild(p) - } -}; -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")) -}; - -function mxSvgCanvas2D(a, b) { - mxAbstractCanvas2D.call(this); - this.root = a; - this.gradients = []; - this.defs = null; - this.styleEnabled = null != b ? b : !1; - var c = null; - if (a.ownerDocument != document) - for (c = a; null != c && "svg" != c.nodeName;) c = c.parentNode; - null != c && (0 < c.getElementsByTagName("defs").length && (this.defs = c.getElementsByTagName("defs")[0]), null == this.defs && (this.defs = this.createElement("defs"), null != c.firstChild ? c.insertBefore( - this.defs, c.firstChild) : c.appendChild(this.defs)), this.styleEnabled && this.defs.appendChild(this.createStyle())) -} -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(a) { - a = this.createElement("style"); - a.setAttribute("type", "text/css"); - mxUtils.write(a, "svg{font-family:" + mxConstants.DEFAULT_FONTFAMILY + ";font-size:" + mxConstants.DEFAULT_FONTSIZE + ";fill:none;stroke-miterlimit:10}"); - return a -}; -mxSvgCanvas2D.prototype.createElement = function(a, b) { - if (null != this.root.ownerDocument.createElementNS) return this.root.ownerDocument.createElementNS(b || mxConstants.NS_SVG, a); - var c = this.root.ownerDocument.createElement(a); - null != b && c.setAttribute("xmlns", b); - return c -}; -mxSvgCanvas2D.prototype.createGradientId = function(a, b, c, d, e) { - "#" == a.charAt(0) && (a = a.substring(1)); - "#" == b.charAt(0) && (b = b.substring(1)); - a = a.toLowerCase() + "-" + c; - b = b.toLowerCase() + "-" + d; - c = null; - null == e || e == mxConstants.DIRECTION_SOUTH ? c = "s" : e == mxConstants.DIRECTION_EAST ? c = "e" : (d = a, a = b, b = d, e == mxConstants.DIRECTION_NORTH ? c = "s" : e == mxConstants.DIRECTION_WEST && - (c = "e")); - return "mx-gradient-" + a + "-" + b + "-" + c -}; -mxSvgCanvas2D.prototype.getSvgGradient = function(a, b, c, d, e) { - var f = this.createGradientId(a, b, c, d, e), - g = this.gradients[f]; - if (null == g) { - var h = this.root.ownerSVGElement, - k = 0, - l = f + "-" + k; - if (null != h) - for (g = h.ownerDocument.getElementById(l); null != g && g.ownerSVGElement != h;) l = f + "-" + k++, g = h.ownerDocument.getElementById(l); - else l = "id" + ++this.refCount; - null == g && (g = this.createSvgGradient(a, b, c, d, e), g.setAttribute("id", l), null != this.defs ? this.defs.appendChild(g) : h.appendChild(g)); - this.gradients[f] = g - } - return g.getAttribute("id") -}; -mxSvgCanvas2D.prototype.createSvgGradient = function(a, b, c, d, e) { - var f = this.createElement("linearGradient"); - f.setAttribute("x1", "0%"); - f.setAttribute("y1", "0%"); - f.setAttribute("x2", "0%"); - f.setAttribute("y2", "0%"); - null == e || e == mxConstants.DIRECTION_SOUTH ? f.setAttribute("y2", "100%") : e == mxConstants.DIRECTION_EAST ? f.setAttribute("x2", "100%") : e == mxConstants.DIRECTION_NORTH ? f.setAttribute( - "y1", "100%") : e == mxConstants.DIRECTION_WEST && f.setAttribute("x1", "100%"); - c = 1 > c ? ";stop-opacity:" + c : ""; - e = this.createElement("stop"); - e.setAttribute("offset", "0%"); - e.setAttribute("style", "stop-color:" + a + c); - f.appendChild(e); - c = 1 > d ? ";stop-opacity:" + d : ""; - e = this.createElement("stop"); - e.setAttribute("offset", "100%"); - e.setAttribute("style", "stop-color:" + b + c); - f.appendChild(e); - return f -}; -mxSvgCanvas2D.prototype.addNode = function(a, b) { - var c = this.node, - d = this.state; - if (null != c) { - if ("path" == c.nodeName) - if (null != this.path && 0 < this.path.length) c.setAttribute("d", this.path.join(" ")); - else return; - a && null != d.fillColor ? this.updateFill() : this.styleEnabled || ("ellipse" == c.nodeName && mxClient.IS_NS && !mxClient.IS_GC && !mxClient.IS_SF ? c.setAttribute("fill", "transparent") : c.setAttribute( - "fill", "none"), a = !1); - b && null != d.strokeColor ? this.updateStroke() : this.styleEnabled || c.setAttribute("stroke", "none"); - null != - d.transform && 0 < d.transform.length && c.setAttribute("transform", d.transform); - d.shadow && this.root.appendChild(this.createShadow(c)); - 0 < this.strokeTolerance && !a && this.root.appendChild(this.createTolerance(c)); - this.pointerEvents && ("path" != c.nodeName || this.path[this.path.length - 1] == this.closeOp) && c.setAttribute("pointer-events", "all"); - this.root.appendChild(c) - } -}; -mxSvgCanvas2D.prototype.updateFill = function() { - var a = this.state; - 1 > a.alpha && this.node.setAttribute("fill-opacity", a.alpha); - null != a.fillColor && (null != a.gradientColor ? (a = this.getSvgGradient(a.fillColor, a.gradientColor, a.fillAlpha, a.gradientAlpha, a.gradientDirection), this.node.setAttribute("fill", "url(#" + - a + ")")) : this.node.setAttribute("fill", a.fillColor.toLowerCase())) -}; -mxSvgCanvas2D.prototype.updateStroke = function() { - var a = this.state; - this.node.setAttribute("stroke", a.strokeColor.toLowerCase()); - 1 > a.alpha && this.node.setAttribute("stroke-opacity", a.alpha); - var b = Math.max(1, this.format(a.strokeWidth * a.scale)); - 1 != b && this.node.setAttribute("stroke-width", b); - "path" == this.node.nodeName && this.updateStrokeAttributes(); - a.dashed && this.node.setAttribute("stroke-dasharray", this.createDashPattern(b)) -}; -mxSvgCanvas2D.prototype.updateStrokeAttributes = function() { - var a = this.state; - null != a.lineJoin && "miter" != a.lineJoin && this.node.setAttribute("stroke-linejoin", a.lineJoin); - if (null != a.lineCap) { - var b = a.lineCap; - "flat" == b && (b = "butt"); - "butt" != b && this.node.setAttribute("stroke-linecap", b) - } - null != a.miterLimit && (!this.styleEnabled || 10 != a.miterLimit) && this.node.setAttribute("stroke-miterlimit", a.miterLimit) -}; -mxSvgCanvas2D.prototype.createDashPattern = function(a) { - var b = this.state.dashPattern.split(" "), - c = []; - if (0 < b.length) - for (var d = 0; d < b.length; d++) c[d] = Number(b[d]) * a; - return c.join(" ") -}; -mxSvgCanvas2D.prototype.createTolerance = function(a) { - a = a.cloneNode(!0); - var b = parseFloat(a.getAttribute("stroke-width") || 1) + this.strokeTolerance; - a.setAttribute("pointer-events", "stroke"); - a.setAttribute("visibility", "hidden"); - a.removeAttribute("stroke-dasharray"); - a.setAttribute("stroke-width", b); - a.setAttribute("fill", "none"); - a.setAttribute("stroke", mxClient.IS_OP ? "none" : "white"); - return a -}; -mxSvgCanvas2D.prototype.createShadow = function(a) { - a = a.cloneNode(!0); - var b = this.state; - "none" != a.getAttribute("fill") && a.setAttribute("fill", b.shadowColor); - "none" != a.getAttribute("stroke") && a.setAttribute("stroke", b.shadowColor); - a.setAttribute("transform", "translate(" + this.format(b.shadowDx * b.scale) + "," + this.format(b.shadowDy * b.scale) + ")" + (b.transform || "")); - a.setAttribute("opacity", b.shadowAlpha); - return a -}; -mxSvgCanvas2D.prototype.rotate = function(a, b, c, d, e) { - if (0 != a || b || c) { - var f = this.state; - d += f.dx; - e += f.dy; - d *= f.scale; - e *= f.scale; - f.transform = f.transform || ""; - if (b && c) a += 180; - else if (b ^ c) { - var g = b ? d : 0, - h = b ? -1 : 1, - k = c ? e : 0, - l = c ? -1 : 1; - f.transform += "translate(" + this.format(g) + "," + this.format(k) + ")scale(" + this.format(h) + "," + this.format(l) + ")translate(" + this.format(-g) + "," + this.format(-k) + ")" - } - if (b ? !c : c) a *= -1; - 0 != a && (f.transform += "rotate(" + this.format(a) + "," + this.format(d) + "," + this.format(e) + ")"); - f.rotation += a; - f.rotationCx = - d; - f.rotationCy = e - } -}; -mxSvgCanvas2D.prototype.begin = function() { - mxAbstractCanvas2D.prototype.begin.apply(this, arguments); - this.node = this.createElement("path") -}; -mxSvgCanvas2D.prototype.rect = function(a, b, c, d) { - var e = this.state, - f = this.createElement("rect"); - f.setAttribute("x", this.format((a + e.dx) * e.scale)); - f.setAttribute("y", this.format((b + e.dy) * e.scale)); - f.setAttribute("width", this.format(c * e.scale)); - f.setAttribute("height", this.format(d * e.scale)); - this.node = f -}; -mxSvgCanvas2D.prototype.roundrect = function(a, b, c, d, e, f) { - this.rect(a, b, c, d); - 0 < e && this.node.setAttribute("rx", this.format(e * this.state.scale)); - 0 < f && this.node.setAttribute("ry", this.format(f * this.state.scale)) -}; -mxSvgCanvas2D.prototype.ellipse = function(a, b, c, d) { - var e = this.state, - f = this.createElement("ellipse"); - f.setAttribute("cx", Math.round((a + c / 2 + e.dx) * e.scale)); - f.setAttribute("cy", Math.round((b + d / 2 + e.dy) * e.scale)); - f.setAttribute("rx", c / 2 * e.scale); - f.setAttribute("ry", d / 2 * e.scale); - this.node = f -}; -mxSvgCanvas2D.prototype.image = function(a, b, c, d, e, f, g, h) { - e = this.converter.convert(e); - f = null != f ? f : !0; - g = null != g ? g : !1; - h = null != h ? h : !1; - var k = this.state; - a += k.dx; - b += k.dy; - var l = this.createElement("image"); - l.setAttribute("x", this.format(a * k.scale)); - l.setAttribute("y", this.format(b * k.scale)); - l.setAttribute("width", this.format(c * k.scale)); - l.setAttribute("height", this.format(d * k.scale)); - null == l.setAttributeNS ? l.setAttribute("xlink:href", e) : l.setAttributeNS(mxConstants.NS_XLINK, "href", e); - f || l.setAttribute("preserveAspectRatio", - "none"); - 1 > k.alpha && l.setAttribute("opacity", k.alpha); - e = this.state.transform || ""; - if (g || h) { - var m = f = 1, - n = 0, - p = 0; - g && (f = -1, n = -c - 2 * a); - h && (m = -1, p = -d - 2 * b); - e += "scale(" + f + "," + m + ")translate(" + n + "," + p + ")" - } - 0 < e.length && l.setAttribute("transform", e); - this.root.appendChild(l); - this.blockImagePointerEvents && (l.setAttribute("style", "pointer-events:none"), l = this.createElement("rect"), l.setAttribute("visibility", "hidden"), l.setAttribute("pointer-events", "fill"), - l.setAttribute("x", this.format(a * k.scale)), l.setAttribute("y", - this.format(b * k.scale)), l.setAttribute("width", this.format(c * k.scale)), l.setAttribute("height", this.format(d * k.scale)), this.root.appendChild(l)) -}; -mxSvgCanvas2D.prototype.createDiv = function(a, b, c, d, e) { - c = this.state; - d = "display:inline-block;font-size:" + Math.round(c.fontSize) + "px;font-family:" + c.fontFamily + ";color:" + c.fontColor + ";line-height:" + Math.round(c.fontSize * mxConstants.LINE_HEIGHT) + - "px;" + d; - (c.fontStyle & mxConstants.FONT_BOLD) == mxConstants.FONT_BOLD && (d += "font-weight:bold;"); - (c.fontStyle & mxConstants.FONT_ITALIC) == mxConstants.FONT_ITALIC && (d += "font-style:italic;"); - (c.fontStyle & mxConstants.FONT_UNDERLINE) == mxConstants.FONT_UNDERLINE && (d += "font-decoration:underline;"); - b == mxConstants.ALIGN_CENTER ? d += "text-align:center;" : b == mxConstants.ALIGN_RIGHT && (d += "text-align:right;"); - b = ""; - null != c.fontBackgroundColor && (b += "background-color:" + c.fontBackgroundColor + ";"); - null != c.fontBorderColor && (b += "border:1px solid " + c.fontBorderColor + ";"); - mxUtils.isNode(a) || (c = document.createElement("textarea"), c.innerHTML = a.replace(/</g, "\x26amp;lt;").replace(/>/g, "\x26amp;gt;").replace(//g, "\x26gt;"), a = - c.value, e ? d += b : 0 < b.length && (a = '\x3cdiv xmlns\x3d"http://www.w3.org/1999/xhtml" style\x3d"display:inline-block;' + - b + '"\x3e' + a + "\x3c/div\x3e")); - if (!mxClient.IS_IE && document.createElementNS) return e = document.createElementNS("http://www.w3.org/1999/xhtml", "div"), e.setAttribute("style", d), mxUtils.isNode(a) ? this.root.ownerDocument != - document ? e.appendChild(a.cloneNode(!0)) : e.appendChild(a) : e.innerHTML = a, e; - mxUtils.isNode(a) && this.root.ownerDocument != document && (a = a.outerHTML); - a = a.replace(/
/g, "\x3cbr /\x3e").replace(/
/g, "\x3chr /\x3e"); - return mxUtils.parseXml('\x3cdiv xmlns\x3d"http://www.w3.org/1999/xhtml" style\x3d"' + - d + '"\x3e' + a + "\x3c/div\x3e").documentElement -}; -mxSvgCanvas2D.prototype.text = function(a, b, c, d, e, f, g, h, k, l, m, n) { - if (this.textEnabled && null != e) { - n = null != n ? n : 0; - var p = this.state; - a += p.dx; - b += p.dy; - if (this.foEnabled && "html" == k) { - var q = "vertical-align:top;"; - m ? (q += "overflow:hidden;", 0 < d && (q += "max-height:" + Math.round(d) + "px;"), 0 < c && (q += "width:" + Math.round(c) + "px;")) : l && (q += "width:" + Math.round(c) + "px;", 0 < d && - (q += "max-height:" + Math.round(d) + "px;")); - h ? (!m && 0 < c && (q += "width:" + Math.round(c) + "px;"), q += "white-space:normal;") : q += "white-space:nowrap;"; - h = this.createElement("g"); - 1 > p.alpha && h.setAttribute("opacity", p.alpha); - k = this.createElement("foreignObject"); - k.setAttribute("pointer-events", "all"); - q = this.createDiv(e, f, g, q, l); - if (null != q) { - h.appendChild(k); - this.root.appendChild(h); - var s = 0; - if (mxClient.IS_IE && !mxClient.IS_SVG) { - var r = document.createElement("div"); - r.style.cssText = q.getAttribute("style"); - r.style.display = mxClient.IS_QUIRKS ? "inline" : "inline-block"; - r.style.visibility = "hidden"; - r.innerHTML = mxUtils.isNode(e) ? e.outerHTML : e; - document.body.appendChild(r); - s = r.offsetWidth; - d = mxClient.IS_QUIRKS && 0 < d && m ? Math.min(d, r.offsetHeight + 2) : r.offsetHeight; - r.parentNode.removeChild(r); - k.appendChild(q) - } else this.root.ownerDocument != document ? (q.style.visibility = "hidden", document.body.appendChild(q), s = q.offsetWidth, d = q.offsetHeight, k.appendChild(q), q.style.visibility = "") : - (k.appendChild(q), s = q.offsetWidth, d = q.offsetHeight); - c = l ? Math.max(c, s) : s; - 1 > p.alpha && h.setAttribute("opacity", p.alpha); - l = e = 0; - f == mxConstants.ALIGN_CENTER ? e -= c / 2 : f == mxConstants.ALIGN_RIGHT && (e -= c); - a += e; - g == mxConstants.ALIGN_MIDDLE ? - l -= d / 2 : g == mxConstants.ALIGN_BOTTOM && (l -= d); - b += l; - f = 1 != p.scale ? "scale(" + p.scale + ")" : ""; - 0 != p.rotation && this.rotateHtml ? (f += "rotate(" + p.rotation + "," + c / 2 + "," + d / 2 + ")", b = this.rotatePoint((a + c / 2) * p.scale, (b + d / 2) * p.scale, p.rotation, p.rotationCx, - p.rotationCy), a = b.x - c * p.scale / 2, b = b.y - d * p.scale / 2) : (a *= p.scale, b *= p.scale); - 0 != n && (f += "rotate(" + n + "," + -e + "," + -l + ")"); - h.setAttribute("transform", "translate(" + Math.round(a) + "," + Math.round(b) + ")" + f); - k.setAttribute("width", Math.round(Math.max(1, c))); - k.setAttribute("height", - Math.round(Math.max(1, d))) - } - } else this.plainText(a, b, c, d, e, f, g, h, l, m, n) - } -}; -mxSvgCanvas2D.prototype.createClip = function(a, b, c, d) { - a = Math.round(a); - b = Math.round(b); - c = Math.round(c); - d = Math.round(d); - for (var e = "mx-clip-" + a + "-" + b + "-" + c + "-" + d, f = 0, g = e + "-" + f; null != document.getElementById(g);) g = e + "-" + ++f; - clip = this.createElement("clipPath"); - clip.setAttribute("id", g); - e = this.createElement("rect"); - e.setAttribute("x", a); - e.setAttribute("y", b); - e.setAttribute("width", c); - e.setAttribute("height", d); - clip.appendChild(e); - return clip -}; -mxSvgCanvas2D.prototype.plainText = function(a, b, c, d, e, f, g, h, k, l, m) { - m = null != m ? m : 0; - h = this.state; - var n = Math.round(h.fontSize), - p = this.createElement("g"), - q = h.transform || ""; - 0 != m && (q += "rotate(" + m + "," + this.format(a * h.scale) + "," + this.format(b * h.scale) + ")"); - if (l && 0 < c && 0 < d) { - var s = a; - m = b; - f == mxConstants.ALIGN_CENTER ? s -= c / 2 : f == mxConstants.ALIGN_RIGHT && (s -= c); - g == mxConstants.ALIGN_MIDDLE ? m -= d / 2 : g == mxConstants.ALIGN_BOTTOM && (m -= d); - m = this.createClip(s * h.scale - 2, m * h.scale - 2, c * h.scale + 4, d * h.scale + 4); - null != this.defs ? this.defs.appendChild(m) : - this.root.appendChild(m); - p.setAttribute("clip-path", "url(#" + m.getAttribute("id") + ")") - } - this.updateFont(p, f); - m = f == mxConstants.ALIGN_RIGHT ? "end" : f == mxConstants.ALIGN_CENTER ? "middle" : "start"; - "start" != m && p.setAttribute("text-anchor", m); - (!this.styleEnabled || n != mxConstants.DEFAULT_FONTSIZE) && p.setAttribute("font-size", Math.round(n * h.scale) + "px"); - 0 < q.length && p.setAttribute("transform", q); - 1 > h.alpha && p.setAttribute("opacity", h.alpha); - var q = e.split("\n"), - s = Math.round(n * mxConstants.LINE_HEIGHT), - r = n + (q.length - - 1) * s; - m = b + n - 1; - g == mxConstants.ALIGN_MIDDLE ? (d = (this.matchHtmlAlignment && l && 0 < d ? Math.min(r, d) : r) / 2, m -= d + 1) : g == mxConstants.ALIGN_BOTTOM && (d = this.matchHtmlAlignment && l && 0 < d ? - Math.min(r, d) : r, m -= d + 2); - for (d = 0; d < q.length; d++) 0 < q[d].length && 0 < mxUtils.trim(q[d]).length && (l = this.createElement("text"), l.setAttribute("x", this.format(a * h.scale)), l.setAttribute("y", this.format( - m * h.scale)), mxUtils.write(l, q[d]), p.appendChild(l)), m += s; - this.root.appendChild(p); - this.addTextBackground(p, e, a, b, c, r, f, g, k) -}; -mxSvgCanvas2D.prototype.updateFont = function(a) { - var b = this.state; - a.setAttribute("fill", b.fontColor); - (!this.styleEnabled || b.fontFamily != mxConstants.DEFAULT_FONTFAMILY) && a.setAttribute("font-family", b.fontFamily); - (b.fontStyle & mxConstants.FONT_BOLD) == mxConstants.FONT_BOLD && a.setAttribute("font-weight", "bold"); - (b.fontStyle & mxConstants.FONT_ITALIC) == mxConstants.FONT_ITALIC && a.setAttribute("font-style", "italic"); - (b.fontStyle & mxConstants.FONT_UNDERLINE) == mxConstants.FONT_UNDERLINE && a.setAttribute("text-decoration", - "underline") -}; -mxSvgCanvas2D.prototype.addTextBackground = function(a, b, c, d, e, f, g, h, k) { - var l = this.state; - if (null != l.fontBackgroundColor || null != l.fontBorderColor) { - var m = null; - k ? (g == mxConstants.ALIGN_CENTER ? c -= e / 2 : g == mxConstants.ALIGN_RIGHT && (c -= e), h == mxConstants.ALIGN_MIDDLE ? d -= f / 2 : h == mxConstants.ALIGN_BOTTOM && (d -= f), m = new mxRectangle( - (c + 1) * l.scale, d * l.scale, (e - 2) * l.scale, (f + 2) * l.scale)) : null != a.getBBox && this.root.ownerDocument == document ? (m = a.getBBox(), b = mxClient.IS_IE && mxClient.IS_SVG, - m = new mxRectangle(m.x, m.y + (b ? 0 : - 1), m.width, m.height + (b ? 1 : 0))) : (m = document.createElement("div"), m.style.lineHeight = Math.round(l.fontSize * mxConstants.LINE_HEIGHT) + "px", m.style.fontSize = Math.round(l.fontSize) + - "px", m.style.fontFamily = l.fontFamily, m.style.whiteSpace = "nowrap", m.style.position = "absolute", m.style.visibility = "hidden", m.style.display = mxClient.IS_QUIRKS ? "inline" : - "inline-block", m.style.zoom = "1", (l.fontStyle & mxConstants.FONT_BOLD) == mxConstants.FONT_BOLD && (m.style.fontWeight = "bold"), (l.fontStyle & mxConstants.FONT_ITALIC) == mxConstants.FONT_ITALIC && - (m.style.fontStyle = "italic"), b = mxUtils.htmlEntities(b, !1), m.innerHTML = b.replace(/\n/g, "\x3cbr/\x3e"), document.body.appendChild(m), e = m.offsetWidth, f = m.offsetHeight, m.parentNode - .removeChild(m), g == mxConstants.ALIGN_CENTER ? c -= e / 2 : g == mxConstants.ALIGN_RIGHT && (c -= e), h == mxConstants.ALIGN_MIDDLE ? d -= f / 2 : h == mxConstants.ALIGN_BOTTOM && (d -= f), - m = new mxRectangle((c + 1) * l.scale, (d + 2) * l.scale, e * l.scale, (f + 1) * l.scale)); - null != m && (b = this.createElement("rect"), b.setAttribute("fill", l.fontBackgroundColor || "none"), b.setAttribute("stroke", - l.fontBorderColor || "none"), b.setAttribute("x", Math.floor(m.x - 1)), b.setAttribute("y", Math.floor(m.y - 1)), b.setAttribute("width", Math.ceil(m.width + 2)), b.setAttribute("height", - Math.ceil(m.height)), l = null != l.fontBorderColor ? Math.max(1, this.format(l.scale)) : 0, b.setAttribute("stroke-width", l), this.root.ownerDocument == document && 1 == mxUtils.mod(l, - 2) && b.setAttribute("transform", "translate(0.5, 0.5)"), a.insertBefore(b, a.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(a) { - mxAbstractCanvas2D.call(this); - this.root = a -}; -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(a, b) { - var c = this.node, - d = this.state; - if (null != c) { - if ("shape" == c.nodeName) - if (null != this.path && 0 < this.path.length) c.path = this.path.join(" ") + " e", c.style.width = this.root.style.width, c.style.height = this.root.style.height, c.coordsize = parseInt(c.style - .width) + " " + parseInt(c.style.height); - else return; - c.strokeweight = this.format(Math.max(1, d.strokeWidth * d.scale / this.vmlScale)) + "px"; - d.shadow && this.root.appendChild(this.createShadow(c, a && null != d.fillColor, b && null != d.strokeColor)); - b && null != d.strokeColor ? (c.stroked = "true", c.strokecolor = d.strokeColor) : c.stroked = "false"; - c.appendChild(this.createStroke()); - a && null != d.fillColor ? c.appendChild(this.createFill()) : this.pointerEvents && ("shape" != c.nodeName || this.path[this.path.length - 1] == this.closeOp) ? c.appendChild(this.createTransparentFill()) : - c.filled = "false"; - this.root.appendChild(c) - } -}; -mxVmlCanvas2D.prototype.createTransparentFill = function() { - var a = document.createElement(mxClient.VML_PREFIX + ":fill"); - a.src = mxClient.imageBasePath + "/transparent.gif"; - a.type = "tile"; - return a -}; -mxVmlCanvas2D.prototype.createFill = function() { - var a = this.state, - b = document.createElement(mxClient.VML_PREFIX + ":fill"); - b.color = a.fillColor; - if (null != a.gradientColor) { - b.type = "gradient"; - b.method = "none"; - b.color2 = a.gradientColor; - var c = 180 - a.rotation, - c = a.gradientDirection == mxConstants.DIRECTION_WEST ? c - (90 + ("x" == this.root.style.flip ? 180 : 0)) : a.gradientDirection == mxConstants.DIRECTION_EAST ? c + (90 + ("x" == this.root.style - .flip ? 180 : 0)) : a.gradientDirection == mxConstants.DIRECTION_NORTH ? c - (180 + ("y" == this.root.style.flip ? - -180 : 0)) : c + ("y" == this.root.style.flip ? -180 : 0); - if ("x" == this.root.style.flip || "y" == this.root.style.flip) c *= -1; - b.angle = mxUtils.mod(c, 360); - b.opacity = 100 * a.alpha * a.fillAlpha + "%"; - b.setAttribute(mxClient.OFFICE_PREFIX + ":opacity2", 100 * a.alpha * a.gradientAlpha + "%") - } else 1 > a.alpha && (b.opacity = 100 * a.alpha + "%"); - return b -}; -mxVmlCanvas2D.prototype.createStroke = function() { - var a = this.state, - b = document.createElement(mxClient.VML_PREFIX + ":stroke"); - b.endcap = a.lineCap || "flat"; - b.joinstyle = a.lineJoin || "miter"; - b.miterlimit = a.miterLimit || "10"; - 1 > a.alpha && (b.opacity = 100 * a.alpha + "%"); - a.dashed && (b.dashstyle = this.getVmlDashStyle()); - return b -}; -mxVmlCanvas2D.prototype.getVmlDashStyle = function() { - var a = "dash"; - if (null != this.state.dashPattern) { - var b = this.state.dashPattern.split(" "); - 0 < b.length && 1 == b[0] && (a = "0 2") - } - return a -}; -mxVmlCanvas2D.prototype.createShadow = function(a, b, c) { - var d = this.state, - e = -d.rotation * (Math.PI / 180), - f = Math.cos(e), - e = Math.sin(e), - g = d.shadowDx * d.scale, - h = d.shadowDy * d.scale; - "x" == this.root.style.flip ? g *= -1 : "y" == this.root.style.flip && (h *= -1); - var k = a.cloneNode(!0); - k.style.marginLeft = Math.round(g * f - h * e) + "px"; - k.style.marginTop = Math.round(g * e + h * f) + "px"; - 8 == document.documentMode && (k.strokeweight = a.strokeweight, "shape" == a.nodeName && (k.path = this.path.join(" ") + " e", k.style.width = this.root.style.width, k.style.height = - this.root.style.height, k.coordsize = parseInt(a.style.width) + " " + parseInt(a.style.height))); - c ? (k.strokecolor = d.shadowColor, k.appendChild(this.createShadowStroke())) : k.stroked = "false"; - b ? k.appendChild(this.createShadowFill()) : k.filled = "false"; - return k -}; -mxVmlCanvas2D.prototype.createShadowFill = function() { - var a = document.createElement(mxClient.VML_PREFIX + ":fill"); - a.color = this.state.shadowColor; - a.opacity = 100 * this.state.alpha * this.state.shadowAlpha + "%"; - return a -}; -mxVmlCanvas2D.prototype.createShadowStroke = function() { - var a = this.createStroke(); - a.opacity = 100 * this.state.alpha * this.state.shadowAlpha + "%"; - return a -}; -mxVmlCanvas2D.prototype.rotate = function(a, b, c, d, e) { - b && c ? a += 180 : b ? this.root.style.flip = "x" : c && (this.root.style.flip = "y"); - if (b ? !c : c) a *= -1; - this.root.style.rotation = a; - this.state.rotation += a; - this.state.rotationCx = d; - this.state.rotationCy = e -}; -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(a, b, c, d) { - var e = this.state, - f = (this.lastX + e.dx) * e.scale, - g = (this.lastY + e.dy) * e.scale; - a = (a + e.dx) * e.scale; - b = (b + e.dy) * e.scale; - c = (c + e.dx) * e.scale; - d = (d + e.dy) * e.scale; - var g = g + 2 / 3 * (b - g), - h = c + 2 / 3 * (a - c); - b = d + 2 / 3 * (b - d); - this.path.push("c " + this.format(f + 2 / 3 * (a - f)) + " " + this.format(g) + " " + this.format(h) + " " + this.format(b) + " " + this.format(c) + " " + this.format(d)); - this.lastX = c / e.scale - e.dx; - this.lastY = d / e.scale - e.dy -}; -mxVmlCanvas2D.prototype.createRect = function(a, b, c, d, e) { - var f = this.state; - a = document.createElement(a); - a.style.position = "absolute"; - a.style.left = this.format((b + f.dx) * f.scale) + "px"; - a.style.top = this.format((c + f.dy) * f.scale) + "px"; - a.style.width = this.format(d * f.scale) + "px"; - a.style.height = this.format(e * f.scale) + "px"; - return a -}; -mxVmlCanvas2D.prototype.rect = function(a, b, c, d) { - this.node = this.createRect(mxClient.VML_PREFIX + ":rect", a, b, c, d) -}; -mxVmlCanvas2D.prototype.roundrect = function(a, b, c, d, e, f) { - this.node = this.createRect(mxClient.VML_PREFIX + ":roundrect", a, b, c, d); - this.node.setAttribute("arcsize", Math.max(100 * e / c, 100 * f / d) + "%") -}; -mxVmlCanvas2D.prototype.ellipse = function(a, b, c, d) { - this.node = this.createRect(mxClient.VML_PREFIX + ":oval", a, b, c, d) -}; -mxVmlCanvas2D.prototype.image = function(a, b, c, d, e, f, g, h) { - var k = null; - f ? (k = this.createRect(mxClient.VML_PREFIX + ":rect", a, b, c, d), k.stroked = "false", a = document.createElement(mxClient.VML_PREFIX + ":fill"), a.aspect = f ? "atmost" : "ignore", a.rotate = - "true", a.type = "frame", a.src = e, k.appendChild(a)) : (k = this.createRect(mxClient.VML_PREFIX + ":image", a, b, c, d), k.src = e); - g && h ? k.style.rotation = "180" : g ? k.style.flip = "x" : h && (k.style.flip = "y"); - 1 > this.state.alpha && (k.style.filter += "alpha(opacity\x3d" + 100 * this.state.alpha + ")"); - this.root.appendChild(k) -}; -mxVmlCanvas2D.prototype.createDiv = function(a, b, c, d) { - c = document.createElement("div"); - var e = this.state, - f = ""; - null != e.fontBackgroundColor && (f += "background-color:" + e.fontBackgroundColor + ";"); - null != e.fontBorderColor && (f += "border:1px solid " + e.fontBorderColor + ";"); - mxUtils.isNode(a) ? c.appendChild(a) : 0 < f.length && !d ? (d = document.createElement("div"), d.style.cssText = f, d.style.display = mxClient.IS_QUIRKS ? "inline" : "inline-block", d.style.zoom = - "1", d.innerHTML = a, c.appendChild(d)) : (c.style.cssText = f, c.innerHTML = a); - a = c.style; - a.fontSize = Math.round(e.fontSize / this.vmlScale) + "px"; - a.fontFamily = e.fontFamily; - a.color = e.fontColor; - a.verticalAlign = "top"; - a.textAlign = b || "left"; - a.lineHeight = Math.round(e.fontSize * mxConstants.LINE_HEIGHT / this.vmlScale) + "px"; - (e.fontStyle & mxConstants.FONT_BOLD) == mxConstants.FONT_BOLD && (a.fontWeight = "bold"); - (e.fontStyle & mxConstants.FONT_ITALIC) == mxConstants.FONT_ITALIC && (a.fontStyle = "italic"); - (e.fontStyle & mxConstants.FONT_UNDERLINE) == mxConstants.FONT_UNDERLINE && (a.fontDecoration = "underline"); - return c -}; -mxVmlCanvas2D.prototype.text = function(a, b, c, d, e, f, g, h, k, l, m, n) { - if (this.textEnabled && null != e) { - var p = this.state; - if ("html" == k) { - null != p.rotation && (b = this.rotatePoint(a, b, p.rotation, p.rotationCx, p.rotationCy), a = b.x, b = b.y); - 8 == document.documentMode ? (a += p.dx, b += p.dy) : (a *= p.scale, b *= p.scale); - k = 8 == document.documentMode ? document.createElement(mxClient.VML_PREFIX + ":group") : document.createElement("div"); - k.style.position = "absolute"; - k.style.display = "inline"; - k.style.left = this.format(a) + "px"; - k.style.top = this.format(b) + - "px"; - k.style.zoom = p.scale; - var q = document.createElement("div"); - q.style.position = "relative"; - q.style.display = "inline"; - var s = mxUtils.getAlignmentAsPoint(f, g), - r = s.x, - s = s.y; - e = this.createDiv(e, f, g, l); - f = document.createElement("div"); - h ? (!m && 0 < c && (e.style.width = Math.round(c) + "px"), e.style.whiteSpace = "normal") : e.style.whiteSpace = "nowrap"; - h = p.rotation + (n || 0); - this.rotateHtml && 0 != h ? (f.style.display = "inline", f.style.zoom = "1", f.appendChild(e), 8 == document.documentMode && "DIV" != this.root.nodeName ? (q.appendChild(f), k.appendChild(q)) : - k.appendChild(f)) : 8 == document.documentMode ? (q.appendChild(e), k.appendChild(q)) : (e.style.display = "inline", k.appendChild(e)); - "DIV" != this.root.nodeName ? (n = document.createElement(mxClient.VML_PREFIX + ":rect"), n.stroked = "false", n.filled = "false", n.appendChild(k), this.root.appendChild(n)) : this.root.appendChild( - k); - m ? (e.style.overflow = "hidden", 0 < c && (e.style.width = Math.round(c) + "px"), 0 < d && 8 == document.documentMode && (e.style.maxHeight = Math.round(d) + "px")) : l && (e.style.width = c + - "px", 0 < d && (e.style.maxHeight = Math.round(d) + - "px")); - if (this.rotateHtml && 0 != h) { - c = h * (Math.PI / 180); - h = parseFloat(parseFloat(Math.cos(c)).toFixed(8)); - n = parseFloat(parseFloat(Math.sin(-c)).toFixed(8)); - c %= 2 * Math.PI; - 0 > c && (c += 2 * Math.PI); - c %= Math.PI; - c > Math.PI / 2 && (c = Math.PI - c); - g = Math.cos(c); - var t = Math.sin(c); - 8 == document.documentMode && (e.style.display = "inline-block", f.style.display = "inline-block", q.style.display = "inline-block"); - e.style.visibility = "hidden"; - document.body.appendChild(e); - c = e.offsetWidth; - q = e.offsetHeight; - if (mxClient.IS_QUIRKS && (m || l) && q > d) q = - d, e.style.height = q + "px"; - d = q; - m = (d - d * g + c * -t) / 2 - n * c * (r + 0.5) + h * d * (s + 0.5); - l = (c - c * g + d * -t) / 2 + h * c * (r + 0.5) + n * d * (s + 0.5); - "group" == k.nodeName && "DIV" == this.root.nodeName ? (r = document.createElement("div"), r.style.display = "inline-block", r.style.position = "absolute", r.style.left = this.format(a + (l - - c / 2) * p.scale) + "px", r.style.top = this.format(b + (m - d / 2) * p.scale) + "px", k.parentNode.appendChild(r), r.appendChild(k)) : (p = 8 == document.documentMode ? 1 : p.scale, k.style - .left = this.format(a + (l - c / 2) * p) + "px", k.style.top = this.format(b + (m - - d / 2) * p) + "px"); - f.style.filter = "progid:DXImageTransform.Microsoft.Matrix(M11\x3d" + h + ", M12\x3d" + n + ", M21\x3d" + -n + ", M22\x3d" + h + ", sizingMethod\x3d'auto expand')"; - f.style.backgroundColor = this.rotatedHtmlBackground; - 1 > this.state.alpha && (f.style.filter += "alpha(opacity\x3d" + 100 * this.state.alpha + ")"); - e.style.visibility = ""; - f.appendChild(e) - } else 8 != document.documentMode ? (e.style.verticalAlign = "top", 1 > this.state.alpha && (k.style.filter = "alpha(opacity\x3d" + 100 * this.state.alpha + ")"), p = e.parentNode, e.style.visibility = - "hidden", document.body.appendChild(e), c = e.offsetWidth, q = e.offsetHeight, mxClient.IS_QUIRKS && (m && q > d) && (q = d, e.style.height = q + "px"), d = q, e.style.visibility = "", p.appendChild( - e), k.style.left = this.format(a + c * r * this.state.scale) + "px", k.style.top = this.format(b + d * s * this.state.scale) + "px") : (1 > this.state.alpha && (e.style.filter = - "alpha(opacity\x3d" + 100 * this.state.alpha + ")"), q.style.left = 100 * r + "%", q.style.top = 100 * s + "%") - } else this.plainText(a, b, c, d, mxUtils.htmlEntities(e, !1), f, g, h, k, l, m, n) - } -}; -mxVmlCanvas2D.prototype.plainText = function(a, b, c, d, e, f, g, h, k, l, m, n) { - d = this.state; - a = (a + d.dx) * d.scale; - b = (b + d.dy) * d.scale; - c = document.createElement(mxClient.VML_PREFIX + ":shape"); - c.style.width = "1px"; - c.style.height = "1px"; - c.stroked = "false"; - l = document.createElement(mxClient.VML_PREFIX + ":fill"); - l.color = d.fontColor; - l.opacity = 100 * d.alpha + "%"; - c.appendChild(l); - l = document.createElement(mxClient.VML_PREFIX + ":path"); - l.textpathok = "true"; - l.v = "m " + this.format(0) + " " + this.format(0) + " l " + this.format(1) + " " + this.format(0); - c.appendChild(l); - l = document.createElement(mxClient.VML_PREFIX + ":textpath"); - l.style.cssText = "v-text-align:" + f; - l.style.align = f; - l.style.fontFamily = d.fontFamily; - l.string = e; - l.on = "true"; - f = Math.round(d.fontSize * d.scale / this.vmlScale); - l.style.fontSize = f + "px"; - (d.fontStyle & mxConstants.FONT_BOLD) == mxConstants.FONT_BOLD && (l.style.fontWeight = "bold"); - (d.fontStyle & mxConstants.FONT_ITALIC) == mxConstants.FONT_ITALIC && (l.style.fontStyle = "italic"); - (d.fontStyle & mxConstants.FONT_UNDERLINE) == mxConstants.FONT_UNDERLINE && - (l.style.textDecoration = "underline"); - e = e.split("\n"); - d = f + (e.length - 1) * f * mxConstants.LINE_HEIGHT; - f = e = 0; - g == mxConstants.ALIGN_BOTTOM ? f = -d / 2 : g != mxConstants.ALIGN_MIDDLE && (f = d / 2); - null != n && (c.style.rotation = n, g = n * (Math.PI / 180), e = Math.sin(g) * f, f *= Math.cos(g)); - c.appendChild(l); - c.style.left = this.format(a - e) + "px"; - c.style.top = this.format(b + f) + "px"; - this.root.appendChild(c) -}; -mxVmlCanvas2D.prototype.stroke = function() { - this.addNode(!1, !0) -}; -mxVmlCanvas2D.prototype.fill = function() { - this.addNode(!0, !1) -}; -mxVmlCanvas2D.prototype.fillAndStroke = function() { - this.addNode(!0, !0) -}; - -function mxGuide(a, b) { - this.graph = a; - this.setStates(b) -} -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(a) { - this.states = a -}; -mxGuide.prototype.isEnabledForEvent = function(a) { - return !0 -}; -mxGuide.prototype.getGuideTolerance = function() { - return this.graph.gridSize * this.graph.view.scale / 2 -}; -mxGuide.prototype.createGuideShape = function(a) { - a = new mxPolyline([], mxConstants.GUIDE_COLOR, mxConstants.GUIDE_STROKEWIDTH); - a.isDashed = !0; - return a -}; -mxGuide.prototype.move = function(a, b, c) { - if (null != this.states && (this.horizontal || this.vertical) && null != a && null != b) { - var d = this.graph.getView().translate, - e = this.graph.getView().scale, - f = b.x, - g = b.y, - h = !1, - k = !1, - l = this.getGuideTolerance(), - m = l, - n = l, - l = a.clone(); - l.x += b.x; - l.y += b.y; - var p = l.x, - q = l.x + l.width, - s = l.getCenterX(), - r = l.y, - t = l.y + l.height, - v = l.getCenterY(); - b = function(b) { - b += this.graph.panDx; - var c = !1; - Math.abs(b - s) < m ? (f = b - a.getCenterX(), m = Math.abs(b - s), c = !0) : Math.abs(b - p) < m ? (f = b - a.x, m = Math.abs(b - p), c = !0) : Math.abs(b - - q) < m && (f = b - a.x - a.width, m = Math.abs(b - q), c = !0); - if (c) { - 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 d = this.graph.container; - b -= this.graph.panDx; - this.guideX.points = [new mxPoint(b, -this.graph.panDy), new mxPoint(b, d.scrollHeight - 3 - this.graph.panDy)] - } - h = h || c - }; - for (var l = function(b) { - b += this.graph.panDy; - var c = !1; - Math.abs(b - v) < n ? (g = b - a.getCenterY(), n = Math.abs(b - v), c = !0) : Math.abs(b - r) < n ? (g = b - a.y, n = Math.abs(b - r), c = !0) : Math.abs(b - t) < n && (g = b - a.y - a.height, - n = Math.abs(b - t), c = !0); - if (c) { - 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 d = this.graph.container; - b -= this.graph.panDy; - this.guideY.points = [new mxPoint(-this.graph.panDx, - b), new mxPoint(d.scrollWidth - 3 - this.graph.panDx, b)] - } - k = k || c - }, w = 0; w < this.states.length; w++) { - var u = this.states[w]; - null != u && (this.horizontal && (b.call(this, u.getCenterX()), b.call(this, u.x), b.call(this, u.x + u.width)), this.vertical && (l.call(this, u.getCenterY()), l.call(this, u.y), l.call(this, - u.y + u.height))) - }!h && null != this.guideX ? this.guideX.node.style.visibility = "hidden" : null != this.guideX && (this.guideX.node.style.visibility = "visible", this.guideX.redraw()); - !k && null != this.guideY ? this.guideY.node.style.visibility = - "hidden" : null != this.guideY && (this.guideY.node.style.visibility = "visible", this.guideY.redraw()); - c && (h || (c = a.x - (this.graph.snap(a.x / e - d.x) + d.x) * e, f = this.graph.snap(f / e) * e - c), k || (d = a.y - (this.graph.snap(a.y / e - d.y) + d.y) * e, g = this.graph.snap(g / e) * e - - d)); - b = new mxPoint(f, g) - } - return b -}; -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) -}; - -function mxStencil(a) { - this.desc = a; - this.parseDescription(); - this.parseConstraints() -} -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 a = this.desc.getAttribute("aspect"); - this.aspect = null != a ? a : "variable"; - a = this.desc.getAttribute("strokewidth"); - this.strokewidth = null != a ? a : "1" -}; -mxStencil.prototype.parseConstraints = function() { - var a = this.desc.getElementsByTagName("connections")[0]; - if (null != a && (a = mxUtils.getChildNodes(a), null != a && 0 < a.length)) { - this.constraints = []; - for (var b = 0; b < a.length; b++) this.constraints.push(this.parseConstraint(a[b])) - } -}; -mxStencil.prototype.parseConstraint = function(a) { - var b = Number(a.getAttribute("x")), - c = Number(a.getAttribute("y")); - a = "1" == a.getAttribute("perimeter"); - return new mxConnectionConstraint(new mxPoint(b, c), a) -}; -mxStencil.prototype.evaluateTextAttribute = function(a, b, c) { - b = this.evaluateAttribute(a, b, c); - a = a.getAttribute("localized"); - if (mxStencil.defaultLocalized && null == a || "1" == a) b = mxResources.get(b); - return b -}; -mxStencil.prototype.evaluateAttribute = function(a, b, c) { - b = a.getAttribute(b); - null == b && (a = mxUtils.getTextContent(a), null != a && (a = mxUtils.eval(a), "function" == typeof a && (b = a(c)))); - return b -}; -mxStencil.prototype.drawShape = function(a, b, c, d, e, f) { - this.drawChildren(a, b, c, d, e, f, this.bgNode, !1); - this.drawChildren(a, b, c, d, e, f, this.fgNode, !0) -}; -mxStencil.prototype.drawChildren = function(a, b, c, d, e, f, g, h) { - if (null != g) { - var k = mxUtils.getValue(b.style, mxConstants.STYLE_DIRECTION, null); - c = this.computeAspect(b.style, c, d, e, f, k); - d = Math.min(c.width, c.height); - d = "inherit" == this.strokewidth ? Number(mxUtils.getNumber(b.style, mxConstants.STYLE_STROKEWIDTH, 1)) : Number(this.strokewidth) * d; - a.setStrokeWidth(d); - for (g = g.firstChild; null != g;) g.nodeType == mxConstants.NODETYPE_ELEMENT && this.drawNode(a, b, g, c, h), g = g.nextSibling - } -}; -mxStencil.prototype.computeAspect = function(a, b, c, d, e, f) { - a = b; - b = d / this.w0; - var g = e / this.h0; - if (f = "north" == f || "south" == f) { - g = d / this.h0; - b = e / this.w0; - var h = (d - e) / 2; - a += h; - c -= h - } - "fixed" == this.aspect && (b = g = Math.min(b, g), f ? (a += (e - this.w0 * b) / 2, c += (d - this.h0 * g) / 2) : (a += (d - this.w0 * b) / 2, c += (e - this.h0 * g) / 2)); - return new mxRectangle(a, c, b, g) -}; -mxStencil.prototype.drawNode = function(a, b, c, d, e) { - var f = c.nodeName, - g = d.x, - h = d.y, - k = d.width, - l = d.height, - m = Math.min(k, l); - if ("save" == f) a.save(); - else if ("restore" == f) a.restore(); - else if ("path" == f) { - a.begin(); - for (c = c.firstChild; null != c;) c.nodeType == mxConstants.NODETYPE_ELEMENT && this.drawNode(a, b, c, d, e), c = c.nextSibling - } else if ("close" == f) a.close(); - else if ("move" == f) a.moveTo(g + Number(c.getAttribute("x")) * k, h + Number(c.getAttribute("y")) * l); - else if ("line" == f) a.lineTo(g + Number(c.getAttribute("x")) * k, h + Number(c.getAttribute("y")) * - l); - else if ("quad" == f) a.quadTo(g + Number(c.getAttribute("x1")) * k, h + Number(c.getAttribute("y1")) * l, g + Number(c.getAttribute("x2")) * k, h + Number(c.getAttribute("y2")) * l); - else if ("curve" == f) a.curveTo(g + Number(c.getAttribute("x1")) * k, h + Number(c.getAttribute("y1")) * l, g + Number(c.getAttribute("x2")) * k, h + Number(c.getAttribute("y2")) * l, g + Number( - c.getAttribute("x3")) * k, h + Number(c.getAttribute("y3")) * l); - else if ("arc" == f) a.arcTo(Number(c.getAttribute("rx")) * k, Number(c.getAttribute("ry")) * l, Number(c.getAttribute("x-axis-rotation")), - Number(c.getAttribute("large-arc-flag")), Number(c.getAttribute("sweep-flag")), g + Number(c.getAttribute("x")) * k, h + Number(c.getAttribute("y")) * l); - else if ("rect" == f) a.rect(g + Number(c.getAttribute("x")) * k, h + Number(c.getAttribute("y")) * l, Number(c.getAttribute("w")) * k, Number(c.getAttribute("h")) * l); - else if ("roundrect" == f) b = c.getAttribute("arcsize"), 0 == b && (b = 100 * mxConstants.RECTANGLE_ROUNDING_FACTOR), m = Number(c.getAttribute("w")) * k, d = Number(c.getAttribute("h")) * l, b = - Number(b) / 100, b = Math.min(m * b, d * b), a.roundrect(g + - Number(c.getAttribute("x")) * k, h + Number(c.getAttribute("y")) * l, m, d, b, b); - else if ("ellipse" == f) a.ellipse(g + Number(c.getAttribute("x")) * k, h + Number(c.getAttribute("y")) * l, Number(c.getAttribute("w")) * k, Number(c.getAttribute("h")) * l); - else if ("image" == f) b = this.evaluateAttribute(c, "src", b), a.image(g + Number(c.getAttribute("x")) * k, h + Number(c.getAttribute("y")) * l, Number(c.getAttribute("w")) * k, Number(c.getAttribute( - "h")) * l, b, !1, "1" == c.getAttribute("flipH"), "1" == c.getAttribute("flipV")); - else if ("text" == f) { - m = this.evaluateTextAttribute(c, - "str", b); - d = "1" == c.getAttribute("vertical") ? -90 : 0; - if ("0" == c.getAttribute("align-shape")) { - var n = b.rotation, - p = 1 == mxUtils.getValue(b.style, mxConstants.STYLE_FLIPH, 0); - b = 1 == mxUtils.getValue(b.style, mxConstants.STYLE_FLIPV, 0); - d = p && b ? d - n : p || b ? d + n : d - n - } - d -= c.getAttribute("rotation"); - a.text(g + Number(c.getAttribute("x")) * k, h + Number(c.getAttribute("y")) * l, 0, 0, m, c.getAttribute("align") || "left", c.getAttribute("valign") || "top", !1, "", !1, !1, d) - } else if ("include-shape" == f) n = mxStencilRegistry.getStencil(c.getAttribute("name")), - null != n && (g += Number(c.getAttribute("x")) * k, h += Number(c.getAttribute("y")) * l, m = Number(c.getAttribute("w")) * k, d = Number(c.getAttribute("h")) * l, n.drawShape(a, b, g, h, m, d)); - else if ("fillstroke" == f) a.fillAndStroke(); - else if ("fill" == f) a.fill(); - else if ("stroke" == f) a.stroke(); - else if ("strokewidth" == f) a.setStrokeWidth(Number(c.getAttribute("width")) * m); - else if ("dashed" == f) a.setDashed("1" == c.getAttribute("dashed")); - else if ("dashpattern" == f) { - if (c = c.getAttribute("pattern"), null != c) { - c = c.split(" "); - k = []; - for (l = 0; l < - c.length; l++) 0 < c[l].length && k.push(Number(c[l]) * m); - c = k.join(" "); - a.setDashPattern(c) - } - } else "strokecolor" == f ? a.setStrokeColor(c.getAttribute("color")) : "linecap" == f ? a.setLineCap(c.getAttribute("cap")) : "linejoin" == f ? a.setLineJoin(c.getAttribute("join")) : - "miterlimit" == f ? a.setMiterLimit(Number(c.getAttribute("limit"))) : "fillcolor" == f ? a.setFillColor(c.getAttribute("color")) : "alpha" == f ? a.setAlpha(c.getAttribute("alpha")) : - "fontcolor" == f ? a.setFontColor(c.getAttribute("color")) : "fontstyle" == f ? a.setFontStyle(c.getAttribute("style")) : - "fontfamily" == f ? a.setFontFamily(c.getAttribute("family")) : "fontsize" == f && a.setFontSize(Number(c.getAttribute("size")) * m); - e && ("fillstroke" == f || "fill" == f || "stroke" == f) && a.setShadow(!1) -}; - -function mxShape(a) { - this.stencil = a; - this.strokewidth = 1; - this.rotation = 0; - this.opacity = 100; - this.flipV = this.flipH = !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(a) { - null == this.node && (this.node = this.create(a), null != a && a.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) ? 0.5 : 0 -}; -mxShape.prototype.create = function(a) { - var b = null; - return b = null != a.ownerSVGElement ? this.createSvg(a) : 8 == document.documentMode || this.dialect == mxConstants.DIALECT_SVG || this.dialect != mxConstants.DIALECT_VML && this.isHtmlAllowed() ? - this.createHtml(a) : this.createVml(a) -}; -mxShape.prototype.createSvg = function() { - return document.createElementNS(mxConstants.NS_SVG, "g") -}; -mxShape.prototype.createVml = function() { - var a = document.createElement(mxClient.VML_PREFIX + ":group"); - a.style.position = "absolute"; - return a -}; -mxShape.prototype.createHtml = function() { - var a = document.createElement("div"); - a.style.position = "absolute"; - return a -}; -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 a = this.points; - if (null != a && 0 < a.length && null != a[0]) { - this.bounds = new mxRectangle(Number(a[0].x), Number(a[0].y), 1, 1); - for (var b = 1; b < this.points.length; b++) null != a[b] && this.bounds.add(new mxRectangle(Number(a[b].x), Number(a[b].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 a = document.createElement(mxClient.VML_PREFIX + ":group"); - a.style.position = "absolute"; - a.style.width = this.node.style.width; - a.style.height = this.node.style.height; - return a -}; -mxShape.prototype.redrawShape = function() { - var a = this.createCanvas(); - for (a.pointerEvents = this.pointerEvents; this.node.hasChildNodes();) this.node.removeChild(this.node.lastChild); - this.paint(a); - this.node != a.root && this.node.insertAdjacentHTML("beforeend", a.root.outerHTML); - "DIV" == this.node.nodeName && 8 == document.documentMode && (this.node.style.filter = "", (null == this.stencil || !this.stencilPointerEvents) && mxUtils.addTransparentBackgroundFilter(this.node)); - this.destroyCanvas(a) -}; -mxShape.prototype.createCanvas = function() { - var a = null, - b = null; - if (null != this.node.ownerSVGElement) a = new mxSvgCanvas2D(this.node, !1), a.strokeTolerance = this.svgStrokeTolerance, a.blockImagePointerEvents = mxClient.IS_NS && !mxClient.IS_SF && ! - mxClient.IS_GC, b = this.getSvgScreenOffset(), 0 != b ? this.node.setAttribute("transform", "translate(" + b + "," + b + ")") : this.node.removeAttribute("transform"); - else { - this.updateVmlContainer(); - var c = Math.max(1, Math.round(this.bounds.width)), - d = Math.max(1, Math.round(this.bounds.height)), - b = 8 == document.documentMode && this.isParseVml() ? this.createVmlGroup() : this.node, - a = new mxVmlCanvas2D(b, !1); - "" != b.tagUrn && (b.coordsize = c * this.vmlScale + "," + d * this.vmlScale, a.scale(this.vmlScale), a.vmlScale = this.vmlScale); - b = this.scale; - a.translate(-Math.round(this.bounds.x / b), -Math.round(this.bounds.y / b)) - } - return a -}; -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 a = Math.max(1, Math.round(this.bounds.width)), - b = Math.max(1, Math.round(this.bounds.height)); - this.node.style.width = a + "px"; - this.node.style.height = b + "px"; - this.node.style.overflow = "visible" -}; -mxShape.prototype.destroyCanvas = function(a) { - if (a instanceof mxSvgCanvas2D) { - for (var b in a.gradients) { - var c = a.gradients[b]; - c.mxRefCount = (c.mxRefCount || 0) + 1 - } - this.releaseSvgGradients(this.oldGradients); - this.oldGradients = a.gradients - } -}; -mxShape.prototype.paint = function(a) { - var b = this.scale, - c = this.bounds.x / b, - d = this.bounds.y / b, - e = this.bounds.width / b, - f = this.bounds.height / b; - if (this.isPaintBoundsInverted()) var g = (e - f) / 2, - c = c + g, - d = d - g, - g = e, - e = f, - f = g; - this.updateTransform(a, c, d, e, f); - this.configureCanvas(a, c, d, e, f); - if (null != this.stencil) this.paintStencilShape(a, c, d, e, f); - else if (a.setStrokeWidth(this.strokewidth), null != this.points) { - c = []; - for (d = 0; d < this.points.length; d++) c.push(new mxPoint(this.points[d].x / b, this.points[d].y / b)); - this.paintEdgeShape(a, - c) - } else this.paintVertexShape(a, c, d, e, f) -}; -mxShape.prototype.configureCanvas = function(a, b, c, d, e) { - var f = null; - null != this.style && (f = this.style.dashPattern); - a.setAlpha(this.opacity / 100); - null != this.isShadow && a.setShadow(this.isShadow); - null != this.isDashed && a.setDashed(this.isDashed); - null != f && a.setDashPattern(f); - null != this.gradient ? (b = this.getGradientBounds(a, b, c, d, e), a.setGradient(this.fill, this.gradient, b.x, b.y, b.width, b.height, this.gradientDirection)) : a.setFillColor(this.fill); - a.setStrokeColor(this.stroke) -}; -mxShape.prototype.getGradientBounds = function(a, b, c, d, e) { - return new mxRectangle(b, c, d, e) -}; -mxShape.prototype.updateTransform = function(a, b, c, d, e) { - a.scale(this.scale); - a.rotate(this.getShapeRotation(), this.flipH, this.flipV, b + d / 2, c + e / 2) -}; -mxShape.prototype.paintStencilShape = function(a, b, c, d, e) { - this.stencilPointerEvents && (this.dialect == mxConstants.DIALECT_SVG ? this.addTransparentBackgroundRectangle(this.node, b, c, d, e) : 8 != document.documentMode && this.setTransparentBackgroundImage( - this.node)); - this.stencil.drawShape(a, this, b, c, d, e) -}; -mxShape.prototype.paintVertexShape = function(a, b, c, d, e) { - this.paintBackground(a, b, c, d, e); - a.setShadow(!1); - this.paintForeground(a, b, c, d, e) -}; -mxShape.prototype.paintBackground = function(a, b, c, d, e) {}; -mxShape.prototype.paintForeground = function(a, b, c, d, e) {}; -mxShape.prototype.paintEdgeShape = function(a, b) {}; -mxShape.prototype.getArcSize = function(a, b) { - var c = mxUtils.getValue(this.style, mxConstants.STYLE_ARCSIZE, 100 * mxConstants.RECTANGLE_ROUNDING_FACTOR) / 100; - return Math.min(a * c, b * c) -}; -mxShape.prototype.paintGlassEffect = function(a, b, c, d, e, f) { - var g = Math.ceil(this.strokewidth / 2); - a.setGradient("#ffffff", "#ffffff", b, c, d, 0.6 * e, "south", 0.9, 0.1); - a.begin(); - f += 2 * g; - this.isRounded ? (a.moveTo(b - g + f, c - g), a.quadTo(b - g, c - g, b - g, c - g + f), a.lineTo(b - g, c + 0.4 * e), a.quadTo(b + 0.5 * d, c + 0.7 * e, b + d + g, c + 0.4 * e), a.lineTo(b + d + - g, c - g + f), a.quadTo(b + d + g, c - g, b + d + g - f, c - g)) : (a.moveTo(b - g, c - g), a.lineTo(b - g, c + 0.4 * e), a.quadTo(b + 0.5 * d, c + 0.7 * e, b + d + g, c + 0.4 * e), a.lineTo( - b + d + g, c - g)); - a.close(); - a.fill() -}; -mxShape.prototype.apply = function(a) { - this.state = a; - this.style = a.style; - if (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); - if ("north" == - this.direction || "south" == this.direction) a = this.flipH, this.flipH = this.flipV, this.flipV = a; - 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(a) { - null == a && (a = ""); - this.cursor = a; - null != this.node && (this.node.style.cursor = a) -}; -mxShape.prototype.getCursor = function() { - return this.cursor -}; -mxShape.prototype.updateBoundingBox = function() { - if (null != this.bounds) { - var a = this.createBoundingBox(); - if (null != a) { - this.augmentBoundingBox(a); - var b = this.getShapeRotation(); - 0 != b && (a = mxUtils.getBoundingBox(a, b)); - a.x = Math.floor(a.x); - a.y = Math.floor(a.y); - a.width = Math.ceil(a.width); - a.height = Math.ceil(a.height) - } - this.boundingBox = a - } -}; -mxShape.prototype.createBoundingBox = function() { - var a = this.bounds.clone(); - if (this.isPaintBoundsInverted()) { - var b = (a.width - a.height) / 2; - a.x += b; - a.y -= b; - b = a.width; - a.width = a.height; - a.height = b - } - return a -}; -mxShape.prototype.augmentBoundingBox = function(a) { - this.isShadow && (a.width += Math.ceil(mxConstants.SHADOW_OFFSET_X * this.scale), a.height += Math.ceil(mxConstants.SHADOW_OFFSET_Y * this.scale)); - var b = Math.ceil(this.strokewidth * this.scale); - a.grow(Math.ceil(b / 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 a = this.getRotation(); - 1 != mxUtils.getValue(this.style, mxConstants.STYLE_HORIZONTAL, 1) && (a += mxText.prototype.verticalTextRotation); - return a -}; -mxShape.prototype.getShapeRotation = function() { - var a = this.getRotation(); - null != this.direction && ("north" == this.direction ? a += 270 : "west" == this.direction ? a += 180 : "south" == this.direction && (a += 90)); - return a -}; -mxShape.prototype.addTransparentBackgroundRectangle = function(a, b, c, d, e) { - a = document.createElementNS(mxConstants.NS_SVG, "rect"); - a.setAttribute("x", b); - a.setAttribute("y", c); - a.setAttribute("width", d); - a.setAttribute("height", e); - a.setAttribute("fill", "none"); - a.setAttribute("stroke", "none"); - a.setAttribute("pointer-events", "all"); - this.node.appendChild(a) -}; -mxShape.prototype.setTransparentBackgroundImage = function(a) { - a.style.backgroundImage = "url('" + mxClient.imageBasePath + "/transparent.gif')" -}; -mxShape.prototype.releaseSvgGradients = function(a) { - if (null != a) - for (var b in a) { - var c = a[b]; - c.mxRefCount = (c.mxRefCount || 0) - 1; - 0 == c.mxRefCount && null != c.parentNode && c.parentNode.removeChild(c) - } -}; -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(a, b) { - mxStencilRegistry.stencils[a] = b - }, - getStencil: function(a) { - return mxStencilRegistry.stencils[a] - } - }, - mxMarker = { - markers: [], - addMarker: function(a, b) { - mxMarker.markers[a] = b - }, - createMarker: function(a, b, c, d, e, f, g, h, k, l) { - var m = mxMarker.markers[c]; - return null != m ? m(a, b, c, d, e, f, g, h, k, l) : null - } - }; -(function() { - function a(a, b, e, f, g, h, k, l, m, n) { - b = 1.118 * g * m; - l = 1.118 * h * m; - g *= k + m; - h *= k + m; - var p = f.clone(); - p.x -= b; - p.y -= l; - k = e != mxConstants.ARROW_CLASSIC ? 1 : 0.75; - f.x += -g * k - b; - f.y += -h * k - l; - return function() { - a.begin(); - a.moveTo(p.x, p.y); - a.lineTo(p.x - g - h / 2, p.y - h + g / 2); - e == mxConstants.ARROW_CLASSIC && a.lineTo(p.x - 3 * g / 4, p.y - 3 * h / 4); - a.lineTo(p.x + h / 2 - g, p.y - h - g / 2); - a.close(); - n ? a.fillAndStroke() : a.stroke() - } - } - - function b(a, b, e, f, g, h, k, l, m, n) { - l = e == mxConstants.ARROW_DIAMOND ? 0.7071 : 0.9862; - b = g * m * l; - l *= h * m; - g *= k + m; - h *= k + m; - var p = f.clone(); - p.x -= b; - p.y -= l; - f.x += -g - b; - f.y += -h - l; - var q = e == mxConstants.ARROW_DIAMOND ? 2 : 3.4; - return function() { - a.begin(); - a.moveTo(p.x, p.y); - a.lineTo(p.x - g / 2 - h / q, p.y + g / q - h / 2); - a.lineTo(p.x - g, p.y - h); - a.lineTo(p.x - g / 2 + h / q, p.y - h / 2 - g / q); - a.close(); - n ? a.fillAndStroke() : a.stroke() - } - } - mxMarker.addMarker("classic", a); - mxMarker.addMarker("block", a); - mxMarker.addMarker("open", function(a, b, e, f, g, h, k, l, m, n) { - b = 1.118 * g * m; - e = 1.118 * h * m; - g *= k + m; - h *= k + m; - var p = f.clone(); - p.x -= b; - p.y -= e; - f.x += 2 * -b; - f.y += 2 * -e; - return function() { - a.begin(); - a.moveTo(p.x - g - - h / 2, p.y - h + g / 2); - a.lineTo(p.x, p.y); - a.lineTo(p.x + h / 2 - g, p.y - h - g / 2); - a.stroke() - } - }); - mxMarker.addMarker("oval", function(a, b, e, f, g, h, k, l, m, n) { - var p = k / 2, - q = f.clone(); - f.x -= g * p; - f.y -= h * p; - return function() { - a.ellipse(q.x - p, q.y - p, k, k); - n ? a.fillAndStroke() : a.stroke() - } - }); - mxMarker.addMarker("diamond", b); - mxMarker.addMarker("diamondThin", b) -})(); - -function mxActor(a, b, c, d) { - mxShape.call(this); - this.bounds = a; - this.fill = b; - this.stroke = c; - this.strokewidth = null != d ? d : 1 -} -mxUtils.extend(mxActor, mxShape); -mxActor.prototype.paintVertexShape = function(a, b, c, d, e) { - a.translate(b, c); - a.begin(); - this.redrawPath(a, b, c, d, e); - a.fillAndStroke() -}; -mxActor.prototype.redrawPath = function(a, b, c, d, e) { - b = d / 3; - a.moveTo(0, e); - a.curveTo(0, 3 * e / 5, 0, 2 * e / 5, d / 2, 2 * e / 5); - a.curveTo(d / 2 - b, 2 * e / 5, d / 2 - b, 0, d / 2, 0); - a.curveTo(d / 2 + b, 0, d / 2 + b, 2 * e / 5, d / 2, 2 * e / 5); - a.curveTo(d, 2 * e / 5, d, 3 * e / 5, d, e); - a.close() -}; - -function mxCloud(a, b, c, d) { - mxActor.call(this); - this.bounds = a; - this.fill = b; - this.stroke = c; - this.strokewidth = null != d ? d : 1 -} -mxUtils.extend(mxCloud, mxActor); -mxCloud.prototype.redrawPath = function(a, b, c, d, e) { - a.moveTo(0.25 * d, 0.25 * e); - a.curveTo(0.05 * d, 0.25 * e, 0, 0.5 * e, 0.16 * d, 0.55 * e); - a.curveTo(0, 0.66 * e, 0.18 * d, 0.9 * e, 0.31 * d, 0.8 * e); - a.curveTo(0.4 * d, e, 0.7 * d, e, 0.8 * d, 0.8 * e); - a.curveTo(d, 0.8 * e, d, 0.6 * e, 0.875 * d, 0.5 * e); - a.curveTo(d, 0.3 * e, 0.8 * d, 0.1 * e, 0.625 * d, 0.2 * e); - a.curveTo(0.5 * d, 0.05 * e, 0.3 * d, 0.05 * e, 0.25 * d, 0.25 * e); - a.close() -}; - -function mxRectangleShape(a, b, c, d) { - mxShape.call(this); - this.bounds = a; - this.fill = b; - this.stroke = c; - this.strokewidth = null != d ? d : 1 -} -mxUtils.extend(mxRectangleShape, mxShape); -mxRectangleShape.prototype.isHtmlAllowed = function() { - return !this.isRounded && !this.glass && 0 == this.rotation -}; -mxRectangleShape.prototype.paintBackground = function(a, b, c, d, e) { - if (this.isRounded) { - var f = mxUtils.getValue(this.style, mxConstants.STYLE_ARCSIZE, 100 * mxConstants.RECTANGLE_ROUNDING_FACTOR) / 100, - f = Math.min(d * f, e * f); - a.roundrect(b, c, d, e, f, f) - } else a.rect(b, c, d, e); - a.fillAndStroke() -}; -mxRectangleShape.prototype.paintForeground = function(a, b, c, d, e) { - this.glass && this.paintGlassEffect(a, b, c, d, e, this.getArcSize(d + this.strokewidth, e + this.strokewidth)) -}; -mxRectangleShape.prototype.redrawHtmlShape = function() { - this.updateHtmlBounds(this.node); - this.updateHtmlFilters(this.node); - this.updateHtmlColors(this.node) -}; -mxRectangleShape.prototype.updateHtmlBounds = function(a) { - var b = 9 <= document.documentMode ? 0 : Math.ceil(this.strokewidth * this.scale); - a.style.borderWidth = Math.max(1, b) + "px"; - a.style.overflow = "hidden"; - a.style.left = Math.round(this.bounds.x - b / 2) + "px"; - a.style.top = Math.round(this.bounds.y - b / 2) + "px"; - "CSS1Compat" == document.compatMode && (b = -b); - a.style.width = Math.round(Math.max(0, this.bounds.width + b)) + "px"; - a.style.height = Math.round(Math.max(0, this.bounds.height + b)) + "px" -}; -mxRectangleShape.prototype.updateHtmlColors = function(a) { - var b = this.stroke; - null != b && b != mxConstants.NONE ? (a.style.borderColor = b, this.isDashed ? a.style.borderStyle = "dashed" : 0 < this.strokewidth && (a.style.borderStyle = "solid"), a.style.borderWidth = Math - .max(1, Math.ceil(this.strokewidth * this.scale)) + "px") : a.style.borderWidth = "0px"; - b = this.fill; - null != b && b != mxConstants.NONE ? (a.style.backgroundColor = b, a.style.backgroundImage = "none") : this.pointerEvents ? a.style.backgroundColor = "transparent" : 8 == document.documentMode ? - mxUtils.addTransparentBackgroundFilter(a) : this.setTransparentBackgroundImage(a) -}; -mxRectangleShape.prototype.updateHtmlFilters = function(a) { - var b = ""; - 100 > this.opacity && (b += "alpha(opacity\x3d" + this.opacity + ")"); - this.isShadow && (b += "progid:DXImageTransform.Microsoft.dropShadow (OffX\x3d'" + Math.round(mxConstants.SHADOW_OFFSET_X * this.scale) + "', OffY\x3d'" + Math.round(mxConstants.SHADOW_OFFSET_Y * - this.scale) + "', Color\x3d'" + mxConstants.SHADOWCOLOR + "')"); - if (this.gradient) { - var c = this.fill, - d = this.gradient, - e = "0", - f = { - east: 0, - south: 1, - west: 2, - north: 3 - }, - g = null != this.direction ? f[this.direction] : 0; - null != - this.gradientDirection && (g = mxUtils.mod(g + f[this.gradientDirection] - 1, 4)); - 1 == g ? (e = "1", f = c, c = d, d = f) : 2 == g ? (f = c, c = d, d = f) : 3 == g && (e = "1"); - b += "progid:DXImageTransform.Microsoft.gradient(startColorStr\x3d'" + c + "', endColorStr\x3d'" + d + "', gradientType\x3d'" + e + "')" - } - a.style.filter = b -}; - -function mxEllipse(a, b, c, d) { - mxShape.call(this); - this.bounds = a; - this.fill = b; - this.stroke = c; - this.strokewidth = null != d ? d : 1 -} -mxUtils.extend(mxEllipse, mxShape); -mxEllipse.prototype.paintVertexShape = function(a, b, c, d, e) { - a.ellipse(b, c, d, e); - a.fillAndStroke() -}; - -function mxDoubleEllipse(a, b, c, d) { - mxShape.call(this); - this.bounds = a; - this.fill = b; - this.stroke = c; - this.strokewidth = null != d ? d : 1 -} -mxUtils.extend(mxDoubleEllipse, mxShape); -mxDoubleEllipse.prototype.vmlScale = 10; -mxDoubleEllipse.prototype.paintBackground = function(a, b, c, d, e) { - a.ellipse(b, c, d, e); - a.fillAndStroke() -}; -mxDoubleEllipse.prototype.paintForeground = function(a, b, c, d, e) { - var f = Math.min(4, Math.min(d / 5, e / 5)); - d -= 2 * f; - e -= 2 * f; - 0 < d && 0 < e && a.ellipse(b + f, c + f, d, e); - a.stroke() -}; - -function mxRhombus(a, b, c, d) { - mxShape.call(this); - this.bounds = a; - this.fill = b; - this.stroke = c; - this.strokewidth = null != d ? d : 1 -} -mxUtils.extend(mxRhombus, mxShape); -mxRhombus.prototype.paintVertexShape = function(a, b, c, d, e) { - var f = d / 2, - g = e / 2; - a.begin(); - a.moveTo(b + f, c); - a.lineTo(b + d, c + g); - a.lineTo(b + f, c + e); - a.lineTo(b, c + g); - a.close(); - a.fillAndStroke() -}; - -function mxPolyline(a, b, c) { - mxShape.call(this); - this.points = a; - this.stroke = b; - this.strokewidth = null != c ? c : 1 -} -mxUtils.extend(mxPolyline, mxShape); -mxPolyline.prototype.getRotation = function() { - return 0 -}; -mxPolyline.prototype.paintEdgeShape = function(a, b) { - this.paintLine(a, b, this.isRounded) -}; -mxPolyline.prototype.paintLine = function(a, b, c) { - var d = mxUtils.getValue(this.style, mxConstants.STYLE_ARCSIZE, mxConstants.LINE_ARCSIZE) / 2, - e = b[0], - f = b[b.length - 1]; - a.begin(); - a.moveTo(e.x, e.y); - for (var g = 1; g < b.length - 1; g++) { - var h = b[g], - k = e.x - h.x, - e = e.y - h.y; - if (c && g < b.length - 1 && (0 != k || 0 != e)) { - var l = Math.sqrt(k * k + e * e), - k = k * Math.min(d, l / 2) / l, - e = e * Math.min(d, l / 2) / l; - a.lineTo(h.x + k, h.y + e); - e = b[g + 1]; - k = e.x - h.x; - e = e.y - h.y; - l = Math.max(1, Math.sqrt(k * k + e * e)); - k = k * Math.min(d, l / 2) / l; - e = e * Math.min(d, l / 2) / l; - k = h.x + k; - e = h.y + e; - a.quadTo(h.x, - h.y, k, e); - h = new mxPoint(k, e) - } else a.lineTo(h.x, h.y); - e = h - } - a.lineTo(f.x, f.y); - a.stroke() -}; - -function mxArrow(a, b, c, d, e, f, g) { - mxShape.call(this); - this.points = a; - this.fill = b; - this.stroke = c; - this.strokewidth = null != d ? d : 1; - this.arrowWidth = null != e ? e : mxConstants.ARROW_WIDTH; - this.spacing = null != f ? f : mxConstants.ARROW_SPACING; - this.endSize = null != g ? g : mxConstants.ARROW_SIZE -} -mxUtils.extend(mxArrow, mxShape); -mxArrow.prototype.paintEdgeShape = function(a, b) { - var c = mxConstants.ARROW_SPACING, - d = mxConstants.ARROW_WIDTH, - e = mxConstants.ARROW_SIZE, - f = b[0], - g = b[b.length - 1], - h = g.x - f.x, - k = g.y - f.y, - l = Math.sqrt(h * h + k * k), - m = l - 2 * c - e, - h = h / l, - k = k / l, - l = d * k / 3, - d = -d * h / 3, - e = f.x - l / 2 + c * h, - f = f.y - d / 2 + c * k, - n = e + l, - p = f + d, - q = n + m * h, - m = p + m * k, - s = q + l, - r = m + d, - t = s - 3 * l, - v = r - 3 * d; - a.begin(); - a.moveTo(e, f); - a.lineTo(n, p); - a.lineTo(q, m); - a.lineTo(s, r); - a.lineTo(g.x - c * h, g.y - c * k); - a.lineTo(t, v); - a.lineTo(t + l, v + d); - a.close(); - a.fillAndStroke() -}; - -function mxText(a, b, c, d, e, f, g, h, k, l, m, n, p, q, s, r, t, v, w, u) { - mxShape.call(this); - this.value = a; - this.bounds = b; - this.color = null != e ? e : "black"; - this.align = null != c ? c : ""; - this.valign = null != d ? d : ""; - this.family = null != f ? f : mxConstants.DEFAULT_FONTFAMILY; - this.size = null != g ? g : mxConstants.DEFAULT_FONTSIZE; - this.fontStyle = null != h ? h : mxConstants.DEFAULT_FONTSTYLE; - this.spacing = parseInt(k || 2); - this.spacingTop = this.spacing + parseInt(l || 0); - this.spacingRight = this.spacing + parseInt(m || 0); - this.spacingBottom = this.spacing + parseInt(n || 0); - this.spacingLeft = this.spacing + parseInt(p || 0); - this.horizontal = null != q ? q : !0; - this.background = s; - this.border = r; - this.wrap = null != t ? t : !1; - this.clipped = null != v ? v : !1; - this.overflow = null != w ? w : "visible"; - this.labelPadding = null != u ? u : 0; - this.rotation = 0 -} -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 a = this.node; - 8 == document.documentMode && null != a.firstChild && (a = a.firstChild, null != a.firstChild && (a = a.firstChild)); - this.boundingBox = this.bounds.clone(); - var b = this.getTextRotation(); - if (!this.ignoreStringSize && null != a && "fill" != this.overflow && (!this.clipped || !this.ignoreClippedStringSize)) { - var c = null, - d = null; - if (null != a.ownerSVGElement) - if (null != a.firstChild && null != a.firstChild.firstChild && "foreignObject" == a.firstChild.firstChild.nodeName) a = a.firstChild.firstChild, - c = this.wrap ? this.bounds.width : parseInt(a.getAttribute("width")) * this.scale, d = parseInt(a.getAttribute("height")) * this.scale; - else { - b = a.getBBox(); - if (0 == b.width && 0 == b.height) return; - this.boundingBox = new mxRectangle(b.x, b.y, b.width, b.height); - b = 0 - } else d = this.state.view.textDiv, null != this.offsetWidth && null != this.offsetHeight ? (c = this.wrap ? this.bounds.width : this.offsetWidth * this.scale, d = this.offsetHeight * this.scale) : - null != d ? (this.updateFont(d), this.updateSize(d), mxUtils.isNode(this.value) ? d.innerHTML = this.value.outerHTML : - (c = this.replaceLinefeeds ? this.value.replace(/\n/g, "\x3cbr/\x3e") : this.value, d.innerHTML = c), c = this.wrap ? this.bounds.width : d.offsetWidth * this.scale, d = d.offsetHeight * - this.scale) : (c = this.wrap ? this.bounds.width : a.offsetWidth * this.scale, d = a.offsetHeight * this.scale); - null != c && null != d && (this.boundingBox = new mxRectangle(this.bounds.x + this.margin.x * c, this.bounds.y + this.margin.y * d, c, d)) - } else this.boundingBox.x += this.margin.x * this.boundingBox.width, this.boundingBox.y += this.margin.y * this.boundingBox.height; - null != - this.boundingBox && (0 != b && (b = mxUtils.getBoundingBox(this.boundingBox, b), this.boundingBox.x = b.x, this.boundingBox.y = b.y, mxClient.IS_QUIRKS || (this.boundingBox.width = b.width, - this.boundingBox.height = b.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(a, b, c, d, e) { - mxShape.prototype.configureCanvas.apply(this, arguments); - a.setFontColor(this.color); - a.setFontBackgroundColor(this.background); - a.setFontBorderColor(this.border); - a.setFontFamily(this.family); - a.setFontSize(this.size); - a.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(a) { - var b = this.scale, - c = this.bounds.x / b, - d = this.bounds.y / b, - e = this.bounds.width / b, - b = this.bounds.height / b; - this.updateTransform(a, c, d, e, b); - this.configureCanvas(a, c, d, e, b); - var f = mxUtils.isNode(this.value) || this.dialect == mxConstants.DIALECT_STRICTHTML, - g = f || a instanceof mxVmlCanvas2D ? "html" : "", - h = this.value; - !f && "html" == g && (h = mxUtils.htmlEntities(h, !1)); - h = !mxUtils.isNode(this.value) && this.replaceLinefeeds && "html" == g ? h.replace(/\n/g, "\x3cbr/\x3e") : h; - a.text(c, d, e, b, h, this.align, - this.valign, this.wrap, g, "fill" == this.overflow, this.clipped, this.getTextRotation()) -}; -mxText.prototype.redrawHtmlShape = function() { - var a = this.node.style; - a.opacity = 1 > this.opacity ? this.opacity : ""; - a.overflow = ""; - a.width = ""; - a.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 a = this.getTextRotation(), - b = this.node.style, - c = this.margin.x, - d = this.margin.y; - 0 != a ? (b[mxClient.CSS_PREFIX + "TransformOrigin"] = 100 * -c + "% " + 100 * -d + "%", b[mxClient.CSS_PREFIX + "Transform"] = "translate(" + 100 * c + "%," + 100 * d + "%)scale(" + this.scale + - ") rotate(" + a + "deg)") : (b[mxClient.CSS_PREFIX + "TransformOrigin"] = "0% 0%", b[mxClient.CSS_PREFIX + "Transform"] = "scale(" + this.scale + ")translate(" + 100 * c + "%," + 100 * d + - "%)"); - b.left = Math.round(this.bounds.x) + "px"; - b.top = Math.round(this.bounds.y) + - "px" -}; -mxText.prototype.updateHtmlFilter = function() { - var a = this.node.style, - b = this.margin.x, - c = this.margin.y, - d = this.scale; - a.filter = ""; - var e = 0, - f = 0, - g = null != this.state ? this.state.view.textDiv : null; - if (null != g) { - g.style.overflow = ""; - g.style.height = ""; - g.style.width = ""; - this.updateFont(g); - this.updateSize(g); - if (mxUtils.isNode(this.value)) g.innerHTML = this.value.outerHTML; - else { - var h = this.value; - this.dialect != mxConstants.DIALECT_STRICTHTML && (h = mxUtils.htmlEntities(h, !1)); - h = this.replaceLinefeeds ? h.replace(/\n/g, "\x3cbr/\x3e") : h; - g.innerHTML = h - } - e = g.offsetWidth + 2; - f = g.offsetHeight + 2 - } else e = this.node.offsetWidth, f = this.node.offsetHeight + 1; - this.offsetWidth = e; - this.offsetHeight = f; - g = this.bounds.width / d; - h = this.bounds.height / d; - mxClient.IS_QUIRKS && (this.clipped || "fill" == this.overflow) && 0 < h ? (h = Math.min(h, f), a.height = Math.round(h + 1) + "px") : h = f; - "fill" != this.overflow && (mxClient.IS_QUIRKS && (this.clipped || this.wrap) && 0 < g ? (g = Math.min(g, e), a.width = Math.round(g) + "px") : g = e); - var h = h * d, - g = g * d, - e = this.getTextRotation() * (Math.PI / 180), - f = parseFloat(parseFloat(Math.cos(e)).toFixed(8)), - k = parseFloat(parseFloat(Math.sin(-e)).toFixed(8)), - e = e % (2 * Math.PI); - 0 > e && (e += 2 * Math.PI); - e %= Math.PI; - e > Math.PI / 2 && (e = Math.PI - e); - var l = Math.cos(e), - m = Math.sin(-e), - b = g * -(b + 0.5), - c = h * -(c + 0.5), - n = (h - h * l + g * m) / 2 + k * b - f * c; - 0 != e && (a.filter = "progid:DXImageTransform.Microsoft.Matrix(M11\x3d" + f + ", M12\x3d" + k + ", M21\x3d" + -k + ", M22\x3d" + f + ", sizingMethod\x3d'auto expand')"); - a.zoom = d; - a.left = Math.round(this.bounds.x + ((g - g * l + h * m) / 2 - f * b - k * c) - g / 2) + "px"; - a.top = Math.round(this.bounds.y + n - h / 2) + "px" -}; -mxText.prototype.updateValue = function() { - if (mxUtils.isNode(this.value)) this.node.innerHTML = "", this.node.appendChild(this.value); - else { - var a = this.value; - this.dialect != mxConstants.DIALECT_STRICTHTML && (a = mxUtils.htmlEntities(a, !1)); - var a = this.replaceLinefeeds ? a.replace(/\n/g, "\x3cbr/\x3e") : a, - b = null != this.background && this.background != mxConstants.NONE ? this.background : null, - c = null != this.border && this.border != mxConstants.NONE ? this.border : null; - if (null != b || null != c) - if ("fill" == this.overflow) null != b && (this.node.style.backgroundColor = - b), null != c && (this.node.style.border = "1px solid " + c); - else { - var d = ""; - null != b && (d += "background-color:" + b + ";"); - null != c && (d += "border:1px solid " + c + ";"); - a = '\x3cdiv style\x3d"zoom:1;' + d + "display:inline-block;_display:inline;padding-bottom:1px;padding-right:1px;line-height:" + this.node.style.lineHeight + '"\x3e' + a + "\x3c/div\x3e"; - this.node.style.lineHeight = "" - } - this.node.innerHTML = a - } -}; -mxText.prototype.updateFont = function(a) { - a = a.style; - a.lineHeight = Math.round(this.size * mxConstants.LINE_HEIGHT) + "px"; - a.fontSize = Math.round(this.size) + "px"; - a.fontFamily = this.family; - a.verticalAlign = "top"; - a.color = this.color; - a.fontWeight = (this.fontStyle & mxConstants.FONT_BOLD) == mxConstants.FONT_BOLD ? "bold" : ""; - a.fontStyle = (this.fontStyle & mxConstants.FONT_ITALIC) == mxConstants.FONT_ITALIC ? "italic" : ""; - a.fontDecoration = (this.fontStyle & mxConstants.FONT_UNDERLINE) == mxConstants.FONT_UNDERLINE ? "underline" : ""; - a.textAlign = - this.align == mxConstants.ALIGN_CENTER ? "center" : this.align == mxConstants.ALIGN_RIGHT ? "right" : "left" -}; -mxText.prototype.updateSize = function(a) { - var b = Math.round(this.bounds.width / this.scale), - c = Math.round(this.bounds.height / this.scale); - a = a.style; - this.clipped ? (a.overflow = "hidden", 0 < c && (a.maxHeight = c + "px"), 0 < b && (a.width = b + "px")) : "fill" == this.overflow && (a.width = b + "px", 0 < c && (a.maxHeight = c + "px")); - this.wrap ? (!this.clipped && 0 < b && (a.width = b + "px"), a.whiteSpace = "normal") : a.whiteSpace = "nowrap" -}; -mxText.prototype.updateMargin = function() { - this.margin = mxUtils.getAlignmentAsPoint(this.align, this.valign) -}; -mxText.prototype.getSpacing = function() { - var a = 0, - b = 0, - a = this.align == mxConstants.ALIGN_CENTER ? (this.spacingLeft - this.spacingRight) / 2 : this.align == mxConstants.ALIGN_RIGHT ? -this.spacingRight - this.baseSpacingRight : this.spacingLeft + - this.baseSpacingLeft, - b = this.valign == mxConstants.ALIGN_MIDDLE ? (this.spacingTop - this.spacingBottom) / 2 : this.valign == mxConstants.ALIGN_BOTTOM ? -this.spacingBottom - this.baseSpacingBottom : this.spacingTop + - this.baseSpacingTop; - return new mxPoint(a, b) -}; - -function mxTriangle() { - mxActor.call(this) -} -mxUtils.extend(mxTriangle, mxActor); -mxTriangle.prototype.redrawPath = function(a, b, c, d, e) { - a.moveTo(0, 0); - a.lineTo(d, 0.5 * e); - a.lineTo(0, e); - a.close() -}; - -function mxHexagon() { - mxActor.call(this) -} -mxUtils.extend(mxHexagon, mxActor); -mxHexagon.prototype.redrawPath = function(a, b, c, d, e) { - a.moveTo(0.25 * d, 0); - a.lineTo(0.75 * d, 0); - a.lineTo(d, 0.5 * e); - a.lineTo(0.75 * d, e); - a.lineTo(0.25 * d, e); - a.lineTo(0, 0.5 * e); - a.close() -}; - -function mxLine(a, b, c) { - mxShape.call(this); - this.bounds = a; - this.stroke = b; - this.strokewidth = null != c ? c : 1 -} -mxUtils.extend(mxLine, mxShape); -mxLine.prototype.paintVertexShape = function(a, b, c, d, e) { - c += e / 2; - a.begin(); - a.moveTo(b, c); - a.lineTo(b + d, c); - a.stroke() -}; - -function mxImageShape(a, b, c, d, e) { - mxShape.call(this); - this.bounds = a; - this.image = b; - this.fill = c; - this.stroke = d; - this.strokewidth = null != e ? e : 1; - this.shadow = !1 -} -mxUtils.extend(mxImageShape, mxRectangleShape); -mxImageShape.prototype.preserveImageAspect = !0; -mxImageShape.prototype.getSvgScreenOffset = function() { - return !mxClient.IS_IE ? 0.5 : 0 -}; -mxImageShape.prototype.apply = function(a) { - 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 a = document.createElement("div"); - a.style.position = "absolute"; - return a -}; -mxImageShape.prototype.paintVertexShape = function(a, b, c, d, e) { - if (null != this.image) { - var f = mxUtils.getValue(this.style, mxConstants.STYLE_IMAGE_BACKGROUND, null), - g = mxUtils.getValue(this.style, mxConstants.STYLE_IMAGE_BORDER, null); - if (null != f || null != g) a.setFillColor(f), a.setStrokeColor(g), a.rect(b, c, d, e), a.fillAndStroke(); - a.image(b, c, d, e, this.image, this.preserveImageAspect, !1, !1) - } else mxRectangleShape.prototype.paintBackground.apply(this, arguments) -}; -mxImageShape.prototype.redrawHtmlShape = 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 = 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 = ""; - if (null != this.image) { - var a = document.createElement(mxClient.IS_IE6 || null == mxClient.CSS_PREFIX && 0 != - this.rotation ? mxClient.VML_PREFIX + ":image" : "img"); - a.style.position = "absolute"; - a.src = this.image; - var b = 100 > this.opacity ? "alpha(opacity\x3d" + this.opacity + ")" : ""; - this.node.style.filter = b; - this.flipH && this.flipV ? b += "progid:DXImageTransform.Microsoft.BasicImage(rotation\x3d2)" : this.flipH ? b += "progid:DXImageTransform.Microsoft.BasicImage(mirror\x3d1)" : this.flipV && (b += - "progid:DXImageTransform.Microsoft.BasicImage(rotation\x3d2, mirror\x3d1)"); - a.style.filter != b && (a.style.filter = b); - "image" == a.nodeName ? a.style.rotation = - this.rotation : a.style[mxClient.CSS_PREFIX + "Transform"] = "rotate(" + this.rotation + "deg)"; - a.style.width = this.node.style.width; - a.style.height = this.node.style.height; - this.node.style.backgroundImage = ""; - this.node.appendChild(a) - } else this.setTransparentBackgroundImage(this.node) -}; - -function mxLabel(a, b, c, d) { - mxRectangleShape.call(this, a, b, c, d) -} -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(a) { - 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(a, b, c, d, e) { - this.paintImage(a, b, c, d, e); - this.paintIndicator(a, b, c, d, e); - mxRectangleShape.prototype.paintForeground.apply(this, arguments) -}; -mxLabel.prototype.paintImage = function(a, b, c, d, e) { - null != this.image && (b = this.getImageBounds(b, c, d, e), a.image(b.x, b.y, b.width, b.height, this.image, !1, !1, !1)) -}; -mxLabel.prototype.getImageBounds = function(a, b, c, d) { - var e = mxUtils.getValue(this.style, mxConstants.STYLE_IMAGE_ALIGN, mxConstants.ALIGN_LEFT), - f = mxUtils.getValue(this.style, mxConstants.STYLE_IMAGE_VERTICAL_ALIGN, mxConstants.ALIGN_MIDDLE), - g = mxUtils.getNumber(this.style, mxConstants.STYLE_IMAGE_WIDTH, mxConstants.DEFAULT_IMAGESIZE), - h = mxUtils.getNumber(this.style, mxConstants.STYLE_IMAGE_HEIGHT, mxConstants.DEFAULT_IMAGESIZE), - k = mxUtils.getNumber(this.style, mxConstants.STYLE_SPACING, this.spacing) + 5; - a = e == mxConstants.ALIGN_CENTER ? - a + (c - g) / 2 : e == mxConstants.ALIGN_RIGHT ? a + (c - g - k) : a + k; - b = f == mxConstants.ALIGN_TOP ? b + k : f == mxConstants.ALIGN_BOTTOM ? b + (d - h - k) : b + (d - h) / 2; - return new mxRectangle(a, b, g, h) -}; -mxLabel.prototype.paintIndicator = function(a, b, c, d, e) { - null != this.indicator ? (this.indicator.bounds = this.getIndicatorBounds(b, c, d, e), this.indicator.paint(a)) : null != this.indicatorImage && (b = this.getIndicatorBounds(b, c, d, e), a.image( - b.x, b.y, b.width, b.height, this.indicatorImage, !1, !1, !1)) -}; -mxLabel.prototype.getIndicatorBounds = function(a, b, c, d) { - var e = mxUtils.getValue(this.style, mxConstants.STYLE_IMAGE_ALIGN, mxConstants.ALIGN_LEFT), - f = mxUtils.getValue(this.style, mxConstants.STYLE_IMAGE_VERTICAL_ALIGN, mxConstants.ALIGN_MIDDLE), - g = mxUtils.getNumber(this.style, mxConstants.STYLE_INDICATOR_WIDTH, this.indicatorSize), - h = mxUtils.getNumber(this.style, mxConstants.STYLE_INDICATOR_HEIGHT, this.indicatorSize), - k = this.spacing + 5; - a = e == mxConstants.ALIGN_RIGHT ? a + (c - g - k) : e == mxConstants.ALIGN_CENTER ? a + (c - g) / - 2 : a + k; - b = f == mxConstants.ALIGN_BOTTOM ? b + (d - h - k) : f == mxConstants.ALIGN_TOP ? b + k : b + (d - h) / 2; - return new mxRectangle(a, b, g, h) -}; -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 a = document.createElement("img"); - a.style.position = "relative"; - a.setAttribute("border", "0"); - var b = this.getImageBounds(this.bounds.x, this.bounds.y, this.bounds.width, this.bounds.height); - b.x -= this.bounds.x; - b.y -= this.bounds.y; - a.style.left = Math.round(b.x) + "px"; - a.style.top = Math.round(b.y) + "px"; - a.style.width = - Math.round(b.width) + "px"; - a.style.height = Math.round(b.height) + "px"; - a.src = this.image; - this.node.appendChild(a) - } -}; - -function mxCylinder(a, b, c, d) { - mxShape.call(this); - this.bounds = a; - this.fill = b; - this.stroke = c; - this.strokewidth = null != d ? d : 1 -} -mxUtils.extend(mxCylinder, mxShape); -mxCylinder.prototype.maxHeight = 40; -mxCylinder.prototype.svgStrokeTolerance = 0; -mxCylinder.prototype.paintVertexShape = function(a, b, c, d, e) { - a.translate(b, c); - a.begin(); - this.redrawPath(a, b, c, d, e, !1); - a.fillAndStroke(); - a.setShadow(!1); - a.begin(); - this.redrawPath(a, b, c, d, e, !0); - a.stroke() -}; -mxCylinder.prototype.redrawPath = function(a, b, c, d, e, f) { - b = Math.min(this.maxHeight, Math.round(e / 5)); - if (f && null != this.fill || !f && null == this.fill) a.moveTo(0, b), a.curveTo(0, 2 * b, d, 2 * b, d, b), f || (a.stroke(), a.begin()); - f || (a.moveTo(0, b), a.curveTo(0, -b / 3, d, -b / 3, d, b), a.lineTo(d, e - b), a.curveTo(d, e + b / 3, 0, e + b / 3, 0, e - b), a.close()) -}; - -function mxConnector(a, b, c) { - mxPolyline.call(this, a, b, c) -} -mxUtils.extend(mxConnector, mxPolyline); -mxConnector.prototype.paintEdgeShape = function(a, b) { - var c = this.createMarker(a, b, !0), - d = this.createMarker(a, b, !1); - null == this.style || 1 != this.style[mxConstants.STYLE_CURVED] ? this.paintLine(a, b, this.isRounded) : this.paintCurvedLine(a, b); - a.setFillColor(this.stroke); - a.setShadow(!1); - a.setDashed(!1); - null != c && c(); - null != d && d() -}; -mxConnector.prototype.paintCurvedLine = function(a, b) { - a.begin(); - var c = b[0], - d = b.length; - a.moveTo(c.x, c.y); - for (c = 1; c < d - 2; c++) { - var e = b[c], - f = b[c + 1]; - a.quadTo(e.x, e.y, (e.x + f.x) / 2, (e.y + f.y) / 2) - } - e = b[d - 2]; - f = b[d - 1]; - a.quadTo(e.x, e.y, f.x, f.y); - a.stroke() -}; -mxConnector.prototype.createMarker = function(a, b, c) { - var d = b.length, - e = c ? b[1] : b[d - 2]; - b = c ? b[0] : b[d - 1]; - var d = b.x - e.x, - f = b.y - e.y, - g = Math.max(1, Math.sqrt(d * d + f * f)), - e = d / g, - d = f / g, - f = mxUtils.getNumber(this.style, c ? mxConstants.STYLE_STARTSIZE : mxConstants.STYLE_ENDSIZE, mxConstants.DEFAULT_MARKERSIZE), - g = mxUtils.getValue(this.style, c ? mxConstants.STYLE_STARTARROW : mxConstants.STYLE_ENDARROW); - return mxMarker.createMarker(a, this, g, b, e, d, f, c, this.strokewidth, 0 != this.style[c ? mxConstants.STYLE_STARTFILL : mxConstants.STYLE_ENDFILL]) -}; -mxConnector.prototype.augmentBoundingBox = function(a) { - mxShape.prototype.augmentBoundingBox.apply(this, arguments); - var b = 0; - mxUtils.getValue(this.style, mxConstants.STYLE_STARTARROW, mxConstants.NONE) != mxConstants.NONE && (b = mxUtils.getNumber(this.style, mxConstants.STYLE_STARTSIZE, mxConstants.DEFAULT_MARKERSIZE) + - 1); - mxUtils.getValue(this.style, mxConstants.STYLE_ENDARROW, mxConstants.NONE) != mxConstants.NONE && (b = Math.max(b, mxUtils.getNumber(this.style, mxConstants.STYLE_ENDSIZE, mxConstants.DEFAULT_MARKERSIZE)) + - 1); - a.grow(Math.ceil(b * this.scale)) -}; - -function mxSwimlane(a, b, c, d) { - mxShape.call(this); - this.bounds = a; - this.fill = b; - this.stroke = c; - this.strokewidth = null != d ? d : 1 -} -mxUtils.extend(mxSwimlane, mxShape); -mxSwimlane.prototype.imageSize = 16; -mxSwimlane.prototype.getGradientBounds = function(a, b, c, d, e) { - a = Math.min(e, mxUtils.getValue(this.style, mxConstants.STYLE_STARTSIZE, mxConstants.DEFAULT_STARTSIZE)); - return new mxRectangle(b, c, d, a) -}; -mxSwimlane.prototype.getRotation = function() { - var a = mxShape.prototype.getRotation.apply(this, arguments); - 1 != mxUtils.getValue(this.style, mxConstants.STYLE_HORIZONTAL, 1) && (a += mxText.prototype.verticalTextRotation); - return a -}; -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(a, b, c) { - a = mxUtils.getValue(this.style, mxConstants.STYLE_ARCSIZE, 100 * mxConstants.RECTANGLE_ROUNDING_FACTOR) / 100; - return 3 * c * a -}; -mxSwimlane.prototype.paintVertexShape = function(a, b, c, d, e) { - var f = Math.min(e, mxUtils.getValue(this.style, mxConstants.STYLE_STARTSIZE, mxConstants.DEFAULT_STARTSIZE)), - g = mxUtils.getValue(this.style, mxConstants.STYLE_SWIMLANE_FILLCOLOR, mxConstants.NONE), - h = 1 == mxUtils.getValue(this.style, mxConstants.STYLE_SWIMLANE_LINE, 1), - k = 0; - a.translate(b, c); - this.isRounded ? (k = this.getArcSize(d, e, f), this.paintRoundedSwimlane(a, b, c, d, e, f, k, g, h)) : this.paintSwimlane(a, b, c, d, e, f, g, h); - g = mxUtils.getValue(this.style, mxConstants.STYLE_SEPARATORCOLOR, - mxConstants.NONE); - this.paintSeparator(a, d, f, e, g); - null != this.image && (e = this.getImageBounds(b, f, d, e), a.image(e.x - b, e.y - c, e.width, e.height, this.image, !1, !1, !1)); - this.glass && (a.setShadow(!1), this.paintGlassEffect(a, 0, 0, d, f, k)) -}; -mxSwimlane.prototype.paintSwimlane = function(a, b, c, d, e, f, g, h) { - g != mxConstants.NONE && (a.save(), a.setFillColor(g), a.rect(0, 0, d, e), a.fillAndStroke(), a.restore(), a.setShadow(!1)); - a.begin(); - a.moveTo(0, f); - a.lineTo(0, 0); - a.lineTo(d, 0); - a.lineTo(d, f); - h && a.close(); - a.fillAndStroke(); - f < e && g == mxConstants.NONE && (a.pointerEvents = !1, a.begin(), a.moveTo(0, f), a.lineTo(0, e), a.lineTo(d, e), a.lineTo(d, f), a.stroke()) -}; -mxSwimlane.prototype.paintRoundedSwimlane = function(a, b, c, d, e, f, g, h, k) { - h != mxConstants.NONE && (a.save(), a.setFillColor(h), a.roundrect(0, 0, d, e, g, g), a.fillAndStroke(), a.restore(), a.setShadow(!1)); - a.begin(); - a.moveTo(d, f); - a.lineTo(d, g); - a.quadTo(d, 0, d - Math.min(d / 2, g), 0); - a.lineTo(Math.min(d / 2, g), 0); - a.quadTo(0, 0, 0, g); - a.lineTo(0, f); - k && a.close(); - a.fillAndStroke(); - f < e && h == mxConstants.NONE && (a.pointerEvents = !1, a.begin(), a.moveTo(0, f), a.lineTo(0, e - g), a.quadTo(0, e, Math.min(d / 2, g), e), a.lineTo(d - Math.min(d / 2, g), e), - a.quadTo(d, e, d, e - g), a.lineTo(d, f), a.stroke()) -}; -mxSwimlane.prototype.paintSeparator = function(a, b, c, d, e) { - e != mxConstants.NONE && (a.setStrokeColor(e), a.setDashed(!0), a.begin(), a.moveTo(b, c), a.lineTo(b, d), a.stroke(), a.setDashed(!1)) -}; -mxSwimlane.prototype.getImageBounds = function(a, b, c, d) { - return new mxRectangle(a + c - this.imageSize, b, this.imageSize, this.imageSize) -}; - -function mxGraphLayout(a) { - this.graph = a -} -mxGraphLayout.prototype.graph = null; -mxGraphLayout.prototype.useBoundingBox = !0; -mxGraphLayout.prototype.parent = null; -mxGraphLayout.prototype.moveCell = function(a, b, c) {}; -mxGraphLayout.prototype.execute = function(a) {}; -mxGraphLayout.prototype.getGraph = function() { - return this.graph -}; -mxGraphLayout.prototype.getConstraint = function(a, b, c, d) { - c = this.graph.view.getState(b); - b = null != c ? c.style : this.graph.getCellStyle(b); - return null != b ? b[a] : null -}; -mxGraphLayout.traverse = function(a, b, c, d, e) { - if (null != c && null != a) { - b = null != b ? b : !0; - e = e || []; - var f = mxCellPath.create(a); - if (null == e[f] && (e[f] = a, d = c(a, d), null == d || d)) - if (d = this.graph.model.getEdgeCount(a), 0 < d) - for (f = 0; f < d; f++) { - var g = this.graph.model.getEdgeAt(a, f), - h = this.graph.model.getTerminal(g, !0) == a; - if (!b || h) h = this.graph.view.getVisibleTerminal(g, !h), this.traverse(h, b, c, g, e) - } - } -}; -mxGraphLayout.prototype.isVertexMovable = function(a) { - return this.graph.isCellMovable(a) -}; -mxGraphLayout.prototype.isVertexIgnored = function(a) { - return !this.graph.getModel().isVertex(a) || !this.graph.isCellVisible(a) -}; -mxGraphLayout.prototype.isEdgeIgnored = function(a) { - var b = this.graph.getModel(); - return !b.isEdge(a) || !this.graph.isCellVisible(a) || null == b.getTerminal(a, !0) || null == b.getTerminal(a, !1) -}; -mxGraphLayout.prototype.setEdgeStyleEnabled = function(a, b) { - this.graph.setCellStyles(mxConstants.STYLE_NOEDGESTYLE, b ? "0" : "1", [a]) -}; -mxGraphLayout.prototype.setOrthogonalEdge = function(a, b) { - this.graph.setCellStyles(mxConstants.STYLE_ORTHOGONAL, b ? "1" : "0", [a]) -}; -mxGraphLayout.prototype.getParentOffset = function(a) { - var b = new mxPoint; - if (null != a && a != this.parent) { - var c = this.graph.getModel(); - if (c.isAncestor(this.parent, a)) - for (var d = c.getGeometry(a); a != this.parent;) b.x += d.x, b.y += d.y, a = c.getParent(a), d = c.getGeometry(a) - } - return b -}; -mxGraphLayout.prototype.setEdgePoints = function(a, b) { - if (null != a) { - var c = this.graph.model, - d = c.getGeometry(a); - null == d ? (d = new mxGeometry, d.setRelative(!0)) : d = d.clone(); - if (null != this.parent && null != b) - for (var e = c.getParent(a), e = this.getParentOffset(e), f = 0; f < b.length; f++) b[f].x -= e.x, b[f].y -= e.y; - d.points = b; - c.setGeometry(a, d) - } -}; -mxGraphLayout.prototype.setVertexLocation = function(a, b, c) { - var d = this.graph.getModel(), - e = d.getGeometry(a), - f = null; - if (null != e) { - f = new mxRectangle(b, c, e.width, e.height); - if (this.useBoundingBox) { - var g = this.graph.getView().getState(a); - if (null != g && null != g.text && null != g.text.boundingBox) { - var h = this.graph.getView().scale, - k = g.text.boundingBox; - g.text.boundingBox.x < g.x && (b += (g.x - k.x) / h, f.width = k.width); - g.text.boundingBox.y < g.y && (c += (g.y - k.y) / h, f.height = k.height) - } - } - null != this.parent && (g = d.getParent(a), null != g && g != - this.parent && (g = this.getParentOffset(g), b -= g.x, c -= g.y)); - if (e.x != b || e.y != c) e = e.clone(), e.x = b, e.y = c, d.setGeometry(a, e) - } - return f -}; -mxGraphLayout.prototype.getVertexBounds = function(a) { - var b = this.graph.getModel().getGeometry(a); - if (this.useBoundingBox) { - var c = this.graph.getView().getState(a); - if (null != c && null != c.text && null != c.text.boundingBox) var d = this.graph.getView().scale, - e = c.text.boundingBox, - f = Math.max(c.x - e.x, 0) / d, - g = Math.max(c.y - e.y, 0) / d, - h = Math.max(e.x + e.width - (c.x + c.width), 0) / d, - c = Math.max(e.y + e.height - (c.y + c.height), 0) / d, - b = new mxRectangle(b.x - f, b.y - g, b.width + f + h, b.height + g + c) - } - null != this.parent && (a = this.graph.getModel().getParent(a), - b = b.clone(), null != a && a != this.parent && (a = this.getParentOffset(a), b.x += a.x, b.y += a.y)); - return new mxRectangle(b.x, b.y, b.width, b.height) -}; -mxGraphLayout.prototype.arrangeGroups = function(a, b) { - this.graph.getModel().beginUpdate(); - try { - for (var c = a.length - 1; 0 <= c; c--) { - var d = a[c], - e = this.graph.getChildVertices(d), - f = this.graph.getBoundingBoxFromGeometry(e), - g = this.graph.getCellGeometry(d), - h = 0, - k = 0; - if (this.graph.isSwimlane(d)) var l = this.graph.getStartSize(d), - h = l.width, - k = l.height; - null != f && null != g && (g = g.clone(), g.x = g.x + f.x - b - h, g.y = g.y + f.y - b - k, g.width = f.width + 2 * b + h, g.height = f.height + 2 * b + k, this.graph.getModel().setGeometry(d, - g), this.graph.moveCells(e, - b + h - f.x, b + k - f.y)) - } - } finally { - this.graph.getModel().endUpdate() - } -}; - -function mxStackLayout(a, b, c, d, e, f) { - mxGraphLayout.call(this, a); - this.horizontal = null != b ? b : !0; - this.spacing = null != c ? c : 0; - this.x0 = null != d ? d : 0; - this.y0 = null != e ? e : 0; - this.border = null != f ? f : 0 -} -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(a, b, c) { - var d = this.graph.getModel(), - e = d.getParent(a), - f = this.isHorizontal(); - if (null != a && null != e) { - var g = 0, - h = 0, - k = d.getChildCount(e); - b = f ? b : c; - g = this.graph.getView().getState(e); - null != g && (b -= f ? g.x : g.y); - for (g = 0; g < k; g++) - if (c = d.getChildAt(e, g), c != a && (c = d.getGeometry(c), null != c)) { - c = f ? c.x + c.width / 2 : c.y + c.height / 2; - if (h < b && c > b) break; - h = c - } - f = e.getIndex(a); - f = Math.max(0, g - (g > f ? 1 : 0)); - d.add(e, a, f) - } -}; -mxStackLayout.prototype.getParentSize = function(a) { - var b = this.graph.getModel(), - c = b.getGeometry(a); - if (null != this.graph.container && (null == c && b.isLayer(a) || a == this.graph.getView().currentRoot)) c = new mxRectangle(0, 0, this.graph.container.offsetWidth - 1, this.graph.container.offsetHeight - - 1); - return c -}; -mxStackLayout.prototype.execute = function(a) { - if (null != a) { - var b = this.isHorizontal(), - c = this.graph.getModel(), - d = this.getParentSize(a), - e = 0; - null != d && (e = b ? d.height : d.width); - var e = e - (2 * this.spacing + 2 * this.border), - f = this.x0 + this.border, - g = this.y0 + this.border; - if (this.graph.isSwimlane(a)) { - var h = this.graph.getCellStyle(a), - k = mxUtils.getValue(h, mxConstants.STYLE_STARTSIZE, mxConstants.DEFAULT_STARTSIZE), - h = mxUtils.getValue(h, mxConstants.STYLE_HORIZONTAL, !0); - b == h && (e -= k); - b ? g += k : f += k - } - c.beginUpdate(); - try { - for (var k = 0, - h = null, l = c.getChildCount(a), m = 0; m < l; m++) { - var n = c.getChildAt(a, m); - if (!this.isVertexIgnored(n) && this.isVertexMovable(n)) { - var p = c.getGeometry(n); - if (null != p) { - p = p.clone(); - if (null != this.wrap && null != h && (b && h.x + h.width + p.width + 2 * this.spacing > this.wrap || !b && h.y + h.height + p.height + 2 * this.spacing > this.wrap)) h = null, b ? g += - k + this.spacing : f += k + this.spacing, k = 0; - k = Math.max(k, b ? p.height : p.width); - null != h ? b ? p.x = h.x + h.width + this.spacing : p.y = h.y + h.height + this.spacing : this.keepFirstLocation || (b ? p.x = f : p.y = g); - b ? p.y = g : p.x = f; - this.fill && 0 < e && (b ? p.height = e : p.width = e); - c.setGeometry(n, p); - h = p - } - } - } - this.resizeParent && null != d && null != h && !this.graph.isCellCollapsed(a) ? (d = d.clone(), b ? d.width = h.x + h.width + this.spacing : d.height = h.y + h.height + this.spacing, c.setGeometry( - a, d)) : this.resizeLast && (null != d && null != h) && (b ? h.width = d.width - h.x - this.spacing : h.height = d.height - h.y - this.spacing) - } finally { - c.endUpdate() - } - } -}; - -function mxPartitionLayout(a, b, c, d) { - mxGraphLayout.call(this, a); - this.horizontal = null != b ? b : !0; - this.spacing = c || 0; - this.border = d || 0 -} -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(a, b, c) { - c = this.graph.getModel(); - var d = c.getParent(a); - if (null != a && null != d) { - for (var e = 0, f = 0, g = c.getChildCount(d), e = 0; e < g; e++) { - var h = c.getChildAt(d, e), - h = this.getVertexBounds(h); - if (null != h) { - h = h.x + h.width / 2; - if (f < b && h > b) break; - f = h - } - } - b = d.getIndex(a); - b = Math.max(0, e - (e > b ? 1 : 0)); - c.add(d, a, b) - } -}; -mxPartitionLayout.prototype.execute = function(a) { - var b = this.isHorizontal(), - c = this.graph.getModel(), - d = c.getGeometry(a); - if (null != this.graph.container && (null == d && c.isLayer(a) || a == this.graph.getView().currentRoot)) d = new mxRectangle(0, 0, this.graph.container.offsetWidth - 1, this.graph.container.offsetHeight - - 1); - if (null != d) { - for (var e = [], f = c.getChildCount(a), g = 0; g < f; g++) { - var h = c.getChildAt(a, g); - !this.isVertexIgnored(h) && this.isVertexMovable(h) && e.push(h) - } - f = e.length; - if (0 < f) { - var k = this.border, - l = this.border, - m = b ? - d.height : d.width, - m = m - 2 * this.border; - a = this.graph.isSwimlane(a) ? this.graph.getStartSize(a) : new mxRectangle; - m -= b ? a.height : a.width; - k += a.width; - l += a.height; - a = this.border + (f - 1) * this.spacing; - d = b ? (d.width - k - a) / f : (d.height - l - a) / f; - if (0 < d) { - c.beginUpdate(); - try { - for (g = 0; g < f; g++) { - var h = e[g], - n = c.getGeometry(h); - null != n && (n = n.clone(), n.x = k, n.y = l, b ? (this.resizeVertices && (n.width = d, n.height = m), k += d + this.spacing) : (this.resizeVertices && (n.height = d, n.width = m), l += - d + this.spacing), c.setGeometry(h, n)) - } - } finally { - c.endUpdate() - } - } - } - } -}; - -function mxCompactTreeLayout(a, b, c) { - mxGraphLayout.call(this, a); - this.horizontal = null != b ? b : !0; - this.invert = null != c ? c : !1 -} -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(a) { - return mxGraphLayout.prototype.isVertexIgnored.apply(this, arguments) || 0 == this.graph.getConnections(a).length -}; -mxCompactTreeLayout.prototype.isHorizontal = function() { - return this.horizontal -}; -mxCompactTreeLayout.prototype.execute = function(a, b) { - this.parent = a; - var c = this.graph.getModel(); - if (null == b) - if (0 < this.graph.getEdges(a, c.getParent(a), this.invert, !this.invert, !1).length) b = a; - else { - var d = this.graph.findTreeRoots(a, !0, this.invert); - if (0 < d.length) - for (var e = 0; e < d.length; e++) - if (!this.isVertexIgnored(d[e]) && 0 < this.graph.getEdges(d[e], null, this.invert, !this.invert, !1).length) { - b = d[e]; - break - } - } - if (null != b) { - this.parentsChanged = this.resizeParent ? {} : null; - c.beginUpdate(); - try { - var f = this.dfs(b, a); - if (null != - f) { - this.layout(f); - var g = this.graph.gridSize, - d = g; - if (!this.moveTree) { - var h = this.getVertexBounds(b); - null != h && (g = h.x, d = h.y) - } - h = null; - h = this.isHorizontal() ? this.horizontalLayout(f, g, d) : this.verticalLayout(f, null, g, d); - if (null != h) { - var k = e = 0; - 0 > h.x && (e = Math.abs(g - h.x)); - 0 > h.y && (k = Math.abs(d - h.y)); - (0 != e || 0 != k) && this.moveNode(f, e, k); - this.resizeParent && this.adjustParents(); - this.edgeRouting && this.localEdgeProcessing(f) - } - } - } finally { - c.endUpdate() - } - } -}; -mxCompactTreeLayout.prototype.moveNode = function(a, b, c) { - a.x += b; - a.y += c; - this.apply(a); - for (a = a.child; null != a;) this.moveNode(a, b, c), a = a.next -}; -mxCompactTreeLayout.prototype.dfs = function(a, b, c) { - c = null != c ? c : []; - var d = mxCellPath.create(a), - e = null; - if (null != a && null == c[d] && !this.isVertexIgnored(a)) { - c[d] = a; - var e = this.createNode(a), - d = this.graph.getModel(), - f = null; - a = this.graph.getEdges(a, b, this.invert, !this.invert, !1, !0); - for (var g = this.graph.getView(), h = 0; h < a.length; h++) { - var k = a[h]; - if (!this.isEdgeIgnored(k)) { - this.resetEdges && this.setEdgePoints(k, null); - this.edgeRouting && (this.setEdgeStyleEnabled(k, !1), this.setEdgePoints(k, null)); - var l = g.getState(k), - k = null != l ? l.getVisibleTerminal(this.invert) : g.getVisibleTerminal(k, this.invert), - l = this.dfs(k, b, c); - null != l && null != d.getGeometry(k) && (null == f ? e.child = l : f.next = l, f = l) - } - } - } - return e -}; -mxCompactTreeLayout.prototype.layout = function(a) { - if (null != a) { - for (var b = a.child; null != b;) this.layout(b), b = b.next; - null != a.child ? this.attachParent(a, this.join(a)) : this.layoutLeaf(a) - } -}; -mxCompactTreeLayout.prototype.horizontalLayout = function(a, b, c, d) { - a.x += b + a.offsetX; - a.y += c + a.offsetY; - d = this.apply(a, d); - b = a.child; - if (null != b) { - d = this.horizontalLayout(b, a.x, a.y, d); - c = a.y + b.offsetY; - for (var e = b.next; null != e;) d = this.horizontalLayout(e, a.x + b.offsetX, c, d), c += e.offsetY, e = e.next - } - return d -}; -mxCompactTreeLayout.prototype.verticalLayout = function(a, b, c, d, e) { - a.x += c + a.offsetY; - a.y += d + a.offsetX; - e = this.apply(a, e); - b = a.child; - if (null != b) { - e = this.verticalLayout(b, a, a.x, a.y, e); - c = a.x + b.offsetY; - for (d = b.next; null != d;) e = this.verticalLayout(d, a, c, a.y + b.offsetX, e), c += d.offsetY, d = d.next - } - return e -}; -mxCompactTreeLayout.prototype.attachParent = function(a, b) { - var c = this.nodeDistance + this.levelDistance, - d = (b - a.width) / 2 - this.nodeDistance, - e = d + a.width + 2 * this.nodeDistance - b; - a.child.offsetX = c + a.height; - a.child.offsetY = e; - a.contour.upperHead = this.createLine(a.height, 0, this.createLine(c, e, a.contour.upperHead)); - a.contour.lowerHead = this.createLine(a.height, 0, this.createLine(c, d, a.contour.lowerHead)) -}; -mxCompactTreeLayout.prototype.layoutLeaf = function(a) { - var b = 2 * this.nodeDistance; - a.contour.upperTail = this.createLine(a.height + b, 0); - a.contour.upperHead = a.contour.upperTail; - a.contour.lowerTail = this.createLine(0, -a.width - b); - a.contour.lowerHead = this.createLine(a.height + b, 0, a.contour.lowerTail) -}; -mxCompactTreeLayout.prototype.join = function(a) { - var b = 2 * this.nodeDistance, - c = a.child; - a.contour = c.contour; - for (var d = c.width + b, e = d, c = c.next; null != c;) { - var f = this.merge(a.contour, c.contour); - c.offsetY = f + d; - c.offsetX = 0; - d = c.width + b; - e += f + d; - c = c.next - } - return e -}; -mxCompactTreeLayout.prototype.merge = function(a, b) { - for (var c = 0, d = 0, e = 0, f = a.lowerHead, g = b.upperHead; null != g && null != f;) { - var h = this.offset(c, d, g.dx, g.dy, f.dx, f.dy), - d = d + h, - e = e + h; - c + g.dx <= f.dx ? (c += g.dx, d += g.dy, g = g.next) : (c -= f.dx, d -= f.dy, f = f.next) - } - null != g ? (c = this.bridge(a.upperTail, 0, 0, g, c, d), a.upperTail = null != c.next ? b.upperTail : c, a.lowerTail = b.lowerTail) : (c = this.bridge(b.lowerTail, c, d, f, 0, 0), null == c.next && - (a.lowerTail = c)); - a.lowerHead = b.lowerHead; - return e -}; -mxCompactTreeLayout.prototype.offset = function(a, b, c, d, e, f) { - var g = 0; - if (e <= a || 0 >= a + c) return 0; - g = 0 < e * d - c * f ? 0 > a ? a * d / c - b : 0 < a ? a * f / e - b : -b : e < a + c ? f - (b + (e - a) * d / c) : e > a + c ? (c + a) * f / e - (b + d) : f - (b + d); - return 0 < g ? g : 0 -}; -mxCompactTreeLayout.prototype.bridge = function(a, b, c, d, e, f) { - b = e + d.dx - b; - e = e = 0; - 0 == d.dx ? e = d.dy : (e = b * d.dy, e /= d.dx); - b = this.createLine(b, e, d.next); - a.next = this.createLine(0, f + d.dy - e - c, b); - return b -}; -mxCompactTreeLayout.prototype.createNode = function(a) { - var b = {}; - b.cell = a; - b.x = 0; - b.y = 0; - b.width = 0; - b.height = 0; - a = this.getVertexBounds(a); - null != a && (this.isHorizontal() ? (b.width = a.height, b.height = a.width) : (b.width = a.width, b.height = a.height)); - b.offsetX = 0; - b.offsetY = 0; - b.contour = {}; - return b -}; -mxCompactTreeLayout.prototype.apply = function(a, b) { - var c = this.graph.getModel(), - d = a.cell, - e = c.getGeometry(d); - null != d && null != e && (this.isVertexMovable(d) && (e = this.setVertexLocation(d, a.x, a.y), this.resizeParent && (c = c.getParent(d), d = mxCellPath.create(c), null == this.parentsChanged[d] && - (this.parentsChanged[d] = c))), b = null == b ? new mxRectangle(e.x, e.y, e.width, e.height) : new mxRectangle(Math.min(b.x, e.x), Math.min(b.y, e.y), Math.max(b.x + b.width, e.x + e.width), - Math.max(b.y + b.height, e.y + e.height))); - return b -}; -mxCompactTreeLayout.prototype.createLine = function(a, b, c) { - var d = {}; - d.dx = a; - d.dy = b; - d.next = c; - return d -}; -mxCompactTreeLayout.prototype.adjustParents = function() { - var a = [], - b; - for (b in this.parentsChanged) a.push(this.parentsChanged[b]); - this.arrangeGroups(mxUtils.sortCells(a, !0), this.groupPadding) -}; -mxCompactTreeLayout.prototype.localEdgeProcessing = function(a) { - this.processNodeOutgoing(a); - for (a = a.child; null != a;) this.localEdgeProcessing(a), a = a.next -}; -mxCompactTreeLayout.prototype.processNodeOutgoing = function(a) { - for (var b = a.child, c = a.cell, d = 0, e = []; null != b;) { - d++; - var f = b.x; - this.horizontal && (f = b.y); - e.push(new WeightedCellSorter(b, f)); - b = b.next - } - e.sort(WeightedCellSorter.prototype.compare); - var f = a.width, - g = (d + 1) * this.prefHozEdgeSep; - f > g + 2 * this.prefHozEdgeSep && (f -= 2 * this.prefHozEdgeSep); - a = f / d; - b = a / 2; - f > g + 2 * this.prefHozEdgeSep && (b += this.prefHozEdgeSep); - for (var f = this.minEdgeJetty - this.prefVertEdgeOff, g = 0, h = this.getVertexBounds(c), k = 0; k < e.length; k++) { - for (var l = - e[k].cell.cell, m = this.getVertexBounds(l), l = this.graph.getEdgesBetween(c, l, !1), n = [], p = 0, q = 0, s = 0; s < l.length; s++) this.horizontal ? (p = h.x + h.width, q = h.y + b, n.push( - new mxPoint(p, q)), p = h.x + h.width + f, n.push(new mxPoint(p, q)), q = m.y + m.height / 2) : (p = h.x + b, q = h.y + h.height, n.push(new mxPoint(p, q)), q = h.y + h.height + f, n.push( - new mxPoint(p, q)), p = m.x + m.width / 2), n.push(new mxPoint(p, q)), this.setEdgePoints(l[s], n); - k < d / 2 ? f += this.prefVertEdgeOff : k > d / 2 && (f -= this.prefVertEdgeOff); - b += a; - g = Math.max(g, f) - } -}; - -function WeightedCellSorter(a, b) { - this.cell = a; - this.weightedValue = b -} -WeightedCellSorter.prototype.weightedValue = 0; -WeightedCellSorter.prototype.nudge = !1; -WeightedCellSorter.prototype.visited = !1; -WeightedCellSorter.prototype.rankIndex = null; -WeightedCellSorter.prototype.cell = null; -WeightedCellSorter.prototype.compare = function(a, b) { - return null != a && null != b ? b.weightedValue > a.weightedValue ? 1 : b.weightedValue < a.weightedValue ? -1 : b.nudge ? 1 : -1 : 0 -}; - -function mxFastOrganicLayout(a) { - mxGraphLayout.call(this, a) -} -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(a) { - return mxGraphLayout.prototype.isVertexIgnored.apply(this, arguments) || 0 == this.graph.getConnections(a).length -}; -mxFastOrganicLayout.prototype.execute = function(a) { - var b = this.graph.getModel(); - this.vertexArray = []; - for (var c = this.graph.getChildVertices(a), d = 0; d < c.length; d++) this.isVertexIgnored(c[d]) || this.vertexArray.push(c[d]); - var e = this.useInputOrigin ? this.graph.view.getBounds(this.vertexArray) : null, - f = this.vertexArray.length; - this.indices = []; - this.dispX = []; - this.dispY = []; - this.cellLocation = []; - this.isMoveable = []; - this.neighbours = []; - this.radius = []; - this.radiusSquared = []; - 0.0010 > this.forceConstant && (this.forceConstant = - 0.0010); - this.forceConstantSquared = this.forceConstant * this.forceConstant; - for (d = 0; d < this.vertexArray.length; d++) { - var g = this.vertexArray[d]; - this.cellLocation[d] = []; - var h = mxCellPath.create(g); - this.indices[h] = d; - var k = this.getVertexBounds(g), - l = k.width, - m = k.height, - n = k.x, - p = k.y; - this.cellLocation[d][0] = n + l / 2; - this.cellLocation[d][1] = p + m / 2; - this.radius[d] = Math.min(l, m); - this.radiusSquared[d] = this.radius[d] * this.radius[d] - } - b.beginUpdate(); - try { - for (d = 0; d < f; d++) { - this.dispX[d] = 0; - this.dispY[d] = 0; - this.isMoveable[d] = this.isVertexMovable(this.vertexArray[d]); - var q = this.graph.getConnections(this.vertexArray[d], a), - c = this.graph.getOpposites(q, this.vertexArray[d]); - this.neighbours[d] = []; - for (l = 0; l < c.length; l++) { - this.resetEdges && this.graph.resetEdge(q[l]); - this.disableEdgeStyle && this.setEdgeStyleEnabled(q[l], !1); - var h = mxCellPath.create(c[l]), - s = this.indices[h]; - this.neighbours[d][l] = null != s ? s : d - } - } - this.temperature = this.initialTemp; - 0 == this.maxIterations && (this.maxIterations = 20 * Math.sqrt(f)); - for (this.iteration = 0; this.iteration < this.maxIterations; this.iteration++) { - if (!this.allowedToRun) return; - this.calcRepulsion(); - this.calcAttraction(); - this.calcPositions(); - this.reduceTemperature() - } - a = c = null; - for (d = 0; d < this.vertexArray.length; d++) g = this.vertexArray[d], this.isVertexMovable(g) && (k = this.getVertexBounds(g), null != k && (this.cellLocation[d][0] -= k.width / 2, this.cellLocation[ - d][1] -= k.height / 2, n = this.graph.snap(this.cellLocation[d][0]), p = this.graph.snap(this.cellLocation[d][1]), this.setVertexLocation(g, n, p), c = null == c ? n : Math.min(c, n), a = - null == a ? p : Math.min(a, p))); - d = -(c || 0) + 1; - g = -(a || 0) + 1; - null != e && (d += e.x, - g += e.y); - this.graph.moveCells(this.vertexArray, d, g) - } finally { - b.endUpdate() - } -}; -mxFastOrganicLayout.prototype.calcPositions = function() { - for (var a = 0; a < this.vertexArray.length; a++) - if (this.isMoveable[a]) { - var b = Math.sqrt(this.dispX[a] * this.dispX[a] + this.dispY[a] * this.dispY[a]); - 0.0010 > b && (b = 0.0010); - var c = this.dispX[a] / b * Math.min(b, this.temperature), - b = this.dispY[a] / b * Math.min(b, this.temperature); - this.dispX[a] = 0; - this.dispY[a] = 0; - this.cellLocation[a][0] += c; - this.cellLocation[a][1] += b - } -}; -mxFastOrganicLayout.prototype.calcAttraction = function() { - for (var a = 0; a < this.vertexArray.length; a++) - for (var b = 0; b < this.neighbours[a].length; b++) { - var c = this.neighbours[a][b]; - if (a != c && this.isMoveable[a] && this.isMoveable[c]) { - var d = this.cellLocation[a][0] - this.cellLocation[c][0], - e = this.cellLocation[a][1] - this.cellLocation[c][1], - f = d * d + e * e - this.radiusSquared[a] - this.radiusSquared[c]; - f < this.minDistanceLimitSquared && (f = this.minDistanceLimitSquared); - var g = Math.sqrt(f), - f = f / this.forceConstant, - d = d / g * f, - e = e / g * f; - this.dispX[a] -= d; - this.dispY[a] -= e; - this.dispX[c] += d; - this.dispY[c] += e - } - } -}; -mxFastOrganicLayout.prototype.calcRepulsion = function() { - for (var a = this.vertexArray.length, b = 0; b < a; b++) - for (var c = b; c < a; c++) { - if (!this.allowedToRun) return; - if (c != b && this.isMoveable[b] && this.isMoveable[c]) { - var d = this.cellLocation[b][0] - this.cellLocation[c][0], - e = this.cellLocation[b][1] - this.cellLocation[c][1]; - 0 == d && (d = 0.01 + Math.random()); - 0 == e && (e = 0.01 + Math.random()); - var f = Math.sqrt(d * d + e * e), - g = f - this.radius[b] - this.radius[c]; - g > this.maxDistanceLimit || (g < this.minDistanceLimit && (g = this.minDistanceLimit), g = this.forceConstantSquared / - g, d = d / f * g, e = e / f * g, this.dispX[b] += d, this.dispY[b] += e, this.dispX[c] -= d, this.dispY[c] -= e) - } - } -}; -mxFastOrganicLayout.prototype.reduceTemperature = function() { - this.temperature = this.initialTemp * (1 - this.iteration / this.maxIterations) -}; - -function mxCircleLayout(a, b) { - mxGraphLayout.call(this, a); - this.radius = null != b ? b : 100 -} -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(a) { - var b = this.graph.getModel(); - b.beginUpdate(); - try { - for (var c = 0, d = null, e = null, f = [], g = b.getChildCount(a), h = 0; h < g; h++) { - var k = b.getChildAt(a, h); - if (this.isVertexIgnored(k)) this.isEdgeIgnored(k) || (this.resetEdges && this.graph.resetEdge(k), this.disableEdgeStyle && this.setEdgeStyleEnabled(k, !1)); - else { - f.push(k); - var l = this.getVertexBounds(k), - d = null == d ? l.y : Math.min(d, l.y), - e = null == e ? l.x : Math.min(e, l.x), - c = Math.max(c, Math.max(l.width, l.height)) - } - } - var m = this.getRadius(f.length, - c); - this.moveCircle && (e = this.x0, d = this.y0); - this.circle(f, m, e, d) - } finally { - b.endUpdate() - } -}; -mxCircleLayout.prototype.getRadius = function(a, b) { - return Math.max(a * b / Math.PI, this.radius) -}; -mxCircleLayout.prototype.circle = function(a, b, c, d) { - for (var e = a.length, f = 2 * Math.PI / e, g = 0; g < e; g++) this.isVertexMovable(a[g]) && this.setVertexLocation(a[g], c + b + b * Math.sin(g * f), d + b + b * Math.cos(g * f)) -}; - -function mxParallelEdgeLayout(a) { - mxGraphLayout.call(this, a) -} -mxParallelEdgeLayout.prototype = new mxGraphLayout; -mxParallelEdgeLayout.prototype.constructor = mxParallelEdgeLayout; -mxParallelEdgeLayout.prototype.spacing = 20; -mxParallelEdgeLayout.prototype.execute = function(a) { - a = this.findParallels(a); - this.graph.model.beginUpdate(); - try { - for (var b in a) { - var c = a[b]; - 1 < c.length && this.layout(c) - } - } finally { - this.graph.model.endUpdate() - } -}; -mxParallelEdgeLayout.prototype.findParallels = function(a) { - for (var b = this.graph.getModel(), c = [], d = b.getChildCount(a), e = 0; e < d; e++) { - var f = b.getChildAt(a, e); - if (!this.isEdgeIgnored(f)) { - var g = this.getEdgeId(f); - null != g && (null == c[g] && (c[g] = []), c[g].push(f)) - } - } - return c -}; -mxParallelEdgeLayout.prototype.getEdgeId = function(a) { - var b = this.graph.getView(), - c = b.getState(a), - d = null != c ? c.getVisibleTerminal(!0) : b.getVisibleTerminal(a, !0); - a = null != c ? c.getVisibleTerminal(!1) : b.getVisibleTerminal(a, !1); - return null != d && null != a ? (d = mxCellPath.create(d), a = mxCellPath.create(a), d > a ? a + "-" + d : d + "-" + a) : null -}; -mxParallelEdgeLayout.prototype.layout = function(a) { - var b = a[0], - c = this.graph.getModel(), - d = c.getGeometry(c.getTerminal(b, !0)), - e = c.getGeometry(c.getTerminal(b, !1)); - if (d == e) - for (var b = d.x + d.width + this.spacing, c = d.y + d.height / 2, f = 0; f < a.length; f++) this.route(a[f], b, c), b += this.spacing; - else if (null != d && null != e) - for (var b = d.x + d.width / 2, c = d.y + d.height / 2, f = e.x + e.width / 2 - b, g = e.y + e.height / 2 - c, e = Math.sqrt(f * f + g * g), d = g * this.spacing / e, e = f * this.spacing / e, - b = b + f / 2 + d * (a.length - 1) / 2, c = c + g / 2 - e * (a.length - 1) / 2, f = 0; f < a.length; f++) this.route(a[f], - b, c), b -= d, c += e -}; -mxParallelEdgeLayout.prototype.route = function(a, b, c) { - this.graph.isCellMovable(a) && this.setEdgePoints(a, [new mxPoint(b, c)]) -}; - -function mxCompositeLayout(a, b, c) { - mxGraphLayout.call(this, a); - this.layouts = b; - this.master = c -} -mxCompositeLayout.prototype = new mxGraphLayout; -mxCompositeLayout.prototype.constructor = mxCompositeLayout; -mxCompositeLayout.prototype.layouts = null; -mxCompositeLayout.prototype.master = null; -mxCompositeLayout.prototype.moveCell = function(a, b, c) { - null != this.master ? this.master.move.apply(this.master, arguments) : this.layouts[0].move.apply(this.layouts[0], arguments) -}; -mxCompositeLayout.prototype.execute = function(a) { - var b = this.graph.getModel(); - b.beginUpdate(); - try { - for (var c = 0; c < this.layouts.length; c++) this.layouts[c].execute.apply(this.layouts[c], arguments) - } finally { - b.endUpdate() - } -}; - -function mxEdgeLabelLayout(a, b) { - mxGraphLayout.call(this, a) -} -mxEdgeLabelLayout.prototype = new mxGraphLayout; -mxEdgeLabelLayout.prototype.constructor = mxEdgeLabelLayout; -mxEdgeLabelLayout.prototype.execute = function(a) { - for (var b = this.graph.view, c = this.graph.getModel(), d = [], e = [], f = c.getChildCount(a), g = 0; g < f; g++) { - var h = c.getChildAt(a, g), - k = b.getState(h); - null != k && (this.isVertexIgnored(h) ? this.isEdgeIgnored(h) || d.push(k) : e.push(k)) - } - this.placeLabels(e, d) -}; -mxEdgeLabelLayout.prototype.placeLabels = function(a, b) { - var c = this.graph.getModel(); - c.beginUpdate(); - try { - for (var d = 0; d < b.length; d++) { - var e = b[d]; - if (null != e && null != e.text && null != e.text.boundingBox) - for (var f = 0; f < a.length; f++) { - var g = a[f]; - null != g && this.avoid(e, g) - } - } - } finally { - c.endUpdate() - } -}; -mxEdgeLabelLayout.prototype.avoid = function(a, b) { - var c = this.graph.getModel(), - d = a.text.boundingBox; - if (mxUtils.intersects(d, b)) { - var e = -d.y - d.height + b.y, - f = -d.y + b.y + b.height, - e = Math.abs(e) < Math.abs(f) ? e : f, - f = -d.x - d.width + b.x, - d = -d.x + b.x + b.width, - d = Math.abs(f) < Math.abs(d) ? f : d; - Math.abs(d) < Math.abs(e) ? e = 0 : d = 0; - f = c.getGeometry(a.cell); - null != f && (f = f.clone(), null != f.offset ? (f.offset.x += d, f.offset.y += e) : f.offset = new mxPoint(d, e), c.setGeometry(a.cell, f)) - } -}; - -function mxGraphAbstractHierarchyCell() { - this.x = []; - this.y = []; - this.temp = [] -} -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(a) { - return null -}; -mxGraphAbstractHierarchyCell.prototype.getPreviousLayerConnectedCells = function(a) { - return null -}; -mxGraphAbstractHierarchyCell.prototype.isEdge = function() { - return !1 -}; -mxGraphAbstractHierarchyCell.prototype.isVertex = function() { - return !1 -}; -mxGraphAbstractHierarchyCell.prototype.getGeneralPurposeVariable = function(a) { - return null -}; -mxGraphAbstractHierarchyCell.prototype.setGeneralPurposeVariable = function(a, b) { - return null -}; -mxGraphAbstractHierarchyCell.prototype.setX = function(a, b) { - this.isVertex() ? this.x[0] = b : this.isEdge() && (this.x[a - this.minRank - 1] = b) -}; -mxGraphAbstractHierarchyCell.prototype.getX = function(a) { - return this.isVertex() ? this.x[0] : this.isEdge() ? this.x[a - this.minRank - 1] : 0 -}; -mxGraphAbstractHierarchyCell.prototype.setY = function(a, b) { - this.isVertex() ? this.y[0] = b : this.isEdge() && (this.y[a - this.minRank - 1] = b) -}; - -function mxGraphHierarchyNode(a) { - mxGraphAbstractHierarchyCell.apply(this, arguments); - this.cell = a -} -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(a) { - return this.maxRank -}; -mxGraphHierarchyNode.prototype.getNextLayerConnectedCells = function(a) { - if (null == this.nextLayerConnectedCells) { - this.nextLayerConnectedCells = []; - this.nextLayerConnectedCells[0] = []; - for (var b = 0; b < this.connectsAsTarget.length; b++) { - var c = this.connectsAsTarget[b]; - 1 == c.maxRank || c.maxRank == a + 1 ? this.nextLayerConnectedCells[0].push(c.source) : this.nextLayerConnectedCells[0].push(c) - } - } - return this.nextLayerConnectedCells[0] -}; -mxGraphHierarchyNode.prototype.getPreviousLayerConnectedCells = function(a) { - if (null == this.previousLayerConnectedCells) { - this.previousLayerConnectedCells = []; - this.previousLayerConnectedCells[0] = []; - for (var b = 0; b < this.connectsAsSource.length; b++) { - var c = this.connectsAsSource[b]; - 1 == c.minRank || c.minRank == a - 1 ? this.previousLayerConnectedCells[0].push(c.target) : this.previousLayerConnectedCells[0].push(c) - } - } - return this.previousLayerConnectedCells[0] -}; -mxGraphHierarchyNode.prototype.isVertex = function() { - return !0 -}; -mxGraphHierarchyNode.prototype.getGeneralPurposeVariable = function(a) { - return this.temp[0] -}; -mxGraphHierarchyNode.prototype.setGeneralPurposeVariable = function(a, b) { - this.temp[0] = b -}; -mxGraphHierarchyNode.prototype.isAncestor = function(a) { - if (null != a && null != this.hashCode && null != a.hashCode && this.hashCode.length < a.hashCode.length) { - if (this.hashCode == a.hashCode) return !0; - if (null == this.hashCode || null == this.hashCode) return !1; - for (var b = 0; b < this.hashCode.length; b++) - if (this.hashCode[b] != a.hashCode[b]) return !1; - return !0 - } - return !1 -}; -mxGraphHierarchyNode.prototype.getCoreCell = function() { - return this.cell -}; - -function mxGraphHierarchyEdge(a) { - mxGraphAbstractHierarchyCell.apply(this, arguments); - this.edges = a -} -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(a) { - a = this.source; - this.source = this.target; - this.target = a; - this.isReversed = !this.isReversed -}; -mxGraphHierarchyEdge.prototype.getNextLayerConnectedCells = function(a) { - if (null == this.nextLayerConnectedCells) { - this.nextLayerConnectedCells = []; - for (var b = 0; b < this.temp.length; b++) this.nextLayerConnectedCells[b] = [], b == this.temp.length - 1 ? this.nextLayerConnectedCells[b].push(this.source) : this.nextLayerConnectedCells[b].push( - this) - } - return this.nextLayerConnectedCells[a - this.minRank - 1] -}; -mxGraphHierarchyEdge.prototype.getPreviousLayerConnectedCells = function(a) { - if (null == this.previousLayerConnectedCells) { - this.previousLayerConnectedCells = []; - for (var b = 0; b < this.temp.length; b++) this.previousLayerConnectedCells[b] = [], 0 == b ? this.previousLayerConnectedCells[b].push(this.target) : this.previousLayerConnectedCells[b].push( - this) - } - return this.previousLayerConnectedCells[a - this.minRank - 1] -}; -mxGraphHierarchyEdge.prototype.isEdge = function() { - return !0 -}; -mxGraphHierarchyEdge.prototype.getGeneralPurposeVariable = function(a) { - return this.temp[a - this.minRank - 1] -}; -mxGraphHierarchyEdge.prototype.setGeneralPurposeVariable = function(a, b) { - this.temp[a - this.minRank - 1] = b -}; -mxGraphHierarchyEdge.prototype.getCoreCell = function() { - return null != this.edges && 0 < this.edges.length ? this.edges[0] : null -}; - -function mxGraphHierarchyModel(a, b, c, d, e) { - a.getGraph(); - this.tightenToSource = e; - this.roots = c; - this.parent = d; - this.vertexMapper = {}; - this.edgeMapper = {}; - this.maxRank = 0; - c = []; - null == b && (b = this.graph.getChildVertices(d)); - this.maxRank = this.SOURCESCANSTARTRANK; - this.createInternalCells(a, b, c); - for (d = 0; d < b.length; d++) { - e = c[d].connectsAsSource; - for (var f = 0; f < e.length; f++) { - var g = e[f], - h = g.edges; - if (null != h && 0 < h.length) { - var h = h[0], - k = a.getVisibleTerminal(h, !1), - k = mxCellPath.create(k), - k = this.vertexMapper[k]; - c[d] == k && (k = a.getVisibleTerminal(h, !0), k = mxCellPath.create(k), k = this.vertexMapper[k]); - null != k && c[d] != k && (g.target = k, 0 == k.connectsAsTarget.length && (k.connectsAsTarget = []), 0 > mxUtils.indexOf(k.connectsAsTarget, g) && k.connectsAsTarget.push(g)) - } - } - c[d].temp[0] = 1 - } -} -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(a, b, c) { - for (var d = a.getGraph(), e = 0; e < b.length; e++) { - c[e] = new mxGraphHierarchyNode(b[e]); - var f = mxCellPath.create(b[e]); - this.vertexMapper[f] = c[e]; - f = a.getEdges(b[e]); - c[e].connectsAsSource = []; - for (var g = 0; g < f.length; g++) { - var h = a.getVisibleTerminal(f[g], !1); - if (h != b[e] && h != b[e] && a.graph.model.isVertex(h) && !a.isVertexIgnored(h)) { - var k = a.getEdgesBetween(b[e], h, !1), - l = a.getEdgesBetween(b[e], h, !0), - h = mxCellPath.create(k[0]); - if (null != k && 0 < k.length && null == - this.edgeMapper[h] && 2 * l.length >= k.length) { - for (var l = new mxGraphHierarchyEdge(k), m = 0; m < k.length; m++) { - var n = k[m], - h = mxCellPath.create(n); - this.edgeMapper[h] = l; - d.resetEdge(n); - a.disableEdgeStyle && (a.setEdgeStyleEnabled(n, !1), a.setOrthogonalEdge(n, !0)) - } - l.source = c[e]; - 0 > mxUtils.indexOf(c[e].connectsAsSource, l) && c[e].connectsAsSource.push(l) - } - } - } - c[e].temp[0] = 0 - } -}; -mxGraphHierarchyModel.prototype.initialRank = function() { - var a = []; - if (null != this.roots) - for (var b = 0; b < this.roots.length; b++) { - var c = mxCellPath.create(this.roots[b]), - c = this.vertexMapper[c]; - null != c && a.push(c) - } - for (var d in this.vertexMapper) c = this.vertexMapper[d], c.temp[0] = -1; - for (var e = a.slice(); 0 < a.length;) { - var c = a[0], - f, g; - f = c.connectsAsTarget; - g = c.connectsAsSource; - for (var h = !0, k = this.SOURCESCANSTARTRANK, b = 0; b < f.length; b++) { - var l = f[b]; - if (5270620 == l.temp[0]) l = l.source, k = Math.min(k, l.temp[0] - 1); - else { - h = !1; - break - } - } - if (h) { - c.temp[0] = - k; - this.maxRank = Math.min(this.maxRank, k); - if (null != g) - for (b = 0; b < g.length; b++) l = g[b], l.temp[0] = 5270620, l = l.target, -1 == l.temp[0] && (a.push(l), l.temp[0] = -2); - a.shift() - } else if (b = a.shift(), a.push(c), b == c && 1 == a.length) break - } - for (d in this.vertexMapper) c = this.vertexMapper[d], c.temp[0] -= this.maxRank; - for (b = 0; b < e.length; b++) { - c = e[b]; - a = 0; - f = c.connectsAsSource; - for (d = 0; d < f.length; d++) l = f[d], l = l.target, c.temp[0] = Math.max(a, l.temp[0] + 1), a = c.temp[0] - } - this.maxRank = this.SOURCESCANSTARTRANK - this.maxRank -}; -mxGraphHierarchyModel.prototype.fixRanks = function() { - var a = []; - this.ranks = []; - for (var b = 0; b < this.maxRank + 1; b++) a[b] = [], this.ranks[b] = a[b]; - var c = null; - if (null != this.roots) - for (var d = this.roots, c = [], b = 0; b < d.length; b++) { - var e = mxCellPath.create(d[b]); - c[b] = this.vertexMapper[e] - } - this.visit(function(b, c, d, e, l) { - 0 == l && (0 > c.maxRank && 0 > c.minRank) && (a[c.temp[0]].push(c), c.maxRank = c.temp[0], c.minRank = c.temp[0], c.temp[0] = a[c.maxRank].length - 1); - if (null != b && null != d && 1 < b.maxRank - c.maxRank) { - d.maxRank = b.maxRank; - d.minRank = - c.maxRank; - d.temp = []; - d.x = []; - d.y = []; - for (b = d.minRank + 1; b < d.maxRank; b++) a[b].push(d), d.setGeneralPurposeVariable(b, a[b].length - 1) - } - }, c, !1, null) -}; -mxGraphHierarchyModel.prototype.visit = function(a, b, c, d) { - if (null != b) { - for (var e = 0; e < b.length; e++) { - var f = b[e]; - null != f && (null == d && (d = {}), c ? (f.hashCode = [], f.hashCode[0] = this.dfsCount, f.hashCode[1] = e, this.extendedDfs(null, f, null, a, d, f.hashCode, e, 0)) : this.dfs(null, f, null, - a, d, 0)) - } - this.dfsCount++ - } -}; -mxGraphHierarchyModel.prototype.dfs = function(a, b, c, d, e, f) { - if (null != b) { - var g = mxCellPath.create(b.cell); - if (null == e[g]) { - e[g] = b; - d(a, b, c, f, 0); - a = b.connectsAsSource.slice(); - for (c = 0; c < a.length; c++) g = a[c], this.dfs(b, g.target, g, d, e, f + 1) - } else d(a, b, c, f, 1) - } -}; -mxGraphHierarchyModel.prototype.extendedDfs = function(a, b, c, d, e, f, g, h) { - if (null != b) { - if (null != a && (null == b.hashCode || b.hashCode[0] != a.hashCode[0])) f = a.hashCode.length + 1, b.hashCode = a.hashCode.slice(), b.hashCode[f - 1] = g; - g = mxCellPath.create(b.cell); - if (null == e[g]) { - e[g] = b; - d(a, b, c, h, 0); - a = b.connectsAsSource.slice(); - for (c = 0; c < a.length; c++) g = a[c], this.extendedDfs(b, g.target, g, d, e, b.hashCode, c, h + 1) - } else d(a, b, c, h, 1) - } -}; - -function mxHierarchicalLayoutStage() {} -mxHierarchicalLayoutStage.prototype.execute = function(a) {}; - -function mxMedianHybridCrossingReduction(a) { - this.layout = a -} -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(a) { - a = this.layout.getModel(); - this.nestedBestRanks = []; - for (var b = 0; b < a.ranks.length; b++) this.nestedBestRanks[b] = a.ranks[b].slice(); - for (var c = 0, d = this.calculateCrossings(a), b = 0; b < this.maxIterations && c < this.maxNoImprovementIterations; b++) { - this.weightedMedian(b, a); - this.transpose(b, a); - var e = this.calculateCrossings(a); - if (e < d) { - d = e; - for (e = c = 0; e < this.nestedBestRanks.length; e++) - for (var f = a.ranks[e], g = 0; g < f.length; g++) { - var h = f[g]; - this.nestedBestRanks[e][h.getGeneralPurposeVariable(e)] = - h - } - } else { - c++; - for (e = 0; e < this.nestedBestRanks.length; e++) { - f = a.ranks[e]; - for (g = 0; g < f.length; g++) h = f[g], h.setGeneralPurposeVariable(e, g) - } - } - if (0 == d) break - } - c = []; - d = []; - for (b = 0; b < a.maxRank + 1; b++) d[b] = [], c[b] = d[b]; - for (b = 0; b < this.nestedBestRanks.length; b++) - for (e = 0; e < this.nestedBestRanks[b].length; e++) d[b].push(this.nestedBestRanks[b][e]); - a.ranks = c -}; -mxMedianHybridCrossingReduction.prototype.calculateCrossings = function(a) { - for (var b = a.ranks.length, c = 0, d = 1; d < b; d++) c += this.calculateRankCrossing(d, a); - return c -}; -mxMedianHybridCrossingReduction.prototype.calculateRankCrossing = function(a, b) { - for (var c = 0, d = b.ranks[a], e = d.length, f = b.ranks[a - 1].length, g = [], h = 0; h < e; h++) g[h] = []; - for (h = 0; h < d.length; h++) - for (var k = d[h], l = k.getGeneralPurposeVariable(a), m = k.getPreviousLayerConnectedCells(a), k = 0; k < m.length; k++) { - var n = m[k].getGeneralPurposeVariable(a - 1); - g[l][n] = 201207 - } - for (h = 0; h < e; h++) - for (k = 0; k < f; k++) - if (201207 == g[h][k]) { - for (d = h + 1; d < e; d++) - for (l = 0; l < k; l++) 201207 == g[d][l] && c++; - for (d = 0; d < h; d++) - for (l = k + 1; l < f; l++) 201207 == g[d][l] && - c++ - } - return c / 2 -}; -mxMedianHybridCrossingReduction.prototype.transpose = function(a, b) { - for (var c = !0, d = 0; c && 10 > d++;) - for (var e = 1 == a % 2 && 1 == d % 2, c = !1, f = 0; f < b.ranks.length; f++) { - for (var g = b.ranks[f], h = [], k = 0; k < g.length; k++) { - var l = g[k], - m = l.getGeneralPurposeVariable(f); - 0 > m && (m = k); - h[m] = l - } - for (var n = m = l = null, p = null, q = null, s = null, r = null, t = null, v = null, w = null, k = 0; k < g.length - 1; k++) { - if (0 == k) { - for (var v = h[k], l = v.getNextLayerConnectedCells(f), m = v.getPreviousLayerConnectedCells(f), q = [], s = [], u = 0; u < l.length; u++) q[u] = l[u].getGeneralPurposeVariable(f + 1); - for (u = 0; u < m.length; u++) s[u] = m[u].getGeneralPurposeVariable(f - 1) - } else l = n, m = p, q = r, s = t, v = w; - w = h[k + 1]; - n = w.getNextLayerConnectedCells(f); - p = w.getPreviousLayerConnectedCells(f); - r = []; - t = []; - for (u = 0; u < n.length; u++) r[u] = n[u].getGeneralPurposeVariable(f + 1); - for (u = 0; u < p.length; u++) t[u] = p[u].getGeneralPurposeVariable(f - 1); - for (var y = 0, z = 0, u = 0; u < q.length; u++) - for (var x = 0; x < r.length; x++) q[u] > r[x] && y++, q[u] < r[x] && z++; - for (u = 0; u < s.length; u++) - for (x = 0; x < t.length; x++) s[u] > t[x] && y++, s[u] < t[x] && z++; - if (z < y || z == y && e) n = v.getGeneralPurposeVariable(f), - v.setGeneralPurposeVariable(f, w.getGeneralPurposeVariable(f)), w.setGeneralPurposeVariable(f, n), n = l, p = m, r = q, t = s, w = v, e || (c = !0) - } - } -}; -mxMedianHybridCrossingReduction.prototype.weightedMedian = function(a, b) { - var c = 0 == a % 2; - if (c) - for (var d = b.maxRank - 1; 0 <= d; d--) this.medianRank(d, c); - else - for (d = 1; d < b.maxRank; d++) this.medianRank(d, c) -}; -mxMedianHybridCrossingReduction.prototype.medianRank = function(a, b) { - for (var c = this.nestedBestRanks[a].length, d = [], e = [], f = 0; f < c; f++) { - var g = this.nestedBestRanks[a][f], - h = new MedianCellSorter; - h.cell = g; - var k; - k = b ? g.getNextLayerConnectedCells(a) : g.getPreviousLayerConnectedCells(a); - var l; - l = b ? a + 1 : a - 1; - null != k && 0 != k.length ? (h.medianValue = this.medianValue(k, l), d.push(h)) : e[g.getGeneralPurposeVariable(a)] = !0 - } - d.sort(MedianCellSorter.prototype.compare); - for (f = 0; f < c; f++) null == e[f] && (g = d.shift().cell, g.setGeneralPurposeVariable(a, - f)) -}; -mxMedianHybridCrossingReduction.prototype.medianValue = function(a, b) { - for (var c = [], d = 0, e = 0; e < a.length; e++) { - var f = a[e]; - c[d++] = f.getGeneralPurposeVariable(b) - } - c.sort(function(a, b) { - return a - b - }); - if (1 == d % 2) return c[Math.floor(d / 2)]; - if (2 == d) return (c[0] + c[1]) / 2; - e = d / 2; - f = c[e - 1] - c[0]; - d = c[d - 1] - c[e]; - return (c[e - 1] * d + c[e] * f) / (f + d) -}; - -function MedianCellSorter() {} -MedianCellSorter.prototype.medianValue = 0; -MedianCellSorter.prototype.cell = !1; -MedianCellSorter.prototype.compare = function(a, b) { - return null != a && null != b ? b.medianValue > a.medianValue ? -1 : b.medianValue < a.medianValue ? 1 : 0 : 0 -}; - -function mxMinimumCycleRemover(a) { - this.layout = a -} -mxMinimumCycleRemover.prototype = new mxHierarchicalLayoutStage; -mxMinimumCycleRemover.prototype.constructor = mxMinimumCycleRemover; -mxMinimumCycleRemover.prototype.layout = null; -mxMinimumCycleRemover.prototype.execute = function(a) { - var b = this.layout.getModel(), - c = {}, - d = mxUtils.clone(b.vertexMapper, null, !0), - e = null; - if (null != b.roots) { - var f = b.roots, - e = []; - for (a = 0; a < f.length; a++) { - var g = mxCellPath.create(f[a]); - e[a] = b.vertexMapper[g] - } - } - b.visit(function(a, b, e, f, g) { - b.isAncestor(a) && (e.invert(), mxUtils.remove(e, a.connectsAsSource), a.connectsAsTarget.push(e), mxUtils.remove(e, b.connectsAsTarget), b.connectsAsSource.push(e)); - a = mxCellPath.create(b.cell); - c[a] = b; - delete d[a] - }, e, !0, null); - e = null; - 0 < - d.lenth && (e = mxUtils.clone(d, null, !0)); - a = mxUtils.clone(c, null, !0); - b.visit(function(a, b, e, f, g) { - b.isAncestor(a) && (e.invert(), mxUtils.remove(e, a.connectsAsSource), b.connectsAsSource.push(e), a.connectsAsTarget.push(e), mxUtils.remove(e, b.connectsAsTarget)); - a = mxCellPath.create(b.cell); - c[a] = b; - delete d[a] - }, d, !0, a); - f = this.layout.getGraph(); - if (null != e && 0 < e.length) { - b = b.roots; - for (a = 0; a < e.length; a++) g = e[a].cell, 0 == f.getIncomingEdges(g).length && b.push(g) - } -}; - -function mxCoordinateAssignment(a, b, c, d, e, f) { - this.layout = a; - this.intraCellSpacing = b; - this.interRankCellSpacing = c; - this.orientation = d; - this.initialX = e; - this.parallelEdgeSpacing = f -} -var mxHierarchicalEdgeStyle = { - ORTHOGONAL: 1, - POLYLINE: 2, - STRAIGHT: 3, - CURVE: 4 -}; -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 a = this.layout.getModel(); - mxLog.show(); - mxLog.writeln("\x3d\x3d\x3d\x3d\x3d\x3dCoord assignment debug\x3d\x3d\x3d\x3d\x3d\x3d\x3d"); - for (var b = 0; b < a.ranks.length; b++) { - mxLog.write("Rank ", b, " : "); - for (var c = a.ranks[b], d = 0; d < c.length; d++) mxLog.write(c[d].getGeneralPurposeVariable(b), " "); - mxLog.writeln() - } - mxLog.writeln("\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d\x3d") -}; -mxCoordinateAssignment.prototype.execute = function(a) { - this.jettyPositions = []; - a = this.layout.getModel(); - this.currentXDelta = 0; - this.initialCoords(this.layout.getGraph(), a); - this.fineTuning && this.minNode(a); - var b = 1E8; - if (this.fineTuning) - for (var c = 0; c < this.maxIterations; c++) { - 0 != c && (this.medianPos(c, a), this.minNode(a)); - if (this.currentXDelta < b) { - for (var d = 0; d < a.ranks.length; d++) - for (var e = a.ranks[d], f = 0; f < e.length; f++) { - var g = e[f]; - g.setX(d, g.getGeneralPurposeVariable(d)) - } - b = this.currentXDelta - } else - for (d = 0; d < a.ranks.length; d++) { - e = - a.ranks[d]; - for (f = 0; f < e.length; f++) g = e[f], g.setGeneralPurposeVariable(d, g.getX(d)) - } - this.minPath(this.layout.getGraph(), a); - this.currentXDelta = 0 - } - this.setCellLocations(this.layout.getGraph(), a) -}; -mxCoordinateAssignment.prototype.minNode = function(a) { - for (var b = [], c = [], d = [], e = 0; e <= a.maxRank; e++) { - d[e] = a.ranks[e]; - for (var f = 0; f < d[e].length; f++) { - var g = d[e][f], - h = new WeightedCellSorter(g, e); - h.rankIndex = f; - h.visited = !0; - b.push(h); - g = mxCellPath.create(g.getCoreCell()); - c[g] = h - } - } - a = 10 * b.length; - for (f = 0; 0 < b.length && f <= a;) { - var h = b.shift(), - e = h.cell, - k = h.weightedValue, - l = parseInt(h.rankIndex), - g = e.getNextLayerConnectedCells(k), - m = e.getPreviousLayerConnectedCells(k), - n = g.length, - p = m.length, - q = this.medianXValue(g, k + 1), - s = - this.medianXValue(m, k - 1), - r = n + p, - t = e.getGeneralPurposeVariable(k), - v = t; - 0 < r && (v = (q * n + s * p) / r); - n = !1; - v < t - 1 ? 0 == l ? (e.setGeneralPurposeVariable(k, v), n = !0) : (l = d[k][l - 1], t = l.getGeneralPurposeVariable(k), t = t + l.width / 2 + this.intraCellSpacing + e.width / 2, t < v ? (e.setGeneralPurposeVariable( - k, v), n = !0) : t < e.getGeneralPurposeVariable(k) - 1 && (e.setGeneralPurposeVariable(k, t), n = !0)) : v > t + 1 && (l == d[k].length - 1 ? (e.setGeneralPurposeVariable(k, v), n = !0) : - (l = d[k][l + 1], t = l.getGeneralPurposeVariable(k), t = t - l.width / 2 - this.intraCellSpacing - - e.width / 2, t > v ? (e.setGeneralPurposeVariable(k, v), n = !0) : t > e.getGeneralPurposeVariable(k) + 1 && (e.setGeneralPurposeVariable(k, t), n = !0))); - if (n) { - for (e = 0; e < g.length; e++) k = g[e], k = mxCellPath.create(k.getCoreCell()), k = c[k], null != k && !1 == k.visited && (k.visited = !0, b.push(k)); - for (e = 0; e < m.length; e++) k = m[e], k = mxCellPath.create(k.getCoreCell()), k = c[k], null != k && !1 == k.visited && (k.visited = !0, b.push(k)) - } - h.visited = !1; - f++ - } -}; -mxCoordinateAssignment.prototype.medianPos = function(a, b) { - if (0 == a % 2) - for (var c = b.maxRank; 0 < c; c--) this.rankMedianPosition(c - 1, b, c); - else - for (c = 0; c < b.maxRank - 1; c++) this.rankMedianPosition(c + 1, b, c) -}; -mxCoordinateAssignment.prototype.rankMedianPosition = function(a, b, c) { - b = b.ranks[a]; - for (var d = [], e = [], f = 0; f < b.length; f++) { - var g = b[f]; - d[f] = new WeightedCellSorter; - d[f].cell = g; - d[f].rankIndex = f; - var h = mxCellPath.create(g.getCoreCell()); - e[h] = d[f]; - var k = null, - k = c < a ? g.getPreviousLayerConnectedCells(a) : g.getNextLayerConnectedCells(a); - d[f].weightedValue = this.calculatedWeightedValue(g, k) - } - d.sort(WeightedCellSorter.prototype.compare); - for (f = 0; f < d.length; f++) { - h = 0; - g = d[f].cell; - h = 0; - k = c < a ? g.getPreviousLayerConnectedCells(a).slice() : - g.getNextLayerConnectedCells(a).slice(); - null != k && (h = k.length, h = 0 < h ? this.medianXValue(k, c) : g.getGeneralPurposeVariable(a)); - for (var l = 0, k = -1E8, m = d[f].rankIndex - 1; 0 <= m;) { - var n = mxCellPath.create(b[m].getCoreCell()), - n = e[n]; - if (null != n) { - var p = n.cell; - n.visited ? (k = p.getGeneralPurposeVariable(a) + p.width / 2 + this.intraCellSpacing + l + g.width / 2, m = -1) : (l += p.width + this.intraCellSpacing, m--) - } - } - l = 0; - p = 1E8; - for (m = d[f].rankIndex + 1; m < d.length;) - if (n = mxCellPath.create(b[m].getCoreCell()), n = e[n], null != n) { - var q = n.cell; - n.visited ? - (p = q.getGeneralPurposeVariable(a) - q.width / 2 - this.intraCellSpacing - l - g.width / 2, m = d.length) : (l += q.width + this.intraCellSpacing, m++) - } - h >= k && h <= p ? g.setGeneralPurposeVariable(a, h) : h < k ? (g.setGeneralPurposeVariable(a, k), this.currentXDelta += k - h) : h > p && (g.setGeneralPurposeVariable(a, p), this.currentXDelta += - h - p); - d[f].visited = !0 - } -}; -mxCoordinateAssignment.prototype.calculatedWeightedValue = function(a, b) { - for (var c = 0, d = 0; d < b.length; d++) { - var e = b[d]; - a.isVertex() && e.isVertex() ? c++ : c = a.isEdge() && e.isEdge() ? c + 8 : c + 2 - } - return c -}; -mxCoordinateAssignment.prototype.medianXValue = function(a, b) { - if (0 == a.length) return 0; - for (var c = [], d = 0; d < a.length; d++) c[d] = a[d].getGeneralPurposeVariable(b); - c.sort(function(a, b) { - return a - b - }); - if (1 == a.length % 2) return c[Math.floor(a.length / 2)]; - d = a.length / 2; - return (c[d - 1] + c[d]) / 2 -}; -mxCoordinateAssignment.prototype.initialCoords = function(a, b) { - this.calculateWidestRank(a, b); - for (var c = this.widestRank; 0 <= c; c--) c < b.maxRank && this.rankCoordinates(c, a, b); - for (c = this.widestRank + 1; c <= b.maxRank; c++) 0 < c && this.rankCoordinates(c, a, b) -}; -mxCoordinateAssignment.prototype.rankCoordinates = function(a, b, c) { - b = c.ranks[a]; - c = 0; - for (var d = this.initialX + (this.widestRankValue - this.rankWidths[a]) / 2, e = !1, f = 0; f < b.length; f++) { - var g = b[f]; - if (g.isVertex()) { - var h = this.layout.getVertexBounds(g.cell); - null != h ? this.orientation == mxConstants.DIRECTION_NORTH || this.orientation == mxConstants.DIRECTION_SOUTH ? (g.width = h.width, g.height = h.height) : (g.width = h.height, g.height = h.width) : - e = !0; - c = Math.max(c, g.height) - } else g.isEdge() && (h = 1, null != g.edges ? h = g.edges.length : mxLog.warn("edge.edges is null"), - g.width = (h - 1) * this.parallelEdgeSpacing); - d += g.width / 2; - g.setX(a, d); - g.setGeneralPurposeVariable(a, d); - d += g.width / 2; - d += this.intraCellSpacing - }!0 == e && mxLog.warn("At least one cell has no bounds") -}; -mxCoordinateAssignment.prototype.calculateWidestRank = function(a, b) { - var c = -this.interRankCellSpacing, - d = 0; - this.rankWidths = []; - this.rankY = []; - for (var e = b.maxRank; 0 <= e; e--) { - for (var f = 0, g = b.ranks[e], h = this.initialX, k = !1, l = 0; l < g.length; l++) { - var m = g[l]; - if (m.isVertex()) { - var n = this.layout.getVertexBounds(m.cell); - null != n ? this.orientation == mxConstants.DIRECTION_NORTH || this.orientation == mxConstants.DIRECTION_SOUTH ? (m.width = n.width, m.height = n.height) : (m.width = n.height, m.height = n - .width) : k = !0; - f = Math.max(f, m.height) - } else m.isEdge() && - (n = 1, null != m.edges ? n = m.edges.length : mxLog.warn("edge.edges is null"), m.width = (n - 1) * this.parallelEdgeSpacing); - h += m.width / 2; - m.setX(e, h); - m.setGeneralPurposeVariable(e, h); - h += m.width / 2; - h += this.intraCellSpacing; - h > this.widestRankValue && (this.widestRankValue = h, this.widestRank = e); - this.rankWidths[e] = h - }!0 == k && mxLog.warn("At least one cell has no bounds"); - this.rankY[e] = c; - h = f / 2 + d / 2 + this.interRankCellSpacing; - d = f; - c = this.orientation == mxConstants.DIRECTION_NORTH || this.orientation == mxConstants.DIRECTION_WEST ? c + h : c - - h; - for (l = 0; l < g.length; l++) g[l].setY(e, c) - } -}; -mxCoordinateAssignment.prototype.minPath = function(a, b) { - var c = b.edgeMapper, - d; - for (d in c) { - var e = c[d]; - if (!(1 > e.maxRank - e.minRank - 1)) { - for (var f = e.getGeneralPurposeVariable(e.minRank + 1), g = !0, h = 0, k = e.minRank + 2; k < e.maxRank; k++) { - var l = e.getGeneralPurposeVariable(k); - f != l ? (g = !1, f = l) : h++ - } - if (!g) { - for (var g = f = 0, l = [], m = [], n = e.getGeneralPurposeVariable(e.minRank + 1), k = e.minRank + 1; k < e.maxRank - 1; k++) { - var p = e.getX(k + 1); - n == p ? (l[k - e.minRank - 1] = n, f++) : this.repositionValid(b, e, k + 1, n) ? (l[k - e.minRank - 1] = n, f++) : n = l[k - e.minRank - - 1] = p - } - n = e.getX(k); - for (k = e.maxRank - 1; k > e.minRank + 1; k--) p = e.getX(k - 1), n == p ? (m[k - e.minRank - 2] = n, g++) : this.repositionValid(b, e, k - 1, n) ? (m[k - e.minRank - 2] = n, g++) : (m[k - - e.minRank - 2] = e.getX(k - 1), n = p); - if (g > h || f > h) - if (g >= f) - for (k = e.maxRank - 2; k > e.minRank; k--) e.setX(k, m[k - e.minRank - 1]); - else if (f > g) - for (k = e.minRank + 2; k < e.maxRank; k++) e.setX(k, l[k - e.minRank - 2]) - } - } - } -}; -mxCoordinateAssignment.prototype.repositionValid = function(a, b, c, d) { - a = a.ranks[c]; - for (var e = -1, f = 0; f < a.length; f++) - if (b == a[f]) { - e = f; - break - } - if (0 > e) return !1; - f = b.getGeneralPurposeVariable(c); - if (d < f) { - if (0 == e) return !0; - a = a[e - 1]; - c = a.getGeneralPurposeVariable(c); - c = c + a.width / 2 + this.intraCellSpacing + b.width / 2; - if (!(c <= d)) return !1 - } else if (d > f) { - if (e == a.length - 1) return !0; - a = a[e + 1]; - c = a.getGeneralPurposeVariable(c); - c = c - a.width / 2 - this.intraCellSpacing - b.width / 2; - if (!(c >= d)) return !1 - } - return !0 -}; -mxCoordinateAssignment.prototype.setCellLocations = function(a, b) { - this.rankTopY = []; - this.rankBottomY = []; - for (var c = 0; c < b.ranks.length; c++) this.rankTopY[c] = Number.MAX_VALUE, this.rankBottomY[c] = 0; - c = null; - this.layout.resizeParent && (c = {}); - var d = b.edgeMapper, - e = b.vertexMapper, - f; - for (f in e) { - var g = e[f]; - this.setVertexLocation(g); - if (this.layout.resizeParent) { - var g = a.model.getParent(g.cell), - h = mxCellPath.create(g); - null == c[h] && (c[h] = g) - } - } - this.layout.resizeParent && null != c && this.adjustParents(c); - (this.edgeStyle == mxHierarchicalEdgeStyle.ORTHOGONAL || - this.edgeStyle == mxHierarchicalEdgeStyle.POLYLINE || this.edgeStyle == mxHierarchicalEdgeStyle.CURVE) && this.localEdgeProcessing(b); - for (f in d) this.setEdgePosition(d[f]) -}; -mxCoordinateAssignment.prototype.adjustParents = function(a) { - var b = [], - c; - for (c in a) b.push(a[c]); - this.layout.arrangeGroups(mxUtils.sortCells(b, !0), this.groupPadding) -}; -mxCoordinateAssignment.prototype.localEdgeProcessing = function(a) { - for (var b = 0; b < a.ranks.length; b++) - for (var c = a.ranks[b], d = 0; d < c.length; d++) { - var e = c[d]; - if (e.isVertex()) - for (var f = e.getPreviousLayerConnectedCells(b), g = b - 1, h = 0; 2 > h; h++) { - if (-1 < g && g < a.ranks.length && null != f && 0 < f.length) { - for (var k = [], l = 0; l < f.length; l++) { - var m = new WeightedCellSorter(f[l], f[l].getX(g)); - k.push(m) - } - k.sort(WeightedCellSorter.prototype.compare); - for (var m = e.x[0] - e.width / 2, n = m + e.width, p = f = 0, g = [], l = 0; l < k.length; l++) { - var q = k[l].cell, - s; - if (q.isVertex()) { - s = 0 == h ? e.connectsAsSource : e.connectsAsTarget; - for (var r = 0; r < s.length; r++) - if (s[r].source == q || s[r].target == q) f += s[r].edges.length, p++, g.push(s[r]) - } else f += q.edges.length, p++, g.push(q) - } - e.width > (f + 1) * this.prefHozEdgeSep + 2 * this.prefHozEdgeSep && (m += this.prefHozEdgeSep, n -= this.prefHozEdgeSep); - k = (n - m) / f; - m += k / 2; - n = this.minEdgeJetty - this.prefVertEdgeOff; - for (l = p = 0; l < g.length; l++) { - q = g[l].edges.length; - r = mxCellPath.create(g[l].edges[0]); - s = this.jettyPositions[r]; - null == s && (s = [], this.jettyPositions[r] = - s); - l < f / 2 ? n += this.prefVertEdgeOff : l > f / 2 && (n -= this.prefVertEdgeOff); - for (r = 0; r < q; r++) s[4 * r + 2 * h] = m, m += k, s[4 * r + 2 * h + 1] = n; - p = Math.max(p, n) - } - } - f = e.getNextLayerConnectedCells(b); - g = b + 1 - } - } -}; -mxCoordinateAssignment.prototype.setEdgePosition = function(a) { - var b = 0; - if (101207 != a.temp[0]) { - var c = a.maxRank, - d = a.minRank; - c == d && (c = a.source.maxRank, d = a.target.minRank); - for (var e = 0, f = mxCellPath.create(a.edges[0]), f = this.jettyPositions[f], g = a.isReversed ? a.target.cell : a.source.cell, h = this.layout.graph, k = 0; k < a.edges.length; k++) { - var l = a.edges[k], - m = this.layout.getVisibleTerminal(l, !0), - n = h.model.getTerminal(l, !0), - p = [], - q = a.isReversed; - m != g && (q = !q); - if (null != f) { - var s = q ? 2 : 0, - r = q ? this.rankTopY[d] : this.rankBottomY[c], - t = f[4 * e + 1 + s]; - q && (t = -t); - r += t; - s = f[4 * e + s]; - n = h.model.getTerminal(l, !0); - this.layout.isPort(n) && h.model.getParent(n) == m && (s = h.view.getState(n), s = null != s ? s.x : m.geometry.x + a.source.width * n.geometry.x); - this.orientation == mxConstants.DIRECTION_NORTH || this.orientation == mxConstants.DIRECTION_SOUTH ? (p.push(new mxPoint(s, r)), this.edgeStyle == mxHierarchicalEdgeStyle.CURVE && p.push( - new mxPoint(s, r + t))) : (p.push(new mxPoint(r, s)), this.edgeStyle == mxHierarchicalEdgeStyle.CURVE && p.push(new mxPoint(r + t, s))) - } - s = a.x.length - - 1; - r = t = -1; - m = a.maxRank - 1; - q && (s = 0, t = a.x.length, r = 1, m = a.minRank + 1); - for (; a.maxRank != a.minRank && s != t; s += r) { - var n = a.x[s] + b, - v = (this.rankTopY[m] + this.rankBottomY[m + 1]) / 2, - w = (this.rankTopY[m - 1] + this.rankBottomY[m]) / 2; - if (q) var u = v, - v = w, - w = u; - this.orientation == mxConstants.DIRECTION_NORTH || this.orientation == mxConstants.DIRECTION_SOUTH ? (p.push(new mxPoint(n, v)), p.push(new mxPoint(n, w))) : (p.push(new mxPoint(v, n)), p.push( - new mxPoint(w, n))); - this.limitX = Math.max(this.limitX, n); - m += r - } - null != f && (s = q ? 2 : 0, r = q ? this.rankBottomY[c] : - this.rankTopY[d], t = f[4 * e + 3 - s], q && (t = -t), r -= t, s = f[4 * e + 2 - s], q = h.model.getTerminal(l, !1), m = this.layout.getVisibleTerminal(l, !1), this.layout.isPort(q) && h.model - .getParent(q) == m && (s = h.view.getState(q), s = null != s ? s.x : m.geometry.x + a.target.width * q.geometry.x), this.orientation == mxConstants.DIRECTION_NORTH || this.orientation == - mxConstants.DIRECTION_SOUTH ? (this.edgeStyle == mxHierarchicalEdgeStyle.CURVE && p.push(new mxPoint(s, r - t)), p.push(new mxPoint(s, r))) : (this.edgeStyle == mxHierarchicalEdgeStyle.CURVE && - p.push(new mxPoint(r - - t, s)), p.push(new mxPoint(r, s)))); - a.isReversed && this.processReversedEdge(a, l); - this.layout.setEdgePoints(l, p); - b = 0 == b ? this.parallelEdgeSpacing : 0 < b ? -b : -b + this.parallelEdgeSpacing; - e++ - } - a.temp[0] = 101207 - } -}; -mxCoordinateAssignment.prototype.setVertexLocation = function(a) { - var b = a.cell, - c = a.x[0] - a.width / 2, - d = a.y[0] - a.height / 2; - this.rankTopY[a.minRank] = Math.min(this.rankTopY[a.minRank], d); - this.rankBottomY[a.minRank] = Math.max(this.rankBottomY[a.minRank], d + a.height); - this.orientation == mxConstants.DIRECTION_NORTH || this.orientation == mxConstants.DIRECTION_SOUTH ? this.layout.setVertexLocation(b, c, d) : this.layout.setVertexLocation(b, d, c); - this.limitX = Math.max(this.limitX, c + a.width) -}; -mxCoordinateAssignment.prototype.processReversedEdge = function(a, b) {}; - -function WeightedCellSorter(a, b) { - this.cell = a; - this.weightedValue = b -} -WeightedCellSorter.prototype.weightedValue = 0; -WeightedCellSorter.prototype.nudge = !1; -WeightedCellSorter.prototype.visited = !1; -WeightedCellSorter.prototype.rankIndex = null; -WeightedCellSorter.prototype.cell = null; -WeightedCellSorter.prototype.compare = function(a, b) { - return null != a && null != b ? b.weightedValue > a.weightedValue ? -1 : b.weightedValue < a.weightedValue ? 1 : b.nudge ? -1 : 1 : 0 -}; - -function mxHierarchicalLayout(a, b, c) { - mxGraphLayout.call(this, a); - this.orientation = null != b ? b : mxConstants.DIRECTION_NORTH; - this.deterministic = null != c ? c : !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(a, b) { - this.parent = a; - var c = this.graph.model; - this.edgesCache = {}; - if (!(null == b && null == a)) { - if (null != b && null != a) { - for (var d = [], e = 0; e < b.length; e++) c.isAncestor(a, b[e]) && d.push(b[e]); - this.roots = d - } else this.roots = b; - c.beginUpdate(); - try { - this.run(a), this.resizeParent && !this.graph.isCellCollapsed(a) && this.graph.updateGroupBounds([a], this.parentBorder, this.moveParent) - } finally { - c.endUpdate() - } - } -}; -mxHierarchicalLayout.prototype.findRoots = function(a, b) { - var c = []; - if (null != a && null != b) { - var d = this.graph.model, - e = null, - f = -1E5, - g; - for (g in b) { - var h = b[g]; - if (d.isVertex(h) && this.graph.isCellVisible(h)) { - for (var k = this.getEdges(h), l = 0, m = 0, n = 0; n < k.length; n++) this.getVisibleTerminal(k[n], !0) == h ? l++ : m++; - 0 == m && 0 < l && c.push(h); - k = l - m; - k > f && (f = k, e = h) - } - } - 0 == c.length && null != e && c.push(e) - } - return c -}; -mxHierarchicalLayout.prototype.getEdges = function(a) { - var b = mxCellPath.create(a); - if (null != this.edgesCache[b]) return this.edgesCache[b]; - for (var c = this.graph.model, d = [], e = this.graph.isCellCollapsed(a), f = c.getChildCount(a), g = 0; g < f; g++) { - var h = c.getChildAt(a, g); - if (this.isPort(h)) d = d.concat(c.getEdges(h, !0, !0)); - else if (e || !this.graph.isCellVisible(h)) d = d.concat(c.getEdges(h, !0, !0)) - } - d = d.concat(c.getEdges(a, !0, !0)); - c = []; - for (g = 0; g < d.length; g++) e = this.getVisibleTerminal(d[g], !0), f = this.getVisibleTerminal(d[g], !1), (e == f || e != f && (f == a && (null == this.parent || this.graph.isValidAncestor(e, - this.parent, this.traverseAncestors)) || e == a && (null == this.parent || this.graph.isValidAncestor(f, this.parent, this.traverseAncestors)))) && c.push(d[g]); - return this.edgesCache[b] = c -}; -mxHierarchicalLayout.prototype.getVisibleTerminal = function(a, b) { - var c = this.graph.view.getState(a), - c = null != c ? c.getVisibleTerminal(b) : this.graph.view.getVisibleTerminal(a, b); - this.isPort(c) && (c = this.graph.model.getParent(c)); - return c -}; -mxHierarchicalLayout.prototype.run = function(a) { - var b = [], - c = []; - if (null == this.roots && null != a) { - var d = {}; - this.filterDescendants(a, d); - this.roots = []; - var e = !0, - f; - for (f in d) - if (null != d[f]) { - e = !1; - break - } - for (; !e;) { - for (var g = this.findRoots(a, d), e = 0; e < g.length; e++) { - var h = []; - b.push(h); - this.traverse(g[e], !0, null, c, h, b, d) - } - for (e = 0; e < g.length; e++) this.roots.push(g[e]); - e = !0; - for (f in d) - if (null != d[f]) { - e = !1; - break - } - } - } else - for (e = 0; e < roots.length; e++) h = [], b.push(h), traverse(roots.get(e), !0, null, c, h, b, null); - for (e = c = 0; e < b.length; e++) { - h = - b[e]; - d = []; - for (f in h) d.push(h[f]); - this.model = new mxGraphHierarchyModel(this, d, this.roots, a, this.tightenToSource); - this.cycleStage(a); - this.layeringStage(); - this.crossingStage(a); - c = this.placementStage(c, a) - } -}; -mxHierarchicalLayout.prototype.filterDescendants = function(a, b) { - var c = this.graph.model; - c.isVertex(a) && (a != this.parent && this.graph.isCellVisible(a)) && (b[mxCellPath.create(a)] = a); - if (this.traverseAncestors || a == this.parent && this.graph.isCellVisible(a)) - for (var d = c.getChildCount(a), e = 0; e < d; e++) { - var f = c.getChildAt(a, e); - this.isPort(f) || this.filterDescendants(f, b) - } -}; -mxHierarchicalLayout.prototype.isPort = function(a) { - return a.geometry.relative ? !0 : !1 -}; -mxHierarchicalLayout.prototype.getEdgesBetween = function(a, b, c) { - c = null != c ? c : !1; - for (var d = this.getEdges(a), e = [], f = 0; f < d.length; f++) { - var g = this.getVisibleTerminal(d[f], !0), - h = this.getVisibleTerminal(d[f], !1); - (g == a && h == b || !c && g == b && h == a) && e.push(d[f]) - } - return e -}; -mxHierarchicalLayout.prototype.traverse = function(a, b, c, d, e, f, g) { - if (null != a && null != d) { - var h = mxCellPath.create(a); - if (null == d[h] && (null == g || null != g[h])) { - null == e[h] && (e[h] = a); - null == d[h] && (d[h] = a); - delete g[h]; - var k = this.getEdges(a); - for (c = 0; c < k.length; c++) - if (h = this.getVisibleTerminal(k[c], !0) == a, !b || h) h = this.getVisibleTerminal(k[c], !h), e = this.traverse(h, b, k[c], d, e, f, g) - } else if (null == e[h]) - for (c = 0; c < f.length; c++) - if (a = f[c], null != a[h]) { - for (k in e) a[k] = e[k]; - f.pop(); - return a - } - } - return e -}; -mxHierarchicalLayout.prototype.cycleStage = function(a) { - (new mxMinimumCycleRemover(this)).execute(a) -}; -mxHierarchicalLayout.prototype.layeringStage = function() { - this.model.initialRank(); - this.model.fixRanks() -}; -mxHierarchicalLayout.prototype.crossingStage = function(a) { - (new mxMedianHybridCrossingReduction(this)).execute(a) -}; -mxHierarchicalLayout.prototype.placementStage = function(a, b) { - var c = new mxCoordinateAssignment(this, this.intraCellSpacing, this.interRankCellSpacing, this.orientation, a, this.parallelEdgeSpacing); - c.fineTuning = this.fineTuning; - c.execute(b); - return c.limitX + this.interHierarchySpacing -}; - -function mxGraphModel(a) { - this.currentEdit = this.createUndoableEdit(); - null != a ? this.setRoot(a) : this.clear() -} -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(a) { - this.createIds = a -}; -mxGraphModel.prototype.createRoot = function() { - var a = new mxCell; - a.insert(new mxCell); - return a -}; -mxGraphModel.prototype.getCell = function(a) { - return null != this.cells ? this.cells[a] : null -}; -mxGraphModel.prototype.filterCells = function(a, b) { - var c = null; - if (null != a) - for (var c = [], d = 0; d < a.length; d++) b(a[d]) && c.push(a[d]); - return c -}; -mxGraphModel.prototype.getDescendants = function(a) { - return this.filterDescendants(null, a) -}; -mxGraphModel.prototype.filterDescendants = function(a, b) { - var c = []; - b = b || this.getRoot(); - (null == a || a(b)) && c.push(b); - for (var d = this.getChildCount(b), e = 0; e < d; e++) var f = this.getChildAt(b, e), - c = c.concat(this.filterDescendants(a, f)); - return c -}; -mxGraphModel.prototype.getRoot = function(a) { - var b = a || this.root; - if (null != a) - for (; null != a;) b = a, a = this.getParent(a); - return b -}; -mxGraphModel.prototype.setRoot = function(a) { - this.execute(new mxRootChange(this, a)); - return a -}; -mxGraphModel.prototype.rootChanged = function(a) { - var b = this.root; - this.root = a; - this.nextId = 0; - this.cells = null; - this.cellAdded(a); - return b -}; -mxGraphModel.prototype.isRoot = function(a) { - return null != a && this.root == a -}; -mxGraphModel.prototype.isLayer = function(a) { - return this.isRoot(this.getParent(a)) -}; -mxGraphModel.prototype.isAncestor = function(a, b) { - for (; null != b && b != a;) b = this.getParent(b); - return b == a -}; -mxGraphModel.prototype.contains = function(a) { - return this.isAncestor(this.root, a) -}; -mxGraphModel.prototype.getParent = function(a) { - return null != a ? a.getParent() : null -}; -mxGraphModel.prototype.add = function(a, b, c) { - if (b != a && null != a && null != b) { - null == c && (c = this.getChildCount(a)); - var d = a != this.getParent(b); - this.execute(new mxChildChange(this, a, b, c)); - this.maintainEdgeParent && d && this.updateEdgeParents(b) - } - return b -}; -mxGraphModel.prototype.cellAdded = function(a) { - if (null != a) { - null == a.getId() && this.createIds && a.setId(this.createId(a)); - if (null != a.getId()) { - var b = this.getCell(a.getId()); - if (b != a) { - for (; null != b;) a.setId(this.createId(a)), b = this.getCell(a.getId()); - null == this.cells && (this.cells = {}); - this.cells[a.getId()] = a - } - } - mxUtils.isNumeric(a.getId()) && (this.nextId = Math.max(this.nextId, a.getId())); - for (var b = this.getChildCount(a), c = 0; c < b; c++) this.cellAdded(this.getChildAt(a, c)) - } -}; -mxGraphModel.prototype.createId = function(a) { - a = this.nextId; - this.nextId++; - return this.prefix + a + this.postfix -}; -mxGraphModel.prototype.updateEdgeParents = function(a, b) { - b = b || this.getRoot(a); - for (var c = this.getChildCount(a), d = 0; d < c; d++) { - var e = this.getChildAt(a, d); - this.updateEdgeParents(e, b) - } - e = this.getEdgeCount(a); - c = []; - for (d = 0; d < e; d++) c.push(this.getEdgeAt(a, d)); - for (d = 0; d < c.length; d++) e = c[d], this.isAncestor(b, e) && this.updateEdgeParent(e, b) -}; -mxGraphModel.prototype.updateEdgeParent = function(a, b) { - for (var c = this.getTerminal(a, !0), d = this.getTerminal(a, !1), e = null; null != c && !this.isEdge(c) && null != c.geometry && c.geometry.relative;) c = this.getParent(c); - for (; null != d && !this.isEdge(d) && null != d.geometry && d.geometry.relative;) d = this.getParent(d); - if (this.isAncestor(b, c) && this.isAncestor(b, d) && (e = c == d ? this.getParent(c) : this.getNearestCommonAncestor(c, d), null != e && (this.getParent(e) != this.root || this.isAncestor(e, a)) && - this.getParent(a) != e)) { - c = this.getGeometry(a); - if (null != c) { - var f = this.getOrigin(this.getParent(a)), - g = this.getOrigin(e), - d = g.x - f.x, - f = g.y - f.y, - c = c.clone(); - c.translate(-d, -f); - this.setGeometry(a, c) - } - this.add(e, a, this.getChildCount(e)) - } -}; -mxGraphModel.prototype.getOrigin = function(a) { - var b = null; - null != a ? (b = this.getOrigin(this.getParent(a)), this.isEdge(a) || (a = this.getGeometry(a), null != a && (b.x += a.x, b.y += a.y))) : b = new mxPoint; - return b -}; -mxGraphModel.prototype.getNearestCommonAncestor = function(a, b) { - if (null != a && null != b) { - var c = mxCellPath.create(b); - if (null != c && 0 < c.length) { - var d = a, - e = mxCellPath.create(d); - if (c.length < e.length) var d = b, - f = e, - e = c, - c = f; - for (; null != d;) { - f = this.getParent(d); - if (0 == c.indexOf(e + mxCellPath.PATH_SEPARATOR) && null != f) return d; - e = mxCellPath.getParentPath(e); - d = f - } - } - } - return null -}; -mxGraphModel.prototype.remove = function(a) { - a == this.root ? this.setRoot(null) : null != this.getParent(a) && this.execute(new mxChildChange(this, null, a)); - return a -}; -mxGraphModel.prototype.cellRemoved = function(a) { - if (null != a && null != this.cells) { - for (var b = this.getChildCount(a) - 1; 0 <= b; b--) this.cellRemoved(this.getChildAt(a, b)); - null != this.cells && null != a.getId() && delete this.cells[a.getId()] - } -}; -mxGraphModel.prototype.parentForCellChanged = function(a, b, c) { - var d = this.getParent(a); - null != b ? (b != d || d.getIndex(a) != c) && b.insert(a, c) : null != d && (c = d.getIndex(a), d.remove(c)); - !this.contains(d) && null != b ? this.cellAdded(a) : null == b && this.cellRemoved(a); - return d -}; -mxGraphModel.prototype.getChildCount = function(a) { - return null != a ? a.getChildCount() : 0 -}; -mxGraphModel.prototype.getChildAt = function(a, b) { - return null != a ? a.getChildAt(b) : null -}; -mxGraphModel.prototype.getChildren = function(a) { - return null != a ? a.children : null -}; -mxGraphModel.prototype.getChildVertices = function(a) { - return this.getChildCells(a, !0, !1) -}; -mxGraphModel.prototype.getChildEdges = function(a) { - return this.getChildCells(a, !1, !0) -}; -mxGraphModel.prototype.getChildCells = function(a, b, c) { - b = null != b ? b : !1; - c = null != c ? c : !1; - for (var d = this.getChildCount(a), e = [], f = 0; f < d; f++) { - var g = this.getChildAt(a, f); - (!c && !b || c && this.isEdge(g) || b && this.isVertex(g)) && e.push(g) - } - return e -}; -mxGraphModel.prototype.getTerminal = function(a, b) { - return null != a ? a.getTerminal(b) : null -}; -mxGraphModel.prototype.setTerminal = function(a, b, c) { - var d = b != this.getTerminal(a, c); - this.execute(new mxTerminalChange(this, a, b, c)); - this.maintainEdgeParent && d && this.updateEdgeParent(a, this.getRoot()); - return b -}; -mxGraphModel.prototype.setTerminals = function(a, b, c) { - this.beginUpdate(); - try { - this.setTerminal(a, b, !0), this.setTerminal(a, c, !1) - } finally { - this.endUpdate() - } -}; -mxGraphModel.prototype.terminalForCellChanged = function(a, b, c) { - var d = this.getTerminal(a, c); - null != b ? b.insertEdge(a, c) : null != d && d.removeEdge(a, c); - return d -}; -mxGraphModel.prototype.getEdgeCount = function(a) { - return null != a ? a.getEdgeCount() : 0 -}; -mxGraphModel.prototype.getEdgeAt = function(a, b) { - return null != a ? a.getEdgeAt(b) : null -}; -mxGraphModel.prototype.getDirectedEdgeCount = function(a, b, c) { - for (var d = 0, e = this.getEdgeCount(a), f = 0; f < e; f++) { - var g = this.getEdgeAt(a, f); - g != c && this.getTerminal(g, b) == a && d++ - } - return d -}; -mxGraphModel.prototype.getConnections = function(a) { - return this.getEdges(a, !0, !0, !1) -}; -mxGraphModel.prototype.getIncomingEdges = function(a) { - return this.getEdges(a, !0, !1, !1) -}; -mxGraphModel.prototype.getOutgoingEdges = function(a) { - return this.getEdges(a, !1, !0, !1) -}; -mxGraphModel.prototype.getEdges = function(a, b, c, d) { - b = null != b ? b : !0; - c = null != c ? c : !0; - d = null != d ? d : !0; - for (var e = this.getEdgeCount(a), f = [], g = 0; g < e; g++) { - var h = this.getEdgeAt(a, g), - k = this.getTerminal(h, !0), - l = this.getTerminal(h, !1); - (d && k == l || k != l && (b && l == a || c && k == a)) && f.push(h) - } - return f -}; -mxGraphModel.prototype.getEdgesBetween = function(a, b, c) { - c = null != c ? c : !1; - var d = this.getEdgeCount(a), - e = this.getEdgeCount(b), - f = a, - g = d; - e < d && (g = e, f = b); - d = []; - for (e = 0; e < g; e++) { - var h = this.getEdgeAt(f, e), - k = this.getTerminal(h, !0), - l = this.getTerminal(h, !1), - m = l == a && k == b; - (k == a && l == b || !c && m) && d.push(h) - } - return d -}; -mxGraphModel.prototype.getOpposites = function(a, b, c, d) { - c = null != c ? c : !0; - d = null != d ? d : !0; - var e = []; - if (null != a) - for (var f = 0; f < a.length; f++) { - var g = this.getTerminal(a[f], !0), - h = this.getTerminal(a[f], !1); - g == b && null != h && h != b && d ? e.push(h) : h == b && (null != g && g != b && c) && e.push(g) - } - return e -}; -mxGraphModel.prototype.getTopmostCells = function(a) { - for (var b = [], c = 0; c < a.length; c++) { - for (var d = a[c], e = !0, f = this.getParent(d); null != f;) { - if (0 <= mxUtils.indexOf(a, f)) { - e = !1; - break - } - f = this.getParent(f) - } - e && b.push(d) - } - return b -}; -mxGraphModel.prototype.isVertex = function(a) { - return null != a ? a.isVertex() : !1 -}; -mxGraphModel.prototype.isEdge = function(a) { - return null != a ? a.isEdge() : !1 -}; -mxGraphModel.prototype.isConnectable = function(a) { - return null != a ? a.isConnectable() : !1 -}; -mxGraphModel.prototype.getValue = function(a) { - return null != a ? a.getValue() : null -}; -mxGraphModel.prototype.setValue = function(a, b) { - this.execute(new mxValueChange(this, a, b)); - return b -}; -mxGraphModel.prototype.valueForCellChanged = function(a, b) { - return a.valueChanged(b) -}; -mxGraphModel.prototype.getGeometry = function(a, b) { - return null != a ? a.getGeometry() : null -}; -mxGraphModel.prototype.setGeometry = function(a, b) { - b != this.getGeometry(a) && this.execute(new mxGeometryChange(this, a, b)); - return b -}; -mxGraphModel.prototype.geometryForCellChanged = function(a, b) { - var c = this.getGeometry(a); - a.setGeometry(b); - return c -}; -mxGraphModel.prototype.getStyle = function(a) { - return null != a ? a.getStyle() : null -}; -mxGraphModel.prototype.setStyle = function(a, b) { - b != this.getStyle(a) && this.execute(new mxStyleChange(this, a, b)); - return b -}; -mxGraphModel.prototype.styleForCellChanged = function(a, b) { - var c = this.getStyle(a); - a.setStyle(b); - return c -}; -mxGraphModel.prototype.isCollapsed = function(a) { - return null != a ? a.isCollapsed() : !1 -}; -mxGraphModel.prototype.setCollapsed = function(a, b) { - b != this.isCollapsed(a) && this.execute(new mxCollapseChange(this, a, b)); - return b -}; -mxGraphModel.prototype.collapsedStateForCellChanged = function(a, b) { - var c = this.isCollapsed(a); - a.setCollapsed(b); - return c -}; -mxGraphModel.prototype.isVisible = function(a) { - return null != a ? a.isVisible() : !1 -}; -mxGraphModel.prototype.setVisible = function(a, b) { - b != this.isVisible(a) && this.execute(new mxVisibleChange(this, a, b)); - return b -}; -mxGraphModel.prototype.visibleStateForCellChanged = function(a, b) { - var c = this.isVisible(a); - a.setVisible(b); - return c -}; -mxGraphModel.prototype.execute = function(a) { - a.execute(); - this.beginUpdate(); - this.currentEdit.add(a); - this.fireEvent(new mxEventObject(mxEvent.EXECUTE, "change", a)); - this.fireEvent(new mxEventObject(mxEvent.EXECUTED, "change", a)); - 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() { - this.updateLevel--; - 0 == this.updateLevel && this.fireEvent(new mxEventObject(mxEvent.END_EDIT)); - if (!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 a = this.currentEdit; - this.currentEdit = this.createUndoableEdit(); - a.notify(); - this.fireEvent(new mxEventObject(mxEvent.UNDO, - "edit", a)) - } - } finally { - this.endingUpdate = !1 - } - } -}; -mxGraphModel.prototype.createUndoableEdit = function() { - var a = new mxUndoableEdit(this, !0); - a.notify = function() { - a.source.fireEvent(new mxEventObject(mxEvent.CHANGE, "edit", a, "changes", a.changes)); - a.source.fireEvent(new mxEventObject(mxEvent.NOTIFY, "edit", a, "changes", a.changes)) - }; - return a -}; -mxGraphModel.prototype.mergeChildren = function(a, b, c) { - c = null != c ? c : !0; - this.beginUpdate(); - try { - var d = {}; - this.mergeChildrenImpl(a, b, c, d); - for (var e in d) { - var f = d[e], - g = this.getTerminal(f, !0); - null != g && (g = d[mxCellPath.create(g)], this.setTerminal(f, g, !0)); - g = this.getTerminal(f, !1); - null != g && (g = d[mxCellPath.create(g)], this.setTerminal(f, g, !1)) - } - } finally { - this.endUpdate() - } -}; -mxGraphModel.prototype.mergeChildrenImpl = function(a, b, c, d) { - this.beginUpdate(); - try { - for (var e = a.getChildCount(), f = 0; f < e; f++) { - var g = a.getChildAt(f); - if ("function" == typeof g.getId) { - var h = g.getId(), - k = null != h && (!this.isEdge(g) || !c) ? this.getCell(h) : null; - if (null == k) { - var l = g.clone(); - l.setId(h); - l.setTerminal(g.getTerminal(!0), !0); - l.setTerminal(g.getTerminal(!1), !1); - k = b.insert(l); - this.cellAdded(k) - } - d[mxCellPath.create(g)] = k; - this.mergeChildrenImpl(g, k, c, d) - } - } - } finally { - this.endUpdate() - } -}; -mxGraphModel.prototype.getParents = function(a) { - var b = []; - if (null != a) - for (var c = {}, d = 0; d < a.length; d++) { - var e = this.getParent(a[d]); - if (null != e) { - var f = mxCellPath.create(e); - null == c[f] && (c[f] = e, b.push(e)) - } - } - return b -}; -mxGraphModel.prototype.cloneCell = function(a) { - return null != a ? this.cloneCells([a], !0)[0] : null -}; -mxGraphModel.prototype.cloneCells = function(a, b) { - for (var c = {}, d = [], e = 0; e < a.length; e++) null != a[e] ? d.push(this.cloneCellImpl(a[e], c, b)) : d.push(null); - for (e = 0; e < d.length; e++) null != d[e] && this.restoreClone(d[e], a[e], c); - return d -}; -mxGraphModel.prototype.cloneCellImpl = function(a, b, c) { - var d = this.cellCloned(a); - b[mxObjectIdentity.get(a)] = d; - if (c) { - c = this.getChildCount(a); - for (var e = 0; e < c; e++) { - var f = this.cloneCellImpl(this.getChildAt(a, e), b, !0); - d.insert(f) - } - } - return d -}; -mxGraphModel.prototype.cellCloned = function(a) { - return a.clone() -}; -mxGraphModel.prototype.restoreClone = function(a, b, c) { - var d = this.getTerminal(b, !0); - null != d && (d = c[mxObjectIdentity.get(d)], null != d && d.insertEdge(a, !0)); - d = this.getTerminal(b, !1); - null != d && (d = c[mxObjectIdentity.get(d)], null != d && d.insertEdge(a, !1)); - for (var d = this.getChildCount(a), e = 0; e < d; e++) this.restoreClone(this.getChildAt(a, e), this.getChildAt(b, e), c) -}; - -function mxRootChange(a, b) { - this.model = a; - this.previous = this.root = b -} -mxRootChange.prototype.execute = function() { - this.root = this.previous; - this.previous = this.model.rootChanged(this.previous) -}; - -function mxChildChange(a, b, c, d) { - this.model = a; - this.previous = this.parent = b; - this.child = c; - this.previousIndex = this.index = d -} -mxChildChange.prototype.execute = function() { - var a = this.model.getParent(this.child), - b = null != a ? a.getIndex(this.child) : 0; - null == this.previous && this.connect(this.child, !1); - a = this.model.parentForCellChanged(this.child, this.previous, this.previousIndex); - null != this.previous && this.connect(this.child, !0); - this.parent = this.previous; - this.previous = a; - this.index = this.previousIndex; - this.previousIndex = b -}; -mxChildChange.prototype.connect = function(a, b) { - b = null != b ? b : !0; - var c = a.getTerminal(!0), - d = a.getTerminal(!1); - null != c && (b ? this.model.terminalForCellChanged(a, c, !0) : this.model.terminalForCellChanged(a, null, !0)); - null != d && (b ? this.model.terminalForCellChanged(a, d, !1) : this.model.terminalForCellChanged(a, null, !1)); - a.setTerminal(c, !0); - a.setTerminal(d, !1); - c = this.model.getChildCount(a); - for (d = 0; d < c; d++) this.connect(this.model.getChildAt(a, d), b) -}; - -function mxTerminalChange(a, b, c, d) { - this.model = a; - this.cell = b; - this.previous = this.terminal = c; - this.source = d -} -mxTerminalChange.prototype.execute = function() { - this.terminal = this.previous; - this.previous = this.model.terminalForCellChanged(this.cell, this.previous, this.source) -}; - -function mxValueChange(a, b, c) { - this.model = a; - this.cell = b; - this.previous = this.value = c -} -mxValueChange.prototype.execute = function() { - this.value = this.previous; - this.previous = this.model.valueForCellChanged(this.cell, this.previous) -}; - -function mxStyleChange(a, b, c) { - this.model = a; - this.cell = b; - this.previous = this.style = c -} -mxStyleChange.prototype.execute = function() { - this.style = this.previous; - this.previous = this.model.styleForCellChanged(this.cell, this.previous) -}; - -function mxGeometryChange(a, b, c) { - this.model = a; - this.cell = b; - this.previous = this.geometry = c -} -mxGeometryChange.prototype.execute = function() { - this.geometry = this.previous; - this.previous = this.model.geometryForCellChanged(this.cell, this.previous) -}; - -function mxCollapseChange(a, b, c) { - this.model = a; - this.cell = b; - this.previous = this.collapsed = c -} -mxCollapseChange.prototype.execute = function() { - this.collapsed = this.previous; - this.previous = this.model.collapsedStateForCellChanged(this.cell, this.previous) -}; - -function mxVisibleChange(a, b, c) { - this.model = a; - this.cell = b; - this.previous = this.visible = c -} -mxVisibleChange.prototype.execute = function() { - this.visible = this.previous; - this.previous = this.model.visibleStateForCellChanged(this.cell, this.previous) -}; - -function mxCellAttributeChange(a, b, c) { - this.cell = a; - this.attribute = b; - this.previous = this.value = c -} -mxCellAttributeChange.prototype.execute = function() { - var a = this.cell.getAttribute(this.attribute); - null == this.previous ? this.cell.value.removeAttribute(this.attribute) : this.cell.setAttribute(this.attribute, this.previous); - this.previous = a -}; - -function mxCell(a, b, c) { - this.value = a; - this.setGeometry(b); - this.setStyle(c); - if (null != this.onInit) this.onInit() -} -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(a) { - this.id = a -}; -mxCell.prototype.getValue = function() { - return this.value -}; -mxCell.prototype.setValue = function(a) { - this.value = a -}; -mxCell.prototype.valueChanged = function(a) { - var b = this.getValue(); - this.setValue(a); - return b -}; -mxCell.prototype.getGeometry = function() { - return this.geometry -}; -mxCell.prototype.setGeometry = function(a) { - this.geometry = a -}; -mxCell.prototype.getStyle = function() { - return this.style -}; -mxCell.prototype.setStyle = function(a) { - this.style = a -}; -mxCell.prototype.isVertex = function() { - return this.vertex -}; -mxCell.prototype.setVertex = function(a) { - this.vertex = a -}; -mxCell.prototype.isEdge = function() { - return this.edge -}; -mxCell.prototype.setEdge = function(a) { - this.edge = a -}; -mxCell.prototype.isConnectable = function() { - return this.connectable -}; -mxCell.prototype.setConnectable = function(a) { - this.connectable = a -}; -mxCell.prototype.isVisible = function() { - return this.visible -}; -mxCell.prototype.setVisible = function(a) { - this.visible = a -}; -mxCell.prototype.isCollapsed = function() { - return this.collapsed -}; -mxCell.prototype.setCollapsed = function(a) { - this.collapsed = a -}; -mxCell.prototype.getParent = function() { - return this.parent -}; -mxCell.prototype.setParent = function(a) { - this.parent = a -}; -mxCell.prototype.getTerminal = function(a) { - return a ? this.source : this.target -}; -mxCell.prototype.setTerminal = function(a, b) { - b ? this.source = a : this.target = a; - return a -}; -mxCell.prototype.getChildCount = function() { - return null == this.children ? 0 : this.children.length -}; -mxCell.prototype.getIndex = function(a) { - return mxUtils.indexOf(this.children, a) -}; -mxCell.prototype.getChildAt = function(a) { - return null == this.children ? null : this.children[a] -}; -mxCell.prototype.insert = function(a, b) { - null != a && (null == b && (b = this.getChildCount(), a.getParent() == this && b--), a.removeFromParent(), a.setParent(this), null == this.children ? (this.children = [], this.children.push(a)) : - this.children.splice(b, 0, a)); - return a -}; -mxCell.prototype.remove = function(a) { - var b = null; - null != this.children && 0 <= a && (b = this.getChildAt(a), null != b && (this.children.splice(a, 1), b.setParent(null))); - return b -}; -mxCell.prototype.removeFromParent = function() { - if (null != this.parent) { - var a = this.parent.getIndex(this); - this.parent.remove(a) - } -}; -mxCell.prototype.getEdgeCount = function() { - return null == this.edges ? 0 : this.edges.length -}; -mxCell.prototype.getEdgeIndex = function(a) { - return mxUtils.indexOf(this.edges, a) -}; -mxCell.prototype.getEdgeAt = function(a) { - return null == this.edges ? null : this.edges[a] -}; -mxCell.prototype.insertEdge = function(a, b) { - if (null != a && (a.removeFromTerminal(b), a.setTerminal(this, b), null == this.edges || a.getTerminal(!b) != this || 0 > mxUtils.indexOf(this.edges, a))) null == this.edges && (this.edges = []), - this.edges.push(a); - return a -}; -mxCell.prototype.removeEdge = function(a, b) { - if (null != a) { - if (a.getTerminal(!b) != this && null != this.edges) { - var c = this.getEdgeIndex(a); - 0 <= c && this.edges.splice(c, 1) - } - a.setTerminal(null, b) - } - return a -}; -mxCell.prototype.removeFromTerminal = function(a) { - var b = this.getTerminal(a); - null != b && b.removeEdge(this, a) -}; -mxCell.prototype.getAttribute = function(a, b) { - var c = this.getValue(); - return (null != c && c.nodeType == mxConstants.NODETYPE_ELEMENT ? c.getAttribute(a) : null) || b -}; -mxCell.prototype.setAttribute = function(a, b) { - var c = this.getValue(); - null != c && c.nodeType == mxConstants.NODETYPE_ELEMENT && c.setAttribute(a, b) -}; -mxCell.prototype.clone = function() { - var a = mxUtils.clone(this, this.mxTransient); - a.setValue(this.cloneValue()); - return a -}; -mxCell.prototype.cloneValue = function() { - var a = this.getValue(); - null != a && ("function" == typeof a.clone ? a = a.clone() : isNaN(a.nodeType) || (a = a.cloneNode(!0))); - return a -}; - -function mxGeometry(a, b, c, d) { - mxRectangle.call(this, a, b, c, d) -} -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 a = 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 = a - } -}; -mxGeometry.prototype.getTerminalPoint = function(a) { - return a ? this.sourcePoint : this.targetPoint -}; -mxGeometry.prototype.setTerminalPoint = function(a, b) { - b ? this.sourcePoint = a : this.targetPoint = a; - return a -}; -mxGeometry.prototype.translate = function(a, b) { - this.clone(); - this.relative || (this.x += a, this.y += b); - null != this.sourcePoint && (this.sourcePoint.x += a, this.sourcePoint.y += b); - null != this.targetPoint && (this.targetPoint.x += a, this.targetPoint.y += b); - if (this.TRANSLATE_CONTROL_POINTS && null != this.points) - for (var c = this.points.length, d = 0; d < c; d++) { - var e = this.points[d]; - null != e && (e.x += a, e.y += b) - } -}; -var mxCellPath = { - PATH_SEPARATOR: ".", - create: function(a) { - var b = ""; - if (null != a) - for (var c = a.getParent(); null != c;) b = c.getIndex(a) + mxCellPath.PATH_SEPARATOR + b, a = c, c = a.getParent(); - a = b.length; - 1 < a && (b = b.substring(0, a - 1)); - return b - }, - getParentPath: function(a) { - if (null != a) { - var b = a.lastIndexOf(mxCellPath.PATH_SEPARATOR); - if (0 <= b) return a.substring(0, b); - if (0 < a.length) return "" - } - return null - }, - resolve: function(a, b) { - var c = a; - if (null != b) - for (var d = b.split(mxCellPath.PATH_SEPARATOR), e = 0; e < d.length; e++) c = c.getChildAt(parseInt(d[e])); - return c - }, - compare: function(a, b) { - for (var c = Math.min(a.length, b.length), d = 0, e = 0; e < c; e++) - if (a[e] != b[e]) { - 0 == a[e].length || 0 == b[e].length ? d = a[e] == b[e] ? 0 : a[e] > b[e] ? 1 : -1 : (c = parseInt(a[e]), e = parseInt(b[e]), d = c == e ? 0 : c > e ? 1 : -1); - break - } - 0 == d && (c = a.length, e = b.length, c != e && (d = c > e ? 1 : -1)); - return d - } - }, - mxPerimeter = { - RectanglePerimeter: function(a, b, c, d) { - b = a.getCenterX(); - var e = a.getCenterY(), - f = Math.atan2(c.y - e, c.x - b), - g = new mxPoint(0, 0), - h = Math.PI, - k = Math.PI / 2 - f, - l = Math.atan2(a.height, a.width); - f < -h + l || f > h - l ? (g.x = a.x, g.y = e - a.width * - Math.tan(f) / 2) : f < -l ? (g.y = a.y, g.x = b - a.height * Math.tan(k) / 2) : f < l ? (g.x = a.x + a.width, g.y = e + a.width * Math.tan(f) / 2) : (g.y = a.y + a.height, g.x = b + a.height * - Math.tan(k) / 2); - d && (c.x >= a.x && c.x <= a.x + a.width ? g.x = c.x : c.y >= a.y && c.y <= a.y + a.height && (g.y = c.y), c.x < a.x ? g.x = a.x : c.x > a.x + a.width && (g.x = a.x + a.width), c.y < a.y ? g.y = - a.y : c.y > a.y + a.height && (g.y = a.y + a.height)); - return g - }, - EllipsePerimeter: function(a, b, c, d) { - var e = a.x, - f = a.y, - g = a.width / 2, - h = a.height / 2, - k = e + g, - l = f + h; - b = c.x; - c = c.y; - var m = parseInt(b - k), - n = parseInt(c - l); - if (0 == m && 0 != n) return new mxPoint(k, - l + h * n / Math.abs(n)); - if (0 == m && 0 == n) return new mxPoint(b, c); - if (d) { - if (c >= f && c <= f + a.height) return a = c - l, a = Math.sqrt(g * g * (1 - a * a / (h * h))) || 0, b <= e && (a = -a), new mxPoint(k + a, c); - if (b >= e && b <= e + a.width) return a = b - k, a = Math.sqrt(h * h * (1 - a * a / (g * g))) || 0, c <= f && (a = -a), new mxPoint(b, l + a) - } - e = n / m; - l -= e * k; - f = g * g * e * e + h * h; - a = -2 * k * f; - h = Math.sqrt(a * a - 4 * f * (g * g * e * e * k * k + h * h * k * k - g * g * h * h)); - g = (-a + h) / (2 * f); - h = (-a - h) / (2 * f); - k = e * g + l; - l = e * h + l; - e = Math.sqrt(Math.pow(g - b, 2) + Math.pow(k - c, 2)); - b = Math.sqrt(Math.pow(h - b, 2) + Math.pow(l - c, 2)); - f = c = 0; - e < b ? (c = - g, f = k) : (c = h, f = l); - return new mxPoint(c, f) - }, - RhombusPerimeter: function(a, b, c, d) { - b = a.x; - var e = a.y, - f = a.width; - a = a.height; - var g = b + f / 2, - h = e + a / 2, - k = c.x; - c = c.y; - if (g == k) return h > c ? new mxPoint(g, e) : new mxPoint(g, e + a); - if (h == c) return g > k ? new mxPoint(b, h) : new mxPoint(b + f, h); - var l = g, - m = h; - d && (k >= b && k <= b + f ? l = k : c >= e && c <= e + a && (m = c)); - return k < g ? c < h ? mxUtils.intersection(k, c, l, m, g, e, b, h) : mxUtils.intersection(k, c, l, m, g, e + a, b, h) : c < h ? mxUtils.intersection(k, c, l, m, g, e, b + f, h) : mxUtils.intersection( - k, c, l, m, g, e + a, b + f, h) - }, - TrianglePerimeter: function(a, - b, c, d) { - b = null != b ? b.style[mxConstants.STYLE_DIRECTION] : null; - var e = b == mxConstants.DIRECTION_NORTH || b == mxConstants.DIRECTION_SOUTH, - f = a.x, - g = a.y, - h = a.width; - a = a.height; - var k = f + h / 2, - l = g + a / 2, - m = new mxPoint(f, g), - n = new mxPoint(f + h, l), - p = new mxPoint(f, g + a); - b == mxConstants.DIRECTION_NORTH ? (m = p, n = new mxPoint(k, g), p = new mxPoint(f + h, g + a)) : b == mxConstants.DIRECTION_SOUTH ? (n = new mxPoint(k, g + a), p = new mxPoint(f + h, g)) : - b == mxConstants.DIRECTION_WEST && (m = new mxPoint(f + h, g), n = new mxPoint(f, l), p = new mxPoint(f + h, g + a)); - var q = c.x - - k, - s = c.y - l, - q = e ? Math.atan2(q, s) : Math.atan2(s, q), - r = e ? Math.atan2(h, a) : Math.atan2(a, h), - s = !1, - s = b == mxConstants.DIRECTION_NORTH || b == mxConstants.DIRECTION_WEST ? q > -r && q < r : q < -Math.PI + r || q > Math.PI - r, - r = null; - s ? r = d && (e && c.x >= m.x && c.x <= p.x || !e && c.y >= m.y && c.y <= p.y) ? e ? new mxPoint(c.x, m.y) : new mxPoint(m.x, c.y) : b == mxConstants.DIRECTION_NORTH ? new mxPoint(f + h / 2 + - a * Math.tan(q) / 2, g + a) : b == mxConstants.DIRECTION_SOUTH ? new mxPoint(f + h / 2 - a * Math.tan(q) / 2, g) : b == mxConstants.DIRECTION_WEST ? new mxPoint(f + h, g + a / 2 + h * - Math.tan(q) / 2) : new mxPoint(f, - g + a / 2 - h * Math.tan(q) / 2) : (d && (d = new mxPoint(k, l), c.y >= g && c.y <= g + a ? (d.x = e ? k : b == mxConstants.DIRECTION_WEST ? f + h : f, d.y = c.y) : c.x >= f && c.x <= f + - h && (d.x = c.x, d.y = !e ? l : b == mxConstants.DIRECTION_NORTH ? g + a : g), k = d.x, l = d.y), r = e && c.x <= f + h / 2 || !e && c.y <= g + a / 2 ? mxUtils.intersection(c.x, c.y, k, - l, m.x, m.y, n.x, n.y) : mxUtils.intersection(c.x, c.y, k, l, n.x, n.y, p.x, p.y)); - null == r && (r = new mxPoint(k, l)); - return r - } - }; - -function mxPrintPreview(a, b, c, d, e, f, g, h, k) { - this.graph = a; - this.scale = null != b ? b : 1 / a.pageScale; - this.border = null != d ? d : 0; - this.pageFormat = null != c ? c : a.pageFormat; - this.title = null != h ? h : "Printer-friendly version"; - this.x0 = null != e ? e : 0; - this.y0 = null != f ? f : 0; - this.borderColor = g; - this.pageSelector = null != k ? k : !0 -} -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 a = ""; - 8 == document.documentMode && (a = '\x3cmeta http-equiv\x3d"X-UA-Compatible" content\x3d"IE\x3d8"\x3e'); - return a -}; -mxPrintPreview.prototype.open = function(a) { - var b = this.graph.cellRenderer.initializeOverlay, - c = null; - try { - this.printOverlays && (this.graph.cellRenderer.initializeOverlay = function(a, b) { - b.init(a.view.getDrawPane()) - }); - if (null == this.wnd) { - this.wnd = window.open(); - var d = this.wnd.document, - e = this.getDoctype(); - null != e && 0 < e.length && d.writeln(e); - d.writeln("\x3chtml\x3e"); - d.writeln("\x3chead\x3e"); - this.writeHead(d, a); - d.writeln("\x3c/head\x3e"); - d.writeln('\x3cbody class\x3d"mxPage"\x3e'); - mxClient.link("stylesheet", mxClient.basePath + - "/css/common.css", d); - mxClient.IS_VML && (d.namespaces.add("v", "urn:schemas-microsoft-com:vml"), d.namespaces.add("o", "urn:schemas-microsoft-com:office:office"), d.createStyleSheet().cssText = - "v\\:*{behavior:url(#default#VML)}o\\:*{behavior:url(#default#VML)}", mxClient.link("stylesheet", mxClient.basePath + "/css/explorer.css", d)); - var f = this.graph.getGraphBounds().clone(), - g = this.graph.getView().getScale(), - h = g / this.scale, - k = this.graph.getView().getTranslate(); - this.autoOrigin || (this.x0 = -k.x * this.scale, this.y0 = -k.y * this.scale, f.width += f.x, f.height += f.y, f.x = 0, this.border = f.y = 0); - f.width /= h; - f.height /= h; - var l = this.pageFormat.width - 2 * this.border, - m = this.pageFormat.height - 2 * this.border, - n = Math.max(1, Math.ceil((f.width + this.x0) / l)), - p = Math.max(1, Math.ceil((f.height + this.y0) / m)); - this.pageCount = n * p; - var q = mxUtils.bind(this, function() { - if (this.pageSelector && (1 < p || 1 < n)) { - var a = this.createPageSelector(p, n); - d.body.appendChild(a); - if (mxClient.IS_IE) { - a.style.position = "absolute"; - var b = function() { - a.style.top = d.body.scrollTop + - 10 + "px" - }; - mxEvent.addListener(this.wnd, "scroll", function(a) { - b() - }); - mxEvent.addListener(this.wnd, "resize", function(a) { - b() - }) - } - } - }); - a = function(a, b) { - null != this.borderColor && (a.style.borderColor = this.borderColor, a.style.borderStyle = "solid", a.style.borderWidth = "1px"); - a.style.background = "white"; - b && (a.style.pageBreakAfter = "always"); - mxClient.IS_IE ? (d.writeln(a.outerHTML), a.parentNode.removeChild(a)) : (a.parentNode.removeChild(a), d.body.appendChild(a)); - if (b) { - var c = d.createElement("hr"); - c.className = "mxPageBreak"; - d.body.appendChild(c) - } - }; - var s = this.getCoverPages(this.pageFormat.width, this.pageFormat.height); - if (null != s) - for (var r = 0; r < s.length; r++) a(s[r], !0); - for (var t = this.getAppendices(this.pageFormat.width, this.pageFormat.height), r = 0; r < p; r++) - for (var v = r * m / this.scale - this.y0 / this.scale + (f.y - k.y * g) / g, s = 0; s < n; s++) { - if (null == this.wnd) return null; - var w = s * l / this.scale - this.x0 / this.scale + (f.x - k.x * g) / g, - u = r * n + s + 1, - c = this.renderPage(this.pageFormat.width, this.pageFormat.height, mxUtils.bind(this, function(a) { - this.addGraphFragment(-w, -v, this.scale, u, a) - })); - c.setAttribute("id", "mxPage-" + u); - a(c, null != t || r < p - 1 || s < n - 1) - } - if (null != t) - for (r = 0; r < t.length; r++) a(t[r], r < t.length); - d.writeln("\x3c/body\x3e"); - d.writeln("\x3c/html\x3e"); - d.close(); - q(); - mxEvent.release(d.body) - } - this.wnd.focus() - } catch (y) { - null != c && null != c.parentNode && c.parentNode.removeChild(c) - } finally { - this.graph.cellRenderer.initializeOverlay = b - } - return this.wnd -}; -mxPrintPreview.prototype.writeHead = function(a, b) { - null != this.title && a.writeln("\x3ctitle\x3e" + this.title + "\x3c/title\x3e"); - a.writeln('\x3cstyle type\x3d"text/css"\x3e'); - a.writeln("@media print {"); - a.writeln(" table.mxPageSelector { display: none; }"); - a.writeln(" hr.mxPageBreak { display: none; }"); - a.writeln("}"); - a.writeln("@media screen {"); - a.writeln(" table.mxPageSelector { position: fixed; right: 10px; top: 10px;font-family: Arial; font-size:10pt; border: solid 1px darkgray;background: white; border-collapse:collapse; }"); - a.writeln(" table.mxPageSelector td { border: solid 1px gray; padding:4px; }"); - a.writeln(" body.mxPage { background: gray; }"); - a.writeln("}"); - null != b && a.writeln(b); - a.writeln("\x3c/style\x3e") -}; -mxPrintPreview.prototype.createPageSelector = function(a, b) { - var c = this.wnd.document, - d = c.createElement("table"); - d.className = "mxPageSelector"; - d.setAttribute("border", "0"); - for (var e = c.createElement("tbody"), f = 0; f < a; f++) { - for (var g = c.createElement("tr"), h = 0; h < b; h++) { - var k = f * b + h + 1, - l = c.createElement("td"); - if (!mxClient.IS_NS || mxClient.IS_SF || mxClient.IS_GC) { - var m = c.createElement("a"); - m.setAttribute("href", "#mxPage-" + k); - mxUtils.write(m, k, c); - l.appendChild(m) - } else mxUtils.write(l, k, c); - g.appendChild(l) - } - e.appendChild(g) - } - d.appendChild(e); - return d -}; -mxPrintPreview.prototype.renderPage = function(a, b, c) { - var d = document.createElement("div"); - try { - d.style.width = a + "px"; - d.style.height = b + "px"; - d.style.overflow = "hidden"; - d.style.pageBreakInside = "avoid"; - d.style.position = "relative"; - var e = document.createElement("div"); - e.style.top = this.border + "px"; - e.style.left = this.border + "px"; - e.style.width = a - 2 * this.border + "px"; - e.style.height = b - 2 * this.border + "px"; - e.style.overflow = "hidden"; - this.graph.dialect == mxConstants.DIALECT_VML && (e.style.position = "absolute"); - d.appendChild(e); - document.body.appendChild(d); - c(e) - } catch (f) { - throw d.parentNode.removeChild(d), f; - } - return d -}; -mxPrintPreview.prototype.addGraphFragment = function(a, b, c, d, e) { - d = this.graph.getView(); - var f = this.graph.container; - this.graph.container = e; - var g = d.getCanvas(), - h = d.getBackgroundPane(), - k = d.getDrawPane(), - l = d.getOverlayPane(); - this.graph.dialect == mxConstants.DIALECT_SVG ? d.createSvg() : this.graph.dialect == mxConstants.DIALECT_VML ? d.createVml() : d.createHtml(); - var m = d.isEventsEnabled(); - d.setEventsEnabled(!1); - var n = this.graph.isEnabled(); - this.graph.setEnabled(!1); - var p = d.getTranslate(); - d.translate = new mxPoint(a, - b); - a = null; - try { - var q = [this.graph.getModel().getRoot()]; - a = new mxTemporaryCellStates(d, c, q) - } finally { - if (mxClient.IS_IE) d.overlayPane.innerHTML = ""; - else - for (c = e.firstChild; null != c;) q = c.nextSibling, b = c.nodeName.toLowerCase(), "svg" == b ? (c.setAttribute("width", parseInt(e.style.width)), c.setAttribute("height", parseInt(e.style.height))) : - "default" != c.style.cursor && "table" != b && c.parentNode.removeChild(c), c = q; - d.overlayPane.parentNode.removeChild(d.overlayPane); - this.graph.setEnabled(n); - this.graph.container = f; - d.canvas = - g; - d.backgroundPane = h; - d.drawPane = k; - d.overlayPane = l; - d.translate = p; - a.destroy(); - d.setEventsEnabled(m) - } -}; -mxPrintPreview.prototype.getCoverPages = function() { - return null -}; -mxPrintPreview.prototype.getAppendices = function() { - return null -}; -mxPrintPreview.prototype.print = function() { - var a = this.open(); - null != a && a.print() -}; -mxPrintPreview.prototype.close = function() { - null != this.wnd && (this.wnd.close(), this.wnd = null) -}; - -function mxStylesheet() { - this.styles = {}; - this.putDefaultVertexStyle(this.createDefaultVertexStyle()); - this.putDefaultEdgeStyle(this.createDefaultEdgeStyle()) -} -mxStylesheet.prototype.createDefaultVertexStyle = function() { - var a = {}; - a[mxConstants.STYLE_SHAPE] = mxConstants.SHAPE_RECTANGLE; - a[mxConstants.STYLE_PERIMETER] = mxPerimeter.RectanglePerimeter; - a[mxConstants.STYLE_VERTICAL_ALIGN] = mxConstants.ALIGN_MIDDLE; - a[mxConstants.STYLE_ALIGN] = mxConstants.ALIGN_CENTER; - a[mxConstants.STYLE_FILLCOLOR] = "#C3D9FF"; - a[mxConstants.STYLE_STROKECOLOR] = "#6482B9"; - a[mxConstants.STYLE_FONTCOLOR] = "#774400"; - return a -}; -mxStylesheet.prototype.createDefaultEdgeStyle = function() { - var a = {}; - a[mxConstants.STYLE_SHAPE] = mxConstants.SHAPE_CONNECTOR; - a[mxConstants.STYLE_ENDARROW] = mxConstants.ARROW_CLASSIC; - a[mxConstants.STYLE_VERTICAL_ALIGN] = mxConstants.ALIGN_MIDDLE; - a[mxConstants.STYLE_ALIGN] = mxConstants.ALIGN_CENTER; - a[mxConstants.STYLE_STROKECOLOR] = "#6482B9"; - a[mxConstants.STYLE_FONTCOLOR] = "#446299"; - return a -}; -mxStylesheet.prototype.putDefaultVertexStyle = function(a) { - this.putCellStyle("defaultVertex", a) -}; -mxStylesheet.prototype.putDefaultEdgeStyle = function(a) { - this.putCellStyle("defaultEdge", a) -}; -mxStylesheet.prototype.getDefaultVertexStyle = function() { - return this.styles.defaultVertex -}; -mxStylesheet.prototype.getDefaultEdgeStyle = function() { - return this.styles.defaultEdge -}; -mxStylesheet.prototype.putCellStyle = function(a, b) { - this.styles[a] = b -}; -mxStylesheet.prototype.getCellStyle = function(a, b) { - var c = b; - if (null != a && 0 < a.length) - for (var d = a.split(";"), c = null != c && ";" != a.charAt(0) ? mxUtils.clone(c) : {}, e = 0; e < d.length; e++) { - var f = d[e], - g = f.indexOf("\x3d"); - if (0 <= g) { - var h = f.substring(0, g), - f = f.substring(g + 1); - f == mxConstants.NONE ? delete c[h] : mxUtils.isNumeric(f) ? c[h] = parseFloat(f) : c[h] = f - } else if (f = this.styles[f], null != f) - for (h in f) c[h] = f[h] - } - return c -}; - -function mxCellState(a, b, c) { - this.view = a; - this.cell = b; - this.style = c; - this.origin = new mxPoint; - this.absoluteOffset = new mxPoint -} -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(a, b) { - a = a || 0; - b = null != b ? b : new mxRectangle(this.x, this.y, this.width, this.height); - if (null != this.shape && null != this.shape.stencil) { - var c = this.shape.stencil.computeAspect(this.style, b.x, b.y, b.width, b.height); - b.x = c.x; - b.y = c.y; - b.width = this.shape.stencil.w0 * c.width; - b.height = this.shape.stencil.h0 * c.height - } - 0 != a && b.grow(a); - return b -}; -mxCellState.prototype.setAbsoluteTerminalPoint = function(a, b) { - b ? (null == this.absolutePoints && (this.absolutePoints = []), 0 == this.absolutePoints.length ? this.absolutePoints.push(a) : this.absolutePoints[0] = a) : null == this.absolutePoints ? (this.absolutePoints = [], - this.absolutePoints.push(null), this.absolutePoints.push(a)) : 1 == this.absolutePoints.length ? this.absolutePoints.push(a) : this.absolutePoints[this.absolutePoints.length - 1] = a -}; -mxCellState.prototype.setCursor = function(a) { - null != this.shape && this.shape.setCursor(a); - null != this.text && this.text.setCursor(a) -}; -mxCellState.prototype.getVisibleTerminal = function(a) { - a = this.getVisibleTerminalState(a); - return null != a ? a.cell : null -}; -mxCellState.prototype.getVisibleTerminalState = function(a) { - return a ? this.visibleSourceState : this.visibleTargetState -}; -mxCellState.prototype.setVisibleTerminalState = function(a, b) { - b ? this.visibleSourceState = a : this.visibleTargetState = a -}; -mxCellState.prototype.destroy = function() { - this.view.graph.cellRenderer.destroy(this) -}; -mxCellState.prototype.clone = function() { - var a = new mxCellState(this.view, this.cell, this.style); - if (null != this.absolutePoints) { - a.absolutePoints = []; - for (var b = 0; b < this.absolutePoints.length; b++) a.absolutePoints[b] = this.absolutePoints[b].clone() - } - null != this.origin && (a.origin = this.origin.clone()); - null != this.absoluteOffset && (a.absoluteOffset = this.absoluteOffset.clone()); - null != this.boundingBox && (a.boundingBox = this.boundingBox.clone()); - a.terminalDistance = this.terminalDistance; - a.segments = this.segments; - a.length = - this.length; - a.x = this.x; - a.y = this.y; - a.width = this.width; - a.height = this.height; - return a -}; - -function mxGraphSelectionModel(a) { - this.graph = a; - this.cells = [] -} -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(a) { - this.singleSelection = a -}; -mxGraphSelectionModel.prototype.isSelected = function(a) { - return null != a ? 0 <= mxUtils.indexOf(this.cells, a) : !1 -}; -mxGraphSelectionModel.prototype.isEmpty = function() { - return 0 == this.cells.length -}; -mxGraphSelectionModel.prototype.clear = function() { - this.changeSelection(null, this.cells) -}; -mxGraphSelectionModel.prototype.setCell = function(a) { - null != a && this.setCells([a]) -}; -mxGraphSelectionModel.prototype.setCells = function(a) { - if (null != a) { - this.singleSelection && (a = [this.getFirstSelectableCell(a)]); - for (var b = [], c = 0; c < a.length; c++) this.graph.isCellSelectable(a[c]) && b.push(a[c]); - this.changeSelection(b, this.cells) - } -}; -mxGraphSelectionModel.prototype.getFirstSelectableCell = function(a) { - if (null != a) - for (var b = 0; b < a.length; b++) - if (this.graph.isCellSelectable(a[b])) return a[b]; - return null -}; -mxGraphSelectionModel.prototype.addCell = function(a) { - null != a && this.addCells([a]) -}; -mxGraphSelectionModel.prototype.addCells = function(a) { - if (null != a) { - var b = null; - this.singleSelection && (b = this.cells, a = [this.getFirstSelectableCell(a)]); - for (var c = [], d = 0; d < a.length; d++) !this.isSelected(a[d]) && this.graph.isCellSelectable(a[d]) && c.push(a[d]); - this.changeSelection(c, b) - } -}; -mxGraphSelectionModel.prototype.removeCell = function(a) { - null != a && this.removeCells([a]) -}; -mxGraphSelectionModel.prototype.removeCells = function(a) { - if (null != a) { - for (var b = [], c = 0; c < a.length; c++) this.isSelected(a[c]) && b.push(a[c]); - this.changeSelection(null, b) - } -}; -mxGraphSelectionModel.prototype.changeSelection = function(a, b) { - if (null != a && 0 < a.length && null != a[0] || null != b && 0 < b.length && null != b[0]) { - var c = new mxSelectionChange(this, a, b); - c.execute(); - var d = new mxUndoableEdit(this, !1); - d.add(c); - this.fireEvent(new mxEventObject(mxEvent.UNDO, "edit", d)) - } -}; -mxGraphSelectionModel.prototype.cellAdded = function(a) { - null != a && !this.isSelected(a) && this.cells.push(a) -}; -mxGraphSelectionModel.prototype.cellRemoved = function(a) { - null != a && (a = mxUtils.indexOf(this.cells, a), 0 <= a && this.cells.splice(a, 1)) -}; - -function mxSelectionChange(a, b, c) { - this.selectionModel = a; - this.added = null != b ? b.slice() : null; - this.removed = null != c ? c.slice() : null -} -mxSelectionChange.prototype.execute = function() { - var a = mxLog.enter("mxSelectionChange.execute"); - window.status = mxResources.get(this.selectionModel.updatingSelectionResource) || this.selectionModel.updatingSelectionResource; - if (null != this.removed) - for (var b = 0; b < this.removed.length; b++) this.selectionModel.cellRemoved(this.removed[b]); - if (null != this.added) - for (b = 0; b < this.added.length; b++) this.selectionModel.cellAdded(this.added[b]); - b = this.added; - this.added = this.removed; - this.removed = b; - window.status = mxResources.get(this.selectionModel.doneResource) || - this.selectionModel.doneResource; - mxLog.leave("mxSelectionChange.execute", a); - this.selectionModel.fireEvent(new mxEventObject(mxEvent.CHANGE, "added", this.added, "removed", this.removed)) -}; - -function mxCellEditor(a) { - this.graph = a -} -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(a) { - this.focusLost() - })); - mxEvent.addListener(this.textarea, "keydown", mxUtils.bind(this, function(a) { - mxEvent.isConsumed(a) || - (113 == a.keyCode || this.graph.isEnterStopsCellEditing() && 13 == a.keyCode && !mxEvent.isControlDown(a) && !mxEvent.isShiftDown(a) ? (this.graph.stopEditing(!1), mxEvent.consume(a)) : - 27 == a.keyCode ? (this.graph.stopEditing(!0), mxEvent.consume(a)) : (this.clearOnChange && (this.clearOnChange = !1, this.textarea.value = ""), this.setModified(!0))) - })); - mxEvent.addListener(this.textarea, "keypress", mxUtils.bind(this, function(a) { - this.autoSize && !mxEvent.isConsumed(a) && setTimeout(mxUtils.bind(this, function() { - this.resize() - }), 0) - })) -}; -mxCellEditor.prototype.resize = function() { - if (null != this.textDiv) { - var a = this.graph.getView().getState(this.editingCell), - b = this.graph.isLabelClipped(a.cell), - c = this.graph.isWrapping(a.cell); - if (this.graph.getModel().isEdge(a.cell)) this.bounds.x = a.absoluteOffset.x, this.bounds.y = a.absoluteOffset.y, this.bounds.width = 0, this.bounds.height = 0; - else if (null != this.bounds) { - this.bounds.x = a.x; - this.bounds.y = a.y; - this.bounds.width = a.width; - this.bounds.height = a.height; - var d = mxUtils.getValue(a.style, mxConstants.STYLE_LABEL_POSITION, - mxConstants.ALIGN_CENTER); - d == mxConstants.ALIGN_LEFT ? this.bounds.x -= a.width : d == mxConstants.ALIGN_RIGHT && (this.bounds.x += a.width); - d = mxUtils.getValue(a.style, mxConstants.STYLE_VERTICAL_LABEL_POSITION, mxConstants.ALIGN_MIDDLE); - d == mxConstants.ALIGN_TOP ? this.bounds.y -= a.height : d == mxConstants.ALIGN_BOTTOM && (this.bounds.y += a.height) - } - d = this.textarea.value; - if ("\n" == d.charAt(d.length - 1) || "" == d) d += "\x26nbsp;"; - d = mxUtils.htmlEntities(d, !1); - c ? (this.textDiv.style.whiteSpace = "normal", this.textDiv.style.width = this.bounds.width + - "px") : d = d.replace(/ /g, "\x26nbsp;"); - d = d.replace(/\n/g, "\x3cbr/\x3e"); - this.textDiv.innerHTML = d; - var d = this.textDiv.offsetWidth + 30, - e = this.textDiv.offsetHeight + 16, - d = Math.max(d, 40), - e = Math.max(e, 20); - b && (d = Math.min(this.bounds.width - 4, d), e = Math.min(this.bounds.height, e)); - var f = null != a.text ? a.text.margin : null; - null == f && (f = mxUtils.getValue(a.style, mxConstants.STYLE_ALIGN, mxConstants.ALIGN_CENTER), a = mxUtils.getValue(a.style, mxConstants.STYLE_VERTICAL_ALIGN, mxConstants.ALIGN_MIDDLE), f = - mxUtils.getAlignmentAsPoint(f, - a)); - if (null != f) { - if (b || !c) this.textarea.style.left = Math.max(0, Math.round(this.bounds.x - f.x * this.bounds.width + f.x * d) - 3) + "px"; - this.textarea.style.top = Math.max(0, Math.round(this.bounds.y - f.y * this.bounds.height + f.y * e) + 4) + "px" - } - if (b || !c) this.textarea.style.width = d + "px"; - this.textarea.style.height = e + "px" - } -}; -mxCellEditor.prototype.isModified = function() { - return this.modified -}; -mxCellEditor.prototype.setModified = function(a) { - this.modified = a -}; -mxCellEditor.prototype.focusLost = function() { - this.stopEditing(!this.graph.isInvokesStopCellEditing()) -}; -mxCellEditor.prototype.startEditing = function(a, b) { - null == this.textarea && this.init(); - this.stopEditing(!0); - var c = this.graph.getView().getState(a); - if (null != c) { - this.editingCell = a; - this.trigger = b; - this.textNode = null; - null != c.text && this.isHideLabel(c) && (this.textNode = c.text.node, this.textNode.style.visibility = "hidden"); - var d = this.graph.getView().scale, - d = mxUtils.getValue(c.style, mxConstants.STYLE_FONTSIZE, mxConstants.DEFAULT_FONTSIZE) * d, - e = mxUtils.getValue(c.style, mxConstants.STYLE_FONTFAMILY, mxConstants.DEFAULT_FONTFAMILY), - f = mxUtils.getValue(c.style, mxConstants.STYLE_FONTCOLOR, "black"), - g = mxUtils.getValue(c.style, mxConstants.STYLE_ALIGN, mxConstants.ALIGN_LEFT), - h = (mxUtils.getValue(c.style, mxConstants.STYLE_FONTSTYLE, 0) & mxConstants.FONT_BOLD) == mxConstants.FONT_BOLD, - k = (mxUtils.getValue(c.style, mxConstants.STYLE_FONTSTYLE, 0) & mxConstants.FONT_ITALIC) == mxConstants.FONT_ITALIC, - l = (mxUtils.getValue(c.style, mxConstants.STYLE_FONTSTYLE, 0) & mxConstants.FONT_UNDERLINE) == mxConstants.FONT_UNDERLINE; - this.textarea.style.fontSize = Math.round(d) + - "px"; - this.textarea.style.lineHeight = Math.round(d * mxConstants.LINE_HEIGHT) + "px"; - this.textarea.style.fontFamily = e; - this.textarea.style.textAlign = g; - this.textarea.style.color = f; - this.textarea.style.fontWeight = h ? "bold" : "normal"; - this.textarea.style.fontStyle = k ? "italic" : ""; - this.textarea.style.textDecoration = l ? "underline" : ""; - this.textarea.style.overflow = "auto"; - this.textarea.style.outline = "none"; - this.bounds = d = this.getEditorBounds(c); - this.textarea.style.left = d.x + "px"; - this.textarea.style.top = d.y + "px"; - this.textarea.style.width = - d.width + "px"; - this.textarea.style.height = d.height + "px"; - this.textarea.style.zIndex = 5; - c = this.getInitialValue(c, b); - null == c || 0 == c.length ? (c = this.getEmptyLabelText(), this.clearOnChange = !0) : this.clearOnChange = !1; - this.setModified(!1); - this.textarea.value = c; - 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 a = document.createElement("div"), - b = a.style; - b.position = "absolute"; - b.whiteSpace = "nowrap"; - b.visibility = "hidden"; - b.display = mxClient.IS_QUIRKS ? "inline" : "inline-block"; - b.zoom = "1"; - b.verticalAlign = "top"; - b.lineHeight = this.textarea.style.lineHeight; - b.fontSize = this.textarea.style.fontSize; - b.fontFamily = this.textarea.style.fontFamily; - b.fontWeight = this.textarea.style.fontWeight; - b.textAlign = this.textarea.style.textAlign; - b.fontStyle = this.textarea.style.fontStyle; - b.textDecoration = this.textarea.style.textDecoration; - return a -}; -mxCellEditor.prototype.stopEditing = function(a) { - null != this.editingCell && (null != this.textNode && (this.textNode.style.visibility = "visible", this.textNode = null), !a && 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(a, b) { - return this.graph.getEditingValue(a.cell, b) -}; -mxCellEditor.prototype.getCurrentValue = function() { - return this.textarea.value.replace(/\r/g, "") -}; -mxCellEditor.prototype.isHideLabel = function(a) { - return !0 -}; -mxCellEditor.prototype.getMinimumSize = function(a) { - var b = this.graph.getView().scale; - return new mxRectangle(0, 0, null == a.text ? 30 : a.text.size * b + 20, "left" == this.textarea.style.textAlign ? 120 : 40) -}; -mxCellEditor.prototype.getEditorBounds = function(a) { - var b = this.graph.getModel().isEdge(a.cell), - c = this.graph.getView().scale, - d = this.getMinimumSize(a), - e = d.width, - d = d.height, - f = parseInt(a.style[mxConstants.STYLE_SPACING] || 2) * c, - g = parseInt(a.style[mxConstants.STYLE_SPACING_TOP] || 0) * c + f, - h = parseInt(a.style[mxConstants.STYLE_SPACING_RIGHT] || 0) * c + f, - k = parseInt(a.style[mxConstants.STYLE_SPACING_BOTTOM] || 0) * c + f, - c = parseInt(a.style[mxConstants.STYLE_SPACING_LEFT] || 0) * c + f, - h = new mxRectangle(a.x, a.y, Math.max(e, a.width - - c - h), Math.max(d, a.height - g - k)); - b ? (h.x = a.absoluteOffset.x, h.y = a.absoluteOffset.y, null != a.text && null != a.text.boundingBox && (0 < a.text.boundingBox.x && (h.x = a.text.boundingBox.x), 0 < a.text.boundingBox.y && (h.y = - a.text.boundingBox.y))) : null != a.text && null != a.text.boundingBox && (h.x = Math.min(h.x, a.text.boundingBox.x), h.y = Math.min(h.y, a.text.boundingBox.y)); - h.x += c; - h.y += g; - null != a.text && null != a.text.boundingBox && (b ? (h.width = Math.max(e, a.text.boundingBox.width), h.height = Math.max(d, a.text.boundingBox.height)) : (h.width = - Math.max(h.width, a.text.boundingBox.width), h.height = Math.max(h.height, a.text.boundingBox.height))); - this.graph.getModel().isVertex(a.cell) && (b = mxUtils.getValue(a.style, mxConstants.STYLE_LABEL_POSITION, mxConstants.ALIGN_CENTER), b == mxConstants.ALIGN_LEFT ? h.x -= a.width : b == - mxConstants.ALIGN_RIGHT && (h.x += a.width), b = mxUtils.getValue(a.style, mxConstants.STYLE_VERTICAL_LABEL_POSITION, mxConstants.ALIGN_MIDDLE), b == mxConstants.ALIGN_TOP ? h.y -= a.height : - b == mxConstants.ALIGN_BOTTOM && (h.y += a.height)); - return h -}; -mxCellEditor.prototype.getEmptyLabelText = function(a) { - 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) -}; - -function mxCellRenderer() {} -mxCellRenderer.prototype.defaultEdgeShape = mxConnector; -mxCellRenderer.prototype.defaultVertexShape = mxRectangleShape; -mxCellRenderer.prototype.defaultTextShape = mxText; -mxCellRenderer.prototype.legacyControlPosition = !0; -mxCellRenderer.prototype.defaultShapes = {}; -mxCellRenderer.registerShape = function(a, b) { - mxCellRenderer.prototype.defaultShapes[a] = b -}; -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(a, b) { - var c = a.view.graph.getModel(); - if (null != a.view.graph.container && null == a.shape && a.cell != a.view.currentRoot && (c.isVertex(a.cell) || c.isEdge(a.cell))) - if (this.createShape(a), null != a.shape && (null == b || b)) this.initializeShape(a), a.view.graph.ordered || c.isEdge(a.cell) ? a.invalidOrder = !0 : a.view.graph.keepEdgesInForeground && - null != this.firstEdge && (this.firstEdge.parentNode == a.shape.node.parentNode ? this.insertState(a, this.firstEdge) : this.firstEdge = null), a.shape.scale = - a.view.scale, this.createCellOverlays(a), this.installListeners(a) -}; -mxCellRenderer.prototype.initializeShape = function(a) { - a.shape.init(a.view.getDrawPane()) -}; -mxCellRenderer.prototype.getPreviousStateInContainer = function(a, b) { - for (var c = null, d = a.view.graph, e = d.getModel(), f = a.cell, g = e.getParent(f); null != g && null == c;) c = this.findPreviousStateInContainer(d, g, f, b), f = g, g = e.getParent(f); - return c -}; -mxCellRenderer.prototype.findPreviousStateInContainer = function(a, b, c, d) { - var e = null, - f = a.getModel(); - for (c = null != c ? b.getIndex(c) - 1 : f.getChildCount(b) - 1; 0 <= c && null == e; c--) e = this.findPreviousStateInContainer(a, f.getChildAt(b, c), null, d); - if (null == e && (e = a.view.getState(b), null != e && (null == e.shape || null == e.shape.node || e.shape.node.parentNode != d))) e = null; - return e -}; -mxCellRenderer.prototype.order = function(a) { - var b = a.shape.node.parentNode, - c = this.getPreviousStateInContainer(a, b), - d = b.firstChild; - null != c && (d = c.shape.node, null != c.text && (null != c.text.node && c.text.node.parentNode == b) && (d = c.text.node), d = d.nextSibling); - this.insertState(a, d) -}; -mxCellRenderer.prototype.orderEdge = function(a) { - var b = a.view, - c = b.graph.getModel(); - if (b.graph.keepEdgesInForeground) { - if (null == this.firstEdge || null == this.firstEdge.parentNode || this.firstEdge.parentNode != a.shape.node.parentNode) this.firstEdge = a.shape.node - } else if (b.graph.keepEdgesInBackground) { - var d = a.shape.node, - e = d.parentNode, - c = c.getParent(a.cell), - b = b.getState(c), - e = null != b && null != b.shape && null != b.shape.node ? b.shape.node.nextSibling : e.firstChild; - null != e && e != d && this.insertState(a, e) - } -}; -mxCellRenderer.prototype.insertState = function(a, b) { - a.shape.node.parentNode.insertBefore(a.shape.node, b); - null != a.text && (null != a.text.node && a.text.node.parentNode == a.shape.node.parentNode) && a.shape.node.parentNode.insertBefore(a.text.node, a.shape.node.nextSibling) -}; -mxCellRenderer.prototype.createShape = function(a) { - if (null != a.style) { - var b = mxStencilRegistry.getStencil(a.style[mxConstants.STYLE_SHAPE]); - null != b ? a.shape = new mxShape(b) : (b = this.getShapeConstructor(a), a.shape = new b); - a.shape.points = a.absolutePoints; - a.shape.bounds = new mxRectangle(a.x, a.y, a.width, a.height); - a.shape.dialect = a.view.graph.dialect; - this.configureShape(a) - } -}; -mxCellRenderer.prototype.getShape = function(a) { - return null != a ? mxCellRenderer.prototype.defaultShapes[a] : null -}; -mxCellRenderer.prototype.getShapeConstructor = function(a) { - var b = this.getShape(a.style[mxConstants.STYLE_SHAPE]); - null == b && (b = a.view.graph.getModel().isEdge(a.cell) ? this.defaultEdgeShape : this.defaultVertexShape); - return b -}; -mxCellRenderer.prototype.configureShape = function(a) { - a.shape.apply(a); - a.shape.image = a.view.graph.getImage(a); - a.shape.indicatorShape = this.getShape(a.view.graph.getIndicatorShape(a)); - a.shape.indicatorColor = a.view.graph.getIndicatorColor(a); - a.shape.indicatorGradientColor = a.view.graph.getIndicatorGradientColor(a); - a.shape.indicatorDirection = a.style[mxConstants.STYLE_INDICATOR_DIRECTION]; - a.shape.indicatorImage = a.view.graph.getIndicatorImage(a); - this.postConfigureShape(a) -}; -mxCellRenderer.prototype.postConfigureShape = function(a) { - null != a.shape && (this.resolveColor(a, "indicatorColor", mxConstants.STYLE_FILLCOLOR), this.resolveColor(a, "indicatorGradientColor", mxConstants.STYLE_GRADIENTCOLOR), this.resolveColor(a, - "fill", mxConstants.STYLE_FILLCOLOR), this.resolveColor(a, "stroke", mxConstants.STYLE_STROKECOLOR), this.resolveColor(a, "gradient", mxConstants.STYLE_GRADIENTCOLOR)) -}; -mxCellRenderer.prototype.resolveColor = function(a, b, c) { - var d = a.shape[b], - e = a.view.graph, - f = null; - "inherit" == d ? f = e.model.getParent(a.cell) : "swimlane" == d ? (f = null != e.model.getTerminal(a.cell, !1) ? e.model.getTerminal(a.cell, !1) : a.cell, f = e.getSwimlane(f), c = e.swimlaneIndicatorColorAttribute) : - "indicated" == d && (a.shape[b] = a.shape.indicatorColor); - null != f && (d = e.getView().getState(f), a.shape[b] = null, null != d && (a.shape[b] = null != d.shape && "indicatorColor" != b ? d.shape[b] : d.style[c])) -}; -mxCellRenderer.prototype.getLabelValue = function(a) { - return a.view.graph.getLabel(a.cell) -}; -mxCellRenderer.prototype.createLabel = function(a, b) { - var c = a.view.graph; - c.getModel().isEdge(a.cell); - if (0 < a.style[mxConstants.STYLE_FONTSIZE] || null == a.style[mxConstants.STYLE_FONTSIZE]) { - var d = c.isHtmlLabel(a.cell) || null != b && mxUtils.isNode(b); - a.text = new this.defaultTextShape(b, new mxRectangle, a.style[mxConstants.STYLE_ALIGN] || mxConstants.ALIGN_CENTER, c.getVerticalAlign(a), a.style[mxConstants.STYLE_FONTCOLOR], a.style[ - mxConstants.STYLE_FONTFAMILY], a.style[mxConstants.STYLE_FONTSIZE], a.style[mxConstants.STYLE_FONTSTYLE], - a.style[mxConstants.STYLE_SPACING], a.style[mxConstants.STYLE_SPACING_TOP], a.style[mxConstants.STYLE_SPACING_RIGHT], a.style[mxConstants.STYLE_SPACING_BOTTOM], a.style[mxConstants.STYLE_SPACING_LEFT], - a.style[mxConstants.STYLE_HORIZONTAL], a.style[mxConstants.STYLE_LABEL_BACKGROUNDCOLOR], a.style[mxConstants.STYLE_LABEL_BORDERCOLOR], c.isWrapping(a.cell) && c.isHtmlLabel(a.cell), c.isLabelClipped( - a.cell), a.style[mxConstants.STYLE_OVERFLOW], a.style[mxConstants.STYLE_LABEL_PADDING]); - a.text.opacity = mxUtils.getValue(a.style, - mxConstants.STYLE_TEXT_OPACITY, 100); - a.text.dialect = d ? mxConstants.DIALECT_STRICTHTML : a.view.graph.dialect; - a.text.state = a; - this.initializeLabel(a); - var e = !1, - f = function(b) { - var d = a; - if (mxClient.IS_TOUCH || e) d = mxEvent.getClientX(b), b = mxEvent.getClientY(b), b = mxUtils.convertPoint(c.container, d, b), d = c.view.getState(c.getCellAt(b.x, b.y)); - return d - }; - mxEvent.addGestureListeners(a.text.node, mxUtils.bind(this, function(b) { - this.isLabelEvent(a, b) && (c.fireMouseEvent(mxEvent.MOUSE_DOWN, new mxMouseEvent(b, a)), e = c.dialect != - mxConstants.DIALECT_SVG && "IMG" == mxEvent.getSource(b).nodeName) - }), mxUtils.bind(this, function(b) { - this.isLabelEvent(a, b) && c.fireMouseEvent(mxEvent.MOUSE_MOVE, new mxMouseEvent(b, f(b))) - }), mxUtils.bind(this, function(b) { - this.isLabelEvent(a, b) && (c.fireMouseEvent(mxEvent.MOUSE_UP, new mxMouseEvent(b, f(b))), e = !1) - })); - mxEvent.addListener(a.text.node, "dblclick", mxUtils.bind(this, function(b) { - this.isLabelEvent(a, b) && (c.dblClick(b, a.cell), mxEvent.consume(b)) - })) - } -}; -mxCellRenderer.prototype.initializeLabel = function(a) { - var b = a.view.graph; - a.text.dialect != mxConstants.DIALECT_SVG && (mxClient.IS_SVG && mxClient.NO_FO ? a.text.init(b.container) : mxUtils.isVml(a.view.getDrawPane()) && (null != a.shape.label ? a.text.init(a.shape.label) : - a.text.init(a.shape.node))); - null == a.text.node && (a.text.init(a.view.getDrawPane()), null != a.shape && null != a.text && a.shape.node.parentNode.insertBefore(a.text.node, a.shape.node.nextSibling)) -}; -mxCellRenderer.prototype.createCellOverlays = function(a) { - var b = a.view.graph.getCellOverlays(a.cell), - c = null; - if (null != b) - for (var c = new mxDictionary, d = 0; d < b.length; d++) { - var e = null != a.overlays ? a.overlays.remove(b[d]) : null; - null == e && (e = new mxImageShape(new mxRectangle, b[d].image.src), e.dialect = a.view.graph.dialect, e.preserveImageAspect = !1, e.overlay = b[d], this.initializeOverlay(a, e), this.installCellOverlayListeners( - a, b[d], e), null != b[d].cursor && (e.node.style.cursor = b[d].cursor)); - c.put(b[d], e) - } - null != a.overlays && - a.overlays.visit(function(a, b) { - b.destroy() - }); - a.overlays = c -}; -mxCellRenderer.prototype.initializeOverlay = function(a, b) { - b.init(a.view.getOverlayPane()) -}; -mxCellRenderer.prototype.installCellOverlayListeners = function(a, b, c) { - var d = a.view.graph; - mxEvent.addListener(c.node, "click", function(c) { - d.isEditing() && d.stopEditing(!d.isInvokesStopCellEditing()); - b.fireEvent(new mxEventObject(mxEvent.CLICK, "event", c, "cell", a.cell)) - }); - mxEvent.addGestureListeners(c.node, function(a) { - mxEvent.consume(a) - }, function(b) { - d.fireMouseEvent(mxEvent.MOUSE_MOVE, new mxMouseEvent(b, a)) - }); - mxClient.IS_TOUCH && mxEvent.addListener(c.node, "touchend", function(c) { - b.fireEvent(new mxEventObject(mxEvent.CLICK, - "event", c, "cell", a.cell)) - }) -}; -mxCellRenderer.prototype.createControl = function(a) { - var b = a.view.graph, - c = b.getFoldingImage(a); - if (b.foldingEnabled && null != c) { - if (null == a.control) { - var d = new mxRectangle(0, 0, c.width, c.height); - a.control = new mxImageShape(d, c.src); - a.control.preserveImageAspect = !1; - a.control.dialect = b.dialect; - this.initControl(a, a.control, !0, function(c) { - if (b.isEnabled()) { - var d = !b.isCellCollapsed(a.cell); - b.foldCells(d, !1, [a.cell]); - mxEvent.consume(c) - } - }) - } - } else null != a.control && (a.control.destroy(), a.control = null) -}; -mxCellRenderer.prototype.initControl = function(a, b, c, d) { - var e = a.view.graph; - e.isHtmlLabel(a.cell) && mxClient.NO_FO && e.dialect == mxConstants.DIALECT_SVG ? (b.dialect = mxConstants.DIALECT_PREFERHTML, b.init(e.container), b.node.style.zIndex = 1) : b.init(a.view.getOverlayPane()); - b = b.innerNode || b.node; - d && (e.isEnabled() && (b.style.cursor = "pointer"), mxEvent.addListener(b, "click", d)); - c && mxEvent.addGestureListeners(b, function(b) { - e.fireMouseEvent(mxEvent.MOUSE_DOWN, new mxMouseEvent(b, a)); - mxEvent.consume(b) - }, function(b) { - e.fireMouseEvent(mxEvent.MOUSE_MOVE, - new mxMouseEvent(b, a)) - }); - return b -}; -mxCellRenderer.prototype.isShapeEvent = function(a, b) { - return !0 -}; -mxCellRenderer.prototype.isLabelEvent = function(a, b) { - return !0 -}; -mxCellRenderer.prototype.installListeners = function(a) { - var b = a.view.graph, - c = function(c) { - var d = a; - if (b.dialect != mxConstants.DIALECT_SVG && "IMG" == mxEvent.getSource(c).nodeName || mxClient.IS_TOUCH) d = mxEvent.getClientX(c), c = mxEvent.getClientY(c), c = mxUtils.convertPoint(b.container, - d, c), d = b.view.getState(b.getCellAt(c.x, c.y)); - return d - }, - d = !1; - mxEvent.addListener(a.shape.node, "gesturestart", mxUtils.bind(this, function(a) { - b.lastTouchTime = 0; - d = !0; - mxEvent.consume(a) - })); - mxEvent.addGestureListeners(a.shape.node, mxUtils.bind(this, - function(c) { - this.isShapeEvent(a, c) && !d ? b.fireMouseEvent(mxEvent.MOUSE_DOWN, new mxMouseEvent(c, null != a.shape && mxEvent.getSource(c) == a.shape.content ? null : a)) : d && mxEvent.consume(c) - }), mxUtils.bind(this, function(e) { - this.isShapeEvent(a, e) && !d ? b.fireMouseEvent(mxEvent.MOUSE_MOVE, new mxMouseEvent(e, null != a.shape && mxEvent.getSource(e) == a.shape.content ? null : c(e))) : d && mxEvent.consume( - e) - }), mxUtils.bind(this, function(e) { - this.isShapeEvent(a, e) && !d ? b.fireMouseEvent(mxEvent.MOUSE_UP, new mxMouseEvent(e, null != a.shape && - mxEvent.getSource(e) == a.shape.content ? null : c(e))) : d && mxEvent.consume(e) - })); - var e = mxClient.IS_TOUCH ? "gestureend" : "dblclick"; - mxEvent.addListener(a.shape.node, e, mxUtils.bind(this, function(c) { - d = !1; - "gestureend" == e ? (b.lastTouchTime = 0, b.gestureEnabled && (b.handleGesture(a, c), mxEvent.consume(c))) : this.isShapeEvent(a, c) && (b.dblClick(c, null != a.shape && mxEvent.getSource( - c) == a.shape.content ? null : a.cell), mxEvent.consume(c)) - })) -}; -mxCellRenderer.prototype.redrawLabel = function(a, b) { - var c = this.getLabelValue(a); - if (null == a.text && null != c && (mxUtils.isNode(c) || 0 < c.length)) this.createLabel(a, c); - else if (null != a.text && (null == c || 0 == c.length)) a.text.destroy(), a.text = null; - if (null != a.text) { - var d = a.view.graph, - e = d.isWrapping(a.cell), - d = d.isLabelClipped(a.cell), - f = this.getLabelBounds(a); - if (b || a.text.value != c || a.text.isWrapping != e || a.text.isClipping != d || a.text.scale != a.view.scale || !a.text.bounds.equals(f)) a.text.value = c, a.text.bounds = f, a.text.scale = - this.getTextScale(a), a.text.isWrapping = e, a.text.isClipping = d, a.text.redraw() - } -}; -mxCellRenderer.prototype.getTextScale = function(a) { - return a.view.scale -}; -mxCellRenderer.prototype.getLabelBounds = function(a) { - var b = a.view.graph, - c = a.view.scale, - d = b.getModel().isEdge(a.cell), - e = new mxRectangle(a.absoluteOffset.x, a.absoluteOffset.y); - a.text.updateMargin(); - d ? (d = a.text.getSpacing(), e.x += d.x * c, e.y += d.y * c, b = b.getCellGeometry(a.cell), null != b && (e.width = Math.max(0, a.text.margin.x * b.width * c - a.text.spacingLeft * c - a.text.spacingRight * - c), e.height = Math.max(0, a.text.margin.y * b.height * c - a.text.spacingTop * c - a.text.spacingBottom * c))) : (a.text.isPaintBoundsInverted() && (d = e.x, - e.x = e.y, e.y = d), e.x += a.x, e.y += a.y, e.width = Math.max(1, a.width), e.height = Math.max(1, a.height), b.isSwimlane(a.cell) && (b = b.getStartSize(a.cell), 0 < b.width ? (d = Math.min( - e.width, b.width * c), a.shape.flipH && (e.x += e.width - d), e.width = d) : 0 < b.height && (d = Math.min(e.height, b.height * c), a.shape.flipV && (e.y += e.height - d), e.height = d)), - this.rotateLabelBounds(a, e)); - return e -}; -mxCellRenderer.prototype.rotateLabelBounds = function(a, b) { - if (a.text.isPaintBoundsInverted()) { - var c = (a.width - a.height) / 2; - b.x += c; - b.y -= c; - c = b.width; - b.width = b.height; - b.height = c - } - b.x -= a.text.margin.x * b.width; - b.y -= a.text.margin.y * b.height; - if ("fill" != a.style[mxConstants.STYLE_OVERFLOW]) { - var c = a.view.scale, - d = a.text.getSpacing(); - b.x += d.x * c; - b.y += d.y * c; - b.width = Math.max(0, b.width - a.text.spacingLeft * c - a.text.spacingRight * c); - b.height = Math.max(0, b.height - a.text.spacingTop * c - a.text.spacingBottom * c) - } - var e = a.text.getTextRotation(); - if (0 != e && (null != a && a.view.graph.model.isVertex(a.cell)) && (c = a.getCenterX(), d = a.getCenterY(), b.x != c || b.y != d)) e *= Math.PI / 180, pt = mxUtils.getRotatedPoint(new mxPoint(b.x, - b.y), Math.cos(e), Math.sin(e), new mxPoint(c, d)), b.x = pt.x, b.y = pt.y -}; -mxCellRenderer.prototype.redrawCellOverlays = function(a, b) { - this.createCellOverlays(a); - if (null != a.overlays) { - var c = mxUtils.mod(mxUtils.getValue(a.style, mxConstants.STYLE_ROTATION, 0), 90), - d = mxUtils.toRadians(c), - e = Math.cos(d), - f = Math.sin(d); - a.overlays.visit(function(d, h) { - var k = h.overlay.getBounds(a); - if (!a.view.graph.getModel().isEdge(a.cell) && null != a.shape && 0 != c) { - var l = k.getCenterX(), - m = k.getCenterY(), - m = mxUtils.getRotatedPoint(new mxPoint(l, m), e, f, new mxPoint(a.getCenterX(), a.getCenterY())), - l = m.x, - m = m.y; - k.x = - Math.round(l - k.width / 2); - k.y = Math.round(m - k.height / 2) - } - if (b || null == h.bounds || h.scale != a.view.scale || !h.bounds.equals(k)) h.bounds = k, h.scale = a.view.scale, h.redraw() - }) - } -}; -mxCellRenderer.prototype.redrawControl = function(a, b) { - if (null != a.control) { - var c = this.getControlBounds(a), - d = this.legacyControlPosition ? mxUtils.getValue(a.style, mxConstants.STYLE_ROTATION, 0) : a.shape.getTextRotation(), - e = a.view.scale; - if (b || a.control.scale != e || !a.control.bounds.equals(c) || a.control.rotation != d) a.control.rotation = d, a.control.bounds = c, a.control.scale = e, a.control.redraw() - } -}; -mxCellRenderer.prototype.getControlBounds = function(a) { - if (null != a.control) { - var b = a.control.scale, - c = a.control.bounds.width / b, - b = a.control.bounds.height / b, - d = a.view.scale, - e = a.getCenterX(), - f = a.getCenterY(); - if (!a.view.graph.getModel().isEdge(a.cell) && (e = a.x + c * d, f = a.y + b * d, null != a.shape)) { - var g = a.shape.getShapeRotation(); - if (this.legacyControlPosition) g = mxUtils.getValue(a.style, mxConstants.STYLE_ROTATION, 0); - else if (a.shape.isPaintBoundsInverted()) var h = (a.width - a.height) / 2, - e = e + h, - f = f - h; - 0 != g && (h = mxUtils.toRadians(g), - g = Math.cos(h), h = Math.sin(h), f = mxUtils.getRotatedPoint(new mxPoint(e, f), g, h, new mxPoint(a.getCenterX(), a.getCenterY())), e = f.x, f = f.y) - } - return a.view.graph.getModel().isEdge(a.cell), new mxRectangle(Math.round(e - c / 2 * d), Math.round(f - b / 2 * d), Math.round(c * d), Math.round(b * d)) - } - return null -}; -mxCellRenderer.prototype.redraw = function(a, b, c) { - if (null != a.shape) { - var d = !1; - a.view.graph.getModel().isEdge(a.cell); - reconfigure = null != b ? b : !1; - this.createControl(a); - if (a.orderChanged || a.invalidOrder) a.view.graph.ordered ? this.order(a) : this.orderEdge(a); - if (a.orderChanged || !mxUtils.equalEntries(a.shape.style, a.style)) this.configureShape(a), b = !0; - delete a.invalidOrder; - delete a.orderChanged; - if (b || null == a.shape.bounds || a.shape.scale != a.view.scale || !a.shape.bounds.equals(a) || !mxUtils.equalPoints(a.shape.points, - a.absolutePoints)) d = !0, a.shape.points = null != a.absolutePoints ? a.absolutePoints.slice() : null, a.shape.bounds = new mxRectangle(a.x, a.y, a.width, a.height), a.shape.scale = a.view - .scale, null == c || c ? a.shape.redraw() : a.shape.updateBoundingBox(); - if (null == c || c) this.redrawLabel(a, d), this.redrawCellOverlays(a, d), this.redrawControl(a, d) - } -}; -mxCellRenderer.prototype.destroy = function(a) { - null != a.shape && (null != a.text && (a.text.destroy(), a.text = null), null != a.overlays && (a.overlays.visit(function(a, c) { - c.destroy() - }), a.overlays = null), null != a.control && (a.control.destroy(), a.control = null), a.shape.destroy(), a.shape = null) -}; -var mxEdgeStyle = { - EntityRelation: function(a, b, c, d, e) { - var f = a.view, - g = f.graph; - d = mxUtils.getValue(a.style, mxConstants.STYLE_SEGMENT, mxConstants.ENTITY_SEGMENT) * f.scale; - var h = a.absolutePoints, - k = h[0], - l = h[h.length - 1], - h = !1; - if (null != k) b = new mxCellState, b.x = k.x, b.y = k.y; - else if (null != b) { - var m = mxUtils.getPortConstraints(b, a, !0, mxConstants.DIRECTION_MASK_NONE); - m != mxConstants.DIRECTION_MASK_NONE ? h = m == mxConstants.DIRECTION_MASK_WEST : (k = g.getCellGeometry(b.cell), k.relative ? h = 0.5 >= k.x : null != c && (h = c.x + c.width < b.x)) - } else return; - k = !0; - null != l ? (c = new mxCellState, c.x = l.x, c.y = l.y) : null != c && (m = mxUtils.getPortConstraints(c, a, !1, mxConstants.DIRECTION_MASK_NONE), m != mxConstants.DIRECTION_MASK_NONE ? k = m == - mxConstants.DIRECTION_MASK_WEST : (a = g.getCellGeometry(c.cell), a.relative ? k = 0.5 >= a.x : null != b && (k = b.x + b.width < c.x))); - null != b && null != c && (a = h ? b.x : b.x + b.width, b = f.getRoutingCenterY(b), g = k ? c.x : c.x + c.width, c = f.getRoutingCenterY(c), f = new mxPoint(a + (h ? -d : d), b), l = new mxPoint( - g + (k ? -d : d), c), h == k ? (d = h ? Math.min(a, g) - d : Math.max(a, g) + d, e.push(new mxPoint(d, - b)), e.push(new mxPoint(d, c))) : (f.x < l.x == h ? (d = b + (c - b) / 2, e.push(f), e.push(new mxPoint(f.x, d)), e.push(new mxPoint(l.x, d))) : e.push(f), e.push(l))) - }, - Loop: function(a, b, c, d, e) { - if (null != b) { - c = a.view; - var f = c.graph; - d = null != d && 0 < d.length ? d[0] : null; - null != d && (d = c.transformControlPoint(a, d), mxUtils.contains(b, d.x, d.y) && (d = null)); - var g = 0, - h = 0, - k = 0, - l = 0, - f = mxUtils.getValue(a.style, mxConstants.STYLE_SEGMENT, f.gridSize) * c.scale; - a = mxUtils.getValue(a.style, mxConstants.STYLE_DIRECTION, mxConstants.DIRECTION_WEST); - a == mxConstants.DIRECTION_NORTH || - a == mxConstants.DIRECTION_SOUTH ? (g = c.getRoutingCenterX(b), h = f) : (k = c.getRoutingCenterY(b), l = f); - null == d || d.x < b.x || d.x > b.x + b.width ? null != d ? (g = d.x, l = Math.max(Math.abs(k - d.y), l)) : a == mxConstants.DIRECTION_NORTH ? k = b.y - 2 * h : a == mxConstants.DIRECTION_SOUTH ? - k = b.y + b.height + 2 * h : g = a == mxConstants.DIRECTION_EAST ? b.x - 2 * l : b.x + b.width + 2 * l : null != d && (g = c.getRoutingCenterX(b), h = Math.max(Math.abs(g - d.x), l), k = - d.y, l = 0); - e.push(new mxPoint(g - h, k - l)); - e.push(new mxPoint(g + h, k + l)) - } - }, - ElbowConnector: function(a, b, c, d, e) { - var f = null != - d && 0 < d.length ? d[0] : null, - g = !1, - h = !1; - if (null != b && null != c) - if (null != f) var k = Math.min(b.x, c.x), - l = Math.max(b.x + b.width, c.x + c.width), - h = Math.min(b.y, c.y), - m = Math.max(b.y + b.height, c.y + c.height), - f = a.view.transformControlPoint(a, f), - g = f.y < h || f.y > m, - h = f.x < k || f.x > l; - else k = Math.max(b.x, c.x), l = Math.min(b.x + b.width, c.x + c.width), g = k == l, g || (h = Math.max(b.y, c.y), m = Math.min(b.y + b.height, c.y + c.height), h = h == m); - !h && (g || a.style[mxConstants.STYLE_ELBOW] == mxConstants.ELBOW_VERTICAL) ? mxEdgeStyle.TopToBottom(a, b, c, d, e) : mxEdgeStyle.SideToSide(a, - b, c, d, e) - }, - SideToSide: function(a, b, c, d, e) { - var f = a.view; - d = null != d && 0 < d.length ? d[0] : null; - var g = a.absolutePoints, - h = g[0], - g = g[g.length - 1]; - null != d && (d = f.transformControlPoint(a, d)); - null != h && (b = new mxCellState, b.x = h.x, b.y = h.y); - null != g && (c = new mxCellState, c.x = g.x, c.y = g.y); - null != b && null != c && (a = Math.max(b.x, c.x), h = Math.min(b.x + b.width, c.x + c.width), a = null != d ? d.x : h + (a - h) / 2, h = f.getRoutingCenterY(b), f = f.getRoutingCenterY(c), - null != d && (d.y >= b.y && d.y <= b.y + b.height && (h = d.y), d.y >= c.y && d.y <= c.y + c.height && (f = d.y)), !mxUtils.contains(c, - a, h) && !mxUtils.contains(b, a, h) && e.push(new mxPoint(a, h)), !mxUtils.contains(c, a, f) && !mxUtils.contains(b, a, f) && e.push(new mxPoint(a, f)), 1 == e.length && (null != d ? ! - mxUtils.contains(c, a, d.y) && !mxUtils.contains(b, a, d.y) && e.push(new mxPoint(a, d.y)) : (f = Math.max(b.y, c.y), b = Math.min(b.y + b.height, c.y + c.height), e.push(new mxPoint(a, - f + (b - f) / 2))))) - }, - TopToBottom: function(a, b, c, d, e) { - var f = a.view; - d = null != d && 0 < d.length ? d[0] : null; - var g = a.absolutePoints, - h = g[0], - g = g[g.length - 1]; - null != d && (d = f.transformControlPoint(a, d)); - null != - h && (b = new mxCellState, b.x = h.x, b.y = h.y); - null != g && (c = new mxCellState, c.x = g.x, c.y = g.y); - null != b && null != c && (h = Math.max(b.y, c.y), g = Math.min(b.y + b.height, c.y + c.height), a = f.getRoutingCenterX(b), null != d && (d.x >= b.x && d.x <= b.x + b.width) && (a = d.x), h = - null != d ? d.y : g + (h - g) / 2, !mxUtils.contains(c, a, h) && !mxUtils.contains(b, a, h) && e.push(new mxPoint(a, h)), a = null != d && d.x >= c.x && d.x <= c.x + c.width ? d.x : f.getRoutingCenterX( - c), !mxUtils.contains(c, a, h) && !mxUtils.contains(b, a, h) && e.push(new mxPoint(a, h)), 1 == e.length && (null != d && 1 == - e.length ? !mxUtils.contains(c, d.x, h) && !mxUtils.contains(b, d.x, h) && e.push(new mxPoint(d.x, h)) : (f = Math.max(b.x, c.x), b = Math.min(b.x + b.width, c.x + c.width), e.push(new mxPoint( - f + (b - f) / 2, h))))) - }, - SegmentConnector: function(a, b, c, d, e) { - var f = a.absolutePoints, - g = !0, - h = null, - k = f[0]; - null == k && null != b ? k = new mxPoint(a.view.getRoutingCenterX(b), a.view.getRoutingCenterY(b)) : null != k && (k = k.clone()); - var l = f.length - 1; - if (null != d && 0 < d.length) { - for (var h = a.view.transformControlPoint(a, d[0]), m = b, n = f[0], p = !1, q = !1, p = h, s = d.length, r = - 0; 2 > r; r++) { - var t = null != n && n.x == p.x, - v = null != n && n.y == p.y, - w = null != m && p.y >= m.y && p.y <= m.y + m.height, - m = null != m && p.x >= m.x && p.x <= m.x + m.width, - p = v || null == n && w, - q = t || null == n && m; - if (null != n && !v && !t && (w || m)) { - g = w ? !1 : !0; - break - } - if (q || p) { - g = p; - 1 == r && (g = 0 == d.length % 2 ? p : q); - break - } - m = c; - n = f[l]; - p = a.view.transformControlPoint(a, d[s - 1]) - } - g && (null != f[0] && f[0].y != h.y || null == f[0] && null != b && (h.y < b.y || h.y > b.y + b.height)) ? e.push(new mxPoint(k.x, h.y)) : !g && (null != f[0] && f[0].x != h.x || null == f[ - 0] && null != b && (h.x < b.x || h.x > b.x + b.width)) && e.push(new mxPoint(h.x, - k.y)); - g ? k.y = h.y : k.x = h.x; - for (r = 0; r < d.length; r++) g = !g, h = a.view.transformControlPoint(a, d[r]), g ? k.y = h.y : k.x = h.x, e.push(k.clone()) - } else h = k, g = !0; - k = f[l]; - null == k && null != c && (k = new mxPoint(a.view.getRoutingCenterX(c), a.view.getRoutingCenterY(c))); - g && (null != f[l] && f[l].y != h.y || null == f[l] && null != c && (h.y < c.y || h.y > c.y + c.height)) ? e.push(new mxPoint(k.x, h.y)) : !g && (null != f[l] && f[l].x != h.x || null == f[l] && - null != c && (h.x < c.x || h.x > c.x + c.width)) && e.push(new mxPoint(h.x, k.y)); - if (null == f[0] && null != b) - for (; 1 < e.length && mxUtils.contains(b, - e[1].x, e[1].y);) e = e.splice(1, 1); - if (null == f[l] && null != c) - for (; 1 < e.length && mxUtils.contains(c, e[e.length - 1].x, e[e.length - 1].y);) e = e.splice(e.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(a, b, c, d, e) { - var f = a.view.graph, - g = null == b ? !1 : f.getModel().isEdge(b.cell), - f = null == c ? !1 : f.getModel().isEdge(c.cell); - if (null != d && 0 < d.length || g || f) mxEdgeStyle.SegmentConnector(a, b, c, d, e); - else { - d = a.absolutePoints; - var h = d[0], - k = d[d.length - 1]; - d = null != b ? b.x : h.x; - var g = null != b ? b.y : h.y, - l = null != b ? b.width : - 1, - m = null != b ? b.height : 1, - n = null != c ? c.x : k.x, - p = null != c ? c.y : k.y, - q = null != c ? c.width : 1, - s = null != c ? c.height : 1, - f = a.view.scale * mxEdgeStyle.orthBuffer, - r = [mxConstants.DIRECTION_MASK_ALL, mxConstants.DIRECTION_MASK_ALL]; - null != b && (r[0] = mxUtils.getPortConstraints(b, a, !0, mxConstants.DIRECTION_MASK_ALL)); - null != c && (r[1] = mxUtils.getPortConstraints(c, a, !1, mxConstants.DIRECTION_MASK_ALL)); - a = [0, 0]; - d = [ - [d, g, l, m], - [n, p, q, s] - ]; - for (l = 0; 2 > l; l++) mxEdgeStyle.limits[l][1] = d[l][0] - f, mxEdgeStyle.limits[l][2] = d[l][1] - f, mxEdgeStyle.limits[l][4] = - d[l][0] + d[l][2] + f, mxEdgeStyle.limits[l][8] = d[l][1] + d[l][3] + f; - l = d[0][0] + d[0][2] / 2 - (d[1][0] + d[1][2] / 2); - m = d[0][1] + d[0][3] / 2 - (d[1][1] + d[1][3] / 2); - g = 0; - 0 > l ? g = 0 > m ? 2 : 1 : 0 >= m && (g = 3, 0 == l && (g = 2)); - m = null; - null != b && (m = h); - b = [ - [0.5, 0.5], - [0.5, 0.5] - ]; - for (l = 0; 2 > l; l++) null != m && (b[l][0] = (m.x - d[l][0]) / d[l][2], 0.01 > b[l][0] ? a[l] = mxConstants.DIRECTION_MASK_WEST : 0.99 < b[l][0] && (a[l] = mxConstants.DIRECTION_MASK_EAST), - b[l][1] = (m.y - d[l][1]) / d[l][3], 0.01 > b[l][1] ? a[l] = mxConstants.DIRECTION_MASK_NORTH : 0.99 < b[l][1] && (a[l] = mxConstants.DIRECTION_MASK_SOUTH)), - m = null, null != c && (m = k); - l = d[0][1] - (d[1][1] + d[1][3]); - m = d[0][0] - (d[1][0] + d[1][2]); - n = d[1][1] - (d[0][1] + d[0][3]); - p = d[1][0] - (d[0][0] + d[0][2]); - mxEdgeStyle.vertexSeperations[1] = Math.max(m - 2 * f, 0); - mxEdgeStyle.vertexSeperations[2] = Math.max(l - 2 * f, 0); - mxEdgeStyle.vertexSeperations[4] = Math.max(n - 2 * f, 0); - mxEdgeStyle.vertexSeperations[3] = Math.max(p - 2 * f, 0); - c = []; - h = []; - k = []; - h[0] = m >= p ? mxConstants.DIRECTION_MASK_WEST : mxConstants.DIRECTION_MASK_EAST; - k[0] = l >= n ? mxConstants.DIRECTION_MASK_NORTH : mxConstants.DIRECTION_MASK_SOUTH; - h[1] = mxUtils.reversePortConstraints(h[0]); - k[1] = mxUtils.reversePortConstraints(k[0]); - m = m >= p ? m : p; - n = l >= n ? l : n; - p = [ - [0, 0], - [0, 0] - ]; - q = !1; - for (l = 0; 2 > l; l++) 0 == a[l] && (0 == (h[l] & r[l]) && (h[l] = mxUtils.reversePortConstraints(h[l])), 0 == (k[l] & r[l]) && (k[l] = mxUtils.reversePortConstraints(k[l])), p[l][0] = k[l], - p[l][1] = h[l]); - n > 2 * f && m > 2 * f && (0 < (h[0] & r[0]) && 0 < (k[1] & r[1]) ? (p[0][0] = h[0], p[0][1] = k[0], p[1][0] = k[1], p[1][1] = h[1], q = !0) : 0 < (k[0] & r[0]) && 0 < (h[1] & r[1]) && (p[0] - [0] = k[0], p[0][1] = h[0], p[1][0] = h[1], p[1][1] = k[1], q = !0)); - n > 2 * f && !q && - (p[0][0] = k[0], p[0][1] = h[0], p[1][0] = k[1], p[1][1] = h[1], q = !0); - m > 2 * f && !q && (p[0][0] = h[0], p[0][1] = k[0], p[1][0] = h[1], p[1][1] = k[1]); - for (l = 0; 2 > l; l++) - if (0 == a[l] && (0 == (p[l][0] & r[l]) && (p[l][0] = p[l][1]), c[l] = p[l][0] & r[l], c[l] |= (p[l][1] & r[l]) << 8, c[l] |= (p[1 - l][l] & r[l]) << 16, c[l] |= (p[1 - l][1 - l] & r[l]) << - 24, 0 == (c[l] & 15) && (c[l] <<= 8), 0 == (c[l] & 3840) && (c[l] = c[l] & 15 | c[l] >> 8), 0 == (c[l] & 983040) && (c[l] = c[l] & 65535 | (c[l] & 251658240) >> 8), a[l] = c[l] & 15, - r[l] == mxConstants.DIRECTION_MASK_WEST || r[l] == mxConstants.DIRECTION_MASK_NORTH || r[l] == - mxConstants.DIRECTION_MASK_EAST || r[l] == mxConstants.DIRECTION_MASK_SOUTH)) a[l] = r[l]; - l = a[0] == mxConstants.DIRECTION_MASK_EAST ? 3 : a[0]; - r = a[1] == mxConstants.DIRECTION_MASK_EAST ? 3 : a[1]; - l -= g; - r -= g; - 1 > l && (l += 4); - 1 > r && (r += 4); - r = mxEdgeStyle.routePatterns[l - 1][r - 1]; - mxEdgeStyle.wayPoints1[0][0] = d[0][0]; - mxEdgeStyle.wayPoints1[0][1] = d[0][1]; - switch (a[0]) { - case mxConstants.DIRECTION_MASK_WEST: - mxEdgeStyle.wayPoints1[0][0] -= f; - mxEdgeStyle.wayPoints1[0][1] += b[0][1] * d[0][3]; - break; - case mxConstants.DIRECTION_MASK_SOUTH: - mxEdgeStyle.wayPoints1[0][0] += - b[0][0] * d[0][2]; - mxEdgeStyle.wayPoints1[0][1] += d[0][3] + f; - break; - case mxConstants.DIRECTION_MASK_EAST: - mxEdgeStyle.wayPoints1[0][0] += d[0][2] + f; - mxEdgeStyle.wayPoints1[0][1] += b[0][1] * d[0][3]; - break; - case mxConstants.DIRECTION_MASK_NORTH: - mxEdgeStyle.wayPoints1[0][0] += b[0][0] * d[0][2], mxEdgeStyle.wayPoints1[0][1] -= f - } - f = 0; - h = c = 0 < (a[0] & (mxConstants.DIRECTION_MASK_EAST | mxConstants.DIRECTION_MASK_WEST)) ? 0 : 1; - for (l = k = 0; l < r.length; l++) { - k = r[l] & 15; - s = k == mxConstants.DIRECTION_MASK_EAST ? 3 : k; - s += g; - 4 < s && (s -= 4); - m = mxEdgeStyle.dirVectors[s - - 1]; - k = 0 < s % 2 ? 0 : 1; - k != c && (f++, mxEdgeStyle.wayPoints1[f][0] = mxEdgeStyle.wayPoints1[f - 1][0], mxEdgeStyle.wayPoints1[f][1] = mxEdgeStyle.wayPoints1[f - 1][1]); - var t = 0 < (r[l] & mxEdgeStyle.TARGET_MASK), - q = 0 < (r[l] & mxEdgeStyle.SOURCE_MASK), - n = (r[l] & mxEdgeStyle.SIDE_MASK) >> 5, - n = n << g; - 15 < n && (n >>= 4); - p = 0 < (r[l] & mxEdgeStyle.CENTER_MASK); - (q || t) && 9 > n ? (s = 0, q = q ? 0 : 1, s = p && 0 == k ? d[q][0] + b[q][0] * d[q][2] : p ? d[q][1] + b[q][1] * d[q][3] : mxEdgeStyle.limits[q][n], 0 == k ? (n = (s - mxEdgeStyle.wayPoints1[ - f][0]) * m[0], 0 < n && (mxEdgeStyle.wayPoints1[f][0] += - m[0] * n)) : (n = (s - mxEdgeStyle.wayPoints1[f][1]) * m[1], 0 < n && (mxEdgeStyle.wayPoints1[f][1] += m[1] * n))) : p && (mxEdgeStyle.wayPoints1[f][0] += m[0] * Math.abs(mxEdgeStyle.vertexSeperations[ - s] / 2), mxEdgeStyle.wayPoints1[f][1] += m[1] * Math.abs(mxEdgeStyle.vertexSeperations[s] / 2)); - 0 < f && mxEdgeStyle.wayPoints1[f][k] == mxEdgeStyle.wayPoints1[f - 1][k] ? f-- : c = k - } - for (l = 0; l <= f && !(l == f && ((0 < (a[1] & (mxConstants.DIRECTION_MASK_EAST | mxConstants.DIRECTION_MASK_WEST)) ? 0 : 1) == h ? 0 : 1) != (f + 1) % 2); l++) e.push(new mxPoint( - mxEdgeStyle.wayPoints1[l][0], - mxEdgeStyle.wayPoints1[l][1])) - } - }, - getRoutePattern: function(a, b, c, d) { - var e = a[0] == mxConstants.DIRECTION_MASK_EAST ? 3 : a[0]; - a = a[1] == mxConstants.DIRECTION_MASK_EAST ? 3 : a[1]; - e -= b; - a -= b; - 1 > e && (e += 4); - 1 > a && (a += 4); - b = routePatterns[e - 1][a - 1]; - if (0 == c || 0 == d) null != inlineRoutePatterns[e - 1][a - 1] && (b = inlineRoutePatterns[e - 1][a - 1]); - return b - } - }, - mxStyleRegistry = { - values: [], - putValue: function(a, b) { - mxStyleRegistry.values[a] = b - }, - getValue: function(a) { - return mxStyleRegistry.values[a] - }, - getName: function(a) { - for (var b in mxStyleRegistry.values) - if (mxStyleRegistry.values[b] == - a) return b; - return null - } - }; -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); - -function mxGraphView(a) { - this.graph = a; - this.translate = new mxPoint; - this.graphBounds = new mxRectangle; - this.states = new mxDictionary -} -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(a) { - this.graphBounds = a -}; -mxGraphView.prototype.getBounds = function(a) { - var b = null; - if (null != a && 0 < a.length) - for (var c = this.graph.getModel(), d = 0; d < a.length; d++) - if (c.isVertex(a[d]) || c.isEdge(a[d])) { - var e = this.getState(a[d]); - null != e && (null == b ? b = new mxRectangle(e.x, e.y, e.width, e.height) : b.add(e)) - } - return b -}; -mxGraphView.prototype.setCurrentRoot = function(a) { - if (this.currentRoot != a) { - var b = new mxCurrentRootChange(this, a); - b.execute(); - var c = new mxUndoableEdit(this, !1); - c.add(b); - this.fireEvent(new mxEventObject(mxEvent.UNDO, "edit", c)); - this.graph.sizeDidChange() - } - return a -}; -mxGraphView.prototype.scaleAndTranslate = function(a, b, c) { - var d = this.scale, - e = new mxPoint(this.translate.x, this.translate.y); - if (this.scale != a || this.translate.x != b || this.translate.y != c) this.scale = a, this.translate.x = b, this.translate.y = c, this.isEventsEnabled() && (this.revalidate(), this.graph.sizeDidChange()); - this.fireEvent(new mxEventObject(mxEvent.SCALE_AND_TRANSLATE, "scale", a, "previousScale", d, "translate", this.translate, "previousTranslate", e)) -}; -mxGraphView.prototype.getScale = function() { - return this.scale -}; -mxGraphView.prototype.setScale = function(a) { - var b = this.scale; - this.scale != a && (this.scale = a, this.isEventsEnabled() && (this.revalidate(), this.graph.sizeDidChange())); - this.fireEvent(new mxEventObject(mxEvent.SCALE, "scale", a, "previousScale", b)) -}; -mxGraphView.prototype.getTranslate = function() { - return this.translate -}; -mxGraphView.prototype.setTranslate = function(a, b) { - var c = new mxPoint(this.translate.x, this.translate.y); - if (this.translate.x != a || this.translate.y != b) this.translate.x = a, this.translate.y = b, this.isEventsEnabled() && (this.revalidate(), this.graph.sizeDidChange()); - this.fireEvent(new mxEventObject(mxEvent.TRANSLATE, "translate", this.translate, "previousTranslate", c)) -}; -mxGraphView.prototype.refresh = function() { - null != this.currentRoot && this.clear(); - this.revalidate() -}; -mxGraphView.prototype.revalidate = function() { - this.invalidate(); - this.validate() -}; -mxGraphView.prototype.clear = function(a, b, c) { - var d = this.graph.getModel(); - a = a || d.getRoot(); - b = null != b ? b : !1; - c = null != c ? c : !0; - this.removeState(a); - if (c && (b || a != this.currentRoot)) { - c = d.getChildCount(a); - for (var e = 0; e < c; e++) this.clear(d.getChildAt(a, e), b) - } else this.invalidate(a) -}; -mxGraphView.prototype.invalidate = function(a, b, c, d) { - var e = this.graph.getModel(); - a = a || e.getRoot(); - b = null != b ? b : !0; - c = null != c ? c : !0; - d = null != d ? d : !1; - var f = this.getState(a); - null != f && (f.invalid = !0, d && (f.orderChanged = !0)); - if (b) - for (var g = e.getChildCount(a), f = 0; f < g; f++) { - var h = e.getChildAt(a, f); - this.invalidate(h, b, c, d) - } - if (c) { - d = e.getEdgeCount(a); - for (f = 0; f < d; f++) this.invalidate(e.getEdgeAt(a, f), b, c) - } -}; -mxGraphView.prototype.validate = function(a) { - var b = mxLog.enter("mxGraphView.validate"); - window.status = mxResources.get(this.updatingDocumentResource) || this.updatingDocumentResource; - var c = null; - if (this.optimizeVmlReflows && null != this.canvas && null == this.textDiv && (8 == document.documentMode || mxClient.IS_QUIRKS)) { - c = this.canvas.style.display; - this.canvas.style.display = "none"; - var d = document.createElement("div"); - d.style.position = "absolute"; - d.style.whiteSpace = "nowrap"; - d.style.visibility = "hidden"; - d.style.display = mxClient.IS_QUIRKS ? - "inline" : "inline-block"; - d.style.zoom = "1"; - document.body.appendChild(d); - this.textDiv = d - } - a = a || (null != this.currentRoot ? this.currentRoot : this.graph.getModel().getRoot()); - this.validateBounds(null, a); - a = this.validatePoints(null, a); - null == a && (a = new mxRectangle); - this.setGraphBounds(a); - this.validateBackground(); - null != c && (this.canvas.style.display = c, document.body.removeChild(this.textDiv), this.textDiv = null); - window.status = mxResources.get(this.doneResource) || this.doneResource; - mxLog.leave("mxGraphView.validate", b) -}; -mxGraphView.prototype.createBackgroundPageShape = function(a) { - return new mxRectangleShape(a, "white", "black") -}; -mxGraphView.prototype.validateBackground = function() { - var a = this.graph.getBackgroundImage(); - if (null != a) { - if (null == this.backgroundImage || this.backgroundImage.image != a.src) { - null != this.backgroundImage && this.backgroundImage.destroy(); - var b = new mxRectangle(0, 0, 1, 1); - this.backgroundImage = new mxImageShape(b, a.src); - this.backgroundImage.dialect = this.graph.dialect; - this.backgroundImage.init(this.backgroundPane); - this.backgroundImage.redraw() - } - this.redrawBackgroundImage(this.backgroundImage, a) - } else null != this.backgroundImage && - (this.backgroundImage.destroy(), this.backgroundImage = null); - this.graph.pageVisible ? (b = this.getBackgroundPageBounds(), null == this.backgroundPageShape ? (this.backgroundPageShape = this.createBackgroundPageShape(b), 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(a) { - this.graph.dblClick(a) - })), mxEvent.addGestureListeners(this.backgroundPageShape.node, mxUtils.bind(this, function(a) { - this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN, new mxMouseEvent(a)) - }), mxUtils.bind(this, function(a) { - null != this.graph.tooltipHandler && this.graph.tooltipHandler.isHideOnHover() && this.graph.tooltipHandler.hide(); - this.graph.isMouseDown && !mxEvent.isConsumed(a) && this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE, new mxMouseEvent(a)) - }), mxUtils.bind(this, function(a) { - this.graph.fireMouseEvent(mxEvent.MOUSE_UP, - new mxMouseEvent(a)) - }))) : (this.backgroundPageShape.scale = this.scale, this.backgroundPageShape.bounds = b, this.backgroundPageShape.redraw())) : null != this.backgroundPageShape && (this.backgroundPageShape.destroy(), - this.backgroundPageShape = null) -}; -mxGraphView.prototype.getBackgroundPageBounds = function() { - var a = this.graph.pageFormat, - b = this.scale * this.graph.pageScale; - return new mxRectangle(this.scale * this.translate.x, this.scale * this.translate.y, a.width * b, a.height * b) -}; -mxGraphView.prototype.redrawBackgroundImage = function(a, b) { - a.scale = this.scale; - a.bounds.x = this.scale * this.translate.x; - a.bounds.y = this.scale * this.translate.y; - a.bounds.width = this.scale * b.width; - a.bounds.height = this.scale * b.height; - a.redraw() -}; -mxGraphView.prototype.validateBounds = function(a, b) { - var c = this.graph.getModel(), - d = this.getState(b, !0); - if (null != d && d.invalid) { - if (this.graph.isCellVisible(b)) { - if (b != this.currentRoot && null != a) { - d.absoluteOffset.x = 0; - d.absoluteOffset.y = 0; - d.origin.x = a.origin.x; - d.origin.y = a.origin.y; - var e = this.graph.getCellGeometry(b); - if (null != e) { - if (!c.isEdge(b)) { - var f = e.offset || this.EMPTY_POINT; - e.relative ? (d.origin.x += e.x * a.width / this.scale + f.x, d.origin.y += e.y * a.height / this.scale + f.y) : (d.absoluteOffset.x = this.scale * f.x, d.absoluteOffset.y = - this.scale * f.y, d.origin.x += e.x, d.origin.y += e.y) - } - d.x = this.scale * (this.translate.x + d.origin.x); - d.y = this.scale * (this.translate.y + d.origin.y); - d.width = this.scale * e.width; - d.height = this.scale * e.height; - if (c.isVertex(b)) { - if (e.relative && (f = mxUtils.toRadians(a.style[mxConstants.STYLE_ROTATION] || "0"), 0 != f)) { - var e = Math.cos(f), - f = Math.sin(f), - g = new mxPoint(d.getCenterX(), d.getCenterY()), - h = new mxPoint(a.getCenterX(), a.getCenterY()), - e = mxUtils.getRotatedPoint(g, e, f, h); - d.x = e.x - d.width / 2; - d.y = e.y - d.height / 2 - } - this.updateVertexLabelOffset(d) - } - } - } - } else this.removeState(b); - f = this.graph.getChildOffsetForCell(b); - null != f && (d.origin.x += f.x, d.origin.y += f.y) - } - if (null != d && (!this.graph.isCellCollapsed(b) || b == this.currentRoot)) { - e = c.getChildCount(b); - for (f = 0; f < e; f++) g = c.getChildAt(b, f), this.validateBounds(d, g) - } -}; -mxGraphView.prototype.updateVertexLabelOffset = function(a) { - var b = mxUtils.getValue(a.style, mxConstants.STYLE_LABEL_POSITION, mxConstants.ALIGN_CENTER); - b == mxConstants.ALIGN_LEFT ? a.absoluteOffset.x -= a.width : b == mxConstants.ALIGN_RIGHT && (a.absoluteOffset.x += a.width); - b = mxUtils.getValue(a.style, mxConstants.STYLE_VERTICAL_LABEL_POSITION, mxConstants.ALIGN_MIDDLE); - b == mxConstants.ALIGN_TOP ? a.absoluteOffset.y -= a.height : b == mxConstants.ALIGN_BOTTOM && (a.absoluteOffset.y += a.height) -}; -mxGraphView.prototype.validatePoints = function(a, b) { - var c = this.graph.getModel(), - d = this.getState(b), - e = null; - if (null != d) { - if (d.invalid) { - var f = this.graph.getCellGeometry(b); - if (null != f && c.isEdge(b)) { - var g = this.getState(this.getVisibleTerminal(b, !0)); - d.setVisibleTerminalState(g, !0); - if (null != g && c.isEdge(g.cell) && !c.isAncestor(g.cell, b)) { - var h = this.getState(c.getParent(g.cell)); - this.validatePoints(h, g.cell) - } - var k = this.getState(this.getVisibleTerminal(b, !1)); - d.setVisibleTerminalState(k, !1); - null != k && (c.isEdge(k.cell) && - !c.isAncestor(k.cell, b)) && (h = this.getState(c.getParent(k.cell)), this.validatePoints(h, k.cell)); - this.updateFixedTerminalPoints(d, g, k); - this.updatePoints(d, f.points, g, k); - this.updateFloatingTerminalPoints(d, g, k); - this.updateEdgeBounds(d); - this.updateEdgeLabelOffset(d) - } else null != f && (f.relative && null != a && c.isEdge(a.cell)) && (f = this.getPoint(a, f), null != f && (d.x = f.x, d.y = f.y, f.x = f.x / this.scale - this.translate.x, f.y = f.y / this.scale - - this.translate.y, d.origin = f, this.childMoved(a, d))); - d.invalid = !1; - b != this.currentRoot && - this.graph.cellRenderer.redraw(d, !1, this.isRendering()) - } - if (c.isEdge(b) || c.isVertex(b)) null != d.shape && null != d.shape.boundingBox && (e = d.shape.boundingBox.clone()), null != d.text && !this.graph.isLabelClipped(d.cell) && null != d.text.boundingBox && - (null != e ? e.add(d.text.boundingBox) : e = d.text.boundingBox.clone()) - } - if (null != d && (!this.graph.isCellCollapsed(b) || b == this.currentRoot)) { - f = c.getChildCount(b); - for (g = 0; g < f; g++) h = c.getChildAt(b, g), h = this.validatePoints(d, h), null != h && (null == e ? e = h : e.add(h)) - } - return e -}; -mxGraphView.prototype.childMoved = function(a, b) { - var c = b.cell; - if (!this.graph.isCellCollapsed(c) || c == this.currentRoot) - for (var d = this.graph.getModel(), e = d.getChildCount(c), f = 0; f < e; f++) this.validateBounds(b, d.getChildAt(c, f)) -}; -mxGraphView.prototype.updateFixedTerminalPoints = function(a, b, c) { - this.updateFixedTerminalPoint(a, b, !0, this.graph.getConnectionConstraint(a, b, !0)); - this.updateFixedTerminalPoint(a, c, !1, this.graph.getConnectionConstraint(a, c, !1)) -}; -mxGraphView.prototype.updateFixedTerminalPoint = function(a, b, c, d) { - var e = null; - null != d && (e = this.graph.getConnectionPoint(b, d)); - if (null == e && null == b) { - b = this.scale; - d = this.translate; - var f = a.origin, - e = this.graph.getCellGeometry(a.cell).getTerminalPoint(c); - null != e && (e = new mxPoint(b * (d.x + e.x + f.x), b * (d.y + e.y + f.y))) - } - a.setAbsoluteTerminalPoint(e, c) -}; -mxGraphView.prototype.updatePoints = function(a, b, c, d) { - if (null != a) { - var e = []; - e.push(a.absolutePoints[0]); - var f = this.getEdgeStyle(a, b, c, d); - if (null != f) c = this.getTerminalPort(a, c, !0), d = this.getTerminalPort(a, d, !1), f(a, c, d, b, e); - else if (null != b) - for (f = 0; f < b.length; f++) null != b[f] && (d = mxUtils.clone(b[f]), e.push(this.transformControlPoint(a, d))); - b = a.absolutePoints; - e.push(b[b.length - 1]); - a.absolutePoints = e - } -}; -mxGraphView.prototype.transformControlPoint = function(a, b) { - var c = a.origin; - return new mxPoint(this.scale * (b.x + this.translate.x + c.x), this.scale * (b.y + this.translate.y + c.y)) -}; -mxGraphView.prototype.getEdgeStyle = function(a, b, c, d) { - a = null != c && c == d ? mxUtils.getValue(a.style, mxConstants.STYLE_LOOP, this.graph.defaultLoopStyle) : !mxUtils.getValue(a.style, mxConstants.STYLE_NOEDGESTYLE, !1) ? a.style[mxConstants.STYLE_EDGE] : - null; - "string" == typeof a && (b = mxStyleRegistry.getValue(a), null == b && this.isAllowEval() && (b = mxUtils.eval(a)), a = b); - return "function" == typeof a ? a : null -}; -mxGraphView.prototype.updateFloatingTerminalPoints = function(a, b, c) { - var d = a.absolutePoints, - e = d[0]; - null == d[d.length - 1] && null != c && this.updateFloatingTerminalPoint(a, c, b, !1); - null == e && null != b && this.updateFloatingTerminalPoint(a, b, c, !0) -}; -mxGraphView.prototype.updateFloatingTerminalPoint = function(a, b, c, d) { - b = this.getTerminalPort(a, b, d); - var e = this.getNextPoint(a, c, d), - f = this.graph.isOrthogonal(a); - c = mxUtils.toRadians(Number(b.style[mxConstants.STYLE_ROTATION] || "0")); - var g = new mxPoint(b.getCenterX(), b.getCenterY()); - if (0 != c) var h = Math.cos(-c), - k = Math.sin(-c), - e = mxUtils.getRotatedPoint(e, h, k, g); - h = parseFloat(a.style[mxConstants.STYLE_PERIMETER_SPACING] || 0); - h += parseFloat(a.style[d ? mxConstants.STYLE_SOURCE_PERIMETER_SPACING : mxConstants.STYLE_TARGET_PERIMETER_SPACING] || - 0); - b = this.getPerimeterPoint(b, e, 0 == c && f, h); - 0 != c && (h = Math.cos(c), k = Math.sin(c), b = mxUtils.getRotatedPoint(b, h, k, g)); - a.setAbsoluteTerminalPoint(b, d) -}; -mxGraphView.prototype.getTerminalPort = function(a, b, c) { - a = mxUtils.getValue(a.style, c ? mxConstants.STYLE_SOURCE_PORT : mxConstants.STYLE_TARGET_PORT); - null != a && (a = this.getState(this.graph.getModel().getCell(a)), null != a && (b = a)); - return b -}; -mxGraphView.prototype.getPerimeterPoint = function(a, b, c, d) { - var e = null; - if (null != a) { - var f = this.getPerimeterFunction(a); - if (null != f && null != b && (d = this.getPerimeterBounds(a, d), 0 < d.width || 0 < d.height)) e = f(d, a, b, c); - null == e && (e = this.getPoint(a)) - } - return e -}; -mxGraphView.prototype.getRoutingCenterX = function(a) { - var b = null != a.style ? parseFloat(a.style[mxConstants.STYLE_ROUTING_CENTER_X]) || 0 : 0; - return a.getCenterX() + b * a.width -}; -mxGraphView.prototype.getRoutingCenterY = function(a) { - var b = null != a.style ? parseFloat(a.style[mxConstants.STYLE_ROUTING_CENTER_Y]) || 0 : 0; - return a.getCenterY() + b * a.height -}; -mxGraphView.prototype.getPerimeterBounds = function(a, b) { - b = null != b ? b : 0; - null != a && (b += parseFloat(a.style[mxConstants.STYLE_PERIMETER_SPACING] || 0)); - return a.getPerimeterBounds(b * this.scale) -}; -mxGraphView.prototype.getPerimeterFunction = function(a) { - a = a.style[mxConstants.STYLE_PERIMETER]; - if ("string" == typeof a) { - var b = mxStyleRegistry.getValue(a); - null == b && this.isAllowEval() && (b = mxUtils.eval(a)); - a = b - } - return "function" == typeof a ? a : null -}; -mxGraphView.prototype.getNextPoint = function(a, b, c) { - a = a.absolutePoints; - var d = null; - if (null != a && (c || 2 < a.length || null == b)) d = a.length, d = a[c ? Math.min(1, d - 1) : Math.max(0, d - 2)]; - null == d && null != b && (d = new mxPoint(b.getCenterX(), b.getCenterY())); - return d -}; -mxGraphView.prototype.getVisibleTerminal = function(a, b) { - for (var c = this.graph.getModel(), d = c.getTerminal(a, b), e = d; null != d && d != this.currentRoot;) { - if (!this.graph.isCellVisible(e) || this.graph.isCellCollapsed(d)) e = d; - d = c.getParent(d) - } - c.getParent(e) == c.getRoot() && (e = null); - return e -}; -mxGraphView.prototype.updateEdgeBounds = function(a) { - var b = a.absolutePoints; - a.length = 0; - if (null != b && 0 < b.length) { - var c = b[0], - d = b[b.length - 1]; - if (null == c || null == d) a.cell != this.currentRoot && this.clear(a.cell, !0); - else { - if (c.x != d.x || c.y != d.y) { - var e = d.x - c.x, - f = d.y - c.y; - a.terminalDistance = Math.sqrt(e * e + f * f) - } else a.terminalDistance = 0; - var d = 0, - g = [], - f = c; - if (null != f) { - for (var c = f.x, h = f.y, k = c, l = h, m = 1; m < b.length; m++) { - var n = b[m]; - null != n && (e = f.x - n.x, f = f.y - n.y, e = Math.sqrt(e * e + f * f), g.push(e), d += e, f = n, c = Math.min(f.x, c), h = Math.min(f.y, - h), k = Math.max(f.x, k), l = Math.max(f.y, l)) - } - a.length = d; - a.segments = g; - a.x = c; - a.y = h; - a.width = Math.max(1, k - c); - a.height = Math.max(1, l - h) - } - } - } -}; -mxGraphView.prototype.getPoint = function(a, b) { - var c = a.getCenterX(), - d = a.getCenterY(); - if (null != a.segments && (null == b || b.relative)) { - for (var e = a.absolutePoints.length, f = ((null != b ? b.x / 2 : 0) + 0.5) * a.length, g = a.segments[0], h = 0, k = 1; f > h + g && k < e - 1;) h += g, g = a.segments[k++]; - e = 0 == g ? 0 : (f - h) / g; - f = a.absolutePoints[k - 1]; - k = a.absolutePoints[k]; - if (null != f && null != k) { - h = c = d = 0; - if (null != b) { - var d = b.y, - l = b.offset; - null != l && (c = l.x, h = l.y) - } - l = k.x - f.x; - k = k.y - f.y; - c = f.x + l * e + ((0 == g ? 0 : k / g) * d + c) * this.scale; - d = f.y + k * e - ((0 == g ? 0 : l / g) * d - h) * this.scale - } - } else null != - b && (l = b.offset, null != l && (c += l.x, d += l.y)); - return new mxPoint(c, d) -}; -mxGraphView.prototype.getRelativePoint = function(a, b, c) { - var d = this.graph.getModel().getGeometry(a.cell); - if (null != d) { - var e = a.absolutePoints.length; - if (d.relative && 1 < e) { - for (var d = a.length, f = a.segments, g = a.absolutePoints[0], h = a.absolutePoints[1], k = mxUtils.ptSegDistSq(g.x, g.y, h.x, h.y, b, c), l = 0, m = 0, n = 0, p = 2; p < e; p++) m += f[p - - 2], h = a.absolutePoints[p], g = mxUtils.ptSegDistSq(g.x, g.y, h.x, h.y, b, c), g <= k && (k = g, l = p - 1, n = m), g = h; - e = f[l]; - g = a.absolutePoints[l]; - h = a.absolutePoints[l + 1]; - k = h.x; - f = h.y; - a = g.x - k; - l = g.y - f; - k = b - k; - f = c - f; - k = a - k; - f = l - f; - f = k * a + f * l; - a = Math.sqrt(0 >= f ? 0 : f * f / (a * a + l * l)); - a > e && (a = e); - e = Math.sqrt(mxUtils.ptSegDistSq(g.x, g.y, h.x, h.y, b, c)); - 1 == mxUtils.relativeCcw(g.x, g.y, h.x, h.y, b, c) && (e = -e); - return new mxPoint(-2 * ((d / 2 - n - a) / d), e / this.scale) - } - } - return new mxPoint -}; -mxGraphView.prototype.updateEdgeLabelOffset = function(a) { - var b = a.absolutePoints; - a.absoluteOffset.x = a.getCenterX(); - a.absoluteOffset.y = a.getCenterY(); - if (null != b && 0 < b.length && null != a.segments) { - var c = this.graph.getCellGeometry(a.cell); - if (c.relative) { - var d = this.getPoint(a, c); - null != d && (a.absoluteOffset = d) - } else { - var d = b[0], - e = b[b.length - 1]; - if (null != d && null != e) { - var b = e.x - d.x, - f = e.y - d.y, - g = e = 0, - c = c.offset; - null != c && (e = c.x, g = c.y); - c = d.y + f / 2 + g * this.scale; - a.absoluteOffset.x = d.x + b / 2 + e * this.scale; - a.absoluteOffset.y = c - } - } - } -}; -mxGraphView.prototype.getState = function(a, b) { - b = b || !1; - var c = null; - null != a && (c = this.states.get(a), this.graph.isCellVisible(a) && (null == c && b && this.graph.isCellVisible(a) ? (c = this.createState(a), this.states.put(a, c)) : b && (null != c && this.updateStyle) && - (c.style = this.graph.getCellStyle(a)))); - return c -}; -mxGraphView.prototype.isRendering = function() { - return this.rendering -}; -mxGraphView.prototype.setRendering = function(a) { - this.rendering = a -}; -mxGraphView.prototype.isAllowEval = function() { - return this.allowEval -}; -mxGraphView.prototype.setAllowEval = function(a) { - this.allowEval = a -}; -mxGraphView.prototype.getStates = function() { - return this.states -}; -mxGraphView.prototype.setStates = function(a) { - this.states = a -}; -mxGraphView.prototype.getCellStates = function(a) { - if (null == a) return this.states; - for (var b = [], c = 0; c < a.length; c++) { - var d = this.getState(a[c]); - null != d && b.push(d) - } - return b -}; -mxGraphView.prototype.removeState = function(a) { - var b = null; - null != a && (b = this.states.remove(a), null != b && (this.graph.cellRenderer.destroy(b), b.destroy())); - return b -}; -mxGraphView.prototype.createState = function(a) { - var b = this.graph.getCellStyle(a); - a = new mxCellState(this, a, b); - this.graph.cellRenderer.initialize(a, this.isRendering()); - return a -}; -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(a) { - a = mxEvent.getSource(a); - return a == this.graph.container || a.parentNode == this.backgroundPane || null != a.parentNode && a.parentNode.parentNode == this.backgroundPane || a == this.canvas.parentNode || a == this.canvas || - a == this.backgroundPane || a == this.drawPane || a == this.overlayPane -}; -mxGraphView.prototype.isScrollEvent = function(a) { - var b = mxUtils.getOffset(this.graph.container); - a = new mxPoint(a.clientX - b.x, a.clientY - b.y); - var b = this.graph.container.offsetWidth, - c = this.graph.container.clientWidth; - if (b > c && a.x > c + 2 && a.x <= b) return !0; - b = this.graph.container.offsetHeight; - c = this.graph.container.clientHeight; - return b > c && a.y > c + 2 && a.y <= b ? !0 : !1 -}; -mxGraphView.prototype.init = function() { - this.installListeners(); - var a = this.graph; - a.dialect == mxConstants.DIALECT_SVG ? this.createSvg() : a.dialect == mxConstants.DIALECT_VML ? this.createVml() : this.createHtml() -}; -mxGraphView.prototype.installListeners = function() { - var a = this.graph, - b = a.container; - if (null != b) { - mxEvent.addGestureListeners(b, mxUtils.bind(this, function(b) { - mxClient.IS_TOUCH && a.isEditing() && a.stopEditing(!a.isInvokesStopCellEditing()); - this.isContainerEvent(b) && (!mxClient.IS_IE && !mxClient.IS_GC && !mxClient.IS_OP && !mxClient.IS_SF || !this.isScrollEvent(b)) && a.fireMouseEvent(mxEvent.MOUSE_DOWN, new mxMouseEvent( - b)) - }), mxUtils.bind(this, function(b) { - this.isContainerEvent(b) && a.fireMouseEvent(mxEvent.MOUSE_MOVE, - new mxMouseEvent(b)) - }), mxUtils.bind(this, function(b) { - this.isContainerEvent(b) && a.fireMouseEvent(mxEvent.MOUSE_UP, new mxMouseEvent(b)) - })); - mxEvent.addListener(b, "dblclick", mxUtils.bind(this, function(b) { - a.dblClick(b) - })); - var c = function(c) { - var e = null; - mxClient.IS_TOUCH && (e = mxEvent.getClientX(c), c = mxEvent.getClientY(c), c = mxUtils.convertPoint(b, e, c), e = a.view.getState(a.getCellAt(c.x, c.y))); - return e - }; - a.addMouseListener({ - mouseDown: function(b, c) { - a.panningHandler.hideMenu() - }, - mouseMove: function() {}, - mouseUp: function() {} - }); - this.moveHandler = mxUtils.bind(this, function(b) { - null != a.tooltipHandler && a.tooltipHandler.isHideOnHover() && a.tooltipHandler.hide(); - this.captureDocumentGesture && (a.isMouseDown && !mxEvent.isConsumed(b)) && a.fireMouseEvent(mxEvent.MOUSE_MOVE, new mxMouseEvent(b, c(b))) - }); - this.endHandler = mxUtils.bind(this, function(b) { - this.captureDocumentGesture && a.fireMouseEvent(mxEvent.MOUSE_UP, new mxMouseEvent(b)) - }); - mxEvent.addGestureListeners(document, null, this.moveHandler, this.endHandler) - } -}; -mxGraphView.prototype.createHtml = function() { - var a = this.graph.container; - null != a && (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), a.appendChild(this.canvas), - mxClient.IS_QUIRKS && (a = mxUtils.bind(this, function(a) { - a = this.getGraphBounds(); - this.updateHtmlCanvasSize(a.x + a.width + this.graph.border, a.y + a.height + this.graph.border) - }), mxEvent.addListener(window, "resize", a))) -}; -mxGraphView.prototype.updateHtmlCanvasSize = function(a, b) { - if (null != this.graph.container) { - var c = this.graph.container.offsetHeight; - this.canvas.style.width = this.graph.container.offsetWidth < a ? a + "px" : "100%"; - this.canvas.style.height = c < b ? b + "px" : "100%" - } -}; -mxGraphView.prototype.createHtmlPane = function(a, b) { - var c = document.createElement("DIV"); - null != a && null != b ? (c.style.position = "absolute", c.style.left = "0px", c.style.top = "0px", c.style.width = a, c.style.height = b) : c.style.position = "relative"; - return c -}; -mxGraphView.prototype.createVml = function() { - var a = this.graph.container; - if (null != a) { - var b = a.offsetWidth, - c = a.offsetHeight; - this.canvas = this.createVmlPane(b, c); - this.backgroundPane = this.createVmlPane(b, c); - this.drawPane = this.createVmlPane(b, c); - this.overlayPane = this.createVmlPane(b, c); - this.canvas.appendChild(this.backgroundPane); - this.canvas.appendChild(this.drawPane); - this.canvas.appendChild(this.overlayPane); - a.appendChild(this.canvas) - } -}; -mxGraphView.prototype.createVmlPane = function(a, b) { - var c = document.createElement(mxClient.VML_PREFIX + ":group"); - c.style.position = "absolute"; - c.style.left = "0px"; - c.style.top = "0px"; - c.style.width = a + "px"; - c.style.height = b + "px"; - c.setAttribute("coordsize", a + "," + b); - c.setAttribute("coordorigin", "0,0"); - return c -}; -mxGraphView.prototype.createSvg = function() { - var a = 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 b = document.createElementNS(mxConstants.NS_SVG, - "svg"); - b.style.width = "100%"; - b.style.height = "100%"; - b.style.display = "block"; - b.appendChild(this.canvas); - null != a && (a.appendChild(b), "static" == mxUtils.getCurrentStyle(a).position && (a.style.position = "relative")) -}; -mxGraphView.prototype.destroy = function() { - var a = null != this.canvas ? this.canvas.ownerSVGElement : null; - null == a && (a = this.canvas); - null != a && null != a.parentNode && (this.clear(this.currentRoot, !0), mxEvent.removeGestureListeners(document, null, this.moveHandler, this.endHandler), mxEvent.release(this.graph.container), a - .parentNode.removeChild(a), this.overlayPane = this.drawPane = this.backgroundPane = this.canvas = this.endHandler = this.moveHandler = null) -}; - -function mxCurrentRootChange(a, b) { - this.view = a; - this.previous = this.root = b; - this.isUp = null == b; - if (!this.isUp) - for (var c = this.view.currentRoot, d = this.view.graph.getModel(); null != c;) { - if (c == b) { - this.isUp = !0; - break - } - c = d.getParent(c) - } -} -mxCurrentRootChange.prototype.execute = function() { - var a = this.view.currentRoot; - this.view.currentRoot = this.previous; - this.previous = a; - a = this.view.graph.getTranslateForRoot(this.view.currentRoot); - null != a && (this.view.translate = new mxPoint(-a.x, -a.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 -}; - -function mxGraph(a, b, c, d) { - this.mouseListeners = null; - this.renderHint = c; - this.dialect = mxClient.IS_SVG ? mxConstants.DIALECT_SVG : c == mxConstants.RENDERING_HINT_EXACT && mxClient.IS_VML ? mxConstants.DIALECT_VML : c == mxConstants.RENDERING_HINT_FASTEST ? mxConstants - .DIALECT_STRICTHTML : c == mxConstants.RENDERING_HINT_FASTER ? mxConstants.DIALECT_PREFERHTML : mxConstants.DIALECT_MIXEDHTML; - this.model = null != b ? b : new mxGraphModel; - this.multiplicities = []; - this.imageBundles = []; - this.cellRenderer = this.createCellRenderer(); - this.setSelectionModel(this.createSelectionModel()); - this.setStylesheet(null != d ? d : this.createStylesheet()); - this.view = this.createGraphView(); - this.graphModelChangeListener = mxUtils.bind(this, function(a, b) { - this.graphModelChanged(b.getProperty("edit").changes) - }); - this.model.addListener(mxEvent.CHANGE, this.graphModelChangeListener); - this.createHandlers(); - null != a && this.init(a); - this.view.revalidate() -} -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 = 0.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 = 0.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(mxClient.imageBasePath + "/warning" + (mxClient.IS_MAC ? ".png" : ".gif"), 16, 16); -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(a) { - this.container = a; - this.cellEditor = this.createCellEditor(); - this.view.init(); - this.sizeDidChange(); - mxClient.IS_IE && (mxEvent.addListener(window, "unload", mxUtils.bind(this, function() { - this.destroy() - })), mxEvent.addListener(a, "selectstart", mxUtils.bind(this, function() { - return this.isEditing() - }))); - 8 == document.documentMode && a.insertAdjacentHTML("beforeend", '\x3cv:group style\x3d"DISPLAY: none;"\x3e\x3c/v:group\x3e') -}; -mxGraph.prototype.createHandlers = function(a) { - 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(a) { - this.stylesheet = a -}; -mxGraph.prototype.getSelectionModel = function() { - return this.selectionModel -}; -mxGraph.prototype.setSelectionModel = function(a) { - this.selectionModel = a -}; -mxGraph.prototype.getSelectionCellsForChanges = function(a) { - for (var b = [], c = 0; c < a.length; c++) { - var d = a[c]; - if (d.constructor != mxRootChange) { - var e = null; - d instanceof mxChildChange && null == d.previous ? e = d.child : null != d.cell && d.cell instanceof mxCell && (e = d.cell); - null != e && 0 > mxUtils.indexOf(b, e) && b.push(e) - } - } - return this.getModel().getTopmostCells(b) -}; -mxGraph.prototype.graphModelChanged = function(a) { - for (var b = 0; b < a.length; b++) this.processChange(a[b]); - this.removeSelectionCells(this.getRemovedCellsForChanges(a)); - this.view.validate(); - this.sizeDidChange() -}; -mxGraph.prototype.getRemovedCellsForChanges = function(a) { - for (var b = [], c = 0; c < a.length; c++) { - var d = a[c]; - if (d instanceof mxRootChange) break; - else d instanceof mxChildChange ? null != d.previous && null == d.parent && (b = b.concat(this.model.getDescendants(d.child))) : d instanceof mxVisibleChange && (b = b.concat(this.model.getDescendants( - d.cell))) - } - return b -}; -mxGraph.prototype.processChange = function(a) { - if (a instanceof mxRootChange) this.clearSelection(), this.removeStateForCell(a.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 (a instanceof mxChildChange) { - var b = this.model.getParent(a.child); - null != b ? this.view.invalidate(a.child, !0, !1, null != a.previous) : (this.removeStateForCell(a.child), this.view.currentRoot == a.child && this.home()); - b != a.previous && - (null != b && this.view.invalidate(b, !1, !1), null != a.previous && this.view.invalidate(a.previous, !1, !1)) - } else a instanceof mxTerminalChange || a instanceof mxGeometryChange ? this.view.invalidate(a.cell) : a instanceof mxValueChange ? this.view.invalidate(a.cell, !1, !1) : a instanceof mxStyleChange ? - (this.view.invalidate(a.cell, !0, !0, !1), this.view.removeState(a.cell)) : null != a.cell && a.cell instanceof mxCell && this.removeStateForCell(a.cell) -}; -mxGraph.prototype.removeStateForCell = function(a) { - for (var b = this.model.getChildCount(a), c = 0; c < b; c++) this.removeStateForCell(this.model.getChildAt(a, c)); - this.view.removeState(a) -}; -mxGraph.prototype.addCellOverlay = function(a, b) { - null == a.overlays && (a.overlays = []); - a.overlays.push(b); - var c = this.view.getState(a); - null != c && this.cellRenderer.redraw(c); - this.fireEvent(new mxEventObject(mxEvent.ADD_OVERLAY, "cell", a, "overlay", b)); - return b -}; -mxGraph.prototype.getCellOverlays = function(a) { - return a.overlays -}; -mxGraph.prototype.removeCellOverlay = function(a, b) { - if (null == b) this.removeCellOverlays(a); - else { - var c = mxUtils.indexOf(a.overlays, b); - 0 <= c ? (a.overlays.splice(c, 1), 0 == a.overlays.length && (a.overlays = null), c = this.view.getState(a), null != c && this.cellRenderer.redraw(c), this.fireEvent(new mxEventObject(mxEvent.REMOVE_OVERLAY, - "cell", a, "overlay", b))) : b = null - } - return b -}; -mxGraph.prototype.removeCellOverlays = function(a) { - var b = a.overlays; - if (null != b) { - a.overlays = null; - var c = this.view.getState(a); - null != c && this.cellRenderer.redraw(c); - for (c = 0; c < b.length; c++) this.fireEvent(new mxEventObject(mxEvent.REMOVE_OVERLAY, "cell", a, "overlay", b[c])) - } - return b -}; -mxGraph.prototype.clearCellOverlays = function(a) { - a = null != a ? a : this.model.getRoot(); - this.removeCellOverlays(a); - for (var b = this.model.getChildCount(a), c = 0; c < b; c++) { - var d = this.model.getChildAt(a, c); - this.clearCellOverlays(d) - } -}; -mxGraph.prototype.setCellWarning = function(a, b, c, d) { - if (null != b && 0 < b.length) return c = null != c ? c : this.warningImage, b = new mxCellOverlay(c, "\x3cfont color\x3dred\x3e" + b + "\x3c/font\x3e"), d && b.addListener(mxEvent.CLICK, mxUtils - .bind(this, function(b, c) { - this.isEnabled() && this.setSelectionCell(a) - })), this.addCellOverlay(a, b); - this.removeCellOverlays(a); - return null -}; -mxGraph.prototype.startEditing = function(a) { - this.startEditingAtCell(null, a) -}; -mxGraph.prototype.startEditingAtCell = function(a, b) { - null == a && (a = this.getSelectionCell(), null != a && !this.isCellEditable(a) && (a = null)); - null != a && (this.fireEvent(new mxEventObject(mxEvent.START_EDITING, "cell", a, "event", b)), this.cellEditor.startEditing(a, b)) -}; -mxGraph.prototype.getEditingValue = function(a, b) { - return this.convertValueToString(a) -}; -mxGraph.prototype.stopEditing = function(a) { - this.cellEditor.stopEditing(a) -}; -mxGraph.prototype.labelChanged = function(a, b, c) { - this.model.beginUpdate(); - try { - this.cellLabelChanged(a, b, this.isAutoSizeCell(a)), this.fireEvent(new mxEventObject(mxEvent.LABEL_CHANGED, "cell", a, "value", b, "event", c)) - } finally { - this.model.endUpdate() - } - return a -}; -mxGraph.prototype.cellLabelChanged = function(a, b, c) { - this.model.beginUpdate(); - try { - this.model.setValue(a, b), c && this.cellSizeUpdated(a, !1) - } finally { - this.model.endUpdate() - } -}; -mxGraph.prototype.escape = function(a) { - this.stopEditing(!0); - this.connectionHandler.reset(); - this.graphHandler.reset(); - a = this.getSelectionCells(); - for (var b = 0; b < a.length; b++) { - var c = this.view.getState(a[b]); - null != c && null != c.handler && c.handler.reset() - } -}; -mxGraph.prototype.click = function(a) { - var b = a.getEvent(), - c = a.getCell(), - d = new mxEventObject(mxEvent.CLICK, "event", b, "cell", c); - a.isConsumed() && d.consume(); - this.fireEvent(d); - this.isEnabled() && (!mxEvent.isConsumed(b) && !d.isConsumed()) && (null != c ? this.selectCellForEvent(c, b) : (c = null, this.isSwimlaneSelectionEnabled() && (c = this.getSwimlaneAt(a.getGraphX(), - a.getGraphY())), null != c ? this.selectCellForEvent(c, b) : this.isToggleEvent(b) || this.clearSelection())) -}; -mxGraph.prototype.dblClick = function(a, b) { - var c = new mxEventObject(mxEvent.DOUBLE_CLICK, "event", a, "cell", b); - this.fireEvent(c); - this.isEnabled() && (!mxEvent.isConsumed(a) && !c.isConsumed() && null != b && this.isCellEditable(b)) && this.startEditingAtCell(b, a) -}; -mxGraph.prototype.scrollPointToVisible = function(a, b, c, d) { - if (!this.timerAutoScroll && (this.ignoreScrollbars || mxUtils.hasScrollbars(this.container))) { - var e = this.container; - d = null != d ? d : 20; - if (a >= e.scrollLeft && b >= e.scrollTop && a <= e.scrollLeft + e.clientWidth && b <= e.scrollTop + e.clientHeight) { - var f = e.scrollLeft + e.clientWidth - a; - if (f < d) { - if (a = e.scrollLeft, e.scrollLeft += d - f, c && a == e.scrollLeft) { - if (this.dialect == mxConstants.DIALECT_SVG) { - a = this.view.getDrawPane().ownerSVGElement; - var g = this.container.scrollWidth + d - f - } else g = - Math.max(e.clientWidth, e.scrollWidth) + d - f, a = this.view.getCanvas(); - a.style.width = g + "px"; - e.scrollLeft += d - f - } - } else f = a - e.scrollLeft, f < d && (e.scrollLeft -= d - f); - f = e.scrollTop + e.clientHeight - b; - f < d ? (a = e.scrollTop, e.scrollTop += d - f, a == e.scrollTop && c && (this.dialect == mxConstants.DIALECT_SVG ? (a = this.view.getDrawPane().ownerSVGElement, b = this.container.scrollHeight + - d - f) : (b = Math.max(e.clientHeight, e.scrollHeight) + d - f, a = this.view.getCanvas()), a.style.height = b + "px", e.scrollTop += d - f)) : (f = b - e.scrollTop, f < d && (e.scrollTop -= - d - f)) - } - } else this.allowAutoPanning && !this.panningHandler.active && (null == this.panningManager && (this.panningManager = this.createPanningManager()), this.panningManager.panTo(a + this.panDx, b + - this.panDy)) -}; -mxGraph.prototype.createPanningManager = function() { - return new mxPanningManager(this) -}; -mxGraph.prototype.getBorderSizes = function() { - function a(a) { - var b = 0, - b = "thin" == a ? 2 : "medium" == a ? 4 : "thick" == a ? 6 : parseInt(a); - isNaN(b) && (b = 0); - return b - } - var b = mxUtils.getCurrentStyle(this.container), - c = new mxRectangle; - c.x = a(b.borderLeftWidth) + parseInt(b.paddingLeft || 0); - c.y = a(b.borderTopWidth) + parseInt(b.paddingTop || 0); - c.width = a(b.borderRightWidth) + parseInt(b.paddingRight || 0); - c.height = a(b.borderBottomWidth) + parseInt(b.paddingBottom || 0); - return c -}; -mxGraph.prototype.getPreferredPageSize = function(a, b, c) { - a = this.view.scale; - var d = this.view.translate, - e = this.pageFormat, - f = a * this.pageScale, - e = new mxRectangle(0, 0, e.width * f, e.height * f); - b = this.pageBreaksVisible ? Math.ceil(b / e.width) : 1; - c = this.pageBreaksVisible ? Math.ceil(c / e.height) : 1; - return new mxRectangle(0, 0, b * e.width + 2 + d.x / a, c * e.height + 2 + d.y / a) -}; -mxGraph.prototype.sizeDidChange = function() { - var a = this.getGraphBounds(); - if (null != this.container) { - var b = this.getBorder(), - c = Math.max(0, a.x + a.width + 1 + b), - b = Math.max(0, a.y + a.height + 1 + b); - null != this.minimumContainerSize && (c = Math.max(c, this.minimumContainerSize.width), b = Math.max(b, this.minimumContainerSize.height)); - this.resizeContainer && this.doResizeContainer(c, b); - if (this.preferPageSize || !mxClient.IS_IE && this.pageVisible) { - var d = this.getPreferredPageSize(a, c, b); - null != d && (c = d.width, b = d.height) - } - null != this.minimumGraphSize && - (c = Math.max(c, this.minimumGraphSize.width * this.view.scale), b = Math.max(b, this.minimumGraphSize.height * this.view.scale)); - c = Math.ceil(c - 1); - b = Math.ceil(b - 1); - this.dialect == mxConstants.DIALECT_SVG ? (d = this.view.getDrawPane().ownerSVGElement, d.style.minWidth = Math.max(1, c) + "px", d.style.minHeight = Math.max(1, b) + "px", d.style.width = - "100%", d.style.height = "100%") : mxClient.IS_QUIRKS ? this.view.updateHtmlCanvasSize(Math.max(1, c), Math.max(1, b)) : (this.view.canvas.style.minWidth = Math.max(1, c) + "px", this.view.canvas - .style.minHeight = - Math.max(1, b) + "px"); - this.updatePageBreaks(this.pageBreaksVisible, c - 1, b - 1) - } - this.fireEvent(new mxEventObject(mxEvent.SIZE, "bounds", a)) -}; -mxGraph.prototype.doResizeContainer = function(a, b) { - if (mxClient.IS_IE) - if (mxClient.IS_QUIRKS) { - var c = this.getBorderSizes(); - a += Math.max(2, c.x + c.width + 1); - b += Math.max(2, c.y + c.height + 1) - } else 9 <= document.documentMode ? (a += 3, b += 5) : (a += 1, b += 1); - else b += 1; - null != this.maximumContainerSize && (a = Math.min(this.maximumContainerSize.width, a), b = Math.min(this.maximumContainerSize.height, b)); - this.container.style.width = Math.ceil(a) + "px"; - this.container.style.height = Math.ceil(b) + "px" -}; -mxGraph.prototype.updatePageBreaks = function(a, b, c) { - var d = this.view.scale, - e = this.view.translate, - f = this.pageFormat, - g = d * this.pageScale, - e = new mxRectangle(d * e.x, d * e.y, f.width * g, f.height * g); - a = a && Math.min(e.width, e.height) > this.minPageBreakDist; - e.x = mxUtils.mod(e.x, e.width); - e.y = mxUtils.mod(e.y, e.height); - f = a ? Math.ceil((b - e.x) / e.width) : 0; - a = a ? Math.ceil((c - e.y) / e.height) : 0; - null == this.horizontalPageBreaks && 0 < f && (this.horizontalPageBreaks = []); - if (null != this.horizontalPageBreaks) { - for (g = 0; g <= f; g++) { - var h = [new mxPoint(e.x + - g * e.width, 1), new mxPoint(e.x + g * e.width, c)]; - null != this.horizontalPageBreaks[g] ? (this.horizontalPageBreaks[g].scale = 1, this.horizontalPageBreaks[g].points = h, this.horizontalPageBreaks[g].redraw()) : (h = new mxPolyline(h, this.pageBreakColor, - this.scale), h.dialect = this.dialect, h.isDashed = this.pageBreakDashed, h.scale = d, h.init(this.view.backgroundPane), h.redraw(), this.horizontalPageBreaks[g] = h) - } - for (g = f; g < this.horizontalPageBreaks.length; g++) this.horizontalPageBreaks[g].destroy(); - this.horizontalPageBreaks.splice(f, - this.horizontalPageBreaks.length - f) - } - null == this.verticalPageBreaks && 0 < a && (this.verticalPageBreaks = []); - if (null != this.verticalPageBreaks) { - for (g = 0; g <= a; g++) h = [new mxPoint(1, e.y + g * e.height), new mxPoint(b, e.y + g * e.height)], null != this.verticalPageBreaks[g] ? (this.verticalPageBreaks[g].scale = 1, this.verticalPageBreaks[ - g].points = h, this.verticalPageBreaks[g].redraw()) : (h = new mxPolyline(h, this.pageBreakColor, d), h.dialect = this.dialect, h.isDashed = this.pageBreakDashed, h.scale = d, h.init(this.view - .backgroundPane), h.redraw(), - this.verticalPageBreaks[g] = h); - for (g = a; g < this.verticalPageBreaks.length; g++) this.verticalPageBreaks[g].destroy(); - this.verticalPageBreaks.splice(a, this.verticalPageBreaks.length - a) - } -}; -mxGraph.prototype.getCellStyle = function(a) { - var b = this.model.getStyle(a), - c = null, - c = this.model.isEdge(a) ? this.stylesheet.getDefaultEdgeStyle() : this.stylesheet.getDefaultVertexStyle(); - null != b && (c = this.postProcessCellStyle(this.stylesheet.getCellStyle(b, c))); - null == c && (c = mxGraph.prototype.EMPTY_ARRAY); - return c -}; -mxGraph.prototype.postProcessCellStyle = function(a) { - if (null != a) { - var b = a[mxConstants.STYLE_IMAGE], - c = this.getImageFromBundles(b); - null != c ? a[mxConstants.STYLE_IMAGE] = c : c = b; - null != c && "data:image/" == c.substring(0, 11) && (b = c.indexOf(","), 0 < b && (c = c.substring(0, b) + ";base64," + c.substring(b + 1)), a[mxConstants.STYLE_IMAGE] = c) - } - return a -}; -mxGraph.prototype.setCellStyle = function(a, b) { - b = b || this.getSelectionCells(); - if (null != b) { - this.model.beginUpdate(); - try { - for (var c = 0; c < b.length; c++) this.model.setStyle(b[c], a) - } finally { - this.model.endUpdate() - } - } -}; -mxGraph.prototype.toggleCellStyle = function(a, b, c) { - c = c || this.getSelectionCell(); - this.toggleCellStyles(a, b, [c]) -}; -mxGraph.prototype.toggleCellStyles = function(a, b, c) { - b = null != b ? b : !1; - c = c || this.getSelectionCells(); - if (null != c && 0 < c.length) { - var d = this.view.getState(c[0]), - d = null != d ? d.style : this.getCellStyle(c[0]); - null != d && (b = mxUtils.getValue(d, a, b) ? 0 : 1, this.setCellStyles(a, b, c)) - } -}; -mxGraph.prototype.setCellStyles = function(a, b, c) { - c = c || this.getSelectionCells(); - mxUtils.setCellStyles(this.model, c, a, b) -}; -mxGraph.prototype.toggleCellStyleFlags = function(a, b, c) { - this.setCellStyleFlags(a, b, null, c) -}; -mxGraph.prototype.setCellStyleFlags = function(a, b, c, d) { - d = d || this.getSelectionCells(); - if (null != d && 0 < d.length) { - if (null == c) { - var e = this.view.getState(d[0]), - e = null != e ? e.style : this.getCellStyle(d[0]); - null != e && (c = (parseInt(e[a] || 0) & b) != b) - } - mxUtils.setCellStyleFlags(this.model, d, a, b, c) - } -}; -mxGraph.prototype.alignCells = function(a, b, c) { - null == b && (b = this.getSelectionCells()); - if (null != b && 1 < b.length) { - if (null == c) - for (var d = 0; d < b.length; d++) { - var e = this.getCellGeometry(b[d]); - if (null != e && !this.model.isEdge(b[d])) - if (null == c) - if (a == mxConstants.ALIGN_CENTER) { - c = e.x + e.width / 2; - break - } else if (a == mxConstants.ALIGN_RIGHT) c = e.x + e.width; - else if (a == mxConstants.ALIGN_TOP) c = e.y; - else if (a == mxConstants.ALIGN_MIDDLE) { - c = e.y + e.height / 2; - break - } else c = a == mxConstants.ALIGN_BOTTOM ? e.y + e.height : e.x; - else c = a == mxConstants.ALIGN_RIGHT ? - Math.max(c, e.x + e.width) : a == mxConstants.ALIGN_TOP ? Math.min(c, e.y) : a == mxConstants.ALIGN_BOTTOM ? Math.max(c, e.y + e.height) : Math.min(c, e.x) - } - if (null != c) { - this.model.beginUpdate(); - try { - for (d = 0; d < b.length; d++) e = this.getCellGeometry(b[d]), null != e && !this.model.isEdge(b[d]) && (e = e.clone(), a == mxConstants.ALIGN_CENTER ? e.x = c - e.width / 2 : a == - mxConstants.ALIGN_RIGHT ? e.x = c - e.width : a == mxConstants.ALIGN_TOP ? e.y = c : a == mxConstants.ALIGN_MIDDLE ? e.y = c - e.height / 2 : a == mxConstants.ALIGN_BOTTOM ? e.y = c - e - .height : e.x = c, this.model.setGeometry(b[d], - e)); - this.fireEvent(new mxEventObject(mxEvent.ALIGN_CELLS, "align", a, "cells", b)) - } finally { - this.model.endUpdate() - } - } - } - return b -}; -mxGraph.prototype.flipEdge = function(a) { - if (null != a && null != this.alternateEdgeStyle) { - this.model.beginUpdate(); - try { - var b = this.model.getStyle(a); - null == b || 0 == b.length ? this.model.setStyle(a, this.alternateEdgeStyle) : this.model.setStyle(a, null); - this.resetEdge(a); - this.fireEvent(new mxEventObject(mxEvent.FLIP_EDGE, "edge", a)) - } finally { - this.model.endUpdate() - } - } - return a -}; -mxGraph.prototype.addImageBundle = function(a) { - this.imageBundles.push(a) -}; -mxGraph.prototype.removeImageBundle = function(a) { - for (var b = [], c = 0; c < this.imageBundles.length; c++) this.imageBundles[c] != a && b.push(this.imageBundles[c]); - this.imageBundles = b -}; -mxGraph.prototype.getImageFromBundles = function(a) { - if (null != a) - for (var b = 0; b < this.imageBundles.length; b++) { - var c = this.imageBundles[b].getImage(a); - if (null != c) return c - } - return null -}; -mxGraph.prototype.orderCells = function(a, b) { - null == b && (b = mxUtils.sortCells(this.getSelectionCells(), !0)); - this.model.beginUpdate(); - try { - this.cellsOrdered(b, a), this.fireEvent(new mxEventObject(mxEvent.ORDER_CELLS, "back", a, "cells", b)) - } finally { - this.model.endUpdate() - } - return b -}; -mxGraph.prototype.cellsOrdered = function(a, b) { - if (null != a) { - this.model.beginUpdate(); - try { - for (var c = 0; c < a.length; c++) { - var d = this.model.getParent(a[c]); - b ? this.model.add(d, a[c], c) : this.model.add(d, a[c], this.model.getChildCount(d) - 1) - } - this.fireEvent(new mxEventObject(mxEvent.CELLS_ORDERED, "back", b, "cells", a)) - } finally { - this.model.endUpdate() - } - } -}; -mxGraph.prototype.groupCells = function(a, b, c) { - null == c && (c = mxUtils.sortCells(this.getSelectionCells(), !0)); - c = this.getCellsForGroup(c); - null == a && (a = this.createGroupCell(c)); - var d = this.getBoundsForGroup(a, c, b); - if (0 < c.length && null != d) { - var e = this.model.getParent(a); - null == e && (e = this.model.getParent(c[0])); - this.model.beginUpdate(); - try { - null == this.getCellGeometry(a) && this.model.setGeometry(a, new mxGeometry); - var f = this.model.getChildCount(e); - this.cellsAdded([a], e, f, null, null, !1); - f = this.model.getChildCount(a); - this.cellsAdded(c, a, f, null, null, !1, !1); - this.cellsMoved(c, -d.x, -d.y, !1, !0); - this.cellsResized([a], [d]); - this.fireEvent(new mxEventObject(mxEvent.GROUP_CELLS, "group", a, "border", b, "cells", c)) - } finally { - this.model.endUpdate() - } - } - return a -}; -mxGraph.prototype.getCellsForGroup = function(a) { - var b = []; - if (null != a && 0 < a.length) { - var c = this.model.getParent(a[0]); - b.push(a[0]); - for (var d = 1; d < a.length; d++) this.model.getParent(a[d]) == c && b.push(a[d]) - } - return b -}; -mxGraph.prototype.getBoundsForGroup = function(a, b, c) { - b = this.getBoundingBoxFromGeometry(b); - null != b && (this.isSwimlane(a) && (a = this.getStartSize(a), b.x -= a.width, b.y -= a.height, b.width += a.width, b.height += a.height), b.x -= c, b.y -= c, b.width += 2 * c, b.height += 2 * c); - return b -}; -mxGraph.prototype.createGroupCell = function(a) { - a = new mxCell(""); - a.setVertex(!0); - a.setConnectable(!1); - return a -}; -mxGraph.prototype.ungroupCells = function(a) { - var b = []; - if (null == a) { - a = this.getSelectionCells(); - for (var c = [], d = 0; d < a.length; d++) 0 < this.model.getChildCount(a[d]) && c.push(a[d]); - a = c - } - if (null != a && 0 < a.length) { - this.model.beginUpdate(); - try { - for (d = 0; d < a.length; d++) { - var e = this.model.getChildren(a[d]); - if (null != e && 0 < e.length) { - var e = e.slice(), - f = this.model.getParent(a[d]), - g = this.model.getChildCount(f); - this.cellsAdded(e, f, g, null, null, !0); - b = b.concat(e) - } - } - this.cellsRemoved(this.addAllEdges(a)); - this.fireEvent(new mxEventObject(mxEvent.UNGROUP_CELLS, - "cells", a)) - } finally { - this.model.endUpdate() - } - } - return b -}; -mxGraph.prototype.removeCellsFromParent = function(a) { - null == a && (a = this.getSelectionCells()); - this.model.beginUpdate(); - try { - var b = this.getDefaultParent(), - c = this.model.getChildCount(b); - this.cellsAdded(a, b, c, null, null, !0); - this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS_FROM_PARENT, "cells", a)) - } finally { - this.model.endUpdate() - } - return a -}; -mxGraph.prototype.updateGroupBounds = function(a, b, c) { - null == a && (a = this.getSelectionCells()); - b = null != b ? b : 0; - c = null != c ? c : !1; - this.model.beginUpdate(); - try { - for (var d = 0; d < a.length; d++) { - var e = this.getCellGeometry(a[d]); - if (null != e) { - var f = this.getChildCells(a[d]); - if (null != f && 0 < f.length) { - var g = this.getBoundingBoxFromGeometry(f); - if (0 < g.width && 0 < g.height) { - var h = this.isSwimlane(a[d]) ? this.getStartSize(a[d]) : new mxRectangle, - e = e.clone(); - c && (e.x += g.x - h.width - b, e.y += g.y - h.height - b); - e.width = g.width + h.width + 2 * b; - e.height = - g.height + h.height + 2 * b; - this.model.setGeometry(a[d], e); - this.moveCells(f, -g.x + h.width + b, -g.y + h.height + b) - } - } - } - } - } finally { - this.model.endUpdate() - } - return a -}; -mxGraph.prototype.cloneCells = function(a, b) { - b = null != b ? b : !0; - var c = null; - if (null != a) { - for (var d = {}, c = [], e = 0; e < a.length; e++) { - var f = mxCellPath.create(a[e]); - d[f] = a[e]; - c.push(a[e]) - } - if (0 < c.length) - for (var f = this.view.scale, g = this.view.translate, c = this.model.cloneCells(a, !0), e = 0; e < a.length; e++) - if (!b && this.model.isEdge(c[e]) && null != this.getEdgeValidationError(c[e], this.model.getTerminal(c[e], !0), this.model.getTerminal(c[e], !1))) c[e] = null; - else { - var h = this.model.getGeometry(c[e]); - if (null != h) { - var k = this.view.getState(a[e]), - l = this.view.getState(this.model.getParent(a[e])); - if (null != k && null != l) { - var m = l.origin.x, - l = l.origin.y; - if (this.model.isEdge(c[e])) { - for (var k = k.absolutePoints, n = this.model.getTerminal(a[e], !0), p = mxCellPath.create(n); null != n && null == d[p];) n = this.model.getParent(n), p = mxCellPath.create(n); - null == n && h.setTerminalPoint(new mxPoint(k[0].x / f - g.x, k[0].y / f - g.y), !0); - n = this.model.getTerminal(a[e], !1); - for (p = mxCellPath.create(n); null != n && null == d[p];) n = this.model.getParent(n), p = mxCellPath.create(n); - null == n && (n = k.length - - 1, h.setTerminalPoint(new mxPoint(k[n].x / f - g.x, k[n].y / f - g.y), !1)); - h = h.points; - if (null != h) - for (k = 0; k < h.length; k++) h[k].x += m, h[k].y += l - } else h.x += m, h.y += l - } - } - } else c = [] - } - return c -}; -mxGraph.prototype.insertVertex = function(a, b, c, d, e, f, g, h, k) { - b = this.createVertex(a, b, c, d, e, f, g, h, k); - return this.addCell(b, a) -}; -mxGraph.prototype.createVertex = function(a, b, c, d, e, f, g, h, k) { - a = new mxGeometry(d, e, f, g); - a.relative = null != k ? k : !1; - c = new mxCell(c, a, h); - c.setId(b); - c.setVertex(!0); - c.setConnectable(!0); - return c -}; -mxGraph.prototype.insertEdge = function(a, b, c, d, e, f) { - b = this.createEdge(a, b, c, d, e, f); - return this.addEdge(b, a, d, e) -}; -mxGraph.prototype.createEdge = function(a, b, c, d, e, f) { - a = new mxCell(c, new mxGeometry, f); - a.setId(b); - a.setEdge(!0); - a.geometry.relative = !0; - return a -}; -mxGraph.prototype.addEdge = function(a, b, c, d, e) { - return this.addCell(a, b, e, c, d) -}; -mxGraph.prototype.addCell = function(a, b, c, d, e) { - return this.addCells([a], b, c, d, e)[0] -}; -mxGraph.prototype.addCells = function(a, b, c, d, e) { - null == b && (b = this.getDefaultParent()); - null == c && (c = this.model.getChildCount(b)); - this.model.beginUpdate(); - try { - this.cellsAdded(a, b, c, d, e, !1, !0), this.fireEvent(new mxEventObject(mxEvent.ADD_CELLS, "cells", a, "parent", b, "index", c, "source", d, "target", e)) - } finally { - this.model.endUpdate() - } - return a -}; -mxGraph.prototype.cellsAdded = function(a, b, c, d, e, f, g) { - if (null != a && null != b && null != c) { - this.model.beginUpdate(); - try { - for (var h = f ? this.view.getState(b) : null, k = null != h ? h.origin : null, l = new mxPoint(0, 0), h = 0; h < a.length; h++) - if (null == a[h]) c--; - else { - var m = this.model.getParent(a[h]); - if (null != k && a[h] != b && b != m) { - var n = this.view.getState(m), - p = null != n ? n.origin : l, - q = this.model.getGeometry(a[h]); - if (null != q) { - var s = p.x - k.x, - r = p.y - k.y, - q = q.clone(); - q.translate(s, r); - !q.relative && (this.model.isVertex(a[h]) && !this.isAllowNegativeCoordinates()) && - (q.x = Math.max(0, q.x), q.y = Math.max(0, q.y)); - this.model.setGeometry(a[h], q) - } - } - b == m && c + h > this.model.getChildCount(b) && c--; - this.model.add(b, a[h], c + h); - this.isExtendParentsOnAdd() && this.isExtendParent(a[h]) && this.extendParent(a[h]); - (null == g || g) && this.constrainChild(a[h]); - null != d && this.cellConnected(a[h], d, !0); - null != e && this.cellConnected(a[h], e, !1) - } - this.fireEvent(new mxEventObject(mxEvent.CELLS_ADDED, "cells", a, "parent", b, "index", c, "source", d, "target", e, "absolute", f)) - } finally { - this.model.endUpdate() - } - } -}; -mxGraph.prototype.removeCells = function(a, b) { - b = null != b ? b : !0; - null == a && (a = this.getDeletableCells(this.getSelectionCells())); - b && (a = this.getDeletableCells(this.addAllEdges(a))); - this.model.beginUpdate(); - try { - this.cellsRemoved(a), this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS, "cells", a, "includeEdges", b)) - } finally { - this.model.endUpdate() - } - return a -}; -mxGraph.prototype.cellsRemoved = function(a) { - if (null != a && 0 < a.length) { - var b = this.view.scale, - c = this.view.translate; - this.model.beginUpdate(); - try { - for (var d = {}, e = 0; e < a.length; e++) { - var f = mxCellPath.create(a[e]); - d[f] = a[e] - } - for (e = 0; e < a.length; e++) { - for (var g = this.getConnections(a[e]), h = 0; h < g.length; h++) - if (f = mxCellPath.create(g[h]), null == d[f]) { - var k = this.model.getGeometry(g[h]); - if (null != k) { - var l = this.view.getState(g[h]); - if (null != l) { - var k = k.clone(), - m = l.getVisibleTerminal(!0) == a[e], - n = l.absolutePoints, - p = m ? 0 : n.length - - 1; - k.setTerminalPoint(new mxPoint(n[p].x / b - c.x, n[p].y / b - c.y), m); - this.model.setTerminal(g[h], null, m); - this.model.setGeometry(g[h], k) - } - } - } - this.model.remove(a[e]) - } - this.fireEvent(new mxEventObject(mxEvent.CELLS_REMOVED, "cells", a)) - } finally { - this.model.endUpdate() - } - } -}; -mxGraph.prototype.splitEdge = function(a, b, c, d, e) { - d = d || 0; - e = e || 0; - null == c && (c = this.cloneCells([a])[0]); - var f = this.model.getParent(a), - g = this.model.getTerminal(a, !0); - this.model.beginUpdate(); - try { - this.cellsMoved(b, d, e, !1, !1), this.cellsAdded(b, f, this.model.getChildCount(f), null, null, !0), this.cellsAdded([c], f, this.model.getChildCount(f), g, b[0], !1), this.cellConnected(a, b[ - 0], !0), this.fireEvent(new mxEventObject(mxEvent.SPLIT_EDGE, "edge", a, "cells", b, "newEdge", c, "dx", d, "dy", e)) - } finally { - this.model.endUpdate() - } - return c -}; -mxGraph.prototype.toggleCells = function(a, b, c) { - null == b && (b = this.getSelectionCells()); - c && (b = this.addAllEdges(b)); - this.model.beginUpdate(); - try { - this.cellsToggled(b, a), this.fireEvent(new mxEventObject(mxEvent.TOGGLE_CELLS, "show", a, "cells", b, "includeEdges", c)) - } finally { - this.model.endUpdate() - } - return b -}; -mxGraph.prototype.cellsToggled = function(a, b) { - if (null != a && 0 < a.length) { - this.model.beginUpdate(); - try { - for (var c = 0; c < a.length; c++) this.model.setVisible(a[c], b) - } finally { - this.model.endUpdate() - } - } -}; -mxGraph.prototype.foldCells = function(a, b, c, d) { - b = null != b ? b : !1; - null == c && (c = this.getFoldableCells(this.getSelectionCells(), a)); - this.stopEditing(!1); - this.model.beginUpdate(); - try { - this.cellsFolded(c, a, b, d), this.fireEvent(new mxEventObject(mxEvent.FOLD_CELLS, "collapse", a, "recurse", b, "cells", c)) - } finally { - this.model.endUpdate() - } - return c -}; -mxGraph.prototype.cellsFolded = function(a, b, c, d) { - if (null != a && 0 < a.length) { - this.model.beginUpdate(); - try { - for (var e = 0; e < a.length; e++) - if ((!d || this.isCellFoldable(a[e], b)) && b != this.isCellCollapsed(a[e])) - if (this.model.setCollapsed(a[e], b), this.swapBounds(a[e], b), this.isExtendParent(a[e]) && this.extendParent(a[e]), c) { - var f = this.model.getChildren(a[e]); - this.foldCells(f, b, c) - } - this.fireEvent(new mxEventObject(mxEvent.CELLS_FOLDED, "cells", a, "collapse", b, "recurse", c)) - } finally { - this.model.endUpdate() - } - } -}; -mxGraph.prototype.swapBounds = function(a, b) { - if (null != a) { - var c = this.model.getGeometry(a); - null != c && (c = c.clone(), this.updateAlternateBounds(a, c, b), c.swap(), this.model.setGeometry(a, c)) - } -}; -mxGraph.prototype.updateAlternateBounds = function(a, b, c) { - if (null != a && null != b) { - c = this.view.getState(a); - c = null != c ? c.style : this.getCellStyle(a); - if (null == b.alternateBounds) { - var d = b; - this.collapseToPreferredSize && (a = this.getPreferredSizeForCell(a), null != a && (d = a, a = mxUtils.getValue(c, mxConstants.STYLE_STARTSIZE), 0 < a && (d.height = Math.max(d.height, a)))); - b.alternateBounds = new mxRectangle(0, 0, d.width, d.height) - } - if (null != b.alternateBounds) { - b.alternateBounds.x = b.x; - b.alternateBounds.y = b.y; - var e = mxUtils.toRadians(c[mxConstants.STYLE_ROTATION] || - "0"); - 0 != e && (a = b.alternateBounds.getCenterX() - b.getCenterX(), c = b.alternateBounds.getCenterY() - b.getCenterY(), d = Math.cos(e), e = Math.sin(e), b.alternateBounds.x += d * a - e * c - a, - b.alternateBounds.y += e * a + d * c - c) - } - } -}; -mxGraph.prototype.addAllEdges = function(a) { - var b = a.slice(); - return b = b.concat(this.getAllEdges(a)) -}; -mxGraph.prototype.getAllEdges = function(a) { - var b = []; - if (null != a) - for (var c = 0; c < a.length; c++) { - for (var d = this.model.getEdgeCount(a[c]), e = 0; e < d; e++) b.push(this.model.getEdgeAt(a[c], e)); - d = this.model.getChildren(a[c]); - b = b.concat(this.getAllEdges(d)) - } - return b -}; -mxGraph.prototype.updateCellSize = function(a, b) { - b = null != b ? b : !1; - this.model.beginUpdate(); - try { - this.cellSizeUpdated(a, b), this.fireEvent(new mxEventObject(mxEvent.UPDATE_CELL_SIZE, "cell", a, "ignoreChildren", b)) - } finally { - this.model.endUpdate() - } - return a -}; -mxGraph.prototype.cellSizeUpdated = function(a, b) { - if (null != a) { - this.model.beginUpdate(); - try { - var c = this.getPreferredSizeForCell(a), - d = this.model.getGeometry(a); - if (null != c && null != d) { - var e = this.isCellCollapsed(a), - d = d.clone(); - if (this.isSwimlane(a)) { - var f = this.view.getState(a), - g = null != f ? f.style : this.getCellStyle(a), - h = this.model.getStyle(a); - null == h && (h = ""); - mxUtils.getValue(g, mxConstants.STYLE_HORIZONTAL, !0) ? (h = mxUtils.setStyle(h, mxConstants.STYLE_STARTSIZE, c.height + 8), e && (d.height = c.height + 8), d.width = c.width) : - (h = mxUtils.setStyle(h, mxConstants.STYLE_STARTSIZE, c.width + 8), e && (d.width = c.width + 8), d.height = c.height); - this.model.setStyle(a, h) - } else d.width = c.width, d.height = c.height; - if (!b && !e) { - var k = this.view.getBounds(this.model.getChildren(a)); - if (null != k) { - var l = this.view.translate, - m = this.view.scale, - n = (k.y + k.height) / m - d.y - l.y; - d.width = Math.max(d.width, (k.x + k.width) / m - d.x - l.x); - d.height = Math.max(d.height, n) - } - } - this.cellsResized([a], [d]) - } - } finally { - this.model.endUpdate() - } - } -}; -mxGraph.prototype.getPreferredSizeForCell = function(a) { - var b = null; - if (null != a) { - var c = this.view.getState(a), - d = null != c ? c.style : this.getCellStyle(a); - if (null != d && !this.model.isEdge(a)) { - var e = d[mxConstants.STYLE_FONTSIZE] || mxConstants.DEFAULT_FONTSIZE, - f = 0, - b = 0; - if ((null != this.getImage(c) || null != d[mxConstants.STYLE_IMAGE]) && d[mxConstants.STYLE_SHAPE] == mxConstants.SHAPE_LABEL) d[mxConstants.STYLE_VERTICAL_ALIGN] == mxConstants.ALIGN_MIDDLE && - (f += parseFloat(d[mxConstants.STYLE_IMAGE_WIDTH]) || mxLabel.prototype.imageSize), - d[mxConstants.STYLE_ALIGN] != mxConstants.ALIGN_CENTER && (b += parseFloat(d[mxConstants.STYLE_IMAGE_HEIGHT]) || mxLabel.prototype.imageSize); - f += 2 * (d[mxConstants.STYLE_SPACING] || 0); - f += d[mxConstants.STYLE_SPACING_LEFT] || 0; - f += d[mxConstants.STYLE_SPACING_RIGHT] || 0; - b += 2 * (d[mxConstants.STYLE_SPACING] || 0); - b += d[mxConstants.STYLE_SPACING_TOP] || 0; - b += d[mxConstants.STYLE_SPACING_BOTTOM] || 0; - c = this.getFoldingImage(c); - null != c && (f += c.width + 8); - c = this.getLabel(a); - null != c && 0 < c.length ? (this.isHtmlLabel(a) || (c = c.replace(/\n/g, - "\x3cbr\x3e")), e = mxUtils.getSizeForString(c, e, d[mxConstants.STYLE_FONTFAMILY]), a = e.width + f, b = e.height + b, mxUtils.getValue(d, mxConstants.STYLE_HORIZONTAL, !0) || (d = b, - b = a, a = d), this.gridEnabled && (a = this.snap(a + this.gridSize / 2), b = this.snap(b + this.gridSize / 2)), b = new mxRectangle(0, 0, a, b)) : (d = 4 * this.gridSize, b = new mxRectangle( - 0, 0, d, d)) - } - } - return b -}; -mxGraph.prototype.handleGesture = function(a, b) { - if (0.2 < Math.abs(1 - b.scale)) { - var c = this.view.scale, - d = this.view.translate, - e = a.width * b.scale, - f = a.height * b.scale, - g = a.y - (f - a.height) / 2, - c = new mxRectangle(this.snap((a.x - (e - a.width) / 2) / c) - d.x, this.snap(g / c) - d.y, this.snap(e / c), this.snap(f / c)); - this.resizeCell(a.cell, c) - } -}; -mxGraph.prototype.resizeCell = function(a, b) { - return this.resizeCells([a], [b])[0] -}; -mxGraph.prototype.resizeCells = function(a, b) { - this.model.beginUpdate(); - try { - this.cellsResized(a, b), this.fireEvent(new mxEventObject(mxEvent.RESIZE_CELLS, "cells", a, "bounds", b)) - } finally { - this.model.endUpdate() - } - return a -}; -mxGraph.prototype.cellsResized = function(a, b) { - if (null != a && null != b && a.length == b.length) { - this.model.beginUpdate(); - try { - for (var c = 0; c < a.length; c++) { - var d = b[c], - e = this.model.getGeometry(a[c]); - if (null != e && (e.x != d.x || e.y != d.y || e.width != d.width || e.height != d.height)) { - e = e.clone(); - if (e.relative) { - var f = e.offset; - null != f && (f.x += d.x - e.x, f.y += d.y - e.y) - } else e.x = d.x, e.y = d.y; - e.width = d.width; - e.height = d.height; - !e.relative && (this.model.isVertex(a[c]) && !this.isAllowNegativeCoordinates()) && (e.x = Math.max(0, e.x), e.y = Math.max(0, - e.y)); - this.model.setGeometry(a[c], e); - this.isExtendParent(a[c]) && this.extendParent(a[c]) - } - } - this.resetEdgesOnResize && this.resetEdges(a); - this.fireEvent(new mxEventObject(mxEvent.CELLS_RESIZED, "cells", a, "bounds", b)) - } finally { - this.model.endUpdate() - } - } -}; -mxGraph.prototype.extendParent = function(a) { - if (null != a) { - var b = this.model.getParent(a), - c = this.model.getGeometry(b); - if (null != b && (null != c && !this.isCellCollapsed(b)) && (a = this.model.getGeometry(a), null != a && (c.width < a.x + a.width || c.height < a.y + a.height))) c = c.clone(), c.width = Math.max( - c.width, a.x + a.width), c.height = Math.max(c.height, a.y + a.height), this.cellsResized([b], [c]) - } -}; -mxGraph.prototype.importCells = function(a, b, c, d, e) { - return this.moveCells(a, b, c, !0, d, e) -}; -mxGraph.prototype.moveCells = function(a, b, c, d, e, f) { - b = null != b ? b : 0; - c = null != c ? c : 0; - d = null != d ? d : !1; - if (null != a && (0 != b || 0 != c || d || null != e)) { - this.model.beginUpdate(); - try { - d && (a = this.cloneCells(a, this.isCloneInvalidEdges()), null == e && (e = this.getDefaultParent())); - var g = this.isAllowNegativeCoordinates(); - null != e && this.setAllowNegativeCoordinates(!0); - this.cellsMoved(a, b, c, !d && this.isDisconnectOnMove() && this.isAllowDanglingEdges(), null == e); - this.setAllowNegativeCoordinates(g); - if (null != e) { - var h = this.model.getChildCount(e); - this.cellsAdded(a, e, h, null, null, !0) - } - this.fireEvent(new mxEventObject(mxEvent.MOVE_CELLS, "cells", a, "dx", b, "dy", c, "clone", d, "target", e, "event", f)) - } finally { - this.model.endUpdate() - } - } - return a -}; -mxGraph.prototype.cellsMoved = function(a, b, c, d, e) { - if (null != a && (0 != b || 0 != c)) { - this.model.beginUpdate(); - try { - d && this.disconnectGraph(a); - for (var f = 0; f < a.length; f++) this.translateCell(a[f], b, c), e && this.constrainChild(a[f]); - this.resetEdgesOnMove && this.resetEdges(a); - this.fireEvent(new mxEventObject(mxEvent.CELLS_MOVED, "cells", a, "dx", c, "dy", c, "disconnect", d)) - } finally { - this.model.endUpdate() - } - } -}; -mxGraph.prototype.translateCell = function(a, b, c) { - var d = this.model.getGeometry(a); - null != d && (d = d.clone(), d.translate(b, c), !d.relative && (this.model.isVertex(a) && !this.isAllowNegativeCoordinates()) && (d.x = Math.max(0, d.x), d.y = Math.max(0, d.y)), d.relative && ! - this.model.isEdge(a) && (null == d.offset ? d.offset = new mxPoint(b, c) : (d.offset.x += b, d.offset.y += c)), this.model.setGeometry(a, d)) -}; -mxGraph.prototype.getCellContainmentArea = function(a) { - if (null != a && !this.model.isEdge(a)) { - var b = this.model.getParent(a); - if (b == this.getDefaultParent() || b == this.getCurrentRoot()) return this.getMaximumGraphBounds(); - if (null != b && b != this.getDefaultParent()) { - var c = this.model.getGeometry(b); - if (null != c) { - var d = a = 0, - e = c.width, - c = c.height; - this.isSwimlane(b) && (b = this.getStartSize(b), a = b.width, e -= b.width, d = b.height, c -= b.height); - return new mxRectangle(a, d, e, c) - } - } - } - return null -}; -mxGraph.prototype.getMaximumGraphBounds = function() { - return this.maximumGraphBounds -}; -mxGraph.prototype.constrainChild = function(a) { - if (null != a) { - var b = this.model.getGeometry(a), - c = this.isConstrainChild(a) ? this.getCellContainmentArea(a) : this.getMaximumGraphBounds(); - if (null != b && null != c && !b.relative && (b.x < c.x || b.y < c.y || c.width < b.x + b.width || c.height < b.y + b.height)) a = this.getOverlap(a), 0 < c.width && (b.x = Math.min(b.x, c.x + - c.width - (1 - a) * b.width)), 0 < c.height && (b.y = Math.min(b.y, c.y + c.height - (1 - a) * b.height)), b.x = Math.max(b.x, c.x - b.width * a), b.y = Math.max(b.y, c.y - b.height * a) - } -}; -mxGraph.prototype.resetEdges = function(a) { - if (null != a) { - for (var b = {}, c = 0; c < a.length; c++) { - var d = mxCellPath.create(a[c]); - b[d] = a[c] - } - this.model.beginUpdate(); - try { - for (c = 0; c < a.length; c++) { - var e = this.model.getEdges(a[c]); - if (null != e) - for (d = 0; d < e.length; d++) { - var f = this.view.getState(e[d]), - g = null != f ? f.getVisibleTerminal(!0) : this.view.getVisibleTerminal(e[d], !0), - h = null != f ? f.getVisibleTerminal(!1) : this.view.getVisibleTerminal(e[d], !1), - k = mxCellPath.create(g), - l = mxCellPath.create(h); - (null == b[k] || null == b[l]) && this.resetEdge(e[d]) - } - this.resetEdges(this.model.getChildren(a[c])) - } - } finally { - this.model.endUpdate() - } - } -}; -mxGraph.prototype.resetEdge = function(a) { - var b = this.model.getGeometry(a); - null != b && (null != b.points && 0 < b.points.length) && (b = b.clone(), b.points = [], this.model.setGeometry(a, b)); - return a -}; -mxGraph.prototype.getAllConnectionConstraints = function(a, b) { - return null != a && null != a.shape && null != a.shape.stencil ? a.shape.stencil.constraints : null -}; -mxGraph.prototype.getConnectionConstraint = function(a, b, c) { - b = null; - var d = a.style[c ? mxConstants.STYLE_EXIT_X : mxConstants.STYLE_ENTRY_X]; - if (null != d) { - var e = a.style[c ? mxConstants.STYLE_EXIT_Y : mxConstants.STYLE_ENTRY_Y]; - null != e && (b = new mxPoint(parseFloat(d), parseFloat(e))) - } - d = !1; - null != b && (d = mxUtils.getValue(a.style, c ? mxConstants.STYLE_EXIT_PERIMETER : mxConstants.STYLE_ENTRY_PERIMETER, !0)); - return new mxConnectionConstraint(b, d) -}; -mxGraph.prototype.setConnectionConstraint = function(a, b, c, d) { - if (null != d) { - this.model.beginUpdate(); - try { - null == d || null == d.point ? (this.setCellStyles(c ? mxConstants.STYLE_EXIT_X : mxConstants.STYLE_ENTRY_X, null, [a]), this.setCellStyles(c ? mxConstants.STYLE_EXIT_Y : mxConstants.STYLE_ENTRY_Y, - null, [a]), this.setCellStyles(c ? mxConstants.STYLE_EXIT_PERIMETER : mxConstants.STYLE_ENTRY_PERIMETER, null, [a])) : null != d.point && (this.setCellStyles(c ? mxConstants.STYLE_EXIT_X : - mxConstants.STYLE_ENTRY_X, d.point.x, [a]), this.setCellStyles(c ? - mxConstants.STYLE_EXIT_Y : mxConstants.STYLE_ENTRY_Y, d.point.y, [a]), d.perimeter ? this.setCellStyles(c ? mxConstants.STYLE_EXIT_PERIMETER : mxConstants.STYLE_ENTRY_PERIMETER, null, [ - a - ]) : this.setCellStyles(c ? mxConstants.STYLE_EXIT_PERIMETER : mxConstants.STYLE_ENTRY_PERIMETER, "0", [a])) - } finally { - this.model.endUpdate() - } - } -}; -mxGraph.prototype.getConnectionPoint = function(a, b) { - var c = null; - if (null != a) { - var d = this.view.getPerimeterBounds(a), - e = new mxPoint(d.getCenterX(), d.getCenterY()), - f = a.style[mxConstants.STYLE_DIRECTION], - g = 0; - if (null != f && ("north" == f ? g += 270 : "west" == f ? g += 180 : "south" == f && (g += 90), "north" == f || "south" == f)) { - d.x += d.width / 2 - d.height / 2; - d.y += d.height / 2 - d.width / 2; - var h = d.width; - d.width = d.height; - d.height = h - } - if (null != b.point) { - var k = c = 1, - l = 0, - m = 0; - if (this.getModel().isVertex(a.cell)) { - var n = a.style[mxConstants.STYLE_FLIPH], - p = - a.style[mxConstants.STYLE_FLIPV]; - null != a.shape.stencil && (n = 1 == mxUtils.getValue(a.style, "stencilFlipH", 0) || n, p = 1 == mxUtils.getValue(a.style, "stencilFlipV", 0) || p); - if ("north" == f || "south" == f) h = n, n = p, p = h; - n && (c = -1, l = -d.width); - p && (k = -1, m = -d.height) - } - c = new mxPoint(d.x + b.point.x * d.width * c - l, d.y + b.point.y * d.height * k - m) - } - f = a.style[mxConstants.STYLE_ROTATION] || 0; - b.perimeter ? (0 != g && null != c && (h = d = 0, 90 == g ? h = 1 : 180 == g ? d = -1 : 270 == f && (h = -1), c = mxUtils.getRotatedPoint(c, d, h, e)), null != c && b.perimeter && (c = this.view - .getPerimeterPoint(a, - c, !1))) : f += g; - 0 != f && null != c && (g = mxUtils.toRadians(f), d = Math.cos(g), h = Math.sin(g), c = mxUtils.getRotatedPoint(c, d, h, e)) - } - return c -}; -mxGraph.prototype.connectCell = function(a, b, c, d) { - this.model.beginUpdate(); - try { - var e = this.model.getTerminal(a, c); - this.cellConnected(a, b, c, d); - this.fireEvent(new mxEventObject(mxEvent.CONNECT_CELL, "edge", a, "terminal", b, "source", c, "previous", e)) - } finally { - this.model.endUpdate() - } - return a -}; -mxGraph.prototype.cellConnected = function(a, b, c, d) { - if (null != a) { - this.model.beginUpdate(); - try { - var e = this.model.getTerminal(a, c); - this.setConnectionConstraint(a, b, c, d); - this.isPortsEnabled() && (d = null, this.isPort(b) && (d = b.getId(), b = this.getTerminalForPort(b, c)), this.setCellStyles(c ? mxConstants.STYLE_SOURCE_PORT : mxConstants.STYLE_TARGET_PORT, - d, [a])); - this.model.setTerminal(a, b, c); - this.resetEdgesOnConnect && this.resetEdge(a); - this.fireEvent(new mxEventObject(mxEvent.CELL_CONNECTED, "edge", a, "terminal", b, "source", - c, "previous", e)) - } finally { - this.model.endUpdate() - } - } -}; -mxGraph.prototype.disconnectGraph = function(a) { - if (null != a) { - this.model.beginUpdate(); - try { - for (var b = this.view.scale, c = this.view.translate, d = {}, e = 0; e < a.length; e++) { - var f = mxCellPath.create(a[e]); - d[f] = a[e] - } - for (e = 0; e < a.length; e++) - if (this.model.isEdge(a[e])) { - var g = this.model.getGeometry(a[e]); - if (null != g) { - var h = this.view.getState(a[e]), - k = this.view.getState(this.model.getParent(a[e])); - if (null != h && null != k) { - var g = g.clone(), - l = -k.origin.x, - m = -k.origin.y, - n = h.absolutePoints, - p = this.model.getTerminal(a[e], !0); - if (null != - p && this.isCellDisconnectable(a[e], p, !0)) { - for (var q = mxCellPath.create(p); null != p && null == d[q];) p = this.model.getParent(p), q = mxCellPath.create(p); - null == p && (g.setTerminalPoint(new mxPoint(n[0].x / b - c.x + l, n[0].y / b - c.y + m), !0), this.model.setTerminal(a[e], null, !0)) - } - var s = this.model.getTerminal(a[e], !1); - if (null != s && this.isCellDisconnectable(a[e], s, !1)) { - for (var r = mxCellPath.create(s); null != s && null == d[r];) s = this.model.getParent(s), r = mxCellPath.create(s); - if (null == s) { - var t = n.length - 1; - g.setTerminalPoint(new mxPoint(n[t].x / - b - c.x + l, n[t].y / b - c.y + m), !1); - this.model.setTerminal(a[e], null, !1) - } - } - this.model.setGeometry(a[e], g) - } - } - } - } finally { - this.model.endUpdate() - } - } -}; -mxGraph.prototype.getCurrentRoot = function() { - return this.view.currentRoot -}; -mxGraph.prototype.getTranslateForRoot = function(a) { - return null -}; -mxGraph.prototype.isPort = function(a) { - return !1 -}; -mxGraph.prototype.getTerminalForPort = function(a, b) { - return this.model.getParent(a) -}; -mxGraph.prototype.getChildOffsetForCell = function(a) { - return null -}; -mxGraph.prototype.enterGroup = function(a) { - a = a || this.getSelectionCell(); - null != a && this.isValidRoot(a) && (this.view.setCurrentRoot(a), this.clearSelection()) -}; -mxGraph.prototype.exitGroup = function() { - var a = this.model.getRoot(), - b = this.getCurrentRoot(); - if (null != b) { - for (var c = this.model.getParent(b); c != a && !this.isValidRoot(c) && this.model.getParent(c) != a;) c = this.model.getParent(c); - c == a || this.model.getParent(c) == a ? this.view.setCurrentRoot(null) : this.view.setCurrentRoot(c); - null != this.view.getState(b) && this.setSelectionCell(b) - } -}; -mxGraph.prototype.home = function() { - var a = this.getCurrentRoot(); - null != a && (this.view.setCurrentRoot(null), null != this.view.getState(a) && this.setSelectionCell(a)) -}; -mxGraph.prototype.isValidRoot = function(a) { - return null != a -}; -mxGraph.prototype.getGraphBounds = function() { - return this.view.getGraphBounds() -}; -mxGraph.prototype.getCellBounds = function(a, b, c) { - var d = [a]; - b && (d = d.concat(this.model.getEdges(a))); - d = this.view.getBounds(d); - if (c) { - c = this.model.getChildCount(a); - for (var e = 0; e < c; e++) { - var f = this.getCellBounds(this.model.getChildAt(a, e), b, !0); - null != d ? d.add(f) : d = f - } - } - return d -}; -mxGraph.prototype.getBoundingBoxFromGeometry = function(a, b) { - b = null != b ? b : !1; - var c = null; - if (null != a) - for (var d = 0; d < a.length; d++) - if (b || this.model.isVertex(a[d])) { - var e = this.getCellGeometry(a[d]); - if (null != e) { - var f = e.points; - if (null != f && 0 < f.length) { - for (var g = new mxRectangle(f[0].x, f[0].y, 0, 0), h = function(a) { - null != a && g.add(new mxRectangle(a.x, a.y, 0, 0)) - }, k = 1; k < f.length; k++) h(f[k]); - h(e.getTerminalPoint(!0)); - h(e.getTerminalPoint(!1)) - } - null == c ? c = new mxRectangle(e.x, e.y, e.width, e.height) : c.add(e) - } - } - return c -}; -mxGraph.prototype.refresh = function(a) { - this.view.clear(a, null == a); - this.view.validate(); - this.sizeDidChange(); - this.fireEvent(new mxEventObject(mxEvent.REFRESH)) -}; -mxGraph.prototype.snap = function(a) { - this.gridEnabled && (a = Math.round(a / this.gridSize) * this.gridSize); - return a -}; -mxGraph.prototype.panGraph = function(a, b) { - if (this.useScrollbarsForPanning && mxUtils.hasScrollbars(this.container)) this.container.scrollLeft = -a, this.container.scrollTop = -b; - else { - var c = this.view.getCanvas(); - if (this.dialect == mxConstants.DIALECT_SVG) - if (0 == a && 0 == b) { - if (mxClient.IS_IE ? c.setAttribute("transform", "translate(" + a + "," + b + ")") : c.removeAttribute("transform"), null != this.shiftPreview1) { - for (var d = this.shiftPreview1.firstChild; null != d;) { - var e = d.nextSibling; - this.container.appendChild(d); - d = e - } - this.shiftPreview1.parentNode.removeChild(this.shiftPreview1); - this.shiftPreview1 = null; - this.container.appendChild(c.parentNode); - for (d = this.shiftPreview2.firstChild; null != d;) e = d.nextSibling, this.container.appendChild(d), d = e; - this.shiftPreview2.parentNode.removeChild(this.shiftPreview2); - this.shiftPreview2 = null - } - } else { - c.setAttribute("transform", "translate(" + a + "," + b + ")"); - if (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"; - for (var f = this.shiftPreview1, d = this.container.firstChild; null != d;) e = d.nextSibling, d != c.parentNode ? f.appendChild(d) : f = this.shiftPreview2, d = e; - this.container.insertBefore(this.shiftPreview1, c.parentNode); - this.container.appendChild(this.shiftPreview2) - } - this.shiftPreview1.style.left = a + "px"; - this.shiftPreview1.style.top = b + "px"; - this.shiftPreview2.style.left = a + "px"; - this.shiftPreview2.style.top = b + "px" - } else c.style.left = - a + "px", c.style.top = b + "px"; - this.panDx = a; - this.panDy = b; - 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(a, b) { - this.zoom(a / this.view.scale, b) -}; -mxGraph.prototype.zoom = function(a, b) { - b = null != b ? b : this.centerZoom; - var c = this.view.scale * a, - d = this.view.getState(this.getSelectionCell()); - if (this.keepSelectionVisibleOnZoom && null != d) d = new mxRectangle(d.x * a, d.y * a, d.width * a, d.height * a), this.view.scale = c, this.scrollRectToVisible(d) || (this.view.revalidate(), - this.view.setScale(c)); - else if (b && !mxUtils.hasScrollbars(this.container)) { - var d = this.container.offsetWidth, - e = this.container.offsetHeight; - if (1 < a) var f = (a - 1) / (2 * c), - d = d * -f, - e = e * -f; - else f = (1 / a - 1) / (2 * this.view.scale), - d *= f, e *= f; - this.view.scaleAndTranslate(c, this.view.translate.x + d, this.view.translate.y + e) - } else this.view.setScale(c), mxUtils.hasScrollbars(this.container) && (e = d = 0, b && (d = this.container.offsetWidth * (a - 1) / 2, e = this.container.offsetHeight * (a - 1) / 2), this.container - .scrollLeft = Math.round(this.container.scrollLeft * a + d), this.container.scrollTop = Math.round(this.container.scrollTop * a + e)) -}; -mxGraph.prototype.zoomToRect = function(a) { - var b = this.container.clientWidth / a.width / (this.container.clientHeight / a.height); - a.x = Math.max(0, a.x); - a.y = Math.max(0, a.y); - var c = Math.min(this.container.scrollWidth, a.x + a.width), - d = Math.min(this.container.scrollHeight, a.y + a.height); - a.width = c - a.x; - a.height = d - a.y; - 1 > b ? (b = a.height / b, c = (b - a.height) / 2, a.height = b, b = Math.min(a.y, c), a.y -= b, d = Math.min(this.container.scrollHeight, a.y + a.height), a.height = d - a.y) : (b *= a.width, c = - (b - a.width) / 2, a.width = b, b = Math.min(a.x, c), a.x -= b, - c = Math.min(this.container.scrollWidth, a.x + a.width), a.width = c - a.x); - b = this.container.clientWidth / a.width; - c = this.view.scale * b; - mxUtils.hasScrollbars(this.container) ? (this.view.setScale(c), this.container.scrollLeft = Math.round(a.x * b), this.container.scrollTop = Math.round(a.y * b)) : this.view.scaleAndTranslate(c, - this.view.translate.x - a.x / this.view.scale, this.view.translate.y - a.y / this.view.scale) -}; -mxGraph.prototype.fit = function(a, b) { - if (null != this.container) { - a = null != a ? a : 0; - b = null != b ? b : !1; - var c = this.container.clientWidth, - d = this.container.clientHeight, - e = this.view.getGraphBounds(); - b && (null != e.x && null != e.y) && (e.width += e.x, e.height += e.y, e.x = 0, e.y = 0); - var f = this.view.scale, - g = e.width / f, - h = e.height / f; - null != this.backgroundImage && (g = Math.max(g, this.backgroundImage.width - e.x / f), h = Math.max(h, this.backgroundImage.height - e.y / f)); - var k = b ? a : 2 * a, - c = Math.floor(100 * Math.min(c / (g + k), d / (h + k))) / 100; - null != this.minFitScale && - (c = Math.max(c, this.minFitScale)); - null != this.maxFitScale && (c = Math.min(c, this.maxFitScale)); - b ? this.view.scale != c && this.view.setScale(c) : mxUtils.hasScrollbars(this.container) ? (this.view.setScale(c), null != e.x && (this.container.scrollLeft = Math.round(e.x / f) * c - a - - Math.max(0, (this.container.clientWidth - g * c) / 2)), null != e.y && (this.container.scrollTop = Math.round(e.y / f) * c - a - Math.max(0, (this.container.clientHeight - h * c) / 2))) : - this.view.scaleAndTranslate(c, null != e.x ? Math.floor(this.view.translate.x - e.x / f + a + 1) : a, null != - e.y ? Math.floor(this.view.translate.y - e.y / f + a + 1) : a) - } - return this.view.scale -}; -mxGraph.prototype.scrollCellToVisible = function(a, b) { - var c = -this.view.translate.x, - d = -this.view.translate.y, - e = this.view.getState(a); - null != e && (c = new mxRectangle(c + e.x, d + e.y, e.width, e.height), b && null != this.container && (d = this.container.clientWidth, e = this.container.clientHeight, c.x = c.getCenterX() - d / - 2, c.width = d, c.y = c.getCenterY() - e / 2, c.height = e), this.scrollRectToVisible(c) && this.view.setTranslate(this.view.translate.x, this.view.translate.y)) -}; -mxGraph.prototype.scrollRectToVisible = function(a) { - var b = !1; - if (null != a) { - var c = this.container.offsetWidth, - d = this.container.offsetHeight, - e = Math.min(c, a.width), - f = Math.min(d, a.height); - if (mxUtils.hasScrollbars(this.container)) { - c = this.container; - a.x += this.view.translate.x; - a.y += this.view.translate.y; - var g = c.scrollLeft - a.x, - d = Math.max(g - c.scrollLeft, 0); - 0 < g ? c.scrollLeft -= g + 2 : (g = a.x + e - c.scrollLeft - c.clientWidth, 0 < g && (c.scrollLeft += g + 2)); - e = c.scrollTop - a.y; - g = Math.max(0, e - c.scrollTop); - 0 < e ? c.scrollTop -= e + 2 : (e = a.y + - f - c.scrollTop - c.clientHeight, 0 < e && (c.scrollTop += e + 2)); - !this.useScrollbarsForPanning && (0 != d || 0 != g) && this.view.setTranslate(d, g) - } else { - var g = -this.view.translate.x, - h = -this.view.translate.y, - k = this.view.scale; - a.x + e > g + c && (this.view.translate.x -= (a.x + e - c - g) / k, b = !0); - a.y + f > h + d && (this.view.translate.y -= (a.y + f - d - h) / k, b = !0); - a.x < g && (this.view.translate.x += (g - a.x) / k, b = !0); - a.y < h && (this.view.translate.y += (h - a.y) / k, b = !0); - b && (this.view.refresh(), null != this.selectionCellsHandler && this.selectionCellsHandler.refresh()) - } - } - return b -}; -mxGraph.prototype.getCellGeometry = function(a) { - return this.model.getGeometry(a) -}; -mxGraph.prototype.isCellVisible = function(a) { - return this.model.isVisible(a) -}; -mxGraph.prototype.isCellCollapsed = function(a) { - return this.model.isCollapsed(a) -}; -mxGraph.prototype.isCellConnectable = function(a) { - return this.model.isConnectable(a) -}; -mxGraph.prototype.isOrthogonal = function(a) { - var b = a.style[mxConstants.STYLE_ORTHOGONAL]; - if (null != b) return b; - a = this.view.getEdgeStyle(a); - return a == mxEdgeStyle.SegmentConnector || a == mxEdgeStyle.ElbowConnector || a == mxEdgeStyle.SideToSide || a == mxEdgeStyle.TopToBottom || a == mxEdgeStyle.EntityRelation || a == mxEdgeStyle.OrthConnector -}; -mxGraph.prototype.isLoop = function(a) { - var b = a.getVisibleTerminalState(!0); - a = a.getVisibleTerminalState(!1); - return null != b && b == a -}; -mxGraph.prototype.isCloneEvent = function(a) { - return mxEvent.isControlDown(a) -}; -mxGraph.prototype.isToggleEvent = function(a) { - return mxClient.IS_MAC ? mxEvent.isMetaDown(a) : mxEvent.isControlDown(a) -}; -mxGraph.prototype.isGridEnabledEvent = function(a) { - return null != a && !mxEvent.isAltDown(a) -}; -mxGraph.prototype.isConstrainedEvent = function(a) { - return mxEvent.isShiftDown(a) -}; -mxGraph.prototype.isForceMarqueeEvent = function(a) { - return mxEvent.isAltDown(a) -}; -mxGraph.prototype.validationAlert = function(a) { - mxUtils.alert(a) -}; -mxGraph.prototype.isEdgeValid = function(a, b, c) { - return null == this.getEdgeValidationError(a, b, c) -}; -mxGraph.prototype.getEdgeValidationError = function(a, b, c) { - if (null != a && !this.isAllowDanglingEdges() && (null == b || null == c)) return ""; - if (null != a && null == this.model.getTerminal(a, !0) && null == this.model.getTerminal(a, !1)) return null; - if (!this.allowLoops && b == c && null != b || !this.isValidConnection(b, c)) return ""; - if (null != b && null != c) { - var d = ""; - if (!this.multigraph) { - var e = this.model.getEdgesBetween(b, c, !0); - if (1 < e.length || 1 == e.length && e[0] != a) d += (mxResources.get(this.alreadyConnectedResource) || this.alreadyConnectedResource) + - "\n" - } - var e = this.model.getDirectedEdgeCount(b, !0, a), - f = this.model.getDirectedEdgeCount(c, !1, a); - if (null != this.multiplicities) - for (var g = 0; g < this.multiplicities.length; g++) { - var h = this.multiplicities[g].check(this, a, b, c, e, f); - null != h && (d += h) - } - h = this.validateEdge(a, b, c); - null != h && (d += h); - return 0 < d.length ? d : null - } - return this.allowDanglingEdges ? null : "" -}; -mxGraph.prototype.validateEdge = function(a, b, c) { - return null -}; -mxGraph.prototype.validateGraph = function(a, b) { - a = null != a ? a : this.model.getRoot(); - b = null != b ? b : {}; - for (var c = !0, d = this.model.getChildCount(a), e = 0; e < d; e++) { - var f = this.model.getChildAt(a, e), - g = b; - this.isValidRoot(f) && (g = {}); - g = this.validateGraph(f, g); - null != g ? this.setCellWarning(f, g.replace(/\n/g, "\x3cbr\x3e")) : this.setCellWarning(f, null); - c = c && null == g - } - d = ""; - this.isCellCollapsed(a) && !c && (d += (mxResources.get(this.containsValidationErrorsResource) || this.containsValidationErrorsResource) + "\n"); - d = this.model.isEdge(a) ? - d + (this.getEdgeValidationError(a, this.model.getTerminal(a, !0), this.model.getTerminal(a, !1)) || "") : d + (this.getCellValidationError(a) || ""); - e = this.validateCell(a, b); - null != e && (d += e); - null == this.model.getParent(a) && this.view.validate(); - return 0 < d.length || !c ? d : null -}; -mxGraph.prototype.getCellValidationError = function(a) { - var b = this.model.getDirectedEdgeCount(a, !0), - c = this.model.getDirectedEdgeCount(a, !1); - a = this.model.getValue(a); - var d = ""; - if (null != this.multiplicities) - for (var e = 0; e < this.multiplicities.length; e++) { - var f = this.multiplicities[e]; - if (f.source && mxUtils.isNode(a, f.type, f.attr, f.value) && (0 == f.max && 0 < b || 1 == f.min && 0 == b || 1 == f.max && 1 < b)) d += f.countError + "\n"; - else if (!f.source && mxUtils.isNode(a, f.type, f.attr, f.value) && (0 == f.max && 0 < c || 1 == f.min && 0 == c || 1 == f.max && 1 < - c)) d += f.countError + "\n" - } - return 0 < d.length ? d : null -}; -mxGraph.prototype.validateCell = function(a, b) { - return null -}; -mxGraph.prototype.getBackgroundImage = function() { - return this.backgroundImage -}; -mxGraph.prototype.setBackgroundImage = function(a) { - this.backgroundImage = a -}; -mxGraph.prototype.getFoldingImage = function(a) { - if (null != a && this.foldingEnabled && !this.getModel().isEdge(a.cell)) { - var b = this.isCellCollapsed(a.cell); - if (this.isCellFoldable(a.cell, !b)) return b ? this.collapsedImage : this.expandedImage - } - return null -}; -mxGraph.prototype.convertValueToString = function(a) { - a = this.model.getValue(a); - if (null != a) { - if (mxUtils.isNode(a)) return a.nodeName; - if ("function" == typeof a.toString) return a.toString() - } - return "" -}; -mxGraph.prototype.getLabel = function(a) { - var b = ""; - if (this.labelsVisible && null != a) { - var c = this.view.getState(a), - c = null != c ? c.style : this.getCellStyle(a); - mxUtils.getValue(c, mxConstants.STYLE_NOLABEL, !1) || (b = this.convertValueToString(a)) - } - return b -}; -mxGraph.prototype.isHtmlLabel = function(a) { - return this.isHtmlLabels() -}; -mxGraph.prototype.isHtmlLabels = function() { - return this.htmlLabels -}; -mxGraph.prototype.setHtmlLabels = function(a) { - this.htmlLabels = a -}; -mxGraph.prototype.isWrapping = function(a) { - var b = this.view.getState(a); - a = null != b ? b.style : this.getCellStyle(a); - return null != a ? "wrap" == a[mxConstants.STYLE_WHITE_SPACE] : !1 -}; -mxGraph.prototype.isLabelClipped = function(a) { - var b = this.view.getState(a); - a = null != b ? b.style : this.getCellStyle(a); - return null != a ? "hidden" == a[mxConstants.STYLE_OVERFLOW] : !1 -}; -mxGraph.prototype.getTooltip = function(a, b, c, d) { - var e = null; - if (null != a) { - if (null != a.control && (b == a.control.node || b.parentNode == a.control.node)) e = this.collapseExpandResource, e = mxResources.get(e) || e; - null == e && null != a.overlays && a.overlays.visit(function(a, c) { - if (null == e && (b == c.node || b.parentNode == c.node)) e = c.overlay.toString() - }); - null == e && (c = this.selectionCellsHandler.getHandler(a.cell), null != c && "function" == typeof c.getTooltipForNode && (e = c.getTooltipForNode(b))); - null == e && (e = this.getTooltipForCell(a.cell)) - } - return e -}; -mxGraph.prototype.getTooltipForCell = function(a) { - var b = null; - return b = null != a && null != a.getTooltip ? a.getTooltip() : this.convertValueToString(a) -}; -mxGraph.prototype.getCursorForCell = function(a) { - return null -}; -mxGraph.prototype.getStartSize = function(a) { - var b = new mxRectangle, - c = this.view.getState(a); - a = null != c ? c.style : this.getCellStyle(a); - null != a && (c = parseInt(mxUtils.getValue(a, mxConstants.STYLE_STARTSIZE, mxConstants.DEFAULT_STARTSIZE)), mxUtils.getValue(a, mxConstants.STYLE_HORIZONTAL, !0) ? b.height = c : b.width = c); - return b -}; -mxGraph.prototype.getImage = function(a) { - return null != a && null != a.style ? a.style[mxConstants.STYLE_IMAGE] : null -}; -mxGraph.prototype.getVerticalAlign = function(a) { - return null != a && null != a.style ? a.style[mxConstants.STYLE_VERTICAL_ALIGN] || mxConstants.ALIGN_MIDDLE : null -}; -mxGraph.prototype.getIndicatorColor = function(a) { - return null != a && null != a.style ? a.style[mxConstants.STYLE_INDICATOR_COLOR] : null -}; -mxGraph.prototype.getIndicatorGradientColor = function(a) { - return null != a && null != a.style ? a.style[mxConstants.STYLE_INDICATOR_GRADIENTCOLOR] : null -}; -mxGraph.prototype.getIndicatorShape = function(a) { - return null != a && null != a.style ? a.style[mxConstants.STYLE_INDICATOR_SHAPE] : null -}; -mxGraph.prototype.getIndicatorImage = function(a) { - return null != a && null != a.style ? a.style[mxConstants.STYLE_INDICATOR_IMAGE] : null -}; -mxGraph.prototype.getBorder = function() { - return this.border -}; -mxGraph.prototype.setBorder = function(a) { - this.border = a -}; -mxGraph.prototype.isSwimlane = function(a) { - if (null != a && this.model.getParent(a) != this.model.getRoot()) { - var b = this.view.getState(a), - b = null != b ? b.style : this.getCellStyle(a); - if (null != b && !this.model.isEdge(a)) return b[mxConstants.STYLE_SHAPE] == mxConstants.SHAPE_SWIMLANE - } - return !1 -}; -mxGraph.prototype.isResizeContainer = function() { - return this.resizeContainer -}; -mxGraph.prototype.setResizeContainer = function(a) { - this.resizeContainer = a -}; -mxGraph.prototype.isEnabled = function() { - return this.enabled -}; -mxGraph.prototype.setEnabled = function(a) { - this.enabled = a -}; -mxGraph.prototype.isEscapeEnabled = function() { - return this.escapeEnabled -}; -mxGraph.prototype.setEscapeEnabled = function(a) { - this.escapeEnabled = a -}; -mxGraph.prototype.isInvokesStopCellEditing = function() { - return this.invokesStopCellEditing -}; -mxGraph.prototype.setInvokesStopCellEditing = function(a) { - this.invokesStopCellEditing = a -}; -mxGraph.prototype.isEnterStopsCellEditing = function() { - return this.enterStopsCellEditing -}; -mxGraph.prototype.setEnterStopsCellEditing = function(a) { - this.enterStopsCellEditing = a -}; -mxGraph.prototype.isCellLocked = function(a) { - var b = this.model.getGeometry(a); - return this.isCellsLocked() || null != b && this.model.isVertex(a) && b.relative -}; -mxGraph.prototype.isCellsLocked = function() { - return this.cellsLocked -}; -mxGraph.prototype.setCellsLocked = function(a) { - this.cellsLocked = a -}; -mxGraph.prototype.getCloneableCells = function(a) { - return this.model.filterCells(a, mxUtils.bind(this, function(a) { - return this.isCellCloneable(a) - })) -}; -mxGraph.prototype.isCellCloneable = function(a) { - var b = this.view.getState(a); - a = null != b ? b.style : this.getCellStyle(a); - return this.isCellsCloneable() && 0 != a[mxConstants.STYLE_CLONEABLE] -}; -mxGraph.prototype.isCellsCloneable = function() { - return this.cellsCloneable -}; -mxGraph.prototype.setCellsCloneable = function(a) { - this.cellsCloneable = a -}; -mxGraph.prototype.getExportableCells = function(a) { - return this.model.filterCells(a, mxUtils.bind(this, function(a) { - return this.canExportCell(a) - })) -}; -mxGraph.prototype.canExportCell = function(a) { - return this.exportEnabled -}; -mxGraph.prototype.getImportableCells = function(a) { - return this.model.filterCells(a, mxUtils.bind(this, function(a) { - return this.canImportCell(a) - })) -}; -mxGraph.prototype.canImportCell = function(a) { - return this.importEnabled -}; -mxGraph.prototype.isCellSelectable = function(a) { - return this.isCellsSelectable() -}; -mxGraph.prototype.isCellsSelectable = function() { - return this.cellsSelectable -}; -mxGraph.prototype.setCellsSelectable = function(a) { - this.cellsSelectable = a -}; -mxGraph.prototype.getDeletableCells = function(a) { - return this.model.filterCells(a, mxUtils.bind(this, function(a) { - return this.isCellDeletable(a) - })) -}; -mxGraph.prototype.isCellDeletable = function(a) { - var b = this.view.getState(a); - a = null != b ? b.style : this.getCellStyle(a); - return this.isCellsDeletable() && 0 != a[mxConstants.STYLE_DELETABLE] -}; -mxGraph.prototype.isCellsDeletable = function() { - return this.cellsDeletable -}; -mxGraph.prototype.setCellsDeletable = function(a) { - this.cellsDeletable = a -}; -mxGraph.prototype.isLabelMovable = function(a) { - return !this.isCellLocked(a) && (this.model.isEdge(a) && this.edgeLabelsMovable || this.model.isVertex(a) && this.vertexLabelsMovable) -}; -mxGraph.prototype.getMovableCells = function(a) { - return this.model.filterCells(a, mxUtils.bind(this, function(a) { - return this.isCellMovable(a) - })) -}; -mxGraph.prototype.isCellMovable = function(a) { - var b = this.view.getState(a), - b = null != b ? b.style : this.getCellStyle(a); - return this.isCellsMovable() && !this.isCellLocked(a) && 0 != b[mxConstants.STYLE_MOVABLE] -}; -mxGraph.prototype.isCellsMovable = function() { - return this.cellsMovable -}; -mxGraph.prototype.setCellsMovable = function(a) { - this.cellsMovable = a -}; -mxGraph.prototype.isGridEnabled = function() { - return this.gridEnabled -}; -mxGraph.prototype.setGridEnabled = function(a) { - this.gridEnabled = a -}; -mxGraph.prototype.isPortsEnabled = function() { - return this.portsEnabled -}; -mxGraph.prototype.setPortsEnabled = function(a) { - this.portsEnabled = a -}; -mxGraph.prototype.getGridSize = function() { - return this.gridSize -}; -mxGraph.prototype.setGridSize = function(a) { - this.gridSize = a -}; -mxGraph.prototype.getTolerance = function() { - return this.tolerance -}; -mxGraph.prototype.setTolerance = function(a) { - this.tolerance = a -}; -mxGraph.prototype.isVertexLabelsMovable = function() { - return this.vertexLabelsMovable -}; -mxGraph.prototype.setVertexLabelsMovable = function(a) { - this.vertexLabelsMovable = a -}; -mxGraph.prototype.isEdgeLabelsMovable = function() { - return this.edgeLabelsMovable -}; -mxGraph.prototype.setEdgeLabelsMovable = function(a) { - this.edgeLabelsMovable = a -}; -mxGraph.prototype.isSwimlaneNesting = function() { - return this.swimlaneNesting -}; -mxGraph.prototype.setSwimlaneNesting = function(a) { - this.swimlaneNesting = a -}; -mxGraph.prototype.isSwimlaneSelectionEnabled = function() { - return this.swimlaneSelectionEnabled -}; -mxGraph.prototype.setSwimlaneSelectionEnabled = function(a) { - this.swimlaneSelectionEnabled = a -}; -mxGraph.prototype.isMultigraph = function() { - return this.multigraph -}; -mxGraph.prototype.setMultigraph = function(a) { - this.multigraph = a -}; -mxGraph.prototype.isAllowLoops = function() { - return this.allowLoops -}; -mxGraph.prototype.setAllowDanglingEdges = function(a) { - this.allowDanglingEdges = a -}; -mxGraph.prototype.isAllowDanglingEdges = function() { - return this.allowDanglingEdges -}; -mxGraph.prototype.setConnectableEdges = function(a) { - this.connectableEdges = a -}; -mxGraph.prototype.isConnectableEdges = function() { - return this.connectableEdges -}; -mxGraph.prototype.setCloneInvalidEdges = function(a) { - this.cloneInvalidEdges = a -}; -mxGraph.prototype.isCloneInvalidEdges = function() { - return this.cloneInvalidEdges -}; -mxGraph.prototype.setAllowLoops = function(a) { - this.allowLoops = a -}; -mxGraph.prototype.isDisconnectOnMove = function() { - return this.disconnectOnMove -}; -mxGraph.prototype.setDisconnectOnMove = function(a) { - this.disconnectOnMove = a -}; -mxGraph.prototype.isDropEnabled = function() { - return this.dropEnabled -}; -mxGraph.prototype.setDropEnabled = function(a) { - this.dropEnabled = a -}; -mxGraph.prototype.isSplitEnabled = function() { - return this.splitEnabled -}; -mxGraph.prototype.setSplitEnabled = function(a) { - this.splitEnabled = a -}; -mxGraph.prototype.isCellResizable = function(a) { - var b = this.view.getState(a), - b = null != b ? b.style : this.getCellStyle(a); - return this.isCellsResizable() && !this.isCellLocked(a) && 0 != b[mxConstants.STYLE_RESIZABLE] -}; -mxGraph.prototype.isCellsResizable = function() { - return this.cellsResizable -}; -mxGraph.prototype.setCellsResizable = function(a) { - this.cellsResizable = a -}; -mxGraph.prototype.isTerminalPointMovable = function(a, b) { - return !0 -}; -mxGraph.prototype.isCellBendable = function(a) { - var b = this.view.getState(a), - b = null != b ? b.style : this.getCellStyle(a); - return this.isCellsBendable() && !this.isCellLocked(a) && 0 != b[mxConstants.STYLE_BENDABLE] -}; -mxGraph.prototype.isCellsBendable = function() { - return this.cellsBendable -}; -mxGraph.prototype.setCellsBendable = function(a) { - this.cellsBendable = a -}; -mxGraph.prototype.isCellEditable = function(a) { - var b = this.view.getState(a), - b = null != b ? b.style : this.getCellStyle(a); - return this.isCellsEditable() && !this.isCellLocked(a) && 0 != b[mxConstants.STYLE_EDITABLE] -}; -mxGraph.prototype.isCellsEditable = function() { - return this.cellsEditable -}; -mxGraph.prototype.setCellsEditable = function(a) { - this.cellsEditable = a -}; -mxGraph.prototype.isCellDisconnectable = function(a, b, c) { - return this.isCellsDisconnectable() && !this.isCellLocked(a) -}; -mxGraph.prototype.isCellsDisconnectable = function() { - return this.cellsDisconnectable -}; -mxGraph.prototype.setCellsDisconnectable = function(a) { - this.cellsDisconnectable = a -}; -mxGraph.prototype.isValidSource = function(a) { - return null == a && this.allowDanglingEdges || null != a && (!this.model.isEdge(a) || this.connectableEdges) && this.isCellConnectable(a) -}; -mxGraph.prototype.isValidTarget = function(a) { - return this.isValidSource(a) -}; -mxGraph.prototype.isValidConnection = function(a, b) { - return this.isValidSource(a) && this.isValidTarget(b) -}; -mxGraph.prototype.setConnectable = function(a) { - this.connectionHandler.setEnabled(a) -}; -mxGraph.prototype.isConnectable = function(a) { - return this.connectionHandler.isEnabled() -}; -mxGraph.prototype.setTooltips = function(a) { - this.tooltipHandler.setEnabled(a) -}; -mxGraph.prototype.setPanning = function(a) { - this.panningHandler.panningEnabled = a -}; -mxGraph.prototype.isEditing = function(a) { - if (null != this.cellEditor) { - var b = this.cellEditor.getEditingCell(); - return null == a ? null != b : a == b - } - return !1 -}; -mxGraph.prototype.isAutoSizeCell = function(a) { - var b = this.view.getState(a); - a = null != b ? b.style : this.getCellStyle(a); - return this.isAutoSizeCells() || 1 == a[mxConstants.STYLE_AUTOSIZE] -}; -mxGraph.prototype.isAutoSizeCells = function() { - return this.autoSizeCells -}; -mxGraph.prototype.setAutoSizeCells = function(a) { - this.autoSizeCells = a -}; -mxGraph.prototype.isExtendParent = function(a) { - return !this.getModel().isEdge(a) && this.isExtendParents() -}; -mxGraph.prototype.isExtendParents = function() { - return this.extendParents -}; -mxGraph.prototype.setExtendParents = function(a) { - this.extendParents = a -}; -mxGraph.prototype.isExtendParentsOnAdd = function() { - return this.extendParentsOnAdd -}; -mxGraph.prototype.setExtendParentsOnAdd = function(a) { - this.extendParentsOnAdd = a -}; -mxGraph.prototype.isConstrainChild = function(a) { - return this.isConstrainChildren() && !this.getModel().isEdge(this.getModel().getParent(a)) -}; -mxGraph.prototype.isConstrainChildren = function() { - return this.constrainChildren -}; -mxGraph.prototype.setConstrainChildren = function(a) { - this.constrainChildren = a -}; -mxGraph.prototype.isAllowNegativeCoordinates = function() { - return this.allowNegativeCoordinates -}; -mxGraph.prototype.setAllowNegativeCoordinates = function(a) { - this.allowNegativeCoordinates = a -}; -mxGraph.prototype.getOverlap = function(a) { - return this.isAllowOverlapParent(a) ? this.defaultOverlap : 0 -}; -mxGraph.prototype.isAllowOverlapParent = function(a) { - return !1 -}; -mxGraph.prototype.getFoldableCells = function(a, b) { - return this.model.filterCells(a, mxUtils.bind(this, function(a) { - return this.isCellFoldable(a, b) - })) -}; -mxGraph.prototype.isCellFoldable = function(a, b) { - var c = this.view.getState(a), - c = null != c ? c.style : this.getCellStyle(a); - return 0 < this.model.getChildCount(a) && 0 != c[mxConstants.STYLE_FOLDABLE] -}; -mxGraph.prototype.isValidDropTarget = function(a, b, c) { - return null != a && (this.isSplitEnabled() && this.isSplitTarget(a, b, c) || !this.model.isEdge(a) && (this.isSwimlane(a) || 0 < this.model.getChildCount(a) && !this.isCellCollapsed(a))) -}; -mxGraph.prototype.isSplitTarget = function(a, b, c) { - return this.model.isEdge(a) && null != b && 1 == b.length && this.isCellConnectable(b[0]) && null == this.getEdgeValidationError(a, this.model.getTerminal(a, !0), b[0]) ? (c = this.model.getTerminal( - a, !0), a = this.model.getTerminal(a, !1), !this.model.isAncestor(b[0], c) && !this.model.isAncestor(b[0], a)) : !1 -}; -mxGraph.prototype.getDropTarget = function(a, b, c) { - if (!this.isSwimlaneNesting()) - for (var d = 0; d < a.length; d++) - if (this.isSwimlane(a[d])) return null; - d = mxUtils.convertPoint(this.container, mxEvent.getClientX(b), mxEvent.getClientY(b)); - d.x -= this.panDx; - d.y -= this.panDy; - d = this.getSwimlaneAt(d.x, d.y); - if (null == c) c = d; - else if (null != d) { - for (var e = this.model.getParent(d); null != e && this.isSwimlane(e) && e != c;) e = this.model.getParent(e); - e == c && (c = d) - } - for (; null != c && !this.isValidDropTarget(c, a, b) && !this.model.isLayer(c);) c = this.model.getParent(c); - return !this.model.isLayer(c) && 0 > mxUtils.indexOf(a, c) ? c : null -}; -mxGraph.prototype.getDefaultParent = function() { - var a = this.defaultParent; - null == a && (a = this.getCurrentRoot(), null == a && (a = this.model.getRoot(), a = this.model.getChildAt(a, 0))); - return a -}; -mxGraph.prototype.setDefaultParent = function(a) { - this.defaultParent = a -}; -mxGraph.prototype.getSwimlane = function(a) { - for (; null != a && !this.isSwimlane(a);) a = this.model.getParent(a); - return a -}; -mxGraph.prototype.getSwimlaneAt = function(a, b, c) { - c = c || this.getDefaultParent(); - if (null != c) - for (var d = this.model.getChildCount(c), e = 0; e < d; e++) { - var f = this.model.getChildAt(c, e), - g = this.getSwimlaneAt(a, b, f); - if (null != g) return g; - if (this.isSwimlane(f) && (g = this.view.getState(f), this.intersects(g, a, b))) return f - } - return null -}; -mxGraph.prototype.getCellAt = function(a, b, c, d, e) { - d = null != d ? d : !0; - e = null != e ? e : !0; - c = null != c ? c : this.getDefaultParent(); - if (null != c) - for (var f = this.model.getChildCount(c) - 1; 0 <= f; f--) { - var g = this.model.getChildAt(c, f), - h = this.getCellAt(a, b, g, d, e); - if (null != h) return h; - if (this.isCellVisible(g) && (e && this.model.isEdge(g) || d && this.model.isVertex(g))) - if (h = this.view.getState(g), this.intersects(h, a, b)) return g - } - return null -}; -mxGraph.prototype.intersects = function(a, b, c) { - if (null != a) { - var d = a.absolutePoints; - if (null != d) { - a = this.tolerance * this.tolerance; - for (var e = d[0], f = 1; f < d.length; f++) { - var g = d[f]; - if (mxUtils.ptSegDistSq(e.x, e.y, g.x, g.y, b, c) <= a) return !0; - e = g - } - } else if (e = mxUtils.toRadians(mxUtils.getValue(a.style, mxConstants.STYLE_ROTATION) || 0), 0 != e && (d = Math.cos(-e), e = Math.sin(-e), f = new mxPoint(a.getCenterX(), a.getCenterY()), e = - mxUtils.getRotatedPoint(new mxPoint(b, c), d, e, f), b = e.x, c = e.y), mxUtils.contains(a, b, c)) return !0 - } - return !1 -}; -mxGraph.prototype.hitsSwimlaneContent = function(a, b, c) { - var d = this.getView().getState(a); - a = this.getStartSize(a); - if (null != d) { - var e = this.getView().getScale(); - b -= d.x; - c -= d.y; - if (0 < a.width && 0 < b && b > a.width * e || 0 < a.height && 0 < c && c > a.height * e) return !0 - } - return !1 -}; -mxGraph.prototype.getChildVertices = function(a) { - return this.getChildCells(a, !0, !1) -}; -mxGraph.prototype.getChildEdges = function(a) { - return this.getChildCells(a, !1, !0) -}; -mxGraph.prototype.getChildCells = function(a, b, c) { - a = null != a ? a : this.getDefaultParent(); - a = this.model.getChildCells(a, null != b ? b : !1, null != c ? c : !1); - b = []; - for (c = 0; c < a.length; c++) this.isCellVisible(a[c]) && b.push(a[c]); - return b -}; -mxGraph.prototype.getConnections = function(a, b) { - return this.getEdges(a, b, !0, !0, !1) -}; -mxGraph.prototype.getIncomingEdges = function(a, b) { - return this.getEdges(a, b, !0, !1, !1) -}; -mxGraph.prototype.getOutgoingEdges = function(a, b) { - return this.getEdges(a, b, !1, !0, !1) -}; -mxGraph.prototype.getEdges = function(a, b, c, d, e, f) { - c = null != c ? c : !0; - d = null != d ? d : !0; - e = null != e ? e : !0; - f = null != f ? f : !1; - for (var g = [], h = this.isCellCollapsed(a), k = this.model.getChildCount(a), l = 0; l < k; l++) { - var m = this.model.getChildAt(a, l); - if (h || !this.isCellVisible(m)) g = g.concat(this.model.getEdges(m, c, d)) - } - g = g.concat(this.model.getEdges(a, c, d)); - h = []; - for (l = 0; l < g.length; l++) m = this.view.getState(g[l]), k = null != m ? m.getVisibleTerminal(!0) : this.view.getVisibleTerminal(g[l], !0), m = null != m ? m.getVisibleTerminal(!1) : this.view - .getVisibleTerminal(g[l], !1), (e && k == m || k != m && (c && m == a && (null == b || this.isValidAncestor(k, b, f)) || d && k == a && (null == b || this.isValidAncestor(m, b, f)))) && h.push( - g[l]); - return h -}; -mxGraph.prototype.isValidAncestor = function(a, b, c) { - return c ? this.model.isAncestor(b, a) : this.model.getParent(a) == b -}; -mxGraph.prototype.getOpposites = function(a, b, c, d) { - c = null != c ? c : !0; - d = null != d ? d : !0; - var e = [], - f = {}; - if (null != a) - for (var g = 0; g < a.length; g++) { - var h = this.view.getState(a[g]), - k = null != h ? h.getVisibleTerminal(!0) : this.view.getVisibleTerminal(a[g], !0), - h = null != h ? h.getVisibleTerminal(!1) : this.view.getVisibleTerminal(a[g], !1); - if (k == b && null != h && h != b && d) { - var l = mxCellPath.create(h); - null == f[l] && (f[l] = h, e.push(h)) - } else h == b && (null != k && k != b && c) && (l = mxCellPath.create(k), null == f[l] && (f[l] = k, e.push(k))) - } - return e -}; -mxGraph.prototype.getEdgesBetween = function(a, b, c) { - c = null != c ? c : !1; - for (var d = this.getEdges(a), e = [], f = 0; f < d.length; f++) { - var g = this.view.getState(d[f]), - h = null != g ? g.getVisibleTerminal(!0) : this.view.getVisibleTerminal(d[f], !0), - g = null != g ? g.getVisibleTerminal(!1) : this.view.getVisibleTerminal(d[f], !1); - (h == a && g == b || !c && h == b && g == a) && e.push(d[f]) - } - return e -}; -mxGraph.prototype.getPointForEvent = function(a, b) { - var c = mxUtils.convertPoint(this.container, mxEvent.getClientX(a), mxEvent.getClientY(a)), - d = this.view.scale, - e = this.view.translate, - f = !1 != b ? this.gridSize / 2 : 0; - c.x = this.snap(c.x / d - e.x - f); - c.y = this.snap(c.y / d - e.y - f); - return c -}; -mxGraph.prototype.getCells = function(a, b, c, d, e, f) { - f = null != f ? f : []; - if (0 < c || 0 < d) { - var g = a + c, - h = b + d; - e = e || this.getDefaultParent(); - if (null != e) - for (var k = this.model.getChildCount(e), l = 0; l < k; l++) { - var m = this.model.getChildAt(e, l), - n = this.view.getState(m); - if (this.isCellVisible(m) && null != n) { - var p = n, - n = mxUtils.getValue(n.style, mxConstants.STYLE_ROTATION) || 0; - 0 != n && (p = mxUtils.getBoundingBox(p, n)); - p.x >= a && p.y + p.height <= h && p.y >= b && p.x + p.width <= g ? f.push(m) : this.getCells(a, b, c, d, m, f) - } - } - } - return f -}; -mxGraph.prototype.getCellsBeyond = function(a, b, c, d, e) { - var f = []; - if (d || e) - if (null == c && (c = this.getDefaultParent()), null != c) - for (var g = this.model.getChildCount(c), h = 0; h < g; h++) { - var k = this.model.getChildAt(c, h), - l = this.view.getState(k); - this.isCellVisible(k) && null != l && (!d || l.x >= a) && (!e || l.y >= b) && f.push(k) - } - return f -}; -mxGraph.prototype.findTreeRoots = function(a, b, c) { - b = null != b ? b : !1; - c = null != c ? c : !1; - var d = []; - if (null != a) { - for (var e = this.getModel(), f = e.getChildCount(a), g = null, h = 0, k = 0; k < f; k++) { - var l = e.getChildAt(a, k); - if (this.model.isVertex(l) && this.isCellVisible(l)) { - for (var m = this.getConnections(l, b ? a : null), n = 0, p = 0, q = 0; q < m.length; q++) this.view.getVisibleTerminal(m[q], !0) == l ? n++ : p++; - (c && 0 == n && 0 < p || !c && 0 == p && 0 < n) && d.push(l); - m = c ? p - n : n - p; - m > h && (h = m, g = l) - } - } - 0 == d.length && null != g && d.push(g) - } - return d -}; -mxGraph.prototype.traverse = function(a, b, c, d, e) { - if (null != c && null != a) { - b = null != b ? b : !0; - e = e || []; - var f = mxCellPath.create(a); - if (null == e[f] && (e[f] = a, d = c(a, d), null == d || d)) - if (d = this.model.getEdgeCount(a), 0 < d) - for (f = 0; f < d; f++) { - var g = this.model.getEdgeAt(a, f), - h = this.model.getTerminal(g, !0) == a; - if (!b || h) h = this.model.getTerminal(g, !h), this.traverse(h, b, c, g, e) - } - } -}; -mxGraph.prototype.isCellSelected = function(a) { - return this.getSelectionModel().isSelected(a) -}; -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(a) { - this.getSelectionModel().setCell(a) -}; -mxGraph.prototype.setSelectionCells = function(a) { - this.getSelectionModel().setCells(a) -}; -mxGraph.prototype.addSelectionCell = function(a) { - this.getSelectionModel().addCell(a) -}; -mxGraph.prototype.addSelectionCells = function(a) { - this.getSelectionModel().addCells(a) -}; -mxGraph.prototype.removeSelectionCell = function(a) { - this.getSelectionModel().removeCell(a) -}; -mxGraph.prototype.removeSelectionCells = function(a) { - this.getSelectionModel().removeCells(a) -}; -mxGraph.prototype.selectRegion = function(a, b) { - var c = this.getCells(a.x, a.y, a.width, a.height); - this.selectCellsForEvent(c, b); - return c -}; -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(a, b, c) { - var d = this.selectionModel, - e = 0 < d.cells.length ? d.cells[0] : null; - 1 < d.cells.length && d.clear(); - var d = null != e ? this.model.getParent(e) : this.getDefaultParent(), - f = this.model.getChildCount(d); - null == e && 0 < f ? (a = this.model.getChildAt(d, 0), this.setSelectionCell(a)) : (null == e || b) && null != this.view.getState(d) && null != this.model.getGeometry(d) ? this.getCurrentRoot() != - d && this.setSelectionCell(d) : null != e && c ? 0 < this.model.getChildCount(e) && (a = this.model.getChildAt(e, 0), this.setSelectionCell(a)) : - 0 < f && (b = d.getIndex(e), a ? (b++, a = this.model.getChildAt(d, b % f)) : (b--, a = this.model.getChildAt(d, 0 > b ? f - 1 : b)), this.setSelectionCell(a)) -}; -mxGraph.prototype.selectAll = function(a) { - a = a || this.getDefaultParent(); - a = this.model.getChildren(a); - null != a && this.setSelectionCells(a) -}; -mxGraph.prototype.selectVertices = function(a) { - this.selectCells(!0, !1, a) -}; -mxGraph.prototype.selectEdges = function(a) { - this.selectCells(!1, !0, a) -}; -mxGraph.prototype.selectCells = function(a, b, c) { - c = c || this.getDefaultParent(); - var d = mxUtils.bind(this, function(c) { - return null != this.view.getState(c) && 0 == this.model.getChildCount(c) && (this.model.isVertex(c) && a || this.model.isEdge(c) && b) - }); - c = this.model.filterDescendants(d, c); - this.setSelectionCells(c) -}; -mxGraph.prototype.selectCellForEvent = function(a, b) { - var c = this.isCellSelected(a); - this.isToggleEvent(b) ? c ? this.removeSelectionCell(a) : this.addSelectionCell(a) : (!c || 1 != this.getSelectionCount()) && this.setSelectionCell(a) -}; -mxGraph.prototype.selectCellsForEvent = function(a, b) { - this.isToggleEvent(b) ? this.addSelectionCells(a) : this.setSelectionCells(a) -}; -mxGraph.prototype.createHandler = function(a) { - var b = null; - null != a && (this.model.isEdge(a.cell) ? (b = this.view.getEdgeStyle(a), b = this.isLoop(a) || b == mxEdgeStyle.ElbowConnector || b == mxEdgeStyle.SideToSide || b == mxEdgeStyle.TopToBottom ? - new mxElbowEdgeHandler(a) : b == mxEdgeStyle.SegmentConnector || b == mxEdgeStyle.OrthConnector ? new mxEdgeSegmentHandler(a) : new mxEdgeHandler(a)) : b = new mxVertexHandler(a)); - return b -}; -mxGraph.prototype.addMouseListener = function(a) { - null == this.mouseListeners && (this.mouseListeners = []); - this.mouseListeners.push(a) -}; -mxGraph.prototype.removeMouseListener = function(a) { - if (null != this.mouseListeners) - for (var b = 0; b < this.mouseListeners.length; b++) - if (this.mouseListeners[b] == a) { - this.mouseListeners.splice(b, 1); - break - } -}; -mxGraph.prototype.updateMouseEvent = function(a) { - if (null == a.graphX || null == a.graphY) { - var b = mxUtils.convertPoint(this.container, a.getX(), a.getY()); - a.graphX = b.x - this.panDx; - a.graphY = b.y - this.panDy - } -}; -mxGraph.prototype.fireMouseEvent = function(a, b, c) { - null == c && (c = this); - this.updateMouseEvent(b); - a == mxEvent.MOUSE_DOWN && (this.isMouseDown = !0); - if (mxClient.IS_TOUCH && this.doubleTapEnabled && a == mxEvent.MOUSE_DOWN) { - var d = (new Date).getTime(); - d - this.lastTouchTime < this.doubleTapTimeout && Math.abs(this.lastTouchX - b.getX()) < this.doubleTapTolerance && Math.abs(this.lastTouchY - b.getY()) < this.doubleTapTolerance ? (this.lastTouchTime = - 0, this.dblClick(b.getEvent(), b.getCell()), b.getEvent().cancelBubble = !0) : (this.lastTouchX = - b.getX(), this.lastTouchY = b.getY(), this.lastTouchTime = d) - } - d = 2 != b.getEvent().detail; - if (mxClient.IS_IE && "CSS1Compat" == document.compatMode) { - if (null != this.lastMouseX && Math.abs(this.lastMouseX - b.getX()) > this.doubleTapTolerance || null != this.lastMouseY && Math.abs(this.lastMouseY - b.getY()) > this.doubleTapTolerance) d = ! - 0; - a == mxEvent.MOUSE_UP && (this.lastMouseX = b.getX(), this.lastMouseY = b.getY()) - } - if ((a != mxEvent.MOUSE_UP || this.isMouseDown) && d) { - if (a == mxEvent.MOUSE_UP && (this.isMouseDown = !1), !this.isEditing() && (mxClient.IS_OP || - mxClient.IS_SF || mxClient.IS_GC || mxClient.IS_IE && mxClient.IS_SVG || b.getEvent().target != this.container)) { - a == mxEvent.MOUSE_MOVE && (this.isMouseDown && this.autoScroll) && this.scrollPointToVisible(b.getGraphX(), b.getGraphY(), this.autoExtend); - if (null != this.mouseListeners) { - c = [c, b]; - b.getEvent().returnValue = !0; - for (d = 0; d < this.mouseListeners.length; d++) { - var e = this.mouseListeners[d]; - a == mxEvent.MOUSE_DOWN ? e.mouseDown.apply(e, c) : a == mxEvent.MOUSE_MOVE ? e.mouseMove.apply(e, c) : a == mxEvent.MOUSE_UP && e.mouseUp.apply(e, c) - } - } - a == - mxEvent.MOUSE_UP && this.click(b) - } - } else a == 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) -}; - -function mxCellOverlay(a, b, c, d, e, f) { - this.image = a; - this.tooltip = b; - this.align = null != c ? c : this.align; - this.verticalAlign = null != d ? d : this.verticalAlign; - this.offset = null != e ? e : new mxPoint; - this.cursor = null != f ? f : "help" -} -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 = 0.5; -mxCellOverlay.prototype.getBounds = function(a) { - var b = a.view.graph.getModel().isEdge(a.cell), - c = a.view.scale, - d = null, - e = this.image.width, - f = this.image.height; - b ? (b = a.absolutePoints, 1 == b.length % 2 ? d = b[Math.floor(b.length / 2)] : (d = b.length / 2, a = b[d - 1], b = b[d], d = new mxPoint(a.x + (b.x - a.x) / 2, a.y + (b.y - a.y) / 2))) : (d = - new mxPoint, d.x = this.align == mxConstants.ALIGN_LEFT ? a.x : this.align == mxConstants.ALIGN_CENTER ? a.x + a.width / 2 : a.x + a.width, d.y = this.verticalAlign == mxConstants.ALIGN_TOP ? - a.y : this.verticalAlign == mxConstants.ALIGN_MIDDLE ? - a.y + a.height / 2 : a.y + a.height); - return new mxRectangle(Math.round(d.x - (e * this.defaultOverlap - this.offset.x) * c), Math.round(d.y - (f * this.defaultOverlap - this.offset.y) * c), e * c, f * c) -}; -mxCellOverlay.prototype.toString = function() { - return this.tooltip -}; - -function mxOutline(a, b) { - this.source = a; - null != b && this.init(b) -} -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(a) { - this.outline = new mxGraph(a, this.source.getModel(), this.graphRenderHint, this.source.getStylesheet()); - this.outline.foldingEnabled = !1; - this.outline.autoScroll = !1; - var b = this.outline.graphModelChanged; - this.outline.graphModelChanged = mxUtils.bind(this, function(a) { - !this.suspended && null != this.outline && b.apply(this.outline, arguments) - }); - mxClient.IS_SVG && (a = this.outline.getView().getCanvas().parentNode, a.setAttribute("shape-rendering", "optimizeSpeed"), a.setAttribute("image-rendering", - "optimizeSpeed")); - this.outline.labelsVisible = !1; - this.outline.setEnabled(!1); - this.updateHandler = mxUtils.bind(this, function(a, b) { - !this.suspended && !this.active && this.update() - }); - this.source.getModel().addListener(mxEvent.CHANGE, this.updateHandler); - this.outline.addMouseListener(this); - a = this.source.getView(); - a.addListener(mxEvent.SCALE, this.updateHandler); - a.addListener(mxEvent.TRANSLATE, this.updateHandler); - a.addListener(mxEvent.SCALE_AND_TRANSLATE, this.updateHandler); - a.addListener(mxEvent.DOWN, this.updateHandler); - a.addListener(mxEvent.UP, this.updateHandler); - mxEvent.addListener(this.source.container, "scroll", this.updateHandler); - this.panHandler = mxUtils.bind(this, function(a) { - this.updateOnPan && this.updateHandler.apply(this, arguments) - }); - this.source.addListener(mxEvent.PAN, this.panHandler); - this.refreshHandler = mxUtils.bind(this, function(a) { - 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(a) { - this.outline.fireMouseEvent(mxEvent.MOUSE_DOWN, new mxMouseEvent(a)) - })); - 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(a) { - this.enabled = a -}; -mxOutline.prototype.setZoomEnabled = function(a) { - this.sizer.node.style.visibility = a ? "visible" : "hidden" -}; -mxOutline.prototype.refresh = function() { - this.update(!0) -}; -mxOutline.prototype.createSizer = function() { - var a = 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); - a.dialect = this.outline.dialect; - return a -}; -mxOutline.prototype.getSourceContainerSize = function() { - return new mxRectangle(0, 0, this.source.container.scrollWidth, this.source.container.scrollHeight) -}; -mxOutline.prototype.getOutlineOffset = function(a) { - return null -}; -mxOutline.prototype.update = function(a) { - if (null != this.source) { - var b = this.source.view.scale, - c = this.source.getGraphBounds(), - c = new mxRectangle(c.x / b + this.source.panDx, c.y / b + this.source.panDy, c.width / b, c.height / b), - d = new mxRectangle(0, 0, this.source.container.clientWidth / b, this.source.container.clientHeight / b), - e = c.clone(); - e.add(d); - var f = this.getSourceContainerSize(), - d = Math.max(f.width / b, e.width), - b = Math.max(f.height / b, e.height), - e = Math.max(0, this.outline.container.clientWidth - this.border), - f = Math.max(0, this.outline.container.clientHeight - - this.border), - e = Math.min(e / d, f / b); - if (0 < e) { - this.outline.getView().scale != e && (this.outline.getView().scale = e, a = !0); - d = this.outline.getView(); - d.currentRoot != this.source.getView().currentRoot && d.setCurrentRoot(this.source.getView().currentRoot); - var b = this.source.view.translate, - f = b.x + this.source.panDx, - g = b.y + this.source.panDy, - e = this.getOutlineOffset(e); - null != e && (f += e.x, g += e.y); - 0 > c.x && (f -= c.x); - 0 > c.y && (g -= c.y); - if (d.translate.x != f || d.translate.y != g) d.translate.x = f, d.translate.y = g, a = !0; - var c = d.translate, - e = this.source.getView().scale, - f = e / d.scale, - g = 1 / d.scale, - h = this.source.container; - this.bounds = new mxRectangle((c.x - b.x - this.source.panDx) / g, (c.y - b.y - this.source.panDy) / g, h.clientWidth / f, h.clientHeight / f); - this.bounds.x += this.source.container.scrollLeft * d.scale / e; - this.bounds.y += this.source.container.scrollTop * d.scale / e; - c = this.selectionBorder.bounds; - if (c.x != this.bounds.x || c.y != this.bounds.y || c.width != this.bounds.width || c.height != this.bounds.height) this.selectionBorder.bounds = this.bounds, this.selectionBorder.redraw(); - c = this.sizer.bounds; - d = new mxRectangle(this.bounds.x + this.bounds.width - c.width / 2, this.bounds.y + this.bounds.height - c.height / 2, c.width, c.height); - if (c.x != d.x || c.y != d.y || c.width != d.width || c.height != d.height) this.sizer.bounds = d, "hidden" != this.sizer.node.style.visibility && this.sizer.redraw(); - a && this.outline.view.revalidate() - } - } -}; -mxOutline.prototype.mouseDown = function(a, b) { - this.enabled && this.showViewport && (this.zoom = b.isSource(this.sizer), this.startX = b.getX(), this.startY = b.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); - b.consume() -}; -mxOutline.prototype.mouseMove = function(a, b) { - if (this.active) { - this.selectionBorder.node.style.display = this.showViewport ? "" : "none"; - this.sizer.node.style.display = this.selectionBorder.node.style.display; - var c = b.getX() - this.startX, - d = b.getY() - this.startY, - e = null; - if (this.zoom) e = this.source.container, d = c / (e.clientWidth / e.clientHeight), e = new mxRectangle(this.bounds.x, this.bounds.y, Math.max(1, this.bounds.width + c), Math.max(1, this.bounds - .height + d)), this.selectionBorder.bounds = e, this.selectionBorder.redraw(); - else { - var f = - this.outline.getView().scale, - e = new mxRectangle(this.bounds.x + c, this.bounds.y + d, this.bounds.width, this.bounds.height); - this.selectionBorder.bounds = e; - this.selectionBorder.redraw(); - c = c / f * this.source.getView().scale; - d = d / f * this.source.getView().scale; - this.source.panGraph(-c - this.dx0, -d - this.dy0) - } - c = this.sizer.bounds; - this.sizer.bounds = new mxRectangle(e.x + e.width - c.width / 2, e.y + e.height - c.height / 2, c.width, c.height); - "hidden" != this.sizer.node.style.visibility && this.sizer.redraw(); - b.consume() - } -}; -mxOutline.prototype.mouseUp = function(a, b) { - if (this.active) { - var c = b.getX() - this.startX, - d = b.getY() - this.startY; - if (0 < Math.abs(c) || 0 < Math.abs(d)) { - if (this.zoom) { - var d = this.selectionBorder.bounds.width, - e = this.source.getView().scale; - this.source.zoomTo(e - c * e / d, !1) - } else if (!this.source.useScrollbarsForPanning || !mxUtils.hasScrollbars(this.source.container)) this.source.panGraph(0, 0), c /= this.outline.getView().scale, d /= this.outline.getView().scale, - e = this.source.getView().translate, this.source.getView().setTranslate(e.x - - c, e.y - d); - this.update(); - b.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) -}; - -function mxMultiplicity(a, b, c, d, e, f, g, h, k, l) { - this.source = a; - this.type = b; - this.attr = c; - this.value = d; - this.min = null != e ? e : 0; - this.max = null != f ? f : "n"; - this.validNeighbors = g; - this.countError = mxResources.get(h) || h; - this.typeError = mxResources.get(k) || k; - this.validNeighborsAllowed = null != l ? l : !0 -} -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(a, b, c, d, e, f) { - var g = ""; - if (this.source && this.checkTerminal(a, c, b) || !this.source && this.checkTerminal(a, d, b)) { - if (null != this.countError && (this.source && (0 == this.max || e >= this.max) || !this.source && (0 == this.max || f >= this.max))) g += this.countError + "\n"; - null != this.validNeighbors && (null != this.typeError && 0 < this.validNeighbors.length) && (this.checkNeighbors(a, b, c, d) || (g += this.typeError + "\n")) - } - return 0 < g.length ? g : null -}; -mxMultiplicity.prototype.checkNeighbors = function(a, b, c, d) { - b = a.model.getValue(c); - d = a.model.getValue(d); - c = !this.validNeighborsAllowed; - for (var e = this.validNeighbors, f = 0; f < e.length; f++) - if (this.source && this.checkType(a, d, e[f])) { - c = this.validNeighborsAllowed; - break - } else if (!this.source && this.checkType(a, b, e[f])) { - c = this.validNeighborsAllowed; - break - } - return c -}; -mxMultiplicity.prototype.checkTerminal = function(a, b, c) { - b = a.model.getValue(b); - return this.checkType(a, b, this.type, this.attr, this.value) -}; -mxMultiplicity.prototype.checkType = function(a, b, c, d, e) { - return null != b ? isNaN(b.nodeType) ? b == c : mxUtils.isNode(b, c, d, e) : !1 -}; - -function mxLayoutManager(a) { - this.undoHandler = mxUtils.bind(this, function(a, c) { - this.isEnabled() && this.beforeUndo(c.getProperty("edit")) - }); - this.moveHandler = mxUtils.bind(this, function(a, c) { - this.isEnabled() && this.cellsMoved(c.getProperty("cells"), c.getProperty("event")) - }); - this.setGraph(a) -} -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(a) { - this.enabled = a -}; -mxLayoutManager.prototype.isBubbling = function() { - return this.bubbling -}; -mxLayoutManager.prototype.setBubbling = function(a) { - this.bubbling = a -}; -mxLayoutManager.prototype.getGraph = function() { - return this.graph -}; -mxLayoutManager.prototype.setGraph = function(a) { - if (null != this.graph) { - var b = this.graph.getModel(); - b.removeListener(this.undoHandler); - this.graph.removeListener(this.moveHandler) - } - this.graph = a; - null != this.graph && (b = this.graph.getModel(), b.addListener(mxEvent.BEFORE_UNDO, this.undoHandler), this.graph.addListener(mxEvent.MOVE_CELLS, this.moveHandler)) -}; -mxLayoutManager.prototype.getLayout = function(a) { - return null -}; -mxLayoutManager.prototype.beforeUndo = function(a) { - a = this.getCellsForChanges(a.changes); - var b = this.getGraph().getModel(); - if (this.isBubbling()) - for (var c = b.getParents(a); 0 < c.length;) a = a.concat(c), c = b.getParents(c); - this.layoutCells(mxUtils.sortCells(a, !1)) -}; -mxLayoutManager.prototype.cellsMoved = function(a, b) { - if (null != a && null != b) - for (var c = mxUtils.convertPoint(this.getGraph().container, mxEvent.getClientX(b), mxEvent.getClientY(b)), d = this.getGraph().getModel(), e = 0; e < a.length; e++) { - var f = this.getLayout(d.getParent(a[e])); - null != f && f.moveCell(a[e], c.x, c.y) - } -}; -mxLayoutManager.prototype.getCellsForChanges = function(a) { - for (var b = [], c = {}, d = 0; d < a.length; d++) { - var e = a[d]; - if (e instanceof mxRootChange) return []; - for (var e = this.getCellsForChange(e), f = 0; f < e.length; f++) - if (null != e[f]) { - var g = mxCellPath.create(e[f]); - null == c[g] && (c[g] = e[f], b.push(e[f])) - } - } - return b -}; -mxLayoutManager.prototype.getCellsForChange = function(a) { - var b = this.getGraph().getModel(); - return a instanceof mxChildChange ? [a.child, a.previous, b.getParent(a.child)] : a instanceof mxTerminalChange || a instanceof mxGeometryChange ? [a.cell, b.getParent(a.cell)] : [] -}; -mxLayoutManager.prototype.layoutCells = function(a) { - if (0 < a.length) { - var b = this.getGraph().getModel(); - b.beginUpdate(); - try { - for (var c = null, d = 0; d < a.length; d++) a[d] != b.getRoot() && a[d] != c && (c = a[d], this.executeLayout(this.getLayout(c), c)); - this.fireEvent(new mxEventObject(mxEvent.LAYOUT_CELLS, "cells", a)) - } finally { - b.endUpdate() - } - } -}; -mxLayoutManager.prototype.executeLayout = function(a, b) { - null != a && null != b && a.execute(b) -}; -mxLayoutManager.prototype.destroy = function() { - this.setGraph(null) -}; - -function mxSpaceManager(a, b, c, d) { - this.resizeHandler = mxUtils.bind(this, function(a, b) { - this.isEnabled() && this.cellsResized(b.getProperty("cells")) - }); - this.foldHandler = mxUtils.bind(this, function(a, b) { - this.isEnabled() && this.cellsResized(b.getProperty("cells")) - }); - this.shiftRightwards = null != b ? b : !0; - this.shiftDownwards = null != c ? c : !0; - this.extendParents = null != d ? d : !0; - this.setGraph(a) -} -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(a) { - return !this.getGraph().getModel().isVertex(a) -}; -mxSpaceManager.prototype.isCellShiftable = function(a) { - return this.getGraph().getModel().isVertex(a) && this.getGraph().isCellMovable(a) -}; -mxSpaceManager.prototype.isEnabled = function() { - return this.enabled -}; -mxSpaceManager.prototype.setEnabled = function(a) { - this.enabled = a -}; -mxSpaceManager.prototype.isShiftRightwards = function() { - return this.shiftRightwards -}; -mxSpaceManager.prototype.setShiftRightwards = function(a) { - this.shiftRightwards = a -}; -mxSpaceManager.prototype.isShiftDownwards = function() { - return this.shiftDownwards -}; -mxSpaceManager.prototype.setShiftDownwards = function(a) { - this.shiftDownwards = a -}; -mxSpaceManager.prototype.isExtendParents = function() { - return this.extendParents -}; -mxSpaceManager.prototype.setExtendParents = function(a) { - this.extendParents = a -}; -mxSpaceManager.prototype.getGraph = function() { - return this.graph -}; -mxSpaceManager.prototype.setGraph = function(a) { - null != this.graph && (this.graph.removeListener(this.resizeHandler), this.graph.removeListener(this.foldHandler)); - this.graph = a; - null != this.graph && (this.graph.addListener(mxEvent.RESIZE_CELLS, this.resizeHandler), this.graph.addListener(mxEvent.FOLD_CELLS, this.foldHandler)) -}; -mxSpaceManager.prototype.cellsResized = function(a) { - if (null != a) { - var b = this.graph.getModel(); - b.beginUpdate(); - try { - for (var c = 0; c < a.length; c++) - if (!this.isCellIgnored(a[c])) { - this.cellResized(a[c]); - break - } - } finally { - b.endUpdate() - } - } -}; -mxSpaceManager.prototype.cellResized = function(a) { - var b = this.getGraph(), - c = b.getView(), - d = b.getModel(), - e = c.getState(a), - f = c.getState(d.getParent(a)); - if (null != e && null != f) { - var g = this.getCellsToShift(e), - h = d.getGeometry(a); - if (null != g && null != h) { - var k = c.translate, - l = c.scale, - c = e.x - f.origin.x - k.x * l, - f = e.y - f.origin.y - k.y * l, - k = e.x + e.width, - m = e.y + e.height, - n = e.width - h.width * l + c - h.x * l, - p = e.height - h.height * l + f - h.y * l, - q = 1 - h.width * l / e.width, - e = 1 - h.height * l / e.height; - d.beginUpdate(); - try { - for (h = 0; h < g.length; h++) g[h] != a && this.isCellShiftable(g[h]) && - this.shiftCell(g[h], n, p, c, f, k, m, q, e, this.isExtendParents() && b.isExtendParent(g[h])) - } finally { - d.endUpdate() - } - } - } -}; -mxSpaceManager.prototype.shiftCell = function(a, b, c, d, e, f, g, h, k, l) { - d = this.getGraph(); - var m = d.getView().getState(a); - if (null != m) { - var n = d.getModel(), - p = n.getGeometry(a); - if (null != p) { - n.beginUpdate(); - try { - if (this.isShiftRightwards()) - if (m.x >= f) p = p.clone(), p.translate(-b, 0); - else { - var q = Math.max(0, m.x - x0), - p = p.clone(); - p.translate(-h * q, 0) - } - if (this.isShiftDownwards()) - if (m.y >= g) p = p.clone(), p.translate(0, -c); - else { - var s = Math.max(0, m.y - e), - p = p.clone(); - p.translate(0, -k * s) - } - p != n.getGeometry(a) && (n.setGeometry(a, p), l && d.extendParent(a)) - } finally { - n.endUpdate() - } - } - } -}; -mxSpaceManager.prototype.getCellsToShift = function(a) { - var b = this.getGraph(), - c = b.getModel().getParent(a.cell), - d = this.isShiftDownwards(), - e = this.isShiftRightwards(); - return b.getCellsBeyond(a.x + (d ? 0 : a.width), a.y + (d && e ? 0 : a.height), c, e, d) -}; -mxSpaceManager.prototype.destroy = function() { - this.setGraph(null) -}; - -function mxSwimlaneManager(a, b, c, d) { - this.horizontal = null != b ? b : !0; - this.addEnabled = null != c ? c : !0; - this.resizeEnabled = null != d ? d : !0; - this.addHandler = mxUtils.bind(this, function(a, b) { - this.isEnabled() && this.isAddEnabled() && this.cellsAdded(b.getProperty("cells")) - }); - this.resizeHandler = mxUtils.bind(this, function(a, b) { - this.isEnabled() && this.isResizeEnabled() && this.cellsResized(b.getProperty("cells")) - }); - this.setGraph(a) -} -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(a) { - this.enabled = a -}; -mxSwimlaneManager.prototype.isHorizontal = function() { - return this.horizontal -}; -mxSwimlaneManager.prototype.setHorizontal = function(a) { - this.horizontal = a -}; -mxSwimlaneManager.prototype.isAddEnabled = function() { - return this.addEnabled -}; -mxSwimlaneManager.prototype.setAddEnabled = function(a) { - this.addEnabled = a -}; -mxSwimlaneManager.prototype.isResizeEnabled = function() { - return this.resizeEnabled -}; -mxSwimlaneManager.prototype.setResizeEnabled = function(a) { - this.resizeEnabled = a -}; -mxSwimlaneManager.prototype.getGraph = function() { - return this.graph -}; -mxSwimlaneManager.prototype.setGraph = function(a) { - null != this.graph && (this.graph.removeListener(this.addHandler), this.graph.removeListener(this.resizeHandler)); - this.graph = a; - null != this.graph && (this.graph.addListener(mxEvent.ADD_CELLS, this.addHandler), this.graph.addListener(mxEvent.CELLS_RESIZED, this.resizeHandler)) -}; -mxSwimlaneManager.prototype.isSwimlaneIgnored = function(a) { - return !this.getGraph().isSwimlane(a) -}; -mxSwimlaneManager.prototype.isCellHorizontal = function(a) { - if (this.graph.isSwimlane(a)) { - var b = this.graph.view.getState(a); - a = null != b ? b.style : this.graph.getCellStyle(a); - return 1 == mxUtils.getValue(a, mxConstants.STYLE_HORIZONTAL, 1) - } - return !this.isHorizontal() -}; -mxSwimlaneManager.prototype.cellsAdded = function(a) { - if (null != a) { - var b = this.getGraph().getModel(); - b.beginUpdate(); - try { - for (var c = 0; c < a.length; c++) this.isSwimlaneIgnored(a[c]) || this.swimlaneAdded(a[c]) - } finally { - b.endUpdate() - } - } -}; -mxSwimlaneManager.prototype.swimlaneAdded = function(a) { - for (var b = this.getGraph().getModel(), c = b.getParent(a), d = b.getChildCount(c), e = null, f = 0; f < d; f++) { - var g = b.getChildAt(c, f); - if (g != a && !this.isSwimlaneIgnored(g) && (e = b.getGeometry(g), null != e)) break - } - null != e && this.resizeSwimlane(a, e.width, e.height) -}; -mxSwimlaneManager.prototype.cellsResized = function(a) { - if (null != a) { - var b = this.getGraph().getModel(); - b.beginUpdate(); - try { - for (var c = 0; c < a.length; c++) - if (!this.isSwimlaneIgnored(a[c])) { - var d = b.getGeometry(a[c]); - if (null != d) { - for (var e = new mxRectangle(0, 0, d.width, d.height), f = a[c], g = f; null != g;) { - var f = g, - g = b.getParent(g), - h = this.graph.isSwimlane(g) ? this.graph.getStartSize(g) : new mxRectangle; - e.width += h.width; - e.height += h.height - } - this.resizeSwimlane(f, e.width, e.height) - } - } - } finally { - b.endUpdate() - } - } -}; -mxSwimlaneManager.prototype.resizeSwimlane = function(a, b, c) { - var d = this.getGraph().getModel(); - d.beginUpdate(); - try { - if (!this.isSwimlaneIgnored(a)) { - var e = d.getGeometry(a); - if (null != e) { - var f = this.isCellHorizontal(a); - if (f && e.height != c || !f && e.width != b) e = e.clone(), f ? e.height = c : e.width = b, d.setGeometry(a, e) - } - } - var g = this.graph.isSwimlane(a) ? this.graph.getStartSize(a) : new mxRectangle; - b -= g.width; - c -= g.height; - for (var h = d.getChildCount(a), e = 0; e < h; e++) { - var k = d.getChildAt(a, e); - this.resizeSwimlane(k, b, c) - } - } finally { - d.endUpdate() - } -}; -mxSwimlaneManager.prototype.destroy = function() { - this.setGraph(null) -}; - -function mxTemporaryCellStates(a, b, c) { - this.view = a; - b = null != b ? b : 1; - this.oldBounds = a.getGraphBounds(); - this.oldStates = a.getStates(); - this.oldScale = a.getScale(); - a.setStates(new mxDictionary); - a.setScale(b); - if (null != c) { - b = a.createState(new mxCell); - for (var d = 0; d < c.length; d++) a.validateBounds(b, c[d]); - for (var e = null, d = 0; d < c.length; d++) { - var f = a.validatePoints(b, c[d]); - null == e ? e = f : e.add(f) - } - null == e && (e = new mxRectangle); - a.setGraphBounds(e) - } -} -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) -}; - -function mxCellStatePreview(a) { - this.graph = a; - this.deltas = {} -} -mxCellStatePreview.prototype.graph = null; -mxCellStatePreview.prototype.deltas = null; -mxCellStatePreview.prototype.count = 0; -mxCellStatePreview.prototype.isEmpty = function() { - return 0 == this.count -}; -mxCellStatePreview.prototype.moveState = function(a, b, c, d, e) { - d = null != d ? d : !0; - e = null != e ? e : !0; - var f = mxCellPath.create(a.cell), - g = this.deltas[f]; - null == g ? (g = new mxPoint(b, c), this.deltas[f] = g, this.count++) : d ? (g.X += b, g.Y += c) : (g.X = b, g.Y = c); - e && this.addEdges(a); - return g -}; -mxCellStatePreview.prototype.show = function(a) { - var b = this.graph.getModel(), - c = b.getRoot(), - d; - for (d in this.deltas) { - var e = mxCellPath.resolve(c, d), - f = this.graph.view.getState(e), - g = this.deltas[d], - e = this.graph.view.getState(b.getParent(e)); - this.translateState(e, f, g.x, g.y) - } - for (d in this.deltas) e = mxCellPath.resolve(c, d), f = this.graph.view.getState(e), g = this.deltas[d], e = this.graph.view.getState(b.getParent(e)), this.revalidateState(e, f, g.x, g.y, a) -}; -mxCellStatePreview.prototype.translateState = function(a, b, c, d) { - if (null != b) { - var e = this.graph.getModel(); - if (e.isVertex(b.cell)) { - b.invalid = !0; - this.graph.view.validateBounds(a, b.cell); - a = e.getGeometry(b.cell); - var f = mxCellPath.create(b.cell); - if ((0 != c || 0 != d) && null != a && (!a.relative || null != this.deltas[f])) b.x += c, b.y += d - } - a = e.getChildCount(b.cell); - for (f = 0; f < a; f++) this.translateState(b, this.graph.view.getState(e.getChildAt(b.cell, f)), c, d) - } -}; -mxCellStatePreview.prototype.revalidateState = function(a, b, c, d, e) { - if (null != b) { - b.invalid = !0; - this.graph.view.validatePoints(a, b.cell); - var f = mxCellPath.create(b.cell), - g = this.graph.getModel(), - h = this.graph.getCellGeometry(b.cell); - if ((0 != c || 0 != d) && null != h && h.relative && g.isVertex(b.cell) && (null == a || g.isVertex(a.cell) || null != this.deltas[f])) b.x += c, b.y += d, this.graph.cellRenderer.redraw(b); - null != e && e(b); - a = g.getChildCount(b.cell); - for (f = 0; f < a; f++) this.revalidateState(b, this.graph.view.getState(g.getChildAt(b.cell, - f)), c, d, e) - } -}; -mxCellStatePreview.prototype.addEdges = function(a) { - for (var b = this.graph.getModel(), c = b.getEdgeCount(a.cell), d = 0; d < c; d++) { - var e = this.graph.view.getState(b.getEdgeAt(a.cell, d)); - null != e && this.moveState(e, 0, 0) - } -}; - -function mxConnectionConstraint(a, b) { - this.point = a; - this.perimeter = null != b ? b : !0 -} -mxConnectionConstraint.prototype.point = null; -mxConnectionConstraint.prototype.perimeter = null; - -function mxGraphHandler(a) { - this.graph = a; - this.graph.addMouseListener(this); - this.panHandler = mxUtils.bind(this, function() { - this.updatePreviewShape() - }); - this.graph.addListener(mxEvent.PAN, this.panHandler) -} -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(a) { - this.enabled = a -}; -mxGraphHandler.prototype.isCloneEnabled = function() { - return this.cloneEnabled -}; -mxGraphHandler.prototype.setCloneEnabled = function(a) { - this.cloneEnabled = a -}; -mxGraphHandler.prototype.isMoveEnabled = function() { - return this.moveEnabled -}; -mxGraphHandler.prototype.setMoveEnabled = function(a) { - this.moveEnabled = a -}; -mxGraphHandler.prototype.isSelectEnabled = function() { - return this.selectEnabled -}; -mxGraphHandler.prototype.setSelectEnabled = function(a) { - this.selectEnabled = a -}; -mxGraphHandler.prototype.isRemoveCellsFromParent = function() { - return this.removeCellsFromParent -}; -mxGraphHandler.prototype.setRemoveCellsFromParent = function(a) { - this.removeCellsFromParent = a -}; -mxGraphHandler.prototype.getInitialCellForEvent = function(a) { - return a.getCell() -}; -mxGraphHandler.prototype.isDelayedSelection = function(a) { - return this.graph.isCellSelected(a) -}; -mxGraphHandler.prototype.mouseDown = function(a, b) { - if (!b.isConsumed() && this.isEnabled() && this.graph.isEnabled() && !this.graph.isForceMarqueeEvent(b.getEvent()) && null != b.getState()) { - var c = this.getInitialCellForEvent(b); - this.cell = null; - this.delayedSelection = this.isDelayedSelection(c); - this.isSelectEnabled() && !this.delayedSelection && this.graph.selectCellForEvent(c, b.getEvent()); - if (this.isMoveEnabled()) { - var d = this.graph.model, - e = d.getGeometry(c); - this.graph.isCellMovable(c) && (!d.isEdge(c) || 1 < this.graph.getSelectionCount() || - null != e.points && 0 < e.points.length || null == d.getTerminal(c, !0) || null == d.getTerminal(c, !1) || this.graph.allowDanglingEdges || this.graph.isCloneEvent(b.getEvent()) && this.graph - .isCellsCloneable()) && this.start(c, b.getX(), b.getY()); - this.cellWasClicked = !0; - !mxClient.IS_SF && !mxClient.IS_GC || "SELECT" != b.getSource().nodeName ? b.consume() : mxClient.IS_SF && "SELECT" == b.getSource().nodeName && (this.cellWasClicked = !1, this.first = null) - } - } -}; -mxGraphHandler.prototype.getGuideStates = function() { - var a = this.graph.getDefaultParent(), - b = this.graph.getModel(), - c = mxUtils.bind(this, function(a) { - return null != this.graph.view.getState(a) && b.isVertex(a) && null != b.getGeometry(a) && !b.getGeometry(a).relative - }); - return this.graph.view.getCellStates(b.filterDescendants(c, a)) -}; -mxGraphHandler.prototype.getCells = function(a) { - return !this.delayedSelection && this.graph.isCellMovable(a) ? [a] : this.graph.getMovableCells(this.graph.getSelectionCells()) -}; -mxGraphHandler.prototype.getPreviewBounds = function(a) { - a = this.getBoundingBox(a); - null != a && (a.grow(-1, -1), a.width < this.minimumSize && (a.x -= (this.minimumSize - a.width) / 2, a.width = this.minimumSize), a.height < this.minimumSize && (a.y -= (this.minimumSize - a.height) / - 2, a.height = this.minimumSize)); - return a -}; -mxGraphHandler.prototype.getBoundingBox = function(a) { - var b = null; - if (null != a && 0 < a.length) - for (var c = this.graph.getModel(), d = 0; d < a.length; d++) - if (c.isVertex(a[d]) || c.isEdge(a[d])) { - var e = this.graph.view.getState(a[d]); - if (null != e) { - var f = e; - c.isVertex(a[d]) && (null != e.shape && null != e.shape.boundingBox) && (f = e.shape.boundingBox); - null == b ? b = new mxRectangle(f.x, f.y, f.width, f.height) : b.add(f) - } - } - return b -}; -mxGraphHandler.prototype.createPreviewShape = function(a) { - a = new mxRectangleShape(a, null, this.previewColor); - a.isDashed = !0; - this.htmlPreview ? (a.dialect = mxConstants.DIALECT_STRICTHTML, a.init(this.graph.container)) : (a.dialect = this.graph.dialect != mxConstants.DIALECT_SVG ? mxConstants.DIALECT_VML : mxConstants.DIALECT_SVG, - a.init(this.graph.getView().getOverlayPane()), a.pointerEvents = !1); - return a -}; -mxGraphHandler.prototype.start = function(a, b, c) { - this.cell = a; - this.first = mxUtils.convertPoint(this.graph.container, b, c); - 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(a) { - return null != this.guide ? this.guide.isEnabledForEvent(a.getEvent()) : !0 -}; -mxGraphHandler.prototype.snap = function(a) { - var b = this.scaleGrid ? this.graph.view.scale : 1; - a.x = this.graph.snap(a.x / b) * b; - a.y = this.graph.snap(a.y / b) * b; - return a -}; -mxGraphHandler.prototype.mouseMove = function(a, b) { - var c = this.graph; - if (!b.isConsumed() && c.isMouseDown && null != this.cell && null != this.first && null != this.bounds) { - var d = mxUtils.convertPoint(c.container, b.getX(), b.getY()), - e = d.x - this.first.x, - f = d.y - this.first.y, - d = c.tolerance; - if (null != this.shape || Math.abs(e) > d || Math.abs(f) > d) { - null == this.highlight && (this.highlight = new mxCellHighlight(this.graph, mxConstants.DROP_TARGET_COLOR, 3)); - null == this.shape && (this.shape = this.createPreviewShape(this.bounds)); - var g = c.isGridEnabledEvent(b.getEvent()), - d = !0; - if (null != this.guide && this.useGuidesForEvent(b)) f = this.guide.move(this.bounds, new mxPoint(e, f), g), d = !1, e = f.x, f = f.y; - else if (g) var h = c.getView().translate, - k = c.getView().scale, - g = this.bounds.x - (c.snap(this.bounds.x / k - h.x) + h.x) * k, - h = this.bounds.y - (c.snap(this.bounds.y / k - h.y) + h.y) * k, - f = this.snap(new mxPoint(e, f)), - e = f.x - g, - f = f.y - h; - null != this.guide && d && this.guide.hide(); - c.isConstrainedEvent(b.getEvent()) && (Math.abs(e) > Math.abs(f) ? f = 0 : e = 0); - this.currentDx = e; - this.currentDy = f; - this.updatePreviewShape(); - d = null; - f = b.getCell(); - c.isDropEnabled() && this.highlightEnabled && (d = c.getDropTarget(this.cells, b.getEvent(), f)); - g = d; - for (h = c.getModel(); null != g && g != this.cells[0];) g = h.getParent(g); - var k = c.isCloneEvent(b.getEvent()) && c.isCellsCloneable() && this.isCloneEnabled(), - e = c.getView().getState(d), - l = !1; - null != e && null == g && (h.getParent(this.cell) != d || k) ? (this.target != d && (this.target = d, this.setHighlightColor(mxConstants.DROP_TARGET_COLOR)), l = !0) : (this.target = null, - this.connectOnDrop && (null != f && 1 == this.cells.length && c.getModel().isVertex(f) && - c.isCellConnectable(f)) && (e = c.getView().getState(f), null != e && (c = null == c.getEdgeValidationError(null, this.cell, f) ? mxConstants.VALID_COLOR : mxConstants.INVALID_CONNECT_TARGET_COLOR, - this.setHighlightColor(c), l = !0))); - null != e && l ? this.highlight.highlight(e) : this.highlight.hide() - } - b.consume(); - mxEvent.consume(b.getEvent()) - } else if ((this.isMoveEnabled() || this.isCloneEnabled()) && this.updateCursor && !b.isConsumed() && null != b.getState() && !c.isMouseDown) e = c.getCursorForCell(b.getCell()), null == e && (c.isEnabled() && - c.isCellMovable(b.getCell())) && - (e = c.getModel().isEdge(b.getCell()) ? mxConstants.CURSOR_MOVABLE_EDGE : mxConstants.CURSOR_MOVABLE_VERTEX), b.getState().setCursor(e), b.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(a) { - null != this.highlight && this.highlight.setHighlightColor(a) -}; -mxGraphHandler.prototype.mouseUp = function(a, b) { - if (!b.isConsumed()) { - var c = this.graph; - if (null != this.cell && null != this.first && null != this.shape && null != this.currentDx && null != this.currentDy) { - var d = c.getView().scale, - e = c.isCloneEvent(b.getEvent()) && c.isCellsCloneable() && this.isCloneEnabled(), - f = this.currentDx / d, - d = this.currentDy / d, - g = b.getCell(); - this.connectOnDrop && null == this.target && null != g && c.getModel().isVertex(g) && c.isCellConnectable(g) && c.isEdgeValid(null, this.cell, g) ? c.connectionHandler.connect(this.cell, - g, b.getEvent()) : (g = this.target, c.isSplitEnabled() && c.isSplitTarget(g, this.cells, b.getEvent()) ? c.splitEdge(g, this.cells, null, f, d) : this.moveCells(this.cells, f, d, e, this - .target, b.getEvent())) - } else this.isSelectEnabled() && (this.delayedSelection && null != this.cell) && this.selectDelayed(b) - } - this.cellWasClicked && b.consume(); - this.reset() -}; -mxGraphHandler.prototype.selectDelayed = function(a) { - this.graph.selectCellForEvent(this.cell, a.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(a, b, c) { - if (this.graph.getModel().isVertex(a)) { - a = this.graph.getView().getState(a); - c = mxUtils.convertPoint(this.graph.container, mxEvent.getClientX(c), mxEvent.getClientY(c)); - var d = mxUtils.toRadians(mxUtils.getValue(a.style, mxConstants.STYLE_ROTATION) || 0); - if (0 != d) { - b = Math.cos(-d); - var d = Math.sin(-d), - e = new mxPoint(a.getCenterX(), a.getCenterY()); - c = mxUtils.getRotatedPoint(c, b, d, e) - } - return null != a && !mxUtils.contains(a, c.x, c.y) - } - return !1 -}; -mxGraphHandler.prototype.moveCells = function(a, b, c, d, e, f) { - d && (a = this.graph.getCloneableCells(a)); - null == e && (this.isRemoveCellsFromParent() && this.shouldRemoveCellsFromParent(this.graph.getModel().getParent(this.cell), a, f)) && (e = this.graph.getDefaultParent()); - a = this.graph.moveCells(a, b - this.graph.panDx / this.graph.view.scale, c - this.graph.panDy / this.graph.view.scale, d, e, f); - this.isSelectEnabled() && this.scrollOnMove && this.graph.scrollCellToVisible(a[0]); - d && this.graph.setSelectionCells(a) -}; -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() -}; - -function mxPanningHandler(a, b) { - null != a && (this.graph = a, this.factoryMethod = b, this.graph.addMouseListener(this), this.init()) -} -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(a) { - this.panningEnabled = a -}; -mxPanningHandler.prototype.init = function() { - mxPopupMenu.prototype.init.apply(this); - mxEvent.addListener(this.div, mxClient.IS_TOUCH ? "touchmove" : "mousemove", mxUtils.bind(this, function(a) { - this.graph.tooltipHandler.hide() - })) -}; -mxPanningHandler.prototype.isPanningTrigger = function(a) { - var b = a.getEvent(); - return this.useLeftButtonForPanning && (this.ignoreCell || null == a.getState()) && mxEvent.isLeftMouseButton(b) || mxEvent.isControlDown(b) && mxEvent.isShiftDown(b) || this.usePopupTrigger && - mxEvent.isPopupTrigger(b) -}; -mxPanningHandler.prototype.mouseDown = function(a, b) { - if (!b.isConsumed() && this.isEnabled()) { - this.hideMenu(); - this.dx0 = -this.graph.container.scrollLeft; - this.dy0 = -this.graph.container.scrollTop; - var c = mxUtils.convertPoint(this.graph.container, b.getX(), b.getY()); - this.triggerX = c.x; - this.triggerY = c.y; - this.popupTrigger = this.isPopupTrigger(b); - this.panningTrigger = this.isPanningEnabled() && this.isPanningTrigger(b); - this.startX = b.getX(); - this.startY = b.getY(); - this.panningTrigger && this.consumePanningTrigger(b) - } -}; -mxPanningHandler.prototype.consumePanningTrigger = function(a) { - a.consume() -}; -mxPanningHandler.prototype.mouseMove = function(a, b) { - var c = b.getX() - this.startX, - d = b.getY() - this.startY; - if (this.active) this.previewEnabled && (this.useGrid && (c = this.graph.snap(c), d = this.graph.snap(d)), this.graph.panGraph(c + this.dx0, d + this.dy0)), this.fireEvent(new mxEventObject( - mxEvent.PAN, "event", b)), b.consume(); - else if (this.panningTrigger) { - var e = this.active; - this.active = Math.abs(c) > this.graph.tolerance || Math.abs(d) > this.graph.tolerance; - !e && this.active && this.fireEvent(new mxEventObject(mxEvent.PAN_START, - "event", b)) - } -}; -mxPanningHandler.prototype.mouseUp = function(a, b) { - var c = Math.abs(b.getX() - this.startX), - d = Math.abs(b.getY() - this.startY); - if (this.active) { - if (!this.graph.useScrollbarsForPanning || !mxUtils.hasScrollbars(this.graph.container)) { - c = b.getX() - this.startX; - d = b.getY() - this.startY; - this.useGrid && (c = this.graph.snap(c), d = this.graph.snap(d)); - var e = this.graph.getView().scale, - f = this.graph.getView().translate; - this.graph.panGraph(0, 0); - this.panGraph(f.x + c / e, f.y + d / e) - } - this.active = !1; - this.fireEvent(new mxEventObject(mxEvent.PAN_END, "event", - b)); - b.consume() - } else this.popupTrigger && (c < this.graph.tolerance && d < this.graph.tolerance) && (c = this.getCellForPopupEvent(b), this.graph.isEnabled() && this.selectOnPopup && null != c && !this.graph.isCellSelected( - c) ? this.graph.setSelectionCell(c) : this.clearSelectionOnBackground && null == c && this.graph.clearSelection(), this.graph.tooltipHandler.hide(), d = mxUtils.getScrollOrigin(), d = new mxPoint( - b.getX() + d.x, b.getY() + d.y), this.popup(d.x + 1, d.y + 1, c, b.getEvent()), b.consume()); - this.popupTrigger = this.panningTrigger = !1 -}; -mxPanningHandler.prototype.getCellForPopupEvent = function(a) { - return a.getCell() -}; -mxPanningHandler.prototype.panGraph = function(a, b) { - this.graph.getView().setTranslate(a, b) -}; -mxPanningHandler.prototype.destroy = function() { - this.graph.removeMouseListener(this); - mxPopupMenu.prototype.destroy.apply(this) -}; - -function mxCellMarker(a, b, c, d) { - mxEventSource.call(this); - null != a && (this.graph = a, this.validColor = null != b ? b : mxConstants.DEFAULT_VALID_COLOR, this.invalidColor = null != b ? c : mxConstants.DEFAULT_INVALID_COLOR, this.hotspot = null != d ? d : - mxConstants.DEFAULT_HOTSPOT, this.highlight = new mxCellHighlight(a)) -} -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(a) { - this.enabled = a -}; -mxCellMarker.prototype.isEnabled = function() { - return this.enabled -}; -mxCellMarker.prototype.setHotspot = function(a) { - this.hotspot = a -}; -mxCellMarker.prototype.getHotspot = function() { - return this.hotspot -}; -mxCellMarker.prototype.setHotspotEnabled = function(a) { - this.hotspotEnabled = a -}; -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; - null != this.markedState && (this.markedState = null, this.unmark()) -}; -mxCellMarker.prototype.process = function(a) { - var b = null; - if (this.isEnabled()) { - var b = this.getState(a), - c = null != b ? this.isValidState(b) : !1; - a = this.getMarkerColor(a.getEvent(), b, c); - this.validState = c ? b : null; - if (b != this.markedState || a != this.currentColor) this.currentColor = a, null != b && null != this.currentColor ? (this.markedState = b, this.mark()) : null != this.markedState && (this.markedState = - null, this.unmark()) - } - return b -}; -mxCellMarker.prototype.markCell = function(a, b) { - var c = this.graph.getView().getState(a); - null != c && (this.currentColor = null != b ? b : this.validColor, this.markedState = c, 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(a) { - return !0 -}; -mxCellMarker.prototype.getMarkerColor = function(a, b, c) { - return c ? this.validColor : this.invalidColor -}; -mxCellMarker.prototype.getState = function(a) { - var b = this.graph.getView(); - cell = this.getCell(a); - b = this.getStateToMark(b.getState(cell)); - return null != b && this.intersects(b, a) ? b : null -}; -mxCellMarker.prototype.getCell = function(a) { - return a.getCell() -}; -mxCellMarker.prototype.getStateToMark = function(a) { - return a -}; -mxCellMarker.prototype.intersects = function(a, b) { - return this.hotspotEnabled ? mxUtils.intersectsHotspot(a, b.getGraphX(), b.getGraphY(), this.hotspot, mxConstants.MIN_HOTSPOT_SIZE, mxConstants.MAX_HOTSPOT_SIZE) : !0 -}; -mxCellMarker.prototype.destroy = function() { - this.graph.getView().removeListener(this.resetHandler); - this.graph.getModel().removeListener(this.resetHandler); - this.highlight.destroy() -}; - -function mxSelectionCellsHandler(a) { - mxEventSource.call(this); - this.graph = a; - this.handlers = new mxDictionary; - this.graph.addMouseListener(this); - this.refreshHandler = mxUtils.bind(this, function(a, c) { - 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) -} -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(a) { - this.enabled = a -}; -mxSelectionCellsHandler.prototype.getHandler = function(a) { - return this.handlers.get(a) -}; -mxSelectionCellsHandler.prototype.reset = function() { - this.handlers.visit(function(a, b) { - b.reset.apply(b) - }) -}; -mxSelectionCellsHandler.prototype.refresh = function() { - var a = this.handlers; - this.handlers = new mxDictionary; - for (var b = this.graph.getSelectionCells(), c = 0; c < b.length; c++) { - var d = this.graph.view.getState(b[c]); - if (null != d) { - var e = a.remove(b[c]); - null != e && (e.state != d ? (e.destroy(), e = null) : e.redraw()); - null == e && (e = this.graph.createHandler(d), this.fireEvent(new mxEventObject(mxEvent.ADD, "state", d))); - null != e && this.handlers.put(b[c], e) - } - } - a.visit(mxUtils.bind(this, function(a, b) { - this.fireEvent(new mxEventObject(mxEvent.REMOVE, - "state", b.state)); - b.destroy() - })) -}; -mxSelectionCellsHandler.prototype.mouseDown = function(a, b) { - if (this.graph.isEnabled() && this.isEnabled()) { - var c = [a, b]; - this.handlers.visit(function(a, b) { - b.mouseDown.apply(b, c) - }) - } -}; -mxSelectionCellsHandler.prototype.mouseMove = function(a, b) { - if (this.graph.isEnabled() && this.isEnabled()) { - var c = [a, b]; - this.handlers.visit(function(a, b) { - b.mouseMove.apply(b, c) - }) - } -}; -mxSelectionCellsHandler.prototype.mouseUp = function(a, b) { - if (this.graph.isEnabled() && this.isEnabled()) { - var c = [a, b]; - this.handlers.visit(function(a, b) { - b.mouseUp.apply(b, c) - }) - } -}; -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) -}; - -function mxConnectionHandler(a, b) { - mxEventSource.call(this); - null != a && (this.graph = a, this.factoryMethod = b, this.init()) -} -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(a) { - this.enabled = a -}; -mxConnectionHandler.prototype.isCreateTarget = function() { - return this.createTarget -}; -mxConnectionHandler.prototype.setCreateTarget = function(a) { - this.createTarget = a -}; -mxConnectionHandler.prototype.createShape = function() { - var a = new mxPolyline([], mxConstants.INVALID_COLOR); - a.dialect = this.graph.dialect != mxConstants.DIALECT_SVG ? mxConstants.DIALECT_VML : mxConstants.DIALECT_SVG; - a.init(this.graph.getView().getOverlayPane()); - a.svgStrokeTolerance = 0; - a.pointerEvents = !1; - a.isDashed = !0; - if (this.graph.dialect == mxConstants.DIALECT_SVG) a.node.setAttribute("pointer-events", "none"); - else { - var b = mxUtils.bind(this, function(a) { - a = mxUtils.convertPoint(this.graph.container, mxEvent.getClientX(a), - mxEvent.getClientY(a)); - return this.graph.view.getState(this.graph.getCellAt(a.x, a.y)) - }); - mxEvent.redirectMouseEvents(a.node, this.graph, b) - } - return a -}; -mxConnectionHandler.prototype.init = function() { - this.graph.addMouseListener(this); - this.marker = this.createMarker(); - this.constraintHandler = new mxConstraintHandler(this.graph); - this.changeHandler = mxUtils.bind(this, function(a) { - 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(a) { - 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(a) { - return !0 -}; -mxConnectionHandler.prototype.createMarker = function() { - var a = new mxCellMarker(this.graph); - a.hotspotEnabled = !0; - a.getCell = mxUtils.bind(this, function(b, c) { - c = mxCellMarker.prototype.getCell.apply(a, arguments); - this.error = null; - if (!this.isConnectableCell(c)) return null; - null != c ? this.isConnecting() ? null != this.previous && (this.error = this.validateConnection(this.previous.cell, c), null != this.error && 0 == this.error.length && (c = null, this.isCreateTarget() && - (this.error = null))) : this.isValidSource(c) || (c = null) : this.isConnecting() && - (!this.isCreateTarget() && !this.graph.allowDanglingEdges) && (this.error = ""); - return c - }); - a.isValidState = mxUtils.bind(this, function(b) { - return this.isConnecting() ? null == this.error : mxCellMarker.prototype.isValidState.apply(a, arguments) - }); - a.getMarkerColor = mxUtils.bind(this, function(b, c, d) { - return null == this.connectImage || this.isConnecting() ? mxCellMarker.prototype.getMarkerColor.apply(a, arguments) : null - }); - a.intersects = mxUtils.bind(this, function(b, c) { - return null != this.connectImage || this.isConnecting() ? !0 : mxCellMarker.prototype.intersects.apply(a, - arguments) - }); - return a -}; -mxConnectionHandler.prototype.start = function(a, b, c, d) { - this.previous = a; - this.first = new mxPoint(b, c); - this.edgeState = null != d ? d : this.createEdgeState(null); - this.marker.currentColor = this.marker.validColor; - this.marker.markedState = a; - 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(a) { - return this.graph.isValidSource(a) -}; -mxConnectionHandler.prototype.isValidTarget = function(a) { - return !0 -}; -mxConnectionHandler.prototype.validateConnection = function(a, b) { - return !this.isValidTarget(b) ? "" : this.graph.getEdgeValidationError(null, a, b) -}; -mxConnectionHandler.prototype.getConnectImage = function(a) { - return this.connectImage -}; -mxConnectionHandler.prototype.isMoveIconToFrontForState = function(a) { - return null != a.text && a.text.node.parentNode == this.graph.container ? !0 : this.moveIconFront -}; -mxConnectionHandler.prototype.createIcons = function(a) { - var b = this.getConnectImage(a); - if (null != b && null != a) { - this.iconState = a; - var c = [], - d = new mxRectangle(0, 0, b.width, b.height), - e = new mxImageShape(d, b.src, null, null, 0); - e.preserveImageAspect = !1; - this.isMoveIconToFrontForState(a) ? (e.dialect = mxConstants.DIALECT_STRICTHTML, e.init(this.graph.container)) : (e.dialect = this.graph.dialect == mxConstants.DIALECT_SVG ? mxConstants.DIALECT_SVG : - mxConstants.DIALECT_VML, e.init(this.graph.getView().getOverlayPane()), this.moveIconBack && - null != e.node.previousSibling && e.node.parentNode.insertBefore(e.node, e.node.parentNode.firstChild)); - e.node.style.cursor = mxConstants.CURSOR_CONNECT; - var f = mxUtils.bind(this, function() { - return null != this.currentState ? this.currentState : a - }), - b = mxUtils.bind(this, function(a) { - mxEvent.isConsumed(a) || (this.icon = e, this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN, new mxMouseEvent(a, f()))) - }); - mxEvent.redirectMouseEvents(e.node, this.graph, f, b); - c.push(e); - this.redrawIcons(c, this.iconState); - return c - } - return null -}; -mxConnectionHandler.prototype.redrawIcons = function(a, b) { - if (null != a && null != a[0] && null != b) { - var c = this.getIconPosition(a[0], b); - a[0].bounds.x = c.x; - a[0].bounds.y = c.y; - a[0].redraw() - } -}; -mxConnectionHandler.prototype.getIconPosition = function(a, b) { - var c = this.graph.getView().scale, - d = b.getCenterX(), - e = b.getCenterY(); - if (this.graph.isSwimlane(b.cell)) { - var f = this.graph.getStartSize(b.cell), - d = 0 != f.width ? b.x + f.width * c / 2 : d, - e = 0 != f.height ? b.y + f.height * c / 2 : e, - f = mxUtils.toRadians(mxUtils.getValue(b.style, mxConstants.STYLE_ROTATION) || 0); - if (0 != f) var c = Math.cos(f), - f = Math.sin(f), - g = new mxPoint(b.getCenterX(), b.getCenterY()), - e = mxUtils.getRotatedPoint(new mxPoint(d, e), c, f, g), - d = e.x, - e = e.y - } - return new mxPoint(d - - a.bounds.width / 2, e - a.bounds.height / 2) -}; -mxConnectionHandler.prototype.destroyIcons = function(a) { - if (null != a) { - this.iconState = null; - for (var b = 0; b < a.length; b++) a[b].destroy() - } -}; -mxConnectionHandler.prototype.isStartEvent = function(a) { - return !this.graph.isForceMarqueeEvent(a.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(a, b) { - this.mouseDownCounter++; - if (this.isEnabled() && this.graph.isEnabled() && !b.isConsumed() && !this.isConnecting() && this.isStartEvent(b)) { - 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(b.getGraphX(), - b.getGraphY()); - this.edgeState = this.createEdgeState(b); - this.mouseDownCounter = 1; - this.waypointsEnabled && null == this.shape && (this.waypoints = null, this.shape = this.createShape()); - if (null == this.previous && null != this.edgeState) { - var c = this.graph.getPointForEvent(b.getEvent()); - this.edgeState.cell.geometry.setTerminalPoint(c, !0) - } - this.fireEvent(new mxEventObject(mxEvent.START, "state", this.previous)); - b.consume() - } else if (mxClient.IS_TOUCH && this.tapAndHoldEnabled && !this.tapAndHoldInProgress && this.isEnabled() && this.graph.isEnabled() && - !this.isConnecting()) { - this.tapAndHoldInProgress = !0; - this.initialTouchX = b.getX(); - this.initialTouchY = b.getY(); - var d = this.graph.view.getState(this.marker.getCell(b)); - this.tapAndHoldThread && window.clearTimeout(this.tapAndHoldThread); - this.tapAndHoldThread = window.setTimeout(mxUtils.bind(this, function() { - this.tapAndHoldValid && this.tapAndHold(b, d); - this.tapAndHoldValid = this.tapAndHoldInProgress = !1 - }), this.tapAndHoldDelay); - this.tapAndHoldValid = !0 - } - this.selectedIcon = this.icon; - this.icon = null -}; -mxConnectionHandler.prototype.tapAndHold = function(a, b) { - null != b && (this.marker.currentColor = this.marker.validColor, this.marker.markedState = b, this.marker.mark(), this.first = new mxPoint(a.getGraphX(), a.getGraphY()), this.edgeState = this.createEdgeState( - a), this.previous = b, this.fireEvent(new mxEventObject(mxEvent.START, "state", this.previous))) -}; -mxConnectionHandler.prototype.isImmediateConnectSource = function(a) { - return !this.graph.isCellMovable(a.cell) -}; -mxConnectionHandler.prototype.createEdgeState = function(a) { - return null -}; -mxConnectionHandler.prototype.updateCurrentState = function(a) { - var b = this.marker.process(a); - this.constraintHandler.update(a, null == this.first); - this.currentState = b -}; -mxConnectionHandler.prototype.convertWaypoint = function(a) { - var b = this.graph.getView().getScale(), - c = this.graph.getView().getTranslate(); - a.x = a.x / b - c.x; - a.y = a.y / b - c.y -}; -mxConnectionHandler.prototype.mouseMove = function(a, b) { - this.tapAndHoldValid && (this.tapAndHoldValid = Math.abs(this.initialTouchX - b.getX()) < this.tapAndHoldTolerance && Math.abs(this.initialTouchY - b.getY()) < this.tapAndHoldTolerance); - if (!b.isConsumed() && (this.ignoreMouseDown || null != this.first || !this.graph.isMouseDown)) { - !this.isEnabled() && null != this.currentState && (this.destroyIcons(this.icons), this.currentState = null); - (null != this.first || this.isEnabled() && this.graph.isEnabled()) && this.updateCurrentState(b); - if (null != this.first) { - var c = this.graph.getView().scale, - c = new mxPoint(this.graph.snap(b.getGraphX() / c) * c, this.graph.snap(b.getGraphY() / c) * c), - d = null, - e = c; - null != this.constraintHandler.currentConstraint && (null != this.constraintHandler.currentFocus && null != this.constraintHandler.currentPoint) && (d = this.constraintHandler.currentConstraint, - e = this.constraintHandler.currentPoint.clone()); - var f = this.first; - if (null != this.selectedIcon) { - var g = this.selectedIcon.bounds.width, - h = this.selectedIcon.bounds.height; - null != this.currentState && - this.targetConnectImage ? (g = this.getIconPosition(this.selectedIcon, this.currentState), this.selectedIcon.bounds.x = g.x, this.selectedIcon.bounds.y = g.y) : (g = new mxRectangle(b.getGraphX() + - this.connectIconOffset.x, b.getGraphY() + this.connectIconOffset.y, g, h), this.selectedIcon.bounds = g); - this.selectedIcon.redraw() - } - if (null != this.edgeState) { - this.edgeState.absolutePoints = [null, null != this.currentState ? null : e]; - this.graph.view.updateFixedTerminalPoint(this.edgeState, this.previous, !0, this.sourceConstraint); - null != this.currentState && - (null == d && (d = this.graph.getConnectionConstraint(this.edgeState, this.previous, !1)), this.edgeState.setAbsoluteTerminalPoint(null, !1), this.graph.view.updateFixedTerminalPoint(this - .edgeState, this.currentState, !1, d)); - f = null; - if (null != this.waypoints) { - f = []; - for (e = 0; e < this.waypoints.length; e++) d = this.waypoints[e].clone(), this.convertWaypoint(d), f[e] = d - } - this.graph.view.updatePoints(this.edgeState, f, this.previous, this.currentState); - this.graph.view.updateFloatingTerminalPoints(this.edgeState, this.previous, this.currentState); - e = this.edgeState.absolutePoints[this.edgeState.absolutePoints.length - 1]; - f = this.edgeState.absolutePoints[0] - } else null != this.currentState && null == this.constraintHandler.currentConstraint && (g = this.getTargetPerimeterPoint(this.currentState, b), null != g && (e = g)), null == this.sourceConstraint && - null != this.previous && (g = this.getSourcePerimeterPoint(this.previous, null != this.waypoints && 0 < this.waypoints.length ? this.waypoints[0] : e, b), null != g && (f = g)); - if (null == this.currentState && this.movePreviewAway) { - g = f; - null != this.edgeState && - 2 < this.edgeState.absolutePoints.length && (d = this.edgeState.absolutePoints[this.edgeState.absolutePoints.length - 2], null != d && (g = d)); - d = e.x - g.x; - g = e.y - g.y; - h = Math.sqrt(d * d + g * g); - if (0 == h) return; - e.x -= 4 * d / h; - e.y -= 4 * g / h - } - if (null == this.shape && (d = Math.abs(c.x - this.first.x), g = Math.abs(c.y - this.first.y), d > this.graph.tolerance || g > this.graph.tolerance)) this.shape = this.createShape(), this.updateCurrentState( - b); - null != this.shape && (null != this.edgeState ? this.shape.points = this.edgeState.absolutePoints : (c = [f], null != this.waypoints && - (c = c.concat(this.waypoints)), c.push(e), this.shape.points = c), this.drawPreview()); - mxEvent.consume(b.getEvent()); - b.consume() - } else !this.isEnabled() || !this.graph.isEnabled() ? this.constraintHandler.reset() : this.previous != this.currentState && null == this.edgeState ? (this.destroyIcons(this.icons), this.icons = - null, null != this.currentState && null == this.error && (this.icons = this.createIcons(this.currentState), null == this.icons && (this.currentState.setCursor(mxConstants.CURSOR_CONNECT), b - .consume())), this.previous = this.currentState) : - this.previous == this.currentState && (null != this.currentState && null == this.icons && !this.graph.isMouseDown) && b.consume(); - null != this.constraintHandler.currentConstraint && this.marker.reset(); - if (!this.graph.isMouseDown && null != this.currentState && null != this.icons) { - c = !1; - f = b.getSource(); - for (e = 0; e < this.icons.length && !c; e++) c = f == this.icons[e].node || f.parentNode == this.icons[e].node; - c || this.updateIcons(this.currentState, this.icons, b) - } - } else this.constraintHandler.reset() -}; -mxConnectionHandler.prototype.getTargetPerimeterPoint = function(a, b) { - var c = null, - d = a.view, - e = d.getPerimeterFunction(a); - if (null != e) { - var f = null != this.waypoints && 0 < this.waypoints.length ? this.waypoints[this.waypoints.length - 1] : new mxPoint(this.previous.getCenterX(), this.previous.getCenterY()), - d = e(d.getPerimeterBounds(a), this.edgeState, f, !1); - null != d && (c = d) - } else c = new mxPoint(a.getCenterX(), a.getCenterY()); - return c -}; -mxConnectionHandler.prototype.getSourcePerimeterPoint = function(a, b, c) { - c = null; - var d = a.view, - e = d.getPerimeterFunction(a), - f = new mxPoint(a.getCenterX(), a.getCenterY()); - if (null != e) { - var g = mxUtils.getValue(a.style, mxConstants.STYLE_ROTATION, 0), - h = -g * (Math.PI / 180); - 0 != g && (b = mxUtils.getRotatedPoint(new mxPoint(b.x, b.y), Math.cos(h), Math.sin(h), f)); - a = e(d.getPerimeterBounds(a), a, b, !1); - null != a && (0 != g && (a = mxUtils.getRotatedPoint(new mxPoint(a.x, a.y), Math.cos(-h), Math.sin(-h), f)), c = a) - } else c = f; - return c -}; -mxConnectionHandler.prototype.updateIcons = function(a, b, c) {}; -mxConnectionHandler.prototype.isStopEvent = function(a) { - return null != a.getState() -}; -mxConnectionHandler.prototype.addWaypointForEvent = function(a) { - var b = mxUtils.convertPoint(this.graph.container, a.getX(), a.getY()), - c = Math.abs(b.x - this.first.x), - b = Math.abs(b.y - this.first.y); - if (null != this.waypoints || 1 < this.mouseDownCounter && (c > this.graph.tolerance || b > this.graph.tolerance)) null == this.waypoints && (this.waypoints = []), c = this.graph.view.scale, b = - new mxPoint(this.graph.snap(a.getGraphX() / c) * c, this.graph.snap(a.getGraphY() / c) * c), this.waypoints.push(b) -}; -mxConnectionHandler.prototype.mouseUp = function(a, b) { - if (!b.isConsumed() && this.isConnecting()) { - if (this.waypointsEnabled && !this.isStopEvent(b)) { - this.addWaypointForEvent(b); - b.consume(); - return - } - if (null == this.error) { - var c = null != this.previous ? this.previous.cell : null, - d = null; - null != this.constraintHandler.currentConstraint && null != this.constraintHandler.currentFocus && (d = this.constraintHandler.currentFocus.cell); - null == d && this.marker.hasValidState() && (d = this.marker.validState.cell); - this.connect(c, d, b.getEvent(), - b.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); - b.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 a = null == this.error; - this.shape.strokewidth = this.getEdgeWidth(a); - a = this.getEdgeColor(a); - this.shape.stroke = a; - this.shape.redraw() -}; -mxConnectionHandler.prototype.getEdgeColor = function(a) { - return a ? mxConstants.VALID_COLOR : mxConstants.INVALID_COLOR -}; -mxConnectionHandler.prototype.getEdgeWidth = function(a) { - return a ? 3 : 1 -}; -mxConnectionHandler.prototype.connect = function(a, b, c, d) { - if (null != b || this.isCreateTarget() || this.graph.allowDanglingEdges) { - var e = this.graph.getModel(), - f = null; - e.beginUpdate(); - try { - if (null != a && (null == b && this.isCreateTarget()) && (b = this.createTargetVertex(c, a), null != b)) { - d = this.graph.getDropTarget([b], c, d); - if (null == d || !this.graph.getModel().isEdge(d)) { - var g = this.graph.getView().getState(d); - if (null != g) { - var h = e.getGeometry(b); - h.x -= g.origin.x; - h.y -= g.origin.y - } - } else d = this.graph.getDefaultParent(); - this.graph.addCell(b, - d) - } - var k = this.graph.getDefaultParent(); - null != a && (null != b && e.getParent(a) == e.getParent(b) && e.getParent(e.getParent(a)) != e.getRoot()) && (k = e.getParent(a), null != a.geometry && a.geometry.relative && (null != b.geometry && - b.geometry.relative) && (k = e.getParent(k))); - h = g = null; - null != this.edgeState && (g = this.edgeState.cell.value, h = this.edgeState.cell.style); - f = this.insertEdge(k, null, g, a, b, h); - if (null != f) { - this.graph.setConnectionConstraint(f, a, !0, this.sourceConstraint); - this.graph.setConnectionConstraint(f, b, !1, this.constraintHandler.currentConstraint); - null != this.edgeState && e.setGeometry(f, this.edgeState.cell.geometry); - var l = e.getGeometry(f); - null == l && (l = new mxGeometry, l.relative = !0, e.setGeometry(f, l)); - if (null != this.waypoints && 0 < this.waypoints.length) { - var m = this.graph.view.scale, - n = this.graph.view.translate; - l.points = []; - for (a = 0; a < this.waypoints.length; a++) { - var p = this.waypoints[a]; - l.points.push(new mxPoint(p.x / m - n.x, p.y / m - n.y)) - } - } - null == b && (p = this.graph.getPointForEvent(c, !1), p.x -= this.graph.panDx / this.graph.view.scale, p.y -= this.graph.panDy / this.graph.view.scale, - l.setTerminalPoint(p, !1)); - this.fireEvent(new mxEventObject(mxEvent.CONNECT, "cell", f, "event", c, "target", d)) - } - } catch (q) { - mxLog.show(), mxLog.debug(q.message) - } finally { - e.endUpdate() - } - this.select && this.selectCells(f, b) - } -}; -mxConnectionHandler.prototype.selectCells = function(a, b) { - this.graph.setSelectionCell(a) -}; -mxConnectionHandler.prototype.insertEdge = function(a, b, c, d, e, f) { - if (null == this.factoryMethod) return this.graph.insertEdge(a, b, c, d, e, f); - b = this.createEdge(c, d, e, f); - return b = this.graph.addEdge(b, a, d, e) -}; -mxConnectionHandler.prototype.createTargetVertex = function(a, b) { - for (var c = this.graph.getCellGeometry(b); null != c && c.relative;) b = this.graph.getModel().getParent(b), c = this.graph.getCellGeometry(b); - var d = this.graph.cloneCells([b])[0], - c = this.graph.getModel().getGeometry(d); - if (null != c) { - var e = this.graph.getPointForEvent(a); - c.x = this.graph.snap(e.x - c.width / 2) - this.graph.panDx / this.graph.view.scale; - c.y = this.graph.snap(e.y - c.height / 2) - this.graph.panDy / this.graph.view.scale; - if (null != this.first) { - var f = this.graph.view.getState(b); - if (null != f) { - var g = this.getAlignmentTolerance(); - Math.abs(this.graph.snap(this.first.x) - this.graph.snap(e.x)) <= g ? c.x = f.x : Math.abs(this.graph.snap(this.first.y) - this.graph.snap(e.y)) <= g && (c.y = f.y) - } - } - } - return d -}; -mxConnectionHandler.prototype.getAlignmentTolerance = function() { - return this.graph.isGridEnabled() ? this.graph.gridSize : this.graph.tolerance -}; -mxConnectionHandler.prototype.createEdge = function(a, b, c, d) { - var e = null; - null != this.factoryMethod && (e = this.factoryMethod(b, c, d)); - null == e && (e = new mxCell(a || ""), e.setEdge(!0), e.setStyle(d), a = new mxGeometry, a.relative = !0, e.setGeometry(a)); - return e -}; -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) -}; - -function mxConstraintHandler(a) { - this.graph = a -} -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(a) { - this.enabled = a -}; -mxConstraintHandler.prototype.reset = function() { - if (null != this.focusIcons) { - for (var a = 0; a < this.focusIcons.length; a++) this.focusIcons[a].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(a, b, c) { - return this.pointImage -}; -mxConstraintHandler.prototype.isEventIgnored = function(a, b) { - return !1 -}; -mxConstraintHandler.prototype.update = function(a, b) { - if (this.isEnabled() && !this.isEventIgnored(a)) { - var c = this.getTolerance(), - d = new mxRectangle(a.getGraphX() - c, a.getGraphY() - c, 2 * c, 2 * c), - e = null != a.getCell() ? this.graph.isCellConnectable(a.getCell()) : !1; - if (null == this.currentFocusArea || !mxUtils.intersects(this.currentFocusArea, d) || null != a.getState() && null != this.currentFocus && e) - if (this.currentFocusArea = null, a.getState() != this.currentFocus) - if (this.currentFocus = null, this.constraints = null != a.getState() && e ? this.graph.getAllConnectionConstraints(a.getState(), - b) : null, null != this.constraints) { - this.currentFocus = a.getState(); - this.currentFocusArea = new mxRectangle(a.getState().x, a.getState().y, a.getState().width, a.getState().height); - if (null != this.focusIcons) { - for (e = 0; e < this.focusIcons.length; e++) this.focusIcons[e].destroy(); - this.focusPoints = this.focusIcons = null - } - this.focusIcons = []; - this.focusPoints = []; - for (e = 0; e < this.constraints.length; e++) { - var f = this.graph.getConnectionPoint(a.getState(), this.constraints[e]), - g = this.getImageForConstraint(a.getState(), this.constraints[e], - f), - h = g.src, - g = new mxRectangle(f.x - g.width / 2, f.y - g.height / 2, g.width, g.height), - g = new mxImageShape(g, h); - g.dialect = this.graph.dialect != mxConstants.DIALECT_SVG ? mxConstants.DIALECT_MIXEDHTML : mxConstants.DIALECT_SVG; - g.preserveImageAspect = !1; - g.init(this.graph.getView().getOverlayPane()); - null != g.node.previousSibling && g.node.parentNode.insertBefore(g.node, g.node.parentNode.firstChild); - h = mxUtils.bind(this, function() { - return null != this.currentFocus ? this.currentFocus : a.getState() - }); - g.redraw(); - mxEvent.redirectMouseEvents(g.node, - this.graph, h); - this.currentFocusArea.add(g.bounds); - this.focusIcons.push(g); - this.focusPoints.push(f) - } - this.currentFocusArea.grow(c) - } else if (null != this.focusIcons) { - null != this.focusHighlight && (this.focusHighlight.destroy(), this.focusHighlight = null); - for (e = 0; e < this.focusIcons.length; e++) this.focusIcons[e].destroy(); - this.focusPoints = this.focusIcons = null - } - this.currentPoint = this.currentConstraint = null; - if (null != this.focusIcons && null != this.constraints && (null == a.getState() || this.currentFocus == a.getState())) - for (e = - 0; e < this.focusIcons.length; e++) - if (mxUtils.intersects(this.focusIcons[e].bounds, d)) { - this.currentConstraint = this.constraints[e]; - this.currentPoint = this.focusPoints[e]; - c = this.focusIcons[e].bounds.clone(); - c.grow(mxClient.IS_IE ? 3 : 2); - mxClient.IS_IE && (c.width -= 1, c.height -= 1); - null == this.focusHighlight ? (c = new mxRectangleShape(c, null, this.highlightColor, 3), c.dialect = this.graph.dialect == mxConstants.DIALECT_SVG ? mxConstants.DIALECT_SVG : mxConstants - .DIALECT_VML, c.init(this.graph.getView().getOverlayPane()), this.focusHighlight = - c, h = mxUtils.bind(this, function() { - return null != this.currentFocus ? this.currentFocus : a.getState() - }), mxEvent.redirectMouseEvents(c.node, this.graph, h)) : (this.focusHighlight.bounds = c, this.focusHighlight.redraw()); - break - } - null == this.currentConstraint && null != this.focusHighlight && (this.focusHighlight.destroy(), this.focusHighlight = null) - } -}; -mxConstraintHandler.prototype.destroy = function() { - this.reset() -}; - -function mxRubberband(a) { - null != a && (this.graph = a, 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() - }))) -} -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(a) { - this.enabled = a -}; -mxRubberband.prototype.mouseDown = function(a, b) { - if (!b.isConsumed() && this.isEnabled() && this.graph.isEnabled() && (this.graph.isForceMarqueeEvent(b.getEvent()) || null == b.getState())) { - var c = mxUtils.getOffset(this.graph.container), - d = mxUtils.getScrollOrigin(this.graph.container); - d.x -= c.x; - d.y -= c.y; - this.start(b.getX() + d.x, b.getY() + d.y); - if (mxClient.IS_NS && !mxClient.IS_SF && !mxClient.IS_GC) { - var e = this.graph.container, - f = function(a) { - a = new mxMouseEvent(a); - var b = mxUtils.convertPoint(e, a.getX(), a.getY()); - a.graphX = b.x; - a.graphY = b.y; - return a - }; - this.dragHandler = mxUtils.bind(this, function(a) { - this.mouseMove(this.graph, f(a)) - }); - this.dropHandler = mxUtils.bind(this, function(a) { - this.mouseUp(this.graph, f(a)) - }); - mxEvent.addListener(document, "mousemove", this.dragHandler); - mxEvent.addListener(document, "mouseup", this.dropHandler) - } - b.consume(!1) - } -}; -mxRubberband.prototype.start = function(a, b) { - this.first = new mxPoint(a, b) -}; -mxRubberband.prototype.mouseMove = function(a, b) { - if (!b.isConsumed() && null != this.first) { - var c = mxUtils.getScrollOrigin(this.graph.container), - d = mxUtils.getOffset(this.graph.container); - c.x -= d.x; - c.y -= d.y; - var d = b.getX() + c.x, - c = b.getY() + c.y, - e = this.first.x - d, - f = this.first.y - c, - g = this.graph.tolerance; - if (null != this.div || Math.abs(e) > g || Math.abs(f) > g) null == this.div && (this.div = this.createShape()), mxUtils.clearSelection(), this.update(d, c), b.consume() - } -}; -mxRubberband.prototype.createShape = function() { - null == this.sharedDiv && (this.sharedDiv = document.createElement("div"), this.sharedDiv.className = "mxRubberband", mxUtils.setOpacity(this.sharedDiv, this.defaultOpacity)); - this.graph.container.appendChild(this.sharedDiv); - return this.sharedDiv -}; -mxRubberband.prototype.mouseUp = function(a, b) { - var c = null != this.div; - this.reset(); - c && (c = new mxRectangle(this.x, this.y, this.width, this.height), this.graph.selectRegion(c, b.getEvent()), b.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(a, b) { - this.currentX = a; - this.currentY = b; - this.repaint() -}; -mxRubberband.prototype.repaint = function() { - if (null != this.div) { - var a = this.currentX - this.graph.panDx, - b = this.currentY - this.graph.panDy; - this.x = Math.min(this.first.x, a); - this.y = Math.min(this.first.y, b); - this.width = Math.max(this.first.x, a) - this.x; - this.height = Math.max(this.first.y, b) - this.y; - a = 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 + a + "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)) -}; - -function mxVertexHandler(a) { - null != a && (this.state = a, this.init()) -} -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() { - 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); - if (0 >= mxGraphHandler.prototype.maxCells || this.graph.getSelectionCount() < mxGraphHandler.prototype.maxCells) { - var a = this.graph.isCellResizable(this.state.cell); - this.sizers = []; - if (a || this.graph.isLabelMovable(this.state.cell) && 2 <= this.state.width && 2 <= this.state.height) { - var b = 0; - a && (this.singleSizer || (this.sizers.push(this.createSizer("nw-resize", - b++)), this.sizers.push(this.createSizer("n-resize", b++)), this.sizers.push(this.createSizer("ne-resize", b++)), this.sizers.push(this.createSizer("w-resize", b++)), this.sizers.push( - this.createSizer("e-resize", b++)), this.sizers.push(this.createSizer("sw-resize", b++)), this.sizers.push(this.createSizer("s-resize", b++))), this.sizers.push(this.createSizer( - "se-resize", b++))); - a = this.graph.model.getGeometry(this.state.cell); - null != a && (!a.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) && 2 > this.state.width && 2 > this.state.height) && (this.labelShape = this.createSizer( - mxConstants.CURSOR_MOVABLE_VERTEX, null, null, mxConstants.LABEL_HANDLE_FILLCOLOR), this.sizers.push(this.labelShape)) - } - if (this.rotationEnabled && (0 >= - mxGraphHandler.prototype.maxCells || 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(a) { - return new mxRectangle(Math.round(a.x), Math.round(a.y), Math.round(a.width), Math.round(a.height)) -}; -mxVertexHandler.prototype.createSelectionShape = function(a) { - a = new mxRectangleShape(a, null, this.getSelectionColor()); - a.strokewidth = this.getSelectionStrokeWidth(); - a.isDashed = this.isSelectionDashed(); - return a -}; -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(a, b, c, d) { - c = c || mxConstants.HANDLE_SIZE; - c = new mxRectangle(0, 0, c, c); - d = this.createSizerShape(c, b, d); - d.isHtmlAllowed() && null != this.state.text && this.state.text.node.parentNode == this.graph.container ? (d.bounds.height -= 1, d.bounds.width -= 1, d.dialect = mxConstants.DIALECT_STRICTHTML, d - .init(this.graph.container)) : (d.dialect = this.graph.dialect != mxConstants.DIALECT_SVG ? mxConstants.DIALECT_MIXEDHTML : mxConstants.DIALECT_SVG, d.init(this.graph.getView().getOverlayPane())); - mxEvent.redirectMouseEvents(d.node, this.graph, this.state); - this.graph.isEnabled() && (d.node.style.cursor = a); - this.isSizerVisible(b) || (d.node.style.visibility = "hidden"); - return d -}; -mxVertexHandler.prototype.isSizerVisible = function(a) { - return !0 -}; -mxVertexHandler.prototype.createSizerShape = function(a, b, c) { - return null != this.handleImage ? (a.width = this.handleImage.width, a.height = this.handleImage.height, new mxImageShape(a, this.handleImage.src)) : b == mxEvent.ROTATION_HANDLE ? new mxEllipse( - a, c || mxConstants.HANDLE_FILLCOLOR, mxConstants.HANDLE_STROKECOLOR) : new mxRectangleShape(a, c || mxConstants.HANDLE_FILLCOLOR, mxConstants.HANDLE_STROKECOLOR) -}; -mxVertexHandler.prototype.moveSizerTo = function(a, b, c) { - null != a && (a.bounds.x = Math.round(b - a.bounds.width / 2), a.bounds.y = Math.round(c - a.bounds.height / 2), a.redraw()) -}; -mxVertexHandler.prototype.getHandleForEvent = function(a) { - if (a.isSource(this.rotationShape)) return mxEvent.ROTATION_HANDLE; - if (a.isSource(this.labelShape)) return mxEvent.LABEL_HANDLE; - if (null != this.sizers) - for (var b = this.tolerance, b = this.allowHandleBoundsCheck && (mxClient.IS_IE || 0 < b) ? new mxRectangle(a.getGraphX() - b, a.getGraphY() - b, 2 * b, 2 * b) : null, c = 0; c < this.sizers.length; c++) - if (a.isSource(this.sizers[c]) || null != b && mxUtils.intersects(this.sizers[c].bounds, b)) return c; - return null -}; -mxVertexHandler.prototype.mouseDown = function(a, b) { - if (!b.isConsumed() && this.graph.isEnabled() && !this.graph.isForceMarqueeEvent(b.getEvent()) && (0 < this.tolerance || b.getState() == this.state)) { - var c = this.getHandleForEvent(b); - null != c && (this.start(b.getX(), b.getY(), c), b.consume()) - } -}; -mxVertexHandler.prototype.start = function(a, b, c) { - a = mxUtils.convertPoint(this.graph.container, a, b); - this.startX = a.x; - this.startY = a.y; - this.index = c; - this.selectionBorder.node.style.display = c == 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 = - mxConstants.DIALECT_STRICTHTML, this.preview.init(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())) -}; -mxVertexHandler.prototype.mouseMove = function(a, b) { - if (!b.isConsumed() && null != this.index) { - var c = new mxPoint(b.getGraphX(), b.getGraphY()), - d = this.graph.isGridEnabledEvent(b.getEvent()), - e = this.graph.getView().scale; - if (this.index == mxEvent.LABEL_HANDLE) d && (c.x = this.graph.snap(c.x / e) * e, c.y = this.graph.snap(c.y / e) * e), this.moveSizerTo(this.sizers[this.sizers.length - 1], c.x, c.y); - else if (this.index == mxEvent.ROTATION_HANDLE) { - var f = this.state.x + this.state.width / 2 - c.x, - g = this.state.y + this.state.height / 2 - c.y; - this.currentAlpha = - 0 != f ? 180 * Math.atan(g / f) / Math.PI + 90 : 0 > g ? 180 : 0; - 0 < f && (this.currentAlpha -= 180); - this.rotationRaster && (f = c.x - this.state.getCenterX(), g = c.y - this.state.getCenterY(), f = Math.abs(Math.sqrt(f * f + g * g) - this.state.height / 2 - 20), f = Math.max(1, 5 * Math.min( - 3, Math.max(0, Math.round(80 / Math.abs(f))))), this.currentAlpha = Math.round(this.currentAlpha / f) * f); - this.selectionBorder.rotation = this.currentAlpha; - this.selectionBorder.redraw() - } else { - var h = mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION] || "0"), - k = Math.cos(-h), - l = Math.sin(-h), - m = new mxPoint(this.state.getCenterX(), this.state.getCenterY()), - f = c.x - this.startX, - g = c.y - this.startY, - c = this.graph.view.translate, - n = l * f + k * g, - f = k * f - l * g; - this.bounds = this.union(this.selectionBounds, f, n, this.index, d, e, c); - k = Math.cos(h); - l = Math.sin(h); - g = new mxPoint(this.bounds.getCenterX(), this.bounds.getCenterY()); - f = g.x - m.x; - g = g.y - m.y; - m = l * f + k * g - g; - this.bounds.x += k * f - l * g - f; - this.bounds.y += m; - this.drawPreview() - } - b.consume() - } else null != this.getHandleForEvent(b) && b.consume(!1) -}; -mxVertexHandler.prototype.mouseUp = function(a, b) { - if (!b.isConsumed() && null != this.index && null != this.state) { - var c = new mxPoint(b.getGraphX(), b.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 d = this.graph.isGridEnabledEvent(b.getEvent()), - e = mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION] || "0"), - f = Math.cos(-e), - g = Math.sin(-e), - h = c.x - this.startX, - k = c.y - this.startY, - c = g * h + f * k, - h = f * h - g * k, - k = c, - l = this.graph.view.scale; - this.resizeCell(this.state.cell, h / l, k / l, this.index, d) - } - } finally { - this.graph.getModel().endUpdate() - } - this.reset(); - b.consume() - } -}; -mxVertexHandler.prototype.rotateCell = function(a, b) { - var c = this.graph.getModel(); - if (c.isVertex(a)) { - var d = a == this.state ? this.state : this.graph.view.getState(a); - null != d && this.graph.setCellStyles(mxConstants.STYLE_ROTATION, (d.style[mxConstants.STYLE_ROTATION] || 0) + b, [a]); - if (this.state.cell != a && (d = this.graph.getCellGeometry(a), null != d && !d.relative)) - if (0 != b) { - var e = this.graph.getModel().getParent(a), - f = this.graph.getCellGeometry(e); - if (!d.relative && null != f) { - var g = mxUtils.toRadians(b), - e = Math.cos(g), - g = Math.sin(g), - h = new mxPoint(d.getCenterX(), d.getCenterY()), - f = new mxPoint(f.width / 2, f.height / 2), - e = mxUtils.getRotatedPoint(h, e, g, f), - d = d.clone(); - d.x = e.x - d.width / 2; - d.y = e.y - d.height / 2; - c.setGeometry(a, d) - } - } else d = d.clone(), d.x += dx, d.y += dy, c.setGeometry(a, d); - d = c.getChildCount(a); - for (e = 0; e < d; e++) this.rotateCell(c.getChildAt(a, e), b) - } -}; -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(a, b, c, d, e) { - var f = this.graph.model.getGeometry(a); - if (null != f) - if (d == mxEvent.LABEL_HANDLE) d = this.graph.view.scale, b = (this.labelShape.bounds.getCenterX() - this.startX) / d, c = (this.labelShape.bounds.getCenterY() - this.startY) / d, f = f.clone(), - null == f.offset ? f.offset = new mxPoint(b, c) : (f.offset.x += b, f.offset.y += c), this.graph.model.setGeometry(a, f); - else { - d = this.union(f, b, c, d, e, 1, new mxPoint(0, 0)); - var g = mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION] || "0"); - if (0 != g) { - b = d.getCenterX() - f.getCenterX(); - c = d.getCenterY() - f.getCenterY(); - e = Math.cos(g); - var h = Math.sin(g), - g = e * b - h * c - b; - b = h * b + e * c - c; - c = d.x - f.x; - var k = d.y - f.y, - l = e * c - h * k; - e = h * c + e * k; - d.x += g; - d.y += b; - if (!this.graph.isCellCollapsed(a) && (0 != g || 0 != b)) c = f.x - d.x + l, k = f.y - d.y + e, this.moveChildren(a, c, k) - } - this.graph.resizeCell(a, d) - } -}; -mxVertexHandler.prototype.moveChildren = function(a, b, c) { - for (var d = this.graph.getModel(), e = d.getChildCount(a), f = 0; f < e; f++) { - var g = d.getChildAt(a, f); - if (d.isVertex(g)) { - var h = this.graph.getCellGeometry(g); - null != h && !h.relative && (h = h.clone(), h.x += b, h.y += c, d.setGeometry(g, h)) - } - } -}; -mxVertexHandler.prototype.union = function(a, b, c, d, e, f, g) { - if (this.singleSizer) { - g = a.x + a.width + b; - var h = a.y + a.height + c; - e && (g = this.graph.snap(g / f) * f, h = this.graph.snap(h / f) * f); - f = new mxRectangle(a.x, a.y, 0, 0); - f.add(new mxRectangle(g, h, 0, 0)); - return f - } - var h = a.x - g.x * f, - k = h + a.width, - l = a.y - g.y * f; - a = l + a.height; - 4 < d ? (a += c, e && (a = this.graph.snap(a / f) * f)) : 3 > d && (l += c, e && (l = this.graph.snap(l / f) * f)); - if (0 == d || 3 == d || 5 == d) h += b, e && (h = this.graph.snap(h / f) * f); - else if (2 == d || 4 == d || 7 == d) k += b, e && (k = this.graph.snap(k / f) * f); - e = k - h; - a -= - l; - 0 > e && (h += e, e = Math.abs(e)); - 0 > a && (l += a, a = Math.abs(a)); - return new mxRectangle(h + g.x * f, l + g.y * f, e, a) -}; -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 a = this.state; - if (null != this.sizers) { - var b = a.x + a.width, - c = a.y + a.height; - if (this.singleSizer) this.moveSizerTo(this.sizers[0], b, c); - else { - var d = a.x + a.width / 2, - e = a.y + a.height / 2; - if (1 < this.sizers.length) { - var f = mxUtils.toRadians(a.style[mxConstants.STYLE_ROTATION] || "0"), - g = Math.cos(f), - f = Math.sin(f), - h = new mxPoint(a.getCenterX(), - a.getCenterY()), - k = mxUtils.getRotatedPoint(new mxPoint(a.x, a.y), g, f, h); - this.moveSizerTo(this.sizers[0], k.x, k.y); - k.x = d; - k.y = a.y; - k = mxUtils.getRotatedPoint(k, g, f, h); - this.moveSizerTo(this.sizers[1], k.x, k.y); - k.x = b; - k.y = a.y; - k = mxUtils.getRotatedPoint(k, g, f, h); - this.moveSizerTo(this.sizers[2], k.x, k.y); - k.x = a.x; - k.y = e; - k = mxUtils.getRotatedPoint(k, g, f, h); - this.moveSizerTo(this.sizers[3], k.x, k.y); - k.x = b; - k.y = e; - k = mxUtils.getRotatedPoint(k, g, f, h); - this.moveSizerTo(this.sizers[4], k.x, k.y); - k.x = a.x; - k.y = c; - k = mxUtils.getRotatedPoint(k, - g, f, h); - this.moveSizerTo(this.sizers[5], k.x, k.y); - k.x = d; - k.y = c; - k = mxUtils.getRotatedPoint(k, g, f, h); - this.moveSizerTo(this.sizers[6], k.x, k.y); - k.x = b; - k.y = c; - k = mxUtils.getRotatedPoint(k, g, f, h); - this.moveSizerTo(this.sizers[7], k.x, k.y); - this.moveSizerTo(this.sizers[8], d + a.absoluteOffset.x, e + a.absoluteOffset.y) - } else 2 <= this.state.width && 2 <= this.state.height ? this.moveSizerTo(this.sizers[0], d + a.absoluteOffset.x, e + a.absoluteOffset.y) : this.moveSizerTo(this.sizers[0], a.x, a.y) - } - } - null != this.rotationShape && (f = mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION] || - "0"), g = Math.cos(f), f = Math.sin(f), h = new mxPoint(this.state.getCenterX(), this.state.getCenterY()), k = mxUtils.getRotatedPoint(new mxPoint(a.x + a.width / 2, a.y - 16), g, f, h), - this.moveSizerTo(this.rotationShape, k.x, k.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() { - null != this.preview && (this.preview.destroy(), this.preview = null); - this.selectionBorder.destroy(); - this.labelShape = this.selectionBorder = null; - if (null != this.sizers) - for (var a = 0; a < this.sizers.length; a++) this.sizers[a].destroy(), this.sizers[a] = null -}; - -function mxEdgeHandler(a) { - null != a && (this.state = a, this.init()) -} -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() { - 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(a) { - this.graph.dblClick(a, this.state.cell) - })); - mxEvent.addGestureListeners(this.shape.node, mxUtils.bind(this, function(a) { - this.addEnabled && this.isAddPointEvent(a) ? this.addPoint(this.state, a) : this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN, new mxMouseEvent(a, this.state)) - }), mxUtils.bind(this, function(a) { - var c = this.state.cell; - if (null != this.index) { - var d = mxUtils.convertPoint(this.graph.container, mxEvent.getClientX(a), - mxEvent.getClientY(a)), - c = this.graph.getCellAt(d.x, d.y); - this.graph.isSwimlane(c) && this.graph.hitsSwimlaneContent(c, d.x, d.y) && (c = null) - } - this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE, new mxMouseEvent(a, this.graph.getView().getState(c))) - }), mxUtils.bind(this, function(a) { - this.graph.fireMouseEvent(mxEvent.MOUSE_UP, new mxMouseEvent(a, this.state)) - })); - this.preferHtml = null != this.state.text && this.state.text.node.parentNode == this.graph.container; - if (!this.preferHtml) { - var a = this.state.getVisibleTerminalState(!0); - null != a && (this.preferHtml = null != a.text && a.text.node.parentNode == this.graph.container); - this.preferHtml || (a = this.state.getVisibleTerminalState(!1), null != a && (this.preferHtml = null != a.text && a.text.node.parentNode == this.graph.container)) - } - if (this.graph.getSelectionCount() < mxGraphHandler.prototype.maxCells || 0 >= mxGraphHandler.prototype.maxCells) 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(a) { - return mxEvent.isShiftDown(a) -}; -mxEdgeHandler.prototype.isRemovePointEvent = function(a) { - return mxEvent.isShiftDown(a) -}; -mxEdgeHandler.prototype.getSelectionPoints = function(a) { - return a.absolutePoints -}; -mxEdgeHandler.prototype.createSelectionShape = function(a) { - a = new mxPolyline(a, this.getSelectionColor()); - a.strokewidth = this.getSelectionStrokeWidth(); - a.isDashed = this.isSelectionDashed(); - return a -}; -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(a) { - return !0 -}; -mxEdgeHandler.prototype.createMarker = function() { - var a = new mxCellMarker(this.graph), - b = this; - a.getCell = function(a) { - var d = mxCellMarker.prototype.getCell.apply(this, arguments); - if (!b.isConnectableCell(d)) return null; - var e = b.graph.getModel(); - if (d == b.state.cell || null != d && !b.graph.connectableEdges && e.isEdge(d)) d = null; - return d - }; - a.isValidState = function(a) { - var d = b.graph.getModel(), - d = b.graph.view.getTerminalPort(a, b.graph.view.getState(d.getTerminal(b.state.cell, !b.isSource)), !b.isSource), - d = null != d ? d.cell : null; - b.error = b.validateConnection(b.isSource ? a.cell : d, b.isSource ? d : a.cell); - return null == b.error - }; - return a -}; -mxEdgeHandler.prototype.validateConnection = function(a, b) { - return this.graph.getEdgeValidationError(this.state.cell, a, b) -}; -mxEdgeHandler.prototype.createBends = function() { - for (var a = this.state.cell, b = [], c = 0; c < this.abspoints.length; c++) - if (this.isHandleVisible(c)) { - var d = c == this.abspoints.length - 1; - if ((d = 0 == c || d) || this.graph.isCellBendable(a)) { - var e = this.createHandleShape(c); - this.initBend(e); - mxClient.IS_TOUCH && e.node.setAttribute("pointer-events", "none"); - if (this.isHandleEnabled(c)) - if (mxClient.IS_TOUCH) { - var f = mxUtils.bind(this, function(a) { - a = mxUtils.convertPoint(this.graph.container, mxEvent.getClientX(a), mxEvent.getClientY(a)); - return this.graph.view.getState(this.graph.getCellAt(a.x, a.y)) - }); - mxEvent.redirectMouseEvents(e.node, this.graph, f) - } else e.node.style.cursor = mxConstants.CURSOR_BEND_HANDLE, mxEvent.redirectMouseEvents(e.node, this.graph, this.state); - b.push(e); - d || (this.points.push(new mxPoint(0, 0)), e.node.style.visibility = "hidden") - } - } - return b -}; -mxEdgeHandler.prototype.isHandleEnabled = function(a) { - return !0 -}; -mxEdgeHandler.prototype.isHandleVisible = function(a) { - return !0 -}; -mxEdgeHandler.prototype.createHandleShape = function(a) { - if (null != this.handleImage) return new mxImageShape(new mxRectangle(0, 0, this.handleImage.width, this.handleImage.height), this.handleImage.src); - a = mxConstants.HANDLE_SIZE; - this.preferHtml && (a -= 1); - return new mxRectangleShape(new mxRectangle(0, 0, a, a), mxConstants.HANDLE_FILLCOLOR, mxConstants.HANDLE_STROKECOLOR) -}; -mxEdgeHandler.prototype.initBend = function(a) { - this.preferHtml ? (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())) -}; -mxEdgeHandler.prototype.getHandleForEvent = function(a) { - if (null != this.bends) - for (var b = this.tolerance, b = this.allowHandleBoundsCheck && (mxClient.IS_IE || 0 < b) ? new mxRectangle(a.getGraphX() - b, a.getGraphY() - b, 2 * b, 2 * b) : null, c = 0; c < this.bends.length; c++) - if ((a.isSource(this.bends[c]) || null != b && mxUtils.intersects(this.bends[c].bounds, b)) && "hidden" != this.bends[c].node.style.visibility) return c; - if (a.isSource(this.labelShape) && "hidden" != this.labelShape.node.style.visibility || a.isSource(this.state.text)) - if (!mxClient.IS_SF && - !mxClient.IS_GC || "SELECT" != a.getSource().nodeName) return mxEvent.LABEL_HANDLE; - return null -}; -mxEdgeHandler.prototype.mouseDown = function(a, b) { - var c = null, - c = this.getHandleForEvent(b); - null != c && (!b.isConsumed() && this.graph.isEnabled() && !this.graph.isForceMarqueeEvent(b.getEvent())) && (this.removeEnabled && this.isRemovePointEvent(b.getEvent()) ? this.removePoint(this.state, - c) : (c != mxEvent.LABEL_HANDLE || this.graph.isLabelMovable(b.getCell())) && this.start(b.getX(), b.getY(), c), b.consume()) -}; -mxEdgeHandler.prototype.start = function(a, b, c) { - this.startX = a; - this.startY = b; - this.isSource = null == this.bends ? !1 : 0 == c; - this.isTarget = null == this.bends ? !1 : c == this.bends.length - 1; - this.isLabel = c == mxEvent.LABEL_HANDLE; - if (this.isSource || this.isTarget) { - if (a = this.state.cell, b = this.graph.model.getTerminal(a, this.isSource), null == b && this.graph.isTerminalPointMovable(a, this.isSource) || null != b && this.graph.isCellDisconnectable(a, - b, this.isSource)) this.index = c - } else this.index = c -}; -mxEdgeHandler.prototype.clonePreviewState = function(a, b) { - return this.state.clone() -}; -mxEdgeHandler.prototype.getSnapToTerminalTolerance = function() { - return this.graph.gridSize * this.graph.view.scale / 2 -}; -mxEdgeHandler.prototype.getPointForEvent = function(a) { - var b = new mxPoint(a.getGraphX(), a.getGraphY()), - c = this.getSnapToTerminalTolerance(), - d = this.graph.getView(), - e = !1, - f = !1; - if (this.snapToTerminals && 0 < c) { - var g = function(a) { - if (null != a) { - var d = a.x; - Math.abs(b.x - d) < c && (b.x = d, e = !0); - a = a.y; - Math.abs(b.y - a) < c && (b.y = a, f = !0) - } - }, - h = function(a) { - null != a && g.call(this, new mxPoint(d.getRoutingCenterX(a), d.getRoutingCenterY(a))) - }; - h.call(this, this.state.getVisibleTerminalState(!0)); - h.call(this, this.state.getVisibleTerminalState(!1)); - if (null != this.abspoints) - for (h = 0; h < this.abspoints; h++) h != this.index && g.call(this, this.abspoints[h]) - } - this.graph.isGridEnabledEvent(a.getEvent()) && (a = d.scale, h = d.translate, e || (b.x = (this.graph.snap(b.x / a - h.x) + h.x) * a), f || (b.y = (this.graph.snap(b.y / a - h.y) + h.y) * a)); - return b -}; -mxEdgeHandler.prototype.getPreviewTerminalState = function(a) { - this.constraintHandler.update(a, this.isSource); - this.marker.process(a); - a = this.marker.getValidState(); - var b = null; - null != this.constraintHandler.currentFocus && null != this.constraintHandler.currentConstraint && this.marker.reset(); - null != a ? b = a : null != this.constraintHandler.currentConstraint && null != this.constraintHandler.currentFocus && (b = this.constraintHandler.currentFocus); - return b -}; -mxEdgeHandler.prototype.getPreviewPoints = function(a) { - var b = this.graph.getCellGeometry(this.state.cell), - b = null != b.points ? b.points.slice() : null; - !this.isSource && !this.isTarget ? (this.convertPoint(a, !1), null == b ? b = [a] : b[this.index - 1] = a) : this.graph.resetEdgesOnConnect && (b = null); - return b -}; -mxEdgeHandler.prototype.updatePreviewState = function(a, b, c) { - var d = this.isSource ? c : this.state.getVisibleTerminalState(!0), - e = this.isTarget ? c : this.state.getVisibleTerminalState(!1), - f = this.graph.getConnectionConstraint(a, d, !0), - g = this.graph.getConnectionConstraint(a, e, !1), - h = this.constraintHandler.currentConstraint; - null == h && (h = new mxConnectionConstraint); - this.isSource ? f = h : this.isTarget && (g = h); - (!this.isSource || null != d) && a.view.updateFixedTerminalPoint(a, d, !0, f); - (!this.isTarget || null != e) && a.view.updateFixedTerminalPoint(a, - e, !1, g); - if ((this.isSource || this.isTarget) && null == c) a.setAbsoluteTerminalPoint(b, this.isSource), null == this.marker.getMarkedState() && (this.error = this.graph.allowDanglingEdges ? null : ""); - a.view.updatePoints(a, this.points, d, e); - a.view.updateFloatingTerminalPoints(a, d, e) -}; -mxEdgeHandler.prototype.mouseMove = function(a, b) { - if (null != this.index && null != this.marker) { - var c = this.getPointForEvent(b); - if (this.isLabel) this.label.x = c.x, this.label.y = c.y; - else { - this.points = this.getPreviewPoints(c); - var d = this.isSource || this.isTarget ? this.getPreviewTerminalState(b) : null, - e = this.clonePreviewState(c, null != d ? d.cell : null); - this.updatePreviewState(e, c, d); - this.setPreviewColor(null == this.error ? this.marker.validColor : this.marker.invalidColor); - this.abspoints = e.absolutePoints; - this.active = !0 - } - this.drawPreview(); - mxEvent.consume(b.getEvent()); - b.consume() - } else mxClient.IS_IE && null != this.getHandleForEvent(b) && b.consume(!1) -}; -mxEdgeHandler.prototype.mouseUp = function(a, b) { - if (null != this.index && null != this.marker) { - var c = this.state.cell; - if (b.getX() != this.startX || b.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 d = null; - null != this.constraintHandler.currentConstraint && null != this.constraintHandler.currentFocus && (d = this.constraintHandler.currentFocus.cell); - null == - d && this.marker.hasValidState() && (d = this.marker.validState.cell); - if (null != d) c = this.connect(c, d, this.isSource, this.graph.isCloneEvent(b.getEvent()) && this.cloneEnabled && this.graph.isCellsCloneable(), b); - else if (this.graph.isAllowDanglingEdges()) { - d = this.abspoints[this.isSource ? 0 : this.abspoints.length - 1]; - d.x = d.x / this.graph.view.scale - this.graph.view.translate.x; - d.y = d.y / this.graph.view.scale - this.graph.view.translate.y; - var e = this.graph.getView().getState(this.graph.getModel().getParent(c)); - null != e && (d.x -= - e.origin.x, d.y -= e.origin.y); - d.x -= this.graph.panDx / this.graph.view.scale; - d.y -= this.graph.panDy / this.graph.view.scale; - this.changeTerminalPoint(c, d, this.isSource) - } - } else this.active ? this.changePoints(c, this.points) : (this.graph.getView().invalidate(this.state.cell), this.graph.getView().revalidate(this.state.cell)); - null != this.marker && (this.reset(), c != this.state.cell && this.graph.setSelectionCell(c)); - b.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(a) { - null != this.shape && (this.shape.stroke = a) -}; -mxEdgeHandler.prototype.convertPoint = function(a, b) { - var c = this.graph.getView().getScale(), - d = this.graph.getView().getTranslate(); - b && (a.x = this.graph.snap(a.x), a.y = this.graph.snap(a.y)); - a.x = Math.round(a.x / c - d.x); - a.y = Math.round(a.y / c - d.y); - c = this.graph.getView().getState(this.graph.getModel().getParent(this.state.cell)); - null != c && (a.x -= c.origin.x, a.y -= c.origin.y); - return a -}; -mxEdgeHandler.prototype.moveLabel = function(a, b, c) { - var d = this.graph.getModel(), - e = d.getGeometry(a.cell); - if (null != e) { - var e = e.clone(), - f = this.graph.getView().getRelativePoint(a, b, c); - e.x = f.x; - e.y = f.y; - var g = this.graph.getView().scale; - e.offset = new mxPoint(0, 0); - f = this.graph.view.getPoint(a, e); - e.offset = new mxPoint((b - f.x) / g, (c - f.y) / g); - d.setGeometry(a.cell, e) - } -}; -mxEdgeHandler.prototype.connect = function(a, b, c, d, e) { - e = this.graph.getModel(); - var f = e.getParent(a); - e.beginUpdate(); - try { - if (d) { - var g = a.clone(); - e.add(f, g, e.getChildCount(f)); - var h = e.getTerminal(a, !c); - this.graph.connectCell(g, h, !c); - a = g - } - var k = this.constraintHandler.currentConstraint; - null == k && (k = new mxConnectionConstraint); - this.graph.connectCell(a, b, c, k) - } finally { - e.endUpdate() - } - return a -}; -mxEdgeHandler.prototype.changeTerminalPoint = function(a, b, c) { - var d = this.graph.getModel(), - e = d.getGeometry(a); - if (null != e) { - d.beginUpdate(); - try { - e = e.clone(), e.setTerminalPoint(b, c), d.setGeometry(a, e), this.graph.connectCell(a, null, c, new mxConnectionConstraint) - } finally { - d.endUpdate() - } - } -}; -mxEdgeHandler.prototype.changePoints = function(a, b) { - var c = this.graph.getModel(), - d = c.getGeometry(a); - null != d && (d = d.clone(), d.points = b, c.setGeometry(a, d)) -}; -mxEdgeHandler.prototype.addPoint = function(a, b) { - var c = mxUtils.convertPoint(this.graph.container, mxEvent.getClientX(b), mxEvent.getClientY(b)), - d = this.graph.isGridEnabledEvent(b); - this.convertPoint(c, d); - this.addPointAt(a, c.x, c.y); - mxEvent.consume(b) -}; -mxEdgeHandler.prototype.addPointAt = function(a, b, c) { - var d = this.graph.getCellGeometry(a.cell); - b = new mxPoint(b, c); - if (null != d) { - d = d.clone(); - c = this.graph.view.translate; - var e = this.graph.view.scale; - c = mxUtils.findNearestSegment(a, (b.x + c.x) * e, (b.y + c.y) * e); - null == d.points ? d.points = [b] : d.points.splice(c, 0, b); - this.graph.getModel().setGeometry(a.cell, d); - this.destroy(); - this.init() - } -}; -mxEdgeHandler.prototype.removePoint = function(a, b) { - if (0 < b && b < this.abspoints.length - 1) { - var c = this.graph.getCellGeometry(this.state.cell); - null != c && null != c.points && (c = c.clone(), c.points.splice(b - 1, 1), this.graph.getModel().setGeometry(a.cell, c), this.destroy(), this.init()) - } -}; -mxEdgeHandler.prototype.getHandleFillColor = function(a) { - a = 0 == a; - var b = this.state.cell, - c = this.graph.getModel().getTerminal(b, a), - d = mxConstants.HANDLE_FILLCOLOR; - null != c && !this.graph.isCellDisconnectable(b, c, a) || null == c && !this.graph.isTerminalPointMovable(b, a) ? d = mxConstants.LOCKED_HANDLE_FILLCOLOR : null != c && this.graph.isCellDisconnectable( - b, c, a) && (d = mxConstants.CONNECT_HANDLE_FILLCOLOR); - return d -}; -mxEdgeHandler.prototype.redraw = function() { - this.abspoints = this.state.absolutePoints.slice(); - var a = this.state.cell, - b = mxConstants.LABEL_HANDLE_SIZE; - this.label = new mxPoint(this.state.absoluteOffset.x, this.state.absoluteOffset.y); - this.labelShape.bounds = new mxRectangle(Math.round(this.label.x - b / 2), Math.round(this.label.y - b / 2), b, b); - this.labelShape.redraw(); - b = this.graph.getLabel(a); - null != b && 0 < b.length && this.graph.isLabelMovable(a) ? this.labelShape.node.style.visibility = "visible" : this.labelShape.node.style.visibility = - "hidden"; - if (null != this.bends && 0 < this.bends.length) { - var c = this.abspoints.length - 1, - a = this.abspoints[0], - d = this.abspoints[0].y, - b = this.bends[0].bounds; - this.bends[0].bounds = new mxRectangle(Math.round(this.abspoints[0].x - b.width / 2), Math.round(d - b.height / 2), b.width, b.height); - this.bends[0].fill = this.getHandleFillColor(0); - this.bends[0].redraw(); - var d = this.abspoints[c], - e = this.abspoints[c].x, - c = this.abspoints[c].y, - f = this.bends.length - 1, - b = this.bends[f].bounds; - this.bends[f].bounds = new mxRectangle(Math.round(e - b.width / - 2), Math.round(c - b.height / 2), b.width, b.height); - this.bends[f].fill = this.getHandleFillColor(f); - this.bends[f].redraw(); - this.redrawInnerBends(a, d) - } - this.drawPreview() -}; -mxEdgeHandler.prototype.redrawInnerBends = function(a, b) { - var c = this.graph.getModel().getGeometry(this.state.cell).points; - if (null != c) { - null == this.points && (this.points = []); - for (var d = 1; d < this.bends.length - 1; d++) - if (null != this.bends[d]) - if (null != this.abspoints[d]) { - var e = this.abspoints[d].x, - f = this.abspoints[d].y, - g = this.bends[d].bounds; - this.bends[d].node.style.visibility = "visible"; - this.bends[d].bounds = new mxRectangle(Math.round(e - g.width / 2), Math.round(f - g.height / 2), g.width, g.height); - this.bends[d].redraw(); - this.points[d - - 1] = c[d - 1] - } else this.bends[d].destroy(), this.bends[d] = null - } -}; -mxEdgeHandler.prototype.drawPreview = function() { - if (this.isLabel) { - var a = mxConstants.LABEL_HANDLE_SIZE, - a = new mxRectangle(Math.round(this.label.x - a / 2), Math.round(this.label.y - a / 2), a, a); - this.labelShape.bounds = a; - this.labelShape.redraw() - } else this.shape.points = this.abspoints, this.shape.redraw() -}; -mxEdgeHandler.prototype.destroy = function() { - 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); - if (null != this.bends) - for (var a = 0; a < this.bends.length; a++) null != this.bends[a] && (this.bends[a].destroy(), this.bends[a] = null) -}; - -function mxElbowEdgeHandler(a) { - mxEdgeHandler.call(this, a) -} -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 a = [], - b = this.createHandleShape(0); - this.initBend(b); - b.node.style.cursor = mxConstants.CURSOR_BEND_HANDLE; - mxEvent.redirectMouseEvents(b.node, this.graph, this.state); - a.push(b); - mxClient.IS_TOUCH && b.node.setAttribute("pointer-events", "none"); - a.push(this.createVirtualBend()); - this.points.push(new mxPoint(0, 0)); - b = this.createHandleShape(2); - this.initBend(b); - b.node.style.cursor = mxConstants.CURSOR_BEND_HANDLE; - mxEvent.redirectMouseEvents(b.node, this.graph, this.state); - a.push(b); - mxClient.IS_TOUCH && b.node.setAttribute("pointer-events", "none"); - return a -}; -mxElbowEdgeHandler.prototype.createVirtualBend = function() { - var a = this.createHandleShape(); - this.initBend(a); - var b = this.getCursorForBend(); - a.node.style.cursor = b; - b = mxUtils.bind(this, function(a) { - !mxEvent.isConsumed(a) && this.flipEnabled && (this.graph.flipEdge(this.state.cell, a), mxEvent.consume(a)) - }); - mxEvent.redirectMouseEvents(a.node, this.graph, this.state, null, null, null, b); - this.graph.isCellBendable(this.state.cell) || (a.node.style.display = "none"); - return a -}; -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(a) { - var b = null; - if (null != this.bends && null != this.bends[1] && (a == this.bends[1].node || a.parentNode == this.bends[1].node)) b = this.doubleClickOrientationResource, b = mxResources.get(b) || b; - return b -}; -mxElbowEdgeHandler.prototype.convertPoint = function(a, b) { - var c = this.graph.getView().getScale(), - d = this.graph.getView().getTranslate(), - e = this.state.origin; - b && (a.x = this.graph.snap(a.x), a.y = this.graph.snap(a.y)); - a.x = Math.round(a.x / c - d.x - e.x); - a.y = Math.round(a.y / c - d.y - e.y) -}; -mxElbowEdgeHandler.prototype.redrawInnerBends = function(a, b) { - var c = this.graph.getModel().getGeometry(this.state.cell).points, - c = null != c ? c[0] : null, - c = null == c ? new mxPoint(a.x + (b.x - a.x) / 2, a.y + (b.y - a.y) / 2) : new mxPoint(this.graph.getView().scale * (c.x + this.graph.getView().translate.x + this.state.origin.x), this.graph.getView() - .scale * (c.y + this.graph.getView().translate.y + this.state.origin.y)), - d = this.bends[1].bounds, - e = d.width, - d = d.height; - null == this.handleImage && (d = e = mxConstants.HANDLE_SIZE); - var f = new mxRectangle(Math.round(c.x - - e / 2), Math.round(c.y - d / 2), e, d); - null == this.handleImage && ("hidden" != this.labelShape.node.style.visibility && mxUtils.intersects(f, this.labelShape.bounds)) && (e += 3, d += 3, f = new mxRectangle(Math.round(c.x - e / 2), - Math.round(c.y - d / 2), e, d)); - this.bends[1].bounds = f; - this.bends[1].redraw() -}; - -function mxEdgeSegmentHandler(a) { - mxEdgeHandler.call(this, a) -} -mxUtils.extend(mxEdgeSegmentHandler, mxEdgeHandler); -mxEdgeSegmentHandler.prototype = new mxElbowEdgeHandler; -mxEdgeSegmentHandler.prototype.constructor = mxEdgeSegmentHandler; -mxEdgeSegmentHandler.prototype.getPreviewPoints = function(a) { - if (this.isSource || this.isTarget) return mxElbowEdgeHandler.prototype.getPreviewPoints.apply(this, arguments); - this.convertPoint(a, !1); - var b = this.state.absolutePoints, - c = b[0].clone(); - this.convertPoint(c, !1); - for (var d = [], e = 1; e < b.length; e++) { - var f = b[e].clone(); - this.convertPoint(f, !1); - e == this.index && (c.x == f.x ? (c.x = a.x, f.x = a.x) : (c.y = a.y, f.y = a.y)); - e < b.length - 1 && d.push(f); - c = f - } - if (1 == d.length) { - if (c = this.state.view, e = this.state.getVisibleTerminalState(!0), - f = this.state.getVisibleTerminalState(!1), null != f & null != e) { - var g = this.state.origin.x, - h = this.state.origin.y; - mxUtils.contains(f, d[0].x + g, d[0].y + h) ? b[1].y == b[2].y ? d[0].y = c.getRoutingCenterY(e) - h : d[0].x = c.getRoutingCenterX(e) - g : mxUtils.contains(e, d[0].x + g, d[0].y + h) && (b[ - 1].y == b[0].y ? d[0].y = c.getRoutingCenterY(f) - h : d[0].x = c.getRoutingCenterX(f) - g) - } - } else 0 == d.length && (d = [a]); - return d -}; -mxEdgeSegmentHandler.prototype.createBends = function() { - var a = [], - b = this.createHandleShape(0); - this.initBend(b); - b.node.style.cursor = mxConstants.CURSOR_BEND_HANDLE; - mxEvent.redirectMouseEvents(b.node, this.graph, this.state); - a.push(b); - mxClient.IS_TOUCH && b.node.setAttribute("pointer-events", "none"); - var c = this.state.absolutePoints; - if (this.graph.isCellBendable(this.state.cell)) { - null == this.points && (this.points = []); - for (var d = 0; d < c.length - 1; d++) b = this.createVirtualBend(), a.push(b), b.node.style.cursor = 0 == c[d].x - - c[d + 1].x ? "col-resize" : "row-resize", this.points.push(new mxPoint(0, 0)), mxClient.IS_TOUCH && b.node.setAttribute("pointer-events", "none") - } - b = this.createHandleShape(c.length); - this.initBend(b); - b.node.style.cursor = mxConstants.CURSOR_BEND_HANDLE; - mxEvent.redirectMouseEvents(b.node, this.graph, this.state); - a.push(b); - mxClient.IS_TOUCH && b.node.setAttribute("pointer-events", "none"); - return a -}; -mxEdgeSegmentHandler.prototype.redraw = function() { - this.refresh(); - mxEdgeHandler.prototype.redraw.apply(this, arguments) -}; -mxEdgeSegmentHandler.prototype.refresh = function() { - if (null != this.bends) { - for (var a = 0; a < this.bends.length; a++) null != this.bends[a] && (this.bends[a].destroy(), this.bends[a] = null); - this.bends = this.createBends() - } -}; -mxEdgeSegmentHandler.prototype.redrawInnerBends = function(a, b) { - if (this.graph.isCellBendable(this.state.cell)) { - var c = mxConstants.HANDLE_SIZE, - d = this.state.absolutePoints; - if (null != d && 1 < d.length) - for (var e = 0; e < this.state.absolutePoints.length - 1; e++) - if (null != this.bends[e + 1]) { - a = d[e]; - b = d[e + 1]; - var f = new mxPoint(a.x + (b.x - a.x) / 2, a.y + (b.y - a.y) / 2); - this.bends[e + 1].bounds = new mxRectangle(Math.round(f.x - c / 2), Math.round(f.y - c / 2), c, c); - this.bends[e + 1].redraw() - } - } -}; -mxEdgeSegmentHandler.prototype.changePoints = function(a, b) { - b = []; - var c = this.abspoints; - if (1 < c.length) - for (var d = c[0], e = c[1], f = 2; f < c.length; f++) { - var g = c[f]; - if ((Math.round(d.x) != Math.round(e.x) || Math.round(e.x) != Math.round(g.x)) && (Math.round(d.y) != Math.round(e.y) || Math.round(e.y) != Math.round(g.y))) d = e, e = e.clone(), this.convertPoint( - e, !1), b.push(e); - e = g - } - mxElbowEdgeHandler.prototype.changePoints.apply(this, arguments) -}; - -function mxKeyHandler(a, b) { - null != a && (this.graph = a, this.target = b || document.documentElement, this.normalKeys = [], this.shiftKeys = [], this.controlKeys = [], this.controlShiftKeys = [], mxEvent.addListener(this.target, - "keydown", mxUtils.bind(this, function(a) { - this.keyDown(a) - })), mxClient.IS_IE && mxEvent.addListener(window, "unload", mxUtils.bind(this, function() { - this.destroy() - }))) -} -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(a) { - this.enabled = a -}; -mxKeyHandler.prototype.bindKey = function(a, b) { - this.normalKeys[a] = b -}; -mxKeyHandler.prototype.bindShiftKey = function(a, b) { - this.shiftKeys[a] = b -}; -mxKeyHandler.prototype.bindControlKey = function(a, b) { - this.controlKeys[a] = b -}; -mxKeyHandler.prototype.bindControlShiftKey = function(a, b) { - this.controlShiftKeys[a] = b -}; -mxKeyHandler.prototype.isControlDown = function(a) { - return mxEvent.isControlDown(a) -}; -mxKeyHandler.prototype.getFunction = function(a) { - return null != a ? this.isControlDown(a) ? mxEvent.isShiftDown(a) ? this.controlShiftKeys[a.keyCode] : this.controlKeys[a.keyCode] : mxEvent.isShiftDown(a) ? this.shiftKeys[a.keyCode] : this.normalKeys[ - a.keyCode] : null -}; -mxKeyHandler.prototype.isGraphEvent = function(a) { - a = mxEvent.getSource(a); - if (a == this.target || a.parentNode == this.target || null != this.graph.cellEditor && a == this.graph.cellEditor.textarea) return !0; - for (; null != a;) { - if (a == this.graph.container) return !0; - a = a.parentNode - } - return !1 -}; -mxKeyHandler.prototype.keyDown = function(a) { - if (this.graph.isEnabled() && !mxEvent.isConsumed(a) && this.isGraphEvent(a) && this.isEnabled()) - if (27 == a.keyCode) this.escape(a); - else if (!this.graph.isEditing()) { - var b = this.getFunction(a); - null != b && (b(a), mxEvent.consume(a)) - } -}; -mxKeyHandler.prototype.escape = function(a) { - this.graph.isEscapeEnabled() && this.graph.escape(a) -}; -mxKeyHandler.prototype.destroy = function() { - this.target = null -}; - -function mxTooltipHandler(a, b) { - null != a && (this.graph = a, this.delay = b || 500, this.graph.addMouseListener(this)) -} -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(a) { - this.enabled = a -}; -mxTooltipHandler.prototype.isHideOnHover = function() { - return this.hideOnHover -}; -mxTooltipHandler.prototype.setHideOnHover = function(a) { - this.hideOnHover = a -}; -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(a) { - this.hideTooltip() - }))) -}; -mxTooltipHandler.prototype.mouseDown = function(a, b) { - this.reset(b, !1); - this.hideTooltip() -}; -mxTooltipHandler.prototype.mouseMove = function(a, b) { - if (b.getX() != this.lastX || b.getY() != this.lastY) this.reset(b, !0), (this.isHideOnHover() || b.getState() != this.state || b.getSource() != this.node && (!this.stateSource || null != b.getState() && - this.stateSource == (b.isSource(b.getState().shape) || !b.isSource(b.getState().text)))) && this.hideTooltip(); - this.lastX = b.getX(); - this.lastY = b.getY() -}; -mxTooltipHandler.prototype.mouseUp = function(a, b) { - this.reset(b, !0); - this.hideTooltip() -}; -mxTooltipHandler.prototype.resetTimer = function() { - null != this.thread && (window.clearTimeout(this.thread), this.thread = null) -}; -mxTooltipHandler.prototype.reset = function(a, b) { - this.resetTimer(); - if (b && this.isEnabled() && null != a.getState() && (null == this.div || "hidden" == this.div.style.visibility)) { - var c = a.getState(), - d = a.getSource(), - e = a.getX(), - f = a.getY(), - g = a.isSource(c.shape) || a.isSource(c.text); - this.thread = window.setTimeout(mxUtils.bind(this, function() { - if (!this.graph.isEditing() && !this.graph.panningHandler.isMenuShowing()) { - var a = this.graph.getTooltip(c, d, e, f); - this.show(a, e, f); - this.state = c; - this.node = d; - this.stateSource = g - } - }), 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(a, b, c) { - if (null != a && 0 < a.length) { - null == this.div && this.init(); - var d = mxUtils.getScrollOrigin(); - this.div.style.left = b + d.x + "px"; - this.div.style.top = c + mxConstants.TOOLTIP_VERTICAL_OFFSET + d.y + "px"; - mxUtils.isNode(a) ? (this.div.innerHTML = "", this.div.appendChild(a)) : this.div.innerHTML = a.replace(/\n/g, "\x3cbr\x3e"); - 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 -}; - -function mxCellTracker(a, b, c) { - mxCellMarker.call(this, a, b); - this.graph.addMouseListener(this); - null != c && (this.getCell = c); - mxClient.IS_IE && mxEvent.addListener(window, "unload", mxUtils.bind(this, function() { - this.destroy() - })) -} -mxUtils.extend(mxCellTracker, mxCellMarker); -mxCellTracker.prototype.mouseDown = function(a, b) {}; -mxCellTracker.prototype.mouseMove = function(a, b) { - this.isEnabled() && this.process(b) -}; -mxCellTracker.prototype.mouseUp = function(a, b) { - this.reset() -}; -mxCellTracker.prototype.destroy = function() { - this.destroyed || (this.destroyed = !0, this.graph.removeMouseListener(this), mxCellMarker.prototype.destroy.apply(this)) -}; - -function mxCellHighlight(a, b, c, d) { - null != a && (this.graph = a, this.highlightColor = null != b ? b : mxConstants.DEFAULT_VALID_COLOR, this.strokeWidth = null != c ? c : mxConstants.HIGHLIGHT_STROKEWIDTH, this.dashed = null != d ? - d : !1, 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)) -} -mxCellHighlight.prototype.keepOnTop = !1; -mxCellHighlight.prototype.graph = !0; -mxCellHighlight.prototype.state = null; -mxCellHighlight.prototype.spacing = 2; -mxCellHighlight.prototype.resetHandler = null; -mxCellHighlight.prototype.setHighlightColor = function(a) { - this.highlightColor = a; - null != this.shape && (this.shape.stroke = a) -}; -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 a = null, - a = 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); - a.dialect = this.graph.dialect != mxConstants.DIALECT_SVG ? mxConstants.DIALECT_VML : mxConstants.DIALECT_SVG; - a.init(this.graph.getView().getOverlayPane()); - mxEvent.redirectMouseEvents(a.node, this.graph, this.state); - a.svgStrokeTolerance = 0; - a.pointerEvents = !1; - a.isDashed = this.dashed; - return a -}; -mxCellHighlight.prototype.repaint = function() { - if (null != this.state && null != this.shape) { - var a = 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), a = Number(this.state.style[mxConstants.STYLE_ROTATION] || "0")); - null != this.state.shape && this.shape.setCursor(this.state.shape.getCursor()); - 0 != a && (this.shape.rotation = a); - this.shape.redraw() - } -}; -mxCellHighlight.prototype.hide = function() { - this.highlight(null) -}; -mxCellHighlight.prototype.highlight = function(a) { - this.state != a && (null != this.shape && (this.shape.destroy(), this.shape = null), this.state = a, 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) -}; - -function mxDefaultKeyHandler(a) { - if (null != a) { - this.editor = a; - this.handler = new mxKeyHandler(a.graph); - var b = this.handler.escape; - this.handler.escape = function(c) { - b.apply(this, arguments); - a.hideProperties(); - a.fireEvent(new mxEventObject(mxEvent.ESCAPE, "event", c)) - } - } -} -mxDefaultKeyHandler.prototype.editor = null; -mxDefaultKeyHandler.prototype.handler = null; -mxDefaultKeyHandler.prototype.bindAction = function(a, b, c) { - var d = mxUtils.bind(this, function() { - this.editor.execute(b) - }); - c ? this.handler.bindControlKey(a, d) : this.handler.bindKey(a, d) -}; -mxDefaultKeyHandler.prototype.destroy = function() { - this.handler.destroy(); - this.handler = null -}; - -function mxDefaultPopupMenu(a) { - this.config = a -} -mxDefaultPopupMenu.prototype.imageBasePath = null; -mxDefaultPopupMenu.prototype.config = null; -mxDefaultPopupMenu.prototype.createMenu = function(a, b, c, d) { - if (null != this.config) { - var e = this.createConditions(a, c, d); - this.addItems(a, b, c, d, e, this.config.firstChild, null) - } -}; -mxDefaultPopupMenu.prototype.addItems = function(a, b, c, d, e, f, g) { - for (var h = !1; null != f;) { - if ("add" == f.nodeName) { - var k = f.getAttribute("if"); - if (null == k || e[k]) { - var k = f.getAttribute("as"), - k = mxResources.get(k) || k, - l = mxUtils.eval(mxUtils.getTextContent(f)), - m = f.getAttribute("action"), - n = f.getAttribute("icon"), - p = f.getAttribute("iconCls"); - h && (b.addSeparator(g), h = !1); - null != n && this.imageBasePath && (n = this.imageBasePath + n); - k = this.addAction(b, a, k, n, l, m, c, g, p); - this.addItems(a, b, c, d, e, f.firstChild, k) - } - } else "separator" == - f.nodeName && (h = !0); - f = f.nextSibling - } -}; -mxDefaultPopupMenu.prototype.addAction = function(a, b, c, d, e, f, g, h, k) { - return a.addItem(c, d, function(a) { - "function" == typeof e && e.call(b, b, g, a); - null != f && b.execute(f, g, a) - }, h, k) -}; -mxDefaultPopupMenu.prototype.createConditions = function(a, b, c) { - var d = a.graph.getModel(), - e = d.getChildCount(b), - f = []; - f.nocell = null == b; - f.ncells = 1 < a.graph.getSelectionCount(); - f.notRoot = d.getRoot() != d.getParent(a.graph.getDefaultParent()); - f.cell = null != b; - d = null != b && 1 == a.graph.getSelectionCount(); - f.nonEmpty = d && 0 < e; - f.expandable = d && a.graph.isCellFoldable(b, !1); - f.collapsable = d && a.graph.isCellFoldable(b, !0); - f.validRoot = d && a.graph.isValidRoot(b); - f.emptyValidRoot = f.validRoot && 0 == e; - f.swimlane = d && a.graph.isSwimlane(b); - e = this.config.getElementsByTagName("condition"); - for (d = 0; d < e.length; d++) { - var g = mxUtils.eval(mxUtils.getTextContent(e[d])), - h = e[d].getAttribute("name"); - null != h && "function" == typeof g && (f[h] = g(a, b, c)) - } - return f -}; - -function mxDefaultToolbar(a, b) { - this.editor = b; - null != a && null != b && this.init(a) -} -mxDefaultToolbar.prototype.editor = null; -mxDefaultToolbar.prototype.toolbar = null; -mxDefaultToolbar.prototype.resetHandler = null; -mxDefaultToolbar.prototype.spacing = 4; -mxDefaultToolbar.prototype.connectOnDrop = !1; -mxDefaultToolbar.prototype.init = function(a) { - null != a && (this.toolbar = new mxToolbar(a), this.toolbar.addListener(mxEvent.SELECT, mxUtils.bind(this, function(a, c) { - var d = c.getProperty("function"); - this.editor.insertFunction = null != d ? mxUtils.bind(this, function() { - d.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(a, b, c, d) { - var e = mxUtils.bind(this, function() { - null != c && 0 < c.length && this.editor.execute(c) - }); - return this.toolbar.addItem(a, b, e, d) -}; -mxDefaultToolbar.prototype.addSeparator = function(a) { - a = a || mxClient.imageBasePath + "/separator.gif"; - this.toolbar.addSeparator(a) -}; -mxDefaultToolbar.prototype.addCombo = function() { - return this.toolbar.addCombo() -}; -mxDefaultToolbar.prototype.addActionCombo = function(a) { - return this.toolbar.addActionCombo(a) -}; -mxDefaultToolbar.prototype.addActionOption = function(a, b, c) { - var d = mxUtils.bind(this, function() { - this.editor.execute(c) - }); - this.addOption(a, b, d) -}; -mxDefaultToolbar.prototype.addOption = function(a, b, c) { - return this.toolbar.addOption(a, b, c) -}; -mxDefaultToolbar.prototype.addMode = function(a, b, c, d, e) { - var f = mxUtils.bind(this, function() { - this.editor.setMode(c); - null != e && e(this.editor) - }); - return this.toolbar.addSwitchMode(a, b, f, d) -}; -mxDefaultToolbar.prototype.addPrototype = function(a, b, c, d, e, f) { - var g = function() { - return "function" == typeof c ? c() : null != c ? c.clone() : null - }, - h = mxUtils.bind(this, function(a, b) { - "function" == typeof e ? e(this.editor, g(), a, b) : this.drop(g(), a, b); - this.toolbar.resetMode(); - mxEvent.consume(a) - }); - a = this.toolbar.addMode(a, b, h, d, null, f); - this.installDropHandler(a, function(a, b, c) { - h(b, c) - }); - return a -}; -mxDefaultToolbar.prototype.drop = function(a, b, c) { - var d = this.editor.graph, - e = d.getModel(); - if (null == c || e.isEdge(c) || !this.connectOnDrop || !d.isCellConnectable(c)) { - for (; null != c && !d.isValidDropTarget(c, [a], b);) c = e.getParent(c); - this.insert(a, b, c) - } else this.connect(a, b, c) -}; -mxDefaultToolbar.prototype.insert = function(a, b, c) { - var d = this.editor.graph; - if (d.canImportCell(a)) { - var e = mxEvent.getClientX(b), - f = mxEvent.getClientY(b), - e = mxUtils.convertPoint(d.container, e, f); - return d.isSplitEnabled() && d.isSplitTarget(c, [a], b) ? d.splitEdge(c, [a], null, e.x, e.y) : this.editor.addVertex(c, a, e.x, e.y) - } - return null -}; -mxDefaultToolbar.prototype.connect = function(a, b, c) { - b = this.editor.graph; - var d = b.getModel(); - if (null != c && b.isCellConnectable(a) && b.isEdgeValid(null, c, a)) { - var e = null; - d.beginUpdate(); - try { - var f = d.getGeometry(c), - g = d.getGeometry(a).clone(); - g.x = f.x + (f.width - g.width) / 2; - g.y = f.y + (f.height - g.height) / 2; - var h = this.spacing * b.gridSize, - k = 20 * d.getDirectedEdgeCount(c, !0); - this.editor.horizontalFlow ? g.x += (g.width + f.width) / 2 + h + k : g.y += (g.height + f.height) / 2 + h + k; - a.setGeometry(g); - var l = d.getParent(c); - b.addCell(a, l); - b.constrainChild(a); - e = this.editor.createEdge(c, a); - if (null == d.getGeometry(e)) { - var m = new mxGeometry; - m.relative = !0; - d.setGeometry(e, m) - } - b.addEdge(e, l, c, a) - } finally { - d.endUpdate() - } - b.setSelectionCells([a, e]); - b.scrollCellToVisible(a) - } -}; -mxDefaultToolbar.prototype.installDropHandler = function(a, b) { - var c = document.createElement("img"); - c.setAttribute("src", a.getAttribute("src")); - var d = mxUtils.bind(this, function(e) { - c.style.width = 2 * a.offsetWidth + "px"; - c.style.height = 2 * a.offsetHeight + "px"; - mxUtils.makeDraggable(a, this.editor.graph, b, c); - mxEvent.removeListener(c, "load", d) - }); - mxClient.IS_IE ? d() : mxEvent.addListener(c, "load", d) -}; -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) -}; - -function mxEditor(a) { - this.actions = []; - this.addActions(); - if (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(a); - this.graph.swimlaneIndicatorColorAttribute = this.cycleAttributeName; - !mxClient.IS_LOCAL && null != this.urlInit && (this.session = this.createSession()); - if (null != this.onInit) this.onInit(); - mxClient.IS_IE && - mxEvent.addListener(window, "unload", mxUtils.bind(this, function() { - this.destroy() - })) - } -} -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 = "\x26#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(a) { - this.modified = a -}; -mxEditor.prototype.addActions = function() { - this.addAction("save", function(a) { - a.save() - }); - this.addAction("print", function(a) { - (new mxPrintPreview(a.graph, 1)).open() - }); - this.addAction("show", function(a) { - mxUtils.show(a.graph, null, 10, 10) - }); - this.addAction("exportImage", function(a) { - var b = a.getUrlImage(); - if (null == b || mxClient.IS_LOCAL) a.execute("show"); - else { - var c = mxUtils.getViewXml(a.graph, 1), - c = mxUtils.getXml(c, "\n"); - mxUtils.submit(b, a.postParameterName + "\x3d" + encodeURIComponent(c), document, "_blank") - } - }); - this.addAction("refresh", - function(a) { - a.graph.refresh() - }); - this.addAction("cut", function(a) { - a.graph.isEnabled() && mxClipboard.cut(a.graph) - }); - this.addAction("copy", function(a) { - a.graph.isEnabled() && mxClipboard.copy(a.graph) - }); - this.addAction("paste", function(a) { - a.graph.isEnabled() && mxClipboard.paste(a.graph) - }); - this.addAction("delete", function(a) { - a.graph.isEnabled() && a.graph.removeCells() - }); - this.addAction("group", function(a) { - a.graph.isEnabled() && a.graph.setSelectionCell(a.groupCells()) - }); - this.addAction("ungroup", function(a) { - a.graph.isEnabled() && - a.graph.setSelectionCells(a.graph.ungroupCells()) - }); - this.addAction("removeFromParent", function(a) { - a.graph.isEnabled() && a.graph.removeCellsFromParent() - }); - this.addAction("undo", function(a) { - a.graph.isEnabled() && a.undo() - }); - this.addAction("redo", function(a) { - a.graph.isEnabled() && a.redo() - }); - this.addAction("zoomIn", function(a) { - a.graph.zoomIn() - }); - this.addAction("zoomOut", function(a) { - a.graph.zoomOut() - }); - this.addAction("actualSize", function(a) { - a.graph.zoomActual() - }); - this.addAction("fit", function(a) { - a.graph.fit() - }); - this.addAction("showProperties", function(a, b) { - a.showProperties(b) - }); - this.addAction("selectAll", function(a) { - a.graph.isEnabled() && a.graph.selectAll() - }); - this.addAction("selectNone", function(a) { - a.graph.isEnabled() && a.graph.clearSelection() - }); - this.addAction("selectVertices", function(a) { - a.graph.isEnabled() && a.graph.selectVertices() - }); - this.addAction("selectEdges", function(a) { - a.graph.isEnabled() && a.graph.selectEdges() - }); - this.addAction("edit", function(a, b) { - a.graph.isEnabled() && a.graph.isCellEditable(b) && a.graph.startEditingAtCell(b) - }); - this.addAction("toBack", function(a, b) { - a.graph.isEnabled() && a.graph.orderCells(!0) - }); - this.addAction("toFront", function(a, b) { - a.graph.isEnabled() && a.graph.orderCells(!1) - }); - this.addAction("enterGroup", function(a, b) { - a.graph.enterGroup(b) - }); - this.addAction("exitGroup", function(a) { - a.graph.exitGroup() - }); - this.addAction("home", function(a) { - a.graph.home() - }); - this.addAction("selectPrevious", function(a) { - a.graph.isEnabled() && a.graph.selectPreviousCell() - }); - this.addAction("selectNext", function(a) { - a.graph.isEnabled() && - a.graph.selectNextCell() - }); - this.addAction("selectParent", function(a) { - a.graph.isEnabled() && a.graph.selectParentCell() - }); - this.addAction("selectChild", function(a) { - a.graph.isEnabled() && a.graph.selectChildCell() - }); - this.addAction("collapse", function(a) { - a.graph.isEnabled() && a.graph.foldCells(!0) - }); - this.addAction("collapseAll", function(a) { - if (a.graph.isEnabled()) { - var b = a.graph.getChildVertices(); - a.graph.foldCells(!0, !1, b) - } - }); - this.addAction("expand", function(a) { - a.graph.isEnabled() && a.graph.foldCells(!1) - }); - this.addAction("expandAll", function(a) { - if (a.graph.isEnabled()) { - var b = a.graph.getChildVertices(); - a.graph.foldCells(!1, !1, b) - } - }); - this.addAction("bold", function(a) { - a.graph.isEnabled() && a.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE, mxConstants.FONT_BOLD) - }); - this.addAction("italic", function(a) { - a.graph.isEnabled() && a.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE, mxConstants.FONT_ITALIC) - }); - this.addAction("underline", function(a) { - a.graph.isEnabled() && a.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE, - mxConstants.FONT_UNDERLINE) - }); - this.addAction("shadow", function(a) { - a.graph.isEnabled() && a.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE, mxConstants.FONT_SHADOW) - }); - this.addAction("alignCellsLeft", function(a) { - a.graph.isEnabled() && a.graph.alignCells(mxConstants.ALIGN_LEFT) - }); - this.addAction("alignCellsCenter", function(a) { - a.graph.isEnabled() && a.graph.alignCells(mxConstants.ALIGN_CENTER) - }); - this.addAction("alignCellsRight", function(a) { - a.graph.isEnabled() && a.graph.alignCells(mxConstants.ALIGN_RIGHT) - }); - this.addAction("alignCellsTop", function(a) { - a.graph.isEnabled() && a.graph.alignCells(mxConstants.ALIGN_TOP) - }); - this.addAction("alignCellsMiddle", function(a) { - a.graph.isEnabled() && a.graph.alignCells(mxConstants.ALIGN_MIDDLE) - }); - this.addAction("alignCellsBottom", function(a) { - a.graph.isEnabled() && a.graph.alignCells(mxConstants.ALIGN_BOTTOM) - }); - this.addAction("alignFontLeft", function(a) { - a.graph.setCellStyles(mxConstants.STYLE_ALIGN, mxConstants.ALIGN_LEFT) - }); - this.addAction("alignFontCenter", function(a) { - a.graph.isEnabled() && - a.graph.setCellStyles(mxConstants.STYLE_ALIGN, mxConstants.ALIGN_CENTER) - }); - this.addAction("alignFontRight", function(a) { - a.graph.isEnabled() && a.graph.setCellStyles(mxConstants.STYLE_ALIGN, mxConstants.ALIGN_RIGHT) - }); - this.addAction("alignFontTop", function(a) { - a.graph.isEnabled() && a.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN, mxConstants.ALIGN_TOP) - }); - this.addAction("alignFontMiddle", function(a) { - a.graph.isEnabled() && a.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN, mxConstants.ALIGN_MIDDLE) - }); - this.addAction("alignFontBottom", function(a) { - a.graph.isEnabled() && a.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN, mxConstants.ALIGN_BOTTOM) - }); - this.addAction("zoom", function(a) { - var b = 100 * a.graph.getView().scale, - b = parseFloat(mxUtils.prompt(mxResources.get(a.askZoomResource) || a.askZoomResource, b)) / 100; - isNaN(b) || a.graph.getView().setScale(b) - }); - this.addAction("toggleTasks", function(a) { - null != a.tasks ? a.tasks.setVisible(!a.tasks.isVisible()) : a.showTasks() - }); - this.addAction("toggleHelp", function(a) { - null != - a.help ? a.help.setVisible(!a.help.isVisible()) : a.showHelp() - }); - this.addAction("toggleOutline", function(a) { - null == a.outline ? a.showOutline() : a.outline.setVisible(!a.outline.isVisible()) - }); - this.addAction("toggleConsole", function(a) { - mxLog.setVisible(!mxLog.isVisible()) - }) -}; -mxEditor.prototype.createSession = function() { - var a = mxUtils.bind(this, function(a) { - this.fireEvent(new mxEventObject(mxEvent.SESSION, "session", a)) - }); - return this.connect(this.urlInit, this.urlPoll, this.urlNotify, a) -}; -mxEditor.prototype.configure = function(a) { - null != a && ((new mxCodec(a.ownerDocument)).decode(a, this), this.resetHistory()) -}; -mxEditor.prototype.resetFirstTime = function() { - document.cookie = "mxgraph\x3dseen; expires\x3dFri, 27 Jul 2001 02:47:11 UTC; path\x3d/" -}; -mxEditor.prototype.resetHistory = function() { - this.lastSnapshot = (new Date).getTime(); - this.undoManager.clear(); - this.ignoredChanges = 0; - this.setModified(!1) -}; -mxEditor.prototype.addAction = function(a, b) { - this.actions[a] = b -}; -mxEditor.prototype.execute = function(a, b, c) { - var d = this.actions[a]; - if (null != d) try { - var e = arguments; - e[0] = this; - d.apply(this, e) - } catch (f) { - throw mxUtils.error("Cannot execute " + a + ": " + f.message, 280, !0), f; - } else mxUtils.error("Cannot find action " + a, 280, !0) -}; -mxEditor.prototype.addTemplate = function(a, b) { - this.templates[a] = b -}; -mxEditor.prototype.getTemplate = function(a) { - return this.templates[a] -}; -mxEditor.prototype.createGraph = function() { - var a = new mxGraph(null, null, this.graphRenderHint); - a.setTooltips(!0); - a.setPanning(!0); - this.installDblClickHandler(a); - this.installUndoHandler(a); - this.installDrillHandler(a); - this.installChangeHandler(a); - this.installInsertHandler(a); - a.panningHandler.factoryMethod = mxUtils.bind(this, function(a, c, d) { - return this.createPopupMenu(a, c, d) - }); - a.connectionHandler.factoryMethod = mxUtils.bind(this, function(a, c) { - return this.createEdge(a, c) - }); - this.createSwimlaneManager(a); - this.createLayoutManager(a); - return a -}; -mxEditor.prototype.createSwimlaneManager = function(a) { - a = new mxSwimlaneManager(a, !1); - a.isHorizontal = mxUtils.bind(this, function() { - return this.horizontalFlow - }); - a.isEnabled = mxUtils.bind(this, function() { - return this.maintainSwimlanes - }); - return a -}; -mxEditor.prototype.createLayoutManager = function(a) { - var b = new mxLayoutManager(a), - c = this; - b.getLayout = function(b) { - var e = null, - f = c.graph.getModel(); - if (null != f.getParent(b)) - if (c.layoutSwimlanes && a.isSwimlane(b)) null == c.swimlaneLayout && (c.swimlaneLayout = c.createSwimlaneLayout()), e = c.swimlaneLayout; - else if (c.layoutDiagram && (a.isValidRoot(b) || null == f.getParent(f.getParent(b)))) null == c.diagramLayout && (c.diagramLayout = c.createDiagramLayout()), e = c.diagramLayout; - return e - }; - return b -}; -mxEditor.prototype.setGraphContainer = function(a) { - null == this.graph.container && (this.graph.init(a), this.rubberband = new mxRubberband(this.graph), this.disableContextMenu && mxEvent.disableContextMenu(a), mxClient.IS_QUIRKS && new mxDivResizer( - a)) -}; -mxEditor.prototype.installDblClickHandler = function(a) { - a.addListener(mxEvent.DOUBLE_CLICK, mxUtils.bind(this, function(b, c) { - var d = c.getProperty("cell"); - null != d && (a.isEnabled() && null != this.dblClickAction) && (this.execute(this.dblClickAction, d), c.consume()) - })) -}; -mxEditor.prototype.installUndoHandler = function(a) { - var b = mxUtils.bind(this, function(a, b) { - var e = b.getProperty("edit"); - this.undoManager.undoableEditHappened(e) - }); - a.getModel().addListener(mxEvent.UNDO, b); - a.getView().addListener(mxEvent.UNDO, b); - b = function(b, d) { - var e = d.getProperty("edit").changes; - a.setSelectionCells(a.getSelectionCellsForChanges(e)) - }; - this.undoManager.addListener(mxEvent.UNDO, b); - this.undoManager.addListener(mxEvent.REDO, b) -}; -mxEditor.prototype.installDrillHandler = function(a) { - var b = mxUtils.bind(this, function(a) { - this.fireEvent(new mxEventObject(mxEvent.ROOT)) - }); - a.getView().addListener(mxEvent.DOWN, b); - a.getView().addListener(mxEvent.UP, b) -}; -mxEditor.prototype.installChangeHandler = function(a) { - var b = mxUtils.bind(this, function(b, d) { - this.setModified(!0); - !0 == this.validating && a.validateGraph(); - for (var e = d.getProperty("edit").changes, f = 0; f < e.length; f++) { - var g = e[f]; - if (g instanceof mxRootChange || g instanceof mxValueChange && g.cell == this.graph.model.root || g instanceof mxCellAttributeChange && g.cell == this.graph.model.root) { - this.fireEvent(new mxEventObject(mxEvent.ROOT)); - break - } - } - }); - a.getModel().addListener(mxEvent.CHANGE, b) -}; -mxEditor.prototype.installInsertHandler = function(a) { - var b = this; - a.addMouseListener({ - mouseDown: function(a, d) { - if (null != b.insertFunction && !d.isPopupTrigger() && (b.forcedInserting || null == d.getState())) b.graph.clearSelection(), b.insertFunction(d.getEvent(), d.getCell()), this.isActive = ! - 0, d.consume() - }, - mouseMove: function(a, b) { - this.isActive && b.consume() - }, - mouseUp: function(a, b) { - this.isActive && (this.isActive = !1, b.consume()) - } - }) -}; -mxEditor.prototype.createDiagramLayout = function() { - var a = this.graph.gridSize, - b = new mxStackLayout(this.graph, !this.horizontalFlow, this.swimlaneSpacing, 2 * a, 2 * a); - b.isVertexIgnored = function(a) { - return !b.graph.isSwimlane(a) - }; - return b -}; -mxEditor.prototype.createSwimlaneLayout = function() { - return new mxCompactTreeLayout(this.graph, this.horizontalFlow) -}; -mxEditor.prototype.createToolbar = function() { - return new mxDefaultToolbar(null, this) -}; -mxEditor.prototype.setToolbarContainer = function(a) { - this.toolbar.init(a); - mxClient.IS_QUIRKS && new mxDivResizer(a) -}; -mxEditor.prototype.setStatusContainer = function(a) { - null == this.status && (this.status = a, this.addListener(mxEvent.SAVE, mxUtils.bind(this, function() { - var a = (new Date).toLocaleString(); - this.setStatus((mxResources.get(this.lastSavedResource) || this.lastSavedResource) + ": " + a) - })), this.addListener(mxEvent.OPEN, mxUtils.bind(this, function() { - this.setStatus((mxResources.get(this.currentFileResource) || this.currentFileResource) + ": " + this.filename) - })), mxClient.IS_QUIRKS && new mxDivResizer(a)) -}; -mxEditor.prototype.setStatus = function(a) { - null != this.status && null != a && (this.status.innerHTML = a) -}; -mxEditor.prototype.setTitleContainer = function(a) { - this.addListener(mxEvent.ROOT, mxUtils.bind(this, function(b) { - a.innerHTML = this.getTitle() - })); - mxClient.IS_QUIRKS && new mxDivResizer(a) -}; -mxEditor.prototype.treeLayout = function(a, b) { - null != a && (new mxCompactTreeLayout(this.graph, b)).execute(a) -}; -mxEditor.prototype.getTitle = function() { - for (var a = "", b = this.graph, c = b.getCurrentRoot(); null != c && null != b.getModel().getParent(b.getModel().getParent(c));) b.isValidRoot(c) && (a = " \x3e " + b.convertValueToString(c) + a), - c = b.getModel().getParent(c); - return this.getRootTitle() + a -}; -mxEditor.prototype.getRootTitle = function() { - var a = this.graph.getModel().getRoot(); - return this.graph.convertValueToString(a) -}; -mxEditor.prototype.undo = function() { - this.undoManager.undo() -}; -mxEditor.prototype.redo = function() { - this.undoManager.redo() -}; -mxEditor.prototype.groupCells = function() { - var a = null != this.groupBorderSize ? this.groupBorderSize : this.graph.gridSize; - return this.graph.groupCells(this.createGroup(), a) -}; -mxEditor.prototype.createGroup = function() { - return this.graph.getModel().cloneCell(this.defaultGroup) -}; -mxEditor.prototype.open = function(a) { - if (null != a) { - var b = mxUtils.load(a).getXml(); - this.readGraphModel(b.documentElement); - this.filename = a; - this.fireEvent(new mxEventObject(mxEvent.OPEN, "filename", a)) - } -}; -mxEditor.prototype.readGraphModel = function(a) { - (new mxCodec(a.ownerDocument)).decode(a, this.graph.getModel()); - this.resetHistory() -}; -mxEditor.prototype.save = function(a, b) { - a = a || this.getUrlPost(); - if (null != a && 0 < a.length) { - var c = this.writeGraphModel(b); - this.postDiagram(a, c); - this.setModified(!1) - } - this.fireEvent(new mxEventObject(mxEvent.SAVE, "url", a)) -}; -mxEditor.prototype.postDiagram = function(a, b) { - this.escapePostData && (b = encodeURIComponent(b)); - mxUtils.post(a, this.postParameterName + "\x3d" + b, mxUtils.bind(this, function(c) { - this.fireEvent(new mxEventObject(mxEvent.POST, "request", c, "url", a, "data", b)) - })) -}; -mxEditor.prototype.writeGraphModel = function(a) { - a = null != a ? a : this.linefeed; - var b = (new mxCodec).encode(this.graph.getModel()); - return mxUtils.getXml(b, a) -}; -mxEditor.prototype.getUrlPost = function() { - return this.urlPost -}; -mxEditor.prototype.getUrlImage = function() { - return this.urlImage -}; -mxEditor.prototype.connect = function(a, b, c, d) { - var e = null; - mxClient.IS_LOCAL || (e = new mxSession(this.graph.getModel(), a, b, c), e.addListener(mxEvent.RECEIVE, mxUtils.bind(this, function(a, b) { - null != b.getProperty("node").getAttribute("namespace") && this.resetHistory() - })), e.addListener(mxEvent.DISCONNECT, d), e.addListener(mxEvent.CONNECT, d), e.addListener(mxEvent.NOTIFY, d), e.addListener(mxEvent.GET, d), e.start()); - return e -}; -mxEditor.prototype.swapStyles = function(a, b) { - var c = this.graph.getStylesheet().styles[b]; - this.graph.getView().getStylesheet().putCellStyle(b, this.graph.getStylesheet().styles[a]); - this.graph.getStylesheet().putCellStyle(a, c); - this.graph.refresh() -}; -mxEditor.prototype.showProperties = function(a) { - a = a || this.graph.getSelectionCell(); - null == a && (a = this.graph.getCurrentRoot(), null == a && (a = this.graph.getModel().getRoot())); - if (null != a) { - this.graph.stopEditing(!0); - var b = mxUtils.getOffset(this.graph.container), - c = b.x + 10, - b = b.y; - if (null != this.properties && !this.movePropertiesDialog) c = this.properties.getX(), b = this.properties.getY(); - else { - var d = this.graph.getCellBounds(a); - null != d && (c += d.x + Math.min(200, d.width), b += d.y) - } - this.hideProperties(); - a = this.createProperties(a); - null != a && (this.properties = new mxWindow(mxResources.get(this.propertiesResource) || this.propertiesResource, a, c, b, this.propertiesWidth, this.propertiesHeight, !1), this.properties.setVisible(! - 0)) - } -}; -mxEditor.prototype.isPropertiesVisible = function() { - return null != this.properties -}; -mxEditor.prototype.createProperties = function(a) { - var b = this.graph.getModel(), - c = b.getValue(a); - if (mxUtils.isNode(c)) { - var d = new mxForm("properties"); - d.addText("ID", a.getId()).setAttribute("readonly", "true"); - var e = null, - f = null, - g = null, - h = null, - k = null; - b.isVertex(a) && (e = b.getGeometry(a), null != e && (f = d.addText("top", e.y), g = d.addText("left", e.x), h = d.addText("width", e.width), k = d.addText("height", e.height))); - for (var l = b.getStyle(a), m = d.addText("Style", l || ""), n = c.attributes, p = [], c = 0; c < n.length; c++) p[c] = d.addTextarea(n[c].nodeName, - n[c].nodeValue, "label" == n[c].nodeName ? 4 : 2); - c = mxUtils.bind(this, function() { - this.hideProperties(); - b.beginUpdate(); - try { - null != e && (e = e.clone(), e.x = parseFloat(g.value), e.y = parseFloat(f.value), e.width = parseFloat(h.value), e.height = parseFloat(k.value), b.setGeometry(a, e)); - 0 < m.value.length ? b.setStyle(a, m.value) : b.setStyle(a, null); - for (var c = 0; c < n.length; c++) { - var d = new mxCellAttributeChange(a, n[c].nodeName, p[c].value); - b.execute(d) - } - this.graph.isAutoSizeCell(a) && this.graph.updateCellSize(a) - } finally { - b.endUpdate() - } - }); - l = mxUtils.bind(this, function() { - this.hideProperties() - }); - d.addButtons(c, l); - return d.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 a = document.createElement("div"); - a.style.padding = "4px"; - a.style.paddingLeft = "20px"; - var b = document.body.clientWidth, - b = new mxWindow(mxResources.get(this.tasksResource) || this.tasksResource, a, b - 220, this.tasksTop, 200); - b.setClosable(!0); - b.destroyOnClose = !1; - var c = mxUtils.bind(this, function(b) { - mxEvent.release(a); - a.innerHTML = ""; - this.createTasks(a) - }); - this.graph.getModel().addListener(mxEvent.CHANGE, c); - this.graph.getSelectionModel().addListener(mxEvent.CHANGE, - c); - this.graph.addListener(mxEvent.ROOT, c); - null != this.tasksWindowImage && b.setImage(this.tasksWindowImage); - this.tasks = b; - this.createTasks(a) - } - this.tasks.setVisible(!0) -}; -mxEditor.prototype.refreshTasks = function(a) { - null != this.tasks && (a = this.tasks.content, mxEvent.release(a), a.innerHTML = "", this.createTasks(a)) -}; -mxEditor.prototype.createTasks = function(a) {}; -mxEditor.prototype.showHelp = function(a) { - if (null == this.help) { - var b = document.createElement("iframe"); - b.setAttribute("src", mxResources.get("urlHelp") || this.urlHelp); - b.setAttribute("height", "100%"); - b.setAttribute("width", "100%"); - b.setAttribute("frameBorder", "0"); - b.style.backgroundColor = "white"; - a = document.body.clientWidth; - var c = document.body.clientHeight || document.documentElement.clientHeight, - d = new mxWindow(mxResources.get(this.helpResource) || this.helpResource, b, (a - this.helpWidth) / 2, (c - this.helpHeight) / - 3, this.helpWidth, this.helpHeight); - d.setMaximizable(!0); - d.setClosable(!0); - d.destroyOnClose = !1; - d.setResizable(!0); - null != this.helpWindowImage && d.setImage(this.helpWindowImage); - mxClient.IS_NS && (a = function(a) { - b.setAttribute("height", d.div.offsetHeight - 26 + "px") - }, d.addListener(mxEvent.RESIZE_END, a), d.addListener(mxEvent.MAXIMIZE, a), d.addListener(mxEvent.NORMALIZE, a), d.addListener(mxEvent.SHOW, a)); - this.help = d - } - this.help.setVisible(!0) -}; -mxEditor.prototype.showOutline = function() { - if (null == this.outline) { - var a = document.createElement("div"); - a.style.overflow = "hidden"; - a.style.width = "100%"; - a.style.height = "100%"; - a.style.background = "white"; - a.style.cursor = "move"; - var b = new mxWindow(mxResources.get(this.outlineResource) || this.outlineResource, a, 600, 480, 200, 200, !1), - c = new mxOutline(this.graph, a); - b.setClosable(!0); - b.setResizable(!0); - b.destroyOnClose = !1; - b.addListener(mxEvent.RESIZE_END, function() { - c.update() - }); - this.outline = b; - this.outline.outline = c - } - this.outline.setVisible(!0); - this.outline.outline.update(!0) -}; -mxEditor.prototype.setMode = function(a) { - "select" == a ? (this.graph.panningHandler.useLeftButtonForPanning = !1, this.graph.setConnectable(!1)) : "connect" == a ? (this.graph.panningHandler.useLeftButtonForPanning = !1, this.graph.setConnectable(! - 0)) : "pan" == a && (this.graph.panningHandler.useLeftButtonForPanning = !0, this.graph.setConnectable(!1)) -}; -mxEditor.prototype.createPopupMenu = function(a, b, c) { - this.popupHandler.createMenu(this, a, b, c) -}; -mxEditor.prototype.createEdge = function(a, b) { - var c = null; - if (null != this.defaultEdge) c = this.graph.getModel().cloneCell(this.defaultEdge); - else { - c = new mxCell(""); - c.setEdge(!0); - var d = new mxGeometry; - d.relative = !0; - c.setGeometry(d) - } - d = this.getEdgeStyle(); - null != d && c.setStyle(d); - return c -}; -mxEditor.prototype.getEdgeStyle = function() { - return this.defaultEdgeStyle -}; -mxEditor.prototype.consumeCycleAttribute = function(a) { - return null != this.cycleAttributeValues && 0 < this.cycleAttributeValues.length && this.graph.isSwimlane(a) ? this.cycleAttributeValues[this.cycleAttributeIndex++ % this.cycleAttributeValues.length] : - null -}; -mxEditor.prototype.cycleAttribute = function(a) { - if (null != this.cycleAttributeName) { - var b = this.consumeCycleAttribute(a); - null != b && a.setStyle(a.getStyle() + ";" + this.cycleAttributeName + "\x3d" + b) - } -}; -mxEditor.prototype.addVertex = function(a, b, c, d) { - for (var e = this.graph.getModel(); null != a && !this.graph.isValidDropTarget(a);) a = e.getParent(a); - a = null != a ? a : this.graph.getSwimlaneAt(c, d); - var f = this.graph.getView().scale, - g = e.getGeometry(b), - h = e.getGeometry(a); - if (this.graph.isSwimlane(b) && !this.graph.swimlaneNesting) a = null; - else { - if (null == a && this.swimlaneRequired) return null; - if (null != a && null != h) { - var k = this.graph.getView().getState(a); - if (null != k) { - if (c -= k.origin.x * f, d -= k.origin.y * f, this.graph.isConstrainedMoving) { - var h = - g.width, - l = g.height, - m = k.x + k.width; - c + h > m && (c -= c + h - m); - m = k.y + k.height; - d + l > m && (d -= d + l - m) - } - } else null != h && (c -= h.x * f, d -= h.y * f) - } - } - g = g.clone(); - g.x = this.graph.snap(c / f - this.graph.getView().translate.x - this.graph.gridSize / 2); - g.y = this.graph.snap(d / f - this.graph.getView().translate.y - this.graph.gridSize / 2); - b.setGeometry(g); - null == a && (a = this.graph.getDefaultParent()); - this.cycleAttribute(b); - this.fireEvent(new mxEventObject(mxEvent.BEFORE_ADD_VERTEX, "vertex", b, "parent", a)); - e.beginUpdate(); - try { - b = this.graph.addCell(b, - a), null != b && (this.graph.constrainChild(b), this.fireEvent(new mxEventObject(mxEvent.ADD_VERTEX, "vertex", b))) - } finally { - e.endUpdate() - } - null != b && (this.graph.setSelectionCell(b), this.graph.scrollCellToVisible(b), this.fireEvent(new mxEventObject(mxEvent.AFTER_ADD_VERTEX, "vertex", b))); - return b -}; -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(a) { - if (null != a) { - var b = a.getName(); - mxCodecRegistry.codecs[b] = a; - var c = mxUtils.getFunctionName(a.template.constructor); - c != b && mxCodecRegistry.addAlias(c, b) - } - return a - }, - addAlias: function(a, b) { - mxCodecRegistry.aliases[a] = b - }, - getCodec: function(a) { - var b = null; - if (null != a) { - var b = mxUtils.getFunctionName(a), - c = mxCodecRegistry.aliases[b]; - null != c && (b = c); - b = mxCodecRegistry.codecs[b]; - if (null == b) try { - b = new mxObjectCodec(new a), mxCodecRegistry.register(b) - } catch (d) {} - } - return b - } -}; - -function mxCodec(a) { - this.document = a || mxUtils.createXmlDocument(); - this.objects = [] -} -mxCodec.prototype.document = null; -mxCodec.prototype.objects = null; -mxCodec.prototype.encodeDefaults = !1; -mxCodec.prototype.putObject = function(a, b) { - return this.objects[a] = b -}; -mxCodec.prototype.getObject = function(a) { - var b = null; - null != a && (b = this.objects[a], null == b && (b = this.lookup(a), null == b && (a = this.getElementById(a), null != a && (b = this.decode(a))))); - return b -}; -mxCodec.prototype.lookup = function(a) { - return null -}; -mxCodec.prototype.getElementById = function(a, b) { - return mxUtils.findNodeByAttribute(this.document.documentElement, null != b ? b : "id", a) -}; -mxCodec.prototype.getId = function(a) { - var b = null; - null != a && (b = this.reference(a), null == b && a instanceof mxCell && (b = a.getId(), null == b && (b = mxCellPath.create(a), 0 == b.length && (b = "root")))); - return b -}; -mxCodec.prototype.reference = function(a) { - return null -}; -mxCodec.prototype.encode = function(a) { - var b = null; - if (null != a && null != a.constructor) { - var c = mxCodecRegistry.getCodec(a.constructor); - null != c ? b = c.encode(this, a) : mxUtils.isNode(a) ? b = mxClient.IS_IE ? a.cloneNode(!0) : this.document.importNode(a, !0) : mxLog.warn("mxCodec.encode: No codec for " + mxUtils.getFunctionName( - a.constructor)) - } - return b -}; -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 (g) { - mxLog.debug("Cannot decode " + a.nodeName + ": " + g.message) - } - } - return c -}; -mxCodec.prototype.encodeCell = function(a, b, c) { - b.appendChild(this.encode(a)); - if (null == c || c) { - c = a.getChildCount(); - for (var d = 0; d < c; d++) this.encodeCell(a.getChildAt(d), b) - } -}; -mxCodec.prototype.isCellCodec = function(a) { - return null != a && "function" == typeof a.isCellCodec ? a.isCellCodec() : !1 -}; -mxCodec.prototype.decodeCell = function(a, b) { - b = null != b ? b : !0; - var c = null; - if (null != a && a.nodeType == mxConstants.NODETYPE_ELEMENT) { - c = mxCodecRegistry.getCodec(a.nodeName); - if (!this.isCellCodec(c)) - for (var d = a.firstChild; null != d && !this.isCellCodec(c);) c = mxCodecRegistry.getCodec(d.nodeName), d = d.nextSibling; - this.isCellCodec(c) || (c = mxCodecRegistry.getCodec(mxCell)); - c = c.decode(this, a); - b && this.insertIntoGraph(c) - } - return c -}; -mxCodec.prototype.insertIntoGraph = function(a) { - var b = a.parent, - c = a.getTerminal(!0), - d = a.getTerminal(!1); - a.setTerminal(null, !1); - a.setTerminal(null, !0); - a.parent = null; - null != b && b.insert(a); - null != c && c.insertEdge(a, !0); - null != d && d.insertEdge(a, !1) -}; -mxCodec.prototype.setAttribute = function(a, b, c) { - null != b && null != c && a.setAttribute(b, c) -}; - -function mxObjectCodec(a, b, c, d) { - this.template = a; - this.exclude = null != b ? b : []; - this.idrefs = null != c ? c : []; - this.mapping = null != d ? d : []; - this.reverse = {}; - for (var e in this.mapping) this.reverse[this.mapping[e]] = e -} -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(a) { - if (null != a) { - var b = this.reverse[a]; - null != b && (a = b) - } - return a -}; -mxObjectCodec.prototype.getAttributeName = function(a) { - if (null != a) { - var b = this.mapping[a]; - null != b && (a = b) - } - return a -}; -mxObjectCodec.prototype.isExcluded = function(a, b, c, d) { - return b == mxObjectIdentity.FIELD_NAME || 0 <= mxUtils.indexOf(this.exclude, b) -}; -mxObjectCodec.prototype.isReference = function(a, b, c, d) { - return 0 <= mxUtils.indexOf(this.idrefs, b) -}; -mxObjectCodec.prototype.encode = function(a, b) { - var c = a.document.createElement(this.getName()); - b = this.beforeEncode(a, b, c); - this.encodeObject(a, b, c); - return this.afterEncode(a, b, c) -}; -mxObjectCodec.prototype.encodeObject = function(a, b, c) { - a.setAttribute(c, "id", a.getId(b)); - for (var d in b) { - var e = d, - f = b[e]; - null != f && !this.isExcluded(b, e, f, !0) && (mxUtils.isNumeric(e) && (e = null), this.encodeValue(a, b, e, f, c)) - } -}; -mxObjectCodec.prototype.encodeValue = function(a, b, c, d, e) { - if (null != d) { - if (this.isReference(b, c, d, !0)) { - var f = a.getId(d); - if (null == f) { - mxLog.warn("mxObjectCodec.encode: No ID for " + this.getName() + "." + c + "\x3d" + d); - return - } - d = f - } - f = this.template[c]; - if (null == c || a.encodeDefaults || f != d) c = this.getAttributeName(c), this.writeAttribute(a, b, c, d, e) - } -}; -mxObjectCodec.prototype.writeAttribute = function(a, b, c, d, e) { - "object" != typeof d ? this.writePrimitiveAttribute(a, b, c, d, e) : this.writeComplexAttribute(a, b, c, d, e) -}; -mxObjectCodec.prototype.writePrimitiveAttribute = function(a, b, c, d, e) { - d = this.convertValueToXml(d); - null == c ? (b = a.document.createElement("add"), "function" == typeof d ? b.appendChild(a.document.createTextNode(d)) : a.setAttribute(b, "value", d), e.appendChild(b)) : "function" != typeof d && - a.setAttribute(e, c, d) -}; -mxObjectCodec.prototype.writeComplexAttribute = function(a, b, c, d, e) { - a = a.encode(d); - null != a ? (null != c && a.setAttribute("as", c), e.appendChild(a)) : mxLog.warn("mxObjectCodec.encode: No node for " + this.getName() + "." + c + ": " + d) -}; -mxObjectCodec.prototype.convertValueToXml = function(a) { - if ("undefined" == typeof a.length && (!0 == a || !1 == a)) a = !0 == a ? "1" : "0"; - return a -}; -mxObjectCodec.prototype.convertValueFromXml = function(a) { - mxUtils.isNumeric(a) && (a = parseFloat(a)); - // - // Marco (marco.murdocca@xenialab.it) + Andrea Bianco (andrea.bianco@xcally.com) - // 2016-02-24 - // - // mxUtils.isNumeric(a) && (a = ((Number(a) === a) && (a % 1 !== 0)) ? parseFloat(a) : a); - return a -}; -mxObjectCodec.prototype.beforeEncode = function(a, b, c) { - return b -}; -mxObjectCodec.prototype.afterEncode = function(a, b, c) { - return c -}; -mxObjectCodec.prototype.decode = function(a, b, c) { - var d = b.getAttribute("id"), - e = a.objects[d]; - null == e && (e = c || this.cloneTemplate(), null != d && a.putObject(d, e)); - b = this.beforeDecode(a, b, e); - this.decodeNode(a, b, e); - return this.afterDecode(a, b, e) -}; -mxObjectCodec.prototype.decodeNode = function(a, b, c) { - null != b && (this.decodeAttributes(a, b, c), this.decodeChildren(a, b, c)) -}; -mxObjectCodec.prototype.decodeAttributes = function(a, b, c) { - b = b.attributes; - if (null != b) - for (var d = 0; d < b.length; d++) this.decodeAttribute(a, b[d], c) -}; -mxObjectCodec.prototype.decodeAttribute = function(a, b, c) { - var d = b.nodeName; - if ("as" != d && "id" != d) { - b = this.convertValueFromXml(b.nodeValue); - var e = this.getFieldName(d); - if (this.isReference(c, e, b, !1)) { - a = a.getObject(b); - if (null == a) { - mxLog.warn("mxObjectCodec.decode: No object for " + this.getName() + "." + d + "\x3d" + b); - return - } - b = a - } - this.isExcluded(c, d, b, !1) || (c[d] = b) - } -}; -mxObjectCodec.prototype.decodeChildren = function(a, b, c) { - for (b = b.firstChild; null != b;) { - var d = b.nextSibling; - b.nodeType == mxConstants.NODETYPE_ELEMENT && !this.processInclude(a, b, c) && this.decodeChild(a, b, c); - b = d - } -}; -mxObjectCodec.prototype.decodeChild = function(a, b, c) { - var d = this.getFieldName(b.getAttribute("as")); - if (null == d || !this.isExcluded(c, d, b, !1)) { - var e = this.getFieldTemplate(c, d, b), - f = null; - "add" == b.nodeName ? (f = b.getAttribute("value"), null == f && (f = mxUtils.eval(mxUtils.getTextContent(b)))) : f = a.decode(b, e); - this.addObjectValue(c, d, f, e) - } -}; -mxObjectCodec.prototype.getFieldTemplate = function(a, b, c) { - a = a[b]; - a instanceof Array && 0 < a.length && (a = null); - return a -}; -mxObjectCodec.prototype.addObjectValue = function(a, b, c, d) { - null != c && c != d && (null != b && 0 < b.length ? a[b] = c : a.push(c)) -}; -mxObjectCodec.prototype.processInclude = function(a, b, c) { - if ("include" == b.nodeName) { - b = b.getAttribute("name"); - if (null != b) try { - var d = mxUtils.load(b).getDocumentElement(); - null != d && a.decode(d, c) - } catch (e) {} - return !0 - } - return !1 -}; -mxObjectCodec.prototype.beforeDecode = function(a, b, c) { - return b -}; -mxObjectCodec.prototype.afterDecode = function(a, b, c) { - return c -}; -mxCodecRegistry.register(function() { - var a = new mxObjectCodec(new mxCell, ["children", "edges", "overlays", "mxTransient"], ["parent", "source", "target"]); - a.isCellCodec = function() { - return !0 - }; - a.isExcluded = function(a, c, d, e) { - return mxObjectCodec.prototype.isExcluded.apply(this, arguments) || e && "value" == c && d.nodeType == mxConstants.NODETYPE_ELEMENT - }; - a.afterEncode = function(a, c, d) { - if (null != c.value && c.value.nodeType == mxConstants.NODETYPE_ELEMENT) { - var e = d; - d = mxClient.IS_IE ? c.value.cloneNode(!0) : a.document.importNode(c.value, !0); - d.appendChild(e); - a = e.getAttribute("id"); - d.setAttribute("id", a); - e.removeAttribute("id") - } - return d - }; - a.beforeDecode = function(a, c, d) { - var e = c, - f = this.getName(); - c.nodeName != f ? (e = c.getElementsByTagName(f)[0], null != e && e.parentNode == c ? (mxUtils.removeWhitespace(e, !0), mxUtils.removeWhitespace(e, !1), e.parentNode.removeChild(e)) : e = - null, d.value = c.cloneNode(!0), c = d.value.getAttribute("id"), null != c && (d.setId(c), d.value.removeAttribute("id"))) : d.setId(c.getAttribute("id")); - if (null != e) - for (c = 0; c < this.idrefs.length; c++) { - var f = - this.idrefs[c], - g = e.getAttribute(f); - if (null != g) { - e.removeAttribute(f); - var h = a.objects[g] || a.lookup(g); - null == h && (g = a.getElementById(g), null != g && (h = (mxCodecRegistry.codecs[g.nodeName] || this).decode(a, g))); - d[f] = h - } - } - return e - }; - return a -}()); -mxCodecRegistry.register(function() { - var a = new mxObjectCodec(new mxGraphModel); - a.encodeObject = function(a, c, d) { - var e = a.document.createElement("root"); - a.encodeCell(c.getRoot(), e); - d.appendChild(e) - }; - a.decodeChild = function(a, c, d) { - "root" == c.nodeName ? this.decodeRoot(a, c, d) : mxObjectCodec.prototype.decodeChild.apply(this, arguments) - }; - a.decodeRoot = function(a, c, d) { - var e = null; - for (c = c.firstChild; null != c;) { - var f = a.decodeCell(c); - null != f && null == f.getParent() && (e = f); - c = c.nextSibling - } - null != e && d.setRoot(e) - }; - return a -}()); -mxCodecRegistry.register(function() { - var a = new mxObjectCodec(new mxRootChange, ["model", "previous", "root"]); - a.afterEncode = function(a, c, d) { - a.encodeCell(c.root, d); - return d - }; - a.beforeDecode = function(a, c, d) { - if (null != c.firstChild && c.firstChild.nodeType == mxConstants.NODETYPE_ELEMENT) { - c = c.cloneNode(!0); - var e = c.firstChild; - d.root = a.decodeCell(e, !1); - d = e.nextSibling; - e.parentNode.removeChild(e); - for (e = d; null != e;) d = e.nextSibling, a.decodeCell(e), e.parentNode.removeChild(e), e = d - } - return c - }; - a.afterDecode = function(a, c, - d) { - d.previous = d.root; - return d - }; - return a -}()); -mxCodecRegistry.register(function() { - var a = new mxObjectCodec(new mxChildChange, ["model", "child", "previousIndex"], ["parent", "previous"]); - a.isReference = function(a, c, d, e) { - return "child" == c && (null != a.previous || !e) ? !0 : 0 <= mxUtils.indexOf(this.idrefs, c) - }; - a.afterEncode = function(a, c, d) { - this.isReference(c, "child", c.child, !0) ? d.setAttribute("child", a.getId(c.child)) : a.encodeCell(c.child, d); - return d - }; - a.beforeDecode = function(a, c, d) { - if (null != c.firstChild && c.firstChild.nodeType == mxConstants.NODETYPE_ELEMENT) { - c = c.cloneNode(!0); - var e = c.firstChild; - d.child = a.decodeCell(e, !1); - d = e.nextSibling; - e.parentNode.removeChild(e); - for (e = d; null != e;) { - d = e.nextSibling; - if (e.nodeType == mxConstants.NODETYPE_ELEMENT) { - var f = e.getAttribute("id"); - null == a.lookup(f) && a.decodeCell(e) - } - e.parentNode.removeChild(e); - e = d - } - } else e = c.getAttribute("child"), d.child = a.getObject(e); - return c - }; - a.afterDecode = function(a, c, d) { - d.child.parent = d.previous; - d.previous = d.parent; - d.previousIndex = d.index; - return d - }; - return a -}()); -mxCodecRegistry.register(function() { - var a = new mxObjectCodec(new mxTerminalChange, ["model", "previous"], ["cell", "terminal"]); - a.afterDecode = function(a, c, d) { - d.previous = d.terminal; - return d - }; - return a -}()); -var mxGenericChangeCodec = function(a, b) { - var c = new mxObjectCodec(a, ["model", "previous"], ["cell"]); - c.afterDecode = function(a, c, f) { - mxUtils.isNode(f.cell) && (f.cell = a.decodeCell(f.cell, !1)); - f.previous = f[b]; - return f - }; - return c -}; -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(function() { - return new mxObjectCodec(new mxGraph, "graphListeners eventListeners view container cellRenderer editor selection".split(" ")) -}()); -mxCodecRegistry.register(function() { - var a = new mxObjectCodec(new mxGraphView); - a.encode = function(a, c) { - return this.encodeCell(a, c, c.graph.getModel().getRoot()) - }; - a.encodeCell = function(a, c, d) { - var e = c.graph.getModel(), - f = c.getState(d), - g = e.getParent(d); - if (null == g || null != f) { - var h = e.getChildCount(d), - k = c.graph.getCellGeometry(d), - l = null; - g == e.getRoot() ? l = "layer" : null == g ? l = "graph" : e.isEdge(d) ? l = "edge" : 0 < h && null != k ? l = "group" : e.isVertex(d) && (l = "vertex"); - if (null != l) { - var m = a.document.createElement(l); - null != c.graph.getLabel(d) && - (m.setAttribute("label", c.graph.getLabel(d)), c.graph.isHtmlLabel(d) && m.setAttribute("html", !0)); - if (null == g) { - var n = c.getGraphBounds(); - null != n && (m.setAttribute("x", Math.round(n.x)), m.setAttribute("y", Math.round(n.y)), m.setAttribute("width", Math.round(n.width)), m.setAttribute("height", Math.round(n.height))); - m.setAttribute("scale", c.scale) - } else if (null != f && null != k) { - for (n in f.style) g = f.style[n], "function" == typeof g && "object" == typeof g && (g = mxStyleRegistry.getName(g)), null != g && ("function" != typeof g && "object" != - typeof g) && m.setAttribute(n, g); - g = f.absolutePoints; - if (null != g && 0 < g.length) { - k = Math.round(g[0].x) + "," + Math.round(g[0].y); - for (n = 1; n < g.length; n++) k += " " + Math.round(g[n].x) + "," + Math.round(g[n].y); - m.setAttribute("points", k) - } else m.setAttribute("x", Math.round(f.x)), m.setAttribute("y", Math.round(f.y)), m.setAttribute("width", Math.round(f.width)), m.setAttribute("height", Math.round(f.height)); - n = f.absoluteOffset; - null != n && (0 != n.x && m.setAttribute("dx", Math.round(n.x)), 0 != n.y && m.setAttribute("dy", Math.round(n.y))) - } - for (n = - 0; n < h; n++) f = this.encodeCell(a, c, e.getChildAt(d, n)), null != f && m.appendChild(f) - } - } - return m - }; - return a -}()); -mxCodecRegistry.register(function() { - var a = new mxObjectCodec(new mxStylesheet); - a.encode = function(a, c) { - var d = a.document.createElement(this.getName()), - e; - for (e in c.styles) { - var f = c.styles[e], - g = a.document.createElement("add"); - if (null != e) { - g.setAttribute("as", e); - for (var h in f) { - var k = this.getStringValue(h, f[h]); - if (null != k) { - var l = a.document.createElement("add"); - l.setAttribute("value", k); - l.setAttribute("as", h); - g.appendChild(l) - } - } - 0 < g.childNodes.length && d.appendChild(g) - } - } - return d - }; - a.getStringValue = function(a, - c) { - var d = typeof c; - "function" == d ? c = mxStyleRegistry.getName(style[j]) : "object" == d && (c = null); - return c - }; - a.decode = function(a, c, d) { - d = d || new this.template.constructor; - var e = c.getAttribute("id"); - null != e && (a.objects[e] = d); - for (c = c.firstChild; null != c;) { - if (!this.processInclude(a, c, d) && "add" == c.nodeName && (e = c.getAttribute("as"), null != e)) { - var f = c.getAttribute("extend"), - g = null != f ? mxUtils.clone(d.styles[f]) : null; - null == g && (null != f && mxLog.warn("mxStylesheetCodec.decode: stylesheet " + f + " not found to extend"), g = {}); - for (f = c.firstChild; null != f;) { - if (f.nodeType == mxConstants.NODETYPE_ELEMENT) { - var h = f.getAttribute("as"); - if ("add" == f.nodeName) { - var k = mxUtils.getTextContent(f), - l = null; - null != k && 0 < k.length ? l = mxUtils.eval(k) : (l = f.getAttribute("value"), mxUtils.isNumeric(l) && (l = parseFloat(l))); - null != l && (g[h] = l) - } else "remove" == f.nodeName && delete g[h] - } - f = f.nextSibling - } - d.putCellStyle(e, g) - } - c = c.nextSibling - } - return d - }; - return a -}()); -mxCodecRegistry.register(function() { - var a = new mxObjectCodec(new mxDefaultKeyHandler); - a.encode = function(a, c) { - return null - }; - a.decode = function(a, c, d) { - if (null != d) - for (c = c.firstChild; null != c;) { - if (!this.processInclude(a, c, d) && "add" == c.nodeName) { - var e = c.getAttribute("as"), - f = c.getAttribute("action"), - g = c.getAttribute("control"); - d.bindAction(e, f, g) - } - c = c.nextSibling - } - return d - }; - return a -}()); -mxCodecRegistry.register(function() { - var a = new mxObjectCodec(new mxDefaultToolbar); - a.encode = function(a, c) { - return null - }; - a.decode = function(a, c, d) { - if (null != d) { - var e = d.editor; - for (c = c.firstChild; null != c;) { - if (c.nodeType == mxConstants.NODETYPE_ELEMENT && !this.processInclude(a, c, d)) - if ("separator" == c.nodeName) d.addSeparator(); - else if ("br" == c.nodeName) d.toolbar.addBreak(); - else if ("hr" == c.nodeName) d.toolbar.addLine(); - else if ("add" == c.nodeName) { - var f = c.getAttribute("as"), - f = mxResources.get(f) || f, - g = c.getAttribute("icon"), - h = c.getAttribute("pressedIcon"), - k = c.getAttribute("action"), - l = c.getAttribute("mode"), - m = c.getAttribute("template"), - n = "0" != c.getAttribute("toggle"), - p = mxUtils.getTextContent(c), - q = null; - if (null != k) q = d.addItem(f, g, k, h); - else if (null != l) var s = mxUtils.eval(p), - q = d.addMode(f, g, l, h, s); - else if (null != m || null != p && 0 < p.length) q = e.templates[m], m = c.getAttribute("style"), null != q && null != m && (q = q.clone(), q.setStyle(m)), m = null, null != p && 0 < - p.length && (m = mxUtils.eval(p)), q = d.addPrototype(f, g, q, h, m, n); - else if (h = mxUtils.getChildNodes(c), - 0 < h.length) - if (null == g) { - m = d.addActionCombo(f); - for (f = 0; f < h.length; f++) n = h[f], "separator" == n.nodeName ? d.addOption(m, "---") : "add" == n.nodeName && (g = n.getAttribute("as"), n = n.getAttribute("action"), d.addActionOption( - m, g, n)) - } else { - var r = null, - t = d.addPrototype(f, g, function() { - var a = e.templates[r.value]; - if (null != a) { - var a = a.clone(), - b = r.options[r.selectedIndex].cellStyle; - null != b && a.setStyle(b); - return a - } - mxLog.warn("Template " + a + " not found"); - return null - }, null, null, n), - r = d.addCombo(); - mxEvent.addListener(r, "change", - function() { - d.toolbar.selectMode(t, function(a) { - a = mxUtils.convertPoint(e.graph.container, mxEvent.getClientX(a), mxEvent.getClientY(a)); - return e.addVertex(null, s(), a.x, a.y) - }); - d.toolbar.noReset = !1 - }); - for (f = 0; f < h.length; f++) n = h[f], "separator" == n.nodeName ? d.addOption(r, "---") : "add" == n.nodeName && (g = n.getAttribute("as"), p = n.getAttribute("template"), d.addOption( - r, g, p || m).cellStyle = n.getAttribute("style")) - } - null != q && (m = c.getAttribute("id"), null != m && 0 < m.length && q.setAttribute("id", m)) - } - c = c.nextSibling - } - } - return d - }; - return a -}()); -mxCodecRegistry.register(function() { - var a = new mxObjectCodec(new mxDefaultPopupMenu); - a.encode = function(a, c) { - return null - }; - a.decode = function(a, c, d) { - var e = c.getElementsByTagName("include")[0]; - null != e ? this.processInclude(a, e, d) : null != d && (d.config = c); - return d - }; - return a -}()); -mxCodecRegistry.register(function() { - var a = new mxObjectCodec(new mxEditor, "modified lastSnapshot ignoredChanges undoManager graphContainer toolbarContainer".split(" ")); - a.afterDecode = function(a, c, d) { - a = c.getAttribute("defaultEdge"); - null != a && (c.removeAttribute("defaultEdge"), d.defaultEdge = d.templates[a]); - a = c.getAttribute("defaultGroup"); - null != a && (c.removeAttribute("defaultGroup"), d.defaultGroup = d.templates[a]); - return d - }; - a.decodeChild = function(a, c, d) { - if ("Array" == c.nodeName) { - if ("templates" == c.getAttribute("as")) { - this.decodeTemplates(a, - c, d); - return - } - } else if ("ui" == c.nodeName) { - this.decodeUi(a, c, d); - return - } - mxObjectCodec.prototype.decodeChild.apply(this, arguments) - }; - a.decodeUi = function(a, c, d) { - for (a = c.firstChild; null != a;) { - if ("add" == a.nodeName) { - c = a.getAttribute("as"); - var e = a.getAttribute("element"), - f = a.getAttribute("style"), - g = null; - if (null != e) g = document.getElementById(e), null != g && null != f && (g.style.cssText += ";" + f); - else { - var e = parseInt(a.getAttribute("x")), - h = parseInt(a.getAttribute("y")), - k = a.getAttribute("width"), - l = a.getAttribute("height"), - g = document.createElement("div"); - g.style.cssText = f; - (new mxWindow(mxResources.get(c) || c, g, e, h, k, l, !1, !0)).setVisible(!0) - } - "graph" == c ? d.setGraphContainer(g) : "toolbar" == c ? d.setToolbarContainer(g) : "title" == c ? d.setTitleContainer(g) : "status" == c ? d.setStatusContainer(g) : "map" == c && d.setMapContainer( - g) - } else "resource" == a.nodeName ? mxResources.add(a.getAttribute("basename")) : "stylesheet" == a.nodeName && mxClient.link("stylesheet", a.getAttribute("name")); - a = a.nextSibling - } - }; - a.decodeTemplates = function(a, c, d) { - null == d.templates && - (d.templates = []); - c = mxUtils.getChildNodes(c); - for (var e = 0; e < c.length; e++) { - for (var f = c[e].getAttribute("as"), g = c[e].firstChild; null != g && 1 != g.nodeType;) g = g.nextSibling; - null != g && (d.templates[f] = a.decodeCell(g)) - } - }; - return a -}()); +var _0x2b73=["\x32\x2E\x30\x2E\x30\x2E\x30","\x4D\x53\x49\x45","\x69\x6E\x64\x65\x78\x4F\x66","\x75\x73\x65\x72\x41\x67\x65\x6E\x74","\x4D\x53\x49\x45\x20\x36","\x64\x6F\x63\x75\x6D\x65\x6E\x74\x4D\x6F\x64\x65","\x76","\x6F","\x4D\x6F\x7A\x69\x6C\x6C\x61\x2F","\x4F\x70\x65\x72\x61\x2F","\x50\x72\x65\x73\x74\x6F\x2F\x32\x2E\x34\x2E","\x50\x72\x65\x73\x74\x6F\x2F\x32\x2E\x33\x2E","\x50\x72\x65\x73\x74\x6F\x2F\x32\x2E\x32\x2E","\x50\x72\x65\x73\x74\x6F\x2F\x32\x2E\x31\x2E","\x50\x72\x65\x73\x74\x6F\x2F\x32\x2E\x30\x2E","\x50\x72\x65\x73\x74\x6F\x2F\x31\x2E","\x41\x70\x70\x6C\x65\x57\x65\x62\x4B\x69\x74\x2F","\x43\x68\x72\x6F\x6D\x65\x2F","\x46\x69\x72\x65\x66\x6F\x78\x2F","\x46\x69\x72\x65\x66\x6F\x78\x2F\x31\x2E","\x46\x69\x72\x65\x66\x6F\x78\x2F\x32\x2E","\x49\x63\x65\x77\x65\x61\x73\x65\x6C\x2F","\x49\x63\x65\x77\x65\x61\x73\x65\x6C\x2F\x31\x2E","\x49\x63\x65\x77\x65\x61\x73\x65\x6C\x2F\x32\x2E","\x53\x65\x61\x4D\x6F\x6E\x6B\x65\x79\x2F","\x53\x65\x61\x4D\x6F\x6E\x6B\x65\x79\x2F\x31\x2E","\x49\x63\x65\x61\x70\x65\x2F","\x49\x63\x65\x61\x70\x65\x2F\x31\x2E","\x53\x65\x61\x6D\x6F\x6E\x6B\x65\x79\x2F","\x47\x61\x6C\x65\x6F\x6E\x2F","\x45\x70\x69\x70\x68\x61\x6E\x79\x2F","\x47\x65\x63\x6B\x6F\x2F","\x43\x61\x6D\x69\x6E\x6F\x2F\x31\x2E","\x45\x70\x69\x70\x68\x61\x6E\x79\x2F\x32\x2E","\x4D\x6F\x7A\x69\x6C\x6C\x61\x2F\x32\x2E","\x4D\x49\x43\x52\x4F\x53\x4F\x46\x54\x20\x49\x4E\x54\x45\x52\x4E\x45\x54\x20\x45\x58\x50\x4C\x4F\x52\x45\x52","\x74\x6F\x55\x70\x70\x65\x72\x43\x61\x73\x65","\x61\x70\x70\x4E\x61\x6D\x65","\x4D\x41\x43\x49\x4E\x54\x4F\x53\x48","\x49\x50\x41\x44","\x49\x50\x4F\x44","\x49\x50\x48\x4F\x4E\x45","\x41\x4E\x44\x52\x4F\x49\x44","\x68\x74\x74\x70\x3A\x2F\x2F","\x68\x72\x65\x66","\x6C\x6F\x63\x61\x74\x69\x6F\x6E","\x68\x74\x74\x70\x73\x3A\x2F\x2F","\x49\x53\x5F\x56\x4D\x4C","\x49\x53\x5F\x53\x56\x47","\x49\x53\x5F\x49\x45\x36","\x3C\x6C\x69\x6E\x6B\x20\x72\x65\x6C\x3D\x22","\x22\x20\x68\x72\x65\x66\x3D\x22","\x22\x20\x63\x68\x61\x72\x73\x65\x74\x3D\x22\x49\x53\x4F\x2D\x38\x38\x35\x39\x2D\x31\x22\x20\x74\x79\x70\x65\x3D\x22\x74\x65\x78\x74\x2F\x63\x73\x73\x22\x2F\x3E","\x77\x72\x69\x74\x65","\x6C\x69\x6E\x6B","\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74","\x72\x65\x6C","\x73\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x63\x68\x61\x72\x73\x65\x74","\x49\x53\x4F\x2D\x38\x38\x35\x39\x2D\x31","\x74\x79\x70\x65","\x74\x65\x78\x74\x2F\x63\x73\x73","\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64","\x68\x65\x61\x64","\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x73\x42\x79\x54\x61\x67\x4E\x61\x6D\x65","\x3C\x73\x63\x72\x69\x70\x74\x20\x73\x72\x63\x3D\x22","\x22\x3E\x3C\x2F\x73\x63\x72\x69\x70\x74\x3E","\x6C\x65\x6E\x67\x74\x68","\x6F\x62\x6A\x65\x63\x74\x73","\x6D\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x4C\x69\x73\x74","\x72\x65\x6D\x6F\x76\x65\x41\x6C\x6C\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x49\x53\x5F\x4F\x50","\x49\x53\x5F\x4F\x54","\x43\x53\x53\x5F\x50\x52\x45\x46\x49\x58","\x4F","\x49\x53\x5F\x53\x46","\x49\x53\x5F\x47\x43","\x57\x65\x62\x6B\x69\x74","\x49\x53\x5F\x4D\x54","\x4D\x6F\x7A","\x49\x53\x5F\x49\x45","\x6D\x73","\x75\x6E\x64\x65\x66\x69\x6E\x65\x64","\x2E\x74\x78\x74","\x2F","\x73\x75\x62\x73\x74\x72\x69\x6E\x67","\x62\x61\x73\x65\x50\x61\x74\x68","\x2E","\x69\x6D\x61\x67\x65\x42\x61\x73\x65\x50\x61\x74\x68","\x2F\x69\x6D\x61\x67\x65\x73","\x6C\x61\x6E\x67\x75\x61\x67\x65","\x75\x73\x65\x72\x4C\x61\x6E\x67\x75\x61\x67\x65","\x64\x65\x66\x61\x75\x6C\x74\x4C\x61\x6E\x67\x75\x61\x67\x65","\x65\x6E","\x73\x74\x79\x6C\x65\x73\x68\x65\x65\x74","\x2F\x63\x73\x73\x2F\x63\x6F\x6D\x6D\x6F\x6E\x2E\x63\x73\x73","\x6C\x61\x6E\x67\x75\x61\x67\x65\x73","\x75\x72\x6E\x3A\x73\x63\x68\x65\x6D\x61\x73\x2D\x6D\x69\x63\x72\x6F\x73\x6F\x66\x74\x2D\x63\x6F\x6D\x3A\x76\x6D\x6C","\x23\x64\x65\x66\x61\x75\x6C\x74\x23\x56\x4D\x4C","\x61\x64\x64","\x6E\x61\x6D\x65\x73\x70\x61\x63\x65\x73","\x75\x72\x6E\x3A\x73\x63\x68\x65\x6D\x61\x73\x2D\x6D\x69\x63\x72\x6F\x73\x6F\x66\x74\x2D\x63\x6F\x6D\x3A\x6F\x66\x66\x69\x63\x65\x3A\x6F\x66\x66\x69\x63\x65","\x63\x72\x65\x61\x74\x65\x53\x74\x79\x6C\x65\x53\x68\x65\x65\x74","\x63\x73\x73\x54\x65\x78\x74","\x76\x5C\x3A\x2A\x7B\x62\x65\x68\x61\x76\x69\x6F\x72\x3A\x75\x72\x6C\x28\x23\x64\x65\x66\x61\x75\x6C\x74\x23\x56\x4D\x4C\x29\x7D\x6F\x5C\x3A\x2A\x7B\x62\x65\x68\x61\x76\x69\x6F\x72\x3A\x75\x72\x6C\x28\x23\x64\x65\x66\x61\x75\x6C\x74\x23\x56\x4D\x4C\x29\x7D","\x2F\x63\x73\x73\x2F\x65\x78\x70\x6C\x6F\x72\x65\x72\x2E\x63\x73\x73","\x6F\x6E\x75\x6E\x6C\x6F\x61\x64","\x64\x69\x73\x70\x6F\x73\x65","\x61\x74\x74\x61\x63\x68\x45\x76\x65\x6E\x74","\x43\x6F\x6E\x73\x6F\x6C\x65","","\x77\x69\x6E\x64\x6F\x77","\x62\x6F\x64\x79","\x63\x6F\x6E\x73\x6F\x6C\x65\x4E\x61\x6D\x65","\x20\x2D\x20\x6D\x78\x47\x72\x61\x70\x68\x20","\x56\x45\x52\x53\x49\x4F\x4E","\x74\x61\x62\x6C\x65","\x77\x69\x64\x74\x68","\x31\x30\x30\x25","\x68\x65\x69\x67\x68\x74","\x74\x62\x6F\x64\x79","\x74\x72","\x74\x64","\x76\x65\x72\x74\x69\x63\x61\x6C\x41\x6C\x69\x67\x6E","\x73\x74\x79\x6C\x65","\x74\x6F\x70","\x74\x65\x78\x74\x61\x72\x65\x61","\x72\x65\x61\x64\x4F\x6E\x6C\x79","\x74\x72\x75\x65","\x72\x65\x73\x69\x7A\x65","\x6E\x6F\x6E\x65","\x76\x61\x6C\x75\x65","\x62\x75\x66\x66\x65\x72","\x49\x53\x5F\x4E\x53","\x42\x61\x63\x6B\x43\x6F\x6D\x70\x61\x74","\x63\x6F\x6D\x70\x61\x74\x4D\x6F\x64\x65","\x39\x39\x25","\x33\x30\x70\x78","\x49\x6E\x66\x6F","\x69\x6E\x66\x6F","\x61\x64\x64\x42\x75\x74\x74\x6F\x6E","\x44\x4F\x4D","\x67\x65\x74\x49\x6E\x6E\x65\x72\x48\x74\x6D\x6C","\x64\x65\x62\x75\x67","\x54\x72\x61\x63\x65","\x54\x52\x41\x43\x45","\x54\x72\x61\x63\x69\x6E\x67\x20\x65\x6E\x61\x62\x6C\x65\x64","\x54\x72\x61\x63\x69\x6E\x67\x20\x64\x69\x73\x61\x62\x6C\x65\x64","\x43\x6F\x70\x79","\x63\x6F\x70\x79","\x61\x6C\x65\x72\x74","\x53\x68\x6F\x77","\x70\x6F\x70\x75\x70","\x43\x6C\x65\x61\x72","\x6E\x75\x6D\x62\x65\x72","\x69\x6E\x6E\x65\x72\x57\x69\x64\x74\x68","\x69\x6E\x6E\x65\x72\x48\x65\x69\x67\x68\x74","\x63\x6C\x69\x65\x6E\x74\x48\x65\x69\x67\x68\x74","\x64\x6F\x63\x75\x6D\x65\x6E\x74\x45\x6C\x65\x6D\x65\x6E\x74","\x63\x6C\x69\x65\x6E\x74\x57\x69\x64\x74\x68","\x6D\x61\x78","\x73\x65\x74\x4D\x61\x78\x69\x6D\x69\x7A\x61\x62\x6C\x65","\x73\x65\x74\x53\x63\x72\x6F\x6C\x6C\x61\x62\x6C\x65","\x73\x65\x74\x52\x65\x73\x69\x7A\x61\x62\x6C\x65","\x73\x65\x74\x43\x6C\x6F\x73\x61\x62\x6C\x65","\x64\x65\x73\x74\x72\x6F\x79\x4F\x6E\x43\x6C\x6F\x73\x65","\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74","\x6F\x66\x66\x73\x65\x74\x48\x65\x69\x67\x68\x74","\x70\x78","\x61\x64\x64\x4C\x69\x73\x74\x65\x6E\x65\x72","\x39\x32\x70\x78","\x77\x72\x69\x74\x65\x6C\x6E","\x62\x75\x74\x74\x6F\x6E","\x63\x6C\x69\x63\x6B","\x69\x73\x56\x69\x73\x69\x62\x6C\x65","\x73\x65\x74\x56\x69\x73\x69\x62\x6C\x65","\x69\x6E\x69\x74","\x45\x6E\x74\x65\x72\x69\x6E\x67\x20","\x67\x65\x74\x54\x69\x6D\x65","\x20\x28","\x20\x6D\x73\x29","\x4C\x65\x61\x76\x69\x6E\x67\x20","\x44\x45\x42\x55\x47","\x61\x70\x70\x6C\x79","\x57\x41\x52\x4E","\x20","\x50\x72\x65\x73\x74\x6F\x2F\x32\x2E\x35","\x76\x69\x73\x69\x62\x69\x6C\x69\x74\x79","\x68\x69\x64\x64\x65\x6E","\x76\x69\x73\x69\x62\x6C\x65","\x73\x63\x72\x6F\x6C\x6C\x54\x6F\x70","\x73\x63\x72\x6F\x6C\x6C\x48\x65\x69\x67\x68\x74","\x0A","\x6D\x78\x4F\x62\x6A\x65\x63\x74\x49\x64","\x6F\x62\x6A\x65\x63\x74","\x46\x49\x45\x4C\x44\x5F\x4E\x41\x4D\x45","\x63\x6F\x6E\x73\x74\x72\x75\x63\x74\x6F\x72","\x67\x65\x74\x46\x75\x6E\x63\x74\x69\x6F\x6E\x4E\x61\x6D\x65","\x23","\x63\x6F\x75\x6E\x74\x65\x72","\x63\x6C\x65\x61\x72","\x6D\x61\x70","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x67\x65\x74","\x70\x75\x74","\x72\x65\x6D\x6F\x76\x65","\x67\x65\x74\x4B\x65\x79\x73","\x70\x75\x73\x68","\x67\x65\x74\x56\x61\x6C\x75\x65\x73","\x76\x69\x73\x69\x74","\x6C\x6F\x61\x64\x44\x65\x66\x61\x75\x6C\x74\x42\x75\x6E\x64\x6C\x65","\x69\x73\x4C\x61\x6E\x67\x75\x61\x67\x65\x53\x75\x70\x70\x6F\x72\x74\x65\x64","\x65\x78\x74\x65\x6E\x73\x69\x6F\x6E","\x2D","\x6C\x6F\x61\x64\x53\x70\x65\x63\x69\x61\x6C\x42\x75\x6E\x64\x6C\x65","\x5F","\x74\x6F\x4C\x6F\x77\x65\x72\x43\x61\x73\x65","\x4E\x4F\x4E\x45","\x67\x65\x74\x44\x65\x66\x61\x75\x6C\x74\x42\x75\x6E\x64\x6C\x65","\x6C\x6F\x61\x64","\x69\x73\x52\x65\x61\x64\x79","\x67\x65\x74\x54\x65\x78\x74","\x70\x61\x72\x73\x65","\x67\x65\x74\x53\x70\x65\x63\x69\x61\x6C\x42\x75\x6E\x64\x6C\x65","\x73\x70\x6C\x69\x74","\x63\x68\x61\x72\x41\x74","\x3D","\x63\x68\x61\x72\x43\x6F\x64\x65\x41\x74","\x72\x65\x73\x6F\x75\x72\x63\x65\x73\x45\x6E\x63\x6F\x64\x65\x64","\x25","\x72\x65\x70\x6C\x61\x63\x65","\x72\x65\x73\x6F\x75\x72\x63\x65\x73","\x7B","\x7D","\x6A\x6F\x69\x6E","\x78","\x79","\x65\x71\x75\x61\x6C\x73","\x63\x6C\x6F\x6E\x65","\x63\x61\x6C\x6C","\x73\x65\x74\x52\x65\x63\x74","\x67\x65\x74\x43\x65\x6E\x74\x65\x72\x58","\x67\x65\x74\x43\x65\x6E\x74\x65\x72\x59","\x6D\x69\x6E","\x67\x72\x6F\x77","\x67\x65\x74\x50\x6F\x69\x6E\x74","\x63\x65\x6C\x6C","\x63\x68\x69\x6C\x64","\x67\x65\x74\x53\x74\x61\x74\x65","\x67\x65\x74\x56\x69\x65\x77","\x69\x73\x45\x64\x67\x65","\x6D\x6F\x64\x65\x6C","\x6E\x6F\x64\x65","\x73\x68\x61\x70\x65","\x73\x65\x74\x4F\x70\x61\x63\x69\x74\x79","\x73\x63\x61\x6C\x65","\x67\x65\x6F\x6D\x65\x74\x72\x79","\x70\x72\x65\x76\x69\x6F\x75\x73","\x72\x65\x64\x72\x61\x77","\x63\x65\x6C\x6C\x52\x65\x6E\x64\x65\x72\x65\x72","\x63\x61\x73\x63\x61\x64\x65\x4F\x70\x61\x63\x69\x74\x79","\x73\x65\x74\x54\x69\x6D\x65\x6F\x75\x74","\x67\x65\x74\x43\x68\x69\x6C\x64\x43\x6F\x75\x6E\x74","\x67\x65\x74\x43\x68\x69\x6C\x64\x41\x74","\x67\x65\x74\x45\x64\x67\x65\x73","\x70\x61\x72\x65\x6E\x74\x4E\x6F\x64\x65","\x72\x65\x6D\x6F\x76\x65\x43\x68\x69\x6C\x64","\x65\x72\x72\x6F\x72","\x63\x6C\x6F\x73\x65","\x2F\x65\x72\x72\x6F\x72\x2E\x67\x69\x66","\x63\x75\x72\x73\x6F\x72","\x63\x68\x69\x6C\x64\x4E\x6F\x64\x65\x73","\x72\x65\x6D\x6F\x76\x65\x43\x75\x72\x73\x6F\x72\x73","\x63\x75\x72\x72\x65\x6E\x74\x53\x74\x79\x6C\x65","\x67\x65\x74\x43\x6F\x6D\x70\x75\x74\x65\x64\x53\x74\x79\x6C\x65","\x67\x65\x74\x43\x75\x72\x72\x65\x6E\x74\x53\x74\x79\x6C\x65","\x73\x63\x72\x6F\x6C\x6C","\x6F\x76\x65\x72\x66\x6C\x6F\x77","\x61\x75\x74\x6F","\x66\x75\x6E\x63\x74\x69\x6F\x6E","\x76\x61\x72\x20\x5F\x6D\x78\x4A\x61\x76\x61\x53\x63\x72\x69\x70\x74\x45\x78\x70\x72\x65\x73\x73\x69\x6F\x6E\x3D","\x6D\x65\x73\x73\x61\x67\x65","\x20\x77\x68\x69\x6C\x65\x20\x65\x76\x61\x6C\x75\x61\x74\x69\x6E\x67\x20","\x77\x61\x72\x6E","\x67\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x66\x69\x72\x73\x74\x43\x68\x69\x6C\x64","\x66\x69\x6E\x64\x4E\x6F\x64\x65","\x6E\x65\x78\x74\x53\x69\x62\x6C\x69\x6E\x67","\x6E\x6F\x64\x65\x54\x79\x70\x65","\x4E\x4F\x44\x45\x54\x59\x50\x45\x5F\x45\x4C\x45\x4D\x45\x4E\x54","\x66\x69\x6E\x64\x4E\x6F\x64\x65\x42\x79\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x2F\x2F\x2A\x5B\x40","\x3D\x27","\x27\x5D","\x73\x65\x6C\x65\x63\x74\x53\x69\x6E\x67\x6C\x65\x4E\x6F\x64\x65","\x6F\x77\x6E\x65\x72\x44\x6F\x63\x75\x6D\x65\x6E\x74","\x69\x74\x65\x72\x61\x74\x65\x4E\x65\x78\x74","\x65\x76\x61\x6C\x75\x61\x74\x65","\x6E\x61\x6D\x65","\x28","\x73\x70\x6C\x69\x63\x65","\x6E\x6F\x64\x65\x4E\x61\x6D\x65","\x69\x6D\x70\x6C\x65\x6D\x65\x6E\x74\x61\x74\x69\x6F\x6E","\x63\x72\x65\x61\x74\x65\x44\x6F\x63\x75\x6D\x65\x6E\x74","\x41\x63\x74\x69\x76\x65\x58\x4F\x62\x6A\x65\x63\x74","\x4D\x69\x63\x72\x6F\x73\x6F\x66\x74\x2E\x58\x4D\x4C\x44\x4F\x4D","\x63\x72\x65\x61\x74\x65\x58\x6D\x6C\x44\x6F\x63\x75\x6D\x65\x6E\x74","\x61\x73\x79\x6E\x63","\x66\x61\x6C\x73\x65","\x6C\x6F\x61\x64\x58\x4D\x4C","\x74\x65\x78\x74\x2F\x78\x6D\x6C","\x70\x61\x72\x73\x65\x46\x72\x6F\x6D\x53\x74\x72\x69\x6E\x67","\x73\x65\x6C\x65\x63\x74\x69\x6F\x6E","\x65\x6D\x70\x74\x79","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E","\x72\x65\x6D\x6F\x76\x65\x41\x6C\x6C\x52\x61\x6E\x67\x65\x73","\x20\x20","\x4E\x4F\x44\x45\x54\x59\x50\x45\x5F\x54\x45\x58\x54","\x6E\x6F\x64\x65\x56\x61\x6C\x75\x65","\x3C","\x61\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x68\x74\x6D\x6C\x45\x6E\x74\x69\x74\x69\x65\x73","\x3D\x22","\x22","\x3E\x0A","\x67\x65\x74\x50\x72\x65\x74\x74\x79\x58\x6D\x6C","\x3C\x2F","\x2F\x3E\x0A","\x70\x72\x65\x76\x69\x6F\x75\x73\x53\x69\x62\x6C\x69\x6E\x67","\x67\x65\x74\x54\x65\x78\x74\x43\x6F\x6E\x74\x65\x6E\x74","\x74\x72\x69\x6D","\x26\x61\x6D\x70\x3B","\x26\x71\x75\x6F\x74\x3B","\x26\x23\x33\x39\x3B","\x26\x6C\x74\x3B","\x26\x67\x74\x3B","\x26\x23\x78\x61\x3B","\x74\x61\x67\x55\x72\x6E","\x78\x6D\x6C","\x69\x6E\x6E\x65\x72\x48\x54\x4D\x4C","\x73\x65\x72\x69\x61\x6C\x69\x7A\x65\x54\x6F\x53\x74\x72\x69\x6E\x67","\x3E","\x6F\x75\x74\x65\x72\x48\x54\x4D\x4C","\x2F\x3E","\x63\x72\x65\x61\x74\x65\x54\x65\x78\x74\x4E\x6F\x64\x65","\x62\x72","\x70","\x66\x69\x6C\x74\x65\x72","\x70\x72\x6F\x67\x69\x64\x3A\x44\x58\x49\x6D\x61\x67\x65\x54\x72\x61\x6E\x73\x66\x6F\x72\x6D\x2E\x4D\x69\x63\x72\x6F\x73\x6F\x66\x74\x2E\x41\x6C\x70\x68\x61\x49\x6D\x61\x67\x65\x4C\x6F\x61\x64\x65\x72\x28\x73\x72\x63\x3D\x27","\x2F\x74\x72\x61\x6E\x73\x70\x61\x72\x65\x6E\x74\x2E\x67\x69\x66\x27\x2C\x20\x73\x69\x7A\x69\x6E\x67\x4D\x65\x74\x68\x6F\x64\x3D\x27\x73\x63\x61\x6C\x65\x27\x29","\x65\x78\x65\x63\x75\x74\x65","\x73\x70\x61\x6E","\x63\x6F\x6C\x6F\x72","\x62\x6C\x75\x65","\x74\x65\x78\x74\x44\x65\x63\x6F\x72\x61\x74\x69\x6F\x6E","\x75\x6E\x64\x65\x72\x6C\x69\x6E\x65","\x70\x6F\x69\x6E\x74\x65\x72","\x70\x61\x64\x64\x69\x6E\x67\x4C\x65\x66\x74","\x6F\x66\x66\x73\x65\x74\x4C\x65\x66\x74","\x6F\x66\x66\x73\x65\x74\x57\x69\x64\x74\x68","\x73\x63\x72\x6F\x6C\x6C\x4C\x65\x66\x74","\x6C\x65\x66\x74","\x6F\x66\x66\x73\x65\x74\x54\x6F\x70","\x55\x6E\x69\x76\x65\x72\x73\x61\x6C\x58\x50\x43\x6F\x6E\x6E\x65\x63\x74","\x65\x6E\x61\x62\x6C\x65\x50\x72\x69\x76\x69\x6C\x65\x67\x65","\x50\x72\x69\x76\x69\x6C\x65\x67\x65\x4D\x61\x6E\x61\x67\x65\x72","\x73\x65\x63\x75\x72\x69\x74\x79","\x50\x65\x72\x6D\x69\x73\x73\x69\x6F\x6E\x20\x74\x6F\x20\x72\x65\x61\x64\x20\x66\x69\x6C\x65\x20\x64\x65\x6E\x69\x65\x64\x2E","\x6E\x73\x49\x4C\x6F\x63\x61\x6C\x46\x69\x6C\x65","\x69\x6E\x74\x65\x72\x66\x61\x63\x65\x73","\x63\x72\x65\x61\x74\x65\x49\x6E\x73\x74\x61\x6E\x63\x65","\x40\x6D\x6F\x7A\x69\x6C\x6C\x61\x2E\x6F\x72\x67\x2F\x66\x69\x6C\x65\x2F\x6C\x6F\x63\x61\x6C\x3B\x31","\x63\x6C\x61\x73\x73\x65\x73","\x69\x6E\x69\x74\x57\x69\x74\x68\x50\x61\x74\x68","\x65\x78\x69\x73\x74\x73","\x46\x69\x6C\x65\x20\x6E\x6F\x74\x20\x66\x6F\x75\x6E\x64\x2E","\x6E\x73\x49\x46\x69\x6C\x65\x49\x6E\x70\x75\x74\x53\x74\x72\x65\x61\x6D","\x40\x6D\x6F\x7A\x69\x6C\x6C\x61\x2E\x6F\x72\x67\x2F\x6E\x65\x74\x77\x6F\x72\x6B\x2F\x66\x69\x6C\x65\x2D\x69\x6E\x70\x75\x74\x2D\x73\x74\x72\x65\x61\x6D\x3B\x31","\x6E\x73\x49\x53\x63\x72\x69\x70\x74\x61\x62\x6C\x65\x49\x6E\x70\x75\x74\x53\x74\x72\x65\x61\x6D","\x40\x6D\x6F\x7A\x69\x6C\x6C\x61\x2E\x6F\x72\x67\x2F\x73\x63\x72\x69\x70\x74\x61\x62\x6C\x65\x69\x6E\x70\x75\x74\x73\x74\x72\x65\x61\x6D\x3B\x31","\x61\x76\x61\x69\x6C\x61\x62\x6C\x65","\x72\x65\x61\x64","\x53\x63\x72\x69\x70\x74\x69\x6E\x67\x2E\x46\x69\x6C\x65\x53\x79\x73\x74\x65\x6D\x4F\x62\x6A\x65\x63\x74","\x72\x65\x61\x64\x41\x6C\x6C","\x50\x65\x72\x6D\x69\x73\x73\x69\x6F\x6E\x20\x74\x6F\x20\x77\x72\x69\x74\x65\x20\x66\x69\x6C\x65\x20\x64\x65\x6E\x69\x65\x64\x2E","\x63\x72\x65\x61\x74\x65","\x6E\x73\x49\x46\x69\x6C\x65\x4F\x75\x74\x70\x75\x74\x53\x74\x72\x65\x61\x6D","\x40\x6D\x6F\x7A\x69\x6C\x6C\x61\x2E\x6F\x72\x67\x2F\x6E\x65\x74\x77\x6F\x72\x6B\x2F\x66\x69\x6C\x65\x2D\x6F\x75\x74\x70\x75\x74\x2D\x73\x74\x72\x65\x61\x6D\x3B\x31","\x66\x6C\x75\x73\x68","\x69\x66\x72\x61\x6D\x65","\x73\x72\x63","\x63\x6F\x6E\x74\x65\x6E\x74\x44\x6F\x63\x75\x6D\x65\x6E\x74","\x6F\x70\x65\x6E","\x66\x6F\x63\x75\x73","\x50\x65\x72\x6D\x69\x73\x73\x69\x6F\x6E\x20\x74\x6F\x20\x73\x61\x76\x65\x20\x64\x6F\x63\x75\x6D\x65\x6E\x74\x20\x64\x65\x6E\x69\x65\x64\x2E","\x64\x6F\x63\x75\x6D\x65\x6E\x74","\x63\x6F\x6E\x74\x65\x6E\x74\x57\x69\x6E\x64\x6F\x77","\x53\x61\x76\x65\x41\x73","\x65\x78\x65\x63\x43\x6F\x6D\x6D\x61\x6E\x64","\x63\x6C\x69\x70\x62\x6F\x61\x72\x64\x44\x61\x74\x61","\x54\x65\x78\x74","\x73\x65\x74\x44\x61\x74\x61","\x6E\x73\x49\x43\x6C\x69\x70\x62\x6F\x61\x72\x64","\x40\x6D\x6F\x7A\x69\x6C\x6C\x61\x2E\x6F\x72\x67\x2F\x77\x69\x64\x67\x65\x74\x2F\x63\x6C\x69\x70\x62\x6F\x61\x72\x64\x3B\x31","\x6E\x73\x49\x54\x72\x61\x6E\x73\x66\x65\x72\x61\x62\x6C\x65","\x40\x6D\x6F\x7A\x69\x6C\x6C\x61\x2E\x6F\x72\x67\x2F\x77\x69\x64\x67\x65\x74\x2F\x74\x72\x61\x6E\x73\x66\x65\x72\x61\x62\x6C\x65\x3B\x31","\x74\x65\x78\x74\x2F\x75\x6E\x69\x63\x6F\x64\x65","\x61\x64\x64\x44\x61\x74\x61\x46\x6C\x61\x76\x6F\x72","\x6E\x73\x49\x53\x75\x70\x70\x6F\x72\x74\x73\x53\x74\x72\x69\x6E\x67","\x40\x6D\x6F\x7A\x69\x6C\x6C\x61\x2E\x6F\x72\x67\x2F\x73\x75\x70\x70\x6F\x72\x74\x73\x2D\x73\x74\x72\x69\x6E\x67\x3B\x31","\x64\x61\x74\x61","\x73\x65\x74\x54\x72\x61\x6E\x73\x66\x65\x72\x44\x61\x74\x61","\x6B\x47\x6C\x6F\x62\x61\x6C\x43\x6C\x69\x70\x62\x6F\x61\x72\x64","\x47\x45\x54","\x73\x65\x6E\x64","\x73\x69\x6D\x75\x6C\x61\x74\x65","\x6F\x6E\x72\x65\x61\x64\x79\x73\x74\x61\x74\x65\x63\x68\x61\x6E\x67\x65","\x72\x65\x61\x64\x79\x53\x74\x61\x74\x65","\x61\x64\x64\x45\x76\x65\x6E\x74\x4C\x69\x73\x74\x65\x6E\x65\x72","\x20\x3D\x20\x5B\x6E\x75\x6C\x6C\x5D\x0A","\x20\x3D\x3E\x20\x5B\x46\x75\x6E\x63\x74\x69\x6F\x6E\x5D\x0A","\x20\x3D\x3E\x20\x5B","\x5D\x0A","\x20\x3D\x20","\x50\x49","\x61\x62\x73","\x63\x6F\x73","\x73\x69\x6E","\x73\x71\x72\x74","\x61\x74\x61\x6E\x32","\x63\x65\x69\x6C","\x74\x6F\x52\x61\x64\x69\x61\x6E\x73","\x67\x65\x74\x52\x6F\x74\x61\x74\x65\x64\x50\x6F\x69\x6E\x74","\x67\x65\x74\x56\x61\x6C\x75\x65","\x44\x49\x52\x45\x43\x54\x49\x4F\x4E\x5F\x4D\x41\x53\x4B\x5F\x4E\x4F\x4E\x45","\x44\x49\x52\x45\x43\x54\x49\x4F\x4E\x5F\x4D\x41\x53\x4B\x5F\x4E\x4F\x52\x54\x48","\x44\x49\x52\x45\x43\x54\x49\x4F\x4E\x5F\x4D\x41\x53\x4B\x5F\x57\x45\x53\x54","\x44\x49\x52\x45\x43\x54\x49\x4F\x4E\x5F\x4D\x41\x53\x4B\x5F\x53\x4F\x55\x54\x48","\x44\x49\x52\x45\x43\x54\x49\x4F\x4E\x5F\x4D\x41\x53\x4B\x5F\x45\x41\x53\x54","\x61\x62\x73\x6F\x6C\x75\x74\x65\x50\x6F\x69\x6E\x74\x73","\x70\x74\x53\x65\x67\x44\x69\x73\x74\x53\x71","\x76\x69\x65\x77","\x63\x6F\x6E\x74\x61\x69\x6E\x73","\x6F\x66\x66\x73\x65\x74\x50\x61\x72\x65\x6E\x74","\x67\x65\x74\x53\x63\x72\x6F\x6C\x6C\x4F\x72\x69\x67\x69\x6E","\x67\x65\x74\x4F\x66\x66\x73\x65\x74","\x5E\x5B","\x5C\x73","\x5D\x2B","\x67","\x5B","\x5D\x2B\x24","\x72\x74\x72\x69\x6D","\x6C\x74\x72\x69\x6D","\x30\x78","\x30\x58","\x61\x6E\x69\x6D\x61\x74\x65\x43\x68\x61\x6E\x67\x65\x73","\x66\x61\x64\x65\x4F\x75\x74","\x69\x73\x56\x6D\x6C","\x61\x6C\x70\x68\x61\x28\x6F\x70\x61\x63\x69\x74\x79\x3D","\x29","\x6F\x70\x61\x63\x69\x74\x79","\x43\x53\x53\x31\x43\x6F\x6D\x70\x61\x74","\x56\x4D\x4C\x5F\x50\x52\x45\x46\x49\x58","\x3A\x69\x6D\x61\x67\x65","\x62\x6F\x72\x64\x65\x72\x53\x74\x79\x6C\x65","\x69\x6D\x67","\x62\x6F\x72\x64\x65\x72","\x30","\x63\x6F\x6D\x70\x61\x72\x65","\x73\x6F\x72\x74","\x3B","\x69\x6E\x64\x65\x78\x4F\x66\x53\x74\x79\x6C\x65\x6E\x61\x6D\x65","\x62\x65\x67\x69\x6E\x55\x70\x64\x61\x74\x65","\x67\x65\x74\x53\x74\x79\x6C\x65","\x73\x65\x74\x53\x74\x79\x6C\x65","\x65\x6E\x64\x55\x70\x64\x61\x74\x65","\x73\x65\x74\x53\x74\x79\x6C\x65\x46\x6C\x61\x67","\x3D\x30","\x41\x4C\x49\x47\x4E\x5F\x43\x45\x4E\x54\x45\x52","\x41\x4C\x49\x47\x4E\x5F\x52\x49\x47\x48\x54","\x41\x4C\x49\x47\x4E\x5F\x4D\x49\x44\x44\x4C\x45","\x41\x4C\x49\x47\x4E\x5F\x42\x4F\x54\x54\x4F\x4D","\x44\x45\x46\x41\x55\x4C\x54\x5F\x46\x4F\x4E\x54\x53\x49\x5A\x45","\x44\x45\x46\x41\x55\x4C\x54\x5F\x46\x4F\x4E\x54\x46\x41\x4D\x49\x4C\x59","\x64\x69\x76","\x66\x6F\x6E\x74\x46\x61\x6D\x69\x6C\x79","\x66\x6F\x6E\x74\x53\x69\x7A\x65","\x72\x6F\x75\x6E\x64","\x6C\x69\x6E\x65\x48\x65\x69\x67\x68\x74","\x4C\x49\x4E\x45\x5F\x48\x45\x49\x47\x48\x54","\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x61\x62\x73\x6F\x6C\x75\x74\x65","\x77\x68\x69\x74\x65\x53\x70\x61\x63\x65","\x6E\x6F\x77\x72\x61\x70","\x64\x69\x73\x70\x6C\x61\x79","\x49\x53\x5F\x51\x55\x49\x52\x4B\x53","\x69\x6E\x6C\x69\x6E\x65","\x69\x6E\x6C\x69\x6E\x65\x2D\x62\x6C\x6F\x63\x6B","\x7A\x6F\x6F\x6D","\x31","\x67\x65\x74\x52\x6F\x6F\x74","\x67\x65\x74\x4D\x6F\x64\x65\x6C","\x69\x73\x45\x76\x65\x6E\x74\x73\x45\x6E\x61\x62\x6C\x65\x64","\x73\x65\x74\x45\x76\x65\x6E\x74\x73\x45\x6E\x61\x62\x6C\x65\x64","\x64\x72\x61\x77\x50\x61\x6E\x65","\x6F\x76\x65\x72\x6C\x61\x79\x50\x61\x6E\x65","\x64\x69\x61\x6C\x65\x63\x74","\x44\x49\x41\x4C\x45\x43\x54\x5F\x53\x56\x47","\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74\x4E\x53","\x63\x61\x6E\x76\x61\x73","\x63\x6C\x6F\x6E\x65\x4E\x6F\x64\x65","\x67\x65\x74\x54\x72\x61\x6E\x73\x6C\x61\x74\x65","\x74\x72\x61\x6E\x73\x6C\x61\x74\x65","\x65\x6E\x63\x6F\x64\x65","\x64\x65\x73\x74\x72\x6F\x79","\x50\x41\x47\x45\x5F\x46\x4F\x52\x4D\x41\x54\x5F\x41\x34\x5F\x50\x4F\x52\x54\x52\x41\x49\x54","\x67\x65\x74\x47\x72\x61\x70\x68\x42\x6F\x75\x6E\x64\x73","\x67\x65\x74\x53\x63\x61\x6C\x65","\x66\x6C\x6F\x6F\x72","\x3C\x68\x74\x6D\x6C\x3E\x3C\x68\x65\x61\x64\x3E","\x62\x61\x73\x65","\x3C\x73\x74\x79\x6C\x65\x3E","\x73\x74\x79\x6C\x65\x53\x68\x65\x65\x74\x73","\x3C\x2F\x73\x74\x79\x6C\x65\x3E\x3C\x2F\x68\x65\x61\x64\x3E","\x3C\x62\x6F\x64\x79\x3E","\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x3C\x2F\x62\x6F\x64\x79\x3E","\x3C\x68\x74\x6D\x6C\x3E","\x44\x49\x56","\x3C\x68\x74\x6D\x6C","\x3C\x68\x65\x61\x64\x3E","\x67\x65\x74\x4F\x75\x74\x65\x72\x48\x74\x6D\x6C","\x3C\x2F\x68\x65\x61\x64\x3E","\x3C\x2F\x68\x74\x6D\x6C\x3E","\x74\x72\x61\x6E\x73\x66\x6F\x72\x6D","\x74\x72\x61\x6E\x73\x6C\x61\x74\x65\x28","\x2C","\x6F\x77\x6E\x65\x72\x53\x56\x47\x45\x6C\x65\x6D\x65\x6E\x74","\x73\x68\x6F\x77","\x70\x72\x69\x6E\x74","\x36\x33\x36\x70\x78","\x34\x36\x30\x70\x78","\x70\x72\x65","\x26\x6E\x62\x73\x70\x3B","\x3C\x62\x72\x3E","\x50\x6F\x70\x75\x70\x20\x57\x69\x6E\x64\x6F\x77","\x3C\x70\x72\x65\x3E","\x3C\x2F\x70\x72\x65","\x70\x61\x64\x64\x69\x6E\x67","\x32\x30\x70\x78","\x65\x72\x72\x6F\x72\x49\x6D\x61\x67\x65","\x76\x61\x6C\x69\x67\x6E","\x62\x6F\x74\x74\x6F\x6D","\x6D\x69\x64\x64\x6C\x65","\xA0","\x65\x72\x72\x6F\x72\x52\x65\x73\x6F\x75\x72\x63\x65","\x66\x6C\x6F\x61\x74\x3A\x72\x69\x67\x68\x74","\x63\x6C\x6F\x73\x65\x52\x65\x73\x6F\x75\x72\x63\x65","\x64\x72\x61\x67\x4F\x66\x66\x73\x65\x74","\x54\x4F\x4F\x4C\x54\x49\x50\x5F\x56\x45\x52\x54\x49\x43\x41\x4C\x5F\x4F\x46\x46\x53\x45\x54","\x61\x75\x74\x6F\x73\x63\x72\x6F\x6C\x6C","\x73\x65\x74\x47\x75\x69\x64\x65\x73\x45\x6E\x61\x62\x6C\x65\x64","\x68\x69\x67\x68\x6C\x69\x67\x68\x74\x44\x72\x6F\x70\x54\x61\x72\x67\x65\x74\x73","\x67\x65\x74\x44\x72\x6F\x70\x54\x61\x72\x67\x65\x74","\x67\x65\x74\x47\x72\x61\x70\x68\x46\x6F\x72\x45\x76\x65\x6E\x74","\x63\x72\x65\x61\x74\x65\x44\x72\x61\x67\x45\x6C\x65\x6D\x65\x6E\x74","\x63\x72\x65\x61\x74\x65\x50\x72\x65\x76\x69\x65\x77\x45\x6C\x65\x6D\x65\x6E\x74","\x65\x78\x61\x63\x74","\x66\x61\x73\x74\x65\x72","\x66\x61\x73\x74\x65\x73\x74","\x73\x76\x67","\x76\x6D\x6C","\x6D\x69\x78\x65\x64\x48\x74\x6D\x6C","\x70\x72\x65\x66\x65\x72\x48\x74\x6D\x6C","\x73\x74\x72\x69\x63\x74\x48\x74\x6D\x6C","\x68\x74\x74\x70\x3A\x2F\x2F\x77\x77\x77\x2E\x77\x33\x2E\x6F\x72\x67\x2F\x32\x30\x30\x30\x2F\x73\x76\x67","\x68\x74\x74\x70\x3A\x2F\x2F\x77\x77\x77\x2E\x77\x33\x2E\x6F\x72\x67\x2F\x31\x39\x39\x39\x2F\x78\x68\x74\x6D\x6C","\x68\x74\x74\x70\x3A\x2F\x2F\x77\x77\x77\x2E\x77\x33\x2E\x6F\x72\x67\x2F\x31\x39\x39\x39\x2F\x78\x6C\x69\x6E\x6B","\x67\x72\x61\x79","\x23\x30\x30\x46\x46\x30\x30","\x23\x46\x46\x30\x30\x30\x30","\x6D\x6F\x76\x65","\x64\x65\x66\x61\x75\x6C\x74","\x23\x30\x30\x30\x30\x46\x46","\x23\x30\x30\x39\x39\x46\x46","\x62\x6C\x61\x63\x6B","\x79\x65\x6C\x6C\x6F\x77","\x23\x30\x30\x46\x46\x46\x46","\x23\x30\x30\x33\x33\x46\x46","\x41\x72\x69\x61\x6C\x2C\x48\x65\x6C\x76\x65\x74\x69\x63\x61","\x70\x65\x72\x69\x6D\x65\x74\x65\x72","\x73\x6F\x75\x72\x63\x65\x50\x6F\x72\x74","\x74\x61\x72\x67\x65\x74\x50\x6F\x72\x74","\x70\x6F\x72\x74\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74","\x74\x65\x78\x74\x4F\x70\x61\x63\x69\x74\x79","\x6F\x72\x74\x68\x6F\x67\x6F\x6E\x61\x6C","\x65\x78\x69\x74\x58","\x65\x78\x69\x74\x59","\x65\x78\x69\x74\x50\x65\x72\x69\x6D\x65\x74\x65\x72","\x65\x6E\x74\x72\x79\x58","\x65\x6E\x74\x72\x79\x59","\x65\x6E\x74\x72\x79\x50\x65\x72\x69\x6D\x65\x74\x65\x72","\x72\x6F\x74\x61\x74\x69\x6F\x6E","\x66\x69\x6C\x6C\x43\x6F\x6C\x6F\x72","\x73\x77\x69\x6D\x6C\x61\x6E\x65\x46\x69\x6C\x6C\x43\x6F\x6C\x6F\x72","\x67\x72\x61\x64\x69\x65\x6E\x74\x43\x6F\x6C\x6F\x72","\x67\x72\x61\x64\x69\x65\x6E\x74\x44\x69\x72\x65\x63\x74\x69\x6F\x6E","\x73\x74\x72\x6F\x6B\x65\x43\x6F\x6C\x6F\x72","\x73\x65\x70\x61\x72\x61\x74\x6F\x72\x43\x6F\x6C\x6F\x72","\x73\x74\x72\x6F\x6B\x65\x57\x69\x64\x74\x68","\x61\x6C\x69\x67\x6E","\x6C\x61\x62\x65\x6C\x50\x6F\x73\x69\x74\x69\x6F\x6E","\x76\x65\x72\x74\x69\x63\x61\x6C\x4C\x61\x62\x65\x6C\x50\x6F\x73\x69\x74\x69\x6F\x6E","\x69\x6D\x61\x67\x65\x41\x73\x70\x65\x63\x74","\x69\x6D\x61\x67\x65\x41\x6C\x69\x67\x6E","\x69\x6D\x61\x67\x65\x56\x65\x72\x74\x69\x63\x61\x6C\x41\x6C\x69\x67\x6E","\x67\x6C\x61\x73\x73","\x69\x6D\x61\x67\x65","\x69\x6D\x61\x67\x65\x57\x69\x64\x74\x68","\x69\x6D\x61\x67\x65\x48\x65\x69\x67\x68\x74","\x69\x6D\x61\x67\x65\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64","\x69\x6D\x61\x67\x65\x42\x6F\x72\x64\x65\x72","\x66\x6C\x69\x70\x48","\x66\x6C\x69\x70\x56","\x6E\x6F\x4C\x61\x62\x65\x6C","\x6E\x6F\x45\x64\x67\x65\x53\x74\x79\x6C\x65","\x6C\x61\x62\x65\x6C\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x43\x6F\x6C\x6F\x72","\x6C\x61\x62\x65\x6C\x42\x6F\x72\x64\x65\x72\x43\x6F\x6C\x6F\x72","\x6C\x61\x62\x65\x6C\x50\x61\x64\x64\x69\x6E\x67","\x69\x6E\x64\x69\x63\x61\x74\x6F\x72\x53\x68\x61\x70\x65","\x69\x6E\x64\x69\x63\x61\x74\x6F\x72\x49\x6D\x61\x67\x65","\x69\x6E\x64\x69\x63\x61\x74\x6F\x72\x43\x6F\x6C\x6F\x72","\x69\x6E\x64\x69\x63\x61\x74\x6F\x72\x53\x74\x72\x6F\x6B\x65\x43\x6F\x6C\x6F\x72","\x69\x6E\x64\x69\x63\x61\x74\x6F\x72\x47\x72\x61\x64\x69\x65\x6E\x74\x43\x6F\x6C\x6F\x72","\x69\x6E\x64\x69\x63\x61\x74\x6F\x72\x53\x70\x61\x63\x69\x6E\x67","\x69\x6E\x64\x69\x63\x61\x74\x6F\x72\x57\x69\x64\x74\x68","\x69\x6E\x64\x69\x63\x61\x74\x6F\x72\x48\x65\x69\x67\x68\x74","\x69\x6E\x64\x69\x63\x61\x74\x6F\x72\x44\x69\x72\x65\x63\x74\x69\x6F\x6E","\x73\x68\x61\x64\x6F\x77","\x73\x65\x67\x6D\x65\x6E\x74","\x65\x6E\x64\x41\x72\x72\x6F\x77","\x73\x74\x61\x72\x74\x41\x72\x72\x6F\x77","\x65\x6E\x64\x53\x69\x7A\x65","\x73\x74\x61\x72\x74\x53\x69\x7A\x65","\x73\x77\x69\x6D\x6C\x61\x6E\x65\x4C\x69\x6E\x65","\x65\x6E\x64\x46\x69\x6C\x6C","\x73\x74\x61\x72\x74\x46\x69\x6C\x6C","\x64\x61\x73\x68\x65\x64","\x64\x61\x73\x68\x50\x61\x74\x74\x65\x72\x6E","\x72\x6F\x75\x6E\x64\x65\x64","\x63\x75\x72\x76\x65\x64","\x61\x72\x63\x53\x69\x7A\x65","\x73\x6D\x6F\x6F\x74\x68","\x73\x6F\x75\x72\x63\x65\x50\x65\x72\x69\x6D\x65\x74\x65\x72\x53\x70\x61\x63\x69\x6E\x67","\x74\x61\x72\x67\x65\x74\x50\x65\x72\x69\x6D\x65\x74\x65\x72\x53\x70\x61\x63\x69\x6E\x67","\x70\x65\x72\x69\x6D\x65\x74\x65\x72\x53\x70\x61\x63\x69\x6E\x67","\x73\x70\x61\x63\x69\x6E\x67","\x73\x70\x61\x63\x69\x6E\x67\x54\x6F\x70","\x73\x70\x61\x63\x69\x6E\x67\x4C\x65\x66\x74","\x73\x70\x61\x63\x69\x6E\x67\x42\x6F\x74\x74\x6F\x6D","\x73\x70\x61\x63\x69\x6E\x67\x52\x69\x67\x68\x74","\x68\x6F\x72\x69\x7A\x6F\x6E\x74\x61\x6C","\x64\x69\x72\x65\x63\x74\x69\x6F\x6E","\x65\x6C\x62\x6F\x77","\x66\x6F\x6E\x74\x43\x6F\x6C\x6F\x72","\x66\x6F\x6E\x74\x53\x74\x79\x6C\x65","\x61\x75\x74\x6F\x73\x69\x7A\x65","\x66\x6F\x6C\x64\x61\x62\x6C\x65","\x65\x64\x69\x74\x61\x62\x6C\x65","\x62\x65\x6E\x64\x61\x62\x6C\x65","\x6D\x6F\x76\x61\x62\x6C\x65","\x72\x65\x73\x69\x7A\x61\x62\x6C\x65","\x63\x6C\x6F\x6E\x65\x61\x62\x6C\x65","\x64\x65\x6C\x65\x74\x61\x62\x6C\x65","\x65\x64\x67\x65\x53\x74\x79\x6C\x65","\x6C\x6F\x6F\x70\x53\x74\x79\x6C\x65","\x72\x6F\x75\x74\x69\x6E\x67\x43\x65\x6E\x74\x65\x72\x58","\x72\x6F\x75\x74\x69\x6E\x67\x43\x65\x6E\x74\x65\x72\x59","\x72\x65\x63\x74\x61\x6E\x67\x6C\x65","\x65\x6C\x6C\x69\x70\x73\x65","\x64\x6F\x75\x62\x6C\x65\x45\x6C\x6C\x69\x70\x73\x65","\x72\x68\x6F\x6D\x62\x75\x73","\x6C\x69\x6E\x65","\x61\x72\x72\x6F\x77","\x6C\x61\x62\x65\x6C","\x63\x79\x6C\x69\x6E\x64\x65\x72","\x73\x77\x69\x6D\x6C\x61\x6E\x65","\x63\x6F\x6E\x6E\x65\x63\x74\x6F\x72","\x61\x63\x74\x6F\x72","\x63\x6C\x6F\x75\x64","\x74\x72\x69\x61\x6E\x67\x6C\x65","\x68\x65\x78\x61\x67\x6F\x6E","\x63\x6C\x61\x73\x73\x69\x63","\x62\x6C\x6F\x63\x6B","\x6F\x76\x61\x6C","\x64\x69\x61\x6D\x6F\x6E\x64","\x64\x69\x61\x6D\x6F\x6E\x64\x54\x68\x69\x6E","\x63\x65\x6E\x74\x65\x72","\x72\x69\x67\x68\x74","\x6E\x6F\x72\x74\x68","\x73\x6F\x75\x74\x68","\x65\x61\x73\x74","\x77\x65\x73\x74","\x76\x65\x72\x74\x69\x63\x61\x6C","\x65\x6C\x62\x6F\x77\x45\x64\x67\x65\x53\x74\x79\x6C\x65","\x65\x6E\x74\x69\x74\x79\x52\x65\x6C\x61\x74\x69\x6F\x6E\x45\x64\x67\x65\x53\x74\x79\x6C\x65","\x6C\x6F\x6F\x70\x45\x64\x67\x65\x53\x74\x79\x6C\x65","\x73\x69\x64\x65\x54\x6F\x53\x69\x64\x65\x45\x64\x67\x65\x53\x74\x79\x6C\x65","\x74\x6F\x70\x54\x6F\x42\x6F\x74\x74\x6F\x6D\x45\x64\x67\x65\x53\x74\x79\x6C\x65","\x6F\x72\x74\x68\x6F\x67\x6F\x6E\x61\x6C\x45\x64\x67\x65\x53\x74\x79\x6C\x65","\x73\x65\x67\x6D\x65\x6E\x74\x45\x64\x67\x65\x53\x74\x79\x6C\x65","\x65\x6C\x6C\x69\x70\x73\x65\x50\x65\x72\x69\x6D\x65\x74\x65\x72","\x72\x65\x63\x74\x61\x6E\x67\x6C\x65\x50\x65\x72\x69\x6D\x65\x74\x65\x72","\x72\x68\x6F\x6D\x62\x75\x73\x50\x65\x72\x69\x6D\x65\x74\x65\x72","\x74\x72\x69\x61\x6E\x67\x6C\x65\x50\x65\x72\x69\x6D\x65\x74\x65\x72","\x70\x72\x6F\x70\x65\x72\x74\x69\x65\x73","\x63\x6F\x6E\x73\x75\x6D\x65\x64","\x67\x65\x74\x4E\x61\x6D\x65","\x67\x65\x74\x50\x72\x6F\x70\x65\x72\x74\x69\x65\x73","\x67\x65\x74\x50\x72\x6F\x70\x65\x72\x74\x79","\x69\x73\x43\x6F\x6E\x73\x75\x6D\x65\x64","\x63\x6F\x6E\x73\x75\x6D\x65","\x65\x76\x74","\x73\x74\x61\x74\x65","\x67\x72\x61\x70\x68\x58","\x67\x72\x61\x70\x68\x59","\x67\x65\x74\x45\x76\x65\x6E\x74","\x67\x65\x74\x53\x6F\x75\x72\x63\x65","\x69\x73\x53\x6F\x75\x72\x63\x65","\x67\x65\x74\x58","\x67\x65\x74\x43\x6C\x69\x65\x6E\x74\x58","\x67\x65\x74\x59","\x67\x65\x74\x43\x6C\x69\x65\x6E\x74\x59","\x67\x65\x74\x47\x72\x61\x70\x68\x58","\x67\x65\x74\x47\x72\x61\x70\x68\x59","\x67\x65\x74\x43\x65\x6C\x6C","\x69\x73\x50\x6F\x70\x75\x70\x54\x72\x69\x67\x67\x65\x72","\x70\x72\x65\x76\x65\x6E\x74\x44\x65\x66\x61\x75\x6C\x74","\x72\x65\x74\x75\x72\x6E\x56\x61\x6C\x75\x65","\x73\x65\x74\x45\x76\x65\x6E\x74\x53\x6F\x75\x72\x63\x65","\x65\x76\x65\x6E\x74\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x65\x76\x65\x6E\x74\x73\x45\x6E\x61\x62\x6C\x65\x64","\x65\x76\x65\x6E\x74\x53\x6F\x75\x72\x63\x65","\x67\x65\x74\x45\x76\x65\x6E\x74\x53\x6F\x75\x72\x63\x65","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72","\x66\x69\x72\x65\x45\x76\x65\x6E\x74","\x6F\x6E","\x66","\x72\x65\x6D\x6F\x76\x65\x45\x76\x65\x6E\x74\x4C\x69\x73\x74\x65\x6E\x65\x72","\x64\x65\x74\x61\x63\x68\x45\x76\x65\x6E\x74","\x6D\x6F\x75\x73\x65\x64\x6F\x77\x6E","\x6D\x6F\x75\x73\x65\x6D\x6F\x76\x65","\x6D\x6F\x75\x73\x65\x75\x70","\x49\x53\x5F\x54\x4F\x55\x43\x48","\x74\x6F\x75\x63\x68\x73\x74\x61\x72\x74","\x74\x6F\x75\x63\x68\x6D\x6F\x76\x65","\x74\x6F\x75\x63\x68\x65\x6E\x64","\x66\x69\x72\x65\x4D\x6F\x75\x73\x65\x45\x76\x65\x6E\x74","\x61\x64\x64\x47\x65\x73\x74\x75\x72\x65\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x64\x62\x6C\x63\x6C\x69\x63\x6B","\x64\x62\x6C\x43\x6C\x69\x63\x6B","\x72\x65\x6C\x65\x61\x73\x65","\x65\x76\x65\x6E\x74","\x64\x65\x74\x61\x69\x6C","\x77\x68\x65\x65\x6C\x44\x65\x6C\x74\x61","\x6D\x6F\x75\x73\x65\x77\x68\x65\x65\x6C","\x44\x4F\x4D\x4D\x6F\x75\x73\x65\x53\x63\x72\x6F\x6C\x6C","\x63\x6F\x6E\x74\x65\x78\x74\x6D\x65\x6E\x75","\x6F\x6E\x63\x6F\x6E\x74\x65\x78\x74\x6D\x65\x6E\x75","\x72\x65\x74\x75\x72\x6E\x20\x66\x61\x6C\x73\x65\x3B","\x73\x72\x63\x45\x6C\x65\x6D\x65\x6E\x74","\x74\x61\x72\x67\x65\x74","\x69\x73\x52\x69\x67\x68\x74\x4D\x6F\x75\x73\x65\x42\x75\x74\x74\x6F\x6E","\x69\x73\x53\x68\x69\x66\x74\x44\x6F\x77\x6E","\x69\x73\x43\x6F\x6E\x74\x72\x6F\x6C\x44\x6F\x77\x6E","\x73\x68\x69\x66\x74\x4B\x65\x79","\x61\x6C\x74\x4B\x65\x79","\x63\x74\x72\x6C\x4B\x65\x79","\x6D\x65\x74\x61\x4B\x65\x79","\x74\x6F\x75\x63\x68\x65\x73","\x63\x68\x61\x6E\x67\x65\x64\x54\x6F\x75\x63\x68\x65\x73","\x63\x6C\x69\x65\x6E\x74\x58","\x67\x65\x74\x4D\x61\x69\x6E\x45\x76\x65\x6E\x74","\x63\x6C\x69\x65\x6E\x74\x59","\x73\x74\x6F\x70\x50\x72\x6F\x70\x61\x67\x61\x74\x69\x6F\x6E","\x63\x61\x6E\x63\x65\x6C\x42\x75\x62\x62\x6C\x65","\x6D\x6F\x75\x73\x65\x44\x6F\x77\x6E","\x6D\x6F\x75\x73\x65\x4D\x6F\x76\x65","\x6D\x6F\x75\x73\x65\x55\x70","\x61\x63\x74\x69\x76\x61\x74\x65","\x72\x65\x73\x69\x7A\x65\x53\x74\x61\x72\x74","\x72\x65\x73\x69\x7A\x65\x45\x6E\x64","\x6D\x6F\x76\x65\x53\x74\x61\x72\x74","\x6D\x6F\x76\x65\x45\x6E\x64","\x70\x61\x6E\x53\x74\x61\x72\x74","\x70\x61\x6E","\x70\x61\x6E\x45\x6E\x64","\x6D\x69\x6E\x69\x6D\x69\x7A\x65","\x6E\x6F\x72\x6D\x61\x6C\x69\x7A\x65","\x6D\x61\x78\x69\x6D\x69\x7A\x65","\x68\x69\x64\x65","\x72\x65\x66\x72\x65\x73\x68","\x73\x69\x7A\x65","\x73\x65\x6C\x65\x63\x74","\x66\x69\x72\x65\x64","\x72\x65\x63\x65\x69\x76\x65","\x63\x6F\x6E\x6E\x65\x63\x74","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x73\x75\x73\x70\x65\x6E\x64","\x72\x65\x73\x75\x6D\x65","\x6D\x61\x72\x6B","\x73\x65\x73\x73\x69\x6F\x6E","\x72\x6F\x6F\x74","\x70\x6F\x73\x74","\x73\x61\x76\x65","\x62\x65\x66\x6F\x72\x65\x41\x64\x64\x56\x65\x72\x74\x65\x78","\x61\x64\x64\x56\x65\x72\x74\x65\x78","\x61\x66\x74\x65\x72\x41\x64\x64\x56\x65\x72\x74\x65\x78","\x64\x6F\x6E\x65","\x65\x78\x65\x63\x75\x74\x65\x64","\x73\x74\x61\x72\x74\x45\x64\x69\x74","\x65\x6E\x64\x45\x64\x69\x74","\x62\x65\x66\x6F\x72\x65\x55\x6E\x64\x6F","\x75\x6E\x64\x6F","\x72\x65\x64\x6F","\x63\x68\x61\x6E\x67\x65","\x6E\x6F\x74\x69\x66\x79","\x6C\x61\x79\x6F\x75\x74\x43\x65\x6C\x6C\x73","\x73\x63\x61\x6C\x65\x41\x6E\x64\x54\x72\x61\x6E\x73\x6C\x61\x74\x65","\x75\x70","\x64\x6F\x77\x6E","\x61\x64\x64\x43\x65\x6C\x6C\x73","\x63\x65\x6C\x6C\x73\x41\x64\x64\x65\x64","\x6D\x6F\x76\x65\x43\x65\x6C\x6C\x73","\x63\x65\x6C\x6C\x73\x4D\x6F\x76\x65\x64","\x72\x65\x73\x69\x7A\x65\x43\x65\x6C\x6C\x73","\x63\x65\x6C\x6C\x73\x52\x65\x73\x69\x7A\x65\x64","\x74\x6F\x67\x67\x6C\x65\x43\x65\x6C\x6C\x73","\x63\x65\x6C\x6C\x73\x54\x6F\x67\x67\x6C\x65\x64","\x6F\x72\x64\x65\x72\x43\x65\x6C\x6C\x73","\x63\x65\x6C\x6C\x73\x4F\x72\x64\x65\x72\x65\x64","\x72\x65\x6D\x6F\x76\x65\x43\x65\x6C\x6C\x73","\x63\x65\x6C\x6C\x73\x52\x65\x6D\x6F\x76\x65\x64","\x67\x72\x6F\x75\x70\x43\x65\x6C\x6C\x73","\x75\x6E\x67\x72\x6F\x75\x70\x43\x65\x6C\x6C\x73","\x72\x65\x6D\x6F\x76\x65\x43\x65\x6C\x6C\x73\x46\x72\x6F\x6D\x50\x61\x72\x65\x6E\x74","\x66\x6F\x6C\x64\x43\x65\x6C\x6C\x73","\x63\x65\x6C\x6C\x73\x46\x6F\x6C\x64\x65\x64","\x61\x6C\x69\x67\x6E\x43\x65\x6C\x6C\x73","\x6C\x61\x62\x65\x6C\x43\x68\x61\x6E\x67\x65\x64","\x63\x6F\x6E\x6E\x65\x63\x74\x43\x65\x6C\x6C","\x63\x65\x6C\x6C\x43\x6F\x6E\x6E\x65\x63\x74\x65\x64","\x73\x70\x6C\x69\x74\x45\x64\x67\x65","\x66\x6C\x69\x70\x45\x64\x67\x65","\x73\x74\x61\x72\x74\x45\x64\x69\x74\x69\x6E\x67","\x61\x64\x64\x4F\x76\x65\x72\x6C\x61\x79","\x72\x65\x6D\x6F\x76\x65\x4F\x76\x65\x72\x6C\x61\x79","\x75\x70\x64\x61\x74\x65\x43\x65\x6C\x6C\x53\x69\x7A\x65","\x65\x73\x63\x61\x70\x65","\x64\x6F\x75\x62\x6C\x65\x43\x6C\x69\x63\x6B","\x73\x74\x61\x72\x74","\x72\x65\x73\x65\x74","\x75\x72\x6C","\x70\x61\x72\x61\x6D\x73","\x6D\x65\x74\x68\x6F\x64","\x50\x4F\x53\x54","\x75\x73\x65\x72\x6E\x61\x6D\x65","\x70\x61\x73\x73\x77\x6F\x72\x64","\x62\x69\x6E\x61\x72\x79","\x72\x65\x71\x75\x65\x73\x74","\x69\x73\x42\x69\x6E\x61\x72\x79","\x73\x65\x74\x42\x69\x6E\x61\x72\x79","\x72\x65\x73\x70\x6F\x6E\x73\x65\x54\x65\x78\x74","\x67\x65\x74\x44\x6F\x63\x75\x6D\x65\x6E\x74\x45\x6C\x65\x6D\x65\x6E\x74","\x67\x65\x74\x58\x6D\x6C","\x72\x65\x73\x70\x6F\x6E\x73\x65\x58\x4D\x4C","\x70\x61\x72\x73\x65\x58\x6D\x6C","\x67\x65\x74\x53\x74\x61\x74\x75\x73","\x73\x74\x61\x74\x75\x73","\x58\x4D\x4C\x48\x74\x74\x70\x52\x65\x71\x75\x65\x73\x74","\x6F\x76\x65\x72\x72\x69\x64\x65\x4D\x69\x6D\x65\x54\x79\x70\x65","\x74\x65\x78\x74\x2F\x70\x6C\x61\x69\x6E\x3B\x20\x63\x68\x61\x72\x73\x65\x74\x3D\x78\x2D\x75\x73\x65\x72\x2D\x64\x65\x66\x69\x6E\x65\x64","\x4D\x69\x63\x72\x6F\x73\x6F\x66\x74\x2E\x58\x4D\x4C\x48\x54\x54\x50","\x6F\x6E\x72\x65\x61\x64\x79\x73\x74\x61\x74\x65\x63\x68\x61\x61\x6E\x67\x65","\x62\x69\x6E\x64","\x73\x65\x74\x52\x65\x71\x75\x65\x73\x74\x48\x65\x61\x64\x65\x72\x73","\x43\x6F\x6E\x74\x65\x6E\x74\x2D\x54\x79\x70\x65","\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2F\x78\x2D\x77\x77\x77\x2D\x66\x6F\x72\x6D\x2D\x75\x72\x6C\x65\x6E\x63\x6F\x64\x65\x64","\x73\x65\x74\x52\x65\x71\x75\x65\x73\x74\x48\x65\x61\x64\x65\x72","\x6F\x6E\x62\x65\x66\x6F\x72\x65\x75\x6E\x6C\x6F\x61\x64","\x66\x6F\x72\x6D","\x61\x63\x74\x69\x6F\x6E","\x26","\x73\x75\x62\x6D\x69\x74","\x63\x65\x6C\x6C\x73","\x69\x6E\x73\x65\x72\x74\x43\x6F\x75\x6E\x74","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C\x73","\x67\x65\x74\x45\x78\x70\x6F\x72\x74\x61\x62\x6C\x65\x43\x65\x6C\x6C\x73","\x63\x6C\x6F\x6E\x65\x43\x65\x6C\x6C\x73","\x67\x65\x74\x49\x6D\x70\x6F\x72\x74\x61\x62\x6C\x65\x43\x65\x6C\x6C\x73","\x53\x54\x45\x50\x53\x49\x5A\x45","\x67\x65\x74\x44\x65\x66\x61\x75\x6C\x74\x50\x61\x72\x65\x6E\x74","\x69\x6D\x70\x6F\x72\x74\x43\x65\x6C\x6C\x73","\x73\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C\x73","\x63\x6F\x6E\x74\x65\x6E\x74","\x69\x6E\x73\x74\x61\x6C\x6C\x4D\x61\x78\x69\x6D\x69\x7A\x65\x48\x61\x6E\x64\x6C\x65\x72","\x69\x6E\x73\x74\x61\x6C\x6C\x4D\x69\x6E\x69\x6D\x69\x7A\x65\x48\x61\x6E\x64\x6C\x65\x72","\x69\x6E\x73\x74\x61\x6C\x6C\x43\x6C\x6F\x73\x65\x48\x61\x6E\x64\x6C\x65\x72","\x73\x65\x74\x4D\x69\x6E\x69\x6D\x69\x7A\x61\x62\x6C\x65","\x73\x65\x74\x54\x69\x74\x6C\x65","\x69\x6E\x73\x74\x61\x6C\x6C\x4D\x6F\x76\x65\x48\x61\x6E\x64\x6C\x65\x72","\x72\x65\x70\x6C\x61\x63\x65\x43\x68\x69\x6C\x64","\x63\x6C\x6F\x73\x65\x49\x6D\x61\x67\x65","\x2F\x63\x6C\x6F\x73\x65\x2E\x67\x69\x66","\x6D\x69\x6E\x69\x6D\x69\x7A\x65\x49\x6D\x61\x67\x65","\x2F\x6D\x69\x6E\x69\x6D\x69\x7A\x65\x2E\x67\x69\x66","\x6E\x6F\x72\x6D\x61\x6C\x69\x7A\x65\x49\x6D\x61\x67\x65","\x2F\x6E\x6F\x72\x6D\x61\x6C\x69\x7A\x65\x2E\x67\x69\x66","\x6D\x61\x78\x69\x6D\x69\x7A\x65\x49\x6D\x61\x67\x65","\x2F\x6D\x61\x78\x69\x6D\x69\x7A\x65\x2E\x67\x69\x66","\x72\x65\x73\x69\x7A\x65\x49\x6D\x61\x67\x65","\x2F\x72\x65\x73\x69\x7A\x65\x2E\x67\x69\x66","\x6D\x69\x6E\x69\x6D\x75\x6D\x53\x69\x7A\x65","\x74\x69\x74\x6C\x65","\x6D\x78\x57\x69\x6E\x64\x6F\x77","\x63\x6C\x61\x73\x73\x4E\x61\x6D\x65","\x54\x69\x74\x6C\x65","\x50\x61\x6E\x65","\x63\x6F\x6E\x74\x65\x6E\x74\x57\x72\x61\x70\x70\x65\x72","\x61\x63\x74\x69\x76\x65\x57\x69\x6E\x64\x6F\x77","\x7A\x49\x6E\x64\x65\x78","\x70\x72\x65\x76\x69\x6F\x75\x73\x57\x69\x6E\x64\x6F\x77","\x66\x69\x74","\x69\x73\x52\x65\x73\x69\x7A\x61\x62\x6C\x65","\x32\x70\x78","\x6E\x77\x2D\x72\x65\x73\x69\x7A\x65","\x73\x65\x74\x53\x69\x7A\x65","\x72\x65\x6D\x6F\x76\x65\x47\x65\x73\x74\x75\x72\x65\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x67\x65\x74\x4D\x69\x6E\x69\x6D\x75\x6D\x53\x69\x7A\x65","\x4D\x69\x6E\x69\x6D\x69\x7A\x65","\x6D\x61\x72\x67\x69\x6E\x52\x69\x67\x68\x74","\x31\x70\x78","\x4E\x6F\x72\x6D\x61\x6C\x69\x7A\x65","\x4D\x61\x78\x69\x6D\x69\x7A\x65","\x6D\x61\x72\x67\x69\x6E\x4C\x65\x66\x74","\x30\x70\x78","\x73\x65\x74\x4C\x6F\x63\x61\x74\x69\x6F\x6E","\x63\x6C\x6F\x73\x65\x49\x6D\x67","\x43\x6C\x6F\x73\x65","\x69\x6E\x73\x65\x72\x74\x42\x65\x66\x6F\x72\x65","\x73\x65\x74\x49\x6D\x61\x67\x65","\x34\x70\x78","\x6D\x61\x72\x67\x69\x6E\x54\x6F\x70","\x2D\x32\x70\x78","\x67\x65\x74\x54\x61\x62\x6C\x65","\x61\x64\x64\x42\x75\x74\x74\x6F\x6E\x73","\x6F\x6B","\x4F\x4B","\x63\x61\x6E\x63\x65\x6C","\x43\x61\x6E\x63\x65\x6C","\x61\x64\x64\x54\x65\x78\x74","\x69\x6E\x70\x75\x74","\x74\x65\x78\x74","\x61\x64\x64\x46\x69\x65\x6C\x64","\x61\x64\x64\x43\x68\x65\x63\x6B\x62\x6F\x78","\x63\x68\x65\x63\x6B\x62\x6F\x78","\x63\x68\x65\x63\x6B\x65\x64","\x61\x64\x64\x54\x65\x78\x74\x61\x72\x65\x61","\x72\x6F\x77\x73","\x61\x64\x64\x43\x6F\x6D\x62\x6F","\x6D\x75\x6C\x74\x69\x70\x6C\x65","\x61\x64\x64\x4F\x70\x74\x69\x6F\x6E","\x6F\x70\x74\x69\x6F\x6E","\x73\x65\x6C\x65\x63\x74\x65\x64","\x72\x65\x73\x69\x7A\x65\x57\x69\x64\x74\x68","\x72\x65\x73\x69\x7A\x65\x48\x65\x69\x67\x68\x74","\x68\x61\x6E\x64\x6C\x69\x6E\x67\x52\x65\x73\x69\x7A\x65","\x67\x65\x74\x44\x6F\x63\x75\x6D\x65\x6E\x74\x57\x69\x64\x74\x68","\x67\x65\x74\x44\x6F\x63\x75\x6D\x65\x6E\x74\x48\x65\x69\x67\x68\x74","\x65\x6C\x65\x6D\x65\x6E\x74","\x64\x72\x6F\x70\x48\x61\x6E\x64\x6C\x65\x72","\x64\x72\x61\x67\x45\x6C\x65\x6D\x65\x6E\x74","\x70\x72\x65\x76\x69\x65\x77\x45\x6C\x65\x6D\x65\x6E\x74","\x65\x6E\x61\x62\x6C\x65\x64","\x63\x75\x72\x72\x65\x6E\x74\x47\x72\x61\x70\x68","\x63\x75\x72\x72\x65\x6E\x74\x44\x72\x6F\x70\x54\x61\x72\x67\x65\x74","\x63\x75\x72\x72\x65\x6E\x74\x50\x6F\x69\x6E\x74","\x63\x75\x72\x72\x65\x6E\x74\x47\x75\x69\x64\x65","\x63\x75\x72\x72\x65\x6E\x74\x48\x69\x67\x68\x6C\x69\x67\x68\x74","\x67\x75\x69\x64\x65\x73\x45\x6E\x61\x62\x6C\x65\x64","\x67\x72\x69\x64\x45\x6E\x61\x62\x6C\x65\x64","\x64\x72\x61\x67\x45\x6C\x65\x6D\x65\x6E\x74\x5A\x49\x6E\x64\x65\x78","\x64\x72\x61\x67\x45\x6C\x65\x6D\x65\x6E\x74\x4F\x70\x61\x63\x69\x74\x79","\x69\x73\x45\x6E\x61\x62\x6C\x65\x64","\x73\x65\x74\x45\x6E\x61\x62\x6C\x65\x64","\x69\x73\x47\x75\x69\x64\x65\x73\x45\x6E\x61\x62\x6C\x65\x64","\x69\x73\x47\x72\x69\x64\x45\x6E\x61\x62\x6C\x65\x64","\x73\x65\x74\x47\x72\x69\x64\x45\x6E\x61\x62\x6C\x65\x64","\x67\x65\x74\x43\x65\x6C\x6C\x41\x74","\x6D\x6F\x75\x73\x65\x4D\x6F\x76\x65\x48\x61\x6E\x64\x6C\x65\x72","\x73\x74\x61\x72\x74\x44\x72\x61\x67","\x6D\x6F\x75\x73\x65\x55\x70\x48\x61\x6E\x64\x6C\x65\x72","\x73\x74\x6F\x70\x44\x72\x61\x67","\x67\x72\x61\x70\x68\x43\x6F\x6E\x74\x61\x69\x6E\x73\x45\x76\x65\x6E\x74","\x64\x72\x61\x67\x45\x78\x69\x74","\x64\x72\x61\x67\x45\x6E\x74\x65\x72","\x64\x72\x61\x67\x4F\x76\x65\x72","\x64\x72\x6F\x70","\x69\x73\x4D\x6F\x75\x73\x65\x44\x6F\x77\x6E","\x67\x65\x74\x47\x75\x69\x64\x65\x53\x74\x61\x74\x65\x73","\x67\x72\x61\x70\x68\x48\x61\x6E\x64\x6C\x65\x72","\x61\x75\x74\x6F\x53\x63\x72\x6F\x6C\x6C","\x61\x75\x74\x6F\x45\x78\x74\x65\x6E\x64","\x73\x63\x72\x6F\x6C\x6C\x50\x6F\x69\x6E\x74\x54\x6F\x56\x69\x73\x69\x62\x6C\x65","\x69\x73\x44\x72\x6F\x70\x45\x6E\x61\x62\x6C\x65\x64","\x68\x69\x67\x68\x6C\x69\x67\x68\x74","\x33","\x69\x73\x47\x72\x69\x64\x45\x6E\x61\x62\x6C\x65\x64\x45\x76\x65\x6E\x74","\x69\x73\x45\x6E\x61\x62\x6C\x65\x64\x46\x6F\x72\x45\x76\x65\x6E\x74","\x67\x72\x69\x64\x53\x69\x7A\x65","\x73\x6E\x61\x70","\x70\x72\x65\x76\x69\x65\x77\x4F\x66\x66\x73\x65\x74","\x6E\x6F\x52\x65\x73\x65\x74","\x75\x70\x64\x61\x74\x65\x44\x65\x66\x61\x75\x6C\x74\x4D\x6F\x64\x65","\x61\x64\x64\x49\x74\x65\x6D","\x6D\x78\x54\x6F\x6F\x6C\x62\x61\x72\x4D\x6F\x64\x65","\x6D\x78\x54\x6F\x6F\x6C\x62\x61\x72\x49\x74\x65\x6D","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x43\x6F\x6C\x6F\x72","\x6D\x65\x6E\x75","\x63\x75\x72\x72\x65\x6E\x74\x49\x6D\x67","\x69\x73\x4D\x65\x6E\x75\x53\x68\x6F\x77\x69\x6E\x67","\x68\x69\x64\x65\x4D\x65\x6E\x75","\x66\x61\x63\x74\x6F\x72\x79\x4D\x65\x74\x68\x6F\x64","\x53\x65\x6C\x65\x63\x74\x65\x64","\x6D\x6F\x75\x73\x65\x6F\x75\x74","\x6D\x78\x54\x6F\x6F\x6C\x62\x61\x72\x43\x6F\x6D\x62\x6F\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x6D\x78\x54\x6F\x6F\x6C\x62\x61\x72\x43\x6F\x6D\x62\x6F","\x61\x64\x64\x41\x63\x74\x69\x6F\x6E\x43\x6F\x6D\x62\x6F","\x73\x65\x6C\x65\x63\x74\x65\x64\x49\x6E\x64\x65\x78","\x6F\x70\x74\x69\x6F\x6E\x73","\x66\x75\x6E\x63\x74","\x61\x64\x64\x53\x77\x69\x74\x63\x68\x4D\x6F\x64\x65","\x69\x6E\x69\x74\x69\x61\x6C\x43\x6C\x61\x73\x73\x4E\x61\x6D\x65","\x61\x6C\x74\x49\x63\x6F\x6E","\x73\x65\x6C\x65\x63\x74\x65\x64\x4D\x6F\x64\x65","\x64\x65\x66\x61\x75\x6C\x74\x4D\x6F\x64\x65","\x73\x65\x6C\x65\x63\x74\x4D\x6F\x64\x65","\x61\x64\x64\x4D\x6F\x64\x65","\x64\x65\x66\x61\x75\x6C\x74\x46\x75\x6E\x63\x74\x69\x6F\x6E","\x72\x65\x73\x65\x74\x4D\x6F\x64\x65","\x61\x64\x64\x53\x65\x70\x61\x72\x61\x74\x6F\x72","\x61\x64\x64\x42\x72\x65\x61\x6B","\x61\x64\x64\x4C\x69\x6E\x65","\x68\x72","\x36\x70\x78","\x75\x72\x6C\x49\x6E\x69\x74","\x75\x72\x6C\x50\x6F\x6C\x6C","\x75\x72\x6C\x4E\x6F\x74\x69\x66\x79","\x63\x6F\x64\x65\x63","\x6C\x6F\x6F\x6B\x75\x70","\x65\x64\x69\x74","\x63\x6F\x6E\x6E\x65\x63\x74\x65\x64","\x73\x75\x73\x70\x65\x6E\x64\x65\x64","\x3C\x65\x64\x69\x74\x3E","\x63\x68\x61\x6E\x67\x65\x73","\x75\x6E\x64\x6F\x6E\x65","\x65\x6E\x63\x6F\x64\x65\x43\x68\x61\x6E\x67\x65\x73","\x3C\x2F\x65\x64\x69\x74\x3E","\x6C\x69\x6E\x65\x66\x65\x65\x64","\x65\x73\x63\x61\x70\x65\x50\x6F\x73\x74\x44\x61\x74\x61","\x73\x69\x67\x6E\x69\x66\x69\x63\x61\x6E\x74\x52\x65\x6D\x6F\x74\x65\x43\x68\x61\x6E\x67\x65\x73","\x73\x65\x6E\x74","\x72\x65\x63\x65\x69\x76\x65\x64","\x70\x6F\x6C\x6C\x69\x6E\x67","\x70\x6F\x6C\x6C","\x73\x74\x6F\x70","\x72\x65\x61\x73\x6F\x6E","\x6D\x78\x53\x65\x73\x73\x69\x6F\x6E\x2E\x6E\x6F\x74\x69\x66\x79\x3A\x20","\x20\x78\x6D\x6C\x3D","\x3C\x6D\x65\x73\x73\x61\x67\x65\x3E\x3C\x64\x65\x6C\x74\x61\x3E","\x3C\x2F\x64\x65\x6C\x74\x61\x3E\x3C\x2F\x6D\x65\x73\x73\x61\x67\x65\x3E","\x78\x6D\x6C\x3D","\x69\x73\x56\x61\x6C\x69\x64\x52\x65\x73\x70\x6F\x6E\x73\x65","\x49\x6E\x76\x61\x6C\x69\x64\x20\x72\x65\x73\x70\x6F\x6E\x73\x65\x3A\x20","\x52\x65\x73\x70\x6F\x6E\x73\x65\x20\x6E\x6F\x74\x20\x72\x65\x61\x64\x79","\x54\x72\x61\x6E\x73\x6D\x69\x73\x73\x69\x6F\x6E\x20\x65\x72\x72\x6F\x72","\x3C\x3F\x70\x68\x70","\x6E\x61\x6D\x65\x73\x70\x61\x63\x65","\x70\x72\x65\x66\x69\x78","\x70\x72\x6F\x63\x65\x73\x73\x53\x74\x61\x74\x65","\x64\x65\x6C\x74\x61","\x70\x72\x6F\x63\x65\x73\x73\x44\x65\x6C\x74\x61","\x64\x65\x63\x6F\x64\x65","\x70\x72\x6F\x63\x65\x73\x73\x45\x64\x69\x74","\x64\x65\x63\x6F\x64\x65\x43\x68\x61\x6E\x67\x65\x73","\x63\x72\x65\x61\x74\x65\x55\x6E\x64\x6F\x61\x62\x6C\x65\x45\x64\x69\x74","\x73\x6F\x75\x72\x63\x65","\x64\x65\x63\x6F\x64\x65\x43\x68\x61\x6E\x67\x65","\x6D\x78\x52\x6F\x6F\x74\x43\x68\x61\x6E\x67\x65","\x6D\x78\x43\x68\x69\x6C\x64\x43\x68\x61\x6E\x67\x65","\x70\x61\x72\x65\x6E\x74","\x63\x65\x6C\x6C\x52\x65\x6D\x6F\x76\x65\x64","\x67\x65\x74\x49\x64","\x70\x75\x74\x4F\x62\x6A\x65\x63\x74","\x73\x69\x67\x6E\x69\x66\x69\x63\x61\x6E\x74","\x72\x65\x64\x6F\x6E\x65","\x69\x73\x45\x6D\x70\x74\x79","\x69\x73\x53\x69\x67\x6E\x69\x66\x69\x63\x61\x6E\x74","\x64\x69\x65","\x68\x69\x73\x74\x6F\x72\x79","\x69\x6E\x64\x65\x78\x4F\x66\x4E\x65\x78\x74\x41\x64\x64","\x63\x61\x6E\x55\x6E\x64\x6F","\x63\x61\x6E\x52\x65\x64\x6F","\x75\x6E\x64\x6F\x61\x62\x6C\x65\x45\x64\x69\x74\x48\x61\x70\x70\x65\x6E\x65\x64","\x73\x68\x69\x66\x74","\x64\x61\x74\x61\x3A\x69\x6D\x61\x67\x65","\x69\x73\x52\x65\x6C\x61\x74\x69\x76\x65\x55\x72\x6C","\x70\x72\x6F\x74\x6F\x63\x6F\x6C","\x2F\x2F","\x68\x6F\x73\x74","\x70\x61\x74\x68\x6E\x61\x6D\x65","\x6C\x61\x73\x74\x49\x6E\x64\x65\x78\x4F\x66","\x74\x68\x72\x65\x61\x64","\x61\x63\x74\x69\x76\x65","\x64\x79","\x64\x78","\x74\x30\x79","\x74\x30\x78","\x74\x64\x79","\x74\x64\x78","\x73\x63\x72\x6F\x6C\x6C\x62\x61\x72\x73","\x6D\x6F\x75\x73\x65\x4C\x69\x73\x74\x65\x6E\x65\x72","\x61\x64\x64\x4D\x6F\x75\x73\x65\x4C\x69\x73\x74\x65\x6E\x65\x72","\x68\x61\x73\x53\x63\x72\x6F\x6C\x6C\x62\x61\x72\x73","\x70\x61\x6E\x47\x72\x61\x70\x68","\x70\x61\x6E\x44\x78","\x70\x61\x6E\x44\x79","\x67\x65\x74\x44\x78","\x67\x65\x74\x44\x79","\x64\x65\x6C\x61\x79","\x73\x65\x74\x49\x6E\x74\x65\x72\x76\x61\x6C","\x69\x73\x41\x63\x74\x69\x76\x65","\x70\x61\x6E\x54\x6F","\x68\x61\x6E\x64\x6C\x65\x4D\x6F\x75\x73\x65\x4F\x75\x74","\x64\x61\x6D\x70\x65\x72","\x63\x6C\x65\x61\x72\x49\x6E\x74\x65\x72\x76\x61\x6C","\x73\x65\x74\x54\x72\x61\x6E\x73\x6C\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65\x4D\x6F\x75\x73\x65\x4C\x69\x73\x74\x65\x6E\x65\x72","\x73\x75\x62\x6D\x65\x6E\x75\x49\x6D\x61\x67\x65","\x2F\x73\x75\x62\x6D\x65\x6E\x75\x2E\x67\x69\x66","\x75\x73\x65\x4C\x65\x66\x74\x42\x75\x74\x74\x6F\x6E\x46\x6F\x72\x50\x6F\x70\x75\x70","\x69\x74\x65\x6D\x43\x6F\x75\x6E\x74","\x61\x75\x74\x6F\x45\x78\x70\x61\x6E\x64","\x73\x6D\x61\x72\x74\x53\x65\x70\x61\x72\x61\x74\x6F\x72\x73","\x6C\x61\x62\x65\x6C\x73","\x6D\x78\x50\x6F\x70\x75\x70\x4D\x65\x6E\x75","\x64\x69\x73\x61\x62\x6C\x65\x43\x6F\x6E\x74\x65\x78\x74\x4D\x65\x6E\x75","\x69\x73\x4C\x65\x66\x74\x4D\x6F\x75\x73\x65\x42\x75\x74\x74\x6F\x6E","\x77\x69\x6C\x6C\x41\x64\x64\x53\x65\x70\x61\x72\x61\x74\x6F\x72","\x63\x6F\x6E\x74\x61\x69\x6E\x73\x49\x74\x65\x6D\x73","\x6D\x78\x50\x6F\x70\x75\x70\x4D\x65\x6E\x75\x49\x74\x65\x6D","\x6D\x78\x50\x6F\x70\x75\x70\x4D\x65\x6E\x75\x49\x63\x6F\x6E","\x20\x64\x69\x73\x61\x62\x6C\x65\x64","\x70\x61\x64\x64\x69\x6E\x67\x52\x69\x67\x68\x74","\x74\x65\x78\x74\x41\x6C\x69\x67\x6E","\x63\x72\x65\x61\x74\x65\x53\x75\x62\x6D\x65\x6E\x75","\x65\x76\x65\x6E\x74\x52\x65\x63\x65\x69\x76\x65\x72","\x61\x63\x74\x69\x76\x65\x52\x6F\x77","\x68\x69\x64\x65\x53\x75\x62\x6D\x65\x6E\x75","\x73\x68\x6F\x77\x53\x75\x62\x6D\x65\x6E\x75","\x6D\x78\x50\x6F\x70\x75\x70\x4D\x65\x6E\x75\x49\x74\x65\x6D\x48\x6F\x76\x65\x72","\x30\x20\x30\x20\x30\x20\x30\x70\x78","\x63\x6F\x6C\x53\x70\x61\x6E","\x32","\x73\x68\x6F\x77\x4D\x65\x6E\x75","\x63\x68\x61\x6E\x67\x65\x48\x61\x6E\x64\x6C\x65\x72","\x67\x72\x61\x70\x68\x4D\x6F\x64\x65\x6C\x43\x68\x61\x6E\x67\x65\x64","\x73\x65\x74\x47\x72\x61\x70\x68","\x67\x72\x61\x70\x68","\x61\x75\x74\x6F\x53\x61\x76\x65\x44\x65\x6C\x61\x79","\x61\x75\x74\x6F\x53\x61\x76\x65\x54\x68\x72\x6F\x74\x74\x6C\x65","\x61\x75\x74\x6F\x53\x61\x76\x65\x54\x68\x72\x65\x73\x68\x6F\x6C\x64","\x69\x67\x6E\x6F\x72\x65\x64\x43\x68\x61\x6E\x67\x65\x73","\x6C\x61\x73\x74\x53\x6E\x61\x70\x73\x68\x6F\x74","\x73\x74\x61\x72\x74\x41\x6E\x69\x6D\x61\x74\x69\x6F\x6E","\x75\x70\x64\x61\x74\x65\x41\x6E\x69\x6D\x61\x74\x69\x6F\x6E","\x73\x74\x6F\x70\x41\x6E\x69\x6D\x61\x74\x69\x6F\x6E","\x73\x74\x65\x70\x73","\x65\x61\x73\x65","\x73\x74\x65\x70","\x61\x6E\x69\x6D\x61\x74\x65\x43\x65\x6C\x6C","\x67\x65\x74\x44\x65\x6C\x74\x61","\x69\x73\x56\x65\x72\x74\x65\x78","\x6D\x6F\x76\x65\x53\x74\x61\x74\x65","\x73\x74\x6F\x70\x52\x65\x63\x75\x72\x73\x69\x6F\x6E","\x67\x65\x74\x4F\x72\x69\x67\x69\x6E\x46\x6F\x72\x43\x65\x6C\x6C","\x67\x65\x74\x50\x61\x72\x65\x6E\x74","\x67\x65\x74\x43\x65\x6C\x6C\x47\x65\x6F\x6D\x65\x74\x72\x79","\x69\x6D\x61\x67\x65\x73","\x61\x6C\x74","\x70\x75\x74\x49\x6D\x61\x67\x65","\x67\x65\x74\x49\x6D\x61\x67\x65","\x66\x61\x6C\x6C\x62\x61\x63\x6B","\x69\x6E\x63\x6C\x75\x64\x65\x4F\x76\x65\x72\x6C\x61\x79\x73","\x64\x72\x61\x77\x53\x74\x61\x74\x65","\x64\x72\x61\x77\x43\x65\x6C\x6C\x53\x74\x61\x74\x65","\x76\x69\x73\x69\x74\x53\x74\x61\x74\x65\x73\x52\x65\x63\x75\x72\x73\x69\x76\x65","\x64\x72\x61\x77\x4F\x76\x65\x72\x6C\x61\x79\x73","\x70\x61\x69\x6E\x74","\x72\x65\x73\x74\x6F\x72\x65","\x6F\x76\x65\x72\x6C\x61\x79\x73","\x63\x6F\x6E\x76\x65\x72\x74\x65\x72","\x63\x72\x65\x61\x74\x65\x55\x72\x6C\x43\x6F\x6E\x76\x65\x72\x74\x65\x72","\x73\x74\x61\x74\x65\x73","\x70\x61\x74\x68","\x72\x6F\x74\x61\x74\x65\x48\x74\x6D\x6C","\x6C\x61\x73\x74\x58","\x6C\x61\x73\x74\x59","\x6D\x6F\x76\x65\x4F\x70","\x4D","\x6C\x69\x6E\x65\x4F\x70","\x4C","\x71\x75\x61\x64\x4F\x70","\x51","\x63\x75\x72\x76\x65\x4F\x70","\x43","\x63\x6C\x6F\x73\x65\x4F\x70","\x5A","\x70\x6F\x69\x6E\x74\x65\x72\x45\x76\x65\x6E\x74\x73","\x63\x72\x65\x61\x74\x65\x53\x74\x61\x74\x65","\x33\x20\x33","\x66\x6C\x61\x74","\x6D\x69\x74\x65\x72","\x23\x30\x30\x30\x30\x30\x30","\x53\x48\x41\x44\x4F\x57\x43\x4F\x4C\x4F\x52","\x53\x48\x41\x44\x4F\x57\x5F\x4F\x50\x41\x43\x49\x54\x59","\x53\x48\x41\x44\x4F\x57\x5F\x4F\x46\x46\x53\x45\x54\x5F\x58","\x53\x48\x41\x44\x4F\x57\x5F\x4F\x46\x46\x53\x45\x54\x5F\x59","\x66\x6F\x72\x6D\x61\x74","\x61\x64\x64\x4F\x70","\x72\x6F\x74\x61\x74\x65\x50\x6F\x69\x6E\x74","\x70\x6F\x70","\x73\x65\x74\x41\x6C\x70\x68\x61","\x61\x6C\x70\x68\x61","\x73\x65\x74\x46\x69\x6C\x6C\x43\x6F\x6C\x6F\x72","\x73\x65\x74\x47\x72\x61\x64\x69\x65\x6E\x74","\x66\x69\x6C\x6C\x41\x6C\x70\x68\x61","\x67\x72\x61\x64\x69\x65\x6E\x74\x41\x6C\x70\x68\x61","\x73\x65\x74\x53\x74\x72\x6F\x6B\x65\x43\x6F\x6C\x6F\x72","\x73\x65\x74\x53\x74\x72\x6F\x6B\x65\x57\x69\x64\x74\x68","\x73\x65\x74\x44\x61\x73\x68\x65\x64","\x73\x65\x74\x44\x61\x73\x68\x50\x61\x74\x74\x65\x72\x6E","\x73\x65\x74\x4C\x69\x6E\x65\x43\x61\x70","\x6C\x69\x6E\x65\x43\x61\x70","\x73\x65\x74\x4C\x69\x6E\x65\x4A\x6F\x69\x6E","\x6C\x69\x6E\x65\x4A\x6F\x69\x6E","\x73\x65\x74\x4D\x69\x74\x65\x72\x4C\x69\x6D\x69\x74","\x6D\x69\x74\x65\x72\x4C\x69\x6D\x69\x74","\x73\x65\x74\x46\x6F\x6E\x74\x43\x6F\x6C\x6F\x72","\x73\x65\x74\x46\x6F\x6E\x74\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x43\x6F\x6C\x6F\x72","\x66\x6F\x6E\x74\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x43\x6F\x6C\x6F\x72","\x73\x65\x74\x46\x6F\x6E\x74\x42\x6F\x72\x64\x65\x72\x43\x6F\x6C\x6F\x72","\x66\x6F\x6E\x74\x42\x6F\x72\x64\x65\x72\x43\x6F\x6C\x6F\x72","\x73\x65\x74\x46\x6F\x6E\x74\x53\x69\x7A\x65","\x73\x65\x74\x46\x6F\x6E\x74\x46\x61\x6D\x69\x6C\x79","\x73\x65\x74\x46\x6F\x6E\x74\x53\x74\x79\x6C\x65","\x73\x65\x74\x53\x68\x61\x64\x6F\x77","\x73\x65\x74\x53\x68\x61\x64\x6F\x77\x43\x6F\x6C\x6F\x72","\x73\x68\x61\x64\x6F\x77\x43\x6F\x6C\x6F\x72","\x73\x65\x74\x53\x68\x61\x64\x6F\x77\x41\x6C\x70\x68\x61","\x73\x68\x61\x64\x6F\x77\x41\x6C\x70\x68\x61","\x73\x65\x74\x53\x68\x61\x64\x6F\x77\x4F\x66\x66\x73\x65\x74","\x73\x68\x61\x64\x6F\x77\x44\x78","\x73\x68\x61\x64\x6F\x77\x44\x79","\x62\x65\x67\x69\x6E","\x6D\x6F\x76\x65\x54\x6F","\x6C\x69\x6E\x65\x54\x6F","\x71\x75\x61\x64\x54\x6F","\x63\x75\x72\x76\x65\x54\x6F","\x61\x72\x63\x54\x6F","\x61\x72\x63\x54\x6F\x43\x75\x72\x76\x65\x73","\x65\x6E\x64","\x77\x72\x69\x74\x65\x44\x65\x66\x61\x75\x6C\x74\x73","\x65\x78\x74\x65\x6E\x64","\x74\x65\x78\x74\x45\x6E\x61\x62\x6C\x65\x64","\x63\x6F\x6D\x70\x72\x65\x73\x73\x65\x64","\x66\x6F\x6E\x74\x66\x61\x6D\x69\x6C\x79","\x66\x61\x6D\x69\x6C\x79","\x66\x6F\x6E\x74\x73\x69\x7A\x65","\x73\x68\x61\x64\x6F\x77\x63\x6F\x6C\x6F\x72","\x73\x68\x61\x64\x6F\x77\x61\x6C\x70\x68\x61","\x73\x68\x61\x64\x6F\x77\x6F\x66\x66\x73\x65\x74","\x74\x6F\x46\x69\x78\x65\x64","\x72\x6F\x74\x61\x74\x65","\x74\x68\x65\x74\x61","\x63\x78","\x63\x79","\x66\x69\x6C\x6C\x63\x6F\x6C\x6F\x72","\x67\x72\x61\x64\x69\x65\x6E\x74","\x63\x31","\x63\x32","\x77","\x68","\x61\x6C\x70\x68\x61\x31","\x61\x6C\x70\x68\x61\x32","\x73\x74\x72\x6F\x6B\x65\x63\x6F\x6C\x6F\x72","\x73\x74\x72\x6F\x6B\x65\x77\x69\x64\x74\x68","\x64\x61\x73\x68\x70\x61\x74\x74\x65\x72\x6E","\x70\x61\x74\x74\x65\x72\x6E","\x6C\x69\x6E\x65\x63\x61\x70","\x63\x61\x70","\x6C\x69\x6E\x65\x6A\x6F\x69\x6E","\x6D\x69\x74\x65\x72\x6C\x69\x6D\x69\x74","\x6C\x69\x6D\x69\x74","\x66\x6F\x6E\x74\x63\x6F\x6C\x6F\x72","\x66\x6F\x6E\x74\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x63\x6F\x6C\x6F\x72","\x66\x6F\x6E\x74\x62\x6F\x72\x64\x65\x72\x63\x6F\x6C\x6F\x72","\x66\x6F\x6E\x74\x73\x74\x79\x6C\x65","\x72\x65\x63\x74","\x72\x6F\x75\x6E\x64\x72\x65\x63\x74","\x63\x6F\x6E\x76\x65\x72\x74","\x61\x73\x70\x65\x63\x74","\x71\x75\x61\x64","\x78\x31","\x79\x31","\x78\x32","\x79\x32","\x63\x75\x72\x76\x65","\x78\x33","\x79\x33","\x69\x73\x4E\x6F\x64\x65","\x73\x74\x72","\x77\x72\x61\x70","\x66\x69\x6C\x6C","\x63\x6C\x69\x70","\x73\x74\x72\x6F\x6B\x65","\x66\x69\x6C\x6C\x41\x6E\x64\x53\x74\x72\x6F\x6B\x65","\x66\x69\x6C\x6C\x73\x74\x72\x6F\x6B\x65","\x67\x72\x61\x64\x69\x65\x6E\x74\x73","\x64\x65\x66\x73","\x73\x74\x79\x6C\x65\x45\x6E\x61\x62\x6C\x65\x64","\x63\x72\x65\x61\x74\x65\x53\x74\x79\x6C\x65","\x6D\x61\x74\x63\x68\x48\x74\x6D\x6C\x41\x6C\x69\x67\x6E\x6D\x65\x6E\x74","\x66\x6F\x45\x6E\x61\x62\x6C\x65\x64","\x73\x74\x72\x6F\x6B\x65\x54\x6F\x6C\x65\x72\x61\x6E\x63\x65","\x72\x65\x66\x43\x6F\x75\x6E\x74","\x62\x6C\x6F\x63\x6B\x49\x6D\x61\x67\x65\x50\x6F\x69\x6E\x74\x65\x72\x45\x76\x65\x6E\x74\x73","\x73\x76\x67\x7B\x66\x6F\x6E\x74\x2D\x66\x61\x6D\x69\x6C\x79\x3A","\x3B\x66\x6F\x6E\x74\x2D\x73\x69\x7A\x65\x3A","\x3B\x66\x69\x6C\x6C\x3A\x6E\x6F\x6E\x65\x3B\x73\x74\x72\x6F\x6B\x65\x2D\x6D\x69\x74\x65\x72\x6C\x69\x6D\x69\x74\x3A\x31\x30\x7D","\x4E\x53\x5F\x53\x56\x47","\x78\x6D\x6C\x6E\x73","\x63\x72\x65\x61\x74\x65\x47\x72\x61\x64\x69\x65\x6E\x74\x49\x64","\x44\x49\x52\x45\x43\x54\x49\x4F\x4E\x5F\x53\x4F\x55\x54\x48","\x73","\x44\x49\x52\x45\x43\x54\x49\x4F\x4E\x5F\x45\x41\x53\x54","\x65","\x44\x49\x52\x45\x43\x54\x49\x4F\x4E\x5F\x4E\x4F\x52\x54\x48","\x44\x49\x52\x45\x43\x54\x49\x4F\x4E\x5F\x57\x45\x53\x54","\x6D\x78\x2D\x67\x72\x61\x64\x69\x65\x6E\x74\x2D","\x67\x65\x74\x53\x76\x67\x47\x72\x61\x64\x69\x65\x6E\x74","\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x42\x79\x49\x64","\x69\x64","\x63\x72\x65\x61\x74\x65\x53\x76\x67\x47\x72\x61\x64\x69\x65\x6E\x74","\x6C\x69\x6E\x65\x61\x72\x47\x72\x61\x64\x69\x65\x6E\x74","\x30\x25","\x3B\x73\x74\x6F\x70\x2D\x6F\x70\x61\x63\x69\x74\x79\x3A","\x6F\x66\x66\x73\x65\x74","\x73\x74\x6F\x70\x2D\x63\x6F\x6C\x6F\x72\x3A","\x61\x64\x64\x4E\x6F\x64\x65","\x64","\x75\x70\x64\x61\x74\x65\x46\x69\x6C\x6C","\x74\x72\x61\x6E\x73\x70\x61\x72\x65\x6E\x74","\x75\x70\x64\x61\x74\x65\x53\x74\x72\x6F\x6B\x65","\x63\x72\x65\x61\x74\x65\x53\x68\x61\x64\x6F\x77","\x63\x72\x65\x61\x74\x65\x54\x6F\x6C\x65\x72\x61\x6E\x63\x65","\x70\x6F\x69\x6E\x74\x65\x72\x2D\x65\x76\x65\x6E\x74\x73","\x61\x6C\x6C","\x66\x69\x6C\x6C\x2D\x6F\x70\x61\x63\x69\x74\x79","\x75\x72\x6C\x28\x23","\x73\x74\x72\x6F\x6B\x65\x2D\x6F\x70\x61\x63\x69\x74\x79","\x73\x74\x72\x6F\x6B\x65\x2D\x77\x69\x64\x74\x68","\x75\x70\x64\x61\x74\x65\x53\x74\x72\x6F\x6B\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x73\x74\x72\x6F\x6B\x65\x2D\x64\x61\x73\x68\x61\x72\x72\x61\x79","\x63\x72\x65\x61\x74\x65\x44\x61\x73\x68\x50\x61\x74\x74\x65\x72\x6E","\x73\x74\x72\x6F\x6B\x65\x2D\x6C\x69\x6E\x65\x6A\x6F\x69\x6E","\x62\x75\x74\x74","\x73\x74\x72\x6F\x6B\x65\x2D\x6C\x69\x6E\x65\x63\x61\x70","\x73\x74\x72\x6F\x6B\x65\x2D\x6D\x69\x74\x65\x72\x6C\x69\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x77\x68\x69\x74\x65","\x29\x73\x63\x61\x6C\x65\x28","\x29\x74\x72\x61\x6E\x73\x6C\x61\x74\x65\x28","\x72\x6F\x74\x61\x74\x65\x28","\x72\x6F\x74\x61\x74\x69\x6F\x6E\x43\x78","\x72\x6F\x74\x61\x74\x69\x6F\x6E\x43\x79","\x72\x78","\x72\x79","\x73\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65\x4E\x53","\x78\x6C\x69\x6E\x6B\x3A\x68\x72\x65\x66","\x70\x72\x65\x73\x65\x72\x76\x65\x41\x73\x70\x65\x63\x74\x52\x61\x74\x69\x6F","\x73\x63\x61\x6C\x65\x28","\x70\x6F\x69\x6E\x74\x65\x72\x2D\x65\x76\x65\x6E\x74\x73\x3A\x6E\x6F\x6E\x65","\x63\x72\x65\x61\x74\x65\x44\x69\x76","\x64\x69\x73\x70\x6C\x61\x79\x3A\x69\x6E\x6C\x69\x6E\x65\x2D\x62\x6C\x6F\x63\x6B\x3B\x66\x6F\x6E\x74\x2D\x73\x69\x7A\x65\x3A","\x70\x78\x3B\x66\x6F\x6E\x74\x2D\x66\x61\x6D\x69\x6C\x79\x3A","\x3B\x63\x6F\x6C\x6F\x72\x3A","\x3B\x6C\x69\x6E\x65\x2D\x68\x65\x69\x67\x68\x74\x3A","\x70\x78\x3B","\x46\x4F\x4E\x54\x5F\x42\x4F\x4C\x44","\x66\x6F\x6E\x74\x2D\x77\x65\x69\x67\x68\x74\x3A\x62\x6F\x6C\x64\x3B","\x46\x4F\x4E\x54\x5F\x49\x54\x41\x4C\x49\x43","\x66\x6F\x6E\x74\x2D\x73\x74\x79\x6C\x65\x3A\x69\x74\x61\x6C\x69\x63\x3B","\x46\x4F\x4E\x54\x5F\x55\x4E\x44\x45\x52\x4C\x49\x4E\x45","\x66\x6F\x6E\x74\x2D\x64\x65\x63\x6F\x72\x61\x74\x69\x6F\x6E\x3A\x75\x6E\x64\x65\x72\x6C\x69\x6E\x65\x3B","\x74\x65\x78\x74\x2D\x61\x6C\x69\x67\x6E\x3A\x63\x65\x6E\x74\x65\x72\x3B","\x74\x65\x78\x74\x2D\x61\x6C\x69\x67\x6E\x3A\x72\x69\x67\x68\x74\x3B","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x2D\x63\x6F\x6C\x6F\x72\x3A","\x62\x6F\x72\x64\x65\x72\x3A\x31\x70\x78\x20\x73\x6F\x6C\x69\x64\x20","\x26\x61\x6D\x70\x3B\x67\x74\x3B","\x26\x61\x6D\x70\x3B\x6C\x74\x3B","\x3C\x64\x69\x76\x20\x78\x6D\x6C\x6E\x73\x3D\x22\x68\x74\x74\x70\x3A\x2F\x2F\x77\x77\x77\x2E\x77\x33\x2E\x6F\x72\x67\x2F\x31\x39\x39\x39\x2F\x78\x68\x74\x6D\x6C\x22\x20\x73\x74\x79\x6C\x65\x3D\x22\x64\x69\x73\x70\x6C\x61\x79\x3A\x69\x6E\x6C\x69\x6E\x65\x2D\x62\x6C\x6F\x63\x6B\x3B","\x22\x3E","\x3C\x2F\x64\x69\x76\x3E","\x3C\x68\x72\x20\x2F\x3E","\x3C\x62\x72\x20\x2F\x3E","\x3C\x64\x69\x76\x20\x78\x6D\x6C\x6E\x73\x3D\x22\x68\x74\x74\x70\x3A\x2F\x2F\x77\x77\x77\x2E\x77\x33\x2E\x6F\x72\x67\x2F\x31\x39\x39\x39\x2F\x78\x68\x74\x6D\x6C\x22\x20\x73\x74\x79\x6C\x65\x3D\x22","\x68\x74\x6D\x6C","\x76\x65\x72\x74\x69\x63\x61\x6C\x2D\x61\x6C\x69\x67\x6E\x3A\x74\x6F\x70\x3B","\x6F\x76\x65\x72\x66\x6C\x6F\x77\x3A\x68\x69\x64\x64\x65\x6E\x3B","\x6D\x61\x78\x2D\x68\x65\x69\x67\x68\x74\x3A","\x77\x69\x64\x74\x68\x3A","\x77\x68\x69\x74\x65\x2D\x73\x70\x61\x63\x65\x3A\x6E\x6F\x72\x6D\x61\x6C\x3B","\x77\x68\x69\x74\x65\x2D\x73\x70\x61\x63\x65\x3A\x6E\x6F\x77\x72\x61\x70\x3B","\x66\x6F\x72\x65\x69\x67\x6E\x4F\x62\x6A\x65\x63\x74","\x70\x6C\x61\x69\x6E\x54\x65\x78\x74","\x63\x72\x65\x61\x74\x65\x43\x6C\x69\x70","\x6D\x78\x2D\x63\x6C\x69\x70\x2D","\x63\x6C\x69\x70\x50\x61\x74\x68","\x63\x6C\x69\x70\x2D\x70\x61\x74\x68","\x75\x70\x64\x61\x74\x65\x46\x6F\x6E\x74","\x74\x65\x78\x74\x2D\x61\x6E\x63\x68\x6F\x72","\x66\x6F\x6E\x74\x2D\x73\x69\x7A\x65","\x61\x64\x64\x54\x65\x78\x74\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64","\x66\x6F\x6E\x74\x2D\x66\x61\x6D\x69\x6C\x79","\x66\x6F\x6E\x74\x2D\x77\x65\x69\x67\x68\x74","\x62\x6F\x6C\x64","\x66\x6F\x6E\x74\x2D\x73\x74\x79\x6C\x65","\x69\x74\x61\x6C\x69\x63","\x74\x65\x78\x74\x2D\x64\x65\x63\x6F\x72\x61\x74\x69\x6F\x6E","\x67\x65\x74\x42\x42\x6F\x78","\x66\x6F\x6E\x74\x57\x65\x69\x67\x68\x74","\x3C\x62\x72\x2F\x3E","\x6D\x6F\x64","\x74\x72\x61\x6E\x73\x6C\x61\x74\x65\x28\x30\x2E\x35\x2C\x20\x30\x2E\x35\x29","\x6D","\x6C","\x63","\x72\x6F\x74\x61\x74\x65\x64\x48\x74\x6D\x6C\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64","\x76\x6D\x6C\x53\x63\x61\x6C\x65","\x20\x65","\x63\x6F\x6F\x72\x64\x73\x69\x7A\x65","\x73\x74\x72\x6F\x6B\x65\x77\x65\x69\x67\x68\x74","\x73\x74\x72\x6F\x6B\x65\x64","\x63\x72\x65\x61\x74\x65\x53\x74\x72\x6F\x6B\x65","\x63\x72\x65\x61\x74\x65\x46\x69\x6C\x6C","\x63\x72\x65\x61\x74\x65\x54\x72\x61\x6E\x73\x70\x61\x72\x65\x6E\x74\x46\x69\x6C\x6C","\x66\x69\x6C\x6C\x65\x64","\x3A\x66\x69\x6C\x6C","\x2F\x74\x72\x61\x6E\x73\x70\x61\x72\x65\x6E\x74\x2E\x67\x69\x66","\x74\x69\x6C\x65","\x63\x6F\x6C\x6F\x72\x32","\x66\x6C\x69\x70","\x61\x6E\x67\x6C\x65","\x4F\x46\x46\x49\x43\x45\x5F\x50\x52\x45\x46\x49\x58","\x3A\x6F\x70\x61\x63\x69\x74\x79\x32","\x3A\x73\x74\x72\x6F\x6B\x65","\x65\x6E\x64\x63\x61\x70","\x6A\x6F\x69\x6E\x73\x74\x79\x6C\x65","\x31\x30","\x64\x61\x73\x68\x73\x74\x79\x6C\x65","\x67\x65\x74\x56\x6D\x6C\x44\x61\x73\x68\x53\x74\x79\x6C\x65","\x64\x61\x73\x68","\x30\x20\x32","\x63\x72\x65\x61\x74\x65\x53\x68\x61\x64\x6F\x77\x53\x74\x72\x6F\x6B\x65","\x63\x72\x65\x61\x74\x65\x53\x68\x61\x64\x6F\x77\x46\x69\x6C\x6C","\x3A\x73\x68\x61\x70\x65","\x63\x20","\x63\x72\x65\x61\x74\x65\x52\x65\x63\x74","\x3A\x72\x65\x63\x74","\x3A\x72\x6F\x75\x6E\x64\x72\x65\x63\x74","\x61\x72\x63\x73\x69\x7A\x65","\x3A\x6F\x76\x61\x6C","\x61\x74\x6D\x6F\x73\x74","\x69\x67\x6E\x6F\x72\x65","\x66\x72\x61\x6D\x65","\x31\x38\x30","\x66\x6F\x6E\x74\x44\x65\x63\x6F\x72\x61\x74\x69\x6F\x6E","\x3A\x67\x72\x6F\x75\x70","\x72\x65\x6C\x61\x74\x69\x76\x65","\x67\x65\x74\x41\x6C\x69\x67\x6E\x6D\x65\x6E\x74\x41\x73\x50\x6F\x69\x6E\x74","\x6E\x6F\x72\x6D\x61\x6C","\x6D\x61\x78\x48\x65\x69\x67\x68\x74","\x67\x72\x6F\x75\x70","\x70\x72\x6F\x67\x69\x64\x3A\x44\x58\x49\x6D\x61\x67\x65\x54\x72\x61\x6E\x73\x66\x6F\x72\x6D\x2E\x4D\x69\x63\x72\x6F\x73\x6F\x66\x74\x2E\x4D\x61\x74\x72\x69\x78\x28\x4D\x31\x31\x3D","\x2C\x20\x4D\x31\x32\x3D","\x2C\x20\x4D\x32\x31\x3D","\x2C\x20\x4D\x32\x32\x3D","\x2C\x20\x73\x69\x7A\x69\x6E\x67\x4D\x65\x74\x68\x6F\x64\x3D\x27\x61\x75\x74\x6F\x20\x65\x78\x70\x61\x6E\x64\x27\x29","\x3A\x70\x61\x74\x68","\x74\x65\x78\x74\x70\x61\x74\x68\x6F\x6B","\x6D\x20","\x20\x6C\x20","\x3A\x74\x65\x78\x74\x70\x61\x74\x68","\x76\x2D\x74\x65\x78\x74\x2D\x61\x6C\x69\x67\x6E\x3A","\x73\x74\x72\x69\x6E\x67","\x73\x65\x74\x53\x74\x61\x74\x65\x73","\x67\x75\x69\x64\x65\x58","\x67\x75\x69\x64\x65\x59","\x67\x65\x74\x47\x75\x69\x64\x65\x54\x6F\x6C\x65\x72\x61\x6E\x63\x65","\x63\x72\x65\x61\x74\x65\x47\x75\x69\x64\x65\x53\x68\x61\x70\x65","\x69\x73\x44\x61\x73\x68\x65\x64","\x44\x49\x41\x4C\x45\x43\x54\x5F\x56\x4D\x4C","\x67\x65\x74\x4F\x76\x65\x72\x6C\x61\x79\x50\x61\x6E\x65","\x70\x6F\x69\x6E\x74\x73","\x73\x63\x72\x6F\x6C\x6C\x57\x69\x64\x74\x68","\x64\x65\x73\x63","\x70\x61\x72\x73\x65\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E","\x70\x61\x72\x73\x65\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74\x73","\x64\x65\x66\x61\x75\x6C\x74\x4C\x6F\x63\x61\x6C\x69\x7A\x65\x64","\x63\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74\x73","\x77\x30","\x68\x30","\x62\x67\x4E\x6F\x64\x65","\x66\x67\x4E\x6F\x64\x65","\x66\x6F\x72\x65\x67\x72\x6F\x75\x6E\x64","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64","\x76\x61\x72\x69\x61\x62\x6C\x65","\x63\x6F\x6E\x6E\x65\x63\x74\x69\x6F\x6E\x73","\x67\x65\x74\x43\x68\x69\x6C\x64\x4E\x6F\x64\x65\x73","\x70\x61\x72\x73\x65\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74","\x65\x76\x61\x6C\x75\x61\x74\x65\x54\x65\x78\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x65\x76\x61\x6C\x75\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x6C\x6F\x63\x61\x6C\x69\x7A\x65\x64","\x65\x76\x61\x6C","\x64\x72\x61\x77\x53\x68\x61\x70\x65","\x64\x72\x61\x77\x43\x68\x69\x6C\x64\x72\x65\x6E","\x63\x6F\x6D\x70\x75\x74\x65\x41\x73\x70\x65\x63\x74","\x69\x6E\x68\x65\x72\x69\x74","\x67\x65\x74\x4E\x75\x6D\x62\x65\x72","\x64\x72\x61\x77\x4E\x6F\x64\x65","\x66\x69\x78\x65\x64","\x61\x72\x63","\x78\x2D\x61\x78\x69\x73\x2D\x72\x6F\x74\x61\x74\x69\x6F\x6E","\x6C\x61\x72\x67\x65\x2D\x61\x72\x63\x2D\x66\x6C\x61\x67","\x73\x77\x65\x65\x70\x2D\x66\x6C\x61\x67","\x52\x45\x43\x54\x41\x4E\x47\x4C\x45\x5F\x52\x4F\x55\x4E\x44\x49\x4E\x47\x5F\x46\x41\x43\x54\x4F\x52","\x61\x6C\x69\x67\x6E\x2D\x73\x68\x61\x70\x65","\x69\x6E\x63\x6C\x75\x64\x65\x2D\x73\x68\x61\x70\x65","\x67\x65\x74\x53\x74\x65\x6E\x63\x69\x6C","\x73\x74\x65\x6E\x63\x69\x6C","\x62\x6F\x75\x6E\x64\x73","\x62\x6F\x75\x6E\x64\x69\x6E\x67\x42\x6F\x78","\x73\x76\x67\x53\x74\x72\x6F\x6B\x65\x54\x6F\x6C\x65\x72\x61\x6E\x63\x65","\x73\x74\x65\x6E\x63\x69\x6C\x50\x6F\x69\x6E\x74\x65\x72\x45\x76\x65\x6E\x74\x73","\x69\x73\x50\x61\x72\x73\x65\x56\x6D\x6C","\x69\x73\x48\x74\x6D\x6C\x41\x6C\x6C\x6F\x77\x65\x64","\x67\x65\x74\x53\x76\x67\x53\x63\x72\x65\x65\x6E\x4F\x66\x66\x73\x65\x74","\x63\x72\x65\x61\x74\x65\x53\x76\x67","\x63\x72\x65\x61\x74\x65\x48\x74\x6D\x6C","\x63\x72\x65\x61\x74\x65\x56\x6D\x6C","\x72\x65\x63\x6F\x6E\x66\x69\x67\x75\x72\x65","\x75\x70\x64\x61\x74\x65\x42\x6F\x75\x6E\x64\x73\x46\x72\x6F\x6D\x50\x6F\x69\x6E\x74\x73","\x63\x68\x65\x63\x6B\x42\x6F\x75\x6E\x64\x73","\x72\x65\x64\x72\x61\x77\x48\x74\x6D\x6C\x53\x68\x61\x70\x65","\x72\x65\x64\x72\x61\x77\x53\x68\x61\x70\x65","\x75\x70\x64\x61\x74\x65\x42\x6F\x75\x6E\x64\x69\x6E\x67\x42\x6F\x78","\x63\x72\x65\x61\x74\x65\x56\x6D\x6C\x47\x72\x6F\x75\x70","\x63\x72\x65\x61\x74\x65\x43\x61\x6E\x76\x61\x73","\x68\x61\x73\x43\x68\x69\x6C\x64\x4E\x6F\x64\x65\x73","\x6C\x61\x73\x74\x43\x68\x69\x6C\x64","\x62\x65\x66\x6F\x72\x65\x65\x6E\x64","\x69\x6E\x73\x65\x72\x74\x41\x64\x6A\x61\x63\x65\x6E\x74\x48\x54\x4D\x4C","\x61\x64\x64\x54\x72\x61\x6E\x73\x70\x61\x72\x65\x6E\x74\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x46\x69\x6C\x74\x65\x72","\x64\x65\x73\x74\x72\x6F\x79\x43\x61\x6E\x76\x61\x73","\x75\x70\x64\x61\x74\x65\x56\x6D\x6C\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x6D\x78\x52\x65\x66\x43\x6F\x75\x6E\x74","\x6F\x6C\x64\x47\x72\x61\x64\x69\x65\x6E\x74\x73","\x72\x65\x6C\x65\x61\x73\x65\x53\x76\x67\x47\x72\x61\x64\x69\x65\x6E\x74\x73","\x69\x73\x50\x61\x69\x6E\x74\x42\x6F\x75\x6E\x64\x73\x49\x6E\x76\x65\x72\x74\x65\x64","\x75\x70\x64\x61\x74\x65\x54\x72\x61\x6E\x73\x66\x6F\x72\x6D","\x63\x6F\x6E\x66\x69\x67\x75\x72\x65\x43\x61\x6E\x76\x61\x73","\x70\x61\x69\x6E\x74\x53\x74\x65\x6E\x63\x69\x6C\x53\x68\x61\x70\x65","\x70\x61\x69\x6E\x74\x45\x64\x67\x65\x53\x68\x61\x70\x65","\x70\x61\x69\x6E\x74\x56\x65\x72\x74\x65\x78\x53\x68\x61\x70\x65","\x69\x73\x53\x68\x61\x64\x6F\x77","\x67\x65\x74\x47\x72\x61\x64\x69\x65\x6E\x74\x42\x6F\x75\x6E\x64\x73","\x67\x65\x74\x53\x68\x61\x70\x65\x52\x6F\x74\x61\x74\x69\x6F\x6E","\x61\x64\x64\x54\x72\x61\x6E\x73\x70\x61\x72\x65\x6E\x74\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x52\x65\x63\x74\x61\x6E\x67\x6C\x65","\x73\x65\x74\x54\x72\x61\x6E\x73\x70\x61\x72\x65\x6E\x74\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x49\x6D\x61\x67\x65","\x70\x61\x69\x6E\x74\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64","\x70\x61\x69\x6E\x74\x46\x6F\x72\x65\x67\x72\x6F\x75\x6E\x64","\x67\x65\x74\x41\x72\x63\x53\x69\x7A\x65","\x70\x61\x69\x6E\x74\x47\x6C\x61\x73\x73\x45\x66\x66\x65\x63\x74","\x23\x66\x66\x66\x66\x66\x66","\x69\x73\x52\x6F\x75\x6E\x64\x65\x64","\x73\x74\x65\x6E\x63\x69\x6C\x46\x6C\x69\x70\x48","\x73\x74\x65\x6E\x63\x69\x6C\x46\x6C\x69\x70\x56","\x73\x65\x74\x43\x75\x72\x73\x6F\x72","\x67\x65\x74\x43\x75\x72\x73\x6F\x72","\x63\x72\x65\x61\x74\x65\x42\x6F\x75\x6E\x64\x69\x6E\x67\x42\x6F\x78","\x61\x75\x67\x6D\x65\x6E\x74\x42\x6F\x75\x6E\x64\x69\x6E\x67\x42\x6F\x78","\x67\x65\x74\x42\x6F\x75\x6E\x64\x69\x6E\x67\x42\x6F\x78","\x67\x65\x74\x52\x6F\x74\x61\x74\x69\x6F\x6E","\x67\x65\x74\x54\x65\x78\x74\x52\x6F\x74\x61\x74\x69\x6F\x6E","\x76\x65\x72\x74\x69\x63\x61\x6C\x54\x65\x78\x74\x52\x6F\x74\x61\x74\x69\x6F\x6E","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x49\x6D\x61\x67\x65","\x75\x72\x6C\x28\x27","\x2F\x74\x72\x61\x6E\x73\x70\x61\x72\x65\x6E\x74\x2E\x67\x69\x66\x27\x29","\x73\x74\x65\x6E\x63\x69\x6C\x73","\x6D\x61\x72\x6B\x65\x72\x73","\x41\x52\x52\x4F\x57\x5F\x43\x4C\x41\x53\x53\x49\x43","\x41\x52\x52\x4F\x57\x5F\x44\x49\x41\x4D\x4F\x4E\x44","\x61\x64\x64\x4D\x61\x72\x6B\x65\x72","\x72\x65\x64\x72\x61\x77\x50\x61\x74\x68","\x75\x70\x64\x61\x74\x65\x48\x74\x6D\x6C\x42\x6F\x75\x6E\x64\x73","\x75\x70\x64\x61\x74\x65\x48\x74\x6D\x6C\x46\x69\x6C\x74\x65\x72\x73","\x75\x70\x64\x61\x74\x65\x48\x74\x6D\x6C\x43\x6F\x6C\x6F\x72\x73","\x62\x6F\x72\x64\x65\x72\x57\x69\x64\x74\x68","\x62\x6F\x72\x64\x65\x72\x43\x6F\x6C\x6F\x72","\x73\x6F\x6C\x69\x64","\x70\x72\x6F\x67\x69\x64\x3A\x44\x58\x49\x6D\x61\x67\x65\x54\x72\x61\x6E\x73\x66\x6F\x72\x6D\x2E\x4D\x69\x63\x72\x6F\x73\x6F\x66\x74\x2E\x64\x72\x6F\x70\x53\x68\x61\x64\x6F\x77\x20\x28\x4F\x66\x66\x58\x3D\x27","\x27\x2C\x20\x4F\x66\x66\x59\x3D\x27","\x27\x2C\x20\x43\x6F\x6C\x6F\x72\x3D\x27","\x27\x29","\x70\x72\x6F\x67\x69\x64\x3A\x44\x58\x49\x6D\x61\x67\x65\x54\x72\x61\x6E\x73\x66\x6F\x72\x6D\x2E\x4D\x69\x63\x72\x6F\x73\x6F\x66\x74\x2E\x67\x72\x61\x64\x69\x65\x6E\x74\x28\x73\x74\x61\x72\x74\x43\x6F\x6C\x6F\x72\x53\x74\x72\x3D\x27","\x27\x2C\x20\x65\x6E\x64\x43\x6F\x6C\x6F\x72\x53\x74\x72\x3D\x27","\x27\x2C\x20\x67\x72\x61\x64\x69\x65\x6E\x74\x54\x79\x70\x65\x3D\x27","\x70\x61\x69\x6E\x74\x4C\x69\x6E\x65","\x61\x72\x72\x6F\x77\x57\x69\x64\x74\x68","\x41\x52\x52\x4F\x57\x5F\x57\x49\x44\x54\x48","\x41\x52\x52\x4F\x57\x5F\x53\x50\x41\x43\x49\x4E\x47","\x41\x52\x52\x4F\x57\x5F\x53\x49\x5A\x45","\x44\x45\x46\x41\x55\x4C\x54\x5F\x46\x4F\x4E\x54\x53\x54\x59\x4C\x45","\x63\x6C\x69\x70\x70\x65\x64","\x62\x61\x73\x65\x53\x70\x61\x63\x69\x6E\x67\x54\x6F\x70","\x62\x61\x73\x65\x53\x70\x61\x63\x69\x6E\x67\x42\x6F\x74\x74\x6F\x6D","\x62\x61\x73\x65\x53\x70\x61\x63\x69\x6E\x67\x4C\x65\x66\x74","\x62\x61\x73\x65\x53\x70\x61\x63\x69\x6E\x67\x52\x69\x67\x68\x74","\x72\x65\x70\x6C\x61\x63\x65\x4C\x69\x6E\x65\x66\x65\x65\x64\x73","\x69\x67\x6E\x6F\x72\x65\x43\x6C\x69\x70\x70\x65\x64\x53\x74\x72\x69\x6E\x67\x53\x69\x7A\x65","\x69\x67\x6E\x6F\x72\x65\x53\x74\x72\x69\x6E\x67\x53\x69\x7A\x65","\x74\x65\x78\x74\x44\x69\x76","\x75\x70\x64\x61\x74\x65\x53\x69\x7A\x65","\x6D\x61\x72\x67\x69\x6E","\x44\x49\x41\x4C\x45\x43\x54\x5F\x53\x54\x52\x49\x43\x54\x48\x54\x4D\x4C","\x75\x70\x64\x61\x74\x65\x56\x61\x6C\x75\x65","\x75\x70\x64\x61\x74\x65\x48\x74\x6D\x6C\x54\x72\x61\x6E\x73\x66\x6F\x72\x6D","\x75\x70\x64\x61\x74\x65\x48\x74\x6D\x6C\x46\x69\x6C\x74\x65\x72","\x54\x72\x61\x6E\x73\x66\x6F\x72\x6D\x4F\x72\x69\x67\x69\x6E","\x25\x20","\x54\x72\x61\x6E\x73\x66\x6F\x72\x6D","\x25\x2C","\x25\x29\x73\x63\x61\x6C\x65\x28","\x29\x20\x72\x6F\x74\x61\x74\x65\x28","\x64\x65\x67\x29","\x30\x25\x20\x30\x25","\x25\x29","\x31\x70\x78\x20\x73\x6F\x6C\x69\x64\x20","\x3C\x64\x69\x76\x20\x73\x74\x79\x6C\x65\x3D\x22\x7A\x6F\x6F\x6D\x3A\x31\x3B","\x64\x69\x73\x70\x6C\x61\x79\x3A\x69\x6E\x6C\x69\x6E\x65\x2D\x62\x6C\x6F\x63\x6B\x3B\x5F\x64\x69\x73\x70\x6C\x61\x79\x3A\x69\x6E\x6C\x69\x6E\x65\x3B\x70\x61\x64\x64\x69\x6E\x67\x2D\x62\x6F\x74\x74\x6F\x6D\x3A\x31\x70\x78\x3B\x70\x61\x64\x64\x69\x6E\x67\x2D\x72\x69\x67\x68\x74\x3A\x31\x70\x78\x3B\x6C\x69\x6E\x65\x2D\x68\x65\x69\x67\x68\x74\x3A","\x75\x70\x64\x61\x74\x65\x4D\x61\x72\x67\x69\x6E","\x67\x65\x74\x53\x70\x61\x63\x69\x6E\x67","\x70\x72\x65\x73\x65\x72\x76\x65\x49\x6D\x61\x67\x65\x41\x73\x70\x65\x63\x74","\x69\x6D\x61\x67\x65\x46\x6C\x69\x70\x48","\x69\x6D\x61\x67\x65\x46\x6C\x69\x70\x56","\x70\x72\x6F\x67\x69\x64\x3A\x44\x58\x49\x6D\x61\x67\x65\x54\x72\x61\x6E\x73\x66\x6F\x72\x6D\x2E\x4D\x69\x63\x72\x6F\x73\x6F\x66\x74\x2E\x42\x61\x73\x69\x63\x49\x6D\x61\x67\x65\x28\x72\x6F\x74\x61\x74\x69\x6F\x6E\x3D\x32\x29","\x70\x72\x6F\x67\x69\x64\x3A\x44\x58\x49\x6D\x61\x67\x65\x54\x72\x61\x6E\x73\x66\x6F\x72\x6D\x2E\x4D\x69\x63\x72\x6F\x73\x6F\x66\x74\x2E\x42\x61\x73\x69\x63\x49\x6D\x61\x67\x65\x28\x6D\x69\x72\x72\x6F\x72\x3D\x31\x29","\x70\x72\x6F\x67\x69\x64\x3A\x44\x58\x49\x6D\x61\x67\x65\x54\x72\x61\x6E\x73\x66\x6F\x72\x6D\x2E\x4D\x69\x63\x72\x6F\x73\x6F\x66\x74\x2E\x42\x61\x73\x69\x63\x49\x6D\x61\x67\x65\x28\x72\x6F\x74\x61\x74\x69\x6F\x6E\x3D\x32\x2C\x20\x6D\x69\x72\x72\x6F\x72\x3D\x31\x29","\x69\x6D\x61\x67\x65\x53\x69\x7A\x65","\x44\x45\x46\x41\x55\x4C\x54\x5F\x49\x4D\x41\x47\x45\x53\x49\x5A\x45","\x69\x6E\x64\x69\x63\x61\x74\x6F\x72\x53\x69\x7A\x65","\x69\x6E\x64\x69\x63\x61\x74\x6F\x72","\x70\x61\x69\x6E\x74\x49\x6D\x61\x67\x65","\x70\x61\x69\x6E\x74\x49\x6E\x64\x69\x63\x61\x74\x6F\x72","\x67\x65\x74\x49\x6D\x61\x67\x65\x42\x6F\x75\x6E\x64\x73","\x41\x4C\x49\x47\x4E\x5F\x54\x4F\x50","\x67\x65\x74\x49\x6E\x64\x69\x63\x61\x74\x6F\x72\x42\x6F\x75\x6E\x64\x73","\x63\x72\x65\x61\x74\x65\x4D\x61\x72\x6B\x65\x72","\x53\x54\x59\x4C\x45\x5F\x43\x55\x52\x56\x45\x44","\x70\x61\x69\x6E\x74\x43\x75\x72\x76\x65\x64\x4C\x69\x6E\x65","\x53\x54\x59\x4C\x45\x5F\x53\x54\x41\x52\x54\x53\x49\x5A\x45","\x53\x54\x59\x4C\x45\x5F\x45\x4E\x44\x53\x49\x5A\x45","\x53\x54\x59\x4C\x45\x5F\x53\x54\x41\x52\x54\x41\x52\x52\x4F\x57","\x53\x54\x59\x4C\x45\x5F\x45\x4E\x44\x41\x52\x52\x4F\x57","\x53\x54\x59\x4C\x45\x5F\x53\x54\x41\x52\x54\x46\x49\x4C\x4C","\x53\x54\x59\x4C\x45\x5F\x45\x4E\x44\x46\x49\x4C\x4C","\x70\x61\x69\x6E\x74\x52\x6F\x75\x6E\x64\x65\x64\x53\x77\x69\x6D\x6C\x61\x6E\x65","\x70\x61\x69\x6E\x74\x53\x77\x69\x6D\x6C\x61\x6E\x65","\x70\x61\x69\x6E\x74\x53\x65\x70\x61\x72\x61\x74\x6F\x72","\x75\x73\x65\x42\x6F\x75\x6E\x64\x69\x6E\x67\x42\x6F\x78","\x6D\x6F\x76\x65\x43\x65\x6C\x6C","\x67\x65\x74\x47\x72\x61\x70\x68","\x67\x65\x74\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74","\x67\x65\x74\x43\x65\x6C\x6C\x53\x74\x79\x6C\x65","\x74\x72\x61\x76\x65\x72\x73\x65","\x67\x65\x74\x45\x64\x67\x65\x43\x6F\x75\x6E\x74","\x67\x65\x74\x45\x64\x67\x65\x41\x74","\x67\x65\x74\x54\x65\x72\x6D\x69\x6E\x61\x6C","\x67\x65\x74\x56\x69\x73\x69\x62\x6C\x65\x54\x65\x72\x6D\x69\x6E\x61\x6C","\x69\x73\x56\x65\x72\x74\x65\x78\x4D\x6F\x76\x61\x62\x6C\x65","\x69\x73\x43\x65\x6C\x6C\x4D\x6F\x76\x61\x62\x6C\x65","\x69\x73\x56\x65\x72\x74\x65\x78\x49\x67\x6E\x6F\x72\x65\x64","\x69\x73\x43\x65\x6C\x6C\x56\x69\x73\x69\x62\x6C\x65","\x69\x73\x45\x64\x67\x65\x49\x67\x6E\x6F\x72\x65\x64","\x73\x65\x74\x45\x64\x67\x65\x53\x74\x79\x6C\x65\x45\x6E\x61\x62\x6C\x65\x64","\x73\x65\x74\x43\x65\x6C\x6C\x53\x74\x79\x6C\x65\x73","\x73\x65\x74\x4F\x72\x74\x68\x6F\x67\x6F\x6E\x61\x6C\x45\x64\x67\x65","\x67\x65\x74\x50\x61\x72\x65\x6E\x74\x4F\x66\x66\x73\x65\x74","\x69\x73\x41\x6E\x63\x65\x73\x74\x6F\x72","\x67\x65\x74\x47\x65\x6F\x6D\x65\x74\x72\x79","\x73\x65\x74\x45\x64\x67\x65\x50\x6F\x69\x6E\x74\x73","\x73\x65\x74\x52\x65\x6C\x61\x74\x69\x76\x65","\x73\x65\x74\x47\x65\x6F\x6D\x65\x74\x72\x79","\x73\x65\x74\x56\x65\x72\x74\x65\x78\x4C\x6F\x63\x61\x74\x69\x6F\x6E","\x67\x65\x74\x56\x65\x72\x74\x65\x78\x42\x6F\x75\x6E\x64\x73","\x61\x72\x72\x61\x6E\x67\x65\x47\x72\x6F\x75\x70\x73","\x67\x65\x74\x43\x68\x69\x6C\x64\x56\x65\x72\x74\x69\x63\x65\x73","\x67\x65\x74\x42\x6F\x75\x6E\x64\x69\x6E\x67\x42\x6F\x78\x46\x72\x6F\x6D\x47\x65\x6F\x6D\x65\x74\x72\x79","\x69\x73\x53\x77\x69\x6D\x6C\x61\x6E\x65","\x67\x65\x74\x53\x74\x61\x72\x74\x53\x69\x7A\x65","\x78\x30","\x79\x30","\x6B\x65\x65\x70\x46\x69\x72\x73\x74\x4C\x6F\x63\x61\x74\x69\x6F\x6E","\x72\x65\x73\x69\x7A\x65\x50\x61\x72\x65\x6E\x74","\x72\x65\x73\x69\x7A\x65\x4C\x61\x73\x74","\x69\x73\x48\x6F\x72\x69\x7A\x6F\x6E\x74\x61\x6C","\x67\x65\x74\x49\x6E\x64\x65\x78","\x67\x65\x74\x50\x61\x72\x65\x6E\x74\x53\x69\x7A\x65","\x69\x73\x4C\x61\x79\x65\x72","\x63\x75\x72\x72\x65\x6E\x74\x52\x6F\x6F\x74","\x69\x73\x43\x65\x6C\x6C\x43\x6F\x6C\x6C\x61\x70\x73\x65\x64","\x72\x65\x73\x69\x7A\x65\x56\x65\x72\x74\x69\x63\x65\x73","\x69\x6E\x76\x65\x72\x74","\x67\x72\x6F\x75\x70\x50\x61\x64\x64\x69\x6E\x67","\x70\x61\x72\x65\x6E\x74\x73\x43\x68\x61\x6E\x67\x65\x64","\x6D\x6F\x76\x65\x54\x72\x65\x65","\x6C\x65\x76\x65\x6C\x44\x69\x73\x74\x61\x6E\x63\x65","\x6E\x6F\x64\x65\x44\x69\x73\x74\x61\x6E\x63\x65","\x72\x65\x73\x65\x74\x45\x64\x67\x65\x73","\x70\x72\x65\x66\x48\x6F\x7A\x45\x64\x67\x65\x53\x65\x70","\x70\x72\x65\x66\x56\x65\x72\x74\x45\x64\x67\x65\x4F\x66\x66","\x6D\x69\x6E\x45\x64\x67\x65\x4A\x65\x74\x74\x79","\x63\x68\x61\x6E\x6E\x65\x6C\x42\x75\x66\x66\x65\x72","\x65\x64\x67\x65\x52\x6F\x75\x74\x69\x6E\x67","\x67\x65\x74\x43\x6F\x6E\x6E\x65\x63\x74\x69\x6F\x6E\x73","\x66\x69\x6E\x64\x54\x72\x65\x65\x52\x6F\x6F\x74\x73","\x64\x66\x73","\x6C\x61\x79\x6F\x75\x74","\x68\x6F\x72\x69\x7A\x6F\x6E\x74\x61\x6C\x4C\x61\x79\x6F\x75\x74","\x76\x65\x72\x74\x69\x63\x61\x6C\x4C\x61\x79\x6F\x75\x74","\x6D\x6F\x76\x65\x4E\x6F\x64\x65","\x61\x64\x6A\x75\x73\x74\x50\x61\x72\x65\x6E\x74\x73","\x6C\x6F\x63\x61\x6C\x45\x64\x67\x65\x50\x72\x6F\x63\x65\x73\x73\x69\x6E\x67","\x6E\x65\x78\x74","\x63\x72\x65\x61\x74\x65\x4E\x6F\x64\x65","\x61\x74\x74\x61\x63\x68\x50\x61\x72\x65\x6E\x74","\x6C\x61\x79\x6F\x75\x74\x4C\x65\x61\x66","\x6F\x66\x66\x73\x65\x74\x58","\x6F\x66\x66\x73\x65\x74\x59","\x75\x70\x70\x65\x72\x48\x65\x61\x64","\x63\x6F\x6E\x74\x6F\x75\x72","\x63\x72\x65\x61\x74\x65\x4C\x69\x6E\x65","\x6C\x6F\x77\x65\x72\x48\x65\x61\x64","\x75\x70\x70\x65\x72\x54\x61\x69\x6C","\x6C\x6F\x77\x65\x72\x54\x61\x69\x6C","\x6D\x65\x72\x67\x65","\x62\x72\x69\x64\x67\x65","\x73\x6F\x72\x74\x43\x65\x6C\x6C\x73","\x70\x72\x6F\x63\x65\x73\x73\x4E\x6F\x64\x65\x4F\x75\x74\x67\x6F\x69\x6E\x67","\x67\x65\x74\x45\x64\x67\x65\x73\x42\x65\x74\x77\x65\x65\x6E","\x77\x65\x69\x67\x68\x74\x65\x64\x56\x61\x6C\x75\x65","\x6E\x75\x64\x67\x65","\x76\x69\x73\x69\x74\x65\x64","\x72\x61\x6E\x6B\x49\x6E\x64\x65\x78","\x75\x73\x65\x49\x6E\x70\x75\x74\x4F\x72\x69\x67\x69\x6E","\x64\x69\x73\x61\x62\x6C\x65\x45\x64\x67\x65\x53\x74\x79\x6C\x65","\x66\x6F\x72\x63\x65\x43\x6F\x6E\x73\x74\x61\x6E\x74","\x66\x6F\x72\x63\x65\x43\x6F\x6E\x73\x74\x61\x6E\x74\x53\x71\x75\x61\x72\x65\x64","\x6D\x69\x6E\x44\x69\x73\x74\x61\x6E\x63\x65\x4C\x69\x6D\x69\x74","\x6D\x61\x78\x44\x69\x73\x74\x61\x6E\x63\x65\x4C\x69\x6D\x69\x74","\x6D\x69\x6E\x44\x69\x73\x74\x61\x6E\x63\x65\x4C\x69\x6D\x69\x74\x53\x71\x75\x61\x72\x65\x64","\x69\x6E\x69\x74\x69\x61\x6C\x54\x65\x6D\x70","\x74\x65\x6D\x70\x65\x72\x61\x74\x75\x72\x65","\x6D\x61\x78\x49\x74\x65\x72\x61\x74\x69\x6F\x6E\x73","\x69\x74\x65\x72\x61\x74\x69\x6F\x6E","\x61\x6C\x6C\x6F\x77\x65\x64\x54\x6F\x52\x75\x6E","\x76\x65\x72\x74\x65\x78\x41\x72\x72\x61\x79","\x67\x65\x74\x42\x6F\x75\x6E\x64\x73","\x69\x6E\x64\x69\x63\x65\x73","\x64\x69\x73\x70\x58","\x64\x69\x73\x70\x59","\x63\x65\x6C\x6C\x4C\x6F\x63\x61\x74\x69\x6F\x6E","\x69\x73\x4D\x6F\x76\x65\x61\x62\x6C\x65","\x6E\x65\x69\x67\x68\x62\x6F\x75\x72\x73","\x72\x61\x64\x69\x75\x73","\x72\x61\x64\x69\x75\x73\x53\x71\x75\x61\x72\x65\x64","\x67\x65\x74\x4F\x70\x70\x6F\x73\x69\x74\x65\x73","\x72\x65\x73\x65\x74\x45\x64\x67\x65","\x63\x61\x6C\x63\x52\x65\x70\x75\x6C\x73\x69\x6F\x6E","\x63\x61\x6C\x63\x41\x74\x74\x72\x61\x63\x74\x69\x6F\x6E","\x63\x61\x6C\x63\x50\x6F\x73\x69\x74\x69\x6F\x6E\x73","\x72\x65\x64\x75\x63\x65\x54\x65\x6D\x70\x65\x72\x61\x74\x75\x72\x65","\x72\x61\x6E\x64\x6F\x6D","\x6D\x6F\x76\x65\x43\x69\x72\x63\x6C\x65","\x67\x65\x74\x52\x61\x64\x69\x75\x73","\x63\x69\x72\x63\x6C\x65","\x66\x69\x6E\x64\x50\x61\x72\x61\x6C\x6C\x65\x6C\x73","\x67\x65\x74\x45\x64\x67\x65\x49\x64","\x72\x6F\x75\x74\x65","\x6C\x61\x79\x6F\x75\x74\x73","\x6D\x61\x73\x74\x65\x72","\x70\x6C\x61\x63\x65\x4C\x61\x62\x65\x6C\x73","\x61\x76\x6F\x69\x64","\x69\x6E\x74\x65\x72\x73\x65\x63\x74\x73","\x74\x65\x6D\x70","\x6D\x61\x78\x52\x61\x6E\x6B","\x6D\x69\x6E\x52\x61\x6E\x6B","\x6E\x65\x78\x74\x4C\x61\x79\x65\x72\x43\x6F\x6E\x6E\x65\x63\x74\x65\x64\x43\x65\x6C\x6C\x73","\x70\x72\x65\x76\x69\x6F\x75\x73\x4C\x61\x79\x65\x72\x43\x6F\x6E\x6E\x65\x63\x74\x65\x64\x43\x65\x6C\x6C\x73","\x67\x65\x74\x4E\x65\x78\x74\x4C\x61\x79\x65\x72\x43\x6F\x6E\x6E\x65\x63\x74\x65\x64\x43\x65\x6C\x6C\x73","\x67\x65\x74\x50\x72\x65\x76\x69\x6F\x75\x73\x4C\x61\x79\x65\x72\x43\x6F\x6E\x6E\x65\x63\x74\x65\x64\x43\x65\x6C\x6C\x73","\x67\x65\x74\x47\x65\x6E\x65\x72\x61\x6C\x50\x75\x72\x70\x6F\x73\x65\x56\x61\x72\x69\x61\x62\x6C\x65","\x73\x65\x74\x47\x65\x6E\x65\x72\x61\x6C\x50\x75\x72\x70\x6F\x73\x65\x56\x61\x72\x69\x61\x62\x6C\x65","\x73\x65\x74\x58","\x73\x65\x74\x59","\x63\x6F\x6E\x6E\x65\x63\x74\x73\x41\x73\x54\x61\x72\x67\x65\x74","\x63\x6F\x6E\x6E\x65\x63\x74\x73\x41\x73\x53\x6F\x75\x72\x63\x65","\x68\x61\x73\x68\x43\x6F\x64\x65","\x67\x65\x74\x52\x61\x6E\x6B\x56\x61\x6C\x75\x65","\x67\x65\x74\x43\x6F\x72\x65\x43\x65\x6C\x6C","\x65\x64\x67\x65\x73","\x69\x73\x52\x65\x76\x65\x72\x73\x65\x64","\x74\x69\x67\x68\x74\x65\x6E\x54\x6F\x53\x6F\x75\x72\x63\x65","\x72\x6F\x6F\x74\x73","\x76\x65\x72\x74\x65\x78\x4D\x61\x70\x70\x65\x72","\x65\x64\x67\x65\x4D\x61\x70\x70\x65\x72","\x53\x4F\x55\x52\x43\x45\x53\x43\x41\x4E\x53\x54\x41\x52\x54\x52\x41\x4E\x4B","\x63\x72\x65\x61\x74\x65\x49\x6E\x74\x65\x72\x6E\x61\x6C\x43\x65\x6C\x6C\x73","\x72\x61\x6E\x6B\x73","\x64\x66\x73\x43\x6F\x75\x6E\x74","\x69\x6E\x69\x74\x69\x61\x6C\x52\x61\x6E\x6B","\x73\x6C\x69\x63\x65","\x66\x69\x78\x52\x61\x6E\x6B\x73","\x65\x78\x74\x65\x6E\x64\x65\x64\x44\x66\x73","\x6E\x65\x73\x74\x65\x64\x42\x65\x73\x74\x52\x61\x6E\x6B\x73","\x63\x75\x72\x72\x65\x6E\x74\x42\x65\x73\x74\x43\x72\x6F\x73\x73\x69\x6E\x67\x73","\x69\x74\x65\x72\x61\x74\x69\x6F\x6E\x73\x57\x69\x74\x68\x6F\x75\x74\x49\x6D\x70\x72\x6F\x76\x65\x6D\x65\x6E\x74","\x6D\x61\x78\x4E\x6F\x49\x6D\x70\x72\x6F\x76\x65\x6D\x65\x6E\x74\x49\x74\x65\x72\x61\x74\x69\x6F\x6E\x73","\x63\x61\x6C\x63\x75\x6C\x61\x74\x65\x43\x72\x6F\x73\x73\x69\x6E\x67\x73","\x77\x65\x69\x67\x68\x74\x65\x64\x4D\x65\x64\x69\x61\x6E","\x74\x72\x61\x6E\x73\x70\x6F\x73\x65","\x63\x61\x6C\x63\x75\x6C\x61\x74\x65\x52\x61\x6E\x6B\x43\x72\x6F\x73\x73\x69\x6E\x67","\x6D\x65\x64\x69\x61\x6E\x52\x61\x6E\x6B","\x6D\x65\x64\x69\x61\x6E\x56\x61\x6C\x75\x65","\x6C\x65\x6E\x74\x68","\x67\x65\x74\x49\x6E\x63\x6F\x6D\x69\x6E\x67\x45\x64\x67\x65\x73","\x69\x6E\x74\x72\x61\x43\x65\x6C\x6C\x53\x70\x61\x63\x69\x6E\x67","\x69\x6E\x74\x65\x72\x52\x61\x6E\x6B\x43\x65\x6C\x6C\x53\x70\x61\x63\x69\x6E\x67","\x6F\x72\x69\x65\x6E\x74\x61\x74\x69\x6F\x6E","\x69\x6E\x69\x74\x69\x61\x6C\x58","\x70\x61\x72\x61\x6C\x6C\x65\x6C\x45\x64\x67\x65\x53\x70\x61\x63\x69\x6E\x67","\x6A\x65\x74\x74\x79\x50\x6F\x73\x69\x74\x69\x6F\x6E\x73","\x6C\x69\x6D\x69\x74\x58","\x63\x75\x72\x72\x65\x6E\x74\x58\x44\x65\x6C\x74\x61","\x77\x69\x64\x65\x73\x74\x52\x61\x6E\x6B","\x72\x61\x6E\x6B\x54\x6F\x70\x59","\x72\x61\x6E\x6B\x42\x6F\x74\x74\x6F\x6D\x59","\x77\x69\x64\x65\x73\x74\x52\x61\x6E\x6B\x56\x61\x6C\x75\x65","\x72\x61\x6E\x6B\x57\x69\x64\x74\x68\x73","\x72\x61\x6E\x6B\x59","\x66\x69\x6E\x65\x54\x75\x6E\x69\x6E\x67","\x50\x4F\x4C\x59\x4C\x49\x4E\x45","\x6E\x65\x78\x74\x4C\x61\x79\x65\x72\x43\x6F\x6E\x6E\x65\x63\x74\x65\x64\x43\x61\x63\x68\x65","\x70\x72\x65\x76\x69\x6F\x75\x73\x4C\x61\x79\x65\x72\x43\x6F\x6E\x6E\x65\x63\x74\x65\x64\x43\x61\x63\x68\x65","\x70\x72\x69\x6E\x74\x53\x74\x61\x74\x75\x73","\x3D\x3D\x3D\x3D\x3D\x3D\x43\x6F\x6F\x72\x64\x20\x61\x73\x73\x69\x67\x6E\x6D\x65\x6E\x74\x20\x64\x65\x62\x75\x67\x3D\x3D\x3D\x3D\x3D\x3D\x3D","\x52\x61\x6E\x6B\x20","\x20\x3A\x20","\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D","\x69\x6E\x69\x74\x69\x61\x6C\x43\x6F\x6F\x72\x64\x73","\x6D\x69\x6E\x4E\x6F\x64\x65","\x6D\x65\x64\x69\x61\x6E\x50\x6F\x73","\x6D\x69\x6E\x50\x61\x74\x68","\x73\x65\x74\x43\x65\x6C\x6C\x4C\x6F\x63\x61\x74\x69\x6F\x6E\x73","\x6D\x65\x64\x69\x61\x6E\x58\x56\x61\x6C\x75\x65","\x72\x61\x6E\x6B\x4D\x65\x64\x69\x61\x6E\x50\x6F\x73\x69\x74\x69\x6F\x6E","\x63\x61\x6C\x63\x75\x6C\x61\x74\x65\x64\x57\x65\x69\x67\x68\x74\x65\x64\x56\x61\x6C\x75\x65","\x63\x61\x6C\x63\x75\x6C\x61\x74\x65\x57\x69\x64\x65\x73\x74\x52\x61\x6E\x6B","\x72\x61\x6E\x6B\x43\x6F\x6F\x72\x64\x69\x6E\x61\x74\x65\x73","\x65\x64\x67\x65\x2E\x65\x64\x67\x65\x73\x20\x69\x73\x20\x6E\x75\x6C\x6C","\x41\x74\x20\x6C\x65\x61\x73\x74\x20\x6F\x6E\x65\x20\x63\x65\x6C\x6C\x20\x68\x61\x73\x20\x6E\x6F\x20\x62\x6F\x75\x6E\x64\x73","\x72\x65\x70\x6F\x73\x69\x74\x69\x6F\x6E\x56\x61\x6C\x69\x64","\x4D\x41\x58\x5F\x56\x41\x4C\x55\x45","\x4F\x52\x54\x48\x4F\x47\x4F\x4E\x41\x4C","\x43\x55\x52\x56\x45","\x73\x65\x74\x45\x64\x67\x65\x50\x6F\x73\x69\x74\x69\x6F\x6E","\x69\x73\x50\x6F\x72\x74","\x70\x72\x6F\x63\x65\x73\x73\x52\x65\x76\x65\x72\x73\x65\x64\x45\x64\x67\x65","\x64\x65\x74\x65\x72\x6D\x69\x6E\x69\x73\x74\x69\x63","\x6D\x6F\x76\x65\x50\x61\x72\x65\x6E\x74","\x70\x61\x72\x65\x6E\x74\x42\x6F\x72\x64\x65\x72","\x69\x6E\x74\x65\x72\x48\x69\x65\x72\x61\x72\x63\x68\x79\x53\x70\x61\x63\x69\x6E\x67","\x74\x72\x61\x76\x65\x72\x73\x65\x41\x6E\x63\x65\x73\x74\x6F\x72\x73","\x65\x64\x67\x65\x73\x43\x61\x63\x68\x65","\x72\x75\x6E","\x75\x70\x64\x61\x74\x65\x47\x72\x6F\x75\x70\x42\x6F\x75\x6E\x64\x73","\x66\x69\x6E\x64\x52\x6F\x6F\x74\x73","\x63\x6F\x6E\x63\x61\x74","\x69\x73\x56\x61\x6C\x69\x64\x41\x6E\x63\x65\x73\x74\x6F\x72","\x66\x69\x6C\x74\x65\x72\x44\x65\x73\x63\x65\x6E\x64\x61\x6E\x74\x73","\x63\x79\x63\x6C\x65\x53\x74\x61\x67\x65","\x6C\x61\x79\x65\x72\x69\x6E\x67\x53\x74\x61\x67\x65","\x63\x72\x6F\x73\x73\x69\x6E\x67\x53\x74\x61\x67\x65","\x70\x6C\x61\x63\x65\x6D\x65\x6E\x74\x53\x74\x61\x67\x65","\x63\x75\x72\x72\x65\x6E\x74\x45\x64\x69\x74","\x73\x65\x74\x52\x6F\x6F\x74","\x6D\x61\x69\x6E\x74\x61\x69\x6E\x45\x64\x67\x65\x50\x61\x72\x65\x6E\x74","\x63\x72\x65\x61\x74\x65\x49\x64\x73","\x70\x6F\x73\x74\x66\x69\x78","\x6E\x65\x78\x74\x49\x64","\x75\x70\x64\x61\x74\x65\x4C\x65\x76\x65\x6C","\x65\x6E\x64\x69\x6E\x67\x55\x70\x64\x61\x74\x65","\x63\x72\x65\x61\x74\x65\x52\x6F\x6F\x74","\x69\x73\x43\x72\x65\x61\x74\x65\x49\x64\x73","\x73\x65\x74\x43\x72\x65\x61\x74\x65\x49\x64\x73","\x69\x6E\x73\x65\x72\x74","\x66\x69\x6C\x74\x65\x72\x43\x65\x6C\x6C\x73","\x67\x65\x74\x44\x65\x73\x63\x65\x6E\x64\x61\x6E\x74\x73","\x72\x6F\x6F\x74\x43\x68\x61\x6E\x67\x65\x64","\x63\x65\x6C\x6C\x41\x64\x64\x65\x64","\x69\x73\x52\x6F\x6F\x74","\x75\x70\x64\x61\x74\x65\x45\x64\x67\x65\x50\x61\x72\x65\x6E\x74\x73","\x63\x72\x65\x61\x74\x65\x49\x64","\x73\x65\x74\x49\x64","\x69\x73\x4E\x75\x6D\x65\x72\x69\x63","\x75\x70\x64\x61\x74\x65\x45\x64\x67\x65\x50\x61\x72\x65\x6E\x74","\x67\x65\x74\x4E\x65\x61\x72\x65\x73\x74\x43\x6F\x6D\x6D\x6F\x6E\x41\x6E\x63\x65\x73\x74\x6F\x72","\x67\x65\x74\x4F\x72\x69\x67\x69\x6E","\x50\x41\x54\x48\x5F\x53\x45\x50\x41\x52\x41\x54\x4F\x52","\x67\x65\x74\x50\x61\x72\x65\x6E\x74\x50\x61\x74\x68","\x70\x61\x72\x65\x6E\x74\x46\x6F\x72\x43\x65\x6C\x6C\x43\x68\x61\x6E\x67\x65\x64","\x67\x65\x74\x43\x68\x69\x6C\x64\x72\x65\x6E","\x63\x68\x69\x6C\x64\x72\x65\x6E","\x67\x65\x74\x43\x68\x69\x6C\x64\x43\x65\x6C\x6C\x73","\x67\x65\x74\x43\x68\x69\x6C\x64\x45\x64\x67\x65\x73","\x73\x65\x74\x54\x65\x72\x6D\x69\x6E\x61\x6C","\x73\x65\x74\x54\x65\x72\x6D\x69\x6E\x61\x6C\x73","\x74\x65\x72\x6D\x69\x6E\x61\x6C\x46\x6F\x72\x43\x65\x6C\x6C\x43\x68\x61\x6E\x67\x65\x64","\x69\x6E\x73\x65\x72\x74\x45\x64\x67\x65","\x72\x65\x6D\x6F\x76\x65\x45\x64\x67\x65","\x67\x65\x74\x44\x69\x72\x65\x63\x74\x65\x64\x45\x64\x67\x65\x43\x6F\x75\x6E\x74","\x67\x65\x74\x4F\x75\x74\x67\x6F\x69\x6E\x67\x45\x64\x67\x65\x73","\x67\x65\x74\x54\x6F\x70\x6D\x6F\x73\x74\x43\x65\x6C\x6C\x73","\x69\x73\x43\x6F\x6E\x6E\x65\x63\x74\x61\x62\x6C\x65","\x73\x65\x74\x56\x61\x6C\x75\x65","\x76\x61\x6C\x75\x65\x46\x6F\x72\x43\x65\x6C\x6C\x43\x68\x61\x6E\x67\x65\x64","\x76\x61\x6C\x75\x65\x43\x68\x61\x6E\x67\x65\x64","\x67\x65\x6F\x6D\x65\x74\x72\x79\x46\x6F\x72\x43\x65\x6C\x6C\x43\x68\x61\x6E\x67\x65\x64","\x73\x74\x79\x6C\x65\x46\x6F\x72\x43\x65\x6C\x6C\x43\x68\x61\x6E\x67\x65\x64","\x69\x73\x43\x6F\x6C\x6C\x61\x70\x73\x65\x64","\x73\x65\x74\x43\x6F\x6C\x6C\x61\x70\x73\x65\x64","\x63\x6F\x6C\x6C\x61\x70\x73\x65\x64\x53\x74\x61\x74\x65\x46\x6F\x72\x43\x65\x6C\x6C\x43\x68\x61\x6E\x67\x65\x64","\x76\x69\x73\x69\x62\x6C\x65\x53\x74\x61\x74\x65\x46\x6F\x72\x43\x65\x6C\x6C\x43\x68\x61\x6E\x67\x65\x64","\x6D\x65\x72\x67\x65\x43\x68\x69\x6C\x64\x72\x65\x6E","\x6D\x65\x72\x67\x65\x43\x68\x69\x6C\x64\x72\x65\x6E\x49\x6D\x70\x6C","\x67\x65\x74\x50\x61\x72\x65\x6E\x74\x73","\x63\x6C\x6F\x6E\x65\x43\x65\x6C\x6C","\x63\x6C\x6F\x6E\x65\x43\x65\x6C\x6C\x49\x6D\x70\x6C","\x72\x65\x73\x74\x6F\x72\x65\x43\x6C\x6F\x6E\x65","\x63\x65\x6C\x6C\x43\x6C\x6F\x6E\x65\x64","\x70\x72\x65\x76\x69\x6F\x75\x73\x49\x6E\x64\x65\x78","\x69\x6E\x64\x65\x78","\x74\x65\x72\x6D\x69\x6E\x61\x6C","\x63\x6F\x6C\x6C\x61\x70\x73\x65\x64","\x61\x74\x74\x72\x69\x62\x75\x74\x65","\x6F\x6E\x49\x6E\x69\x74","\x76\x65\x72\x74\x65\x78","\x65\x64\x67\x65","\x63\x6F\x6E\x6E\x65\x63\x74\x61\x62\x6C\x65","\x6D\x78\x54\x72\x61\x6E\x73\x69\x65\x6E\x74","\x69\x64\x20\x76\x61\x6C\x75\x65\x20\x70\x61\x72\x65\x6E\x74\x20\x73\x6F\x75\x72\x63\x65\x20\x74\x61\x72\x67\x65\x74\x20\x63\x68\x69\x6C\x64\x72\x65\x6E\x20\x65\x64\x67\x65\x73","\x73\x65\x74\x56\x65\x72\x74\x65\x78","\x73\x65\x74\x45\x64\x67\x65","\x73\x65\x74\x43\x6F\x6E\x6E\x65\x63\x74\x61\x62\x6C\x65","\x73\x65\x74\x50\x61\x72\x65\x6E\x74","\x72\x65\x6D\x6F\x76\x65\x46\x72\x6F\x6D\x50\x61\x72\x65\x6E\x74","\x67\x65\x74\x45\x64\x67\x65\x49\x6E\x64\x65\x78","\x72\x65\x6D\x6F\x76\x65\x46\x72\x6F\x6D\x54\x65\x72\x6D\x69\x6E\x61\x6C","\x63\x6C\x6F\x6E\x65\x56\x61\x6C\x75\x65","\x54\x52\x41\x4E\x53\x4C\x41\x54\x45\x5F\x43\x4F\x4E\x54\x52\x4F\x4C\x5F\x50\x4F\x49\x4E\x54\x53","\x61\x6C\x74\x65\x72\x6E\x61\x74\x65\x42\x6F\x75\x6E\x64\x73","\x73\x6F\x75\x72\x63\x65\x50\x6F\x69\x6E\x74","\x74\x61\x72\x67\x65\x74\x50\x6F\x69\x6E\x74","\x73\x77\x61\x70","\x67\x65\x74\x54\x65\x72\x6D\x69\x6E\x61\x6C\x50\x6F\x69\x6E\x74","\x73\x65\x74\x54\x65\x72\x6D\x69\x6E\x61\x6C\x50\x6F\x69\x6E\x74","\x74\x61\x6E","\x70\x6F\x77","\x69\x6E\x74\x65\x72\x73\x65\x63\x74\x69\x6F\x6E","\x53\x54\x59\x4C\x45\x5F\x44\x49\x52\x45\x43\x54\x49\x4F\x4E","\x70\x61\x67\x65\x53\x63\x61\x6C\x65","\x70\x61\x67\x65\x46\x6F\x72\x6D\x61\x74","\x50\x72\x69\x6E\x74\x65\x72\x2D\x66\x72\x69\x65\x6E\x64\x6C\x79\x20\x76\x65\x72\x73\x69\x6F\x6E","\x70\x61\x67\x65\x53\x65\x6C\x65\x63\x74\x6F\x72","\x61\x75\x74\x6F\x4F\x72\x69\x67\x69\x6E","\x70\x72\x69\x6E\x74\x4F\x76\x65\x72\x6C\x61\x79\x73","\x77\x6E\x64","\x70\x61\x67\x65\x43\x6F\x75\x6E\x74","\x67\x65\x74\x57\x69\x6E\x64\x6F\x77","\x67\x65\x74\x44\x6F\x63\x74\x79\x70\x65","\x3C\x6D\x65\x74\x61\x20\x68\x74\x74\x70\x2D\x65\x71\x75\x69\x76\x3D\x22\x58\x2D\x55\x41\x2D\x43\x6F\x6D\x70\x61\x74\x69\x62\x6C\x65\x22\x20\x63\x6F\x6E\x74\x65\x6E\x74\x3D\x22\x49\x45\x3D\x38\x22\x3E","\x69\x6E\x69\x74\x69\x61\x6C\x69\x7A\x65\x4F\x76\x65\x72\x6C\x61\x79","\x67\x65\x74\x44\x72\x61\x77\x50\x61\x6E\x65","\x77\x72\x69\x74\x65\x48\x65\x61\x64","\x3C\x62\x6F\x64\x79\x20\x63\x6C\x61\x73\x73\x3D\x22\x6D\x78\x50\x61\x67\x65\x22\x3E","\x63\x72\x65\x61\x74\x65\x50\x61\x67\x65\x53\x65\x6C\x65\x63\x74\x6F\x72","\x70\x61\x67\x65\x42\x72\x65\x61\x6B\x41\x66\x74\x65\x72","\x61\x6C\x77\x61\x79\x73","\x6D\x78\x50\x61\x67\x65\x42\x72\x65\x61\x6B","\x67\x65\x74\x43\x6F\x76\x65\x72\x50\x61\x67\x65\x73","\x67\x65\x74\x41\x70\x70\x65\x6E\x64\x69\x63\x65\x73","\x61\x64\x64\x47\x72\x61\x70\x68\x46\x72\x61\x67\x6D\x65\x6E\x74","\x72\x65\x6E\x64\x65\x72\x50\x61\x67\x65","\x6D\x78\x50\x61\x67\x65\x2D","\x3C\x74\x69\x74\x6C\x65\x3E","\x3C\x2F\x74\x69\x74\x6C\x65\x3E","\x3C\x73\x74\x79\x6C\x65\x20\x74\x79\x70\x65\x3D\x22\x74\x65\x78\x74\x2F\x63\x73\x73\x22\x3E","\x40\x6D\x65\x64\x69\x61\x20\x70\x72\x69\x6E\x74\x20\x7B","\x20\x20\x74\x61\x62\x6C\x65\x2E\x6D\x78\x50\x61\x67\x65\x53\x65\x6C\x65\x63\x74\x6F\x72\x20\x7B\x20\x64\x69\x73\x70\x6C\x61\x79\x3A\x20\x6E\x6F\x6E\x65\x3B\x20\x7D","\x20\x20\x68\x72\x2E\x6D\x78\x50\x61\x67\x65\x42\x72\x65\x61\x6B\x20\x7B\x20\x64\x69\x73\x70\x6C\x61\x79\x3A\x20\x6E\x6F\x6E\x65\x3B\x20\x7D","\x40\x6D\x65\x64\x69\x61\x20\x73\x63\x72\x65\x65\x6E\x20\x7B","\x20\x20\x74\x61\x62\x6C\x65\x2E\x6D\x78\x50\x61\x67\x65\x53\x65\x6C\x65\x63\x74\x6F\x72\x20\x7B\x20\x70\x6F\x73\x69\x74\x69\x6F\x6E\x3A\x20\x66\x69\x78\x65\x64\x3B\x20\x72\x69\x67\x68\x74\x3A\x20\x31\x30\x70\x78\x3B\x20\x74\x6F\x70\x3A\x20\x31\x30\x70\x78\x3B\x66\x6F\x6E\x74\x2D\x66\x61\x6D\x69\x6C\x79\x3A\x20\x41\x72\x69\x61\x6C\x3B\x20\x66\x6F\x6E\x74\x2D\x73\x69\x7A\x65\x3A\x31\x30\x70\x74\x3B\x20\x62\x6F\x72\x64\x65\x72\x3A\x20\x73\x6F\x6C\x69\x64\x20\x31\x70\x78\x20\x64\x61\x72\x6B\x67\x72\x61\x79\x3B\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x3A\x20\x77\x68\x69\x74\x65\x3B\x20\x62\x6F\x72\x64\x65\x72\x2D\x63\x6F\x6C\x6C\x61\x70\x73\x65\x3A\x63\x6F\x6C\x6C\x61\x70\x73\x65\x3B\x20\x7D","\x20\x20\x74\x61\x62\x6C\x65\x2E\x6D\x78\x50\x61\x67\x65\x53\x65\x6C\x65\x63\x74\x6F\x72\x20\x74\x64\x20\x7B\x20\x62\x6F\x72\x64\x65\x72\x3A\x20\x73\x6F\x6C\x69\x64\x20\x31\x70\x78\x20\x67\x72\x61\x79\x3B\x20\x70\x61\x64\x64\x69\x6E\x67\x3A\x34\x70\x78\x3B\x20\x7D","\x20\x20\x62\x6F\x64\x79\x2E\x6D\x78\x50\x61\x67\x65\x20\x7B\x20\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x3A\x20\x67\x72\x61\x79\x3B\x20\x7D","\x3C\x2F\x73\x74\x79\x6C\x65\x3E","\x6D\x78\x50\x61\x67\x65\x53\x65\x6C\x65\x63\x74\x6F\x72","\x61","\x23\x6D\x78\x50\x61\x67\x65\x2D","\x70\x61\x67\x65\x42\x72\x65\x61\x6B\x49\x6E\x73\x69\x64\x65","\x67\x65\x74\x43\x61\x6E\x76\x61\x73","\x67\x65\x74\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x50\x61\x6E\x65","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x50\x61\x6E\x65","\x73\x74\x79\x6C\x65\x73","\x63\x72\x65\x61\x74\x65\x44\x65\x66\x61\x75\x6C\x74\x56\x65\x72\x74\x65\x78\x53\x74\x79\x6C\x65","\x70\x75\x74\x44\x65\x66\x61\x75\x6C\x74\x56\x65\x72\x74\x65\x78\x53\x74\x79\x6C\x65","\x63\x72\x65\x61\x74\x65\x44\x65\x66\x61\x75\x6C\x74\x45\x64\x67\x65\x53\x74\x79\x6C\x65","\x70\x75\x74\x44\x65\x66\x61\x75\x6C\x74\x45\x64\x67\x65\x53\x74\x79\x6C\x65","\x53\x54\x59\x4C\x45\x5F\x53\x48\x41\x50\x45","\x53\x48\x41\x50\x45\x5F\x52\x45\x43\x54\x41\x4E\x47\x4C\x45","\x53\x54\x59\x4C\x45\x5F\x50\x45\x52\x49\x4D\x45\x54\x45\x52","\x52\x65\x63\x74\x61\x6E\x67\x6C\x65\x50\x65\x72\x69\x6D\x65\x74\x65\x72","\x53\x54\x59\x4C\x45\x5F\x56\x45\x52\x54\x49\x43\x41\x4C\x5F\x41\x4C\x49\x47\x4E","\x53\x54\x59\x4C\x45\x5F\x41\x4C\x49\x47\x4E","\x53\x54\x59\x4C\x45\x5F\x46\x49\x4C\x4C\x43\x4F\x4C\x4F\x52","\x23\x43\x33\x44\x39\x46\x46","\x53\x54\x59\x4C\x45\x5F\x53\x54\x52\x4F\x4B\x45\x43\x4F\x4C\x4F\x52","\x23\x36\x34\x38\x32\x42\x39","\x53\x54\x59\x4C\x45\x5F\x46\x4F\x4E\x54\x43\x4F\x4C\x4F\x52","\x23\x37\x37\x34\x34\x30\x30","\x53\x48\x41\x50\x45\x5F\x43\x4F\x4E\x4E\x45\x43\x54\x4F\x52","\x23\x34\x34\x36\x32\x39\x39","\x64\x65\x66\x61\x75\x6C\x74\x56\x65\x72\x74\x65\x78","\x70\x75\x74\x43\x65\x6C\x6C\x53\x74\x79\x6C\x65","\x64\x65\x66\x61\x75\x6C\x74\x45\x64\x67\x65","\x67\x65\x74\x44\x65\x66\x61\x75\x6C\x74\x56\x65\x72\x74\x65\x78\x53\x74\x79\x6C\x65","\x67\x65\x74\x44\x65\x66\x61\x75\x6C\x74\x45\x64\x67\x65\x53\x74\x79\x6C\x65","\x6F\x72\x69\x67\x69\x6E","\x61\x62\x73\x6F\x6C\x75\x74\x65\x4F\x66\x66\x73\x65\x74","\x69\x6E\x76\x61\x6C\x69\x64","\x69\x6E\x76\x61\x6C\x69\x64\x4F\x72\x64\x65\x72","\x6F\x72\x64\x65\x72\x43\x68\x61\x6E\x67\x65\x64","\x76\x69\x73\x69\x62\x6C\x65\x53\x6F\x75\x72\x63\x65\x53\x74\x61\x74\x65","\x76\x69\x73\x69\x62\x6C\x65\x54\x61\x72\x67\x65\x74\x53\x74\x61\x74\x65","\x74\x65\x72\x6D\x69\x6E\x61\x6C\x44\x69\x73\x74\x61\x6E\x63\x65","\x73\x65\x67\x6D\x65\x6E\x74\x73","\x67\x65\x74\x50\x65\x72\x69\x6D\x65\x74\x65\x72\x42\x6F\x75\x6E\x64\x73","\x73\x65\x74\x41\x62\x73\x6F\x6C\x75\x74\x65\x54\x65\x72\x6D\x69\x6E\x61\x6C\x50\x6F\x69\x6E\x74","\x67\x65\x74\x56\x69\x73\x69\x62\x6C\x65\x54\x65\x72\x6D\x69\x6E\x61\x6C\x53\x74\x61\x74\x65","\x73\x65\x74\x56\x69\x73\x69\x62\x6C\x65\x54\x65\x72\x6D\x69\x6E\x61\x6C\x53\x74\x61\x74\x65","\x64\x6F\x6E\x65\x52\x65\x73\x6F\x75\x72\x63\x65","\x75\x70\x64\x61\x74\x69\x6E\x67\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x52\x65\x73\x6F\x75\x72\x63\x65","\x75\x70\x64\x61\x74\x69\x6E\x67\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E","\x73\x69\x6E\x67\x6C\x65\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E","\x69\x73\x53\x69\x6E\x67\x6C\x65\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E","\x73\x65\x74\x53\x69\x6E\x67\x6C\x65\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E","\x69\x73\x53\x65\x6C\x65\x63\x74\x65\x64","\x63\x68\x61\x6E\x67\x65\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E","\x73\x65\x74\x43\x65\x6C\x6C","\x73\x65\x74\x43\x65\x6C\x6C\x73","\x67\x65\x74\x46\x69\x72\x73\x74\x53\x65\x6C\x65\x63\x74\x61\x62\x6C\x65\x43\x65\x6C\x6C","\x69\x73\x43\x65\x6C\x6C\x53\x65\x6C\x65\x63\x74\x61\x62\x6C\x65","\x61\x64\x64\x43\x65\x6C\x6C","\x72\x65\x6D\x6F\x76\x65\x43\x65\x6C\x6C","\x73\x65\x6C\x65\x63\x74\x69\x6F\x6E\x4D\x6F\x64\x65\x6C","\x61\x64\x64\x65\x64","\x72\x65\x6D\x6F\x76\x65\x64","\x6D\x78\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x68\x61\x6E\x67\x65\x2E\x65\x78\x65\x63\x75\x74\x65","\x65\x6E\x74\x65\x72","\x6C\x65\x61\x76\x65","\x65\x64\x69\x74\x69\x6E\x67\x43\x65\x6C\x6C","\x74\x72\x69\x67\x67\x65\x72","\x6D\x6F\x64\x69\x66\x69\x65\x64","\x61\x75\x74\x6F\x53\x69\x7A\x65","\x65\x6D\x70\x74\x79\x4C\x61\x62\x65\x6C\x54\x65\x78\x74","\x74\x65\x78\x74\x4E\x6F\x64\x65","\x6D\x78\x43\x65\x6C\x6C\x45\x64\x69\x74\x6F\x72","\x63\x6F\x6C\x73","\x32\x30","\x34","\x62\x6C\x75\x72","\x66\x6F\x63\x75\x73\x4C\x6F\x73\x74","\x6B\x65\x79\x64\x6F\x77\x6E","\x6B\x65\x79\x43\x6F\x64\x65","\x69\x73\x45\x6E\x74\x65\x72\x53\x74\x6F\x70\x73\x43\x65\x6C\x6C\x45\x64\x69\x74\x69\x6E\x67","\x73\x74\x6F\x70\x45\x64\x69\x74\x69\x6E\x67","\x63\x6C\x65\x61\x72\x4F\x6E\x43\x68\x61\x6E\x67\x65","\x73\x65\x74\x4D\x6F\x64\x69\x66\x69\x65\x64","\x6B\x65\x79\x70\x72\x65\x73\x73","\x69\x73\x4C\x61\x62\x65\x6C\x43\x6C\x69\x70\x70\x65\x64","\x69\x73\x57\x72\x61\x70\x70\x69\x6E\x67","\x41\x4C\x49\x47\x4E\x5F\x4C\x45\x46\x54","\x69\x73\x4D\x6F\x64\x69\x66\x69\x65\x64","\x69\x73\x49\x6E\x76\x6F\x6B\x65\x73\x53\x74\x6F\x70\x43\x65\x6C\x6C\x45\x64\x69\x74\x69\x6E\x67","\x69\x73\x48\x69\x64\x65\x4C\x61\x62\x65\x6C","\x6F\x75\x74\x6C\x69\x6E\x65","\x67\x65\x74\x45\x64\x69\x74\x6F\x72\x42\x6F\x75\x6E\x64\x73","\x67\x65\x74\x49\x6E\x69\x74\x69\x61\x6C\x56\x61\x6C\x75\x65","\x67\x65\x74\x45\x6D\x70\x74\x79\x4C\x61\x62\x65\x6C\x54\x65\x78\x74","\x63\x72\x65\x61\x74\x65\x54\x65\x78\x74\x44\x69\x76","\x67\x65\x74\x43\x75\x72\x72\x65\x6E\x74\x56\x61\x6C\x75\x65","\x67\x65\x74\x45\x64\x69\x74\x69\x6E\x67\x56\x61\x6C\x75\x65","\x53\x54\x59\x4C\x45\x5F\x53\x50\x41\x43\x49\x4E\x47","\x53\x54\x59\x4C\x45\x5F\x53\x50\x41\x43\x49\x4E\x47\x5F\x54\x4F\x50","\x53\x54\x59\x4C\x45\x5F\x53\x50\x41\x43\x49\x4E\x47\x5F\x52\x49\x47\x48\x54","\x53\x54\x59\x4C\x45\x5F\x53\x50\x41\x43\x49\x4E\x47\x5F\x42\x4F\x54\x54\x4F\x4D","\x53\x54\x59\x4C\x45\x5F\x53\x50\x41\x43\x49\x4E\x47\x5F\x4C\x45\x46\x54","\x67\x65\x74\x45\x64\x69\x74\x69\x6E\x67\x43\x65\x6C\x6C","\x64\x65\x66\x61\x75\x6C\x74\x45\x64\x67\x65\x53\x68\x61\x70\x65","\x64\x65\x66\x61\x75\x6C\x74\x56\x65\x72\x74\x65\x78\x53\x68\x61\x70\x65","\x64\x65\x66\x61\x75\x6C\x74\x54\x65\x78\x74\x53\x68\x61\x70\x65","\x6C\x65\x67\x61\x63\x79\x43\x6F\x6E\x74\x72\x6F\x6C\x50\x6F\x73\x69\x74\x69\x6F\x6E","\x64\x65\x66\x61\x75\x6C\x74\x53\x68\x61\x70\x65\x73","\x72\x65\x67\x69\x73\x74\x65\x72\x53\x68\x61\x70\x65","\x69\x6E\x69\x74\x69\x61\x6C\x69\x7A\x65","\x63\x72\x65\x61\x74\x65\x53\x68\x61\x70\x65","\x69\x6E\x69\x74\x69\x61\x6C\x69\x7A\x65\x53\x68\x61\x70\x65","\x6F\x72\x64\x65\x72\x65\x64","\x6B\x65\x65\x70\x45\x64\x67\x65\x73\x49\x6E\x46\x6F\x72\x65\x67\x72\x6F\x75\x6E\x64","\x66\x69\x72\x73\x74\x45\x64\x67\x65","\x69\x6E\x73\x65\x72\x74\x53\x74\x61\x74\x65","\x63\x72\x65\x61\x74\x65\x43\x65\x6C\x6C\x4F\x76\x65\x72\x6C\x61\x79\x73","\x69\x6E\x73\x74\x61\x6C\x6C\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x67\x65\x74\x50\x72\x65\x76\x69\x6F\x75\x73\x53\x74\x61\x74\x65\x49\x6E\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x66\x69\x6E\x64\x50\x72\x65\x76\x69\x6F\x75\x73\x53\x74\x61\x74\x65\x49\x6E\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x6F\x72\x64\x65\x72","\x6F\x72\x64\x65\x72\x45\x64\x67\x65","\x6B\x65\x65\x70\x45\x64\x67\x65\x73\x49\x6E\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64","\x67\x65\x74\x53\x68\x61\x70\x65\x43\x6F\x6E\x73\x74\x72\x75\x63\x74\x6F\x72","\x63\x6F\x6E\x66\x69\x67\x75\x72\x65\x53\x68\x61\x70\x65","\x67\x65\x74\x53\x68\x61\x70\x65","\x67\x65\x74\x49\x6E\x64\x69\x63\x61\x74\x6F\x72\x53\x68\x61\x70\x65","\x67\x65\x74\x49\x6E\x64\x69\x63\x61\x74\x6F\x72\x43\x6F\x6C\x6F\x72","\x67\x65\x74\x49\x6E\x64\x69\x63\x61\x74\x6F\x72\x47\x72\x61\x64\x69\x65\x6E\x74\x43\x6F\x6C\x6F\x72","\x53\x54\x59\x4C\x45\x5F\x49\x4E\x44\x49\x43\x41\x54\x4F\x52\x5F\x44\x49\x52\x45\x43\x54\x49\x4F\x4E","\x67\x65\x74\x49\x6E\x64\x69\x63\x61\x74\x6F\x72\x49\x6D\x61\x67\x65","\x70\x6F\x73\x74\x43\x6F\x6E\x66\x69\x67\x75\x72\x65\x53\x68\x61\x70\x65","\x72\x65\x73\x6F\x6C\x76\x65\x43\x6F\x6C\x6F\x72","\x67\x65\x74\x53\x77\x69\x6D\x6C\x61\x6E\x65","\x73\x77\x69\x6D\x6C\x61\x6E\x65\x49\x6E\x64\x69\x63\x61\x74\x6F\x72\x43\x6F\x6C\x6F\x72\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x69\x6E\x64\x69\x63\x61\x74\x65\x64","\x67\x65\x74\x4C\x61\x62\x65\x6C\x56\x61\x6C\x75\x65","\x67\x65\x74\x4C\x61\x62\x65\x6C","\x63\x72\x65\x61\x74\x65\x4C\x61\x62\x65\x6C","\x53\x54\x59\x4C\x45\x5F\x46\x4F\x4E\x54\x53\x49\x5A\x45","\x69\x73\x48\x74\x6D\x6C\x4C\x61\x62\x65\x6C","\x67\x65\x74\x56\x65\x72\x74\x69\x63\x61\x6C\x41\x6C\x69\x67\x6E","\x53\x54\x59\x4C\x45\x5F\x46\x4F\x4E\x54\x46\x41\x4D\x49\x4C\x59","\x53\x54\x59\x4C\x45\x5F\x46\x4F\x4E\x54\x53\x54\x59\x4C\x45","\x53\x54\x59\x4C\x45\x5F\x48\x4F\x52\x49\x5A\x4F\x4E\x54\x41\x4C","\x53\x54\x59\x4C\x45\x5F\x4C\x41\x42\x45\x4C\x5F\x42\x41\x43\x4B\x47\x52\x4F\x55\x4E\x44\x43\x4F\x4C\x4F\x52","\x53\x54\x59\x4C\x45\x5F\x4C\x41\x42\x45\x4C\x5F\x42\x4F\x52\x44\x45\x52\x43\x4F\x4C\x4F\x52","\x53\x54\x59\x4C\x45\x5F\x4F\x56\x45\x52\x46\x4C\x4F\x57","\x53\x54\x59\x4C\x45\x5F\x4C\x41\x42\x45\x4C\x5F\x50\x41\x44\x44\x49\x4E\x47","\x69\x6E\x69\x74\x69\x61\x6C\x69\x7A\x65\x4C\x61\x62\x65\x6C","\x63\x6F\x6E\x76\x65\x72\x74\x50\x6F\x69\x6E\x74","\x69\x73\x4C\x61\x62\x65\x6C\x45\x76\x65\x6E\x74","\x49\x4D\x47","\x4E\x4F\x5F\x46\x4F","\x67\x65\x74\x43\x65\x6C\x6C\x4F\x76\x65\x72\x6C\x61\x79\x73","\x6F\x76\x65\x72\x6C\x61\x79","\x69\x6E\x73\x74\x61\x6C\x6C\x43\x65\x6C\x6C\x4F\x76\x65\x72\x6C\x61\x79\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x69\x73\x45\x64\x69\x74\x69\x6E\x67","\x63\x72\x65\x61\x74\x65\x43\x6F\x6E\x74\x72\x6F\x6C","\x67\x65\x74\x46\x6F\x6C\x64\x69\x6E\x67\x49\x6D\x61\x67\x65","\x66\x6F\x6C\x64\x69\x6E\x67\x45\x6E\x61\x62\x6C\x65\x64","\x63\x6F\x6E\x74\x72\x6F\x6C","\x69\x6E\x69\x74\x43\x6F\x6E\x74\x72\x6F\x6C","\x44\x49\x41\x4C\x45\x43\x54\x5F\x50\x52\x45\x46\x45\x52\x48\x54\x4D\x4C","\x69\x6E\x6E\x65\x72\x4E\x6F\x64\x65","\x69\x73\x53\x68\x61\x70\x65\x45\x76\x65\x6E\x74","\x67\x65\x73\x74\x75\x72\x65\x73\x74\x61\x72\x74","\x6C\x61\x73\x74\x54\x6F\x75\x63\x68\x54\x69\x6D\x65","\x67\x65\x73\x74\x75\x72\x65\x65\x6E\x64","\x67\x65\x73\x74\x75\x72\x65\x45\x6E\x61\x62\x6C\x65\x64","\x68\x61\x6E\x64\x6C\x65\x47\x65\x73\x74\x75\x72\x65","\x72\x65\x64\x72\x61\x77\x4C\x61\x62\x65\x6C","\x67\x65\x74\x4C\x61\x62\x65\x6C\x42\x6F\x75\x6E\x64\x73","\x69\x73\x43\x6C\x69\x70\x70\x69\x6E\x67","\x67\x65\x74\x54\x65\x78\x74\x53\x63\x61\x6C\x65","\x72\x6F\x74\x61\x74\x65\x4C\x61\x62\x65\x6C\x42\x6F\x75\x6E\x64\x73","\x72\x65\x64\x72\x61\x77\x43\x65\x6C\x6C\x4F\x76\x65\x72\x6C\x61\x79\x73","\x72\x65\x64\x72\x61\x77\x43\x6F\x6E\x74\x72\x6F\x6C","\x67\x65\x74\x43\x6F\x6E\x74\x72\x6F\x6C\x42\x6F\x75\x6E\x64\x73","\x65\x71\x75\x61\x6C\x45\x6E\x74\x72\x69\x65\x73","\x65\x71\x75\x61\x6C\x50\x6F\x69\x6E\x74\x73","\x67\x65\x74\x50\x6F\x72\x74\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74\x73","\x67\x65\x74\x52\x6F\x75\x74\x69\x6E\x67\x43\x65\x6E\x74\x65\x72\x59","\x74\x72\x61\x6E\x73\x66\x6F\x72\x6D\x43\x6F\x6E\x74\x72\x6F\x6C\x50\x6F\x69\x6E\x74","\x67\x65\x74\x52\x6F\x75\x74\x69\x6E\x67\x43\x65\x6E\x74\x65\x72\x58","\x53\x54\x59\x4C\x45\x5F\x45\x4C\x42\x4F\x57","\x45\x4C\x42\x4F\x57\x5F\x56\x45\x52\x54\x49\x43\x41\x4C","\x6F\x72\x74\x68\x42\x75\x66\x66\x65\x72","\x44\x49\x52\x45\x43\x54\x49\x4F\x4E\x5F\x4D\x41\x53\x4B\x5F\x41\x4C\x4C","\x6C\x69\x6D\x69\x74\x73","\x76\x65\x72\x74\x65\x78\x53\x65\x70\x65\x72\x61\x74\x69\x6F\x6E\x73","\x72\x65\x76\x65\x72\x73\x65\x50\x6F\x72\x74\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74\x73","\x72\x6F\x75\x74\x65\x50\x61\x74\x74\x65\x72\x6E\x73","\x77\x61\x79\x50\x6F\x69\x6E\x74\x73\x31","\x64\x69\x72\x56\x65\x63\x74\x6F\x72\x73","\x54\x41\x52\x47\x45\x54\x5F\x4D\x41\x53\x4B","\x53\x4F\x55\x52\x43\x45\x5F\x4D\x41\x53\x4B","\x53\x49\x44\x45\x5F\x4D\x41\x53\x4B","\x43\x45\x4E\x54\x45\x52\x5F\x4D\x41\x53\x4B","\x76\x61\x6C\x75\x65\x73","\x70\x75\x74\x56\x61\x6C\x75\x65","\x67\x72\x61\x70\x68\x42\x6F\x75\x6E\x64\x73","\x45\x4D\x50\x54\x59\x5F\x50\x4F\x49\x4E\x54","\x75\x70\x64\x61\x74\x69\x6E\x67\x44\x6F\x63\x75\x6D\x65\x6E\x74\x52\x65\x73\x6F\x75\x72\x63\x65","\x75\x70\x64\x61\x74\x69\x6E\x67\x44\x6F\x63\x75\x6D\x65\x6E\x74","\x61\x6C\x6C\x6F\x77\x45\x76\x61\x6C","\x63\x61\x70\x74\x75\x72\x65\x44\x6F\x63\x75\x6D\x65\x6E\x74\x47\x65\x73\x74\x75\x72\x65","\x6F\x70\x74\x69\x6D\x69\x7A\x65\x56\x6D\x6C\x52\x65\x66\x6C\x6F\x77\x73","\x72\x65\x6E\x64\x65\x72\x69\x6E\x67","\x75\x70\x64\x61\x74\x65\x53\x74\x79\x6C\x65","\x73\x65\x74\x47\x72\x61\x70\x68\x42\x6F\x75\x6E\x64\x73","\x73\x65\x74\x43\x75\x72\x72\x65\x6E\x74\x52\x6F\x6F\x74","\x73\x69\x7A\x65\x44\x69\x64\x43\x68\x61\x6E\x67\x65","\x72\x65\x76\x61\x6C\x69\x64\x61\x74\x65","\x70\x72\x65\x76\x69\x6F\x75\x73\x53\x63\x61\x6C\x65","\x70\x72\x65\x76\x69\x6F\x75\x73\x54\x72\x61\x6E\x73\x6C\x61\x74\x65","\x73\x65\x74\x53\x63\x61\x6C\x65","\x69\x6E\x76\x61\x6C\x69\x64\x61\x74\x65","\x76\x61\x6C\x69\x64\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65\x53\x74\x61\x74\x65","\x6D\x78\x47\x72\x61\x70\x68\x56\x69\x65\x77\x2E\x76\x61\x6C\x69\x64\x61\x74\x65","\x76\x61\x6C\x69\x64\x61\x74\x65\x42\x6F\x75\x6E\x64\x73","\x76\x61\x6C\x69\x64\x61\x74\x65\x50\x6F\x69\x6E\x74\x73","\x76\x61\x6C\x69\x64\x61\x74\x65\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64","\x63\x72\x65\x61\x74\x65\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x50\x61\x67\x65\x53\x68\x61\x70\x65","\x67\x65\x74\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x49\x6D\x61\x67\x65","\x72\x65\x64\x72\x61\x77\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x49\x6D\x61\x67\x65","\x70\x61\x67\x65\x56\x69\x73\x69\x62\x6C\x65","\x67\x65\x74\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x50\x61\x67\x65\x42\x6F\x75\x6E\x64\x73","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x50\x61\x67\x65\x53\x68\x61\x70\x65","\x74\x6F\x6F\x6C\x74\x69\x70\x48\x61\x6E\x64\x6C\x65\x72","\x69\x73\x48\x69\x64\x65\x4F\x6E\x48\x6F\x76\x65\x72","\x53\x54\x59\x4C\x45\x5F\x52\x4F\x54\x41\x54\x49\x4F\x4E","\x75\x70\x64\x61\x74\x65\x56\x65\x72\x74\x65\x78\x4C\x61\x62\x65\x6C\x4F\x66\x66\x73\x65\x74","\x67\x65\x74\x43\x68\x69\x6C\x64\x4F\x66\x66\x73\x65\x74\x46\x6F\x72\x43\x65\x6C\x6C","\x75\x70\x64\x61\x74\x65\x46\x69\x78\x65\x64\x54\x65\x72\x6D\x69\x6E\x61\x6C\x50\x6F\x69\x6E\x74\x73","\x75\x70\x64\x61\x74\x65\x50\x6F\x69\x6E\x74\x73","\x75\x70\x64\x61\x74\x65\x46\x6C\x6F\x61\x74\x69\x6E\x67\x54\x65\x72\x6D\x69\x6E\x61\x6C\x50\x6F\x69\x6E\x74\x73","\x75\x70\x64\x61\x74\x65\x45\x64\x67\x65\x42\x6F\x75\x6E\x64\x73","\x75\x70\x64\x61\x74\x65\x45\x64\x67\x65\x4C\x61\x62\x65\x6C\x4F\x66\x66\x73\x65\x74","\x63\x68\x69\x6C\x64\x4D\x6F\x76\x65\x64","\x69\x73\x52\x65\x6E\x64\x65\x72\x69\x6E\x67","\x67\x65\x74\x43\x6F\x6E\x6E\x65\x63\x74\x69\x6F\x6E\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74","\x75\x70\x64\x61\x74\x65\x46\x69\x78\x65\x64\x54\x65\x72\x6D\x69\x6E\x61\x6C\x50\x6F\x69\x6E\x74","\x67\x65\x74\x43\x6F\x6E\x6E\x65\x63\x74\x69\x6F\x6E\x50\x6F\x69\x6E\x74","\x67\x65\x74\x45\x64\x67\x65\x53\x74\x79\x6C\x65","\x67\x65\x74\x54\x65\x72\x6D\x69\x6E\x61\x6C\x50\x6F\x72\x74","\x64\x65\x66\x61\x75\x6C\x74\x4C\x6F\x6F\x70\x53\x74\x79\x6C\x65","\x53\x54\x59\x4C\x45\x5F\x45\x44\x47\x45","\x69\x73\x41\x6C\x6C\x6F\x77\x45\x76\x61\x6C","\x75\x70\x64\x61\x74\x65\x46\x6C\x6F\x61\x74\x69\x6E\x67\x54\x65\x72\x6D\x69\x6E\x61\x6C\x50\x6F\x69\x6E\x74","\x67\x65\x74\x4E\x65\x78\x74\x50\x6F\x69\x6E\x74","\x69\x73\x4F\x72\x74\x68\x6F\x67\x6F\x6E\x61\x6C","\x53\x54\x59\x4C\x45\x5F\x50\x45\x52\x49\x4D\x45\x54\x45\x52\x5F\x53\x50\x41\x43\x49\x4E\x47","\x53\x54\x59\x4C\x45\x5F\x53\x4F\x55\x52\x43\x45\x5F\x50\x45\x52\x49\x4D\x45\x54\x45\x52\x5F\x53\x50\x41\x43\x49\x4E\x47","\x53\x54\x59\x4C\x45\x5F\x54\x41\x52\x47\x45\x54\x5F\x50\x45\x52\x49\x4D\x45\x54\x45\x52\x5F\x53\x50\x41\x43\x49\x4E\x47","\x67\x65\x74\x50\x65\x72\x69\x6D\x65\x74\x65\x72\x50\x6F\x69\x6E\x74","\x53\x54\x59\x4C\x45\x5F\x53\x4F\x55\x52\x43\x45\x5F\x50\x4F\x52\x54","\x53\x54\x59\x4C\x45\x5F\x54\x41\x52\x47\x45\x54\x5F\x50\x4F\x52\x54","\x67\x65\x74\x50\x65\x72\x69\x6D\x65\x74\x65\x72\x46\x75\x6E\x63\x74\x69\x6F\x6E","\x53\x54\x59\x4C\x45\x5F\x52\x4F\x55\x54\x49\x4E\x47\x5F\x43\x45\x4E\x54\x45\x52\x5F\x58","\x53\x54\x59\x4C\x45\x5F\x52\x4F\x55\x54\x49\x4E\x47\x5F\x43\x45\x4E\x54\x45\x52\x5F\x59","\x67\x65\x74\x52\x65\x6C\x61\x74\x69\x76\x65\x50\x6F\x69\x6E\x74","\x72\x65\x6C\x61\x74\x69\x76\x65\x43\x63\x77","\x73\x65\x74\x52\x65\x6E\x64\x65\x72\x69\x6E\x67","\x73\x65\x74\x41\x6C\x6C\x6F\x77\x45\x76\x61\x6C","\x67\x65\x74\x53\x74\x61\x74\x65\x73","\x67\x65\x74\x43\x65\x6C\x6C\x53\x74\x61\x74\x65\x73","\x69\x73\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72\x45\x76\x65\x6E\x74","\x69\x73\x53\x63\x72\x6F\x6C\x6C\x45\x76\x65\x6E\x74","\x70\x61\x6E\x6E\x69\x6E\x67\x48\x61\x6E\x64\x6C\x65\x72","\x6D\x6F\x76\x65\x48\x61\x6E\x64\x6C\x65\x72","\x65\x6E\x64\x48\x61\x6E\x64\x6C\x65\x72","\x63\x72\x65\x61\x74\x65\x48\x74\x6D\x6C\x50\x61\x6E\x65","\x75\x70\x64\x61\x74\x65\x48\x74\x6D\x6C\x43\x61\x6E\x76\x61\x73\x53\x69\x7A\x65","\x63\x72\x65\x61\x74\x65\x56\x6D\x6C\x50\x61\x6E\x65","\x63\x6F\x6F\x72\x64\x6F\x72\x69\x67\x69\x6E","\x30\x2C\x30","\x73\x74\x61\x74\x69\x63","\x69\x73\x55\x70","\x67\x65\x74\x54\x72\x61\x6E\x73\x6C\x61\x74\x65\x46\x6F\x72\x52\x6F\x6F\x74","\x55\x50","\x44\x4F\x57\x4E","\x6D\x6F\x75\x73\x65\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x72\x65\x6E\x64\x65\x72\x48\x69\x6E\x74","\x52\x45\x4E\x44\x45\x52\x49\x4E\x47\x5F\x48\x49\x4E\x54\x5F\x45\x58\x41\x43\x54","\x52\x45\x4E\x44\x45\x52\x49\x4E\x47\x5F\x48\x49\x4E\x54\x5F\x46\x41\x53\x54\x45\x53\x54","\x52\x45\x4E\x44\x45\x52\x49\x4E\x47\x5F\x48\x49\x4E\x54\x5F\x46\x41\x53\x54\x45\x52","\x44\x49\x41\x4C\x45\x43\x54\x5F\x4D\x49\x58\x45\x44\x48\x54\x4D\x4C","\x6D\x75\x6C\x74\x69\x70\x6C\x69\x63\x69\x74\x69\x65\x73","\x69\x6D\x61\x67\x65\x42\x75\x6E\x64\x6C\x65\x73","\x63\x72\x65\x61\x74\x65\x43\x65\x6C\x6C\x52\x65\x6E\x64\x65\x72\x65\x72","\x63\x72\x65\x61\x74\x65\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x4D\x6F\x64\x65\x6C","\x73\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x4D\x6F\x64\x65\x6C","\x63\x72\x65\x61\x74\x65\x53\x74\x79\x6C\x65\x73\x68\x65\x65\x74","\x73\x65\x74\x53\x74\x79\x6C\x65\x73\x68\x65\x65\x74","\x63\x72\x65\x61\x74\x65\x47\x72\x61\x70\x68\x56\x69\x65\x77","\x67\x72\x61\x70\x68\x4D\x6F\x64\x65\x6C\x43\x68\x61\x6E\x67\x65\x4C\x69\x73\x74\x65\x6E\x65\x72","\x63\x72\x65\x61\x74\x65\x48\x61\x6E\x64\x6C\x65\x72\x73","\x2F\x72\x65\x73\x6F\x75\x72\x63\x65\x73\x2F\x67\x72\x61\x70\x68","\x45\x4D\x50\x54\x59\x5F\x41\x52\x52\x41\x59","\x63\x65\x6C\x6C\x45\x64\x69\x74\x6F\x72","\x70\x6F\x72\x74\x73\x45\x6E\x61\x62\x6C\x65\x64","\x64\x6F\x75\x62\x6C\x65\x54\x61\x70\x45\x6E\x61\x62\x6C\x65\x64","\x64\x6F\x75\x62\x6C\x65\x54\x61\x70\x54\x69\x6D\x65\x6F\x75\x74","\x64\x6F\x75\x62\x6C\x65\x54\x61\x70\x54\x6F\x6C\x65\x72\x61\x6E\x63\x65","\x6C\x61\x73\x74\x54\x6F\x75\x63\x68\x59","\x74\x6F\x6C\x65\x72\x61\x6E\x63\x65","\x64\x65\x66\x61\x75\x6C\x74\x4F\x76\x65\x72\x6C\x61\x70","\x64\x65\x66\x61\x75\x6C\x74\x50\x61\x72\x65\x6E\x74","\x61\x6C\x74\x65\x72\x6E\x61\x74\x65\x45\x64\x67\x65\x53\x74\x79\x6C\x65","\x70\x61\x67\x65\x42\x72\x65\x61\x6B\x73\x56\x69\x73\x69\x62\x6C\x65","\x70\x61\x67\x65\x42\x72\x65\x61\x6B\x43\x6F\x6C\x6F\x72","\x70\x61\x67\x65\x42\x72\x65\x61\x6B\x44\x61\x73\x68\x65\x64","\x6D\x69\x6E\x50\x61\x67\x65\x42\x72\x65\x61\x6B\x44\x69\x73\x74","\x70\x72\x65\x66\x65\x72\x50\x61\x67\x65\x53\x69\x7A\x65","\x65\x73\x63\x61\x70\x65\x45\x6E\x61\x62\x6C\x65\x64","\x69\x6E\x76\x6F\x6B\x65\x73\x53\x74\x6F\x70\x43\x65\x6C\x6C\x45\x64\x69\x74\x69\x6E\x67","\x65\x6E\x74\x65\x72\x53\x74\x6F\x70\x73\x43\x65\x6C\x6C\x45\x64\x69\x74\x69\x6E\x67","\x75\x73\x65\x53\x63\x72\x6F\x6C\x6C\x62\x61\x72\x73\x46\x6F\x72\x50\x61\x6E\x6E\x69\x6E\x67","\x65\x78\x70\x6F\x72\x74\x45\x6E\x61\x62\x6C\x65\x64","\x69\x6D\x70\x6F\x72\x74\x45\x6E\x61\x62\x6C\x65\x64","\x63\x65\x6C\x6C\x73\x4C\x6F\x63\x6B\x65\x64","\x63\x65\x6C\x6C\x73\x43\x6C\x6F\x6E\x65\x61\x62\x6C\x65","\x63\x65\x6C\x6C\x73\x45\x64\x69\x74\x61\x62\x6C\x65","\x63\x65\x6C\x6C\x73\x44\x65\x6C\x65\x74\x61\x62\x6C\x65","\x63\x65\x6C\x6C\x73\x4D\x6F\x76\x61\x62\x6C\x65","\x65\x64\x67\x65\x4C\x61\x62\x65\x6C\x73\x4D\x6F\x76\x61\x62\x6C\x65","\x76\x65\x72\x74\x65\x78\x4C\x61\x62\x65\x6C\x73\x4D\x6F\x76\x61\x62\x6C\x65","\x64\x72\x6F\x70\x45\x6E\x61\x62\x6C\x65\x64","\x73\x70\x6C\x69\x74\x45\x6E\x61\x62\x6C\x65\x64","\x63\x65\x6C\x6C\x73\x52\x65\x73\x69\x7A\x61\x62\x6C\x65","\x63\x65\x6C\x6C\x73\x42\x65\x6E\x64\x61\x62\x6C\x65","\x63\x65\x6C\x6C\x73\x53\x65\x6C\x65\x63\x74\x61\x62\x6C\x65","\x63\x65\x6C\x6C\x73\x44\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74\x61\x62\x6C\x65","\x61\x75\x74\x6F\x53\x69\x7A\x65\x43\x65\x6C\x6C\x73","\x74\x69\x6D\x65\x72\x41\x75\x74\x6F\x53\x63\x72\x6F\x6C\x6C","\x61\x6C\x6C\x6F\x77\x41\x75\x74\x6F\x50\x61\x6E\x6E\x69\x6E\x67","\x69\x67\x6E\x6F\x72\x65\x53\x63\x72\x6F\x6C\x6C\x62\x61\x72\x73","\x6D\x61\x78\x69\x6D\x75\x6D\x47\x72\x61\x70\x68\x42\x6F\x75\x6E\x64\x73","\x6D\x69\x6E\x69\x6D\x75\x6D\x47\x72\x61\x70\x68\x53\x69\x7A\x65","\x6D\x69\x6E\x69\x6D\x75\x6D\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72\x53\x69\x7A\x65","\x6D\x61\x78\x69\x6D\x75\x6D\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72\x53\x69\x7A\x65","\x72\x65\x73\x69\x7A\x65\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x61\x6C\x6C\x6F\x77\x4E\x65\x67\x61\x74\x69\x76\x65\x43\x6F\x6F\x72\x64\x69\x6E\x61\x74\x65\x73","\x63\x6F\x6E\x73\x74\x72\x61\x69\x6E\x43\x68\x69\x6C\x64\x72\x65\x6E","\x65\x78\x74\x65\x6E\x64\x50\x61\x72\x65\x6E\x74\x73","\x65\x78\x74\x65\x6E\x64\x50\x61\x72\x65\x6E\x74\x73\x4F\x6E\x41\x64\x64","\x63\x6F\x6C\x6C\x61\x70\x73\x65\x54\x6F\x50\x72\x65\x66\x65\x72\x72\x65\x64\x53\x69\x7A\x65","\x7A\x6F\x6F\x6D\x46\x61\x63\x74\x6F\x72","\x6B\x65\x65\x70\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x56\x69\x73\x69\x62\x6C\x65\x4F\x6E\x5A\x6F\x6F\x6D","\x63\x65\x6E\x74\x65\x72\x5A\x6F\x6F\x6D","\x72\x65\x73\x65\x74\x56\x69\x65\x77\x4F\x6E\x52\x6F\x6F\x74\x43\x68\x61\x6E\x67\x65","\x72\x65\x73\x65\x74\x45\x64\x67\x65\x73\x4F\x6E\x52\x65\x73\x69\x7A\x65","\x72\x65\x73\x65\x74\x45\x64\x67\x65\x73\x4F\x6E\x4D\x6F\x76\x65","\x72\x65\x73\x65\x74\x45\x64\x67\x65\x73\x4F\x6E\x43\x6F\x6E\x6E\x65\x63\x74","\x61\x6C\x6C\x6F\x77\x4C\x6F\x6F\x70\x73","\x4C\x6F\x6F\x70","\x6D\x75\x6C\x74\x69\x67\x72\x61\x70\x68","\x63\x6F\x6E\x6E\x65\x63\x74\x61\x62\x6C\x65\x45\x64\x67\x65\x73","\x61\x6C\x6C\x6F\x77\x44\x61\x6E\x67\x6C\x69\x6E\x67\x45\x64\x67\x65\x73","\x63\x6C\x6F\x6E\x65\x49\x6E\x76\x61\x6C\x69\x64\x45\x64\x67\x65\x73","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74\x4F\x6E\x4D\x6F\x76\x65","\x6C\x61\x62\x65\x6C\x73\x56\x69\x73\x69\x62\x6C\x65","\x68\x74\x6D\x6C\x4C\x61\x62\x65\x6C\x73","\x73\x77\x69\x6D\x6C\x61\x6E\x65\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x45\x6E\x61\x62\x6C\x65\x64","\x73\x77\x69\x6D\x6C\x61\x6E\x65\x4E\x65\x73\x74\x69\x6E\x67","\x6D\x69\x6E\x46\x69\x74\x53\x63\x61\x6C\x65","\x6D\x61\x78\x46\x69\x74\x53\x63\x61\x6C\x65","\x63\x6F\x6C\x6C\x61\x70\x73\x65\x64\x49\x6D\x61\x67\x65","\x2F\x63\x6F\x6C\x6C\x61\x70\x73\x65\x64\x2E\x67\x69\x66","\x65\x78\x70\x61\x6E\x64\x65\x64\x49\x6D\x61\x67\x65","\x2F\x65\x78\x70\x61\x6E\x64\x65\x64\x2E\x67\x69\x66","\x77\x61\x72\x6E\x69\x6E\x67\x49\x6D\x61\x67\x65","\x2F\x61\x73\x73\x65\x74\x73\x2F\x70\x6C\x75\x67\x69\x6E\x73\x2F\x6D\x78\x67\x72\x61\x70\x68\x2F\x69\x6D\x61\x67\x65\x73\x2F\x77\x61\x72\x6E\x69\x6E\x67\x2E\x67\x69\x66","\x61\x6C\x72\x65\x61\x64\x79\x43\x6F\x6E\x6E\x65\x63\x74\x65\x64\x52\x65\x73\x6F\x75\x72\x63\x65","\x61\x6C\x72\x65\x61\x64\x79\x43\x6F\x6E\x6E\x65\x63\x74\x65\x64","\x63\x6F\x6E\x74\x61\x69\x6E\x73\x56\x61\x6C\x69\x64\x61\x74\x69\x6F\x6E\x45\x72\x72\x6F\x72\x73\x52\x65\x73\x6F\x75\x72\x63\x65","\x63\x6F\x6E\x74\x61\x69\x6E\x73\x56\x61\x6C\x69\x64\x61\x74\x69\x6F\x6E\x45\x72\x72\x6F\x72\x73","\x63\x6F\x6C\x6C\x61\x70\x73\x65\x45\x78\x70\x61\x6E\x64\x52\x65\x73\x6F\x75\x72\x63\x65","\x63\x6F\x6C\x6C\x61\x70\x73\x65\x2D\x65\x78\x70\x61\x6E\x64","\x63\x72\x65\x61\x74\x65\x43\x65\x6C\x6C\x45\x64\x69\x74\x6F\x72","\x75\x6E\x6C\x6F\x61\x64","\x73\x65\x6C\x65\x63\x74\x73\x74\x61\x72\x74","\x3C\x76\x3A\x67\x72\x6F\x75\x70\x20\x73\x74\x79\x6C\x65\x3D\x22\x44\x49\x53\x50\x4C\x41\x59\x3A\x20\x6E\x6F\x6E\x65\x3B\x22\x3E\x3C\x2F\x76\x3A\x67\x72\x6F\x75\x70\x3E","\x70\x61\x6E\x6E\x69\x6E\x67\x45\x6E\x61\x62\x6C\x65\x64","\x73\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C\x73\x48\x61\x6E\x64\x6C\x65\x72","\x63\x6F\x6E\x6E\x65\x63\x74\x69\x6F\x6E\x48\x61\x6E\x64\x6C\x65\x72","\x67\x65\x74\x53\x74\x79\x6C\x65\x73\x68\x65\x65\x74","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x4D\x6F\x64\x65\x6C","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C\x73\x46\x6F\x72\x43\x68\x61\x6E\x67\x65\x73","\x70\x72\x6F\x63\x65\x73\x73\x43\x68\x61\x6E\x67\x65","\x67\x65\x74\x52\x65\x6D\x6F\x76\x65\x64\x43\x65\x6C\x6C\x73\x46\x6F\x72\x43\x68\x61\x6E\x67\x65\x73","\x72\x65\x6D\x6F\x76\x65\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C\x73","\x63\x6C\x65\x61\x72\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E","\x72\x65\x6D\x6F\x76\x65\x53\x74\x61\x74\x65\x46\x6F\x72\x43\x65\x6C\x6C","\x68\x6F\x6D\x65","\x61\x64\x64\x43\x65\x6C\x6C\x4F\x76\x65\x72\x6C\x61\x79","\x72\x65\x6D\x6F\x76\x65\x43\x65\x6C\x6C\x4F\x76\x65\x72\x6C\x61\x79","\x72\x65\x6D\x6F\x76\x65\x43\x65\x6C\x6C\x4F\x76\x65\x72\x6C\x61\x79\x73","\x63\x6C\x65\x61\x72\x43\x65\x6C\x6C\x4F\x76\x65\x72\x6C\x61\x79\x73","\x73\x65\x74\x43\x65\x6C\x6C\x57\x61\x72\x6E\x69\x6E\x67","\x3C\x66\x6F\x6E\x74\x20\x63\x6F\x6C\x6F\x72\x3D\x72\x65\x64\x3E","\x3C\x2F\x66\x6F\x6E\x74\x3E","\x73\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C","\x73\x74\x61\x72\x74\x45\x64\x69\x74\x69\x6E\x67\x41\x74\x43\x65\x6C\x6C","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C","\x69\x73\x43\x65\x6C\x6C\x45\x64\x69\x74\x61\x62\x6C\x65","\x63\x6F\x6E\x76\x65\x72\x74\x56\x61\x6C\x75\x65\x54\x6F\x53\x74\x72\x69\x6E\x67","\x69\x73\x41\x75\x74\x6F\x53\x69\x7A\x65\x43\x65\x6C\x6C","\x63\x65\x6C\x6C\x4C\x61\x62\x65\x6C\x43\x68\x61\x6E\x67\x65\x64","\x63\x65\x6C\x6C\x53\x69\x7A\x65\x55\x70\x64\x61\x74\x65\x64","\x68\x61\x6E\x64\x6C\x65\x72","\x73\x65\x6C\x65\x63\x74\x43\x65\x6C\x6C\x46\x6F\x72\x45\x76\x65\x6E\x74","\x69\x73\x53\x77\x69\x6D\x6C\x61\x6E\x65\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x45\x6E\x61\x62\x6C\x65\x64","\x67\x65\x74\x53\x77\x69\x6D\x6C\x61\x6E\x65\x41\x74","\x69\x73\x54\x6F\x67\x67\x6C\x65\x45\x76\x65\x6E\x74","\x70\x61\x6E\x6E\x69\x6E\x67\x4D\x61\x6E\x61\x67\x65\x72","\x63\x72\x65\x61\x74\x65\x50\x61\x6E\x6E\x69\x6E\x67\x4D\x61\x6E\x61\x67\x65\x72","\x67\x65\x74\x42\x6F\x72\x64\x65\x72\x53\x69\x7A\x65\x73","\x74\x68\x69\x6E","\x6D\x65\x64\x69\x75\x6D","\x74\x68\x69\x63\x6B","\x62\x6F\x72\x64\x65\x72\x4C\x65\x66\x74\x57\x69\x64\x74\x68","\x62\x6F\x72\x64\x65\x72\x54\x6F\x70\x57\x69\x64\x74\x68","\x70\x61\x64\x64\x69\x6E\x67\x54\x6F\x70","\x62\x6F\x72\x64\x65\x72\x52\x69\x67\x68\x74\x57\x69\x64\x74\x68","\x62\x6F\x72\x64\x65\x72\x42\x6F\x74\x74\x6F\x6D\x57\x69\x64\x74\x68","\x70\x61\x64\x64\x69\x6E\x67\x42\x6F\x74\x74\x6F\x6D","\x67\x65\x74\x50\x72\x65\x66\x65\x72\x72\x65\x64\x50\x61\x67\x65\x53\x69\x7A\x65","\x67\x65\x74\x42\x6F\x72\x64\x65\x72","\x64\x6F\x52\x65\x73\x69\x7A\x65\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x6D\x69\x6E\x57\x69\x64\x74\x68","\x6D\x69\x6E\x48\x65\x69\x67\x68\x74","\x75\x70\x64\x61\x74\x65\x50\x61\x67\x65\x42\x72\x65\x61\x6B\x73","\x68\x6F\x72\x69\x7A\x6F\x6E\x74\x61\x6C\x50\x61\x67\x65\x42\x72\x65\x61\x6B\x73","\x76\x65\x72\x74\x69\x63\x61\x6C\x50\x61\x67\x65\x42\x72\x65\x61\x6B\x73","\x70\x6F\x73\x74\x50\x72\x6F\x63\x65\x73\x73\x43\x65\x6C\x6C\x53\x74\x79\x6C\x65","\x53\x54\x59\x4C\x45\x5F\x49\x4D\x41\x47\x45","\x67\x65\x74\x49\x6D\x61\x67\x65\x46\x72\x6F\x6D\x42\x75\x6E\x64\x6C\x65\x73","\x64\x61\x74\x61\x3A\x69\x6D\x61\x67\x65\x2F","\x3B\x62\x61\x73\x65\x36\x34\x2C","\x73\x65\x74\x43\x65\x6C\x6C\x53\x74\x79\x6C\x65","\x74\x6F\x67\x67\x6C\x65\x43\x65\x6C\x6C\x53\x74\x79\x6C\x65","\x74\x6F\x67\x67\x6C\x65\x43\x65\x6C\x6C\x53\x74\x79\x6C\x65\x73","\x74\x6F\x67\x67\x6C\x65\x43\x65\x6C\x6C\x53\x74\x79\x6C\x65\x46\x6C\x61\x67\x73","\x73\x65\x74\x43\x65\x6C\x6C\x53\x74\x79\x6C\x65\x46\x6C\x61\x67\x73","\x61\x64\x64\x49\x6D\x61\x67\x65\x42\x75\x6E\x64\x6C\x65","\x72\x65\x6D\x6F\x76\x65\x49\x6D\x61\x67\x65\x42\x75\x6E\x64\x6C\x65","\x62\x61\x63\x6B","\x67\x65\x74\x43\x65\x6C\x6C\x73\x46\x6F\x72\x47\x72\x6F\x75\x70","\x63\x72\x65\x61\x74\x65\x47\x72\x6F\x75\x70\x43\x65\x6C\x6C","\x67\x65\x74\x42\x6F\x75\x6E\x64\x73\x46\x6F\x72\x47\x72\x6F\x75\x70","\x61\x64\x64\x41\x6C\x6C\x45\x64\x67\x65\x73","\x67\x65\x74\x45\x64\x67\x65\x56\x61\x6C\x69\x64\x61\x74\x69\x6F\x6E\x45\x72\x72\x6F\x72","\x69\x6E\x73\x65\x72\x74\x56\x65\x72\x74\x65\x78","\x63\x72\x65\x61\x74\x65\x56\x65\x72\x74\x65\x78","\x63\x72\x65\x61\x74\x65\x45\x64\x67\x65","\x61\x64\x64\x45\x64\x67\x65","\x69\x73\x41\x6C\x6C\x6F\x77\x4E\x65\x67\x61\x74\x69\x76\x65\x43\x6F\x6F\x72\x64\x69\x6E\x61\x74\x65\x73","\x69\x73\x45\x78\x74\x65\x6E\x64\x50\x61\x72\x65\x6E\x74\x73\x4F\x6E\x41\x64\x64","\x69\x73\x45\x78\x74\x65\x6E\x64\x50\x61\x72\x65\x6E\x74","\x65\x78\x74\x65\x6E\x64\x50\x61\x72\x65\x6E\x74","\x63\x6F\x6E\x73\x74\x72\x61\x69\x6E\x43\x68\x69\x6C\x64","\x67\x65\x74\x44\x65\x6C\x65\x74\x61\x62\x6C\x65\x43\x65\x6C\x6C\x73","\x69\x6E\x63\x6C\x75\x64\x65\x45\x64\x67\x65\x73","\x6E\x65\x77\x45\x64\x67\x65","\x67\x65\x74\x46\x6F\x6C\x64\x61\x62\x6C\x65\x43\x65\x6C\x6C\x73","\x63\x6F\x6C\x6C\x61\x70\x73\x65","\x72\x65\x63\x75\x72\x73\x65","\x69\x73\x43\x65\x6C\x6C\x46\x6F\x6C\x64\x61\x62\x6C\x65","\x73\x77\x61\x70\x42\x6F\x75\x6E\x64\x73","\x75\x70\x64\x61\x74\x65\x41\x6C\x74\x65\x72\x6E\x61\x74\x65\x42\x6F\x75\x6E\x64\x73","\x67\x65\x74\x50\x72\x65\x66\x65\x72\x72\x65\x64\x53\x69\x7A\x65\x46\x6F\x72\x43\x65\x6C\x6C","\x67\x65\x74\x41\x6C\x6C\x45\x64\x67\x65\x73","\x69\x67\x6E\x6F\x72\x65\x43\x68\x69\x6C\x64\x72\x65\x6E","\x53\x48\x41\x50\x45\x5F\x4C\x41\x42\x45\x4C","\x53\x54\x59\x4C\x45\x5F\x49\x4D\x41\x47\x45\x5F\x57\x49\x44\x54\x48","\x53\x54\x59\x4C\x45\x5F\x49\x4D\x41\x47\x45\x5F\x48\x45\x49\x47\x48\x54","\x67\x65\x74\x53\x69\x7A\x65\x46\x6F\x72\x53\x74\x72\x69\x6E\x67","\x72\x65\x73\x69\x7A\x65\x43\x65\x6C\x6C","\x69\x73\x43\x6C\x6F\x6E\x65\x49\x6E\x76\x61\x6C\x69\x64\x45\x64\x67\x65\x73","\x73\x65\x74\x41\x6C\x6C\x6F\x77\x4E\x65\x67\x61\x74\x69\x76\x65\x43\x6F\x6F\x72\x64\x69\x6E\x61\x74\x65\x73","\x69\x73\x44\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74\x4F\x6E\x4D\x6F\x76\x65","\x69\x73\x41\x6C\x6C\x6F\x77\x44\x61\x6E\x67\x6C\x69\x6E\x67\x45\x64\x67\x65\x73","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74\x47\x72\x61\x70\x68","\x74\x72\x61\x6E\x73\x6C\x61\x74\x65\x43\x65\x6C\x6C","\x67\x65\x74\x43\x65\x6C\x6C\x43\x6F\x6E\x74\x61\x69\x6E\x6D\x65\x6E\x74\x41\x72\x65\x61","\x67\x65\x74\x43\x75\x72\x72\x65\x6E\x74\x52\x6F\x6F\x74","\x67\x65\x74\x4D\x61\x78\x69\x6D\x75\x6D\x47\x72\x61\x70\x68\x42\x6F\x75\x6E\x64\x73","\x69\x73\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x43\x68\x69\x6C\x64","\x67\x65\x74\x4F\x76\x65\x72\x6C\x61\x70","\x67\x65\x74\x41\x6C\x6C\x43\x6F\x6E\x6E\x65\x63\x74\x69\x6F\x6E\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74\x73","\x53\x54\x59\x4C\x45\x5F\x45\x58\x49\x54\x5F\x58","\x53\x54\x59\x4C\x45\x5F\x45\x4E\x54\x52\x59\x5F\x58","\x53\x54\x59\x4C\x45\x5F\x45\x58\x49\x54\x5F\x59","\x53\x54\x59\x4C\x45\x5F\x45\x4E\x54\x52\x59\x5F\x59","\x53\x54\x59\x4C\x45\x5F\x45\x58\x49\x54\x5F\x50\x45\x52\x49\x4D\x45\x54\x45\x52","\x53\x54\x59\x4C\x45\x5F\x45\x4E\x54\x52\x59\x5F\x50\x45\x52\x49\x4D\x45\x54\x45\x52","\x73\x65\x74\x43\x6F\x6E\x6E\x65\x63\x74\x69\x6F\x6E\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74","\x70\x6F\x69\x6E\x74","\x53\x54\x59\x4C\x45\x5F\x46\x4C\x49\x50\x48","\x53\x54\x59\x4C\x45\x5F\x46\x4C\x49\x50\x56","\x69\x73\x50\x6F\x72\x74\x73\x45\x6E\x61\x62\x6C\x65\x64","\x67\x65\x74\x54\x65\x72\x6D\x69\x6E\x61\x6C\x46\x6F\x72\x50\x6F\x72\x74","\x69\x73\x43\x65\x6C\x6C\x44\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74\x61\x62\x6C\x65","\x65\x6E\x74\x65\x72\x47\x72\x6F\x75\x70","\x69\x73\x56\x61\x6C\x69\x64\x52\x6F\x6F\x74","\x65\x78\x69\x74\x47\x72\x6F\x75\x70","\x67\x65\x74\x43\x65\x6C\x6C\x42\x6F\x75\x6E\x64\x73","\x73\x68\x69\x66\x74\x50\x72\x65\x76\x69\x65\x77\x31","\x73\x68\x69\x66\x74\x50\x72\x65\x76\x69\x65\x77\x32","\x7A\x6F\x6F\x6D\x49\x6E","\x7A\x6F\x6F\x6D\x4F\x75\x74","\x7A\x6F\x6F\x6D\x41\x63\x74\x75\x61\x6C","\x7A\x6F\x6F\x6D\x54\x6F","\x73\x63\x72\x6F\x6C\x6C\x52\x65\x63\x74\x54\x6F\x56\x69\x73\x69\x62\x6C\x65","\x7A\x6F\x6F\x6D\x54\x6F\x52\x65\x63\x74","\x73\x63\x72\x6F\x6C\x6C\x43\x65\x6C\x6C\x54\x6F\x56\x69\x73\x69\x62\x6C\x65","\x69\x73\x43\x65\x6C\x6C\x43\x6F\x6E\x6E\x65\x63\x74\x61\x62\x6C\x65","\x53\x54\x59\x4C\x45\x5F\x4F\x52\x54\x48\x4F\x47\x4F\x4E\x41\x4C","\x53\x65\x67\x6D\x65\x6E\x74\x43\x6F\x6E\x6E\x65\x63\x74\x6F\x72","\x45\x6C\x62\x6F\x77\x43\x6F\x6E\x6E\x65\x63\x74\x6F\x72","\x53\x69\x64\x65\x54\x6F\x53\x69\x64\x65","\x54\x6F\x70\x54\x6F\x42\x6F\x74\x74\x6F\x6D","\x45\x6E\x74\x69\x74\x79\x52\x65\x6C\x61\x74\x69\x6F\x6E","\x4F\x72\x74\x68\x43\x6F\x6E\x6E\x65\x63\x74\x6F\x72","\x69\x73\x4C\x6F\x6F\x70","\x69\x73\x43\x6C\x6F\x6E\x65\x45\x76\x65\x6E\x74","\x49\x53\x5F\x4D\x41\x43","\x69\x73\x4D\x65\x74\x61\x44\x6F\x77\x6E","\x69\x73\x41\x6C\x74\x44\x6F\x77\x6E","\x69\x73\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x65\x64\x45\x76\x65\x6E\x74","\x69\x73\x46\x6F\x72\x63\x65\x4D\x61\x72\x71\x75\x65\x65\x45\x76\x65\x6E\x74","\x76\x61\x6C\x69\x64\x61\x74\x69\x6F\x6E\x41\x6C\x65\x72\x74","\x69\x73\x45\x64\x67\x65\x56\x61\x6C\x69\x64","\x69\x73\x56\x61\x6C\x69\x64\x43\x6F\x6E\x6E\x65\x63\x74\x69\x6F\x6E","\x63\x68\x65\x63\x6B","\x76\x61\x6C\x69\x64\x61\x74\x65\x45\x64\x67\x65","\x76\x61\x6C\x69\x64\x61\x74\x65\x47\x72\x61\x70\x68","\x67\x65\x74\x43\x65\x6C\x6C\x56\x61\x6C\x69\x64\x61\x74\x69\x6F\x6E\x45\x72\x72\x6F\x72","\x76\x61\x6C\x69\x64\x61\x74\x65\x43\x65\x6C\x6C","\x61\x74\x74\x72","\x63\x6F\x75\x6E\x74\x45\x72\x72\x6F\x72","\x73\x65\x74\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x49\x6D\x61\x67\x65","\x74\x6F\x53\x74\x72\x69\x6E\x67","\x69\x73\x48\x74\x6D\x6C\x4C\x61\x62\x65\x6C\x73","\x73\x65\x74\x48\x74\x6D\x6C\x4C\x61\x62\x65\x6C\x73","\x53\x54\x59\x4C\x45\x5F\x57\x48\x49\x54\x45\x5F\x53\x50\x41\x43\x45","\x67\x65\x74\x54\x6F\x6F\x6C\x74\x69\x70","\x67\x65\x74\x48\x61\x6E\x64\x6C\x65\x72","\x67\x65\x74\x54\x6F\x6F\x6C\x74\x69\x70\x46\x6F\x72\x4E\x6F\x64\x65","\x67\x65\x74\x54\x6F\x6F\x6C\x74\x69\x70\x46\x6F\x72\x43\x65\x6C\x6C","\x67\x65\x74\x43\x75\x72\x73\x6F\x72\x46\x6F\x72\x43\x65\x6C\x6C","\x53\x54\x59\x4C\x45\x5F\x49\x4E\x44\x49\x43\x41\x54\x4F\x52\x5F\x43\x4F\x4C\x4F\x52","\x53\x54\x59\x4C\x45\x5F\x49\x4E\x44\x49\x43\x41\x54\x4F\x52\x5F\x47\x52\x41\x44\x49\x45\x4E\x54\x43\x4F\x4C\x4F\x52","\x53\x54\x59\x4C\x45\x5F\x49\x4E\x44\x49\x43\x41\x54\x4F\x52\x5F\x53\x48\x41\x50\x45","\x53\x54\x59\x4C\x45\x5F\x49\x4E\x44\x49\x43\x41\x54\x4F\x52\x5F\x49\x4D\x41\x47\x45","\x73\x65\x74\x42\x6F\x72\x64\x65\x72","\x53\x48\x41\x50\x45\x5F\x53\x57\x49\x4D\x4C\x41\x4E\x45","\x69\x73\x52\x65\x73\x69\x7A\x65\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x73\x65\x74\x52\x65\x73\x69\x7A\x65\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x69\x73\x45\x73\x63\x61\x70\x65\x45\x6E\x61\x62\x6C\x65\x64","\x73\x65\x74\x45\x73\x63\x61\x70\x65\x45\x6E\x61\x62\x6C\x65\x64","\x73\x65\x74\x49\x6E\x76\x6F\x6B\x65\x73\x53\x74\x6F\x70\x43\x65\x6C\x6C\x45\x64\x69\x74\x69\x6E\x67","\x73\x65\x74\x45\x6E\x74\x65\x72\x53\x74\x6F\x70\x73\x43\x65\x6C\x6C\x45\x64\x69\x74\x69\x6E\x67","\x69\x73\x43\x65\x6C\x6C\x4C\x6F\x63\x6B\x65\x64","\x69\x73\x43\x65\x6C\x6C\x73\x4C\x6F\x63\x6B\x65\x64","\x73\x65\x74\x43\x65\x6C\x6C\x73\x4C\x6F\x63\x6B\x65\x64","\x67\x65\x74\x43\x6C\x6F\x6E\x65\x61\x62\x6C\x65\x43\x65\x6C\x6C\x73","\x69\x73\x43\x65\x6C\x6C\x43\x6C\x6F\x6E\x65\x61\x62\x6C\x65","\x69\x73\x43\x65\x6C\x6C\x73\x43\x6C\x6F\x6E\x65\x61\x62\x6C\x65","\x53\x54\x59\x4C\x45\x5F\x43\x4C\x4F\x4E\x45\x41\x42\x4C\x45","\x73\x65\x74\x43\x65\x6C\x6C\x73\x43\x6C\x6F\x6E\x65\x61\x62\x6C\x65","\x63\x61\x6E\x45\x78\x70\x6F\x72\x74\x43\x65\x6C\x6C","\x63\x61\x6E\x49\x6D\x70\x6F\x72\x74\x43\x65\x6C\x6C","\x69\x73\x43\x65\x6C\x6C\x73\x53\x65\x6C\x65\x63\x74\x61\x62\x6C\x65","\x73\x65\x74\x43\x65\x6C\x6C\x73\x53\x65\x6C\x65\x63\x74\x61\x62\x6C\x65","\x69\x73\x43\x65\x6C\x6C\x44\x65\x6C\x65\x74\x61\x62\x6C\x65","\x69\x73\x43\x65\x6C\x6C\x73\x44\x65\x6C\x65\x74\x61\x62\x6C\x65","\x53\x54\x59\x4C\x45\x5F\x44\x45\x4C\x45\x54\x41\x42\x4C\x45","\x73\x65\x74\x43\x65\x6C\x6C\x73\x44\x65\x6C\x65\x74\x61\x62\x6C\x65","\x69\x73\x4C\x61\x62\x65\x6C\x4D\x6F\x76\x61\x62\x6C\x65","\x67\x65\x74\x4D\x6F\x76\x61\x62\x6C\x65\x43\x65\x6C\x6C\x73","\x69\x73\x43\x65\x6C\x6C\x73\x4D\x6F\x76\x61\x62\x6C\x65","\x53\x54\x59\x4C\x45\x5F\x4D\x4F\x56\x41\x42\x4C\x45","\x73\x65\x74\x43\x65\x6C\x6C\x73\x4D\x6F\x76\x61\x62\x6C\x65","\x73\x65\x74\x50\x6F\x72\x74\x73\x45\x6E\x61\x62\x6C\x65\x64","\x67\x65\x74\x47\x72\x69\x64\x53\x69\x7A\x65","\x73\x65\x74\x47\x72\x69\x64\x53\x69\x7A\x65","\x67\x65\x74\x54\x6F\x6C\x65\x72\x61\x6E\x63\x65","\x73\x65\x74\x54\x6F\x6C\x65\x72\x61\x6E\x63\x65","\x69\x73\x56\x65\x72\x74\x65\x78\x4C\x61\x62\x65\x6C\x73\x4D\x6F\x76\x61\x62\x6C\x65","\x73\x65\x74\x56\x65\x72\x74\x65\x78\x4C\x61\x62\x65\x6C\x73\x4D\x6F\x76\x61\x62\x6C\x65","\x69\x73\x45\x64\x67\x65\x4C\x61\x62\x65\x6C\x73\x4D\x6F\x76\x61\x62\x6C\x65","\x73\x65\x74\x45\x64\x67\x65\x4C\x61\x62\x65\x6C\x73\x4D\x6F\x76\x61\x62\x6C\x65","\x69\x73\x53\x77\x69\x6D\x6C\x61\x6E\x65\x4E\x65\x73\x74\x69\x6E\x67","\x73\x65\x74\x53\x77\x69\x6D\x6C\x61\x6E\x65\x4E\x65\x73\x74\x69\x6E\x67","\x73\x65\x74\x53\x77\x69\x6D\x6C\x61\x6E\x65\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x45\x6E\x61\x62\x6C\x65\x64","\x69\x73\x4D\x75\x6C\x74\x69\x67\x72\x61\x70\x68","\x73\x65\x74\x4D\x75\x6C\x74\x69\x67\x72\x61\x70\x68","\x69\x73\x41\x6C\x6C\x6F\x77\x4C\x6F\x6F\x70\x73","\x73\x65\x74\x41\x6C\x6C\x6F\x77\x44\x61\x6E\x67\x6C\x69\x6E\x67\x45\x64\x67\x65\x73","\x73\x65\x74\x43\x6F\x6E\x6E\x65\x63\x74\x61\x62\x6C\x65\x45\x64\x67\x65\x73","\x69\x73\x43\x6F\x6E\x6E\x65\x63\x74\x61\x62\x6C\x65\x45\x64\x67\x65\x73","\x73\x65\x74\x43\x6C\x6F\x6E\x65\x49\x6E\x76\x61\x6C\x69\x64\x45\x64\x67\x65\x73","\x73\x65\x74\x41\x6C\x6C\x6F\x77\x4C\x6F\x6F\x70\x73","\x73\x65\x74\x44\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74\x4F\x6E\x4D\x6F\x76\x65","\x73\x65\x74\x44\x72\x6F\x70\x45\x6E\x61\x62\x6C\x65\x64","\x69\x73\x53\x70\x6C\x69\x74\x45\x6E\x61\x62\x6C\x65\x64","\x73\x65\x74\x53\x70\x6C\x69\x74\x45\x6E\x61\x62\x6C\x65\x64","\x69\x73\x43\x65\x6C\x6C\x52\x65\x73\x69\x7A\x61\x62\x6C\x65","\x69\x73\x43\x65\x6C\x6C\x73\x52\x65\x73\x69\x7A\x61\x62\x6C\x65","\x53\x54\x59\x4C\x45\x5F\x52\x45\x53\x49\x5A\x41\x42\x4C\x45","\x73\x65\x74\x43\x65\x6C\x6C\x73\x52\x65\x73\x69\x7A\x61\x62\x6C\x65","\x69\x73\x54\x65\x72\x6D\x69\x6E\x61\x6C\x50\x6F\x69\x6E\x74\x4D\x6F\x76\x61\x62\x6C\x65","\x69\x73\x43\x65\x6C\x6C\x42\x65\x6E\x64\x61\x62\x6C\x65","\x69\x73\x43\x65\x6C\x6C\x73\x42\x65\x6E\x64\x61\x62\x6C\x65","\x53\x54\x59\x4C\x45\x5F\x42\x45\x4E\x44\x41\x42\x4C\x45","\x73\x65\x74\x43\x65\x6C\x6C\x73\x42\x65\x6E\x64\x61\x62\x6C\x65","\x69\x73\x43\x65\x6C\x6C\x73\x45\x64\x69\x74\x61\x62\x6C\x65","\x53\x54\x59\x4C\x45\x5F\x45\x44\x49\x54\x41\x42\x4C\x45","\x73\x65\x74\x43\x65\x6C\x6C\x73\x45\x64\x69\x74\x61\x62\x6C\x65","\x69\x73\x43\x65\x6C\x6C\x73\x44\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74\x61\x62\x6C\x65","\x73\x65\x74\x43\x65\x6C\x6C\x73\x44\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74\x61\x62\x6C\x65","\x69\x73\x56\x61\x6C\x69\x64\x53\x6F\x75\x72\x63\x65","\x69\x73\x56\x61\x6C\x69\x64\x54\x61\x72\x67\x65\x74","\x73\x65\x74\x54\x6F\x6F\x6C\x74\x69\x70\x73","\x73\x65\x74\x50\x61\x6E\x6E\x69\x6E\x67","\x69\x73\x41\x75\x74\x6F\x53\x69\x7A\x65\x43\x65\x6C\x6C\x73","\x53\x54\x59\x4C\x45\x5F\x41\x55\x54\x4F\x53\x49\x5A\x45","\x73\x65\x74\x41\x75\x74\x6F\x53\x69\x7A\x65\x43\x65\x6C\x6C\x73","\x69\x73\x45\x78\x74\x65\x6E\x64\x50\x61\x72\x65\x6E\x74\x73","\x73\x65\x74\x45\x78\x74\x65\x6E\x64\x50\x61\x72\x65\x6E\x74\x73","\x73\x65\x74\x45\x78\x74\x65\x6E\x64\x50\x61\x72\x65\x6E\x74\x73\x4F\x6E\x41\x64\x64","\x69\x73\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x43\x68\x69\x6C\x64\x72\x65\x6E","\x73\x65\x74\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x43\x68\x69\x6C\x64\x72\x65\x6E","\x69\x73\x41\x6C\x6C\x6F\x77\x4F\x76\x65\x72\x6C\x61\x70\x50\x61\x72\x65\x6E\x74","\x53\x54\x59\x4C\x45\x5F\x46\x4F\x4C\x44\x41\x42\x4C\x45","\x69\x73\x56\x61\x6C\x69\x64\x44\x72\x6F\x70\x54\x61\x72\x67\x65\x74","\x69\x73\x53\x70\x6C\x69\x74\x54\x61\x72\x67\x65\x74","\x73\x65\x74\x44\x65\x66\x61\x75\x6C\x74\x50\x61\x72\x65\x6E\x74","\x68\x69\x74\x73\x53\x77\x69\x6D\x6C\x61\x6E\x65\x43\x6F\x6E\x74\x65\x6E\x74","\x67\x65\x74\x50\x6F\x69\x6E\x74\x46\x6F\x72\x45\x76\x65\x6E\x74","\x67\x65\x74\x43\x65\x6C\x6C\x73","\x67\x65\x74\x43\x65\x6C\x6C\x73\x42\x65\x79\x6F\x6E\x64","\x69\x73\x43\x65\x6C\x6C\x53\x65\x6C\x65\x63\x74\x65\x64","\x69\x73\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x45\x6D\x70\x74\x79","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x6F\x75\x6E\x74","\x61\x64\x64\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C","\x61\x64\x64\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C\x73","\x72\x65\x6D\x6F\x76\x65\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C","\x73\x65\x6C\x65\x63\x74\x52\x65\x67\x69\x6F\x6E","\x73\x65\x6C\x65\x63\x74\x43\x65\x6C\x6C\x73\x46\x6F\x72\x45\x76\x65\x6E\x74","\x73\x65\x6C\x65\x63\x74\x4E\x65\x78\x74\x43\x65\x6C\x6C","\x73\x65\x6C\x65\x63\x74\x43\x65\x6C\x6C","\x73\x65\x6C\x65\x63\x74\x50\x72\x65\x76\x69\x6F\x75\x73\x43\x65\x6C\x6C","\x73\x65\x6C\x65\x63\x74\x50\x61\x72\x65\x6E\x74\x43\x65\x6C\x6C","\x73\x65\x6C\x65\x63\x74\x43\x68\x69\x6C\x64\x43\x65\x6C\x6C","\x73\x65\x6C\x65\x63\x74\x41\x6C\x6C","\x73\x65\x6C\x65\x63\x74\x56\x65\x72\x74\x69\x63\x65\x73","\x73\x65\x6C\x65\x63\x74\x43\x65\x6C\x6C\x73","\x73\x65\x6C\x65\x63\x74\x45\x64\x67\x65\x73","\x63\x72\x65\x61\x74\x65\x48\x61\x6E\x64\x6C\x65\x72","\x75\x70\x64\x61\x74\x65\x4D\x6F\x75\x73\x65\x45\x76\x65\x6E\x74","\x4D\x4F\x55\x53\x45\x5F\x44\x4F\x57\x4E","\x6C\x61\x73\x74\x54\x6F\x75\x63\x68\x58","\x6C\x61\x73\x74\x4D\x6F\x75\x73\x65\x58","\x6C\x61\x73\x74\x4D\x6F\x75\x73\x65\x59","\x4D\x4F\x55\x53\x45\x5F\x55\x50","\x4D\x4F\x55\x53\x45\x5F\x4D\x4F\x56\x45","\x64\x65\x73\x74\x72\x6F\x79\x65\x64","\x74\x6F\x6F\x6C\x74\x69\x70","\x68\x65\x6C\x70","\x67\x72\x61\x70\x68\x52\x65\x6E\x64\x65\x72\x48\x69\x6E\x74","\x73\x68\x6F\x77\x56\x69\x65\x77\x70\x6F\x72\x74","\x73\x69\x7A\x65\x72\x53\x69\x7A\x65","\x75\x70\x64\x61\x74\x65\x4F\x6E\x50\x61\x6E","\x73\x69\x7A\x65\x72\x49\x6D\x61\x67\x65","\x73\x68\x61\x70\x65\x2D\x72\x65\x6E\x64\x65\x72\x69\x6E\x67","\x6F\x70\x74\x69\x6D\x69\x7A\x65\x53\x70\x65\x65\x64","\x69\x6D\x61\x67\x65\x2D\x72\x65\x6E\x64\x65\x72\x69\x6E\x67","\x75\x70\x64\x61\x74\x65\x48\x61\x6E\x64\x6C\x65\x72","\x75\x70\x64\x61\x74\x65","\x70\x61\x6E\x48\x61\x6E\x64\x6C\x65\x72","\x72\x65\x66\x72\x65\x73\x68\x48\x61\x6E\x64\x6C\x65\x72","\x73\x65\x6C\x65\x63\x74\x69\x6F\x6E\x42\x6F\x72\x64\x65\x72","\x72\x65\x64\x69\x72\x65\x63\x74\x4D\x6F\x75\x73\x65\x45\x76\x65\x6E\x74\x73","\x73\x69\x7A\x65\x72","\x63\x72\x65\x61\x74\x65\x53\x69\x7A\x65\x72","\x73\x65\x74\x5A\x6F\x6F\x6D\x45\x6E\x61\x62\x6C\x65\x64","\x67\x65\x74\x53\x6F\x75\x72\x63\x65\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72\x53\x69\x7A\x65","\x67\x65\x74\x4F\x75\x74\x6C\x69\x6E\x65\x4F\x66\x66\x73\x65\x74","\x73\x74\x61\x72\x74\x58","\x73\x74\x61\x72\x74\x59","\x64\x78\x30","\x64\x79\x30","\x6E","\x76\x61\x6C\x69\x64\x4E\x65\x69\x67\x68\x62\x6F\x72\x73","\x74\x79\x70\x65\x45\x72\x72\x6F\x72","\x76\x61\x6C\x69\x64\x4E\x65\x69\x67\x68\x62\x6F\x72\x73\x41\x6C\x6C\x6F\x77\x65\x64","\x63\x68\x65\x63\x6B\x54\x65\x72\x6D\x69\x6E\x61\x6C","\x63\x68\x65\x63\x6B\x4E\x65\x69\x67\x68\x62\x6F\x72\x73","\x63\x68\x65\x63\x6B\x54\x79\x70\x65","\x75\x6E\x64\x6F\x48\x61\x6E\x64\x6C\x65\x72","\x62\x75\x62\x62\x6C\x69\x6E\x67","\x69\x73\x42\x75\x62\x62\x6C\x69\x6E\x67","\x73\x65\x74\x42\x75\x62\x62\x6C\x69\x6E\x67","\x67\x65\x74\x4C\x61\x79\x6F\x75\x74","\x67\x65\x74\x43\x65\x6C\x6C\x73\x46\x6F\x72\x43\x68\x61\x6E\x67\x65\x73","\x67\x65\x74\x43\x65\x6C\x6C\x73\x46\x6F\x72\x43\x68\x61\x6E\x67\x65","\x65\x78\x65\x63\x75\x74\x65\x4C\x61\x79\x6F\x75\x74","\x72\x65\x73\x69\x7A\x65\x48\x61\x6E\x64\x6C\x65\x72","\x66\x6F\x6C\x64\x48\x61\x6E\x64\x6C\x65\x72","\x73\x68\x69\x66\x74\x52\x69\x67\x68\x74\x77\x61\x72\x64\x73","\x73\x68\x69\x66\x74\x44\x6F\x77\x6E\x77\x61\x72\x64\x73","\x69\x73\x43\x65\x6C\x6C\x49\x67\x6E\x6F\x72\x65\x64","\x69\x73\x43\x65\x6C\x6C\x53\x68\x69\x66\x74\x61\x62\x6C\x65","\x69\x73\x53\x68\x69\x66\x74\x52\x69\x67\x68\x74\x77\x61\x72\x64\x73","\x73\x65\x74\x53\x68\x69\x66\x74\x52\x69\x67\x68\x74\x77\x61\x72\x64\x73","\x69\x73\x53\x68\x69\x66\x74\x44\x6F\x77\x6E\x77\x61\x72\x64\x73","\x73\x65\x74\x53\x68\x69\x66\x74\x44\x6F\x77\x6E\x77\x61\x72\x64\x73","\x63\x65\x6C\x6C\x52\x65\x73\x69\x7A\x65\x64","\x67\x65\x74\x43\x65\x6C\x6C\x73\x54\x6F\x53\x68\x69\x66\x74","\x73\x68\x69\x66\x74\x43\x65\x6C\x6C","\x61\x64\x64\x45\x6E\x61\x62\x6C\x65\x64","\x72\x65\x73\x69\x7A\x65\x45\x6E\x61\x62\x6C\x65\x64","\x61\x64\x64\x48\x61\x6E\x64\x6C\x65\x72","\x69\x73\x41\x64\x64\x45\x6E\x61\x62\x6C\x65\x64","\x69\x73\x52\x65\x73\x69\x7A\x65\x45\x6E\x61\x62\x6C\x65\x64","\x73\x65\x74\x48\x6F\x72\x69\x7A\x6F\x6E\x74\x61\x6C","\x73\x65\x74\x41\x64\x64\x45\x6E\x61\x62\x6C\x65\x64","\x73\x65\x74\x52\x65\x73\x69\x7A\x65\x45\x6E\x61\x62\x6C\x65\x64","\x69\x73\x53\x77\x69\x6D\x6C\x61\x6E\x65\x49\x67\x6E\x6F\x72\x65\x64","\x69\x73\x43\x65\x6C\x6C\x48\x6F\x72\x69\x7A\x6F\x6E\x74\x61\x6C","\x73\x77\x69\x6D\x6C\x61\x6E\x65\x41\x64\x64\x65\x64","\x72\x65\x73\x69\x7A\x65\x53\x77\x69\x6D\x6C\x61\x6E\x65","\x6F\x6C\x64\x42\x6F\x75\x6E\x64\x73","\x6F\x6C\x64\x53\x74\x61\x74\x65\x73","\x6F\x6C\x64\x53\x63\x61\x6C\x65","\x64\x65\x6C\x74\x61\x73","\x63\x6F\x75\x6E\x74","\x58","\x59","\x61\x64\x64\x45\x64\x67\x65\x73","\x72\x65\x73\x6F\x6C\x76\x65","\x74\x72\x61\x6E\x73\x6C\x61\x74\x65\x53\x74\x61\x74\x65","\x72\x65\x76\x61\x6C\x69\x64\x61\x74\x65\x53\x74\x61\x74\x65","\x75\x70\x64\x61\x74\x65\x50\x72\x65\x76\x69\x65\x77\x53\x68\x61\x70\x65","\x6D\x61\x78\x43\x65\x6C\x6C\x73","\x68\x69\x67\x68\x6C\x69\x67\x68\x74\x45\x6E\x61\x62\x6C\x65\x64","\x63\x6C\x6F\x6E\x65\x45\x6E\x61\x62\x6C\x65\x64","\x6D\x6F\x76\x65\x45\x6E\x61\x62\x6C\x65\x64","\x67\x75\x69\x64\x65","\x63\x75\x72\x72\x65\x6E\x74\x44\x78","\x63\x75\x72\x72\x65\x6E\x74\x44\x79","\x75\x70\x64\x61\x74\x65\x43\x75\x72\x73\x6F\x72","\x73\x65\x6C\x65\x63\x74\x45\x6E\x61\x62\x6C\x65\x64","\x63\x6F\x6E\x6E\x65\x63\x74\x4F\x6E\x44\x72\x6F\x70","\x73\x63\x72\x6F\x6C\x6C\x4F\x6E\x4D\x6F\x76\x65","\x70\x72\x65\x76\x69\x65\x77\x43\x6F\x6C\x6F\x72","\x68\x74\x6D\x6C\x50\x72\x65\x76\x69\x65\x77","\x73\x63\x61\x6C\x65\x47\x72\x69\x64","\x72\x6F\x74\x61\x74\x69\x6F\x6E\x45\x6E\x61\x62\x6C\x65\x64","\x69\x73\x43\x6C\x6F\x6E\x65\x45\x6E\x61\x62\x6C\x65\x64","\x73\x65\x74\x43\x6C\x6F\x6E\x65\x45\x6E\x61\x62\x6C\x65\x64","\x69\x73\x4D\x6F\x76\x65\x45\x6E\x61\x62\x6C\x65\x64","\x73\x65\x74\x4D\x6F\x76\x65\x45\x6E\x61\x62\x6C\x65\x64","\x69\x73\x53\x65\x6C\x65\x63\x74\x45\x6E\x61\x62\x6C\x65\x64","\x73\x65\x74\x53\x65\x6C\x65\x63\x74\x45\x6E\x61\x62\x6C\x65\x64","\x69\x73\x52\x65\x6D\x6F\x76\x65\x43\x65\x6C\x6C\x73\x46\x72\x6F\x6D\x50\x61\x72\x65\x6E\x74","\x73\x65\x74\x52\x65\x6D\x6F\x76\x65\x43\x65\x6C\x6C\x73\x46\x72\x6F\x6D\x50\x61\x72\x65\x6E\x74","\x67\x65\x74\x49\x6E\x69\x74\x69\x61\x6C\x43\x65\x6C\x6C\x46\x6F\x72\x45\x76\x65\x6E\x74","\x69\x73\x44\x65\x6C\x61\x79\x65\x64\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E","\x64\x65\x6C\x61\x79\x65\x64\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E","\x63\x65\x6C\x6C\x57\x61\x73\x43\x6C\x69\x63\x6B\x65\x64","\x53\x45\x4C\x45\x43\x54","\x66\x69\x72\x73\x74","\x67\x65\x74\x50\x72\x65\x76\x69\x65\x77\x42\x6F\x75\x6E\x64\x73","\x63\x72\x65\x61\x74\x65\x50\x72\x65\x76\x69\x65\x77\x53\x68\x61\x70\x65","\x70\x42\x6F\x75\x6E\x64\x73","\x75\x73\x65\x47\x75\x69\x64\x65\x73\x46\x6F\x72\x45\x76\x65\x6E\x74","\x73\x65\x74\x48\x69\x67\x68\x6C\x69\x67\x68\x74\x43\x6F\x6C\x6F\x72","\x56\x41\x4C\x49\x44\x5F\x43\x4F\x4C\x4F\x52","\x49\x4E\x56\x41\x4C\x49\x44\x5F\x43\x4F\x4E\x4E\x45\x43\x54\x5F\x54\x41\x52\x47\x45\x54\x5F\x43\x4F\x4C\x4F\x52","\x43\x55\x52\x53\x4F\x52\x5F\x4D\x4F\x56\x41\x42\x4C\x45\x5F\x45\x44\x47\x45","\x43\x55\x52\x53\x4F\x52\x5F\x4D\x4F\x56\x41\x42\x4C\x45\x5F\x56\x45\x52\x54\x45\x58","\x73\x65\x6C\x65\x63\x74\x44\x65\x6C\x61\x79\x65\x64","\x64\x65\x73\x74\x72\x6F\x79\x53\x68\x61\x70\x65\x73","\x67\x75\x69\x64\x65\x73","\x73\x68\x6F\x75\x6C\x64\x52\x65\x6D\x6F\x76\x65\x43\x65\x6C\x6C\x73\x46\x72\x6F\x6D\x50\x61\x72\x65\x6E\x74","\x74\x72\x69\x67\x67\x65\x72\x58","\x74\x72\x69\x67\x67\x65\x72\x59","\x75\x73\x65\x50\x6F\x70\x75\x70\x54\x72\x69\x67\x67\x65\x72","\x75\x73\x65\x4C\x65\x66\x74\x42\x75\x74\x74\x6F\x6E\x46\x6F\x72\x50\x61\x6E\x6E\x69\x6E\x67","\x73\x65\x6C\x65\x63\x74\x4F\x6E\x50\x6F\x70\x75\x70","\x63\x6C\x65\x61\x72\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x4F\x6E\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64","\x69\x67\x6E\x6F\x72\x65\x43\x65\x6C\x6C","\x70\x72\x65\x76\x69\x65\x77\x45\x6E\x61\x62\x6C\x65\x64","\x75\x73\x65\x47\x72\x69\x64","\x69\x73\x50\x61\x6E\x6E\x69\x6E\x67\x45\x6E\x61\x62\x6C\x65\x64","\x73\x65\x74\x50\x61\x6E\x6E\x69\x6E\x67\x45\x6E\x61\x62\x6C\x65\x64","\x69\x73\x50\x61\x6E\x6E\x69\x6E\x67\x54\x72\x69\x67\x67\x65\x72","\x70\x6F\x70\x75\x70\x54\x72\x69\x67\x67\x65\x72","\x70\x61\x6E\x6E\x69\x6E\x67\x54\x72\x69\x67\x67\x65\x72","\x63\x6F\x6E\x73\x75\x6D\x65\x50\x61\x6E\x6E\x69\x6E\x67\x54\x72\x69\x67\x67\x65\x72","\x67\x65\x74\x43\x65\x6C\x6C\x46\x6F\x72\x50\x6F\x70\x75\x70\x45\x76\x65\x6E\x74","\x76\x61\x6C\x69\x64\x43\x6F\x6C\x6F\x72","\x44\x45\x46\x41\x55\x4C\x54\x5F\x56\x41\x4C\x49\x44\x5F\x43\x4F\x4C\x4F\x52","\x69\x6E\x76\x61\x6C\x69\x64\x43\x6F\x6C\x6F\x72","\x44\x45\x46\x41\x55\x4C\x54\x5F\x49\x4E\x56\x41\x4C\x49\x44\x5F\x43\x4F\x4C\x4F\x52","\x68\x6F\x74\x73\x70\x6F\x74","\x44\x45\x46\x41\x55\x4C\x54\x5F\x48\x4F\x54\x53\x50\x4F\x54","\x68\x6F\x74\x73\x70\x6F\x74\x45\x6E\x61\x62\x6C\x65\x64","\x63\x75\x72\x72\x65\x6E\x74\x43\x6F\x6C\x6F\x72","\x76\x61\x6C\x69\x64\x53\x74\x61\x74\x65","\x6D\x61\x72\x6B\x65\x64\x53\x74\x61\x74\x65","\x73\x65\x74\x48\x6F\x74\x73\x70\x6F\x74","\x67\x65\x74\x48\x6F\x74\x73\x70\x6F\x74","\x73\x65\x74\x48\x6F\x74\x73\x70\x6F\x74\x45\x6E\x61\x62\x6C\x65\x64","\x69\x73\x48\x6F\x74\x73\x70\x6F\x74\x45\x6E\x61\x62\x6C\x65\x64","\x68\x61\x73\x56\x61\x6C\x69\x64\x53\x74\x61\x74\x65","\x67\x65\x74\x56\x61\x6C\x69\x64\x53\x74\x61\x74\x65","\x67\x65\x74\x4D\x61\x72\x6B\x65\x64\x53\x74\x61\x74\x65","\x75\x6E\x6D\x61\x72\x6B","\x70\x72\x6F\x63\x65\x73\x73","\x69\x73\x56\x61\x6C\x69\x64\x53\x74\x61\x74\x65","\x67\x65\x74\x4D\x61\x72\x6B\x65\x72\x43\x6F\x6C\x6F\x72","\x6D\x61\x72\x6B\x43\x65\x6C\x6C","\x67\x65\x74\x53\x74\x61\x74\x65\x54\x6F\x4D\x61\x72\x6B","\x69\x6E\x74\x65\x72\x73\x65\x63\x74\x73\x48\x6F\x74\x73\x70\x6F\x74","\x72\x65\x73\x65\x74\x48\x61\x6E\x64\x6C\x65\x72","\x68\x61\x6E\x64\x6C\x65\x72\x73","\x6D\x61\x78\x48\x61\x6E\x64\x6C\x65\x72\x73","\x6D\x6F\x76\x65\x49\x63\x6F\x6E\x46\x72\x6F\x6E\x74","\x6D\x6F\x76\x65\x49\x63\x6F\x6E\x42\x61\x63\x6B","\x63\x6F\x6E\x6E\x65\x63\x74\x49\x6D\x61\x67\x65","\x74\x61\x72\x67\x65\x74\x43\x6F\x6E\x6E\x65\x63\x74\x49\x6D\x61\x67\x65","\x63\x72\x65\x61\x74\x65\x54\x61\x72\x67\x65\x74","\x6D\x61\x72\x6B\x65\x72","\x63\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74\x48\x61\x6E\x64\x6C\x65\x72","\x77\x61\x79\x70\x6F\x69\x6E\x74\x73\x45\x6E\x61\x62\x6C\x65\x64","\x74\x61\x70\x41\x6E\x64\x48\x6F\x6C\x64\x45\x6E\x61\x62\x6C\x65\x64","\x74\x61\x70\x41\x6E\x64\x48\x6F\x6C\x64\x44\x65\x6C\x61\x79","\x74\x61\x70\x41\x6E\x64\x48\x6F\x6C\x64\x49\x6E\x50\x72\x6F\x67\x72\x65\x73\x73","\x74\x61\x70\x41\x6E\x64\x48\x6F\x6C\x64\x56\x61\x6C\x69\x64","\x74\x61\x70\x41\x6E\x64\x48\x6F\x6C\x64\x54\x6F\x6C\x65\x72\x61\x6E\x63\x65","\x69\x6E\x69\x74\x69\x61\x6C\x54\x6F\x75\x63\x68\x58","\x69\x6E\x69\x74\x69\x61\x6C\x54\x6F\x75\x63\x68\x59","\x69\x67\x6E\x6F\x72\x65\x4D\x6F\x75\x73\x65\x44\x6F\x77\x6E","\x63\x6F\x6E\x6E\x65\x63\x74\x49\x63\x6F\x6E\x4F\x66\x66\x73\x65\x74","\x65\x64\x67\x65\x53\x74\x61\x74\x65","\x64\x72\x69\x6C\x6C\x48\x61\x6E\x64\x6C\x65\x72","\x6D\x6F\x75\x73\x65\x44\x6F\x77\x6E\x43\x6F\x75\x6E\x74\x65\x72","\x6D\x6F\x76\x65\x50\x72\x65\x76\x69\x65\x77\x41\x77\x61\x79","\x69\x73\x43\x72\x65\x61\x74\x65\x54\x61\x72\x67\x65\x74","\x73\x65\x74\x43\x72\x65\x61\x74\x65\x54\x61\x72\x67\x65\x74","\x69\x63\x6F\x6E\x53\x74\x61\x74\x65","\x69\x63\x6F\x6E\x73","\x72\x65\x64\x72\x61\x77\x49\x63\x6F\x6E\x73","\x64\x65\x73\x74\x72\x6F\x79\x49\x63\x6F\x6E\x73","\x69\x73\x43\x6F\x6E\x6E\x65\x63\x74\x61\x62\x6C\x65\x43\x65\x6C\x6C","\x69\x73\x43\x6F\x6E\x6E\x65\x63\x74\x69\x6E\x67","\x76\x61\x6C\x69\x64\x61\x74\x65\x43\x6F\x6E\x6E\x65\x63\x74\x69\x6F\x6E","\x63\x72\x65\x61\x74\x65\x45\x64\x67\x65\x53\x74\x61\x74\x65","\x67\x65\x74\x43\x6F\x6E\x6E\x65\x63\x74\x49\x6D\x61\x67\x65","\x69\x73\x4D\x6F\x76\x65\x49\x63\x6F\x6E\x54\x6F\x46\x72\x6F\x6E\x74\x46\x6F\x72\x53\x74\x61\x74\x65","\x63\x72\x65\x61\x74\x65\x49\x63\x6F\x6E\x73","\x43\x55\x52\x53\x4F\x52\x5F\x43\x4F\x4E\x4E\x45\x43\x54","\x63\x75\x72\x72\x65\x6E\x74\x53\x74\x61\x74\x65","\x69\x63\x6F\x6E","\x67\x65\x74\x49\x63\x6F\x6E\x50\x6F\x73\x69\x74\x69\x6F\x6E","\x69\x73\x53\x74\x61\x72\x74\x45\x76\x65\x6E\x74","\x63\x75\x72\x72\x65\x6E\x74\x46\x6F\x63\x75\x73","\x63\x75\x72\x72\x65\x6E\x74\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74","\x73\x6F\x75\x72\x63\x65\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74","\x77\x61\x79\x70\x6F\x69\x6E\x74\x73","\x74\x61\x70\x41\x6E\x64\x48\x6F\x6C\x64\x54\x68\x72\x65\x61\x64","\x63\x6C\x65\x61\x72\x54\x69\x6D\x65\x6F\x75\x74","\x74\x61\x70\x41\x6E\x64\x48\x6F\x6C\x64","\x73\x65\x6C\x65\x63\x74\x65\x64\x49\x63\x6F\x6E","\x69\x73\x49\x6D\x6D\x65\x64\x69\x61\x74\x65\x43\x6F\x6E\x6E\x65\x63\x74\x53\x6F\x75\x72\x63\x65","\x75\x70\x64\x61\x74\x65\x43\x75\x72\x72\x65\x6E\x74\x53\x74\x61\x74\x65","\x63\x6F\x6E\x76\x65\x72\x74\x57\x61\x79\x70\x6F\x69\x6E\x74","\x67\x65\x74\x54\x61\x72\x67\x65\x74\x50\x65\x72\x69\x6D\x65\x74\x65\x72\x50\x6F\x69\x6E\x74","\x67\x65\x74\x53\x6F\x75\x72\x63\x65\x50\x65\x72\x69\x6D\x65\x74\x65\x72\x50\x6F\x69\x6E\x74","\x64\x72\x61\x77\x50\x72\x65\x76\x69\x65\x77","\x75\x70\x64\x61\x74\x65\x49\x63\x6F\x6E\x73","\x69\x73\x53\x74\x6F\x70\x45\x76\x65\x6E\x74","\x61\x64\x64\x57\x61\x79\x70\x6F\x69\x6E\x74\x46\x6F\x72\x45\x76\x65\x6E\x74","\x67\x65\x74\x45\x64\x67\x65\x57\x69\x64\x74\x68","\x67\x65\x74\x45\x64\x67\x65\x43\x6F\x6C\x6F\x72","\x49\x4E\x56\x41\x4C\x49\x44\x5F\x43\x4F\x4C\x4F\x52","\x63\x72\x65\x61\x74\x65\x54\x61\x72\x67\x65\x74\x56\x65\x72\x74\x65\x78","\x67\x65\x74\x41\x6C\x69\x67\x6E\x6D\x65\x6E\x74\x54\x6F\x6C\x65\x72\x61\x6E\x63\x65","\x70\x6F\x69\x6E\x74\x49\x6D\x61\x67\x65","\x2F\x70\x6F\x69\x6E\x74\x2E\x67\x69\x66","\x68\x69\x67\x68\x6C\x69\x67\x68\x74\x43\x6F\x6C\x6F\x72","\x66\x6F\x63\x75\x73\x49\x63\x6F\x6E\x73","\x66\x6F\x63\x75\x73\x48\x69\x67\x68\x6C\x69\x67\x68\x74","\x66\x6F\x63\x75\x73\x50\x6F\x69\x6E\x74\x73","\x63\x75\x72\x72\x65\x6E\x74\x46\x6F\x63\x75\x73\x41\x72\x65\x61","\x67\x65\x74\x49\x6D\x61\x67\x65\x46\x6F\x72\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74","\x69\x73\x45\x76\x65\x6E\x74\x49\x67\x6E\x6F\x72\x65\x64","\x72\x65\x70\x61\x69\x6E\x74","\x64\x65\x66\x61\x75\x6C\x74\x4F\x70\x61\x63\x69\x74\x79","\x73\x68\x61\x72\x65\x64\x44\x69\x76","\x63\x75\x72\x72\x65\x6E\x74\x58","\x63\x75\x72\x72\x65\x6E\x74\x59","\x64\x72\x61\x67\x48\x61\x6E\x64\x6C\x65\x72","\x6D\x78\x52\x75\x62\x62\x65\x72\x62\x61\x6E\x64","\x73\x69\x6E\x67\x6C\x65\x53\x69\x7A\x65\x72","\x61\x6C\x6C\x6F\x77\x48\x61\x6E\x64\x6C\x65\x42\x6F\x75\x6E\x64\x73\x43\x68\x65\x63\x6B","\x68\x61\x6E\x64\x6C\x65\x49\x6D\x61\x67\x65","\x72\x6F\x74\x61\x74\x69\x6F\x6E\x52\x61\x73\x74\x65\x72","\x73\x65\x6C\x65\x63\x74\x69\x6F\x6E\x42\x6F\x75\x6E\x64\x73","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x42\x6F\x75\x6E\x64\x73","\x63\x72\x65\x61\x74\x65\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x53\x68\x61\x70\x65","\x73\x69\x7A\x65\x72\x73","\x6E\x2D\x72\x65\x73\x69\x7A\x65","\x6E\x65\x2D\x72\x65\x73\x69\x7A\x65","\x77\x2D\x72\x65\x73\x69\x7A\x65","\x65\x2D\x72\x65\x73\x69\x7A\x65","\x73\x77\x2D\x72\x65\x73\x69\x7A\x65","\x73\x2D\x72\x65\x73\x69\x7A\x65","\x73\x65\x2D\x72\x65\x73\x69\x7A\x65","\x6C\x61\x62\x65\x6C\x53\x68\x61\x70\x65","\x72\x6F\x74\x61\x74\x69\x6F\x6E\x53\x68\x61\x70\x65","\x48\x41\x4E\x44\x4C\x45\x5F\x53\x49\x5A\x45","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x6F\x6C\x6F\x72","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x53\x74\x72\x6F\x6B\x65\x57\x69\x64\x74\x68","\x69\x73\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x44\x61\x73\x68\x65\x64","\x56\x45\x52\x54\x45\x58\x5F\x53\x45\x4C\x45\x43\x54\x49\x4F\x4E\x5F\x43\x4F\x4C\x4F\x52","\x56\x45\x52\x54\x45\x58\x5F\x53\x45\x4C\x45\x43\x54\x49\x4F\x4E\x5F\x53\x54\x52\x4F\x4B\x45\x57\x49\x44\x54\x48","\x56\x45\x52\x54\x45\x58\x5F\x53\x45\x4C\x45\x43\x54\x49\x4F\x4E\x5F\x44\x41\x53\x48\x45\x44","\x63\x72\x65\x61\x74\x65\x53\x69\x7A\x65\x72\x53\x68\x61\x70\x65","\x69\x73\x53\x69\x7A\x65\x72\x56\x69\x73\x69\x62\x6C\x65","\x52\x4F\x54\x41\x54\x49\x4F\x4E\x5F\x48\x41\x4E\x44\x4C\x45","\x48\x41\x4E\x44\x4C\x45\x5F\x46\x49\x4C\x4C\x43\x4F\x4C\x4F\x52","\x6D\x6F\x76\x65\x53\x69\x7A\x65\x72\x54\x6F","\x67\x65\x74\x48\x61\x6E\x64\x6C\x65\x46\x6F\x72\x45\x76\x65\x6E\x74","\x4C\x41\x42\x45\x4C\x5F\x48\x41\x4E\x44\x4C\x45","\x70\x72\x65\x76\x69\x65\x77","\x63\x75\x72\x72\x65\x6E\x74\x41\x6C\x70\x68\x61","\x61\x74\x61\x6E","\x75\x6E\x69\x6F\x6E","\x72\x6F\x74\x61\x74\x65\x43\x65\x6C\x6C","\x6D\x6F\x76\x65\x43\x68\x69\x6C\x64\x72\x65\x6E","\x62\x65\x6E\x64\x73","\x72\x65\x6D\x6F\x76\x65\x45\x6E\x61\x62\x6C\x65\x64","\x73\x6E\x61\x70\x54\x6F\x54\x65\x72\x6D\x69\x6E\x61\x6C\x73","\x61\x62\x73\x70\x6F\x69\x6E\x74\x73","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x50\x6F\x69\x6E\x74\x73","\x69\x73\x41\x64\x64\x50\x6F\x69\x6E\x74\x45\x76\x65\x6E\x74","\x61\x64\x64\x50\x6F\x69\x6E\x74","\x63\x72\x65\x61\x74\x65\x42\x65\x6E\x64\x73","\x69\x6E\x69\x74\x42\x65\x6E\x64","\x43\x55\x52\x53\x4F\x52\x5F\x4C\x41\x42\x45\x4C\x5F\x48\x41\x4E\x44\x4C\x45","\x69\x73\x52\x65\x6D\x6F\x76\x65\x50\x6F\x69\x6E\x74\x45\x76\x65\x6E\x74","\x45\x44\x47\x45\x5F\x53\x45\x4C\x45\x43\x54\x49\x4F\x4E\x5F\x43\x4F\x4C\x4F\x52","\x45\x44\x47\x45\x5F\x53\x45\x4C\x45\x43\x54\x49\x4F\x4E\x5F\x53\x54\x52\x4F\x4B\x45\x57\x49\x44\x54\x48","\x45\x44\x47\x45\x5F\x53\x45\x4C\x45\x43\x54\x49\x4F\x4E\x5F\x44\x41\x53\x48\x45\x44","\x69\x73\x48\x61\x6E\x64\x6C\x65\x56\x69\x73\x69\x62\x6C\x65","\x63\x72\x65\x61\x74\x65\x48\x61\x6E\x64\x6C\x65\x53\x68\x61\x70\x65","\x69\x73\x48\x61\x6E\x64\x6C\x65\x45\x6E\x61\x62\x6C\x65\x64","\x43\x55\x52\x53\x4F\x52\x5F\x42\x45\x4E\x44\x5F\x48\x41\x4E\x44\x4C\x45","\x72\x65\x6D\x6F\x76\x65\x50\x6F\x69\x6E\x74","\x69\x73\x54\x61\x72\x67\x65\x74","\x69\x73\x4C\x61\x62\x65\x6C","\x63\x6C\x6F\x6E\x65\x50\x72\x65\x76\x69\x65\x77\x53\x74\x61\x74\x65","\x67\x65\x74\x53\x6E\x61\x70\x54\x6F\x54\x65\x72\x6D\x69\x6E\x61\x6C\x54\x6F\x6C\x65\x72\x61\x6E\x63\x65","\x67\x65\x74\x50\x72\x65\x76\x69\x65\x77\x54\x65\x72\x6D\x69\x6E\x61\x6C\x53\x74\x61\x74\x65","\x67\x65\x74\x50\x72\x65\x76\x69\x65\x77\x50\x6F\x69\x6E\x74\x73","\x75\x70\x64\x61\x74\x65\x50\x72\x65\x76\x69\x65\x77\x53\x74\x61\x74\x65","\x73\x65\x74\x50\x72\x65\x76\x69\x65\x77\x43\x6F\x6C\x6F\x72","\x6D\x6F\x76\x65\x4C\x61\x62\x65\x6C","\x63\x68\x61\x6E\x67\x65\x54\x65\x72\x6D\x69\x6E\x61\x6C\x50\x6F\x69\x6E\x74","\x63\x68\x61\x6E\x67\x65\x50\x6F\x69\x6E\x74\x73","\x61\x64\x64\x50\x6F\x69\x6E\x74\x41\x74","\x66\x69\x6E\x64\x4E\x65\x61\x72\x65\x73\x74\x53\x65\x67\x6D\x65\x6E\x74","\x67\x65\x74\x48\x61\x6E\x64\x6C\x65\x46\x69\x6C\x6C\x43\x6F\x6C\x6F\x72","\x4C\x4F\x43\x4B\x45\x44\x5F\x48\x41\x4E\x44\x4C\x45\x5F\x46\x49\x4C\x4C\x43\x4F\x4C\x4F\x52","\x43\x4F\x4E\x4E\x45\x43\x54\x5F\x48\x41\x4E\x44\x4C\x45\x5F\x46\x49\x4C\x4C\x43\x4F\x4C\x4F\x52","\x4C\x41\x42\x45\x4C\x5F\x48\x41\x4E\x44\x4C\x45\x5F\x53\x49\x5A\x45","\x72\x65\x64\x72\x61\x77\x49\x6E\x6E\x65\x72\x42\x65\x6E\x64\x73","\x66\x6C\x69\x70\x45\x6E\x61\x62\x6C\x65\x64","\x64\x6F\x75\x62\x6C\x65\x43\x6C\x69\x63\x6B\x4F\x72\x69\x65\x6E\x74\x61\x74\x69\x6F\x6E\x52\x65\x73\x6F\x75\x72\x63\x65","\x64\x6F\x75\x62\x6C\x65\x43\x6C\x69\x63\x6B\x4F\x72\x69\x65\x6E\x74\x61\x74\x69\x6F\x6E","\x63\x72\x65\x61\x74\x65\x56\x69\x72\x74\x75\x61\x6C\x42\x65\x6E\x64","\x67\x65\x74\x43\x75\x72\x73\x6F\x72\x46\x6F\x72\x42\x65\x6E\x64","\x45\x44\x47\x45\x53\x54\x59\x4C\x45\x5F\x54\x4F\x50\x54\x4F\x42\x4F\x54\x54\x4F\x4D","\x45\x44\x47\x45\x53\x54\x59\x4C\x45\x5F\x45\x4C\x42\x4F\x57","\x72\x6F\x77\x2D\x72\x65\x73\x69\x7A\x65","\x63\x6F\x6C\x2D\x72\x65\x73\x69\x7A\x65","\x6E\x6F\x72\x6D\x61\x6C\x4B\x65\x79\x73","\x73\x68\x69\x66\x74\x4B\x65\x79\x73","\x63\x6F\x6E\x74\x72\x6F\x6C\x4B\x65\x79\x73","\x63\x6F\x6E\x74\x72\x6F\x6C\x53\x68\x69\x66\x74\x4B\x65\x79\x73","\x6B\x65\x79\x44\x6F\x77\x6E","\x62\x69\x6E\x64\x4B\x65\x79","\x62\x69\x6E\x64\x53\x68\x69\x66\x74\x4B\x65\x79","\x62\x69\x6E\x64\x43\x6F\x6E\x74\x72\x6F\x6C\x4B\x65\x79","\x62\x69\x6E\x64\x43\x6F\x6E\x74\x72\x6F\x6C\x53\x68\x69\x66\x74\x4B\x65\x79","\x67\x65\x74\x46\x75\x6E\x63\x74\x69\x6F\x6E","\x69\x73\x47\x72\x61\x70\x68\x45\x76\x65\x6E\x74","\x68\x69\x64\x65\x4F\x6E\x48\x6F\x76\x65\x72","\x73\x65\x74\x48\x69\x64\x65\x4F\x6E\x48\x6F\x76\x65\x72","\x6D\x78\x54\x6F\x6F\x6C\x74\x69\x70","\x68\x69\x64\x65\x54\x6F\x6F\x6C\x74\x69\x70","\x73\x74\x61\x74\x65\x53\x6F\x75\x72\x63\x65","\x72\x65\x73\x65\x74\x54\x69\x6D\x65\x72","\x48\x49\x47\x48\x4C\x49\x47\x48\x54\x5F\x53\x54\x52\x4F\x4B\x45\x57\x49\x44\x54\x48","\x72\x65\x70\x61\x69\x6E\x74\x48\x61\x6E\x64\x6C\x65\x72","\x6B\x65\x65\x70\x4F\x6E\x54\x6F\x70","\x64\x72\x61\x77\x48\x69\x67\x68\x6C\x69\x67\x68\x74","\x65\x64\x69\x74\x6F\x72","\x68\x69\x64\x65\x50\x72\x6F\x70\x65\x72\x74\x69\x65\x73","\x62\x69\x6E\x64\x41\x63\x74\x69\x6F\x6E","\x63\x6F\x6E\x66\x69\x67","\x63\x72\x65\x61\x74\x65\x4D\x65\x6E\x75","\x63\x72\x65\x61\x74\x65\x43\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73","\x61\x64\x64\x49\x74\x65\x6D\x73","\x69\x66","\x61\x73","\x69\x63\x6F\x6E\x43\x6C\x73","\x61\x64\x64\x41\x63\x74\x69\x6F\x6E","\x73\x65\x70\x61\x72\x61\x74\x6F\x72","\x6E\x6F\x63\x65\x6C\x6C","\x6E\x63\x65\x6C\x6C\x73","\x6E\x6F\x74\x52\x6F\x6F\x74","\x6E\x6F\x6E\x45\x6D\x70\x74\x79","\x65\x78\x70\x61\x6E\x64\x61\x62\x6C\x65","\x63\x6F\x6C\x6C\x61\x70\x73\x61\x62\x6C\x65","\x76\x61\x6C\x69\x64\x52\x6F\x6F\x74","\x65\x6D\x70\x74\x79\x56\x61\x6C\x69\x64\x52\x6F\x6F\x74","\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E","\x74\x6F\x6F\x6C\x62\x61\x72","\x69\x6E\x73\x65\x72\x74\x46\x75\x6E\x63\x74\x69\x6F\x6E","\x2F\x73\x65\x70\x61\x72\x61\x74\x6F\x72\x2E\x67\x69\x66","\x61\x64\x64\x41\x63\x74\x69\x6F\x6E\x4F\x70\x74\x69\x6F\x6E","\x73\x65\x74\x4D\x6F\x64\x65","\x61\x64\x64\x50\x72\x6F\x74\x6F\x74\x79\x70\x65","\x69\x6E\x73\x74\x61\x6C\x6C\x44\x72\x6F\x70\x48\x61\x6E\x64\x6C\x65\x72","\x68\x6F\x72\x69\x7A\x6F\x6E\x74\x61\x6C\x46\x6C\x6F\x77","\x6D\x61\x6B\x65\x44\x72\x61\x67\x67\x61\x62\x6C\x65","\x61\x63\x74\x69\x6F\x6E\x73","\x61\x64\x64\x41\x63\x74\x69\x6F\x6E\x73","\x63\x79\x63\x6C\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x56\x61\x6C\x75\x65\x73","\x70\x6F\x70\x75\x70\x48\x61\x6E\x64\x6C\x65\x72","\x75\x6E\x64\x6F\x4D\x61\x6E\x61\x67\x65\x72","\x63\x72\x65\x61\x74\x65\x47\x72\x61\x70\x68","\x63\x72\x65\x61\x74\x65\x54\x6F\x6F\x6C\x62\x61\x72","\x6B\x65\x79\x48\x61\x6E\x64\x6C\x65\x72","\x63\x6F\x6E\x66\x69\x67\x75\x72\x65","\x63\x79\x63\x6C\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x4E\x61\x6D\x65","\x49\x53\x5F\x4C\x4F\x43\x41\x4C","\x63\x72\x65\x61\x74\x65\x53\x65\x73\x73\x69\x6F\x6E","\x2F\x72\x65\x73\x6F\x75\x72\x63\x65\x73\x2F\x65\x64\x69\x74\x6F\x72","\x61\x73\x6B\x5A\x6F\x6F\x6D\x52\x65\x73\x6F\x75\x72\x63\x65","\x61\x73\x6B\x5A\x6F\x6F\x6D","\x6C\x61\x73\x74\x53\x61\x76\x65\x64\x52\x65\x73\x6F\x75\x72\x63\x65","\x6C\x61\x73\x74\x53\x61\x76\x65\x64","\x63\x75\x72\x72\x65\x6E\x74\x46\x69\x6C\x65\x52\x65\x73\x6F\x75\x72\x63\x65","\x63\x75\x72\x72\x65\x6E\x74\x46\x69\x6C\x65","\x70\x72\x6F\x70\x65\x72\x74\x69\x65\x73\x52\x65\x73\x6F\x75\x72\x63\x65","\x74\x61\x73\x6B\x73\x52\x65\x73\x6F\x75\x72\x63\x65","\x74\x61\x73\x6B\x73","\x68\x65\x6C\x70\x52\x65\x73\x6F\x75\x72\x63\x65","\x6F\x75\x74\x6C\x69\x6E\x65\x52\x65\x73\x6F\x75\x72\x63\x65","\x64\x62\x6C\x43\x6C\x69\x63\x6B\x41\x63\x74\x69\x6F\x6E","\x73\x77\x69\x6D\x6C\x61\x6E\x65\x52\x65\x71\x75\x69\x72\x65\x64","\x66\x6F\x72\x63\x65\x64\x49\x6E\x73\x65\x72\x74\x69\x6E\x67","\x74\x65\x6D\x70\x6C\x61\x74\x65\x73","\x64\x65\x66\x61\x75\x6C\x74\x45\x64\x67\x65\x53\x74\x79\x6C\x65","\x64\x65\x66\x61\x75\x6C\x74\x47\x72\x6F\x75\x70","\x67\x72\x6F\x75\x70\x42\x6F\x72\x64\x65\x72\x53\x69\x7A\x65","\x66\x69\x6C\x65\x6E\x61\x6D\x65","\x70\x6F\x73\x74\x50\x61\x72\x61\x6D\x65\x74\x65\x72\x4E\x61\x6D\x65","\x75\x72\x6C\x50\x6F\x73\x74","\x75\x72\x6C\x49\x6D\x61\x67\x65","\x6C\x61\x79\x6F\x75\x74\x44\x69\x61\x67\x72\x61\x6D","\x73\x77\x69\x6D\x6C\x61\x6E\x65\x53\x70\x61\x63\x69\x6E\x67","\x6D\x61\x69\x6E\x74\x61\x69\x6E\x53\x77\x69\x6D\x6C\x61\x6E\x65\x73","\x6C\x61\x79\x6F\x75\x74\x53\x77\x69\x6D\x6C\x61\x6E\x65\x73","\x63\x79\x63\x6C\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x49\x6E\x64\x65\x78","\x74\x61\x73\x6B\x73\x57\x69\x6E\x64\x6F\x77\x49\x6D\x61\x67\x65","\x74\x61\x73\x6B\x73\x54\x6F\x70","\x68\x65\x6C\x70\x57\x69\x6E\x64\x6F\x77\x49\x6D\x61\x67\x65","\x75\x72\x6C\x48\x65\x6C\x70","\x68\x65\x6C\x70\x57\x69\x64\x74\x68","\x68\x65\x6C\x70\x48\x65\x69\x67\x68\x74","\x70\x72\x6F\x70\x65\x72\x74\x69\x65\x73\x57\x69\x64\x74\x68","\x70\x72\x6F\x70\x65\x72\x74\x69\x65\x73\x48\x65\x69\x67\x68\x74","\x6D\x6F\x76\x65\x50\x72\x6F\x70\x65\x72\x74\x69\x65\x73\x44\x69\x61\x6C\x6F\x67","\x76\x61\x6C\x69\x64\x61\x74\x69\x6E\x67","\x65\x78\x70\x6F\x72\x74\x49\x6D\x61\x67\x65","\x67\x65\x74\x55\x72\x6C\x49\x6D\x61\x67\x65","\x67\x65\x74\x56\x69\x65\x77\x58\x6D\x6C","\x5F\x62\x6C\x61\x6E\x6B","\x63\x75\x74","\x70\x61\x73\x74\x65","\x64\x65\x6C\x65\x74\x65","\x75\x6E\x67\x72\x6F\x75\x70","\x61\x63\x74\x75\x61\x6C\x53\x69\x7A\x65","\x73\x68\x6F\x77\x50\x72\x6F\x70\x65\x72\x74\x69\x65\x73","\x73\x65\x6C\x65\x63\x74\x4E\x6F\x6E\x65","\x74\x6F\x42\x61\x63\x6B","\x74\x6F\x46\x72\x6F\x6E\x74","\x73\x65\x6C\x65\x63\x74\x50\x72\x65\x76\x69\x6F\x75\x73","\x73\x65\x6C\x65\x63\x74\x4E\x65\x78\x74","\x73\x65\x6C\x65\x63\x74\x50\x61\x72\x65\x6E\x74","\x73\x65\x6C\x65\x63\x74\x43\x68\x69\x6C\x64","\x63\x6F\x6C\x6C\x61\x70\x73\x65\x41\x6C\x6C","\x65\x78\x70\x61\x6E\x64","\x65\x78\x70\x61\x6E\x64\x41\x6C\x6C","\x61\x6C\x69\x67\x6E\x43\x65\x6C\x6C\x73\x4C\x65\x66\x74","\x61\x6C\x69\x67\x6E\x43\x65\x6C\x6C\x73\x43\x65\x6E\x74\x65\x72","\x61\x6C\x69\x67\x6E\x43\x65\x6C\x6C\x73\x52\x69\x67\x68\x74","\x61\x6C\x69\x67\x6E\x43\x65\x6C\x6C\x73\x54\x6F\x70","\x61\x6C\x69\x67\x6E\x43\x65\x6C\x6C\x73\x4D\x69\x64\x64\x6C\x65","\x61\x6C\x69\x67\x6E\x43\x65\x6C\x6C\x73\x42\x6F\x74\x74\x6F\x6D","\x61\x6C\x69\x67\x6E\x46\x6F\x6E\x74\x4C\x65\x66\x74","\x61\x6C\x69\x67\x6E\x46\x6F\x6E\x74\x43\x65\x6E\x74\x65\x72","\x61\x6C\x69\x67\x6E\x46\x6F\x6E\x74\x52\x69\x67\x68\x74","\x61\x6C\x69\x67\x6E\x46\x6F\x6E\x74\x54\x6F\x70","\x61\x6C\x69\x67\x6E\x46\x6F\x6E\x74\x4D\x69\x64\x64\x6C\x65","\x61\x6C\x69\x67\x6E\x46\x6F\x6E\x74\x42\x6F\x74\x74\x6F\x6D","\x70\x72\x6F\x6D\x70\x74","\x74\x6F\x67\x67\x6C\x65\x54\x61\x73\x6B\x73","\x73\x68\x6F\x77\x54\x61\x73\x6B\x73","\x74\x6F\x67\x67\x6C\x65\x48\x65\x6C\x70","\x73\x68\x6F\x77\x48\x65\x6C\x70","\x74\x6F\x67\x67\x6C\x65\x4F\x75\x74\x6C\x69\x6E\x65","\x73\x68\x6F\x77\x4F\x75\x74\x6C\x69\x6E\x65","\x74\x6F\x67\x67\x6C\x65\x43\x6F\x6E\x73\x6F\x6C\x65","\x72\x65\x73\x65\x74\x48\x69\x73\x74\x6F\x72\x79","\x72\x65\x73\x65\x74\x46\x69\x72\x73\x74\x54\x69\x6D\x65","\x63\x6F\x6F\x6B\x69\x65","\x6D\x78\x67\x72\x61\x70\x68\x3D\x73\x65\x65\x6E\x3B\x20\x65\x78\x70\x69\x72\x65\x73\x3D\x46\x72\x69\x2C\x20\x32\x37\x20\x4A\x75\x6C\x20\x32\x30\x30\x31\x20\x30\x32\x3A\x34\x37\x3A\x31\x31\x20\x55\x54\x43\x3B\x20\x70\x61\x74\x68\x3D\x2F","\x43\x61\x6E\x6E\x6F\x74\x20\x65\x78\x65\x63\x75\x74\x65\x20","\x3A\x20","\x43\x61\x6E\x6E\x6F\x74\x20\x66\x69\x6E\x64\x20\x61\x63\x74\x69\x6F\x6E\x20","\x61\x64\x64\x54\x65\x6D\x70\x6C\x61\x74\x65","\x67\x65\x74\x54\x65\x6D\x70\x6C\x61\x74\x65","\x69\x6E\x73\x74\x61\x6C\x6C\x44\x62\x6C\x43\x6C\x69\x63\x6B\x48\x61\x6E\x64\x6C\x65\x72","\x69\x6E\x73\x74\x61\x6C\x6C\x55\x6E\x64\x6F\x48\x61\x6E\x64\x6C\x65\x72","\x69\x6E\x73\x74\x61\x6C\x6C\x44\x72\x69\x6C\x6C\x48\x61\x6E\x64\x6C\x65\x72","\x69\x6E\x73\x74\x61\x6C\x6C\x43\x68\x61\x6E\x67\x65\x48\x61\x6E\x64\x6C\x65\x72","\x69\x6E\x73\x74\x61\x6C\x6C\x49\x6E\x73\x65\x72\x74\x48\x61\x6E\x64\x6C\x65\x72","\x63\x72\x65\x61\x74\x65\x50\x6F\x70\x75\x70\x4D\x65\x6E\x75","\x63\x72\x65\x61\x74\x65\x53\x77\x69\x6D\x6C\x61\x6E\x65\x4D\x61\x6E\x61\x67\x65\x72","\x63\x72\x65\x61\x74\x65\x4C\x61\x79\x6F\x75\x74\x4D\x61\x6E\x61\x67\x65\x72","\x73\x77\x69\x6D\x6C\x61\x6E\x65\x4C\x61\x79\x6F\x75\x74","\x63\x72\x65\x61\x74\x65\x53\x77\x69\x6D\x6C\x61\x6E\x65\x4C\x61\x79\x6F\x75\x74","\x64\x69\x61\x67\x72\x61\x6D\x4C\x61\x79\x6F\x75\x74","\x63\x72\x65\x61\x74\x65\x44\x69\x61\x67\x72\x61\x6D\x4C\x61\x79\x6F\x75\x74","\x73\x65\x74\x47\x72\x61\x70\x68\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x72\x75\x62\x62\x65\x72\x62\x61\x6E\x64","\x73\x65\x74\x54\x6F\x6F\x6C\x62\x61\x72\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x73\x65\x74\x53\x74\x61\x74\x75\x73\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x74\x6F\x4C\x6F\x63\x61\x6C\x65\x53\x74\x72\x69\x6E\x67","\x73\x65\x74\x53\x74\x61\x74\x75\x73","\x73\x65\x74\x54\x69\x74\x6C\x65\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x67\x65\x74\x54\x69\x74\x6C\x65","\x74\x72\x65\x65\x4C\x61\x79\x6F\x75\x74","\x20\x3E\x20","\x67\x65\x74\x52\x6F\x6F\x74\x54\x69\x74\x6C\x65","\x63\x72\x65\x61\x74\x65\x47\x72\x6F\x75\x70","\x72\x65\x61\x64\x47\x72\x61\x70\x68\x4D\x6F\x64\x65\x6C","\x67\x65\x74\x55\x72\x6C\x50\x6F\x73\x74","\x77\x72\x69\x74\x65\x47\x72\x61\x70\x68\x4D\x6F\x64\x65\x6C","\x70\x6F\x73\x74\x44\x69\x61\x67\x72\x61\x6D","\x73\x77\x61\x70\x53\x74\x79\x6C\x65\x73","\x63\x72\x65\x61\x74\x65\x50\x72\x6F\x70\x65\x72\x74\x69\x65\x73","\x69\x73\x50\x72\x6F\x70\x65\x72\x74\x69\x65\x73\x56\x69\x73\x69\x62\x6C\x65","\x72\x65\x61\x64\x6F\x6E\x6C\x79","\x49\x44","\x53\x74\x79\x6C\x65","\x63\x72\x65\x61\x74\x65\x54\x61\x73\x6B\x73","\x72\x65\x66\x72\x65\x73\x68\x54\x61\x73\x6B\x73","\x66\x72\x61\x6D\x65\x42\x6F\x72\x64\x65\x72","\x63\x6F\x6E\x73\x75\x6D\x65\x43\x79\x63\x6C\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x63\x79\x63\x6C\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x69\x73\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x65\x64\x4D\x6F\x76\x69\x6E\x67","\x63\x6F\x64\x65\x63\x73","\x74\x65\x6D\x70\x6C\x61\x74\x65","\x61\x64\x64\x41\x6C\x69\x61\x73","\x61\x6C\x69\x61\x73\x65\x73","\x72\x65\x67\x69\x73\x74\x65\x72","\x65\x6E\x63\x6F\x64\x65\x44\x65\x66\x61\x75\x6C\x74\x73","\x67\x65\x74\x4F\x62\x6A\x65\x63\x74","\x72\x65\x66\x65\x72\x65\x6E\x63\x65","\x67\x65\x74\x43\x6F\x64\x65\x63","\x69\x6D\x70\x6F\x72\x74\x4E\x6F\x64\x65","\x6D\x78\x43\x6F\x64\x65\x63\x2E\x65\x6E\x63\x6F\x64\x65\x3A\x20\x4E\x6F\x20\x63\x6F\x64\x65\x63\x20\x66\x6F\x72\x20","\x43\x61\x6E\x6E\x6F\x74\x20\x64\x65\x63\x6F\x64\x65\x20","\x65\x6E\x63\x6F\x64\x65\x43\x65\x6C\x6C","\x69\x73\x43\x65\x6C\x6C\x43\x6F\x64\x65\x63","\x64\x65\x63\x6F\x64\x65\x43\x65\x6C\x6C","\x69\x6E\x73\x65\x72\x74\x49\x6E\x74\x6F\x47\x72\x61\x70\x68","\x65\x78\x63\x6C\x75\x64\x65","\x69\x64\x72\x65\x66\x73","\x6D\x61\x70\x70\x69\x6E\x67","\x72\x65\x76\x65\x72\x73\x65","\x63\x6C\x6F\x6E\x65\x54\x65\x6D\x70\x6C\x61\x74\x65","\x67\x65\x74\x46\x69\x65\x6C\x64\x4E\x61\x6D\x65","\x67\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65\x4E\x61\x6D\x65","\x69\x73\x45\x78\x63\x6C\x75\x64\x65\x64","\x69\x73\x52\x65\x66\x65\x72\x65\x6E\x63\x65","\x62\x65\x66\x6F\x72\x65\x45\x6E\x63\x6F\x64\x65","\x65\x6E\x63\x6F\x64\x65\x4F\x62\x6A\x65\x63\x74","\x61\x66\x74\x65\x72\x45\x6E\x63\x6F\x64\x65","\x65\x6E\x63\x6F\x64\x65\x56\x61\x6C\x75\x65","\x6D\x78\x4F\x62\x6A\x65\x63\x74\x43\x6F\x64\x65\x63\x2E\x65\x6E\x63\x6F\x64\x65\x3A\x20\x4E\x6F\x20\x49\x44\x20\x66\x6F\x72\x20","\x77\x72\x69\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x77\x72\x69\x74\x65\x50\x72\x69\x6D\x69\x74\x69\x76\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x77\x72\x69\x74\x65\x43\x6F\x6D\x70\x6C\x65\x78\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x63\x6F\x6E\x76\x65\x72\x74\x56\x61\x6C\x75\x65\x54\x6F\x58\x6D\x6C","\x6D\x78\x4F\x62\x6A\x65\x63\x74\x43\x6F\x64\x65\x63\x2E\x65\x6E\x63\x6F\x64\x65\x3A\x20\x4E\x6F\x20\x6E\x6F\x64\x65\x20\x66\x6F\x72\x20","\x63\x6F\x6E\x76\x65\x72\x74\x56\x61\x6C\x75\x65\x46\x72\x6F\x6D\x58\x6D\x6C","\x62\x65\x66\x6F\x72\x65\x44\x65\x63\x6F\x64\x65","\x64\x65\x63\x6F\x64\x65\x4E\x6F\x64\x65","\x61\x66\x74\x65\x72\x44\x65\x63\x6F\x64\x65","\x64\x65\x63\x6F\x64\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x64\x65\x63\x6F\x64\x65\x43\x68\x69\x6C\x64\x72\x65\x6E","\x64\x65\x63\x6F\x64\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x6D\x78\x4F\x62\x6A\x65\x63\x74\x43\x6F\x64\x65\x63\x2E\x64\x65\x63\x6F\x64\x65\x3A\x20\x4E\x6F\x20\x6F\x62\x6A\x65\x63\x74\x20\x66\x6F\x72\x20","\x70\x72\x6F\x63\x65\x73\x73\x49\x6E\x63\x6C\x75\x64\x65","\x64\x65\x63\x6F\x64\x65\x43\x68\x69\x6C\x64","\x67\x65\x74\x46\x69\x65\x6C\x64\x54\x65\x6D\x70\x6C\x61\x74\x65","\x61\x64\x64\x4F\x62\x6A\x65\x63\x74\x56\x61\x6C\x75\x65","\x69\x6E\x63\x6C\x75\x64\x65","\x72\x65\x6D\x6F\x76\x65\x57\x68\x69\x74\x65\x73\x70\x61\x63\x65","\x64\x65\x63\x6F\x64\x65\x52\x6F\x6F\x74","\x67\x72\x61\x70\x68\x4C\x69\x73\x74\x65\x6E\x65\x72\x73\x20\x65\x76\x65\x6E\x74\x4C\x69\x73\x74\x65\x6E\x65\x72\x73\x20\x76\x69\x65\x77\x20\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72\x20\x63\x65\x6C\x6C\x52\x65\x6E\x64\x65\x72\x65\x72\x20\x65\x64\x69\x74\x6F\x72\x20\x73\x65\x6C\x65\x63\x74\x69\x6F\x6E","\x6C\x61\x79\x65\x72","\x67\x65\x74\x53\x74\x72\x69\x6E\x67\x56\x61\x6C\x75\x65","\x6D\x78\x53\x74\x79\x6C\x65\x73\x68\x65\x65\x74\x43\x6F\x64\x65\x63\x2E\x64\x65\x63\x6F\x64\x65\x3A\x20\x73\x74\x79\x6C\x65\x73\x68\x65\x65\x74\x20","\x20\x6E\x6F\x74\x20\x66\x6F\x75\x6E\x64\x20\x74\x6F\x20\x65\x78\x74\x65\x6E\x64","\x70\x72\x65\x73\x73\x65\x64\x49\x63\x6F\x6E","\x6D\x6F\x64\x65","\x74\x6F\x67\x67\x6C\x65","\x2D\x2D\x2D","\x63\x65\x6C\x6C\x53\x74\x79\x6C\x65","\x54\x65\x6D\x70\x6C\x61\x74\x65\x20","\x20\x6E\x6F\x74\x20\x66\x6F\x75\x6E\x64","\x6D\x6F\x64\x69\x66\x69\x65\x64\x20\x6C\x61\x73\x74\x53\x6E\x61\x70\x73\x68\x6F\x74\x20\x69\x67\x6E\x6F\x72\x65\x64\x43\x68\x61\x6E\x67\x65\x73\x20\x75\x6E\x64\x6F\x4D\x61\x6E\x61\x67\x65\x72\x20\x67\x72\x61\x70\x68\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72\x20\x74\x6F\x6F\x6C\x62\x61\x72\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x41\x72\x72\x61\x79","\x64\x65\x63\x6F\x64\x65\x54\x65\x6D\x70\x6C\x61\x74\x65\x73","\x75\x69","\x64\x65\x63\x6F\x64\x65\x55\x69","\x73\x65\x74\x4D\x61\x70\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x72\x65\x73\x6F\x75\x72\x63\x65","\x62\x61\x73\x65\x6E\x61\x6D\x65"];var mxClient={VERSION:_0x2b73[0],IS_IE:0<= navigator[_0x2b73[3]][_0x2b73[2]](_0x2b73[1]),IS_IE6:0<= navigator[_0x2b73[3]][_0x2b73[2]](_0x2b73[4]),IS_QUIRKS:0<= navigator[_0x2b73[3]][_0x2b73[2]](_0x2b73[1])&& (null== document[_0x2b73[5]]|| 5== document[_0x2b73[5]]),VML_PREFIX:_0x2b73[6],OFFICE_PREFIX:_0x2b73[7],IS_NS:0<= navigator[_0x2b73[3]][_0x2b73[2]](_0x2b73[8])&& 0> navigator[_0x2b73[3]][_0x2b73[2]](_0x2b73[1]),IS_OP:0<= navigator[_0x2b73[3]][_0x2b73[2]](_0x2b73[9]),IS_OT:0> navigator[_0x2b73[3]][_0x2b73[2]](_0x2b73[10])&& 0> navigator[_0x2b73[3]][_0x2b73[2]](_0x2b73[11])&& 0> navigator[_0x2b73[3]][_0x2b73[2]](_0x2b73[12])&& 0> navigator[_0x2b73[3]][_0x2b73[2]](_0x2b73[13])&& 0> navigator[_0x2b73[3]][_0x2b73[2]](_0x2b73[14])&& 0> navigator[_0x2b73[3]][_0x2b73[2]](_0x2b73[15]),IS_SF:0<= navigator[_0x2b73[3]][_0x2b73[2]](_0x2b73[16])&& 0> navigator[_0x2b73[3]][_0x2b73[2]](_0x2b73[17]),IS_GC:0<= navigator[_0x2b73[3]][_0x2b73[2]](_0x2b73[17]),IS_MT:0<= navigator[_0x2b73[3]][_0x2b73[2]](_0x2b73[18])&& 0> navigator[_0x2b73[3]][_0x2b73[2]](_0x2b73[19])&& 0> navigator[_0x2b73[3]][_0x2b73[2]](_0x2b73[20])|| 0<= navigator[_0x2b73[3]][_0x2b73[2]](_0x2b73[21])&& 0> navigator[_0x2b73[3]][_0x2b73[2]](_0x2b73[22])&& 0> navigator[_0x2b73[3]][_0x2b73[2]](_0x2b73[23])|| 0<= navigator[_0x2b73[3]][_0x2b73[2]](_0x2b73[24])&& 0> navigator[_0x2b73[3]][_0x2b73[2]](_0x2b73[25])|| 0<= navigator[_0x2b73[3]][_0x2b73[2]](_0x2b73[26])&& 0> navigator[_0x2b73[3]][_0x2b73[2]](_0x2b73[27]),IS_SVG:0<= navigator[_0x2b73[3]][_0x2b73[2]](_0x2b73[18])|| 0<= navigator[_0x2b73[3]][_0x2b73[2]](_0x2b73[21])|| 0<= navigator[_0x2b73[3]][_0x2b73[2]](_0x2b73[28])|| 0<= navigator[_0x2b73[3]][_0x2b73[2]](_0x2b73[26])|| 0<= navigator[_0x2b73[3]][_0x2b73[2]](_0x2b73[29])|| 0<= navigator[_0x2b73[3]][_0x2b73[2]](_0x2b73[30])|| 0<= navigator[_0x2b73[3]][_0x2b73[2]](_0x2b73[16])|| 0<= navigator[_0x2b73[3]][_0x2b73[2]](_0x2b73[31])|| 0<= navigator[_0x2b73[3]][_0x2b73[2]](_0x2b73[9]),NO_FO:0<= navigator[_0x2b73[3]][_0x2b73[2]](_0x2b73[19])|| 0<= navigator[_0x2b73[3]][_0x2b73[2]](_0x2b73[22])|| 0<= navigator[_0x2b73[3]][_0x2b73[2]](_0x2b73[20])|| 0<= navigator[_0x2b73[3]][_0x2b73[2]](_0x2b73[23])|| 0<= navigator[_0x2b73[3]][_0x2b73[2]](_0x2b73[25])|| 0<= navigator[_0x2b73[3]][_0x2b73[2]](_0x2b73[27])|| 0<= navigator[_0x2b73[3]][_0x2b73[2]](_0x2b73[32])|| 0<= navigator[_0x2b73[3]][_0x2b73[2]](_0x2b73[33])|| 0<= navigator[_0x2b73[3]][_0x2b73[2]](_0x2b73[9])|| 0<= navigator[_0x2b73[3]][_0x2b73[2]](_0x2b73[1])|| 0<= navigator[_0x2b73[3]][_0x2b73[2]](_0x2b73[34]),IS_VML:_0x2b73[35]== navigator[_0x2b73[37]][_0x2b73[36]](),IS_MAC:0< navigator[_0x2b73[3]][_0x2b73[36]]()[_0x2b73[2]](_0x2b73[38]),IS_TOUCH:0< navigator[_0x2b73[3]][_0x2b73[36]]()[_0x2b73[2]](_0x2b73[39])|| 0< navigator[_0x2b73[3]][_0x2b73[36]]()[_0x2b73[2]](_0x2b73[40])|| 0< navigator[_0x2b73[3]][_0x2b73[36]]()[_0x2b73[2]](_0x2b73[41])|| 0< navigator[_0x2b73[3]][_0x2b73[36]]()[_0x2b73[2]](_0x2b73[42]),IS_LOCAL:0> document[_0x2b73[45]][_0x2b73[44]][_0x2b73[2]](_0x2b73[43])&& 0> document[_0x2b73[45]][_0x2b73[44]][_0x2b73[2]](_0x2b73[46]),isBrowserSupported:function(){return mxClient[_0x2b73[47]]|| mxClient[_0x2b73[48]]},link:function(_0xff22x2,_0xff22x3,_0xff22x4){_0xff22x4= _0xff22x4|| document;if(mxClient[_0x2b73[49]]){_0xff22x4[_0x2b73[53]](_0x2b73[50]+ _0xff22x2+ _0x2b73[51]+ _0xff22x3+ _0x2b73[52])}else {var _0xff22x5=_0xff22x4[_0x2b73[55]](_0x2b73[54]);_0xff22x5[_0x2b73[57]](_0x2b73[56],_0xff22x2);_0xff22x5[_0x2b73[57]](_0x2b73[44],_0xff22x3);_0xff22x5[_0x2b73[57]](_0x2b73[58],_0x2b73[59]);_0xff22x5[_0x2b73[57]](_0x2b73[60],_0x2b73[61]);_0xff22x4[_0x2b73[64]](_0x2b73[63])[0][_0x2b73[62]](_0xff22x5)}},include:function(_0xff22x2){document[_0x2b73[53]](_0x2b73[65]+ _0xff22x2+ _0x2b73[66])},dispose:function(){for(var _0xff22x2=0;_0xff22x2< mxEvent[_0x2b73[68]][_0x2b73[67]];_0xff22x2++){null!= mxEvent[_0x2b73[68]][_0xff22x2][_0x2b73[69]]&& mxEvent[_0x2b73[70]](mxEvent[_0x2b73[68]][_0xff22x2])}}};mxClient[_0x2b73[71]]&& mxClient[_0x2b73[72]]?mxClient[_0x2b73[73]]= _0x2b73[74]:mxClient[_0x2b73[75]]|| mxClient[_0x2b73[76]]?mxClient[_0x2b73[73]]= _0x2b73[77]:mxClient[_0x2b73[78]]?mxClient[_0x2b73[73]]= _0x2b73[79]:mxClient[_0x2b73[80]]&& 9<= document[_0x2b73[5]]&& (mxClient[_0x2b73[73]]= _0x2b73[81]);_0x2b73[82]== typeof mxLoadResources&& (mxLoadResources= !0);_0x2b73[82]== typeof mxResourceExtension&& (mxResourceExtension= _0x2b73[83]);_0x2b73[82]== typeof mxLoadStylesheets&& (mxLoadStylesheets= !0);_0x2b73[82]!= typeof mxBasePath&& 0< mxBasePath[_0x2b73[67]]?(_0x2b73[84]== mxBasePath[_0x2b73[85]](mxBasePath[_0x2b73[67]]- 1)&& (mxBasePath= mxBasePath[_0x2b73[85]](0,mxBasePath[_0x2b73[67]]- 1)),mxClient[_0x2b73[86]]= mxBasePath):mxClient[_0x2b73[86]]= _0x2b73[87];_0x2b73[82]!= typeof mxImageBasePath&& 0< mxImageBasePath[_0x2b73[67]]?(_0x2b73[84]== mxImageBasePath[_0x2b73[85]](mxImageBasePath[_0x2b73[67]]- 1)&& (mxImageBasePath= mxImageBasePath[_0x2b73[85]](0,mxImageBasePath[_0x2b73[67]]- 1)),mxClient[_0x2b73[88]]= mxImageBasePath):mxClient[_0x2b73[88]]= mxClient[_0x2b73[86]]+ _0x2b73[89];mxClient[_0x2b73[90]]= _0x2b73[82]!= typeof mxLanguage?mxLanguage:mxClient[_0x2b73[80]]?navigator[_0x2b73[91]]:navigator[_0x2b73[90]];mxClient[_0x2b73[92]]= _0x2b73[82]!= typeof mxDefaultLanguage?mxDefaultLanguage:_0x2b73[93];mxLoadStylesheets&& mxClient[_0x2b73[54]](_0x2b73[94],mxClient[_0x2b73[86]]+ _0x2b73[95]);_0x2b73[82]!= typeof mxLanguages&& (mxClient[_0x2b73[96]]= mxLanguages);if(mxClient[_0x2b73[80]]){if(9<= document[_0x2b73[5]]){mxClient[_0x2b73[47]]= !1,mxClient[_0x2b73[48]]= !0}else {8== document[_0x2b73[5]]?(document[_0x2b73[100]][_0x2b73[99]](mxClient.VML_PREFIX,_0x2b73[97],_0x2b73[98]),document[_0x2b73[100]][_0x2b73[99]](mxClient.OFFICE_PREFIX,_0x2b73[101],_0x2b73[98])):(document[_0x2b73[100]][_0x2b73[99]](mxClient.VML_PREFIX,_0x2b73[97]),document[_0x2b73[100]][_0x2b73[99]](mxClient.OFFICE_PREFIX,_0x2b73[101]));var ss=document[_0x2b73[102]]();ss[_0x2b73[103]]= _0x2b73[104];mxLoadStylesheets&& mxClient[_0x2b73[54]](_0x2b73[94],mxClient[_0x2b73[86]]+ _0x2b73[105])};window[_0x2b73[108]](_0x2b73[106],mxClient[_0x2b73[107]])};var mxLog={consoleName:_0x2b73[109],TRACE:!1,DEBUG:!0,WARN:!0,buffer:_0x2b73[110],init:function(){if(null== mxLog[_0x2b73[111]]&& null!= document[_0x2b73[112]]){var _0xff22x2=mxLog[_0x2b73[113]]+ _0x2b73[114]+ mxClient[_0x2b73[115]],_0xff22x3=document[_0x2b73[55]](_0x2b73[116]);_0xff22x3[_0x2b73[57]](_0x2b73[117],_0x2b73[118]);_0xff22x3[_0x2b73[57]](_0x2b73[119],_0x2b73[118]);var _0xff22x4=document[_0x2b73[55]](_0x2b73[120]),_0xff22x5=document[_0x2b73[55]](_0x2b73[121]),_0xff22x9=document[_0x2b73[55]](_0x2b73[122]);_0xff22x9[_0x2b73[124]][_0x2b73[123]]= _0x2b73[125];mxLog[_0x2b73[126]]= document[_0x2b73[55]](_0x2b73[126]);mxLog[_0x2b73[126]][_0x2b73[57]](_0x2b73[127],_0x2b73[128]);mxLog[_0x2b73[126]][_0x2b73[124]][_0x2b73[119]]= _0x2b73[118];mxLog[_0x2b73[126]][_0x2b73[124]][_0x2b73[129]]= _0x2b73[130];mxLog[_0x2b73[126]][_0x2b73[131]]= mxLog[_0x2b73[132]];mxLog[_0x2b73[126]][_0x2b73[124]][_0x2b73[117]]= mxClient[_0x2b73[133]]&& _0x2b73[134]!= document[_0x2b73[135]]?_0x2b73[136]:_0x2b73[118];_0xff22x9[_0x2b73[62]](mxLog[_0x2b73[126]]);_0xff22x5[_0x2b73[62]](_0xff22x9);_0xff22x4[_0x2b73[62]](_0xff22x5);_0xff22x5= document[_0x2b73[55]](_0x2b73[121]);mxLog[_0x2b73[122]]= document[_0x2b73[55]](_0x2b73[122]);mxLog[_0x2b73[122]][_0x2b73[124]][_0x2b73[123]]= _0x2b73[125];mxLog[_0x2b73[122]][_0x2b73[57]](_0x2b73[119],_0x2b73[137]);_0xff22x5[_0x2b73[62]](mxLog[_0x2b73[122]]);_0xff22x4[_0x2b73[62]](_0xff22x5);_0xff22x3[_0x2b73[62]](_0xff22x4);mxLog[_0x2b73[140]](_0x2b73[138],function(_0xff22x2){mxLog[_0x2b73[139]]()});mxLog[_0x2b73[140]](_0x2b73[141],function(_0xff22x2){_0xff22x2= mxUtils[_0x2b73[142]](document[_0x2b73[112]]);mxLog[_0x2b73[143]](_0xff22x2)});mxLog[_0x2b73[140]](_0x2b73[144],function(_0xff22x2){mxLog[_0x2b73[145]]= !mxLog[_0x2b73[145]];mxLog[_0x2b73[145]]?mxLog[_0x2b73[143]](_0x2b73[146]):mxLog[_0x2b73[143]](_0x2b73[147])});mxLog[_0x2b73[140]](_0x2b73[148],function(_0xff22x2){try{mxUtils[_0x2b73[149]](mxLog[_0x2b73[126]][_0x2b73[131]])}catch(_0xff22x3){mxUtils[_0x2b73[150]](_0xff22x3)}});mxLog[_0x2b73[140]](_0x2b73[151],function(_0xff22x2){try{mxUtils[_0x2b73[152]](mxLog[_0x2b73[126]][_0x2b73[131]])}catch(_0xff22x3){mxUtils[_0x2b73[150]](_0xff22x3)}});mxLog[_0x2b73[140]](_0x2b73[153],function(_0xff22x2){mxLog[_0x2b73[126]][_0x2b73[131]]= _0x2b73[110]});_0xff22x5= _0xff22x4= 0;_0x2b73[154]=== typeof window[_0x2b73[155]]?(_0xff22x4= window[_0x2b73[156]],_0xff22x5= window[_0x2b73[155]]):(_0xff22x4= document[_0x2b73[158]][_0x2b73[157]]|| document[_0x2b73[112]][_0x2b73[157]],_0xff22x5= document[_0x2b73[112]][_0x2b73[159]]);mxLog[_0x2b73[111]]= new mxWindow(_0xff22x2,_0xff22x3,Math[_0x2b73[160]](0,_0xff22x5- 320),Math[_0x2b73[160]](0,_0xff22x4- 210),300,160);mxLog[_0x2b73[111]][_0x2b73[161]](!0);mxLog[_0x2b73[111]][_0x2b73[162]](!1);mxLog[_0x2b73[111]][_0x2b73[163]](!0);mxLog[_0x2b73[111]][_0x2b73[164]](!0);mxLog[_0x2b73[111]][_0x2b73[165]]= !1;if((mxClient[_0x2b73[133]]|| mxClient[_0x2b73[80]])&& !mxClient[_0x2b73[76]]&& !mxClient[_0x2b73[75]]&& _0x2b73[134]!= document[_0x2b73[135]]){var _0xff22xa=mxLog[_0x2b73[111]][_0x2b73[166]](),_0xff22x2=function(_0xff22x2,_0xff22x3){mxLog[_0x2b73[126]][_0x2b73[124]][_0x2b73[119]]= Math[_0x2b73[160]](0,_0xff22xa[_0x2b73[167]]- 70)+ _0x2b73[168]};mxLog[_0x2b73[111]][_0x2b73[169]](mxEvent.RESIZE_END,_0xff22x2);mxLog[_0x2b73[111]][_0x2b73[169]](mxEvent.MAXIMIZE,_0xff22x2);mxLog[_0x2b73[111]][_0x2b73[169]](mxEvent.NORMALIZE,_0xff22x2);mxLog[_0x2b73[126]][_0x2b73[124]][_0x2b73[119]]= _0x2b73[170]}}},info:function(){mxLog[_0x2b73[171]](mxUtils.toString(navigator))},addButton:function(_0xff22x2,_0xff22x3){var _0xff22x4=document[_0x2b73[55]](_0x2b73[172]);mxUtils[_0x2b73[53]](_0xff22x4,_0xff22x2);mxEvent[_0x2b73[169]](_0xff22x4,_0x2b73[173],_0xff22x3);mxLog[_0x2b73[122]][_0x2b73[62]](_0xff22x4)},isVisible:function(){return null!= mxLog[_0x2b73[111]]?mxLog[_0x2b73[111]][_0x2b73[174]]():!1},show:function(){mxLog[_0x2b73[175]](!0)},setVisible:function(_0xff22x2){null== mxLog[_0x2b73[111]]&& mxLog[_0x2b73[176]]();null!= mxLog[_0x2b73[111]]&& mxLog[_0x2b73[111]][_0x2b73[175]](_0xff22x2)},enter:function(_0xff22x2){if(mxLog[_0x2b73[145]]){return mxLog[_0x2b73[171]](_0x2b73[177]+ _0xff22x2),( new Date)[_0x2b73[178]]()}},leave:function(_0xff22x2,_0xff22x3){if(mxLog[_0x2b73[145]]){var _0xff22x4=0!= _0xff22x3?_0x2b73[179]+ (( new Date)[_0x2b73[178]]()- _0xff22x3)+ _0x2b73[180]:_0x2b73[110];mxLog[_0x2b73[171]](_0x2b73[181]+ _0xff22x2+ _0xff22x4)}},debug:function(){mxLog[_0x2b73[182]]&& mxLog[_0x2b73[171]][_0x2b73[183]](this,arguments)},warn:function(){mxLog[_0x2b73[184]]&& mxLog[_0x2b73[171]][_0x2b73[183]](this,arguments)},write:function(){for(var _0xff22x2=_0x2b73[110],_0xff22x3=0;_0xff22x3< arguments[_0x2b73[67]];_0xff22x3++){_0xff22x2+= arguments[_0xff22x3],_0xff22x3< arguments[_0x2b73[67]]- 1&& (_0xff22x2+= _0x2b73[185])};null!= mxLog[_0x2b73[126]]?(mxLog[_0x2b73[126]][_0x2b73[131]]+= _0xff22x2,0<= navigator[_0x2b73[3]][_0x2b73[2]](_0x2b73[186])&& (mxLog[_0x2b73[126]][_0x2b73[124]][_0x2b73[187]]= _0x2b73[188],mxLog[_0x2b73[126]][_0x2b73[124]][_0x2b73[187]]= _0x2b73[189]),mxLog[_0x2b73[126]][_0x2b73[190]]= mxLog[_0x2b73[126]][_0x2b73[191]]):mxLog[_0x2b73[132]]+= _0xff22x2},writeln:function(){for(var _0xff22x2=_0x2b73[110],_0xff22x3=0;_0xff22x3< arguments[_0x2b73[67]];_0xff22x3++){_0xff22x2+= arguments[_0xff22x3],_0xff22x3< arguments[_0x2b73[67]]- 1&& (_0xff22x2+= _0x2b73[185])};mxLog[_0x2b73[53]](_0xff22x2+ _0x2b73[192])}},mxObjectIdentity={FIELD_NAME:_0x2b73[193],counter:0,get:function(_0xff22x2){if(_0x2b73[194]== typeof _0xff22x2&& null== _0xff22x2[mxObjectIdentity[_0x2b73[195]]]){var _0xff22x3=mxUtils[_0x2b73[197]](_0xff22x2[_0x2b73[196]]);_0xff22x2[mxObjectIdentity[_0x2b73[195]]]= _0xff22x3+ _0x2b73[198]+ mxObjectIdentity[_0x2b73[199]]++};return _0xff22x2[mxObjectIdentity[_0x2b73[195]]]},clear:function(_0xff22x2){_0x2b73[194]== typeof _0xff22x2&& delete _0xff22x2[mxObjectIdentity[_0x2b73[195]]]}};function mxDictionary(){this[_0x2b73[200]]()}mxDictionary[_0x2b73[202]][_0x2b73[201]]= null;mxDictionary[_0x2b73[202]][_0x2b73[200]]= function(){this[_0x2b73[201]]= {}};mxDictionary[_0x2b73[202]][_0x2b73[203]]= function(_0xff22x2){_0xff22x2= mxObjectIdentity[_0x2b73[203]](_0xff22x2);return this[_0x2b73[201]][_0xff22x2]};mxDictionary[_0x2b73[202]][_0x2b73[204]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=mxObjectIdentity[_0x2b73[203]](_0xff22x2),_0xff22x5=this[_0x2b73[201]][_0xff22x4];this[_0x2b73[201]][_0xff22x4]= _0xff22x3;return _0xff22x5};mxDictionary[_0x2b73[202]][_0x2b73[205]]= function(_0xff22x2){_0xff22x2= mxObjectIdentity[_0x2b73[203]](_0xff22x2);var _0xff22x3=this[_0x2b73[201]][_0xff22x2];delete this[_0x2b73[201]][_0xff22x2];return _0xff22x3};mxDictionary[_0x2b73[202]][_0x2b73[206]]= function(){var _0xff22x2=[],_0xff22x3;for(_0xff22x3 in this[_0x2b73[201]]){_0xff22x2[_0x2b73[207]](_0xff22x3)};return _0xff22x2};mxDictionary[_0x2b73[202]][_0x2b73[208]]= function(){var _0xff22x2=[],_0xff22x3;for(_0xff22x3 in this[_0x2b73[201]]){_0xff22x2[_0x2b73[207]](this[_0x2b73[201]][_0xff22x3])};return _0xff22x2};mxDictionary[_0x2b73[202]][_0x2b73[209]]= function(_0xff22x2){for(var _0xff22x3 in this[_0x2b73[201]]){_0xff22x2(_0xff22x3,this[_0x2b73[201]][_0xff22x3])}};var mxResources={resources:[],extension:mxResourceExtension,resourcesEncoded:!1,loadDefaultBundle:!0,loadSpecialBundle:!0,isLanguageSupported:function(_0xff22x2){return null!= mxClient[_0x2b73[96]]?0<= mxUtils[_0x2b73[2]](mxClient[_0x2b73[96]],_0xff22x2):!0},getDefaultBundle:function(_0xff22x2,_0xff22x3){return mxResources[_0x2b73[210]]|| !mxResources[_0x2b73[211]](_0xff22x3)?_0xff22x2+ mxResources[_0x2b73[212]]:null},getSpecialBundle:function(_0xff22x2,_0xff22x3){if(null== mxClient[_0x2b73[96]]|| !this[_0x2b73[211]](_0xff22x3)){var _0xff22x4=_0xff22x3[_0x2b73[2]](_0x2b73[213]);0< _0xff22x4&& (_0xff22x3= _0xff22x3[_0x2b73[85]](0,_0xff22x4))};return mxResources[_0x2b73[214]]&& mxResources[_0x2b73[211]](_0xff22x3)&& _0xff22x3!= mxClient[_0x2b73[92]]?_0xff22x2+ _0x2b73[215]+ _0xff22x3+ mxResources[_0x2b73[212]]:null},add:function(_0xff22x2,_0xff22x3){_0xff22x3= null!= _0xff22x3?_0xff22x3:mxClient[_0x2b73[90]][_0x2b73[216]]();if(_0xff22x3!= mxConstants[_0x2b73[217]]){var _0xff22x4=mxResources[_0x2b73[218]](_0xff22x2,_0xff22x3);if(null!= _0xff22x4){try{var _0xff22x5=mxUtils[_0x2b73[219]](_0xff22x4);_0xff22x5[_0x2b73[220]]()&& mxResources[_0x2b73[222]](_0xff22x5[_0x2b73[221]]())}catch(e){}};_0xff22x4= mxResources[_0x2b73[223]](_0xff22x2,_0xff22x3);if(null!= _0xff22x4){try{_0xff22x5= mxUtils[_0x2b73[219]](_0xff22x4),_0xff22x5[_0x2b73[220]]()&& mxResources[_0x2b73[222]](_0xff22x5[_0x2b73[221]]())}catch(f){}}}},parse:function(_0xff22x2){if(null!= _0xff22x2){_0xff22x2= _0xff22x2[_0x2b73[224]](_0x2b73[192]);for(var _0xff22x3=0;_0xff22x3< _0xff22x2[_0x2b73[67]];_0xff22x3++){if(_0x2b73[198]!= _0xff22x2[_0xff22x3][_0x2b73[225]](0)){var _0xff22x4=_0xff22x2[_0xff22x3][_0x2b73[2]](_0x2b73[226]);if(0< _0xff22x4){var _0xff22x5=_0xff22x2[_0xff22x3][_0x2b73[85]](0,_0xff22x4),_0xff22x9=_0xff22x2[_0xff22x3][_0x2b73[67]];13== _0xff22x2[_0xff22x3][_0x2b73[227]](_0xff22x9- 1)&& _0xff22x9--;_0xff22x4= _0xff22x2[_0xff22x3][_0x2b73[85]](_0xff22x4+ 1,_0xff22x9);this[_0x2b73[228]]?(_0xff22x4= _0xff22x4[_0x2b73[230]](/\\(?=u[a-fA-F\d]{4})/g,_0x2b73[229]),mxResources[_0x2b73[231]][_0xff22x5]= unescape(_0xff22x4)):mxResources[_0x2b73[231]][_0xff22x5]= _0xff22x4}}}}},get:function(_0xff22x2,_0xff22x3,_0xff22x4){_0xff22x2= mxResources[_0x2b73[231]][_0xff22x2];null== _0xff22x2&& (_0xff22x2= _0xff22x4);if(null!= _0xff22x2&& null!= _0xff22x3){_0xff22x4= [];for(var _0xff22x5=null,_0xff22x9=0;_0xff22x9< _0xff22x2[_0x2b73[67]];_0xff22x9++){var _0xff22xa=_0xff22x2[_0x2b73[225]](_0xff22x9);_0x2b73[232]== _0xff22xa?_0xff22x5= _0x2b73[110]:null!= _0xff22x5&& _0x2b73[233]== _0xff22xa?(_0xff22x5= parseInt(_0xff22x5)- 1,0<= _0xff22x5&& _0xff22x5< _0xff22x3[_0x2b73[67]]&& _0xff22x4[_0x2b73[207]](_0xff22x3[_0xff22x5]),_0xff22x5= null):null!= _0xff22x5?_0xff22x5+= _0xff22xa:_0xff22x4[_0x2b73[207]](_0xff22xa)};_0xff22x2= _0xff22x4[_0x2b73[234]](_0x2b73[110])};return _0xff22x2}};function mxPoint(_0xff22x2,_0xff22x3){this[_0x2b73[235]]= null!= _0xff22x2?_0xff22x2:0;this[_0x2b73[236]]= null!= _0xff22x3?_0xff22x3:0}mxPoint[_0x2b73[202]][_0x2b73[235]]= null;mxPoint[_0x2b73[202]][_0x2b73[236]]= null;mxPoint[_0x2b73[202]][_0x2b73[237]]= function(_0xff22x2){return _0xff22x2[_0x2b73[235]]== this[_0x2b73[235]]&& _0xff22x2[_0x2b73[236]]== this[_0x2b73[236]]};mxPoint[_0x2b73[202]][_0x2b73[238]]= function(){return mxUtils[_0x2b73[238]](this)};function mxRectangle(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){mxPoint[_0x2b73[239]](this,_0xff22x2,_0xff22x3);this[_0x2b73[117]]= null!= _0xff22x4?_0xff22x4:0;this[_0x2b73[119]]= null!= _0xff22x5?_0xff22x5:0}mxRectangle[_0x2b73[202]]= new mxPoint;mxRectangle[_0x2b73[202]][_0x2b73[196]]= mxRectangle;mxRectangle[_0x2b73[202]][_0x2b73[117]]= null;mxRectangle[_0x2b73[202]][_0x2b73[119]]= null;mxRectangle[_0x2b73[202]][_0x2b73[240]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){this[_0x2b73[235]]= _0xff22x2;this[_0x2b73[236]]= _0xff22x3;this[_0x2b73[117]]= _0xff22x4;this[_0x2b73[119]]= _0xff22x5};mxRectangle[_0x2b73[202]][_0x2b73[241]]= function(){return this[_0x2b73[235]]+ this[_0x2b73[117]]/ 2};mxRectangle[_0x2b73[202]][_0x2b73[242]]= function(){return this[_0x2b73[236]]+ this[_0x2b73[119]]/ 2};mxRectangle[_0x2b73[202]][_0x2b73[99]]= function(_0xff22x2){if(null!= _0xff22x2){var _0xff22x3=Math[_0x2b73[243]](this[_0x2b73[235]],_0xff22x2[_0x2b73[235]]),_0xff22x4=Math[_0x2b73[243]](this[_0x2b73[236]],_0xff22x2[_0x2b73[236]]),_0xff22x5=Math[_0x2b73[160]](this[_0x2b73[235]]+ this[_0x2b73[117]],_0xff22x2[_0x2b73[235]]+ _0xff22x2[_0x2b73[117]]);_0xff22x2= Math[_0x2b73[160]](this[_0x2b73[236]]+ this[_0x2b73[119]],_0xff22x2[_0x2b73[236]]+ _0xff22x2[_0x2b73[119]]);this[_0x2b73[235]]= _0xff22x3;this[_0x2b73[236]]= _0xff22x4;this[_0x2b73[117]]= _0xff22x5- _0xff22x3;this[_0x2b73[119]]= _0xff22x2- _0xff22x4}};mxRectangle[_0x2b73[202]][_0x2b73[244]]= function(_0xff22x2){this[_0x2b73[235]]-= _0xff22x2;this[_0x2b73[236]]-= _0xff22x2;this[_0x2b73[117]]+= 2* _0xff22x2;this[_0x2b73[119]]+= 2* _0xff22x2};mxRectangle[_0x2b73[202]][_0x2b73[245]]= function(){return new mxPoint(this[_0x2b73[235]],this[_0x2b73[236]])};mxRectangle[_0x2b73[202]][_0x2b73[237]]= function(_0xff22x2){return _0xff22x2[_0x2b73[235]]== this[_0x2b73[235]]&& _0xff22x2[_0x2b73[236]]== this[_0x2b73[236]]&& _0xff22x2[_0x2b73[117]]== this[_0x2b73[117]]&& _0xff22x2[_0x2b73[119]]== this[_0x2b73[119]]};var mxEffects={animateChanges:function(_0xff22x2,_0xff22x3,_0xff22x4){var _0xff22x5=0,_0xff22x9=function(){for(var _0xff22x12=!1,_0xff22x13=0;_0xff22x13< _0xff22x3[_0x2b73[67]];_0xff22x13++){var _0xff22x14=_0xff22x3[_0xff22x13];if(_0xff22x14 instanceof mxGeometryChange|| _0xff22x14 instanceof mxTerminalChange|| _0xff22x14 instanceof mxValueChange|| _0xff22x14 instanceof mxChildChange|| _0xff22x14 instanceof mxStyleChange){var _0xff22x15=_0xff22x2[_0x2b73[249]]()[_0x2b73[248]](_0xff22x14[_0x2b73[246]]|| _0xff22x14[_0x2b73[247]],!1);if(null!= _0xff22x15){if(_0xff22x12= !0,_0xff22x14[_0x2b73[196]]!= mxGeometryChange|| _0xff22x2[_0x2b73[251]][_0x2b73[250]](_0xff22x14[_0x2b73[246]])){mxUtils[_0x2b73[254]](_0xff22x15[_0x2b73[253]][_0x2b73[252]],100* _0xff22x5/ 10)}else {var _0xff22x16=_0xff22x2[_0x2b73[249]]()[_0x2b73[255]],_0xff22x17=(_0xff22x14[_0x2b73[256]][_0x2b73[235]]- _0xff22x14[_0x2b73[257]][_0x2b73[235]])* _0xff22x16,_0xff22x18=(_0xff22x14[_0x2b73[256]][_0x2b73[236]]- _0xff22x14[_0x2b73[257]][_0x2b73[236]])* _0xff22x16,_0xff22x19=(_0xff22x14[_0x2b73[256]][_0x2b73[117]]- _0xff22x14[_0x2b73[257]][_0x2b73[117]])* _0xff22x16,_0xff22x16=(_0xff22x14[_0x2b73[256]][_0x2b73[119]]- _0xff22x14[_0x2b73[257]][_0x2b73[119]])* _0xff22x16;0== _0xff22x5?(_0xff22x15[_0x2b73[235]]-= _0xff22x17,_0xff22x15[_0x2b73[236]]-= _0xff22x18,_0xff22x15[_0x2b73[117]]-= _0xff22x19,_0xff22x15[_0x2b73[119]]-= _0xff22x16):(_0xff22x15[_0x2b73[235]]+= _0xff22x17/ 10,_0xff22x15[_0x2b73[236]]+= _0xff22x18/ 10,_0xff22x15[_0x2b73[117]]+= _0xff22x19/ 10,_0xff22x15[_0x2b73[119]]+= _0xff22x16/ 10);_0xff22x2[_0x2b73[259]][_0x2b73[258]](_0xff22x15);mxEffects[_0x2b73[260]](_0xff22x2,_0xff22x14[_0x2b73[246]],100* _0xff22x5/ 10)}}}};10> _0xff22x5&& _0xff22x12?(_0xff22x5++,window[_0x2b73[261]](_0xff22x9,_0xff22xa)):null!= _0xff22x4&& _0xff22x4()},_0xff22xa=30;_0xff22x9()},cascadeOpacity:function(_0xff22x2,_0xff22x3,_0xff22x4){for(var _0xff22x5=_0xff22x2[_0x2b73[251]][_0x2b73[262]](_0xff22x3),_0xff22x9=0;_0xff22x9< _0xff22x5;_0xff22x9++){var _0xff22xa=_0xff22x2[_0x2b73[251]][_0x2b73[263]](_0xff22x3,_0xff22x9),_0xff22x12=_0xff22x2[_0x2b73[249]]()[_0x2b73[248]](_0xff22xa);null!= _0xff22x12&& (mxUtils[_0x2b73[254]](_0xff22x12[_0x2b73[253]][_0x2b73[252]],_0xff22x4),mxEffects[_0x2b73[260]](_0xff22x2,_0xff22xa,_0xff22x4))};_0xff22x3= _0xff22x2[_0x2b73[251]][_0x2b73[264]](_0xff22x3);if(null!= _0xff22x3){for(_0xff22x9= 0;_0xff22x9< _0xff22x3[_0x2b73[67]];_0xff22x9++){_0xff22x5= _0xff22x2[_0x2b73[249]]()[_0x2b73[248]](_0xff22x3[_0xff22x9]),null!= _0xff22x5&& mxUtils[_0x2b73[254]](_0xff22x5[_0x2b73[253]][_0x2b73[252]],_0xff22x4)}}},fadeOut:function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa){_0xff22x5= _0xff22x5|| 40;_0xff22x9= _0xff22x9|| 30;var _0xff22x12=_0xff22x3|| 100;mxUtils[_0x2b73[254]](_0xff22x2,_0xff22x12);if(_0xff22xa|| null== _0xff22xa){var _0xff22x13=function(){_0xff22x12= Math[_0x2b73[160]](_0xff22x12- _0xff22x5,0);mxUtils[_0x2b73[254]](_0xff22x2,_0xff22x12);0< _0xff22x12?window[_0x2b73[261]](_0xff22x13,_0xff22x9):(_0xff22x2[_0x2b73[124]][_0x2b73[187]]= _0x2b73[188],_0xff22x4&& _0xff22x2[_0x2b73[265]]&& _0xff22x2[_0x2b73[265]][_0x2b73[266]](_0xff22x2))};window[_0x2b73[261]](_0xff22x13,_0xff22x9)}else {_0xff22x2[_0x2b73[124]][_0x2b73[187]]= _0x2b73[188],_0xff22x4&& _0xff22x2[_0x2b73[265]]&& _0xff22x2[_0x2b73[265]][_0x2b73[266]](_0xff22x2)}}},mxUtils={errorResource:_0x2b73[130]!= mxClient[_0x2b73[90]]?_0x2b73[267]:_0x2b73[110],closeResource:_0x2b73[130]!= mxClient[_0x2b73[90]]?_0x2b73[268]:_0x2b73[110],errorImage:mxClient[_0x2b73[88]]+ _0x2b73[269],removeCursors:function(_0xff22x2){null!= _0xff22x2[_0x2b73[124]]&& (_0xff22x2[_0x2b73[124]][_0x2b73[270]]= _0x2b73[110]);_0xff22x2= _0xff22x2[_0x2b73[271]];if(null!= _0xff22x2){for(var _0xff22x3=_0xff22x2[_0x2b73[67]],_0xff22x4=0;_0xff22x4< _0xff22x3;_0xff22x4+= 1){mxUtils[_0x2b73[272]](_0xff22x2[_0xff22x4])}}},getCurrentStyle:function(){return mxClient[_0x2b73[80]]?function(_0xff22x2){return null!= _0xff22x2?_0xff22x2[_0x2b73[273]]:null}:function(_0xff22x2){return null!= _0xff22x2?window[_0x2b73[274]](_0xff22x2,_0x2b73[110]):null}}(),hasScrollbars:function(_0xff22x2){_0xff22x2= mxUtils[_0x2b73[275]](_0xff22x2);return null!= _0xff22x2&& (_0x2b73[276]== _0xff22x2[_0x2b73[277]]|| _0x2b73[278]== _0xff22x2[_0x2b73[277]])},bind:function(_0xff22x2,_0xff22x3){return function(){return _0xff22x3[_0x2b73[183]](_0xff22x2,arguments)}},eval:function(_0xff22x2){var _0xff22x3=null;if(0<= _0xff22x2[_0x2b73[2]](_0x2b73[279])){try{eval(_0x2b73[280]+ _0xff22x2),_0xff22x3= _mxJavaScriptExpression,_mxJavaScriptExpression= null}catch(c){mxLog[_0x2b73[283]](c[_0x2b73[281]]+ _0x2b73[282]+ _0xff22x2)}}else {try{_0xff22x3= eval(_0xff22x2)}catch(d){mxLog[_0x2b73[283]](d[_0x2b73[281]]+ _0x2b73[282]+ _0xff22x2)}};return _0xff22x3},findNode:function(_0xff22x2,_0xff22x3,_0xff22x4){var _0xff22x5=_0xff22x2[_0x2b73[284]](_0xff22x3);if(null!= _0xff22x5&& _0xff22x5== _0xff22x4){return _0xff22x2};for(_0xff22x2= _0xff22x2[_0x2b73[285]];null!= _0xff22x2;){_0xff22x5= mxUtils[_0x2b73[286]](_0xff22x2,_0xff22x3,_0xff22x4);if(null!= _0xff22x5){return _0xff22x5};_0xff22x2= _0xff22x2[_0x2b73[287]]};return null},findNodeByAttribute:function(){return 9<= document[_0x2b73[5]]?function(_0xff22x2,_0xff22x3,_0xff22x4){var _0xff22x5=null;if(null!= _0xff22x2){if(_0xff22x2[_0x2b73[288]]== mxConstants[_0x2b73[289]]&& _0xff22x2[_0x2b73[284]](_0xff22x3)== _0xff22x4){_0xff22x5= _0xff22x2}else {for(_0xff22x2= _0xff22x2[_0x2b73[285]];null!= _0xff22x2&& null== _0xff22x5;){_0xff22x5= mxUtils[_0x2b73[290]](_0xff22x2,_0xff22x3,_0xff22x4),_0xff22x2= _0xff22x2[_0x2b73[287]]}}};return _0xff22x5}:mxClient[_0x2b73[80]]?function(_0xff22x2,_0xff22x3,_0xff22x4){return null== _0xff22x2?null:_0xff22x2[_0x2b73[295]][_0x2b73[294]](_0x2b73[291]+ _0xff22x3+ _0x2b73[292]+ _0xff22x4+ _0x2b73[293])}:function(_0xff22x2,_0xff22x3,_0xff22x4){return null== _0xff22x2?null:_0xff22x2[_0x2b73[295]][_0x2b73[297]](_0x2b73[291]+ _0xff22x3+ _0x2b73[292]+ _0xff22x4+ _0x2b73[293],_0xff22x2[_0x2b73[295]],null,XPathResult.ANY_TYPE,null)[_0x2b73[296]]()}}(),getFunctionName:function(_0xff22x2){var _0xff22x3=null;if(null!= _0xff22x2){if(null!= _0xff22x2[_0x2b73[298]]){_0xff22x3= _0xff22x2[_0x2b73[298]]}else {_0xff22x2= _0xff22x2.toString();for(_0xff22x3= 9;_0x2b73[185]== _0xff22x2[_0x2b73[225]](_0xff22x3);){_0xff22x3++};var _0xff22x4=_0xff22x2[_0x2b73[2]](_0x2b73[299],_0xff22x3),_0xff22x3=_0xff22x2[_0x2b73[85]](_0xff22x3,_0xff22x4)}};return _0xff22x3},indexOf:function(_0xff22x2,_0xff22x3){if(null!= _0xff22x2&& null!= _0xff22x3){for(var _0xff22x4=0;_0xff22x4< _0xff22x2[_0x2b73[67]];_0xff22x4++){if(_0xff22x2[_0xff22x4]== _0xff22x3){return _0xff22x4}}};return -1},remove:function(_0xff22x2,_0xff22x3){var _0xff22x4=null;if(_0x2b73[194]== typeof _0xff22x3){for(var _0xff22x5=mxUtils[_0x2b73[2]](_0xff22x3,_0xff22x2);0<= _0xff22x5;){_0xff22x3[_0x2b73[300]](_0xff22x5,1),_0xff22x4= _0xff22x2,_0xff22x5= mxUtils[_0x2b73[2]](_0xff22x3,_0xff22x2)}};for(var _0xff22x9 in _0xff22x3){_0xff22x3[_0xff22x9]== _0xff22x2&& ( delete _0xff22x3[_0xff22x9],_0xff22x4= _0xff22x2)};return _0xff22x4},isNode:function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){return null!= _0xff22x2&& !isNaN(_0xff22x2[_0x2b73[288]])&& (null== _0xff22x3|| _0xff22x2[_0x2b73[301]][_0x2b73[216]]()== _0xff22x3[_0x2b73[216]]())?null== _0xff22x4|| _0xff22x2[_0x2b73[284]](_0xff22x4)== _0xff22x5:!1},getChildNodes:function(_0xff22x2,_0xff22x3){_0xff22x3= _0xff22x3|| mxConstants[_0x2b73[289]];for(var _0xff22x4=[],_0xff22x5=_0xff22x2[_0x2b73[285]];null!= _0xff22x5;){_0xff22x5[_0x2b73[288]]== _0xff22x3&& _0xff22x4[_0x2b73[207]](_0xff22x5),_0xff22x5= _0xff22x5[_0x2b73[287]]};return _0xff22x4},createXmlDocument:function(){var _0xff22x2=null;document[_0x2b73[302]]&& document[_0x2b73[302]][_0x2b73[303]]?_0xff22x2= document[_0x2b73[302]][_0x2b73[303]](_0x2b73[110],_0x2b73[110],null):window[_0x2b73[304]]&& (_0xff22x2= new ActiveXObject(_0x2b73[305]));return _0xff22x2},parseXml:function(){return mxClient[_0x2b73[80]]&& (_0x2b73[82]=== typeof document[_0x2b73[5]]|| 9> document[_0x2b73[5]])?function(_0xff22x2){var _0xff22x3=mxUtils[_0x2b73[306]]();_0xff22x3[_0x2b73[307]]= _0x2b73[308];_0xff22x3[_0x2b73[309]](_0xff22x2);return _0xff22x3}:function(_0xff22x2){return ( new DOMParser)[_0x2b73[311]](_0xff22x2,_0x2b73[310])}}(),clearSelection:function(){if(document[_0x2b73[312]]){return function(){document[_0x2b73[312]][_0x2b73[313]]()}};if(window[_0x2b73[314]]){return function(){window[_0x2b73[314]]()[_0x2b73[315]]()}}}(),getPrettyXml:function(_0xff22x2,_0xff22x3,_0xff22x4){var _0xff22x5=[];if(null!= _0xff22x2){if(_0xff22x3= _0xff22x3|| _0x2b73[316],_0xff22x4= _0xff22x4|| _0x2b73[110],_0xff22x2[_0x2b73[288]]== mxConstants[_0x2b73[317]]){_0xff22x5[_0x2b73[207]](_0xff22x2[_0x2b73[318]])}else {_0xff22x5[_0x2b73[207]](_0xff22x4+ _0x2b73[319]+ _0xff22x2[_0x2b73[301]]);var _0xff22x9=_0xff22x2[_0x2b73[320]];if(null!= _0xff22x9){for(var _0xff22xa=0;_0xff22xa< _0xff22x9[_0x2b73[67]];_0xff22xa++){var _0xff22x12=mxUtils[_0x2b73[321]](_0xff22x9[_0xff22xa][_0x2b73[318]]);_0xff22x5[_0x2b73[207]](_0x2b73[185]+ _0xff22x9[_0xff22xa][_0x2b73[301]]+ _0x2b73[322]+ _0xff22x12+ _0x2b73[323])}};_0xff22x9= _0xff22x2[_0x2b73[285]];if(null!= _0xff22x9){for(_0xff22x5[_0x2b73[207]](_0x2b73[324]);null!= _0xff22x9;){_0xff22x5[_0x2b73[207]](mxUtils[_0x2b73[325]](_0xff22x9,_0xff22x3,_0xff22x4+ _0xff22x3)),_0xff22x9= _0xff22x9[_0x2b73[287]]};_0xff22x5[_0x2b73[207]](_0xff22x4+ _0x2b73[326]+ _0xff22x2[_0x2b73[301]]+ _0x2b73[324])}else {_0xff22x5[_0x2b73[207]](_0x2b73[327])}}};return _0xff22x5[_0x2b73[234]](_0x2b73[110])},removeWhitespace:function(_0xff22x2,_0xff22x3){for(var _0xff22x4=_0xff22x3?_0xff22x2[_0x2b73[328]]:_0xff22x2[_0x2b73[287]];null!= _0xff22x4&& _0xff22x4[_0x2b73[288]]== mxConstants[_0x2b73[317]];){var _0xff22x5=_0xff22x3?_0xff22x4[_0x2b73[328]]:_0xff22x4[_0x2b73[287]],_0xff22x9=mxUtils[_0x2b73[329]](_0xff22x4);0== mxUtils[_0x2b73[330]](_0xff22x9)[_0x2b73[67]]&& _0xff22x4[_0x2b73[265]][_0x2b73[266]](_0xff22x4);_0xff22x4= _0xff22x5}},htmlEntities:function(_0xff22x2,_0xff22x3){_0xff22x2= (_0xff22x2|| _0x2b73[110])[_0x2b73[230]](/&/g,_0x2b73[331]);_0xff22x2= _0xff22x2[_0x2b73[230]](/"/g,_0x2b73[332]);_0xff22x2= _0xff22x2[_0x2b73[230]](/\'/g,_0x2b73[333]);_0xff22x2= _0xff22x2[_0x2b73[230]](//g,_0x2b73[335]);if(null== _0xff22x3|| _0xff22x3){_0xff22x2= _0xff22x2[_0x2b73[230]](/\n/g,_0x2b73[336])};return _0xff22x2},isVml:function(_0xff22x2){return null!= _0xff22x2&& _0x2b73[97]== _0xff22x2[_0x2b73[337]]},getXml:function(_0xff22x2,_0xff22x3){var _0xff22x4=_0x2b73[110];null!= _0xff22x2&& (_0xff22x4= _0xff22x2[_0x2b73[338]],_0xff22x4= null== _0xff22x4?_0xff22x2[_0x2b73[339]]?_0xff22x2[_0x2b73[339]]:( new XMLSerializer)[_0x2b73[340]](_0xff22x2):_0xff22x4[_0x2b73[230]](/\r\n\t[\t]*/g,_0x2b73[110])[_0x2b73[230]](/>\r\n/g,_0x2b73[341])[_0x2b73[230]](/\r\n/g,_0x2b73[192]));return _0xff22x4= _0xff22x4[_0x2b73[230]](/\n/g,_0xff22x3|| _0x2b73[336])},getTextContent:function(_0xff22x2){var _0xff22x3=_0x2b73[110];null!= _0xff22x2&& (null!= _0xff22x2[_0x2b73[285]]&& (_0xff22x2= _0xff22x2[_0x2b73[285]]),_0xff22x3= _0xff22x2[_0x2b73[318]]|| _0x2b73[110]);return _0xff22x3},getInnerHtml:function(){return mxClient[_0x2b73[80]]?function(_0xff22x2){return null!= _0xff22x2?_0xff22x2[_0x2b73[339]]:_0x2b73[110]}:function(_0xff22x2){return null!= _0xff22x2?( new XMLSerializer)[_0x2b73[340]](_0xff22x2):_0x2b73[110]}}(),getOuterHtml:function(){return mxClient[_0x2b73[80]]?function(_0xff22x2){if(null!= _0xff22x2){if(null!= _0xff22x2[_0x2b73[342]]){return _0xff22x2[_0x2b73[342]]};var _0xff22x3=[];_0xff22x3[_0x2b73[207]](_0x2b73[319]+ _0xff22x2[_0x2b73[301]]);var _0xff22x4=_0xff22x2[_0x2b73[320]];if(null!= _0xff22x4){for(var _0xff22x5=0;_0xff22x5< _0xff22x4[_0x2b73[67]];_0xff22x5++){var _0xff22x9=_0xff22x4[_0xff22x5][_0x2b73[318]];null!= _0xff22x9&& 0< _0xff22x9[_0x2b73[67]]&& (_0xff22x3[_0x2b73[207]](_0x2b73[185]),_0xff22x3[_0x2b73[207]](_0xff22x4[_0xff22x5][_0x2b73[301]]),_0xff22x3[_0x2b73[207]](_0x2b73[322]),_0xff22x3[_0x2b73[207]](_0xff22x9),_0xff22x3[_0x2b73[207]](_0x2b73[323]))}};0== _0xff22x2[_0x2b73[339]][_0x2b73[67]]?_0xff22x3[_0x2b73[207]](_0x2b73[343]):(_0xff22x3[_0x2b73[207]](_0x2b73[341]),_0xff22x3[_0x2b73[207]](_0xff22x2[_0x2b73[339]]),_0xff22x3[_0x2b73[207]](_0x2b73[326]+ _0xff22x2[_0x2b73[301]]+ _0x2b73[341]));return _0xff22x3[_0x2b73[234]](_0x2b73[110])};return _0x2b73[110]}:function(_0xff22x2){return null!= _0xff22x2?( new XMLSerializer)[_0x2b73[340]](_0xff22x2):_0x2b73[110]}}(),write:function(_0xff22x2,_0xff22x3){var _0xff22x4=_0xff22x2[_0x2b73[295]][_0x2b73[344]](_0xff22x3);null!= _0xff22x2&& _0xff22x2[_0x2b73[62]](_0xff22x4);return _0xff22x4},writeln:function(_0xff22x2,_0xff22x3){var _0xff22x4=_0xff22x2[_0x2b73[295]][_0x2b73[344]](_0xff22x3);null!= _0xff22x2&& (_0xff22x2[_0x2b73[62]](_0xff22x4),_0xff22x2[_0x2b73[62]](document[_0x2b73[55]](_0x2b73[345])));return _0xff22x4},br:function(_0xff22x2,_0xff22x3){_0xff22x3= _0xff22x3|| 1;for(var _0xff22x4=null,_0xff22x5=0;_0xff22x5< _0xff22x3;_0xff22x5++){null!= _0xff22x2&& (_0xff22x4= _0xff22x2[_0x2b73[295]][_0x2b73[55]](_0x2b73[345]),_0xff22x2[_0x2b73[62]](_0xff22x4))};return _0xff22x4},button:function(_0xff22x2,_0xff22x3,_0xff22x4){_0xff22x4= null!= _0xff22x4?_0xff22x4:document;_0xff22x4= _0xff22x4[_0x2b73[55]](_0x2b73[172]);mxUtils[_0x2b73[53]](_0xff22x4,_0xff22x2);mxEvent[_0x2b73[169]](_0xff22x4,_0x2b73[173],function(_0xff22x2){_0xff22x3(_0xff22x2)});return _0xff22x4},para:function(_0xff22x2,_0xff22x3){var _0xff22x4=document[_0x2b73[55]](_0x2b73[346]);mxUtils[_0x2b73[53]](_0xff22x4,_0xff22x3);null!= _0xff22x2&& _0xff22x2[_0x2b73[62]](_0xff22x4);return _0xff22x4},addTransparentBackgroundFilter:function(_0xff22x2){_0xff22x2[_0x2b73[124]][_0x2b73[347]]+= _0x2b73[348]+ mxClient[_0x2b73[88]]+ _0x2b73[349]},linkAction:function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){return mxUtils[_0x2b73[54]](_0xff22x2,_0xff22x3,function(){_0xff22x4[_0x2b73[350]](_0xff22x5)},_0xff22x9)},linkInvoke:function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa){return mxUtils[_0x2b73[54]](_0xff22x2,_0xff22x3,function(){_0xff22x4[_0xff22x5](_0xff22x9)},_0xff22xa)},link:function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){var _0xff22x9=document[_0x2b73[55]](_0x2b73[351]);_0xff22x9[_0x2b73[124]][_0x2b73[352]]= _0x2b73[353];_0xff22x9[_0x2b73[124]][_0x2b73[354]]= _0x2b73[355];_0xff22x9[_0x2b73[124]][_0x2b73[270]]= _0x2b73[356];null!= _0xff22x5&& (_0xff22x9[_0x2b73[124]][_0x2b73[357]]= _0xff22x5+ _0x2b73[168]);mxEvent[_0x2b73[169]](_0xff22x9,_0x2b73[173],_0xff22x4);mxUtils[_0x2b73[53]](_0xff22x9,_0xff22x3);null!= _0xff22x2&& _0xff22x2[_0x2b73[62]](_0xff22x9);return _0xff22x9},fit:function(_0xff22x2){var _0xff22x3=parseInt(_0xff22x2[_0x2b73[358]]),_0xff22x4=parseInt(_0xff22x2[_0x2b73[359]]),_0xff22x5=document[_0x2b73[112]],_0xff22x9=document[_0x2b73[158]],_0xff22xa=(_0xff22x5[_0x2b73[360]]|| _0xff22x9[_0x2b73[360]])+ (_0xff22x5[_0x2b73[159]]|| _0xff22x9[_0x2b73[159]]);_0xff22x3+ _0xff22x4> _0xff22xa&& (_0xff22x2[_0x2b73[124]][_0x2b73[361]]= Math[_0x2b73[160]](_0xff22x5[_0x2b73[360]]|| _0xff22x9[_0x2b73[360]],_0xff22xa- _0xff22x4)+ _0x2b73[168]);_0xff22x3= parseInt(_0xff22x2[_0x2b73[362]]);_0xff22x4= parseInt(_0xff22x2[_0x2b73[167]]);_0xff22xa= (_0xff22x5[_0x2b73[190]]|| _0xff22x9[_0x2b73[190]])+ Math[_0x2b73[160]](_0xff22x5[_0x2b73[157]]|| 0,_0xff22x9[_0x2b73[157]]);_0xff22x3+ _0xff22x4> _0xff22xa&& (_0xff22x2[_0x2b73[124]][_0x2b73[125]]= Math[_0x2b73[160]](_0xff22x5[_0x2b73[190]]|| _0xff22x9[_0x2b73[190]],_0xff22xa- _0xff22x4)+ _0x2b73[168])},open:function(_0xff22x2){if(mxClient[_0x2b73[133]]){try{netscape[_0x2b73[366]][_0x2b73[365]][_0x2b73[364]](_0x2b73[363])}catch(b){return mxUtils[_0x2b73[150]](_0x2b73[367]),_0x2b73[110]};var _0xff22x4=Components[_0x2b73[372]][_0x2b73[371]][_0x2b73[370]](Components[_0x2b73[369]][_0x2b73[368]]);_0xff22x4[_0x2b73[373]](_0xff22x2);if(!_0xff22x4[_0x2b73[374]]()){return mxUtils[_0x2b73[150]](_0x2b73[375]),_0x2b73[110]};_0xff22x2= Components[_0x2b73[372]][_0x2b73[377]][_0x2b73[370]](Components[_0x2b73[369]][_0x2b73[376]]);_0xff22x2[_0x2b73[176]](_0xff22x4,1,4,null);_0xff22x4= Components[_0x2b73[372]][_0x2b73[379]][_0x2b73[370]](Components[_0x2b73[369]][_0x2b73[378]]);_0xff22x4[_0x2b73[176]](_0xff22x2);return _0xff22x4[_0x2b73[381]](_0xff22x4[_0x2b73[380]]())};_0xff22x4= ( new ActiveXObject(_0x2b73[382])).OpenTextFile(_0xff22x2,1);_0xff22x2= _0xff22x4[_0x2b73[383]]();_0xff22x4[_0x2b73[268]]();return _0xff22x2},save:function(_0xff22x2,_0xff22x3){if(mxClient[_0x2b73[133]]){try{netscape[_0x2b73[366]][_0x2b73[365]][_0x2b73[364]](_0x2b73[363])}catch(c){mxUtils[_0x2b73[150]](_0x2b73[384]);return};var _0xff22x5=Components[_0x2b73[372]][_0x2b73[371]][_0x2b73[370]](Components[_0x2b73[369]][_0x2b73[368]]);_0xff22x5[_0x2b73[373]](_0xff22x2);_0xff22x5[_0x2b73[374]]()|| _0xff22x5[_0x2b73[385]](0,420);var _0xff22x9=Components[_0x2b73[372]][_0x2b73[387]][_0x2b73[370]](Components[_0x2b73[369]][_0x2b73[386]]);_0xff22x9[_0x2b73[176]](_0xff22x5,34,4,null);_0xff22x9[_0x2b73[53]](_0xff22x3,_0xff22x3[_0x2b73[67]]);_0xff22x9[_0x2b73[388]]();_0xff22x9[_0x2b73[268]]()}else {_0xff22x5= ( new ActiveXObject(_0x2b73[382])).CreateTextFile(_0xff22x2,!0),_0xff22x5.Write(_0xff22x3),_0xff22x5.Close()}},saveAs:function(_0xff22x2){var _0xff22x3=document[_0x2b73[55]](_0x2b73[389]);_0xff22x3[_0x2b73[57]](_0x2b73[390],_0x2b73[110]);_0xff22x3[_0x2b73[124]][_0x2b73[187]]= _0x2b73[188];document[_0x2b73[112]][_0x2b73[62]](_0xff22x3);try{if(mxClient[_0x2b73[133]]){var _0xff22x4=_0xff22x3[_0x2b73[391]];_0xff22x4[_0x2b73[392]]();_0xff22x4[_0x2b73[53]](_0xff22x2);_0xff22x4[_0x2b73[268]]();try{netscape[_0x2b73[366]][_0x2b73[365]][_0x2b73[364]](_0x2b73[363]),_0xff22x3[_0x2b73[393]](),saveDocument(_0xff22x4)}catch(d){mxUtils[_0x2b73[150]](_0x2b73[394])}}else {_0xff22x4= _0xff22x3[_0x2b73[396]][_0x2b73[395]],_0xff22x4[_0x2b73[53]](_0xff22x2),_0xff22x4[_0x2b73[398]](_0x2b73[397],!1,document[_0x2b73[45]])}}finally{document[_0x2b73[112]][_0x2b73[266]](_0xff22x3)}},copy:function(_0xff22x2){if(window[_0x2b73[399]]){window[_0x2b73[399]][_0x2b73[401]](_0x2b73[400],_0xff22x2)}else {netscape[_0x2b73[366]][_0x2b73[365]][_0x2b73[364]](_0x2b73[363]);var _0xff22x3=Components[_0x2b73[372]][_0x2b73[403]][_0x2b73[370]](Components[_0x2b73[369]][_0x2b73[402]]);if(_0xff22x3){var _0xff22x4=Components[_0x2b73[372]][_0x2b73[405]][_0x2b73[370]](Components[_0x2b73[369]][_0x2b73[404]]);if(_0xff22x4){_0xff22x4[_0x2b73[407]](_0x2b73[406]);var _0xff22x5=Components[_0x2b73[372]][_0x2b73[409]][_0x2b73[370]](Components[_0x2b73[369]][_0x2b73[408]]);_0xff22x5[_0x2b73[410]]= _0xff22x2;_0xff22x4[_0x2b73[411]](_0x2b73[406],_0xff22x5,2* _0xff22x2[_0x2b73[67]]);_0xff22x3[_0x2b73[401]](_0xff22x4,null,Components[_0x2b73[369]][_0x2b73[402]][_0x2b73[412]])}}}},load:function(_0xff22x2){_0xff22x2= new mxXmlRequest(_0xff22x2,null,_0x2b73[413],!1);_0xff22x2[_0x2b73[414]]();return _0xff22x2},get:function(_0xff22x2,_0xff22x3,_0xff22x4){return ( new mxXmlRequest(_0xff22x2,null,_0x2b73[413]))[_0x2b73[414]](_0xff22x3,_0xff22x4)},post:function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){return ( new mxXmlRequest(_0xff22x2,_0xff22x3))[_0x2b73[414]](_0xff22x4,_0xff22x5)},submit:function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){return ( new mxXmlRequest(_0xff22x2,_0xff22x3))[_0x2b73[415]](_0xff22x4,_0xff22x5)},loadInto:function(_0xff22x2,_0xff22x3,_0xff22x4){mxClient[_0x2b73[80]]?_0xff22x3[_0x2b73[416]]= function(){4== _0xff22x3[_0x2b73[417]]&& _0xff22x4()}:_0xff22x3[_0x2b73[418]](_0x2b73[219],_0xff22x4,!1);_0xff22x3[_0x2b73[219]](_0xff22x2)},getValue:function(_0xff22x2,_0xff22x3,_0xff22x4){_0xff22x2= null!= _0xff22x2?_0xff22x2[_0xff22x3]:null;null== _0xff22x2&& (_0xff22x2= _0xff22x4);return _0xff22x2},getNumber:function(_0xff22x2,_0xff22x3,_0xff22x4){_0xff22x2= null!= _0xff22x2?_0xff22x2[_0xff22x3]:null;null== _0xff22x2&& (_0xff22x2= _0xff22x4|| 0);return Number(_0xff22x2)},getColor:function(_0xff22x2,_0xff22x3,_0xff22x4){_0xff22x2= null!= _0xff22x2?_0xff22x2[_0xff22x3]:null;null== _0xff22x2?_0xff22x2= _0xff22x4:_0xff22x2== mxConstants[_0x2b73[217]]&& (_0xff22x2= null);return _0xff22x2},clone:function(_0xff22x2,_0xff22x3,_0xff22x4){_0xff22x4= null!= _0xff22x4?_0xff22x4:!1;var _0xff22x5=null;if(null!= _0xff22x2&& _0x2b73[279]== typeof _0xff22x2[_0x2b73[196]]){var _0xff22x5= new _0xff22x2[_0x2b73[196]],_0xff22x9;for(_0xff22x9 in _0xff22x2){if(_0xff22x9!= mxObjectIdentity[_0x2b73[195]]&& (null== _0xff22x3|| 0> mxUtils[_0x2b73[2]](_0xff22x3,_0xff22x9))){_0xff22x5[_0xff22x9]= !_0xff22x4&& _0x2b73[194]== typeof _0xff22x2[_0xff22x9]?mxUtils[_0x2b73[238]](_0xff22x2[_0xff22x9]):_0xff22x2[_0xff22x9]}}};return _0xff22x5},equalPoints:function(_0xff22x2,_0xff22x3){if(null== _0xff22x2&& null!= _0xff22x3|| null!= _0xff22x2&& null== _0xff22x3|| null!= _0xff22x2&& null!= _0xff22x3&& _0xff22x2[_0x2b73[67]]!= _0xff22x3[_0x2b73[67]]){return !1};if(null!= _0xff22x2&& null!= _0xff22x3){for(var _0xff22x4=0;_0xff22x4< _0xff22x2[_0x2b73[67]];_0xff22x4++){if(_0xff22x2[_0xff22x4]== _0xff22x3[_0xff22x4]|| null!= _0xff22x2[_0xff22x4]&& !_0xff22x2[_0xff22x4][_0x2b73[237]](_0xff22x3[_0xff22x4])){return !1}}};return !0},equalEntries:function(_0xff22x2,_0xff22x3){if(null== _0xff22x2&& null!= _0xff22x3|| null!= _0xff22x2&& null== _0xff22x3|| null!= _0xff22x2&& null!= _0xff22x3&& _0xff22x2[_0x2b73[67]]!= _0xff22x3[_0x2b73[67]]){return !1};if(null!= _0xff22x2&& null!= _0xff22x3){for(var _0xff22x4 in _0xff22x2){if(_0xff22x2[_0xff22x4]!= _0xff22x3[_0xff22x4]){return !1}}};return !0},extend:function(_0xff22x2,_0xff22x3){var _0xff22x4=function(){};_0xff22x4[_0x2b73[202]]= _0xff22x3[_0x2b73[202]];_0xff22x2[_0x2b73[202]]= new _0xff22x4;_0xff22x2[_0x2b73[202]][_0x2b73[196]]= _0xff22x2},toString:function(_0xff22x2){var _0xff22x3=_0x2b73[110],_0xff22x4;for(_0xff22x4 in _0xff22x2){try{if(null== _0xff22x2[_0xff22x4]){_0xff22x3+= _0xff22x4+ _0x2b73[419]}else {if(_0x2b73[279]== typeof _0xff22x2[_0xff22x4]){_0xff22x3+= _0xff22x4+ _0x2b73[420]}else {if(_0x2b73[194]== typeof _0xff22x2[_0xff22x4]){var _0xff22x5=mxUtils[_0x2b73[197]](_0xff22x2[_0xff22x4][_0x2b73[196]]),_0xff22x3=_0xff22x3+ (_0xff22x4+ _0x2b73[421]+ _0xff22x5+ _0x2b73[422])}else {_0xff22x3+= _0xff22x4+ _0x2b73[423]+ _0xff22x2[_0xff22x4]+ _0x2b73[192]}}}}catch(e){_0xff22x3+= _0xff22x4+ _0x2b73[226]+ e[_0x2b73[281]]}};return _0xff22x3},toRadians:function(_0xff22x2){return Math[_0x2b73[424]]* _0xff22x2/ 180},arcToCurves:function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa,_0xff22x12,_0xff22x13,_0xff22x14){_0xff22x13-= _0xff22x2;_0xff22x14-= _0xff22x3;if(0=== _0xff22x4|| 0=== _0xff22x5){return _0xff22x18};_0xff22x4= Math[_0x2b73[425]](_0xff22x4);_0xff22x5= Math[_0x2b73[425]](_0xff22x5);var _0xff22x15=-_0xff22x13/ 2,_0xff22x16=-_0xff22x14/ 2,_0xff22x17=Math[_0x2b73[426]](_0xff22x9* Math[_0x2b73[424]]/ 180),_0xff22x18=Math[_0x2b73[427]](_0xff22x9* Math[_0x2b73[424]]/ 180);_0xff22x9= _0xff22x17* _0xff22x15+ _0xff22x18* _0xff22x16;var _0xff22x15=-1* _0xff22x18* _0xff22x15+ _0xff22x17* _0xff22x16,_0xff22x16=_0xff22x9* _0xff22x9,_0xff22x19=_0xff22x15* _0xff22x15,_0xff22x1a=_0xff22x4* _0xff22x4,_0xff22x1b=_0xff22x5* _0xff22x5,_0xff22x1c=_0xff22x16/ _0xff22x1a+ _0xff22x19/ _0xff22x1b;1< _0xff22x1c?(_0xff22x4*= Math[_0x2b73[428]](_0xff22x1c),_0xff22x5*= Math[_0x2b73[428]](_0xff22x1c),_0xff22xa= 0):(_0xff22x1c= 1,_0xff22xa=== _0xff22x12&& (_0xff22x1c= -1),_0xff22xa= _0xff22x1c* Math[_0x2b73[428]]((_0xff22x1a* _0xff22x1b- _0xff22x1a* _0xff22x19- _0xff22x1b* _0xff22x16)/ (_0xff22x1a* _0xff22x19+ _0xff22x1b* _0xff22x16)));_0xff22x16= _0xff22xa* _0xff22x4* _0xff22x15/ _0xff22x5;_0xff22x19= -1* _0xff22xa* _0xff22x5* _0xff22x9/ _0xff22x4;_0xff22x13= _0xff22x17* _0xff22x16- _0xff22x18* _0xff22x19+ _0xff22x13/ 2;_0xff22x14= _0xff22x18* _0xff22x16+ _0xff22x17* _0xff22x19+ _0xff22x14/ 2;_0xff22x1a= Math[_0x2b73[429]]((_0xff22x15- _0xff22x19)/ _0xff22x5,(_0xff22x9- _0xff22x16)/ _0xff22x4)- Math[_0x2b73[429]](0,1);_0xff22xa= 0<= _0xff22x1a?_0xff22x1a:2* Math[_0x2b73[424]]+ _0xff22x1a;_0xff22x1a= Math[_0x2b73[429]]((-_0xff22x15- _0xff22x19) / _0xff22x5,(-_0xff22x9- _0xff22x16) / _0xff22x4) - Math[_0x2b73[429]]((_0xff22x15- _0xff22x19)/ _0xff22x5,(_0xff22x9- _0xff22x16)/ _0xff22x4);_0xff22x9= 0<= _0xff22x1a?_0xff22x1a:2* Math[_0x2b73[424]]+ _0xff22x1a;0== _0xff22x12&& 0< _0xff22x9?_0xff22x9-= 2* Math[_0x2b73[424]]:0!= _0xff22x12&& 0> _0xff22x9&& (_0xff22x9+= 2* Math[_0x2b73[424]]);_0xff22x12= 2* _0xff22x9/ Math[_0x2b73[424]];_0xff22x12= Math[_0x2b73[430]](0> _0xff22x12?-1* _0xff22x12:_0xff22x12);_0xff22x9/= _0xff22x12;_0xff22x15= 8/ 3* Math[_0x2b73[427]](_0xff22x9/ 4)* Math[_0x2b73[427]](_0xff22x9/ 4)/ Math[_0x2b73[427]](_0xff22x9/ 2);_0xff22x16= _0xff22x17* _0xff22x4;_0xff22x17*= _0xff22x5;_0xff22x4*= _0xff22x18;_0xff22x5*= _0xff22x18;for(var _0xff22x1d=Math[_0x2b73[426]](_0xff22xa),_0xff22x1e=Math[_0x2b73[427]](_0xff22xa),_0xff22x19=-_0xff22x15* (_0xff22x16* _0xff22x1e+ _0xff22x5* _0xff22x1d),_0xff22x1a=-_0xff22x15* (_0xff22x4* _0xff22x1e- _0xff22x17* _0xff22x1d),_0xff22x1c=_0xff22x1b= 0,_0xff22x18=[],_0xff22x1f=0;_0xff22x1f< _0xff22x12;++_0xff22x1f){_0xff22xa+= _0xff22x9;var _0xff22x1d=Math[_0x2b73[426]](_0xff22xa),_0xff22x1e=Math[_0x2b73[427]](_0xff22xa),_0xff22x1b=_0xff22x16* _0xff22x1d- _0xff22x5* _0xff22x1e+ _0xff22x13,_0xff22x1c=_0xff22x4* _0xff22x1d+ _0xff22x17* _0xff22x1e+ _0xff22x14,_0xff22x20=-_0xff22x15* (_0xff22x16* _0xff22x1e+ _0xff22x5* _0xff22x1d),_0xff22x1d=-_0xff22x15* (_0xff22x4* _0xff22x1e- _0xff22x17* _0xff22x1d),_0xff22x1e=6* _0xff22x1f;_0xff22x18[_0xff22x1e]= Number(_0xff22x19+ _0xff22x2);_0xff22x18[_0xff22x1e+ 1]= Number(_0xff22x1a+ _0xff22x3);_0xff22x18[_0xff22x1e+ 2]= Number(_0xff22x1b- _0xff22x20+ _0xff22x2);_0xff22x18[_0xff22x1e+ 3]= Number(_0xff22x1c- _0xff22x1d+ _0xff22x3);_0xff22x18[_0xff22x1e+ 4]= Number(_0xff22x1b+ _0xff22x2);_0xff22x18[_0xff22x1e+ 5]= Number(_0xff22x1c+ _0xff22x3);_0xff22x19= _0xff22x1b+ _0xff22x20;_0xff22x1a= _0xff22x1c+ _0xff22x1d};return _0xff22x18},getBoundingBox:function(_0xff22x2,_0xff22x3){var _0xff22x4=null;if(null!= _0xff22x2&& null!= _0xff22x3&& 0!= _0xff22x3){var _0xff22x5=mxUtils[_0x2b73[431]](_0xff22x3),_0xff22x4=Math[_0x2b73[426]](_0xff22x5),_0xff22x9=Math[_0x2b73[427]](_0xff22x5),_0xff22xa= new mxPoint(_0xff22x2[_0x2b73[235]]+ _0xff22x2[_0x2b73[117]]/ 2,_0xff22x2[_0x2b73[236]]+ _0xff22x2[_0x2b73[119]]/ 2),_0xff22x12= new mxPoint(_0xff22x2[_0x2b73[235]],_0xff22x2[_0x2b73[236]]),_0xff22x5= new mxPoint(_0xff22x2[_0x2b73[235]]+ _0xff22x2[_0x2b73[117]],_0xff22x2[_0x2b73[236]]),_0xff22x13= new mxPoint(_0xff22x5[_0x2b73[235]],_0xff22x2[_0x2b73[236]]+ _0xff22x2[_0x2b73[119]]),_0xff22x14= new mxPoint(_0xff22x2[_0x2b73[235]],_0xff22x13[_0x2b73[236]]),_0xff22x12=mxUtils[_0x2b73[432]](_0xff22x12,_0xff22x4,_0xff22x9,_0xff22xa),_0xff22x5=mxUtils[_0x2b73[432]](_0xff22x5,_0xff22x4,_0xff22x9,_0xff22xa),_0xff22x13=mxUtils[_0x2b73[432]](_0xff22x13,_0xff22x4,_0xff22x9,_0xff22xa),_0xff22x14=mxUtils[_0x2b73[432]](_0xff22x14,_0xff22x4,_0xff22x9,_0xff22xa),_0xff22x4= new mxRectangle(_0xff22x12[_0x2b73[235]],_0xff22x12[_0x2b73[236]],0,0);_0xff22x4[_0x2b73[99]]( new mxRectangle(_0xff22x5[_0x2b73[235]],_0xff22x5[_0x2b73[236]],0,0));_0xff22x4[_0x2b73[99]]( new mxRectangle(_0xff22x13[_0x2b73[235]],_0xff22x13[_0x2b73[236]],0,0));_0xff22x4[_0x2b73[99]]( new mxRectangle(_0xff22x14[_0x2b73[235]],_0xff22x14[_0x2b73[236]],0,0))};return _0xff22x4},getRotatedPoint:function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){_0xff22x5= null!= _0xff22x5?_0xff22x5: new mxPoint;var _0xff22x9=_0xff22x2[_0x2b73[235]]- _0xff22x5[_0x2b73[235]];_0xff22x2= _0xff22x2[_0x2b73[236]]- _0xff22x5[_0x2b73[236]];return new mxPoint(_0xff22x9* _0xff22x3- _0xff22x2* _0xff22x4+ _0xff22x5[_0x2b73[235]],_0xff22x2* _0xff22x3+ _0xff22x9* _0xff22x4+ _0xff22x5[_0x2b73[236]])},getPortConstraints:function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){_0xff22x2= mxUtils[_0x2b73[433]](_0xff22x2[_0x2b73[124]],mxConstants.STYLE_PORT_CONSTRAINT,null);if(null== _0xff22x2){return _0xff22x5};_0xff22x5= _0xff22x2.toString();_0xff22x2= mxConstants[_0x2b73[434]];0<= _0xff22x5[_0x2b73[2]](mxConstants.DIRECTION_NORTH)&& (_0xff22x2|= mxConstants[_0x2b73[435]]);0<= _0xff22x5[_0x2b73[2]](mxConstants.DIRECTION_WEST)&& (_0xff22x2|= mxConstants[_0x2b73[436]]);0<= _0xff22x5[_0x2b73[2]](mxConstants.DIRECTION_SOUTH)&& (_0xff22x2|= mxConstants[_0x2b73[437]]);0<= _0xff22x5[_0x2b73[2]](mxConstants.DIRECTION_EAST)&& (_0xff22x2|= mxConstants[_0x2b73[438]]);return _0xff22x2},reversePortConstraints:function(_0xff22x2){var _0xff22x3=0,_0xff22x3=(_0xff22x2& mxConstants[_0x2b73[436]])<< 3,_0xff22x3=_0xff22x3| (_0xff22x2& mxConstants[_0x2b73[435]])<< 1,_0xff22x3=_0xff22x3| (_0xff22x2& mxConstants[_0x2b73[437]])>> 1;return _0xff22x3|= (_0xff22x2& mxConstants[_0x2b73[438]])>> 3},findNearestSegment:function(_0xff22x2,_0xff22x3,_0xff22x4){var _0xff22x5=-1;if(0< _0xff22x2[_0x2b73[439]][_0x2b73[67]]){for(var _0xff22x9=_0xff22x2[_0x2b73[439]][0],_0xff22xa=null,_0xff22x12=1;_0xff22x12< _0xff22x2[_0x2b73[439]][_0x2b73[67]];_0xff22x12++){var _0xff22x13=_0xff22x2[_0x2b73[439]][_0xff22x12],_0xff22x9=mxUtils[_0x2b73[440]](_0xff22x9[_0x2b73[235]],_0xff22x9[_0x2b73[236]],_0xff22x13[_0x2b73[235]],_0xff22x13[_0x2b73[236]],_0xff22x3,_0xff22x4);if(null== _0xff22xa|| _0xff22x9< _0xff22xa){_0xff22xa= _0xff22x9,_0xff22x5= _0xff22x12- 1};_0xff22x9= _0xff22x13}};return _0xff22x5},rectangleIntersectsSegment:function(_0xff22x2,_0xff22x3,_0xff22x4){var _0xff22x5=_0xff22x2[_0x2b73[236]],_0xff22x9=_0xff22x2[_0x2b73[235]],_0xff22xa=_0xff22x5+ _0xff22x2[_0x2b73[119]],_0xff22x12=_0xff22x9+ _0xff22x2[_0x2b73[117]];_0xff22x2= _0xff22x3[_0x2b73[235]];var _0xff22x13=_0xff22x4[_0x2b73[235]];_0xff22x3[_0x2b73[235]]> _0xff22x4[_0x2b73[235]]&& (_0xff22x2= _0xff22x4[_0x2b73[235]],_0xff22x13= _0xff22x3[_0x2b73[235]]);_0xff22x13> _0xff22x12&& (_0xff22x13= _0xff22x12);_0xff22x2< _0xff22x9&& (_0xff22x2= _0xff22x9);if(_0xff22x2> _0xff22x13){return !1};var _0xff22x9=_0xff22x3[_0x2b73[236]],_0xff22x12=_0xff22x4[_0x2b73[236]],_0xff22x14=_0xff22x4[_0x2b73[235]]- _0xff22x3[_0x2b73[235]];1E-7< Math[_0x2b73[425]](_0xff22x14)&& (_0xff22x4= (_0xff22x4[_0x2b73[236]]- _0xff22x3[_0x2b73[236]])/ _0xff22x14,_0xff22x3= _0xff22x3[_0x2b73[236]]- _0xff22x4* _0xff22x3[_0x2b73[235]],_0xff22x9= _0xff22x4* _0xff22x2+ _0xff22x3,_0xff22x12= _0xff22x4* _0xff22x13+ _0xff22x3);_0xff22x9> _0xff22x12&& (_0xff22x3= _0xff22x12,_0xff22x12= _0xff22x9,_0xff22x9= _0xff22x3);_0xff22x12> _0xff22xa&& (_0xff22x12= _0xff22xa);_0xff22x9< _0xff22x5&& (_0xff22x9= _0xff22x5);return _0xff22x9> _0xff22x12?!1:!0},contains:function(_0xff22x2,_0xff22x3,_0xff22x4){return _0xff22x2[_0x2b73[235]]<= _0xff22x3&& _0xff22x2[_0x2b73[235]]+ _0xff22x2[_0x2b73[117]]>= _0xff22x3&& _0xff22x2[_0x2b73[236]]<= _0xff22x4&& _0xff22x2[_0x2b73[236]]+ _0xff22x2[_0x2b73[119]]>= _0xff22x4},intersects:function(_0xff22x2,_0xff22x3){var _0xff22x4=_0xff22x2[_0x2b73[117]],_0xff22x5=_0xff22x2[_0x2b73[119]],_0xff22x9=_0xff22x3[_0x2b73[117]],_0xff22xa=_0xff22x3[_0x2b73[119]];if(0>= _0xff22x9|| 0>= _0xff22xa|| 0>= _0xff22x4|| 0>= _0xff22x5){return !1};var _0xff22x12=_0xff22x2[_0x2b73[235]],_0xff22x13=_0xff22x2[_0x2b73[236]],_0xff22x14=_0xff22x3[_0x2b73[235]],_0xff22x15=_0xff22x3[_0x2b73[236]],_0xff22x9=_0xff22x9+ _0xff22x14,_0xff22xa=_0xff22xa+ _0xff22x15,_0xff22x4=_0xff22x4+ _0xff22x12,_0xff22x5=_0xff22x5+ _0xff22x13;return (_0xff22x9< _0xff22x14|| _0xff22x9> _0xff22x12)&& (_0xff22xa< _0xff22x15|| _0xff22xa> _0xff22x13)&& (_0xff22x4< _0xff22x12|| _0xff22x4> _0xff22x14)&& (_0xff22x5< _0xff22x13|| _0xff22x5> _0xff22x15)},intersectsHotspot:function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa){_0xff22x5= null!= _0xff22x5?_0xff22x5:1;_0xff22x9= null!= _0xff22x9?_0xff22x9:0;_0xff22xa= null!= _0xff22xa?_0xff22xa:0;if(0< _0xff22x5){var _0xff22x12=_0xff22x2[_0x2b73[241]](),_0xff22x13=_0xff22x2[_0x2b73[242]](),_0xff22x14=_0xff22x2[_0x2b73[117]],_0xff22x15=_0xff22x2[_0x2b73[119]],_0xff22x16=mxUtils[_0x2b73[433]](_0xff22x2[_0x2b73[124]],mxConstants.STYLE_STARTSIZE)* _0xff22x2[_0x2b73[441]][_0x2b73[255]];0< _0xff22x16&& (mxUtils[_0x2b73[433]](_0xff22x2[_0x2b73[124]],mxConstants.STYLE_HORIZONTAL,!0)?(_0xff22x13= _0xff22x2[_0x2b73[236]]+ _0xff22x16/ 2,_0xff22x15= _0xff22x16):(_0xff22x12= _0xff22x2[_0x2b73[235]]+ _0xff22x16/ 2,_0xff22x14= _0xff22x16));_0xff22x14= Math[_0x2b73[160]](_0xff22x9,_0xff22x14* _0xff22x5);_0xff22x15= Math[_0x2b73[160]](_0xff22x9,_0xff22x15* _0xff22x5);0< _0xff22xa&& (_0xff22x14= Math[_0x2b73[243]](_0xff22x14,_0xff22xa),_0xff22x15= Math[_0x2b73[243]](_0xff22x15,_0xff22xa));_0xff22x5= new mxRectangle(_0xff22x12- _0xff22x14/ 2,_0xff22x13- _0xff22x15/ 2,_0xff22x14,_0xff22x15);_0xff22x12= mxUtils[_0x2b73[431]](mxUtils[_0x2b73[433]](_0xff22x2[_0x2b73[124]],mxConstants.STYLE_ROTATION)|| 0);0!= _0xff22x12&& (_0xff22x9= Math[_0x2b73[426]](-_0xff22x12),_0xff22xa= Math[_0x2b73[427]](-_0xff22x12),_0xff22x12= new mxPoint(_0xff22x2[_0x2b73[241]](),_0xff22x2[_0x2b73[242]]()),_0xff22x2= mxUtils[_0x2b73[432]]( new mxPoint(_0xff22x3,_0xff22x4),_0xff22x9,_0xff22xa,_0xff22x12),_0xff22x3= _0xff22x2[_0x2b73[235]],_0xff22x4= _0xff22x2[_0x2b73[236]]);return mxUtils[_0x2b73[442]](_0xff22x5,_0xff22x3,_0xff22x4)};return !0},getOffset:function(_0xff22x2,_0xff22x3){var _0xff22x4=0,_0xff22x5=0;if(null!= _0xff22x3&& _0xff22x3){var _0xff22x9=document[_0x2b73[112]],_0xff22xa=document[_0x2b73[158]],_0xff22x4=_0xff22x4+ (_0xff22x9[_0x2b73[360]]|| _0xff22xa[_0x2b73[360]]),_0xff22x5=_0xff22x5+ (_0xff22x9[_0x2b73[190]]|| _0xff22xa[_0x2b73[190]])};for(;_0xff22x2[_0x2b73[443]];){_0xff22x4+= _0xff22x2[_0x2b73[358]],_0xff22x5+= _0xff22x2[_0x2b73[362]],_0xff22x2= _0xff22x2[_0x2b73[443]]};return new mxPoint(_0xff22x4,_0xff22x5)},getScrollOrigin:function(_0xff22x2){for(var _0xff22x3=document[_0x2b73[112]],_0xff22x4=document[_0x2b73[158]],_0xff22x5= new mxPoint(_0xff22x3[_0x2b73[360]]|| _0xff22x4[_0x2b73[360]],_0xff22x3[_0x2b73[190]]|| _0xff22x4[_0x2b73[190]]);null!= _0xff22x2&& _0xff22x2!= _0xff22x3&& _0xff22x2!= _0xff22x4;){!isNaN(_0xff22x2[_0x2b73[360]])&& !isNaN(_0xff22x2[_0x2b73[190]])&& (_0xff22x5[_0x2b73[235]]+= _0xff22x2[_0x2b73[360]],_0xff22x5[_0x2b73[236]]+= _0xff22x2[_0x2b73[190]]),_0xff22x2= _0xff22x2[_0x2b73[265]]};return _0xff22x5},convertPoint:function(_0xff22x2,_0xff22x3,_0xff22x4){var _0xff22x5=mxUtils[_0x2b73[444]](_0xff22x2);_0xff22x2= mxUtils[_0x2b73[445]](_0xff22x2);_0xff22x2[_0x2b73[235]]-= _0xff22x5[_0x2b73[235]];_0xff22x2[_0x2b73[236]]-= _0xff22x5[_0x2b73[236]];return new mxPoint(_0xff22x3- _0xff22x2[_0x2b73[235]],_0xff22x4- _0xff22x2[_0x2b73[236]])},ltrim:function(_0xff22x2,_0xff22x3){return _0xff22x2[_0x2b73[230]](RegExp(_0x2b73[446]+ (_0xff22x3|| _0x2b73[447])+ _0x2b73[448],_0x2b73[449]),_0x2b73[110])},rtrim:function(_0xff22x2,_0xff22x3){return _0xff22x2[_0x2b73[230]](RegExp(_0x2b73[450]+ (_0xff22x3|| _0x2b73[447])+ _0x2b73[451],_0x2b73[449]),_0x2b73[110])},trim:function(_0xff22x2,_0xff22x3){return mxUtils[_0x2b73[453]](mxUtils[_0x2b73[452]](_0xff22x2,_0xff22x3),_0xff22x3)},isNumeric:function(_0xff22x2){return null!= _0xff22x2&& (null== _0xff22x2[_0x2b73[67]]|| 0< _0xff22x2[_0x2b73[67]]&& 0> _0xff22x2[_0x2b73[2]](_0x2b73[454])&& 0> _0xff22x2[_0x2b73[2]](_0x2b73[455]))&& !isNaN(_0xff22x2)},mod:function(_0xff22x2,_0xff22x3){return (_0xff22x2% _0xff22x3+ _0xff22x3)% _0xff22x3},intersection:function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa,_0xff22x12,_0xff22x13){var _0xff22x14=(_0xff22x13- _0xff22xa)* (_0xff22x4- _0xff22x2)- (_0xff22x12- _0xff22x9)* (_0xff22x5- _0xff22x3);_0xff22x12= ((_0xff22x12- _0xff22x9)* (_0xff22x3- _0xff22xa)- (_0xff22x13- _0xff22xa)* (_0xff22x2- _0xff22x9))/ _0xff22x14;_0xff22x9= ((_0xff22x4- _0xff22x2)* (_0xff22x3- _0xff22xa)- (_0xff22x5- _0xff22x3)* (_0xff22x2- _0xff22x9))/ _0xff22x14;return 0<= _0xff22x12&& 1>= _0xff22x12&& 0<= _0xff22x9&& 1>= _0xff22x9? new mxPoint(_0xff22x2+ _0xff22x12* (_0xff22x4- _0xff22x2),_0xff22x3+ _0xff22x12* (_0xff22x5- _0xff22x3)):null},ptSegDistSq:function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa){_0xff22x4-= _0xff22x2;_0xff22x5-= _0xff22x3;_0xff22x9-= _0xff22x2;_0xff22xa-= _0xff22x3;0>= _0xff22x9* _0xff22x4+ _0xff22xa* _0xff22x5?_0xff22x4= 0:(_0xff22x9= _0xff22x4- _0xff22x9,_0xff22xa= _0xff22x5- _0xff22xa,_0xff22x2= _0xff22x9* _0xff22x4+ _0xff22xa* _0xff22x5,_0xff22x4= 0>= _0xff22x2?0:_0xff22x2* _0xff22x2/ (_0xff22x4* _0xff22x4+ _0xff22x5* _0xff22x5));_0xff22x9= _0xff22x9* _0xff22x9+ _0xff22xa* _0xff22xa- _0xff22x4;0> _0xff22x9&& (_0xff22x9= 0);return _0xff22x9},relativeCcw:function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa){_0xff22x4-= _0xff22x2;_0xff22x5-= _0xff22x3;_0xff22x9-= _0xff22x2;_0xff22xa-= _0xff22x3;_0xff22x2= _0xff22x9* _0xff22x5- _0xff22xa* _0xff22x4;0== _0xff22x2&& (_0xff22x2= _0xff22x9* _0xff22x4+ _0xff22xa* _0xff22x5,0< _0xff22x2&& (_0xff22x2= (_0xff22x9- _0xff22x4)* _0xff22x4+ (_0xff22xa- _0xff22x5)* _0xff22x5,0> _0xff22x2&& (_0xff22x2= 0)));return 0> _0xff22x2?-1:0< _0xff22x2?1:0},animateChanges:function(_0xff22x2,_0xff22x3){mxEffects[_0x2b73[456]][_0x2b73[183]](this,arguments)},cascadeOpacity:function(_0xff22x2,_0xff22x3,_0xff22x4){mxEffects[_0x2b73[260]][_0x2b73[183]](this,arguments)},fadeOut:function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa){mxEffects[_0x2b73[457]][_0x2b73[183]](this,arguments)},setOpacity:function(_0xff22x2,_0xff22x3){mxUtils[_0x2b73[458]](_0xff22x2)?_0xff22x2[_0x2b73[124]][_0x2b73[347]]= 100<= _0xff22x3?null:_0x2b73[459]+ _0xff22x3/ 5+ _0x2b73[460]:mxClient[_0x2b73[80]]&& (_0x2b73[82]=== typeof document[_0x2b73[5]]|| 9> document[_0x2b73[5]])?_0xff22x2[_0x2b73[124]][_0x2b73[347]]= 100<= _0xff22x3?null:_0x2b73[459]+ _0xff22x3+ _0x2b73[460]:_0xff22x2[_0x2b73[124]][_0x2b73[461]]= _0xff22x3/ 100},createImage:function(_0xff22x2){var _0xff22x3=null;mxClient[_0x2b73[49]]&& _0x2b73[462]!= document[_0x2b73[135]]?(_0xff22x3= document[_0x2b73[55]](mxClient[_0x2b73[463]]+ _0x2b73[464]),_0xff22x3[_0x2b73[57]](_0x2b73[390],_0xff22x2),_0xff22x3[_0x2b73[124]][_0x2b73[465]]= _0x2b73[130]):(_0xff22x3= document[_0x2b73[55]](_0x2b73[466]),_0xff22x3[_0x2b73[57]](_0x2b73[390],_0xff22x2),_0xff22x3[_0x2b73[57]](_0x2b73[467],_0x2b73[468]));return _0xff22x3},sortCells:function(_0xff22x2,_0xff22x3){_0xff22x3= null!= _0xff22x3?_0xff22x3:!0;var _0xff22x4= new mxDictionary;_0xff22x2[_0x2b73[470]](function(_0xff22x2,_0xff22x9){var _0xff22xa=_0xff22x4[_0x2b73[203]](_0xff22x2);null== _0xff22xa&& (_0xff22xa= mxCellPath[_0x2b73[385]](_0xff22x2)[_0x2b73[224]](mxCellPath.PATH_SEPARATOR),_0xff22x4[_0x2b73[204]](_0xff22x2,_0xff22xa));var _0xff22x12=_0xff22x4[_0x2b73[203]](_0xff22x9);null== _0xff22x12&& (_0xff22x12= mxCellPath[_0x2b73[385]](_0xff22x9)[_0x2b73[224]](mxCellPath.PATH_SEPARATOR),_0xff22x4[_0x2b73[204]](_0xff22x9,_0xff22x12));_0xff22xa= mxCellPath[_0x2b73[469]](_0xff22xa,_0xff22x12);return 0== _0xff22xa?0:0< _0xff22xa== _0xff22x3?1:-1});return _0xff22x2},getStylename:function(_0xff22x2){return null!= _0xff22x2&& (_0xff22x2= _0xff22x2[_0x2b73[224]](_0x2b73[471])[0],0> _0xff22x2[_0x2b73[2]](_0x2b73[226]))?_0xff22x2:_0x2b73[110]},getStylenames:function(_0xff22x2){var _0xff22x3=[];if(null!= _0xff22x2){_0xff22x2= _0xff22x2[_0x2b73[224]](_0x2b73[471]);for(var _0xff22x4=0;_0xff22x4< _0xff22x2[_0x2b73[67]];_0xff22x4++){0> _0xff22x2[_0xff22x4][_0x2b73[2]](_0x2b73[226])&& _0xff22x3[_0x2b73[207]](_0xff22x2[_0xff22x4])}};return _0xff22x3},indexOfStylename:function(_0xff22x2,_0xff22x3){if(null!= _0xff22x2&& null!= _0xff22x3){for(var _0xff22x4=_0xff22x2[_0x2b73[224]](_0x2b73[471]),_0xff22x5=0,_0xff22x9=0;_0xff22x9< _0xff22x4[_0x2b73[67]];_0xff22x9++){if(_0xff22x4[_0xff22x9]== _0xff22x3){return _0xff22x5};_0xff22x5+= _0xff22x4[_0xff22x9][_0x2b73[67]]+ 1}};return -1},addStylename:function(_0xff22x2,_0xff22x3){0> mxUtils[_0x2b73[472]](_0xff22x2,_0xff22x3)&& (null== _0xff22x2?_0xff22x2= _0x2b73[110]:0< _0xff22x2[_0x2b73[67]]&& _0x2b73[471]!= _0xff22x2[_0x2b73[225]](_0xff22x2[_0x2b73[67]]- 1)&& (_0xff22x2+= _0x2b73[471]),_0xff22x2+= _0xff22x3);return _0xff22x2},removeStylename:function(_0xff22x2,_0xff22x3){var _0xff22x4=[];if(null!= _0xff22x2){for(var _0xff22x5=_0xff22x2[_0x2b73[224]](_0x2b73[471]),_0xff22x9=0;_0xff22x9< _0xff22x5[_0x2b73[67]];_0xff22x9++){_0xff22x5[_0xff22x9]!= _0xff22x3&& _0xff22x4[_0x2b73[207]](_0xff22x5[_0xff22x9])}};return _0xff22x4[_0x2b73[234]](_0x2b73[471])},removeAllStylenames:function(_0xff22x2){var _0xff22x3=[];if(null!= _0xff22x2){_0xff22x2= _0xff22x2[_0x2b73[224]](_0x2b73[471]);for(var _0xff22x4=0;_0xff22x4< _0xff22x2[_0x2b73[67]];_0xff22x4++){0<= _0xff22x2[_0xff22x4][_0x2b73[2]](_0x2b73[226])&& _0xff22x3[_0x2b73[207]](_0xff22x2[_0xff22x4])}};return _0xff22x3[_0x2b73[234]](_0x2b73[471])},setCellStyles:function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){if(null!= _0xff22x3&& 0< _0xff22x3[_0x2b73[67]]){_0xff22x2[_0x2b73[473]]();try{for(var _0xff22x9=0;_0xff22x9< _0xff22x3[_0x2b73[67]];_0xff22x9++){if(null!= _0xff22x3[_0xff22x9]){var _0xff22xa=mxUtils[_0x2b73[475]](_0xff22x2[_0x2b73[474]](_0xff22x3[_0xff22x9]),_0xff22x4,_0xff22x5);_0xff22x2[_0x2b73[475]](_0xff22x3[_0xff22x9],_0xff22xa)}}}finally{_0xff22x2[_0x2b73[476]]()}}},setStyle:function(_0xff22x2,_0xff22x3,_0xff22x4){var _0xff22x5=null!= _0xff22x4&& (_0x2b73[82]== typeof _0xff22x4[_0x2b73[67]]|| 0< _0xff22x4[_0x2b73[67]]);if(null== _0xff22x2|| 0== _0xff22x2[_0x2b73[67]]){_0xff22x5&& (_0xff22x2= _0xff22x3+ _0x2b73[226]+ _0xff22x4)}else {var _0xff22x9=_0xff22x2[_0x2b73[2]](_0xff22x3+ _0x2b73[226]);0> _0xff22x9?_0xff22x5&& (_0xff22x5= _0x2b73[471]== _0xff22x2[_0x2b73[225]](_0xff22x2[_0x2b73[67]]- 1)?_0x2b73[110]:_0x2b73[471],_0xff22x2= _0xff22x2+ _0xff22x5+ _0xff22x3+ _0x2b73[226]+ _0xff22x4):(_0xff22x3= _0xff22x5?_0xff22x3+ _0x2b73[226]+ _0xff22x4:_0x2b73[110],_0xff22x4= _0xff22x2[_0x2b73[2]](_0x2b73[471],_0xff22x9),_0xff22x5|| _0xff22x4++,_0xff22x2= _0xff22x2[_0x2b73[85]](0,_0xff22x9)+ _0xff22x3+ (_0xff22x4> _0xff22x9?_0xff22x2[_0x2b73[85]](_0xff22x4):_0x2b73[110]))};return _0xff22x2},setCellStyleFlags:function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){if(null!= _0xff22x3&& 0< _0xff22x3[_0x2b73[67]]){_0xff22x2[_0x2b73[473]]();try{for(var _0xff22xa=0;_0xff22xa< _0xff22x3[_0x2b73[67]];_0xff22xa++){if(null!= _0xff22x3[_0xff22xa]){var _0xff22x12=mxUtils[_0x2b73[477]](_0xff22x2[_0x2b73[474]](_0xff22x3[_0xff22xa]),_0xff22x4,_0xff22x5,_0xff22x9);_0xff22x2[_0x2b73[475]](_0xff22x3[_0xff22xa],_0xff22x12)}}}finally{_0xff22x2[_0x2b73[476]]()}}},setStyleFlag:function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){if(null== _0xff22x2|| 0== _0xff22x2[_0x2b73[67]]){_0xff22x2= _0xff22x5|| null== _0xff22x5?_0xff22x3+ _0x2b73[226]+ _0xff22x4:_0xff22x3+ _0x2b73[478]}else {var _0xff22x9=_0xff22x2[_0x2b73[2]](_0xff22x3+ _0x2b73[226]);if(0> _0xff22x9){_0xff22x9= _0x2b73[471]== _0xff22x2[_0x2b73[225]](_0xff22x2[_0x2b73[67]]- 1)?_0x2b73[110]:_0x2b73[471],_0xff22x2= _0xff22x5|| null== _0xff22x5?_0xff22x2+ _0xff22x9+ _0xff22x3+ _0x2b73[226]+ _0xff22x4:_0xff22x2+ _0xff22x9+ _0xff22x3+ _0x2b73[478]}else {var _0xff22xa=_0xff22x2[_0x2b73[2]](_0x2b73[471],_0xff22x9),_0xff22x12=_0x2b73[110],_0xff22x12=0> _0xff22xa?_0xff22x2[_0x2b73[85]](_0xff22x9+ _0xff22x3[_0x2b73[67]]+ 1):_0xff22x2[_0x2b73[85]](_0xff22x9+ _0xff22x3[_0x2b73[67]]+ 1,_0xff22xa),_0xff22x12=null== _0xff22x5?parseInt(_0xff22x12)^ _0xff22x4:_0xff22x5?parseInt(_0xff22x12)| _0xff22x4:parseInt(_0xff22x12)& ~_0xff22x4;_0xff22x2= _0xff22x2[_0x2b73[85]](0,_0xff22x9)+ _0xff22x3+ _0x2b73[226]+ _0xff22x12+ (0<= _0xff22xa?_0xff22x2[_0x2b73[85]](_0xff22xa):_0x2b73[110])}};return _0xff22x2},getAlignmentAsPoint:function(_0xff22x2,_0xff22x3){var _0xff22x4=0,_0xff22x5=0;_0xff22x2== mxConstants[_0x2b73[479]]?_0xff22x4= -0.5:_0xff22x2== mxConstants[_0x2b73[480]]&& (_0xff22x4= -1);_0xff22x3== mxConstants[_0x2b73[481]]?_0xff22x5= -0.5:_0xff22x3== mxConstants[_0x2b73[482]]&& (_0xff22x5= -1);return new mxPoint(_0xff22x4,_0xff22x5)},getSizeForString:function(_0xff22x2,_0xff22x3,_0xff22x4){_0xff22x3= null!= _0xff22x3?_0xff22x3:mxConstants[_0x2b73[483]];_0xff22x4= null!= _0xff22x4?_0xff22x4:mxConstants[_0x2b73[484]];var _0xff22x5=document[_0x2b73[55]](_0x2b73[485]);_0xff22x5[_0x2b73[124]][_0x2b73[486]]= _0xff22x4;_0xff22x5[_0x2b73[124]][_0x2b73[487]]= Math[_0x2b73[488]](_0xff22x3)+ _0x2b73[168];_0xff22x5[_0x2b73[124]][_0x2b73[489]]= Math[_0x2b73[488]](_0xff22x3* mxConstants[_0x2b73[490]])+ _0x2b73[168];_0xff22x5[_0x2b73[124]][_0x2b73[491]]= _0x2b73[492];_0xff22x5[_0x2b73[124]][_0x2b73[493]]= _0x2b73[494];_0xff22x5[_0x2b73[124]][_0x2b73[187]]= _0x2b73[188];_0xff22x5[_0x2b73[124]][_0x2b73[495]]= mxClient[_0x2b73[496]]?_0x2b73[497]:_0x2b73[498];_0xff22x5[_0x2b73[124]][_0x2b73[499]]= _0x2b73[500];_0xff22x5[_0x2b73[339]]= _0xff22x2;document[_0x2b73[112]][_0x2b73[62]](_0xff22x5);_0xff22x2= new mxRectangle(0,0,_0xff22x5[_0x2b73[359]],_0xff22x5[_0x2b73[167]]);document[_0x2b73[112]][_0x2b73[266]](_0xff22x5);return _0xff22x2},getViewXml:function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){_0xff22x5= null!= _0xff22x5?_0xff22x5:0;_0xff22x9= null!= _0xff22x9?_0xff22x9:0;_0xff22x3= null!= _0xff22x3?_0xff22x3:1;null== _0xff22x4&& (_0xff22x4= [_0xff22x2[_0x2b73[502]]()[_0x2b73[501]]()]);var _0xff22xa=_0xff22x2[_0x2b73[249]](),_0xff22x12=null,_0xff22x13=_0xff22xa[_0x2b73[503]]();_0xff22xa[_0x2b73[504]](!1);var _0xff22x14=_0xff22xa[_0x2b73[505]],_0xff22x15=_0xff22xa[_0x2b73[506]];_0xff22x2[_0x2b73[507]]== mxConstants[_0x2b73[508]]?(_0xff22xa[_0x2b73[505]]= document[_0x2b73[509]](mxConstants.NS_SVG,_0x2b73[449]),_0xff22xa[_0x2b73[510]][_0x2b73[62]](_0xff22xa[_0x2b73[505]]),_0xff22xa[_0x2b73[506]]= document[_0x2b73[509]](mxConstants.NS_SVG,_0x2b73[449])):(_0xff22xa[_0x2b73[505]]= _0xff22xa[_0x2b73[505]][_0x2b73[511]](!1),_0xff22xa[_0x2b73[510]][_0x2b73[62]](_0xff22xa[_0x2b73[505]]),_0xff22xa[_0x2b73[506]]= _0xff22xa[_0x2b73[506]][_0x2b73[511]](!1));_0xff22xa[_0x2b73[510]][_0x2b73[62]](_0xff22xa[_0x2b73[506]]);var _0xff22x16=_0xff22xa[_0x2b73[512]]();_0xff22xa[_0x2b73[513]]= new mxPoint(_0xff22x5,_0xff22x9);_0xff22x3= new mxTemporaryCellStates(_0xff22x2[_0x2b73[249]](),_0xff22x3,_0xff22x4);try{_0xff22x12= ( new mxCodec)[_0x2b73[514]](_0xff22x2[_0x2b73[249]]())}finally{_0xff22x3[_0x2b73[515]](),_0xff22xa[_0x2b73[513]]= _0xff22x16,_0xff22xa[_0x2b73[510]][_0x2b73[266]](_0xff22xa[_0x2b73[505]]),_0xff22xa[_0x2b73[510]][_0x2b73[266]](_0xff22xa[_0x2b73[506]]),_0xff22xa[_0x2b73[505]]= _0xff22x14,_0xff22xa[_0x2b73[506]]= _0xff22x15,_0xff22xa[_0x2b73[504]](_0xff22x13)};return _0xff22x12},getScaleForPageCount:function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){if(1> _0xff22x2){return 1};_0xff22x4= null!= _0xff22x4?_0xff22x4:mxConstants[_0x2b73[516]];_0xff22x5= null!= _0xff22x5?_0xff22x5:0;var _0xff22x9=_0xff22x4[_0x2b73[117]]- 2* _0xff22x5;_0xff22x4= _0xff22x4[_0x2b73[119]]- 2* _0xff22x5;_0xff22x5= _0xff22x3[_0x2b73[517]]()[_0x2b73[238]]();_0xff22x3= _0xff22x3[_0x2b73[249]]()[_0x2b73[518]]();_0xff22x5[_0x2b73[117]]/= _0xff22x3;_0xff22x5[_0x2b73[119]]/= _0xff22x3;_0xff22x3= _0xff22x5[_0x2b73[117]];_0xff22x4= _0xff22x3/ _0xff22x5[_0x2b73[119]]/ (_0xff22x9/ _0xff22x4);_0xff22x5= Math[_0x2b73[428]](_0xff22x2);var _0xff22xa=Math[_0x2b73[428]](_0xff22x4);_0xff22x4= _0xff22x5* _0xff22xa;_0xff22x5/= _0xff22xa;if(1> _0xff22x4&& _0xff22x5> _0xff22x2){var _0xff22x12=_0xff22x5/ _0xff22x2;_0xff22x5= _0xff22x2;_0xff22x4/= _0xff22x12};1> _0xff22x5&& _0xff22x4> _0xff22x2&& (_0xff22x12= _0xff22x4/ _0xff22x2,_0xff22x4= _0xff22x2,_0xff22x5/= _0xff22x12);_0xff22x12= Math[_0x2b73[430]](_0xff22x4)* Math[_0x2b73[430]](_0xff22x5);for(_0xff22xa= 0;_0xff22x12> _0xff22x2;){var _0xff22x12=Math[_0x2b73[519]](_0xff22x4)/ _0xff22x4,_0xff22x13=Math[_0x2b73[519]](_0xff22x5)/ _0xff22x5;1== _0xff22x12&& (_0xff22x12= Math[_0x2b73[519]](_0xff22x4- 1)/ _0xff22x4);1== _0xff22x13&& (_0xff22x13= Math[_0x2b73[519]](_0xff22x5- 1)/ _0xff22x5);_0xff22x12= _0xff22x12> _0xff22x13?_0xff22x12:_0xff22x13;_0xff22x4*= _0xff22x12;_0xff22x5*= _0xff22x12;_0xff22x12= Math[_0x2b73[430]](_0xff22x4)* Math[_0x2b73[430]](_0xff22x5);_0xff22xa++;if(10< _0xff22xa){break}};return 0.99999* (_0xff22x9* _0xff22x4/ _0xff22x3)},show:function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){_0xff22x4= null!= _0xff22x4?_0xff22x4:0;_0xff22x5= null!= _0xff22x5?_0xff22x5:0;null== _0xff22x3?_0xff22x3= window[_0x2b73[392]]()[_0x2b73[395]]:_0xff22x3[_0x2b73[392]]();var _0xff22x9=_0xff22x2[_0x2b73[517]]();_0xff22x4= -_0xff22x9[_0x2b73[235]]+ _0xff22x4;_0xff22x5= -_0xff22x9[_0x2b73[236]]+ _0xff22x5;if(mxClient[_0x2b73[80]]){for(var _0xff22x9=_0x2b73[520],_0xff22xa=document[_0x2b73[64]](_0x2b73[521]),_0xff22x12=0;_0xff22x12< _0xff22xa[_0x2b73[67]];_0xff22x12++){_0xff22x9+= _0xff22xa[_0xff22x12][_0x2b73[342]]};_0xff22x9+= _0x2b73[522];for(_0xff22x12= 0;_0xff22x12< document[_0x2b73[523]][_0x2b73[67]];_0xff22x12++){try{_0xff22x9+= document[_0x2b73[523]](_0xff22x12)[_0x2b73[103]]}catch(h){}};_0xff22x9+= _0x2b73[524];_0xff22x9+= _0x2b73[525];_0xff22x9+= _0xff22x2[_0x2b73[526]][_0x2b73[339]];_0xff22x9+= _0x2b73[527];_0xff22x9+= _0x2b73[528];_0xff22x3[_0x2b73[171]](_0xff22x9);_0xff22x3[_0x2b73[268]]();_0xff22x2= _0xff22x3[_0x2b73[112]][_0x2b73[64]](_0x2b73[529])[0];null!= _0xff22x2&& (_0xff22x2[_0x2b73[124]][_0x2b73[491]]= _0x2b73[492],_0xff22x2[_0x2b73[124]][_0x2b73[361]]= _0xff22x4+ _0x2b73[168],_0xff22x2[_0x2b73[124]][_0x2b73[125]]= _0xff22x5+ _0x2b73[168])}else {_0xff22x3[_0x2b73[171]](_0x2b73[530]);_0xff22x3[_0x2b73[171]](_0x2b73[531]);_0xff22xa= document[_0x2b73[64]](_0x2b73[521]);for(_0xff22x12= 0;_0xff22x12< _0xff22xa[_0x2b73[67]];_0xff22x12++){_0xff22x3[_0x2b73[171]](mxUtils[_0x2b73[532]](_0xff22xa[_0xff22x12]))};_0xff22xa= document[_0x2b73[64]](_0x2b73[54]);for(_0xff22x12= 0;_0xff22x12< _0xff22xa[_0x2b73[67]];_0xff22x12++){_0xff22x3[_0x2b73[171]](mxUtils[_0x2b73[532]](_0xff22xa[_0xff22x12]))};_0xff22xa= document[_0x2b73[64]](_0x2b73[124]);for(_0xff22x12= 0;_0xff22x12< _0xff22xa[_0x2b73[67]];_0xff22x12++){_0xff22x3[_0x2b73[171]](mxUtils[_0x2b73[532]](_0xff22xa[_0xff22x12]))};_0xff22x3[_0x2b73[171]](_0x2b73[533]);_0xff22x3[_0x2b73[171]](_0x2b73[534]);_0xff22x3[_0x2b73[268]]();null== _0xff22x3[_0x2b73[112]]&& _0xff22x3[_0x2b73[158]][_0x2b73[62]](_0xff22x3[_0x2b73[55]](_0x2b73[112]));_0xff22x3[_0x2b73[112]][_0x2b73[124]][_0x2b73[277]]= _0x2b73[278];for(_0xff22x2= _0xff22x2[_0x2b73[526]][_0x2b73[285]];null!= _0xff22x2;){_0xff22x12= _0xff22x2[_0x2b73[511]](!0),_0xff22x3[_0x2b73[112]][_0x2b73[62]](_0xff22x12),_0xff22x2= _0xff22x2[_0x2b73[287]]};_0xff22x2= _0xff22x3[_0x2b73[64]](_0x2b73[449])[0];null!= _0xff22x2&& (_0xff22x2[_0x2b73[57]](_0x2b73[535],_0x2b73[536]+ _0xff22x4+ _0x2b73[537]+ _0xff22x5+ _0x2b73[460]),_0xff22x4= _0xff22x2[_0x2b73[538]],_0xff22x4[_0x2b73[57]](_0x2b73[117],_0xff22x9[_0x2b73[117]]+ Math[_0x2b73[160]](_0xff22x9[_0x2b73[235]],0)+ 3),_0xff22x4[_0x2b73[57]](_0x2b73[119],_0xff22x9[_0x2b73[119]]+ Math[_0x2b73[160]](_0xff22x9[_0x2b73[236]],0)+ 3))};mxUtils[_0x2b73[272]](_0xff22x3[_0x2b73[112]]);return _0xff22x3},printScreen:function(_0xff22x2){var _0xff22x3=window[_0x2b73[392]]();mxUtils[_0x2b73[539]](_0xff22x2,_0xff22x3[_0x2b73[395]]);_0xff22x2= function(){_0xff22x3[_0x2b73[393]]();_0xff22x3[_0x2b73[540]]();_0xff22x3[_0x2b73[268]]()};mxClient[_0x2b73[76]]?_0xff22x3[_0x2b73[261]](_0xff22x2,500):_0xff22x2()},popup:function(_0xff22x2,_0xff22x3){if(_0xff22x3){var _0xff22x4=document[_0x2b73[55]](_0x2b73[485]);_0xff22x4[_0x2b73[124]][_0x2b73[277]]= _0x2b73[276];_0xff22x4[_0x2b73[124]][_0x2b73[117]]= _0x2b73[541];_0xff22x4[_0x2b73[124]][_0x2b73[119]]= _0x2b73[542];var _0xff22x5=document[_0x2b73[55]](_0x2b73[543]);_0xff22x5[_0x2b73[339]]= mxUtils[_0x2b73[321]](_0xff22x2,!1)[_0x2b73[230]](/\n/g,_0x2b73[545])[_0x2b73[230]](/ /g,_0x2b73[544]);_0xff22x4[_0x2b73[62]](_0xff22x5);_0xff22x4= new mxWindow(_0x2b73[546],_0xff22x4,document[_0x2b73[112]][_0x2b73[159]]/ 2- 320,(document[_0x2b73[112]][_0x2b73[157]]|| document[_0x2b73[158]][_0x2b73[157]])/ 2- 240,640,480,!1,!0);_0xff22x4[_0x2b73[164]](!0);_0xff22x4[_0x2b73[175]](!0)}else {mxClient[_0x2b73[133]]?(_0xff22x4= window[_0x2b73[392]](),_0xff22x4[_0x2b73[395]][_0x2b73[171]](_0x2b73[547]+ mxUtils[_0x2b73[321]](_0xff22x2)+ _0x2b73[548]),_0xff22x4[_0x2b73[395]][_0x2b73[268]]()):(_0xff22x4= window[_0x2b73[392]](),_0xff22x5= _0xff22x4[_0x2b73[395]][_0x2b73[55]](_0x2b73[543]),_0xff22x5[_0x2b73[339]]= mxUtils[_0x2b73[321]](_0xff22x2,!1)[_0x2b73[230]](/\n/g,_0x2b73[545])[_0x2b73[230]](/ /g,_0x2b73[544]),_0xff22x4[_0x2b73[395]][_0x2b73[112]][_0x2b73[62]](_0xff22x5))}},alert:function(_0xff22x2){alert(_0xff22x2)},prompt:function(_0xff22x2,_0xff22x3){return prompt(_0xff22x2,_0xff22x3)},confirm:function(_0xff22x2){return confirm(_0xff22x2)},error:function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){var _0xff22x9=document[_0x2b73[55]](_0x2b73[485]);_0xff22x9[_0x2b73[124]][_0x2b73[549]]= _0x2b73[550];var _0xff22xa=document[_0x2b73[55]](_0x2b73[466]);_0xff22xa[_0x2b73[57]](_0x2b73[390],_0xff22x5|| mxUtils[_0x2b73[551]]);_0xff22xa[_0x2b73[57]](_0x2b73[552],_0x2b73[553]);_0xff22xa[_0x2b73[124]][_0x2b73[123]]= _0x2b73[554];_0xff22x9[_0x2b73[62]](_0xff22xa);_0xff22x9[_0x2b73[62]](document[_0x2b73[344]](_0x2b73[555]));_0xff22x9[_0x2b73[62]](document[_0x2b73[344]](_0x2b73[555]));_0xff22x9[_0x2b73[62]](document[_0x2b73[344]](_0x2b73[555]));mxUtils[_0x2b73[53]](_0xff22x9,_0xff22x2);_0xff22x2= document[_0x2b73[112]][_0x2b73[159]];_0xff22x5= document[_0x2b73[112]][_0x2b73[157]]|| document[_0x2b73[158]][_0x2b73[157]];var _0xff22x12= new mxWindow(mxResources[_0x2b73[203]](mxUtils[_0x2b73[556]])|| mxUtils[_0x2b73[556]],_0xff22x9,(_0xff22x2- _0xff22x3)/ 2,_0xff22x5/ 4,_0xff22x3,null,!1,!0);_0xff22x4&& (mxUtils[_0x2b73[345]](_0xff22x9),_0xff22x3= document[_0x2b73[55]](_0x2b73[346]),_0xff22x4= document[_0x2b73[55]](_0x2b73[172]),mxClient[_0x2b73[80]]?_0xff22x4[_0x2b73[124]][_0x2b73[103]]= _0x2b73[557]:_0xff22x4[_0x2b73[57]](_0x2b73[124],_0x2b73[557]),mxEvent[_0x2b73[169]](_0xff22x4,_0x2b73[173],function(_0xff22x2){_0xff22x12[_0x2b73[515]]()}),mxUtils[_0x2b73[53]](_0xff22x4,mxResources[_0x2b73[203]](mxUtils[_0x2b73[558]])|| mxUtils[_0x2b73[558]]),_0xff22x3[_0x2b73[62]](_0xff22x4),_0xff22x9[_0x2b73[62]](_0xff22x3),mxUtils[_0x2b73[345]](_0xff22x9),_0xff22x12[_0x2b73[164]](!0));_0xff22x12[_0x2b73[175]](!0);return _0xff22x12},makeDraggable:function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa,_0xff22x12,_0xff22x13,_0xff22x14,_0xff22x15){_0xff22x2= new mxDragSource(_0xff22x2,_0xff22x4);_0xff22x2[_0x2b73[559]]= new mxPoint(null!= _0xff22x9?_0xff22x9:0,null!= _0xff22xa?_0xff22xa:mxConstants[_0x2b73[560]]);_0xff22x2[_0x2b73[561]]= _0xff22x12;_0xff22x2[_0x2b73[562]](!1);null!= _0xff22x14&& (_0xff22x2[_0x2b73[563]]= _0xff22x14);null!= _0xff22x15&& (_0xff22x2[_0x2b73[564]]= _0xff22x15);_0xff22x2[_0x2b73[565]]= function(_0xff22x2){return _0x2b73[279]== typeof _0xff22x3?_0xff22x3(_0xff22x2):_0xff22x3};null!= _0xff22x5&& (_0xff22x2[_0x2b73[566]]= function(){return _0xff22x5[_0x2b73[511]](!0)},_0xff22x13&& (_0xff22x2[_0x2b73[567]]= function(_0xff22x2){var _0xff22x3=_0xff22x5[_0x2b73[511]](!0),_0xff22x4=parseInt(_0xff22x3[_0x2b73[124]][_0x2b73[117]]),_0xff22x9=parseInt(_0xff22x3[_0x2b73[124]][_0x2b73[119]]);_0xff22x3[_0x2b73[124]][_0x2b73[117]]= Math[_0x2b73[488]](_0xff22x4* _0xff22x2[_0x2b73[441]][_0x2b73[255]])+ _0x2b73[168];_0xff22x3[_0x2b73[124]][_0x2b73[119]]= Math[_0x2b73[488]](_0xff22x9* _0xff22x2[_0x2b73[441]][_0x2b73[255]])+ _0x2b73[168];return _0xff22x3}));return _0xff22x2}},mxConstants={DEFAULT_HOTSPOT:0.3,MIN_HOTSPOT_SIZE:8,MAX_HOTSPOT_SIZE:0,RENDERING_HINT_EXACT:_0x2b73[568],RENDERING_HINT_FASTER:_0x2b73[569],RENDERING_HINT_FASTEST:_0x2b73[570],DIALECT_SVG:_0x2b73[571],DIALECT_VML:_0x2b73[572],DIALECT_MIXEDHTML:_0x2b73[573],DIALECT_PREFERHTML:_0x2b73[574],DIALECT_STRICTHTML:_0x2b73[575],NS_SVG:_0x2b73[576],NS_XHTML:_0x2b73[577],NS_XLINK:_0x2b73[578],SHADOWCOLOR:_0x2b73[579],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:_0x2b73[580],DEFAULT_INVALID_COLOR:_0x2b73[581],HIGHLIGHT_STROKEWIDTH:3,CURSOR_MOVABLE_VERTEX:_0x2b73[582],CURSOR_MOVABLE_EDGE:_0x2b73[582],CURSOR_LABEL_HANDLE:_0x2b73[583],CURSOR_BEND_HANDLE:_0x2b73[356],CURSOR_CONNECT:_0x2b73[356],HIGHLIGHT_COLOR:_0x2b73[580],CONNECT_TARGET_COLOR:_0x2b73[584],INVALID_CONNECT_TARGET_COLOR:_0x2b73[581],DROP_TARGET_COLOR:_0x2b73[584],VALID_COLOR:_0x2b73[580],INVALID_COLOR:_0x2b73[581],EDGE_SELECTION_COLOR:_0x2b73[580],VERTEX_SELECTION_COLOR:_0x2b73[580],VERTEX_SELECTION_STROKEWIDTH:1,EDGE_SELECTION_STROKEWIDTH:1,VERTEX_SELECTION_DASHED:!0,EDGE_SELECTION_DASHED:!0,GUIDE_COLOR:_0x2b73[581],GUIDE_STROKEWIDTH:1,OUTLINE_COLOR:_0x2b73[585],OUTLINE_STROKEWIDTH:mxClient[_0x2b73[80]]?2:3,HANDLE_SIZE:7,LABEL_HANDLE_SIZE:4,HANDLE_FILLCOLOR:_0x2b73[580],HANDLE_STROKECOLOR:_0x2b73[586],LABEL_HANDLE_FILLCOLOR:_0x2b73[587],CONNECT_HANDLE_FILLCOLOR:_0x2b73[584],LOCKED_HANDLE_FILLCOLOR:_0x2b73[581],OUTLINE_HANDLE_FILLCOLOR:_0x2b73[588],OUTLINE_HANDLE_STROKECOLOR:_0x2b73[589],DEFAULT_FONTFAMILY:_0x2b73[590],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:0.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:_0x2b73[130],STYLE_PERIMETER:_0x2b73[591],STYLE_SOURCE_PORT:_0x2b73[592],STYLE_TARGET_PORT:_0x2b73[593],STYLE_PORT_CONSTRAINT:_0x2b73[594],STYLE_OPACITY:_0x2b73[461],STYLE_TEXT_OPACITY:_0x2b73[595],STYLE_OVERFLOW:_0x2b73[277],STYLE_ORTHOGONAL:_0x2b73[596],STYLE_EXIT_X:_0x2b73[597],STYLE_EXIT_Y:_0x2b73[598],STYLE_EXIT_PERIMETER:_0x2b73[599],STYLE_ENTRY_X:_0x2b73[600],STYLE_ENTRY_Y:_0x2b73[601],STYLE_ENTRY_PERIMETER:_0x2b73[602],STYLE_WHITE_SPACE:_0x2b73[493],STYLE_ROTATION:_0x2b73[603],STYLE_FILLCOLOR:_0x2b73[604],STYLE_SWIMLANE_FILLCOLOR:_0x2b73[605],STYLE_GRADIENTCOLOR:_0x2b73[606],STYLE_GRADIENT_DIRECTION:_0x2b73[607],STYLE_STROKECOLOR:_0x2b73[608],STYLE_SEPARATORCOLOR:_0x2b73[609],STYLE_STROKEWIDTH:_0x2b73[610],STYLE_ALIGN:_0x2b73[611],STYLE_VERTICAL_ALIGN:_0x2b73[123],STYLE_LABEL_POSITION:_0x2b73[612],STYLE_VERTICAL_LABEL_POSITION:_0x2b73[613],STYLE_IMAGE_ASPECT:_0x2b73[614],STYLE_IMAGE_ALIGN:_0x2b73[615],STYLE_IMAGE_VERTICAL_ALIGN:_0x2b73[616],STYLE_GLASS:_0x2b73[617],STYLE_IMAGE:_0x2b73[618],STYLE_IMAGE_WIDTH:_0x2b73[619],STYLE_IMAGE_HEIGHT:_0x2b73[620],STYLE_IMAGE_BACKGROUND:_0x2b73[621],STYLE_IMAGE_BORDER:_0x2b73[622],STYLE_FLIPH:_0x2b73[623],STYLE_FLIPV:_0x2b73[624],STYLE_NOLABEL:_0x2b73[625],STYLE_NOEDGESTYLE:_0x2b73[626],STYLE_LABEL_BACKGROUNDCOLOR:_0x2b73[627],STYLE_LABEL_BORDERCOLOR:_0x2b73[628],STYLE_LABEL_PADDING:_0x2b73[629],STYLE_INDICATOR_SHAPE:_0x2b73[630],STYLE_INDICATOR_IMAGE:_0x2b73[631],STYLE_INDICATOR_COLOR:_0x2b73[632],STYLE_INDICATOR_STROKECOLOR:_0x2b73[633],STYLE_INDICATOR_GRADIENTCOLOR:_0x2b73[634],STYLE_INDICATOR_SPACING:_0x2b73[635],STYLE_INDICATOR_WIDTH:_0x2b73[636],STYLE_INDICATOR_HEIGHT:_0x2b73[637],STYLE_INDICATOR_DIRECTION:_0x2b73[638],STYLE_SHADOW:_0x2b73[639],STYLE_SEGMENT:_0x2b73[640],STYLE_ENDARROW:_0x2b73[641],STYLE_STARTARROW:_0x2b73[642],STYLE_ENDSIZE:_0x2b73[643],STYLE_STARTSIZE:_0x2b73[644],STYLE_SWIMLANE_LINE:_0x2b73[645],STYLE_ENDFILL:_0x2b73[646],STYLE_STARTFILL:_0x2b73[647],STYLE_DASHED:_0x2b73[648],STYLE_DASH_PATTERN:_0x2b73[649],STYLE_ROUNDED:_0x2b73[650],STYLE_CURVED:_0x2b73[651],STYLE_ARCSIZE:_0x2b73[652],STYLE_SMOOTH:_0x2b73[653],STYLE_SOURCE_PERIMETER_SPACING:_0x2b73[654],STYLE_TARGET_PERIMETER_SPACING:_0x2b73[655],STYLE_PERIMETER_SPACING:_0x2b73[656],STYLE_SPACING:_0x2b73[657],STYLE_SPACING_TOP:_0x2b73[658],STYLE_SPACING_LEFT:_0x2b73[659],STYLE_SPACING_BOTTOM:_0x2b73[660],STYLE_SPACING_RIGHT:_0x2b73[661],STYLE_HORIZONTAL:_0x2b73[662],STYLE_DIRECTION:_0x2b73[663],STYLE_ELBOW:_0x2b73[664],STYLE_FONTCOLOR:_0x2b73[665],STYLE_FONTFAMILY:_0x2b73[486],STYLE_FONTSIZE:_0x2b73[487],STYLE_FONTSTYLE:_0x2b73[666],STYLE_AUTOSIZE:_0x2b73[667],STYLE_FOLDABLE:_0x2b73[668],STYLE_EDITABLE:_0x2b73[669],STYLE_BENDABLE:_0x2b73[670],STYLE_MOVABLE:_0x2b73[671],STYLE_RESIZABLE:_0x2b73[672],STYLE_CLONEABLE:_0x2b73[673],STYLE_DELETABLE:_0x2b73[674],STYLE_SHAPE:_0x2b73[253],STYLE_EDGE:_0x2b73[675],STYLE_LOOP:_0x2b73[676],STYLE_ROUTING_CENTER_X:_0x2b73[677],STYLE_ROUTING_CENTER_Y:_0x2b73[678],FONT_BOLD:1,FONT_ITALIC:2,FONT_UNDERLINE:4,FONT_SHADOW:8,SHAPE_RECTANGLE:_0x2b73[679],SHAPE_ELLIPSE:_0x2b73[680],SHAPE_DOUBLE_ELLIPSE:_0x2b73[681],SHAPE_RHOMBUS:_0x2b73[682],SHAPE_LINE:_0x2b73[683],SHAPE_IMAGE:_0x2b73[618],SHAPE_ARROW:_0x2b73[684],SHAPE_LABEL:_0x2b73[685],SHAPE_CYLINDER:_0x2b73[686],SHAPE_SWIMLANE:_0x2b73[687],SHAPE_CONNECTOR:_0x2b73[688],SHAPE_ACTOR:_0x2b73[689],SHAPE_CLOUD:_0x2b73[690],SHAPE_TRIANGLE:_0x2b73[691],SHAPE_HEXAGON:_0x2b73[692],ARROW_CLASSIC:_0x2b73[693],ARROW_BLOCK:_0x2b73[694],ARROW_OPEN:_0x2b73[392],ARROW_OVAL:_0x2b73[695],ARROW_DIAMOND:_0x2b73[696],ARROW_DIAMOND_THIN:_0x2b73[697],ALIGN_LEFT:_0x2b73[361],ALIGN_CENTER:_0x2b73[698],ALIGN_RIGHT:_0x2b73[699],ALIGN_TOP:_0x2b73[125],ALIGN_MIDDLE:_0x2b73[554],ALIGN_BOTTOM:_0x2b73[553],DIRECTION_NORTH:_0x2b73[700],DIRECTION_SOUTH:_0x2b73[701],DIRECTION_EAST:_0x2b73[702],DIRECTION_WEST:_0x2b73[703],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:_0x2b73[704],ELBOW_HORIZONTAL:_0x2b73[662],EDGESTYLE_ELBOW:_0x2b73[705],EDGESTYLE_ENTITY_RELATION:_0x2b73[706],EDGESTYLE_LOOP:_0x2b73[707],EDGESTYLE_SIDETOSIDE:_0x2b73[708],EDGESTYLE_TOPTOBOTTOM:_0x2b73[709],EDGESTYLE_ORTHOGONAL:_0x2b73[710],EDGESTYLE_SEGMENT:_0x2b73[711],PERIMETER_ELLIPSE:_0x2b73[712],PERIMETER_RECTANGLE:_0x2b73[713],PERIMETER_RHOMBUS:_0x2b73[714],PERIMETER_TRIANGLE:_0x2b73[715]};function mxEventObject(_0xff22x2){this[_0x2b73[298]]= _0xff22x2;this[_0x2b73[716]]= [];for(var _0xff22x3=1;_0xff22x3< arguments[_0x2b73[67]];_0xff22x3+= 2){null!= arguments[_0xff22x3+ 1]&& (this[_0x2b73[716]][arguments[_0xff22x3]]= arguments[_0xff22x3+ 1])}}mxEventObject[_0x2b73[202]][_0x2b73[298]]= null;mxEventObject[_0x2b73[202]][_0x2b73[716]]= null;mxEventObject[_0x2b73[202]][_0x2b73[717]]= !1;mxEventObject[_0x2b73[202]][_0x2b73[718]]= function(){return this[_0x2b73[298]]};mxEventObject[_0x2b73[202]][_0x2b73[719]]= function(){return this[_0x2b73[716]]};mxEventObject[_0x2b73[202]][_0x2b73[720]]= function(_0xff22x2){return this[_0x2b73[716]][_0xff22x2]};mxEventObject[_0x2b73[202]][_0x2b73[721]]= function(){return this[_0x2b73[717]]};mxEventObject[_0x2b73[202]][_0x2b73[722]]= function(){this[_0x2b73[717]]= !0};function mxMouseEvent(_0xff22x2,_0xff22x3){this[_0x2b73[723]]= _0xff22x2;this[_0x2b73[724]]= _0xff22x3}mxMouseEvent[_0x2b73[202]][_0x2b73[717]]= !1;mxMouseEvent[_0x2b73[202]][_0x2b73[723]]= null;mxMouseEvent[_0x2b73[202]][_0x2b73[725]]= null;mxMouseEvent[_0x2b73[202]][_0x2b73[726]]= null;mxMouseEvent[_0x2b73[202]][_0x2b73[724]]= null;mxMouseEvent[_0x2b73[202]][_0x2b73[727]]= function(){return this[_0x2b73[723]]};mxMouseEvent[_0x2b73[202]][_0x2b73[728]]= function(){return mxEvent[_0x2b73[728]](this[_0x2b73[723]])};mxMouseEvent[_0x2b73[202]][_0x2b73[729]]= function(_0xff22x2){if(null!= _0xff22x2){for(var _0xff22x3=this[_0x2b73[728]]();null!= _0xff22x3;){if(_0xff22x3== _0xff22x2[_0x2b73[252]]){return !0};_0xff22x3= _0xff22x3[_0x2b73[265]]}};return !1};mxMouseEvent[_0x2b73[202]][_0x2b73[730]]= function(){return mxEvent[_0x2b73[731]](this[_0x2b73[727]]())};mxMouseEvent[_0x2b73[202]][_0x2b73[732]]= function(){return mxEvent[_0x2b73[733]](this[_0x2b73[727]]())};mxMouseEvent[_0x2b73[202]][_0x2b73[734]]= function(){return this[_0x2b73[725]]};mxMouseEvent[_0x2b73[202]][_0x2b73[735]]= function(){return this[_0x2b73[726]]};mxMouseEvent[_0x2b73[202]][_0x2b73[248]]= function(){return this[_0x2b73[724]]};mxMouseEvent[_0x2b73[202]][_0x2b73[736]]= function(){var _0xff22x2=this[_0x2b73[248]]();return null!= _0xff22x2?_0xff22x2[_0x2b73[246]]:null};mxMouseEvent[_0x2b73[202]][_0x2b73[737]]= function(){return mxEvent[_0x2b73[737]](this[_0x2b73[727]]())};mxMouseEvent[_0x2b73[202]][_0x2b73[721]]= function(){return this[_0x2b73[717]]};mxMouseEvent[_0x2b73[202]][_0x2b73[722]]= function(_0xff22x2){(null!= _0xff22x2?_0xff22x2:1)&& this[_0x2b73[723]][_0x2b73[738]]&& this[_0x2b73[723]][_0x2b73[738]]();this[_0x2b73[723]][_0x2b73[739]]= !1;this[_0x2b73[717]]= !0};function mxEventSource(_0xff22x2){this[_0x2b73[740]](_0xff22x2)}mxEventSource[_0x2b73[202]][_0x2b73[741]]= null;mxEventSource[_0x2b73[202]][_0x2b73[742]]= !0;mxEventSource[_0x2b73[202]][_0x2b73[743]]= null;mxEventSource[_0x2b73[202]][_0x2b73[503]]= function(){return this[_0x2b73[742]]};mxEventSource[_0x2b73[202]][_0x2b73[504]]= function(_0xff22x2){this[_0x2b73[742]]= _0xff22x2};mxEventSource[_0x2b73[202]][_0x2b73[744]]= function(){return this[_0x2b73[743]]};mxEventSource[_0x2b73[202]][_0x2b73[740]]= function(_0xff22x2){this[_0x2b73[743]]= _0xff22x2};mxEventSource[_0x2b73[202]][_0x2b73[169]]= function(_0xff22x2,_0xff22x3){null== this[_0x2b73[741]]&& (this[_0x2b73[741]]= []);this[_0x2b73[741]][_0x2b73[207]](_0xff22x2);this[_0x2b73[741]][_0x2b73[207]](_0xff22x3)};mxEventSource[_0x2b73[202]][_0x2b73[745]]= function(_0xff22x2){if(null!= this[_0x2b73[741]]){for(var _0xff22x3=0;_0xff22x3< this[_0x2b73[741]][_0x2b73[67]];){this[_0x2b73[741]][_0xff22x3+ 1]== _0xff22x2?this[_0x2b73[741]][_0x2b73[300]](_0xff22x3,2):_0xff22x3+= 2}}};mxEventSource[_0x2b73[202]][_0x2b73[746]]= function(_0xff22x2,_0xff22x3){if(null!= this[_0x2b73[741]]&& this[_0x2b73[503]]()){null== _0xff22x2&& (_0xff22x2= new mxEventObject);null== _0xff22x3&& (_0xff22x3= this[_0x2b73[744]]());null== _0xff22x3&& (_0xff22x3= this);for(var _0xff22x4=[_0xff22x3,_0xff22x2],_0xff22x5=0;_0xff22x5< this[_0x2b73[741]][_0x2b73[67]];_0xff22x5+= 2){var _0xff22x9=this[_0x2b73[741]][_0xff22x5];(null== _0xff22x9|| _0xff22x9== _0xff22x2[_0x2b73[718]]())&& this[_0x2b73[741]][_0xff22x5+ 1][_0x2b73[183]](this,_0xff22x4)}}};var mxEvent={objects:[],addListener:function(){var _0xff22x2=function(_0xff22x2,_0xff22x4,_0xff22x5){null== _0xff22x2[_0x2b73[69]]&& (_0xff22x2[_0x2b73[69]]= [],mxEvent[_0x2b73[68]][_0x2b73[207]](_0xff22x2));_0xff22x2[_0x2b73[69]][_0x2b73[207]]({name:_0xff22x4,f:_0xff22x5})};return window[_0x2b73[418]]?function(_0xff22x3,_0xff22x4,_0xff22x5){_0xff22x3[_0x2b73[418]](_0xff22x4,_0xff22x5,!1);_0xff22x2(_0xff22x3,_0xff22x4,_0xff22x5)}:function(_0xff22x3,_0xff22x4,_0xff22x5){_0xff22x3[_0x2b73[108]](_0x2b73[747]+ _0xff22x4,_0xff22x5);_0xff22x2(_0xff22x3,_0xff22x4,_0xff22x5)}}(),removeListener:function(){var _0xff22x2=function(_0xff22x2,_0xff22x4,_0xff22x5){if(null!= _0xff22x2[_0x2b73[69]]){_0xff22x4= _0xff22x2[_0x2b73[69]][_0x2b73[67]];for(var _0xff22x9=0;_0xff22x9< _0xff22x4;_0xff22x9++){if(_0xff22x2[_0x2b73[69]][_0xff22x9][_0x2b73[748]]== _0xff22x5){_0xff22x2[_0x2b73[69]][_0x2b73[300]](_0xff22x9,1);break}};0== _0xff22x2[_0x2b73[69]][_0x2b73[67]]&& (_0xff22x2[_0x2b73[69]]= null)}};return window[_0x2b73[749]]?function(_0xff22x3,_0xff22x4,_0xff22x5){_0xff22x3[_0x2b73[749]](_0xff22x4,_0xff22x5,!1);_0xff22x2(_0xff22x3,_0xff22x4,_0xff22x5)}:function(_0xff22x3,_0xff22x4,_0xff22x5){_0xff22x3[_0x2b73[750]](_0x2b73[747]+ _0xff22x4,_0xff22x5);_0xff22x2(_0xff22x3,_0xff22x4,_0xff22x5)}}(),removeAllListeners:function(_0xff22x2){var _0xff22x3=_0xff22x2[_0x2b73[69]];if(null!= _0xff22x3){for(;0< _0xff22x3[_0x2b73[67]];){var _0xff22x4=_0xff22x3[0];mxEvent[_0x2b73[745]](_0xff22x2,_0xff22x4[_0x2b73[298]],_0xff22x4[_0x2b73[748]])}}},addGestureListeners:function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){null!= _0xff22x3&& mxEvent[_0x2b73[169]](_0xff22x2,_0x2b73[751],_0xff22x3);null!= _0xff22x4&& mxEvent[_0x2b73[169]](_0xff22x2,_0x2b73[752],_0xff22x4);null!= _0xff22x5&& mxEvent[_0x2b73[169]](_0xff22x2,_0x2b73[753],_0xff22x5);mxClient[_0x2b73[754]]&& (null!= _0xff22x3&& mxEvent[_0x2b73[169]](_0xff22x2,_0x2b73[755],_0xff22x3),null!= _0xff22x4&& mxEvent[_0x2b73[169]](_0xff22x2,_0x2b73[756],_0xff22x4),null!= _0xff22x5&& mxEvent[_0x2b73[169]](_0xff22x2,_0x2b73[757],_0xff22x5))},removeGestureListeners:function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){null!= _0xff22x3&& mxEvent[_0x2b73[745]](_0xff22x2,_0x2b73[751],_0xff22x3);null!= _0xff22x4&& mxEvent[_0x2b73[745]](_0xff22x2,_0x2b73[752],_0xff22x4);null!= _0xff22x5&& mxEvent[_0x2b73[745]](_0xff22x2,_0x2b73[753],_0xff22x5);mxClient[_0x2b73[754]]&& (null!= _0xff22x3&& mxEvent[_0x2b73[745]](_0xff22x2,_0x2b73[755],_0xff22x3),null!= _0xff22x4&& mxEvent[_0x2b73[745]](_0xff22x2,_0x2b73[756],_0xff22x4),null!= _0xff22x5&& mxEvent[_0x2b73[745]](_0xff22x2,_0x2b73[757],_0xff22x5))},redirectMouseEvents:function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa,_0xff22x12){var _0xff22x13=function(_0xff22x2){return _0x2b73[279]== typeof _0xff22x4?_0xff22x4(_0xff22x2):_0xff22x4};mxEvent[_0x2b73[759]](_0xff22x2,function(_0xff22x2){null!= _0xff22x5?_0xff22x5(_0xff22x2):mxEvent[_0x2b73[721]](_0xff22x2)|| _0xff22x3[_0x2b73[758]](mxEvent.MOUSE_DOWN, new mxMouseEvent(_0xff22x2,_0xff22x13(_0xff22x2)))},function(_0xff22x2){null!= _0xff22x9?_0xff22x9(_0xff22x2):mxEvent[_0x2b73[721]](_0xff22x2)|| _0xff22x3[_0x2b73[758]](mxEvent.MOUSE_MOVE, new mxMouseEvent(_0xff22x2,_0xff22x13(_0xff22x2)))},function(_0xff22x2){null!= _0xff22xa?_0xff22xa(_0xff22x2):mxEvent[_0x2b73[721]](_0xff22x2)|| _0xff22x3[_0x2b73[758]](mxEvent.MOUSE_UP, new mxMouseEvent(_0xff22x2,_0xff22x13(_0xff22x2)))});mxEvent[_0x2b73[169]](_0xff22x2,_0x2b73[760],function(_0xff22x2){if(null!= _0xff22x12){_0xff22x12(_0xff22x2)}else {if(!mxEvent[_0x2b73[721]](_0xff22x2)){var _0xff22x4=_0xff22x13(_0xff22x2);_0xff22x3[_0x2b73[761]](_0xff22x2,null!= _0xff22x4?_0xff22x4[_0x2b73[246]]:null)}}})},release:function(_0xff22x2){if(null!= _0xff22x2&& (mxEvent[_0x2b73[70]](_0xff22x2),_0xff22x2= _0xff22x2[_0x2b73[271]],null!= _0xff22x2)){for(var _0xff22x3=_0xff22x2[_0x2b73[67]],_0xff22x4=0;_0xff22x4< _0xff22x3;_0xff22x4+= 1){mxEvent[_0x2b73[762]](_0xff22x2[_0xff22x4])}}},addMouseWheelListener:function(_0xff22x2){if(null!= _0xff22x2){var _0xff22x3=function(_0xff22x3){null== _0xff22x3&& (_0xff22x3= window[_0x2b73[763]]);var _0xff22x5=0,_0xff22x5=mxClient[_0x2b73[133]]&& !mxClient[_0x2b73[75]]&& !mxClient[_0x2b73[76]]?-_0xff22x3[_0x2b73[764]]/ 2:_0xff22x3[_0x2b73[765]]/ 120;0!= _0xff22x5&& _0xff22x2(_0xff22x3,0< _0xff22x5)};mxClient[_0x2b73[133]]?mxEvent[_0x2b73[169]](window,mxClient[_0x2b73[75]]|| mxClient[_0x2b73[76]]?_0x2b73[766]:_0x2b73[767],_0xff22x3):mxEvent[_0x2b73[169]](document,_0x2b73[766],_0xff22x3)}},disableContextMenu:function(){return mxClient[_0x2b73[80]]&& (_0x2b73[82]=== typeof document[_0x2b73[5]]|| 9> document[_0x2b73[5]])?function(_0xff22x2){mxEvent[_0x2b73[169]](_0xff22x2,_0x2b73[768],function(){return !1})}:function(_0xff22x2){_0xff22x2[_0x2b73[57]](_0x2b73[769],_0x2b73[770])}}(),getSource:function(_0xff22x2){return null!= _0xff22x2[_0x2b73[771]]?_0xff22x2[_0x2b73[771]]:_0xff22x2[_0x2b73[772]]},isConsumed:function(_0xff22x2){return null!= _0xff22x2[_0x2b73[721]]&& _0xff22x2[_0x2b73[721]]},isLeftMouseButton:function(_0xff22x2){return _0xff22x2[_0x2b73[172]]== (mxClient[_0x2b73[80]]&& (_0x2b73[82]=== typeof document[_0x2b73[5]]|| 9> document[_0x2b73[5]])?1:0)},isRightMouseButton:function(_0xff22x2){return 2== _0xff22x2[_0x2b73[172]]},isPopupTrigger:function(_0xff22x2){return mxEvent[_0x2b73[773]](_0xff22x2)|| mxEvent[_0x2b73[774]](_0xff22x2)&& !mxEvent[_0x2b73[775]](_0xff22x2)},isShiftDown:function(_0xff22x2){return null!= _0xff22x2?_0xff22x2[_0x2b73[776]]:!1},isAltDown:function(_0xff22x2){return null!= _0xff22x2?_0xff22x2[_0x2b73[777]]:!1},isControlDown:function(_0xff22x2){return null!= _0xff22x2?_0xff22x2[_0x2b73[778]]:!1},isMetaDown:function(_0xff22x2){return null!= _0xff22x2?_0xff22x2[_0x2b73[779]]:!1},getMainEvent:function(_0xff22x2){(_0x2b73[755]== _0xff22x2[_0x2b73[60]]|| _0x2b73[756]== _0xff22x2[_0x2b73[60]])&& null!= _0xff22x2[_0x2b73[780]]&& null!= _0xff22x2[_0x2b73[780]][0]?_0xff22x2= _0xff22x2[_0x2b73[780]][0]:_0x2b73[757]== _0xff22x2[_0x2b73[60]]&& (null!= _0xff22x2[_0x2b73[781]]&& null!= _0xff22x2[_0x2b73[781]][0])&& (_0xff22x2= _0xff22x2[_0x2b73[781]][0]);return _0xff22x2},getClientX:function(_0xff22x2){return mxEvent[_0x2b73[783]](_0xff22x2)[_0x2b73[782]]},getClientY:function(_0xff22x2){return mxEvent[_0x2b73[783]](_0xff22x2)[_0x2b73[784]]},consume:function(_0xff22x2,_0xff22x3,_0xff22x4){_0xff22x4= null!= _0xff22x4?_0xff22x4:!0;if(null!= _0xff22x3?_0xff22x3:1){_0xff22x2[_0x2b73[738]]?(_0xff22x4&& _0xff22x2[_0x2b73[785]](),_0xff22x2[_0x2b73[738]]()):_0xff22x4&& (_0xff22x2[_0x2b73[786]]= !0)};_0xff22x2[_0x2b73[721]]= !0;_0xff22x2[_0x2b73[739]]= !1},LABEL_HANDLE:-1,ROTATION_HANDLE:-2,MOUSE_DOWN:_0x2b73[787],MOUSE_MOVE:_0x2b73[788],MOUSE_UP:_0x2b73[789],ACTIVATE:_0x2b73[790],RESIZE_START:_0x2b73[791],RESIZE:_0x2b73[129],RESIZE_END:_0x2b73[792],MOVE_START:_0x2b73[793],MOVE:_0x2b73[582],MOVE_END:_0x2b73[794],PAN_START:_0x2b73[795],PAN:_0x2b73[796],PAN_END:_0x2b73[797],MINIMIZE:_0x2b73[798],NORMALIZE:_0x2b73[799],MAXIMIZE:_0x2b73[800],HIDE:_0x2b73[801],SHOW:_0x2b73[539],CLOSE:_0x2b73[268],DESTROY:_0x2b73[515],REFRESH:_0x2b73[802],SIZE:_0x2b73[803],SELECT:_0x2b73[804],FIRED:_0x2b73[805],GET:_0x2b73[203],RECEIVE:_0x2b73[806],CONNECT:_0x2b73[807],DISCONNECT:_0x2b73[808],SUSPEND:_0x2b73[809],RESUME:_0x2b73[810],MARK:_0x2b73[811],SESSION:_0x2b73[812],ROOT:_0x2b73[813],POST:_0x2b73[814],OPEN:_0x2b73[392],SAVE:_0x2b73[815],BEFORE_ADD_VERTEX:_0x2b73[816],ADD_VERTEX:_0x2b73[817],AFTER_ADD_VERTEX:_0x2b73[818],DONE:_0x2b73[819],EXECUTE:_0x2b73[350],EXECUTED:_0x2b73[820],BEGIN_UPDATE:_0x2b73[473],START_EDIT:_0x2b73[821],END_UPDATE:_0x2b73[476],END_EDIT:_0x2b73[822],BEFORE_UNDO:_0x2b73[823],UNDO:_0x2b73[824],REDO:_0x2b73[825],CHANGE:_0x2b73[826],NOTIFY:_0x2b73[827],LAYOUT_CELLS:_0x2b73[828],CLICK:_0x2b73[173],SCALE:_0x2b73[255],TRANSLATE:_0x2b73[513],SCALE_AND_TRANSLATE:_0x2b73[829],UP:_0x2b73[830],DOWN:_0x2b73[831],ADD:_0x2b73[99],REMOVE:_0x2b73[205],CLEAR:_0x2b73[200],ADD_CELLS:_0x2b73[832],CELLS_ADDED:_0x2b73[833],MOVE_CELLS:_0x2b73[834],CELLS_MOVED:_0x2b73[835],RESIZE_CELLS:_0x2b73[836],CELLS_RESIZED:_0x2b73[837],TOGGLE_CELLS:_0x2b73[838],CELLS_TOGGLED:_0x2b73[839],ORDER_CELLS:_0x2b73[840],CELLS_ORDERED:_0x2b73[841],REMOVE_CELLS:_0x2b73[842],CELLS_REMOVED:_0x2b73[843],GROUP_CELLS:_0x2b73[844],UNGROUP_CELLS:_0x2b73[845],REMOVE_CELLS_FROM_PARENT:_0x2b73[846],FOLD_CELLS:_0x2b73[847],CELLS_FOLDED:_0x2b73[848],ALIGN_CELLS:_0x2b73[849],LABEL_CHANGED:_0x2b73[850],CONNECT_CELL:_0x2b73[851],CELL_CONNECTED:_0x2b73[852],SPLIT_EDGE:_0x2b73[853],FLIP_EDGE:_0x2b73[854],START_EDITING:_0x2b73[855],ADD_OVERLAY:_0x2b73[856],REMOVE_OVERLAY:_0x2b73[857],UPDATE_CELL_SIZE:_0x2b73[858],ESCAPE:_0x2b73[859],CLICK:_0x2b73[173],DOUBLE_CLICK:_0x2b73[860],START:_0x2b73[861],RESET:_0x2b73[862]};function mxXmlRequest(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa){this[_0x2b73[863]]= _0xff22x2;this[_0x2b73[864]]= _0xff22x3;this[_0x2b73[865]]= _0xff22x4|| _0x2b73[866];this[_0x2b73[307]]= null!= _0xff22x5?_0xff22x5:!0;this[_0x2b73[867]]= _0xff22x9;this[_0x2b73[868]]= _0xff22xa}mxXmlRequest[_0x2b73[202]][_0x2b73[863]]= null;mxXmlRequest[_0x2b73[202]][_0x2b73[864]]= null;mxXmlRequest[_0x2b73[202]][_0x2b73[865]]= null;mxXmlRequest[_0x2b73[202]][_0x2b73[307]]= null;mxXmlRequest[_0x2b73[202]][_0x2b73[869]]= !1;mxXmlRequest[_0x2b73[202]][_0x2b73[867]]= null;mxXmlRequest[_0x2b73[202]][_0x2b73[868]]= null;mxXmlRequest[_0x2b73[202]][_0x2b73[870]]= null;mxXmlRequest[_0x2b73[202]][_0x2b73[871]]= function(){return this[_0x2b73[869]]};mxXmlRequest[_0x2b73[202]][_0x2b73[872]]= function(_0xff22x2){this[_0x2b73[869]]= _0xff22x2};mxXmlRequest[_0x2b73[202]][_0x2b73[221]]= function(){return this[_0x2b73[870]][_0x2b73[873]]};mxXmlRequest[_0x2b73[202]][_0x2b73[220]]= function(){return 4== this[_0x2b73[870]][_0x2b73[417]]};mxXmlRequest[_0x2b73[202]][_0x2b73[874]]= function(){var _0xff22x2=this[_0x2b73[875]]();return null!= _0xff22x2?_0xff22x2[_0x2b73[158]]:null};mxXmlRequest[_0x2b73[202]][_0x2b73[875]]= function(){var _0xff22x2=this[_0x2b73[870]][_0x2b73[876]];if(9<= document[_0x2b73[5]]|| null== _0xff22x2|| null== _0xff22x2[_0x2b73[158]]){_0xff22x2= mxUtils[_0x2b73[877]](this[_0x2b73[870]][_0x2b73[873]])};return _0xff22x2};mxXmlRequest[_0x2b73[202]][_0x2b73[221]]= function(){return this[_0x2b73[870]][_0x2b73[873]]};mxXmlRequest[_0x2b73[202]][_0x2b73[878]]= function(){return this[_0x2b73[870]][_0x2b73[879]]};mxXmlRequest[_0x2b73[202]][_0x2b73[385]]= function(){if(window[_0x2b73[880]]){return function(){var _0xff22x2= new XMLHttpRequest;this[_0x2b73[871]]()&& _0xff22x2[_0x2b73[881]]&& _0xff22x2[_0x2b73[881]](_0x2b73[882]);return _0xff22x2}};if(_0x2b73[82]!= typeof ActiveXObject){return function(){return new ActiveXObject(_0x2b73[883])}}}();mxXmlRequest[_0x2b73[202]][_0x2b73[414]]= function(_0xff22x2,_0xff22x3){this[_0x2b73[870]]= this[_0x2b73[385]]();null!= this[_0x2b73[870]]&& (null!= _0xff22x2&& (this[_0x2b73[870]][_0x2b73[416]]= mxUtils[_0x2b73[885]](this,function(){this[_0x2b73[220]]()&& (_0xff22x2(this),this[_0x2b73[884]]= null)})),this[_0x2b73[870]][_0x2b73[392]](this[_0x2b73[865]],this[_0x2b73[863]],this[_0x2b73[307]],this[_0x2b73[867]],this[_0x2b73[868]]),this[_0x2b73[886]](this[_0x2b73[870]],this[_0x2b73[864]]),this[_0x2b73[870]][_0x2b73[414]](this[_0x2b73[864]]))};mxXmlRequest[_0x2b73[202]][_0x2b73[886]]= function(_0xff22x2,_0xff22x3){null!= _0xff22x3&& _0xff22x2[_0x2b73[889]](_0x2b73[887],_0x2b73[888])};mxXmlRequest[_0x2b73[202]][_0x2b73[415]]= function(_0xff22x2,_0xff22x3){_0xff22x2= _0xff22x2|| document;var _0xff22x4=null;_0xff22x2== document&& (_0xff22x4= window[_0x2b73[890]],window[_0x2b73[890]]= null);var _0xff22x5=_0xff22x2[_0x2b73[55]](_0x2b73[891]);_0xff22x5[_0x2b73[57]](_0x2b73[865],this[_0x2b73[865]]);_0xff22x5[_0x2b73[57]](_0x2b73[892],this[_0x2b73[863]]);null!= _0xff22x3&& _0xff22x5[_0x2b73[57]](_0x2b73[772],_0xff22x3);_0xff22x5[_0x2b73[124]][_0x2b73[495]]= _0x2b73[130];_0xff22x5[_0x2b73[124]][_0x2b73[187]]= _0x2b73[188];for(var _0xff22x9=0< this[_0x2b73[864]][_0x2b73[2]](_0x2b73[893])?this[_0x2b73[864]][_0x2b73[224]](_0x2b73[893]):this[_0x2b73[864]][_0x2b73[224]](),_0xff22xa=0;_0xff22xa< _0xff22x9[_0x2b73[67]];_0xff22xa++){var _0xff22x12=_0xff22x9[_0xff22xa][_0x2b73[2]](_0x2b73[226]);if(0< _0xff22x12){var _0xff22x13=_0xff22x9[_0xff22xa][_0x2b73[85]](0,_0xff22x12),_0xff22x14=_0xff22x9[_0xff22xa][_0x2b73[85]](_0xff22x12+ 1),_0xff22x12=_0xff22x2[_0x2b73[55]](_0x2b73[126]);_0xff22x12[_0x2b73[57]](_0x2b73[298],_0xff22x13);_0xff22x14= _0xff22x14[_0x2b73[230]](/\n/g,_0x2b73[336]);_0xff22x13= _0xff22x2[_0x2b73[344]](_0xff22x14);_0xff22x12[_0x2b73[62]](_0xff22x13);_0xff22x5[_0x2b73[62]](_0xff22x12)}};_0xff22x2[_0x2b73[112]][_0x2b73[62]](_0xff22x5);_0xff22x5[_0x2b73[894]]();_0xff22x2[_0x2b73[112]][_0x2b73[266]](_0xff22x5);null!= _0xff22x4&& (window[_0x2b73[890]]= _0xff22x4)};var mxClipboard={STEPSIZE:10,insertCount:1,cells:null,isEmpty:function(){return null== mxClipboard[_0x2b73[895]]},cut:function(_0xff22x2,_0xff22x3){_0xff22x3= mxClipboard[_0x2b73[149]](_0xff22x2,_0xff22x3);mxClipboard[_0x2b73[896]]= 0;mxClipboard[_0x2b73[842]](_0xff22x2,_0xff22x3);return _0xff22x3},removeCells:function(_0xff22x2,_0xff22x3){_0xff22x2[_0x2b73[842]](_0xff22x3)},copy:function(_0xff22x2,_0xff22x3){_0xff22x3= _0xff22x3|| _0xff22x2[_0x2b73[897]]();var _0xff22x4=_0xff22x2[_0x2b73[898]](_0xff22x3);mxClipboard[_0x2b73[896]]= 1;mxClipboard[_0x2b73[895]]= _0xff22x2[_0x2b73[899]](_0xff22x4);return _0xff22x4},paste:function(_0xff22x2){if(null!= mxClipboard[_0x2b73[895]]){var _0xff22x3=_0xff22x2[_0x2b73[900]](mxClipboard[_0x2b73[895]]),_0xff22x4=mxClipboard[_0x2b73[896]]* mxClipboard[_0x2b73[901]],_0xff22x5=_0xff22x2[_0x2b73[902]](),_0xff22x3=_0xff22x2[_0x2b73[903]](_0xff22x3,_0xff22x4,_0xff22x4,_0xff22x5);mxClipboard[_0x2b73[896]]++;_0xff22x2[_0x2b73[904]](_0xff22x3)}}};function mxWindow(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa,_0xff22x12,_0xff22x13,_0xff22x14,_0xff22x15){null!= _0xff22x3&& (_0xff22x12= null!= _0xff22x12?_0xff22x12:!0,this[_0x2b73[905]]= _0xff22x3,this[_0x2b73[176]](_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa,_0xff22x15),this[_0x2b73[906]](),this[_0x2b73[907]](),this[_0x2b73[908]](),this[_0x2b73[909]](_0xff22x12),this[_0x2b73[910]](_0xff22x2),(null== _0xff22x13|| _0xff22x13)&& this[_0x2b73[911]](),null!= _0xff22x14&& null!= _0xff22x14[_0x2b73[265]]?_0xff22x14[_0x2b73[265]][_0x2b73[912]](this[_0x2b73[485]],_0xff22x14):document[_0x2b73[112]][_0x2b73[62]](this[_0x2b73[485]]))}mxWindow[_0x2b73[202]]= new mxEventSource;mxWindow[_0x2b73[202]][_0x2b73[196]]= mxWindow;mxWindow[_0x2b73[202]][_0x2b73[913]]= mxClient[_0x2b73[88]]+ _0x2b73[914];mxWindow[_0x2b73[202]][_0x2b73[915]]= mxClient[_0x2b73[88]]+ _0x2b73[916];mxWindow[_0x2b73[202]][_0x2b73[917]]= mxClient[_0x2b73[88]]+ _0x2b73[918];mxWindow[_0x2b73[202]][_0x2b73[919]]= mxClient[_0x2b73[88]]+ _0x2b73[920];mxWindow[_0x2b73[202]][_0x2b73[921]]= mxClient[_0x2b73[88]]+ _0x2b73[922];mxWindow[_0x2b73[202]][_0x2b73[189]]= !1;mxWindow[_0x2b73[202]][_0x2b73[905]]= !1;mxWindow[_0x2b73[202]][_0x2b73[923]]= new mxRectangle(0,0,50,40);mxWindow[_0x2b73[202]][_0x2b73[924]]= !1;mxWindow[_0x2b73[202]][_0x2b73[905]]= !1;mxWindow[_0x2b73[202]][_0x2b73[165]]= !0;mxWindow[_0x2b73[202]][_0x2b73[176]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){_0xff22x9= null!= _0xff22x9?_0xff22x9:_0x2b73[925];this[_0x2b73[485]]= document[_0x2b73[55]](_0x2b73[485]);this[_0x2b73[485]][_0x2b73[926]]= _0xff22x9;this[_0x2b73[485]][_0x2b73[124]][_0x2b73[361]]= _0xff22x2+ _0x2b73[168];this[_0x2b73[485]][_0x2b73[124]][_0x2b73[125]]= _0xff22x3+ _0x2b73[168];this[_0x2b73[116]]= document[_0x2b73[55]](_0x2b73[116]);this[_0x2b73[116]][_0x2b73[926]]= _0xff22x9;null!= _0xff22x4&& (mxClient[_0x2b73[80]]|| (this[_0x2b73[485]][_0x2b73[124]][_0x2b73[117]]= _0xff22x4+ _0x2b73[168]),this[_0x2b73[116]][_0x2b73[124]][_0x2b73[117]]= _0xff22x4+ _0x2b73[168]);null!= _0xff22x5&& (mxClient[_0x2b73[80]]|| (this[_0x2b73[485]][_0x2b73[124]][_0x2b73[119]]= _0xff22x5+ _0x2b73[168]),this[_0x2b73[116]][_0x2b73[124]][_0x2b73[119]]= _0xff22x5+ _0x2b73[168]);_0xff22x2= document[_0x2b73[55]](_0x2b73[120]);_0xff22x3= document[_0x2b73[55]](_0x2b73[121]);this[_0x2b73[924]]= document[_0x2b73[55]](_0x2b73[122]);this[_0x2b73[924]][_0x2b73[926]]= _0xff22x9+ _0x2b73[927];_0xff22x3[_0x2b73[62]](this[_0x2b73[924]]);_0xff22x2[_0x2b73[62]](_0xff22x3);_0xff22x3= document[_0x2b73[55]](_0x2b73[121]);this[_0x2b73[122]]= document[_0x2b73[55]](_0x2b73[122]);this[_0x2b73[122]][_0x2b73[926]]= _0xff22x9+ _0x2b73[928];this[_0x2b73[929]]= document[_0x2b73[55]](_0x2b73[485]);this[_0x2b73[929]][_0x2b73[926]]= _0xff22x9+ _0x2b73[928];this[_0x2b73[929]][_0x2b73[124]][_0x2b73[117]]= _0x2b73[118];this[_0x2b73[929]][_0x2b73[62]](this[_0x2b73[905]]);if(mxClient[_0x2b73[80]]|| _0x2b73[529]!= this[_0x2b73[905]][_0x2b73[301]][_0x2b73[36]]()){this[_0x2b73[929]][_0x2b73[124]][_0x2b73[119]]= _0x2b73[118]};this[_0x2b73[122]][_0x2b73[62]](this[_0x2b73[929]]);_0xff22x3[_0x2b73[62]](this[_0x2b73[122]]);_0xff22x2[_0x2b73[62]](_0xff22x3);this[_0x2b73[116]][_0x2b73[62]](_0xff22x2);this[_0x2b73[485]][_0x2b73[62]](this[_0x2b73[116]]);_0xff22x9= mxUtils[_0x2b73[885]](this,function(_0xff22x2){this[_0x2b73[790]]()});mxEvent[_0x2b73[169]](this[_0x2b73[924]],_0x2b73[751],_0xff22x9);mxEvent[_0x2b73[169]](this[_0x2b73[116]],_0x2b73[751],_0xff22x9);mxClient[_0x2b73[754]]&& (mxEvent[_0x2b73[169]](this[_0x2b73[924]],_0x2b73[755],_0xff22x9),mxEvent[_0x2b73[169]](this[_0x2b73[116]],_0x2b73[755],_0xff22x9));this[_0x2b73[801]]()};mxWindow[_0x2b73[202]][_0x2b73[910]]= function(_0xff22x2){for(var _0xff22x3=this[_0x2b73[924]][_0x2b73[285]];null!= _0xff22x3;){var _0xff22x4=_0xff22x3[_0x2b73[287]];_0xff22x3[_0x2b73[288]]== mxConstants[_0x2b73[317]]&& _0xff22x3[_0x2b73[265]][_0x2b73[266]](_0xff22x3);_0xff22x3= _0xff22x4};mxUtils[_0x2b73[53]](this[_0x2b73[924]],_0xff22x2|| _0x2b73[110])};mxWindow[_0x2b73[202]][_0x2b73[162]]= function(_0xff22x2){0> navigator[_0x2b73[3]][_0x2b73[2]](_0x2b73[186])&& (this[_0x2b73[929]][_0x2b73[124]][_0x2b73[277]]= _0xff22x2?_0x2b73[278]:_0x2b73[188])};mxWindow[_0x2b73[202]][_0x2b73[790]]= function(){if(mxWindow[_0x2b73[930]]!= this){var _0xff22x2=mxUtils[_0x2b73[275]](this[_0x2b73[166]]()),_0xff22x2=null!= _0xff22x2?_0xff22x2[_0x2b73[931]]:3;if(mxWindow[_0x2b73[930]]){var _0xff22x3=mxWindow[_0x2b73[930]][_0x2b73[166]]();null!= _0xff22x3&& null!= _0xff22x3[_0x2b73[124]]&& (_0xff22x3[_0x2b73[124]][_0x2b73[931]]= _0xff22x2)};_0xff22x3= mxWindow[_0x2b73[930]];this[_0x2b73[166]]()[_0x2b73[124]][_0x2b73[931]]= parseInt(_0xff22x2)+ 1;mxWindow[_0x2b73[930]]= this;this[_0x2b73[746]]( new mxEventObject(mxEvent.ACTIVATE,_0x2b73[932],_0xff22x3))}};mxWindow[_0x2b73[202]][_0x2b73[166]]= function(){return this[_0x2b73[485]]};mxWindow[_0x2b73[202]][_0x2b73[933]]= function(){mxUtils[_0x2b73[933]](this[_0x2b73[485]])};mxWindow[_0x2b73[202]][_0x2b73[934]]= function(){return null!= this[_0x2b73[129]]?_0x2b73[130]!= this[_0x2b73[129]][_0x2b73[124]][_0x2b73[495]]:!1};mxWindow[_0x2b73[202]][_0x2b73[163]]= function(_0xff22x2){_0xff22x2?null== this[_0x2b73[129]]?(this[_0x2b73[129]]= document[_0x2b73[55]](_0x2b73[466]),this[_0x2b73[129]][_0x2b73[124]][_0x2b73[491]]= _0x2b73[492],this[_0x2b73[129]][_0x2b73[124]][_0x2b73[553]]= _0x2b73[935],this[_0x2b73[129]][_0x2b73[124]][_0x2b73[699]]= _0x2b73[935],this[_0x2b73[129]][_0x2b73[57]](_0x2b73[390],mxClient[_0x2b73[88]]+ _0x2b73[922]),this[_0x2b73[129]][_0x2b73[124]][_0x2b73[270]]= _0x2b73[936],mxEvent[_0x2b73[759]](this[_0x2b73[129]],mxUtils[_0x2b73[885]](this,function(_0xff22x2){this[_0x2b73[790]]();var _0xff22x4=mxEvent[_0x2b73[731]](_0xff22x2),_0xff22x5=mxEvent[_0x2b73[733]](_0xff22x2),_0xff22x9=this[_0x2b73[485]][_0x2b73[359]],_0xff22xa=this[_0x2b73[485]][_0x2b73[167]],_0xff22x12=mxUtils[_0x2b73[885]](this,function(_0xff22x2){var _0xff22x3=mxEvent[_0x2b73[731]](_0xff22x2)- _0xff22x4,_0xff22x12=mxEvent[_0x2b73[733]](_0xff22x2)- _0xff22x5;this[_0x2b73[937]](_0xff22x9+ _0xff22x3,_0xff22xa+ _0xff22x12);this[_0x2b73[746]]( new mxEventObject(mxEvent.RESIZE,_0x2b73[763],_0xff22x2));mxEvent[_0x2b73[722]](_0xff22x2)}),_0xff22x13=mxUtils[_0x2b73[885]](this,function(_0xff22x2){mxEvent[_0x2b73[938]](document,null,_0xff22x12,_0xff22x13);this[_0x2b73[746]]( new mxEventObject(mxEvent.RESIZE_END,_0x2b73[763],_0xff22x2));mxEvent[_0x2b73[722]](_0xff22x2)});mxEvent[_0x2b73[759]](document,null,_0xff22x12,_0xff22x13);this[_0x2b73[746]]( new mxEventObject(mxEvent.RESIZE_START,_0x2b73[763],_0xff22x2));mxEvent[_0x2b73[722]](_0xff22x2)}),null,null),this[_0x2b73[485]][_0x2b73[62]](this[_0x2b73[129]])):this[_0x2b73[129]][_0x2b73[124]][_0x2b73[495]]= _0x2b73[497]:null!= this[_0x2b73[129]]&& (this[_0x2b73[129]][_0x2b73[124]][_0x2b73[495]]= _0x2b73[130])};mxWindow[_0x2b73[202]][_0x2b73[937]]= function(_0xff22x2,_0xff22x3){_0xff22x2= Math[_0x2b73[160]](this[_0x2b73[923]][_0x2b73[117]],_0xff22x2);_0xff22x3= Math[_0x2b73[160]](this[_0x2b73[923]][_0x2b73[119]],_0xff22x3);mxClient[_0x2b73[80]]|| (this[_0x2b73[485]][_0x2b73[124]][_0x2b73[117]]= _0xff22x2+ _0x2b73[168],this[_0x2b73[485]][_0x2b73[124]][_0x2b73[119]]= _0xff22x3+ _0x2b73[168]);this[_0x2b73[116]][_0x2b73[124]][_0x2b73[117]]= _0xff22x2+ _0x2b73[168];this[_0x2b73[116]][_0x2b73[124]][_0x2b73[119]]= _0xff22x3+ _0x2b73[168];mxClient[_0x2b73[80]]|| (this[_0x2b73[929]][_0x2b73[124]][_0x2b73[119]]= this[_0x2b73[485]][_0x2b73[167]]- this[_0x2b73[924]][_0x2b73[167]]- 2+ _0x2b73[168])};mxWindow[_0x2b73[202]][_0x2b73[909]]= function(_0xff22x2){this[_0x2b73[798]][_0x2b73[124]][_0x2b73[495]]= _0xff22x2?_0x2b73[110]:_0x2b73[130]};mxWindow[_0x2b73[202]][_0x2b73[939]]= function(){return new mxRectangle(0,0,0,this[_0x2b73[924]][_0x2b73[167]])};mxWindow[_0x2b73[202]][_0x2b73[907]]= function(){this[_0x2b73[798]]= document[_0x2b73[55]](_0x2b73[466]);this[_0x2b73[798]][_0x2b73[57]](_0x2b73[390],this[_0x2b73[915]]);this[_0x2b73[798]][_0x2b73[57]](_0x2b73[611],_0x2b73[699]);this[_0x2b73[798]][_0x2b73[57]](_0x2b73[924],_0x2b73[940]);this[_0x2b73[798]][_0x2b73[124]][_0x2b73[270]]= _0x2b73[356];this[_0x2b73[798]][_0x2b73[124]][_0x2b73[941]]= _0x2b73[942];this[_0x2b73[798]][_0x2b73[124]][_0x2b73[495]]= _0x2b73[130];this[_0x2b73[924]][_0x2b73[62]](this[_0x2b73[798]]);var _0xff22x2=!1,_0xff22x3=null,_0xff22x4=null,_0xff22x5=mxUtils[_0x2b73[885]](this,function(_0xff22x5){this[_0x2b73[790]]();if(_0xff22x2){_0xff22x2= !1,this[_0x2b73[798]][_0x2b73[57]](_0x2b73[390],this[_0x2b73[915]]),this[_0x2b73[798]][_0x2b73[57]](_0x2b73[924],_0x2b73[940]),this[_0x2b73[929]][_0x2b73[124]][_0x2b73[495]]= _0x2b73[110],this[_0x2b73[800]][_0x2b73[124]][_0x2b73[495]]= _0xff22x3,mxClient[_0x2b73[80]]|| (this[_0x2b73[485]][_0x2b73[124]][_0x2b73[119]]= _0xff22x4),this[_0x2b73[116]][_0x2b73[124]][_0x2b73[119]]= _0xff22x4,null!= this[_0x2b73[129]]&& (this[_0x2b73[129]][_0x2b73[124]][_0x2b73[187]]= _0x2b73[110]),this[_0x2b73[746]]( new mxEventObject(mxEvent.NORMALIZE,_0x2b73[763],_0xff22x5))}else {_0xff22x2= !0;this[_0x2b73[798]][_0x2b73[57]](_0x2b73[390],this[_0x2b73[917]]);this[_0x2b73[798]][_0x2b73[57]](_0x2b73[924],_0x2b73[943]);this[_0x2b73[929]][_0x2b73[124]][_0x2b73[495]]= _0x2b73[130];_0xff22x3= this[_0x2b73[800]][_0x2b73[124]][_0x2b73[495]];this[_0x2b73[800]][_0x2b73[124]][_0x2b73[495]]= _0x2b73[130];_0xff22x4= this[_0x2b73[116]][_0x2b73[124]][_0x2b73[119]];var _0xff22xa=this[_0x2b73[939]]();0< _0xff22xa[_0x2b73[119]]&& (mxClient[_0x2b73[80]]|| (this[_0x2b73[485]][_0x2b73[124]][_0x2b73[119]]= _0xff22xa[_0x2b73[119]]+ _0x2b73[168]),this[_0x2b73[116]][_0x2b73[124]][_0x2b73[119]]= _0xff22xa[_0x2b73[119]]+ _0x2b73[168]);0< _0xff22xa[_0x2b73[117]]&& (mxClient[_0x2b73[80]]|| (this[_0x2b73[485]][_0x2b73[124]][_0x2b73[117]]= _0xff22xa[_0x2b73[117]]+ _0x2b73[168]),this[_0x2b73[116]][_0x2b73[124]][_0x2b73[117]]= _0xff22xa[_0x2b73[117]]+ _0x2b73[168]);null!= this[_0x2b73[129]]&& (this[_0x2b73[129]][_0x2b73[124]][_0x2b73[187]]= _0x2b73[188]);this[_0x2b73[746]]( new mxEventObject(mxEvent.MINIMIZE,_0x2b73[763],_0xff22x5))};mxEvent[_0x2b73[722]](_0xff22x5)});mxEvent[_0x2b73[169]](this[_0x2b73[798]],_0x2b73[751],_0xff22x5);mxClient[_0x2b73[754]]&& mxEvent[_0x2b73[169]](this[_0x2b73[798]],_0x2b73[755],_0xff22x5)};mxWindow[_0x2b73[202]][_0x2b73[161]]= function(_0xff22x2){this[_0x2b73[800]][_0x2b73[124]][_0x2b73[495]]= _0xff22x2?_0x2b73[110]:_0x2b73[130]};mxWindow[_0x2b73[202]][_0x2b73[906]]= function(){this[_0x2b73[800]]= document[_0x2b73[55]](_0x2b73[466]);this[_0x2b73[800]][_0x2b73[57]](_0x2b73[390],this[_0x2b73[919]]);this[_0x2b73[800]][_0x2b73[57]](_0x2b73[611],_0x2b73[699]);this[_0x2b73[800]][_0x2b73[57]](_0x2b73[924],_0x2b73[944]);this[_0x2b73[800]][_0x2b73[124]][_0x2b73[270]]= _0x2b73[583];this[_0x2b73[800]][_0x2b73[124]][_0x2b73[945]]= _0x2b73[942];this[_0x2b73[800]][_0x2b73[124]][_0x2b73[270]]= _0x2b73[356];this[_0x2b73[800]][_0x2b73[124]][_0x2b73[495]]= _0x2b73[130];this[_0x2b73[924]][_0x2b73[62]](this[_0x2b73[800]]);var _0xff22x2=!1,_0xff22x3=null,_0xff22x4=null,_0xff22x5=null,_0xff22x9=null,_0xff22xa=mxUtils[_0x2b73[885]](this,function(_0xff22xa){this[_0x2b73[790]]();if(_0x2b73[130]!= this[_0x2b73[800]][_0x2b73[124]][_0x2b73[495]]){if(_0xff22x2){_0xff22x2= !1;this[_0x2b73[800]][_0x2b73[57]](_0x2b73[390],this[_0x2b73[919]]);this[_0x2b73[800]][_0x2b73[57]](_0x2b73[924],_0x2b73[944]);this[_0x2b73[929]][_0x2b73[124]][_0x2b73[495]]= _0x2b73[110];this[_0x2b73[798]][_0x2b73[124]][_0x2b73[187]]= _0x2b73[110];this[_0x2b73[485]][_0x2b73[124]][_0x2b73[361]]= _0xff22x3+ _0x2b73[168];this[_0x2b73[485]][_0x2b73[124]][_0x2b73[125]]= _0xff22x4+ _0x2b73[168];if(!mxClient[_0x2b73[80]]&& (this[_0x2b73[485]][_0x2b73[124]][_0x2b73[119]]= _0xff22x5,this[_0x2b73[485]][_0x2b73[124]][_0x2b73[117]]= _0xff22x9,_0xff22x13= mxUtils[_0x2b73[275]](this[_0x2b73[929]]),_0x2b73[278]== _0xff22x13[_0x2b73[277]]|| null!= this[_0x2b73[129]])){this[_0x2b73[929]][_0x2b73[124]][_0x2b73[119]]= this[_0x2b73[485]][_0x2b73[167]]- this[_0x2b73[924]][_0x2b73[167]]- 2+ _0x2b73[168]};this[_0x2b73[116]][_0x2b73[124]][_0x2b73[119]]= _0xff22x5;this[_0x2b73[116]][_0x2b73[124]][_0x2b73[117]]= _0xff22x9;null!= this[_0x2b73[129]]&& (this[_0x2b73[129]][_0x2b73[124]][_0x2b73[187]]= _0x2b73[110]);this[_0x2b73[746]]( new mxEventObject(mxEvent.NORMALIZE,_0x2b73[763],_0xff22xa))}else {_0xff22x2= !0;this[_0x2b73[800]][_0x2b73[57]](_0x2b73[390],this[_0x2b73[917]]);this[_0x2b73[800]][_0x2b73[57]](_0x2b73[924],_0x2b73[943]);this[_0x2b73[929]][_0x2b73[124]][_0x2b73[495]]= _0x2b73[110];this[_0x2b73[798]][_0x2b73[124]][_0x2b73[187]]= _0x2b73[188];_0xff22x3= parseInt(this[_0x2b73[485]][_0x2b73[124]][_0x2b73[361]]);_0xff22x4= parseInt(this[_0x2b73[485]][_0x2b73[124]][_0x2b73[125]]);_0xff22x5= this[_0x2b73[116]][_0x2b73[124]][_0x2b73[119]];_0xff22x9= this[_0x2b73[116]][_0x2b73[124]][_0x2b73[117]];this[_0x2b73[485]][_0x2b73[124]][_0x2b73[361]]= _0x2b73[946];this[_0x2b73[485]][_0x2b73[124]][_0x2b73[125]]= _0x2b73[946];mxClient[_0x2b73[80]]|| (this[_0x2b73[485]][_0x2b73[124]][_0x2b73[119]]= document[_0x2b73[112]][_0x2b73[157]]- 2+ _0x2b73[168],this[_0x2b73[485]][_0x2b73[124]][_0x2b73[117]]= document[_0x2b73[112]][_0x2b73[159]]- 2+ _0x2b73[168]);this[_0x2b73[116]][_0x2b73[124]][_0x2b73[117]]= document[_0x2b73[112]][_0x2b73[159]]- 2+ _0x2b73[168];this[_0x2b73[116]][_0x2b73[124]][_0x2b73[119]]= document[_0x2b73[112]][_0x2b73[157]]- 2+ _0x2b73[168];null!= this[_0x2b73[129]]&& (this[_0x2b73[129]][_0x2b73[124]][_0x2b73[187]]= _0x2b73[188]);if(!mxClient[_0x2b73[80]]){var _0xff22x13=mxUtils[_0x2b73[275]](this[_0x2b73[929]]);if(_0x2b73[278]== _0xff22x13[_0x2b73[277]]|| null!= this[_0x2b73[129]]){this[_0x2b73[929]][_0x2b73[124]][_0x2b73[119]]= this[_0x2b73[485]][_0x2b73[167]]- this[_0x2b73[924]][_0x2b73[167]]- 2+ _0x2b73[168]}};this[_0x2b73[746]]( new mxEventObject(mxEvent.MAXIMIZE,_0x2b73[763],_0xff22xa))};mxEvent[_0x2b73[722]](_0xff22xa)}});mxEvent[_0x2b73[759]](this[_0x2b73[800]],_0xff22xa);mxEvent[_0x2b73[169]](this[_0x2b73[924]],_0x2b73[760],_0xff22xa)};mxWindow[_0x2b73[202]][_0x2b73[911]]= function(){this[_0x2b73[924]][_0x2b73[124]][_0x2b73[270]]= _0x2b73[582];mxEvent[_0x2b73[759]](this[_0x2b73[924]],mxUtils[_0x2b73[885]](this,function(_0xff22x2){var _0xff22x3=mxEvent[_0x2b73[731]](_0xff22x2),_0xff22x4=mxEvent[_0x2b73[733]](_0xff22x2),_0xff22x5=this[_0x2b73[730]](),_0xff22x9=this[_0x2b73[732]](),_0xff22xa=mxUtils[_0x2b73[885]](this,function(_0xff22x2){var _0xff22xa=mxEvent[_0x2b73[731]](_0xff22x2)- _0xff22x3,_0xff22x12=mxEvent[_0x2b73[733]](_0xff22x2)- _0xff22x4;this[_0x2b73[947]](_0xff22x5+ _0xff22xa,_0xff22x9+ _0xff22x12);this[_0x2b73[746]]( new mxEventObject(mxEvent.MOVE,_0x2b73[763],_0xff22x2));mxEvent[_0x2b73[722]](_0xff22x2)}),_0xff22x12=mxUtils[_0x2b73[885]](this,function(_0xff22x2){mxEvent[_0x2b73[938]](document,null,_0xff22xa,_0xff22x12);this[_0x2b73[746]]( new mxEventObject(mxEvent.MOVE_END,_0x2b73[763],_0xff22x2));mxEvent[_0x2b73[722]](_0xff22x2)});mxEvent[_0x2b73[759]](document,null,_0xff22xa,_0xff22x12);this[_0x2b73[746]]( new mxEventObject(mxEvent.MOVE_START,_0x2b73[763],_0xff22x2));mxEvent[_0x2b73[722]](_0xff22x2)}))};mxWindow[_0x2b73[202]][_0x2b73[947]]= function(_0xff22x2,_0xff22x3){this[_0x2b73[485]][_0x2b73[124]][_0x2b73[361]]= _0xff22x2+ _0x2b73[168];this[_0x2b73[485]][_0x2b73[124]][_0x2b73[125]]= _0xff22x3+ _0x2b73[168]};mxWindow[_0x2b73[202]][_0x2b73[730]]= function(){return parseInt(this[_0x2b73[485]][_0x2b73[124]][_0x2b73[361]])};mxWindow[_0x2b73[202]][_0x2b73[732]]= function(){return parseInt(this[_0x2b73[485]][_0x2b73[124]][_0x2b73[125]])};mxWindow[_0x2b73[202]][_0x2b73[908]]= function(){this[_0x2b73[948]]= document[_0x2b73[55]](_0x2b73[466]);this[_0x2b73[948]][_0x2b73[57]](_0x2b73[390],this[_0x2b73[913]]);this[_0x2b73[948]][_0x2b73[57]](_0x2b73[611],_0x2b73[699]);this[_0x2b73[948]][_0x2b73[57]](_0x2b73[924],_0x2b73[949]);this[_0x2b73[948]][_0x2b73[124]][_0x2b73[945]]= _0x2b73[935];this[_0x2b73[948]][_0x2b73[124]][_0x2b73[270]]= _0x2b73[356];this[_0x2b73[948]][_0x2b73[124]][_0x2b73[495]]= _0x2b73[130];this[_0x2b73[924]][_0x2b73[950]](this[_0x2b73[948]],this[_0x2b73[924]][_0x2b73[285]]);mxEvent[_0x2b73[759]](this[_0x2b73[948]],mxUtils[_0x2b73[885]](this,function(_0xff22x2){this[_0x2b73[746]]( new mxEventObject(mxEvent.CLOSE,_0x2b73[763],_0xff22x2));this[_0x2b73[165]]?this[_0x2b73[515]]():this[_0x2b73[175]](!1);mxEvent[_0x2b73[722]](_0xff22x2)}))};mxWindow[_0x2b73[202]][_0x2b73[951]]= function(_0xff22x2){this[_0x2b73[618]]= document[_0x2b73[55]](_0x2b73[466]);this[_0x2b73[618]][_0x2b73[57]](_0x2b73[390],_0xff22x2);this[_0x2b73[618]][_0x2b73[57]](_0x2b73[611],_0x2b73[361]);this[_0x2b73[618]][_0x2b73[124]][_0x2b73[941]]= _0x2b73[952];this[_0x2b73[618]][_0x2b73[124]][_0x2b73[945]]= _0x2b73[946];this[_0x2b73[618]][_0x2b73[124]][_0x2b73[953]]= _0x2b73[954];this[_0x2b73[924]][_0x2b73[950]](this[_0x2b73[618]],this[_0x2b73[924]][_0x2b73[285]])};mxWindow[_0x2b73[202]][_0x2b73[164]]= function(_0xff22x2){this[_0x2b73[948]][_0x2b73[124]][_0x2b73[495]]= _0xff22x2?_0x2b73[110]:_0x2b73[130]};mxWindow[_0x2b73[202]][_0x2b73[174]]= function(){return null!= this[_0x2b73[485]]?_0x2b73[188]!= this[_0x2b73[485]][_0x2b73[124]][_0x2b73[187]]:!1};mxWindow[_0x2b73[202]][_0x2b73[175]]= function(_0xff22x2){null!= this[_0x2b73[485]]&& this[_0x2b73[174]]()!= _0xff22x2&& (_0xff22x2?this[_0x2b73[539]]():this[_0x2b73[801]]())};mxWindow[_0x2b73[202]][_0x2b73[539]]= function(){this[_0x2b73[485]][_0x2b73[124]][_0x2b73[187]]= _0x2b73[110];this[_0x2b73[790]]();var _0xff22x2=mxUtils[_0x2b73[275]](this[_0x2b73[929]]);if(!mxClient[_0x2b73[80]]&& (_0x2b73[278]== _0xff22x2[_0x2b73[277]]|| null!= this[_0x2b73[129]])){this[_0x2b73[929]][_0x2b73[124]][_0x2b73[119]]= this[_0x2b73[485]][_0x2b73[167]]- this[_0x2b73[924]][_0x2b73[167]]- 2+ _0x2b73[168]};this[_0x2b73[746]]( new mxEventObject(mxEvent.SHOW))};mxWindow[_0x2b73[202]][_0x2b73[801]]= function(){this[_0x2b73[485]][_0x2b73[124]][_0x2b73[187]]= _0x2b73[188];this[_0x2b73[746]]( new mxEventObject(mxEvent.HIDE))};mxWindow[_0x2b73[202]][_0x2b73[515]]= function(){this[_0x2b73[746]]( new mxEventObject(mxEvent.DESTROY));null!= this[_0x2b73[485]]&& (mxEvent[_0x2b73[762]](this[_0x2b73[485]]),this[_0x2b73[485]][_0x2b73[265]][_0x2b73[266]](this[_0x2b73[485]]),this[_0x2b73[485]]= null);this[_0x2b73[929]]= this[_0x2b73[905]]= this[_0x2b73[924]]= null};function mxForm(_0xff22x2){this[_0x2b73[116]]= document[_0x2b73[55]](_0x2b73[116]);this[_0x2b73[116]][_0x2b73[926]]= _0xff22x2;this[_0x2b73[112]]= document[_0x2b73[55]](_0x2b73[120]);this[_0x2b73[116]][_0x2b73[62]](this[_0x2b73[112]])}mxForm[_0x2b73[202]][_0x2b73[116]]= null;mxForm[_0x2b73[202]][_0x2b73[112]]= !1;mxForm[_0x2b73[202]][_0x2b73[955]]= function(){return this[_0x2b73[116]]};mxForm[_0x2b73[202]][_0x2b73[956]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=document[_0x2b73[55]](_0x2b73[121]),_0xff22x5=document[_0x2b73[55]](_0x2b73[122]);_0xff22x4[_0x2b73[62]](_0xff22x5);var _0xff22x5=document[_0x2b73[55]](_0x2b73[122]),_0xff22x9=document[_0x2b73[55]](_0x2b73[172]);mxUtils[_0x2b73[53]](_0xff22x9,mxResources[_0x2b73[203]](_0x2b73[957])|| _0x2b73[958]);_0xff22x5[_0x2b73[62]](_0xff22x9);mxEvent[_0x2b73[169]](_0xff22x9,_0x2b73[173],function(){_0xff22x2()});_0xff22x9= document[_0x2b73[55]](_0x2b73[172]);mxUtils[_0x2b73[53]](_0xff22x9,mxResources[_0x2b73[203]](_0x2b73[959])|| _0x2b73[960]);_0xff22x5[_0x2b73[62]](_0xff22x9);mxEvent[_0x2b73[169]](_0xff22x9,_0x2b73[173],function(){_0xff22x3()});_0xff22x4[_0x2b73[62]](_0xff22x5);this[_0x2b73[112]][_0x2b73[62]](_0xff22x4)};mxForm[_0x2b73[202]][_0x2b73[961]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=document[_0x2b73[55]](_0x2b73[962]);_0xff22x4[_0x2b73[57]](_0x2b73[60],_0x2b73[963]);_0xff22x4[_0x2b73[131]]= _0xff22x3;return this[_0x2b73[964]](_0xff22x2,_0xff22x4)};mxForm[_0x2b73[202]][_0x2b73[965]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=document[_0x2b73[55]](_0x2b73[962]);_0xff22x4[_0x2b73[57]](_0x2b73[60],_0x2b73[966]);this[_0x2b73[964]](_0xff22x2,_0xff22x4);_0xff22x3&& (_0xff22x4[_0x2b73[967]]= !0);return _0xff22x4};mxForm[_0x2b73[202]][_0x2b73[968]]= function(_0xff22x2,_0xff22x3,_0xff22x4){var _0xff22x5=document[_0x2b73[55]](_0x2b73[126]);mxClient[_0x2b73[133]]&& _0xff22x4--;_0xff22x5[_0x2b73[57]](_0x2b73[969],_0xff22x4|| 2);_0xff22x5[_0x2b73[131]]= _0xff22x3;return this[_0x2b73[964]](_0xff22x2,_0xff22x5)};mxForm[_0x2b73[202]][_0x2b73[970]]= function(_0xff22x2,_0xff22x3,_0xff22x4){var _0xff22x5=document[_0x2b73[55]](_0x2b73[804]);null!= _0xff22x4&& _0xff22x5[_0x2b73[57]](_0x2b73[803],_0xff22x4);_0xff22x3&& _0xff22x5[_0x2b73[57]](_0x2b73[971],_0x2b73[128]);return this[_0x2b73[964]](_0xff22x2,_0xff22x5)};mxForm[_0x2b73[202]][_0x2b73[972]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){var _0xff22x9=document[_0x2b73[55]](_0x2b73[973]);mxUtils[_0x2b73[171]](_0xff22x9,_0xff22x3);_0xff22x9[_0x2b73[57]](_0x2b73[131],_0xff22x4);_0xff22x5&& _0xff22x9[_0x2b73[57]](_0x2b73[974],_0xff22x5);_0xff22x2[_0x2b73[62]](_0xff22x9)};mxForm[_0x2b73[202]][_0x2b73[964]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=document[_0x2b73[55]](_0x2b73[121]),_0xff22x5=document[_0x2b73[55]](_0x2b73[122]);mxUtils[_0x2b73[53]](_0xff22x5,_0xff22x2);_0xff22x4[_0x2b73[62]](_0xff22x5);_0xff22x5= document[_0x2b73[55]](_0x2b73[122]);_0xff22x5[_0x2b73[62]](_0xff22x3);_0xff22x4[_0x2b73[62]](_0xff22x5);this[_0x2b73[112]][_0x2b73[62]](_0xff22x4);return _0xff22x3};function mxImage(_0xff22x2,_0xff22x3,_0xff22x4){this[_0x2b73[390]]= _0xff22x2;this[_0x2b73[117]]= _0xff22x3;this[_0x2b73[119]]= _0xff22x4}mxImage[_0x2b73[202]][_0x2b73[390]]= null;mxImage[_0x2b73[202]][_0x2b73[117]]= null;mxImage[_0x2b73[202]][_0x2b73[119]]= null;function mxDivResizer(_0xff22x2,_0xff22x3){if(_0x2b73[485]== _0xff22x2[_0x2b73[301]][_0x2b73[216]]()){null== _0xff22x3&& (_0xff22x3= window);this[_0x2b73[485]]= _0xff22x2;var _0xff22x4=mxUtils[_0x2b73[275]](_0xff22x2);null!= _0xff22x4&& (this[_0x2b73[975]]= _0x2b73[278]== _0xff22x4[_0x2b73[117]],this[_0x2b73[976]]= _0x2b73[278]== _0xff22x4[_0x2b73[119]]);mxEvent[_0x2b73[169]](_0xff22x3,_0x2b73[129],mxUtils[_0x2b73[885]](this,function(_0xff22x2){this[_0x2b73[977]]|| (this[_0x2b73[977]]= !0,this[_0x2b73[129]](),this[_0x2b73[977]]= !1)}));this[_0x2b73[129]]()}}mxDivResizer[_0x2b73[202]][_0x2b73[975]]= !0;mxDivResizer[_0x2b73[202]][_0x2b73[976]]= !0;mxDivResizer[_0x2b73[202]][_0x2b73[977]]= !1;mxDivResizer[_0x2b73[202]][_0x2b73[129]]= function(){var _0xff22x2=this[_0x2b73[978]](),_0xff22x3=this[_0x2b73[979]](),_0xff22x4=parseInt(this[_0x2b73[485]][_0x2b73[124]][_0x2b73[361]]),_0xff22x5=parseInt(this[_0x2b73[485]][_0x2b73[124]][_0x2b73[699]]),_0xff22x9=parseInt(this[_0x2b73[485]][_0x2b73[124]][_0x2b73[125]]),_0xff22xa=parseInt(this[_0x2b73[485]][_0x2b73[124]][_0x2b73[553]]);this[_0x2b73[975]]&& (!isNaN(_0xff22x4)&& !isNaN(_0xff22x5)&& 0<= _0xff22x4&& 0<= _0xff22x5&& 0< _0xff22x2- _0xff22x5- _0xff22x4)&& (this[_0x2b73[485]][_0x2b73[124]][_0x2b73[117]]= _0xff22x2- _0xff22x5- _0xff22x4+ _0x2b73[168]);this[_0x2b73[976]]&& (!isNaN(_0xff22x9)&& !isNaN(_0xff22xa)&& 0<= _0xff22x9&& 0<= _0xff22xa&& 0< _0xff22x3- _0xff22x9- _0xff22xa)&& (this[_0x2b73[485]][_0x2b73[124]][_0x2b73[119]]= _0xff22x3- _0xff22x9- _0xff22xa+ _0x2b73[168])};mxDivResizer[_0x2b73[202]][_0x2b73[978]]= function(){return document[_0x2b73[112]][_0x2b73[159]]};mxDivResizer[_0x2b73[202]][_0x2b73[979]]= function(){return document[_0x2b73[112]][_0x2b73[157]]};function mxDragSource(_0xff22x2,_0xff22x3){this[_0x2b73[980]]= _0xff22x2;this[_0x2b73[981]]= _0xff22x3;mxEvent[_0x2b73[759]](_0xff22x2,mxUtils[_0x2b73[885]](this,this[_0x2b73[787]]))}mxDragSource[_0x2b73[202]][_0x2b73[980]]= null;mxDragSource[_0x2b73[202]][_0x2b73[981]]= null;mxDragSource[_0x2b73[202]][_0x2b73[559]]= null;mxDragSource[_0x2b73[202]][_0x2b73[982]]= null;mxDragSource[_0x2b73[202]][_0x2b73[983]]= null;mxDragSource[_0x2b73[202]][_0x2b73[984]]= !0;mxDragSource[_0x2b73[202]][_0x2b73[985]]= null;mxDragSource[_0x2b73[202]][_0x2b73[986]]= null;mxDragSource[_0x2b73[202]][_0x2b73[987]]= null;mxDragSource[_0x2b73[202]][_0x2b73[988]]= null;mxDragSource[_0x2b73[202]][_0x2b73[989]]= null;mxDragSource[_0x2b73[202]][_0x2b73[561]]= !0;mxDragSource[_0x2b73[202]][_0x2b73[990]]= !0;mxDragSource[_0x2b73[202]][_0x2b73[991]]= !0;mxDragSource[_0x2b73[202]][_0x2b73[563]]= !0;mxDragSource[_0x2b73[202]][_0x2b73[992]]= 100;mxDragSource[_0x2b73[202]][_0x2b73[993]]= 70;mxDragSource[_0x2b73[202]][_0x2b73[994]]= function(){return this[_0x2b73[984]]};mxDragSource[_0x2b73[202]][_0x2b73[995]]= function(_0xff22x2){this[_0x2b73[984]]= _0xff22x2};mxDragSource[_0x2b73[202]][_0x2b73[996]]= function(){return this[_0x2b73[990]]};mxDragSource[_0x2b73[202]][_0x2b73[562]]= function(_0xff22x2){this[_0x2b73[990]]= _0xff22x2};mxDragSource[_0x2b73[202]][_0x2b73[997]]= function(){return this[_0x2b73[991]]};mxDragSource[_0x2b73[202]][_0x2b73[998]]= function(_0xff22x2){this[_0x2b73[991]]= _0xff22x2};mxDragSource[_0x2b73[202]][_0x2b73[565]]= function(_0xff22x2){return null};mxDragSource[_0x2b73[202]][_0x2b73[564]]= function(_0xff22x2,_0xff22x3,_0xff22x4){return _0xff22x2[_0x2b73[999]](_0xff22x3,_0xff22x4)};mxDragSource[_0x2b73[202]][_0x2b73[566]]= function(_0xff22x2){return this[_0x2b73[980]][_0x2b73[511]](!0)};mxDragSource[_0x2b73[202]][_0x2b73[567]]= function(_0xff22x2){return null};mxDragSource[_0x2b73[202]][_0x2b73[787]]= function(_0xff22x2){this[_0x2b73[984]]&& (!mxEvent[_0x2b73[721]](_0xff22x2)&& null== this[_0x2b73[1000]])&& (this[_0x2b73[1001]](_0xff22x2),this[_0x2b73[1000]]= mxUtils[_0x2b73[885]](this,this[_0x2b73[788]]),this[_0x2b73[1002]]= mxUtils[_0x2b73[885]](this,this[_0x2b73[789]]),mxEvent[_0x2b73[759]](document,null,this[_0x2b73[1000]],this[_0x2b73[1002]]),mxEvent[_0x2b73[722]](_0xff22x2,!0,!1))};mxDragSource[_0x2b73[202]][_0x2b73[1001]]= function(_0xff22x2){this[_0x2b73[982]]= this[_0x2b73[566]](_0xff22x2);this[_0x2b73[982]][_0x2b73[124]][_0x2b73[491]]= _0x2b73[492];this[_0x2b73[982]][_0x2b73[124]][_0x2b73[931]]= this[_0x2b73[992]];mxUtils[_0x2b73[254]](this[_0x2b73[982]],this[_0x2b73[993]])};mxDragSource[_0x2b73[202]][_0x2b73[1003]]= function(_0xff22x2){null!= this[_0x2b73[982]]&& (null!= this[_0x2b73[982]][_0x2b73[265]]&& this[_0x2b73[982]][_0x2b73[265]][_0x2b73[266]](this[_0x2b73[982]]),this[_0x2b73[982]]= null)};mxDragSource[_0x2b73[202]][_0x2b73[1004]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=mxEvent[_0x2b73[731]](_0xff22x3),_0xff22x5=mxEvent[_0x2b73[733]](_0xff22x3),_0xff22x9=mxUtils[_0x2b73[445]](_0xff22x2[_0x2b73[526]]),_0xff22xa=mxUtils[_0x2b73[444]]();return _0xff22x4>= _0xff22x9[_0x2b73[235]]- _0xff22xa[_0x2b73[235]]&& _0xff22x5>= _0xff22x9[_0x2b73[236]]- _0xff22xa[_0x2b73[236]]&& _0xff22x4<= _0xff22x9[_0x2b73[235]]- _0xff22xa[_0x2b73[235]]+ _0xff22x2[_0x2b73[526]][_0x2b73[359]]&& _0xff22x5<= _0xff22x9[_0x2b73[236]]- _0xff22xa[_0x2b73[236]]+ _0xff22x2[_0x2b73[526]][_0x2b73[167]]};mxDragSource[_0x2b73[202]][_0x2b73[788]]= function(_0xff22x2){var _0xff22x3=this[_0x2b73[565]](_0xff22x2);null!= _0xff22x3&& !this[_0x2b73[1004]](_0xff22x3,_0xff22x2)&& (_0xff22x3= null);_0xff22x3!= this[_0x2b73[985]]&& (null!= this[_0x2b73[985]]&& this[_0x2b73[1005]](this[_0x2b73[985]]),this[_0x2b73[985]]= _0xff22x3,null!= this[_0x2b73[985]]&& this[_0x2b73[1006]](this[_0x2b73[985]]));null!= this[_0x2b73[985]]&& this[_0x2b73[1007]](this[_0x2b73[985]],_0xff22x2);if(null!= this[_0x2b73[982]]&& (null== this[_0x2b73[983]]|| _0x2b73[189]!= this[_0x2b73[983]][_0x2b73[124]][_0x2b73[187]])){var _0xff22x3=mxEvent[_0x2b73[731]](_0xff22x2),_0xff22x4=mxEvent[_0x2b73[733]](_0xff22x2);null== this[_0x2b73[982]][_0x2b73[265]]&& document[_0x2b73[112]][_0x2b73[62]](this[_0x2b73[982]]);this[_0x2b73[982]][_0x2b73[124]][_0x2b73[187]]= _0x2b73[189];null!= this[_0x2b73[559]]&& (_0xff22x3+= this[_0x2b73[559]][_0x2b73[235]],_0xff22x4+= this[_0x2b73[559]][_0x2b73[236]]);_0xff22x3+= document[_0x2b73[112]][_0x2b73[360]]|| document[_0x2b73[158]][_0x2b73[360]];_0xff22x4+= document[_0x2b73[112]][_0x2b73[190]]|| document[_0x2b73[158]][_0x2b73[190]];this[_0x2b73[982]][_0x2b73[124]][_0x2b73[361]]= _0xff22x3+ _0x2b73[168];this[_0x2b73[982]][_0x2b73[124]][_0x2b73[125]]= _0xff22x4+ _0x2b73[168]}else {null!= this[_0x2b73[982]]&& (this[_0x2b73[982]][_0x2b73[124]][_0x2b73[187]]= _0x2b73[188])};mxEvent[_0x2b73[722]](_0xff22x2)};mxDragSource[_0x2b73[202]][_0x2b73[789]]= function(_0xff22x2){if(null!= this[_0x2b73[985]]){if(null!= this[_0x2b73[987]]&& (null== this[_0x2b73[983]]|| _0x2b73[188]!= this[_0x2b73[983]][_0x2b73[124]][_0x2b73[187]])){var _0xff22x3=this[_0x2b73[985]][_0x2b73[441]][_0x2b73[255]],_0xff22x4=this[_0x2b73[985]][_0x2b73[441]][_0x2b73[513]];this[_0x2b73[1008]](this[_0x2b73[985]],_0xff22x2,this[_0x2b73[986]],this[_0x2b73[987]][_0x2b73[235]]/ _0xff22x3- _0xff22x4[_0x2b73[235]],this[_0x2b73[987]][_0x2b73[236]]/ _0xff22x3- _0xff22x4[_0x2b73[236]])};this[_0x2b73[1005]](this[_0x2b73[985]])};this[_0x2b73[1003]](_0xff22x2);mxEvent[_0x2b73[938]](document,null,this[_0x2b73[1000]],this[_0x2b73[1002]]);this[_0x2b73[985]]= this[_0x2b73[1002]]= this[_0x2b73[1000]]= null;mxEvent[_0x2b73[722]](_0xff22x2)};mxDragSource[_0x2b73[202]][_0x2b73[1006]]= function(_0xff22x2){_0xff22x2[_0x2b73[1009]]= !0;this[_0x2b73[983]]= this[_0x2b73[567]](_0xff22x2);this[_0x2b73[996]]()&& null!= this[_0x2b73[983]]&& (this[_0x2b73[988]]= new mxGuide(_0xff22x2,_0xff22x2[_0x2b73[1011]][_0x2b73[1010]]()));this[_0x2b73[563]]&& (this[_0x2b73[989]]= new mxCellHighlight(_0xff22x2,mxConstants.DROP_TARGET_COLOR))};mxDragSource[_0x2b73[202]][_0x2b73[1005]]= function(_0xff22x2){this[_0x2b73[987]]= this[_0x2b73[986]]= null;_0xff22x2[_0x2b73[1009]]= !1;null!= this[_0x2b73[983]]&& (null!= this[_0x2b73[983]][_0x2b73[265]]&& this[_0x2b73[983]][_0x2b73[265]][_0x2b73[266]](this[_0x2b73[983]]),this[_0x2b73[983]]= null);null!= this[_0x2b73[988]]&& (this[_0x2b73[988]][_0x2b73[515]](),this[_0x2b73[988]]= null);null!= this[_0x2b73[989]]&& (this[_0x2b73[989]][_0x2b73[515]](),this[_0x2b73[989]]= null)};mxDragSource[_0x2b73[202]][_0x2b73[1007]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=mxUtils[_0x2b73[445]](_0xff22x2[_0x2b73[526]]),_0xff22x5=mxUtils[_0x2b73[444]](_0xff22x2[_0x2b73[526]]),_0xff22x9=mxEvent[_0x2b73[731]](_0xff22x3)- _0xff22x4[_0x2b73[235]]+ _0xff22x5[_0x2b73[235]],_0xff22x4=mxEvent[_0x2b73[733]](_0xff22x3)- _0xff22x4[_0x2b73[236]]+ _0xff22x5[_0x2b73[236]];_0xff22x2[_0x2b73[1012]]&& (null== this[_0x2b73[561]]|| this[_0x2b73[561]])&& _0xff22x2[_0x2b73[1014]](_0xff22x9,_0xff22x4,_0xff22x2[_0x2b73[1013]]);null!= this[_0x2b73[989]]&& _0xff22x2[_0x2b73[1015]]()&& (this[_0x2b73[986]]= this[_0x2b73[564]](_0xff22x2,_0xff22x9,_0xff22x4),_0xff22x5= _0xff22x2[_0x2b73[249]]()[_0x2b73[248]](this[_0x2b73[986]]),this[_0x2b73[989]][_0x2b73[1016]](_0xff22x5));if(null!= this[_0x2b73[983]]){null== this[_0x2b73[983]][_0x2b73[265]]&& (_0xff22x2[_0x2b73[526]][_0x2b73[62]](this[_0x2b73[983]]),this[_0x2b73[983]][_0x2b73[124]][_0x2b73[931]]= _0x2b73[1017],this[_0x2b73[983]][_0x2b73[124]][_0x2b73[491]]= _0x2b73[492]);var _0xff22x5=this[_0x2b73[997]]()&& _0xff22x2[_0x2b73[1018]](_0xff22x3),_0xff22xa=!0;if(null!= this[_0x2b73[988]]&& this[_0x2b73[988]][_0x2b73[1019]](_0xff22x3)){var _0xff22xa=parseInt(this[_0x2b73[983]][_0x2b73[124]][_0x2b73[117]]),_0xff22x12=parseInt(this[_0x2b73[983]][_0x2b73[124]][_0x2b73[119]]),_0xff22xa= new mxRectangle(0,0,_0xff22xa,_0xff22x12),_0xff22x4= new mxPoint(_0xff22x9,_0xff22x4),_0xff22x4=this[_0x2b73[988]][_0x2b73[582]](_0xff22xa,_0xff22x4,_0xff22x5),_0xff22xa=!1,_0xff22x9=_0xff22x4[_0x2b73[235]],_0xff22x4=_0xff22x4[_0x2b73[236]]}else {if(_0xff22x5){var _0xff22x5=_0xff22x2[_0x2b73[441]][_0x2b73[255]],_0xff22x12=_0xff22x2[_0x2b73[441]][_0x2b73[513]],_0xff22x13=_0xff22x2[_0x2b73[1020]]/ 2,_0xff22x9=(_0xff22x2[_0x2b73[1021]](_0xff22x9/ _0xff22x5- _0xff22x12[_0x2b73[235]]- _0xff22x13)+ _0xff22x12[_0x2b73[235]])* _0xff22x5,_0xff22x4=(_0xff22x2[_0x2b73[1021]](_0xff22x4/ _0xff22x5- _0xff22x12[_0x2b73[236]]- _0xff22x13)+ _0xff22x12[_0x2b73[236]])* _0xff22x5}};null!= this[_0x2b73[988]]&& _0xff22xa&& this[_0x2b73[988]][_0x2b73[801]]();null!= this[_0x2b73[1022]]&& (_0xff22x9+= this[_0x2b73[1022]][_0x2b73[235]],_0xff22x4+= this[_0x2b73[1022]][_0x2b73[236]]);this[_0x2b73[983]][_0x2b73[124]][_0x2b73[361]]= Math[_0x2b73[488]](_0xff22x9)+ _0x2b73[168];this[_0x2b73[983]][_0x2b73[124]][_0x2b73[125]]= Math[_0x2b73[488]](_0xff22x4)+ _0x2b73[168];this[_0x2b73[983]][_0x2b73[124]][_0x2b73[187]]= _0x2b73[189]};this[_0x2b73[987]]= new mxPoint(_0xff22x9,_0xff22x4)};mxDragSource[_0x2b73[202]][_0x2b73[1008]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){this[_0x2b73[981]](_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9);_0xff22x2[_0x2b73[526]][_0x2b73[393]]()};function mxToolbar(_0xff22x2){this[_0x2b73[526]]= _0xff22x2}mxToolbar[_0x2b73[202]]= new mxEventSource;mxToolbar[_0x2b73[202]][_0x2b73[196]]= mxToolbar;mxToolbar[_0x2b73[202]][_0x2b73[526]]= null;mxToolbar[_0x2b73[202]][_0x2b73[984]]= !0;mxToolbar[_0x2b73[202]][_0x2b73[1023]]= !1;mxToolbar[_0x2b73[202]][_0x2b73[1024]]= !0;mxToolbar[_0x2b73[202]][_0x2b73[1025]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa){var _0xff22x12=document[_0x2b73[55]](null!= _0xff22x3?_0x2b73[466]:_0x2b73[172]),_0xff22x13=_0xff22x9|| (null!= _0xff22xa?_0x2b73[1026]:_0x2b73[1027]);_0xff22x12[_0x2b73[926]]= _0xff22x13;_0xff22x12[_0x2b73[57]](_0x2b73[390],_0xff22x3);null!= _0xff22x2&& (null!= _0xff22x3?_0xff22x12[_0x2b73[57]](_0x2b73[924],_0xff22x2):mxUtils[_0x2b73[53]](_0xff22x12,_0xff22x2));this[_0x2b73[526]][_0x2b73[62]](_0xff22x12);null!= _0xff22x4&& (mxEvent[_0x2b73[169]](_0xff22x12,_0x2b73[173],_0xff22x4),mxClient[_0x2b73[754]]&& mxEvent[_0x2b73[169]](_0xff22x12,_0x2b73[757],_0xff22x4));_0xff22x2= mxUtils[_0x2b73[885]](this,function(_0xff22x2){null!= _0xff22x5?_0xff22x12[_0x2b73[57]](_0x2b73[390],_0xff22x3):_0xff22x12[_0x2b73[124]][_0x2b73[1028]]= _0x2b73[110]});mxEvent[_0x2b73[759]](_0xff22x12,mxUtils[_0x2b73[885]](this,function(_0xff22x2){null!= _0xff22x5?_0xff22x12[_0x2b73[57]](_0x2b73[390],_0xff22x5):_0xff22x12[_0x2b73[124]][_0x2b73[1028]]= _0x2b73[579];if(null!= _0xff22xa){null== this[_0x2b73[1029]]&& (this[_0x2b73[1029]]= new mxPopupMenu,this[_0x2b73[1029]][_0x2b73[176]]());var _0xff22x3=this[_0x2b73[1030]];this[_0x2b73[1029]][_0x2b73[1031]]()&& this[_0x2b73[1029]][_0x2b73[1032]]();_0xff22x3!= _0xff22x12&& (this[_0x2b73[1030]]= _0xff22x12,this[_0x2b73[1029]][_0x2b73[1033]]= _0xff22xa,_0xff22x3= new mxPoint(_0xff22x12[_0x2b73[358]],_0xff22x12[_0x2b73[362]]+ _0xff22x12[_0x2b73[167]]),this[_0x2b73[1029]][_0x2b73[152]](_0xff22x3[_0x2b73[235]],_0xff22x3[_0x2b73[236]],null,_0xff22x2),this[_0x2b73[1029]][_0x2b73[1031]]()&& (_0xff22x12[_0x2b73[926]]= _0xff22x13+ _0x2b73[1034],this[_0x2b73[1029]][_0x2b73[1032]]= function(){mxPopupMenu[_0x2b73[202]][_0x2b73[1032]][_0x2b73[183]](this);_0xff22x12[_0x2b73[926]]= _0xff22x13;this[_0x2b73[1030]]= null}))}}),null,_0xff22x2);mxEvent[_0x2b73[169]](_0xff22x12,_0x2b73[1035],_0xff22x2);return _0xff22x12};mxToolbar[_0x2b73[202]][_0x2b73[970]]= function(_0xff22x2){var _0xff22x3=document[_0x2b73[55]](_0x2b73[485]);_0xff22x3[_0x2b73[124]][_0x2b73[495]]= _0x2b73[497];_0xff22x3[_0x2b73[926]]= _0x2b73[1036];var _0xff22x4=document[_0x2b73[55]](_0x2b73[804]);_0xff22x4[_0x2b73[926]]= _0xff22x2|| _0x2b73[1037];_0xff22x3[_0x2b73[62]](_0xff22x4);this[_0x2b73[526]][_0x2b73[62]](_0xff22x3);return _0xff22x4};mxToolbar[_0x2b73[202]][_0x2b73[1038]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=document[_0x2b73[55]](_0x2b73[804]);_0xff22x4[_0x2b73[926]]= _0xff22x3|| _0x2b73[1037];this[_0x2b73[972]](_0xff22x4,_0xff22x2,null);mxEvent[_0x2b73[169]](_0xff22x4,_0x2b73[826],function(_0xff22x2){var _0xff22x3=_0xff22x4[_0x2b73[1040]][_0xff22x4[_0x2b73[1039]]];_0xff22x4[_0x2b73[1039]]= 0;null!= _0xff22x3[_0x2b73[1041]]&& _0xff22x3[_0x2b73[1041]](_0xff22x2)});this[_0x2b73[526]][_0x2b73[62]](_0xff22x4);return _0xff22x4};mxToolbar[_0x2b73[202]][_0x2b73[972]]= function(_0xff22x2,_0xff22x3,_0xff22x4){var _0xff22x5=document[_0x2b73[55]](_0x2b73[973]);mxUtils[_0x2b73[171]](_0xff22x5,_0xff22x3);_0x2b73[279]== typeof _0xff22x4?_0xff22x5[_0x2b73[1041]]= _0xff22x4:_0xff22x5[_0x2b73[57]](_0x2b73[131],_0xff22x4);_0xff22x2[_0x2b73[62]](_0xff22x5);return _0xff22x5};mxToolbar[_0x2b73[202]][_0x2b73[1042]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){var _0xff22xa=document[_0x2b73[55]](_0x2b73[466]);_0xff22xa[_0x2b73[1043]]= _0xff22x9|| _0x2b73[1026];_0xff22xa[_0x2b73[926]]= _0xff22xa[_0x2b73[1043]];_0xff22xa[_0x2b73[57]](_0x2b73[390],_0xff22x3);_0xff22xa[_0x2b73[1044]]= _0xff22x5;null!= _0xff22x2&& _0xff22xa[_0x2b73[57]](_0x2b73[924],_0xff22x2);mxEvent[_0x2b73[169]](_0xff22xa,_0x2b73[173],mxUtils[_0x2b73[885]](this,function(_0xff22x2){_0xff22x2= this[_0x2b73[1045]][_0x2b73[1044]];null!= _0xff22x2?(this[_0x2b73[1045]][_0x2b73[1044]]= this[_0x2b73[1045]][_0x2b73[284]](_0x2b73[390]),this[_0x2b73[1045]][_0x2b73[57]](_0x2b73[390],_0xff22x2)):this[_0x2b73[1045]][_0x2b73[926]]= this[_0x2b73[1045]][_0x2b73[1043]];this[_0x2b73[1024]]&& (this[_0x2b73[1046]]= _0xff22xa);this[_0x2b73[1045]]= _0xff22xa;_0xff22x2= _0xff22xa[_0x2b73[1044]];null!= _0xff22x2?(_0xff22xa[_0x2b73[1044]]= _0xff22xa[_0x2b73[284]](_0x2b73[390]),_0xff22xa[_0x2b73[57]](_0x2b73[390],_0xff22x2)):_0xff22xa[_0x2b73[926]]= _0xff22xa[_0x2b73[1043]]+ _0x2b73[1034];this[_0x2b73[746]]( new mxEventObject(mxEvent.SELECT));_0xff22x4()}));this[_0x2b73[526]][_0x2b73[62]](_0xff22xa);null== this[_0x2b73[1046]]&& (this[_0x2b73[1046]]= _0xff22xa,this[_0x2b73[1047]](_0xff22xa),_0xff22x4());return _0xff22xa};mxToolbar[_0x2b73[202]][_0x2b73[1048]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa){_0xff22xa= null!= _0xff22xa?_0xff22xa:!0;var _0xff22x12=document[_0x2b73[55]](null!= _0xff22x3?_0x2b73[466]:_0x2b73[172]);_0xff22x12[_0x2b73[1043]]= _0xff22x9|| _0x2b73[1026];_0xff22x12[_0x2b73[926]]= _0xff22x12[_0x2b73[1043]];_0xff22x12[_0x2b73[57]](_0x2b73[390],_0xff22x3);_0xff22x12[_0x2b73[1044]]= _0xff22x5;null!= _0xff22x2&& _0xff22x12[_0x2b73[57]](_0x2b73[924],_0xff22x2);this[_0x2b73[984]]&& _0xff22xa&& (mxEvent[_0x2b73[169]](_0xff22x12,_0x2b73[173],mxUtils[_0x2b73[885]](this,function(_0xff22x2){this[_0x2b73[1047]](_0xff22x12,_0xff22x4);this[_0x2b73[1023]]= !1})),mxEvent[_0x2b73[169]](_0xff22x12,_0x2b73[760],mxUtils[_0x2b73[885]](this,function(_0xff22x2){this[_0x2b73[1047]](_0xff22x12,_0xff22x4);this[_0x2b73[1023]]= !0})),null== this[_0x2b73[1046]]&& (this[_0x2b73[1046]]= _0xff22x12,this[_0x2b73[1049]]= _0xff22x4,this[_0x2b73[1047]](_0xff22x12,_0xff22x4)));this[_0x2b73[526]][_0x2b73[62]](_0xff22x12);return _0xff22x12};mxToolbar[_0x2b73[202]][_0x2b73[1047]]= function(_0xff22x2,_0xff22x3){if(this[_0x2b73[1045]]!= _0xff22x2){if(null!= this[_0x2b73[1045]]){var _0xff22x4=this[_0x2b73[1045]][_0x2b73[1044]];null!= _0xff22x4?(this[_0x2b73[1045]][_0x2b73[1044]]= this[_0x2b73[1045]][_0x2b73[284]](_0x2b73[390]),this[_0x2b73[1045]][_0x2b73[57]](_0x2b73[390],_0xff22x4)):this[_0x2b73[1045]][_0x2b73[926]]= this[_0x2b73[1045]][_0x2b73[1043]]};this[_0x2b73[1045]]= _0xff22x2;_0xff22x4= this[_0x2b73[1045]][_0x2b73[1044]];null!= _0xff22x4?(this[_0x2b73[1045]][_0x2b73[1044]]= this[_0x2b73[1045]][_0x2b73[284]](_0x2b73[390]),this[_0x2b73[1045]][_0x2b73[57]](_0x2b73[390],_0xff22x4)):this[_0x2b73[1045]][_0x2b73[926]]= this[_0x2b73[1045]][_0x2b73[1043]]+ _0x2b73[1034];this[_0x2b73[746]]( new mxEventObject(mxEvent.SELECT,_0x2b73[279],_0xff22x3))}};mxToolbar[_0x2b73[202]][_0x2b73[1050]]= function(_0xff22x2){(_0xff22x2|| !this[_0x2b73[1023]])&& this[_0x2b73[1045]]!= this[_0x2b73[1046]]&& this[_0x2b73[1047]](this[_0x2b73[1046]],this[_0x2b73[1049]])};mxToolbar[_0x2b73[202]][_0x2b73[1051]]= function(_0xff22x2){return this[_0x2b73[1025]](null,_0xff22x2,null)};mxToolbar[_0x2b73[202]][_0x2b73[1052]]= function(){mxUtils[_0x2b73[345]](this[_0x2b73[526]])};mxToolbar[_0x2b73[202]][_0x2b73[1053]]= function(){var _0xff22x2=document[_0x2b73[55]](_0x2b73[1054]);_0xff22x2[_0x2b73[124]][_0x2b73[941]]= _0x2b73[1055];_0xff22x2[_0x2b73[57]](_0x2b73[803],_0x2b73[500]);this[_0x2b73[526]][_0x2b73[62]](_0xff22x2)};mxToolbar[_0x2b73[202]][_0x2b73[515]]= function(){mxEvent[_0x2b73[762]](this[_0x2b73[526]]);this[_0x2b73[1045]]= this[_0x2b73[1049]]= this[_0x2b73[1046]]= this[_0x2b73[526]]= null;null!= this[_0x2b73[1029]]&& this[_0x2b73[1029]][_0x2b73[515]]()};function mxSession(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){this[_0x2b73[251]]= _0xff22x2;this[_0x2b73[1056]]= _0xff22x3;this[_0x2b73[1057]]= _0xff22x4;this[_0x2b73[1058]]= _0xff22x5;null!= _0xff22x2&& (this[_0x2b73[1059]]= new mxCodec,this[_0x2b73[1059]][_0x2b73[1060]]= function(_0xff22x3){return _0xff22x2[_0x2b73[736]](_0xff22x3)});_0xff22x2[_0x2b73[169]](mxEvent.NOTIFY,mxUtils[_0x2b73[885]](this,function(_0xff22x2,_0xff22x3){var _0xff22x4=_0xff22x3[_0x2b73[720]](_0x2b73[1061]);(null!= _0xff22x4&& this[_0x2b73[143]]|| this[_0x2b73[1062]]&& !this[_0x2b73[1063]])&& this[_0x2b73[827]](_0x2b73[1064]+ this[_0x2b73[1067]](_0xff22x4[_0x2b73[1065]],_0xff22x4[_0x2b73[1066]])+ _0x2b73[1068])}))}mxSession[_0x2b73[202]]= new mxEventSource;mxSession[_0x2b73[202]][_0x2b73[196]]= mxSession;mxSession[_0x2b73[202]][_0x2b73[251]]= null;mxSession[_0x2b73[202]][_0x2b73[1056]]= null;mxSession[_0x2b73[202]][_0x2b73[1057]]= null;mxSession[_0x2b73[202]][_0x2b73[1058]]= null;mxSession[_0x2b73[202]][_0x2b73[1059]]= null;mxSession[_0x2b73[202]][_0x2b73[1069]]= _0x2b73[336];mxSession[_0x2b73[202]][_0x2b73[1070]]= !0;mxSession[_0x2b73[202]][_0x2b73[1071]]= !0;mxSession[_0x2b73[202]][_0x2b73[1072]]= 0;mxSession[_0x2b73[202]][_0x2b73[1073]]= 0;mxSession[_0x2b73[202]][_0x2b73[143]]= !1;mxSession[_0x2b73[202]][_0x2b73[1062]]= !1;mxSession[_0x2b73[202]][_0x2b73[1063]]= !1;mxSession[_0x2b73[202]][_0x2b73[1074]]= !1;mxSession[_0x2b73[202]][_0x2b73[861]]= function(){this[_0x2b73[143]]?(this[_0x2b73[1062]]= !0,this[_0x2b73[746]]( new mxEventObject(mxEvent.CONNECT))):this[_0x2b73[1062]]|| this[_0x2b73[203]](this[_0x2b73[1056]],mxUtils[_0x2b73[885]](this,function(_0xff22x2){this[_0x2b73[1062]]= !0;this[_0x2b73[746]]( new mxEventObject(mxEvent.CONNECT));this[_0x2b73[1075]]()}))};mxSession[_0x2b73[202]][_0x2b73[809]]= function(){this[_0x2b73[1062]]&& !this[_0x2b73[1063]]&& (this[_0x2b73[1063]]= !0,this[_0x2b73[746]]( new mxEventObject(mxEvent.SUSPEND)))};mxSession[_0x2b73[202]][_0x2b73[810]]= function(_0xff22x2,_0xff22x3,_0xff22x4){this[_0x2b73[1062]]&& this[_0x2b73[1063]]&& (this[_0x2b73[1063]]= !1,this[_0x2b73[746]]( new mxEventObject(mxEvent.RESUME)),this[_0x2b73[1074]]|| this[_0x2b73[1075]]())};mxSession[_0x2b73[202]][_0x2b73[1076]]= function(_0xff22x2){this[_0x2b73[1062]]&& (this[_0x2b73[1062]]= !1);this[_0x2b73[746]]( new mxEventObject(mxEvent.DISCONNECT,_0x2b73[1077],_0xff22x2))};mxSession[_0x2b73[202]][_0x2b73[1075]]= function(){this[_0x2b73[1062]]&& !this[_0x2b73[1063]]&& null!= this[_0x2b73[1057]]?(this[_0x2b73[1074]]= !0,this[_0x2b73[203]](this[_0x2b73[1057]],mxUtils[_0x2b73[885]](this,function(){this[_0x2b73[1075]]()}))):this[_0x2b73[1074]]= !1};mxSession[_0x2b73[202]][_0x2b73[827]]= function(_0xff22x2,_0xff22x3,_0xff22x4){null!= _0xff22x2&& 0< _0xff22x2[_0x2b73[67]]&& (null!= this[_0x2b73[1058]]&& (this[_0x2b73[143]]?(mxLog[_0x2b73[539]](),mxLog[_0x2b73[143]](_0x2b73[1078]+ this[_0x2b73[1058]]+ _0x2b73[1079]+ _0xff22x2)):(_0xff22x2= _0x2b73[1080]+ _0xff22x2+ _0x2b73[1081],this[_0x2b73[1070]]&& (_0xff22x2= encodeURIComponent(_0xff22x2)),mxUtils[_0x2b73[814]](this[_0x2b73[1058]],_0x2b73[1082]+ _0xff22x2,_0xff22x3,_0xff22x4))),this[_0x2b73[1072]]+= _0xff22x2[_0x2b73[67]],this[_0x2b73[746]]( new mxEventObject(mxEvent.NOTIFY,_0x2b73[863],this[_0x2b73[1058]],_0x2b73[338],_0xff22x2)))};mxSession[_0x2b73[202]][_0x2b73[203]]= function(_0xff22x2,_0xff22x3,_0xff22x4){if(_0x2b73[82]!= typeof mxUtils){var _0xff22x5=mxUtils[_0x2b73[885]](this,function(_0xff22x2){null!= _0xff22x4?_0xff22x4(_0xff22x2):this[_0x2b73[1076]](_0xff22x2)});mxUtils[_0x2b73[203]](_0xff22x2,mxUtils[_0x2b73[885]](this,function(_0xff22x4){if(_0x2b73[82]!= typeof mxUtils){if(_0xff22x4[_0x2b73[220]]()&& 404!= _0xff22x4[_0x2b73[878]]()){if(this[_0x2b73[1073]]+= _0xff22x4[_0x2b73[221]]()[_0x2b73[67]],this[_0x2b73[746]]( new mxEventObject(mxEvent.GET,_0x2b73[863],_0xff22x2,_0x2b73[870],_0xff22x4)),this[_0x2b73[1083]](_0xff22x4)){if(0< _0xff22x4[_0x2b73[221]]()[_0x2b73[67]]){var _0xff22xa=_0xff22x4[_0x2b73[874]]();null== _0xff22xa?_0xff22x5(_0x2b73[1084]+ _0xff22x4[_0x2b73[221]]()):this[_0x2b73[806]](_0xff22xa)};null!= _0xff22x3&& _0xff22x3(_0xff22x4)}}else {_0xff22x5(_0x2b73[1085])}}}),function(_0xff22x2){_0xff22x5(_0x2b73[1086])})}};mxSession[_0x2b73[202]][_0x2b73[1083]]= function(_0xff22x2){return 0> _0xff22x2[_0x2b73[221]]()[_0x2b73[2]](_0x2b73[1087])};mxSession[_0x2b73[202]][_0x2b73[1067]]= function(_0xff22x2,_0xff22x3){for(var _0xff22x4=_0x2b73[110],_0xff22x5=_0xff22x3?-1:1,_0xff22x9=_0xff22x3?_0xff22x2[_0x2b73[67]]- 1:0;0<= _0xff22x9&& _0xff22x9< _0xff22x2[_0x2b73[67]];_0xff22x9+= _0xff22x5){var _0xff22xa=this[_0x2b73[1059]][_0x2b73[514]](_0xff22x2[_0xff22x9]),_0xff22x4=_0xff22x4+ mxUtils[_0x2b73[875]](_0xff22xa,this[_0x2b73[1069]])};return _0xff22x4};mxSession[_0x2b73[202]][_0x2b73[806]]= function(_0xff22x2){if(null!= _0xff22x2&& _0xff22x2[_0x2b73[288]]== mxConstants[_0x2b73[289]]){var _0xff22x3=_0xff22x2[_0x2b73[284]](_0x2b73[1088]);null!= _0xff22x3&& (this[_0x2b73[251]][_0x2b73[1089]]= _0xff22x3+ _0x2b73[213]);for(_0xff22x3= _0xff22x2[_0x2b73[285]];null!= _0xff22x3;){var _0xff22x4=_0xff22x3[_0x2b73[301]][_0x2b73[216]]();_0x2b73[724]== _0xff22x4?this[_0x2b73[1090]](_0xff22x3):_0x2b73[1091]== _0xff22x4&& this[_0x2b73[1092]](_0xff22x3);_0xff22x3= _0xff22x3[_0x2b73[287]]};this[_0x2b73[746]]( new mxEventObject(mxEvent.RECEIVE,_0x2b73[252],_0xff22x2))}};mxSession[_0x2b73[202]][_0x2b73[1090]]= function(_0xff22x2){( new mxCodec(_0xff22x2[_0x2b73[295]]))[_0x2b73[1093]](_0xff22x2[_0x2b73[285]],this[_0x2b73[251]])};mxSession[_0x2b73[202]][_0x2b73[1092]]= function(_0xff22x2){for(_0xff22x2= _0xff22x2[_0x2b73[285]];null!= _0xff22x2;){_0x2b73[1061]== _0xff22x2[_0x2b73[301]]&& this[_0x2b73[1094]](_0xff22x2),_0xff22x2= _0xff22x2[_0x2b73[287]]}};mxSession[_0x2b73[202]][_0x2b73[1094]]= function(_0xff22x2){_0xff22x2= this[_0x2b73[1095]](_0xff22x2);if(0< _0xff22x2[_0x2b73[67]]){var _0xff22x3=this[_0x2b73[1096]](_0xff22x2);this[_0x2b73[251]][_0x2b73[746]]( new mxEventObject(mxEvent.CHANGE,_0x2b73[1061],_0xff22x3,_0x2b73[1065],_0xff22x2));this[_0x2b73[251]][_0x2b73[746]]( new mxEventObject(mxEvent.UNDO,_0x2b73[1061],_0xff22x3));this[_0x2b73[746]]( new mxEventObject(mxEvent.FIRED,_0x2b73[1061],_0xff22x3))}};mxSession[_0x2b73[202]][_0x2b73[1096]]= function(_0xff22x2){var _0xff22x3= new mxUndoableEdit(this[_0x2b73[251]],this[_0x2b73[1071]]);_0xff22x3[_0x2b73[1065]]= _0xff22x2;_0xff22x3[_0x2b73[827]]= function(){_0xff22x3[_0x2b73[1097]][_0x2b73[746]]( new mxEventObject(mxEvent.CHANGE,_0x2b73[1061],_0xff22x3,_0x2b73[1065],_0xff22x3[_0x2b73[1065]]));_0xff22x3[_0x2b73[1097]][_0x2b73[746]]( new mxEventObject(mxEvent.NOTIFY,_0x2b73[1061],_0xff22x3,_0x2b73[1065],_0xff22x3[_0x2b73[1065]]))};return _0xff22x3};mxSession[_0x2b73[202]][_0x2b73[1095]]= function(_0xff22x2){this[_0x2b73[1059]][_0x2b73[395]]= _0xff22x2[_0x2b73[295]];var _0xff22x3=[];for(_0xff22x2= _0xff22x2[_0x2b73[285]];null!= _0xff22x2;){var _0xff22x4=this[_0x2b73[1098]](_0xff22x2);null!= _0xff22x4&& _0xff22x3[_0x2b73[207]](_0xff22x4);_0xff22x2= _0xff22x2[_0x2b73[287]]};return _0xff22x3};mxSession[_0x2b73[202]][_0x2b73[1098]]= function(_0xff22x2){var _0xff22x3=null;_0xff22x2[_0x2b73[288]]== mxConstants[_0x2b73[289]]&& (_0xff22x3= _0x2b73[1099]== _0xff22x2[_0x2b73[301]]?( new mxCodec(_0xff22x2[_0x2b73[295]]))[_0x2b73[1093]](_0xff22x2):this[_0x2b73[1059]][_0x2b73[1093]](_0xff22x2),null!= _0xff22x3&& (_0xff22x3[_0x2b73[251]]= this[_0x2b73[251]],_0xff22x3[_0x2b73[350]](),_0x2b73[1100]== _0xff22x2[_0x2b73[301]]&& null== _0xff22x3[_0x2b73[1101]]&& this[_0x2b73[1102]](_0xff22x3[_0x2b73[247]])));return _0xff22x3};mxSession[_0x2b73[202]][_0x2b73[1102]]= function(_0xff22x2,_0xff22x3){this[_0x2b73[1059]][_0x2b73[1104]](_0xff22x2[_0x2b73[1103]](),_0xff22x2);for(var _0xff22x4=this[_0x2b73[251]][_0x2b73[262]](_0xff22x2),_0xff22x5=0;_0xff22x5< _0xff22x4;_0xff22x5++){this[_0x2b73[1102]](this[_0x2b73[251]][_0x2b73[263]](_0xff22x2,_0xff22x5))}};function mxUndoableEdit(_0xff22x2,_0xff22x3){this[_0x2b73[1097]]= _0xff22x2;this[_0x2b73[1065]]= [];this[_0x2b73[1105]]= null!= _0xff22x3?_0xff22x3:!0}mxUndoableEdit[_0x2b73[202]][_0x2b73[1097]]= null;mxUndoableEdit[_0x2b73[202]][_0x2b73[1065]]= null;mxUndoableEdit[_0x2b73[202]][_0x2b73[1105]]= null;mxUndoableEdit[_0x2b73[202]][_0x2b73[1066]]= !1;mxUndoableEdit[_0x2b73[202]][_0x2b73[1106]]= !1;mxUndoableEdit[_0x2b73[202]][_0x2b73[1107]]= function(){return 0== this[_0x2b73[1065]][_0x2b73[67]]};mxUndoableEdit[_0x2b73[202]][_0x2b73[1108]]= function(){return this[_0x2b73[1105]]};mxUndoableEdit[_0x2b73[202]][_0x2b73[99]]= function(_0xff22x2){this[_0x2b73[1065]][_0x2b73[207]](_0xff22x2)};mxUndoableEdit[_0x2b73[202]][_0x2b73[827]]= function(){};mxUndoableEdit[_0x2b73[202]][_0x2b73[1109]]= function(){};mxUndoableEdit[_0x2b73[202]][_0x2b73[824]]= function(){if(!this[_0x2b73[1066]]){this[_0x2b73[1097]][_0x2b73[746]]( new mxEventObject(mxEvent.START_EDIT));for(var _0xff22x2=this[_0x2b73[1065]][_0x2b73[67]]- 1;0<= _0xff22x2;_0xff22x2--){var _0xff22x3=this[_0x2b73[1065]][_0xff22x2];null!= _0xff22x3[_0x2b73[350]]?_0xff22x3[_0x2b73[350]]():null!= _0xff22x3[_0x2b73[824]]&& _0xff22x3[_0x2b73[824]]();this[_0x2b73[1097]][_0x2b73[746]]( new mxEventObject(mxEvent.EXECUTED,_0x2b73[826],_0xff22x3))};this[_0x2b73[1066]]= !0;this[_0x2b73[1106]]= !1;this[_0x2b73[1097]][_0x2b73[746]]( new mxEventObject(mxEvent.END_EDIT))};this[_0x2b73[827]]()};mxUndoableEdit[_0x2b73[202]][_0x2b73[825]]= function(){if(!this[_0x2b73[1106]]){this[_0x2b73[1097]][_0x2b73[746]]( new mxEventObject(mxEvent.START_EDIT));for(var _0xff22x2=this[_0x2b73[1065]][_0x2b73[67]],_0xff22x3=0;_0xff22x3< _0xff22x2;_0xff22x3++){var _0xff22x4=this[_0x2b73[1065]][_0xff22x3];null!= _0xff22x4[_0x2b73[350]]?_0xff22x4[_0x2b73[350]]():null!= _0xff22x4[_0x2b73[825]]&& _0xff22x4[_0x2b73[825]]();this[_0x2b73[1097]][_0x2b73[746]]( new mxEventObject(mxEvent.EXECUTED,_0x2b73[826],_0xff22x4))};this[_0x2b73[1066]]= !1;this[_0x2b73[1106]]= !0;this[_0x2b73[1097]][_0x2b73[746]]( new mxEventObject(mxEvent.END_EDIT))};this[_0x2b73[827]]()};function mxUndoManager(_0xff22x2){this[_0x2b73[803]]= null!= _0xff22x2?_0xff22x2:100;this[_0x2b73[200]]()}mxUndoManager[_0x2b73[202]]= new mxEventSource;mxUndoManager[_0x2b73[202]][_0x2b73[196]]= mxUndoManager;mxUndoManager[_0x2b73[202]][_0x2b73[803]]= null;mxUndoManager[_0x2b73[202]][_0x2b73[1110]]= null;mxUndoManager[_0x2b73[202]][_0x2b73[1111]]= 0;mxUndoManager[_0x2b73[202]][_0x2b73[1107]]= function(){return 0== this[_0x2b73[1110]][_0x2b73[67]]};mxUndoManager[_0x2b73[202]][_0x2b73[200]]= function(){this[_0x2b73[1110]]= [];this[_0x2b73[1111]]= 0;this[_0x2b73[746]]( new mxEventObject(mxEvent.CLEAR))};mxUndoManager[_0x2b73[202]][_0x2b73[1112]]= function(){return 0< this[_0x2b73[1111]]};mxUndoManager[_0x2b73[202]][_0x2b73[824]]= function(){for(;0< this[_0x2b73[1111]];){var _0xff22x2=this[_0x2b73[1110]][--this[_0x2b73[1111]]];_0xff22x2[_0x2b73[824]]();if(_0xff22x2[_0x2b73[1108]]()){this[_0x2b73[746]]( new mxEventObject(mxEvent.UNDO,_0x2b73[1061],_0xff22x2));break}}};mxUndoManager[_0x2b73[202]][_0x2b73[1113]]= function(){return this[_0x2b73[1111]]< this[_0x2b73[1110]][_0x2b73[67]]};mxUndoManager[_0x2b73[202]][_0x2b73[825]]= function(){for(var _0xff22x2=this[_0x2b73[1110]][_0x2b73[67]];this[_0x2b73[1111]]< _0xff22x2;){var _0xff22x3=this[_0x2b73[1110]][this[_0x2b73[1111]]++];_0xff22x3[_0x2b73[825]]();if(_0xff22x3[_0x2b73[1108]]()){this[_0x2b73[746]]( new mxEventObject(mxEvent.REDO,_0x2b73[1061],_0xff22x3));break}}};mxUndoManager[_0x2b73[202]][_0x2b73[1114]]= function(_0xff22x2){this[_0x2b73[330]]();0< this[_0x2b73[803]]&& this[_0x2b73[803]]== this[_0x2b73[1110]][_0x2b73[67]]&& this[_0x2b73[1110]][_0x2b73[1115]]();this[_0x2b73[1110]][_0x2b73[207]](_0xff22x2);this[_0x2b73[1111]]= this[_0x2b73[1110]][_0x2b73[67]];this[_0x2b73[746]]( new mxEventObject(mxEvent.ADD,_0x2b73[1061],_0xff22x2))};mxUndoManager[_0x2b73[202]][_0x2b73[330]]= function(){if(this[_0x2b73[1110]][_0x2b73[67]]> this[_0x2b73[1111]]){for(var _0xff22x2=this[_0x2b73[1110]][_0x2b73[300]](this[_0x2b73[1111]],this[_0x2b73[1110]][_0x2b73[67]]- this[_0x2b73[1111]]),_0xff22x3=0;_0xff22x3< _0xff22x2[_0x2b73[67]];_0xff22x3++){_0xff22x2[_0xff22x3][_0x2b73[1109]]()}}};var mxUrlConverter=function(_0xff22x2){var _0xff22x3=!0,_0xff22x4=null,_0xff22x5=null;return {isEnabled:function(){return _0xff22x3},setEnabled:function(_0xff22x2){_0xff22x3= _0xff22x2},getBaseUrl:function(){return _0xff22x4},setBaseUrl:function(_0xff22x2){_0xff22x4= _0xff22x2},getBaseDomain:function(){return _0xff22x4},setBaseDomain:function(_0xff22x2){_0xff22x4= _0xff22x2},isRelativeUrl:function(_0xff22x2){return _0x2b73[43]!= _0xff22x2[_0x2b73[85]](0,7)&& _0x2b73[46]!= _0xff22x2[_0x2b73[85]](0,8)&& _0x2b73[1116]!= _0xff22x2[_0x2b73[85]](0,10)},convert:function(_0xff22x2){if(_0xff22x3&& this[_0x2b73[1117]](_0xff22x2)){if(null== _0xff22x4){_0xff22x5= location[_0x2b73[1118]]+ _0x2b73[1119]+ location[_0x2b73[1120]];_0xff22x4= _0xff22x5+ location[_0x2b73[1121]];var _0xff22xa=_0xff22x4[_0x2b73[1122]](_0x2b73[84]);0< _0xff22xa&& (_0xff22x4= _0xff22x4[_0x2b73[85]](0,_0xff22xa+ 1))};_0xff22x2= _0x2b73[84]== _0xff22x2[_0x2b73[225]](0)?_0xff22x5+ _0xff22x2:_0xff22x4+ _0xff22x2};return _0xff22x2}}};function mxPanningManager(_0xff22x2){this[_0x2b73[1123]]= null;this[_0x2b73[1124]]= !1;this[_0x2b73[1125]]= this[_0x2b73[1126]]= this[_0x2b73[1127]]= this[_0x2b73[1128]]= this[_0x2b73[1129]]= this[_0x2b73[1130]]= 0;this[_0x2b73[1131]]= !1;this[_0x2b73[190]]= this[_0x2b73[360]]= 0;this[_0x2b73[1132]]= {mouseDown:function(_0xff22x2,_0xff22x3){},mouseMove:function(_0xff22x2,_0xff22x3){},mouseUp:mxUtils[_0x2b73[885]](this,function(_0xff22x2,_0xff22x3){this[_0x2b73[1124]]&& this[_0x2b73[1076]]()})};_0xff22x2[_0x2b73[1133]](this[_0x2b73[1132]]);mxEvent[_0x2b73[169]](document,_0x2b73[753],mxUtils[_0x2b73[885]](this,function(){this[_0x2b73[1124]]&& this[_0x2b73[1076]]()}));var _0xff22x3=mxUtils[_0x2b73[885]](this,function(){this[_0x2b73[1131]]= mxUtils[_0x2b73[1134]](_0xff22x2[_0x2b73[526]]);this[_0x2b73[360]]= _0xff22x2[_0x2b73[526]][_0x2b73[360]];this[_0x2b73[190]]= _0xff22x2[_0x2b73[526]][_0x2b73[190]];return window[_0x2b73[1141]](mxUtils[_0x2b73[885]](this,function(){this[_0x2b73[1130]]-= this[_0x2b73[1126]];this[_0x2b73[1129]]-= this[_0x2b73[1125]];if(this[_0x2b73[1131]]){var _0xff22x3=-_0xff22x2[_0x2b73[526]][_0x2b73[360]]- Math[_0x2b73[430]](this[_0x2b73[1126]]),_0xff22x5=-_0xff22x2[_0x2b73[526]][_0x2b73[190]]- Math[_0x2b73[430]](this[_0x2b73[1125]]);_0xff22x2[_0x2b73[1135]](_0xff22x3,_0xff22x5);_0xff22x2[_0x2b73[1136]]= this[_0x2b73[360]]- _0xff22x2[_0x2b73[526]][_0x2b73[360]];_0xff22x2[_0x2b73[1137]]= this[_0x2b73[190]]- _0xff22x2[_0x2b73[526]][_0x2b73[190]];_0xff22x2[_0x2b73[746]]( new mxEventObject(mxEvent.PAN))}else {_0xff22x2[_0x2b73[1135]](this[_0x2b73[1138]](),this[_0x2b73[1139]]())}}),this[_0x2b73[1140]])});this[_0x2b73[1142]]= function(){return active};this[_0x2b73[1138]]= function(){return Math[_0x2b73[488]](this[_0x2b73[1130]])};this[_0x2b73[1139]]= function(){return Math[_0x2b73[488]](this[_0x2b73[1129]])};this[_0x2b73[861]]= function(){this[_0x2b73[1128]]= _0xff22x2[_0x2b73[441]][_0x2b73[513]][_0x2b73[235]];this[_0x2b73[1127]]= _0xff22x2[_0x2b73[441]][_0x2b73[513]][_0x2b73[236]];this[_0x2b73[1124]]= !0};this[_0x2b73[1143]]= function(_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa){this[_0x2b73[1124]]|| this[_0x2b73[861]]();this[_0x2b73[360]]= _0xff22x2[_0x2b73[526]][_0x2b73[360]];this[_0x2b73[190]]= _0xff22x2[_0x2b73[526]][_0x2b73[190]];_0xff22xa= null!= _0xff22xa?_0xff22xa:0;var _0xff22x12=_0xff22x2[_0x2b73[526]];this[_0x2b73[1126]]= _0xff22x4+ (null!= _0xff22x9?_0xff22x9:0)- _0xff22x12[_0x2b73[360]]- _0xff22x12[_0x2b73[159]];0> this[_0x2b73[1126]]&& Math[_0x2b73[425]](this[_0x2b73[1126]])< this[_0x2b73[467]]?this[_0x2b73[1126]]= this[_0x2b73[467]]+ this[_0x2b73[1126]]:this[_0x2b73[1126]]= this[_0x2b73[1144]]?Math[_0x2b73[160]](this[_0x2b73[1126]],0):0;0== this[_0x2b73[1126]]&& (this[_0x2b73[1126]]= _0xff22x4- _0xff22x12[_0x2b73[360]],this[_0x2b73[1126]]= 0< this[_0x2b73[1126]]&& this[_0x2b73[1126]]< this[_0x2b73[467]]?this[_0x2b73[1126]]- this[_0x2b73[467]]:this[_0x2b73[1144]]?Math[_0x2b73[243]](0,this[_0x2b73[1126]]):0);this[_0x2b73[1125]]= _0xff22x5+ _0xff22xa- _0xff22x12[_0x2b73[190]]- _0xff22x12[_0x2b73[157]];0> this[_0x2b73[1125]]&& Math[_0x2b73[425]](this[_0x2b73[1125]])< this[_0x2b73[467]]?this[_0x2b73[1125]]= this[_0x2b73[467]]+ this[_0x2b73[1125]]:this[_0x2b73[1125]]= this[_0x2b73[1144]]?Math[_0x2b73[160]](this[_0x2b73[1125]],0):0;0== this[_0x2b73[1125]]&& (this[_0x2b73[1125]]= _0xff22x5- _0xff22x12[_0x2b73[190]],this[_0x2b73[1125]]= 0< this[_0x2b73[1125]]&& this[_0x2b73[1125]]< this[_0x2b73[467]]?this[_0x2b73[1125]]- this[_0x2b73[467]]:this[_0x2b73[1144]]?Math[_0x2b73[243]](0,this[_0x2b73[1125]]):0);0!= this[_0x2b73[1126]]|| 0!= this[_0x2b73[1125]]?(this[_0x2b73[1126]]*= this[_0x2b73[1145]],this[_0x2b73[1125]]*= this[_0x2b73[1145]],null== this[_0x2b73[1123]]&& (this[_0x2b73[1123]]= _0xff22x3())):null!= this[_0x2b73[1123]]&& (window[_0x2b73[1146]](this[_0x2b73[1123]]),this[_0x2b73[1123]]= null)};this[_0x2b73[1076]]= function(){if(this[_0x2b73[1124]]){if(this[_0x2b73[1124]]= !1,null!= this[_0x2b73[1123]]&& (window[_0x2b73[1146]](this[_0x2b73[1123]]),this[_0x2b73[1123]]= null),this[_0x2b73[1129]]= this[_0x2b73[1130]]= 0,this[_0x2b73[1131]]){_0xff22x2[_0x2b73[1136]]= 0,_0xff22x2[_0x2b73[1137]]= 0,_0xff22x2[_0x2b73[746]]( new mxEventObject(mxEvent.PAN))}else {var _0xff22x3=_0xff22x2[_0x2b73[1136]],_0xff22x5=_0xff22x2[_0x2b73[1137]];if(0!= _0xff22x3|| 0!= _0xff22x5){_0xff22x2[_0x2b73[1135]](0,0),_0xff22x2[_0x2b73[441]][_0x2b73[1147]](this[_0x2b73[1128]]+ _0xff22x3/ _0xff22x2[_0x2b73[441]][_0x2b73[255]],this[_0x2b73[1127]]+ _0xff22x5/ _0xff22x2[_0x2b73[441]][_0x2b73[255]])}}}};this[_0x2b73[515]]= function(){_0xff22x2[_0x2b73[1148]](this[_0x2b73[1132]])}}mxPanningManager[_0x2b73[202]][_0x2b73[1145]]= 1/ 6;mxPanningManager[_0x2b73[202]][_0x2b73[1140]]= 10;mxPanningManager[_0x2b73[202]][_0x2b73[1144]]= !0;mxPanningManager[_0x2b73[202]][_0x2b73[467]]= 0;function mxPopupMenu(_0xff22x2){this[_0x2b73[1033]]= _0xff22x2;null!= _0xff22x2&& this[_0x2b73[176]]()}mxPopupMenu[_0x2b73[202]]= new mxEventSource;mxPopupMenu[_0x2b73[202]][_0x2b73[196]]= mxPopupMenu;mxPopupMenu[_0x2b73[202]][_0x2b73[1149]]= mxClient[_0x2b73[88]]+ _0x2b73[1150];mxPopupMenu[_0x2b73[202]][_0x2b73[931]]= 10006;mxPopupMenu[_0x2b73[202]][_0x2b73[1033]]= null;mxPopupMenu[_0x2b73[202]][_0x2b73[1151]]= !1;mxPopupMenu[_0x2b73[202]][_0x2b73[984]]= !0;mxPopupMenu[_0x2b73[202]][_0x2b73[1152]]= 0;mxPopupMenu[_0x2b73[202]][_0x2b73[1153]]= !1;mxPopupMenu[_0x2b73[202]][_0x2b73[1154]]= !1;mxPopupMenu[_0x2b73[202]][_0x2b73[1155]]= !0;mxPopupMenu[_0x2b73[202]][_0x2b73[176]]= function(){this[_0x2b73[116]]= document[_0x2b73[55]](_0x2b73[116]);this[_0x2b73[116]][_0x2b73[926]]= _0x2b73[1156];this[_0x2b73[120]]= document[_0x2b73[55]](_0x2b73[120]);this[_0x2b73[116]][_0x2b73[62]](this[_0x2b73[120]]);this[_0x2b73[485]]= document[_0x2b73[55]](_0x2b73[485]);this[_0x2b73[485]][_0x2b73[926]]= _0x2b73[1156];this[_0x2b73[485]][_0x2b73[124]][_0x2b73[495]]= _0x2b73[497];this[_0x2b73[485]][_0x2b73[124]][_0x2b73[931]]= this[_0x2b73[931]];this[_0x2b73[485]][_0x2b73[62]](this[_0x2b73[116]]);mxEvent[_0x2b73[1157]](this[_0x2b73[485]])};mxPopupMenu[_0x2b73[202]][_0x2b73[994]]= function(){return this[_0x2b73[984]]};mxPopupMenu[_0x2b73[202]][_0x2b73[995]]= function(_0xff22x2){this[_0x2b73[984]]= _0xff22x2};mxPopupMenu[_0x2b73[202]][_0x2b73[737]]= function(_0xff22x2){return _0xff22x2[_0x2b73[737]]()|| this[_0x2b73[1151]]&& mxEvent[_0x2b73[1158]](_0xff22x2[_0x2b73[727]]())};mxPopupMenu[_0x2b73[202]][_0x2b73[1025]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa){_0xff22x5= _0xff22x5|| this;this[_0x2b73[1152]]++;_0xff22x5[_0x2b73[1159]]&& (_0xff22x5[_0x2b73[1160]]&& this[_0x2b73[1051]](_0xff22x5,!0),_0xff22x5[_0x2b73[1159]]= !1);_0xff22x5[_0x2b73[1160]]= !0;var _0xff22x12=document[_0x2b73[55]](_0x2b73[121]);_0xff22x12[_0x2b73[926]]= _0x2b73[1161];var _0xff22x13=document[_0x2b73[55]](_0x2b73[122]);_0xff22x13[_0x2b73[926]]= _0x2b73[1162];null!= _0xff22x3?(_0xff22x9= document[_0x2b73[55]](_0x2b73[466]),_0xff22x9[_0x2b73[390]]= _0xff22x3,_0xff22x13[_0x2b73[62]](_0xff22x9)):null!= _0xff22x9&& (_0xff22x3= document[_0x2b73[55]](_0x2b73[485]),_0xff22x3[_0x2b73[926]]= _0xff22x9,_0xff22x13[_0x2b73[62]](_0xff22x3));_0xff22x12[_0x2b73[62]](_0xff22x13);this[_0x2b73[1155]]&& (_0xff22x13= document[_0x2b73[55]](_0x2b73[122]),_0xff22x13[_0x2b73[926]]= _0x2b73[1161]+ (null!= _0xff22xa&& !_0xff22xa?_0x2b73[1163]:_0x2b73[110]),mxUtils[_0x2b73[53]](_0xff22x13,_0xff22x2),_0xff22x13[_0x2b73[611]]= _0x2b73[361],_0xff22x12[_0x2b73[62]](_0xff22x13),_0xff22x2= document[_0x2b73[55]](_0x2b73[122]),_0xff22x2[_0x2b73[926]]= _0x2b73[1161]+ (null!= _0xff22xa&& !_0xff22xa?_0x2b73[1163]:_0x2b73[110]),_0xff22x2[_0x2b73[124]][_0x2b73[1164]]= _0x2b73[1055],_0xff22x2[_0x2b73[124]][_0x2b73[1165]]= _0x2b73[699],_0xff22x12[_0x2b73[62]](_0xff22x2),null== _0xff22x5[_0x2b73[485]]&& this[_0x2b73[1166]](_0xff22x5));_0xff22x5[_0x2b73[120]][_0x2b73[62]](_0xff22x12);if(null== _0xff22xa|| _0xff22xa){mxEvent[_0x2b73[759]](_0xff22x12,mxUtils[_0x2b73[885]](this,function(_0xff22x2){this[_0x2b73[1167]]= _0xff22x12;_0xff22x5[_0x2b73[1168]]!= _0xff22x12&& _0xff22x5[_0x2b73[1168]]!= _0xff22x5&& (null!= _0xff22x5[_0x2b73[1168]]&& null!= _0xff22x5[_0x2b73[1168]][_0x2b73[485]][_0x2b73[265]]&& this[_0x2b73[1169]](_0xff22x5),null!= _0xff22x12[_0x2b73[485]]&& (this[_0x2b73[1170]](_0xff22x5,_0xff22x12),_0xff22x5[_0x2b73[1168]]= _0xff22x12));mxEvent[_0x2b73[722]](_0xff22x2)}),mxUtils[_0x2b73[885]](this,function(_0xff22x2){_0xff22x5[_0x2b73[1168]]!= _0xff22x12&& _0xff22x5[_0x2b73[1168]]!= _0xff22x5&& (null!= _0xff22x5[_0x2b73[1168]]&& null!= _0xff22x5[_0x2b73[1168]][_0x2b73[485]][_0x2b73[265]]&& this[_0x2b73[1169]](_0xff22x5),this[_0x2b73[1153]]&& null!= _0xff22x12[_0x2b73[485]]&& (this[_0x2b73[1170]](_0xff22x5,_0xff22x12),_0xff22x5[_0x2b73[1168]]= _0xff22x12));_0xff22x12[_0x2b73[926]]= _0x2b73[1171]}),mxUtils[_0x2b73[885]](this,function(_0xff22x2){this[_0x2b73[1167]]== _0xff22x12&& (_0xff22x5[_0x2b73[1168]]!= _0xff22x12&& this[_0x2b73[1032]](),null!= _0xff22x4&& _0xff22x4(_0xff22x2));this[_0x2b73[1167]]= null;mxEvent[_0x2b73[722]](_0xff22x2)})),mxEvent[_0x2b73[169]](_0xff22x12,_0x2b73[1035],mxUtils[_0x2b73[885]](this,function(_0xff22x2){_0xff22x12[_0x2b73[926]]= _0x2b73[1161]}))};return _0xff22x12};mxPopupMenu[_0x2b73[202]][_0x2b73[1166]]= function(_0xff22x2){_0xff22x2[_0x2b73[116]]= document[_0x2b73[55]](_0x2b73[116]);_0xff22x2[_0x2b73[116]][_0x2b73[926]]= _0x2b73[1156];_0xff22x2[_0x2b73[120]]= document[_0x2b73[55]](_0x2b73[120]);_0xff22x2[_0x2b73[116]][_0x2b73[62]](_0xff22x2[_0x2b73[120]]);_0xff22x2[_0x2b73[485]]= document[_0x2b73[55]](_0x2b73[485]);_0xff22x2[_0x2b73[485]][_0x2b73[926]]= _0x2b73[1156];_0xff22x2[_0x2b73[485]][_0x2b73[124]][_0x2b73[491]]= _0x2b73[492];_0xff22x2[_0x2b73[485]][_0x2b73[124]][_0x2b73[495]]= _0x2b73[497];_0xff22x2[_0x2b73[485]][_0x2b73[124]][_0x2b73[931]]= this[_0x2b73[931]];_0xff22x2[_0x2b73[485]][_0x2b73[62]](_0xff22x2[_0x2b73[116]]);var _0xff22x3=document[_0x2b73[55]](_0x2b73[466]);_0xff22x3[_0x2b73[57]](_0x2b73[390],this[_0x2b73[1149]]);td= _0xff22x2[_0x2b73[285]][_0x2b73[287]][_0x2b73[287]];td[_0x2b73[62]](_0xff22x3)};mxPopupMenu[_0x2b73[202]][_0x2b73[1170]]= function(_0xff22x2,_0xff22x3){if(null!= _0xff22x3[_0x2b73[485]]){_0xff22x3[_0x2b73[485]][_0x2b73[124]][_0x2b73[361]]= _0xff22x2[_0x2b73[485]][_0x2b73[358]]+ _0xff22x3[_0x2b73[358]]+ _0xff22x3[_0x2b73[359]]- 1+ _0x2b73[168];_0xff22x3[_0x2b73[485]][_0x2b73[124]][_0x2b73[125]]= _0xff22x2[_0x2b73[485]][_0x2b73[362]]+ _0xff22x3[_0x2b73[362]]+ _0x2b73[168];document[_0x2b73[112]][_0x2b73[62]](_0xff22x3[_0x2b73[485]]);var _0xff22x4=parseInt(_0xff22x3[_0x2b73[485]][_0x2b73[358]]),_0xff22x5=parseInt(_0xff22x3[_0x2b73[485]][_0x2b73[359]]),_0xff22x9=document[_0x2b73[112]],_0xff22xa=document[_0x2b73[158]];if(_0xff22x4+ _0xff22x5> (_0xff22x9[_0x2b73[360]]|| _0xff22xa[_0x2b73[360]])+ (_0xff22x9[_0x2b73[159]]|| _0xff22xa[_0x2b73[159]])){_0xff22x3[_0x2b73[485]][_0x2b73[124]][_0x2b73[361]]= _0xff22x2[_0x2b73[485]][_0x2b73[358]]- _0xff22x5+ (mxClient[_0x2b73[80]]?6:-6)+ _0x2b73[168]};mxUtils[_0x2b73[933]](_0xff22x3[_0x2b73[485]])}};mxPopupMenu[_0x2b73[202]][_0x2b73[1051]]= function(_0xff22x2,_0xff22x3){_0xff22x2= _0xff22x2|| this;if(this[_0x2b73[1154]]&& !_0xff22x3){_0xff22x2[_0x2b73[1159]]= !0}else {if(null!= _0xff22x2[_0x2b73[120]]){_0xff22x2[_0x2b73[1159]]= !1;var _0xff22x4=document[_0x2b73[55]](_0x2b73[121]),_0xff22x5=document[_0x2b73[55]](_0x2b73[122]);_0xff22x5[_0x2b73[926]]= _0x2b73[1162];_0xff22x5[_0x2b73[124]][_0x2b73[549]]= _0x2b73[1172];_0xff22x4[_0x2b73[62]](_0xff22x5);_0xff22x5= document[_0x2b73[55]](_0x2b73[122]);_0xff22x5[_0x2b73[124]][_0x2b73[549]]= _0x2b73[1172];_0xff22x5[_0x2b73[57]](_0x2b73[1173],_0x2b73[1174]);var _0xff22x9=document[_0x2b73[55]](_0x2b73[1054]);_0xff22x9[_0x2b73[57]](_0x2b73[803],_0x2b73[500]);_0xff22x5[_0x2b73[62]](_0xff22x9);_0xff22x4[_0x2b73[62]](_0xff22x5);_0xff22x2[_0x2b73[120]][_0x2b73[62]](_0xff22x4)}}};mxPopupMenu[_0x2b73[202]][_0x2b73[152]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){if(null!= this[_0x2b73[485]]&& null!= this[_0x2b73[120]]&& null!= this[_0x2b73[1033]]){this[_0x2b73[485]][_0x2b73[124]][_0x2b73[361]]= _0xff22x2+ _0x2b73[168];for(this[_0x2b73[485]][_0x2b73[124]][_0x2b73[125]]= _0xff22x3+ _0x2b73[168];null!= this[_0x2b73[120]][_0x2b73[285]];){mxEvent[_0x2b73[762]](this[_0x2b73[120]][_0x2b73[285]]),this[_0x2b73[120]][_0x2b73[266]](this[_0x2b73[120]][_0x2b73[285]])};this[_0x2b73[1152]]= 0;this[_0x2b73[1033]](this,_0xff22x4,_0xff22x5);0< this[_0x2b73[1152]]&& (this[_0x2b73[1175]](),this[_0x2b73[746]]( new mxEventObject(mxEvent.SHOW)))}};mxPopupMenu[_0x2b73[202]][_0x2b73[1031]]= function(){return null!= this[_0x2b73[485]]&& this[_0x2b73[485]][_0x2b73[265]]== document[_0x2b73[112]]};mxPopupMenu[_0x2b73[202]][_0x2b73[1175]]= function(){9<= document[_0x2b73[5]]&& (this[_0x2b73[485]][_0x2b73[124]][_0x2b73[347]]= _0x2b73[130]);document[_0x2b73[112]][_0x2b73[62]](this[_0x2b73[485]]);mxUtils[_0x2b73[933]](this[_0x2b73[485]])};mxPopupMenu[_0x2b73[202]][_0x2b73[1032]]= function(){null!= this[_0x2b73[485]]&& (null!= this[_0x2b73[485]][_0x2b73[265]]&& this[_0x2b73[485]][_0x2b73[265]][_0x2b73[266]](this[_0x2b73[485]]),this[_0x2b73[1169]](this),this[_0x2b73[1160]]= !1)};mxPopupMenu[_0x2b73[202]][_0x2b73[1169]]= function(_0xff22x2){null!= _0xff22x2[_0x2b73[1168]]&& (this[_0x2b73[1169]](_0xff22x2[_0x2b73[1168]]),null!= _0xff22x2[_0x2b73[1168]][_0x2b73[485]][_0x2b73[265]]&& _0xff22x2[_0x2b73[1168]][_0x2b73[485]][_0x2b73[265]][_0x2b73[266]](_0xff22x2[_0x2b73[1168]][_0x2b73[485]]),_0xff22x2[_0x2b73[1168]]= null)};mxPopupMenu[_0x2b73[202]][_0x2b73[515]]= function(){null!= this[_0x2b73[485]]&& (mxEvent[_0x2b73[762]](this[_0x2b73[485]]),null!= this[_0x2b73[485]][_0x2b73[265]]&& this[_0x2b73[485]][_0x2b73[265]][_0x2b73[266]](this[_0x2b73[485]]),this[_0x2b73[485]]= null)};function mxAutoSaveManager(_0xff22x2){this[_0x2b73[1176]]= mxUtils[_0x2b73[885]](this,function(_0xff22x2,_0xff22x4){this[_0x2b73[994]]()&& this[_0x2b73[1177]](_0xff22x4[_0x2b73[720]](_0x2b73[1061])[_0x2b73[1065]])});this[_0x2b73[1178]](_0xff22x2)}mxAutoSaveManager[_0x2b73[202]]= new mxEventSource;mxAutoSaveManager[_0x2b73[202]][_0x2b73[196]]= mxAutoSaveManager;mxAutoSaveManager[_0x2b73[202]][_0x2b73[1179]]= null;mxAutoSaveManager[_0x2b73[202]][_0x2b73[1180]]= 10;mxAutoSaveManager[_0x2b73[202]][_0x2b73[1181]]= 2;mxAutoSaveManager[_0x2b73[202]][_0x2b73[1182]]= 5;mxAutoSaveManager[_0x2b73[202]][_0x2b73[1183]]= 0;mxAutoSaveManager[_0x2b73[202]][_0x2b73[1184]]= 0;mxAutoSaveManager[_0x2b73[202]][_0x2b73[984]]= !0;mxAutoSaveManager[_0x2b73[202]][_0x2b73[1176]]= null;mxAutoSaveManager[_0x2b73[202]][_0x2b73[994]]= function(){return this[_0x2b73[984]]};mxAutoSaveManager[_0x2b73[202]][_0x2b73[995]]= function(_0xff22x2){this[_0x2b73[984]]= _0xff22x2};mxAutoSaveManager[_0x2b73[202]][_0x2b73[1178]]= function(_0xff22x2){null!= this[_0x2b73[1179]]&& this[_0x2b73[1179]][_0x2b73[502]]()[_0x2b73[745]](this[_0x2b73[1176]]);this[_0x2b73[1179]]= _0xff22x2;null!= this[_0x2b73[1179]]&& this[_0x2b73[1179]][_0x2b73[502]]()[_0x2b73[169]](mxEvent.CHANGE,this[_0x2b73[1176]])};mxAutoSaveManager[_0x2b73[202]][_0x2b73[815]]= function(){};mxAutoSaveManager[_0x2b73[202]][_0x2b73[1177]]= function(_0xff22x2){_0xff22x2= (( new Date)[_0x2b73[178]]()- this[_0x2b73[1184]])/ 1E3;_0xff22x2> this[_0x2b73[1180]]|| this[_0x2b73[1183]]>= this[_0x2b73[1182]]&& _0xff22x2> this[_0x2b73[1181]]?(this[_0x2b73[815]](),this[_0x2b73[862]]()):this[_0x2b73[1183]]++};mxAutoSaveManager[_0x2b73[202]][_0x2b73[862]]= function(){this[_0x2b73[1184]]= ( new Date)[_0x2b73[178]]();this[_0x2b73[1183]]= 0};mxAutoSaveManager[_0x2b73[202]][_0x2b73[515]]= function(){this[_0x2b73[1178]](null)};function mxAnimation(_0xff22x2){this[_0x2b73[1140]]= null!= _0xff22x2?_0xff22x2:20}mxAnimation[_0x2b73[202]]= new mxEventSource;mxAnimation[_0x2b73[202]][_0x2b73[196]]= mxAnimation;mxAnimation[_0x2b73[202]][_0x2b73[1140]]= null;mxAnimation[_0x2b73[202]][_0x2b73[1123]]= null;mxAnimation[_0x2b73[202]][_0x2b73[1185]]= function(){null== this[_0x2b73[1123]]&& (this[_0x2b73[1123]]= window[_0x2b73[1141]](mxUtils[_0x2b73[885]](this,this[_0x2b73[1186]]),this[_0x2b73[1140]]))};mxAnimation[_0x2b73[202]][_0x2b73[1186]]= function(){this[_0x2b73[746]]( new mxEventObject(mxEvent.EXECUTE))};mxAnimation[_0x2b73[202]][_0x2b73[1187]]= function(){null!= this[_0x2b73[1123]]&& (window[_0x2b73[1146]](this[_0x2b73[1123]]),this[_0x2b73[1123]]= null,this[_0x2b73[746]]( new mxEventObject(mxEvent.DONE)))};function mxMorphing(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){mxAnimation[_0x2b73[239]](this,_0xff22x5);this[_0x2b73[1179]]= _0xff22x2;this[_0x2b73[1188]]= null!= _0xff22x3?_0xff22x3:6;this[_0x2b73[1189]]= null!= _0xff22x4?_0xff22x4:1.5}mxMorphing[_0x2b73[202]]= new mxAnimation;mxMorphing[_0x2b73[202]][_0x2b73[196]]= mxMorphing;mxMorphing[_0x2b73[202]][_0x2b73[1179]]= null;mxMorphing[_0x2b73[202]][_0x2b73[1188]]= null;mxMorphing[_0x2b73[202]][_0x2b73[1190]]= 0;mxMorphing[_0x2b73[202]][_0x2b73[1189]]= null;mxMorphing[_0x2b73[202]][_0x2b73[895]]= null;mxMorphing[_0x2b73[202]][_0x2b73[1186]]= function(){var _0xff22x2= new mxCellStatePreview(this[_0x2b73[1179]]);if(null!= this[_0x2b73[895]]){for(var _0xff22x3=0;_0xff22x3< this[_0x2b73[895]][_0x2b73[67]];_0xff22x3++){this[_0x2b73[1191]](cells[_0xff22x3],_0xff22x2,!1)}}else {this[_0x2b73[1191]](this[_0x2b73[1179]][_0x2b73[502]]()[_0x2b73[501]](),_0xff22x2,!0)};this[_0x2b73[539]](_0xff22x2);(_0xff22x2[_0x2b73[1107]]()|| this[_0x2b73[1190]]++ >= this[_0x2b73[1188]])&& this[_0x2b73[1187]]()};mxMorphing[_0x2b73[202]][_0x2b73[539]]= function(_0xff22x2){_0xff22x2[_0x2b73[539]]()};mxMorphing[_0x2b73[202]][_0x2b73[1191]]= function(_0xff22x2,_0xff22x3,_0xff22x4){var _0xff22x5=this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[248]](_0xff22x2),_0xff22x9=null;if(null!= _0xff22x5&& (_0xff22x9= this[_0x2b73[1192]](_0xff22x5),this[_0x2b73[1179]][_0x2b73[502]]()[_0x2b73[1193]](_0xff22x2)&& (0!= _0xff22x9[_0x2b73[235]]|| 0!= _0xff22x9[_0x2b73[236]]))){var _0xff22xa=this[_0x2b73[1179]][_0x2b73[441]][_0x2b73[512]](),_0xff22x12=this[_0x2b73[1179]][_0x2b73[441]][_0x2b73[518]]();_0xff22x9[_0x2b73[235]]+= _0xff22xa[_0x2b73[235]]* _0xff22x12;_0xff22x9[_0x2b73[236]]+= _0xff22xa[_0x2b73[236]]* _0xff22x12;_0xff22x3[_0x2b73[1194]](_0xff22x5,-_0xff22x9[_0x2b73[235]]/ this[_0x2b73[1189]],-_0xff22x9[_0x2b73[236]]/ this[_0x2b73[1189]])};if(_0xff22x4&& !this[_0x2b73[1195]](_0xff22x5,_0xff22x9)){_0xff22x5= this[_0x2b73[1179]][_0x2b73[502]]()[_0x2b73[262]](_0xff22x2);for(_0xff22x9= 0;_0xff22x9< _0xff22x5;_0xff22x9++){this[_0x2b73[1191]](this[_0x2b73[1179]][_0x2b73[502]]()[_0x2b73[263]](_0xff22x2,_0xff22x9),_0xff22x3,_0xff22x4)}}};mxMorphing[_0x2b73[202]][_0x2b73[1195]]= function(_0xff22x2,_0xff22x3){return null!= _0xff22x3&& (0!= _0xff22x3[_0x2b73[235]]|| 0!= _0xff22x3[_0x2b73[236]])};mxMorphing[_0x2b73[202]][_0x2b73[1192]]= function(_0xff22x2){var _0xff22x3=this[_0x2b73[1196]](_0xff22x2[_0x2b73[246]]),_0xff22x4=this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[512]](),_0xff22x5=this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[518]]();_0xff22x2= new mxPoint(_0xff22x2[_0x2b73[235]]/ _0xff22x5- _0xff22x4[_0x2b73[235]],_0xff22x2[_0x2b73[236]]/ _0xff22x5- _0xff22x4[_0x2b73[236]]);return new mxPoint((_0xff22x3[_0x2b73[235]]- _0xff22x2[_0x2b73[235]])* _0xff22x5,(_0xff22x3[_0x2b73[236]]- _0xff22x2[_0x2b73[236]])* _0xff22x5)};mxMorphing[_0x2b73[202]][_0x2b73[1196]]= function(_0xff22x2){var _0xff22x3=null;null!= _0xff22x2&& (_0xff22x3= this[_0x2b73[1196]](this[_0x2b73[1179]][_0x2b73[502]]()[_0x2b73[1197]](_0xff22x2)),_0xff22x2= this[_0x2b73[1179]][_0x2b73[1198]](_0xff22x2),null!= _0xff22x2&& (_0xff22x3[_0x2b73[235]]+= _0xff22x2[_0x2b73[235]],_0xff22x3[_0x2b73[236]]+= _0xff22x2[_0x2b73[236]]));null== _0xff22x3&& (_0xff22x3= this[_0x2b73[1179]][_0x2b73[441]][_0x2b73[512]](),_0xff22x3= new mxPoint(-_0xff22x3[_0x2b73[235]],-_0xff22x3[_0x2b73[236]]));return _0xff22x3};function mxImageBundle(_0xff22x2){this[_0x2b73[1199]]= [];this[_0x2b73[1200]]= null!= _0xff22x2?_0xff22x2:!1}mxImageBundle[_0x2b73[202]][_0x2b73[1199]]= null;mxImageBundle[_0x2b73[202]][_0x2b73[1199]]= null;mxImageBundle[_0x2b73[202]][_0x2b73[1201]]= function(_0xff22x2,_0xff22x3,_0xff22x4){this[_0x2b73[1199]][_0xff22x2]= {value:_0xff22x3,fallback:_0xff22x4}};mxImageBundle[_0x2b73[202]][_0x2b73[1202]]= function(_0xff22x2){var _0xff22x3=null;null!= _0xff22x2&& (_0xff22x2= this[_0x2b73[1199]][_0xff22x2],null!= _0xff22x2&& (_0xff22x3= this[_0x2b73[1200]]?_0xff22x2[_0x2b73[1203]]:_0xff22x2[_0x2b73[131]]));return _0xff22x3};function mxImageExport(){}mxImageExport[_0x2b73[202]][_0x2b73[1204]]= !1;mxImageExport[_0x2b73[202]][_0x2b73[1205]]= function(_0xff22x2,_0xff22x3){null!= _0xff22x2&& (this[_0x2b73[1207]](_0xff22x2,_0xff22x3,this[_0x2b73[1206]]),this[_0x2b73[1204]]&& this[_0x2b73[1207]](_0xff22x2,_0xff22x3,this[_0x2b73[1208]]))};mxImageExport[_0x2b73[202]][_0x2b73[1207]]= function(_0xff22x2,_0xff22x3,_0xff22x4){if(null!= _0xff22x2){_0xff22x4(_0xff22x2,_0xff22x3);for(var _0xff22x5=_0xff22x2[_0x2b73[441]][_0x2b73[1179]],_0xff22x9=_0xff22x5[_0x2b73[251]][_0x2b73[262]](_0xff22x2[_0x2b73[246]]),_0xff22xa=0;_0xff22xa< _0xff22x9;_0xff22xa++){var _0xff22x12=_0xff22x5[_0x2b73[441]][_0x2b73[248]](_0xff22x5[_0x2b73[251]][_0x2b73[263]](_0xff22x2[_0x2b73[246]],_0xff22xa));this[_0x2b73[1207]](_0xff22x12,_0xff22x3,_0xff22x4)}}};mxImageExport[_0x2b73[202]][_0x2b73[1206]]= function(_0xff22x2,_0xff22x3){_0xff22x2[_0x2b73[253]] instanceof mxShape&& (_0xff22x3[_0x2b73[815]](),_0xff22x2[_0x2b73[253]][_0x2b73[1209]](_0xff22x3),_0xff22x3[_0x2b73[1210]]());null!= _0xff22x2[_0x2b73[963]]&& (_0xff22x3[_0x2b73[815]](),_0xff22x2[_0x2b73[963]][_0x2b73[1209]](_0xff22x3),_0xff22x3[_0x2b73[1210]]())};mxImageExport[_0x2b73[202]][_0x2b73[1208]]= function(_0xff22x2,_0xff22x3){null!= _0xff22x2[_0x2b73[1211]]&& _0xff22x2[_0x2b73[1211]][_0x2b73[209]](function(_0xff22x2,_0xff22x5){_0xff22x5 instanceof mxShape&& _0xff22x5[_0x2b73[1209]](_0xff22x3)})};function mxAbstractCanvas2D(){this[_0x2b73[1212]]= this[_0x2b73[1213]]();this[_0x2b73[862]]()}mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[724]]= null;mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1214]]= null;mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1215]]= null;mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1216]]= !0;mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1217]]= 0;mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1218]]= 0;mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1219]]= _0x2b73[1220];mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1221]]= _0x2b73[1222];mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1223]]= _0x2b73[1224];mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1225]]= _0x2b73[1226];mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1227]]= _0x2b73[1228];mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1229]]= !1;mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1213]]= function(){return new mxUrlConverter};mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[862]]= function(){this[_0x2b73[724]]= this[_0x2b73[1230]]();this[_0x2b73[1214]]= []};mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1230]]= 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:_0x2b73[1231],lineCap:_0x2b73[1232],lineJoin:_0x2b73[1233],miterLimit:10,fontColor:_0x2b73[1234],fontBackgroundColor:null,fontBorderColor:null,fontSize:mxConstants[_0x2b73[483]],fontFamily:mxConstants[_0x2b73[484]],fontStyle:0,shadow:!1,shadowColor:mxConstants[_0x2b73[1235]],shadowAlpha:mxConstants[_0x2b73[1236]],shadowDx:mxConstants[_0x2b73[1237]],shadowDy:mxConstants[_0x2b73[1238]],rotation:0,rotationCx:0,rotationCy:0}};mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1239]]= function(_0xff22x2){return Math[_0x2b73[488]](parseFloat(_0xff22x2))};mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1240]]= function(){if(null!= this[_0x2b73[1215]]&& (this[_0x2b73[1215]][_0x2b73[207]](arguments[0]),2< arguments[_0x2b73[67]])){for(var _0xff22x2=this[_0x2b73[724]],_0xff22x3=2;_0xff22x3< arguments[_0x2b73[67]];_0xff22x3+= 2){this[_0x2b73[1217]]= arguments[_0xff22x3- 1],this[_0x2b73[1218]]= arguments[_0xff22x3],this[_0x2b73[1215]][_0x2b73[207]](this[_0x2b73[1239]]((this[_0x2b73[1217]]+ _0xff22x2[_0x2b73[1126]])* _0xff22x2[_0x2b73[255]])),this[_0x2b73[1215]][_0x2b73[207]](this[_0x2b73[1239]]((this[_0x2b73[1218]]+ _0xff22x2[_0x2b73[1125]])* _0xff22x2[_0x2b73[255]]))}}};mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1241]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){_0xff22x4*= Math[_0x2b73[424]]/ 180;return mxUtils[_0x2b73[432]]( new mxPoint(_0xff22x2,_0xff22x3),Math[_0x2b73[426]](_0xff22x4),Math[_0x2b73[427]](_0xff22x4), new mxPoint(_0xff22x5,_0xff22x9))};mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[815]]= function(){this[_0x2b73[1214]][_0x2b73[207]](this[_0x2b73[724]]);this[_0x2b73[724]]= mxUtils[_0x2b73[238]](this[_0x2b73[724]])};mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1210]]= function(){this[_0x2b73[724]]= this[_0x2b73[1214]][_0x2b73[1242]]()};mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[255]]= function(_0xff22x2){this[_0x2b73[724]][_0x2b73[255]]*= _0xff22x2;this[_0x2b73[724]][_0x2b73[610]]*= _0xff22x2};mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[513]]= function(_0xff22x2,_0xff22x3){this[_0x2b73[724]][_0x2b73[1126]]+= _0xff22x2;this[_0x2b73[724]][_0x2b73[1125]]+= _0xff22x3};mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1243]]= function(_0xff22x2){this[_0x2b73[724]][_0x2b73[1244]]= _0xff22x2};mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1245]]= function(_0xff22x2){_0xff22x2== mxConstants[_0x2b73[217]]&& (_0xff22x2= null);this[_0x2b73[724]][_0x2b73[604]]= _0xff22x2;this[_0x2b73[724]][_0x2b73[606]]= null};mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1246]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa,_0xff22x12,_0xff22x13,_0xff22x14){_0xff22x4= this[_0x2b73[724]];_0xff22x4[_0x2b73[604]]= _0xff22x2;_0xff22x4[_0x2b73[1247]]= null!= _0xff22x13?_0xff22x13:1;_0xff22x4[_0x2b73[606]]= _0xff22x3;_0xff22x4[_0x2b73[1248]]= null!= _0xff22x14?_0xff22x14:1;_0xff22x4[_0x2b73[607]]= _0xff22x12};mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1249]]= function(_0xff22x2){_0xff22x2== mxConstants[_0x2b73[217]]&& (_0xff22x2= null);this[_0x2b73[724]][_0x2b73[608]]= _0xff22x2};mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1250]]= function(_0xff22x2){this[_0x2b73[724]][_0x2b73[610]]= _0xff22x2};mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1251]]= function(_0xff22x2){this[_0x2b73[724]][_0x2b73[648]]= _0xff22x2};mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1252]]= function(_0xff22x2){this[_0x2b73[724]][_0x2b73[649]]= _0xff22x2};mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1253]]= function(_0xff22x2){this[_0x2b73[724]][_0x2b73[1254]]= _0xff22x2};mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1255]]= function(_0xff22x2){this[_0x2b73[724]][_0x2b73[1256]]= _0xff22x2};mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1257]]= function(_0xff22x2){this[_0x2b73[724]][_0x2b73[1258]]= _0xff22x2};mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1259]]= function(_0xff22x2){_0xff22x2== mxConstants[_0x2b73[217]]&& (_0xff22x2= null);this[_0x2b73[724]][_0x2b73[665]]= _0xff22x2};mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1260]]= function(_0xff22x2){_0xff22x2== mxConstants[_0x2b73[217]]&& (_0xff22x2= null);this[_0x2b73[724]][_0x2b73[1261]]= _0xff22x2};mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1262]]= function(_0xff22x2){_0xff22x2== mxConstants[_0x2b73[217]]&& (_0xff22x2= null);this[_0x2b73[724]][_0x2b73[1263]]= _0xff22x2};mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1264]]= function(_0xff22x2){this[_0x2b73[724]][_0x2b73[487]]= _0xff22x2};mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1265]]= function(_0xff22x2){this[_0x2b73[724]][_0x2b73[486]]= _0xff22x2};mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1266]]= function(_0xff22x2){null== _0xff22x2&& (_0xff22x2= 0);this[_0x2b73[724]][_0x2b73[666]]= _0xff22x2};mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1267]]= function(_0xff22x2){this[_0x2b73[724]][_0x2b73[639]]= _0xff22x2};mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1268]]= function(_0xff22x2){_0xff22x2== mxConstants[_0x2b73[217]]&& (_0xff22x2= null);this[_0x2b73[724]][_0x2b73[1269]]= _0xff22x2};mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1270]]= function(_0xff22x2){this[_0x2b73[724]][_0x2b73[1271]]= _0xff22x2};mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1272]]= function(_0xff22x2,_0xff22x3){this[_0x2b73[724]][_0x2b73[1273]]= _0xff22x2;this[_0x2b73[724]][_0x2b73[1274]]= _0xff22x3};mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1275]]= function(){this[_0x2b73[1218]]= this[_0x2b73[1217]]= 0;this[_0x2b73[1215]]= []};mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1276]]= function(_0xff22x2,_0xff22x3){this[_0x2b73[1240]](this[_0x2b73[1219]],_0xff22x2,_0xff22x3)};mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1277]]= function(_0xff22x2,_0xff22x3){this[_0x2b73[1240]](this[_0x2b73[1221]],_0xff22x2,_0xff22x3)};mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1278]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){this[_0x2b73[1240]](this[_0x2b73[1223]],_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5)};mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1279]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa){this[_0x2b73[1240]](this[_0x2b73[1225]],_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa)};mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1280]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa,_0xff22x12){_0xff22x2= mxUtils[_0x2b73[1281]](this[_0x2b73[1217]],this[_0x2b73[1218]],_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa,_0xff22x12);for(_0xff22x3= 0;_0xff22x3< _0xff22x2[_0x2b73[67]];_0xff22x3+= 6){this[_0x2b73[1279]](_0xff22x2[_0xff22x3],_0xff22x2[_0xff22x3+ 1],_0xff22x2[_0xff22x3+ 2],_0xff22x2[_0xff22x3+ 3],_0xff22x2[_0xff22x3+ 4],_0xff22x2[_0xff22x3+ 5])}};mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[268]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa){this[_0x2b73[1240]](this[_0x2b73[1227]])};mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1282]]= function(){};function mxXmlCanvas2D(_0xff22x2){mxAbstractCanvas2D[_0x2b73[239]](this);this[_0x2b73[813]]= _0xff22x2;this[_0x2b73[1283]]()}mxUtils[_0x2b73[1284]](mxXmlCanvas2D,mxAbstractCanvas2D);mxXmlCanvas2D[_0x2b73[202]][_0x2b73[1285]]= !0;mxXmlCanvas2D[_0x2b73[202]][_0x2b73[1286]]= !0;mxXmlCanvas2D[_0x2b73[202]][_0x2b73[1283]]= function(){var _0xff22x2;_0xff22x2= this[_0x2b73[55]](_0x2b73[1287]);_0xff22x2[_0x2b73[57]](_0x2b73[1288],mxConstants.DEFAULT_FONTFAMILY);this[_0x2b73[813]][_0x2b73[62]](_0xff22x2);_0xff22x2= this[_0x2b73[55]](_0x2b73[1289]);_0xff22x2[_0x2b73[57]](_0x2b73[803],mxConstants.DEFAULT_FONTSIZE);this[_0x2b73[813]][_0x2b73[62]](_0xff22x2);_0xff22x2= this[_0x2b73[55]](_0x2b73[1290]);_0xff22x2[_0x2b73[57]](_0x2b73[352],mxConstants.SHADOWCOLOR);this[_0x2b73[813]][_0x2b73[62]](_0xff22x2);_0xff22x2= this[_0x2b73[55]](_0x2b73[1291]);_0xff22x2[_0x2b73[57]](_0x2b73[1244],mxConstants.SHADOW_OPACITY);this[_0x2b73[813]][_0x2b73[62]](_0xff22x2);_0xff22x2= this[_0x2b73[55]](_0x2b73[1292]);_0xff22x2[_0x2b73[57]](_0x2b73[1126],mxConstants.SHADOW_OFFSET_X);_0xff22x2[_0x2b73[57]](_0x2b73[1125],mxConstants.SHADOW_OFFSET_Y);this[_0x2b73[813]][_0x2b73[62]](_0xff22x2)};mxXmlCanvas2D[_0x2b73[202]][_0x2b73[1239]]= function(_0xff22x2){return parseFloat(parseFloat(_0xff22x2)[_0x2b73[1293]](2))};mxXmlCanvas2D[_0x2b73[202]][_0x2b73[55]]= function(_0xff22x2){return this[_0x2b73[813]][_0x2b73[295]][_0x2b73[55]](_0xff22x2)};mxXmlCanvas2D[_0x2b73[202]][_0x2b73[815]]= function(){this[_0x2b73[1286]]&& mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[815]][_0x2b73[183]](this,arguments);this[_0x2b73[813]][_0x2b73[62]](this[_0x2b73[55]](_0x2b73[815]))};mxXmlCanvas2D[_0x2b73[202]][_0x2b73[1210]]= function(){this[_0x2b73[1286]]&& mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1210]][_0x2b73[183]](this,arguments);this[_0x2b73[813]][_0x2b73[62]](this[_0x2b73[55]](_0x2b73[1210]))};mxXmlCanvas2D[_0x2b73[202]][_0x2b73[255]]= function(_0xff22x2){if(this[_0x2b73[1286]]){if(this[_0x2b73[724]][_0x2b73[255]]== _0xff22x2){return};mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1243]][_0x2b73[183]](this,arguments)};var _0xff22x3=this[_0x2b73[55]](_0x2b73[255]);_0xff22x3[_0x2b73[57]](_0x2b73[255],_0xff22x2);this[_0x2b73[813]][_0x2b73[62]](_0xff22x3)};mxXmlCanvas2D[_0x2b73[202]][_0x2b73[513]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=this[_0x2b73[55]](_0x2b73[513]);_0xff22x4[_0x2b73[57]](_0x2b73[1126],this[_0x2b73[1239]](_0xff22x2));_0xff22x4[_0x2b73[57]](_0x2b73[1125],this[_0x2b73[1239]](_0xff22x3));this[_0x2b73[813]][_0x2b73[62]](_0xff22x4)};mxXmlCanvas2D[_0x2b73[202]][_0x2b73[1294]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){var _0xff22xa=this[_0x2b73[55]](_0x2b73[1294]);if(0!= _0xff22x2|| _0xff22x3|| _0xff22x4){_0xff22xa[_0x2b73[57]](_0x2b73[1295],this[_0x2b73[1239]](_0xff22x2)),_0xff22xa[_0x2b73[57]](_0x2b73[623],_0xff22x3?_0x2b73[500]:_0x2b73[468]),_0xff22xa[_0x2b73[57]](_0x2b73[624],_0xff22x4?_0x2b73[500]:_0x2b73[468]),_0xff22xa[_0x2b73[57]](_0x2b73[1296],this[_0x2b73[1239]](_0xff22x5)),_0xff22xa[_0x2b73[57]](_0x2b73[1297],this[_0x2b73[1239]](_0xff22x9)),this[_0x2b73[813]][_0x2b73[62]](_0xff22xa)}};mxXmlCanvas2D[_0x2b73[202]][_0x2b73[1243]]= function(_0xff22x2){if(this[_0x2b73[1286]]){if(this[_0x2b73[724]][_0x2b73[1244]]== _0xff22x2){return};mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1243]][_0x2b73[183]](this,arguments)};var _0xff22x3=this[_0x2b73[55]](_0x2b73[1244]);_0xff22x3[_0x2b73[57]](_0x2b73[1244],this[_0x2b73[1239]](_0xff22x2));this[_0x2b73[813]][_0x2b73[62]](_0xff22x3)};mxXmlCanvas2D[_0x2b73[202]][_0x2b73[1245]]= function(_0xff22x2){_0xff22x2== mxConstants[_0x2b73[217]]&& (_0xff22x2= null);if(this[_0x2b73[1286]]){if(this[_0x2b73[724]][_0x2b73[604]]== _0xff22x2){return};mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1245]][_0x2b73[183]](this,arguments)};var _0xff22x3=this[_0x2b73[55]](_0x2b73[1298]);_0xff22x3[_0x2b73[57]](_0x2b73[352],null!= _0xff22x2?_0xff22x2:mxConstants[_0x2b73[217]]);this[_0x2b73[813]][_0x2b73[62]](_0xff22x3)};mxXmlCanvas2D[_0x2b73[202]][_0x2b73[1246]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa,_0xff22x12,_0xff22x13,_0xff22x14){if(null!= _0xff22x2&& null!= _0xff22x3){mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1246]][_0x2b73[183]](this,arguments);var _0xff22x15=this[_0x2b73[55]](_0x2b73[1299]);_0xff22x15[_0x2b73[57]](_0x2b73[1300],_0xff22x2);_0xff22x15[_0x2b73[57]](_0x2b73[1301],_0xff22x3);_0xff22x15[_0x2b73[57]](_0x2b73[235],this[_0x2b73[1239]](_0xff22x4));_0xff22x15[_0x2b73[57]](_0x2b73[236],this[_0x2b73[1239]](_0xff22x5));_0xff22x15[_0x2b73[57]](_0x2b73[1302],this[_0x2b73[1239]](_0xff22x9));_0xff22x15[_0x2b73[57]](_0x2b73[1303],this[_0x2b73[1239]](_0xff22xa));null!= _0xff22x12&& _0xff22x15[_0x2b73[57]](_0x2b73[663],_0xff22x12);null!= _0xff22x13&& _0xff22x15[_0x2b73[57]](_0x2b73[1304],_0xff22x13);null!= _0xff22x14&& _0xff22x15[_0x2b73[57]](_0x2b73[1305],_0xff22x14);this[_0x2b73[813]][_0x2b73[62]](_0xff22x15)}};mxXmlCanvas2D[_0x2b73[202]][_0x2b73[1249]]= function(_0xff22x2){_0xff22x2== mxConstants[_0x2b73[217]]&& (_0xff22x2= null);if(this[_0x2b73[1286]]){if(this[_0x2b73[724]][_0x2b73[608]]== _0xff22x2){return};mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1249]][_0x2b73[183]](this,arguments)};var _0xff22x3=this[_0x2b73[55]](_0x2b73[1306]);_0xff22x3[_0x2b73[57]](_0x2b73[352],null!= _0xff22x2?_0xff22x2:mxConstants[_0x2b73[217]]);this[_0x2b73[813]][_0x2b73[62]](_0xff22x3)};mxXmlCanvas2D[_0x2b73[202]][_0x2b73[1250]]= function(_0xff22x2){if(this[_0x2b73[1286]]){if(this[_0x2b73[724]][_0x2b73[610]]== _0xff22x2){return};mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1250]][_0x2b73[183]](this,arguments)};var _0xff22x3=this[_0x2b73[55]](_0x2b73[1307]);_0xff22x3[_0x2b73[57]](_0x2b73[117],this[_0x2b73[1239]](_0xff22x2));this[_0x2b73[813]][_0x2b73[62]](_0xff22x3)};mxXmlCanvas2D[_0x2b73[202]][_0x2b73[1251]]= function(_0xff22x2){if(this[_0x2b73[1286]]){if(this[_0x2b73[724]][_0x2b73[648]]== _0xff22x2){return};mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1251]][_0x2b73[183]](this,arguments)};var _0xff22x3=this[_0x2b73[55]](_0x2b73[648]);_0xff22x3[_0x2b73[57]](_0x2b73[648],_0xff22x2?_0x2b73[500]:_0x2b73[468]);this[_0x2b73[813]][_0x2b73[62]](_0xff22x3)};mxXmlCanvas2D[_0x2b73[202]][_0x2b73[1252]]= function(_0xff22x2){if(this[_0x2b73[1286]]){if(this[_0x2b73[724]][_0x2b73[649]]== _0xff22x2){return};mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1252]][_0x2b73[183]](this,arguments)};var _0xff22x3=this[_0x2b73[55]](_0x2b73[1308]);_0xff22x3[_0x2b73[57]](_0x2b73[1309],_0xff22x2);this[_0x2b73[813]][_0x2b73[62]](_0xff22x3)};mxXmlCanvas2D[_0x2b73[202]][_0x2b73[1253]]= function(_0xff22x2){if(this[_0x2b73[1286]]){if(this[_0x2b73[724]][_0x2b73[1254]]== _0xff22x2){return};mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1253]][_0x2b73[183]](this,arguments)};var _0xff22x3=this[_0x2b73[55]](_0x2b73[1310]);_0xff22x3[_0x2b73[57]](_0x2b73[1311],_0xff22x2);this[_0x2b73[813]][_0x2b73[62]](_0xff22x3)};mxXmlCanvas2D[_0x2b73[202]][_0x2b73[1255]]= function(_0xff22x2){if(this[_0x2b73[1286]]){if(this[_0x2b73[724]][_0x2b73[1256]]== _0xff22x2){return};mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1255]][_0x2b73[183]](this,arguments)};var _0xff22x3=this[_0x2b73[55]](_0x2b73[1312]);_0xff22x3[_0x2b73[57]](_0x2b73[234],_0xff22x2);this[_0x2b73[813]][_0x2b73[62]](_0xff22x3)};mxXmlCanvas2D[_0x2b73[202]][_0x2b73[1257]]= function(_0xff22x2){if(this[_0x2b73[1286]]){if(this[_0x2b73[724]][_0x2b73[1258]]== _0xff22x2){return};mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1257]][_0x2b73[183]](this,arguments)};var _0xff22x3=this[_0x2b73[55]](_0x2b73[1313]);_0xff22x3[_0x2b73[57]](_0x2b73[1314],_0xff22x2);this[_0x2b73[813]][_0x2b73[62]](_0xff22x3)};mxXmlCanvas2D[_0x2b73[202]][_0x2b73[1259]]= function(_0xff22x2){if(this[_0x2b73[1285]]){_0xff22x2== mxConstants[_0x2b73[217]]&& (_0xff22x2= null);if(this[_0x2b73[1286]]){if(this[_0x2b73[724]][_0x2b73[665]]== _0xff22x2){return};mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1259]][_0x2b73[183]](this,arguments)};var _0xff22x3=this[_0x2b73[55]](_0x2b73[1315]);_0xff22x3[_0x2b73[57]](_0x2b73[352],null!= _0xff22x2?_0xff22x2:mxConstants[_0x2b73[217]]);this[_0x2b73[813]][_0x2b73[62]](_0xff22x3)}};mxXmlCanvas2D[_0x2b73[202]][_0x2b73[1260]]= function(_0xff22x2){if(this[_0x2b73[1285]]){_0xff22x2== mxConstants[_0x2b73[217]]&& (_0xff22x2= null);if(this[_0x2b73[1286]]){if(this[_0x2b73[724]][_0x2b73[1261]]== _0xff22x2){return};mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1260]][_0x2b73[183]](this,arguments)};var _0xff22x3=this[_0x2b73[55]](_0x2b73[1316]);_0xff22x3[_0x2b73[57]](_0x2b73[352],null!= _0xff22x2?_0xff22x2:mxConstants[_0x2b73[217]]);this[_0x2b73[813]][_0x2b73[62]](_0xff22x3)}};mxXmlCanvas2D[_0x2b73[202]][_0x2b73[1262]]= function(_0xff22x2){if(this[_0x2b73[1285]]){_0xff22x2== mxConstants[_0x2b73[217]]&& (_0xff22x2= null);if(this[_0x2b73[1286]]){if(this[_0x2b73[724]][_0x2b73[1263]]== _0xff22x2){return};mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1262]][_0x2b73[183]](this,arguments)};var _0xff22x3=this[_0x2b73[55]](_0x2b73[1317]);_0xff22x3[_0x2b73[57]](_0x2b73[352],null!= _0xff22x2?_0xff22x2:mxConstants[_0x2b73[217]]);this[_0x2b73[813]][_0x2b73[62]](_0xff22x3)}};mxXmlCanvas2D[_0x2b73[202]][_0x2b73[1264]]= function(_0xff22x2){if(this[_0x2b73[1285]]){if(this[_0x2b73[1286]]){if(this[_0x2b73[724]][_0x2b73[487]]== _0xff22x2){return};mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1264]][_0x2b73[183]](this,arguments)};var _0xff22x3=this[_0x2b73[55]](_0x2b73[1289]);_0xff22x3[_0x2b73[57]](_0x2b73[803],_0xff22x2);this[_0x2b73[813]][_0x2b73[62]](_0xff22x3)}};mxXmlCanvas2D[_0x2b73[202]][_0x2b73[1265]]= function(_0xff22x2){if(this[_0x2b73[1285]]){if(this[_0x2b73[1286]]){if(this[_0x2b73[724]][_0x2b73[486]]== _0xff22x2){return};mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1265]][_0x2b73[183]](this,arguments)};var _0xff22x3=this[_0x2b73[55]](_0x2b73[1287]);_0xff22x3[_0x2b73[57]](_0x2b73[1288],_0xff22x2);this[_0x2b73[813]][_0x2b73[62]](_0xff22x3)}};mxXmlCanvas2D[_0x2b73[202]][_0x2b73[1266]]= function(_0xff22x2){if(this[_0x2b73[1285]]){null== _0xff22x2&& (_0xff22x2= 0);if(this[_0x2b73[1286]]){if(this[_0x2b73[724]][_0x2b73[666]]== _0xff22x2){return};mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1266]][_0x2b73[183]](this,arguments)};var _0xff22x3=this[_0x2b73[55]](_0x2b73[1318]);_0xff22x3[_0x2b73[57]](_0x2b73[124],_0xff22x2);this[_0x2b73[813]][_0x2b73[62]](_0xff22x3)}};mxXmlCanvas2D[_0x2b73[202]][_0x2b73[1267]]= function(_0xff22x2){if(this[_0x2b73[1286]]){if(this[_0x2b73[724]][_0x2b73[639]]== _0xff22x2){return};mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1267]][_0x2b73[183]](this,arguments)};var _0xff22x3=this[_0x2b73[55]](_0x2b73[639]);_0xff22x3[_0x2b73[57]](_0x2b73[984],_0xff22x2?_0x2b73[500]:_0x2b73[468]);this[_0x2b73[813]][_0x2b73[62]](_0xff22x3)};mxXmlCanvas2D[_0x2b73[202]][_0x2b73[1268]]= function(_0xff22x2){if(this[_0x2b73[1286]]){_0xff22x2== mxConstants[_0x2b73[217]]&& (_0xff22x2= null);if(this[_0x2b73[724]][_0x2b73[1269]]== _0xff22x2){return};mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1268]][_0x2b73[183]](this,arguments)};var _0xff22x3=this[_0x2b73[55]](_0x2b73[1290]);_0xff22x3[_0x2b73[57]](_0x2b73[352],null!= _0xff22x2?_0xff22x2:mxConstants[_0x2b73[217]]);this[_0x2b73[813]][_0x2b73[62]](_0xff22x3)};mxXmlCanvas2D[_0x2b73[202]][_0x2b73[1270]]= function(_0xff22x2){if(this[_0x2b73[1286]]){if(this[_0x2b73[724]][_0x2b73[1271]]== _0xff22x2){return};mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1270]][_0x2b73[183]](this,arguments)};var _0xff22x3=this[_0x2b73[55]](_0x2b73[1291]);_0xff22x3[_0x2b73[57]](_0x2b73[1244],_0xff22x2);this[_0x2b73[813]][_0x2b73[62]](_0xff22x3)};mxXmlCanvas2D[_0x2b73[202]][_0x2b73[1272]]= function(_0xff22x2,_0xff22x3){if(this[_0x2b73[1286]]){if(this[_0x2b73[724]][_0x2b73[1273]]== _0xff22x2&& this[_0x2b73[724]][_0x2b73[1274]]== _0xff22x3){return};mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1272]][_0x2b73[183]](this,arguments)};var _0xff22x4=this[_0x2b73[55]](_0x2b73[1292]);_0xff22x4[_0x2b73[57]](_0x2b73[1126],_0xff22x2);_0xff22x4[_0x2b73[57]](_0x2b73[1125],_0xff22x3);this[_0x2b73[813]][_0x2b73[62]](_0xff22x4)};mxXmlCanvas2D[_0x2b73[202]][_0x2b73[1319]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){var _0xff22x9=this[_0x2b73[55]](_0x2b73[1319]);_0xff22x9[_0x2b73[57]](_0x2b73[235],this[_0x2b73[1239]](_0xff22x2));_0xff22x9[_0x2b73[57]](_0x2b73[236],this[_0x2b73[1239]](_0xff22x3));_0xff22x9[_0x2b73[57]](_0x2b73[1302],this[_0x2b73[1239]](_0xff22x4));_0xff22x9[_0x2b73[57]](_0x2b73[1303],this[_0x2b73[1239]](_0xff22x5));this[_0x2b73[813]][_0x2b73[62]](_0xff22x9)};mxXmlCanvas2D[_0x2b73[202]][_0x2b73[1320]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa){var _0xff22x12=this[_0x2b73[55]](_0x2b73[1320]);_0xff22x12[_0x2b73[57]](_0x2b73[235],this[_0x2b73[1239]](_0xff22x2));_0xff22x12[_0x2b73[57]](_0x2b73[236],this[_0x2b73[1239]](_0xff22x3));_0xff22x12[_0x2b73[57]](_0x2b73[1302],this[_0x2b73[1239]](_0xff22x4));_0xff22x12[_0x2b73[57]](_0x2b73[1303],this[_0x2b73[1239]](_0xff22x5));_0xff22x12[_0x2b73[57]](_0x2b73[1126],this[_0x2b73[1239]](_0xff22x9));_0xff22x12[_0x2b73[57]](_0x2b73[1125],this[_0x2b73[1239]](_0xff22xa));this[_0x2b73[813]][_0x2b73[62]](_0xff22x12)};mxXmlCanvas2D[_0x2b73[202]][_0x2b73[680]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){var _0xff22x9=this[_0x2b73[55]](_0x2b73[680]);_0xff22x9[_0x2b73[57]](_0x2b73[235],this[_0x2b73[1239]](_0xff22x2));_0xff22x9[_0x2b73[57]](_0x2b73[236],this[_0x2b73[1239]](_0xff22x3));_0xff22x9[_0x2b73[57]](_0x2b73[1302],this[_0x2b73[1239]](_0xff22x4));_0xff22x9[_0x2b73[57]](_0x2b73[1303],this[_0x2b73[1239]](_0xff22x5));this[_0x2b73[813]][_0x2b73[62]](_0xff22x9)};mxXmlCanvas2D[_0x2b73[202]][_0x2b73[618]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa,_0xff22x12,_0xff22x13){_0xff22x9= this[_0x2b73[1212]][_0x2b73[1321]](_0xff22x9);var _0xff22x14=this[_0x2b73[55]](_0x2b73[618]);_0xff22x14[_0x2b73[57]](_0x2b73[235],this[_0x2b73[1239]](_0xff22x2));_0xff22x14[_0x2b73[57]](_0x2b73[236],this[_0x2b73[1239]](_0xff22x3));_0xff22x14[_0x2b73[57]](_0x2b73[1302],this[_0x2b73[1239]](_0xff22x4));_0xff22x14[_0x2b73[57]](_0x2b73[1303],this[_0x2b73[1239]](_0xff22x5));_0xff22x14[_0x2b73[57]](_0x2b73[390],_0xff22x9);_0xff22x14[_0x2b73[57]](_0x2b73[1322],_0xff22xa?_0x2b73[500]:_0x2b73[468]);_0xff22x14[_0x2b73[57]](_0x2b73[623],_0xff22x12?_0x2b73[500]:_0x2b73[468]);_0xff22x14[_0x2b73[57]](_0x2b73[624],_0xff22x13?_0x2b73[500]:_0x2b73[468]);this[_0x2b73[813]][_0x2b73[62]](_0xff22x14)};mxXmlCanvas2D[_0x2b73[202]][_0x2b73[1275]]= function(){this[_0x2b73[813]][_0x2b73[62]](this[_0x2b73[55]](_0x2b73[1275]));this[_0x2b73[1218]]= this[_0x2b73[1217]]= 0};mxXmlCanvas2D[_0x2b73[202]][_0x2b73[1276]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=this[_0x2b73[55]](_0x2b73[582]);_0xff22x4[_0x2b73[57]](_0x2b73[235],this[_0x2b73[1239]](_0xff22x2));_0xff22x4[_0x2b73[57]](_0x2b73[236],this[_0x2b73[1239]](_0xff22x3));this[_0x2b73[813]][_0x2b73[62]](_0xff22x4);this[_0x2b73[1217]]= _0xff22x2;this[_0x2b73[1218]]= _0xff22x3};mxXmlCanvas2D[_0x2b73[202]][_0x2b73[1277]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=this[_0x2b73[55]](_0x2b73[683]);_0xff22x4[_0x2b73[57]](_0x2b73[235],this[_0x2b73[1239]](_0xff22x2));_0xff22x4[_0x2b73[57]](_0x2b73[236],this[_0x2b73[1239]](_0xff22x3));this[_0x2b73[813]][_0x2b73[62]](_0xff22x4);this[_0x2b73[1217]]= _0xff22x2;this[_0x2b73[1218]]= _0xff22x3};mxXmlCanvas2D[_0x2b73[202]][_0x2b73[1278]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){var _0xff22x9=this[_0x2b73[55]](_0x2b73[1323]);_0xff22x9[_0x2b73[57]](_0x2b73[1324],this[_0x2b73[1239]](_0xff22x2));_0xff22x9[_0x2b73[57]](_0x2b73[1325],this[_0x2b73[1239]](_0xff22x3));_0xff22x9[_0x2b73[57]](_0x2b73[1326],this[_0x2b73[1239]](_0xff22x4));_0xff22x9[_0x2b73[57]](_0x2b73[1327],this[_0x2b73[1239]](_0xff22x5));this[_0x2b73[813]][_0x2b73[62]](_0xff22x9);this[_0x2b73[1217]]= _0xff22x4;this[_0x2b73[1218]]= _0xff22x5};mxXmlCanvas2D[_0x2b73[202]][_0x2b73[1279]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa){var _0xff22x12=this[_0x2b73[55]](_0x2b73[1328]);_0xff22x12[_0x2b73[57]](_0x2b73[1324],this[_0x2b73[1239]](_0xff22x2));_0xff22x12[_0x2b73[57]](_0x2b73[1325],this[_0x2b73[1239]](_0xff22x3));_0xff22x12[_0x2b73[57]](_0x2b73[1326],this[_0x2b73[1239]](_0xff22x4));_0xff22x12[_0x2b73[57]](_0x2b73[1327],this[_0x2b73[1239]](_0xff22x5));_0xff22x12[_0x2b73[57]](_0x2b73[1329],this[_0x2b73[1239]](_0xff22x9));_0xff22x12[_0x2b73[57]](_0x2b73[1330],this[_0x2b73[1239]](_0xff22xa));this[_0x2b73[813]][_0x2b73[62]](_0xff22x12);this[_0x2b73[1217]]= _0xff22x9;this[_0x2b73[1218]]= _0xff22xa};mxXmlCanvas2D[_0x2b73[202]][_0x2b73[268]]= function(){this[_0x2b73[813]][_0x2b73[62]](this[_0x2b73[55]](_0x2b73[268]))};mxXmlCanvas2D[_0x2b73[202]][_0x2b73[963]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa,_0xff22x12,_0xff22x13,_0xff22x14,_0xff22x15,_0xff22x16,_0xff22x17){if(this[_0x2b73[1285]]&& null!= _0xff22x9){mxUtils[_0x2b73[1331]](_0xff22x9)&& (_0xff22x9= mxUtils[_0x2b73[532]](_0xff22x9));var _0xff22x18=this[_0x2b73[55]](_0x2b73[963]);_0xff22x18[_0x2b73[57]](_0x2b73[235],this[_0x2b73[1239]](_0xff22x2));_0xff22x18[_0x2b73[57]](_0x2b73[236],this[_0x2b73[1239]](_0xff22x3));_0xff22x18[_0x2b73[57]](_0x2b73[1302],this[_0x2b73[1239]](_0xff22x4));_0xff22x18[_0x2b73[57]](_0x2b73[1303],this[_0x2b73[1239]](_0xff22x5));_0xff22x18[_0x2b73[57]](_0x2b73[1332],_0xff22x9);null!= _0xff22xa&& _0xff22x18[_0x2b73[57]](_0x2b73[611],_0xff22xa);null!= _0xff22x12&& _0xff22x18[_0x2b73[57]](_0x2b73[552],_0xff22x12);_0xff22x18[_0x2b73[57]](_0x2b73[1333],_0xff22x13?_0x2b73[500]:_0x2b73[468]);null== _0xff22x14&& (_0xff22x14= _0x2b73[110]);_0xff22x18[_0x2b73[57]](_0x2b73[1239],_0xff22x14);null!= _0xff22x15&& _0xff22x18[_0x2b73[57]](_0x2b73[1334],_0xff22x15?_0x2b73[500]:_0x2b73[468]);null!= _0xff22x16&& _0xff22x18[_0x2b73[57]](_0x2b73[1335],_0xff22x16?_0x2b73[500]:_0x2b73[468]);null!= _0xff22x17&& _0xff22x18[_0x2b73[57]](_0x2b73[603],_0xff22x17);this[_0x2b73[813]][_0x2b73[62]](_0xff22x18)}};mxXmlCanvas2D[_0x2b73[202]][_0x2b73[1336]]= function(){this[_0x2b73[813]][_0x2b73[62]](this[_0x2b73[55]](_0x2b73[1336]))};mxXmlCanvas2D[_0x2b73[202]][_0x2b73[1334]]= function(){this[_0x2b73[813]][_0x2b73[62]](this[_0x2b73[55]](_0x2b73[1334]))};mxXmlCanvas2D[_0x2b73[202]][_0x2b73[1337]]= function(){this[_0x2b73[813]][_0x2b73[62]](this[_0x2b73[55]](_0x2b73[1338]))};function mxSvgCanvas2D(_0xff22x2,_0xff22x3){mxAbstractCanvas2D[_0x2b73[239]](this);this[_0x2b73[813]]= _0xff22x2;this[_0x2b73[1339]]= [];this[_0x2b73[1340]]= null;this[_0x2b73[1341]]= null!= _0xff22x3?_0xff22x3:!1;var _0xff22x4=null;if(_0xff22x2[_0x2b73[295]]!= document){for(_0xff22x4= _0xff22x2;null!= _0xff22x4&& _0x2b73[571]!= _0xff22x4[_0x2b73[301]];){_0xff22x4= _0xff22x4[_0x2b73[265]]}};null!= _0xff22x4&& (0< _0xff22x4[_0x2b73[64]](_0x2b73[1340])[_0x2b73[67]]&& (this[_0x2b73[1340]]= _0xff22x4[_0x2b73[64]](_0x2b73[1340])[0]),null== this[_0x2b73[1340]]&& (this[_0x2b73[1340]]= this[_0x2b73[55]](_0x2b73[1340]),null!= _0xff22x4[_0x2b73[285]]?_0xff22x4[_0x2b73[950]](this[_0x2b73[1340]],_0xff22x4[_0x2b73[285]]):_0xff22x4[_0x2b73[62]](this[_0x2b73[1340]])),this[_0x2b73[1341]]&& this[_0x2b73[1340]][_0x2b73[62]](this[_0x2b73[1342]]()))}mxUtils[_0x2b73[1284]](mxSvgCanvas2D,mxAbstractCanvas2D);mxSvgCanvas2D[_0x2b73[202]][_0x2b73[252]]= null;mxSvgCanvas2D[_0x2b73[202]][_0x2b73[1343]]= !0;mxSvgCanvas2D[_0x2b73[202]][_0x2b73[1285]]= !0;mxSvgCanvas2D[_0x2b73[202]][_0x2b73[1344]]= !0;mxSvgCanvas2D[_0x2b73[202]][_0x2b73[1345]]= 0;mxSvgCanvas2D[_0x2b73[202]][_0x2b73[1346]]= 0;mxSvgCanvas2D[_0x2b73[202]][_0x2b73[1347]]= !1;mxSvgCanvas2D[_0x2b73[202]][_0x2b73[862]]= function(){mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[862]][_0x2b73[183]](this,arguments);this[_0x2b73[1339]]= []};mxSvgCanvas2D[_0x2b73[202]][_0x2b73[1342]]= function(_0xff22x2){_0xff22x2= this[_0x2b73[55]](_0x2b73[124]);_0xff22x2[_0x2b73[57]](_0x2b73[60],_0x2b73[61]);mxUtils[_0x2b73[53]](_0xff22x2,_0x2b73[1348]+ mxConstants[_0x2b73[484]]+ _0x2b73[1349]+ mxConstants[_0x2b73[483]]+ _0x2b73[1350]);return _0xff22x2};mxSvgCanvas2D[_0x2b73[202]][_0x2b73[55]]= function(_0xff22x2,_0xff22x3){if(null!= this[_0x2b73[813]][_0x2b73[295]][_0x2b73[509]]){return this[_0x2b73[813]][_0x2b73[295]][_0x2b73[509]](_0xff22x3|| mxConstants[_0x2b73[1351]],_0xff22x2)};var _0xff22x4=this[_0x2b73[813]][_0x2b73[295]][_0x2b73[55]](_0xff22x2);null!= _0xff22x3&& _0xff22x4[_0x2b73[57]](_0x2b73[1352],_0xff22x3);return _0xff22x4};mxSvgCanvas2D[_0x2b73[202]][_0x2b73[1353]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){_0x2b73[198]== _0xff22x2[_0x2b73[225]](0)&& (_0xff22x2= _0xff22x2[_0x2b73[85]](1));_0x2b73[198]== _0xff22x3[_0x2b73[225]](0)&& (_0xff22x3= _0xff22x3[_0x2b73[85]](1));_0xff22x2= _0xff22x2[_0x2b73[216]]()+ _0x2b73[213]+ _0xff22x4;_0xff22x3= _0xff22x3[_0x2b73[216]]()+ _0x2b73[213]+ _0xff22x5;_0xff22x4= null;null== _0xff22x9|| _0xff22x9== mxConstants[_0x2b73[1354]]?_0xff22x4= _0x2b73[1355]:_0xff22x9== mxConstants[_0x2b73[1356]]?_0xff22x4= _0x2b73[1357]:(_0xff22x5= _0xff22x2,_0xff22x2= _0xff22x3,_0xff22x3= _0xff22x5,_0xff22x9== mxConstants[_0x2b73[1358]]?_0xff22x4= _0x2b73[1355]:_0xff22x9== mxConstants[_0x2b73[1359]]&& (_0xff22x4= _0x2b73[1357]));return _0x2b73[1360]+ _0xff22x2+ _0x2b73[213]+ _0xff22x3+ _0x2b73[213]+ _0xff22x4};mxSvgCanvas2D[_0x2b73[202]][_0x2b73[1361]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){var _0xff22xa=this[_0x2b73[1353]](_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9),_0xff22x12=this[_0x2b73[1339]][_0xff22xa];if(null== _0xff22x12){var _0xff22x13=this[_0x2b73[813]][_0x2b73[538]],_0xff22x14=0,_0xff22x15=_0xff22xa+ _0x2b73[213]+ _0xff22x14;if(null!= _0xff22x13){for(_0xff22x12= _0xff22x13[_0x2b73[295]][_0x2b73[1362]](_0xff22x15);null!= _0xff22x12&& _0xff22x12[_0x2b73[538]]!= _0xff22x13;){_0xff22x15= _0xff22xa+ _0x2b73[213]+ _0xff22x14++,_0xff22x12= _0xff22x13[_0x2b73[295]][_0x2b73[1362]](_0xff22x15)}}else {_0xff22x15= _0x2b73[1363]+ ++this[_0x2b73[1346]]};null== _0xff22x12&& (_0xff22x12= this[_0x2b73[1364]](_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9),_0xff22x12[_0x2b73[57]](_0x2b73[1363],_0xff22x15),null!= this[_0x2b73[1340]]?this[_0x2b73[1340]][_0x2b73[62]](_0xff22x12):_0xff22x13[_0x2b73[62]](_0xff22x12));this[_0x2b73[1339]][_0xff22xa]= _0xff22x12};return _0xff22x12[_0x2b73[284]](_0x2b73[1363])};mxSvgCanvas2D[_0x2b73[202]][_0x2b73[1364]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){var _0xff22xa=this[_0x2b73[55]](_0x2b73[1365]);_0xff22xa[_0x2b73[57]](_0x2b73[1324],_0x2b73[1366]);_0xff22xa[_0x2b73[57]](_0x2b73[1325],_0x2b73[1366]);_0xff22xa[_0x2b73[57]](_0x2b73[1326],_0x2b73[1366]);_0xff22xa[_0x2b73[57]](_0x2b73[1327],_0x2b73[1366]);null== _0xff22x9|| _0xff22x9== mxConstants[_0x2b73[1354]]?_0xff22xa[_0x2b73[57]](_0x2b73[1327],_0x2b73[118]):_0xff22x9== mxConstants[_0x2b73[1356]]?_0xff22xa[_0x2b73[57]](_0x2b73[1326],_0x2b73[118]):_0xff22x9== mxConstants[_0x2b73[1358]]?_0xff22xa[_0x2b73[57]](_0x2b73[1325],_0x2b73[118]):_0xff22x9== mxConstants[_0x2b73[1359]]&& _0xff22xa[_0x2b73[57]](_0x2b73[1324],_0x2b73[118]);_0xff22x4= 1> _0xff22x4?_0x2b73[1367]+ _0xff22x4:_0x2b73[110];_0xff22x9= this[_0x2b73[55]](_0x2b73[1076]);_0xff22x9[_0x2b73[57]](_0x2b73[1368],_0x2b73[1366]);_0xff22x9[_0x2b73[57]](_0x2b73[124],_0x2b73[1369]+ _0xff22x2+ _0xff22x4);_0xff22xa[_0x2b73[62]](_0xff22x9);_0xff22x4= 1> _0xff22x5?_0x2b73[1367]+ _0xff22x5:_0x2b73[110];_0xff22x9= this[_0x2b73[55]](_0x2b73[1076]);_0xff22x9[_0x2b73[57]](_0x2b73[1368],_0x2b73[118]);_0xff22x9[_0x2b73[57]](_0x2b73[124],_0x2b73[1369]+ _0xff22x3+ _0xff22x4);_0xff22xa[_0x2b73[62]](_0xff22x9);return _0xff22xa};mxSvgCanvas2D[_0x2b73[202]][_0x2b73[1370]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=this[_0x2b73[252]],_0xff22x5=this[_0x2b73[724]];if(null!= _0xff22x4){if(_0x2b73[1215]== _0xff22x4[_0x2b73[301]]){if(null!= this[_0x2b73[1215]]&& 0< this[_0x2b73[1215]][_0x2b73[67]]){_0xff22x4[_0x2b73[57]](_0x2b73[1371],this[_0x2b73[1215]][_0x2b73[234]](_0x2b73[185]))}else {return}};_0xff22x2&& null!= _0xff22x5[_0x2b73[604]]?this[_0x2b73[1372]]():this[_0x2b73[1341]]|| (_0x2b73[680]== _0xff22x4[_0x2b73[301]]&& mxClient[_0x2b73[133]]&& !mxClient[_0x2b73[76]]&& !mxClient[_0x2b73[75]]?_0xff22x4[_0x2b73[57]](_0x2b73[1334],_0x2b73[1373]):_0xff22x4[_0x2b73[57]](_0x2b73[1334],_0x2b73[130]),_0xff22x2= !1);_0xff22x3&& null!= _0xff22x5[_0x2b73[608]]?this[_0x2b73[1374]]():this[_0x2b73[1341]]|| _0xff22x4[_0x2b73[57]](_0x2b73[1336],_0x2b73[130]);null!= _0xff22x5[_0x2b73[535]]&& 0< _0xff22x5[_0x2b73[535]][_0x2b73[67]]&& _0xff22x4[_0x2b73[57]](_0x2b73[535],_0xff22x5[_0x2b73[535]]);_0xff22x5[_0x2b73[639]]&& this[_0x2b73[813]][_0x2b73[62]](this[_0x2b73[1375]](_0xff22x4));0< this[_0x2b73[1345]]&& !_0xff22x2&& this[_0x2b73[813]][_0x2b73[62]](this[_0x2b73[1376]](_0xff22x4));this[_0x2b73[1229]]&& (_0x2b73[1215]!= _0xff22x4[_0x2b73[301]]|| this[_0x2b73[1215]][this[_0x2b73[1215]][_0x2b73[67]]- 1]== this[_0x2b73[1227]])&& _0xff22x4[_0x2b73[57]](_0x2b73[1377],_0x2b73[1378]);this[_0x2b73[813]][_0x2b73[62]](_0xff22x4)}};mxSvgCanvas2D[_0x2b73[202]][_0x2b73[1372]]= function(){var _0xff22x2=this[_0x2b73[724]];1> _0xff22x2[_0x2b73[1244]]&& this[_0x2b73[252]][_0x2b73[57]](_0x2b73[1379],_0xff22x2[_0x2b73[1244]]);null!= _0xff22x2[_0x2b73[604]]&& (null!= _0xff22x2[_0x2b73[606]]?(_0xff22x2= this[_0x2b73[1361]](_0xff22x2[_0x2b73[604]],_0xff22x2[_0x2b73[606]],_0xff22x2[_0x2b73[1247]],_0xff22x2[_0x2b73[1248]],_0xff22x2[_0x2b73[607]]),this[_0x2b73[252]][_0x2b73[57]](_0x2b73[1334],_0x2b73[1380]+ _0xff22x2+ _0x2b73[460])):this[_0x2b73[252]][_0x2b73[57]](_0x2b73[1334],_0xff22x2[_0x2b73[604]][_0x2b73[216]]()))};mxSvgCanvas2D[_0x2b73[202]][_0x2b73[1374]]= function(){var _0xff22x2=this[_0x2b73[724]];this[_0x2b73[252]][_0x2b73[57]](_0x2b73[1336],_0xff22x2[_0x2b73[608]][_0x2b73[216]]());1> _0xff22x2[_0x2b73[1244]]&& this[_0x2b73[252]][_0x2b73[57]](_0x2b73[1381],_0xff22x2[_0x2b73[1244]]);var _0xff22x3=Math[_0x2b73[160]](1,this[_0x2b73[1239]](_0xff22x2[_0x2b73[610]]* _0xff22x2[_0x2b73[255]]));1!= _0xff22x3&& this[_0x2b73[252]][_0x2b73[57]](_0x2b73[1382],_0xff22x3);_0x2b73[1215]== this[_0x2b73[252]][_0x2b73[301]]&& this[_0x2b73[1383]]();_0xff22x2[_0x2b73[648]]&& this[_0x2b73[252]][_0x2b73[57]](_0x2b73[1384],this[_0x2b73[1385]](_0xff22x3))};mxSvgCanvas2D[_0x2b73[202]][_0x2b73[1383]]= function(){var _0xff22x2=this[_0x2b73[724]];null!= _0xff22x2[_0x2b73[1256]]&& _0x2b73[1233]!= _0xff22x2[_0x2b73[1256]]&& this[_0x2b73[252]][_0x2b73[57]](_0x2b73[1386],_0xff22x2[_0x2b73[1256]]);if(null!= _0xff22x2[_0x2b73[1254]]){var _0xff22x3=_0xff22x2[_0x2b73[1254]];_0x2b73[1232]== _0xff22x3&& (_0xff22x3= _0x2b73[1387]);_0x2b73[1387]!= _0xff22x3&& this[_0x2b73[252]][_0x2b73[57]](_0x2b73[1388],_0xff22x3)};null!= _0xff22x2[_0x2b73[1258]]&& (!this[_0x2b73[1341]]|| 10!= _0xff22x2[_0x2b73[1258]])&& this[_0x2b73[252]][_0x2b73[57]](_0x2b73[1389],_0xff22x2[_0x2b73[1258]])};mxSvgCanvas2D[_0x2b73[202]][_0x2b73[1385]]= function(_0xff22x2){var _0xff22x3=this[_0x2b73[724]][_0x2b73[649]][_0x2b73[224]](_0x2b73[185]),_0xff22x4=[];if(0< _0xff22x3[_0x2b73[67]]){for(var _0xff22x5=0;_0xff22x5< _0xff22x3[_0x2b73[67]];_0xff22x5++){_0xff22x4[_0xff22x5]= Number(_0xff22x3[_0xff22x5])* _0xff22x2}};return _0xff22x4[_0x2b73[234]](_0x2b73[185])};mxSvgCanvas2D[_0x2b73[202]][_0x2b73[1376]]= function(_0xff22x2){_0xff22x2= _0xff22x2[_0x2b73[511]](!0);var _0xff22x3=parseFloat(_0xff22x2[_0x2b73[284]](_0x2b73[1382])|| 1)+ this[_0x2b73[1345]];_0xff22x2[_0x2b73[57]](_0x2b73[1377],_0x2b73[1336]);_0xff22x2[_0x2b73[57]](_0x2b73[187],_0x2b73[188]);_0xff22x2[_0x2b73[1390]](_0x2b73[1384]);_0xff22x2[_0x2b73[57]](_0x2b73[1382],_0xff22x3);_0xff22x2[_0x2b73[57]](_0x2b73[1334],_0x2b73[130]);_0xff22x2[_0x2b73[57]](_0x2b73[1336],mxClient[_0x2b73[71]]?_0x2b73[130]:_0x2b73[1391]);return _0xff22x2};mxSvgCanvas2D[_0x2b73[202]][_0x2b73[1375]]= function(_0xff22x2){_0xff22x2= _0xff22x2[_0x2b73[511]](!0);var _0xff22x3=this[_0x2b73[724]];_0x2b73[130]!= _0xff22x2[_0x2b73[284]](_0x2b73[1334])&& _0xff22x2[_0x2b73[57]](_0x2b73[1334],_0xff22x3[_0x2b73[1269]]);_0x2b73[130]!= _0xff22x2[_0x2b73[284]](_0x2b73[1336])&& _0xff22x2[_0x2b73[57]](_0x2b73[1336],_0xff22x3[_0x2b73[1269]]);_0xff22x2[_0x2b73[57]](_0x2b73[535],_0x2b73[536]+ this[_0x2b73[1239]](_0xff22x3[_0x2b73[1273]]* _0xff22x3[_0x2b73[255]])+ _0x2b73[537]+ this[_0x2b73[1239]](_0xff22x3[_0x2b73[1274]]* _0xff22x3[_0x2b73[255]])+ _0x2b73[460]+ (_0xff22x3[_0x2b73[535]]|| _0x2b73[110]));_0xff22x2[_0x2b73[57]](_0x2b73[461],_0xff22x3[_0x2b73[1271]]);return _0xff22x2};mxSvgCanvas2D[_0x2b73[202]][_0x2b73[1294]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){if(0!= _0xff22x2|| _0xff22x3|| _0xff22x4){var _0xff22xa=this[_0x2b73[724]];_0xff22x5+= _0xff22xa[_0x2b73[1126]];_0xff22x9+= _0xff22xa[_0x2b73[1125]];_0xff22x5*= _0xff22xa[_0x2b73[255]];_0xff22x9*= _0xff22xa[_0x2b73[255]];_0xff22xa[_0x2b73[535]]= _0xff22xa[_0x2b73[535]]|| _0x2b73[110];if(_0xff22x3&& _0xff22x4){_0xff22x2+= 180}else {if(_0xff22x3^ _0xff22x4){var _0xff22x12=_0xff22x3?_0xff22x5:0,_0xff22x13=_0xff22x3?-1:1,_0xff22x14=_0xff22x4?_0xff22x9:0,_0xff22x15=_0xff22x4?-1:1;_0xff22xa[_0x2b73[535]]+= _0x2b73[536]+ this[_0x2b73[1239]](_0xff22x12)+ _0x2b73[537]+ this[_0x2b73[1239]](_0xff22x14)+ _0x2b73[1392]+ this[_0x2b73[1239]](_0xff22x13)+ _0x2b73[537]+ this[_0x2b73[1239]](_0xff22x15)+ _0x2b73[1393]+ this[_0x2b73[1239]](-_0xff22x12) + _0x2b73[537]+ this[_0x2b73[1239]](-_0xff22x14) + _0x2b73[460]}};if(_0xff22x3?!_0xff22x4:_0xff22x4){_0xff22x2*= -1};0!= _0xff22x2&& (_0xff22xa[_0x2b73[535]]+= _0x2b73[1394]+ this[_0x2b73[1239]](_0xff22x2)+ _0x2b73[537]+ this[_0x2b73[1239]](_0xff22x5)+ _0x2b73[537]+ this[_0x2b73[1239]](_0xff22x9)+ _0x2b73[460]);_0xff22xa[_0x2b73[603]]+= _0xff22x2;_0xff22xa[_0x2b73[1395]]= _0xff22x5;_0xff22xa[_0x2b73[1396]]= _0xff22x9}};mxSvgCanvas2D[_0x2b73[202]][_0x2b73[1275]]= function(){mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1275]][_0x2b73[183]](this,arguments);this[_0x2b73[252]]= this[_0x2b73[55]](_0x2b73[1215])};mxSvgCanvas2D[_0x2b73[202]][_0x2b73[1319]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){var _0xff22x9=this[_0x2b73[724]],_0xff22xa=this[_0x2b73[55]](_0x2b73[1319]);_0xff22xa[_0x2b73[57]](_0x2b73[235],this[_0x2b73[1239]]((_0xff22x2+ _0xff22x9[_0x2b73[1126]])* _0xff22x9[_0x2b73[255]]));_0xff22xa[_0x2b73[57]](_0x2b73[236],this[_0x2b73[1239]]((_0xff22x3+ _0xff22x9[_0x2b73[1125]])* _0xff22x9[_0x2b73[255]]));_0xff22xa[_0x2b73[57]](_0x2b73[117],this[_0x2b73[1239]](_0xff22x4* _0xff22x9[_0x2b73[255]]));_0xff22xa[_0x2b73[57]](_0x2b73[119],this[_0x2b73[1239]](_0xff22x5* _0xff22x9[_0x2b73[255]]));this[_0x2b73[252]]= _0xff22xa};mxSvgCanvas2D[_0x2b73[202]][_0x2b73[1320]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa){this[_0x2b73[1319]](_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5);0< _0xff22x9&& this[_0x2b73[252]][_0x2b73[57]](_0x2b73[1397],this[_0x2b73[1239]](_0xff22x9* this[_0x2b73[724]][_0x2b73[255]]));0< _0xff22xa&& this[_0x2b73[252]][_0x2b73[57]](_0x2b73[1398],this[_0x2b73[1239]](_0xff22xa* this[_0x2b73[724]][_0x2b73[255]]))};mxSvgCanvas2D[_0x2b73[202]][_0x2b73[680]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){var _0xff22x9=this[_0x2b73[724]],_0xff22xa=this[_0x2b73[55]](_0x2b73[680]);_0xff22xa[_0x2b73[57]](_0x2b73[1296],Math[_0x2b73[488]]((_0xff22x2+ _0xff22x4/ 2+ _0xff22x9[_0x2b73[1126]])* _0xff22x9[_0x2b73[255]]));_0xff22xa[_0x2b73[57]](_0x2b73[1297],Math[_0x2b73[488]]((_0xff22x3+ _0xff22x5/ 2+ _0xff22x9[_0x2b73[1125]])* _0xff22x9[_0x2b73[255]]));_0xff22xa[_0x2b73[57]](_0x2b73[1397],_0xff22x4/ 2* _0xff22x9[_0x2b73[255]]);_0xff22xa[_0x2b73[57]](_0x2b73[1398],_0xff22x5/ 2* _0xff22x9[_0x2b73[255]]);this[_0x2b73[252]]= _0xff22xa};mxSvgCanvas2D[_0x2b73[202]][_0x2b73[618]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa,_0xff22x12,_0xff22x13){_0xff22x9= this[_0x2b73[1212]][_0x2b73[1321]](_0xff22x9);_0xff22xa= null!= _0xff22xa?_0xff22xa:!0;_0xff22x12= null!= _0xff22x12?_0xff22x12:!1;_0xff22x13= null!= _0xff22x13?_0xff22x13:!1;var _0xff22x14=this[_0x2b73[724]];_0xff22x2+= _0xff22x14[_0x2b73[1126]];_0xff22x3+= _0xff22x14[_0x2b73[1125]];var _0xff22x15=this[_0x2b73[55]](_0x2b73[618]);_0xff22x15[_0x2b73[57]](_0x2b73[235],this[_0x2b73[1239]](_0xff22x2* _0xff22x14[_0x2b73[255]]));_0xff22x15[_0x2b73[57]](_0x2b73[236],this[_0x2b73[1239]](_0xff22x3* _0xff22x14[_0x2b73[255]]));_0xff22x15[_0x2b73[57]](_0x2b73[117],this[_0x2b73[1239]](_0xff22x4* _0xff22x14[_0x2b73[255]]));_0xff22x15[_0x2b73[57]](_0x2b73[119],this[_0x2b73[1239]](_0xff22x5* _0xff22x14[_0x2b73[255]]));null== _0xff22x15[_0x2b73[1399]]?_0xff22x15[_0x2b73[57]](_0x2b73[1400],_0xff22x9):_0xff22x15[_0x2b73[1399]](mxConstants.NS_XLINK,_0x2b73[44],_0xff22x9);_0xff22xa|| _0xff22x15[_0x2b73[57]](_0x2b73[1401],_0x2b73[130]);1> _0xff22x14[_0x2b73[1244]]&& _0xff22x15[_0x2b73[57]](_0x2b73[461],_0xff22x14[_0x2b73[1244]]);_0xff22x9= this[_0x2b73[724]][_0x2b73[535]]|| _0x2b73[110];if(_0xff22x12|| _0xff22x13){var _0xff22x16=_0xff22xa= 1,_0xff22x17=0,_0xff22x18=0;_0xff22x12&& (_0xff22xa= -1,_0xff22x17= -_0xff22x4- 2* _0xff22x2);_0xff22x13&& (_0xff22x16= -1,_0xff22x18= -_0xff22x5- 2* _0xff22x3);_0xff22x9+= _0x2b73[1402]+ _0xff22xa+ _0x2b73[537]+ _0xff22x16+ _0x2b73[1393]+ _0xff22x17+ _0x2b73[537]+ _0xff22x18+ _0x2b73[460]};0< _0xff22x9[_0x2b73[67]]&& _0xff22x15[_0x2b73[57]](_0x2b73[535],_0xff22x9);this[_0x2b73[813]][_0x2b73[62]](_0xff22x15);this[_0x2b73[1347]]&& (_0xff22x15[_0x2b73[57]](_0x2b73[124],_0x2b73[1403]),_0xff22x15= this[_0x2b73[55]](_0x2b73[1319]),_0xff22x15[_0x2b73[57]](_0x2b73[187],_0x2b73[188]),_0xff22x15[_0x2b73[57]](_0x2b73[1377],_0x2b73[1334]),_0xff22x15[_0x2b73[57]](_0x2b73[235],this[_0x2b73[1239]](_0xff22x2* _0xff22x14[_0x2b73[255]])),_0xff22x15[_0x2b73[57]](_0x2b73[236],this[_0x2b73[1239]](_0xff22x3* _0xff22x14[_0x2b73[255]])),_0xff22x15[_0x2b73[57]](_0x2b73[117],this[_0x2b73[1239]](_0xff22x4* _0xff22x14[_0x2b73[255]])),_0xff22x15[_0x2b73[57]](_0x2b73[119],this[_0x2b73[1239]](_0xff22x5* _0xff22x14[_0x2b73[255]])),this[_0x2b73[813]][_0x2b73[62]](_0xff22x15))};mxSvgCanvas2D[_0x2b73[202]][_0x2b73[1404]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){_0xff22x4= this[_0x2b73[724]];_0xff22x5= _0x2b73[1405]+ Math[_0x2b73[488]](_0xff22x4[_0x2b73[487]])+ _0x2b73[1406]+ _0xff22x4[_0x2b73[486]]+ _0x2b73[1407]+ _0xff22x4[_0x2b73[665]]+ _0x2b73[1408]+ Math[_0x2b73[488]](_0xff22x4[_0x2b73[487]]* mxConstants[_0x2b73[490]])+ _0x2b73[1409]+ _0xff22x5;(_0xff22x4[_0x2b73[666]]& mxConstants[_0x2b73[1410]])== mxConstants[_0x2b73[1410]]&& (_0xff22x5+= _0x2b73[1411]);(_0xff22x4[_0x2b73[666]]& mxConstants[_0x2b73[1412]])== mxConstants[_0x2b73[1412]]&& (_0xff22x5+= _0x2b73[1413]);(_0xff22x4[_0x2b73[666]]& mxConstants[_0x2b73[1414]])== mxConstants[_0x2b73[1414]]&& (_0xff22x5+= _0x2b73[1415]);_0xff22x3== mxConstants[_0x2b73[479]]?_0xff22x5+= _0x2b73[1416]:_0xff22x3== mxConstants[_0x2b73[480]]&& (_0xff22x5+= _0x2b73[1417]);_0xff22x3= _0x2b73[110];null!= _0xff22x4[_0x2b73[1261]]&& (_0xff22x3+= _0x2b73[1418]+ _0xff22x4[_0x2b73[1261]]+ _0x2b73[471]);null!= _0xff22x4[_0x2b73[1263]]&& (_0xff22x3+= _0x2b73[1419]+ _0xff22x4[_0x2b73[1263]]+ _0x2b73[471]);mxUtils[_0x2b73[1331]](_0xff22x2)|| (_0xff22x4= document[_0x2b73[55]](_0x2b73[126]),_0xff22x4[_0x2b73[339]]= _0xff22x2[_0x2b73[230]](/</g,_0x2b73[1421])[_0x2b73[230]](/>/g,_0x2b73[1420])[_0x2b73[230]](//g,_0x2b73[335]),_0xff22x2= _0xff22x4[_0x2b73[131]],_0xff22x9?_0xff22x5+= _0xff22x3:0< _0xff22x3[_0x2b73[67]]&& (_0xff22x2= _0x2b73[1422]+ _0xff22x3+ _0x2b73[1423]+ _0xff22x2+ _0x2b73[1424]));if(!mxClient[_0x2b73[80]]&& document[_0x2b73[509]]){return _0xff22x9= document[_0x2b73[509]](_0x2b73[577],_0x2b73[485]),_0xff22x9[_0x2b73[57]](_0x2b73[124],_0xff22x5),mxUtils[_0x2b73[1331]](_0xff22x2)?this[_0x2b73[813]][_0x2b73[295]]!= document?_0xff22x9[_0x2b73[62]](_0xff22x2[_0x2b73[511]](!0)):_0xff22x9[_0x2b73[62]](_0xff22x2):_0xff22x9[_0x2b73[339]]= _0xff22x2,_0xff22x9};mxUtils[_0x2b73[1331]](_0xff22x2)&& this[_0x2b73[813]][_0x2b73[295]]!= document&& (_0xff22x2= _0xff22x2[_0x2b73[342]]);_0xff22x2= _0xff22x2[_0x2b73[230]](/
/g,_0x2b73[1426])[_0x2b73[230]](/
/g,_0x2b73[1425]);return mxUtils[_0x2b73[877]](_0x2b73[1427]+ _0xff22x5+ _0x2b73[1423]+ _0xff22x2+ _0x2b73[1424])[_0x2b73[158]]};mxSvgCanvas2D[_0x2b73[202]][_0x2b73[963]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa,_0xff22x12,_0xff22x13,_0xff22x14,_0xff22x15,_0xff22x16,_0xff22x17){if(this[_0x2b73[1285]]&& null!= _0xff22x9){_0xff22x17= null!= _0xff22x17?_0xff22x17:0;var _0xff22x18=this[_0x2b73[724]];_0xff22x2+= _0xff22x18[_0x2b73[1126]];_0xff22x3+= _0xff22x18[_0x2b73[1125]];if(this[_0x2b73[1344]]&& _0x2b73[1428]== _0xff22x14){var _0xff22x19=_0x2b73[1429];_0xff22x16?(_0xff22x19+= _0x2b73[1430],0< _0xff22x5&& (_0xff22x19+= _0x2b73[1431]+ Math[_0x2b73[488]](_0xff22x5)+ _0x2b73[1409]),0< _0xff22x4&& (_0xff22x19+= _0x2b73[1432]+ Math[_0x2b73[488]](_0xff22x4)+ _0x2b73[1409])):_0xff22x15&& (_0xff22x19+= _0x2b73[1432]+ Math[_0x2b73[488]](_0xff22x4)+ _0x2b73[1409],0< _0xff22x5&& (_0xff22x19+= _0x2b73[1431]+ Math[_0x2b73[488]](_0xff22x5)+ _0x2b73[1409]));_0xff22x13?(!_0xff22x16&& 0< _0xff22x4&& (_0xff22x19+= _0x2b73[1432]+ Math[_0x2b73[488]](_0xff22x4)+ _0x2b73[1409]),_0xff22x19+= _0x2b73[1433]):_0xff22x19+= _0x2b73[1434];_0xff22x13= this[_0x2b73[55]](_0x2b73[449]);1> _0xff22x18[_0x2b73[1244]]&& _0xff22x13[_0x2b73[57]](_0x2b73[461],_0xff22x18[_0x2b73[1244]]);_0xff22x14= this[_0x2b73[55]](_0x2b73[1435]);_0xff22x14[_0x2b73[57]](_0x2b73[1377],_0x2b73[1378]);_0xff22x19= this[_0x2b73[1404]](_0xff22x9,_0xff22xa,_0xff22x12,_0xff22x19,_0xff22x15);if(null!= _0xff22x19){_0xff22x13[_0x2b73[62]](_0xff22x14);this[_0x2b73[813]][_0x2b73[62]](_0xff22x13);var _0xff22x1a=0;if(mxClient[_0x2b73[80]]&& !mxClient[_0x2b73[48]]){var _0xff22x1b=document[_0x2b73[55]](_0x2b73[485]);_0xff22x1b[_0x2b73[124]][_0x2b73[103]]= _0xff22x19[_0x2b73[284]](_0x2b73[124]);_0xff22x1b[_0x2b73[124]][_0x2b73[495]]= mxClient[_0x2b73[496]]?_0x2b73[497]:_0x2b73[498];_0xff22x1b[_0x2b73[124]][_0x2b73[187]]= _0x2b73[188];_0xff22x1b[_0x2b73[339]]= mxUtils[_0x2b73[1331]](_0xff22x9)?_0xff22x9[_0x2b73[342]]:_0xff22x9;document[_0x2b73[112]][_0x2b73[62]](_0xff22x1b);_0xff22x1a= _0xff22x1b[_0x2b73[359]];_0xff22x5= mxClient[_0x2b73[496]]&& 0< _0xff22x5&& _0xff22x16?Math[_0x2b73[243]](_0xff22x5,_0xff22x1b[_0x2b73[167]]+ 2):_0xff22x1b[_0x2b73[167]];_0xff22x1b[_0x2b73[265]][_0x2b73[266]](_0xff22x1b);_0xff22x14[_0x2b73[62]](_0xff22x19)}else {this[_0x2b73[813]][_0x2b73[295]]!= document?(_0xff22x19[_0x2b73[124]][_0x2b73[187]]= _0x2b73[188],document[_0x2b73[112]][_0x2b73[62]](_0xff22x19),_0xff22x1a= _0xff22x19[_0x2b73[359]],_0xff22x5= _0xff22x19[_0x2b73[167]],_0xff22x14[_0x2b73[62]](_0xff22x19),_0xff22x19[_0x2b73[124]][_0x2b73[187]]= _0x2b73[110]):(_0xff22x14[_0x2b73[62]](_0xff22x19),_0xff22x1a= _0xff22x19[_0x2b73[359]],_0xff22x5= _0xff22x19[_0x2b73[167]])};_0xff22x4= _0xff22x15?Math[_0x2b73[160]](_0xff22x4,_0xff22x1a):_0xff22x1a;1> _0xff22x18[_0x2b73[1244]]&& _0xff22x13[_0x2b73[57]](_0x2b73[461],_0xff22x18[_0x2b73[1244]]);_0xff22x15= _0xff22x9= 0;_0xff22xa== mxConstants[_0x2b73[479]]?_0xff22x9-= _0xff22x4/ 2:_0xff22xa== mxConstants[_0x2b73[480]]&& (_0xff22x9-= _0xff22x4);_0xff22x2+= _0xff22x9;_0xff22x12== mxConstants[_0x2b73[481]]?_0xff22x15-= _0xff22x5/ 2:_0xff22x12== mxConstants[_0x2b73[482]]&& (_0xff22x15-= _0xff22x5);_0xff22x3+= _0xff22x15;_0xff22xa= 1!= _0xff22x18[_0x2b73[255]]?_0x2b73[1402]+ _0xff22x18[_0x2b73[255]]+ _0x2b73[460]:_0x2b73[110];0!= _0xff22x18[_0x2b73[603]]&& this[_0x2b73[1216]]?(_0xff22xa+= _0x2b73[1394]+ _0xff22x18[_0x2b73[603]]+ _0x2b73[537]+ _0xff22x4/ 2+ _0x2b73[537]+ _0xff22x5/ 2+ _0x2b73[460],_0xff22x3= this[_0x2b73[1241]]((_0xff22x2+ _0xff22x4/ 2)* _0xff22x18[_0x2b73[255]],(_0xff22x3+ _0xff22x5/ 2)* _0xff22x18[_0x2b73[255]],_0xff22x18[_0x2b73[603]],_0xff22x18[_0x2b73[1395]],_0xff22x18[_0x2b73[1396]]),_0xff22x2= _0xff22x3[_0x2b73[235]]- _0xff22x4* _0xff22x18[_0x2b73[255]]/ 2,_0xff22x3= _0xff22x3[_0x2b73[236]]- _0xff22x5* _0xff22x18[_0x2b73[255]]/ 2):(_0xff22x2*= _0xff22x18[_0x2b73[255]],_0xff22x3*= _0xff22x18[_0x2b73[255]]);0!= _0xff22x17&& (_0xff22xa+= _0x2b73[1394]+ _0xff22x17+ _0x2b73[537]+ -_0xff22x9+ _0x2b73[537]+ -_0xff22x15+ _0x2b73[460]);_0xff22x13[_0x2b73[57]](_0x2b73[535],_0x2b73[536]+ Math[_0x2b73[488]](_0xff22x2)+ _0x2b73[537]+ Math[_0x2b73[488]](_0xff22x3)+ _0x2b73[460]+ _0xff22xa);_0xff22x14[_0x2b73[57]](_0x2b73[117],Math[_0x2b73[488]](Math[_0x2b73[160]](1,_0xff22x4)));_0xff22x14[_0x2b73[57]](_0x2b73[119],Math[_0x2b73[488]](Math[_0x2b73[160]](1,_0xff22x5)))}}else {this[_0x2b73[1436]](_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa,_0xff22x12,_0xff22x13,_0xff22x15,_0xff22x16,_0xff22x17)}}};mxSvgCanvas2D[_0x2b73[202]][_0x2b73[1437]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){_0xff22x2= Math[_0x2b73[488]](_0xff22x2);_0xff22x3= Math[_0x2b73[488]](_0xff22x3);_0xff22x4= Math[_0x2b73[488]](_0xff22x4);_0xff22x5= Math[_0x2b73[488]](_0xff22x5);for(var _0xff22x9=_0x2b73[1438]+ _0xff22x2+ _0x2b73[213]+ _0xff22x3+ _0x2b73[213]+ _0xff22x4+ _0x2b73[213]+ _0xff22x5,_0xff22xa=0,_0xff22x12=_0xff22x9+ _0x2b73[213]+ _0xff22xa;null!= document[_0x2b73[1362]](_0xff22x12);){_0xff22x12= _0xff22x9+ _0x2b73[213]+ ++_0xff22xa};clip= this[_0x2b73[55]](_0x2b73[1439]);clip[_0x2b73[57]](_0x2b73[1363],_0xff22x12);_0xff22x9= this[_0x2b73[55]](_0x2b73[1319]);_0xff22x9[_0x2b73[57]](_0x2b73[235],_0xff22x2);_0xff22x9[_0x2b73[57]](_0x2b73[236],_0xff22x3);_0xff22x9[_0x2b73[57]](_0x2b73[117],_0xff22x4);_0xff22x9[_0x2b73[57]](_0x2b73[119],_0xff22x5);clip[_0x2b73[62]](_0xff22x9);return clip};mxSvgCanvas2D[_0x2b73[202]][_0x2b73[1436]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa,_0xff22x12,_0xff22x13,_0xff22x14,_0xff22x15,_0xff22x16){_0xff22x16= null!= _0xff22x16?_0xff22x16:0;_0xff22x13= this[_0x2b73[724]];var _0xff22x17=Math[_0x2b73[488]](_0xff22x13[_0x2b73[487]]),_0xff22x18=this[_0x2b73[55]](_0x2b73[449]),_0xff22x19=_0xff22x13[_0x2b73[535]]|| _0x2b73[110];0!= _0xff22x16&& (_0xff22x19+= _0x2b73[1394]+ _0xff22x16+ _0x2b73[537]+ this[_0x2b73[1239]](_0xff22x2* _0xff22x13[_0x2b73[255]])+ _0x2b73[537]+ this[_0x2b73[1239]](_0xff22x3* _0xff22x13[_0x2b73[255]])+ _0x2b73[460]);if(_0xff22x15&& 0< _0xff22x4&& 0< _0xff22x5){var _0xff22x1a=_0xff22x2;_0xff22x16= _0xff22x3;_0xff22xa== mxConstants[_0x2b73[479]]?_0xff22x1a-= _0xff22x4/ 2:_0xff22xa== mxConstants[_0x2b73[480]]&& (_0xff22x1a-= _0xff22x4);_0xff22x12== mxConstants[_0x2b73[481]]?_0xff22x16-= _0xff22x5/ 2:_0xff22x12== mxConstants[_0x2b73[482]]&& (_0xff22x16-= _0xff22x5);_0xff22x16= this[_0x2b73[1437]](_0xff22x1a* _0xff22x13[_0x2b73[255]]- 2,_0xff22x16* _0xff22x13[_0x2b73[255]]- 2,_0xff22x4* _0xff22x13[_0x2b73[255]]+ 4,_0xff22x5* _0xff22x13[_0x2b73[255]]+ 4);null!= this[_0x2b73[1340]]?this[_0x2b73[1340]][_0x2b73[62]](_0xff22x16):this[_0x2b73[813]][_0x2b73[62]](_0xff22x16);_0xff22x18[_0x2b73[57]](_0x2b73[1440],_0x2b73[1380]+ _0xff22x16[_0x2b73[284]](_0x2b73[1363])+ _0x2b73[460])};this[_0x2b73[1441]](_0xff22x18,_0xff22xa);_0xff22x16= _0xff22xa== mxConstants[_0x2b73[480]]?_0x2b73[1282]:_0xff22xa== mxConstants[_0x2b73[479]]?_0x2b73[554]:_0x2b73[861];_0x2b73[861]!= _0xff22x16&& _0xff22x18[_0x2b73[57]](_0x2b73[1442],_0xff22x16);(!this[_0x2b73[1341]]|| _0xff22x17!= mxConstants[_0x2b73[483]])&& _0xff22x18[_0x2b73[57]](_0x2b73[1443],Math[_0x2b73[488]](_0xff22x17* _0xff22x13[_0x2b73[255]])+ _0x2b73[168]);0< _0xff22x19[_0x2b73[67]]&& _0xff22x18[_0x2b73[57]](_0x2b73[535],_0xff22x19);1> _0xff22x13[_0x2b73[1244]]&& _0xff22x18[_0x2b73[57]](_0x2b73[461],_0xff22x13[_0x2b73[1244]]);var _0xff22x19=_0xff22x9[_0x2b73[224]](_0x2b73[192]),_0xff22x1a=Math[_0x2b73[488]](_0xff22x17* mxConstants[_0x2b73[490]]),_0xff22x1b=_0xff22x17+ (_0xff22x19[_0x2b73[67]]- 1)* _0xff22x1a;_0xff22x16= _0xff22x3+ _0xff22x17- 1;_0xff22x12== mxConstants[_0x2b73[481]]?(_0xff22x5= (this[_0x2b73[1343]]&& _0xff22x15&& 0< _0xff22x5?Math[_0x2b73[243]](_0xff22x1b,_0xff22x5):_0xff22x1b)/ 2,_0xff22x16-= _0xff22x5+ 1):_0xff22x12== mxConstants[_0x2b73[482]]&& (_0xff22x5= this[_0x2b73[1343]]&& _0xff22x15&& 0< _0xff22x5?Math[_0x2b73[243]](_0xff22x1b,_0xff22x5):_0xff22x1b,_0xff22x16-= _0xff22x5+ 2);for(_0xff22x5= 0;_0xff22x5< _0xff22x19[_0x2b73[67]];_0xff22x5++){0< _0xff22x19[_0xff22x5][_0x2b73[67]]&& 0< mxUtils[_0x2b73[330]](_0xff22x19[_0xff22x5])[_0x2b73[67]]&& (_0xff22x15= this[_0x2b73[55]](_0x2b73[963]),_0xff22x15[_0x2b73[57]](_0x2b73[235],this[_0x2b73[1239]](_0xff22x2* _0xff22x13[_0x2b73[255]])),_0xff22x15[_0x2b73[57]](_0x2b73[236],this[_0x2b73[1239]](_0xff22x16* _0xff22x13[_0x2b73[255]])),mxUtils[_0x2b73[53]](_0xff22x15,_0xff22x19[_0xff22x5]),_0xff22x18[_0x2b73[62]](_0xff22x15)),_0xff22x16+= _0xff22x1a};this[_0x2b73[813]][_0x2b73[62]](_0xff22x18);this[_0x2b73[1444]](_0xff22x18,_0xff22x9,_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x1b,_0xff22xa,_0xff22x12,_0xff22x14)};mxSvgCanvas2D[_0x2b73[202]][_0x2b73[1441]]= function(_0xff22x2){var _0xff22x3=this[_0x2b73[724]];_0xff22x2[_0x2b73[57]](_0x2b73[1334],_0xff22x3[_0x2b73[665]]);(!this[_0x2b73[1341]]|| _0xff22x3[_0x2b73[486]]!= mxConstants[_0x2b73[484]])&& _0xff22x2[_0x2b73[57]](_0x2b73[1445],_0xff22x3[_0x2b73[486]]);(_0xff22x3[_0x2b73[666]]& mxConstants[_0x2b73[1410]])== mxConstants[_0x2b73[1410]]&& _0xff22x2[_0x2b73[57]](_0x2b73[1446],_0x2b73[1447]);(_0xff22x3[_0x2b73[666]]& mxConstants[_0x2b73[1412]])== mxConstants[_0x2b73[1412]]&& _0xff22x2[_0x2b73[57]](_0x2b73[1448],_0x2b73[1449]);(_0xff22x3[_0x2b73[666]]& mxConstants[_0x2b73[1414]])== mxConstants[_0x2b73[1414]]&& _0xff22x2[_0x2b73[57]](_0x2b73[1450],_0x2b73[355])};mxSvgCanvas2D[_0x2b73[202]][_0x2b73[1444]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa,_0xff22x12,_0xff22x13,_0xff22x14){var _0xff22x15=this[_0x2b73[724]];if(null!= _0xff22x15[_0x2b73[1261]]|| null!= _0xff22x15[_0x2b73[1263]]){var _0xff22x16=null;_0xff22x14?(_0xff22x12== mxConstants[_0x2b73[479]]?_0xff22x4-= _0xff22x9/ 2:_0xff22x12== mxConstants[_0x2b73[480]]&& (_0xff22x4-= _0xff22x9),_0xff22x13== mxConstants[_0x2b73[481]]?_0xff22x5-= _0xff22xa/ 2:_0xff22x13== mxConstants[_0x2b73[482]]&& (_0xff22x5-= _0xff22xa),_0xff22x16= new mxRectangle((_0xff22x4+ 1)* _0xff22x15[_0x2b73[255]],_0xff22x5* _0xff22x15[_0x2b73[255]],(_0xff22x9- 2)* _0xff22x15[_0x2b73[255]],(_0xff22xa+ 2)* _0xff22x15[_0x2b73[255]])):null!= _0xff22x2[_0x2b73[1451]]&& this[_0x2b73[813]][_0x2b73[295]]== document?(_0xff22x16= _0xff22x2[_0x2b73[1451]](),_0xff22x3= mxClient[_0x2b73[80]]&& mxClient[_0x2b73[48]],_0xff22x16= new mxRectangle(_0xff22x16[_0x2b73[235]],_0xff22x16[_0x2b73[236]]+ (_0xff22x3?0:1),_0xff22x16[_0x2b73[117]],_0xff22x16[_0x2b73[119]]+ (_0xff22x3?1:0))):(_0xff22x16= document[_0x2b73[55]](_0x2b73[485]),_0xff22x16[_0x2b73[124]][_0x2b73[489]]= Math[_0x2b73[488]](_0xff22x15[_0x2b73[487]]* mxConstants[_0x2b73[490]])+ _0x2b73[168],_0xff22x16[_0x2b73[124]][_0x2b73[487]]= Math[_0x2b73[488]](_0xff22x15[_0x2b73[487]])+ _0x2b73[168],_0xff22x16[_0x2b73[124]][_0x2b73[486]]= _0xff22x15[_0x2b73[486]],_0xff22x16[_0x2b73[124]][_0x2b73[493]]= _0x2b73[494],_0xff22x16[_0x2b73[124]][_0x2b73[491]]= _0x2b73[492],_0xff22x16[_0x2b73[124]][_0x2b73[187]]= _0x2b73[188],_0xff22x16[_0x2b73[124]][_0x2b73[495]]= mxClient[_0x2b73[496]]?_0x2b73[497]:_0x2b73[498],_0xff22x16[_0x2b73[124]][_0x2b73[499]]= _0x2b73[500],(_0xff22x15[_0x2b73[666]]& mxConstants[_0x2b73[1410]])== mxConstants[_0x2b73[1410]]&& (_0xff22x16[_0x2b73[124]][_0x2b73[1452]]= _0x2b73[1447]),(_0xff22x15[_0x2b73[666]]& mxConstants[_0x2b73[1412]])== mxConstants[_0x2b73[1412]]&& (_0xff22x16[_0x2b73[124]][_0x2b73[666]]= _0x2b73[1449]),_0xff22x3= mxUtils[_0x2b73[321]](_0xff22x3,!1),_0xff22x16[_0x2b73[339]]= _0xff22x3[_0x2b73[230]](/\n/g,_0x2b73[1453]),document[_0x2b73[112]][_0x2b73[62]](_0xff22x16),_0xff22x9= _0xff22x16[_0x2b73[359]],_0xff22xa= _0xff22x16[_0x2b73[167]],_0xff22x16[_0x2b73[265]][_0x2b73[266]](_0xff22x16),_0xff22x12== mxConstants[_0x2b73[479]]?_0xff22x4-= _0xff22x9/ 2:_0xff22x12== mxConstants[_0x2b73[480]]&& (_0xff22x4-= _0xff22x9),_0xff22x13== mxConstants[_0x2b73[481]]?_0xff22x5-= _0xff22xa/ 2:_0xff22x13== mxConstants[_0x2b73[482]]&& (_0xff22x5-= _0xff22xa),_0xff22x16= new mxRectangle((_0xff22x4+ 1)* _0xff22x15[_0x2b73[255]],(_0xff22x5+ 2)* _0xff22x15[_0x2b73[255]],_0xff22x9* _0xff22x15[_0x2b73[255]],(_0xff22xa+ 1)* _0xff22x15[_0x2b73[255]]));null!= _0xff22x16&& (_0xff22x3= this[_0x2b73[55]](_0x2b73[1319]),_0xff22x3[_0x2b73[57]](_0x2b73[1334],_0xff22x15[_0x2b73[1261]]|| _0x2b73[130]),_0xff22x3[_0x2b73[57]](_0x2b73[1336],_0xff22x15[_0x2b73[1263]]|| _0x2b73[130]),_0xff22x3[_0x2b73[57]](_0x2b73[235],Math[_0x2b73[519]](_0xff22x16[_0x2b73[235]]- 1)),_0xff22x3[_0x2b73[57]](_0x2b73[236],Math[_0x2b73[519]](_0xff22x16[_0x2b73[236]]- 1)),_0xff22x3[_0x2b73[57]](_0x2b73[117],Math[_0x2b73[430]](_0xff22x16[_0x2b73[117]]+ 2)),_0xff22x3[_0x2b73[57]](_0x2b73[119],Math[_0x2b73[430]](_0xff22x16[_0x2b73[119]])),_0xff22x15= null!= _0xff22x15[_0x2b73[1263]]?Math[_0x2b73[160]](1,this[_0x2b73[1239]](_0xff22x15[_0x2b73[255]])):0,_0xff22x3[_0x2b73[57]](_0x2b73[1382],_0xff22x15),this[_0x2b73[813]][_0x2b73[295]]== document&& 1== mxUtils[_0x2b73[1454]](_0xff22x15,2)&& _0xff22x3[_0x2b73[57]](_0x2b73[535],_0x2b73[1455]),_0xff22x2[_0x2b73[950]](_0xff22x3,_0xff22x2[_0x2b73[285]]))}};mxSvgCanvas2D[_0x2b73[202]][_0x2b73[1336]]= function(){this[_0x2b73[1370]](!1,!0)};mxSvgCanvas2D[_0x2b73[202]][_0x2b73[1334]]= function(){this[_0x2b73[1370]](!0,!1)};mxSvgCanvas2D[_0x2b73[202]][_0x2b73[1337]]= function(){this[_0x2b73[1370]](!0,!0)};var mxVmlCanvas2D=function(_0xff22x2){mxAbstractCanvas2D[_0x2b73[239]](this);this[_0x2b73[813]]= _0xff22x2};mxUtils[_0x2b73[1284]](mxVmlCanvas2D,mxAbstractCanvas2D);mxVmlCanvas2D[_0x2b73[202]][_0x2b73[252]]= null;mxVmlCanvas2D[_0x2b73[202]][_0x2b73[1285]]= !0;mxVmlCanvas2D[_0x2b73[202]][_0x2b73[1219]]= _0x2b73[1456];mxVmlCanvas2D[_0x2b73[202]][_0x2b73[1221]]= _0x2b73[1457];mxVmlCanvas2D[_0x2b73[202]][_0x2b73[1225]]= _0x2b73[1458];mxVmlCanvas2D[_0x2b73[202]][_0x2b73[1227]]= _0x2b73[235];mxVmlCanvas2D[_0x2b73[202]][_0x2b73[1459]]= _0x2b73[110];mxVmlCanvas2D[_0x2b73[202]][_0x2b73[1460]]= 1;mxVmlCanvas2D[_0x2b73[202]][_0x2b73[1370]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=this[_0x2b73[252]],_0xff22x5=this[_0x2b73[724]];if(null!= _0xff22x4){if(_0x2b73[253]== _0xff22x4[_0x2b73[301]]){if(null!= this[_0x2b73[1215]]&& 0< this[_0x2b73[1215]][_0x2b73[67]]){_0xff22x4[_0x2b73[1215]]= this[_0x2b73[1215]][_0x2b73[234]](_0x2b73[185])+ _0x2b73[1461],_0xff22x4[_0x2b73[124]][_0x2b73[117]]= this[_0x2b73[813]][_0x2b73[124]][_0x2b73[117]],_0xff22x4[_0x2b73[124]][_0x2b73[119]]= this[_0x2b73[813]][_0x2b73[124]][_0x2b73[119]],_0xff22x4[_0x2b73[1462]]= parseInt(_0xff22x4[_0x2b73[124]][_0x2b73[117]])+ _0x2b73[185]+ parseInt(_0xff22x4[_0x2b73[124]][_0x2b73[119]])}else {return}};_0xff22x4[_0x2b73[1463]]= this[_0x2b73[1239]](Math[_0x2b73[160]](1,_0xff22x5[_0x2b73[610]]* _0xff22x5[_0x2b73[255]]/ this[_0x2b73[1460]]))+ _0x2b73[168];_0xff22x5[_0x2b73[639]]&& this[_0x2b73[813]][_0x2b73[62]](this[_0x2b73[1375]](_0xff22x4,_0xff22x2&& null!= _0xff22x5[_0x2b73[604]],_0xff22x3&& null!= _0xff22x5[_0x2b73[608]]));_0xff22x3&& null!= _0xff22x5[_0x2b73[608]]?(_0xff22x4[_0x2b73[1464]]= _0x2b73[128],_0xff22x4[_0x2b73[1306]]= _0xff22x5[_0x2b73[608]]):_0xff22x4[_0x2b73[1464]]= _0x2b73[308];_0xff22x4[_0x2b73[62]](this[_0x2b73[1465]]());_0xff22x2&& null!= _0xff22x5[_0x2b73[604]]?_0xff22x4[_0x2b73[62]](this[_0x2b73[1466]]()):this[_0x2b73[1229]]&& (_0x2b73[253]!= _0xff22x4[_0x2b73[301]]|| this[_0x2b73[1215]][this[_0x2b73[1215]][_0x2b73[67]]- 1]== this[_0x2b73[1227]])?_0xff22x4[_0x2b73[62]](this[_0x2b73[1467]]()):_0xff22x4[_0x2b73[1468]]= _0x2b73[308];this[_0x2b73[813]][_0x2b73[62]](_0xff22x4)}};mxVmlCanvas2D[_0x2b73[202]][_0x2b73[1467]]= function(){var _0xff22x2=document[_0x2b73[55]](mxClient[_0x2b73[463]]+ _0x2b73[1469]);_0xff22x2[_0x2b73[390]]= mxClient[_0x2b73[88]]+ _0x2b73[1470];_0xff22x2[_0x2b73[60]]= _0x2b73[1471];return _0xff22x2};mxVmlCanvas2D[_0x2b73[202]][_0x2b73[1466]]= function(){var _0xff22x2=this[_0x2b73[724]],_0xff22x3=document[_0x2b73[55]](mxClient[_0x2b73[463]]+ _0x2b73[1469]);_0xff22x3[_0x2b73[352]]= _0xff22x2[_0x2b73[604]];if(null!= _0xff22x2[_0x2b73[606]]){_0xff22x3[_0x2b73[60]]= _0x2b73[1299];_0xff22x3[_0x2b73[865]]= _0x2b73[130];_0xff22x3[_0x2b73[1472]]= _0xff22x2[_0x2b73[606]];var _0xff22x4=180- _0xff22x2[_0x2b73[603]],_0xff22x4=_0xff22x2[_0x2b73[607]]== mxConstants[_0x2b73[1359]]?_0xff22x4- (90+ (_0x2b73[235]== this[_0x2b73[813]][_0x2b73[124]][_0x2b73[1473]]?180:0)):_0xff22x2[_0x2b73[607]]== mxConstants[_0x2b73[1356]]?_0xff22x4+ (90+ (_0x2b73[235]== this[_0x2b73[813]][_0x2b73[124]][_0x2b73[1473]]?180:0)):_0xff22x2[_0x2b73[607]]== mxConstants[_0x2b73[1358]]?_0xff22x4- (180+ (_0x2b73[236]== this[_0x2b73[813]][_0x2b73[124]][_0x2b73[1473]]?-180:0)):_0xff22x4+ (_0x2b73[236]== this[_0x2b73[813]][_0x2b73[124]][_0x2b73[1473]]?-180:0);if(_0x2b73[235]== this[_0x2b73[813]][_0x2b73[124]][_0x2b73[1473]]|| _0x2b73[236]== this[_0x2b73[813]][_0x2b73[124]][_0x2b73[1473]]){_0xff22x4*= -1};_0xff22x3[_0x2b73[1474]]= mxUtils[_0x2b73[1454]](_0xff22x4,360);_0xff22x3[_0x2b73[461]]= 100* _0xff22x2[_0x2b73[1244]]* _0xff22x2[_0x2b73[1247]]+ _0x2b73[229];_0xff22x3[_0x2b73[57]](mxClient[_0x2b73[1475]]+ _0x2b73[1476],100* _0xff22x2[_0x2b73[1244]]* _0xff22x2[_0x2b73[1248]]+ _0x2b73[229])}else {1> _0xff22x2[_0x2b73[1244]]&& (_0xff22x3[_0x2b73[461]]= 100* _0xff22x2[_0x2b73[1244]]+ _0x2b73[229])};return _0xff22x3};mxVmlCanvas2D[_0x2b73[202]][_0x2b73[1465]]= function(){var _0xff22x2=this[_0x2b73[724]],_0xff22x3=document[_0x2b73[55]](mxClient[_0x2b73[463]]+ _0x2b73[1477]);_0xff22x3[_0x2b73[1478]]= _0xff22x2[_0x2b73[1254]]|| _0x2b73[1232];_0xff22x3[_0x2b73[1479]]= _0xff22x2[_0x2b73[1256]]|| _0x2b73[1233];_0xff22x3[_0x2b73[1313]]= _0xff22x2[_0x2b73[1258]]|| _0x2b73[1480];1> _0xff22x2[_0x2b73[1244]]&& (_0xff22x3[_0x2b73[461]]= 100* _0xff22x2[_0x2b73[1244]]+ _0x2b73[229]);_0xff22x2[_0x2b73[648]]&& (_0xff22x3[_0x2b73[1481]]= this[_0x2b73[1482]]());return _0xff22x3};mxVmlCanvas2D[_0x2b73[202]][_0x2b73[1482]]= function(){var _0xff22x2=_0x2b73[1483];if(null!= this[_0x2b73[724]][_0x2b73[649]]){var _0xff22x3=this[_0x2b73[724]][_0x2b73[649]][_0x2b73[224]](_0x2b73[185]);0< _0xff22x3[_0x2b73[67]]&& 1== _0xff22x3[0]&& (_0xff22x2= _0x2b73[1484])};return _0xff22x2};mxVmlCanvas2D[_0x2b73[202]][_0x2b73[1375]]= function(_0xff22x2,_0xff22x3,_0xff22x4){var _0xff22x5=this[_0x2b73[724]],_0xff22x9=-_0xff22x5[_0x2b73[603]]* (Math[_0x2b73[424]]/ 180),_0xff22xa=Math[_0x2b73[426]](_0xff22x9),_0xff22x9=Math[_0x2b73[427]](_0xff22x9),_0xff22x12=_0xff22x5[_0x2b73[1273]]* _0xff22x5[_0x2b73[255]],_0xff22x13=_0xff22x5[_0x2b73[1274]]* _0xff22x5[_0x2b73[255]];_0x2b73[235]== this[_0x2b73[813]][_0x2b73[124]][_0x2b73[1473]]?_0xff22x12*= -1:_0x2b73[236]== this[_0x2b73[813]][_0x2b73[124]][_0x2b73[1473]]&& (_0xff22x13*= -1);var _0xff22x14=_0xff22x2[_0x2b73[511]](!0);_0xff22x14[_0x2b73[124]][_0x2b73[945]]= Math[_0x2b73[488]](_0xff22x12* _0xff22xa- _0xff22x13* _0xff22x9)+ _0x2b73[168];_0xff22x14[_0x2b73[124]][_0x2b73[953]]= Math[_0x2b73[488]](_0xff22x12* _0xff22x9+ _0xff22x13* _0xff22xa)+ _0x2b73[168];8== document[_0x2b73[5]]&& (_0xff22x14[_0x2b73[1463]]= _0xff22x2[_0x2b73[1463]],_0x2b73[253]== _0xff22x2[_0x2b73[301]]&& (_0xff22x14[_0x2b73[1215]]= this[_0x2b73[1215]][_0x2b73[234]](_0x2b73[185])+ _0x2b73[1461],_0xff22x14[_0x2b73[124]][_0x2b73[117]]= this[_0x2b73[813]][_0x2b73[124]][_0x2b73[117]],_0xff22x14[_0x2b73[124]][_0x2b73[119]]= this[_0x2b73[813]][_0x2b73[124]][_0x2b73[119]],_0xff22x14[_0x2b73[1462]]= parseInt(_0xff22x2[_0x2b73[124]][_0x2b73[117]])+ _0x2b73[185]+ parseInt(_0xff22x2[_0x2b73[124]][_0x2b73[119]])));_0xff22x4?(_0xff22x14[_0x2b73[1306]]= _0xff22x5[_0x2b73[1269]],_0xff22x14[_0x2b73[62]](this[_0x2b73[1485]]())):_0xff22x14[_0x2b73[1464]]= _0x2b73[308];_0xff22x3?_0xff22x14[_0x2b73[62]](this[_0x2b73[1486]]()):_0xff22x14[_0x2b73[1468]]= _0x2b73[308];return _0xff22x14};mxVmlCanvas2D[_0x2b73[202]][_0x2b73[1486]]= function(){var _0xff22x2=document[_0x2b73[55]](mxClient[_0x2b73[463]]+ _0x2b73[1469]);_0xff22x2[_0x2b73[352]]= this[_0x2b73[724]][_0x2b73[1269]];_0xff22x2[_0x2b73[461]]= 100* this[_0x2b73[724]][_0x2b73[1244]]* this[_0x2b73[724]][_0x2b73[1271]]+ _0x2b73[229];return _0xff22x2};mxVmlCanvas2D[_0x2b73[202]][_0x2b73[1485]]= function(){var _0xff22x2=this[_0x2b73[1465]]();_0xff22x2[_0x2b73[461]]= 100* this[_0x2b73[724]][_0x2b73[1244]]* this[_0x2b73[724]][_0x2b73[1271]]+ _0x2b73[229];return _0xff22x2};mxVmlCanvas2D[_0x2b73[202]][_0x2b73[1294]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){_0xff22x3&& _0xff22x4?_0xff22x2+= 180:_0xff22x3?this[_0x2b73[813]][_0x2b73[124]][_0x2b73[1473]]= _0x2b73[235]:_0xff22x4&& (this[_0x2b73[813]][_0x2b73[124]][_0x2b73[1473]]= _0x2b73[236]);if(_0xff22x3?!_0xff22x4:_0xff22x4){_0xff22x2*= -1};this[_0x2b73[813]][_0x2b73[124]][_0x2b73[603]]= _0xff22x2;this[_0x2b73[724]][_0x2b73[603]]+= _0xff22x2;this[_0x2b73[724]][_0x2b73[1395]]= _0xff22x5;this[_0x2b73[724]][_0x2b73[1396]]= _0xff22x9};mxVmlCanvas2D[_0x2b73[202]][_0x2b73[1275]]= function(){mxAbstractCanvas2D[_0x2b73[202]][_0x2b73[1275]][_0x2b73[183]](this,arguments);this[_0x2b73[252]]= document[_0x2b73[55]](mxClient[_0x2b73[463]]+ _0x2b73[1487]);this[_0x2b73[252]][_0x2b73[124]][_0x2b73[491]]= _0x2b73[492]};mxVmlCanvas2D[_0x2b73[202]][_0x2b73[1278]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){var _0xff22x9=this[_0x2b73[724]],_0xff22xa=(this[_0x2b73[1217]]+ _0xff22x9[_0x2b73[1126]])* _0xff22x9[_0x2b73[255]],_0xff22x12=(this[_0x2b73[1218]]+ _0xff22x9[_0x2b73[1125]])* _0xff22x9[_0x2b73[255]];_0xff22x2= (_0xff22x2+ _0xff22x9[_0x2b73[1126]])* _0xff22x9[_0x2b73[255]];_0xff22x3= (_0xff22x3+ _0xff22x9[_0x2b73[1125]])* _0xff22x9[_0x2b73[255]];_0xff22x4= (_0xff22x4+ _0xff22x9[_0x2b73[1126]])* _0xff22x9[_0x2b73[255]];_0xff22x5= (_0xff22x5+ _0xff22x9[_0x2b73[1125]])* _0xff22x9[_0x2b73[255]];var _0xff22x12=_0xff22x12+ 2/ 3* (_0xff22x3- _0xff22x12),_0xff22x13=_0xff22x4+ 2/ 3* (_0xff22x2- _0xff22x4);_0xff22x3= _0xff22x5+ 2/ 3* (_0xff22x3- _0xff22x5);this[_0x2b73[1215]][_0x2b73[207]](_0x2b73[1488]+ this[_0x2b73[1239]](_0xff22xa+ 2/ 3* (_0xff22x2- _0xff22xa))+ _0x2b73[185]+ this[_0x2b73[1239]](_0xff22x12)+ _0x2b73[185]+ this[_0x2b73[1239]](_0xff22x13)+ _0x2b73[185]+ this[_0x2b73[1239]](_0xff22x3)+ _0x2b73[185]+ this[_0x2b73[1239]](_0xff22x4)+ _0x2b73[185]+ this[_0x2b73[1239]](_0xff22x5));this[_0x2b73[1217]]= _0xff22x4/ _0xff22x9[_0x2b73[255]]- _0xff22x9[_0x2b73[1126]];this[_0x2b73[1218]]= _0xff22x5/ _0xff22x9[_0x2b73[255]]- _0xff22x9[_0x2b73[1125]]};mxVmlCanvas2D[_0x2b73[202]][_0x2b73[1489]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){var _0xff22xa=this[_0x2b73[724]];_0xff22x2= document[_0x2b73[55]](_0xff22x2);_0xff22x2[_0x2b73[124]][_0x2b73[491]]= _0x2b73[492];_0xff22x2[_0x2b73[124]][_0x2b73[361]]= this[_0x2b73[1239]]((_0xff22x3+ _0xff22xa[_0x2b73[1126]])* _0xff22xa[_0x2b73[255]])+ _0x2b73[168];_0xff22x2[_0x2b73[124]][_0x2b73[125]]= this[_0x2b73[1239]]((_0xff22x4+ _0xff22xa[_0x2b73[1125]])* _0xff22xa[_0x2b73[255]])+ _0x2b73[168];_0xff22x2[_0x2b73[124]][_0x2b73[117]]= this[_0x2b73[1239]](_0xff22x5* _0xff22xa[_0x2b73[255]])+ _0x2b73[168];_0xff22x2[_0x2b73[124]][_0x2b73[119]]= this[_0x2b73[1239]](_0xff22x9* _0xff22xa[_0x2b73[255]])+ _0x2b73[168];return _0xff22x2};mxVmlCanvas2D[_0x2b73[202]][_0x2b73[1319]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){this[_0x2b73[252]]= this[_0x2b73[1489]](mxClient[_0x2b73[463]]+ _0x2b73[1490],_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5)};mxVmlCanvas2D[_0x2b73[202]][_0x2b73[1320]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa){this[_0x2b73[252]]= this[_0x2b73[1489]](mxClient[_0x2b73[463]]+ _0x2b73[1491],_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5);this[_0x2b73[252]][_0x2b73[57]](_0x2b73[1492],Math[_0x2b73[160]](100* _0xff22x9/ _0xff22x4,100* _0xff22xa/ _0xff22x5)+ _0x2b73[229])};mxVmlCanvas2D[_0x2b73[202]][_0x2b73[680]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){this[_0x2b73[252]]= this[_0x2b73[1489]](mxClient[_0x2b73[463]]+ _0x2b73[1493],_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5)};mxVmlCanvas2D[_0x2b73[202]][_0x2b73[618]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa,_0xff22x12,_0xff22x13){var _0xff22x14=null;_0xff22xa?(_0xff22x14= this[_0x2b73[1489]](mxClient[_0x2b73[463]]+ _0x2b73[1490],_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5),_0xff22x14[_0x2b73[1464]]= _0x2b73[308],_0xff22x2= document[_0x2b73[55]](mxClient[_0x2b73[463]]+ _0x2b73[1469]),_0xff22x2[_0x2b73[1322]]= _0xff22xa?_0x2b73[1494]:_0x2b73[1495],_0xff22x2[_0x2b73[1294]]= _0x2b73[128],_0xff22x2[_0x2b73[60]]= _0x2b73[1496],_0xff22x2[_0x2b73[390]]= _0xff22x9,_0xff22x14[_0x2b73[62]](_0xff22x2)):(_0xff22x14= this[_0x2b73[1489]](mxClient[_0x2b73[463]]+ _0x2b73[464],_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5),_0xff22x14[_0x2b73[390]]= _0xff22x9);_0xff22x12&& _0xff22x13?_0xff22x14[_0x2b73[124]][_0x2b73[603]]= _0x2b73[1497]:_0xff22x12?_0xff22x14[_0x2b73[124]][_0x2b73[1473]]= _0x2b73[235]:_0xff22x13&& (_0xff22x14[_0x2b73[124]][_0x2b73[1473]]= _0x2b73[236]);1> this[_0x2b73[724]][_0x2b73[1244]]&& (_0xff22x14[_0x2b73[124]][_0x2b73[347]]+= _0x2b73[459]+ 100* this[_0x2b73[724]][_0x2b73[1244]]+ _0x2b73[460]);this[_0x2b73[813]][_0x2b73[62]](_0xff22x14)};mxVmlCanvas2D[_0x2b73[202]][_0x2b73[1404]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){_0xff22x4= document[_0x2b73[55]](_0x2b73[485]);var _0xff22x9=this[_0x2b73[724]],_0xff22xa=_0x2b73[110];null!= _0xff22x9[_0x2b73[1261]]&& (_0xff22xa+= _0x2b73[1418]+ _0xff22x9[_0x2b73[1261]]+ _0x2b73[471]);null!= _0xff22x9[_0x2b73[1263]]&& (_0xff22xa+= _0x2b73[1419]+ _0xff22x9[_0x2b73[1263]]+ _0x2b73[471]);mxUtils[_0x2b73[1331]](_0xff22x2)?_0xff22x4[_0x2b73[62]](_0xff22x2):0< _0xff22xa[_0x2b73[67]]&& !_0xff22x5?(_0xff22x5= document[_0x2b73[55]](_0x2b73[485]),_0xff22x5[_0x2b73[124]][_0x2b73[103]]= _0xff22xa,_0xff22x5[_0x2b73[124]][_0x2b73[495]]= mxClient[_0x2b73[496]]?_0x2b73[497]:_0x2b73[498],_0xff22x5[_0x2b73[124]][_0x2b73[499]]= _0x2b73[500],_0xff22x5[_0x2b73[339]]= _0xff22x2,_0xff22x4[_0x2b73[62]](_0xff22x5)):(_0xff22x4[_0x2b73[124]][_0x2b73[103]]= _0xff22xa,_0xff22x4[_0x2b73[339]]= _0xff22x2);_0xff22x2= _0xff22x4[_0x2b73[124]];_0xff22x2[_0x2b73[487]]= Math[_0x2b73[488]](_0xff22x9[_0x2b73[487]]/ this[_0x2b73[1460]])+ _0x2b73[168];_0xff22x2[_0x2b73[486]]= _0xff22x9[_0x2b73[486]];_0xff22x2[_0x2b73[352]]= _0xff22x9[_0x2b73[665]];_0xff22x2[_0x2b73[123]]= _0x2b73[125];_0xff22x2[_0x2b73[1165]]= _0xff22x3|| _0x2b73[361];_0xff22x2[_0x2b73[489]]= Math[_0x2b73[488]](_0xff22x9[_0x2b73[487]]* mxConstants[_0x2b73[490]]/ this[_0x2b73[1460]])+ _0x2b73[168];(_0xff22x9[_0x2b73[666]]& mxConstants[_0x2b73[1410]])== mxConstants[_0x2b73[1410]]&& (_0xff22x2[_0x2b73[1452]]= _0x2b73[1447]);(_0xff22x9[_0x2b73[666]]& mxConstants[_0x2b73[1412]])== mxConstants[_0x2b73[1412]]&& (_0xff22x2[_0x2b73[666]]= _0x2b73[1449]);(_0xff22x9[_0x2b73[666]]& mxConstants[_0x2b73[1414]])== mxConstants[_0x2b73[1414]]&& (_0xff22x2[_0x2b73[1498]]= _0x2b73[355]);return _0xff22x4};mxVmlCanvas2D[_0x2b73[202]][_0x2b73[963]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa,_0xff22x12,_0xff22x13,_0xff22x14,_0xff22x15,_0xff22x16,_0xff22x17){if(this[_0x2b73[1285]]&& null!= _0xff22x9){var _0xff22x18=this[_0x2b73[724]];if(_0x2b73[1428]== _0xff22x14){null!= _0xff22x18[_0x2b73[603]]&& (_0xff22x3= this[_0x2b73[1241]](_0xff22x2,_0xff22x3,_0xff22x18[_0x2b73[603]],_0xff22x18[_0x2b73[1395]],_0xff22x18[_0x2b73[1396]]),_0xff22x2= _0xff22x3[_0x2b73[235]],_0xff22x3= _0xff22x3[_0x2b73[236]]);8== document[_0x2b73[5]]?(_0xff22x2+= _0xff22x18[_0x2b73[1126]],_0xff22x3+= _0xff22x18[_0x2b73[1125]]):(_0xff22x2*= _0xff22x18[_0x2b73[255]],_0xff22x3*= _0xff22x18[_0x2b73[255]]);_0xff22x14= 8== document[_0x2b73[5]]?document[_0x2b73[55]](mxClient[_0x2b73[463]]+ _0x2b73[1499]):document[_0x2b73[55]](_0x2b73[485]);_0xff22x14[_0x2b73[124]][_0x2b73[491]]= _0x2b73[492];_0xff22x14[_0x2b73[124]][_0x2b73[495]]= _0x2b73[497];_0xff22x14[_0x2b73[124]][_0x2b73[361]]= this[_0x2b73[1239]](_0xff22x2)+ _0x2b73[168];_0xff22x14[_0x2b73[124]][_0x2b73[125]]= this[_0x2b73[1239]](_0xff22x3)+ _0x2b73[168];_0xff22x14[_0x2b73[124]][_0x2b73[499]]= _0xff22x18[_0x2b73[255]];var _0xff22x19=document[_0x2b73[55]](_0x2b73[485]);_0xff22x19[_0x2b73[124]][_0x2b73[491]]= _0x2b73[1500];_0xff22x19[_0x2b73[124]][_0x2b73[495]]= _0x2b73[497];var _0xff22x1a=mxUtils[_0x2b73[1501]](_0xff22xa,_0xff22x12),_0xff22x1b=_0xff22x1a[_0x2b73[235]],_0xff22x1a=_0xff22x1a[_0x2b73[236]];_0xff22x9= this[_0x2b73[1404]](_0xff22x9,_0xff22xa,_0xff22x12,_0xff22x15);_0xff22xa= document[_0x2b73[55]](_0x2b73[485]);_0xff22x13?(!_0xff22x16&& 0< _0xff22x4&& (_0xff22x9[_0x2b73[124]][_0x2b73[117]]= Math[_0x2b73[488]](_0xff22x4)+ _0x2b73[168]),_0xff22x9[_0x2b73[124]][_0x2b73[493]]= _0x2b73[1502]):_0xff22x9[_0x2b73[124]][_0x2b73[493]]= _0x2b73[494];_0xff22x13= _0xff22x18[_0x2b73[603]]+ (_0xff22x17|| 0);this[_0x2b73[1216]]&& 0!= _0xff22x13?(_0xff22xa[_0x2b73[124]][_0x2b73[495]]= _0x2b73[497],_0xff22xa[_0x2b73[124]][_0x2b73[499]]= _0x2b73[500],_0xff22xa[_0x2b73[62]](_0xff22x9),8== document[_0x2b73[5]]&& _0x2b73[529]!= this[_0x2b73[813]][_0x2b73[301]]?(_0xff22x19[_0x2b73[62]](_0xff22xa),_0xff22x14[_0x2b73[62]](_0xff22x19)):_0xff22x14[_0x2b73[62]](_0xff22xa)):8== document[_0x2b73[5]]?(_0xff22x19[_0x2b73[62]](_0xff22x9),_0xff22x14[_0x2b73[62]](_0xff22x19)):(_0xff22x9[_0x2b73[124]][_0x2b73[495]]= _0x2b73[497],_0xff22x14[_0x2b73[62]](_0xff22x9));_0x2b73[529]!= this[_0x2b73[813]][_0x2b73[301]]?(_0xff22x17= document[_0x2b73[55]](mxClient[_0x2b73[463]]+ _0x2b73[1490]),_0xff22x17[_0x2b73[1464]]= _0x2b73[308],_0xff22x17[_0x2b73[1468]]= _0x2b73[308],_0xff22x17[_0x2b73[62]](_0xff22x14),this[_0x2b73[813]][_0x2b73[62]](_0xff22x17)):this[_0x2b73[813]][_0x2b73[62]](_0xff22x14);_0xff22x16?(_0xff22x9[_0x2b73[124]][_0x2b73[277]]= _0x2b73[188],0< _0xff22x4&& (_0xff22x9[_0x2b73[124]][_0x2b73[117]]= Math[_0x2b73[488]](_0xff22x4)+ _0x2b73[168]),0< _0xff22x5&& 8== document[_0x2b73[5]]&& (_0xff22x9[_0x2b73[124]][_0x2b73[1503]]= Math[_0x2b73[488]](_0xff22x5)+ _0x2b73[168])):_0xff22x15&& (_0xff22x9[_0x2b73[124]][_0x2b73[117]]= _0xff22x4+ _0x2b73[168],0< _0xff22x5&& (_0xff22x9[_0x2b73[124]][_0x2b73[1503]]= Math[_0x2b73[488]](_0xff22x5)+ _0x2b73[168]));if(this[_0x2b73[1216]]&& 0!= _0xff22x13){_0xff22x4= _0xff22x13* (Math[_0x2b73[424]]/ 180);_0xff22x13= parseFloat(parseFloat(Math[_0x2b73[426]](_0xff22x4))[_0x2b73[1293]](8));_0xff22x17= parseFloat(parseFloat(Math[_0x2b73[427]](-_0xff22x4))[_0x2b73[1293]](8));_0xff22x4%= 2* Math[_0x2b73[424]];0> _0xff22x4&& (_0xff22x4+= 2* Math[_0x2b73[424]]);_0xff22x4%= Math[_0x2b73[424]];_0xff22x4> Math[_0x2b73[424]]/ 2&& (_0xff22x4= Math[_0x2b73[424]]- _0xff22x4);_0xff22x12= Math[_0x2b73[426]](_0xff22x4);var _0xff22x1c=Math[_0x2b73[427]](_0xff22x4);8== document[_0x2b73[5]]&& (_0xff22x9[_0x2b73[124]][_0x2b73[495]]= _0x2b73[498],_0xff22xa[_0x2b73[124]][_0x2b73[495]]= _0x2b73[498],_0xff22x19[_0x2b73[124]][_0x2b73[495]]= _0x2b73[498]);_0xff22x9[_0x2b73[124]][_0x2b73[187]]= _0x2b73[188];document[_0x2b73[112]][_0x2b73[62]](_0xff22x9);_0xff22x4= _0xff22x9[_0x2b73[359]];_0xff22x19= _0xff22x9[_0x2b73[167]];if(mxClient[_0x2b73[496]]&& (_0xff22x16|| _0xff22x15)&& _0xff22x19> _0xff22x5){_0xff22x19= _0xff22x5,_0xff22x9[_0x2b73[124]][_0x2b73[119]]= _0xff22x19+ _0x2b73[168]};_0xff22x5= _0xff22x19;_0xff22x16= (_0xff22x5- _0xff22x5* _0xff22x12+ _0xff22x4* -_0xff22x1c)/ 2- _0xff22x17* _0xff22x4* (_0xff22x1b+ 0.5)+ _0xff22x13* _0xff22x5* (_0xff22x1a+ 0.5);_0xff22x15= (_0xff22x4- _0xff22x4* _0xff22x12+ _0xff22x5* -_0xff22x1c)/ 2+ _0xff22x13* _0xff22x4* (_0xff22x1b+ 0.5)+ _0xff22x17* _0xff22x5* (_0xff22x1a+ 0.5);_0x2b73[1504]== _0xff22x14[_0x2b73[301]]&& _0x2b73[529]== this[_0x2b73[813]][_0x2b73[301]]?(_0xff22x1b= document[_0x2b73[55]](_0x2b73[485]),_0xff22x1b[_0x2b73[124]][_0x2b73[495]]= _0x2b73[498],_0xff22x1b[_0x2b73[124]][_0x2b73[491]]= _0x2b73[492],_0xff22x1b[_0x2b73[124]][_0x2b73[361]]= this[_0x2b73[1239]](_0xff22x2+ (_0xff22x15- _0xff22x4/ 2)* _0xff22x18[_0x2b73[255]])+ _0x2b73[168],_0xff22x1b[_0x2b73[124]][_0x2b73[125]]= this[_0x2b73[1239]](_0xff22x3+ (_0xff22x16- _0xff22x5/ 2)* _0xff22x18[_0x2b73[255]])+ _0x2b73[168],_0xff22x14[_0x2b73[265]][_0x2b73[62]](_0xff22x1b),_0xff22x1b[_0x2b73[62]](_0xff22x14)):(_0xff22x18= 8== document[_0x2b73[5]]?1:_0xff22x18[_0x2b73[255]],_0xff22x14[_0x2b73[124]][_0x2b73[361]]= this[_0x2b73[1239]](_0xff22x2+ (_0xff22x15- _0xff22x4/ 2)* _0xff22x18)+ _0x2b73[168],_0xff22x14[_0x2b73[124]][_0x2b73[125]]= this[_0x2b73[1239]](_0xff22x3+ (_0xff22x16- _0xff22x5/ 2)* _0xff22x18)+ _0x2b73[168]);_0xff22xa[_0x2b73[124]][_0x2b73[347]]= _0x2b73[1505]+ _0xff22x13+ _0x2b73[1506]+ _0xff22x17+ _0x2b73[1507]+ -_0xff22x17+ _0x2b73[1508]+ _0xff22x13+ _0x2b73[1509];_0xff22xa[_0x2b73[124]][_0x2b73[1028]]= this[_0x2b73[1459]];1> this[_0x2b73[724]][_0x2b73[1244]]&& (_0xff22xa[_0x2b73[124]][_0x2b73[347]]+= _0x2b73[459]+ 100* this[_0x2b73[724]][_0x2b73[1244]]+ _0x2b73[460]);_0xff22x9[_0x2b73[124]][_0x2b73[187]]= _0x2b73[110];_0xff22xa[_0x2b73[62]](_0xff22x9)}else {8!= document[_0x2b73[5]]?(_0xff22x9[_0x2b73[124]][_0x2b73[123]]= _0x2b73[125],1> this[_0x2b73[724]][_0x2b73[1244]]&& (_0xff22x14[_0x2b73[124]][_0x2b73[347]]= _0x2b73[459]+ 100* this[_0x2b73[724]][_0x2b73[1244]]+ _0x2b73[460]),_0xff22x18= _0xff22x9[_0x2b73[265]],_0xff22x9[_0x2b73[124]][_0x2b73[187]]= _0x2b73[188],document[_0x2b73[112]][_0x2b73[62]](_0xff22x9),_0xff22x4= _0xff22x9[_0x2b73[359]],_0xff22x19= _0xff22x9[_0x2b73[167]],mxClient[_0x2b73[496]]&& (_0xff22x16&& _0xff22x19> _0xff22x5)&& (_0xff22x19= _0xff22x5,_0xff22x9[_0x2b73[124]][_0x2b73[119]]= _0xff22x19+ _0x2b73[168]),_0xff22x5= _0xff22x19,_0xff22x9[_0x2b73[124]][_0x2b73[187]]= _0x2b73[110],_0xff22x18[_0x2b73[62]](_0xff22x9),_0xff22x14[_0x2b73[124]][_0x2b73[361]]= this[_0x2b73[1239]](_0xff22x2+ _0xff22x4* _0xff22x1b* this[_0x2b73[724]][_0x2b73[255]])+ _0x2b73[168],_0xff22x14[_0x2b73[124]][_0x2b73[125]]= this[_0x2b73[1239]](_0xff22x3+ _0xff22x5* _0xff22x1a* this[_0x2b73[724]][_0x2b73[255]])+ _0x2b73[168]):(1> this[_0x2b73[724]][_0x2b73[1244]]&& (_0xff22x9[_0x2b73[124]][_0x2b73[347]]= _0x2b73[459]+ 100* this[_0x2b73[724]][_0x2b73[1244]]+ _0x2b73[460]),_0xff22x19[_0x2b73[124]][_0x2b73[361]]= 100* _0xff22x1b+ _0x2b73[229],_0xff22x19[_0x2b73[124]][_0x2b73[125]]= 100* _0xff22x1a+ _0x2b73[229])}}else {this[_0x2b73[1436]](_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,mxUtils[_0x2b73[321]](_0xff22x9,!1),_0xff22xa,_0xff22x12,_0xff22x13,_0xff22x14,_0xff22x15,_0xff22x16,_0xff22x17)}}};mxVmlCanvas2D[_0x2b73[202]][_0x2b73[1436]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa,_0xff22x12,_0xff22x13,_0xff22x14,_0xff22x15,_0xff22x16,_0xff22x17){_0xff22x5= this[_0x2b73[724]];_0xff22x2= (_0xff22x2+ _0xff22x5[_0x2b73[1126]])* _0xff22x5[_0x2b73[255]];_0xff22x3= (_0xff22x3+ _0xff22x5[_0x2b73[1125]])* _0xff22x5[_0x2b73[255]];_0xff22x4= document[_0x2b73[55]](mxClient[_0x2b73[463]]+ _0x2b73[1487]);_0xff22x4[_0x2b73[124]][_0x2b73[117]]= _0x2b73[942];_0xff22x4[_0x2b73[124]][_0x2b73[119]]= _0x2b73[942];_0xff22x4[_0x2b73[1464]]= _0x2b73[308];_0xff22x15= document[_0x2b73[55]](mxClient[_0x2b73[463]]+ _0x2b73[1469]);_0xff22x15[_0x2b73[352]]= _0xff22x5[_0x2b73[665]];_0xff22x15[_0x2b73[461]]= 100* _0xff22x5[_0x2b73[1244]]+ _0x2b73[229];_0xff22x4[_0x2b73[62]](_0xff22x15);_0xff22x15= document[_0x2b73[55]](mxClient[_0x2b73[463]]+ _0x2b73[1510]);_0xff22x15[_0x2b73[1511]]= _0x2b73[128];_0xff22x15[_0x2b73[6]]= _0x2b73[1512]+ this[_0x2b73[1239]](0)+ _0x2b73[185]+ this[_0x2b73[1239]](0)+ _0x2b73[1513]+ this[_0x2b73[1239]](1)+ _0x2b73[185]+ this[_0x2b73[1239]](0);_0xff22x4[_0x2b73[62]](_0xff22x15);_0xff22x15= document[_0x2b73[55]](mxClient[_0x2b73[463]]+ _0x2b73[1514]);_0xff22x15[_0x2b73[124]][_0x2b73[103]]= _0x2b73[1515]+ _0xff22xa;_0xff22x15[_0x2b73[124]][_0x2b73[611]]= _0xff22xa;_0xff22x15[_0x2b73[124]][_0x2b73[486]]= _0xff22x5[_0x2b73[486]];_0xff22x15[_0x2b73[1516]]= _0xff22x9;_0xff22x15[_0x2b73[747]]= _0x2b73[128];_0xff22xa= Math[_0x2b73[488]](_0xff22x5[_0x2b73[487]]* _0xff22x5[_0x2b73[255]]/ this[_0x2b73[1460]]);_0xff22x15[_0x2b73[124]][_0x2b73[487]]= _0xff22xa+ _0x2b73[168];(_0xff22x5[_0x2b73[666]]& mxConstants[_0x2b73[1410]])== mxConstants[_0x2b73[1410]]&& (_0xff22x15[_0x2b73[124]][_0x2b73[1452]]= _0x2b73[1447]);(_0xff22x5[_0x2b73[666]]& mxConstants[_0x2b73[1412]])== mxConstants[_0x2b73[1412]]&& (_0xff22x15[_0x2b73[124]][_0x2b73[666]]= _0x2b73[1449]);(_0xff22x5[_0x2b73[666]]& mxConstants[_0x2b73[1414]])== mxConstants[_0x2b73[1414]]&& (_0xff22x15[_0x2b73[124]][_0x2b73[354]]= _0x2b73[355]);_0xff22x9= _0xff22x9[_0x2b73[224]](_0x2b73[192]);_0xff22x5= _0xff22xa+ (_0xff22x9[_0x2b73[67]]- 1)* _0xff22xa* mxConstants[_0x2b73[490]];_0xff22xa= _0xff22x9= 0;_0xff22x12== mxConstants[_0x2b73[482]]?_0xff22xa= -_0xff22x5/ 2:_0xff22x12!= mxConstants[_0x2b73[481]]&& (_0xff22xa= _0xff22x5/ 2);null!= _0xff22x17&& (_0xff22x4[_0x2b73[124]][_0x2b73[603]]= _0xff22x17,_0xff22x12= _0xff22x17* (Math[_0x2b73[424]]/ 180),_0xff22x9= Math[_0x2b73[427]](_0xff22x12)* _0xff22xa,_0xff22xa*= Math[_0x2b73[426]](_0xff22x12));_0xff22x4[_0x2b73[62]](_0xff22x15);_0xff22x4[_0x2b73[124]][_0x2b73[361]]= this[_0x2b73[1239]](_0xff22x2- _0xff22x9)+ _0x2b73[168];_0xff22x4[_0x2b73[124]][_0x2b73[125]]= this[_0x2b73[1239]](_0xff22x3+ _0xff22xa)+ _0x2b73[168];this[_0x2b73[813]][_0x2b73[62]](_0xff22x4)};mxVmlCanvas2D[_0x2b73[202]][_0x2b73[1336]]= function(){this[_0x2b73[1370]](!1,!0)};mxVmlCanvas2D[_0x2b73[202]][_0x2b73[1334]]= function(){this[_0x2b73[1370]](!0,!1)};mxVmlCanvas2D[_0x2b73[202]][_0x2b73[1337]]= function(){this[_0x2b73[1370]](!0,!0)};function mxGuide(_0xff22x2,_0xff22x3){this[_0x2b73[1179]]= _0xff22x2;this[_0x2b73[1517]](_0xff22x3)}mxGuide[_0x2b73[202]][_0x2b73[1179]]= null;mxGuide[_0x2b73[202]][_0x2b73[1214]]= null;mxGuide[_0x2b73[202]][_0x2b73[662]]= !0;mxGuide[_0x2b73[202]][_0x2b73[704]]= !0;mxGuide[_0x2b73[202]][_0x2b73[1518]]= null;mxGuide[_0x2b73[202]][_0x2b73[1519]]= null;mxGuide[_0x2b73[202]][_0x2b73[1517]]= function(_0xff22x2){this[_0x2b73[1214]]= _0xff22x2};mxGuide[_0x2b73[202]][_0x2b73[1019]]= function(_0xff22x2){return !0};mxGuide[_0x2b73[202]][_0x2b73[1520]]= function(){return this[_0x2b73[1179]][_0x2b73[1020]]* this[_0x2b73[1179]][_0x2b73[441]][_0x2b73[255]]/ 2};mxGuide[_0x2b73[202]][_0x2b73[1521]]= function(_0xff22x2){_0xff22x2= new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH);_0xff22x2[_0x2b73[1522]]= !0;return _0xff22x2};mxGuide[_0x2b73[202]][_0x2b73[582]]= function(_0xff22x2,_0xff22x3,_0xff22x4){if(null!= this[_0x2b73[1214]]&& (this[_0x2b73[662]]|| this[_0x2b73[704]])&& null!= _0xff22x2&& null!= _0xff22x3){var _0xff22x5=this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[513]],_0xff22x9=this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[255]],_0xff22xa=_0xff22x3[_0x2b73[235]],_0xff22x12=_0xff22x3[_0x2b73[236]],_0xff22x13=!1,_0xff22x14=!1,_0xff22x15=this[_0x2b73[1520]](),_0xff22x16=_0xff22x15,_0xff22x17=_0xff22x15,_0xff22x15=_0xff22x2[_0x2b73[238]]();_0xff22x15[_0x2b73[235]]+= _0xff22x3[_0x2b73[235]];_0xff22x15[_0x2b73[236]]+= _0xff22x3[_0x2b73[236]];var _0xff22x18=_0xff22x15[_0x2b73[235]],_0xff22x19=_0xff22x15[_0x2b73[235]]+ _0xff22x15[_0x2b73[117]],_0xff22x1a=_0xff22x15[_0x2b73[241]](),_0xff22x1b=_0xff22x15[_0x2b73[236]],_0xff22x1c=_0xff22x15[_0x2b73[236]]+ _0xff22x15[_0x2b73[119]],_0xff22x1d=_0xff22x15[_0x2b73[242]]();_0xff22x3= function(_0xff22x3){_0xff22x3+= this[_0x2b73[1179]][_0x2b73[1136]];var _0xff22x4=!1;Math[_0x2b73[425]](_0xff22x3- _0xff22x1a)< _0xff22x16?(_0xff22xa= _0xff22x3- _0xff22x2[_0x2b73[241]](),_0xff22x16= Math[_0x2b73[425]](_0xff22x3- _0xff22x1a),_0xff22x4= !0):Math[_0x2b73[425]](_0xff22x3- _0xff22x18)< _0xff22x16?(_0xff22xa= _0xff22x3- _0xff22x2[_0x2b73[235]],_0xff22x16= Math[_0x2b73[425]](_0xff22x3- _0xff22x18),_0xff22x4= !0):Math[_0x2b73[425]](_0xff22x3- _0xff22x19)< _0xff22x16&& (_0xff22xa= _0xff22x3- _0xff22x2[_0x2b73[235]]- _0xff22x2[_0x2b73[117]],_0xff22x16= Math[_0x2b73[425]](_0xff22x3- _0xff22x19),_0xff22x4= !0);if(_0xff22x4){null== this[_0x2b73[1518]]&& (this[_0x2b73[1518]]= this[_0x2b73[1521]](!0),this[_0x2b73[1518]][_0x2b73[507]]= this[_0x2b73[1179]][_0x2b73[507]]!= mxConstants[_0x2b73[508]]?mxConstants[_0x2b73[1523]]:mxConstants[_0x2b73[508]],this[_0x2b73[1518]][_0x2b73[1229]]= !1,this[_0x2b73[1518]][_0x2b73[176]](this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[1524]]()));var _0xff22x5=this[_0x2b73[1179]][_0x2b73[526]];_0xff22x3-= this[_0x2b73[1179]][_0x2b73[1136]];this[_0x2b73[1518]][_0x2b73[1525]]= [ new mxPoint(_0xff22x3,-this[_0x2b73[1179]][_0x2b73[1137]]), new mxPoint(_0xff22x3,_0xff22x5[_0x2b73[191]]- 3- this[_0x2b73[1179]][_0x2b73[1137]])]};_0xff22x13= _0xff22x13|| _0xff22x4};for(var _0xff22x15=function(_0xff22x3){_0xff22x3+= this[_0x2b73[1179]][_0x2b73[1137]];var _0xff22x4=!1;Math[_0x2b73[425]](_0xff22x3- _0xff22x1d)< _0xff22x17?(_0xff22x12= _0xff22x3- _0xff22x2[_0x2b73[242]](),_0xff22x17= Math[_0x2b73[425]](_0xff22x3- _0xff22x1d),_0xff22x4= !0):Math[_0x2b73[425]](_0xff22x3- _0xff22x1b)< _0xff22x17?(_0xff22x12= _0xff22x3- _0xff22x2[_0x2b73[236]],_0xff22x17= Math[_0x2b73[425]](_0xff22x3- _0xff22x1b),_0xff22x4= !0):Math[_0x2b73[425]](_0xff22x3- _0xff22x1c)< _0xff22x17&& (_0xff22x12= _0xff22x3- _0xff22x2[_0x2b73[236]]- _0xff22x2[_0x2b73[119]],_0xff22x17= Math[_0x2b73[425]](_0xff22x3- _0xff22x1c),_0xff22x4= !0);if(_0xff22x4){null== this[_0x2b73[1519]]&& (this[_0x2b73[1519]]= this[_0x2b73[1521]](!1),this[_0x2b73[1519]][_0x2b73[507]]= this[_0x2b73[1179]][_0x2b73[507]]!= mxConstants[_0x2b73[508]]?mxConstants[_0x2b73[1523]]:mxConstants[_0x2b73[508]],this[_0x2b73[1519]][_0x2b73[1229]]= !1,this[_0x2b73[1519]][_0x2b73[176]](this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[1524]]()));var _0xff22x5=this[_0x2b73[1179]][_0x2b73[526]];_0xff22x3-= this[_0x2b73[1179]][_0x2b73[1137]];this[_0x2b73[1519]][_0x2b73[1525]]= [ new mxPoint(-this[_0x2b73[1179]][_0x2b73[1136]],_0xff22x3), new mxPoint(_0xff22x5[_0x2b73[1526]]- 3- this[_0x2b73[1179]][_0x2b73[1136]],_0xff22x3)]};_0xff22x14= _0xff22x14|| _0xff22x4},_0xff22x1e=0;_0xff22x1e< this[_0x2b73[1214]][_0x2b73[67]];_0xff22x1e++){var _0xff22x1f=this[_0x2b73[1214]][_0xff22x1e];null!= _0xff22x1f&& (this[_0x2b73[662]]&& (_0xff22x3[_0x2b73[239]](this,_0xff22x1f[_0x2b73[241]]()),_0xff22x3[_0x2b73[239]](this,_0xff22x1f[_0x2b73[235]]),_0xff22x3[_0x2b73[239]](this,_0xff22x1f[_0x2b73[235]]+ _0xff22x1f[_0x2b73[117]])),this[_0x2b73[704]]&& (_0xff22x15[_0x2b73[239]](this,_0xff22x1f[_0x2b73[242]]()),_0xff22x15[_0x2b73[239]](this,_0xff22x1f[_0x2b73[236]]),_0xff22x15[_0x2b73[239]](this,_0xff22x1f[_0x2b73[236]]+ _0xff22x1f[_0x2b73[119]])))};!_0xff22x13&& null!= this[_0x2b73[1518]]?this[_0x2b73[1518]][_0x2b73[252]][_0x2b73[124]][_0x2b73[187]]= _0x2b73[188]:null!= this[_0x2b73[1518]]&& (this[_0x2b73[1518]][_0x2b73[252]][_0x2b73[124]][_0x2b73[187]]= _0x2b73[189],this[_0x2b73[1518]][_0x2b73[258]]());!_0xff22x14&& null!= this[_0x2b73[1519]]?this[_0x2b73[1519]][_0x2b73[252]][_0x2b73[124]][_0x2b73[187]]= _0x2b73[188]:null!= this[_0x2b73[1519]]&& (this[_0x2b73[1519]][_0x2b73[252]][_0x2b73[124]][_0x2b73[187]]= _0x2b73[189],this[_0x2b73[1519]][_0x2b73[258]]());_0xff22x4&& (_0xff22x13|| (_0xff22x4= _0xff22x2[_0x2b73[235]]- (this[_0x2b73[1179]][_0x2b73[1021]](_0xff22x2[_0x2b73[235]]/ _0xff22x9- _0xff22x5[_0x2b73[235]])+ _0xff22x5[_0x2b73[235]])* _0xff22x9,_0xff22xa= this[_0x2b73[1179]][_0x2b73[1021]](_0xff22xa/ _0xff22x9)* _0xff22x9- _0xff22x4),_0xff22x14|| (_0xff22x5= _0xff22x2[_0x2b73[236]]- (this[_0x2b73[1179]][_0x2b73[1021]](_0xff22x2[_0x2b73[236]]/ _0xff22x9- _0xff22x5[_0x2b73[236]])+ _0xff22x5[_0x2b73[236]])* _0xff22x9,_0xff22x12= this[_0x2b73[1179]][_0x2b73[1021]](_0xff22x12/ _0xff22x9)* _0xff22x9- _0xff22x5));_0xff22x3= new mxPoint(_0xff22xa,_0xff22x12)};return _0xff22x3};mxGuide[_0x2b73[202]][_0x2b73[801]]= function(){null!= this[_0x2b73[1518]]&& (this[_0x2b73[1518]][_0x2b73[252]][_0x2b73[124]][_0x2b73[187]]= _0x2b73[188]);null!= this[_0x2b73[1519]]&& (this[_0x2b73[1519]][_0x2b73[252]][_0x2b73[124]][_0x2b73[187]]= _0x2b73[188])};mxGuide[_0x2b73[202]][_0x2b73[515]]= function(){null!= this[_0x2b73[1518]]&& (this[_0x2b73[1518]][_0x2b73[515]](),this[_0x2b73[1518]]= null);null!= this[_0x2b73[1519]]&& (this[_0x2b73[1519]][_0x2b73[515]](),this[_0x2b73[1519]]= null)};function mxStencil(_0xff22x2){this[_0x2b73[1527]]= _0xff22x2;this[_0x2b73[1528]]();this[_0x2b73[1529]]()}mxStencil[_0x2b73[1530]]= !1;mxStencil[_0x2b73[202]][_0x2b73[1527]]= null;mxStencil[_0x2b73[202]][_0x2b73[1531]]= null;mxStencil[_0x2b73[202]][_0x2b73[1322]]= null;mxStencil[_0x2b73[202]][_0x2b73[1532]]= null;mxStencil[_0x2b73[202]][_0x2b73[1533]]= null;mxStencil[_0x2b73[202]][_0x2b73[1534]]= null;mxStencil[_0x2b73[202]][_0x2b73[1535]]= null;mxStencil[_0x2b73[202]][_0x2b73[1307]]= null;mxStencil[_0x2b73[202]][_0x2b73[1528]]= function(){this[_0x2b73[1535]]= this[_0x2b73[1527]][_0x2b73[64]](_0x2b73[1536])[0];this[_0x2b73[1534]]= this[_0x2b73[1527]][_0x2b73[64]](_0x2b73[1537])[0];this[_0x2b73[1532]]= Number(this[_0x2b73[1527]][_0x2b73[284]](_0x2b73[1302])|| 100);this[_0x2b73[1533]]= Number(this[_0x2b73[1527]][_0x2b73[284]](_0x2b73[1303])|| 100);var _0xff22x2=this[_0x2b73[1527]][_0x2b73[284]](_0x2b73[1322]);this[_0x2b73[1322]]= null!= _0xff22x2?_0xff22x2:_0x2b73[1538];_0xff22x2= this[_0x2b73[1527]][_0x2b73[284]](_0x2b73[1307]);this[_0x2b73[1307]]= null!= _0xff22x2?_0xff22x2:_0x2b73[500]};mxStencil[_0x2b73[202]][_0x2b73[1529]]= function(){var _0xff22x2=this[_0x2b73[1527]][_0x2b73[64]](_0x2b73[1539])[0];if(null!= _0xff22x2&& (_0xff22x2= mxUtils[_0x2b73[1540]](_0xff22x2),null!= _0xff22x2&& 0< _0xff22x2[_0x2b73[67]])){this[_0x2b73[1531]]= [];for(var _0xff22x3=0;_0xff22x3< _0xff22x2[_0x2b73[67]];_0xff22x3++){this[_0x2b73[1531]][_0x2b73[207]](this[_0x2b73[1541]](_0xff22x2[_0xff22x3]))}}};mxStencil[_0x2b73[202]][_0x2b73[1541]]= function(_0xff22x2){var _0xff22x3=Number(_0xff22x2[_0x2b73[284]](_0x2b73[235])),_0xff22x4=Number(_0xff22x2[_0x2b73[284]](_0x2b73[236]));_0xff22x2= _0x2b73[500]== _0xff22x2[_0x2b73[284]](_0x2b73[591]);return new mxConnectionConstraint( new mxPoint(_0xff22x3,_0xff22x4),_0xff22x2)};mxStencil[_0x2b73[202]][_0x2b73[1542]]= function(_0xff22x2,_0xff22x3,_0xff22x4){_0xff22x3= this[_0x2b73[1543]](_0xff22x2,_0xff22x3,_0xff22x4);_0xff22x2= _0xff22x2[_0x2b73[284]](_0x2b73[1544]);if(mxStencil[_0x2b73[1530]]&& null== _0xff22x2|| _0x2b73[500]== _0xff22x2){_0xff22x3= mxResources[_0x2b73[203]](_0xff22x3)};return _0xff22x3};mxStencil[_0x2b73[202]][_0x2b73[1543]]= function(_0xff22x2,_0xff22x3,_0xff22x4){_0xff22x3= _0xff22x2[_0x2b73[284]](_0xff22x3);null== _0xff22x3&& (_0xff22x2= mxUtils[_0x2b73[329]](_0xff22x2),null!= _0xff22x2&& (_0xff22x2= mxUtils[_0x2b73[1545]](_0xff22x2),_0x2b73[279]== typeof _0xff22x2&& (_0xff22x3= _0xff22x2(_0xff22x4))));return _0xff22x3};mxStencil[_0x2b73[202]][_0x2b73[1546]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa){this[_0x2b73[1547]](_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa,this[_0x2b73[1534]],!1);this[_0x2b73[1547]](_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa,this[_0x2b73[1535]],!0)};mxStencil[_0x2b73[202]][_0x2b73[1547]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa,_0xff22x12,_0xff22x13){if(null!= _0xff22x12){var _0xff22x14=mxUtils[_0x2b73[433]](_0xff22x3[_0x2b73[124]],mxConstants.STYLE_DIRECTION,null);_0xff22x4= this[_0x2b73[1548]](_0xff22x3[_0x2b73[124]],_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa,_0xff22x14);_0xff22x5= Math[_0x2b73[243]](_0xff22x4[_0x2b73[117]],_0xff22x4[_0x2b73[119]]);_0xff22x5= _0x2b73[1549]== this[_0x2b73[1307]]?Number(mxUtils[_0x2b73[1550]](_0xff22x3[_0x2b73[124]],mxConstants.STYLE_STROKEWIDTH,1)):Number(this[_0x2b73[1307]])* _0xff22x5;_0xff22x2[_0x2b73[1250]](_0xff22x5);for(_0xff22x12= _0xff22x12[_0x2b73[285]];null!= _0xff22x12;){_0xff22x12[_0x2b73[288]]== mxConstants[_0x2b73[289]]&& this[_0x2b73[1551]](_0xff22x2,_0xff22x3,_0xff22x12,_0xff22x4,_0xff22x13),_0xff22x12= _0xff22x12[_0x2b73[287]]}}};mxStencil[_0x2b73[202]][_0x2b73[1548]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa){_0xff22x2= _0xff22x3;_0xff22x3= _0xff22x5/ this[_0x2b73[1532]];var _0xff22x12=_0xff22x9/ this[_0x2b73[1533]];if(_0xff22xa= _0x2b73[700]== _0xff22xa|| _0x2b73[701]== _0xff22xa){_0xff22x12= _0xff22x5/ this[_0x2b73[1533]];_0xff22x3= _0xff22x9/ this[_0x2b73[1532]];var _0xff22x13=(_0xff22x5- _0xff22x9)/ 2;_0xff22x2+= _0xff22x13;_0xff22x4-= _0xff22x13};_0x2b73[1552]== this[_0x2b73[1322]]&& (_0xff22x3= _0xff22x12= Math[_0x2b73[243]](_0xff22x3,_0xff22x12),_0xff22xa?(_0xff22x2+= (_0xff22x9- this[_0x2b73[1532]]* _0xff22x3)/ 2,_0xff22x4+= (_0xff22x5- this[_0x2b73[1533]]* _0xff22x12)/ 2):(_0xff22x2+= (_0xff22x5- this[_0x2b73[1532]]* _0xff22x3)/ 2,_0xff22x4+= (_0xff22x9- this[_0x2b73[1533]]* _0xff22x12)/ 2));return new mxRectangle(_0xff22x2,_0xff22x4,_0xff22x3,_0xff22x12)};mxStencil[_0x2b73[202]][_0x2b73[1551]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){var _0xff22xa=_0xff22x4[_0x2b73[301]],_0xff22x12=_0xff22x5[_0x2b73[235]],_0xff22x13=_0xff22x5[_0x2b73[236]],_0xff22x14=_0xff22x5[_0x2b73[117]],_0xff22x15=_0xff22x5[_0x2b73[119]],_0xff22x16=Math[_0x2b73[243]](_0xff22x14,_0xff22x15);if(_0x2b73[815]== _0xff22xa){_0xff22x2[_0x2b73[815]]()}else {if(_0x2b73[1210]== _0xff22xa){_0xff22x2[_0x2b73[1210]]()}else {if(_0x2b73[1215]== _0xff22xa){_0xff22x2[_0x2b73[1275]]();for(_0xff22x4= _0xff22x4[_0x2b73[285]];null!= _0xff22x4;){_0xff22x4[_0x2b73[288]]== mxConstants[_0x2b73[289]]&& this[_0x2b73[1551]](_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9),_0xff22x4= _0xff22x4[_0x2b73[287]]}}else {if(_0x2b73[268]== _0xff22xa){_0xff22x2[_0x2b73[268]]()}else {if(_0x2b73[582]== _0xff22xa){_0xff22x2[_0x2b73[1276]](_0xff22x12+ Number(_0xff22x4[_0x2b73[284]](_0x2b73[235]))* _0xff22x14,_0xff22x13+ Number(_0xff22x4[_0x2b73[284]](_0x2b73[236]))* _0xff22x15)}else {if(_0x2b73[683]== _0xff22xa){_0xff22x2[_0x2b73[1277]](_0xff22x12+ Number(_0xff22x4[_0x2b73[284]](_0x2b73[235]))* _0xff22x14,_0xff22x13+ Number(_0xff22x4[_0x2b73[284]](_0x2b73[236]))* _0xff22x15)}else {if(_0x2b73[1323]== _0xff22xa){_0xff22x2[_0x2b73[1278]](_0xff22x12+ Number(_0xff22x4[_0x2b73[284]](_0x2b73[1324]))* _0xff22x14,_0xff22x13+ Number(_0xff22x4[_0x2b73[284]](_0x2b73[1325]))* _0xff22x15,_0xff22x12+ Number(_0xff22x4[_0x2b73[284]](_0x2b73[1326]))* _0xff22x14,_0xff22x13+ Number(_0xff22x4[_0x2b73[284]](_0x2b73[1327]))* _0xff22x15)}else {if(_0x2b73[1328]== _0xff22xa){_0xff22x2[_0x2b73[1279]](_0xff22x12+ Number(_0xff22x4[_0x2b73[284]](_0x2b73[1324]))* _0xff22x14,_0xff22x13+ Number(_0xff22x4[_0x2b73[284]](_0x2b73[1325]))* _0xff22x15,_0xff22x12+ Number(_0xff22x4[_0x2b73[284]](_0x2b73[1326]))* _0xff22x14,_0xff22x13+ Number(_0xff22x4[_0x2b73[284]](_0x2b73[1327]))* _0xff22x15,_0xff22x12+ Number(_0xff22x4[_0x2b73[284]](_0x2b73[1329]))* _0xff22x14,_0xff22x13+ Number(_0xff22x4[_0x2b73[284]](_0x2b73[1330]))* _0xff22x15)}else {if(_0x2b73[1553]== _0xff22xa){_0xff22x2[_0x2b73[1280]](Number(_0xff22x4[_0x2b73[284]](_0x2b73[1397]))* _0xff22x14,Number(_0xff22x4[_0x2b73[284]](_0x2b73[1398]))* _0xff22x15,Number(_0xff22x4[_0x2b73[284]](_0x2b73[1554])),Number(_0xff22x4[_0x2b73[284]](_0x2b73[1555])),Number(_0xff22x4[_0x2b73[284]](_0x2b73[1556])),_0xff22x12+ Number(_0xff22x4[_0x2b73[284]](_0x2b73[235]))* _0xff22x14,_0xff22x13+ Number(_0xff22x4[_0x2b73[284]](_0x2b73[236]))* _0xff22x15)}else {if(_0x2b73[1319]== _0xff22xa){_0xff22x2[_0x2b73[1319]](_0xff22x12+ Number(_0xff22x4[_0x2b73[284]](_0x2b73[235]))* _0xff22x14,_0xff22x13+ Number(_0xff22x4[_0x2b73[284]](_0x2b73[236]))* _0xff22x15,Number(_0xff22x4[_0x2b73[284]](_0x2b73[1302]))* _0xff22x14,Number(_0xff22x4[_0x2b73[284]](_0x2b73[1303]))* _0xff22x15)}else {if(_0x2b73[1320]== _0xff22xa){_0xff22x3= _0xff22x4[_0x2b73[284]](_0x2b73[1492]),0== _0xff22x3&& (_0xff22x3= 100* mxConstants[_0x2b73[1557]]),_0xff22x16= Number(_0xff22x4[_0x2b73[284]](_0x2b73[1302]))* _0xff22x14,_0xff22x5= Number(_0xff22x4[_0x2b73[284]](_0x2b73[1303]))* _0xff22x15,_0xff22x3= Number(_0xff22x3)/ 100,_0xff22x3= Math[_0x2b73[243]](_0xff22x16* _0xff22x3,_0xff22x5* _0xff22x3),_0xff22x2[_0x2b73[1320]](_0xff22x12+ Number(_0xff22x4[_0x2b73[284]](_0x2b73[235]))* _0xff22x14,_0xff22x13+ Number(_0xff22x4[_0x2b73[284]](_0x2b73[236]))* _0xff22x15,_0xff22x16,_0xff22x5,_0xff22x3,_0xff22x3)}else {if(_0x2b73[680]== _0xff22xa){_0xff22x2[_0x2b73[680]](_0xff22x12+ Number(_0xff22x4[_0x2b73[284]](_0x2b73[235]))* _0xff22x14,_0xff22x13+ Number(_0xff22x4[_0x2b73[284]](_0x2b73[236]))* _0xff22x15,Number(_0xff22x4[_0x2b73[284]](_0x2b73[1302]))* _0xff22x14,Number(_0xff22x4[_0x2b73[284]](_0x2b73[1303]))* _0xff22x15)}else {if(_0x2b73[618]== _0xff22xa){_0xff22x3= this[_0x2b73[1543]](_0xff22x4,_0x2b73[390],_0xff22x3),_0xff22x2[_0x2b73[618]](_0xff22x12+ Number(_0xff22x4[_0x2b73[284]](_0x2b73[235]))* _0xff22x14,_0xff22x13+ Number(_0xff22x4[_0x2b73[284]](_0x2b73[236]))* _0xff22x15,Number(_0xff22x4[_0x2b73[284]](_0x2b73[1302]))* _0xff22x14,Number(_0xff22x4[_0x2b73[284]](_0x2b73[1303]))* _0xff22x15,_0xff22x3,!1,_0x2b73[500]== _0xff22x4[_0x2b73[284]](_0x2b73[623]),_0x2b73[500]== _0xff22x4[_0x2b73[284]](_0x2b73[624]))}else {if(_0x2b73[963]== _0xff22xa){_0xff22x16= this[_0x2b73[1542]](_0xff22x4,_0x2b73[1332],_0xff22x3);_0xff22x5= _0x2b73[500]== _0xff22x4[_0x2b73[284]](_0x2b73[704])?-90:0;if(_0x2b73[468]== _0xff22x4[_0x2b73[284]](_0x2b73[1558])){var _0xff22x17=_0xff22x3[_0x2b73[603]],_0xff22x18=1== mxUtils[_0x2b73[433]](_0xff22x3[_0x2b73[124]],mxConstants.STYLE_FLIPH,0);_0xff22x3= 1== mxUtils[_0x2b73[433]](_0xff22x3[_0x2b73[124]],mxConstants.STYLE_FLIPV,0);_0xff22x5= _0xff22x18&& _0xff22x3?_0xff22x5- _0xff22x17:_0xff22x18|| _0xff22x3?_0xff22x5+ _0xff22x17:_0xff22x5- _0xff22x17};_0xff22x5-= _0xff22x4[_0x2b73[284]](_0x2b73[603]);_0xff22x2[_0x2b73[963]](_0xff22x12+ Number(_0xff22x4[_0x2b73[284]](_0x2b73[235]))* _0xff22x14,_0xff22x13+ Number(_0xff22x4[_0x2b73[284]](_0x2b73[236]))* _0xff22x15,0,0,_0xff22x16,_0xff22x4[_0x2b73[284]](_0x2b73[611])|| _0x2b73[361],_0xff22x4[_0x2b73[284]](_0x2b73[552])|| _0x2b73[125],!1,_0x2b73[110],!1,!1,_0xff22x5)}else {if(_0x2b73[1559]== _0xff22xa){_0xff22x17= mxStencilRegistry[_0x2b73[1560]](_0xff22x4[_0x2b73[284]](_0x2b73[298])),null!= _0xff22x17&& (_0xff22x12+= Number(_0xff22x4[_0x2b73[284]](_0x2b73[235]))* _0xff22x14,_0xff22x13+= Number(_0xff22x4[_0x2b73[284]](_0x2b73[236]))* _0xff22x15,_0xff22x16= Number(_0xff22x4[_0x2b73[284]](_0x2b73[1302]))* _0xff22x14,_0xff22x5= Number(_0xff22x4[_0x2b73[284]](_0x2b73[1303]))* _0xff22x15,_0xff22x17[_0x2b73[1546]](_0xff22x2,_0xff22x3,_0xff22x12,_0xff22x13,_0xff22x16,_0xff22x5))}else {if(_0x2b73[1338]== _0xff22xa){_0xff22x2[_0x2b73[1337]]()}else {if(_0x2b73[1334]== _0xff22xa){_0xff22x2[_0x2b73[1334]]()}else {if(_0x2b73[1336]== _0xff22xa){_0xff22x2[_0x2b73[1336]]()}else {if(_0x2b73[1307]== _0xff22xa){_0xff22x2[_0x2b73[1250]](Number(_0xff22x4[_0x2b73[284]](_0x2b73[117]))* _0xff22x16)}else {if(_0x2b73[648]== _0xff22xa){_0xff22x2[_0x2b73[1251]](_0x2b73[500]== _0xff22x4[_0x2b73[284]](_0x2b73[648]))}else {if(_0x2b73[1308]== _0xff22xa){if(_0xff22x4= _0xff22x4[_0x2b73[284]](_0x2b73[1309]),null!= _0xff22x4){_0xff22x4= _0xff22x4[_0x2b73[224]](_0x2b73[185]);_0xff22x14= [];for(_0xff22x15= 0;_0xff22x15< _0xff22x4[_0x2b73[67]];_0xff22x15++){0< _0xff22x4[_0xff22x15][_0x2b73[67]]&& _0xff22x14[_0x2b73[207]](Number(_0xff22x4[_0xff22x15])* _0xff22x16)};_0xff22x4= _0xff22x14[_0x2b73[234]](_0x2b73[185]);_0xff22x2[_0x2b73[1252]](_0xff22x4)}}else {_0x2b73[1306]== _0xff22xa?_0xff22x2[_0x2b73[1249]](_0xff22x4[_0x2b73[284]](_0x2b73[352])):_0x2b73[1310]== _0xff22xa?_0xff22x2[_0x2b73[1253]](_0xff22x4[_0x2b73[284]](_0x2b73[1311])):_0x2b73[1312]== _0xff22xa?_0xff22x2[_0x2b73[1255]](_0xff22x4[_0x2b73[284]](_0x2b73[234])):_0x2b73[1313]== _0xff22xa?_0xff22x2[_0x2b73[1257]](Number(_0xff22x4[_0x2b73[284]](_0x2b73[1314]))):_0x2b73[1298]== _0xff22xa?_0xff22x2[_0x2b73[1245]](_0xff22x4[_0x2b73[284]](_0x2b73[352])):_0x2b73[1244]== _0xff22xa?_0xff22x2[_0x2b73[1243]](_0xff22x4[_0x2b73[284]](_0x2b73[1244])):_0x2b73[1315]== _0xff22xa?_0xff22x2[_0x2b73[1259]](_0xff22x4[_0x2b73[284]](_0x2b73[352])):_0x2b73[1318]== _0xff22xa?_0xff22x2[_0x2b73[1266]](_0xff22x4[_0x2b73[284]](_0x2b73[124])):_0x2b73[1287]== _0xff22xa?_0xff22x2[_0x2b73[1265]](_0xff22x4[_0x2b73[284]](_0x2b73[1288])):_0x2b73[1289]== _0xff22xa&& _0xff22x2[_0x2b73[1264]](Number(_0xff22x4[_0x2b73[284]](_0x2b73[803]))* _0xff22x16)}}}}}}}}}}}}}}}}}}}}};_0xff22x9&& (_0x2b73[1338]== _0xff22xa|| _0x2b73[1334]== _0xff22xa|| _0x2b73[1336]== _0xff22xa)&& _0xff22x2[_0x2b73[1267]](!1)};function mxShape(_0xff22x2){this[_0x2b73[1561]]= _0xff22x2;this[_0x2b73[1307]]= 1;this[_0x2b73[603]]= 0;this[_0x2b73[461]]= 100;this[_0x2b73[624]]= this[_0x2b73[623]]= !1}mxShape[_0x2b73[202]][_0x2b73[507]]= null;mxShape[_0x2b73[202]][_0x2b73[255]]= 1;mxShape[_0x2b73[202]][_0x2b73[1562]]= null;mxShape[_0x2b73[202]][_0x2b73[1525]]= null;mxShape[_0x2b73[202]][_0x2b73[252]]= null;mxShape[_0x2b73[202]][_0x2b73[124]]= null;mxShape[_0x2b73[202]][_0x2b73[124]]= null;mxShape[_0x2b73[202]][_0x2b73[1563]]= null;mxShape[_0x2b73[202]][_0x2b73[1561]]= null;mxShape[_0x2b73[202]][_0x2b73[1564]]= 6;mxShape[_0x2b73[202]][_0x2b73[1229]]= !0;mxShape[_0x2b73[202]][_0x2b73[1565]]= !1;mxShape[_0x2b73[202]][_0x2b73[1460]]= 1;mxShape[_0x2b73[202]][_0x2b73[176]]= function(_0xff22x2){null== this[_0x2b73[252]]&& (this[_0x2b73[252]]= this[_0x2b73[385]](_0xff22x2),null!= _0xff22x2&& _0xff22x2[_0x2b73[62]](this[_0x2b73[252]]))};mxShape[_0x2b73[202]][_0x2b73[1566]]= function(){return !0};mxShape[_0x2b73[202]][_0x2b73[1567]]= function(){return !1};mxShape[_0x2b73[202]][_0x2b73[1568]]= function(){return 1== mxUtils[_0x2b73[1454]](Math[_0x2b73[160]](1,Math[_0x2b73[488]](this[_0x2b73[1307]]* this[_0x2b73[255]])),2)?0.5:0};mxShape[_0x2b73[202]][_0x2b73[385]]= function(_0xff22x2){var _0xff22x3=null;return _0xff22x3= null!= _0xff22x2[_0x2b73[538]]?this[_0x2b73[1569]](_0xff22x2):8== document[_0x2b73[5]]|| this[_0x2b73[507]]== mxConstants[_0x2b73[508]]|| this[_0x2b73[507]]!= mxConstants[_0x2b73[1523]]&& this[_0x2b73[1567]]()?this[_0x2b73[1570]](_0xff22x2):this[_0x2b73[1571]](_0xff22x2)};mxShape[_0x2b73[202]][_0x2b73[1569]]= function(){return document[_0x2b73[509]](mxConstants.NS_SVG,_0x2b73[449])};mxShape[_0x2b73[202]][_0x2b73[1571]]= function(){var _0xff22x2=document[_0x2b73[55]](mxClient[_0x2b73[463]]+ _0x2b73[1499]);_0xff22x2[_0x2b73[124]][_0x2b73[491]]= _0x2b73[492];return _0xff22x2};mxShape[_0x2b73[202]][_0x2b73[1570]]= function(){var _0xff22x2=document[_0x2b73[55]](_0x2b73[485]);_0xff22x2[_0x2b73[124]][_0x2b73[491]]= _0x2b73[492];return _0xff22x2};mxShape[_0x2b73[202]][_0x2b73[1572]]= function(){this[_0x2b73[258]]()};mxShape[_0x2b73[202]][_0x2b73[258]]= function(){this[_0x2b73[1573]]();this[_0x2b73[1574]]()?(this[_0x2b73[252]][_0x2b73[124]][_0x2b73[187]]= _0x2b73[110],_0x2b73[529]== this[_0x2b73[252]][_0x2b73[301]]&& this[_0x2b73[1567]]()?this[_0x2b73[1575]]():this[_0x2b73[1576]](),this[_0x2b73[1577]]()):(this[_0x2b73[252]][_0x2b73[124]][_0x2b73[187]]= _0x2b73[188],this[_0x2b73[1563]]= null)};mxShape[_0x2b73[202]][_0x2b73[1573]]= function(){var _0xff22x2=this[_0x2b73[1525]];if(null!= _0xff22x2&& 0< _0xff22x2[_0x2b73[67]]&& null!= _0xff22x2[0]){this[_0x2b73[1562]]= new mxRectangle(Number(_0xff22x2[0][_0x2b73[235]]),Number(_0xff22x2[0][_0x2b73[236]]),1,1);for(var _0xff22x3=1;_0xff22x3< this[_0x2b73[1525]][_0x2b73[67]];_0xff22x3++){null!= _0xff22x2[_0xff22x3]&& this[_0x2b73[1562]][_0x2b73[99]]( new mxRectangle(Number(_0xff22x2[_0xff22x3][_0x2b73[235]]),Number(_0xff22x2[_0xff22x3][_0x2b73[236]]),1,1))}}};mxShape[_0x2b73[202]][_0x2b73[1574]]= function(){return null!= this[_0x2b73[1562]]&& !isNaN(this[_0x2b73[1562]][_0x2b73[235]])&& !isNaN(this[_0x2b73[1562]][_0x2b73[236]])&& !isNaN(this[_0x2b73[1562]][_0x2b73[117]])&& !isNaN(this[_0x2b73[1562]][_0x2b73[119]])&& 0< this[_0x2b73[1562]][_0x2b73[117]]&& 0< this[_0x2b73[1562]][_0x2b73[119]]};mxShape[_0x2b73[202]][_0x2b73[1578]]= function(){var _0xff22x2=document[_0x2b73[55]](mxClient[_0x2b73[463]]+ _0x2b73[1499]);_0xff22x2[_0x2b73[124]][_0x2b73[491]]= _0x2b73[492];_0xff22x2[_0x2b73[124]][_0x2b73[117]]= this[_0x2b73[252]][_0x2b73[124]][_0x2b73[117]];_0xff22x2[_0x2b73[124]][_0x2b73[119]]= this[_0x2b73[252]][_0x2b73[124]][_0x2b73[119]];return _0xff22x2};mxShape[_0x2b73[202]][_0x2b73[1576]]= function(){var _0xff22x2=this[_0x2b73[1579]]();for(_0xff22x2[_0x2b73[1229]]= this[_0x2b73[1229]];this[_0x2b73[252]][_0x2b73[1580]]();){this[_0x2b73[252]][_0x2b73[266]](this[_0x2b73[252]][_0x2b73[1581]])};this[_0x2b73[1209]](_0xff22x2);this[_0x2b73[252]]!= _0xff22x2[_0x2b73[813]]&& this[_0x2b73[252]][_0x2b73[1583]](_0x2b73[1582],_0xff22x2[_0x2b73[813]][_0x2b73[342]]);_0x2b73[529]== this[_0x2b73[252]][_0x2b73[301]]&& 8== document[_0x2b73[5]]&& (this[_0x2b73[252]][_0x2b73[124]][_0x2b73[347]]= _0x2b73[110],(null== this[_0x2b73[1561]]|| !this[_0x2b73[1565]])&& mxUtils[_0x2b73[1584]](this[_0x2b73[252]]));this[_0x2b73[1585]](_0xff22x2)};mxShape[_0x2b73[202]][_0x2b73[1579]]= function(){var _0xff22x2=null,_0xff22x3=null;if(null!= this[_0x2b73[252]][_0x2b73[538]]){_0xff22x2= new mxSvgCanvas2D(this[_0x2b73[252]],!1),_0xff22x2[_0x2b73[1345]]= this[_0x2b73[1564]],_0xff22x2[_0x2b73[1347]]= mxClient[_0x2b73[133]]&& !mxClient[_0x2b73[75]]&& !mxClient[_0x2b73[76]],_0xff22x3= this[_0x2b73[1568]](),0!= _0xff22x3?this[_0x2b73[252]][_0x2b73[57]](_0x2b73[535],_0x2b73[536]+ _0xff22x3+ _0x2b73[537]+ _0xff22x3+ _0x2b73[460]):this[_0x2b73[252]][_0x2b73[1390]](_0x2b73[535])}else {this[_0x2b73[1586]]();var _0xff22x4=Math[_0x2b73[160]](1,Math[_0x2b73[488]](this[_0x2b73[1562]][_0x2b73[117]])),_0xff22x5=Math[_0x2b73[160]](1,Math[_0x2b73[488]](this[_0x2b73[1562]][_0x2b73[119]])),_0xff22x3=8== document[_0x2b73[5]]&& this[_0x2b73[1566]]()?this[_0x2b73[1578]]():this[_0x2b73[252]],_0xff22x2= new mxVmlCanvas2D(_0xff22x3,!1);_0x2b73[110]!= _0xff22x3[_0x2b73[337]]&& (_0xff22x3[_0x2b73[1462]]= _0xff22x4* this[_0x2b73[1460]]+ _0x2b73[537]+ _0xff22x5* this[_0x2b73[1460]],_0xff22x2[_0x2b73[255]](this[_0x2b73[1460]]),_0xff22x2[_0x2b73[1460]]= this[_0x2b73[1460]]);_0xff22x3= this[_0x2b73[255]];_0xff22x2[_0x2b73[513]](-Math[_0x2b73[488]](this[_0x2b73[1562]][_0x2b73[235]]/ _0xff22x3),-Math[_0x2b73[488]](this[_0x2b73[1562]][_0x2b73[236]]/ _0xff22x3))};return _0xff22x2};mxShape[_0x2b73[202]][_0x2b73[1586]]= function(){this[_0x2b73[252]][_0x2b73[124]][_0x2b73[361]]= Math[_0x2b73[488]](this[_0x2b73[1562]][_0x2b73[235]])+ _0x2b73[168];this[_0x2b73[252]][_0x2b73[124]][_0x2b73[125]]= Math[_0x2b73[488]](this[_0x2b73[1562]][_0x2b73[236]])+ _0x2b73[168];var _0xff22x2=Math[_0x2b73[160]](1,Math[_0x2b73[488]](this[_0x2b73[1562]][_0x2b73[117]])),_0xff22x3=Math[_0x2b73[160]](1,Math[_0x2b73[488]](this[_0x2b73[1562]][_0x2b73[119]]));this[_0x2b73[252]][_0x2b73[124]][_0x2b73[117]]= _0xff22x2+ _0x2b73[168];this[_0x2b73[252]][_0x2b73[124]][_0x2b73[119]]= _0xff22x3+ _0x2b73[168];this[_0x2b73[252]][_0x2b73[124]][_0x2b73[277]]= _0x2b73[189]};mxShape[_0x2b73[202]][_0x2b73[1585]]= function(_0xff22x2){if(_0xff22x2 instanceof mxSvgCanvas2D){for(var _0xff22x3 in _0xff22x2[_0x2b73[1339]]){var _0xff22x4=_0xff22x2[_0x2b73[1339]][_0xff22x3];_0xff22x4[_0x2b73[1587]]= (_0xff22x4[_0x2b73[1587]]|| 0)+ 1};this[_0x2b73[1589]](this[_0x2b73[1588]]);this[_0x2b73[1588]]= _0xff22x2[_0x2b73[1339]]}};mxShape[_0x2b73[202]][_0x2b73[1209]]= function(_0xff22x2){var _0xff22x3=this[_0x2b73[255]],_0xff22x4=this[_0x2b73[1562]][_0x2b73[235]]/ _0xff22x3,_0xff22x5=this[_0x2b73[1562]][_0x2b73[236]]/ _0xff22x3,_0xff22x9=this[_0x2b73[1562]][_0x2b73[117]]/ _0xff22x3,_0xff22xa=this[_0x2b73[1562]][_0x2b73[119]]/ _0xff22x3;if(this[_0x2b73[1590]]()){var _0xff22x12=(_0xff22x9- _0xff22xa)/ 2,_0xff22x4=_0xff22x4+ _0xff22x12,_0xff22x5=_0xff22x5- _0xff22x12,_0xff22x12=_0xff22x9,_0xff22x9=_0xff22xa,_0xff22xa=_0xff22x12};this[_0x2b73[1591]](_0xff22x2,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa);this[_0x2b73[1592]](_0xff22x2,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa);if(null!= this[_0x2b73[1561]]){this[_0x2b73[1593]](_0xff22x2,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa)}else {if(_0xff22x2[_0x2b73[1250]](this[_0x2b73[1307]]),null!= this[_0x2b73[1525]]){_0xff22x4= [];for(_0xff22x5= 0;_0xff22x5< this[_0x2b73[1525]][_0x2b73[67]];_0xff22x5++){_0xff22x4[_0x2b73[207]]( new mxPoint(this[_0x2b73[1525]][_0xff22x5][_0x2b73[235]]/ _0xff22x3,this[_0x2b73[1525]][_0xff22x5][_0x2b73[236]]/ _0xff22x3))};this[_0x2b73[1594]](_0xff22x2,_0xff22x4)}else {this[_0x2b73[1595]](_0xff22x2,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa)}}};mxShape[_0x2b73[202]][_0x2b73[1592]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){var _0xff22xa=null;null!= this[_0x2b73[124]]&& (_0xff22xa= this[_0x2b73[124]][_0x2b73[649]]);_0xff22x2[_0x2b73[1243]](this[_0x2b73[461]]/ 100);null!= this[_0x2b73[1596]]&& _0xff22x2[_0x2b73[1267]](this[_0x2b73[1596]]);null!= this[_0x2b73[1522]]&& _0xff22x2[_0x2b73[1251]](this[_0x2b73[1522]]);null!= _0xff22xa&& _0xff22x2[_0x2b73[1252]](_0xff22xa);null!= this[_0x2b73[1299]]?(_0xff22x3= this[_0x2b73[1597]](_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9),_0xff22x2[_0x2b73[1246]](this[_0x2b73[1334]],this[_0x2b73[1299]],_0xff22x3[_0x2b73[235]],_0xff22x3[_0x2b73[236]],_0xff22x3[_0x2b73[117]],_0xff22x3[_0x2b73[119]],this[_0x2b73[607]])):_0xff22x2[_0x2b73[1245]](this[_0x2b73[1334]]);_0xff22x2[_0x2b73[1249]](this[_0x2b73[1336]])};mxShape[_0x2b73[202]][_0x2b73[1597]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){return new mxRectangle(_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9)};mxShape[_0x2b73[202]][_0x2b73[1591]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){_0xff22x2[_0x2b73[255]](this[_0x2b73[255]]);_0xff22x2[_0x2b73[1294]](this[_0x2b73[1598]](),this[_0x2b73[623]],this[_0x2b73[624]],_0xff22x3+ _0xff22x5/ 2,_0xff22x4+ _0xff22x9/ 2)};mxShape[_0x2b73[202]][_0x2b73[1593]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){this[_0x2b73[1565]]&& (this[_0x2b73[507]]== mxConstants[_0x2b73[508]]?this[_0x2b73[1599]](this[_0x2b73[252]],_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9):8!= document[_0x2b73[5]]&& this[_0x2b73[1600]](this[_0x2b73[252]]));this[_0x2b73[1561]][_0x2b73[1546]](_0xff22x2,this,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9)};mxShape[_0x2b73[202]][_0x2b73[1595]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){this[_0x2b73[1601]](_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9);_0xff22x2[_0x2b73[1267]](!1);this[_0x2b73[1602]](_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9)};mxShape[_0x2b73[202]][_0x2b73[1601]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){};mxShape[_0x2b73[202]][_0x2b73[1602]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){};mxShape[_0x2b73[202]][_0x2b73[1594]]= function(_0xff22x2,_0xff22x3){};mxShape[_0x2b73[202]][_0x2b73[1603]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=mxUtils[_0x2b73[433]](this[_0x2b73[124]],mxConstants.STYLE_ARCSIZE,100* mxConstants[_0x2b73[1557]])/ 100;return Math[_0x2b73[243]](_0xff22x2* _0xff22x4,_0xff22x3* _0xff22x4)};mxShape[_0x2b73[202]][_0x2b73[1604]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa){var _0xff22x12=Math[_0x2b73[430]](this[_0x2b73[1307]]/ 2);_0xff22x2[_0x2b73[1246]](_0x2b73[1605],_0x2b73[1605],_0xff22x3,_0xff22x4,_0xff22x5,0.6* _0xff22x9,_0x2b73[701],0.9,0.1);_0xff22x2[_0x2b73[1275]]();_0xff22xa+= 2* _0xff22x12;this[_0x2b73[1606]]?(_0xff22x2[_0x2b73[1276]](_0xff22x3- _0xff22x12+ _0xff22xa,_0xff22x4- _0xff22x12),_0xff22x2[_0x2b73[1278]](_0xff22x3- _0xff22x12,_0xff22x4- _0xff22x12,_0xff22x3- _0xff22x12,_0xff22x4- _0xff22x12+ _0xff22xa),_0xff22x2[_0x2b73[1277]](_0xff22x3- _0xff22x12,_0xff22x4+ 0.4* _0xff22x9),_0xff22x2[_0x2b73[1278]](_0xff22x3+ 0.5* _0xff22x5,_0xff22x4+ 0.7* _0xff22x9,_0xff22x3+ _0xff22x5+ _0xff22x12,_0xff22x4+ 0.4* _0xff22x9),_0xff22x2[_0x2b73[1277]](_0xff22x3+ _0xff22x5+ _0xff22x12,_0xff22x4- _0xff22x12+ _0xff22xa),_0xff22x2[_0x2b73[1278]](_0xff22x3+ _0xff22x5+ _0xff22x12,_0xff22x4- _0xff22x12,_0xff22x3+ _0xff22x5+ _0xff22x12- _0xff22xa,_0xff22x4- _0xff22x12)):(_0xff22x2[_0x2b73[1276]](_0xff22x3- _0xff22x12,_0xff22x4- _0xff22x12),_0xff22x2[_0x2b73[1277]](_0xff22x3- _0xff22x12,_0xff22x4+ 0.4* _0xff22x9),_0xff22x2[_0x2b73[1278]](_0xff22x3+ 0.5* _0xff22x5,_0xff22x4+ 0.7* _0xff22x9,_0xff22x3+ _0xff22x5+ _0xff22x12,_0xff22x4+ 0.4* _0xff22x9),_0xff22x2[_0x2b73[1277]](_0xff22x3+ _0xff22x5+ _0xff22x12,_0xff22x4- _0xff22x12));_0xff22x2[_0x2b73[268]]();_0xff22x2[_0x2b73[1334]]()};mxShape[_0x2b73[202]][_0x2b73[183]]= function(_0xff22x2){this[_0x2b73[724]]= _0xff22x2;this[_0x2b73[124]]= _0xff22x2[_0x2b73[124]];if(null!= this[_0x2b73[124]]){this[_0x2b73[1334]]= mxUtils[_0x2b73[433]](this[_0x2b73[124]],mxConstants.STYLE_FILLCOLOR,this[_0x2b73[1334]]);this[_0x2b73[1299]]= mxUtils[_0x2b73[433]](this[_0x2b73[124]],mxConstants.STYLE_GRADIENTCOLOR,this[_0x2b73[1299]]);this[_0x2b73[607]]= mxUtils[_0x2b73[433]](this[_0x2b73[124]],mxConstants.STYLE_GRADIENT_DIRECTION,this[_0x2b73[607]]);this[_0x2b73[461]]= mxUtils[_0x2b73[433]](this[_0x2b73[124]],mxConstants.STYLE_OPACITY,this[_0x2b73[461]]);this[_0x2b73[1336]]= mxUtils[_0x2b73[433]](this[_0x2b73[124]],mxConstants.STYLE_STROKECOLOR,this[_0x2b73[1336]]);this[_0x2b73[1307]]= mxUtils[_0x2b73[1550]](this[_0x2b73[124]],mxConstants.STYLE_STROKEWIDTH,this[_0x2b73[1307]]);this[_0x2b73[657]]= mxUtils[_0x2b73[433]](this[_0x2b73[124]],mxConstants.STYLE_SPACING,this[_0x2b73[657]]);this[_0x2b73[644]]= mxUtils[_0x2b73[1550]](this[_0x2b73[124]],mxConstants.STYLE_STARTSIZE,this[_0x2b73[644]]);this[_0x2b73[643]]= mxUtils[_0x2b73[1550]](this[_0x2b73[124]],mxConstants.STYLE_ENDSIZE,this[_0x2b73[643]]);this[_0x2b73[642]]= mxUtils[_0x2b73[433]](this[_0x2b73[124]],mxConstants.STYLE_STARTARROW,this[_0x2b73[642]]);this[_0x2b73[641]]= mxUtils[_0x2b73[433]](this[_0x2b73[124]],mxConstants.STYLE_ENDARROW,this[_0x2b73[641]]);this[_0x2b73[603]]= mxUtils[_0x2b73[433]](this[_0x2b73[124]],mxConstants.STYLE_ROTATION,this[_0x2b73[603]]);this[_0x2b73[663]]= mxUtils[_0x2b73[433]](this[_0x2b73[124]],mxConstants.STYLE_DIRECTION,this[_0x2b73[663]]);this[_0x2b73[623]]= 1== mxUtils[_0x2b73[433]](this[_0x2b73[124]],mxConstants.STYLE_FLIPH,0);this[_0x2b73[624]]= 1== mxUtils[_0x2b73[433]](this[_0x2b73[124]],mxConstants.STYLE_FLIPV,0);null!= this[_0x2b73[1561]]&& (this[_0x2b73[623]]= 1== mxUtils[_0x2b73[433]](this[_0x2b73[124]],_0x2b73[1607],0)|| this[_0x2b73[623]],this[_0x2b73[624]]= 1== mxUtils[_0x2b73[433]](this[_0x2b73[124]],_0x2b73[1608],0)|| this[_0x2b73[624]]);if(_0x2b73[700]== this[_0x2b73[663]]|| _0x2b73[701]== this[_0x2b73[663]]){_0xff22x2= this[_0x2b73[623]],this[_0x2b73[623]]= this[_0x2b73[624]],this[_0x2b73[624]]= _0xff22x2};this[_0x2b73[1596]]= 1== mxUtils[_0x2b73[433]](this[_0x2b73[124]],mxConstants.STYLE_SHADOW,this[_0x2b73[1596]]);this[_0x2b73[1522]]= 1== mxUtils[_0x2b73[433]](this[_0x2b73[124]],mxConstants.STYLE_DASHED,this[_0x2b73[1522]]);this[_0x2b73[1606]]= 1== mxUtils[_0x2b73[433]](this[_0x2b73[124]],mxConstants.STYLE_ROUNDED,this[_0x2b73[1606]]);this[_0x2b73[617]]= 1== mxUtils[_0x2b73[433]](this[_0x2b73[124]],mxConstants.STYLE_GLASS,this[_0x2b73[617]]);_0x2b73[130]== this[_0x2b73[1334]]&& (this[_0x2b73[1334]]= null);_0x2b73[130]== this[_0x2b73[1299]]&& (this[_0x2b73[1299]]= null);_0x2b73[130]== this[_0x2b73[1336]]&& (this[_0x2b73[1336]]= null)}};mxShape[_0x2b73[202]][_0x2b73[1609]]= function(_0xff22x2){null== _0xff22x2&& (_0xff22x2= _0x2b73[110]);this[_0x2b73[270]]= _0xff22x2;null!= this[_0x2b73[252]]&& (this[_0x2b73[252]][_0x2b73[124]][_0x2b73[270]]= _0xff22x2)};mxShape[_0x2b73[202]][_0x2b73[1610]]= function(){return this[_0x2b73[270]]};mxShape[_0x2b73[202]][_0x2b73[1577]]= function(){if(null!= this[_0x2b73[1562]]){var _0xff22x2=this[_0x2b73[1611]]();if(null!= _0xff22x2){this[_0x2b73[1612]](_0xff22x2);var _0xff22x3=this[_0x2b73[1598]]();0!= _0xff22x3&& (_0xff22x2= mxUtils[_0x2b73[1613]](_0xff22x2,_0xff22x3));_0xff22x2[_0x2b73[235]]= Math[_0x2b73[519]](_0xff22x2[_0x2b73[235]]);_0xff22x2[_0x2b73[236]]= Math[_0x2b73[519]](_0xff22x2[_0x2b73[236]]);_0xff22x2[_0x2b73[117]]= Math[_0x2b73[430]](_0xff22x2[_0x2b73[117]]);_0xff22x2[_0x2b73[119]]= Math[_0x2b73[430]](_0xff22x2[_0x2b73[119]])};this[_0x2b73[1563]]= _0xff22x2}};mxShape[_0x2b73[202]][_0x2b73[1611]]= function(){var _0xff22x2=this[_0x2b73[1562]][_0x2b73[238]]();if(this[_0x2b73[1590]]()){var _0xff22x3=(_0xff22x2[_0x2b73[117]]- _0xff22x2[_0x2b73[119]])/ 2;_0xff22x2[_0x2b73[235]]+= _0xff22x3;_0xff22x2[_0x2b73[236]]-= _0xff22x3;_0xff22x3= _0xff22x2[_0x2b73[117]];_0xff22x2[_0x2b73[117]]= _0xff22x2[_0x2b73[119]];_0xff22x2[_0x2b73[119]]= _0xff22x3};return _0xff22x2};mxShape[_0x2b73[202]][_0x2b73[1612]]= function(_0xff22x2){this[_0x2b73[1596]]&& (_0xff22x2[_0x2b73[117]]+= Math[_0x2b73[430]](mxConstants[_0x2b73[1237]]* this[_0x2b73[255]]),_0xff22x2[_0x2b73[119]]+= Math[_0x2b73[430]](mxConstants[_0x2b73[1238]]* this[_0x2b73[255]]));var _0xff22x3=Math[_0x2b73[430]](this[_0x2b73[1307]]* this[_0x2b73[255]]);_0xff22x2[_0x2b73[244]](Math[_0x2b73[430]](_0xff22x3/ 2))};mxShape[_0x2b73[202]][_0x2b73[1590]]= function(){return null== this[_0x2b73[1561]]&& (_0x2b73[700]== this[_0x2b73[663]]|| _0x2b73[701]== this[_0x2b73[663]])};mxShape[_0x2b73[202]][_0x2b73[1614]]= function(){return null!= this[_0x2b73[603]]?this[_0x2b73[603]]:0};mxShape[_0x2b73[202]][_0x2b73[1615]]= function(){var _0xff22x2=this[_0x2b73[1614]]();1!= mxUtils[_0x2b73[433]](this[_0x2b73[124]],mxConstants.STYLE_HORIZONTAL,1)&& (_0xff22x2+= mxText[_0x2b73[202]][_0x2b73[1616]]);return _0xff22x2};mxShape[_0x2b73[202]][_0x2b73[1598]]= function(){var _0xff22x2=this[_0x2b73[1614]]();null!= this[_0x2b73[663]]&& (_0x2b73[700]== this[_0x2b73[663]]?_0xff22x2+= 270:_0x2b73[703]== this[_0x2b73[663]]?_0xff22x2+= 180:_0x2b73[701]== this[_0x2b73[663]]&& (_0xff22x2+= 90));return _0xff22x2};mxShape[_0x2b73[202]][_0x2b73[1599]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){_0xff22x2= document[_0x2b73[509]](mxConstants.NS_SVG,_0x2b73[1319]);_0xff22x2[_0x2b73[57]](_0x2b73[235],_0xff22x3);_0xff22x2[_0x2b73[57]](_0x2b73[236],_0xff22x4);_0xff22x2[_0x2b73[57]](_0x2b73[117],_0xff22x5);_0xff22x2[_0x2b73[57]](_0x2b73[119],_0xff22x9);_0xff22x2[_0x2b73[57]](_0x2b73[1334],_0x2b73[130]);_0xff22x2[_0x2b73[57]](_0x2b73[1336],_0x2b73[130]);_0xff22x2[_0x2b73[57]](_0x2b73[1377],_0x2b73[1378]);this[_0x2b73[252]][_0x2b73[62]](_0xff22x2)};mxShape[_0x2b73[202]][_0x2b73[1600]]= function(_0xff22x2){_0xff22x2[_0x2b73[124]][_0x2b73[1617]]= _0x2b73[1618]+ mxClient[_0x2b73[88]]+ _0x2b73[1619]};mxShape[_0x2b73[202]][_0x2b73[1589]]= function(_0xff22x2){if(null!= _0xff22x2){for(var _0xff22x3 in _0xff22x2){var _0xff22x4=_0xff22x2[_0xff22x3];_0xff22x4[_0x2b73[1587]]= (_0xff22x4[_0x2b73[1587]]|| 0)- 1;0== _0xff22x4[_0x2b73[1587]]&& null!= _0xff22x4[_0x2b73[265]]&& _0xff22x4[_0x2b73[265]][_0x2b73[266]](_0xff22x4)}}};mxShape[_0x2b73[202]][_0x2b73[515]]= function(){null!= this[_0x2b73[252]]&& (mxEvent[_0x2b73[762]](this[_0x2b73[252]]),null!= this[_0x2b73[252]][_0x2b73[265]]&& this[_0x2b73[252]][_0x2b73[265]][_0x2b73[266]](this[_0x2b73[252]]),this[_0x2b73[252]]= null);this[_0x2b73[1589]](this[_0x2b73[1588]]);this[_0x2b73[1588]]= null};var mxStencilRegistry={stencils:[],addStencil:function(_0xff22x2,_0xff22x3){mxStencilRegistry[_0x2b73[1620]][_0xff22x2]= _0xff22x3},getStencil:function(_0xff22x2){return mxStencilRegistry[_0x2b73[1620]][_0xff22x2]}},mxMarker={markers:[],addMarker:function(_0xff22x2,_0xff22x3){mxMarker[_0x2b73[1621]][_0xff22x2]= _0xff22x3},createMarker:function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa,_0xff22x12,_0xff22x13,_0xff22x14,_0xff22x15){var _0xff22x16=mxMarker[_0x2b73[1621]][_0xff22x4];return null!= _0xff22x16?_0xff22x16(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa,_0xff22x12,_0xff22x13,_0xff22x14,_0xff22x15):null}};(function(){function _0xff22x2(_0xff22x2,_0xff22x3,_0xff22x9,_0xff22xa,_0xff22x12,_0xff22x13,_0xff22x14,_0xff22x15,_0xff22x16,_0xff22x17){_0xff22x3= 1.118* _0xff22x12* _0xff22x16;_0xff22x15= 1.118* _0xff22x13* _0xff22x16;_0xff22x12*= _0xff22x14+ _0xff22x16;_0xff22x13*= _0xff22x14+ _0xff22x16;var _0xff22x18=_0xff22xa[_0x2b73[238]]();_0xff22x18[_0x2b73[235]]-= _0xff22x3;_0xff22x18[_0x2b73[236]]-= _0xff22x15;_0xff22x14= _0xff22x9!= mxConstants[_0x2b73[1622]]?1:0.75;_0xff22xa[_0x2b73[235]]+= -_0xff22x12* _0xff22x14- _0xff22x3;_0xff22xa[_0x2b73[236]]+= -_0xff22x13* _0xff22x14- _0xff22x15;return function(){_0xff22x2[_0x2b73[1275]]();_0xff22x2[_0x2b73[1276]](_0xff22x18[_0x2b73[235]],_0xff22x18[_0x2b73[236]]);_0xff22x2[_0x2b73[1277]](_0xff22x18[_0x2b73[235]]- _0xff22x12- _0xff22x13/ 2,_0xff22x18[_0x2b73[236]]- _0xff22x13+ _0xff22x12/ 2);_0xff22x9== mxConstants[_0x2b73[1622]]&& _0xff22x2[_0x2b73[1277]](_0xff22x18[_0x2b73[235]]- 3* _0xff22x12/ 4,_0xff22x18[_0x2b73[236]]- 3* _0xff22x13/ 4);_0xff22x2[_0x2b73[1277]](_0xff22x18[_0x2b73[235]]+ _0xff22x13/ 2- _0xff22x12,_0xff22x18[_0x2b73[236]]- _0xff22x13- _0xff22x12/ 2);_0xff22x2[_0x2b73[268]]();_0xff22x17?_0xff22x2[_0x2b73[1337]]():_0xff22x2[_0x2b73[1336]]()}}function _0xff22x3(_0xff22x2,_0xff22x3,_0xff22x9,_0xff22xa,_0xff22x12,_0xff22x13,_0xff22x14,_0xff22x15,_0xff22x16,_0xff22x17){_0xff22x15= _0xff22x9== mxConstants[_0x2b73[1623]]?0.7071:0.9862;_0xff22x3= _0xff22x12* _0xff22x16* _0xff22x15;_0xff22x15*= _0xff22x13* _0xff22x16;_0xff22x12*= _0xff22x14+ _0xff22x16;_0xff22x13*= _0xff22x14+ _0xff22x16;var _0xff22x18=_0xff22xa[_0x2b73[238]]();_0xff22x18[_0x2b73[235]]-= _0xff22x3;_0xff22x18[_0x2b73[236]]-= _0xff22x15;_0xff22xa[_0x2b73[235]]+= -_0xff22x12- _0xff22x3;_0xff22xa[_0x2b73[236]]+= -_0xff22x13- _0xff22x15;var _0xff22x19=_0xff22x9== mxConstants[_0x2b73[1623]]?2:3.4;return function(){_0xff22x2[_0x2b73[1275]]();_0xff22x2[_0x2b73[1276]](_0xff22x18[_0x2b73[235]],_0xff22x18[_0x2b73[236]]);_0xff22x2[_0x2b73[1277]](_0xff22x18[_0x2b73[235]]- _0xff22x12/ 2- _0xff22x13/ _0xff22x19,_0xff22x18[_0x2b73[236]]+ _0xff22x12/ _0xff22x19- _0xff22x13/ 2);_0xff22x2[_0x2b73[1277]](_0xff22x18[_0x2b73[235]]- _0xff22x12,_0xff22x18[_0x2b73[236]]- _0xff22x13);_0xff22x2[_0x2b73[1277]](_0xff22x18[_0x2b73[235]]- _0xff22x12/ 2+ _0xff22x13/ _0xff22x19,_0xff22x18[_0x2b73[236]]- _0xff22x13/ 2- _0xff22x12/ _0xff22x19);_0xff22x2[_0x2b73[268]]();_0xff22x17?_0xff22x2[_0x2b73[1337]]():_0xff22x2[_0x2b73[1336]]()}}mxMarker[_0x2b73[1624]](_0x2b73[693],_0xff22x2);mxMarker[_0x2b73[1624]](_0x2b73[694],_0xff22x2);mxMarker[_0x2b73[1624]](_0x2b73[392],function(_0xff22x2,_0xff22x3,_0xff22x9,_0xff22xa,_0xff22x12,_0xff22x13,_0xff22x14,_0xff22x15,_0xff22x16,_0xff22x17){_0xff22x3= 1.118* _0xff22x12* _0xff22x16;_0xff22x9= 1.118* _0xff22x13* _0xff22x16;_0xff22x12*= _0xff22x14+ _0xff22x16;_0xff22x13*= _0xff22x14+ _0xff22x16;var _0xff22x18=_0xff22xa[_0x2b73[238]]();_0xff22x18[_0x2b73[235]]-= _0xff22x3;_0xff22x18[_0x2b73[236]]-= _0xff22x9;_0xff22xa[_0x2b73[235]]+= 2* -_0xff22x3;_0xff22xa[_0x2b73[236]]+= 2* -_0xff22x9;return function(){_0xff22x2[_0x2b73[1275]]();_0xff22x2[_0x2b73[1276]](_0xff22x18[_0x2b73[235]]- _0xff22x12- _0xff22x13/ 2,_0xff22x18[_0x2b73[236]]- _0xff22x13+ _0xff22x12/ 2);_0xff22x2[_0x2b73[1277]](_0xff22x18[_0x2b73[235]],_0xff22x18[_0x2b73[236]]);_0xff22x2[_0x2b73[1277]](_0xff22x18[_0x2b73[235]]+ _0xff22x13/ 2- _0xff22x12,_0xff22x18[_0x2b73[236]]- _0xff22x13- _0xff22x12/ 2);_0xff22x2[_0x2b73[1336]]()}});mxMarker[_0x2b73[1624]](_0x2b73[695],function(_0xff22x2,_0xff22x3,_0xff22x9,_0xff22xa,_0xff22x12,_0xff22x13,_0xff22x14,_0xff22x15,_0xff22x16,_0xff22x17){var _0xff22x18=_0xff22x14/ 2,_0xff22x19=_0xff22xa[_0x2b73[238]]();_0xff22xa[_0x2b73[235]]-= _0xff22x12* _0xff22x18;_0xff22xa[_0x2b73[236]]-= _0xff22x13* _0xff22x18;return function(){_0xff22x2[_0x2b73[680]](_0xff22x19[_0x2b73[235]]- _0xff22x18,_0xff22x19[_0x2b73[236]]- _0xff22x18,_0xff22x14,_0xff22x14);_0xff22x17?_0xff22x2[_0x2b73[1337]]():_0xff22x2[_0x2b73[1336]]()}});mxMarker[_0x2b73[1624]](_0x2b73[696],_0xff22x3);mxMarker[_0x2b73[1624]](_0x2b73[697],_0xff22x3)})();function mxActor(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){mxShape[_0x2b73[239]](this);this[_0x2b73[1562]]= _0xff22x2;this[_0x2b73[1334]]= _0xff22x3;this[_0x2b73[1336]]= _0xff22x4;this[_0x2b73[1307]]= null!= _0xff22x5?_0xff22x5:1}mxUtils[_0x2b73[1284]](mxActor,mxShape);mxActor[_0x2b73[202]][_0x2b73[1595]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){_0xff22x2[_0x2b73[513]](_0xff22x3,_0xff22x4);_0xff22x2[_0x2b73[1275]]();this[_0x2b73[1625]](_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9);_0xff22x2[_0x2b73[1337]]()};mxActor[_0x2b73[202]][_0x2b73[1625]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){_0xff22x3= _0xff22x5/ 3;_0xff22x2[_0x2b73[1276]](0,_0xff22x9);_0xff22x2[_0x2b73[1279]](0,3* _0xff22x9/ 5,0,2* _0xff22x9/ 5,_0xff22x5/ 2,2* _0xff22x9/ 5);_0xff22x2[_0x2b73[1279]](_0xff22x5/ 2- _0xff22x3,2* _0xff22x9/ 5,_0xff22x5/ 2- _0xff22x3,0,_0xff22x5/ 2,0);_0xff22x2[_0x2b73[1279]](_0xff22x5/ 2+ _0xff22x3,0,_0xff22x5/ 2+ _0xff22x3,2* _0xff22x9/ 5,_0xff22x5/ 2,2* _0xff22x9/ 5);_0xff22x2[_0x2b73[1279]](_0xff22x5,2* _0xff22x9/ 5,_0xff22x5,3* _0xff22x9/ 5,_0xff22x5,_0xff22x9);_0xff22x2[_0x2b73[268]]()};function mxCloud(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){mxActor[_0x2b73[239]](this);this[_0x2b73[1562]]= _0xff22x2;this[_0x2b73[1334]]= _0xff22x3;this[_0x2b73[1336]]= _0xff22x4;this[_0x2b73[1307]]= null!= _0xff22x5?_0xff22x5:1}mxUtils[_0x2b73[1284]](mxCloud,mxActor);mxCloud[_0x2b73[202]][_0x2b73[1625]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){_0xff22x2[_0x2b73[1276]](0.25* _0xff22x5,0.25* _0xff22x9);_0xff22x2[_0x2b73[1279]](0.05* _0xff22x5,0.25* _0xff22x9,0,0.5* _0xff22x9,0.16* _0xff22x5,0.55* _0xff22x9);_0xff22x2[_0x2b73[1279]](0,0.66* _0xff22x9,0.18* _0xff22x5,0.9* _0xff22x9,0.31* _0xff22x5,0.8* _0xff22x9);_0xff22x2[_0x2b73[1279]](0.4* _0xff22x5,_0xff22x9,0.7* _0xff22x5,_0xff22x9,0.8* _0xff22x5,0.8* _0xff22x9);_0xff22x2[_0x2b73[1279]](_0xff22x5,0.8* _0xff22x9,_0xff22x5,0.6* _0xff22x9,0.875* _0xff22x5,0.5* _0xff22x9);_0xff22x2[_0x2b73[1279]](_0xff22x5,0.3* _0xff22x9,0.8* _0xff22x5,0.1* _0xff22x9,0.625* _0xff22x5,0.2* _0xff22x9);_0xff22x2[_0x2b73[1279]](0.5* _0xff22x5,0.05* _0xff22x9,0.3* _0xff22x5,0.05* _0xff22x9,0.25* _0xff22x5,0.25* _0xff22x9);_0xff22x2[_0x2b73[268]]()};function mxRectangleShape(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){mxShape[_0x2b73[239]](this);this[_0x2b73[1562]]= _0xff22x2;this[_0x2b73[1334]]= _0xff22x3;this[_0x2b73[1336]]= _0xff22x4;this[_0x2b73[1307]]= null!= _0xff22x5?_0xff22x5:1}mxUtils[_0x2b73[1284]](mxRectangleShape,mxShape);mxRectangleShape[_0x2b73[202]][_0x2b73[1567]]= function(){return !this[_0x2b73[1606]]&& !this[_0x2b73[617]]&& 0== this[_0x2b73[603]]};mxRectangleShape[_0x2b73[202]][_0x2b73[1601]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){if(this[_0x2b73[1606]]){var _0xff22xa=mxUtils[_0x2b73[433]](this[_0x2b73[124]],mxConstants.STYLE_ARCSIZE,100* mxConstants[_0x2b73[1557]])/ 100,_0xff22xa=Math[_0x2b73[243]](_0xff22x5* _0xff22xa,_0xff22x9* _0xff22xa);_0xff22x2[_0x2b73[1320]](_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa,_0xff22xa)}else {_0xff22x2[_0x2b73[1319]](_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9)};_0xff22x2[_0x2b73[1337]]()};mxRectangleShape[_0x2b73[202]][_0x2b73[1602]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){this[_0x2b73[617]]&& this[_0x2b73[1604]](_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,this[_0x2b73[1603]](_0xff22x5+ this[_0x2b73[1307]],_0xff22x9+ this[_0x2b73[1307]]))};mxRectangleShape[_0x2b73[202]][_0x2b73[1575]]= function(){this[_0x2b73[1626]](this[_0x2b73[252]]);this[_0x2b73[1627]](this[_0x2b73[252]]);this[_0x2b73[1628]](this[_0x2b73[252]])};mxRectangleShape[_0x2b73[202]][_0x2b73[1626]]= function(_0xff22x2){var _0xff22x3=9<= document[_0x2b73[5]]?0:Math[_0x2b73[430]](this[_0x2b73[1307]]* this[_0x2b73[255]]);_0xff22x2[_0x2b73[124]][_0x2b73[1629]]= Math[_0x2b73[160]](1,_0xff22x3)+ _0x2b73[168];_0xff22x2[_0x2b73[124]][_0x2b73[277]]= _0x2b73[188];_0xff22x2[_0x2b73[124]][_0x2b73[361]]= Math[_0x2b73[488]](this[_0x2b73[1562]][_0x2b73[235]]- _0xff22x3/ 2)+ _0x2b73[168];_0xff22x2[_0x2b73[124]][_0x2b73[125]]= Math[_0x2b73[488]](this[_0x2b73[1562]][_0x2b73[236]]- _0xff22x3/ 2)+ _0x2b73[168];_0x2b73[462]== document[_0x2b73[135]]&& (_0xff22x3= -_0xff22x3);_0xff22x2[_0x2b73[124]][_0x2b73[117]]= Math[_0x2b73[488]](Math[_0x2b73[160]](0,this[_0x2b73[1562]][_0x2b73[117]]+ _0xff22x3))+ _0x2b73[168];_0xff22x2[_0x2b73[124]][_0x2b73[119]]= Math[_0x2b73[488]](Math[_0x2b73[160]](0,this[_0x2b73[1562]][_0x2b73[119]]+ _0xff22x3))+ _0x2b73[168]};mxRectangleShape[_0x2b73[202]][_0x2b73[1628]]= function(_0xff22x2){var _0xff22x3=this[_0x2b73[1336]];null!= _0xff22x3&& _0xff22x3!= mxConstants[_0x2b73[217]]?(_0xff22x2[_0x2b73[124]][_0x2b73[1630]]= _0xff22x3,this[_0x2b73[1522]]?_0xff22x2[_0x2b73[124]][_0x2b73[465]]= _0x2b73[648]:0< this[_0x2b73[1307]]&& (_0xff22x2[_0x2b73[124]][_0x2b73[465]]= _0x2b73[1631]),_0xff22x2[_0x2b73[124]][_0x2b73[1629]]= Math[_0x2b73[160]](1,Math[_0x2b73[430]](this[_0x2b73[1307]]* this[_0x2b73[255]]))+ _0x2b73[168]):_0xff22x2[_0x2b73[124]][_0x2b73[1629]]= _0x2b73[946];_0xff22x3= this[_0x2b73[1334]];null!= _0xff22x3&& _0xff22x3!= mxConstants[_0x2b73[217]]?(_0xff22x2[_0x2b73[124]][_0x2b73[1028]]= _0xff22x3,_0xff22x2[_0x2b73[124]][_0x2b73[1617]]= _0x2b73[130]):this[_0x2b73[1229]]?_0xff22x2[_0x2b73[124]][_0x2b73[1028]]= _0x2b73[1373]:8== document[_0x2b73[5]]?mxUtils[_0x2b73[1584]](_0xff22x2):this[_0x2b73[1600]](_0xff22x2)};mxRectangleShape[_0x2b73[202]][_0x2b73[1627]]= function(_0xff22x2){var _0xff22x3=_0x2b73[110];100> this[_0x2b73[461]]&& (_0xff22x3+= _0x2b73[459]+ this[_0x2b73[461]]+ _0x2b73[460]);this[_0x2b73[1596]]&& (_0xff22x3+= _0x2b73[1632]+ Math[_0x2b73[488]](mxConstants[_0x2b73[1237]]* this[_0x2b73[255]])+ _0x2b73[1633]+ Math[_0x2b73[488]](mxConstants[_0x2b73[1238]]* this[_0x2b73[255]])+ _0x2b73[1634]+ mxConstants[_0x2b73[1235]]+ _0x2b73[1635]);if(this[_0x2b73[1299]]){var _0xff22x4=this[_0x2b73[1334]],_0xff22x5=this[_0x2b73[1299]],_0xff22x9=_0x2b73[468],_0xff22xa={east:0,south:1,west:2,north:3},_0xff22x12=null!= this[_0x2b73[663]]?_0xff22xa[this[_0x2b73[663]]]:0;null!= this[_0x2b73[607]]&& (_0xff22x12= mxUtils[_0x2b73[1454]](_0xff22x12+ _0xff22xa[this[_0x2b73[607]]]- 1,4));1== _0xff22x12?(_0xff22x9= _0x2b73[500],_0xff22xa= _0xff22x4,_0xff22x4= _0xff22x5,_0xff22x5= _0xff22xa):2== _0xff22x12?(_0xff22xa= _0xff22x4,_0xff22x4= _0xff22x5,_0xff22x5= _0xff22xa):3== _0xff22x12&& (_0xff22x9= _0x2b73[500]);_0xff22x3+= _0x2b73[1636]+ _0xff22x4+ _0x2b73[1637]+ _0xff22x5+ _0x2b73[1638]+ _0xff22x9+ _0x2b73[1635]};_0xff22x2[_0x2b73[124]][_0x2b73[347]]= _0xff22x3};function mxEllipse(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){mxShape[_0x2b73[239]](this);this[_0x2b73[1562]]= _0xff22x2;this[_0x2b73[1334]]= _0xff22x3;this[_0x2b73[1336]]= _0xff22x4;this[_0x2b73[1307]]= null!= _0xff22x5?_0xff22x5:1}mxUtils[_0x2b73[1284]](mxEllipse,mxShape);mxEllipse[_0x2b73[202]][_0x2b73[1595]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){_0xff22x2[_0x2b73[680]](_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9);_0xff22x2[_0x2b73[1337]]()};function mxDoubleEllipse(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){mxShape[_0x2b73[239]](this);this[_0x2b73[1562]]= _0xff22x2;this[_0x2b73[1334]]= _0xff22x3;this[_0x2b73[1336]]= _0xff22x4;this[_0x2b73[1307]]= null!= _0xff22x5?_0xff22x5:1}mxUtils[_0x2b73[1284]](mxDoubleEllipse,mxShape);mxDoubleEllipse[_0x2b73[202]][_0x2b73[1460]]= 10;mxDoubleEllipse[_0x2b73[202]][_0x2b73[1601]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){_0xff22x2[_0x2b73[680]](_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9);_0xff22x2[_0x2b73[1337]]()};mxDoubleEllipse[_0x2b73[202]][_0x2b73[1602]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){var _0xff22xa=Math[_0x2b73[243]](4,Math[_0x2b73[243]](_0xff22x5/ 5,_0xff22x9/ 5));_0xff22x5-= 2* _0xff22xa;_0xff22x9-= 2* _0xff22xa;0< _0xff22x5&& 0< _0xff22x9&& _0xff22x2[_0x2b73[680]](_0xff22x3+ _0xff22xa,_0xff22x4+ _0xff22xa,_0xff22x5,_0xff22x9);_0xff22x2[_0x2b73[1336]]()};function mxRhombus(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){mxShape[_0x2b73[239]](this);this[_0x2b73[1562]]= _0xff22x2;this[_0x2b73[1334]]= _0xff22x3;this[_0x2b73[1336]]= _0xff22x4;this[_0x2b73[1307]]= null!= _0xff22x5?_0xff22x5:1}mxUtils[_0x2b73[1284]](mxRhombus,mxShape);mxRhombus[_0x2b73[202]][_0x2b73[1595]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){var _0xff22xa=_0xff22x5/ 2,_0xff22x12=_0xff22x9/ 2;_0xff22x2[_0x2b73[1275]]();_0xff22x2[_0x2b73[1276]](_0xff22x3+ _0xff22xa,_0xff22x4);_0xff22x2[_0x2b73[1277]](_0xff22x3+ _0xff22x5,_0xff22x4+ _0xff22x12);_0xff22x2[_0x2b73[1277]](_0xff22x3+ _0xff22xa,_0xff22x4+ _0xff22x9);_0xff22x2[_0x2b73[1277]](_0xff22x3,_0xff22x4+ _0xff22x12);_0xff22x2[_0x2b73[268]]();_0xff22x2[_0x2b73[1337]]()};function mxPolyline(_0xff22x2,_0xff22x3,_0xff22x4){mxShape[_0x2b73[239]](this);this[_0x2b73[1525]]= _0xff22x2;this[_0x2b73[1336]]= _0xff22x3;this[_0x2b73[1307]]= null!= _0xff22x4?_0xff22x4:1}mxUtils[_0x2b73[1284]](mxPolyline,mxShape);mxPolyline[_0x2b73[202]][_0x2b73[1614]]= function(){return 0};mxPolyline[_0x2b73[202]][_0x2b73[1594]]= function(_0xff22x2,_0xff22x3){this[_0x2b73[1639]](_0xff22x2,_0xff22x3,this[_0x2b73[1606]])};mxPolyline[_0x2b73[202]][_0x2b73[1639]]= function(_0xff22x2,_0xff22x3,_0xff22x4){var _0xff22x5=mxUtils[_0x2b73[433]](this[_0x2b73[124]],mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/ 2,_0xff22x9=_0xff22x3[0],_0xff22xa=_0xff22x3[_0xff22x3[_0x2b73[67]]- 1];_0xff22x2[_0x2b73[1275]]();_0xff22x2[_0x2b73[1276]](_0xff22x9[_0x2b73[235]],_0xff22x9[_0x2b73[236]]);for(var _0xff22x12=1;_0xff22x12< _0xff22x3[_0x2b73[67]]- 1;_0xff22x12++){var _0xff22x13=_0xff22x3[_0xff22x12],_0xff22x14=_0xff22x9[_0x2b73[235]]- _0xff22x13[_0x2b73[235]],_0xff22x9=_0xff22x9[_0x2b73[236]]- _0xff22x13[_0x2b73[236]];if(_0xff22x4&& _0xff22x12< _0xff22x3[_0x2b73[67]]- 1&& (0!= _0xff22x14|| 0!= _0xff22x9)){var _0xff22x15=Math[_0x2b73[428]](_0xff22x14* _0xff22x14+ _0xff22x9* _0xff22x9),_0xff22x14=_0xff22x14* Math[_0x2b73[243]](_0xff22x5,_0xff22x15/ 2)/ _0xff22x15,_0xff22x9=_0xff22x9* Math[_0x2b73[243]](_0xff22x5,_0xff22x15/ 2)/ _0xff22x15;_0xff22x2[_0x2b73[1277]](_0xff22x13[_0x2b73[235]]+ _0xff22x14,_0xff22x13[_0x2b73[236]]+ _0xff22x9);_0xff22x9= _0xff22x3[_0xff22x12+ 1];_0xff22x14= _0xff22x9[_0x2b73[235]]- _0xff22x13[_0x2b73[235]];_0xff22x9= _0xff22x9[_0x2b73[236]]- _0xff22x13[_0x2b73[236]];_0xff22x15= Math[_0x2b73[160]](1,Math[_0x2b73[428]](_0xff22x14* _0xff22x14+ _0xff22x9* _0xff22x9));_0xff22x14= _0xff22x14* Math[_0x2b73[243]](_0xff22x5,_0xff22x15/ 2)/ _0xff22x15;_0xff22x9= _0xff22x9* Math[_0x2b73[243]](_0xff22x5,_0xff22x15/ 2)/ _0xff22x15;_0xff22x14= _0xff22x13[_0x2b73[235]]+ _0xff22x14;_0xff22x9= _0xff22x13[_0x2b73[236]]+ _0xff22x9;_0xff22x2[_0x2b73[1278]](_0xff22x13[_0x2b73[235]],_0xff22x13[_0x2b73[236]],_0xff22x14,_0xff22x9);_0xff22x13= new mxPoint(_0xff22x14,_0xff22x9)}else {_0xff22x2[_0x2b73[1277]](_0xff22x13[_0x2b73[235]],_0xff22x13[_0x2b73[236]])};_0xff22x9= _0xff22x13};_0xff22x2[_0x2b73[1277]](_0xff22xa[_0x2b73[235]],_0xff22xa[_0x2b73[236]]);_0xff22x2[_0x2b73[1336]]()};function mxArrow(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa,_0xff22x12){mxShape[_0x2b73[239]](this);this[_0x2b73[1525]]= _0xff22x2;this[_0x2b73[1334]]= _0xff22x3;this[_0x2b73[1336]]= _0xff22x4;this[_0x2b73[1307]]= null!= _0xff22x5?_0xff22x5:1;this[_0x2b73[1640]]= null!= _0xff22x9?_0xff22x9:mxConstants[_0x2b73[1641]];this[_0x2b73[657]]= null!= _0xff22xa?_0xff22xa:mxConstants[_0x2b73[1642]];this[_0x2b73[643]]= null!= _0xff22x12?_0xff22x12:mxConstants[_0x2b73[1643]]}mxUtils[_0x2b73[1284]](mxArrow,mxShape);mxArrow[_0x2b73[202]][_0x2b73[1594]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=mxConstants[_0x2b73[1642]],_0xff22x5=mxConstants[_0x2b73[1641]],_0xff22x9=mxConstants[_0x2b73[1643]],_0xff22xa=_0xff22x3[0],_0xff22x12=_0xff22x3[_0xff22x3[_0x2b73[67]]- 1],_0xff22x13=_0xff22x12[_0x2b73[235]]- _0xff22xa[_0x2b73[235]],_0xff22x14=_0xff22x12[_0x2b73[236]]- _0xff22xa[_0x2b73[236]],_0xff22x15=Math[_0x2b73[428]](_0xff22x13* _0xff22x13+ _0xff22x14* _0xff22x14),_0xff22x16=_0xff22x15- 2* _0xff22x4- _0xff22x9,_0xff22x13=_0xff22x13/ _0xff22x15,_0xff22x14=_0xff22x14/ _0xff22x15,_0xff22x15=_0xff22x5* _0xff22x14/ 3,_0xff22x5=-_0xff22x5* _0xff22x13/ 3,_0xff22x9=_0xff22xa[_0x2b73[235]]- _0xff22x15/ 2+ _0xff22x4* _0xff22x13,_0xff22xa=_0xff22xa[_0x2b73[236]]- _0xff22x5/ 2+ _0xff22x4* _0xff22x14,_0xff22x17=_0xff22x9+ _0xff22x15,_0xff22x18=_0xff22xa+ _0xff22x5,_0xff22x19=_0xff22x17+ _0xff22x16* _0xff22x13,_0xff22x16=_0xff22x18+ _0xff22x16* _0xff22x14,_0xff22x1a=_0xff22x19+ _0xff22x15,_0xff22x1b=_0xff22x16+ _0xff22x5,_0xff22x1c=_0xff22x1a- 3* _0xff22x15,_0xff22x1d=_0xff22x1b- 3* _0xff22x5;_0xff22x2[_0x2b73[1275]]();_0xff22x2[_0x2b73[1276]](_0xff22x9,_0xff22xa);_0xff22x2[_0x2b73[1277]](_0xff22x17,_0xff22x18);_0xff22x2[_0x2b73[1277]](_0xff22x19,_0xff22x16);_0xff22x2[_0x2b73[1277]](_0xff22x1a,_0xff22x1b);_0xff22x2[_0x2b73[1277]](_0xff22x12[_0x2b73[235]]- _0xff22x4* _0xff22x13,_0xff22x12[_0x2b73[236]]- _0xff22x4* _0xff22x14);_0xff22x2[_0x2b73[1277]](_0xff22x1c,_0xff22x1d);_0xff22x2[_0x2b73[1277]](_0xff22x1c+ _0xff22x15,_0xff22x1d+ _0xff22x5);_0xff22x2[_0x2b73[268]]();_0xff22x2[_0x2b73[1337]]()};function mxText(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa,_0xff22x12,_0xff22x13,_0xff22x14,_0xff22x15,_0xff22x16,_0xff22x17,_0xff22x18,_0xff22x19,_0xff22x1a,_0xff22x1b,_0xff22x1c,_0xff22x1d,_0xff22x1e,_0xff22x1f){mxShape[_0x2b73[239]](this);this[_0x2b73[131]]= _0xff22x2;this[_0x2b73[1562]]= _0xff22x3;this[_0x2b73[352]]= null!= _0xff22x9?_0xff22x9:_0x2b73[586];this[_0x2b73[611]]= null!= _0xff22x4?_0xff22x4:_0x2b73[110];this[_0x2b73[552]]= null!= _0xff22x5?_0xff22x5:_0x2b73[110];this[_0x2b73[1288]]= null!= _0xff22xa?_0xff22xa:mxConstants[_0x2b73[484]];this[_0x2b73[803]]= null!= _0xff22x12?_0xff22x12:mxConstants[_0x2b73[483]];this[_0x2b73[666]]= null!= _0xff22x13?_0xff22x13:mxConstants[_0x2b73[1644]];this[_0x2b73[657]]= parseInt(_0xff22x14|| 2);this[_0x2b73[658]]= this[_0x2b73[657]]+ parseInt(_0xff22x15|| 0);this[_0x2b73[661]]= this[_0x2b73[657]]+ parseInt(_0xff22x16|| 0);this[_0x2b73[660]]= this[_0x2b73[657]]+ parseInt(_0xff22x17|| 0);this[_0x2b73[659]]= this[_0x2b73[657]]+ parseInt(_0xff22x18|| 0);this[_0x2b73[662]]= null!= _0xff22x19?_0xff22x19:!0;this[_0x2b73[1537]]= _0xff22x1a;this[_0x2b73[467]]= _0xff22x1b;this[_0x2b73[1333]]= null!= _0xff22x1c?_0xff22x1c:!1;this[_0x2b73[1645]]= null!= _0xff22x1d?_0xff22x1d:!1;this[_0x2b73[277]]= null!= _0xff22x1e?_0xff22x1e:_0x2b73[189];this[_0x2b73[629]]= null!= _0xff22x1f?_0xff22x1f:0;this[_0x2b73[603]]= 0}mxUtils[_0x2b73[1284]](mxText,mxShape);mxText[_0x2b73[202]][_0x2b73[1646]]= 0;mxText[_0x2b73[202]][_0x2b73[1647]]= 0;mxText[_0x2b73[202]][_0x2b73[1648]]= 0;mxText[_0x2b73[202]][_0x2b73[1649]]= 0;mxText[_0x2b73[202]][_0x2b73[1650]]= !0;mxText[_0x2b73[202]][_0x2b73[1616]]= -90;mxText[_0x2b73[202]][_0x2b73[1651]]= !0;mxText[_0x2b73[202]][_0x2b73[1652]]= !1;mxText[_0x2b73[202]][_0x2b73[1566]]= function(){return !1};mxText[_0x2b73[202]][_0x2b73[1567]]= function(){return 8!= document[_0x2b73[5]]};mxText[_0x2b73[202]][_0x2b73[1568]]= function(){return 0};mxText[_0x2b73[202]][_0x2b73[1574]]= function(){return null!= this[_0x2b73[1562]]&& !isNaN(this[_0x2b73[1562]][_0x2b73[235]])&& !isNaN(this[_0x2b73[1562]][_0x2b73[236]])&& !isNaN(this[_0x2b73[1562]][_0x2b73[117]])&& !isNaN(this[_0x2b73[1562]][_0x2b73[119]])};mxText[_0x2b73[202]][_0x2b73[1577]]= function(){var _0xff22x2=this[_0x2b73[252]];8== document[_0x2b73[5]]&& null!= _0xff22x2[_0x2b73[285]]&& (_0xff22x2= _0xff22x2[_0x2b73[285]],null!= _0xff22x2[_0x2b73[285]]&& (_0xff22x2= _0xff22x2[_0x2b73[285]]));this[_0x2b73[1563]]= this[_0x2b73[1562]][_0x2b73[238]]();var _0xff22x3=this[_0x2b73[1615]]();if(!this[_0x2b73[1652]]&& null!= _0xff22x2&& _0x2b73[1334]!= this[_0x2b73[277]]&& (!this[_0x2b73[1645]]|| !this[_0x2b73[1651]])){var _0xff22x4=null,_0xff22x5=null;if(null!= _0xff22x2[_0x2b73[538]]){if(null!= _0xff22x2[_0x2b73[285]]&& null!= _0xff22x2[_0x2b73[285]][_0x2b73[285]]&& _0x2b73[1435]== _0xff22x2[_0x2b73[285]][_0x2b73[285]][_0x2b73[301]]){_0xff22x2= _0xff22x2[_0x2b73[285]][_0x2b73[285]],_0xff22x4= this[_0x2b73[1333]]?this[_0x2b73[1562]][_0x2b73[117]]:parseInt(_0xff22x2[_0x2b73[284]](_0x2b73[117]))* this[_0x2b73[255]],_0xff22x5= parseInt(_0xff22x2[_0x2b73[284]](_0x2b73[119]))* this[_0x2b73[255]]}else {_0xff22x3= _0xff22x2[_0x2b73[1451]]();if(0== _0xff22x3[_0x2b73[117]]&& 0== _0xff22x3[_0x2b73[119]]){return};this[_0x2b73[1563]]= new mxRectangle(_0xff22x3[_0x2b73[235]],_0xff22x3[_0x2b73[236]],_0xff22x3[_0x2b73[117]],_0xff22x3[_0x2b73[119]]);_0xff22x3= 0}}else {_0xff22x5= this[_0x2b73[724]][_0x2b73[441]][_0x2b73[1653]],null!= this[_0x2b73[359]]&& null!= this[_0x2b73[167]]?(_0xff22x4= this[_0x2b73[1333]]?this[_0x2b73[1562]][_0x2b73[117]]:this[_0x2b73[359]]* this[_0x2b73[255]],_0xff22x5= this[_0x2b73[167]]* this[_0x2b73[255]]):null!= _0xff22x5?(this[_0x2b73[1441]](_0xff22x5),this[_0x2b73[1654]](_0xff22x5),mxUtils[_0x2b73[1331]](this[_0x2b73[131]])?_0xff22x5[_0x2b73[339]]= this[_0x2b73[131]][_0x2b73[342]]:(_0xff22x4= this[_0x2b73[1650]]?this[_0x2b73[131]][_0x2b73[230]](/\n/g,_0x2b73[1453]):this[_0x2b73[131]],_0xff22x5[_0x2b73[339]]= _0xff22x4),_0xff22x4= this[_0x2b73[1333]]?this[_0x2b73[1562]][_0x2b73[117]]:_0xff22x5[_0x2b73[359]]* this[_0x2b73[255]],_0xff22x5= _0xff22x5[_0x2b73[167]]* this[_0x2b73[255]]):(_0xff22x4= this[_0x2b73[1333]]?this[_0x2b73[1562]][_0x2b73[117]]:_0xff22x2[_0x2b73[359]]* this[_0x2b73[255]],_0xff22x5= _0xff22x2[_0x2b73[167]]* this[_0x2b73[255]])};null!= _0xff22x4&& null!= _0xff22x5&& (this[_0x2b73[1563]]= new mxRectangle(this[_0x2b73[1562]][_0x2b73[235]]+ this[_0x2b73[1655]][_0x2b73[235]]* _0xff22x4,this[_0x2b73[1562]][_0x2b73[236]]+ this[_0x2b73[1655]][_0x2b73[236]]* _0xff22x5,_0xff22x4,_0xff22x5))}else {this[_0x2b73[1563]][_0x2b73[235]]+= this[_0x2b73[1655]][_0x2b73[235]]* this[_0x2b73[1563]][_0x2b73[117]],this[_0x2b73[1563]][_0x2b73[236]]+= this[_0x2b73[1655]][_0x2b73[236]]* this[_0x2b73[1563]][_0x2b73[119]]};null!= this[_0x2b73[1563]]&& (0!= _0xff22x3&& (_0xff22x3= mxUtils[_0x2b73[1613]](this[_0x2b73[1563]],_0xff22x3),this[_0x2b73[1563]][_0x2b73[235]]= _0xff22x3[_0x2b73[235]],this[_0x2b73[1563]][_0x2b73[236]]= _0xff22x3[_0x2b73[236]],mxClient[_0x2b73[496]]|| (this[_0x2b73[1563]][_0x2b73[117]]= _0xff22x3[_0x2b73[117]],this[_0x2b73[1563]][_0x2b73[119]]= _0xff22x3[_0x2b73[119]])),this[_0x2b73[1563]][_0x2b73[235]]= Math[_0x2b73[519]](this[_0x2b73[1563]][_0x2b73[235]]),this[_0x2b73[1563]][_0x2b73[236]]= Math[_0x2b73[519]](this[_0x2b73[1563]][_0x2b73[236]]),this[_0x2b73[1563]][_0x2b73[117]]= Math[_0x2b73[430]](this[_0x2b73[1563]][_0x2b73[117]]),this[_0x2b73[1563]][_0x2b73[119]]= Math[_0x2b73[430]](this[_0x2b73[1563]][_0x2b73[119]]))};mxText[_0x2b73[202]][_0x2b73[1598]]= function(){return 0};mxText[_0x2b73[202]][_0x2b73[1615]]= function(){return null!= this[_0x2b73[724]]&& null!= this[_0x2b73[724]][_0x2b73[253]]?this[_0x2b73[724]][_0x2b73[253]][_0x2b73[1615]]():0};mxText[_0x2b73[202]][_0x2b73[1590]]= function(){return !this[_0x2b73[662]]&& null!= this[_0x2b73[724]]&& this[_0x2b73[724]][_0x2b73[441]][_0x2b73[1179]][_0x2b73[251]][_0x2b73[1193]](this[_0x2b73[724]][_0x2b73[246]])};mxText[_0x2b73[202]][_0x2b73[1592]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){mxShape[_0x2b73[202]][_0x2b73[1592]][_0x2b73[183]](this,arguments);_0xff22x2[_0x2b73[1259]](this[_0x2b73[352]]);_0xff22x2[_0x2b73[1260]](this[_0x2b73[1537]]);_0xff22x2[_0x2b73[1262]](this[_0x2b73[467]]);_0xff22x2[_0x2b73[1265]](this[_0x2b73[1288]]);_0xff22x2[_0x2b73[1264]](this[_0x2b73[803]]);_0xff22x2[_0x2b73[1266]](this[_0x2b73[666]])};mxText[_0x2b73[202]][_0x2b73[1586]]= function(){this[_0x2b73[252]][_0x2b73[124]][_0x2b73[361]]= Math[_0x2b73[488]](this[_0x2b73[1562]][_0x2b73[235]])+ _0x2b73[168];this[_0x2b73[252]][_0x2b73[124]][_0x2b73[125]]= Math[_0x2b73[488]](this[_0x2b73[1562]][_0x2b73[236]])+ _0x2b73[168];this[_0x2b73[252]][_0x2b73[124]][_0x2b73[117]]= _0x2b73[942];this[_0x2b73[252]][_0x2b73[124]][_0x2b73[119]]= _0x2b73[942];this[_0x2b73[252]][_0x2b73[124]][_0x2b73[277]]= _0x2b73[189]};mxText[_0x2b73[202]][_0x2b73[1209]]= function(_0xff22x2){var _0xff22x3=this[_0x2b73[255]],_0xff22x4=this[_0x2b73[1562]][_0x2b73[235]]/ _0xff22x3,_0xff22x5=this[_0x2b73[1562]][_0x2b73[236]]/ _0xff22x3,_0xff22x9=this[_0x2b73[1562]][_0x2b73[117]]/ _0xff22x3,_0xff22x3=this[_0x2b73[1562]][_0x2b73[119]]/ _0xff22x3;this[_0x2b73[1591]](_0xff22x2,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22x3);this[_0x2b73[1592]](_0xff22x2,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22x3);var _0xff22xa=mxUtils[_0x2b73[1331]](this[_0x2b73[131]])|| this[_0x2b73[507]]== mxConstants[_0x2b73[1656]],_0xff22x12=_0xff22xa|| _0xff22x2 instanceof mxVmlCanvas2D?_0x2b73[1428]:_0x2b73[110],_0xff22x13=this[_0x2b73[131]];!_0xff22xa&& _0x2b73[1428]== _0xff22x12&& (_0xff22x13= mxUtils[_0x2b73[321]](_0xff22x13,!1));_0xff22x13= !mxUtils[_0x2b73[1331]](this[_0x2b73[131]])&& this[_0x2b73[1650]]&& _0x2b73[1428]== _0xff22x12?_0xff22x13[_0x2b73[230]](/\n/g,_0x2b73[1453]):_0xff22x13;_0xff22x2[_0x2b73[963]](_0xff22x4,_0xff22x5,_0xff22x9,_0xff22x3,_0xff22x13,this[_0x2b73[611]],this[_0x2b73[552]],this[_0x2b73[1333]],_0xff22x12,_0x2b73[1334]== this[_0x2b73[277]],this[_0x2b73[1645]],this[_0x2b73[1615]]())};mxText[_0x2b73[202]][_0x2b73[1575]]= function(){var _0xff22x2=this[_0x2b73[252]][_0x2b73[124]];_0xff22x2[_0x2b73[461]]= 1> this[_0x2b73[461]]?this[_0x2b73[461]]:_0x2b73[110];_0xff22x2[_0x2b73[277]]= _0x2b73[110];_0xff22x2[_0x2b73[117]]= _0x2b73[110];_0xff22x2[_0x2b73[119]]= _0x2b73[110];this[_0x2b73[1441]](this[_0x2b73[252]]);this[_0x2b73[1654]](this[_0x2b73[252]]);this[_0x2b73[1657]]();this[_0x2b73[167]]= this[_0x2b73[359]]= null;null!= mxClient[_0x2b73[73]]?this[_0x2b73[1658]]():this[_0x2b73[1659]]()};mxText[_0x2b73[202]][_0x2b73[1658]]= function(){var _0xff22x2=this[_0x2b73[1615]](),_0xff22x3=this[_0x2b73[252]][_0x2b73[124]],_0xff22x4=this[_0x2b73[1655]][_0x2b73[235]],_0xff22x5=this[_0x2b73[1655]][_0x2b73[236]];0!= _0xff22x2?(_0xff22x3[mxClient[_0x2b73[73]]+ _0x2b73[1660]]= 100* -_0xff22x4+ _0x2b73[1661]+ 100* -_0xff22x5+ _0x2b73[229],_0xff22x3[mxClient[_0x2b73[73]]+ _0x2b73[1662]]= _0x2b73[536]+ 100* _0xff22x4+ _0x2b73[1663]+ 100* _0xff22x5+ _0x2b73[1664]+ this[_0x2b73[255]]+ _0x2b73[1665]+ _0xff22x2+ _0x2b73[1666]):(_0xff22x3[mxClient[_0x2b73[73]]+ _0x2b73[1660]]= _0x2b73[1667],_0xff22x3[mxClient[_0x2b73[73]]+ _0x2b73[1662]]= _0x2b73[1402]+ this[_0x2b73[255]]+ _0x2b73[1393]+ 100* _0xff22x4+ _0x2b73[1663]+ 100* _0xff22x5+ _0x2b73[1668]);_0xff22x3[_0x2b73[361]]= Math[_0x2b73[488]](this[_0x2b73[1562]][_0x2b73[235]])+ _0x2b73[168];_0xff22x3[_0x2b73[125]]= Math[_0x2b73[488]](this[_0x2b73[1562]][_0x2b73[236]])+ _0x2b73[168]};mxText[_0x2b73[202]][_0x2b73[1659]]= function(){var _0xff22x2=this[_0x2b73[252]][_0x2b73[124]],_0xff22x3=this[_0x2b73[1655]][_0x2b73[235]],_0xff22x4=this[_0x2b73[1655]][_0x2b73[236]],_0xff22x5=this[_0x2b73[255]];_0xff22x2[_0x2b73[347]]= _0x2b73[110];var _0xff22x9=0,_0xff22xa=0,_0xff22x12=null!= this[_0x2b73[724]]?this[_0x2b73[724]][_0x2b73[441]][_0x2b73[1653]]:null;if(null!= _0xff22x12){_0xff22x12[_0x2b73[124]][_0x2b73[277]]= _0x2b73[110];_0xff22x12[_0x2b73[124]][_0x2b73[119]]= _0x2b73[110];_0xff22x12[_0x2b73[124]][_0x2b73[117]]= _0x2b73[110];this[_0x2b73[1441]](_0xff22x12);this[_0x2b73[1654]](_0xff22x12);if(mxUtils[_0x2b73[1331]](this[_0x2b73[131]])){_0xff22x12[_0x2b73[339]]= this[_0x2b73[131]][_0x2b73[342]]}else {var _0xff22x13=this[_0x2b73[131]];this[_0x2b73[507]]!= mxConstants[_0x2b73[1656]]&& (_0xff22x13= mxUtils[_0x2b73[321]](_0xff22x13,!1));_0xff22x13= this[_0x2b73[1650]]?_0xff22x13[_0x2b73[230]](/\n/g,_0x2b73[1453]):_0xff22x13;_0xff22x12[_0x2b73[339]]= _0xff22x13};_0xff22x9= _0xff22x12[_0x2b73[359]]+ 2;_0xff22xa= _0xff22x12[_0x2b73[167]]+ 2}else {_0xff22x9= this[_0x2b73[252]][_0x2b73[359]],_0xff22xa= this[_0x2b73[252]][_0x2b73[167]]+ 1};this[_0x2b73[359]]= _0xff22x9;this[_0x2b73[167]]= _0xff22xa;_0xff22x12= this[_0x2b73[1562]][_0x2b73[117]]/ _0xff22x5;_0xff22x13= this[_0x2b73[1562]][_0x2b73[119]]/ _0xff22x5;mxClient[_0x2b73[496]]&& (this[_0x2b73[1645]]|| _0x2b73[1334]== this[_0x2b73[277]])&& 0< _0xff22x13?(_0xff22x13= Math[_0x2b73[243]](_0xff22x13,_0xff22xa),_0xff22x2[_0x2b73[119]]= Math[_0x2b73[488]](_0xff22x13+ 1)+ _0x2b73[168]):_0xff22x13= _0xff22xa;_0x2b73[1334]!= this[_0x2b73[277]]&& (mxClient[_0x2b73[496]]&& (this[_0x2b73[1645]]|| this[_0x2b73[1333]])&& 0< _0xff22x12?(_0xff22x12= Math[_0x2b73[243]](_0xff22x12,_0xff22x9),_0xff22x2[_0x2b73[117]]= Math[_0x2b73[488]](_0xff22x12)+ _0x2b73[168]):_0xff22x12= _0xff22x9);var _0xff22x13=_0xff22x13* _0xff22x5,_0xff22x12=_0xff22x12* _0xff22x5,_0xff22x9=this[_0x2b73[1615]]()* (Math[_0x2b73[424]]/ 180),_0xff22xa=parseFloat(parseFloat(Math[_0x2b73[426]](_0xff22x9))[_0x2b73[1293]](8)),_0xff22x14=parseFloat(parseFloat(Math[_0x2b73[427]](-_0xff22x9))[_0x2b73[1293]](8)),_0xff22x9=_0xff22x9% (2* Math[_0x2b73[424]]);0> _0xff22x9&& (_0xff22x9+= 2* Math[_0x2b73[424]]);_0xff22x9%= Math[_0x2b73[424]];_0xff22x9> Math[_0x2b73[424]]/ 2&& (_0xff22x9= Math[_0x2b73[424]]- _0xff22x9);var _0xff22x15=Math[_0x2b73[426]](_0xff22x9),_0xff22x16=Math[_0x2b73[427]](-_0xff22x9),_0xff22x3=_0xff22x12* -(_0xff22x3+ 0.5),_0xff22x4=_0xff22x13* -(_0xff22x4+ 0.5),_0xff22x17=(_0xff22x13- _0xff22x13* _0xff22x15+ _0xff22x12* _0xff22x16)/ 2+ _0xff22x14* _0xff22x3- _0xff22xa* _0xff22x4;0!= _0xff22x9&& (_0xff22x2[_0x2b73[347]]= _0x2b73[1505]+ _0xff22xa+ _0x2b73[1506]+ _0xff22x14+ _0x2b73[1507]+ -_0xff22x14+ _0x2b73[1508]+ _0xff22xa+ _0x2b73[1509]);_0xff22x2[_0x2b73[499]]= _0xff22x5;_0xff22x2[_0x2b73[361]]= Math[_0x2b73[488]](this[_0x2b73[1562]][_0x2b73[235]]+ ((_0xff22x12- _0xff22x12* _0xff22x15+ _0xff22x13* _0xff22x16)/ 2- _0xff22xa* _0xff22x3- _0xff22x14* _0xff22x4)- _0xff22x12/ 2)+ _0x2b73[168];_0xff22x2[_0x2b73[125]]= Math[_0x2b73[488]](this[_0x2b73[1562]][_0x2b73[236]]+ _0xff22x17- _0xff22x13/ 2)+ _0x2b73[168]};mxText[_0x2b73[202]][_0x2b73[1657]]= function(){if(mxUtils[_0x2b73[1331]](this[_0x2b73[131]])){this[_0x2b73[252]][_0x2b73[339]]= _0x2b73[110],this[_0x2b73[252]][_0x2b73[62]](this[_0x2b73[131]])}else {var _0xff22x2=this[_0x2b73[131]];this[_0x2b73[507]]!= mxConstants[_0x2b73[1656]]&& (_0xff22x2= mxUtils[_0x2b73[321]](_0xff22x2,!1));var _0xff22x2=this[_0x2b73[1650]]?_0xff22x2[_0x2b73[230]](/\n/g,_0x2b73[1453]):_0xff22x2,_0xff22x3=null!= this[_0x2b73[1537]]&& this[_0x2b73[1537]]!= mxConstants[_0x2b73[217]]?this[_0x2b73[1537]]:null,_0xff22x4=null!= this[_0x2b73[467]]&& this[_0x2b73[467]]!= mxConstants[_0x2b73[217]]?this[_0x2b73[467]]:null;if(null!= _0xff22x3|| null!= _0xff22x4){if(_0x2b73[1334]== this[_0x2b73[277]]){null!= _0xff22x3&& (this[_0x2b73[252]][_0x2b73[124]][_0x2b73[1028]]= _0xff22x3),null!= _0xff22x4&& (this[_0x2b73[252]][_0x2b73[124]][_0x2b73[467]]= _0x2b73[1669]+ _0xff22x4)}else {var _0xff22x5=_0x2b73[110];null!= _0xff22x3&& (_0xff22x5+= _0x2b73[1418]+ _0xff22x3+ _0x2b73[471]);null!= _0xff22x4&& (_0xff22x5+= _0x2b73[1419]+ _0xff22x4+ _0x2b73[471]);_0xff22x2= _0x2b73[1670]+ _0xff22x5+ _0x2b73[1671]+ this[_0x2b73[252]][_0x2b73[124]][_0x2b73[489]]+ _0x2b73[1423]+ _0xff22x2+ _0x2b73[1424];this[_0x2b73[252]][_0x2b73[124]][_0x2b73[489]]= _0x2b73[110]}};this[_0x2b73[252]][_0x2b73[339]]= _0xff22x2}};mxText[_0x2b73[202]][_0x2b73[1441]]= function(_0xff22x2){_0xff22x2= _0xff22x2[_0x2b73[124]];_0xff22x2[_0x2b73[489]]= Math[_0x2b73[488]](this[_0x2b73[803]]* mxConstants[_0x2b73[490]])+ _0x2b73[168];_0xff22x2[_0x2b73[487]]= Math[_0x2b73[488]](this[_0x2b73[803]])+ _0x2b73[168];_0xff22x2[_0x2b73[486]]= this[_0x2b73[1288]];_0xff22x2[_0x2b73[123]]= _0x2b73[125];_0xff22x2[_0x2b73[352]]= this[_0x2b73[352]];_0xff22x2[_0x2b73[1452]]= (this[_0x2b73[666]]& mxConstants[_0x2b73[1410]])== mxConstants[_0x2b73[1410]]?_0x2b73[1447]:_0x2b73[110];_0xff22x2[_0x2b73[666]]= (this[_0x2b73[666]]& mxConstants[_0x2b73[1412]])== mxConstants[_0x2b73[1412]]?_0x2b73[1449]:_0x2b73[110];_0xff22x2[_0x2b73[1498]]= (this[_0x2b73[666]]& mxConstants[_0x2b73[1414]])== mxConstants[_0x2b73[1414]]?_0x2b73[355]:_0x2b73[110];_0xff22x2[_0x2b73[1165]]= this[_0x2b73[611]]== mxConstants[_0x2b73[479]]?_0x2b73[698]:this[_0x2b73[611]]== mxConstants[_0x2b73[480]]?_0x2b73[699]:_0x2b73[361]};mxText[_0x2b73[202]][_0x2b73[1654]]= function(_0xff22x2){var _0xff22x3=Math[_0x2b73[488]](this[_0x2b73[1562]][_0x2b73[117]]/ this[_0x2b73[255]]),_0xff22x4=Math[_0x2b73[488]](this[_0x2b73[1562]][_0x2b73[119]]/ this[_0x2b73[255]]);_0xff22x2= _0xff22x2[_0x2b73[124]];this[_0x2b73[1645]]?(_0xff22x2[_0x2b73[277]]= _0x2b73[188],0< _0xff22x4&& (_0xff22x2[_0x2b73[1503]]= _0xff22x4+ _0x2b73[168]),0< _0xff22x3&& (_0xff22x2[_0x2b73[117]]= _0xff22x3+ _0x2b73[168])):_0x2b73[1334]== this[_0x2b73[277]]&& (_0xff22x2[_0x2b73[117]]= _0xff22x3+ _0x2b73[168],0< _0xff22x4&& (_0xff22x2[_0x2b73[1503]]= _0xff22x4+ _0x2b73[168]));this[_0x2b73[1333]]?(!this[_0x2b73[1645]]&& 0< _0xff22x3&& (_0xff22x2[_0x2b73[117]]= _0xff22x3+ _0x2b73[168]),_0xff22x2[_0x2b73[493]]= _0x2b73[1502]):_0xff22x2[_0x2b73[493]]= _0x2b73[494]};mxText[_0x2b73[202]][_0x2b73[1672]]= function(){this[_0x2b73[1655]]= mxUtils[_0x2b73[1501]](this[_0x2b73[611]],this[_0x2b73[552]])};mxText[_0x2b73[202]][_0x2b73[1673]]= function(){var _0xff22x2=0,_0xff22x3=0,_0xff22x2=this[_0x2b73[611]]== mxConstants[_0x2b73[479]]?(this[_0x2b73[659]]- this[_0x2b73[661]])/ 2:this[_0x2b73[611]]== mxConstants[_0x2b73[480]]?-this[_0x2b73[661]]- this[_0x2b73[1649]]:this[_0x2b73[659]]+ this[_0x2b73[1648]],_0xff22x3=this[_0x2b73[552]]== mxConstants[_0x2b73[481]]?(this[_0x2b73[658]]- this[_0x2b73[660]])/ 2:this[_0x2b73[552]]== mxConstants[_0x2b73[482]]?-this[_0x2b73[660]]- this[_0x2b73[1647]]:this[_0x2b73[658]]+ this[_0x2b73[1646]];return new mxPoint(_0xff22x2,_0xff22x3)};function mxTriangle(){mxActor[_0x2b73[239]](this)}mxUtils[_0x2b73[1284]](mxTriangle,mxActor);mxTriangle[_0x2b73[202]][_0x2b73[1625]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){_0xff22x2[_0x2b73[1276]](0,0);_0xff22x2[_0x2b73[1277]](_0xff22x5,0.5* _0xff22x9);_0xff22x2[_0x2b73[1277]](0,_0xff22x9);_0xff22x2[_0x2b73[268]]()};function mxHexagon(){mxActor[_0x2b73[239]](this)}mxUtils[_0x2b73[1284]](mxHexagon,mxActor);mxHexagon[_0x2b73[202]][_0x2b73[1625]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){_0xff22x2[_0x2b73[1276]](0.25* _0xff22x5,0);_0xff22x2[_0x2b73[1277]](0.75* _0xff22x5,0);_0xff22x2[_0x2b73[1277]](_0xff22x5,0.5* _0xff22x9);_0xff22x2[_0x2b73[1277]](0.75* _0xff22x5,_0xff22x9);_0xff22x2[_0x2b73[1277]](0.25* _0xff22x5,_0xff22x9);_0xff22x2[_0x2b73[1277]](0,0.5* _0xff22x9);_0xff22x2[_0x2b73[268]]()};function mxLine(_0xff22x2,_0xff22x3,_0xff22x4){mxShape[_0x2b73[239]](this);this[_0x2b73[1562]]= _0xff22x2;this[_0x2b73[1336]]= _0xff22x3;this[_0x2b73[1307]]= null!= _0xff22x4?_0xff22x4:1}mxUtils[_0x2b73[1284]](mxLine,mxShape);mxLine[_0x2b73[202]][_0x2b73[1595]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){_0xff22x4+= _0xff22x9/ 2;_0xff22x2[_0x2b73[1275]]();_0xff22x2[_0x2b73[1276]](_0xff22x3,_0xff22x4);_0xff22x2[_0x2b73[1277]](_0xff22x3+ _0xff22x5,_0xff22x4);_0xff22x2[_0x2b73[1336]]()};function mxImageShape(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){mxShape[_0x2b73[239]](this);this[_0x2b73[1562]]= _0xff22x2;this[_0x2b73[618]]= _0xff22x3;this[_0x2b73[1334]]= _0xff22x4;this[_0x2b73[1336]]= _0xff22x5;this[_0x2b73[1307]]= null!= _0xff22x9?_0xff22x9:1;this[_0x2b73[639]]= !1}mxUtils[_0x2b73[1284]](mxImageShape,mxRectangleShape);mxImageShape[_0x2b73[202]][_0x2b73[1674]]= !0;mxImageShape[_0x2b73[202]][_0x2b73[1568]]= function(){return !mxClient[_0x2b73[80]]?0.5:0};mxImageShape[_0x2b73[202]][_0x2b73[183]]= function(_0xff22x2){mxShape[_0x2b73[202]][_0x2b73[183]][_0x2b73[183]](this,arguments);this[_0x2b73[1299]]= this[_0x2b73[1336]]= this[_0x2b73[1334]]= null;null!= this[_0x2b73[124]]&& (this[_0x2b73[1334]]= mxUtils[_0x2b73[433]](this[_0x2b73[124]],mxConstants.STYLE_IMAGE_BACKGROUND),this[_0x2b73[1336]]= mxUtils[_0x2b73[433]](this[_0x2b73[124]],mxConstants.STYLE_IMAGE_BORDER),this[_0x2b73[1674]]= 1== mxUtils[_0x2b73[1550]](this[_0x2b73[124]],mxConstants.STYLE_IMAGE_ASPECT,1),this[_0x2b73[623]]= this[_0x2b73[623]]|| 1== mxUtils[_0x2b73[433]](this[_0x2b73[124]],_0x2b73[1675],0),this[_0x2b73[624]]= this[_0x2b73[624]]|| 1== mxUtils[_0x2b73[433]](this[_0x2b73[124]],_0x2b73[1676],0))};mxImageShape[_0x2b73[202]][_0x2b73[1567]]= function(){return !this[_0x2b73[1674]]};mxImageShape[_0x2b73[202]][_0x2b73[1570]]= function(){var _0xff22x2=document[_0x2b73[55]](_0x2b73[485]);_0xff22x2[_0x2b73[124]][_0x2b73[491]]= _0x2b73[492];return _0xff22x2};mxImageShape[_0x2b73[202]][_0x2b73[1595]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){if(null!= this[_0x2b73[618]]){var _0xff22xa=mxUtils[_0x2b73[433]](this[_0x2b73[124]],mxConstants.STYLE_IMAGE_BACKGROUND,null),_0xff22x12=mxUtils[_0x2b73[433]](this[_0x2b73[124]],mxConstants.STYLE_IMAGE_BORDER,null);if(null!= _0xff22xa|| null!= _0xff22x12){_0xff22x2[_0x2b73[1245]](_0xff22xa),_0xff22x2[_0x2b73[1249]](_0xff22x12),_0xff22x2[_0x2b73[1319]](_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9),_0xff22x2[_0x2b73[1337]]()};_0xff22x2[_0x2b73[618]](_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,this[_0x2b73[618]],this[_0x2b73[1674]],!1,!1)}else {mxRectangleShape[_0x2b73[202]][_0x2b73[1601]][_0x2b73[183]](this,arguments)}};mxImageShape[_0x2b73[202]][_0x2b73[1575]]= function(){this[_0x2b73[252]][_0x2b73[124]][_0x2b73[361]]= Math[_0x2b73[488]](this[_0x2b73[1562]][_0x2b73[235]])+ _0x2b73[168];this[_0x2b73[252]][_0x2b73[124]][_0x2b73[125]]= Math[_0x2b73[488]](this[_0x2b73[1562]][_0x2b73[236]])+ _0x2b73[168];this[_0x2b73[252]][_0x2b73[124]][_0x2b73[117]]= Math[_0x2b73[160]](0,Math[_0x2b73[488]](this[_0x2b73[1562]][_0x2b73[117]]))+ _0x2b73[168];this[_0x2b73[252]][_0x2b73[124]][_0x2b73[119]]= Math[_0x2b73[160]](0,Math[_0x2b73[488]](this[_0x2b73[1562]][_0x2b73[119]]))+ _0x2b73[168];this[_0x2b73[252]][_0x2b73[124]][_0x2b73[1028]]= this[_0x2b73[1334]]|| _0x2b73[110];this[_0x2b73[252]][_0x2b73[124]][_0x2b73[1630]]= this[_0x2b73[1336]]|| _0x2b73[110];this[_0x2b73[252]][_0x2b73[339]]= _0x2b73[110];if(null!= this[_0x2b73[618]]){var _0xff22x2=document[_0x2b73[55]](mxClient[_0x2b73[49]]|| null== mxClient[_0x2b73[73]]&& 0!= this[_0x2b73[603]]?mxClient[_0x2b73[463]]+ _0x2b73[464]:_0x2b73[466]);_0xff22x2[_0x2b73[124]][_0x2b73[491]]= _0x2b73[492];_0xff22x2[_0x2b73[390]]= this[_0x2b73[618]];var _0xff22x3=100> this[_0x2b73[461]]?_0x2b73[459]+ this[_0x2b73[461]]+ _0x2b73[460]:_0x2b73[110];this[_0x2b73[252]][_0x2b73[124]][_0x2b73[347]]= _0xff22x3;this[_0x2b73[623]]&& this[_0x2b73[624]]?_0xff22x3+= _0x2b73[1677]:this[_0x2b73[623]]?_0xff22x3+= _0x2b73[1678]:this[_0x2b73[624]]&& (_0xff22x3+= _0x2b73[1679]);_0xff22x2[_0x2b73[124]][_0x2b73[347]]!= _0xff22x3&& (_0xff22x2[_0x2b73[124]][_0x2b73[347]]= _0xff22x3);_0x2b73[618]== _0xff22x2[_0x2b73[301]]?_0xff22x2[_0x2b73[124]][_0x2b73[603]]= this[_0x2b73[603]]:_0xff22x2[_0x2b73[124]][mxClient[_0x2b73[73]]+ _0x2b73[1662]]= _0x2b73[1394]+ this[_0x2b73[603]]+ _0x2b73[1666];_0xff22x2[_0x2b73[124]][_0x2b73[117]]= this[_0x2b73[252]][_0x2b73[124]][_0x2b73[117]];_0xff22x2[_0x2b73[124]][_0x2b73[119]]= this[_0x2b73[252]][_0x2b73[124]][_0x2b73[119]];this[_0x2b73[252]][_0x2b73[124]][_0x2b73[1617]]= _0x2b73[110];this[_0x2b73[252]][_0x2b73[62]](_0xff22x2)}else {this[_0x2b73[1600]](this[_0x2b73[252]])}};function mxLabel(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){mxRectangleShape[_0x2b73[239]](this,_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5)}mxUtils[_0x2b73[1284]](mxLabel,mxRectangleShape);mxLabel[_0x2b73[202]][_0x2b73[1680]]= mxConstants[_0x2b73[1681]];mxLabel[_0x2b73[202]][_0x2b73[657]]= 2;mxLabel[_0x2b73[202]][_0x2b73[1682]]= 10;mxLabel[_0x2b73[202]][_0x2b73[635]]= 2;mxLabel[_0x2b73[202]][_0x2b73[176]]= function(_0xff22x2){mxShape[_0x2b73[202]][_0x2b73[176]][_0x2b73[183]](this,arguments);null!= this[_0x2b73[632]]&& null!= this[_0x2b73[630]]&& (this[_0x2b73[1683]]= new this[_0x2b73[630]],this[_0x2b73[1683]][_0x2b73[507]]= this[_0x2b73[507]],this[_0x2b73[1683]][_0x2b73[1562]]= this[_0x2b73[1562]],this[_0x2b73[1683]][_0x2b73[1334]]= this[_0x2b73[632]],this[_0x2b73[1683]][_0x2b73[1336]]= this[_0x2b73[632]],this[_0x2b73[1683]][_0x2b73[1299]]= this[_0x2b73[634]],this[_0x2b73[1683]][_0x2b73[663]]= this[_0x2b73[638]],this[_0x2b73[1683]][_0x2b73[176]](this[_0x2b73[252]]))};mxLabel[_0x2b73[202]][_0x2b73[258]]= function(){null!= this[_0x2b73[1683]]&& (this[_0x2b73[1683]][_0x2b73[1334]]= this[_0x2b73[632]],this[_0x2b73[1683]][_0x2b73[1336]]= this[_0x2b73[632]],this[_0x2b73[1683]][_0x2b73[1299]]= this[_0x2b73[634]],this[_0x2b73[1683]][_0x2b73[663]]= this[_0x2b73[638]]);mxShape[_0x2b73[202]][_0x2b73[258]][_0x2b73[183]](this,arguments)};mxLabel[_0x2b73[202]][_0x2b73[1567]]= function(){return mxRectangleShape[_0x2b73[202]][_0x2b73[1567]][_0x2b73[183]](this,arguments)&& null== this[_0x2b73[632]]&& null== this[_0x2b73[630]]};mxLabel[_0x2b73[202]][_0x2b73[1602]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){this[_0x2b73[1684]](_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9);this[_0x2b73[1685]](_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9);mxRectangleShape[_0x2b73[202]][_0x2b73[1602]][_0x2b73[183]](this,arguments)};mxLabel[_0x2b73[202]][_0x2b73[1684]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){null!= this[_0x2b73[618]]&& (_0xff22x3= this[_0x2b73[1686]](_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9),_0xff22x2[_0x2b73[618]](_0xff22x3[_0x2b73[235]],_0xff22x3[_0x2b73[236]],_0xff22x3[_0x2b73[117]],_0xff22x3[_0x2b73[119]],this[_0x2b73[618]],!1,!1,!1))};mxLabel[_0x2b73[202]][_0x2b73[1686]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){var _0xff22x9=mxUtils[_0x2b73[433]](this[_0x2b73[124]],mxConstants.STYLE_IMAGE_ALIGN,mxConstants.ALIGN_LEFT),_0xff22xa=mxUtils[_0x2b73[433]](this[_0x2b73[124]],mxConstants.STYLE_IMAGE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),_0xff22x12=mxUtils[_0x2b73[1550]](this[_0x2b73[124]],mxConstants.STYLE_IMAGE_WIDTH,mxConstants.DEFAULT_IMAGESIZE),_0xff22x13=mxUtils[_0x2b73[1550]](this[_0x2b73[124]],mxConstants.STYLE_IMAGE_HEIGHT,mxConstants.DEFAULT_IMAGESIZE),_0xff22x14=mxUtils[_0x2b73[1550]](this[_0x2b73[124]],mxConstants.STYLE_SPACING,this[_0x2b73[657]])+ 5;_0xff22x2= _0xff22x9== mxConstants[_0x2b73[479]]?_0xff22x2+ (_0xff22x4- _0xff22x12)/ 2:_0xff22x9== mxConstants[_0x2b73[480]]?_0xff22x2+ (_0xff22x4- _0xff22x12- _0xff22x14):_0xff22x2+ _0xff22x14;_0xff22x3= _0xff22xa== mxConstants[_0x2b73[1687]]?_0xff22x3+ _0xff22x14:_0xff22xa== mxConstants[_0x2b73[482]]?_0xff22x3+ (_0xff22x5- _0xff22x13- _0xff22x14):_0xff22x3+ (_0xff22x5- _0xff22x13)/ 2;return new mxRectangle(_0xff22x2,_0xff22x3,_0xff22x12,_0xff22x13)};mxLabel[_0x2b73[202]][_0x2b73[1685]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){null!= this[_0x2b73[1683]]?(this[_0x2b73[1683]][_0x2b73[1562]]= this[_0x2b73[1688]](_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9),this[_0x2b73[1683]][_0x2b73[1209]](_0xff22x2)):null!= this[_0x2b73[631]]&& (_0xff22x3= this[_0x2b73[1688]](_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9),_0xff22x2[_0x2b73[618]](_0xff22x3[_0x2b73[235]],_0xff22x3[_0x2b73[236]],_0xff22x3[_0x2b73[117]],_0xff22x3[_0x2b73[119]],this[_0x2b73[631]],!1,!1,!1))};mxLabel[_0x2b73[202]][_0x2b73[1688]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){var _0xff22x9=mxUtils[_0x2b73[433]](this[_0x2b73[124]],mxConstants.STYLE_IMAGE_ALIGN,mxConstants.ALIGN_LEFT),_0xff22xa=mxUtils[_0x2b73[433]](this[_0x2b73[124]],mxConstants.STYLE_IMAGE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),_0xff22x12=mxUtils[_0x2b73[1550]](this[_0x2b73[124]],mxConstants.STYLE_INDICATOR_WIDTH,this[_0x2b73[1682]]),_0xff22x13=mxUtils[_0x2b73[1550]](this[_0x2b73[124]],mxConstants.STYLE_INDICATOR_HEIGHT,this[_0x2b73[1682]]),_0xff22x14=this[_0x2b73[657]]+ 5;_0xff22x2= _0xff22x9== mxConstants[_0x2b73[480]]?_0xff22x2+ (_0xff22x4- _0xff22x12- _0xff22x14):_0xff22x9== mxConstants[_0x2b73[479]]?_0xff22x2+ (_0xff22x4- _0xff22x12)/ 2:_0xff22x2+ _0xff22x14;_0xff22x3= _0xff22xa== mxConstants[_0x2b73[482]]?_0xff22x3+ (_0xff22x5- _0xff22x13- _0xff22x14):_0xff22xa== mxConstants[_0x2b73[1687]]?_0xff22x3+ _0xff22x14:_0xff22x3+ (_0xff22x5- _0xff22x13)/ 2;return new mxRectangle(_0xff22x2,_0xff22x3,_0xff22x12,_0xff22x13)};mxLabel[_0x2b73[202]][_0x2b73[1575]]= function(){for(mxRectangleShape[_0x2b73[202]][_0x2b73[1575]][_0x2b73[183]](this,arguments);this[_0x2b73[252]][_0x2b73[1580]]();){this[_0x2b73[252]][_0x2b73[266]](this[_0x2b73[252]][_0x2b73[1581]])};if(null!= this[_0x2b73[618]]){var _0xff22x2=document[_0x2b73[55]](_0x2b73[466]);_0xff22x2[_0x2b73[124]][_0x2b73[491]]= _0x2b73[1500];_0xff22x2[_0x2b73[57]](_0x2b73[467],_0x2b73[468]);var _0xff22x3=this[_0x2b73[1686]](this[_0x2b73[1562]][_0x2b73[235]],this[_0x2b73[1562]][_0x2b73[236]],this[_0x2b73[1562]][_0x2b73[117]],this[_0x2b73[1562]][_0x2b73[119]]);_0xff22x3[_0x2b73[235]]-= this[_0x2b73[1562]][_0x2b73[235]];_0xff22x3[_0x2b73[236]]-= this[_0x2b73[1562]][_0x2b73[236]];_0xff22x2[_0x2b73[124]][_0x2b73[361]]= Math[_0x2b73[488]](_0xff22x3[_0x2b73[235]])+ _0x2b73[168];_0xff22x2[_0x2b73[124]][_0x2b73[125]]= Math[_0x2b73[488]](_0xff22x3[_0x2b73[236]])+ _0x2b73[168];_0xff22x2[_0x2b73[124]][_0x2b73[117]]= Math[_0x2b73[488]](_0xff22x3[_0x2b73[117]])+ _0x2b73[168];_0xff22x2[_0x2b73[124]][_0x2b73[119]]= Math[_0x2b73[488]](_0xff22x3[_0x2b73[119]])+ _0x2b73[168];_0xff22x2[_0x2b73[390]]= this[_0x2b73[618]];this[_0x2b73[252]][_0x2b73[62]](_0xff22x2)}};function mxCylinder(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){mxShape[_0x2b73[239]](this);this[_0x2b73[1562]]= _0xff22x2;this[_0x2b73[1334]]= _0xff22x3;this[_0x2b73[1336]]= _0xff22x4;this[_0x2b73[1307]]= null!= _0xff22x5?_0xff22x5:1}mxUtils[_0x2b73[1284]](mxCylinder,mxShape);mxCylinder[_0x2b73[202]][_0x2b73[1503]]= 40;mxCylinder[_0x2b73[202]][_0x2b73[1564]]= 0;mxCylinder[_0x2b73[202]][_0x2b73[1595]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){_0xff22x2[_0x2b73[513]](_0xff22x3,_0xff22x4);_0xff22x2[_0x2b73[1275]]();this[_0x2b73[1625]](_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,!1);_0xff22x2[_0x2b73[1337]]();_0xff22x2[_0x2b73[1267]](!1);_0xff22x2[_0x2b73[1275]]();this[_0x2b73[1625]](_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,!0);_0xff22x2[_0x2b73[1336]]()};mxCylinder[_0x2b73[202]][_0x2b73[1625]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa){_0xff22x3= Math[_0x2b73[243]](this[_0x2b73[1503]],Math[_0x2b73[488]](_0xff22x9/ 5));if(_0xff22xa&& null!= this[_0x2b73[1334]]|| !_0xff22xa&& null== this[_0x2b73[1334]]){_0xff22x2[_0x2b73[1276]](0,_0xff22x3),_0xff22x2[_0x2b73[1279]](0,2* _0xff22x3,_0xff22x5,2* _0xff22x3,_0xff22x5,_0xff22x3),_0xff22xa|| (_0xff22x2[_0x2b73[1336]](),_0xff22x2[_0x2b73[1275]]())};_0xff22xa|| (_0xff22x2[_0x2b73[1276]](0,_0xff22x3),_0xff22x2[_0x2b73[1279]](0,-_0xff22x3/ 3,_0xff22x5,-_0xff22x3/ 3,_0xff22x5,_0xff22x3),_0xff22x2[_0x2b73[1277]](_0xff22x5,_0xff22x9- _0xff22x3),_0xff22x2[_0x2b73[1279]](_0xff22x5,_0xff22x9+ _0xff22x3/ 3,0,_0xff22x9+ _0xff22x3/ 3,0,_0xff22x9- _0xff22x3),_0xff22x2[_0x2b73[268]]())};function mxConnector(_0xff22x2,_0xff22x3,_0xff22x4){mxPolyline[_0x2b73[239]](this,_0xff22x2,_0xff22x3,_0xff22x4)}mxUtils[_0x2b73[1284]](mxConnector,mxPolyline);mxConnector[_0x2b73[202]][_0x2b73[1594]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=this[_0x2b73[1689]](_0xff22x2,_0xff22x3,!0),_0xff22x5=this[_0x2b73[1689]](_0xff22x2,_0xff22x3,!1);null== this[_0x2b73[124]]|| 1!= this[_0x2b73[124]][mxConstants[_0x2b73[1690]]]?this[_0x2b73[1639]](_0xff22x2,_0xff22x3,this[_0x2b73[1606]]):this[_0x2b73[1691]](_0xff22x2,_0xff22x3);_0xff22x2[_0x2b73[1245]](this[_0x2b73[1336]]);_0xff22x2[_0x2b73[1267]](!1);_0xff22x2[_0x2b73[1251]](!1);null!= _0xff22x4&& _0xff22x4();null!= _0xff22x5&& _0xff22x5()};mxConnector[_0x2b73[202]][_0x2b73[1691]]= function(_0xff22x2,_0xff22x3){_0xff22x2[_0x2b73[1275]]();var _0xff22x4=_0xff22x3[0],_0xff22x5=_0xff22x3[_0x2b73[67]];_0xff22x2[_0x2b73[1276]](_0xff22x4[_0x2b73[235]],_0xff22x4[_0x2b73[236]]);for(_0xff22x4= 1;_0xff22x4< _0xff22x5- 2;_0xff22x4++){var _0xff22x9=_0xff22x3[_0xff22x4],_0xff22xa=_0xff22x3[_0xff22x4+ 1];_0xff22x2[_0x2b73[1278]](_0xff22x9[_0x2b73[235]],_0xff22x9[_0x2b73[236]],(_0xff22x9[_0x2b73[235]]+ _0xff22xa[_0x2b73[235]])/ 2,(_0xff22x9[_0x2b73[236]]+ _0xff22xa[_0x2b73[236]])/ 2)};_0xff22x9= _0xff22x3[_0xff22x5- 2];_0xff22xa= _0xff22x3[_0xff22x5- 1];_0xff22x2[_0x2b73[1278]](_0xff22x9[_0x2b73[235]],_0xff22x9[_0x2b73[236]],_0xff22xa[_0x2b73[235]],_0xff22xa[_0x2b73[236]]);_0xff22x2[_0x2b73[1336]]()};mxConnector[_0x2b73[202]][_0x2b73[1689]]= function(_0xff22x2,_0xff22x3,_0xff22x4){var _0xff22x5=_0xff22x3[_0x2b73[67]],_0xff22x9=_0xff22x4?_0xff22x3[1]:_0xff22x3[_0xff22x5- 2];_0xff22x3= _0xff22x4?_0xff22x3[0]:_0xff22x3[_0xff22x5- 1];var _0xff22x5=_0xff22x3[_0x2b73[235]]- _0xff22x9[_0x2b73[235]],_0xff22xa=_0xff22x3[_0x2b73[236]]- _0xff22x9[_0x2b73[236]],_0xff22x12=Math[_0x2b73[160]](1,Math[_0x2b73[428]](_0xff22x5* _0xff22x5+ _0xff22xa* _0xff22xa)),_0xff22x9=_0xff22x5/ _0xff22x12,_0xff22x5=_0xff22xa/ _0xff22x12,_0xff22xa=mxUtils[_0x2b73[1550]](this[_0x2b73[124]],_0xff22x4?mxConstants[_0x2b73[1692]]:mxConstants[_0x2b73[1693]],mxConstants.DEFAULT_MARKERSIZE),_0xff22x12=mxUtils[_0x2b73[433]](this[_0x2b73[124]],_0xff22x4?mxConstants[_0x2b73[1694]]:mxConstants[_0x2b73[1695]]);return mxMarker[_0x2b73[1689]](_0xff22x2,this,_0xff22x12,_0xff22x3,_0xff22x9,_0xff22x5,_0xff22xa,_0xff22x4,this[_0x2b73[1307]],0!= this[_0x2b73[124]][_0xff22x4?mxConstants[_0x2b73[1696]]:mxConstants[_0x2b73[1697]]])};mxConnector[_0x2b73[202]][_0x2b73[1612]]= function(_0xff22x2){mxShape[_0x2b73[202]][_0x2b73[1612]][_0x2b73[183]](this,arguments);var _0xff22x3=0;mxUtils[_0x2b73[433]](this[_0x2b73[124]],mxConstants.STYLE_STARTARROW,mxConstants.NONE)!= mxConstants[_0x2b73[217]]&& (_0xff22x3= mxUtils[_0x2b73[1550]](this[_0x2b73[124]],mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_MARKERSIZE)+ 1);mxUtils[_0x2b73[433]](this[_0x2b73[124]],mxConstants.STYLE_ENDARROW,mxConstants.NONE)!= mxConstants[_0x2b73[217]]&& (_0xff22x3= Math[_0x2b73[160]](_0xff22x3,mxUtils[_0x2b73[1550]](this[_0x2b73[124]],mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE))+ 1);_0xff22x2[_0x2b73[244]](Math[_0x2b73[430]](_0xff22x3* this[_0x2b73[255]]))};function mxSwimlane(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){mxShape[_0x2b73[239]](this);this[_0x2b73[1562]]= _0xff22x2;this[_0x2b73[1334]]= _0xff22x3;this[_0x2b73[1336]]= _0xff22x4;this[_0x2b73[1307]]= null!= _0xff22x5?_0xff22x5:1}mxUtils[_0x2b73[1284]](mxSwimlane,mxShape);mxSwimlane[_0x2b73[202]][_0x2b73[1680]]= 16;mxSwimlane[_0x2b73[202]][_0x2b73[1597]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){_0xff22x2= Math[_0x2b73[243]](_0xff22x9,mxUtils[_0x2b73[433]](this[_0x2b73[124]],mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));return new mxRectangle(_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x2)};mxSwimlane[_0x2b73[202]][_0x2b73[1614]]= function(){var _0xff22x2=mxShape[_0x2b73[202]][_0x2b73[1614]][_0x2b73[183]](this,arguments);1!= mxUtils[_0x2b73[433]](this[_0x2b73[124]],mxConstants.STYLE_HORIZONTAL,1)&& (_0xff22x2+= mxText[_0x2b73[202]][_0x2b73[1616]]);return _0xff22x2};mxSwimlane[_0x2b73[202]][_0x2b73[1615]]= function(){return this[_0x2b73[1614]]()};mxSwimlane[_0x2b73[202]][_0x2b73[1590]]= function(){return mxShape[_0x2b73[202]][_0x2b73[1590]][_0x2b73[183]](this,arguments)|| 1!= mxUtils[_0x2b73[433]](this[_0x2b73[124]],mxConstants.STYLE_HORIZONTAL,1)};mxSwimlane[_0x2b73[202]][_0x2b73[1603]]= function(_0xff22x2,_0xff22x3,_0xff22x4){_0xff22x2= mxUtils[_0x2b73[433]](this[_0x2b73[124]],mxConstants.STYLE_ARCSIZE,100* mxConstants[_0x2b73[1557]])/ 100;return 3* _0xff22x4* _0xff22x2};mxSwimlane[_0x2b73[202]][_0x2b73[1595]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){var _0xff22xa=Math[_0x2b73[243]](_0xff22x9,mxUtils[_0x2b73[433]](this[_0x2b73[124]],mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)),_0xff22x12=mxUtils[_0x2b73[433]](this[_0x2b73[124]],mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE),_0xff22x13=1== mxUtils[_0x2b73[433]](this[_0x2b73[124]],mxConstants.STYLE_SWIMLANE_LINE,1),_0xff22x14=0;_0xff22x2[_0x2b73[513]](_0xff22x3,_0xff22x4);this[_0x2b73[1606]]?(_0xff22x14= this[_0x2b73[1603]](_0xff22x5,_0xff22x9,_0xff22xa),this[_0x2b73[1698]](_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa,_0xff22x14,_0xff22x12,_0xff22x13)):this[_0x2b73[1699]](_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa,_0xff22x12,_0xff22x13);_0xff22x12= mxUtils[_0x2b73[433]](this[_0x2b73[124]],mxConstants.STYLE_SEPARATORCOLOR,mxConstants.NONE);this[_0x2b73[1700]](_0xff22x2,_0xff22x5,_0xff22xa,_0xff22x9,_0xff22x12);null!= this[_0x2b73[618]]&& (_0xff22x9= this[_0x2b73[1686]](_0xff22x3,_0xff22xa,_0xff22x5,_0xff22x9),_0xff22x2[_0x2b73[618]](_0xff22x9[_0x2b73[235]]- _0xff22x3,_0xff22x9[_0x2b73[236]]- _0xff22x4,_0xff22x9[_0x2b73[117]],_0xff22x9[_0x2b73[119]],this[_0x2b73[618]],!1,!1,!1));this[_0x2b73[617]]&& (_0xff22x2[_0x2b73[1267]](!1),this[_0x2b73[1604]](_0xff22x2,0,0,_0xff22x5,_0xff22xa,_0xff22x14))};mxSwimlane[_0x2b73[202]][_0x2b73[1699]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa,_0xff22x12,_0xff22x13){_0xff22x12!= mxConstants[_0x2b73[217]]&& (_0xff22x2[_0x2b73[815]](),_0xff22x2[_0x2b73[1245]](_0xff22x12),_0xff22x2[_0x2b73[1319]](0,0,_0xff22x5,_0xff22x9),_0xff22x2[_0x2b73[1337]](),_0xff22x2[_0x2b73[1210]](),_0xff22x2[_0x2b73[1267]](!1));_0xff22x2[_0x2b73[1275]]();_0xff22x2[_0x2b73[1276]](0,_0xff22xa);_0xff22x2[_0x2b73[1277]](0,0);_0xff22x2[_0x2b73[1277]](_0xff22x5,0);_0xff22x2[_0x2b73[1277]](_0xff22x5,_0xff22xa);_0xff22x13&& _0xff22x2[_0x2b73[268]]();_0xff22x2[_0x2b73[1337]]();_0xff22xa< _0xff22x9&& _0xff22x12== mxConstants[_0x2b73[217]]&& (_0xff22x2[_0x2b73[1229]]= !1,_0xff22x2[_0x2b73[1275]](),_0xff22x2[_0x2b73[1276]](0,_0xff22xa),_0xff22x2[_0x2b73[1277]](0,_0xff22x9),_0xff22x2[_0x2b73[1277]](_0xff22x5,_0xff22x9),_0xff22x2[_0x2b73[1277]](_0xff22x5,_0xff22xa),_0xff22x2[_0x2b73[1336]]())};mxSwimlane[_0x2b73[202]][_0x2b73[1698]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa,_0xff22x12,_0xff22x13,_0xff22x14){_0xff22x13!= mxConstants[_0x2b73[217]]&& (_0xff22x2[_0x2b73[815]](),_0xff22x2[_0x2b73[1245]](_0xff22x13),_0xff22x2[_0x2b73[1320]](0,0,_0xff22x5,_0xff22x9,_0xff22x12,_0xff22x12),_0xff22x2[_0x2b73[1337]](),_0xff22x2[_0x2b73[1210]](),_0xff22x2[_0x2b73[1267]](!1));_0xff22x2[_0x2b73[1275]]();_0xff22x2[_0x2b73[1276]](_0xff22x5,_0xff22xa);_0xff22x2[_0x2b73[1277]](_0xff22x5,_0xff22x12);_0xff22x2[_0x2b73[1278]](_0xff22x5,0,_0xff22x5- Math[_0x2b73[243]](_0xff22x5/ 2,_0xff22x12),0);_0xff22x2[_0x2b73[1277]](Math[_0x2b73[243]](_0xff22x5/ 2,_0xff22x12),0);_0xff22x2[_0x2b73[1278]](0,0,0,_0xff22x12);_0xff22x2[_0x2b73[1277]](0,_0xff22xa);_0xff22x14&& _0xff22x2[_0x2b73[268]]();_0xff22x2[_0x2b73[1337]]();_0xff22xa< _0xff22x9&& _0xff22x13== mxConstants[_0x2b73[217]]&& (_0xff22x2[_0x2b73[1229]]= !1,_0xff22x2[_0x2b73[1275]](),_0xff22x2[_0x2b73[1276]](0,_0xff22xa),_0xff22x2[_0x2b73[1277]](0,_0xff22x9- _0xff22x12),_0xff22x2[_0x2b73[1278]](0,_0xff22x9,Math[_0x2b73[243]](_0xff22x5/ 2,_0xff22x12),_0xff22x9),_0xff22x2[_0x2b73[1277]](_0xff22x5- Math[_0x2b73[243]](_0xff22x5/ 2,_0xff22x12),_0xff22x9),_0xff22x2[_0x2b73[1278]](_0xff22x5,_0xff22x9,_0xff22x5,_0xff22x9- _0xff22x12),_0xff22x2[_0x2b73[1277]](_0xff22x5,_0xff22xa),_0xff22x2[_0x2b73[1336]]())};mxSwimlane[_0x2b73[202]][_0x2b73[1700]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){_0xff22x9!= mxConstants[_0x2b73[217]]&& (_0xff22x2[_0x2b73[1249]](_0xff22x9),_0xff22x2[_0x2b73[1251]](!0),_0xff22x2[_0x2b73[1275]](),_0xff22x2[_0x2b73[1276]](_0xff22x3,_0xff22x4),_0xff22x2[_0x2b73[1277]](_0xff22x3,_0xff22x5),_0xff22x2[_0x2b73[1336]](),_0xff22x2[_0x2b73[1251]](!1))};mxSwimlane[_0x2b73[202]][_0x2b73[1686]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){return new mxRectangle(_0xff22x2+ _0xff22x4- this[_0x2b73[1680]],_0xff22x3,this[_0x2b73[1680]],this[_0x2b73[1680]])};function mxGraphLayout(_0xff22x2){this[_0x2b73[1179]]= _0xff22x2}mxGraphLayout[_0x2b73[202]][_0x2b73[1179]]= null;mxGraphLayout[_0x2b73[202]][_0x2b73[1701]]= !0;mxGraphLayout[_0x2b73[202]][_0x2b73[1101]]= null;mxGraphLayout[_0x2b73[202]][_0x2b73[1702]]= function(_0xff22x2,_0xff22x3,_0xff22x4){};mxGraphLayout[_0x2b73[202]][_0x2b73[350]]= function(_0xff22x2){};mxGraphLayout[_0x2b73[202]][_0x2b73[1703]]= function(){return this[_0x2b73[1179]]};mxGraphLayout[_0x2b73[202]][_0x2b73[1704]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){_0xff22x4= this[_0x2b73[1179]][_0x2b73[441]][_0x2b73[248]](_0xff22x3);_0xff22x3= null!= _0xff22x4?_0xff22x4[_0x2b73[124]]:this[_0x2b73[1179]][_0x2b73[1705]](_0xff22x3);return null!= _0xff22x3?_0xff22x3[_0xff22x2]:null};mxGraphLayout[_0x2b73[1706]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){if(null!= _0xff22x4&& null!= _0xff22x2){_0xff22x3= null!= _0xff22x3?_0xff22x3:!0;_0xff22x9= _0xff22x9|| [];var _0xff22xa=mxCellPath[_0x2b73[385]](_0xff22x2);if(null== _0xff22x9[_0xff22xa]&& (_0xff22x9[_0xff22xa]= _0xff22x2,_0xff22x5= _0xff22x4(_0xff22x2,_0xff22x5),null== _0xff22x5|| _0xff22x5)){if(_0xff22x5= this[_0x2b73[1179]][_0x2b73[251]][_0x2b73[1707]](_0xff22x2),0< _0xff22x5){for(_0xff22xa= 0;_0xff22xa< _0xff22x5;_0xff22xa++){var _0xff22x12=this[_0x2b73[1179]][_0x2b73[251]][_0x2b73[1708]](_0xff22x2,_0xff22xa),_0xff22x13=this[_0x2b73[1179]][_0x2b73[251]][_0x2b73[1709]](_0xff22x12,!0)== _0xff22x2;if(!_0xff22x3|| _0xff22x13){_0xff22x13= this[_0x2b73[1179]][_0x2b73[441]][_0x2b73[1710]](_0xff22x12,!_0xff22x13),this[_0x2b73[1706]](_0xff22x13,_0xff22x3,_0xff22x4,_0xff22x12,_0xff22x9)}}}}}};mxGraphLayout[_0x2b73[202]][_0x2b73[1711]]= function(_0xff22x2){return this[_0x2b73[1179]][_0x2b73[1712]](_0xff22x2)};mxGraphLayout[_0x2b73[202]][_0x2b73[1713]]= function(_0xff22x2){return !this[_0x2b73[1179]][_0x2b73[502]]()[_0x2b73[1193]](_0xff22x2)|| !this[_0x2b73[1179]][_0x2b73[1714]](_0xff22x2)};mxGraphLayout[_0x2b73[202]][_0x2b73[1715]]= function(_0xff22x2){var _0xff22x3=this[_0x2b73[1179]][_0x2b73[502]]();return !_0xff22x3[_0x2b73[250]](_0xff22x2)|| !this[_0x2b73[1179]][_0x2b73[1714]](_0xff22x2)|| null== _0xff22x3[_0x2b73[1709]](_0xff22x2,!0)|| null== _0xff22x3[_0x2b73[1709]](_0xff22x2,!1)};mxGraphLayout[_0x2b73[202]][_0x2b73[1716]]= function(_0xff22x2,_0xff22x3){this[_0x2b73[1179]][_0x2b73[1717]](mxConstants.STYLE_NOEDGESTYLE,_0xff22x3?_0x2b73[468]:_0x2b73[500],[_0xff22x2])};mxGraphLayout[_0x2b73[202]][_0x2b73[1718]]= function(_0xff22x2,_0xff22x3){this[_0x2b73[1179]][_0x2b73[1717]](mxConstants.STYLE_ORTHOGONAL,_0xff22x3?_0x2b73[500]:_0x2b73[468],[_0xff22x2])};mxGraphLayout[_0x2b73[202]][_0x2b73[1719]]= function(_0xff22x2){var _0xff22x3= new mxPoint;if(null!= _0xff22x2&& _0xff22x2!= this[_0x2b73[1101]]){var _0xff22x4=this[_0x2b73[1179]][_0x2b73[502]]();if(_0xff22x4[_0x2b73[1720]](this[_0x2b73[1101]],_0xff22x2)){for(var _0xff22x5=_0xff22x4[_0x2b73[1721]](_0xff22x2);_0xff22x2!= this[_0x2b73[1101]];){_0xff22x3[_0x2b73[235]]+= _0xff22x5[_0x2b73[235]],_0xff22x3[_0x2b73[236]]+= _0xff22x5[_0x2b73[236]],_0xff22x2= _0xff22x4[_0x2b73[1197]](_0xff22x2),_0xff22x5= _0xff22x4[_0x2b73[1721]](_0xff22x2)}}};return _0xff22x3};mxGraphLayout[_0x2b73[202]][_0x2b73[1722]]= function(_0xff22x2,_0xff22x3){if(null!= _0xff22x2){var _0xff22x4=this[_0x2b73[1179]][_0x2b73[251]],_0xff22x5=_0xff22x4[_0x2b73[1721]](_0xff22x2);null== _0xff22x5?(_0xff22x5= new mxGeometry,_0xff22x5[_0x2b73[1723]](!0)):_0xff22x5= _0xff22x5[_0x2b73[238]]();if(null!= this[_0x2b73[1101]]&& null!= _0xff22x3){for(var _0xff22x9=_0xff22x4[_0x2b73[1197]](_0xff22x2),_0xff22x9=this[_0x2b73[1719]](_0xff22x9),_0xff22xa=0;_0xff22xa< _0xff22x3[_0x2b73[67]];_0xff22xa++){_0xff22x3[_0xff22xa][_0x2b73[235]]-= _0xff22x9[_0x2b73[235]],_0xff22x3[_0xff22xa][_0x2b73[236]]-= _0xff22x9[_0x2b73[236]]}};_0xff22x5[_0x2b73[1525]]= _0xff22x3;_0xff22x4[_0x2b73[1724]](_0xff22x2,_0xff22x5)}};mxGraphLayout[_0x2b73[202]][_0x2b73[1725]]= function(_0xff22x2,_0xff22x3,_0xff22x4){var _0xff22x5=this[_0x2b73[1179]][_0x2b73[502]](),_0xff22x9=_0xff22x5[_0x2b73[1721]](_0xff22x2),_0xff22xa=null;if(null!= _0xff22x9){_0xff22xa= new mxRectangle(_0xff22x3,_0xff22x4,_0xff22x9[_0x2b73[117]],_0xff22x9[_0x2b73[119]]);if(this[_0x2b73[1701]]){var _0xff22x12=this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[248]](_0xff22x2);if(null!= _0xff22x12&& null!= _0xff22x12[_0x2b73[963]]&& null!= _0xff22x12[_0x2b73[963]][_0x2b73[1563]]){var _0xff22x13=this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[255]],_0xff22x14=_0xff22x12[_0x2b73[963]][_0x2b73[1563]];_0xff22x12[_0x2b73[963]][_0x2b73[1563]][_0x2b73[235]]< _0xff22x12[_0x2b73[235]]&& (_0xff22x3+= (_0xff22x12[_0x2b73[235]]- _0xff22x14[_0x2b73[235]])/ _0xff22x13,_0xff22xa[_0x2b73[117]]= _0xff22x14[_0x2b73[117]]);_0xff22x12[_0x2b73[963]][_0x2b73[1563]][_0x2b73[236]]< _0xff22x12[_0x2b73[236]]&& (_0xff22x4+= (_0xff22x12[_0x2b73[236]]- _0xff22x14[_0x2b73[236]])/ _0xff22x13,_0xff22xa[_0x2b73[119]]= _0xff22x14[_0x2b73[119]])}};null!= this[_0x2b73[1101]]&& (_0xff22x12= _0xff22x5[_0x2b73[1197]](_0xff22x2),null!= _0xff22x12&& _0xff22x12!= this[_0x2b73[1101]]&& (_0xff22x12= this[_0x2b73[1719]](_0xff22x12),_0xff22x3-= _0xff22x12[_0x2b73[235]],_0xff22x4-= _0xff22x12[_0x2b73[236]]));if(_0xff22x9[_0x2b73[235]]!= _0xff22x3|| _0xff22x9[_0x2b73[236]]!= _0xff22x4){_0xff22x9= _0xff22x9[_0x2b73[238]](),_0xff22x9[_0x2b73[235]]= _0xff22x3,_0xff22x9[_0x2b73[236]]= _0xff22x4,_0xff22x5[_0x2b73[1724]](_0xff22x2,_0xff22x9)}};return _0xff22xa};mxGraphLayout[_0x2b73[202]][_0x2b73[1726]]= function(_0xff22x2){var _0xff22x3=this[_0x2b73[1179]][_0x2b73[502]]()[_0x2b73[1721]](_0xff22x2);if(this[_0x2b73[1701]]){var _0xff22x4=this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[248]](_0xff22x2);if(null!= _0xff22x4&& null!= _0xff22x4[_0x2b73[963]]&& null!= _0xff22x4[_0x2b73[963]][_0x2b73[1563]]){var _0xff22x5=this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[255]],_0xff22x9=_0xff22x4[_0x2b73[963]][_0x2b73[1563]],_0xff22xa=Math[_0x2b73[160]](_0xff22x4[_0x2b73[235]]- _0xff22x9[_0x2b73[235]],0)/ _0xff22x5,_0xff22x12=Math[_0x2b73[160]](_0xff22x4[_0x2b73[236]]- _0xff22x9[_0x2b73[236]],0)/ _0xff22x5,_0xff22x13=Math[_0x2b73[160]](_0xff22x9[_0x2b73[235]]+ _0xff22x9[_0x2b73[117]]- (_0xff22x4[_0x2b73[235]]+ _0xff22x4[_0x2b73[117]]),0)/ _0xff22x5,_0xff22x4=Math[_0x2b73[160]](_0xff22x9[_0x2b73[236]]+ _0xff22x9[_0x2b73[119]]- (_0xff22x4[_0x2b73[236]]+ _0xff22x4[_0x2b73[119]]),0)/ _0xff22x5,_0xff22x3= new mxRectangle(_0xff22x3[_0x2b73[235]]- _0xff22xa,_0xff22x3[_0x2b73[236]]- _0xff22x12,_0xff22x3[_0x2b73[117]]+ _0xff22xa+ _0xff22x13,_0xff22x3[_0x2b73[119]]+ _0xff22x12+ _0xff22x4)}};null!= this[_0x2b73[1101]]&& (_0xff22x2= this[_0x2b73[1179]][_0x2b73[502]]()[_0x2b73[1197]](_0xff22x2),_0xff22x3= _0xff22x3[_0x2b73[238]](),null!= _0xff22x2&& _0xff22x2!= this[_0x2b73[1101]]&& (_0xff22x2= this[_0x2b73[1719]](_0xff22x2),_0xff22x3[_0x2b73[235]]+= _0xff22x2[_0x2b73[235]],_0xff22x3[_0x2b73[236]]+= _0xff22x2[_0x2b73[236]]));return new mxRectangle(_0xff22x3[_0x2b73[235]],_0xff22x3[_0x2b73[236]],_0xff22x3[_0x2b73[117]],_0xff22x3[_0x2b73[119]])};mxGraphLayout[_0x2b73[202]][_0x2b73[1727]]= function(_0xff22x2,_0xff22x3){this[_0x2b73[1179]][_0x2b73[502]]()[_0x2b73[473]]();try{for(var _0xff22x4=_0xff22x2[_0x2b73[67]]- 1;0<= _0xff22x4;_0xff22x4--){var _0xff22x5=_0xff22x2[_0xff22x4],_0xff22x9=this[_0x2b73[1179]][_0x2b73[1728]](_0xff22x5),_0xff22xa=this[_0x2b73[1179]][_0x2b73[1729]](_0xff22x9),_0xff22x12=this[_0x2b73[1179]][_0x2b73[1198]](_0xff22x5),_0xff22x13=0,_0xff22x14=0;if(this[_0x2b73[1179]][_0x2b73[1730]](_0xff22x5)){var _0xff22x15=this[_0x2b73[1179]][_0x2b73[1731]](_0xff22x5),_0xff22x13=_0xff22x15[_0x2b73[117]],_0xff22x14=_0xff22x15[_0x2b73[119]]};null!= _0xff22xa&& null!= _0xff22x12&& (_0xff22x12= _0xff22x12[_0x2b73[238]](),_0xff22x12[_0x2b73[235]]= _0xff22x12[_0x2b73[235]]+ _0xff22xa[_0x2b73[235]]- _0xff22x3- _0xff22x13,_0xff22x12[_0x2b73[236]]= _0xff22x12[_0x2b73[236]]+ _0xff22xa[_0x2b73[236]]- _0xff22x3- _0xff22x14,_0xff22x12[_0x2b73[117]]= _0xff22xa[_0x2b73[117]]+ 2* _0xff22x3+ _0xff22x13,_0xff22x12[_0x2b73[119]]= _0xff22xa[_0x2b73[119]]+ 2* _0xff22x3+ _0xff22x14,this[_0x2b73[1179]][_0x2b73[502]]()[_0x2b73[1724]](_0xff22x5,_0xff22x12),this[_0x2b73[1179]][_0x2b73[834]](_0xff22x9,_0xff22x3+ _0xff22x13- _0xff22xa[_0x2b73[235]],_0xff22x3+ _0xff22x14- _0xff22xa[_0x2b73[236]]))}}finally{this[_0x2b73[1179]][_0x2b73[502]]()[_0x2b73[476]]()}};function mxStackLayout(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa){mxGraphLayout[_0x2b73[239]](this,_0xff22x2);this[_0x2b73[662]]= null!= _0xff22x3?_0xff22x3:!0;this[_0x2b73[657]]= null!= _0xff22x4?_0xff22x4:0;this[_0x2b73[1732]]= null!= _0xff22x5?_0xff22x5:0;this[_0x2b73[1733]]= null!= _0xff22x9?_0xff22x9:0;this[_0x2b73[467]]= null!= _0xff22xa?_0xff22xa:0}mxStackLayout[_0x2b73[202]]= new mxGraphLayout;mxStackLayout[_0x2b73[202]][_0x2b73[196]]= mxStackLayout;mxStackLayout[_0x2b73[202]][_0x2b73[662]]= null;mxStackLayout[_0x2b73[202]][_0x2b73[657]]= null;mxStackLayout[_0x2b73[202]][_0x2b73[1732]]= null;mxStackLayout[_0x2b73[202]][_0x2b73[1733]]= null;mxStackLayout[_0x2b73[202]][_0x2b73[467]]= 0;mxStackLayout[_0x2b73[202]][_0x2b73[1734]]= !1;mxStackLayout[_0x2b73[202]][_0x2b73[1334]]= !1;mxStackLayout[_0x2b73[202]][_0x2b73[1735]]= !1;mxStackLayout[_0x2b73[202]][_0x2b73[1736]]= !1;mxStackLayout[_0x2b73[202]][_0x2b73[1333]]= null;mxStackLayout[_0x2b73[202]][_0x2b73[1737]]= function(){return this[_0x2b73[662]]};mxStackLayout[_0x2b73[202]][_0x2b73[1702]]= function(_0xff22x2,_0xff22x3,_0xff22x4){var _0xff22x5=this[_0x2b73[1179]][_0x2b73[502]](),_0xff22x9=_0xff22x5[_0x2b73[1197]](_0xff22x2),_0xff22xa=this[_0x2b73[1737]]();if(null!= _0xff22x2&& null!= _0xff22x9){var _0xff22x12=0,_0xff22x13=0,_0xff22x14=_0xff22x5[_0x2b73[262]](_0xff22x9);_0xff22x3= _0xff22xa?_0xff22x3:_0xff22x4;_0xff22x12= this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[248]](_0xff22x9);null!= _0xff22x12&& (_0xff22x3-= _0xff22xa?_0xff22x12[_0x2b73[235]]:_0xff22x12[_0x2b73[236]]);for(_0xff22x12= 0;_0xff22x12< _0xff22x14;_0xff22x12++){if(_0xff22x4= _0xff22x5[_0x2b73[263]](_0xff22x9,_0xff22x12),_0xff22x4!= _0xff22x2&& (_0xff22x4= _0xff22x5[_0x2b73[1721]](_0xff22x4),null!= _0xff22x4)){_0xff22x4= _0xff22xa?_0xff22x4[_0x2b73[235]]+ _0xff22x4[_0x2b73[117]]/ 2:_0xff22x4[_0x2b73[236]]+ _0xff22x4[_0x2b73[119]]/ 2;if(_0xff22x13< _0xff22x3&& _0xff22x4> _0xff22x3){break};_0xff22x13= _0xff22x4}};_0xff22xa= _0xff22x9[_0x2b73[1738]](_0xff22x2);_0xff22xa= Math[_0x2b73[160]](0,_0xff22x12- (_0xff22x12> _0xff22xa?1:0));_0xff22x5[_0x2b73[99]](_0xff22x9,_0xff22x2,_0xff22xa)}};mxStackLayout[_0x2b73[202]][_0x2b73[1739]]= function(_0xff22x2){var _0xff22x3=this[_0x2b73[1179]][_0x2b73[502]](),_0xff22x4=_0xff22x3[_0x2b73[1721]](_0xff22x2);if(null!= this[_0x2b73[1179]][_0x2b73[526]]&& (null== _0xff22x4&& _0xff22x3[_0x2b73[1740]](_0xff22x2)|| _0xff22x2== this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[1741]])){_0xff22x4= new mxRectangle(0,0,this[_0x2b73[1179]][_0x2b73[526]][_0x2b73[359]]- 1,this[_0x2b73[1179]][_0x2b73[526]][_0x2b73[167]]- 1)};return _0xff22x4};mxStackLayout[_0x2b73[202]][_0x2b73[350]]= function(_0xff22x2){if(null!= _0xff22x2){var _0xff22x3=this[_0x2b73[1737]](),_0xff22x4=this[_0x2b73[1179]][_0x2b73[502]](),_0xff22x5=this[_0x2b73[1739]](_0xff22x2),_0xff22x9=0;null!= _0xff22x5&& (_0xff22x9= _0xff22x3?_0xff22x5[_0x2b73[119]]:_0xff22x5[_0x2b73[117]]);var _0xff22x9=_0xff22x9- (2* this[_0x2b73[657]]+ 2* this[_0x2b73[467]]),_0xff22xa=this[_0x2b73[1732]]+ this[_0x2b73[467]],_0xff22x12=this[_0x2b73[1733]]+ this[_0x2b73[467]];if(this[_0x2b73[1179]][_0x2b73[1730]](_0xff22x2)){var _0xff22x13=this[_0x2b73[1179]][_0x2b73[1705]](_0xff22x2),_0xff22x14=mxUtils[_0x2b73[433]](_0xff22x13,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE),_0xff22x13=mxUtils[_0x2b73[433]](_0xff22x13,mxConstants.STYLE_HORIZONTAL,!0);_0xff22x3== _0xff22x13&& (_0xff22x9-= _0xff22x14);_0xff22x3?_0xff22x12+= _0xff22x14:_0xff22xa+= _0xff22x14};_0xff22x4[_0x2b73[473]]();try{for(var _0xff22x14=0,_0xff22x13=null,_0xff22x15=_0xff22x4[_0x2b73[262]](_0xff22x2),_0xff22x16=0;_0xff22x16< _0xff22x15;_0xff22x16++){var _0xff22x17=_0xff22x4[_0x2b73[263]](_0xff22x2,_0xff22x16);if(!this[_0x2b73[1713]](_0xff22x17)&& this[_0x2b73[1711]](_0xff22x17)){var _0xff22x18=_0xff22x4[_0x2b73[1721]](_0xff22x17);if(null!= _0xff22x18){_0xff22x18= _0xff22x18[_0x2b73[238]]();if(null!= this[_0x2b73[1333]]&& null!= _0xff22x13&& (_0xff22x3&& _0xff22x13[_0x2b73[235]]+ _0xff22x13[_0x2b73[117]]+ _0xff22x18[_0x2b73[117]]+ 2* this[_0x2b73[657]]> this[_0x2b73[1333]]|| !_0xff22x3&& _0xff22x13[_0x2b73[236]]+ _0xff22x13[_0x2b73[119]]+ _0xff22x18[_0x2b73[119]]+ 2* this[_0x2b73[657]]> this[_0x2b73[1333]])){_0xff22x13= null,_0xff22x3?_0xff22x12+= _0xff22x14+ this[_0x2b73[657]]:_0xff22xa+= _0xff22x14+ this[_0x2b73[657]],_0xff22x14= 0};_0xff22x14= Math[_0x2b73[160]](_0xff22x14,_0xff22x3?_0xff22x18[_0x2b73[119]]:_0xff22x18[_0x2b73[117]]);null!= _0xff22x13?_0xff22x3?_0xff22x18[_0x2b73[235]]= _0xff22x13[_0x2b73[235]]+ _0xff22x13[_0x2b73[117]]+ this[_0x2b73[657]]:_0xff22x18[_0x2b73[236]]= _0xff22x13[_0x2b73[236]]+ _0xff22x13[_0x2b73[119]]+ this[_0x2b73[657]]:this[_0x2b73[1734]]|| (_0xff22x3?_0xff22x18[_0x2b73[235]]= _0xff22xa:_0xff22x18[_0x2b73[236]]= _0xff22x12);_0xff22x3?_0xff22x18[_0x2b73[236]]= _0xff22x12:_0xff22x18[_0x2b73[235]]= _0xff22xa;this[_0x2b73[1334]]&& 0< _0xff22x9&& (_0xff22x3?_0xff22x18[_0x2b73[119]]= _0xff22x9:_0xff22x18[_0x2b73[117]]= _0xff22x9);_0xff22x4[_0x2b73[1724]](_0xff22x17,_0xff22x18);_0xff22x13= _0xff22x18}}};this[_0x2b73[1735]]&& null!= _0xff22x5&& null!= _0xff22x13&& !this[_0x2b73[1179]][_0x2b73[1742]](_0xff22x2)?(_0xff22x5= _0xff22x5[_0x2b73[238]](),_0xff22x3?_0xff22x5[_0x2b73[117]]= _0xff22x13[_0x2b73[235]]+ _0xff22x13[_0x2b73[117]]+ this[_0x2b73[657]]:_0xff22x5[_0x2b73[119]]= _0xff22x13[_0x2b73[236]]+ _0xff22x13[_0x2b73[119]]+ this[_0x2b73[657]],_0xff22x4[_0x2b73[1724]](_0xff22x2,_0xff22x5)):this[_0x2b73[1736]]&& (null!= _0xff22x5&& null!= _0xff22x13)&& (_0xff22x3?_0xff22x13[_0x2b73[117]]= _0xff22x5[_0x2b73[117]]- _0xff22x13[_0x2b73[235]]- this[_0x2b73[657]]:_0xff22x13[_0x2b73[119]]= _0xff22x5[_0x2b73[119]]- _0xff22x13[_0x2b73[236]]- this[_0x2b73[657]])}finally{_0xff22x4[_0x2b73[476]]()}}};function mxPartitionLayout(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){mxGraphLayout[_0x2b73[239]](this,_0xff22x2);this[_0x2b73[662]]= null!= _0xff22x3?_0xff22x3:!0;this[_0x2b73[657]]= _0xff22x4|| 0;this[_0x2b73[467]]= _0xff22x5|| 0}mxPartitionLayout[_0x2b73[202]]= new mxGraphLayout;mxPartitionLayout[_0x2b73[202]][_0x2b73[196]]= mxPartitionLayout;mxPartitionLayout[_0x2b73[202]][_0x2b73[662]]= null;mxPartitionLayout[_0x2b73[202]][_0x2b73[657]]= null;mxPartitionLayout[_0x2b73[202]][_0x2b73[467]]= null;mxPartitionLayout[_0x2b73[202]][_0x2b73[1743]]= !0;mxPartitionLayout[_0x2b73[202]][_0x2b73[1737]]= function(){return this[_0x2b73[662]]};mxPartitionLayout[_0x2b73[202]][_0x2b73[1702]]= function(_0xff22x2,_0xff22x3,_0xff22x4){_0xff22x4= this[_0x2b73[1179]][_0x2b73[502]]();var _0xff22x5=_0xff22x4[_0x2b73[1197]](_0xff22x2);if(null!= _0xff22x2&& null!= _0xff22x5){for(var _0xff22x9=0,_0xff22xa=0,_0xff22x12=_0xff22x4[_0x2b73[262]](_0xff22x5),_0xff22x9=0;_0xff22x9< _0xff22x12;_0xff22x9++){var _0xff22x13=_0xff22x4[_0x2b73[263]](_0xff22x5,_0xff22x9),_0xff22x13=this[_0x2b73[1726]](_0xff22x13);if(null!= _0xff22x13){_0xff22x13= _0xff22x13[_0x2b73[235]]+ _0xff22x13[_0x2b73[117]]/ 2;if(_0xff22xa< _0xff22x3&& _0xff22x13> _0xff22x3){break};_0xff22xa= _0xff22x13}};_0xff22x3= _0xff22x5[_0x2b73[1738]](_0xff22x2);_0xff22x3= Math[_0x2b73[160]](0,_0xff22x9- (_0xff22x9> _0xff22x3?1:0));_0xff22x4[_0x2b73[99]](_0xff22x5,_0xff22x2,_0xff22x3)}};mxPartitionLayout[_0x2b73[202]][_0x2b73[350]]= function(_0xff22x2){var _0xff22x3=this[_0x2b73[1737]](),_0xff22x4=this[_0x2b73[1179]][_0x2b73[502]](),_0xff22x5=_0xff22x4[_0x2b73[1721]](_0xff22x2);if(null!= this[_0x2b73[1179]][_0x2b73[526]]&& (null== _0xff22x5&& _0xff22x4[_0x2b73[1740]](_0xff22x2)|| _0xff22x2== this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[1741]])){_0xff22x5= new mxRectangle(0,0,this[_0x2b73[1179]][_0x2b73[526]][_0x2b73[359]]- 1,this[_0x2b73[1179]][_0x2b73[526]][_0x2b73[167]]- 1)};if(null!= _0xff22x5){for(var _0xff22x9=[],_0xff22xa=_0xff22x4[_0x2b73[262]](_0xff22x2),_0xff22x12=0;_0xff22x12< _0xff22xa;_0xff22x12++){var _0xff22x13=_0xff22x4[_0x2b73[263]](_0xff22x2,_0xff22x12);!this[_0x2b73[1713]](_0xff22x13)&& this[_0x2b73[1711]](_0xff22x13)&& _0xff22x9[_0x2b73[207]](_0xff22x13)};_0xff22xa= _0xff22x9[_0x2b73[67]];if(0< _0xff22xa){var _0xff22x14=this[_0x2b73[467]],_0xff22x15=this[_0x2b73[467]],_0xff22x16=_0xff22x3?_0xff22x5[_0x2b73[119]]:_0xff22x5[_0x2b73[117]],_0xff22x16=_0xff22x16- 2* this[_0x2b73[467]];_0xff22x2= this[_0x2b73[1179]][_0x2b73[1730]](_0xff22x2)?this[_0x2b73[1179]][_0x2b73[1731]](_0xff22x2): new mxRectangle;_0xff22x16-= _0xff22x3?_0xff22x2[_0x2b73[119]]:_0xff22x2[_0x2b73[117]];_0xff22x14+= _0xff22x2[_0x2b73[117]];_0xff22x15+= _0xff22x2[_0x2b73[119]];_0xff22x2= this[_0x2b73[467]]+ (_0xff22xa- 1)* this[_0x2b73[657]];_0xff22x5= _0xff22x3?(_0xff22x5[_0x2b73[117]]- _0xff22x14- _0xff22x2)/ _0xff22xa:(_0xff22x5[_0x2b73[119]]- _0xff22x15- _0xff22x2)/ _0xff22xa;if(0< _0xff22x5){_0xff22x4[_0x2b73[473]]();try{for(_0xff22x12= 0;_0xff22x12< _0xff22xa;_0xff22x12++){var _0xff22x13=_0xff22x9[_0xff22x12],_0xff22x17=_0xff22x4[_0x2b73[1721]](_0xff22x13);null!= _0xff22x17&& (_0xff22x17= _0xff22x17[_0x2b73[238]](),_0xff22x17[_0x2b73[235]]= _0xff22x14,_0xff22x17[_0x2b73[236]]= _0xff22x15,_0xff22x3?(this[_0x2b73[1743]]&& (_0xff22x17[_0x2b73[117]]= _0xff22x5,_0xff22x17[_0x2b73[119]]= _0xff22x16),_0xff22x14+= _0xff22x5+ this[_0x2b73[657]]):(this[_0x2b73[1743]]&& (_0xff22x17[_0x2b73[119]]= _0xff22x5,_0xff22x17[_0x2b73[117]]= _0xff22x16),_0xff22x15+= _0xff22x5+ this[_0x2b73[657]]),_0xff22x4[_0x2b73[1724]](_0xff22x13,_0xff22x17))}}finally{_0xff22x4[_0x2b73[476]]()}}}}};function mxCompactTreeLayout(_0xff22x2,_0xff22x3,_0xff22x4){mxGraphLayout[_0x2b73[239]](this,_0xff22x2);this[_0x2b73[662]]= null!= _0xff22x3?_0xff22x3:!0;this[_0x2b73[1744]]= null!= _0xff22x4?_0xff22x4:!1}mxCompactTreeLayout[_0x2b73[202]]= new mxGraphLayout;mxCompactTreeLayout[_0x2b73[202]][_0x2b73[196]]= mxCompactTreeLayout;mxCompactTreeLayout[_0x2b73[202]][_0x2b73[662]]= null;mxCompactTreeLayout[_0x2b73[202]][_0x2b73[1744]]= null;mxCompactTreeLayout[_0x2b73[202]][_0x2b73[1735]]= !0;mxCompactTreeLayout[_0x2b73[202]][_0x2b73[1745]]= 10;mxCompactTreeLayout[_0x2b73[202]][_0x2b73[1746]]= null;mxCompactTreeLayout[_0x2b73[202]][_0x2b73[1747]]= !1;mxCompactTreeLayout[_0x2b73[202]][_0x2b73[1748]]= 10;mxCompactTreeLayout[_0x2b73[202]][_0x2b73[1749]]= 20;mxCompactTreeLayout[_0x2b73[202]][_0x2b73[1750]]= !0;mxCompactTreeLayout[_0x2b73[202]][_0x2b73[1751]]= 5;mxCompactTreeLayout[_0x2b73[202]][_0x2b73[1752]]= 4;mxCompactTreeLayout[_0x2b73[202]][_0x2b73[1753]]= 8;mxCompactTreeLayout[_0x2b73[202]][_0x2b73[1754]]= 4;mxCompactTreeLayout[_0x2b73[202]][_0x2b73[1755]]= !0;mxCompactTreeLayout[_0x2b73[202]][_0x2b73[1713]]= function(_0xff22x2){return mxGraphLayout[_0x2b73[202]][_0x2b73[1713]][_0x2b73[183]](this,arguments)|| 0== this[_0x2b73[1179]][_0x2b73[1756]](_0xff22x2)[_0x2b73[67]]};mxCompactTreeLayout[_0x2b73[202]][_0x2b73[1737]]= function(){return this[_0x2b73[662]]};mxCompactTreeLayout[_0x2b73[202]][_0x2b73[350]]= function(_0xff22x2,_0xff22x3){this[_0x2b73[1101]]= _0xff22x2;var _0xff22x4=this[_0x2b73[1179]][_0x2b73[502]]();if(null== _0xff22x3){if(0< this[_0x2b73[1179]][_0x2b73[264]](_0xff22x2,_0xff22x4[_0x2b73[1197]](_0xff22x2),this[_0x2b73[1744]],!this[_0x2b73[1744]],!1)[_0x2b73[67]]){_0xff22x3= _0xff22x2}else {var _0xff22x5=this[_0x2b73[1179]][_0x2b73[1757]](_0xff22x2,!0,this[_0x2b73[1744]]);if(0< _0xff22x5[_0x2b73[67]]){for(var _0xff22x9=0;_0xff22x9< _0xff22x5[_0x2b73[67]];_0xff22x9++){if(!this[_0x2b73[1713]](_0xff22x5[_0xff22x9])&& 0< this[_0x2b73[1179]][_0x2b73[264]](_0xff22x5[_0xff22x9],null,this[_0x2b73[1744]],!this[_0x2b73[1744]],!1)[_0x2b73[67]]){_0xff22x3= _0xff22x5[_0xff22x9];break}}}}};if(null!= _0xff22x3){this[_0x2b73[1746]]= this[_0x2b73[1735]]?{}:null;_0xff22x4[_0x2b73[473]]();try{var _0xff22xa=this[_0x2b73[1758]](_0xff22x3,_0xff22x2);if(null!= _0xff22xa){this[_0x2b73[1759]](_0xff22xa);var _0xff22x12=this[_0x2b73[1179]][_0x2b73[1020]],_0xff22x5=_0xff22x12;if(!this[_0x2b73[1747]]){var _0xff22x13=this[_0x2b73[1726]](_0xff22x3);null!= _0xff22x13&& (_0xff22x12= _0xff22x13[_0x2b73[235]],_0xff22x5= _0xff22x13[_0x2b73[236]])};_0xff22x13= null;_0xff22x13= this[_0x2b73[1737]]()?this[_0x2b73[1760]](_0xff22xa,_0xff22x12,_0xff22x5):this[_0x2b73[1761]](_0xff22xa,null,_0xff22x12,_0xff22x5);if(null!= _0xff22x13){var _0xff22x14=_0xff22x9= 0;0> _0xff22x13[_0x2b73[235]]&& (_0xff22x9= Math[_0x2b73[425]](_0xff22x12- _0xff22x13[_0x2b73[235]]));0> _0xff22x13[_0x2b73[236]]&& (_0xff22x14= Math[_0x2b73[425]](_0xff22x5- _0xff22x13[_0x2b73[236]]));(0!= _0xff22x9|| 0!= _0xff22x14)&& this[_0x2b73[1762]](_0xff22xa,_0xff22x9,_0xff22x14);this[_0x2b73[1735]]&& this[_0x2b73[1763]]();this[_0x2b73[1755]]&& this[_0x2b73[1764]](_0xff22xa)}}}finally{_0xff22x4[_0x2b73[476]]()}}};mxCompactTreeLayout[_0x2b73[202]][_0x2b73[1762]]= function(_0xff22x2,_0xff22x3,_0xff22x4){_0xff22x2[_0x2b73[235]]+= _0xff22x3;_0xff22x2[_0x2b73[236]]+= _0xff22x4;this[_0x2b73[183]](_0xff22x2);for(_0xff22x2= _0xff22x2[_0x2b73[247]];null!= _0xff22x2;){this[_0x2b73[1762]](_0xff22x2,_0xff22x3,_0xff22x4),_0xff22x2= _0xff22x2[_0x2b73[1765]]}};mxCompactTreeLayout[_0x2b73[202]][_0x2b73[1758]]= function(_0xff22x2,_0xff22x3,_0xff22x4){_0xff22x4= null!= _0xff22x4?_0xff22x4:[];var _0xff22x5=mxCellPath[_0x2b73[385]](_0xff22x2),_0xff22x9=null;if(null!= _0xff22x2&& null== _0xff22x4[_0xff22x5]&& !this[_0x2b73[1713]](_0xff22x2)){_0xff22x4[_0xff22x5]= _0xff22x2;var _0xff22x9=this[_0x2b73[1766]](_0xff22x2),_0xff22x5=this[_0x2b73[1179]][_0x2b73[502]](),_0xff22xa=null;_0xff22x2= this[_0x2b73[1179]][_0x2b73[264]](_0xff22x2,_0xff22x3,this[_0x2b73[1744]],!this[_0x2b73[1744]],!1,!0);for(var _0xff22x12=this[_0x2b73[1179]][_0x2b73[249]](),_0xff22x13=0;_0xff22x13< _0xff22x2[_0x2b73[67]];_0xff22x13++){var _0xff22x14=_0xff22x2[_0xff22x13];if(!this[_0x2b73[1715]](_0xff22x14)){this[_0x2b73[1750]]&& this[_0x2b73[1722]](_0xff22x14,null);this[_0x2b73[1755]]&& (this[_0x2b73[1716]](_0xff22x14,!1),this[_0x2b73[1722]](_0xff22x14,null));var _0xff22x15=_0xff22x12[_0x2b73[248]](_0xff22x14),_0xff22x14=null!= _0xff22x15?_0xff22x15[_0x2b73[1710]](this[_0x2b73[1744]]):_0xff22x12[_0x2b73[1710]](_0xff22x14,this[_0x2b73[1744]]),_0xff22x15=this[_0x2b73[1758]](_0xff22x14,_0xff22x3,_0xff22x4);null!= _0xff22x15&& null!= _0xff22x5[_0x2b73[1721]](_0xff22x14)&& (null== _0xff22xa?_0xff22x9[_0x2b73[247]]= _0xff22x15:_0xff22xa[_0x2b73[1765]]= _0xff22x15,_0xff22xa= _0xff22x15)}}};return _0xff22x9};mxCompactTreeLayout[_0x2b73[202]][_0x2b73[1759]]= function(_0xff22x2){if(null!= _0xff22x2){for(var _0xff22x3=_0xff22x2[_0x2b73[247]];null!= _0xff22x3;){this[_0x2b73[1759]](_0xff22x3),_0xff22x3= _0xff22x3[_0x2b73[1765]]};null!= _0xff22x2[_0x2b73[247]]?this[_0x2b73[1767]](_0xff22x2,this[_0x2b73[234]](_0xff22x2)):this[_0x2b73[1768]](_0xff22x2)}};mxCompactTreeLayout[_0x2b73[202]][_0x2b73[1760]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){_0xff22x2[_0x2b73[235]]+= _0xff22x3+ _0xff22x2[_0x2b73[1769]];_0xff22x2[_0x2b73[236]]+= _0xff22x4+ _0xff22x2[_0x2b73[1770]];_0xff22x5= this[_0x2b73[183]](_0xff22x2,_0xff22x5);_0xff22x3= _0xff22x2[_0x2b73[247]];if(null!= _0xff22x3){_0xff22x5= this[_0x2b73[1760]](_0xff22x3,_0xff22x2[_0x2b73[235]],_0xff22x2[_0x2b73[236]],_0xff22x5);_0xff22x4= _0xff22x2[_0x2b73[236]]+ _0xff22x3[_0x2b73[1770]];for(var _0xff22x9=_0xff22x3[_0x2b73[1765]];null!= _0xff22x9;){_0xff22x5= this[_0x2b73[1760]](_0xff22x9,_0xff22x2[_0x2b73[235]]+ _0xff22x3[_0x2b73[1769]],_0xff22x4,_0xff22x5),_0xff22x4+= _0xff22x9[_0x2b73[1770]],_0xff22x9= _0xff22x9[_0x2b73[1765]]}};return _0xff22x5};mxCompactTreeLayout[_0x2b73[202]][_0x2b73[1761]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){_0xff22x2[_0x2b73[235]]+= _0xff22x4+ _0xff22x2[_0x2b73[1770]];_0xff22x2[_0x2b73[236]]+= _0xff22x5+ _0xff22x2[_0x2b73[1769]];_0xff22x9= this[_0x2b73[183]](_0xff22x2,_0xff22x9);_0xff22x3= _0xff22x2[_0x2b73[247]];if(null!= _0xff22x3){_0xff22x9= this[_0x2b73[1761]](_0xff22x3,_0xff22x2,_0xff22x2[_0x2b73[235]],_0xff22x2[_0x2b73[236]],_0xff22x9);_0xff22x4= _0xff22x2[_0x2b73[235]]+ _0xff22x3[_0x2b73[1770]];for(_0xff22x5= _0xff22x3[_0x2b73[1765]];null!= _0xff22x5;){_0xff22x9= this[_0x2b73[1761]](_0xff22x5,_0xff22x2,_0xff22x4,_0xff22x2[_0x2b73[236]]+ _0xff22x3[_0x2b73[1769]],_0xff22x9),_0xff22x4+= _0xff22x5[_0x2b73[1770]],_0xff22x5= _0xff22x5[_0x2b73[1765]]}};return _0xff22x9};mxCompactTreeLayout[_0x2b73[202]][_0x2b73[1767]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=this[_0x2b73[1749]]+ this[_0x2b73[1748]],_0xff22x5=(_0xff22x3- _0xff22x2[_0x2b73[117]])/ 2- this[_0x2b73[1749]],_0xff22x9=_0xff22x5+ _0xff22x2[_0x2b73[117]]+ 2* this[_0x2b73[1749]]- _0xff22x3;_0xff22x2[_0x2b73[247]][_0x2b73[1769]]= _0xff22x4+ _0xff22x2[_0x2b73[119]];_0xff22x2[_0x2b73[247]][_0x2b73[1770]]= _0xff22x9;_0xff22x2[_0x2b73[1772]][_0x2b73[1771]]= this[_0x2b73[1773]](_0xff22x2[_0x2b73[119]],0,this[_0x2b73[1773]](_0xff22x4,_0xff22x9,_0xff22x2[_0x2b73[1772]][_0x2b73[1771]]));_0xff22x2[_0x2b73[1772]][_0x2b73[1774]]= this[_0x2b73[1773]](_0xff22x2[_0x2b73[119]],0,this[_0x2b73[1773]](_0xff22x4,_0xff22x5,_0xff22x2[_0x2b73[1772]][_0x2b73[1774]]))};mxCompactTreeLayout[_0x2b73[202]][_0x2b73[1768]]= function(_0xff22x2){var _0xff22x3=2* this[_0x2b73[1749]];_0xff22x2[_0x2b73[1772]][_0x2b73[1775]]= this[_0x2b73[1773]](_0xff22x2[_0x2b73[119]]+ _0xff22x3,0);_0xff22x2[_0x2b73[1772]][_0x2b73[1771]]= _0xff22x2[_0x2b73[1772]][_0x2b73[1775]];_0xff22x2[_0x2b73[1772]][_0x2b73[1776]]= this[_0x2b73[1773]](0,-_0xff22x2[_0x2b73[117]]- _0xff22x3);_0xff22x2[_0x2b73[1772]][_0x2b73[1774]]= this[_0x2b73[1773]](_0xff22x2[_0x2b73[119]]+ _0xff22x3,0,_0xff22x2[_0x2b73[1772]][_0x2b73[1776]])};mxCompactTreeLayout[_0x2b73[202]][_0x2b73[234]]= function(_0xff22x2){var _0xff22x3=2* this[_0x2b73[1749]],_0xff22x4=_0xff22x2[_0x2b73[247]];_0xff22x2[_0x2b73[1772]]= _0xff22x4[_0x2b73[1772]];for(var _0xff22x5=_0xff22x4[_0x2b73[117]]+ _0xff22x3,_0xff22x9=_0xff22x5,_0xff22x4=_0xff22x4[_0x2b73[1765]];null!= _0xff22x4;){var _0xff22xa=this[_0x2b73[1777]](_0xff22x2[_0x2b73[1772]],_0xff22x4[_0x2b73[1772]]);_0xff22x4[_0x2b73[1770]]= _0xff22xa+ _0xff22x5;_0xff22x4[_0x2b73[1769]]= 0;_0xff22x5= _0xff22x4[_0x2b73[117]]+ _0xff22x3;_0xff22x9+= _0xff22xa+ _0xff22x5;_0xff22x4= _0xff22x4[_0x2b73[1765]]};return _0xff22x9};mxCompactTreeLayout[_0x2b73[202]][_0x2b73[1777]]= function(_0xff22x2,_0xff22x3){for(var _0xff22x4=0,_0xff22x5=0,_0xff22x9=0,_0xff22xa=_0xff22x2[_0x2b73[1774]],_0xff22x12=_0xff22x3[_0x2b73[1771]];null!= _0xff22x12&& null!= _0xff22xa;){var _0xff22x13=this[_0x2b73[1368]](_0xff22x4,_0xff22x5,_0xff22x12[_0x2b73[1126]],_0xff22x12[_0x2b73[1125]],_0xff22xa[_0x2b73[1126]],_0xff22xa[_0x2b73[1125]]),_0xff22x5=_0xff22x5+ _0xff22x13,_0xff22x9=_0xff22x9+ _0xff22x13;_0xff22x4+ _0xff22x12[_0x2b73[1126]]<= _0xff22xa[_0x2b73[1126]]?(_0xff22x4+= _0xff22x12[_0x2b73[1126]],_0xff22x5+= _0xff22x12[_0x2b73[1125]],_0xff22x12= _0xff22x12[_0x2b73[1765]]):(_0xff22x4-= _0xff22xa[_0x2b73[1126]],_0xff22x5-= _0xff22xa[_0x2b73[1125]],_0xff22xa= _0xff22xa[_0x2b73[1765]])};null!= _0xff22x12?(_0xff22x4= this[_0x2b73[1778]](_0xff22x2[_0x2b73[1775]],0,0,_0xff22x12,_0xff22x4,_0xff22x5),_0xff22x2[_0x2b73[1775]]= null!= _0xff22x4[_0x2b73[1765]]?_0xff22x3[_0x2b73[1775]]:_0xff22x4,_0xff22x2[_0x2b73[1776]]= _0xff22x3[_0x2b73[1776]]):(_0xff22x4= this[_0x2b73[1778]](_0xff22x3[_0x2b73[1776]],_0xff22x4,_0xff22x5,_0xff22xa,0,0),null== _0xff22x4[_0x2b73[1765]]&& (_0xff22x2[_0x2b73[1776]]= _0xff22x4));_0xff22x2[_0x2b73[1774]]= _0xff22x3[_0x2b73[1774]];return _0xff22x9};mxCompactTreeLayout[_0x2b73[202]][_0x2b73[1368]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa){var _0xff22x12=0;if(_0xff22x9<= _0xff22x2|| 0>= _0xff22x2+ _0xff22x4){return 0};_0xff22x12= 0< _0xff22x9* _0xff22x5- _0xff22x4* _0xff22xa?0> _0xff22x2?_0xff22x2* _0xff22x5/ _0xff22x4- _0xff22x3:0< _0xff22x2?_0xff22x2* _0xff22xa/ _0xff22x9- _0xff22x3:-_0xff22x3:_0xff22x9< _0xff22x2+ _0xff22x4?_0xff22xa- (_0xff22x3+ (_0xff22x9- _0xff22x2)* _0xff22x5/ _0xff22x4):_0xff22x9> _0xff22x2+ _0xff22x4?(_0xff22x4+ _0xff22x2)* _0xff22xa/ _0xff22x9- (_0xff22x3+ _0xff22x5):_0xff22xa- (_0xff22x3+ _0xff22x5);return 0< _0xff22x12?_0xff22x12:0};mxCompactTreeLayout[_0x2b73[202]][_0x2b73[1778]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa){_0xff22x3= _0xff22x9+ _0xff22x5[_0x2b73[1126]]- _0xff22x3;_0xff22x9= _0xff22x9= 0;0== _0xff22x5[_0x2b73[1126]]?_0xff22x9= _0xff22x5[_0x2b73[1125]]:(_0xff22x9= _0xff22x3* _0xff22x5[_0x2b73[1125]],_0xff22x9/= _0xff22x5[_0x2b73[1126]]);_0xff22x3= this[_0x2b73[1773]](_0xff22x3,_0xff22x9,_0xff22x5[_0x2b73[1765]]);_0xff22x2[_0x2b73[1765]]= this[_0x2b73[1773]](0,_0xff22xa+ _0xff22x5[_0x2b73[1125]]- _0xff22x9- _0xff22x4,_0xff22x3);return _0xff22x3};mxCompactTreeLayout[_0x2b73[202]][_0x2b73[1766]]= function(_0xff22x2){var _0xff22x3={};_0xff22x3[_0x2b73[246]]= _0xff22x2;_0xff22x3[_0x2b73[235]]= 0;_0xff22x3[_0x2b73[236]]= 0;_0xff22x3[_0x2b73[117]]= 0;_0xff22x3[_0x2b73[119]]= 0;_0xff22x2= this[_0x2b73[1726]](_0xff22x2);null!= _0xff22x2&& (this[_0x2b73[1737]]()?(_0xff22x3[_0x2b73[117]]= _0xff22x2[_0x2b73[119]],_0xff22x3[_0x2b73[119]]= _0xff22x2[_0x2b73[117]]):(_0xff22x3[_0x2b73[117]]= _0xff22x2[_0x2b73[117]],_0xff22x3[_0x2b73[119]]= _0xff22x2[_0x2b73[119]]));_0xff22x3[_0x2b73[1769]]= 0;_0xff22x3[_0x2b73[1770]]= 0;_0xff22x3[_0x2b73[1772]]= {};return _0xff22x3};mxCompactTreeLayout[_0x2b73[202]][_0x2b73[183]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=this[_0x2b73[1179]][_0x2b73[502]](),_0xff22x5=_0xff22x2[_0x2b73[246]],_0xff22x9=_0xff22x4[_0x2b73[1721]](_0xff22x5);null!= _0xff22x5&& null!= _0xff22x9&& (this[_0x2b73[1711]](_0xff22x5)&& (_0xff22x9= this[_0x2b73[1725]](_0xff22x5,_0xff22x2[_0x2b73[235]],_0xff22x2[_0x2b73[236]]),this[_0x2b73[1735]]&& (_0xff22x4= _0xff22x4[_0x2b73[1197]](_0xff22x5),_0xff22x5= mxCellPath[_0x2b73[385]](_0xff22x4),null== this[_0x2b73[1746]][_0xff22x5]&& (this[_0x2b73[1746]][_0xff22x5]= _0xff22x4))),_0xff22x3= null== _0xff22x3? new mxRectangle(_0xff22x9[_0x2b73[235]],_0xff22x9[_0x2b73[236]],_0xff22x9[_0x2b73[117]],_0xff22x9[_0x2b73[119]]): new mxRectangle(Math[_0x2b73[243]](_0xff22x3[_0x2b73[235]],_0xff22x9[_0x2b73[235]]),Math[_0x2b73[243]](_0xff22x3[_0x2b73[236]],_0xff22x9[_0x2b73[236]]),Math[_0x2b73[160]](_0xff22x3[_0x2b73[235]]+ _0xff22x3[_0x2b73[117]],_0xff22x9[_0x2b73[235]]+ _0xff22x9[_0x2b73[117]]),Math[_0x2b73[160]](_0xff22x3[_0x2b73[236]]+ _0xff22x3[_0x2b73[119]],_0xff22x9[_0x2b73[236]]+ _0xff22x9[_0x2b73[119]])));return _0xff22x3};mxCompactTreeLayout[_0x2b73[202]][_0x2b73[1773]]= function(_0xff22x2,_0xff22x3,_0xff22x4){var _0xff22x5={};_0xff22x5[_0x2b73[1126]]= _0xff22x2;_0xff22x5[_0x2b73[1125]]= _0xff22x3;_0xff22x5[_0x2b73[1765]]= _0xff22x4;return _0xff22x5};mxCompactTreeLayout[_0x2b73[202]][_0x2b73[1763]]= function(){var _0xff22x2=[],_0xff22x3;for(_0xff22x3 in this[_0x2b73[1746]]){_0xff22x2[_0x2b73[207]](this[_0x2b73[1746]][_0xff22x3])};this[_0x2b73[1727]](mxUtils[_0x2b73[1779]](_0xff22x2,!0),this[_0x2b73[1745]])};mxCompactTreeLayout[_0x2b73[202]][_0x2b73[1764]]= function(_0xff22x2){this[_0x2b73[1780]](_0xff22x2);for(_0xff22x2= _0xff22x2[_0x2b73[247]];null!= _0xff22x2;){this[_0x2b73[1764]](_0xff22x2),_0xff22x2= _0xff22x2[_0x2b73[1765]]}};mxCompactTreeLayout[_0x2b73[202]][_0x2b73[1780]]= function(_0xff22x2){for(var _0xff22x3=_0xff22x2[_0x2b73[247]],_0xff22x4=_0xff22x2[_0x2b73[246]],_0xff22x5=0,_0xff22x9=[];null!= _0xff22x3;){_0xff22x5++;var _0xff22xa=_0xff22x3[_0x2b73[235]];this[_0x2b73[662]]&& (_0xff22xa= _0xff22x3[_0x2b73[236]]);_0xff22x9[_0x2b73[207]]( new WeightedCellSorter(_0xff22x3,_0xff22xa));_0xff22x3= _0xff22x3[_0x2b73[1765]]};_0xff22x9[_0x2b73[470]](WeightedCellSorter[_0x2b73[202]][_0x2b73[469]]);var _0xff22xa=_0xff22x2[_0x2b73[117]],_0xff22x12=(_0xff22x5+ 1)* this[_0x2b73[1751]];_0xff22xa> _0xff22x12+ 2* this[_0x2b73[1751]]&& (_0xff22xa-= 2* this[_0x2b73[1751]]);_0xff22x2= _0xff22xa/ _0xff22x5;_0xff22x3= _0xff22x2/ 2;_0xff22xa> _0xff22x12+ 2* this[_0x2b73[1751]]&& (_0xff22x3+= this[_0x2b73[1751]]);for(var _0xff22xa=this[_0x2b73[1753]]- this[_0x2b73[1752]],_0xff22x12=0,_0xff22x13=this[_0x2b73[1726]](_0xff22x4),_0xff22x14=0;_0xff22x14< _0xff22x9[_0x2b73[67]];_0xff22x14++){for(var _0xff22x15=_0xff22x9[_0xff22x14][_0x2b73[246]][_0x2b73[246]],_0xff22x16=this[_0x2b73[1726]](_0xff22x15),_0xff22x15=this[_0x2b73[1179]][_0x2b73[1781]](_0xff22x4,_0xff22x15,!1),_0xff22x17=[],_0xff22x18=0,_0xff22x19=0,_0xff22x1a=0;_0xff22x1a< _0xff22x15[_0x2b73[67]];_0xff22x1a++){this[_0x2b73[662]]?(_0xff22x18= _0xff22x13[_0x2b73[235]]+ _0xff22x13[_0x2b73[117]],_0xff22x19= _0xff22x13[_0x2b73[236]]+ _0xff22x3,_0xff22x17[_0x2b73[207]]( new mxPoint(_0xff22x18,_0xff22x19)),_0xff22x18= _0xff22x13[_0x2b73[235]]+ _0xff22x13[_0x2b73[117]]+ _0xff22xa,_0xff22x17[_0x2b73[207]]( new mxPoint(_0xff22x18,_0xff22x19)),_0xff22x19= _0xff22x16[_0x2b73[236]]+ _0xff22x16[_0x2b73[119]]/ 2):(_0xff22x18= _0xff22x13[_0x2b73[235]]+ _0xff22x3,_0xff22x19= _0xff22x13[_0x2b73[236]]+ _0xff22x13[_0x2b73[119]],_0xff22x17[_0x2b73[207]]( new mxPoint(_0xff22x18,_0xff22x19)),_0xff22x19= _0xff22x13[_0x2b73[236]]+ _0xff22x13[_0x2b73[119]]+ _0xff22xa,_0xff22x17[_0x2b73[207]]( new mxPoint(_0xff22x18,_0xff22x19)),_0xff22x18= _0xff22x16[_0x2b73[235]]+ _0xff22x16[_0x2b73[117]]/ 2),_0xff22x17[_0x2b73[207]]( new mxPoint(_0xff22x18,_0xff22x19)),this[_0x2b73[1722]](_0xff22x15[_0xff22x1a],_0xff22x17)};_0xff22x14< _0xff22x5/ 2?_0xff22xa+= this[_0x2b73[1752]]:_0xff22x14> _0xff22x5/ 2&& (_0xff22xa-= this[_0x2b73[1752]]);_0xff22x3+= _0xff22x2;_0xff22x12= Math[_0x2b73[160]](_0xff22x12,_0xff22xa)}};function WeightedCellSorter(_0xff22x2,_0xff22x3){this[_0x2b73[246]]= _0xff22x2;this[_0x2b73[1782]]= _0xff22x3}WeightedCellSorter[_0x2b73[202]][_0x2b73[1782]]= 0;WeightedCellSorter[_0x2b73[202]][_0x2b73[1783]]= !1;WeightedCellSorter[_0x2b73[202]][_0x2b73[1784]]= !1;WeightedCellSorter[_0x2b73[202]][_0x2b73[1785]]= null;WeightedCellSorter[_0x2b73[202]][_0x2b73[246]]= null;WeightedCellSorter[_0x2b73[202]][_0x2b73[469]]= function(_0xff22x2,_0xff22x3){return null!= _0xff22x2&& null!= _0xff22x3?_0xff22x3[_0x2b73[1782]]> _0xff22x2[_0x2b73[1782]]?1:_0xff22x3[_0x2b73[1782]]< _0xff22x2[_0x2b73[1782]]?-1:_0xff22x3[_0x2b73[1783]]?1:-1:0};function mxFastOrganicLayout(_0xff22x2){mxGraphLayout[_0x2b73[239]](this,_0xff22x2)}mxFastOrganicLayout[_0x2b73[202]]= new mxGraphLayout;mxFastOrganicLayout[_0x2b73[202]][_0x2b73[196]]= mxFastOrganicLayout;mxFastOrganicLayout[_0x2b73[202]][_0x2b73[1786]]= !0;mxFastOrganicLayout[_0x2b73[202]][_0x2b73[1750]]= !0;mxFastOrganicLayout[_0x2b73[202]][_0x2b73[1787]]= !0;mxFastOrganicLayout[_0x2b73[202]][_0x2b73[1788]]= 50;mxFastOrganicLayout[_0x2b73[202]][_0x2b73[1789]]= 0;mxFastOrganicLayout[_0x2b73[202]][_0x2b73[1790]]= 2;mxFastOrganicLayout[_0x2b73[202]][_0x2b73[1791]]= 500;mxFastOrganicLayout[_0x2b73[202]][_0x2b73[1792]]= 4;mxFastOrganicLayout[_0x2b73[202]][_0x2b73[1793]]= 200;mxFastOrganicLayout[_0x2b73[202]][_0x2b73[1794]]= 0;mxFastOrganicLayout[_0x2b73[202]][_0x2b73[1795]]= 0;mxFastOrganicLayout[_0x2b73[202]][_0x2b73[1796]]= 0;mxFastOrganicLayout[_0x2b73[202]][_0x2b73[1797]]= !0;mxFastOrganicLayout[_0x2b73[202]][_0x2b73[1713]]= function(_0xff22x2){return mxGraphLayout[_0x2b73[202]][_0x2b73[1713]][_0x2b73[183]](this,arguments)|| 0== this[_0x2b73[1179]][_0x2b73[1756]](_0xff22x2)[_0x2b73[67]]};mxFastOrganicLayout[_0x2b73[202]][_0x2b73[350]]= function(_0xff22x2){var _0xff22x3=this[_0x2b73[1179]][_0x2b73[502]]();this[_0x2b73[1798]]= [];for(var _0xff22x4=this[_0x2b73[1179]][_0x2b73[1728]](_0xff22x2),_0xff22x5=0;_0xff22x5< _0xff22x4[_0x2b73[67]];_0xff22x5++){this[_0x2b73[1713]](_0xff22x4[_0xff22x5])|| this[_0x2b73[1798]][_0x2b73[207]](_0xff22x4[_0xff22x5])};var _0xff22x9=this[_0x2b73[1786]]?this[_0x2b73[1179]][_0x2b73[441]][_0x2b73[1799]](this[_0x2b73[1798]]):null,_0xff22xa=this[_0x2b73[1798]][_0x2b73[67]];this[_0x2b73[1800]]= [];this[_0x2b73[1801]]= [];this[_0x2b73[1802]]= [];this[_0x2b73[1803]]= [];this[_0x2b73[1804]]= [];this[_0x2b73[1805]]= [];this[_0x2b73[1806]]= [];this[_0x2b73[1807]]= [];0.0010> this[_0x2b73[1788]]&& (this[_0x2b73[1788]]= 0.0010);this[_0x2b73[1789]]= this[_0x2b73[1788]]* this[_0x2b73[1788]];for(_0xff22x5= 0;_0xff22x5< this[_0x2b73[1798]][_0x2b73[67]];_0xff22x5++){var _0xff22x12=this[_0x2b73[1798]][_0xff22x5];this[_0x2b73[1803]][_0xff22x5]= [];var _0xff22x13=mxCellPath[_0x2b73[385]](_0xff22x12);this[_0x2b73[1800]][_0xff22x13]= _0xff22x5;var _0xff22x14=this[_0x2b73[1726]](_0xff22x12),_0xff22x15=_0xff22x14[_0x2b73[117]],_0xff22x16=_0xff22x14[_0x2b73[119]],_0xff22x17=_0xff22x14[_0x2b73[235]],_0xff22x18=_0xff22x14[_0x2b73[236]];this[_0x2b73[1803]][_0xff22x5][0]= _0xff22x17+ _0xff22x15/ 2;this[_0x2b73[1803]][_0xff22x5][1]= _0xff22x18+ _0xff22x16/ 2;this[_0x2b73[1806]][_0xff22x5]= Math[_0x2b73[243]](_0xff22x15,_0xff22x16);this[_0x2b73[1807]][_0xff22x5]= this[_0x2b73[1806]][_0xff22x5]* this[_0x2b73[1806]][_0xff22x5]};_0xff22x3[_0x2b73[473]]();try{for(_0xff22x5= 0;_0xff22x5< _0xff22xa;_0xff22x5++){this[_0x2b73[1801]][_0xff22x5]= 0;this[_0x2b73[1802]][_0xff22x5]= 0;this[_0x2b73[1804]][_0xff22x5]= this[_0x2b73[1711]](this[_0x2b73[1798]][_0xff22x5]);var _0xff22x19=this[_0x2b73[1179]][_0x2b73[1756]](this[_0x2b73[1798]][_0xff22x5],_0xff22x2),_0xff22x4=this[_0x2b73[1179]][_0x2b73[1808]](_0xff22x19,this[_0x2b73[1798]][_0xff22x5]);this[_0x2b73[1805]][_0xff22x5]= [];for(_0xff22x15= 0;_0xff22x15< _0xff22x4[_0x2b73[67]];_0xff22x15++){this[_0x2b73[1750]]&& this[_0x2b73[1179]][_0x2b73[1809]](_0xff22x19[_0xff22x15]);this[_0x2b73[1787]]&& this[_0x2b73[1716]](_0xff22x19[_0xff22x15],!1);var _0xff22x13=mxCellPath[_0x2b73[385]](_0xff22x4[_0xff22x15]),_0xff22x1a=this[_0x2b73[1800]][_0xff22x13];this[_0x2b73[1805]][_0xff22x5][_0xff22x15]= null!= _0xff22x1a?_0xff22x1a:_0xff22x5}};this[_0x2b73[1794]]= this[_0x2b73[1793]];0== this[_0x2b73[1795]]&& (this[_0x2b73[1795]]= 20* Math[_0x2b73[428]](_0xff22xa));for(this[_0x2b73[1796]]= 0;this[_0x2b73[1796]]< this[_0x2b73[1795]];this[_0x2b73[1796]]++){if(!this[_0x2b73[1797]]){return};this[_0x2b73[1810]]();this[_0x2b73[1811]]();this[_0x2b73[1812]]();this[_0x2b73[1813]]()};_0xff22x2= _0xff22x4= null;for(_0xff22x5= 0;_0xff22x5< this[_0x2b73[1798]][_0x2b73[67]];_0xff22x5++){_0xff22x12= this[_0x2b73[1798]][_0xff22x5],this[_0x2b73[1711]](_0xff22x12)&& (_0xff22x14= this[_0x2b73[1726]](_0xff22x12),null!= _0xff22x14&& (this[_0x2b73[1803]][_0xff22x5][0]-= _0xff22x14[_0x2b73[117]]/ 2,this[_0x2b73[1803]][_0xff22x5][1]-= _0xff22x14[_0x2b73[119]]/ 2,_0xff22x17= this[_0x2b73[1179]][_0x2b73[1021]](this[_0x2b73[1803]][_0xff22x5][0]),_0xff22x18= this[_0x2b73[1179]][_0x2b73[1021]](this[_0x2b73[1803]][_0xff22x5][1]),this[_0x2b73[1725]](_0xff22x12,_0xff22x17,_0xff22x18),_0xff22x4= null== _0xff22x4?_0xff22x17:Math[_0x2b73[243]](_0xff22x4,_0xff22x17),_0xff22x2= null== _0xff22x2?_0xff22x18:Math[_0x2b73[243]](_0xff22x2,_0xff22x18)))};_0xff22x5= -(_0xff22x4|| 0)+ 1;_0xff22x12= -(_0xff22x2|| 0)+ 1;null!= _0xff22x9&& (_0xff22x5+= _0xff22x9[_0x2b73[235]],_0xff22x12+= _0xff22x9[_0x2b73[236]]);this[_0x2b73[1179]][_0x2b73[834]](this[_0x2b73[1798]],_0xff22x5,_0xff22x12)}finally{_0xff22x3[_0x2b73[476]]()}};mxFastOrganicLayout[_0x2b73[202]][_0x2b73[1812]]= function(){for(var _0xff22x2=0;_0xff22x2< this[_0x2b73[1798]][_0x2b73[67]];_0xff22x2++){if(this[_0x2b73[1804]][_0xff22x2]){var _0xff22x3=Math[_0x2b73[428]](this[_0x2b73[1801]][_0xff22x2]* this[_0x2b73[1801]][_0xff22x2]+ this[_0x2b73[1802]][_0xff22x2]* this[_0x2b73[1802]][_0xff22x2]);0.0010> _0xff22x3&& (_0xff22x3= 0.0010);var _0xff22x4=this[_0x2b73[1801]][_0xff22x2]/ _0xff22x3* Math[_0x2b73[243]](_0xff22x3,this[_0x2b73[1794]]),_0xff22x3=this[_0x2b73[1802]][_0xff22x2]/ _0xff22x3* Math[_0x2b73[243]](_0xff22x3,this[_0x2b73[1794]]);this[_0x2b73[1801]][_0xff22x2]= 0;this[_0x2b73[1802]][_0xff22x2]= 0;this[_0x2b73[1803]][_0xff22x2][0]+= _0xff22x4;this[_0x2b73[1803]][_0xff22x2][1]+= _0xff22x3}}};mxFastOrganicLayout[_0x2b73[202]][_0x2b73[1811]]= function(){for(var _0xff22x2=0;_0xff22x2< this[_0x2b73[1798]][_0x2b73[67]];_0xff22x2++){for(var _0xff22x3=0;_0xff22x3< this[_0x2b73[1805]][_0xff22x2][_0x2b73[67]];_0xff22x3++){var _0xff22x4=this[_0x2b73[1805]][_0xff22x2][_0xff22x3];if(_0xff22x2!= _0xff22x4&& this[_0x2b73[1804]][_0xff22x2]&& this[_0x2b73[1804]][_0xff22x4]){var _0xff22x5=this[_0x2b73[1803]][_0xff22x2][0]- this[_0x2b73[1803]][_0xff22x4][0],_0xff22x9=this[_0x2b73[1803]][_0xff22x2][1]- this[_0x2b73[1803]][_0xff22x4][1],_0xff22xa=_0xff22x5* _0xff22x5+ _0xff22x9* _0xff22x9- this[_0x2b73[1807]][_0xff22x2]- this[_0x2b73[1807]][_0xff22x4];_0xff22xa< this[_0x2b73[1792]]&& (_0xff22xa= this[_0x2b73[1792]]);var _0xff22x12=Math[_0x2b73[428]](_0xff22xa),_0xff22xa=_0xff22xa/ this[_0x2b73[1788]],_0xff22x5=_0xff22x5/ _0xff22x12* _0xff22xa,_0xff22x9=_0xff22x9/ _0xff22x12* _0xff22xa;this[_0x2b73[1801]][_0xff22x2]-= _0xff22x5;this[_0x2b73[1802]][_0xff22x2]-= _0xff22x9;this[_0x2b73[1801]][_0xff22x4]+= _0xff22x5;this[_0x2b73[1802]][_0xff22x4]+= _0xff22x9}}}};mxFastOrganicLayout[_0x2b73[202]][_0x2b73[1810]]= function(){for(var _0xff22x2=this[_0x2b73[1798]][_0x2b73[67]],_0xff22x3=0;_0xff22x3< _0xff22x2;_0xff22x3++){for(var _0xff22x4=_0xff22x3;_0xff22x4< _0xff22x2;_0xff22x4++){if(!this[_0x2b73[1797]]){return};if(_0xff22x4!= _0xff22x3&& this[_0x2b73[1804]][_0xff22x3]&& this[_0x2b73[1804]][_0xff22x4]){var _0xff22x5=this[_0x2b73[1803]][_0xff22x3][0]- this[_0x2b73[1803]][_0xff22x4][0],_0xff22x9=this[_0x2b73[1803]][_0xff22x3][1]- this[_0x2b73[1803]][_0xff22x4][1];0== _0xff22x5&& (_0xff22x5= 0.01+ Math[_0x2b73[1814]]());0== _0xff22x9&& (_0xff22x9= 0.01+ Math[_0x2b73[1814]]());var _0xff22xa=Math[_0x2b73[428]](_0xff22x5* _0xff22x5+ _0xff22x9* _0xff22x9),_0xff22x12=_0xff22xa- this[_0x2b73[1806]][_0xff22x3]- this[_0x2b73[1806]][_0xff22x4];_0xff22x12> this[_0x2b73[1791]]|| (_0xff22x12< this[_0x2b73[1790]]&& (_0xff22x12= this[_0x2b73[1790]]),_0xff22x12= this[_0x2b73[1789]]/ _0xff22x12,_0xff22x5= _0xff22x5/ _0xff22xa* _0xff22x12,_0xff22x9= _0xff22x9/ _0xff22xa* _0xff22x12,this[_0x2b73[1801]][_0xff22x3]+= _0xff22x5,this[_0x2b73[1802]][_0xff22x3]+= _0xff22x9,this[_0x2b73[1801]][_0xff22x4]-= _0xff22x5,this[_0x2b73[1802]][_0xff22x4]-= _0xff22x9)}}}};mxFastOrganicLayout[_0x2b73[202]][_0x2b73[1813]]= function(){this[_0x2b73[1794]]= this[_0x2b73[1793]]* (1- this[_0x2b73[1796]]/ this[_0x2b73[1795]])};function mxCircleLayout(_0xff22x2,_0xff22x3){mxGraphLayout[_0x2b73[239]](this,_0xff22x2);this[_0x2b73[1806]]= null!= _0xff22x3?_0xff22x3:100}mxCircleLayout[_0x2b73[202]]= new mxGraphLayout;mxCircleLayout[_0x2b73[202]][_0x2b73[196]]= mxCircleLayout;mxCircleLayout[_0x2b73[202]][_0x2b73[1806]]= null;mxCircleLayout[_0x2b73[202]][_0x2b73[1815]]= !1;mxCircleLayout[_0x2b73[202]][_0x2b73[1732]]= 0;mxCircleLayout[_0x2b73[202]][_0x2b73[1733]]= 0;mxCircleLayout[_0x2b73[202]][_0x2b73[1750]]= !0;mxCircleLayout[_0x2b73[202]][_0x2b73[1787]]= !0;mxCircleLayout[_0x2b73[202]][_0x2b73[350]]= function(_0xff22x2){var _0xff22x3=this[_0x2b73[1179]][_0x2b73[502]]();_0xff22x3[_0x2b73[473]]();try{for(var _0xff22x4=0,_0xff22x5=null,_0xff22x9=null,_0xff22xa=[],_0xff22x12=_0xff22x3[_0x2b73[262]](_0xff22x2),_0xff22x13=0;_0xff22x13< _0xff22x12;_0xff22x13++){var _0xff22x14=_0xff22x3[_0x2b73[263]](_0xff22x2,_0xff22x13);if(this[_0x2b73[1713]](_0xff22x14)){this[_0x2b73[1715]](_0xff22x14)|| (this[_0x2b73[1750]]&& this[_0x2b73[1179]][_0x2b73[1809]](_0xff22x14),this[_0x2b73[1787]]&& this[_0x2b73[1716]](_0xff22x14,!1))}else {_0xff22xa[_0x2b73[207]](_0xff22x14);var _0xff22x15=this[_0x2b73[1726]](_0xff22x14),_0xff22x5=null== _0xff22x5?_0xff22x15[_0x2b73[236]]:Math[_0x2b73[243]](_0xff22x5,_0xff22x15[_0x2b73[236]]),_0xff22x9=null== _0xff22x9?_0xff22x15[_0x2b73[235]]:Math[_0x2b73[243]](_0xff22x9,_0xff22x15[_0x2b73[235]]),_0xff22x4=Math[_0x2b73[160]](_0xff22x4,Math[_0x2b73[160]](_0xff22x15[_0x2b73[117]],_0xff22x15[_0x2b73[119]]))}};var _0xff22x16=this[_0x2b73[1816]](_0xff22xa[_0x2b73[67]],_0xff22x4);this[_0x2b73[1815]]&& (_0xff22x9= this[_0x2b73[1732]],_0xff22x5= this[_0x2b73[1733]]);this[_0x2b73[1817]](_0xff22xa,_0xff22x16,_0xff22x9,_0xff22x5)}finally{_0xff22x3[_0x2b73[476]]()}};mxCircleLayout[_0x2b73[202]][_0x2b73[1816]]= function(_0xff22x2,_0xff22x3){return Math[_0x2b73[160]](_0xff22x2* _0xff22x3/ Math[_0x2b73[424]],this[_0x2b73[1806]])};mxCircleLayout[_0x2b73[202]][_0x2b73[1817]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){for(var _0xff22x9=_0xff22x2[_0x2b73[67]],_0xff22xa=2* Math[_0x2b73[424]]/ _0xff22x9,_0xff22x12=0;_0xff22x12< _0xff22x9;_0xff22x12++){this[_0x2b73[1711]](_0xff22x2[_0xff22x12])&& this[_0x2b73[1725]](_0xff22x2[_0xff22x12],_0xff22x4+ _0xff22x3+ _0xff22x3* Math[_0x2b73[427]](_0xff22x12* _0xff22xa),_0xff22x5+ _0xff22x3+ _0xff22x3* Math[_0x2b73[426]](_0xff22x12* _0xff22xa))}};function mxParallelEdgeLayout(_0xff22x2){mxGraphLayout[_0x2b73[239]](this,_0xff22x2)}mxParallelEdgeLayout[_0x2b73[202]]= new mxGraphLayout;mxParallelEdgeLayout[_0x2b73[202]][_0x2b73[196]]= mxParallelEdgeLayout;mxParallelEdgeLayout[_0x2b73[202]][_0x2b73[657]]= 20;mxParallelEdgeLayout[_0x2b73[202]][_0x2b73[350]]= function(_0xff22x2){_0xff22x2= this[_0x2b73[1818]](_0xff22x2);this[_0x2b73[1179]][_0x2b73[251]][_0x2b73[473]]();try{for(var _0xff22x3 in _0xff22x2){var _0xff22x4=_0xff22x2[_0xff22x3];1< _0xff22x4[_0x2b73[67]]&& this[_0x2b73[1759]](_0xff22x4)}}finally{this[_0x2b73[1179]][_0x2b73[251]][_0x2b73[476]]()}};mxParallelEdgeLayout[_0x2b73[202]][_0x2b73[1818]]= function(_0xff22x2){for(var _0xff22x3=this[_0x2b73[1179]][_0x2b73[502]](),_0xff22x4=[],_0xff22x5=_0xff22x3[_0x2b73[262]](_0xff22x2),_0xff22x9=0;_0xff22x9< _0xff22x5;_0xff22x9++){var _0xff22xa=_0xff22x3[_0x2b73[263]](_0xff22x2,_0xff22x9);if(!this[_0x2b73[1715]](_0xff22xa)){var _0xff22x12=this[_0x2b73[1819]](_0xff22xa);null!= _0xff22x12&& (null== _0xff22x4[_0xff22x12]&& (_0xff22x4[_0xff22x12]= []),_0xff22x4[_0xff22x12][_0x2b73[207]](_0xff22xa))}};return _0xff22x4};mxParallelEdgeLayout[_0x2b73[202]][_0x2b73[1819]]= function(_0xff22x2){var _0xff22x3=this[_0x2b73[1179]][_0x2b73[249]](),_0xff22x4=_0xff22x3[_0x2b73[248]](_0xff22x2),_0xff22x5=null!= _0xff22x4?_0xff22x4[_0x2b73[1710]](!0):_0xff22x3[_0x2b73[1710]](_0xff22x2,!0);_0xff22x2= null!= _0xff22x4?_0xff22x4[_0x2b73[1710]](!1):_0xff22x3[_0x2b73[1710]](_0xff22x2,!1);return null!= _0xff22x5&& null!= _0xff22x2?(_0xff22x5= mxCellPath[_0x2b73[385]](_0xff22x5),_0xff22x2= mxCellPath[_0x2b73[385]](_0xff22x2),_0xff22x5> _0xff22x2?_0xff22x2+ _0x2b73[213]+ _0xff22x5:_0xff22x5+ _0x2b73[213]+ _0xff22x2):null};mxParallelEdgeLayout[_0x2b73[202]][_0x2b73[1759]]= function(_0xff22x2){var _0xff22x3=_0xff22x2[0],_0xff22x4=this[_0x2b73[1179]][_0x2b73[502]](),_0xff22x5=_0xff22x4[_0x2b73[1721]](_0xff22x4[_0x2b73[1709]](_0xff22x3,!0)),_0xff22x9=_0xff22x4[_0x2b73[1721]](_0xff22x4[_0x2b73[1709]](_0xff22x3,!1));if(_0xff22x5== _0xff22x9){for(var _0xff22x3=_0xff22x5[_0x2b73[235]]+ _0xff22x5[_0x2b73[117]]+ this[_0x2b73[657]],_0xff22x4=_0xff22x5[_0x2b73[236]]+ _0xff22x5[_0x2b73[119]]/ 2,_0xff22xa=0;_0xff22xa< _0xff22x2[_0x2b73[67]];_0xff22xa++){this[_0x2b73[1820]](_0xff22x2[_0xff22xa],_0xff22x3,_0xff22x4),_0xff22x3+= this[_0x2b73[657]]}}else {if(null!= _0xff22x5&& null!= _0xff22x9){for(var _0xff22x3=_0xff22x5[_0x2b73[235]]+ _0xff22x5[_0x2b73[117]]/ 2,_0xff22x4=_0xff22x5[_0x2b73[236]]+ _0xff22x5[_0x2b73[119]]/ 2,_0xff22xa=_0xff22x9[_0x2b73[235]]+ _0xff22x9[_0x2b73[117]]/ 2- _0xff22x3,_0xff22x12=_0xff22x9[_0x2b73[236]]+ _0xff22x9[_0x2b73[119]]/ 2- _0xff22x4,_0xff22x9=Math[_0x2b73[428]](_0xff22xa* _0xff22xa+ _0xff22x12* _0xff22x12),_0xff22x5=_0xff22x12* this[_0x2b73[657]]/ _0xff22x9,_0xff22x9=_0xff22xa* this[_0x2b73[657]]/ _0xff22x9,_0xff22x3=_0xff22x3+ _0xff22xa/ 2+ _0xff22x5* (_0xff22x2[_0x2b73[67]]- 1)/ 2,_0xff22x4=_0xff22x4+ _0xff22x12/ 2- _0xff22x9* (_0xff22x2[_0x2b73[67]]- 1)/ 2,_0xff22xa=0;_0xff22xa< _0xff22x2[_0x2b73[67]];_0xff22xa++){this[_0x2b73[1820]](_0xff22x2[_0xff22xa],_0xff22x3,_0xff22x4),_0xff22x3-= _0xff22x5,_0xff22x4+= _0xff22x9}}}};mxParallelEdgeLayout[_0x2b73[202]][_0x2b73[1820]]= function(_0xff22x2,_0xff22x3,_0xff22x4){this[_0x2b73[1179]][_0x2b73[1712]](_0xff22x2)&& this[_0x2b73[1722]](_0xff22x2,[ new mxPoint(_0xff22x3,_0xff22x4)])};function mxCompositeLayout(_0xff22x2,_0xff22x3,_0xff22x4){mxGraphLayout[_0x2b73[239]](this,_0xff22x2);this[_0x2b73[1821]]= _0xff22x3;this[_0x2b73[1822]]= _0xff22x4}mxCompositeLayout[_0x2b73[202]]= new mxGraphLayout;mxCompositeLayout[_0x2b73[202]][_0x2b73[196]]= mxCompositeLayout;mxCompositeLayout[_0x2b73[202]][_0x2b73[1821]]= null;mxCompositeLayout[_0x2b73[202]][_0x2b73[1822]]= null;mxCompositeLayout[_0x2b73[202]][_0x2b73[1702]]= function(_0xff22x2,_0xff22x3,_0xff22x4){null!= this[_0x2b73[1822]]?this[_0x2b73[1822]][_0x2b73[582]][_0x2b73[183]](this[_0x2b73[1822]],arguments):this[_0x2b73[1821]][0][_0x2b73[582]][_0x2b73[183]](this[_0x2b73[1821]][0],arguments)};mxCompositeLayout[_0x2b73[202]][_0x2b73[350]]= function(_0xff22x2){var _0xff22x3=this[_0x2b73[1179]][_0x2b73[502]]();_0xff22x3[_0x2b73[473]]();try{for(var _0xff22x4=0;_0xff22x4< this[_0x2b73[1821]][_0x2b73[67]];_0xff22x4++){this[_0x2b73[1821]][_0xff22x4][_0x2b73[350]][_0x2b73[183]](this[_0x2b73[1821]][_0xff22x4],arguments)}}finally{_0xff22x3[_0x2b73[476]]()}};function mxEdgeLabelLayout(_0xff22x2,_0xff22x3){mxGraphLayout[_0x2b73[239]](this,_0xff22x2)}mxEdgeLabelLayout[_0x2b73[202]]= new mxGraphLayout;mxEdgeLabelLayout[_0x2b73[202]][_0x2b73[196]]= mxEdgeLabelLayout;mxEdgeLabelLayout[_0x2b73[202]][_0x2b73[350]]= function(_0xff22x2){for(var _0xff22x3=this[_0x2b73[1179]][_0x2b73[441]],_0xff22x4=this[_0x2b73[1179]][_0x2b73[502]](),_0xff22x5=[],_0xff22x9=[],_0xff22xa=_0xff22x4[_0x2b73[262]](_0xff22x2),_0xff22x12=0;_0xff22x12< _0xff22xa;_0xff22x12++){var _0xff22x13=_0xff22x4[_0x2b73[263]](_0xff22x2,_0xff22x12),_0xff22x14=_0xff22x3[_0x2b73[248]](_0xff22x13);null!= _0xff22x14&& (this[_0x2b73[1713]](_0xff22x13)?this[_0x2b73[1715]](_0xff22x13)|| _0xff22x5[_0x2b73[207]](_0xff22x14):_0xff22x9[_0x2b73[207]](_0xff22x14))};this[_0x2b73[1823]](_0xff22x9,_0xff22x5)};mxEdgeLabelLayout[_0x2b73[202]][_0x2b73[1823]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=this[_0x2b73[1179]][_0x2b73[502]]();_0xff22x4[_0x2b73[473]]();try{for(var _0xff22x5=0;_0xff22x5< _0xff22x3[_0x2b73[67]];_0xff22x5++){var _0xff22x9=_0xff22x3[_0xff22x5];if(null!= _0xff22x9&& null!= _0xff22x9[_0x2b73[963]]&& null!= _0xff22x9[_0x2b73[963]][_0x2b73[1563]]){for(var _0xff22xa=0;_0xff22xa< _0xff22x2[_0x2b73[67]];_0xff22xa++){var _0xff22x12=_0xff22x2[_0xff22xa];null!= _0xff22x12&& this[_0x2b73[1824]](_0xff22x9,_0xff22x12)}}}}finally{_0xff22x4[_0x2b73[476]]()}};mxEdgeLabelLayout[_0x2b73[202]][_0x2b73[1824]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=this[_0x2b73[1179]][_0x2b73[502]](),_0xff22x5=_0xff22x2[_0x2b73[963]][_0x2b73[1563]];if(mxUtils[_0x2b73[1825]](_0xff22x5,_0xff22x3)){var _0xff22x9=-_0xff22x5[_0x2b73[236]]- _0xff22x5[_0x2b73[119]]+ _0xff22x3[_0x2b73[236]],_0xff22xa=-_0xff22x5[_0x2b73[236]]+ _0xff22x3[_0x2b73[236]]+ _0xff22x3[_0x2b73[119]],_0xff22x9=Math[_0x2b73[425]](_0xff22x9)< Math[_0x2b73[425]](_0xff22xa)?_0xff22x9:_0xff22xa,_0xff22xa=-_0xff22x5[_0x2b73[235]]- _0xff22x5[_0x2b73[117]]+ _0xff22x3[_0x2b73[235]],_0xff22x5=-_0xff22x5[_0x2b73[235]]+ _0xff22x3[_0x2b73[235]]+ _0xff22x3[_0x2b73[117]],_0xff22x5=Math[_0x2b73[425]](_0xff22xa)< Math[_0x2b73[425]](_0xff22x5)?_0xff22xa:_0xff22x5;Math[_0x2b73[425]](_0xff22x5)< Math[_0x2b73[425]](_0xff22x9)?_0xff22x9= 0:_0xff22x5= 0;_0xff22xa= _0xff22x4[_0x2b73[1721]](_0xff22x2[_0x2b73[246]]);null!= _0xff22xa&& (_0xff22xa= _0xff22xa[_0x2b73[238]](),null!= _0xff22xa[_0x2b73[1368]]?(_0xff22xa[_0x2b73[1368]][_0x2b73[235]]+= _0xff22x5,_0xff22xa[_0x2b73[1368]][_0x2b73[236]]+= _0xff22x9):_0xff22xa[_0x2b73[1368]]= new mxPoint(_0xff22x5,_0xff22x9),_0xff22x4[_0x2b73[1724]](_0xff22x2[_0x2b73[246]],_0xff22xa))}};function mxGraphAbstractHierarchyCell(){this[_0x2b73[235]]= [];this[_0x2b73[236]]= [];this[_0x2b73[1826]]= []}mxGraphAbstractHierarchyCell[_0x2b73[202]][_0x2b73[1827]]= -1;mxGraphAbstractHierarchyCell[_0x2b73[202]][_0x2b73[1828]]= -1;mxGraphAbstractHierarchyCell[_0x2b73[202]][_0x2b73[235]]= null;mxGraphAbstractHierarchyCell[_0x2b73[202]][_0x2b73[236]]= null;mxGraphAbstractHierarchyCell[_0x2b73[202]][_0x2b73[117]]= 0;mxGraphAbstractHierarchyCell[_0x2b73[202]][_0x2b73[119]]= 0;mxGraphAbstractHierarchyCell[_0x2b73[202]][_0x2b73[1829]]= null;mxGraphAbstractHierarchyCell[_0x2b73[202]][_0x2b73[1830]]= null;mxGraphAbstractHierarchyCell[_0x2b73[202]][_0x2b73[1826]]= null;mxGraphAbstractHierarchyCell[_0x2b73[202]][_0x2b73[1831]]= function(_0xff22x2){return null};mxGraphAbstractHierarchyCell[_0x2b73[202]][_0x2b73[1832]]= function(_0xff22x2){return null};mxGraphAbstractHierarchyCell[_0x2b73[202]][_0x2b73[250]]= function(){return !1};mxGraphAbstractHierarchyCell[_0x2b73[202]][_0x2b73[1193]]= function(){return !1};mxGraphAbstractHierarchyCell[_0x2b73[202]][_0x2b73[1833]]= function(_0xff22x2){return null};mxGraphAbstractHierarchyCell[_0x2b73[202]][_0x2b73[1834]]= function(_0xff22x2,_0xff22x3){return null};mxGraphAbstractHierarchyCell[_0x2b73[202]][_0x2b73[1835]]= function(_0xff22x2,_0xff22x3){this[_0x2b73[1193]]()?this[_0x2b73[235]][0]= _0xff22x3:this[_0x2b73[250]]()&& (this[_0x2b73[235]][_0xff22x2- this[_0x2b73[1828]]- 1]= _0xff22x3)};mxGraphAbstractHierarchyCell[_0x2b73[202]][_0x2b73[730]]= function(_0xff22x2){return this[_0x2b73[1193]]()?this[_0x2b73[235]][0]:this[_0x2b73[250]]()?this[_0x2b73[235]][_0xff22x2- this[_0x2b73[1828]]- 1]:0};mxGraphAbstractHierarchyCell[_0x2b73[202]][_0x2b73[1836]]= function(_0xff22x2,_0xff22x3){this[_0x2b73[1193]]()?this[_0x2b73[236]][0]= _0xff22x3:this[_0x2b73[250]]()&& (this[_0x2b73[236]][_0xff22x2- this[_0x2b73[1828]]- 1]= _0xff22x3)};function mxGraphHierarchyNode(_0xff22x2){mxGraphAbstractHierarchyCell[_0x2b73[183]](this,arguments);this[_0x2b73[246]]= _0xff22x2}mxGraphHierarchyNode[_0x2b73[202]]= new mxGraphAbstractHierarchyCell;mxGraphHierarchyNode[_0x2b73[202]][_0x2b73[196]]= mxGraphHierarchyNode;mxGraphHierarchyNode[_0x2b73[202]][_0x2b73[246]]= null;mxGraphHierarchyNode[_0x2b73[202]][_0x2b73[1837]]= [];mxGraphHierarchyNode[_0x2b73[202]][_0x2b73[1838]]= [];mxGraphHierarchyNode[_0x2b73[202]][_0x2b73[1839]]= !1;mxGraphHierarchyNode[_0x2b73[202]][_0x2b73[1840]]= function(_0xff22x2){return this[_0x2b73[1827]]};mxGraphHierarchyNode[_0x2b73[202]][_0x2b73[1831]]= function(_0xff22x2){if(null== this[_0x2b73[1829]]){this[_0x2b73[1829]]= [];this[_0x2b73[1829]][0]= [];for(var _0xff22x3=0;_0xff22x3< this[_0x2b73[1837]][_0x2b73[67]];_0xff22x3++){var _0xff22x4=this[_0x2b73[1837]][_0xff22x3];-1== _0xff22x4[_0x2b73[1827]]|| _0xff22x4[_0x2b73[1827]]== _0xff22x2+ 1?this[_0x2b73[1829]][0][_0x2b73[207]](_0xff22x4[_0x2b73[1097]]):this[_0x2b73[1829]][0][_0x2b73[207]](_0xff22x4)}};return this[_0x2b73[1829]][0]};mxGraphHierarchyNode[_0x2b73[202]][_0x2b73[1832]]= function(_0xff22x2){if(null== this[_0x2b73[1830]]){this[_0x2b73[1830]]= [];this[_0x2b73[1830]][0]= [];for(var _0xff22x3=0;_0xff22x3< this[_0x2b73[1838]][_0x2b73[67]];_0xff22x3++){var _0xff22x4=this[_0x2b73[1838]][_0xff22x3];-1== _0xff22x4[_0x2b73[1828]]|| _0xff22x4[_0x2b73[1828]]== _0xff22x2- 1?this[_0x2b73[1830]][0][_0x2b73[207]](_0xff22x4[_0x2b73[772]]):this[_0x2b73[1830]][0][_0x2b73[207]](_0xff22x4)}};return this[_0x2b73[1830]][0]};mxGraphHierarchyNode[_0x2b73[202]][_0x2b73[1193]]= function(){return !0};mxGraphHierarchyNode[_0x2b73[202]][_0x2b73[1833]]= function(_0xff22x2){return this[_0x2b73[1826]][0]};mxGraphHierarchyNode[_0x2b73[202]][_0x2b73[1834]]= function(_0xff22x2,_0xff22x3){this[_0x2b73[1826]][0]= _0xff22x3};mxGraphHierarchyNode[_0x2b73[202]][_0x2b73[1720]]= function(_0xff22x2){if(null!= _0xff22x2&& null!= this[_0x2b73[1839]]&& null!= _0xff22x2[_0x2b73[1839]]&& this[_0x2b73[1839]][_0x2b73[67]]< _0xff22x2[_0x2b73[1839]][_0x2b73[67]]){if(this[_0x2b73[1839]]== _0xff22x2[_0x2b73[1839]]){return !0};if(null== this[_0x2b73[1839]]|| null== this[_0x2b73[1839]]){return !1};for(var _0xff22x3=0;_0xff22x3< this[_0x2b73[1839]][_0x2b73[67]];_0xff22x3++){if(this[_0x2b73[1839]][_0xff22x3]!= _0xff22x2[_0x2b73[1839]][_0xff22x3]){return !1}};return !0};return !1};mxGraphHierarchyNode[_0x2b73[202]][_0x2b73[1841]]= function(){return this[_0x2b73[246]]};function mxGraphHierarchyEdge(_0xff22x2){mxGraphAbstractHierarchyCell[_0x2b73[183]](this,arguments);this[_0x2b73[1842]]= _0xff22x2}mxGraphHierarchyEdge[_0x2b73[202]]= new mxGraphAbstractHierarchyCell;mxGraphHierarchyEdge[_0x2b73[202]][_0x2b73[196]]= mxGraphHierarchyEdge;mxGraphHierarchyEdge[_0x2b73[202]][_0x2b73[1842]]= null;mxGraphHierarchyEdge[_0x2b73[202]][_0x2b73[1097]]= null;mxGraphHierarchyEdge[_0x2b73[202]][_0x2b73[772]]= null;mxGraphHierarchyEdge[_0x2b73[202]][_0x2b73[1843]]= !1;mxGraphHierarchyEdge[_0x2b73[202]][_0x2b73[1744]]= function(_0xff22x2){_0xff22x2= this[_0x2b73[1097]];this[_0x2b73[1097]]= this[_0x2b73[772]];this[_0x2b73[772]]= _0xff22x2;this[_0x2b73[1843]]= !this[_0x2b73[1843]]};mxGraphHierarchyEdge[_0x2b73[202]][_0x2b73[1831]]= function(_0xff22x2){if(null== this[_0x2b73[1829]]){this[_0x2b73[1829]]= [];for(var _0xff22x3=0;_0xff22x3< this[_0x2b73[1826]][_0x2b73[67]];_0xff22x3++){this[_0x2b73[1829]][_0xff22x3]= [],_0xff22x3== this[_0x2b73[1826]][_0x2b73[67]]- 1?this[_0x2b73[1829]][_0xff22x3][_0x2b73[207]](this[_0x2b73[1097]]):this[_0x2b73[1829]][_0xff22x3][_0x2b73[207]](this)}};return this[_0x2b73[1829]][_0xff22x2- this[_0x2b73[1828]]- 1]};mxGraphHierarchyEdge[_0x2b73[202]][_0x2b73[1832]]= function(_0xff22x2){if(null== this[_0x2b73[1830]]){this[_0x2b73[1830]]= [];for(var _0xff22x3=0;_0xff22x3< this[_0x2b73[1826]][_0x2b73[67]];_0xff22x3++){this[_0x2b73[1830]][_0xff22x3]= [],0== _0xff22x3?this[_0x2b73[1830]][_0xff22x3][_0x2b73[207]](this[_0x2b73[772]]):this[_0x2b73[1830]][_0xff22x3][_0x2b73[207]](this)}};return this[_0x2b73[1830]][_0xff22x2- this[_0x2b73[1828]]- 1]};mxGraphHierarchyEdge[_0x2b73[202]][_0x2b73[250]]= function(){return !0};mxGraphHierarchyEdge[_0x2b73[202]][_0x2b73[1833]]= function(_0xff22x2){return this[_0x2b73[1826]][_0xff22x2- this[_0x2b73[1828]]- 1]};mxGraphHierarchyEdge[_0x2b73[202]][_0x2b73[1834]]= function(_0xff22x2,_0xff22x3){this[_0x2b73[1826]][_0xff22x2- this[_0x2b73[1828]]- 1]= _0xff22x3};mxGraphHierarchyEdge[_0x2b73[202]][_0x2b73[1841]]= function(){return null!= this[_0x2b73[1842]]&& 0< this[_0x2b73[1842]][_0x2b73[67]]?this[_0x2b73[1842]][0]:null};function mxGraphHierarchyModel(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){_0xff22x2[_0x2b73[1703]]();this[_0x2b73[1844]]= _0xff22x9;this[_0x2b73[1845]]= _0xff22x4;this[_0x2b73[1101]]= _0xff22x5;this[_0x2b73[1846]]= {};this[_0x2b73[1847]]= {};this[_0x2b73[1827]]= 0;_0xff22x4= [];null== _0xff22x3&& (_0xff22x3= this[_0x2b73[1179]][_0x2b73[1728]](_0xff22x5));this[_0x2b73[1827]]= this[_0x2b73[1848]];this[_0x2b73[1849]](_0xff22x2,_0xff22x3,_0xff22x4);for(_0xff22x5= 0;_0xff22x5< _0xff22x3[_0x2b73[67]];_0xff22x5++){_0xff22x9= _0xff22x4[_0xff22x5][_0x2b73[1838]];for(var _0xff22xa=0;_0xff22xa< _0xff22x9[_0x2b73[67]];_0xff22xa++){var _0xff22x12=_0xff22x9[_0xff22xa],_0xff22x13=_0xff22x12[_0x2b73[1842]];if(null!= _0xff22x13&& 0< _0xff22x13[_0x2b73[67]]){var _0xff22x13=_0xff22x13[0],_0xff22x14=_0xff22x2[_0x2b73[1710]](_0xff22x13,!1),_0xff22x14=mxCellPath[_0x2b73[385]](_0xff22x14),_0xff22x14=this[_0x2b73[1846]][_0xff22x14];_0xff22x4[_0xff22x5]== _0xff22x14&& (_0xff22x14= _0xff22x2[_0x2b73[1710]](_0xff22x13,!0),_0xff22x14= mxCellPath[_0x2b73[385]](_0xff22x14),_0xff22x14= this[_0x2b73[1846]][_0xff22x14]);null!= _0xff22x14&& _0xff22x4[_0xff22x5]!= _0xff22x14&& (_0xff22x12[_0x2b73[772]]= _0xff22x14,0== _0xff22x14[_0x2b73[1837]][_0x2b73[67]]&& (_0xff22x14[_0x2b73[1837]]= []),0> mxUtils[_0x2b73[2]](_0xff22x14[_0x2b73[1837]],_0xff22x12)&& _0xff22x14[_0x2b73[1837]][_0x2b73[207]](_0xff22x12))}};_0xff22x4[_0xff22x5][_0x2b73[1826]][0]= 1}}mxGraphHierarchyModel[_0x2b73[202]][_0x2b73[1827]]= null;mxGraphHierarchyModel[_0x2b73[202]][_0x2b73[1846]]= null;mxGraphHierarchyModel[_0x2b73[202]][_0x2b73[1847]]= null;mxGraphHierarchyModel[_0x2b73[202]][_0x2b73[1850]]= null;mxGraphHierarchyModel[_0x2b73[202]][_0x2b73[1845]]= null;mxGraphHierarchyModel[_0x2b73[202]][_0x2b73[1101]]= null;mxGraphHierarchyModel[_0x2b73[202]][_0x2b73[1851]]= 0;mxGraphHierarchyModel[_0x2b73[202]][_0x2b73[1848]]= 1E8;mxGraphHierarchyModel[_0x2b73[202]][_0x2b73[1844]]= !1;mxGraphHierarchyModel[_0x2b73[202]][_0x2b73[1849]]= function(_0xff22x2,_0xff22x3,_0xff22x4){for(var _0xff22x5=_0xff22x2[_0x2b73[1703]](),_0xff22x9=0;_0xff22x9< _0xff22x3[_0x2b73[67]];_0xff22x9++){_0xff22x4[_0xff22x9]= new mxGraphHierarchyNode(_0xff22x3[_0xff22x9]);var _0xff22xa=mxCellPath[_0x2b73[385]](_0xff22x3[_0xff22x9]);this[_0x2b73[1846]][_0xff22xa]= _0xff22x4[_0xff22x9];_0xff22xa= _0xff22x2[_0x2b73[264]](_0xff22x3[_0xff22x9]);_0xff22x4[_0xff22x9][_0x2b73[1838]]= [];for(var _0xff22x12=0;_0xff22x12< _0xff22xa[_0x2b73[67]];_0xff22x12++){var _0xff22x13=_0xff22x2[_0x2b73[1710]](_0xff22xa[_0xff22x12],!1);if(_0xff22x13!= _0xff22x3[_0xff22x9]&& _0xff22x13!= _0xff22x3[_0xff22x9]&& _0xff22x2[_0x2b73[1179]][_0x2b73[251]][_0x2b73[1193]](_0xff22x13)&& !_0xff22x2[_0x2b73[1713]](_0xff22x13)){var _0xff22x14=_0xff22x2[_0x2b73[1781]](_0xff22x3[_0xff22x9],_0xff22x13,!1),_0xff22x15=_0xff22x2[_0x2b73[1781]](_0xff22x3[_0xff22x9],_0xff22x13,!0),_0xff22x13=mxCellPath[_0x2b73[385]](_0xff22x14[0]);if(null!= _0xff22x14&& 0< _0xff22x14[_0x2b73[67]]&& null== this[_0x2b73[1847]][_0xff22x13]&& 2* _0xff22x15[_0x2b73[67]]>= _0xff22x14[_0x2b73[67]]){for(var _0xff22x15= new mxGraphHierarchyEdge(_0xff22x14),_0xff22x16=0;_0xff22x16< _0xff22x14[_0x2b73[67]];_0xff22x16++){var _0xff22x17=_0xff22x14[_0xff22x16],_0xff22x13=mxCellPath[_0x2b73[385]](_0xff22x17);this[_0x2b73[1847]][_0xff22x13]= _0xff22x15;_0xff22x5[_0x2b73[1809]](_0xff22x17);_0xff22x2[_0x2b73[1787]]&& (_0xff22x2[_0x2b73[1716]](_0xff22x17,!1),_0xff22x2[_0x2b73[1718]](_0xff22x17,!0))};_0xff22x15[_0x2b73[1097]]= _0xff22x4[_0xff22x9];0> mxUtils[_0x2b73[2]](_0xff22x4[_0xff22x9][_0x2b73[1838]],_0xff22x15)&& _0xff22x4[_0xff22x9][_0x2b73[1838]][_0x2b73[207]](_0xff22x15)}}};_0xff22x4[_0xff22x9][_0x2b73[1826]][0]= 0}};mxGraphHierarchyModel[_0x2b73[202]][_0x2b73[1852]]= function(){var _0xff22x2=[];if(null!= this[_0x2b73[1845]]){for(var _0xff22x3=0;_0xff22x3< this[_0x2b73[1845]][_0x2b73[67]];_0xff22x3++){var _0xff22x4=mxCellPath[_0x2b73[385]](this[_0x2b73[1845]][_0xff22x3]),_0xff22x4=this[_0x2b73[1846]][_0xff22x4];null!= _0xff22x4&& _0xff22x2[_0x2b73[207]](_0xff22x4)}};for(var _0xff22x5 in this[_0x2b73[1846]]){_0xff22x4= this[_0x2b73[1846]][_0xff22x5],_0xff22x4[_0x2b73[1826]][0]= -1};for(var _0xff22x9=_0xff22x2[_0x2b73[1853]]();0< _0xff22x2[_0x2b73[67]];){var _0xff22x4=_0xff22x2[0],_0xff22xa,_0xff22x12;_0xff22xa= _0xff22x4[_0x2b73[1837]];_0xff22x12= _0xff22x4[_0x2b73[1838]];for(var _0xff22x13=!0,_0xff22x14=this[_0x2b73[1848]],_0xff22x3=0;_0xff22x3< _0xff22xa[_0x2b73[67]];_0xff22x3++){var _0xff22x15=_0xff22xa[_0xff22x3];if(5270620== _0xff22x15[_0x2b73[1826]][0]){_0xff22x15= _0xff22x15[_0x2b73[1097]],_0xff22x14= Math[_0x2b73[243]](_0xff22x14,_0xff22x15[_0x2b73[1826]][0]- 1)}else {_0xff22x13= !1;break}};if(_0xff22x13){_0xff22x4[_0x2b73[1826]][0]= _0xff22x14;this[_0x2b73[1827]]= Math[_0x2b73[243]](this[_0x2b73[1827]],_0xff22x14);if(null!= _0xff22x12){for(_0xff22x3= 0;_0xff22x3< _0xff22x12[_0x2b73[67]];_0xff22x3++){_0xff22x15= _0xff22x12[_0xff22x3],_0xff22x15[_0x2b73[1826]][0]= 5270620,_0xff22x15= _0xff22x15[_0x2b73[772]],-1== _0xff22x15[_0x2b73[1826]][0]&& (_0xff22x2[_0x2b73[207]](_0xff22x15),_0xff22x15[_0x2b73[1826]][0]= -2)}};_0xff22x2[_0x2b73[1115]]()}else {if(_0xff22x3= _0xff22x2[_0x2b73[1115]](),_0xff22x2[_0x2b73[207]](_0xff22x4),_0xff22x3== _0xff22x4&& 1== _0xff22x2[_0x2b73[67]]){break}}};for(_0xff22x5 in this[_0x2b73[1846]]){_0xff22x4= this[_0x2b73[1846]][_0xff22x5],_0xff22x4[_0x2b73[1826]][0]-= this[_0x2b73[1827]]};for(_0xff22x3= 0;_0xff22x3< _0xff22x9[_0x2b73[67]];_0xff22x3++){_0xff22x4= _0xff22x9[_0xff22x3];_0xff22x2= 0;_0xff22xa= _0xff22x4[_0x2b73[1838]];for(_0xff22x5= 0;_0xff22x5< _0xff22xa[_0x2b73[67]];_0xff22x5++){_0xff22x15= _0xff22xa[_0xff22x5],_0xff22x15= _0xff22x15[_0x2b73[772]],_0xff22x4[_0x2b73[1826]][0]= Math[_0x2b73[160]](_0xff22x2,_0xff22x15[_0x2b73[1826]][0]+ 1),_0xff22x2= _0xff22x4[_0x2b73[1826]][0]}};this[_0x2b73[1827]]= this[_0x2b73[1848]]- this[_0x2b73[1827]]};mxGraphHierarchyModel[_0x2b73[202]][_0x2b73[1854]]= function(){var _0xff22x2=[];this[_0x2b73[1850]]= [];for(var _0xff22x3=0;_0xff22x3< this[_0x2b73[1827]]+ 1;_0xff22x3++){_0xff22x2[_0xff22x3]= [],this[_0x2b73[1850]][_0xff22x3]= _0xff22x2[_0xff22x3]};var _0xff22x4=null;if(null!= this[_0x2b73[1845]]){for(var _0xff22x5=this[_0x2b73[1845]],_0xff22x4=[],_0xff22x3=0;_0xff22x3< _0xff22x5[_0x2b73[67]];_0xff22x3++){var _0xff22x9=mxCellPath[_0x2b73[385]](_0xff22x5[_0xff22x3]);_0xff22x4[_0xff22x3]= this[_0x2b73[1846]][_0xff22x9]}};this[_0x2b73[209]](function(_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22x15){0== _0xff22x15&& (0> _0xff22x4[_0x2b73[1827]]&& 0> _0xff22x4[_0x2b73[1828]])&& (_0xff22x2[_0xff22x4[_0x2b73[1826]][0]][_0x2b73[207]](_0xff22x4),_0xff22x4[_0x2b73[1827]]= _0xff22x4[_0x2b73[1826]][0],_0xff22x4[_0x2b73[1828]]= _0xff22x4[_0x2b73[1826]][0],_0xff22x4[_0x2b73[1826]][0]= _0xff22x2[_0xff22x4[_0x2b73[1827]]][_0x2b73[67]]- 1);if(null!= _0xff22x3&& null!= _0xff22x5&& 1< _0xff22x3[_0x2b73[1827]]- _0xff22x4[_0x2b73[1827]]){_0xff22x5[_0x2b73[1827]]= _0xff22x3[_0x2b73[1827]];_0xff22x5[_0x2b73[1828]]= _0xff22x4[_0x2b73[1827]];_0xff22x5[_0x2b73[1826]]= [];_0xff22x5[_0x2b73[235]]= [];_0xff22x5[_0x2b73[236]]= [];for(_0xff22x3= _0xff22x5[_0x2b73[1828]]+ 1;_0xff22x3< _0xff22x5[_0x2b73[1827]];_0xff22x3++){_0xff22x2[_0xff22x3][_0x2b73[207]](_0xff22x5),_0xff22x5[_0x2b73[1834]](_0xff22x3,_0xff22x2[_0xff22x3][_0x2b73[67]]- 1)}}},_0xff22x4,!1,null)};mxGraphHierarchyModel[_0x2b73[202]][_0x2b73[209]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){if(null!= _0xff22x3){for(var _0xff22x9=0;_0xff22x9< _0xff22x3[_0x2b73[67]];_0xff22x9++){var _0xff22xa=_0xff22x3[_0xff22x9];null!= _0xff22xa&& (null== _0xff22x5&& (_0xff22x5= {}),_0xff22x4?(_0xff22xa[_0x2b73[1839]]= [],_0xff22xa[_0x2b73[1839]][0]= this[_0x2b73[1851]],_0xff22xa[_0x2b73[1839]][1]= _0xff22x9,this[_0x2b73[1855]](null,_0xff22xa,null,_0xff22x2,_0xff22x5,_0xff22xa[_0x2b73[1839]],_0xff22x9,0)):this[_0x2b73[1758]](null,_0xff22xa,null,_0xff22x2,_0xff22x5,0))};this[_0x2b73[1851]]++}};mxGraphHierarchyModel[_0x2b73[202]][_0x2b73[1758]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa){if(null!= _0xff22x3){var _0xff22x12=mxCellPath[_0x2b73[385]](_0xff22x3[_0x2b73[246]]);if(null== _0xff22x9[_0xff22x12]){_0xff22x9[_0xff22x12]= _0xff22x3;_0xff22x5(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22xa,0);_0xff22x2= _0xff22x3[_0x2b73[1838]][_0x2b73[1853]]();for(_0xff22x4= 0;_0xff22x4< _0xff22x2[_0x2b73[67]];_0xff22x4++){_0xff22x12= _0xff22x2[_0xff22x4],this[_0x2b73[1758]](_0xff22x3,_0xff22x12[_0x2b73[772]],_0xff22x12,_0xff22x5,_0xff22x9,_0xff22xa+ 1)}}else {_0xff22x5(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22xa,1)}}};mxGraphHierarchyModel[_0x2b73[202]][_0x2b73[1855]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa,_0xff22x12,_0xff22x13){if(null!= _0xff22x3){if(null!= _0xff22x2&& (null== _0xff22x3[_0x2b73[1839]]|| _0xff22x3[_0x2b73[1839]][0]!= _0xff22x2[_0x2b73[1839]][0])){_0xff22xa= _0xff22x2[_0x2b73[1839]][_0x2b73[67]]+ 1,_0xff22x3[_0x2b73[1839]]= _0xff22x2[_0x2b73[1839]][_0x2b73[1853]](),_0xff22x3[_0x2b73[1839]][_0xff22xa- 1]= _0xff22x12};_0xff22x12= mxCellPath[_0x2b73[385]](_0xff22x3[_0x2b73[246]]);if(null== _0xff22x9[_0xff22x12]){_0xff22x9[_0xff22x12]= _0xff22x3;_0xff22x5(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x13,0);_0xff22x2= _0xff22x3[_0x2b73[1838]][_0x2b73[1853]]();for(_0xff22x4= 0;_0xff22x4< _0xff22x2[_0x2b73[67]];_0xff22x4++){_0xff22x12= _0xff22x2[_0xff22x4],this[_0x2b73[1855]](_0xff22x3,_0xff22x12[_0x2b73[772]],_0xff22x12,_0xff22x5,_0xff22x9,_0xff22x3[_0x2b73[1839]],_0xff22x4,_0xff22x13+ 1)}}else {_0xff22x5(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x13,1)}}};function mxHierarchicalLayoutStage(){}mxHierarchicalLayoutStage[_0x2b73[202]][_0x2b73[350]]= function(_0xff22x2){};function mxMedianHybridCrossingReduction(_0xff22x2){this[_0x2b73[1759]]= _0xff22x2}mxMedianHybridCrossingReduction[_0x2b73[202]]= new mxHierarchicalLayoutStage;mxMedianHybridCrossingReduction[_0x2b73[202]][_0x2b73[196]]= mxMedianHybridCrossingReduction;mxMedianHybridCrossingReduction[_0x2b73[202]][_0x2b73[1759]]= null;mxMedianHybridCrossingReduction[_0x2b73[202]][_0x2b73[1795]]= 24;mxMedianHybridCrossingReduction[_0x2b73[202]][_0x2b73[1856]]= null;mxMedianHybridCrossingReduction[_0x2b73[202]][_0x2b73[1857]]= 0;mxMedianHybridCrossingReduction[_0x2b73[202]][_0x2b73[1858]]= 0;mxMedianHybridCrossingReduction[_0x2b73[202]][_0x2b73[1859]]= 2;mxMedianHybridCrossingReduction[_0x2b73[202]][_0x2b73[350]]= function(_0xff22x2){_0xff22x2= this[_0x2b73[1759]][_0x2b73[502]]();this[_0x2b73[1856]]= [];for(var _0xff22x3=0;_0xff22x3< _0xff22x2[_0x2b73[1850]][_0x2b73[67]];_0xff22x3++){this[_0x2b73[1856]][_0xff22x3]= _0xff22x2[_0x2b73[1850]][_0xff22x3][_0x2b73[1853]]()};for(var _0xff22x4=0,_0xff22x5=this[_0x2b73[1860]](_0xff22x2),_0xff22x3=0;_0xff22x3< this[_0x2b73[1795]]&& _0xff22x4< this[_0x2b73[1859]];_0xff22x3++){this[_0x2b73[1861]](_0xff22x3,_0xff22x2);this[_0x2b73[1862]](_0xff22x3,_0xff22x2);var _0xff22x9=this[_0x2b73[1860]](_0xff22x2);if(_0xff22x9< _0xff22x5){_0xff22x5= _0xff22x9;for(_0xff22x9= _0xff22x4= 0;_0xff22x9< this[_0x2b73[1856]][_0x2b73[67]];_0xff22x9++){for(var _0xff22xa=_0xff22x2[_0x2b73[1850]][_0xff22x9],_0xff22x12=0;_0xff22x12< _0xff22xa[_0x2b73[67]];_0xff22x12++){var _0xff22x13=_0xff22xa[_0xff22x12];this[_0x2b73[1856]][_0xff22x9][_0xff22x13[_0x2b73[1833]](_0xff22x9)]= _0xff22x13}}}else {_0xff22x4++;for(_0xff22x9= 0;_0xff22x9< this[_0x2b73[1856]][_0x2b73[67]];_0xff22x9++){_0xff22xa= _0xff22x2[_0x2b73[1850]][_0xff22x9];for(_0xff22x12= 0;_0xff22x12< _0xff22xa[_0x2b73[67]];_0xff22x12++){_0xff22x13= _0xff22xa[_0xff22x12],_0xff22x13[_0x2b73[1834]](_0xff22x9,_0xff22x12)}}};if(0== _0xff22x5){break}};_0xff22x4= [];_0xff22x5= [];for(_0xff22x3= 0;_0xff22x3< _0xff22x2[_0x2b73[1827]]+ 1;_0xff22x3++){_0xff22x5[_0xff22x3]= [],_0xff22x4[_0xff22x3]= _0xff22x5[_0xff22x3]};for(_0xff22x3= 0;_0xff22x3< this[_0x2b73[1856]][_0x2b73[67]];_0xff22x3++){for(_0xff22x9= 0;_0xff22x9< this[_0x2b73[1856]][_0xff22x3][_0x2b73[67]];_0xff22x9++){_0xff22x5[_0xff22x3][_0x2b73[207]](this[_0x2b73[1856]][_0xff22x3][_0xff22x9])}};_0xff22x2[_0x2b73[1850]]= _0xff22x4};mxMedianHybridCrossingReduction[_0x2b73[202]][_0x2b73[1860]]= function(_0xff22x2){for(var _0xff22x3=_0xff22x2[_0x2b73[1850]][_0x2b73[67]],_0xff22x4=0,_0xff22x5=1;_0xff22x5< _0xff22x3;_0xff22x5++){_0xff22x4+= this[_0x2b73[1863]](_0xff22x5,_0xff22x2)};return _0xff22x4};mxMedianHybridCrossingReduction[_0x2b73[202]][_0x2b73[1863]]= function(_0xff22x2,_0xff22x3){for(var _0xff22x4=0,_0xff22x5=_0xff22x3[_0x2b73[1850]][_0xff22x2],_0xff22x9=_0xff22x5[_0x2b73[67]],_0xff22xa=_0xff22x3[_0x2b73[1850]][_0xff22x2- 1][_0x2b73[67]],_0xff22x12=[],_0xff22x13=0;_0xff22x13< _0xff22x9;_0xff22x13++){_0xff22x12[_0xff22x13]= []};for(_0xff22x13= 0;_0xff22x13< _0xff22x5[_0x2b73[67]];_0xff22x13++){for(var _0xff22x14=_0xff22x5[_0xff22x13],_0xff22x15=_0xff22x14[_0x2b73[1833]](_0xff22x2),_0xff22x16=_0xff22x14[_0x2b73[1832]](_0xff22x2),_0xff22x14=0;_0xff22x14< _0xff22x16[_0x2b73[67]];_0xff22x14++){var _0xff22x17=_0xff22x16[_0xff22x14][_0x2b73[1833]](_0xff22x2- 1);_0xff22x12[_0xff22x15][_0xff22x17]= 201207}};for(_0xff22x13= 0;_0xff22x13< _0xff22x9;_0xff22x13++){for(_0xff22x14= 0;_0xff22x14< _0xff22xa;_0xff22x14++){if(201207== _0xff22x12[_0xff22x13][_0xff22x14]){for(_0xff22x5= _0xff22x13+ 1;_0xff22x5< _0xff22x9;_0xff22x5++){for(_0xff22x15= 0;_0xff22x15< _0xff22x14;_0xff22x15++){201207== _0xff22x12[_0xff22x5][_0xff22x15]&& _0xff22x4++}};for(_0xff22x5= 0;_0xff22x5< _0xff22x13;_0xff22x5++){for(_0xff22x15= _0xff22x14+ 1;_0xff22x15< _0xff22xa;_0xff22x15++){201207== _0xff22x12[_0xff22x5][_0xff22x15]&& _0xff22x4++}}}}};return _0xff22x4/ 2};mxMedianHybridCrossingReduction[_0x2b73[202]][_0x2b73[1862]]= function(_0xff22x2,_0xff22x3){for(var _0xff22x4=!0,_0xff22x5=0;_0xff22x4&& 10> _0xff22x5++;){for(var _0xff22x9=1== _0xff22x2% 2&& 1== _0xff22x5% 2,_0xff22x4=!1,_0xff22xa=0;_0xff22xa< _0xff22x3[_0x2b73[1850]][_0x2b73[67]];_0xff22xa++){for(var _0xff22x12=_0xff22x3[_0x2b73[1850]][_0xff22xa],_0xff22x13=[],_0xff22x14=0;_0xff22x14< _0xff22x12[_0x2b73[67]];_0xff22x14++){var _0xff22x15=_0xff22x12[_0xff22x14],_0xff22x16=_0xff22x15[_0x2b73[1833]](_0xff22xa);0> _0xff22x16&& (_0xff22x16= _0xff22x14);_0xff22x13[_0xff22x16]= _0xff22x15};for(var _0xff22x17=_0xff22x16= _0xff22x15= null,_0xff22x18=null,_0xff22x19=null,_0xff22x1a=null,_0xff22x1b=null,_0xff22x1c=null,_0xff22x1d=null,_0xff22x1e=null,_0xff22x14=0;_0xff22x14< _0xff22x12[_0x2b73[67]]- 1;_0xff22x14++){if(0== _0xff22x14){for(var _0xff22x1d=_0xff22x13[_0xff22x14],_0xff22x15=_0xff22x1d[_0x2b73[1831]](_0xff22xa),_0xff22x16=_0xff22x1d[_0x2b73[1832]](_0xff22xa),_0xff22x19=[],_0xff22x1a=[],_0xff22x1f=0;_0xff22x1f< _0xff22x15[_0x2b73[67]];_0xff22x1f++){_0xff22x19[_0xff22x1f]= _0xff22x15[_0xff22x1f][_0x2b73[1833]](_0xff22xa+ 1)};for(_0xff22x1f= 0;_0xff22x1f< _0xff22x16[_0x2b73[67]];_0xff22x1f++){_0xff22x1a[_0xff22x1f]= _0xff22x16[_0xff22x1f][_0x2b73[1833]](_0xff22xa- 1)}}else {_0xff22x15= _0xff22x17,_0xff22x16= _0xff22x18,_0xff22x19= _0xff22x1b,_0xff22x1a= _0xff22x1c,_0xff22x1d= _0xff22x1e};_0xff22x1e= _0xff22x13[_0xff22x14+ 1];_0xff22x17= _0xff22x1e[_0x2b73[1831]](_0xff22xa);_0xff22x18= _0xff22x1e[_0x2b73[1832]](_0xff22xa);_0xff22x1b= [];_0xff22x1c= [];for(_0xff22x1f= 0;_0xff22x1f< _0xff22x17[_0x2b73[67]];_0xff22x1f++){_0xff22x1b[_0xff22x1f]= _0xff22x17[_0xff22x1f][_0x2b73[1833]](_0xff22xa+ 1)};for(_0xff22x1f= 0;_0xff22x1f< _0xff22x18[_0x2b73[67]];_0xff22x1f++){_0xff22x1c[_0xff22x1f]= _0xff22x18[_0xff22x1f][_0x2b73[1833]](_0xff22xa- 1)};for(var _0xff22x20=0,_0xff22x62=0,_0xff22x1f=0;_0xff22x1f< _0xff22x19[_0x2b73[67]];_0xff22x1f++){for(var _0xff22x63=0;_0xff22x63< _0xff22x1b[_0x2b73[67]];_0xff22x63++){_0xff22x19[_0xff22x1f]> _0xff22x1b[_0xff22x63]&& _0xff22x20++,_0xff22x19[_0xff22x1f]< _0xff22x1b[_0xff22x63]&& _0xff22x62++}};for(_0xff22x1f= 0;_0xff22x1f< _0xff22x1a[_0x2b73[67]];_0xff22x1f++){for(_0xff22x63= 0;_0xff22x63< _0xff22x1c[_0x2b73[67]];_0xff22x63++){_0xff22x1a[_0xff22x1f]> _0xff22x1c[_0xff22x63]&& _0xff22x20++,_0xff22x1a[_0xff22x1f]< _0xff22x1c[_0xff22x63]&& _0xff22x62++}};if(_0xff22x62< _0xff22x20|| _0xff22x62== _0xff22x20&& _0xff22x9){_0xff22x17= _0xff22x1d[_0x2b73[1833]](_0xff22xa),_0xff22x1d[_0x2b73[1834]](_0xff22xa,_0xff22x1e[_0x2b73[1833]](_0xff22xa)),_0xff22x1e[_0x2b73[1834]](_0xff22xa,_0xff22x17),_0xff22x17= _0xff22x15,_0xff22x18= _0xff22x16,_0xff22x1b= _0xff22x19,_0xff22x1c= _0xff22x1a,_0xff22x1e= _0xff22x1d,_0xff22x9|| (_0xff22x4= !0)}}}}};mxMedianHybridCrossingReduction[_0x2b73[202]][_0x2b73[1861]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=0== _0xff22x2% 2;if(_0xff22x4){for(var _0xff22x5=_0xff22x3[_0x2b73[1827]]- 1;0<= _0xff22x5;_0xff22x5--){this[_0x2b73[1864]](_0xff22x5,_0xff22x4)}}else {for(_0xff22x5= 1;_0xff22x5< _0xff22x3[_0x2b73[1827]];_0xff22x5++){this[_0x2b73[1864]](_0xff22x5,_0xff22x4)}}};mxMedianHybridCrossingReduction[_0x2b73[202]][_0x2b73[1864]]= function(_0xff22x2,_0xff22x3){for(var _0xff22x4=this[_0x2b73[1856]][_0xff22x2][_0x2b73[67]],_0xff22x5=[],_0xff22x9=[],_0xff22xa=0;_0xff22xa< _0xff22x4;_0xff22xa++){var _0xff22x12=this[_0x2b73[1856]][_0xff22x2][_0xff22xa],_0xff22x13= new MedianCellSorter;_0xff22x13[_0x2b73[246]]= _0xff22x12;var _0xff22x14;_0xff22x14= _0xff22x3?_0xff22x12[_0x2b73[1831]](_0xff22x2):_0xff22x12[_0x2b73[1832]](_0xff22x2);var _0xff22x15;_0xff22x15= _0xff22x3?_0xff22x2+ 1:_0xff22x2- 1;null!= _0xff22x14&& 0!= _0xff22x14[_0x2b73[67]]?(_0xff22x13[_0x2b73[1865]]= this[_0x2b73[1865]](_0xff22x14,_0xff22x15),_0xff22x5[_0x2b73[207]](_0xff22x13)):_0xff22x9[_0xff22x12[_0x2b73[1833]](_0xff22x2)]= !0};_0xff22x5[_0x2b73[470]](MedianCellSorter[_0x2b73[202]][_0x2b73[469]]);for(_0xff22xa= 0;_0xff22xa< _0xff22x4;_0xff22xa++){null== _0xff22x9[_0xff22xa]&& (_0xff22x12= _0xff22x5[_0x2b73[1115]]()[_0x2b73[246]],_0xff22x12[_0x2b73[1834]](_0xff22x2,_0xff22xa))}};mxMedianHybridCrossingReduction[_0x2b73[202]][_0x2b73[1865]]= function(_0xff22x2,_0xff22x3){for(var _0xff22x4=[],_0xff22x5=0,_0xff22x9=0;_0xff22x9< _0xff22x2[_0x2b73[67]];_0xff22x9++){var _0xff22xa=_0xff22x2[_0xff22x9];_0xff22x4[_0xff22x5++]= _0xff22xa[_0x2b73[1833]](_0xff22x3)};_0xff22x4[_0x2b73[470]](function(_0xff22x2,_0xff22x3){return _0xff22x2- _0xff22x3});if(1== _0xff22x5% 2){return _0xff22x4[Math[_0x2b73[519]](_0xff22x5/ 2)]};if(2== _0xff22x5){return (_0xff22x4[0]+ _0xff22x4[1])/ 2};_0xff22x9= _0xff22x5/ 2;_0xff22xa= _0xff22x4[_0xff22x9- 1]- _0xff22x4[0];_0xff22x5= _0xff22x4[_0xff22x5- 1]- _0xff22x4[_0xff22x9];return (_0xff22x4[_0xff22x9- 1]* _0xff22x5+ _0xff22x4[_0xff22x9]* _0xff22xa)/ (_0xff22xa+ _0xff22x5)};function MedianCellSorter(){}MedianCellSorter[_0x2b73[202]][_0x2b73[1865]]= 0;MedianCellSorter[_0x2b73[202]][_0x2b73[246]]= !1;MedianCellSorter[_0x2b73[202]][_0x2b73[469]]= function(_0xff22x2,_0xff22x3){return null!= _0xff22x2&& null!= _0xff22x3?_0xff22x3[_0x2b73[1865]]> _0xff22x2[_0x2b73[1865]]?-1:_0xff22x3[_0x2b73[1865]]< _0xff22x2[_0x2b73[1865]]?1:0:0};function mxMinimumCycleRemover(_0xff22x2){this[_0x2b73[1759]]= _0xff22x2}mxMinimumCycleRemover[_0x2b73[202]]= new mxHierarchicalLayoutStage;mxMinimumCycleRemover[_0x2b73[202]][_0x2b73[196]]= mxMinimumCycleRemover;mxMinimumCycleRemover[_0x2b73[202]][_0x2b73[1759]]= null;mxMinimumCycleRemover[_0x2b73[202]][_0x2b73[350]]= function(_0xff22x2){var _0xff22x3=this[_0x2b73[1759]][_0x2b73[502]](),_0xff22x4={},_0xff22x5=mxUtils[_0x2b73[238]](_0xff22x3[_0x2b73[1846]],null,!0),_0xff22x9=null;if(null!= _0xff22x3[_0x2b73[1845]]){var _0xff22xa=_0xff22x3[_0x2b73[1845]],_0xff22x9=[];for(_0xff22x2= 0;_0xff22x2< _0xff22xa[_0x2b73[67]];_0xff22x2++){var _0xff22x12=mxCellPath[_0x2b73[385]](_0xff22xa[_0xff22x2]);_0xff22x9[_0xff22x2]= _0xff22x3[_0x2b73[1846]][_0xff22x12]}};_0xff22x3[_0x2b73[209]](function(_0xff22x2,_0xff22x3,_0xff22x9,_0xff22xa,_0xff22x12){_0xff22x3[_0x2b73[1720]](_0xff22x2)&& (_0xff22x9[_0x2b73[1744]](),mxUtils[_0x2b73[205]](_0xff22x9,_0xff22x2[_0x2b73[1838]]),_0xff22x2[_0x2b73[1837]][_0x2b73[207]](_0xff22x9),mxUtils[_0x2b73[205]](_0xff22x9,_0xff22x3[_0x2b73[1837]]),_0xff22x3[_0x2b73[1838]][_0x2b73[207]](_0xff22x9));_0xff22x2= mxCellPath[_0x2b73[385]](_0xff22x3[_0x2b73[246]]);_0xff22x4[_0xff22x2]= _0xff22x3;delete _0xff22x5[_0xff22x2]},_0xff22x9,!0,null);_0xff22x9= null;0< _0xff22x5[_0x2b73[1866]]&& (_0xff22x9= mxUtils[_0x2b73[238]](_0xff22x5,null,!0));_0xff22x2= mxUtils[_0x2b73[238]](_0xff22x4,null,!0);_0xff22x3[_0x2b73[209]](function(_0xff22x2,_0xff22x3,_0xff22x9,_0xff22xa,_0xff22x12){_0xff22x3[_0x2b73[1720]](_0xff22x2)&& (_0xff22x9[_0x2b73[1744]](),mxUtils[_0x2b73[205]](_0xff22x9,_0xff22x2[_0x2b73[1838]]),_0xff22x3[_0x2b73[1838]][_0x2b73[207]](_0xff22x9),_0xff22x2[_0x2b73[1837]][_0x2b73[207]](_0xff22x9),mxUtils[_0x2b73[205]](_0xff22x9,_0xff22x3[_0x2b73[1837]]));_0xff22x2= mxCellPath[_0x2b73[385]](_0xff22x3[_0x2b73[246]]);_0xff22x4[_0xff22x2]= _0xff22x3;delete _0xff22x5[_0xff22x2]},_0xff22x5,!0,_0xff22x2);_0xff22xa= this[_0x2b73[1759]][_0x2b73[1703]]();if(null!= _0xff22x9&& 0< _0xff22x9[_0x2b73[67]]){_0xff22x3= _0xff22x3[_0x2b73[1845]];for(_0xff22x2= 0;_0xff22x2< _0xff22x9[_0x2b73[67]];_0xff22x2++){_0xff22x12= _0xff22x9[_0xff22x2][_0x2b73[246]],0== _0xff22xa[_0x2b73[1867]](_0xff22x12)[_0x2b73[67]]&& _0xff22x3[_0x2b73[207]](_0xff22x12)}}};function mxCoordinateAssignment(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa){this[_0x2b73[1759]]= _0xff22x2;this[_0x2b73[1868]]= _0xff22x3;this[_0x2b73[1869]]= _0xff22x4;this[_0x2b73[1870]]= _0xff22x5;this[_0x2b73[1871]]= _0xff22x9;this[_0x2b73[1872]]= _0xff22xa}var mxHierarchicalEdgeStyle={ORTHOGONAL:1,POLYLINE:2,STRAIGHT:3,CURVE:4};mxCoordinateAssignment[_0x2b73[202]]= new mxHierarchicalLayoutStage;mxCoordinateAssignment[_0x2b73[202]][_0x2b73[196]]= mxCoordinateAssignment;mxCoordinateAssignment[_0x2b73[202]][_0x2b73[1759]]= null;mxCoordinateAssignment[_0x2b73[202]][_0x2b73[1868]]= 30;mxCoordinateAssignment[_0x2b73[202]][_0x2b73[1869]]= 100;mxCoordinateAssignment[_0x2b73[202]][_0x2b73[1872]]= 10;mxCoordinateAssignment[_0x2b73[202]][_0x2b73[1795]]= 8;mxCoordinateAssignment[_0x2b73[202]][_0x2b73[1751]]= 5;mxCoordinateAssignment[_0x2b73[202]][_0x2b73[1752]]= 2;mxCoordinateAssignment[_0x2b73[202]][_0x2b73[1753]]= 12;mxCoordinateAssignment[_0x2b73[202]][_0x2b73[1754]]= 4;mxCoordinateAssignment[_0x2b73[202]][_0x2b73[1873]]= null;mxCoordinateAssignment[_0x2b73[202]][_0x2b73[1870]]= mxConstants[_0x2b73[1358]];mxCoordinateAssignment[_0x2b73[202]][_0x2b73[1871]]= null;mxCoordinateAssignment[_0x2b73[202]][_0x2b73[1874]]= null;mxCoordinateAssignment[_0x2b73[202]][_0x2b73[1875]]= null;mxCoordinateAssignment[_0x2b73[202]][_0x2b73[1876]]= null;mxCoordinateAssignment[_0x2b73[202]][_0x2b73[1877]]= null;mxCoordinateAssignment[_0x2b73[202]][_0x2b73[1878]]= null;mxCoordinateAssignment[_0x2b73[202]][_0x2b73[1879]]= null;mxCoordinateAssignment[_0x2b73[202]][_0x2b73[1880]]= null;mxCoordinateAssignment[_0x2b73[202]][_0x2b73[1881]]= null;mxCoordinateAssignment[_0x2b73[202]][_0x2b73[1882]]= !0;mxCoordinateAssignment[_0x2b73[202]][_0x2b73[675]]= mxHierarchicalEdgeStyle[_0x2b73[1883]];mxCoordinateAssignment[_0x2b73[202]][_0x2b73[1884]]= null;mxCoordinateAssignment[_0x2b73[202]][_0x2b73[1885]]= null;mxCoordinateAssignment[_0x2b73[202]][_0x2b73[1745]]= 10;mxCoordinateAssignment[_0x2b73[202]][_0x2b73[1886]]= function(){var _0xff22x2=this[_0x2b73[1759]][_0x2b73[502]]();mxLog[_0x2b73[539]]();mxLog[_0x2b73[171]](_0x2b73[1887]);for(var _0xff22x3=0;_0xff22x3< _0xff22x2[_0x2b73[1850]][_0x2b73[67]];_0xff22x3++){mxLog[_0x2b73[53]](_0x2b73[1888],_0xff22x3,_0x2b73[1889]);for(var _0xff22x4=_0xff22x2[_0x2b73[1850]][_0xff22x3],_0xff22x5=0;_0xff22x5< _0xff22x4[_0x2b73[67]];_0xff22x5++){mxLog[_0x2b73[53]](_0xff22x4[_0xff22x5][_0x2b73[1833]](_0xff22x3),_0x2b73[316])};mxLog[_0x2b73[171]]()};mxLog[_0x2b73[171]](_0x2b73[1890])};mxCoordinateAssignment[_0x2b73[202]][_0x2b73[350]]= function(_0xff22x2){this[_0x2b73[1873]]= [];_0xff22x2= this[_0x2b73[1759]][_0x2b73[502]]();this[_0x2b73[1875]]= 0;this[_0x2b73[1891]](this[_0x2b73[1759]][_0x2b73[1703]](),_0xff22x2);this[_0x2b73[1882]]&& this[_0x2b73[1892]](_0xff22x2);var _0xff22x3=1E8;if(this[_0x2b73[1882]]){for(var _0xff22x4=0;_0xff22x4< this[_0x2b73[1795]];_0xff22x4++){0!= _0xff22x4&& (this[_0x2b73[1893]](_0xff22x4,_0xff22x2),this[_0x2b73[1892]](_0xff22x2));if(this[_0x2b73[1875]]< _0xff22x3){for(var _0xff22x5=0;_0xff22x5< _0xff22x2[_0x2b73[1850]][_0x2b73[67]];_0xff22x5++){for(var _0xff22x9=_0xff22x2[_0x2b73[1850]][_0xff22x5],_0xff22xa=0;_0xff22xa< _0xff22x9[_0x2b73[67]];_0xff22xa++){var _0xff22x12=_0xff22x9[_0xff22xa];_0xff22x12[_0x2b73[1835]](_0xff22x5,_0xff22x12[_0x2b73[1833]](_0xff22x5))}};_0xff22x3= this[_0x2b73[1875]]}else {for(_0xff22x5= 0;_0xff22x5< _0xff22x2[_0x2b73[1850]][_0x2b73[67]];_0xff22x5++){_0xff22x9= _0xff22x2[_0x2b73[1850]][_0xff22x5];for(_0xff22xa= 0;_0xff22xa< _0xff22x9[_0x2b73[67]];_0xff22xa++){_0xff22x12= _0xff22x9[_0xff22xa],_0xff22x12[_0x2b73[1834]](_0xff22x5,_0xff22x12[_0x2b73[730]](_0xff22x5))}}};this[_0x2b73[1894]](this[_0x2b73[1759]][_0x2b73[1703]](),_0xff22x2);this[_0x2b73[1875]]= 0}};this[_0x2b73[1895]](this[_0x2b73[1759]][_0x2b73[1703]](),_0xff22x2)};mxCoordinateAssignment[_0x2b73[202]][_0x2b73[1892]]= function(_0xff22x2){for(var _0xff22x3=[],_0xff22x4=[],_0xff22x5=[],_0xff22x9=0;_0xff22x9<= _0xff22x2[_0x2b73[1827]];_0xff22x9++){_0xff22x5[_0xff22x9]= _0xff22x2[_0x2b73[1850]][_0xff22x9];for(var _0xff22xa=0;_0xff22xa< _0xff22x5[_0xff22x9][_0x2b73[67]];_0xff22xa++){var _0xff22x12=_0xff22x5[_0xff22x9][_0xff22xa],_0xff22x13= new WeightedCellSorter(_0xff22x12,_0xff22x9);_0xff22x13[_0x2b73[1785]]= _0xff22xa;_0xff22x13[_0x2b73[1784]]= !0;_0xff22x3[_0x2b73[207]](_0xff22x13);_0xff22x12= mxCellPath[_0x2b73[385]](_0xff22x12[_0x2b73[1841]]());_0xff22x4[_0xff22x12]= _0xff22x13}};_0xff22x2= 10* _0xff22x3[_0x2b73[67]];for(_0xff22xa= 0;0< _0xff22x3[_0x2b73[67]]&& _0xff22xa<= _0xff22x2;){var _0xff22x13=_0xff22x3[_0x2b73[1115]](),_0xff22x9=_0xff22x13[_0x2b73[246]],_0xff22x14=_0xff22x13[_0x2b73[1782]],_0xff22x15=parseInt(_0xff22x13[_0x2b73[1785]]),_0xff22x12=_0xff22x9[_0x2b73[1831]](_0xff22x14),_0xff22x16=_0xff22x9[_0x2b73[1832]](_0xff22x14),_0xff22x17=_0xff22x12[_0x2b73[67]],_0xff22x18=_0xff22x16[_0x2b73[67]],_0xff22x19=this[_0x2b73[1896]](_0xff22x12,_0xff22x14+ 1),_0xff22x1a=this[_0x2b73[1896]](_0xff22x16,_0xff22x14- 1),_0xff22x1b=_0xff22x17+ _0xff22x18,_0xff22x1c=_0xff22x9[_0x2b73[1833]](_0xff22x14),_0xff22x1d=_0xff22x1c;0< _0xff22x1b&& (_0xff22x1d= (_0xff22x19* _0xff22x17+ _0xff22x1a* _0xff22x18)/ _0xff22x1b);_0xff22x17= !1;_0xff22x1d< _0xff22x1c- 1?0== _0xff22x15?(_0xff22x9[_0x2b73[1834]](_0xff22x14,_0xff22x1d),_0xff22x17= !0):(_0xff22x15= _0xff22x5[_0xff22x14][_0xff22x15- 1],_0xff22x1c= _0xff22x15[_0x2b73[1833]](_0xff22x14),_0xff22x1c= _0xff22x1c+ _0xff22x15[_0x2b73[117]]/ 2+ this[_0x2b73[1868]]+ _0xff22x9[_0x2b73[117]]/ 2,_0xff22x1c< _0xff22x1d?(_0xff22x9[_0x2b73[1834]](_0xff22x14,_0xff22x1d),_0xff22x17= !0):_0xff22x1c< _0xff22x9[_0x2b73[1833]](_0xff22x14)- 1&& (_0xff22x9[_0x2b73[1834]](_0xff22x14,_0xff22x1c),_0xff22x17= !0)):_0xff22x1d> _0xff22x1c+ 1&& (_0xff22x15== _0xff22x5[_0xff22x14][_0x2b73[67]]- 1?(_0xff22x9[_0x2b73[1834]](_0xff22x14,_0xff22x1d),_0xff22x17= !0):(_0xff22x15= _0xff22x5[_0xff22x14][_0xff22x15+ 1],_0xff22x1c= _0xff22x15[_0x2b73[1833]](_0xff22x14),_0xff22x1c= _0xff22x1c- _0xff22x15[_0x2b73[117]]/ 2- this[_0x2b73[1868]]- _0xff22x9[_0x2b73[117]]/ 2,_0xff22x1c> _0xff22x1d?(_0xff22x9[_0x2b73[1834]](_0xff22x14,_0xff22x1d),_0xff22x17= !0):_0xff22x1c> _0xff22x9[_0x2b73[1833]](_0xff22x14)+ 1&& (_0xff22x9[_0x2b73[1834]](_0xff22x14,_0xff22x1c),_0xff22x17= !0)));if(_0xff22x17){for(_0xff22x9= 0;_0xff22x9< _0xff22x12[_0x2b73[67]];_0xff22x9++){_0xff22x14= _0xff22x12[_0xff22x9],_0xff22x14= mxCellPath[_0x2b73[385]](_0xff22x14[_0x2b73[1841]]()),_0xff22x14= _0xff22x4[_0xff22x14],null!= _0xff22x14&& !1== _0xff22x14[_0x2b73[1784]]&& (_0xff22x14[_0x2b73[1784]]= !0,_0xff22x3[_0x2b73[207]](_0xff22x14))};for(_0xff22x9= 0;_0xff22x9< _0xff22x16[_0x2b73[67]];_0xff22x9++){_0xff22x14= _0xff22x16[_0xff22x9],_0xff22x14= mxCellPath[_0x2b73[385]](_0xff22x14[_0x2b73[1841]]()),_0xff22x14= _0xff22x4[_0xff22x14],null!= _0xff22x14&& !1== _0xff22x14[_0x2b73[1784]]&& (_0xff22x14[_0x2b73[1784]]= !0,_0xff22x3[_0x2b73[207]](_0xff22x14))}};_0xff22x13[_0x2b73[1784]]= !1;_0xff22xa++}};mxCoordinateAssignment[_0x2b73[202]][_0x2b73[1893]]= function(_0xff22x2,_0xff22x3){if(0== _0xff22x2% 2){for(var _0xff22x4=_0xff22x3[_0x2b73[1827]];0< _0xff22x4;_0xff22x4--){this[_0x2b73[1897]](_0xff22x4- 1,_0xff22x3,_0xff22x4)}}else {for(_0xff22x4= 0;_0xff22x4< _0xff22x3[_0x2b73[1827]]- 1;_0xff22x4++){this[_0x2b73[1897]](_0xff22x4+ 1,_0xff22x3,_0xff22x4)}}};mxCoordinateAssignment[_0x2b73[202]][_0x2b73[1897]]= function(_0xff22x2,_0xff22x3,_0xff22x4){_0xff22x3= _0xff22x3[_0x2b73[1850]][_0xff22x2];for(var _0xff22x5=[],_0xff22x9=[],_0xff22xa=0;_0xff22xa< _0xff22x3[_0x2b73[67]];_0xff22xa++){var _0xff22x12=_0xff22x3[_0xff22xa];_0xff22x5[_0xff22xa]= new WeightedCellSorter;_0xff22x5[_0xff22xa][_0x2b73[246]]= _0xff22x12;_0xff22x5[_0xff22xa][_0x2b73[1785]]= _0xff22xa;var _0xff22x13=mxCellPath[_0x2b73[385]](_0xff22x12[_0x2b73[1841]]());_0xff22x9[_0xff22x13]= _0xff22x5[_0xff22xa];var _0xff22x14=null,_0xff22x14=_0xff22x4< _0xff22x2?_0xff22x12[_0x2b73[1832]](_0xff22x2):_0xff22x12[_0x2b73[1831]](_0xff22x2);_0xff22x5[_0xff22xa][_0x2b73[1782]]= this[_0x2b73[1898]](_0xff22x12,_0xff22x14)};_0xff22x5[_0x2b73[470]](WeightedCellSorter[_0x2b73[202]][_0x2b73[469]]);for(_0xff22xa= 0;_0xff22xa< _0xff22x5[_0x2b73[67]];_0xff22xa++){_0xff22x13= 0;_0xff22x12= _0xff22x5[_0xff22xa][_0x2b73[246]];_0xff22x13= 0;_0xff22x14= _0xff22x4< _0xff22x2?_0xff22x12[_0x2b73[1832]](_0xff22x2)[_0x2b73[1853]]():_0xff22x12[_0x2b73[1831]](_0xff22x2)[_0x2b73[1853]]();null!= _0xff22x14&& (_0xff22x13= _0xff22x14[_0x2b73[67]],_0xff22x13= 0< _0xff22x13?this[_0x2b73[1896]](_0xff22x14,_0xff22x4):_0xff22x12[_0x2b73[1833]](_0xff22x2));for(var _0xff22x15=0,_0xff22x14=-1E8,_0xff22x16=_0xff22x5[_0xff22xa][_0x2b73[1785]]- 1;0<= _0xff22x16;){var _0xff22x17=mxCellPath[_0x2b73[385]](_0xff22x3[_0xff22x16][_0x2b73[1841]]()),_0xff22x17=_0xff22x9[_0xff22x17];if(null!= _0xff22x17){var _0xff22x18=_0xff22x17[_0x2b73[246]];_0xff22x17[_0x2b73[1784]]?(_0xff22x14= _0xff22x18[_0x2b73[1833]](_0xff22x2)+ _0xff22x18[_0x2b73[117]]/ 2+ this[_0x2b73[1868]]+ _0xff22x15+ _0xff22x12[_0x2b73[117]]/ 2,_0xff22x16= -1):(_0xff22x15+= _0xff22x18[_0x2b73[117]]+ this[_0x2b73[1868]],_0xff22x16--)}};_0xff22x15= 0;_0xff22x18= 1E8;for(_0xff22x16= _0xff22x5[_0xff22xa][_0x2b73[1785]]+ 1;_0xff22x16< _0xff22x5[_0x2b73[67]];){if(_0xff22x17= mxCellPath[_0x2b73[385]](_0xff22x3[_0xff22x16][_0x2b73[1841]]()),_0xff22x17= _0xff22x9[_0xff22x17],null!= _0xff22x17){var _0xff22x19=_0xff22x17[_0x2b73[246]];_0xff22x17[_0x2b73[1784]]?(_0xff22x18= _0xff22x19[_0x2b73[1833]](_0xff22x2)- _0xff22x19[_0x2b73[117]]/ 2- this[_0x2b73[1868]]- _0xff22x15- _0xff22x12[_0x2b73[117]]/ 2,_0xff22x16= _0xff22x5[_0x2b73[67]]):(_0xff22x15+= _0xff22x19[_0x2b73[117]]+ this[_0x2b73[1868]],_0xff22x16++)}};_0xff22x13>= _0xff22x14&& _0xff22x13<= _0xff22x18?_0xff22x12[_0x2b73[1834]](_0xff22x2,_0xff22x13):_0xff22x13< _0xff22x14?(_0xff22x12[_0x2b73[1834]](_0xff22x2,_0xff22x14),this[_0x2b73[1875]]+= _0xff22x14- _0xff22x13):_0xff22x13> _0xff22x18&& (_0xff22x12[_0x2b73[1834]](_0xff22x2,_0xff22x18),this[_0x2b73[1875]]+= _0xff22x13- _0xff22x18);_0xff22x5[_0xff22xa][_0x2b73[1784]]= !0}};mxCoordinateAssignment[_0x2b73[202]][_0x2b73[1898]]= function(_0xff22x2,_0xff22x3){for(var _0xff22x4=0,_0xff22x5=0;_0xff22x5< _0xff22x3[_0x2b73[67]];_0xff22x5++){var _0xff22x9=_0xff22x3[_0xff22x5];_0xff22x2[_0x2b73[1193]]()&& _0xff22x9[_0x2b73[1193]]()?_0xff22x4++:_0xff22x4= _0xff22x2[_0x2b73[250]]()&& _0xff22x9[_0x2b73[250]]()?_0xff22x4+ 8:_0xff22x4+ 2};return _0xff22x4};mxCoordinateAssignment[_0x2b73[202]][_0x2b73[1896]]= function(_0xff22x2,_0xff22x3){if(0== _0xff22x2[_0x2b73[67]]){return 0};for(var _0xff22x4=[],_0xff22x5=0;_0xff22x5< _0xff22x2[_0x2b73[67]];_0xff22x5++){_0xff22x4[_0xff22x5]= _0xff22x2[_0xff22x5][_0x2b73[1833]](_0xff22x3)};_0xff22x4[_0x2b73[470]](function(_0xff22x2,_0xff22x3){return _0xff22x2- _0xff22x3});if(1== _0xff22x2[_0x2b73[67]]% 2){return _0xff22x4[Math[_0x2b73[519]](_0xff22x2[_0x2b73[67]]/ 2)]};_0xff22x5= _0xff22x2[_0x2b73[67]]/ 2;return (_0xff22x4[_0xff22x5- 1]+ _0xff22x4[_0xff22x5])/ 2};mxCoordinateAssignment[_0x2b73[202]][_0x2b73[1891]]= function(_0xff22x2,_0xff22x3){this[_0x2b73[1899]](_0xff22x2,_0xff22x3);for(var _0xff22x4=this[_0x2b73[1876]];0<= _0xff22x4;_0xff22x4--){_0xff22x4< _0xff22x3[_0x2b73[1827]]&& this[_0x2b73[1900]](_0xff22x4,_0xff22x2,_0xff22x3)};for(_0xff22x4= this[_0x2b73[1876]]+ 1;_0xff22x4<= _0xff22x3[_0x2b73[1827]];_0xff22x4++){0< _0xff22x4&& this[_0x2b73[1900]](_0xff22x4,_0xff22x2,_0xff22x3)}};mxCoordinateAssignment[_0x2b73[202]][_0x2b73[1900]]= function(_0xff22x2,_0xff22x3,_0xff22x4){_0xff22x3= _0xff22x4[_0x2b73[1850]][_0xff22x2];_0xff22x4= 0;for(var _0xff22x5=this[_0x2b73[1871]]+ (this[_0x2b73[1879]]- this[_0x2b73[1880]][_0xff22x2])/ 2,_0xff22x9=!1,_0xff22xa=0;_0xff22xa< _0xff22x3[_0x2b73[67]];_0xff22xa++){var _0xff22x12=_0xff22x3[_0xff22xa];if(_0xff22x12[_0x2b73[1193]]()){var _0xff22x13=this[_0x2b73[1759]][_0x2b73[1726]](_0xff22x12[_0x2b73[246]]);null!= _0xff22x13?this[_0x2b73[1870]]== mxConstants[_0x2b73[1358]]|| this[_0x2b73[1870]]== mxConstants[_0x2b73[1354]]?(_0xff22x12[_0x2b73[117]]= _0xff22x13[_0x2b73[117]],_0xff22x12[_0x2b73[119]]= _0xff22x13[_0x2b73[119]]):(_0xff22x12[_0x2b73[117]]= _0xff22x13[_0x2b73[119]],_0xff22x12[_0x2b73[119]]= _0xff22x13[_0x2b73[117]]):_0xff22x9= !0;_0xff22x4= Math[_0x2b73[160]](_0xff22x4,_0xff22x12[_0x2b73[119]])}else {_0xff22x12[_0x2b73[250]]()&& (_0xff22x13= 1,null!= _0xff22x12[_0x2b73[1842]]?_0xff22x13= _0xff22x12[_0x2b73[1842]][_0x2b73[67]]:mxLog[_0x2b73[283]](_0x2b73[1901]),_0xff22x12[_0x2b73[117]]= (_0xff22x13- 1)* this[_0x2b73[1872]])};_0xff22x5+= _0xff22x12[_0x2b73[117]]/ 2;_0xff22x12[_0x2b73[1835]](_0xff22x2,_0xff22x5);_0xff22x12[_0x2b73[1834]](_0xff22x2,_0xff22x5);_0xff22x5+= _0xff22x12[_0x2b73[117]]/ 2;_0xff22x5+= this[_0x2b73[1868]]};!0== _0xff22x9&& mxLog[_0x2b73[283]](_0x2b73[1902])};mxCoordinateAssignment[_0x2b73[202]][_0x2b73[1899]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=-this[_0x2b73[1869]],_0xff22x5=0;this[_0x2b73[1880]]= [];this[_0x2b73[1881]]= [];for(var _0xff22x9=_0xff22x3[_0x2b73[1827]];0<= _0xff22x9;_0xff22x9--){for(var _0xff22xa=0,_0xff22x12=_0xff22x3[_0x2b73[1850]][_0xff22x9],_0xff22x13=this[_0x2b73[1871]],_0xff22x14=!1,_0xff22x15=0;_0xff22x15< _0xff22x12[_0x2b73[67]];_0xff22x15++){var _0xff22x16=_0xff22x12[_0xff22x15];if(_0xff22x16[_0x2b73[1193]]()){var _0xff22x17=this[_0x2b73[1759]][_0x2b73[1726]](_0xff22x16[_0x2b73[246]]);null!= _0xff22x17?this[_0x2b73[1870]]== mxConstants[_0x2b73[1358]]|| this[_0x2b73[1870]]== mxConstants[_0x2b73[1354]]?(_0xff22x16[_0x2b73[117]]= _0xff22x17[_0x2b73[117]],_0xff22x16[_0x2b73[119]]= _0xff22x17[_0x2b73[119]]):(_0xff22x16[_0x2b73[117]]= _0xff22x17[_0x2b73[119]],_0xff22x16[_0x2b73[119]]= _0xff22x17[_0x2b73[117]]):_0xff22x14= !0;_0xff22xa= Math[_0x2b73[160]](_0xff22xa,_0xff22x16[_0x2b73[119]])}else {_0xff22x16[_0x2b73[250]]()&& (_0xff22x17= 1,null!= _0xff22x16[_0x2b73[1842]]?_0xff22x17= _0xff22x16[_0x2b73[1842]][_0x2b73[67]]:mxLog[_0x2b73[283]](_0x2b73[1901]),_0xff22x16[_0x2b73[117]]= (_0xff22x17- 1)* this[_0x2b73[1872]])};_0xff22x13+= _0xff22x16[_0x2b73[117]]/ 2;_0xff22x16[_0x2b73[1835]](_0xff22x9,_0xff22x13);_0xff22x16[_0x2b73[1834]](_0xff22x9,_0xff22x13);_0xff22x13+= _0xff22x16[_0x2b73[117]]/ 2;_0xff22x13+= this[_0x2b73[1868]];_0xff22x13> this[_0x2b73[1879]]&& (this[_0x2b73[1879]]= _0xff22x13,this[_0x2b73[1876]]= _0xff22x9);this[_0x2b73[1880]][_0xff22x9]= _0xff22x13};!0== _0xff22x14&& mxLog[_0x2b73[283]](_0x2b73[1902]);this[_0x2b73[1881]][_0xff22x9]= _0xff22x4;_0xff22x13= _0xff22xa/ 2+ _0xff22x5/ 2+ this[_0x2b73[1869]];_0xff22x5= _0xff22xa;_0xff22x4= this[_0x2b73[1870]]== mxConstants[_0x2b73[1358]]|| this[_0x2b73[1870]]== mxConstants[_0x2b73[1359]]?_0xff22x4+ _0xff22x13:_0xff22x4- _0xff22x13;for(_0xff22x15= 0;_0xff22x15< _0xff22x12[_0x2b73[67]];_0xff22x15++){_0xff22x12[_0xff22x15][_0x2b73[1836]](_0xff22x9,_0xff22x4)}}};mxCoordinateAssignment[_0x2b73[202]][_0x2b73[1894]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=_0xff22x3[_0x2b73[1847]],_0xff22x5;for(_0xff22x5 in _0xff22x4){var _0xff22x9=_0xff22x4[_0xff22x5];if(!(1> _0xff22x9[_0x2b73[1827]]- _0xff22x9[_0x2b73[1828]]- 1)){for(var _0xff22xa=_0xff22x9[_0x2b73[1833]](_0xff22x9[_0x2b73[1828]]+ 1),_0xff22x12=!0,_0xff22x13=0,_0xff22x14=_0xff22x9[_0x2b73[1828]]+ 2;_0xff22x14< _0xff22x9[_0x2b73[1827]];_0xff22x14++){var _0xff22x15=_0xff22x9[_0x2b73[1833]](_0xff22x14);_0xff22xa!= _0xff22x15?(_0xff22x12= !1,_0xff22xa= _0xff22x15):_0xff22x13++};if(!_0xff22x12){for(var _0xff22x12=_0xff22xa= 0,_0xff22x15=[],_0xff22x16=[],_0xff22x17=_0xff22x9[_0x2b73[1833]](_0xff22x9[_0x2b73[1828]]+ 1),_0xff22x14=_0xff22x9[_0x2b73[1828]]+ 1;_0xff22x14< _0xff22x9[_0x2b73[1827]]- 1;_0xff22x14++){var _0xff22x18=_0xff22x9[_0x2b73[730]](_0xff22x14+ 1);_0xff22x17== _0xff22x18?(_0xff22x15[_0xff22x14- _0xff22x9[_0x2b73[1828]]- 1]= _0xff22x17,_0xff22xa++):this[_0x2b73[1903]](_0xff22x3,_0xff22x9,_0xff22x14+ 1,_0xff22x17)?(_0xff22x15[_0xff22x14- _0xff22x9[_0x2b73[1828]]- 1]= _0xff22x17,_0xff22xa++):_0xff22x17= _0xff22x15[_0xff22x14- _0xff22x9[_0x2b73[1828]]- 1]= _0xff22x18};_0xff22x17= _0xff22x9[_0x2b73[730]](_0xff22x14);for(_0xff22x14= _0xff22x9[_0x2b73[1827]]- 1;_0xff22x14> _0xff22x9[_0x2b73[1828]]+ 1;_0xff22x14--){_0xff22x18= _0xff22x9[_0x2b73[730]](_0xff22x14- 1),_0xff22x17== _0xff22x18?(_0xff22x16[_0xff22x14- _0xff22x9[_0x2b73[1828]]- 2]= _0xff22x17,_0xff22x12++):this[_0x2b73[1903]](_0xff22x3,_0xff22x9,_0xff22x14- 1,_0xff22x17)?(_0xff22x16[_0xff22x14- _0xff22x9[_0x2b73[1828]]- 2]= _0xff22x17,_0xff22x12++):(_0xff22x16[_0xff22x14- _0xff22x9[_0x2b73[1828]]- 2]= _0xff22x9[_0x2b73[730]](_0xff22x14- 1),_0xff22x17= _0xff22x18)};if(_0xff22x12> _0xff22x13|| _0xff22xa> _0xff22x13){if(_0xff22x12>= _0xff22xa){for(_0xff22x14= _0xff22x9[_0x2b73[1827]]- 2;_0xff22x14> _0xff22x9[_0x2b73[1828]];_0xff22x14--){_0xff22x9[_0x2b73[1835]](_0xff22x14,_0xff22x16[_0xff22x14- _0xff22x9[_0x2b73[1828]]- 1])}}else {if(_0xff22xa> _0xff22x12){for(_0xff22x14= _0xff22x9[_0x2b73[1828]]+ 2;_0xff22x14< _0xff22x9[_0x2b73[1827]];_0xff22x14++){_0xff22x9[_0x2b73[1835]](_0xff22x14,_0xff22x15[_0xff22x14- _0xff22x9[_0x2b73[1828]]- 2])}}}}}}}};mxCoordinateAssignment[_0x2b73[202]][_0x2b73[1903]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){_0xff22x2= _0xff22x2[_0x2b73[1850]][_0xff22x4];for(var _0xff22x9=-1,_0xff22xa=0;_0xff22xa< _0xff22x2[_0x2b73[67]];_0xff22xa++){if(_0xff22x3== _0xff22x2[_0xff22xa]){_0xff22x9= _0xff22xa;break}};if(0> _0xff22x9){return !1};_0xff22xa= _0xff22x3[_0x2b73[1833]](_0xff22x4);if(_0xff22x5< _0xff22xa){if(0== _0xff22x9){return !0};_0xff22x2= _0xff22x2[_0xff22x9- 1];_0xff22x4= _0xff22x2[_0x2b73[1833]](_0xff22x4);_0xff22x4= _0xff22x4+ _0xff22x2[_0x2b73[117]]/ 2+ this[_0x2b73[1868]]+ _0xff22x3[_0x2b73[117]]/ 2;if(!(_0xff22x4<= _0xff22x5)){return !1}}else {if(_0xff22x5> _0xff22xa){if(_0xff22x9== _0xff22x2[_0x2b73[67]]- 1){return !0};_0xff22x2= _0xff22x2[_0xff22x9+ 1];_0xff22x4= _0xff22x2[_0x2b73[1833]](_0xff22x4);_0xff22x4= _0xff22x4- _0xff22x2[_0x2b73[117]]/ 2- this[_0x2b73[1868]]- _0xff22x3[_0x2b73[117]]/ 2;if(!(_0xff22x4>= _0xff22x5)){return !1}}};return !0};mxCoordinateAssignment[_0x2b73[202]][_0x2b73[1895]]= function(_0xff22x2,_0xff22x3){this[_0x2b73[1877]]= [];this[_0x2b73[1878]]= [];for(var _0xff22x4=0;_0xff22x4< _0xff22x3[_0x2b73[1850]][_0x2b73[67]];_0xff22x4++){this[_0x2b73[1877]][_0xff22x4]= Number[_0x2b73[1904]],this[_0x2b73[1878]][_0xff22x4]= 0};_0xff22x4= null;this[_0x2b73[1759]][_0x2b73[1735]]&& (_0xff22x4= {});var _0xff22x5=_0xff22x3[_0x2b73[1847]],_0xff22x9=_0xff22x3[_0x2b73[1846]],_0xff22xa;for(_0xff22xa in _0xff22x9){var _0xff22x12=_0xff22x9[_0xff22xa];this[_0x2b73[1725]](_0xff22x12);if(this[_0x2b73[1759]][_0x2b73[1735]]){var _0xff22x12=_0xff22x2[_0x2b73[251]][_0x2b73[1197]](_0xff22x12[_0x2b73[246]]),_0xff22x13=mxCellPath[_0x2b73[385]](_0xff22x12);null== _0xff22x4[_0xff22x13]&& (_0xff22x4[_0xff22x13]= _0xff22x12)}};this[_0x2b73[1759]][_0x2b73[1735]]&& null!= _0xff22x4&& this[_0x2b73[1763]](_0xff22x4);(this[_0x2b73[675]]== mxHierarchicalEdgeStyle[_0x2b73[1905]]|| this[_0x2b73[675]]== mxHierarchicalEdgeStyle[_0x2b73[1883]]|| this[_0x2b73[675]]== mxHierarchicalEdgeStyle[_0x2b73[1906]])&& this[_0x2b73[1764]](_0xff22x3);for(_0xff22xa in _0xff22x5){this[_0x2b73[1907]](_0xff22x5[_0xff22xa])}};mxCoordinateAssignment[_0x2b73[202]][_0x2b73[1763]]= function(_0xff22x2){var _0xff22x3=[],_0xff22x4;for(_0xff22x4 in _0xff22x2){_0xff22x3[_0x2b73[207]](_0xff22x2[_0xff22x4])};this[_0x2b73[1759]][_0x2b73[1727]](mxUtils[_0x2b73[1779]](_0xff22x3,!0),this[_0x2b73[1745]])};mxCoordinateAssignment[_0x2b73[202]][_0x2b73[1764]]= function(_0xff22x2){for(var _0xff22x3=0;_0xff22x3< _0xff22x2[_0x2b73[1850]][_0x2b73[67]];_0xff22x3++){for(var _0xff22x4=_0xff22x2[_0x2b73[1850]][_0xff22x3],_0xff22x5=0;_0xff22x5< _0xff22x4[_0x2b73[67]];_0xff22x5++){var _0xff22x9=_0xff22x4[_0xff22x5];if(_0xff22x9[_0x2b73[1193]]()){for(var _0xff22xa=_0xff22x9[_0x2b73[1832]](_0xff22x3),_0xff22x12=_0xff22x3- 1,_0xff22x13=0;2> _0xff22x13;_0xff22x13++){if(-1< _0xff22x12&& _0xff22x12< _0xff22x2[_0x2b73[1850]][_0x2b73[67]]&& null!= _0xff22xa&& 0< _0xff22xa[_0x2b73[67]]){for(var _0xff22x14=[],_0xff22x15=0;_0xff22x15< _0xff22xa[_0x2b73[67]];_0xff22x15++){var _0xff22x16= new WeightedCellSorter(_0xff22xa[_0xff22x15],_0xff22xa[_0xff22x15][_0x2b73[730]](_0xff22x12));_0xff22x14[_0x2b73[207]](_0xff22x16)};_0xff22x14[_0x2b73[470]](WeightedCellSorter[_0x2b73[202]][_0x2b73[469]]);for(var _0xff22x16=_0xff22x9[_0x2b73[235]][0]- _0xff22x9[_0x2b73[117]]/ 2,_0xff22x17=_0xff22x16+ _0xff22x9[_0x2b73[117]],_0xff22x18=_0xff22xa= 0,_0xff22x12=[],_0xff22x15=0;_0xff22x15< _0xff22x14[_0x2b73[67]];_0xff22x15++){var _0xff22x19=_0xff22x14[_0xff22x15][_0x2b73[246]],_0xff22x1a;if(_0xff22x19[_0x2b73[1193]]()){_0xff22x1a= 0== _0xff22x13?_0xff22x9[_0x2b73[1838]]:_0xff22x9[_0x2b73[1837]];for(var _0xff22x1b=0;_0xff22x1b< _0xff22x1a[_0x2b73[67]];_0xff22x1b++){if(_0xff22x1a[_0xff22x1b][_0x2b73[1097]]== _0xff22x19|| _0xff22x1a[_0xff22x1b][_0x2b73[772]]== _0xff22x19){_0xff22xa+= _0xff22x1a[_0xff22x1b][_0x2b73[1842]][_0x2b73[67]],_0xff22x18++,_0xff22x12[_0x2b73[207]](_0xff22x1a[_0xff22x1b])}}}else {_0xff22xa+= _0xff22x19[_0x2b73[1842]][_0x2b73[67]],_0xff22x18++,_0xff22x12[_0x2b73[207]](_0xff22x19)}};_0xff22x9[_0x2b73[117]]> (_0xff22xa+ 1)* this[_0x2b73[1751]]+ 2* this[_0x2b73[1751]]&& (_0xff22x16+= this[_0x2b73[1751]],_0xff22x17-= this[_0x2b73[1751]]);_0xff22x14= (_0xff22x17- _0xff22x16)/ _0xff22xa;_0xff22x16+= _0xff22x14/ 2;_0xff22x17= this[_0x2b73[1753]]- this[_0x2b73[1752]];for(_0xff22x15= _0xff22x18= 0;_0xff22x15< _0xff22x12[_0x2b73[67]];_0xff22x15++){_0xff22x19= _0xff22x12[_0xff22x15][_0x2b73[1842]][_0x2b73[67]];_0xff22x1b= mxCellPath[_0x2b73[385]](_0xff22x12[_0xff22x15][_0x2b73[1842]][0]);_0xff22x1a= this[_0x2b73[1873]][_0xff22x1b];null== _0xff22x1a&& (_0xff22x1a= [],this[_0x2b73[1873]][_0xff22x1b]= _0xff22x1a);_0xff22x15< _0xff22xa/ 2?_0xff22x17+= this[_0x2b73[1752]]:_0xff22x15> _0xff22xa/ 2&& (_0xff22x17-= this[_0x2b73[1752]]);for(_0xff22x1b= 0;_0xff22x1b< _0xff22x19;_0xff22x1b++){_0xff22x1a[4* _0xff22x1b+ 2* _0xff22x13]= _0xff22x16,_0xff22x16+= _0xff22x14,_0xff22x1a[4* _0xff22x1b+ 2* _0xff22x13+ 1]= _0xff22x17};_0xff22x18= Math[_0x2b73[160]](_0xff22x18,_0xff22x17)}};_0xff22xa= _0xff22x9[_0x2b73[1831]](_0xff22x3);_0xff22x12= _0xff22x3+ 1}}}}};mxCoordinateAssignment[_0x2b73[202]][_0x2b73[1907]]= function(_0xff22x2){var _0xff22x3=0;if(101207!= _0xff22x2[_0x2b73[1826]][0]){var _0xff22x4=_0xff22x2[_0x2b73[1827]],_0xff22x5=_0xff22x2[_0x2b73[1828]];_0xff22x4== _0xff22x5&& (_0xff22x4= _0xff22x2[_0x2b73[1097]][_0x2b73[1827]],_0xff22x5= _0xff22x2[_0x2b73[772]][_0x2b73[1828]]);for(var _0xff22x9=0,_0xff22xa=mxCellPath[_0x2b73[385]](_0xff22x2[_0x2b73[1842]][0]),_0xff22xa=this[_0x2b73[1873]][_0xff22xa],_0xff22x12=_0xff22x2[_0x2b73[1843]]?_0xff22x2[_0x2b73[772]][_0x2b73[246]]:_0xff22x2[_0x2b73[1097]][_0x2b73[246]],_0xff22x13=this[_0x2b73[1759]][_0x2b73[1179]],_0xff22x14=0;_0xff22x14< _0xff22x2[_0x2b73[1842]][_0x2b73[67]];_0xff22x14++){var _0xff22x15=_0xff22x2[_0x2b73[1842]][_0xff22x14],_0xff22x16=this[_0x2b73[1759]][_0x2b73[1710]](_0xff22x15,!0),_0xff22x17=_0xff22x13[_0x2b73[251]][_0x2b73[1709]](_0xff22x15,!0),_0xff22x18=[],_0xff22x19=_0xff22x2[_0x2b73[1843]];_0xff22x16!= _0xff22x12&& (_0xff22x19= !_0xff22x19);if(null!= _0xff22xa){var _0xff22x1a=_0xff22x19?2:0,_0xff22x1b=_0xff22x19?this[_0x2b73[1877]][_0xff22x5]:this[_0x2b73[1878]][_0xff22x4],_0xff22x1c=_0xff22xa[4* _0xff22x9+ 1+ _0xff22x1a];_0xff22x19&& (_0xff22x1c= -_0xff22x1c);_0xff22x1b+= _0xff22x1c;_0xff22x1a= _0xff22xa[4* _0xff22x9+ _0xff22x1a];_0xff22x17= _0xff22x13[_0x2b73[251]][_0x2b73[1709]](_0xff22x15,!0);this[_0x2b73[1759]][_0x2b73[1908]](_0xff22x17)&& _0xff22x13[_0x2b73[251]][_0x2b73[1197]](_0xff22x17)== _0xff22x16&& (_0xff22x1a= _0xff22x13[_0x2b73[441]][_0x2b73[248]](_0xff22x17),_0xff22x1a= null!= _0xff22x1a?_0xff22x1a[_0x2b73[235]]:_0xff22x16[_0x2b73[256]][_0x2b73[235]]+ _0xff22x2[_0x2b73[1097]][_0x2b73[117]]* _0xff22x17[_0x2b73[256]][_0x2b73[235]]);this[_0x2b73[1870]]== mxConstants[_0x2b73[1358]]|| this[_0x2b73[1870]]== mxConstants[_0x2b73[1354]]?(_0xff22x18[_0x2b73[207]]( new mxPoint(_0xff22x1a,_0xff22x1b)),this[_0x2b73[675]]== mxHierarchicalEdgeStyle[_0x2b73[1906]]&& _0xff22x18[_0x2b73[207]]( new mxPoint(_0xff22x1a,_0xff22x1b+ _0xff22x1c))):(_0xff22x18[_0x2b73[207]]( new mxPoint(_0xff22x1b,_0xff22x1a)),this[_0x2b73[675]]== mxHierarchicalEdgeStyle[_0x2b73[1906]]&& _0xff22x18[_0x2b73[207]]( new mxPoint(_0xff22x1b+ _0xff22x1c,_0xff22x1a)))};_0xff22x1a= _0xff22x2[_0x2b73[235]][_0x2b73[67]]- 1;_0xff22x1b= _0xff22x1c= -1;_0xff22x16= _0xff22x2[_0x2b73[1827]]- 1;_0xff22x19&& (_0xff22x1a= 0,_0xff22x1c= _0xff22x2[_0x2b73[235]][_0x2b73[67]],_0xff22x1b= 1,_0xff22x16= _0xff22x2[_0x2b73[1828]]+ 1);for(;_0xff22x2[_0x2b73[1827]]!= _0xff22x2[_0x2b73[1828]]&& _0xff22x1a!= _0xff22x1c;_0xff22x1a+= _0xff22x1b){var _0xff22x17=_0xff22x2[_0x2b73[235]][_0xff22x1a]+ _0xff22x3,_0xff22x1d=(this[_0x2b73[1877]][_0xff22x16]+ this[_0x2b73[1878]][_0xff22x16+ 1])/ 2,_0xff22x1e=(this[_0x2b73[1877]][_0xff22x16- 1]+ this[_0x2b73[1878]][_0xff22x16])/ 2;if(_0xff22x19){var _0xff22x1f=_0xff22x1d,_0xff22x1d=_0xff22x1e,_0xff22x1e=_0xff22x1f};this[_0x2b73[1870]]== mxConstants[_0x2b73[1358]]|| this[_0x2b73[1870]]== mxConstants[_0x2b73[1354]]?(_0xff22x18[_0x2b73[207]]( new mxPoint(_0xff22x17,_0xff22x1d)),_0xff22x18[_0x2b73[207]]( new mxPoint(_0xff22x17,_0xff22x1e))):(_0xff22x18[_0x2b73[207]]( new mxPoint(_0xff22x1d,_0xff22x17)),_0xff22x18[_0x2b73[207]]( new mxPoint(_0xff22x1e,_0xff22x17)));this[_0x2b73[1874]]= Math[_0x2b73[160]](this[_0x2b73[1874]],_0xff22x17);_0xff22x16+= _0xff22x1b};null!= _0xff22xa&& (_0xff22x1a= _0xff22x19?2:0,_0xff22x1b= _0xff22x19?this[_0x2b73[1878]][_0xff22x4]:this[_0x2b73[1877]][_0xff22x5],_0xff22x1c= _0xff22xa[4* _0xff22x9+ 3- _0xff22x1a],_0xff22x19&& (_0xff22x1c= -_0xff22x1c),_0xff22x1b-= _0xff22x1c,_0xff22x1a= _0xff22xa[4* _0xff22x9+ 2- _0xff22x1a],_0xff22x19= _0xff22x13[_0x2b73[251]][_0x2b73[1709]](_0xff22x15,!1),_0xff22x16= this[_0x2b73[1759]][_0x2b73[1710]](_0xff22x15,!1),this[_0x2b73[1759]][_0x2b73[1908]](_0xff22x19)&& _0xff22x13[_0x2b73[251]][_0x2b73[1197]](_0xff22x19)== _0xff22x16&& (_0xff22x1a= _0xff22x13[_0x2b73[441]][_0x2b73[248]](_0xff22x19),_0xff22x1a= null!= _0xff22x1a?_0xff22x1a[_0x2b73[235]]:_0xff22x16[_0x2b73[256]][_0x2b73[235]]+ _0xff22x2[_0x2b73[772]][_0x2b73[117]]* _0xff22x19[_0x2b73[256]][_0x2b73[235]]),this[_0x2b73[1870]]== mxConstants[_0x2b73[1358]]|| this[_0x2b73[1870]]== mxConstants[_0x2b73[1354]]?(this[_0x2b73[675]]== mxHierarchicalEdgeStyle[_0x2b73[1906]]&& _0xff22x18[_0x2b73[207]]( new mxPoint(_0xff22x1a,_0xff22x1b- _0xff22x1c)),_0xff22x18[_0x2b73[207]]( new mxPoint(_0xff22x1a,_0xff22x1b))):(this[_0x2b73[675]]== mxHierarchicalEdgeStyle[_0x2b73[1906]]&& _0xff22x18[_0x2b73[207]]( new mxPoint(_0xff22x1b- _0xff22x1c,_0xff22x1a)),_0xff22x18[_0x2b73[207]]( new mxPoint(_0xff22x1b,_0xff22x1a))));_0xff22x2[_0x2b73[1843]]&& this[_0x2b73[1909]](_0xff22x2,_0xff22x15);this[_0x2b73[1759]][_0x2b73[1722]](_0xff22x15,_0xff22x18);_0xff22x3= 0== _0xff22x3?this[_0x2b73[1872]]:0< _0xff22x3?-_0xff22x3:-_0xff22x3+ this[_0x2b73[1872]];_0xff22x9++};_0xff22x2[_0x2b73[1826]][0]= 101207}};mxCoordinateAssignment[_0x2b73[202]][_0x2b73[1725]]= function(_0xff22x2){var _0xff22x3=_0xff22x2[_0x2b73[246]],_0xff22x4=_0xff22x2[_0x2b73[235]][0]- _0xff22x2[_0x2b73[117]]/ 2,_0xff22x5=_0xff22x2[_0x2b73[236]][0]- _0xff22x2[_0x2b73[119]]/ 2;this[_0x2b73[1877]][_0xff22x2[_0x2b73[1828]]]= Math[_0x2b73[243]](this[_0x2b73[1877]][_0xff22x2[_0x2b73[1828]]],_0xff22x5);this[_0x2b73[1878]][_0xff22x2[_0x2b73[1828]]]= Math[_0x2b73[160]](this[_0x2b73[1878]][_0xff22x2[_0x2b73[1828]]],_0xff22x5+ _0xff22x2[_0x2b73[119]]);this[_0x2b73[1870]]== mxConstants[_0x2b73[1358]]|| this[_0x2b73[1870]]== mxConstants[_0x2b73[1354]]?this[_0x2b73[1759]][_0x2b73[1725]](_0xff22x3,_0xff22x4,_0xff22x5):this[_0x2b73[1759]][_0x2b73[1725]](_0xff22x3,_0xff22x5,_0xff22x4);this[_0x2b73[1874]]= Math[_0x2b73[160]](this[_0x2b73[1874]],_0xff22x4+ _0xff22x2[_0x2b73[117]])};mxCoordinateAssignment[_0x2b73[202]][_0x2b73[1909]]= function(_0xff22x2,_0xff22x3){};function WeightedCellSorter(_0xff22x2,_0xff22x3){this[_0x2b73[246]]= _0xff22x2;this[_0x2b73[1782]]= _0xff22x3}WeightedCellSorter[_0x2b73[202]][_0x2b73[1782]]= 0;WeightedCellSorter[_0x2b73[202]][_0x2b73[1783]]= !1;WeightedCellSorter[_0x2b73[202]][_0x2b73[1784]]= !1;WeightedCellSorter[_0x2b73[202]][_0x2b73[1785]]= null;WeightedCellSorter[_0x2b73[202]][_0x2b73[246]]= null;WeightedCellSorter[_0x2b73[202]][_0x2b73[469]]= function(_0xff22x2,_0xff22x3){return null!= _0xff22x2&& null!= _0xff22x3?_0xff22x3[_0x2b73[1782]]> _0xff22x2[_0x2b73[1782]]?-1:_0xff22x3[_0x2b73[1782]]< _0xff22x2[_0x2b73[1782]]?1:_0xff22x3[_0x2b73[1783]]?-1:1:0};function mxHierarchicalLayout(_0xff22x2,_0xff22x3,_0xff22x4){mxGraphLayout[_0x2b73[239]](this,_0xff22x2);this[_0x2b73[1870]]= null!= _0xff22x3?_0xff22x3:mxConstants[_0x2b73[1358]];this[_0x2b73[1910]]= null!= _0xff22x4?_0xff22x4:!0}mxHierarchicalLayout[_0x2b73[202]]= new mxGraphLayout;mxHierarchicalLayout[_0x2b73[202]][_0x2b73[196]]= mxHierarchicalLayout;mxHierarchicalLayout[_0x2b73[202]][_0x2b73[1845]]= null;mxHierarchicalLayout[_0x2b73[202]][_0x2b73[1735]]= !1;mxHierarchicalLayout[_0x2b73[202]][_0x2b73[1911]]= !1;mxHierarchicalLayout[_0x2b73[202]][_0x2b73[1912]]= 0;mxHierarchicalLayout[_0x2b73[202]][_0x2b73[1868]]= 30;mxHierarchicalLayout[_0x2b73[202]][_0x2b73[1869]]= 100;mxHierarchicalLayout[_0x2b73[202]][_0x2b73[1913]]= 60;mxHierarchicalLayout[_0x2b73[202]][_0x2b73[1872]]= 10;mxHierarchicalLayout[_0x2b73[202]][_0x2b73[1870]]= mxConstants[_0x2b73[1358]];mxHierarchicalLayout[_0x2b73[202]][_0x2b73[1882]]= !0;mxHierarchicalLayout[_0x2b73[202]][_0x2b73[1844]]= !0;mxHierarchicalLayout[_0x2b73[202]][_0x2b73[1787]]= !0;mxHierarchicalLayout[_0x2b73[202]][_0x2b73[1914]]= !0;mxHierarchicalLayout[_0x2b73[202]][_0x2b73[251]]= null;mxHierarchicalLayout[_0x2b73[202]][_0x2b73[1915]]= null;mxHierarchicalLayout[_0x2b73[202]][_0x2b73[502]]= function(){return this[_0x2b73[251]]};mxHierarchicalLayout[_0x2b73[202]][_0x2b73[350]]= function(_0xff22x2,_0xff22x3){this[_0x2b73[1101]]= _0xff22x2;var _0xff22x4=this[_0x2b73[1179]][_0x2b73[251]];this[_0x2b73[1915]]= {};if(!(null== _0xff22x3&& null== _0xff22x2)){if(null!= _0xff22x3&& null!= _0xff22x2){for(var _0xff22x5=[],_0xff22x9=0;_0xff22x9< _0xff22x3[_0x2b73[67]];_0xff22x9++){_0xff22x4[_0x2b73[1720]](_0xff22x2,_0xff22x3[_0xff22x9])&& _0xff22x5[_0x2b73[207]](_0xff22x3[_0xff22x9])};this[_0x2b73[1845]]= _0xff22x5}else {this[_0x2b73[1845]]= _0xff22x3};_0xff22x4[_0x2b73[473]]();try{this[_0x2b73[1916]](_0xff22x2),this[_0x2b73[1735]]&& !this[_0x2b73[1179]][_0x2b73[1742]](_0xff22x2)&& this[_0x2b73[1179]][_0x2b73[1917]]([_0xff22x2],this[_0x2b73[1912]],this[_0x2b73[1911]])}finally{_0xff22x4[_0x2b73[476]]()}}};mxHierarchicalLayout[_0x2b73[202]][_0x2b73[1918]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=[];if(null!= _0xff22x2&& null!= _0xff22x3){var _0xff22x5=this[_0x2b73[1179]][_0x2b73[251]],_0xff22x9=null,_0xff22xa=-1E5,_0xff22x12;for(_0xff22x12 in _0xff22x3){var _0xff22x13=_0xff22x3[_0xff22x12];if(_0xff22x5[_0x2b73[1193]](_0xff22x13)&& this[_0x2b73[1179]][_0x2b73[1714]](_0xff22x13)){for(var _0xff22x14=this[_0x2b73[264]](_0xff22x13),_0xff22x15=0,_0xff22x16=0,_0xff22x17=0;_0xff22x17< _0xff22x14[_0x2b73[67]];_0xff22x17++){this[_0x2b73[1710]](_0xff22x14[_0xff22x17],!0)== _0xff22x13?_0xff22x15++:_0xff22x16++};0== _0xff22x16&& 0< _0xff22x15&& _0xff22x4[_0x2b73[207]](_0xff22x13);_0xff22x14= _0xff22x15- _0xff22x16;_0xff22x14> _0xff22xa&& (_0xff22xa= _0xff22x14,_0xff22x9= _0xff22x13)}};0== _0xff22x4[_0x2b73[67]]&& null!= _0xff22x9&& _0xff22x4[_0x2b73[207]](_0xff22x9)};return _0xff22x4};mxHierarchicalLayout[_0x2b73[202]][_0x2b73[264]]= function(_0xff22x2){var _0xff22x3=mxCellPath[_0x2b73[385]](_0xff22x2);if(null!= this[_0x2b73[1915]][_0xff22x3]){return this[_0x2b73[1915]][_0xff22x3]};for(var _0xff22x4=this[_0x2b73[1179]][_0x2b73[251]],_0xff22x5=[],_0xff22x9=this[_0x2b73[1179]][_0x2b73[1742]](_0xff22x2),_0xff22xa=_0xff22x4[_0x2b73[262]](_0xff22x2),_0xff22x12=0;_0xff22x12< _0xff22xa;_0xff22x12++){var _0xff22x13=_0xff22x4[_0x2b73[263]](_0xff22x2,_0xff22x12);if(this[_0x2b73[1908]](_0xff22x13)){_0xff22x5= _0xff22x5[_0x2b73[1919]](_0xff22x4[_0x2b73[264]](_0xff22x13,!0,!0))}else {if(_0xff22x9|| !this[_0x2b73[1179]][_0x2b73[1714]](_0xff22x13)){_0xff22x5= _0xff22x5[_0x2b73[1919]](_0xff22x4[_0x2b73[264]](_0xff22x13,!0,!0))}}};_0xff22x5= _0xff22x5[_0x2b73[1919]](_0xff22x4[_0x2b73[264]](_0xff22x2,!0,!0));_0xff22x4= [];for(_0xff22x12= 0;_0xff22x12< _0xff22x5[_0x2b73[67]];_0xff22x12++){_0xff22x9= this[_0x2b73[1710]](_0xff22x5[_0xff22x12],!0),_0xff22xa= this[_0x2b73[1710]](_0xff22x5[_0xff22x12],!1),(_0xff22x9== _0xff22xa|| _0xff22x9!= _0xff22xa&& (_0xff22xa== _0xff22x2&& (null== this[_0x2b73[1101]]|| this[_0x2b73[1179]][_0x2b73[1920]](_0xff22x9,this[_0x2b73[1101]],this[_0x2b73[1914]]))|| _0xff22x9== _0xff22x2&& (null== this[_0x2b73[1101]]|| this[_0x2b73[1179]][_0x2b73[1920]](_0xff22xa,this[_0x2b73[1101]],this[_0x2b73[1914]]))))&& _0xff22x4[_0x2b73[207]](_0xff22x5[_0xff22x12])};return this[_0x2b73[1915]][_0xff22x3]= _0xff22x4};mxHierarchicalLayout[_0x2b73[202]][_0x2b73[1710]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=this[_0x2b73[1179]][_0x2b73[441]][_0x2b73[248]](_0xff22x2),_0xff22x4=null!= _0xff22x4?_0xff22x4[_0x2b73[1710]](_0xff22x3):this[_0x2b73[1179]][_0x2b73[441]][_0x2b73[1710]](_0xff22x2,_0xff22x3);this[_0x2b73[1908]](_0xff22x4)&& (_0xff22x4= this[_0x2b73[1179]][_0x2b73[251]][_0x2b73[1197]](_0xff22x4));return _0xff22x4};mxHierarchicalLayout[_0x2b73[202]][_0x2b73[1916]]= function(_0xff22x2){var _0xff22x3=[],_0xff22x4=[];if(null== this[_0x2b73[1845]]&& null!= _0xff22x2){var _0xff22x5={};this[_0x2b73[1921]](_0xff22x2,_0xff22x5);this[_0x2b73[1845]]= [];var _0xff22x9=!0,_0xff22xa;for(_0xff22xa in _0xff22x5){if(null!= _0xff22x5[_0xff22xa]){_0xff22x9= !1;break}};for(;!_0xff22x9;){for(var _0xff22x12=this[_0x2b73[1918]](_0xff22x2,_0xff22x5),_0xff22x9=0;_0xff22x9< _0xff22x12[_0x2b73[67]];_0xff22x9++){var _0xff22x13=[];_0xff22x3[_0x2b73[207]](_0xff22x13);this[_0x2b73[1706]](_0xff22x12[_0xff22x9],!0,null,_0xff22x4,_0xff22x13,_0xff22x3,_0xff22x5)};for(_0xff22x9= 0;_0xff22x9< _0xff22x12[_0x2b73[67]];_0xff22x9++){this[_0x2b73[1845]][_0x2b73[207]](_0xff22x12[_0xff22x9])};_0xff22x9= !0;for(_0xff22xa in _0xff22x5){if(null!= _0xff22x5[_0xff22xa]){_0xff22x9= !1;break}}}}else {for(_0xff22x9= 0;_0xff22x9< roots[_0x2b73[67]];_0xff22x9++){_0xff22x13= [],_0xff22x3[_0x2b73[207]](_0xff22x13),traverse(roots[_0x2b73[203]](_0xff22x9),!0,null,_0xff22x4,_0xff22x13,_0xff22x3,null)}};for(_0xff22x9= _0xff22x4= 0;_0xff22x9< _0xff22x3[_0x2b73[67]];_0xff22x9++){_0xff22x13= _0xff22x3[_0xff22x9];_0xff22x5= [];for(_0xff22xa in _0xff22x13){_0xff22x5[_0x2b73[207]](_0xff22x13[_0xff22xa])};this[_0x2b73[251]]= new mxGraphHierarchyModel(this,_0xff22x5,this[_0x2b73[1845]],_0xff22x2,this[_0x2b73[1844]]);this[_0x2b73[1922]](_0xff22x2);this[_0x2b73[1923]]();this[_0x2b73[1924]](_0xff22x2);_0xff22x4= this[_0x2b73[1925]](_0xff22x4,_0xff22x2)}};mxHierarchicalLayout[_0x2b73[202]][_0x2b73[1921]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=this[_0x2b73[1179]][_0x2b73[251]];_0xff22x4[_0x2b73[1193]](_0xff22x2)&& (_0xff22x2!= this[_0x2b73[1101]]&& this[_0x2b73[1179]][_0x2b73[1714]](_0xff22x2))&& (_0xff22x3[mxCellPath[_0x2b73[385]](_0xff22x2)]= _0xff22x2);if(this[_0x2b73[1914]]|| _0xff22x2== this[_0x2b73[1101]]&& this[_0x2b73[1179]][_0x2b73[1714]](_0xff22x2)){for(var _0xff22x5=_0xff22x4[_0x2b73[262]](_0xff22x2),_0xff22x9=0;_0xff22x9< _0xff22x5;_0xff22x9++){var _0xff22xa=_0xff22x4[_0x2b73[263]](_0xff22x2,_0xff22x9);this[_0x2b73[1908]](_0xff22xa)|| this[_0x2b73[1921]](_0xff22xa,_0xff22x3)}}};mxHierarchicalLayout[_0x2b73[202]][_0x2b73[1908]]= function(_0xff22x2){return _0xff22x2[_0x2b73[256]][_0x2b73[1500]]?!0:!1};mxHierarchicalLayout[_0x2b73[202]][_0x2b73[1781]]= function(_0xff22x2,_0xff22x3,_0xff22x4){_0xff22x4= null!= _0xff22x4?_0xff22x4:!1;for(var _0xff22x5=this[_0x2b73[264]](_0xff22x2),_0xff22x9=[],_0xff22xa=0;_0xff22xa< _0xff22x5[_0x2b73[67]];_0xff22xa++){var _0xff22x12=this[_0x2b73[1710]](_0xff22x5[_0xff22xa],!0),_0xff22x13=this[_0x2b73[1710]](_0xff22x5[_0xff22xa],!1);(_0xff22x12== _0xff22x2&& _0xff22x13== _0xff22x3|| !_0xff22x4&& _0xff22x12== _0xff22x3&& _0xff22x13== _0xff22x2)&& _0xff22x9[_0x2b73[207]](_0xff22x5[_0xff22xa])};return _0xff22x9};mxHierarchicalLayout[_0x2b73[202]][_0x2b73[1706]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa,_0xff22x12){if(null!= _0xff22x2&& null!= _0xff22x5){var _0xff22x13=mxCellPath[_0x2b73[385]](_0xff22x2);if(null== _0xff22x5[_0xff22x13]&& (null== _0xff22x12|| null!= _0xff22x12[_0xff22x13])){null== _0xff22x9[_0xff22x13]&& (_0xff22x9[_0xff22x13]= _0xff22x2);null== _0xff22x5[_0xff22x13]&& (_0xff22x5[_0xff22x13]= _0xff22x2);delete _0xff22x12[_0xff22x13];var _0xff22x14=this[_0x2b73[264]](_0xff22x2);for(_0xff22x4= 0;_0xff22x4< _0xff22x14[_0x2b73[67]];_0xff22x4++){if(_0xff22x13= this[_0x2b73[1710]](_0xff22x14[_0xff22x4],!0)== _0xff22x2,!_0xff22x3|| _0xff22x13){_0xff22x13= this[_0x2b73[1710]](_0xff22x14[_0xff22x4],!_0xff22x13),_0xff22x9= this[_0x2b73[1706]](_0xff22x13,_0xff22x3,_0xff22x14[_0xff22x4],_0xff22x5,_0xff22x9,_0xff22xa,_0xff22x12)}}}else {if(null== _0xff22x9[_0xff22x13]){for(_0xff22x4= 0;_0xff22x4< _0xff22xa[_0x2b73[67]];_0xff22x4++){if(_0xff22x2= _0xff22xa[_0xff22x4],null!= _0xff22x2[_0xff22x13]){for(_0xff22x14 in _0xff22x9){_0xff22x2[_0xff22x14]= _0xff22x9[_0xff22x14]};_0xff22xa[_0x2b73[1242]]();return _0xff22x2}}}}};return _0xff22x9};mxHierarchicalLayout[_0x2b73[202]][_0x2b73[1922]]= function(_0xff22x2){( new mxMinimumCycleRemover(this))[_0x2b73[350]](_0xff22x2)};mxHierarchicalLayout[_0x2b73[202]][_0x2b73[1923]]= function(){this[_0x2b73[251]][_0x2b73[1852]]();this[_0x2b73[251]][_0x2b73[1854]]()};mxHierarchicalLayout[_0x2b73[202]][_0x2b73[1924]]= function(_0xff22x2){( new mxMedianHybridCrossingReduction(this))[_0x2b73[350]](_0xff22x2)};mxHierarchicalLayout[_0x2b73[202]][_0x2b73[1925]]= function(_0xff22x2,_0xff22x3){var _0xff22x4= new mxCoordinateAssignment(this,this[_0x2b73[1868]],this[_0x2b73[1869]],this[_0x2b73[1870]],_0xff22x2,this[_0x2b73[1872]]);_0xff22x4[_0x2b73[1882]]= this[_0x2b73[1882]];_0xff22x4[_0x2b73[350]](_0xff22x3);return _0xff22x4[_0x2b73[1874]]+ this[_0x2b73[1913]]};function mxGraphModel(_0xff22x2){this[_0x2b73[1926]]= this[_0x2b73[1096]]();null!= _0xff22x2?this[_0x2b73[1927]](_0xff22x2):this[_0x2b73[200]]()}mxGraphModel[_0x2b73[202]]= new mxEventSource;mxGraphModel[_0x2b73[202]][_0x2b73[196]]= mxGraphModel;mxGraphModel[_0x2b73[202]][_0x2b73[813]]= null;mxGraphModel[_0x2b73[202]][_0x2b73[895]]= null;mxGraphModel[_0x2b73[202]][_0x2b73[1928]]= !0;mxGraphModel[_0x2b73[202]][_0x2b73[1929]]= !0;mxGraphModel[_0x2b73[202]][_0x2b73[1089]]= _0x2b73[110];mxGraphModel[_0x2b73[202]][_0x2b73[1930]]= _0x2b73[110];mxGraphModel[_0x2b73[202]][_0x2b73[1931]]= 0;mxGraphModel[_0x2b73[202]][_0x2b73[1926]]= null;mxGraphModel[_0x2b73[202]][_0x2b73[1932]]= 0;mxGraphModel[_0x2b73[202]][_0x2b73[1933]]= !1;mxGraphModel[_0x2b73[202]][_0x2b73[200]]= function(){this[_0x2b73[1927]](this[_0x2b73[1934]]())};mxGraphModel[_0x2b73[202]][_0x2b73[1935]]= function(){return this[_0x2b73[1929]]};mxGraphModel[_0x2b73[202]][_0x2b73[1936]]= function(_0xff22x2){this[_0x2b73[1929]]= _0xff22x2};mxGraphModel[_0x2b73[202]][_0x2b73[1934]]= function(){var _0xff22x2= new mxCell;_0xff22x2[_0x2b73[1937]]( new mxCell);return _0xff22x2};mxGraphModel[_0x2b73[202]][_0x2b73[736]]= function(_0xff22x2){return null!= this[_0x2b73[895]]?this[_0x2b73[895]][_0xff22x2]:null};mxGraphModel[_0x2b73[202]][_0x2b73[1938]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=null;if(null!= _0xff22x2){for(var _0xff22x4=[],_0xff22x5=0;_0xff22x5< _0xff22x2[_0x2b73[67]];_0xff22x5++){_0xff22x3(_0xff22x2[_0xff22x5])&& _0xff22x4[_0x2b73[207]](_0xff22x2[_0xff22x5])}};return _0xff22x4};mxGraphModel[_0x2b73[202]][_0x2b73[1939]]= function(_0xff22x2){return this[_0x2b73[1921]](null,_0xff22x2)};mxGraphModel[_0x2b73[202]][_0x2b73[1921]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=[];_0xff22x3= _0xff22x3|| this[_0x2b73[501]]();(null== _0xff22x2|| _0xff22x2(_0xff22x3))&& _0xff22x4[_0x2b73[207]](_0xff22x3);for(var _0xff22x5=this[_0x2b73[262]](_0xff22x3),_0xff22x9=0;_0xff22x9< _0xff22x5;_0xff22x9++){var _0xff22xa=this[_0x2b73[263]](_0xff22x3,_0xff22x9),_0xff22x4=_0xff22x4[_0x2b73[1919]](this[_0x2b73[1921]](_0xff22x2,_0xff22xa))};return _0xff22x4};mxGraphModel[_0x2b73[202]][_0x2b73[501]]= function(_0xff22x2){var _0xff22x3=_0xff22x2|| this[_0x2b73[813]];if(null!= _0xff22x2){for(;null!= _0xff22x2;){_0xff22x3= _0xff22x2,_0xff22x2= this[_0x2b73[1197]](_0xff22x2)}};return _0xff22x3};mxGraphModel[_0x2b73[202]][_0x2b73[1927]]= function(_0xff22x2){this[_0x2b73[350]]( new mxRootChange(this,_0xff22x2));return _0xff22x2};mxGraphModel[_0x2b73[202]][_0x2b73[1940]]= function(_0xff22x2){var _0xff22x3=this[_0x2b73[813]];this[_0x2b73[813]]= _0xff22x2;this[_0x2b73[1931]]= 0;this[_0x2b73[895]]= null;this[_0x2b73[1941]](_0xff22x2);return _0xff22x3};mxGraphModel[_0x2b73[202]][_0x2b73[1942]]= function(_0xff22x2){return null!= _0xff22x2&& this[_0x2b73[813]]== _0xff22x2};mxGraphModel[_0x2b73[202]][_0x2b73[1740]]= function(_0xff22x2){return this[_0x2b73[1942]](this[_0x2b73[1197]](_0xff22x2))};mxGraphModel[_0x2b73[202]][_0x2b73[1720]]= function(_0xff22x2,_0xff22x3){for(;null!= _0xff22x3&& _0xff22x3!= _0xff22x2;){_0xff22x3= this[_0x2b73[1197]](_0xff22x3)};return _0xff22x3== _0xff22x2};mxGraphModel[_0x2b73[202]][_0x2b73[442]]= function(_0xff22x2){return this[_0x2b73[1720]](this[_0x2b73[813]],_0xff22x2)};mxGraphModel[_0x2b73[202]][_0x2b73[1197]]= function(_0xff22x2){return null!= _0xff22x2?_0xff22x2[_0x2b73[1197]]():null};mxGraphModel[_0x2b73[202]][_0x2b73[99]]= function(_0xff22x2,_0xff22x3,_0xff22x4){if(_0xff22x3!= _0xff22x2&& null!= _0xff22x2&& null!= _0xff22x3){null== _0xff22x4&& (_0xff22x4= this[_0x2b73[262]](_0xff22x2));var _0xff22x5=_0xff22x2!= this[_0x2b73[1197]](_0xff22x3);this[_0x2b73[350]]( new mxChildChange(this,_0xff22x2,_0xff22x3,_0xff22x4));this[_0x2b73[1928]]&& _0xff22x5&& this[_0x2b73[1943]](_0xff22x3)};return _0xff22x3};mxGraphModel[_0x2b73[202]][_0x2b73[1941]]= function(_0xff22x2){if(null!= _0xff22x2){null== _0xff22x2[_0x2b73[1103]]()&& this[_0x2b73[1929]]&& _0xff22x2[_0x2b73[1945]](this[_0x2b73[1944]](_0xff22x2));if(null!= _0xff22x2[_0x2b73[1103]]()){var _0xff22x3=this[_0x2b73[736]](_0xff22x2[_0x2b73[1103]]());if(_0xff22x3!= _0xff22x2){for(;null!= _0xff22x3;){_0xff22x2[_0x2b73[1945]](this[_0x2b73[1944]](_0xff22x2)),_0xff22x3= this[_0x2b73[736]](_0xff22x2[_0x2b73[1103]]())};null== this[_0x2b73[895]]&& (this[_0x2b73[895]]= {});this[_0x2b73[895]][_0xff22x2[_0x2b73[1103]]()]= _0xff22x2}};mxUtils[_0x2b73[1946]](_0xff22x2[_0x2b73[1103]]())&& (this[_0x2b73[1931]]= Math[_0x2b73[160]](this[_0x2b73[1931]],_0xff22x2[_0x2b73[1103]]()));for(var _0xff22x3=this[_0x2b73[262]](_0xff22x2),_0xff22x4=0;_0xff22x4< _0xff22x3;_0xff22x4++){this[_0x2b73[1941]](this[_0x2b73[263]](_0xff22x2,_0xff22x4))}}};mxGraphModel[_0x2b73[202]][_0x2b73[1944]]= function(_0xff22x2){_0xff22x2= this[_0x2b73[1931]];this[_0x2b73[1931]]++;return this[_0x2b73[1089]]+ _0xff22x2+ this[_0x2b73[1930]]};mxGraphModel[_0x2b73[202]][_0x2b73[1943]]= function(_0xff22x2,_0xff22x3){_0xff22x3= _0xff22x3|| this[_0x2b73[501]](_0xff22x2);for(var _0xff22x4=this[_0x2b73[262]](_0xff22x2),_0xff22x5=0;_0xff22x5< _0xff22x4;_0xff22x5++){var _0xff22x9=this[_0x2b73[263]](_0xff22x2,_0xff22x5);this[_0x2b73[1943]](_0xff22x9,_0xff22x3)};_0xff22x9= this[_0x2b73[1707]](_0xff22x2);_0xff22x4= [];for(_0xff22x5= 0;_0xff22x5< _0xff22x9;_0xff22x5++){_0xff22x4[_0x2b73[207]](this[_0x2b73[1708]](_0xff22x2,_0xff22x5))};for(_0xff22x5= 0;_0xff22x5< _0xff22x4[_0x2b73[67]];_0xff22x5++){_0xff22x9= _0xff22x4[_0xff22x5],this[_0x2b73[1720]](_0xff22x3,_0xff22x9)&& this[_0x2b73[1947]](_0xff22x9,_0xff22x3)}};mxGraphModel[_0x2b73[202]][_0x2b73[1947]]= function(_0xff22x2,_0xff22x3){for(var _0xff22x4=this[_0x2b73[1709]](_0xff22x2,!0),_0xff22x5=this[_0x2b73[1709]](_0xff22x2,!1),_0xff22x9=null;null!= _0xff22x4&& !this[_0x2b73[250]](_0xff22x4)&& null!= _0xff22x4[_0x2b73[256]]&& _0xff22x4[_0x2b73[256]][_0x2b73[1500]];){_0xff22x4= this[_0x2b73[1197]](_0xff22x4)};for(;null!= _0xff22x5&& !this[_0x2b73[250]](_0xff22x5)&& null!= _0xff22x5[_0x2b73[256]]&& _0xff22x5[_0x2b73[256]][_0x2b73[1500]];){_0xff22x5= this[_0x2b73[1197]](_0xff22x5)};if(this[_0x2b73[1720]](_0xff22x3,_0xff22x4)&& this[_0x2b73[1720]](_0xff22x3,_0xff22x5)&& (_0xff22x9= _0xff22x4== _0xff22x5?this[_0x2b73[1197]](_0xff22x4):this[_0x2b73[1948]](_0xff22x4,_0xff22x5),null!= _0xff22x9&& (this[_0x2b73[1197]](_0xff22x9)!= this[_0x2b73[813]]|| this[_0x2b73[1720]](_0xff22x9,_0xff22x2))&& this[_0x2b73[1197]](_0xff22x2)!= _0xff22x9)){_0xff22x4= this[_0x2b73[1721]](_0xff22x2);if(null!= _0xff22x4){var _0xff22xa=this[_0x2b73[1949]](this[_0x2b73[1197]](_0xff22x2)),_0xff22x12=this[_0x2b73[1949]](_0xff22x9),_0xff22x5=_0xff22x12[_0x2b73[235]]- _0xff22xa[_0x2b73[235]],_0xff22xa=_0xff22x12[_0x2b73[236]]- _0xff22xa[_0x2b73[236]],_0xff22x4=_0xff22x4[_0x2b73[238]]();_0xff22x4[_0x2b73[513]](-_0xff22x5,-_0xff22xa);this[_0x2b73[1724]](_0xff22x2,_0xff22x4)};this[_0x2b73[99]](_0xff22x9,_0xff22x2,this[_0x2b73[262]](_0xff22x9))}};mxGraphModel[_0x2b73[202]][_0x2b73[1949]]= function(_0xff22x2){var _0xff22x3=null;null!= _0xff22x2?(_0xff22x3= this[_0x2b73[1949]](this[_0x2b73[1197]](_0xff22x2)),this[_0x2b73[250]](_0xff22x2)|| (_0xff22x2= this[_0x2b73[1721]](_0xff22x2),null!= _0xff22x2&& (_0xff22x3[_0x2b73[235]]+= _0xff22x2[_0x2b73[235]],_0xff22x3[_0x2b73[236]]+= _0xff22x2[_0x2b73[236]]))):_0xff22x3= new mxPoint;return _0xff22x3};mxGraphModel[_0x2b73[202]][_0x2b73[1948]]= function(_0xff22x2,_0xff22x3){if(null!= _0xff22x2&& null!= _0xff22x3){var _0xff22x4=mxCellPath[_0x2b73[385]](_0xff22x3);if(null!= _0xff22x4&& 0< _0xff22x4[_0x2b73[67]]){var _0xff22x5=_0xff22x2,_0xff22x9=mxCellPath[_0x2b73[385]](_0xff22x5);if(_0xff22x4[_0x2b73[67]]< _0xff22x9[_0x2b73[67]]){var _0xff22x5=_0xff22x3,_0xff22xa=_0xff22x9,_0xff22x9=_0xff22x4,_0xff22x4=_0xff22xa};for(;null!= _0xff22x5;){_0xff22xa= this[_0x2b73[1197]](_0xff22x5);if(0== _0xff22x4[_0x2b73[2]](_0xff22x9+ mxCellPath[_0x2b73[1950]])&& null!= _0xff22xa){return _0xff22x5};_0xff22x9= mxCellPath[_0x2b73[1951]](_0xff22x9);_0xff22x5= _0xff22xa}}};return null};mxGraphModel[_0x2b73[202]][_0x2b73[205]]= function(_0xff22x2){_0xff22x2== this[_0x2b73[813]]?this[_0x2b73[1927]](null):null!= this[_0x2b73[1197]](_0xff22x2)&& this[_0x2b73[350]]( new mxChildChange(this,null,_0xff22x2));return _0xff22x2};mxGraphModel[_0x2b73[202]][_0x2b73[1102]]= function(_0xff22x2){if(null!= _0xff22x2&& null!= this[_0x2b73[895]]){for(var _0xff22x3=this[_0x2b73[262]](_0xff22x2)- 1;0<= _0xff22x3;_0xff22x3--){this[_0x2b73[1102]](this[_0x2b73[263]](_0xff22x2,_0xff22x3))};null!= this[_0x2b73[895]]&& null!= _0xff22x2[_0x2b73[1103]]()&& delete this[_0x2b73[895]][_0xff22x2[_0x2b73[1103]]()]}};mxGraphModel[_0x2b73[202]][_0x2b73[1952]]= function(_0xff22x2,_0xff22x3,_0xff22x4){var _0xff22x5=this[_0x2b73[1197]](_0xff22x2);null!= _0xff22x3?(_0xff22x3!= _0xff22x5|| _0xff22x5[_0x2b73[1738]](_0xff22x2)!= _0xff22x4)&& _0xff22x3[_0x2b73[1937]](_0xff22x2,_0xff22x4):null!= _0xff22x5&& (_0xff22x4= _0xff22x5[_0x2b73[1738]](_0xff22x2),_0xff22x5[_0x2b73[205]](_0xff22x4));!this[_0x2b73[442]](_0xff22x5)&& null!= _0xff22x3?this[_0x2b73[1941]](_0xff22x2):null== _0xff22x3&& this[_0x2b73[1102]](_0xff22x2);return _0xff22x5};mxGraphModel[_0x2b73[202]][_0x2b73[262]]= function(_0xff22x2){return null!= _0xff22x2?_0xff22x2[_0x2b73[262]]():0};mxGraphModel[_0x2b73[202]][_0x2b73[263]]= function(_0xff22x2,_0xff22x3){return null!= _0xff22x2?_0xff22x2[_0x2b73[263]](_0xff22x3):null};mxGraphModel[_0x2b73[202]][_0x2b73[1953]]= function(_0xff22x2){return null!= _0xff22x2?_0xff22x2[_0x2b73[1954]]:null};mxGraphModel[_0x2b73[202]][_0x2b73[1728]]= function(_0xff22x2){return this[_0x2b73[1955]](_0xff22x2,!0,!1)};mxGraphModel[_0x2b73[202]][_0x2b73[1956]]= function(_0xff22x2){return this[_0x2b73[1955]](_0xff22x2,!1,!0)};mxGraphModel[_0x2b73[202]][_0x2b73[1955]]= function(_0xff22x2,_0xff22x3,_0xff22x4){_0xff22x3= null!= _0xff22x3?_0xff22x3:!1;_0xff22x4= null!= _0xff22x4?_0xff22x4:!1;for(var _0xff22x5=this[_0x2b73[262]](_0xff22x2),_0xff22x9=[],_0xff22xa=0;_0xff22xa< _0xff22x5;_0xff22xa++){var _0xff22x12=this[_0x2b73[263]](_0xff22x2,_0xff22xa);(!_0xff22x4&& !_0xff22x3|| _0xff22x4&& this[_0x2b73[250]](_0xff22x12)|| _0xff22x3&& this[_0x2b73[1193]](_0xff22x12)) && _0xff22x9[_0x2b73[207]](_0xff22x12)};return _0xff22x9};mxGraphModel[_0x2b73[202]][_0x2b73[1709]]= function(_0xff22x2,_0xff22x3){return null!= _0xff22x2?_0xff22x2[_0x2b73[1709]](_0xff22x3):null};mxGraphModel[_0x2b73[202]][_0x2b73[1957]]= function(_0xff22x2,_0xff22x3,_0xff22x4){var _0xff22x5=_0xff22x3!= this[_0x2b73[1709]](_0xff22x2,_0xff22x4);this[_0x2b73[350]]( new mxTerminalChange(this,_0xff22x2,_0xff22x3,_0xff22x4));this[_0x2b73[1928]]&& _0xff22x5&& this[_0x2b73[1947]](_0xff22x2,this[_0x2b73[501]]());return _0xff22x3};mxGraphModel[_0x2b73[202]][_0x2b73[1958]]= function(_0xff22x2,_0xff22x3,_0xff22x4){this[_0x2b73[473]]();try{this[_0x2b73[1957]](_0xff22x2,_0xff22x3,!0),this[_0x2b73[1957]](_0xff22x2,_0xff22x4,!1)}finally{this[_0x2b73[476]]()}};mxGraphModel[_0x2b73[202]][_0x2b73[1959]]= function(_0xff22x2,_0xff22x3,_0xff22x4){var _0xff22x5=this[_0x2b73[1709]](_0xff22x2,_0xff22x4);null!= _0xff22x3?_0xff22x3[_0x2b73[1960]](_0xff22x2,_0xff22x4):null!= _0xff22x5&& _0xff22x5[_0x2b73[1961]](_0xff22x2,_0xff22x4);return _0xff22x5};mxGraphModel[_0x2b73[202]][_0x2b73[1707]]= function(_0xff22x2){return null!= _0xff22x2?_0xff22x2[_0x2b73[1707]]():0};mxGraphModel[_0x2b73[202]][_0x2b73[1708]]= function(_0xff22x2,_0xff22x3){return null!= _0xff22x2?_0xff22x2[_0x2b73[1708]](_0xff22x3):null};mxGraphModel[_0x2b73[202]][_0x2b73[1962]]= function(_0xff22x2,_0xff22x3,_0xff22x4){for(var _0xff22x5=0,_0xff22x9=this[_0x2b73[1707]](_0xff22x2),_0xff22xa=0;_0xff22xa< _0xff22x9;_0xff22xa++){var _0xff22x12=this[_0x2b73[1708]](_0xff22x2,_0xff22xa);_0xff22x12!= _0xff22x4&& this[_0x2b73[1709]](_0xff22x12,_0xff22x3)== _0xff22x2&& _0xff22x5++};return _0xff22x5};mxGraphModel[_0x2b73[202]][_0x2b73[1756]]= function(_0xff22x2){return this[_0x2b73[264]](_0xff22x2,!0,!0,!1)};mxGraphModel[_0x2b73[202]][_0x2b73[1867]]= function(_0xff22x2){return this[_0x2b73[264]](_0xff22x2,!0,!1,!1)};mxGraphModel[_0x2b73[202]][_0x2b73[1963]]= function(_0xff22x2){return this[_0x2b73[264]](_0xff22x2,!1,!0,!1)};mxGraphModel[_0x2b73[202]][_0x2b73[264]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){_0xff22x3= null!= _0xff22x3?_0xff22x3:!0;_0xff22x4= null!= _0xff22x4?_0xff22x4:!0;_0xff22x5= null!= _0xff22x5?_0xff22x5:!0;for(var _0xff22x9=this[_0x2b73[1707]](_0xff22x2),_0xff22xa=[],_0xff22x12=0;_0xff22x12< _0xff22x9;_0xff22x12++){var _0xff22x13=this[_0x2b73[1708]](_0xff22x2,_0xff22x12),_0xff22x14=this[_0x2b73[1709]](_0xff22x13,!0),_0xff22x15=this[_0x2b73[1709]](_0xff22x13,!1);(_0xff22x5&& _0xff22x14== _0xff22x15|| _0xff22x14!= _0xff22x15&& (_0xff22x3&& _0xff22x15== _0xff22x2|| _0xff22x4&& _0xff22x14== _0xff22x2))&& _0xff22xa[_0x2b73[207]](_0xff22x13)};return _0xff22xa};mxGraphModel[_0x2b73[202]][_0x2b73[1781]]= function(_0xff22x2,_0xff22x3,_0xff22x4){_0xff22x4= null!= _0xff22x4?_0xff22x4:!1;var _0xff22x5=this[_0x2b73[1707]](_0xff22x2),_0xff22x9=this[_0x2b73[1707]](_0xff22x3),_0xff22xa=_0xff22x2,_0xff22x12=_0xff22x5;_0xff22x9< _0xff22x5&& (_0xff22x12= _0xff22x9,_0xff22xa= _0xff22x3);_0xff22x5= [];for(_0xff22x9= 0;_0xff22x9< _0xff22x12;_0xff22x9++){var _0xff22x13=this[_0x2b73[1708]](_0xff22xa,_0xff22x9),_0xff22x14=this[_0x2b73[1709]](_0xff22x13,!0),_0xff22x15=this[_0x2b73[1709]](_0xff22x13,!1),_0xff22x16=_0xff22x15== _0xff22x2&& _0xff22x14== _0xff22x3;(_0xff22x14== _0xff22x2&& _0xff22x15== _0xff22x3|| !_0xff22x4&& _0xff22x16)&& _0xff22x5[_0x2b73[207]](_0xff22x13)};return _0xff22x5};mxGraphModel[_0x2b73[202]][_0x2b73[1808]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){_0xff22x4= null!= _0xff22x4?_0xff22x4:!0;_0xff22x5= null!= _0xff22x5?_0xff22x5:!0;var _0xff22x9=[];if(null!= _0xff22x2){for(var _0xff22xa=0;_0xff22xa< _0xff22x2[_0x2b73[67]];_0xff22xa++){var _0xff22x12=this[_0x2b73[1709]](_0xff22x2[_0xff22xa],!0),_0xff22x13=this[_0x2b73[1709]](_0xff22x2[_0xff22xa],!1);_0xff22x12== _0xff22x3&& null!= _0xff22x13&& _0xff22x13!= _0xff22x3&& _0xff22x5?_0xff22x9[_0x2b73[207]](_0xff22x13):_0xff22x13== _0xff22x3&& (null!= _0xff22x12&& _0xff22x12!= _0xff22x3&& _0xff22x4)&& _0xff22x9[_0x2b73[207]](_0xff22x12)}};return _0xff22x9};mxGraphModel[_0x2b73[202]][_0x2b73[1964]]= function(_0xff22x2){for(var _0xff22x3=[],_0xff22x4=0;_0xff22x4< _0xff22x2[_0x2b73[67]];_0xff22x4++){for(var _0xff22x5=_0xff22x2[_0xff22x4],_0xff22x9=!0,_0xff22xa=this[_0x2b73[1197]](_0xff22x5);null!= _0xff22xa;){if(0<= mxUtils[_0x2b73[2]](_0xff22x2,_0xff22xa)){_0xff22x9= !1;break};_0xff22xa= this[_0x2b73[1197]](_0xff22xa)};_0xff22x9&& _0xff22x3[_0x2b73[207]](_0xff22x5)};return _0xff22x3};mxGraphModel[_0x2b73[202]][_0x2b73[1193]]= function(_0xff22x2){return null!= _0xff22x2?_0xff22x2[_0x2b73[1193]]():!1};mxGraphModel[_0x2b73[202]][_0x2b73[250]]= function(_0xff22x2){return null!= _0xff22x2?_0xff22x2[_0x2b73[250]]():!1};mxGraphModel[_0x2b73[202]][_0x2b73[1965]]= function(_0xff22x2){return null!= _0xff22x2?_0xff22x2[_0x2b73[1965]]():!1};mxGraphModel[_0x2b73[202]][_0x2b73[433]]= function(_0xff22x2){return null!= _0xff22x2?_0xff22x2[_0x2b73[433]]():null};mxGraphModel[_0x2b73[202]][_0x2b73[1966]]= function(_0xff22x2,_0xff22x3){this[_0x2b73[350]]( new mxValueChange(this,_0xff22x2,_0xff22x3));return _0xff22x3};mxGraphModel[_0x2b73[202]][_0x2b73[1967]]= function(_0xff22x2,_0xff22x3){return _0xff22x2[_0x2b73[1968]](_0xff22x3)};mxGraphModel[_0x2b73[202]][_0x2b73[1721]]= function(_0xff22x2,_0xff22x3){return null!= _0xff22x2?_0xff22x2[_0x2b73[1721]]():null};mxGraphModel[_0x2b73[202]][_0x2b73[1724]]= function(_0xff22x2,_0xff22x3){_0xff22x3!= this[_0x2b73[1721]](_0xff22x2)&& this[_0x2b73[350]]( new mxGeometryChange(this,_0xff22x2,_0xff22x3));return _0xff22x3};mxGraphModel[_0x2b73[202]][_0x2b73[1969]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=this[_0x2b73[1721]](_0xff22x2);_0xff22x2[_0x2b73[1724]](_0xff22x3);return _0xff22x4};mxGraphModel[_0x2b73[202]][_0x2b73[474]]= function(_0xff22x2){return null!= _0xff22x2?_0xff22x2[_0x2b73[474]]():null};mxGraphModel[_0x2b73[202]][_0x2b73[475]]= function(_0xff22x2,_0xff22x3){_0xff22x3!= this[_0x2b73[474]](_0xff22x2)&& this[_0x2b73[350]]( new mxStyleChange(this,_0xff22x2,_0xff22x3));return _0xff22x3};mxGraphModel[_0x2b73[202]][_0x2b73[1970]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=this[_0x2b73[474]](_0xff22x2);_0xff22x2[_0x2b73[475]](_0xff22x3);return _0xff22x4};mxGraphModel[_0x2b73[202]][_0x2b73[1971]]= function(_0xff22x2){return null!= _0xff22x2?_0xff22x2[_0x2b73[1971]]():!1};mxGraphModel[_0x2b73[202]][_0x2b73[1972]]= function(_0xff22x2,_0xff22x3){_0xff22x3!= this[_0x2b73[1971]](_0xff22x2)&& this[_0x2b73[350]]( new mxCollapseChange(this,_0xff22x2,_0xff22x3));return _0xff22x3};mxGraphModel[_0x2b73[202]][_0x2b73[1973]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=this[_0x2b73[1971]](_0xff22x2);_0xff22x2[_0x2b73[1972]](_0xff22x3);return _0xff22x4};mxGraphModel[_0x2b73[202]][_0x2b73[174]]= function(_0xff22x2){return null!= _0xff22x2?_0xff22x2[_0x2b73[174]]():!1};mxGraphModel[_0x2b73[202]][_0x2b73[175]]= function(_0xff22x2,_0xff22x3){_0xff22x3!= this[_0x2b73[174]](_0xff22x2)&& this[_0x2b73[350]]( new mxVisibleChange(this,_0xff22x2,_0xff22x3));return _0xff22x3};mxGraphModel[_0x2b73[202]][_0x2b73[1974]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=this[_0x2b73[174]](_0xff22x2);_0xff22x2[_0x2b73[175]](_0xff22x3);return _0xff22x4};mxGraphModel[_0x2b73[202]][_0x2b73[350]]= function(_0xff22x2){_0xff22x2[_0x2b73[350]]();this[_0x2b73[473]]();this[_0x2b73[1926]][_0x2b73[99]](_0xff22x2);this[_0x2b73[746]]( new mxEventObject(mxEvent.EXECUTE,_0x2b73[826],_0xff22x2));this[_0x2b73[746]]( new mxEventObject(mxEvent.EXECUTED,_0x2b73[826],_0xff22x2));this[_0x2b73[476]]()};mxGraphModel[_0x2b73[202]][_0x2b73[473]]= function(){this[_0x2b73[1932]]++;this[_0x2b73[746]]( new mxEventObject(mxEvent.BEGIN_UPDATE));1== this[_0x2b73[1932]]&& this[_0x2b73[746]]( new mxEventObject(mxEvent.START_EDIT))};mxGraphModel[_0x2b73[202]][_0x2b73[476]]= function(){this[_0x2b73[1932]]--;0== this[_0x2b73[1932]]&& this[_0x2b73[746]]( new mxEventObject(mxEvent.END_EDIT));if(!this[_0x2b73[1933]]){this[_0x2b73[1933]]= 0== this[_0x2b73[1932]];this[_0x2b73[746]]( new mxEventObject(mxEvent.END_UPDATE,_0x2b73[1061],this[_0x2b73[1926]]));try{if(this[_0x2b73[1933]]&& !this[_0x2b73[1926]][_0x2b73[1107]]()){this[_0x2b73[746]]( new mxEventObject(mxEvent.BEFORE_UNDO,_0x2b73[1061],this[_0x2b73[1926]]));var _0xff22x2=this[_0x2b73[1926]];this[_0x2b73[1926]]= this[_0x2b73[1096]]();_0xff22x2[_0x2b73[827]]();this[_0x2b73[746]]( new mxEventObject(mxEvent.UNDO,_0x2b73[1061],_0xff22x2))}}finally{this[_0x2b73[1933]]= !1}}};mxGraphModel[_0x2b73[202]][_0x2b73[1096]]= function(){var _0xff22x2= new mxUndoableEdit(this,!0);_0xff22x2[_0x2b73[827]]= function(){_0xff22x2[_0x2b73[1097]][_0x2b73[746]]( new mxEventObject(mxEvent.CHANGE,_0x2b73[1061],_0xff22x2,_0x2b73[1065],_0xff22x2[_0x2b73[1065]]));_0xff22x2[_0x2b73[1097]][_0x2b73[746]]( new mxEventObject(mxEvent.NOTIFY,_0x2b73[1061],_0xff22x2,_0x2b73[1065],_0xff22x2[_0x2b73[1065]]))};return _0xff22x2};mxGraphModel[_0x2b73[202]][_0x2b73[1975]]= function(_0xff22x2,_0xff22x3,_0xff22x4){_0xff22x4= null!= _0xff22x4?_0xff22x4:!0;this[_0x2b73[473]]();try{var _0xff22x5={};this[_0x2b73[1976]](_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5);for(var _0xff22x9 in _0xff22x5){var _0xff22xa=_0xff22x5[_0xff22x9],_0xff22x12=this[_0x2b73[1709]](_0xff22xa,!0);null!= _0xff22x12&& (_0xff22x12= _0xff22x5[mxCellPath[_0x2b73[385]](_0xff22x12)],this[_0x2b73[1957]](_0xff22xa,_0xff22x12,!0));_0xff22x12= this[_0x2b73[1709]](_0xff22xa,!1);null!= _0xff22x12&& (_0xff22x12= _0xff22x5[mxCellPath[_0x2b73[385]](_0xff22x12)],this[_0x2b73[1957]](_0xff22xa,_0xff22x12,!1))}}finally{this[_0x2b73[476]]()}};mxGraphModel[_0x2b73[202]][_0x2b73[1976]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){this[_0x2b73[473]]();try{for(var _0xff22x9=_0xff22x2[_0x2b73[262]](),_0xff22xa=0;_0xff22xa< _0xff22x9;_0xff22xa++){var _0xff22x12=_0xff22x2[_0x2b73[263]](_0xff22xa);if(_0x2b73[279]== typeof _0xff22x12[_0x2b73[1103]]){var _0xff22x13=_0xff22x12[_0x2b73[1103]](),_0xff22x14=null!= _0xff22x13&& (!this[_0x2b73[250]](_0xff22x12)|| !_0xff22x4)?this[_0x2b73[736]](_0xff22x13):null;if(null== _0xff22x14){var _0xff22x15=_0xff22x12[_0x2b73[238]]();_0xff22x15[_0x2b73[1945]](_0xff22x13);_0xff22x15[_0x2b73[1957]](_0xff22x12[_0x2b73[1709]](!0),!0);_0xff22x15[_0x2b73[1957]](_0xff22x12[_0x2b73[1709]](!1),!1);_0xff22x14= _0xff22x3[_0x2b73[1937]](_0xff22x15);this[_0x2b73[1941]](_0xff22x14)};_0xff22x5[mxCellPath[_0x2b73[385]](_0xff22x12)]= _0xff22x14;this[_0x2b73[1976]](_0xff22x12,_0xff22x14,_0xff22x4,_0xff22x5)}}}finally{this[_0x2b73[476]]()}};mxGraphModel[_0x2b73[202]][_0x2b73[1977]]= function(_0xff22x2){var _0xff22x3=[];if(null!= _0xff22x2){for(var _0xff22x4={},_0xff22x5=0;_0xff22x5< _0xff22x2[_0x2b73[67]];_0xff22x5++){var _0xff22x9=this[_0x2b73[1197]](_0xff22x2[_0xff22x5]);if(null!= _0xff22x9){var _0xff22xa=mxCellPath[_0x2b73[385]](_0xff22x9);null== _0xff22x4[_0xff22xa]&& (_0xff22x4[_0xff22xa]= _0xff22x9,_0xff22x3[_0x2b73[207]](_0xff22x9))}}};return _0xff22x3};mxGraphModel[_0x2b73[202]][_0x2b73[1978]]= function(_0xff22x2){return null!= _0xff22x2?this[_0x2b73[899]]([_0xff22x2],!0)[0]:null};mxGraphModel[_0x2b73[202]][_0x2b73[899]]= function(_0xff22x2,_0xff22x3){for(var _0xff22x4={},_0xff22x5=[],_0xff22x9=0;_0xff22x9< _0xff22x2[_0x2b73[67]];_0xff22x9++){null!= _0xff22x2[_0xff22x9]?_0xff22x5[_0x2b73[207]](this[_0x2b73[1979]](_0xff22x2[_0xff22x9],_0xff22x4,_0xff22x3)):_0xff22x5[_0x2b73[207]](null)};for(_0xff22x9= 0;_0xff22x9< _0xff22x5[_0x2b73[67]];_0xff22x9++){null!= _0xff22x5[_0xff22x9]&& this[_0x2b73[1980]](_0xff22x5[_0xff22x9],_0xff22x2[_0xff22x9],_0xff22x4)};return _0xff22x5};mxGraphModel[_0x2b73[202]][_0x2b73[1979]]= function(_0xff22x2,_0xff22x3,_0xff22x4){var _0xff22x5=this[_0x2b73[1981]](_0xff22x2);_0xff22x3[mxObjectIdentity[_0x2b73[203]](_0xff22x2)]= _0xff22x5;if(_0xff22x4){_0xff22x4= this[_0x2b73[262]](_0xff22x2);for(var _0xff22x9=0;_0xff22x9< _0xff22x4;_0xff22x9++){var _0xff22xa=this[_0x2b73[1979]](this[_0x2b73[263]](_0xff22x2,_0xff22x9),_0xff22x3,!0);_0xff22x5[_0x2b73[1937]](_0xff22xa)}};return _0xff22x5};mxGraphModel[_0x2b73[202]][_0x2b73[1981]]= function(_0xff22x2){return _0xff22x2[_0x2b73[238]]()};mxGraphModel[_0x2b73[202]][_0x2b73[1980]]= function(_0xff22x2,_0xff22x3,_0xff22x4){var _0xff22x5=this[_0x2b73[1709]](_0xff22x3,!0);null!= _0xff22x5&& (_0xff22x5= _0xff22x4[mxObjectIdentity[_0x2b73[203]](_0xff22x5)],null!= _0xff22x5&& _0xff22x5[_0x2b73[1960]](_0xff22x2,!0));_0xff22x5= this[_0x2b73[1709]](_0xff22x3,!1);null!= _0xff22x5&& (_0xff22x5= _0xff22x4[mxObjectIdentity[_0x2b73[203]](_0xff22x5)],null!= _0xff22x5&& _0xff22x5[_0x2b73[1960]](_0xff22x2,!1));for(var _0xff22x5=this[_0x2b73[262]](_0xff22x2),_0xff22x9=0;_0xff22x9< _0xff22x5;_0xff22x9++){this[_0x2b73[1980]](this[_0x2b73[263]](_0xff22x2,_0xff22x9),this[_0x2b73[263]](_0xff22x3,_0xff22x9),_0xff22x4)}};function mxRootChange(_0xff22x2,_0xff22x3){this[_0x2b73[251]]= _0xff22x2;this[_0x2b73[257]]= this[_0x2b73[813]]= _0xff22x3}mxRootChange[_0x2b73[202]][_0x2b73[350]]= function(){this[_0x2b73[813]]= this[_0x2b73[257]];this[_0x2b73[257]]= this[_0x2b73[251]][_0x2b73[1940]](this[_0x2b73[257]])};function mxChildChange(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){this[_0x2b73[251]]= _0xff22x2;this[_0x2b73[257]]= this[_0x2b73[1101]]= _0xff22x3;this[_0x2b73[247]]= _0xff22x4;this[_0x2b73[1982]]= this[_0x2b73[1983]]= _0xff22x5}mxChildChange[_0x2b73[202]][_0x2b73[350]]= function(){var _0xff22x2=this[_0x2b73[251]][_0x2b73[1197]](this[_0x2b73[247]]),_0xff22x3=null!= _0xff22x2?_0xff22x2[_0x2b73[1738]](this[_0x2b73[247]]):0;null== this[_0x2b73[257]]&& this[_0x2b73[807]](this[_0x2b73[247]],!1);_0xff22x2= this[_0x2b73[251]][_0x2b73[1952]](this[_0x2b73[247]],this[_0x2b73[257]],this[_0x2b73[1982]]);null!= this[_0x2b73[257]]&& this[_0x2b73[807]](this[_0x2b73[247]],!0);this[_0x2b73[1101]]= this[_0x2b73[257]];this[_0x2b73[257]]= _0xff22x2;this[_0x2b73[1983]]= this[_0x2b73[1982]];this[_0x2b73[1982]]= _0xff22x3};mxChildChange[_0x2b73[202]][_0x2b73[807]]= function(_0xff22x2,_0xff22x3){_0xff22x3= null!= _0xff22x3?_0xff22x3:!0;var _0xff22x4=_0xff22x2[_0x2b73[1709]](!0),_0xff22x5=_0xff22x2[_0x2b73[1709]](!1);null!= _0xff22x4&& (_0xff22x3?this[_0x2b73[251]][_0x2b73[1959]](_0xff22x2,_0xff22x4,!0):this[_0x2b73[251]][_0x2b73[1959]](_0xff22x2,null,!0));null!= _0xff22x5&& (_0xff22x3?this[_0x2b73[251]][_0x2b73[1959]](_0xff22x2,_0xff22x5,!1):this[_0x2b73[251]][_0x2b73[1959]](_0xff22x2,null,!1));_0xff22x2[_0x2b73[1957]](_0xff22x4,!0);_0xff22x2[_0x2b73[1957]](_0xff22x5,!1);_0xff22x4= this[_0x2b73[251]][_0x2b73[262]](_0xff22x2);for(_0xff22x5= 0;_0xff22x5< _0xff22x4;_0xff22x5++){this[_0x2b73[807]](this[_0x2b73[251]][_0x2b73[263]](_0xff22x2,_0xff22x5),_0xff22x3)}};function mxTerminalChange(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){this[_0x2b73[251]]= _0xff22x2;this[_0x2b73[246]]= _0xff22x3;this[_0x2b73[257]]= this[_0x2b73[1984]]= _0xff22x4;this[_0x2b73[1097]]= _0xff22x5}mxTerminalChange[_0x2b73[202]][_0x2b73[350]]= function(){this[_0x2b73[1984]]= this[_0x2b73[257]];this[_0x2b73[257]]= this[_0x2b73[251]][_0x2b73[1959]](this[_0x2b73[246]],this[_0x2b73[257]],this[_0x2b73[1097]])};function mxValueChange(_0xff22x2,_0xff22x3,_0xff22x4){this[_0x2b73[251]]= _0xff22x2;this[_0x2b73[246]]= _0xff22x3;this[_0x2b73[257]]= this[_0x2b73[131]]= _0xff22x4}mxValueChange[_0x2b73[202]][_0x2b73[350]]= function(){this[_0x2b73[131]]= this[_0x2b73[257]];this[_0x2b73[257]]= this[_0x2b73[251]][_0x2b73[1967]](this[_0x2b73[246]],this[_0x2b73[257]])};function mxStyleChange(_0xff22x2,_0xff22x3,_0xff22x4){this[_0x2b73[251]]= _0xff22x2;this[_0x2b73[246]]= _0xff22x3;this[_0x2b73[257]]= this[_0x2b73[124]]= _0xff22x4}mxStyleChange[_0x2b73[202]][_0x2b73[350]]= function(){this[_0x2b73[124]]= this[_0x2b73[257]];this[_0x2b73[257]]= this[_0x2b73[251]][_0x2b73[1970]](this[_0x2b73[246]],this[_0x2b73[257]])};function mxGeometryChange(_0xff22x2,_0xff22x3,_0xff22x4){this[_0x2b73[251]]= _0xff22x2;this[_0x2b73[246]]= _0xff22x3;this[_0x2b73[257]]= this[_0x2b73[256]]= _0xff22x4}mxGeometryChange[_0x2b73[202]][_0x2b73[350]]= function(){this[_0x2b73[256]]= this[_0x2b73[257]];this[_0x2b73[257]]= this[_0x2b73[251]][_0x2b73[1969]](this[_0x2b73[246]],this[_0x2b73[257]])};function mxCollapseChange(_0xff22x2,_0xff22x3,_0xff22x4){this[_0x2b73[251]]= _0xff22x2;this[_0x2b73[246]]= _0xff22x3;this[_0x2b73[257]]= this[_0x2b73[1985]]= _0xff22x4}mxCollapseChange[_0x2b73[202]][_0x2b73[350]]= function(){this[_0x2b73[1985]]= this[_0x2b73[257]];this[_0x2b73[257]]= this[_0x2b73[251]][_0x2b73[1973]](this[_0x2b73[246]],this[_0x2b73[257]])};function mxVisibleChange(_0xff22x2,_0xff22x3,_0xff22x4){this[_0x2b73[251]]= _0xff22x2;this[_0x2b73[246]]= _0xff22x3;this[_0x2b73[257]]= this[_0x2b73[189]]= _0xff22x4}mxVisibleChange[_0x2b73[202]][_0x2b73[350]]= function(){this[_0x2b73[189]]= this[_0x2b73[257]];this[_0x2b73[257]]= this[_0x2b73[251]][_0x2b73[1974]](this[_0x2b73[246]],this[_0x2b73[257]])};function mxCellAttributeChange(_0xff22x2,_0xff22x3,_0xff22x4){this[_0x2b73[246]]= _0xff22x2;this[_0x2b73[1986]]= _0xff22x3;this[_0x2b73[257]]= this[_0x2b73[131]]= _0xff22x4}mxCellAttributeChange[_0x2b73[202]][_0x2b73[350]]= function(){var _0xff22x2=this[_0x2b73[246]][_0x2b73[284]](this[_0x2b73[1986]]);null== this[_0x2b73[257]]?this[_0x2b73[246]][_0x2b73[131]][_0x2b73[1390]](this[_0x2b73[1986]]):this[_0x2b73[246]][_0x2b73[57]](this[_0x2b73[1986]],this[_0x2b73[257]]);this[_0x2b73[257]]= _0xff22x2};function mxCell(_0xff22x2,_0xff22x3,_0xff22x4){this[_0x2b73[131]]= _0xff22x2;this[_0x2b73[1724]](_0xff22x3);this[_0x2b73[475]](_0xff22x4);if(null!= this[_0x2b73[1987]]){this[_0x2b73[1987]]()}}mxCell[_0x2b73[202]][_0x2b73[1363]]= null;mxCell[_0x2b73[202]][_0x2b73[131]]= null;mxCell[_0x2b73[202]][_0x2b73[256]]= null;mxCell[_0x2b73[202]][_0x2b73[124]]= null;mxCell[_0x2b73[202]][_0x2b73[1988]]= !1;mxCell[_0x2b73[202]][_0x2b73[1989]]= !1;mxCell[_0x2b73[202]][_0x2b73[1990]]= !0;mxCell[_0x2b73[202]][_0x2b73[189]]= !0;mxCell[_0x2b73[202]][_0x2b73[1985]]= !1;mxCell[_0x2b73[202]][_0x2b73[1101]]= null;mxCell[_0x2b73[202]][_0x2b73[1097]]= null;mxCell[_0x2b73[202]][_0x2b73[772]]= null;mxCell[_0x2b73[202]][_0x2b73[1954]]= null;mxCell[_0x2b73[202]][_0x2b73[1842]]= null;mxCell[_0x2b73[202]][_0x2b73[1991]]= _0x2b73[1992][_0x2b73[224]](_0x2b73[185]);mxCell[_0x2b73[202]][_0x2b73[1103]]= function(){return this[_0x2b73[1363]]};mxCell[_0x2b73[202]][_0x2b73[1945]]= function(_0xff22x2){this[_0x2b73[1363]]= _0xff22x2};mxCell[_0x2b73[202]][_0x2b73[433]]= function(){return this[_0x2b73[131]]};mxCell[_0x2b73[202]][_0x2b73[1966]]= function(_0xff22x2){this[_0x2b73[131]]= _0xff22x2};mxCell[_0x2b73[202]][_0x2b73[1968]]= function(_0xff22x2){var _0xff22x3=this[_0x2b73[433]]();this[_0x2b73[1966]](_0xff22x2);return _0xff22x3};mxCell[_0x2b73[202]][_0x2b73[1721]]= function(){return this[_0x2b73[256]]};mxCell[_0x2b73[202]][_0x2b73[1724]]= function(_0xff22x2){this[_0x2b73[256]]= _0xff22x2};mxCell[_0x2b73[202]][_0x2b73[474]]= function(){return this[_0x2b73[124]]};mxCell[_0x2b73[202]][_0x2b73[475]]= function(_0xff22x2){this[_0x2b73[124]]= _0xff22x2};mxCell[_0x2b73[202]][_0x2b73[1193]]= function(){return this[_0x2b73[1988]]};mxCell[_0x2b73[202]][_0x2b73[1993]]= function(_0xff22x2){this[_0x2b73[1988]]= _0xff22x2};mxCell[_0x2b73[202]][_0x2b73[250]]= function(){return this[_0x2b73[1989]]};mxCell[_0x2b73[202]][_0x2b73[1994]]= function(_0xff22x2){this[_0x2b73[1989]]= _0xff22x2};mxCell[_0x2b73[202]][_0x2b73[1965]]= function(){return this[_0x2b73[1990]]};mxCell[_0x2b73[202]][_0x2b73[1995]]= function(_0xff22x2){this[_0x2b73[1990]]= _0xff22x2};mxCell[_0x2b73[202]][_0x2b73[174]]= function(){return this[_0x2b73[189]]};mxCell[_0x2b73[202]][_0x2b73[175]]= function(_0xff22x2){this[_0x2b73[189]]= _0xff22x2};mxCell[_0x2b73[202]][_0x2b73[1971]]= function(){return this[_0x2b73[1985]]};mxCell[_0x2b73[202]][_0x2b73[1972]]= function(_0xff22x2){this[_0x2b73[1985]]= _0xff22x2};mxCell[_0x2b73[202]][_0x2b73[1197]]= function(){return this[_0x2b73[1101]]};mxCell[_0x2b73[202]][_0x2b73[1996]]= function(_0xff22x2){this[_0x2b73[1101]]= _0xff22x2};mxCell[_0x2b73[202]][_0x2b73[1709]]= function(_0xff22x2){return _0xff22x2?this[_0x2b73[1097]]:this[_0x2b73[772]]};mxCell[_0x2b73[202]][_0x2b73[1957]]= function(_0xff22x2,_0xff22x3){_0xff22x3?this[_0x2b73[1097]]= _0xff22x2:this[_0x2b73[772]]= _0xff22x2;return _0xff22x2};mxCell[_0x2b73[202]][_0x2b73[262]]= function(){return null== this[_0x2b73[1954]]?0:this[_0x2b73[1954]][_0x2b73[67]]};mxCell[_0x2b73[202]][_0x2b73[1738]]= function(_0xff22x2){return mxUtils[_0x2b73[2]](this[_0x2b73[1954]],_0xff22x2)};mxCell[_0x2b73[202]][_0x2b73[263]]= function(_0xff22x2){return null== this[_0x2b73[1954]]?null:this[_0x2b73[1954]][_0xff22x2]};mxCell[_0x2b73[202]][_0x2b73[1937]]= function(_0xff22x2,_0xff22x3){null!= _0xff22x2&& (null== _0xff22x3&& (_0xff22x3= this[_0x2b73[262]](),_0xff22x2[_0x2b73[1197]]()== this&& _0xff22x3--),_0xff22x2[_0x2b73[1997]](),_0xff22x2[_0x2b73[1996]](this),null== this[_0x2b73[1954]]?(this[_0x2b73[1954]]= [],this[_0x2b73[1954]][_0x2b73[207]](_0xff22x2)):this[_0x2b73[1954]][_0x2b73[300]](_0xff22x3,0,_0xff22x2));return _0xff22x2};mxCell[_0x2b73[202]][_0x2b73[205]]= function(_0xff22x2){var _0xff22x3=null;null!= this[_0x2b73[1954]]&& 0<= _0xff22x2&& (_0xff22x3= this[_0x2b73[263]](_0xff22x2),null!= _0xff22x3&& (this[_0x2b73[1954]][_0x2b73[300]](_0xff22x2,1),_0xff22x3[_0x2b73[1996]](null)));return _0xff22x3};mxCell[_0x2b73[202]][_0x2b73[1997]]= function(){if(null!= this[_0x2b73[1101]]){var _0xff22x2=this[_0x2b73[1101]][_0x2b73[1738]](this);this[_0x2b73[1101]][_0x2b73[205]](_0xff22x2)}};mxCell[_0x2b73[202]][_0x2b73[1707]]= function(){return null== this[_0x2b73[1842]]?0:this[_0x2b73[1842]][_0x2b73[67]]};mxCell[_0x2b73[202]][_0x2b73[1998]]= function(_0xff22x2){return mxUtils[_0x2b73[2]](this[_0x2b73[1842]],_0xff22x2)};mxCell[_0x2b73[202]][_0x2b73[1708]]= function(_0xff22x2){return null== this[_0x2b73[1842]]?null:this[_0x2b73[1842]][_0xff22x2]};mxCell[_0x2b73[202]][_0x2b73[1960]]= function(_0xff22x2,_0xff22x3){if(null!= _0xff22x2&& (_0xff22x2[_0x2b73[1999]](_0xff22x3),_0xff22x2[_0x2b73[1957]](this,_0xff22x3),null== this[_0x2b73[1842]]|| _0xff22x2[_0x2b73[1709]](!_0xff22x3) != this|| 0> mxUtils[_0x2b73[2]](this[_0x2b73[1842]],_0xff22x2))){null== this[_0x2b73[1842]]&& (this[_0x2b73[1842]]= []),this[_0x2b73[1842]][_0x2b73[207]](_0xff22x2)};return _0xff22x2};mxCell[_0x2b73[202]][_0x2b73[1961]]= function(_0xff22x2,_0xff22x3){if(null!= _0xff22x2){if(_0xff22x2[_0x2b73[1709]](!_0xff22x3) != this&& null!= this[_0x2b73[1842]]){var _0xff22x4=this[_0x2b73[1998]](_0xff22x2);0<= _0xff22x4&& this[_0x2b73[1842]][_0x2b73[300]](_0xff22x4,1)};_0xff22x2[_0x2b73[1957]](null,_0xff22x3)};return _0xff22x2};mxCell[_0x2b73[202]][_0x2b73[1999]]= function(_0xff22x2){var _0xff22x3=this[_0x2b73[1709]](_0xff22x2);null!= _0xff22x3&& _0xff22x3[_0x2b73[1961]](this,_0xff22x2)};mxCell[_0x2b73[202]][_0x2b73[284]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=this[_0x2b73[433]]();return (null!= _0xff22x4&& _0xff22x4[_0x2b73[288]]== mxConstants[_0x2b73[289]]?_0xff22x4[_0x2b73[284]](_0xff22x2):null)|| _0xff22x3};mxCell[_0x2b73[202]][_0x2b73[57]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=this[_0x2b73[433]]();null!= _0xff22x4&& _0xff22x4[_0x2b73[288]]== mxConstants[_0x2b73[289]]&& _0xff22x4[_0x2b73[57]](_0xff22x2,_0xff22x3)};mxCell[_0x2b73[202]][_0x2b73[238]]= function(){var _0xff22x2=mxUtils[_0x2b73[238]](this,this[_0x2b73[1991]]);_0xff22x2[_0x2b73[1966]](this[_0x2b73[2000]]());return _0xff22x2};mxCell[_0x2b73[202]][_0x2b73[2000]]= function(){var _0xff22x2=this[_0x2b73[433]]();null!= _0xff22x2&& (_0x2b73[279]== typeof _0xff22x2[_0x2b73[238]]?_0xff22x2= _0xff22x2[_0x2b73[238]]():isNaN(_0xff22x2[_0x2b73[288]])|| (_0xff22x2= _0xff22x2[_0x2b73[511]](!0)));return _0xff22x2};function mxGeometry(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){mxRectangle[_0x2b73[239]](this,_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5)}mxGeometry[_0x2b73[202]]= new mxRectangle;mxGeometry[_0x2b73[202]][_0x2b73[196]]= mxGeometry;mxGeometry[_0x2b73[202]][_0x2b73[2001]]= !0;mxGeometry[_0x2b73[202]][_0x2b73[2002]]= null;mxGeometry[_0x2b73[202]][_0x2b73[2003]]= null;mxGeometry[_0x2b73[202]][_0x2b73[2004]]= null;mxGeometry[_0x2b73[202]][_0x2b73[1525]]= null;mxGeometry[_0x2b73[202]][_0x2b73[1368]]= null;mxGeometry[_0x2b73[202]][_0x2b73[1500]]= !1;mxGeometry[_0x2b73[202]][_0x2b73[2005]]= function(){if(null!= this[_0x2b73[2002]]){var _0xff22x2= new mxRectangle(this[_0x2b73[235]],this[_0x2b73[236]],this[_0x2b73[117]],this[_0x2b73[119]]);this[_0x2b73[235]]= this[_0x2b73[2002]][_0x2b73[235]];this[_0x2b73[236]]= this[_0x2b73[2002]][_0x2b73[236]];this[_0x2b73[117]]= this[_0x2b73[2002]][_0x2b73[117]];this[_0x2b73[119]]= this[_0x2b73[2002]][_0x2b73[119]];this[_0x2b73[2002]]= _0xff22x2}};mxGeometry[_0x2b73[202]][_0x2b73[2006]]= function(_0xff22x2){return _0xff22x2?this[_0x2b73[2003]]:this[_0x2b73[2004]]};mxGeometry[_0x2b73[202]][_0x2b73[2007]]= function(_0xff22x2,_0xff22x3){_0xff22x3?this[_0x2b73[2003]]= _0xff22x2:this[_0x2b73[2004]]= _0xff22x2;return _0xff22x2};mxGeometry[_0x2b73[202]][_0x2b73[513]]= function(_0xff22x2,_0xff22x3){this[_0x2b73[238]]();this[_0x2b73[1500]]|| (this[_0x2b73[235]]+= _0xff22x2,this[_0x2b73[236]]+= _0xff22x3);null!= this[_0x2b73[2003]]&& (this[_0x2b73[2003]][_0x2b73[235]]+= _0xff22x2,this[_0x2b73[2003]][_0x2b73[236]]+= _0xff22x3);null!= this[_0x2b73[2004]]&& (this[_0x2b73[2004]][_0x2b73[235]]+= _0xff22x2,this[_0x2b73[2004]][_0x2b73[236]]+= _0xff22x3);if(this[_0x2b73[2001]]&& null!= this[_0x2b73[1525]]){for(var _0xff22x4=this[_0x2b73[1525]][_0x2b73[67]],_0xff22x5=0;_0xff22x5< _0xff22x4;_0xff22x5++){var _0xff22x9=this[_0x2b73[1525]][_0xff22x5];null!= _0xff22x9&& (_0xff22x9[_0x2b73[235]]+= _0xff22x2,_0xff22x9[_0x2b73[236]]+= _0xff22x3)}}};var mxCellPath={PATH_SEPARATOR:_0x2b73[87],create:function(_0xff22x2){var _0xff22x3=_0x2b73[110];if(null!= _0xff22x2){for(var _0xff22x4=_0xff22x2[_0x2b73[1197]]();null!= _0xff22x4;){_0xff22x3= _0xff22x4[_0x2b73[1738]](_0xff22x2)+ mxCellPath[_0x2b73[1950]]+ _0xff22x3,_0xff22x2= _0xff22x4,_0xff22x4= _0xff22x2[_0x2b73[1197]]()}};_0xff22x2= _0xff22x3[_0x2b73[67]];1< _0xff22x2&& (_0xff22x3= _0xff22x3[_0x2b73[85]](0,_0xff22x2- 1));return _0xff22x3},getParentPath:function(_0xff22x2){if(null!= _0xff22x2){var _0xff22x3=_0xff22x2[_0x2b73[1122]](mxCellPath.PATH_SEPARATOR);if(0<= _0xff22x3){return _0xff22x2[_0x2b73[85]](0,_0xff22x3)};if(0< _0xff22x2[_0x2b73[67]]){return _0x2b73[110]}};return null},resolve:function(_0xff22x2,_0xff22x3){var _0xff22x4=_0xff22x2;if(null!= _0xff22x3){for(var _0xff22x5=_0xff22x3[_0x2b73[224]](mxCellPath.PATH_SEPARATOR),_0xff22x9=0;_0xff22x9< _0xff22x5[_0x2b73[67]];_0xff22x9++){_0xff22x4= _0xff22x4[_0x2b73[263]](parseInt(_0xff22x5[_0xff22x9]))}};return _0xff22x4},compare:function(_0xff22x2,_0xff22x3){for(var _0xff22x4=Math[_0x2b73[243]](_0xff22x2[_0x2b73[67]],_0xff22x3[_0x2b73[67]]),_0xff22x5=0,_0xff22x9=0;_0xff22x9< _0xff22x4;_0xff22x9++){if(_0xff22x2[_0xff22x9]!= _0xff22x3[_0xff22x9]){0== _0xff22x2[_0xff22x9][_0x2b73[67]]|| 0== _0xff22x3[_0xff22x9][_0x2b73[67]]?_0xff22x5= _0xff22x2[_0xff22x9]== _0xff22x3[_0xff22x9]?0:_0xff22x2[_0xff22x9]> _0xff22x3[_0xff22x9]?1:-1:(_0xff22x4= parseInt(_0xff22x2[_0xff22x9]),_0xff22x9= parseInt(_0xff22x3[_0xff22x9]),_0xff22x5= _0xff22x4== _0xff22x9?0:_0xff22x4> _0xff22x9?1:-1);break}};0== _0xff22x5&& (_0xff22x4= _0xff22x2[_0x2b73[67]],_0xff22x9= _0xff22x3[_0x2b73[67]],_0xff22x4!= _0xff22x9&& (_0xff22x5= _0xff22x4> _0xff22x9?1:-1));return _0xff22x5}},mxPerimeter={RectanglePerimeter:function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){_0xff22x3= _0xff22x2[_0x2b73[241]]();var _0xff22x9=_0xff22x2[_0x2b73[242]](),_0xff22xa=Math[_0x2b73[429]](_0xff22x4[_0x2b73[236]]- _0xff22x9,_0xff22x4[_0x2b73[235]]- _0xff22x3),_0xff22x12= new mxPoint(0,0),_0xff22x13=Math[_0x2b73[424]],_0xff22x14=Math[_0x2b73[424]]/ 2- _0xff22xa,_0xff22x15=Math[_0x2b73[429]](_0xff22x2[_0x2b73[119]],_0xff22x2[_0x2b73[117]]);_0xff22xa< -_0xff22x13+ _0xff22x15|| _0xff22xa> _0xff22x13- _0xff22x15?(_0xff22x12[_0x2b73[235]]= _0xff22x2[_0x2b73[235]],_0xff22x12[_0x2b73[236]]= _0xff22x9- _0xff22x2[_0x2b73[117]]* Math[_0x2b73[2008]](_0xff22xa)/ 2):_0xff22xa< -_0xff22x15?(_0xff22x12[_0x2b73[236]]= _0xff22x2[_0x2b73[236]],_0xff22x12[_0x2b73[235]]= _0xff22x3- _0xff22x2[_0x2b73[119]]* Math[_0x2b73[2008]](_0xff22x14)/ 2):_0xff22xa< _0xff22x15?(_0xff22x12[_0x2b73[235]]= _0xff22x2[_0x2b73[235]]+ _0xff22x2[_0x2b73[117]],_0xff22x12[_0x2b73[236]]= _0xff22x9+ _0xff22x2[_0x2b73[117]]* Math[_0x2b73[2008]](_0xff22xa)/ 2):(_0xff22x12[_0x2b73[236]]= _0xff22x2[_0x2b73[236]]+ _0xff22x2[_0x2b73[119]],_0xff22x12[_0x2b73[235]]= _0xff22x3+ _0xff22x2[_0x2b73[119]]* Math[_0x2b73[2008]](_0xff22x14)/ 2);_0xff22x5&& (_0xff22x4[_0x2b73[235]]>= _0xff22x2[_0x2b73[235]]&& _0xff22x4[_0x2b73[235]]<= _0xff22x2[_0x2b73[235]]+ _0xff22x2[_0x2b73[117]]?_0xff22x12[_0x2b73[235]]= _0xff22x4[_0x2b73[235]]:_0xff22x4[_0x2b73[236]]>= _0xff22x2[_0x2b73[236]]&& _0xff22x4[_0x2b73[236]]<= _0xff22x2[_0x2b73[236]]+ _0xff22x2[_0x2b73[119]]&& (_0xff22x12[_0x2b73[236]]= _0xff22x4[_0x2b73[236]]),_0xff22x4[_0x2b73[235]]< _0xff22x2[_0x2b73[235]]?_0xff22x12[_0x2b73[235]]= _0xff22x2[_0x2b73[235]]:_0xff22x4[_0x2b73[235]]> _0xff22x2[_0x2b73[235]]+ _0xff22x2[_0x2b73[117]]&& (_0xff22x12[_0x2b73[235]]= _0xff22x2[_0x2b73[235]]+ _0xff22x2[_0x2b73[117]]),_0xff22x4[_0x2b73[236]]< _0xff22x2[_0x2b73[236]]?_0xff22x12[_0x2b73[236]]= _0xff22x2[_0x2b73[236]]:_0xff22x4[_0x2b73[236]]> _0xff22x2[_0x2b73[236]]+ _0xff22x2[_0x2b73[119]]&& (_0xff22x12[_0x2b73[236]]= _0xff22x2[_0x2b73[236]]+ _0xff22x2[_0x2b73[119]]));return _0xff22x12},EllipsePerimeter:function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){var _0xff22x9=_0xff22x2[_0x2b73[235]],_0xff22xa=_0xff22x2[_0x2b73[236]],_0xff22x12=_0xff22x2[_0x2b73[117]]/ 2,_0xff22x13=_0xff22x2[_0x2b73[119]]/ 2,_0xff22x14=_0xff22x9+ _0xff22x12,_0xff22x15=_0xff22xa+ _0xff22x13;_0xff22x3= _0xff22x4[_0x2b73[235]];_0xff22x4= _0xff22x4[_0x2b73[236]];var _0xff22x16=parseInt(_0xff22x3- _0xff22x14),_0xff22x17=parseInt(_0xff22x4- _0xff22x15);if(0== _0xff22x16&& 0!= _0xff22x17){return new mxPoint(_0xff22x14,_0xff22x15+ _0xff22x13* _0xff22x17/ Math[_0x2b73[425]](_0xff22x17))};if(0== _0xff22x16&& 0== _0xff22x17){return new mxPoint(_0xff22x3,_0xff22x4)};if(_0xff22x5){if(_0xff22x4>= _0xff22xa&& _0xff22x4<= _0xff22xa+ _0xff22x2[_0x2b73[119]]){return _0xff22x2= _0xff22x4- _0xff22x15,_0xff22x2= Math[_0x2b73[428]](_0xff22x12* _0xff22x12* (1- _0xff22x2* _0xff22x2/ (_0xff22x13* _0xff22x13)))|| 0,_0xff22x3<= _0xff22x9&& (_0xff22x2= -_0xff22x2), new mxPoint(_0xff22x14+ _0xff22x2,_0xff22x4)};if(_0xff22x3>= _0xff22x9&& _0xff22x3<= _0xff22x9+ _0xff22x2[_0x2b73[117]]){return _0xff22x2= _0xff22x3- _0xff22x14,_0xff22x2= Math[_0x2b73[428]](_0xff22x13* _0xff22x13* (1- _0xff22x2* _0xff22x2/ (_0xff22x12* _0xff22x12)))|| 0,_0xff22x4<= _0xff22xa&& (_0xff22x2= -_0xff22x2), new mxPoint(_0xff22x3,_0xff22x15+ _0xff22x2)}};_0xff22x9= _0xff22x17/ _0xff22x16;_0xff22x15-= _0xff22x9* _0xff22x14;_0xff22xa= _0xff22x12* _0xff22x12* _0xff22x9* _0xff22x9+ _0xff22x13* _0xff22x13;_0xff22x2= -2* _0xff22x14* _0xff22xa;_0xff22x13= Math[_0x2b73[428]](_0xff22x2* _0xff22x2- 4* _0xff22xa* (_0xff22x12* _0xff22x12* _0xff22x9* _0xff22x9* _0xff22x14* _0xff22x14+ _0xff22x13* _0xff22x13* _0xff22x14* _0xff22x14- _0xff22x12* _0xff22x12* _0xff22x13* _0xff22x13));_0xff22x12= (-_0xff22x2+ _0xff22x13) / (2* _0xff22xa);_0xff22x13= (-_0xff22x2- _0xff22x13) / (2* _0xff22xa);_0xff22x14= _0xff22x9* _0xff22x12+ _0xff22x15;_0xff22x15= _0xff22x9* _0xff22x13+ _0xff22x15;_0xff22x9= Math[_0x2b73[428]](Math[_0x2b73[2009]](_0xff22x12- _0xff22x3,2)+ Math[_0x2b73[2009]](_0xff22x14- _0xff22x4,2));_0xff22x3= Math[_0x2b73[428]](Math[_0x2b73[2009]](_0xff22x13- _0xff22x3,2)+ Math[_0x2b73[2009]](_0xff22x15- _0xff22x4,2));_0xff22xa= _0xff22x4= 0;_0xff22x9< _0xff22x3?(_0xff22x4= _0xff22x12,_0xff22xa= _0xff22x14):(_0xff22x4= _0xff22x13,_0xff22xa= _0xff22x15);return new mxPoint(_0xff22x4,_0xff22xa)},RhombusPerimeter:function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){_0xff22x3= _0xff22x2[_0x2b73[235]];var _0xff22x9=_0xff22x2[_0x2b73[236]],_0xff22xa=_0xff22x2[_0x2b73[117]];_0xff22x2= _0xff22x2[_0x2b73[119]];var _0xff22x12=_0xff22x3+ _0xff22xa/ 2,_0xff22x13=_0xff22x9+ _0xff22x2/ 2,_0xff22x14=_0xff22x4[_0x2b73[235]];_0xff22x4= _0xff22x4[_0x2b73[236]];if(_0xff22x12== _0xff22x14){return _0xff22x13> _0xff22x4? new mxPoint(_0xff22x12,_0xff22x9): new mxPoint(_0xff22x12,_0xff22x9+ _0xff22x2)};if(_0xff22x13== _0xff22x4){return _0xff22x12> _0xff22x14? new mxPoint(_0xff22x3,_0xff22x13): new mxPoint(_0xff22x3+ _0xff22xa,_0xff22x13)};var _0xff22x15=_0xff22x12,_0xff22x16=_0xff22x13;_0xff22x5&& (_0xff22x14>= _0xff22x3&& _0xff22x14<= _0xff22x3+ _0xff22xa?_0xff22x15= _0xff22x14:_0xff22x4>= _0xff22x9&& _0xff22x4<= _0xff22x9+ _0xff22x2&& (_0xff22x16= _0xff22x4));return _0xff22x14< _0xff22x12?_0xff22x4< _0xff22x13?mxUtils[_0x2b73[2010]](_0xff22x14,_0xff22x4,_0xff22x15,_0xff22x16,_0xff22x12,_0xff22x9,_0xff22x3,_0xff22x13):mxUtils[_0x2b73[2010]](_0xff22x14,_0xff22x4,_0xff22x15,_0xff22x16,_0xff22x12,_0xff22x9+ _0xff22x2,_0xff22x3,_0xff22x13):_0xff22x4< _0xff22x13?mxUtils[_0x2b73[2010]](_0xff22x14,_0xff22x4,_0xff22x15,_0xff22x16,_0xff22x12,_0xff22x9,_0xff22x3+ _0xff22xa,_0xff22x13):mxUtils[_0x2b73[2010]](_0xff22x14,_0xff22x4,_0xff22x15,_0xff22x16,_0xff22x12,_0xff22x9+ _0xff22x2,_0xff22x3+ _0xff22xa,_0xff22x13)},TrianglePerimeter:function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){_0xff22x3= null!= _0xff22x3?_0xff22x3[_0x2b73[124]][mxConstants[_0x2b73[2011]]]:null;var _0xff22x9=_0xff22x3== mxConstants[_0x2b73[1358]]|| _0xff22x3== mxConstants[_0x2b73[1354]],_0xff22xa=_0xff22x2[_0x2b73[235]],_0xff22x12=_0xff22x2[_0x2b73[236]],_0xff22x13=_0xff22x2[_0x2b73[117]];_0xff22x2= _0xff22x2[_0x2b73[119]];var _0xff22x14=_0xff22xa+ _0xff22x13/ 2,_0xff22x15=_0xff22x12+ _0xff22x2/ 2,_0xff22x16= new mxPoint(_0xff22xa,_0xff22x12),_0xff22x17= new mxPoint(_0xff22xa+ _0xff22x13,_0xff22x15),_0xff22x18= new mxPoint(_0xff22xa,_0xff22x12+ _0xff22x2);_0xff22x3== mxConstants[_0x2b73[1358]]?(_0xff22x16= _0xff22x18,_0xff22x17= new mxPoint(_0xff22x14,_0xff22x12),_0xff22x18= new mxPoint(_0xff22xa+ _0xff22x13,_0xff22x12+ _0xff22x2)):_0xff22x3== mxConstants[_0x2b73[1354]]?(_0xff22x17= new mxPoint(_0xff22x14,_0xff22x12+ _0xff22x2),_0xff22x18= new mxPoint(_0xff22xa+ _0xff22x13,_0xff22x12)):_0xff22x3== mxConstants[_0x2b73[1359]]&& (_0xff22x16= new mxPoint(_0xff22xa+ _0xff22x13,_0xff22x12),_0xff22x17= new mxPoint(_0xff22xa,_0xff22x15),_0xff22x18= new mxPoint(_0xff22xa+ _0xff22x13,_0xff22x12+ _0xff22x2));var _0xff22x19=_0xff22x4[_0x2b73[235]]- _0xff22x14,_0xff22x1a=_0xff22x4[_0x2b73[236]]- _0xff22x15,_0xff22x19=_0xff22x9?Math[_0x2b73[429]](_0xff22x19,_0xff22x1a):Math[_0x2b73[429]](_0xff22x1a,_0xff22x19),_0xff22x1b=_0xff22x9?Math[_0x2b73[429]](_0xff22x13,_0xff22x2):Math[_0x2b73[429]](_0xff22x2,_0xff22x13),_0xff22x1a=!1,_0xff22x1a=_0xff22x3== mxConstants[_0x2b73[1358]]|| _0xff22x3== mxConstants[_0x2b73[1359]]?_0xff22x19> -_0xff22x1b&& _0xff22x19< _0xff22x1b:_0xff22x19< -Math[_0x2b73[424]]+ _0xff22x1b|| _0xff22x19> Math[_0x2b73[424]]- _0xff22x1b,_0xff22x1b=null;_0xff22x1a?_0xff22x1b= _0xff22x5&& (_0xff22x9&& _0xff22x4[_0x2b73[235]]>= _0xff22x16[_0x2b73[235]]&& _0xff22x4[_0x2b73[235]]<= _0xff22x18[_0x2b73[235]]|| !_0xff22x9&& _0xff22x4[_0x2b73[236]]>= _0xff22x16[_0x2b73[236]]&& _0xff22x4[_0x2b73[236]]<= _0xff22x18[_0x2b73[236]])?_0xff22x9? new mxPoint(_0xff22x4[_0x2b73[235]],_0xff22x16[_0x2b73[236]]): new mxPoint(_0xff22x16[_0x2b73[235]],_0xff22x4[_0x2b73[236]]):_0xff22x3== mxConstants[_0x2b73[1358]]? new mxPoint(_0xff22xa+ _0xff22x13/ 2+ _0xff22x2* Math[_0x2b73[2008]](_0xff22x19)/ 2,_0xff22x12+ _0xff22x2):_0xff22x3== mxConstants[_0x2b73[1354]]? new mxPoint(_0xff22xa+ _0xff22x13/ 2- _0xff22x2* Math[_0x2b73[2008]](_0xff22x19)/ 2,_0xff22x12):_0xff22x3== mxConstants[_0x2b73[1359]]? new mxPoint(_0xff22xa+ _0xff22x13,_0xff22x12+ _0xff22x2/ 2+ _0xff22x13* Math[_0x2b73[2008]](_0xff22x19)/ 2): new mxPoint(_0xff22xa,_0xff22x12+ _0xff22x2/ 2- _0xff22x13* Math[_0x2b73[2008]](_0xff22x19)/ 2):(_0xff22x5&& (_0xff22x5= new mxPoint(_0xff22x14,_0xff22x15),_0xff22x4[_0x2b73[236]]>= _0xff22x12&& _0xff22x4[_0x2b73[236]]<= _0xff22x12+ _0xff22x2?(_0xff22x5[_0x2b73[235]]= _0xff22x9?_0xff22x14:_0xff22x3== mxConstants[_0x2b73[1359]]?_0xff22xa+ _0xff22x13:_0xff22xa,_0xff22x5[_0x2b73[236]]= _0xff22x4[_0x2b73[236]]):_0xff22x4[_0x2b73[235]]>= _0xff22xa&& _0xff22x4[_0x2b73[235]]<= _0xff22xa+ _0xff22x13&& (_0xff22x5[_0x2b73[235]]= _0xff22x4[_0x2b73[235]],_0xff22x5[_0x2b73[236]]= !_0xff22x9?_0xff22x15:_0xff22x3== mxConstants[_0x2b73[1358]]?_0xff22x12+ _0xff22x2:_0xff22x12),_0xff22x14= _0xff22x5[_0x2b73[235]],_0xff22x15= _0xff22x5[_0x2b73[236]]),_0xff22x1b= _0xff22x9&& _0xff22x4[_0x2b73[235]]<= _0xff22xa+ _0xff22x13/ 2|| !_0xff22x9&& _0xff22x4[_0x2b73[236]]<= _0xff22x12+ _0xff22x2/ 2?mxUtils[_0x2b73[2010]](_0xff22x4[_0x2b73[235]],_0xff22x4[_0x2b73[236]],_0xff22x14,_0xff22x15,_0xff22x16[_0x2b73[235]],_0xff22x16[_0x2b73[236]],_0xff22x17[_0x2b73[235]],_0xff22x17[_0x2b73[236]]):mxUtils[_0x2b73[2010]](_0xff22x4[_0x2b73[235]],_0xff22x4[_0x2b73[236]],_0xff22x14,_0xff22x15,_0xff22x17[_0x2b73[235]],_0xff22x17[_0x2b73[236]],_0xff22x18[_0x2b73[235]],_0xff22x18[_0x2b73[236]]));null== _0xff22x1b&& (_0xff22x1b= new mxPoint(_0xff22x14,_0xff22x15));return _0xff22x1b}};function mxPrintPreview(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa,_0xff22x12,_0xff22x13,_0xff22x14){this[_0x2b73[1179]]= _0xff22x2;this[_0x2b73[255]]= null!= _0xff22x3?_0xff22x3:1/ _0xff22x2[_0x2b73[2012]];this[_0x2b73[467]]= null!= _0xff22x5?_0xff22x5:0;this[_0x2b73[2013]]= null!= _0xff22x4?_0xff22x4:_0xff22x2[_0x2b73[2013]];this[_0x2b73[924]]= null!= _0xff22x13?_0xff22x13:_0x2b73[2014];this[_0x2b73[1732]]= null!= _0xff22x9?_0xff22x9:0;this[_0x2b73[1733]]= null!= _0xff22xa?_0xff22xa:0;this[_0x2b73[1630]]= _0xff22x12;this[_0x2b73[2015]]= null!= _0xff22x14?_0xff22x14:!0}mxPrintPreview[_0x2b73[202]][_0x2b73[1179]]= null;mxPrintPreview[_0x2b73[202]][_0x2b73[2013]]= null;mxPrintPreview[_0x2b73[202]][_0x2b73[255]]= null;mxPrintPreview[_0x2b73[202]][_0x2b73[467]]= 0;mxPrintPreview[_0x2b73[202]][_0x2b73[1732]]= 0;mxPrintPreview[_0x2b73[202]][_0x2b73[1733]]= 0;mxPrintPreview[_0x2b73[202]][_0x2b73[2016]]= !0;mxPrintPreview[_0x2b73[202]][_0x2b73[2017]]= !1;mxPrintPreview[_0x2b73[202]][_0x2b73[1630]]= null;mxPrintPreview[_0x2b73[202]][_0x2b73[924]]= null;mxPrintPreview[_0x2b73[202]][_0x2b73[2015]]= null;mxPrintPreview[_0x2b73[202]][_0x2b73[2018]]= null;mxPrintPreview[_0x2b73[202]][_0x2b73[2019]]= 0;mxPrintPreview[_0x2b73[202]][_0x2b73[2020]]= function(){return this[_0x2b73[2018]]};mxPrintPreview[_0x2b73[202]][_0x2b73[2021]]= function(){var _0xff22x2=_0x2b73[110];8== document[_0x2b73[5]]&& (_0xff22x2= _0x2b73[2022]);return _0xff22x2};mxPrintPreview[_0x2b73[202]][_0x2b73[392]]= function(_0xff22x2){var _0xff22x3=this[_0x2b73[1179]][_0x2b73[259]][_0x2b73[2023]],_0xff22x4=null;try{this[_0x2b73[2017]]&& (this[_0x2b73[1179]][_0x2b73[259]][_0x2b73[2023]]= function(_0xff22x2,_0xff22x3){_0xff22x3[_0x2b73[176]](_0xff22x2[_0x2b73[441]][_0x2b73[2024]]())});if(null== this[_0x2b73[2018]]){this[_0x2b73[2018]]= window[_0x2b73[392]]();var _0xff22x5=this[_0x2b73[2018]][_0x2b73[395]],_0xff22x9=this[_0x2b73[2021]]();null!= _0xff22x9&& 0< _0xff22x9[_0x2b73[67]]&& _0xff22x5[_0x2b73[171]](_0xff22x9);_0xff22x5[_0x2b73[171]](_0x2b73[528]);_0xff22x5[_0x2b73[171]](_0x2b73[531]);this[_0x2b73[2025]](_0xff22x5,_0xff22x2);_0xff22x5[_0x2b73[171]](_0x2b73[533]);_0xff22x5[_0x2b73[171]](_0x2b73[2026]);mxClient[_0x2b73[54]](_0x2b73[94],mxClient[_0x2b73[86]]+ _0x2b73[95],_0xff22x5);mxClient[_0x2b73[47]]&& (_0xff22x5[_0x2b73[100]][_0x2b73[99]](_0x2b73[6],_0x2b73[97]),_0xff22x5[_0x2b73[100]][_0x2b73[99]](_0x2b73[7],_0x2b73[101]),_0xff22x5[_0x2b73[102]]()[_0x2b73[103]]= _0x2b73[104],mxClient[_0x2b73[54]](_0x2b73[94],mxClient[_0x2b73[86]]+ _0x2b73[105],_0xff22x5));var _0xff22xa=this[_0x2b73[1179]][_0x2b73[517]]()[_0x2b73[238]](),_0xff22x12=this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[518]](),_0xff22x13=_0xff22x12/ this[_0x2b73[255]],_0xff22x14=this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[512]]();this[_0x2b73[2016]]|| (this[_0x2b73[1732]]= -_0xff22x14[_0x2b73[235]]* this[_0x2b73[255]],this[_0x2b73[1733]]= -_0xff22x14[_0x2b73[236]]* this[_0x2b73[255]],_0xff22xa[_0x2b73[117]]+= _0xff22xa[_0x2b73[235]],_0xff22xa[_0x2b73[119]]+= _0xff22xa[_0x2b73[236]],_0xff22xa[_0x2b73[235]]= 0,this[_0x2b73[467]]= _0xff22xa[_0x2b73[236]]= 0);_0xff22xa[_0x2b73[117]]/= _0xff22x13;_0xff22xa[_0x2b73[119]]/= _0xff22x13;var _0xff22x15=this[_0x2b73[2013]][_0x2b73[117]]- 2* this[_0x2b73[467]],_0xff22x16=this[_0x2b73[2013]][_0x2b73[119]]- 2* this[_0x2b73[467]],_0xff22x17=Math[_0x2b73[160]](1,Math[_0x2b73[430]]((_0xff22xa[_0x2b73[117]]+ this[_0x2b73[1732]])/ _0xff22x15)),_0xff22x18=Math[_0x2b73[160]](1,Math[_0x2b73[430]]((_0xff22xa[_0x2b73[119]]+ this[_0x2b73[1733]])/ _0xff22x16));this[_0x2b73[2019]]= _0xff22x17* _0xff22x18;var _0xff22x19=mxUtils[_0x2b73[885]](this,function(){if(this[_0x2b73[2015]]&& (1< _0xff22x18|| 1< _0xff22x17)){var _0xff22x2=this[_0x2b73[2027]](_0xff22x18,_0xff22x17);_0xff22x5[_0x2b73[112]][_0x2b73[62]](_0xff22x2);if(mxClient[_0x2b73[80]]){_0xff22x2[_0x2b73[124]][_0x2b73[491]]= _0x2b73[492];var _0xff22x3=function(){_0xff22x2[_0x2b73[124]][_0x2b73[125]]= _0xff22x5[_0x2b73[112]][_0x2b73[190]]+ 10+ _0x2b73[168]};mxEvent[_0x2b73[169]](this[_0x2b73[2018]],_0x2b73[276],function(_0xff22x2){_0xff22x3()});mxEvent[_0x2b73[169]](this[_0x2b73[2018]],_0x2b73[129],function(_0xff22x2){_0xff22x3()})}}});_0xff22x2= function(_0xff22x2,_0xff22x3){null!= this[_0x2b73[1630]]&& (_0xff22x2[_0x2b73[124]][_0x2b73[1630]]= this[_0x2b73[1630]],_0xff22x2[_0x2b73[124]][_0x2b73[465]]= _0x2b73[1631],_0xff22x2[_0x2b73[124]][_0x2b73[1629]]= _0x2b73[942]);_0xff22x2[_0x2b73[124]][_0x2b73[1537]]= _0x2b73[1391];_0xff22x3&& (_0xff22x2[_0x2b73[124]][_0x2b73[2028]]= _0x2b73[2029]);mxClient[_0x2b73[80]]?(_0xff22x5[_0x2b73[171]](_0xff22x2[_0x2b73[342]]),_0xff22x2[_0x2b73[265]][_0x2b73[266]](_0xff22x2)):(_0xff22x2[_0x2b73[265]][_0x2b73[266]](_0xff22x2),_0xff22x5[_0x2b73[112]][_0x2b73[62]](_0xff22x2));if(_0xff22x3){var _0xff22x4=_0xff22x5[_0x2b73[55]](_0x2b73[1054]);_0xff22x4[_0x2b73[926]]= _0x2b73[2030];_0xff22x5[_0x2b73[112]][_0x2b73[62]](_0xff22x4)}};var _0xff22x1a=this[_0x2b73[2031]](this[_0x2b73[2013]][_0x2b73[117]],this[_0x2b73[2013]][_0x2b73[119]]);if(null!= _0xff22x1a){for(var _0xff22x1b=0;_0xff22x1b< _0xff22x1a[_0x2b73[67]];_0xff22x1b++){_0xff22x2(_0xff22x1a[_0xff22x1b],!0)}};for(var _0xff22x1c=this[_0x2b73[2032]](this[_0x2b73[2013]][_0x2b73[117]],this[_0x2b73[2013]][_0x2b73[119]]),_0xff22x1b=0;_0xff22x1b< _0xff22x18;_0xff22x1b++){for(var _0xff22x1d=_0xff22x1b* _0xff22x16/ this[_0x2b73[255]]- this[_0x2b73[1733]]/ this[_0x2b73[255]]+ (_0xff22xa[_0x2b73[236]]- _0xff22x14[_0x2b73[236]]* _0xff22x12)/ _0xff22x12,_0xff22x1a=0;_0xff22x1a< _0xff22x17;_0xff22x1a++){if(null== this[_0x2b73[2018]]){return null};var _0xff22x1e=_0xff22x1a* _0xff22x15/ this[_0x2b73[255]]- this[_0x2b73[1732]]/ this[_0x2b73[255]]+ (_0xff22xa[_0x2b73[235]]- _0xff22x14[_0x2b73[235]]* _0xff22x12)/ _0xff22x12,_0xff22x1f=_0xff22x1b* _0xff22x17+ _0xff22x1a+ 1,_0xff22x4=this[_0x2b73[2034]](this[_0x2b73[2013]][_0x2b73[117]],this[_0x2b73[2013]][_0x2b73[119]],mxUtils[_0x2b73[885]](this,function(_0xff22x2){this[_0x2b73[2033]](-_0xff22x1e,-_0xff22x1d,this[_0x2b73[255]],_0xff22x1f,_0xff22x2)}));_0xff22x4[_0x2b73[57]](_0x2b73[1363],_0x2b73[2035]+ _0xff22x1f);_0xff22x2(_0xff22x4,null!= _0xff22x1c|| _0xff22x1b< _0xff22x18- 1|| _0xff22x1a< _0xff22x17- 1)}};if(null!= _0xff22x1c){for(_0xff22x1b= 0;_0xff22x1b< _0xff22x1c[_0x2b73[67]];_0xff22x1b++){_0xff22x2(_0xff22x1c[_0xff22x1b],_0xff22x1b< _0xff22x1c[_0x2b73[67]])}};_0xff22x5[_0x2b73[171]](_0x2b73[527]);_0xff22x5[_0x2b73[171]](_0x2b73[534]);_0xff22x5[_0x2b73[268]]();_0xff22x19();mxEvent[_0x2b73[762]](_0xff22x5[_0x2b73[112]])};this[_0x2b73[2018]][_0x2b73[393]]()}catch(y){null!= _0xff22x4&& null!= _0xff22x4[_0x2b73[265]]&& _0xff22x4[_0x2b73[265]][_0x2b73[266]](_0xff22x4)}finally{this[_0x2b73[1179]][_0x2b73[259]][_0x2b73[2023]]= _0xff22x3};return this[_0x2b73[2018]]};mxPrintPreview[_0x2b73[202]][_0x2b73[2025]]= function(_0xff22x2,_0xff22x3){null!= this[_0x2b73[924]]&& _0xff22x2[_0x2b73[171]](_0x2b73[2036]+ this[_0x2b73[924]]+ _0x2b73[2037]);_0xff22x2[_0x2b73[171]](_0x2b73[2038]);_0xff22x2[_0x2b73[171]](_0x2b73[2039]);_0xff22x2[_0x2b73[171]](_0x2b73[2040]);_0xff22x2[_0x2b73[171]](_0x2b73[2041]);_0xff22x2[_0x2b73[171]](_0x2b73[233]);_0xff22x2[_0x2b73[171]](_0x2b73[2042]);_0xff22x2[_0x2b73[171]](_0x2b73[2043]);_0xff22x2[_0x2b73[171]](_0x2b73[2044]);_0xff22x2[_0x2b73[171]](_0x2b73[2045]);_0xff22x2[_0x2b73[171]](_0x2b73[233]);null!= _0xff22x3&& _0xff22x2[_0x2b73[171]](_0xff22x3);_0xff22x2[_0x2b73[171]](_0x2b73[2046])};mxPrintPreview[_0x2b73[202]][_0x2b73[2027]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=this[_0x2b73[2018]][_0x2b73[395]],_0xff22x5=_0xff22x4[_0x2b73[55]](_0x2b73[116]);_0xff22x5[_0x2b73[926]]= _0x2b73[2047];_0xff22x5[_0x2b73[57]](_0x2b73[467],_0x2b73[468]);for(var _0xff22x9=_0xff22x4[_0x2b73[55]](_0x2b73[120]),_0xff22xa=0;_0xff22xa< _0xff22x2;_0xff22xa++){for(var _0xff22x12=_0xff22x4[_0x2b73[55]](_0x2b73[121]),_0xff22x13=0;_0xff22x13< _0xff22x3;_0xff22x13++){var _0xff22x14=_0xff22xa* _0xff22x3+ _0xff22x13+ 1,_0xff22x15=_0xff22x4[_0x2b73[55]](_0x2b73[122]);if(!mxClient[_0x2b73[133]]|| mxClient[_0x2b73[75]]|| mxClient[_0x2b73[76]]){var _0xff22x16=_0xff22x4[_0x2b73[55]](_0x2b73[2048]);_0xff22x16[_0x2b73[57]](_0x2b73[44],_0x2b73[2049]+ _0xff22x14);mxUtils[_0x2b73[53]](_0xff22x16,_0xff22x14,_0xff22x4);_0xff22x15[_0x2b73[62]](_0xff22x16)}else {mxUtils[_0x2b73[53]](_0xff22x15,_0xff22x14,_0xff22x4)};_0xff22x12[_0x2b73[62]](_0xff22x15)};_0xff22x9[_0x2b73[62]](_0xff22x12)};_0xff22x5[_0x2b73[62]](_0xff22x9);return _0xff22x5};mxPrintPreview[_0x2b73[202]][_0x2b73[2034]]= function(_0xff22x2,_0xff22x3,_0xff22x4){var _0xff22x5=document[_0x2b73[55]](_0x2b73[485]);try{_0xff22x5[_0x2b73[124]][_0x2b73[117]]= _0xff22x2+ _0x2b73[168];_0xff22x5[_0x2b73[124]][_0x2b73[119]]= _0xff22x3+ _0x2b73[168];_0xff22x5[_0x2b73[124]][_0x2b73[277]]= _0x2b73[188];_0xff22x5[_0x2b73[124]][_0x2b73[2050]]= _0x2b73[1824];_0xff22x5[_0x2b73[124]][_0x2b73[491]]= _0x2b73[1500];var _0xff22x9=document[_0x2b73[55]](_0x2b73[485]);_0xff22x9[_0x2b73[124]][_0x2b73[125]]= this[_0x2b73[467]]+ _0x2b73[168];_0xff22x9[_0x2b73[124]][_0x2b73[361]]= this[_0x2b73[467]]+ _0x2b73[168];_0xff22x9[_0x2b73[124]][_0x2b73[117]]= _0xff22x2- 2* this[_0x2b73[467]]+ _0x2b73[168];_0xff22x9[_0x2b73[124]][_0x2b73[119]]= _0xff22x3- 2* this[_0x2b73[467]]+ _0x2b73[168];_0xff22x9[_0x2b73[124]][_0x2b73[277]]= _0x2b73[188];this[_0x2b73[1179]][_0x2b73[507]]== mxConstants[_0x2b73[1523]]&& (_0xff22x9[_0x2b73[124]][_0x2b73[491]]= _0x2b73[492]);_0xff22x5[_0x2b73[62]](_0xff22x9);document[_0x2b73[112]][_0x2b73[62]](_0xff22x5);_0xff22x4(_0xff22x9)}catch(f){throw _0xff22x5[_0x2b73[265]][_0x2b73[266]](_0xff22x5),f};return _0xff22x5};mxPrintPreview[_0x2b73[202]][_0x2b73[2033]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){_0xff22x5= this[_0x2b73[1179]][_0x2b73[249]]();var _0xff22xa=this[_0x2b73[1179]][_0x2b73[526]];this[_0x2b73[1179]][_0x2b73[526]]= _0xff22x9;var _0xff22x12=_0xff22x5[_0x2b73[2051]](),_0xff22x13=_0xff22x5[_0x2b73[2052]](),_0xff22x14=_0xff22x5[_0x2b73[2024]](),_0xff22x15=_0xff22x5[_0x2b73[1524]]();this[_0x2b73[1179]][_0x2b73[507]]== mxConstants[_0x2b73[508]]?_0xff22x5[_0x2b73[1569]]():this[_0x2b73[1179]][_0x2b73[507]]== mxConstants[_0x2b73[1523]]?_0xff22x5[_0x2b73[1571]]():_0xff22x5[_0x2b73[1570]]();var _0xff22x16=_0xff22x5[_0x2b73[503]]();_0xff22x5[_0x2b73[504]](!1);var _0xff22x17=this[_0x2b73[1179]][_0x2b73[994]]();this[_0x2b73[1179]][_0x2b73[995]](!1);var _0xff22x18=_0xff22x5[_0x2b73[512]]();_0xff22x5[_0x2b73[513]]= new mxPoint(_0xff22x2,_0xff22x3);_0xff22x2= null;try{var _0xff22x19=[this[_0x2b73[1179]][_0x2b73[502]]()[_0x2b73[501]]()];_0xff22x2= new mxTemporaryCellStates(_0xff22x5,_0xff22x4,_0xff22x19)}finally{if(mxClient[_0x2b73[80]]){_0xff22x5[_0x2b73[506]][_0x2b73[339]]= _0x2b73[110]}else {for(_0xff22x4= _0xff22x9[_0x2b73[285]];null!= _0xff22x4;){_0xff22x19= _0xff22x4[_0x2b73[287]],_0xff22x3= _0xff22x4[_0x2b73[301]][_0x2b73[216]](),_0x2b73[571]== _0xff22x3?(_0xff22x4[_0x2b73[57]](_0x2b73[117],parseInt(_0xff22x9[_0x2b73[124]][_0x2b73[117]])),_0xff22x4[_0x2b73[57]](_0x2b73[119],parseInt(_0xff22x9[_0x2b73[124]][_0x2b73[119]]))):_0x2b73[583]!= _0xff22x4[_0x2b73[124]][_0x2b73[270]]&& _0x2b73[116]!= _0xff22x3&& _0xff22x4[_0x2b73[265]][_0x2b73[266]](_0xff22x4),_0xff22x4= _0xff22x19}};_0xff22x5[_0x2b73[506]][_0x2b73[265]][_0x2b73[266]](_0xff22x5[_0x2b73[506]]);this[_0x2b73[1179]][_0x2b73[995]](_0xff22x17);this[_0x2b73[1179]][_0x2b73[526]]= _0xff22xa;_0xff22x5[_0x2b73[510]]= _0xff22x12;_0xff22x5[_0x2b73[2053]]= _0xff22x13;_0xff22x5[_0x2b73[505]]= _0xff22x14;_0xff22x5[_0x2b73[506]]= _0xff22x15;_0xff22x5[_0x2b73[513]]= _0xff22x18;_0xff22x2[_0x2b73[515]]();_0xff22x5[_0x2b73[504]](_0xff22x16)}};mxPrintPreview[_0x2b73[202]][_0x2b73[2031]]= function(){return null};mxPrintPreview[_0x2b73[202]][_0x2b73[2032]]= function(){return null};mxPrintPreview[_0x2b73[202]][_0x2b73[540]]= function(){var _0xff22x2=this[_0x2b73[392]]();null!= _0xff22x2&& _0xff22x2[_0x2b73[540]]()};mxPrintPreview[_0x2b73[202]][_0x2b73[268]]= function(){null!= this[_0x2b73[2018]]&& (this[_0x2b73[2018]][_0x2b73[268]](),this[_0x2b73[2018]]= null)};function mxStylesheet(){this[_0x2b73[2054]]= {};this[_0x2b73[2056]](this[_0x2b73[2055]]());this[_0x2b73[2058]](this[_0x2b73[2057]]())}mxStylesheet[_0x2b73[202]][_0x2b73[2055]]= function(){var _0xff22x2={};_0xff22x2[mxConstants[_0x2b73[2059]]]= mxConstants[_0x2b73[2060]];_0xff22x2[mxConstants[_0x2b73[2061]]]= mxPerimeter[_0x2b73[2062]];_0xff22x2[mxConstants[_0x2b73[2063]]]= mxConstants[_0x2b73[481]];_0xff22x2[mxConstants[_0x2b73[2064]]]= mxConstants[_0x2b73[479]];_0xff22x2[mxConstants[_0x2b73[2065]]]= _0x2b73[2066];_0xff22x2[mxConstants[_0x2b73[2067]]]= _0x2b73[2068];_0xff22x2[mxConstants[_0x2b73[2069]]]= _0x2b73[2070];return _0xff22x2};mxStylesheet[_0x2b73[202]][_0x2b73[2057]]= function(){var _0xff22x2={};_0xff22x2[mxConstants[_0x2b73[2059]]]= mxConstants[_0x2b73[2071]];_0xff22x2[mxConstants[_0x2b73[1695]]]= mxConstants[_0x2b73[1622]];_0xff22x2[mxConstants[_0x2b73[2063]]]= mxConstants[_0x2b73[481]];_0xff22x2[mxConstants[_0x2b73[2064]]]= mxConstants[_0x2b73[479]];_0xff22x2[mxConstants[_0x2b73[2067]]]= _0x2b73[2068];_0xff22x2[mxConstants[_0x2b73[2069]]]= _0x2b73[2072];return _0xff22x2};mxStylesheet[_0x2b73[202]][_0x2b73[2056]]= function(_0xff22x2){this[_0x2b73[2074]](_0x2b73[2073],_0xff22x2)};mxStylesheet[_0x2b73[202]][_0x2b73[2058]]= function(_0xff22x2){this[_0x2b73[2074]](_0x2b73[2075],_0xff22x2)};mxStylesheet[_0x2b73[202]][_0x2b73[2076]]= function(){return this[_0x2b73[2054]][_0x2b73[2073]]};mxStylesheet[_0x2b73[202]][_0x2b73[2077]]= function(){return this[_0x2b73[2054]][_0x2b73[2075]]};mxStylesheet[_0x2b73[202]][_0x2b73[2074]]= function(_0xff22x2,_0xff22x3){this[_0x2b73[2054]][_0xff22x2]= _0xff22x3};mxStylesheet[_0x2b73[202]][_0x2b73[1705]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=_0xff22x3;if(null!= _0xff22x2&& 0< _0xff22x2[_0x2b73[67]]){for(var _0xff22x5=_0xff22x2[_0x2b73[224]](_0x2b73[471]),_0xff22x4=null!= _0xff22x4&& _0x2b73[471]!= _0xff22x2[_0x2b73[225]](0)?mxUtils[_0x2b73[238]](_0xff22x4):{},_0xff22x9=0;_0xff22x9< _0xff22x5[_0x2b73[67]];_0xff22x9++){var _0xff22xa=_0xff22x5[_0xff22x9],_0xff22x12=_0xff22xa[_0x2b73[2]](_0x2b73[226]);if(0<= _0xff22x12){var _0xff22x13=_0xff22xa[_0x2b73[85]](0,_0xff22x12),_0xff22xa=_0xff22xa[_0x2b73[85]](_0xff22x12+ 1);_0xff22xa== mxConstants[_0x2b73[217]]? delete _0xff22x4[_0xff22x13]:mxUtils[_0x2b73[1946]](_0xff22xa)?_0xff22x4[_0xff22x13]= parseFloat(_0xff22xa):_0xff22x4[_0xff22x13]= _0xff22xa}else {if(_0xff22xa= this[_0x2b73[2054]][_0xff22xa],null!= _0xff22xa){for(_0xff22x13 in _0xff22xa){_0xff22x4[_0xff22x13]= _0xff22xa[_0xff22x13]}}}}};return _0xff22x4};function mxCellState(_0xff22x2,_0xff22x3,_0xff22x4){this[_0x2b73[441]]= _0xff22x2;this[_0x2b73[246]]= _0xff22x3;this[_0x2b73[124]]= _0xff22x4;this[_0x2b73[2078]]= new mxPoint;this[_0x2b73[2079]]= new mxPoint}mxCellState[_0x2b73[202]]= new mxRectangle;mxCellState[_0x2b73[202]][_0x2b73[196]]= mxCellState;mxCellState[_0x2b73[202]][_0x2b73[441]]= null;mxCellState[_0x2b73[202]][_0x2b73[246]]= null;mxCellState[_0x2b73[202]][_0x2b73[124]]= null;mxCellState[_0x2b73[202]][_0x2b73[2080]]= !0;mxCellState[_0x2b73[202]][_0x2b73[2081]]= !1;mxCellState[_0x2b73[202]][_0x2b73[2082]]= !1;mxCellState[_0x2b73[202]][_0x2b73[2078]]= null;mxCellState[_0x2b73[202]][_0x2b73[439]]= null;mxCellState[_0x2b73[202]][_0x2b73[2079]]= null;mxCellState[_0x2b73[202]][_0x2b73[2083]]= null;mxCellState[_0x2b73[202]][_0x2b73[2084]]= null;mxCellState[_0x2b73[202]][_0x2b73[2085]]= 0;mxCellState[_0x2b73[202]][_0x2b73[67]]= 0;mxCellState[_0x2b73[202]][_0x2b73[2086]]= null;mxCellState[_0x2b73[202]][_0x2b73[253]]= null;mxCellState[_0x2b73[202]][_0x2b73[963]]= null;mxCellState[_0x2b73[202]][_0x2b73[2087]]= function(_0xff22x2,_0xff22x3){_0xff22x2= _0xff22x2|| 0;_0xff22x3= null!= _0xff22x3?_0xff22x3: new mxRectangle(this[_0x2b73[235]],this[_0x2b73[236]],this[_0x2b73[117]],this[_0x2b73[119]]);if(null!= this[_0x2b73[253]]&& null!= this[_0x2b73[253]][_0x2b73[1561]]){var _0xff22x4=this[_0x2b73[253]][_0x2b73[1561]][_0x2b73[1548]](this[_0x2b73[124]],_0xff22x3[_0x2b73[235]],_0xff22x3[_0x2b73[236]],_0xff22x3[_0x2b73[117]],_0xff22x3[_0x2b73[119]]);_0xff22x3[_0x2b73[235]]= _0xff22x4[_0x2b73[235]];_0xff22x3[_0x2b73[236]]= _0xff22x4[_0x2b73[236]];_0xff22x3[_0x2b73[117]]= this[_0x2b73[253]][_0x2b73[1561]][_0x2b73[1532]]* _0xff22x4[_0x2b73[117]];_0xff22x3[_0x2b73[119]]= this[_0x2b73[253]][_0x2b73[1561]][_0x2b73[1533]]* _0xff22x4[_0x2b73[119]]};0!= _0xff22x2&& _0xff22x3[_0x2b73[244]](_0xff22x2);return _0xff22x3};mxCellState[_0x2b73[202]][_0x2b73[2088]]= function(_0xff22x2,_0xff22x3){_0xff22x3?(null== this[_0x2b73[439]]&& (this[_0x2b73[439]]= []),0== this[_0x2b73[439]][_0x2b73[67]]?this[_0x2b73[439]][_0x2b73[207]](_0xff22x2):this[_0x2b73[439]][0]= _0xff22x2):null== this[_0x2b73[439]]?(this[_0x2b73[439]]= [],this[_0x2b73[439]][_0x2b73[207]](null),this[_0x2b73[439]][_0x2b73[207]](_0xff22x2)):1== this[_0x2b73[439]][_0x2b73[67]]?this[_0x2b73[439]][_0x2b73[207]](_0xff22x2):this[_0x2b73[439]][this[_0x2b73[439]][_0x2b73[67]]- 1]= _0xff22x2};mxCellState[_0x2b73[202]][_0x2b73[1609]]= function(_0xff22x2){null!= this[_0x2b73[253]]&& this[_0x2b73[253]][_0x2b73[1609]](_0xff22x2);null!= this[_0x2b73[963]]&& this[_0x2b73[963]][_0x2b73[1609]](_0xff22x2)};mxCellState[_0x2b73[202]][_0x2b73[1710]]= function(_0xff22x2){_0xff22x2= this[_0x2b73[2089]](_0xff22x2);return null!= _0xff22x2?_0xff22x2[_0x2b73[246]]:null};mxCellState[_0x2b73[202]][_0x2b73[2089]]= function(_0xff22x2){return _0xff22x2?this[_0x2b73[2083]]:this[_0x2b73[2084]]};mxCellState[_0x2b73[202]][_0x2b73[2090]]= function(_0xff22x2,_0xff22x3){_0xff22x3?this[_0x2b73[2083]]= _0xff22x2:this[_0x2b73[2084]]= _0xff22x2};mxCellState[_0x2b73[202]][_0x2b73[515]]= function(){this[_0x2b73[441]][_0x2b73[1179]][_0x2b73[259]][_0x2b73[515]](this)};mxCellState[_0x2b73[202]][_0x2b73[238]]= function(){var _0xff22x2= new mxCellState(this[_0x2b73[441]],this[_0x2b73[246]],this[_0x2b73[124]]);if(null!= this[_0x2b73[439]]){_0xff22x2[_0x2b73[439]]= [];for(var _0xff22x3=0;_0xff22x3< this[_0x2b73[439]][_0x2b73[67]];_0xff22x3++){_0xff22x2[_0x2b73[439]][_0xff22x3]= this[_0x2b73[439]][_0xff22x3][_0x2b73[238]]()}};null!= this[_0x2b73[2078]]&& (_0xff22x2[_0x2b73[2078]]= this[_0x2b73[2078]][_0x2b73[238]]());null!= this[_0x2b73[2079]]&& (_0xff22x2[_0x2b73[2079]]= this[_0x2b73[2079]][_0x2b73[238]]());null!= this[_0x2b73[1563]]&& (_0xff22x2[_0x2b73[1563]]= this[_0x2b73[1563]][_0x2b73[238]]());_0xff22x2[_0x2b73[2085]]= this[_0x2b73[2085]];_0xff22x2[_0x2b73[2086]]= this[_0x2b73[2086]];_0xff22x2[_0x2b73[67]]= this[_0x2b73[67]];_0xff22x2[_0x2b73[235]]= this[_0x2b73[235]];_0xff22x2[_0x2b73[236]]= this[_0x2b73[236]];_0xff22x2[_0x2b73[117]]= this[_0x2b73[117]];_0xff22x2[_0x2b73[119]]= this[_0x2b73[119]];return _0xff22x2};function mxGraphSelectionModel(_0xff22x2){this[_0x2b73[1179]]= _0xff22x2;this[_0x2b73[895]]= []}mxGraphSelectionModel[_0x2b73[202]]= new mxEventSource;mxGraphSelectionModel[_0x2b73[202]][_0x2b73[196]]= mxGraphSelectionModel;mxGraphSelectionModel[_0x2b73[202]][_0x2b73[2091]]= _0x2b73[130]!= mxClient[_0x2b73[90]]?_0x2b73[819]:_0x2b73[110];mxGraphSelectionModel[_0x2b73[202]][_0x2b73[2092]]= _0x2b73[130]!= mxClient[_0x2b73[90]]?_0x2b73[2093]:_0x2b73[110];mxGraphSelectionModel[_0x2b73[202]][_0x2b73[1179]]= null;mxGraphSelectionModel[_0x2b73[202]][_0x2b73[2094]]= !1;mxGraphSelectionModel[_0x2b73[202]][_0x2b73[2095]]= function(){return this[_0x2b73[2094]]};mxGraphSelectionModel[_0x2b73[202]][_0x2b73[2096]]= function(_0xff22x2){this[_0x2b73[2094]]= _0xff22x2};mxGraphSelectionModel[_0x2b73[202]][_0x2b73[2097]]= function(_0xff22x2){return null!= _0xff22x2?0<= mxUtils[_0x2b73[2]](this[_0x2b73[895]],_0xff22x2):!1};mxGraphSelectionModel[_0x2b73[202]][_0x2b73[1107]]= function(){return 0== this[_0x2b73[895]][_0x2b73[67]]};mxGraphSelectionModel[_0x2b73[202]][_0x2b73[200]]= function(){this[_0x2b73[2098]](null,this[_0x2b73[895]])};mxGraphSelectionModel[_0x2b73[202]][_0x2b73[2099]]= function(_0xff22x2){null!= _0xff22x2&& this[_0x2b73[2100]]([_0xff22x2])};mxGraphSelectionModel[_0x2b73[202]][_0x2b73[2100]]= function(_0xff22x2){if(null!= _0xff22x2){this[_0x2b73[2094]]&& (_0xff22x2= [this[_0x2b73[2101]](_0xff22x2)]);for(var _0xff22x3=[],_0xff22x4=0;_0xff22x4< _0xff22x2[_0x2b73[67]];_0xff22x4++){this[_0x2b73[1179]][_0x2b73[2102]](_0xff22x2[_0xff22x4])&& _0xff22x3[_0x2b73[207]](_0xff22x2[_0xff22x4])};this[_0x2b73[2098]](_0xff22x3,this[_0x2b73[895]])}};mxGraphSelectionModel[_0x2b73[202]][_0x2b73[2101]]= function(_0xff22x2){if(null!= _0xff22x2){for(var _0xff22x3=0;_0xff22x3< _0xff22x2[_0x2b73[67]];_0xff22x3++){if(this[_0x2b73[1179]][_0x2b73[2102]](_0xff22x2[_0xff22x3])){return _0xff22x2[_0xff22x3]}}};return null};mxGraphSelectionModel[_0x2b73[202]][_0x2b73[2103]]= function(_0xff22x2){null!= _0xff22x2&& this[_0x2b73[832]]([_0xff22x2])};mxGraphSelectionModel[_0x2b73[202]][_0x2b73[832]]= function(_0xff22x2){if(null!= _0xff22x2){var _0xff22x3=null;this[_0x2b73[2094]]&& (_0xff22x3= this[_0x2b73[895]],_0xff22x2= [this[_0x2b73[2101]](_0xff22x2)]);for(var _0xff22x4=[],_0xff22x5=0;_0xff22x5< _0xff22x2[_0x2b73[67]];_0xff22x5++){!this[_0x2b73[2097]](_0xff22x2[_0xff22x5])&& this[_0x2b73[1179]][_0x2b73[2102]](_0xff22x2[_0xff22x5])&& _0xff22x4[_0x2b73[207]](_0xff22x2[_0xff22x5])};this[_0x2b73[2098]](_0xff22x4,_0xff22x3)}};mxGraphSelectionModel[_0x2b73[202]][_0x2b73[2104]]= function(_0xff22x2){null!= _0xff22x2&& this[_0x2b73[842]]([_0xff22x2])};mxGraphSelectionModel[_0x2b73[202]][_0x2b73[842]]= function(_0xff22x2){if(null!= _0xff22x2){for(var _0xff22x3=[],_0xff22x4=0;_0xff22x4< _0xff22x2[_0x2b73[67]];_0xff22x4++){this[_0x2b73[2097]](_0xff22x2[_0xff22x4])&& _0xff22x3[_0x2b73[207]](_0xff22x2[_0xff22x4])};this[_0x2b73[2098]](null,_0xff22x3)}};mxGraphSelectionModel[_0x2b73[202]][_0x2b73[2098]]= function(_0xff22x2,_0xff22x3){if(null!= _0xff22x2&& 0< _0xff22x2[_0x2b73[67]]&& null!= _0xff22x2[0]|| null!= _0xff22x3&& 0< _0xff22x3[_0x2b73[67]]&& null!= _0xff22x3[0]){var _0xff22x4= new mxSelectionChange(this,_0xff22x2,_0xff22x3);_0xff22x4[_0x2b73[350]]();var _0xff22x5= new mxUndoableEdit(this,!1);_0xff22x5[_0x2b73[99]](_0xff22x4);this[_0x2b73[746]]( new mxEventObject(mxEvent.UNDO,_0x2b73[1061],_0xff22x5))}};mxGraphSelectionModel[_0x2b73[202]][_0x2b73[1941]]= function(_0xff22x2){null!= _0xff22x2&& !this[_0x2b73[2097]](_0xff22x2)&& this[_0x2b73[895]][_0x2b73[207]](_0xff22x2)};mxGraphSelectionModel[_0x2b73[202]][_0x2b73[1102]]= function(_0xff22x2){null!= _0xff22x2&& (_0xff22x2= mxUtils[_0x2b73[2]](this[_0x2b73[895]],_0xff22x2),0<= _0xff22x2&& this[_0x2b73[895]][_0x2b73[300]](_0xff22x2,1))};function mxSelectionChange(_0xff22x2,_0xff22x3,_0xff22x4){this[_0x2b73[2105]]= _0xff22x2;this[_0x2b73[2106]]= null!= _0xff22x3?_0xff22x3[_0x2b73[1853]]():null;this[_0x2b73[2107]]= null!= _0xff22x4?_0xff22x4[_0x2b73[1853]]():null}mxSelectionChange[_0x2b73[202]][_0x2b73[350]]= function(){var _0xff22x2=mxLog[_0x2b73[2109]](_0x2b73[2108]);window[_0x2b73[879]]= mxResources[_0x2b73[203]](this[_0x2b73[2105]][_0x2b73[2092]])|| this[_0x2b73[2105]][_0x2b73[2092]];if(null!= this[_0x2b73[2107]]){for(var _0xff22x3=0;_0xff22x3< this[_0x2b73[2107]][_0x2b73[67]];_0xff22x3++){this[_0x2b73[2105]][_0x2b73[1102]](this[_0x2b73[2107]][_0xff22x3])}};if(null!= this[_0x2b73[2106]]){for(_0xff22x3= 0;_0xff22x3< this[_0x2b73[2106]][_0x2b73[67]];_0xff22x3++){this[_0x2b73[2105]][_0x2b73[1941]](this[_0x2b73[2106]][_0xff22x3])}};_0xff22x3= this[_0x2b73[2106]];this[_0x2b73[2106]]= this[_0x2b73[2107]];this[_0x2b73[2107]]= _0xff22x3;window[_0x2b73[879]]= mxResources[_0x2b73[203]](this[_0x2b73[2105]][_0x2b73[2091]])|| this[_0x2b73[2105]][_0x2b73[2091]];mxLog[_0x2b73[2110]](_0x2b73[2108],_0xff22x2);this[_0x2b73[2105]][_0x2b73[746]]( new mxEventObject(mxEvent.CHANGE,_0x2b73[2106],this[_0x2b73[2106]],_0x2b73[2107],this[_0x2b73[2107]]))};function mxCellEditor(_0xff22x2){this[_0x2b73[1179]]= _0xff22x2}mxCellEditor[_0x2b73[202]][_0x2b73[1179]]= null;mxCellEditor[_0x2b73[202]][_0x2b73[126]]= null;mxCellEditor[_0x2b73[202]][_0x2b73[2111]]= null;mxCellEditor[_0x2b73[202]][_0x2b73[2112]]= null;mxCellEditor[_0x2b73[202]][_0x2b73[2113]]= !1;mxCellEditor[_0x2b73[202]][_0x2b73[2114]]= !0;mxCellEditor[_0x2b73[202]][_0x2b73[2115]]= _0x2b73[110];mxCellEditor[_0x2b73[202]][_0x2b73[2116]]= _0x2b73[110];mxCellEditor[_0x2b73[202]][_0x2b73[176]]= function(){this[_0x2b73[126]]= document[_0x2b73[55]](_0x2b73[126]);this[_0x2b73[126]][_0x2b73[926]]= _0x2b73[2117];this[_0x2b73[126]][_0x2b73[124]][_0x2b73[491]]= _0x2b73[492];this[_0x2b73[126]][_0x2b73[124]][_0x2b73[277]]= _0x2b73[189];this[_0x2b73[126]][_0x2b73[57]](_0x2b73[2118],_0x2b73[2119]);this[_0x2b73[126]][_0x2b73[57]](_0x2b73[969],_0x2b73[2120]);mxClient[_0x2b73[133]]&& (this[_0x2b73[126]][_0x2b73[124]][_0x2b73[129]]= _0x2b73[130]);mxEvent[_0x2b73[169]](this[_0x2b73[126]],_0x2b73[2121],mxUtils[_0x2b73[885]](this,function(_0xff22x2){this[_0x2b73[2122]]()}));mxEvent[_0x2b73[169]](this[_0x2b73[126]],_0x2b73[2123],mxUtils[_0x2b73[885]](this,function(_0xff22x2){mxEvent[_0x2b73[721]](_0xff22x2)|| (113== _0xff22x2[_0x2b73[2124]]|| this[_0x2b73[1179]][_0x2b73[2125]]()&& 13== _0xff22x2[_0x2b73[2124]]&& !mxEvent[_0x2b73[775]](_0xff22x2)&& !mxEvent[_0x2b73[774]](_0xff22x2)?(this[_0x2b73[1179]][_0x2b73[2126]](!1),mxEvent[_0x2b73[722]](_0xff22x2)):27== _0xff22x2[_0x2b73[2124]]?(this[_0x2b73[1179]][_0x2b73[2126]](!0),mxEvent[_0x2b73[722]](_0xff22x2)):(this[_0x2b73[2127]]&& (this[_0x2b73[2127]]= !1,this[_0x2b73[126]][_0x2b73[131]]= _0x2b73[110]),this[_0x2b73[2128]](!0)))}));mxEvent[_0x2b73[169]](this[_0x2b73[126]],_0x2b73[2129],mxUtils[_0x2b73[885]](this,function(_0xff22x2){this[_0x2b73[2114]]&& !mxEvent[_0x2b73[721]](_0xff22x2)&& setTimeout(mxUtils[_0x2b73[885]](this,function(){this[_0x2b73[129]]()}),0)}))};mxCellEditor[_0x2b73[202]][_0x2b73[129]]= function(){if(null!= this[_0x2b73[1653]]){var _0xff22x2=this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[248]](this[_0x2b73[2111]]),_0xff22x3=this[_0x2b73[1179]][_0x2b73[2130]](_0xff22x2[_0x2b73[246]]),_0xff22x4=this[_0x2b73[1179]][_0x2b73[2131]](_0xff22x2[_0x2b73[246]]);if(this[_0x2b73[1179]][_0x2b73[502]]()[_0x2b73[250]](_0xff22x2[_0x2b73[246]])){this[_0x2b73[1562]][_0x2b73[235]]= _0xff22x2[_0x2b73[2079]][_0x2b73[235]],this[_0x2b73[1562]][_0x2b73[236]]= _0xff22x2[_0x2b73[2079]][_0x2b73[236]],this[_0x2b73[1562]][_0x2b73[117]]= 0,this[_0x2b73[1562]][_0x2b73[119]]= 0}else {if(null!= this[_0x2b73[1562]]){this[_0x2b73[1562]][_0x2b73[235]]= _0xff22x2[_0x2b73[235]];this[_0x2b73[1562]][_0x2b73[236]]= _0xff22x2[_0x2b73[236]];this[_0x2b73[1562]][_0x2b73[117]]= _0xff22x2[_0x2b73[117]];this[_0x2b73[1562]][_0x2b73[119]]= _0xff22x2[_0x2b73[119]];var _0xff22x5=mxUtils[_0x2b73[433]](_0xff22x2[_0x2b73[124]],mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER);_0xff22x5== mxConstants[_0x2b73[2132]]?this[_0x2b73[1562]][_0x2b73[235]]-= _0xff22x2[_0x2b73[117]]:_0xff22x5== mxConstants[_0x2b73[480]]&& (this[_0x2b73[1562]][_0x2b73[235]]+= _0xff22x2[_0x2b73[117]]);_0xff22x5= mxUtils[_0x2b73[433]](_0xff22x2[_0x2b73[124]],mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE);_0xff22x5== mxConstants[_0x2b73[1687]]?this[_0x2b73[1562]][_0x2b73[236]]-= _0xff22x2[_0x2b73[119]]:_0xff22x5== mxConstants[_0x2b73[482]]&& (this[_0x2b73[1562]][_0x2b73[236]]+= _0xff22x2[_0x2b73[119]])}};_0xff22x5= this[_0x2b73[126]][_0x2b73[131]];if(_0x2b73[192]== _0xff22x5[_0x2b73[225]](_0xff22x5[_0x2b73[67]]- 1)|| _0x2b73[110]== _0xff22x5){_0xff22x5+= _0x2b73[544]};_0xff22x5= mxUtils[_0x2b73[321]](_0xff22x5,!1);_0xff22x4?(this[_0x2b73[1653]][_0x2b73[124]][_0x2b73[493]]= _0x2b73[1502],this[_0x2b73[1653]][_0x2b73[124]][_0x2b73[117]]= this[_0x2b73[1562]][_0x2b73[117]]+ _0x2b73[168]):_0xff22x5= _0xff22x5[_0x2b73[230]](/ /g,_0x2b73[544]);_0xff22x5= _0xff22x5[_0x2b73[230]](/\n/g,_0x2b73[1453]);this[_0x2b73[1653]][_0x2b73[339]]= _0xff22x5;var _0xff22x5=this[_0x2b73[1653]][_0x2b73[359]]+ 30,_0xff22x9=this[_0x2b73[1653]][_0x2b73[167]]+ 16,_0xff22x5=Math[_0x2b73[160]](_0xff22x5,40),_0xff22x9=Math[_0x2b73[160]](_0xff22x9,20);_0xff22x3&& (_0xff22x5= Math[_0x2b73[243]](this[_0x2b73[1562]][_0x2b73[117]]- 4,_0xff22x5),_0xff22x9= Math[_0x2b73[243]](this[_0x2b73[1562]][_0x2b73[119]],_0xff22x9));var _0xff22xa=null!= _0xff22x2[_0x2b73[963]]?_0xff22x2[_0x2b73[963]][_0x2b73[1655]]:null;null== _0xff22xa&& (_0xff22xa= mxUtils[_0x2b73[433]](_0xff22x2[_0x2b73[124]],mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),_0xff22x2= mxUtils[_0x2b73[433]](_0xff22x2[_0x2b73[124]],mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),_0xff22xa= mxUtils[_0x2b73[1501]](_0xff22xa,_0xff22x2));if(null!= _0xff22xa){if(_0xff22x3|| !_0xff22x4){this[_0x2b73[126]][_0x2b73[124]][_0x2b73[361]]= Math[_0x2b73[160]](0,Math[_0x2b73[488]](this[_0x2b73[1562]][_0x2b73[235]]- _0xff22xa[_0x2b73[235]]* this[_0x2b73[1562]][_0x2b73[117]]+ _0xff22xa[_0x2b73[235]]* _0xff22x5)- 3)+ _0x2b73[168]};this[_0x2b73[126]][_0x2b73[124]][_0x2b73[125]]= Math[_0x2b73[160]](0,Math[_0x2b73[488]](this[_0x2b73[1562]][_0x2b73[236]]- _0xff22xa[_0x2b73[236]]* this[_0x2b73[1562]][_0x2b73[119]]+ _0xff22xa[_0x2b73[236]]* _0xff22x9)+ 4)+ _0x2b73[168]};if(_0xff22x3|| !_0xff22x4){this[_0x2b73[126]][_0x2b73[124]][_0x2b73[117]]= _0xff22x5+ _0x2b73[168]};this[_0x2b73[126]][_0x2b73[124]][_0x2b73[119]]= _0xff22x9+ _0x2b73[168]}};mxCellEditor[_0x2b73[202]][_0x2b73[2133]]= function(){return this[_0x2b73[2113]]};mxCellEditor[_0x2b73[202]][_0x2b73[2128]]= function(_0xff22x2){this[_0x2b73[2113]]= _0xff22x2};mxCellEditor[_0x2b73[202]][_0x2b73[2122]]= function(){this[_0x2b73[2126]](!this[_0x2b73[1179]][_0x2b73[2134]]())};mxCellEditor[_0x2b73[202]][_0x2b73[855]]= function(_0xff22x2,_0xff22x3){null== this[_0x2b73[126]]&& this[_0x2b73[176]]();this[_0x2b73[2126]](!0);var _0xff22x4=this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[248]](_0xff22x2);if(null!= _0xff22x4){this[_0x2b73[2111]]= _0xff22x2;this[_0x2b73[2112]]= _0xff22x3;this[_0x2b73[2116]]= null;null!= _0xff22x4[_0x2b73[963]]&& this[_0x2b73[2135]](_0xff22x4)&& (this[_0x2b73[2116]]= _0xff22x4[_0x2b73[963]][_0x2b73[252]],this[_0x2b73[2116]][_0x2b73[124]][_0x2b73[187]]= _0x2b73[188]);var _0xff22x5=this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[255]],_0xff22x5=mxUtils[_0x2b73[433]](_0xff22x4[_0x2b73[124]],mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE)* _0xff22x5,_0xff22x9=mxUtils[_0x2b73[433]](_0xff22x4[_0x2b73[124]],mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY),_0xff22xa=mxUtils[_0x2b73[433]](_0xff22x4[_0x2b73[124]],mxConstants.STYLE_FONTCOLOR,_0x2b73[586]),_0xff22x12=mxUtils[_0x2b73[433]](_0xff22x4[_0x2b73[124]],mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),_0xff22x13=(mxUtils[_0x2b73[433]](_0xff22x4[_0x2b73[124]],mxConstants.STYLE_FONTSTYLE,0)& mxConstants[_0x2b73[1410]])== mxConstants[_0x2b73[1410]],_0xff22x14=(mxUtils[_0x2b73[433]](_0xff22x4[_0x2b73[124]],mxConstants.STYLE_FONTSTYLE,0)& mxConstants[_0x2b73[1412]])== mxConstants[_0x2b73[1412]],_0xff22x15=(mxUtils[_0x2b73[433]](_0xff22x4[_0x2b73[124]],mxConstants.STYLE_FONTSTYLE,0)& mxConstants[_0x2b73[1414]])== mxConstants[_0x2b73[1414]];this[_0x2b73[126]][_0x2b73[124]][_0x2b73[487]]= Math[_0x2b73[488]](_0xff22x5)+ _0x2b73[168];this[_0x2b73[126]][_0x2b73[124]][_0x2b73[489]]= Math[_0x2b73[488]](_0xff22x5* mxConstants[_0x2b73[490]])+ _0x2b73[168];this[_0x2b73[126]][_0x2b73[124]][_0x2b73[486]]= _0xff22x9;this[_0x2b73[126]][_0x2b73[124]][_0x2b73[1165]]= _0xff22x12;this[_0x2b73[126]][_0x2b73[124]][_0x2b73[352]]= _0xff22xa;this[_0x2b73[126]][_0x2b73[124]][_0x2b73[1452]]= _0xff22x13?_0x2b73[1447]:_0x2b73[1502];this[_0x2b73[126]][_0x2b73[124]][_0x2b73[666]]= _0xff22x14?_0x2b73[1449]:_0x2b73[110];this[_0x2b73[126]][_0x2b73[124]][_0x2b73[354]]= _0xff22x15?_0x2b73[355]:_0x2b73[110];this[_0x2b73[126]][_0x2b73[124]][_0x2b73[277]]= _0x2b73[278];this[_0x2b73[126]][_0x2b73[124]][_0x2b73[2136]]= _0x2b73[130];this[_0x2b73[1562]]= _0xff22x5= this[_0x2b73[2137]](_0xff22x4);this[_0x2b73[126]][_0x2b73[124]][_0x2b73[361]]= _0xff22x5[_0x2b73[235]]+ _0x2b73[168];this[_0x2b73[126]][_0x2b73[124]][_0x2b73[125]]= _0xff22x5[_0x2b73[236]]+ _0x2b73[168];this[_0x2b73[126]][_0x2b73[124]][_0x2b73[117]]= _0xff22x5[_0x2b73[117]]+ _0x2b73[168];this[_0x2b73[126]][_0x2b73[124]][_0x2b73[119]]= _0xff22x5[_0x2b73[119]]+ _0x2b73[168];this[_0x2b73[126]][_0x2b73[124]][_0x2b73[931]]= 5;_0xff22x4= this[_0x2b73[2138]](_0xff22x4,_0xff22x3);null== _0xff22x4|| 0== _0xff22x4[_0x2b73[67]]?(_0xff22x4= this[_0x2b73[2139]](),this[_0x2b73[2127]]= !0):this[_0x2b73[2127]]= !1;this[_0x2b73[2128]](!1);this[_0x2b73[126]][_0x2b73[131]]= _0xff22x4;this[_0x2b73[1179]][_0x2b73[526]][_0x2b73[62]](this[_0x2b73[126]]);_0x2b73[130]!= this[_0x2b73[126]][_0x2b73[124]][_0x2b73[495]]&& (this[_0x2b73[2114]]&& (this[_0x2b73[1653]]= this[_0x2b73[2140]](),document[_0x2b73[112]][_0x2b73[62]](this[_0x2b73[1653]]),this[_0x2b73[129]]()),this[_0x2b73[126]][_0x2b73[393]](),this[_0x2b73[126]][_0x2b73[804]]())}};mxCellEditor[_0x2b73[202]][_0x2b73[2140]]= function(){var _0xff22x2=document[_0x2b73[55]](_0x2b73[485]),_0xff22x3=_0xff22x2[_0x2b73[124]];_0xff22x3[_0x2b73[491]]= _0x2b73[492];_0xff22x3[_0x2b73[493]]= _0x2b73[494];_0xff22x3[_0x2b73[187]]= _0x2b73[188];_0xff22x3[_0x2b73[495]]= mxClient[_0x2b73[496]]?_0x2b73[497]:_0x2b73[498];_0xff22x3[_0x2b73[499]]= _0x2b73[500];_0xff22x3[_0x2b73[123]]= _0x2b73[125];_0xff22x3[_0x2b73[489]]= this[_0x2b73[126]][_0x2b73[124]][_0x2b73[489]];_0xff22x3[_0x2b73[487]]= this[_0x2b73[126]][_0x2b73[124]][_0x2b73[487]];_0xff22x3[_0x2b73[486]]= this[_0x2b73[126]][_0x2b73[124]][_0x2b73[486]];_0xff22x3[_0x2b73[1452]]= this[_0x2b73[126]][_0x2b73[124]][_0x2b73[1452]];_0xff22x3[_0x2b73[1165]]= this[_0x2b73[126]][_0x2b73[124]][_0x2b73[1165]];_0xff22x3[_0x2b73[666]]= this[_0x2b73[126]][_0x2b73[124]][_0x2b73[666]];_0xff22x3[_0x2b73[354]]= this[_0x2b73[126]][_0x2b73[124]][_0x2b73[354]];return _0xff22x2};mxCellEditor[_0x2b73[202]][_0x2b73[2126]]= function(_0xff22x2){null!= this[_0x2b73[2111]]&& (null!= this[_0x2b73[2116]]&& (this[_0x2b73[2116]][_0x2b73[124]][_0x2b73[187]]= _0x2b73[189],this[_0x2b73[2116]]= null),!_0xff22x2&& this[_0x2b73[2133]]()&& this[_0x2b73[1179]][_0x2b73[850]](this[_0x2b73[2111]],this[_0x2b73[2141]](),this[_0x2b73[2112]]),null!= this[_0x2b73[1653]]&& (document[_0x2b73[112]][_0x2b73[266]](this[_0x2b73[1653]]),this[_0x2b73[1653]]= null),this[_0x2b73[1562]]= this[_0x2b73[2112]]= this[_0x2b73[2111]]= null,this[_0x2b73[126]][_0x2b73[2121]](),this[_0x2b73[126]][_0x2b73[265]][_0x2b73[266]](this[_0x2b73[126]]))};mxCellEditor[_0x2b73[202]][_0x2b73[2138]]= function(_0xff22x2,_0xff22x3){return this[_0x2b73[1179]][_0x2b73[2142]](_0xff22x2[_0x2b73[246]],_0xff22x3)};mxCellEditor[_0x2b73[202]][_0x2b73[2141]]= function(){return this[_0x2b73[126]][_0x2b73[131]][_0x2b73[230]](/\r/g,_0x2b73[110])};mxCellEditor[_0x2b73[202]][_0x2b73[2135]]= function(_0xff22x2){return !0};mxCellEditor[_0x2b73[202]][_0x2b73[939]]= function(_0xff22x2){var _0xff22x3=this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[255]];return new mxRectangle(0,0,null== _0xff22x2[_0x2b73[963]]?30:_0xff22x2[_0x2b73[963]][_0x2b73[803]]* _0xff22x3+ 20,_0x2b73[361]== this[_0x2b73[126]][_0x2b73[124]][_0x2b73[1165]]?120:40)};mxCellEditor[_0x2b73[202]][_0x2b73[2137]]= function(_0xff22x2){var _0xff22x3=this[_0x2b73[1179]][_0x2b73[502]]()[_0x2b73[250]](_0xff22x2[_0x2b73[246]]),_0xff22x4=this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[255]],_0xff22x5=this[_0x2b73[939]](_0xff22x2),_0xff22x9=_0xff22x5[_0x2b73[117]],_0xff22x5=_0xff22x5[_0x2b73[119]],_0xff22xa=parseInt(_0xff22x2[_0x2b73[124]][mxConstants[_0x2b73[2143]]]|| 2)* _0xff22x4,_0xff22x12=parseInt(_0xff22x2[_0x2b73[124]][mxConstants[_0x2b73[2144]]]|| 0)* _0xff22x4+ _0xff22xa,_0xff22x13=parseInt(_0xff22x2[_0x2b73[124]][mxConstants[_0x2b73[2145]]]|| 0)* _0xff22x4+ _0xff22xa,_0xff22x14=parseInt(_0xff22x2[_0x2b73[124]][mxConstants[_0x2b73[2146]]]|| 0)* _0xff22x4+ _0xff22xa,_0xff22x4=parseInt(_0xff22x2[_0x2b73[124]][mxConstants[_0x2b73[2147]]]|| 0)* _0xff22x4+ _0xff22xa,_0xff22x13= new mxRectangle(_0xff22x2[_0x2b73[235]],_0xff22x2[_0x2b73[236]],Math[_0x2b73[160]](_0xff22x9,_0xff22x2[_0x2b73[117]]- _0xff22x4- _0xff22x13),Math[_0x2b73[160]](_0xff22x5,_0xff22x2[_0x2b73[119]]- _0xff22x12- _0xff22x14));_0xff22x3?(_0xff22x13[_0x2b73[235]]= _0xff22x2[_0x2b73[2079]][_0x2b73[235]],_0xff22x13[_0x2b73[236]]= _0xff22x2[_0x2b73[2079]][_0x2b73[236]],null!= _0xff22x2[_0x2b73[963]]&& null!= _0xff22x2[_0x2b73[963]][_0x2b73[1563]]&& (0< _0xff22x2[_0x2b73[963]][_0x2b73[1563]][_0x2b73[235]]&& (_0xff22x13[_0x2b73[235]]= _0xff22x2[_0x2b73[963]][_0x2b73[1563]][_0x2b73[235]]),0< _0xff22x2[_0x2b73[963]][_0x2b73[1563]][_0x2b73[236]]&& (_0xff22x13[_0x2b73[236]]= _0xff22x2[_0x2b73[963]][_0x2b73[1563]][_0x2b73[236]]))):null!= _0xff22x2[_0x2b73[963]]&& null!= _0xff22x2[_0x2b73[963]][_0x2b73[1563]]&& (_0xff22x13[_0x2b73[235]]= Math[_0x2b73[243]](_0xff22x13[_0x2b73[235]],_0xff22x2[_0x2b73[963]][_0x2b73[1563]][_0x2b73[235]]),_0xff22x13[_0x2b73[236]]= Math[_0x2b73[243]](_0xff22x13[_0x2b73[236]],_0xff22x2[_0x2b73[963]][_0x2b73[1563]][_0x2b73[236]]));_0xff22x13[_0x2b73[235]]+= _0xff22x4;_0xff22x13[_0x2b73[236]]+= _0xff22x12;null!= _0xff22x2[_0x2b73[963]]&& null!= _0xff22x2[_0x2b73[963]][_0x2b73[1563]]&& (_0xff22x3?(_0xff22x13[_0x2b73[117]]= Math[_0x2b73[160]](_0xff22x9,_0xff22x2[_0x2b73[963]][_0x2b73[1563]][_0x2b73[117]]),_0xff22x13[_0x2b73[119]]= Math[_0x2b73[160]](_0xff22x5,_0xff22x2[_0x2b73[963]][_0x2b73[1563]][_0x2b73[119]])):(_0xff22x13[_0x2b73[117]]= Math[_0x2b73[160]](_0xff22x13[_0x2b73[117]],_0xff22x2[_0x2b73[963]][_0x2b73[1563]][_0x2b73[117]]),_0xff22x13[_0x2b73[119]]= Math[_0x2b73[160]](_0xff22x13[_0x2b73[119]],_0xff22x2[_0x2b73[963]][_0x2b73[1563]][_0x2b73[119]])));this[_0x2b73[1179]][_0x2b73[502]]()[_0x2b73[1193]](_0xff22x2[_0x2b73[246]])&& (_0xff22x3= mxUtils[_0x2b73[433]](_0xff22x2[_0x2b73[124]],mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER),_0xff22x3== mxConstants[_0x2b73[2132]]?_0xff22x13[_0x2b73[235]]-= _0xff22x2[_0x2b73[117]]:_0xff22x3== mxConstants[_0x2b73[480]]&& (_0xff22x13[_0x2b73[235]]+= _0xff22x2[_0x2b73[117]]),_0xff22x3= mxUtils[_0x2b73[433]](_0xff22x2[_0x2b73[124]],mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE),_0xff22x3== mxConstants[_0x2b73[1687]]?_0xff22x13[_0x2b73[236]]-= _0xff22x2[_0x2b73[119]]:_0xff22x3== mxConstants[_0x2b73[482]]&& (_0xff22x13[_0x2b73[236]]+= _0xff22x2[_0x2b73[119]]));return _0xff22x13};mxCellEditor[_0x2b73[202]][_0x2b73[2139]]= function(_0xff22x2){return this[_0x2b73[2115]]};mxCellEditor[_0x2b73[202]][_0x2b73[2148]]= function(){return this[_0x2b73[2111]]};mxCellEditor[_0x2b73[202]][_0x2b73[515]]= function(){null!= this[_0x2b73[126]]&& (mxEvent[_0x2b73[762]](this[_0x2b73[126]]),null!= this[_0x2b73[126]][_0x2b73[265]]&& this[_0x2b73[126]][_0x2b73[265]][_0x2b73[266]](this[_0x2b73[126]]),this[_0x2b73[126]]= null)};function mxCellRenderer(){}mxCellRenderer[_0x2b73[202]][_0x2b73[2149]]= mxConnector;mxCellRenderer[_0x2b73[202]][_0x2b73[2150]]= mxRectangleShape;mxCellRenderer[_0x2b73[202]][_0x2b73[2151]]= mxText;mxCellRenderer[_0x2b73[202]][_0x2b73[2152]]= !0;mxCellRenderer[_0x2b73[202]][_0x2b73[2153]]= {};mxCellRenderer[_0x2b73[2154]]= function(_0xff22x2,_0xff22x3){mxCellRenderer[_0x2b73[202]][_0x2b73[2153]][_0xff22x2]= _0xff22x3};mxCellRenderer[_0x2b73[2154]](mxConstants.SHAPE_RECTANGLE,mxRectangleShape);mxCellRenderer[_0x2b73[2154]](mxConstants.SHAPE_ELLIPSE,mxEllipse);mxCellRenderer[_0x2b73[2154]](mxConstants.SHAPE_RHOMBUS,mxRhombus);mxCellRenderer[_0x2b73[2154]](mxConstants.SHAPE_CYLINDER,mxCylinder);mxCellRenderer[_0x2b73[2154]](mxConstants.SHAPE_CONNECTOR,mxConnector);mxCellRenderer[_0x2b73[2154]](mxConstants.SHAPE_ACTOR,mxActor);mxCellRenderer[_0x2b73[2154]](mxConstants.SHAPE_TRIANGLE,mxTriangle);mxCellRenderer[_0x2b73[2154]](mxConstants.SHAPE_HEXAGON,mxHexagon);mxCellRenderer[_0x2b73[2154]](mxConstants.SHAPE_CLOUD,mxCloud);mxCellRenderer[_0x2b73[2154]](mxConstants.SHAPE_LINE,mxLine);mxCellRenderer[_0x2b73[2154]](mxConstants.SHAPE_ARROW,mxArrow);mxCellRenderer[_0x2b73[2154]](mxConstants.SHAPE_DOUBLE_ELLIPSE,mxDoubleEllipse);mxCellRenderer[_0x2b73[2154]](mxConstants.SHAPE_SWIMLANE,mxSwimlane);mxCellRenderer[_0x2b73[2154]](mxConstants.SHAPE_IMAGE,mxImageShape);mxCellRenderer[_0x2b73[2154]](mxConstants.SHAPE_LABEL,mxLabel);mxCellRenderer[_0x2b73[202]][_0x2b73[2155]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=_0xff22x2[_0x2b73[441]][_0x2b73[1179]][_0x2b73[502]]();if(null!= _0xff22x2[_0x2b73[441]][_0x2b73[1179]][_0x2b73[526]]&& null== _0xff22x2[_0x2b73[253]]&& _0xff22x2[_0x2b73[246]]!= _0xff22x2[_0x2b73[441]][_0x2b73[1741]]&& (_0xff22x4[_0x2b73[1193]](_0xff22x2[_0x2b73[246]])|| _0xff22x4[_0x2b73[250]](_0xff22x2[_0x2b73[246]]))){if(this[_0x2b73[2156]](_0xff22x2),null!= _0xff22x2[_0x2b73[253]]&& (null== _0xff22x3|| _0xff22x3)){this[_0x2b73[2157]](_0xff22x2),_0xff22x2[_0x2b73[441]][_0x2b73[1179]][_0x2b73[2158]]|| _0xff22x4[_0x2b73[250]](_0xff22x2[_0x2b73[246]])?_0xff22x2[_0x2b73[2081]]= !0:_0xff22x2[_0x2b73[441]][_0x2b73[1179]][_0x2b73[2159]]&& null!= this[_0x2b73[2160]]&& (this[_0x2b73[2160]][_0x2b73[265]]== _0xff22x2[_0x2b73[253]][_0x2b73[252]][_0x2b73[265]]?this[_0x2b73[2161]](_0xff22x2,this[_0x2b73[2160]]):this[_0x2b73[2160]]= null),_0xff22x2[_0x2b73[253]][_0x2b73[255]]= _0xff22x2[_0x2b73[441]][_0x2b73[255]],this[_0x2b73[2162]](_0xff22x2),this[_0x2b73[2163]](_0xff22x2)}}};mxCellRenderer[_0x2b73[202]][_0x2b73[2157]]= function(_0xff22x2){_0xff22x2[_0x2b73[253]][_0x2b73[176]](_0xff22x2[_0x2b73[441]][_0x2b73[2024]]())};mxCellRenderer[_0x2b73[202]][_0x2b73[2164]]= function(_0xff22x2,_0xff22x3){for(var _0xff22x4=null,_0xff22x5=_0xff22x2[_0x2b73[441]][_0x2b73[1179]],_0xff22x9=_0xff22x5[_0x2b73[502]](),_0xff22xa=_0xff22x2[_0x2b73[246]],_0xff22x12=_0xff22x9[_0x2b73[1197]](_0xff22xa);null!= _0xff22x12&& null== _0xff22x4;){_0xff22x4= this[_0x2b73[2165]](_0xff22x5,_0xff22x12,_0xff22xa,_0xff22x3),_0xff22xa= _0xff22x12,_0xff22x12= _0xff22x9[_0x2b73[1197]](_0xff22xa)};return _0xff22x4};mxCellRenderer[_0x2b73[202]][_0x2b73[2165]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){var _0xff22x9=null,_0xff22xa=_0xff22x2[_0x2b73[502]]();for(_0xff22x4= null!= _0xff22x4?_0xff22x3[_0x2b73[1738]](_0xff22x4)- 1:_0xff22xa[_0x2b73[262]](_0xff22x3)- 1;0<= _0xff22x4&& null== _0xff22x9;_0xff22x4--){_0xff22x9= this[_0x2b73[2165]](_0xff22x2,_0xff22xa[_0x2b73[263]](_0xff22x3,_0xff22x4),null,_0xff22x5)};if(null== _0xff22x9&& (_0xff22x9= _0xff22x2[_0x2b73[441]][_0x2b73[248]](_0xff22x3),null!= _0xff22x9&& (null== _0xff22x9[_0x2b73[253]]|| null== _0xff22x9[_0x2b73[253]][_0x2b73[252]]|| _0xff22x9[_0x2b73[253]][_0x2b73[252]][_0x2b73[265]]!= _0xff22x5))){_0xff22x9= null};return _0xff22x9};mxCellRenderer[_0x2b73[202]][_0x2b73[2166]]= function(_0xff22x2){var _0xff22x3=_0xff22x2[_0x2b73[253]][_0x2b73[252]][_0x2b73[265]],_0xff22x4=this[_0x2b73[2164]](_0xff22x2,_0xff22x3),_0xff22x5=_0xff22x3[_0x2b73[285]];null!= _0xff22x4&& (_0xff22x5= _0xff22x4[_0x2b73[253]][_0x2b73[252]],null!= _0xff22x4[_0x2b73[963]]&& (null!= _0xff22x4[_0x2b73[963]][_0x2b73[252]]&& _0xff22x4[_0x2b73[963]][_0x2b73[252]][_0x2b73[265]]== _0xff22x3)&& (_0xff22x5= _0xff22x4[_0x2b73[963]][_0x2b73[252]]),_0xff22x5= _0xff22x5[_0x2b73[287]]);this[_0x2b73[2161]](_0xff22x2,_0xff22x5)};mxCellRenderer[_0x2b73[202]][_0x2b73[2167]]= function(_0xff22x2){var _0xff22x3=_0xff22x2[_0x2b73[441]],_0xff22x4=_0xff22x3[_0x2b73[1179]][_0x2b73[502]]();if(_0xff22x3[_0x2b73[1179]][_0x2b73[2159]]){if(null== this[_0x2b73[2160]]|| null== this[_0x2b73[2160]][_0x2b73[265]]|| this[_0x2b73[2160]][_0x2b73[265]]!= _0xff22x2[_0x2b73[253]][_0x2b73[252]][_0x2b73[265]]){this[_0x2b73[2160]]= _0xff22x2[_0x2b73[253]][_0x2b73[252]]}}else {if(_0xff22x3[_0x2b73[1179]][_0x2b73[2168]]){var _0xff22x5=_0xff22x2[_0x2b73[253]][_0x2b73[252]],_0xff22x9=_0xff22x5[_0x2b73[265]],_0xff22x4=_0xff22x4[_0x2b73[1197]](_0xff22x2[_0x2b73[246]]),_0xff22x3=_0xff22x3[_0x2b73[248]](_0xff22x4),_0xff22x9=null!= _0xff22x3&& null!= _0xff22x3[_0x2b73[253]]&& null!= _0xff22x3[_0x2b73[253]][_0x2b73[252]]?_0xff22x3[_0x2b73[253]][_0x2b73[252]][_0x2b73[287]]:_0xff22x9[_0x2b73[285]];null!= _0xff22x9&& _0xff22x9!= _0xff22x5&& this[_0x2b73[2161]](_0xff22x2,_0xff22x9)}}};mxCellRenderer[_0x2b73[202]][_0x2b73[2161]]= function(_0xff22x2,_0xff22x3){_0xff22x2[_0x2b73[253]][_0x2b73[252]][_0x2b73[265]][_0x2b73[950]](_0xff22x2[_0x2b73[253]][_0x2b73[252]],_0xff22x3);null!= _0xff22x2[_0x2b73[963]]&& (null!= _0xff22x2[_0x2b73[963]][_0x2b73[252]]&& _0xff22x2[_0x2b73[963]][_0x2b73[252]][_0x2b73[265]]== _0xff22x2[_0x2b73[253]][_0x2b73[252]][_0x2b73[265]])&& _0xff22x2[_0x2b73[253]][_0x2b73[252]][_0x2b73[265]][_0x2b73[950]](_0xff22x2[_0x2b73[963]][_0x2b73[252]],_0xff22x2[_0x2b73[253]][_0x2b73[252]][_0x2b73[287]])};mxCellRenderer[_0x2b73[202]][_0x2b73[2156]]= function(_0xff22x2){if(null!= _0xff22x2[_0x2b73[124]]){var _0xff22x3=mxStencilRegistry[_0x2b73[1560]](_0xff22x2[_0x2b73[124]][mxConstants[_0x2b73[2059]]]);null!= _0xff22x3?_0xff22x2[_0x2b73[253]]= new mxShape(_0xff22x3):(_0xff22x3= this[_0x2b73[2169]](_0xff22x2),_0xff22x2[_0x2b73[253]]= new _0xff22x3);_0xff22x2[_0x2b73[253]][_0x2b73[1525]]= _0xff22x2[_0x2b73[439]];_0xff22x2[_0x2b73[253]][_0x2b73[1562]]= new mxRectangle(_0xff22x2[_0x2b73[235]],_0xff22x2[_0x2b73[236]],_0xff22x2[_0x2b73[117]],_0xff22x2[_0x2b73[119]]);_0xff22x2[_0x2b73[253]][_0x2b73[507]]= _0xff22x2[_0x2b73[441]][_0x2b73[1179]][_0x2b73[507]];this[_0x2b73[2170]](_0xff22x2)}};mxCellRenderer[_0x2b73[202]][_0x2b73[2171]]= function(_0xff22x2){return null!= _0xff22x2?mxCellRenderer[_0x2b73[202]][_0x2b73[2153]][_0xff22x2]:null};mxCellRenderer[_0x2b73[202]][_0x2b73[2169]]= function(_0xff22x2){var _0xff22x3=this[_0x2b73[2171]](_0xff22x2[_0x2b73[124]][mxConstants[_0x2b73[2059]]]);null== _0xff22x3&& (_0xff22x3= _0xff22x2[_0x2b73[441]][_0x2b73[1179]][_0x2b73[502]]()[_0x2b73[250]](_0xff22x2[_0x2b73[246]])?this[_0x2b73[2149]]:this[_0x2b73[2150]]);return _0xff22x3};mxCellRenderer[_0x2b73[202]][_0x2b73[2170]]= function(_0xff22x2){_0xff22x2[_0x2b73[253]][_0x2b73[183]](_0xff22x2);_0xff22x2[_0x2b73[253]][_0x2b73[618]]= _0xff22x2[_0x2b73[441]][_0x2b73[1179]][_0x2b73[1202]](_0xff22x2);_0xff22x2[_0x2b73[253]][_0x2b73[630]]= this[_0x2b73[2171]](_0xff22x2[_0x2b73[441]][_0x2b73[1179]][_0x2b73[2172]](_0xff22x2));_0xff22x2[_0x2b73[253]][_0x2b73[632]]= _0xff22x2[_0x2b73[441]][_0x2b73[1179]][_0x2b73[2173]](_0xff22x2);_0xff22x2[_0x2b73[253]][_0x2b73[634]]= _0xff22x2[_0x2b73[441]][_0x2b73[1179]][_0x2b73[2174]](_0xff22x2);_0xff22x2[_0x2b73[253]][_0x2b73[638]]= _0xff22x2[_0x2b73[124]][mxConstants[_0x2b73[2175]]];_0xff22x2[_0x2b73[253]][_0x2b73[631]]= _0xff22x2[_0x2b73[441]][_0x2b73[1179]][_0x2b73[2176]](_0xff22x2);this[_0x2b73[2177]](_0xff22x2)};mxCellRenderer[_0x2b73[202]][_0x2b73[2177]]= function(_0xff22x2){null!= _0xff22x2[_0x2b73[253]]&& (this[_0x2b73[2178]](_0xff22x2,_0x2b73[632],mxConstants.STYLE_FILLCOLOR),this[_0x2b73[2178]](_0xff22x2,_0x2b73[634],mxConstants.STYLE_GRADIENTCOLOR),this[_0x2b73[2178]](_0xff22x2,_0x2b73[1334],mxConstants.STYLE_FILLCOLOR),this[_0x2b73[2178]](_0xff22x2,_0x2b73[1336],mxConstants.STYLE_STROKECOLOR),this[_0x2b73[2178]](_0xff22x2,_0x2b73[1299],mxConstants.STYLE_GRADIENTCOLOR))};mxCellRenderer[_0x2b73[202]][_0x2b73[2178]]= function(_0xff22x2,_0xff22x3,_0xff22x4){var _0xff22x5=_0xff22x2[_0x2b73[253]][_0xff22x3],_0xff22x9=_0xff22x2[_0x2b73[441]][_0x2b73[1179]],_0xff22xa=null;_0x2b73[1549]== _0xff22x5?_0xff22xa= _0xff22x9[_0x2b73[251]][_0x2b73[1197]](_0xff22x2[_0x2b73[246]]):_0x2b73[687]== _0xff22x5?(_0xff22xa= null!= _0xff22x9[_0x2b73[251]][_0x2b73[1709]](_0xff22x2[_0x2b73[246]],!1)?_0xff22x9[_0x2b73[251]][_0x2b73[1709]](_0xff22x2[_0x2b73[246]],!1):_0xff22x2[_0x2b73[246]],_0xff22xa= _0xff22x9[_0x2b73[2179]](_0xff22xa),_0xff22x4= _0xff22x9[_0x2b73[2180]]):_0x2b73[2181]== _0xff22x5&& (_0xff22x2[_0x2b73[253]][_0xff22x3]= _0xff22x2[_0x2b73[253]][_0x2b73[632]]);null!= _0xff22xa&& (_0xff22x5= _0xff22x9[_0x2b73[249]]()[_0x2b73[248]](_0xff22xa),_0xff22x2[_0x2b73[253]][_0xff22x3]= null,null!= _0xff22x5&& (_0xff22x2[_0x2b73[253]][_0xff22x3]= null!= _0xff22x5[_0x2b73[253]]&& _0x2b73[632]!= _0xff22x3?_0xff22x5[_0x2b73[253]][_0xff22x3]:_0xff22x5[_0x2b73[124]][_0xff22x4]))};mxCellRenderer[_0x2b73[202]][_0x2b73[2182]]= function(_0xff22x2){return _0xff22x2[_0x2b73[441]][_0x2b73[1179]][_0x2b73[2183]](_0xff22x2[_0x2b73[246]])};mxCellRenderer[_0x2b73[202]][_0x2b73[2184]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=_0xff22x2[_0x2b73[441]][_0x2b73[1179]];_0xff22x4[_0x2b73[502]]()[_0x2b73[250]](_0xff22x2[_0x2b73[246]]);if(0< _0xff22x2[_0x2b73[124]][mxConstants[_0x2b73[2185]]]|| null== _0xff22x2[_0x2b73[124]][mxConstants[_0x2b73[2185]]]){var _0xff22x5=_0xff22x4[_0x2b73[2186]](_0xff22x2[_0x2b73[246]])|| null!= _0xff22x3&& mxUtils[_0x2b73[1331]](_0xff22x3);_0xff22x2[_0x2b73[963]]= new this[_0x2b73[2151]](_0xff22x3, new mxRectangle,_0xff22x2[_0x2b73[124]][mxConstants[_0x2b73[2064]]]|| mxConstants[_0x2b73[479]],_0xff22x4[_0x2b73[2187]](_0xff22x2),_0xff22x2[_0x2b73[124]][mxConstants[_0x2b73[2069]]],_0xff22x2[_0x2b73[124]][mxConstants[_0x2b73[2188]]],_0xff22x2[_0x2b73[124]][mxConstants[_0x2b73[2185]]],_0xff22x2[_0x2b73[124]][mxConstants[_0x2b73[2189]]],_0xff22x2[_0x2b73[124]][mxConstants[_0x2b73[2143]]],_0xff22x2[_0x2b73[124]][mxConstants[_0x2b73[2144]]],_0xff22x2[_0x2b73[124]][mxConstants[_0x2b73[2145]]],_0xff22x2[_0x2b73[124]][mxConstants[_0x2b73[2146]]],_0xff22x2[_0x2b73[124]][mxConstants[_0x2b73[2147]]],_0xff22x2[_0x2b73[124]][mxConstants[_0x2b73[2190]]],_0xff22x2[_0x2b73[124]][mxConstants[_0x2b73[2191]]],_0xff22x2[_0x2b73[124]][mxConstants[_0x2b73[2192]]],_0xff22x4[_0x2b73[2131]](_0xff22x2[_0x2b73[246]])&& _0xff22x4[_0x2b73[2186]](_0xff22x2[_0x2b73[246]]),_0xff22x4[_0x2b73[2130]](_0xff22x2[_0x2b73[246]]),_0xff22x2[_0x2b73[124]][mxConstants[_0x2b73[2193]]],_0xff22x2[_0x2b73[124]][mxConstants[_0x2b73[2194]]]);_0xff22x2[_0x2b73[963]][_0x2b73[461]]= mxUtils[_0x2b73[433]](_0xff22x2[_0x2b73[124]],mxConstants.STYLE_TEXT_OPACITY,100);_0xff22x2[_0x2b73[963]][_0x2b73[507]]= _0xff22x5?mxConstants[_0x2b73[1656]]:_0xff22x2[_0x2b73[441]][_0x2b73[1179]][_0x2b73[507]];_0xff22x2[_0x2b73[963]][_0x2b73[724]]= _0xff22x2;this[_0x2b73[2195]](_0xff22x2);var _0xff22x9=!1,_0xff22xa=function(_0xff22x3){var _0xff22x5=_0xff22x2;if(mxClient[_0x2b73[754]]|| _0xff22x9){_0xff22x5= mxEvent[_0x2b73[731]](_0xff22x3),_0xff22x3= mxEvent[_0x2b73[733]](_0xff22x3),_0xff22x3= mxUtils[_0x2b73[2196]](_0xff22x4[_0x2b73[526]],_0xff22x5,_0xff22x3),_0xff22x5= _0xff22x4[_0x2b73[441]][_0x2b73[248]](_0xff22x4[_0x2b73[999]](_0xff22x3[_0x2b73[235]],_0xff22x3[_0x2b73[236]]))};return _0xff22x5};mxEvent[_0x2b73[759]](_0xff22x2[_0x2b73[963]][_0x2b73[252]],mxUtils[_0x2b73[885]](this,function(_0xff22x3){this[_0x2b73[2197]](_0xff22x2,_0xff22x3)&& (_0xff22x4[_0x2b73[758]](mxEvent.MOUSE_DOWN, new mxMouseEvent(_0xff22x3,_0xff22x2)),_0xff22x9= _0xff22x4[_0x2b73[507]]!= mxConstants[_0x2b73[508]]&& _0x2b73[2198]== mxEvent[_0x2b73[728]](_0xff22x3)[_0x2b73[301]])}),mxUtils[_0x2b73[885]](this,function(_0xff22x3){this[_0x2b73[2197]](_0xff22x2,_0xff22x3)&& _0xff22x4[_0x2b73[758]](mxEvent.MOUSE_MOVE, new mxMouseEvent(_0xff22x3,_0xff22xa(_0xff22x3)))}),mxUtils[_0x2b73[885]](this,function(_0xff22x3){this[_0x2b73[2197]](_0xff22x2,_0xff22x3)&& (_0xff22x4[_0x2b73[758]](mxEvent.MOUSE_UP, new mxMouseEvent(_0xff22x3,_0xff22xa(_0xff22x3))),_0xff22x9= !1)}));mxEvent[_0x2b73[169]](_0xff22x2[_0x2b73[963]][_0x2b73[252]],_0x2b73[760],mxUtils[_0x2b73[885]](this,function(_0xff22x3){this[_0x2b73[2197]](_0xff22x2,_0xff22x3)&& (_0xff22x4[_0x2b73[761]](_0xff22x3,_0xff22x2[_0x2b73[246]]),mxEvent[_0x2b73[722]](_0xff22x3))}))}};mxCellRenderer[_0x2b73[202]][_0x2b73[2195]]= function(_0xff22x2){var _0xff22x3=_0xff22x2[_0x2b73[441]][_0x2b73[1179]];_0xff22x2[_0x2b73[963]][_0x2b73[507]]!= mxConstants[_0x2b73[508]]&& (mxClient[_0x2b73[48]]&& mxClient[_0x2b73[2199]]?_0xff22x2[_0x2b73[963]][_0x2b73[176]](_0xff22x3[_0x2b73[526]]):mxUtils[_0x2b73[458]](_0xff22x2[_0x2b73[441]][_0x2b73[2024]]())&& (null!= _0xff22x2[_0x2b73[253]][_0x2b73[685]]?_0xff22x2[_0x2b73[963]][_0x2b73[176]](_0xff22x2[_0x2b73[253]][_0x2b73[685]]):_0xff22x2[_0x2b73[963]][_0x2b73[176]](_0xff22x2[_0x2b73[253]][_0x2b73[252]])));null== _0xff22x2[_0x2b73[963]][_0x2b73[252]]&& (_0xff22x2[_0x2b73[963]][_0x2b73[176]](_0xff22x2[_0x2b73[441]][_0x2b73[2024]]()),null!= _0xff22x2[_0x2b73[253]]&& null!= _0xff22x2[_0x2b73[963]]&& _0xff22x2[_0x2b73[253]][_0x2b73[252]][_0x2b73[265]][_0x2b73[950]](_0xff22x2[_0x2b73[963]][_0x2b73[252]],_0xff22x2[_0x2b73[253]][_0x2b73[252]][_0x2b73[287]]))};mxCellRenderer[_0x2b73[202]][_0x2b73[2162]]= function(_0xff22x2){var _0xff22x3=_0xff22x2[_0x2b73[441]][_0x2b73[1179]][_0x2b73[2200]](_0xff22x2[_0x2b73[246]]),_0xff22x4=null;if(null!= _0xff22x3){for(var _0xff22x4= new mxDictionary,_0xff22x5=0;_0xff22x5< _0xff22x3[_0x2b73[67]];_0xff22x5++){var _0xff22x9=null!= _0xff22x2[_0x2b73[1211]]?_0xff22x2[_0x2b73[1211]][_0x2b73[205]](_0xff22x3[_0xff22x5]):null;null== _0xff22x9&& (_0xff22x9= new mxImageShape( new mxRectangle,_0xff22x3[_0xff22x5][_0x2b73[618]][_0x2b73[390]]),_0xff22x9[_0x2b73[507]]= _0xff22x2[_0x2b73[441]][_0x2b73[1179]][_0x2b73[507]],_0xff22x9[_0x2b73[1674]]= !1,_0xff22x9[_0x2b73[2201]]= _0xff22x3[_0xff22x5],this[_0x2b73[2023]](_0xff22x2,_0xff22x9),this[_0x2b73[2202]](_0xff22x2,_0xff22x3[_0xff22x5],_0xff22x9),null!= _0xff22x3[_0xff22x5][_0x2b73[270]]&& (_0xff22x9[_0x2b73[252]][_0x2b73[124]][_0x2b73[270]]= _0xff22x3[_0xff22x5][_0x2b73[270]]));_0xff22x4[_0x2b73[204]](_0xff22x3[_0xff22x5],_0xff22x9)}};null!= _0xff22x2[_0x2b73[1211]]&& _0xff22x2[_0x2b73[1211]][_0x2b73[209]](function(_0xff22x2,_0xff22x3){_0xff22x3[_0x2b73[515]]()});_0xff22x2[_0x2b73[1211]]= _0xff22x4};mxCellRenderer[_0x2b73[202]][_0x2b73[2023]]= function(_0xff22x2,_0xff22x3){_0xff22x3[_0x2b73[176]](_0xff22x2[_0x2b73[441]][_0x2b73[1524]]())};mxCellRenderer[_0x2b73[202]][_0x2b73[2202]]= function(_0xff22x2,_0xff22x3,_0xff22x4){var _0xff22x5=_0xff22x2[_0x2b73[441]][_0x2b73[1179]];mxEvent[_0x2b73[169]](_0xff22x4[_0x2b73[252]],_0x2b73[173],function(_0xff22x4){_0xff22x5[_0x2b73[2203]]()&& _0xff22x5[_0x2b73[2126]](!_0xff22x5[_0x2b73[2134]]());_0xff22x3[_0x2b73[746]]( new mxEventObject(mxEvent.CLICK,_0x2b73[763],_0xff22x4,_0x2b73[246],_0xff22x2[_0x2b73[246]]))});mxEvent[_0x2b73[759]](_0xff22x4[_0x2b73[252]],function(_0xff22x2){mxEvent[_0x2b73[722]](_0xff22x2)},function(_0xff22x3){_0xff22x5[_0x2b73[758]](mxEvent.MOUSE_MOVE, new mxMouseEvent(_0xff22x3,_0xff22x2))});mxClient[_0x2b73[754]]&& mxEvent[_0x2b73[169]](_0xff22x4[_0x2b73[252]],_0x2b73[757],function(_0xff22x4){_0xff22x3[_0x2b73[746]]( new mxEventObject(mxEvent.CLICK,_0x2b73[763],_0xff22x4,_0x2b73[246],_0xff22x2[_0x2b73[246]]))})};mxCellRenderer[_0x2b73[202]][_0x2b73[2204]]= function(_0xff22x2){var _0xff22x3=_0xff22x2[_0x2b73[441]][_0x2b73[1179]],_0xff22x4=_0xff22x3[_0x2b73[2205]](_0xff22x2);if(_0xff22x3[_0x2b73[2206]]&& null!= _0xff22x4){if(null== _0xff22x2[_0x2b73[2207]]){var _0xff22x5= new mxRectangle(0,0,_0xff22x4[_0x2b73[117]],_0xff22x4[_0x2b73[119]]);_0xff22x2[_0x2b73[2207]]= new mxImageShape(_0xff22x5,_0xff22x4[_0x2b73[390]]);_0xff22x2[_0x2b73[2207]][_0x2b73[1674]]= !1;_0xff22x2[_0x2b73[2207]][_0x2b73[507]]= _0xff22x3[_0x2b73[507]];this[_0x2b73[2208]](_0xff22x2,_0xff22x2[_0x2b73[2207]],!0,function(_0xff22x4){if(_0xff22x3[_0x2b73[994]]()){var _0xff22x5=!_0xff22x3[_0x2b73[1742]](_0xff22x2[_0x2b73[246]]);_0xff22x3[_0x2b73[847]](_0xff22x5,!1,[_0xff22x2[_0x2b73[246]]]);mxEvent[_0x2b73[722]](_0xff22x4)}})}}else {null!= _0xff22x2[_0x2b73[2207]]&& (_0xff22x2[_0x2b73[2207]][_0x2b73[515]](),_0xff22x2[_0x2b73[2207]]= null)}};mxCellRenderer[_0x2b73[202]][_0x2b73[2208]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){var _0xff22x9=_0xff22x2[_0x2b73[441]][_0x2b73[1179]];_0xff22x9[_0x2b73[2186]](_0xff22x2[_0x2b73[246]])&& mxClient[_0x2b73[2199]]&& _0xff22x9[_0x2b73[507]]== mxConstants[_0x2b73[508]]?(_0xff22x3[_0x2b73[507]]= mxConstants[_0x2b73[2209]],_0xff22x3[_0x2b73[176]](_0xff22x9[_0x2b73[526]]),_0xff22x3[_0x2b73[252]][_0x2b73[124]][_0x2b73[931]]= 1):_0xff22x3[_0x2b73[176]](_0xff22x2[_0x2b73[441]][_0x2b73[1524]]());_0xff22x3= _0xff22x3[_0x2b73[2210]]|| _0xff22x3[_0x2b73[252]];_0xff22x5&& (_0xff22x9[_0x2b73[994]]()&& (_0xff22x3[_0x2b73[124]][_0x2b73[270]]= _0x2b73[356]),mxEvent[_0x2b73[169]](_0xff22x3,_0x2b73[173],_0xff22x5));_0xff22x4&& mxEvent[_0x2b73[759]](_0xff22x3,function(_0xff22x3){_0xff22x9[_0x2b73[758]](mxEvent.MOUSE_DOWN, new mxMouseEvent(_0xff22x3,_0xff22x2));mxEvent[_0x2b73[722]](_0xff22x3)},function(_0xff22x3){_0xff22x9[_0x2b73[758]](mxEvent.MOUSE_MOVE, new mxMouseEvent(_0xff22x3,_0xff22x2))});return _0xff22x3};mxCellRenderer[_0x2b73[202]][_0x2b73[2211]]= function(_0xff22x2,_0xff22x3){return !0};mxCellRenderer[_0x2b73[202]][_0x2b73[2197]]= function(_0xff22x2,_0xff22x3){return !0};mxCellRenderer[_0x2b73[202]][_0x2b73[2163]]= function(_0xff22x2){var _0xff22x3=_0xff22x2[_0x2b73[441]][_0x2b73[1179]],_0xff22x4=function(_0xff22x4){var _0xff22x5=_0xff22x2;if(_0xff22x3[_0x2b73[507]]!= mxConstants[_0x2b73[508]]&& _0x2b73[2198]== mxEvent[_0x2b73[728]](_0xff22x4)[_0x2b73[301]]|| mxClient[_0x2b73[754]]){_0xff22x5= mxEvent[_0x2b73[731]](_0xff22x4),_0xff22x4= mxEvent[_0x2b73[733]](_0xff22x4),_0xff22x4= mxUtils[_0x2b73[2196]](_0xff22x3[_0x2b73[526]],_0xff22x5,_0xff22x4),_0xff22x5= _0xff22x3[_0x2b73[441]][_0x2b73[248]](_0xff22x3[_0x2b73[999]](_0xff22x4[_0x2b73[235]],_0xff22x4[_0x2b73[236]]))};return _0xff22x5},_0xff22x5=!1;mxEvent[_0x2b73[169]](_0xff22x2[_0x2b73[253]][_0x2b73[252]],_0x2b73[2212],mxUtils[_0x2b73[885]](this,function(_0xff22x2){_0xff22x3[_0x2b73[2213]]= 0;_0xff22x5= !0;mxEvent[_0x2b73[722]](_0xff22x2)}));mxEvent[_0x2b73[759]](_0xff22x2[_0x2b73[253]][_0x2b73[252]],mxUtils[_0x2b73[885]](this,function(_0xff22x4){this[_0x2b73[2211]](_0xff22x2,_0xff22x4)&& !_0xff22x5?_0xff22x3[_0x2b73[758]](mxEvent.MOUSE_DOWN, new mxMouseEvent(_0xff22x4,null!= _0xff22x2[_0x2b73[253]]&& mxEvent[_0x2b73[728]](_0xff22x4)== _0xff22x2[_0x2b73[253]][_0x2b73[905]]?null:_0xff22x2)):_0xff22x5&& mxEvent[_0x2b73[722]](_0xff22x4)}),mxUtils[_0x2b73[885]](this,function(_0xff22x9){this[_0x2b73[2211]](_0xff22x2,_0xff22x9)&& !_0xff22x5?_0xff22x3[_0x2b73[758]](mxEvent.MOUSE_MOVE, new mxMouseEvent(_0xff22x9,null!= _0xff22x2[_0x2b73[253]]&& mxEvent[_0x2b73[728]](_0xff22x9)== _0xff22x2[_0x2b73[253]][_0x2b73[905]]?null:_0xff22x4(_0xff22x9))):_0xff22x5&& mxEvent[_0x2b73[722]](_0xff22x9)}),mxUtils[_0x2b73[885]](this,function(_0xff22x9){this[_0x2b73[2211]](_0xff22x2,_0xff22x9)&& !_0xff22x5?_0xff22x3[_0x2b73[758]](mxEvent.MOUSE_UP, new mxMouseEvent(_0xff22x9,null!= _0xff22x2[_0x2b73[253]]&& mxEvent[_0x2b73[728]](_0xff22x9)== _0xff22x2[_0x2b73[253]][_0x2b73[905]]?null:_0xff22x4(_0xff22x9))):_0xff22x5&& mxEvent[_0x2b73[722]](_0xff22x9)}));var _0xff22x9=mxClient[_0x2b73[754]]?_0x2b73[2214]:_0x2b73[760];mxEvent[_0x2b73[169]](_0xff22x2[_0x2b73[253]][_0x2b73[252]],_0xff22x9,mxUtils[_0x2b73[885]](this,function(_0xff22x4){_0xff22x5= !1;_0x2b73[2214]== _0xff22x9?(_0xff22x3[_0x2b73[2213]]= 0,_0xff22x3[_0x2b73[2215]]&& (_0xff22x3[_0x2b73[2216]](_0xff22x2,_0xff22x4),mxEvent[_0x2b73[722]](_0xff22x4))):this[_0x2b73[2211]](_0xff22x2,_0xff22x4)&& (_0xff22x3[_0x2b73[761]](_0xff22x4,null!= _0xff22x2[_0x2b73[253]]&& mxEvent[_0x2b73[728]](_0xff22x4)== _0xff22x2[_0x2b73[253]][_0x2b73[905]]?null:_0xff22x2[_0x2b73[246]]),mxEvent[_0x2b73[722]](_0xff22x4))}))};mxCellRenderer[_0x2b73[202]][_0x2b73[2217]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=this[_0x2b73[2182]](_0xff22x2);if(null== _0xff22x2[_0x2b73[963]]&& null!= _0xff22x4&& (mxUtils[_0x2b73[1331]](_0xff22x4)|| 0< _0xff22x4[_0x2b73[67]])){this[_0x2b73[2184]](_0xff22x2,_0xff22x4)}else {if(null!= _0xff22x2[_0x2b73[963]]&& (null== _0xff22x4|| 0== _0xff22x4[_0x2b73[67]])){_0xff22x2[_0x2b73[963]][_0x2b73[515]](),_0xff22x2[_0x2b73[963]]= null}};if(null!= _0xff22x2[_0x2b73[963]]){var _0xff22x5=_0xff22x2[_0x2b73[441]][_0x2b73[1179]],_0xff22x9=_0xff22x5[_0x2b73[2131]](_0xff22x2[_0x2b73[246]]),_0xff22x5=_0xff22x5[_0x2b73[2130]](_0xff22x2[_0x2b73[246]]),_0xff22xa=this[_0x2b73[2218]](_0xff22x2);if(_0xff22x3|| _0xff22x2[_0x2b73[963]][_0x2b73[131]]!= _0xff22x4|| _0xff22x2[_0x2b73[963]][_0x2b73[2131]]!= _0xff22x9|| _0xff22x2[_0x2b73[963]][_0x2b73[2219]]!= _0xff22x5|| _0xff22x2[_0x2b73[963]][_0x2b73[255]]!= _0xff22x2[_0x2b73[441]][_0x2b73[255]]|| !_0xff22x2[_0x2b73[963]][_0x2b73[1562]][_0x2b73[237]](_0xff22xa)){_0xff22x2[_0x2b73[963]][_0x2b73[131]]= _0xff22x4,_0xff22x2[_0x2b73[963]][_0x2b73[1562]]= _0xff22xa,_0xff22x2[_0x2b73[963]][_0x2b73[255]]= this[_0x2b73[2220]](_0xff22x2),_0xff22x2[_0x2b73[963]][_0x2b73[2131]]= _0xff22x9,_0xff22x2[_0x2b73[963]][_0x2b73[2219]]= _0xff22x5,_0xff22x2[_0x2b73[963]][_0x2b73[258]]()}}};mxCellRenderer[_0x2b73[202]][_0x2b73[2220]]= function(_0xff22x2){return _0xff22x2[_0x2b73[441]][_0x2b73[255]]};mxCellRenderer[_0x2b73[202]][_0x2b73[2218]]= function(_0xff22x2){var _0xff22x3=_0xff22x2[_0x2b73[441]][_0x2b73[1179]],_0xff22x4=_0xff22x2[_0x2b73[441]][_0x2b73[255]],_0xff22x5=_0xff22x3[_0x2b73[502]]()[_0x2b73[250]](_0xff22x2[_0x2b73[246]]),_0xff22x9= new mxRectangle(_0xff22x2[_0x2b73[2079]][_0x2b73[235]],_0xff22x2[_0x2b73[2079]][_0x2b73[236]]);_0xff22x2[_0x2b73[963]][_0x2b73[1672]]();_0xff22x5?(_0xff22x5= _0xff22x2[_0x2b73[963]][_0x2b73[1673]](),_0xff22x9[_0x2b73[235]]+= _0xff22x5[_0x2b73[235]]* _0xff22x4,_0xff22x9[_0x2b73[236]]+= _0xff22x5[_0x2b73[236]]* _0xff22x4,_0xff22x3= _0xff22x3[_0x2b73[1198]](_0xff22x2[_0x2b73[246]]),null!= _0xff22x3&& (_0xff22x9[_0x2b73[117]]= Math[_0x2b73[160]](0,_0xff22x2[_0x2b73[963]][_0x2b73[1655]][_0x2b73[235]]* _0xff22x3[_0x2b73[117]]* _0xff22x4- _0xff22x2[_0x2b73[963]][_0x2b73[659]]* _0xff22x4- _0xff22x2[_0x2b73[963]][_0x2b73[661]]* _0xff22x4),_0xff22x9[_0x2b73[119]]= Math[_0x2b73[160]](0,_0xff22x2[_0x2b73[963]][_0x2b73[1655]][_0x2b73[236]]* _0xff22x3[_0x2b73[119]]* _0xff22x4- _0xff22x2[_0x2b73[963]][_0x2b73[658]]* _0xff22x4- _0xff22x2[_0x2b73[963]][_0x2b73[660]]* _0xff22x4))):(_0xff22x2[_0x2b73[963]][_0x2b73[1590]]()&& (_0xff22x5= _0xff22x9[_0x2b73[235]],_0xff22x9[_0x2b73[235]]= _0xff22x9[_0x2b73[236]],_0xff22x9[_0x2b73[236]]= _0xff22x5),_0xff22x9[_0x2b73[235]]+= _0xff22x2[_0x2b73[235]],_0xff22x9[_0x2b73[236]]+= _0xff22x2[_0x2b73[236]],_0xff22x9[_0x2b73[117]]= Math[_0x2b73[160]](1,_0xff22x2[_0x2b73[117]]),_0xff22x9[_0x2b73[119]]= Math[_0x2b73[160]](1,_0xff22x2[_0x2b73[119]]),_0xff22x3[_0x2b73[1730]](_0xff22x2[_0x2b73[246]])&& (_0xff22x3= _0xff22x3[_0x2b73[1731]](_0xff22x2[_0x2b73[246]]),0< _0xff22x3[_0x2b73[117]]?(_0xff22x5= Math[_0x2b73[243]](_0xff22x9[_0x2b73[117]],_0xff22x3[_0x2b73[117]]* _0xff22x4),_0xff22x2[_0x2b73[253]][_0x2b73[623]]&& (_0xff22x9[_0x2b73[235]]+= _0xff22x9[_0x2b73[117]]- _0xff22x5),_0xff22x9[_0x2b73[117]]= _0xff22x5):0< _0xff22x3[_0x2b73[119]]&& (_0xff22x5= Math[_0x2b73[243]](_0xff22x9[_0x2b73[119]],_0xff22x3[_0x2b73[119]]* _0xff22x4),_0xff22x2[_0x2b73[253]][_0x2b73[624]]&& (_0xff22x9[_0x2b73[236]]+= _0xff22x9[_0x2b73[119]]- _0xff22x5),_0xff22x9[_0x2b73[119]]= _0xff22x5)),this[_0x2b73[2221]](_0xff22x2,_0xff22x9));return _0xff22x9};mxCellRenderer[_0x2b73[202]][_0x2b73[2221]]= function(_0xff22x2,_0xff22x3){if(_0xff22x2[_0x2b73[963]][_0x2b73[1590]]()){var _0xff22x4=(_0xff22x2[_0x2b73[117]]- _0xff22x2[_0x2b73[119]])/ 2;_0xff22x3[_0x2b73[235]]+= _0xff22x4;_0xff22x3[_0x2b73[236]]-= _0xff22x4;_0xff22x4= _0xff22x3[_0x2b73[117]];_0xff22x3[_0x2b73[117]]= _0xff22x3[_0x2b73[119]];_0xff22x3[_0x2b73[119]]= _0xff22x4};_0xff22x3[_0x2b73[235]]-= _0xff22x2[_0x2b73[963]][_0x2b73[1655]][_0x2b73[235]]* _0xff22x3[_0x2b73[117]];_0xff22x3[_0x2b73[236]]-= _0xff22x2[_0x2b73[963]][_0x2b73[1655]][_0x2b73[236]]* _0xff22x3[_0x2b73[119]];if(_0x2b73[1334]!= _0xff22x2[_0x2b73[124]][mxConstants[_0x2b73[2193]]]){var _0xff22x4=_0xff22x2[_0x2b73[441]][_0x2b73[255]],_0xff22x5=_0xff22x2[_0x2b73[963]][_0x2b73[1673]]();_0xff22x3[_0x2b73[235]]+= _0xff22x5[_0x2b73[235]]* _0xff22x4;_0xff22x3[_0x2b73[236]]+= _0xff22x5[_0x2b73[236]]* _0xff22x4;_0xff22x3[_0x2b73[117]]= Math[_0x2b73[160]](0,_0xff22x3[_0x2b73[117]]- _0xff22x2[_0x2b73[963]][_0x2b73[659]]* _0xff22x4- _0xff22x2[_0x2b73[963]][_0x2b73[661]]* _0xff22x4);_0xff22x3[_0x2b73[119]]= Math[_0x2b73[160]](0,_0xff22x3[_0x2b73[119]]- _0xff22x2[_0x2b73[963]][_0x2b73[658]]* _0xff22x4- _0xff22x2[_0x2b73[963]][_0x2b73[660]]* _0xff22x4)};var _0xff22x9=_0xff22x2[_0x2b73[963]][_0x2b73[1615]]();if(0!= _0xff22x9&& (null!= _0xff22x2&& _0xff22x2[_0x2b73[441]][_0x2b73[1179]][_0x2b73[251]][_0x2b73[1193]](_0xff22x2[_0x2b73[246]]))&& (_0xff22x4= _0xff22x2[_0x2b73[241]](),_0xff22x5= _0xff22x2[_0x2b73[242]](),_0xff22x3[_0x2b73[235]]!= _0xff22x4|| _0xff22x3[_0x2b73[236]]!= _0xff22x5)){_0xff22x9*= Math[_0x2b73[424]]/ 180,pt= mxUtils[_0x2b73[432]]( new mxPoint(_0xff22x3[_0x2b73[235]],_0xff22x3[_0x2b73[236]]),Math[_0x2b73[426]](_0xff22x9),Math[_0x2b73[427]](_0xff22x9), new mxPoint(_0xff22x4,_0xff22x5)),_0xff22x3[_0x2b73[235]]= pt[_0x2b73[235]],_0xff22x3[_0x2b73[236]]= pt[_0x2b73[236]]}};mxCellRenderer[_0x2b73[202]][_0x2b73[2222]]= function(_0xff22x2,_0xff22x3){this[_0x2b73[2162]](_0xff22x2);if(null!= _0xff22x2[_0x2b73[1211]]){var _0xff22x4=mxUtils[_0x2b73[1454]](mxUtils[_0x2b73[433]](_0xff22x2[_0x2b73[124]],mxConstants.STYLE_ROTATION,0),90),_0xff22x5=mxUtils[_0x2b73[431]](_0xff22x4),_0xff22x9=Math[_0x2b73[426]](_0xff22x5),_0xff22xa=Math[_0x2b73[427]](_0xff22x5);_0xff22x2[_0x2b73[1211]][_0x2b73[209]](function(_0xff22x5,_0xff22x13){var _0xff22x14=_0xff22x13[_0x2b73[2201]][_0x2b73[1799]](_0xff22x2);if(!_0xff22x2[_0x2b73[441]][_0x2b73[1179]][_0x2b73[502]]()[_0x2b73[250]](_0xff22x2[_0x2b73[246]])&& null!= _0xff22x2[_0x2b73[253]]&& 0!= _0xff22x4){var _0xff22x15=_0xff22x14[_0x2b73[241]](),_0xff22x16=_0xff22x14[_0x2b73[242]](),_0xff22x16=mxUtils[_0x2b73[432]]( new mxPoint(_0xff22x15,_0xff22x16),_0xff22x9,_0xff22xa, new mxPoint(_0xff22x2[_0x2b73[241]](),_0xff22x2[_0x2b73[242]]())),_0xff22x15=_0xff22x16[_0x2b73[235]],_0xff22x16=_0xff22x16[_0x2b73[236]];_0xff22x14[_0x2b73[235]]= Math[_0x2b73[488]](_0xff22x15- _0xff22x14[_0x2b73[117]]/ 2);_0xff22x14[_0x2b73[236]]= Math[_0x2b73[488]](_0xff22x16- _0xff22x14[_0x2b73[119]]/ 2)};if(_0xff22x3|| null== _0xff22x13[_0x2b73[1562]]|| _0xff22x13[_0x2b73[255]]!= _0xff22x2[_0x2b73[441]][_0x2b73[255]]|| !_0xff22x13[_0x2b73[1562]][_0x2b73[237]](_0xff22x14)){_0xff22x13[_0x2b73[1562]]= _0xff22x14,_0xff22x13[_0x2b73[255]]= _0xff22x2[_0x2b73[441]][_0x2b73[255]],_0xff22x13[_0x2b73[258]]()}})}};mxCellRenderer[_0x2b73[202]][_0x2b73[2223]]= function(_0xff22x2,_0xff22x3){if(null!= _0xff22x2[_0x2b73[2207]]){var _0xff22x4=this[_0x2b73[2224]](_0xff22x2),_0xff22x5=this[_0x2b73[2152]]?mxUtils[_0x2b73[433]](_0xff22x2[_0x2b73[124]],mxConstants.STYLE_ROTATION,0):_0xff22x2[_0x2b73[253]][_0x2b73[1615]](),_0xff22x9=_0xff22x2[_0x2b73[441]][_0x2b73[255]];if(_0xff22x3|| _0xff22x2[_0x2b73[2207]][_0x2b73[255]]!= _0xff22x9|| !_0xff22x2[_0x2b73[2207]][_0x2b73[1562]][_0x2b73[237]](_0xff22x4)|| _0xff22x2[_0x2b73[2207]][_0x2b73[603]]!= _0xff22x5){_0xff22x2[_0x2b73[2207]][_0x2b73[603]]= _0xff22x5,_0xff22x2[_0x2b73[2207]][_0x2b73[1562]]= _0xff22x4,_0xff22x2[_0x2b73[2207]][_0x2b73[255]]= _0xff22x9,_0xff22x2[_0x2b73[2207]][_0x2b73[258]]()}}};mxCellRenderer[_0x2b73[202]][_0x2b73[2224]]= function(_0xff22x2){if(null!= _0xff22x2[_0x2b73[2207]]){var _0xff22x3=_0xff22x2[_0x2b73[2207]][_0x2b73[255]],_0xff22x4=_0xff22x2[_0x2b73[2207]][_0x2b73[1562]][_0x2b73[117]]/ _0xff22x3,_0xff22x3=_0xff22x2[_0x2b73[2207]][_0x2b73[1562]][_0x2b73[119]]/ _0xff22x3,_0xff22x5=_0xff22x2[_0x2b73[441]][_0x2b73[255]],_0xff22x9=_0xff22x2[_0x2b73[241]](),_0xff22xa=_0xff22x2[_0x2b73[242]]();if(!_0xff22x2[_0x2b73[441]][_0x2b73[1179]][_0x2b73[502]]()[_0x2b73[250]](_0xff22x2[_0x2b73[246]])&& (_0xff22x9= _0xff22x2[_0x2b73[235]]+ _0xff22x4* _0xff22x5,_0xff22xa= _0xff22x2[_0x2b73[236]]+ _0xff22x3* _0xff22x5,null!= _0xff22x2[_0x2b73[253]])){var _0xff22x12=_0xff22x2[_0x2b73[253]][_0x2b73[1598]]();if(this[_0x2b73[2152]]){_0xff22x12= mxUtils[_0x2b73[433]](_0xff22x2[_0x2b73[124]],mxConstants.STYLE_ROTATION,0)}else {if(_0xff22x2[_0x2b73[253]][_0x2b73[1590]]()){var _0xff22x13=(_0xff22x2[_0x2b73[117]]- _0xff22x2[_0x2b73[119]])/ 2,_0xff22x9=_0xff22x9+ _0xff22x13,_0xff22xa=_0xff22xa- _0xff22x13}};0!= _0xff22x12&& (_0xff22x13= mxUtils[_0x2b73[431]](_0xff22x12),_0xff22x12= Math[_0x2b73[426]](_0xff22x13),_0xff22x13= Math[_0x2b73[427]](_0xff22x13),_0xff22xa= mxUtils[_0x2b73[432]]( new mxPoint(_0xff22x9,_0xff22xa),_0xff22x12,_0xff22x13, new mxPoint(_0xff22x2[_0x2b73[241]](),_0xff22x2[_0x2b73[242]]())),_0xff22x9= _0xff22xa[_0x2b73[235]],_0xff22xa= _0xff22xa[_0x2b73[236]])};return _0xff22x2[_0x2b73[441]][_0x2b73[1179]][_0x2b73[502]]()[_0x2b73[250]](_0xff22x2[_0x2b73[246]]), new mxRectangle(Math[_0x2b73[488]](_0xff22x9- _0xff22x4/ 2* _0xff22x5),Math[_0x2b73[488]](_0xff22xa- _0xff22x3/ 2* _0xff22x5),Math[_0x2b73[488]](_0xff22x4* _0xff22x5),Math[_0x2b73[488]](_0xff22x3* _0xff22x5))};return null};mxCellRenderer[_0x2b73[202]][_0x2b73[258]]= function(_0xff22x2,_0xff22x3,_0xff22x4){if(null!= _0xff22x2[_0x2b73[253]]){var _0xff22x5=!1;_0xff22x2[_0x2b73[441]][_0x2b73[1179]][_0x2b73[502]]()[_0x2b73[250]](_0xff22x2[_0x2b73[246]]);reconfigure= null!= _0xff22x3?_0xff22x3:!1;this[_0x2b73[2204]](_0xff22x2);if(_0xff22x2[_0x2b73[2082]]|| _0xff22x2[_0x2b73[2081]]){_0xff22x2[_0x2b73[441]][_0x2b73[1179]][_0x2b73[2158]]?this[_0x2b73[2166]](_0xff22x2):this[_0x2b73[2167]](_0xff22x2)};if(_0xff22x2[_0x2b73[2082]]|| !mxUtils[_0x2b73[2225]](_0xff22x2[_0x2b73[253]][_0x2b73[124]],_0xff22x2[_0x2b73[124]])){this[_0x2b73[2170]](_0xff22x2),_0xff22x3= !0};delete _0xff22x2[_0x2b73[2081]];delete _0xff22x2[_0x2b73[2082]];if(_0xff22x3|| null== _0xff22x2[_0x2b73[253]][_0x2b73[1562]]|| _0xff22x2[_0x2b73[253]][_0x2b73[255]]!= _0xff22x2[_0x2b73[441]][_0x2b73[255]]|| !_0xff22x2[_0x2b73[253]][_0x2b73[1562]][_0x2b73[237]](_0xff22x2)|| !mxUtils[_0x2b73[2226]](_0xff22x2[_0x2b73[253]][_0x2b73[1525]],_0xff22x2[_0x2b73[439]])){_0xff22x5= !0,_0xff22x2[_0x2b73[253]][_0x2b73[1525]]= null!= _0xff22x2[_0x2b73[439]]?_0xff22x2[_0x2b73[439]][_0x2b73[1853]]():null,_0xff22x2[_0x2b73[253]][_0x2b73[1562]]= new mxRectangle(_0xff22x2[_0x2b73[235]],_0xff22x2[_0x2b73[236]],_0xff22x2[_0x2b73[117]],_0xff22x2[_0x2b73[119]]),_0xff22x2[_0x2b73[253]][_0x2b73[255]]= _0xff22x2[_0x2b73[441]][_0x2b73[255]],null== _0xff22x4|| _0xff22x4?_0xff22x2[_0x2b73[253]][_0x2b73[258]]():_0xff22x2[_0x2b73[253]][_0x2b73[1577]]()};if(null== _0xff22x4|| _0xff22x4){this[_0x2b73[2217]](_0xff22x2,_0xff22x5),this[_0x2b73[2222]](_0xff22x2,_0xff22x5),this[_0x2b73[2223]](_0xff22x2,_0xff22x5)}}};mxCellRenderer[_0x2b73[202]][_0x2b73[515]]= function(_0xff22x2){null!= _0xff22x2[_0x2b73[253]]&& (null!= _0xff22x2[_0x2b73[963]]&& (_0xff22x2[_0x2b73[963]][_0x2b73[515]](),_0xff22x2[_0x2b73[963]]= null),null!= _0xff22x2[_0x2b73[1211]]&& (_0xff22x2[_0x2b73[1211]][_0x2b73[209]](function(_0xff22x2,_0xff22x4){_0xff22x4[_0x2b73[515]]()}),_0xff22x2[_0x2b73[1211]]= null),null!= _0xff22x2[_0x2b73[2207]]&& (_0xff22x2[_0x2b73[2207]][_0x2b73[515]](),_0xff22x2[_0x2b73[2207]]= null),_0xff22x2[_0x2b73[253]][_0x2b73[515]](),_0xff22x2[_0x2b73[253]]= null)};var mxEdgeStyle={EntityRelation:function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){var _0xff22xa=_0xff22x2[_0x2b73[441]],_0xff22x12=_0xff22xa[_0x2b73[1179]];_0xff22x5= mxUtils[_0x2b73[433]](_0xff22x2[_0x2b73[124]],mxConstants.STYLE_SEGMENT,mxConstants.ENTITY_SEGMENT)* _0xff22xa[_0x2b73[255]];var _0xff22x13=_0xff22x2[_0x2b73[439]],_0xff22x14=_0xff22x13[0],_0xff22x15=_0xff22x13[_0xff22x13[_0x2b73[67]]- 1],_0xff22x13=!1;if(null!= _0xff22x14){_0xff22x3= new mxCellState,_0xff22x3[_0x2b73[235]]= _0xff22x14[_0x2b73[235]],_0xff22x3[_0x2b73[236]]= _0xff22x14[_0x2b73[236]]}else {if(null!= _0xff22x3){var _0xff22x16=mxUtils[_0x2b73[2227]](_0xff22x3,_0xff22x2,!0,mxConstants.DIRECTION_MASK_NONE);_0xff22x16!= mxConstants[_0x2b73[434]]?_0xff22x13= _0xff22x16== mxConstants[_0x2b73[436]]:(_0xff22x14= _0xff22x12[_0x2b73[1198]](_0xff22x3[_0x2b73[246]]),_0xff22x14[_0x2b73[1500]]?_0xff22x13= 0.5>= _0xff22x14[_0x2b73[235]]:null!= _0xff22x4&& (_0xff22x13= _0xff22x4[_0x2b73[235]]+ _0xff22x4[_0x2b73[117]]< _0xff22x3[_0x2b73[235]]))}else {return}};_0xff22x14= !0;null!= _0xff22x15?(_0xff22x4= new mxCellState,_0xff22x4[_0x2b73[235]]= _0xff22x15[_0x2b73[235]],_0xff22x4[_0x2b73[236]]= _0xff22x15[_0x2b73[236]]):null!= _0xff22x4&& (_0xff22x16= mxUtils[_0x2b73[2227]](_0xff22x4,_0xff22x2,!1,mxConstants.DIRECTION_MASK_NONE),_0xff22x16!= mxConstants[_0x2b73[434]]?_0xff22x14= _0xff22x16== mxConstants[_0x2b73[436]]:(_0xff22x2= _0xff22x12[_0x2b73[1198]](_0xff22x4[_0x2b73[246]]),_0xff22x2[_0x2b73[1500]]?_0xff22x14= 0.5>= _0xff22x2[_0x2b73[235]]:null!= _0xff22x3&& (_0xff22x14= _0xff22x3[_0x2b73[235]]+ _0xff22x3[_0x2b73[117]]< _0xff22x4[_0x2b73[235]])));null!= _0xff22x3&& null!= _0xff22x4&& (_0xff22x2= _0xff22x13?_0xff22x3[_0x2b73[235]]:_0xff22x3[_0x2b73[235]]+ _0xff22x3[_0x2b73[117]],_0xff22x3= _0xff22xa[_0x2b73[2228]](_0xff22x3),_0xff22x12= _0xff22x14?_0xff22x4[_0x2b73[235]]:_0xff22x4[_0x2b73[235]]+ _0xff22x4[_0x2b73[117]],_0xff22x4= _0xff22xa[_0x2b73[2228]](_0xff22x4),_0xff22xa= new mxPoint(_0xff22x2+ (_0xff22x13?-_0xff22x5:_0xff22x5),_0xff22x3),_0xff22x15= new mxPoint(_0xff22x12+ (_0xff22x14?-_0xff22x5:_0xff22x5),_0xff22x4),_0xff22x13== _0xff22x14?(_0xff22x5= _0xff22x13?Math[_0x2b73[243]](_0xff22x2,_0xff22x12)- _0xff22x5:Math[_0x2b73[160]](_0xff22x2,_0xff22x12)+ _0xff22x5,_0xff22x9[_0x2b73[207]]( new mxPoint(_0xff22x5,_0xff22x3)),_0xff22x9[_0x2b73[207]]( new mxPoint(_0xff22x5,_0xff22x4))):(_0xff22xa[_0x2b73[235]]< _0xff22x15[_0x2b73[235]]== _0xff22x13?(_0xff22x5= _0xff22x3+ (_0xff22x4- _0xff22x3)/ 2,_0xff22x9[_0x2b73[207]](_0xff22xa),_0xff22x9[_0x2b73[207]]( new mxPoint(_0xff22xa[_0x2b73[235]],_0xff22x5)),_0xff22x9[_0x2b73[207]]( new mxPoint(_0xff22x15[_0x2b73[235]],_0xff22x5))):_0xff22x9[_0x2b73[207]](_0xff22xa),_0xff22x9[_0x2b73[207]](_0xff22x15)))},Loop:function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){if(null!= _0xff22x3){_0xff22x4= _0xff22x2[_0x2b73[441]];var _0xff22xa=_0xff22x4[_0x2b73[1179]];_0xff22x5= null!= _0xff22x5&& 0< _0xff22x5[_0x2b73[67]]?_0xff22x5[0]:null;null!= _0xff22x5&& (_0xff22x5= _0xff22x4[_0x2b73[2229]](_0xff22x2,_0xff22x5),mxUtils[_0x2b73[442]](_0xff22x3,_0xff22x5[_0x2b73[235]],_0xff22x5[_0x2b73[236]])&& (_0xff22x5= null));var _0xff22x12=0,_0xff22x13=0,_0xff22x14=0,_0xff22x15=0,_0xff22xa=mxUtils[_0x2b73[433]](_0xff22x2[_0x2b73[124]],mxConstants.STYLE_SEGMENT,_0xff22xa[_0x2b73[1020]])* _0xff22x4[_0x2b73[255]];_0xff22x2= mxUtils[_0x2b73[433]](_0xff22x2[_0x2b73[124]],mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_WEST);_0xff22x2== mxConstants[_0x2b73[1358]]|| _0xff22x2== mxConstants[_0x2b73[1354]]?(_0xff22x12= _0xff22x4[_0x2b73[2230]](_0xff22x3),_0xff22x13= _0xff22xa):(_0xff22x14= _0xff22x4[_0x2b73[2228]](_0xff22x3),_0xff22x15= _0xff22xa);null== _0xff22x5|| _0xff22x5[_0x2b73[235]]< _0xff22x3[_0x2b73[235]]|| _0xff22x5[_0x2b73[235]]> _0xff22x3[_0x2b73[235]]+ _0xff22x3[_0x2b73[117]]?null!= _0xff22x5?(_0xff22x12= _0xff22x5[_0x2b73[235]],_0xff22x15= Math[_0x2b73[160]](Math[_0x2b73[425]](_0xff22x14- _0xff22x5[_0x2b73[236]]),_0xff22x15)):_0xff22x2== mxConstants[_0x2b73[1358]]?_0xff22x14= _0xff22x3[_0x2b73[236]]- 2* _0xff22x13:_0xff22x2== mxConstants[_0x2b73[1354]]?_0xff22x14= _0xff22x3[_0x2b73[236]]+ _0xff22x3[_0x2b73[119]]+ 2* _0xff22x13:_0xff22x12= _0xff22x2== mxConstants[_0x2b73[1356]]?_0xff22x3[_0x2b73[235]]- 2* _0xff22x15:_0xff22x3[_0x2b73[235]]+ _0xff22x3[_0x2b73[117]]+ 2* _0xff22x15:null!= _0xff22x5&& (_0xff22x12= _0xff22x4[_0x2b73[2230]](_0xff22x3),_0xff22x13= Math[_0x2b73[160]](Math[_0x2b73[425]](_0xff22x12- _0xff22x5[_0x2b73[235]]),_0xff22x15),_0xff22x14= _0xff22x5[_0x2b73[236]],_0xff22x15= 0);_0xff22x9[_0x2b73[207]]( new mxPoint(_0xff22x12- _0xff22x13,_0xff22x14- _0xff22x15));_0xff22x9[_0x2b73[207]]( new mxPoint(_0xff22x12+ _0xff22x13,_0xff22x14+ _0xff22x15))}},ElbowConnector:function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){var _0xff22xa=null!= _0xff22x5&& 0< _0xff22x5[_0x2b73[67]]?_0xff22x5[0]:null,_0xff22x12=!1,_0xff22x13=!1;if(null!= _0xff22x3&& null!= _0xff22x4){if(null!= _0xff22xa){var _0xff22x14=Math[_0x2b73[243]](_0xff22x3[_0x2b73[235]],_0xff22x4[_0x2b73[235]]),_0xff22x15=Math[_0x2b73[160]](_0xff22x3[_0x2b73[235]]+ _0xff22x3[_0x2b73[117]],_0xff22x4[_0x2b73[235]]+ _0xff22x4[_0x2b73[117]]),_0xff22x13=Math[_0x2b73[243]](_0xff22x3[_0x2b73[236]],_0xff22x4[_0x2b73[236]]),_0xff22x16=Math[_0x2b73[160]](_0xff22x3[_0x2b73[236]]+ _0xff22x3[_0x2b73[119]],_0xff22x4[_0x2b73[236]]+ _0xff22x4[_0x2b73[119]]),_0xff22xa=_0xff22x2[_0x2b73[441]][_0x2b73[2229]](_0xff22x2,_0xff22xa),_0xff22x12=_0xff22xa[_0x2b73[236]]< _0xff22x13|| _0xff22xa[_0x2b73[236]]> _0xff22x16,_0xff22x13=_0xff22xa[_0x2b73[235]]< _0xff22x14|| _0xff22xa[_0x2b73[235]]> _0xff22x15}else {_0xff22x14= Math[_0x2b73[160]](_0xff22x3[_0x2b73[235]],_0xff22x4[_0x2b73[235]]),_0xff22x15= Math[_0x2b73[243]](_0xff22x3[_0x2b73[235]]+ _0xff22x3[_0x2b73[117]],_0xff22x4[_0x2b73[235]]+ _0xff22x4[_0x2b73[117]]),_0xff22x12= _0xff22x14== _0xff22x15,_0xff22x12|| (_0xff22x13= Math[_0x2b73[160]](_0xff22x3[_0x2b73[236]],_0xff22x4[_0x2b73[236]]),_0xff22x16= Math[_0x2b73[243]](_0xff22x3[_0x2b73[236]]+ _0xff22x3[_0x2b73[119]],_0xff22x4[_0x2b73[236]]+ _0xff22x4[_0x2b73[119]]),_0xff22x13= _0xff22x13== _0xff22x16)}};!_0xff22x13&& (_0xff22x12|| _0xff22x2[_0x2b73[124]][mxConstants[_0x2b73[2231]]]== mxConstants[_0x2b73[2232]])?mxEdgeStyle.TopToBottom(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9):mxEdgeStyle.SideToSide(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9)},SideToSide:function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){var _0xff22xa=_0xff22x2[_0x2b73[441]];_0xff22x5= null!= _0xff22x5&& 0< _0xff22x5[_0x2b73[67]]?_0xff22x5[0]:null;var _0xff22x12=_0xff22x2[_0x2b73[439]],_0xff22x13=_0xff22x12[0],_0xff22x12=_0xff22x12[_0xff22x12[_0x2b73[67]]- 1];null!= _0xff22x5&& (_0xff22x5= _0xff22xa[_0x2b73[2229]](_0xff22x2,_0xff22x5));null!= _0xff22x13&& (_0xff22x3= new mxCellState,_0xff22x3[_0x2b73[235]]= _0xff22x13[_0x2b73[235]],_0xff22x3[_0x2b73[236]]= _0xff22x13[_0x2b73[236]]);null!= _0xff22x12&& (_0xff22x4= new mxCellState,_0xff22x4[_0x2b73[235]]= _0xff22x12[_0x2b73[235]],_0xff22x4[_0x2b73[236]]= _0xff22x12[_0x2b73[236]]);null!= _0xff22x3&& null!= _0xff22x4&& (_0xff22x2= Math[_0x2b73[160]](_0xff22x3[_0x2b73[235]],_0xff22x4[_0x2b73[235]]),_0xff22x13= Math[_0x2b73[243]](_0xff22x3[_0x2b73[235]]+ _0xff22x3[_0x2b73[117]],_0xff22x4[_0x2b73[235]]+ _0xff22x4[_0x2b73[117]]),_0xff22x2= null!= _0xff22x5?_0xff22x5[_0x2b73[235]]:_0xff22x13+ (_0xff22x2- _0xff22x13)/ 2,_0xff22x13= _0xff22xa[_0x2b73[2228]](_0xff22x3),_0xff22xa= _0xff22xa[_0x2b73[2228]](_0xff22x4),null!= _0xff22x5&& (_0xff22x5[_0x2b73[236]]>= _0xff22x3[_0x2b73[236]]&& _0xff22x5[_0x2b73[236]]<= _0xff22x3[_0x2b73[236]]+ _0xff22x3[_0x2b73[119]]&& (_0xff22x13= _0xff22x5[_0x2b73[236]]),_0xff22x5[_0x2b73[236]]>= _0xff22x4[_0x2b73[236]]&& _0xff22x5[_0x2b73[236]]<= _0xff22x4[_0x2b73[236]]+ _0xff22x4[_0x2b73[119]]&& (_0xff22xa= _0xff22x5[_0x2b73[236]])),!mxUtils[_0x2b73[442]](_0xff22x4,_0xff22x2,_0xff22x13)&& !mxUtils[_0x2b73[442]](_0xff22x3,_0xff22x2,_0xff22x13)&& _0xff22x9[_0x2b73[207]]( new mxPoint(_0xff22x2,_0xff22x13)),!mxUtils[_0x2b73[442]](_0xff22x4,_0xff22x2,_0xff22xa)&& !mxUtils[_0x2b73[442]](_0xff22x3,_0xff22x2,_0xff22xa)&& _0xff22x9[_0x2b73[207]]( new mxPoint(_0xff22x2,_0xff22xa)),1== _0xff22x9[_0x2b73[67]]&& (null!= _0xff22x5?!mxUtils[_0x2b73[442]](_0xff22x4,_0xff22x2,_0xff22x5[_0x2b73[236]])&& !mxUtils[_0x2b73[442]](_0xff22x3,_0xff22x2,_0xff22x5[_0x2b73[236]])&& _0xff22x9[_0x2b73[207]]( new mxPoint(_0xff22x2,_0xff22x5[_0x2b73[236]])):(_0xff22xa= Math[_0x2b73[160]](_0xff22x3[_0x2b73[236]],_0xff22x4[_0x2b73[236]]),_0xff22x3= Math[_0x2b73[243]](_0xff22x3[_0x2b73[236]]+ _0xff22x3[_0x2b73[119]],_0xff22x4[_0x2b73[236]]+ _0xff22x4[_0x2b73[119]]),_0xff22x9[_0x2b73[207]]( new mxPoint(_0xff22x2,_0xff22xa+ (_0xff22x3- _0xff22xa)/ 2)))))},TopToBottom:function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){var _0xff22xa=_0xff22x2[_0x2b73[441]];_0xff22x5= null!= _0xff22x5&& 0< _0xff22x5[_0x2b73[67]]?_0xff22x5[0]:null;var _0xff22x12=_0xff22x2[_0x2b73[439]],_0xff22x13=_0xff22x12[0],_0xff22x12=_0xff22x12[_0xff22x12[_0x2b73[67]]- 1];null!= _0xff22x5&& (_0xff22x5= _0xff22xa[_0x2b73[2229]](_0xff22x2,_0xff22x5));null!= _0xff22x13&& (_0xff22x3= new mxCellState,_0xff22x3[_0x2b73[235]]= _0xff22x13[_0x2b73[235]],_0xff22x3[_0x2b73[236]]= _0xff22x13[_0x2b73[236]]);null!= _0xff22x12&& (_0xff22x4= new mxCellState,_0xff22x4[_0x2b73[235]]= _0xff22x12[_0x2b73[235]],_0xff22x4[_0x2b73[236]]= _0xff22x12[_0x2b73[236]]);null!= _0xff22x3&& null!= _0xff22x4&& (_0xff22x13= Math[_0x2b73[160]](_0xff22x3[_0x2b73[236]],_0xff22x4[_0x2b73[236]]),_0xff22x12= Math[_0x2b73[243]](_0xff22x3[_0x2b73[236]]+ _0xff22x3[_0x2b73[119]],_0xff22x4[_0x2b73[236]]+ _0xff22x4[_0x2b73[119]]),_0xff22x2= _0xff22xa[_0x2b73[2230]](_0xff22x3),null!= _0xff22x5&& (_0xff22x5[_0x2b73[235]]>= _0xff22x3[_0x2b73[235]]&& _0xff22x5[_0x2b73[235]]<= _0xff22x3[_0x2b73[235]]+ _0xff22x3[_0x2b73[117]])&& (_0xff22x2= _0xff22x5[_0x2b73[235]]),_0xff22x13= null!= _0xff22x5?_0xff22x5[_0x2b73[236]]:_0xff22x12+ (_0xff22x13- _0xff22x12)/ 2,!mxUtils[_0x2b73[442]](_0xff22x4,_0xff22x2,_0xff22x13)&& !mxUtils[_0x2b73[442]](_0xff22x3,_0xff22x2,_0xff22x13)&& _0xff22x9[_0x2b73[207]]( new mxPoint(_0xff22x2,_0xff22x13)),_0xff22x2= null!= _0xff22x5&& _0xff22x5[_0x2b73[235]]>= _0xff22x4[_0x2b73[235]]&& _0xff22x5[_0x2b73[235]]<= _0xff22x4[_0x2b73[235]]+ _0xff22x4[_0x2b73[117]]?_0xff22x5[_0x2b73[235]]:_0xff22xa[_0x2b73[2230]](_0xff22x4),!mxUtils[_0x2b73[442]](_0xff22x4,_0xff22x2,_0xff22x13)&& !mxUtils[_0x2b73[442]](_0xff22x3,_0xff22x2,_0xff22x13)&& _0xff22x9[_0x2b73[207]]( new mxPoint(_0xff22x2,_0xff22x13)),1== _0xff22x9[_0x2b73[67]]&& (null!= _0xff22x5&& 1== _0xff22x9[_0x2b73[67]]?!mxUtils[_0x2b73[442]](_0xff22x4,_0xff22x5[_0x2b73[235]],_0xff22x13)&& !mxUtils[_0x2b73[442]](_0xff22x3,_0xff22x5[_0x2b73[235]],_0xff22x13)&& _0xff22x9[_0x2b73[207]]( new mxPoint(_0xff22x5[_0x2b73[235]],_0xff22x13)):(_0xff22xa= Math[_0x2b73[160]](_0xff22x3[_0x2b73[235]],_0xff22x4[_0x2b73[235]]),_0xff22x3= Math[_0x2b73[243]](_0xff22x3[_0x2b73[235]]+ _0xff22x3[_0x2b73[117]],_0xff22x4[_0x2b73[235]]+ _0xff22x4[_0x2b73[117]]),_0xff22x9[_0x2b73[207]]( new mxPoint(_0xff22xa+ (_0xff22x3- _0xff22xa)/ 2,_0xff22x13)))))},SegmentConnector:function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){var _0xff22xa=_0xff22x2[_0x2b73[439]],_0xff22x12=!0,_0xff22x13=null,_0xff22x14=_0xff22xa[0];null== _0xff22x14&& null!= _0xff22x3?_0xff22x14= new mxPoint(_0xff22x2[_0x2b73[441]][_0x2b73[2230]](_0xff22x3),_0xff22x2[_0x2b73[441]][_0x2b73[2228]](_0xff22x3)):null!= _0xff22x14&& (_0xff22x14= _0xff22x14[_0x2b73[238]]());var _0xff22x15=_0xff22xa[_0x2b73[67]]- 1;if(null!= _0xff22x5&& 0< _0xff22x5[_0x2b73[67]]){for(var _0xff22x13=_0xff22x2[_0x2b73[441]][_0x2b73[2229]](_0xff22x2,_0xff22x5[0]),_0xff22x16=_0xff22x3,_0xff22x17=_0xff22xa[0],_0xff22x18=!1,_0xff22x19=!1,_0xff22x18=_0xff22x13,_0xff22x1a=_0xff22x5[_0x2b73[67]],_0xff22x1b=0;2> _0xff22x1b;_0xff22x1b++){var _0xff22x1c=null!= _0xff22x17&& _0xff22x17[_0x2b73[235]]== _0xff22x18[_0x2b73[235]],_0xff22x1d=null!= _0xff22x17&& _0xff22x17[_0x2b73[236]]== _0xff22x18[_0x2b73[236]],_0xff22x1e=null!= _0xff22x16&& _0xff22x18[_0x2b73[236]]>= _0xff22x16[_0x2b73[236]]&& _0xff22x18[_0x2b73[236]]<= _0xff22x16[_0x2b73[236]]+ _0xff22x16[_0x2b73[119]],_0xff22x16=null!= _0xff22x16&& _0xff22x18[_0x2b73[235]]>= _0xff22x16[_0x2b73[235]]&& _0xff22x18[_0x2b73[235]]<= _0xff22x16[_0x2b73[235]]+ _0xff22x16[_0x2b73[117]],_0xff22x18=_0xff22x1d|| null== _0xff22x17&& _0xff22x1e,_0xff22x19=_0xff22x1c|| null== _0xff22x17&& _0xff22x16;if(null!= _0xff22x17&& !_0xff22x1d&& !_0xff22x1c&& (_0xff22x1e|| _0xff22x16)){_0xff22x12= _0xff22x1e?!1:!0;break};if(_0xff22x19|| _0xff22x18){_0xff22x12= _0xff22x18;1== _0xff22x1b&& (_0xff22x12= 0== _0xff22x5[_0x2b73[67]]% 2?_0xff22x18:_0xff22x19);break};_0xff22x16= _0xff22x4;_0xff22x17= _0xff22xa[_0xff22x15];_0xff22x18= _0xff22x2[_0x2b73[441]][_0x2b73[2229]](_0xff22x2,_0xff22x5[_0xff22x1a- 1])};_0xff22x12&& (null!= _0xff22xa[0]&& _0xff22xa[0][_0x2b73[236]]!= _0xff22x13[_0x2b73[236]]|| null== _0xff22xa[0]&& null!= _0xff22x3&& (_0xff22x13[_0x2b73[236]]< _0xff22x3[_0x2b73[236]]|| _0xff22x13[_0x2b73[236]]> _0xff22x3[_0x2b73[236]]+ _0xff22x3[_0x2b73[119]]))?_0xff22x9[_0x2b73[207]]( new mxPoint(_0xff22x14[_0x2b73[235]],_0xff22x13[_0x2b73[236]])):!_0xff22x12&& (null!= _0xff22xa[0]&& _0xff22xa[0][_0x2b73[235]]!= _0xff22x13[_0x2b73[235]]|| null== _0xff22xa[0]&& null!= _0xff22x3&& (_0xff22x13[_0x2b73[235]]< _0xff22x3[_0x2b73[235]]|| _0xff22x13[_0x2b73[235]]> _0xff22x3[_0x2b73[235]]+ _0xff22x3[_0x2b73[117]]))&& _0xff22x9[_0x2b73[207]]( new mxPoint(_0xff22x13[_0x2b73[235]],_0xff22x14[_0x2b73[236]]));_0xff22x12?_0xff22x14[_0x2b73[236]]= _0xff22x13[_0x2b73[236]]:_0xff22x14[_0x2b73[235]]= _0xff22x13[_0x2b73[235]];for(_0xff22x1b= 0;_0xff22x1b< _0xff22x5[_0x2b73[67]];_0xff22x1b++){_0xff22x12= !_0xff22x12,_0xff22x13= _0xff22x2[_0x2b73[441]][_0x2b73[2229]](_0xff22x2,_0xff22x5[_0xff22x1b]),_0xff22x12?_0xff22x14[_0x2b73[236]]= _0xff22x13[_0x2b73[236]]:_0xff22x14[_0x2b73[235]]= _0xff22x13[_0x2b73[235]],_0xff22x9[_0x2b73[207]](_0xff22x14[_0x2b73[238]]())}}else {_0xff22x13= _0xff22x14,_0xff22x12= !0};_0xff22x14= _0xff22xa[_0xff22x15];null== _0xff22x14&& null!= _0xff22x4&& (_0xff22x14= new mxPoint(_0xff22x2[_0x2b73[441]][_0x2b73[2230]](_0xff22x4),_0xff22x2[_0x2b73[441]][_0x2b73[2228]](_0xff22x4)));_0xff22x12&& (null!= _0xff22xa[_0xff22x15]&& _0xff22xa[_0xff22x15][_0x2b73[236]]!= _0xff22x13[_0x2b73[236]]|| null== _0xff22xa[_0xff22x15]&& null!= _0xff22x4&& (_0xff22x13[_0x2b73[236]]< _0xff22x4[_0x2b73[236]]|| _0xff22x13[_0x2b73[236]]> _0xff22x4[_0x2b73[236]]+ _0xff22x4[_0x2b73[119]]))?_0xff22x9[_0x2b73[207]]( new mxPoint(_0xff22x14[_0x2b73[235]],_0xff22x13[_0x2b73[236]])):!_0xff22x12&& (null!= _0xff22xa[_0xff22x15]&& _0xff22xa[_0xff22x15][_0x2b73[235]]!= _0xff22x13[_0x2b73[235]]|| null== _0xff22xa[_0xff22x15]&& null!= _0xff22x4&& (_0xff22x13[_0x2b73[235]]< _0xff22x4[_0x2b73[235]]|| _0xff22x13[_0x2b73[235]]> _0xff22x4[_0x2b73[235]]+ _0xff22x4[_0x2b73[117]]))&& _0xff22x9[_0x2b73[207]]( new mxPoint(_0xff22x13[_0x2b73[235]],_0xff22x14[_0x2b73[236]]));if(null== _0xff22xa[0]&& null!= _0xff22x3){for(;1< _0xff22x9[_0x2b73[67]]&& mxUtils[_0x2b73[442]](_0xff22x3,_0xff22x9[1][_0x2b73[235]],_0xff22x9[1][_0x2b73[236]]);){_0xff22x9= _0xff22x9[_0x2b73[300]](1,1)}};if(null== _0xff22xa[_0xff22x15]&& null!= _0xff22x4){for(;1< _0xff22x9[_0x2b73[67]]&& mxUtils[_0x2b73[442]](_0xff22x4,_0xff22x9[_0xff22x9[_0x2b73[67]]- 1][_0x2b73[235]],_0xff22x9[_0xff22x9[_0x2b73[67]]- 1][_0x2b73[236]]);){_0xff22x9= _0xff22x9[_0x2b73[300]](_0xff22x9[_0x2b73[67]]- 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(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){var _0xff22xa=_0xff22x2[_0x2b73[441]][_0x2b73[1179]],_0xff22x12=null== _0xff22x3?!1:_0xff22xa[_0x2b73[502]]()[_0x2b73[250]](_0xff22x3[_0x2b73[246]]),_0xff22xa=null== _0xff22x4?!1:_0xff22xa[_0x2b73[502]]()[_0x2b73[250]](_0xff22x4[_0x2b73[246]]);if(null!= _0xff22x5&& 0< _0xff22x5[_0x2b73[67]]|| _0xff22x12|| _0xff22xa){mxEdgeStyle.SegmentConnector(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9)}else {_0xff22x5= _0xff22x2[_0x2b73[439]];var _0xff22x13=_0xff22x5[0],_0xff22x14=_0xff22x5[_0xff22x5[_0x2b73[67]]- 1];_0xff22x5= null!= _0xff22x3?_0xff22x3[_0x2b73[235]]:_0xff22x13[_0x2b73[235]];var _0xff22x12=null!= _0xff22x3?_0xff22x3[_0x2b73[236]]:_0xff22x13[_0x2b73[236]],_0xff22x15=null!= _0xff22x3?_0xff22x3[_0x2b73[117]]:1,_0xff22x16=null!= _0xff22x3?_0xff22x3[_0x2b73[119]]:1,_0xff22x17=null!= _0xff22x4?_0xff22x4[_0x2b73[235]]:_0xff22x14[_0x2b73[235]],_0xff22x18=null!= _0xff22x4?_0xff22x4[_0x2b73[236]]:_0xff22x14[_0x2b73[236]],_0xff22x19=null!= _0xff22x4?_0xff22x4[_0x2b73[117]]:1,_0xff22x1a=null!= _0xff22x4?_0xff22x4[_0x2b73[119]]:1,_0xff22xa=_0xff22x2[_0x2b73[441]][_0x2b73[255]]* mxEdgeStyle[_0x2b73[2233]],_0xff22x1b=[mxConstants[_0x2b73[2234]],mxConstants[_0x2b73[2234]]];null!= _0xff22x3&& (_0xff22x1b[0]= mxUtils[_0x2b73[2227]](_0xff22x3,_0xff22x2,!0,mxConstants.DIRECTION_MASK_ALL));null!= _0xff22x4&& (_0xff22x1b[1]= mxUtils[_0x2b73[2227]](_0xff22x4,_0xff22x2,!1,mxConstants.DIRECTION_MASK_ALL));_0xff22x2= [0,0];_0xff22x5= [[_0xff22x5,_0xff22x12,_0xff22x15,_0xff22x16],[_0xff22x17,_0xff22x18,_0xff22x19,_0xff22x1a]];for(_0xff22x15= 0;2> _0xff22x15;_0xff22x15++){mxEdgeStyle[_0x2b73[2235]][_0xff22x15][1]= _0xff22x5[_0xff22x15][0]- _0xff22xa,mxEdgeStyle[_0x2b73[2235]][_0xff22x15][2]= _0xff22x5[_0xff22x15][1]- _0xff22xa,mxEdgeStyle[_0x2b73[2235]][_0xff22x15][4]= _0xff22x5[_0xff22x15][0]+ _0xff22x5[_0xff22x15][2]+ _0xff22xa,mxEdgeStyle[_0x2b73[2235]][_0xff22x15][8]= _0xff22x5[_0xff22x15][1]+ _0xff22x5[_0xff22x15][3]+ _0xff22xa};_0xff22x15= _0xff22x5[0][0]+ _0xff22x5[0][2]/ 2- (_0xff22x5[1][0]+ _0xff22x5[1][2]/ 2);_0xff22x16= _0xff22x5[0][1]+ _0xff22x5[0][3]/ 2- (_0xff22x5[1][1]+ _0xff22x5[1][3]/ 2);_0xff22x12= 0;0> _0xff22x15?_0xff22x12= 0> _0xff22x16?2:1:0>= _0xff22x16&& (_0xff22x12= 3,0== _0xff22x15&& (_0xff22x12= 2));_0xff22x16= null;null!= _0xff22x3&& (_0xff22x16= _0xff22x13);_0xff22x3= [[0.5,0.5],[0.5,0.5]];for(_0xff22x15= 0;2> _0xff22x15;_0xff22x15++){null!= _0xff22x16&& (_0xff22x3[_0xff22x15][0]= (_0xff22x16[_0x2b73[235]]- _0xff22x5[_0xff22x15][0])/ _0xff22x5[_0xff22x15][2],0.01> _0xff22x3[_0xff22x15][0]?_0xff22x2[_0xff22x15]= mxConstants[_0x2b73[436]]:0.99< _0xff22x3[_0xff22x15][0]&& (_0xff22x2[_0xff22x15]= mxConstants[_0x2b73[438]]),_0xff22x3[_0xff22x15][1]= (_0xff22x16[_0x2b73[236]]- _0xff22x5[_0xff22x15][1])/ _0xff22x5[_0xff22x15][3],0.01> _0xff22x3[_0xff22x15][1]?_0xff22x2[_0xff22x15]= mxConstants[_0x2b73[435]]:0.99< _0xff22x3[_0xff22x15][1]&& (_0xff22x2[_0xff22x15]= mxConstants[_0x2b73[437]])),_0xff22x16= null,null!= _0xff22x4&& (_0xff22x16= _0xff22x14)};_0xff22x15= _0xff22x5[0][1]- (_0xff22x5[1][1]+ _0xff22x5[1][3]);_0xff22x16= _0xff22x5[0][0]- (_0xff22x5[1][0]+ _0xff22x5[1][2]);_0xff22x17= _0xff22x5[1][1]- (_0xff22x5[0][1]+ _0xff22x5[0][3]);_0xff22x18= _0xff22x5[1][0]- (_0xff22x5[0][0]+ _0xff22x5[0][2]);mxEdgeStyle[_0x2b73[2236]][1]= Math[_0x2b73[160]](_0xff22x16- 2* _0xff22xa,0);mxEdgeStyle[_0x2b73[2236]][2]= Math[_0x2b73[160]](_0xff22x15- 2* _0xff22xa,0);mxEdgeStyle[_0x2b73[2236]][4]= Math[_0x2b73[160]](_0xff22x17- 2* _0xff22xa,0);mxEdgeStyle[_0x2b73[2236]][3]= Math[_0x2b73[160]](_0xff22x18- 2* _0xff22xa,0);_0xff22x4= [];_0xff22x13= [];_0xff22x14= [];_0xff22x13[0]= _0xff22x16>= _0xff22x18?mxConstants[_0x2b73[436]]:mxConstants[_0x2b73[438]];_0xff22x14[0]= _0xff22x15>= _0xff22x17?mxConstants[_0x2b73[435]]:mxConstants[_0x2b73[437]];_0xff22x13[1]= mxUtils[_0x2b73[2237]](_0xff22x13[0]);_0xff22x14[1]= mxUtils[_0x2b73[2237]](_0xff22x14[0]);_0xff22x16= _0xff22x16>= _0xff22x18?_0xff22x16:_0xff22x18;_0xff22x17= _0xff22x15>= _0xff22x17?_0xff22x15:_0xff22x17;_0xff22x18= [[0,0],[0,0]];_0xff22x19= !1;for(_0xff22x15= 0;2> _0xff22x15;_0xff22x15++){0== _0xff22x2[_0xff22x15]&& (0== (_0xff22x13[_0xff22x15]& _0xff22x1b[_0xff22x15])&& (_0xff22x13[_0xff22x15]= mxUtils[_0x2b73[2237]](_0xff22x13[_0xff22x15])),0== (_0xff22x14[_0xff22x15]& _0xff22x1b[_0xff22x15])&& (_0xff22x14[_0xff22x15]= mxUtils[_0x2b73[2237]](_0xff22x14[_0xff22x15])),_0xff22x18[_0xff22x15][0]= _0xff22x14[_0xff22x15],_0xff22x18[_0xff22x15][1]= _0xff22x13[_0xff22x15])};_0xff22x17> 2* _0xff22xa&& _0xff22x16> 2* _0xff22xa&& (0< (_0xff22x13[0]& _0xff22x1b[0])&& 0< (_0xff22x14[1]& _0xff22x1b[1])?(_0xff22x18[0][0]= _0xff22x13[0],_0xff22x18[0][1]= _0xff22x14[0],_0xff22x18[1][0]= _0xff22x14[1],_0xff22x18[1][1]= _0xff22x13[1],_0xff22x19= !0):0< (_0xff22x14[0]& _0xff22x1b[0])&& 0< (_0xff22x13[1]& _0xff22x1b[1])&& (_0xff22x18[0][0]= _0xff22x14[0],_0xff22x18[0][1]= _0xff22x13[0],_0xff22x18[1][0]= _0xff22x13[1],_0xff22x18[1][1]= _0xff22x14[1],_0xff22x19= !0));_0xff22x17> 2* _0xff22xa&& !_0xff22x19&& (_0xff22x18[0][0]= _0xff22x14[0],_0xff22x18[0][1]= _0xff22x13[0],_0xff22x18[1][0]= _0xff22x14[1],_0xff22x18[1][1]= _0xff22x13[1],_0xff22x19= !0);_0xff22x16> 2* _0xff22xa&& !_0xff22x19&& (_0xff22x18[0][0]= _0xff22x13[0],_0xff22x18[0][1]= _0xff22x14[0],_0xff22x18[1][0]= _0xff22x13[1],_0xff22x18[1][1]= _0xff22x14[1]);for(_0xff22x15= 0;2> _0xff22x15;_0xff22x15++){if(0== _0xff22x2[_0xff22x15]&& (0== (_0xff22x18[_0xff22x15][0]& _0xff22x1b[_0xff22x15])&& (_0xff22x18[_0xff22x15][0]= _0xff22x18[_0xff22x15][1]),_0xff22x4[_0xff22x15]= _0xff22x18[_0xff22x15][0]& _0xff22x1b[_0xff22x15],_0xff22x4[_0xff22x15]|= (_0xff22x18[_0xff22x15][1]& _0xff22x1b[_0xff22x15])<< 8,_0xff22x4[_0xff22x15]|= (_0xff22x18[1- _0xff22x15][_0xff22x15]& _0xff22x1b[_0xff22x15])<< 16,_0xff22x4[_0xff22x15]|= (_0xff22x18[1- _0xff22x15][1- _0xff22x15]& _0xff22x1b[_0xff22x15])<< 24,0== (_0xff22x4[_0xff22x15]& 15)&& (_0xff22x4[_0xff22x15]<<= 8),0== (_0xff22x4[_0xff22x15]& 3840)&& (_0xff22x4[_0xff22x15]= _0xff22x4[_0xff22x15]& 15| _0xff22x4[_0xff22x15]>> 8),0== (_0xff22x4[_0xff22x15]& 983040)&& (_0xff22x4[_0xff22x15]= _0xff22x4[_0xff22x15]& 65535| (_0xff22x4[_0xff22x15]& 251658240)>> 8),_0xff22x2[_0xff22x15]= _0xff22x4[_0xff22x15]& 15,_0xff22x1b[_0xff22x15]== mxConstants[_0x2b73[436]]|| _0xff22x1b[_0xff22x15]== mxConstants[_0x2b73[435]]|| _0xff22x1b[_0xff22x15]== mxConstants[_0x2b73[438]]|| _0xff22x1b[_0xff22x15]== mxConstants[_0x2b73[437]])){_0xff22x2[_0xff22x15]= _0xff22x1b[_0xff22x15]}};_0xff22x15= _0xff22x2[0]== mxConstants[_0x2b73[438]]?3:_0xff22x2[0];_0xff22x1b= _0xff22x2[1]== mxConstants[_0x2b73[438]]?3:_0xff22x2[1];_0xff22x15-= _0xff22x12;_0xff22x1b-= _0xff22x12;1> _0xff22x15&& (_0xff22x15+= 4);1> _0xff22x1b&& (_0xff22x1b+= 4);_0xff22x1b= mxEdgeStyle[_0x2b73[2238]][_0xff22x15- 1][_0xff22x1b- 1];mxEdgeStyle[_0x2b73[2239]][0][0]= _0xff22x5[0][0];mxEdgeStyle[_0x2b73[2239]][0][1]= _0xff22x5[0][1];switch(_0xff22x2[0]){case mxConstants[_0x2b73[436]]:mxEdgeStyle[_0x2b73[2239]][0][0]-= _0xff22xa;mxEdgeStyle[_0x2b73[2239]][0][1]+= _0xff22x3[0][1]* _0xff22x5[0][3];break;case mxConstants[_0x2b73[437]]:mxEdgeStyle[_0x2b73[2239]][0][0]+= _0xff22x3[0][0]* _0xff22x5[0][2];mxEdgeStyle[_0x2b73[2239]][0][1]+= _0xff22x5[0][3]+ _0xff22xa;break;case mxConstants[_0x2b73[438]]:mxEdgeStyle[_0x2b73[2239]][0][0]+= _0xff22x5[0][2]+ _0xff22xa;mxEdgeStyle[_0x2b73[2239]][0][1]+= _0xff22x3[0][1]* _0xff22x5[0][3];break;case mxConstants[_0x2b73[435]]:mxEdgeStyle[_0x2b73[2239]][0][0]+= _0xff22x3[0][0]* _0xff22x5[0][2],mxEdgeStyle[_0x2b73[2239]][0][1]-= _0xff22xa};_0xff22xa= 0;_0xff22x13= _0xff22x4= 0< (_0xff22x2[0]& (mxConstants[_0x2b73[438]]| mxConstants[_0x2b73[436]]))?0:1;for(_0xff22x15= _0xff22x14= 0;_0xff22x15< _0xff22x1b[_0x2b73[67]];_0xff22x15++){_0xff22x14= _0xff22x1b[_0xff22x15]& 15;_0xff22x1a= _0xff22x14== mxConstants[_0x2b73[438]]?3:_0xff22x14;_0xff22x1a+= _0xff22x12;4< _0xff22x1a&& (_0xff22x1a-= 4);_0xff22x16= mxEdgeStyle[_0x2b73[2240]][_0xff22x1a- 1];_0xff22x14= 0< _0xff22x1a% 2?0:1;_0xff22x14!= _0xff22x4&& (_0xff22xa++,mxEdgeStyle[_0x2b73[2239]][_0xff22xa][0]= mxEdgeStyle[_0x2b73[2239]][_0xff22xa- 1][0],mxEdgeStyle[_0x2b73[2239]][_0xff22xa][1]= mxEdgeStyle[_0x2b73[2239]][_0xff22xa- 1][1]);var _0xff22x1c=0< (_0xff22x1b[_0xff22x15]& mxEdgeStyle[_0x2b73[2241]]),_0xff22x19=0< (_0xff22x1b[_0xff22x15]& mxEdgeStyle[_0x2b73[2242]]),_0xff22x17=(_0xff22x1b[_0xff22x15]& mxEdgeStyle[_0x2b73[2243]])>> 5,_0xff22x17=_0xff22x17<< _0xff22x12;15< _0xff22x17&& (_0xff22x17>>= 4);_0xff22x18= 0< (_0xff22x1b[_0xff22x15]& mxEdgeStyle[_0x2b73[2244]]);(_0xff22x19|| _0xff22x1c)&& 9> _0xff22x17?(_0xff22x1a= 0,_0xff22x19= _0xff22x19?0:1,_0xff22x1a= _0xff22x18&& 0== _0xff22x14?_0xff22x5[_0xff22x19][0]+ _0xff22x3[_0xff22x19][0]* _0xff22x5[_0xff22x19][2]:_0xff22x18?_0xff22x5[_0xff22x19][1]+ _0xff22x3[_0xff22x19][1]* _0xff22x5[_0xff22x19][3]:mxEdgeStyle[_0x2b73[2235]][_0xff22x19][_0xff22x17],0== _0xff22x14?(_0xff22x17= (_0xff22x1a- mxEdgeStyle[_0x2b73[2239]][_0xff22xa][0])* _0xff22x16[0],0< _0xff22x17&& (mxEdgeStyle[_0x2b73[2239]][_0xff22xa][0]+= _0xff22x16[0]* _0xff22x17)):(_0xff22x17= (_0xff22x1a- mxEdgeStyle[_0x2b73[2239]][_0xff22xa][1])* _0xff22x16[1],0< _0xff22x17&& (mxEdgeStyle[_0x2b73[2239]][_0xff22xa][1]+= _0xff22x16[1]* _0xff22x17))):_0xff22x18&& (mxEdgeStyle[_0x2b73[2239]][_0xff22xa][0]+= _0xff22x16[0]* Math[_0x2b73[425]](mxEdgeStyle[_0x2b73[2236]][_0xff22x1a]/ 2),mxEdgeStyle[_0x2b73[2239]][_0xff22xa][1]+= _0xff22x16[1]* Math[_0x2b73[425]](mxEdgeStyle[_0x2b73[2236]][_0xff22x1a]/ 2));0< _0xff22xa&& mxEdgeStyle[_0x2b73[2239]][_0xff22xa][_0xff22x14]== mxEdgeStyle[_0x2b73[2239]][_0xff22xa- 1][_0xff22x14]?_0xff22xa--:_0xff22x4= _0xff22x14};for(_0xff22x15= 0;_0xff22x15<= _0xff22xa&& !(_0xff22x15== _0xff22xa&& ((0< (_0xff22x2[1]& (mxConstants[_0x2b73[438]]| mxConstants[_0x2b73[436]]))?0:1)== _0xff22x13?0:1)!= (_0xff22xa+ 1)% 2);_0xff22x15++){_0xff22x9[_0x2b73[207]]( new mxPoint(mxEdgeStyle[_0x2b73[2239]][_0xff22x15][0],mxEdgeStyle[_0x2b73[2239]][_0xff22x15][1]))}}},getRoutePattern:function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){var _0xff22x9=_0xff22x2[0]== mxConstants[_0x2b73[438]]?3:_0xff22x2[0];_0xff22x2= _0xff22x2[1]== mxConstants[_0x2b73[438]]?3:_0xff22x2[1];_0xff22x9-= _0xff22x3;_0xff22x2-= _0xff22x3;1> _0xff22x9&& (_0xff22x9+= 4);1> _0xff22x2&& (_0xff22x2+= 4);_0xff22x3= routePatterns[_0xff22x9- 1][_0xff22x2- 1];if(0== _0xff22x4|| 0== _0xff22x5){null!= inlineRoutePatterns[_0xff22x9- 1][_0xff22x2- 1]&& (_0xff22x3= inlineRoutePatterns[_0xff22x9- 1][_0xff22x2- 1])};return _0xff22x3}},mxStyleRegistry={values:[],putValue:function(_0xff22x2,_0xff22x3){mxStyleRegistry[_0x2b73[2245]][_0xff22x2]= _0xff22x3},getValue:function(_0xff22x2){return mxStyleRegistry[_0x2b73[2245]][_0xff22x2]},getName:function(_0xff22x2){for(var _0xff22x3 in mxStyleRegistry[_0x2b73[2245]]){if(mxStyleRegistry[_0x2b73[2245]][_0xff22x3]== _0xff22x2){return _0xff22x3}};return null}};mxStyleRegistry[_0x2b73[2246]](mxConstants.EDGESTYLE_ELBOW,mxEdgeStyle.ElbowConnector);mxStyleRegistry[_0x2b73[2246]](mxConstants.EDGESTYLE_ENTITY_RELATION,mxEdgeStyle.EntityRelation);mxStyleRegistry[_0x2b73[2246]](mxConstants.EDGESTYLE_LOOP,mxEdgeStyle.Loop);mxStyleRegistry[_0x2b73[2246]](mxConstants.EDGESTYLE_SIDETOSIDE,mxEdgeStyle.SideToSide);mxStyleRegistry[_0x2b73[2246]](mxConstants.EDGESTYLE_TOPTOBOTTOM,mxEdgeStyle.TopToBottom);mxStyleRegistry[_0x2b73[2246]](mxConstants.EDGESTYLE_ORTHOGONAL,mxEdgeStyle.OrthConnector);mxStyleRegistry[_0x2b73[2246]](mxConstants.EDGESTYLE_SEGMENT,mxEdgeStyle.SegmentConnector);mxStyleRegistry[_0x2b73[2246]](mxConstants.PERIMETER_ELLIPSE,mxPerimeter.EllipsePerimeter);mxStyleRegistry[_0x2b73[2246]](mxConstants.PERIMETER_RECTANGLE,mxPerimeter.RectanglePerimeter);mxStyleRegistry[_0x2b73[2246]](mxConstants.PERIMETER_RHOMBUS,mxPerimeter.RhombusPerimeter);mxStyleRegistry[_0x2b73[2246]](mxConstants.PERIMETER_TRIANGLE,mxPerimeter.TrianglePerimeter);function mxGraphView(_0xff22x2){this[_0x2b73[1179]]= _0xff22x2;this[_0x2b73[513]]= new mxPoint;this[_0x2b73[2247]]= new mxRectangle;this[_0x2b73[1214]]= new mxDictionary}mxGraphView[_0x2b73[202]]= new mxEventSource;mxGraphView[_0x2b73[202]][_0x2b73[196]]= mxGraphView;mxGraphView[_0x2b73[202]][_0x2b73[2248]]= new mxPoint;mxGraphView[_0x2b73[202]][_0x2b73[2091]]= _0x2b73[130]!= mxClient[_0x2b73[90]]?_0x2b73[819]:_0x2b73[110];mxGraphView[_0x2b73[202]][_0x2b73[2249]]= _0x2b73[130]!= mxClient[_0x2b73[90]]?_0x2b73[2250]:_0x2b73[110];mxGraphView[_0x2b73[202]][_0x2b73[2251]]= !1;mxGraphView[_0x2b73[202]][_0x2b73[2252]]= !0;mxGraphView[_0x2b73[202]][_0x2b73[2253]]= !0;mxGraphView[_0x2b73[202]][_0x2b73[2254]]= !0;mxGraphView[_0x2b73[202]][_0x2b73[1179]]= null;mxGraphView[_0x2b73[202]][_0x2b73[1741]]= null;mxGraphView[_0x2b73[202]][_0x2b73[2247]]= null;mxGraphView[_0x2b73[202]][_0x2b73[255]]= 1;mxGraphView[_0x2b73[202]][_0x2b73[513]]= null;mxGraphView[_0x2b73[202]][_0x2b73[2255]]= !1;mxGraphView[_0x2b73[202]][_0x2b73[517]]= function(){return this[_0x2b73[2247]]};mxGraphView[_0x2b73[202]][_0x2b73[2256]]= function(_0xff22x2){this[_0x2b73[2247]]= _0xff22x2};mxGraphView[_0x2b73[202]][_0x2b73[1799]]= function(_0xff22x2){var _0xff22x3=null;if(null!= _0xff22x2&& 0< _0xff22x2[_0x2b73[67]]){for(var _0xff22x4=this[_0x2b73[1179]][_0x2b73[502]](),_0xff22x5=0;_0xff22x5< _0xff22x2[_0x2b73[67]];_0xff22x5++){if(_0xff22x4[_0x2b73[1193]](_0xff22x2[_0xff22x5])|| _0xff22x4[_0x2b73[250]](_0xff22x2[_0xff22x5])){var _0xff22x9=this[_0x2b73[248]](_0xff22x2[_0xff22x5]);null!= _0xff22x9&& (null== _0xff22x3?_0xff22x3= new mxRectangle(_0xff22x9[_0x2b73[235]],_0xff22x9[_0x2b73[236]],_0xff22x9[_0x2b73[117]],_0xff22x9[_0x2b73[119]]):_0xff22x3[_0x2b73[99]](_0xff22x9))}}};return _0xff22x3};mxGraphView[_0x2b73[202]][_0x2b73[2257]]= function(_0xff22x2){if(this[_0x2b73[1741]]!= _0xff22x2){var _0xff22x3= new mxCurrentRootChange(this,_0xff22x2);_0xff22x3[_0x2b73[350]]();var _0xff22x4= new mxUndoableEdit(this,!1);_0xff22x4[_0x2b73[99]](_0xff22x3);this[_0x2b73[746]]( new mxEventObject(mxEvent.UNDO,_0x2b73[1061],_0xff22x4));this[_0x2b73[1179]][_0x2b73[2258]]()};return _0xff22x2};mxGraphView[_0x2b73[202]][_0x2b73[829]]= function(_0xff22x2,_0xff22x3,_0xff22x4){var _0xff22x5=this[_0x2b73[255]],_0xff22x9= new mxPoint(this[_0x2b73[513]][_0x2b73[235]],this[_0x2b73[513]][_0x2b73[236]]);if(this[_0x2b73[255]]!= _0xff22x2|| this[_0x2b73[513]][_0x2b73[235]]!= _0xff22x3|| this[_0x2b73[513]][_0x2b73[236]]!= _0xff22x4){this[_0x2b73[255]]= _0xff22x2,this[_0x2b73[513]][_0x2b73[235]]= _0xff22x3,this[_0x2b73[513]][_0x2b73[236]]= _0xff22x4,this[_0x2b73[503]]()&& (this[_0x2b73[2259]](),this[_0x2b73[1179]][_0x2b73[2258]]())};this[_0x2b73[746]]( new mxEventObject(mxEvent.SCALE_AND_TRANSLATE,_0x2b73[255],_0xff22x2,_0x2b73[2260],_0xff22x5,_0x2b73[513],this[_0x2b73[513]],_0x2b73[2261],_0xff22x9))};mxGraphView[_0x2b73[202]][_0x2b73[518]]= function(){return this[_0x2b73[255]]};mxGraphView[_0x2b73[202]][_0x2b73[2262]]= function(_0xff22x2){var _0xff22x3=this[_0x2b73[255]];this[_0x2b73[255]]!= _0xff22x2&& (this[_0x2b73[255]]= _0xff22x2,this[_0x2b73[503]]()&& (this[_0x2b73[2259]](),this[_0x2b73[1179]][_0x2b73[2258]]()));this[_0x2b73[746]]( new mxEventObject(mxEvent.SCALE,_0x2b73[255],_0xff22x2,_0x2b73[2260],_0xff22x3))};mxGraphView[_0x2b73[202]][_0x2b73[512]]= function(){return this[_0x2b73[513]]};mxGraphView[_0x2b73[202]][_0x2b73[1147]]= function(_0xff22x2,_0xff22x3){var _0xff22x4= new mxPoint(this[_0x2b73[513]][_0x2b73[235]],this[_0x2b73[513]][_0x2b73[236]]);if(this[_0x2b73[513]][_0x2b73[235]]!= _0xff22x2|| this[_0x2b73[513]][_0x2b73[236]]!= _0xff22x3){this[_0x2b73[513]][_0x2b73[235]]= _0xff22x2,this[_0x2b73[513]][_0x2b73[236]]= _0xff22x3,this[_0x2b73[503]]()&& (this[_0x2b73[2259]](),this[_0x2b73[1179]][_0x2b73[2258]]())};this[_0x2b73[746]]( new mxEventObject(mxEvent.TRANSLATE,_0x2b73[513],this[_0x2b73[513]],_0x2b73[2261],_0xff22x4))};mxGraphView[_0x2b73[202]][_0x2b73[802]]= function(){null!= this[_0x2b73[1741]]&& this[_0x2b73[200]]();this[_0x2b73[2259]]()};mxGraphView[_0x2b73[202]][_0x2b73[2259]]= function(){this[_0x2b73[2263]]();this[_0x2b73[2264]]()};mxGraphView[_0x2b73[202]][_0x2b73[200]]= function(_0xff22x2,_0xff22x3,_0xff22x4){var _0xff22x5=this[_0x2b73[1179]][_0x2b73[502]]();_0xff22x2= _0xff22x2|| _0xff22x5[_0x2b73[501]]();_0xff22x3= null!= _0xff22x3?_0xff22x3:!1;_0xff22x4= null!= _0xff22x4?_0xff22x4:!0;this[_0x2b73[2265]](_0xff22x2);if(_0xff22x4&& (_0xff22x3|| _0xff22x2!= this[_0x2b73[1741]])){_0xff22x4= _0xff22x5[_0x2b73[262]](_0xff22x2);for(var _0xff22x9=0;_0xff22x9< _0xff22x4;_0xff22x9++){this[_0x2b73[200]](_0xff22x5[_0x2b73[263]](_0xff22x2,_0xff22x9),_0xff22x3)}}else {this[_0x2b73[2263]](_0xff22x2)}};mxGraphView[_0x2b73[202]][_0x2b73[2263]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){var _0xff22x9=this[_0x2b73[1179]][_0x2b73[502]]();_0xff22x2= _0xff22x2|| _0xff22x9[_0x2b73[501]]();_0xff22x3= null!= _0xff22x3?_0xff22x3:!0;_0xff22x4= null!= _0xff22x4?_0xff22x4:!0;_0xff22x5= null!= _0xff22x5?_0xff22x5:!1;var _0xff22xa=this[_0x2b73[248]](_0xff22x2);null!= _0xff22xa&& (_0xff22xa[_0x2b73[2080]]= !0,_0xff22x5&& (_0xff22xa[_0x2b73[2082]]= !0));if(_0xff22x3){for(var _0xff22x12=_0xff22x9[_0x2b73[262]](_0xff22x2),_0xff22xa=0;_0xff22xa< _0xff22x12;_0xff22xa++){var _0xff22x13=_0xff22x9[_0x2b73[263]](_0xff22x2,_0xff22xa);this[_0x2b73[2263]](_0xff22x13,_0xff22x3,_0xff22x4,_0xff22x5)}};if(_0xff22x4){_0xff22x5= _0xff22x9[_0x2b73[1707]](_0xff22x2);for(_0xff22xa= 0;_0xff22xa< _0xff22x5;_0xff22xa++){this[_0x2b73[2263]](_0xff22x9[_0x2b73[1708]](_0xff22x2,_0xff22xa),_0xff22x3,_0xff22x4)}}};mxGraphView[_0x2b73[202]][_0x2b73[2264]]= function(_0xff22x2){var _0xff22x3=mxLog[_0x2b73[2109]](_0x2b73[2266]);window[_0x2b73[879]]= mxResources[_0x2b73[203]](this[_0x2b73[2249]])|| this[_0x2b73[2249]];var _0xff22x4=null;if(this[_0x2b73[2253]]&& null!= this[_0x2b73[510]]&& null== this[_0x2b73[1653]]&& (8== document[_0x2b73[5]]|| mxClient[_0x2b73[496]])){_0xff22x4= this[_0x2b73[510]][_0x2b73[124]][_0x2b73[495]];this[_0x2b73[510]][_0x2b73[124]][_0x2b73[495]]= _0x2b73[130];var _0xff22x5=document[_0x2b73[55]](_0x2b73[485]);_0xff22x5[_0x2b73[124]][_0x2b73[491]]= _0x2b73[492];_0xff22x5[_0x2b73[124]][_0x2b73[493]]= _0x2b73[494];_0xff22x5[_0x2b73[124]][_0x2b73[187]]= _0x2b73[188];_0xff22x5[_0x2b73[124]][_0x2b73[495]]= mxClient[_0x2b73[496]]?_0x2b73[497]:_0x2b73[498];_0xff22x5[_0x2b73[124]][_0x2b73[499]]= _0x2b73[500];document[_0x2b73[112]][_0x2b73[62]](_0xff22x5);this[_0x2b73[1653]]= _0xff22x5};_0xff22x2= _0xff22x2|| (null!= this[_0x2b73[1741]]?this[_0x2b73[1741]]:this[_0x2b73[1179]][_0x2b73[502]]()[_0x2b73[501]]());this[_0x2b73[2267]](null,_0xff22x2);_0xff22x2= this[_0x2b73[2268]](null,_0xff22x2);null== _0xff22x2&& (_0xff22x2= new mxRectangle);this[_0x2b73[2256]](_0xff22x2);this[_0x2b73[2269]]();null!= _0xff22x4&& (this[_0x2b73[510]][_0x2b73[124]][_0x2b73[495]]= _0xff22x4,document[_0x2b73[112]][_0x2b73[266]](this[_0x2b73[1653]]),this[_0x2b73[1653]]= null);window[_0x2b73[879]]= mxResources[_0x2b73[203]](this[_0x2b73[2091]])|| this[_0x2b73[2091]];mxLog[_0x2b73[2110]](_0x2b73[2266],_0xff22x3)};mxGraphView[_0x2b73[202]][_0x2b73[2270]]= function(_0xff22x2){return new mxRectangleShape(_0xff22x2,_0x2b73[1391],_0x2b73[586])};mxGraphView[_0x2b73[202]][_0x2b73[2269]]= function(){var _0xff22x2=this[_0x2b73[1179]][_0x2b73[2271]]();if(null!= _0xff22x2){if(null== this[_0x2b73[1617]]|| this[_0x2b73[1617]][_0x2b73[618]]!= _0xff22x2[_0x2b73[390]]){null!= this[_0x2b73[1617]]&& this[_0x2b73[1617]][_0x2b73[515]]();var _0xff22x3= new mxRectangle(0,0,1,1);this[_0x2b73[1617]]= new mxImageShape(_0xff22x3,_0xff22x2[_0x2b73[390]]);this[_0x2b73[1617]][_0x2b73[507]]= this[_0x2b73[1179]][_0x2b73[507]];this[_0x2b73[1617]][_0x2b73[176]](this[_0x2b73[2053]]);this[_0x2b73[1617]][_0x2b73[258]]()};this[_0x2b73[2272]](this[_0x2b73[1617]],_0xff22x2)}else {null!= this[_0x2b73[1617]]&& (this[_0x2b73[1617]][_0x2b73[515]](),this[_0x2b73[1617]]= null)};this[_0x2b73[1179]][_0x2b73[2273]]?(_0xff22x3= this[_0x2b73[2274]](),null== this[_0x2b73[2275]]?(this[_0x2b73[2275]]= this[_0x2b73[2270]](_0xff22x3),this[_0x2b73[2275]][_0x2b73[255]]= this[_0x2b73[255]],this[_0x2b73[2275]][_0x2b73[1596]]= !0,this[_0x2b73[2275]][_0x2b73[507]]= this[_0x2b73[1179]][_0x2b73[507]],this[_0x2b73[2275]][_0x2b73[176]](this[_0x2b73[2053]]),this[_0x2b73[2275]][_0x2b73[258]](),mxEvent[_0x2b73[169]](this[_0x2b73[2275]][_0x2b73[252]],_0x2b73[760],mxUtils[_0x2b73[885]](this,function(_0xff22x2){this[_0x2b73[1179]][_0x2b73[761]](_0xff22x2)})),mxEvent[_0x2b73[759]](this[_0x2b73[2275]][_0x2b73[252]],mxUtils[_0x2b73[885]](this,function(_0xff22x2){this[_0x2b73[1179]][_0x2b73[758]](mxEvent.MOUSE_DOWN, new mxMouseEvent(_0xff22x2))}),mxUtils[_0x2b73[885]](this,function(_0xff22x2){null!= this[_0x2b73[1179]][_0x2b73[2276]]&& this[_0x2b73[1179]][_0x2b73[2276]][_0x2b73[2277]]()&& this[_0x2b73[1179]][_0x2b73[2276]][_0x2b73[801]]();this[_0x2b73[1179]][_0x2b73[1009]]&& !mxEvent[_0x2b73[721]](_0xff22x2)&& this[_0x2b73[1179]][_0x2b73[758]](mxEvent.MOUSE_MOVE, new mxMouseEvent(_0xff22x2))}),mxUtils[_0x2b73[885]](this,function(_0xff22x2){this[_0x2b73[1179]][_0x2b73[758]](mxEvent.MOUSE_UP, new mxMouseEvent(_0xff22x2))}))):(this[_0x2b73[2275]][_0x2b73[255]]= this[_0x2b73[255]],this[_0x2b73[2275]][_0x2b73[1562]]= _0xff22x3,this[_0x2b73[2275]][_0x2b73[258]]())):null!= this[_0x2b73[2275]]&& (this[_0x2b73[2275]][_0x2b73[515]](),this[_0x2b73[2275]]= null)};mxGraphView[_0x2b73[202]][_0x2b73[2274]]= function(){var _0xff22x2=this[_0x2b73[1179]][_0x2b73[2013]],_0xff22x3=this[_0x2b73[255]]* this[_0x2b73[1179]][_0x2b73[2012]];return new mxRectangle(this[_0x2b73[255]]* this[_0x2b73[513]][_0x2b73[235]],this[_0x2b73[255]]* this[_0x2b73[513]][_0x2b73[236]],_0xff22x2[_0x2b73[117]]* _0xff22x3,_0xff22x2[_0x2b73[119]]* _0xff22x3)};mxGraphView[_0x2b73[202]][_0x2b73[2272]]= function(_0xff22x2,_0xff22x3){_0xff22x2[_0x2b73[255]]= this[_0x2b73[255]];_0xff22x2[_0x2b73[1562]][_0x2b73[235]]= this[_0x2b73[255]]* this[_0x2b73[513]][_0x2b73[235]];_0xff22x2[_0x2b73[1562]][_0x2b73[236]]= this[_0x2b73[255]]* this[_0x2b73[513]][_0x2b73[236]];_0xff22x2[_0x2b73[1562]][_0x2b73[117]]= this[_0x2b73[255]]* _0xff22x3[_0x2b73[117]];_0xff22x2[_0x2b73[1562]][_0x2b73[119]]= this[_0x2b73[255]]* _0xff22x3[_0x2b73[119]];_0xff22x2[_0x2b73[258]]()};mxGraphView[_0x2b73[202]][_0x2b73[2267]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=this[_0x2b73[1179]][_0x2b73[502]](),_0xff22x5=this[_0x2b73[248]](_0xff22x3,!0);if(null!= _0xff22x5&& _0xff22x5[_0x2b73[2080]]){if(this[_0x2b73[1179]][_0x2b73[1714]](_0xff22x3)){if(_0xff22x3!= this[_0x2b73[1741]]&& null!= _0xff22x2){_0xff22x5[_0x2b73[2079]][_0x2b73[235]]= 0;_0xff22x5[_0x2b73[2079]][_0x2b73[236]]= 0;_0xff22x5[_0x2b73[2078]][_0x2b73[235]]= _0xff22x2[_0x2b73[2078]][_0x2b73[235]];_0xff22x5[_0x2b73[2078]][_0x2b73[236]]= _0xff22x2[_0x2b73[2078]][_0x2b73[236]];var _0xff22x9=this[_0x2b73[1179]][_0x2b73[1198]](_0xff22x3);if(null!= _0xff22x9){if(!_0xff22x4[_0x2b73[250]](_0xff22x3)){var _0xff22xa=_0xff22x9[_0x2b73[1368]]|| this[_0x2b73[2248]];_0xff22x9[_0x2b73[1500]]?(_0xff22x5[_0x2b73[2078]][_0x2b73[235]]+= _0xff22x9[_0x2b73[235]]* _0xff22x2[_0x2b73[117]]/ this[_0x2b73[255]]+ _0xff22xa[_0x2b73[235]],_0xff22x5[_0x2b73[2078]][_0x2b73[236]]+= _0xff22x9[_0x2b73[236]]* _0xff22x2[_0x2b73[119]]/ this[_0x2b73[255]]+ _0xff22xa[_0x2b73[236]]):(_0xff22x5[_0x2b73[2079]][_0x2b73[235]]= this[_0x2b73[255]]* _0xff22xa[_0x2b73[235]],_0xff22x5[_0x2b73[2079]][_0x2b73[236]]= this[_0x2b73[255]]* _0xff22xa[_0x2b73[236]],_0xff22x5[_0x2b73[2078]][_0x2b73[235]]+= _0xff22x9[_0x2b73[235]],_0xff22x5[_0x2b73[2078]][_0x2b73[236]]+= _0xff22x9[_0x2b73[236]])};_0xff22x5[_0x2b73[235]]= this[_0x2b73[255]]* (this[_0x2b73[513]][_0x2b73[235]]+ _0xff22x5[_0x2b73[2078]][_0x2b73[235]]);_0xff22x5[_0x2b73[236]]= this[_0x2b73[255]]* (this[_0x2b73[513]][_0x2b73[236]]+ _0xff22x5[_0x2b73[2078]][_0x2b73[236]]);_0xff22x5[_0x2b73[117]]= this[_0x2b73[255]]* _0xff22x9[_0x2b73[117]];_0xff22x5[_0x2b73[119]]= this[_0x2b73[255]]* _0xff22x9[_0x2b73[119]];if(_0xff22x4[_0x2b73[1193]](_0xff22x3)){if(_0xff22x9[_0x2b73[1500]]&& (_0xff22xa= mxUtils[_0x2b73[431]](_0xff22x2[_0x2b73[124]][mxConstants[_0x2b73[2278]]]|| _0x2b73[468]),0!= _0xff22xa)){var _0xff22x9=Math[_0x2b73[426]](_0xff22xa),_0xff22xa=Math[_0x2b73[427]](_0xff22xa),_0xff22x12= new mxPoint(_0xff22x5[_0x2b73[241]](),_0xff22x5[_0x2b73[242]]()),_0xff22x13= new mxPoint(_0xff22x2[_0x2b73[241]](),_0xff22x2[_0x2b73[242]]()),_0xff22x9=mxUtils[_0x2b73[432]](_0xff22x12,_0xff22x9,_0xff22xa,_0xff22x13);_0xff22x5[_0x2b73[235]]= _0xff22x9[_0x2b73[235]]- _0xff22x5[_0x2b73[117]]/ 2;_0xff22x5[_0x2b73[236]]= _0xff22x9[_0x2b73[236]]- _0xff22x5[_0x2b73[119]]/ 2};this[_0x2b73[2279]](_0xff22x5)}}}}else {this[_0x2b73[2265]](_0xff22x3)};_0xff22xa= this[_0x2b73[1179]][_0x2b73[2280]](_0xff22x3);null!= _0xff22xa&& (_0xff22x5[_0x2b73[2078]][_0x2b73[235]]+= _0xff22xa[_0x2b73[235]],_0xff22x5[_0x2b73[2078]][_0x2b73[236]]+= _0xff22xa[_0x2b73[236]])};if(null!= _0xff22x5&& (!this[_0x2b73[1179]][_0x2b73[1742]](_0xff22x3)|| _0xff22x3== this[_0x2b73[1741]])){_0xff22x9= _0xff22x4[_0x2b73[262]](_0xff22x3);for(_0xff22xa= 0;_0xff22xa< _0xff22x9;_0xff22xa++){_0xff22x12= _0xff22x4[_0x2b73[263]](_0xff22x3,_0xff22xa),this[_0x2b73[2267]](_0xff22x5,_0xff22x12)}}};mxGraphView[_0x2b73[202]][_0x2b73[2279]]= function(_0xff22x2){var _0xff22x3=mxUtils[_0x2b73[433]](_0xff22x2[_0x2b73[124]],mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER);_0xff22x3== mxConstants[_0x2b73[2132]]?_0xff22x2[_0x2b73[2079]][_0x2b73[235]]-= _0xff22x2[_0x2b73[117]]:_0xff22x3== mxConstants[_0x2b73[480]]&& (_0xff22x2[_0x2b73[2079]][_0x2b73[235]]+= _0xff22x2[_0x2b73[117]]);_0xff22x3= mxUtils[_0x2b73[433]](_0xff22x2[_0x2b73[124]],mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE);_0xff22x3== mxConstants[_0x2b73[1687]]?_0xff22x2[_0x2b73[2079]][_0x2b73[236]]-= _0xff22x2[_0x2b73[119]]:_0xff22x3== mxConstants[_0x2b73[482]]&& (_0xff22x2[_0x2b73[2079]][_0x2b73[236]]+= _0xff22x2[_0x2b73[119]])};mxGraphView[_0x2b73[202]][_0x2b73[2268]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=this[_0x2b73[1179]][_0x2b73[502]](),_0xff22x5=this[_0x2b73[248]](_0xff22x3),_0xff22x9=null;if(null!= _0xff22x5){if(_0xff22x5[_0x2b73[2080]]){var _0xff22xa=this[_0x2b73[1179]][_0x2b73[1198]](_0xff22x3);if(null!= _0xff22xa&& _0xff22x4[_0x2b73[250]](_0xff22x3)){var _0xff22x12=this[_0x2b73[248]](this[_0x2b73[1710]](_0xff22x3,!0));_0xff22x5[_0x2b73[2090]](_0xff22x12,!0);if(null!= _0xff22x12&& _0xff22x4[_0x2b73[250]](_0xff22x12[_0x2b73[246]])&& !_0xff22x4[_0x2b73[1720]](_0xff22x12[_0x2b73[246]],_0xff22x3)){var _0xff22x13=this[_0x2b73[248]](_0xff22x4[_0x2b73[1197]](_0xff22x12[_0x2b73[246]]));this[_0x2b73[2268]](_0xff22x13,_0xff22x12[_0x2b73[246]])};var _0xff22x14=this[_0x2b73[248]](this[_0x2b73[1710]](_0xff22x3,!1));_0xff22x5[_0x2b73[2090]](_0xff22x14,!1);null!= _0xff22x14&& (_0xff22x4[_0x2b73[250]](_0xff22x14[_0x2b73[246]])&& !_0xff22x4[_0x2b73[1720]](_0xff22x14[_0x2b73[246]],_0xff22x3))&& (_0xff22x13= this[_0x2b73[248]](_0xff22x4[_0x2b73[1197]](_0xff22x14[_0x2b73[246]])),this[_0x2b73[2268]](_0xff22x13,_0xff22x14[_0x2b73[246]]));this[_0x2b73[2281]](_0xff22x5,_0xff22x12,_0xff22x14);this[_0x2b73[2282]](_0xff22x5,_0xff22xa[_0x2b73[1525]],_0xff22x12,_0xff22x14);this[_0x2b73[2283]](_0xff22x5,_0xff22x12,_0xff22x14);this[_0x2b73[2284]](_0xff22x5);this[_0x2b73[2285]](_0xff22x5)}else {null!= _0xff22xa&& (_0xff22xa[_0x2b73[1500]]&& null!= _0xff22x2&& _0xff22x4[_0x2b73[250]](_0xff22x2[_0x2b73[246]]))&& (_0xff22xa= this[_0x2b73[245]](_0xff22x2,_0xff22xa),null!= _0xff22xa&& (_0xff22x5[_0x2b73[235]]= _0xff22xa[_0x2b73[235]],_0xff22x5[_0x2b73[236]]= _0xff22xa[_0x2b73[236]],_0xff22xa[_0x2b73[235]]= _0xff22xa[_0x2b73[235]]/ this[_0x2b73[255]]- this[_0x2b73[513]][_0x2b73[235]],_0xff22xa[_0x2b73[236]]= _0xff22xa[_0x2b73[236]]/ this[_0x2b73[255]]- this[_0x2b73[513]][_0x2b73[236]],_0xff22x5[_0x2b73[2078]]= _0xff22xa,this[_0x2b73[2286]](_0xff22x2,_0xff22x5)))};_0xff22x5[_0x2b73[2080]]= !1;_0xff22x3!= this[_0x2b73[1741]]&& this[_0x2b73[1179]][_0x2b73[259]][_0x2b73[258]](_0xff22x5,!1,this[_0x2b73[2287]]())};if(_0xff22x4[_0x2b73[250]](_0xff22x3)|| _0xff22x4[_0x2b73[1193]](_0xff22x3)){null!= _0xff22x5[_0x2b73[253]]&& null!= _0xff22x5[_0x2b73[253]][_0x2b73[1563]]&& (_0xff22x9= _0xff22x5[_0x2b73[253]][_0x2b73[1563]][_0x2b73[238]]()),null!= _0xff22x5[_0x2b73[963]]&& !this[_0x2b73[1179]][_0x2b73[2130]](_0xff22x5[_0x2b73[246]])&& null!= _0xff22x5[_0x2b73[963]][_0x2b73[1563]]&& (null!= _0xff22x9?_0xff22x9[_0x2b73[99]](_0xff22x5[_0x2b73[963]][_0x2b73[1563]]):_0xff22x9= _0xff22x5[_0x2b73[963]][_0x2b73[1563]][_0x2b73[238]]())}};if(null!= _0xff22x5&& (!this[_0x2b73[1179]][_0x2b73[1742]](_0xff22x3)|| _0xff22x3== this[_0x2b73[1741]])){_0xff22xa= _0xff22x4[_0x2b73[262]](_0xff22x3);for(_0xff22x12= 0;_0xff22x12< _0xff22xa;_0xff22x12++){_0xff22x13= _0xff22x4[_0x2b73[263]](_0xff22x3,_0xff22x12),_0xff22x13= this[_0x2b73[2268]](_0xff22x5,_0xff22x13),null!= _0xff22x13&& (null== _0xff22x9?_0xff22x9= _0xff22x13:_0xff22x9[_0x2b73[99]](_0xff22x13))}};return _0xff22x9};mxGraphView[_0x2b73[202]][_0x2b73[2286]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=_0xff22x3[_0x2b73[246]];if(!this[_0x2b73[1179]][_0x2b73[1742]](_0xff22x4)|| _0xff22x4== this[_0x2b73[1741]]){for(var _0xff22x5=this[_0x2b73[1179]][_0x2b73[502]](),_0xff22x9=_0xff22x5[_0x2b73[262]](_0xff22x4),_0xff22xa=0;_0xff22xa< _0xff22x9;_0xff22xa++){this[_0x2b73[2267]](_0xff22x3,_0xff22x5[_0x2b73[263]](_0xff22x4,_0xff22xa))}}};mxGraphView[_0x2b73[202]][_0x2b73[2281]]= function(_0xff22x2,_0xff22x3,_0xff22x4){this[_0x2b73[2289]](_0xff22x2,_0xff22x3,!0,this[_0x2b73[1179]][_0x2b73[2288]](_0xff22x2,_0xff22x3,!0));this[_0x2b73[2289]](_0xff22x2,_0xff22x4,!1,this[_0x2b73[1179]][_0x2b73[2288]](_0xff22x2,_0xff22x4,!1))};mxGraphView[_0x2b73[202]][_0x2b73[2289]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){var _0xff22x9=null;null!= _0xff22x5&& (_0xff22x9= this[_0x2b73[1179]][_0x2b73[2290]](_0xff22x3,_0xff22x5));if(null== _0xff22x9&& null== _0xff22x3){_0xff22x3= this[_0x2b73[255]];_0xff22x5= this[_0x2b73[513]];var _0xff22xa=_0xff22x2[_0x2b73[2078]],_0xff22x9=this[_0x2b73[1179]][_0x2b73[1198]](_0xff22x2[_0x2b73[246]])[_0x2b73[2006]](_0xff22x4);null!= _0xff22x9&& (_0xff22x9= new mxPoint(_0xff22x3* (_0xff22x5[_0x2b73[235]]+ _0xff22x9[_0x2b73[235]]+ _0xff22xa[_0x2b73[235]]),_0xff22x3* (_0xff22x5[_0x2b73[236]]+ _0xff22x9[_0x2b73[236]]+ _0xff22xa[_0x2b73[236]])))};_0xff22x2[_0x2b73[2088]](_0xff22x9,_0xff22x4)};mxGraphView[_0x2b73[202]][_0x2b73[2282]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){if(null!= _0xff22x2){var _0xff22x9=[];_0xff22x9[_0x2b73[207]](_0xff22x2[_0x2b73[439]][0]);var _0xff22xa=this[_0x2b73[2291]](_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5);if(null!= _0xff22xa){_0xff22x4= this[_0x2b73[2292]](_0xff22x2,_0xff22x4,!0),_0xff22x5= this[_0x2b73[2292]](_0xff22x2,_0xff22x5,!1),_0xff22xa(_0xff22x2,_0xff22x4,_0xff22x5,_0xff22x3,_0xff22x9)}else {if(null!= _0xff22x3){for(_0xff22xa= 0;_0xff22xa< _0xff22x3[_0x2b73[67]];_0xff22xa++){null!= _0xff22x3[_0xff22xa]&& (_0xff22x5= mxUtils[_0x2b73[238]](_0xff22x3[_0xff22xa]),_0xff22x9[_0x2b73[207]](this[_0x2b73[2229]](_0xff22x2,_0xff22x5)))}}};_0xff22x3= _0xff22x2[_0x2b73[439]];_0xff22x9[_0x2b73[207]](_0xff22x3[_0xff22x3[_0x2b73[67]]- 1]);_0xff22x2[_0x2b73[439]]= _0xff22x9}};mxGraphView[_0x2b73[202]][_0x2b73[2229]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=_0xff22x2[_0x2b73[2078]];return new mxPoint(this[_0x2b73[255]]* (_0xff22x3[_0x2b73[235]]+ this[_0x2b73[513]][_0x2b73[235]]+ _0xff22x4[_0x2b73[235]]),this[_0x2b73[255]]* (_0xff22x3[_0x2b73[236]]+ this[_0x2b73[513]][_0x2b73[236]]+ _0xff22x4[_0x2b73[236]]))};mxGraphView[_0x2b73[202]][_0x2b73[2291]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){_0xff22x2= null!= _0xff22x4&& _0xff22x4== _0xff22x5?mxUtils[_0x2b73[433]](_0xff22x2[_0x2b73[124]],mxConstants.STYLE_LOOP,this[_0x2b73[1179]][_0x2b73[2293]]):!mxUtils[_0x2b73[433]](_0xff22x2[_0x2b73[124]],mxConstants.STYLE_NOEDGESTYLE,!1)?_0xff22x2[_0x2b73[124]][mxConstants[_0x2b73[2294]]]:null;_0x2b73[1516]== typeof _0xff22x2&& (_0xff22x3= mxStyleRegistry[_0x2b73[433]](_0xff22x2),null== _0xff22x3&& this[_0x2b73[2295]]()&& (_0xff22x3= mxUtils[_0x2b73[1545]](_0xff22x2)),_0xff22x2= _0xff22x3);return _0x2b73[279]== typeof _0xff22x2?_0xff22x2:null};mxGraphView[_0x2b73[202]][_0x2b73[2283]]= function(_0xff22x2,_0xff22x3,_0xff22x4){var _0xff22x5=_0xff22x2[_0x2b73[439]],_0xff22x9=_0xff22x5[0];null== _0xff22x5[_0xff22x5[_0x2b73[67]]- 1]&& null!= _0xff22x4&& this[_0x2b73[2296]](_0xff22x2,_0xff22x4,_0xff22x3,!1);null== _0xff22x9&& null!= _0xff22x3&& this[_0x2b73[2296]](_0xff22x2,_0xff22x3,_0xff22x4,!0)};mxGraphView[_0x2b73[202]][_0x2b73[2296]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){_0xff22x3= this[_0x2b73[2292]](_0xff22x2,_0xff22x3,_0xff22x5);var _0xff22x9=this[_0x2b73[2297]](_0xff22x2,_0xff22x4,_0xff22x5),_0xff22xa=this[_0x2b73[1179]][_0x2b73[2298]](_0xff22x2);_0xff22x4= mxUtils[_0x2b73[431]](Number(_0xff22x3[_0x2b73[124]][mxConstants[_0x2b73[2278]]]|| _0x2b73[468]));var _0xff22x12= new mxPoint(_0xff22x3[_0x2b73[241]](),_0xff22x3[_0x2b73[242]]());if(0!= _0xff22x4){var _0xff22x13=Math[_0x2b73[426]](-_0xff22x4),_0xff22x14=Math[_0x2b73[427]](-_0xff22x4),_0xff22x9=mxUtils[_0x2b73[432]](_0xff22x9,_0xff22x13,_0xff22x14,_0xff22x12)};_0xff22x13= parseFloat(_0xff22x2[_0x2b73[124]][mxConstants[_0x2b73[2299]]]|| 0);_0xff22x13+= parseFloat(_0xff22x2[_0x2b73[124]][_0xff22x5?mxConstants[_0x2b73[2300]]:mxConstants[_0x2b73[2301]]]|| 0);_0xff22x3= this[_0x2b73[2302]](_0xff22x3,_0xff22x9,0== _0xff22x4&& _0xff22xa,_0xff22x13);0!= _0xff22x4&& (_0xff22x13= Math[_0x2b73[426]](_0xff22x4),_0xff22x14= Math[_0x2b73[427]](_0xff22x4),_0xff22x3= mxUtils[_0x2b73[432]](_0xff22x3,_0xff22x13,_0xff22x14,_0xff22x12));_0xff22x2[_0x2b73[2088]](_0xff22x3,_0xff22x5)};mxGraphView[_0x2b73[202]][_0x2b73[2292]]= function(_0xff22x2,_0xff22x3,_0xff22x4){_0xff22x2= mxUtils[_0x2b73[433]](_0xff22x2[_0x2b73[124]],_0xff22x4?mxConstants[_0x2b73[2303]]:mxConstants[_0x2b73[2304]]);null!= _0xff22x2&& (_0xff22x2= this[_0x2b73[248]](this[_0x2b73[1179]][_0x2b73[502]]()[_0x2b73[736]](_0xff22x2)),null!= _0xff22x2&& (_0xff22x3= _0xff22x2));return _0xff22x3};mxGraphView[_0x2b73[202]][_0x2b73[2302]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){var _0xff22x9=null;if(null!= _0xff22x2){var _0xff22xa=this[_0x2b73[2305]](_0xff22x2);if(null!= _0xff22xa&& null!= _0xff22x3&& (_0xff22x5= this[_0x2b73[2087]](_0xff22x2,_0xff22x5),0< _0xff22x5[_0x2b73[117]]|| 0< _0xff22x5[_0x2b73[119]])){_0xff22x9= _0xff22xa(_0xff22x5,_0xff22x2,_0xff22x3,_0xff22x4)};null== _0xff22x9&& (_0xff22x9= this[_0x2b73[245]](_0xff22x2))};return _0xff22x9};mxGraphView[_0x2b73[202]][_0x2b73[2230]]= function(_0xff22x2){var _0xff22x3=null!= _0xff22x2[_0x2b73[124]]?parseFloat(_0xff22x2[_0x2b73[124]][mxConstants[_0x2b73[2306]]])|| 0:0;return _0xff22x2[_0x2b73[241]]()+ _0xff22x3* _0xff22x2[_0x2b73[117]]};mxGraphView[_0x2b73[202]][_0x2b73[2228]]= function(_0xff22x2){var _0xff22x3=null!= _0xff22x2[_0x2b73[124]]?parseFloat(_0xff22x2[_0x2b73[124]][mxConstants[_0x2b73[2307]]])|| 0:0;return _0xff22x2[_0x2b73[242]]()+ _0xff22x3* _0xff22x2[_0x2b73[119]]};mxGraphView[_0x2b73[202]][_0x2b73[2087]]= function(_0xff22x2,_0xff22x3){_0xff22x3= null!= _0xff22x3?_0xff22x3:0;null!= _0xff22x2&& (_0xff22x3+= parseFloat(_0xff22x2[_0x2b73[124]][mxConstants[_0x2b73[2299]]]|| 0));return _0xff22x2[_0x2b73[2087]](_0xff22x3* this[_0x2b73[255]])};mxGraphView[_0x2b73[202]][_0x2b73[2305]]= function(_0xff22x2){_0xff22x2= _0xff22x2[_0x2b73[124]][mxConstants[_0x2b73[2061]]];if(_0x2b73[1516]== typeof _0xff22x2){var _0xff22x3=mxStyleRegistry[_0x2b73[433]](_0xff22x2);null== _0xff22x3&& this[_0x2b73[2295]]()&& (_0xff22x3= mxUtils[_0x2b73[1545]](_0xff22x2));_0xff22x2= _0xff22x3};return _0x2b73[279]== typeof _0xff22x2?_0xff22x2:null};mxGraphView[_0x2b73[202]][_0x2b73[2297]]= function(_0xff22x2,_0xff22x3,_0xff22x4){_0xff22x2= _0xff22x2[_0x2b73[439]];var _0xff22x5=null;if(null!= _0xff22x2&& (_0xff22x4|| 2< _0xff22x2[_0x2b73[67]]|| null== _0xff22x3)){_0xff22x5= _0xff22x2[_0x2b73[67]],_0xff22x5= _0xff22x2[_0xff22x4?Math[_0x2b73[243]](1,_0xff22x5- 1):Math[_0x2b73[160]](0,_0xff22x5- 2)]};null== _0xff22x5&& null!= _0xff22x3&& (_0xff22x5= new mxPoint(_0xff22x3[_0x2b73[241]](),_0xff22x3[_0x2b73[242]]()));return _0xff22x5};mxGraphView[_0x2b73[202]][_0x2b73[1710]]= function(_0xff22x2,_0xff22x3){for(var _0xff22x4=this[_0x2b73[1179]][_0x2b73[502]](),_0xff22x5=_0xff22x4[_0x2b73[1709]](_0xff22x2,_0xff22x3),_0xff22x9=_0xff22x5;null!= _0xff22x5&& _0xff22x5!= this[_0x2b73[1741]];){if(!this[_0x2b73[1179]][_0x2b73[1714]](_0xff22x9)|| this[_0x2b73[1179]][_0x2b73[1742]](_0xff22x5)){_0xff22x9= _0xff22x5};_0xff22x5= _0xff22x4[_0x2b73[1197]](_0xff22x5)};_0xff22x4[_0x2b73[1197]](_0xff22x9)== _0xff22x4[_0x2b73[501]]()&& (_0xff22x9= null);return _0xff22x9};mxGraphView[_0x2b73[202]][_0x2b73[2284]]= function(_0xff22x2){var _0xff22x3=_0xff22x2[_0x2b73[439]];_0xff22x2[_0x2b73[67]]= 0;if(null!= _0xff22x3&& 0< _0xff22x3[_0x2b73[67]]){var _0xff22x4=_0xff22x3[0],_0xff22x5=_0xff22x3[_0xff22x3[_0x2b73[67]]- 1];if(null== _0xff22x4|| null== _0xff22x5){_0xff22x2[_0x2b73[246]]!= this[_0x2b73[1741]]&& this[_0x2b73[200]](_0xff22x2[_0x2b73[246]],!0)}else {if(_0xff22x4[_0x2b73[235]]!= _0xff22x5[_0x2b73[235]]|| _0xff22x4[_0x2b73[236]]!= _0xff22x5[_0x2b73[236]]){var _0xff22x9=_0xff22x5[_0x2b73[235]]- _0xff22x4[_0x2b73[235]],_0xff22xa=_0xff22x5[_0x2b73[236]]- _0xff22x4[_0x2b73[236]];_0xff22x2[_0x2b73[2085]]= Math[_0x2b73[428]](_0xff22x9* _0xff22x9+ _0xff22xa* _0xff22xa)}else {_0xff22x2[_0x2b73[2085]]= 0};var _0xff22x5=0,_0xff22x12=[],_0xff22xa=_0xff22x4;if(null!= _0xff22xa){for(var _0xff22x4=_0xff22xa[_0x2b73[235]],_0xff22x13=_0xff22xa[_0x2b73[236]],_0xff22x14=_0xff22x4,_0xff22x15=_0xff22x13,_0xff22x16=1;_0xff22x16< _0xff22x3[_0x2b73[67]];_0xff22x16++){var _0xff22x17=_0xff22x3[_0xff22x16];null!= _0xff22x17&& (_0xff22x9= _0xff22xa[_0x2b73[235]]- _0xff22x17[_0x2b73[235]],_0xff22xa= _0xff22xa[_0x2b73[236]]- _0xff22x17[_0x2b73[236]],_0xff22x9= Math[_0x2b73[428]](_0xff22x9* _0xff22x9+ _0xff22xa* _0xff22xa),_0xff22x12[_0x2b73[207]](_0xff22x9),_0xff22x5+= _0xff22x9,_0xff22xa= _0xff22x17,_0xff22x4= Math[_0x2b73[243]](_0xff22xa[_0x2b73[235]],_0xff22x4),_0xff22x13= Math[_0x2b73[243]](_0xff22xa[_0x2b73[236]],_0xff22x13),_0xff22x14= Math[_0x2b73[160]](_0xff22xa[_0x2b73[235]],_0xff22x14),_0xff22x15= Math[_0x2b73[160]](_0xff22xa[_0x2b73[236]],_0xff22x15))};_0xff22x2[_0x2b73[67]]= _0xff22x5;_0xff22x2[_0x2b73[2086]]= _0xff22x12;_0xff22x2[_0x2b73[235]]= _0xff22x4;_0xff22x2[_0x2b73[236]]= _0xff22x13;_0xff22x2[_0x2b73[117]]= Math[_0x2b73[160]](1,_0xff22x14- _0xff22x4);_0xff22x2[_0x2b73[119]]= Math[_0x2b73[160]](1,_0xff22x15- _0xff22x13)}}}};mxGraphView[_0x2b73[202]][_0x2b73[245]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=_0xff22x2[_0x2b73[241]](),_0xff22x5=_0xff22x2[_0x2b73[242]]();if(null!= _0xff22x2[_0x2b73[2086]]&& (null== _0xff22x3|| _0xff22x3[_0x2b73[1500]])){for(var _0xff22x9=_0xff22x2[_0x2b73[439]][_0x2b73[67]],_0xff22xa=((null!= _0xff22x3?_0xff22x3[_0x2b73[235]]/ 2:0)+ 0.5)* _0xff22x2[_0x2b73[67]],_0xff22x12=_0xff22x2[_0x2b73[2086]][0],_0xff22x13=0,_0xff22x14=1;_0xff22xa> _0xff22x13+ _0xff22x12&& _0xff22x14< _0xff22x9- 1;){_0xff22x13+= _0xff22x12,_0xff22x12= _0xff22x2[_0x2b73[2086]][_0xff22x14++]};_0xff22x9= 0== _0xff22x12?0:(_0xff22xa- _0xff22x13)/ _0xff22x12;_0xff22xa= _0xff22x2[_0x2b73[439]][_0xff22x14- 1];_0xff22x14= _0xff22x2[_0x2b73[439]][_0xff22x14];if(null!= _0xff22xa&& null!= _0xff22x14){_0xff22x13= _0xff22x4= _0xff22x5= 0;if(null!= _0xff22x3){var _0xff22x5=_0xff22x3[_0x2b73[236]],_0xff22x15=_0xff22x3[_0x2b73[1368]];null!= _0xff22x15&& (_0xff22x4= _0xff22x15[_0x2b73[235]],_0xff22x13= _0xff22x15[_0x2b73[236]])};_0xff22x15= _0xff22x14[_0x2b73[235]]- _0xff22xa[_0x2b73[235]];_0xff22x14= _0xff22x14[_0x2b73[236]]- _0xff22xa[_0x2b73[236]];_0xff22x4= _0xff22xa[_0x2b73[235]]+ _0xff22x15* _0xff22x9+ ((0== _0xff22x12?0:_0xff22x14/ _0xff22x12)* _0xff22x5+ _0xff22x4)* this[_0x2b73[255]];_0xff22x5= _0xff22xa[_0x2b73[236]]+ _0xff22x14* _0xff22x9- ((0== _0xff22x12?0:_0xff22x15/ _0xff22x12)* _0xff22x5- _0xff22x13)* this[_0x2b73[255]]}}else {null!= _0xff22x3&& (_0xff22x15= _0xff22x3[_0x2b73[1368]],null!= _0xff22x15&& (_0xff22x4+= _0xff22x15[_0x2b73[235]],_0xff22x5+= _0xff22x15[_0x2b73[236]]))};return new mxPoint(_0xff22x4,_0xff22x5)};mxGraphView[_0x2b73[202]][_0x2b73[2308]]= function(_0xff22x2,_0xff22x3,_0xff22x4){var _0xff22x5=this[_0x2b73[1179]][_0x2b73[502]]()[_0x2b73[1721]](_0xff22x2[_0x2b73[246]]);if(null!= _0xff22x5){var _0xff22x9=_0xff22x2[_0x2b73[439]][_0x2b73[67]];if(_0xff22x5[_0x2b73[1500]]&& 1< _0xff22x9){for(var _0xff22x5=_0xff22x2[_0x2b73[67]],_0xff22xa=_0xff22x2[_0x2b73[2086]],_0xff22x12=_0xff22x2[_0x2b73[439]][0],_0xff22x13=_0xff22x2[_0x2b73[439]][1],_0xff22x14=mxUtils[_0x2b73[440]](_0xff22x12[_0x2b73[235]],_0xff22x12[_0x2b73[236]],_0xff22x13[_0x2b73[235]],_0xff22x13[_0x2b73[236]],_0xff22x3,_0xff22x4),_0xff22x15=0,_0xff22x16=0,_0xff22x17=0,_0xff22x18=2;_0xff22x18< _0xff22x9;_0xff22x18++){_0xff22x16+= _0xff22xa[_0xff22x18- 2],_0xff22x13= _0xff22x2[_0x2b73[439]][_0xff22x18],_0xff22x12= mxUtils[_0x2b73[440]](_0xff22x12[_0x2b73[235]],_0xff22x12[_0x2b73[236]],_0xff22x13[_0x2b73[235]],_0xff22x13[_0x2b73[236]],_0xff22x3,_0xff22x4),_0xff22x12<= _0xff22x14&& (_0xff22x14= _0xff22x12,_0xff22x15= _0xff22x18- 1,_0xff22x17= _0xff22x16),_0xff22x12= _0xff22x13};_0xff22x9= _0xff22xa[_0xff22x15];_0xff22x12= _0xff22x2[_0x2b73[439]][_0xff22x15];_0xff22x13= _0xff22x2[_0x2b73[439]][_0xff22x15+ 1];_0xff22x14= _0xff22x13[_0x2b73[235]];_0xff22xa= _0xff22x13[_0x2b73[236]];_0xff22x2= _0xff22x12[_0x2b73[235]]- _0xff22x14;_0xff22x15= _0xff22x12[_0x2b73[236]]- _0xff22xa;_0xff22x14= _0xff22x3- _0xff22x14;_0xff22xa= _0xff22x4- _0xff22xa;_0xff22x14= _0xff22x2- _0xff22x14;_0xff22xa= _0xff22x15- _0xff22xa;_0xff22xa= _0xff22x14* _0xff22x2+ _0xff22xa* _0xff22x15;_0xff22x2= Math[_0x2b73[428]](0>= _0xff22xa?0:_0xff22xa* _0xff22xa/ (_0xff22x2* _0xff22x2+ _0xff22x15* _0xff22x15));_0xff22x2> _0xff22x9&& (_0xff22x2= _0xff22x9);_0xff22x9= Math[_0x2b73[428]](mxUtils[_0x2b73[440]](_0xff22x12[_0x2b73[235]],_0xff22x12[_0x2b73[236]],_0xff22x13[_0x2b73[235]],_0xff22x13[_0x2b73[236]],_0xff22x3,_0xff22x4));-1== mxUtils[_0x2b73[2309]](_0xff22x12[_0x2b73[235]],_0xff22x12[_0x2b73[236]],_0xff22x13[_0x2b73[235]],_0xff22x13[_0x2b73[236]],_0xff22x3,_0xff22x4)&& (_0xff22x9= -_0xff22x9);return new mxPoint(-2* ((_0xff22x5/ 2- _0xff22x17- _0xff22x2)/ _0xff22x5),_0xff22x9/ this[_0x2b73[255]])}};return new mxPoint};mxGraphView[_0x2b73[202]][_0x2b73[2285]]= function(_0xff22x2){var _0xff22x3=_0xff22x2[_0x2b73[439]];_0xff22x2[_0x2b73[2079]][_0x2b73[235]]= _0xff22x2[_0x2b73[241]]();_0xff22x2[_0x2b73[2079]][_0x2b73[236]]= _0xff22x2[_0x2b73[242]]();if(null!= _0xff22x3&& 0< _0xff22x3[_0x2b73[67]]&& null!= _0xff22x2[_0x2b73[2086]]){var _0xff22x4=this[_0x2b73[1179]][_0x2b73[1198]](_0xff22x2[_0x2b73[246]]);if(_0xff22x4[_0x2b73[1500]]){var _0xff22x5=this[_0x2b73[245]](_0xff22x2,_0xff22x4);null!= _0xff22x5&& (_0xff22x2[_0x2b73[2079]]= _0xff22x5)}else {var _0xff22x5=_0xff22x3[0],_0xff22x9=_0xff22x3[_0xff22x3[_0x2b73[67]]- 1];if(null!= _0xff22x5&& null!= _0xff22x9){var _0xff22x3=_0xff22x9[_0x2b73[235]]- _0xff22x5[_0x2b73[235]],_0xff22xa=_0xff22x9[_0x2b73[236]]- _0xff22x5[_0x2b73[236]],_0xff22x12=_0xff22x9= 0,_0xff22x4=_0xff22x4[_0x2b73[1368]];null!= _0xff22x4&& (_0xff22x9= _0xff22x4[_0x2b73[235]],_0xff22x12= _0xff22x4[_0x2b73[236]]);_0xff22x4= _0xff22x5[_0x2b73[236]]+ _0xff22xa/ 2+ _0xff22x12* this[_0x2b73[255]];_0xff22x2[_0x2b73[2079]][_0x2b73[235]]= _0xff22x5[_0x2b73[235]]+ _0xff22x3/ 2+ _0xff22x9* this[_0x2b73[255]];_0xff22x2[_0x2b73[2079]][_0x2b73[236]]= _0xff22x4}}}};mxGraphView[_0x2b73[202]][_0x2b73[248]]= function(_0xff22x2,_0xff22x3){_0xff22x3= _0xff22x3|| !1;var _0xff22x4=null;null!= _0xff22x2&& (_0xff22x4= this[_0x2b73[1214]][_0x2b73[203]](_0xff22x2),this[_0x2b73[1179]][_0x2b73[1714]](_0xff22x2)&& (null== _0xff22x4&& _0xff22x3&& this[_0x2b73[1179]][_0x2b73[1714]](_0xff22x2)?(_0xff22x4= this[_0x2b73[1230]](_0xff22x2),this[_0x2b73[1214]][_0x2b73[204]](_0xff22x2,_0xff22x4)):_0xff22x3&& (null!= _0xff22x4&& this[_0x2b73[2255]])&& (_0xff22x4[_0x2b73[124]]= this[_0x2b73[1179]][_0x2b73[1705]](_0xff22x2))));return _0xff22x4};mxGraphView[_0x2b73[202]][_0x2b73[2287]]= function(){return this[_0x2b73[2254]]};mxGraphView[_0x2b73[202]][_0x2b73[2310]]= function(_0xff22x2){this[_0x2b73[2254]]= _0xff22x2};mxGraphView[_0x2b73[202]][_0x2b73[2295]]= function(){return this[_0x2b73[2251]]};mxGraphView[_0x2b73[202]][_0x2b73[2311]]= function(_0xff22x2){this[_0x2b73[2251]]= _0xff22x2};mxGraphView[_0x2b73[202]][_0x2b73[2312]]= function(){return this[_0x2b73[1214]]};mxGraphView[_0x2b73[202]][_0x2b73[1517]]= function(_0xff22x2){this[_0x2b73[1214]]= _0xff22x2};mxGraphView[_0x2b73[202]][_0x2b73[2313]]= function(_0xff22x2){if(null== _0xff22x2){return this[_0x2b73[1214]]};for(var _0xff22x3=[],_0xff22x4=0;_0xff22x4< _0xff22x2[_0x2b73[67]];_0xff22x4++){var _0xff22x5=this[_0x2b73[248]](_0xff22x2[_0xff22x4]);null!= _0xff22x5&& _0xff22x3[_0x2b73[207]](_0xff22x5)};return _0xff22x3};mxGraphView[_0x2b73[202]][_0x2b73[2265]]= function(_0xff22x2){var _0xff22x3=null;null!= _0xff22x2&& (_0xff22x3= this[_0x2b73[1214]][_0x2b73[205]](_0xff22x2),null!= _0xff22x3&& (this[_0x2b73[1179]][_0x2b73[259]][_0x2b73[515]](_0xff22x3),_0xff22x3[_0x2b73[515]]()));return _0xff22x3};mxGraphView[_0x2b73[202]][_0x2b73[1230]]= function(_0xff22x2){var _0xff22x3=this[_0x2b73[1179]][_0x2b73[1705]](_0xff22x2);_0xff22x2= new mxCellState(this,_0xff22x2,_0xff22x3);this[_0x2b73[1179]][_0x2b73[259]][_0x2b73[2155]](_0xff22x2,this[_0x2b73[2287]]());return _0xff22x2};mxGraphView[_0x2b73[202]][_0x2b73[2051]]= function(){return this[_0x2b73[510]]};mxGraphView[_0x2b73[202]][_0x2b73[2052]]= function(){return this[_0x2b73[2053]]};mxGraphView[_0x2b73[202]][_0x2b73[2024]]= function(){return this[_0x2b73[505]]};mxGraphView[_0x2b73[202]][_0x2b73[1524]]= function(){return this[_0x2b73[506]]};mxGraphView[_0x2b73[202]][_0x2b73[2314]]= function(_0xff22x2){_0xff22x2= mxEvent[_0x2b73[728]](_0xff22x2);return _0xff22x2== this[_0x2b73[1179]][_0x2b73[526]]|| _0xff22x2[_0x2b73[265]]== this[_0x2b73[2053]]|| null!= _0xff22x2[_0x2b73[265]]&& _0xff22x2[_0x2b73[265]][_0x2b73[265]]== this[_0x2b73[2053]]|| _0xff22x2== this[_0x2b73[510]][_0x2b73[265]]|| _0xff22x2== this[_0x2b73[510]]|| _0xff22x2== this[_0x2b73[2053]]|| _0xff22x2== this[_0x2b73[505]]|| _0xff22x2== this[_0x2b73[506]]};mxGraphView[_0x2b73[202]][_0x2b73[2315]]= function(_0xff22x2){var _0xff22x3=mxUtils[_0x2b73[445]](this[_0x2b73[1179]][_0x2b73[526]]);_0xff22x2= new mxPoint(_0xff22x2[_0x2b73[782]]- _0xff22x3[_0x2b73[235]],_0xff22x2[_0x2b73[784]]- _0xff22x3[_0x2b73[236]]);var _0xff22x3=this[_0x2b73[1179]][_0x2b73[526]][_0x2b73[359]],_0xff22x4=this[_0x2b73[1179]][_0x2b73[526]][_0x2b73[159]];if(_0xff22x3> _0xff22x4&& _0xff22x2[_0x2b73[235]]> _0xff22x4+ 2&& _0xff22x2[_0x2b73[235]]<= _0xff22x3){return !0};_0xff22x3= this[_0x2b73[1179]][_0x2b73[526]][_0x2b73[167]];_0xff22x4= this[_0x2b73[1179]][_0x2b73[526]][_0x2b73[157]];return _0xff22x3> _0xff22x4&& _0xff22x2[_0x2b73[236]]> _0xff22x4+ 2&& _0xff22x2[_0x2b73[236]]<= _0xff22x3?!0:!1};mxGraphView[_0x2b73[202]][_0x2b73[176]]= function(){this[_0x2b73[2163]]();var _0xff22x2=this[_0x2b73[1179]];_0xff22x2[_0x2b73[507]]== mxConstants[_0x2b73[508]]?this[_0x2b73[1569]]():_0xff22x2[_0x2b73[507]]== mxConstants[_0x2b73[1523]]?this[_0x2b73[1571]]():this[_0x2b73[1570]]()};mxGraphView[_0x2b73[202]][_0x2b73[2163]]= function(){var _0xff22x2=this[_0x2b73[1179]],_0xff22x3=_0xff22x2[_0x2b73[526]];if(null!= _0xff22x3){mxEvent[_0x2b73[759]](_0xff22x3,mxUtils[_0x2b73[885]](this,function(_0xff22x3){mxClient[_0x2b73[754]]&& _0xff22x2[_0x2b73[2203]]()&& _0xff22x2[_0x2b73[2126]](!_0xff22x2[_0x2b73[2134]]());this[_0x2b73[2314]](_0xff22x3)&& (!mxClient[_0x2b73[80]]&& !mxClient[_0x2b73[76]]&& !mxClient[_0x2b73[71]]&& !mxClient[_0x2b73[75]]|| !this[_0x2b73[2315]](_0xff22x3))&& _0xff22x2[_0x2b73[758]](mxEvent.MOUSE_DOWN, new mxMouseEvent(_0xff22x3))}),mxUtils[_0x2b73[885]](this,function(_0xff22x3){this[_0x2b73[2314]](_0xff22x3)&& _0xff22x2[_0x2b73[758]](mxEvent.MOUSE_MOVE, new mxMouseEvent(_0xff22x3))}),mxUtils[_0x2b73[885]](this,function(_0xff22x3){this[_0x2b73[2314]](_0xff22x3)&& _0xff22x2[_0x2b73[758]](mxEvent.MOUSE_UP, new mxMouseEvent(_0xff22x3))}));mxEvent[_0x2b73[169]](_0xff22x3,_0x2b73[760],mxUtils[_0x2b73[885]](this,function(_0xff22x3){_0xff22x2[_0x2b73[761]](_0xff22x3)}));var _0xff22x4=function(_0xff22x4){var _0xff22x9=null;mxClient[_0x2b73[754]]&& (_0xff22x9= mxEvent[_0x2b73[731]](_0xff22x4),_0xff22x4= mxEvent[_0x2b73[733]](_0xff22x4),_0xff22x4= mxUtils[_0x2b73[2196]](_0xff22x3,_0xff22x9,_0xff22x4),_0xff22x9= _0xff22x2[_0x2b73[441]][_0x2b73[248]](_0xff22x2[_0x2b73[999]](_0xff22x4[_0x2b73[235]],_0xff22x4[_0x2b73[236]])));return _0xff22x9};_0xff22x2[_0x2b73[1133]]({mouseDown:function(_0xff22x3,_0xff22x4){_0xff22x2[_0x2b73[2316]][_0x2b73[1032]]()},mouseMove:function(){},mouseUp:function(){}});this[_0x2b73[2317]]= mxUtils[_0x2b73[885]](this,function(_0xff22x3){null!= _0xff22x2[_0x2b73[2276]]&& _0xff22x2[_0x2b73[2276]][_0x2b73[2277]]()&& _0xff22x2[_0x2b73[2276]][_0x2b73[801]]();this[_0x2b73[2252]]&& (_0xff22x2[_0x2b73[1009]]&& !mxEvent[_0x2b73[721]](_0xff22x3))&& _0xff22x2[_0x2b73[758]](mxEvent.MOUSE_MOVE, new mxMouseEvent(_0xff22x3,_0xff22x4(_0xff22x3)))});this[_0x2b73[2318]]= mxUtils[_0x2b73[885]](this,function(_0xff22x3){this[_0x2b73[2252]]&& _0xff22x2[_0x2b73[758]](mxEvent.MOUSE_UP, new mxMouseEvent(_0xff22x3))});mxEvent[_0x2b73[759]](document,null,this[_0x2b73[2317]],this[_0x2b73[2318]])}};mxGraphView[_0x2b73[202]][_0x2b73[1570]]= function(){var _0xff22x2=this[_0x2b73[1179]][_0x2b73[526]];null!= _0xff22x2&& (this[_0x2b73[510]]= this[_0x2b73[2319]](_0x2b73[118],_0x2b73[118]),this[_0x2b73[2053]]= this[_0x2b73[2319]](_0x2b73[942],_0x2b73[942]),this[_0x2b73[505]]= this[_0x2b73[2319]](_0x2b73[942],_0x2b73[942]),this[_0x2b73[506]]= this[_0x2b73[2319]](_0x2b73[942],_0x2b73[942]),this[_0x2b73[510]][_0x2b73[62]](this[_0x2b73[2053]]),this[_0x2b73[510]][_0x2b73[62]](this[_0x2b73[505]]),this[_0x2b73[510]][_0x2b73[62]](this[_0x2b73[506]]),_0xff22x2[_0x2b73[62]](this[_0x2b73[510]]),mxClient[_0x2b73[496]]&& (_0xff22x2= mxUtils[_0x2b73[885]](this,function(_0xff22x2){_0xff22x2= this[_0x2b73[517]]();this[_0x2b73[2320]](_0xff22x2[_0x2b73[235]]+ _0xff22x2[_0x2b73[117]]+ this[_0x2b73[1179]][_0x2b73[467]],_0xff22x2[_0x2b73[236]]+ _0xff22x2[_0x2b73[119]]+ this[_0x2b73[1179]][_0x2b73[467]])}),mxEvent[_0x2b73[169]](window,_0x2b73[129],_0xff22x2)))};mxGraphView[_0x2b73[202]][_0x2b73[2320]]= function(_0xff22x2,_0xff22x3){if(null!= this[_0x2b73[1179]][_0x2b73[526]]){var _0xff22x4=this[_0x2b73[1179]][_0x2b73[526]][_0x2b73[167]];this[_0x2b73[510]][_0x2b73[124]][_0x2b73[117]]= this[_0x2b73[1179]][_0x2b73[526]][_0x2b73[359]]< _0xff22x2?_0xff22x2+ _0x2b73[168]:_0x2b73[118];this[_0x2b73[510]][_0x2b73[124]][_0x2b73[119]]= _0xff22x4< _0xff22x3?_0xff22x3+ _0x2b73[168]:_0x2b73[118]}};mxGraphView[_0x2b73[202]][_0x2b73[2319]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=document[_0x2b73[55]](_0x2b73[529]);null!= _0xff22x2&& null!= _0xff22x3?(_0xff22x4[_0x2b73[124]][_0x2b73[491]]= _0x2b73[492],_0xff22x4[_0x2b73[124]][_0x2b73[361]]= _0x2b73[946],_0xff22x4[_0x2b73[124]][_0x2b73[125]]= _0x2b73[946],_0xff22x4[_0x2b73[124]][_0x2b73[117]]= _0xff22x2,_0xff22x4[_0x2b73[124]][_0x2b73[119]]= _0xff22x3):_0xff22x4[_0x2b73[124]][_0x2b73[491]]= _0x2b73[1500];return _0xff22x4};mxGraphView[_0x2b73[202]][_0x2b73[1571]]= function(){var _0xff22x2=this[_0x2b73[1179]][_0x2b73[526]];if(null!= _0xff22x2){var _0xff22x3=_0xff22x2[_0x2b73[359]],_0xff22x4=_0xff22x2[_0x2b73[167]];this[_0x2b73[510]]= this[_0x2b73[2321]](_0xff22x3,_0xff22x4);this[_0x2b73[2053]]= this[_0x2b73[2321]](_0xff22x3,_0xff22x4);this[_0x2b73[505]]= this[_0x2b73[2321]](_0xff22x3,_0xff22x4);this[_0x2b73[506]]= this[_0x2b73[2321]](_0xff22x3,_0xff22x4);this[_0x2b73[510]][_0x2b73[62]](this[_0x2b73[2053]]);this[_0x2b73[510]][_0x2b73[62]](this[_0x2b73[505]]);this[_0x2b73[510]][_0x2b73[62]](this[_0x2b73[506]]);_0xff22x2[_0x2b73[62]](this[_0x2b73[510]])}};mxGraphView[_0x2b73[202]][_0x2b73[2321]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=document[_0x2b73[55]](mxClient[_0x2b73[463]]+ _0x2b73[1499]);_0xff22x4[_0x2b73[124]][_0x2b73[491]]= _0x2b73[492];_0xff22x4[_0x2b73[124]][_0x2b73[361]]= _0x2b73[946];_0xff22x4[_0x2b73[124]][_0x2b73[125]]= _0x2b73[946];_0xff22x4[_0x2b73[124]][_0x2b73[117]]= _0xff22x2+ _0x2b73[168];_0xff22x4[_0x2b73[124]][_0x2b73[119]]= _0xff22x3+ _0x2b73[168];_0xff22x4[_0x2b73[57]](_0x2b73[1462],_0xff22x2+ _0x2b73[537]+ _0xff22x3);_0xff22x4[_0x2b73[57]](_0x2b73[2322],_0x2b73[2323]);return _0xff22x4};mxGraphView[_0x2b73[202]][_0x2b73[1569]]= function(){var _0xff22x2=this[_0x2b73[1179]][_0x2b73[526]];this[_0x2b73[510]]= document[_0x2b73[509]](mxConstants.NS_SVG,_0x2b73[449]);this[_0x2b73[2053]]= document[_0x2b73[509]](mxConstants.NS_SVG,_0x2b73[449]);this[_0x2b73[510]][_0x2b73[62]](this[_0x2b73[2053]]);this[_0x2b73[505]]= document[_0x2b73[509]](mxConstants.NS_SVG,_0x2b73[449]);this[_0x2b73[510]][_0x2b73[62]](this[_0x2b73[505]]);this[_0x2b73[506]]= document[_0x2b73[509]](mxConstants.NS_SVG,_0x2b73[449]);this[_0x2b73[510]][_0x2b73[62]](this[_0x2b73[506]]);var _0xff22x3=document[_0x2b73[509]](mxConstants.NS_SVG,_0x2b73[571]);_0xff22x3[_0x2b73[124]][_0x2b73[117]]= _0x2b73[118];_0xff22x3[_0x2b73[124]][_0x2b73[119]]= _0x2b73[118];_0xff22x3[_0x2b73[124]][_0x2b73[495]]= _0x2b73[694];_0xff22x3[_0x2b73[62]](this[_0x2b73[510]]);null!= _0xff22x2&& (_0xff22x2[_0x2b73[62]](_0xff22x3),_0x2b73[2324]== mxUtils[_0x2b73[275]](_0xff22x2)[_0x2b73[491]]&& (_0xff22x2[_0x2b73[124]][_0x2b73[491]]= _0x2b73[1500]))};mxGraphView[_0x2b73[202]][_0x2b73[515]]= function(){var _0xff22x2=null!= this[_0x2b73[510]]?this[_0x2b73[510]][_0x2b73[538]]:null;null== _0xff22x2&& (_0xff22x2= this[_0x2b73[510]]);null!= _0xff22x2&& null!= _0xff22x2[_0x2b73[265]]&& (this[_0x2b73[200]](this[_0x2b73[1741]],!0),mxEvent[_0x2b73[938]](document,null,this[_0x2b73[2317]],this[_0x2b73[2318]]),mxEvent[_0x2b73[762]](this[_0x2b73[1179]][_0x2b73[526]]),_0xff22x2[_0x2b73[265]][_0x2b73[266]](_0xff22x2),this[_0x2b73[506]]= this[_0x2b73[505]]= this[_0x2b73[2053]]= this[_0x2b73[510]]= this[_0x2b73[2318]]= this[_0x2b73[2317]]= null)};function mxCurrentRootChange(_0xff22x2,_0xff22x3){this[_0x2b73[441]]= _0xff22x2;this[_0x2b73[257]]= this[_0x2b73[813]]= _0xff22x3;this[_0x2b73[2325]]= null== _0xff22x3;if(!this[_0x2b73[2325]]){for(var _0xff22x4=this[_0x2b73[441]][_0x2b73[1741]],_0xff22x5=this[_0x2b73[441]][_0x2b73[1179]][_0x2b73[502]]();null!= _0xff22x4;){if(_0xff22x4== _0xff22x3){this[_0x2b73[2325]]= !0;break};_0xff22x4= _0xff22x5[_0x2b73[1197]](_0xff22x4)}}}mxCurrentRootChange[_0x2b73[202]][_0x2b73[350]]= function(){var _0xff22x2=this[_0x2b73[441]][_0x2b73[1741]];this[_0x2b73[441]][_0x2b73[1741]]= this[_0x2b73[257]];this[_0x2b73[257]]= _0xff22x2;_0xff22x2= this[_0x2b73[441]][_0x2b73[1179]][_0x2b73[2326]](this[_0x2b73[441]][_0x2b73[1741]]);null!= _0xff22x2&& (this[_0x2b73[441]][_0x2b73[513]]= new mxPoint(-_0xff22x2[_0x2b73[235]],-_0xff22x2[_0x2b73[236]]));this[_0x2b73[441]][_0x2b73[746]]( new mxEventObject(this[_0x2b73[2325]]?mxEvent[_0x2b73[2327]]:mxEvent[_0x2b73[2328]],_0x2b73[813],this[_0x2b73[441]][_0x2b73[1741]],_0x2b73[257],this[_0x2b73[257]]));this[_0x2b73[2325]]?(this[_0x2b73[441]][_0x2b73[200]](this[_0x2b73[441]][_0x2b73[1741]],!0),this[_0x2b73[441]][_0x2b73[2264]]()):this[_0x2b73[441]][_0x2b73[802]]();this[_0x2b73[2325]]= !this[_0x2b73[2325]]};function mxGraph(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){this[_0x2b73[2329]]= null;this[_0x2b73[2330]]= _0xff22x4;this[_0x2b73[507]]= mxClient[_0x2b73[48]]?mxConstants[_0x2b73[508]]:_0xff22x4== mxConstants[_0x2b73[2331]]&& mxClient[_0x2b73[47]]?mxConstants[_0x2b73[1523]]:_0xff22x4== mxConstants[_0x2b73[2332]]?mxConstants[_0x2b73[1656]]:_0xff22x4== mxConstants[_0x2b73[2333]]?mxConstants[_0x2b73[2209]]:mxConstants[_0x2b73[2334]];this[_0x2b73[251]]= null!= _0xff22x3?_0xff22x3: new mxGraphModel;this[_0x2b73[2335]]= [];this[_0x2b73[2336]]= [];this[_0x2b73[259]]= this[_0x2b73[2337]]();this[_0x2b73[2339]](this[_0x2b73[2338]]());this[_0x2b73[2341]](null!= _0xff22x5?_0xff22x5:this[_0x2b73[2340]]());this[_0x2b73[441]]= this[_0x2b73[2342]]();this[_0x2b73[2343]]= mxUtils[_0x2b73[885]](this,function(_0xff22x2,_0xff22x3){this[_0x2b73[1177]](_0xff22x3[_0x2b73[720]](_0x2b73[1061])[_0x2b73[1065]])});this[_0x2b73[251]][_0x2b73[169]](mxEvent.CHANGE,this[_0x2b73[2343]]);this[_0x2b73[2344]]();null!= _0xff22x2&& this[_0x2b73[176]](_0xff22x2);this[_0x2b73[441]][_0x2b73[2259]]()}mxLoadResources&& mxResources[_0x2b73[99]](mxClient[_0x2b73[86]]+ _0x2b73[2345]);mxGraph[_0x2b73[202]]= new mxEventSource;mxGraph[_0x2b73[202]][_0x2b73[196]]= mxGraph;mxGraph[_0x2b73[202]][_0x2b73[2346]]= [];mxGraph[_0x2b73[202]][_0x2b73[2329]]= null;mxGraph[_0x2b73[202]][_0x2b73[1009]]= !1;mxGraph[_0x2b73[202]][_0x2b73[251]]= null;mxGraph[_0x2b73[202]][_0x2b73[441]]= null;mxGraph[_0x2b73[202]][_0x2b73[94]]= null;mxGraph[_0x2b73[202]][_0x2b73[2105]]= null;mxGraph[_0x2b73[202]][_0x2b73[2347]]= null;mxGraph[_0x2b73[202]][_0x2b73[259]]= null;mxGraph[_0x2b73[202]][_0x2b73[2335]]= null;mxGraph[_0x2b73[202]][_0x2b73[2330]]= null;mxGraph[_0x2b73[202]][_0x2b73[507]]= null;mxGraph[_0x2b73[202]][_0x2b73[1020]]= 10;mxGraph[_0x2b73[202]][_0x2b73[991]]= !0;mxGraph[_0x2b73[202]][_0x2b73[2348]]= !0;mxGraph[_0x2b73[202]][_0x2b73[2349]]= !0;mxGraph[_0x2b73[202]][_0x2b73[2350]]= 700;mxGraph[_0x2b73[202]][_0x2b73[2351]]= 25;mxGraph[_0x2b73[202]][_0x2b73[2352]]= 0;mxGraph[_0x2b73[202]][_0x2b73[2352]]= 0;mxGraph[_0x2b73[202]][_0x2b73[2213]]= 0;mxGraph[_0x2b73[202]][_0x2b73[2215]]= !0;mxGraph[_0x2b73[202]][_0x2b73[2353]]= 4;mxGraph[_0x2b73[202]][_0x2b73[2354]]= 0.5;mxGraph[_0x2b73[202]][_0x2b73[2355]]= null;mxGraph[_0x2b73[202]][_0x2b73[2356]]= null;mxGraph[_0x2b73[202]][_0x2b73[1617]]= null;mxGraph[_0x2b73[202]][_0x2b73[2273]]= !1;mxGraph[_0x2b73[202]][_0x2b73[2357]]= !1;mxGraph[_0x2b73[202]][_0x2b73[2358]]= _0x2b73[579];mxGraph[_0x2b73[202]][_0x2b73[2359]]= !0;mxGraph[_0x2b73[202]][_0x2b73[2360]]= 20;mxGraph[_0x2b73[202]][_0x2b73[2361]]= !1;mxGraph[_0x2b73[202]][_0x2b73[2013]]= mxConstants[_0x2b73[516]];mxGraph[_0x2b73[202]][_0x2b73[2012]]= 1.5;mxGraph[_0x2b73[202]][_0x2b73[984]]= !0;mxGraph[_0x2b73[202]][_0x2b73[2362]]= !0;mxGraph[_0x2b73[202]][_0x2b73[2363]]= !0;mxGraph[_0x2b73[202]][_0x2b73[2364]]= !1;mxGraph[_0x2b73[202]][_0x2b73[2365]]= !0;mxGraph[_0x2b73[202]][_0x2b73[2366]]= !0;mxGraph[_0x2b73[202]][_0x2b73[2367]]= !0;mxGraph[_0x2b73[202]][_0x2b73[2368]]= !1;mxGraph[_0x2b73[202]][_0x2b73[2369]]= !0;mxGraph[_0x2b73[202]][_0x2b73[2206]]= !0;mxGraph[_0x2b73[202]][_0x2b73[2370]]= !0;mxGraph[_0x2b73[202]][_0x2b73[2371]]= !0;mxGraph[_0x2b73[202]][_0x2b73[2372]]= !0;mxGraph[_0x2b73[202]][_0x2b73[2373]]= !0;mxGraph[_0x2b73[202]][_0x2b73[2374]]= !1;mxGraph[_0x2b73[202]][_0x2b73[2375]]= !1;mxGraph[_0x2b73[202]][_0x2b73[2376]]= !0;mxGraph[_0x2b73[202]][_0x2b73[2377]]= !0;mxGraph[_0x2b73[202]][_0x2b73[2378]]= !0;mxGraph[_0x2b73[202]][_0x2b73[2379]]= !0;mxGraph[_0x2b73[202]][_0x2b73[2380]]= !0;mxGraph[_0x2b73[202]][_0x2b73[2381]]= !1;mxGraph[_0x2b73[202]][_0x2b73[1012]]= !0;mxGraph[_0x2b73[202]][_0x2b73[2382]]= !1;mxGraph[_0x2b73[202]][_0x2b73[2383]]= !1;mxGraph[_0x2b73[202]][_0x2b73[2384]]= !1;mxGraph[_0x2b73[202]][_0x2b73[1013]]= !0;mxGraph[_0x2b73[202]][_0x2b73[2385]]= null;mxGraph[_0x2b73[202]][_0x2b73[2386]]= null;mxGraph[_0x2b73[202]][_0x2b73[2387]]= null;mxGraph[_0x2b73[202]][_0x2b73[2388]]= null;mxGraph[_0x2b73[202]][_0x2b73[2389]]= !1;mxGraph[_0x2b73[202]][_0x2b73[467]]= 0;mxGraph[_0x2b73[202]][_0x2b73[2158]]= !0;mxGraph[_0x2b73[202]][_0x2b73[2159]]= !1;mxGraph[_0x2b73[202]][_0x2b73[2168]]= !0;mxGraph[_0x2b73[202]][_0x2b73[2390]]= !0;mxGraph[_0x2b73[202]][_0x2b73[2391]]= !0;mxGraph[_0x2b73[202]][_0x2b73[2392]]= !0;mxGraph[_0x2b73[202]][_0x2b73[2393]]= !0;mxGraph[_0x2b73[202]][_0x2b73[2394]]= !0;mxGraph[_0x2b73[202]][_0x2b73[2395]]= 1.2;mxGraph[_0x2b73[202]][_0x2b73[2396]]= !1;mxGraph[_0x2b73[202]][_0x2b73[2397]]= !0;mxGraph[_0x2b73[202]][_0x2b73[2398]]= !0;mxGraph[_0x2b73[202]][_0x2b73[2399]]= !1;mxGraph[_0x2b73[202]][_0x2b73[2400]]= !1;mxGraph[_0x2b73[202]][_0x2b73[2401]]= !0;mxGraph[_0x2b73[202]][_0x2b73[2402]]= !1;mxGraph[_0x2b73[202]][_0x2b73[2293]]= mxEdgeStyle[_0x2b73[2403]];mxGraph[_0x2b73[202]][_0x2b73[2404]]= !0;mxGraph[_0x2b73[202]][_0x2b73[2405]]= !1;mxGraph[_0x2b73[202]][_0x2b73[2406]]= !0;mxGraph[_0x2b73[202]][_0x2b73[2407]]= !1;mxGraph[_0x2b73[202]][_0x2b73[2408]]= !0;mxGraph[_0x2b73[202]][_0x2b73[2409]]= !0;mxGraph[_0x2b73[202]][_0x2b73[2410]]= !1;mxGraph[_0x2b73[202]][_0x2b73[2411]]= !0;mxGraph[_0x2b73[202]][_0x2b73[2412]]= !0;mxGraph[_0x2b73[202]][_0x2b73[2180]]= mxConstants[_0x2b73[2065]];mxGraph[_0x2b73[202]][_0x2b73[2336]]= null;mxGraph[_0x2b73[202]][_0x2b73[2413]]= 0.1;mxGraph[_0x2b73[202]][_0x2b73[2414]]= 8;mxGraph[_0x2b73[202]][_0x2b73[1136]]= 0;mxGraph[_0x2b73[202]][_0x2b73[1137]]= 0;mxGraph[_0x2b73[202]][_0x2b73[2415]]= new mxImage(mxClient[_0x2b73[88]]+ _0x2b73[2416],9,9);mxGraph[_0x2b73[202]][_0x2b73[2417]]= new mxImage(mxClient[_0x2b73[88]]+ _0x2b73[2418],9,9);mxGraph[_0x2b73[202]][_0x2b73[2419]]= new mxImage(_0x2b73[2420],16,16);mxGraph[_0x2b73[202]][_0x2b73[2421]]= _0x2b73[130]!= mxClient[_0x2b73[90]]?_0x2b73[2422]:_0x2b73[110];mxGraph[_0x2b73[202]][_0x2b73[2423]]= _0x2b73[130]!= mxClient[_0x2b73[90]]?_0x2b73[2424]:_0x2b73[110];mxGraph[_0x2b73[202]][_0x2b73[2425]]= _0x2b73[130]!= mxClient[_0x2b73[90]]?_0x2b73[2426]:_0x2b73[110];mxGraph[_0x2b73[202]][_0x2b73[176]]= function(_0xff22x2){this[_0x2b73[526]]= _0xff22x2;this[_0x2b73[2347]]= this[_0x2b73[2427]]();this[_0x2b73[441]][_0x2b73[176]]();this[_0x2b73[2258]]();mxClient[_0x2b73[80]]&& (mxEvent[_0x2b73[169]](window,_0x2b73[2428],mxUtils[_0x2b73[885]](this,function(){this[_0x2b73[515]]()})),mxEvent[_0x2b73[169]](_0xff22x2,_0x2b73[2429],mxUtils[_0x2b73[885]](this,function(){return this[_0x2b73[2203]]()})));8== document[_0x2b73[5]]&& _0xff22x2[_0x2b73[1583]](_0x2b73[1582],_0x2b73[2430])};mxGraph[_0x2b73[202]][_0x2b73[2344]]= function(_0xff22x2){this[_0x2b73[2276]]= new mxTooltipHandler(this);this[_0x2b73[2276]][_0x2b73[995]](!1);this[_0x2b73[2316]]= new mxPanningHandler(this);this[_0x2b73[2316]][_0x2b73[2431]]= !1;this[_0x2b73[2432]]= new mxSelectionCellsHandler(this);this[_0x2b73[2433]]= new mxConnectionHandler(this);this[_0x2b73[2433]][_0x2b73[995]](!1);this[_0x2b73[1011]]= new mxGraphHandler(this)};mxGraph[_0x2b73[202]][_0x2b73[2338]]= function(){return new mxGraphSelectionModel(this)};mxGraph[_0x2b73[202]][_0x2b73[2340]]= function(){return new mxStylesheet};mxGraph[_0x2b73[202]][_0x2b73[2342]]= function(){return new mxGraphView(this)};mxGraph[_0x2b73[202]][_0x2b73[2337]]= function(){return new mxCellRenderer};mxGraph[_0x2b73[202]][_0x2b73[2427]]= function(){return new mxCellEditor(this)};mxGraph[_0x2b73[202]][_0x2b73[502]]= function(){return this[_0x2b73[251]]};mxGraph[_0x2b73[202]][_0x2b73[249]]= function(){return this[_0x2b73[441]]};mxGraph[_0x2b73[202]][_0x2b73[2434]]= function(){return this[_0x2b73[94]]};mxGraph[_0x2b73[202]][_0x2b73[2341]]= function(_0xff22x2){this[_0x2b73[94]]= _0xff22x2};mxGraph[_0x2b73[202]][_0x2b73[2435]]= function(){return this[_0x2b73[2105]]};mxGraph[_0x2b73[202]][_0x2b73[2339]]= function(_0xff22x2){this[_0x2b73[2105]]= _0xff22x2};mxGraph[_0x2b73[202]][_0x2b73[2436]]= function(_0xff22x2){for(var _0xff22x3=[],_0xff22x4=0;_0xff22x4< _0xff22x2[_0x2b73[67]];_0xff22x4++){var _0xff22x5=_0xff22x2[_0xff22x4];if(_0xff22x5[_0x2b73[196]]!= mxRootChange){var _0xff22x9=null;_0xff22x5 instanceof mxChildChange&& null== _0xff22x5[_0x2b73[257]]?_0xff22x9= _0xff22x5[_0x2b73[247]]:null!= _0xff22x5[_0x2b73[246]]&& _0xff22x5[_0x2b73[246]] instanceof mxCell&& (_0xff22x9= _0xff22x5[_0x2b73[246]]);null!= _0xff22x9&& 0> mxUtils[_0x2b73[2]](_0xff22x3,_0xff22x9)&& _0xff22x3[_0x2b73[207]](_0xff22x9)}};return this[_0x2b73[502]]()[_0x2b73[1964]](_0xff22x3)};mxGraph[_0x2b73[202]][_0x2b73[1177]]= function(_0xff22x2){for(var _0xff22x3=0;_0xff22x3< _0xff22x2[_0x2b73[67]];_0xff22x3++){this[_0x2b73[2437]](_0xff22x2[_0xff22x3])};this[_0x2b73[2439]](this[_0x2b73[2438]](_0xff22x2));this[_0x2b73[441]][_0x2b73[2264]]();this[_0x2b73[2258]]()};mxGraph[_0x2b73[202]][_0x2b73[2438]]= function(_0xff22x2){for(var _0xff22x3=[],_0xff22x4=0;_0xff22x4< _0xff22x2[_0x2b73[67]];_0xff22x4++){var _0xff22x5=_0xff22x2[_0xff22x4];if(_0xff22x5 instanceof mxRootChange){break}else {_0xff22x5 instanceof mxChildChange?null!= _0xff22x5[_0x2b73[257]]&& null== _0xff22x5[_0x2b73[1101]]&& (_0xff22x3= _0xff22x3[_0x2b73[1919]](this[_0x2b73[251]][_0x2b73[1939]](_0xff22x5[_0x2b73[247]]))):_0xff22x5 instanceof mxVisibleChange&& (_0xff22x3= _0xff22x3[_0x2b73[1919]](this[_0x2b73[251]][_0x2b73[1939]](_0xff22x5[_0x2b73[246]])))}};return _0xff22x3};mxGraph[_0x2b73[202]][_0x2b73[2437]]= function(_0xff22x2){if(_0xff22x2 instanceof mxRootChange){this[_0x2b73[2440]](),this[_0x2b73[2441]](_0xff22x2[_0x2b73[257]]),this[_0x2b73[2398]]&& (this[_0x2b73[441]][_0x2b73[255]]= 1,this[_0x2b73[441]][_0x2b73[513]][_0x2b73[235]]= 0,this[_0x2b73[441]][_0x2b73[513]][_0x2b73[236]]= 0),this[_0x2b73[746]]( new mxEventObject(mxEvent.ROOT))}else {if(_0xff22x2 instanceof mxChildChange){var _0xff22x3=this[_0x2b73[251]][_0x2b73[1197]](_0xff22x2[_0x2b73[247]]);null!= _0xff22x3?this[_0x2b73[441]][_0x2b73[2263]](_0xff22x2[_0x2b73[247]],!0,!1,null!= _0xff22x2[_0x2b73[257]]):(this[_0x2b73[2441]](_0xff22x2[_0x2b73[247]]),this[_0x2b73[441]][_0x2b73[1741]]== _0xff22x2[_0x2b73[247]]&& this[_0x2b73[2442]]());_0xff22x3!= _0xff22x2[_0x2b73[257]]&& (null!= _0xff22x3&& this[_0x2b73[441]][_0x2b73[2263]](_0xff22x3,!1,!1),null!= _0xff22x2[_0x2b73[257]]&& this[_0x2b73[441]][_0x2b73[2263]](_0xff22x2[_0x2b73[257]],!1,!1))}else {_0xff22x2 instanceof mxTerminalChange|| _0xff22x2 instanceof mxGeometryChange?this[_0x2b73[441]][_0x2b73[2263]](_0xff22x2[_0x2b73[246]]):_0xff22x2 instanceof mxValueChange?this[_0x2b73[441]][_0x2b73[2263]](_0xff22x2[_0x2b73[246]],!1,!1):_0xff22x2 instanceof mxStyleChange?(this[_0x2b73[441]][_0x2b73[2263]](_0xff22x2[_0x2b73[246]],!0,!0,!1),this[_0x2b73[441]][_0x2b73[2265]](_0xff22x2[_0x2b73[246]])):null!= _0xff22x2[_0x2b73[246]]&& _0xff22x2[_0x2b73[246]] instanceof mxCell&& this[_0x2b73[2441]](_0xff22x2[_0x2b73[246]])}}};mxGraph[_0x2b73[202]][_0x2b73[2441]]= function(_0xff22x2){for(var _0xff22x3=this[_0x2b73[251]][_0x2b73[262]](_0xff22x2),_0xff22x4=0;_0xff22x4< _0xff22x3;_0xff22x4++){this[_0x2b73[2441]](this[_0x2b73[251]][_0x2b73[263]](_0xff22x2,_0xff22x4))};this[_0x2b73[441]][_0x2b73[2265]](_0xff22x2)};mxGraph[_0x2b73[202]][_0x2b73[2443]]= function(_0xff22x2,_0xff22x3){null== _0xff22x2[_0x2b73[1211]]&& (_0xff22x2[_0x2b73[1211]]= []);_0xff22x2[_0x2b73[1211]][_0x2b73[207]](_0xff22x3);var _0xff22x4=this[_0x2b73[441]][_0x2b73[248]](_0xff22x2);null!= _0xff22x4&& this[_0x2b73[259]][_0x2b73[258]](_0xff22x4);this[_0x2b73[746]]( new mxEventObject(mxEvent.ADD_OVERLAY,_0x2b73[246],_0xff22x2,_0x2b73[2201],_0xff22x3));return _0xff22x3};mxGraph[_0x2b73[202]][_0x2b73[2200]]= function(_0xff22x2){return _0xff22x2[_0x2b73[1211]]};mxGraph[_0x2b73[202]][_0x2b73[2444]]= function(_0xff22x2,_0xff22x3){if(null== _0xff22x3){this[_0x2b73[2445]](_0xff22x2)}else {var _0xff22x4=mxUtils[_0x2b73[2]](_0xff22x2[_0x2b73[1211]],_0xff22x3);0<= _0xff22x4?(_0xff22x2[_0x2b73[1211]][_0x2b73[300]](_0xff22x4,1),0== _0xff22x2[_0x2b73[1211]][_0x2b73[67]]&& (_0xff22x2[_0x2b73[1211]]= null),_0xff22x4= this[_0x2b73[441]][_0x2b73[248]](_0xff22x2),null!= _0xff22x4&& this[_0x2b73[259]][_0x2b73[258]](_0xff22x4),this[_0x2b73[746]]( new mxEventObject(mxEvent.REMOVE_OVERLAY,_0x2b73[246],_0xff22x2,_0x2b73[2201],_0xff22x3))):_0xff22x3= null};return _0xff22x3};mxGraph[_0x2b73[202]][_0x2b73[2445]]= function(_0xff22x2){var _0xff22x3=_0xff22x2[_0x2b73[1211]];if(null!= _0xff22x3){_0xff22x2[_0x2b73[1211]]= null;var _0xff22x4=this[_0x2b73[441]][_0x2b73[248]](_0xff22x2);null!= _0xff22x4&& this[_0x2b73[259]][_0x2b73[258]](_0xff22x4);for(_0xff22x4= 0;_0xff22x4< _0xff22x3[_0x2b73[67]];_0xff22x4++){this[_0x2b73[746]]( new mxEventObject(mxEvent.REMOVE_OVERLAY,_0x2b73[246],_0xff22x2,_0x2b73[2201],_0xff22x3[_0xff22x4]))}};return _0xff22x3};mxGraph[_0x2b73[202]][_0x2b73[2446]]= function(_0xff22x2){_0xff22x2= null!= _0xff22x2?_0xff22x2:this[_0x2b73[251]][_0x2b73[501]]();this[_0x2b73[2445]](_0xff22x2);for(var _0xff22x3=this[_0x2b73[251]][_0x2b73[262]](_0xff22x2),_0xff22x4=0;_0xff22x4< _0xff22x3;_0xff22x4++){var _0xff22x5=this[_0x2b73[251]][_0x2b73[263]](_0xff22x2,_0xff22x4);this[_0x2b73[2446]](_0xff22x5)}};mxGraph[_0x2b73[202]][_0x2b73[2447]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){if(null!= _0xff22x3&& 0< _0xff22x3[_0x2b73[67]]){return _0xff22x4= null!= _0xff22x4?_0xff22x4:this[_0x2b73[2419]],_0xff22x3= new mxCellOverlay(_0xff22x4,_0x2b73[2448]+ _0xff22x3+ _0x2b73[2449]),_0xff22x5&& _0xff22x3[_0x2b73[169]](mxEvent.CLICK,mxUtils[_0x2b73[885]](this,function(_0xff22x3,_0xff22x4){this[_0x2b73[994]]()&& this[_0x2b73[2450]](_0xff22x2)})),this[_0x2b73[2443]](_0xff22x2,_0xff22x3)};this[_0x2b73[2445]](_0xff22x2);return null};mxGraph[_0x2b73[202]][_0x2b73[855]]= function(_0xff22x2){this[_0x2b73[2451]](null,_0xff22x2)};mxGraph[_0x2b73[202]][_0x2b73[2451]]= function(_0xff22x2,_0xff22x3){null== _0xff22x2&& (_0xff22x2= this[_0x2b73[2452]](),null!= _0xff22x2&& !this[_0x2b73[2453]](_0xff22x2)&& (_0xff22x2= null));null!= _0xff22x2&& (this[_0x2b73[746]]( new mxEventObject(mxEvent.START_EDITING,_0x2b73[246],_0xff22x2,_0x2b73[763],_0xff22x3)),this[_0x2b73[2347]][_0x2b73[855]](_0xff22x2,_0xff22x3))};mxGraph[_0x2b73[202]][_0x2b73[2142]]= function(_0xff22x2,_0xff22x3){return this[_0x2b73[2454]](_0xff22x2)};mxGraph[_0x2b73[202]][_0x2b73[2126]]= function(_0xff22x2){this[_0x2b73[2347]][_0x2b73[2126]](_0xff22x2)};mxGraph[_0x2b73[202]][_0x2b73[850]]= function(_0xff22x2,_0xff22x3,_0xff22x4){this[_0x2b73[251]][_0x2b73[473]]();try{this[_0x2b73[2456]](_0xff22x2,_0xff22x3,this[_0x2b73[2455]](_0xff22x2)),this[_0x2b73[746]]( new mxEventObject(mxEvent.LABEL_CHANGED,_0x2b73[246],_0xff22x2,_0x2b73[131],_0xff22x3,_0x2b73[763],_0xff22x4))}finally{this[_0x2b73[251]][_0x2b73[476]]()};return _0xff22x2};mxGraph[_0x2b73[202]][_0x2b73[2456]]= function(_0xff22x2,_0xff22x3,_0xff22x4){this[_0x2b73[251]][_0x2b73[473]]();try{this[_0x2b73[251]][_0x2b73[1966]](_0xff22x2,_0xff22x3),_0xff22x4&& this[_0x2b73[2457]](_0xff22x2,!1)}finally{this[_0x2b73[251]][_0x2b73[476]]()}};mxGraph[_0x2b73[202]][_0x2b73[859]]= function(_0xff22x2){this[_0x2b73[2126]](!0);this[_0x2b73[2433]][_0x2b73[862]]();this[_0x2b73[1011]][_0x2b73[862]]();_0xff22x2= this[_0x2b73[897]]();for(var _0xff22x3=0;_0xff22x3< _0xff22x2[_0x2b73[67]];_0xff22x3++){var _0xff22x4=this[_0x2b73[441]][_0x2b73[248]](_0xff22x2[_0xff22x3]);null!= _0xff22x4&& null!= _0xff22x4[_0x2b73[2458]]&& _0xff22x4[_0x2b73[2458]][_0x2b73[862]]()}};mxGraph[_0x2b73[202]][_0x2b73[173]]= function(_0xff22x2){var _0xff22x3=_0xff22x2[_0x2b73[727]](),_0xff22x4=_0xff22x2[_0x2b73[736]](),_0xff22x5= new mxEventObject(mxEvent.CLICK,_0x2b73[763],_0xff22x3,_0x2b73[246],_0xff22x4);_0xff22x2[_0x2b73[721]]()&& _0xff22x5[_0x2b73[722]]();this[_0x2b73[746]](_0xff22x5);this[_0x2b73[994]]()&& (!mxEvent[_0x2b73[721]](_0xff22x3)&& !_0xff22x5[_0x2b73[721]]())&& (null!= _0xff22x4?this[_0x2b73[2459]](_0xff22x4,_0xff22x3):(_0xff22x4= null,this[_0x2b73[2460]]()&& (_0xff22x4= this[_0x2b73[2461]](_0xff22x2[_0x2b73[734]](),_0xff22x2[_0x2b73[735]]())),null!= _0xff22x4?this[_0x2b73[2459]](_0xff22x4,_0xff22x3):this[_0x2b73[2462]](_0xff22x3)|| this[_0x2b73[2440]]()))};mxGraph[_0x2b73[202]][_0x2b73[761]]= function(_0xff22x2,_0xff22x3){var _0xff22x4= new mxEventObject(mxEvent.DOUBLE_CLICK,_0x2b73[763],_0xff22x2,_0x2b73[246],_0xff22x3);this[_0x2b73[746]](_0xff22x4);this[_0x2b73[994]]()&& (!mxEvent[_0x2b73[721]](_0xff22x2)&& !_0xff22x4[_0x2b73[721]]()&& null!= _0xff22x3&& this[_0x2b73[2453]](_0xff22x3))&& this[_0x2b73[2451]](_0xff22x3,_0xff22x2)};mxGraph[_0x2b73[202]][_0x2b73[1014]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){if(!this[_0x2b73[2382]]&& (this[_0x2b73[2384]]|| mxUtils[_0x2b73[1134]](this[_0x2b73[526]]))){var _0xff22x9=this[_0x2b73[526]];_0xff22x5= null!= _0xff22x5?_0xff22x5:20;if(_0xff22x2>= _0xff22x9[_0x2b73[360]]&& _0xff22x3>= _0xff22x9[_0x2b73[190]]&& _0xff22x2<= _0xff22x9[_0x2b73[360]]+ _0xff22x9[_0x2b73[159]]&& _0xff22x3<= _0xff22x9[_0x2b73[190]]+ _0xff22x9[_0x2b73[157]]){var _0xff22xa=_0xff22x9[_0x2b73[360]]+ _0xff22x9[_0x2b73[159]]- _0xff22x2;if(_0xff22xa< _0xff22x5){if(_0xff22x2= _0xff22x9[_0x2b73[360]],_0xff22x9[_0x2b73[360]]+= _0xff22x5- _0xff22xa,_0xff22x4&& _0xff22x2== _0xff22x9[_0x2b73[360]]){if(this[_0x2b73[507]]== mxConstants[_0x2b73[508]]){_0xff22x2= this[_0x2b73[441]][_0x2b73[2024]]()[_0x2b73[538]];var _0xff22x12=this[_0x2b73[526]][_0x2b73[1526]]+ _0xff22x5- _0xff22xa}else {_0xff22x12= Math[_0x2b73[160]](_0xff22x9[_0x2b73[159]],_0xff22x9[_0x2b73[1526]])+ _0xff22x5- _0xff22xa,_0xff22x2= this[_0x2b73[441]][_0x2b73[2051]]()};_0xff22x2[_0x2b73[124]][_0x2b73[117]]= _0xff22x12+ _0x2b73[168];_0xff22x9[_0x2b73[360]]+= _0xff22x5- _0xff22xa}}else {_0xff22xa= _0xff22x2- _0xff22x9[_0x2b73[360]],_0xff22xa< _0xff22x5&& (_0xff22x9[_0x2b73[360]]-= _0xff22x5- _0xff22xa)};_0xff22xa= _0xff22x9[_0x2b73[190]]+ _0xff22x9[_0x2b73[157]]- _0xff22x3;_0xff22xa< _0xff22x5?(_0xff22x2= _0xff22x9[_0x2b73[190]],_0xff22x9[_0x2b73[190]]+= _0xff22x5- _0xff22xa,_0xff22x2== _0xff22x9[_0x2b73[190]]&& _0xff22x4&& (this[_0x2b73[507]]== mxConstants[_0x2b73[508]]?(_0xff22x2= this[_0x2b73[441]][_0x2b73[2024]]()[_0x2b73[538]],_0xff22x3= this[_0x2b73[526]][_0x2b73[191]]+ _0xff22x5- _0xff22xa):(_0xff22x3= Math[_0x2b73[160]](_0xff22x9[_0x2b73[157]],_0xff22x9[_0x2b73[191]])+ _0xff22x5- _0xff22xa,_0xff22x2= this[_0x2b73[441]][_0x2b73[2051]]()),_0xff22x2[_0x2b73[124]][_0x2b73[119]]= _0xff22x3+ _0x2b73[168],_0xff22x9[_0x2b73[190]]+= _0xff22x5- _0xff22xa)):(_0xff22xa= _0xff22x3- _0xff22x9[_0x2b73[190]],_0xff22xa< _0xff22x5&& (_0xff22x9[_0x2b73[190]]-= _0xff22x5- _0xff22xa))}}else {this[_0x2b73[2383]]&& !this[_0x2b73[2316]][_0x2b73[1124]]&& (null== this[_0x2b73[2463]]&& (this[_0x2b73[2463]]= this[_0x2b73[2464]]()),this[_0x2b73[2463]][_0x2b73[1143]](_0xff22x2+ this[_0x2b73[1136]],_0xff22x3+ this[_0x2b73[1137]]))}};mxGraph[_0x2b73[202]][_0x2b73[2464]]= function(){return new mxPanningManager(this)};mxGraph[_0x2b73[202]][_0x2b73[2465]]= function(){function _0xff22x2(_0xff22x2){var _0xff22x3=0,_0xff22x3=_0x2b73[2466]== _0xff22x2?2:_0x2b73[2467]== _0xff22x2?4:_0x2b73[2468]== _0xff22x2?6:parseInt(_0xff22x2);isNaN(_0xff22x3)&& (_0xff22x3= 0);return _0xff22x3}var _0xff22x3=mxUtils[_0x2b73[275]](this[_0x2b73[526]]),_0xff22x4= new mxRectangle;_0xff22x4[_0x2b73[235]]= _0xff22x2(_0xff22x3[_0x2b73[2469]])+ parseInt(_0xff22x3[_0x2b73[357]]|| 0);_0xff22x4[_0x2b73[236]]= _0xff22x2(_0xff22x3[_0x2b73[2470]])+ parseInt(_0xff22x3[_0x2b73[2471]]|| 0);_0xff22x4[_0x2b73[117]]= _0xff22x2(_0xff22x3[_0x2b73[2472]])+ parseInt(_0xff22x3[_0x2b73[1164]]|| 0);_0xff22x4[_0x2b73[119]]= _0xff22x2(_0xff22x3[_0x2b73[2473]])+ parseInt(_0xff22x3[_0x2b73[2474]]|| 0);return _0xff22x4};mxGraph[_0x2b73[202]][_0x2b73[2475]]= function(_0xff22x2,_0xff22x3,_0xff22x4){_0xff22x2= this[_0x2b73[441]][_0x2b73[255]];var _0xff22x5=this[_0x2b73[441]][_0x2b73[513]],_0xff22x9=this[_0x2b73[2013]],_0xff22xa=_0xff22x2* this[_0x2b73[2012]],_0xff22x9= new mxRectangle(0,0,_0xff22x9[_0x2b73[117]]* _0xff22xa,_0xff22x9[_0x2b73[119]]* _0xff22xa);_0xff22x3= this[_0x2b73[2357]]?Math[_0x2b73[430]](_0xff22x3/ _0xff22x9[_0x2b73[117]]):1;_0xff22x4= this[_0x2b73[2357]]?Math[_0x2b73[430]](_0xff22x4/ _0xff22x9[_0x2b73[119]]):1;return new mxRectangle(0,0,_0xff22x3* _0xff22x9[_0x2b73[117]]+ 2+ _0xff22x5[_0x2b73[235]]/ _0xff22x2,_0xff22x4* _0xff22x9[_0x2b73[119]]+ 2+ _0xff22x5[_0x2b73[236]]/ _0xff22x2)};mxGraph[_0x2b73[202]][_0x2b73[2258]]= function(){var _0xff22x2=this[_0x2b73[517]]();if(null!= this[_0x2b73[526]]){var _0xff22x3=this[_0x2b73[2476]](),_0xff22x4=Math[_0x2b73[160]](0,_0xff22x2[_0x2b73[235]]+ _0xff22x2[_0x2b73[117]]+ 1+ _0xff22x3),_0xff22x3=Math[_0x2b73[160]](0,_0xff22x2[_0x2b73[236]]+ _0xff22x2[_0x2b73[119]]+ 1+ _0xff22x3);null!= this[_0x2b73[2387]]&& (_0xff22x4= Math[_0x2b73[160]](_0xff22x4,this[_0x2b73[2387]][_0x2b73[117]]),_0xff22x3= Math[_0x2b73[160]](_0xff22x3,this[_0x2b73[2387]][_0x2b73[119]]));this[_0x2b73[2389]]&& this[_0x2b73[2477]](_0xff22x4,_0xff22x3);if(this[_0x2b73[2361]]|| !mxClient[_0x2b73[80]]&& this[_0x2b73[2273]]){var _0xff22x5=this[_0x2b73[2475]](_0xff22x2,_0xff22x4,_0xff22x3);null!= _0xff22x5&& (_0xff22x4= _0xff22x5[_0x2b73[117]],_0xff22x3= _0xff22x5[_0x2b73[119]])};null!= this[_0x2b73[2386]]&& (_0xff22x4= Math[_0x2b73[160]](_0xff22x4,this[_0x2b73[2386]][_0x2b73[117]]* this[_0x2b73[441]][_0x2b73[255]]),_0xff22x3= Math[_0x2b73[160]](_0xff22x3,this[_0x2b73[2386]][_0x2b73[119]]* this[_0x2b73[441]][_0x2b73[255]]));_0xff22x4= Math[_0x2b73[430]](_0xff22x4- 1);_0xff22x3= Math[_0x2b73[430]](_0xff22x3- 1);this[_0x2b73[507]]== mxConstants[_0x2b73[508]]?(_0xff22x5= this[_0x2b73[441]][_0x2b73[2024]]()[_0x2b73[538]],_0xff22x5[_0x2b73[124]][_0x2b73[2478]]= Math[_0x2b73[160]](1,_0xff22x4)+ _0x2b73[168],_0xff22x5[_0x2b73[124]][_0x2b73[2479]]= Math[_0x2b73[160]](1,_0xff22x3)+ _0x2b73[168],_0xff22x5[_0x2b73[124]][_0x2b73[117]]= _0x2b73[118],_0xff22x5[_0x2b73[124]][_0x2b73[119]]= _0x2b73[118]):mxClient[_0x2b73[496]]?this[_0x2b73[441]][_0x2b73[2320]](Math[_0x2b73[160]](1,_0xff22x4),Math[_0x2b73[160]](1,_0xff22x3)):(this[_0x2b73[441]][_0x2b73[510]][_0x2b73[124]][_0x2b73[2478]]= Math[_0x2b73[160]](1,_0xff22x4)+ _0x2b73[168],this[_0x2b73[441]][_0x2b73[510]][_0x2b73[124]][_0x2b73[2479]]= Math[_0x2b73[160]](1,_0xff22x3)+ _0x2b73[168]);this[_0x2b73[2480]](this[_0x2b73[2357]],_0xff22x4- 1,_0xff22x3- 1)};this[_0x2b73[746]]( new mxEventObject(mxEvent.SIZE,_0x2b73[1562],_0xff22x2))};mxGraph[_0x2b73[202]][_0x2b73[2477]]= function(_0xff22x2,_0xff22x3){if(mxClient[_0x2b73[80]]){if(mxClient[_0x2b73[496]]){var _0xff22x4=this[_0x2b73[2465]]();_0xff22x2+= Math[_0x2b73[160]](2,_0xff22x4[_0x2b73[235]]+ _0xff22x4[_0x2b73[117]]+ 1);_0xff22x3+= Math[_0x2b73[160]](2,_0xff22x4[_0x2b73[236]]+ _0xff22x4[_0x2b73[119]]+ 1)}else {9<= document[_0x2b73[5]]?(_0xff22x2+= 3,_0xff22x3+= 5):(_0xff22x2+= 1,_0xff22x3+= 1)}}else {_0xff22x3+= 1};null!= this[_0x2b73[2388]]&& (_0xff22x2= Math[_0x2b73[243]](this[_0x2b73[2388]][_0x2b73[117]],_0xff22x2),_0xff22x3= Math[_0x2b73[243]](this[_0x2b73[2388]][_0x2b73[119]],_0xff22x3));this[_0x2b73[526]][_0x2b73[124]][_0x2b73[117]]= Math[_0x2b73[430]](_0xff22x2)+ _0x2b73[168];this[_0x2b73[526]][_0x2b73[124]][_0x2b73[119]]= Math[_0x2b73[430]](_0xff22x3)+ _0x2b73[168]};mxGraph[_0x2b73[202]][_0x2b73[2480]]= function(_0xff22x2,_0xff22x3,_0xff22x4){var _0xff22x5=this[_0x2b73[441]][_0x2b73[255]],_0xff22x9=this[_0x2b73[441]][_0x2b73[513]],_0xff22xa=this[_0x2b73[2013]],_0xff22x12=_0xff22x5* this[_0x2b73[2012]],_0xff22x9= new mxRectangle(_0xff22x5* _0xff22x9[_0x2b73[235]],_0xff22x5* _0xff22x9[_0x2b73[236]],_0xff22xa[_0x2b73[117]]* _0xff22x12,_0xff22xa[_0x2b73[119]]* _0xff22x12);_0xff22x2= _0xff22x2&& Math[_0x2b73[243]](_0xff22x9[_0x2b73[117]],_0xff22x9[_0x2b73[119]])> this[_0x2b73[2360]];_0xff22x9[_0x2b73[235]]= mxUtils[_0x2b73[1454]](_0xff22x9[_0x2b73[235]],_0xff22x9[_0x2b73[117]]);_0xff22x9[_0x2b73[236]]= mxUtils[_0x2b73[1454]](_0xff22x9[_0x2b73[236]],_0xff22x9[_0x2b73[119]]);_0xff22xa= _0xff22x2?Math[_0x2b73[430]]((_0xff22x3- _0xff22x9[_0x2b73[235]])/ _0xff22x9[_0x2b73[117]]):0;_0xff22x2= _0xff22x2?Math[_0x2b73[430]]((_0xff22x4- _0xff22x9[_0x2b73[236]])/ _0xff22x9[_0x2b73[119]]):0;null== this[_0x2b73[2481]]&& 0< _0xff22xa&& (this[_0x2b73[2481]]= []);if(null!= this[_0x2b73[2481]]){for(_0xff22x12= 0;_0xff22x12<= _0xff22xa;_0xff22x12++){var _0xff22x13=[ new mxPoint(_0xff22x9[_0x2b73[235]]+ _0xff22x12* _0xff22x9[_0x2b73[117]],1), new mxPoint(_0xff22x9[_0x2b73[235]]+ _0xff22x12* _0xff22x9[_0x2b73[117]],_0xff22x4)];null!= this[_0x2b73[2481]][_0xff22x12]?(this[_0x2b73[2481]][_0xff22x12][_0x2b73[255]]= 1,this[_0x2b73[2481]][_0xff22x12][_0x2b73[1525]]= _0xff22x13,this[_0x2b73[2481]][_0xff22x12][_0x2b73[258]]()):(_0xff22x13= new mxPolyline(_0xff22x13,this[_0x2b73[2358]],this[_0x2b73[255]]),_0xff22x13[_0x2b73[507]]= this[_0x2b73[507]],_0xff22x13[_0x2b73[1522]]= this[_0x2b73[2359]],_0xff22x13[_0x2b73[255]]= _0xff22x5,_0xff22x13[_0x2b73[176]](this[_0x2b73[441]][_0x2b73[2053]]),_0xff22x13[_0x2b73[258]](),this[_0x2b73[2481]][_0xff22x12]= _0xff22x13)};for(_0xff22x12= _0xff22xa;_0xff22x12< this[_0x2b73[2481]][_0x2b73[67]];_0xff22x12++){this[_0x2b73[2481]][_0xff22x12][_0x2b73[515]]()};this[_0x2b73[2481]][_0x2b73[300]](_0xff22xa,this[_0x2b73[2481]][_0x2b73[67]]- _0xff22xa)};null== this[_0x2b73[2482]]&& 0< _0xff22x2&& (this[_0x2b73[2482]]= []);if(null!= this[_0x2b73[2482]]){for(_0xff22x12= 0;_0xff22x12<= _0xff22x2;_0xff22x12++){_0xff22x13= [ new mxPoint(1,_0xff22x9[_0x2b73[236]]+ _0xff22x12* _0xff22x9[_0x2b73[119]]), new mxPoint(_0xff22x3,_0xff22x9[_0x2b73[236]]+ _0xff22x12* _0xff22x9[_0x2b73[119]])],null!= this[_0x2b73[2482]][_0xff22x12]?(this[_0x2b73[2482]][_0xff22x12][_0x2b73[255]]= 1,this[_0x2b73[2482]][_0xff22x12][_0x2b73[1525]]= _0xff22x13,this[_0x2b73[2482]][_0xff22x12][_0x2b73[258]]()):(_0xff22x13= new mxPolyline(_0xff22x13,this[_0x2b73[2358]],_0xff22x5),_0xff22x13[_0x2b73[507]]= this[_0x2b73[507]],_0xff22x13[_0x2b73[1522]]= this[_0x2b73[2359]],_0xff22x13[_0x2b73[255]]= _0xff22x5,_0xff22x13[_0x2b73[176]](this[_0x2b73[441]][_0x2b73[2053]]),_0xff22x13[_0x2b73[258]](),this[_0x2b73[2482]][_0xff22x12]= _0xff22x13)};for(_0xff22x12= _0xff22x2;_0xff22x12< this[_0x2b73[2482]][_0x2b73[67]];_0xff22x12++){this[_0x2b73[2482]][_0xff22x12][_0x2b73[515]]()};this[_0x2b73[2482]][_0x2b73[300]](_0xff22x2,this[_0x2b73[2482]][_0x2b73[67]]- _0xff22x2)}};mxGraph[_0x2b73[202]][_0x2b73[1705]]= function(_0xff22x2){var _0xff22x3=this[_0x2b73[251]][_0x2b73[474]](_0xff22x2),_0xff22x4=null,_0xff22x4=this[_0x2b73[251]][_0x2b73[250]](_0xff22x2)?this[_0x2b73[94]][_0x2b73[2077]]():this[_0x2b73[94]][_0x2b73[2076]]();null!= _0xff22x3&& (_0xff22x4= this[_0x2b73[2483]](this[_0x2b73[94]][_0x2b73[1705]](_0xff22x3,_0xff22x4)));null== _0xff22x4&& (_0xff22x4= mxGraph[_0x2b73[202]][_0x2b73[2346]]);return _0xff22x4};mxGraph[_0x2b73[202]][_0x2b73[2483]]= function(_0xff22x2){if(null!= _0xff22x2){var _0xff22x3=_0xff22x2[mxConstants[_0x2b73[2484]]],_0xff22x4=this[_0x2b73[2485]](_0xff22x3);null!= _0xff22x4?_0xff22x2[mxConstants[_0x2b73[2484]]]= _0xff22x4:_0xff22x4= _0xff22x3;null!= _0xff22x4&& _0x2b73[2486]== _0xff22x4[_0x2b73[85]](0,11)&& (_0xff22x3= _0xff22x4[_0x2b73[2]](_0x2b73[537]),0< _0xff22x3&& (_0xff22x4= _0xff22x4[_0x2b73[85]](0,_0xff22x3)+ _0x2b73[2487]+ _0xff22x4[_0x2b73[85]](_0xff22x3+ 1)),_0xff22x2[mxConstants[_0x2b73[2484]]]= _0xff22x4)};return _0xff22x2};mxGraph[_0x2b73[202]][_0x2b73[2488]]= function(_0xff22x2,_0xff22x3){_0xff22x3= _0xff22x3|| this[_0x2b73[897]]();if(null!= _0xff22x3){this[_0x2b73[251]][_0x2b73[473]]();try{for(var _0xff22x4=0;_0xff22x4< _0xff22x3[_0x2b73[67]];_0xff22x4++){this[_0x2b73[251]][_0x2b73[475]](_0xff22x3[_0xff22x4],_0xff22x2)}}finally{this[_0x2b73[251]][_0x2b73[476]]()}}};mxGraph[_0x2b73[202]][_0x2b73[2489]]= function(_0xff22x2,_0xff22x3,_0xff22x4){_0xff22x4= _0xff22x4|| this[_0x2b73[2452]]();this[_0x2b73[2490]](_0xff22x2,_0xff22x3,[_0xff22x4])};mxGraph[_0x2b73[202]][_0x2b73[2490]]= function(_0xff22x2,_0xff22x3,_0xff22x4){_0xff22x3= null!= _0xff22x3?_0xff22x3:!1;_0xff22x4= _0xff22x4|| this[_0x2b73[897]]();if(null!= _0xff22x4&& 0< _0xff22x4[_0x2b73[67]]){var _0xff22x5=this[_0x2b73[441]][_0x2b73[248]](_0xff22x4[0]),_0xff22x5=null!= _0xff22x5?_0xff22x5[_0x2b73[124]]:this[_0x2b73[1705]](_0xff22x4[0]);null!= _0xff22x5&& (_0xff22x3= mxUtils[_0x2b73[433]](_0xff22x5,_0xff22x2,_0xff22x3)?0:1,this[_0x2b73[1717]](_0xff22x2,_0xff22x3,_0xff22x4))}};mxGraph[_0x2b73[202]][_0x2b73[1717]]= function(_0xff22x2,_0xff22x3,_0xff22x4){_0xff22x4= _0xff22x4|| this[_0x2b73[897]]();mxUtils[_0x2b73[1717]](this[_0x2b73[251]],_0xff22x4,_0xff22x2,_0xff22x3)};mxGraph[_0x2b73[202]][_0x2b73[2491]]= function(_0xff22x2,_0xff22x3,_0xff22x4){this[_0x2b73[2492]](_0xff22x2,_0xff22x3,null,_0xff22x4)};mxGraph[_0x2b73[202]][_0x2b73[2492]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){_0xff22x5= _0xff22x5|| this[_0x2b73[897]]();if(null!= _0xff22x5&& 0< _0xff22x5[_0x2b73[67]]){if(null== _0xff22x4){var _0xff22x9=this[_0x2b73[441]][_0x2b73[248]](_0xff22x5[0]),_0xff22x9=null!= _0xff22x9?_0xff22x9[_0x2b73[124]]:this[_0x2b73[1705]](_0xff22x5[0]);null!= _0xff22x9&& (_0xff22x4= (parseInt(_0xff22x9[_0xff22x2]|| 0)& _0xff22x3)!= _0xff22x3)};mxUtils[_0x2b73[2492]](this[_0x2b73[251]],_0xff22x5,_0xff22x2,_0xff22x3,_0xff22x4)}};mxGraph[_0x2b73[202]][_0x2b73[849]]= function(_0xff22x2,_0xff22x3,_0xff22x4){null== _0xff22x3&& (_0xff22x3= this[_0x2b73[897]]());if(null!= _0xff22x3&& 1< _0xff22x3[_0x2b73[67]]){if(null== _0xff22x4){for(var _0xff22x5=0;_0xff22x5< _0xff22x3[_0x2b73[67]];_0xff22x5++){var _0xff22x9=this[_0x2b73[1198]](_0xff22x3[_0xff22x5]);if(null!= _0xff22x9&& !this[_0x2b73[251]][_0x2b73[250]](_0xff22x3[_0xff22x5])){if(null== _0xff22x4){if(_0xff22x2== mxConstants[_0x2b73[479]]){_0xff22x4= _0xff22x9[_0x2b73[235]]+ _0xff22x9[_0x2b73[117]]/ 2;break}else {if(_0xff22x2== mxConstants[_0x2b73[480]]){_0xff22x4= _0xff22x9[_0x2b73[235]]+ _0xff22x9[_0x2b73[117]]}else {if(_0xff22x2== mxConstants[_0x2b73[1687]]){_0xff22x4= _0xff22x9[_0x2b73[236]]}else {if(_0xff22x2== mxConstants[_0x2b73[481]]){_0xff22x4= _0xff22x9[_0x2b73[236]]+ _0xff22x9[_0x2b73[119]]/ 2;break}else {_0xff22x4= _0xff22x2== mxConstants[_0x2b73[482]]?_0xff22x9[_0x2b73[236]]+ _0xff22x9[_0x2b73[119]]:_0xff22x9[_0x2b73[235]]}}}}}else {_0xff22x4= _0xff22x2== mxConstants[_0x2b73[480]]?Math[_0x2b73[160]](_0xff22x4,_0xff22x9[_0x2b73[235]]+ _0xff22x9[_0x2b73[117]]):_0xff22x2== mxConstants[_0x2b73[1687]]?Math[_0x2b73[243]](_0xff22x4,_0xff22x9[_0x2b73[236]]):_0xff22x2== mxConstants[_0x2b73[482]]?Math[_0x2b73[160]](_0xff22x4,_0xff22x9[_0x2b73[236]]+ _0xff22x9[_0x2b73[119]]):Math[_0x2b73[243]](_0xff22x4,_0xff22x9[_0x2b73[235]])}}}};if(null!= _0xff22x4){this[_0x2b73[251]][_0x2b73[473]]();try{for(_0xff22x5= 0;_0xff22x5< _0xff22x3[_0x2b73[67]];_0xff22x5++){_0xff22x9= this[_0x2b73[1198]](_0xff22x3[_0xff22x5]),null!= _0xff22x9&& !this[_0x2b73[251]][_0x2b73[250]](_0xff22x3[_0xff22x5])&& (_0xff22x9= _0xff22x9[_0x2b73[238]](),_0xff22x2== mxConstants[_0x2b73[479]]?_0xff22x9[_0x2b73[235]]= _0xff22x4- _0xff22x9[_0x2b73[117]]/ 2:_0xff22x2== mxConstants[_0x2b73[480]]?_0xff22x9[_0x2b73[235]]= _0xff22x4- _0xff22x9[_0x2b73[117]]:_0xff22x2== mxConstants[_0x2b73[1687]]?_0xff22x9[_0x2b73[236]]= _0xff22x4:_0xff22x2== mxConstants[_0x2b73[481]]?_0xff22x9[_0x2b73[236]]= _0xff22x4- _0xff22x9[_0x2b73[119]]/ 2:_0xff22x2== mxConstants[_0x2b73[482]]?_0xff22x9[_0x2b73[236]]= _0xff22x4- _0xff22x9[_0x2b73[119]]:_0xff22x9[_0x2b73[235]]= _0xff22x4,this[_0x2b73[251]][_0x2b73[1724]](_0xff22x3[_0xff22x5],_0xff22x9))};this[_0x2b73[746]]( new mxEventObject(mxEvent.ALIGN_CELLS,_0x2b73[611],_0xff22x2,_0x2b73[895],_0xff22x3))}finally{this[_0x2b73[251]][_0x2b73[476]]()}}};return _0xff22x3};mxGraph[_0x2b73[202]][_0x2b73[854]]= function(_0xff22x2){if(null!= _0xff22x2&& null!= this[_0x2b73[2356]]){this[_0x2b73[251]][_0x2b73[473]]();try{var _0xff22x3=this[_0x2b73[251]][_0x2b73[474]](_0xff22x2);null== _0xff22x3|| 0== _0xff22x3[_0x2b73[67]]?this[_0x2b73[251]][_0x2b73[475]](_0xff22x2,this[_0x2b73[2356]]):this[_0x2b73[251]][_0x2b73[475]](_0xff22x2,null);this[_0x2b73[1809]](_0xff22x2);this[_0x2b73[746]]( new mxEventObject(mxEvent.FLIP_EDGE,_0x2b73[1989],_0xff22x2))}finally{this[_0x2b73[251]][_0x2b73[476]]()}};return _0xff22x2};mxGraph[_0x2b73[202]][_0x2b73[2493]]= function(_0xff22x2){this[_0x2b73[2336]][_0x2b73[207]](_0xff22x2)};mxGraph[_0x2b73[202]][_0x2b73[2494]]= function(_0xff22x2){for(var _0xff22x3=[],_0xff22x4=0;_0xff22x4< this[_0x2b73[2336]][_0x2b73[67]];_0xff22x4++){this[_0x2b73[2336]][_0xff22x4]!= _0xff22x2&& _0xff22x3[_0x2b73[207]](this[_0x2b73[2336]][_0xff22x4])};this[_0x2b73[2336]]= _0xff22x3};mxGraph[_0x2b73[202]][_0x2b73[2485]]= function(_0xff22x2){if(null!= _0xff22x2){for(var _0xff22x3=0;_0xff22x3< this[_0x2b73[2336]][_0x2b73[67]];_0xff22x3++){var _0xff22x4=this[_0x2b73[2336]][_0xff22x3][_0x2b73[1202]](_0xff22x2);if(null!= _0xff22x4){return _0xff22x4}}};return null};mxGraph[_0x2b73[202]][_0x2b73[840]]= function(_0xff22x2,_0xff22x3){null== _0xff22x3&& (_0xff22x3= mxUtils[_0x2b73[1779]](this[_0x2b73[897]](),!0));this[_0x2b73[251]][_0x2b73[473]]();try{this[_0x2b73[841]](_0xff22x3,_0xff22x2),this[_0x2b73[746]]( new mxEventObject(mxEvent.ORDER_CELLS,_0x2b73[2495],_0xff22x2,_0x2b73[895],_0xff22x3))}finally{this[_0x2b73[251]][_0x2b73[476]]()};return _0xff22x3};mxGraph[_0x2b73[202]][_0x2b73[841]]= function(_0xff22x2,_0xff22x3){if(null!= _0xff22x2){this[_0x2b73[251]][_0x2b73[473]]();try{for(var _0xff22x4=0;_0xff22x4< _0xff22x2[_0x2b73[67]];_0xff22x4++){var _0xff22x5=this[_0x2b73[251]][_0x2b73[1197]](_0xff22x2[_0xff22x4]);_0xff22x3?this[_0x2b73[251]][_0x2b73[99]](_0xff22x5,_0xff22x2[_0xff22x4],_0xff22x4):this[_0x2b73[251]][_0x2b73[99]](_0xff22x5,_0xff22x2[_0xff22x4],this[_0x2b73[251]][_0x2b73[262]](_0xff22x5)- 1)};this[_0x2b73[746]]( new mxEventObject(mxEvent.CELLS_ORDERED,_0x2b73[2495],_0xff22x3,_0x2b73[895],_0xff22x2))}finally{this[_0x2b73[251]][_0x2b73[476]]()}}};mxGraph[_0x2b73[202]][_0x2b73[844]]= function(_0xff22x2,_0xff22x3,_0xff22x4){null== _0xff22x4&& (_0xff22x4= mxUtils[_0x2b73[1779]](this[_0x2b73[897]](),!0));_0xff22x4= this[_0x2b73[2496]](_0xff22x4);null== _0xff22x2&& (_0xff22x2= this[_0x2b73[2497]](_0xff22x4));var _0xff22x5=this[_0x2b73[2498]](_0xff22x2,_0xff22x4,_0xff22x3);if(0< _0xff22x4[_0x2b73[67]]&& null!= _0xff22x5){var _0xff22x9=this[_0x2b73[251]][_0x2b73[1197]](_0xff22x2);null== _0xff22x9&& (_0xff22x9= this[_0x2b73[251]][_0x2b73[1197]](_0xff22x4[0]));this[_0x2b73[251]][_0x2b73[473]]();try{null== this[_0x2b73[1198]](_0xff22x2)&& this[_0x2b73[251]][_0x2b73[1724]](_0xff22x2, new mxGeometry);var _0xff22xa=this[_0x2b73[251]][_0x2b73[262]](_0xff22x9);this[_0x2b73[833]]([_0xff22x2],_0xff22x9,_0xff22xa,null,null,!1);_0xff22xa= this[_0x2b73[251]][_0x2b73[262]](_0xff22x2);this[_0x2b73[833]](_0xff22x4,_0xff22x2,_0xff22xa,null,null,!1,!1);this[_0x2b73[835]](_0xff22x4,-_0xff22x5[_0x2b73[235]],-_0xff22x5[_0x2b73[236]],!1,!0);this[_0x2b73[837]]([_0xff22x2],[_0xff22x5]);this[_0x2b73[746]]( new mxEventObject(mxEvent.GROUP_CELLS,_0x2b73[1504],_0xff22x2,_0x2b73[467],_0xff22x3,_0x2b73[895],_0xff22x4))}finally{this[_0x2b73[251]][_0x2b73[476]]()}};return _0xff22x2};mxGraph[_0x2b73[202]][_0x2b73[2496]]= function(_0xff22x2){var _0xff22x3=[];if(null!= _0xff22x2&& 0< _0xff22x2[_0x2b73[67]]){var _0xff22x4=this[_0x2b73[251]][_0x2b73[1197]](_0xff22x2[0]);_0xff22x3[_0x2b73[207]](_0xff22x2[0]);for(var _0xff22x5=1;_0xff22x5< _0xff22x2[_0x2b73[67]];_0xff22x5++){this[_0x2b73[251]][_0x2b73[1197]](_0xff22x2[_0xff22x5])== _0xff22x4&& _0xff22x3[_0x2b73[207]](_0xff22x2[_0xff22x5])}};return _0xff22x3};mxGraph[_0x2b73[202]][_0x2b73[2498]]= function(_0xff22x2,_0xff22x3,_0xff22x4){_0xff22x3= this[_0x2b73[1729]](_0xff22x3);null!= _0xff22x3&& (this[_0x2b73[1730]](_0xff22x2)&& (_0xff22x2= this[_0x2b73[1731]](_0xff22x2),_0xff22x3[_0x2b73[235]]-= _0xff22x2[_0x2b73[117]],_0xff22x3[_0x2b73[236]]-= _0xff22x2[_0x2b73[119]],_0xff22x3[_0x2b73[117]]+= _0xff22x2[_0x2b73[117]],_0xff22x3[_0x2b73[119]]+= _0xff22x2[_0x2b73[119]]),_0xff22x3[_0x2b73[235]]-= _0xff22x4,_0xff22x3[_0x2b73[236]]-= _0xff22x4,_0xff22x3[_0x2b73[117]]+= 2* _0xff22x4,_0xff22x3[_0x2b73[119]]+= 2* _0xff22x4);return _0xff22x3};mxGraph[_0x2b73[202]][_0x2b73[2497]]= function(_0xff22x2){_0xff22x2= new mxCell(_0x2b73[110]);_0xff22x2[_0x2b73[1993]](!0);_0xff22x2[_0x2b73[1995]](!1);return _0xff22x2};mxGraph[_0x2b73[202]][_0x2b73[845]]= function(_0xff22x2){var _0xff22x3=[];if(null== _0xff22x2){_0xff22x2= this[_0x2b73[897]]();for(var _0xff22x4=[],_0xff22x5=0;_0xff22x5< _0xff22x2[_0x2b73[67]];_0xff22x5++){0< this[_0x2b73[251]][_0x2b73[262]](_0xff22x2[_0xff22x5])&& _0xff22x4[_0x2b73[207]](_0xff22x2[_0xff22x5])};_0xff22x2= _0xff22x4};if(null!= _0xff22x2&& 0< _0xff22x2[_0x2b73[67]]){this[_0x2b73[251]][_0x2b73[473]]();try{for(_0xff22x5= 0;_0xff22x5< _0xff22x2[_0x2b73[67]];_0xff22x5++){var _0xff22x9=this[_0x2b73[251]][_0x2b73[1953]](_0xff22x2[_0xff22x5]);if(null!= _0xff22x9&& 0< _0xff22x9[_0x2b73[67]]){var _0xff22x9=_0xff22x9[_0x2b73[1853]](),_0xff22xa=this[_0x2b73[251]][_0x2b73[1197]](_0xff22x2[_0xff22x5]),_0xff22x12=this[_0x2b73[251]][_0x2b73[262]](_0xff22xa);this[_0x2b73[833]](_0xff22x9,_0xff22xa,_0xff22x12,null,null,!0);_0xff22x3= _0xff22x3[_0x2b73[1919]](_0xff22x9)}};this[_0x2b73[843]](this[_0x2b73[2499]](_0xff22x2));this[_0x2b73[746]]( new mxEventObject(mxEvent.UNGROUP_CELLS,_0x2b73[895],_0xff22x2))}finally{this[_0x2b73[251]][_0x2b73[476]]()}};return _0xff22x3};mxGraph[_0x2b73[202]][_0x2b73[846]]= function(_0xff22x2){null== _0xff22x2&& (_0xff22x2= this[_0x2b73[897]]());this[_0x2b73[251]][_0x2b73[473]]();try{var _0xff22x3=this[_0x2b73[902]](),_0xff22x4=this[_0x2b73[251]][_0x2b73[262]](_0xff22x3);this[_0x2b73[833]](_0xff22x2,_0xff22x3,_0xff22x4,null,null,!0);this[_0x2b73[746]]( new mxEventObject(mxEvent.REMOVE_CELLS_FROM_PARENT,_0x2b73[895],_0xff22x2))}finally{this[_0x2b73[251]][_0x2b73[476]]()};return _0xff22x2};mxGraph[_0x2b73[202]][_0x2b73[1917]]= function(_0xff22x2,_0xff22x3,_0xff22x4){null== _0xff22x2&& (_0xff22x2= this[_0x2b73[897]]());_0xff22x3= null!= _0xff22x3?_0xff22x3:0;_0xff22x4= null!= _0xff22x4?_0xff22x4:!1;this[_0x2b73[251]][_0x2b73[473]]();try{for(var _0xff22x5=0;_0xff22x5< _0xff22x2[_0x2b73[67]];_0xff22x5++){var _0xff22x9=this[_0x2b73[1198]](_0xff22x2[_0xff22x5]);if(null!= _0xff22x9){var _0xff22xa=this[_0x2b73[1955]](_0xff22x2[_0xff22x5]);if(null!= _0xff22xa&& 0< _0xff22xa[_0x2b73[67]]){var _0xff22x12=this[_0x2b73[1729]](_0xff22xa);if(0< _0xff22x12[_0x2b73[117]]&& 0< _0xff22x12[_0x2b73[119]]){var _0xff22x13=this[_0x2b73[1730]](_0xff22x2[_0xff22x5])?this[_0x2b73[1731]](_0xff22x2[_0xff22x5]): new mxRectangle,_0xff22x9=_0xff22x9[_0x2b73[238]]();_0xff22x4&& (_0xff22x9[_0x2b73[235]]+= _0xff22x12[_0x2b73[235]]- _0xff22x13[_0x2b73[117]]- _0xff22x3,_0xff22x9[_0x2b73[236]]+= _0xff22x12[_0x2b73[236]]- _0xff22x13[_0x2b73[119]]- _0xff22x3);_0xff22x9[_0x2b73[117]]= _0xff22x12[_0x2b73[117]]+ _0xff22x13[_0x2b73[117]]+ 2* _0xff22x3;_0xff22x9[_0x2b73[119]]= _0xff22x12[_0x2b73[119]]+ _0xff22x13[_0x2b73[119]]+ 2* _0xff22x3;this[_0x2b73[251]][_0x2b73[1724]](_0xff22x2[_0xff22x5],_0xff22x9);this[_0x2b73[834]](_0xff22xa,-_0xff22x12[_0x2b73[235]]+ _0xff22x13[_0x2b73[117]]+ _0xff22x3,-_0xff22x12[_0x2b73[236]]+ _0xff22x13[_0x2b73[119]]+ _0xff22x3)}}}}}finally{this[_0x2b73[251]][_0x2b73[476]]()};return _0xff22x2};mxGraph[_0x2b73[202]][_0x2b73[899]]= function(_0xff22x2,_0xff22x3){_0xff22x3= null!= _0xff22x3?_0xff22x3:!0;var _0xff22x4=null;if(null!= _0xff22x2){for(var _0xff22x5={},_0xff22x4=[],_0xff22x9=0;_0xff22x9< _0xff22x2[_0x2b73[67]];_0xff22x9++){var _0xff22xa=mxCellPath[_0x2b73[385]](_0xff22x2[_0xff22x9]);_0xff22x5[_0xff22xa]= _0xff22x2[_0xff22x9];_0xff22x4[_0x2b73[207]](_0xff22x2[_0xff22x9])};if(0< _0xff22x4[_0x2b73[67]]){for(var _0xff22xa=this[_0x2b73[441]][_0x2b73[255]],_0xff22x12=this[_0x2b73[441]][_0x2b73[513]],_0xff22x4=this[_0x2b73[251]][_0x2b73[899]](_0xff22x2,!0),_0xff22x9=0;_0xff22x9< _0xff22x2[_0x2b73[67]];_0xff22x9++){if(!_0xff22x3&& this[_0x2b73[251]][_0x2b73[250]](_0xff22x4[_0xff22x9])&& null!= this[_0x2b73[2500]](_0xff22x4[_0xff22x9],this[_0x2b73[251]][_0x2b73[1709]](_0xff22x4[_0xff22x9],!0),this[_0x2b73[251]][_0x2b73[1709]](_0xff22x4[_0xff22x9],!1))){_0xff22x4[_0xff22x9]= null}else {var _0xff22x13=this[_0x2b73[251]][_0x2b73[1721]](_0xff22x4[_0xff22x9]);if(null!= _0xff22x13){var _0xff22x14=this[_0x2b73[441]][_0x2b73[248]](_0xff22x2[_0xff22x9]),_0xff22x15=this[_0x2b73[441]][_0x2b73[248]](this[_0x2b73[251]][_0x2b73[1197]](_0xff22x2[_0xff22x9]));if(null!= _0xff22x14&& null!= _0xff22x15){var _0xff22x16=_0xff22x15[_0x2b73[2078]][_0x2b73[235]],_0xff22x15=_0xff22x15[_0x2b73[2078]][_0x2b73[236]];if(this[_0x2b73[251]][_0x2b73[250]](_0xff22x4[_0xff22x9])){for(var _0xff22x14=_0xff22x14[_0x2b73[439]],_0xff22x17=this[_0x2b73[251]][_0x2b73[1709]](_0xff22x2[_0xff22x9],!0),_0xff22x18=mxCellPath[_0x2b73[385]](_0xff22x17);null!= _0xff22x17&& null== _0xff22x5[_0xff22x18];){_0xff22x17= this[_0x2b73[251]][_0x2b73[1197]](_0xff22x17),_0xff22x18= mxCellPath[_0x2b73[385]](_0xff22x17)};null== _0xff22x17&& _0xff22x13[_0x2b73[2007]]( new mxPoint(_0xff22x14[0][_0x2b73[235]]/ _0xff22xa- _0xff22x12[_0x2b73[235]],_0xff22x14[0][_0x2b73[236]]/ _0xff22xa- _0xff22x12[_0x2b73[236]]),!0);_0xff22x17= this[_0x2b73[251]][_0x2b73[1709]](_0xff22x2[_0xff22x9],!1);for(_0xff22x18= mxCellPath[_0x2b73[385]](_0xff22x17);null!= _0xff22x17&& null== _0xff22x5[_0xff22x18];){_0xff22x17= this[_0x2b73[251]][_0x2b73[1197]](_0xff22x17),_0xff22x18= mxCellPath[_0x2b73[385]](_0xff22x17)};null== _0xff22x17&& (_0xff22x17= _0xff22x14[_0x2b73[67]]- 1,_0xff22x13[_0x2b73[2007]]( new mxPoint(_0xff22x14[_0xff22x17][_0x2b73[235]]/ _0xff22xa- _0xff22x12[_0x2b73[235]],_0xff22x14[_0xff22x17][_0x2b73[236]]/ _0xff22xa- _0xff22x12[_0x2b73[236]]),!1));_0xff22x13= _0xff22x13[_0x2b73[1525]];if(null!= _0xff22x13){for(_0xff22x14= 0;_0xff22x14< _0xff22x13[_0x2b73[67]];_0xff22x14++){_0xff22x13[_0xff22x14][_0x2b73[235]]+= _0xff22x16,_0xff22x13[_0xff22x14][_0x2b73[236]]+= _0xff22x15}}}else {_0xff22x13[_0x2b73[235]]+= _0xff22x16,_0xff22x13[_0x2b73[236]]+= _0xff22x15}}}}}}else {_0xff22x4= []}};return _0xff22x4};mxGraph[_0x2b73[202]][_0x2b73[2501]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa,_0xff22x12,_0xff22x13,_0xff22x14){_0xff22x3= this[_0x2b73[2502]](_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa,_0xff22x12,_0xff22x13,_0xff22x14);return this[_0x2b73[2103]](_0xff22x3,_0xff22x2)};mxGraph[_0x2b73[202]][_0x2b73[2502]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa,_0xff22x12,_0xff22x13,_0xff22x14){_0xff22x2= new mxGeometry(_0xff22x5,_0xff22x9,_0xff22xa,_0xff22x12);_0xff22x2[_0x2b73[1500]]= null!= _0xff22x14?_0xff22x14:!1;_0xff22x4= new mxCell(_0xff22x4,_0xff22x2,_0xff22x13);_0xff22x4[_0x2b73[1945]](_0xff22x3);_0xff22x4[_0x2b73[1993]](!0);_0xff22x4[_0x2b73[1995]](!0);return _0xff22x4};mxGraph[_0x2b73[202]][_0x2b73[1960]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa){_0xff22x3= this[_0x2b73[2503]](_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa);return this[_0x2b73[2504]](_0xff22x3,_0xff22x2,_0xff22x5,_0xff22x9)};mxGraph[_0x2b73[202]][_0x2b73[2503]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa){_0xff22x2= new mxCell(_0xff22x4, new mxGeometry,_0xff22xa);_0xff22x2[_0x2b73[1945]](_0xff22x3);_0xff22x2[_0x2b73[1994]](!0);_0xff22x2[_0x2b73[256]][_0x2b73[1500]]= !0;return _0xff22x2};mxGraph[_0x2b73[202]][_0x2b73[2504]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){return this[_0x2b73[2103]](_0xff22x2,_0xff22x3,_0xff22x9,_0xff22x4,_0xff22x5)};mxGraph[_0x2b73[202]][_0x2b73[2103]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){return this[_0x2b73[832]]([_0xff22x2],_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9)[0]};mxGraph[_0x2b73[202]][_0x2b73[832]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){null== _0xff22x3&& (_0xff22x3= this[_0x2b73[902]]());null== _0xff22x4&& (_0xff22x4= this[_0x2b73[251]][_0x2b73[262]](_0xff22x3));this[_0x2b73[251]][_0x2b73[473]]();try{this[_0x2b73[833]](_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,!1,!0),this[_0x2b73[746]]( new mxEventObject(mxEvent.ADD_CELLS,_0x2b73[895],_0xff22x2,_0x2b73[1101],_0xff22x3,_0x2b73[1983],_0xff22x4,_0x2b73[1097],_0xff22x5,_0x2b73[772],_0xff22x9))}finally{this[_0x2b73[251]][_0x2b73[476]]()};return _0xff22x2};mxGraph[_0x2b73[202]][_0x2b73[833]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa,_0xff22x12){if(null!= _0xff22x2&& null!= _0xff22x3&& null!= _0xff22x4){this[_0x2b73[251]][_0x2b73[473]]();try{for(var _0xff22x13=_0xff22xa?this[_0x2b73[441]][_0x2b73[248]](_0xff22x3):null,_0xff22x14=null!= _0xff22x13?_0xff22x13[_0x2b73[2078]]:null,_0xff22x15= new mxPoint(0,0),_0xff22x13=0;_0xff22x13< _0xff22x2[_0x2b73[67]];_0xff22x13++){if(null== _0xff22x2[_0xff22x13]){_0xff22x4--}else {var _0xff22x16=this[_0x2b73[251]][_0x2b73[1197]](_0xff22x2[_0xff22x13]);if(null!= _0xff22x14&& _0xff22x2[_0xff22x13]!= _0xff22x3&& _0xff22x3!= _0xff22x16){var _0xff22x17=this[_0x2b73[441]][_0x2b73[248]](_0xff22x16),_0xff22x18=null!= _0xff22x17?_0xff22x17[_0x2b73[2078]]:_0xff22x15,_0xff22x19=this[_0x2b73[251]][_0x2b73[1721]](_0xff22x2[_0xff22x13]);if(null!= _0xff22x19){var _0xff22x1a=_0xff22x18[_0x2b73[235]]- _0xff22x14[_0x2b73[235]],_0xff22x1b=_0xff22x18[_0x2b73[236]]- _0xff22x14[_0x2b73[236]],_0xff22x19=_0xff22x19[_0x2b73[238]]();_0xff22x19[_0x2b73[513]](_0xff22x1a,_0xff22x1b);!_0xff22x19[_0x2b73[1500]]&& (this[_0x2b73[251]][_0x2b73[1193]](_0xff22x2[_0xff22x13])&& !this[_0x2b73[2505]]())&& (_0xff22x19[_0x2b73[235]]= Math[_0x2b73[160]](0,_0xff22x19[_0x2b73[235]]),_0xff22x19[_0x2b73[236]]= Math[_0x2b73[160]](0,_0xff22x19[_0x2b73[236]]));this[_0x2b73[251]][_0x2b73[1724]](_0xff22x2[_0xff22x13],_0xff22x19)}};_0xff22x3== _0xff22x16&& _0xff22x4+ _0xff22x13> this[_0x2b73[251]][_0x2b73[262]](_0xff22x3)&& _0xff22x4--;this[_0x2b73[251]][_0x2b73[99]](_0xff22x3,_0xff22x2[_0xff22x13],_0xff22x4+ _0xff22x13);this[_0x2b73[2506]]()&& this[_0x2b73[2507]](_0xff22x2[_0xff22x13])&& this[_0x2b73[2508]](_0xff22x2[_0xff22x13]);(null== _0xff22x12|| _0xff22x12)&& this[_0x2b73[2509]](_0xff22x2[_0xff22x13]);null!= _0xff22x5&& this[_0x2b73[852]](_0xff22x2[_0xff22x13],_0xff22x5,!0);null!= _0xff22x9&& this[_0x2b73[852]](_0xff22x2[_0xff22x13],_0xff22x9,!1)}};this[_0x2b73[746]]( new mxEventObject(mxEvent.CELLS_ADDED,_0x2b73[895],_0xff22x2,_0x2b73[1101],_0xff22x3,_0x2b73[1983],_0xff22x4,_0x2b73[1097],_0xff22x5,_0x2b73[772],_0xff22x9,_0x2b73[492],_0xff22xa))}finally{this[_0x2b73[251]][_0x2b73[476]]()}}};mxGraph[_0x2b73[202]][_0x2b73[842]]= function(_0xff22x2,_0xff22x3){_0xff22x3= null!= _0xff22x3?_0xff22x3:!0;null== _0xff22x2&& (_0xff22x2= this[_0x2b73[2510]](this[_0x2b73[897]]()));_0xff22x3&& (_0xff22x2= this[_0x2b73[2510]](this[_0x2b73[2499]](_0xff22x2)));this[_0x2b73[251]][_0x2b73[473]]();try{this[_0x2b73[843]](_0xff22x2),this[_0x2b73[746]]( new mxEventObject(mxEvent.REMOVE_CELLS,_0x2b73[895],_0xff22x2,_0x2b73[2511],_0xff22x3))}finally{this[_0x2b73[251]][_0x2b73[476]]()};return _0xff22x2};mxGraph[_0x2b73[202]][_0x2b73[843]]= function(_0xff22x2){if(null!= _0xff22x2&& 0< _0xff22x2[_0x2b73[67]]){var _0xff22x3=this[_0x2b73[441]][_0x2b73[255]],_0xff22x4=this[_0x2b73[441]][_0x2b73[513]];this[_0x2b73[251]][_0x2b73[473]]();try{for(var _0xff22x5={},_0xff22x9=0;_0xff22x9< _0xff22x2[_0x2b73[67]];_0xff22x9++){var _0xff22xa=mxCellPath[_0x2b73[385]](_0xff22x2[_0xff22x9]);_0xff22x5[_0xff22xa]= _0xff22x2[_0xff22x9]};for(_0xff22x9= 0;_0xff22x9< _0xff22x2[_0x2b73[67]];_0xff22x9++){for(var _0xff22x12=this[_0x2b73[1756]](_0xff22x2[_0xff22x9]),_0xff22x13=0;_0xff22x13< _0xff22x12[_0x2b73[67]];_0xff22x13++){if(_0xff22xa= mxCellPath[_0x2b73[385]](_0xff22x12[_0xff22x13]),null== _0xff22x5[_0xff22xa]){var _0xff22x14=this[_0x2b73[251]][_0x2b73[1721]](_0xff22x12[_0xff22x13]);if(null!= _0xff22x14){var _0xff22x15=this[_0x2b73[441]][_0x2b73[248]](_0xff22x12[_0xff22x13]);if(null!= _0xff22x15){var _0xff22x14=_0xff22x14[_0x2b73[238]](),_0xff22x16=_0xff22x15[_0x2b73[1710]](!0) == _0xff22x2[_0xff22x9],_0xff22x17=_0xff22x15[_0x2b73[439]],_0xff22x18=_0xff22x16?0:_0xff22x17[_0x2b73[67]]- 1;_0xff22x14[_0x2b73[2007]]( new mxPoint(_0xff22x17[_0xff22x18][_0x2b73[235]]/ _0xff22x3- _0xff22x4[_0x2b73[235]],_0xff22x17[_0xff22x18][_0x2b73[236]]/ _0xff22x3- _0xff22x4[_0x2b73[236]]),_0xff22x16);this[_0x2b73[251]][_0x2b73[1957]](_0xff22x12[_0xff22x13],null,_0xff22x16);this[_0x2b73[251]][_0x2b73[1724]](_0xff22x12[_0xff22x13],_0xff22x14)}}}};this[_0x2b73[251]][_0x2b73[205]](_0xff22x2[_0xff22x9])};this[_0x2b73[746]]( new mxEventObject(mxEvent.CELLS_REMOVED,_0x2b73[895],_0xff22x2))}finally{this[_0x2b73[251]][_0x2b73[476]]()}}};mxGraph[_0x2b73[202]][_0x2b73[853]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){_0xff22x5= _0xff22x5|| 0;_0xff22x9= _0xff22x9|| 0;null== _0xff22x4&& (_0xff22x4= this[_0x2b73[899]]([_0xff22x2])[0]);var _0xff22xa=this[_0x2b73[251]][_0x2b73[1197]](_0xff22x2),_0xff22x12=this[_0x2b73[251]][_0x2b73[1709]](_0xff22x2,!0);this[_0x2b73[251]][_0x2b73[473]]();try{this[_0x2b73[835]](_0xff22x3,_0xff22x5,_0xff22x9,!1,!1),this[_0x2b73[833]](_0xff22x3,_0xff22xa,this[_0x2b73[251]][_0x2b73[262]](_0xff22xa),null,null,!0),this[_0x2b73[833]]([_0xff22x4],_0xff22xa,this[_0x2b73[251]][_0x2b73[262]](_0xff22xa),_0xff22x12,_0xff22x3[0],!1),this[_0x2b73[852]](_0xff22x2,_0xff22x3[0],!0),this[_0x2b73[746]]( new mxEventObject(mxEvent.SPLIT_EDGE,_0x2b73[1989],_0xff22x2,_0x2b73[895],_0xff22x3,_0x2b73[2512],_0xff22x4,_0x2b73[1126],_0xff22x5,_0x2b73[1125],_0xff22x9))}finally{this[_0x2b73[251]][_0x2b73[476]]()};return _0xff22x4};mxGraph[_0x2b73[202]][_0x2b73[838]]= function(_0xff22x2,_0xff22x3,_0xff22x4){null== _0xff22x3&& (_0xff22x3= this[_0x2b73[897]]());_0xff22x4&& (_0xff22x3= this[_0x2b73[2499]](_0xff22x3));this[_0x2b73[251]][_0x2b73[473]]();try{this[_0x2b73[839]](_0xff22x3,_0xff22x2),this[_0x2b73[746]]( new mxEventObject(mxEvent.TOGGLE_CELLS,_0x2b73[539],_0xff22x2,_0x2b73[895],_0xff22x3,_0x2b73[2511],_0xff22x4))}finally{this[_0x2b73[251]][_0x2b73[476]]()};return _0xff22x3};mxGraph[_0x2b73[202]][_0x2b73[839]]= function(_0xff22x2,_0xff22x3){if(null!= _0xff22x2&& 0< _0xff22x2[_0x2b73[67]]){this[_0x2b73[251]][_0x2b73[473]]();try{for(var _0xff22x4=0;_0xff22x4< _0xff22x2[_0x2b73[67]];_0xff22x4++){this[_0x2b73[251]][_0x2b73[175]](_0xff22x2[_0xff22x4],_0xff22x3)}}finally{this[_0x2b73[251]][_0x2b73[476]]()}}};mxGraph[_0x2b73[202]][_0x2b73[847]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){_0xff22x3= null!= _0xff22x3?_0xff22x3:!1;null== _0xff22x4&& (_0xff22x4= this[_0x2b73[2513]](this[_0x2b73[897]](),_0xff22x2));this[_0x2b73[2126]](!1);this[_0x2b73[251]][_0x2b73[473]]();try{this[_0x2b73[848]](_0xff22x4,_0xff22x2,_0xff22x3,_0xff22x5),this[_0x2b73[746]]( new mxEventObject(mxEvent.FOLD_CELLS,_0x2b73[2514],_0xff22x2,_0x2b73[2515],_0xff22x3,_0x2b73[895],_0xff22x4))}finally{this[_0x2b73[251]][_0x2b73[476]]()};return _0xff22x4};mxGraph[_0x2b73[202]][_0x2b73[848]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){if(null!= _0xff22x2&& 0< _0xff22x2[_0x2b73[67]]){this[_0x2b73[251]][_0x2b73[473]]();try{for(var _0xff22x9=0;_0xff22x9< _0xff22x2[_0x2b73[67]];_0xff22x9++){if((!_0xff22x5|| this[_0x2b73[2516]](_0xff22x2[_0xff22x9],_0xff22x3)) && _0xff22x3!= this[_0x2b73[1742]](_0xff22x2[_0xff22x9])){if(this[_0x2b73[251]][_0x2b73[1972]](_0xff22x2[_0xff22x9],_0xff22x3),this[_0x2b73[2517]](_0xff22x2[_0xff22x9],_0xff22x3),this[_0x2b73[2507]](_0xff22x2[_0xff22x9])&& this[_0x2b73[2508]](_0xff22x2[_0xff22x9]),_0xff22x4){var _0xff22xa=this[_0x2b73[251]][_0x2b73[1953]](_0xff22x2[_0xff22x9]);this[_0x2b73[847]](_0xff22xa,_0xff22x3,_0xff22x4)}}};this[_0x2b73[746]]( new mxEventObject(mxEvent.CELLS_FOLDED,_0x2b73[895],_0xff22x2,_0x2b73[2514],_0xff22x3,_0x2b73[2515],_0xff22x4))}finally{this[_0x2b73[251]][_0x2b73[476]]()}}};mxGraph[_0x2b73[202]][_0x2b73[2517]]= function(_0xff22x2,_0xff22x3){if(null!= _0xff22x2){var _0xff22x4=this[_0x2b73[251]][_0x2b73[1721]](_0xff22x2);null!= _0xff22x4&& (_0xff22x4= _0xff22x4[_0x2b73[238]](),this[_0x2b73[2518]](_0xff22x2,_0xff22x4,_0xff22x3),_0xff22x4[_0x2b73[2005]](),this[_0x2b73[251]][_0x2b73[1724]](_0xff22x2,_0xff22x4))}};mxGraph[_0x2b73[202]][_0x2b73[2518]]= function(_0xff22x2,_0xff22x3,_0xff22x4){if(null!= _0xff22x2&& null!= _0xff22x3){_0xff22x4= this[_0x2b73[441]][_0x2b73[248]](_0xff22x2);_0xff22x4= null!= _0xff22x4?_0xff22x4[_0x2b73[124]]:this[_0x2b73[1705]](_0xff22x2);if(null== _0xff22x3[_0x2b73[2002]]){var _0xff22x5=_0xff22x3;this[_0x2b73[2394]]&& (_0xff22x2= this[_0x2b73[2519]](_0xff22x2),null!= _0xff22x2&& (_0xff22x5= _0xff22x2,_0xff22x2= mxUtils[_0x2b73[433]](_0xff22x4,mxConstants.STYLE_STARTSIZE),0< _0xff22x2&& (_0xff22x5[_0x2b73[119]]= Math[_0x2b73[160]](_0xff22x5[_0x2b73[119]],_0xff22x2))));_0xff22x3[_0x2b73[2002]]= new mxRectangle(0,0,_0xff22x5[_0x2b73[117]],_0xff22x5[_0x2b73[119]])};if(null!= _0xff22x3[_0x2b73[2002]]){_0xff22x3[_0x2b73[2002]][_0x2b73[235]]= _0xff22x3[_0x2b73[235]];_0xff22x3[_0x2b73[2002]][_0x2b73[236]]= _0xff22x3[_0x2b73[236]];var _0xff22x9=mxUtils[_0x2b73[431]](_0xff22x4[mxConstants[_0x2b73[2278]]]|| _0x2b73[468]);0!= _0xff22x9&& (_0xff22x2= _0xff22x3[_0x2b73[2002]][_0x2b73[241]]()- _0xff22x3[_0x2b73[241]](),_0xff22x4= _0xff22x3[_0x2b73[2002]][_0x2b73[242]]()- _0xff22x3[_0x2b73[242]](),_0xff22x5= Math[_0x2b73[426]](_0xff22x9),_0xff22x9= Math[_0x2b73[427]](_0xff22x9),_0xff22x3[_0x2b73[2002]][_0x2b73[235]]+= _0xff22x5* _0xff22x2- _0xff22x9* _0xff22x4- _0xff22x2,_0xff22x3[_0x2b73[2002]][_0x2b73[236]]+= _0xff22x9* _0xff22x2+ _0xff22x5* _0xff22x4- _0xff22x4)}}};mxGraph[_0x2b73[202]][_0x2b73[2499]]= function(_0xff22x2){var _0xff22x3=_0xff22x2[_0x2b73[1853]]();return _0xff22x3= _0xff22x3[_0x2b73[1919]](this[_0x2b73[2520]](_0xff22x2))};mxGraph[_0x2b73[202]][_0x2b73[2520]]= function(_0xff22x2){var _0xff22x3=[];if(null!= _0xff22x2){for(var _0xff22x4=0;_0xff22x4< _0xff22x2[_0x2b73[67]];_0xff22x4++){for(var _0xff22x5=this[_0x2b73[251]][_0x2b73[1707]](_0xff22x2[_0xff22x4]),_0xff22x9=0;_0xff22x9< _0xff22x5;_0xff22x9++){_0xff22x3[_0x2b73[207]](this[_0x2b73[251]][_0x2b73[1708]](_0xff22x2[_0xff22x4],_0xff22x9))};_0xff22x5= this[_0x2b73[251]][_0x2b73[1953]](_0xff22x2[_0xff22x4]);_0xff22x3= _0xff22x3[_0x2b73[1919]](this[_0x2b73[2520]](_0xff22x5))}};return _0xff22x3};mxGraph[_0x2b73[202]][_0x2b73[858]]= function(_0xff22x2,_0xff22x3){_0xff22x3= null!= _0xff22x3?_0xff22x3:!1;this[_0x2b73[251]][_0x2b73[473]]();try{this[_0x2b73[2457]](_0xff22x2,_0xff22x3),this[_0x2b73[746]]( new mxEventObject(mxEvent.UPDATE_CELL_SIZE,_0x2b73[246],_0xff22x2,_0x2b73[2521],_0xff22x3))}finally{this[_0x2b73[251]][_0x2b73[476]]()};return _0xff22x2};mxGraph[_0x2b73[202]][_0x2b73[2457]]= function(_0xff22x2,_0xff22x3){if(null!= _0xff22x2){this[_0x2b73[251]][_0x2b73[473]]();try{var _0xff22x4=this[_0x2b73[2519]](_0xff22x2),_0xff22x5=this[_0x2b73[251]][_0x2b73[1721]](_0xff22x2);if(null!= _0xff22x4&& null!= _0xff22x5){var _0xff22x9=this[_0x2b73[1742]](_0xff22x2),_0xff22x5=_0xff22x5[_0x2b73[238]]();if(this[_0x2b73[1730]](_0xff22x2)){var _0xff22xa=this[_0x2b73[441]][_0x2b73[248]](_0xff22x2),_0xff22x12=null!= _0xff22xa?_0xff22xa[_0x2b73[124]]:this[_0x2b73[1705]](_0xff22x2),_0xff22x13=this[_0x2b73[251]][_0x2b73[474]](_0xff22x2);null== _0xff22x13&& (_0xff22x13= _0x2b73[110]);mxUtils[_0x2b73[433]](_0xff22x12,mxConstants.STYLE_HORIZONTAL,!0)?(_0xff22x13= mxUtils[_0x2b73[475]](_0xff22x13,mxConstants.STYLE_STARTSIZE,_0xff22x4[_0x2b73[119]]+ 8),_0xff22x9&& (_0xff22x5[_0x2b73[119]]= _0xff22x4[_0x2b73[119]]+ 8),_0xff22x5[_0x2b73[117]]= _0xff22x4[_0x2b73[117]]):(_0xff22x13= mxUtils[_0x2b73[475]](_0xff22x13,mxConstants.STYLE_STARTSIZE,_0xff22x4[_0x2b73[117]]+ 8),_0xff22x9&& (_0xff22x5[_0x2b73[117]]= _0xff22x4[_0x2b73[117]]+ 8),_0xff22x5[_0x2b73[119]]= _0xff22x4[_0x2b73[119]]);this[_0x2b73[251]][_0x2b73[475]](_0xff22x2,_0xff22x13)}else {_0xff22x5[_0x2b73[117]]= _0xff22x4[_0x2b73[117]],_0xff22x5[_0x2b73[119]]= _0xff22x4[_0x2b73[119]]};if(!_0xff22x3&& !_0xff22x9){var _0xff22x14=this[_0x2b73[441]][_0x2b73[1799]](this[_0x2b73[251]][_0x2b73[1953]](_0xff22x2));if(null!= _0xff22x14){var _0xff22x15=this[_0x2b73[441]][_0x2b73[513]],_0xff22x16=this[_0x2b73[441]][_0x2b73[255]],_0xff22x17=(_0xff22x14[_0x2b73[236]]+ _0xff22x14[_0x2b73[119]])/ _0xff22x16- _0xff22x5[_0x2b73[236]]- _0xff22x15[_0x2b73[236]];_0xff22x5[_0x2b73[117]]= Math[_0x2b73[160]](_0xff22x5[_0x2b73[117]],(_0xff22x14[_0x2b73[235]]+ _0xff22x14[_0x2b73[117]])/ _0xff22x16- _0xff22x5[_0x2b73[235]]- _0xff22x15[_0x2b73[235]]);_0xff22x5[_0x2b73[119]]= Math[_0x2b73[160]](_0xff22x5[_0x2b73[119]],_0xff22x17)}};this[_0x2b73[837]]([_0xff22x2],[_0xff22x5])}}finally{this[_0x2b73[251]][_0x2b73[476]]()}}};mxGraph[_0x2b73[202]][_0x2b73[2519]]= function(_0xff22x2){var _0xff22x3=null;if(null!= _0xff22x2){var _0xff22x4=this[_0x2b73[441]][_0x2b73[248]](_0xff22x2),_0xff22x5=null!= _0xff22x4?_0xff22x4[_0x2b73[124]]:this[_0x2b73[1705]](_0xff22x2);if(null!= _0xff22x5&& !this[_0x2b73[251]][_0x2b73[250]](_0xff22x2)){var _0xff22x9=_0xff22x5[mxConstants[_0x2b73[2185]]]|| mxConstants[_0x2b73[483]],_0xff22xa=0,_0xff22x3=0;if((null!= this[_0x2b73[1202]](_0xff22x4)|| null!= _0xff22x5[mxConstants[_0x2b73[2484]]])&& _0xff22x5[mxConstants[_0x2b73[2059]]]== mxConstants[_0x2b73[2522]]){_0xff22x5[mxConstants[_0x2b73[2063]]]== mxConstants[_0x2b73[481]]&& (_0xff22xa+= parseFloat(_0xff22x5[mxConstants[_0x2b73[2523]]])|| mxLabel[_0x2b73[202]][_0x2b73[1680]]),_0xff22x5[mxConstants[_0x2b73[2064]]]!= mxConstants[_0x2b73[479]]&& (_0xff22x3+= parseFloat(_0xff22x5[mxConstants[_0x2b73[2524]]])|| mxLabel[_0x2b73[202]][_0x2b73[1680]])};_0xff22xa+= 2* (_0xff22x5[mxConstants[_0x2b73[2143]]]|| 0);_0xff22xa+= _0xff22x5[mxConstants[_0x2b73[2147]]]|| 0;_0xff22xa+= _0xff22x5[mxConstants[_0x2b73[2145]]]|| 0;_0xff22x3+= 2* (_0xff22x5[mxConstants[_0x2b73[2143]]]|| 0);_0xff22x3+= _0xff22x5[mxConstants[_0x2b73[2144]]]|| 0;_0xff22x3+= _0xff22x5[mxConstants[_0x2b73[2146]]]|| 0;_0xff22x4= this[_0x2b73[2205]](_0xff22x4);null!= _0xff22x4&& (_0xff22xa+= _0xff22x4[_0x2b73[117]]+ 8);_0xff22x4= this[_0x2b73[2183]](_0xff22x2);null!= _0xff22x4&& 0< _0xff22x4[_0x2b73[67]]?(this[_0x2b73[2186]](_0xff22x2)|| (_0xff22x4= _0xff22x4[_0x2b73[230]](/\n/g,_0x2b73[545])),_0xff22x9= mxUtils[_0x2b73[2525]](_0xff22x4,_0xff22x9,_0xff22x5[mxConstants[_0x2b73[2188]]]),_0xff22x2= _0xff22x9[_0x2b73[117]]+ _0xff22xa,_0xff22x3= _0xff22x9[_0x2b73[119]]+ _0xff22x3,mxUtils[_0x2b73[433]](_0xff22x5,mxConstants.STYLE_HORIZONTAL,!0)|| (_0xff22x5= _0xff22x3,_0xff22x3= _0xff22x2,_0xff22x2= _0xff22x5),this[_0x2b73[991]]&& (_0xff22x2= this[_0x2b73[1021]](_0xff22x2+ this[_0x2b73[1020]]/ 2),_0xff22x3= this[_0x2b73[1021]](_0xff22x3+ this[_0x2b73[1020]]/ 2)),_0xff22x3= new mxRectangle(0,0,_0xff22x2,_0xff22x3)):(_0xff22x5= 4* this[_0x2b73[1020]],_0xff22x3= new mxRectangle(0,0,_0xff22x5,_0xff22x5))}};return _0xff22x3};mxGraph[_0x2b73[202]][_0x2b73[2216]]= function(_0xff22x2,_0xff22x3){if(0.2< Math[_0x2b73[425]](1- _0xff22x3[_0x2b73[255]])){var _0xff22x4=this[_0x2b73[441]][_0x2b73[255]],_0xff22x5=this[_0x2b73[441]][_0x2b73[513]],_0xff22x9=_0xff22x2[_0x2b73[117]]* _0xff22x3[_0x2b73[255]],_0xff22xa=_0xff22x2[_0x2b73[119]]* _0xff22x3[_0x2b73[255]],_0xff22x12=_0xff22x2[_0x2b73[236]]- (_0xff22xa- _0xff22x2[_0x2b73[119]])/ 2,_0xff22x4= new mxRectangle(this[_0x2b73[1021]]((_0xff22x2[_0x2b73[235]]- (_0xff22x9- _0xff22x2[_0x2b73[117]])/ 2)/ _0xff22x4)- _0xff22x5[_0x2b73[235]],this[_0x2b73[1021]](_0xff22x12/ _0xff22x4)- _0xff22x5[_0x2b73[236]],this[_0x2b73[1021]](_0xff22x9/ _0xff22x4),this[_0x2b73[1021]](_0xff22xa/ _0xff22x4));this[_0x2b73[2526]](_0xff22x2[_0x2b73[246]],_0xff22x4)}};mxGraph[_0x2b73[202]][_0x2b73[2526]]= function(_0xff22x2,_0xff22x3){return this[_0x2b73[836]]([_0xff22x2],[_0xff22x3])[0]};mxGraph[_0x2b73[202]][_0x2b73[836]]= function(_0xff22x2,_0xff22x3){this[_0x2b73[251]][_0x2b73[473]]();try{this[_0x2b73[837]](_0xff22x2,_0xff22x3),this[_0x2b73[746]]( new mxEventObject(mxEvent.RESIZE_CELLS,_0x2b73[895],_0xff22x2,_0x2b73[1562],_0xff22x3))}finally{this[_0x2b73[251]][_0x2b73[476]]()};return _0xff22x2};mxGraph[_0x2b73[202]][_0x2b73[837]]= function(_0xff22x2,_0xff22x3){if(null!= _0xff22x2&& null!= _0xff22x3&& _0xff22x2[_0x2b73[67]]== _0xff22x3[_0x2b73[67]]){this[_0x2b73[251]][_0x2b73[473]]();try{for(var _0xff22x4=0;_0xff22x4< _0xff22x2[_0x2b73[67]];_0xff22x4++){var _0xff22x5=_0xff22x3[_0xff22x4],_0xff22x9=this[_0x2b73[251]][_0x2b73[1721]](_0xff22x2[_0xff22x4]);if(null!= _0xff22x9&& (_0xff22x9[_0x2b73[235]]!= _0xff22x5[_0x2b73[235]]|| _0xff22x9[_0x2b73[236]]!= _0xff22x5[_0x2b73[236]]|| _0xff22x9[_0x2b73[117]]!= _0xff22x5[_0x2b73[117]]|| _0xff22x9[_0x2b73[119]]!= _0xff22x5[_0x2b73[119]])){_0xff22x9= _0xff22x9[_0x2b73[238]]();if(_0xff22x9[_0x2b73[1500]]){var _0xff22xa=_0xff22x9[_0x2b73[1368]];null!= _0xff22xa&& (_0xff22xa[_0x2b73[235]]+= _0xff22x5[_0x2b73[235]]- _0xff22x9[_0x2b73[235]],_0xff22xa[_0x2b73[236]]+= _0xff22x5[_0x2b73[236]]- _0xff22x9[_0x2b73[236]])}else {_0xff22x9[_0x2b73[235]]= _0xff22x5[_0x2b73[235]],_0xff22x9[_0x2b73[236]]= _0xff22x5[_0x2b73[236]]};_0xff22x9[_0x2b73[117]]= _0xff22x5[_0x2b73[117]];_0xff22x9[_0x2b73[119]]= _0xff22x5[_0x2b73[119]];!_0xff22x9[_0x2b73[1500]]&& (this[_0x2b73[251]][_0x2b73[1193]](_0xff22x2[_0xff22x4])&& !this[_0x2b73[2505]]())&& (_0xff22x9[_0x2b73[235]]= Math[_0x2b73[160]](0,_0xff22x9[_0x2b73[235]]),_0xff22x9[_0x2b73[236]]= Math[_0x2b73[160]](0,_0xff22x9[_0x2b73[236]]));this[_0x2b73[251]][_0x2b73[1724]](_0xff22x2[_0xff22x4],_0xff22x9);this[_0x2b73[2507]](_0xff22x2[_0xff22x4])&& this[_0x2b73[2508]](_0xff22x2[_0xff22x4])}};this[_0x2b73[2399]]&& this[_0x2b73[1750]](_0xff22x2);this[_0x2b73[746]]( new mxEventObject(mxEvent.CELLS_RESIZED,_0x2b73[895],_0xff22x2,_0x2b73[1562],_0xff22x3))}finally{this[_0x2b73[251]][_0x2b73[476]]()}}};mxGraph[_0x2b73[202]][_0x2b73[2508]]= function(_0xff22x2){if(null!= _0xff22x2){var _0xff22x3=this[_0x2b73[251]][_0x2b73[1197]](_0xff22x2),_0xff22x4=this[_0x2b73[251]][_0x2b73[1721]](_0xff22x3);if(null!= _0xff22x3&& (null!= _0xff22x4&& !this[_0x2b73[1742]](_0xff22x3))&& (_0xff22x2= this[_0x2b73[251]][_0x2b73[1721]](_0xff22x2),null!= _0xff22x2&& (_0xff22x4[_0x2b73[117]]< _0xff22x2[_0x2b73[235]]+ _0xff22x2[_0x2b73[117]]|| _0xff22x4[_0x2b73[119]]< _0xff22x2[_0x2b73[236]]+ _0xff22x2[_0x2b73[119]]))){_0xff22x4= _0xff22x4[_0x2b73[238]](),_0xff22x4[_0x2b73[117]]= Math[_0x2b73[160]](_0xff22x4[_0x2b73[117]],_0xff22x2[_0x2b73[235]]+ _0xff22x2[_0x2b73[117]]),_0xff22x4[_0x2b73[119]]= Math[_0x2b73[160]](_0xff22x4[_0x2b73[119]],_0xff22x2[_0x2b73[236]]+ _0xff22x2[_0x2b73[119]]),this[_0x2b73[837]]([_0xff22x3],[_0xff22x4])}}};mxGraph[_0x2b73[202]][_0x2b73[903]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){return this[_0x2b73[834]](_0xff22x2,_0xff22x3,_0xff22x4,!0,_0xff22x5,_0xff22x9)};mxGraph[_0x2b73[202]][_0x2b73[834]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa){_0xff22x3= null!= _0xff22x3?_0xff22x3:0;_0xff22x4= null!= _0xff22x4?_0xff22x4:0;_0xff22x5= null!= _0xff22x5?_0xff22x5:!1;if(null!= _0xff22x2&& (0!= _0xff22x3|| 0!= _0xff22x4|| _0xff22x5|| null!= _0xff22x9)){this[_0x2b73[251]][_0x2b73[473]]();try{_0xff22x5&& (_0xff22x2= this[_0x2b73[899]](_0xff22x2,this[_0x2b73[2527]]()),null== _0xff22x9&& (_0xff22x9= this[_0x2b73[902]]()));var _0xff22x12=this[_0x2b73[2505]]();null!= _0xff22x9&& this[_0x2b73[2528]](!0);this[_0x2b73[835]](_0xff22x2,_0xff22x3,_0xff22x4,!_0xff22x5&& this[_0x2b73[2529]]()&& this[_0x2b73[2530]](),null== _0xff22x9);this[_0x2b73[2528]](_0xff22x12);if(null!= _0xff22x9){var _0xff22x13=this[_0x2b73[251]][_0x2b73[262]](_0xff22x9);this[_0x2b73[833]](_0xff22x2,_0xff22x9,_0xff22x13,null,null,!0)};this[_0x2b73[746]]( new mxEventObject(mxEvent.MOVE_CELLS,_0x2b73[895],_0xff22x2,_0x2b73[1126],_0xff22x3,_0x2b73[1125],_0xff22x4,_0x2b73[238],_0xff22x5,_0x2b73[772],_0xff22x9,_0x2b73[763],_0xff22xa))}finally{this[_0x2b73[251]][_0x2b73[476]]()}};return _0xff22x2};mxGraph[_0x2b73[202]][_0x2b73[835]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){if(null!= _0xff22x2&& (0!= _0xff22x3|| 0!= _0xff22x4)){this[_0x2b73[251]][_0x2b73[473]]();try{_0xff22x5&& this[_0x2b73[2531]](_0xff22x2);for(var _0xff22xa=0;_0xff22xa< _0xff22x2[_0x2b73[67]];_0xff22xa++){this[_0x2b73[2532]](_0xff22x2[_0xff22xa],_0xff22x3,_0xff22x4),_0xff22x9&& this[_0x2b73[2509]](_0xff22x2[_0xff22xa])};this[_0x2b73[2400]]&& this[_0x2b73[1750]](_0xff22x2);this[_0x2b73[746]]( new mxEventObject(mxEvent.CELLS_MOVED,_0x2b73[895],_0xff22x2,_0x2b73[1126],_0xff22x4,_0x2b73[1125],_0xff22x4,_0x2b73[808],_0xff22x5))}finally{this[_0x2b73[251]][_0x2b73[476]]()}}};mxGraph[_0x2b73[202]][_0x2b73[2532]]= function(_0xff22x2,_0xff22x3,_0xff22x4){var _0xff22x5=this[_0x2b73[251]][_0x2b73[1721]](_0xff22x2);null!= _0xff22x5&& (_0xff22x5= _0xff22x5[_0x2b73[238]](),_0xff22x5[_0x2b73[513]](_0xff22x3,_0xff22x4),!_0xff22x5[_0x2b73[1500]]&& (this[_0x2b73[251]][_0x2b73[1193]](_0xff22x2)&& !this[_0x2b73[2505]]())&& (_0xff22x5[_0x2b73[235]]= Math[_0x2b73[160]](0,_0xff22x5[_0x2b73[235]]),_0xff22x5[_0x2b73[236]]= Math[_0x2b73[160]](0,_0xff22x5[_0x2b73[236]])),_0xff22x5[_0x2b73[1500]]&& !this[_0x2b73[251]][_0x2b73[250]](_0xff22x2)&& (null== _0xff22x5[_0x2b73[1368]]?_0xff22x5[_0x2b73[1368]]= new mxPoint(_0xff22x3,_0xff22x4):(_0xff22x5[_0x2b73[1368]][_0x2b73[235]]+= _0xff22x3,_0xff22x5[_0x2b73[1368]][_0x2b73[236]]+= _0xff22x4)),this[_0x2b73[251]][_0x2b73[1724]](_0xff22x2,_0xff22x5))};mxGraph[_0x2b73[202]][_0x2b73[2533]]= function(_0xff22x2){if(null!= _0xff22x2&& !this[_0x2b73[251]][_0x2b73[250]](_0xff22x2)){var _0xff22x3=this[_0x2b73[251]][_0x2b73[1197]](_0xff22x2);if(_0xff22x3== this[_0x2b73[902]]()|| _0xff22x3== this[_0x2b73[2534]]()){return this[_0x2b73[2535]]()};if(null!= _0xff22x3&& _0xff22x3!= this[_0x2b73[902]]()){var _0xff22x4=this[_0x2b73[251]][_0x2b73[1721]](_0xff22x3);if(null!= _0xff22x4){var _0xff22x5=_0xff22x2= 0,_0xff22x9=_0xff22x4[_0x2b73[117]],_0xff22x4=_0xff22x4[_0x2b73[119]];this[_0x2b73[1730]](_0xff22x3)&& (_0xff22x3= this[_0x2b73[1731]](_0xff22x3),_0xff22x2= _0xff22x3[_0x2b73[117]],_0xff22x9-= _0xff22x3[_0x2b73[117]],_0xff22x5= _0xff22x3[_0x2b73[119]],_0xff22x4-= _0xff22x3[_0x2b73[119]]);return new mxRectangle(_0xff22x2,_0xff22x5,_0xff22x9,_0xff22x4)}}};return null};mxGraph[_0x2b73[202]][_0x2b73[2535]]= function(){return this[_0x2b73[2385]]};mxGraph[_0x2b73[202]][_0x2b73[2509]]= function(_0xff22x2){if(null!= _0xff22x2){var _0xff22x3=this[_0x2b73[251]][_0x2b73[1721]](_0xff22x2),_0xff22x4=this[_0x2b73[2536]](_0xff22x2)?this[_0x2b73[2533]](_0xff22x2):this[_0x2b73[2535]]();if(null!= _0xff22x3&& null!= _0xff22x4&& !_0xff22x3[_0x2b73[1500]]&& (_0xff22x3[_0x2b73[235]]< _0xff22x4[_0x2b73[235]]|| _0xff22x3[_0x2b73[236]]< _0xff22x4[_0x2b73[236]]|| _0xff22x4[_0x2b73[117]]< _0xff22x3[_0x2b73[235]]+ _0xff22x3[_0x2b73[117]]|| _0xff22x4[_0x2b73[119]]< _0xff22x3[_0x2b73[236]]+ _0xff22x3[_0x2b73[119]])){_0xff22x2= this[_0x2b73[2537]](_0xff22x2),0< _0xff22x4[_0x2b73[117]]&& (_0xff22x3[_0x2b73[235]]= Math[_0x2b73[243]](_0xff22x3[_0x2b73[235]],_0xff22x4[_0x2b73[235]]+ _0xff22x4[_0x2b73[117]]- (1- _0xff22x2)* _0xff22x3[_0x2b73[117]])),0< _0xff22x4[_0x2b73[119]]&& (_0xff22x3[_0x2b73[236]]= Math[_0x2b73[243]](_0xff22x3[_0x2b73[236]],_0xff22x4[_0x2b73[236]]+ _0xff22x4[_0x2b73[119]]- (1- _0xff22x2)* _0xff22x3[_0x2b73[119]])),_0xff22x3[_0x2b73[235]]= Math[_0x2b73[160]](_0xff22x3[_0x2b73[235]],_0xff22x4[_0x2b73[235]]- _0xff22x3[_0x2b73[117]]* _0xff22x2),_0xff22x3[_0x2b73[236]]= Math[_0x2b73[160]](_0xff22x3[_0x2b73[236]],_0xff22x4[_0x2b73[236]]- _0xff22x3[_0x2b73[119]]* _0xff22x2)}}};mxGraph[_0x2b73[202]][_0x2b73[1750]]= function(_0xff22x2){if(null!= _0xff22x2){for(var _0xff22x3={},_0xff22x4=0;_0xff22x4< _0xff22x2[_0x2b73[67]];_0xff22x4++){var _0xff22x5=mxCellPath[_0x2b73[385]](_0xff22x2[_0xff22x4]);_0xff22x3[_0xff22x5]= _0xff22x2[_0xff22x4]};this[_0x2b73[251]][_0x2b73[473]]();try{for(_0xff22x4= 0;_0xff22x4< _0xff22x2[_0x2b73[67]];_0xff22x4++){var _0xff22x9=this[_0x2b73[251]][_0x2b73[264]](_0xff22x2[_0xff22x4]);if(null!= _0xff22x9){for(_0xff22x5= 0;_0xff22x5< _0xff22x9[_0x2b73[67]];_0xff22x5++){var _0xff22xa=this[_0x2b73[441]][_0x2b73[248]](_0xff22x9[_0xff22x5]),_0xff22x12=null!= _0xff22xa?_0xff22xa[_0x2b73[1710]](!0):this[_0x2b73[441]][_0x2b73[1710]](_0xff22x9[_0xff22x5],!0),_0xff22x13=null!= _0xff22xa?_0xff22xa[_0x2b73[1710]](!1):this[_0x2b73[441]][_0x2b73[1710]](_0xff22x9[_0xff22x5],!1),_0xff22x14=mxCellPath[_0x2b73[385]](_0xff22x12),_0xff22x15=mxCellPath[_0x2b73[385]](_0xff22x13);(null== _0xff22x3[_0xff22x14]|| null== _0xff22x3[_0xff22x15])&& this[_0x2b73[1809]](_0xff22x9[_0xff22x5])}};this[_0x2b73[1750]](this[_0x2b73[251]][_0x2b73[1953]](_0xff22x2[_0xff22x4]))}}finally{this[_0x2b73[251]][_0x2b73[476]]()}}};mxGraph[_0x2b73[202]][_0x2b73[1809]]= function(_0xff22x2){var _0xff22x3=this[_0x2b73[251]][_0x2b73[1721]](_0xff22x2);null!= _0xff22x3&& (null!= _0xff22x3[_0x2b73[1525]]&& 0< _0xff22x3[_0x2b73[1525]][_0x2b73[67]])&& (_0xff22x3= _0xff22x3[_0x2b73[238]](),_0xff22x3[_0x2b73[1525]]= [],this[_0x2b73[251]][_0x2b73[1724]](_0xff22x2,_0xff22x3));return _0xff22x2};mxGraph[_0x2b73[202]][_0x2b73[2538]]= function(_0xff22x2,_0xff22x3){return null!= _0xff22x2&& null!= _0xff22x2[_0x2b73[253]]&& null!= _0xff22x2[_0x2b73[253]][_0x2b73[1561]]?_0xff22x2[_0x2b73[253]][_0x2b73[1561]][_0x2b73[1531]]:null};mxGraph[_0x2b73[202]][_0x2b73[2288]]= function(_0xff22x2,_0xff22x3,_0xff22x4){_0xff22x3= null;var _0xff22x5=_0xff22x2[_0x2b73[124]][_0xff22x4?mxConstants[_0x2b73[2539]]:mxConstants[_0x2b73[2540]]];if(null!= _0xff22x5){var _0xff22x9=_0xff22x2[_0x2b73[124]][_0xff22x4?mxConstants[_0x2b73[2541]]:mxConstants[_0x2b73[2542]]];null!= _0xff22x9&& (_0xff22x3= new mxPoint(parseFloat(_0xff22x5),parseFloat(_0xff22x9)))};_0xff22x5= !1;null!= _0xff22x3&& (_0xff22x5= mxUtils[_0x2b73[433]](_0xff22x2[_0x2b73[124]],_0xff22x4?mxConstants[_0x2b73[2543]]:mxConstants[_0x2b73[2544]],!0));return new mxConnectionConstraint(_0xff22x3,_0xff22x5)};mxGraph[_0x2b73[202]][_0x2b73[2545]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){if(null!= _0xff22x5){this[_0x2b73[251]][_0x2b73[473]]();try{null== _0xff22x5|| null== _0xff22x5[_0x2b73[2546]]?(this[_0x2b73[1717]](_0xff22x4?mxConstants[_0x2b73[2539]]:mxConstants[_0x2b73[2540]],null,[_0xff22x2]),this[_0x2b73[1717]](_0xff22x4?mxConstants[_0x2b73[2541]]:mxConstants[_0x2b73[2542]],null,[_0xff22x2]),this[_0x2b73[1717]](_0xff22x4?mxConstants[_0x2b73[2543]]:mxConstants[_0x2b73[2544]],null,[_0xff22x2])):null!= _0xff22x5[_0x2b73[2546]]&& (this[_0x2b73[1717]](_0xff22x4?mxConstants[_0x2b73[2539]]:mxConstants[_0x2b73[2540]],_0xff22x5[_0x2b73[2546]][_0x2b73[235]],[_0xff22x2]),this[_0x2b73[1717]](_0xff22x4?mxConstants[_0x2b73[2541]]:mxConstants[_0x2b73[2542]],_0xff22x5[_0x2b73[2546]][_0x2b73[236]],[_0xff22x2]),_0xff22x5[_0x2b73[591]]?this[_0x2b73[1717]](_0xff22x4?mxConstants[_0x2b73[2543]]:mxConstants[_0x2b73[2544]],null,[_0xff22x2]):this[_0x2b73[1717]](_0xff22x4?mxConstants[_0x2b73[2543]]:mxConstants[_0x2b73[2544]],_0x2b73[468],[_0xff22x2]))}finally{this[_0x2b73[251]][_0x2b73[476]]()}}};mxGraph[_0x2b73[202]][_0x2b73[2290]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=null;if(null!= _0xff22x2){var _0xff22x5=this[_0x2b73[441]][_0x2b73[2087]](_0xff22x2),_0xff22x9= new mxPoint(_0xff22x5[_0x2b73[241]](),_0xff22x5[_0x2b73[242]]()),_0xff22xa=_0xff22x2[_0x2b73[124]][mxConstants[_0x2b73[2011]]],_0xff22x12=0;if(null!= _0xff22xa&& (_0x2b73[700]== _0xff22xa?_0xff22x12+= 270:_0x2b73[703]== _0xff22xa?_0xff22x12+= 180:_0x2b73[701]== _0xff22xa&& (_0xff22x12+= 90),_0x2b73[700]== _0xff22xa|| _0x2b73[701]== _0xff22xa)){_0xff22x5[_0x2b73[235]]+= _0xff22x5[_0x2b73[117]]/ 2- _0xff22x5[_0x2b73[119]]/ 2;_0xff22x5[_0x2b73[236]]+= _0xff22x5[_0x2b73[119]]/ 2- _0xff22x5[_0x2b73[117]]/ 2;var _0xff22x13=_0xff22x5[_0x2b73[117]];_0xff22x5[_0x2b73[117]]= _0xff22x5[_0x2b73[119]];_0xff22x5[_0x2b73[119]]= _0xff22x13};if(null!= _0xff22x3[_0x2b73[2546]]){var _0xff22x14=_0xff22x4= 1,_0xff22x15=0,_0xff22x16=0;if(this[_0x2b73[502]]()[_0x2b73[1193]](_0xff22x2[_0x2b73[246]])){var _0xff22x17=_0xff22x2[_0x2b73[124]][mxConstants[_0x2b73[2547]]],_0xff22x18=_0xff22x2[_0x2b73[124]][mxConstants[_0x2b73[2548]]];null!= _0xff22x2[_0x2b73[253]][_0x2b73[1561]]&& (_0xff22x17= 1== mxUtils[_0x2b73[433]](_0xff22x2[_0x2b73[124]],_0x2b73[1607],0)|| _0xff22x17,_0xff22x18= 1== mxUtils[_0x2b73[433]](_0xff22x2[_0x2b73[124]],_0x2b73[1608],0)|| _0xff22x18);if(_0x2b73[700]== _0xff22xa|| _0x2b73[701]== _0xff22xa){_0xff22x13= _0xff22x17,_0xff22x17= _0xff22x18,_0xff22x18= _0xff22x13};_0xff22x17&& (_0xff22x4= -1,_0xff22x15= -_0xff22x5[_0x2b73[117]]);_0xff22x18&& (_0xff22x14= -1,_0xff22x16= -_0xff22x5[_0x2b73[119]])};_0xff22x4= new mxPoint(_0xff22x5[_0x2b73[235]]+ _0xff22x3[_0x2b73[2546]][_0x2b73[235]]* _0xff22x5[_0x2b73[117]]* _0xff22x4- _0xff22x15,_0xff22x5[_0x2b73[236]]+ _0xff22x3[_0x2b73[2546]][_0x2b73[236]]* _0xff22x5[_0x2b73[119]]* _0xff22x14- _0xff22x16)};_0xff22xa= _0xff22x2[_0x2b73[124]][mxConstants[_0x2b73[2278]]]|| 0;_0xff22x3[_0x2b73[591]]?(0!= _0xff22x12&& null!= _0xff22x4&& (_0xff22x13= _0xff22x5= 0,90== _0xff22x12?_0xff22x13= 1:180== _0xff22x12?_0xff22x5= -1:270== _0xff22xa&& (_0xff22x13= -1),_0xff22x4= mxUtils[_0x2b73[432]](_0xff22x4,_0xff22x5,_0xff22x13,_0xff22x9)),null!= _0xff22x4&& _0xff22x3[_0x2b73[591]]&& (_0xff22x4= this[_0x2b73[441]][_0x2b73[2302]](_0xff22x2,_0xff22x4,!1))):_0xff22xa+= _0xff22x12;0!= _0xff22xa&& null!= _0xff22x4&& (_0xff22x12= mxUtils[_0x2b73[431]](_0xff22xa),_0xff22x5= Math[_0x2b73[426]](_0xff22x12),_0xff22x13= Math[_0x2b73[427]](_0xff22x12),_0xff22x4= mxUtils[_0x2b73[432]](_0xff22x4,_0xff22x5,_0xff22x13,_0xff22x9))};return _0xff22x4};mxGraph[_0x2b73[202]][_0x2b73[851]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){this[_0x2b73[251]][_0x2b73[473]]();try{var _0xff22x9=this[_0x2b73[251]][_0x2b73[1709]](_0xff22x2,_0xff22x4);this[_0x2b73[852]](_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5);this[_0x2b73[746]]( new mxEventObject(mxEvent.CONNECT_CELL,_0x2b73[1989],_0xff22x2,_0x2b73[1984],_0xff22x3,_0x2b73[1097],_0xff22x4,_0x2b73[257],_0xff22x9))}finally{this[_0x2b73[251]][_0x2b73[476]]()};return _0xff22x2};mxGraph[_0x2b73[202]][_0x2b73[852]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){if(null!= _0xff22x2){this[_0x2b73[251]][_0x2b73[473]]();try{var _0xff22x9=this[_0x2b73[251]][_0x2b73[1709]](_0xff22x2,_0xff22x4);this[_0x2b73[2545]](_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5);this[_0x2b73[2549]]()&& (_0xff22x5= null,this[_0x2b73[1908]](_0xff22x3)&& (_0xff22x5= _0xff22x3[_0x2b73[1103]](),_0xff22x3= this[_0x2b73[2550]](_0xff22x3,_0xff22x4)),this[_0x2b73[1717]](_0xff22x4?mxConstants[_0x2b73[2303]]:mxConstants[_0x2b73[2304]],_0xff22x5,[_0xff22x2]));this[_0x2b73[251]][_0x2b73[1957]](_0xff22x2,_0xff22x3,_0xff22x4);this[_0x2b73[2401]]&& this[_0x2b73[1809]](_0xff22x2);this[_0x2b73[746]]( new mxEventObject(mxEvent.CELL_CONNECTED,_0x2b73[1989],_0xff22x2,_0x2b73[1984],_0xff22x3,_0x2b73[1097],_0xff22x4,_0x2b73[257],_0xff22x9))}finally{this[_0x2b73[251]][_0x2b73[476]]()}}};mxGraph[_0x2b73[202]][_0x2b73[2531]]= function(_0xff22x2){if(null!= _0xff22x2){this[_0x2b73[251]][_0x2b73[473]]();try{for(var _0xff22x3=this[_0x2b73[441]][_0x2b73[255]],_0xff22x4=this[_0x2b73[441]][_0x2b73[513]],_0xff22x5={},_0xff22x9=0;_0xff22x9< _0xff22x2[_0x2b73[67]];_0xff22x9++){var _0xff22xa=mxCellPath[_0x2b73[385]](_0xff22x2[_0xff22x9]);_0xff22x5[_0xff22xa]= _0xff22x2[_0xff22x9]};for(_0xff22x9= 0;_0xff22x9< _0xff22x2[_0x2b73[67]];_0xff22x9++){if(this[_0x2b73[251]][_0x2b73[250]](_0xff22x2[_0xff22x9])){var _0xff22x12=this[_0x2b73[251]][_0x2b73[1721]](_0xff22x2[_0xff22x9]);if(null!= _0xff22x12){var _0xff22x13=this[_0x2b73[441]][_0x2b73[248]](_0xff22x2[_0xff22x9]),_0xff22x14=this[_0x2b73[441]][_0x2b73[248]](this[_0x2b73[251]][_0x2b73[1197]](_0xff22x2[_0xff22x9]));if(null!= _0xff22x13&& null!= _0xff22x14){var _0xff22x12=_0xff22x12[_0x2b73[238]](),_0xff22x15=-_0xff22x14[_0x2b73[2078]][_0x2b73[235]],_0xff22x16=-_0xff22x14[_0x2b73[2078]][_0x2b73[236]],_0xff22x17=_0xff22x13[_0x2b73[439]],_0xff22x18=this[_0x2b73[251]][_0x2b73[1709]](_0xff22x2[_0xff22x9],!0);if(null!= _0xff22x18&& this[_0x2b73[2551]](_0xff22x2[_0xff22x9],_0xff22x18,!0)){for(var _0xff22x19=mxCellPath[_0x2b73[385]](_0xff22x18);null!= _0xff22x18&& null== _0xff22x5[_0xff22x19];){_0xff22x18= this[_0x2b73[251]][_0x2b73[1197]](_0xff22x18),_0xff22x19= mxCellPath[_0x2b73[385]](_0xff22x18)};null== _0xff22x18&& (_0xff22x12[_0x2b73[2007]]( new mxPoint(_0xff22x17[0][_0x2b73[235]]/ _0xff22x3- _0xff22x4[_0x2b73[235]]+ _0xff22x15,_0xff22x17[0][_0x2b73[236]]/ _0xff22x3- _0xff22x4[_0x2b73[236]]+ _0xff22x16),!0),this[_0x2b73[251]][_0x2b73[1957]](_0xff22x2[_0xff22x9],null,!0))};var _0xff22x1a=this[_0x2b73[251]][_0x2b73[1709]](_0xff22x2[_0xff22x9],!1);if(null!= _0xff22x1a&& this[_0x2b73[2551]](_0xff22x2[_0xff22x9],_0xff22x1a,!1)){for(var _0xff22x1b=mxCellPath[_0x2b73[385]](_0xff22x1a);null!= _0xff22x1a&& null== _0xff22x5[_0xff22x1b];){_0xff22x1a= this[_0x2b73[251]][_0x2b73[1197]](_0xff22x1a),_0xff22x1b= mxCellPath[_0x2b73[385]](_0xff22x1a)};if(null== _0xff22x1a){var _0xff22x1c=_0xff22x17[_0x2b73[67]]- 1;_0xff22x12[_0x2b73[2007]]( new mxPoint(_0xff22x17[_0xff22x1c][_0x2b73[235]]/ _0xff22x3- _0xff22x4[_0x2b73[235]]+ _0xff22x15,_0xff22x17[_0xff22x1c][_0x2b73[236]]/ _0xff22x3- _0xff22x4[_0x2b73[236]]+ _0xff22x16),!1);this[_0x2b73[251]][_0x2b73[1957]](_0xff22x2[_0xff22x9],null,!1)}};this[_0x2b73[251]][_0x2b73[1724]](_0xff22x2[_0xff22x9],_0xff22x12)}}}}}finally{this[_0x2b73[251]][_0x2b73[476]]()}}};mxGraph[_0x2b73[202]][_0x2b73[2534]]= function(){return this[_0x2b73[441]][_0x2b73[1741]]};mxGraph[_0x2b73[202]][_0x2b73[2326]]= function(_0xff22x2){return null};mxGraph[_0x2b73[202]][_0x2b73[1908]]= function(_0xff22x2){return !1};mxGraph[_0x2b73[202]][_0x2b73[2550]]= function(_0xff22x2,_0xff22x3){return this[_0x2b73[251]][_0x2b73[1197]](_0xff22x2)};mxGraph[_0x2b73[202]][_0x2b73[2280]]= function(_0xff22x2){return null};mxGraph[_0x2b73[202]][_0x2b73[2552]]= function(_0xff22x2){_0xff22x2= _0xff22x2|| this[_0x2b73[2452]]();null!= _0xff22x2&& this[_0x2b73[2553]](_0xff22x2)&& (this[_0x2b73[441]][_0x2b73[2257]](_0xff22x2),this[_0x2b73[2440]]())};mxGraph[_0x2b73[202]][_0x2b73[2554]]= function(){var _0xff22x2=this[_0x2b73[251]][_0x2b73[501]](),_0xff22x3=this[_0x2b73[2534]]();if(null!= _0xff22x3){for(var _0xff22x4=this[_0x2b73[251]][_0x2b73[1197]](_0xff22x3);_0xff22x4!= _0xff22x2&& !this[_0x2b73[2553]](_0xff22x4)&& this[_0x2b73[251]][_0x2b73[1197]](_0xff22x4)!= _0xff22x2;){_0xff22x4= this[_0x2b73[251]][_0x2b73[1197]](_0xff22x4)};_0xff22x4== _0xff22x2|| this[_0x2b73[251]][_0x2b73[1197]](_0xff22x4)== _0xff22x2?this[_0x2b73[441]][_0x2b73[2257]](null):this[_0x2b73[441]][_0x2b73[2257]](_0xff22x4);null!= this[_0x2b73[441]][_0x2b73[248]](_0xff22x3)&& this[_0x2b73[2450]](_0xff22x3)}};mxGraph[_0x2b73[202]][_0x2b73[2442]]= function(){var _0xff22x2=this[_0x2b73[2534]]();null!= _0xff22x2&& (this[_0x2b73[441]][_0x2b73[2257]](null),null!= this[_0x2b73[441]][_0x2b73[248]](_0xff22x2)&& this[_0x2b73[2450]](_0xff22x2))};mxGraph[_0x2b73[202]][_0x2b73[2553]]= function(_0xff22x2){return null!= _0xff22x2};mxGraph[_0x2b73[202]][_0x2b73[517]]= function(){return this[_0x2b73[441]][_0x2b73[517]]()};mxGraph[_0x2b73[202]][_0x2b73[2555]]= function(_0xff22x2,_0xff22x3,_0xff22x4){var _0xff22x5=[_0xff22x2];_0xff22x3&& (_0xff22x5= _0xff22x5[_0x2b73[1919]](this[_0x2b73[251]][_0x2b73[264]](_0xff22x2)));_0xff22x5= this[_0x2b73[441]][_0x2b73[1799]](_0xff22x5);if(_0xff22x4){_0xff22x4= this[_0x2b73[251]][_0x2b73[262]](_0xff22x2);for(var _0xff22x9=0;_0xff22x9< _0xff22x4;_0xff22x9++){var _0xff22xa=this[_0x2b73[2555]](this[_0x2b73[251]][_0x2b73[263]](_0xff22x2,_0xff22x9),_0xff22x3,!0);null!= _0xff22x5?_0xff22x5[_0x2b73[99]](_0xff22xa):_0xff22x5= _0xff22xa}};return _0xff22x5};mxGraph[_0x2b73[202]][_0x2b73[1729]]= function(_0xff22x2,_0xff22x3){_0xff22x3= null!= _0xff22x3?_0xff22x3:!1;var _0xff22x4=null;if(null!= _0xff22x2){for(var _0xff22x5=0;_0xff22x5< _0xff22x2[_0x2b73[67]];_0xff22x5++){if(_0xff22x3|| this[_0x2b73[251]][_0x2b73[1193]](_0xff22x2[_0xff22x5])){var _0xff22x9=this[_0x2b73[1198]](_0xff22x2[_0xff22x5]);if(null!= _0xff22x9){var _0xff22xa=_0xff22x9[_0x2b73[1525]];if(null!= _0xff22xa&& 0< _0xff22xa[_0x2b73[67]]){for(var _0xff22x12= new mxRectangle(_0xff22xa[0][_0x2b73[235]],_0xff22xa[0][_0x2b73[236]],0,0),_0xff22x13=function(_0xff22x2){null!= _0xff22x2&& _0xff22x12[_0x2b73[99]]( new mxRectangle(_0xff22x2[_0x2b73[235]],_0xff22x2[_0x2b73[236]],0,0))},_0xff22x14=1;_0xff22x14< _0xff22xa[_0x2b73[67]];_0xff22x14++){_0xff22x13(_0xff22xa[_0xff22x14])};_0xff22x13(_0xff22x9[_0x2b73[2006]](!0));_0xff22x13(_0xff22x9[_0x2b73[2006]](!1))};null== _0xff22x4?_0xff22x4= new mxRectangle(_0xff22x9[_0x2b73[235]],_0xff22x9[_0x2b73[236]],_0xff22x9[_0x2b73[117]],_0xff22x9[_0x2b73[119]]):_0xff22x4[_0x2b73[99]](_0xff22x9)}}}};return _0xff22x4};mxGraph[_0x2b73[202]][_0x2b73[802]]= function(_0xff22x2){this[_0x2b73[441]][_0x2b73[200]](_0xff22x2,null== _0xff22x2);this[_0x2b73[441]][_0x2b73[2264]]();this[_0x2b73[2258]]();this[_0x2b73[746]]( new mxEventObject(mxEvent.REFRESH))};mxGraph[_0x2b73[202]][_0x2b73[1021]]= function(_0xff22x2){this[_0x2b73[991]]&& (_0xff22x2= Math[_0x2b73[488]](_0xff22x2/ this[_0x2b73[1020]])* this[_0x2b73[1020]]);return _0xff22x2};mxGraph[_0x2b73[202]][_0x2b73[1135]]= function(_0xff22x2,_0xff22x3){if(this[_0x2b73[2365]]&& mxUtils[_0x2b73[1134]](this[_0x2b73[526]])){this[_0x2b73[526]][_0x2b73[360]]= -_0xff22x2,this[_0x2b73[526]][_0x2b73[190]]= -_0xff22x3}else {var _0xff22x4=this[_0x2b73[441]][_0x2b73[2051]]();if(this[_0x2b73[507]]== mxConstants[_0x2b73[508]]){if(0== _0xff22x2&& 0== _0xff22x3){if(mxClient[_0x2b73[80]]?_0xff22x4[_0x2b73[57]](_0x2b73[535],_0x2b73[536]+ _0xff22x2+ _0x2b73[537]+ _0xff22x3+ _0x2b73[460]):_0xff22x4[_0x2b73[1390]](_0x2b73[535]),null!= this[_0x2b73[2556]]){for(var _0xff22x5=this[_0x2b73[2556]][_0x2b73[285]];null!= _0xff22x5;){var _0xff22x9=_0xff22x5[_0x2b73[287]];this[_0x2b73[526]][_0x2b73[62]](_0xff22x5);_0xff22x5= _0xff22x9};this[_0x2b73[2556]][_0x2b73[265]][_0x2b73[266]](this[_0x2b73[2556]]);this[_0x2b73[2556]]= null;this[_0x2b73[526]][_0x2b73[62]](_0xff22x4[_0x2b73[265]]);for(_0xff22x5= this[_0x2b73[2557]][_0x2b73[285]];null!= _0xff22x5;){_0xff22x9= _0xff22x5[_0x2b73[287]],this[_0x2b73[526]][_0x2b73[62]](_0xff22x5),_0xff22x5= _0xff22x9};this[_0x2b73[2557]][_0x2b73[265]][_0x2b73[266]](this[_0x2b73[2557]]);this[_0x2b73[2557]]= null}}else {_0xff22x4[_0x2b73[57]](_0x2b73[535],_0x2b73[536]+ _0xff22x2+ _0x2b73[537]+ _0xff22x3+ _0x2b73[460]);if(null== this[_0x2b73[2556]]){this[_0x2b73[2556]]= document[_0x2b73[55]](_0x2b73[485]);this[_0x2b73[2556]][_0x2b73[124]][_0x2b73[491]]= _0x2b73[492];this[_0x2b73[2556]][_0x2b73[124]][_0x2b73[277]]= _0x2b73[189];this[_0x2b73[2557]]= document[_0x2b73[55]](_0x2b73[485]);this[_0x2b73[2557]][_0x2b73[124]][_0x2b73[491]]= _0x2b73[492];this[_0x2b73[2557]][_0x2b73[124]][_0x2b73[277]]= _0x2b73[189];for(var _0xff22xa=this[_0x2b73[2556]],_0xff22x5=this[_0x2b73[526]][_0x2b73[285]];null!= _0xff22x5;){_0xff22x9= _0xff22x5[_0x2b73[287]],_0xff22x5!= _0xff22x4[_0x2b73[265]]?_0xff22xa[_0x2b73[62]](_0xff22x5):_0xff22xa= this[_0x2b73[2557]],_0xff22x5= _0xff22x9};this[_0x2b73[526]][_0x2b73[950]](this[_0x2b73[2556]],_0xff22x4[_0x2b73[265]]);this[_0x2b73[526]][_0x2b73[62]](this[_0x2b73[2557]])};this[_0x2b73[2556]][_0x2b73[124]][_0x2b73[361]]= _0xff22x2+ _0x2b73[168];this[_0x2b73[2556]][_0x2b73[124]][_0x2b73[125]]= _0xff22x3+ _0x2b73[168];this[_0x2b73[2557]][_0x2b73[124]][_0x2b73[361]]= _0xff22x2+ _0x2b73[168];this[_0x2b73[2557]][_0x2b73[124]][_0x2b73[125]]= _0xff22x3+ _0x2b73[168]}}else {_0xff22x4[_0x2b73[124]][_0x2b73[361]]= _0xff22x2+ _0x2b73[168],_0xff22x4[_0x2b73[124]][_0x2b73[125]]= _0xff22x3+ _0x2b73[168]};this[_0x2b73[1136]]= _0xff22x2;this[_0x2b73[1137]]= _0xff22x3;this[_0x2b73[746]]( new mxEventObject(mxEvent.PAN))}};mxGraph[_0x2b73[202]][_0x2b73[2558]]= function(){this[_0x2b73[499]](this[_0x2b73[2395]])};mxGraph[_0x2b73[202]][_0x2b73[2559]]= function(){this[_0x2b73[499]](1/ this[_0x2b73[2395]])};mxGraph[_0x2b73[202]][_0x2b73[2560]]= function(){1== this[_0x2b73[441]][_0x2b73[255]]?this[_0x2b73[441]][_0x2b73[1147]](0,0):(this[_0x2b73[441]][_0x2b73[513]][_0x2b73[235]]= 0,this[_0x2b73[441]][_0x2b73[513]][_0x2b73[236]]= 0,this[_0x2b73[441]][_0x2b73[2262]](1))};mxGraph[_0x2b73[202]][_0x2b73[2561]]= function(_0xff22x2,_0xff22x3){this[_0x2b73[499]](_0xff22x2/ this[_0x2b73[441]][_0x2b73[255]],_0xff22x3)};mxGraph[_0x2b73[202]][_0x2b73[499]]= function(_0xff22x2,_0xff22x3){_0xff22x3= null!= _0xff22x3?_0xff22x3:this[_0x2b73[2397]];var _0xff22x4=this[_0x2b73[441]][_0x2b73[255]]* _0xff22x2,_0xff22x5=this[_0x2b73[441]][_0x2b73[248]](this[_0x2b73[2452]]());if(this[_0x2b73[2396]]&& null!= _0xff22x5){_0xff22x5= new mxRectangle(_0xff22x5[_0x2b73[235]]* _0xff22x2,_0xff22x5[_0x2b73[236]]* _0xff22x2,_0xff22x5[_0x2b73[117]]* _0xff22x2,_0xff22x5[_0x2b73[119]]* _0xff22x2),this[_0x2b73[441]][_0x2b73[255]]= _0xff22x4,this[_0x2b73[2562]](_0xff22x5)|| (this[_0x2b73[441]][_0x2b73[2259]](),this[_0x2b73[441]][_0x2b73[2262]](_0xff22x4))}else {if(_0xff22x3&& !mxUtils[_0x2b73[1134]](this[_0x2b73[526]])){var _0xff22x5=this[_0x2b73[526]][_0x2b73[359]],_0xff22x9=this[_0x2b73[526]][_0x2b73[167]];if(1< _0xff22x2){var _0xff22xa=(_0xff22x2- 1)/ (2* _0xff22x4),_0xff22x5=_0xff22x5* -_0xff22xa,_0xff22x9=_0xff22x9* -_0xff22xa}else {_0xff22xa= (1/ _0xff22x2- 1)/ (2* this[_0x2b73[441]][_0x2b73[255]]),_0xff22x5*= _0xff22xa,_0xff22x9*= _0xff22xa};this[_0x2b73[441]][_0x2b73[829]](_0xff22x4,this[_0x2b73[441]][_0x2b73[513]][_0x2b73[235]]+ _0xff22x5,this[_0x2b73[441]][_0x2b73[513]][_0x2b73[236]]+ _0xff22x9)}else {this[_0x2b73[441]][_0x2b73[2262]](_0xff22x4),mxUtils[_0x2b73[1134]](this[_0x2b73[526]])&& (_0xff22x9= _0xff22x5= 0,_0xff22x3&& (_0xff22x5= this[_0x2b73[526]][_0x2b73[359]]* (_0xff22x2- 1)/ 2,_0xff22x9= this[_0x2b73[526]][_0x2b73[167]]* (_0xff22x2- 1)/ 2),this[_0x2b73[526]][_0x2b73[360]]= Math[_0x2b73[488]](this[_0x2b73[526]][_0x2b73[360]]* _0xff22x2+ _0xff22x5),this[_0x2b73[526]][_0x2b73[190]]= Math[_0x2b73[488]](this[_0x2b73[526]][_0x2b73[190]]* _0xff22x2+ _0xff22x9))}}};mxGraph[_0x2b73[202]][_0x2b73[2563]]= function(_0xff22x2){var _0xff22x3=this[_0x2b73[526]][_0x2b73[159]]/ _0xff22x2[_0x2b73[117]]/ (this[_0x2b73[526]][_0x2b73[157]]/ _0xff22x2[_0x2b73[119]]);_0xff22x2[_0x2b73[235]]= Math[_0x2b73[160]](0,_0xff22x2[_0x2b73[235]]);_0xff22x2[_0x2b73[236]]= Math[_0x2b73[160]](0,_0xff22x2[_0x2b73[236]]);var _0xff22x4=Math[_0x2b73[243]](this[_0x2b73[526]][_0x2b73[1526]],_0xff22x2[_0x2b73[235]]+ _0xff22x2[_0x2b73[117]]),_0xff22x5=Math[_0x2b73[243]](this[_0x2b73[526]][_0x2b73[191]],_0xff22x2[_0x2b73[236]]+ _0xff22x2[_0x2b73[119]]);_0xff22x2[_0x2b73[117]]= _0xff22x4- _0xff22x2[_0x2b73[235]];_0xff22x2[_0x2b73[119]]= _0xff22x5- _0xff22x2[_0x2b73[236]];1> _0xff22x3?(_0xff22x3= _0xff22x2[_0x2b73[119]]/ _0xff22x3,_0xff22x4= (_0xff22x3- _0xff22x2[_0x2b73[119]])/ 2,_0xff22x2[_0x2b73[119]]= _0xff22x3,_0xff22x3= Math[_0x2b73[243]](_0xff22x2[_0x2b73[236]],_0xff22x4),_0xff22x2[_0x2b73[236]]-= _0xff22x3,_0xff22x5= Math[_0x2b73[243]](this[_0x2b73[526]][_0x2b73[191]],_0xff22x2[_0x2b73[236]]+ _0xff22x2[_0x2b73[119]]),_0xff22x2[_0x2b73[119]]= _0xff22x5- _0xff22x2[_0x2b73[236]]):(_0xff22x3*= _0xff22x2[_0x2b73[117]],_0xff22x4= (_0xff22x3- _0xff22x2[_0x2b73[117]])/ 2,_0xff22x2[_0x2b73[117]]= _0xff22x3,_0xff22x3= Math[_0x2b73[243]](_0xff22x2[_0x2b73[235]],_0xff22x4),_0xff22x2[_0x2b73[235]]-= _0xff22x3,_0xff22x4= Math[_0x2b73[243]](this[_0x2b73[526]][_0x2b73[1526]],_0xff22x2[_0x2b73[235]]+ _0xff22x2[_0x2b73[117]]),_0xff22x2[_0x2b73[117]]= _0xff22x4- _0xff22x2[_0x2b73[235]]);_0xff22x3= this[_0x2b73[526]][_0x2b73[159]]/ _0xff22x2[_0x2b73[117]];_0xff22x4= this[_0x2b73[441]][_0x2b73[255]]* _0xff22x3;mxUtils[_0x2b73[1134]](this[_0x2b73[526]])?(this[_0x2b73[441]][_0x2b73[2262]](_0xff22x4),this[_0x2b73[526]][_0x2b73[360]]= Math[_0x2b73[488]](_0xff22x2[_0x2b73[235]]* _0xff22x3),this[_0x2b73[526]][_0x2b73[190]]= Math[_0x2b73[488]](_0xff22x2[_0x2b73[236]]* _0xff22x3)):this[_0x2b73[441]][_0x2b73[829]](_0xff22x4,this[_0x2b73[441]][_0x2b73[513]][_0x2b73[235]]- _0xff22x2[_0x2b73[235]]/ this[_0x2b73[441]][_0x2b73[255]],this[_0x2b73[441]][_0x2b73[513]][_0x2b73[236]]- _0xff22x2[_0x2b73[236]]/ this[_0x2b73[441]][_0x2b73[255]])};mxGraph[_0x2b73[202]][_0x2b73[933]]= function(_0xff22x2,_0xff22x3){if(null!= this[_0x2b73[526]]){_0xff22x2= null!= _0xff22x2?_0xff22x2:0;_0xff22x3= null!= _0xff22x3?_0xff22x3:!1;var _0xff22x4=this[_0x2b73[526]][_0x2b73[159]],_0xff22x5=this[_0x2b73[526]][_0x2b73[157]],_0xff22x9=this[_0x2b73[441]][_0x2b73[517]]();_0xff22x3&& (null!= _0xff22x9[_0x2b73[235]]&& null!= _0xff22x9[_0x2b73[236]])&& (_0xff22x9[_0x2b73[117]]+= _0xff22x9[_0x2b73[235]],_0xff22x9[_0x2b73[119]]+= _0xff22x9[_0x2b73[236]],_0xff22x9[_0x2b73[235]]= 0,_0xff22x9[_0x2b73[236]]= 0);var _0xff22xa=this[_0x2b73[441]][_0x2b73[255]],_0xff22x12=_0xff22x9[_0x2b73[117]]/ _0xff22xa,_0xff22x13=_0xff22x9[_0x2b73[119]]/ _0xff22xa;null!= this[_0x2b73[1617]]&& (_0xff22x12= Math[_0x2b73[160]](_0xff22x12,this[_0x2b73[1617]][_0x2b73[117]]- _0xff22x9[_0x2b73[235]]/ _0xff22xa),_0xff22x13= Math[_0x2b73[160]](_0xff22x13,this[_0x2b73[1617]][_0x2b73[119]]- _0xff22x9[_0x2b73[236]]/ _0xff22xa));var _0xff22x14=_0xff22x3?_0xff22x2:2* _0xff22x2,_0xff22x4=Math[_0x2b73[519]](100* Math[_0x2b73[243]](_0xff22x4/ (_0xff22x12+ _0xff22x14),_0xff22x5/ (_0xff22x13+ _0xff22x14)))/ 100;null!= this[_0x2b73[2413]]&& (_0xff22x4= Math[_0x2b73[160]](_0xff22x4,this[_0x2b73[2413]]));null!= this[_0x2b73[2414]]&& (_0xff22x4= Math[_0x2b73[243]](_0xff22x4,this[_0x2b73[2414]]));_0xff22x3?this[_0x2b73[441]][_0x2b73[255]]!= _0xff22x4&& this[_0x2b73[441]][_0x2b73[2262]](_0xff22x4):mxUtils[_0x2b73[1134]](this[_0x2b73[526]])?(this[_0x2b73[441]][_0x2b73[2262]](_0xff22x4),null!= _0xff22x9[_0x2b73[235]]&& (this[_0x2b73[526]][_0x2b73[360]]= Math[_0x2b73[488]](_0xff22x9[_0x2b73[235]]/ _0xff22xa)* _0xff22x4- _0xff22x2- Math[_0x2b73[160]](0,(this[_0x2b73[526]][_0x2b73[159]]- _0xff22x12* _0xff22x4)/ 2)),null!= _0xff22x9[_0x2b73[236]]&& (this[_0x2b73[526]][_0x2b73[190]]= Math[_0x2b73[488]](_0xff22x9[_0x2b73[236]]/ _0xff22xa)* _0xff22x4- _0xff22x2- Math[_0x2b73[160]](0,(this[_0x2b73[526]][_0x2b73[157]]- _0xff22x13* _0xff22x4)/ 2))):this[_0x2b73[441]][_0x2b73[829]](_0xff22x4,null!= _0xff22x9[_0x2b73[235]]?Math[_0x2b73[519]](this[_0x2b73[441]][_0x2b73[513]][_0x2b73[235]]- _0xff22x9[_0x2b73[235]]/ _0xff22xa+ _0xff22x2+ 1):_0xff22x2,null!= _0xff22x9[_0x2b73[236]]?Math[_0x2b73[519]](this[_0x2b73[441]][_0x2b73[513]][_0x2b73[236]]- _0xff22x9[_0x2b73[236]]/ _0xff22xa+ _0xff22x2+ 1):_0xff22x2)};return this[_0x2b73[441]][_0x2b73[255]]};mxGraph[_0x2b73[202]][_0x2b73[2564]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=-this[_0x2b73[441]][_0x2b73[513]][_0x2b73[235]],_0xff22x5=-this[_0x2b73[441]][_0x2b73[513]][_0x2b73[236]],_0xff22x9=this[_0x2b73[441]][_0x2b73[248]](_0xff22x2);null!= _0xff22x9&& (_0xff22x4= new mxRectangle(_0xff22x4+ _0xff22x9[_0x2b73[235]],_0xff22x5+ _0xff22x9[_0x2b73[236]],_0xff22x9[_0x2b73[117]],_0xff22x9[_0x2b73[119]]),_0xff22x3&& null!= this[_0x2b73[526]]&& (_0xff22x5= this[_0x2b73[526]][_0x2b73[159]],_0xff22x9= this[_0x2b73[526]][_0x2b73[157]],_0xff22x4[_0x2b73[235]]= _0xff22x4[_0x2b73[241]]()- _0xff22x5/ 2,_0xff22x4[_0x2b73[117]]= _0xff22x5,_0xff22x4[_0x2b73[236]]= _0xff22x4[_0x2b73[242]]()- _0xff22x9/ 2,_0xff22x4[_0x2b73[119]]= _0xff22x9),this[_0x2b73[2562]](_0xff22x4)&& this[_0x2b73[441]][_0x2b73[1147]](this[_0x2b73[441]][_0x2b73[513]][_0x2b73[235]],this[_0x2b73[441]][_0x2b73[513]][_0x2b73[236]]))};mxGraph[_0x2b73[202]][_0x2b73[2562]]= function(_0xff22x2){var _0xff22x3=!1;if(null!= _0xff22x2){var _0xff22x4=this[_0x2b73[526]][_0x2b73[359]],_0xff22x5=this[_0x2b73[526]][_0x2b73[167]],_0xff22x9=Math[_0x2b73[243]](_0xff22x4,_0xff22x2[_0x2b73[117]]),_0xff22xa=Math[_0x2b73[243]](_0xff22x5,_0xff22x2[_0x2b73[119]]);if(mxUtils[_0x2b73[1134]](this[_0x2b73[526]])){_0xff22x4= this[_0x2b73[526]];_0xff22x2[_0x2b73[235]]+= this[_0x2b73[441]][_0x2b73[513]][_0x2b73[235]];_0xff22x2[_0x2b73[236]]+= this[_0x2b73[441]][_0x2b73[513]][_0x2b73[236]];var _0xff22x12=_0xff22x4[_0x2b73[360]]- _0xff22x2[_0x2b73[235]],_0xff22x5=Math[_0x2b73[160]](_0xff22x12- _0xff22x4[_0x2b73[360]],0);0< _0xff22x12?_0xff22x4[_0x2b73[360]]-= _0xff22x12+ 2:(_0xff22x12= _0xff22x2[_0x2b73[235]]+ _0xff22x9- _0xff22x4[_0x2b73[360]]- _0xff22x4[_0x2b73[159]],0< _0xff22x12&& (_0xff22x4[_0x2b73[360]]+= _0xff22x12+ 2));_0xff22x9= _0xff22x4[_0x2b73[190]]- _0xff22x2[_0x2b73[236]];_0xff22x12= Math[_0x2b73[160]](0,_0xff22x9- _0xff22x4[_0x2b73[190]]);0< _0xff22x9?_0xff22x4[_0x2b73[190]]-= _0xff22x9+ 2:(_0xff22x9= _0xff22x2[_0x2b73[236]]+ _0xff22xa- _0xff22x4[_0x2b73[190]]- _0xff22x4[_0x2b73[157]],0< _0xff22x9&& (_0xff22x4[_0x2b73[190]]+= _0xff22x9+ 2));!this[_0x2b73[2365]]&& (0!= _0xff22x5|| 0!= _0xff22x12)&& this[_0x2b73[441]][_0x2b73[1147]](_0xff22x5,_0xff22x12)}else {var _0xff22x12=-this[_0x2b73[441]][_0x2b73[513]][_0x2b73[235]],_0xff22x13=-this[_0x2b73[441]][_0x2b73[513]][_0x2b73[236]],_0xff22x14=this[_0x2b73[441]][_0x2b73[255]];_0xff22x2[_0x2b73[235]]+ _0xff22x9> _0xff22x12+ _0xff22x4&& (this[_0x2b73[441]][_0x2b73[513]][_0x2b73[235]]-= (_0xff22x2[_0x2b73[235]]+ _0xff22x9- _0xff22x4- _0xff22x12)/ _0xff22x14,_0xff22x3= !0);_0xff22x2[_0x2b73[236]]+ _0xff22xa> _0xff22x13+ _0xff22x5&& (this[_0x2b73[441]][_0x2b73[513]][_0x2b73[236]]-= (_0xff22x2[_0x2b73[236]]+ _0xff22xa- _0xff22x5- _0xff22x13)/ _0xff22x14,_0xff22x3= !0);_0xff22x2[_0x2b73[235]]< _0xff22x12&& (this[_0x2b73[441]][_0x2b73[513]][_0x2b73[235]]+= (_0xff22x12- _0xff22x2[_0x2b73[235]])/ _0xff22x14,_0xff22x3= !0);_0xff22x2[_0x2b73[236]]< _0xff22x13&& (this[_0x2b73[441]][_0x2b73[513]][_0x2b73[236]]+= (_0xff22x13- _0xff22x2[_0x2b73[236]])/ _0xff22x14,_0xff22x3= !0);_0xff22x3&& (this[_0x2b73[441]][_0x2b73[802]](),null!= this[_0x2b73[2432]]&& this[_0x2b73[2432]][_0x2b73[802]]())}};return _0xff22x3};mxGraph[_0x2b73[202]][_0x2b73[1198]]= function(_0xff22x2){return this[_0x2b73[251]][_0x2b73[1721]](_0xff22x2)};mxGraph[_0x2b73[202]][_0x2b73[1714]]= function(_0xff22x2){return this[_0x2b73[251]][_0x2b73[174]](_0xff22x2)};mxGraph[_0x2b73[202]][_0x2b73[1742]]= function(_0xff22x2){return this[_0x2b73[251]][_0x2b73[1971]](_0xff22x2)};mxGraph[_0x2b73[202]][_0x2b73[2565]]= function(_0xff22x2){return this[_0x2b73[251]][_0x2b73[1965]](_0xff22x2)};mxGraph[_0x2b73[202]][_0x2b73[2298]]= function(_0xff22x2){var _0xff22x3=_0xff22x2[_0x2b73[124]][mxConstants[_0x2b73[2566]]];if(null!= _0xff22x3){return _0xff22x3};_0xff22x2= this[_0x2b73[441]][_0x2b73[2291]](_0xff22x2);return _0xff22x2== mxEdgeStyle[_0x2b73[2567]]|| _0xff22x2== mxEdgeStyle[_0x2b73[2568]]|| _0xff22x2== mxEdgeStyle[_0x2b73[2569]]|| _0xff22x2== mxEdgeStyle[_0x2b73[2570]]|| _0xff22x2== mxEdgeStyle[_0x2b73[2571]]|| _0xff22x2== mxEdgeStyle[_0x2b73[2572]]};mxGraph[_0x2b73[202]][_0x2b73[2573]]= function(_0xff22x2){var _0xff22x3=_0xff22x2[_0x2b73[2089]](!0);_0xff22x2= _0xff22x2[_0x2b73[2089]](!1);return null!= _0xff22x3&& _0xff22x3== _0xff22x2};mxGraph[_0x2b73[202]][_0x2b73[2574]]= function(_0xff22x2){return mxEvent[_0x2b73[775]](_0xff22x2)};mxGraph[_0x2b73[202]][_0x2b73[2462]]= function(_0xff22x2){return mxClient[_0x2b73[2575]]?mxEvent[_0x2b73[2576]](_0xff22x2):mxEvent[_0x2b73[775]](_0xff22x2)};mxGraph[_0x2b73[202]][_0x2b73[1018]]= function(_0xff22x2){return null!= _0xff22x2&& !mxEvent[_0x2b73[2577]](_0xff22x2)};mxGraph[_0x2b73[202]][_0x2b73[2578]]= function(_0xff22x2){return mxEvent[_0x2b73[774]](_0xff22x2)};mxGraph[_0x2b73[202]][_0x2b73[2579]]= function(_0xff22x2){return mxEvent[_0x2b73[2577]](_0xff22x2)};mxGraph[_0x2b73[202]][_0x2b73[2580]]= function(_0xff22x2){mxUtils[_0x2b73[150]](_0xff22x2)};mxGraph[_0x2b73[202]][_0x2b73[2581]]= function(_0xff22x2,_0xff22x3,_0xff22x4){return null== this[_0x2b73[2500]](_0xff22x2,_0xff22x3,_0xff22x4)};mxGraph[_0x2b73[202]][_0x2b73[2500]]= function(_0xff22x2,_0xff22x3,_0xff22x4){if(null!= _0xff22x2&& !this[_0x2b73[2530]]()&& (null== _0xff22x3|| null== _0xff22x4)){return _0x2b73[110]};if(null!= _0xff22x2&& null== this[_0x2b73[251]][_0x2b73[1709]](_0xff22x2,!0)&& null== this[_0x2b73[251]][_0x2b73[1709]](_0xff22x2,!1)){return null};if(!this[_0x2b73[2402]]&& _0xff22x3== _0xff22x4&& null!= _0xff22x3|| !this[_0x2b73[2582]](_0xff22x3,_0xff22x4)){return _0x2b73[110]};if(null!= _0xff22x3&& null!= _0xff22x4){var _0xff22x5=_0x2b73[110];if(!this[_0x2b73[2404]]){var _0xff22x9=this[_0x2b73[251]][_0x2b73[1781]](_0xff22x3,_0xff22x4,!0);if(1< _0xff22x9[_0x2b73[67]]|| 1== _0xff22x9[_0x2b73[67]]&& _0xff22x9[0]!= _0xff22x2){_0xff22x5+= (mxResources[_0x2b73[203]](this[_0x2b73[2421]])|| this[_0x2b73[2421]])+ _0x2b73[192]}};var _0xff22x9=this[_0x2b73[251]][_0x2b73[1962]](_0xff22x3,!0,_0xff22x2),_0xff22xa=this[_0x2b73[251]][_0x2b73[1962]](_0xff22x4,!1,_0xff22x2);if(null!= this[_0x2b73[2335]]){for(var _0xff22x12=0;_0xff22x12< this[_0x2b73[2335]][_0x2b73[67]];_0xff22x12++){var _0xff22x13=this[_0x2b73[2335]][_0xff22x12][_0x2b73[2583]](this,_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x9,_0xff22xa);null!= _0xff22x13&& (_0xff22x5+= _0xff22x13)}};_0xff22x13= this[_0x2b73[2584]](_0xff22x2,_0xff22x3,_0xff22x4);null!= _0xff22x13&& (_0xff22x5+= _0xff22x13);return 0< _0xff22x5[_0x2b73[67]]?_0xff22x5:null};return this[_0x2b73[2406]]?null:_0x2b73[110]};mxGraph[_0x2b73[202]][_0x2b73[2584]]= function(_0xff22x2,_0xff22x3,_0xff22x4){return null};mxGraph[_0x2b73[202]][_0x2b73[2585]]= function(_0xff22x2,_0xff22x3){_0xff22x2= null!= _0xff22x2?_0xff22x2:this[_0x2b73[251]][_0x2b73[501]]();_0xff22x3= null!= _0xff22x3?_0xff22x3:{};for(var _0xff22x4=!0,_0xff22x5=this[_0x2b73[251]][_0x2b73[262]](_0xff22x2),_0xff22x9=0;_0xff22x9< _0xff22x5;_0xff22x9++){var _0xff22xa=this[_0x2b73[251]][_0x2b73[263]](_0xff22x2,_0xff22x9),_0xff22x12=_0xff22x3;this[_0x2b73[2553]](_0xff22xa)&& (_0xff22x12= {});_0xff22x12= this[_0x2b73[2585]](_0xff22xa,_0xff22x12);null!= _0xff22x12?this[_0x2b73[2447]](_0xff22xa,_0xff22x12[_0x2b73[230]](/\n/g,_0x2b73[545])):this[_0x2b73[2447]](_0xff22xa,null);_0xff22x4= _0xff22x4&& null== _0xff22x12};_0xff22x5= _0x2b73[110];this[_0x2b73[1742]](_0xff22x2)&& !_0xff22x4&& (_0xff22x5+= (mxResources[_0x2b73[203]](this[_0x2b73[2423]])|| this[_0x2b73[2423]])+ _0x2b73[192]);_0xff22x5= this[_0x2b73[251]][_0x2b73[250]](_0xff22x2)?_0xff22x5+ (this[_0x2b73[2500]](_0xff22x2,this[_0x2b73[251]][_0x2b73[1709]](_0xff22x2,!0),this[_0x2b73[251]][_0x2b73[1709]](_0xff22x2,!1))|| _0x2b73[110]):_0xff22x5+ (this[_0x2b73[2586]](_0xff22x2)|| _0x2b73[110]);_0xff22x9= this[_0x2b73[2587]](_0xff22x2,_0xff22x3);null!= _0xff22x9&& (_0xff22x5+= _0xff22x9);null== this[_0x2b73[251]][_0x2b73[1197]](_0xff22x2)&& this[_0x2b73[441]][_0x2b73[2264]]();return 0< _0xff22x5[_0x2b73[67]]|| !_0xff22x4?_0xff22x5:null};mxGraph[_0x2b73[202]][_0x2b73[2586]]= function(_0xff22x2){var _0xff22x3=this[_0x2b73[251]][_0x2b73[1962]](_0xff22x2,!0),_0xff22x4=this[_0x2b73[251]][_0x2b73[1962]](_0xff22x2,!1);_0xff22x2= this[_0x2b73[251]][_0x2b73[433]](_0xff22x2);var _0xff22x5=_0x2b73[110];if(null!= this[_0x2b73[2335]]){for(var _0xff22x9=0;_0xff22x9< this[_0x2b73[2335]][_0x2b73[67]];_0xff22x9++){var _0xff22xa=this[_0x2b73[2335]][_0xff22x9];if(_0xff22xa[_0x2b73[1097]]&& mxUtils[_0x2b73[1331]](_0xff22x2,_0xff22xa[_0x2b73[60]],_0xff22xa[_0x2b73[2588]],_0xff22xa[_0x2b73[131]])&& (0== _0xff22xa[_0x2b73[160]]&& 0< _0xff22x3|| 1== _0xff22xa[_0x2b73[243]]&& 0== _0xff22x3|| 1== _0xff22xa[_0x2b73[160]]&& 1< _0xff22x3)){_0xff22x5+= _0xff22xa[_0x2b73[2589]]+ _0x2b73[192]}else {if(!_0xff22xa[_0x2b73[1097]]&& mxUtils[_0x2b73[1331]](_0xff22x2,_0xff22xa[_0x2b73[60]],_0xff22xa[_0x2b73[2588]],_0xff22xa[_0x2b73[131]])&& (0== _0xff22xa[_0x2b73[160]]&& 0< _0xff22x4|| 1== _0xff22xa[_0x2b73[243]]&& 0== _0xff22x4|| 1== _0xff22xa[_0x2b73[160]]&& 1< _0xff22x4)){_0xff22x5+= _0xff22xa[_0x2b73[2589]]+ _0x2b73[192]}}}};return 0< _0xff22x5[_0x2b73[67]]?_0xff22x5:null};mxGraph[_0x2b73[202]][_0x2b73[2587]]= function(_0xff22x2,_0xff22x3){return null};mxGraph[_0x2b73[202]][_0x2b73[2271]]= function(){return this[_0x2b73[1617]]};mxGraph[_0x2b73[202]][_0x2b73[2590]]= function(_0xff22x2){this[_0x2b73[1617]]= _0xff22x2};mxGraph[_0x2b73[202]][_0x2b73[2205]]= function(_0xff22x2){if(null!= _0xff22x2&& this[_0x2b73[2206]]&& !this[_0x2b73[502]]()[_0x2b73[250]](_0xff22x2[_0x2b73[246]])){var _0xff22x3=this[_0x2b73[1742]](_0xff22x2[_0x2b73[246]]);if(this[_0x2b73[2516]](_0xff22x2[_0x2b73[246]],!_0xff22x3)){return _0xff22x3?this[_0x2b73[2415]]:this[_0x2b73[2417]]}};return null};mxGraph[_0x2b73[202]][_0x2b73[2454]]= function(_0xff22x2){_0xff22x2= this[_0x2b73[251]][_0x2b73[433]](_0xff22x2);if(null!= _0xff22x2){if(mxUtils[_0x2b73[1331]](_0xff22x2)){return _0xff22x2[_0x2b73[301]]};if(_0x2b73[279]== typeof _0xff22x2[_0x2b73[2591]]){return _0xff22x2.toString()}};return _0x2b73[110]};mxGraph[_0x2b73[202]][_0x2b73[2183]]= function(_0xff22x2){var _0xff22x3=_0x2b73[110];if(this[_0x2b73[2409]]&& null!= _0xff22x2){var _0xff22x4=this[_0x2b73[441]][_0x2b73[248]](_0xff22x2),_0xff22x4=null!= _0xff22x4?_0xff22x4[_0x2b73[124]]:this[_0x2b73[1705]](_0xff22x2);mxUtils[_0x2b73[433]](_0xff22x4,mxConstants.STYLE_NOLABEL,!1)|| (_0xff22x3= this[_0x2b73[2454]](_0xff22x2))};return _0xff22x3};mxGraph[_0x2b73[202]][_0x2b73[2186]]= function(_0xff22x2){return this[_0x2b73[2592]]()};mxGraph[_0x2b73[202]][_0x2b73[2592]]= function(){return this[_0x2b73[2410]]};mxGraph[_0x2b73[202]][_0x2b73[2593]]= function(_0xff22x2){this[_0x2b73[2410]]= _0xff22x2};mxGraph[_0x2b73[202]][_0x2b73[2131]]= function(_0xff22x2){var _0xff22x3=this[_0x2b73[441]][_0x2b73[248]](_0xff22x2);_0xff22x2= null!= _0xff22x3?_0xff22x3[_0x2b73[124]]:this[_0x2b73[1705]](_0xff22x2);return null!= _0xff22x2?_0x2b73[1333]== _0xff22x2[mxConstants[_0x2b73[2594]]]:!1};mxGraph[_0x2b73[202]][_0x2b73[2130]]= function(_0xff22x2){var _0xff22x3=this[_0x2b73[441]][_0x2b73[248]](_0xff22x2);_0xff22x2= null!= _0xff22x3?_0xff22x3[_0x2b73[124]]:this[_0x2b73[1705]](_0xff22x2);return null!= _0xff22x2?_0x2b73[188]== _0xff22x2[mxConstants[_0x2b73[2193]]]:!1};mxGraph[_0x2b73[202]][_0x2b73[2595]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){var _0xff22x9=null;if(null!= _0xff22x2){if(null!= _0xff22x2[_0x2b73[2207]]&& (_0xff22x3== _0xff22x2[_0x2b73[2207]][_0x2b73[252]]|| _0xff22x3[_0x2b73[265]]== _0xff22x2[_0x2b73[2207]][_0x2b73[252]])){_0xff22x9= this[_0x2b73[2425]],_0xff22x9= mxResources[_0x2b73[203]](_0xff22x9)|| _0xff22x9};null== _0xff22x9&& null!= _0xff22x2[_0x2b73[1211]]&& _0xff22x2[_0x2b73[1211]][_0x2b73[209]](function(_0xff22x2,_0xff22x4){if(null== _0xff22x9&& (_0xff22x3== _0xff22x4[_0x2b73[252]]|| _0xff22x3[_0x2b73[265]]== _0xff22x4[_0x2b73[252]])){_0xff22x9= _0xff22x4[_0x2b73[2201]].toString()}});null== _0xff22x9&& (_0xff22x4= this[_0x2b73[2432]][_0x2b73[2596]](_0xff22x2[_0x2b73[246]]),null!= _0xff22x4&& _0x2b73[279]== typeof _0xff22x4[_0x2b73[2597]]&& (_0xff22x9= _0xff22x4[_0x2b73[2597]](_0xff22x3)));null== _0xff22x9&& (_0xff22x9= this[_0x2b73[2598]](_0xff22x2[_0x2b73[246]]))};return _0xff22x9};mxGraph[_0x2b73[202]][_0x2b73[2598]]= function(_0xff22x2){var _0xff22x3=null;return _0xff22x3= null!= _0xff22x2&& null!= _0xff22x2[_0x2b73[2595]]?_0xff22x2[_0x2b73[2595]]():this[_0x2b73[2454]](_0xff22x2)};mxGraph[_0x2b73[202]][_0x2b73[2599]]= function(_0xff22x2){return null};mxGraph[_0x2b73[202]][_0x2b73[1731]]= function(_0xff22x2){var _0xff22x3= new mxRectangle,_0xff22x4=this[_0x2b73[441]][_0x2b73[248]](_0xff22x2);_0xff22x2= null!= _0xff22x4?_0xff22x4[_0x2b73[124]]:this[_0x2b73[1705]](_0xff22x2);null!= _0xff22x2&& (_0xff22x4= parseInt(mxUtils[_0x2b73[433]](_0xff22x2,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)),mxUtils[_0x2b73[433]](_0xff22x2,mxConstants.STYLE_HORIZONTAL,!0)?_0xff22x3[_0x2b73[119]]= _0xff22x4:_0xff22x3[_0x2b73[117]]= _0xff22x4);return _0xff22x3};mxGraph[_0x2b73[202]][_0x2b73[1202]]= function(_0xff22x2){return null!= _0xff22x2&& null!= _0xff22x2[_0x2b73[124]]?_0xff22x2[_0x2b73[124]][mxConstants[_0x2b73[2484]]]:null};mxGraph[_0x2b73[202]][_0x2b73[2187]]= function(_0xff22x2){return null!= _0xff22x2&& null!= _0xff22x2[_0x2b73[124]]?_0xff22x2[_0x2b73[124]][mxConstants[_0x2b73[2063]]]|| mxConstants[_0x2b73[481]]:null};mxGraph[_0x2b73[202]][_0x2b73[2173]]= function(_0xff22x2){return null!= _0xff22x2&& null!= _0xff22x2[_0x2b73[124]]?_0xff22x2[_0x2b73[124]][mxConstants[_0x2b73[2600]]]:null};mxGraph[_0x2b73[202]][_0x2b73[2174]]= function(_0xff22x2){return null!= _0xff22x2&& null!= _0xff22x2[_0x2b73[124]]?_0xff22x2[_0x2b73[124]][mxConstants[_0x2b73[2601]]]:null};mxGraph[_0x2b73[202]][_0x2b73[2172]]= function(_0xff22x2){return null!= _0xff22x2&& null!= _0xff22x2[_0x2b73[124]]?_0xff22x2[_0x2b73[124]][mxConstants[_0x2b73[2602]]]:null};mxGraph[_0x2b73[202]][_0x2b73[2176]]= function(_0xff22x2){return null!= _0xff22x2&& null!= _0xff22x2[_0x2b73[124]]?_0xff22x2[_0x2b73[124]][mxConstants[_0x2b73[2603]]]:null};mxGraph[_0x2b73[202]][_0x2b73[2476]]= function(){return this[_0x2b73[467]]};mxGraph[_0x2b73[202]][_0x2b73[2604]]= function(_0xff22x2){this[_0x2b73[467]]= _0xff22x2};mxGraph[_0x2b73[202]][_0x2b73[1730]]= function(_0xff22x2){if(null!= _0xff22x2&& this[_0x2b73[251]][_0x2b73[1197]](_0xff22x2)!= this[_0x2b73[251]][_0x2b73[501]]()){var _0xff22x3=this[_0x2b73[441]][_0x2b73[248]](_0xff22x2),_0xff22x3=null!= _0xff22x3?_0xff22x3[_0x2b73[124]]:this[_0x2b73[1705]](_0xff22x2);if(null!= _0xff22x3&& !this[_0x2b73[251]][_0x2b73[250]](_0xff22x2)){return _0xff22x3[mxConstants[_0x2b73[2059]]]== mxConstants[_0x2b73[2605]]}};return !1};mxGraph[_0x2b73[202]][_0x2b73[2606]]= function(){return this[_0x2b73[2389]]};mxGraph[_0x2b73[202]][_0x2b73[2607]]= function(_0xff22x2){this[_0x2b73[2389]]= _0xff22x2};mxGraph[_0x2b73[202]][_0x2b73[994]]= function(){return this[_0x2b73[984]]};mxGraph[_0x2b73[202]][_0x2b73[995]]= function(_0xff22x2){this[_0x2b73[984]]= _0xff22x2};mxGraph[_0x2b73[202]][_0x2b73[2608]]= function(){return this[_0x2b73[2362]]};mxGraph[_0x2b73[202]][_0x2b73[2609]]= function(_0xff22x2){this[_0x2b73[2362]]= _0xff22x2};mxGraph[_0x2b73[202]][_0x2b73[2134]]= function(){return this[_0x2b73[2363]]};mxGraph[_0x2b73[202]][_0x2b73[2610]]= function(_0xff22x2){this[_0x2b73[2363]]= _0xff22x2};mxGraph[_0x2b73[202]][_0x2b73[2125]]= function(){return this[_0x2b73[2364]]};mxGraph[_0x2b73[202]][_0x2b73[2611]]= function(_0xff22x2){this[_0x2b73[2364]]= _0xff22x2};mxGraph[_0x2b73[202]][_0x2b73[2612]]= function(_0xff22x2){var _0xff22x3=this[_0x2b73[251]][_0x2b73[1721]](_0xff22x2);return this[_0x2b73[2613]]()|| null!= _0xff22x3&& this[_0x2b73[251]][_0x2b73[1193]](_0xff22x2)&& _0xff22x3[_0x2b73[1500]]};mxGraph[_0x2b73[202]][_0x2b73[2613]]= function(){return this[_0x2b73[2368]]};mxGraph[_0x2b73[202]][_0x2b73[2614]]= function(_0xff22x2){this[_0x2b73[2368]]= _0xff22x2};mxGraph[_0x2b73[202]][_0x2b73[2615]]= function(_0xff22x2){return this[_0x2b73[251]][_0x2b73[1938]](_0xff22x2,mxUtils[_0x2b73[885]](this,function(_0xff22x2){return this[_0x2b73[2616]](_0xff22x2)}))};mxGraph[_0x2b73[202]][_0x2b73[2616]]= function(_0xff22x2){var _0xff22x3=this[_0x2b73[441]][_0x2b73[248]](_0xff22x2);_0xff22x2= null!= _0xff22x3?_0xff22x3[_0x2b73[124]]:this[_0x2b73[1705]](_0xff22x2);return this[_0x2b73[2617]]()&& 0!= _0xff22x2[mxConstants[_0x2b73[2618]]]};mxGraph[_0x2b73[202]][_0x2b73[2617]]= function(){return this[_0x2b73[2369]]};mxGraph[_0x2b73[202]][_0x2b73[2619]]= function(_0xff22x2){this[_0x2b73[2369]]= _0xff22x2};mxGraph[_0x2b73[202]][_0x2b73[898]]= function(_0xff22x2){return this[_0x2b73[251]][_0x2b73[1938]](_0xff22x2,mxUtils[_0x2b73[885]](this,function(_0xff22x2){return this[_0x2b73[2620]](_0xff22x2)}))};mxGraph[_0x2b73[202]][_0x2b73[2620]]= function(_0xff22x2){return this[_0x2b73[2366]]};mxGraph[_0x2b73[202]][_0x2b73[900]]= function(_0xff22x2){return this[_0x2b73[251]][_0x2b73[1938]](_0xff22x2,mxUtils[_0x2b73[885]](this,function(_0xff22x2){return this[_0x2b73[2621]](_0xff22x2)}))};mxGraph[_0x2b73[202]][_0x2b73[2621]]= function(_0xff22x2){return this[_0x2b73[2367]]};mxGraph[_0x2b73[202]][_0x2b73[2102]]= function(_0xff22x2){return this[_0x2b73[2622]]()};mxGraph[_0x2b73[202]][_0x2b73[2622]]= function(){return this[_0x2b73[2379]]};mxGraph[_0x2b73[202]][_0x2b73[2623]]= function(_0xff22x2){this[_0x2b73[2379]]= _0xff22x2};mxGraph[_0x2b73[202]][_0x2b73[2510]]= function(_0xff22x2){return this[_0x2b73[251]][_0x2b73[1938]](_0xff22x2,mxUtils[_0x2b73[885]](this,function(_0xff22x2){return this[_0x2b73[2624]](_0xff22x2)}))};mxGraph[_0x2b73[202]][_0x2b73[2624]]= function(_0xff22x2){var _0xff22x3=this[_0x2b73[441]][_0x2b73[248]](_0xff22x2);_0xff22x2= null!= _0xff22x3?_0xff22x3[_0x2b73[124]]:this[_0x2b73[1705]](_0xff22x2);return this[_0x2b73[2625]]()&& 0!= _0xff22x2[mxConstants[_0x2b73[2626]]]};mxGraph[_0x2b73[202]][_0x2b73[2625]]= function(){return this[_0x2b73[2371]]};mxGraph[_0x2b73[202]][_0x2b73[2627]]= function(_0xff22x2){this[_0x2b73[2371]]= _0xff22x2};mxGraph[_0x2b73[202]][_0x2b73[2628]]= function(_0xff22x2){return !this[_0x2b73[2612]](_0xff22x2)&& (this[_0x2b73[251]][_0x2b73[250]](_0xff22x2)&& this[_0x2b73[2373]]|| this[_0x2b73[251]][_0x2b73[1193]](_0xff22x2)&& this[_0x2b73[2374]])};mxGraph[_0x2b73[202]][_0x2b73[2629]]= function(_0xff22x2){return this[_0x2b73[251]][_0x2b73[1938]](_0xff22x2,mxUtils[_0x2b73[885]](this,function(_0xff22x2){return this[_0x2b73[1712]](_0xff22x2)}))};mxGraph[_0x2b73[202]][_0x2b73[1712]]= function(_0xff22x2){var _0xff22x3=this[_0x2b73[441]][_0x2b73[248]](_0xff22x2),_0xff22x3=null!= _0xff22x3?_0xff22x3[_0x2b73[124]]:this[_0x2b73[1705]](_0xff22x2);return this[_0x2b73[2630]]()&& !this[_0x2b73[2612]](_0xff22x2)&& 0!= _0xff22x3[mxConstants[_0x2b73[2631]]]};mxGraph[_0x2b73[202]][_0x2b73[2630]]= function(){return this[_0x2b73[2372]]};mxGraph[_0x2b73[202]][_0x2b73[2632]]= function(_0xff22x2){this[_0x2b73[2372]]= _0xff22x2};mxGraph[_0x2b73[202]][_0x2b73[997]]= function(){return this[_0x2b73[991]]};mxGraph[_0x2b73[202]][_0x2b73[998]]= function(_0xff22x2){this[_0x2b73[991]]= _0xff22x2};mxGraph[_0x2b73[202]][_0x2b73[2549]]= function(){return this[_0x2b73[2348]]};mxGraph[_0x2b73[202]][_0x2b73[2633]]= function(_0xff22x2){this[_0x2b73[2348]]= _0xff22x2};mxGraph[_0x2b73[202]][_0x2b73[2634]]= function(){return this[_0x2b73[1020]]};mxGraph[_0x2b73[202]][_0x2b73[2635]]= function(_0xff22x2){this[_0x2b73[1020]]= _0xff22x2};mxGraph[_0x2b73[202]][_0x2b73[2636]]= function(){return this[_0x2b73[2353]]};mxGraph[_0x2b73[202]][_0x2b73[2637]]= function(_0xff22x2){this[_0x2b73[2353]]= _0xff22x2};mxGraph[_0x2b73[202]][_0x2b73[2638]]= function(){return this[_0x2b73[2374]]};mxGraph[_0x2b73[202]][_0x2b73[2639]]= function(_0xff22x2){this[_0x2b73[2374]]= _0xff22x2};mxGraph[_0x2b73[202]][_0x2b73[2640]]= function(){return this[_0x2b73[2373]]};mxGraph[_0x2b73[202]][_0x2b73[2641]]= function(_0xff22x2){this[_0x2b73[2373]]= _0xff22x2};mxGraph[_0x2b73[202]][_0x2b73[2642]]= function(){return this[_0x2b73[2412]]};mxGraph[_0x2b73[202]][_0x2b73[2643]]= function(_0xff22x2){this[_0x2b73[2412]]= _0xff22x2};mxGraph[_0x2b73[202]][_0x2b73[2460]]= function(){return this[_0x2b73[2411]]};mxGraph[_0x2b73[202]][_0x2b73[2644]]= function(_0xff22x2){this[_0x2b73[2411]]= _0xff22x2};mxGraph[_0x2b73[202]][_0x2b73[2645]]= function(){return this[_0x2b73[2404]]};mxGraph[_0x2b73[202]][_0x2b73[2646]]= function(_0xff22x2){this[_0x2b73[2404]]= _0xff22x2};mxGraph[_0x2b73[202]][_0x2b73[2647]]= function(){return this[_0x2b73[2402]]};mxGraph[_0x2b73[202]][_0x2b73[2648]]= function(_0xff22x2){this[_0x2b73[2406]]= _0xff22x2};mxGraph[_0x2b73[202]][_0x2b73[2530]]= function(){return this[_0x2b73[2406]]};mxGraph[_0x2b73[202]][_0x2b73[2649]]= function(_0xff22x2){this[_0x2b73[2405]]= _0xff22x2};mxGraph[_0x2b73[202]][_0x2b73[2650]]= function(){return this[_0x2b73[2405]]};mxGraph[_0x2b73[202]][_0x2b73[2651]]= function(_0xff22x2){this[_0x2b73[2407]]= _0xff22x2};mxGraph[_0x2b73[202]][_0x2b73[2527]]= function(){return this[_0x2b73[2407]]};mxGraph[_0x2b73[202]][_0x2b73[2652]]= function(_0xff22x2){this[_0x2b73[2402]]= _0xff22x2};mxGraph[_0x2b73[202]][_0x2b73[2529]]= function(){return this[_0x2b73[2408]]};mxGraph[_0x2b73[202]][_0x2b73[2653]]= function(_0xff22x2){this[_0x2b73[2408]]= _0xff22x2};mxGraph[_0x2b73[202]][_0x2b73[1015]]= function(){return this[_0x2b73[2375]]};mxGraph[_0x2b73[202]][_0x2b73[2654]]= function(_0xff22x2){this[_0x2b73[2375]]= _0xff22x2};mxGraph[_0x2b73[202]][_0x2b73[2655]]= function(){return this[_0x2b73[2376]]};mxGraph[_0x2b73[202]][_0x2b73[2656]]= function(_0xff22x2){this[_0x2b73[2376]]= _0xff22x2};mxGraph[_0x2b73[202]][_0x2b73[2657]]= function(_0xff22x2){var _0xff22x3=this[_0x2b73[441]][_0x2b73[248]](_0xff22x2),_0xff22x3=null!= _0xff22x3?_0xff22x3[_0x2b73[124]]:this[_0x2b73[1705]](_0xff22x2);return this[_0x2b73[2658]]()&& !this[_0x2b73[2612]](_0xff22x2)&& 0!= _0xff22x3[mxConstants[_0x2b73[2659]]]};mxGraph[_0x2b73[202]][_0x2b73[2658]]= function(){return this[_0x2b73[2377]]};mxGraph[_0x2b73[202]][_0x2b73[2660]]= function(_0xff22x2){this[_0x2b73[2377]]= _0xff22x2};mxGraph[_0x2b73[202]][_0x2b73[2661]]= function(_0xff22x2,_0xff22x3){return !0};mxGraph[_0x2b73[202]][_0x2b73[2662]]= function(_0xff22x2){var _0xff22x3=this[_0x2b73[441]][_0x2b73[248]](_0xff22x2),_0xff22x3=null!= _0xff22x3?_0xff22x3[_0x2b73[124]]:this[_0x2b73[1705]](_0xff22x2);return this[_0x2b73[2663]]()&& !this[_0x2b73[2612]](_0xff22x2)&& 0!= _0xff22x3[mxConstants[_0x2b73[2664]]]};mxGraph[_0x2b73[202]][_0x2b73[2663]]= function(){return this[_0x2b73[2378]]};mxGraph[_0x2b73[202]][_0x2b73[2665]]= function(_0xff22x2){this[_0x2b73[2378]]= _0xff22x2};mxGraph[_0x2b73[202]][_0x2b73[2453]]= function(_0xff22x2){var _0xff22x3=this[_0x2b73[441]][_0x2b73[248]](_0xff22x2),_0xff22x3=null!= _0xff22x3?_0xff22x3[_0x2b73[124]]:this[_0x2b73[1705]](_0xff22x2);return this[_0x2b73[2666]]()&& !this[_0x2b73[2612]](_0xff22x2)&& 0!= _0xff22x3[mxConstants[_0x2b73[2667]]]};mxGraph[_0x2b73[202]][_0x2b73[2666]]= function(){return this[_0x2b73[2370]]};mxGraph[_0x2b73[202]][_0x2b73[2668]]= function(_0xff22x2){this[_0x2b73[2370]]= _0xff22x2};mxGraph[_0x2b73[202]][_0x2b73[2551]]= function(_0xff22x2,_0xff22x3,_0xff22x4){return this[_0x2b73[2669]]()&& !this[_0x2b73[2612]](_0xff22x2)};mxGraph[_0x2b73[202]][_0x2b73[2669]]= function(){return this[_0x2b73[2380]]};mxGraph[_0x2b73[202]][_0x2b73[2670]]= function(_0xff22x2){this[_0x2b73[2380]]= _0xff22x2};mxGraph[_0x2b73[202]][_0x2b73[2671]]= function(_0xff22x2){return null== _0xff22x2&& this[_0x2b73[2406]]|| null!= _0xff22x2&& (!this[_0x2b73[251]][_0x2b73[250]](_0xff22x2)|| this[_0x2b73[2405]])&& this[_0x2b73[2565]](_0xff22x2)};mxGraph[_0x2b73[202]][_0x2b73[2672]]= function(_0xff22x2){return this[_0x2b73[2671]](_0xff22x2)};mxGraph[_0x2b73[202]][_0x2b73[2582]]= function(_0xff22x2,_0xff22x3){return this[_0x2b73[2671]](_0xff22x2)&& this[_0x2b73[2672]](_0xff22x3)};mxGraph[_0x2b73[202]][_0x2b73[1995]]= function(_0xff22x2){this[_0x2b73[2433]][_0x2b73[995]](_0xff22x2)};mxGraph[_0x2b73[202]][_0x2b73[1965]]= function(_0xff22x2){return this[_0x2b73[2433]][_0x2b73[994]]()};mxGraph[_0x2b73[202]][_0x2b73[2673]]= function(_0xff22x2){this[_0x2b73[2276]][_0x2b73[995]](_0xff22x2)};mxGraph[_0x2b73[202]][_0x2b73[2674]]= function(_0xff22x2){this[_0x2b73[2316]][_0x2b73[2431]]= _0xff22x2};mxGraph[_0x2b73[202]][_0x2b73[2203]]= function(_0xff22x2){if(null!= this[_0x2b73[2347]]){var _0xff22x3=this[_0x2b73[2347]][_0x2b73[2148]]();return null== _0xff22x2?null!= _0xff22x3:_0xff22x2== _0xff22x3};return !1};mxGraph[_0x2b73[202]][_0x2b73[2455]]= function(_0xff22x2){var _0xff22x3=this[_0x2b73[441]][_0x2b73[248]](_0xff22x2);_0xff22x2= null!= _0xff22x3?_0xff22x3[_0x2b73[124]]:this[_0x2b73[1705]](_0xff22x2);return this[_0x2b73[2675]]()|| 1== _0xff22x2[mxConstants[_0x2b73[2676]]]};mxGraph[_0x2b73[202]][_0x2b73[2675]]= function(){return this[_0x2b73[2381]]};mxGraph[_0x2b73[202]][_0x2b73[2677]]= function(_0xff22x2){this[_0x2b73[2381]]= _0xff22x2};mxGraph[_0x2b73[202]][_0x2b73[2507]]= function(_0xff22x2){return !this[_0x2b73[502]]()[_0x2b73[250]](_0xff22x2)&& this[_0x2b73[2678]]()};mxGraph[_0x2b73[202]][_0x2b73[2678]]= function(){return this[_0x2b73[2392]]};mxGraph[_0x2b73[202]][_0x2b73[2679]]= function(_0xff22x2){this[_0x2b73[2392]]= _0xff22x2};mxGraph[_0x2b73[202]][_0x2b73[2506]]= function(){return this[_0x2b73[2393]]};mxGraph[_0x2b73[202]][_0x2b73[2680]]= function(_0xff22x2){this[_0x2b73[2393]]= _0xff22x2};mxGraph[_0x2b73[202]][_0x2b73[2536]]= function(_0xff22x2){return this[_0x2b73[2681]]()&& !this[_0x2b73[502]]()[_0x2b73[250]](this[_0x2b73[502]]()[_0x2b73[1197]](_0xff22x2))};mxGraph[_0x2b73[202]][_0x2b73[2681]]= function(){return this[_0x2b73[2391]]};mxGraph[_0x2b73[202]][_0x2b73[2682]]= function(_0xff22x2){this[_0x2b73[2391]]= _0xff22x2};mxGraph[_0x2b73[202]][_0x2b73[2505]]= function(){return this[_0x2b73[2390]]};mxGraph[_0x2b73[202]][_0x2b73[2528]]= function(_0xff22x2){this[_0x2b73[2390]]= _0xff22x2};mxGraph[_0x2b73[202]][_0x2b73[2537]]= function(_0xff22x2){return this[_0x2b73[2683]](_0xff22x2)?this[_0x2b73[2354]]:0};mxGraph[_0x2b73[202]][_0x2b73[2683]]= function(_0xff22x2){return !1};mxGraph[_0x2b73[202]][_0x2b73[2513]]= function(_0xff22x2,_0xff22x3){return this[_0x2b73[251]][_0x2b73[1938]](_0xff22x2,mxUtils[_0x2b73[885]](this,function(_0xff22x2){return this[_0x2b73[2516]](_0xff22x2,_0xff22x3)}))};mxGraph[_0x2b73[202]][_0x2b73[2516]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=this[_0x2b73[441]][_0x2b73[248]](_0xff22x2),_0xff22x4=null!= _0xff22x4?_0xff22x4[_0x2b73[124]]:this[_0x2b73[1705]](_0xff22x2);return 0< this[_0x2b73[251]][_0x2b73[262]](_0xff22x2)&& 0!= _0xff22x4[mxConstants[_0x2b73[2684]]]};mxGraph[_0x2b73[202]][_0x2b73[2685]]= function(_0xff22x2,_0xff22x3,_0xff22x4){return null!= _0xff22x2&& (this[_0x2b73[2655]]()&& this[_0x2b73[2686]](_0xff22x2,_0xff22x3,_0xff22x4)|| !this[_0x2b73[251]][_0x2b73[250]](_0xff22x2)&& (this[_0x2b73[1730]](_0xff22x2)|| 0< this[_0x2b73[251]][_0x2b73[262]](_0xff22x2)&& !this[_0x2b73[1742]](_0xff22x2)))};mxGraph[_0x2b73[202]][_0x2b73[2686]]= function(_0xff22x2,_0xff22x3,_0xff22x4){return this[_0x2b73[251]][_0x2b73[250]](_0xff22x2)&& null!= _0xff22x3&& 1== _0xff22x3[_0x2b73[67]]&& this[_0x2b73[2565]](_0xff22x3[0])&& null== this[_0x2b73[2500]](_0xff22x2,this[_0x2b73[251]][_0x2b73[1709]](_0xff22x2,!0),_0xff22x3[0])?(_0xff22x4= this[_0x2b73[251]][_0x2b73[1709]](_0xff22x2,!0),_0xff22x2= this[_0x2b73[251]][_0x2b73[1709]](_0xff22x2,!1),!this[_0x2b73[251]][_0x2b73[1720]](_0xff22x3[0],_0xff22x4)&& !this[_0x2b73[251]][_0x2b73[1720]](_0xff22x3[0],_0xff22x2)):!1};mxGraph[_0x2b73[202]][_0x2b73[564]]= function(_0xff22x2,_0xff22x3,_0xff22x4){if(!this[_0x2b73[2642]]()){for(var _0xff22x5=0;_0xff22x5< _0xff22x2[_0x2b73[67]];_0xff22x5++){if(this[_0x2b73[1730]](_0xff22x2[_0xff22x5])){return null}}};_0xff22x5= mxUtils[_0x2b73[2196]](this[_0x2b73[526]],mxEvent[_0x2b73[731]](_0xff22x3),mxEvent[_0x2b73[733]](_0xff22x3));_0xff22x5[_0x2b73[235]]-= this[_0x2b73[1136]];_0xff22x5[_0x2b73[236]]-= this[_0x2b73[1137]];_0xff22x5= this[_0x2b73[2461]](_0xff22x5[_0x2b73[235]],_0xff22x5[_0x2b73[236]]);if(null== _0xff22x4){_0xff22x4= _0xff22x5}else {if(null!= _0xff22x5){for(var _0xff22x9=this[_0x2b73[251]][_0x2b73[1197]](_0xff22x5);null!= _0xff22x9&& this[_0x2b73[1730]](_0xff22x9)&& _0xff22x9!= _0xff22x4;){_0xff22x9= this[_0x2b73[251]][_0x2b73[1197]](_0xff22x9)};_0xff22x9== _0xff22x4&& (_0xff22x4= _0xff22x5)}};for(;null!= _0xff22x4&& !this[_0x2b73[2685]](_0xff22x4,_0xff22x2,_0xff22x3)&& !this[_0x2b73[251]][_0x2b73[1740]](_0xff22x4);){_0xff22x4= this[_0x2b73[251]][_0x2b73[1197]](_0xff22x4)};return !this[_0x2b73[251]][_0x2b73[1740]](_0xff22x4)&& 0> mxUtils[_0x2b73[2]](_0xff22x2,_0xff22x4)?_0xff22x4:null};mxGraph[_0x2b73[202]][_0x2b73[902]]= function(){var _0xff22x2=this[_0x2b73[2355]];null== _0xff22x2&& (_0xff22x2= this[_0x2b73[2534]](),null== _0xff22x2&& (_0xff22x2= this[_0x2b73[251]][_0x2b73[501]](),_0xff22x2= this[_0x2b73[251]][_0x2b73[263]](_0xff22x2,0)));return _0xff22x2};mxGraph[_0x2b73[202]][_0x2b73[2687]]= function(_0xff22x2){this[_0x2b73[2355]]= _0xff22x2};mxGraph[_0x2b73[202]][_0x2b73[2179]]= function(_0xff22x2){for(;null!= _0xff22x2&& !this[_0x2b73[1730]](_0xff22x2);){_0xff22x2= this[_0x2b73[251]][_0x2b73[1197]](_0xff22x2)};return _0xff22x2};mxGraph[_0x2b73[202]][_0x2b73[2461]]= function(_0xff22x2,_0xff22x3,_0xff22x4){_0xff22x4= _0xff22x4|| this[_0x2b73[902]]();if(null!= _0xff22x4){for(var _0xff22x5=this[_0x2b73[251]][_0x2b73[262]](_0xff22x4),_0xff22x9=0;_0xff22x9< _0xff22x5;_0xff22x9++){var _0xff22xa=this[_0x2b73[251]][_0x2b73[263]](_0xff22x4,_0xff22x9),_0xff22x12=this[_0x2b73[2461]](_0xff22x2,_0xff22x3,_0xff22xa);if(null!= _0xff22x12){return _0xff22x12};if(this[_0x2b73[1730]](_0xff22xa)&& (_0xff22x12= this[_0x2b73[441]][_0x2b73[248]](_0xff22xa),this[_0x2b73[1825]](_0xff22x12,_0xff22x2,_0xff22x3))){return _0xff22xa}}};return null};mxGraph[_0x2b73[202]][_0x2b73[999]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){_0xff22x5= null!= _0xff22x5?_0xff22x5:!0;_0xff22x9= null!= _0xff22x9?_0xff22x9:!0;_0xff22x4= null!= _0xff22x4?_0xff22x4:this[_0x2b73[902]]();if(null!= _0xff22x4){for(var _0xff22xa=this[_0x2b73[251]][_0x2b73[262]](_0xff22x4)- 1;0<= _0xff22xa;_0xff22xa--){var _0xff22x12=this[_0x2b73[251]][_0x2b73[263]](_0xff22x4,_0xff22xa),_0xff22x13=this[_0x2b73[999]](_0xff22x2,_0xff22x3,_0xff22x12,_0xff22x5,_0xff22x9);if(null!= _0xff22x13){return _0xff22x13};if(this[_0x2b73[1714]](_0xff22x12)&& (_0xff22x9&& this[_0x2b73[251]][_0x2b73[250]](_0xff22x12)|| _0xff22x5&& this[_0x2b73[251]][_0x2b73[1193]](_0xff22x12))){if(_0xff22x13= this[_0x2b73[441]][_0x2b73[248]](_0xff22x12),this[_0x2b73[1825]](_0xff22x13,_0xff22x2,_0xff22x3)){return _0xff22x12}}}};return null};mxGraph[_0x2b73[202]][_0x2b73[1825]]= function(_0xff22x2,_0xff22x3,_0xff22x4){if(null!= _0xff22x2){var _0xff22x5=_0xff22x2[_0x2b73[439]];if(null!= _0xff22x5){_0xff22x2= this[_0x2b73[2353]]* this[_0x2b73[2353]];for(var _0xff22x9=_0xff22x5[0],_0xff22xa=1;_0xff22xa< _0xff22x5[_0x2b73[67]];_0xff22xa++){var _0xff22x12=_0xff22x5[_0xff22xa];if(mxUtils[_0x2b73[440]](_0xff22x9[_0x2b73[235]],_0xff22x9[_0x2b73[236]],_0xff22x12[_0x2b73[235]],_0xff22x12[_0x2b73[236]],_0xff22x3,_0xff22x4)<= _0xff22x2){return !0};_0xff22x9= _0xff22x12}}else {if(_0xff22x9= mxUtils[_0x2b73[431]](mxUtils[_0x2b73[433]](_0xff22x2[_0x2b73[124]],mxConstants.STYLE_ROTATION)|| 0),0!= _0xff22x9&& (_0xff22x5= Math[_0x2b73[426]](-_0xff22x9),_0xff22x9= Math[_0x2b73[427]](-_0xff22x9),_0xff22xa= new mxPoint(_0xff22x2[_0x2b73[241]](),_0xff22x2[_0x2b73[242]]()),_0xff22x9= mxUtils[_0x2b73[432]]( new mxPoint(_0xff22x3,_0xff22x4),_0xff22x5,_0xff22x9,_0xff22xa),_0xff22x3= _0xff22x9[_0x2b73[235]],_0xff22x4= _0xff22x9[_0x2b73[236]]),mxUtils[_0x2b73[442]](_0xff22x2,_0xff22x3,_0xff22x4)){return !0}}};return !1};mxGraph[_0x2b73[202]][_0x2b73[2688]]= function(_0xff22x2,_0xff22x3,_0xff22x4){var _0xff22x5=this[_0x2b73[249]]()[_0x2b73[248]](_0xff22x2);_0xff22x2= this[_0x2b73[1731]](_0xff22x2);if(null!= _0xff22x5){var _0xff22x9=this[_0x2b73[249]]()[_0x2b73[518]]();_0xff22x3-= _0xff22x5[_0x2b73[235]];_0xff22x4-= _0xff22x5[_0x2b73[236]];if(0< _0xff22x2[_0x2b73[117]]&& 0< _0xff22x3&& _0xff22x3> _0xff22x2[_0x2b73[117]]* _0xff22x9|| 0< _0xff22x2[_0x2b73[119]]&& 0< _0xff22x4&& _0xff22x4> _0xff22x2[_0x2b73[119]]* _0xff22x9){return !0}};return !1};mxGraph[_0x2b73[202]][_0x2b73[1728]]= function(_0xff22x2){return this[_0x2b73[1955]](_0xff22x2,!0,!1)};mxGraph[_0x2b73[202]][_0x2b73[1956]]= function(_0xff22x2){return this[_0x2b73[1955]](_0xff22x2,!1,!0)};mxGraph[_0x2b73[202]][_0x2b73[1955]]= function(_0xff22x2,_0xff22x3,_0xff22x4){_0xff22x2= null!= _0xff22x2?_0xff22x2:this[_0x2b73[902]]();_0xff22x2= this[_0x2b73[251]][_0x2b73[1955]](_0xff22x2,null!= _0xff22x3?_0xff22x3:!1,null!= _0xff22x4?_0xff22x4:!1);_0xff22x3= [];for(_0xff22x4= 0;_0xff22x4< _0xff22x2[_0x2b73[67]];_0xff22x4++){this[_0x2b73[1714]](_0xff22x2[_0xff22x4])&& _0xff22x3[_0x2b73[207]](_0xff22x2[_0xff22x4])};return _0xff22x3};mxGraph[_0x2b73[202]][_0x2b73[1756]]= function(_0xff22x2,_0xff22x3){return this[_0x2b73[264]](_0xff22x2,_0xff22x3,!0,!0,!1)};mxGraph[_0x2b73[202]][_0x2b73[1867]]= function(_0xff22x2,_0xff22x3){return this[_0x2b73[264]](_0xff22x2,_0xff22x3,!0,!1,!1)};mxGraph[_0x2b73[202]][_0x2b73[1963]]= function(_0xff22x2,_0xff22x3){return this[_0x2b73[264]](_0xff22x2,_0xff22x3,!1,!0,!1)};mxGraph[_0x2b73[202]][_0x2b73[264]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa){_0xff22x4= null!= _0xff22x4?_0xff22x4:!0;_0xff22x5= null!= _0xff22x5?_0xff22x5:!0;_0xff22x9= null!= _0xff22x9?_0xff22x9:!0;_0xff22xa= null!= _0xff22xa?_0xff22xa:!1;for(var _0xff22x12=[],_0xff22x13=this[_0x2b73[1742]](_0xff22x2),_0xff22x14=this[_0x2b73[251]][_0x2b73[262]](_0xff22x2),_0xff22x15=0;_0xff22x15< _0xff22x14;_0xff22x15++){var _0xff22x16=this[_0x2b73[251]][_0x2b73[263]](_0xff22x2,_0xff22x15);if(_0xff22x13|| !this[_0x2b73[1714]](_0xff22x16)){_0xff22x12= _0xff22x12[_0x2b73[1919]](this[_0x2b73[251]][_0x2b73[264]](_0xff22x16,_0xff22x4,_0xff22x5))}};_0xff22x12= _0xff22x12[_0x2b73[1919]](this[_0x2b73[251]][_0x2b73[264]](_0xff22x2,_0xff22x4,_0xff22x5));_0xff22x13= [];for(_0xff22x15= 0;_0xff22x15< _0xff22x12[_0x2b73[67]];_0xff22x15++){_0xff22x16= this[_0x2b73[441]][_0x2b73[248]](_0xff22x12[_0xff22x15]),_0xff22x14= null!= _0xff22x16?_0xff22x16[_0x2b73[1710]](!0):this[_0x2b73[441]][_0x2b73[1710]](_0xff22x12[_0xff22x15],!0),_0xff22x16= null!= _0xff22x16?_0xff22x16[_0x2b73[1710]](!1):this[_0x2b73[441]][_0x2b73[1710]](_0xff22x12[_0xff22x15],!1),(_0xff22x9&& _0xff22x14== _0xff22x16|| _0xff22x14!= _0xff22x16&& (_0xff22x4&& _0xff22x16== _0xff22x2&& (null== _0xff22x3|| this[_0x2b73[1920]](_0xff22x14,_0xff22x3,_0xff22xa))|| _0xff22x5&& _0xff22x14== _0xff22x2&& (null== _0xff22x3|| this[_0x2b73[1920]](_0xff22x16,_0xff22x3,_0xff22xa))))&& _0xff22x13[_0x2b73[207]](_0xff22x12[_0xff22x15])};return _0xff22x13};mxGraph[_0x2b73[202]][_0x2b73[1920]]= function(_0xff22x2,_0xff22x3,_0xff22x4){return _0xff22x4?this[_0x2b73[251]][_0x2b73[1720]](_0xff22x3,_0xff22x2):this[_0x2b73[251]][_0x2b73[1197]](_0xff22x2)== _0xff22x3};mxGraph[_0x2b73[202]][_0x2b73[1808]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){_0xff22x4= null!= _0xff22x4?_0xff22x4:!0;_0xff22x5= null!= _0xff22x5?_0xff22x5:!0;var _0xff22x9=[],_0xff22xa={};if(null!= _0xff22x2){for(var _0xff22x12=0;_0xff22x12< _0xff22x2[_0x2b73[67]];_0xff22x12++){var _0xff22x13=this[_0x2b73[441]][_0x2b73[248]](_0xff22x2[_0xff22x12]),_0xff22x14=null!= _0xff22x13?_0xff22x13[_0x2b73[1710]](!0):this[_0x2b73[441]][_0x2b73[1710]](_0xff22x2[_0xff22x12],!0),_0xff22x13=null!= _0xff22x13?_0xff22x13[_0x2b73[1710]](!1):this[_0x2b73[441]][_0x2b73[1710]](_0xff22x2[_0xff22x12],!1);if(_0xff22x14== _0xff22x3&& null!= _0xff22x13&& _0xff22x13!= _0xff22x3&& _0xff22x5){var _0xff22x15=mxCellPath[_0x2b73[385]](_0xff22x13);null== _0xff22xa[_0xff22x15]&& (_0xff22xa[_0xff22x15]= _0xff22x13,_0xff22x9[_0x2b73[207]](_0xff22x13))}else {_0xff22x13== _0xff22x3&& (null!= _0xff22x14&& _0xff22x14!= _0xff22x3&& _0xff22x4)&& (_0xff22x15= mxCellPath[_0x2b73[385]](_0xff22x14),null== _0xff22xa[_0xff22x15]&& (_0xff22xa[_0xff22x15]= _0xff22x14,_0xff22x9[_0x2b73[207]](_0xff22x14)))}}};return _0xff22x9};mxGraph[_0x2b73[202]][_0x2b73[1781]]= function(_0xff22x2,_0xff22x3,_0xff22x4){_0xff22x4= null!= _0xff22x4?_0xff22x4:!1;for(var _0xff22x5=this[_0x2b73[264]](_0xff22x2),_0xff22x9=[],_0xff22xa=0;_0xff22xa< _0xff22x5[_0x2b73[67]];_0xff22xa++){var _0xff22x12=this[_0x2b73[441]][_0x2b73[248]](_0xff22x5[_0xff22xa]),_0xff22x13=null!= _0xff22x12?_0xff22x12[_0x2b73[1710]](!0):this[_0x2b73[441]][_0x2b73[1710]](_0xff22x5[_0xff22xa],!0),_0xff22x12=null!= _0xff22x12?_0xff22x12[_0x2b73[1710]](!1):this[_0x2b73[441]][_0x2b73[1710]](_0xff22x5[_0xff22xa],!1);(_0xff22x13== _0xff22x2&& _0xff22x12== _0xff22x3|| !_0xff22x4&& _0xff22x13== _0xff22x3&& _0xff22x12== _0xff22x2)&& _0xff22x9[_0x2b73[207]](_0xff22x5[_0xff22xa])};return _0xff22x9};mxGraph[_0x2b73[202]][_0x2b73[2689]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=mxUtils[_0x2b73[2196]](this[_0x2b73[526]],mxEvent[_0x2b73[731]](_0xff22x2),mxEvent[_0x2b73[733]](_0xff22x2)),_0xff22x5=this[_0x2b73[441]][_0x2b73[255]],_0xff22x9=this[_0x2b73[441]][_0x2b73[513]],_0xff22xa=!1!= _0xff22x3?this[_0x2b73[1020]]/ 2:0;_0xff22x4[_0x2b73[235]]= this[_0x2b73[1021]](_0xff22x4[_0x2b73[235]]/ _0xff22x5- _0xff22x9[_0x2b73[235]]- _0xff22xa);_0xff22x4[_0x2b73[236]]= this[_0x2b73[1021]](_0xff22x4[_0x2b73[236]]/ _0xff22x5- _0xff22x9[_0x2b73[236]]- _0xff22xa);return _0xff22x4};mxGraph[_0x2b73[202]][_0x2b73[2690]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa){_0xff22xa= null!= _0xff22xa?_0xff22xa:[];if(0< _0xff22x4|| 0< _0xff22x5){var _0xff22x12=_0xff22x2+ _0xff22x4,_0xff22x13=_0xff22x3+ _0xff22x5;_0xff22x9= _0xff22x9|| this[_0x2b73[902]]();if(null!= _0xff22x9){for(var _0xff22x14=this[_0x2b73[251]][_0x2b73[262]](_0xff22x9),_0xff22x15=0;_0xff22x15< _0xff22x14;_0xff22x15++){var _0xff22x16=this[_0x2b73[251]][_0x2b73[263]](_0xff22x9,_0xff22x15),_0xff22x17=this[_0x2b73[441]][_0x2b73[248]](_0xff22x16);if(this[_0x2b73[1714]](_0xff22x16)&& null!= _0xff22x17){var _0xff22x18=_0xff22x17,_0xff22x17=mxUtils[_0x2b73[433]](_0xff22x17[_0x2b73[124]],mxConstants.STYLE_ROTATION)|| 0;0!= _0xff22x17&& (_0xff22x18= mxUtils[_0x2b73[1613]](_0xff22x18,_0xff22x17));_0xff22x18[_0x2b73[235]]>= _0xff22x2&& _0xff22x18[_0x2b73[236]]+ _0xff22x18[_0x2b73[119]]<= _0xff22x13&& _0xff22x18[_0x2b73[236]]>= _0xff22x3&& _0xff22x18[_0x2b73[235]]+ _0xff22x18[_0x2b73[117]]<= _0xff22x12?_0xff22xa[_0x2b73[207]](_0xff22x16):this[_0x2b73[2690]](_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x16,_0xff22xa)}}}};return _0xff22xa};mxGraph[_0x2b73[202]][_0x2b73[2691]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){var _0xff22xa=[];if(_0xff22x5|| _0xff22x9){if(null== _0xff22x4&& (_0xff22x4= this[_0x2b73[902]]()),null!= _0xff22x4){for(var _0xff22x12=this[_0x2b73[251]][_0x2b73[262]](_0xff22x4),_0xff22x13=0;_0xff22x13< _0xff22x12;_0xff22x13++){var _0xff22x14=this[_0x2b73[251]][_0x2b73[263]](_0xff22x4,_0xff22x13),_0xff22x15=this[_0x2b73[441]][_0x2b73[248]](_0xff22x14);this[_0x2b73[1714]](_0xff22x14)&& null!= _0xff22x15&& (!_0xff22x5|| _0xff22x15[_0x2b73[235]]>= _0xff22x2) && (!_0xff22x9|| _0xff22x15[_0x2b73[236]]>= _0xff22x3) && _0xff22xa[_0x2b73[207]](_0xff22x14)}}};return _0xff22xa};mxGraph[_0x2b73[202]][_0x2b73[1757]]= function(_0xff22x2,_0xff22x3,_0xff22x4){_0xff22x3= null!= _0xff22x3?_0xff22x3:!1;_0xff22x4= null!= _0xff22x4?_0xff22x4:!1;var _0xff22x5=[];if(null!= _0xff22x2){for(var _0xff22x9=this[_0x2b73[502]](),_0xff22xa=_0xff22x9[_0x2b73[262]](_0xff22x2),_0xff22x12=null,_0xff22x13=0,_0xff22x14=0;_0xff22x14< _0xff22xa;_0xff22x14++){var _0xff22x15=_0xff22x9[_0x2b73[263]](_0xff22x2,_0xff22x14);if(this[_0x2b73[251]][_0x2b73[1193]](_0xff22x15)&& this[_0x2b73[1714]](_0xff22x15)){for(var _0xff22x16=this[_0x2b73[1756]](_0xff22x15,_0xff22x3?_0xff22x2:null),_0xff22x17=0,_0xff22x18=0,_0xff22x19=0;_0xff22x19< _0xff22x16[_0x2b73[67]];_0xff22x19++){this[_0x2b73[441]][_0x2b73[1710]](_0xff22x16[_0xff22x19],!0)== _0xff22x15?_0xff22x17++:_0xff22x18++};(_0xff22x4&& 0== _0xff22x17&& 0< _0xff22x18|| !_0xff22x4&& 0== _0xff22x18&& 0< _0xff22x17)&& _0xff22x5[_0x2b73[207]](_0xff22x15);_0xff22x16= _0xff22x4?_0xff22x18- _0xff22x17:_0xff22x17- _0xff22x18;_0xff22x16> _0xff22x13&& (_0xff22x13= _0xff22x16,_0xff22x12= _0xff22x15)}};0== _0xff22x5[_0x2b73[67]]&& null!= _0xff22x12&& _0xff22x5[_0x2b73[207]](_0xff22x12)};return _0xff22x5};mxGraph[_0x2b73[202]][_0x2b73[1706]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){if(null!= _0xff22x4&& null!= _0xff22x2){_0xff22x3= null!= _0xff22x3?_0xff22x3:!0;_0xff22x9= _0xff22x9|| [];var _0xff22xa=mxCellPath[_0x2b73[385]](_0xff22x2);if(null== _0xff22x9[_0xff22xa]&& (_0xff22x9[_0xff22xa]= _0xff22x2,_0xff22x5= _0xff22x4(_0xff22x2,_0xff22x5),null== _0xff22x5|| _0xff22x5)){if(_0xff22x5= this[_0x2b73[251]][_0x2b73[1707]](_0xff22x2),0< _0xff22x5){for(_0xff22xa= 0;_0xff22xa< _0xff22x5;_0xff22xa++){var _0xff22x12=this[_0x2b73[251]][_0x2b73[1708]](_0xff22x2,_0xff22xa),_0xff22x13=this[_0x2b73[251]][_0x2b73[1709]](_0xff22x12,!0)== _0xff22x2;if(!_0xff22x3|| _0xff22x13){_0xff22x13= this[_0x2b73[251]][_0x2b73[1709]](_0xff22x12,!_0xff22x13),this[_0x2b73[1706]](_0xff22x13,_0xff22x3,_0xff22x4,_0xff22x12,_0xff22x9)}}}}}};mxGraph[_0x2b73[202]][_0x2b73[2692]]= function(_0xff22x2){return this[_0x2b73[2435]]()[_0x2b73[2097]](_0xff22x2)};mxGraph[_0x2b73[202]][_0x2b73[2693]]= function(){return this[_0x2b73[2435]]()[_0x2b73[1107]]()};mxGraph[_0x2b73[202]][_0x2b73[2440]]= function(){return this[_0x2b73[2435]]()[_0x2b73[200]]()};mxGraph[_0x2b73[202]][_0x2b73[2694]]= function(){return this[_0x2b73[2435]]()[_0x2b73[895]][_0x2b73[67]]};mxGraph[_0x2b73[202]][_0x2b73[2452]]= function(){return this[_0x2b73[2435]]()[_0x2b73[895]][0]};mxGraph[_0x2b73[202]][_0x2b73[897]]= function(){return this[_0x2b73[2435]]()[_0x2b73[895]][_0x2b73[1853]]()};mxGraph[_0x2b73[202]][_0x2b73[2450]]= function(_0xff22x2){this[_0x2b73[2435]]()[_0x2b73[2099]](_0xff22x2)};mxGraph[_0x2b73[202]][_0x2b73[904]]= function(_0xff22x2){this[_0x2b73[2435]]()[_0x2b73[2100]](_0xff22x2)};mxGraph[_0x2b73[202]][_0x2b73[2695]]= function(_0xff22x2){this[_0x2b73[2435]]()[_0x2b73[2103]](_0xff22x2)};mxGraph[_0x2b73[202]][_0x2b73[2696]]= function(_0xff22x2){this[_0x2b73[2435]]()[_0x2b73[832]](_0xff22x2)};mxGraph[_0x2b73[202]][_0x2b73[2697]]= function(_0xff22x2){this[_0x2b73[2435]]()[_0x2b73[2104]](_0xff22x2)};mxGraph[_0x2b73[202]][_0x2b73[2439]]= function(_0xff22x2){this[_0x2b73[2435]]()[_0x2b73[842]](_0xff22x2)};mxGraph[_0x2b73[202]][_0x2b73[2698]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=this[_0x2b73[2690]](_0xff22x2[_0x2b73[235]],_0xff22x2[_0x2b73[236]],_0xff22x2[_0x2b73[117]],_0xff22x2[_0x2b73[119]]);this[_0x2b73[2699]](_0xff22x4,_0xff22x3);return _0xff22x4};mxGraph[_0x2b73[202]][_0x2b73[2700]]= function(){this[_0x2b73[2701]](!0)};mxGraph[_0x2b73[202]][_0x2b73[2702]]= function(){this[_0x2b73[2701]]()};mxGraph[_0x2b73[202]][_0x2b73[2703]]= function(){this[_0x2b73[2701]](!1,!0)};mxGraph[_0x2b73[202]][_0x2b73[2704]]= function(){this[_0x2b73[2701]](!1,!1,!0)};mxGraph[_0x2b73[202]][_0x2b73[2701]]= function(_0xff22x2,_0xff22x3,_0xff22x4){var _0xff22x5=this[_0x2b73[2105]],_0xff22x9=0< _0xff22x5[_0x2b73[895]][_0x2b73[67]]?_0xff22x5[_0x2b73[895]][0]:null;1< _0xff22x5[_0x2b73[895]][_0x2b73[67]]&& _0xff22x5[_0x2b73[200]]();var _0xff22x5=null!= _0xff22x9?this[_0x2b73[251]][_0x2b73[1197]](_0xff22x9):this[_0x2b73[902]](),_0xff22xa=this[_0x2b73[251]][_0x2b73[262]](_0xff22x5);null== _0xff22x9&& 0< _0xff22xa?(_0xff22x2= this[_0x2b73[251]][_0x2b73[263]](_0xff22x5,0),this[_0x2b73[2450]](_0xff22x2)):(null== _0xff22x9|| _0xff22x3)&& null!= this[_0x2b73[441]][_0x2b73[248]](_0xff22x5)&& null!= this[_0x2b73[251]][_0x2b73[1721]](_0xff22x5)?this[_0x2b73[2534]]()!= _0xff22x5&& this[_0x2b73[2450]](_0xff22x5):null!= _0xff22x9&& _0xff22x4?0< this[_0x2b73[251]][_0x2b73[262]](_0xff22x9)&& (_0xff22x2= this[_0x2b73[251]][_0x2b73[263]](_0xff22x9,0),this[_0x2b73[2450]](_0xff22x2)):0< _0xff22xa&& (_0xff22x3= _0xff22x5[_0x2b73[1738]](_0xff22x9),_0xff22x2?(_0xff22x3++,_0xff22x2= this[_0x2b73[251]][_0x2b73[263]](_0xff22x5,_0xff22x3% _0xff22xa)):(_0xff22x3--,_0xff22x2= this[_0x2b73[251]][_0x2b73[263]](_0xff22x5,0> _0xff22x3?_0xff22xa- 1:_0xff22x3)),this[_0x2b73[2450]](_0xff22x2))};mxGraph[_0x2b73[202]][_0x2b73[2705]]= function(_0xff22x2){_0xff22x2= _0xff22x2|| this[_0x2b73[902]]();_0xff22x2= this[_0x2b73[251]][_0x2b73[1953]](_0xff22x2);null!= _0xff22x2&& this[_0x2b73[904]](_0xff22x2)};mxGraph[_0x2b73[202]][_0x2b73[2706]]= function(_0xff22x2){this[_0x2b73[2707]](!0,!1,_0xff22x2)};mxGraph[_0x2b73[202]][_0x2b73[2708]]= function(_0xff22x2){this[_0x2b73[2707]](!1,!0,_0xff22x2)};mxGraph[_0x2b73[202]][_0x2b73[2707]]= function(_0xff22x2,_0xff22x3,_0xff22x4){_0xff22x4= _0xff22x4|| this[_0x2b73[902]]();var _0xff22x5=mxUtils[_0x2b73[885]](this,function(_0xff22x4){return null!= this[_0x2b73[441]][_0x2b73[248]](_0xff22x4)&& 0== this[_0x2b73[251]][_0x2b73[262]](_0xff22x4)&& (this[_0x2b73[251]][_0x2b73[1193]](_0xff22x4)&& _0xff22x2|| this[_0x2b73[251]][_0x2b73[250]](_0xff22x4)&& _0xff22x3)});_0xff22x4= this[_0x2b73[251]][_0x2b73[1921]](_0xff22x5,_0xff22x4);this[_0x2b73[904]](_0xff22x4)};mxGraph[_0x2b73[202]][_0x2b73[2459]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=this[_0x2b73[2692]](_0xff22x2);this[_0x2b73[2462]](_0xff22x3)?_0xff22x4?this[_0x2b73[2697]](_0xff22x2):this[_0x2b73[2695]](_0xff22x2):(!_0xff22x4|| 1!= this[_0x2b73[2694]]()) && this[_0x2b73[2450]](_0xff22x2)};mxGraph[_0x2b73[202]][_0x2b73[2699]]= function(_0xff22x2,_0xff22x3){this[_0x2b73[2462]](_0xff22x3)?this[_0x2b73[2696]](_0xff22x2):this[_0x2b73[904]](_0xff22x2)};mxGraph[_0x2b73[202]][_0x2b73[2709]]= function(_0xff22x2){var _0xff22x3=null;null!= _0xff22x2&& (this[_0x2b73[251]][_0x2b73[250]](_0xff22x2[_0x2b73[246]])?(_0xff22x3= this[_0x2b73[441]][_0x2b73[2291]](_0xff22x2),_0xff22x3= this[_0x2b73[2573]](_0xff22x2)|| _0xff22x3== mxEdgeStyle[_0x2b73[2568]]|| _0xff22x3== mxEdgeStyle[_0x2b73[2569]]|| _0xff22x3== mxEdgeStyle[_0x2b73[2570]]? new mxElbowEdgeHandler(_0xff22x2):_0xff22x3== mxEdgeStyle[_0x2b73[2567]]|| _0xff22x3== mxEdgeStyle[_0x2b73[2572]]? new mxEdgeSegmentHandler(_0xff22x2): new mxEdgeHandler(_0xff22x2)):_0xff22x3= new mxVertexHandler(_0xff22x2));return _0xff22x3};mxGraph[_0x2b73[202]][_0x2b73[1133]]= function(_0xff22x2){null== this[_0x2b73[2329]]&& (this[_0x2b73[2329]]= []);this[_0x2b73[2329]][_0x2b73[207]](_0xff22x2)};mxGraph[_0x2b73[202]][_0x2b73[1148]]= function(_0xff22x2){if(null!= this[_0x2b73[2329]]){for(var _0xff22x3=0;_0xff22x3< this[_0x2b73[2329]][_0x2b73[67]];_0xff22x3++){if(this[_0x2b73[2329]][_0xff22x3]== _0xff22x2){this[_0x2b73[2329]][_0x2b73[300]](_0xff22x3,1);break}}}};mxGraph[_0x2b73[202]][_0x2b73[2710]]= function(_0xff22x2){if(null== _0xff22x2[_0x2b73[725]]|| null== _0xff22x2[_0x2b73[726]]){var _0xff22x3=mxUtils[_0x2b73[2196]](this[_0x2b73[526]],_0xff22x2[_0x2b73[730]](),_0xff22x2[_0x2b73[732]]());_0xff22x2[_0x2b73[725]]= _0xff22x3[_0x2b73[235]]- this[_0x2b73[1136]];_0xff22x2[_0x2b73[726]]= _0xff22x3[_0x2b73[236]]- this[_0x2b73[1137]]}};mxGraph[_0x2b73[202]][_0x2b73[758]]= function(_0xff22x2,_0xff22x3,_0xff22x4){null== _0xff22x4&& (_0xff22x4= this);this[_0x2b73[2710]](_0xff22x3);_0xff22x2== mxEvent[_0x2b73[2711]]&& (this[_0x2b73[1009]]= !0);if(mxClient[_0x2b73[754]]&& this[_0x2b73[2349]]&& _0xff22x2== mxEvent[_0x2b73[2711]]){var _0xff22x5=( new Date)[_0x2b73[178]]();_0xff22x5- this[_0x2b73[2213]]< this[_0x2b73[2350]]&& Math[_0x2b73[425]](this[_0x2b73[2712]]- _0xff22x3[_0x2b73[730]]())< this[_0x2b73[2351]]&& Math[_0x2b73[425]](this[_0x2b73[2352]]- _0xff22x3[_0x2b73[732]]())< this[_0x2b73[2351]]?(this[_0x2b73[2213]]= 0,this[_0x2b73[761]](_0xff22x3[_0x2b73[727]](),_0xff22x3[_0x2b73[736]]()),_0xff22x3[_0x2b73[727]]()[_0x2b73[786]]= !0):(this[_0x2b73[2712]]= _0xff22x3[_0x2b73[730]](),this[_0x2b73[2352]]= _0xff22x3[_0x2b73[732]](),this[_0x2b73[2213]]= _0xff22x5)};_0xff22x5= 2!= _0xff22x3[_0x2b73[727]]()[_0x2b73[764]];if(mxClient[_0x2b73[80]]&& _0x2b73[462]== document[_0x2b73[135]]){if(null!= this[_0x2b73[2713]]&& Math[_0x2b73[425]](this[_0x2b73[2713]]- _0xff22x3[_0x2b73[730]]())> this[_0x2b73[2351]]|| null!= this[_0x2b73[2714]]&& Math[_0x2b73[425]](this[_0x2b73[2714]]- _0xff22x3[_0x2b73[732]]())> this[_0x2b73[2351]]){_0xff22x5= !0};_0xff22x2== mxEvent[_0x2b73[2715]]&& (this[_0x2b73[2713]]= _0xff22x3[_0x2b73[730]](),this[_0x2b73[2714]]= _0xff22x3[_0x2b73[732]]())};if((_0xff22x2!= mxEvent[_0x2b73[2715]]|| this[_0x2b73[1009]])&& _0xff22x5){if(_0xff22x2== mxEvent[_0x2b73[2715]]&& (this[_0x2b73[1009]]= !1),!this[_0x2b73[2203]]()&& (mxClient[_0x2b73[71]]|| mxClient[_0x2b73[75]]|| mxClient[_0x2b73[76]]|| mxClient[_0x2b73[80]]&& mxClient[_0x2b73[48]]|| _0xff22x3[_0x2b73[727]]()[_0x2b73[772]]!= this[_0x2b73[526]])){_0xff22x2== mxEvent[_0x2b73[2716]]&& (this[_0x2b73[1009]]&& this[_0x2b73[1012]])&& this[_0x2b73[1014]](_0xff22x3[_0x2b73[734]](),_0xff22x3[_0x2b73[735]](),this[_0x2b73[1013]]);if(null!= this[_0x2b73[2329]]){_0xff22x4= [_0xff22x4,_0xff22x3];_0xff22x3[_0x2b73[727]]()[_0x2b73[739]]= !0;for(_0xff22x5= 0;_0xff22x5< this[_0x2b73[2329]][_0x2b73[67]];_0xff22x5++){var _0xff22x9=this[_0x2b73[2329]][_0xff22x5];_0xff22x2== mxEvent[_0x2b73[2711]]?_0xff22x9[_0x2b73[787]][_0x2b73[183]](_0xff22x9,_0xff22x4):_0xff22x2== mxEvent[_0x2b73[2716]]?_0xff22x9[_0x2b73[788]][_0x2b73[183]](_0xff22x9,_0xff22x4):_0xff22x2== mxEvent[_0x2b73[2715]]&& _0xff22x9[_0x2b73[789]][_0x2b73[183]](_0xff22x9,_0xff22x4)}};_0xff22x2== mxEvent[_0x2b73[2715]]&& this[_0x2b73[173]](_0xff22x3)}}else {_0xff22x2== mxEvent[_0x2b73[2715]]&& (this[_0x2b73[1009]]= !1)}};mxGraph[_0x2b73[202]][_0x2b73[515]]= function(){this[_0x2b73[2717]]|| (this[_0x2b73[2717]]= !0,null!= this[_0x2b73[2276]]&& this[_0x2b73[2276]][_0x2b73[515]](),null!= this[_0x2b73[2432]]&& this[_0x2b73[2432]][_0x2b73[515]](),null!= this[_0x2b73[2316]]&& this[_0x2b73[2316]][_0x2b73[515]](),null!= this[_0x2b73[2433]]&& this[_0x2b73[2433]][_0x2b73[515]](),null!= this[_0x2b73[1011]]&& this[_0x2b73[1011]][_0x2b73[515]](),null!= this[_0x2b73[2347]]&& this[_0x2b73[2347]][_0x2b73[515]](),null!= this[_0x2b73[441]]&& this[_0x2b73[441]][_0x2b73[515]](),null!= this[_0x2b73[251]]&& null!= this[_0x2b73[2343]]&& (this[_0x2b73[251]][_0x2b73[745]](this[_0x2b73[2343]]),this[_0x2b73[2343]]= null),this[_0x2b73[526]]= null)};function mxCellOverlay(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa){this[_0x2b73[618]]= _0xff22x2;this[_0x2b73[2718]]= _0xff22x3;this[_0x2b73[611]]= null!= _0xff22x4?_0xff22x4:this[_0x2b73[611]];this[_0x2b73[123]]= null!= _0xff22x5?_0xff22x5:this[_0x2b73[123]];this[_0x2b73[1368]]= null!= _0xff22x9?_0xff22x9: new mxPoint;this[_0x2b73[270]]= null!= _0xff22xa?_0xff22xa:_0x2b73[2719]}mxCellOverlay[_0x2b73[202]]= new mxEventSource;mxCellOverlay[_0x2b73[202]][_0x2b73[196]]= mxCellOverlay;mxCellOverlay[_0x2b73[202]][_0x2b73[618]]= null;mxCellOverlay[_0x2b73[202]][_0x2b73[2718]]= null;mxCellOverlay[_0x2b73[202]][_0x2b73[611]]= mxConstants[_0x2b73[480]];mxCellOverlay[_0x2b73[202]][_0x2b73[123]]= mxConstants[_0x2b73[482]];mxCellOverlay[_0x2b73[202]][_0x2b73[1368]]= null;mxCellOverlay[_0x2b73[202]][_0x2b73[270]]= null;mxCellOverlay[_0x2b73[202]][_0x2b73[2354]]= 0.5;mxCellOverlay[_0x2b73[202]][_0x2b73[1799]]= function(_0xff22x2){var _0xff22x3=_0xff22x2[_0x2b73[441]][_0x2b73[1179]][_0x2b73[502]]()[_0x2b73[250]](_0xff22x2[_0x2b73[246]]),_0xff22x4=_0xff22x2[_0x2b73[441]][_0x2b73[255]],_0xff22x5=null,_0xff22x9=this[_0x2b73[618]][_0x2b73[117]],_0xff22xa=this[_0x2b73[618]][_0x2b73[119]];_0xff22x3?(_0xff22x3= _0xff22x2[_0x2b73[439]],1== _0xff22x3[_0x2b73[67]]% 2?_0xff22x5= _0xff22x3[Math[_0x2b73[519]](_0xff22x3[_0x2b73[67]]/ 2)]:(_0xff22x5= _0xff22x3[_0x2b73[67]]/ 2,_0xff22x2= _0xff22x3[_0xff22x5- 1],_0xff22x3= _0xff22x3[_0xff22x5],_0xff22x5= new mxPoint(_0xff22x2[_0x2b73[235]]+ (_0xff22x3[_0x2b73[235]]- _0xff22x2[_0x2b73[235]])/ 2,_0xff22x2[_0x2b73[236]]+ (_0xff22x3[_0x2b73[236]]- _0xff22x2[_0x2b73[236]])/ 2))):(_0xff22x5= new mxPoint,_0xff22x5[_0x2b73[235]]= this[_0x2b73[611]]== mxConstants[_0x2b73[2132]]?_0xff22x2[_0x2b73[235]]:this[_0x2b73[611]]== mxConstants[_0x2b73[479]]?_0xff22x2[_0x2b73[235]]+ _0xff22x2[_0x2b73[117]]/ 2:_0xff22x2[_0x2b73[235]]+ _0xff22x2[_0x2b73[117]],_0xff22x5[_0x2b73[236]]= this[_0x2b73[123]]== mxConstants[_0x2b73[1687]]?_0xff22x2[_0x2b73[236]]:this[_0x2b73[123]]== mxConstants[_0x2b73[481]]?_0xff22x2[_0x2b73[236]]+ _0xff22x2[_0x2b73[119]]/ 2:_0xff22x2[_0x2b73[236]]+ _0xff22x2[_0x2b73[119]]);return new mxRectangle(Math[_0x2b73[488]](_0xff22x5[_0x2b73[235]]- (_0xff22x9* this[_0x2b73[2354]]- this[_0x2b73[1368]][_0x2b73[235]])* _0xff22x4),Math[_0x2b73[488]](_0xff22x5[_0x2b73[236]]- (_0xff22xa* this[_0x2b73[2354]]- this[_0x2b73[1368]][_0x2b73[236]])* _0xff22x4),_0xff22x9* _0xff22x4,_0xff22xa* _0xff22x4)};mxCellOverlay[_0x2b73[202]][_0x2b73[2591]]= function(){return this[_0x2b73[2718]]};function mxOutline(_0xff22x2,_0xff22x3){this[_0x2b73[1097]]= _0xff22x2;null!= _0xff22x3&& this[_0x2b73[176]](_0xff22x3)}mxOutline[_0x2b73[202]][_0x2b73[1097]]= null;mxOutline[_0x2b73[202]][_0x2b73[2136]]= null;mxOutline[_0x2b73[202]][_0x2b73[2720]]= mxConstants[_0x2b73[2333]];mxOutline[_0x2b73[202]][_0x2b73[984]]= !0;mxOutline[_0x2b73[202]][_0x2b73[2721]]= !0;mxOutline[_0x2b73[202]][_0x2b73[467]]= 10;mxOutline[_0x2b73[202]][_0x2b73[2722]]= 8;mxOutline[_0x2b73[202]][_0x2b73[2723]]= !1;mxOutline[_0x2b73[202]][_0x2b73[2724]]= null;mxOutline[_0x2b73[202]][_0x2b73[1063]]= !1;mxOutline[_0x2b73[202]][_0x2b73[176]]= function(_0xff22x2){this[_0x2b73[2136]]= new mxGraph(_0xff22x2,this[_0x2b73[1097]][_0x2b73[502]](),this[_0x2b73[2720]],this[_0x2b73[1097]][_0x2b73[2434]]());this[_0x2b73[2136]][_0x2b73[2206]]= !1;this[_0x2b73[2136]][_0x2b73[1012]]= !1;var _0xff22x3=this[_0x2b73[2136]][_0x2b73[1177]];this[_0x2b73[2136]][_0x2b73[1177]]= mxUtils[_0x2b73[885]](this,function(_0xff22x2){!this[_0x2b73[1063]]&& null!= this[_0x2b73[2136]]&& _0xff22x3[_0x2b73[183]](this[_0x2b73[2136]],arguments)});mxClient[_0x2b73[48]]&& (_0xff22x2= this[_0x2b73[2136]][_0x2b73[249]]()[_0x2b73[2051]]()[_0x2b73[265]],_0xff22x2[_0x2b73[57]](_0x2b73[2725],_0x2b73[2726]),_0xff22x2[_0x2b73[57]](_0x2b73[2727],_0x2b73[2726]));this[_0x2b73[2136]][_0x2b73[2409]]= !1;this[_0x2b73[2136]][_0x2b73[995]](!1);this[_0x2b73[2728]]= mxUtils[_0x2b73[885]](this,function(_0xff22x2,_0xff22x3){!this[_0x2b73[1063]]&& !this[_0x2b73[1124]]&& this[_0x2b73[2729]]()});this[_0x2b73[1097]][_0x2b73[502]]()[_0x2b73[169]](mxEvent.CHANGE,this[_0x2b73[2728]]);this[_0x2b73[2136]][_0x2b73[1133]](this);_0xff22x2= this[_0x2b73[1097]][_0x2b73[249]]();_0xff22x2[_0x2b73[169]](mxEvent.SCALE,this[_0x2b73[2728]]);_0xff22x2[_0x2b73[169]](mxEvent.TRANSLATE,this[_0x2b73[2728]]);_0xff22x2[_0x2b73[169]](mxEvent.SCALE_AND_TRANSLATE,this[_0x2b73[2728]]);_0xff22x2[_0x2b73[169]](mxEvent.DOWN,this[_0x2b73[2728]]);_0xff22x2[_0x2b73[169]](mxEvent.UP,this[_0x2b73[2728]]);mxEvent[_0x2b73[169]](this[_0x2b73[1097]][_0x2b73[526]],_0x2b73[276],this[_0x2b73[2728]]);this[_0x2b73[2730]]= mxUtils[_0x2b73[885]](this,function(_0xff22x2){this[_0x2b73[2723]]&& this[_0x2b73[2728]][_0x2b73[183]](this,arguments)});this[_0x2b73[1097]][_0x2b73[169]](mxEvent.PAN,this[_0x2b73[2730]]);this[_0x2b73[2731]]= mxUtils[_0x2b73[885]](this,function(_0xff22x2){this[_0x2b73[2136]][_0x2b73[2341]](this[_0x2b73[1097]][_0x2b73[2434]]());this[_0x2b73[2136]][_0x2b73[802]]()});this[_0x2b73[1097]][_0x2b73[169]](mxEvent.REFRESH,this[_0x2b73[2731]]);this[_0x2b73[1562]]= new mxRectangle(0,0,0,0);this[_0x2b73[2732]]= new mxRectangleShape(this[_0x2b73[1562]],null,mxConstants.OUTLINE_COLOR,mxConstants.OUTLINE_STROKEWIDTH);this[_0x2b73[2732]][_0x2b73[507]]= this[_0x2b73[2136]][_0x2b73[507]]!= mxConstants[_0x2b73[508]]?mxConstants[_0x2b73[1523]]:mxConstants[_0x2b73[508]];this[_0x2b73[2732]][_0x2b73[176]](this[_0x2b73[2136]][_0x2b73[249]]()[_0x2b73[1524]]());mxEvent[_0x2b73[2733]](this[_0x2b73[2732]][_0x2b73[252]],this[_0x2b73[2136]]);this[_0x2b73[2732]][_0x2b73[252]][_0x2b73[124]][_0x2b73[1537]]= _0x2b73[110];this[_0x2b73[2734]]= this[_0x2b73[2735]]();this[_0x2b73[2734]][_0x2b73[176]](this[_0x2b73[2136]][_0x2b73[249]]()[_0x2b73[1524]]());this[_0x2b73[984]]&& (this[_0x2b73[2734]][_0x2b73[252]][_0x2b73[124]][_0x2b73[270]]= _0x2b73[356]);mxEvent[_0x2b73[169]](this[_0x2b73[2734]][_0x2b73[252]],mxClient[_0x2b73[754]]?_0x2b73[755]:_0x2b73[751],mxUtils[_0x2b73[885]](this,function(_0xff22x2){this[_0x2b73[2136]][_0x2b73[758]](mxEvent.MOUSE_DOWN, new mxMouseEvent(_0xff22x2))}));this[_0x2b73[2732]][_0x2b73[252]][_0x2b73[124]][_0x2b73[495]]= this[_0x2b73[2721]]?_0x2b73[110]:_0x2b73[130];this[_0x2b73[2734]][_0x2b73[252]][_0x2b73[124]][_0x2b73[495]]= this[_0x2b73[2732]][_0x2b73[252]][_0x2b73[124]][_0x2b73[495]];this[_0x2b73[2732]][_0x2b73[252]][_0x2b73[124]][_0x2b73[270]]= _0x2b73[582];this[_0x2b73[2729]](!1)};mxOutline[_0x2b73[202]][_0x2b73[994]]= function(){return this[_0x2b73[984]]};mxOutline[_0x2b73[202]][_0x2b73[995]]= function(_0xff22x2){this[_0x2b73[984]]= _0xff22x2};mxOutline[_0x2b73[202]][_0x2b73[2736]]= function(_0xff22x2){this[_0x2b73[2734]][_0x2b73[252]][_0x2b73[124]][_0x2b73[187]]= _0xff22x2?_0x2b73[189]:_0x2b73[188]};mxOutline[_0x2b73[202]][_0x2b73[802]]= function(){this[_0x2b73[2729]](!0)};mxOutline[_0x2b73[202]][_0x2b73[2735]]= function(){var _0xff22x2=null!= this[_0x2b73[2724]]? new mxImageShape( new mxRectangle(0,0,this[_0x2b73[2724]][_0x2b73[117]],this[_0x2b73[2724]][_0x2b73[119]]),this[_0x2b73[2724]][_0x2b73[390]]): new mxRectangleShape( new mxRectangle(0,0,this[_0x2b73[2722]],this[_0x2b73[2722]]),mxConstants.OUTLINE_HANDLE_FILLCOLOR,mxConstants.OUTLINE_HANDLE_STROKECOLOR);_0xff22x2[_0x2b73[507]]= this[_0x2b73[2136]][_0x2b73[507]];return _0xff22x2};mxOutline[_0x2b73[202]][_0x2b73[2737]]= function(){return new mxRectangle(0,0,this[_0x2b73[1097]][_0x2b73[526]][_0x2b73[1526]],this[_0x2b73[1097]][_0x2b73[526]][_0x2b73[191]])};mxOutline[_0x2b73[202]][_0x2b73[2738]]= function(_0xff22x2){return null};mxOutline[_0x2b73[202]][_0x2b73[2729]]= function(_0xff22x2){if(null!= this[_0x2b73[1097]]){var _0xff22x3=this[_0x2b73[1097]][_0x2b73[441]][_0x2b73[255]],_0xff22x4=this[_0x2b73[1097]][_0x2b73[517]](),_0xff22x4= new mxRectangle(_0xff22x4[_0x2b73[235]]/ _0xff22x3+ this[_0x2b73[1097]][_0x2b73[1136]],_0xff22x4[_0x2b73[236]]/ _0xff22x3+ this[_0x2b73[1097]][_0x2b73[1137]],_0xff22x4[_0x2b73[117]]/ _0xff22x3,_0xff22x4[_0x2b73[119]]/ _0xff22x3),_0xff22x5= new mxRectangle(0,0,this[_0x2b73[1097]][_0x2b73[526]][_0x2b73[159]]/ _0xff22x3,this[_0x2b73[1097]][_0x2b73[526]][_0x2b73[157]]/ _0xff22x3),_0xff22x9=_0xff22x4[_0x2b73[238]]();_0xff22x9[_0x2b73[99]](_0xff22x5);var _0xff22xa=this[_0x2b73[2737]](),_0xff22x5=Math[_0x2b73[160]](_0xff22xa[_0x2b73[117]]/ _0xff22x3,_0xff22x9[_0x2b73[117]]),_0xff22x3=Math[_0x2b73[160]](_0xff22xa[_0x2b73[119]]/ _0xff22x3,_0xff22x9[_0x2b73[119]]),_0xff22x9=Math[_0x2b73[160]](0,this[_0x2b73[2136]][_0x2b73[526]][_0x2b73[159]]- this[_0x2b73[467]]),_0xff22xa=Math[_0x2b73[160]](0,this[_0x2b73[2136]][_0x2b73[526]][_0x2b73[157]]- this[_0x2b73[467]]),_0xff22x9=Math[_0x2b73[243]](_0xff22x9/ _0xff22x5,_0xff22xa/ _0xff22x3);if(0< _0xff22x9){this[_0x2b73[2136]][_0x2b73[249]]()[_0x2b73[255]]!= _0xff22x9&& (this[_0x2b73[2136]][_0x2b73[249]]()[_0x2b73[255]]= _0xff22x9,_0xff22x2= !0);_0xff22x5= this[_0x2b73[2136]][_0x2b73[249]]();_0xff22x5[_0x2b73[1741]]!= this[_0x2b73[1097]][_0x2b73[249]]()[_0x2b73[1741]]&& _0xff22x5[_0x2b73[2257]](this[_0x2b73[1097]][_0x2b73[249]]()[_0x2b73[1741]]);var _0xff22x3=this[_0x2b73[1097]][_0x2b73[441]][_0x2b73[513]],_0xff22xa=_0xff22x3[_0x2b73[235]]+ this[_0x2b73[1097]][_0x2b73[1136]],_0xff22x12=_0xff22x3[_0x2b73[236]]+ this[_0x2b73[1097]][_0x2b73[1137]],_0xff22x9=this[_0x2b73[2738]](_0xff22x9);null!= _0xff22x9&& (_0xff22xa+= _0xff22x9[_0x2b73[235]],_0xff22x12+= _0xff22x9[_0x2b73[236]]);0> _0xff22x4[_0x2b73[235]]&& (_0xff22xa-= _0xff22x4[_0x2b73[235]]);0> _0xff22x4[_0x2b73[236]]&& (_0xff22x12-= _0xff22x4[_0x2b73[236]]);if(_0xff22x5[_0x2b73[513]][_0x2b73[235]]!= _0xff22xa|| _0xff22x5[_0x2b73[513]][_0x2b73[236]]!= _0xff22x12){_0xff22x5[_0x2b73[513]][_0x2b73[235]]= _0xff22xa,_0xff22x5[_0x2b73[513]][_0x2b73[236]]= _0xff22x12,_0xff22x2= !0};var _0xff22x4=_0xff22x5[_0x2b73[513]],_0xff22x9=this[_0x2b73[1097]][_0x2b73[249]]()[_0x2b73[255]],_0xff22xa=_0xff22x9/ _0xff22x5[_0x2b73[255]],_0xff22x12=1/ _0xff22x5[_0x2b73[255]],_0xff22x13=this[_0x2b73[1097]][_0x2b73[526]];this[_0x2b73[1562]]= new mxRectangle((_0xff22x4[_0x2b73[235]]- _0xff22x3[_0x2b73[235]]- this[_0x2b73[1097]][_0x2b73[1136]])/ _0xff22x12,(_0xff22x4[_0x2b73[236]]- _0xff22x3[_0x2b73[236]]- this[_0x2b73[1097]][_0x2b73[1137]])/ _0xff22x12,_0xff22x13[_0x2b73[159]]/ _0xff22xa,_0xff22x13[_0x2b73[157]]/ _0xff22xa);this[_0x2b73[1562]][_0x2b73[235]]+= this[_0x2b73[1097]][_0x2b73[526]][_0x2b73[360]]* _0xff22x5[_0x2b73[255]]/ _0xff22x9;this[_0x2b73[1562]][_0x2b73[236]]+= this[_0x2b73[1097]][_0x2b73[526]][_0x2b73[190]]* _0xff22x5[_0x2b73[255]]/ _0xff22x9;_0xff22x4= this[_0x2b73[2732]][_0x2b73[1562]];if(_0xff22x4[_0x2b73[235]]!= this[_0x2b73[1562]][_0x2b73[235]]|| _0xff22x4[_0x2b73[236]]!= this[_0x2b73[1562]][_0x2b73[236]]|| _0xff22x4[_0x2b73[117]]!= this[_0x2b73[1562]][_0x2b73[117]]|| _0xff22x4[_0x2b73[119]]!= this[_0x2b73[1562]][_0x2b73[119]]){this[_0x2b73[2732]][_0x2b73[1562]]= this[_0x2b73[1562]],this[_0x2b73[2732]][_0x2b73[258]]()};_0xff22x4= this[_0x2b73[2734]][_0x2b73[1562]];_0xff22x5= new mxRectangle(this[_0x2b73[1562]][_0x2b73[235]]+ this[_0x2b73[1562]][_0x2b73[117]]- _0xff22x4[_0x2b73[117]]/ 2,this[_0x2b73[1562]][_0x2b73[236]]+ this[_0x2b73[1562]][_0x2b73[119]]- _0xff22x4[_0x2b73[119]]/ 2,_0xff22x4[_0x2b73[117]],_0xff22x4[_0x2b73[119]]);if(_0xff22x4[_0x2b73[235]]!= _0xff22x5[_0x2b73[235]]|| _0xff22x4[_0x2b73[236]]!= _0xff22x5[_0x2b73[236]]|| _0xff22x4[_0x2b73[117]]!= _0xff22x5[_0x2b73[117]]|| _0xff22x4[_0x2b73[119]]!= _0xff22x5[_0x2b73[119]]){this[_0x2b73[2734]][_0x2b73[1562]]= _0xff22x5,_0x2b73[188]!= this[_0x2b73[2734]][_0x2b73[252]][_0x2b73[124]][_0x2b73[187]]&& this[_0x2b73[2734]][_0x2b73[258]]()};_0xff22x2&& this[_0x2b73[2136]][_0x2b73[441]][_0x2b73[2259]]()}}};mxOutline[_0x2b73[202]][_0x2b73[787]]= function(_0xff22x2,_0xff22x3){this[_0x2b73[984]]&& this[_0x2b73[2721]]&& (this[_0x2b73[499]]= _0xff22x3[_0x2b73[729]](this[_0x2b73[2734]]),this[_0x2b73[2739]]= _0xff22x3[_0x2b73[730]](),this[_0x2b73[2740]]= _0xff22x3[_0x2b73[732]](),this[_0x2b73[1124]]= !0,this[_0x2b73[1097]][_0x2b73[2365]]&& mxUtils[_0x2b73[1134]](this[_0x2b73[1097]][_0x2b73[526]])?(this[_0x2b73[2741]]= this[_0x2b73[1097]][_0x2b73[526]][_0x2b73[360]],this[_0x2b73[2742]]= this[_0x2b73[1097]][_0x2b73[526]][_0x2b73[190]]):this[_0x2b73[2742]]= this[_0x2b73[2741]]= 0);_0xff22x3[_0x2b73[722]]()};mxOutline[_0x2b73[202]][_0x2b73[788]]= function(_0xff22x2,_0xff22x3){if(this[_0x2b73[1124]]){this[_0x2b73[2732]][_0x2b73[252]][_0x2b73[124]][_0x2b73[495]]= this[_0x2b73[2721]]?_0x2b73[110]:_0x2b73[130];this[_0x2b73[2734]][_0x2b73[252]][_0x2b73[124]][_0x2b73[495]]= this[_0x2b73[2732]][_0x2b73[252]][_0x2b73[124]][_0x2b73[495]];var _0xff22x4=_0xff22x3[_0x2b73[730]]()- this[_0x2b73[2739]],_0xff22x5=_0xff22x3[_0x2b73[732]]()- this[_0x2b73[2740]],_0xff22x9=null;if(this[_0x2b73[499]]){_0xff22x9= this[_0x2b73[1097]][_0x2b73[526]],_0xff22x5= _0xff22x4/ (_0xff22x9[_0x2b73[159]]/ _0xff22x9[_0x2b73[157]]),_0xff22x9= new mxRectangle(this[_0x2b73[1562]][_0x2b73[235]],this[_0x2b73[1562]][_0x2b73[236]],Math[_0x2b73[160]](1,this[_0x2b73[1562]][_0x2b73[117]]+ _0xff22x4),Math[_0x2b73[160]](1,this[_0x2b73[1562]][_0x2b73[119]]+ _0xff22x5)),this[_0x2b73[2732]][_0x2b73[1562]]= _0xff22x9,this[_0x2b73[2732]][_0x2b73[258]]()}else {var _0xff22xa=this[_0x2b73[2136]][_0x2b73[249]]()[_0x2b73[255]],_0xff22x9= new mxRectangle(this[_0x2b73[1562]][_0x2b73[235]]+ _0xff22x4,this[_0x2b73[1562]][_0x2b73[236]]+ _0xff22x5,this[_0x2b73[1562]][_0x2b73[117]],this[_0x2b73[1562]][_0x2b73[119]]);this[_0x2b73[2732]][_0x2b73[1562]]= _0xff22x9;this[_0x2b73[2732]][_0x2b73[258]]();_0xff22x4= _0xff22x4/ _0xff22xa* this[_0x2b73[1097]][_0x2b73[249]]()[_0x2b73[255]];_0xff22x5= _0xff22x5/ _0xff22xa* this[_0x2b73[1097]][_0x2b73[249]]()[_0x2b73[255]];this[_0x2b73[1097]][_0x2b73[1135]](-_0xff22x4- this[_0x2b73[2741]],-_0xff22x5- this[_0x2b73[2742]])};_0xff22x4= this[_0x2b73[2734]][_0x2b73[1562]];this[_0x2b73[2734]][_0x2b73[1562]]= new mxRectangle(_0xff22x9[_0x2b73[235]]+ _0xff22x9[_0x2b73[117]]- _0xff22x4[_0x2b73[117]]/ 2,_0xff22x9[_0x2b73[236]]+ _0xff22x9[_0x2b73[119]]- _0xff22x4[_0x2b73[119]]/ 2,_0xff22x4[_0x2b73[117]],_0xff22x4[_0x2b73[119]]);_0x2b73[188]!= this[_0x2b73[2734]][_0x2b73[252]][_0x2b73[124]][_0x2b73[187]]&& this[_0x2b73[2734]][_0x2b73[258]]();_0xff22x3[_0x2b73[722]]()}};mxOutline[_0x2b73[202]][_0x2b73[789]]= function(_0xff22x2,_0xff22x3){if(this[_0x2b73[1124]]){var _0xff22x4=_0xff22x3[_0x2b73[730]]()- this[_0x2b73[2739]],_0xff22x5=_0xff22x3[_0x2b73[732]]()- this[_0x2b73[2740]];if(0< Math[_0x2b73[425]](_0xff22x4)|| 0< Math[_0x2b73[425]](_0xff22x5)){if(this[_0x2b73[499]]){var _0xff22x5=this[_0x2b73[2732]][_0x2b73[1562]][_0x2b73[117]],_0xff22x9=this[_0x2b73[1097]][_0x2b73[249]]()[_0x2b73[255]];this[_0x2b73[1097]][_0x2b73[2561]](_0xff22x9- _0xff22x4* _0xff22x9/ _0xff22x5,!1)}else {if(!this[_0x2b73[1097]][_0x2b73[2365]]|| !mxUtils[_0x2b73[1134]](this[_0x2b73[1097]][_0x2b73[526]])){this[_0x2b73[1097]][_0x2b73[1135]](0,0),_0xff22x4/= this[_0x2b73[2136]][_0x2b73[249]]()[_0x2b73[255]],_0xff22x5/= this[_0x2b73[2136]][_0x2b73[249]]()[_0x2b73[255]],_0xff22x9= this[_0x2b73[1097]][_0x2b73[249]]()[_0x2b73[513]],this[_0x2b73[1097]][_0x2b73[249]]()[_0x2b73[1147]](_0xff22x9[_0x2b73[235]]- _0xff22x4,_0xff22x9[_0x2b73[236]]- _0xff22x5)}};this[_0x2b73[2729]]();_0xff22x3[_0x2b73[722]]()};this[_0x2b73[1983]]= null;this[_0x2b73[1124]]= !1}};mxOutline[_0x2b73[202]][_0x2b73[515]]= function(){null!= this[_0x2b73[1097]]&& (this[_0x2b73[1097]][_0x2b73[745]](this[_0x2b73[2730]]),this[_0x2b73[1097]][_0x2b73[745]](this[_0x2b73[2731]]),this[_0x2b73[1097]][_0x2b73[502]]()[_0x2b73[745]](this[_0x2b73[2728]]),this[_0x2b73[1097]][_0x2b73[249]]()[_0x2b73[745]](this[_0x2b73[2728]]),mxEvent[_0x2b73[169]](this[_0x2b73[1097]][_0x2b73[526]],_0x2b73[276],this[_0x2b73[2728]]),this[_0x2b73[1097]]= null);null!= this[_0x2b73[2136]]&& (this[_0x2b73[2136]][_0x2b73[1148]](this),this[_0x2b73[2136]][_0x2b73[515]](),this[_0x2b73[2136]]= null);null!= this[_0x2b73[2732]]&& (this[_0x2b73[2732]][_0x2b73[515]](),this[_0x2b73[2732]]= null);null!= this[_0x2b73[2734]]&& (this[_0x2b73[2734]][_0x2b73[515]](),this[_0x2b73[2734]]= null)};function mxMultiplicity(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa,_0xff22x12,_0xff22x13,_0xff22x14,_0xff22x15){this[_0x2b73[1097]]= _0xff22x2;this[_0x2b73[60]]= _0xff22x3;this[_0x2b73[2588]]= _0xff22x4;this[_0x2b73[131]]= _0xff22x5;this[_0x2b73[243]]= null!= _0xff22x9?_0xff22x9:0;this[_0x2b73[160]]= null!= _0xff22xa?_0xff22xa:_0x2b73[2743];this[_0x2b73[2744]]= _0xff22x12;this[_0x2b73[2589]]= mxResources[_0x2b73[203]](_0xff22x13)|| _0xff22x13;this[_0x2b73[2745]]= mxResources[_0x2b73[203]](_0xff22x14)|| _0xff22x14;this[_0x2b73[2746]]= null!= _0xff22x15?_0xff22x15:!0}mxMultiplicity[_0x2b73[202]][_0x2b73[60]]= null;mxMultiplicity[_0x2b73[202]][_0x2b73[2588]]= null;mxMultiplicity[_0x2b73[202]][_0x2b73[131]]= null;mxMultiplicity[_0x2b73[202]][_0x2b73[1097]]= null;mxMultiplicity[_0x2b73[202]][_0x2b73[243]]= null;mxMultiplicity[_0x2b73[202]][_0x2b73[160]]= null;mxMultiplicity[_0x2b73[202]][_0x2b73[2744]]= null;mxMultiplicity[_0x2b73[202]][_0x2b73[2746]]= !0;mxMultiplicity[_0x2b73[202]][_0x2b73[2589]]= null;mxMultiplicity[_0x2b73[202]][_0x2b73[2745]]= null;mxMultiplicity[_0x2b73[202]][_0x2b73[2583]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa){var _0xff22x12=_0x2b73[110];if(this[_0x2b73[1097]]&& this[_0x2b73[2747]](_0xff22x2,_0xff22x4,_0xff22x3)|| !this[_0x2b73[1097]]&& this[_0x2b73[2747]](_0xff22x2,_0xff22x5,_0xff22x3)){if(null!= this[_0x2b73[2589]]&& (this[_0x2b73[1097]]&& (0== this[_0x2b73[160]]|| _0xff22x9>= this[_0x2b73[160]])|| !this[_0x2b73[1097]]&& (0== this[_0x2b73[160]]|| _0xff22xa>= this[_0x2b73[160]]))){_0xff22x12+= this[_0x2b73[2589]]+ _0x2b73[192]};null!= this[_0x2b73[2744]]&& (null!= this[_0x2b73[2745]]&& 0< this[_0x2b73[2744]][_0x2b73[67]])&& (this[_0x2b73[2748]](_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5)|| (_0xff22x12+= this[_0x2b73[2745]]+ _0x2b73[192]))};return 0< _0xff22x12[_0x2b73[67]]?_0xff22x12:null};mxMultiplicity[_0x2b73[202]][_0x2b73[2748]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){_0xff22x3= _0xff22x2[_0x2b73[251]][_0x2b73[433]](_0xff22x4);_0xff22x5= _0xff22x2[_0x2b73[251]][_0x2b73[433]](_0xff22x5);_0xff22x4= !this[_0x2b73[2746]];for(var _0xff22x9=this[_0x2b73[2744]],_0xff22xa=0;_0xff22xa< _0xff22x9[_0x2b73[67]];_0xff22xa++){if(this[_0x2b73[1097]]&& this[_0x2b73[2749]](_0xff22x2,_0xff22x5,_0xff22x9[_0xff22xa])){_0xff22x4= this[_0x2b73[2746]];break}else {if(!this[_0x2b73[1097]]&& this[_0x2b73[2749]](_0xff22x2,_0xff22x3,_0xff22x9[_0xff22xa])){_0xff22x4= this[_0x2b73[2746]];break}}};return _0xff22x4};mxMultiplicity[_0x2b73[202]][_0x2b73[2747]]= function(_0xff22x2,_0xff22x3,_0xff22x4){_0xff22x3= _0xff22x2[_0x2b73[251]][_0x2b73[433]](_0xff22x3);return this[_0x2b73[2749]](_0xff22x2,_0xff22x3,this[_0x2b73[60]],this[_0x2b73[2588]],this[_0x2b73[131]])};mxMultiplicity[_0x2b73[202]][_0x2b73[2749]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){return null!= _0xff22x3?isNaN(_0xff22x3[_0x2b73[288]])?_0xff22x3== _0xff22x4:mxUtils[_0x2b73[1331]](_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9):!1};function mxLayoutManager(_0xff22x2){this[_0x2b73[2750]]= mxUtils[_0x2b73[885]](this,function(_0xff22x2,_0xff22x4){this[_0x2b73[994]]()&& this[_0x2b73[823]](_0xff22x4[_0x2b73[720]](_0x2b73[1061]))});this[_0x2b73[2317]]= mxUtils[_0x2b73[885]](this,function(_0xff22x2,_0xff22x4){this[_0x2b73[994]]()&& this[_0x2b73[835]](_0xff22x4[_0x2b73[720]](_0x2b73[895]),_0xff22x4[_0x2b73[720]](_0x2b73[763]))});this[_0x2b73[1178]](_0xff22x2)}mxLayoutManager[_0x2b73[202]]= new mxEventSource;mxLayoutManager[_0x2b73[202]][_0x2b73[196]]= mxLayoutManager;mxLayoutManager[_0x2b73[202]][_0x2b73[1179]]= null;mxLayoutManager[_0x2b73[202]][_0x2b73[2751]]= !0;mxLayoutManager[_0x2b73[202]][_0x2b73[984]]= !0;mxLayoutManager[_0x2b73[202]][_0x2b73[2728]]= null;mxLayoutManager[_0x2b73[202]][_0x2b73[2317]]= null;mxLayoutManager[_0x2b73[202]][_0x2b73[994]]= function(){return this[_0x2b73[984]]};mxLayoutManager[_0x2b73[202]][_0x2b73[995]]= function(_0xff22x2){this[_0x2b73[984]]= _0xff22x2};mxLayoutManager[_0x2b73[202]][_0x2b73[2752]]= function(){return this[_0x2b73[2751]]};mxLayoutManager[_0x2b73[202]][_0x2b73[2753]]= function(_0xff22x2){this[_0x2b73[2751]]= _0xff22x2};mxLayoutManager[_0x2b73[202]][_0x2b73[1703]]= function(){return this[_0x2b73[1179]]};mxLayoutManager[_0x2b73[202]][_0x2b73[1178]]= function(_0xff22x2){if(null!= this[_0x2b73[1179]]){var _0xff22x3=this[_0x2b73[1179]][_0x2b73[502]]();_0xff22x3[_0x2b73[745]](this[_0x2b73[2750]]);this[_0x2b73[1179]][_0x2b73[745]](this[_0x2b73[2317]])};this[_0x2b73[1179]]= _0xff22x2;null!= this[_0x2b73[1179]]&& (_0xff22x3= this[_0x2b73[1179]][_0x2b73[502]](),_0xff22x3[_0x2b73[169]](mxEvent.BEFORE_UNDO,this[_0x2b73[2750]]),this[_0x2b73[1179]][_0x2b73[169]](mxEvent.MOVE_CELLS,this[_0x2b73[2317]]))};mxLayoutManager[_0x2b73[202]][_0x2b73[2754]]= function(_0xff22x2){return null};mxLayoutManager[_0x2b73[202]][_0x2b73[823]]= function(_0xff22x2){_0xff22x2= this[_0x2b73[2755]](_0xff22x2[_0x2b73[1065]]);var _0xff22x3=this[_0x2b73[1703]]()[_0x2b73[502]]();if(this[_0x2b73[2752]]()){for(var _0xff22x4=_0xff22x3[_0x2b73[1977]](_0xff22x2);0< _0xff22x4[_0x2b73[67]];){_0xff22x2= _0xff22x2[_0x2b73[1919]](_0xff22x4),_0xff22x4= _0xff22x3[_0x2b73[1977]](_0xff22x4)}};this[_0x2b73[828]](mxUtils[_0x2b73[1779]](_0xff22x2,!1))};mxLayoutManager[_0x2b73[202]][_0x2b73[835]]= function(_0xff22x2,_0xff22x3){if(null!= _0xff22x2&& null!= _0xff22x3){for(var _0xff22x4=mxUtils[_0x2b73[2196]](this[_0x2b73[1703]]()[_0x2b73[526]],mxEvent[_0x2b73[731]](_0xff22x3),mxEvent[_0x2b73[733]](_0xff22x3)),_0xff22x5=this[_0x2b73[1703]]()[_0x2b73[502]](),_0xff22x9=0;_0xff22x9< _0xff22x2[_0x2b73[67]];_0xff22x9++){var _0xff22xa=this[_0x2b73[2754]](_0xff22x5[_0x2b73[1197]](_0xff22x2[_0xff22x9]));null!= _0xff22xa&& _0xff22xa[_0x2b73[1702]](_0xff22x2[_0xff22x9],_0xff22x4[_0x2b73[235]],_0xff22x4[_0x2b73[236]])}}};mxLayoutManager[_0x2b73[202]][_0x2b73[2755]]= function(_0xff22x2){for(var _0xff22x3=[],_0xff22x4={},_0xff22x5=0;_0xff22x5< _0xff22x2[_0x2b73[67]];_0xff22x5++){var _0xff22x9=_0xff22x2[_0xff22x5];if(_0xff22x9 instanceof mxRootChange){return []};for(var _0xff22x9=this[_0x2b73[2756]](_0xff22x9),_0xff22xa=0;_0xff22xa< _0xff22x9[_0x2b73[67]];_0xff22xa++){if(null!= _0xff22x9[_0xff22xa]){var _0xff22x12=mxCellPath[_0x2b73[385]](_0xff22x9[_0xff22xa]);null== _0xff22x4[_0xff22x12]&& (_0xff22x4[_0xff22x12]= _0xff22x9[_0xff22xa],_0xff22x3[_0x2b73[207]](_0xff22x9[_0xff22xa]))}}};return _0xff22x3};mxLayoutManager[_0x2b73[202]][_0x2b73[2756]]= function(_0xff22x2){var _0xff22x3=this[_0x2b73[1703]]()[_0x2b73[502]]();return _0xff22x2 instanceof mxChildChange?[_0xff22x2[_0x2b73[247]],_0xff22x2[_0x2b73[257]],_0xff22x3[_0x2b73[1197]](_0xff22x2[_0x2b73[247]])]:_0xff22x2 instanceof mxTerminalChange|| _0xff22x2 instanceof mxGeometryChange?[_0xff22x2[_0x2b73[246]],_0xff22x3[_0x2b73[1197]](_0xff22x2[_0x2b73[246]])]:[]};mxLayoutManager[_0x2b73[202]][_0x2b73[828]]= function(_0xff22x2){if(0< _0xff22x2[_0x2b73[67]]){var _0xff22x3=this[_0x2b73[1703]]()[_0x2b73[502]]();_0xff22x3[_0x2b73[473]]();try{for(var _0xff22x4=null,_0xff22x5=0;_0xff22x5< _0xff22x2[_0x2b73[67]];_0xff22x5++){_0xff22x2[_0xff22x5]!= _0xff22x3[_0x2b73[501]]()&& _0xff22x2[_0xff22x5]!= _0xff22x4&& (_0xff22x4= _0xff22x2[_0xff22x5],this[_0x2b73[2757]](this[_0x2b73[2754]](_0xff22x4),_0xff22x4))};this[_0x2b73[746]]( new mxEventObject(mxEvent.LAYOUT_CELLS,_0x2b73[895],_0xff22x2))}finally{_0xff22x3[_0x2b73[476]]()}}};mxLayoutManager[_0x2b73[202]][_0x2b73[2757]]= function(_0xff22x2,_0xff22x3){null!= _0xff22x2&& null!= _0xff22x3&& _0xff22x2[_0x2b73[350]](_0xff22x3)};mxLayoutManager[_0x2b73[202]][_0x2b73[515]]= function(){this[_0x2b73[1178]](null)};function mxSpaceManager(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){this[_0x2b73[2758]]= mxUtils[_0x2b73[885]](this,function(_0xff22x2,_0xff22x3){this[_0x2b73[994]]()&& this[_0x2b73[837]](_0xff22x3[_0x2b73[720]](_0x2b73[895]))});this[_0x2b73[2759]]= mxUtils[_0x2b73[885]](this,function(_0xff22x2,_0xff22x3){this[_0x2b73[994]]()&& this[_0x2b73[837]](_0xff22x3[_0x2b73[720]](_0x2b73[895]))});this[_0x2b73[2760]]= null!= _0xff22x3?_0xff22x3:!0;this[_0x2b73[2761]]= null!= _0xff22x4?_0xff22x4:!0;this[_0x2b73[2392]]= null!= _0xff22x5?_0xff22x5:!0;this[_0x2b73[1178]](_0xff22x2)}mxSpaceManager[_0x2b73[202]]= new mxEventSource;mxSpaceManager[_0x2b73[202]][_0x2b73[196]]= mxSpaceManager;mxSpaceManager[_0x2b73[202]][_0x2b73[1179]]= null;mxSpaceManager[_0x2b73[202]][_0x2b73[984]]= !0;mxSpaceManager[_0x2b73[202]][_0x2b73[2760]]= !0;mxSpaceManager[_0x2b73[202]][_0x2b73[2761]]= !0;mxSpaceManager[_0x2b73[202]][_0x2b73[2392]]= !0;mxSpaceManager[_0x2b73[202]][_0x2b73[2758]]= null;mxSpaceManager[_0x2b73[202]][_0x2b73[2759]]= null;mxSpaceManager[_0x2b73[202]][_0x2b73[2762]]= function(_0xff22x2){return !this[_0x2b73[1703]]()[_0x2b73[502]]()[_0x2b73[1193]](_0xff22x2)};mxSpaceManager[_0x2b73[202]][_0x2b73[2763]]= function(_0xff22x2){return this[_0x2b73[1703]]()[_0x2b73[502]]()[_0x2b73[1193]](_0xff22x2)&& this[_0x2b73[1703]]()[_0x2b73[1712]](_0xff22x2)};mxSpaceManager[_0x2b73[202]][_0x2b73[994]]= function(){return this[_0x2b73[984]]};mxSpaceManager[_0x2b73[202]][_0x2b73[995]]= function(_0xff22x2){this[_0x2b73[984]]= _0xff22x2};mxSpaceManager[_0x2b73[202]][_0x2b73[2764]]= function(){return this[_0x2b73[2760]]};mxSpaceManager[_0x2b73[202]][_0x2b73[2765]]= function(_0xff22x2){this[_0x2b73[2760]]= _0xff22x2};mxSpaceManager[_0x2b73[202]][_0x2b73[2766]]= function(){return this[_0x2b73[2761]]};mxSpaceManager[_0x2b73[202]][_0x2b73[2767]]= function(_0xff22x2){this[_0x2b73[2761]]= _0xff22x2};mxSpaceManager[_0x2b73[202]][_0x2b73[2678]]= function(){return this[_0x2b73[2392]]};mxSpaceManager[_0x2b73[202]][_0x2b73[2679]]= function(_0xff22x2){this[_0x2b73[2392]]= _0xff22x2};mxSpaceManager[_0x2b73[202]][_0x2b73[1703]]= function(){return this[_0x2b73[1179]]};mxSpaceManager[_0x2b73[202]][_0x2b73[1178]]= function(_0xff22x2){null!= this[_0x2b73[1179]]&& (this[_0x2b73[1179]][_0x2b73[745]](this[_0x2b73[2758]]),this[_0x2b73[1179]][_0x2b73[745]](this[_0x2b73[2759]]));this[_0x2b73[1179]]= _0xff22x2;null!= this[_0x2b73[1179]]&& (this[_0x2b73[1179]][_0x2b73[169]](mxEvent.RESIZE_CELLS,this[_0x2b73[2758]]),this[_0x2b73[1179]][_0x2b73[169]](mxEvent.FOLD_CELLS,this[_0x2b73[2759]]))};mxSpaceManager[_0x2b73[202]][_0x2b73[837]]= function(_0xff22x2){if(null!= _0xff22x2){var _0xff22x3=this[_0x2b73[1179]][_0x2b73[502]]();_0xff22x3[_0x2b73[473]]();try{for(var _0xff22x4=0;_0xff22x4< _0xff22x2[_0x2b73[67]];_0xff22x4++){if(!this[_0x2b73[2762]](_0xff22x2[_0xff22x4])){this[_0x2b73[2768]](_0xff22x2[_0xff22x4]);break}}}finally{_0xff22x3[_0x2b73[476]]()}}};mxSpaceManager[_0x2b73[202]][_0x2b73[2768]]= function(_0xff22x2){var _0xff22x3=this[_0x2b73[1703]](),_0xff22x4=_0xff22x3[_0x2b73[249]](),_0xff22x5=_0xff22x3[_0x2b73[502]](),_0xff22x9=_0xff22x4[_0x2b73[248]](_0xff22x2),_0xff22xa=_0xff22x4[_0x2b73[248]](_0xff22x5[_0x2b73[1197]](_0xff22x2));if(null!= _0xff22x9&& null!= _0xff22xa){var _0xff22x12=this[_0x2b73[2769]](_0xff22x9),_0xff22x13=_0xff22x5[_0x2b73[1721]](_0xff22x2);if(null!= _0xff22x12&& null!= _0xff22x13){var _0xff22x14=_0xff22x4[_0x2b73[513]],_0xff22x15=_0xff22x4[_0x2b73[255]],_0xff22x4=_0xff22x9[_0x2b73[235]]- _0xff22xa[_0x2b73[2078]][_0x2b73[235]]- _0xff22x14[_0x2b73[235]]* _0xff22x15,_0xff22xa=_0xff22x9[_0x2b73[236]]- _0xff22xa[_0x2b73[2078]][_0x2b73[236]]- _0xff22x14[_0x2b73[236]]* _0xff22x15,_0xff22x14=_0xff22x9[_0x2b73[235]]+ _0xff22x9[_0x2b73[117]],_0xff22x16=_0xff22x9[_0x2b73[236]]+ _0xff22x9[_0x2b73[119]],_0xff22x17=_0xff22x9[_0x2b73[117]]- _0xff22x13[_0x2b73[117]]* _0xff22x15+ _0xff22x4- _0xff22x13[_0x2b73[235]]* _0xff22x15,_0xff22x18=_0xff22x9[_0x2b73[119]]- _0xff22x13[_0x2b73[119]]* _0xff22x15+ _0xff22xa- _0xff22x13[_0x2b73[236]]* _0xff22x15,_0xff22x19=1- _0xff22x13[_0x2b73[117]]* _0xff22x15/ _0xff22x9[_0x2b73[117]],_0xff22x9=1- _0xff22x13[_0x2b73[119]]* _0xff22x15/ _0xff22x9[_0x2b73[119]];_0xff22x5[_0x2b73[473]]();try{for(_0xff22x13= 0;_0xff22x13< _0xff22x12[_0x2b73[67]];_0xff22x13++){_0xff22x12[_0xff22x13]!= _0xff22x2&& this[_0x2b73[2763]](_0xff22x12[_0xff22x13])&& this[_0x2b73[2770]](_0xff22x12[_0xff22x13],_0xff22x17,_0xff22x18,_0xff22x4,_0xff22xa,_0xff22x14,_0xff22x16,_0xff22x19,_0xff22x9,this[_0x2b73[2678]]()&& _0xff22x3[_0x2b73[2507]](_0xff22x12[_0xff22x13]))}}finally{_0xff22x5[_0x2b73[476]]()}}}};mxSpaceManager[_0x2b73[202]][_0x2b73[2770]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa,_0xff22x12,_0xff22x13,_0xff22x14,_0xff22x15){_0xff22x5= this[_0x2b73[1703]]();var _0xff22x16=_0xff22x5[_0x2b73[249]]()[_0x2b73[248]](_0xff22x2);if(null!= _0xff22x16){var _0xff22x17=_0xff22x5[_0x2b73[502]](),_0xff22x18=_0xff22x17[_0x2b73[1721]](_0xff22x2);if(null!= _0xff22x18){_0xff22x17[_0x2b73[473]]();try{if(this[_0x2b73[2764]]()){if(_0xff22x16[_0x2b73[235]]>= _0xff22xa){_0xff22x18= _0xff22x18[_0x2b73[238]](),_0xff22x18[_0x2b73[513]](-_0xff22x3,0)}else {var _0xff22x19=Math[_0x2b73[160]](0,_0xff22x16[_0x2b73[235]]- x0),_0xff22x18=_0xff22x18[_0x2b73[238]]();_0xff22x18[_0x2b73[513]](-_0xff22x13* _0xff22x19,0)}};if(this[_0x2b73[2766]]()){if(_0xff22x16[_0x2b73[236]]>= _0xff22x12){_0xff22x18= _0xff22x18[_0x2b73[238]](),_0xff22x18[_0x2b73[513]](0,-_0xff22x4)}else {var _0xff22x1a=Math[_0x2b73[160]](0,_0xff22x16[_0x2b73[236]]- _0xff22x9),_0xff22x18=_0xff22x18[_0x2b73[238]]();_0xff22x18[_0x2b73[513]](0,-_0xff22x14* _0xff22x1a)}};_0xff22x18!= _0xff22x17[_0x2b73[1721]](_0xff22x2)&& (_0xff22x17[_0x2b73[1724]](_0xff22x2,_0xff22x18),_0xff22x15&& _0xff22x5[_0x2b73[2508]](_0xff22x2))}finally{_0xff22x17[_0x2b73[476]]()}}}};mxSpaceManager[_0x2b73[202]][_0x2b73[2769]]= function(_0xff22x2){var _0xff22x3=this[_0x2b73[1703]](),_0xff22x4=_0xff22x3[_0x2b73[502]]()[_0x2b73[1197]](_0xff22x2[_0x2b73[246]]),_0xff22x5=this[_0x2b73[2766]](),_0xff22x9=this[_0x2b73[2764]]();return _0xff22x3[_0x2b73[2691]](_0xff22x2[_0x2b73[235]]+ (_0xff22x5?0:_0xff22x2[_0x2b73[117]]),_0xff22x2[_0x2b73[236]]+ (_0xff22x5&& _0xff22x9?0:_0xff22x2[_0x2b73[119]]),_0xff22x4,_0xff22x9,_0xff22x5)};mxSpaceManager[_0x2b73[202]][_0x2b73[515]]= function(){this[_0x2b73[1178]](null)};function mxSwimlaneManager(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){this[_0x2b73[662]]= null!= _0xff22x3?_0xff22x3:!0;this[_0x2b73[2771]]= null!= _0xff22x4?_0xff22x4:!0;this[_0x2b73[2772]]= null!= _0xff22x5?_0xff22x5:!0;this[_0x2b73[2773]]= mxUtils[_0x2b73[885]](this,function(_0xff22x2,_0xff22x3){this[_0x2b73[994]]()&& this[_0x2b73[2774]]()&& this[_0x2b73[833]](_0xff22x3[_0x2b73[720]](_0x2b73[895]))});this[_0x2b73[2758]]= mxUtils[_0x2b73[885]](this,function(_0xff22x2,_0xff22x3){this[_0x2b73[994]]()&& this[_0x2b73[2775]]()&& this[_0x2b73[837]](_0xff22x3[_0x2b73[720]](_0x2b73[895]))});this[_0x2b73[1178]](_0xff22x2)}mxSwimlaneManager[_0x2b73[202]]= new mxEventSource;mxSwimlaneManager[_0x2b73[202]][_0x2b73[196]]= mxSwimlaneManager;mxSwimlaneManager[_0x2b73[202]][_0x2b73[1179]]= null;mxSwimlaneManager[_0x2b73[202]][_0x2b73[984]]= !0;mxSwimlaneManager[_0x2b73[202]][_0x2b73[662]]= !0;mxSwimlaneManager[_0x2b73[202]][_0x2b73[2771]]= !0;mxSwimlaneManager[_0x2b73[202]][_0x2b73[2772]]= !0;mxSwimlaneManager[_0x2b73[202]][_0x2b73[2773]]= null;mxSwimlaneManager[_0x2b73[202]][_0x2b73[2758]]= null;mxSwimlaneManager[_0x2b73[202]][_0x2b73[994]]= function(){return this[_0x2b73[984]]};mxSwimlaneManager[_0x2b73[202]][_0x2b73[995]]= function(_0xff22x2){this[_0x2b73[984]]= _0xff22x2};mxSwimlaneManager[_0x2b73[202]][_0x2b73[1737]]= function(){return this[_0x2b73[662]]};mxSwimlaneManager[_0x2b73[202]][_0x2b73[2776]]= function(_0xff22x2){this[_0x2b73[662]]= _0xff22x2};mxSwimlaneManager[_0x2b73[202]][_0x2b73[2774]]= function(){return this[_0x2b73[2771]]};mxSwimlaneManager[_0x2b73[202]][_0x2b73[2777]]= function(_0xff22x2){this[_0x2b73[2771]]= _0xff22x2};mxSwimlaneManager[_0x2b73[202]][_0x2b73[2775]]= function(){return this[_0x2b73[2772]]};mxSwimlaneManager[_0x2b73[202]][_0x2b73[2778]]= function(_0xff22x2){this[_0x2b73[2772]]= _0xff22x2};mxSwimlaneManager[_0x2b73[202]][_0x2b73[1703]]= function(){return this[_0x2b73[1179]]};mxSwimlaneManager[_0x2b73[202]][_0x2b73[1178]]= function(_0xff22x2){null!= this[_0x2b73[1179]]&& (this[_0x2b73[1179]][_0x2b73[745]](this[_0x2b73[2773]]),this[_0x2b73[1179]][_0x2b73[745]](this[_0x2b73[2758]]));this[_0x2b73[1179]]= _0xff22x2;null!= this[_0x2b73[1179]]&& (this[_0x2b73[1179]][_0x2b73[169]](mxEvent.ADD_CELLS,this[_0x2b73[2773]]),this[_0x2b73[1179]][_0x2b73[169]](mxEvent.CELLS_RESIZED,this[_0x2b73[2758]]))};mxSwimlaneManager[_0x2b73[202]][_0x2b73[2779]]= function(_0xff22x2){return !this[_0x2b73[1703]]()[_0x2b73[1730]](_0xff22x2)};mxSwimlaneManager[_0x2b73[202]][_0x2b73[2780]]= function(_0xff22x2){if(this[_0x2b73[1179]][_0x2b73[1730]](_0xff22x2)){var _0xff22x3=this[_0x2b73[1179]][_0x2b73[441]][_0x2b73[248]](_0xff22x2);_0xff22x2= null!= _0xff22x3?_0xff22x3[_0x2b73[124]]:this[_0x2b73[1179]][_0x2b73[1705]](_0xff22x2);return 1== mxUtils[_0x2b73[433]](_0xff22x2,mxConstants.STYLE_HORIZONTAL,1)};return !this[_0x2b73[1737]]()};mxSwimlaneManager[_0x2b73[202]][_0x2b73[833]]= function(_0xff22x2){if(null!= _0xff22x2){var _0xff22x3=this[_0x2b73[1703]]()[_0x2b73[502]]();_0xff22x3[_0x2b73[473]]();try{for(var _0xff22x4=0;_0xff22x4< _0xff22x2[_0x2b73[67]];_0xff22x4++){this[_0x2b73[2779]](_0xff22x2[_0xff22x4])|| this[_0x2b73[2781]](_0xff22x2[_0xff22x4])}}finally{_0xff22x3[_0x2b73[476]]()}}};mxSwimlaneManager[_0x2b73[202]][_0x2b73[2781]]= function(_0xff22x2){for(var _0xff22x3=this[_0x2b73[1703]]()[_0x2b73[502]](),_0xff22x4=_0xff22x3[_0x2b73[1197]](_0xff22x2),_0xff22x5=_0xff22x3[_0x2b73[262]](_0xff22x4),_0xff22x9=null,_0xff22xa=0;_0xff22xa< _0xff22x5;_0xff22xa++){var _0xff22x12=_0xff22x3[_0x2b73[263]](_0xff22x4,_0xff22xa);if(_0xff22x12!= _0xff22x2&& !this[_0x2b73[2779]](_0xff22x12)&& (_0xff22x9= _0xff22x3[_0x2b73[1721]](_0xff22x12),null!= _0xff22x9)){break}};null!= _0xff22x9&& this[_0x2b73[2782]](_0xff22x2,_0xff22x9[_0x2b73[117]],_0xff22x9[_0x2b73[119]])};mxSwimlaneManager[_0x2b73[202]][_0x2b73[837]]= function(_0xff22x2){if(null!= _0xff22x2){var _0xff22x3=this[_0x2b73[1703]]()[_0x2b73[502]]();_0xff22x3[_0x2b73[473]]();try{for(var _0xff22x4=0;_0xff22x4< _0xff22x2[_0x2b73[67]];_0xff22x4++){if(!this[_0x2b73[2779]](_0xff22x2[_0xff22x4])){var _0xff22x5=_0xff22x3[_0x2b73[1721]](_0xff22x2[_0xff22x4]);if(null!= _0xff22x5){for(var _0xff22x9= new mxRectangle(0,0,_0xff22x5[_0x2b73[117]],_0xff22x5[_0x2b73[119]]),_0xff22xa=_0xff22x2[_0xff22x4],_0xff22x12=_0xff22xa;null!= _0xff22x12;){var _0xff22xa=_0xff22x12,_0xff22x12=_0xff22x3[_0x2b73[1197]](_0xff22x12),_0xff22x13=this[_0x2b73[1179]][_0x2b73[1730]](_0xff22x12)?this[_0x2b73[1179]][_0x2b73[1731]](_0xff22x12): new mxRectangle;_0xff22x9[_0x2b73[117]]+= _0xff22x13[_0x2b73[117]];_0xff22x9[_0x2b73[119]]+= _0xff22x13[_0x2b73[119]]};this[_0x2b73[2782]](_0xff22xa,_0xff22x9[_0x2b73[117]],_0xff22x9[_0x2b73[119]])}}}}finally{_0xff22x3[_0x2b73[476]]()}}};mxSwimlaneManager[_0x2b73[202]][_0x2b73[2782]]= function(_0xff22x2,_0xff22x3,_0xff22x4){var _0xff22x5=this[_0x2b73[1703]]()[_0x2b73[502]]();_0xff22x5[_0x2b73[473]]();try{if(!this[_0x2b73[2779]](_0xff22x2)){var _0xff22x9=_0xff22x5[_0x2b73[1721]](_0xff22x2);if(null!= _0xff22x9){var _0xff22xa=this[_0x2b73[2780]](_0xff22x2);if(_0xff22xa&& _0xff22x9[_0x2b73[119]]!= _0xff22x4|| !_0xff22xa&& _0xff22x9[_0x2b73[117]]!= _0xff22x3){_0xff22x9= _0xff22x9[_0x2b73[238]](),_0xff22xa?_0xff22x9[_0x2b73[119]]= _0xff22x4:_0xff22x9[_0x2b73[117]]= _0xff22x3,_0xff22x5[_0x2b73[1724]](_0xff22x2,_0xff22x9)}}};var _0xff22x12=this[_0x2b73[1179]][_0x2b73[1730]](_0xff22x2)?this[_0x2b73[1179]][_0x2b73[1731]](_0xff22x2): new mxRectangle;_0xff22x3-= _0xff22x12[_0x2b73[117]];_0xff22x4-= _0xff22x12[_0x2b73[119]];for(var _0xff22x13=_0xff22x5[_0x2b73[262]](_0xff22x2),_0xff22x9=0;_0xff22x9< _0xff22x13;_0xff22x9++){var _0xff22x14=_0xff22x5[_0x2b73[263]](_0xff22x2,_0xff22x9);this[_0x2b73[2782]](_0xff22x14,_0xff22x3,_0xff22x4)}}finally{_0xff22x5[_0x2b73[476]]()}};mxSwimlaneManager[_0x2b73[202]][_0x2b73[515]]= function(){this[_0x2b73[1178]](null)};function mxTemporaryCellStates(_0xff22x2,_0xff22x3,_0xff22x4){this[_0x2b73[441]]= _0xff22x2;_0xff22x3= null!= _0xff22x3?_0xff22x3:1;this[_0x2b73[2783]]= _0xff22x2[_0x2b73[517]]();this[_0x2b73[2784]]= _0xff22x2[_0x2b73[2312]]();this[_0x2b73[2785]]= _0xff22x2[_0x2b73[518]]();_0xff22x2[_0x2b73[1517]]( new mxDictionary);_0xff22x2[_0x2b73[2262]](_0xff22x3);if(null!= _0xff22x4){_0xff22x3= _0xff22x2[_0x2b73[1230]]( new mxCell);for(var _0xff22x5=0;_0xff22x5< _0xff22x4[_0x2b73[67]];_0xff22x5++){_0xff22x2[_0x2b73[2267]](_0xff22x3,_0xff22x4[_0xff22x5])};for(var _0xff22x9=null,_0xff22x5=0;_0xff22x5< _0xff22x4[_0x2b73[67]];_0xff22x5++){var _0xff22xa=_0xff22x2[_0x2b73[2268]](_0xff22x3,_0xff22x4[_0xff22x5]);null== _0xff22x9?_0xff22x9= _0xff22xa:_0xff22x9[_0x2b73[99]](_0xff22xa)};null== _0xff22x9&& (_0xff22x9= new mxRectangle);_0xff22x2[_0x2b73[2256]](_0xff22x9)}}mxTemporaryCellStates[_0x2b73[202]][_0x2b73[441]]= null;mxTemporaryCellStates[_0x2b73[202]][_0x2b73[2784]]= null;mxTemporaryCellStates[_0x2b73[202]][_0x2b73[2783]]= null;mxTemporaryCellStates[_0x2b73[202]][_0x2b73[2785]]= null;mxTemporaryCellStates[_0x2b73[202]][_0x2b73[515]]= function(){this[_0x2b73[441]][_0x2b73[2262]](this[_0x2b73[2785]]);this[_0x2b73[441]][_0x2b73[1517]](this[_0x2b73[2784]]);this[_0x2b73[441]][_0x2b73[2256]](this[_0x2b73[2783]])};function mxCellStatePreview(_0xff22x2){this[_0x2b73[1179]]= _0xff22x2;this[_0x2b73[2786]]= {}}mxCellStatePreview[_0x2b73[202]][_0x2b73[1179]]= null;mxCellStatePreview[_0x2b73[202]][_0x2b73[2786]]= null;mxCellStatePreview[_0x2b73[202]][_0x2b73[2787]]= 0;mxCellStatePreview[_0x2b73[202]][_0x2b73[1107]]= function(){return 0== this[_0x2b73[2787]]};mxCellStatePreview[_0x2b73[202]][_0x2b73[1194]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){_0xff22x5= null!= _0xff22x5?_0xff22x5:!0;_0xff22x9= null!= _0xff22x9?_0xff22x9:!0;var _0xff22xa=mxCellPath[_0x2b73[385]](_0xff22x2[_0x2b73[246]]),_0xff22x12=this[_0x2b73[2786]][_0xff22xa];null== _0xff22x12?(_0xff22x12= new mxPoint(_0xff22x3,_0xff22x4),this[_0x2b73[2786]][_0xff22xa]= _0xff22x12,this[_0x2b73[2787]]++):_0xff22x5?(_0xff22x12[_0x2b73[2788]]+= _0xff22x3,_0xff22x12[_0x2b73[2789]]+= _0xff22x4):(_0xff22x12[_0x2b73[2788]]= _0xff22x3,_0xff22x12[_0x2b73[2789]]= _0xff22x4);_0xff22x9&& this[_0x2b73[2790]](_0xff22x2);return _0xff22x12};mxCellStatePreview[_0x2b73[202]][_0x2b73[539]]= function(_0xff22x2){var _0xff22x3=this[_0x2b73[1179]][_0x2b73[502]](),_0xff22x4=_0xff22x3[_0x2b73[501]](),_0xff22x5;for(_0xff22x5 in this[_0x2b73[2786]]){var _0xff22x9=mxCellPath[_0x2b73[2791]](_0xff22x4,_0xff22x5),_0xff22xa=this[_0x2b73[1179]][_0x2b73[441]][_0x2b73[248]](_0xff22x9),_0xff22x12=this[_0x2b73[2786]][_0xff22x5],_0xff22x9=this[_0x2b73[1179]][_0x2b73[441]][_0x2b73[248]](_0xff22x3[_0x2b73[1197]](_0xff22x9));this[_0x2b73[2792]](_0xff22x9,_0xff22xa,_0xff22x12[_0x2b73[235]],_0xff22x12[_0x2b73[236]])};for(_0xff22x5 in this[_0x2b73[2786]]){_0xff22x9= mxCellPath[_0x2b73[2791]](_0xff22x4,_0xff22x5),_0xff22xa= this[_0x2b73[1179]][_0x2b73[441]][_0x2b73[248]](_0xff22x9),_0xff22x12= this[_0x2b73[2786]][_0xff22x5],_0xff22x9= this[_0x2b73[1179]][_0x2b73[441]][_0x2b73[248]](_0xff22x3[_0x2b73[1197]](_0xff22x9)),this[_0x2b73[2793]](_0xff22x9,_0xff22xa,_0xff22x12[_0x2b73[235]],_0xff22x12[_0x2b73[236]],_0xff22x2)}};mxCellStatePreview[_0x2b73[202]][_0x2b73[2792]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){if(null!= _0xff22x3){var _0xff22x9=this[_0x2b73[1179]][_0x2b73[502]]();if(_0xff22x9[_0x2b73[1193]](_0xff22x3[_0x2b73[246]])){_0xff22x3[_0x2b73[2080]]= !0;this[_0x2b73[1179]][_0x2b73[441]][_0x2b73[2267]](_0xff22x2,_0xff22x3[_0x2b73[246]]);_0xff22x2= _0xff22x9[_0x2b73[1721]](_0xff22x3[_0x2b73[246]]);var _0xff22xa=mxCellPath[_0x2b73[385]](_0xff22x3[_0x2b73[246]]);if((0!= _0xff22x4|| 0!= _0xff22x5)&& null!= _0xff22x2&& (!_0xff22x2[_0x2b73[1500]]|| null!= this[_0x2b73[2786]][_0xff22xa])){_0xff22x3[_0x2b73[235]]+= _0xff22x4,_0xff22x3[_0x2b73[236]]+= _0xff22x5}};_0xff22x2= _0xff22x9[_0x2b73[262]](_0xff22x3[_0x2b73[246]]);for(_0xff22xa= 0;_0xff22xa< _0xff22x2;_0xff22xa++){this[_0x2b73[2792]](_0xff22x3,this[_0x2b73[1179]][_0x2b73[441]][_0x2b73[248]](_0xff22x9[_0x2b73[263]](_0xff22x3[_0x2b73[246]],_0xff22xa)),_0xff22x4,_0xff22x5)}}};mxCellStatePreview[_0x2b73[202]][_0x2b73[2793]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){if(null!= _0xff22x3){_0xff22x3[_0x2b73[2080]]= !0;this[_0x2b73[1179]][_0x2b73[441]][_0x2b73[2268]](_0xff22x2,_0xff22x3[_0x2b73[246]]);var _0xff22xa=mxCellPath[_0x2b73[385]](_0xff22x3[_0x2b73[246]]),_0xff22x12=this[_0x2b73[1179]][_0x2b73[502]](),_0xff22x13=this[_0x2b73[1179]][_0x2b73[1198]](_0xff22x3[_0x2b73[246]]);if((0!= _0xff22x4|| 0!= _0xff22x5)&& null!= _0xff22x13&& _0xff22x13[_0x2b73[1500]]&& _0xff22x12[_0x2b73[1193]](_0xff22x3[_0x2b73[246]])&& (null== _0xff22x2|| _0xff22x12[_0x2b73[1193]](_0xff22x2[_0x2b73[246]])|| null!= this[_0x2b73[2786]][_0xff22xa])){_0xff22x3[_0x2b73[235]]+= _0xff22x4,_0xff22x3[_0x2b73[236]]+= _0xff22x5,this[_0x2b73[1179]][_0x2b73[259]][_0x2b73[258]](_0xff22x3)};null!= _0xff22x9&& _0xff22x9(_0xff22x3);_0xff22x2= _0xff22x12[_0x2b73[262]](_0xff22x3[_0x2b73[246]]);for(_0xff22xa= 0;_0xff22xa< _0xff22x2;_0xff22xa++){this[_0x2b73[2793]](_0xff22x3,this[_0x2b73[1179]][_0x2b73[441]][_0x2b73[248]](_0xff22x12[_0x2b73[263]](_0xff22x3[_0x2b73[246]],_0xff22xa)),_0xff22x4,_0xff22x5,_0xff22x9)}}};mxCellStatePreview[_0x2b73[202]][_0x2b73[2790]]= function(_0xff22x2){for(var _0xff22x3=this[_0x2b73[1179]][_0x2b73[502]](),_0xff22x4=_0xff22x3[_0x2b73[1707]](_0xff22x2[_0x2b73[246]]),_0xff22x5=0;_0xff22x5< _0xff22x4;_0xff22x5++){var _0xff22x9=this[_0x2b73[1179]][_0x2b73[441]][_0x2b73[248]](_0xff22x3[_0x2b73[1708]](_0xff22x2[_0x2b73[246]],_0xff22x5));null!= _0xff22x9&& this[_0x2b73[1194]](_0xff22x9,0,0)}};function mxConnectionConstraint(_0xff22x2,_0xff22x3){this[_0x2b73[2546]]= _0xff22x2;this[_0x2b73[591]]= null!= _0xff22x3?_0xff22x3:!0}mxConnectionConstraint[_0x2b73[202]][_0x2b73[2546]]= null;mxConnectionConstraint[_0x2b73[202]][_0x2b73[591]]= null;function mxGraphHandler(_0xff22x2){this[_0x2b73[1179]]= _0xff22x2;this[_0x2b73[1179]][_0x2b73[1133]](this);this[_0x2b73[2730]]= mxUtils[_0x2b73[885]](this,function(){this[_0x2b73[2794]]()});this[_0x2b73[1179]][_0x2b73[169]](mxEvent.PAN,this[_0x2b73[2730]])}mxGraphHandler[_0x2b73[202]][_0x2b73[1179]]= null;mxGraphHandler[_0x2b73[202]][_0x2b73[2795]]= mxClient[_0x2b73[80]]?20:50;mxGraphHandler[_0x2b73[202]][_0x2b73[984]]= !0;mxGraphHandler[_0x2b73[202]][_0x2b73[2796]]= !0;mxGraphHandler[_0x2b73[202]][_0x2b73[2797]]= !0;mxGraphHandler[_0x2b73[202]][_0x2b73[2798]]= !0;mxGraphHandler[_0x2b73[202]][_0x2b73[990]]= !1;mxGraphHandler[_0x2b73[202]][_0x2b73[2799]]= null;mxGraphHandler[_0x2b73[202]][_0x2b73[2800]]= null;mxGraphHandler[_0x2b73[202]][_0x2b73[2801]]= null;mxGraphHandler[_0x2b73[202]][_0x2b73[2802]]= !0;mxGraphHandler[_0x2b73[202]][_0x2b73[2803]]= !0;mxGraphHandler[_0x2b73[202]][_0x2b73[846]]= !0;mxGraphHandler[_0x2b73[202]][_0x2b73[2804]]= !1;mxGraphHandler[_0x2b73[202]][_0x2b73[2805]]= !0;mxGraphHandler[_0x2b73[202]][_0x2b73[923]]= 6;mxGraphHandler[_0x2b73[202]][_0x2b73[2806]]= _0x2b73[586];mxGraphHandler[_0x2b73[202]][_0x2b73[2807]]= !1;mxGraphHandler[_0x2b73[202]][_0x2b73[253]]= null;mxGraphHandler[_0x2b73[202]][_0x2b73[2808]]= !1;mxGraphHandler[_0x2b73[202]][_0x2b73[2809]]= !0;mxGraphHandler[_0x2b73[202]][_0x2b73[994]]= function(){return this[_0x2b73[984]]};mxGraphHandler[_0x2b73[202]][_0x2b73[995]]= function(_0xff22x2){this[_0x2b73[984]]= _0xff22x2};mxGraphHandler[_0x2b73[202]][_0x2b73[2810]]= function(){return this[_0x2b73[2797]]};mxGraphHandler[_0x2b73[202]][_0x2b73[2811]]= function(_0xff22x2){this[_0x2b73[2797]]= _0xff22x2};mxGraphHandler[_0x2b73[202]][_0x2b73[2812]]= function(){return this[_0x2b73[2798]]};mxGraphHandler[_0x2b73[202]][_0x2b73[2813]]= function(_0xff22x2){this[_0x2b73[2798]]= _0xff22x2};mxGraphHandler[_0x2b73[202]][_0x2b73[2814]]= function(){return this[_0x2b73[2803]]};mxGraphHandler[_0x2b73[202]][_0x2b73[2815]]= function(_0xff22x2){this[_0x2b73[2803]]= _0xff22x2};mxGraphHandler[_0x2b73[202]][_0x2b73[2816]]= function(){return this[_0x2b73[846]]};mxGraphHandler[_0x2b73[202]][_0x2b73[2817]]= function(_0xff22x2){this[_0x2b73[846]]= _0xff22x2};mxGraphHandler[_0x2b73[202]][_0x2b73[2818]]= function(_0xff22x2){return _0xff22x2[_0x2b73[736]]()};mxGraphHandler[_0x2b73[202]][_0x2b73[2819]]= function(_0xff22x2){return this[_0x2b73[1179]][_0x2b73[2692]](_0xff22x2)};mxGraphHandler[_0x2b73[202]][_0x2b73[787]]= function(_0xff22x2,_0xff22x3){if(!_0xff22x3[_0x2b73[721]]()&& this[_0x2b73[994]]()&& this[_0x2b73[1179]][_0x2b73[994]]()&& !this[_0x2b73[1179]][_0x2b73[2579]](_0xff22x3[_0x2b73[727]]())&& null!= _0xff22x3[_0x2b73[248]]()){var _0xff22x4=this[_0x2b73[2818]](_0xff22x3);this[_0x2b73[246]]= null;this[_0x2b73[2820]]= this[_0x2b73[2819]](_0xff22x4);this[_0x2b73[2814]]()&& !this[_0x2b73[2820]]&& this[_0x2b73[1179]][_0x2b73[2459]](_0xff22x4,_0xff22x3[_0x2b73[727]]());if(this[_0x2b73[2812]]()){var _0xff22x5=this[_0x2b73[1179]][_0x2b73[251]],_0xff22x9=_0xff22x5[_0x2b73[1721]](_0xff22x4);this[_0x2b73[1179]][_0x2b73[1712]](_0xff22x4)&& (!_0xff22x5[_0x2b73[250]](_0xff22x4)|| 1< this[_0x2b73[1179]][_0x2b73[2694]]()|| null!= _0xff22x9[_0x2b73[1525]]&& 0< _0xff22x9[_0x2b73[1525]][_0x2b73[67]]|| null== _0xff22x5[_0x2b73[1709]](_0xff22x4,!0)|| null== _0xff22x5[_0x2b73[1709]](_0xff22x4,!1)|| this[_0x2b73[1179]][_0x2b73[2406]]|| this[_0x2b73[1179]][_0x2b73[2574]](_0xff22x3[_0x2b73[727]]())&& this[_0x2b73[1179]][_0x2b73[2617]]())&& this[_0x2b73[861]](_0xff22x4,_0xff22x3[_0x2b73[730]](),_0xff22x3[_0x2b73[732]]());this[_0x2b73[2821]]= !0;!mxClient[_0x2b73[75]]&& !mxClient[_0x2b73[76]]|| _0x2b73[2822]!= _0xff22x3[_0x2b73[728]]()[_0x2b73[301]]?_0xff22x3[_0x2b73[722]]():mxClient[_0x2b73[75]]&& _0x2b73[2822]== _0xff22x3[_0x2b73[728]]()[_0x2b73[301]]&& (this[_0x2b73[2821]]= !1,this[_0x2b73[2823]]= null)}}};mxGraphHandler[_0x2b73[202]][_0x2b73[1010]]= function(){var _0xff22x2=this[_0x2b73[1179]][_0x2b73[902]](),_0xff22x3=this[_0x2b73[1179]][_0x2b73[502]](),_0xff22x4=mxUtils[_0x2b73[885]](this,function(_0xff22x2){return null!= this[_0x2b73[1179]][_0x2b73[441]][_0x2b73[248]](_0xff22x2)&& _0xff22x3[_0x2b73[1193]](_0xff22x2)&& null!= _0xff22x3[_0x2b73[1721]](_0xff22x2)&& !_0xff22x3[_0x2b73[1721]](_0xff22x2)[_0x2b73[1500]]});return this[_0x2b73[1179]][_0x2b73[441]][_0x2b73[2313]](_0xff22x3[_0x2b73[1921]](_0xff22x4,_0xff22x2))};mxGraphHandler[_0x2b73[202]][_0x2b73[2690]]= function(_0xff22x2){return !this[_0x2b73[2820]]&& this[_0x2b73[1179]][_0x2b73[1712]](_0xff22x2)?[_0xff22x2]:this[_0x2b73[1179]][_0x2b73[2629]](this[_0x2b73[1179]][_0x2b73[897]]())};mxGraphHandler[_0x2b73[202]][_0x2b73[2824]]= function(_0xff22x2){_0xff22x2= this[_0x2b73[1613]](_0xff22x2);null!= _0xff22x2&& (_0xff22x2[_0x2b73[244]](-1,-1),_0xff22x2[_0x2b73[117]]< this[_0x2b73[923]]&& (_0xff22x2[_0x2b73[235]]-= (this[_0x2b73[923]]- _0xff22x2[_0x2b73[117]])/ 2,_0xff22x2[_0x2b73[117]]= this[_0x2b73[923]]),_0xff22x2[_0x2b73[119]]< this[_0x2b73[923]]&& (_0xff22x2[_0x2b73[236]]-= (this[_0x2b73[923]]- _0xff22x2[_0x2b73[119]])/ 2,_0xff22x2[_0x2b73[119]]= this[_0x2b73[923]]));return _0xff22x2};mxGraphHandler[_0x2b73[202]][_0x2b73[1613]]= function(_0xff22x2){var _0xff22x3=null;if(null!= _0xff22x2&& 0< _0xff22x2[_0x2b73[67]]){for(var _0xff22x4=this[_0x2b73[1179]][_0x2b73[502]](),_0xff22x5=0;_0xff22x5< _0xff22x2[_0x2b73[67]];_0xff22x5++){if(_0xff22x4[_0x2b73[1193]](_0xff22x2[_0xff22x5])|| _0xff22x4[_0x2b73[250]](_0xff22x2[_0xff22x5])){var _0xff22x9=this[_0x2b73[1179]][_0x2b73[441]][_0x2b73[248]](_0xff22x2[_0xff22x5]);if(null!= _0xff22x9){var _0xff22xa=_0xff22x9;_0xff22x4[_0x2b73[1193]](_0xff22x2[_0xff22x5])&& (null!= _0xff22x9[_0x2b73[253]]&& null!= _0xff22x9[_0x2b73[253]][_0x2b73[1563]])&& (_0xff22xa= _0xff22x9[_0x2b73[253]][_0x2b73[1563]]);null== _0xff22x3?_0xff22x3= new mxRectangle(_0xff22xa[_0x2b73[235]],_0xff22xa[_0x2b73[236]],_0xff22xa[_0x2b73[117]],_0xff22xa[_0x2b73[119]]):_0xff22x3[_0x2b73[99]](_0xff22xa)}}}};return _0xff22x3};mxGraphHandler[_0x2b73[202]][_0x2b73[2825]]= function(_0xff22x2){_0xff22x2= new mxRectangleShape(_0xff22x2,null,this[_0x2b73[2806]]);_0xff22x2[_0x2b73[1522]]= !0;this[_0x2b73[2807]]?(_0xff22x2[_0x2b73[507]]= mxConstants[_0x2b73[1656]],_0xff22x2[_0x2b73[176]](this[_0x2b73[1179]][_0x2b73[526]])):(_0xff22x2[_0x2b73[507]]= this[_0x2b73[1179]][_0x2b73[507]]!= mxConstants[_0x2b73[508]]?mxConstants[_0x2b73[1523]]:mxConstants[_0x2b73[508]],_0xff22x2[_0x2b73[176]](this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[1524]]()),_0xff22x2[_0x2b73[1229]]= !1);return _0xff22x2};mxGraphHandler[_0x2b73[202]][_0x2b73[861]]= function(_0xff22x2,_0xff22x3,_0xff22x4){this[_0x2b73[246]]= _0xff22x2;this[_0x2b73[2823]]= mxUtils[_0x2b73[2196]](this[_0x2b73[1179]][_0x2b73[526]],_0xff22x3,_0xff22x4);this[_0x2b73[895]]= this[_0x2b73[2690]](this[_0x2b73[246]]);this[_0x2b73[1562]]= this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[1799]](this[_0x2b73[895]]);this[_0x2b73[2826]]= this[_0x2b73[2824]](this[_0x2b73[895]]);this[_0x2b73[990]]&& (this[_0x2b73[2799]]= new mxGuide(this[_0x2b73[1179]],this[_0x2b73[1010]]()))};mxGraphHandler[_0x2b73[202]][_0x2b73[2827]]= function(_0xff22x2){return null!= this[_0x2b73[2799]]?this[_0x2b73[2799]][_0x2b73[1019]](_0xff22x2[_0x2b73[727]]()):!0};mxGraphHandler[_0x2b73[202]][_0x2b73[1021]]= function(_0xff22x2){var _0xff22x3=this[_0x2b73[2808]]?this[_0x2b73[1179]][_0x2b73[441]][_0x2b73[255]]:1;_0xff22x2[_0x2b73[235]]= this[_0x2b73[1179]][_0x2b73[1021]](_0xff22x2[_0x2b73[235]]/ _0xff22x3)* _0xff22x3;_0xff22x2[_0x2b73[236]]= this[_0x2b73[1179]][_0x2b73[1021]](_0xff22x2[_0x2b73[236]]/ _0xff22x3)* _0xff22x3;return _0xff22x2};mxGraphHandler[_0x2b73[202]][_0x2b73[788]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=this[_0x2b73[1179]];if(!_0xff22x3[_0x2b73[721]]()&& _0xff22x4[_0x2b73[1009]]&& null!= this[_0x2b73[246]]&& null!= this[_0x2b73[2823]]&& null!= this[_0x2b73[1562]]){var _0xff22x5=mxUtils[_0x2b73[2196]](_0xff22x4[_0x2b73[526]],_0xff22x3[_0x2b73[730]](),_0xff22x3[_0x2b73[732]]()),_0xff22x9=_0xff22x5[_0x2b73[235]]- this[_0x2b73[2823]][_0x2b73[235]],_0xff22xa=_0xff22x5[_0x2b73[236]]- this[_0x2b73[2823]][_0x2b73[236]],_0xff22x5=_0xff22x4[_0x2b73[2353]];if(null!= this[_0x2b73[253]]|| Math[_0x2b73[425]](_0xff22x9)> _0xff22x5|| Math[_0x2b73[425]](_0xff22xa)> _0xff22x5){null== this[_0x2b73[1016]]&& (this[_0x2b73[1016]]= new mxCellHighlight(this[_0x2b73[1179]],mxConstants.DROP_TARGET_COLOR,3));null== this[_0x2b73[253]]&& (this[_0x2b73[253]]= this[_0x2b73[2825]](this[_0x2b73[1562]]));var _0xff22x12=_0xff22x4[_0x2b73[1018]](_0xff22x3[_0x2b73[727]]()),_0xff22x5=!0;if(null!= this[_0x2b73[2799]]&& this[_0x2b73[2827]](_0xff22x3)){_0xff22xa= this[_0x2b73[2799]][_0x2b73[582]](this[_0x2b73[1562]], new mxPoint(_0xff22x9,_0xff22xa),_0xff22x12),_0xff22x5= !1,_0xff22x9= _0xff22xa[_0x2b73[235]],_0xff22xa= _0xff22xa[_0x2b73[236]]}else {if(_0xff22x12){var _0xff22x13=_0xff22x4[_0x2b73[249]]()[_0x2b73[513]],_0xff22x14=_0xff22x4[_0x2b73[249]]()[_0x2b73[255]],_0xff22x12=this[_0x2b73[1562]][_0x2b73[235]]- (_0xff22x4[_0x2b73[1021]](this[_0x2b73[1562]][_0x2b73[235]]/ _0xff22x14- _0xff22x13[_0x2b73[235]])+ _0xff22x13[_0x2b73[235]])* _0xff22x14,_0xff22x13=this[_0x2b73[1562]][_0x2b73[236]]- (_0xff22x4[_0x2b73[1021]](this[_0x2b73[1562]][_0x2b73[236]]/ _0xff22x14- _0xff22x13[_0x2b73[236]])+ _0xff22x13[_0x2b73[236]])* _0xff22x14,_0xff22xa=this[_0x2b73[1021]]( new mxPoint(_0xff22x9,_0xff22xa)),_0xff22x9=_0xff22xa[_0x2b73[235]]- _0xff22x12,_0xff22xa=_0xff22xa[_0x2b73[236]]- _0xff22x13}};null!= this[_0x2b73[2799]]&& _0xff22x5&& this[_0x2b73[2799]][_0x2b73[801]]();_0xff22x4[_0x2b73[2578]](_0xff22x3[_0x2b73[727]]())&& (Math[_0x2b73[425]](_0xff22x9)> Math[_0x2b73[425]](_0xff22xa)?_0xff22xa= 0:_0xff22x9= 0);this[_0x2b73[2800]]= _0xff22x9;this[_0x2b73[2801]]= _0xff22xa;this[_0x2b73[2794]]();_0xff22x5= null;_0xff22xa= _0xff22x3[_0x2b73[736]]();_0xff22x4[_0x2b73[1015]]()&& this[_0x2b73[2796]]&& (_0xff22x5= _0xff22x4[_0x2b73[564]](this[_0x2b73[895]],_0xff22x3[_0x2b73[727]](),_0xff22xa));_0xff22x12= _0xff22x5;for(_0xff22x13= _0xff22x4[_0x2b73[502]]();null!= _0xff22x12&& _0xff22x12!= this[_0x2b73[895]][0];){_0xff22x12= _0xff22x13[_0x2b73[1197]](_0xff22x12)};var _0xff22x14=_0xff22x4[_0x2b73[2574]](_0xff22x3[_0x2b73[727]]())&& _0xff22x4[_0x2b73[2617]]()&& this[_0x2b73[2810]](),_0xff22x9=_0xff22x4[_0x2b73[249]]()[_0x2b73[248]](_0xff22x5),_0xff22x15=!1;null!= _0xff22x9&& null== _0xff22x12&& (_0xff22x13[_0x2b73[1197]](this[_0x2b73[246]])!= _0xff22x5|| _0xff22x14)?(this[_0x2b73[772]]!= _0xff22x5&& (this[_0x2b73[772]]= _0xff22x5,this[_0x2b73[2828]](mxConstants.DROP_TARGET_COLOR)),_0xff22x15= !0):(this[_0x2b73[772]]= null,this[_0x2b73[2804]]&& (null!= _0xff22xa&& 1== this[_0x2b73[895]][_0x2b73[67]]&& _0xff22x4[_0x2b73[502]]()[_0x2b73[1193]](_0xff22xa)&& _0xff22x4[_0x2b73[2565]](_0xff22xa))&& (_0xff22x9= _0xff22x4[_0x2b73[249]]()[_0x2b73[248]](_0xff22xa),null!= _0xff22x9&& (_0xff22x4= null== _0xff22x4[_0x2b73[2500]](null,this[_0x2b73[246]],_0xff22xa)?mxConstants[_0x2b73[2829]]:mxConstants[_0x2b73[2830]],this[_0x2b73[2828]](_0xff22x4),_0xff22x15= !0)));null!= _0xff22x9&& _0xff22x15?this[_0x2b73[1016]][_0x2b73[1016]](_0xff22x9):this[_0x2b73[1016]][_0x2b73[801]]()};_0xff22x3[_0x2b73[722]]();mxEvent[_0x2b73[722]](_0xff22x3[_0x2b73[727]]())}else {if((this[_0x2b73[2812]]()|| this[_0x2b73[2810]]())&& this[_0x2b73[2802]]&& !_0xff22x3[_0x2b73[721]]()&& null!= _0xff22x3[_0x2b73[248]]()&& !_0xff22x4[_0x2b73[1009]]){_0xff22x9= _0xff22x4[_0x2b73[2599]](_0xff22x3[_0x2b73[736]]()),null== _0xff22x9&& (_0xff22x4[_0x2b73[994]]()&& _0xff22x4[_0x2b73[1712]](_0xff22x3[_0x2b73[736]]()))&& (_0xff22x9= _0xff22x4[_0x2b73[502]]()[_0x2b73[250]](_0xff22x3[_0x2b73[736]]())?mxConstants[_0x2b73[2831]]:mxConstants[_0x2b73[2832]]),_0xff22x3[_0x2b73[248]]()[_0x2b73[1609]](_0xff22x9),_0xff22x3[_0x2b73[722]]()}}};mxGraphHandler[_0x2b73[202]][_0x2b73[2794]]= function(){null!= this[_0x2b73[253]]&& (this[_0x2b73[253]][_0x2b73[1562]]= new mxRectangle(Math[_0x2b73[488]](this[_0x2b73[2826]][_0x2b73[235]]+ this[_0x2b73[2800]]- this[_0x2b73[1179]][_0x2b73[1136]]),Math[_0x2b73[488]](this[_0x2b73[2826]][_0x2b73[236]]+ this[_0x2b73[2801]]- this[_0x2b73[1179]][_0x2b73[1137]]),this[_0x2b73[2826]][_0x2b73[117]],this[_0x2b73[2826]][_0x2b73[119]]),this[_0x2b73[253]][_0x2b73[258]]())};mxGraphHandler[_0x2b73[202]][_0x2b73[2828]]= function(_0xff22x2){null!= this[_0x2b73[1016]]&& this[_0x2b73[1016]][_0x2b73[2828]](_0xff22x2)};mxGraphHandler[_0x2b73[202]][_0x2b73[789]]= function(_0xff22x2,_0xff22x3){if(!_0xff22x3[_0x2b73[721]]()){var _0xff22x4=this[_0x2b73[1179]];if(null!= this[_0x2b73[246]]&& null!= this[_0x2b73[2823]]&& null!= this[_0x2b73[253]]&& null!= this[_0x2b73[2800]]&& null!= this[_0x2b73[2801]]){var _0xff22x5=_0xff22x4[_0x2b73[249]]()[_0x2b73[255]],_0xff22x9=_0xff22x4[_0x2b73[2574]](_0xff22x3[_0x2b73[727]]())&& _0xff22x4[_0x2b73[2617]]()&& this[_0x2b73[2810]](),_0xff22xa=this[_0x2b73[2800]]/ _0xff22x5,_0xff22x5=this[_0x2b73[2801]]/ _0xff22x5,_0xff22x12=_0xff22x3[_0x2b73[736]]();this[_0x2b73[2804]]&& null== this[_0x2b73[772]]&& null!= _0xff22x12&& _0xff22x4[_0x2b73[502]]()[_0x2b73[1193]](_0xff22x12)&& _0xff22x4[_0x2b73[2565]](_0xff22x12)&& _0xff22x4[_0x2b73[2581]](null,this[_0x2b73[246]],_0xff22x12)?_0xff22x4[_0x2b73[2433]][_0x2b73[807]](this[_0x2b73[246]],_0xff22x12,_0xff22x3[_0x2b73[727]]()):(_0xff22x12= this[_0x2b73[772]],_0xff22x4[_0x2b73[2655]]()&& _0xff22x4[_0x2b73[2686]](_0xff22x12,this[_0x2b73[895]],_0xff22x3[_0x2b73[727]]())?_0xff22x4[_0x2b73[853]](_0xff22x12,this[_0x2b73[895]],null,_0xff22xa,_0xff22x5):this[_0x2b73[834]](this[_0x2b73[895]],_0xff22xa,_0xff22x5,_0xff22x9,this[_0x2b73[772]],_0xff22x3[_0x2b73[727]]()))}else {this[_0x2b73[2814]]()&& (this[_0x2b73[2820]]&& null!= this[_0x2b73[246]])&& this[_0x2b73[2833]](_0xff22x3)}};this[_0x2b73[2821]]&& _0xff22x3[_0x2b73[722]]();this[_0x2b73[862]]()};mxGraphHandler[_0x2b73[202]][_0x2b73[2833]]= function(_0xff22x2){this[_0x2b73[1179]][_0x2b73[2459]](this[_0x2b73[246]],_0xff22x2[_0x2b73[727]]())};mxGraphHandler[_0x2b73[202]][_0x2b73[862]]= function(){this[_0x2b73[2834]]();this[_0x2b73[2820]]= this[_0x2b73[2821]]= !1;this[_0x2b73[772]]= this[_0x2b73[246]]= this[_0x2b73[2823]]= this[_0x2b73[2835]]= this[_0x2b73[2801]]= this[_0x2b73[2800]]= null};mxGraphHandler[_0x2b73[202]][_0x2b73[2836]]= function(_0xff22x2,_0xff22x3,_0xff22x4){if(this[_0x2b73[1179]][_0x2b73[502]]()[_0x2b73[1193]](_0xff22x2)){_0xff22x2= this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[248]](_0xff22x2);_0xff22x4= mxUtils[_0x2b73[2196]](this[_0x2b73[1179]][_0x2b73[526]],mxEvent[_0x2b73[731]](_0xff22x4),mxEvent[_0x2b73[733]](_0xff22x4));var _0xff22x5=mxUtils[_0x2b73[431]](mxUtils[_0x2b73[433]](_0xff22x2[_0x2b73[124]],mxConstants.STYLE_ROTATION)|| 0);if(0!= _0xff22x5){_0xff22x3= Math[_0x2b73[426]](-_0xff22x5);var _0xff22x5=Math[_0x2b73[427]](-_0xff22x5),_0xff22x9= new mxPoint(_0xff22x2[_0x2b73[241]](),_0xff22x2[_0x2b73[242]]());_0xff22x4= mxUtils[_0x2b73[432]](_0xff22x4,_0xff22x3,_0xff22x5,_0xff22x9)};return null!= _0xff22x2&& !mxUtils[_0x2b73[442]](_0xff22x2,_0xff22x4[_0x2b73[235]],_0xff22x4[_0x2b73[236]])};return !1};mxGraphHandler[_0x2b73[202]][_0x2b73[834]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa){_0xff22x5&& (_0xff22x2= this[_0x2b73[1179]][_0x2b73[2615]](_0xff22x2));null== _0xff22x9&& (this[_0x2b73[2816]]()&& this[_0x2b73[2836]](this[_0x2b73[1179]][_0x2b73[502]]()[_0x2b73[1197]](this[_0x2b73[246]]),_0xff22x2,_0xff22xa))&& (_0xff22x9= this[_0x2b73[1179]][_0x2b73[902]]());_0xff22x2= this[_0x2b73[1179]][_0x2b73[834]](_0xff22x2,_0xff22x3- this[_0x2b73[1179]][_0x2b73[1136]]/ this[_0x2b73[1179]][_0x2b73[441]][_0x2b73[255]],_0xff22x4- this[_0x2b73[1179]][_0x2b73[1137]]/ this[_0x2b73[1179]][_0x2b73[441]][_0x2b73[255]],_0xff22x5,_0xff22x9,_0xff22xa);this[_0x2b73[2814]]()&& this[_0x2b73[2805]]&& this[_0x2b73[1179]][_0x2b73[2564]](_0xff22x2[0]);_0xff22x5&& this[_0x2b73[1179]][_0x2b73[904]](_0xff22x2)};mxGraphHandler[_0x2b73[202]][_0x2b73[2834]]= function(){null!= this[_0x2b73[253]]&& (this[_0x2b73[253]][_0x2b73[515]](),this[_0x2b73[253]]= null);null!= this[_0x2b73[2799]]&& (this[_0x2b73[2799]][_0x2b73[515]](),this[_0x2b73[2799]]= null);null!= this[_0x2b73[1016]]&& (this[_0x2b73[1016]][_0x2b73[515]](),this[_0x2b73[1016]]= null)};mxGraphHandler[_0x2b73[202]][_0x2b73[515]]= function(){this[_0x2b73[1179]][_0x2b73[1148]](this);this[_0x2b73[1179]][_0x2b73[745]](this[_0x2b73[2730]]);this[_0x2b73[2834]]()};function mxPanningHandler(_0xff22x2,_0xff22x3){null!= _0xff22x2&& (this[_0x2b73[1179]]= _0xff22x2,this[_0x2b73[1033]]= _0xff22x3,this[_0x2b73[1179]][_0x2b73[1133]](this),this[_0x2b73[176]]())}mxPanningHandler[_0x2b73[202]]= new mxPopupMenu;mxPanningHandler[_0x2b73[202]][_0x2b73[196]]= mxPanningHandler;mxPanningHandler[_0x2b73[202]][_0x2b73[1179]]= null;mxPanningHandler[_0x2b73[202]][_0x2b73[2837]]= null;mxPanningHandler[_0x2b73[202]][_0x2b73[2838]]= null;mxPanningHandler[_0x2b73[202]][_0x2b73[2839]]= !0;mxPanningHandler[_0x2b73[202]][_0x2b73[2840]]= !1;mxPanningHandler[_0x2b73[202]][_0x2b73[2841]]= !0;mxPanningHandler[_0x2b73[202]][_0x2b73[2842]]= !0;mxPanningHandler[_0x2b73[202]][_0x2b73[2843]]= !1;mxPanningHandler[_0x2b73[202]][_0x2b73[2844]]= !0;mxPanningHandler[_0x2b73[202]][_0x2b73[2845]]= !1;mxPanningHandler[_0x2b73[202]][_0x2b73[2431]]= !0;mxPanningHandler[_0x2b73[202]][_0x2b73[2846]]= function(){return this[_0x2b73[2431]]};mxPanningHandler[_0x2b73[202]][_0x2b73[2847]]= function(_0xff22x2){this[_0x2b73[2431]]= _0xff22x2};mxPanningHandler[_0x2b73[202]][_0x2b73[176]]= function(){mxPopupMenu[_0x2b73[202]][_0x2b73[176]][_0x2b73[183]](this);mxEvent[_0x2b73[169]](this[_0x2b73[485]],mxClient[_0x2b73[754]]?_0x2b73[756]:_0x2b73[752],mxUtils[_0x2b73[885]](this,function(_0xff22x2){this[_0x2b73[1179]][_0x2b73[2276]][_0x2b73[801]]()}))};mxPanningHandler[_0x2b73[202]][_0x2b73[2848]]= function(_0xff22x2){var _0xff22x3=_0xff22x2[_0x2b73[727]]();return this[_0x2b73[2840]]&& (this[_0x2b73[2843]]|| null== _0xff22x2[_0x2b73[248]]())&& mxEvent[_0x2b73[1158]](_0xff22x3)|| mxEvent[_0x2b73[775]](_0xff22x3)&& mxEvent[_0x2b73[774]](_0xff22x3)|| this[_0x2b73[2839]]&& mxEvent[_0x2b73[737]](_0xff22x3)};mxPanningHandler[_0x2b73[202]][_0x2b73[787]]= function(_0xff22x2,_0xff22x3){if(!_0xff22x3[_0x2b73[721]]()&& this[_0x2b73[994]]()){this[_0x2b73[1032]]();this[_0x2b73[2741]]= -this[_0x2b73[1179]][_0x2b73[526]][_0x2b73[360]];this[_0x2b73[2742]]= -this[_0x2b73[1179]][_0x2b73[526]][_0x2b73[190]];var _0xff22x4=mxUtils[_0x2b73[2196]](this[_0x2b73[1179]][_0x2b73[526]],_0xff22x3[_0x2b73[730]](),_0xff22x3[_0x2b73[732]]());this[_0x2b73[2837]]= _0xff22x4[_0x2b73[235]];this[_0x2b73[2838]]= _0xff22x4[_0x2b73[236]];this[_0x2b73[2849]]= this[_0x2b73[737]](_0xff22x3);this[_0x2b73[2850]]= this[_0x2b73[2846]]()&& this[_0x2b73[2848]](_0xff22x3);this[_0x2b73[2739]]= _0xff22x3[_0x2b73[730]]();this[_0x2b73[2740]]= _0xff22x3[_0x2b73[732]]();this[_0x2b73[2850]]&& this[_0x2b73[2851]](_0xff22x3)}};mxPanningHandler[_0x2b73[202]][_0x2b73[2851]]= function(_0xff22x2){_0xff22x2[_0x2b73[722]]()};mxPanningHandler[_0x2b73[202]][_0x2b73[788]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=_0xff22x3[_0x2b73[730]]()- this[_0x2b73[2739]],_0xff22x5=_0xff22x3[_0x2b73[732]]()- this[_0x2b73[2740]];if(this[_0x2b73[1124]]){this[_0x2b73[2844]]&& (this[_0x2b73[2845]]&& (_0xff22x4= this[_0x2b73[1179]][_0x2b73[1021]](_0xff22x4),_0xff22x5= this[_0x2b73[1179]][_0x2b73[1021]](_0xff22x5)),this[_0x2b73[1179]][_0x2b73[1135]](_0xff22x4+ this[_0x2b73[2741]],_0xff22x5+ this[_0x2b73[2742]])),this[_0x2b73[746]]( new mxEventObject(mxEvent.PAN,_0x2b73[763],_0xff22x3)),_0xff22x3[_0x2b73[722]]()}else {if(this[_0x2b73[2850]]){var _0xff22x9=this[_0x2b73[1124]];this[_0x2b73[1124]]= Math[_0x2b73[425]](_0xff22x4)> this[_0x2b73[1179]][_0x2b73[2353]]|| Math[_0x2b73[425]](_0xff22x5)> this[_0x2b73[1179]][_0x2b73[2353]];!_0xff22x9&& this[_0x2b73[1124]]&& this[_0x2b73[746]]( new mxEventObject(mxEvent.PAN_START,_0x2b73[763],_0xff22x3))}}};mxPanningHandler[_0x2b73[202]][_0x2b73[789]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=Math[_0x2b73[425]](_0xff22x3[_0x2b73[730]]()- this[_0x2b73[2739]]),_0xff22x5=Math[_0x2b73[425]](_0xff22x3[_0x2b73[732]]()- this[_0x2b73[2740]]);if(this[_0x2b73[1124]]){if(!this[_0x2b73[1179]][_0x2b73[2365]]|| !mxUtils[_0x2b73[1134]](this[_0x2b73[1179]][_0x2b73[526]])){_0xff22x4= _0xff22x3[_0x2b73[730]]()- this[_0x2b73[2739]];_0xff22x5= _0xff22x3[_0x2b73[732]]()- this[_0x2b73[2740]];this[_0x2b73[2845]]&& (_0xff22x4= this[_0x2b73[1179]][_0x2b73[1021]](_0xff22x4),_0xff22x5= this[_0x2b73[1179]][_0x2b73[1021]](_0xff22x5));var _0xff22x9=this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[255]],_0xff22xa=this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[513]];this[_0x2b73[1179]][_0x2b73[1135]](0,0);this[_0x2b73[1135]](_0xff22xa[_0x2b73[235]]+ _0xff22x4/ _0xff22x9,_0xff22xa[_0x2b73[236]]+ _0xff22x5/ _0xff22x9)};this[_0x2b73[1124]]= !1;this[_0x2b73[746]]( new mxEventObject(mxEvent.PAN_END,_0x2b73[763],_0xff22x3));_0xff22x3[_0x2b73[722]]()}else {this[_0x2b73[2849]]&& (_0xff22x4< this[_0x2b73[1179]][_0x2b73[2353]]&& _0xff22x5< this[_0x2b73[1179]][_0x2b73[2353]])&& (_0xff22x4= this[_0x2b73[2852]](_0xff22x3),this[_0x2b73[1179]][_0x2b73[994]]()&& this[_0x2b73[2841]]&& null!= _0xff22x4&& !this[_0x2b73[1179]][_0x2b73[2692]](_0xff22x4)?this[_0x2b73[1179]][_0x2b73[2450]](_0xff22x4):this[_0x2b73[2842]]&& null== _0xff22x4&& this[_0x2b73[1179]][_0x2b73[2440]](),this[_0x2b73[1179]][_0x2b73[2276]][_0x2b73[801]](),_0xff22x5= mxUtils[_0x2b73[444]](),_0xff22x5= new mxPoint(_0xff22x3[_0x2b73[730]]()+ _0xff22x5[_0x2b73[235]],_0xff22x3[_0x2b73[732]]()+ _0xff22x5[_0x2b73[236]]),this[_0x2b73[152]](_0xff22x5[_0x2b73[235]]+ 1,_0xff22x5[_0x2b73[236]]+ 1,_0xff22x4,_0xff22x3[_0x2b73[727]]()),_0xff22x3[_0x2b73[722]]())};this[_0x2b73[2849]]= this[_0x2b73[2850]]= !1};mxPanningHandler[_0x2b73[202]][_0x2b73[2852]]= function(_0xff22x2){return _0xff22x2[_0x2b73[736]]()};mxPanningHandler[_0x2b73[202]][_0x2b73[1135]]= function(_0xff22x2,_0xff22x3){this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[1147]](_0xff22x2,_0xff22x3)};mxPanningHandler[_0x2b73[202]][_0x2b73[515]]= function(){this[_0x2b73[1179]][_0x2b73[1148]](this);mxPopupMenu[_0x2b73[202]][_0x2b73[515]][_0x2b73[183]](this)};function mxCellMarker(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){mxEventSource[_0x2b73[239]](this);null!= _0xff22x2&& (this[_0x2b73[1179]]= _0xff22x2,this[_0x2b73[2853]]= null!= _0xff22x3?_0xff22x3:mxConstants[_0x2b73[2854]],this[_0x2b73[2855]]= null!= _0xff22x3?_0xff22x4:mxConstants[_0x2b73[2856]],this[_0x2b73[2857]]= null!= _0xff22x5?_0xff22x5:mxConstants[_0x2b73[2858]],this[_0x2b73[1016]]= new mxCellHighlight(_0xff22x2))}mxUtils[_0x2b73[1284]](mxCellMarker,mxEventSource);mxCellMarker[_0x2b73[202]][_0x2b73[1179]]= null;mxCellMarker[_0x2b73[202]][_0x2b73[984]]= !0;mxCellMarker[_0x2b73[202]][_0x2b73[2857]]= mxConstants[_0x2b73[2858]];mxCellMarker[_0x2b73[202]][_0x2b73[2859]]= !1;mxCellMarker[_0x2b73[202]][_0x2b73[2853]]= null;mxCellMarker[_0x2b73[202]][_0x2b73[2855]]= null;mxCellMarker[_0x2b73[202]][_0x2b73[2860]]= null;mxCellMarker[_0x2b73[202]][_0x2b73[2861]]= null;mxCellMarker[_0x2b73[202]][_0x2b73[2862]]= null;mxCellMarker[_0x2b73[202]][_0x2b73[995]]= function(_0xff22x2){this[_0x2b73[984]]= _0xff22x2};mxCellMarker[_0x2b73[202]][_0x2b73[994]]= function(){return this[_0x2b73[984]]};mxCellMarker[_0x2b73[202]][_0x2b73[2863]]= function(_0xff22x2){this[_0x2b73[2857]]= _0xff22x2};mxCellMarker[_0x2b73[202]][_0x2b73[2864]]= function(){return this[_0x2b73[2857]]};mxCellMarker[_0x2b73[202]][_0x2b73[2865]]= function(_0xff22x2){this[_0x2b73[2859]]= _0xff22x2};mxCellMarker[_0x2b73[202]][_0x2b73[2866]]= function(){return this[_0x2b73[2859]]};mxCellMarker[_0x2b73[202]][_0x2b73[2867]]= function(){return null!= this[_0x2b73[2861]]};mxCellMarker[_0x2b73[202]][_0x2b73[2868]]= function(){return this[_0x2b73[2861]]};mxCellMarker[_0x2b73[202]][_0x2b73[2869]]= function(){return this[_0x2b73[2862]]};mxCellMarker[_0x2b73[202]][_0x2b73[862]]= function(){this[_0x2b73[2861]]= null;null!= this[_0x2b73[2862]]&& (this[_0x2b73[2862]]= null,this[_0x2b73[2870]]())};mxCellMarker[_0x2b73[202]][_0x2b73[2871]]= function(_0xff22x2){var _0xff22x3=null;if(this[_0x2b73[994]]()){var _0xff22x3=this[_0x2b73[248]](_0xff22x2),_0xff22x4=null!= _0xff22x3?this[_0x2b73[2872]](_0xff22x3):!1;_0xff22x2= this[_0x2b73[2873]](_0xff22x2[_0x2b73[727]](),_0xff22x3,_0xff22x4);this[_0x2b73[2861]]= _0xff22x4?_0xff22x3:null;if(_0xff22x3!= this[_0x2b73[2862]]|| _0xff22x2!= this[_0x2b73[2860]]){this[_0x2b73[2860]]= _0xff22x2,null!= _0xff22x3&& null!= this[_0x2b73[2860]]?(this[_0x2b73[2862]]= _0xff22x3,this[_0x2b73[811]]()):null!= this[_0x2b73[2862]]&& (this[_0x2b73[2862]]= null,this[_0x2b73[2870]]())}};return _0xff22x3};mxCellMarker[_0x2b73[202]][_0x2b73[2874]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[248]](_0xff22x2);null!= _0xff22x4&& (this[_0x2b73[2860]]= null!= _0xff22x3?_0xff22x3:this[_0x2b73[2853]],this[_0x2b73[2862]]= _0xff22x4,this[_0x2b73[811]]())};mxCellMarker[_0x2b73[202]][_0x2b73[811]]= function(){this[_0x2b73[1016]][_0x2b73[2828]](this[_0x2b73[2860]]);this[_0x2b73[1016]][_0x2b73[1016]](this[_0x2b73[2862]]);this[_0x2b73[746]]( new mxEventObject(mxEvent.MARK,_0x2b73[724],this[_0x2b73[2862]]))};mxCellMarker[_0x2b73[202]][_0x2b73[2870]]= function(){this[_0x2b73[811]]()};mxCellMarker[_0x2b73[202]][_0x2b73[2872]]= function(_0xff22x2){return !0};mxCellMarker[_0x2b73[202]][_0x2b73[2873]]= function(_0xff22x2,_0xff22x3,_0xff22x4){return _0xff22x4?this[_0x2b73[2853]]:this[_0x2b73[2855]]};mxCellMarker[_0x2b73[202]][_0x2b73[248]]= function(_0xff22x2){var _0xff22x3=this[_0x2b73[1179]][_0x2b73[249]]();cell= this[_0x2b73[736]](_0xff22x2);_0xff22x3= this[_0x2b73[2875]](_0xff22x3[_0x2b73[248]](cell));return null!= _0xff22x3&& this[_0x2b73[1825]](_0xff22x3,_0xff22x2)?_0xff22x3:null};mxCellMarker[_0x2b73[202]][_0x2b73[736]]= function(_0xff22x2){return _0xff22x2[_0x2b73[736]]()};mxCellMarker[_0x2b73[202]][_0x2b73[2875]]= function(_0xff22x2){return _0xff22x2};mxCellMarker[_0x2b73[202]][_0x2b73[1825]]= function(_0xff22x2,_0xff22x3){return this[_0x2b73[2859]]?mxUtils[_0x2b73[2876]](_0xff22x2,_0xff22x3[_0x2b73[734]](),_0xff22x3[_0x2b73[735]](),this[_0x2b73[2857]],mxConstants.MIN_HOTSPOT_SIZE,mxConstants.MAX_HOTSPOT_SIZE):!0};mxCellMarker[_0x2b73[202]][_0x2b73[515]]= function(){this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[745]](this[_0x2b73[2877]]);this[_0x2b73[1179]][_0x2b73[502]]()[_0x2b73[745]](this[_0x2b73[2877]]);this[_0x2b73[1016]][_0x2b73[515]]()};function mxSelectionCellsHandler(_0xff22x2){mxEventSource[_0x2b73[239]](this);this[_0x2b73[1179]]= _0xff22x2;this[_0x2b73[2878]]= new mxDictionary;this[_0x2b73[1179]][_0x2b73[1133]](this);this[_0x2b73[2731]]= mxUtils[_0x2b73[885]](this,function(_0xff22x2,_0xff22x4){this[_0x2b73[994]]()&& this[_0x2b73[802]]()});this[_0x2b73[1179]][_0x2b73[2435]]()[_0x2b73[169]](mxEvent.CHANGE,this[_0x2b73[2731]]);this[_0x2b73[1179]][_0x2b73[502]]()[_0x2b73[169]](mxEvent.CHANGE,this[_0x2b73[2731]]);this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[169]](mxEvent.SCALE,this[_0x2b73[2731]]);this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[169]](mxEvent.TRANSLATE,this[_0x2b73[2731]]);this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[169]](mxEvent.SCALE_AND_TRANSLATE,this[_0x2b73[2731]]);this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[169]](mxEvent.DOWN,this[_0x2b73[2731]]);this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[169]](mxEvent.UP,this[_0x2b73[2731]])}mxUtils[_0x2b73[1284]](mxSelectionCellsHandler,mxEventSource);mxSelectionCellsHandler[_0x2b73[202]][_0x2b73[1179]]= null;mxSelectionCellsHandler[_0x2b73[202]][_0x2b73[984]]= !0;mxSelectionCellsHandler[_0x2b73[202]][_0x2b73[2731]]= null;mxSelectionCellsHandler[_0x2b73[202]][_0x2b73[2879]]= 100;mxSelectionCellsHandler[_0x2b73[202]][_0x2b73[2878]]= null;mxSelectionCellsHandler[_0x2b73[202]][_0x2b73[994]]= function(){return this[_0x2b73[984]]};mxSelectionCellsHandler[_0x2b73[202]][_0x2b73[995]]= function(_0xff22x2){this[_0x2b73[984]]= _0xff22x2};mxSelectionCellsHandler[_0x2b73[202]][_0x2b73[2596]]= function(_0xff22x2){return this[_0x2b73[2878]][_0x2b73[203]](_0xff22x2)};mxSelectionCellsHandler[_0x2b73[202]][_0x2b73[862]]= function(){this[_0x2b73[2878]][_0x2b73[209]](function(_0xff22x2,_0xff22x3){_0xff22x3[_0x2b73[862]][_0x2b73[183]](_0xff22x3)})};mxSelectionCellsHandler[_0x2b73[202]][_0x2b73[802]]= function(){var _0xff22x2=this[_0x2b73[2878]];this[_0x2b73[2878]]= new mxDictionary;for(var _0xff22x3=this[_0x2b73[1179]][_0x2b73[897]](),_0xff22x4=0;_0xff22x4< _0xff22x3[_0x2b73[67]];_0xff22x4++){var _0xff22x5=this[_0x2b73[1179]][_0x2b73[441]][_0x2b73[248]](_0xff22x3[_0xff22x4]);if(null!= _0xff22x5){var _0xff22x9=_0xff22x2[_0x2b73[205]](_0xff22x3[_0xff22x4]);null!= _0xff22x9&& (_0xff22x9[_0x2b73[724]]!= _0xff22x5?(_0xff22x9[_0x2b73[515]](),_0xff22x9= null):_0xff22x9[_0x2b73[258]]());null== _0xff22x9&& (_0xff22x9= this[_0x2b73[1179]][_0x2b73[2709]](_0xff22x5),this[_0x2b73[746]]( new mxEventObject(mxEvent.ADD,_0x2b73[724],_0xff22x5)));null!= _0xff22x9&& this[_0x2b73[2878]][_0x2b73[204]](_0xff22x3[_0xff22x4],_0xff22x9)}};_0xff22x2[_0x2b73[209]](mxUtils[_0x2b73[885]](this,function(_0xff22x2,_0xff22x3){this[_0x2b73[746]]( new mxEventObject(mxEvent.REMOVE,_0x2b73[724],_0xff22x3[_0x2b73[724]]));_0xff22x3[_0x2b73[515]]()}))};mxSelectionCellsHandler[_0x2b73[202]][_0x2b73[787]]= function(_0xff22x2,_0xff22x3){if(this[_0x2b73[1179]][_0x2b73[994]]()&& this[_0x2b73[994]]()){var _0xff22x4=[_0xff22x2,_0xff22x3];this[_0x2b73[2878]][_0x2b73[209]](function(_0xff22x2,_0xff22x3){_0xff22x3[_0x2b73[787]][_0x2b73[183]](_0xff22x3,_0xff22x4)})}};mxSelectionCellsHandler[_0x2b73[202]][_0x2b73[788]]= function(_0xff22x2,_0xff22x3){if(this[_0x2b73[1179]][_0x2b73[994]]()&& this[_0x2b73[994]]()){var _0xff22x4=[_0xff22x2,_0xff22x3];this[_0x2b73[2878]][_0x2b73[209]](function(_0xff22x2,_0xff22x3){_0xff22x3[_0x2b73[788]][_0x2b73[183]](_0xff22x3,_0xff22x4)})}};mxSelectionCellsHandler[_0x2b73[202]][_0x2b73[789]]= function(_0xff22x2,_0xff22x3){if(this[_0x2b73[1179]][_0x2b73[994]]()&& this[_0x2b73[994]]()){var _0xff22x4=[_0xff22x2,_0xff22x3];this[_0x2b73[2878]][_0x2b73[209]](function(_0xff22x2,_0xff22x3){_0xff22x3[_0x2b73[789]][_0x2b73[183]](_0xff22x3,_0xff22x4)})}};mxSelectionCellsHandler[_0x2b73[202]][_0x2b73[515]]= function(){this[_0x2b73[1179]][_0x2b73[1148]](this);null!= this[_0x2b73[2731]]&& (this[_0x2b73[1179]][_0x2b73[2435]]()[_0x2b73[745]](this[_0x2b73[2731]]),this[_0x2b73[1179]][_0x2b73[502]]()[_0x2b73[745]](this[_0x2b73[2731]]),this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[745]](this[_0x2b73[2731]]),this[_0x2b73[2731]]= null)};function mxConnectionHandler(_0xff22x2,_0xff22x3){mxEventSource[_0x2b73[239]](this);null!= _0xff22x2&& (this[_0x2b73[1179]]= _0xff22x2,this[_0x2b73[1033]]= _0xff22x3,this[_0x2b73[176]]())}mxUtils[_0x2b73[1284]](mxConnectionHandler,mxEventSource);mxConnectionHandler[_0x2b73[202]][_0x2b73[1179]]= null;mxConnectionHandler[_0x2b73[202]][_0x2b73[1033]]= !0;mxConnectionHandler[_0x2b73[202]][_0x2b73[2880]]= !1;mxConnectionHandler[_0x2b73[202]][_0x2b73[2881]]= !1;mxConnectionHandler[_0x2b73[202]][_0x2b73[2882]]= null;mxConnectionHandler[_0x2b73[202]][_0x2b73[2883]]= !1;mxConnectionHandler[_0x2b73[202]][_0x2b73[984]]= !0;mxConnectionHandler[_0x2b73[202]][_0x2b73[804]]= !0;mxConnectionHandler[_0x2b73[202]][_0x2b73[2884]]= !1;mxConnectionHandler[_0x2b73[202]][_0x2b73[2885]]= null;mxConnectionHandler[_0x2b73[202]][_0x2b73[2886]]= null;mxConnectionHandler[_0x2b73[202]][_0x2b73[267]]= null;mxConnectionHandler[_0x2b73[202]][_0x2b73[2887]]= !1;mxConnectionHandler[_0x2b73[202]][_0x2b73[2888]]= !0;mxConnectionHandler[_0x2b73[202]][_0x2b73[2889]]= 500;mxConnectionHandler[_0x2b73[202]][_0x2b73[2890]]= !1;mxConnectionHandler[_0x2b73[202]][_0x2b73[2891]]= !1;mxConnectionHandler[_0x2b73[202]][_0x2b73[2892]]= 4;mxConnectionHandler[_0x2b73[202]][_0x2b73[2893]]= 0;mxConnectionHandler[_0x2b73[202]][_0x2b73[2894]]= 0;mxConnectionHandler[_0x2b73[202]][_0x2b73[2895]]= !1;mxConnectionHandler[_0x2b73[202]][_0x2b73[2823]]= null;mxConnectionHandler[_0x2b73[202]][_0x2b73[2896]]= new mxPoint(0,mxConstants.TOOLTIP_VERTICAL_OFFSET);mxConnectionHandler[_0x2b73[202]][_0x2b73[2897]]= null;mxConnectionHandler[_0x2b73[202]][_0x2b73[1176]]= null;mxConnectionHandler[_0x2b73[202]][_0x2b73[2898]]= null;mxConnectionHandler[_0x2b73[202]][_0x2b73[2899]]= 0;mxConnectionHandler[_0x2b73[202]][_0x2b73[2900]]= mxClient[_0x2b73[47]];mxConnectionHandler[_0x2b73[202]][_0x2b73[994]]= function(){return this[_0x2b73[984]]};mxConnectionHandler[_0x2b73[202]][_0x2b73[995]]= function(_0xff22x2){this[_0x2b73[984]]= _0xff22x2};mxConnectionHandler[_0x2b73[202]][_0x2b73[2901]]= function(){return this[_0x2b73[2884]]};mxConnectionHandler[_0x2b73[202]][_0x2b73[2902]]= function(_0xff22x2){this[_0x2b73[2884]]= _0xff22x2};mxConnectionHandler[_0x2b73[202]][_0x2b73[2156]]= function(){var _0xff22x2= new mxPolyline([],mxConstants.INVALID_COLOR);_0xff22x2[_0x2b73[507]]= this[_0x2b73[1179]][_0x2b73[507]]!= mxConstants[_0x2b73[508]]?mxConstants[_0x2b73[1523]]:mxConstants[_0x2b73[508]];_0xff22x2[_0x2b73[176]](this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[1524]]());_0xff22x2[_0x2b73[1564]]= 0;_0xff22x2[_0x2b73[1229]]= !1;_0xff22x2[_0x2b73[1522]]= !0;if(this[_0x2b73[1179]][_0x2b73[507]]== mxConstants[_0x2b73[508]]){_0xff22x2[_0x2b73[252]][_0x2b73[57]](_0x2b73[1377],_0x2b73[130])}else {var _0xff22x3=mxUtils[_0x2b73[885]](this,function(_0xff22x2){_0xff22x2= mxUtils[_0x2b73[2196]](this[_0x2b73[1179]][_0x2b73[526]],mxEvent[_0x2b73[731]](_0xff22x2),mxEvent[_0x2b73[733]](_0xff22x2));return this[_0x2b73[1179]][_0x2b73[441]][_0x2b73[248]](this[_0x2b73[1179]][_0x2b73[999]](_0xff22x2[_0x2b73[235]],_0xff22x2[_0x2b73[236]]))});mxEvent[_0x2b73[2733]](_0xff22x2[_0x2b73[252]],this[_0x2b73[1179]],_0xff22x3)};return _0xff22x2};mxConnectionHandler[_0x2b73[202]][_0x2b73[176]]= function(){this[_0x2b73[1179]][_0x2b73[1133]](this);this[_0x2b73[2885]]= this[_0x2b73[1689]]();this[_0x2b73[2886]]= new mxConstraintHandler(this[_0x2b73[1179]]);this[_0x2b73[1176]]= mxUtils[_0x2b73[885]](this,function(_0xff22x2){null!= this[_0x2b73[2903]]&& (this[_0x2b73[2903]]= this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[248]](this[_0x2b73[2903]][_0x2b73[246]]));null!= this[_0x2b73[2903]]?this[_0x2b73[2905]](this[_0x2b73[2904]],this[_0x2b73[2903]]):(this[_0x2b73[2906]](this[_0x2b73[2904]]),this[_0x2b73[257]]= null);this[_0x2b73[2886]][_0x2b73[862]]()});this[_0x2b73[1179]][_0x2b73[502]]()[_0x2b73[169]](mxEvent.CHANGE,this[_0x2b73[1176]]);this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[169]](mxEvent.SCALE,this[_0x2b73[1176]]);this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[169]](mxEvent.TRANSLATE,this[_0x2b73[1176]]);this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[169]](mxEvent.SCALE_AND_TRANSLATE,this[_0x2b73[1176]]);this[_0x2b73[2898]]= mxUtils[_0x2b73[885]](this,function(_0xff22x2){this[_0x2b73[2906]](this[_0x2b73[2904]])});this[_0x2b73[1179]][_0x2b73[169]](mxEvent.START_EDITING,this[_0x2b73[2898]]);this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[169]](mxEvent.DOWN,this[_0x2b73[2898]]);this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[169]](mxEvent.UP,this[_0x2b73[2898]])};mxConnectionHandler[_0x2b73[202]][_0x2b73[2907]]= function(_0xff22x2){return !0};mxConnectionHandler[_0x2b73[202]][_0x2b73[1689]]= function(){var _0xff22x2= new mxCellMarker(this[_0x2b73[1179]]);_0xff22x2[_0x2b73[2859]]= !0;_0xff22x2[_0x2b73[736]]= mxUtils[_0x2b73[885]](this,function(_0xff22x3,_0xff22x4){_0xff22x4= mxCellMarker[_0x2b73[202]][_0x2b73[736]][_0x2b73[183]](_0xff22x2,arguments);this[_0x2b73[267]]= null;if(!this[_0x2b73[2907]](_0xff22x4)){return null};null!= _0xff22x4?this[_0x2b73[2908]]()?null!= this[_0x2b73[257]]&& (this[_0x2b73[267]]= this[_0x2b73[2909]](this[_0x2b73[257]][_0x2b73[246]],_0xff22x4),null!= this[_0x2b73[267]]&& 0== this[_0x2b73[267]][_0x2b73[67]]&& (_0xff22x4= null,this[_0x2b73[2901]]()&& (this[_0x2b73[267]]= null))):this[_0x2b73[2671]](_0xff22x4)|| (_0xff22x4= null):this[_0x2b73[2908]]()&& (!this[_0x2b73[2901]]()&& !this[_0x2b73[1179]][_0x2b73[2406]])&& (this[_0x2b73[267]]= _0x2b73[110]);return _0xff22x4});_0xff22x2[_0x2b73[2872]]= mxUtils[_0x2b73[885]](this,function(_0xff22x3){return this[_0x2b73[2908]]()?null== this[_0x2b73[267]]:mxCellMarker[_0x2b73[202]][_0x2b73[2872]][_0x2b73[183]](_0xff22x2,arguments)});_0xff22x2[_0x2b73[2873]]= mxUtils[_0x2b73[885]](this,function(_0xff22x3,_0xff22x4,_0xff22x5){return null== this[_0x2b73[2882]]|| this[_0x2b73[2908]]()?mxCellMarker[_0x2b73[202]][_0x2b73[2873]][_0x2b73[183]](_0xff22x2,arguments):null});_0xff22x2[_0x2b73[1825]]= mxUtils[_0x2b73[885]](this,function(_0xff22x3,_0xff22x4){return null!= this[_0x2b73[2882]]|| this[_0x2b73[2908]]()?!0:mxCellMarker[_0x2b73[202]][_0x2b73[1825]][_0x2b73[183]](_0xff22x2,arguments)});return _0xff22x2};mxConnectionHandler[_0x2b73[202]][_0x2b73[861]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){this[_0x2b73[257]]= _0xff22x2;this[_0x2b73[2823]]= new mxPoint(_0xff22x3,_0xff22x4);this[_0x2b73[2897]]= null!= _0xff22x5?_0xff22x5:this[_0x2b73[2910]](null);this[_0x2b73[2885]][_0x2b73[2860]]= this[_0x2b73[2885]][_0x2b73[2853]];this[_0x2b73[2885]][_0x2b73[2862]]= _0xff22x2;this[_0x2b73[2885]][_0x2b73[811]]();this[_0x2b73[746]]( new mxEventObject(mxEvent.START,_0x2b73[724],this[_0x2b73[257]]))};mxConnectionHandler[_0x2b73[202]][_0x2b73[2908]]= function(){return null!= this[_0x2b73[2823]]&& null!= this[_0x2b73[253]]};mxConnectionHandler[_0x2b73[202]][_0x2b73[2671]]= function(_0xff22x2){return this[_0x2b73[1179]][_0x2b73[2671]](_0xff22x2)};mxConnectionHandler[_0x2b73[202]][_0x2b73[2672]]= function(_0xff22x2){return !0};mxConnectionHandler[_0x2b73[202]][_0x2b73[2909]]= function(_0xff22x2,_0xff22x3){return !this[_0x2b73[2672]](_0xff22x3)?_0x2b73[110]:this[_0x2b73[1179]][_0x2b73[2500]](null,_0xff22x2,_0xff22x3)};mxConnectionHandler[_0x2b73[202]][_0x2b73[2911]]= function(_0xff22x2){return this[_0x2b73[2882]]};mxConnectionHandler[_0x2b73[202]][_0x2b73[2912]]= function(_0xff22x2){return null!= _0xff22x2[_0x2b73[963]]&& _0xff22x2[_0x2b73[963]][_0x2b73[252]][_0x2b73[265]]== this[_0x2b73[1179]][_0x2b73[526]]?!0:this[_0x2b73[2880]]};mxConnectionHandler[_0x2b73[202]][_0x2b73[2913]]= function(_0xff22x2){var _0xff22x3=this[_0x2b73[2911]](_0xff22x2);if(null!= _0xff22x3&& null!= _0xff22x2){this[_0x2b73[2903]]= _0xff22x2;var _0xff22x4=[],_0xff22x5= new mxRectangle(0,0,_0xff22x3[_0x2b73[117]],_0xff22x3[_0x2b73[119]]),_0xff22x9= new mxImageShape(_0xff22x5,_0xff22x3[_0x2b73[390]],null,null,0);_0xff22x9[_0x2b73[1674]]= !1;this[_0x2b73[2912]](_0xff22x2)?(_0xff22x9[_0x2b73[507]]= mxConstants[_0x2b73[1656]],_0xff22x9[_0x2b73[176]](this[_0x2b73[1179]][_0x2b73[526]])):(_0xff22x9[_0x2b73[507]]= this[_0x2b73[1179]][_0x2b73[507]]== mxConstants[_0x2b73[508]]?mxConstants[_0x2b73[508]]:mxConstants[_0x2b73[1523]],_0xff22x9[_0x2b73[176]](this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[1524]]()),this[_0x2b73[2881]]&& null!= _0xff22x9[_0x2b73[252]][_0x2b73[328]]&& _0xff22x9[_0x2b73[252]][_0x2b73[265]][_0x2b73[950]](_0xff22x9[_0x2b73[252]],_0xff22x9[_0x2b73[252]][_0x2b73[265]][_0x2b73[285]]));_0xff22x9[_0x2b73[252]][_0x2b73[124]][_0x2b73[270]]= mxConstants[_0x2b73[2914]];var _0xff22xa=mxUtils[_0x2b73[885]](this,function(){return null!= this[_0x2b73[2915]]?this[_0x2b73[2915]]:_0xff22x2}),_0xff22x3=mxUtils[_0x2b73[885]](this,function(_0xff22x2){mxEvent[_0x2b73[721]](_0xff22x2)|| (this[_0x2b73[2916]]= _0xff22x9,this[_0x2b73[1179]][_0x2b73[758]](mxEvent.MOUSE_DOWN, new mxMouseEvent(_0xff22x2,_0xff22xa())))});mxEvent[_0x2b73[2733]](_0xff22x9[_0x2b73[252]],this[_0x2b73[1179]],_0xff22xa,_0xff22x3);_0xff22x4[_0x2b73[207]](_0xff22x9);this[_0x2b73[2905]](_0xff22x4,this[_0x2b73[2903]]);return _0xff22x4};return null};mxConnectionHandler[_0x2b73[202]][_0x2b73[2905]]= function(_0xff22x2,_0xff22x3){if(null!= _0xff22x2&& null!= _0xff22x2[0]&& null!= _0xff22x3){var _0xff22x4=this[_0x2b73[2917]](_0xff22x2[0],_0xff22x3);_0xff22x2[0][_0x2b73[1562]][_0x2b73[235]]= _0xff22x4[_0x2b73[235]];_0xff22x2[0][_0x2b73[1562]][_0x2b73[236]]= _0xff22x4[_0x2b73[236]];_0xff22x2[0][_0x2b73[258]]()}};mxConnectionHandler[_0x2b73[202]][_0x2b73[2917]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[255]],_0xff22x5=_0xff22x3[_0x2b73[241]](),_0xff22x9=_0xff22x3[_0x2b73[242]]();if(this[_0x2b73[1179]][_0x2b73[1730]](_0xff22x3[_0x2b73[246]])){var _0xff22xa=this[_0x2b73[1179]][_0x2b73[1731]](_0xff22x3[_0x2b73[246]]),_0xff22x5=0!= _0xff22xa[_0x2b73[117]]?_0xff22x3[_0x2b73[235]]+ _0xff22xa[_0x2b73[117]]* _0xff22x4/ 2:_0xff22x5,_0xff22x9=0!= _0xff22xa[_0x2b73[119]]?_0xff22x3[_0x2b73[236]]+ _0xff22xa[_0x2b73[119]]* _0xff22x4/ 2:_0xff22x9,_0xff22xa=mxUtils[_0x2b73[431]](mxUtils[_0x2b73[433]](_0xff22x3[_0x2b73[124]],mxConstants.STYLE_ROTATION)|| 0);if(0!= _0xff22xa){var _0xff22x4=Math[_0x2b73[426]](_0xff22xa),_0xff22xa=Math[_0x2b73[427]](_0xff22xa),_0xff22x12= new mxPoint(_0xff22x3[_0x2b73[241]](),_0xff22x3[_0x2b73[242]]()),_0xff22x9=mxUtils[_0x2b73[432]]( new mxPoint(_0xff22x5,_0xff22x9),_0xff22x4,_0xff22xa,_0xff22x12),_0xff22x5=_0xff22x9[_0x2b73[235]],_0xff22x9=_0xff22x9[_0x2b73[236]]}};return new mxPoint(_0xff22x5- _0xff22x2[_0x2b73[1562]][_0x2b73[117]]/ 2,_0xff22x9- _0xff22x2[_0x2b73[1562]][_0x2b73[119]]/ 2)};mxConnectionHandler[_0x2b73[202]][_0x2b73[2906]]= function(_0xff22x2){if(null!= _0xff22x2){this[_0x2b73[2903]]= null;for(var _0xff22x3=0;_0xff22x3< _0xff22x2[_0x2b73[67]];_0xff22x3++){_0xff22x2[_0xff22x3][_0x2b73[515]]()}}};mxConnectionHandler[_0x2b73[202]][_0x2b73[2918]]= function(_0xff22x2){return !this[_0x2b73[1179]][_0x2b73[2579]](_0xff22x2[_0x2b73[727]]())&& (null!= this[_0x2b73[2886]][_0x2b73[2919]]&& null!= this[_0x2b73[2886]][_0x2b73[2920]]|| null!= this[_0x2b73[257]]&& null== this[_0x2b73[267]]&& (null== this[_0x2b73[2904]]|| null!= this[_0x2b73[2904]]&& null!= this[_0x2b73[2916]]))};mxConnectionHandler[_0x2b73[202]][_0x2b73[787]]= function(_0xff22x2,_0xff22x3){this[_0x2b73[2899]]++;if(this[_0x2b73[994]]()&& this[_0x2b73[1179]][_0x2b73[994]]()&& !_0xff22x3[_0x2b73[721]]()&& !this[_0x2b73[2908]]()&& this[_0x2b73[2918]](_0xff22x3)){null!= this[_0x2b73[2886]][_0x2b73[2920]]&& null!= this[_0x2b73[2886]][_0x2b73[2919]]&& null!= this[_0x2b73[2886]][_0x2b73[987]]?(this[_0x2b73[2921]]= this[_0x2b73[2886]][_0x2b73[2920]],this[_0x2b73[257]]= this[_0x2b73[2886]][_0x2b73[2919]],this[_0x2b73[2823]]= this[_0x2b73[2886]][_0x2b73[987]][_0x2b73[238]]()):this[_0x2b73[2823]]= new mxPoint(_0xff22x3[_0x2b73[734]](),_0xff22x3[_0x2b73[735]]());this[_0x2b73[2897]]= this[_0x2b73[2910]](_0xff22x3);this[_0x2b73[2899]]= 1;this[_0x2b73[2887]]&& null== this[_0x2b73[253]]&& (this[_0x2b73[2922]]= null,this[_0x2b73[253]]= this[_0x2b73[2156]]());if(null== this[_0x2b73[257]]&& null!= this[_0x2b73[2897]]){var _0xff22x4=this[_0x2b73[1179]][_0x2b73[2689]](_0xff22x3[_0x2b73[727]]());this[_0x2b73[2897]][_0x2b73[246]][_0x2b73[256]][_0x2b73[2007]](_0xff22x4,!0)};this[_0x2b73[746]]( new mxEventObject(mxEvent.START,_0x2b73[724],this[_0x2b73[257]]));_0xff22x3[_0x2b73[722]]()}else {if(mxClient[_0x2b73[754]]&& this[_0x2b73[2888]]&& !this[_0x2b73[2890]]&& this[_0x2b73[994]]()&& this[_0x2b73[1179]][_0x2b73[994]]()&& !this[_0x2b73[2908]]()){this[_0x2b73[2890]]= !0;this[_0x2b73[2893]]= _0xff22x3[_0x2b73[730]]();this[_0x2b73[2894]]= _0xff22x3[_0x2b73[732]]();var _0xff22x5=this[_0x2b73[1179]][_0x2b73[441]][_0x2b73[248]](this[_0x2b73[2885]][_0x2b73[736]](_0xff22x3));this[_0x2b73[2923]]&& window[_0x2b73[2924]](this[_0x2b73[2923]]);this[_0x2b73[2923]]= window[_0x2b73[261]](mxUtils[_0x2b73[885]](this,function(){this[_0x2b73[2891]]&& this[_0x2b73[2925]](_0xff22x3,_0xff22x5);this[_0x2b73[2891]]= this[_0x2b73[2890]]= !1}),this[_0x2b73[2889]]);this[_0x2b73[2891]]= !0}};this[_0x2b73[2926]]= this[_0x2b73[2916]];this[_0x2b73[2916]]= null};mxConnectionHandler[_0x2b73[202]][_0x2b73[2925]]= function(_0xff22x2,_0xff22x3){null!= _0xff22x3&& (this[_0x2b73[2885]][_0x2b73[2860]]= this[_0x2b73[2885]][_0x2b73[2853]],this[_0x2b73[2885]][_0x2b73[2862]]= _0xff22x3,this[_0x2b73[2885]][_0x2b73[811]](),this[_0x2b73[2823]]= new mxPoint(_0xff22x2[_0x2b73[734]](),_0xff22x2[_0x2b73[735]]()),this[_0x2b73[2897]]= this[_0x2b73[2910]](_0xff22x2),this[_0x2b73[257]]= _0xff22x3,this[_0x2b73[746]]( new mxEventObject(mxEvent.START,_0x2b73[724],this[_0x2b73[257]])))};mxConnectionHandler[_0x2b73[202]][_0x2b73[2927]]= function(_0xff22x2){return !this[_0x2b73[1179]][_0x2b73[1712]](_0xff22x2[_0x2b73[246]])};mxConnectionHandler[_0x2b73[202]][_0x2b73[2910]]= function(_0xff22x2){return null};mxConnectionHandler[_0x2b73[202]][_0x2b73[2928]]= function(_0xff22x2){var _0xff22x3=this[_0x2b73[2885]][_0x2b73[2871]](_0xff22x2);this[_0x2b73[2886]][_0x2b73[2729]](_0xff22x2,null== this[_0x2b73[2823]]);this[_0x2b73[2915]]= _0xff22x3};mxConnectionHandler[_0x2b73[202]][_0x2b73[2929]]= function(_0xff22x2){var _0xff22x3=this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[518]](),_0xff22x4=this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[512]]();_0xff22x2[_0x2b73[235]]= _0xff22x2[_0x2b73[235]]/ _0xff22x3- _0xff22x4[_0x2b73[235]];_0xff22x2[_0x2b73[236]]= _0xff22x2[_0x2b73[236]]/ _0xff22x3- _0xff22x4[_0x2b73[236]]};mxConnectionHandler[_0x2b73[202]][_0x2b73[788]]= function(_0xff22x2,_0xff22x3){this[_0x2b73[2891]]&& (this[_0x2b73[2891]]= Math[_0x2b73[425]](this[_0x2b73[2893]]- _0xff22x3[_0x2b73[730]]())< this[_0x2b73[2892]]&& Math[_0x2b73[425]](this[_0x2b73[2894]]- _0xff22x3[_0x2b73[732]]())< this[_0x2b73[2892]]);if(!_0xff22x3[_0x2b73[721]]()&& (this[_0x2b73[2895]]|| null!= this[_0x2b73[2823]]|| !this[_0x2b73[1179]][_0x2b73[1009]])){!this[_0x2b73[994]]()&& null!= this[_0x2b73[2915]]&& (this[_0x2b73[2906]](this[_0x2b73[2904]]),this[_0x2b73[2915]]= null);(null!= this[_0x2b73[2823]]|| this[_0x2b73[994]]()&& this[_0x2b73[1179]][_0x2b73[994]]())&& this[_0x2b73[2928]](_0xff22x3);if(null!= this[_0x2b73[2823]]){var _0xff22x4=this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[255]],_0xff22x4= new mxPoint(this[_0x2b73[1179]][_0x2b73[1021]](_0xff22x3[_0x2b73[734]]()/ _0xff22x4)* _0xff22x4,this[_0x2b73[1179]][_0x2b73[1021]](_0xff22x3[_0x2b73[735]]()/ _0xff22x4)* _0xff22x4),_0xff22x5=null,_0xff22x9=_0xff22x4;null!= this[_0x2b73[2886]][_0x2b73[2920]]&& (null!= this[_0x2b73[2886]][_0x2b73[2919]]&& null!= this[_0x2b73[2886]][_0x2b73[987]])&& (_0xff22x5= this[_0x2b73[2886]][_0x2b73[2920]],_0xff22x9= this[_0x2b73[2886]][_0x2b73[987]][_0x2b73[238]]());var _0xff22xa=this[_0x2b73[2823]];if(null!= this[_0x2b73[2926]]){var _0xff22x12=this[_0x2b73[2926]][_0x2b73[1562]][_0x2b73[117]],_0xff22x13=this[_0x2b73[2926]][_0x2b73[1562]][_0x2b73[119]];null!= this[_0x2b73[2915]]&& this[_0x2b73[2883]]?(_0xff22x12= this[_0x2b73[2917]](this[_0x2b73[2926]],this[_0x2b73[2915]]),this[_0x2b73[2926]][_0x2b73[1562]][_0x2b73[235]]= _0xff22x12[_0x2b73[235]],this[_0x2b73[2926]][_0x2b73[1562]][_0x2b73[236]]= _0xff22x12[_0x2b73[236]]):(_0xff22x12= new mxRectangle(_0xff22x3[_0x2b73[734]]()+ this[_0x2b73[2896]][_0x2b73[235]],_0xff22x3[_0x2b73[735]]()+ this[_0x2b73[2896]][_0x2b73[236]],_0xff22x12,_0xff22x13),this[_0x2b73[2926]][_0x2b73[1562]]= _0xff22x12);this[_0x2b73[2926]][_0x2b73[258]]()};if(null!= this[_0x2b73[2897]]){this[_0x2b73[2897]][_0x2b73[439]]= [null,null!= this[_0x2b73[2915]]?null:_0xff22x9];this[_0x2b73[1179]][_0x2b73[441]][_0x2b73[2289]](this[_0x2b73[2897]],this[_0x2b73[257]],!0,this[_0x2b73[2921]]);null!= this[_0x2b73[2915]]&& (null== _0xff22x5&& (_0xff22x5= this[_0x2b73[1179]][_0x2b73[2288]](this[_0x2b73[2897]],this[_0x2b73[257]],!1)),this[_0x2b73[2897]][_0x2b73[2088]](null,!1),this[_0x2b73[1179]][_0x2b73[441]][_0x2b73[2289]](this[_0x2b73[2897]],this[_0x2b73[2915]],!1,_0xff22x5));_0xff22xa= null;if(null!= this[_0x2b73[2922]]){_0xff22xa= [];for(_0xff22x9= 0;_0xff22x9< this[_0x2b73[2922]][_0x2b73[67]];_0xff22x9++){_0xff22x5= this[_0x2b73[2922]][_0xff22x9][_0x2b73[238]](),this[_0x2b73[2929]](_0xff22x5),_0xff22xa[_0xff22x9]= _0xff22x5}};this[_0x2b73[1179]][_0x2b73[441]][_0x2b73[2282]](this[_0x2b73[2897]],_0xff22xa,this[_0x2b73[257]],this[_0x2b73[2915]]);this[_0x2b73[1179]][_0x2b73[441]][_0x2b73[2283]](this[_0x2b73[2897]],this[_0x2b73[257]],this[_0x2b73[2915]]);_0xff22x9= this[_0x2b73[2897]][_0x2b73[439]][this[_0x2b73[2897]][_0x2b73[439]][_0x2b73[67]]- 1];_0xff22xa= this[_0x2b73[2897]][_0x2b73[439]][0]}else {null!= this[_0x2b73[2915]]&& null== this[_0x2b73[2886]][_0x2b73[2920]]&& (_0xff22x12= this[_0x2b73[2930]](this[_0x2b73[2915]],_0xff22x3),null!= _0xff22x12&& (_0xff22x9= _0xff22x12)),null== this[_0x2b73[2921]]&& null!= this[_0x2b73[257]]&& (_0xff22x12= this[_0x2b73[2931]](this[_0x2b73[257]],null!= this[_0x2b73[2922]]&& 0< this[_0x2b73[2922]][_0x2b73[67]]?this[_0x2b73[2922]][0]:_0xff22x9,_0xff22x3),null!= _0xff22x12&& (_0xff22xa= _0xff22x12))};if(null== this[_0x2b73[2915]]&& this[_0x2b73[2900]]){_0xff22x12= _0xff22xa;null!= this[_0x2b73[2897]]&& 2< this[_0x2b73[2897]][_0x2b73[439]][_0x2b73[67]]&& (_0xff22x5= this[_0x2b73[2897]][_0x2b73[439]][this[_0x2b73[2897]][_0x2b73[439]][_0x2b73[67]]- 2],null!= _0xff22x5&& (_0xff22x12= _0xff22x5));_0xff22x5= _0xff22x9[_0x2b73[235]]- _0xff22x12[_0x2b73[235]];_0xff22x12= _0xff22x9[_0x2b73[236]]- _0xff22x12[_0x2b73[236]];_0xff22x13= Math[_0x2b73[428]](_0xff22x5* _0xff22x5+ _0xff22x12* _0xff22x12);if(0== _0xff22x13){return};_0xff22x9[_0x2b73[235]]-= 4* _0xff22x5/ _0xff22x13;_0xff22x9[_0x2b73[236]]-= 4* _0xff22x12/ _0xff22x13};if(null== this[_0x2b73[253]]&& (_0xff22x5= Math[_0x2b73[425]](_0xff22x4[_0x2b73[235]]- this[_0x2b73[2823]][_0x2b73[235]]),_0xff22x12= Math[_0x2b73[425]](_0xff22x4[_0x2b73[236]]- this[_0x2b73[2823]][_0x2b73[236]]),_0xff22x5> this[_0x2b73[1179]][_0x2b73[2353]]|| _0xff22x12> this[_0x2b73[1179]][_0x2b73[2353]])){this[_0x2b73[253]]= this[_0x2b73[2156]](),this[_0x2b73[2928]](_0xff22x3)};null!= this[_0x2b73[253]]&& (null!= this[_0x2b73[2897]]?this[_0x2b73[253]][_0x2b73[1525]]= this[_0x2b73[2897]][_0x2b73[439]]:(_0xff22x4= [_0xff22xa],null!= this[_0x2b73[2922]]&& (_0xff22x4= _0xff22x4[_0x2b73[1919]](this[_0x2b73[2922]])),_0xff22x4[_0x2b73[207]](_0xff22x9),this[_0x2b73[253]][_0x2b73[1525]]= _0xff22x4),this[_0x2b73[2932]]());mxEvent[_0x2b73[722]](_0xff22x3[_0x2b73[727]]());_0xff22x3[_0x2b73[722]]()}else {!this[_0x2b73[994]]()|| !this[_0x2b73[1179]][_0x2b73[994]]()?this[_0x2b73[2886]][_0x2b73[862]]():this[_0x2b73[257]]!= this[_0x2b73[2915]]&& null== this[_0x2b73[2897]]?(this[_0x2b73[2906]](this[_0x2b73[2904]]),this[_0x2b73[2904]]= null,null!= this[_0x2b73[2915]]&& null== this[_0x2b73[267]]&& (this[_0x2b73[2904]]= this[_0x2b73[2913]](this[_0x2b73[2915]]),null== this[_0x2b73[2904]]&& (this[_0x2b73[2915]][_0x2b73[1609]](mxConstants.CURSOR_CONNECT),_0xff22x3[_0x2b73[722]]())),this[_0x2b73[257]]= this[_0x2b73[2915]]):this[_0x2b73[257]]== this[_0x2b73[2915]]&& (null!= this[_0x2b73[2915]]&& null== this[_0x2b73[2904]]&& !this[_0x2b73[1179]][_0x2b73[1009]])&& _0xff22x3[_0x2b73[722]]()};null!= this[_0x2b73[2886]][_0x2b73[2920]]&& this[_0x2b73[2885]][_0x2b73[862]]();if(!this[_0x2b73[1179]][_0x2b73[1009]]&& null!= this[_0x2b73[2915]]&& null!= this[_0x2b73[2904]]){_0xff22x4= !1;_0xff22xa= _0xff22x3[_0x2b73[728]]();for(_0xff22x9= 0;_0xff22x9< this[_0x2b73[2904]][_0x2b73[67]]&& !_0xff22x4;_0xff22x9++){_0xff22x4= _0xff22xa== this[_0x2b73[2904]][_0xff22x9][_0x2b73[252]]|| _0xff22xa[_0x2b73[265]]== this[_0x2b73[2904]][_0xff22x9][_0x2b73[252]]};_0xff22x4|| this[_0x2b73[2933]](this[_0x2b73[2915]],this[_0x2b73[2904]],_0xff22x3)}}else {this[_0x2b73[2886]][_0x2b73[862]]()}};mxConnectionHandler[_0x2b73[202]][_0x2b73[2930]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=null,_0xff22x5=_0xff22x2[_0x2b73[441]],_0xff22x9=_0xff22x5[_0x2b73[2305]](_0xff22x2);if(null!= _0xff22x9){var _0xff22xa=null!= this[_0x2b73[2922]]&& 0< this[_0x2b73[2922]][_0x2b73[67]]?this[_0x2b73[2922]][this[_0x2b73[2922]][_0x2b73[67]]- 1]: new mxPoint(this[_0x2b73[257]][_0x2b73[241]](),this[_0x2b73[257]][_0x2b73[242]]()),_0xff22x5=_0xff22x9(_0xff22x5[_0x2b73[2087]](_0xff22x2),this[_0x2b73[2897]],_0xff22xa,!1);null!= _0xff22x5&& (_0xff22x4= _0xff22x5)}else {_0xff22x4= new mxPoint(_0xff22x2[_0x2b73[241]](),_0xff22x2[_0x2b73[242]]())};return _0xff22x4};mxConnectionHandler[_0x2b73[202]][_0x2b73[2931]]= function(_0xff22x2,_0xff22x3,_0xff22x4){_0xff22x4= null;var _0xff22x5=_0xff22x2[_0x2b73[441]],_0xff22x9=_0xff22x5[_0x2b73[2305]](_0xff22x2),_0xff22xa= new mxPoint(_0xff22x2[_0x2b73[241]](),_0xff22x2[_0x2b73[242]]());if(null!= _0xff22x9){var _0xff22x12=mxUtils[_0x2b73[433]](_0xff22x2[_0x2b73[124]],mxConstants.STYLE_ROTATION,0),_0xff22x13=-_0xff22x12* (Math[_0x2b73[424]]/ 180);0!= _0xff22x12&& (_0xff22x3= mxUtils[_0x2b73[432]]( new mxPoint(_0xff22x3[_0x2b73[235]],_0xff22x3[_0x2b73[236]]),Math[_0x2b73[426]](_0xff22x13),Math[_0x2b73[427]](_0xff22x13),_0xff22xa));_0xff22x2= _0xff22x9(_0xff22x5[_0x2b73[2087]](_0xff22x2),_0xff22x2,_0xff22x3,!1);null!= _0xff22x2&& (0!= _0xff22x12&& (_0xff22x2= mxUtils[_0x2b73[432]]( new mxPoint(_0xff22x2[_0x2b73[235]],_0xff22x2[_0x2b73[236]]),Math[_0x2b73[426]](-_0xff22x13),Math[_0x2b73[427]](-_0xff22x13),_0xff22xa)),_0xff22x4= _0xff22x2)}else {_0xff22x4= _0xff22xa};return _0xff22x4};mxConnectionHandler[_0x2b73[202]][_0x2b73[2933]]= function(_0xff22x2,_0xff22x3,_0xff22x4){};mxConnectionHandler[_0x2b73[202]][_0x2b73[2934]]= function(_0xff22x2){return null!= _0xff22x2[_0x2b73[248]]()};mxConnectionHandler[_0x2b73[202]][_0x2b73[2935]]= function(_0xff22x2){var _0xff22x3=mxUtils[_0x2b73[2196]](this[_0x2b73[1179]][_0x2b73[526]],_0xff22x2[_0x2b73[730]](),_0xff22x2[_0x2b73[732]]()),_0xff22x4=Math[_0x2b73[425]](_0xff22x3[_0x2b73[235]]- this[_0x2b73[2823]][_0x2b73[235]]),_0xff22x3=Math[_0x2b73[425]](_0xff22x3[_0x2b73[236]]- this[_0x2b73[2823]][_0x2b73[236]]);if(null!= this[_0x2b73[2922]]|| 1< this[_0x2b73[2899]]&& (_0xff22x4> this[_0x2b73[1179]][_0x2b73[2353]]|| _0xff22x3> this[_0x2b73[1179]][_0x2b73[2353]])){null== this[_0x2b73[2922]]&& (this[_0x2b73[2922]]= []),_0xff22x4= this[_0x2b73[1179]][_0x2b73[441]][_0x2b73[255]],_0xff22x3= new mxPoint(this[_0x2b73[1179]][_0x2b73[1021]](_0xff22x2[_0x2b73[734]]()/ _0xff22x4)* _0xff22x4,this[_0x2b73[1179]][_0x2b73[1021]](_0xff22x2[_0x2b73[735]]()/ _0xff22x4)* _0xff22x4),this[_0x2b73[2922]][_0x2b73[207]](_0xff22x3)}};mxConnectionHandler[_0x2b73[202]][_0x2b73[789]]= function(_0xff22x2,_0xff22x3){if(!_0xff22x3[_0x2b73[721]]()&& this[_0x2b73[2908]]()){if(this[_0x2b73[2887]]&& !this[_0x2b73[2934]](_0xff22x3)){this[_0x2b73[2935]](_0xff22x3);_0xff22x3[_0x2b73[722]]();return};if(null== this[_0x2b73[267]]){var _0xff22x4=null!= this[_0x2b73[257]]?this[_0x2b73[257]][_0x2b73[246]]:null,_0xff22x5=null;null!= this[_0x2b73[2886]][_0x2b73[2920]]&& null!= this[_0x2b73[2886]][_0x2b73[2919]]&& (_0xff22x5= this[_0x2b73[2886]][_0x2b73[2919]][_0x2b73[246]]);null== _0xff22x5&& this[_0x2b73[2885]][_0x2b73[2867]]()&& (_0xff22x5= this[_0x2b73[2885]][_0x2b73[2861]][_0x2b73[246]]);this[_0x2b73[807]](_0xff22x4,_0xff22x5,_0xff22x3[_0x2b73[727]](),_0xff22x3[_0x2b73[736]]())}else {null!= this[_0x2b73[257]]&& (null!= this[_0x2b73[2885]][_0x2b73[2861]]&& this[_0x2b73[257]][_0x2b73[246]]== this[_0x2b73[2885]][_0x2b73[2861]][_0x2b73[246]])&& this[_0x2b73[1179]][_0x2b73[2459]](this[_0x2b73[2885]][_0x2b73[1097]],evt),0< this[_0x2b73[267]][_0x2b73[67]]&& this[_0x2b73[1179]][_0x2b73[2580]](this[_0x2b73[267]])};this[_0x2b73[2906]](this[_0x2b73[2904]]);_0xff22x3[_0x2b73[722]]()};null!= this[_0x2b73[2823]]&& this[_0x2b73[862]]();this[_0x2b73[2891]]= this[_0x2b73[2890]]= !1};mxConnectionHandler[_0x2b73[202]][_0x2b73[862]]= function(){null!= this[_0x2b73[253]]&& (this[_0x2b73[253]][_0x2b73[515]](),this[_0x2b73[253]]= null);this[_0x2b73[2906]](this[_0x2b73[2904]]);this[_0x2b73[2904]]= null;this[_0x2b73[2885]][_0x2b73[862]]();this[_0x2b73[2886]][_0x2b73[862]]();this[_0x2b73[2921]]= this[_0x2b73[267]]= this[_0x2b73[257]]= this[_0x2b73[2897]]= this[_0x2b73[2926]]= null;this[_0x2b73[2899]]= 0;this[_0x2b73[2916]]= this[_0x2b73[2823]]= null;this[_0x2b73[746]]( new mxEventObject(mxEvent.RESET))};mxConnectionHandler[_0x2b73[202]][_0x2b73[2932]]= function(){var _0xff22x2=null== this[_0x2b73[267]];this[_0x2b73[253]][_0x2b73[1307]]= this[_0x2b73[2936]](_0xff22x2);_0xff22x2= this[_0x2b73[2937]](_0xff22x2);this[_0x2b73[253]][_0x2b73[1336]]= _0xff22x2;this[_0x2b73[253]][_0x2b73[258]]()};mxConnectionHandler[_0x2b73[202]][_0x2b73[2937]]= function(_0xff22x2){return _0xff22x2?mxConstants[_0x2b73[2829]]:mxConstants[_0x2b73[2938]]};mxConnectionHandler[_0x2b73[202]][_0x2b73[2936]]= function(_0xff22x2){return _0xff22x2?3:1};mxConnectionHandler[_0x2b73[202]][_0x2b73[807]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){if(null!= _0xff22x3|| this[_0x2b73[2901]]()|| this[_0x2b73[1179]][_0x2b73[2406]]){var _0xff22x9=this[_0x2b73[1179]][_0x2b73[502]](),_0xff22xa=null;_0xff22x9[_0x2b73[473]]();try{if(null!= _0xff22x2&& (null== _0xff22x3&& this[_0x2b73[2901]]())&& (_0xff22x3= this[_0x2b73[2939]](_0xff22x4,_0xff22x2),null!= _0xff22x3)){_0xff22x5= this[_0x2b73[1179]][_0x2b73[564]]([_0xff22x3],_0xff22x4,_0xff22x5);if(null== _0xff22x5|| !this[_0x2b73[1179]][_0x2b73[502]]()[_0x2b73[250]](_0xff22x5)){var _0xff22x12=this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[248]](_0xff22x5);if(null!= _0xff22x12){var _0xff22x13=_0xff22x9[_0x2b73[1721]](_0xff22x3);_0xff22x13[_0x2b73[235]]-= _0xff22x12[_0x2b73[2078]][_0x2b73[235]];_0xff22x13[_0x2b73[236]]-= _0xff22x12[_0x2b73[2078]][_0x2b73[236]]}}else {_0xff22x5= this[_0x2b73[1179]][_0x2b73[902]]()};this[_0x2b73[1179]][_0x2b73[2103]](_0xff22x3,_0xff22x5)};var _0xff22x14=this[_0x2b73[1179]][_0x2b73[902]]();null!= _0xff22x2&& (null!= _0xff22x3&& _0xff22x9[_0x2b73[1197]](_0xff22x2)== _0xff22x9[_0x2b73[1197]](_0xff22x3)&& _0xff22x9[_0x2b73[1197]](_0xff22x9[_0x2b73[1197]](_0xff22x2))!= _0xff22x9[_0x2b73[501]]())&& (_0xff22x14= _0xff22x9[_0x2b73[1197]](_0xff22x2),null!= _0xff22x2[_0x2b73[256]]&& _0xff22x2[_0x2b73[256]][_0x2b73[1500]]&& (null!= _0xff22x3[_0x2b73[256]]&& _0xff22x3[_0x2b73[256]][_0x2b73[1500]])&& (_0xff22x14= _0xff22x9[_0x2b73[1197]](_0xff22x14)));_0xff22x13= _0xff22x12= null;null!= this[_0x2b73[2897]]&& (_0xff22x12= this[_0x2b73[2897]][_0x2b73[246]][_0x2b73[131]],_0xff22x13= this[_0x2b73[2897]][_0x2b73[246]][_0x2b73[124]]);_0xff22xa= this[_0x2b73[1960]](_0xff22x14,null,_0xff22x12,_0xff22x2,_0xff22x3,_0xff22x13);if(null!= _0xff22xa){this[_0x2b73[1179]][_0x2b73[2545]](_0xff22xa,_0xff22x2,!0,this[_0x2b73[2921]]);this[_0x2b73[1179]][_0x2b73[2545]](_0xff22xa,_0xff22x3,!1,this[_0x2b73[2886]][_0x2b73[2920]]);null!= this[_0x2b73[2897]]&& _0xff22x9[_0x2b73[1724]](_0xff22xa,this[_0x2b73[2897]][_0x2b73[246]][_0x2b73[256]]);var _0xff22x15=_0xff22x9[_0x2b73[1721]](_0xff22xa);null== _0xff22x15&& (_0xff22x15= new mxGeometry,_0xff22x15[_0x2b73[1500]]= !0,_0xff22x9[_0x2b73[1724]](_0xff22xa,_0xff22x15));if(null!= this[_0x2b73[2922]]&& 0< this[_0x2b73[2922]][_0x2b73[67]]){var _0xff22x16=this[_0x2b73[1179]][_0x2b73[441]][_0x2b73[255]],_0xff22x17=this[_0x2b73[1179]][_0x2b73[441]][_0x2b73[513]];_0xff22x15[_0x2b73[1525]]= [];for(_0xff22x2= 0;_0xff22x2< this[_0x2b73[2922]][_0x2b73[67]];_0xff22x2++){var _0xff22x18=this[_0x2b73[2922]][_0xff22x2];_0xff22x15[_0x2b73[1525]][_0x2b73[207]]( new mxPoint(_0xff22x18[_0x2b73[235]]/ _0xff22x16- _0xff22x17[_0x2b73[235]],_0xff22x18[_0x2b73[236]]/ _0xff22x16- _0xff22x17[_0x2b73[236]]))}};null== _0xff22x3&& (_0xff22x18= this[_0x2b73[1179]][_0x2b73[2689]](_0xff22x4,!1),_0xff22x18[_0x2b73[235]]-= this[_0x2b73[1179]][_0x2b73[1136]]/ this[_0x2b73[1179]][_0x2b73[441]][_0x2b73[255]],_0xff22x18[_0x2b73[236]]-= this[_0x2b73[1179]][_0x2b73[1137]]/ this[_0x2b73[1179]][_0x2b73[441]][_0x2b73[255]],_0xff22x15[_0x2b73[2007]](_0xff22x18,!1));this[_0x2b73[746]]( new mxEventObject(mxEvent.CONNECT,_0x2b73[246],_0xff22xa,_0x2b73[763],_0xff22x4,_0x2b73[772],_0xff22x5))}}catch(q){mxLog[_0x2b73[539]](),mxLog[_0x2b73[143]](q[_0x2b73[281]])}finally{_0xff22x9[_0x2b73[476]]()};this[_0x2b73[804]]&& this[_0x2b73[2707]](_0xff22xa,_0xff22x3)}};mxConnectionHandler[_0x2b73[202]][_0x2b73[2707]]= function(_0xff22x2,_0xff22x3){this[_0x2b73[1179]][_0x2b73[2450]](_0xff22x2)};mxConnectionHandler[_0x2b73[202]][_0x2b73[1960]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa){if(null== this[_0x2b73[1033]]){return this[_0x2b73[1179]][_0x2b73[1960]](_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa)};_0xff22x3= this[_0x2b73[2503]](_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa);return _0xff22x3= this[_0x2b73[1179]][_0x2b73[2504]](_0xff22x3,_0xff22x2,_0xff22x5,_0xff22x9)};mxConnectionHandler[_0x2b73[202]][_0x2b73[2939]]= function(_0xff22x2,_0xff22x3){for(var _0xff22x4=this[_0x2b73[1179]][_0x2b73[1198]](_0xff22x3);null!= _0xff22x4&& _0xff22x4[_0x2b73[1500]];){_0xff22x3= this[_0x2b73[1179]][_0x2b73[502]]()[_0x2b73[1197]](_0xff22x3),_0xff22x4= this[_0x2b73[1179]][_0x2b73[1198]](_0xff22x3)};var _0xff22x5=this[_0x2b73[1179]][_0x2b73[899]]([_0xff22x3])[0],_0xff22x4=this[_0x2b73[1179]][_0x2b73[502]]()[_0x2b73[1721]](_0xff22x5);if(null!= _0xff22x4){var _0xff22x9=this[_0x2b73[1179]][_0x2b73[2689]](_0xff22x2);_0xff22x4[_0x2b73[235]]= this[_0x2b73[1179]][_0x2b73[1021]](_0xff22x9[_0x2b73[235]]- _0xff22x4[_0x2b73[117]]/ 2)- this[_0x2b73[1179]][_0x2b73[1136]]/ this[_0x2b73[1179]][_0x2b73[441]][_0x2b73[255]];_0xff22x4[_0x2b73[236]]= this[_0x2b73[1179]][_0x2b73[1021]](_0xff22x9[_0x2b73[236]]- _0xff22x4[_0x2b73[119]]/ 2)- this[_0x2b73[1179]][_0x2b73[1137]]/ this[_0x2b73[1179]][_0x2b73[441]][_0x2b73[255]];if(null!= this[_0x2b73[2823]]){var _0xff22xa=this[_0x2b73[1179]][_0x2b73[441]][_0x2b73[248]](_0xff22x3);if(null!= _0xff22xa){var _0xff22x12=this[_0x2b73[2940]]();Math[_0x2b73[425]](this[_0x2b73[1179]][_0x2b73[1021]](this[_0x2b73[2823]][_0x2b73[235]])- this[_0x2b73[1179]][_0x2b73[1021]](_0xff22x9[_0x2b73[235]]))<= _0xff22x12?_0xff22x4[_0x2b73[235]]= _0xff22xa[_0x2b73[235]]:Math[_0x2b73[425]](this[_0x2b73[1179]][_0x2b73[1021]](this[_0x2b73[2823]][_0x2b73[236]])- this[_0x2b73[1179]][_0x2b73[1021]](_0xff22x9[_0x2b73[236]]))<= _0xff22x12&& (_0xff22x4[_0x2b73[236]]= _0xff22xa[_0x2b73[236]])}}};return _0xff22x5};mxConnectionHandler[_0x2b73[202]][_0x2b73[2940]]= function(){return this[_0x2b73[1179]][_0x2b73[997]]()?this[_0x2b73[1179]][_0x2b73[1020]]:this[_0x2b73[1179]][_0x2b73[2353]]};mxConnectionHandler[_0x2b73[202]][_0x2b73[2503]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){var _0xff22x9=null;null!= this[_0x2b73[1033]]&& (_0xff22x9= this[_0x2b73[1033]](_0xff22x3,_0xff22x4,_0xff22x5));null== _0xff22x9&& (_0xff22x9= new mxCell(_0xff22x2|| _0x2b73[110]),_0xff22x9[_0x2b73[1994]](!0),_0xff22x9[_0x2b73[475]](_0xff22x5),_0xff22x2= new mxGeometry,_0xff22x2[_0x2b73[1500]]= !0,_0xff22x9[_0x2b73[1724]](_0xff22x2));return _0xff22x9};mxConnectionHandler[_0x2b73[202]][_0x2b73[515]]= function(){this[_0x2b73[1179]][_0x2b73[1148]](this);null!= this[_0x2b73[253]]&& (this[_0x2b73[253]][_0x2b73[515]](),this[_0x2b73[253]]= null);null!= this[_0x2b73[2885]]&& (this[_0x2b73[2885]][_0x2b73[515]](),this[_0x2b73[2885]]= null);null!= this[_0x2b73[2886]]&& (this[_0x2b73[2886]][_0x2b73[515]](),this[_0x2b73[2886]]= null);null!= this[_0x2b73[1176]]&& (this[_0x2b73[1179]][_0x2b73[502]]()[_0x2b73[745]](this[_0x2b73[1176]]),this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[745]](this[_0x2b73[1176]]),this[_0x2b73[1176]]= null);null!= this[_0x2b73[2898]]&& (this[_0x2b73[1179]][_0x2b73[745]](this[_0x2b73[2898]]),this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[745]](this[_0x2b73[2898]]),this[_0x2b73[2898]]= null)};function mxConstraintHandler(_0xff22x2){this[_0x2b73[1179]]= _0xff22x2}mxConstraintHandler[_0x2b73[202]][_0x2b73[2941]]= new mxImage(mxClient[_0x2b73[88]]+ _0x2b73[2942],5,5);mxConstraintHandler[_0x2b73[202]][_0x2b73[1179]]= null;mxConstraintHandler[_0x2b73[202]][_0x2b73[984]]= !0;mxConstraintHandler[_0x2b73[202]][_0x2b73[2943]]= mxConstants[_0x2b73[2854]];mxConstraintHandler[_0x2b73[202]][_0x2b73[994]]= function(){return this[_0x2b73[984]]};mxConstraintHandler[_0x2b73[202]][_0x2b73[995]]= function(_0xff22x2){this[_0x2b73[984]]= _0xff22x2};mxConstraintHandler[_0x2b73[202]][_0x2b73[862]]= function(){if(null!= this[_0x2b73[2944]]){for(var _0xff22x2=0;_0xff22x2< this[_0x2b73[2944]][_0x2b73[67]];_0xff22x2++){this[_0x2b73[2944]][_0xff22x2][_0x2b73[515]]()};this[_0x2b73[2944]]= null};null!= this[_0x2b73[2945]]&& (this[_0x2b73[2945]][_0x2b73[515]](),this[_0x2b73[2945]]= null);this[_0x2b73[2946]]= this[_0x2b73[2919]]= this[_0x2b73[987]]= this[_0x2b73[2947]]= this[_0x2b73[2920]]= null};mxConstraintHandler[_0x2b73[202]][_0x2b73[2636]]= function(){return this[_0x2b73[1179]][_0x2b73[2636]]()};mxConstraintHandler[_0x2b73[202]][_0x2b73[2948]]= function(_0xff22x2,_0xff22x3,_0xff22x4){return this[_0x2b73[2941]]};mxConstraintHandler[_0x2b73[202]][_0x2b73[2949]]= function(_0xff22x2,_0xff22x3){return !1};mxConstraintHandler[_0x2b73[202]][_0x2b73[2729]]= function(_0xff22x2,_0xff22x3){if(this[_0x2b73[994]]()&& !this[_0x2b73[2949]](_0xff22x2)){var _0xff22x4=this[_0x2b73[2636]](),_0xff22x5= new mxRectangle(_0xff22x2[_0x2b73[734]]()- _0xff22x4,_0xff22x2[_0x2b73[735]]()- _0xff22x4,2* _0xff22x4,2* _0xff22x4),_0xff22x9=null!= _0xff22x2[_0x2b73[736]]()?this[_0x2b73[1179]][_0x2b73[2565]](_0xff22x2[_0x2b73[736]]()):!1;if(null== this[_0x2b73[2947]]|| !mxUtils[_0x2b73[1825]](this[_0x2b73[2947]],_0xff22x5)|| null!= _0xff22x2[_0x2b73[248]]()&& null!= this[_0x2b73[2919]]&& _0xff22x9){if(this[_0x2b73[2947]]= null,_0xff22x2[_0x2b73[248]]()!= this[_0x2b73[2919]]){if(this[_0x2b73[2919]]= null,this[_0x2b73[1531]]= null!= _0xff22x2[_0x2b73[248]]()&& _0xff22x9?this[_0x2b73[1179]][_0x2b73[2538]](_0xff22x2[_0x2b73[248]](),_0xff22x3):null,null!= this[_0x2b73[1531]]){this[_0x2b73[2919]]= _0xff22x2[_0x2b73[248]]();this[_0x2b73[2947]]= new mxRectangle(_0xff22x2[_0x2b73[248]]()[_0x2b73[235]],_0xff22x2[_0x2b73[248]]()[_0x2b73[236]],_0xff22x2[_0x2b73[248]]()[_0x2b73[117]],_0xff22x2[_0x2b73[248]]()[_0x2b73[119]]);if(null!= this[_0x2b73[2944]]){for(_0xff22x9= 0;_0xff22x9< this[_0x2b73[2944]][_0x2b73[67]];_0xff22x9++){this[_0x2b73[2944]][_0xff22x9][_0x2b73[515]]()};this[_0x2b73[2946]]= this[_0x2b73[2944]]= null};this[_0x2b73[2944]]= [];this[_0x2b73[2946]]= [];for(_0xff22x9= 0;_0xff22x9< this[_0x2b73[1531]][_0x2b73[67]];_0xff22x9++){var _0xff22xa=this[_0x2b73[1179]][_0x2b73[2290]](_0xff22x2[_0x2b73[248]](),this[_0x2b73[1531]][_0xff22x9]),_0xff22x12=this[_0x2b73[2948]](_0xff22x2[_0x2b73[248]](),this[_0x2b73[1531]][_0xff22x9],_0xff22xa),_0xff22x13=_0xff22x12[_0x2b73[390]],_0xff22x12= new mxRectangle(_0xff22xa[_0x2b73[235]]- _0xff22x12[_0x2b73[117]]/ 2,_0xff22xa[_0x2b73[236]]- _0xff22x12[_0x2b73[119]]/ 2,_0xff22x12[_0x2b73[117]],_0xff22x12[_0x2b73[119]]),_0xff22x12= new mxImageShape(_0xff22x12,_0xff22x13);_0xff22x12[_0x2b73[507]]= this[_0x2b73[1179]][_0x2b73[507]]!= mxConstants[_0x2b73[508]]?mxConstants[_0x2b73[2334]]:mxConstants[_0x2b73[508]];_0xff22x12[_0x2b73[1674]]= !1;_0xff22x12[_0x2b73[176]](this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[1524]]());null!= _0xff22x12[_0x2b73[252]][_0x2b73[328]]&& _0xff22x12[_0x2b73[252]][_0x2b73[265]][_0x2b73[950]](_0xff22x12[_0x2b73[252]],_0xff22x12[_0x2b73[252]][_0x2b73[265]][_0x2b73[285]]);_0xff22x13= mxUtils[_0x2b73[885]](this,function(){return null!= this[_0x2b73[2919]]?this[_0x2b73[2919]]:_0xff22x2[_0x2b73[248]]()});_0xff22x12[_0x2b73[258]]();mxEvent[_0x2b73[2733]](_0xff22x12[_0x2b73[252]],this[_0x2b73[1179]],_0xff22x13);this[_0x2b73[2947]][_0x2b73[99]](_0xff22x12[_0x2b73[1562]]);this[_0x2b73[2944]][_0x2b73[207]](_0xff22x12);this[_0x2b73[2946]][_0x2b73[207]](_0xff22xa)};this[_0x2b73[2947]][_0x2b73[244]](_0xff22x4)}else {if(null!= this[_0x2b73[2944]]){null!= this[_0x2b73[2945]]&& (this[_0x2b73[2945]][_0x2b73[515]](),this[_0x2b73[2945]]= null);for(_0xff22x9= 0;_0xff22x9< this[_0x2b73[2944]][_0x2b73[67]];_0xff22x9++){this[_0x2b73[2944]][_0xff22x9][_0x2b73[515]]()};this[_0x2b73[2946]]= this[_0x2b73[2944]]= null}}}};this[_0x2b73[987]]= this[_0x2b73[2920]]= null;if(null!= this[_0x2b73[2944]]&& null!= this[_0x2b73[1531]]&& (null== _0xff22x2[_0x2b73[248]]()|| this[_0x2b73[2919]]== _0xff22x2[_0x2b73[248]]())){for(_0xff22x9= 0;_0xff22x9< this[_0x2b73[2944]][_0x2b73[67]];_0xff22x9++){if(mxUtils[_0x2b73[1825]](this[_0x2b73[2944]][_0xff22x9][_0x2b73[1562]],_0xff22x5)){this[_0x2b73[2920]]= this[_0x2b73[1531]][_0xff22x9];this[_0x2b73[987]]= this[_0x2b73[2946]][_0xff22x9];_0xff22x4= this[_0x2b73[2944]][_0xff22x9][_0x2b73[1562]][_0x2b73[238]]();_0xff22x4[_0x2b73[244]](mxClient[_0x2b73[80]]?3:2);mxClient[_0x2b73[80]]&& (_0xff22x4[_0x2b73[117]]-= 1,_0xff22x4[_0x2b73[119]]-= 1);null== this[_0x2b73[2945]]?(_0xff22x4= new mxRectangleShape(_0xff22x4,null,this[_0x2b73[2943]],3),_0xff22x4[_0x2b73[507]]= this[_0x2b73[1179]][_0x2b73[507]]== mxConstants[_0x2b73[508]]?mxConstants[_0x2b73[508]]:mxConstants[_0x2b73[1523]],_0xff22x4[_0x2b73[176]](this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[1524]]()),this[_0x2b73[2945]]= _0xff22x4,_0xff22x13= mxUtils[_0x2b73[885]](this,function(){return null!= this[_0x2b73[2919]]?this[_0x2b73[2919]]:_0xff22x2[_0x2b73[248]]()}),mxEvent[_0x2b73[2733]](_0xff22x4[_0x2b73[252]],this[_0x2b73[1179]],_0xff22x13)):(this[_0x2b73[2945]][_0x2b73[1562]]= _0xff22x4,this[_0x2b73[2945]][_0x2b73[258]]());break}}};null== this[_0x2b73[2920]]&& null!= this[_0x2b73[2945]]&& (this[_0x2b73[2945]][_0x2b73[515]](),this[_0x2b73[2945]]= null)}};mxConstraintHandler[_0x2b73[202]][_0x2b73[515]]= function(){this[_0x2b73[862]]()};function mxRubberband(_0xff22x2){null!= _0xff22x2&& (this[_0x2b73[1179]]= _0xff22x2,this[_0x2b73[1179]][_0x2b73[1133]](this),this[_0x2b73[2730]]= mxUtils[_0x2b73[885]](this,function(){this[_0x2b73[2950]]()}),this[_0x2b73[1179]][_0x2b73[169]](mxEvent.PAN,this[_0x2b73[2730]]),mxClient[_0x2b73[80]]&& mxEvent[_0x2b73[169]](window,_0x2b73[2428],mxUtils[_0x2b73[885]](this,function(){this[_0x2b73[515]]()})))}mxRubberband[_0x2b73[202]][_0x2b73[2951]]= 20;mxRubberband[_0x2b73[202]][_0x2b73[984]]= !0;mxRubberband[_0x2b73[202]][_0x2b73[485]]= null;mxRubberband[_0x2b73[202]][_0x2b73[2952]]= null;mxRubberband[_0x2b73[202]][_0x2b73[2953]]= 0;mxRubberband[_0x2b73[202]][_0x2b73[2954]]= 0;mxRubberband[_0x2b73[202]][_0x2b73[994]]= function(){return this[_0x2b73[984]]};mxRubberband[_0x2b73[202]][_0x2b73[995]]= function(_0xff22x2){this[_0x2b73[984]]= _0xff22x2};mxRubberband[_0x2b73[202]][_0x2b73[787]]= function(_0xff22x2,_0xff22x3){if(!_0xff22x3[_0x2b73[721]]()&& this[_0x2b73[994]]()&& this[_0x2b73[1179]][_0x2b73[994]]()&& (this[_0x2b73[1179]][_0x2b73[2579]](_0xff22x3[_0x2b73[727]]())|| null== _0xff22x3[_0x2b73[248]]())){var _0xff22x4=mxUtils[_0x2b73[445]](this[_0x2b73[1179]][_0x2b73[526]]),_0xff22x5=mxUtils[_0x2b73[444]](this[_0x2b73[1179]][_0x2b73[526]]);_0xff22x5[_0x2b73[235]]-= _0xff22x4[_0x2b73[235]];_0xff22x5[_0x2b73[236]]-= _0xff22x4[_0x2b73[236]];this[_0x2b73[861]](_0xff22x3[_0x2b73[730]]()+ _0xff22x5[_0x2b73[235]],_0xff22x3[_0x2b73[732]]()+ _0xff22x5[_0x2b73[236]]);if(mxClient[_0x2b73[133]]&& !mxClient[_0x2b73[75]]&& !mxClient[_0x2b73[76]]){var _0xff22x9=this[_0x2b73[1179]][_0x2b73[526]],_0xff22xa=function(_0xff22x2){_0xff22x2= new mxMouseEvent(_0xff22x2);var _0xff22x3=mxUtils[_0x2b73[2196]](_0xff22x9,_0xff22x2[_0x2b73[730]](),_0xff22x2[_0x2b73[732]]());_0xff22x2[_0x2b73[725]]= _0xff22x3[_0x2b73[235]];_0xff22x2[_0x2b73[726]]= _0xff22x3[_0x2b73[236]];return _0xff22x2};this[_0x2b73[2955]]= mxUtils[_0x2b73[885]](this,function(_0xff22x2){this[_0x2b73[788]](this[_0x2b73[1179]],_0xff22xa(_0xff22x2))});this[_0x2b73[981]]= mxUtils[_0x2b73[885]](this,function(_0xff22x2){this[_0x2b73[789]](this[_0x2b73[1179]],_0xff22xa(_0xff22x2))});mxEvent[_0x2b73[169]](document,_0x2b73[752],this[_0x2b73[2955]]);mxEvent[_0x2b73[169]](document,_0x2b73[753],this[_0x2b73[981]])};_0xff22x3[_0x2b73[722]](!1)}};mxRubberband[_0x2b73[202]][_0x2b73[861]]= function(_0xff22x2,_0xff22x3){this[_0x2b73[2823]]= new mxPoint(_0xff22x2,_0xff22x3)};mxRubberband[_0x2b73[202]][_0x2b73[788]]= function(_0xff22x2,_0xff22x3){if(!_0xff22x3[_0x2b73[721]]()&& null!= this[_0x2b73[2823]]){var _0xff22x4=mxUtils[_0x2b73[444]](this[_0x2b73[1179]][_0x2b73[526]]),_0xff22x5=mxUtils[_0x2b73[445]](this[_0x2b73[1179]][_0x2b73[526]]);_0xff22x4[_0x2b73[235]]-= _0xff22x5[_0x2b73[235]];_0xff22x4[_0x2b73[236]]-= _0xff22x5[_0x2b73[236]];var _0xff22x5=_0xff22x3[_0x2b73[730]]()+ _0xff22x4[_0x2b73[235]],_0xff22x4=_0xff22x3[_0x2b73[732]]()+ _0xff22x4[_0x2b73[236]],_0xff22x9=this[_0x2b73[2823]][_0x2b73[235]]- _0xff22x5,_0xff22xa=this[_0x2b73[2823]][_0x2b73[236]]- _0xff22x4,_0xff22x12=this[_0x2b73[1179]][_0x2b73[2353]];if(null!= this[_0x2b73[485]]|| Math[_0x2b73[425]](_0xff22x9)> _0xff22x12|| Math[_0x2b73[425]](_0xff22xa)> _0xff22x12){null== this[_0x2b73[485]]&& (this[_0x2b73[485]]= this[_0x2b73[2156]]()),mxUtils[_0x2b73[2440]](),this[_0x2b73[2729]](_0xff22x5,_0xff22x4),_0xff22x3[_0x2b73[722]]()}}};mxRubberband[_0x2b73[202]][_0x2b73[2156]]= function(){null== this[_0x2b73[2952]]&& (this[_0x2b73[2952]]= document[_0x2b73[55]](_0x2b73[485]),this[_0x2b73[2952]][_0x2b73[926]]= _0x2b73[2956],mxUtils[_0x2b73[254]](this[_0x2b73[2952]],this[_0x2b73[2951]]));this[_0x2b73[1179]][_0x2b73[526]][_0x2b73[62]](this[_0x2b73[2952]]);return this[_0x2b73[2952]]};mxRubberband[_0x2b73[202]][_0x2b73[789]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=null!= this[_0x2b73[485]];this[_0x2b73[862]]();_0xff22x4&& (_0xff22x4= new mxRectangle(this[_0x2b73[235]],this[_0x2b73[236]],this[_0x2b73[117]],this[_0x2b73[119]]),this[_0x2b73[1179]][_0x2b73[2698]](_0xff22x4,_0xff22x3[_0x2b73[727]]()),_0xff22x3[_0x2b73[722]]())};mxRubberband[_0x2b73[202]][_0x2b73[862]]= function(){null!= this[_0x2b73[485]]&& this[_0x2b73[485]][_0x2b73[265]][_0x2b73[266]](this[_0x2b73[485]]);null!= this[_0x2b73[2955]]&& (mxEvent[_0x2b73[745]](document,_0x2b73[752],this[_0x2b73[2955]]),this[_0x2b73[2955]]= null);null!= this[_0x2b73[981]]&& (mxEvent[_0x2b73[745]](document,_0x2b73[753],this[_0x2b73[981]]),this[_0x2b73[981]]= null);this[_0x2b73[2954]]= this[_0x2b73[2953]]= 0;this[_0x2b73[485]]= this[_0x2b73[2823]]= null};mxRubberband[_0x2b73[202]][_0x2b73[2729]]= function(_0xff22x2,_0xff22x3){this[_0x2b73[2953]]= _0xff22x2;this[_0x2b73[2954]]= _0xff22x3;this[_0x2b73[2950]]()};mxRubberband[_0x2b73[202]][_0x2b73[2950]]= function(){if(null!= this[_0x2b73[485]]){var _0xff22x2=this[_0x2b73[2953]]- this[_0x2b73[1179]][_0x2b73[1136]],_0xff22x3=this[_0x2b73[2954]]- this[_0x2b73[1179]][_0x2b73[1137]];this[_0x2b73[235]]= Math[_0x2b73[243]](this[_0x2b73[2823]][_0x2b73[235]],_0xff22x2);this[_0x2b73[236]]= Math[_0x2b73[243]](this[_0x2b73[2823]][_0x2b73[236]],_0xff22x3);this[_0x2b73[117]]= Math[_0x2b73[160]](this[_0x2b73[2823]][_0x2b73[235]],_0xff22x2)- this[_0x2b73[235]];this[_0x2b73[119]]= Math[_0x2b73[160]](this[_0x2b73[2823]][_0x2b73[236]],_0xff22x3)- this[_0x2b73[236]];_0xff22x2= mxClient[_0x2b73[47]]?this[_0x2b73[1179]][_0x2b73[1137]]:0;this[_0x2b73[485]][_0x2b73[124]][_0x2b73[361]]= this[_0x2b73[235]]+ (mxClient[_0x2b73[47]]?this[_0x2b73[1179]][_0x2b73[1136]]:0)+ _0x2b73[168];this[_0x2b73[485]][_0x2b73[124]][_0x2b73[125]]= this[_0x2b73[236]]+ _0xff22x2+ _0x2b73[168];this[_0x2b73[485]][_0x2b73[124]][_0x2b73[117]]= Math[_0x2b73[160]](1,this[_0x2b73[117]])+ _0x2b73[168];this[_0x2b73[485]][_0x2b73[124]][_0x2b73[119]]= Math[_0x2b73[160]](1,this[_0x2b73[119]])+ _0x2b73[168]}};mxRubberband[_0x2b73[202]][_0x2b73[515]]= function(){this[_0x2b73[2717]]|| (this[_0x2b73[2717]]= !0,this[_0x2b73[1179]][_0x2b73[1148]](this),this[_0x2b73[1179]][_0x2b73[745]](this[_0x2b73[2730]]),this[_0x2b73[862]](),null!= this[_0x2b73[2952]]&& (this[_0x2b73[2952]]= null))};function mxVertexHandler(_0xff22x2){null!= _0xff22x2&& (this[_0x2b73[724]]= _0xff22x2,this[_0x2b73[176]]())}mxVertexHandler[_0x2b73[202]][_0x2b73[1179]]= null;mxVertexHandler[_0x2b73[202]][_0x2b73[724]]= null;mxVertexHandler[_0x2b73[202]][_0x2b73[2957]]= !1;mxVertexHandler[_0x2b73[202]][_0x2b73[1983]]= null;mxVertexHandler[_0x2b73[202]][_0x2b73[2958]]= !0;mxVertexHandler[_0x2b73[202]][_0x2b73[2959]]= null;mxVertexHandler[_0x2b73[202]][_0x2b73[2353]]= 0;mxVertexHandler[_0x2b73[202]][_0x2b73[2809]]= !1;mxVertexHandler[_0x2b73[202]][_0x2b73[2960]]= !0;mxVertexHandler[_0x2b73[202]][_0x2b73[176]]= function(){this[_0x2b73[1179]]= this[_0x2b73[724]][_0x2b73[441]][_0x2b73[1179]];this[_0x2b73[2961]]= this[_0x2b73[2962]](this[_0x2b73[724]]);this[_0x2b73[1562]]= new mxRectangle(this[_0x2b73[2961]][_0x2b73[235]],this[_0x2b73[2961]][_0x2b73[236]],this[_0x2b73[2961]][_0x2b73[117]],this[_0x2b73[2961]][_0x2b73[119]]);this[_0x2b73[2732]]= this[_0x2b73[2963]](this[_0x2b73[1562]]);this[_0x2b73[2732]][_0x2b73[507]]= this[_0x2b73[1179]][_0x2b73[507]]!= mxConstants[_0x2b73[508]]?mxConstants[_0x2b73[1523]]:mxConstants[_0x2b73[508]];this[_0x2b73[2732]][_0x2b73[1229]]= !1;this[_0x2b73[2732]][_0x2b73[176]](this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[1524]]());this[_0x2b73[1179]][_0x2b73[1712]](this[_0x2b73[724]][_0x2b73[246]])&& (this[_0x2b73[2732]][_0x2b73[252]][_0x2b73[124]][_0x2b73[270]]= mxConstants[_0x2b73[2832]]);mxEvent[_0x2b73[2733]](this[_0x2b73[2732]][_0x2b73[252]],this[_0x2b73[1179]],this[_0x2b73[724]]);if(0>= mxGraphHandler[_0x2b73[202]][_0x2b73[2795]]|| this[_0x2b73[1179]][_0x2b73[2694]]()< mxGraphHandler[_0x2b73[202]][_0x2b73[2795]]){var _0xff22x2=this[_0x2b73[1179]][_0x2b73[2657]](this[_0x2b73[724]][_0x2b73[246]]);this[_0x2b73[2964]]= [];if(_0xff22x2|| this[_0x2b73[1179]][_0x2b73[2628]](this[_0x2b73[724]][_0x2b73[246]])&& 2<= this[_0x2b73[724]][_0x2b73[117]]&& 2<= this[_0x2b73[724]][_0x2b73[119]]){var _0xff22x3=0;_0xff22x2&& (this[_0x2b73[2957]]|| (this[_0x2b73[2964]][_0x2b73[207]](this[_0x2b73[2735]](_0x2b73[936],_0xff22x3++)),this[_0x2b73[2964]][_0x2b73[207]](this[_0x2b73[2735]](_0x2b73[2965],_0xff22x3++)),this[_0x2b73[2964]][_0x2b73[207]](this[_0x2b73[2735]](_0x2b73[2966],_0xff22x3++)),this[_0x2b73[2964]][_0x2b73[207]](this[_0x2b73[2735]](_0x2b73[2967],_0xff22x3++)),this[_0x2b73[2964]][_0x2b73[207]](this[_0x2b73[2735]](_0x2b73[2968],_0xff22x3++)),this[_0x2b73[2964]][_0x2b73[207]](this[_0x2b73[2735]](_0x2b73[2969],_0xff22x3++)),this[_0x2b73[2964]][_0x2b73[207]](this[_0x2b73[2735]](_0x2b73[2970],_0xff22x3++))),this[_0x2b73[2964]][_0x2b73[207]](this[_0x2b73[2735]](_0x2b73[2971],_0xff22x3++)));_0xff22x2= this[_0x2b73[1179]][_0x2b73[251]][_0x2b73[1721]](this[_0x2b73[724]][_0x2b73[246]]);null!= _0xff22x2&& (!_0xff22x2[_0x2b73[1500]]&& !this[_0x2b73[1179]][_0x2b73[1730]](this[_0x2b73[724]][_0x2b73[246]])&& this[_0x2b73[1179]][_0x2b73[2628]](this[_0x2b73[724]][_0x2b73[246]]))&& (this[_0x2b73[2972]]= this[_0x2b73[2735]](mxConstants.CURSOR_LABEL_HANDLE,mxEvent.LABEL_HANDLE,mxConstants.LABEL_HANDLE_SIZE,mxConstants.LABEL_HANDLE_FILLCOLOR),this[_0x2b73[2964]][_0x2b73[207]](this[_0x2b73[2972]]))}else {this[_0x2b73[1179]][_0x2b73[1712]](this[_0x2b73[724]][_0x2b73[246]])&& (!this[_0x2b73[1179]][_0x2b73[2657]](this[_0x2b73[724]][_0x2b73[246]])&& 2> this[_0x2b73[724]][_0x2b73[117]]&& 2> this[_0x2b73[724]][_0x2b73[119]])&& (this[_0x2b73[2972]]= this[_0x2b73[2735]](mxConstants.CURSOR_MOVABLE_VERTEX,null,null,mxConstants.LABEL_HANDLE_FILLCOLOR),this[_0x2b73[2964]][_0x2b73[207]](this[_0x2b73[2972]]))}};if(this[_0x2b73[2809]]&& (0>= mxGraphHandler[_0x2b73[202]][_0x2b73[2795]]|| this[_0x2b73[1179]][_0x2b73[2694]]()< mxGraphHandler[_0x2b73[202]][_0x2b73[2795]])){this[_0x2b73[2973]]= this[_0x2b73[2735]](_0x2b73[356],mxEvent.ROTATION_HANDLE,mxConstants[_0x2b73[2974]]+ 3,mxConstants.HANDLE_FILLCOLOR),this[_0x2b73[2964]][_0x2b73[207]](this[_0x2b73[2973]])};this[_0x2b73[258]]()};mxVertexHandler[_0x2b73[202]][_0x2b73[2962]]= function(_0xff22x2){return new mxRectangle(Math[_0x2b73[488]](_0xff22x2[_0x2b73[235]]),Math[_0x2b73[488]](_0xff22x2[_0x2b73[236]]),Math[_0x2b73[488]](_0xff22x2[_0x2b73[117]]),Math[_0x2b73[488]](_0xff22x2[_0x2b73[119]]))};mxVertexHandler[_0x2b73[202]][_0x2b73[2963]]= function(_0xff22x2){_0xff22x2= new mxRectangleShape(_0xff22x2,null,this[_0x2b73[2975]]());_0xff22x2[_0x2b73[1307]]= this[_0x2b73[2976]]();_0xff22x2[_0x2b73[1522]]= this[_0x2b73[2977]]();return _0xff22x2};mxVertexHandler[_0x2b73[202]][_0x2b73[2975]]= function(){return mxConstants[_0x2b73[2978]]};mxVertexHandler[_0x2b73[202]][_0x2b73[2976]]= function(){return mxConstants[_0x2b73[2979]]};mxVertexHandler[_0x2b73[202]][_0x2b73[2977]]= function(){return mxConstants[_0x2b73[2980]]};mxVertexHandler[_0x2b73[202]][_0x2b73[2735]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){_0xff22x4= _0xff22x4|| mxConstants[_0x2b73[2974]];_0xff22x4= new mxRectangle(0,0,_0xff22x4,_0xff22x4);_0xff22x5= this[_0x2b73[2981]](_0xff22x4,_0xff22x3,_0xff22x5);_0xff22x5[_0x2b73[1567]]()&& null!= this[_0x2b73[724]][_0x2b73[963]]&& this[_0x2b73[724]][_0x2b73[963]][_0x2b73[252]][_0x2b73[265]]== this[_0x2b73[1179]][_0x2b73[526]]?(_0xff22x5[_0x2b73[1562]][_0x2b73[119]]-= 1,_0xff22x5[_0x2b73[1562]][_0x2b73[117]]-= 1,_0xff22x5[_0x2b73[507]]= mxConstants[_0x2b73[1656]],_0xff22x5[_0x2b73[176]](this[_0x2b73[1179]][_0x2b73[526]])):(_0xff22x5[_0x2b73[507]]= this[_0x2b73[1179]][_0x2b73[507]]!= mxConstants[_0x2b73[508]]?mxConstants[_0x2b73[2334]]:mxConstants[_0x2b73[508]],_0xff22x5[_0x2b73[176]](this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[1524]]()));mxEvent[_0x2b73[2733]](_0xff22x5[_0x2b73[252]],this[_0x2b73[1179]],this[_0x2b73[724]]);this[_0x2b73[1179]][_0x2b73[994]]()&& (_0xff22x5[_0x2b73[252]][_0x2b73[124]][_0x2b73[270]]= _0xff22x2);this[_0x2b73[2982]](_0xff22x3)|| (_0xff22x5[_0x2b73[252]][_0x2b73[124]][_0x2b73[187]]= _0x2b73[188]);return _0xff22x5};mxVertexHandler[_0x2b73[202]][_0x2b73[2982]]= function(_0xff22x2){return !0};mxVertexHandler[_0x2b73[202]][_0x2b73[2981]]= function(_0xff22x2,_0xff22x3,_0xff22x4){return null!= this[_0x2b73[2959]]?(_0xff22x2[_0x2b73[117]]= this[_0x2b73[2959]][_0x2b73[117]],_0xff22x2[_0x2b73[119]]= this[_0x2b73[2959]][_0x2b73[119]], new mxImageShape(_0xff22x2,this[_0x2b73[2959]][_0x2b73[390]])):_0xff22x3== mxEvent[_0x2b73[2983]]? new mxEllipse(_0xff22x2,_0xff22x4|| mxConstants[_0x2b73[2984]],mxConstants.HANDLE_STROKECOLOR): new mxRectangleShape(_0xff22x2,_0xff22x4|| mxConstants[_0x2b73[2984]],mxConstants.HANDLE_STROKECOLOR)};mxVertexHandler[_0x2b73[202]][_0x2b73[2985]]= function(_0xff22x2,_0xff22x3,_0xff22x4){null!= _0xff22x2&& (_0xff22x2[_0x2b73[1562]][_0x2b73[235]]= Math[_0x2b73[488]](_0xff22x3- _0xff22x2[_0x2b73[1562]][_0x2b73[117]]/ 2),_0xff22x2[_0x2b73[1562]][_0x2b73[236]]= Math[_0x2b73[488]](_0xff22x4- _0xff22x2[_0x2b73[1562]][_0x2b73[119]]/ 2),_0xff22x2[_0x2b73[258]]())};mxVertexHandler[_0x2b73[202]][_0x2b73[2986]]= function(_0xff22x2){if(_0xff22x2[_0x2b73[729]](this[_0x2b73[2973]])){return mxEvent[_0x2b73[2983]]};if(_0xff22x2[_0x2b73[729]](this[_0x2b73[2972]])){return mxEvent[_0x2b73[2987]]};if(null!= this[_0x2b73[2964]]){for(var _0xff22x3=this[_0x2b73[2353]],_0xff22x3=this[_0x2b73[2958]]&& (mxClient[_0x2b73[80]]|| 0< _0xff22x3)? new mxRectangle(_0xff22x2[_0x2b73[734]]()- _0xff22x3,_0xff22x2[_0x2b73[735]]()- _0xff22x3,2* _0xff22x3,2* _0xff22x3):null,_0xff22x4=0;_0xff22x4< this[_0x2b73[2964]][_0x2b73[67]];_0xff22x4++){if(_0xff22x2[_0x2b73[729]](this[_0x2b73[2964]][_0xff22x4])|| null!= _0xff22x3&& mxUtils[_0x2b73[1825]](this[_0x2b73[2964]][_0xff22x4][_0x2b73[1562]],_0xff22x3)){return _0xff22x4}}};return null};mxVertexHandler[_0x2b73[202]][_0x2b73[787]]= function(_0xff22x2,_0xff22x3){if(!_0xff22x3[_0x2b73[721]]()&& this[_0x2b73[1179]][_0x2b73[994]]()&& !this[_0x2b73[1179]][_0x2b73[2579]](_0xff22x3[_0x2b73[727]]())&& (0< this[_0x2b73[2353]]|| _0xff22x3[_0x2b73[248]]()== this[_0x2b73[724]])){var _0xff22x4=this[_0x2b73[2986]](_0xff22x3);null!= _0xff22x4&& (this[_0x2b73[861]](_0xff22x3[_0x2b73[730]](),_0xff22x3[_0x2b73[732]](),_0xff22x4),_0xff22x3[_0x2b73[722]]())}};mxVertexHandler[_0x2b73[202]][_0x2b73[861]]= function(_0xff22x2,_0xff22x3,_0xff22x4){_0xff22x2= mxUtils[_0x2b73[2196]](this[_0x2b73[1179]][_0x2b73[526]],_0xff22x2,_0xff22x3);this[_0x2b73[2739]]= _0xff22x2[_0x2b73[235]];this[_0x2b73[2740]]= _0xff22x2[_0x2b73[236]];this[_0x2b73[1983]]= _0xff22x4;this[_0x2b73[2732]][_0x2b73[252]][_0x2b73[124]][_0x2b73[495]]= _0xff22x4== mxEvent[_0x2b73[2983]]?_0x2b73[497]:_0x2b73[130];this[_0x2b73[2988]]= this[_0x2b73[2963]](this[_0x2b73[1562]]);!(mxClient[_0x2b73[48]]&& 0!= Number(this[_0x2b73[724]][_0x2b73[124]][mxConstants[_0x2b73[2278]]]|| _0x2b73[468]))&& null!= this[_0x2b73[724]][_0x2b73[963]]&& this[_0x2b73[724]][_0x2b73[963]][_0x2b73[252]][_0x2b73[265]]== this[_0x2b73[1179]][_0x2b73[526]]?(this[_0x2b73[2988]][_0x2b73[507]]= mxConstants[_0x2b73[1656]],this[_0x2b73[2988]][_0x2b73[176]](this[_0x2b73[1179]][_0x2b73[526]])):(this[_0x2b73[2988]][_0x2b73[507]]= this[_0x2b73[1179]][_0x2b73[507]]!= mxConstants[_0x2b73[508]]?mxConstants[_0x2b73[1523]]:mxConstants[_0x2b73[508]],this[_0x2b73[2988]][_0x2b73[176]](this[_0x2b73[1179]][_0x2b73[441]][_0x2b73[1524]]()))};mxVertexHandler[_0x2b73[202]][_0x2b73[788]]= function(_0xff22x2,_0xff22x3){if(!_0xff22x3[_0x2b73[721]]()&& null!= this[_0x2b73[1983]]){var _0xff22x4= new mxPoint(_0xff22x3[_0x2b73[734]](),_0xff22x3[_0x2b73[735]]()),_0xff22x5=this[_0x2b73[1179]][_0x2b73[1018]](_0xff22x3[_0x2b73[727]]()),_0xff22x9=this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[255]];if(this[_0x2b73[1983]]== mxEvent[_0x2b73[2987]]){_0xff22x5&& (_0xff22x4[_0x2b73[235]]= this[_0x2b73[1179]][_0x2b73[1021]](_0xff22x4[_0x2b73[235]]/ _0xff22x9)* _0xff22x9,_0xff22x4[_0x2b73[236]]= this[_0x2b73[1179]][_0x2b73[1021]](_0xff22x4[_0x2b73[236]]/ _0xff22x9)* _0xff22x9),this[_0x2b73[2985]](this[_0x2b73[2964]][this[_0x2b73[2964]][_0x2b73[67]]- 1],_0xff22x4[_0x2b73[235]],_0xff22x4[_0x2b73[236]])}else {if(this[_0x2b73[1983]]== mxEvent[_0x2b73[2983]]){var _0xff22xa=this[_0x2b73[724]][_0x2b73[235]]+ this[_0x2b73[724]][_0x2b73[117]]/ 2- _0xff22x4[_0x2b73[235]],_0xff22x12=this[_0x2b73[724]][_0x2b73[236]]+ this[_0x2b73[724]][_0x2b73[119]]/ 2- _0xff22x4[_0x2b73[236]];this[_0x2b73[2989]]= 0!= _0xff22xa?180* Math[_0x2b73[2990]](_0xff22x12/ _0xff22xa)/ Math[_0x2b73[424]]+ 90:0> _0xff22x12?180:0;0< _0xff22xa&& (this[_0x2b73[2989]]-= 180);this[_0x2b73[2960]]&& (_0xff22xa= _0xff22x4[_0x2b73[235]]- this[_0x2b73[724]][_0x2b73[241]](),_0xff22x12= _0xff22x4[_0x2b73[236]]- this[_0x2b73[724]][_0x2b73[242]](),_0xff22xa= Math[_0x2b73[425]](Math[_0x2b73[428]](_0xff22xa* _0xff22xa+ _0xff22x12* _0xff22x12)- this[_0x2b73[724]][_0x2b73[119]]/ 2- 20),_0xff22xa= Math[_0x2b73[160]](1,5* Math[_0x2b73[243]](3,Math[_0x2b73[160]](0,Math[_0x2b73[488]](80/ Math[_0x2b73[425]](_0xff22xa))))),this[_0x2b73[2989]]= Math[_0x2b73[488]](this[_0x2b73[2989]]/ _0xff22xa)* _0xff22xa);this[_0x2b73[2732]][_0x2b73[603]]= this[_0x2b73[2989]];this[_0x2b73[2732]][_0x2b73[258]]()}else {var _0xff22x13=mxUtils[_0x2b73[431]](this[_0x2b73[724]][_0x2b73[124]][mxConstants[_0x2b73[2278]]]|| _0x2b73[468]),_0xff22x14=Math[_0x2b73[426]](-_0xff22x13),_0xff22x15=Math[_0x2b73[427]](-_0xff22x13),_0xff22x16= new mxPoint(this[_0x2b73[724]][_0x2b73[241]](),this[_0x2b73[724]][_0x2b73[242]]()),_0xff22xa=_0xff22x4[_0x2b73[235]]- this[_0x2b73[2739]],_0xff22x12=_0xff22x4[_0x2b73[236]]- this[_0x2b73[2740]],_0xff22x4=this[_0x2b73[1179]][_0x2b73[441]][_0x2b73[513]],_0xff22x17=_0xff22x15* _0xff22xa+ _0xff22x14* _0xff22x12,_0xff22xa=_0xff22x14* _0xff22xa- _0xff22x15* _0xff22x12;this[_0x2b73[1562]]= this[_0x2b73[2991]](this[_0x2b73[2961]],_0xff22xa,_0xff22x17,this[_0x2b73[1983]],_0xff22x5,_0xff22x9,_0xff22x4);_0xff22x14= Math[_0x2b73[426]](_0xff22x13);_0xff22x15= Math[_0x2b73[427]](_0xff22x13);_0xff22x12= new mxPoint(this[_0x2b73[1562]][_0x2b73[241]](),this[_0x2b73[1562]][_0x2b73[242]]());_0xff22xa= _0xff22x12[_0x2b73[235]]- _0xff22x16[_0x2b73[235]];_0xff22x12= _0xff22x12[_0x2b73[236]]- _0xff22x16[_0x2b73[236]];_0xff22x16= _0xff22x15* _0xff22xa+ _0xff22x14* _0xff22x12- _0xff22x12;this[_0x2b73[1562]][_0x2b73[235]]+= _0xff22x14* _0xff22xa- _0xff22x15* _0xff22x12- _0xff22xa;this[_0x2b73[1562]][_0x2b73[236]]+= _0xff22x16;this[_0x2b73[2932]]()}};_0xff22x3[_0x2b73[722]]()}else {null!= this[_0x2b73[2986]](_0xff22x3)&& _0xff22x3[_0x2b73[722]](!1)}};mxVertexHandler[_0x2b73[202]][_0x2b73[789]]= function(_0xff22x2,_0xff22x3){if(!_0xff22x3[_0x2b73[721]]()&& null!= this[_0x2b73[1983]]&& null!= this[_0x2b73[724]]){var _0xff22x4= new mxPoint(_0xff22x3[_0x2b73[734]](),_0xff22x3[_0x2b73[735]]());this[_0x2b73[1179]][_0x2b73[502]]()[_0x2b73[473]]();try{if(this[_0x2b73[1983]]== mxEvent[_0x2b73[2983]]){null!= this[_0x2b73[2989]]&& this[_0x2b73[2992]](this[_0x2b73[724]][_0x2b73[246]],this[_0x2b73[2989]]- (this[_0x2b73[724]][_0x2b73[124]][mxConstants[_0x2b73[2278]]]|| 0))}else {var _0xff22x5=this[_0x2b73[1179]][_0x2b73[1018]](_0xff22x3[_0x2b73[727]]()),_0xff22x9=mxUtils[_0x2b73[431]](this[_0x2b73[724]][_0x2b73[124]][mxConstants[_0x2b73[2278]]]|| _0x2b73[468]),_0xff22xa=Math[_0x2b73[426]](-_0xff22x9),_0xff22x12=Math[_0x2b73[427]](-_0xff22x9),_0xff22x13=_0xff22x4[_0x2b73[235]]- this[_0x2b73[2739]],_0xff22x14=_0xff22x4[_0x2b73[236]]- this[_0x2b73[2740]],_0xff22x4=_0xff22x12* _0xff22x13+ _0xff22xa* _0xff22x14,_0xff22x13=_0xff22xa* _0xff22x13- _0xff22x12* _0xff22x14,_0xff22x14=_0xff22x4,_0xff22x15=this[_0x2b73[1179]][_0x2b73[441]][_0x2b73[255]];this[_0x2b73[2526]](this[_0x2b73[724]][_0x2b73[246]],_0xff22x13/ _0xff22x15,_0xff22x14/ _0xff22x15,this[_0x2b73[1983]],_0xff22x5)}}finally{this[_0x2b73[1179]][_0x2b73[502]]()[_0x2b73[476]]()};this[_0x2b73[862]]();_0xff22x3[_0x2b73[722]]()}};mxVertexHandler[_0x2b73[202]][_0x2b73[2992]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=this[_0x2b73[1179]][_0x2b73[502]]();if(_0xff22x4[_0x2b73[1193]](_0xff22x2)){var _0xff22x5=_0xff22x2== this[_0x2b73[724]]?this[_0x2b73[724]]:this[_0x2b73[1179]][_0x2b73[441]][_0x2b73[248]](_0xff22x2);null!= _0xff22x5&& this[_0x2b73[1179]][_0x2b73[1717]](mxConstants.STYLE_ROTATION,(_0xff22x5[_0x2b73[124]][mxConstants[_0x2b73[2278]]]|| 0)+ _0xff22x3,[_0xff22x2]);if(this[_0x2b73[724]][_0x2b73[246]]!= _0xff22x2&& (_0xff22x5= this[_0x2b73[1179]][_0x2b73[1198]](_0xff22x2),null!= _0xff22x5&& !_0xff22x5[_0x2b73[1500]])){if(0!= _0xff22x3){var _0xff22x9=this[_0x2b73[1179]][_0x2b73[502]]()[_0x2b73[1197]](_0xff22x2),_0xff22xa=this[_0x2b73[1179]][_0x2b73[1198]](_0xff22x9);if(!_0xff22x5[_0x2b73[1500]]&& null!= _0xff22xa){var _0xff22x12=mxUtils[_0x2b73[431]](_0xff22x3),_0xff22x9=Math[_0x2b73[426]](_0xff22x12),_0xff22x12=Math[_0x2b73[427]](_0xff22x12),_0xff22x13= new mxPoint(_0xff22x5[_0x2b73[241]](),_0xff22x5[_0x2b73[242]]()),_0xff22xa= new mxPoint(_0xff22xa[_0x2b73[117]]/ 2,_0xff22xa[_0x2b73[119]]/ 2),_0xff22x9=mxUtils[_0x2b73[432]](_0xff22x13,_0xff22x9,_0xff22x12,_0xff22xa),_0xff22x5=_0xff22x5[_0x2b73[238]]();_0xff22x5[_0x2b73[235]]= _0xff22x9[_0x2b73[235]]- _0xff22x5[_0x2b73[117]]/ 2;_0xff22x5[_0x2b73[236]]= _0xff22x9[_0x2b73[236]]- _0xff22x5[_0x2b73[119]]/ 2;_0xff22x4[_0x2b73[1724]](_0xff22x2,_0xff22x5)}}else {_0xff22x5= _0xff22x5[_0x2b73[238]](),_0xff22x5[_0x2b73[235]]+= dx,_0xff22x5[_0x2b73[236]]+= dy,_0xff22x4[_0x2b73[1724]](_0xff22x2,_0xff22x5)}};_0xff22x5= _0xff22x4[_0x2b73[262]](_0xff22x2);for(_0xff22x9= 0;_0xff22x9< _0xff22x5;_0xff22x9++){this[_0x2b73[2992]](_0xff22x4[_0x2b73[263]](_0xff22x2,_0xff22x9),_0xff22x3)}}};mxVertexHandler[_0x2b73[202]][_0x2b73[862]]= function(){this[_0x2b73[1983]]= this[_0x2b73[2989]]= null;null!= this[_0x2b73[2988]]&& (this[_0x2b73[2988]][_0x2b73[515]](),this[_0x2b73[2988]]= null);null!= this[_0x2b73[2732]]&& (this[_0x2b73[2732]][_0x2b73[252]][_0x2b73[124]][_0x2b73[495]]= _0x2b73[497],this[_0x2b73[2961]]= this[_0x2b73[2962]](this[_0x2b73[724]]),this[_0x2b73[1562]]= new mxRectangle(this[_0x2b73[2961]][_0x2b73[235]],this[_0x2b73[2961]][_0x2b73[236]],this[_0x2b73[2961]][_0x2b73[117]],this[_0x2b73[2961]][_0x2b73[119]]),this[_0x2b73[2932]]())};mxVertexHandler[_0x2b73[202]][_0x2b73[2526]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){var _0xff22xa=this[_0x2b73[1179]][_0x2b73[251]][_0x2b73[1721]](_0xff22x2);if(null!= _0xff22xa){if(_0xff22x5== mxEvent[_0x2b73[2987]]){_0xff22x5= this[_0x2b73[1179]][_0x2b73[441]][_0x2b73[255]],_0xff22x3= (this[_0x2b73[2972]][_0x2b73[1562]][_0x2b73[241]]()- this[_0x2b73[2739]])/ _0xff22x5,_0xff22x4= (this[_0x2b73[2972]][_0x2b73[1562]][_0x2b73[242]]()- this[_0x2b73[2740]])/ _0xff22x5,_0xff22xa= _0xff22xa[_0x2b73[238]](),null== _0xff22xa[_0x2b73[1368]]?_0xff22xa[_0x2b73[1368]]= new mxPoint(_0xff22x3,_0xff22x4):(_0xff22xa[_0x2b73[1368]][_0x2b73[235]]+= _0xff22x3,_0xff22xa[_0x2b73[1368]][_0x2b73[236]]+= _0xff22x4),this[_0x2b73[1179]][_0x2b73[251]][_0x2b73[1724]](_0xff22x2,_0xff22xa)}else {_0xff22x5= this[_0x2b73[2991]](_0xff22xa,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,1, new mxPoint(0,0));var _0xff22x12=mxUtils[_0x2b73[431]](this[_0x2b73[724]][_0x2b73[124]][mxConstants[_0x2b73[2278]]]|| _0x2b73[468]);if(0!= _0xff22x12){_0xff22x3= _0xff22x5[_0x2b73[241]]()- _0xff22xa[_0x2b73[241]]();_0xff22x4= _0xff22x5[_0x2b73[242]]()- _0xff22xa[_0x2b73[242]]();_0xff22x9= Math[_0x2b73[426]](_0xff22x12);var _0xff22x13=Math[_0x2b73[427]](_0xff22x12),_0xff22x12=_0xff22x9* _0xff22x3- _0xff22x13* _0xff22x4- _0xff22x3;_0xff22x3= _0xff22x13* _0xff22x3+ _0xff22x9* _0xff22x4- _0xff22x4;_0xff22x4= _0xff22x5[_0x2b73[235]]- _0xff22xa[_0x2b73[235]];var _0xff22x14=_0xff22x5[_0x2b73[236]]- _0xff22xa[_0x2b73[236]],_0xff22x15=_0xff22x9* _0xff22x4- _0xff22x13* _0xff22x14;_0xff22x9= _0xff22x13* _0xff22x4+ _0xff22x9* _0xff22x14;_0xff22x5[_0x2b73[235]]+= _0xff22x12;_0xff22x5[_0x2b73[236]]+= _0xff22x3;if(!this[_0x2b73[1179]][_0x2b73[1742]](_0xff22x2)&& (0!= _0xff22x12|| 0!= _0xff22x3)){_0xff22x4= _0xff22xa[_0x2b73[235]]- _0xff22x5[_0x2b73[235]]+ _0xff22x15,_0xff22x14= _0xff22xa[_0x2b73[236]]- _0xff22x5[_0x2b73[236]]+ _0xff22x9,this[_0x2b73[2993]](_0xff22x2,_0xff22x4,_0xff22x14)}};this[_0x2b73[1179]][_0x2b73[2526]](_0xff22x2,_0xff22x5)}}};mxVertexHandler[_0x2b73[202]][_0x2b73[2993]]= function(_0xff22x2,_0xff22x3,_0xff22x4){for(var _0xff22x5=this[_0x2b73[1179]][_0x2b73[502]](),_0xff22x9=_0xff22x5[_0x2b73[262]](_0xff22x2),_0xff22xa=0;_0xff22xa< _0xff22x9;_0xff22xa++){var _0xff22x12=_0xff22x5[_0x2b73[263]](_0xff22x2,_0xff22xa);if(_0xff22x5[_0x2b73[1193]](_0xff22x12)){var _0xff22x13=this[_0x2b73[1179]][_0x2b73[1198]](_0xff22x12);null!= _0xff22x13&& !_0xff22x13[_0x2b73[1500]]&& (_0xff22x13= _0xff22x13[_0x2b73[238]](),_0xff22x13[_0x2b73[235]]+= _0xff22x3,_0xff22x13[_0x2b73[236]]+= _0xff22x4,_0xff22x5[_0x2b73[1724]](_0xff22x12,_0xff22x13))}}};mxVertexHandler[_0x2b73[202]][_0x2b73[2991]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa,_0xff22x12){if(this[_0x2b73[2957]]){_0xff22x12= _0xff22x2[_0x2b73[235]]+ _0xff22x2[_0x2b73[117]]+ _0xff22x3;var _0xff22x13=_0xff22x2[_0x2b73[236]]+ _0xff22x2[_0x2b73[119]]+ _0xff22x4;_0xff22x9&& (_0xff22x12= this[_0x2b73[1179]][_0x2b73[1021]](_0xff22x12/ _0xff22xa)* _0xff22xa,_0xff22x13= this[_0x2b73[1179]][_0x2b73[1021]](_0xff22x13/ _0xff22xa)* _0xff22xa);_0xff22xa= new mxRectangle(_0xff22x2[_0x2b73[235]],_0xff22x2[_0x2b73[236]],0,0);_0xff22xa[_0x2b73[99]]( new mxRectangle(_0xff22x12,_0xff22x13,0,0));return _0xff22xa};var _0xff22x13=_0xff22x2[_0x2b73[235]]- _0xff22x12[_0x2b73[235]]* _0xff22xa,_0xff22x14=_0xff22x13+ _0xff22x2[_0x2b73[117]],_0xff22x15=_0xff22x2[_0x2b73[236]]- _0xff22x12[_0x2b73[236]]* _0xff22xa;_0xff22x2= _0xff22x15+ _0xff22x2[_0x2b73[119]];4< _0xff22x5?(_0xff22x2+= _0xff22x4,_0xff22x9&& (_0xff22x2= this[_0x2b73[1179]][_0x2b73[1021]](_0xff22x2/ _0xff22xa)* _0xff22xa)):3> _0xff22x5&& (_0xff22x15+= _0xff22x4,_0xff22x9&& (_0xff22x15= this[_0x2b73[1179]][_0x2b73[1021]](_0xff22x15/ _0xff22xa)* _0xff22xa));if(0== _0xff22x5|| 3== _0xff22x5|| 5== _0xff22x5){_0xff22x13+= _0xff22x3,_0xff22x9&& (_0xff22x13= this[_0x2b73[1179]][_0x2b73[1021]](_0xff22x13/ _0xff22xa)* _0xff22xa)}else {if(2== _0xff22x5|| 4== _0xff22x5|| 7== _0xff22x5){_0xff22x14+= _0xff22x3,_0xff22x9&& (_0xff22x14= this[_0x2b73[1179]][_0x2b73[1021]](_0xff22x14/ _0xff22xa)* _0xff22xa)}};_0xff22x9= _0xff22x14- _0xff22x13;_0xff22x2-= _0xff22x15;0> _0xff22x9&& (_0xff22x13+= _0xff22x9,_0xff22x9= Math[_0x2b73[425]](_0xff22x9));0> _0xff22x2&& (_0xff22x15+= _0xff22x2,_0xff22x2= Math[_0x2b73[425]](_0xff22x2));return new mxRectangle(_0xff22x13+ _0xff22x12[_0x2b73[235]]* _0xff22xa,_0xff22x15+ _0xff22x12[_0x2b73[236]]* _0xff22xa,_0xff22x9,_0xff22x2)};mxVertexHandler[_0x2b73[202]][_0x2b73[258]]= function(){this[_0x2b73[2961]]= this[_0x2b73[2962]](this[_0x2b73[724]]);this[_0x2b73[1562]]= new mxRectangle(this[_0x2b73[724]][_0x2b73[235]],this[_0x2b73[724]][_0x2b73[236]],this[_0x2b73[724]][_0x2b73[117]],this[_0x2b73[724]][_0x2b73[119]]);var _0xff22x2=this[_0x2b73[724]];if(null!= this[_0x2b73[2964]]){var _0xff22x3=_0xff22x2[_0x2b73[235]]+ _0xff22x2[_0x2b73[117]],_0xff22x4=_0xff22x2[_0x2b73[236]]+ _0xff22x2[_0x2b73[119]];if(this[_0x2b73[2957]]){this[_0x2b73[2985]](this[_0x2b73[2964]][0],_0xff22x3,_0xff22x4)}else {var _0xff22x5=_0xff22x2[_0x2b73[235]]+ _0xff22x2[_0x2b73[117]]/ 2,_0xff22x9=_0xff22x2[_0x2b73[236]]+ _0xff22x2[_0x2b73[119]]/ 2;if(1< this[_0x2b73[2964]][_0x2b73[67]]){var _0xff22xa=mxUtils[_0x2b73[431]](_0xff22x2[_0x2b73[124]][mxConstants[_0x2b73[2278]]]|| _0x2b73[468]),_0xff22x12=Math[_0x2b73[426]](_0xff22xa),_0xff22xa=Math[_0x2b73[427]](_0xff22xa),_0xff22x13= new mxPoint(_0xff22x2[_0x2b73[241]](),_0xff22x2[_0x2b73[242]]()),_0xff22x14=mxUtils[_0x2b73[432]]( new mxPoint(_0xff22x2[_0x2b73[235]],_0xff22x2[_0x2b73[236]]),_0xff22x12,_0xff22xa,_0xff22x13);this[_0x2b73[2985]](this[_0x2b73[2964]][0],_0xff22x14[_0x2b73[235]],_0xff22x14[_0x2b73[236]]);_0xff22x14[_0x2b73[235]]= _0xff22x5;_0xff22x14[_0x2b73[236]]= _0xff22x2[_0x2b73[236]];_0xff22x14= mxUtils[_0x2b73[432]](_0xff22x14,_0xff22x12,_0xff22xa,_0xff22x13);this[_0x2b73[2985]](this[_0x2b73[2964]][1],_0xff22x14[_0x2b73[235]],_0xff22x14[_0x2b73[236]]);_0xff22x14[_0x2b73[235]]= _0xff22x3;_0xff22x14[_0x2b73[236]]= _0xff22x2[_0x2b73[236]];_0xff22x14= mxUtils[_0x2b73[432]](_0xff22x14,_0xff22x12,_0xff22xa,_0xff22x13);this[_0x2b73[2985]](this[_0x2b73[2964]][2],_0xff22x14[_0x2b73[235]],_0xff22x14[_0x2b73[236]]);_0xff22x14[_0x2b73[235]]= _0xff22x2[_0x2b73[235]];_0xff22x14[_0x2b73[236]]= _0xff22x9;_0xff22x14= mxUtils[_0x2b73[432]](_0xff22x14,_0xff22x12,_0xff22xa,_0xff22x13);this[_0x2b73[2985]](this[_0x2b73[2964]][3],_0xff22x14[_0x2b73[235]],_0xff22x14[_0x2b73[236]]);_0xff22x14[_0x2b73[235]]= _0xff22x3;_0xff22x14[_0x2b73[236]]= _0xff22x9;_0xff22x14= mxUtils[_0x2b73[432]](_0xff22x14,_0xff22x12,_0xff22xa,_0xff22x13);this[_0x2b73[2985]](this[_0x2b73[2964]][4],_0xff22x14[_0x2b73[235]],_0xff22x14[_0x2b73[236]]);_0xff22x14[_0x2b73[235]]= _0xff22x2[_0x2b73[235]];_0xff22x14[_0x2b73[236]]= _0xff22x4;_0xff22x14= mxUtils[_0x2b73[432]](_0xff22x14,_0xff22x12,_0xff22xa,_0xff22x13);this[_0x2b73[2985]](this[_0x2b73[2964]][5],_0xff22x14[_0x2b73[235]],_0xff22x14[_0x2b73[236]]);_0xff22x14[_0x2b73[235]]= _0xff22x5;_0xff22x14[_0x2b73[236]]= _0xff22x4;_0xff22x14= mxUtils[_0x2b73[432]](_0xff22x14,_0xff22x12,_0xff22xa,_0xff22x13);this[_0x2b73[2985]](this[_0x2b73[2964]][6],_0xff22x14[_0x2b73[235]],_0xff22x14[_0x2b73[236]]);_0xff22x14[_0x2b73[235]]= _0xff22x3;_0xff22x14[_0x2b73[236]]= _0xff22x4;_0xff22x14= mxUtils[_0x2b73[432]](_0xff22x14,_0xff22x12,_0xff22xa,_0xff22x13);this[_0x2b73[2985]](this[_0x2b73[2964]][7],_0xff22x14[_0x2b73[235]],_0xff22x14[_0x2b73[236]]);this[_0x2b73[2985]](this[_0x2b73[2964]][8],_0xff22x5+ _0xff22x2[_0x2b73[2079]][_0x2b73[235]],_0xff22x9+ _0xff22x2[_0x2b73[2079]][_0x2b73[236]])}else {2<= this[_0x2b73[724]][_0x2b73[117]]&& 2<= this[_0x2b73[724]][_0x2b73[119]]?this[_0x2b73[2985]](this[_0x2b73[2964]][0],_0xff22x5+ _0xff22x2[_0x2b73[2079]][_0x2b73[235]],_0xff22x9+ _0xff22x2[_0x2b73[2079]][_0x2b73[236]]):this[_0x2b73[2985]](this[_0x2b73[2964]][0],_0xff22x2[_0x2b73[235]],_0xff22x2[_0x2b73[236]])}}};null!= this[_0x2b73[2973]]&& (_0xff22xa= mxUtils[_0x2b73[431]](this[_0x2b73[724]][_0x2b73[124]][mxConstants[_0x2b73[2278]]]|| _0x2b73[468]),_0xff22x12= Math[_0x2b73[426]](_0xff22xa),_0xff22xa= Math[_0x2b73[427]](_0xff22xa),_0xff22x13= new mxPoint(this[_0x2b73[724]][_0x2b73[241]](),this[_0x2b73[724]][_0x2b73[242]]()),_0xff22x14= mxUtils[_0x2b73[432]]( new mxPoint(_0xff22x2[_0x2b73[235]]+ _0xff22x2[_0x2b73[117]]/ 2,_0xff22x2[_0x2b73[236]]- 16),_0xff22x12,_0xff22xa,_0xff22x13),this[_0x2b73[2985]](this[_0x2b73[2973]],_0xff22x14[_0x2b73[235]],_0xff22x14[_0x2b73[236]]));this[_0x2b73[2732]][_0x2b73[603]]= Number(this[_0x2b73[724]][_0x2b73[124]][mxConstants[_0x2b73[2278]]]|| _0x2b73[468]);this[_0x2b73[2932]]()};mxVertexHandler[_0x2b73[202]][_0x2b73[2932]]= function(){null!= this[_0x2b73[2988]]&& (this[_0x2b73[2988]][_0x2b73[1562]]= this[_0x2b73[1562]],this[_0x2b73[2988]][_0x2b73[252]][_0x2b73[265]]== this[_0x2b73[1179]][_0x2b73[526]]&& (this[_0x2b73[2988]][_0x2b73[1562]][_0x2b73[117]]= Math[_0x2b73[160]](0,this[_0x2b73[2988]][_0x2b73[1562]][_0x2b73[117]]- 1),this[_0x2b73[2988]][_0x2b73[1562]][_0x2b73[119]]= Math[_0x2b73[160]](0,this[_0x2b73[2988]][_0x2b73[1562]][_0x2b73[119]]- 1)),this[_0x2b73[2988]][_0x2b73[603]]= Number(this[_0x2b73[724]][_0x2b73[124]][mxConstants[_0x2b73[2278]]]|| _0x2b73[468]),this[_0x2b73[2988]][_0x2b73[258]]());this[_0x2b73[2732]][_0x2b73[1562]]= this[_0x2b73[1562]];this[_0x2b73[2732]][_0x2b73[258]]()};mxVertexHandler[_0x2b73[202]][_0x2b73[515]]= function(){null!= this[_0x2b73[2988]]&& (this[_0x2b73[2988]][_0x2b73[515]](),this[_0x2b73[2988]]= null);this[_0x2b73[2732]][_0x2b73[515]]();this[_0x2b73[2972]]= this[_0x2b73[2732]]= null;if(null!= this[_0x2b73[2964]]){for(var _0xff22x2=0;_0xff22x2< this[_0x2b73[2964]][_0x2b73[67]];_0xff22x2++){this[_0x2b73[2964]][_0xff22x2][_0x2b73[515]](),this[_0x2b73[2964]][_0xff22x2]= null}}};function mxEdgeHandler(_0xff22x2){null!= _0xff22x2&& (this[_0x2b73[724]]= _0xff22x2,this[_0x2b73[176]]())}mxEdgeHandler[_0x2b73[202]][_0x2b73[1179]]= null;mxEdgeHandler[_0x2b73[202]][_0x2b73[724]]= null;mxEdgeHandler[_0x2b73[202]][_0x2b73[2885]]= null;mxEdgeHandler[_0x2b73[202]][_0x2b73[2886]]= null;mxEdgeHandler[_0x2b73[202]][_0x2b73[267]]= null;mxEdgeHandler[_0x2b73[202]][_0x2b73[253]]= null;mxEdgeHandler[_0x2b73[202]][_0x2b73[2994]]= null;mxEdgeHandler[_0x2b73[202]][_0x2b73[2972]]= null;mxEdgeHandler[_0x2b73[202]][_0x2b73[2797]]= !0;mxEdgeHandler[_0x2b73[202]][_0x2b73[2771]]= !1;mxEdgeHandler[_0x2b73[202]][_0x2b73[2995]]= !1;mxEdgeHandler[_0x2b73[202]][_0x2b73[574]]= !1;mxEdgeHandler[_0x2b73[202]][_0x2b73[2958]]= !0;mxEdgeHandler[_0x2b73[202]][_0x2b73[2996]]= !1;mxEdgeHandler[_0x2b73[202]][_0x2b73[2959]]= null;mxEdgeHandler[_0x2b73[202]][_0x2b73[2353]]= 0;mxEdgeHandler[_0x2b73[202]][_0x2b73[176]]= function(){this[_0x2b73[1179]]= this[_0x2b73[724]][_0x2b73[441]][_0x2b73[1179]];this[_0x2b73[2885]]= this[_0x2b73[1689]]();this[_0x2b73[2886]]= new mxConstraintHandler(this[_0x2b73[1179]]);this[_0x2b73[1525]]= [];this[_0x2b73[2997]]= this[_0x2b73[2998]](this[_0x2b73[724]]);this[_0x2b73[253]]= this[_0x2b73[2963]](this[_0x2b73[2997]]);this[_0x2b73[253]][_0x2b73[507]]= this[_0x2b73[1179]][_0x2b73[507]]!= mxConstants[_0x2b73[508]]?mxConstants[_0x2b73[2334]]:mxConstants[_0x2b73[508]];this[_0x2b73[253]][_0x2b73[176]](this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[1524]]());this[_0x2b73[253]][_0x2b73[1564]]= 0;this[_0x2b73[253]][_0x2b73[252]][_0x2b73[124]][_0x2b73[270]]= mxConstants[_0x2b73[2831]];mxEvent[_0x2b73[169]](this[_0x2b73[253]][_0x2b73[252]],_0x2b73[760],mxUtils[_0x2b73[885]](this,function(_0xff22x2){this[_0x2b73[1179]][_0x2b73[761]](_0xff22x2,this[_0x2b73[724]][_0x2b73[246]])}));mxEvent[_0x2b73[759]](this[_0x2b73[253]][_0x2b73[252]],mxUtils[_0x2b73[885]](this,function(_0xff22x2){this[_0x2b73[2771]]&& this[_0x2b73[2999]](_0xff22x2)?this[_0x2b73[3000]](this[_0x2b73[724]],_0xff22x2):this[_0x2b73[1179]][_0x2b73[758]](mxEvent.MOUSE_DOWN, new mxMouseEvent(_0xff22x2,this[_0x2b73[724]]))}),mxUtils[_0x2b73[885]](this,function(_0xff22x2){var _0xff22x4=this[_0x2b73[724]][_0x2b73[246]];if(null!= this[_0x2b73[1983]]){var _0xff22x5=mxUtils[_0x2b73[2196]](this[_0x2b73[1179]][_0x2b73[526]],mxEvent[_0x2b73[731]](_0xff22x2),mxEvent[_0x2b73[733]](_0xff22x2)),_0xff22x4=this[_0x2b73[1179]][_0x2b73[999]](_0xff22x5[_0x2b73[235]],_0xff22x5[_0x2b73[236]]);this[_0x2b73[1179]][_0x2b73[1730]](_0xff22x4)&& this[_0x2b73[1179]][_0x2b73[2688]](_0xff22x4,_0xff22x5[_0x2b73[235]],_0xff22x5[_0x2b73[236]])&& (_0xff22x4= null)};this[_0x2b73[1179]][_0x2b73[758]](mxEvent.MOUSE_MOVE, new mxMouseEvent(_0xff22x2,this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[248]](_0xff22x4)))}),mxUtils[_0x2b73[885]](this,function(_0xff22x2){this[_0x2b73[1179]][_0x2b73[758]](mxEvent.MOUSE_UP, new mxMouseEvent(_0xff22x2,this[_0x2b73[724]]))}));this[_0x2b73[574]]= null!= this[_0x2b73[724]][_0x2b73[963]]&& this[_0x2b73[724]][_0x2b73[963]][_0x2b73[252]][_0x2b73[265]]== this[_0x2b73[1179]][_0x2b73[526]];if(!this[_0x2b73[574]]){var _0xff22x2=this[_0x2b73[724]][_0x2b73[2089]](!0);null!= _0xff22x2&& (this[_0x2b73[574]]= null!= _0xff22x2[_0x2b73[963]]&& _0xff22x2[_0x2b73[963]][_0x2b73[252]][_0x2b73[265]]== this[_0x2b73[1179]][_0x2b73[526]]);this[_0x2b73[574]]|| (_0xff22x2= this[_0x2b73[724]][_0x2b73[2089]](!1),null!= _0xff22x2&& (this[_0x2b73[574]]= null!= _0xff22x2[_0x2b73[963]]&& _0xff22x2[_0x2b73[963]][_0x2b73[252]][_0x2b73[265]]== this[_0x2b73[1179]][_0x2b73[526]]))};if(this[_0x2b73[1179]][_0x2b73[2694]]()< mxGraphHandler[_0x2b73[202]][_0x2b73[2795]]|| 0>= mxGraphHandler[_0x2b73[202]][_0x2b73[2795]]){this[_0x2b73[2994]]= this[_0x2b73[3001]]()};this[_0x2b73[685]]= new mxPoint(this[_0x2b73[724]][_0x2b73[2079]][_0x2b73[235]],this[_0x2b73[724]][_0x2b73[2079]][_0x2b73[236]]);this[_0x2b73[2972]]= new mxRectangleShape( new mxRectangle,mxConstants.LABEL_HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR);this[_0x2b73[2972]][_0x2b73[1229]]= !1;this[_0x2b73[3002]](this[_0x2b73[2972]]);this[_0x2b73[2972]][_0x2b73[252]][_0x2b73[124]][_0x2b73[270]]= mxConstants[_0x2b73[3003]];mxEvent[_0x2b73[2733]](this[_0x2b73[2972]][_0x2b73[252]],this[_0x2b73[1179]],this[_0x2b73[724]]);this[_0x2b73[258]]()};mxEdgeHandler[_0x2b73[202]][_0x2b73[2999]]= function(_0xff22x2){return mxEvent[_0x2b73[774]](_0xff22x2)};mxEdgeHandler[_0x2b73[202]][_0x2b73[3004]]= function(_0xff22x2){return mxEvent[_0x2b73[774]](_0xff22x2)};mxEdgeHandler[_0x2b73[202]][_0x2b73[2998]]= function(_0xff22x2){return _0xff22x2[_0x2b73[439]]};mxEdgeHandler[_0x2b73[202]][_0x2b73[2963]]= function(_0xff22x2){_0xff22x2= new mxPolyline(_0xff22x2,this[_0x2b73[2975]]());_0xff22x2[_0x2b73[1307]]= this[_0x2b73[2976]]();_0xff22x2[_0x2b73[1522]]= this[_0x2b73[2977]]();return _0xff22x2};mxEdgeHandler[_0x2b73[202]][_0x2b73[2975]]= function(){return mxConstants[_0x2b73[3005]]};mxEdgeHandler[_0x2b73[202]][_0x2b73[2976]]= function(){return mxConstants[_0x2b73[3006]]};mxEdgeHandler[_0x2b73[202]][_0x2b73[2977]]= function(){return mxConstants[_0x2b73[3007]]};mxEdgeHandler[_0x2b73[202]][_0x2b73[2907]]= function(_0xff22x2){return !0};mxEdgeHandler[_0x2b73[202]][_0x2b73[1689]]= function(){var _0xff22x2= new mxCellMarker(this[_0x2b73[1179]]),_0xff22x3=this;_0xff22x2[_0x2b73[736]]= function(_0xff22x2){var _0xff22x5=mxCellMarker[_0x2b73[202]][_0x2b73[736]][_0x2b73[183]](this,arguments);if(!_0xff22x3[_0x2b73[2907]](_0xff22x5)){return null};var _0xff22x9=_0xff22x3[_0x2b73[1179]][_0x2b73[502]]();if(_0xff22x5== _0xff22x3[_0x2b73[724]][_0x2b73[246]]|| null!= _0xff22x5&& !_0xff22x3[_0x2b73[1179]][_0x2b73[2405]]&& _0xff22x9[_0x2b73[250]](_0xff22x5)){_0xff22x5= null};return _0xff22x5};_0xff22x2[_0x2b73[2872]]= function(_0xff22x2){var _0xff22x5=_0xff22x3[_0x2b73[1179]][_0x2b73[502]](),_0xff22x5=_0xff22x3[_0x2b73[1179]][_0x2b73[441]][_0x2b73[2292]](_0xff22x2,_0xff22x3[_0x2b73[1179]][_0x2b73[441]][_0x2b73[248]](_0xff22x5[_0x2b73[1709]](_0xff22x3[_0x2b73[724]][_0x2b73[246]],!_0xff22x3[_0x2b73[729]])),!_0xff22x3[_0x2b73[729]]),_0xff22x5=null!= _0xff22x5?_0xff22x5[_0x2b73[246]]:null;_0xff22x3[_0x2b73[267]]= _0xff22x3[_0x2b73[2909]](_0xff22x3[_0x2b73[729]]?_0xff22x2[_0x2b73[246]]:_0xff22x5,_0xff22x3[_0x2b73[729]]?_0xff22x5:_0xff22x2[_0x2b73[246]]);return null== _0xff22x3[_0x2b73[267]]};return _0xff22x2};mxEdgeHandler[_0x2b73[202]][_0x2b73[2909]]= function(_0xff22x2,_0xff22x3){return this[_0x2b73[1179]][_0x2b73[2500]](this[_0x2b73[724]][_0x2b73[246]],_0xff22x2,_0xff22x3)};mxEdgeHandler[_0x2b73[202]][_0x2b73[3001]]= function(){for(var _0xff22x2=this[_0x2b73[724]][_0x2b73[246]],_0xff22x3=[],_0xff22x4=0;_0xff22x4< this[_0x2b73[2997]][_0x2b73[67]];_0xff22x4++){if(this[_0x2b73[3008]](_0xff22x4)){var _0xff22x5=_0xff22x4== this[_0x2b73[2997]][_0x2b73[67]]- 1;if((_0xff22x5= 0== _0xff22x4|| _0xff22x5)|| this[_0x2b73[1179]][_0x2b73[2662]](_0xff22x2)){var _0xff22x9=this[_0x2b73[3009]](_0xff22x4);this[_0x2b73[3002]](_0xff22x9);mxClient[_0x2b73[754]]&& _0xff22x9[_0x2b73[252]][_0x2b73[57]](_0x2b73[1377],_0x2b73[130]);if(this[_0x2b73[3010]](_0xff22x4)){if(mxClient[_0x2b73[754]]){var _0xff22xa=mxUtils[_0x2b73[885]](this,function(_0xff22x2){_0xff22x2= mxUtils[_0x2b73[2196]](this[_0x2b73[1179]][_0x2b73[526]],mxEvent[_0x2b73[731]](_0xff22x2),mxEvent[_0x2b73[733]](_0xff22x2));return this[_0x2b73[1179]][_0x2b73[441]][_0x2b73[248]](this[_0x2b73[1179]][_0x2b73[999]](_0xff22x2[_0x2b73[235]],_0xff22x2[_0x2b73[236]]))});mxEvent[_0x2b73[2733]](_0xff22x9[_0x2b73[252]],this[_0x2b73[1179]],_0xff22xa)}else {_0xff22x9[_0x2b73[252]][_0x2b73[124]][_0x2b73[270]]= mxConstants[_0x2b73[3011]],mxEvent[_0x2b73[2733]](_0xff22x9[_0x2b73[252]],this[_0x2b73[1179]],this[_0x2b73[724]])}};_0xff22x3[_0x2b73[207]](_0xff22x9);_0xff22x5|| (this[_0x2b73[1525]][_0x2b73[207]]( new mxPoint(0,0)),_0xff22x9[_0x2b73[252]][_0x2b73[124]][_0x2b73[187]]= _0x2b73[188])}}};return _0xff22x3};mxEdgeHandler[_0x2b73[202]][_0x2b73[3010]]= function(_0xff22x2){return !0};mxEdgeHandler[_0x2b73[202]][_0x2b73[3008]]= function(_0xff22x2){return !0};mxEdgeHandler[_0x2b73[202]][_0x2b73[3009]]= function(_0xff22x2){if(null!= this[_0x2b73[2959]]){return new mxImageShape( new mxRectangle(0,0,this[_0x2b73[2959]][_0x2b73[117]],this[_0x2b73[2959]][_0x2b73[119]]),this[_0x2b73[2959]][_0x2b73[390]])};_0xff22x2= mxConstants[_0x2b73[2974]];this[_0x2b73[574]]&& (_0xff22x2-= 1);return new mxRectangleShape( new mxRectangle(0,0,_0xff22x2,_0xff22x2),mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)};mxEdgeHandler[_0x2b73[202]][_0x2b73[3002]]= function(_0xff22x2){this[_0x2b73[574]]?(_0xff22x2[_0x2b73[507]]= mxConstants[_0x2b73[1656]],_0xff22x2[_0x2b73[176]](this[_0x2b73[1179]][_0x2b73[526]])):(_0xff22x2[_0x2b73[507]]= this[_0x2b73[1179]][_0x2b73[507]]!= mxConstants[_0x2b73[508]]?mxConstants[_0x2b73[2334]]:mxConstants[_0x2b73[508]],_0xff22x2[_0x2b73[176]](this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[1524]]()))};mxEdgeHandler[_0x2b73[202]][_0x2b73[2986]]= function(_0xff22x2){if(null!= this[_0x2b73[2994]]){for(var _0xff22x3=this[_0x2b73[2353]],_0xff22x3=this[_0x2b73[2958]]&& (mxClient[_0x2b73[80]]|| 0< _0xff22x3)? new mxRectangle(_0xff22x2[_0x2b73[734]]()- _0xff22x3,_0xff22x2[_0x2b73[735]]()- _0xff22x3,2* _0xff22x3,2* _0xff22x3):null,_0xff22x4=0;_0xff22x4< this[_0x2b73[2994]][_0x2b73[67]];_0xff22x4++){if((_0xff22x2[_0x2b73[729]](this[_0x2b73[2994]][_0xff22x4])|| null!= _0xff22x3&& mxUtils[_0x2b73[1825]](this[_0x2b73[2994]][_0xff22x4][_0x2b73[1562]],_0xff22x3))&& _0x2b73[188]!= this[_0x2b73[2994]][_0xff22x4][_0x2b73[252]][_0x2b73[124]][_0x2b73[187]]){return _0xff22x4}}};if(_0xff22x2[_0x2b73[729]](this[_0x2b73[2972]])&& _0x2b73[188]!= this[_0x2b73[2972]][_0x2b73[252]][_0x2b73[124]][_0x2b73[187]]|| _0xff22x2[_0x2b73[729]](this[_0x2b73[724]][_0x2b73[963]])){if(!mxClient[_0x2b73[75]]&& !mxClient[_0x2b73[76]]|| _0x2b73[2822]!= _0xff22x2[_0x2b73[728]]()[_0x2b73[301]]){return mxEvent[_0x2b73[2987]]}};return null};mxEdgeHandler[_0x2b73[202]][_0x2b73[787]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=null,_0xff22x4=this[_0x2b73[2986]](_0xff22x3);null!= _0xff22x4&& (!_0xff22x3[_0x2b73[721]]()&& this[_0x2b73[1179]][_0x2b73[994]]()&& !this[_0x2b73[1179]][_0x2b73[2579]](_0xff22x3[_0x2b73[727]]()))&& (this[_0x2b73[2995]]&& this[_0x2b73[3004]](_0xff22x3[_0x2b73[727]]())?this[_0x2b73[3012]](this[_0x2b73[724]],_0xff22x4):(_0xff22x4!= mxEvent[_0x2b73[2987]]|| this[_0x2b73[1179]][_0x2b73[2628]](_0xff22x3[_0x2b73[736]]()))&& this[_0x2b73[861]](_0xff22x3[_0x2b73[730]](),_0xff22x3[_0x2b73[732]](),_0xff22x4),_0xff22x3[_0x2b73[722]]())};mxEdgeHandler[_0x2b73[202]][_0x2b73[861]]= function(_0xff22x2,_0xff22x3,_0xff22x4){this[_0x2b73[2739]]= _0xff22x2;this[_0x2b73[2740]]= _0xff22x3;this[_0x2b73[729]]= null== this[_0x2b73[2994]]?!1:0== _0xff22x4;this[_0x2b73[3013]]= null== this[_0x2b73[2994]]?!1:_0xff22x4== this[_0x2b73[2994]][_0x2b73[67]]- 1;this[_0x2b73[3014]]= _0xff22x4== mxEvent[_0x2b73[2987]];if(this[_0x2b73[729]]|| this[_0x2b73[3013]]){if(_0xff22x2= this[_0x2b73[724]][_0x2b73[246]],_0xff22x3= this[_0x2b73[1179]][_0x2b73[251]][_0x2b73[1709]](_0xff22x2,this[_0x2b73[729]]),null== _0xff22x3&& this[_0x2b73[1179]][_0x2b73[2661]](_0xff22x2,this[_0x2b73[729]])|| null!= _0xff22x3&& this[_0x2b73[1179]][_0x2b73[2551]](_0xff22x2,_0xff22x3,this[_0x2b73[729]])){this[_0x2b73[1983]]= _0xff22x4}}else {this[_0x2b73[1983]]= _0xff22x4}};mxEdgeHandler[_0x2b73[202]][_0x2b73[3015]]= function(_0xff22x2,_0xff22x3){return this[_0x2b73[724]][_0x2b73[238]]()};mxEdgeHandler[_0x2b73[202]][_0x2b73[3016]]= function(){return this[_0x2b73[1179]][_0x2b73[1020]]* this[_0x2b73[1179]][_0x2b73[441]][_0x2b73[255]]/ 2};mxEdgeHandler[_0x2b73[202]][_0x2b73[2689]]= function(_0xff22x2){var _0xff22x3= new mxPoint(_0xff22x2[_0x2b73[734]](),_0xff22x2[_0x2b73[735]]()),_0xff22x4=this[_0x2b73[3016]](),_0xff22x5=this[_0x2b73[1179]][_0x2b73[249]](),_0xff22x9=!1,_0xff22xa=!1;if(this[_0x2b73[2996]]&& 0< _0xff22x4){var _0xff22x12=function(_0xff22x2){if(null!= _0xff22x2){var _0xff22x5=_0xff22x2[_0x2b73[235]];Math[_0x2b73[425]](_0xff22x3[_0x2b73[235]]- _0xff22x5)< _0xff22x4&& (_0xff22x3[_0x2b73[235]]= _0xff22x5,_0xff22x9= !0);_0xff22x2= _0xff22x2[_0x2b73[236]];Math[_0x2b73[425]](_0xff22x3[_0x2b73[236]]- _0xff22x2)< _0xff22x4&& (_0xff22x3[_0x2b73[236]]= _0xff22x2,_0xff22xa= !0)}},_0xff22x13=function(_0xff22x2){null!= _0xff22x2&& _0xff22x12[_0x2b73[239]](this, new mxPoint(_0xff22x5[_0x2b73[2230]](_0xff22x2),_0xff22x5[_0x2b73[2228]](_0xff22x2)))};_0xff22x13[_0x2b73[239]](this,this[_0x2b73[724]][_0x2b73[2089]](!0));_0xff22x13[_0x2b73[239]](this,this[_0x2b73[724]][_0x2b73[2089]](!1));if(null!= this[_0x2b73[2997]]){for(_0xff22x13= 0;_0xff22x13< this[_0x2b73[2997]];_0xff22x13++){_0xff22x13!= this[_0x2b73[1983]]&& _0xff22x12[_0x2b73[239]](this,this[_0x2b73[2997]][_0xff22x13])}}};this[_0x2b73[1179]][_0x2b73[1018]](_0xff22x2[_0x2b73[727]]())&& (_0xff22x2= _0xff22x5[_0x2b73[255]],_0xff22x13= _0xff22x5[_0x2b73[513]],_0xff22x9|| (_0xff22x3[_0x2b73[235]]= (this[_0x2b73[1179]][_0x2b73[1021]](_0xff22x3[_0x2b73[235]]/ _0xff22x2- _0xff22x13[_0x2b73[235]])+ _0xff22x13[_0x2b73[235]])* _0xff22x2),_0xff22xa|| (_0xff22x3[_0x2b73[236]]= (this[_0x2b73[1179]][_0x2b73[1021]](_0xff22x3[_0x2b73[236]]/ _0xff22x2- _0xff22x13[_0x2b73[236]])+ _0xff22x13[_0x2b73[236]])* _0xff22x2));return _0xff22x3};mxEdgeHandler[_0x2b73[202]][_0x2b73[3017]]= function(_0xff22x2){this[_0x2b73[2886]][_0x2b73[2729]](_0xff22x2,this[_0x2b73[729]]);this[_0x2b73[2885]][_0x2b73[2871]](_0xff22x2);_0xff22x2= this[_0x2b73[2885]][_0x2b73[2868]]();var _0xff22x3=null;null!= this[_0x2b73[2886]][_0x2b73[2919]]&& null!= this[_0x2b73[2886]][_0x2b73[2920]]&& this[_0x2b73[2885]][_0x2b73[862]]();null!= _0xff22x2?_0xff22x3= _0xff22x2:null!= this[_0x2b73[2886]][_0x2b73[2920]]&& null!= this[_0x2b73[2886]][_0x2b73[2919]]&& (_0xff22x3= this[_0x2b73[2886]][_0x2b73[2919]]);return _0xff22x3};mxEdgeHandler[_0x2b73[202]][_0x2b73[3018]]= function(_0xff22x2){var _0xff22x3=this[_0x2b73[1179]][_0x2b73[1198]](this[_0x2b73[724]][_0x2b73[246]]),_0xff22x3=null!= _0xff22x3[_0x2b73[1525]]?_0xff22x3[_0x2b73[1525]][_0x2b73[1853]]():null;!this[_0x2b73[729]]&& !this[_0x2b73[3013]]?(this[_0x2b73[2196]](_0xff22x2,!1),null== _0xff22x3?_0xff22x3= [_0xff22x2]:_0xff22x3[this[_0x2b73[1983]]- 1]= _0xff22x2):this[_0x2b73[1179]][_0x2b73[2401]]&& (_0xff22x3= null);return _0xff22x3};mxEdgeHandler[_0x2b73[202]][_0x2b73[3019]]= function(_0xff22x2,_0xff22x3,_0xff22x4){var _0xff22x5=this[_0x2b73[729]]?_0xff22x4:this[_0x2b73[724]][_0x2b73[2089]](!0),_0xff22x9=this[_0x2b73[3013]]?_0xff22x4:this[_0x2b73[724]][_0x2b73[2089]](!1),_0xff22xa=this[_0x2b73[1179]][_0x2b73[2288]](_0xff22x2,_0xff22x5,!0),_0xff22x12=this[_0x2b73[1179]][_0x2b73[2288]](_0xff22x2,_0xff22x9,!1),_0xff22x13=this[_0x2b73[2886]][_0x2b73[2920]];null== _0xff22x13&& (_0xff22x13= new mxConnectionConstraint);this[_0x2b73[729]]?_0xff22xa= _0xff22x13:this[_0x2b73[3013]]&& (_0xff22x12= _0xff22x13);(!this[_0x2b73[729]]|| null!= _0xff22x5)&& _0xff22x2[_0x2b73[441]][_0x2b73[2289]](_0xff22x2,_0xff22x5,!0,_0xff22xa);(!this[_0x2b73[3013]]|| null!= _0xff22x9)&& _0xff22x2[_0x2b73[441]][_0x2b73[2289]](_0xff22x2,_0xff22x9,!1,_0xff22x12);if((this[_0x2b73[729]]|| this[_0x2b73[3013]])&& null== _0xff22x4){_0xff22x2[_0x2b73[2088]](_0xff22x3,this[_0x2b73[729]]),null== this[_0x2b73[2885]][_0x2b73[2869]]()&& (this[_0x2b73[267]]= this[_0x2b73[1179]][_0x2b73[2406]]?null:_0x2b73[110])};_0xff22x2[_0x2b73[441]][_0x2b73[2282]](_0xff22x2,this[_0x2b73[1525]],_0xff22x5,_0xff22x9);_0xff22x2[_0x2b73[441]][_0x2b73[2283]](_0xff22x2,_0xff22x5,_0xff22x9)};mxEdgeHandler[_0x2b73[202]][_0x2b73[788]]= function(_0xff22x2,_0xff22x3){if(null!= this[_0x2b73[1983]]&& null!= this[_0x2b73[2885]]){var _0xff22x4=this[_0x2b73[2689]](_0xff22x3);if(this[_0x2b73[3014]]){this[_0x2b73[685]][_0x2b73[235]]= _0xff22x4[_0x2b73[235]],this[_0x2b73[685]][_0x2b73[236]]= _0xff22x4[_0x2b73[236]]}else {this[_0x2b73[1525]]= this[_0x2b73[3018]](_0xff22x4);var _0xff22x5=this[_0x2b73[729]]|| this[_0x2b73[3013]]?this[_0x2b73[3017]](_0xff22x3):null,_0xff22x9=this[_0x2b73[3015]](_0xff22x4,null!= _0xff22x5?_0xff22x5[_0x2b73[246]]:null);this[_0x2b73[3019]](_0xff22x9,_0xff22x4,_0xff22x5);this[_0x2b73[3020]](null== this[_0x2b73[267]]?this[_0x2b73[2885]][_0x2b73[2853]]:this[_0x2b73[2885]][_0x2b73[2855]]);this[_0x2b73[2997]]= _0xff22x9[_0x2b73[439]];this[_0x2b73[1124]]= !0};this[_0x2b73[2932]]();mxEvent[_0x2b73[722]](_0xff22x3[_0x2b73[727]]());_0xff22x3[_0x2b73[722]]()}else {mxClient[_0x2b73[80]]&& null!= this[_0x2b73[2986]](_0xff22x3)&& _0xff22x3[_0x2b73[722]](!1)}};mxEdgeHandler[_0x2b73[202]][_0x2b73[789]]= function(_0xff22x2,_0xff22x3){if(null!= this[_0x2b73[1983]]&& null!= this[_0x2b73[2885]]){var _0xff22x4=this[_0x2b73[724]][_0x2b73[246]];if(_0xff22x3[_0x2b73[730]]()!= this[_0x2b73[2739]]|| _0xff22x3[_0x2b73[732]]()!= this[_0x2b73[2740]]){if(null!= this[_0x2b73[267]]){0< this[_0x2b73[267]][_0x2b73[67]]&& this[_0x2b73[1179]][_0x2b73[2580]](this[_0x2b73[267]])}else {if(this[_0x2b73[3014]]){this[_0x2b73[3021]](this[_0x2b73[724]],this[_0x2b73[685]][_0x2b73[235]],this[_0x2b73[685]][_0x2b73[236]])}else {if(this[_0x2b73[729]]|| this[_0x2b73[3013]]){var _0xff22x5=null;null!= this[_0x2b73[2886]][_0x2b73[2920]]&& null!= this[_0x2b73[2886]][_0x2b73[2919]]&& (_0xff22x5= this[_0x2b73[2886]][_0x2b73[2919]][_0x2b73[246]]);null== _0xff22x5&& this[_0x2b73[2885]][_0x2b73[2867]]()&& (_0xff22x5= this[_0x2b73[2885]][_0x2b73[2861]][_0x2b73[246]]);if(null!= _0xff22x5){_0xff22x4= this[_0x2b73[807]](_0xff22x4,_0xff22x5,this[_0x2b73[729]],this[_0x2b73[1179]][_0x2b73[2574]](_0xff22x3[_0x2b73[727]]())&& this[_0x2b73[2797]]&& this[_0x2b73[1179]][_0x2b73[2617]](),_0xff22x3)}else {if(this[_0x2b73[1179]][_0x2b73[2530]]()){_0xff22x5= this[_0x2b73[2997]][this[_0x2b73[729]]?0:this[_0x2b73[2997]][_0x2b73[67]]- 1];_0xff22x5[_0x2b73[235]]= _0xff22x5[_0x2b73[235]]/ this[_0x2b73[1179]][_0x2b73[441]][_0x2b73[255]]- this[_0x2b73[1179]][_0x2b73[441]][_0x2b73[513]][_0x2b73[235]];_0xff22x5[_0x2b73[236]]= _0xff22x5[_0x2b73[236]]/ this[_0x2b73[1179]][_0x2b73[441]][_0x2b73[255]]- this[_0x2b73[1179]][_0x2b73[441]][_0x2b73[513]][_0x2b73[236]];var _0xff22x9=this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[248]](this[_0x2b73[1179]][_0x2b73[502]]()[_0x2b73[1197]](_0xff22x4));null!= _0xff22x9&& (_0xff22x5[_0x2b73[235]]-= _0xff22x9[_0x2b73[2078]][_0x2b73[235]],_0xff22x5[_0x2b73[236]]-= _0xff22x9[_0x2b73[2078]][_0x2b73[236]]);_0xff22x5[_0x2b73[235]]-= this[_0x2b73[1179]][_0x2b73[1136]]/ this[_0x2b73[1179]][_0x2b73[441]][_0x2b73[255]];_0xff22x5[_0x2b73[236]]-= this[_0x2b73[1179]][_0x2b73[1137]]/ this[_0x2b73[1179]][_0x2b73[441]][_0x2b73[255]];this[_0x2b73[3022]](_0xff22x4,_0xff22x5,this[_0x2b73[729]])}}}else {this[_0x2b73[1124]]?this[_0x2b73[3023]](_0xff22x4,this[_0x2b73[1525]]):(this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[2263]](this[_0x2b73[724]][_0x2b73[246]]),this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[2259]](this[_0x2b73[724]][_0x2b73[246]]))}}}};null!= this[_0x2b73[2885]]&& (this[_0x2b73[862]](),_0xff22x4!= this[_0x2b73[724]][_0x2b73[246]]&& this[_0x2b73[1179]][_0x2b73[2450]](_0xff22x4));_0xff22x3[_0x2b73[722]]()}};mxEdgeHandler[_0x2b73[202]][_0x2b73[862]]= function(){this[_0x2b73[1525]]= this[_0x2b73[685]]= this[_0x2b73[1983]]= this[_0x2b73[267]]= null;this[_0x2b73[3013]]= this[_0x2b73[729]]= this[_0x2b73[3014]]= this[_0x2b73[1124]]= !1;this[_0x2b73[2885]][_0x2b73[862]]();this[_0x2b73[2886]][_0x2b73[862]]();this[_0x2b73[3020]](mxConstants.EDGE_SELECTION_COLOR);this[_0x2b73[258]]()};mxEdgeHandler[_0x2b73[202]][_0x2b73[3020]]= function(_0xff22x2){null!= this[_0x2b73[253]]&& (this[_0x2b73[253]][_0x2b73[1336]]= _0xff22x2)};mxEdgeHandler[_0x2b73[202]][_0x2b73[2196]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[518]](),_0xff22x5=this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[512]]();_0xff22x3&& (_0xff22x2[_0x2b73[235]]= this[_0x2b73[1179]][_0x2b73[1021]](_0xff22x2[_0x2b73[235]]),_0xff22x2[_0x2b73[236]]= this[_0x2b73[1179]][_0x2b73[1021]](_0xff22x2[_0x2b73[236]]));_0xff22x2[_0x2b73[235]]= Math[_0x2b73[488]](_0xff22x2[_0x2b73[235]]/ _0xff22x4- _0xff22x5[_0x2b73[235]]);_0xff22x2[_0x2b73[236]]= Math[_0x2b73[488]](_0xff22x2[_0x2b73[236]]/ _0xff22x4- _0xff22x5[_0x2b73[236]]);_0xff22x4= this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[248]](this[_0x2b73[1179]][_0x2b73[502]]()[_0x2b73[1197]](this[_0x2b73[724]][_0x2b73[246]]));null!= _0xff22x4&& (_0xff22x2[_0x2b73[235]]-= _0xff22x4[_0x2b73[2078]][_0x2b73[235]],_0xff22x2[_0x2b73[236]]-= _0xff22x4[_0x2b73[2078]][_0x2b73[236]]);return _0xff22x2};mxEdgeHandler[_0x2b73[202]][_0x2b73[3021]]= function(_0xff22x2,_0xff22x3,_0xff22x4){var _0xff22x5=this[_0x2b73[1179]][_0x2b73[502]](),_0xff22x9=_0xff22x5[_0x2b73[1721]](_0xff22x2[_0x2b73[246]]);if(null!= _0xff22x9){var _0xff22x9=_0xff22x9[_0x2b73[238]](),_0xff22xa=this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[2308]](_0xff22x2,_0xff22x3,_0xff22x4);_0xff22x9[_0x2b73[235]]= _0xff22xa[_0x2b73[235]];_0xff22x9[_0x2b73[236]]= _0xff22xa[_0x2b73[236]];var _0xff22x12=this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[255]];_0xff22x9[_0x2b73[1368]]= new mxPoint(0,0);_0xff22xa= this[_0x2b73[1179]][_0x2b73[441]][_0x2b73[245]](_0xff22x2,_0xff22x9);_0xff22x9[_0x2b73[1368]]= new mxPoint((_0xff22x3- _0xff22xa[_0x2b73[235]])/ _0xff22x12,(_0xff22x4- _0xff22xa[_0x2b73[236]])/ _0xff22x12);_0xff22x5[_0x2b73[1724]](_0xff22x2[_0x2b73[246]],_0xff22x9)}};mxEdgeHandler[_0x2b73[202]][_0x2b73[807]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){_0xff22x9= this[_0x2b73[1179]][_0x2b73[502]]();var _0xff22xa=_0xff22x9[_0x2b73[1197]](_0xff22x2);_0xff22x9[_0x2b73[473]]();try{if(_0xff22x5){var _0xff22x12=_0xff22x2[_0x2b73[238]]();_0xff22x9[_0x2b73[99]](_0xff22xa,_0xff22x12,_0xff22x9[_0x2b73[262]](_0xff22xa));var _0xff22x13=_0xff22x9[_0x2b73[1709]](_0xff22x2,!_0xff22x4);this[_0x2b73[1179]][_0x2b73[851]](_0xff22x12,_0xff22x13,!_0xff22x4);_0xff22x2= _0xff22x12};var _0xff22x14=this[_0x2b73[2886]][_0x2b73[2920]];null== _0xff22x14&& (_0xff22x14= new mxConnectionConstraint);this[_0x2b73[1179]][_0x2b73[851]](_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x14)}finally{_0xff22x9[_0x2b73[476]]()};return _0xff22x2};mxEdgeHandler[_0x2b73[202]][_0x2b73[3022]]= function(_0xff22x2,_0xff22x3,_0xff22x4){var _0xff22x5=this[_0x2b73[1179]][_0x2b73[502]](),_0xff22x9=_0xff22x5[_0x2b73[1721]](_0xff22x2);if(null!= _0xff22x9){_0xff22x5[_0x2b73[473]]();try{_0xff22x9= _0xff22x9[_0x2b73[238]](),_0xff22x9[_0x2b73[2007]](_0xff22x3,_0xff22x4),_0xff22x5[_0x2b73[1724]](_0xff22x2,_0xff22x9),this[_0x2b73[1179]][_0x2b73[851]](_0xff22x2,null,_0xff22x4, new mxConnectionConstraint)}finally{_0xff22x5[_0x2b73[476]]()}}};mxEdgeHandler[_0x2b73[202]][_0x2b73[3023]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=this[_0x2b73[1179]][_0x2b73[502]](),_0xff22x5=_0xff22x4[_0x2b73[1721]](_0xff22x2);null!= _0xff22x5&& (_0xff22x5= _0xff22x5[_0x2b73[238]](),_0xff22x5[_0x2b73[1525]]= _0xff22x3,_0xff22x4[_0x2b73[1724]](_0xff22x2,_0xff22x5))};mxEdgeHandler[_0x2b73[202]][_0x2b73[3000]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=mxUtils[_0x2b73[2196]](this[_0x2b73[1179]][_0x2b73[526]],mxEvent[_0x2b73[731]](_0xff22x3),mxEvent[_0x2b73[733]](_0xff22x3)),_0xff22x5=this[_0x2b73[1179]][_0x2b73[1018]](_0xff22x3);this[_0x2b73[2196]](_0xff22x4,_0xff22x5);this[_0x2b73[3024]](_0xff22x2,_0xff22x4[_0x2b73[235]],_0xff22x4[_0x2b73[236]]);mxEvent[_0x2b73[722]](_0xff22x3)};mxEdgeHandler[_0x2b73[202]][_0x2b73[3024]]= function(_0xff22x2,_0xff22x3,_0xff22x4){var _0xff22x5=this[_0x2b73[1179]][_0x2b73[1198]](_0xff22x2[_0x2b73[246]]);_0xff22x3= new mxPoint(_0xff22x3,_0xff22x4);if(null!= _0xff22x5){_0xff22x5= _0xff22x5[_0x2b73[238]]();_0xff22x4= this[_0x2b73[1179]][_0x2b73[441]][_0x2b73[513]];var _0xff22x9=this[_0x2b73[1179]][_0x2b73[441]][_0x2b73[255]];_0xff22x4= mxUtils[_0x2b73[3025]](_0xff22x2,(_0xff22x3[_0x2b73[235]]+ _0xff22x4[_0x2b73[235]])* _0xff22x9,(_0xff22x3[_0x2b73[236]]+ _0xff22x4[_0x2b73[236]])* _0xff22x9);null== _0xff22x5[_0x2b73[1525]]?_0xff22x5[_0x2b73[1525]]= [_0xff22x3]:_0xff22x5[_0x2b73[1525]][_0x2b73[300]](_0xff22x4,0,_0xff22x3);this[_0x2b73[1179]][_0x2b73[502]]()[_0x2b73[1724]](_0xff22x2[_0x2b73[246]],_0xff22x5);this[_0x2b73[515]]();this[_0x2b73[176]]()}};mxEdgeHandler[_0x2b73[202]][_0x2b73[3012]]= function(_0xff22x2,_0xff22x3){if(0< _0xff22x3&& _0xff22x3< this[_0x2b73[2997]][_0x2b73[67]]- 1){var _0xff22x4=this[_0x2b73[1179]][_0x2b73[1198]](this[_0x2b73[724]][_0x2b73[246]]);null!= _0xff22x4&& null!= _0xff22x4[_0x2b73[1525]]&& (_0xff22x4= _0xff22x4[_0x2b73[238]](),_0xff22x4[_0x2b73[1525]][_0x2b73[300]](_0xff22x3- 1,1),this[_0x2b73[1179]][_0x2b73[502]]()[_0x2b73[1724]](_0xff22x2[_0x2b73[246]],_0xff22x4),this[_0x2b73[515]](),this[_0x2b73[176]]())}};mxEdgeHandler[_0x2b73[202]][_0x2b73[3026]]= function(_0xff22x2){_0xff22x2= 0== _0xff22x2;var _0xff22x3=this[_0x2b73[724]][_0x2b73[246]],_0xff22x4=this[_0x2b73[1179]][_0x2b73[502]]()[_0x2b73[1709]](_0xff22x3,_0xff22x2),_0xff22x5=mxConstants[_0x2b73[2984]];null!= _0xff22x4&& !this[_0x2b73[1179]][_0x2b73[2551]](_0xff22x3,_0xff22x4,_0xff22x2)|| null== _0xff22x4&& !this[_0x2b73[1179]][_0x2b73[2661]](_0xff22x3,_0xff22x2)?_0xff22x5= mxConstants[_0x2b73[3027]]:null!= _0xff22x4&& this[_0x2b73[1179]][_0x2b73[2551]](_0xff22x3,_0xff22x4,_0xff22x2)&& (_0xff22x5= mxConstants[_0x2b73[3028]]);return _0xff22x5};mxEdgeHandler[_0x2b73[202]][_0x2b73[258]]= function(){this[_0x2b73[2997]]= this[_0x2b73[724]][_0x2b73[439]][_0x2b73[1853]]();var _0xff22x2=this[_0x2b73[724]][_0x2b73[246]],_0xff22x3=mxConstants[_0x2b73[3029]];this[_0x2b73[685]]= new mxPoint(this[_0x2b73[724]][_0x2b73[2079]][_0x2b73[235]],this[_0x2b73[724]][_0x2b73[2079]][_0x2b73[236]]);this[_0x2b73[2972]][_0x2b73[1562]]= new mxRectangle(Math[_0x2b73[488]](this[_0x2b73[685]][_0x2b73[235]]- _0xff22x3/ 2),Math[_0x2b73[488]](this[_0x2b73[685]][_0x2b73[236]]- _0xff22x3/ 2),_0xff22x3,_0xff22x3);this[_0x2b73[2972]][_0x2b73[258]]();_0xff22x3= this[_0x2b73[1179]][_0x2b73[2183]](_0xff22x2);null!= _0xff22x3&& 0< _0xff22x3[_0x2b73[67]]&& this[_0x2b73[1179]][_0x2b73[2628]](_0xff22x2)?this[_0x2b73[2972]][_0x2b73[252]][_0x2b73[124]][_0x2b73[187]]= _0x2b73[189]:this[_0x2b73[2972]][_0x2b73[252]][_0x2b73[124]][_0x2b73[187]]= _0x2b73[188];if(null!= this[_0x2b73[2994]]&& 0< this[_0x2b73[2994]][_0x2b73[67]]){var _0xff22x4=this[_0x2b73[2997]][_0x2b73[67]]- 1,_0xff22x2=this[_0x2b73[2997]][0],_0xff22x5=this[_0x2b73[2997]][0][_0x2b73[236]],_0xff22x3=this[_0x2b73[2994]][0][_0x2b73[1562]];this[_0x2b73[2994]][0][_0x2b73[1562]]= new mxRectangle(Math[_0x2b73[488]](this[_0x2b73[2997]][0][_0x2b73[235]]- _0xff22x3[_0x2b73[117]]/ 2),Math[_0x2b73[488]](_0xff22x5- _0xff22x3[_0x2b73[119]]/ 2),_0xff22x3[_0x2b73[117]],_0xff22x3[_0x2b73[119]]);this[_0x2b73[2994]][0][_0x2b73[1334]]= this[_0x2b73[3026]](0);this[_0x2b73[2994]][0][_0x2b73[258]]();var _0xff22x5=this[_0x2b73[2997]][_0xff22x4],_0xff22x9=this[_0x2b73[2997]][_0xff22x4][_0x2b73[235]],_0xff22x4=this[_0x2b73[2997]][_0xff22x4][_0x2b73[236]],_0xff22xa=this[_0x2b73[2994]][_0x2b73[67]]- 1,_0xff22x3=this[_0x2b73[2994]][_0xff22xa][_0x2b73[1562]];this[_0x2b73[2994]][_0xff22xa][_0x2b73[1562]]= new mxRectangle(Math[_0x2b73[488]](_0xff22x9- _0xff22x3[_0x2b73[117]]/ 2),Math[_0x2b73[488]](_0xff22x4- _0xff22x3[_0x2b73[119]]/ 2),_0xff22x3[_0x2b73[117]],_0xff22x3[_0x2b73[119]]);this[_0x2b73[2994]][_0xff22xa][_0x2b73[1334]]= this[_0x2b73[3026]](_0xff22xa);this[_0x2b73[2994]][_0xff22xa][_0x2b73[258]]();this[_0x2b73[3030]](_0xff22x2,_0xff22x5)};this[_0x2b73[2932]]()};mxEdgeHandler[_0x2b73[202]][_0x2b73[3030]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=this[_0x2b73[1179]][_0x2b73[502]]()[_0x2b73[1721]](this[_0x2b73[724]][_0x2b73[246]])[_0x2b73[1525]];if(null!= _0xff22x4){null== this[_0x2b73[1525]]&& (this[_0x2b73[1525]]= []);for(var _0xff22x5=1;_0xff22x5< this[_0x2b73[2994]][_0x2b73[67]]- 1;_0xff22x5++){if(null!= this[_0x2b73[2994]][_0xff22x5]){if(null!= this[_0x2b73[2997]][_0xff22x5]){var _0xff22x9=this[_0x2b73[2997]][_0xff22x5][_0x2b73[235]],_0xff22xa=this[_0x2b73[2997]][_0xff22x5][_0x2b73[236]],_0xff22x12=this[_0x2b73[2994]][_0xff22x5][_0x2b73[1562]];this[_0x2b73[2994]][_0xff22x5][_0x2b73[252]][_0x2b73[124]][_0x2b73[187]]= _0x2b73[189];this[_0x2b73[2994]][_0xff22x5][_0x2b73[1562]]= new mxRectangle(Math[_0x2b73[488]](_0xff22x9- _0xff22x12[_0x2b73[117]]/ 2),Math[_0x2b73[488]](_0xff22xa- _0xff22x12[_0x2b73[119]]/ 2),_0xff22x12[_0x2b73[117]],_0xff22x12[_0x2b73[119]]);this[_0x2b73[2994]][_0xff22x5][_0x2b73[258]]();this[_0x2b73[1525]][_0xff22x5- 1]= _0xff22x4[_0xff22x5- 1]}else {this[_0x2b73[2994]][_0xff22x5][_0x2b73[515]](),this[_0x2b73[2994]][_0xff22x5]= null}}}}};mxEdgeHandler[_0x2b73[202]][_0x2b73[2932]]= function(){if(this[_0x2b73[3014]]){var _0xff22x2=mxConstants[_0x2b73[3029]],_0xff22x2= new mxRectangle(Math[_0x2b73[488]](this[_0x2b73[685]][_0x2b73[235]]- _0xff22x2/ 2),Math[_0x2b73[488]](this[_0x2b73[685]][_0x2b73[236]]- _0xff22x2/ 2),_0xff22x2,_0xff22x2);this[_0x2b73[2972]][_0x2b73[1562]]= _0xff22x2;this[_0x2b73[2972]][_0x2b73[258]]()}else {this[_0x2b73[253]][_0x2b73[1525]]= this[_0x2b73[2997]],this[_0x2b73[253]][_0x2b73[258]]()}};mxEdgeHandler[_0x2b73[202]][_0x2b73[515]]= function(){null!= this[_0x2b73[2885]]&& (this[_0x2b73[2885]][_0x2b73[515]](),this[_0x2b73[2885]]= null);null!= this[_0x2b73[253]]&& (this[_0x2b73[253]][_0x2b73[515]](),this[_0x2b73[253]]= null);null!= this[_0x2b73[2972]]&& (this[_0x2b73[2972]][_0x2b73[515]](),this[_0x2b73[2972]]= null);null!= this[_0x2b73[2886]]&& (this[_0x2b73[2886]][_0x2b73[515]](),this[_0x2b73[2886]]= null);if(null!= this[_0x2b73[2994]]){for(var _0xff22x2=0;_0xff22x2< this[_0x2b73[2994]][_0x2b73[67]];_0xff22x2++){null!= this[_0x2b73[2994]][_0xff22x2]&& (this[_0x2b73[2994]][_0xff22x2][_0x2b73[515]](),this[_0x2b73[2994]][_0xff22x2]= null)}}};function mxElbowEdgeHandler(_0xff22x2){mxEdgeHandler[_0x2b73[239]](this,_0xff22x2)}mxUtils[_0x2b73[1284]](mxElbowEdgeHandler,mxEdgeHandler);mxElbowEdgeHandler[_0x2b73[202]]= new mxEdgeHandler;mxElbowEdgeHandler[_0x2b73[202]][_0x2b73[196]]= mxElbowEdgeHandler;mxElbowEdgeHandler[_0x2b73[202]][_0x2b73[3031]]= !0;mxElbowEdgeHandler[_0x2b73[202]][_0x2b73[3032]]= _0x2b73[130]!= mxClient[_0x2b73[90]]?_0x2b73[3033]:_0x2b73[110];mxElbowEdgeHandler[_0x2b73[202]][_0x2b73[3001]]= function(){var _0xff22x2=[],_0xff22x3=this[_0x2b73[3009]](0);this[_0x2b73[3002]](_0xff22x3);_0xff22x3[_0x2b73[252]][_0x2b73[124]][_0x2b73[270]]= mxConstants[_0x2b73[3011]];mxEvent[_0x2b73[2733]](_0xff22x3[_0x2b73[252]],this[_0x2b73[1179]],this[_0x2b73[724]]);_0xff22x2[_0x2b73[207]](_0xff22x3);mxClient[_0x2b73[754]]&& _0xff22x3[_0x2b73[252]][_0x2b73[57]](_0x2b73[1377],_0x2b73[130]);_0xff22x2[_0x2b73[207]](this[_0x2b73[3034]]());this[_0x2b73[1525]][_0x2b73[207]]( new mxPoint(0,0));_0xff22x3= this[_0x2b73[3009]](2);this[_0x2b73[3002]](_0xff22x3);_0xff22x3[_0x2b73[252]][_0x2b73[124]][_0x2b73[270]]= mxConstants[_0x2b73[3011]];mxEvent[_0x2b73[2733]](_0xff22x3[_0x2b73[252]],this[_0x2b73[1179]],this[_0x2b73[724]]);_0xff22x2[_0x2b73[207]](_0xff22x3);mxClient[_0x2b73[754]]&& _0xff22x3[_0x2b73[252]][_0x2b73[57]](_0x2b73[1377],_0x2b73[130]);return _0xff22x2};mxElbowEdgeHandler[_0x2b73[202]][_0x2b73[3034]]= function(){var _0xff22x2=this[_0x2b73[3009]]();this[_0x2b73[3002]](_0xff22x2);var _0xff22x3=this[_0x2b73[3035]]();_0xff22x2[_0x2b73[252]][_0x2b73[124]][_0x2b73[270]]= _0xff22x3;_0xff22x3= mxUtils[_0x2b73[885]](this,function(_0xff22x2){!mxEvent[_0x2b73[721]](_0xff22x2)&& this[_0x2b73[3031]]&& (this[_0x2b73[1179]][_0x2b73[854]](this[_0x2b73[724]][_0x2b73[246]],_0xff22x2),mxEvent[_0x2b73[722]](_0xff22x2))});mxEvent[_0x2b73[2733]](_0xff22x2[_0x2b73[252]],this[_0x2b73[1179]],this[_0x2b73[724]],null,null,null,_0xff22x3);this[_0x2b73[1179]][_0x2b73[2662]](this[_0x2b73[724]][_0x2b73[246]])|| (_0xff22x2[_0x2b73[252]][_0x2b73[124]][_0x2b73[495]]= _0x2b73[130]);return _0xff22x2};mxElbowEdgeHandler[_0x2b73[202]][_0x2b73[3035]]= function(){return this[_0x2b73[724]][_0x2b73[124]][mxConstants[_0x2b73[2294]]]== mxEdgeStyle[_0x2b73[2570]]|| this[_0x2b73[724]][_0x2b73[124]][mxConstants[_0x2b73[2294]]]== mxConstants[_0x2b73[3036]]|| (this[_0x2b73[724]][_0x2b73[124]][mxConstants[_0x2b73[2294]]]== mxEdgeStyle[_0x2b73[2568]]|| this[_0x2b73[724]][_0x2b73[124]][mxConstants[_0x2b73[2294]]]== mxConstants[_0x2b73[3037]])&& this[_0x2b73[724]][_0x2b73[124]][mxConstants[_0x2b73[2231]]]== mxConstants[_0x2b73[2232]]?_0x2b73[3038]:_0x2b73[3039]};mxElbowEdgeHandler[_0x2b73[202]][_0x2b73[2597]]= function(_0xff22x2){var _0xff22x3=null;if(null!= this[_0x2b73[2994]]&& null!= this[_0x2b73[2994]][1]&& (_0xff22x2== this[_0x2b73[2994]][1][_0x2b73[252]]|| _0xff22x2[_0x2b73[265]]== this[_0x2b73[2994]][1][_0x2b73[252]])){_0xff22x3= this[_0x2b73[3032]],_0xff22x3= mxResources[_0x2b73[203]](_0xff22x3)|| _0xff22x3};return _0xff22x3};mxElbowEdgeHandler[_0x2b73[202]][_0x2b73[2196]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[518]](),_0xff22x5=this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[512]](),_0xff22x9=this[_0x2b73[724]][_0x2b73[2078]];_0xff22x3&& (_0xff22x2[_0x2b73[235]]= this[_0x2b73[1179]][_0x2b73[1021]](_0xff22x2[_0x2b73[235]]),_0xff22x2[_0x2b73[236]]= this[_0x2b73[1179]][_0x2b73[1021]](_0xff22x2[_0x2b73[236]]));_0xff22x2[_0x2b73[235]]= Math[_0x2b73[488]](_0xff22x2[_0x2b73[235]]/ _0xff22x4- _0xff22x5[_0x2b73[235]]- _0xff22x9[_0x2b73[235]]);_0xff22x2[_0x2b73[236]]= Math[_0x2b73[488]](_0xff22x2[_0x2b73[236]]/ _0xff22x4- _0xff22x5[_0x2b73[236]]- _0xff22x9[_0x2b73[236]])};mxElbowEdgeHandler[_0x2b73[202]][_0x2b73[3030]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=this[_0x2b73[1179]][_0x2b73[502]]()[_0x2b73[1721]](this[_0x2b73[724]][_0x2b73[246]])[_0x2b73[1525]],_0xff22x4=null!= _0xff22x4?_0xff22x4[0]:null,_0xff22x4=null== _0xff22x4? new mxPoint(_0xff22x2[_0x2b73[235]]+ (_0xff22x3[_0x2b73[235]]- _0xff22x2[_0x2b73[235]])/ 2,_0xff22x2[_0x2b73[236]]+ (_0xff22x3[_0x2b73[236]]- _0xff22x2[_0x2b73[236]])/ 2): new mxPoint(this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[255]]* (_0xff22x4[_0x2b73[235]]+ this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[513]][_0x2b73[235]]+ this[_0x2b73[724]][_0x2b73[2078]][_0x2b73[235]]),this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[255]]* (_0xff22x4[_0x2b73[236]]+ this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[513]][_0x2b73[236]]+ this[_0x2b73[724]][_0x2b73[2078]][_0x2b73[236]])),_0xff22x5=this[_0x2b73[2994]][1][_0x2b73[1562]],_0xff22x9=_0xff22x5[_0x2b73[117]],_0xff22x5=_0xff22x5[_0x2b73[119]];null== this[_0x2b73[2959]]&& (_0xff22x5= _0xff22x9= mxConstants[_0x2b73[2974]]);var _0xff22xa= new mxRectangle(Math[_0x2b73[488]](_0xff22x4[_0x2b73[235]]- _0xff22x9/ 2),Math[_0x2b73[488]](_0xff22x4[_0x2b73[236]]- _0xff22x5/ 2),_0xff22x9,_0xff22x5);null== this[_0x2b73[2959]]&& (_0x2b73[188]!= this[_0x2b73[2972]][_0x2b73[252]][_0x2b73[124]][_0x2b73[187]]&& mxUtils[_0x2b73[1825]](_0xff22xa,this[_0x2b73[2972]][_0x2b73[1562]]))&& (_0xff22x9+= 3,_0xff22x5+= 3,_0xff22xa= new mxRectangle(Math[_0x2b73[488]](_0xff22x4[_0x2b73[235]]- _0xff22x9/ 2),Math[_0x2b73[488]](_0xff22x4[_0x2b73[236]]- _0xff22x5/ 2),_0xff22x9,_0xff22x5));this[_0x2b73[2994]][1][_0x2b73[1562]]= _0xff22xa;this[_0x2b73[2994]][1][_0x2b73[258]]()};function mxEdgeSegmentHandler(_0xff22x2){mxEdgeHandler[_0x2b73[239]](this,_0xff22x2)}mxUtils[_0x2b73[1284]](mxEdgeSegmentHandler,mxEdgeHandler);mxEdgeSegmentHandler[_0x2b73[202]]= new mxElbowEdgeHandler;mxEdgeSegmentHandler[_0x2b73[202]][_0x2b73[196]]= mxEdgeSegmentHandler;mxEdgeSegmentHandler[_0x2b73[202]][_0x2b73[3018]]= function(_0xff22x2){if(this[_0x2b73[729]]|| this[_0x2b73[3013]]){return mxElbowEdgeHandler[_0x2b73[202]][_0x2b73[3018]][_0x2b73[183]](this,arguments)};this[_0x2b73[2196]](_0xff22x2,!1);var _0xff22x3=this[_0x2b73[724]][_0x2b73[439]],_0xff22x4=_0xff22x3[0][_0x2b73[238]]();this[_0x2b73[2196]](_0xff22x4,!1);for(var _0xff22x5=[],_0xff22x9=1;_0xff22x9< _0xff22x3[_0x2b73[67]];_0xff22x9++){var _0xff22xa=_0xff22x3[_0xff22x9][_0x2b73[238]]();this[_0x2b73[2196]](_0xff22xa,!1);_0xff22x9== this[_0x2b73[1983]]&& (_0xff22x4[_0x2b73[235]]== _0xff22xa[_0x2b73[235]]?(_0xff22x4[_0x2b73[235]]= _0xff22x2[_0x2b73[235]],_0xff22xa[_0x2b73[235]]= _0xff22x2[_0x2b73[235]]):(_0xff22x4[_0x2b73[236]]= _0xff22x2[_0x2b73[236]],_0xff22xa[_0x2b73[236]]= _0xff22x2[_0x2b73[236]]));_0xff22x9< _0xff22x3[_0x2b73[67]]- 1&& _0xff22x5[_0x2b73[207]](_0xff22xa);_0xff22x4= _0xff22xa};if(1== _0xff22x5[_0x2b73[67]]){if(_0xff22x4= this[_0x2b73[724]][_0x2b73[441]],_0xff22x9= this[_0x2b73[724]][_0x2b73[2089]](!0),_0xff22xa= this[_0x2b73[724]][_0x2b73[2089]](!1),null!= _0xff22xa& null!= _0xff22x9){var _0xff22x12=this[_0x2b73[724]][_0x2b73[2078]][_0x2b73[235]],_0xff22x13=this[_0x2b73[724]][_0x2b73[2078]][_0x2b73[236]];mxUtils[_0x2b73[442]](_0xff22xa,_0xff22x5[0][_0x2b73[235]]+ _0xff22x12,_0xff22x5[0][_0x2b73[236]]+ _0xff22x13)?_0xff22x3[1][_0x2b73[236]]== _0xff22x3[2][_0x2b73[236]]?_0xff22x5[0][_0x2b73[236]]= _0xff22x4[_0x2b73[2228]](_0xff22x9)- _0xff22x13:_0xff22x5[0][_0x2b73[235]]= _0xff22x4[_0x2b73[2230]](_0xff22x9)- _0xff22x12:mxUtils[_0x2b73[442]](_0xff22x9,_0xff22x5[0][_0x2b73[235]]+ _0xff22x12,_0xff22x5[0][_0x2b73[236]]+ _0xff22x13)&& (_0xff22x3[1][_0x2b73[236]]== _0xff22x3[0][_0x2b73[236]]?_0xff22x5[0][_0x2b73[236]]= _0xff22x4[_0x2b73[2228]](_0xff22xa)- _0xff22x13:_0xff22x5[0][_0x2b73[235]]= _0xff22x4[_0x2b73[2230]](_0xff22xa)- _0xff22x12)}}else {0== _0xff22x5[_0x2b73[67]]&& (_0xff22x5= [_0xff22x2])};return _0xff22x5};mxEdgeSegmentHandler[_0x2b73[202]][_0x2b73[3001]]= function(){var _0xff22x2=[],_0xff22x3=this[_0x2b73[3009]](0);this[_0x2b73[3002]](_0xff22x3);_0xff22x3[_0x2b73[252]][_0x2b73[124]][_0x2b73[270]]= mxConstants[_0x2b73[3011]];mxEvent[_0x2b73[2733]](_0xff22x3[_0x2b73[252]],this[_0x2b73[1179]],this[_0x2b73[724]]);_0xff22x2[_0x2b73[207]](_0xff22x3);mxClient[_0x2b73[754]]&& _0xff22x3[_0x2b73[252]][_0x2b73[57]](_0x2b73[1377],_0x2b73[130]);var _0xff22x4=this[_0x2b73[724]][_0x2b73[439]];if(this[_0x2b73[1179]][_0x2b73[2662]](this[_0x2b73[724]][_0x2b73[246]])){null== this[_0x2b73[1525]]&& (this[_0x2b73[1525]]= []);for(var _0xff22x5=0;_0xff22x5< _0xff22x4[_0x2b73[67]]- 1;_0xff22x5++){_0xff22x3= this[_0x2b73[3034]](),_0xff22x2[_0x2b73[207]](_0xff22x3),_0xff22x3[_0x2b73[252]][_0x2b73[124]][_0x2b73[270]]= 0== _0xff22x4[_0xff22x5][_0x2b73[235]]- _0xff22x4[_0xff22x5+ 1][_0x2b73[235]]?_0x2b73[3039]:_0x2b73[3038],this[_0x2b73[1525]][_0x2b73[207]]( new mxPoint(0,0)),mxClient[_0x2b73[754]]&& _0xff22x3[_0x2b73[252]][_0x2b73[57]](_0x2b73[1377],_0x2b73[130])}};_0xff22x3= this[_0x2b73[3009]](_0xff22x4[_0x2b73[67]]);this[_0x2b73[3002]](_0xff22x3);_0xff22x3[_0x2b73[252]][_0x2b73[124]][_0x2b73[270]]= mxConstants[_0x2b73[3011]];mxEvent[_0x2b73[2733]](_0xff22x3[_0x2b73[252]],this[_0x2b73[1179]],this[_0x2b73[724]]);_0xff22x2[_0x2b73[207]](_0xff22x3);mxClient[_0x2b73[754]]&& _0xff22x3[_0x2b73[252]][_0x2b73[57]](_0x2b73[1377],_0x2b73[130]);return _0xff22x2};mxEdgeSegmentHandler[_0x2b73[202]][_0x2b73[258]]= function(){this[_0x2b73[802]]();mxEdgeHandler[_0x2b73[202]][_0x2b73[258]][_0x2b73[183]](this,arguments)};mxEdgeSegmentHandler[_0x2b73[202]][_0x2b73[802]]= function(){if(null!= this[_0x2b73[2994]]){for(var _0xff22x2=0;_0xff22x2< this[_0x2b73[2994]][_0x2b73[67]];_0xff22x2++){null!= this[_0x2b73[2994]][_0xff22x2]&& (this[_0x2b73[2994]][_0xff22x2][_0x2b73[515]](),this[_0x2b73[2994]][_0xff22x2]= null)};this[_0x2b73[2994]]= this[_0x2b73[3001]]()}};mxEdgeSegmentHandler[_0x2b73[202]][_0x2b73[3030]]= function(_0xff22x2,_0xff22x3){if(this[_0x2b73[1179]][_0x2b73[2662]](this[_0x2b73[724]][_0x2b73[246]])){var _0xff22x4=mxConstants[_0x2b73[2974]],_0xff22x5=this[_0x2b73[724]][_0x2b73[439]];if(null!= _0xff22x5&& 1< _0xff22x5[_0x2b73[67]]){for(var _0xff22x9=0;_0xff22x9< this[_0x2b73[724]][_0x2b73[439]][_0x2b73[67]]- 1;_0xff22x9++){if(null!= this[_0x2b73[2994]][_0xff22x9+ 1]){_0xff22x2= _0xff22x5[_0xff22x9];_0xff22x3= _0xff22x5[_0xff22x9+ 1];var _0xff22xa= new mxPoint(_0xff22x2[_0x2b73[235]]+ (_0xff22x3[_0x2b73[235]]- _0xff22x2[_0x2b73[235]])/ 2,_0xff22x2[_0x2b73[236]]+ (_0xff22x3[_0x2b73[236]]- _0xff22x2[_0x2b73[236]])/ 2);this[_0x2b73[2994]][_0xff22x9+ 1][_0x2b73[1562]]= new mxRectangle(Math[_0x2b73[488]](_0xff22xa[_0x2b73[235]]- _0xff22x4/ 2),Math[_0x2b73[488]](_0xff22xa[_0x2b73[236]]- _0xff22x4/ 2),_0xff22x4,_0xff22x4);this[_0x2b73[2994]][_0xff22x9+ 1][_0x2b73[258]]()}}}}};mxEdgeSegmentHandler[_0x2b73[202]][_0x2b73[3023]]= function(_0xff22x2,_0xff22x3){_0xff22x3= [];var _0xff22x4=this[_0x2b73[2997]];if(1< _0xff22x4[_0x2b73[67]]){for(var _0xff22x5=_0xff22x4[0],_0xff22x9=_0xff22x4[1],_0xff22xa=2;_0xff22xa< _0xff22x4[_0x2b73[67]];_0xff22xa++){var _0xff22x12=_0xff22x4[_0xff22xa];if((Math[_0x2b73[488]](_0xff22x5[_0x2b73[235]])!= Math[_0x2b73[488]](_0xff22x9[_0x2b73[235]])|| Math[_0x2b73[488]](_0xff22x9[_0x2b73[235]])!= Math[_0x2b73[488]](_0xff22x12[_0x2b73[235]]))&& (Math[_0x2b73[488]](_0xff22x5[_0x2b73[236]])!= Math[_0x2b73[488]](_0xff22x9[_0x2b73[236]])|| Math[_0x2b73[488]](_0xff22x9[_0x2b73[236]])!= Math[_0x2b73[488]](_0xff22x12[_0x2b73[236]]))){_0xff22x5= _0xff22x9,_0xff22x9= _0xff22x9[_0x2b73[238]](),this[_0x2b73[2196]](_0xff22x9,!1),_0xff22x3[_0x2b73[207]](_0xff22x9)};_0xff22x9= _0xff22x12}};mxElbowEdgeHandler[_0x2b73[202]][_0x2b73[3023]][_0x2b73[183]](this,arguments)};function mxKeyHandler(_0xff22x2,_0xff22x3){null!= _0xff22x2&& (this[_0x2b73[1179]]= _0xff22x2,this[_0x2b73[772]]= _0xff22x3|| document[_0x2b73[158]],this[_0x2b73[3040]]= [],this[_0x2b73[3041]]= [],this[_0x2b73[3042]]= [],this[_0x2b73[3043]]= [],mxEvent[_0x2b73[169]](this[_0x2b73[772]],_0x2b73[2123],mxUtils[_0x2b73[885]](this,function(_0xff22x2){this[_0x2b73[3044]](_0xff22x2)})),mxClient[_0x2b73[80]]&& mxEvent[_0x2b73[169]](window,_0x2b73[2428],mxUtils[_0x2b73[885]](this,function(){this[_0x2b73[515]]()})))}mxKeyHandler[_0x2b73[202]][_0x2b73[1179]]= null;mxKeyHandler[_0x2b73[202]][_0x2b73[772]]= null;mxKeyHandler[_0x2b73[202]][_0x2b73[3040]]= null;mxKeyHandler[_0x2b73[202]][_0x2b73[3041]]= null;mxKeyHandler[_0x2b73[202]][_0x2b73[3042]]= null;mxKeyHandler[_0x2b73[202]][_0x2b73[3043]]= null;mxKeyHandler[_0x2b73[202]][_0x2b73[984]]= !0;mxKeyHandler[_0x2b73[202]][_0x2b73[994]]= function(){return this[_0x2b73[984]]};mxKeyHandler[_0x2b73[202]][_0x2b73[995]]= function(_0xff22x2){this[_0x2b73[984]]= _0xff22x2};mxKeyHandler[_0x2b73[202]][_0x2b73[3045]]= function(_0xff22x2,_0xff22x3){this[_0x2b73[3040]][_0xff22x2]= _0xff22x3};mxKeyHandler[_0x2b73[202]][_0x2b73[3046]]= function(_0xff22x2,_0xff22x3){this[_0x2b73[3041]][_0xff22x2]= _0xff22x3};mxKeyHandler[_0x2b73[202]][_0x2b73[3047]]= function(_0xff22x2,_0xff22x3){this[_0x2b73[3042]][_0xff22x2]= _0xff22x3};mxKeyHandler[_0x2b73[202]][_0x2b73[3048]]= function(_0xff22x2,_0xff22x3){this[_0x2b73[3043]][_0xff22x2]= _0xff22x3};mxKeyHandler[_0x2b73[202]][_0x2b73[775]]= function(_0xff22x2){return mxEvent[_0x2b73[775]](_0xff22x2)};mxKeyHandler[_0x2b73[202]][_0x2b73[3049]]= function(_0xff22x2){return null!= _0xff22x2?this[_0x2b73[775]](_0xff22x2)?mxEvent[_0x2b73[774]](_0xff22x2)?this[_0x2b73[3043]][_0xff22x2[_0x2b73[2124]]]:this[_0x2b73[3042]][_0xff22x2[_0x2b73[2124]]]:mxEvent[_0x2b73[774]](_0xff22x2)?this[_0x2b73[3041]][_0xff22x2[_0x2b73[2124]]]:this[_0x2b73[3040]][_0xff22x2[_0x2b73[2124]]]:null};mxKeyHandler[_0x2b73[202]][_0x2b73[3050]]= function(_0xff22x2){_0xff22x2= mxEvent[_0x2b73[728]](_0xff22x2);if(_0xff22x2== this[_0x2b73[772]]|| _0xff22x2[_0x2b73[265]]== this[_0x2b73[772]]|| null!= this[_0x2b73[1179]][_0x2b73[2347]]&& _0xff22x2== this[_0x2b73[1179]][_0x2b73[2347]][_0x2b73[126]]){return !0};for(;null!= _0xff22x2;){if(_0xff22x2== this[_0x2b73[1179]][_0x2b73[526]]){return !0};_0xff22x2= _0xff22x2[_0x2b73[265]]};return !1};mxKeyHandler[_0x2b73[202]][_0x2b73[3044]]= function(_0xff22x2){if(this[_0x2b73[1179]][_0x2b73[994]]()&& !mxEvent[_0x2b73[721]](_0xff22x2)&& this[_0x2b73[3050]](_0xff22x2)&& this[_0x2b73[994]]()){if(27== _0xff22x2[_0x2b73[2124]]){this[_0x2b73[859]](_0xff22x2)}else {if(!this[_0x2b73[1179]][_0x2b73[2203]]()){var _0xff22x3=this[_0x2b73[3049]](_0xff22x2);null!= _0xff22x3&& (_0xff22x3(_0xff22x2),mxEvent[_0x2b73[722]](_0xff22x2))}}}};mxKeyHandler[_0x2b73[202]][_0x2b73[859]]= function(_0xff22x2){this[_0x2b73[1179]][_0x2b73[2608]]()&& this[_0x2b73[1179]][_0x2b73[859]](_0xff22x2)};mxKeyHandler[_0x2b73[202]][_0x2b73[515]]= function(){this[_0x2b73[772]]= null};function mxTooltipHandler(_0xff22x2,_0xff22x3){null!= _0xff22x2&& (this[_0x2b73[1179]]= _0xff22x2,this[_0x2b73[1140]]= _0xff22x3|| 500,this[_0x2b73[1179]][_0x2b73[1133]](this))}mxTooltipHandler[_0x2b73[202]][_0x2b73[931]]= 10005;mxTooltipHandler[_0x2b73[202]][_0x2b73[1179]]= null;mxTooltipHandler[_0x2b73[202]][_0x2b73[1140]]= null;mxTooltipHandler[_0x2b73[202]][_0x2b73[3051]]= !1;mxTooltipHandler[_0x2b73[202]][_0x2b73[984]]= !0;mxTooltipHandler[_0x2b73[202]][_0x2b73[994]]= function(){return this[_0x2b73[984]]};mxTooltipHandler[_0x2b73[202]][_0x2b73[995]]= function(_0xff22x2){this[_0x2b73[984]]= _0xff22x2};mxTooltipHandler[_0x2b73[202]][_0x2b73[2277]]= function(){return this[_0x2b73[3051]]};mxTooltipHandler[_0x2b73[202]][_0x2b73[3052]]= function(_0xff22x2){this[_0x2b73[3051]]= _0xff22x2};mxTooltipHandler[_0x2b73[202]][_0x2b73[176]]= function(){null!= document[_0x2b73[112]]&& (this[_0x2b73[485]]= document[_0x2b73[55]](_0x2b73[485]),this[_0x2b73[485]][_0x2b73[926]]= _0x2b73[3053],this[_0x2b73[485]][_0x2b73[124]][_0x2b73[187]]= _0x2b73[188],this[_0x2b73[485]][_0x2b73[124]][_0x2b73[931]]= this[_0x2b73[931]],document[_0x2b73[112]][_0x2b73[62]](this[_0x2b73[485]]),mxEvent[_0x2b73[169]](this[_0x2b73[485]],_0x2b73[751],mxUtils[_0x2b73[885]](this,function(_0xff22x2){this[_0x2b73[3054]]()})))};mxTooltipHandler[_0x2b73[202]][_0x2b73[787]]= function(_0xff22x2,_0xff22x3){this[_0x2b73[862]](_0xff22x3,!1);this[_0x2b73[3054]]()};mxTooltipHandler[_0x2b73[202]][_0x2b73[788]]= function(_0xff22x2,_0xff22x3){if(_0xff22x3[_0x2b73[730]]()!= this[_0x2b73[1217]]|| _0xff22x3[_0x2b73[732]]()!= this[_0x2b73[1218]]){this[_0x2b73[862]](_0xff22x3,!0),(this[_0x2b73[2277]]()|| _0xff22x3[_0x2b73[248]]()!= this[_0x2b73[724]]|| _0xff22x3[_0x2b73[728]]()!= this[_0x2b73[252]]&& (!this[_0x2b73[3055]]|| null!= _0xff22x3[_0x2b73[248]]()&& this[_0x2b73[3055]]== (_0xff22x3[_0x2b73[729]](_0xff22x3[_0x2b73[248]]()[_0x2b73[253]])|| !_0xff22x3[_0x2b73[729]](_0xff22x3[_0x2b73[248]]()[_0x2b73[963]]))))&& this[_0x2b73[3054]]()};this[_0x2b73[1217]]= _0xff22x3[_0x2b73[730]]();this[_0x2b73[1218]]= _0xff22x3[_0x2b73[732]]()};mxTooltipHandler[_0x2b73[202]][_0x2b73[789]]= function(_0xff22x2,_0xff22x3){this[_0x2b73[862]](_0xff22x3,!0);this[_0x2b73[3054]]()};mxTooltipHandler[_0x2b73[202]][_0x2b73[3056]]= function(){null!= this[_0x2b73[1123]]&& (window[_0x2b73[2924]](this[_0x2b73[1123]]),this[_0x2b73[1123]]= null)};mxTooltipHandler[_0x2b73[202]][_0x2b73[862]]= function(_0xff22x2,_0xff22x3){this[_0x2b73[3056]]();if(_0xff22x3&& this[_0x2b73[994]]()&& null!= _0xff22x2[_0x2b73[248]]()&& (null== this[_0x2b73[485]]|| _0x2b73[188]== this[_0x2b73[485]][_0x2b73[124]][_0x2b73[187]])){var _0xff22x4=_0xff22x2[_0x2b73[248]](),_0xff22x5=_0xff22x2[_0x2b73[728]](),_0xff22x9=_0xff22x2[_0x2b73[730]](),_0xff22xa=_0xff22x2[_0x2b73[732]](),_0xff22x12=_0xff22x2[_0x2b73[729]](_0xff22x4[_0x2b73[253]])|| _0xff22x2[_0x2b73[729]](_0xff22x4[_0x2b73[963]]);this[_0x2b73[1123]]= window[_0x2b73[261]](mxUtils[_0x2b73[885]](this,function(){if(!this[_0x2b73[1179]][_0x2b73[2203]]()&& !this[_0x2b73[1179]][_0x2b73[2316]][_0x2b73[1031]]()){var _0xff22x2=this[_0x2b73[1179]][_0x2b73[2595]](_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa);this[_0x2b73[539]](_0xff22x2,_0xff22x9,_0xff22xa);this[_0x2b73[724]]= _0xff22x4;this[_0x2b73[252]]= _0xff22x5;this[_0x2b73[3055]]= _0xff22x12}}),this[_0x2b73[1140]])}};mxTooltipHandler[_0x2b73[202]][_0x2b73[801]]= function(){this[_0x2b73[3056]]();this[_0x2b73[3054]]()};mxTooltipHandler[_0x2b73[202]][_0x2b73[3054]]= function(){null!= this[_0x2b73[485]]&& (this[_0x2b73[485]][_0x2b73[124]][_0x2b73[187]]= _0x2b73[188])};mxTooltipHandler[_0x2b73[202]][_0x2b73[539]]= function(_0xff22x2,_0xff22x3,_0xff22x4){if(null!= _0xff22x2&& 0< _0xff22x2[_0x2b73[67]]){null== this[_0x2b73[485]]&& this[_0x2b73[176]]();var _0xff22x5=mxUtils[_0x2b73[444]]();this[_0x2b73[485]][_0x2b73[124]][_0x2b73[361]]= _0xff22x3+ _0xff22x5[_0x2b73[235]]+ _0x2b73[168];this[_0x2b73[485]][_0x2b73[124]][_0x2b73[125]]= _0xff22x4+ mxConstants[_0x2b73[560]]+ _0xff22x5[_0x2b73[236]]+ _0x2b73[168];mxUtils[_0x2b73[1331]](_0xff22x2)?(this[_0x2b73[485]][_0x2b73[339]]= _0x2b73[110],this[_0x2b73[485]][_0x2b73[62]](_0xff22x2)):this[_0x2b73[485]][_0x2b73[339]]= _0xff22x2[_0x2b73[230]](/\n/g,_0x2b73[545]);this[_0x2b73[485]][_0x2b73[124]][_0x2b73[187]]= _0x2b73[110];mxUtils[_0x2b73[933]](this[_0x2b73[485]])}};mxTooltipHandler[_0x2b73[202]][_0x2b73[515]]= function(){this[_0x2b73[1179]][_0x2b73[1148]](this);mxEvent[_0x2b73[762]](this[_0x2b73[485]]);null!= this[_0x2b73[485]]&& null!= this[_0x2b73[485]][_0x2b73[265]]&& this[_0x2b73[485]][_0x2b73[265]][_0x2b73[266]](this[_0x2b73[485]]);this[_0x2b73[485]]= null};function mxCellTracker(_0xff22x2,_0xff22x3,_0xff22x4){mxCellMarker[_0x2b73[239]](this,_0xff22x2,_0xff22x3);this[_0x2b73[1179]][_0x2b73[1133]](this);null!= _0xff22x4&& (this[_0x2b73[736]]= _0xff22x4);mxClient[_0x2b73[80]]&& mxEvent[_0x2b73[169]](window,_0x2b73[2428],mxUtils[_0x2b73[885]](this,function(){this[_0x2b73[515]]()}))}mxUtils[_0x2b73[1284]](mxCellTracker,mxCellMarker);mxCellTracker[_0x2b73[202]][_0x2b73[787]]= function(_0xff22x2,_0xff22x3){};mxCellTracker[_0x2b73[202]][_0x2b73[788]]= function(_0xff22x2,_0xff22x3){this[_0x2b73[994]]()&& this[_0x2b73[2871]](_0xff22x3)};mxCellTracker[_0x2b73[202]][_0x2b73[789]]= function(_0xff22x2,_0xff22x3){this[_0x2b73[862]]()};mxCellTracker[_0x2b73[202]][_0x2b73[515]]= function(){this[_0x2b73[2717]]|| (this[_0x2b73[2717]]= !0,this[_0x2b73[1179]][_0x2b73[1148]](this),mxCellMarker[_0x2b73[202]][_0x2b73[515]][_0x2b73[183]](this))};function mxCellHighlight(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){null!= _0xff22x2&& (this[_0x2b73[1179]]= _0xff22x2,this[_0x2b73[2943]]= null!= _0xff22x3?_0xff22x3:mxConstants[_0x2b73[2854]],this[_0x2b73[610]]= null!= _0xff22x4?_0xff22x4:mxConstants[_0x2b73[3057]],this[_0x2b73[648]]= null!= _0xff22x5?_0xff22x5:!1,this[_0x2b73[3058]]= mxUtils[_0x2b73[885]](this,function(){this[_0x2b73[2950]]()}),this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[169]](mxEvent.SCALE,this[_0x2b73[3058]]),this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[169]](mxEvent.TRANSLATE,this[_0x2b73[3058]]),this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[169]](mxEvent.SCALE_AND_TRANSLATE,this[_0x2b73[3058]]),this[_0x2b73[1179]][_0x2b73[502]]()[_0x2b73[169]](mxEvent.CHANGE,this[_0x2b73[3058]]),this[_0x2b73[2877]]= mxUtils[_0x2b73[885]](this,function(){this[_0x2b73[801]]()}),this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[169]](mxEvent.DOWN,this[_0x2b73[2877]]),this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[169]](mxEvent.UP,this[_0x2b73[2877]]))}mxCellHighlight[_0x2b73[202]][_0x2b73[3059]]= !1;mxCellHighlight[_0x2b73[202]][_0x2b73[1179]]= !0;mxCellHighlight[_0x2b73[202]][_0x2b73[724]]= null;mxCellHighlight[_0x2b73[202]][_0x2b73[657]]= 2;mxCellHighlight[_0x2b73[202]][_0x2b73[2877]]= null;mxCellHighlight[_0x2b73[202]][_0x2b73[2828]]= function(_0xff22x2){this[_0x2b73[2943]]= _0xff22x2;null!= this[_0x2b73[253]]&& (this[_0x2b73[253]][_0x2b73[1336]]= _0xff22x2)};mxCellHighlight[_0x2b73[202]][_0x2b73[3060]]= function(){this[_0x2b73[253]]= this[_0x2b73[2156]]();this[_0x2b73[2950]]();!this[_0x2b73[3059]]&& this[_0x2b73[253]][_0x2b73[252]][_0x2b73[265]][_0x2b73[285]]!= this[_0x2b73[253]][_0x2b73[252]]&& this[_0x2b73[253]][_0x2b73[252]][_0x2b73[265]][_0x2b73[950]](this[_0x2b73[253]][_0x2b73[252]],this[_0x2b73[253]][_0x2b73[252]][_0x2b73[265]][_0x2b73[285]])};mxCellHighlight[_0x2b73[202]][_0x2b73[2156]]= function(){var _0xff22x2=null,_0xff22x2=this[_0x2b73[1179]][_0x2b73[251]][_0x2b73[250]](this[_0x2b73[724]][_0x2b73[246]])? new mxPolyline(this[_0x2b73[724]][_0x2b73[439]],this[_0x2b73[2943]],this[_0x2b73[610]]): new mxRectangleShape( new mxRectangle,null,this[_0x2b73[2943]],this[_0x2b73[610]]);_0xff22x2[_0x2b73[507]]= this[_0x2b73[1179]][_0x2b73[507]]!= mxConstants[_0x2b73[508]]?mxConstants[_0x2b73[1523]]:mxConstants[_0x2b73[508]];_0xff22x2[_0x2b73[176]](this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[1524]]());mxEvent[_0x2b73[2733]](_0xff22x2[_0x2b73[252]],this[_0x2b73[1179]],this[_0x2b73[724]]);_0xff22x2[_0x2b73[1564]]= 0;_0xff22x2[_0x2b73[1229]]= !1;_0xff22x2[_0x2b73[1522]]= this[_0x2b73[648]];return _0xff22x2};mxCellHighlight[_0x2b73[202]][_0x2b73[2950]]= function(){if(null!= this[_0x2b73[724]]&& null!= this[_0x2b73[253]]){var _0xff22x2=0;this[_0x2b73[1179]][_0x2b73[251]][_0x2b73[250]](this[_0x2b73[724]][_0x2b73[246]])?this[_0x2b73[253]][_0x2b73[1525]]= this[_0x2b73[724]][_0x2b73[439]]:(this[_0x2b73[253]][_0x2b73[1562]]= new mxRectangle(this[_0x2b73[724]][_0x2b73[235]]- this[_0x2b73[657]],this[_0x2b73[724]][_0x2b73[236]]- this[_0x2b73[657]],this[_0x2b73[724]][_0x2b73[117]]+ 2* this[_0x2b73[657]],this[_0x2b73[724]][_0x2b73[119]]+ 2* this[_0x2b73[657]]),_0xff22x2= Number(this[_0x2b73[724]][_0x2b73[124]][mxConstants[_0x2b73[2278]]]|| _0x2b73[468]));null!= this[_0x2b73[724]][_0x2b73[253]]&& this[_0x2b73[253]][_0x2b73[1609]](this[_0x2b73[724]][_0x2b73[253]][_0x2b73[1610]]());0!= _0xff22x2&& (this[_0x2b73[253]][_0x2b73[603]]= _0xff22x2);this[_0x2b73[253]][_0x2b73[258]]()}};mxCellHighlight[_0x2b73[202]][_0x2b73[801]]= function(){this[_0x2b73[1016]](null)};mxCellHighlight[_0x2b73[202]][_0x2b73[1016]]= function(_0xff22x2){this[_0x2b73[724]]!= _0xff22x2&& (null!= this[_0x2b73[253]]&& (this[_0x2b73[253]][_0x2b73[515]](),this[_0x2b73[253]]= null),this[_0x2b73[724]]= _0xff22x2,null!= this[_0x2b73[724]]&& this[_0x2b73[3060]]())};mxCellHighlight[_0x2b73[202]][_0x2b73[515]]= function(){this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[745]](this[_0x2b73[3058]]);this[_0x2b73[1179]][_0x2b73[502]]()[_0x2b73[745]](this[_0x2b73[3058]]);this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[745]](this[_0x2b73[2877]]);this[_0x2b73[1179]][_0x2b73[502]]()[_0x2b73[745]](this[_0x2b73[2877]]);null!= this[_0x2b73[253]]&& (this[_0x2b73[253]][_0x2b73[515]](),this[_0x2b73[253]]= null)};function mxDefaultKeyHandler(_0xff22x2){if(null!= _0xff22x2){this[_0x2b73[3061]]= _0xff22x2;this[_0x2b73[2458]]= new mxKeyHandler(_0xff22x2[_0x2b73[1179]]);var _0xff22x3=this[_0x2b73[2458]][_0x2b73[859]];this[_0x2b73[2458]][_0x2b73[859]]= function(_0xff22x4){_0xff22x3[_0x2b73[183]](this,arguments);_0xff22x2[_0x2b73[3062]]();_0xff22x2[_0x2b73[746]]( new mxEventObject(mxEvent.ESCAPE,_0x2b73[763],_0xff22x4))}}}mxDefaultKeyHandler[_0x2b73[202]][_0x2b73[3061]]= null;mxDefaultKeyHandler[_0x2b73[202]][_0x2b73[2458]]= null;mxDefaultKeyHandler[_0x2b73[202]][_0x2b73[3063]]= function(_0xff22x2,_0xff22x3,_0xff22x4){var _0xff22x5=mxUtils[_0x2b73[885]](this,function(){this[_0x2b73[3061]][_0x2b73[350]](_0xff22x3)});_0xff22x4?this[_0x2b73[2458]][_0x2b73[3047]](_0xff22x2,_0xff22x5):this[_0x2b73[2458]][_0x2b73[3045]](_0xff22x2,_0xff22x5)};mxDefaultKeyHandler[_0x2b73[202]][_0x2b73[515]]= function(){this[_0x2b73[2458]][_0x2b73[515]]();this[_0x2b73[2458]]= null};function mxDefaultPopupMenu(_0xff22x2){this[_0x2b73[3064]]= _0xff22x2}mxDefaultPopupMenu[_0x2b73[202]][_0x2b73[88]]= null;mxDefaultPopupMenu[_0x2b73[202]][_0x2b73[3064]]= null;mxDefaultPopupMenu[_0x2b73[202]][_0x2b73[3065]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){if(null!= this[_0x2b73[3064]]){var _0xff22x9=this[_0x2b73[3066]](_0xff22x2,_0xff22x4,_0xff22x5);this[_0x2b73[3067]](_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,this[_0x2b73[3064]][_0x2b73[285]],null)}};mxDefaultPopupMenu[_0x2b73[202]][_0x2b73[3067]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa,_0xff22x12){for(var _0xff22x13=!1;null!= _0xff22xa;){if(_0x2b73[99]== _0xff22xa[_0x2b73[301]]){var _0xff22x14=_0xff22xa[_0x2b73[284]](_0x2b73[3068]);if(null== _0xff22x14|| _0xff22x9[_0xff22x14]){var _0xff22x14=_0xff22xa[_0x2b73[284]](_0x2b73[3069]),_0xff22x14=mxResources[_0x2b73[203]](_0xff22x14)|| _0xff22x14,_0xff22x15=mxUtils[_0x2b73[1545]](mxUtils[_0x2b73[329]](_0xff22xa)),_0xff22x16=_0xff22xa[_0x2b73[284]](_0x2b73[892]),_0xff22x17=_0xff22xa[_0x2b73[284]](_0x2b73[2916]),_0xff22x18=_0xff22xa[_0x2b73[284]](_0x2b73[3070]);_0xff22x13&& (_0xff22x3[_0x2b73[1051]](_0xff22x12),_0xff22x13= !1);null!= _0xff22x17&& this[_0x2b73[88]]&& (_0xff22x17= this[_0x2b73[88]]+ _0xff22x17);_0xff22x14= this[_0x2b73[3071]](_0xff22x3,_0xff22x2,_0xff22x14,_0xff22x17,_0xff22x15,_0xff22x16,_0xff22x4,_0xff22x12,_0xff22x18);this[_0x2b73[3067]](_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa[_0x2b73[285]],_0xff22x14)}}else {_0x2b73[3072]== _0xff22xa[_0x2b73[301]]&& (_0xff22x13= !0)};_0xff22xa= _0xff22xa[_0x2b73[287]]}};mxDefaultPopupMenu[_0x2b73[202]][_0x2b73[3071]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa,_0xff22x12,_0xff22x13,_0xff22x14){return _0xff22x2[_0x2b73[1025]](_0xff22x4,_0xff22x5,function(_0xff22x2){_0x2b73[279]== typeof _0xff22x9&& _0xff22x9[_0x2b73[239]](_0xff22x3,_0xff22x3,_0xff22x12,_0xff22x2);null!= _0xff22xa&& _0xff22x3[_0x2b73[350]](_0xff22xa,_0xff22x12,_0xff22x2)},_0xff22x13,_0xff22x14)};mxDefaultPopupMenu[_0x2b73[202]][_0x2b73[3066]]= function(_0xff22x2,_0xff22x3,_0xff22x4){var _0xff22x5=_0xff22x2[_0x2b73[1179]][_0x2b73[502]](),_0xff22x9=_0xff22x5[_0x2b73[262]](_0xff22x3),_0xff22xa=[];_0xff22xa[_0x2b73[3073]]= null== _0xff22x3;_0xff22xa[_0x2b73[3074]]= 1< _0xff22x2[_0x2b73[1179]][_0x2b73[2694]]();_0xff22xa[_0x2b73[3075]]= _0xff22x5[_0x2b73[501]]()!= _0xff22x5[_0x2b73[1197]](_0xff22x2[_0x2b73[1179]][_0x2b73[902]]());_0xff22xa[_0x2b73[246]]= null!= _0xff22x3;_0xff22x5= null!= _0xff22x3&& 1== _0xff22x2[_0x2b73[1179]][_0x2b73[2694]]();_0xff22xa[_0x2b73[3076]]= _0xff22x5&& 0< _0xff22x9;_0xff22xa[_0x2b73[3077]]= _0xff22x5&& _0xff22x2[_0x2b73[1179]][_0x2b73[2516]](_0xff22x3,!1);_0xff22xa[_0x2b73[3078]]= _0xff22x5&& _0xff22x2[_0x2b73[1179]][_0x2b73[2516]](_0xff22x3,!0);_0xff22xa[_0x2b73[3079]]= _0xff22x5&& _0xff22x2[_0x2b73[1179]][_0x2b73[2553]](_0xff22x3);_0xff22xa[_0x2b73[3080]]= _0xff22xa[_0x2b73[3079]]&& 0== _0xff22x9;_0xff22xa[_0x2b73[687]]= _0xff22x5&& _0xff22x2[_0x2b73[1179]][_0x2b73[1730]](_0xff22x3);_0xff22x9= this[_0x2b73[3064]][_0x2b73[64]](_0x2b73[3081]);for(_0xff22x5= 0;_0xff22x5< _0xff22x9[_0x2b73[67]];_0xff22x5++){var _0xff22x12=mxUtils[_0x2b73[1545]](mxUtils[_0x2b73[329]](_0xff22x9[_0xff22x5])),_0xff22x13=_0xff22x9[_0xff22x5][_0x2b73[284]](_0x2b73[298]);null!= _0xff22x13&& _0x2b73[279]== typeof _0xff22x12&& (_0xff22xa[_0xff22x13]= _0xff22x12(_0xff22x2,_0xff22x3,_0xff22x4))};return _0xff22xa};function mxDefaultToolbar(_0xff22x2,_0xff22x3){this[_0x2b73[3061]]= _0xff22x3;null!= _0xff22x2&& null!= _0xff22x3&& this[_0x2b73[176]](_0xff22x2)}mxDefaultToolbar[_0x2b73[202]][_0x2b73[3061]]= null;mxDefaultToolbar[_0x2b73[202]][_0x2b73[3082]]= null;mxDefaultToolbar[_0x2b73[202]][_0x2b73[2877]]= null;mxDefaultToolbar[_0x2b73[202]][_0x2b73[657]]= 4;mxDefaultToolbar[_0x2b73[202]][_0x2b73[2804]]= !1;mxDefaultToolbar[_0x2b73[202]][_0x2b73[176]]= function(_0xff22x2){null!= _0xff22x2&& (this[_0x2b73[3082]]= new mxToolbar(_0xff22x2),this[_0x2b73[3082]][_0x2b73[169]](mxEvent.SELECT,mxUtils[_0x2b73[885]](this,function(_0xff22x2,_0xff22x4){var _0xff22x5=_0xff22x4[_0x2b73[720]](_0x2b73[279]);this[_0x2b73[3061]][_0x2b73[3083]]= null!= _0xff22x5?mxUtils[_0x2b73[885]](this,function(){_0xff22x5[_0x2b73[183]](this,arguments);this[_0x2b73[3082]][_0x2b73[1050]]()}):null})),this[_0x2b73[2877]]= mxUtils[_0x2b73[885]](this,function(){null!= this[_0x2b73[3082]]&& this[_0x2b73[3082]][_0x2b73[1050]](!0)}),this[_0x2b73[3061]][_0x2b73[1179]][_0x2b73[169]](mxEvent.DOUBLE_CLICK,this[_0x2b73[2877]]),this[_0x2b73[3061]][_0x2b73[169]](mxEvent.ESCAPE,this[_0x2b73[2877]]))};mxDefaultToolbar[_0x2b73[202]][_0x2b73[1025]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){var _0xff22x9=mxUtils[_0x2b73[885]](this,function(){null!= _0xff22x4&& 0< _0xff22x4[_0x2b73[67]]&& this[_0x2b73[3061]][_0x2b73[350]](_0xff22x4)});return this[_0x2b73[3082]][_0x2b73[1025]](_0xff22x2,_0xff22x3,_0xff22x9,_0xff22x5)};mxDefaultToolbar[_0x2b73[202]][_0x2b73[1051]]= function(_0xff22x2){_0xff22x2= _0xff22x2|| mxClient[_0x2b73[88]]+ _0x2b73[3084];this[_0x2b73[3082]][_0x2b73[1051]](_0xff22x2)};mxDefaultToolbar[_0x2b73[202]][_0x2b73[970]]= function(){return this[_0x2b73[3082]][_0x2b73[970]]()};mxDefaultToolbar[_0x2b73[202]][_0x2b73[1038]]= function(_0xff22x2){return this[_0x2b73[3082]][_0x2b73[1038]](_0xff22x2)};mxDefaultToolbar[_0x2b73[202]][_0x2b73[3085]]= function(_0xff22x2,_0xff22x3,_0xff22x4){var _0xff22x5=mxUtils[_0x2b73[885]](this,function(){this[_0x2b73[3061]][_0x2b73[350]](_0xff22x4)});this[_0x2b73[972]](_0xff22x2,_0xff22x3,_0xff22x5)};mxDefaultToolbar[_0x2b73[202]][_0x2b73[972]]= function(_0xff22x2,_0xff22x3,_0xff22x4){return this[_0x2b73[3082]][_0x2b73[972]](_0xff22x2,_0xff22x3,_0xff22x4)};mxDefaultToolbar[_0x2b73[202]][_0x2b73[1048]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){var _0xff22xa=mxUtils[_0x2b73[885]](this,function(){this[_0x2b73[3061]][_0x2b73[3086]](_0xff22x4);null!= _0xff22x9&& _0xff22x9(this[_0x2b73[3061]])});return this[_0x2b73[3082]][_0x2b73[1042]](_0xff22x2,_0xff22x3,_0xff22xa,_0xff22x5)};mxDefaultToolbar[_0x2b73[202]][_0x2b73[3087]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9,_0xff22xa){var _0xff22x12=function(){return _0x2b73[279]== typeof _0xff22x4?_0xff22x4():null!= _0xff22x4?_0xff22x4[_0x2b73[238]]():null},_0xff22x13=mxUtils[_0x2b73[885]](this,function(_0xff22x2,_0xff22x3){_0x2b73[279]== typeof _0xff22x9?_0xff22x9(this[_0x2b73[3061]],_0xff22x12(),_0xff22x2,_0xff22x3):this[_0x2b73[1008]](_0xff22x12(),_0xff22x2,_0xff22x3);this[_0x2b73[3082]][_0x2b73[1050]]();mxEvent[_0x2b73[722]](_0xff22x2)});_0xff22x2= this[_0x2b73[3082]][_0x2b73[1048]](_0xff22x2,_0xff22x3,_0xff22x13,_0xff22x5,null,_0xff22xa);this[_0x2b73[3088]](_0xff22x2,function(_0xff22x2,_0xff22x3,_0xff22x4){_0xff22x13(_0xff22x3,_0xff22x4)});return _0xff22x2};mxDefaultToolbar[_0x2b73[202]][_0x2b73[1008]]= function(_0xff22x2,_0xff22x3,_0xff22x4){var _0xff22x5=this[_0x2b73[3061]][_0x2b73[1179]],_0xff22x9=_0xff22x5[_0x2b73[502]]();if(null== _0xff22x4|| _0xff22x9[_0x2b73[250]](_0xff22x4)|| !this[_0x2b73[2804]]|| !_0xff22x5[_0x2b73[2565]](_0xff22x4)){for(;null!= _0xff22x4&& !_0xff22x5[_0x2b73[2685]](_0xff22x4,[_0xff22x2],_0xff22x3);){_0xff22x4= _0xff22x9[_0x2b73[1197]](_0xff22x4)};this[_0x2b73[1937]](_0xff22x2,_0xff22x3,_0xff22x4)}else {this[_0x2b73[807]](_0xff22x2,_0xff22x3,_0xff22x4)}};mxDefaultToolbar[_0x2b73[202]][_0x2b73[1937]]= function(_0xff22x2,_0xff22x3,_0xff22x4){var _0xff22x5=this[_0x2b73[3061]][_0x2b73[1179]];if(_0xff22x5[_0x2b73[2621]](_0xff22x2)){var _0xff22x9=mxEvent[_0x2b73[731]](_0xff22x3),_0xff22xa=mxEvent[_0x2b73[733]](_0xff22x3),_0xff22x9=mxUtils[_0x2b73[2196]](_0xff22x5[_0x2b73[526]],_0xff22x9,_0xff22xa);return _0xff22x5[_0x2b73[2655]]()&& _0xff22x5[_0x2b73[2686]](_0xff22x4,[_0xff22x2],_0xff22x3)?_0xff22x5[_0x2b73[853]](_0xff22x4,[_0xff22x2],null,_0xff22x9[_0x2b73[235]],_0xff22x9[_0x2b73[236]]):this[_0x2b73[3061]][_0x2b73[817]](_0xff22x4,_0xff22x2,_0xff22x9[_0x2b73[235]],_0xff22x9[_0x2b73[236]])};return null};mxDefaultToolbar[_0x2b73[202]][_0x2b73[807]]= function(_0xff22x2,_0xff22x3,_0xff22x4){_0xff22x3= this[_0x2b73[3061]][_0x2b73[1179]];var _0xff22x5=_0xff22x3[_0x2b73[502]]();if(null!= _0xff22x4&& _0xff22x3[_0x2b73[2565]](_0xff22x2)&& _0xff22x3[_0x2b73[2581]](null,_0xff22x4,_0xff22x2)){var _0xff22x9=null;_0xff22x5[_0x2b73[473]]();try{var _0xff22xa=_0xff22x5[_0x2b73[1721]](_0xff22x4),_0xff22x12=_0xff22x5[_0x2b73[1721]](_0xff22x2)[_0x2b73[238]]();_0xff22x12[_0x2b73[235]]= _0xff22xa[_0x2b73[235]]+ (_0xff22xa[_0x2b73[117]]- _0xff22x12[_0x2b73[117]])/ 2;_0xff22x12[_0x2b73[236]]= _0xff22xa[_0x2b73[236]]+ (_0xff22xa[_0x2b73[119]]- _0xff22x12[_0x2b73[119]])/ 2;var _0xff22x13=this[_0x2b73[657]]* _0xff22x3[_0x2b73[1020]],_0xff22x14=20* _0xff22x5[_0x2b73[1962]](_0xff22x4,!0);this[_0x2b73[3061]][_0x2b73[3089]]?_0xff22x12[_0x2b73[235]]+= (_0xff22x12[_0x2b73[117]]+ _0xff22xa[_0x2b73[117]])/ 2+ _0xff22x13+ _0xff22x14:_0xff22x12[_0x2b73[236]]+= (_0xff22x12[_0x2b73[119]]+ _0xff22xa[_0x2b73[119]])/ 2+ _0xff22x13+ _0xff22x14;_0xff22x2[_0x2b73[1724]](_0xff22x12);var _0xff22x15=_0xff22x5[_0x2b73[1197]](_0xff22x4);_0xff22x3[_0x2b73[2103]](_0xff22x2,_0xff22x15);_0xff22x3[_0x2b73[2509]](_0xff22x2);_0xff22x9= this[_0x2b73[3061]][_0x2b73[2503]](_0xff22x4,_0xff22x2);if(null== _0xff22x5[_0x2b73[1721]](_0xff22x9)){var _0xff22x16= new mxGeometry;_0xff22x16[_0x2b73[1500]]= !0;_0xff22x5[_0x2b73[1724]](_0xff22x9,_0xff22x16)};_0xff22x3[_0x2b73[2504]](_0xff22x9,_0xff22x15,_0xff22x4,_0xff22x2)}finally{_0xff22x5[_0x2b73[476]]()};_0xff22x3[_0x2b73[904]]([_0xff22x2,_0xff22x9]);_0xff22x3[_0x2b73[2564]](_0xff22x2)}};mxDefaultToolbar[_0x2b73[202]][_0x2b73[3088]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=document[_0x2b73[55]](_0x2b73[466]);_0xff22x4[_0x2b73[57]](_0x2b73[390],_0xff22x2[_0x2b73[284]](_0x2b73[390]));var _0xff22x5=mxUtils[_0x2b73[885]](this,function(_0xff22x9){_0xff22x4[_0x2b73[124]][_0x2b73[117]]= 2* _0xff22x2[_0x2b73[359]]+ _0x2b73[168];_0xff22x4[_0x2b73[124]][_0x2b73[119]]= 2* _0xff22x2[_0x2b73[167]]+ _0x2b73[168];mxUtils[_0x2b73[3090]](_0xff22x2,this[_0x2b73[3061]][_0x2b73[1179]],_0xff22x3,_0xff22x4);mxEvent[_0x2b73[745]](_0xff22x4,_0x2b73[219],_0xff22x5)});mxClient[_0x2b73[80]]?_0xff22x5():mxEvent[_0x2b73[169]](_0xff22x4,_0x2b73[219],_0xff22x5)};mxDefaultToolbar[_0x2b73[202]][_0x2b73[515]]= function(){null!= this[_0x2b73[2877]]&& (this[_0x2b73[3061]][_0x2b73[1179]][_0x2b73[745]](_0x2b73[760],this[_0x2b73[2877]]),this[_0x2b73[3061]][_0x2b73[745]](_0x2b73[859],this[_0x2b73[2877]]),this[_0x2b73[2877]]= null);null!= this[_0x2b73[3082]]&& (this[_0x2b73[3082]][_0x2b73[515]](),this[_0x2b73[3082]]= null)};function mxEditor(_0xff22x2){this[_0x2b73[3091]]= [];this[_0x2b73[3092]]();if(null!= document[_0x2b73[112]]){this[_0x2b73[3093]]= [];this[_0x2b73[3094]]= new mxDefaultPopupMenu;this[_0x2b73[3095]]= new mxUndoManager;this[_0x2b73[1179]]= this[_0x2b73[3096]]();this[_0x2b73[3082]]= this[_0x2b73[3097]]();this[_0x2b73[3098]]= new mxDefaultKeyHandler(this);this[_0x2b73[3099]](_0xff22x2);this[_0x2b73[1179]][_0x2b73[2180]]= this[_0x2b73[3100]];!mxClient[_0x2b73[3101]]&& null!= this[_0x2b73[1056]]&& (this[_0x2b73[812]]= this[_0x2b73[3102]]());if(null!= this[_0x2b73[1987]]){this[_0x2b73[1987]]()};mxClient[_0x2b73[80]]&& mxEvent[_0x2b73[169]](window,_0x2b73[2428],mxUtils[_0x2b73[885]](this,function(){this[_0x2b73[515]]()}))}}mxLoadResources&& mxResources[_0x2b73[99]](mxClient[_0x2b73[86]]+ _0x2b73[3103]);mxEditor[_0x2b73[202]]= new mxEventSource;mxEditor[_0x2b73[202]][_0x2b73[196]]= mxEditor;mxEditor[_0x2b73[202]][_0x2b73[3104]]= _0x2b73[130]!= mxClient[_0x2b73[90]]?_0x2b73[3105]:_0x2b73[110];mxEditor[_0x2b73[202]][_0x2b73[3106]]= _0x2b73[130]!= mxClient[_0x2b73[90]]?_0x2b73[3107]:_0x2b73[110];mxEditor[_0x2b73[202]][_0x2b73[3108]]= _0x2b73[130]!= mxClient[_0x2b73[90]]?_0x2b73[3109]:_0x2b73[110];mxEditor[_0x2b73[202]][_0x2b73[3110]]= _0x2b73[130]!= mxClient[_0x2b73[90]]?_0x2b73[716]:_0x2b73[110];mxEditor[_0x2b73[202]][_0x2b73[3111]]= _0x2b73[130]!= mxClient[_0x2b73[90]]?_0x2b73[3112]:_0x2b73[110];mxEditor[_0x2b73[202]][_0x2b73[3113]]= _0x2b73[130]!= mxClient[_0x2b73[90]]?_0x2b73[2719]:_0x2b73[110];mxEditor[_0x2b73[202]][_0x2b73[3114]]= _0x2b73[130]!= mxClient[_0x2b73[90]]?_0x2b73[2136]:_0x2b73[110];mxEditor[_0x2b73[202]][_0x2b73[2136]]= null;mxEditor[_0x2b73[202]][_0x2b73[1179]]= null;mxEditor[_0x2b73[202]][_0x2b73[2720]]= null;mxEditor[_0x2b73[202]][_0x2b73[3082]]= null;mxEditor[_0x2b73[202]][_0x2b73[812]]= null;mxEditor[_0x2b73[202]][_0x2b73[879]]= null;mxEditor[_0x2b73[202]][_0x2b73[3094]]= null;mxEditor[_0x2b73[202]][_0x2b73[3095]]= null;mxEditor[_0x2b73[202]][_0x2b73[3098]]= null;mxEditor[_0x2b73[202]][_0x2b73[3091]]= null;mxEditor[_0x2b73[202]][_0x2b73[3115]]= _0x2b73[1061];mxEditor[_0x2b73[202]][_0x2b73[3116]]= !1;mxEditor[_0x2b73[202]][_0x2b73[1157]]= !0;mxEditor[_0x2b73[202]][_0x2b73[3083]]= null;mxEditor[_0x2b73[202]][_0x2b73[3117]]= !1;mxEditor[_0x2b73[202]][_0x2b73[3118]]= null;mxEditor[_0x2b73[202]][_0x2b73[2075]]= null;mxEditor[_0x2b73[202]][_0x2b73[3119]]= null;mxEditor[_0x2b73[202]][_0x2b73[3120]]= null;mxEditor[_0x2b73[202]][_0x2b73[3121]]= null;mxEditor[_0x2b73[202]][_0x2b73[3122]]= null;mxEditor[_0x2b73[202]][_0x2b73[1069]]= _0x2b73[336];mxEditor[_0x2b73[202]][_0x2b73[3123]]= _0x2b73[338];mxEditor[_0x2b73[202]][_0x2b73[1070]]= !0;mxEditor[_0x2b73[202]][_0x2b73[3124]]= null;mxEditor[_0x2b73[202]][_0x2b73[3125]]= null;mxEditor[_0x2b73[202]][_0x2b73[1056]]= null;mxEditor[_0x2b73[202]][_0x2b73[1058]]= null;mxEditor[_0x2b73[202]][_0x2b73[1057]]= null;mxEditor[_0x2b73[202]][_0x2b73[3089]]= !1;mxEditor[_0x2b73[202]][_0x2b73[3126]]= !1;mxEditor[_0x2b73[202]][_0x2b73[3127]]= 0;mxEditor[_0x2b73[202]][_0x2b73[3128]]= !1;mxEditor[_0x2b73[202]][_0x2b73[3129]]= !1;mxEditor[_0x2b73[202]][_0x2b73[3093]]= null;mxEditor[_0x2b73[202]][_0x2b73[3130]]= 0;mxEditor[_0x2b73[202]][_0x2b73[3100]]= _0x2b73[604];mxEditor[_0x2b73[202]][_0x2b73[3112]]= null;mxEditor[_0x2b73[202]][_0x2b73[3131]]= null;mxEditor[_0x2b73[202]][_0x2b73[3132]]= 20;mxEditor[_0x2b73[202]][_0x2b73[2719]]= null;mxEditor[_0x2b73[202]][_0x2b73[3133]]= null;mxEditor[_0x2b73[202]][_0x2b73[3134]]= null;mxEditor[_0x2b73[202]][_0x2b73[3135]]= 300;mxEditor[_0x2b73[202]][_0x2b73[3136]]= 260;mxEditor[_0x2b73[202]][_0x2b73[3137]]= 240;mxEditor[_0x2b73[202]][_0x2b73[3138]]= null;mxEditor[_0x2b73[202]][_0x2b73[3139]]= !1;mxEditor[_0x2b73[202]][_0x2b73[3140]]= !1;mxEditor[_0x2b73[202]][_0x2b73[2113]]= !1;mxEditor[_0x2b73[202]][_0x2b73[2133]]= function(){return this[_0x2b73[2113]]};mxEditor[_0x2b73[202]][_0x2b73[2128]]= function(_0xff22x2){this[_0x2b73[2113]]= _0xff22x2};mxEditor[_0x2b73[202]][_0x2b73[3092]]= function(){this[_0x2b73[3071]](_0x2b73[815],function(_0xff22x2){_0xff22x2[_0x2b73[815]]()});this[_0x2b73[3071]](_0x2b73[540],function(_0xff22x2){( new mxPrintPreview(_0xff22x2[_0x2b73[1179]],1))[_0x2b73[392]]()});this[_0x2b73[3071]](_0x2b73[539],function(_0xff22x2){mxUtils[_0x2b73[539]](_0xff22x2[_0x2b73[1179]],null,10,10)});this[_0x2b73[3071]](_0x2b73[3141],function(_0xff22x2){var _0xff22x3=_0xff22x2[_0x2b73[3142]]();if(null== _0xff22x3|| mxClient[_0x2b73[3101]]){_0xff22x2[_0x2b73[350]](_0x2b73[539])}else {var _0xff22x4=mxUtils[_0x2b73[3143]](_0xff22x2[_0x2b73[1179]],1),_0xff22x4=mxUtils[_0x2b73[875]](_0xff22x4,_0x2b73[192]);mxUtils[_0x2b73[894]](_0xff22x3,_0xff22x2[_0x2b73[3123]]+ _0x2b73[226]+ encodeURIComponent(_0xff22x4),document,_0x2b73[3144])}});this[_0x2b73[3071]](_0x2b73[802],function(_0xff22x2){_0xff22x2[_0x2b73[1179]][_0x2b73[802]]()});this[_0x2b73[3071]](_0x2b73[3145],function(_0xff22x2){_0xff22x2[_0x2b73[1179]][_0x2b73[994]]()&& mxClipboard[_0x2b73[3145]](_0xff22x2[_0x2b73[1179]])});this[_0x2b73[3071]](_0x2b73[149],function(_0xff22x2){_0xff22x2[_0x2b73[1179]][_0x2b73[994]]()&& mxClipboard[_0x2b73[149]](_0xff22x2[_0x2b73[1179]])});this[_0x2b73[3071]](_0x2b73[3146],function(_0xff22x2){_0xff22x2[_0x2b73[1179]][_0x2b73[994]]()&& mxClipboard[_0x2b73[3146]](_0xff22x2[_0x2b73[1179]])});this[_0x2b73[3071]](_0x2b73[3147],function(_0xff22x2){_0xff22x2[_0x2b73[1179]][_0x2b73[994]]()&& _0xff22x2[_0x2b73[1179]][_0x2b73[842]]()});this[_0x2b73[3071]](_0x2b73[1504],function(_0xff22x2){_0xff22x2[_0x2b73[1179]][_0x2b73[994]]()&& _0xff22x2[_0x2b73[1179]][_0x2b73[2450]](_0xff22x2[_0x2b73[844]]())});this[_0x2b73[3071]](_0x2b73[3148],function(_0xff22x2){_0xff22x2[_0x2b73[1179]][_0x2b73[994]]()&& _0xff22x2[_0x2b73[1179]][_0x2b73[904]](_0xff22x2[_0x2b73[1179]][_0x2b73[845]]())});this[_0x2b73[3071]](_0x2b73[1997],function(_0xff22x2){_0xff22x2[_0x2b73[1179]][_0x2b73[994]]()&& _0xff22x2[_0x2b73[1179]][_0x2b73[846]]()});this[_0x2b73[3071]](_0x2b73[824],function(_0xff22x2){_0xff22x2[_0x2b73[1179]][_0x2b73[994]]()&& _0xff22x2[_0x2b73[824]]()});this[_0x2b73[3071]](_0x2b73[825],function(_0xff22x2){_0xff22x2[_0x2b73[1179]][_0x2b73[994]]()&& _0xff22x2[_0x2b73[825]]()});this[_0x2b73[3071]](_0x2b73[2558],function(_0xff22x2){_0xff22x2[_0x2b73[1179]][_0x2b73[2558]]()});this[_0x2b73[3071]](_0x2b73[2559],function(_0xff22x2){_0xff22x2[_0x2b73[1179]][_0x2b73[2559]]()});this[_0x2b73[3071]](_0x2b73[3149],function(_0xff22x2){_0xff22x2[_0x2b73[1179]][_0x2b73[2560]]()});this[_0x2b73[3071]](_0x2b73[933],function(_0xff22x2){_0xff22x2[_0x2b73[1179]][_0x2b73[933]]()});this[_0x2b73[3071]](_0x2b73[3150],function(_0xff22x2,_0xff22x3){_0xff22x2[_0x2b73[3150]](_0xff22x3)});this[_0x2b73[3071]](_0x2b73[2705],function(_0xff22x2){_0xff22x2[_0x2b73[1179]][_0x2b73[994]]()&& _0xff22x2[_0x2b73[1179]][_0x2b73[2705]]()});this[_0x2b73[3071]](_0x2b73[3151],function(_0xff22x2){_0xff22x2[_0x2b73[1179]][_0x2b73[994]]()&& _0xff22x2[_0x2b73[1179]][_0x2b73[2440]]()});this[_0x2b73[3071]](_0x2b73[2706],function(_0xff22x2){_0xff22x2[_0x2b73[1179]][_0x2b73[994]]()&& _0xff22x2[_0x2b73[1179]][_0x2b73[2706]]()});this[_0x2b73[3071]](_0x2b73[2708],function(_0xff22x2){_0xff22x2[_0x2b73[1179]][_0x2b73[994]]()&& _0xff22x2[_0x2b73[1179]][_0x2b73[2708]]()});this[_0x2b73[3071]](_0x2b73[1061],function(_0xff22x2,_0xff22x3){_0xff22x2[_0x2b73[1179]][_0x2b73[994]]()&& _0xff22x2[_0x2b73[1179]][_0x2b73[2453]](_0xff22x3)&& _0xff22x2[_0x2b73[1179]][_0x2b73[2451]](_0xff22x3)});this[_0x2b73[3071]](_0x2b73[3152],function(_0xff22x2,_0xff22x3){_0xff22x2[_0x2b73[1179]][_0x2b73[994]]()&& _0xff22x2[_0x2b73[1179]][_0x2b73[840]](!0)});this[_0x2b73[3071]](_0x2b73[3153],function(_0xff22x2,_0xff22x3){_0xff22x2[_0x2b73[1179]][_0x2b73[994]]()&& _0xff22x2[_0x2b73[1179]][_0x2b73[840]](!1)});this[_0x2b73[3071]](_0x2b73[2552],function(_0xff22x2,_0xff22x3){_0xff22x2[_0x2b73[1179]][_0x2b73[2552]](_0xff22x3)});this[_0x2b73[3071]](_0x2b73[2554],function(_0xff22x2){_0xff22x2[_0x2b73[1179]][_0x2b73[2554]]()});this[_0x2b73[3071]](_0x2b73[2442],function(_0xff22x2){_0xff22x2[_0x2b73[1179]][_0x2b73[2442]]()});this[_0x2b73[3071]](_0x2b73[3154],function(_0xff22x2){_0xff22x2[_0x2b73[1179]][_0x2b73[994]]()&& _0xff22x2[_0x2b73[1179]][_0x2b73[2702]]()});this[_0x2b73[3071]](_0x2b73[3155],function(_0xff22x2){_0xff22x2[_0x2b73[1179]][_0x2b73[994]]()&& _0xff22x2[_0x2b73[1179]][_0x2b73[2700]]()});this[_0x2b73[3071]](_0x2b73[3156],function(_0xff22x2){_0xff22x2[_0x2b73[1179]][_0x2b73[994]]()&& _0xff22x2[_0x2b73[1179]][_0x2b73[2703]]()});this[_0x2b73[3071]](_0x2b73[3157],function(_0xff22x2){_0xff22x2[_0x2b73[1179]][_0x2b73[994]]()&& _0xff22x2[_0x2b73[1179]][_0x2b73[2704]]()});this[_0x2b73[3071]](_0x2b73[2514],function(_0xff22x2){_0xff22x2[_0x2b73[1179]][_0x2b73[994]]()&& _0xff22x2[_0x2b73[1179]][_0x2b73[847]](!0)});this[_0x2b73[3071]](_0x2b73[3158],function(_0xff22x2){if(_0xff22x2[_0x2b73[1179]][_0x2b73[994]]()){var _0xff22x3=_0xff22x2[_0x2b73[1179]][_0x2b73[1728]]();_0xff22x2[_0x2b73[1179]][_0x2b73[847]](!0,!1,_0xff22x3)}});this[_0x2b73[3071]](_0x2b73[3159],function(_0xff22x2){_0xff22x2[_0x2b73[1179]][_0x2b73[994]]()&& _0xff22x2[_0x2b73[1179]][_0x2b73[847]](!1)});this[_0x2b73[3071]](_0x2b73[3160],function(_0xff22x2){if(_0xff22x2[_0x2b73[1179]][_0x2b73[994]]()){var _0xff22x3=_0xff22x2[_0x2b73[1179]][_0x2b73[1728]]();_0xff22x2[_0x2b73[1179]][_0x2b73[847]](!1,!1,_0xff22x3)}});this[_0x2b73[3071]](_0x2b73[1447],function(_0xff22x2){_0xff22x2[_0x2b73[1179]][_0x2b73[994]]()&& _0xff22x2[_0x2b73[1179]][_0x2b73[2491]](mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_BOLD)});this[_0x2b73[3071]](_0x2b73[1449],function(_0xff22x2){_0xff22x2[_0x2b73[1179]][_0x2b73[994]]()&& _0xff22x2[_0x2b73[1179]][_0x2b73[2491]](mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_ITALIC)});this[_0x2b73[3071]](_0x2b73[355],function(_0xff22x2){_0xff22x2[_0x2b73[1179]][_0x2b73[994]]()&& _0xff22x2[_0x2b73[1179]][_0x2b73[2491]](mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_UNDERLINE)});this[_0x2b73[3071]](_0x2b73[639],function(_0xff22x2){_0xff22x2[_0x2b73[1179]][_0x2b73[994]]()&& _0xff22x2[_0x2b73[1179]][_0x2b73[2491]](mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_SHADOW)});this[_0x2b73[3071]](_0x2b73[3161],function(_0xff22x2){_0xff22x2[_0x2b73[1179]][_0x2b73[994]]()&& _0xff22x2[_0x2b73[1179]][_0x2b73[849]](mxConstants.ALIGN_LEFT)});this[_0x2b73[3071]](_0x2b73[3162],function(_0xff22x2){_0xff22x2[_0x2b73[1179]][_0x2b73[994]]()&& _0xff22x2[_0x2b73[1179]][_0x2b73[849]](mxConstants.ALIGN_CENTER)});this[_0x2b73[3071]](_0x2b73[3163],function(_0xff22x2){_0xff22x2[_0x2b73[1179]][_0x2b73[994]]()&& _0xff22x2[_0x2b73[1179]][_0x2b73[849]](mxConstants.ALIGN_RIGHT)});this[_0x2b73[3071]](_0x2b73[3164],function(_0xff22x2){_0xff22x2[_0x2b73[1179]][_0x2b73[994]]()&& _0xff22x2[_0x2b73[1179]][_0x2b73[849]](mxConstants.ALIGN_TOP)});this[_0x2b73[3071]](_0x2b73[3165],function(_0xff22x2){_0xff22x2[_0x2b73[1179]][_0x2b73[994]]()&& _0xff22x2[_0x2b73[1179]][_0x2b73[849]](mxConstants.ALIGN_MIDDLE)});this[_0x2b73[3071]](_0x2b73[3166],function(_0xff22x2){_0xff22x2[_0x2b73[1179]][_0x2b73[994]]()&& _0xff22x2[_0x2b73[1179]][_0x2b73[849]](mxConstants.ALIGN_BOTTOM)});this[_0x2b73[3071]](_0x2b73[3167],function(_0xff22x2){_0xff22x2[_0x2b73[1179]][_0x2b73[1717]](mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT)});this[_0x2b73[3071]](_0x2b73[3168],function(_0xff22x2){_0xff22x2[_0x2b73[1179]][_0x2b73[994]]()&& _0xff22x2[_0x2b73[1179]][_0x2b73[1717]](mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER)});this[_0x2b73[3071]](_0x2b73[3169],function(_0xff22x2){_0xff22x2[_0x2b73[1179]][_0x2b73[994]]()&& _0xff22x2[_0x2b73[1179]][_0x2b73[1717]](mxConstants.STYLE_ALIGN,mxConstants.ALIGN_RIGHT)});this[_0x2b73[3071]](_0x2b73[3170],function(_0xff22x2){_0xff22x2[_0x2b73[1179]][_0x2b73[994]]()&& _0xff22x2[_0x2b73[1179]][_0x2b73[1717]](mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_TOP)});this[_0x2b73[3071]](_0x2b73[3171],function(_0xff22x2){_0xff22x2[_0x2b73[1179]][_0x2b73[994]]()&& _0xff22x2[_0x2b73[1179]][_0x2b73[1717]](mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE)});this[_0x2b73[3071]](_0x2b73[3172],function(_0xff22x2){_0xff22x2[_0x2b73[1179]][_0x2b73[994]]()&& _0xff22x2[_0x2b73[1179]][_0x2b73[1717]](mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_BOTTOM)});this[_0x2b73[3071]](_0x2b73[499],function(_0xff22x2){var _0xff22x3=100* _0xff22x2[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[255]],_0xff22x3=parseFloat(mxUtils[_0x2b73[3173]](mxResources[_0x2b73[203]](_0xff22x2[_0x2b73[3104]])|| _0xff22x2[_0x2b73[3104]],_0xff22x3))/ 100;isNaN(_0xff22x3)|| _0xff22x2[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[2262]](_0xff22x3)});this[_0x2b73[3071]](_0x2b73[3174],function(_0xff22x2){null!= _0xff22x2[_0x2b73[3112]]?_0xff22x2[_0x2b73[3112]][_0x2b73[175]](!_0xff22x2[_0x2b73[3112]][_0x2b73[174]]()):_0xff22x2[_0x2b73[3175]]()});this[_0x2b73[3071]](_0x2b73[3176],function(_0xff22x2){null!= _0xff22x2[_0x2b73[2719]]?_0xff22x2[_0x2b73[2719]][_0x2b73[175]](!_0xff22x2[_0x2b73[2719]][_0x2b73[174]]()):_0xff22x2[_0x2b73[3177]]()});this[_0x2b73[3071]](_0x2b73[3178],function(_0xff22x2){null== _0xff22x2[_0x2b73[2136]]?_0xff22x2[_0x2b73[3179]]():_0xff22x2[_0x2b73[2136]][_0x2b73[175]](!_0xff22x2[_0x2b73[2136]][_0x2b73[174]]())});this[_0x2b73[3071]](_0x2b73[3180],function(_0xff22x2){mxLog[_0x2b73[175]](!mxLog[_0x2b73[174]]())})};mxEditor[_0x2b73[202]][_0x2b73[3102]]= function(){var _0xff22x2=mxUtils[_0x2b73[885]](this,function(_0xff22x2){this[_0x2b73[746]]( new mxEventObject(mxEvent.SESSION,_0x2b73[812],_0xff22x2))});return this[_0x2b73[807]](this[_0x2b73[1056]],this[_0x2b73[1057]],this[_0x2b73[1058]],_0xff22x2)};mxEditor[_0x2b73[202]][_0x2b73[3099]]= function(_0xff22x2){null!= _0xff22x2&& (( new mxCodec(_0xff22x2[_0x2b73[295]]))[_0x2b73[1093]](_0xff22x2,this),this[_0x2b73[3181]]())};mxEditor[_0x2b73[202]][_0x2b73[3182]]= function(){document[_0x2b73[3183]]= _0x2b73[3184]};mxEditor[_0x2b73[202]][_0x2b73[3181]]= function(){this[_0x2b73[1184]]= ( new Date)[_0x2b73[178]]();this[_0x2b73[3095]][_0x2b73[200]]();this[_0x2b73[1183]]= 0;this[_0x2b73[2128]](!1)};mxEditor[_0x2b73[202]][_0x2b73[3071]]= function(_0xff22x2,_0xff22x3){this[_0x2b73[3091]][_0xff22x2]= _0xff22x3};mxEditor[_0x2b73[202]][_0x2b73[350]]= function(_0xff22x2,_0xff22x3,_0xff22x4){var _0xff22x5=this[_0x2b73[3091]][_0xff22x2];if(null!= _0xff22x5){try{var _0xff22x9=arguments;_0xff22x9[0]= this;_0xff22x5[_0x2b73[183]](this,_0xff22x9)}catch(f){throw mxUtils[_0x2b73[267]](_0x2b73[3185]+ _0xff22x2+ _0x2b73[3186]+ f[_0x2b73[281]],280,!0),f}}else {mxUtils[_0x2b73[267]](_0x2b73[3187]+ _0xff22x2,280,!0)}};mxEditor[_0x2b73[202]][_0x2b73[3188]]= function(_0xff22x2,_0xff22x3){this[_0x2b73[3118]][_0xff22x2]= _0xff22x3};mxEditor[_0x2b73[202]][_0x2b73[3189]]= function(_0xff22x2){return this[_0x2b73[3118]][_0xff22x2]};mxEditor[_0x2b73[202]][_0x2b73[3096]]= function(){var _0xff22x2= new mxGraph(null,null,this[_0x2b73[2720]]);_0xff22x2[_0x2b73[2673]](!0);_0xff22x2[_0x2b73[2674]](!0);this[_0x2b73[3190]](_0xff22x2);this[_0x2b73[3191]](_0xff22x2);this[_0x2b73[3192]](_0xff22x2);this[_0x2b73[3193]](_0xff22x2);this[_0x2b73[3194]](_0xff22x2);_0xff22x2[_0x2b73[2316]][_0x2b73[1033]]= mxUtils[_0x2b73[885]](this,function(_0xff22x2,_0xff22x4,_0xff22x5){return this[_0x2b73[3195]](_0xff22x2,_0xff22x4,_0xff22x5)});_0xff22x2[_0x2b73[2433]][_0x2b73[1033]]= mxUtils[_0x2b73[885]](this,function(_0xff22x2,_0xff22x4){return this[_0x2b73[2503]](_0xff22x2,_0xff22x4)});this[_0x2b73[3196]](_0xff22x2);this[_0x2b73[3197]](_0xff22x2);return _0xff22x2};mxEditor[_0x2b73[202]][_0x2b73[3196]]= function(_0xff22x2){_0xff22x2= new mxSwimlaneManager(_0xff22x2,!1);_0xff22x2[_0x2b73[1737]]= mxUtils[_0x2b73[885]](this,function(){return this[_0x2b73[3089]]});_0xff22x2[_0x2b73[994]]= mxUtils[_0x2b73[885]](this,function(){return this[_0x2b73[3128]]});return _0xff22x2};mxEditor[_0x2b73[202]][_0x2b73[3197]]= function(_0xff22x2){var _0xff22x3= new mxLayoutManager(_0xff22x2),_0xff22x4=this;_0xff22x3[_0x2b73[2754]]= function(_0xff22x3){var _0xff22x9=null,_0xff22xa=_0xff22x4[_0x2b73[1179]][_0x2b73[502]]();if(null!= _0xff22xa[_0x2b73[1197]](_0xff22x3)){if(_0xff22x4[_0x2b73[3129]]&& _0xff22x2[_0x2b73[1730]](_0xff22x3)){null== _0xff22x4[_0x2b73[3198]]&& (_0xff22x4[_0x2b73[3198]]= _0xff22x4[_0x2b73[3199]]()),_0xff22x9= _0xff22x4[_0x2b73[3198]]}else {if(_0xff22x4[_0x2b73[3126]]&& (_0xff22x2[_0x2b73[2553]](_0xff22x3)|| null== _0xff22xa[_0x2b73[1197]](_0xff22xa[_0x2b73[1197]](_0xff22x3)))){null== _0xff22x4[_0x2b73[3200]]&& (_0xff22x4[_0x2b73[3200]]= _0xff22x4[_0x2b73[3201]]()),_0xff22x9= _0xff22x4[_0x2b73[3200]]}}};return _0xff22x9};return _0xff22x3};mxEditor[_0x2b73[202]][_0x2b73[3202]]= function(_0xff22x2){null== this[_0x2b73[1179]][_0x2b73[526]]&& (this[_0x2b73[1179]][_0x2b73[176]](_0xff22x2),this[_0x2b73[3203]]= new mxRubberband(this[_0x2b73[1179]]),this[_0x2b73[1157]]&& mxEvent[_0x2b73[1157]](_0xff22x2),mxClient[_0x2b73[496]]&& new mxDivResizer(_0xff22x2))};mxEditor[_0x2b73[202]][_0x2b73[3190]]= function(_0xff22x2){_0xff22x2[_0x2b73[169]](mxEvent.DOUBLE_CLICK,mxUtils[_0x2b73[885]](this,function(_0xff22x3,_0xff22x4){var _0xff22x5=_0xff22x4[_0x2b73[720]](_0x2b73[246]);null!= _0xff22x5&& (_0xff22x2[_0x2b73[994]]()&& null!= this[_0x2b73[3115]])&& (this[_0x2b73[350]](this[_0x2b73[3115]],_0xff22x5),_0xff22x4[_0x2b73[722]]())}))};mxEditor[_0x2b73[202]][_0x2b73[3191]]= function(_0xff22x2){var _0xff22x3=mxUtils[_0x2b73[885]](this,function(_0xff22x2,_0xff22x3){var _0xff22x9=_0xff22x3[_0x2b73[720]](_0x2b73[1061]);this[_0x2b73[3095]][_0x2b73[1114]](_0xff22x9)});_0xff22x2[_0x2b73[502]]()[_0x2b73[169]](mxEvent.UNDO,_0xff22x3);_0xff22x2[_0x2b73[249]]()[_0x2b73[169]](mxEvent.UNDO,_0xff22x3);_0xff22x3= function(_0xff22x3,_0xff22x5){var _0xff22x9=_0xff22x5[_0x2b73[720]](_0x2b73[1061])[_0x2b73[1065]];_0xff22x2[_0x2b73[904]](_0xff22x2[_0x2b73[2436]](_0xff22x9))};this[_0x2b73[3095]][_0x2b73[169]](mxEvent.UNDO,_0xff22x3);this[_0x2b73[3095]][_0x2b73[169]](mxEvent.REDO,_0xff22x3)};mxEditor[_0x2b73[202]][_0x2b73[3192]]= function(_0xff22x2){var _0xff22x3=mxUtils[_0x2b73[885]](this,function(_0xff22x2){this[_0x2b73[746]]( new mxEventObject(mxEvent.ROOT))});_0xff22x2[_0x2b73[249]]()[_0x2b73[169]](mxEvent.DOWN,_0xff22x3);_0xff22x2[_0x2b73[249]]()[_0x2b73[169]](mxEvent.UP,_0xff22x3)};mxEditor[_0x2b73[202]][_0x2b73[3193]]= function(_0xff22x2){var _0xff22x3=mxUtils[_0x2b73[885]](this,function(_0xff22x3,_0xff22x5){this[_0x2b73[2128]](!0);!0== this[_0x2b73[3140]]&& _0xff22x2[_0x2b73[2585]]();for(var _0xff22x9=_0xff22x5[_0x2b73[720]](_0x2b73[1061])[_0x2b73[1065]],_0xff22xa=0;_0xff22xa< _0xff22x9[_0x2b73[67]];_0xff22xa++){var _0xff22x12=_0xff22x9[_0xff22xa];if(_0xff22x12 instanceof mxRootChange|| _0xff22x12 instanceof mxValueChange&& _0xff22x12[_0x2b73[246]]== this[_0x2b73[1179]][_0x2b73[251]][_0x2b73[813]]|| _0xff22x12 instanceof mxCellAttributeChange&& _0xff22x12[_0x2b73[246]]== this[_0x2b73[1179]][_0x2b73[251]][_0x2b73[813]]){this[_0x2b73[746]]( new mxEventObject(mxEvent.ROOT));break}}});_0xff22x2[_0x2b73[502]]()[_0x2b73[169]](mxEvent.CHANGE,_0xff22x3)};mxEditor[_0x2b73[202]][_0x2b73[3194]]= function(_0xff22x2){var _0xff22x3=this;_0xff22x2[_0x2b73[1133]]({mouseDown:function(_0xff22x2,_0xff22x5){if(null!= _0xff22x3[_0x2b73[3083]]&& !_0xff22x5[_0x2b73[737]]()&& (_0xff22x3[_0x2b73[3117]]|| null== _0xff22x5[_0x2b73[248]]())){_0xff22x3[_0x2b73[1179]][_0x2b73[2440]](),_0xff22x3[_0x2b73[3083]](_0xff22x5[_0x2b73[727]](),_0xff22x5[_0x2b73[736]]()),this[_0x2b73[1142]]= !0,_0xff22x5[_0x2b73[722]]()}},mouseMove:function(_0xff22x2,_0xff22x3){this[_0x2b73[1142]]&& _0xff22x3[_0x2b73[722]]()},mouseUp:function(_0xff22x2,_0xff22x3){this[_0x2b73[1142]]&& (this[_0x2b73[1142]]= !1,_0xff22x3[_0x2b73[722]]())}})};mxEditor[_0x2b73[202]][_0x2b73[3201]]= function(){var _0xff22x2=this[_0x2b73[1179]][_0x2b73[1020]],_0xff22x3= new mxStackLayout(this[_0x2b73[1179]],!this[_0x2b73[3089]],this[_0x2b73[3127]],2* _0xff22x2,2* _0xff22x2);_0xff22x3[_0x2b73[1713]]= function(_0xff22x2){return !_0xff22x3[_0x2b73[1179]][_0x2b73[1730]](_0xff22x2)};return _0xff22x3};mxEditor[_0x2b73[202]][_0x2b73[3199]]= function(){return new mxCompactTreeLayout(this[_0x2b73[1179]],this[_0x2b73[3089]])};mxEditor[_0x2b73[202]][_0x2b73[3097]]= function(){return new mxDefaultToolbar(null,this)};mxEditor[_0x2b73[202]][_0x2b73[3204]]= function(_0xff22x2){this[_0x2b73[3082]][_0x2b73[176]](_0xff22x2);mxClient[_0x2b73[496]]&& new mxDivResizer(_0xff22x2)};mxEditor[_0x2b73[202]][_0x2b73[3205]]= function(_0xff22x2){null== this[_0x2b73[879]]&& (this[_0x2b73[879]]= _0xff22x2,this[_0x2b73[169]](mxEvent.SAVE,mxUtils[_0x2b73[885]](this,function(){var _0xff22x2=( new Date)[_0x2b73[3206]]();this[_0x2b73[3207]]((mxResources[_0x2b73[203]](this[_0x2b73[3106]])|| this[_0x2b73[3106]])+ _0x2b73[3186]+ _0xff22x2)})),this[_0x2b73[169]](mxEvent.OPEN,mxUtils[_0x2b73[885]](this,function(){this[_0x2b73[3207]]((mxResources[_0x2b73[203]](this[_0x2b73[3108]])|| this[_0x2b73[3108]])+ _0x2b73[3186]+ this[_0x2b73[3122]])})),mxClient[_0x2b73[496]]&& new mxDivResizer(_0xff22x2))};mxEditor[_0x2b73[202]][_0x2b73[3207]]= function(_0xff22x2){null!= this[_0x2b73[879]]&& null!= _0xff22x2&& (this[_0x2b73[879]][_0x2b73[339]]= _0xff22x2)};mxEditor[_0x2b73[202]][_0x2b73[3208]]= function(_0xff22x2){this[_0x2b73[169]](mxEvent.ROOT,mxUtils[_0x2b73[885]](this,function(_0xff22x3){_0xff22x2[_0x2b73[339]]= this[_0x2b73[3209]]()}));mxClient[_0x2b73[496]]&& new mxDivResizer(_0xff22x2)};mxEditor[_0x2b73[202]][_0x2b73[3210]]= function(_0xff22x2,_0xff22x3){null!= _0xff22x2&& ( new mxCompactTreeLayout(this[_0x2b73[1179]],_0xff22x3))[_0x2b73[350]](_0xff22x2)};mxEditor[_0x2b73[202]][_0x2b73[3209]]= function(){for(var _0xff22x2=_0x2b73[110],_0xff22x3=this[_0x2b73[1179]],_0xff22x4=_0xff22x3[_0x2b73[2534]]();null!= _0xff22x4&& null!= _0xff22x3[_0x2b73[502]]()[_0x2b73[1197]](_0xff22x3[_0x2b73[502]]()[_0x2b73[1197]](_0xff22x4));){_0xff22x3[_0x2b73[2553]](_0xff22x4)&& (_0xff22x2= _0x2b73[3211]+ _0xff22x3[_0x2b73[2454]](_0xff22x4)+ _0xff22x2),_0xff22x4= _0xff22x3[_0x2b73[502]]()[_0x2b73[1197]](_0xff22x4)};return this[_0x2b73[3212]]()+ _0xff22x2};mxEditor[_0x2b73[202]][_0x2b73[3212]]= function(){var _0xff22x2=this[_0x2b73[1179]][_0x2b73[502]]()[_0x2b73[501]]();return this[_0x2b73[1179]][_0x2b73[2454]](_0xff22x2)};mxEditor[_0x2b73[202]][_0x2b73[824]]= function(){this[_0x2b73[3095]][_0x2b73[824]]()};mxEditor[_0x2b73[202]][_0x2b73[825]]= function(){this[_0x2b73[3095]][_0x2b73[825]]()};mxEditor[_0x2b73[202]][_0x2b73[844]]= function(){var _0xff22x2=null!= this[_0x2b73[3121]]?this[_0x2b73[3121]]:this[_0x2b73[1179]][_0x2b73[1020]];return this[_0x2b73[1179]][_0x2b73[844]](this[_0x2b73[3213]](),_0xff22x2)};mxEditor[_0x2b73[202]][_0x2b73[3213]]= function(){return this[_0x2b73[1179]][_0x2b73[502]]()[_0x2b73[1978]](this[_0x2b73[3120]])};mxEditor[_0x2b73[202]][_0x2b73[392]]= function(_0xff22x2){if(null!= _0xff22x2){var _0xff22x3=mxUtils[_0x2b73[219]](_0xff22x2)[_0x2b73[875]]();this[_0x2b73[3214]](_0xff22x3[_0x2b73[158]]);this[_0x2b73[3122]]= _0xff22x2;this[_0x2b73[746]]( new mxEventObject(mxEvent.OPEN,_0x2b73[3122],_0xff22x2))}};mxEditor[_0x2b73[202]][_0x2b73[3214]]= function(_0xff22x2){( new mxCodec(_0xff22x2[_0x2b73[295]]))[_0x2b73[1093]](_0xff22x2,this[_0x2b73[1179]][_0x2b73[502]]());this[_0x2b73[3181]]()};mxEditor[_0x2b73[202]][_0x2b73[815]]= function(_0xff22x2,_0xff22x3){_0xff22x2= _0xff22x2|| this[_0x2b73[3215]]();if(null!= _0xff22x2&& 0< _0xff22x2[_0x2b73[67]]){var _0xff22x4=this[_0x2b73[3216]](_0xff22x3);this[_0x2b73[3217]](_0xff22x2,_0xff22x4);this[_0x2b73[2128]](!1)};this[_0x2b73[746]]( new mxEventObject(mxEvent.SAVE,_0x2b73[863],_0xff22x2))};mxEditor[_0x2b73[202]][_0x2b73[3217]]= function(_0xff22x2,_0xff22x3){this[_0x2b73[1070]]&& (_0xff22x3= encodeURIComponent(_0xff22x3));mxUtils[_0x2b73[814]](_0xff22x2,this[_0x2b73[3123]]+ _0x2b73[226]+ _0xff22x3,mxUtils[_0x2b73[885]](this,function(_0xff22x4){this[_0x2b73[746]]( new mxEventObject(mxEvent.POST,_0x2b73[870],_0xff22x4,_0x2b73[863],_0xff22x2,_0x2b73[410],_0xff22x3))}))};mxEditor[_0x2b73[202]][_0x2b73[3216]]= function(_0xff22x2){_0xff22x2= null!= _0xff22x2?_0xff22x2:this[_0x2b73[1069]];var _0xff22x3=( new mxCodec)[_0x2b73[514]](this[_0x2b73[1179]][_0x2b73[502]]());return mxUtils[_0x2b73[875]](_0xff22x3,_0xff22x2)};mxEditor[_0x2b73[202]][_0x2b73[3215]]= function(){return this[_0x2b73[3124]]};mxEditor[_0x2b73[202]][_0x2b73[3142]]= function(){return this[_0x2b73[3125]]};mxEditor[_0x2b73[202]][_0x2b73[807]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){var _0xff22x9=null;mxClient[_0x2b73[3101]]|| (_0xff22x9= new mxSession(this[_0x2b73[1179]][_0x2b73[502]](),_0xff22x2,_0xff22x3,_0xff22x4),_0xff22x9[_0x2b73[169]](mxEvent.RECEIVE,mxUtils[_0x2b73[885]](this,function(_0xff22x2,_0xff22x3){null!= _0xff22x3[_0x2b73[720]](_0x2b73[252])[_0x2b73[284]](_0x2b73[1088])&& this[_0x2b73[3181]]()})),_0xff22x9[_0x2b73[169]](mxEvent.DISCONNECT,_0xff22x5),_0xff22x9[_0x2b73[169]](mxEvent.CONNECT,_0xff22x5),_0xff22x9[_0x2b73[169]](mxEvent.NOTIFY,_0xff22x5),_0xff22x9[_0x2b73[169]](mxEvent.GET,_0xff22x5),_0xff22x9[_0x2b73[861]]());return _0xff22x9};mxEditor[_0x2b73[202]][_0x2b73[3218]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=this[_0x2b73[1179]][_0x2b73[2434]]()[_0x2b73[2054]][_0xff22x3];this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[2434]]()[_0x2b73[2074]](_0xff22x3,this[_0x2b73[1179]][_0x2b73[2434]]()[_0x2b73[2054]][_0xff22x2]);this[_0x2b73[1179]][_0x2b73[2434]]()[_0x2b73[2074]](_0xff22x2,_0xff22x4);this[_0x2b73[1179]][_0x2b73[802]]()};mxEditor[_0x2b73[202]][_0x2b73[3150]]= function(_0xff22x2){_0xff22x2= _0xff22x2|| this[_0x2b73[1179]][_0x2b73[2452]]();null== _0xff22x2&& (_0xff22x2= this[_0x2b73[1179]][_0x2b73[2534]](),null== _0xff22x2&& (_0xff22x2= this[_0x2b73[1179]][_0x2b73[502]]()[_0x2b73[501]]()));if(null!= _0xff22x2){this[_0x2b73[1179]][_0x2b73[2126]](!0);var _0xff22x3=mxUtils[_0x2b73[445]](this[_0x2b73[1179]][_0x2b73[526]]),_0xff22x4=_0xff22x3[_0x2b73[235]]+ 10,_0xff22x3=_0xff22x3[_0x2b73[236]];if(null!= this[_0x2b73[716]]&& !this[_0x2b73[3139]]){_0xff22x4= this[_0x2b73[716]][_0x2b73[730]](),_0xff22x3= this[_0x2b73[716]][_0x2b73[732]]()}else {var _0xff22x5=this[_0x2b73[1179]][_0x2b73[2555]](_0xff22x2);null!= _0xff22x5&& (_0xff22x4+= _0xff22x5[_0x2b73[235]]+ Math[_0x2b73[243]](200,_0xff22x5[_0x2b73[117]]),_0xff22x3+= _0xff22x5[_0x2b73[236]])};this[_0x2b73[3062]]();_0xff22x2= this[_0x2b73[3219]](_0xff22x2);null!= _0xff22x2&& (this[_0x2b73[716]]= new mxWindow(mxResources[_0x2b73[203]](this[_0x2b73[3110]])|| this[_0x2b73[3110]],_0xff22x2,_0xff22x4,_0xff22x3,this[_0x2b73[3137]],this[_0x2b73[3138]],!1),this[_0x2b73[716]][_0x2b73[175]](!0))}};mxEditor[_0x2b73[202]][_0x2b73[3220]]= function(){return null!= this[_0x2b73[716]]};mxEditor[_0x2b73[202]][_0x2b73[3219]]= function(_0xff22x2){var _0xff22x3=this[_0x2b73[1179]][_0x2b73[502]](),_0xff22x4=_0xff22x3[_0x2b73[433]](_0xff22x2);if(mxUtils[_0x2b73[1331]](_0xff22x4)){var _0xff22x5= new mxForm(_0x2b73[716]);_0xff22x5[_0x2b73[961]](_0x2b73[3222],_0xff22x2[_0x2b73[1103]]())[_0x2b73[57]](_0x2b73[3221],_0x2b73[128]);var _0xff22x9=null,_0xff22xa=null,_0xff22x12=null,_0xff22x13=null,_0xff22x14=null;_0xff22x3[_0x2b73[1193]](_0xff22x2)&& (_0xff22x9= _0xff22x3[_0x2b73[1721]](_0xff22x2),null!= _0xff22x9&& (_0xff22xa= _0xff22x5[_0x2b73[961]](_0x2b73[125],_0xff22x9[_0x2b73[236]]),_0xff22x12= _0xff22x5[_0x2b73[961]](_0x2b73[361],_0xff22x9[_0x2b73[235]]),_0xff22x13= _0xff22x5[_0x2b73[961]](_0x2b73[117],_0xff22x9[_0x2b73[117]]),_0xff22x14= _0xff22x5[_0x2b73[961]](_0x2b73[119],_0xff22x9[_0x2b73[119]])));for(var _0xff22x15=_0xff22x3[_0x2b73[474]](_0xff22x2),_0xff22x16=_0xff22x5[_0x2b73[961]](_0x2b73[3223],_0xff22x15|| _0x2b73[110]),_0xff22x17=_0xff22x4[_0x2b73[320]],_0xff22x18=[],_0xff22x4=0;_0xff22x4< _0xff22x17[_0x2b73[67]];_0xff22x4++){_0xff22x18[_0xff22x4]= _0xff22x5[_0x2b73[968]](_0xff22x17[_0xff22x4][_0x2b73[301]],_0xff22x17[_0xff22x4][_0x2b73[318]],_0x2b73[685]== _0xff22x17[_0xff22x4][_0x2b73[301]]?4:2)};_0xff22x4= mxUtils[_0x2b73[885]](this,function(){this[_0x2b73[3062]]();_0xff22x3[_0x2b73[473]]();try{null!= _0xff22x9&& (_0xff22x9= _0xff22x9[_0x2b73[238]](),_0xff22x9[_0x2b73[235]]= parseFloat(_0xff22x12[_0x2b73[131]]),_0xff22x9[_0x2b73[236]]= parseFloat(_0xff22xa[_0x2b73[131]]),_0xff22x9[_0x2b73[117]]= parseFloat(_0xff22x13[_0x2b73[131]]),_0xff22x9[_0x2b73[119]]= parseFloat(_0xff22x14[_0x2b73[131]]),_0xff22x3[_0x2b73[1724]](_0xff22x2,_0xff22x9));0< _0xff22x16[_0x2b73[131]][_0x2b73[67]]?_0xff22x3[_0x2b73[475]](_0xff22x2,_0xff22x16[_0x2b73[131]]):_0xff22x3[_0x2b73[475]](_0xff22x2,null);for(var _0xff22x4=0;_0xff22x4< _0xff22x17[_0x2b73[67]];_0xff22x4++){var _0xff22x5= new mxCellAttributeChange(_0xff22x2,_0xff22x17[_0xff22x4][_0x2b73[301]],_0xff22x18[_0xff22x4][_0x2b73[131]]);_0xff22x3[_0x2b73[350]](_0xff22x5)};this[_0x2b73[1179]][_0x2b73[2455]](_0xff22x2)&& this[_0x2b73[1179]][_0x2b73[858]](_0xff22x2)}finally{_0xff22x3[_0x2b73[476]]()}});_0xff22x15= mxUtils[_0x2b73[885]](this,function(){this[_0x2b73[3062]]()});_0xff22x5[_0x2b73[956]](_0xff22x4,_0xff22x15);return _0xff22x5[_0x2b73[116]]};return null};mxEditor[_0x2b73[202]][_0x2b73[3062]]= function(){null!= this[_0x2b73[716]]&& (this[_0x2b73[716]][_0x2b73[515]](),this[_0x2b73[716]]= null)};mxEditor[_0x2b73[202]][_0x2b73[3175]]= function(){if(null== this[_0x2b73[3112]]){var _0xff22x2=document[_0x2b73[55]](_0x2b73[485]);_0xff22x2[_0x2b73[124]][_0x2b73[549]]= _0x2b73[952];_0xff22x2[_0x2b73[124]][_0x2b73[357]]= _0x2b73[550];var _0xff22x3=document[_0x2b73[112]][_0x2b73[159]],_0xff22x3= new mxWindow(mxResources[_0x2b73[203]](this[_0x2b73[3111]])|| this[_0x2b73[3111]],_0xff22x2,_0xff22x3- 220,this[_0x2b73[3132]],200);_0xff22x3[_0x2b73[164]](!0);_0xff22x3[_0x2b73[165]]= !1;var _0xff22x4=mxUtils[_0x2b73[885]](this,function(_0xff22x3){mxEvent[_0x2b73[762]](_0xff22x2);_0xff22x2[_0x2b73[339]]= _0x2b73[110];this[_0x2b73[3224]](_0xff22x2)});this[_0x2b73[1179]][_0x2b73[502]]()[_0x2b73[169]](mxEvent.CHANGE,_0xff22x4);this[_0x2b73[1179]][_0x2b73[2435]]()[_0x2b73[169]](mxEvent.CHANGE,_0xff22x4);this[_0x2b73[1179]][_0x2b73[169]](mxEvent.ROOT,_0xff22x4);null!= this[_0x2b73[3131]]&& _0xff22x3[_0x2b73[951]](this[_0x2b73[3131]]);this[_0x2b73[3112]]= _0xff22x3;this[_0x2b73[3224]](_0xff22x2)};this[_0x2b73[3112]][_0x2b73[175]](!0)};mxEditor[_0x2b73[202]][_0x2b73[3225]]= function(_0xff22x2){null!= this[_0x2b73[3112]]&& (_0xff22x2= this[_0x2b73[3112]][_0x2b73[905]],mxEvent[_0x2b73[762]](_0xff22x2),_0xff22x2[_0x2b73[339]]= _0x2b73[110],this[_0x2b73[3224]](_0xff22x2))};mxEditor[_0x2b73[202]][_0x2b73[3224]]= function(_0xff22x2){};mxEditor[_0x2b73[202]][_0x2b73[3177]]= function(_0xff22x2){if(null== this[_0x2b73[2719]]){var _0xff22x3=document[_0x2b73[55]](_0x2b73[389]);_0xff22x3[_0x2b73[57]](_0x2b73[390],mxResources[_0x2b73[203]](_0x2b73[3134])|| this[_0x2b73[3134]]);_0xff22x3[_0x2b73[57]](_0x2b73[119],_0x2b73[118]);_0xff22x3[_0x2b73[57]](_0x2b73[117],_0x2b73[118]);_0xff22x3[_0x2b73[57]](_0x2b73[3226],_0x2b73[468]);_0xff22x3[_0x2b73[124]][_0x2b73[1028]]= _0x2b73[1391];_0xff22x2= document[_0x2b73[112]][_0x2b73[159]];var _0xff22x4=document[_0x2b73[112]][_0x2b73[157]]|| document[_0x2b73[158]][_0x2b73[157]],_0xff22x5= new mxWindow(mxResources[_0x2b73[203]](this[_0x2b73[3113]])|| this[_0x2b73[3113]],_0xff22x3,(_0xff22x2- this[_0x2b73[3135]])/ 2,(_0xff22x4- this[_0x2b73[3136]])/ 3,this[_0x2b73[3135]],this[_0x2b73[3136]]);_0xff22x5[_0x2b73[161]](!0);_0xff22x5[_0x2b73[164]](!0);_0xff22x5[_0x2b73[165]]= !1;_0xff22x5[_0x2b73[163]](!0);null!= this[_0x2b73[3133]]&& _0xff22x5[_0x2b73[951]](this[_0x2b73[3133]]);mxClient[_0x2b73[133]]&& (_0xff22x2= function(_0xff22x2){_0xff22x3[_0x2b73[57]](_0x2b73[119],_0xff22x5[_0x2b73[485]][_0x2b73[167]]- 26+ _0x2b73[168])},_0xff22x5[_0x2b73[169]](mxEvent.RESIZE_END,_0xff22x2),_0xff22x5[_0x2b73[169]](mxEvent.MAXIMIZE,_0xff22x2),_0xff22x5[_0x2b73[169]](mxEvent.NORMALIZE,_0xff22x2),_0xff22x5[_0x2b73[169]](mxEvent.SHOW,_0xff22x2));this[_0x2b73[2719]]= _0xff22x5};this[_0x2b73[2719]][_0x2b73[175]](!0)};mxEditor[_0x2b73[202]][_0x2b73[3179]]= function(){if(null== this[_0x2b73[2136]]){var _0xff22x2=document[_0x2b73[55]](_0x2b73[485]);_0xff22x2[_0x2b73[124]][_0x2b73[277]]= _0x2b73[188];_0xff22x2[_0x2b73[124]][_0x2b73[117]]= _0x2b73[118];_0xff22x2[_0x2b73[124]][_0x2b73[119]]= _0x2b73[118];_0xff22x2[_0x2b73[124]][_0x2b73[1537]]= _0x2b73[1391];_0xff22x2[_0x2b73[124]][_0x2b73[270]]= _0x2b73[582];var _0xff22x3= new mxWindow(mxResources[_0x2b73[203]](this[_0x2b73[3114]])|| this[_0x2b73[3114]],_0xff22x2,600,480,200,200,!1),_0xff22x4= new mxOutline(this[_0x2b73[1179]],_0xff22x2);_0xff22x3[_0x2b73[164]](!0);_0xff22x3[_0x2b73[163]](!0);_0xff22x3[_0x2b73[165]]= !1;_0xff22x3[_0x2b73[169]](mxEvent.RESIZE_END,function(){_0xff22x4[_0x2b73[2729]]()});this[_0x2b73[2136]]= _0xff22x3;this[_0x2b73[2136]][_0x2b73[2136]]= _0xff22x4};this[_0x2b73[2136]][_0x2b73[175]](!0);this[_0x2b73[2136]][_0x2b73[2136]][_0x2b73[2729]](!0)};mxEditor[_0x2b73[202]][_0x2b73[3086]]= function(_0xff22x2){_0x2b73[804]== _0xff22x2?(this[_0x2b73[1179]][_0x2b73[2316]][_0x2b73[2840]]= !1,this[_0x2b73[1179]][_0x2b73[1995]](!1)):_0x2b73[807]== _0xff22x2?(this[_0x2b73[1179]][_0x2b73[2316]][_0x2b73[2840]]= !1,this[_0x2b73[1179]][_0x2b73[1995]](!0)):_0x2b73[796]== _0xff22x2&& (this[_0x2b73[1179]][_0x2b73[2316]][_0x2b73[2840]]= !0,this[_0x2b73[1179]][_0x2b73[1995]](!1))};mxEditor[_0x2b73[202]][_0x2b73[3195]]= function(_0xff22x2,_0xff22x3,_0xff22x4){this[_0x2b73[3094]][_0x2b73[3065]](this,_0xff22x2,_0xff22x3,_0xff22x4)};mxEditor[_0x2b73[202]][_0x2b73[2503]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=null;if(null!= this[_0x2b73[2075]]){_0xff22x4= this[_0x2b73[1179]][_0x2b73[502]]()[_0x2b73[1978]](this[_0x2b73[2075]])}else {_0xff22x4= new mxCell(_0x2b73[110]);_0xff22x4[_0x2b73[1994]](!0);var _0xff22x5= new mxGeometry;_0xff22x5[_0x2b73[1500]]= !0;_0xff22x4[_0x2b73[1724]](_0xff22x5)};_0xff22x5= this[_0x2b73[2291]]();null!= _0xff22x5&& _0xff22x4[_0x2b73[475]](_0xff22x5);return _0xff22x4};mxEditor[_0x2b73[202]][_0x2b73[2291]]= function(){return this[_0x2b73[3119]]};mxEditor[_0x2b73[202]][_0x2b73[3227]]= function(_0xff22x2){return null!= this[_0x2b73[3093]]&& 0< this[_0x2b73[3093]][_0x2b73[67]]&& this[_0x2b73[1179]][_0x2b73[1730]](_0xff22x2)?this[_0x2b73[3093]][this[_0x2b73[3130]]++ % this[_0x2b73[3093]][_0x2b73[67]]]:null};mxEditor[_0x2b73[202]][_0x2b73[3228]]= function(_0xff22x2){if(null!= this[_0x2b73[3100]]){var _0xff22x3=this[_0x2b73[3227]](_0xff22x2);null!= _0xff22x3&& _0xff22x2[_0x2b73[475]](_0xff22x2[_0x2b73[474]]()+ _0x2b73[471]+ this[_0x2b73[3100]]+ _0x2b73[226]+ _0xff22x3)}};mxEditor[_0x2b73[202]][_0x2b73[817]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){for(var _0xff22x9=this[_0x2b73[1179]][_0x2b73[502]]();null!= _0xff22x2&& !this[_0x2b73[1179]][_0x2b73[2685]](_0xff22x2);){_0xff22x2= _0xff22x9[_0x2b73[1197]](_0xff22x2)};_0xff22x2= null!= _0xff22x2?_0xff22x2:this[_0x2b73[1179]][_0x2b73[2461]](_0xff22x4,_0xff22x5);var _0xff22xa=this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[255]],_0xff22x12=_0xff22x9[_0x2b73[1721]](_0xff22x3),_0xff22x13=_0xff22x9[_0x2b73[1721]](_0xff22x2);if(this[_0x2b73[1179]][_0x2b73[1730]](_0xff22x3)&& !this[_0x2b73[1179]][_0x2b73[2412]]){_0xff22x2= null}else {if(null== _0xff22x2&& this[_0x2b73[3116]]){return null};if(null!= _0xff22x2&& null!= _0xff22x13){var _0xff22x14=this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[248]](_0xff22x2);if(null!= _0xff22x14){if(_0xff22x4-= _0xff22x14[_0x2b73[2078]][_0x2b73[235]]* _0xff22xa,_0xff22x5-= _0xff22x14[_0x2b73[2078]][_0x2b73[236]]* _0xff22xa,this[_0x2b73[1179]][_0x2b73[3229]]){var _0xff22x13=_0xff22x12[_0x2b73[117]],_0xff22x15=_0xff22x12[_0x2b73[119]],_0xff22x16=_0xff22x14[_0x2b73[235]]+ _0xff22x14[_0x2b73[117]];_0xff22x4+ _0xff22x13> _0xff22x16&& (_0xff22x4-= _0xff22x4+ _0xff22x13- _0xff22x16);_0xff22x16= _0xff22x14[_0x2b73[236]]+ _0xff22x14[_0x2b73[119]];_0xff22x5+ _0xff22x15> _0xff22x16&& (_0xff22x5-= _0xff22x5+ _0xff22x15- _0xff22x16)}}else {null!= _0xff22x13&& (_0xff22x4-= _0xff22x13[_0x2b73[235]]* _0xff22xa,_0xff22x5-= _0xff22x13[_0x2b73[236]]* _0xff22xa)}}};_0xff22x12= _0xff22x12[_0x2b73[238]]();_0xff22x12[_0x2b73[235]]= this[_0x2b73[1179]][_0x2b73[1021]](_0xff22x4/ _0xff22xa- this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[513]][_0x2b73[235]]- this[_0x2b73[1179]][_0x2b73[1020]]/ 2);_0xff22x12[_0x2b73[236]]= this[_0x2b73[1179]][_0x2b73[1021]](_0xff22x5/ _0xff22xa- this[_0x2b73[1179]][_0x2b73[249]]()[_0x2b73[513]][_0x2b73[236]]- this[_0x2b73[1179]][_0x2b73[1020]]/ 2);_0xff22x3[_0x2b73[1724]](_0xff22x12);null== _0xff22x2&& (_0xff22x2= this[_0x2b73[1179]][_0x2b73[902]]());this[_0x2b73[3228]](_0xff22x3);this[_0x2b73[746]]( new mxEventObject(mxEvent.BEFORE_ADD_VERTEX,_0x2b73[1988],_0xff22x3,_0x2b73[1101],_0xff22x2));_0xff22x9[_0x2b73[473]]();try{_0xff22x3= this[_0x2b73[1179]][_0x2b73[2103]](_0xff22x3,_0xff22x2),null!= _0xff22x3&& (this[_0x2b73[1179]][_0x2b73[2509]](_0xff22x3),this[_0x2b73[746]]( new mxEventObject(mxEvent.ADD_VERTEX,_0x2b73[1988],_0xff22x3)))}finally{_0xff22x9[_0x2b73[476]]()};null!= _0xff22x3&& (this[_0x2b73[1179]][_0x2b73[2450]](_0xff22x3),this[_0x2b73[1179]][_0x2b73[2564]](_0xff22x3),this[_0x2b73[746]]( new mxEventObject(mxEvent.AFTER_ADD_VERTEX,_0x2b73[1988],_0xff22x3)));return _0xff22x3};mxEditor[_0x2b73[202]][_0x2b73[515]]= function(){this[_0x2b73[2717]]|| (this[_0x2b73[2717]]= !0,null!= this[_0x2b73[3112]]&& this[_0x2b73[3112]][_0x2b73[515]](),null!= this[_0x2b73[2136]]&& this[_0x2b73[2136]][_0x2b73[515]](),null!= this[_0x2b73[716]]&& this[_0x2b73[716]][_0x2b73[515]](),null!= this[_0x2b73[3098]]&& this[_0x2b73[3098]][_0x2b73[515]](),null!= this[_0x2b73[3203]]&& this[_0x2b73[3203]][_0x2b73[515]](),null!= this[_0x2b73[3082]]&& this[_0x2b73[3082]][_0x2b73[515]](),null!= this[_0x2b73[1179]]&& this[_0x2b73[1179]][_0x2b73[515]](),this[_0x2b73[3118]]= this[_0x2b73[879]]= null)};var mxCodecRegistry={codecs:[],aliases:[],register:function(_0xff22x2){if(null!= _0xff22x2){var _0xff22x3=_0xff22x2[_0x2b73[718]]();mxCodecRegistry[_0x2b73[3230]][_0xff22x3]= _0xff22x2;var _0xff22x4=mxUtils[_0x2b73[197]](_0xff22x2[_0x2b73[3231]][_0x2b73[196]]);_0xff22x4!= _0xff22x3&& mxCodecRegistry[_0x2b73[3232]](_0xff22x4,_0xff22x3)};return _0xff22x2},addAlias:function(_0xff22x2,_0xff22x3){mxCodecRegistry[_0x2b73[3233]][_0xff22x2]= _0xff22x3},getCodec:function(_0xff22x2){var _0xff22x3=null;if(null!= _0xff22x2){var _0xff22x3=mxUtils[_0x2b73[197]](_0xff22x2),_0xff22x4=mxCodecRegistry[_0x2b73[3233]][_0xff22x3];null!= _0xff22x4&& (_0xff22x3= _0xff22x4);_0xff22x3= mxCodecRegistry[_0x2b73[3230]][_0xff22x3];if(null== _0xff22x3){try{_0xff22x3= new mxObjectCodec( new _0xff22x2),mxCodecRegistry[_0x2b73[3234]](_0xff22x3)}catch(d){}}};return _0xff22x3}};function mxCodec(_0xff22x2){this[_0x2b73[395]]= _0xff22x2|| mxUtils[_0x2b73[306]]();this[_0x2b73[68]]= []}mxCodec[_0x2b73[202]][_0x2b73[395]]= null;mxCodec[_0x2b73[202]][_0x2b73[68]]= null;mxCodec[_0x2b73[202]][_0x2b73[3235]]= !1;mxCodec[_0x2b73[202]][_0x2b73[1104]]= function(_0xff22x2,_0xff22x3){return this[_0x2b73[68]][_0xff22x2]= _0xff22x3};mxCodec[_0x2b73[202]][_0x2b73[3236]]= function(_0xff22x2){var _0xff22x3=null;null!= _0xff22x2&& (_0xff22x3= this[_0x2b73[68]][_0xff22x2],null== _0xff22x3&& (_0xff22x3= this[_0x2b73[1060]](_0xff22x2),null== _0xff22x3&& (_0xff22x2= this[_0x2b73[1362]](_0xff22x2),null!= _0xff22x2&& (_0xff22x3= this[_0x2b73[1093]](_0xff22x2)))));return _0xff22x3};mxCodec[_0x2b73[202]][_0x2b73[1060]]= function(_0xff22x2){return null};mxCodec[_0x2b73[202]][_0x2b73[1362]]= function(_0xff22x2,_0xff22x3){return mxUtils[_0x2b73[290]](this[_0x2b73[395]][_0x2b73[158]],null!= _0xff22x3?_0xff22x3:_0x2b73[1363],_0xff22x2)};mxCodec[_0x2b73[202]][_0x2b73[1103]]= function(_0xff22x2){var _0xff22x3=null;null!= _0xff22x2&& (_0xff22x3= this[_0x2b73[3237]](_0xff22x2),null== _0xff22x3&& _0xff22x2 instanceof mxCell&& (_0xff22x3= _0xff22x2[_0x2b73[1103]](),null== _0xff22x3&& (_0xff22x3= mxCellPath[_0x2b73[385]](_0xff22x2),0== _0xff22x3[_0x2b73[67]]&& (_0xff22x3= _0x2b73[813]))));return _0xff22x3};mxCodec[_0x2b73[202]][_0x2b73[3237]]= function(_0xff22x2){return null};mxCodec[_0x2b73[202]][_0x2b73[514]]= function(_0xff22x2){var _0xff22x3=null;if(null!= _0xff22x2&& null!= _0xff22x2[_0x2b73[196]]){var _0xff22x4=mxCodecRegistry[_0x2b73[3238]](_0xff22x2[_0x2b73[196]]);null!= _0xff22x4?_0xff22x3= _0xff22x4[_0x2b73[514]](this,_0xff22x2):mxUtils[_0x2b73[1331]](_0xff22x2)?_0xff22x3= mxClient[_0x2b73[80]]?_0xff22x2[_0x2b73[511]](!0):this[_0x2b73[395]][_0x2b73[3239]](_0xff22x2,!0):mxLog[_0x2b73[283]](_0x2b73[3240]+ mxUtils[_0x2b73[197]](_0xff22x2[_0x2b73[196]]))};return _0xff22x3};mxCodec[_0x2b73[202]][_0x2b73[1093]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=null;if(null!= _0xff22x2&& _0xff22x2[_0x2b73[288]]== mxConstants[_0x2b73[289]]){var _0xff22x5=null;try{_0xff22x5= eval(_0xff22x2[_0x2b73[301]])}catch(e){};try{var _0xff22xa=mxCodecRegistry[_0x2b73[3238]](_0xff22x5);null!= _0xff22xa?_0xff22x4= _0xff22xa[_0x2b73[1093]](this,_0xff22x2,_0xff22x3):(_0xff22x4= _0xff22x2[_0x2b73[511]](!0),_0xff22x4[_0x2b73[1390]](_0x2b73[3069]))}catch(g){mxLog[_0x2b73[143]](_0x2b73[3241]+ _0xff22x2[_0x2b73[301]]+ _0x2b73[3186]+ g[_0x2b73[281]])}};return _0xff22x4};mxCodec[_0x2b73[202]][_0x2b73[3242]]= function(_0xff22x2,_0xff22x3,_0xff22x4){_0xff22x3[_0x2b73[62]](this[_0x2b73[514]](_0xff22x2));if(null== _0xff22x4|| _0xff22x4){_0xff22x4= _0xff22x2[_0x2b73[262]]();for(var _0xff22x5=0;_0xff22x5< _0xff22x4;_0xff22x5++){this[_0x2b73[3242]](_0xff22x2[_0x2b73[263]](_0xff22x5),_0xff22x3)}}};mxCodec[_0x2b73[202]][_0x2b73[3243]]= function(_0xff22x2){return null!= _0xff22x2&& _0x2b73[279]== typeof _0xff22x2[_0x2b73[3243]]?_0xff22x2[_0x2b73[3243]]():!1};mxCodec[_0x2b73[202]][_0x2b73[3244]]= function(_0xff22x2,_0xff22x3){_0xff22x3= null!= _0xff22x3?_0xff22x3:!0;var _0xff22x4=null;if(null!= _0xff22x2&& _0xff22x2[_0x2b73[288]]== mxConstants[_0x2b73[289]]){_0xff22x4= mxCodecRegistry[_0x2b73[3238]](_0xff22x2[_0x2b73[301]]);if(!this[_0x2b73[3243]](_0xff22x4)){for(var _0xff22x5=_0xff22x2[_0x2b73[285]];null!= _0xff22x5&& !this[_0x2b73[3243]](_0xff22x4);){_0xff22x4= mxCodecRegistry[_0x2b73[3238]](_0xff22x5[_0x2b73[301]]),_0xff22x5= _0xff22x5[_0x2b73[287]]}};this[_0x2b73[3243]](_0xff22x4)|| (_0xff22x4= mxCodecRegistry[_0x2b73[3238]](mxCell));_0xff22x4= _0xff22x4[_0x2b73[1093]](this,_0xff22x2);_0xff22x3&& this[_0x2b73[3245]](_0xff22x4)};return _0xff22x4};mxCodec[_0x2b73[202]][_0x2b73[3245]]= function(_0xff22x2){var _0xff22x3=_0xff22x2[_0x2b73[1101]],_0xff22x4=_0xff22x2[_0x2b73[1709]](!0),_0xff22x5=_0xff22x2[_0x2b73[1709]](!1);_0xff22x2[_0x2b73[1957]](null,!1);_0xff22x2[_0x2b73[1957]](null,!0);_0xff22x2[_0x2b73[1101]]= null;null!= _0xff22x3&& _0xff22x3[_0x2b73[1937]](_0xff22x2);null!= _0xff22x4&& _0xff22x4[_0x2b73[1960]](_0xff22x2,!0);null!= _0xff22x5&& _0xff22x5[_0x2b73[1960]](_0xff22x2,!1)};mxCodec[_0x2b73[202]][_0x2b73[57]]= function(_0xff22x2,_0xff22x3,_0xff22x4){null!= _0xff22x3&& null!= _0xff22x4&& _0xff22x2[_0x2b73[57]](_0xff22x3,_0xff22x4)};function mxObjectCodec(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){this[_0x2b73[3231]]= _0xff22x2;this[_0x2b73[3246]]= null!= _0xff22x3?_0xff22x3:[];this[_0x2b73[3247]]= null!= _0xff22x4?_0xff22x4:[];this[_0x2b73[3248]]= null!= _0xff22x5?_0xff22x5:[];this[_0x2b73[3249]]= {};for(var _0xff22x9 in this[_0x2b73[3248]]){this[_0x2b73[3249]][this[_0x2b73[3248]][_0xff22x9]]= _0xff22x9}}mxObjectCodec[_0x2b73[202]][_0x2b73[3231]]= null;mxObjectCodec[_0x2b73[202]][_0x2b73[3246]]= null;mxObjectCodec[_0x2b73[202]][_0x2b73[3247]]= null;mxObjectCodec[_0x2b73[202]][_0x2b73[3248]]= null;mxObjectCodec[_0x2b73[202]][_0x2b73[3249]]= null;mxObjectCodec[_0x2b73[202]][_0x2b73[718]]= function(){return mxUtils[_0x2b73[197]](this[_0x2b73[3231]][_0x2b73[196]])};mxObjectCodec[_0x2b73[202]][_0x2b73[3250]]= function(){return new this[_0x2b73[3231]][_0x2b73[196]]};mxObjectCodec[_0x2b73[202]][_0x2b73[3251]]= function(_0xff22x2){if(null!= _0xff22x2){var _0xff22x3=this[_0x2b73[3249]][_0xff22x2];null!= _0xff22x3&& (_0xff22x2= _0xff22x3)};return _0xff22x2};mxObjectCodec[_0x2b73[202]][_0x2b73[3252]]= function(_0xff22x2){if(null!= _0xff22x2){var _0xff22x3=this[_0x2b73[3248]][_0xff22x2];null!= _0xff22x3&& (_0xff22x2= _0xff22x3)};return _0xff22x2};mxObjectCodec[_0x2b73[202]][_0x2b73[3253]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){return _0xff22x3== mxObjectIdentity[_0x2b73[195]]|| 0<= mxUtils[_0x2b73[2]](this[_0x2b73[3246]],_0xff22x3)};mxObjectCodec[_0x2b73[202]][_0x2b73[3254]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){return 0<= mxUtils[_0x2b73[2]](this[_0x2b73[3247]],_0xff22x3)};mxObjectCodec[_0x2b73[202]][_0x2b73[514]]= function(_0xff22x2,_0xff22x3){var _0xff22x4=_0xff22x2[_0x2b73[395]][_0x2b73[55]](this[_0x2b73[718]]());_0xff22x3= this[_0x2b73[3255]](_0xff22x2,_0xff22x3,_0xff22x4);this[_0x2b73[3256]](_0xff22x2,_0xff22x3,_0xff22x4);return this[_0x2b73[3257]](_0xff22x2,_0xff22x3,_0xff22x4)};mxObjectCodec[_0x2b73[202]][_0x2b73[3256]]= function(_0xff22x2,_0xff22x3,_0xff22x4){_0xff22x2[_0x2b73[57]](_0xff22x4,_0x2b73[1363],_0xff22x2[_0x2b73[1103]](_0xff22x3));for(var _0xff22x5 in _0xff22x3){var _0xff22x9=_0xff22x5,_0xff22xa=_0xff22x3[_0xff22x9];null!= _0xff22xa&& !this[_0x2b73[3253]](_0xff22x3,_0xff22x9,_0xff22xa,!0)&& (mxUtils[_0x2b73[1946]](_0xff22x9)&& (_0xff22x9= null),this[_0x2b73[3258]](_0xff22x2,_0xff22x3,_0xff22x9,_0xff22xa,_0xff22x4))}};mxObjectCodec[_0x2b73[202]][_0x2b73[3258]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){if(null!= _0xff22x5){if(this[_0x2b73[3254]](_0xff22x3,_0xff22x4,_0xff22x5,!0)){var _0xff22xa=_0xff22x2[_0x2b73[1103]](_0xff22x5);if(null== _0xff22xa){mxLog[_0x2b73[283]](_0x2b73[3259]+ this[_0x2b73[718]]()+ _0x2b73[87]+ _0xff22x4+ _0x2b73[226]+ _0xff22x5);return};_0xff22x5= _0xff22xa};_0xff22xa= this[_0x2b73[3231]][_0xff22x4];if(null== _0xff22x4|| _0xff22x2[_0x2b73[3235]]|| _0xff22xa!= _0xff22x5){_0xff22x4= this[_0x2b73[3252]](_0xff22x4),this[_0x2b73[3260]](_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9)}}};mxObjectCodec[_0x2b73[202]][_0x2b73[3260]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){_0x2b73[194]!= typeof _0xff22x5?this[_0x2b73[3261]](_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9):this[_0x2b73[3262]](_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9)};mxObjectCodec[_0x2b73[202]][_0x2b73[3261]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){_0xff22x5= this[_0x2b73[3263]](_0xff22x5);null== _0xff22x4?(_0xff22x3= _0xff22x2[_0x2b73[395]][_0x2b73[55]](_0x2b73[99]),_0x2b73[279]== typeof _0xff22x5?_0xff22x3[_0x2b73[62]](_0xff22x2[_0x2b73[395]][_0x2b73[344]](_0xff22x5)):_0xff22x2[_0x2b73[57]](_0xff22x3,_0x2b73[131],_0xff22x5),_0xff22x9[_0x2b73[62]](_0xff22x3)):_0x2b73[279]!= typeof _0xff22x5&& _0xff22x2[_0x2b73[57]](_0xff22x9,_0xff22x4,_0xff22x5)};mxObjectCodec[_0x2b73[202]][_0x2b73[3262]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5,_0xff22x9){_0xff22x2= _0xff22x2[_0x2b73[514]](_0xff22x5);null!= _0xff22x2?(null!= _0xff22x4&& _0xff22x2[_0x2b73[57]](_0x2b73[3069],_0xff22x4),_0xff22x9[_0x2b73[62]](_0xff22x2)):mxLog[_0x2b73[283]](_0x2b73[3264]+ this[_0x2b73[718]]()+ _0x2b73[87]+ _0xff22x4+ _0x2b73[3186]+ _0xff22x5)};mxObjectCodec[_0x2b73[202]][_0x2b73[3263]]= function(_0xff22x2){if(_0x2b73[82]== typeof _0xff22x2[_0x2b73[67]]&& (!0== _0xff22x2|| !1== _0xff22x2)){_0xff22x2= !0== _0xff22x2?_0x2b73[500]:_0x2b73[468]};return _0xff22x2};mxObjectCodec[_0x2b73[202]][_0x2b73[3265]]= function(_0xff22x2){mxUtils[_0x2b73[1946]](_0xff22x2)&& (_0xff22x2= parseFloat(_0xff22x2));return _0xff22x2};mxObjectCodec[_0x2b73[202]][_0x2b73[3255]]= function(_0xff22x2,_0xff22x3,_0xff22x4){return _0xff22x3};mxObjectCodec[_0x2b73[202]][_0x2b73[3257]]= function(_0xff22x2,_0xff22x3,_0xff22x4){return _0xff22x4};mxObjectCodec[_0x2b73[202]][_0x2b73[1093]]= function(_0xff22x2,_0xff22x3,_0xff22x4){var _0xff22x5=_0xff22x3[_0x2b73[284]](_0x2b73[1363]),_0xff22x9=_0xff22x2[_0x2b73[68]][_0xff22x5];null== _0xff22x9&& (_0xff22x9= _0xff22x4|| this[_0x2b73[3250]](),null!= _0xff22x5&& _0xff22x2[_0x2b73[1104]](_0xff22x5,_0xff22x9));_0xff22x3= this[_0x2b73[3266]](_0xff22x2,_0xff22x3,_0xff22x9);this[_0x2b73[3267]](_0xff22x2,_0xff22x3,_0xff22x9);return this[_0x2b73[3268]](_0xff22x2,_0xff22x3,_0xff22x9)};mxObjectCodec[_0x2b73[202]][_0x2b73[3267]]= function(_0xff22x2,_0xff22x3,_0xff22x4){null!= _0xff22x3&& (this[_0x2b73[3269]](_0xff22x2,_0xff22x3,_0xff22x4),this[_0x2b73[3270]](_0xff22x2,_0xff22x3,_0xff22x4))};mxObjectCodec[_0x2b73[202]][_0x2b73[3269]]= function(_0xff22x2,_0xff22x3,_0xff22x4){_0xff22x3= _0xff22x3[_0x2b73[320]];if(null!= _0xff22x3){for(var _0xff22x5=0;_0xff22x5< _0xff22x3[_0x2b73[67]];_0xff22x5++){this[_0x2b73[3271]](_0xff22x2,_0xff22x3[_0xff22x5],_0xff22x4)}}};mxObjectCodec[_0x2b73[202]][_0x2b73[3271]]= function(_0xff22x2,_0xff22x3,_0xff22x4){var _0xff22x5=_0xff22x3[_0x2b73[301]];if(_0x2b73[3069]!= _0xff22x5&& _0x2b73[1363]!= _0xff22x5){_0xff22x3= this[_0x2b73[3265]](_0xff22x3[_0x2b73[318]]);var _0xff22x9=this[_0x2b73[3251]](_0xff22x5);if(this[_0x2b73[3254]](_0xff22x4,_0xff22x9,_0xff22x3,!1)){_0xff22x2= _0xff22x2[_0x2b73[3236]](_0xff22x3);if(null== _0xff22x2){mxLog[_0x2b73[283]](_0x2b73[3272]+ this[_0x2b73[718]]()+ _0x2b73[87]+ _0xff22x5+ _0x2b73[226]+ _0xff22x3);return};_0xff22x3= _0xff22x2};this[_0x2b73[3253]](_0xff22x4,_0xff22x5,_0xff22x3,!1)|| (_0xff22x4[_0xff22x5]= _0xff22x3)}};mxObjectCodec[_0x2b73[202]][_0x2b73[3270]]= function(_0xff22x2,_0xff22x3,_0xff22x4){for(_0xff22x3= _0xff22x3[_0x2b73[285]];null!= _0xff22x3;){var _0xff22x5=_0xff22x3[_0x2b73[287]];_0xff22x3[_0x2b73[288]]== mxConstants[_0x2b73[289]]&& !this[_0x2b73[3273]](_0xff22x2,_0xff22x3,_0xff22x4)&& this[_0x2b73[3274]](_0xff22x2,_0xff22x3,_0xff22x4);_0xff22x3= _0xff22x5}};mxObjectCodec[_0x2b73[202]][_0x2b73[3274]]= function(_0xff22x2,_0xff22x3,_0xff22x4){var _0xff22x5=this[_0x2b73[3251]](_0xff22x3[_0x2b73[284]](_0x2b73[3069]));if(null== _0xff22x5|| !this[_0x2b73[3253]](_0xff22x4,_0xff22x5,_0xff22x3,!1)){var _0xff22x9=this[_0x2b73[3275]](_0xff22x4,_0xff22x5,_0xff22x3),_0xff22xa=null;_0x2b73[99]== _0xff22x3[_0x2b73[301]]?(_0xff22xa= _0xff22x3[_0x2b73[284]](_0x2b73[131]),null== _0xff22xa&& (_0xff22xa= mxUtils[_0x2b73[1545]](mxUtils[_0x2b73[329]](_0xff22x3)))):_0xff22xa= _0xff22x2[_0x2b73[1093]](_0xff22x3,_0xff22x9);this[_0x2b73[3276]](_0xff22x4,_0xff22x5,_0xff22xa,_0xff22x9)}};mxObjectCodec[_0x2b73[202]][_0x2b73[3275]]= function(_0xff22x2,_0xff22x3,_0xff22x4){_0xff22x2= _0xff22x2[_0xff22x3];_0xff22x2 instanceof Array&& 0< _0xff22x2[_0x2b73[67]]&& (_0xff22x2= null);return _0xff22x2};mxObjectCodec[_0x2b73[202]][_0x2b73[3276]]= function(_0xff22x2,_0xff22x3,_0xff22x4,_0xff22x5){null!= _0xff22x4&& _0xff22x4!= _0xff22x5&& (null!= _0xff22x3&& 0< _0xff22x3[_0x2b73[67]]?_0xff22x2[_0xff22x3]= _0xff22x4:_0xff22x2[_0x2b73[207]](_0xff22x4))};mxObjectCodec[_0x2b73[202]][_0x2b73[3273]]= function(_0xff22x2,_0xff22x3,_0xff22x4){if(_0x2b73[3277]== _0xff22x3[_0x2b73[301]]){_0xff22x3= _0xff22x3[_0x2b73[284]](_0x2b73[298]);if(null!= _0xff22x3){try{var _0xff22x5=mxUtils[_0x2b73[219]](_0xff22x3)[_0x2b73[874]]();null!= _0xff22x5&& _0xff22x2[_0x2b73[1093]](_0xff22x5,_0xff22x4)}catch(e){}};return !0};return !1};mxObjectCodec[_0x2b73[202]][_0x2b73[3266]]= function(_0xff22x2,_0xff22x3,_0xff22x4){return _0xff22x3};mxObjectCodec[_0x2b73[202]][_0x2b73[3268]]= function(_0xff22x2,_0xff22x3,_0xff22x4){return _0xff22x4};mxCodecRegistry[_0x2b73[3234]](function(){var _0xff22x2= new mxObjectCodec( new mxCell,[_0x2b73[1954],_0x2b73[1842],_0x2b73[1211],_0x2b73[1991]],[_0x2b73[1101],_0x2b73[1097],_0x2b73[772]]);_0xff22x2[_0x2b73[3243]]= function(){return !0};_0xff22x2[_0x2b73[3253]]= function(_0xff22x2,_0xff22x4,_0xff22x5,_0xff22x9){return mxObjectCodec[_0x2b73[202]][_0x2b73[3253]][_0x2b73[183]](this,arguments)|| _0xff22x9&& _0x2b73[131]== _0xff22x4&& _0xff22x5[_0x2b73[288]]== mxConstants[_0x2b73[289]]};_0xff22x2[_0x2b73[3257]]= function(_0xff22x2,_0xff22x4,_0xff22x5){if(null!= _0xff22x4[_0x2b73[131]]&& _0xff22x4[_0x2b73[131]][_0x2b73[288]]== mxConstants[_0x2b73[289]]){var _0xff22x9=_0xff22x5;_0xff22x5= mxClient[_0x2b73[80]]?_0xff22x4[_0x2b73[131]][_0x2b73[511]](!0):_0xff22x2[_0x2b73[395]][_0x2b73[3239]](_0xff22x4[_0x2b73[131]],!0);_0xff22x5[_0x2b73[62]](_0xff22x9);_0xff22x2= _0xff22x9[_0x2b73[284]](_0x2b73[1363]);_0xff22x5[_0x2b73[57]](_0x2b73[1363],_0xff22x2);_0xff22x9[_0x2b73[1390]](_0x2b73[1363])};return _0xff22x5};_0xff22x2[_0x2b73[3266]]= function(_0xff22x2,_0xff22x4,_0xff22x5){var _0xff22x9=_0xff22x4,_0xff22xa=this[_0x2b73[718]]();_0xff22x4[_0x2b73[301]]!= _0xff22xa?(_0xff22x9= _0xff22x4[_0x2b73[64]](_0xff22xa)[0],null!= _0xff22x9&& _0xff22x9[_0x2b73[265]]== _0xff22x4?(mxUtils[_0x2b73[3278]](_0xff22x9,!0),mxUtils[_0x2b73[3278]](_0xff22x9,!1),_0xff22x9[_0x2b73[265]][_0x2b73[266]](_0xff22x9)):_0xff22x9= null,_0xff22x5[_0x2b73[131]]= _0xff22x4[_0x2b73[511]](!0),_0xff22x4= _0xff22x5[_0x2b73[131]][_0x2b73[284]](_0x2b73[1363]),null!= _0xff22x4&& (_0xff22x5[_0x2b73[1945]](_0xff22x4),_0xff22x5[_0x2b73[131]][_0x2b73[1390]](_0x2b73[1363]))):_0xff22x5[_0x2b73[1945]](_0xff22x4[_0x2b73[284]](_0x2b73[1363]));if(null!= _0xff22x9){for(_0xff22x4= 0;_0xff22x4< this[_0x2b73[3247]][_0x2b73[67]];_0xff22x4++){var _0xff22xa=this[_0x2b73[3247]][_0xff22x4],_0xff22x12=_0xff22x9[_0x2b73[284]](_0xff22xa);if(null!= _0xff22x12){_0xff22x9[_0x2b73[1390]](_0xff22xa);var _0xff22x13=_0xff22x2[_0x2b73[68]][_0xff22x12]|| _0xff22x2[_0x2b73[1060]](_0xff22x12);null== _0xff22x13&& (_0xff22x12= _0xff22x2[_0x2b73[1362]](_0xff22x12),null!= _0xff22x12&& (_0xff22x13= (mxCodecRegistry[_0x2b73[3230]][_0xff22x12[_0x2b73[301]]]|| this)[_0x2b73[1093]](_0xff22x2,_0xff22x12)));_0xff22x5[_0xff22xa]= _0xff22x13}}};return _0xff22x9};return _0xff22x2}());mxCodecRegistry[_0x2b73[3234]](function(){var _0xff22x2= new mxObjectCodec( new mxGraphModel);_0xff22x2[_0x2b73[3256]]= function(_0xff22x2,_0xff22x4,_0xff22x5){var _0xff22x9=_0xff22x2[_0x2b73[395]][_0x2b73[55]](_0x2b73[813]);_0xff22x2[_0x2b73[3242]](_0xff22x4[_0x2b73[501]](),_0xff22x9);_0xff22x5[_0x2b73[62]](_0xff22x9)};_0xff22x2[_0x2b73[3274]]= function(_0xff22x2,_0xff22x4,_0xff22x5){_0x2b73[813]== _0xff22x4[_0x2b73[301]]?this[_0x2b73[3279]](_0xff22x2,_0xff22x4,_0xff22x5):mxObjectCodec[_0x2b73[202]][_0x2b73[3274]][_0x2b73[183]](this,arguments)};_0xff22x2[_0x2b73[3279]]= function(_0xff22x2,_0xff22x4,_0xff22x5){var _0xff22x9=null;for(_0xff22x4= _0xff22x4[_0x2b73[285]];null!= _0xff22x4;){var _0xff22xa=_0xff22x2[_0x2b73[3244]](_0xff22x4);null!= _0xff22xa&& null== _0xff22xa[_0x2b73[1197]]()&& (_0xff22x9= _0xff22xa);_0xff22x4= _0xff22x4[_0x2b73[287]]};null!= _0xff22x9&& _0xff22x5[_0x2b73[1927]](_0xff22x9)};return _0xff22x2}());mxCodecRegistry[_0x2b73[3234]](function(){var _0xff22x2= new mxObjectCodec( new mxRootChange,[_0x2b73[251],_0x2b73[257],_0x2b73[813]]);_0xff22x2[_0x2b73[3257]]= function(_0xff22x2,_0xff22x4,_0xff22x5){_0xff22x2[_0x2b73[3242]](_0xff22x4[_0x2b73[813]],_0xff22x5);return _0xff22x5};_0xff22x2[_0x2b73[3266]]= function(_0xff22x2,_0xff22x4,_0xff22x5){if(null!= _0xff22x4[_0x2b73[285]]&& _0xff22x4[_0x2b73[285]][_0x2b73[288]]== mxConstants[_0x2b73[289]]){_0xff22x4= _0xff22x4[_0x2b73[511]](!0);var _0xff22x9=_0xff22x4[_0x2b73[285]];_0xff22x5[_0x2b73[813]]= _0xff22x2[_0x2b73[3244]](_0xff22x9,!1);_0xff22x5= _0xff22x9[_0x2b73[287]];_0xff22x9[_0x2b73[265]][_0x2b73[266]](_0xff22x9);for(_0xff22x9= _0xff22x5;null!= _0xff22x9;){_0xff22x5= _0xff22x9[_0x2b73[287]],_0xff22x2[_0x2b73[3244]](_0xff22x9),_0xff22x9[_0x2b73[265]][_0x2b73[266]](_0xff22x9),_0xff22x9= _0xff22x5}};return _0xff22x4};_0xff22x2[_0x2b73[3268]]= function(_0xff22x2,_0xff22x4,_0xff22x5){_0xff22x5[_0x2b73[257]]= _0xff22x5[_0x2b73[813]];return _0xff22x5};return _0xff22x2}());mxCodecRegistry[_0x2b73[3234]](function(){var _0xff22x2= new mxObjectCodec( new mxChildChange,[_0x2b73[251],_0x2b73[247],_0x2b73[1982]],[_0x2b73[1101],_0x2b73[257]]);_0xff22x2[_0x2b73[3254]]= function(_0xff22x2,_0xff22x4,_0xff22x5,_0xff22x9){return _0x2b73[247]== _0xff22x4&& (null!= _0xff22x2[_0x2b73[257]]|| !_0xff22x9)?!0:0<= mxUtils[_0x2b73[2]](this[_0x2b73[3247]],_0xff22x4)};_0xff22x2[_0x2b73[3257]]= function(_0xff22x2,_0xff22x4,_0xff22x5){this[_0x2b73[3254]](_0xff22x4,_0x2b73[247],_0xff22x4[_0x2b73[247]],!0)?_0xff22x5[_0x2b73[57]](_0x2b73[247],_0xff22x2[_0x2b73[1103]](_0xff22x4[_0x2b73[247]])):_0xff22x2[_0x2b73[3242]](_0xff22x4[_0x2b73[247]],_0xff22x5);return _0xff22x5};_0xff22x2[_0x2b73[3266]]= function(_0xff22x2,_0xff22x4,_0xff22x5){if(null!= _0xff22x4[_0x2b73[285]]&& _0xff22x4[_0x2b73[285]][_0x2b73[288]]== mxConstants[_0x2b73[289]]){_0xff22x4= _0xff22x4[_0x2b73[511]](!0);var _0xff22x9=_0xff22x4[_0x2b73[285]];_0xff22x5[_0x2b73[247]]= _0xff22x2[_0x2b73[3244]](_0xff22x9,!1);_0xff22x5= _0xff22x9[_0x2b73[287]];_0xff22x9[_0x2b73[265]][_0x2b73[266]](_0xff22x9);for(_0xff22x9= _0xff22x5;null!= _0xff22x9;){_0xff22x5= _0xff22x9[_0x2b73[287]];if(_0xff22x9[_0x2b73[288]]== mxConstants[_0x2b73[289]]){var _0xff22xa=_0xff22x9[_0x2b73[284]](_0x2b73[1363]);null== _0xff22x2[_0x2b73[1060]](_0xff22xa)&& _0xff22x2[_0x2b73[3244]](_0xff22x9)};_0xff22x9[_0x2b73[265]][_0x2b73[266]](_0xff22x9);_0xff22x9= _0xff22x5}}else {_0xff22x9= _0xff22x4[_0x2b73[284]](_0x2b73[247]),_0xff22x5[_0x2b73[247]]= _0xff22x2[_0x2b73[3236]](_0xff22x9)};return _0xff22x4};_0xff22x2[_0x2b73[3268]]= function(_0xff22x2,_0xff22x4,_0xff22x5){_0xff22x5[_0x2b73[247]][_0x2b73[1101]]= _0xff22x5[_0x2b73[257]];_0xff22x5[_0x2b73[257]]= _0xff22x5[_0x2b73[1101]];_0xff22x5[_0x2b73[1982]]= _0xff22x5[_0x2b73[1983]];return _0xff22x5};return _0xff22x2}());mxCodecRegistry[_0x2b73[3234]](function(){var _0xff22x2= new mxObjectCodec( new mxTerminalChange,[_0x2b73[251],_0x2b73[257]],[_0x2b73[246],_0x2b73[1984]]);_0xff22x2[_0x2b73[3268]]= function(_0xff22x2,_0xff22x4,_0xff22x5){_0xff22x5[_0x2b73[257]]= _0xff22x5[_0x2b73[1984]];return _0xff22x5};return _0xff22x2}());var mxGenericChangeCodec=function(_0xff22x2,_0xff22x3){var _0xff22x4= new mxObjectCodec(_0xff22x2,[_0x2b73[251],_0x2b73[257]],[_0x2b73[246]]);_0xff22x4[_0x2b73[3268]]= function(_0xff22x2,_0xff22x4,_0xff22xa){mxUtils[_0x2b73[1331]](_0xff22xa[_0x2b73[246]])&& (_0xff22xa[_0x2b73[246]]= _0xff22x2[_0x2b73[3244]](_0xff22xa[_0x2b73[246]],!1));_0xff22xa[_0x2b73[257]]= _0xff22xa[_0xff22x3];return _0xff22xa};return _0xff22x4};mxCodecRegistry[_0x2b73[3234]](mxGenericChangeCodec( new mxValueChange,_0x2b73[131]));mxCodecRegistry[_0x2b73[3234]](mxGenericChangeCodec( new mxStyleChange,_0x2b73[124]));mxCodecRegistry[_0x2b73[3234]](mxGenericChangeCodec( new mxGeometryChange,_0x2b73[256]));mxCodecRegistry[_0x2b73[3234]](mxGenericChangeCodec( new mxCollapseChange,_0x2b73[1985]));mxCodecRegistry[_0x2b73[3234]](mxGenericChangeCodec( new mxVisibleChange,_0x2b73[189]));mxCodecRegistry[_0x2b73[3234]](mxGenericChangeCodec( new mxCellAttributeChange,_0x2b73[131]));mxCodecRegistry[_0x2b73[3234]](function(){return new mxObjectCodec( new mxGraph,_0x2b73[3280][_0x2b73[224]](_0x2b73[185]))}());mxCodecRegistry[_0x2b73[3234]](function(){var _0xff22x2= new mxObjectCodec( new mxGraphView);_0xff22x2[_0x2b73[514]]= function(_0xff22x2,_0xff22x4){return this[_0x2b73[3242]](_0xff22x2,_0xff22x4,_0xff22x4[_0x2b73[1179]][_0x2b73[502]]()[_0x2b73[501]]())};_0xff22x2[_0x2b73[3242]]= function(_0xff22x2,_0xff22x4,_0xff22x5){var _0xff22x9=_0xff22x4[_0x2b73[1179]][_0x2b73[502]](),_0xff22xa=_0xff22x4[_0x2b73[248]](_0xff22x5),_0xff22x12=_0xff22x9[_0x2b73[1197]](_0xff22x5);if(null== _0xff22x12|| null!= _0xff22xa){var _0xff22x13=_0xff22x9[_0x2b73[262]](_0xff22x5),_0xff22x14=_0xff22x4[_0x2b73[1179]][_0x2b73[1198]](_0xff22x5),_0xff22x15=null;_0xff22x12== _0xff22x9[_0x2b73[501]]()?_0xff22x15= _0x2b73[3281]:null== _0xff22x12?_0xff22x15= _0x2b73[1179]:_0xff22x9[_0x2b73[250]](_0xff22x5)?_0xff22x15= _0x2b73[1989]:0< _0xff22x13&& null!= _0xff22x14?_0xff22x15= _0x2b73[1504]:_0xff22x9[_0x2b73[1193]](_0xff22x5)&& (_0xff22x15= _0x2b73[1988]);if(null!= _0xff22x15){var _0xff22x16=_0xff22x2[_0x2b73[395]][_0x2b73[55]](_0xff22x15);null!= _0xff22x4[_0x2b73[1179]][_0x2b73[2183]](_0xff22x5)&& (_0xff22x16[_0x2b73[57]](_0x2b73[685],_0xff22x4[_0x2b73[1179]][_0x2b73[2183]](_0xff22x5)),_0xff22x4[_0x2b73[1179]][_0x2b73[2186]](_0xff22x5)&& _0xff22x16[_0x2b73[57]](_0x2b73[1428],!0));if(null== _0xff22x12){var _0xff22x17=_0xff22x4[_0x2b73[517]]();null!= _0xff22x17&& (_0xff22x16[_0x2b73[57]](_0x2b73[235],Math[_0x2b73[488]](_0xff22x17[_0x2b73[235]])),_0xff22x16[_0x2b73[57]](_0x2b73[236],Math[_0x2b73[488]](_0xff22x17[_0x2b73[236]])),_0xff22x16[_0x2b73[57]](_0x2b73[117],Math[_0x2b73[488]](_0xff22x17[_0x2b73[117]])),_0xff22x16[_0x2b73[57]](_0x2b73[119],Math[_0x2b73[488]](_0xff22x17[_0x2b73[119]])));_0xff22x16[_0x2b73[57]](_0x2b73[255],_0xff22x4[_0x2b73[255]])}else {if(null!= _0xff22xa&& null!= _0xff22x14){for(_0xff22x17 in _0xff22xa[_0x2b73[124]]){_0xff22x12= _0xff22xa[_0x2b73[124]][_0xff22x17],_0x2b73[279]== typeof _0xff22x12&& _0x2b73[194]== typeof _0xff22x12&& (_0xff22x12= mxStyleRegistry[_0x2b73[718]](_0xff22x12)),null!= _0xff22x12&& (_0x2b73[279]!= typeof _0xff22x12&& _0x2b73[194]!= typeof _0xff22x12)&& _0xff22x16[_0x2b73[57]](_0xff22x17,_0xff22x12)};_0xff22x12= _0xff22xa[_0x2b73[439]];if(null!= _0xff22x12&& 0< _0xff22x12[_0x2b73[67]]){_0xff22x14= Math[_0x2b73[488]](_0xff22x12[0][_0x2b73[235]])+ _0x2b73[537]+ Math[_0x2b73[488]](_0xff22x12[0][_0x2b73[236]]);for(_0xff22x17= 1;_0xff22x17< _0xff22x12[_0x2b73[67]];_0xff22x17++){_0xff22x14+= _0x2b73[185]+ Math[_0x2b73[488]](_0xff22x12[_0xff22x17][_0x2b73[235]])+ _0x2b73[537]+ Math[_0x2b73[488]](_0xff22x12[_0xff22x17][_0x2b73[236]])};_0xff22x16[_0x2b73[57]](_0x2b73[1525],_0xff22x14)}else {_0xff22x16[_0x2b73[57]](_0x2b73[235],Math[_0x2b73[488]](_0xff22xa[_0x2b73[235]])),_0xff22x16[_0x2b73[57]](_0x2b73[236],Math[_0x2b73[488]](_0xff22xa[_0x2b73[236]])),_0xff22x16[_0x2b73[57]](_0x2b73[117],Math[_0x2b73[488]](_0xff22xa[_0x2b73[117]])),_0xff22x16[_0x2b73[57]](_0x2b73[119],Math[_0x2b73[488]](_0xff22xa[_0x2b73[119]]))};_0xff22x17= _0xff22xa[_0x2b73[2079]];null!= _0xff22x17&& (0!= _0xff22x17[_0x2b73[235]]&& _0xff22x16[_0x2b73[57]](_0x2b73[1126],Math[_0x2b73[488]](_0xff22x17[_0x2b73[235]])),0!= _0xff22x17[_0x2b73[236]]&& _0xff22x16[_0x2b73[57]](_0x2b73[1125],Math[_0x2b73[488]](_0xff22x17[_0x2b73[236]])))}};for(_0xff22x17= 0;_0xff22x17< _0xff22x13;_0xff22x17++){_0xff22xa= this[_0x2b73[3242]](_0xff22x2,_0xff22x4,_0xff22x9[_0x2b73[263]](_0xff22x5,_0xff22x17)),null!= _0xff22xa&& _0xff22x16[_0x2b73[62]](_0xff22xa)}}};return _0xff22x16};return _0xff22x2}());mxCodecRegistry[_0x2b73[3234]](function(){var _0xff22x2= new mxObjectCodec( new mxStylesheet);_0xff22x2[_0x2b73[514]]= function(_0xff22x2,_0xff22x4){var _0xff22x5=_0xff22x2[_0x2b73[395]][_0x2b73[55]](this[_0x2b73[718]]()),_0xff22x9;for(_0xff22x9 in _0xff22x4[_0x2b73[2054]]){var _0xff22xa=_0xff22x4[_0x2b73[2054]][_0xff22x9],_0xff22x12=_0xff22x2[_0x2b73[395]][_0x2b73[55]](_0x2b73[99]);if(null!= _0xff22x9){_0xff22x12[_0x2b73[57]](_0x2b73[3069],_0xff22x9);for(var _0xff22x13 in _0xff22xa){var _0xff22x14=this[_0x2b73[3282]](_0xff22x13,_0xff22xa[_0xff22x13]);if(null!= _0xff22x14){var _0xff22x15=_0xff22x2[_0x2b73[395]][_0x2b73[55]](_0x2b73[99]);_0xff22x15[_0x2b73[57]](_0x2b73[131],_0xff22x14);_0xff22x15[_0x2b73[57]](_0x2b73[3069],_0xff22x13);_0xff22x12[_0x2b73[62]](_0xff22x15)}};0< _0xff22x12[_0x2b73[271]][_0x2b73[67]]&& _0xff22x5[_0x2b73[62]](_0xff22x12)}};return _0xff22x5};_0xff22x2[_0x2b73[3282]]= function(_0xff22x2,_0xff22x4){var _0xff22x5= typeof _0xff22x4;_0x2b73[279]== _0xff22x5?_0xff22x4= mxStyleRegistry[_0x2b73[718]](style[j]):_0x2b73[194]== _0xff22x5&& (_0xff22x4= null);return _0xff22x4};_0xff22x2[_0x2b73[1093]]= function(_0xff22x2,_0xff22x4,_0xff22x5){_0xff22x5= _0xff22x5|| new this[_0x2b73[3231]][_0x2b73[196]];var _0xff22x9=_0xff22x4[_0x2b73[284]](_0x2b73[1363]);null!= _0xff22x9&& (_0xff22x2[_0x2b73[68]][_0xff22x9]= _0xff22x5);for(_0xff22x4= _0xff22x4[_0x2b73[285]];null!= _0xff22x4;){if(!this[_0x2b73[3273]](_0xff22x2,_0xff22x4,_0xff22x5)&& _0x2b73[99]== _0xff22x4[_0x2b73[301]]&& (_0xff22x9= _0xff22x4[_0x2b73[284]](_0x2b73[3069]),null!= _0xff22x9)){var _0xff22xa=_0xff22x4[_0x2b73[284]](_0x2b73[1284]),_0xff22x12=null!= _0xff22xa?mxUtils[_0x2b73[238]](_0xff22x5[_0x2b73[2054]][_0xff22xa]):null;null== _0xff22x12&& (null!= _0xff22xa&& mxLog[_0x2b73[283]](_0x2b73[3283]+ _0xff22xa+ _0x2b73[3284]),_0xff22x12= {});for(_0xff22xa= _0xff22x4[_0x2b73[285]];null!= _0xff22xa;){if(_0xff22xa[_0x2b73[288]]== mxConstants[_0x2b73[289]]){var _0xff22x13=_0xff22xa[_0x2b73[284]](_0x2b73[3069]);if(_0x2b73[99]== _0xff22xa[_0x2b73[301]]){var _0xff22x14=mxUtils[_0x2b73[329]](_0xff22xa),_0xff22x15=null;null!= _0xff22x14&& 0< _0xff22x14[_0x2b73[67]]?_0xff22x15= mxUtils[_0x2b73[1545]](_0xff22x14):(_0xff22x15= _0xff22xa[_0x2b73[284]](_0x2b73[131]),mxUtils[_0x2b73[1946]](_0xff22x15)&& (_0xff22x15= parseFloat(_0xff22x15)));null!= _0xff22x15&& (_0xff22x12[_0xff22x13]= _0xff22x15)}else {_0x2b73[205]== _0xff22xa[_0x2b73[301]]&& delete _0xff22x12[_0xff22x13]}};_0xff22xa= _0xff22xa[_0x2b73[287]]};_0xff22x5[_0x2b73[2074]](_0xff22x9,_0xff22x12)};_0xff22x4= _0xff22x4[_0x2b73[287]]};return _0xff22x5};return _0xff22x2}());mxCodecRegistry[_0x2b73[3234]](function(){var _0xff22x2= new mxObjectCodec( new mxDefaultKeyHandler);_0xff22x2[_0x2b73[514]]= function(_0xff22x2,_0xff22x4){return null};_0xff22x2[_0x2b73[1093]]= function(_0xff22x2,_0xff22x4,_0xff22x5){if(null!= _0xff22x5){for(_0xff22x4= _0xff22x4[_0x2b73[285]];null!= _0xff22x4;){if(!this[_0x2b73[3273]](_0xff22x2,_0xff22x4,_0xff22x5)&& _0x2b73[99]== _0xff22x4[_0x2b73[301]]){var _0xff22x9=_0xff22x4[_0x2b73[284]](_0x2b73[3069]),_0xff22xa=_0xff22x4[_0x2b73[284]](_0x2b73[892]),_0xff22x12=_0xff22x4[_0x2b73[284]](_0x2b73[2207]);_0xff22x5[_0x2b73[3063]](_0xff22x9,_0xff22xa,_0xff22x12)};_0xff22x4= _0xff22x4[_0x2b73[287]]}};return _0xff22x5};return _0xff22x2}());mxCodecRegistry[_0x2b73[3234]](function(){var _0xff22x2= new mxObjectCodec( new mxDefaultToolbar);_0xff22x2[_0x2b73[514]]= function(_0xff22x2,_0xff22x4){return null};_0xff22x2[_0x2b73[1093]]= function(_0xff22x2,_0xff22x4,_0xff22x5){if(null!= _0xff22x5){var _0xff22x9=_0xff22x5[_0x2b73[3061]];for(_0xff22x4= _0xff22x4[_0x2b73[285]];null!= _0xff22x4;){if(_0xff22x4[_0x2b73[288]]== mxConstants[_0x2b73[289]]&& !this[_0x2b73[3273]](_0xff22x2,_0xff22x4,_0xff22x5)){if(_0x2b73[3072]== _0xff22x4[_0x2b73[301]]){_0xff22x5[_0x2b73[1051]]()}else {if(_0x2b73[345]== _0xff22x4[_0x2b73[301]]){_0xff22x5[_0x2b73[3082]][_0x2b73[1052]]()}else {if(_0x2b73[1054]== _0xff22x4[_0x2b73[301]]){_0xff22x5[_0x2b73[3082]][_0x2b73[1053]]()}else {if(_0x2b73[99]== _0xff22x4[_0x2b73[301]]){var _0xff22xa=_0xff22x4[_0x2b73[284]](_0x2b73[3069]),_0xff22xa=mxResources[_0x2b73[203]](_0xff22xa)|| _0xff22xa,_0xff22x12=_0xff22x4[_0x2b73[284]](_0x2b73[2916]),_0xff22x13=_0xff22x4[_0x2b73[284]](_0x2b73[3285]),_0xff22x14=_0xff22x4[_0x2b73[284]](_0x2b73[892]),_0xff22x15=_0xff22x4[_0x2b73[284]](_0x2b73[3286]),_0xff22x16=_0xff22x4[_0x2b73[284]](_0x2b73[3231]),_0xff22x17=_0x2b73[468]!= _0xff22x4[_0x2b73[284]](_0x2b73[3287]),_0xff22x18=mxUtils[_0x2b73[329]](_0xff22x4),_0xff22x19=null;if(null!= _0xff22x14){_0xff22x19= _0xff22x5[_0x2b73[1025]](_0xff22xa,_0xff22x12,_0xff22x14,_0xff22x13)}else {if(null!= _0xff22x15){var _0xff22x1a=mxUtils[_0x2b73[1545]](_0xff22x18),_0xff22x19=_0xff22x5[_0x2b73[1048]](_0xff22xa,_0xff22x12,_0xff22x15,_0xff22x13,_0xff22x1a)}else {if(null!= _0xff22x16|| null!= _0xff22x18&& 0< _0xff22x18[_0x2b73[67]]){_0xff22x19= _0xff22x9[_0x2b73[3118]][_0xff22x16],_0xff22x16= _0xff22x4[_0x2b73[284]](_0x2b73[124]),null!= _0xff22x19&& null!= _0xff22x16&& (_0xff22x19= _0xff22x19[_0x2b73[238]](),_0xff22x19[_0x2b73[475]](_0xff22x16)),_0xff22x16= null,null!= _0xff22x18&& 0< _0xff22x18[_0x2b73[67]]&& (_0xff22x16= mxUtils[_0x2b73[1545]](_0xff22x18)),_0xff22x19= _0xff22x5[_0x2b73[3087]](_0xff22xa,_0xff22x12,_0xff22x19,_0xff22x13,_0xff22x16,_0xff22x17)}else {if(_0xff22x13= mxUtils[_0x2b73[1540]](_0xff22x4),0< _0xff22x13[_0x2b73[67]]){if(null== _0xff22x12){_0xff22x16= _0xff22x5[_0x2b73[1038]](_0xff22xa);for(_0xff22xa= 0;_0xff22xa< _0xff22x13[_0x2b73[67]];_0xff22xa++){_0xff22x17= _0xff22x13[_0xff22xa],_0x2b73[3072]== _0xff22x17[_0x2b73[301]]?_0xff22x5[_0x2b73[972]](_0xff22x16,_0x2b73[3288]):_0x2b73[99]== _0xff22x17[_0x2b73[301]]&& (_0xff22x12= _0xff22x17[_0x2b73[284]](_0x2b73[3069]),_0xff22x17= _0xff22x17[_0x2b73[284]](_0x2b73[892]),_0xff22x5[_0x2b73[3085]](_0xff22x16,_0xff22x12,_0xff22x17))}}else {var _0xff22x1b=null,_0xff22x1c=_0xff22x5[_0x2b73[3087]](_0xff22xa,_0xff22x12,function(){var _0xff22x2=_0xff22x9[_0x2b73[3118]][_0xff22x1b[_0x2b73[131]]];if(null!= _0xff22x2){var _0xff22x2=_0xff22x2[_0x2b73[238]](),_0xff22x3=_0xff22x1b[_0x2b73[1040]][_0xff22x1b[_0x2b73[1039]]][_0x2b73[3289]];null!= _0xff22x3&& _0xff22x2[_0x2b73[475]](_0xff22x3);return _0xff22x2};mxLog[_0x2b73[283]](_0x2b73[3290]+ _0xff22x2+ _0x2b73[3291]);return null},null,null,_0xff22x17),_0xff22x1b=_0xff22x5[_0x2b73[970]]();mxEvent[_0x2b73[169]](_0xff22x1b,_0x2b73[826],function(){_0xff22x5[_0x2b73[3082]][_0x2b73[1047]](_0xff22x1c,function(_0xff22x2){_0xff22x2= mxUtils[_0x2b73[2196]](_0xff22x9[_0x2b73[1179]][_0x2b73[526]],mxEvent[_0x2b73[731]](_0xff22x2),mxEvent[_0x2b73[733]](_0xff22x2));return _0xff22x9[_0x2b73[817]](null,_0xff22x1a(),_0xff22x2[_0x2b73[235]],_0xff22x2[_0x2b73[236]])});_0xff22x5[_0x2b73[3082]][_0x2b73[1023]]= !1});for(_0xff22xa= 0;_0xff22xa< _0xff22x13[_0x2b73[67]];_0xff22xa++){_0xff22x17= _0xff22x13[_0xff22xa],_0x2b73[3072]== _0xff22x17[_0x2b73[301]]?_0xff22x5[_0x2b73[972]](_0xff22x1b,_0x2b73[3288]):_0x2b73[99]== _0xff22x17[_0x2b73[301]]&& (_0xff22x12= _0xff22x17[_0x2b73[284]](_0x2b73[3069]),_0xff22x18= _0xff22x17[_0x2b73[284]](_0x2b73[3231]),_0xff22x5[_0x2b73[972]](_0xff22x1b,_0xff22x12,_0xff22x18|| _0xff22x16)[_0x2b73[3289]]= _0xff22x17[_0x2b73[284]](_0x2b73[124]))}}}}}};null!= _0xff22x19&& (_0xff22x16= _0xff22x4[_0x2b73[284]](_0x2b73[1363]),null!= _0xff22x16&& 0< _0xff22x16[_0x2b73[67]]&& _0xff22x19[_0x2b73[57]](_0x2b73[1363],_0xff22x16))}}}}};_0xff22x4= _0xff22x4[_0x2b73[287]]}};return _0xff22x5};return _0xff22x2}());mxCodecRegistry[_0x2b73[3234]](function(){var _0xff22x2= new mxObjectCodec( new mxDefaultPopupMenu);_0xff22x2[_0x2b73[514]]= function(_0xff22x2,_0xff22x4){return null};_0xff22x2[_0x2b73[1093]]= function(_0xff22x2,_0xff22x4,_0xff22x5){var _0xff22x9=_0xff22x4[_0x2b73[64]](_0x2b73[3277])[0];null!= _0xff22x9?this[_0x2b73[3273]](_0xff22x2,_0xff22x9,_0xff22x5):null!= _0xff22x5&& (_0xff22x5[_0x2b73[3064]]= _0xff22x4);return _0xff22x5};return _0xff22x2}());mxCodecRegistry[_0x2b73[3234]](function(){var _0xff22x2= new mxObjectCodec( new mxEditor,_0x2b73[3292][_0x2b73[224]](_0x2b73[185]));_0xff22x2[_0x2b73[3268]]= function(_0xff22x2,_0xff22x4,_0xff22x5){_0xff22x2= _0xff22x4[_0x2b73[284]](_0x2b73[2075]);null!= _0xff22x2&& (_0xff22x4[_0x2b73[1390]](_0x2b73[2075]),_0xff22x5[_0x2b73[2075]]= _0xff22x5[_0x2b73[3118]][_0xff22x2]);_0xff22x2= _0xff22x4[_0x2b73[284]](_0x2b73[3120]);null!= _0xff22x2&& (_0xff22x4[_0x2b73[1390]](_0x2b73[3120]),_0xff22x5[_0x2b73[3120]]= _0xff22x5[_0x2b73[3118]][_0xff22x2]);return _0xff22x5};_0xff22x2[_0x2b73[3274]]= function(_0xff22x2,_0xff22x4,_0xff22x5){if(_0x2b73[3293]== _0xff22x4[_0x2b73[301]]){if(_0x2b73[3118]== _0xff22x4[_0x2b73[284]](_0x2b73[3069])){this[_0x2b73[3294]](_0xff22x2,_0xff22x4,_0xff22x5);return}}else {if(_0x2b73[3295]== _0xff22x4[_0x2b73[301]]){this[_0x2b73[3296]](_0xff22x2,_0xff22x4,_0xff22x5);return}};mxObjectCodec[_0x2b73[202]][_0x2b73[3274]][_0x2b73[183]](this,arguments)};_0xff22x2[_0x2b73[3296]]= function(_0xff22x2,_0xff22x4,_0xff22x5){for(_0xff22x2= _0xff22x4[_0x2b73[285]];null!= _0xff22x2;){if(_0x2b73[99]== _0xff22x2[_0x2b73[301]]){_0xff22x4= _0xff22x2[_0x2b73[284]](_0x2b73[3069]);var _0xff22x9=_0xff22x2[_0x2b73[284]](_0x2b73[980]),_0xff22xa=_0xff22x2[_0x2b73[284]](_0x2b73[124]),_0xff22x12=null;if(null!= _0xff22x9){_0xff22x12= document[_0x2b73[1362]](_0xff22x9),null!= _0xff22x12&& null!= _0xff22xa&& (_0xff22x12[_0x2b73[124]][_0x2b73[103]]+= _0x2b73[471]+ _0xff22xa)}else {var _0xff22x9=parseInt(_0xff22x2[_0x2b73[284]](_0x2b73[235])),_0xff22x13=parseInt(_0xff22x2[_0x2b73[284]](_0x2b73[236])),_0xff22x14=_0xff22x2[_0x2b73[284]](_0x2b73[117]),_0xff22x15=_0xff22x2[_0x2b73[284]](_0x2b73[119]),_0xff22x12=document[_0x2b73[55]](_0x2b73[485]);_0xff22x12[_0x2b73[124]][_0x2b73[103]]= _0xff22xa;( new mxWindow(mxResources[_0x2b73[203]](_0xff22x4)|| _0xff22x4,_0xff22x12,_0xff22x9,_0xff22x13,_0xff22x14,_0xff22x15,!1,!0))[_0x2b73[175]](!0)};_0x2b73[1179]== _0xff22x4?_0xff22x5[_0x2b73[3202]](_0xff22x12):_0x2b73[3082]== _0xff22x4?_0xff22x5[_0x2b73[3204]](_0xff22x12):_0x2b73[924]== _0xff22x4?_0xff22x5[_0x2b73[3208]](_0xff22x12):_0x2b73[879]== _0xff22x4?_0xff22x5[_0x2b73[3205]](_0xff22x12):_0x2b73[201]== _0xff22x4&& _0xff22x5[_0x2b73[3297]](_0xff22x12)}else {_0x2b73[3298]== _0xff22x2[_0x2b73[301]]?mxResources[_0x2b73[99]](_0xff22x2[_0x2b73[284]](_0x2b73[3299])):_0x2b73[94]== _0xff22x2[_0x2b73[301]]&& mxClient[_0x2b73[54]](_0x2b73[94],_0xff22x2[_0x2b73[284]](_0x2b73[298]))};_0xff22x2= _0xff22x2[_0x2b73[287]]}};_0xff22x2[_0x2b73[3294]]= function(_0xff22x2,_0xff22x4,_0xff22x5){null== _0xff22x5[_0x2b73[3118]]&& (_0xff22x5[_0x2b73[3118]]= []);_0xff22x4= mxUtils[_0x2b73[1540]](_0xff22x4);for(var _0xff22x9=0;_0xff22x9< _0xff22x4[_0x2b73[67]];_0xff22x9++){for(var _0xff22xa=_0xff22x4[_0xff22x9][_0x2b73[284]](_0x2b73[3069]),_0xff22x12=_0xff22x4[_0xff22x9][_0x2b73[285]];null!= _0xff22x12&& 1!= _0xff22x12[_0x2b73[288]];){_0xff22x12= _0xff22x12[_0x2b73[287]]};null!= _0xff22x12&& (_0xff22x5[_0x2b73[3118]][_0xff22xa]= _0xff22x2[_0x2b73[3244]](_0xff22x12))}};return _0xff22x2}()) \ No newline at end of file diff --git a/public/assets/plugins/square/js/Actions.js b/public/assets/plugins/square/js/Actions.js index 891e88f..3c1de02 100644 --- a/public/assets/plugins/square/js/Actions.js +++ b/public/assets/plugins/square/js/Actions.js @@ -1,638 +1 @@ -'use strict'; -/** - * $Id: Actions.js,v 1.7 2013-02-14 07:48:01 gaudenz Exp $ - * Copyright (c) 2006-2012, JGraph Ltd - */ -/** - * Constructs the actions object for the given UI. - */ -function Actions(editorUi) { - this.editorUi = editorUi; - this.actions = new Object(); - this.init(); -}; - -/** - * Adds the default actions. - */ -Actions.prototype.init = function() { - var ui = this.editorUi; - var editor = ui.editor; - var graph = editor.graph; - - // File actions - this.addAction('new', function() { - ui.showDialog(new NewDialog(ui).container, 300, 180, true, true); - }); - this.addAction('open', function() { - ui.showDialog(new OpenDialog(ui).container, 300, 180, true, true); - }); - this.addAction('save', function() { - ui.saveFile(false); - }, null, null, 'Ctrl+S'); - this.addAction('saveAs', function() { - ui.saveFile(true); - }, null, null, 'Ctrl+Shift-S'); - this.addAction('publish', function() { - ui.publishFile(false); - }, null, null, 'Ctrl+Shift+P'); - this.addAction('variable', function() { - ui.showDialog(new VariableDialog(ui).container, 300, 180, true, true); - }); - this.addAction('description', function() { - ui.showDialog(new DescriptionDialog(ui).container, 300, 180, true, true); - }); - this.addAction('import', function() { - ui.showDialog(new ImportDialog(ui).container, 300, 200, true, true); - }); - this.addAction('export', function() { - ui.showDialog(new ExportDialog(ui).container, 300, 200, true, true); - }, null, null, 'Ctrl+E'); - this.put('editFile', new Action(mxResources.get('edit'), mxUtils.bind(this, - function() { - this.editorUi.showDialog(new EditFileDialog(ui).container, 620, 420, - true, true); - }))); - // this.addAction('rename', function() { - // ui.showDialog(new RenameDialog(ui).container, 300, 180, true, true); - // }); - this.addAction('print', function() { - mxUtils.printScreen(graph); - }, null, 'sprite-print', 'Ctrl+P'); - this.addAction('preview', function() { - mxUtils.show(graph, null, 10, 10); - }); - - // Edit actions - this.addAction('undo', function() { - editor.undoManager.undo(); - }, null, 'sprite-undo', 'Ctrl+Z'); - this.addAction('redo', function() { - editor.undoManager.redo(); - }, null, 'sprite-redo', 'Ctrl+Y'); - this.addAction('cut', function() { - mxClipboard.cut(graph); - }, null, 'sprite-cut', 'Ctrl+X'); - this.addAction('copy', function() { - mxClipboard.copy(graph); - }, null, 'sprite-copy', 'Ctrl+C'); - this.addAction('paste', function() { - mxClipboard.paste(graph); - }, false, 'sprite-paste', 'Ctrl+V'); - this.addAction('delete', function() { - graph.removeCells(); - }, null, null, 'Delete'); - this.addAction('duplicate', function() { - var s = graph.gridSize; - graph.setSelectionCells(graph.moveCells(graph.getSelectionCells(), s, s, - true)); - }, null, null, 'Ctrl+D'); - this.addAction('selectVertices', function() { - graph.selectVertices(); - }, null, null, 'Ctrl+Shift+V'); - this.addAction('selectEdges', function() { - graph.selectEdges(); - }, null, null, 'Ctrl+Shift+E'); - this.addAction('selectAll', function() { - graph.selectAll(); - }, null, null, 'Ctrl+A'); - - // Navigation actions - this.addAction('home', function() { - graph.home(); - }, null, null, 'Home'); - this.addAction('exitGroup', function() { - graph.exitGroup(); - }, null, null, 'Page Up'); - this.addAction('enterGroup', function() { - graph.enterGroup(); - }, null, null, 'Page Down'); - this.addAction('expand', function() { - graph.foldCells(false); - }, null, null, 'Enter'); - this.addAction('collapse', function() { - graph.foldCells(true); - }, null, null, 'Backspace'); - - // Arrange actions - this.addAction('toFront', function() { - graph.orderCells(false); - }, null, null, 'Ctrl+F'); - this.addAction('toBack', function() { - graph.orderCells(true); - }, null, null, 'Ctrl+B'); - this.addAction('group', function() { - graph.setSelectionCell(graph.groupCells(null, 0)); - }, null, null, 'Ctrl+G'); - this.addAction('ungroup', function() { - graph.setSelectionCells(graph.ungroupCells()); - }, null, null, 'Ctrl+U'); - this.addAction('removeFromGroup', function() { - graph.removeCellsFromParent(); - }); - this.addAction('editLink', function() { - var cell = graph.getSelectionCell(); - var link = graph.getLinkForCell(cell); - - if (link == null) { - link = ''; - } - - link = mxUtils.prompt(mxResources.get('enterValue'), link); - - if (link != null) { - graph.setLinkForCell(cell, link); - } - }); - this.addAction('openLink', function() { - var cell = graph.getSelectionCell(); - var link = graph.getLinkForCell(cell); - - if (link != null) { - window.open(link); - } - }); - this.addAction('autosize', function() { - var cells = graph.getSelectionCells(); - - if (cells != null) { - graph.getModel().beginUpdate(); - try { - for (var i = 0; i < cells.length; i++) { - var cell = cells[i]; - - if (graph.getModel().getChildCount(cell)) { - graph.updateGroupBounds([cell], 20); - } else { - graph.updateCellSize(cell); - } - } - } finally { - graph.getModel().endUpdate(); - } - } - }); - this.addAction('wordWrap', function() { - var state = graph.getView().getState(graph.getSelectionCell()); - var value = 'wrap'; - - if (state != null && state.style[mxConstants.STYLE_WHITE_SPACE] == 'wrap') { - value = null; - } - - graph.setCellStyles(mxConstants.STYLE_WHITE_SPACE, value); - }); - this.addAction('rotation', function() { - var value = '0'; - var state = graph.getView().getState(graph.getSelectionCell()); - - if (state != null) { - value = state.style[mxConstants.STYLE_ROTATION] || value; - } - - value = mxUtils.prompt(mxResources.get('enterValue') + ' (' + - mxResources.get('rotation') + ' 0-360)', value); - - if (value != null) { - graph.setCellStyles(mxConstants.STYLE_ROTATION, value); - } - }); - this.addAction('tilt', function() { - var cells = graph.getSelectionCells(); - - if (cells != null) { - graph.getModel().beginUpdate(); - try { - for (var i = 0; i < cells.length; i++) { - var cell = cells[i]; - - if (graph.getModel().isVertex(cell) && graph.getModel().getChildCount( - cell) == 0) { - var geo = graph.getCellGeometry(cell); - - if (geo != null) { - // Rotates the size and position in the geometry - geo = geo.clone(); - geo.x += geo.width / 2 - geo.height / 2; - geo.y += geo.height / 2 - geo.width / 2; - var tmp = geo.width; - geo.width = geo.height; - geo.height = tmp; - graph.getModel().setGeometry(cell, geo); - - // Reads the current direction and advances by 90 degrees - var state = graph.view.getState(cell); - - if (state != null) { - var dir = state.style[mxConstants.STYLE_DIRECTION] || 'east' /*default*/ ; - - if (dir == 'east') { - dir = 'south'; - } else if (dir == 'south') { - dir = 'west'; - } else if (dir == 'west') { - dir = 'north'; - } else if (dir == 'north') { - dir = 'east'; - } - - graph.setCellStyles(mxConstants.STYLE_DIRECTION, dir, [cell]); - } - } - } - } - } finally { - graph.getModel().endUpdate(); - } - } - }, null, null, 'Ctrl+R'); - - // View actions - this.addAction('actualSize', function() { - graph.zoomTo(1); - }); - this.addAction('zoomIn', function() { - graph.zoomIn(); - }, null, null, 'Add'); - this.addAction('zoomOut', function() { - graph.zoomOut(); - }, null, null, 'Subtract'); - this.addAction('fitWindow', function() { - graph.fit(); - }); - - this.addAction('fitPage', mxUtils.bind(this, function() { - if (!graph.pageVisible) { - this.get('pageView').funct(); - } - - var fmt = graph.pageFormat; - var ps = graph.pageScale; - var cw = graph.container.clientWidth - 20; - var ch = graph.container.clientHeight - 20; - - var scale = Math.floor(100 * Math.min(cw / fmt.width / ps, ch / fmt.height / - ps)) / 100; - graph.zoomTo(scale); - - graph.container.scrollLeft = Math.round(graph.view.translate.x * scale - - Math.max(10, (graph.container.clientWidth - fmt.width * ps * scale) / 2) - ); - graph.container.scrollTop = Math.round(graph.view.translate.y * scale - - Math.max(10, (graph.container.clientHeight - fmt.height * ps * scale) / - 2)); - })); - this.addAction('fitPageWidth', mxUtils.bind(this, function() { - if (!graph.pageVisible) { - this.get('pageView').funct(); - } - - var fmt = graph.pageFormat; - var ps = graph.pageScale; - var cw = graph.container.clientWidth - 20; - - var scale = Math.floor(100 * cw / fmt.width / ps) / 100; - graph.zoomTo(scale); - - graph.container.scrollLeft = Math.round(graph.view.translate.x * scale - - Math.max(10, (graph.container.clientWidth - fmt.width * ps * scale) / 2) - ); - graph.container.scrollTop = Math.round(graph.view.translate.y * scale - - Math.max(10, (graph.container.clientHeight - fmt.height * ps * scale) / - 2)); - })); - this.put('customZoom', new Action(mxResources.get('custom'), function() { - var value = mxUtils.prompt(mxResources.get('enterValue') + ' (%)', - parseInt(graph.getView().getScale() * 100)); - - if (value != null && value.length > 0 && !isNaN(parseInt(value))) { - graph.zoomTo(parseInt(value) / 100); - } - })); - - // Option actions - var action = null; - action = this.addAction('grid', function() { - graph.setGridEnabled(!graph.isGridEnabled()); - editor.updateGraphComponents(); - }, null, null, 'Ctrl+Shift+G'); - action.setToggleAction(true); - action.setSelectedCallback(function() { - return graph.isGridEnabled(); - }); - action = this.addAction('guides', function() { - graph.graphHandler.guidesEnabled = !graph.graphHandler.guidesEnabled; - }); - action.setToggleAction(true); - action.setSelectedCallback(function() { - return graph.graphHandler.guidesEnabled; - }); - action = this.addAction('tooltips', function() { - graph.tooltipHandler.setEnabled(!graph.tooltipHandler.isEnabled()); - }); - action.setToggleAction(true); - action.setSelectedCallback(function() { - return graph.tooltipHandler.isEnabled(); - }); - action = this.addAction('navigation', function() { - graph.foldingEnabled = !graph.foldingEnabled; - graph.view.revalidate(); - }); - action.setToggleAction(true); - action.setSelectedCallback(function() { - return graph.foldingEnabled; - }); - action = this.addAction('scrollbars', function() { - graph.scrollbars = !graph.scrollbars; - editor.updateGraphComponents(); - - if (!graph.scrollbars) { - var t = graph.view.translate; - graph.view.setTranslate(t.x - graph.container.scrollLeft / graph.view.scale, - t.y - graph.container.scrollTop / graph.view.scale); - graph.container.scrollLeft = 0; - graph.container.scrollTop = 0; - graph.sizeDidChange(); - } else { - var dx = graph.view.translate.x; - var dy = graph.view.translate.y; - - graph.view.translate.x = 0; - graph.view.translate.y = 0; - graph.sizeDidChange(); - graph.container.scrollLeft -= Math.round(dx * graph.view.scale); - graph.container.scrollTop -= Math.round(dy * graph.view.scale); - } - }, !mxClient.IS_TOUCH); - action.setToggleAction(true); - action.setSelectedCallback(function() { - return graph.container.style.overflow == 'auto'; - }); - action = this.addAction('pageView', mxUtils.bind(this, function() { - graph.pageVisible = !graph.pageVisible; - graph.pageBreaksVisible = graph.pageVisible; - graph.preferPageSize = graph.pageBreaksVisible; - graph.view.validate(); - graph.sizeDidChange(); - - editor.updateGraphComponents(); - editor.outline.update(); - - if (mxUtils.hasScrollbars(graph.container)) { - if (graph.pageVisible) { - graph.container.scrollLeft -= 20; - graph.container.scrollTop -= 20; - } else { - graph.container.scrollLeft += 20; - graph.container.scrollTop += 20; - } - } - })); - action.setToggleAction(true); - action.setSelectedCallback(function() { - return graph.pageVisible; - }); - action = this.addAction('connect', function() { - graph.setConnectable(!graph.connectionHandler.isEnabled()); - }, null, null, 'Ctrl+Q'); - action.setToggleAction(true); - action.setSelectedCallback(function() { - return graph.connectionHandler.isEnabled(); - }); - action = this.addAction('copyConnect', function() { - graph.connectionHandler.setCreateTarget(!graph.connectionHandler.isCreateTarget()); - }); - action.setToggleAction(true); - action.setSelectedCallback(function() { - return graph.connectionHandler.isCreateTarget(); - }); - - // Help actions - this.addAction('help', function() { - var ext = ''; - - if (mxResources.isLanguageSupported(mxClient.language)) { - ext = '_' + mxClient.language; - } - - window.open("https://wiki.xcallymotion.com/display/XMD/Cally+Square"); - //window.open(RESOURCES_PATH + '/help' + ext + '.html'); - }); - this.put('about', new Action(mxResources.get('about') + ' Cally Square', - function() { - ui.showDialog(new AboutDialog(ui).container, 320, 280, true, true); - }, null, null, 'F1')); - - // Font style actions - var toggleFontStyle = mxUtils.bind(this, function(key, style) { - this.addAction(key, function() { - graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE, style); - }); - }); - - toggleFontStyle('bold', mxConstants.FONT_BOLD); - toggleFontStyle('italic', mxConstants.FONT_ITALIC); - toggleFontStyle('underline', mxConstants.FONT_UNDERLINE); - - // Format actions - this.addAction('shadow', function() { - graph.toggleCellStyles(mxConstants.STYLE_SHADOW); - }); - this.addAction('dashed', function() { - graph.toggleCellStyles(mxConstants.STYLE_DASHED); - }); - this.addAction('rounded', function() { - graph.toggleCellStyles(mxConstants.STYLE_ROUNDED); - }); - this.addAction('curved', function() { - graph.toggleCellStyles(mxConstants.STYLE_CURVED); - }); - this.addAction('style', function() { - var cells = graph.getSelectionCells(); - - if (cells != null && cells.length > 0) { - var model = graph.getModel(); - var style = mxUtils.prompt(mxResources.get('enterValue') + ' (' + - mxResources.get('style') + ')', - model.getStyle(cells[0]) || ''); - - if (style != null) { - graph.setCellStyle(style, cells); - } - } - }); - this.addAction('setAsDefaultEdge', function() { - graph.setDefaultEdge(graph.getSelectionCell()); - }); - this.addAction('addWaypoint', function() { - var cell = graph.getSelectionCell(); - - if (cell != null && graph.getModel().isEdge(cell)) { - var handler = editor.graph.selectionCellsHandler.getHandler(cell); - - if (handler instanceof mxEdgeHandler) { - var t = graph.view.translate; - var s = graph.view.scale; - var dx = t.x; - var dy = t.y; - - var parent = graph.getModel().getParent(cell); - var pgeo = graph.getCellGeometry(parent); - - if (graph.getModel().isVertex(parent) && pgeo != null) { - dx += pgeo.x; - dy += pgeo.y; - } - - handler.addPointAt(handler.state, graph.panningHandler.triggerX / s - dx, - graph.panningHandler.triggerY / s - dy); - } - } - }); - this.addAction('removeWaypoint', function() { - // TODO: Action should run with "this" set to action - var rmWaypointAction = ui.actions.get('removeWaypoint'); - - if (rmWaypointAction.handler != null) { - // NOTE: Popupevent handled and action updated in Menus.createPopupMenu - rmWaypointAction.handler.removePoint(rmWaypointAction.handler.state, - rmWaypointAction.index); - } - }); - this.addAction('image', function() { - function updateImage(value, w, h) { - var select = null; - var cells = graph.getSelectionCells(); - - graph.getModel().beginUpdate(); - try { - // Inserts new cell if no cell is selected - if (cells.length == 0) { - var gs = graph.getGridSize(); - cells = [graph.insertVertex(graph.getDefaultParent(), null, '', gs, gs, - w, h)]; - select = cells; - } - - graph.setCellStyles(mxConstants.STYLE_IMAGE, value, cells); - graph.setCellStyles(mxConstants.STYLE_SHAPE, 'image', cells); - - if (graph.getSelectionCount() == 1) { - if (w != null && h != null) { - var cell = cells[0]; - var geo = graph.getModel().getGeometry(cell); - - if (geo != null) { - geo = geo.clone(); - geo.width = w; - geo.height = h; - graph.getModel().setGeometry(cell, geo); - } - } - } - } finally { - graph.getModel().endUpdate(); - } - - if (select != null) { - graph.setSelectionCells(select); - graph.scrollCellToVisible(select[0]); - } - }; - - var value = ''; - var state = graph.getView().getState(graph.getSelectionCell()); - - if (state != null) { - value = state.style[mxConstants.STYLE_IMAGE] || value; - } - - value = mxUtils.prompt(mxResources.get('enterValue') + ' (' + mxResources.get( - 'url') + ')', value); - - if (value != null) { - if (value.length > 0) { - var img = new Image(); - - img.onload = function() { - updateImage(value, img.width, img.height); - }; - img.onerror = function() { - mxUtils.alert(mxResources.get('fileNotFound')); - }; - - img.src = value; - } - } - }); -}; - -/** - * Registers the given action under the given name. - */ -Actions.prototype.addAction = function(key, funct, enabled, iconCls, shortcut) { - return this.put(key, new Action(mxResources.get(key), funct, enabled, iconCls, - shortcut)); -}; - -/** - * Registers the given action under the given name. - */ -Actions.prototype.put = function(name, action) { - this.actions[name] = action; - - return action; -}; - -/** - * Returns the action for the given name or null if no such action exists. - */ -Actions.prototype.get = function(name) { - return this.actions[name]; -}; - -/** - * Constructs a new action for the given parameters. - */ -function Action(label, funct, enabled, iconCls, shortcut) { - mxEventSource.call(this); - this.label = label; - this.funct = funct; - this.enabled = (enabled != null) ? enabled : true; - this.iconCls = iconCls; - this.shortcut = shortcut; -}; - -// Action inherits from mxEventSource -mxUtils.extend(Action, mxEventSource); - -/** - * Sets the enabled state of the action and fires a stateChanged event. - */ -Action.prototype.setEnabled = function(value) { - if (this.enabled != value) { - this.enabled = value; - this.fireEvent(new mxEventObject('stateChanged')); - } -}; - -/** - * Sets the enabled state of the action and fires a stateChanged event. - */ -Action.prototype.setToggleAction = function(value) { - this.toggleAction = value; -}; - -/** - * Sets the enabled state of the action and fires a stateChanged event. - */ -Action.prototype.setSelectedCallback = function(funct) { - this.selectedCallback = funct; -}; - -/** - * Sets the enabled state of the action and fires a stateChanged event. - */ -Action.prototype.isSelected = function() { - return this.selectedCallback(); -}; +var _0xd266=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x64\x69\x74\x6F\x72\x55\x69","\x61\x63\x74\x69\x6F\x6E\x73","\x69\x6E\x69\x74","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x65\x64\x69\x74\x6F\x72","\x67\x72\x61\x70\x68","\x6E\x65\x77","\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x73\x68\x6F\x77\x44\x69\x61\x6C\x6F\x67","\x61\x64\x64\x41\x63\x74\x69\x6F\x6E","\x6F\x70\x65\x6E","\x73\x61\x76\x65","\x73\x61\x76\x65\x46\x69\x6C\x65","\x43\x74\x72\x6C\x2B\x53","\x73\x61\x76\x65\x41\x73","\x43\x74\x72\x6C\x2B\x53\x68\x69\x66\x74\x2D\x53","\x70\x75\x62\x6C\x69\x73\x68","\x70\x75\x62\x6C\x69\x73\x68\x46\x69\x6C\x65","\x43\x74\x72\x6C\x2B\x53\x68\x69\x66\x74\x2B\x50","\x76\x61\x72\x69\x61\x62\x6C\x65","\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E","\x69\x6D\x70\x6F\x72\x74","\x65\x78\x70\x6F\x72\x74","\x43\x74\x72\x6C\x2B\x45","\x65\x64\x69\x74\x46\x69\x6C\x65","\x65\x64\x69\x74","\x67\x65\x74","\x62\x69\x6E\x64","\x70\x75\x74","\x70\x72\x69\x6E\x74","\x70\x72\x69\x6E\x74\x53\x63\x72\x65\x65\x6E","\x73\x70\x72\x69\x74\x65\x2D\x70\x72\x69\x6E\x74","\x43\x74\x72\x6C\x2B\x50","\x70\x72\x65\x76\x69\x65\x77","\x73\x68\x6F\x77","\x75\x6E\x64\x6F","\x75\x6E\x64\x6F\x4D\x61\x6E\x61\x67\x65\x72","\x73\x70\x72\x69\x74\x65\x2D\x75\x6E\x64\x6F","\x43\x74\x72\x6C\x2B\x5A","\x72\x65\x64\x6F","\x73\x70\x72\x69\x74\x65\x2D\x72\x65\x64\x6F","\x43\x74\x72\x6C\x2B\x59","\x63\x75\x74","\x73\x70\x72\x69\x74\x65\x2D\x63\x75\x74","\x43\x74\x72\x6C\x2B\x58","\x63\x6F\x70\x79","\x73\x70\x72\x69\x74\x65\x2D\x63\x6F\x70\x79","\x43\x74\x72\x6C\x2B\x43","\x70\x61\x73\x74\x65","\x73\x70\x72\x69\x74\x65\x2D\x70\x61\x73\x74\x65","\x43\x74\x72\x6C\x2B\x56","\x64\x65\x6C\x65\x74\x65","\x72\x65\x6D\x6F\x76\x65\x43\x65\x6C\x6C\x73","\x44\x65\x6C\x65\x74\x65","\x64\x75\x70\x6C\x69\x63\x61\x74\x65","\x67\x72\x69\x64\x53\x69\x7A\x65","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C\x73","\x6D\x6F\x76\x65\x43\x65\x6C\x6C\x73","\x73\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C\x73","\x43\x74\x72\x6C\x2B\x44","\x73\x65\x6C\x65\x63\x74\x56\x65\x72\x74\x69\x63\x65\x73","\x43\x74\x72\x6C\x2B\x53\x68\x69\x66\x74\x2B\x56","\x73\x65\x6C\x65\x63\x74\x45\x64\x67\x65\x73","\x43\x74\x72\x6C\x2B\x53\x68\x69\x66\x74\x2B\x45","\x73\x65\x6C\x65\x63\x74\x41\x6C\x6C","\x43\x74\x72\x6C\x2B\x41","\x68\x6F\x6D\x65","\x48\x6F\x6D\x65","\x65\x78\x69\x74\x47\x72\x6F\x75\x70","\x50\x61\x67\x65\x20\x55\x70","\x65\x6E\x74\x65\x72\x47\x72\x6F\x75\x70","\x50\x61\x67\x65\x20\x44\x6F\x77\x6E","\x65\x78\x70\x61\x6E\x64","\x66\x6F\x6C\x64\x43\x65\x6C\x6C\x73","\x45\x6E\x74\x65\x72","\x63\x6F\x6C\x6C\x61\x70\x73\x65","\x42\x61\x63\x6B\x73\x70\x61\x63\x65","\x74\x6F\x46\x72\x6F\x6E\x74","\x6F\x72\x64\x65\x72\x43\x65\x6C\x6C\x73","\x43\x74\x72\x6C\x2B\x46","\x74\x6F\x42\x61\x63\x6B","\x43\x74\x72\x6C\x2B\x42","\x67\x72\x6F\x75\x70","\x67\x72\x6F\x75\x70\x43\x65\x6C\x6C\x73","\x73\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C","\x43\x74\x72\x6C\x2B\x47","\x75\x6E\x67\x72\x6F\x75\x70","\x75\x6E\x67\x72\x6F\x75\x70\x43\x65\x6C\x6C\x73","\x43\x74\x72\x6C\x2B\x55","\x72\x65\x6D\x6F\x76\x65\x46\x72\x6F\x6D\x47\x72\x6F\x75\x70","\x72\x65\x6D\x6F\x76\x65\x43\x65\x6C\x6C\x73\x46\x72\x6F\x6D\x50\x61\x72\x65\x6E\x74","\x65\x64\x69\x74\x4C\x69\x6E\x6B","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C","\x67\x65\x74\x4C\x69\x6E\x6B\x46\x6F\x72\x43\x65\x6C\x6C","","\x65\x6E\x74\x65\x72\x56\x61\x6C\x75\x65","\x70\x72\x6F\x6D\x70\x74","\x73\x65\x74\x4C\x69\x6E\x6B\x46\x6F\x72\x43\x65\x6C\x6C","\x6F\x70\x65\x6E\x4C\x69\x6E\x6B","\x61\x75\x74\x6F\x73\x69\x7A\x65","\x62\x65\x67\x69\x6E\x55\x70\x64\x61\x74\x65","\x67\x65\x74\x4D\x6F\x64\x65\x6C","\x6C\x65\x6E\x67\x74\x68","\x67\x65\x74\x43\x68\x69\x6C\x64\x43\x6F\x75\x6E\x74","\x75\x70\x64\x61\x74\x65\x47\x72\x6F\x75\x70\x42\x6F\x75\x6E\x64\x73","\x75\x70\x64\x61\x74\x65\x43\x65\x6C\x6C\x53\x69\x7A\x65","\x65\x6E\x64\x55\x70\x64\x61\x74\x65","\x77\x6F\x72\x64\x57\x72\x61\x70","\x67\x65\x74\x53\x74\x61\x74\x65","\x67\x65\x74\x56\x69\x65\x77","\x77\x72\x61\x70","\x53\x54\x59\x4C\x45\x5F\x57\x48\x49\x54\x45\x5F\x53\x50\x41\x43\x45","\x73\x74\x79\x6C\x65","\x73\x65\x74\x43\x65\x6C\x6C\x53\x74\x79\x6C\x65\x73","\x72\x6F\x74\x61\x74\x69\x6F\x6E","\x30","\x53\x54\x59\x4C\x45\x5F\x52\x4F\x54\x41\x54\x49\x4F\x4E","\x20\x28","\x20\x30\x2D\x33\x36\x30\x29","\x74\x69\x6C\x74","\x69\x73\x56\x65\x72\x74\x65\x78","\x67\x65\x74\x43\x65\x6C\x6C\x47\x65\x6F\x6D\x65\x74\x72\x79","\x63\x6C\x6F\x6E\x65","\x78","\x77\x69\x64\x74\x68","\x68\x65\x69\x67\x68\x74","\x79","\x73\x65\x74\x47\x65\x6F\x6D\x65\x74\x72\x79","\x76\x69\x65\x77","\x53\x54\x59\x4C\x45\x5F\x44\x49\x52\x45\x43\x54\x49\x4F\x4E","\x65\x61\x73\x74","\x73\x6F\x75\x74\x68","\x77\x65\x73\x74","\x6E\x6F\x72\x74\x68","\x43\x74\x72\x6C\x2B\x52","\x61\x63\x74\x75\x61\x6C\x53\x69\x7A\x65","\x7A\x6F\x6F\x6D\x54\x6F","\x7A\x6F\x6F\x6D\x49\x6E","\x41\x64\x64","\x7A\x6F\x6F\x6D\x4F\x75\x74","\x53\x75\x62\x74\x72\x61\x63\x74","\x66\x69\x74\x57\x69\x6E\x64\x6F\x77","\x66\x69\x74","\x66\x69\x74\x50\x61\x67\x65","\x70\x61\x67\x65\x56\x69\x73\x69\x62\x6C\x65","\x66\x75\x6E\x63\x74","\x70\x61\x67\x65\x56\x69\x65\x77","\x70\x61\x67\x65\x46\x6F\x72\x6D\x61\x74","\x70\x61\x67\x65\x53\x63\x61\x6C\x65","\x63\x6C\x69\x65\x6E\x74\x57\x69\x64\x74\x68","\x63\x6C\x69\x65\x6E\x74\x48\x65\x69\x67\x68\x74","\x6D\x69\x6E","\x66\x6C\x6F\x6F\x72","\x73\x63\x72\x6F\x6C\x6C\x4C\x65\x66\x74","\x74\x72\x61\x6E\x73\x6C\x61\x74\x65","\x6D\x61\x78","\x72\x6F\x75\x6E\x64","\x73\x63\x72\x6F\x6C\x6C\x54\x6F\x70","\x66\x69\x74\x50\x61\x67\x65\x57\x69\x64\x74\x68","\x63\x75\x73\x74\x6F\x6D\x5A\x6F\x6F\x6D","\x63\x75\x73\x74\x6F\x6D","\x20\x28\x25\x29","\x67\x65\x74\x53\x63\x61\x6C\x65","\x67\x72\x69\x64","\x69\x73\x47\x72\x69\x64\x45\x6E\x61\x62\x6C\x65\x64","\x73\x65\x74\x47\x72\x69\x64\x45\x6E\x61\x62\x6C\x65\x64","\x75\x70\x64\x61\x74\x65\x47\x72\x61\x70\x68\x43\x6F\x6D\x70\x6F\x6E\x65\x6E\x74\x73","\x43\x74\x72\x6C\x2B\x53\x68\x69\x66\x74\x2B\x47","\x73\x65\x74\x54\x6F\x67\x67\x6C\x65\x41\x63\x74\x69\x6F\x6E","\x73\x65\x74\x53\x65\x6C\x65\x63\x74\x65\x64\x43\x61\x6C\x6C\x62\x61\x63\x6B","\x67\x75\x69\x64\x65\x73","\x67\x75\x69\x64\x65\x73\x45\x6E\x61\x62\x6C\x65\x64","\x67\x72\x61\x70\x68\x48\x61\x6E\x64\x6C\x65\x72","\x74\x6F\x6F\x6C\x74\x69\x70\x73","\x69\x73\x45\x6E\x61\x62\x6C\x65\x64","\x74\x6F\x6F\x6C\x74\x69\x70\x48\x61\x6E\x64\x6C\x65\x72","\x73\x65\x74\x45\x6E\x61\x62\x6C\x65\x64","\x6E\x61\x76\x69\x67\x61\x74\x69\x6F\x6E","\x66\x6F\x6C\x64\x69\x6E\x67\x45\x6E\x61\x62\x6C\x65\x64","\x72\x65\x76\x61\x6C\x69\x64\x61\x74\x65","\x73\x63\x72\x6F\x6C\x6C\x62\x61\x72\x73","\x73\x63\x61\x6C\x65","\x73\x65\x74\x54\x72\x61\x6E\x73\x6C\x61\x74\x65","\x73\x69\x7A\x65\x44\x69\x64\x43\x68\x61\x6E\x67\x65","\x6F\x76\x65\x72\x66\x6C\x6F\x77","\x61\x75\x74\x6F","\x70\x61\x67\x65\x42\x72\x65\x61\x6B\x73\x56\x69\x73\x69\x62\x6C\x65","\x70\x72\x65\x66\x65\x72\x50\x61\x67\x65\x53\x69\x7A\x65","\x76\x61\x6C\x69\x64\x61\x74\x65","\x75\x70\x64\x61\x74\x65","\x6F\x75\x74\x6C\x69\x6E\x65","\x68\x61\x73\x53\x63\x72\x6F\x6C\x6C\x62\x61\x72\x73","\x63\x6F\x6E\x6E\x65\x63\x74","\x63\x6F\x6E\x6E\x65\x63\x74\x69\x6F\x6E\x48\x61\x6E\x64\x6C\x65\x72","\x73\x65\x74\x43\x6F\x6E\x6E\x65\x63\x74\x61\x62\x6C\x65","\x43\x74\x72\x6C\x2B\x51","\x63\x6F\x70\x79\x43\x6F\x6E\x6E\x65\x63\x74","\x69\x73\x43\x72\x65\x61\x74\x65\x54\x61\x72\x67\x65\x74","\x73\x65\x74\x43\x72\x65\x61\x74\x65\x54\x61\x72\x67\x65\x74","\x68\x65\x6C\x70","\x6C\x61\x6E\x67\x75\x61\x67\x65","\x69\x73\x4C\x61\x6E\x67\x75\x61\x67\x65\x53\x75\x70\x70\x6F\x72\x74\x65\x64","\x5F","\x68\x74\x74\x70\x73\x3A\x2F\x2F\x77\x69\x6B\x69\x2E\x78\x63\x61\x6C\x6C\x79\x6D\x6F\x74\x69\x6F\x6E\x2E\x63\x6F\x6D\x2F\x64\x69\x73\x70\x6C\x61\x79\x2F\x58\x4D\x44\x2F\x43\x61\x6C\x6C\x79\x2B\x53\x71\x75\x61\x72\x65","\x61\x62\x6F\x75\x74","\x20\x43\x61\x6C\x6C\x79\x20\x53\x71\x75\x61\x72\x65","\x46\x31","\x74\x6F\x67\x67\x6C\x65\x43\x65\x6C\x6C\x53\x74\x79\x6C\x65\x46\x6C\x61\x67\x73","\x62\x6F\x6C\x64","\x69\x74\x61\x6C\x69\x63","\x75\x6E\x64\x65\x72\x6C\x69\x6E\x65","\x73\x68\x61\x64\x6F\x77","\x74\x6F\x67\x67\x6C\x65\x43\x65\x6C\x6C\x53\x74\x79\x6C\x65\x73","\x64\x61\x73\x68\x65\x64","\x72\x6F\x75\x6E\x64\x65\x64","\x63\x75\x72\x76\x65\x64","\x29","\x67\x65\x74\x53\x74\x79\x6C\x65","\x73\x65\x74\x43\x65\x6C\x6C\x53\x74\x79\x6C\x65","\x73\x65\x74\x41\x73\x44\x65\x66\x61\x75\x6C\x74\x45\x64\x67\x65","\x73\x65\x74\x44\x65\x66\x61\x75\x6C\x74\x45\x64\x67\x65","\x61\x64\x64\x57\x61\x79\x70\x6F\x69\x6E\x74","\x69\x73\x45\x64\x67\x65","\x67\x65\x74\x48\x61\x6E\x64\x6C\x65\x72","\x73\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C\x73\x48\x61\x6E\x64\x6C\x65\x72","\x67\x65\x74\x50\x61\x72\x65\x6E\x74","\x73\x74\x61\x74\x65","\x74\x72\x69\x67\x67\x65\x72\x58","\x70\x61\x6E\x6E\x69\x6E\x67\x48\x61\x6E\x64\x6C\x65\x72","\x74\x72\x69\x67\x67\x65\x72\x59","\x61\x64\x64\x50\x6F\x69\x6E\x74\x41\x74","\x72\x65\x6D\x6F\x76\x65\x57\x61\x79\x70\x6F\x69\x6E\x74","\x68\x61\x6E\x64\x6C\x65\x72","\x69\x6E\x64\x65\x78","\x72\x65\x6D\x6F\x76\x65\x50\x6F\x69\x6E\x74","\x69\x6D\x61\x67\x65","\x67\x65\x74\x47\x72\x69\x64\x53\x69\x7A\x65","\x67\x65\x74\x44\x65\x66\x61\x75\x6C\x74\x50\x61\x72\x65\x6E\x74","\x69\x6E\x73\x65\x72\x74\x56\x65\x72\x74\x65\x78","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x6F\x75\x6E\x74","\x67\x65\x74\x47\x65\x6F\x6D\x65\x74\x72\x79","\x73\x63\x72\x6F\x6C\x6C\x43\x65\x6C\x6C\x54\x6F\x56\x69\x73\x69\x62\x6C\x65","\x53\x54\x59\x4C\x45\x5F\x49\x4D\x41\x47\x45","\x75\x72\x6C","\x6F\x6E\x6C\x6F\x61\x64","\x6F\x6E\x65\x72\x72\x6F\x72","\x66\x69\x6C\x65\x4E\x6F\x74\x46\x6F\x75\x6E\x64","\x61\x6C\x65\x72\x74","\x73\x72\x63","\x63\x61\x6C\x6C","\x6C\x61\x62\x65\x6C","\x65\x6E\x61\x62\x6C\x65\x64","\x69\x63\x6F\x6E\x43\x6C\x73","\x73\x68\x6F\x72\x74\x63\x75\x74","\x65\x78\x74\x65\x6E\x64","\x73\x74\x61\x74\x65\x43\x68\x61\x6E\x67\x65\x64","\x66\x69\x72\x65\x45\x76\x65\x6E\x74","\x74\x6F\x67\x67\x6C\x65\x41\x63\x74\x69\x6F\x6E","\x73\x65\x6C\x65\x63\x74\x65\x64\x43\x61\x6C\x6C\x62\x61\x63\x6B","\x69\x73\x53\x65\x6C\x65\x63\x74\x65\x64"];_0xd266[0];function Actions(_0xc9c6x2){this[_0xd266[1]]= _0xc9c6x2;this[_0xd266[2]]= new Object();this[_0xd266[3]]()}Actions[_0xd266[4]][_0xd266[3]]= function(){var _0xc9c6x3=this[_0xd266[1]];var _0xc9c6x4=_0xc9c6x3[_0xd266[5]];var _0xc9c6x5=_0xc9c6x4[_0xd266[6]];this[_0xd266[10]](_0xd266[7],function(){_0xc9c6x3[_0xd266[9]]( new NewDialog(_0xc9c6x3)[_0xd266[8]],300,180,true,true)});this[_0xd266[10]](_0xd266[11],function(){_0xc9c6x3[_0xd266[9]]( new OpenDialog(_0xc9c6x3)[_0xd266[8]],300,180,true,true)});this[_0xd266[10]](_0xd266[12],function(){_0xc9c6x3[_0xd266[13]](false)},null,null,_0xd266[14]);this[_0xd266[10]](_0xd266[15],function(){_0xc9c6x3[_0xd266[13]](true)},null,null,_0xd266[16]);this[_0xd266[10]](_0xd266[17],function(){_0xc9c6x3[_0xd266[18]](false)},null,null,_0xd266[19]);this[_0xd266[10]](_0xd266[20],function(){_0xc9c6x3[_0xd266[9]]( new VariableDialog(_0xc9c6x3)[_0xd266[8]],300,180,true,true)});this[_0xd266[10]](_0xd266[21],function(){_0xc9c6x3[_0xd266[9]]( new DescriptionDialog(_0xc9c6x3)[_0xd266[8]],300,180,true,true)});this[_0xd266[10]](_0xd266[22],function(){_0xc9c6x3[_0xd266[9]]( new ImportDialog(_0xc9c6x3)[_0xd266[8]],300,200,true,true)});this[_0xd266[10]](_0xd266[23],function(){_0xc9c6x3[_0xd266[9]]( new ExportDialog(_0xc9c6x3)[_0xd266[8]],300,200,true,true)},null,null,_0xd266[24]);this[_0xd266[29]](_0xd266[25], new Action(mxResources[_0xd266[27]](_0xd266[26]),mxUtils[_0xd266[28]](this,function(){this[_0xd266[1]][_0xd266[9]]( new EditFileDialog(_0xc9c6x3)[_0xd266[8]],620,420,true,true)})));this[_0xd266[10]](_0xd266[30],function(){mxUtils[_0xd266[31]](_0xc9c6x5)},null,_0xd266[32],_0xd266[33]);this[_0xd266[10]](_0xd266[34],function(){mxUtils[_0xd266[35]](_0xc9c6x5,null,10,10)});this[_0xd266[10]](_0xd266[36],function(){_0xc9c6x4[_0xd266[37]][_0xd266[36]]()},null,_0xd266[38],_0xd266[39]);this[_0xd266[10]](_0xd266[40],function(){_0xc9c6x4[_0xd266[37]][_0xd266[40]]()},null,_0xd266[41],_0xd266[42]);this[_0xd266[10]](_0xd266[43],function(){mxClipboard[_0xd266[43]](_0xc9c6x5)},null,_0xd266[44],_0xd266[45]);this[_0xd266[10]](_0xd266[46],function(){mxClipboard[_0xd266[46]](_0xc9c6x5)},null,_0xd266[47],_0xd266[48]);this[_0xd266[10]](_0xd266[49],function(){mxClipboard[_0xd266[49]](_0xc9c6x5)},false,_0xd266[50],_0xd266[51]);this[_0xd266[10]](_0xd266[52],function(){_0xc9c6x5[_0xd266[53]]()},null,null,_0xd266[54]);this[_0xd266[10]](_0xd266[55],function(){var _0xc9c6x6=_0xc9c6x5[_0xd266[56]];_0xc9c6x5[_0xd266[59]](_0xc9c6x5[_0xd266[58]](_0xc9c6x5[_0xd266[57]](),_0xc9c6x6,_0xc9c6x6,true))},null,null,_0xd266[60]);this[_0xd266[10]](_0xd266[61],function(){_0xc9c6x5[_0xd266[61]]()},null,null,_0xd266[62]);this[_0xd266[10]](_0xd266[63],function(){_0xc9c6x5[_0xd266[63]]()},null,null,_0xd266[64]);this[_0xd266[10]](_0xd266[65],function(){_0xc9c6x5[_0xd266[65]]()},null,null,_0xd266[66]);this[_0xd266[10]](_0xd266[67],function(){_0xc9c6x5[_0xd266[67]]()},null,null,_0xd266[68]);this[_0xd266[10]](_0xd266[69],function(){_0xc9c6x5[_0xd266[69]]()},null,null,_0xd266[70]);this[_0xd266[10]](_0xd266[71],function(){_0xc9c6x5[_0xd266[71]]()},null,null,_0xd266[72]);this[_0xd266[10]](_0xd266[73],function(){_0xc9c6x5[_0xd266[74]](false)},null,null,_0xd266[75]);this[_0xd266[10]](_0xd266[76],function(){_0xc9c6x5[_0xd266[74]](true)},null,null,_0xd266[77]);this[_0xd266[10]](_0xd266[78],function(){_0xc9c6x5[_0xd266[79]](false)},null,null,_0xd266[80]);this[_0xd266[10]](_0xd266[81],function(){_0xc9c6x5[_0xd266[79]](true)},null,null,_0xd266[82]);this[_0xd266[10]](_0xd266[83],function(){_0xc9c6x5[_0xd266[85]](_0xc9c6x5[_0xd266[84]](null,0))},null,null,_0xd266[86]);this[_0xd266[10]](_0xd266[87],function(){_0xc9c6x5[_0xd266[59]](_0xc9c6x5[_0xd266[88]]())},null,null,_0xd266[89]);this[_0xd266[10]](_0xd266[90],function(){_0xc9c6x5[_0xd266[91]]()});this[_0xd266[10]](_0xd266[92],function(){var _0xc9c6x7=_0xc9c6x5[_0xd266[93]]();var _0xc9c6x8=_0xc9c6x5[_0xd266[94]](_0xc9c6x7);if(_0xc9c6x8== null){_0xc9c6x8= _0xd266[95]};_0xc9c6x8= mxUtils[_0xd266[97]](mxResources[_0xd266[27]](_0xd266[96]),_0xc9c6x8);if(_0xc9c6x8!= null){_0xc9c6x5[_0xd266[98]](_0xc9c6x7,_0xc9c6x8)}});this[_0xd266[10]](_0xd266[99],function(){var _0xc9c6x7=_0xc9c6x5[_0xd266[93]]();var _0xc9c6x8=_0xc9c6x5[_0xd266[94]](_0xc9c6x7);if(_0xc9c6x8!= null){window[_0xd266[11]](_0xc9c6x8)}});this[_0xd266[10]](_0xd266[100],function(){var _0xc9c6x9=_0xc9c6x5[_0xd266[57]]();if(_0xc9c6x9!= null){_0xc9c6x5[_0xd266[102]]()[_0xd266[101]]();try{for(var _0xc9c6xa=0;_0xc9c6xa< _0xc9c6x9[_0xd266[103]];_0xc9c6xa++){var _0xc9c6x7=_0xc9c6x9[_0xc9c6xa];if(_0xc9c6x5[_0xd266[102]]()[_0xd266[104]](_0xc9c6x7)){_0xc9c6x5[_0xd266[105]]([_0xc9c6x7],20)}else {_0xc9c6x5[_0xd266[106]](_0xc9c6x7)}}}finally{_0xc9c6x5[_0xd266[102]]()[_0xd266[107]]()}}});this[_0xd266[10]](_0xd266[108],function(){var _0xc9c6xb=_0xc9c6x5[_0xd266[110]]()[_0xd266[109]](_0xc9c6x5[_0xd266[93]]());var _0xc9c6xc=_0xd266[111];if(_0xc9c6xb!= null&& _0xc9c6xb[_0xd266[113]][mxConstants[_0xd266[112]]]== _0xd266[111]){_0xc9c6xc= null};_0xc9c6x5[_0xd266[114]](mxConstants.STYLE_WHITE_SPACE,_0xc9c6xc)});this[_0xd266[10]](_0xd266[115],function(){var _0xc9c6xc=_0xd266[116];var _0xc9c6xb=_0xc9c6x5[_0xd266[110]]()[_0xd266[109]](_0xc9c6x5[_0xd266[93]]());if(_0xc9c6xb!= null){_0xc9c6xc= _0xc9c6xb[_0xd266[113]][mxConstants[_0xd266[117]]]|| _0xc9c6xc};_0xc9c6xc= mxUtils[_0xd266[97]](mxResources[_0xd266[27]](_0xd266[96])+ _0xd266[118]+ mxResources[_0xd266[27]](_0xd266[115])+ _0xd266[119],_0xc9c6xc);if(_0xc9c6xc!= null){_0xc9c6x5[_0xd266[114]](mxConstants.STYLE_ROTATION,_0xc9c6xc)}});this[_0xd266[10]](_0xd266[120],function(){var _0xc9c6x9=_0xc9c6x5[_0xd266[57]]();if(_0xc9c6x9!= null){_0xc9c6x5[_0xd266[102]]()[_0xd266[101]]();try{for(var _0xc9c6xa=0;_0xc9c6xa< _0xc9c6x9[_0xd266[103]];_0xc9c6xa++){var _0xc9c6x7=_0xc9c6x9[_0xc9c6xa];if(_0xc9c6x5[_0xd266[102]]()[_0xd266[121]](_0xc9c6x7)&& _0xc9c6x5[_0xd266[102]]()[_0xd266[104]](_0xc9c6x7)== 0){var _0xc9c6xd=_0xc9c6x5[_0xd266[122]](_0xc9c6x7);if(_0xc9c6xd!= null){_0xc9c6xd= _0xc9c6xd[_0xd266[123]]();_0xc9c6xd[_0xd266[124]]+= _0xc9c6xd[_0xd266[125]]/ 2- _0xc9c6xd[_0xd266[126]]/ 2;_0xc9c6xd[_0xd266[127]]+= _0xc9c6xd[_0xd266[126]]/ 2- _0xc9c6xd[_0xd266[125]]/ 2;var _0xc9c6xe=_0xc9c6xd[_0xd266[125]];_0xc9c6xd[_0xd266[125]]= _0xc9c6xd[_0xd266[126]];_0xc9c6xd[_0xd266[126]]= _0xc9c6xe;_0xc9c6x5[_0xd266[102]]()[_0xd266[128]](_0xc9c6x7,_0xc9c6xd);var _0xc9c6xb=_0xc9c6x5[_0xd266[129]][_0xd266[109]](_0xc9c6x7);if(_0xc9c6xb!= null){var _0xc9c6xf=_0xc9c6xb[_0xd266[113]][mxConstants[_0xd266[130]]]|| _0xd266[131];if(_0xc9c6xf== _0xd266[131]){_0xc9c6xf= _0xd266[132]}else {if(_0xc9c6xf== _0xd266[132]){_0xc9c6xf= _0xd266[133]}else {if(_0xc9c6xf== _0xd266[133]){_0xc9c6xf= _0xd266[134]}else {if(_0xc9c6xf== _0xd266[134]){_0xc9c6xf= _0xd266[131]}}}};_0xc9c6x5[_0xd266[114]](mxConstants.STYLE_DIRECTION,_0xc9c6xf,[_0xc9c6x7])}}}}}finally{_0xc9c6x5[_0xd266[102]]()[_0xd266[107]]()}}},null,null,_0xd266[135]);this[_0xd266[10]](_0xd266[136],function(){_0xc9c6x5[_0xd266[137]](1)});this[_0xd266[10]](_0xd266[138],function(){_0xc9c6x5[_0xd266[138]]()},null,null,_0xd266[139]);this[_0xd266[10]](_0xd266[140],function(){_0xc9c6x5[_0xd266[140]]()},null,null,_0xd266[141]);this[_0xd266[10]](_0xd266[142],function(){_0xc9c6x5[_0xd266[143]]()});this[_0xd266[10]](_0xd266[144],mxUtils[_0xd266[28]](this,function(){if(!_0xc9c6x5[_0xd266[145]]){this[_0xd266[27]](_0xd266[147])[_0xd266[146]]()};var _0xc9c6x10=_0xc9c6x5[_0xd266[148]];var _0xc9c6x11=_0xc9c6x5[_0xd266[149]];var _0xc9c6x12=_0xc9c6x5[_0xd266[8]][_0xd266[150]]- 20;var _0xc9c6x13=_0xc9c6x5[_0xd266[8]][_0xd266[151]]- 20;var _0xc9c6x14=Math[_0xd266[153]](100* Math[_0xd266[152]](_0xc9c6x12/ _0xc9c6x10[_0xd266[125]]/ _0xc9c6x11,_0xc9c6x13/ _0xc9c6x10[_0xd266[126]]/ _0xc9c6x11))/ 100;_0xc9c6x5[_0xd266[137]](_0xc9c6x14);_0xc9c6x5[_0xd266[8]][_0xd266[154]]= Math[_0xd266[157]](_0xc9c6x5[_0xd266[129]][_0xd266[155]][_0xd266[124]]* _0xc9c6x14- Math[_0xd266[156]](10,(_0xc9c6x5[_0xd266[8]][_0xd266[150]]- _0xc9c6x10[_0xd266[125]]* _0xc9c6x11* _0xc9c6x14)/ 2));_0xc9c6x5[_0xd266[8]][_0xd266[158]]= Math[_0xd266[157]](_0xc9c6x5[_0xd266[129]][_0xd266[155]][_0xd266[127]]* _0xc9c6x14- Math[_0xd266[156]](10,(_0xc9c6x5[_0xd266[8]][_0xd266[151]]- _0xc9c6x10[_0xd266[126]]* _0xc9c6x11* _0xc9c6x14)/ 2))}));this[_0xd266[10]](_0xd266[159],mxUtils[_0xd266[28]](this,function(){if(!_0xc9c6x5[_0xd266[145]]){this[_0xd266[27]](_0xd266[147])[_0xd266[146]]()};var _0xc9c6x10=_0xc9c6x5[_0xd266[148]];var _0xc9c6x11=_0xc9c6x5[_0xd266[149]];var _0xc9c6x12=_0xc9c6x5[_0xd266[8]][_0xd266[150]]- 20;var _0xc9c6x14=Math[_0xd266[153]](100* _0xc9c6x12/ _0xc9c6x10[_0xd266[125]]/ _0xc9c6x11)/ 100;_0xc9c6x5[_0xd266[137]](_0xc9c6x14);_0xc9c6x5[_0xd266[8]][_0xd266[154]]= Math[_0xd266[157]](_0xc9c6x5[_0xd266[129]][_0xd266[155]][_0xd266[124]]* _0xc9c6x14- Math[_0xd266[156]](10,(_0xc9c6x5[_0xd266[8]][_0xd266[150]]- _0xc9c6x10[_0xd266[125]]* _0xc9c6x11* _0xc9c6x14)/ 2));_0xc9c6x5[_0xd266[8]][_0xd266[158]]= Math[_0xd266[157]](_0xc9c6x5[_0xd266[129]][_0xd266[155]][_0xd266[127]]* _0xc9c6x14- Math[_0xd266[156]](10,(_0xc9c6x5[_0xd266[8]][_0xd266[151]]- _0xc9c6x10[_0xd266[126]]* _0xc9c6x11* _0xc9c6x14)/ 2))}));this[_0xd266[29]](_0xd266[160], new Action(mxResources[_0xd266[27]](_0xd266[161]),function(){var _0xc9c6xc=mxUtils[_0xd266[97]](mxResources[_0xd266[27]](_0xd266[96])+ _0xd266[162],parseInt(_0xc9c6x5[_0xd266[110]]()[_0xd266[163]]()* 100));if(_0xc9c6xc!= null&& _0xc9c6xc[_0xd266[103]]> 0&& !isNaN(parseInt(_0xc9c6xc))){_0xc9c6x5[_0xd266[137]](parseInt(_0xc9c6xc)/ 100)}}));var _0xc9c6x15=null;_0xc9c6x15= this[_0xd266[10]](_0xd266[164],function(){_0xc9c6x5[_0xd266[166]](!_0xc9c6x5[_0xd266[165]]());_0xc9c6x4[_0xd266[167]]()},null,null,_0xd266[168]);_0xc9c6x15[_0xd266[169]](true);_0xc9c6x15[_0xd266[170]](function(){return _0xc9c6x5[_0xd266[165]]()});_0xc9c6x15= this[_0xd266[10]](_0xd266[171],function(){_0xc9c6x5[_0xd266[173]][_0xd266[172]]= !_0xc9c6x5[_0xd266[173]][_0xd266[172]]});_0xc9c6x15[_0xd266[169]](true);_0xc9c6x15[_0xd266[170]](function(){return _0xc9c6x5[_0xd266[173]][_0xd266[172]]});_0xc9c6x15= this[_0xd266[10]](_0xd266[174],function(){_0xc9c6x5[_0xd266[176]][_0xd266[177]](!_0xc9c6x5[_0xd266[176]][_0xd266[175]]())});_0xc9c6x15[_0xd266[169]](true);_0xc9c6x15[_0xd266[170]](function(){return _0xc9c6x5[_0xd266[176]][_0xd266[175]]()});_0xc9c6x15= this[_0xd266[10]](_0xd266[178],function(){_0xc9c6x5[_0xd266[179]]= !_0xc9c6x5[_0xd266[179]];_0xc9c6x5[_0xd266[129]][_0xd266[180]]()});_0xc9c6x15[_0xd266[169]](true);_0xc9c6x15[_0xd266[170]](function(){return _0xc9c6x5[_0xd266[179]]});_0xc9c6x15= this[_0xd266[10]](_0xd266[181],function(){_0xc9c6x5[_0xd266[181]]= !_0xc9c6x5[_0xd266[181]];_0xc9c6x4[_0xd266[167]]();if(!_0xc9c6x5[_0xd266[181]]){var _0xc9c6x16=_0xc9c6x5[_0xd266[129]][_0xd266[155]];_0xc9c6x5[_0xd266[129]][_0xd266[183]](_0xc9c6x16[_0xd266[124]]- _0xc9c6x5[_0xd266[8]][_0xd266[154]]/ _0xc9c6x5[_0xd266[129]][_0xd266[182]],_0xc9c6x16[_0xd266[127]]- _0xc9c6x5[_0xd266[8]][_0xd266[158]]/ _0xc9c6x5[_0xd266[129]][_0xd266[182]]);_0xc9c6x5[_0xd266[8]][_0xd266[154]]= 0;_0xc9c6x5[_0xd266[8]][_0xd266[158]]= 0;_0xc9c6x5[_0xd266[184]]()}else {var _0xc9c6x17=_0xc9c6x5[_0xd266[129]][_0xd266[155]][_0xd266[124]];var _0xc9c6x18=_0xc9c6x5[_0xd266[129]][_0xd266[155]][_0xd266[127]];_0xc9c6x5[_0xd266[129]][_0xd266[155]][_0xd266[124]]= 0;_0xc9c6x5[_0xd266[129]][_0xd266[155]][_0xd266[127]]= 0;_0xc9c6x5[_0xd266[184]]();_0xc9c6x5[_0xd266[8]][_0xd266[154]]-= Math[_0xd266[157]](_0xc9c6x17* _0xc9c6x5[_0xd266[129]][_0xd266[182]]);_0xc9c6x5[_0xd266[8]][_0xd266[158]]-= Math[_0xd266[157]](_0xc9c6x18* _0xc9c6x5[_0xd266[129]][_0xd266[182]])}},!mxClient.IS_TOUCH);_0xc9c6x15[_0xd266[169]](true);_0xc9c6x15[_0xd266[170]](function(){return _0xc9c6x5[_0xd266[8]][_0xd266[113]][_0xd266[185]]== _0xd266[186]});_0xc9c6x15= this[_0xd266[10]](_0xd266[147],mxUtils[_0xd266[28]](this,function(){_0xc9c6x5[_0xd266[145]]= !_0xc9c6x5[_0xd266[145]];_0xc9c6x5[_0xd266[187]]= _0xc9c6x5[_0xd266[145]];_0xc9c6x5[_0xd266[188]]= _0xc9c6x5[_0xd266[187]];_0xc9c6x5[_0xd266[129]][_0xd266[189]]();_0xc9c6x5[_0xd266[184]]();_0xc9c6x4[_0xd266[167]]();_0xc9c6x4[_0xd266[191]][_0xd266[190]]();if(mxUtils[_0xd266[192]](_0xc9c6x5[_0xd266[8]])){if(_0xc9c6x5[_0xd266[145]]){_0xc9c6x5[_0xd266[8]][_0xd266[154]]-= 20;_0xc9c6x5[_0xd266[8]][_0xd266[158]]-= 20}else {_0xc9c6x5[_0xd266[8]][_0xd266[154]]+= 20;_0xc9c6x5[_0xd266[8]][_0xd266[158]]+= 20}}}));_0xc9c6x15[_0xd266[169]](true);_0xc9c6x15[_0xd266[170]](function(){return _0xc9c6x5[_0xd266[145]]});_0xc9c6x15= this[_0xd266[10]](_0xd266[193],function(){_0xc9c6x5[_0xd266[195]](!_0xc9c6x5[_0xd266[194]][_0xd266[175]]())},null,null,_0xd266[196]);_0xc9c6x15[_0xd266[169]](true);_0xc9c6x15[_0xd266[170]](function(){return _0xc9c6x5[_0xd266[194]][_0xd266[175]]()});_0xc9c6x15= this[_0xd266[10]](_0xd266[197],function(){_0xc9c6x5[_0xd266[194]][_0xd266[199]](!_0xc9c6x5[_0xd266[194]][_0xd266[198]]())});_0xc9c6x15[_0xd266[169]](true);_0xc9c6x15[_0xd266[170]](function(){return _0xc9c6x5[_0xd266[194]][_0xd266[198]]()});this[_0xd266[10]](_0xd266[200],function(){var _0xc9c6x19=_0xd266[95];if(mxResources[_0xd266[202]](mxClient[_0xd266[201]])){_0xc9c6x19= _0xd266[203]+ mxClient[_0xd266[201]]};window[_0xd266[11]](_0xd266[204])});this[_0xd266[29]](_0xd266[205], new Action(mxResources[_0xd266[27]](_0xd266[205])+ _0xd266[206],function(){_0xc9c6x3[_0xd266[9]]( new AboutDialog(_0xc9c6x3)[_0xd266[8]],320,280,true,true)},null,null,_0xd266[207]));var _0xc9c6x1a=mxUtils[_0xd266[28]](this,function(_0xc9c6x1b,_0xc9c6x1c){this[_0xd266[10]](_0xc9c6x1b,function(){_0xc9c6x5[_0xd266[208]](mxConstants.STYLE_FONTSTYLE,_0xc9c6x1c)})});_0xc9c6x1a(_0xd266[209],mxConstants.FONT_BOLD);_0xc9c6x1a(_0xd266[210],mxConstants.FONT_ITALIC);_0xc9c6x1a(_0xd266[211],mxConstants.FONT_UNDERLINE);this[_0xd266[10]](_0xd266[212],function(){_0xc9c6x5[_0xd266[213]](mxConstants.STYLE_SHADOW)});this[_0xd266[10]](_0xd266[214],function(){_0xc9c6x5[_0xd266[213]](mxConstants.STYLE_DASHED)});this[_0xd266[10]](_0xd266[215],function(){_0xc9c6x5[_0xd266[213]](mxConstants.STYLE_ROUNDED)});this[_0xd266[10]](_0xd266[216],function(){_0xc9c6x5[_0xd266[213]](mxConstants.STYLE_CURVED)});this[_0xd266[10]](_0xd266[113],function(){var _0xc9c6x9=_0xc9c6x5[_0xd266[57]]();if(_0xc9c6x9!= null&& _0xc9c6x9[_0xd266[103]]> 0){var _0xc9c6x1d=_0xc9c6x5[_0xd266[102]]();var _0xc9c6x1c=mxUtils[_0xd266[97]](mxResources[_0xd266[27]](_0xd266[96])+ _0xd266[118]+ mxResources[_0xd266[27]](_0xd266[113])+ _0xd266[217],_0xc9c6x1d[_0xd266[218]](_0xc9c6x9[0])|| _0xd266[95]);if(_0xc9c6x1c!= null){_0xc9c6x5[_0xd266[219]](_0xc9c6x1c,_0xc9c6x9)}}});this[_0xd266[10]](_0xd266[220],function(){_0xc9c6x5[_0xd266[221]](_0xc9c6x5[_0xd266[93]]())});this[_0xd266[10]](_0xd266[222],function(){var _0xc9c6x7=_0xc9c6x5[_0xd266[93]]();if(_0xc9c6x7!= null&& _0xc9c6x5[_0xd266[102]]()[_0xd266[223]](_0xc9c6x7)){var _0xc9c6x1e=_0xc9c6x4[_0xd266[6]][_0xd266[225]][_0xd266[224]](_0xc9c6x7);if(_0xc9c6x1e instanceof mxEdgeHandler){var _0xc9c6x16=_0xc9c6x5[_0xd266[129]][_0xd266[155]];var _0xc9c6x6=_0xc9c6x5[_0xd266[129]][_0xd266[182]];var _0xc9c6x17=_0xc9c6x16[_0xd266[124]];var _0xc9c6x18=_0xc9c6x16[_0xd266[127]];var _0xc9c6x1f=_0xc9c6x5[_0xd266[102]]()[_0xd266[226]](_0xc9c6x7);var _0xc9c6x20=_0xc9c6x5[_0xd266[122]](_0xc9c6x1f);if(_0xc9c6x5[_0xd266[102]]()[_0xd266[121]](_0xc9c6x1f)&& _0xc9c6x20!= null){_0xc9c6x17+= _0xc9c6x20[_0xd266[124]];_0xc9c6x18+= _0xc9c6x20[_0xd266[127]]};_0xc9c6x1e[_0xd266[231]](_0xc9c6x1e[_0xd266[227]],_0xc9c6x5[_0xd266[229]][_0xd266[228]]/ _0xc9c6x6- _0xc9c6x17,_0xc9c6x5[_0xd266[229]][_0xd266[230]]/ _0xc9c6x6- _0xc9c6x18)}}});this[_0xd266[10]](_0xd266[232],function(){var _0xc9c6x21=_0xc9c6x3[_0xd266[2]][_0xd266[27]](_0xd266[232]);if(_0xc9c6x21[_0xd266[233]]!= null){_0xc9c6x21[_0xd266[233]][_0xd266[235]](_0xc9c6x21[_0xd266[233]][_0xd266[227]],_0xc9c6x21[_0xd266[234]])}});this[_0xd266[10]](_0xd266[236],function(){function _0xc9c6x22(_0xc9c6xc,_0xc9c6x23,_0xc9c6x24){var _0xc9c6x25=null;var _0xc9c6x9=_0xc9c6x5[_0xd266[57]]();_0xc9c6x5[_0xd266[102]]()[_0xd266[101]]();try{if(_0xc9c6x9[_0xd266[103]]== 0){var _0xc9c6x26=_0xc9c6x5[_0xd266[237]]();_0xc9c6x9= [_0xc9c6x5[_0xd266[239]](_0xc9c6x5[_0xd266[238]](),null,_0xd266[95],_0xc9c6x26,_0xc9c6x26,_0xc9c6x23,_0xc9c6x24)];_0xc9c6x25= _0xc9c6x9};_0xc9c6x5[_0xd266[114]](mxConstants.STYLE_IMAGE,_0xc9c6xc,_0xc9c6x9);_0xc9c6x5[_0xd266[114]](mxConstants.STYLE_SHAPE,_0xd266[236],_0xc9c6x9);if(_0xc9c6x5[_0xd266[240]]()== 1){if(_0xc9c6x23!= null&& _0xc9c6x24!= null){var _0xc9c6x7=_0xc9c6x9[0];var _0xc9c6xd=_0xc9c6x5[_0xd266[102]]()[_0xd266[241]](_0xc9c6x7);if(_0xc9c6xd!= null){_0xc9c6xd= _0xc9c6xd[_0xd266[123]]();_0xc9c6xd[_0xd266[125]]= _0xc9c6x23;_0xc9c6xd[_0xd266[126]]= _0xc9c6x24;_0xc9c6x5[_0xd266[102]]()[_0xd266[128]](_0xc9c6x7,_0xc9c6xd)}}}}finally{_0xc9c6x5[_0xd266[102]]()[_0xd266[107]]()};if(_0xc9c6x25!= null){_0xc9c6x5[_0xd266[59]](_0xc9c6x25);_0xc9c6x5[_0xd266[242]](_0xc9c6x25[0])}}var _0xc9c6xc=_0xd266[95];var _0xc9c6xb=_0xc9c6x5[_0xd266[110]]()[_0xd266[109]](_0xc9c6x5[_0xd266[93]]());if(_0xc9c6xb!= null){_0xc9c6xc= _0xc9c6xb[_0xd266[113]][mxConstants[_0xd266[243]]]|| _0xc9c6xc};_0xc9c6xc= mxUtils[_0xd266[97]](mxResources[_0xd266[27]](_0xd266[96])+ _0xd266[118]+ mxResources[_0xd266[27]](_0xd266[244])+ _0xd266[217],_0xc9c6xc);if(_0xc9c6xc!= null){if(_0xc9c6xc[_0xd266[103]]> 0){var _0xc9c6x27= new Image();_0xc9c6x27[_0xd266[245]]= function(){_0xc9c6x22(_0xc9c6xc,_0xc9c6x27[_0xd266[125]],_0xc9c6x27[_0xd266[126]])};_0xc9c6x27[_0xd266[246]]= function(){mxUtils[_0xd266[248]](mxResources[_0xd266[27]](_0xd266[247]))};_0xc9c6x27[_0xd266[249]]= _0xc9c6xc}}})};Actions[_0xd266[4]][_0xd266[10]]= function(_0xc9c6x1b,_0xc9c6x28,_0xc9c6x29,_0xc9c6x2a,_0xc9c6x2b){return this[_0xd266[29]](_0xc9c6x1b, new Action(mxResources[_0xd266[27]](_0xc9c6x1b),_0xc9c6x28,_0xc9c6x29,_0xc9c6x2a,_0xc9c6x2b))};Actions[_0xd266[4]][_0xd266[29]]= function(_0xc9c6x2c,_0xc9c6x15){this[_0xd266[2]][_0xc9c6x2c]= _0xc9c6x15;return _0xc9c6x15};Actions[_0xd266[4]][_0xd266[27]]= function(_0xc9c6x2c){return this[_0xd266[2]][_0xc9c6x2c]};function Action(_0xc9c6x2e,_0xc9c6x28,_0xc9c6x29,_0xc9c6x2a,_0xc9c6x2b){mxEventSource[_0xd266[250]](this);this[_0xd266[251]]= _0xc9c6x2e;this[_0xd266[146]]= _0xc9c6x28;this[_0xd266[252]]= (_0xc9c6x29!= null)?_0xc9c6x29:true;this[_0xd266[253]]= _0xc9c6x2a;this[_0xd266[254]]= _0xc9c6x2b}mxUtils[_0xd266[255]](Action,mxEventSource);Action[_0xd266[4]][_0xd266[177]]= function(_0xc9c6xc){if(this[_0xd266[252]]!= _0xc9c6xc){this[_0xd266[252]]= _0xc9c6xc;this[_0xd266[257]]( new mxEventObject(_0xd266[256]))}};Action[_0xd266[4]][_0xd266[169]]= function(_0xc9c6xc){this[_0xd266[258]]= _0xc9c6xc};Action[_0xd266[4]][_0xd266[170]]= function(_0xc9c6x28){this[_0xd266[259]]= _0xc9c6x28};Action[_0xd266[4]][_0xd266[260]]= function(){return this[_0xd266[259]]()} \ No newline at end of file diff --git a/public/assets/plugins/square/js/Dialogs.js b/public/assets/plugins/square/js/Dialogs.js index 17e2529..eab6fe8 100644 --- a/public/assets/plugins/square/js/Dialogs.js +++ b/public/assets/plugins/square/js/Dialogs.js @@ -1,1276 +1 @@ -'use strict'; -/** - * $Id: Dialogs.js,v 1.5 2013-01-29 17:23:31 gaudenz Exp $ - * Copyright (c) 2006-2012, JGraph Ltd - */ -/** - * Constructs a new dialog. - */ - -function createCheckbox(value) { - var input = document.createElement('input'); - input.setAttribute('type', 'checkbox'); - if (value) { - input.setAttribute('checked', true); - } - return input; -} - -function createDropdownFromApi(path, value, option_name, option_value, editorUi, keys, pattern) { - var req = new XMLHttpRequest(); - req.open('GET', path, false); // `false` makes the request synchronous - req.setRequestHeader('Authorization', 'Bearer ' + editorUi.editor.data.token); - req.send(null); - var res = []; - if (req.status === 200) { - res = JSON.parse(req.response); - } - var input = document.createElement('select'); - var option = document.createElement('option'); - option.text = '-- None --'; - option.value = '-1'; - input.appendChild(option); - res.rows.forEach(function(elem) { - option = document.createElement('option'); - option.text = elem[option_name]; - if (keys && pattern) { - option.value = pattern; - keys.forEach(function(key) { - option.value = option.value.replace('%' + key + '%', elem[key]); - }); - option.selected = (option.value == value); - } else { - option.value = elem[option_value]; - option.selected = (elem[option_value] == value); - } - input.appendChild(option); - }); - input.className = 'form-control select2'; - - return input; -} - -function createDropdownWithOptgroupFromApi(path, value, option_name, option_value, editorUi, propertyGroup) { - var req = new XMLHttpRequest(); - req.open('GET', path, false); // `false` makes the request synchronous - req.setRequestHeader('Authorization', 'Bearer ' + editorUi.editor.data.token); - req.send(null); - var res = []; - if (req.status === 200) { - res = JSON.parse(req.response); - } - var input = document.createElement('select'); - var option = document.createElement('option'); - option.text = '-- None --'; - option.value = '-1'; - input.appendChild(option); - - var values = _.groupBy(res.rows, propertyGroup); - - for (var group in values) { - if (values.hasOwnProperty(group)) { - var optgroup = document.createElement('optgroup'); - optgroup.label = _.capitalize(group); - - var valGroup = values[group]; - valGroup.forEach(function(elem) { - // elem is the option - option = document.createElement('option'); - option.text = elem[option_name]; - option.value = elem[option_value]; - option.selected = (elem[option_value] == value); - optgroup.appendChild(option); - }) - - input.appendChild(optgroup); - } - } - - input.className = 'form-control select2'; - - return input; -} - -function createGroupedDropdownFromApi(path, value, option_name, option_value, editorUi, associationArray) { - var req = new XMLHttpRequest(); - req.open('GET', path, false); // `false` makes the request synchronous - req.setRequestHeader('Authorization', 'Bearer ' + editorUi.editor.data.token); - req.send(null); - var res = []; - if (req.status === 200) { - res = JSON.parse(req.response); - } - var input = document.createElement('select'); - var option = document.createElement('option'); - option.text = '-- None --'; - option.value = '0'; - input.appendChild(option); - res.rows.forEach(function(elem) { - option = document.createElement('option'); - option.className = 'select-group-father'; - option.text = elem[option_name].toUpperCase(); - option.value = elem[option_value]; - option.selected = (elem[option_value] == value); - input.appendChild(option); - elem[associationArray].forEach(function(elem) { - option = document.createElement('option'); - option.className = 'select-group-son'; - option.text = '-' + _.capitalize(elem[option_name]); - option.value = elem[option_value]; - option.selected = (elem[option_value] == value); - input.appendChild(option); - }); - }) - input.className = 'form-control select2'; - - return input; -} - -function createDropdownFromArray(array, value) { - var input = document.createElement('select'); - - for (var item in array) { - var option = document.createElement('option'); - option.text = array[item]; - option.value = item; - if (value > 0 || value != '') - option.selected = (value === item) ? true : false; - - input.appendChild(option); - } - - input.className = 'form-control select2'; - - return input; -} - -function createDropdownFromTigerDialList(value) { - var input = document.createElement('select'); - - var array = []; - var request = new XMLHttpRequest(); - try { - request.open('POST', '/api/rest/list/list', false); - request.send(JSON.stringify({ - page: 1, - size: 600000 //Max items ui-grid - })); - - if (request.status === 200) { - var res = JSON.parse(request.response); - if (res.status > 0) { - var rows = res.response.RMI.rows; - for (var index in rows) { - array[rows[index].id] = rows[index].name; - } - } - } - } catch (e) { - console.log(e); - } - - for (var item in array) { - var option = document.createElement('option'); - option.text = array[item]; - option.value = item; - if (value > 0 || value != '') - option.selected = (value === item) ? true : false; - - input.appendChild(option); - } - - input.className = 'form-control select2'; - - return input; -} - -function Dialog(editorUi, elt, w, h, modal, closable, onClose) { - var dx = 0; - - if (mxClient.IS_IE && document.documentMode != 9) { - dx = 60; - } - - w += dx; - h += dx; - - var left = Math.max(0, Math.round((document.body.scrollWidth - w) / 2)); - var top = Math.max(0, Math.round((Math.max(document.body.scrollHeight, - document.documentElement.scrollHeight) - h) / 3)); - - var div = editorUi.createDiv('geDialog'); - div.className = 'modal fade in center'; - div.style.display = 'block'; - div.style.paddingRight = '12px'; - // div.style.width = w + 'px'; - // div.style.height = h + 'px'; - // div.style.left = left + 'px'; - // div.style.top = top + 'px'; - - var divModalDialog = editorUi.createDiv('geModalDialog'); - divModalDialog.className = 'modal-dialog'; - - divModalDialog.appendChild(elt); - div.appendChild(divModalDialog); - - if (this.bg == null) { - this.bg = editorUi.createDiv('background'); - this.bg.className = 'modal-backdrop fade in'; - - if (mxClient.IS_QUIRKS) { - new mxDivResizer(this.bg); - } - } - - if (modal) { - document.body.appendChild(this.bg); - } - - document.body.appendChild(div); - - this.onDialogClose = onClose; - this.container = div; -}; - -/** - * Removes the dialog from the DOM. - */ -Dialog.prototype.close = function() { - if (this.onDialogClose != null) { - this.onDialogClose(); - this.onDialogClose = null; - } - - this.container.parentNode.removeChild(this.container); - this.bg.parentNode.removeChild(this.bg); -}; - -/** - * Constructs a new open dialog. - */ -function ImportDialog(editorUi) { - - var content = editorUi.createDiv('modal-content'); - var header = editorUi.createDiv('modal-header'); - var body = editorUi.createDiv('modal-body'); - var footer = editorUi.createDiv('modal-footer'); - - //--- START HEADER - var title = editorUi.createHeader('h4'); - mxUtils.write(title, mxResources.get('import') + ' XML'); - - var x = mxUtils.button('', function() { - editorUi.hideDialog(); - }); - x.className = 'close'; - - header.appendChild(x); - header.appendChild(title); - //--- END HEADER - - //--- START BODY - var row = editorUi.createDiv('row'); - var col1 = editorUi.createDiv('col-md-12'); - - var textarea = document.createElement('textarea'); - textarea.style.width = '100%'; - textarea.style.height = '374px'; - - var input = document.createElement('input'); - input.type = 'file'; - input.setAttribute('accept', 'text/xml'); - - input.addEventListener('change', function readSingleFile(evt) { - //Retrieve the first (and only!) File from the FileList object - var f = evt.target.files[0]; - console.log(f); - if (f) { - if (f.type === 'text/xml') { - var r = new FileReader(); - r.onload = function(e) { - var contents = e.target.result; - mxUtils.write(textarea, contents); - }; - r.readAsText(f); - } else { - alert('Failed to load format file'); - } - } else { - alert('Failed to load file'); - } - }, false); - - col1.appendChild(input); - col1.appendChild(textarea); - - row.appendChild(col1); - body.appendChild(row); - //--- END BODY - - //--- START FOOTER - var save = mxUtils.button(mxResources.get('import'), mxUtils.bind(this, - function(data) { - var doc = mxUtils.parseXml(textarea.value); - editorUi.editor.setGraphXml(doc.documentElement); - editorUi.hideDialog(); - })); - save.className = 'btn blue'; - - var close = mxUtils.button(mxResources.get('cancel'), function() { - editorUi.hideDialog(); - }); - close.className = 'btn default'; - - footer.appendChild(save); - footer.appendChild(close); - //--- END FOOTER - - //--- START CONTENT - content.appendChild(header); - content.appendChild(body); - content.appendChild(footer); - //--- END CONTENT - - this.container = content; - -}; - -/** - * Constructs a new about dialog. - */ -function AboutDialog(editorUi) { - var content = editorUi.createDiv('modal-content'); - var header = editorUi.createDiv('modal-header'); - var body = editorUi.createDiv('modal-body'); - var footer = editorUi.createDiv('modal-footer'); - - //--- START HEADER - var title = editorUi.createHeader('h4'); - mxUtils.write(title, mxResources.get('about') + ' Cally Square'); - - var x = mxUtils.button('', function() { - editorUi.hideDialog(); - }); - x.className = 'close'; - - header.appendChild(x); - header.appendChild(title); - //--- END HEADER - - //--- START BODY - var img = document.createElement('img'); - img.style.border = '0px'; - img.setAttribute('width', '176'); - img.setAttribute('width', '151'); - img.setAttribute('src', IMAGE_PATH + '/logo.png'); - body.appendChild(img); - mxUtils.br(body); - mxUtils.write(body, 'Powered by Xenialab ' + mxClient.VERSION); - mxUtils.br(body); - var link = document.createElement('a'); - link.setAttribute('href', 'http://www.callysquare.com/'); - link.setAttribute('target', '_blank'); - mxUtils.write(link, 'www.callysquare.com'); - body.appendChild(link); - mxUtils.br(body); - mxUtils.br(body); - //--- END BODY - - var close = mxUtils.button(mxResources.get('close'), function() { - editorUi.hideDialog(); - }); - close.className = 'btn default'; - - footer.appendChild(close); - //--- END FOOTER - - //--- START CONTENT - content.appendChild(header); - content.appendChild(body); - content.appendChild(footer); - //--- END CONTENT - - this.container = content; -}; - -/** - * Constructs a new save dialog. - */ -function SaveDialog(editorUi) { - - var content = editorUi.createDiv('modal-content'); - var header = editorUi.createDiv('modal-header'); - var body = editorUi.createDiv('modal-body'); - var footer = editorUi.createDiv('modal-footer'); - - //--- START HEADER - var title = editorUi.createHeader('h4'); - mxUtils.write(title, mxResources.get('saveAs')); - - var x = mxUtils.button('', function() { - editorUi.hideDialog(); - }); - x.className = 'close'; - - header.appendChild(x); - header.appendChild(title); - //--- END HEADER - - //--- START BODY - var name = 'name'; - var id = '_' + name; - var value = editorUi.editor.getOrCreateFilename(); - - var row = editorUi.createDiv('row'); - var col1 = editorUi.createDiv('col-md-4'); - var col2 = editorUi.createDiv('col-md-8'); - - var label = document.createElement('label'); - label.className = 'control-label pull-right'; - mxUtils.write(label, mxResources.get(name)); - col1.appendChild(label); - - var select = document.createElement('input'); - select.setAttribute('value', value + '_copy'); - select.setAttribute('id', id) - select.className = 'form-control'; - col2.appendChild(select); - - row.appendChild(col1); - row.appendChild(col2); - body.appendChild(row); - //--- END BODY - - //--- START FOOTER - var save = mxUtils.button(mxResources.get('save'), function() { - editorUi.saveAs(select.value); - editorUi.hideDialog(); - }); - save.className = 'btn blue'; - - var close = mxUtils.button(mxResources.get('cancel'), function() { - editorUi.hideDialog(); - }); - close.className = 'btn default'; - - footer.appendChild(save); - footer.appendChild(close); - //--- END FOOTER - - //--- START CONTENT - content.appendChild(header); - content.appendChild(body); - content.appendChild(footer); - //--- END CONTENT - - this.container = content; - //nameInput.setAttribute('value', editorUi.editor.getOrCreateFilename()); -}; - -/** - * Constructs a new save dialog. - */ -function NewDialog(editorUi) { - - var content = editorUi.createDiv('modal-content'); - var header = editorUi.createDiv('modal-header'); - var body = editorUi.createDiv('modal-body'); - var footer = editorUi.createDiv('modal-footer'); - - //--- START HEADER - var title = editorUi.createHeader('h4'); - mxUtils.write(title, mxResources.get('new')); - - var x = mxUtils.button('', function() { - editorUi.hideDialog(); - }); - x.className = 'close'; - - header.appendChild(x); - header.appendChild(title); - //--- END HEADER - - //--- START BODY - var name = 'name'; - var id = '_' + name; - var value = editorUi.editor.getOrCreateFilename(); - - var row = editorUi.createDiv('row'); - var col1 = editorUi.createDiv('col-md-4'); - var col2 = editorUi.createDiv('col-md-8'); - - var label = document.createElement('label'); - label.className = 'control-label pull-right'; - mxUtils.write(label, mxResources.get(name)); - col1.appendChild(label); - - var select = document.createElement('input'); - select.setAttribute('value', value + '_new'); - select.setAttribute('id', id) - select.className = 'form-control'; - col2.appendChild(select); - - row.appendChild(col1); - row.appendChild(col2); - body.appendChild(row); - //--- END BODY - - //--- START FOOTER - var save = mxUtils.button(mxResources.get('new'), function() { - editorUi.new(select.value); - editorUi.hideDialog(); - }); - save.className = 'btn blue'; - - var close = mxUtils.button(mxResources.get('cancel'), function() { - editorUi.hideDialog(); - }); - close.className = 'btn default'; - - footer.appendChild(save); - footer.appendChild(close); - //--- END FOOTER - - //--- START CONTENT - content.appendChild(header); - content.appendChild(body); - content.appendChild(footer); - //--- END CONTENT - - this.container = content; - //nameInput.setAttribute('value', editorUi.editor.getOrCreateFilename()); -}; - -/** - * Constructs a new description dialog. - */ -function DescriptionDialog(editorUi) { - console.log(editorUi.editor.data); - var content = editorUi.createDiv('modal-content'); - var header = editorUi.createDiv('modal-header'); - var body = editorUi.createDiv('modal-body'); - var footer = editorUi.createDiv('modal-footer'); - - //--- START HEADER - var title = editorUi.createHeader('h4'); - mxUtils.write(title, mxResources.get('description')); - - var x = mxUtils.button('', function() { - editorUi.hideDialog(); - }); - x.className = 'close'; - - header.appendChild(x); - header.appendChild(title); - //--- END HEADER - - //--- START BODY - - var form = editorUi.createDiv('form-horizontal form-row-seperated'); - - // START DESCRIPTION field - var name = 'description'; - var id = '_' + name; - var value = editorUi.editor.data.description || ''; - var group = editorUi.createDiv('form-group'); - - var label = document.createElement('label'); - label.className = 'col-sm-4 control-label'; - mxUtils.write(label, mxResources.get(name)); - group.appendChild(label); - - var input = document.createElement('input'); - input.setAttribute('value', value); - input.className = 'form-control'; - input.setAttribute('id', id); - - var div = editorUi.createDiv('col-sm-8'); - div.appendChild(input); - - group.appendChild(div); - form.appendChild(group); - //END DESCRIPTION field - - body.appendChild(form); - //--- END BODY - - //--- START FOOTER - var save = mxUtils.button(mxResources.get('update'), function() { - editorUi.description(input.value); - editorUi.hideDialog(); - }); - save.className = 'btn blue'; - - var close = mxUtils.button(mxResources.get('cancel'), function() { - editorUi.hideDialog(); - }); - close.className = 'btn default'; - - footer.appendChild(save); - footer.appendChild(close); - //--- END FOOTER - - //--- START CONTENT - content.appendChild(header); - content.appendChild(body); - content.appendChild(footer); - //--- END CONTENT - - this.container = content; - //nameInput.setAttribute('value', editorUi.editor.getOrCreateFilename()); -} - -/** - * Constructs a new variable dialog. - */ -function VariableDialog(editorUi) { - - var content = editorUi.createDiv('modal-content'); - var header = editorUi.createDiv('modal-header'); - var body = editorUi.createDiv('modal-body'); - var footer = editorUi.createDiv('modal-footer'); - - //--- START HEADER - var title = editorUi.createHeader('h4'); - mxUtils.write(title, mxResources.get('variable')); - - var x = mxUtils.button('', function() { - editorUi.hideDialog(); - }); - x.className = 'close'; - - header.appendChild(x); - header.appendChild(title); - //--- END HEADER - - //--- START BODY - - var form = editorUi.createDiv('form-horizontal form-row-seperated'); - - //NAME field - var name = 'name'; - var id = '_' + name; - var value = 'variable name'; - var group = editorUi.createDiv('form-group'); - - var label = document.createElement('label'); - label.className = 'col-sm-4 control-label'; - mxUtils.write(label, mxResources.get(name)); - group.appendChild(label); - - var input = document.createElement('input'); - input.setAttribute('value', value); - input.className = 'form-control'; - input.setAttribute('id', id); - - var div = editorUi.createDiv('col-sm-8'); - div.appendChild(input); - - group.appendChild(div); - form.appendChild(group); - //END NAME field - - //DESCRIPTION field - name = 'description'; - id = '_' + name; - value = 'variable description'; - group = editorUi.createDiv('form-group last'); - - label = document.createElement('label'); - label.className = 'col-sm-4 control-label'; - mxUtils.write(label, mxResources.get(name)); - group.appendChild(label); - - var inputDesc = document.createElement('input'); - inputDesc.setAttribute('value', value); - inputDesc.className = 'form-control'; - inputDesc.setAttribute('id', id); - - div = editorUi.createDiv('col-sm-8'); - div.appendChild(inputDesc); - - group.appendChild(div); - form.appendChild(group); - //END DESCRIPTION field - - body.appendChild(form); - //--- END BODY - - //--- START FOOTER - var save = mxUtils.button(mxResources.get('new'), function() { - editorUi.variable(input.value, inputDesc.value); - editorUi.hideDialog(); - }); - save.className = 'btn blue'; - - var close = mxUtils.button(mxResources.get('cancel'), function() { - editorUi.hideDialog(); - }); - close.className = 'btn default'; - - footer.appendChild(save); - footer.appendChild(close); - //--- END FOOTER - - //--- START CONTENT - content.appendChild(header); - content.appendChild(body); - content.appendChild(footer); - //--- END CONTENT - - this.container = content; - //nameInput.setAttribute('value', editorUi.editor.getOrCreateFilename()); -} - -/** - * Constructs a new save dialog. - */ -function OpenDialog(editorUi) { - - var content = editorUi.createDiv('modal-content'); - var header = editorUi.createDiv('modal-header'); - var body = editorUi.createDiv('modal-body'); - var footer = editorUi.createDiv('modal-footer'); - - //--- START HEADER - var title = editorUi.createHeader('h4'); - mxUtils.write(title, mxResources.get('open')); - - var x = mxUtils.button('', function() { - editorUi.hideDialog(); - }); - x.className = 'close'; - - header.appendChild(x); - header.appendChild(title); - //--- END HEADER - - //--- START BODY - var row = editorUi.createDiv('row'); - var col1 = editorUi.createDiv('col-md-4'); - var col2 = editorUi.createDiv('col-md-8'); - - var label = document.createElement('label'); - label.className = 'control-label pull-right'; - mxUtils.write(label, mxResources.get('name')); - col1.appendChild(label); - - var req = new XMLHttpRequest(); - req.open('GET', '/api/square/projects', false); // `false` makes the request synchronous - req.setRequestHeader('Authorization', 'Bearer ' + editorUi.editor.data.token); - req.send(null); - var res = []; - if (req.status === 200) { - res = JSON.parse(req.response); - } - - var select = document.createElement('select'); - - for (var j = 0; j < res.length; j++) { - var option = document.createElement('option'); - option.text = res[j].name; - option.value = res[j].id; - select.appendChild(option); - } - select.className = 'form-control'; - col2.appendChild(select); - - row.appendChild(col1); - row.appendChild(col2); - body.appendChild(row); - //--- END BODY - - //--- START FOOTER - var save = mxUtils.button(mxResources.get('open'), function() { - console.log(select); - console.log(select.value); - window.open('square/project/' + select.value, '_blank'); - editorUi.hideDialog(); - }); - save.className = 'btn blue'; - - var close = mxUtils.button(mxResources.get('cancel'), function() { - editorUi.hideDialog(); - }); - close.className = 'btn default'; - - footer.appendChild(save); - footer.appendChild(close); - //--- END FOOTER - - //--- START CONTENT - content.appendChild(header); - content.appendChild(body); - content.appendChild(footer); - //--- END CONTENT - - this.container = content; - //nameInput.setAttribute('value', editorUi.editor.getOrCreateFilename()); -}; -/** - * Constructs a new rename dialog. - */ -function RenameDialog(editorUi) { - - var content = editorUi.createDiv('modal-content'); - var header = editorUi.createDiv('modal-header'); - var body = editorUi.createDiv('modal-body'); - var footer = editorUi.createDiv('modal-footer'); - - //--- START HEADER - var title = editorUi.createHeader('h4'); - mxUtils.write(title, mxResources.get('rename')); - - var x = mxUtils.button('', function() { - editorUi.hideDialog(); - }); - x.className = 'close'; - - header.appendChild(x); - header.appendChild(title); - //--- END HEADER - - //--- START BODY - var row = editorUi.createDiv('row'); - var col1 = editorUi.createDiv('col-md-4'); - var col2 = editorUi.createDiv('col-md-8'); - - var label = document.createElement('label'); - label.className = 'control-label pull-right'; - mxUtils.write(label, mxResources.get('name')); - col1.appendChild(label); - var name = editorUi.editor.filename; - var input = document.createElement('input'); - input.setAttribute('value', name); - input.className = 'form-control'; - - col2.appendChild(input); - - row.appendChild(col1); - row.appendChild(col2); - body.appendChild(row); - //--- END BODY - - //--- START FOOTER - var save = mxUtils.button(mxResources.get('save'), function() { - var req = new XMLHttpRequest(); - - req.open("PUT", SAVE_URL + editorUi.editor.data.id, true); - req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); - req.setRequestHeader('Authorization', 'Bearer ' + editorUi.editor.data.token); - req.send('name=' + input.value); - - req.onload = function(e) { - if (req.status === 200) { - editorUi.editor.setStatus('Project successfully renamed'); - editorUi.editor.filename = input.value; - - } else { - console.log(req.response); - editorUi.editor.setStatus(JSON.parse(req.response).errors[0].message); - } - } - req.onerror = function(e) { - mxUtils.alert(req.statusText); - }; - editorUi.hideDialog(); - }); - save.className = 'btn blue'; - - var close = mxUtils.button(mxResources.get('cancel'), function() { - editorUi.hideDialog(); - }); - close.className = 'btn default'; - - footer.appendChild(save); - footer.appendChild(close); - //--- END FOOTER - - //--- START CONTENT - content.appendChild(header); - content.appendChild(body); - content.appendChild(footer); - //--- END CONTENT - - this.container = content; - //nameInput.setAttribute('value', editorUi.editor.getOrCreateFilename()); -}; - -/** - * Constructs a new edit file dialog. - */ -function EditFileDialog(editorUi) { - - var content = editorUi.createDiv('modal-content'); - var header = editorUi.createDiv('modal-header'); - var body = editorUi.createDiv('modal-body'); - var footer = editorUi.createDiv('modal-footer'); - - //--- START HEADER - var title = editorUi.createHeader('h4'); - mxUtils.write(title, mxResources.get('edit')); - - var x = mxUtils.button('', function() { - editorUi.hideDialog(); - }); - x.className = 'close'; - - header.appendChild(x); - header.appendChild(title); - //--- END HEADER - - //--- START BODY - var row = editorUi.createDiv('row'); - var col1 = editorUi.createDiv('col-md-12'); - - var textarea = document.createElement('textarea'); - textarea.style.width = '100%'; - textarea.style.height = '374px'; - textarea.value = mxUtils.getPrettyXml(editorUi.editor.getGraphXml()); - - // Enables dropping files - if (fileSupport) { - function handleDrop(evt) { - evt.stopPropagation(); - evt.preventDefault(); - - if (evt.dataTransfer.files.length > 0) { - var file = evt.dataTransfer.files[0]; - - var reader = new FileReader(); - reader.onload = function(e) { - textarea.value = e.target.result; - }; - reader.readAsText(file); - } - }; - - function handleDragOver(evt) { - evt.stopPropagation(); - evt.preventDefault(); - }; - - // Setup the dnd listeners. - textarea.addEventListener('dragover', handleDragOver, false); - textarea.addEventListener('drop', handleDrop, false); - } - col1.appendChild(textarea); - - row.appendChild(col1); - body.appendChild(row); - //--- END BODY - - //--- START FOOTER - var save = mxUtils.button(mxResources.get('save'), function() { - var doc = mxUtils.parseXml(textarea.value); - editorUi.editor.setGraphXml(doc.documentElement); - editorUi.hideDialog(); - }); - save.className = 'btn blue'; - - var close = mxUtils.button(mxResources.get('cancel'), function() { - editorUi.hideDialog(); - }); - close.className = 'btn default'; - - footer.appendChild(save); - footer.appendChild(close); - //--- END FOOTER - - //--- START CONTENT - content.appendChild(header); - content.appendChild(body); - content.appendChild(footer); - //--- END CONTENT - - this.container = content; -}; - -/** - * Constructs a new export dialog. - */ -function ExportDialog(editorUi) { - var content = editorUi.createDiv('modal-content'); - var header = editorUi.createDiv('modal-header'); - var body = editorUi.createDiv('modal-body form'); - var footer = editorUi.createDiv('modal-footer'); - - //--- START HEADER - var title = editorUi.createHeader('h4'); - mxUtils.write(title, mxResources.get('export') + ' XML'); - - var x = mxUtils.button('', function() { - editorUi.hideDialog(); - }); - x.className = 'close'; - - header.appendChild(x); - header.appendChild(title); - //--- END HEADER - - //--- START BODY - var form = editorUi.createDiv('form-horizontal form-row-seperated'); - var group = editorUi.createDiv('form-group last'); - - var label = document.createElement('label'); - label.className = 'col-sm-4 control-label'; - mxUtils.write(label, mxResources.get('filename')); - - var input = document.createElement('input'); - input.setAttribute('value', editorUi.editor.getOrCreateFilename()); - input.className = 'form-control'; - - var div = editorUi.createDiv('col-sm-8'); - div.appendChild(input); - - group.appendChild(label); - group.appendChild(div); - form.appendChild(group); - - body.appendChild(form); - //--- END BODY - - //--- START FOOTER - var save = mxUtils.button(mxResources.get('export'), mxUtils.bind(this, - function(data) { - editorUi.save(false); - - var xml = encodeURIComponent(mxUtils.getXml(editorUi.editor.getGraphXml())); - new mxXmlRequest(SAVE_URL + editorUi.editor.data.id + '/download', - 'filename=' + input.value, 'GET').simulate(document, "_blank"); - editorUi.hideDialog(); - })); - save.className = 'btn blue'; - - var close = mxUtils.button(mxResources.get('cancel'), function() { - editorUi.hideDialog(); - }); - close.className = 'btn default'; - - footer.appendChild(save); - footer.appendChild(close); - //--- END FOOTER - - //--- START CONTENT - content.appendChild(header); - content.appendChild(body); - content.appendChild(footer); - //--- END CONTENT - - this.container = content; -}; - -/** - * Giuseppe Careri - * Constructs a new general dialog. - */ -function GeneralDialog(editorUi, cell) { - var graph = editorUi.editor.graph; - - var content = editorUi.createDiv('modal-content'); - var header = editorUi.createDiv('modal-header'); - var body = editorUi.createDiv('modal-body form modal-body-scroll'); - var footer = editorUi.createDiv('modal-footer'); - - //--- START HEADER - var title = editorUi.createHeader('h4'); - mxUtils.write(title, mxResources.get('edit') + ' ' + mxResources.get(cell.value - .nodeName)); - - var x = mxUtils.button('', function() { - editorUi.hideDialog(); - }); - x.className = 'close'; - - header.appendChild(x); - header.appendChild(title); - //--- END HEADER - - //--- START BODY - var length = cell.value.attributes.length; - var form = editorUi.createDiv('form-horizontal form-row-seperated'); - - for (var i = 0; i < length; i++) { - var name = cell.value.attributes[i].name; - var id = '_' + name; - var value = cell.value.attributes[i].value; - - var group = editorUi.createDiv((i == length - 1) ? 'form-group last' : - 'form-group'); - - var label = document.createElement('label'); - label.className = 'col-sm-4 control-label'; - mxUtils.write(label, mxResources.get(name)); - group.appendChild(label); - - var input; - - switch (name) { - case 'sip_id': - input = createDropdownWithOptgroupFromApi('/api/users/all', value, 'fullname', 'id', editorUi, 'role'); - break; - case 'queue_id': - input = createDropdownFromApi('/api/voice/queues', value, 'name', 'name', - editorUi); - break; - case 'trunk_name': - input = createDropdownFromApi('/api/trunks', value, 'name', 'name', editorUi); - break; - case 'variable_id': - input = createDropdownFromApi('/api/variables', value, 'name', 'id', - editorUi); - break; - case 'account_id': - if (cell.value.nodeName == 'sendMail') { - input = createDropdownFromApi('/api/mail/servers/out', value, 'username', 'id', - editorUi); - } else { - input = createDropdownFromApi('/api/sms/accounts', value, 'name', 'id', - editorUi); - } - break; - case 'template_id': - input = createDropdownFromApi('/api/templates', value, 'name', 'id', - editorUi); - break; - case 'context': - input = createDropdownFromApi('/api/voice/contexts', value, 'name', 'name', - editorUi); - break; - case 'mailbox': - input = createDropdownFromApi('/api/voice/voicemails', value, 'mailbox', - 'id', editorUi, ['mailbox', 'context'], '%mailbox%@%context%'); - break; - case 'model': - input = createDropdownFromArray(ISPEECHASRMODEL, value); - break; - case 'ispeech_asr_language': - input = createDropdownFromArray(ISPEECHASRLANG, value); - break; - case 'beep': - input = createDropdownFromArray(ISPEECHBEEP, value); - break; - case 'hiddendigitspos': - input = createDropdownFromArray(SECRETDIGITSPOS, value); - break; - case 'ispeech_tts_language': - input = createDropdownFromArray(ISPEECHLANG, value); - break; - case 'google_tts_language': - input = createDropdownFromArray(GOOGLETTSLANG, value); - break; - case 'intKey': - input = createDropdownFromArray(ASRINTKEYS, value); - break; - case 'recordingFormat': - input = createDropdownFromArray(RECORDINGFORMAT, value); - break; - case 'answer': - input = createDropdownFromArray(BOOLSELECT, value); - break; - case 'list_id': - input = createDropdownFromTigerDialList(value); - break; - case 'interval_id': - input = createGroupedDropdownFromApi('/api/intervals', value, 'name', 'id', - editorUi, 'SubIntervals'); - break; - case 'project_id': - input = createDropdownFromApi('/api/square/projects', value, 'name', 'id', - editorUi); - break; - case 'odbc_id': - input = createDropdownFromApi('/api/square/odbc', value, 'name', 'id', - editorUi); - break; - case 'file_id': - input = createDropdownFromApi('/api/sounds', value, 'display_name', 'id', - editorUi); - break; - case 'timeout': - case 'digit': - case 'mindigit': - case 'maxdigit': - case 'response': - case 'retry': - case 'speed': - input = document.createElement('input'); - input.setAttribute('type', 'number'); - input.setAttribute('min', 0); - input.setAttribute('max', 1000); - input.setAttribute('value', value); - input.className = 'form-control'; - break; - case 'text': - case 'key': - case 'query': - case 'condition': - case 'command': - case 'body': - input = document.createElement('textarea'); - input.innerHTML = value; - input.className = 'form-control'; - break; - case 'sms_text': - input = document.createElement('textarea'); - input.innerHTML = value; - input.className = 'form-control'; - input.setAttribute('maxlength', '160'); - break; - default: - input = document.createElement('input'); - input.setAttribute('value', value); - input.className = 'form-control'; - break; - } - - input.setAttribute('id', id); - - var div = editorUi.createDiv('col-sm-8'); - div.appendChild(input); - - // Help - if (mxResources.get('help_' + name)) { - var help = editorUi.createDiv('p'); - help.className = 'help-block'; - mxUtils.write(help, mxResources.get('help_' + name)); - div.appendChild(help); - } - - group.appendChild(div); - form.appendChild(group); - } - body.appendChild(form); - //--- END BODY - - //--- START FOOTER - var save = mxUtils.button(mxResources.get('save'), mxUtils.bind(this, - function(data) { - for (var i = 0; i < cell.value.attributes.length; i++) { - var id = '_' + cell.value.attributes[i].name; - var name = cell.value.attributes[i].name; - // console.log(name, document.getElementById(id).value); - cell.setAttribute(name, document.getElementById(id).value); - }; - graph.refresh(cell); - editorUi.hideDialog(); - })); - save.className = 'btn blue'; - - var close = mxUtils.button(mxResources.get('cancel'), function() { - editorUi.hideDialog(); - }); - close.className = 'btn default'; - - footer.appendChild(save); - footer.appendChild(close); - //--- END FOOTER - - //--- START CONTENT - content.appendChild(header); - content.appendChild(body); - content.appendChild(footer); - //--- END CONTENT - - this.container = content; -}; +var _0xad27=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x69\x6E\x70\x75\x74","\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74","\x74\x79\x70\x65","\x63\x68\x65\x63\x6B\x62\x6F\x78","\x73\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x63\x68\x65\x63\x6B\x65\x64","\x47\x45\x54","\x6F\x70\x65\x6E","\x41\x75\x74\x68\x6F\x72\x69\x7A\x61\x74\x69\x6F\x6E","\x42\x65\x61\x72\x65\x72\x20","\x74\x6F\x6B\x65\x6E","\x64\x61\x74\x61","\x65\x64\x69\x74\x6F\x72","\x73\x65\x74\x52\x65\x71\x75\x65\x73\x74\x48\x65\x61\x64\x65\x72","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x72\x65\x73\x70\x6F\x6E\x73\x65","\x70\x61\x72\x73\x65","\x73\x65\x6C\x65\x63\x74","\x6F\x70\x74\x69\x6F\x6E","\x74\x65\x78\x74","\x2D\x2D\x20\x4E\x6F\x6E\x65\x20\x2D\x2D","\x76\x61\x6C\x75\x65","\x2D\x31","\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64","\x25","\x72\x65\x70\x6C\x61\x63\x65","\x66\x6F\x72\x45\x61\x63\x68","\x73\x65\x6C\x65\x63\x74\x65\x64","\x72\x6F\x77\x73","\x63\x6C\x61\x73\x73\x4E\x61\x6D\x65","\x66\x6F\x72\x6D\x2D\x63\x6F\x6E\x74\x72\x6F\x6C\x20\x73\x65\x6C\x65\x63\x74\x32","\x67\x72\x6F\x75\x70\x42\x79","\x68\x61\x73\x4F\x77\x6E\x50\x72\x6F\x70\x65\x72\x74\x79","\x6F\x70\x74\x67\x72\x6F\x75\x70","\x6C\x61\x62\x65\x6C","\x63\x61\x70\x69\x74\x61\x6C\x69\x7A\x65","\x30","\x73\x65\x6C\x65\x63\x74\x2D\x67\x72\x6F\x75\x70\x2D\x66\x61\x74\x68\x65\x72","\x74\x6F\x55\x70\x70\x65\x72\x43\x61\x73\x65","\x73\x65\x6C\x65\x63\x74\x2D\x67\x72\x6F\x75\x70\x2D\x73\x6F\x6E","\x2D","","\x50\x4F\x53\x54","\x2F\x61\x70\x69\x2F\x72\x65\x73\x74\x2F\x6C\x69\x73\x74\x2F\x6C\x69\x73\x74","\x73\x74\x72\x69\x6E\x67\x69\x66\x79","\x52\x4D\x49","\x69\x64","\x6E\x61\x6D\x65","\x6C\x6F\x67","\x49\x53\x5F\x49\x45","\x64\x6F\x63\x75\x6D\x65\x6E\x74\x4D\x6F\x64\x65","\x73\x63\x72\x6F\x6C\x6C\x57\x69\x64\x74\x68","\x62\x6F\x64\x79","\x72\x6F\x75\x6E\x64","\x6D\x61\x78","\x73\x63\x72\x6F\x6C\x6C\x48\x65\x69\x67\x68\x74","\x64\x6F\x63\x75\x6D\x65\x6E\x74\x45\x6C\x65\x6D\x65\x6E\x74","\x67\x65\x44\x69\x61\x6C\x6F\x67","\x63\x72\x65\x61\x74\x65\x44\x69\x76","\x6D\x6F\x64\x61\x6C\x20\x66\x61\x64\x65\x20\x69\x6E\x20\x63\x65\x6E\x74\x65\x72","\x64\x69\x73\x70\x6C\x61\x79","\x73\x74\x79\x6C\x65","\x62\x6C\x6F\x63\x6B","\x70\x61\x64\x64\x69\x6E\x67\x52\x69\x67\x68\x74","\x31\x32\x70\x78","\x67\x65\x4D\x6F\x64\x61\x6C\x44\x69\x61\x6C\x6F\x67","\x6D\x6F\x64\x61\x6C\x2D\x64\x69\x61\x6C\x6F\x67","\x62\x67","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64","\x6D\x6F\x64\x61\x6C\x2D\x62\x61\x63\x6B\x64\x72\x6F\x70\x20\x66\x61\x64\x65\x20\x69\x6E","\x49\x53\x5F\x51\x55\x49\x52\x4B\x53","\x6F\x6E\x44\x69\x61\x6C\x6F\x67\x43\x6C\x6F\x73\x65","\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x63\x6C\x6F\x73\x65","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x72\x65\x6D\x6F\x76\x65\x43\x68\x69\x6C\x64","\x70\x61\x72\x65\x6E\x74\x4E\x6F\x64\x65","\x6D\x6F\x64\x61\x6C\x2D\x63\x6F\x6E\x74\x65\x6E\x74","\x6D\x6F\x64\x61\x6C\x2D\x68\x65\x61\x64\x65\x72","\x6D\x6F\x64\x61\x6C\x2D\x62\x6F\x64\x79","\x6D\x6F\x64\x61\x6C\x2D\x66\x6F\x6F\x74\x65\x72","\x68\x34","\x63\x72\x65\x61\x74\x65\x48\x65\x61\x64\x65\x72","\x69\x6D\x70\x6F\x72\x74","\x67\x65\x74","\x20\x58\x4D\x4C","\x77\x72\x69\x74\x65","\x68\x69\x64\x65\x44\x69\x61\x6C\x6F\x67","\x62\x75\x74\x74\x6F\x6E","\x72\x6F\x77","\x63\x6F\x6C\x2D\x6D\x64\x2D\x31\x32","\x74\x65\x78\x74\x61\x72\x65\x61","\x77\x69\x64\x74\x68","\x31\x30\x30\x25","\x68\x65\x69\x67\x68\x74","\x33\x37\x34\x70\x78","\x66\x69\x6C\x65","\x61\x63\x63\x65\x70\x74","\x74\x65\x78\x74\x2F\x78\x6D\x6C","\x63\x68\x61\x6E\x67\x65","\x66\x69\x6C\x65\x73","\x74\x61\x72\x67\x65\x74","\x6F\x6E\x6C\x6F\x61\x64","\x72\x65\x73\x75\x6C\x74","\x72\x65\x61\x64\x41\x73\x54\x65\x78\x74","\x46\x61\x69\x6C\x65\x64\x20\x74\x6F\x20\x6C\x6F\x61\x64\x20\x66\x6F\x72\x6D\x61\x74\x20\x66\x69\x6C\x65","\x46\x61\x69\x6C\x65\x64\x20\x74\x6F\x20\x6C\x6F\x61\x64\x20\x66\x69\x6C\x65","\x61\x64\x64\x45\x76\x65\x6E\x74\x4C\x69\x73\x74\x65\x6E\x65\x72","\x70\x61\x72\x73\x65\x58\x6D\x6C","\x73\x65\x74\x47\x72\x61\x70\x68\x58\x6D\x6C","\x62\x69\x6E\x64","\x62\x74\x6E\x20\x62\x6C\x75\x65","\x63\x61\x6E\x63\x65\x6C","\x62\x74\x6E\x20\x64\x65\x66\x61\x75\x6C\x74","\x61\x62\x6F\x75\x74","\x20\x43\x61\x6C\x6C\x79\x20\x53\x71\x75\x61\x72\x65","\x69\x6D\x67","\x62\x6F\x72\x64\x65\x72","\x30\x70\x78","\x31\x37\x36","\x31\x35\x31","\x73\x72\x63","\x2F\x6C\x6F\x67\x6F\x2E\x70\x6E\x67","\x62\x72","\x50\x6F\x77\x65\x72\x65\x64\x20\x62\x79\x20\x58\x65\x6E\x69\x61\x6C\x61\x62\x20","\x56\x45\x52\x53\x49\x4F\x4E","\x61","\x68\x72\x65\x66","\x68\x74\x74\x70\x3A\x2F\x2F\x77\x77\x77\x2E\x63\x61\x6C\x6C\x79\x73\x71\x75\x61\x72\x65\x2E\x63\x6F\x6D\x2F","\x5F\x62\x6C\x61\x6E\x6B","\x77\x77\x77\x2E\x63\x61\x6C\x6C\x79\x73\x71\x75\x61\x72\x65\x2E\x63\x6F\x6D","\x73\x61\x76\x65\x41\x73","\x5F","\x67\x65\x74\x4F\x72\x43\x72\x65\x61\x74\x65\x46\x69\x6C\x65\x6E\x61\x6D\x65","\x63\x6F\x6C\x2D\x6D\x64\x2D\x34","\x63\x6F\x6C\x2D\x6D\x64\x2D\x38","\x63\x6F\x6E\x74\x72\x6F\x6C\x2D\x6C\x61\x62\x65\x6C\x20\x70\x75\x6C\x6C\x2D\x72\x69\x67\x68\x74","\x5F\x63\x6F\x70\x79","\x66\x6F\x72\x6D\x2D\x63\x6F\x6E\x74\x72\x6F\x6C","\x73\x61\x76\x65","\x6E\x65\x77","\x5F\x6E\x65\x77","\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E","\x66\x6F\x72\x6D\x2D\x68\x6F\x72\x69\x7A\x6F\x6E\x74\x61\x6C\x20\x66\x6F\x72\x6D\x2D\x72\x6F\x77\x2D\x73\x65\x70\x65\x72\x61\x74\x65\x64","\x66\x6F\x72\x6D\x2D\x67\x72\x6F\x75\x70","\x63\x6F\x6C\x2D\x73\x6D\x2D\x34\x20\x63\x6F\x6E\x74\x72\x6F\x6C\x2D\x6C\x61\x62\x65\x6C","\x63\x6F\x6C\x2D\x73\x6D\x2D\x38","\x75\x70\x64\x61\x74\x65","\x76\x61\x72\x69\x61\x62\x6C\x65","\x76\x61\x72\x69\x61\x62\x6C\x65\x20\x6E\x61\x6D\x65","\x76\x61\x72\x69\x61\x62\x6C\x65\x20\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E","\x66\x6F\x72\x6D\x2D\x67\x72\x6F\x75\x70\x20\x6C\x61\x73\x74","\x2F\x61\x70\x69\x2F\x73\x71\x75\x61\x72\x65\x2F\x70\x72\x6F\x6A\x65\x63\x74\x73","\x6C\x65\x6E\x67\x74\x68","\x73\x71\x75\x61\x72\x65\x2F\x70\x72\x6F\x6A\x65\x63\x74\x2F","\x72\x65\x6E\x61\x6D\x65","\x66\x69\x6C\x65\x6E\x61\x6D\x65","\x50\x55\x54","\x43\x6F\x6E\x74\x65\x6E\x74\x2D\x54\x79\x70\x65","\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2F\x78\x2D\x77\x77\x77\x2D\x66\x6F\x72\x6D\x2D\x75\x72\x6C\x65\x6E\x63\x6F\x64\x65\x64","\x6E\x61\x6D\x65\x3D","\x50\x72\x6F\x6A\x65\x63\x74\x20\x73\x75\x63\x63\x65\x73\x73\x66\x75\x6C\x6C\x79\x20\x72\x65\x6E\x61\x6D\x65\x64","\x73\x65\x74\x53\x74\x61\x74\x75\x73","\x6D\x65\x73\x73\x61\x67\x65","\x65\x72\x72\x6F\x72\x73","\x6F\x6E\x65\x72\x72\x6F\x72","\x73\x74\x61\x74\x75\x73\x54\x65\x78\x74","\x61\x6C\x65\x72\x74","\x65\x64\x69\x74","\x67\x65\x74\x47\x72\x61\x70\x68\x58\x6D\x6C","\x67\x65\x74\x50\x72\x65\x74\x74\x79\x58\x6D\x6C","\x73\x74\x6F\x70\x50\x72\x6F\x70\x61\x67\x61\x74\x69\x6F\x6E","\x70\x72\x65\x76\x65\x6E\x74\x44\x65\x66\x61\x75\x6C\x74","\x64\x61\x74\x61\x54\x72\x61\x6E\x73\x66\x65\x72","\x64\x72\x61\x67\x6F\x76\x65\x72","\x64\x72\x6F\x70","\x6D\x6F\x64\x61\x6C\x2D\x62\x6F\x64\x79\x20\x66\x6F\x72\x6D","\x65\x78\x70\x6F\x72\x74","\x67\x65\x74\x58\x6D\x6C","\x73\x69\x6D\x75\x6C\x61\x74\x65","\x2F\x64\x6F\x77\x6E\x6C\x6F\x61\x64","\x66\x69\x6C\x65\x6E\x61\x6D\x65\x3D","\x67\x72\x61\x70\x68","\x6D\x6F\x64\x61\x6C\x2D\x62\x6F\x64\x79\x20\x66\x6F\x72\x6D\x20\x6D\x6F\x64\x61\x6C\x2D\x62\x6F\x64\x79\x2D\x73\x63\x72\x6F\x6C\x6C","\x20","\x6E\x6F\x64\x65\x4E\x61\x6D\x65","\x61\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x2F\x61\x70\x69\x2F\x75\x73\x65\x72\x73\x2F\x61\x6C\x6C","\x66\x75\x6C\x6C\x6E\x61\x6D\x65","\x72\x6F\x6C\x65","\x73\x69\x70\x5F\x69\x64","\x2F\x61\x70\x69\x2F\x76\x6F\x69\x63\x65\x2F\x71\x75\x65\x75\x65\x73","\x71\x75\x65\x75\x65\x5F\x69\x64","\x2F\x61\x70\x69\x2F\x74\x72\x75\x6E\x6B\x73","\x74\x72\x75\x6E\x6B\x5F\x6E\x61\x6D\x65","\x2F\x61\x70\x69\x2F\x76\x61\x72\x69\x61\x62\x6C\x65\x73","\x76\x61\x72\x69\x61\x62\x6C\x65\x5F\x69\x64","\x73\x65\x6E\x64\x4D\x61\x69\x6C","\x2F\x61\x70\x69\x2F\x6D\x61\x69\x6C\x2F\x73\x65\x72\x76\x65\x72\x73\x2F\x6F\x75\x74","\x75\x73\x65\x72\x6E\x61\x6D\x65","\x2F\x61\x70\x69\x2F\x73\x6D\x73\x2F\x61\x63\x63\x6F\x75\x6E\x74\x73","\x61\x63\x63\x6F\x75\x6E\x74\x5F\x69\x64","\x2F\x61\x70\x69\x2F\x74\x65\x6D\x70\x6C\x61\x74\x65\x73","\x74\x65\x6D\x70\x6C\x61\x74\x65\x5F\x69\x64","\x2F\x61\x70\x69\x2F\x76\x6F\x69\x63\x65\x2F\x63\x6F\x6E\x74\x65\x78\x74\x73","\x63\x6F\x6E\x74\x65\x78\x74","\x2F\x61\x70\x69\x2F\x76\x6F\x69\x63\x65\x2F\x76\x6F\x69\x63\x65\x6D\x61\x69\x6C\x73","\x6D\x61\x69\x6C\x62\x6F\x78","\x25\x6D\x61\x69\x6C\x62\x6F\x78\x25\x40\x25\x63\x6F\x6E\x74\x65\x78\x74\x25","\x6D\x6F\x64\x65\x6C","\x69\x73\x70\x65\x65\x63\x68\x5F\x61\x73\x72\x5F\x6C\x61\x6E\x67\x75\x61\x67\x65","\x62\x65\x65\x70","\x68\x69\x64\x64\x65\x6E\x64\x69\x67\x69\x74\x73\x70\x6F\x73","\x69\x73\x70\x65\x65\x63\x68\x5F\x74\x74\x73\x5F\x6C\x61\x6E\x67\x75\x61\x67\x65","\x67\x6F\x6F\x67\x6C\x65\x5F\x74\x74\x73\x5F\x6C\x61\x6E\x67\x75\x61\x67\x65","\x69\x6E\x74\x4B\x65\x79","\x72\x65\x63\x6F\x72\x64\x69\x6E\x67\x46\x6F\x72\x6D\x61\x74","\x61\x6E\x73\x77\x65\x72","\x6C\x69\x73\x74\x5F\x69\x64","\x2F\x61\x70\x69\x2F\x69\x6E\x74\x65\x72\x76\x61\x6C\x73","\x53\x75\x62\x49\x6E\x74\x65\x72\x76\x61\x6C\x73","\x69\x6E\x74\x65\x72\x76\x61\x6C\x5F\x69\x64","\x70\x72\x6F\x6A\x65\x63\x74\x5F\x69\x64","\x2F\x61\x70\x69\x2F\x73\x71\x75\x61\x72\x65\x2F\x6F\x64\x62\x63","\x6F\x64\x62\x63\x5F\x69\x64","\x2F\x61\x70\x69\x2F\x73\x6F\x75\x6E\x64\x73","\x64\x69\x73\x70\x6C\x61\x79\x5F\x6E\x61\x6D\x65","\x66\x69\x6C\x65\x5F\x69\x64","\x74\x69\x6D\x65\x6F\x75\x74","\x64\x69\x67\x69\x74","\x6D\x69\x6E\x64\x69\x67\x69\x74","\x6D\x61\x78\x64\x69\x67\x69\x74","\x72\x65\x74\x72\x79","\x6E\x75\x6D\x62\x65\x72","\x6D\x69\x6E","\x73\x70\x65\x65\x64","\x6B\x65\x79","\x71\x75\x65\x72\x79","\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E","\x63\x6F\x6D\x6D\x61\x6E\x64","\x69\x6E\x6E\x65\x72\x48\x54\x4D\x4C","\x6D\x61\x78\x6C\x65\x6E\x67\x74\x68","\x31\x36\x30","\x73\x6D\x73\x5F\x74\x65\x78\x74","\x68\x65\x6C\x70\x5F","\x70","\x68\x65\x6C\x70\x2D\x62\x6C\x6F\x63\x6B","\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x42\x79\x49\x64","\x72\x65\x66\x72\x65\x73\x68"];_0xad27[0];function createCheckbox(_0x3f71x2){var _0x3f71x3=document[_0xad27[2]](_0xad27[1]);_0x3f71x3[_0xad27[5]](_0xad27[3],_0xad27[4]);if(_0x3f71x2){_0x3f71x3[_0xad27[5]](_0xad27[6],true)};return _0x3f71x3}function createDropdownFromApi(_0x3f71x5,_0x3f71x2,_0x3f71x6,_0x3f71x7,_0x3f71x8,_0x3f71x9,_0x3f71xa){var _0x3f71xb= new XMLHttpRequest();_0x3f71xb[_0xad27[8]](_0xad27[7],_0x3f71x5,false);_0x3f71xb[_0xad27[14]](_0xad27[9],_0xad27[10]+ _0x3f71x8[_0xad27[13]][_0xad27[12]][_0xad27[11]]);_0x3f71xb[_0xad27[15]](null);var _0x3f71xc=[];if(_0x3f71xb[_0xad27[16]]=== 200){_0x3f71xc= JSON[_0xad27[18]](_0x3f71xb[_0xad27[17]])};var _0x3f71x3=document[_0xad27[2]](_0xad27[19]);var _0x3f71xd=document[_0xad27[2]](_0xad27[20]);_0x3f71xd[_0xad27[21]]= _0xad27[22];_0x3f71xd[_0xad27[23]]= _0xad27[24];_0x3f71x3[_0xad27[25]](_0x3f71xd);_0x3f71xc[_0xad27[30]][_0xad27[28]](function(_0x3f71xe){_0x3f71xd= document[_0xad27[2]](_0xad27[20]);_0x3f71xd[_0xad27[21]]= _0x3f71xe[_0x3f71x6];if(_0x3f71x9&& _0x3f71xa){_0x3f71xd[_0xad27[23]]= _0x3f71xa;_0x3f71x9[_0xad27[28]](function(_0x3f71xf){_0x3f71xd[_0xad27[23]]= _0x3f71xd[_0xad27[23]][_0xad27[27]](_0xad27[26]+ _0x3f71xf+ _0xad27[26],_0x3f71xe[_0x3f71xf])});_0x3f71xd[_0xad27[29]]= (_0x3f71xd[_0xad27[23]]== _0x3f71x2)}else {_0x3f71xd[_0xad27[23]]= _0x3f71xe[_0x3f71x7];_0x3f71xd[_0xad27[29]]= (_0x3f71xe[_0x3f71x7]== _0x3f71x2)};_0x3f71x3[_0xad27[25]](_0x3f71xd)});_0x3f71x3[_0xad27[31]]= _0xad27[32];return _0x3f71x3}function createDropdownWithOptgroupFromApi(_0x3f71x5,_0x3f71x2,_0x3f71x6,_0x3f71x7,_0x3f71x8,_0x3f71x11){var _0x3f71xb= new XMLHttpRequest();_0x3f71xb[_0xad27[8]](_0xad27[7],_0x3f71x5,false);_0x3f71xb[_0xad27[14]](_0xad27[9],_0xad27[10]+ _0x3f71x8[_0xad27[13]][_0xad27[12]][_0xad27[11]]);_0x3f71xb[_0xad27[15]](null);var _0x3f71xc=[];if(_0x3f71xb[_0xad27[16]]=== 200){_0x3f71xc= JSON[_0xad27[18]](_0x3f71xb[_0xad27[17]])};var _0x3f71x3=document[_0xad27[2]](_0xad27[19]);var _0x3f71xd=document[_0xad27[2]](_0xad27[20]);_0x3f71xd[_0xad27[21]]= _0xad27[22];_0x3f71xd[_0xad27[23]]= _0xad27[24];_0x3f71x3[_0xad27[25]](_0x3f71xd);var _0x3f71x12=_[_0xad27[33]](_0x3f71xc[_0xad27[30]],_0x3f71x11);for(var _0x3f71x13 in _0x3f71x12){if(_0x3f71x12[_0xad27[34]](_0x3f71x13)){var _0x3f71x14=document[_0xad27[2]](_0xad27[35]);_0x3f71x14[_0xad27[36]]= _[_0xad27[37]](_0x3f71x13);var _0x3f71x15=_0x3f71x12[_0x3f71x13];_0x3f71x15[_0xad27[28]](function(_0x3f71xe){_0x3f71xd= document[_0xad27[2]](_0xad27[20]);_0x3f71xd[_0xad27[21]]= _0x3f71xe[_0x3f71x6];_0x3f71xd[_0xad27[23]]= _0x3f71xe[_0x3f71x7];_0x3f71xd[_0xad27[29]]= (_0x3f71xe[_0x3f71x7]== _0x3f71x2);_0x3f71x14[_0xad27[25]](_0x3f71xd)});_0x3f71x3[_0xad27[25]](_0x3f71x14)}};_0x3f71x3[_0xad27[31]]= _0xad27[32];return _0x3f71x3}function createGroupedDropdownFromApi(_0x3f71x5,_0x3f71x2,_0x3f71x6,_0x3f71x7,_0x3f71x8,_0x3f71x17){var _0x3f71xb= new XMLHttpRequest();_0x3f71xb[_0xad27[8]](_0xad27[7],_0x3f71x5,false);_0x3f71xb[_0xad27[14]](_0xad27[9],_0xad27[10]+ _0x3f71x8[_0xad27[13]][_0xad27[12]][_0xad27[11]]);_0x3f71xb[_0xad27[15]](null);var _0x3f71xc=[];if(_0x3f71xb[_0xad27[16]]=== 200){_0x3f71xc= JSON[_0xad27[18]](_0x3f71xb[_0xad27[17]])};var _0x3f71x3=document[_0xad27[2]](_0xad27[19]);var _0x3f71xd=document[_0xad27[2]](_0xad27[20]);_0x3f71xd[_0xad27[21]]= _0xad27[22];_0x3f71xd[_0xad27[23]]= _0xad27[38];_0x3f71x3[_0xad27[25]](_0x3f71xd);_0x3f71xc[_0xad27[30]][_0xad27[28]](function(_0x3f71xe){_0x3f71xd= document[_0xad27[2]](_0xad27[20]);_0x3f71xd[_0xad27[31]]= _0xad27[39];_0x3f71xd[_0xad27[21]]= _0x3f71xe[_0x3f71x6][_0xad27[40]]();_0x3f71xd[_0xad27[23]]= _0x3f71xe[_0x3f71x7];_0x3f71xd[_0xad27[29]]= (_0x3f71xe[_0x3f71x7]== _0x3f71x2);_0x3f71x3[_0xad27[25]](_0x3f71xd);_0x3f71xe[_0x3f71x17][_0xad27[28]](function(_0x3f71xe){_0x3f71xd= document[_0xad27[2]](_0xad27[20]);_0x3f71xd[_0xad27[31]]= _0xad27[41];_0x3f71xd[_0xad27[21]]= _0xad27[42]+ _[_0xad27[37]](_0x3f71xe[_0x3f71x6]);_0x3f71xd[_0xad27[23]]= _0x3f71xe[_0x3f71x7];_0x3f71xd[_0xad27[29]]= (_0x3f71xe[_0x3f71x7]== _0x3f71x2);_0x3f71x3[_0xad27[25]](_0x3f71xd)})});_0x3f71x3[_0xad27[31]]= _0xad27[32];return _0x3f71x3}function createDropdownFromArray(_0x3f71x19,_0x3f71x2){var _0x3f71x3=document[_0xad27[2]](_0xad27[19]);for(var _0x3f71x1a in _0x3f71x19){var _0x3f71xd=document[_0xad27[2]](_0xad27[20]);_0x3f71xd[_0xad27[21]]= _0x3f71x19[_0x3f71x1a];_0x3f71xd[_0xad27[23]]= _0x3f71x1a;if(_0x3f71x2> 0|| _0x3f71x2!= _0xad27[43]){_0x3f71xd[_0xad27[29]]= (_0x3f71x2=== _0x3f71x1a)?true:false};_0x3f71x3[_0xad27[25]](_0x3f71xd)};_0x3f71x3[_0xad27[31]]= _0xad27[32];return _0x3f71x3}function createDropdownFromTigerDialList(_0x3f71x2){var _0x3f71x3=document[_0xad27[2]](_0xad27[19]);var _0x3f71x19=[];var _0x3f71x1c= new XMLHttpRequest();try{_0x3f71x1c[_0xad27[8]](_0xad27[44],_0xad27[45],false);_0x3f71x1c[_0xad27[15]](JSON[_0xad27[46]]({page:1,size:600000}));if(_0x3f71x1c[_0xad27[16]]=== 200){var _0x3f71xc=JSON[_0xad27[18]](_0x3f71x1c[_0xad27[17]]);if(_0x3f71xc[_0xad27[16]]> 0){var _0x3f71x1d=_0x3f71xc[_0xad27[17]][_0xad27[47]][_0xad27[30]];for(var _0x3f71x1e in _0x3f71x1d){_0x3f71x19[_0x3f71x1d[_0x3f71x1e][_0xad27[48]]]= _0x3f71x1d[_0x3f71x1e][_0xad27[49]]}}}}catch(e){console[_0xad27[50]](e)};for(var _0x3f71x1a in _0x3f71x19){var _0x3f71xd=document[_0xad27[2]](_0xad27[20]);_0x3f71xd[_0xad27[21]]= _0x3f71x19[_0x3f71x1a];_0x3f71xd[_0xad27[23]]= _0x3f71x1a;if(_0x3f71x2> 0|| _0x3f71x2!= _0xad27[43]){_0x3f71xd[_0xad27[29]]= (_0x3f71x2=== _0x3f71x1a)?true:false};_0x3f71x3[_0xad27[25]](_0x3f71xd)};_0x3f71x3[_0xad27[31]]= _0xad27[32];return _0x3f71x3}function Dialog(_0x3f71x8,_0x3f71x20,_0x3f71x21,_0x3f71x22,_0x3f71x23,_0x3f71x24,_0x3f71x25){var _0x3f71x26=0;if(mxClient[_0xad27[51]]&& document[_0xad27[52]]!= 9){_0x3f71x26= 60};_0x3f71x21+= _0x3f71x26;_0x3f71x22+= _0x3f71x26;var _0x3f71x27=Math[_0xad27[56]](0,Math[_0xad27[55]]((document[_0xad27[54]][_0xad27[53]]- _0x3f71x21)/ 2));var _0x3f71x28=Math[_0xad27[56]](0,Math[_0xad27[55]]((Math[_0xad27[56]](document[_0xad27[54]][_0xad27[57]],document[_0xad27[58]][_0xad27[57]])- _0x3f71x22)/ 3));var _0x3f71x29=_0x3f71x8[_0xad27[60]](_0xad27[59]);_0x3f71x29[_0xad27[31]]= _0xad27[61];_0x3f71x29[_0xad27[63]][_0xad27[62]]= _0xad27[64];_0x3f71x29[_0xad27[63]][_0xad27[65]]= _0xad27[66];var _0x3f71x2a=_0x3f71x8[_0xad27[60]](_0xad27[67]);_0x3f71x2a[_0xad27[31]]= _0xad27[68];_0x3f71x2a[_0xad27[25]](_0x3f71x20);_0x3f71x29[_0xad27[25]](_0x3f71x2a);if(this[_0xad27[69]]== null){this[_0xad27[69]]= _0x3f71x8[_0xad27[60]](_0xad27[70]);this[_0xad27[69]][_0xad27[31]]= _0xad27[71];if(mxClient[_0xad27[72]]){ new mxDivResizer(this[_0xad27[69]])}};if(_0x3f71x23){document[_0xad27[54]][_0xad27[25]](this[_0xad27[69]])};document[_0xad27[54]][_0xad27[25]](_0x3f71x29);this[_0xad27[73]]= _0x3f71x25;this[_0xad27[74]]= _0x3f71x29}Dialog[_0xad27[76]][_0xad27[75]]= function(){if(this[_0xad27[73]]!= null){this[_0xad27[73]]();this[_0xad27[73]]= null};this[_0xad27[74]][_0xad27[78]][_0xad27[77]](this[_0xad27[74]]);this[_0xad27[69]][_0xad27[78]][_0xad27[77]](this[_0xad27[69]])};function ImportDialog(_0x3f71x8){var _0x3f71x2c=_0x3f71x8[_0xad27[60]](_0xad27[79]);var _0x3f71x2d=_0x3f71x8[_0xad27[60]](_0xad27[80]);var _0x3f71x2e=_0x3f71x8[_0xad27[60]](_0xad27[81]);var _0x3f71x2f=_0x3f71x8[_0xad27[60]](_0xad27[82]);var _0x3f71x30=_0x3f71x8[_0xad27[84]](_0xad27[83]);mxUtils[_0xad27[88]](_0x3f71x30,mxResources[_0xad27[86]](_0xad27[85])+ _0xad27[87]);var _0x3f71x31=mxUtils[_0xad27[90]](_0xad27[43],function(){_0x3f71x8[_0xad27[89]]()});_0x3f71x31[_0xad27[31]]= _0xad27[75];_0x3f71x2d[_0xad27[25]](_0x3f71x31);_0x3f71x2d[_0xad27[25]](_0x3f71x30);var _0x3f71x32=_0x3f71x8[_0xad27[60]](_0xad27[91]);var _0x3f71x33=_0x3f71x8[_0xad27[60]](_0xad27[92]);var _0x3f71x34=document[_0xad27[2]](_0xad27[93]);_0x3f71x34[_0xad27[63]][_0xad27[94]]= _0xad27[95];_0x3f71x34[_0xad27[63]][_0xad27[96]]= _0xad27[97];var _0x3f71x3=document[_0xad27[2]](_0xad27[1]);_0x3f71x3[_0xad27[3]]= _0xad27[98];_0x3f71x3[_0xad27[5]](_0xad27[99],_0xad27[100]);_0x3f71x3[_0xad27[109]](_0xad27[101],function _0x3f71x35(_0x3f71x36){var _0x3f71x37=_0x3f71x36[_0xad27[103]][_0xad27[102]][0];console[_0xad27[50]](_0x3f71x37);if(_0x3f71x37){if(_0x3f71x37[_0xad27[3]]=== _0xad27[100]){var _0x3f71x38= new FileReader();_0x3f71x38[_0xad27[104]]= function(_0x3f71x39){var _0x3f71x3a=_0x3f71x39[_0xad27[103]][_0xad27[105]];mxUtils[_0xad27[88]](_0x3f71x34,_0x3f71x3a)};_0x3f71x38[_0xad27[106]](_0x3f71x37)}else {alert(_0xad27[107])}}else {alert(_0xad27[108])}},false);_0x3f71x33[_0xad27[25]](_0x3f71x3);_0x3f71x33[_0xad27[25]](_0x3f71x34);_0x3f71x32[_0xad27[25]](_0x3f71x33);_0x3f71x2e[_0xad27[25]](_0x3f71x32);var _0x3f71x3b=mxUtils[_0xad27[90]](mxResources[_0xad27[86]](_0xad27[85]),mxUtils[_0xad27[112]](this,function(_0x3f71x3c){var _0x3f71x3d=mxUtils[_0xad27[110]](_0x3f71x34[_0xad27[23]]);_0x3f71x8[_0xad27[13]][_0xad27[111]](_0x3f71x3d[_0xad27[58]]);_0x3f71x8[_0xad27[89]]()}));_0x3f71x3b[_0xad27[31]]= _0xad27[113];var _0x3f71x3e=mxUtils[_0xad27[90]](mxResources[_0xad27[86]](_0xad27[114]),function(){_0x3f71x8[_0xad27[89]]()});_0x3f71x3e[_0xad27[31]]= _0xad27[115];_0x3f71x2f[_0xad27[25]](_0x3f71x3b);_0x3f71x2f[_0xad27[25]](_0x3f71x3e);_0x3f71x2c[_0xad27[25]](_0x3f71x2d);_0x3f71x2c[_0xad27[25]](_0x3f71x2e);_0x3f71x2c[_0xad27[25]](_0x3f71x2f);this[_0xad27[74]]= _0x3f71x2c}function AboutDialog(_0x3f71x8){var _0x3f71x2c=_0x3f71x8[_0xad27[60]](_0xad27[79]);var _0x3f71x2d=_0x3f71x8[_0xad27[60]](_0xad27[80]);var _0x3f71x2e=_0x3f71x8[_0xad27[60]](_0xad27[81]);var _0x3f71x2f=_0x3f71x8[_0xad27[60]](_0xad27[82]);var _0x3f71x30=_0x3f71x8[_0xad27[84]](_0xad27[83]);mxUtils[_0xad27[88]](_0x3f71x30,mxResources[_0xad27[86]](_0xad27[116])+ _0xad27[117]);var _0x3f71x31=mxUtils[_0xad27[90]](_0xad27[43],function(){_0x3f71x8[_0xad27[89]]()});_0x3f71x31[_0xad27[31]]= _0xad27[75];_0x3f71x2d[_0xad27[25]](_0x3f71x31);_0x3f71x2d[_0xad27[25]](_0x3f71x30);var _0x3f71x40=document[_0xad27[2]](_0xad27[118]);_0x3f71x40[_0xad27[63]][_0xad27[119]]= _0xad27[120];_0x3f71x40[_0xad27[5]](_0xad27[94],_0xad27[121]);_0x3f71x40[_0xad27[5]](_0xad27[94],_0xad27[122]);_0x3f71x40[_0xad27[5]](_0xad27[123],IMAGE_PATH+ _0xad27[124]);_0x3f71x2e[_0xad27[25]](_0x3f71x40);mxUtils[_0xad27[125]](_0x3f71x2e);mxUtils[_0xad27[88]](_0x3f71x2e,_0xad27[126]+ mxClient[_0xad27[127]]);mxUtils[_0xad27[125]](_0x3f71x2e);var _0x3f71x41=document[_0xad27[2]](_0xad27[128]);_0x3f71x41[_0xad27[5]](_0xad27[129],_0xad27[130]);_0x3f71x41[_0xad27[5]](_0xad27[103],_0xad27[131]);mxUtils[_0xad27[88]](_0x3f71x41,_0xad27[132]);_0x3f71x2e[_0xad27[25]](_0x3f71x41);mxUtils[_0xad27[125]](_0x3f71x2e);mxUtils[_0xad27[125]](_0x3f71x2e);var _0x3f71x3e=mxUtils[_0xad27[90]](mxResources[_0xad27[86]](_0xad27[75]),function(){_0x3f71x8[_0xad27[89]]()});_0x3f71x3e[_0xad27[31]]= _0xad27[115];_0x3f71x2f[_0xad27[25]](_0x3f71x3e);_0x3f71x2c[_0xad27[25]](_0x3f71x2d);_0x3f71x2c[_0xad27[25]](_0x3f71x2e);_0x3f71x2c[_0xad27[25]](_0x3f71x2f);this[_0xad27[74]]= _0x3f71x2c}function SaveDialog(_0x3f71x8){var _0x3f71x2c=_0x3f71x8[_0xad27[60]](_0xad27[79]);var _0x3f71x2d=_0x3f71x8[_0xad27[60]](_0xad27[80]);var _0x3f71x2e=_0x3f71x8[_0xad27[60]](_0xad27[81]);var _0x3f71x2f=_0x3f71x8[_0xad27[60]](_0xad27[82]);var _0x3f71x30=_0x3f71x8[_0xad27[84]](_0xad27[83]);mxUtils[_0xad27[88]](_0x3f71x30,mxResources[_0xad27[86]](_0xad27[133]));var _0x3f71x31=mxUtils[_0xad27[90]](_0xad27[43],function(){_0x3f71x8[_0xad27[89]]()});_0x3f71x31[_0xad27[31]]= _0xad27[75];_0x3f71x2d[_0xad27[25]](_0x3f71x31);_0x3f71x2d[_0xad27[25]](_0x3f71x30);var _0x3f71x43=_0xad27[49];var _0x3f71x44=_0xad27[134]+ _0x3f71x43;var _0x3f71x2=_0x3f71x8[_0xad27[13]][_0xad27[135]]();var _0x3f71x32=_0x3f71x8[_0xad27[60]](_0xad27[91]);var _0x3f71x33=_0x3f71x8[_0xad27[60]](_0xad27[136]);var _0x3f71x45=_0x3f71x8[_0xad27[60]](_0xad27[137]);var _0x3f71x46=document[_0xad27[2]](_0xad27[36]);_0x3f71x46[_0xad27[31]]= _0xad27[138];mxUtils[_0xad27[88]](_0x3f71x46,mxResources[_0xad27[86]](_0x3f71x43));_0x3f71x33[_0xad27[25]](_0x3f71x46);var _0x3f71x47=document[_0xad27[2]](_0xad27[1]);_0x3f71x47[_0xad27[5]](_0xad27[23],_0x3f71x2+ _0xad27[139]);_0x3f71x47[_0xad27[5]](_0xad27[48],_0x3f71x44);_0x3f71x47[_0xad27[31]]= _0xad27[140];_0x3f71x45[_0xad27[25]](_0x3f71x47);_0x3f71x32[_0xad27[25]](_0x3f71x33);_0x3f71x32[_0xad27[25]](_0x3f71x45);_0x3f71x2e[_0xad27[25]](_0x3f71x32);var _0x3f71x3b=mxUtils[_0xad27[90]](mxResources[_0xad27[86]](_0xad27[141]),function(){_0x3f71x8[_0xad27[133]](_0x3f71x47[_0xad27[23]]);_0x3f71x8[_0xad27[89]]()});_0x3f71x3b[_0xad27[31]]= _0xad27[113];var _0x3f71x3e=mxUtils[_0xad27[90]](mxResources[_0xad27[86]](_0xad27[114]),function(){_0x3f71x8[_0xad27[89]]()});_0x3f71x3e[_0xad27[31]]= _0xad27[115];_0x3f71x2f[_0xad27[25]](_0x3f71x3b);_0x3f71x2f[_0xad27[25]](_0x3f71x3e);_0x3f71x2c[_0xad27[25]](_0x3f71x2d);_0x3f71x2c[_0xad27[25]](_0x3f71x2e);_0x3f71x2c[_0xad27[25]](_0x3f71x2f);this[_0xad27[74]]= _0x3f71x2c}function NewDialog(_0x3f71x8){var _0x3f71x2c=_0x3f71x8[_0xad27[60]](_0xad27[79]);var _0x3f71x2d=_0x3f71x8[_0xad27[60]](_0xad27[80]);var _0x3f71x2e=_0x3f71x8[_0xad27[60]](_0xad27[81]);var _0x3f71x2f=_0x3f71x8[_0xad27[60]](_0xad27[82]);var _0x3f71x30=_0x3f71x8[_0xad27[84]](_0xad27[83]);mxUtils[_0xad27[88]](_0x3f71x30,mxResources[_0xad27[86]](_0xad27[142]));var _0x3f71x31=mxUtils[_0xad27[90]](_0xad27[43],function(){_0x3f71x8[_0xad27[89]]()});_0x3f71x31[_0xad27[31]]= _0xad27[75];_0x3f71x2d[_0xad27[25]](_0x3f71x31);_0x3f71x2d[_0xad27[25]](_0x3f71x30);var _0x3f71x43=_0xad27[49];var _0x3f71x44=_0xad27[134]+ _0x3f71x43;var _0x3f71x2=_0x3f71x8[_0xad27[13]][_0xad27[135]]();var _0x3f71x32=_0x3f71x8[_0xad27[60]](_0xad27[91]);var _0x3f71x33=_0x3f71x8[_0xad27[60]](_0xad27[136]);var _0x3f71x45=_0x3f71x8[_0xad27[60]](_0xad27[137]);var _0x3f71x46=document[_0xad27[2]](_0xad27[36]);_0x3f71x46[_0xad27[31]]= _0xad27[138];mxUtils[_0xad27[88]](_0x3f71x46,mxResources[_0xad27[86]](_0x3f71x43));_0x3f71x33[_0xad27[25]](_0x3f71x46);var _0x3f71x47=document[_0xad27[2]](_0xad27[1]);_0x3f71x47[_0xad27[5]](_0xad27[23],_0x3f71x2+ _0xad27[143]);_0x3f71x47[_0xad27[5]](_0xad27[48],_0x3f71x44);_0x3f71x47[_0xad27[31]]= _0xad27[140];_0x3f71x45[_0xad27[25]](_0x3f71x47);_0x3f71x32[_0xad27[25]](_0x3f71x33);_0x3f71x32[_0xad27[25]](_0x3f71x45);_0x3f71x2e[_0xad27[25]](_0x3f71x32);var _0x3f71x3b=mxUtils[_0xad27[90]](mxResources[_0xad27[86]](_0xad27[142]),function(){_0x3f71x8[_0xad27[142]](_0x3f71x47[_0xad27[23]]);_0x3f71x8[_0xad27[89]]()});_0x3f71x3b[_0xad27[31]]= _0xad27[113];var _0x3f71x3e=mxUtils[_0xad27[90]](mxResources[_0xad27[86]](_0xad27[114]),function(){_0x3f71x8[_0xad27[89]]()});_0x3f71x3e[_0xad27[31]]= _0xad27[115];_0x3f71x2f[_0xad27[25]](_0x3f71x3b);_0x3f71x2f[_0xad27[25]](_0x3f71x3e);_0x3f71x2c[_0xad27[25]](_0x3f71x2d);_0x3f71x2c[_0xad27[25]](_0x3f71x2e);_0x3f71x2c[_0xad27[25]](_0x3f71x2f);this[_0xad27[74]]= _0x3f71x2c}function DescriptionDialog(_0x3f71x8){console[_0xad27[50]](_0x3f71x8[_0xad27[13]][_0xad27[12]]);var _0x3f71x2c=_0x3f71x8[_0xad27[60]](_0xad27[79]);var _0x3f71x2d=_0x3f71x8[_0xad27[60]](_0xad27[80]);var _0x3f71x2e=_0x3f71x8[_0xad27[60]](_0xad27[81]);var _0x3f71x2f=_0x3f71x8[_0xad27[60]](_0xad27[82]);var _0x3f71x30=_0x3f71x8[_0xad27[84]](_0xad27[83]);mxUtils[_0xad27[88]](_0x3f71x30,mxResources[_0xad27[86]](_0xad27[144]));var _0x3f71x31=mxUtils[_0xad27[90]](_0xad27[43],function(){_0x3f71x8[_0xad27[89]]()});_0x3f71x31[_0xad27[31]]= _0xad27[75];_0x3f71x2d[_0xad27[25]](_0x3f71x31);_0x3f71x2d[_0xad27[25]](_0x3f71x30);var _0x3f71x4a=_0x3f71x8[_0xad27[60]](_0xad27[145]);var _0x3f71x43=_0xad27[144];var _0x3f71x44=_0xad27[134]+ _0x3f71x43;var _0x3f71x2=_0x3f71x8[_0xad27[13]][_0xad27[12]][_0xad27[144]]|| _0xad27[43];var _0x3f71x13=_0x3f71x8[_0xad27[60]](_0xad27[146]);var _0x3f71x46=document[_0xad27[2]](_0xad27[36]);_0x3f71x46[_0xad27[31]]= _0xad27[147];mxUtils[_0xad27[88]](_0x3f71x46,mxResources[_0xad27[86]](_0x3f71x43));_0x3f71x13[_0xad27[25]](_0x3f71x46);var _0x3f71x3=document[_0xad27[2]](_0xad27[1]);_0x3f71x3[_0xad27[5]](_0xad27[23],_0x3f71x2);_0x3f71x3[_0xad27[31]]= _0xad27[140];_0x3f71x3[_0xad27[5]](_0xad27[48],_0x3f71x44);var _0x3f71x29=_0x3f71x8[_0xad27[60]](_0xad27[148]);_0x3f71x29[_0xad27[25]](_0x3f71x3);_0x3f71x13[_0xad27[25]](_0x3f71x29);_0x3f71x4a[_0xad27[25]](_0x3f71x13);_0x3f71x2e[_0xad27[25]](_0x3f71x4a);var _0x3f71x3b=mxUtils[_0xad27[90]](mxResources[_0xad27[86]](_0xad27[149]),function(){_0x3f71x8[_0xad27[144]](_0x3f71x3[_0xad27[23]]);_0x3f71x8[_0xad27[89]]()});_0x3f71x3b[_0xad27[31]]= _0xad27[113];var _0x3f71x3e=mxUtils[_0xad27[90]](mxResources[_0xad27[86]](_0xad27[114]),function(){_0x3f71x8[_0xad27[89]]()});_0x3f71x3e[_0xad27[31]]= _0xad27[115];_0x3f71x2f[_0xad27[25]](_0x3f71x3b);_0x3f71x2f[_0xad27[25]](_0x3f71x3e);_0x3f71x2c[_0xad27[25]](_0x3f71x2d);_0x3f71x2c[_0xad27[25]](_0x3f71x2e);_0x3f71x2c[_0xad27[25]](_0x3f71x2f);this[_0xad27[74]]= _0x3f71x2c}function VariableDialog(_0x3f71x8){var _0x3f71x2c=_0x3f71x8[_0xad27[60]](_0xad27[79]);var _0x3f71x2d=_0x3f71x8[_0xad27[60]](_0xad27[80]);var _0x3f71x2e=_0x3f71x8[_0xad27[60]](_0xad27[81]);var _0x3f71x2f=_0x3f71x8[_0xad27[60]](_0xad27[82]);var _0x3f71x30=_0x3f71x8[_0xad27[84]](_0xad27[83]);mxUtils[_0xad27[88]](_0x3f71x30,mxResources[_0xad27[86]](_0xad27[150]));var _0x3f71x31=mxUtils[_0xad27[90]](_0xad27[43],function(){_0x3f71x8[_0xad27[89]]()});_0x3f71x31[_0xad27[31]]= _0xad27[75];_0x3f71x2d[_0xad27[25]](_0x3f71x31);_0x3f71x2d[_0xad27[25]](_0x3f71x30);var _0x3f71x4a=_0x3f71x8[_0xad27[60]](_0xad27[145]);var _0x3f71x43=_0xad27[49];var _0x3f71x44=_0xad27[134]+ _0x3f71x43;var _0x3f71x2=_0xad27[151];var _0x3f71x13=_0x3f71x8[_0xad27[60]](_0xad27[146]);var _0x3f71x46=document[_0xad27[2]](_0xad27[36]);_0x3f71x46[_0xad27[31]]= _0xad27[147];mxUtils[_0xad27[88]](_0x3f71x46,mxResources[_0xad27[86]](_0x3f71x43));_0x3f71x13[_0xad27[25]](_0x3f71x46);var _0x3f71x3=document[_0xad27[2]](_0xad27[1]);_0x3f71x3[_0xad27[5]](_0xad27[23],_0x3f71x2);_0x3f71x3[_0xad27[31]]= _0xad27[140];_0x3f71x3[_0xad27[5]](_0xad27[48],_0x3f71x44);var _0x3f71x29=_0x3f71x8[_0xad27[60]](_0xad27[148]);_0x3f71x29[_0xad27[25]](_0x3f71x3);_0x3f71x13[_0xad27[25]](_0x3f71x29);_0x3f71x4a[_0xad27[25]](_0x3f71x13);_0x3f71x43= _0xad27[144];_0x3f71x44= _0xad27[134]+ _0x3f71x43;_0x3f71x2= _0xad27[152];_0x3f71x13= _0x3f71x8[_0xad27[60]](_0xad27[153]);_0x3f71x46= document[_0xad27[2]](_0xad27[36]);_0x3f71x46[_0xad27[31]]= _0xad27[147];mxUtils[_0xad27[88]](_0x3f71x46,mxResources[_0xad27[86]](_0x3f71x43));_0x3f71x13[_0xad27[25]](_0x3f71x46);var _0x3f71x4c=document[_0xad27[2]](_0xad27[1]);_0x3f71x4c[_0xad27[5]](_0xad27[23],_0x3f71x2);_0x3f71x4c[_0xad27[31]]= _0xad27[140];_0x3f71x4c[_0xad27[5]](_0xad27[48],_0x3f71x44);_0x3f71x29= _0x3f71x8[_0xad27[60]](_0xad27[148]);_0x3f71x29[_0xad27[25]](_0x3f71x4c);_0x3f71x13[_0xad27[25]](_0x3f71x29);_0x3f71x4a[_0xad27[25]](_0x3f71x13);_0x3f71x2e[_0xad27[25]](_0x3f71x4a);var _0x3f71x3b=mxUtils[_0xad27[90]](mxResources[_0xad27[86]](_0xad27[142]),function(){_0x3f71x8[_0xad27[150]](_0x3f71x3[_0xad27[23]],_0x3f71x4c[_0xad27[23]]);_0x3f71x8[_0xad27[89]]()});_0x3f71x3b[_0xad27[31]]= _0xad27[113];var _0x3f71x3e=mxUtils[_0xad27[90]](mxResources[_0xad27[86]](_0xad27[114]),function(){_0x3f71x8[_0xad27[89]]()});_0x3f71x3e[_0xad27[31]]= _0xad27[115];_0x3f71x2f[_0xad27[25]](_0x3f71x3b);_0x3f71x2f[_0xad27[25]](_0x3f71x3e);_0x3f71x2c[_0xad27[25]](_0x3f71x2d);_0x3f71x2c[_0xad27[25]](_0x3f71x2e);_0x3f71x2c[_0xad27[25]](_0x3f71x2f);this[_0xad27[74]]= _0x3f71x2c}function OpenDialog(_0x3f71x8){var _0x3f71x2c=_0x3f71x8[_0xad27[60]](_0xad27[79]);var _0x3f71x2d=_0x3f71x8[_0xad27[60]](_0xad27[80]);var _0x3f71x2e=_0x3f71x8[_0xad27[60]](_0xad27[81]);var _0x3f71x2f=_0x3f71x8[_0xad27[60]](_0xad27[82]);var _0x3f71x30=_0x3f71x8[_0xad27[84]](_0xad27[83]);mxUtils[_0xad27[88]](_0x3f71x30,mxResources[_0xad27[86]](_0xad27[8]));var _0x3f71x31=mxUtils[_0xad27[90]](_0xad27[43],function(){_0x3f71x8[_0xad27[89]]()});_0x3f71x31[_0xad27[31]]= _0xad27[75];_0x3f71x2d[_0xad27[25]](_0x3f71x31);_0x3f71x2d[_0xad27[25]](_0x3f71x30);var _0x3f71x32=_0x3f71x8[_0xad27[60]](_0xad27[91]);var _0x3f71x33=_0x3f71x8[_0xad27[60]](_0xad27[136]);var _0x3f71x45=_0x3f71x8[_0xad27[60]](_0xad27[137]);var _0x3f71x46=document[_0xad27[2]](_0xad27[36]);_0x3f71x46[_0xad27[31]]= _0xad27[138];mxUtils[_0xad27[88]](_0x3f71x46,mxResources[_0xad27[86]](_0xad27[49]));_0x3f71x33[_0xad27[25]](_0x3f71x46);var _0x3f71xb= new XMLHttpRequest();_0x3f71xb[_0xad27[8]](_0xad27[7],_0xad27[154],false);_0x3f71xb[_0xad27[14]](_0xad27[9],_0xad27[10]+ _0x3f71x8[_0xad27[13]][_0xad27[12]][_0xad27[11]]);_0x3f71xb[_0xad27[15]](null);var _0x3f71xc=[];if(_0x3f71xb[_0xad27[16]]=== 200){_0x3f71xc= JSON[_0xad27[18]](_0x3f71xb[_0xad27[17]])};var _0x3f71x47=document[_0xad27[2]](_0xad27[19]);for(var _0x3f71x4e=0;_0x3f71x4e< _0x3f71xc[_0xad27[155]];_0x3f71x4e++){var _0x3f71xd=document[_0xad27[2]](_0xad27[20]);_0x3f71xd[_0xad27[21]]= _0x3f71xc[_0x3f71x4e][_0xad27[49]];_0x3f71xd[_0xad27[23]]= _0x3f71xc[_0x3f71x4e][_0xad27[48]];_0x3f71x47[_0xad27[25]](_0x3f71xd)};_0x3f71x47[_0xad27[31]]= _0xad27[140];_0x3f71x45[_0xad27[25]](_0x3f71x47);_0x3f71x32[_0xad27[25]](_0x3f71x33);_0x3f71x32[_0xad27[25]](_0x3f71x45);_0x3f71x2e[_0xad27[25]](_0x3f71x32);var _0x3f71x3b=mxUtils[_0xad27[90]](mxResources[_0xad27[86]](_0xad27[8]),function(){console[_0xad27[50]](_0x3f71x47);console[_0xad27[50]](_0x3f71x47[_0xad27[23]]);window[_0xad27[8]](_0xad27[156]+ _0x3f71x47[_0xad27[23]],_0xad27[131]);_0x3f71x8[_0xad27[89]]()});_0x3f71x3b[_0xad27[31]]= _0xad27[113];var _0x3f71x3e=mxUtils[_0xad27[90]](mxResources[_0xad27[86]](_0xad27[114]),function(){_0x3f71x8[_0xad27[89]]()});_0x3f71x3e[_0xad27[31]]= _0xad27[115];_0x3f71x2f[_0xad27[25]](_0x3f71x3b);_0x3f71x2f[_0xad27[25]](_0x3f71x3e);_0x3f71x2c[_0xad27[25]](_0x3f71x2d);_0x3f71x2c[_0xad27[25]](_0x3f71x2e);_0x3f71x2c[_0xad27[25]](_0x3f71x2f);this[_0xad27[74]]= _0x3f71x2c}function RenameDialog(_0x3f71x8){var _0x3f71x2c=_0x3f71x8[_0xad27[60]](_0xad27[79]);var _0x3f71x2d=_0x3f71x8[_0xad27[60]](_0xad27[80]);var _0x3f71x2e=_0x3f71x8[_0xad27[60]](_0xad27[81]);var _0x3f71x2f=_0x3f71x8[_0xad27[60]](_0xad27[82]);var _0x3f71x30=_0x3f71x8[_0xad27[84]](_0xad27[83]);mxUtils[_0xad27[88]](_0x3f71x30,mxResources[_0xad27[86]](_0xad27[157]));var _0x3f71x31=mxUtils[_0xad27[90]](_0xad27[43],function(){_0x3f71x8[_0xad27[89]]()});_0x3f71x31[_0xad27[31]]= _0xad27[75];_0x3f71x2d[_0xad27[25]](_0x3f71x31);_0x3f71x2d[_0xad27[25]](_0x3f71x30);var _0x3f71x32=_0x3f71x8[_0xad27[60]](_0xad27[91]);var _0x3f71x33=_0x3f71x8[_0xad27[60]](_0xad27[136]);var _0x3f71x45=_0x3f71x8[_0xad27[60]](_0xad27[137]);var _0x3f71x46=document[_0xad27[2]](_0xad27[36]);_0x3f71x46[_0xad27[31]]= _0xad27[138];mxUtils[_0xad27[88]](_0x3f71x46,mxResources[_0xad27[86]](_0xad27[49]));_0x3f71x33[_0xad27[25]](_0x3f71x46);var _0x3f71x43=_0x3f71x8[_0xad27[13]][_0xad27[158]];var _0x3f71x3=document[_0xad27[2]](_0xad27[1]);_0x3f71x3[_0xad27[5]](_0xad27[23],_0x3f71x43);_0x3f71x3[_0xad27[31]]= _0xad27[140];_0x3f71x45[_0xad27[25]](_0x3f71x3);_0x3f71x32[_0xad27[25]](_0x3f71x33);_0x3f71x32[_0xad27[25]](_0x3f71x45);_0x3f71x2e[_0xad27[25]](_0x3f71x32);var _0x3f71x3b=mxUtils[_0xad27[90]](mxResources[_0xad27[86]](_0xad27[141]),function(){var _0x3f71xb= new XMLHttpRequest();_0x3f71xb[_0xad27[8]](_0xad27[159],SAVE_URL+ _0x3f71x8[_0xad27[13]][_0xad27[12]][_0xad27[48]],true);_0x3f71xb[_0xad27[14]](_0xad27[160],_0xad27[161]);_0x3f71xb[_0xad27[14]](_0xad27[9],_0xad27[10]+ _0x3f71x8[_0xad27[13]][_0xad27[12]][_0xad27[11]]);_0x3f71xb[_0xad27[15]](_0xad27[162]+ _0x3f71x3[_0xad27[23]]);_0x3f71xb[_0xad27[104]]= function(_0x3f71x39){if(_0x3f71xb[_0xad27[16]]=== 200){_0x3f71x8[_0xad27[13]][_0xad27[164]](_0xad27[163]);_0x3f71x8[_0xad27[13]][_0xad27[158]]= _0x3f71x3[_0xad27[23]]}else {console[_0xad27[50]](_0x3f71xb[_0xad27[17]]);_0x3f71x8[_0xad27[13]][_0xad27[164]](JSON[_0xad27[18]](_0x3f71xb[_0xad27[17]])[_0xad27[166]][0][_0xad27[165]])}};_0x3f71xb[_0xad27[167]]= function(_0x3f71x39){mxUtils[_0xad27[169]](_0x3f71xb[_0xad27[168]])};_0x3f71x8[_0xad27[89]]()});_0x3f71x3b[_0xad27[31]]= _0xad27[113];var _0x3f71x3e=mxUtils[_0xad27[90]](mxResources[_0xad27[86]](_0xad27[114]),function(){_0x3f71x8[_0xad27[89]]()});_0x3f71x3e[_0xad27[31]]= _0xad27[115];_0x3f71x2f[_0xad27[25]](_0x3f71x3b);_0x3f71x2f[_0xad27[25]](_0x3f71x3e);_0x3f71x2c[_0xad27[25]](_0x3f71x2d);_0x3f71x2c[_0xad27[25]](_0x3f71x2e);_0x3f71x2c[_0xad27[25]](_0x3f71x2f);this[_0xad27[74]]= _0x3f71x2c}function EditFileDialog(_0x3f71x8){var _0x3f71x2c=_0x3f71x8[_0xad27[60]](_0xad27[79]);var _0x3f71x2d=_0x3f71x8[_0xad27[60]](_0xad27[80]);var _0x3f71x2e=_0x3f71x8[_0xad27[60]](_0xad27[81]);var _0x3f71x2f=_0x3f71x8[_0xad27[60]](_0xad27[82]);var _0x3f71x30=_0x3f71x8[_0xad27[84]](_0xad27[83]);mxUtils[_0xad27[88]](_0x3f71x30,mxResources[_0xad27[86]](_0xad27[170]));var _0x3f71x31=mxUtils[_0xad27[90]](_0xad27[43],function(){_0x3f71x8[_0xad27[89]]()});_0x3f71x31[_0xad27[31]]= _0xad27[75];_0x3f71x2d[_0xad27[25]](_0x3f71x31);_0x3f71x2d[_0xad27[25]](_0x3f71x30);var _0x3f71x32=_0x3f71x8[_0xad27[60]](_0xad27[91]);var _0x3f71x33=_0x3f71x8[_0xad27[60]](_0xad27[92]);var _0x3f71x34=document[_0xad27[2]](_0xad27[93]);_0x3f71x34[_0xad27[63]][_0xad27[94]]= _0xad27[95];_0x3f71x34[_0xad27[63]][_0xad27[96]]= _0xad27[97];_0x3f71x34[_0xad27[23]]= mxUtils[_0xad27[172]](_0x3f71x8[_0xad27[13]][_0xad27[171]]());if(fileSupport){function _0x3f71x51(_0x3f71x36){_0x3f71x36[_0xad27[173]]();_0x3f71x36[_0xad27[174]]();if(_0x3f71x36[_0xad27[175]][_0xad27[102]][_0xad27[155]]> 0){var _0x3f71x52=_0x3f71x36[_0xad27[175]][_0xad27[102]][0];var _0x3f71x53= new FileReader();_0x3f71x53[_0xad27[104]]= function(_0x3f71x39){_0x3f71x34[_0xad27[23]]= _0x3f71x39[_0xad27[103]][_0xad27[105]]};_0x3f71x53[_0xad27[106]](_0x3f71x52)}}function _0x3f71x54(_0x3f71x36){_0x3f71x36[_0xad27[173]]();_0x3f71x36[_0xad27[174]]()}_0x3f71x34[_0xad27[109]](_0xad27[176],_0x3f71x54,false);_0x3f71x34[_0xad27[109]](_0xad27[177],_0x3f71x51,false)};_0x3f71x33[_0xad27[25]](_0x3f71x34);_0x3f71x32[_0xad27[25]](_0x3f71x33);_0x3f71x2e[_0xad27[25]](_0x3f71x32);var _0x3f71x3b=mxUtils[_0xad27[90]](mxResources[_0xad27[86]](_0xad27[141]),function(){var _0x3f71x3d=mxUtils[_0xad27[110]](_0x3f71x34[_0xad27[23]]);_0x3f71x8[_0xad27[13]][_0xad27[111]](_0x3f71x3d[_0xad27[58]]);_0x3f71x8[_0xad27[89]]()});_0x3f71x3b[_0xad27[31]]= _0xad27[113];var _0x3f71x3e=mxUtils[_0xad27[90]](mxResources[_0xad27[86]](_0xad27[114]),function(){_0x3f71x8[_0xad27[89]]()});_0x3f71x3e[_0xad27[31]]= _0xad27[115];_0x3f71x2f[_0xad27[25]](_0x3f71x3b);_0x3f71x2f[_0xad27[25]](_0x3f71x3e);_0x3f71x2c[_0xad27[25]](_0x3f71x2d);_0x3f71x2c[_0xad27[25]](_0x3f71x2e);_0x3f71x2c[_0xad27[25]](_0x3f71x2f);this[_0xad27[74]]= _0x3f71x2c}function ExportDialog(_0x3f71x8){var _0x3f71x2c=_0x3f71x8[_0xad27[60]](_0xad27[79]);var _0x3f71x2d=_0x3f71x8[_0xad27[60]](_0xad27[80]);var _0x3f71x2e=_0x3f71x8[_0xad27[60]](_0xad27[178]);var _0x3f71x2f=_0x3f71x8[_0xad27[60]](_0xad27[82]);var _0x3f71x30=_0x3f71x8[_0xad27[84]](_0xad27[83]);mxUtils[_0xad27[88]](_0x3f71x30,mxResources[_0xad27[86]](_0xad27[179])+ _0xad27[87]);var _0x3f71x31=mxUtils[_0xad27[90]](_0xad27[43],function(){_0x3f71x8[_0xad27[89]]()});_0x3f71x31[_0xad27[31]]= _0xad27[75];_0x3f71x2d[_0xad27[25]](_0x3f71x31);_0x3f71x2d[_0xad27[25]](_0x3f71x30);var _0x3f71x4a=_0x3f71x8[_0xad27[60]](_0xad27[145]);var _0x3f71x13=_0x3f71x8[_0xad27[60]](_0xad27[153]);var _0x3f71x46=document[_0xad27[2]](_0xad27[36]);_0x3f71x46[_0xad27[31]]= _0xad27[147];mxUtils[_0xad27[88]](_0x3f71x46,mxResources[_0xad27[86]](_0xad27[158]));var _0x3f71x3=document[_0xad27[2]](_0xad27[1]);_0x3f71x3[_0xad27[5]](_0xad27[23],_0x3f71x8[_0xad27[13]][_0xad27[135]]());_0x3f71x3[_0xad27[31]]= _0xad27[140];var _0x3f71x29=_0x3f71x8[_0xad27[60]](_0xad27[148]);_0x3f71x29[_0xad27[25]](_0x3f71x3);_0x3f71x13[_0xad27[25]](_0x3f71x46);_0x3f71x13[_0xad27[25]](_0x3f71x29);_0x3f71x4a[_0xad27[25]](_0x3f71x13);_0x3f71x2e[_0xad27[25]](_0x3f71x4a);var _0x3f71x3b=mxUtils[_0xad27[90]](mxResources[_0xad27[86]](_0xad27[179]),mxUtils[_0xad27[112]](this,function(_0x3f71x3c){_0x3f71x8[_0xad27[141]](false);var _0x3f71x56=encodeURIComponent(mxUtils[_0xad27[180]](_0x3f71x8[_0xad27[13]][_0xad27[171]]())); new mxXmlRequest(SAVE_URL+ _0x3f71x8[_0xad27[13]][_0xad27[12]][_0xad27[48]]+ _0xad27[182],_0xad27[183]+ _0x3f71x3[_0xad27[23]],_0xad27[7])[_0xad27[181]](document,_0xad27[131]);_0x3f71x8[_0xad27[89]]()}));_0x3f71x3b[_0xad27[31]]= _0xad27[113];var _0x3f71x3e=mxUtils[_0xad27[90]](mxResources[_0xad27[86]](_0xad27[114]),function(){_0x3f71x8[_0xad27[89]]()});_0x3f71x3e[_0xad27[31]]= _0xad27[115];_0x3f71x2f[_0xad27[25]](_0x3f71x3b);_0x3f71x2f[_0xad27[25]](_0x3f71x3e);_0x3f71x2c[_0xad27[25]](_0x3f71x2d);_0x3f71x2c[_0xad27[25]](_0x3f71x2e);_0x3f71x2c[_0xad27[25]](_0x3f71x2f);this[_0xad27[74]]= _0x3f71x2c}function GeneralDialog(_0x3f71x8,_0x3f71x58){var _0x3f71x59=_0x3f71x8[_0xad27[13]][_0xad27[184]];var _0x3f71x2c=_0x3f71x8[_0xad27[60]](_0xad27[79]);var _0x3f71x2d=_0x3f71x8[_0xad27[60]](_0xad27[80]);var _0x3f71x2e=_0x3f71x8[_0xad27[60]](_0xad27[185]);var _0x3f71x2f=_0x3f71x8[_0xad27[60]](_0xad27[82]);var _0x3f71x30=_0x3f71x8[_0xad27[84]](_0xad27[83]);mxUtils[_0xad27[88]](_0x3f71x30,mxResources[_0xad27[86]](_0xad27[170])+ _0xad27[186]+ mxResources[_0xad27[86]](_0x3f71x58[_0xad27[23]][_0xad27[187]]));var _0x3f71x31=mxUtils[_0xad27[90]](_0xad27[43],function(){_0x3f71x8[_0xad27[89]]()});_0x3f71x31[_0xad27[31]]= _0xad27[75];_0x3f71x2d[_0xad27[25]](_0x3f71x31);_0x3f71x2d[_0xad27[25]](_0x3f71x30);var _0x3f71x5a=_0x3f71x58[_0xad27[23]][_0xad27[188]][_0xad27[155]];var _0x3f71x4a=_0x3f71x8[_0xad27[60]](_0xad27[145]);for(var _0x3f71x5b=0;_0x3f71x5b< _0x3f71x5a;_0x3f71x5b++){var _0x3f71x43=_0x3f71x58[_0xad27[23]][_0xad27[188]][_0x3f71x5b][_0xad27[49]];var _0x3f71x44=_0xad27[134]+ _0x3f71x43;var _0x3f71x2=_0x3f71x58[_0xad27[23]][_0xad27[188]][_0x3f71x5b][_0xad27[23]];var _0x3f71x13=_0x3f71x8[_0xad27[60]]((_0x3f71x5b== _0x3f71x5a- 1)?_0xad27[153]:_0xad27[146]);var _0x3f71x46=document[_0xad27[2]](_0xad27[36]);_0x3f71x46[_0xad27[31]]= _0xad27[147];mxUtils[_0xad27[88]](_0x3f71x46,mxResources[_0xad27[86]](_0x3f71x43));_0x3f71x13[_0xad27[25]](_0x3f71x46);var _0x3f71x3;switch(_0x3f71x43){case _0xad27[192]:_0x3f71x3= createDropdownWithOptgroupFromApi(_0xad27[189],_0x3f71x2,_0xad27[190],_0xad27[48],_0x3f71x8,_0xad27[191]);break;case _0xad27[194]:_0x3f71x3= createDropdownFromApi(_0xad27[193],_0x3f71x2,_0xad27[49],_0xad27[49],_0x3f71x8);break;case _0xad27[196]:_0x3f71x3= createDropdownFromApi(_0xad27[195],_0x3f71x2,_0xad27[49],_0xad27[49],_0x3f71x8);break;case _0xad27[198]:_0x3f71x3= createDropdownFromApi(_0xad27[197],_0x3f71x2,_0xad27[49],_0xad27[48],_0x3f71x8);break;case _0xad27[203]:if(_0x3f71x58[_0xad27[23]][_0xad27[187]]== _0xad27[199]){_0x3f71x3= createDropdownFromApi(_0xad27[200],_0x3f71x2,_0xad27[201],_0xad27[48],_0x3f71x8)}else {_0x3f71x3= createDropdownFromApi(_0xad27[202],_0x3f71x2,_0xad27[49],_0xad27[48],_0x3f71x8)};break;case _0xad27[205]:_0x3f71x3= createDropdownFromApi(_0xad27[204],_0x3f71x2,_0xad27[49],_0xad27[48],_0x3f71x8);break;case _0xad27[207]:_0x3f71x3= createDropdownFromApi(_0xad27[206],_0x3f71x2,_0xad27[49],_0xad27[49],_0x3f71x8);break;case _0xad27[209]:_0x3f71x3= createDropdownFromApi(_0xad27[208],_0x3f71x2,_0xad27[209],_0xad27[48],_0x3f71x8,[_0xad27[209],_0xad27[207]],_0xad27[210]);break;case _0xad27[211]:_0x3f71x3= createDropdownFromArray(ISPEECHASRMODEL,_0x3f71x2);break;case _0xad27[212]:_0x3f71x3= createDropdownFromArray(ISPEECHASRLANG,_0x3f71x2);break;case _0xad27[213]:_0x3f71x3= createDropdownFromArray(ISPEECHBEEP,_0x3f71x2);break;case _0xad27[214]:_0x3f71x3= createDropdownFromArray(SECRETDIGITSPOS,_0x3f71x2);break;case _0xad27[215]:_0x3f71x3= createDropdownFromArray(ISPEECHLANG,_0x3f71x2);break;case _0xad27[216]:_0x3f71x3= createDropdownFromArray(GOOGLETTSLANG,_0x3f71x2);break;case _0xad27[217]:_0x3f71x3= createDropdownFromArray(ASRINTKEYS,_0x3f71x2);break;case _0xad27[218]:_0x3f71x3= createDropdownFromArray(RECORDINGFORMAT,_0x3f71x2);break;case _0xad27[219]:_0x3f71x3= createDropdownFromArray(BOOLSELECT,_0x3f71x2);break;case _0xad27[220]:_0x3f71x3= createDropdownFromTigerDialList(_0x3f71x2);break;case _0xad27[223]:_0x3f71x3= createGroupedDropdownFromApi(_0xad27[221],_0x3f71x2,_0xad27[49],_0xad27[48],_0x3f71x8,_0xad27[222]);break;case _0xad27[224]:_0x3f71x3= createDropdownFromApi(_0xad27[154],_0x3f71x2,_0xad27[49],_0xad27[48],_0x3f71x8);break;case _0xad27[226]:_0x3f71x3= createDropdownFromApi(_0xad27[225],_0x3f71x2,_0xad27[49],_0xad27[48],_0x3f71x8);break;case _0xad27[229]:_0x3f71x3= createDropdownFromApi(_0xad27[227],_0x3f71x2,_0xad27[228],_0xad27[48],_0x3f71x8);break;case _0xad27[230]:;case _0xad27[231]:;case _0xad27[232]:;case _0xad27[233]:;case _0xad27[17]:;case _0xad27[234]:;case _0xad27[237]:_0x3f71x3= document[_0xad27[2]](_0xad27[1]);_0x3f71x3[_0xad27[5]](_0xad27[3],_0xad27[235]);_0x3f71x3[_0xad27[5]](_0xad27[236],0);_0x3f71x3[_0xad27[5]](_0xad27[56],1000);_0x3f71x3[_0xad27[5]](_0xad27[23],_0x3f71x2);_0x3f71x3[_0xad27[31]]= _0xad27[140];break;case _0xad27[21]:;case _0xad27[238]:;case _0xad27[239]:;case _0xad27[240]:;case _0xad27[241]:;case _0xad27[54]:_0x3f71x3= document[_0xad27[2]](_0xad27[93]);_0x3f71x3[_0xad27[242]]= _0x3f71x2;_0x3f71x3[_0xad27[31]]= _0xad27[140];break;case _0xad27[245]:_0x3f71x3= document[_0xad27[2]](_0xad27[93]);_0x3f71x3[_0xad27[242]]= _0x3f71x2;_0x3f71x3[_0xad27[31]]= _0xad27[140];_0x3f71x3[_0xad27[5]](_0xad27[243],_0xad27[244]);break;default:_0x3f71x3= document[_0xad27[2]](_0xad27[1]);_0x3f71x3[_0xad27[5]](_0xad27[23],_0x3f71x2);_0x3f71x3[_0xad27[31]]= _0xad27[140];break};_0x3f71x3[_0xad27[5]](_0xad27[48],_0x3f71x44);var _0x3f71x29=_0x3f71x8[_0xad27[60]](_0xad27[148]);_0x3f71x29[_0xad27[25]](_0x3f71x3);if(mxResources[_0xad27[86]](_0xad27[246]+ _0x3f71x43)){var _0x3f71x5c=_0x3f71x8[_0xad27[60]](_0xad27[247]);_0x3f71x5c[_0xad27[31]]= _0xad27[248];mxUtils[_0xad27[88]](_0x3f71x5c,mxResources[_0xad27[86]](_0xad27[246]+ _0x3f71x43));_0x3f71x29[_0xad27[25]](_0x3f71x5c)};_0x3f71x13[_0xad27[25]](_0x3f71x29);_0x3f71x4a[_0xad27[25]](_0x3f71x13)};_0x3f71x2e[_0xad27[25]](_0x3f71x4a);var _0x3f71x3b=mxUtils[_0xad27[90]](mxResources[_0xad27[86]](_0xad27[141]),mxUtils[_0xad27[112]](this,function(_0x3f71x3c){for(var _0x3f71x5b=0;_0x3f71x5b< _0x3f71x58[_0xad27[23]][_0xad27[188]][_0xad27[155]];_0x3f71x5b++){var _0x3f71x44=_0xad27[134]+ _0x3f71x58[_0xad27[23]][_0xad27[188]][_0x3f71x5b][_0xad27[49]];var _0x3f71x43=_0x3f71x58[_0xad27[23]][_0xad27[188]][_0x3f71x5b][_0xad27[49]];_0x3f71x58[_0xad27[5]](_0x3f71x43,document[_0xad27[249]](_0x3f71x44)[_0xad27[23]])};_0x3f71x59[_0xad27[250]](_0x3f71x58);_0x3f71x8[_0xad27[89]]()}));_0x3f71x3b[_0xad27[31]]= _0xad27[113];var _0x3f71x3e=mxUtils[_0xad27[90]](mxResources[_0xad27[86]](_0xad27[114]),function(){_0x3f71x8[_0xad27[89]]()});_0x3f71x3e[_0xad27[31]]= _0xad27[115];_0x3f71x2f[_0xad27[25]](_0x3f71x3b);_0x3f71x2f[_0xad27[25]](_0x3f71x3e);_0x3f71x2c[_0xad27[25]](_0x3f71x2d);_0x3f71x2c[_0xad27[25]](_0x3f71x2e);_0x3f71x2c[_0xad27[25]](_0x3f71x2f);this[_0xad27[74]]= _0x3f71x2c} \ No newline at end of file diff --git a/public/assets/plugins/square/js/Editor.js b/public/assets/plugins/square/js/Editor.js index 9858989..0435d8b 100644 --- a/public/assets/plugins/square/js/Editor.js +++ b/public/assets/plugins/square/js/Editor.js @@ -1,888 +1 @@ -/** - * $Id: Editor.js,v 1.14 2013/03/06 17:57:10 boris Exp $ - * Copyright (c) 2006-2012, JGraph Ltd - */ -// Specifies if local storage should be used (eg. on the iPad which has no filesystem) -var useLocalStorage = (mxClient.IS_TOUCH || urlParams['storage'] == 'local') && typeof(localStorage) != 'undefined'; -var fileSupport = window.File != null && window.FileReader != null && window.FileList != null; - -// Specifies if connector should be shown on selected cells -var touchStyle = mxClient.IS_TOUCH || urlParams['touch'] == '1'; - -// Counts open editor tabs (must be global for cross-window access) -var counter = 0; - -// Cross-domain window access is not allowed in FF, so if we -// were opened from another domain then this will fail. -try { - var op = window; - - while (op.opener != null && !isNaN(op.opener.counter)) { - op = op.opener; - } - - // Increments the counter in the first opener in the chain - if (op != null) { - op.counter++; - counter = op.counter; - } -} catch (e) { - // ignore -} - -/** - * Editor constructor executed on page load. - */ -Editor = function() { - mxEventSource.call(this); - this.init(); - this.initStencilRegistry(); - this.graph = new Graph(); - this.outline = new mxOutline(this.graph); - this.outline.updateOnPan = true; - this.undoManager = this.createUndoManager(); - this.status = ''; - - // Contains the name which was used for the last save. Default value is null. - this.filename = null; - - this.getOrCreateFilename = function() { - return this.filename || mxResources.get('drawing', [counter]) + '.xml'; - }; - - this.getFilename = function() { - return this.filename; - }; - - // Sets the status and fires a statusChanged event - this.setStatus = function(value) { - this.status = value; - this.fireEvent(new mxEventObject('statusChanged')); - }; - - // Returns the current status - this.getStatus = function() { - return this.status; - }; - - // Contains the current modified state of the diagram. This is false for - // new diagrams and after the diagram was saved. - this.modified = false; - - // Updates modified state if graph changes - this.graphChangeListener = function() { - this.modified = true; - }; - this.graph.getModel().addListener(mxEvent.CHANGE, mxUtils.bind(this, function() { - this.graphChangeListener.apply(this, arguments); - })); - - // Installs dialog if browser window is closed without saving - // This must be disabled during save and image export - window.onbeforeunload = mxUtils.bind(this, function() { - if (this.modified) { - return mxResources.get('allChangesLost'); - } - }); - - // Sets persistent graph state defaults - this.graph.resetViewOnRootChange = false; - this.graph.scrollbars = true; - this.graph.background = null; -}; - -// Editor inherits from mxEventSource -mxUtils.extend(Editor, mxEventSource); - -/** - * Specifies the image URL to be used for the grid. - */ -Editor.prototype.gridImage = IMAGE_PATH + '/grid.gif'; - -/** - * Specifies the image URL to be used for the transparent background. - */ -Editor.prototype.transparentImage = IMAGE_PATH + '/transparent.gif'; - -/** - * Sets the XML node for the current diagram. - */ -Editor.prototype.setGraphXml = function(node) { - var dec = new mxCodec(node.ownerDocument); - - if (node.nodeName == 'mxGraphModel') { - this.graph.view.scale = 1; - this.graph.gridEnabled = node.getAttribute('grid') != '0'; - this.graph.graphHandler.guidesEnabled = node.getAttribute('guides') != '0'; - this.graph.setTooltips(node.getAttribute('tooltips') != '0'); - this.graph.setConnectable(node.getAttribute('connect') != '0'); - this.graph.foldingEnabled = node.getAttribute('fold') != '0'; - this.graph.scrollbars = node.getAttribute('scrollbars') != '0'; - - if (!this.graph.scrollbars) { - this.graph.container.scrollLeft = 0; - this.graph.container.scrollTop = 0; - this.graph.view.translate.x = Number(node.getAttribute('dx') || 0); - this.graph.view.translate.y = Number(node.getAttribute('dy') || 0); - } - - this.graph.pageVisible = node.getAttribute('page') == '1'; - this.graph.pageBreaksVisible = this.graph.pageVisible; - this.graph.preferPageSize = this.graph.pageBreaksVisible; - - // Loads the persistent state settings - var ps = node.getAttribute('pageScale'); - - if (ps != null) { - this.graph.pageScale = ps; - } else { - this.graph.pageScale = 1.5; - } - - var pw = node.getAttribute('pageWidth'); - var ph = node.getAttribute('pageHeight'); - - if (pw != null && ph != null) { - this.graph.pageFormat = new mxRectangle(0, 0, parseFloat(pw), parseFloat(ph)); - this.outline.outline.pageFormat = this.graph.pageFormat; - } - - // Loads the persistent state settings - var bg = node.getAttribute('background'); - - if (bg != null && bg.length > 0) { - this.graph.background = bg; - } - - dec.decode(node, this.graph.getModel()); - this.updateGraphComponents(); - } -}; - -/** - * Returns the XML node that represents the current diagram. - */ -Editor.prototype.getGraphXml = function() { - var enc = new mxCodec(mxUtils.createXmlDocument()); - var node = enc.encode(this.graph.getModel()); - - if (this.graph.view.translate.x != 0 || this.graph.view.translate.y != 0) { - node.setAttribute('dx', Math.round(this.graph.view.translate.x * 100) / 100); - node.setAttribute('dy', Math.round(this.graph.view.translate.y * 100) / 100); - } - - node.setAttribute('grid', (this.graph.isGridEnabled()) ? '1' : '0'); - node.setAttribute('guides', (this.graph.graphHandler.guidesEnabled) ? '1' : '0'); - node.setAttribute('guides', (this.graph.graphHandler.guidesEnabled) ? '1' : '0'); - node.setAttribute('tooltips', (this.graph.tooltipHandler.isEnabled()) ? '1' : '0'); - node.setAttribute('connect', (this.graph.connectionHandler.isEnabled()) ? '1' : '0'); - node.setAttribute('fold', (this.graph.foldingEnabled) ? '1' : '0'); - node.setAttribute('page', (this.graph.pageVisible) ? '1' : '0'); - node.setAttribute('pageScale', this.graph.pageScale); - node.setAttribute('pageWidth', this.graph.pageFormat.width); - node.setAttribute('pageHeight', this.graph.pageFormat.height); - - if (!this.graph.scrollbars) { - node.setAttribute('scrollbars', '0'); - } - - if (this.graph.background != null) { - node.setAttribute('background', this.graph.background); - } - - return node; -}; - -/** - * Keeps the graph container in sync with the persistent graph state - */ -Editor.prototype.updateGraphComponents = function() { - var graph = this.graph; - var outline = this.outline; - - if (graph.container != null && outline.outline.container != null) { - if (graph.background != null) { - if (graph.background == 'none') { - graph.container.style.backgroundColor = 'transparent'; - } else { - if (graph.view.backgroundPageShape != null) { - graph.view.backgroundPageShape.fill = graph.background; - graph.view.backgroundPageShape.reconfigure(); - } - - graph.container.style.backgroundColor = graph.background; - } - } else { - graph.container.style.backgroundColor = ''; - } - - if (graph.pageVisible) { - graph.container.style.backgroundColor = '#ebebeb'; - graph.container.style.borderStyle = 'solid'; - graph.container.style.borderColor = '#e5e5e5'; - graph.container.style.borderTopWidth = '1px'; - graph.container.style.borderLeftWidth = '1px'; - graph.container.style.borderRightWidth = '0px'; - graph.container.style.borderBottomWidth = '0px'; - } else { - graph.container.style.border = ''; - } - - outline.outline.container.style.backgroundColor = graph.container.style.backgroundColor; - - if (outline.outline.pageVisible != graph.pageVisible || - outline.outline.pageScale != graph.pageScale) { - outline.outline.pageScale = graph.pageScale; - outline.outline.pageVisible = graph.pageVisible; - outline.outline.view.validate(); - } - - if (graph.scrollbars && graph.container.style.overflow == 'hidden' && !touchStyle) { - graph.container.style.overflow = 'auto'; - } else if (!graph.scrollbars || touchStyle) { - graph.container.style.overflow = 'hidden'; - } - - // Transparent.gif is a workaround for focus repaint problems in IE - var noBackground = (mxClient.IS_IE && document.documentMode >= 9) ? 'url(' + this.transparentImage + ')' : 'none'; - graph.container.style.backgroundImage = (!graph.pageVisible && graph.isGridEnabled()) ? 'url(' + this.gridImage + ')' : noBackground; - - if (graph.view.backgroundPageShape != null) { - graph.view.backgroundPageShape.node.style.backgroundImage = (this.graph.isGridEnabled()) ? 'url(' + this.gridImage + ')' : 'none'; - } - } -}; - -/** - * Initializes the environment. - */ -Editor.prototype.init = function() { - // Adds stylesheet for IE6 - if (mxClient.IS_IE6) { - mxClient.link('stylesheet', CSS_PATH + '/grapheditor-ie6.css'); - } - - // Adds required resources (disables loading of fallback properties, this can only - // be used if we know that all keys are defined in the language specific file) - mxResources.loadDefaultBundle = false; - mxResources.add(RESOURCE_BASE); - - // Makes the connection hotspot smaller - mxConstants.DEFAULT_HOTSPOT = 0.3; - - var mxConnectionHandlerCreateMarker = mxConnectionHandler.prototype.createMarker; - mxConnectionHandler.prototype.createMarker = function() { - var marker = mxConnectionHandlerCreateMarker.apply(this, arguments); - - // Overrides to ignore hotspot only for target terminal - marker.intersects = mxUtils.bind(this, function(state, evt) { - if (this.isConnecting()) { - return true; - } - - return mxCellMarker.prototype.intersects.apply(marker, arguments); - }); - - return marker; - }; - - // Makes the shadow brighter - mxConstants.SHADOWCOLOR = '#d0d0d0'; - - // Changes some default colors - 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; - - // Increases default rubberband opacity (default is 20) - mxRubberband.prototype.defaultOpacity = 30; - - // Changes border color of background page shape - mxGraphView.prototype.createBackgroundPageShape = function(bounds) { - return new mxRectangleShape(bounds, this.graph.background || 'white', '#cacaca'); - }; - - // Fits the number of background pages to the graph - mxGraphView.prototype.getBackgroundPageBounds = function() { - var gb = this.getGraphBounds(); - - // Computes unscaled, untranslated graph bounds - var x = (gb.width > 0) ? gb.x / this.scale - this.translate.x : 0; - var y = (gb.height > 0) ? gb.y / this.scale - this.translate.y : 0; - var w = gb.width / this.scale; - var h = gb.height / this.scale; - - var fmt = this.graph.pageFormat; - var ps = this.graph.pageScale; - - var pw = fmt.width * ps; - var ph = fmt.height * ps; - - var x0 = Math.floor(Math.min(0, x) / pw); - var y0 = Math.floor(Math.min(0, y) / ph); - var xe = Math.ceil(Math.max(1, x + w) / pw); - var ye = Math.ceil(Math.max(1, y + h) / ph); - - var rows = xe - x0; - var cols = ye - y0; - - var bounds = new mxRectangle(this.scale * (this.translate.x + x0 * pw), this.scale * - (this.translate.y + y0 * ph), this.scale * rows * pw, this.scale * cols * ph); - - return bounds; - }; - - // Add panning for background page in VML - var graphPanGraph = mxGraph.prototype.panGraph; - mxGraph.prototype.panGraph = function(dx, dy) { - graphPanGraph.apply(this, arguments); - - if ((this.dialect != mxConstants.DIALECT_SVG && this.view.backgroundPageShape != null) && - (!this.useScrollbarsForPanning || !mxUtils.hasScrollbars(this.container))) { - this.view.backgroundPageShape.node.style.marginLeft = dx + 'px'; - this.view.backgroundPageShape.node.style.marginTop = dy + 'px'; - } - }; - - var editor = this; - - // Uses HTML for background pages (to support grid background image) - mxGraphView.prototype.validateBackground = function() { - var bg = this.graph.getBackgroundImage(); - - if (bg != null) { - if (this.backgroundImage == null || this.backgroundImage.image != bg.src) { - if (this.backgroundImage != null) { - this.backgroundImage.destroy(); - } - - var bounds = new mxRectangle(0, 0, 1, 1); - - this.backgroundImage = new mxImageShape(bounds, bg.src); - this.backgroundImage.dialect = this.graph.dialect; - this.backgroundImage.init(this.backgroundPane); - this.backgroundImage.redraw(); - } - - this.redrawBackgroundImage(this.backgroundImage, bg); - } else if (this.backgroundImage != null) { - this.backgroundImage.destroy(); - this.backgroundImage = null; - } - - if (this.graph.pageVisible) { - var bounds = this.getBackgroundPageBounds(); - - if (this.backgroundPageShape == null) { - this.backgroundPageShape = this.createBackgroundPageShape(bounds); - this.backgroundPageShape.scale = 1; - this.backgroundPageShape.isShadow = true; - this.backgroundPageShape.dialect = mxConstants.DIALECT_STRICTHTML; - this.backgroundPageShape.init(this.graph.container); - // Required for the browser to render the background page in correct order - 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'; - - // Adds listener for double click handling on background - mxEvent.addListener(this.backgroundPageShape.node, 'dblclick', - mxUtils.bind(this, function(evt) { - this.graph.dblClick(evt); - }) - ); - - // Adds basic listeners for graph event dispatching outside of the - // container and finishing the handling of a single gesture - mxEvent.addGestureListeners(this.backgroundPageShape.node, - mxUtils.bind(this, function(evt) { - this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN, new mxMouseEvent(evt)); - }), - mxUtils.bind(this, function(evt) { - // Hides the tooltip if mouse is outside container - if (this.graph.tooltipHandler != null && - this.graph.tooltipHandler.isHideOnHover()) { - this.graph.tooltipHandler.hide(); - } - - if (this.graph.isMouseDown && - !mxEvent.isConsumed(evt)) { - this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE, - new mxMouseEvent(evt)); - } - }), - mxUtils.bind(this, function(evt) { - this.graph.fireMouseEvent(mxEvent.MOUSE_UP, - new mxMouseEvent(evt)); - })); - } else { - this.backgroundPageShape.scale = 1; - this.backgroundPageShape.bounds = bounds; - this.backgroundPageShape.redraw(); - } - - this.backgroundPageShape.node.style.backgroundImage = (this.graph.isGridEnabled()) ? - 'url(' + editor.gridImage + ')' : 'none'; - } else if (this.backgroundPageShape != null) { - this.backgroundPageShape.destroy(); - this.backgroundPageShape = null; - } - }; - - // Draws page breaks only within the page - mxGraph.prototype.updatePageBreaks = function(visible, width, height) { - var scale = this.view.scale; - var tr = this.view.translate; - var fmt = this.pageFormat; - var ps = scale * this.pageScale; - - var bounds2 = this.view.getBackgroundPageBounds(); - - width = bounds2.width; - height = bounds2.height; - var bounds = new mxRectangle(scale * tr.x, scale * tr.y, - fmt.width * ps, fmt.height * ps); - - // Does not show page breaks if the scale is too small - visible = visible && Math.min(bounds.width, bounds.height) > this.minPageBreakDist; - - var horizontalCount = (visible) ? Math.ceil(width / bounds.width) - 1 : 0; - var verticalCount = (visible) ? Math.ceil(height / bounds.height) - 1 : 0; - var right = bounds2.x + width; - var bottom = bounds2.y + height; - - if (this.horizontalPageBreaks == null && horizontalCount > 0) { - this.horizontalPageBreaks = []; - } - - if (this.horizontalPageBreaks != null) { - for (var i = 0; i <= horizontalCount; i++) { - var pts = [new mxPoint(bounds2.x + (i + 1) * bounds.width, bounds2.y), - new mxPoint(bounds2.x + (i + 1) * bounds.width, bottom) - ]; - - if (this.horizontalPageBreaks[i] != null) { - this.horizontalPageBreaks[i].scale = 1; - this.horizontalPageBreaks[i].points = pts; - this.horizontalPageBreaks[i].redraw(); - } else { - var pageBreak = new mxPolyline(pts, this.pageBreakColor, this.scale); - pageBreak.dialect = this.dialect; - pageBreak.isDashed = this.pageBreakDashed; - pageBreak.addPipe = false; - pageBreak.scale = scale; - pageBreak.init(this.view.backgroundPane); - pageBreak.redraw(); - - this.horizontalPageBreaks[i] = pageBreak; - } - } - - for (var i = horizontalCount; i < this.horizontalPageBreaks.length; i++) { - this.horizontalPageBreaks[i].destroy(); - } - - this.horizontalPageBreaks.splice(horizontalCount, this.horizontalPageBreaks.length - horizontalCount); - } - - if (this.verticalPageBreaks == null && verticalCount > 0) { - this.verticalPageBreaks = []; - } - - if (this.verticalPageBreaks != null) { - for (var i = 0; i <= verticalCount; i++) { - var pts = [new mxPoint(bounds2.x, bounds2.y + (i + 1) * bounds.height), - new mxPoint(right, bounds2.y + (i + 1) * bounds.height) - ]; - - if (this.verticalPageBreaks[i] != null) { - this.verticalPageBreaks[i].scale = 1; //scale; - this.verticalPageBreaks[i].points = pts; - this.verticalPageBreaks[i].redraw(); - } else { - var pageBreak = new mxPolyline(pts, this.pageBreakColor, scale); - pageBreak.dialect = this.dialect; - pageBreak.isDashed = this.pageBreakDashed; - pageBreak.addPipe = false; - pageBreak.scale = scale; - pageBreak.init(this.view.backgroundPane); - pageBreak.redraw(); - - this.verticalPageBreaks[i] = pageBreak; - } - } - - for (var i = verticalCount; i < this.verticalPageBreaks.length; i++) { - this.verticalPageBreaks[i].destroy(); - } - - this.verticalPageBreaks.splice(verticalCount, this.verticalPageBreaks.length - verticalCount); - } - }; - - // Enables snapping to off-grid terminals for edge waypoints - mxEdgeHandler.prototype.snapToTerminals = true; - - // Enables guides - mxGraphHandler.prototype.guidesEnabled = true; - - // Disables removing relative children from parents - var mxGraphHandlerShouldRemoveCellsFromParent = mxGraphHandler.prototype.shouldRemoveCellsFromParent; - mxGraphHandler.prototype.shouldRemoveCellsFromParent = function(parent, cells, evt) { - for (var i = 0; i < cells.length; i++) { - if (this.graph.getModel().isVertex(cells[i])) { - var geo = this.graph.getCellGeometry(cells[i]); - - if (geo != null && geo.relative) { - return false; - } - } - } - - return mxGraphHandlerShouldRemoveCellsFromParent.apply(this, arguments); - }; - - // Alt-move disables guides - mxGuide.prototype.isEnabledForEvent = function(evt) { - return !mxEvent.isAltDown(evt); - }; - - // Consumes click events for disabled menu items - mxPopupMenuAddItem = mxPopupMenu.prototype.addItem; - mxPopupMenu.prototype.addItem = function(title, image, funct, parent, iconCls, enabled) { - var result = mxPopupMenuAddItem.apply(this, arguments); - - if (enabled != null && !enabled) { - mxEvent.addListener(result, 'mousedown', function(evt) { - mxEvent.consume(evt); - }); - } - - return result; - }; - - // Selects descendants before children selection mode - var graphHandlerGetInitialCellForEvent = mxGraphHandler.prototype.getInitialCellForEvent; - mxGraphHandler.prototype.getInitialCellForEvent = function(me) { - var model = this.graph.getModel(); - var psel = model.getParent(this.graph.getSelectionCell()); - var cell = graphHandlerGetInitialCellForEvent.apply(this, arguments); - var parent = model.getParent(cell); - - if (psel == null || (psel != cell && psel != parent)) { - while (!this.graph.isCellSelected(cell) && !this.graph.isCellSelected(parent) && - model.isVertex(parent) && !this.graph.isValidRoot(parent)) { - cell = parent; - parent = this.graph.getModel().getParent(cell); - } - } - - return cell; - }; - - // Selection is delayed to mouseup if child selected - var graphHandlerIsDelayedSelection = mxGraphHandler.prototype.isDelayedSelection; - mxGraphHandler.prototype.isDelayedSelection = function(cell) { - var result = graphHandlerIsDelayedSelection.apply(this, arguments); - var model = this.graph.getModel(); - var psel = model.getParent(this.graph.getSelectionCell()); - var parent = model.getParent(cell); - - if (psel == null || (psel != cell && psel != parent)) { - if (!this.graph.isCellSelected(cell) && model.isVertex(parent) && !this.graph.isValidRoot(parent)) { - result = true; - } - } - - return result; - }; - - // Delayed selection of parent group - mxGraphHandler.prototype.selectDelayed = function(me) { - var cell = me.getCell(); - - if (cell == null) { - cell = this.cell; - } - - var model = this.graph.getModel(); - var parent = model.getParent(cell); - - while (this.graph.isCellSelected(cell) && model.isVertex(parent) && !this.graph.isValidRoot(parent)) { - cell = parent; - parent = model.getParent(cell); - } - - this.graph.selectCellForEvent(cell, me.getEvent()); - }; - - // Returns last selected ancestor - mxPanningHandler.prototype.getCellForPopupEvent = function(me) { - var cell = me.getCell(); - var model = this.graph.getModel(); - var parent = model.getParent(cell); - - while (model.isVertex(parent) && !this.graph.isValidRoot(parent)) { - if (this.graph.isCellSelected(parent)) { - cell = parent; - } - - parent = model.getParent(parent); - } - - return cell; - }; -}; - -/** - * Creates and returns a new undo manager. - */ -Editor.prototype.createUndoManager = function() { - var graph = this.graph; - var undoMgr = new mxUndoManager(); - - // Installs the command history - var listener = function(sender, evt) { - undoMgr.undoableEditHappened(evt.getProperty('edit')); - }; - - graph.getModel().addListener(mxEvent.UNDO, listener); - graph.getView().addListener(mxEvent.UNDO, listener); - - // Keeps the selection in sync with the history - var undoHandler = function(sender, evt) { - var cand = graph.getSelectionCellsForChanges(evt.getProperty('edit').changes); - var cells = []; - - for (var i = 1; i < cand.length; i++) { - if (graph.view.getState(cand[i]) != null) { - cells.push(cand[i]); - } - } - - graph.setSelectionCells(cells); - }; - - undoMgr.addListener(mxEvent.UNDO, undoHandler); - undoMgr.addListener(mxEvent.REDO, undoHandler); - - return undoMgr; -}; - -/** - * Adds basic stencil set (no namespace). - */ -Editor.prototype.initStencilRegistry = function() { - // Loads default stencils - mxStencilRegistry.loadStencilSet(STENCIL_PATH + '/general.xml'); -}; - -/** - * Overrides stencil registry for dynamic loading of stencils. - */ -(function() { - /** - * Maps from library names to an array of Javascript filenames, - * which are synchronously loaded. Currently only stencil files - * (.xml) and JS files (.js) are supported. - * IMPORTANT: For embedded diagrams to work entries must also - * be added in EmbedServlet.java. - */ - mxStencilRegistry.libraries = {}; - - /** - * Stores all package names that have been dynamically loaded. - * Each package is only loaded once. - */ - mxStencilRegistry.packages = []; - - // Extends the default stencil registry to add dynamic loading - mxStencilRegistry.getStencil = function(name) { - var result = mxStencilRegistry.stencils[name]; - - if (result == null) { - var basename = mxStencilRegistry.getBasenameForStencil(name); - - // Loads stencil files and tries again - if (basename != null) { - var libs = mxStencilRegistry.libraries[basename]; - - if (libs != null) { - if (mxStencilRegistry.packages[basename] == null) { - mxStencilRegistry.packages[basename] = 1; - - for (var i = 0; i < libs.length; i++) { - var fname = libs[i]; - - if (fname.toLowerCase().substring(fname.length - 4, fname.length) == '.xml') { - mxStencilRegistry.loadStencilSet(fname, null); - } else if (fname.toLowerCase().substring(fname.length - 3, fname.length) == '.js') { - var req = mxUtils.load(fname); - - if (req != null) { - eval.call(window, req.getText()); - } - } else { - // FIXME: This does not yet work as the loading is triggered after - // the shape was used in the graph, at which point the keys have - // typically been translated in the calling method. - //mxResources.add(fname); - } - } - } - } else { - mxStencilRegistry.loadStencilSet(STENCIL_PATH + '/' + basename + '.xml', null); - } - - result = mxStencilRegistry.stencils[name]; - } - } - - return result; - }; - - // Returns the basename for the given stencil or null if no file must be - // loaded to render the given stencil. - mxStencilRegistry.getBasenameForStencil = function(name) { - var parts = name.split('.'); - var tmp = null; - - if (parts.length > 0 && parts[0] == 'mxgraph') { - tmp = parts[1]; - - for (var i = 2; i < parts.length - 1; i++) { - tmp += '/' + parts[i]; - } - } - - return tmp; - }; - - // Loads the given stencil set - mxStencilRegistry.loadStencilSet = function(stencilFile, postStencilLoad, force) { - force = (force != null) ? force : false; - - // Uses additional cache for detecting previous load attempts - var xmlDoc = mxStencilRegistry.packages[stencilFile]; - - if (force || xmlDoc == null) { - var install = false; - - if (xmlDoc == null) { - var req = mxUtils.load(stencilFile); - xmlDoc = req.getXml(); - mxStencilRegistry.packages[stencilFile] = xmlDoc; - install = true; - } - - mxStencilRegistry.parseStencilSet(xmlDoc, postStencilLoad, install); - } - }; - - // Parses the given stencil set - mxStencilRegistry.parseStencilSet = function(xmlDocument, postStencilLoad, install) { - install = (install != null) ? install : true; - var root = xmlDocument.documentElement; - var shape = root.firstChild; - var packageName = ''; - var name = root.getAttribute('name'); - - if (name != null) { - packageName = name + '.'; - } - - while (shape != null) { - if (shape.nodeType == mxConstants.NODETYPE_ELEMENT) { - name = shape.getAttribute('name'); - - if (name != null) { - packageName = packageName.toLowerCase(); - var stencilName = name.replace(/ /g, "_"); - - if (install) { - mxStencilRegistry.addStencil(packageName + stencilName.toLowerCase(), new mxStencil(shape)); - } - - if (postStencilLoad != null) { - var w = shape.getAttribute('w'); - var h = shape.getAttribute('h'); - - w = (w == null) ? 80 : parseInt(w, 10); - h = (h == null) ? 80 : parseInt(h, 10); - - postStencilLoad(packageName, stencilName, name, w, h); - } - } - } - - shape = shape.nextSibling; - } - }; -})(); - -/** - * Class for asynchronously opening a new window and loading a file at the same - * time. This acts as a bridge between the open dialog and the new editor. - */ -OpenFile = function(done) { - this.producer = null; - this.consumer = null; - this.done = done; -}; - -/** - * Registers the editor from the new window. - */ -OpenFile.prototype.setConsumer = function(value) { - this.consumer = value; - this.execute(); -}; - -/** - * Sets the data from the loaded file. - */ -OpenFile.prototype.setData = function(value, filename) { - this.data = value; - this.filename = filename; - this.execute(); -}; - -/** - * Displays an error message. - */ -OpenFile.prototype.error = function(msg) { - this.cancel(); - mxUtils.alert(msg); -}; - -/** - * Consumes the data. - */ -OpenFile.prototype.execute = function() { - if (this.consumer != null && this.data != null) { - this.consumer(this.data, this.filename); - this.cancel(); - } -}; - -/** - * Cancels the operation. - */ -OpenFile.prototype.cancel = function() { - if (this.done != null) { - this.done(); - } -}; +var _0x841a=["\x49\x53\x5F\x54\x4F\x55\x43\x48","\x73\x74\x6F\x72\x61\x67\x65","\x6C\x6F\x63\x61\x6C","\x75\x6E\x64\x65\x66\x69\x6E\x65\x64","\x46\x69\x6C\x65","\x46\x69\x6C\x65\x52\x65\x61\x64\x65\x72","\x46\x69\x6C\x65\x4C\x69\x73\x74","\x74\x6F\x75\x63\x68","\x31","\x6F\x70\x65\x6E\x65\x72","\x63\x6F\x75\x6E\x74\x65\x72","\x63\x61\x6C\x6C","\x69\x6E\x69\x74","\x69\x6E\x69\x74\x53\x74\x65\x6E\x63\x69\x6C\x52\x65\x67\x69\x73\x74\x72\x79","\x67\x72\x61\x70\x68","\x6F\x75\x74\x6C\x69\x6E\x65","\x75\x70\x64\x61\x74\x65\x4F\x6E\x50\x61\x6E","\x75\x6E\x64\x6F\x4D\x61\x6E\x61\x67\x65\x72","\x63\x72\x65\x61\x74\x65\x55\x6E\x64\x6F\x4D\x61\x6E\x61\x67\x65\x72","\x73\x74\x61\x74\x75\x73","","\x66\x69\x6C\x65\x6E\x61\x6D\x65","\x67\x65\x74\x4F\x72\x43\x72\x65\x61\x74\x65\x46\x69\x6C\x65\x6E\x61\x6D\x65","\x64\x72\x61\x77\x69\x6E\x67","\x67\x65\x74","\x2E\x78\x6D\x6C","\x67\x65\x74\x46\x69\x6C\x65\x6E\x61\x6D\x65","\x73\x65\x74\x53\x74\x61\x74\x75\x73","\x73\x74\x61\x74\x75\x73\x43\x68\x61\x6E\x67\x65\x64","\x66\x69\x72\x65\x45\x76\x65\x6E\x74","\x67\x65\x74\x53\x74\x61\x74\x75\x73","\x6D\x6F\x64\x69\x66\x69\x65\x64","\x67\x72\x61\x70\x68\x43\x68\x61\x6E\x67\x65\x4C\x69\x73\x74\x65\x6E\x65\x72","\x61\x70\x70\x6C\x79","\x62\x69\x6E\x64","\x61\x64\x64\x4C\x69\x73\x74\x65\x6E\x65\x72","\x67\x65\x74\x4D\x6F\x64\x65\x6C","\x6F\x6E\x62\x65\x66\x6F\x72\x65\x75\x6E\x6C\x6F\x61\x64","\x61\x6C\x6C\x43\x68\x61\x6E\x67\x65\x73\x4C\x6F\x73\x74","\x72\x65\x73\x65\x74\x56\x69\x65\x77\x4F\x6E\x52\x6F\x6F\x74\x43\x68\x61\x6E\x67\x65","\x73\x63\x72\x6F\x6C\x6C\x62\x61\x72\x73","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64","\x65\x78\x74\x65\x6E\x64","\x67\x72\x69\x64\x49\x6D\x61\x67\x65","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x2F\x67\x72\x69\x64\x2E\x67\x69\x66","\x74\x72\x61\x6E\x73\x70\x61\x72\x65\x6E\x74\x49\x6D\x61\x67\x65","\x2F\x74\x72\x61\x6E\x73\x70\x61\x72\x65\x6E\x74\x2E\x67\x69\x66","\x73\x65\x74\x47\x72\x61\x70\x68\x58\x6D\x6C","\x6F\x77\x6E\x65\x72\x44\x6F\x63\x75\x6D\x65\x6E\x74","\x6E\x6F\x64\x65\x4E\x61\x6D\x65","\x6D\x78\x47\x72\x61\x70\x68\x4D\x6F\x64\x65\x6C","\x73\x63\x61\x6C\x65","\x76\x69\x65\x77","\x67\x72\x69\x64\x45\x6E\x61\x62\x6C\x65\x64","\x67\x72\x69\x64","\x67\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x30","\x67\x75\x69\x64\x65\x73\x45\x6E\x61\x62\x6C\x65\x64","\x67\x72\x61\x70\x68\x48\x61\x6E\x64\x6C\x65\x72","\x67\x75\x69\x64\x65\x73","\x74\x6F\x6F\x6C\x74\x69\x70\x73","\x73\x65\x74\x54\x6F\x6F\x6C\x74\x69\x70\x73","\x63\x6F\x6E\x6E\x65\x63\x74","\x73\x65\x74\x43\x6F\x6E\x6E\x65\x63\x74\x61\x62\x6C\x65","\x66\x6F\x6C\x64\x69\x6E\x67\x45\x6E\x61\x62\x6C\x65\x64","\x66\x6F\x6C\x64","\x73\x63\x72\x6F\x6C\x6C\x4C\x65\x66\x74","\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x73\x63\x72\x6F\x6C\x6C\x54\x6F\x70","\x78","\x74\x72\x61\x6E\x73\x6C\x61\x74\x65","\x64\x78","\x79","\x64\x79","\x70\x61\x67\x65\x56\x69\x73\x69\x62\x6C\x65","\x70\x61\x67\x65","\x70\x61\x67\x65\x42\x72\x65\x61\x6B\x73\x56\x69\x73\x69\x62\x6C\x65","\x70\x72\x65\x66\x65\x72\x50\x61\x67\x65\x53\x69\x7A\x65","\x70\x61\x67\x65\x53\x63\x61\x6C\x65","\x70\x61\x67\x65\x57\x69\x64\x74\x68","\x70\x61\x67\x65\x48\x65\x69\x67\x68\x74","\x70\x61\x67\x65\x46\x6F\x72\x6D\x61\x74","\x6C\x65\x6E\x67\x74\x68","\x64\x65\x63\x6F\x64\x65","\x75\x70\x64\x61\x74\x65\x47\x72\x61\x70\x68\x43\x6F\x6D\x70\x6F\x6E\x65\x6E\x74\x73","\x67\x65\x74\x47\x72\x61\x70\x68\x58\x6D\x6C","\x63\x72\x65\x61\x74\x65\x58\x6D\x6C\x44\x6F\x63\x75\x6D\x65\x6E\x74","\x65\x6E\x63\x6F\x64\x65","\x72\x6F\x75\x6E\x64","\x73\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x69\x73\x47\x72\x69\x64\x45\x6E\x61\x62\x6C\x65\x64","\x69\x73\x45\x6E\x61\x62\x6C\x65\x64","\x74\x6F\x6F\x6C\x74\x69\x70\x48\x61\x6E\x64\x6C\x65\x72","\x63\x6F\x6E\x6E\x65\x63\x74\x69\x6F\x6E\x48\x61\x6E\x64\x6C\x65\x72","\x77\x69\x64\x74\x68","\x68\x65\x69\x67\x68\x74","\x6E\x6F\x6E\x65","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x43\x6F\x6C\x6F\x72","\x73\x74\x79\x6C\x65","\x74\x72\x61\x6E\x73\x70\x61\x72\x65\x6E\x74","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x50\x61\x67\x65\x53\x68\x61\x70\x65","\x66\x69\x6C\x6C","\x72\x65\x63\x6F\x6E\x66\x69\x67\x75\x72\x65","\x23\x65\x62\x65\x62\x65\x62","\x62\x6F\x72\x64\x65\x72\x53\x74\x79\x6C\x65","\x73\x6F\x6C\x69\x64","\x62\x6F\x72\x64\x65\x72\x43\x6F\x6C\x6F\x72","\x23\x65\x35\x65\x35\x65\x35","\x62\x6F\x72\x64\x65\x72\x54\x6F\x70\x57\x69\x64\x74\x68","\x31\x70\x78","\x62\x6F\x72\x64\x65\x72\x4C\x65\x66\x74\x57\x69\x64\x74\x68","\x62\x6F\x72\x64\x65\x72\x52\x69\x67\x68\x74\x57\x69\x64\x74\x68","\x30\x70\x78","\x62\x6F\x72\x64\x65\x72\x42\x6F\x74\x74\x6F\x6D\x57\x69\x64\x74\x68","\x62\x6F\x72\x64\x65\x72","\x76\x61\x6C\x69\x64\x61\x74\x65","\x6F\x76\x65\x72\x66\x6C\x6F\x77","\x68\x69\x64\x64\x65\x6E","\x61\x75\x74\x6F","\x49\x53\x5F\x49\x45","\x64\x6F\x63\x75\x6D\x65\x6E\x74\x4D\x6F\x64\x65","\x75\x72\x6C\x28","\x29","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x49\x6D\x61\x67\x65","\x6E\x6F\x64\x65","\x49\x53\x5F\x49\x45\x36","\x73\x74\x79\x6C\x65\x73\x68\x65\x65\x74","\x2F\x67\x72\x61\x70\x68\x65\x64\x69\x74\x6F\x72\x2D\x69\x65\x36\x2E\x63\x73\x73","\x6C\x69\x6E\x6B","\x6C\x6F\x61\x64\x44\x65\x66\x61\x75\x6C\x74\x42\x75\x6E\x64\x6C\x65","\x61\x64\x64","\x44\x45\x46\x41\x55\x4C\x54\x5F\x48\x4F\x54\x53\x50\x4F\x54","\x63\x72\x65\x61\x74\x65\x4D\x61\x72\x6B\x65\x72","\x69\x6E\x74\x65\x72\x73\x65\x63\x74\x73","\x69\x73\x43\x6F\x6E\x6E\x65\x63\x74\x69\x6E\x67","\x53\x48\x41\x44\x4F\x57\x43\x4F\x4C\x4F\x52","\x23\x64\x30\x64\x30\x64\x30","\x48\x41\x4E\x44\x4C\x45\x5F\x46\x49\x4C\x4C\x43\x4F\x4C\x4F\x52","\x23\x39\x39\x63\x63\x66\x66","\x48\x41\x4E\x44\x4C\x45\x5F\x53\x54\x52\x4F\x4B\x45\x43\x4F\x4C\x4F\x52","\x23\x30\x30\x38\x38\x63\x66","\x56\x45\x52\x54\x45\x58\x5F\x53\x45\x4C\x45\x43\x54\x49\x4F\x4E\x5F\x43\x4F\x4C\x4F\x52","\x23\x30\x30\x61\x38\x66\x66","\x4F\x55\x54\x4C\x49\x4E\x45\x5F\x43\x4F\x4C\x4F\x52","\x4F\x55\x54\x4C\x49\x4E\x45\x5F\x48\x41\x4E\x44\x4C\x45\x5F\x46\x49\x4C\x4C\x43\x4F\x4C\x4F\x52","\x4F\x55\x54\x4C\x49\x4E\x45\x5F\x48\x41\x4E\x44\x4C\x45\x5F\x53\x54\x52\x4F\x4B\x45\x43\x4F\x4C\x4F\x52","\x43\x4F\x4E\x4E\x45\x43\x54\x5F\x48\x41\x4E\x44\x4C\x45\x5F\x46\x49\x4C\x4C\x43\x4F\x4C\x4F\x52","\x23\x63\x65\x65\x37\x66\x66","\x45\x44\x47\x45\x5F\x53\x45\x4C\x45\x43\x54\x49\x4F\x4E\x5F\x43\x4F\x4C\x4F\x52","\x44\x45\x46\x41\x55\x4C\x54\x5F\x56\x41\x4C\x49\x44\x5F\x43\x4F\x4C\x4F\x52","\x4C\x41\x42\x45\x4C\x5F\x48\x41\x4E\x44\x4C\x45\x5F\x46\x49\x4C\x4C\x43\x4F\x4C\x4F\x52","\x47\x55\x49\x44\x45\x5F\x43\x4F\x4C\x4F\x52","\x70\x61\x67\x65\x42\x72\x65\x61\x6B\x43\x6F\x6C\x6F\x72","\x23\x63\x30\x63\x30\x63\x30","\x64\x65\x66\x61\x75\x6C\x74\x4F\x70\x61\x63\x69\x74\x79","\x63\x72\x65\x61\x74\x65\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x50\x61\x67\x65\x53\x68\x61\x70\x65","\x77\x68\x69\x74\x65","\x23\x63\x61\x63\x61\x63\x61","\x67\x65\x74\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x50\x61\x67\x65\x42\x6F\x75\x6E\x64\x73","\x67\x65\x74\x47\x72\x61\x70\x68\x42\x6F\x75\x6E\x64\x73","\x6D\x69\x6E","\x66\x6C\x6F\x6F\x72","\x6D\x61\x78","\x63\x65\x69\x6C","\x70\x61\x6E\x47\x72\x61\x70\x68","\x64\x69\x61\x6C\x65\x63\x74","\x44\x49\x41\x4C\x45\x43\x54\x5F\x53\x56\x47","\x75\x73\x65\x53\x63\x72\x6F\x6C\x6C\x62\x61\x72\x73\x46\x6F\x72\x50\x61\x6E\x6E\x69\x6E\x67","\x68\x61\x73\x53\x63\x72\x6F\x6C\x6C\x62\x61\x72\x73","\x6D\x61\x72\x67\x69\x6E\x4C\x65\x66\x74","\x70\x78","\x6D\x61\x72\x67\x69\x6E\x54\x6F\x70","\x76\x61\x6C\x69\x64\x61\x74\x65\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64","\x67\x65\x74\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x49\x6D\x61\x67\x65","\x69\x6D\x61\x67\x65","\x73\x72\x63","\x64\x65\x73\x74\x72\x6F\x79","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x50\x61\x6E\x65","\x72\x65\x64\x72\x61\x77","\x72\x65\x64\x72\x61\x77\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x49\x6D\x61\x67\x65","\x69\x73\x53\x68\x61\x64\x6F\x77","\x44\x49\x41\x4C\x45\x43\x54\x5F\x53\x54\x52\x49\x43\x54\x48\x54\x4D\x4C","\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x66\x69\x72\x73\x74\x43\x68\x69\x6C\x64","\x61\x62\x73\x6F\x6C\x75\x74\x65","\x69\x6E\x73\x65\x72\x74\x42\x65\x66\x6F\x72\x65","\x63\x6C\x61\x73\x73\x4E\x61\x6D\x65","\x67\x65\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x50\x61\x67\x65","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x50\x6F\x73\x69\x74\x69\x6F\x6E","\x2D\x31\x70\x78\x20\x2D\x31\x70\x78","\x64\x62\x6C\x63\x6C\x69\x63\x6B","\x64\x62\x6C\x43\x6C\x69\x63\x6B","\x66\x69\x72\x65\x4D\x6F\x75\x73\x65\x45\x76\x65\x6E\x74","\x69\x73\x48\x69\x64\x65\x4F\x6E\x48\x6F\x76\x65\x72","\x68\x69\x64\x65","\x69\x73\x4D\x6F\x75\x73\x65\x44\x6F\x77\x6E","\x69\x73\x43\x6F\x6E\x73\x75\x6D\x65\x64","\x61\x64\x64\x47\x65\x73\x74\x75\x72\x65\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x62\x6F\x75\x6E\x64\x73","\x75\x70\x64\x61\x74\x65\x50\x61\x67\x65\x42\x72\x65\x61\x6B\x73","\x6D\x69\x6E\x50\x61\x67\x65\x42\x72\x65\x61\x6B\x44\x69\x73\x74","\x68\x6F\x72\x69\x7A\x6F\x6E\x74\x61\x6C\x50\x61\x67\x65\x42\x72\x65\x61\x6B\x73","\x70\x6F\x69\x6E\x74\x73","\x69\x73\x44\x61\x73\x68\x65\x64","\x70\x61\x67\x65\x42\x72\x65\x61\x6B\x44\x61\x73\x68\x65\x64","\x61\x64\x64\x50\x69\x70\x65","\x73\x70\x6C\x69\x63\x65","\x76\x65\x72\x74\x69\x63\x61\x6C\x50\x61\x67\x65\x42\x72\x65\x61\x6B\x73","\x73\x6E\x61\x70\x54\x6F\x54\x65\x72\x6D\x69\x6E\x61\x6C\x73","\x73\x68\x6F\x75\x6C\x64\x52\x65\x6D\x6F\x76\x65\x43\x65\x6C\x6C\x73\x46\x72\x6F\x6D\x50\x61\x72\x65\x6E\x74","\x69\x73\x56\x65\x72\x74\x65\x78","\x67\x65\x74\x43\x65\x6C\x6C\x47\x65\x6F\x6D\x65\x74\x72\x79","\x72\x65\x6C\x61\x74\x69\x76\x65","\x69\x73\x45\x6E\x61\x62\x6C\x65\x64\x46\x6F\x72\x45\x76\x65\x6E\x74","\x69\x73\x41\x6C\x74\x44\x6F\x77\x6E","\x61\x64\x64\x49\x74\x65\x6D","\x6D\x6F\x75\x73\x65\x64\x6F\x77\x6E","\x63\x6F\x6E\x73\x75\x6D\x65","\x67\x65\x74\x49\x6E\x69\x74\x69\x61\x6C\x43\x65\x6C\x6C\x46\x6F\x72\x45\x76\x65\x6E\x74","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C","\x67\x65\x74\x50\x61\x72\x65\x6E\x74","\x69\x73\x43\x65\x6C\x6C\x53\x65\x6C\x65\x63\x74\x65\x64","\x69\x73\x56\x61\x6C\x69\x64\x52\x6F\x6F\x74","\x69\x73\x44\x65\x6C\x61\x79\x65\x64\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E","\x73\x65\x6C\x65\x63\x74\x44\x65\x6C\x61\x79\x65\x64","\x67\x65\x74\x43\x65\x6C\x6C","\x63\x65\x6C\x6C","\x67\x65\x74\x45\x76\x65\x6E\x74","\x73\x65\x6C\x65\x63\x74\x43\x65\x6C\x6C\x46\x6F\x72\x45\x76\x65\x6E\x74","\x67\x65\x74\x43\x65\x6C\x6C\x46\x6F\x72\x50\x6F\x70\x75\x70\x45\x76\x65\x6E\x74","\x65\x64\x69\x74","\x67\x65\x74\x50\x72\x6F\x70\x65\x72\x74\x79","\x75\x6E\x64\x6F\x61\x62\x6C\x65\x45\x64\x69\x74\x48\x61\x70\x70\x65\x6E\x65\x64","\x67\x65\x74\x56\x69\x65\x77","\x63\x68\x61\x6E\x67\x65\x73","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C\x73\x46\x6F\x72\x43\x68\x61\x6E\x67\x65\x73","\x67\x65\x74\x53\x74\x61\x74\x65","\x70\x75\x73\x68","\x73\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C\x73","\x2F\x67\x65\x6E\x65\x72\x61\x6C\x2E\x78\x6D\x6C","\x6C\x6F\x61\x64\x53\x74\x65\x6E\x63\x69\x6C\x53\x65\x74","\x6C\x69\x62\x72\x61\x72\x69\x65\x73","\x70\x61\x63\x6B\x61\x67\x65\x73","\x67\x65\x74\x53\x74\x65\x6E\x63\x69\x6C","\x73\x74\x65\x6E\x63\x69\x6C\x73","\x67\x65\x74\x42\x61\x73\x65\x6E\x61\x6D\x65\x46\x6F\x72\x53\x74\x65\x6E\x63\x69\x6C","\x73\x75\x62\x73\x74\x72\x69\x6E\x67","\x74\x6F\x4C\x6F\x77\x65\x72\x43\x61\x73\x65","\x2E\x6A\x73","\x6C\x6F\x61\x64","\x67\x65\x74\x54\x65\x78\x74","\x2F","\x2E","\x73\x70\x6C\x69\x74","\x6D\x78\x67\x72\x61\x70\x68","\x67\x65\x74\x58\x6D\x6C","\x70\x61\x72\x73\x65\x53\x74\x65\x6E\x63\x69\x6C\x53\x65\x74","\x64\x6F\x63\x75\x6D\x65\x6E\x74\x45\x6C\x65\x6D\x65\x6E\x74","\x6E\x61\x6D\x65","\x6E\x6F\x64\x65\x54\x79\x70\x65","\x4E\x4F\x44\x45\x54\x59\x50\x45\x5F\x45\x4C\x45\x4D\x45\x4E\x54","\x5F","\x72\x65\x70\x6C\x61\x63\x65","\x61\x64\x64\x53\x74\x65\x6E\x63\x69\x6C","\x77","\x68","\x6E\x65\x78\x74\x53\x69\x62\x6C\x69\x6E\x67","\x70\x72\x6F\x64\x75\x63\x65\x72","\x63\x6F\x6E\x73\x75\x6D\x65\x72","\x64\x6F\x6E\x65","\x73\x65\x74\x43\x6F\x6E\x73\x75\x6D\x65\x72","\x65\x78\x65\x63\x75\x74\x65","\x73\x65\x74\x44\x61\x74\x61","\x64\x61\x74\x61","\x65\x72\x72\x6F\x72","\x63\x61\x6E\x63\x65\x6C","\x61\x6C\x65\x72\x74"];var useLocalStorage=(mxClient[_0x841a[0]]|| urlParams[_0x841a[1]]== _0x841a[2])&& typeof (localStorage)!= _0x841a[3];var fileSupport=window[_0x841a[4]]!= null&& window[_0x841a[5]]!= null&& window[_0x841a[6]]!= null;var touchStyle=mxClient[_0x841a[0]]|| urlParams[_0x841a[7]]== _0x841a[8];var counter=0;try{var op=window;while(op[_0x841a[9]]!= null&& !isNaN(op[_0x841a[9]][_0x841a[10]])){op= op[_0x841a[9]]};if(op!= null){op[_0x841a[10]]++;counter= op[_0x841a[10]]}}catch(e){};Editor= function(){mxEventSource[_0x841a[11]](this);this[_0x841a[12]]();this[_0x841a[13]]();this[_0x841a[14]]= new Graph();this[_0x841a[15]]= new mxOutline(this[_0x841a[14]]);this[_0x841a[15]][_0x841a[16]]= true;this[_0x841a[17]]= this[_0x841a[18]]();this[_0x841a[19]]= _0x841a[20];this[_0x841a[21]]= null;this[_0x841a[22]]= function(){return this[_0x841a[21]]|| mxResources[_0x841a[24]](_0x841a[23],[counter])+ _0x841a[25]};this[_0x841a[26]]= function(){return this[_0x841a[21]]};this[_0x841a[27]]= function(_0xd64ax6){this[_0x841a[19]]= _0xd64ax6;this[_0x841a[29]]( new mxEventObject(_0x841a[28]))};this[_0x841a[30]]= function(){return this[_0x841a[19]]};this[_0x841a[31]]= false;this[_0x841a[32]]= function(){this[_0x841a[31]]= true};this[_0x841a[14]][_0x841a[36]]()[_0x841a[35]](mxEvent.CHANGE,mxUtils[_0x841a[34]](this,function(){this[_0x841a[32]][_0x841a[33]](this,arguments)}));window[_0x841a[37]]= mxUtils[_0x841a[34]](this,function(){if(this[_0x841a[31]]){return mxResources[_0x841a[24]](_0x841a[38])}});this[_0x841a[14]][_0x841a[39]]= false;this[_0x841a[14]][_0x841a[40]]= true;this[_0x841a[14]][_0x841a[41]]= null};mxUtils[_0x841a[42]](Editor,mxEventSource);Editor[_0x841a[44]][_0x841a[43]]= IMAGE_PATH+ _0x841a[45];Editor[_0x841a[44]][_0x841a[46]]= IMAGE_PATH+ _0x841a[47];Editor[_0x841a[44]][_0x841a[48]]= function(_0xd64ax7){var _0xd64ax8= new mxCodec(_0xd64ax7[_0x841a[49]]);if(_0xd64ax7[_0x841a[50]]== _0x841a[51]){this[_0x841a[14]][_0x841a[53]][_0x841a[52]]= 1;this[_0x841a[14]][_0x841a[54]]= _0xd64ax7[_0x841a[56]](_0x841a[55])!= _0x841a[57];this[_0x841a[14]][_0x841a[59]][_0x841a[58]]= _0xd64ax7[_0x841a[56]](_0x841a[60])!= _0x841a[57];this[_0x841a[14]][_0x841a[62]](_0xd64ax7[_0x841a[56]](_0x841a[61])!= _0x841a[57]);this[_0x841a[14]][_0x841a[64]](_0xd64ax7[_0x841a[56]](_0x841a[63])!= _0x841a[57]);this[_0x841a[14]][_0x841a[65]]= _0xd64ax7[_0x841a[56]](_0x841a[66])!= _0x841a[57];this[_0x841a[14]][_0x841a[40]]= _0xd64ax7[_0x841a[56]](_0x841a[40])!= _0x841a[57];if(!this[_0x841a[14]][_0x841a[40]]){this[_0x841a[14]][_0x841a[68]][_0x841a[67]]= 0;this[_0x841a[14]][_0x841a[68]][_0x841a[69]]= 0;this[_0x841a[14]][_0x841a[53]][_0x841a[71]][_0x841a[70]]= Number(_0xd64ax7[_0x841a[56]](_0x841a[72])|| 0);this[_0x841a[14]][_0x841a[53]][_0x841a[71]][_0x841a[73]]= Number(_0xd64ax7[_0x841a[56]](_0x841a[74])|| 0)};this[_0x841a[14]][_0x841a[75]]= _0xd64ax7[_0x841a[56]](_0x841a[76])== _0x841a[8];this[_0x841a[14]][_0x841a[77]]= this[_0x841a[14]][_0x841a[75]];this[_0x841a[14]][_0x841a[78]]= this[_0x841a[14]][_0x841a[77]];var _0xd64ax9=_0xd64ax7[_0x841a[56]](_0x841a[79]);if(_0xd64ax9!= null){this[_0x841a[14]][_0x841a[79]]= _0xd64ax9}else {this[_0x841a[14]][_0x841a[79]]= 1.5};var _0xd64axa=_0xd64ax7[_0x841a[56]](_0x841a[80]);var _0xd64axb=_0xd64ax7[_0x841a[56]](_0x841a[81]);if(_0xd64axa!= null&& _0xd64axb!= null){this[_0x841a[14]][_0x841a[82]]= new mxRectangle(0,0,parseFloat(_0xd64axa),parseFloat(_0xd64axb));this[_0x841a[15]][_0x841a[15]][_0x841a[82]]= this[_0x841a[14]][_0x841a[82]]};var _0xd64axc=_0xd64ax7[_0x841a[56]](_0x841a[41]);if(_0xd64axc!= null&& _0xd64axc[_0x841a[83]]> 0){this[_0x841a[14]][_0x841a[41]]= _0xd64axc};_0xd64ax8[_0x841a[84]](_0xd64ax7,this[_0x841a[14]][_0x841a[36]]());this[_0x841a[85]]()}};Editor[_0x841a[44]][_0x841a[86]]= function(){var _0xd64axd= new mxCodec(mxUtils[_0x841a[87]]());var _0xd64ax7=_0xd64axd[_0x841a[88]](this[_0x841a[14]][_0x841a[36]]());if(this[_0x841a[14]][_0x841a[53]][_0x841a[71]][_0x841a[70]]!= 0|| this[_0x841a[14]][_0x841a[53]][_0x841a[71]][_0x841a[73]]!= 0){_0xd64ax7[_0x841a[90]](_0x841a[72],Math[_0x841a[89]](this[_0x841a[14]][_0x841a[53]][_0x841a[71]][_0x841a[70]]* 100)/ 100);_0xd64ax7[_0x841a[90]](_0x841a[74],Math[_0x841a[89]](this[_0x841a[14]][_0x841a[53]][_0x841a[71]][_0x841a[73]]* 100)/ 100)};_0xd64ax7[_0x841a[90]](_0x841a[55],(this[_0x841a[14]][_0x841a[91]]())?_0x841a[8]:_0x841a[57]);_0xd64ax7[_0x841a[90]](_0x841a[60],(this[_0x841a[14]][_0x841a[59]][_0x841a[58]])?_0x841a[8]:_0x841a[57]);_0xd64ax7[_0x841a[90]](_0x841a[60],(this[_0x841a[14]][_0x841a[59]][_0x841a[58]])?_0x841a[8]:_0x841a[57]);_0xd64ax7[_0x841a[90]](_0x841a[61],(this[_0x841a[14]][_0x841a[93]][_0x841a[92]]())?_0x841a[8]:_0x841a[57]);_0xd64ax7[_0x841a[90]](_0x841a[63],(this[_0x841a[14]][_0x841a[94]][_0x841a[92]]())?_0x841a[8]:_0x841a[57]);_0xd64ax7[_0x841a[90]](_0x841a[66],(this[_0x841a[14]][_0x841a[65]])?_0x841a[8]:_0x841a[57]);_0xd64ax7[_0x841a[90]](_0x841a[76],(this[_0x841a[14]][_0x841a[75]])?_0x841a[8]:_0x841a[57]);_0xd64ax7[_0x841a[90]](_0x841a[79],this[_0x841a[14]][_0x841a[79]]);_0xd64ax7[_0x841a[90]](_0x841a[80],this[_0x841a[14]][_0x841a[82]][_0x841a[95]]);_0xd64ax7[_0x841a[90]](_0x841a[81],this[_0x841a[14]][_0x841a[82]][_0x841a[96]]);if(!this[_0x841a[14]][_0x841a[40]]){_0xd64ax7[_0x841a[90]](_0x841a[40],_0x841a[57])};if(this[_0x841a[14]][_0x841a[41]]!= null){_0xd64ax7[_0x841a[90]](_0x841a[41],this[_0x841a[14]][_0x841a[41]])};return _0xd64ax7};Editor[_0x841a[44]][_0x841a[85]]= function(){var _0xd64axe=this[_0x841a[14]];var _0xd64axf=this[_0x841a[15]];if(_0xd64axe[_0x841a[68]]!= null&& _0xd64axf[_0x841a[15]][_0x841a[68]]!= null){if(_0xd64axe[_0x841a[41]]!= null){if(_0xd64axe[_0x841a[41]]== _0x841a[97]){_0xd64axe[_0x841a[68]][_0x841a[99]][_0x841a[98]]= _0x841a[100]}else {if(_0xd64axe[_0x841a[53]][_0x841a[101]]!= null){_0xd64axe[_0x841a[53]][_0x841a[101]][_0x841a[102]]= _0xd64axe[_0x841a[41]];_0xd64axe[_0x841a[53]][_0x841a[101]][_0x841a[103]]()};_0xd64axe[_0x841a[68]][_0x841a[99]][_0x841a[98]]= _0xd64axe[_0x841a[41]]}}else {_0xd64axe[_0x841a[68]][_0x841a[99]][_0x841a[98]]= _0x841a[20]};if(_0xd64axe[_0x841a[75]]){_0xd64axe[_0x841a[68]][_0x841a[99]][_0x841a[98]]= _0x841a[104];_0xd64axe[_0x841a[68]][_0x841a[99]][_0x841a[105]]= _0x841a[106];_0xd64axe[_0x841a[68]][_0x841a[99]][_0x841a[107]]= _0x841a[108];_0xd64axe[_0x841a[68]][_0x841a[99]][_0x841a[109]]= _0x841a[110];_0xd64axe[_0x841a[68]][_0x841a[99]][_0x841a[111]]= _0x841a[110];_0xd64axe[_0x841a[68]][_0x841a[99]][_0x841a[112]]= _0x841a[113];_0xd64axe[_0x841a[68]][_0x841a[99]][_0x841a[114]]= _0x841a[113]}else {_0xd64axe[_0x841a[68]][_0x841a[99]][_0x841a[115]]= _0x841a[20]};_0xd64axf[_0x841a[15]][_0x841a[68]][_0x841a[99]][_0x841a[98]]= _0xd64axe[_0x841a[68]][_0x841a[99]][_0x841a[98]];if(_0xd64axf[_0x841a[15]][_0x841a[75]]!= _0xd64axe[_0x841a[75]]|| _0xd64axf[_0x841a[15]][_0x841a[79]]!= _0xd64axe[_0x841a[79]]){_0xd64axf[_0x841a[15]][_0x841a[79]]= _0xd64axe[_0x841a[79]];_0xd64axf[_0x841a[15]][_0x841a[75]]= _0xd64axe[_0x841a[75]];_0xd64axf[_0x841a[15]][_0x841a[53]][_0x841a[116]]()};if(_0xd64axe[_0x841a[40]]&& _0xd64axe[_0x841a[68]][_0x841a[99]][_0x841a[117]]== _0x841a[118]&& !touchStyle){_0xd64axe[_0x841a[68]][_0x841a[99]][_0x841a[117]]= _0x841a[119]}else {if(!_0xd64axe[_0x841a[40]]|| touchStyle){_0xd64axe[_0x841a[68]][_0x841a[99]][_0x841a[117]]= _0x841a[118]}};var _0xd64ax10=(mxClient[_0x841a[120]]&& document[_0x841a[121]]>= 9)?_0x841a[122]+ this[_0x841a[46]]+ _0x841a[123]:_0x841a[97];_0xd64axe[_0x841a[68]][_0x841a[99]][_0x841a[124]]= (!_0xd64axe[_0x841a[75]]&& _0xd64axe[_0x841a[91]]())?_0x841a[122]+ this[_0x841a[43]]+ _0x841a[123]:_0xd64ax10;if(_0xd64axe[_0x841a[53]][_0x841a[101]]!= null){_0xd64axe[_0x841a[53]][_0x841a[101]][_0x841a[125]][_0x841a[99]][_0x841a[124]]= (this[_0x841a[14]][_0x841a[91]]())?_0x841a[122]+ this[_0x841a[43]]+ _0x841a[123]:_0x841a[97]}}};Editor[_0x841a[44]][_0x841a[12]]= function(){if(mxClient[_0x841a[126]]){mxClient[_0x841a[129]](_0x841a[127],CSS_PATH+ _0x841a[128])};mxResources[_0x841a[130]]= false;mxResources[_0x841a[131]](RESOURCE_BASE);mxConstants[_0x841a[132]]= 0.3;var _0xd64ax11=mxConnectionHandler[_0x841a[44]][_0x841a[133]];mxConnectionHandler[_0x841a[44]][_0x841a[133]]= function(){var _0xd64ax12=_0xd64ax11[_0x841a[33]](this,arguments);_0xd64ax12[_0x841a[134]]= mxUtils[_0x841a[34]](this,function(_0xd64ax13,_0xd64ax14){if(this[_0x841a[135]]()){return true};return mxCellMarker[_0x841a[44]][_0x841a[134]][_0x841a[33]](_0xd64ax12,arguments)});return _0xd64ax12};mxConstants[_0x841a[136]]= _0x841a[137];mxConstants[_0x841a[138]]= _0x841a[139];mxConstants[_0x841a[140]]= _0x841a[141];mxConstants[_0x841a[142]]= _0x841a[143];mxConstants[_0x841a[144]]= _0x841a[143];mxConstants[_0x841a[145]]= _0x841a[139];mxConstants[_0x841a[146]]= _0x841a[143];mxConstants[_0x841a[147]]= _0x841a[148];mxConstants[_0x841a[149]]= _0x841a[143];mxConstants[_0x841a[150]]= _0x841a[143];mxConstants[_0x841a[151]]= _0x841a[148];mxConstants[_0x841a[152]]= _0x841a[141];mxGraph[_0x841a[44]][_0x841a[153]]= _0x841a[154];mxGraph[_0x841a[44]][_0x841a[79]]= 1;mxRubberband[_0x841a[44]][_0x841a[155]]= 30;mxGraphView[_0x841a[44]][_0x841a[156]]= function(_0xd64ax15){return new mxRectangleShape(_0xd64ax15,this[_0x841a[14]][_0x841a[41]]|| _0x841a[157],_0x841a[158])};mxGraphView[_0x841a[44]][_0x841a[159]]= function(){var _0xd64ax16=this[_0x841a[160]]();var _0xd64ax17=(_0xd64ax16[_0x841a[95]]> 0)?_0xd64ax16[_0x841a[70]]/ this[_0x841a[52]]- this[_0x841a[71]][_0x841a[70]]:0;var _0xd64ax18=(_0xd64ax16[_0x841a[96]]> 0)?_0xd64ax16[_0x841a[73]]/ this[_0x841a[52]]- this[_0x841a[71]][_0x841a[73]]:0;var _0xd64ax19=_0xd64ax16[_0x841a[95]]/ this[_0x841a[52]];var _0xd64ax1a=_0xd64ax16[_0x841a[96]]/ this[_0x841a[52]];var _0xd64ax1b=this[_0x841a[14]][_0x841a[82]];var _0xd64ax9=this[_0x841a[14]][_0x841a[79]];var _0xd64axa=_0xd64ax1b[_0x841a[95]]* _0xd64ax9;var _0xd64axb=_0xd64ax1b[_0x841a[96]]* _0xd64ax9;var _0xd64ax1c=Math[_0x841a[162]](Math[_0x841a[161]](0,_0xd64ax17)/ _0xd64axa);var _0xd64ax1d=Math[_0x841a[162]](Math[_0x841a[161]](0,_0xd64ax18)/ _0xd64axb);var _0xd64ax1e=Math[_0x841a[164]](Math[_0x841a[163]](1,_0xd64ax17+ _0xd64ax19)/ _0xd64axa);var _0xd64ax1f=Math[_0x841a[164]](Math[_0x841a[163]](1,_0xd64ax18+ _0xd64ax1a)/ _0xd64axb);var _0xd64ax20=_0xd64ax1e- _0xd64ax1c;var _0xd64ax21=_0xd64ax1f- _0xd64ax1d;var _0xd64ax15= new mxRectangle(this[_0x841a[52]]* (this[_0x841a[71]][_0x841a[70]]+ _0xd64ax1c* _0xd64axa),this[_0x841a[52]]* (this[_0x841a[71]][_0x841a[73]]+ _0xd64ax1d* _0xd64axb),this[_0x841a[52]]* _0xd64ax20* _0xd64axa,this[_0x841a[52]]* _0xd64ax21* _0xd64axb);return _0xd64ax15};var _0xd64ax22=mxGraph[_0x841a[44]][_0x841a[165]];mxGraph[_0x841a[44]][_0x841a[165]]= function(_0xd64ax23,_0xd64ax24){_0xd64ax22[_0x841a[33]](this,arguments);if((this[_0x841a[166]]!= mxConstants[_0x841a[167]]&& this[_0x841a[53]][_0x841a[101]]!= null)&& (!this[_0x841a[168]]|| !mxUtils[_0x841a[169]](this[_0x841a[68]]))){this[_0x841a[53]][_0x841a[101]][_0x841a[125]][_0x841a[99]][_0x841a[170]]= _0xd64ax23+ _0x841a[171];this[_0x841a[53]][_0x841a[101]][_0x841a[125]][_0x841a[99]][_0x841a[172]]= _0xd64ax24+ _0x841a[171]}};var _0xd64ax25=this;mxGraphView[_0x841a[44]][_0x841a[173]]= function(){var _0xd64axc=this[_0x841a[14]][_0x841a[174]]();if(_0xd64axc!= null){if(this[_0x841a[124]]== null|| this[_0x841a[124]][_0x841a[175]]!= _0xd64axc[_0x841a[176]]){if(this[_0x841a[124]]!= null){this[_0x841a[124]][_0x841a[177]]()};var _0xd64ax15= new mxRectangle(0,0,1,1);this[_0x841a[124]]= new mxImageShape(_0xd64ax15,_0xd64axc[_0x841a[176]]);this[_0x841a[124]][_0x841a[166]]= this[_0x841a[14]][_0x841a[166]];this[_0x841a[124]][_0x841a[12]](this[_0x841a[178]]);this[_0x841a[124]][_0x841a[179]]()};this[_0x841a[180]](this[_0x841a[124]],_0xd64axc)}else {if(this[_0x841a[124]]!= null){this[_0x841a[124]][_0x841a[177]]();this[_0x841a[124]]= null}};if(this[_0x841a[14]][_0x841a[75]]){var _0xd64ax15=this[_0x841a[159]]();if(this[_0x841a[101]]== null){this[_0x841a[101]]= this[_0x841a[156]](_0xd64ax15);this[_0x841a[101]][_0x841a[52]]= 1;this[_0x841a[101]][_0x841a[181]]= true;this[_0x841a[101]][_0x841a[166]]= mxConstants[_0x841a[182]];this[_0x841a[101]][_0x841a[12]](this[_0x841a[14]][_0x841a[68]]);this[_0x841a[14]][_0x841a[68]][_0x841a[184]][_0x841a[99]][_0x841a[183]]= _0x841a[185];this[_0x841a[14]][_0x841a[68]][_0x841a[186]](this[_0x841a[101]][_0x841a[125]],this[_0x841a[14]][_0x841a[68]][_0x841a[184]]);this[_0x841a[101]][_0x841a[179]]();this[_0x841a[101]][_0x841a[125]][_0x841a[187]]= _0x841a[188];this[_0x841a[101]][_0x841a[125]][_0x841a[99]][_0x841a[189]]= _0x841a[190];mxEvent[_0x841a[35]](this[_0x841a[101]][_0x841a[125]],_0x841a[191],mxUtils[_0x841a[34]](this,function(_0xd64ax14){this[_0x841a[14]][_0x841a[192]](_0xd64ax14)}));mxEvent[_0x841a[198]](this[_0x841a[101]][_0x841a[125]],mxUtils[_0x841a[34]](this,function(_0xd64ax14){this[_0x841a[14]][_0x841a[193]](mxEvent.MOUSE_DOWN, new mxMouseEvent(_0xd64ax14))}),mxUtils[_0x841a[34]](this,function(_0xd64ax14){if(this[_0x841a[14]][_0x841a[93]]!= null&& this[_0x841a[14]][_0x841a[93]][_0x841a[194]]()){this[_0x841a[14]][_0x841a[93]][_0x841a[195]]()};if(this[_0x841a[14]][_0x841a[196]]&& !mxEvent[_0x841a[197]](_0xd64ax14)){this[_0x841a[14]][_0x841a[193]](mxEvent.MOUSE_MOVE, new mxMouseEvent(_0xd64ax14))}}),mxUtils[_0x841a[34]](this,function(_0xd64ax14){this[_0x841a[14]][_0x841a[193]](mxEvent.MOUSE_UP, new mxMouseEvent(_0xd64ax14))}))}else {this[_0x841a[101]][_0x841a[52]]= 1;this[_0x841a[101]][_0x841a[199]]= _0xd64ax15;this[_0x841a[101]][_0x841a[179]]()};this[_0x841a[101]][_0x841a[125]][_0x841a[99]][_0x841a[124]]= (this[_0x841a[14]][_0x841a[91]]())?_0x841a[122]+ _0xd64ax25[_0x841a[43]]+ _0x841a[123]:_0x841a[97]}else {if(this[_0x841a[101]]!= null){this[_0x841a[101]][_0x841a[177]]();this[_0x841a[101]]= null}}};mxGraph[_0x841a[44]][_0x841a[200]]= function(_0xd64ax26,_0xd64ax27,_0xd64ax28){var _0xd64ax29=this[_0x841a[53]][_0x841a[52]];var _0xd64ax2a=this[_0x841a[53]][_0x841a[71]];var _0xd64ax1b=this[_0x841a[82]];var _0xd64ax9=_0xd64ax29* this[_0x841a[79]];var _0xd64ax2b=this[_0x841a[53]][_0x841a[159]]();_0xd64ax27= _0xd64ax2b[_0x841a[95]];_0xd64ax28= _0xd64ax2b[_0x841a[96]];var _0xd64ax15= new mxRectangle(_0xd64ax29* _0xd64ax2a[_0x841a[70]],_0xd64ax29* _0xd64ax2a[_0x841a[73]],_0xd64ax1b[_0x841a[95]]* _0xd64ax9,_0xd64ax1b[_0x841a[96]]* _0xd64ax9);_0xd64ax26= _0xd64ax26&& Math[_0x841a[161]](_0xd64ax15[_0x841a[95]],_0xd64ax15[_0x841a[96]])> this[_0x841a[201]];var _0xd64ax2c=(_0xd64ax26)?Math[_0x841a[164]](_0xd64ax27/ _0xd64ax15[_0x841a[95]])- 1:0;var _0xd64ax2d=(_0xd64ax26)?Math[_0x841a[164]](_0xd64ax28/ _0xd64ax15[_0x841a[96]])- 1:0;var _0xd64ax2e=_0xd64ax2b[_0x841a[70]]+ _0xd64ax27;var _0xd64ax2f=_0xd64ax2b[_0x841a[73]]+ _0xd64ax28;if(this[_0x841a[202]]== null&& _0xd64ax2c> 0){this[_0x841a[202]]= []};if(this[_0x841a[202]]!= null){for(var _0xd64ax30=0;_0xd64ax30<= _0xd64ax2c;_0xd64ax30++){var _0xd64ax31=[ new mxPoint(_0xd64ax2b[_0x841a[70]]+ (_0xd64ax30+ 1)* _0xd64ax15[_0x841a[95]],_0xd64ax2b[_0x841a[73]]), new mxPoint(_0xd64ax2b[_0x841a[70]]+ (_0xd64ax30+ 1)* _0xd64ax15[_0x841a[95]],_0xd64ax2f)];if(this[_0x841a[202]][_0xd64ax30]!= null){this[_0x841a[202]][_0xd64ax30][_0x841a[52]]= 1;this[_0x841a[202]][_0xd64ax30][_0x841a[203]]= _0xd64ax31;this[_0x841a[202]][_0xd64ax30][_0x841a[179]]()}else {var _0xd64ax32= new mxPolyline(_0xd64ax31,this[_0x841a[153]],this[_0x841a[52]]);_0xd64ax32[_0x841a[166]]= this[_0x841a[166]];_0xd64ax32[_0x841a[204]]= this[_0x841a[205]];_0xd64ax32[_0x841a[206]]= false;_0xd64ax32[_0x841a[52]]= _0xd64ax29;_0xd64ax32[_0x841a[12]](this[_0x841a[53]][_0x841a[178]]);_0xd64ax32[_0x841a[179]]();this[_0x841a[202]][_0xd64ax30]= _0xd64ax32}};for(var _0xd64ax30=_0xd64ax2c;_0xd64ax30< this[_0x841a[202]][_0x841a[83]];_0xd64ax30++){this[_0x841a[202]][_0xd64ax30][_0x841a[177]]()};this[_0x841a[202]][_0x841a[207]](_0xd64ax2c,this[_0x841a[202]][_0x841a[83]]- _0xd64ax2c)};if(this[_0x841a[208]]== null&& _0xd64ax2d> 0){this[_0x841a[208]]= []};if(this[_0x841a[208]]!= null){for(var _0xd64ax30=0;_0xd64ax30<= _0xd64ax2d;_0xd64ax30++){var _0xd64ax31=[ new mxPoint(_0xd64ax2b[_0x841a[70]],_0xd64ax2b[_0x841a[73]]+ (_0xd64ax30+ 1)* _0xd64ax15[_0x841a[96]]), new mxPoint(_0xd64ax2e,_0xd64ax2b[_0x841a[73]]+ (_0xd64ax30+ 1)* _0xd64ax15[_0x841a[96]])];if(this[_0x841a[208]][_0xd64ax30]!= null){this[_0x841a[208]][_0xd64ax30][_0x841a[52]]= 1;this[_0x841a[208]][_0xd64ax30][_0x841a[203]]= _0xd64ax31;this[_0x841a[208]][_0xd64ax30][_0x841a[179]]()}else {var _0xd64ax32= new mxPolyline(_0xd64ax31,this[_0x841a[153]],_0xd64ax29);_0xd64ax32[_0x841a[166]]= this[_0x841a[166]];_0xd64ax32[_0x841a[204]]= this[_0x841a[205]];_0xd64ax32[_0x841a[206]]= false;_0xd64ax32[_0x841a[52]]= _0xd64ax29;_0xd64ax32[_0x841a[12]](this[_0x841a[53]][_0x841a[178]]);_0xd64ax32[_0x841a[179]]();this[_0x841a[208]][_0xd64ax30]= _0xd64ax32}};for(var _0xd64ax30=_0xd64ax2d;_0xd64ax30< this[_0x841a[208]][_0x841a[83]];_0xd64ax30++){this[_0x841a[208]][_0xd64ax30][_0x841a[177]]()};this[_0x841a[208]][_0x841a[207]](_0xd64ax2d,this[_0x841a[208]][_0x841a[83]]- _0xd64ax2d)}};mxEdgeHandler[_0x841a[44]][_0x841a[209]]= true;mxGraphHandler[_0x841a[44]][_0x841a[58]]= true;var _0xd64ax33=mxGraphHandler[_0x841a[44]][_0x841a[210]];mxGraphHandler[_0x841a[44]][_0x841a[210]]= function(_0xd64ax34,_0xd64ax35,_0xd64ax14){for(var _0xd64ax30=0;_0xd64ax30< _0xd64ax35[_0x841a[83]];_0xd64ax30++){if(this[_0x841a[14]][_0x841a[36]]()[_0x841a[211]](_0xd64ax35[_0xd64ax30])){var _0xd64ax36=this[_0x841a[14]][_0x841a[212]](_0xd64ax35[_0xd64ax30]);if(_0xd64ax36!= null&& _0xd64ax36[_0x841a[213]]){return false}}};return _0xd64ax33[_0x841a[33]](this,arguments)};mxGuide[_0x841a[44]][_0x841a[214]]= function(_0xd64ax14){return !mxEvent[_0x841a[215]](_0xd64ax14)};mxPopupMenuAddItem= mxPopupMenu[_0x841a[44]][_0x841a[216]];mxPopupMenu[_0x841a[44]][_0x841a[216]]= function(_0xd64ax37,_0xd64ax38,_0xd64ax39,_0xd64ax34,_0xd64ax3a,_0xd64ax3b){var _0xd64ax3c=mxPopupMenuAddItem[_0x841a[33]](this,arguments);if(_0xd64ax3b!= null&& !_0xd64ax3b){mxEvent[_0x841a[35]](_0xd64ax3c,_0x841a[217],function(_0xd64ax14){mxEvent[_0x841a[218]](_0xd64ax14)})};return _0xd64ax3c};var _0xd64ax3d=mxGraphHandler[_0x841a[44]][_0x841a[219]];mxGraphHandler[_0x841a[44]][_0x841a[219]]= function(_0xd64ax3e){var _0xd64ax3f=this[_0x841a[14]][_0x841a[36]]();var _0xd64ax40=_0xd64ax3f[_0x841a[221]](this[_0x841a[14]][_0x841a[220]]());var _0xd64ax41=_0xd64ax3d[_0x841a[33]](this,arguments);var _0xd64ax34=_0xd64ax3f[_0x841a[221]](_0xd64ax41);if(_0xd64ax40== null|| (_0xd64ax40!= _0xd64ax41&& _0xd64ax40!= _0xd64ax34)){while(!this[_0x841a[14]][_0x841a[222]](_0xd64ax41)&& !this[_0x841a[14]][_0x841a[222]](_0xd64ax34)&& _0xd64ax3f[_0x841a[211]](_0xd64ax34)&& !this[_0x841a[14]][_0x841a[223]](_0xd64ax34)){_0xd64ax41= _0xd64ax34;_0xd64ax34= this[_0x841a[14]][_0x841a[36]]()[_0x841a[221]](_0xd64ax41)}};return _0xd64ax41};var _0xd64ax42=mxGraphHandler[_0x841a[44]][_0x841a[224]];mxGraphHandler[_0x841a[44]][_0x841a[224]]= function(_0xd64ax41){var _0xd64ax3c=_0xd64ax42[_0x841a[33]](this,arguments);var _0xd64ax3f=this[_0x841a[14]][_0x841a[36]]();var _0xd64ax40=_0xd64ax3f[_0x841a[221]](this[_0x841a[14]][_0x841a[220]]());var _0xd64ax34=_0xd64ax3f[_0x841a[221]](_0xd64ax41);if(_0xd64ax40== null|| (_0xd64ax40!= _0xd64ax41&& _0xd64ax40!= _0xd64ax34)){if(!this[_0x841a[14]][_0x841a[222]](_0xd64ax41)&& _0xd64ax3f[_0x841a[211]](_0xd64ax34)&& !this[_0x841a[14]][_0x841a[223]](_0xd64ax34)){_0xd64ax3c= true}};return _0xd64ax3c};mxGraphHandler[_0x841a[44]][_0x841a[225]]= function(_0xd64ax3e){var _0xd64ax41=_0xd64ax3e[_0x841a[226]]();if(_0xd64ax41== null){_0xd64ax41= this[_0x841a[227]]};var _0xd64ax3f=this[_0x841a[14]][_0x841a[36]]();var _0xd64ax34=_0xd64ax3f[_0x841a[221]](_0xd64ax41);while(this[_0x841a[14]][_0x841a[222]](_0xd64ax41)&& _0xd64ax3f[_0x841a[211]](_0xd64ax34)&& !this[_0x841a[14]][_0x841a[223]](_0xd64ax34)){_0xd64ax41= _0xd64ax34;_0xd64ax34= _0xd64ax3f[_0x841a[221]](_0xd64ax41)};this[_0x841a[14]][_0x841a[229]](_0xd64ax41,_0xd64ax3e[_0x841a[228]]())};mxPanningHandler[_0x841a[44]][_0x841a[230]]= function(_0xd64ax3e){var _0xd64ax41=_0xd64ax3e[_0x841a[226]]();var _0xd64ax3f=this[_0x841a[14]][_0x841a[36]]();var _0xd64ax34=_0xd64ax3f[_0x841a[221]](_0xd64ax41);while(_0xd64ax3f[_0x841a[211]](_0xd64ax34)&& !this[_0x841a[14]][_0x841a[223]](_0xd64ax34)){if(this[_0x841a[14]][_0x841a[222]](_0xd64ax34)){_0xd64ax41= _0xd64ax34};_0xd64ax34= _0xd64ax3f[_0x841a[221]](_0xd64ax34)};return _0xd64ax41}};Editor[_0x841a[44]][_0x841a[18]]= function(){var _0xd64axe=this[_0x841a[14]];var _0xd64ax43= new mxUndoManager();var _0xd64ax44=function(_0xd64ax45,_0xd64ax14){_0xd64ax43[_0x841a[233]](_0xd64ax14[_0x841a[232]](_0x841a[231]))};_0xd64axe[_0x841a[36]]()[_0x841a[35]](mxEvent.UNDO,_0xd64ax44);_0xd64axe[_0x841a[234]]()[_0x841a[35]](mxEvent.UNDO,_0xd64ax44);var _0xd64ax46=function(_0xd64ax45,_0xd64ax14){var _0xd64ax47=_0xd64axe[_0x841a[236]](_0xd64ax14[_0x841a[232]](_0x841a[231])[_0x841a[235]]);var _0xd64ax35=[];for(var _0xd64ax30=1;_0xd64ax30< _0xd64ax47[_0x841a[83]];_0xd64ax30++){if(_0xd64axe[_0x841a[53]][_0x841a[237]](_0xd64ax47[_0xd64ax30])!= null){_0xd64ax35[_0x841a[238]](_0xd64ax47[_0xd64ax30])}};_0xd64axe[_0x841a[239]](_0xd64ax35)};_0xd64ax43[_0x841a[35]](mxEvent.UNDO,_0xd64ax46);_0xd64ax43[_0x841a[35]](mxEvent.REDO,_0xd64ax46);return _0xd64ax43};Editor[_0x841a[44]][_0x841a[13]]= function(){mxStencilRegistry[_0x841a[241]](STENCIL_PATH+ _0x841a[240])};(function(){mxStencilRegistry[_0x841a[242]]= {};mxStencilRegistry[_0x841a[243]]= [];mxStencilRegistry[_0x841a[244]]= function(_0xd64ax48){var _0xd64ax3c=mxStencilRegistry[_0x841a[245]][_0xd64ax48];if(_0xd64ax3c== null){var _0xd64ax49=mxStencilRegistry[_0x841a[246]](_0xd64ax48);if(_0xd64ax49!= null){var _0xd64ax4a=mxStencilRegistry[_0x841a[242]][_0xd64ax49];if(_0xd64ax4a!= null){if(mxStencilRegistry[_0x841a[243]][_0xd64ax49]== null){mxStencilRegistry[_0x841a[243]][_0xd64ax49]= 1;for(var _0xd64ax30=0;_0xd64ax30< _0xd64ax4a[_0x841a[83]];_0xd64ax30++){var _0xd64ax4b=_0xd64ax4a[_0xd64ax30];if(_0xd64ax4b[_0x841a[248]]()[_0x841a[247]](_0xd64ax4b[_0x841a[83]]- 4,_0xd64ax4b[_0x841a[83]])== _0x841a[25]){mxStencilRegistry[_0x841a[241]](_0xd64ax4b,null)}else {if(_0xd64ax4b[_0x841a[248]]()[_0x841a[247]](_0xd64ax4b[_0x841a[83]]- 3,_0xd64ax4b[_0x841a[83]])== _0x841a[249]){var _0xd64ax4c=mxUtils[_0x841a[250]](_0xd64ax4b);if(_0xd64ax4c!= null){eval[_0x841a[11]](window,_0xd64ax4c[_0x841a[251]]())}}else {}}}}}else {mxStencilRegistry[_0x841a[241]](STENCIL_PATH+ _0x841a[252]+ _0xd64ax49+ _0x841a[25],null)};_0xd64ax3c= mxStencilRegistry[_0x841a[245]][_0xd64ax48]}};return _0xd64ax3c};mxStencilRegistry[_0x841a[246]]= function(_0xd64ax48){var _0xd64ax4d=_0xd64ax48[_0x841a[254]](_0x841a[253]);var _0xd64ax4e=null;if(_0xd64ax4d[_0x841a[83]]> 0&& _0xd64ax4d[0]== _0x841a[255]){_0xd64ax4e= _0xd64ax4d[1];for(var _0xd64ax30=2;_0xd64ax30< _0xd64ax4d[_0x841a[83]]- 1;_0xd64ax30++){_0xd64ax4e+= _0x841a[252]+ _0xd64ax4d[_0xd64ax30]}};return _0xd64ax4e};mxStencilRegistry[_0x841a[241]]= function(_0xd64ax4f,_0xd64ax50,_0xd64ax51){_0xd64ax51= (_0xd64ax51!= null)?_0xd64ax51:false;var _0xd64ax52=mxStencilRegistry[_0x841a[243]][_0xd64ax4f];if(_0xd64ax51|| _0xd64ax52== null){var _0xd64ax53=false;if(_0xd64ax52== null){var _0xd64ax4c=mxUtils[_0x841a[250]](_0xd64ax4f);_0xd64ax52= _0xd64ax4c[_0x841a[256]]();mxStencilRegistry[_0x841a[243]][_0xd64ax4f]= _0xd64ax52;_0xd64ax53= true};mxStencilRegistry[_0x841a[257]](_0xd64ax52,_0xd64ax50,_0xd64ax53)}};mxStencilRegistry[_0x841a[257]]= function(_0xd64ax54,_0xd64ax50,_0xd64ax53){_0xd64ax53= (_0xd64ax53!= null)?_0xd64ax53:true;var _0xd64ax55=_0xd64ax54[_0x841a[258]];var _0xd64ax56=_0xd64ax55[_0x841a[184]];var _0xd64ax57=_0x841a[20];var _0xd64ax48=_0xd64ax55[_0x841a[56]](_0x841a[259]);if(_0xd64ax48!= null){_0xd64ax57= _0xd64ax48+ _0x841a[253]};while(_0xd64ax56!= null){if(_0xd64ax56[_0x841a[260]]== mxConstants[_0x841a[261]]){_0xd64ax48= _0xd64ax56[_0x841a[56]](_0x841a[259]);if(_0xd64ax48!= null){_0xd64ax57= _0xd64ax57[_0x841a[248]]();var _0xd64ax58=_0xd64ax48[_0x841a[263]](/ /g,_0x841a[262]);if(_0xd64ax53){mxStencilRegistry[_0x841a[264]](_0xd64ax57+ _0xd64ax58[_0x841a[248]](), new mxStencil(_0xd64ax56))};if(_0xd64ax50!= null){var _0xd64ax19=_0xd64ax56[_0x841a[56]](_0x841a[265]);var _0xd64ax1a=_0xd64ax56[_0x841a[56]](_0x841a[266]);_0xd64ax19= (_0xd64ax19== null)?80:parseInt(_0xd64ax19,10);_0xd64ax1a= (_0xd64ax1a== null)?80:parseInt(_0xd64ax1a,10);_0xd64ax50(_0xd64ax57,_0xd64ax58,_0xd64ax48,_0xd64ax19,_0xd64ax1a)}}};_0xd64ax56= _0xd64ax56[_0x841a[267]]}}})();OpenFile= function(_0xd64ax59){this[_0x841a[268]]= null;this[_0x841a[269]]= null;this[_0x841a[270]]= _0xd64ax59};OpenFile[_0x841a[44]][_0x841a[271]]= function(_0xd64ax6){this[_0x841a[269]]= _0xd64ax6;this[_0x841a[272]]()};OpenFile[_0x841a[44]][_0x841a[273]]= function(_0xd64ax6,_0xd64ax5a){this[_0x841a[274]]= _0xd64ax6;this[_0x841a[21]]= _0xd64ax5a;this[_0x841a[272]]()};OpenFile[_0x841a[44]][_0x841a[275]]= function(_0xd64ax5b){this[_0x841a[276]]();mxUtils[_0x841a[277]](_0xd64ax5b)};OpenFile[_0x841a[44]][_0x841a[272]]= function(){if(this[_0x841a[269]]!= null&& this[_0x841a[274]]!= null){this[_0x841a[269]](this[_0x841a[274]],this[_0x841a[21]]);this[_0x841a[276]]()}};OpenFile[_0x841a[44]][_0x841a[276]]= function(){if(this[_0x841a[270]]!= null){this[_0x841a[270]]()}} \ No newline at end of file diff --git a/public/assets/plugins/square/js/EditorUi.js b/public/assets/plugins/square/js/EditorUi.js index cfdbef9..b1a15c2 100644 --- a/public/assets/plugins/square/js/EditorUi.js +++ b/public/assets/plugins/square/js/EditorUi.js @@ -1,1623 +1 @@ -/** - * $Id: EditorUi.js,v 1.21 2013/03/14 20:46:36 david Exp $ - * Copyright (c) 2006-2012, JGraph Ltd - */ -/** - * Constructs a new graph editor - */ - -EditorUi = function(editor, container) { - this.editor = editor || new Editor(); - this.container = container || document.getElementById('geEditor'); - var graph = editor.graph; - var self = this; - - // Disables scrollbars - this.container.style.overflow = 'hidden'; - - // Pre-fetches submenu image - new Image().src = mxPopupMenu.prototype.submenuImage; - - // Pre-fetches connect image - if (mxConnectionHandler.prototype.connectImage != null) { - new Image().src = mxConnectionHandler.prototype.connectImage.src; - } - - // Creates the user interface - this.actions = new Actions(this); - this.menus = new Menus(this); - this.createDivs(); - this.refresh(); - this.createUi(); - - // Disables HTML and text selection - var textEditing = mxUtils.bind(this, function(evt) { - if (evt == null) { - evt = window.event; - } - - if (this.isSelectionAllowed(evt)) { - return true; - } - - return graph.isEditing(); - }); - - // Disables text selection while not editing and no dialog visible - if (this.container == document.body) { - this.menubarContainer.onselectstart = textEditing; - this.menubarContainer.onmousedown = textEditing; - this.toolbarContainer.onselectstart = textEditing; - this.toolbarContainer.onmousedown = textEditing; - this.diagramContainer.onselectstart = textEditing; - this.diagramContainer.onmousedown = textEditing; - this.sidebarContainer.onselectstart = textEditing; - this.sidebarContainer.onmousedown = textEditing; - this.footerContainer.onselectstart = textEditing; - this.footerContainer.onmousedown = textEditing; - } - - // And uses built-in context menu while editing - if (mxClient.IS_IE && (typeof(document.documentMode) === 'undefined' || - document.documentMode < 9)) { - mxEvent.addListener(this.diagramContainer, 'contextmenu', textEditing); - mxEvent.addListener(this.sidebarContainer, 'contextmenu', textEditing); - } else { - // Allows browser context menu outside of diagram and sidebar - this.diagramContainer.oncontextmenu = textEditing; - this.sidebarContainer.oncontextmenu = textEditing; - } - - // Contains the main graph instance inside the given panel - graph.init(this.diagramContainer); - graph.refresh(); - - // Enables scrollbars and sets cursor style for the container - graph.container.setAttribute('tabindex', '0'); - // graph.container.style.overflow = (touchStyle) ? 'hidden' : 'auto'; - graph.container.style.cursor = 'default'; - graph.container.style.backgroundImage = 'url(' + editor.gridImage + ')'; - graph.container.style.backgroundPosition = '-1px -1px'; - graph.container.focus(); - - // Keeps graph container focused on mouse down - var graphFireMouseEvent = graph.fireMouseEvent; - graph.fireMouseEvent = function(evtName, me, sender) { - if (evtName == mxEvent.MOUSE_DOWN) { - this.container.focus(); - } - - graphFireMouseEvent.apply(this, arguments); - }; - - // Giuseppe Careri - // Defines invalid connections along with the error messages that they produce. - this.createMultiplicities(graph.multiplicities, ['start', 'finally', 'end'], [ - [1, 1], - [1, 1], - [0, 0] - ], [ - [0, 0], - [0, 0], - [1, 'n'] - ]); - this.createMultiplicities(graph.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(graph.multiplicities, ['set', 'math'], [ - [1, 1], - [1, 1] - ], [ - [1, 'n'], - [1, 'n'] - ]); - this.createMultiplicities(graph.multiplicities, ['background', 'playback', - 'menu', 'saydigits', 'saynumber', 'sayphonetic', 'tts', 'ispeechtts', - 'getdigits', 'getsecretdigits' - ], [ - [1, 'n'], - [1, 1], - [1, 'n'], - [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'] - ]); - this.createMultiplicities(graph.multiplicities, ['record'], [ - [1, 1] - ], [ - [1, 'n'] - ]); - this.createMultiplicities(graph.multiplicities, ['database', 'ispeechasr', 'sendSMS', 'sendMail'], [ - [1, 1], - [1, 1], - [1, 1], - [1, 1] - ], [ - [1, 'n'], - [1, 'n'], - [1, 'n'], - [1, 'n'] - ]); - this.createMultiplicities(graph.multiplicities, ['gotoc', 'gotoif', - 'gotoiftime', 'gotoifmultitime', 'vswitch' - ], [ - [0, 0], - [1, 2], - [1, 2], - [1, 2], - [1, 'n'] - ], [ - [1, 'n'], - [1, 'n'], - [1, 'n'], - [1, 'n'], - [1, 'n'] - ]); - this.createMultiplicities(graph.multiplicities, ['queuelog', 'goal'], [ - [1, 1], - [1, 1] - ], [ - [1, 'n'], - [1, 'n'] - ]); - this.createMultiplicities(graph.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'] - ]); - - // Giuseppe Careri - // Processes a doubleclick on an optional cell and fires a event. - // The event is fired initially. - // If the graph is enabled and the event has not been consumed, then is called with the given cell. - // The event is ignored if no cell was specified. - graph.dblClick = function(evt, cell) { - var edges = ['background', 'gotoif', 'gotoiftime', 'menu', 'getdigits', 'getsecretdigits', - 'vswitch' - ]; - var mxe = new mxEventObject(mxEvent.DOUBLE_CLICK, 'event', evt, 'cell', - cell); - this.fireEvent(mxe); - - if (this.isEnabled() && !mxEvent.isConsumed(evt) && !mxe.isConsumed()) { - // Override dblClick Vertices and Edges - if (this.getModel().isEdge(cell)) { - if (edges.indexOf(cell.source.value.tagName) >= 0) - this.startEditingAtCell(cell); - } else if (this.getModel().isVertex(cell)) { - self.showDialog(new GeneralDialog(self, cell).container, 320, 280, true, - true); - } - mxe.consume(); - } - } - - // Configures automatic expand on mouseover - graph.panningHandler.autoExpand = true; - - // Installs context menu - graph.panningHandler.factoryMethod = mxUtils.bind(this, function(menu, cell, - evt) { - this.menus.createPopupMenu(menu, cell, evt); - }); - - // Initializes the outline - editor.outline.init(this.outlineContainer); - - // Hides context menu - mxEvent.addGestureListeners(document, mxUtils.bind(this, function(evt) { - graph.panningHandler.hideMenu(); - })); - - // Adds gesture handling (pinch to zoom) - if (mxClient.IS_TOUCH) { - mxEvent.addListener(graph.container, 'gesturechange', - mxUtils.bind(this, function(evt) { - graph.view.getDrawPane().setAttribute('transform', 'scale(' + evt.scale + - ')'); - graph.view.getOverlayPane().style.visibility = 'hidden'; - }) - ); - - mxEvent.addListener(graph.container, 'gestureend', - mxUtils.bind(this, function(evt) { - graph.view.getDrawPane().removeAttribute('transform'); - graph.zoomToCenter = true; - graph.zoom(evt.scale); - graph.view.getOverlayPane().style.visibility = 'visible'; - }) - ); - } - - // Create handler for key events - var keyHandler = this.createKeyHandler(editor); - - // Getter for key handler - this.getKeyHandler = function() { - return keyHandler; - }; - - // Updates the editor UI after the window has been resized - mxEvent.addListener(window, 'resize', mxUtils.bind(this, function() { - this.refresh(); - graph.sizeDidChange(); - this.editor.outline.update(false); - this.editor.outline.outline.sizeDidChange(); - })); - - // Updates action and menu states - this.init(); - this.open(); -}; - -/** - * Specifies the size of the split bar. - */ -EditorUi.prototype.splitSize = (mxClient.IS_TOUCH) ? 16 : 8; - -/** - * Specifies the height of the menubar. Default is 34. - */ -EditorUi.prototype.menubarHeight = 33; - -/** - * Specifies the height of the toolbar. Default is 36. - */ -EditorUi.prototype.toolbarHeight = 36; - -/** - * Specifies the height of the footer. Default is 28. - */ -EditorUi.prototype.footerHeight = 28; - -/** - * Specifies the position of the horizontal split bar. Default is 212. - */ -EditorUi.prototype.hsplitPosition = 204; - -/** - * Specifies the position of the vertical split bar. Default is 190. - */ -EditorUi.prototype.vsplitPosition = 190; - -/** - * Installs the listeners to update the action states. - */ -EditorUi.prototype.init = function() { - // Updates action states - this.addUndoListener(); - this.addSelectionListener(); - - // Overrides clipboard to update paste action state - var paste = this.actions.get('paste'); - - var updatePaste = function() { - paste.setEnabled(!mxClipboard.isEmpty()); - }; - - var mxClipboardCut = mxClipboard.cut; - mxClipboard.cut = function() { - mxClipboardCut.apply(this, arguments); - updatePaste(); - }; - - var mxClipboardCopy = mxClipboard.copy; - mxClipboard.copy = function() { - mxClipboardCopy.apply(this, arguments); - updatePaste(); - }; -}; - -/** - * Hook for allowing selection and context menu for certain events. - */ -EditorUi.prototype.isSelectionAllowed = function(evt) { - return false; -}; - -/** - * Opens the current diagram via the window.opener if one exists. - */ -EditorUi.prototype.open = function() { - // Cross-domain window access is not allowed in FF, so if we - // were opened from another domain then this will fail. - try { - if (window.opener != null && window.opener.openFile != null) { - window.opener.openFile.setConsumer(mxUtils.bind(this, function(xml, - filename) { - try { - var doc = mxUtils.parseXml(xml); - this.editor.setGraphXml(doc.documentElement); - this.editor.modified = false; - this.editor.undoManager.clear(); - - if (filename != null) { - this.editor.filename = filename; - } - } catch (e) { - mxUtils.alert(mxResources.get('invalidOrMissingFile') + ': ' + e.message); - } - })); - } - } catch (e) { - // ignore - } -}; - -/** - * Giuseppe Careri - * Opens the current diagram via string. - */ -EditorUi.prototype.openString = function(xml, filename, data) { - try { - var doc = mxUtils.parseXml(xml); - this.editor.setGraphXml(doc.documentElement); - this.editor.modified = false; - this.editor.undoManager.clear(); - - if (filename != null) { - this.editor.filename = filename; - } - - if (data != null) { - this.editor.data = data; - } - } catch (e) { - mxUtils.alert(mxResources.get('invalidOrMissingFile') + ': ' + e.message); - } -}; - -/** - * Saves As the current graph under the given project name. - */ -EditorUi.prototype.new = function(name) { - var editor = this.editor; - - if (name != null) { - var xml = mxUtils.getPrettyXml(this.editor.getGraphXml()); - try { - if (useLocalStorage) { - if (localStorage.getItem(name) != null && - !mxUtils.confirm(mxResources.get('replace', [name]))) { - return; - } - - localStorage.setItem(name, xml); - this.editor.setStatus(mxResources.get('saved') + ' ' + new Date()); - } else { - console.log(xml.length); - console.log(MAX_REQUEST_SIZE); - if (xml.length < MAX_REQUEST_SIZE) { - xml = encodeURIComponent(xml); - name = encodeURIComponent(name); - - var xhr = new XMLHttpRequest(); - xhr.open("POST", SAVE_URL, true); - xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); - xhr.setRequestHeader('Authorization', 'Bearer ' + editor.data.token); - xhr.onload = function(e) { - if (xhr.readyState === 4) { - if (xhr.status === 201) { - editor.setStatus('Project ' + JSON.parse(xhr.response).name + - ' is opening in new window!'); - setTimeout(function() { - window.open('square/projects/view/' + JSON.parse(xhr.response).id, - '_blank'); - }, 1500); - } else { - try { - var response = JSON.parse(xhr.response); - editor.setStatus('Error creating project: ' + response.errors[0].message); - } catch (e) { - editor.setStatus('Error creating project' + ' (' + xhr.status + ' ' + xhr.statusText + ')'); - } - } - } - }; - xhr.onerror = function(e) { - mxUtils.alert(xhr.statusText); - }; - xhr.send('description=project_new&name=' + name); - } else { - mxUtils.alert(mxResources.get('drawingTooLarge')); - mxUtils.popup(xml); - - return; - } - } - - this.editor.filename = name; - this.editor.modified = false; - } catch (e) { - this.editor.setStatus('Error creating project'); - } - } else { - this.editor.setStatus('Error creating project'); - } -}; - - -/** - * Saves the current graph under the given project name. - */ -EditorUi.prototype.save = function(name) { - var editor = this.editor; - - if (name != null) { - var xml = mxUtils.getPrettyXml(this.editor.getGraphXml()); - try { - if (useLocalStorage) { - if (localStorage.getItem(name) != null && - !mxUtils.confirm(mxResources.get('replace', [name]))) { - return; - } - - localStorage.setItem(name, xml); - this.editor.setStatus(mxResources.get('saved') + ' ' + new Date()); - } else { - console.log(xml.length); - console.log(MAX_REQUEST_SIZE); - if (xml.length < MAX_REQUEST_SIZE) { - xml = encodeURIComponent(xml); - - var xhr = new XMLHttpRequest(); - xhr.open("PUT", SAVE_URL + this.editor.data.id, true); - xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); - xhr.setRequestHeader('Authorization', 'Bearer ' + editor.data.token); - xhr.onload = function(e) { - if (xhr.readyState === 4) { - if (xhr.status === 200) { - editor.setStatus('Updated at ' + JSON.parse(xhr.response).updatedAt + - ' (' + xhr.status + ' ' + xhr.statusText + ')'); - } else { - try { - var response = JSON.parse(xhr.response); - editor.setStatus('Error saving project: ' + response.errors[0].message); - } catch (e) { - editor.setStatus('Error saving project' + ' (' + xhr.status + ' ' + xhr.statusText + ')'); - } - } - } - }; - xhr.onerror = function(e) { - mxUtils.alert(xhr.statusText); - }; - xhr.send('preproduction=' + xml); - } else { - mxUtils.alert(mxResources.get('drawingTooLarge')); - mxUtils.popup(xml); - - return; - } - } - - this.editor.filename = name; - this.editor.modified = false; - } catch (e) { - this.editor.setStatus('Error saving file'); - } - } else { - this.editor.setStatus('Error saving file'); - } -}; - -/** - * Saves the current graph under the given project name. - */ -EditorUi.prototype.description = function(description) { - var editor = this.editor; - - if (description !== null) { - var xhr = new XMLHttpRequest(); - xhr.open("PUT", SAVE_URL + this.editor.data.id, true); - xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); - xhr.setRequestHeader('Authorization', 'Bearer ' + editor.data.token); - - xhr.onload = function(e) { - if (xhr.readyState === 4) { - if (xhr.status === 200) { - editor.setStatus('Updated at ' + JSON.parse(xhr.response).updatedAt + ' (' + xhr.status + ' ' + xhr.statusText + ')'); - editor.data.description = description; - } else { - try { - var response = JSON.parse(xhr.response); - editor.setStatus('Error updating description: ' + response.errors[0].message); - } catch (e) { - editor.setStatus('Error updating description' + ' (' + xhr.status + ' ' + xhr.statusText + ')'); - } - } - } - }; - xhr.onerror = function(e) { - mxUtils.alert(xhr.statusText); - }; - xhr.send('description=' + description); - } else { - this.editor.setStatus('Error updating description'); - } -}; - -/** - * Saves As the current graph under the given project name. - */ -EditorUi.prototype.saveAs = function(name) { - var editor = this.editor; - - if (name != null) { - var xml = mxUtils.getPrettyXml(this.editor.getGraphXml()); - try { - if (useLocalStorage) { - if (localStorage.getItem(name) != null && - !mxUtils.confirm(mxResources.get('replace', [name]))) { - return; - } - - localStorage.setItem(name, xml); - this.editor.setStatus(mxResources.get('saved') + ' ' + new Date()); - } else { - console.log(xml.length); - console.log(MAX_REQUEST_SIZE); - if (xml.length < MAX_REQUEST_SIZE) { - xml = encodeURIComponent(xml); - name = encodeURIComponent(name); - - var xhr = new XMLHttpRequest(); - xhr.open("POST", SAVE_URL, true); - xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); - xhr.setRequestHeader('Authorization', 'Bearer ' + editor.data.token); - xhr.onload = function(e) { - if (xhr.readyState === 4) { - if (xhr.status === 201) { - editor.setStatus('Project ' + JSON.parse(xhr.response).name + - ' is opening in new window!'); - setTimeout(function() { - window.open('square/projects/view/' + JSON.parse(xhr.response).id, - '_blank'); - }, 1500); - } else { - try { - var response = JSON.parse(xhr.response); - editor.setStatus('Error cloning project: ' + response.errors[0].message); - } catch (e) { - editor.setStatus('Error cloning project' + ' (' + xhr.status + ' ' + xhr.statusText + ')'); - } - } - } - }; - xhr.onerror = function(e) { - mxUtils.alert(xhr.statusText); - }; - xhr.send('description=project_cloned&name=' + name + - '&preproduction=' + xml + '&production=' + xml); - } else { - mxUtils.alert(mxResources.get('drawingTooLarge')); - mxUtils.popup(xml); - - return; - } - } - - this.editor.filename = name; - this.editor.modified = false; - } catch (e) { - this.editor.setStatus('Error saving file'); - } - } else { - this.editor.setStatus('Error saving file'); - } -}; - -/** - * Plush the current graph under the given project name. - */ -EditorUi.prototype.validate = function(a, b) { - var graph = this.editor.graph; - for (var a = a != null ? a : graph.model.getRoot(), b = b != null ? b : {}, c = - true, d = graph.model.getChildCount(a), e = 0; e < d; e++) { - var f = graph.model.getChildAt(a, e), - g = b; - graph.isValidRoot(f) && (g = {}); - g = this.validate(f, g); - g != null ? graph.setCellWarning(f, g.replace(/\n/g, "
")) : graph.setCellWarning( - f, null); - c = c && g == null - } - - d = ""; - - //--- Giuseppe Careri - Modify 12/12/2013 - giuseppe.careri@gmail.com - if (graph.model.isVertex(a)) { - switch (a.value.nodeName) { - case 'start': - d = this.validateBlock('start') ? '' : "Only one Start block is allowed" + - "\n"; - break; - case 'finally': - d = this.validateBlock('finally') ? '' : - "Only one Finally block is allowed" + "\n"; - break; - case 'playback': - d = (a.value.getAttribute('file_id') > 0) ? "" : mxResources.get( - 'noAudioSelected') + "\n"; - break; - case 'background': - case 'menu': - d = (a.value.getAttribute('file_id') > 0) ? "" : mxResources.get( - 'noAudioSelected') + "\n"; - d += (a.value.getAttribute('digit') > 0) ? "" : mxResources.get( - 'wrongMaxDigit') + "\n"; - break; - case 'getdigits': - d = (a.value.getAttribute('file_id') > 0) ? "" : mxResources.get( - 'noAudioSelected') + "\n"; - d += (a.value.getAttribute('variable_id') > 0) ? "" : mxResources.get( - 'noVariableSelected') + "\n"; - d += (a.value.getAttribute('mindigit') > 0) ? "" : mxResources.get( - 'wrongMinDigit') + "\n"; - d += (a.value.getAttribute('maxdigit') > 0) ? "" : mxResources.get( - 'wrongMaxDigit') + "\n"; - case 'getsecretdigits': - d = (a.value.getAttribute('file_id') > 0) ? "" : mxResources.get( - 'noAudioSelected') + "\n"; - d += (a.value.getAttribute('variable_id') > 0) ? "" : mxResources.get( - 'noVariableSelected') + "\n"; - d += (a.value.getAttribute('mindigit') > 0) ? "" : mxResources.get( - 'wrongMinDigit') + "\n"; - d += (a.value.getAttribute('maxdigit') > 0) ? "" : mxResources.get( - 'wrongMaxDigit') + "\n"; - d += (a.value.getAttribute('hiddendigitsnum') >= 0) ? "" : mxResources.get( - 'wrongHiddenDigitsnum') + "\n"; - break; - case 'vswitch': - d = (a.value.getAttribute('variable') !== "") ? "" : mxResources.get( - 'noVariableSelected') + "\n"; - break; - case 'database': - d = (a.value.getAttribute('odbc_id') > 0) ? "" : mxResources.get( - 'noDatabaseSelected') + "\n"; - break; - case 'ext_dial': - d = (a.value.getAttribute('trunk_name') !== '-1') ? "" : mxResources.get( - 'noTrunkSelected') + "\n"; - break; - case 'set': - case 'math': - d = (a.value.getAttribute('variable_id') > 0) ? "" : mxResources.get( - 'noVariableSelected') + "\n"; - break; - case 'gotoc': - d = (a.value.getAttribute('extension') !== "") ? "" : mxResources.get( - 'noExtensionSelected') + "\n"; - break; - case 'system': - case 'agi': - d = (a.value.getAttribute('command') !== "") ? "" : mxResources.get( - 'noCommandSelected') + "\n"; - break; - case 'gotoif': - d = (a.value.getAttribute('condition') !== "") ? "" : mxResources.get( - 'noConditionSelected') + "\n"; - break; - case 'saydigits': - d = (a.value.getAttribute('digits') !== "") ? "" : mxResources.get( - 'noDigitsSelected') + "\n"; - break; - case 'saynumber': - d = (a.value.getAttribute('number') !== "") ? "" : mxResources.get( - 'noNumberSelected') + "\n"; - break; - case 'sayphonetic': - d = (a.value.getAttribute('text') !== "") ? "" : mxResources.get( - 'noTextSelected') + "\n"; - break; - case 'record': - d = (a.value.getAttribute('file') !== "") ? "" : mxResources.get( - 'noFileSelected') + "\n"; - break; - case 'goal': - d = (a.value.getAttribute('goalname') !== "") ? "" : mxResources.get( - 'noGoalSelected') + "\n"; - break; - case 'ext_dial': - d = (a.value.getAttribute('phone') !== "") ? "" : mxResources.get( - 'noIdentifierSelected') + "\n"; - break; - case 'dial': - d = (a.value.getAttribute('sip_id') > 0) ? "" : mxResources.get( - 'noIdentifierSelected') + "\n"; - break; - case 'queue': - d = (a.value.getAttribute('queue_id') !== "-1") ? "" : mxResources.get( - 'noQueueSelected') + "\n"; - break; - case 'callback': - d = (a.value.getAttribute('list_id') > 0) ? "" : mxResources.get( - 'noListSelected') + "\n"; - break; - case 'gotoiftime': - d = (a.value.getAttribute('interval_id') > 0) ? "" : mxResources.get( - 'noIntervalSelected') + "\n"; - break; - case 'gotoifmultitime': - d = (a.value.getAttribute('interval_id') != "") ? "" : mxResources.get( - 'noIntervalSelected') + "\n"; - break; - case 'voicemail': - d = (a.value.getAttribute('mailbox') !== "") ? "" : mxResources.get( - 'noBoxNumberSelected') + "\n"; - break; - case 'subproject': - d = (a.value.getAttribute('project_id') > 0) ? "" : mxResources.get( - 'noProjectSelected') + "\n"; - break; - case 'sendSMS': - d = (a.value.getAttribute('account_id') > 0) ? "" : mxResources.get( - 'noAccountSelected') + "\n"; - d += (a.value.getAttribute('to') !== "") ? "" : mxResources.get( - 'noRecipientSelected') + "\n"; - d += (a.value.getAttribute('sms_text') !== "") ? "" : mxResources.get( - 'noTextSelected') + "\n"; - break; - case 'sendMail': - d = (a.value.getAttribute('account_id') > 0) ? "" : mxResources.get( - 'noAccountSelected') + "\n"; - d += (a.value.getAttribute('to') !== "") ? "" : mxResources.get( - 'noRecipientSelected') + "\n"; - break; - case 'tts': - d = (a.value.getAttribute('text') !== "") ? "" : mxResources.get( - 'noTextSelected') + "\n"; - break; - case 'ispeechtts': - d = (a.value.getAttribute('text') !== "") ? "" : mxResources.get( - 'noTextSelected') + "\n"; - d += (a.value.getAttribute('key') !== "") ? "" : mxResources.get( - 'noKeySelected') + "\n"; - break; - case 'ispeechasr': - d = (a.value.getAttribute('key') !== "") ? "" : mxResources.get( - 'noKeySelected') + "\n"; - break; - } - } - - if (graph.model.isEdge(a)) { - var z = graph.model.getCell(a.source.getId()); - switch (z.value.nodeName) { - case 'background': - var patt = /^[0-9]{1,45}$|^[i]{1}$|^[t]{1}|^[#]{1}|^[*]{1}$/; - d = d + ((patt.test(String(a.getValue()))) ? "" : mxResources.get( - 'numberOrInvalidOrTimeout') + "\n"); - break; - case 'menu': - var patt = /^[0-9]{1,45}$|^[-]{1}$|^[i]{1}$|^[t]{1}|^[#]{1}|^[*]{1}$/; - var str = String(a.getValue()); - var res = str.split(","); - res.forEach(function(entry) { - d = d + ((patt.test(entry)) ? "" : mxResources.get('numberOrAll') + - "\n"); - }); - break; - case 'getsecretdigits': - case 'getdigits': - var patt = /^(x|i|-)$/; - var str = String(a.getValue()); - d = d + ((patt.test(str)) ? "" : mxResources.get( - 'numberOrInvalidOrDefault') + "\n"); - break; - case 'gotoif': - case 'gotoiftime': - case 'gotoifmultitime': - var patt = /^(true){1}$|^(false){1}$/; - d = d + ((patt.test(String(a.getValue()))) ? "" : mxResources.get( - 'trueOrFalse') + "\n"); - break; - - } - } - // ----------------------------------------------------------------- - - - graph.isCellCollapsed(a) && !c && (d = d + ((mxResources.get(graph.containsValidationErrorsResource) || - graph.containsValidationErrorsResource) + "\n")); - d = graph.model.isEdge(a) ? - d + (graph.getEdgeValidationError(a, graph.model.getTerminal(a, true), graph - .model.getTerminal(a, false)) || "") : d + (graph.getCellValidationError(a) || - ""); - e = graph.validateCell(a, b); - e != null && (d = d + e); - graph.model.getParent(a) == null && graph.view.validate(); - return d.length > 0 || !c ? d : null -}; -EditorUi.prototype.validateBlock = function(blockName) { - var graph = this.editor.graph; - var parent = graph.getDefaultParent(); - var count = 0; - // var model = graph.getModel(); - //We can also use model.getChildren(parent) - parent.children.forEach(function(n) { - if (graph.model.isVertex(n) && n.value.nodeName == blockName) { - count++; - } - }); - return count > 1 ? false : true; -} -EditorUi.prototype.publish = function(name) { - var editor = this.editor; - - if (name != null) { - var response = this.validate(); - if (response === null) { - - var xml = mxUtils.getPrettyXml(this.editor.getGraphXml()); - try { - if (useLocalStorage) { - if (localStorage.getItem(name) != null && - !mxUtils.confirm(mxResources.get('replace', [name]))) { - return; - } - - localStorage.setItem(name, xml); - this.editor.setStatus(mxResources.get('saved') + ' ' + new Date()); - } else { - console.log(xml.length); - console.log(MAX_REQUEST_SIZE); - if (xml.length < MAX_REQUEST_SIZE) { - xml = encodeURIComponent(xml); - - var xhr = new XMLHttpRequest(); - xhr.open("PUT", SAVE_URL + this.editor.data.id, true); - xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); - xhr.setRequestHeader('Authorization', 'Bearer ' + editor.data.token); - xhr.onload = function(e) { - if (xhr.readyState === 4) { - if (xhr.status === 200) { - editor.setStatus('Published at ' + JSON.parse(xhr.response).updatedAt + - ' (' + xhr.status + ' ' + xhr.statusText + ')'); - } else { - try { - var response = JSON.parse(xhr.response); - editor.setStatus('Error publishing project: ' + response.errors[0].message); - } catch (e) { - editor.setStatus('Error publishing project' + ' (' + xhr.status + ' ' + xhr.statusText + ')'); - } - } - } - }; - xhr.onerror = function(e) { - mxUtils.alert(xhr.statusText); - }; - xhr.send('preproduction=' + xml + '&production=' + xml); - } else { - mxUtils.alert(mxResources.get('drawingTooLarge')); - mxUtils.popup(xml); - - return; - } - } - - this.editor.filename = name; - this.editor.modified = false; - } catch (e) { - this.editor.setStatus('Error publishing file'); - } - } else { - editor.setStatus('Error publishing project: '); - } - } else { - this.editor.setStatus('Error publishing file'); - } -}; - - -/** - * Create variable - */ -EditorUi.prototype.variable = function(name, description) { - var editor = this.editor; - - if (name != null) { - try { - - var xhr = new XMLHttpRequest(); - xhr.open("POST", VARIABLE_URL, true); - xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); - xhr.setRequestHeader('Authorization', 'Bearer ' + editor.data.token); - xhr.onload = function(e) { - if (xhr.readyState === 4) { - if (xhr.status === 201) { - editor.setStatus('Variable created at ' + JSON.parse(xhr.response).createdAt + - ' (' + xhr.status + ' ' + xhr.statusText + ')'); - } else { - try { - var response = JSON.parse(xhr.response); - editor.setStatus('Error creating variable: ' + response.errors[0].message); - } catch (e) { - editor.setStatus('Error creating variable' + ' (' + xhr.status + ' ' + xhr.statusText + ')'); - } - } - } - }; - xhr.onerror = function(e) { - mxUtils.alert(xhr.statusText); - }; - xhr.send('name=' + name + '&description=' + description); - } catch (e) { - this.editor.setStatus('Error creating variable'); - } - } else { - this.editor.setStatus('Error creating variable'); - } -}; - -/** - * Returns the URL for a copy of this editor with no state. - */ -EditorUi.prototype.getUrl = function(pathname) { - var href = (pathname != null) ? pathname : window.location.pathname; - var parms = (href.indexOf('?') > 0) ? 1 : 0; - - // Removes template URL parameter for new blank diagram - for (var key in urlParams) { - if (parms == 0) { - href += '?'; - } else { - href += '&'; - } - - href += key + '=' + urlParams[key]; - parms++; - } - - return href; -}; - -/** - * Updates the states of the given undo/redo items. - */ -EditorUi.prototype.addUndoListener = function() { - var undo = this.actions.get('undo'); - var redo = this.actions.get('redo'); - - var undoMgr = this.editor.undoManager; - - var undoListener = function() { - undo.setEnabled(undoMgr.canUndo()); - redo.setEnabled(undoMgr.canRedo()); - }; - - undoMgr.addListener(mxEvent.ADD, undoListener); - undoMgr.addListener(mxEvent.UNDO, undoListener); - undoMgr.addListener(mxEvent.REDO, undoListener); - undoMgr.addListener(mxEvent.CLEAR, undoListener); - - // Updates the button states once - undoListener(); -}; - -/** - * Updates the states of the given toolbar items based on the selection. - */ -EditorUi.prototype.addSelectionListener = function() { - var selectionListener = mxUtils.bind(this, function() { - var graph = this.editor.graph; - var selected = !graph.isSelectionEmpty(); - var vertexSelected = false; - var edgeSelected = false; - - var cells = graph.getSelectionCells(); - - if (cells != null) { - for (var i = 0; i < cells.length; i++) { - var cell = cells[i]; - - if (graph.getModel().isEdge(cell)) { - edgeSelected = true; - } - - if (graph.getModel().isVertex(cell)) { - vertexSelected = true; - } - - if (edgeSelected && vertexSelected) { - break; - } - } - } - - // Updates action states - var actions = ['cut', 'copy', 'delete', 'duplicate', 'bold', 'italic', - 'style', 'underline', 'toFront', 'toBack', 'dashed', 'rounded', - 'shadow', - 'tilt', 'autosize' - ]; - - for (var i = 0; i < actions.length; i++) { - this.actions.get(actions[i]).setEnabled(selected); - } - - this.actions.get('curved').setEnabled(edgeSelected); - this.actions.get('rotation').setEnabled(vertexSelected); - this.actions.get('wordWrap').setEnabled(vertexSelected); - this.actions.get('group').setEnabled(graph.getSelectionCount() > 1); - this.actions.get('ungroup').setEnabled(graph.getSelectionCount() == 1 && - graph.getModel().getChildCount(graph.getSelectionCell()) > 0); - var oneVertexSelected = vertexSelected && graph.getSelectionCount() == 1; - this.actions.get('removeFromGroup').setEnabled(oneVertexSelected && - graph.getModel().isVertex(graph.getModel().getParent(graph.getSelectionCell())) - ); - - // Updates menu states - var menus = ['fontFamily', 'fontSize', 'alignment', 'position', 'text', - 'format', - 'arrange', 'linewidth', 'spacing' - ]; - - for (var i = 0; i < menus.length; i++) { - this.menus.get(menus[i]).setEnabled(selected); - } - - menus = ['line', 'lineend', 'linestart']; - - for (var i = 0; i < menus.length; i++) { - this.menus.get(menus[i]).setEnabled(edgeSelected); - } - - this.actions.get('setAsDefaultEdge').setEnabled(edgeSelected); - - this.menus.get('align').setEnabled(graph.getSelectionCount() > 1); - this.menus.get('direction').setEnabled(vertexSelected || (edgeSelected && - graph.isLoop(graph.view.getState(graph.getSelectionCell())))); - this.menus.get('navigation').setEnabled(graph.foldingEnabled && ((graph.view - .currentRoot != null) || - (graph.getSelectionCount() == 1 && graph.isValidRoot(graph.getSelectionCell())) - )); - this.actions.get('home').setEnabled(graph.view.currentRoot != null); - this.actions.get('exitGroup').setEnabled(graph.view.currentRoot != null); - var groupEnabled = graph.getSelectionCount() == 1 && graph.isValidRoot( - graph.getSelectionCell()); - this.actions.get('enterGroup').setEnabled(groupEnabled); - this.actions.get('expand').setEnabled(groupEnabled); - this.actions.get('collapse').setEnabled(groupEnabled); - this.actions.get('editLink').setEnabled(graph.getSelectionCount() == 1); - this.actions.get('openLink').setEnabled(graph.getSelectionCount() == 1 && - graph.getLinkForCell(graph.getSelectionCell()) != null); - }); - - this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE, - selectionListener); - selectionListener(); -}; - -/** - * Refreshes the viewport. - */ -EditorUi.prototype.refresh = function() { - var quirks = mxClient.IS_IE && (document.documentMode == null || document.documentMode == - 5); - var w = this.container.clientWidth; - var h = this.container.clientHeight; - - if (this.container == document.body) { - w = document.body.clientWidth || document.documentElement.clientWidth; - h = (quirks) ? document.body.clientHeight || document.documentElement.clientHeight : - document.documentElement.clientHeight; - } - - var effHsplitPosition = Math.max(0, Math.min(this.hsplitPosition, w - this.splitSize - - 20)); - var effVsplitPosition = Math.max(0, Math.min(this.vsplitPosition, h - this.menubarHeight - - this.toolbarHeight - this.footerHeight - 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 tmp = this.menubarHeight + this.toolbarHeight; - - if (!mxClient.IS_QUIRKS) { - tmp += 1; - } - - this.sidebarContainer.style.top = tmp + 'px'; - this.sidebarContainer.style.width = effHsplitPosition + 'px'; - this.outlineContainer.style.width = effHsplitPosition + 'px'; - this.outlineContainer.style.height = effVsplitPosition + 'px'; - this.outlineContainer.style.bottom = this.footerHeight + 'px'; - this.diagramContainer.style.left = (effHsplitPosition + this.splitSize) + - 'px'; - this.diagramContainer.style.top = this.sidebarContainer.style.top; - this.footerContainer.style.height = this.footerHeight + 'px'; - this.footerContainer.style.display = 'none'; - this.hsplit.style.top = this.sidebarContainer.style.top; - this.hsplit.style.bottom = this.outlineContainer.style.bottom; - this.hsplit.style.left = effHsplitPosition + 'px'; - this.vsplit.style.width = this.sidebarContainer.style.width; - this.vsplit.style.bottom = (effVsplitPosition + this.footerHeight) + 'px'; - - if (quirks) { - this.menubarContainer.style.width = w + 'px'; - this.toolbarContainer.style.width = this.menubarContainer.style.width; - var sidebarHeight = (h - effVsplitPosition - this.splitSize - this.footerHeight - - this.menubarHeight - this.toolbarHeight); - this.sidebarContainer.style.height = sidebarHeight + 'px'; - this.diagramContainer.style.width = (w - effHsplitPosition - this.splitSize) + - 'px'; - var diagramHeight = (h - this.footerHeight - this.menubarHeight - this.toolbarHeight); - this.diagramContainer.style.height = diagramHeight + 'px'; - this.footerContainer.style.width = this.menubarContainer.style.width; - this.hsplit.style.height = diagramHeight + 'px'; - } else { - this.sidebarContainer.style.bottom = (effVsplitPosition + this.splitSize + - this.footerHeight) + 'px'; - this.diagramContainer.style.bottom = this.outlineContainer.style.bottom; - } -}; - -/** - * Creates the required containers. - */ -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'); - - // Sets static style for containers - 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.left = '0px'; - 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'; -}; - -/** - * Creates the required containers. - */ -EditorUi.prototype.createUi = function() { - // Creates menubar - this.menubar = this.menus.createMenubar(this.createDiv('geMenubar')); - this.menubarContainer.appendChild(this.menubar.container); - - // Creates toolbar - this.toolbar = this.createToolbar(this.createDiv('geToolbar')); - this.toolbarContainer.appendChild(this.toolbar.container); - - // Creates the sidebar - this.sidebar = this.createSidebar(this.sidebarContainer); - - // Creates the footer - this.footerContainer.appendChild(this.createFooter()); - - // Adds status bar in menubar - this.statusContainer = this.createStatusContainer(); - - // Connects the status bar to the editor status - this.editor.addListener('statusChanged', mxUtils.bind(this, function() { - this.setStatusText(this.editor.getStatus()); - })); - - this.setStatusText(this.editor.getStatus()); - this.menubar.container.appendChild(this.statusContainer); - - // Inserts into DOM - this.container.appendChild(this.menubarContainer); - this.container.appendChild(this.toolbarContainer); - this.container.appendChild(this.sidebarContainer); - this.container.appendChild(this.outlineContainer); - this.container.appendChild(this.diagramContainer); - this.container.appendChild(this.footerContainer); - this.container.appendChild(this.hsplit); - this.container.appendChild(this.vsplit); - - // HSplit - this.addSplitHandler(this.hsplit, true, 0, mxUtils.bind(this, function( - value) { - this.hsplitPosition = value; - this.refresh(); - this.editor.graph.sizeDidChange(); - this.editor.outline.update(false); - this.editor.outline.outline.sizeDidChange(); - })); - - // VSplit - this.addSplitHandler(this.vsplit, false, this.footerHeight, mxUtils.bind( - this, - function(value) { - this.vsplitPosition = value; - this.refresh(); - this.editor.outline.update(false); - this.editor.outline.outline.sizeDidChange(); - })); -}; - -/** - * Creates a new toolbar for the given container. - */ -EditorUi.prototype.createStatusContainer = function() { - var container = document.createElement('a'); - container.className = 'geItem geStatus'; - - return container; -}; - -/** - * Creates a new toolbar for the given container. - */ -EditorUi.prototype.createStatusContainer = function() { - var container = document.createElement('a'); - container.className = 'geItem geStatus'; - - return container; -}; - -/** - * Creates a new toolbar for the given container. - */ -EditorUi.prototype.setStatusText = function(value) { - this.statusContainer.innerHTML = value; -}; - -/** - * Creates a new toolbar for the given container. - */ -EditorUi.prototype.createToolbar = function(container) { - return new Toolbar(this, container); -}; - -/** - * Creates a new sidebar for the given container. - */ -EditorUi.prototype.createSidebar = function(container) { - return new Sidebar(this, container); -}; - -/** - * Creates and returns a new footer. - */ -EditorUi.prototype.createFooter = function() { - return this.createDiv('geFooter'); -}; - -/** - * Creates the actual toolbar for the toolbar container. - */ -EditorUi.prototype.createDiv = function(classname) { - var elt = document.createElement('div'); - elt.className = classname; - - return elt; -}; - -/** - * Creates the custom header. - */ -EditorUi.prototype.createHeader = function(classname) { - var elt = document.createElement(classname); - return elt; -}; - -/** - * Creates the custom header. - */ -EditorUi.prototype.createForm = function(classname) { - var elt = document.createElement('form'); - elt.className = classname; - - return elt; -}; - -/** - * Updates the states of the given undo/redo items. - */ -EditorUi.prototype.addSplitHandler = function(elt, horizontal, dx, onChange) { - var start = null; - var initial = null; - - function getValue() { - return parseInt(((horizontal) ? elt.style.left : elt.style.bottom)); - }; - - function moveHandler(evt) { - if (start != null) { - var pt = new mxPoint(mxEvent.getClientX(evt), mxEvent.getClientY(evt)); - onChange(Math.max(0, initial + ((horizontal) ? (pt.x - start.x) : (start.y - - pt.y)) - dx)); - mxEvent.consume(evt); - } - }; - - function dropHandler(evt) { - moveHandler(evt); - start = null; - initial = null; - }; - - mxEvent.addGestureListeners(elt, function(evt) { - start = new mxPoint(mxEvent.getClientX(evt), mxEvent.getClientY(evt)); - initial = getValue(); - mxEvent.consume(evt); - }); - - mxEvent.addListener(document, 'mousemove', moveHandler); - mxEvent.addListener(document, 'touchmove', moveHandler); - mxEvent.addListener(document, 'mouseup', dropHandler); - mxEvent.addListener(document, 'touchend', dropHandler); -}; - -/** - * Displays a print dialog. - */ -EditorUi.prototype.showDialog = function(elt, w, h, modal, closable, onClose) { - this.hideDialog(); - this.dialog = new Dialog(this, elt, w, (mxClient.IS_VML) ? h - 12 : h, - modal, - closable, onClose); -}; - -/** - * Displays a print dialog. - */ -EditorUi.prototype.hideDialog = function() { - if (this.dialog != null) { - this.dialog.close(); - this.dialog = null; - this.editor.graph.container.focus(); - } -}; - -/** - * Adds the label menu items to the given menu and parent. - */ -EditorUi.prototype.saveFile = function(forceDialog) { - if (!forceDialog && this.editor.filename != null) { - this.save(this.editor.getOrCreateFilename()); - } else { - this.showDialog(new SaveDialog(this).container, 300, 100, true, true); - } -}; - -/** - * Adds the label menu items to the given menu and parent. - */ -EditorUi.prototype.publishFile = function(forceDialog) { - if (!forceDialog && this.editor.filename != null) { - this.publish(this.editor.getOrCreateFilename()); - } else { - //this.showDialog(new SaveDialog(this).container, 300, 100, true, true); - } -}; - -/** - * Executes the given layout. - */ -EditorUi.prototype.executeLayout = function(layout, animate, ignoreChildCount) { - var graph = this.editor.graph; - var cell = graph.getSelectionCell(); - - // Allow global overridding of animation - animate = this.animate != null ? this.animate : animate; - - graph.getModel().beginUpdate(); - try { - layout.execute(graph.getDefaultParent(), cell); - } catch (e) { - throw e; - } finally { - // Animates the changes in the graph model except - // for Camino, where animation is too slow - if (animate && navigator.userAgent.indexOf('Camino') < 0) { - // New API for animating graph layout results asynchronously - var morph = new mxMorphing(graph); - morph.addListener(mxEvent.DONE, mxUtils.bind(this, function() { - graph.getModel().endUpdate(); - })); - - morph.startAnimation(); - } else { - graph.getModel().endUpdate(); - } - } -}; - -/** - * Creates the keyboard event handler for the current graph and history. - */ -EditorUi.prototype.createKeyHandler = function(editor) { - var graph = this.editor.graph; - var keyHandler = new mxKeyHandler(graph); - - // Routes command-key to control-key on Mac - keyHandler.isControlDown = function(evt) { - return mxEvent.isControlDown(evt) || (mxClient.IS_MAC && evt.metaKey); - }; - - // Helper function to move cells with the cursor keys - function nudge(keyCode) { - if (!graph.isSelectionEmpty()) { - var dx = 0; - var dy = 0; - - if (keyCode == 37) { - dx = -1; - } else if (keyCode == 38) { - dy = -1; - } else if (keyCode == 39) { - dx = 1; - } else if (keyCode == 40) { - dy = 1; - } - - graph.moveCells(graph.getSelectionCells(), dx, dy); - graph.scrollCellToVisible(graph.getSelectionCell()); - } - }; - - // Binds keystrokes to actions - var bindAction = mxUtils.bind(this, function(code, control, key, shift) { - var action = this.actions.get(key); - - if (action != null) { - var f = function() { - if (action.enabled) { - action.funct(); - } - }; - - if (control) { - if (shift) { - keyHandler.bindControlShiftKey(code, f); - } else { - keyHandler.bindControlKey(code, f); - } - } else { - if (shift) { - keyHandler.bindShiftKey(code, f); - } else { - keyHandler.bindKey(code, f); - } - } - } - }); - - var ui = this; - var keyHandleEscape = keyHandler.escape; - keyHandler.escape = function(evt) { - ui.hideDialog(); - keyHandleEscape.apply(this, arguments); - }; - - // Ignores enter keystroke. Remove this line if you want the - // enter keystroke to stop editing. - keyHandler.enter = function() {}; - keyHandler.bindKey(8, function() { - graph.foldCells(true); - }); // Backspace - keyHandler.bindKey(13, function() { - graph.foldCells(false); - }); // Enter - keyHandler.bindKey(33, function() { - graph.exitGroup(); - }); // Page Up - keyHandler.bindKey(34, function() { - graph.enterGroup(); - }); // Page Down - keyHandler.bindKey(36, function() { - graph.home(); - }); // Home - keyHandler.bindKey(35, function() { - graph.refresh(); - }); // End - keyHandler.bindKey(37, function() { - nudge(37); - }); // Left arrow - keyHandler.bindKey(38, function() { - nudge(38); - }); // Up arrow - keyHandler.bindKey(39, function() { - nudge(39); - }); // Right arrow - keyHandler.bindKey(40, function() { - nudge(40); - }); // Down arrow - keyHandler.bindKey(113, function() { - graph.startEditingAtCell(); - }); - bindAction(46, false, 'delete'); // Delete - bindAction(82, true, 'tilt'); // Ctrl+R - bindAction(83, true, 'save'); // Ctrl+S - bindAction(83, true, 'saveAs', true); // Ctrl+Shift+S - bindAction(107, false, 'zoomIn'); // Add - bindAction(109, false, 'zoomOut'); // Subtract - bindAction(65, true, 'selectAll'); // Ctrl+A - bindAction(86, true, 'selectVertices', true); // Ctrl+Shift+V - bindAction(69, true, 'selectEdges', true); // Ctrl+Shift+E - bindAction(69, true, 'export'); // Ctrl+Shift+E - bindAction(66, true, 'toBack'); // Ctrl+B - bindAction(70, true, 'toFront'); // Ctrl+F - bindAction(68, true, 'duplicate'); // Ctrl+D - bindAction(90, true, 'undo'); // Ctrl+Z - bindAction(89, true, 'redo'); // Ctrl+Y - bindAction(88, true, 'cut'); // Ctrl+X - bindAction(67, true, 'copy'); // Ctrl+C - bindAction(81, true, 'connect'); // Ctrl+Q - bindAction(86, true, 'paste'); // Ctrl+V - bindAction(71, true, 'group'); // Ctrl+G - bindAction(71, true, 'grid', true); // Ctrl+Shift+G - bindAction(85, true, 'ungroup'); // Ctrl+U - bindAction(112, false, 'about'); // F1 - bindAction(80, true, 'publish', true); // Ctrl+Shift+P - - return keyHandler; -}; - -/** - * Giuseppe Careri - * Creates a new toolbar for the given container. - */ -EditorUi.prototype.createMultiplicities = function(graph, cells, source, - target) { - for (var i = 0; i < cells.length; i++) { - - graph.push(new mxMultiplicity(true, cells[i], null, null, source[i][0], - source[i][1], null, mxResources.get(cells[i]) + mxResources.get( - 'musthave') + source[i][0] + mxResources.get('outgoingedge'), null)); - graph.push(new mxMultiplicity(false, cells[i], null, null, target[i][0], - target[i][1], null, mxResources.get(cells[i]) + mxResources.get( - 'musthave') + target[i][0] + mxResources.get('incomingedge'), null)); - }; -}; +var _0xa356=["\x65\x64\x69\x74\x6F\x72","\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x67\x65\x45\x64\x69\x74\x6F\x72","\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x42\x79\x49\x64","\x67\x72\x61\x70\x68","\x6F\x76\x65\x72\x66\x6C\x6F\x77","\x73\x74\x79\x6C\x65","\x68\x69\x64\x64\x65\x6E","\x73\x72\x63","\x73\x75\x62\x6D\x65\x6E\x75\x49\x6D\x61\x67\x65","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x63\x6F\x6E\x6E\x65\x63\x74\x49\x6D\x61\x67\x65","\x61\x63\x74\x69\x6F\x6E\x73","\x6D\x65\x6E\x75\x73","\x63\x72\x65\x61\x74\x65\x44\x69\x76\x73","\x72\x65\x66\x72\x65\x73\x68","\x63\x72\x65\x61\x74\x65\x55\x69","\x65\x76\x65\x6E\x74","\x69\x73\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x41\x6C\x6C\x6F\x77\x65\x64","\x69\x73\x45\x64\x69\x74\x69\x6E\x67","\x62\x69\x6E\x64","\x62\x6F\x64\x79","\x6F\x6E\x73\x65\x6C\x65\x63\x74\x73\x74\x61\x72\x74","\x6D\x65\x6E\x75\x62\x61\x72\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x6F\x6E\x6D\x6F\x75\x73\x65\x64\x6F\x77\x6E","\x74\x6F\x6F\x6C\x62\x61\x72\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x64\x69\x61\x67\x72\x61\x6D\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x73\x69\x64\x65\x62\x61\x72\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x66\x6F\x6F\x74\x65\x72\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x49\x53\x5F\x49\x45","\x64\x6F\x63\x75\x6D\x65\x6E\x74\x4D\x6F\x64\x65","\x75\x6E\x64\x65\x66\x69\x6E\x65\x64","\x63\x6F\x6E\x74\x65\x78\x74\x6D\x65\x6E\x75","\x61\x64\x64\x4C\x69\x73\x74\x65\x6E\x65\x72","\x6F\x6E\x63\x6F\x6E\x74\x65\x78\x74\x6D\x65\x6E\x75","\x69\x6E\x69\x74","\x74\x61\x62\x69\x6E\x64\x65\x78","\x30","\x73\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x63\x75\x72\x73\x6F\x72","\x64\x65\x66\x61\x75\x6C\x74","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x49\x6D\x61\x67\x65","\x75\x72\x6C\x28","\x67\x72\x69\x64\x49\x6D\x61\x67\x65","\x29","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x50\x6F\x73\x69\x74\x69\x6F\x6E","\x2D\x31\x70\x78\x20\x2D\x31\x70\x78","\x66\x6F\x63\x75\x73","\x66\x69\x72\x65\x4D\x6F\x75\x73\x65\x45\x76\x65\x6E\x74","\x4D\x4F\x55\x53\x45\x5F\x44\x4F\x57\x4E","\x61\x70\x70\x6C\x79","\x6D\x75\x6C\x74\x69\x70\x6C\x69\x63\x69\x74\x69\x65\x73","\x73\x74\x61\x72\x74","\x66\x69\x6E\x61\x6C\x6C\x79","\x65\x6E\x64","\x6E","\x63\x72\x65\x61\x74\x65\x4D\x75\x6C\x74\x69\x70\x6C\x69\x63\x69\x74\x69\x65\x73","\x61\x6E\x73\x77\x65\x72","\x68\x61\x6E\x67\x75\x70","\x64\x69\x61\x6C","\x65\x78\x74\x5F\x64\x69\x61\x6C","\x71\x75\x65\x75\x65","\x76\x6F\x69\x63\x65\x6D\x61\x69\x6C","\x63\x61\x6C\x6C\x62\x61\x63\x6B","\x73\x65\x74","\x6D\x61\x74\x68","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64","\x70\x6C\x61\x79\x62\x61\x63\x6B","\x6D\x65\x6E\x75","\x73\x61\x79\x64\x69\x67\x69\x74\x73","\x73\x61\x79\x6E\x75\x6D\x62\x65\x72","\x73\x61\x79\x70\x68\x6F\x6E\x65\x74\x69\x63","\x74\x74\x73","\x69\x73\x70\x65\x65\x63\x68\x74\x74\x73","\x67\x65\x74\x64\x69\x67\x69\x74\x73","\x67\x65\x74\x73\x65\x63\x72\x65\x74\x64\x69\x67\x69\x74\x73","\x72\x65\x63\x6F\x72\x64","\x64\x61\x74\x61\x62\x61\x73\x65","\x69\x73\x70\x65\x65\x63\x68\x61\x73\x72","\x73\x65\x6E\x64\x53\x4D\x53","\x73\x65\x6E\x64\x4D\x61\x69\x6C","\x67\x6F\x74\x6F\x63","\x67\x6F\x74\x6F\x69\x66","\x67\x6F\x74\x6F\x69\x66\x74\x69\x6D\x65","\x67\x6F\x74\x6F\x69\x66\x6D\x75\x6C\x74\x69\x74\x69\x6D\x65","\x76\x73\x77\x69\x74\x63\x68","\x71\x75\x65\x75\x65\x6C\x6F\x67","\x67\x6F\x61\x6C","\x6E\x6F\x6F\x70","\x73\x79\x73\x74\x65\x6D","\x61\x67\x69","\x73\x75\x62\x70\x72\x6F\x6A\x65\x63\x74","\x63\x75\x73\x74\x6F\x6D\x5F\x61\x70\x70","\x64\x62\x6C\x43\x6C\x69\x63\x6B","\x63\x65\x6C\x6C","\x66\x69\x72\x65\x45\x76\x65\x6E\x74","\x69\x73\x45\x6E\x61\x62\x6C\x65\x64","\x69\x73\x43\x6F\x6E\x73\x75\x6D\x65\x64","\x69\x73\x45\x64\x67\x65","\x67\x65\x74\x4D\x6F\x64\x65\x6C","\x74\x61\x67\x4E\x61\x6D\x65","\x76\x61\x6C\x75\x65","\x73\x6F\x75\x72\x63\x65","\x69\x6E\x64\x65\x78\x4F\x66","\x73\x74\x61\x72\x74\x45\x64\x69\x74\x69\x6E\x67\x41\x74\x43\x65\x6C\x6C","\x69\x73\x56\x65\x72\x74\x65\x78","\x73\x68\x6F\x77\x44\x69\x61\x6C\x6F\x67","\x63\x6F\x6E\x73\x75\x6D\x65","\x61\x75\x74\x6F\x45\x78\x70\x61\x6E\x64","\x70\x61\x6E\x6E\x69\x6E\x67\x48\x61\x6E\x64\x6C\x65\x72","\x66\x61\x63\x74\x6F\x72\x79\x4D\x65\x74\x68\x6F\x64","\x63\x72\x65\x61\x74\x65\x50\x6F\x70\x75\x70\x4D\x65\x6E\x75","\x6F\x75\x74\x6C\x69\x6E\x65\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x6F\x75\x74\x6C\x69\x6E\x65","\x68\x69\x64\x65\x4D\x65\x6E\x75","\x61\x64\x64\x47\x65\x73\x74\x75\x72\x65\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x49\x53\x5F\x54\x4F\x55\x43\x48","\x67\x65\x73\x74\x75\x72\x65\x63\x68\x61\x6E\x67\x65","\x74\x72\x61\x6E\x73\x66\x6F\x72\x6D","\x73\x63\x61\x6C\x65\x28","\x73\x63\x61\x6C\x65","\x67\x65\x74\x44\x72\x61\x77\x50\x61\x6E\x65","\x76\x69\x65\x77","\x76\x69\x73\x69\x62\x69\x6C\x69\x74\x79","\x67\x65\x74\x4F\x76\x65\x72\x6C\x61\x79\x50\x61\x6E\x65","\x67\x65\x73\x74\x75\x72\x65\x65\x6E\x64","\x72\x65\x6D\x6F\x76\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x7A\x6F\x6F\x6D\x54\x6F\x43\x65\x6E\x74\x65\x72","\x7A\x6F\x6F\x6D","\x76\x69\x73\x69\x62\x6C\x65","\x63\x72\x65\x61\x74\x65\x4B\x65\x79\x48\x61\x6E\x64\x6C\x65\x72","\x67\x65\x74\x4B\x65\x79\x48\x61\x6E\x64\x6C\x65\x72","\x72\x65\x73\x69\x7A\x65","\x73\x69\x7A\x65\x44\x69\x64\x43\x68\x61\x6E\x67\x65","\x75\x70\x64\x61\x74\x65","\x6F\x70\x65\x6E","\x73\x70\x6C\x69\x74\x53\x69\x7A\x65","\x6D\x65\x6E\x75\x62\x61\x72\x48\x65\x69\x67\x68\x74","\x74\x6F\x6F\x6C\x62\x61\x72\x48\x65\x69\x67\x68\x74","\x66\x6F\x6F\x74\x65\x72\x48\x65\x69\x67\x68\x74","\x68\x73\x70\x6C\x69\x74\x50\x6F\x73\x69\x74\x69\x6F\x6E","\x76\x73\x70\x6C\x69\x74\x50\x6F\x73\x69\x74\x69\x6F\x6E","\x61\x64\x64\x55\x6E\x64\x6F\x4C\x69\x73\x74\x65\x6E\x65\x72","\x61\x64\x64\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x4C\x69\x73\x74\x65\x6E\x65\x72","\x70\x61\x73\x74\x65","\x67\x65\x74","\x69\x73\x45\x6D\x70\x74\x79","\x73\x65\x74\x45\x6E\x61\x62\x6C\x65\x64","\x63\x75\x74","\x63\x6F\x70\x79","\x6F\x70\x65\x6E\x65\x72","\x6F\x70\x65\x6E\x46\x69\x6C\x65","\x70\x61\x72\x73\x65\x58\x6D\x6C","\x64\x6F\x63\x75\x6D\x65\x6E\x74\x45\x6C\x65\x6D\x65\x6E\x74","\x73\x65\x74\x47\x72\x61\x70\x68\x58\x6D\x6C","\x6D\x6F\x64\x69\x66\x69\x65\x64","\x63\x6C\x65\x61\x72","\x75\x6E\x64\x6F\x4D\x61\x6E\x61\x67\x65\x72","\x66\x69\x6C\x65\x6E\x61\x6D\x65","\x69\x6E\x76\x61\x6C\x69\x64\x4F\x72\x4D\x69\x73\x73\x69\x6E\x67\x46\x69\x6C\x65","\x3A\x20","\x6D\x65\x73\x73\x61\x67\x65","\x61\x6C\x65\x72\x74","\x73\x65\x74\x43\x6F\x6E\x73\x75\x6D\x65\x72","\x6F\x70\x65\x6E\x53\x74\x72\x69\x6E\x67","\x64\x61\x74\x61","\x6E\x65\x77","\x67\x65\x74\x47\x72\x61\x70\x68\x58\x6D\x6C","\x67\x65\x74\x50\x72\x65\x74\x74\x79\x58\x6D\x6C","\x67\x65\x74\x49\x74\x65\x6D","\x72\x65\x70\x6C\x61\x63\x65","\x63\x6F\x6E\x66\x69\x72\x6D","\x73\x65\x74\x49\x74\x65\x6D","\x73\x61\x76\x65\x64","\x20","\x73\x65\x74\x53\x74\x61\x74\x75\x73","\x6C\x65\x6E\x67\x74\x68","\x6C\x6F\x67","\x50\x4F\x53\x54","\x43\x6F\x6E\x74\x65\x6E\x74\x2D\x54\x79\x70\x65","\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2F\x78\x2D\x77\x77\x77\x2D\x66\x6F\x72\x6D\x2D\x75\x72\x6C\x65\x6E\x63\x6F\x64\x65\x64","\x73\x65\x74\x52\x65\x71\x75\x65\x73\x74\x48\x65\x61\x64\x65\x72","\x41\x75\x74\x68\x6F\x72\x69\x7A\x61\x74\x69\x6F\x6E","\x42\x65\x61\x72\x65\x72\x20","\x74\x6F\x6B\x65\x6E","\x6F\x6E\x6C\x6F\x61\x64","\x72\x65\x61\x64\x79\x53\x74\x61\x74\x65","\x73\x74\x61\x74\x75\x73","\x50\x72\x6F\x6A\x65\x63\x74\x20","\x6E\x61\x6D\x65","\x72\x65\x73\x70\x6F\x6E\x73\x65","\x70\x61\x72\x73\x65","\x20\x69\x73\x20\x6F\x70\x65\x6E\x69\x6E\x67\x20\x69\x6E\x20\x6E\x65\x77\x20\x77\x69\x6E\x64\x6F\x77\x21","\x73\x71\x75\x61\x72\x65\x2F\x70\x72\x6F\x6A\x65\x63\x74\x73\x2F\x76\x69\x65\x77\x2F","\x69\x64","\x5F\x62\x6C\x61\x6E\x6B","\x45\x72\x72\x6F\x72\x20\x63\x72\x65\x61\x74\x69\x6E\x67\x20\x70\x72\x6F\x6A\x65\x63\x74\x3A\x20","\x65\x72\x72\x6F\x72\x73","\x45\x72\x72\x6F\x72\x20\x63\x72\x65\x61\x74\x69\x6E\x67\x20\x70\x72\x6F\x6A\x65\x63\x74","\x20\x28","\x73\x74\x61\x74\x75\x73\x54\x65\x78\x74","\x6F\x6E\x65\x72\x72\x6F\x72","\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E\x3D\x70\x72\x6F\x6A\x65\x63\x74\x5F\x6E\x65\x77\x26\x6E\x61\x6D\x65\x3D","\x73\x65\x6E\x64","\x64\x72\x61\x77\x69\x6E\x67\x54\x6F\x6F\x4C\x61\x72\x67\x65","\x70\x6F\x70\x75\x70","\x73\x61\x76\x65","\x50\x55\x54","\x55\x70\x64\x61\x74\x65\x64\x20\x61\x74\x20","\x75\x70\x64\x61\x74\x65\x64\x41\x74","\x45\x72\x72\x6F\x72\x20\x73\x61\x76\x69\x6E\x67\x20\x70\x72\x6F\x6A\x65\x63\x74\x3A\x20","\x45\x72\x72\x6F\x72\x20\x73\x61\x76\x69\x6E\x67\x20\x70\x72\x6F\x6A\x65\x63\x74","\x70\x72\x65\x70\x72\x6F\x64\x75\x63\x74\x69\x6F\x6E\x3D","\x45\x72\x72\x6F\x72\x20\x73\x61\x76\x69\x6E\x67\x20\x66\x69\x6C\x65","\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E","\x45\x72\x72\x6F\x72\x20\x75\x70\x64\x61\x74\x69\x6E\x67\x20\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E\x3A\x20","\x45\x72\x72\x6F\x72\x20\x75\x70\x64\x61\x74\x69\x6E\x67\x20\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E","\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E\x3D","\x73\x61\x76\x65\x41\x73","\x45\x72\x72\x6F\x72\x20\x63\x6C\x6F\x6E\x69\x6E\x67\x20\x70\x72\x6F\x6A\x65\x63\x74\x3A\x20","\x45\x72\x72\x6F\x72\x20\x63\x6C\x6F\x6E\x69\x6E\x67\x20\x70\x72\x6F\x6A\x65\x63\x74","\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E\x3D\x70\x72\x6F\x6A\x65\x63\x74\x5F\x63\x6C\x6F\x6E\x65\x64\x26\x6E\x61\x6D\x65\x3D","\x26\x70\x72\x65\x70\x72\x6F\x64\x75\x63\x74\x69\x6F\x6E\x3D","\x26\x70\x72\x6F\x64\x75\x63\x74\x69\x6F\x6E\x3D","\x76\x61\x6C\x69\x64\x61\x74\x65","\x67\x65\x74\x52\x6F\x6F\x74","\x6D\x6F\x64\x65\x6C","\x67\x65\x74\x43\x68\x69\x6C\x64\x43\x6F\x75\x6E\x74","\x67\x65\x74\x43\x68\x69\x6C\x64\x41\x74","\x69\x73\x56\x61\x6C\x69\x64\x52\x6F\x6F\x74","\x3C\x62\x72\x3E","\x73\x65\x74\x43\x65\x6C\x6C\x57\x61\x72\x6E\x69\x6E\x67","","\x76\x61\x6C\x69\x64\x61\x74\x65\x42\x6C\x6F\x63\x6B","\x4F\x6E\x6C\x79\x20\x6F\x6E\x65\x20\x53\x74\x61\x72\x74\x20\x62\x6C\x6F\x63\x6B\x20\x69\x73\x20\x61\x6C\x6C\x6F\x77\x65\x64","\x0A","\x4F\x6E\x6C\x79\x20\x6F\x6E\x65\x20\x46\x69\x6E\x61\x6C\x6C\x79\x20\x62\x6C\x6F\x63\x6B\x20\x69\x73\x20\x61\x6C\x6C\x6F\x77\x65\x64","\x66\x69\x6C\x65\x5F\x69\x64","\x67\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x6E\x6F\x41\x75\x64\x69\x6F\x53\x65\x6C\x65\x63\x74\x65\x64","\x64\x69\x67\x69\x74","\x77\x72\x6F\x6E\x67\x4D\x61\x78\x44\x69\x67\x69\x74","\x76\x61\x72\x69\x61\x62\x6C\x65\x5F\x69\x64","\x6E\x6F\x56\x61\x72\x69\x61\x62\x6C\x65\x53\x65\x6C\x65\x63\x74\x65\x64","\x6D\x69\x6E\x64\x69\x67\x69\x74","\x77\x72\x6F\x6E\x67\x4D\x69\x6E\x44\x69\x67\x69\x74","\x6D\x61\x78\x64\x69\x67\x69\x74","\x68\x69\x64\x64\x65\x6E\x64\x69\x67\x69\x74\x73\x6E\x75\x6D","\x77\x72\x6F\x6E\x67\x48\x69\x64\x64\x65\x6E\x44\x69\x67\x69\x74\x73\x6E\x75\x6D","\x76\x61\x72\x69\x61\x62\x6C\x65","\x6F\x64\x62\x63\x5F\x69\x64","\x6E\x6F\x44\x61\x74\x61\x62\x61\x73\x65\x53\x65\x6C\x65\x63\x74\x65\x64","\x74\x72\x75\x6E\x6B\x5F\x6E\x61\x6D\x65","\x2D\x31","\x6E\x6F\x54\x72\x75\x6E\x6B\x53\x65\x6C\x65\x63\x74\x65\x64","\x65\x78\x74\x65\x6E\x73\x69\x6F\x6E","\x6E\x6F\x45\x78\x74\x65\x6E\x73\x69\x6F\x6E\x53\x65\x6C\x65\x63\x74\x65\x64","\x63\x6F\x6D\x6D\x61\x6E\x64","\x6E\x6F\x43\x6F\x6D\x6D\x61\x6E\x64\x53\x65\x6C\x65\x63\x74\x65\x64","\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E","\x6E\x6F\x43\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x53\x65\x6C\x65\x63\x74\x65\x64","\x64\x69\x67\x69\x74\x73","\x6E\x6F\x44\x69\x67\x69\x74\x73\x53\x65\x6C\x65\x63\x74\x65\x64","\x6E\x75\x6D\x62\x65\x72","\x6E\x6F\x4E\x75\x6D\x62\x65\x72\x53\x65\x6C\x65\x63\x74\x65\x64","\x74\x65\x78\x74","\x6E\x6F\x54\x65\x78\x74\x53\x65\x6C\x65\x63\x74\x65\x64","\x66\x69\x6C\x65","\x6E\x6F\x46\x69\x6C\x65\x53\x65\x6C\x65\x63\x74\x65\x64","\x67\x6F\x61\x6C\x6E\x61\x6D\x65","\x6E\x6F\x47\x6F\x61\x6C\x53\x65\x6C\x65\x63\x74\x65\x64","\x70\x68\x6F\x6E\x65","\x6E\x6F\x49\x64\x65\x6E\x74\x69\x66\x69\x65\x72\x53\x65\x6C\x65\x63\x74\x65\x64","\x73\x69\x70\x5F\x69\x64","\x71\x75\x65\x75\x65\x5F\x69\x64","\x6E\x6F\x51\x75\x65\x75\x65\x53\x65\x6C\x65\x63\x74\x65\x64","\x6C\x69\x73\x74\x5F\x69\x64","\x6E\x6F\x4C\x69\x73\x74\x53\x65\x6C\x65\x63\x74\x65\x64","\x69\x6E\x74\x65\x72\x76\x61\x6C\x5F\x69\x64","\x6E\x6F\x49\x6E\x74\x65\x72\x76\x61\x6C\x53\x65\x6C\x65\x63\x74\x65\x64","\x6D\x61\x69\x6C\x62\x6F\x78","\x6E\x6F\x42\x6F\x78\x4E\x75\x6D\x62\x65\x72\x53\x65\x6C\x65\x63\x74\x65\x64","\x70\x72\x6F\x6A\x65\x63\x74\x5F\x69\x64","\x6E\x6F\x50\x72\x6F\x6A\x65\x63\x74\x53\x65\x6C\x65\x63\x74\x65\x64","\x61\x63\x63\x6F\x75\x6E\x74\x5F\x69\x64","\x6E\x6F\x41\x63\x63\x6F\x75\x6E\x74\x53\x65\x6C\x65\x63\x74\x65\x64","\x74\x6F","\x6E\x6F\x52\x65\x63\x69\x70\x69\x65\x6E\x74\x53\x65\x6C\x65\x63\x74\x65\x64","\x73\x6D\x73\x5F\x74\x65\x78\x74","\x6B\x65\x79","\x6E\x6F\x4B\x65\x79\x53\x65\x6C\x65\x63\x74\x65\x64","\x6E\x6F\x64\x65\x4E\x61\x6D\x65","\x67\x65\x74\x49\x64","\x67\x65\x74\x43\x65\x6C\x6C","\x67\x65\x74\x56\x61\x6C\x75\x65","\x74\x65\x73\x74","\x6E\x75\x6D\x62\x65\x72\x4F\x72\x49\x6E\x76\x61\x6C\x69\x64\x4F\x72\x54\x69\x6D\x65\x6F\x75\x74","\x2C","\x73\x70\x6C\x69\x74","\x6E\x75\x6D\x62\x65\x72\x4F\x72\x41\x6C\x6C","\x66\x6F\x72\x45\x61\x63\x68","\x6E\x75\x6D\x62\x65\x72\x4F\x72\x49\x6E\x76\x61\x6C\x69\x64\x4F\x72\x44\x65\x66\x61\x75\x6C\x74","\x74\x72\x75\x65\x4F\x72\x46\x61\x6C\x73\x65","\x69\x73\x43\x65\x6C\x6C\x43\x6F\x6C\x6C\x61\x70\x73\x65\x64","\x63\x6F\x6E\x74\x61\x69\x6E\x73\x56\x61\x6C\x69\x64\x61\x74\x69\x6F\x6E\x45\x72\x72\x6F\x72\x73\x52\x65\x73\x6F\x75\x72\x63\x65","\x67\x65\x74\x54\x65\x72\x6D\x69\x6E\x61\x6C","\x67\x65\x74\x45\x64\x67\x65\x56\x61\x6C\x69\x64\x61\x74\x69\x6F\x6E\x45\x72\x72\x6F\x72","\x67\x65\x74\x43\x65\x6C\x6C\x56\x61\x6C\x69\x64\x61\x74\x69\x6F\x6E\x45\x72\x72\x6F\x72","\x76\x61\x6C\x69\x64\x61\x74\x65\x43\x65\x6C\x6C","\x67\x65\x74\x50\x61\x72\x65\x6E\x74","\x67\x65\x74\x44\x65\x66\x61\x75\x6C\x74\x50\x61\x72\x65\x6E\x74","\x63\x68\x69\x6C\x64\x72\x65\x6E","\x70\x75\x62\x6C\x69\x73\x68","\x50\x75\x62\x6C\x69\x73\x68\x65\x64\x20\x61\x74\x20","\x45\x72\x72\x6F\x72\x20\x70\x75\x62\x6C\x69\x73\x68\x69\x6E\x67\x20\x70\x72\x6F\x6A\x65\x63\x74\x3A\x20","\x45\x72\x72\x6F\x72\x20\x70\x75\x62\x6C\x69\x73\x68\x69\x6E\x67\x20\x70\x72\x6F\x6A\x65\x63\x74","\x45\x72\x72\x6F\x72\x20\x70\x75\x62\x6C\x69\x73\x68\x69\x6E\x67\x20\x66\x69\x6C\x65","\x56\x61\x72\x69\x61\x62\x6C\x65\x20\x63\x72\x65\x61\x74\x65\x64\x20\x61\x74\x20","\x63\x72\x65\x61\x74\x65\x64\x41\x74","\x45\x72\x72\x6F\x72\x20\x63\x72\x65\x61\x74\x69\x6E\x67\x20\x76\x61\x72\x69\x61\x62\x6C\x65\x3A\x20","\x45\x72\x72\x6F\x72\x20\x63\x72\x65\x61\x74\x69\x6E\x67\x20\x76\x61\x72\x69\x61\x62\x6C\x65","\x6E\x61\x6D\x65\x3D","\x26\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E\x3D","\x67\x65\x74\x55\x72\x6C","\x70\x61\x74\x68\x6E\x61\x6D\x65","\x6C\x6F\x63\x61\x74\x69\x6F\x6E","\x3F","\x26","\x3D","\x75\x6E\x64\x6F","\x72\x65\x64\x6F","\x63\x61\x6E\x55\x6E\x64\x6F","\x63\x61\x6E\x52\x65\x64\x6F","\x69\x73\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x45\x6D\x70\x74\x79","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C\x73","\x64\x65\x6C\x65\x74\x65","\x64\x75\x70\x6C\x69\x63\x61\x74\x65","\x62\x6F\x6C\x64","\x69\x74\x61\x6C\x69\x63","\x75\x6E\x64\x65\x72\x6C\x69\x6E\x65","\x74\x6F\x46\x72\x6F\x6E\x74","\x74\x6F\x42\x61\x63\x6B","\x64\x61\x73\x68\x65\x64","\x72\x6F\x75\x6E\x64\x65\x64","\x73\x68\x61\x64\x6F\x77","\x74\x69\x6C\x74","\x61\x75\x74\x6F\x73\x69\x7A\x65","\x63\x75\x72\x76\x65\x64","\x72\x6F\x74\x61\x74\x69\x6F\x6E","\x77\x6F\x72\x64\x57\x72\x61\x70","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x6F\x75\x6E\x74","\x67\x72\x6F\x75\x70","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C","\x75\x6E\x67\x72\x6F\x75\x70","\x72\x65\x6D\x6F\x76\x65\x46\x72\x6F\x6D\x47\x72\x6F\x75\x70","\x66\x6F\x6E\x74\x46\x61\x6D\x69\x6C\x79","\x66\x6F\x6E\x74\x53\x69\x7A\x65","\x61\x6C\x69\x67\x6E\x6D\x65\x6E\x74","\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x66\x6F\x72\x6D\x61\x74","\x61\x72\x72\x61\x6E\x67\x65","\x6C\x69\x6E\x65\x77\x69\x64\x74\x68","\x73\x70\x61\x63\x69\x6E\x67","\x6C\x69\x6E\x65","\x6C\x69\x6E\x65\x65\x6E\x64","\x6C\x69\x6E\x65\x73\x74\x61\x72\x74","\x73\x65\x74\x41\x73\x44\x65\x66\x61\x75\x6C\x74\x45\x64\x67\x65","\x61\x6C\x69\x67\x6E","\x67\x65\x74\x53\x74\x61\x74\x65","\x69\x73\x4C\x6F\x6F\x70","\x64\x69\x72\x65\x63\x74\x69\x6F\x6E","\x66\x6F\x6C\x64\x69\x6E\x67\x45\x6E\x61\x62\x6C\x65\x64","\x63\x75\x72\x72\x65\x6E\x74\x52\x6F\x6F\x74","\x6E\x61\x76\x69\x67\x61\x74\x69\x6F\x6E","\x68\x6F\x6D\x65","\x65\x78\x69\x74\x47\x72\x6F\x75\x70","\x65\x6E\x74\x65\x72\x47\x72\x6F\x75\x70","\x65\x78\x70\x61\x6E\x64","\x63\x6F\x6C\x6C\x61\x70\x73\x65","\x65\x64\x69\x74\x4C\x69\x6E\x6B","\x67\x65\x74\x4C\x69\x6E\x6B\x46\x6F\x72\x43\x65\x6C\x6C","\x6F\x70\x65\x6E\x4C\x69\x6E\x6B","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x4D\x6F\x64\x65\x6C","\x63\x6C\x69\x65\x6E\x74\x57\x69\x64\x74\x68","\x63\x6C\x69\x65\x6E\x74\x48\x65\x69\x67\x68\x74","\x6D\x69\x6E","\x6D\x61\x78","\x68\x65\x69\x67\x68\x74","\x70\x78","\x74\x6F\x70","\x49\x53\x5F\x51\x55\x49\x52\x4B\x53","\x77\x69\x64\x74\x68","\x62\x6F\x74\x74\x6F\x6D","\x6C\x65\x66\x74","\x64\x69\x73\x70\x6C\x61\x79","\x6E\x6F\x6E\x65","\x68\x73\x70\x6C\x69\x74","\x76\x73\x70\x6C\x69\x74","\x67\x65\x4D\x65\x6E\x75\x62\x61\x72\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x63\x72\x65\x61\x74\x65\x44\x69\x76","\x67\x65\x54\x6F\x6F\x6C\x62\x61\x72\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x67\x65\x53\x69\x64\x65\x62\x61\x72\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x67\x65\x4F\x75\x74\x6C\x69\x6E\x65\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x67\x65\x44\x69\x61\x67\x72\x61\x6D\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x67\x65\x46\x6F\x6F\x74\x65\x72\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x67\x65\x48\x73\x70\x6C\x69\x74","\x67\x65\x56\x73\x70\x6C\x69\x74","\x30\x70\x78","\x72\x69\x67\x68\x74","\x6D\x65\x6E\x75\x62\x61\x72","\x67\x65\x4D\x65\x6E\x75\x62\x61\x72","\x63\x72\x65\x61\x74\x65\x4D\x65\x6E\x75\x62\x61\x72","\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64","\x74\x6F\x6F\x6C\x62\x61\x72","\x67\x65\x54\x6F\x6F\x6C\x62\x61\x72","\x63\x72\x65\x61\x74\x65\x54\x6F\x6F\x6C\x62\x61\x72","\x73\x69\x64\x65\x62\x61\x72","\x63\x72\x65\x61\x74\x65\x53\x69\x64\x65\x62\x61\x72","\x63\x72\x65\x61\x74\x65\x46\x6F\x6F\x74\x65\x72","\x73\x74\x61\x74\x75\x73\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x63\x72\x65\x61\x74\x65\x53\x74\x61\x74\x75\x73\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x73\x74\x61\x74\x75\x73\x43\x68\x61\x6E\x67\x65\x64","\x67\x65\x74\x53\x74\x61\x74\x75\x73","\x73\x65\x74\x53\x74\x61\x74\x75\x73\x54\x65\x78\x74","\x61\x64\x64\x53\x70\x6C\x69\x74\x48\x61\x6E\x64\x6C\x65\x72","\x61","\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74","\x63\x6C\x61\x73\x73\x4E\x61\x6D\x65","\x67\x65\x49\x74\x65\x6D\x20\x67\x65\x53\x74\x61\x74\x75\x73","\x69\x6E\x6E\x65\x72\x48\x54\x4D\x4C","\x67\x65\x46\x6F\x6F\x74\x65\x72","\x64\x69\x76","\x63\x72\x65\x61\x74\x65\x48\x65\x61\x64\x65\x72","\x63\x72\x65\x61\x74\x65\x46\x6F\x72\x6D","\x66\x6F\x72\x6D","\x67\x65\x74\x43\x6C\x69\x65\x6E\x74\x58","\x67\x65\x74\x43\x6C\x69\x65\x6E\x74\x59","\x78","\x79","\x6D\x6F\x75\x73\x65\x6D\x6F\x76\x65","\x74\x6F\x75\x63\x68\x6D\x6F\x76\x65","\x6D\x6F\x75\x73\x65\x75\x70","\x74\x6F\x75\x63\x68\x65\x6E\x64","\x68\x69\x64\x65\x44\x69\x61\x6C\x6F\x67","\x64\x69\x61\x6C\x6F\x67","\x49\x53\x5F\x56\x4D\x4C","\x63\x6C\x6F\x73\x65","\x73\x61\x76\x65\x46\x69\x6C\x65","\x67\x65\x74\x4F\x72\x43\x72\x65\x61\x74\x65\x46\x69\x6C\x65\x6E\x61\x6D\x65","\x70\x75\x62\x6C\x69\x73\x68\x46\x69\x6C\x65","\x65\x78\x65\x63\x75\x74\x65\x4C\x61\x79\x6F\x75\x74","\x61\x6E\x69\x6D\x61\x74\x65","\x62\x65\x67\x69\x6E\x55\x70\x64\x61\x74\x65","\x65\x78\x65\x63\x75\x74\x65","\x43\x61\x6D\x69\x6E\x6F","\x75\x73\x65\x72\x41\x67\x65\x6E\x74","\x65\x6E\x64\x55\x70\x64\x61\x74\x65","\x73\x74\x61\x72\x74\x41\x6E\x69\x6D\x61\x74\x69\x6F\x6E","\x69\x73\x43\x6F\x6E\x74\x72\x6F\x6C\x44\x6F\x77\x6E","\x49\x53\x5F\x4D\x41\x43","\x6D\x65\x74\x61\x4B\x65\x79","\x6D\x6F\x76\x65\x43\x65\x6C\x6C\x73","\x73\x63\x72\x6F\x6C\x6C\x43\x65\x6C\x6C\x54\x6F\x56\x69\x73\x69\x62\x6C\x65","\x65\x6E\x61\x62\x6C\x65\x64","\x66\x75\x6E\x63\x74","\x62\x69\x6E\x64\x43\x6F\x6E\x74\x72\x6F\x6C\x53\x68\x69\x66\x74\x4B\x65\x79","\x62\x69\x6E\x64\x43\x6F\x6E\x74\x72\x6F\x6C\x4B\x65\x79","\x62\x69\x6E\x64\x53\x68\x69\x66\x74\x4B\x65\x79","\x62\x69\x6E\x64\x4B\x65\x79","\x65\x73\x63\x61\x70\x65","\x65\x6E\x74\x65\x72","\x66\x6F\x6C\x64\x43\x65\x6C\x6C\x73","\x7A\x6F\x6F\x6D\x49\x6E","\x7A\x6F\x6F\x6D\x4F\x75\x74","\x73\x65\x6C\x65\x63\x74\x41\x6C\x6C","\x73\x65\x6C\x65\x63\x74\x56\x65\x72\x74\x69\x63\x65\x73","\x73\x65\x6C\x65\x63\x74\x45\x64\x67\x65\x73","\x65\x78\x70\x6F\x72\x74","\x63\x6F\x6E\x6E\x65\x63\x74","\x67\x72\x69\x64","\x61\x62\x6F\x75\x74","\x6D\x75\x73\x74\x68\x61\x76\x65","\x6F\x75\x74\x67\x6F\x69\x6E\x67\x65\x64\x67\x65","\x70\x75\x73\x68","\x69\x6E\x63\x6F\x6D\x69\x6E\x67\x65\x64\x67\x65"];EditorUi= function(_0x54c2x1,_0x54c2x2){this[_0xa356[0]]= _0x54c2x1|| new Editor();this[_0xa356[1]]= _0x54c2x2|| document[_0xa356[3]](_0xa356[2]);var _0x54c2x3=_0x54c2x1[_0xa356[4]];var _0x54c2x4=this;this[_0xa356[1]][_0xa356[6]][_0xa356[5]]= _0xa356[7]; new Image()[_0xa356[8]]= mxPopupMenu[_0xa356[10]][_0xa356[9]];if(mxConnectionHandler[_0xa356[10]][_0xa356[11]]!= null){ new Image()[_0xa356[8]]= mxConnectionHandler[_0xa356[10]][_0xa356[11]][_0xa356[8]]};this[_0xa356[12]]= new Actions(this);this[_0xa356[13]]= new Menus(this);this[_0xa356[14]]();this[_0xa356[15]]();this[_0xa356[16]]();var _0x54c2x5=mxUtils[_0xa356[20]](this,function(_0x54c2x6){if(_0x54c2x6== null){_0x54c2x6= window[_0xa356[17]]};if(this[_0xa356[18]](_0x54c2x6)){return true};return _0x54c2x3[_0xa356[19]]()});if(this[_0xa356[1]]== document[_0xa356[21]]){this[_0xa356[23]][_0xa356[22]]= _0x54c2x5;this[_0xa356[23]][_0xa356[24]]= _0x54c2x5;this[_0xa356[25]][_0xa356[22]]= _0x54c2x5;this[_0xa356[25]][_0xa356[24]]= _0x54c2x5;this[_0xa356[26]][_0xa356[22]]= _0x54c2x5;this[_0xa356[26]][_0xa356[24]]= _0x54c2x5;this[_0xa356[27]][_0xa356[22]]= _0x54c2x5;this[_0xa356[27]][_0xa356[24]]= _0x54c2x5;this[_0xa356[28]][_0xa356[22]]= _0x54c2x5;this[_0xa356[28]][_0xa356[24]]= _0x54c2x5};if(mxClient[_0xa356[29]]&& ( typeof (document[_0xa356[30]])=== _0xa356[31]|| document[_0xa356[30]]< 9)){mxEvent[_0xa356[33]](this[_0xa356[26]],_0xa356[32],_0x54c2x5);mxEvent[_0xa356[33]](this[_0xa356[27]],_0xa356[32],_0x54c2x5)}else {this[_0xa356[26]][_0xa356[34]]= _0x54c2x5;this[_0xa356[27]][_0xa356[34]]= _0x54c2x5};_0x54c2x3[_0xa356[35]](this[_0xa356[26]]);_0x54c2x3[_0xa356[15]]();_0x54c2x3[_0xa356[1]][_0xa356[38]](_0xa356[36],_0xa356[37]);_0x54c2x3[_0xa356[1]][_0xa356[6]][_0xa356[39]]= _0xa356[40];_0x54c2x3[_0xa356[1]][_0xa356[6]][_0xa356[41]]= _0xa356[42]+ _0x54c2x1[_0xa356[43]]+ _0xa356[44];_0x54c2x3[_0xa356[1]][_0xa356[6]][_0xa356[45]]= _0xa356[46];_0x54c2x3[_0xa356[1]][_0xa356[47]]();var _0x54c2x7=_0x54c2x3[_0xa356[48]];_0x54c2x3[_0xa356[48]]= function(_0x54c2x8,_0x54c2x9,_0x54c2xa){if(_0x54c2x8== mxEvent[_0xa356[49]]){this[_0xa356[1]][_0xa356[47]]()};_0x54c2x7[_0xa356[50]](this,arguments)};this[_0xa356[56]](_0x54c2x3[_0xa356[51]],[_0xa356[52],_0xa356[53],_0xa356[54]],[[1,1],[1,1],[0,0]],[[0,0],[0,0],[1,_0xa356[55]]]);this[_0xa356[56]](_0x54c2x3[_0xa356[51]],[_0xa356[57],_0xa356[58],_0xa356[59],_0xa356[60],_0xa356[61],_0xa356[62],_0xa356[63]],[[1,1],[0,0],[0,1],[0,1],[0,1],[1,1],[0,1]],[[1,_0xa356[55]],[1,_0xa356[55]],[1,_0xa356[55]],[1,_0xa356[55]],[1,_0xa356[55]],[1,_0xa356[55]],[1,_0xa356[55]]]);this[_0xa356[56]](_0x54c2x3[_0xa356[51]],[_0xa356[64],_0xa356[65]],[[1,1],[1,1]],[[1,_0xa356[55]],[1,_0xa356[55]]]);this[_0xa356[56]](_0x54c2x3[_0xa356[51]],[_0xa356[66],_0xa356[67],_0xa356[68],_0xa356[69],_0xa356[70],_0xa356[71],_0xa356[72],_0xa356[73],_0xa356[74],_0xa356[75]],[[1,_0xa356[55]],[1,1],[1,_0xa356[55]],[1,1],[1,1],[1,1],[1,1],[1,1],[1,_0xa356[55]],[1,_0xa356[55]]],[[1,_0xa356[55]],[1,_0xa356[55]],[1,_0xa356[55]],[1,_0xa356[55]],[1,_0xa356[55]],[1,_0xa356[55]],[1,_0xa356[55]],[1,_0xa356[55]],[1,_0xa356[55]],[1,_0xa356[55]]]);this[_0xa356[56]](_0x54c2x3[_0xa356[51]],[_0xa356[76]],[[1,1]],[[1,_0xa356[55]]]);this[_0xa356[56]](_0x54c2x3[_0xa356[51]],[_0xa356[77],_0xa356[78],_0xa356[79],_0xa356[80]],[[1,1],[1,1],[1,1],[1,1]],[[1,_0xa356[55]],[1,_0xa356[55]],[1,_0xa356[55]],[1,_0xa356[55]]]);this[_0xa356[56]](_0x54c2x3[_0xa356[51]],[_0xa356[81],_0xa356[82],_0xa356[83],_0xa356[84],_0xa356[85]],[[0,0],[1,2],[1,2],[1,2],[1,_0xa356[55]]],[[1,_0xa356[55]],[1,_0xa356[55]],[1,_0xa356[55]],[1,_0xa356[55]],[1,_0xa356[55]]]);this[_0xa356[56]](_0x54c2x3[_0xa356[51]],[_0xa356[86],_0xa356[87]],[[1,1],[1,1]],[[1,_0xa356[55]],[1,_0xa356[55]]]);this[_0xa356[56]](_0x54c2x3[_0xa356[51]],[_0xa356[88],_0xa356[89],_0xa356[90],_0xa356[91],_0xa356[92]],[[1,1],[1,1],[0,1],[0,1],[0,1]],[[1,_0xa356[55]],[1,_0xa356[55]],[1,_0xa356[55]],[1,_0xa356[55]],[1,_0xa356[55]]]);_0x54c2x3[_0xa356[93]]= function(_0x54c2x6,_0x54c2xb){var _0x54c2xc=[_0xa356[66],_0xa356[82],_0xa356[83],_0xa356[68],_0xa356[74],_0xa356[75],_0xa356[85]];var _0x54c2xd= new mxEventObject(mxEvent.DOUBLE_CLICK,_0xa356[17],_0x54c2x6,_0xa356[94],_0x54c2xb);this[_0xa356[95]](_0x54c2xd);if(this[_0xa356[96]]()&& !mxEvent[_0xa356[97]](_0x54c2x6)&& !_0x54c2xd[_0xa356[97]]()){if(this[_0xa356[99]]()[_0xa356[98]](_0x54c2xb)){if(_0x54c2xc[_0xa356[103]](_0x54c2xb[_0xa356[102]][_0xa356[101]][_0xa356[100]])>= 0){this[_0xa356[104]](_0x54c2xb)}}else {if(this[_0xa356[99]]()[_0xa356[105]](_0x54c2xb)){_0x54c2x4[_0xa356[106]]( new GeneralDialog(_0x54c2x4,_0x54c2xb)[_0xa356[1]],320,280,true,true)}};_0x54c2xd[_0xa356[107]]()}};_0x54c2x3[_0xa356[109]][_0xa356[108]]= true;_0x54c2x3[_0xa356[109]][_0xa356[110]]= mxUtils[_0xa356[20]](this,function(_0x54c2xe,_0x54c2xb,_0x54c2x6){this[_0xa356[13]][_0xa356[111]](_0x54c2xe,_0x54c2xb,_0x54c2x6)});_0x54c2x1[_0xa356[113]][_0xa356[35]](this[_0xa356[112]]);mxEvent[_0xa356[115]](document,mxUtils[_0xa356[20]](this,function(_0x54c2x6){_0x54c2x3[_0xa356[109]][_0xa356[114]]()}));if(mxClient[_0xa356[116]]){mxEvent[_0xa356[33]](_0x54c2x3[_0xa356[1]],_0xa356[117],mxUtils[_0xa356[20]](this,function(_0x54c2x6){_0x54c2x3[_0xa356[122]][_0xa356[121]]()[_0xa356[38]](_0xa356[118],_0xa356[119]+ _0x54c2x6[_0xa356[120]]+ _0xa356[44]);_0x54c2x3[_0xa356[122]][_0xa356[124]]()[_0xa356[6]][_0xa356[123]]= _0xa356[7]}));mxEvent[_0xa356[33]](_0x54c2x3[_0xa356[1]],_0xa356[125],mxUtils[_0xa356[20]](this,function(_0x54c2x6){_0x54c2x3[_0xa356[122]][_0xa356[121]]()[_0xa356[126]](_0xa356[118]);_0x54c2x3[_0xa356[127]]= true;_0x54c2x3[_0xa356[128]](_0x54c2x6[_0xa356[120]]);_0x54c2x3[_0xa356[122]][_0xa356[124]]()[_0xa356[6]][_0xa356[123]]= _0xa356[129]}))};var _0x54c2xf=this[_0xa356[130]](_0x54c2x1);this[_0xa356[131]]= function(){return _0x54c2xf};mxEvent[_0xa356[33]](window,_0xa356[132],mxUtils[_0xa356[20]](this,function(){this[_0xa356[15]]();_0x54c2x3[_0xa356[133]]();this[_0xa356[0]][_0xa356[113]][_0xa356[134]](false);this[_0xa356[0]][_0xa356[113]][_0xa356[113]][_0xa356[133]]()}));this[_0xa356[35]]();this[_0xa356[135]]()};EditorUi[_0xa356[10]][_0xa356[136]]= (mxClient[_0xa356[116]])?16:8;EditorUi[_0xa356[10]][_0xa356[137]]= 33;EditorUi[_0xa356[10]][_0xa356[138]]= 36;EditorUi[_0xa356[10]][_0xa356[139]]= 28;EditorUi[_0xa356[10]][_0xa356[140]]= 204;EditorUi[_0xa356[10]][_0xa356[141]]= 190;EditorUi[_0xa356[10]][_0xa356[35]]= function(){this[_0xa356[142]]();this[_0xa356[143]]();var _0x54c2x10=this[_0xa356[12]][_0xa356[145]](_0xa356[144]);var _0x54c2x11=function(){_0x54c2x10[_0xa356[147]](!mxClipboard[_0xa356[146]]())};var _0x54c2x12=mxClipboard[_0xa356[148]];mxClipboard[_0xa356[148]]= function(){_0x54c2x12[_0xa356[50]](this,arguments);_0x54c2x11()};var _0x54c2x13=mxClipboard[_0xa356[149]];mxClipboard[_0xa356[149]]= function(){_0x54c2x13[_0xa356[50]](this,arguments);_0x54c2x11()}};EditorUi[_0xa356[10]][_0xa356[18]]= function(_0x54c2x6){return false};EditorUi[_0xa356[10]][_0xa356[135]]= function(){try{if(window[_0xa356[150]]!= null&& window[_0xa356[150]][_0xa356[151]]!= null){window[_0xa356[150]][_0xa356[151]][_0xa356[163]](mxUtils[_0xa356[20]](this,function(_0x54c2x14,_0x54c2x15){try{var _0x54c2x16=mxUtils[_0xa356[152]](_0x54c2x14);this[_0xa356[0]][_0xa356[154]](_0x54c2x16[_0xa356[153]]);this[_0xa356[0]][_0xa356[155]]= false;this[_0xa356[0]][_0xa356[157]][_0xa356[156]]();if(_0x54c2x15!= null){this[_0xa356[0]][_0xa356[158]]= _0x54c2x15}}catch(e){mxUtils[_0xa356[162]](mxResources[_0xa356[145]](_0xa356[159])+ _0xa356[160]+ e[_0xa356[161]])}}))}}catch(e){}};EditorUi[_0xa356[10]][_0xa356[164]]= function(_0x54c2x14,_0x54c2x15,_0x54c2x17){try{var _0x54c2x16=mxUtils[_0xa356[152]](_0x54c2x14);this[_0xa356[0]][_0xa356[154]](_0x54c2x16[_0xa356[153]]);this[_0xa356[0]][_0xa356[155]]= false;this[_0xa356[0]][_0xa356[157]][_0xa356[156]]();if(_0x54c2x15!= null){this[_0xa356[0]][_0xa356[158]]= _0x54c2x15};if(_0x54c2x17!= null){this[_0xa356[0]][_0xa356[165]]= _0x54c2x17}}catch(e){mxUtils[_0xa356[162]](mxResources[_0xa356[145]](_0xa356[159])+ _0xa356[160]+ e[_0xa356[161]])}};EditorUi[_0xa356[10]][_0xa356[166]]= function(_0x54c2x18){var _0x54c2x1=this[_0xa356[0]];if(_0x54c2x18!= null){var _0x54c2x14=mxUtils[_0xa356[168]](this[_0xa356[0]][_0xa356[167]]());try{if(useLocalStorage){if(localStorage[_0xa356[169]](_0x54c2x18)!= null&& !mxUtils[_0xa356[171]](mxResources[_0xa356[145]](_0xa356[170],[_0x54c2x18]))){return};localStorage[_0xa356[172]](_0x54c2x18,_0x54c2x14);this[_0xa356[0]][_0xa356[175]](mxResources[_0xa356[145]](_0xa356[173])+ _0xa356[174]+ new Date())}else {console[_0xa356[177]](_0x54c2x14[_0xa356[176]]);console[_0xa356[177]](MAX_REQUEST_SIZE);if(_0x54c2x14[_0xa356[176]]< MAX_REQUEST_SIZE){_0x54c2x14= encodeURIComponent(_0x54c2x14);_0x54c2x18= encodeURIComponent(_0x54c2x18);var _0x54c2x19= new XMLHttpRequest();_0x54c2x19[_0xa356[135]](_0xa356[178],SAVE_URL,true);_0x54c2x19[_0xa356[181]](_0xa356[179],_0xa356[180]);_0x54c2x19[_0xa356[181]](_0xa356[182],_0xa356[183]+ _0x54c2x1[_0xa356[165]][_0xa356[184]]);_0x54c2x19[_0xa356[185]]= function(_0x54c2x1a){if(_0x54c2x19[_0xa356[186]]=== 4){if(_0x54c2x19[_0xa356[187]]=== 201){_0x54c2x1[_0xa356[175]](_0xa356[188]+ JSON[_0xa356[191]](_0x54c2x19[_0xa356[190]])[_0xa356[189]]+ _0xa356[192]);setTimeout(function(){window[_0xa356[135]](_0xa356[193]+ JSON[_0xa356[191]](_0x54c2x19[_0xa356[190]])[_0xa356[194]],_0xa356[195])},1500)}else {try{var _0x54c2x1b=JSON[_0xa356[191]](_0x54c2x19[_0xa356[190]]);_0x54c2x1[_0xa356[175]](_0xa356[196]+ _0x54c2x1b[_0xa356[197]][0][_0xa356[161]])}catch(_0x54c2x1a){_0x54c2x1[_0xa356[175]](_0xa356[198]+ _0xa356[199]+ _0x54c2x19[_0xa356[187]]+ _0xa356[174]+ _0x54c2x19[_0xa356[200]]+ _0xa356[44])}}}};_0x54c2x19[_0xa356[201]]= function(_0x54c2x1a){mxUtils[_0xa356[162]](_0x54c2x19[_0xa356[200]])};_0x54c2x19[_0xa356[203]](_0xa356[202]+ _0x54c2x18)}else {mxUtils[_0xa356[162]](mxResources[_0xa356[145]](_0xa356[204]));mxUtils[_0xa356[205]](_0x54c2x14);return}};this[_0xa356[0]][_0xa356[158]]= _0x54c2x18;this[_0xa356[0]][_0xa356[155]]= false}catch(e){this[_0xa356[0]][_0xa356[175]](_0xa356[198])}}else {this[_0xa356[0]][_0xa356[175]](_0xa356[198])}};EditorUi[_0xa356[10]][_0xa356[206]]= function(_0x54c2x18){var _0x54c2x1=this[_0xa356[0]];if(_0x54c2x18!= null){var _0x54c2x14=mxUtils[_0xa356[168]](this[_0xa356[0]][_0xa356[167]]());try{if(useLocalStorage){if(localStorage[_0xa356[169]](_0x54c2x18)!= null&& !mxUtils[_0xa356[171]](mxResources[_0xa356[145]](_0xa356[170],[_0x54c2x18]))){return};localStorage[_0xa356[172]](_0x54c2x18,_0x54c2x14);this[_0xa356[0]][_0xa356[175]](mxResources[_0xa356[145]](_0xa356[173])+ _0xa356[174]+ new Date())}else {console[_0xa356[177]](_0x54c2x14[_0xa356[176]]);console[_0xa356[177]](MAX_REQUEST_SIZE);if(_0x54c2x14[_0xa356[176]]< MAX_REQUEST_SIZE){_0x54c2x14= encodeURIComponent(_0x54c2x14);var _0x54c2x19= new XMLHttpRequest();_0x54c2x19[_0xa356[135]](_0xa356[207],SAVE_URL+ this[_0xa356[0]][_0xa356[165]][_0xa356[194]],true);_0x54c2x19[_0xa356[181]](_0xa356[179],_0xa356[180]);_0x54c2x19[_0xa356[181]](_0xa356[182],_0xa356[183]+ _0x54c2x1[_0xa356[165]][_0xa356[184]]);_0x54c2x19[_0xa356[185]]= function(_0x54c2x1a){if(_0x54c2x19[_0xa356[186]]=== 4){if(_0x54c2x19[_0xa356[187]]=== 200){_0x54c2x1[_0xa356[175]](_0xa356[208]+ JSON[_0xa356[191]](_0x54c2x19[_0xa356[190]])[_0xa356[209]]+ _0xa356[199]+ _0x54c2x19[_0xa356[187]]+ _0xa356[174]+ _0x54c2x19[_0xa356[200]]+ _0xa356[44])}else {try{var _0x54c2x1b=JSON[_0xa356[191]](_0x54c2x19[_0xa356[190]]);_0x54c2x1[_0xa356[175]](_0xa356[210]+ _0x54c2x1b[_0xa356[197]][0][_0xa356[161]])}catch(_0x54c2x1a){_0x54c2x1[_0xa356[175]](_0xa356[211]+ _0xa356[199]+ _0x54c2x19[_0xa356[187]]+ _0xa356[174]+ _0x54c2x19[_0xa356[200]]+ _0xa356[44])}}}};_0x54c2x19[_0xa356[201]]= function(_0x54c2x1a){mxUtils[_0xa356[162]](_0x54c2x19[_0xa356[200]])};_0x54c2x19[_0xa356[203]](_0xa356[212]+ _0x54c2x14)}else {mxUtils[_0xa356[162]](mxResources[_0xa356[145]](_0xa356[204]));mxUtils[_0xa356[205]](_0x54c2x14);return}};this[_0xa356[0]][_0xa356[158]]= _0x54c2x18;this[_0xa356[0]][_0xa356[155]]= false}catch(e){this[_0xa356[0]][_0xa356[175]](_0xa356[213])}}else {this[_0xa356[0]][_0xa356[175]](_0xa356[213])}};EditorUi[_0xa356[10]][_0xa356[214]]= function(_0x54c2x1c){var _0x54c2x1=this[_0xa356[0]];if(_0x54c2x1c!== null){var _0x54c2x19= new XMLHttpRequest();_0x54c2x19[_0xa356[135]](_0xa356[207],SAVE_URL+ this[_0xa356[0]][_0xa356[165]][_0xa356[194]],true);_0x54c2x19[_0xa356[181]](_0xa356[179],_0xa356[180]);_0x54c2x19[_0xa356[181]](_0xa356[182],_0xa356[183]+ _0x54c2x1[_0xa356[165]][_0xa356[184]]);_0x54c2x19[_0xa356[185]]= function(_0x54c2x1a){if(_0x54c2x19[_0xa356[186]]=== 4){if(_0x54c2x19[_0xa356[187]]=== 200){_0x54c2x1[_0xa356[175]](_0xa356[208]+ JSON[_0xa356[191]](_0x54c2x19[_0xa356[190]])[_0xa356[209]]+ _0xa356[199]+ _0x54c2x19[_0xa356[187]]+ _0xa356[174]+ _0x54c2x19[_0xa356[200]]+ _0xa356[44]);_0x54c2x1[_0xa356[165]][_0xa356[214]]= _0x54c2x1c}else {try{var _0x54c2x1b=JSON[_0xa356[191]](_0x54c2x19[_0xa356[190]]);_0x54c2x1[_0xa356[175]](_0xa356[215]+ _0x54c2x1b[_0xa356[197]][0][_0xa356[161]])}catch(_0x54c2x1a){_0x54c2x1[_0xa356[175]](_0xa356[216]+ _0xa356[199]+ _0x54c2x19[_0xa356[187]]+ _0xa356[174]+ _0x54c2x19[_0xa356[200]]+ _0xa356[44])}}}};_0x54c2x19[_0xa356[201]]= function(_0x54c2x1a){mxUtils[_0xa356[162]](_0x54c2x19[_0xa356[200]])};_0x54c2x19[_0xa356[203]](_0xa356[217]+ _0x54c2x1c)}else {this[_0xa356[0]][_0xa356[175]](_0xa356[216])}};EditorUi[_0xa356[10]][_0xa356[218]]= function(_0x54c2x18){var _0x54c2x1=this[_0xa356[0]];if(_0x54c2x18!= null){var _0x54c2x14=mxUtils[_0xa356[168]](this[_0xa356[0]][_0xa356[167]]());try{if(useLocalStorage){if(localStorage[_0xa356[169]](_0x54c2x18)!= null&& !mxUtils[_0xa356[171]](mxResources[_0xa356[145]](_0xa356[170],[_0x54c2x18]))){return};localStorage[_0xa356[172]](_0x54c2x18,_0x54c2x14);this[_0xa356[0]][_0xa356[175]](mxResources[_0xa356[145]](_0xa356[173])+ _0xa356[174]+ new Date())}else {console[_0xa356[177]](_0x54c2x14[_0xa356[176]]);console[_0xa356[177]](MAX_REQUEST_SIZE);if(_0x54c2x14[_0xa356[176]]< MAX_REQUEST_SIZE){_0x54c2x14= encodeURIComponent(_0x54c2x14);_0x54c2x18= encodeURIComponent(_0x54c2x18);var _0x54c2x19= new XMLHttpRequest();_0x54c2x19[_0xa356[135]](_0xa356[178],SAVE_URL,true);_0x54c2x19[_0xa356[181]](_0xa356[179],_0xa356[180]);_0x54c2x19[_0xa356[181]](_0xa356[182],_0xa356[183]+ _0x54c2x1[_0xa356[165]][_0xa356[184]]);_0x54c2x19[_0xa356[185]]= function(_0x54c2x1a){if(_0x54c2x19[_0xa356[186]]=== 4){if(_0x54c2x19[_0xa356[187]]=== 201){_0x54c2x1[_0xa356[175]](_0xa356[188]+ JSON[_0xa356[191]](_0x54c2x19[_0xa356[190]])[_0xa356[189]]+ _0xa356[192]);setTimeout(function(){window[_0xa356[135]](_0xa356[193]+ JSON[_0xa356[191]](_0x54c2x19[_0xa356[190]])[_0xa356[194]],_0xa356[195])},1500)}else {try{var _0x54c2x1b=JSON[_0xa356[191]](_0x54c2x19[_0xa356[190]]);_0x54c2x1[_0xa356[175]](_0xa356[219]+ _0x54c2x1b[_0xa356[197]][0][_0xa356[161]])}catch(_0x54c2x1a){_0x54c2x1[_0xa356[175]](_0xa356[220]+ _0xa356[199]+ _0x54c2x19[_0xa356[187]]+ _0xa356[174]+ _0x54c2x19[_0xa356[200]]+ _0xa356[44])}}}};_0x54c2x19[_0xa356[201]]= function(_0x54c2x1a){mxUtils[_0xa356[162]](_0x54c2x19[_0xa356[200]])};_0x54c2x19[_0xa356[203]](_0xa356[221]+ _0x54c2x18+ _0xa356[222]+ _0x54c2x14+ _0xa356[223]+ _0x54c2x14)}else {mxUtils[_0xa356[162]](mxResources[_0xa356[145]](_0xa356[204]));mxUtils[_0xa356[205]](_0x54c2x14);return}};this[_0xa356[0]][_0xa356[158]]= _0x54c2x18;this[_0xa356[0]][_0xa356[155]]= false}catch(e){this[_0xa356[0]][_0xa356[175]](_0xa356[213])}}else {this[_0xa356[0]][_0xa356[175]](_0xa356[213])}};EditorUi[_0xa356[10]][_0xa356[224]]= function(_0x54c2x1d,_0x54c2x1e){var _0x54c2x3=this[_0xa356[0]][_0xa356[4]];for(var _0x54c2x1d=_0x54c2x1d!= null?_0x54c2x1d:_0x54c2x3[_0xa356[226]][_0xa356[225]](),_0x54c2x1e=_0x54c2x1e!= null?_0x54c2x1e:{},_0x54c2x1f=true,_0x54c2x20=_0x54c2x3[_0xa356[226]][_0xa356[227]](_0x54c2x1d),_0x54c2x1a=0;_0x54c2x1a< _0x54c2x20;_0x54c2x1a++){var _0x54c2x21=_0x54c2x3[_0xa356[226]][_0xa356[228]](_0x54c2x1d,_0x54c2x1a),_0x54c2x22=_0x54c2x1e;_0x54c2x3[_0xa356[229]](_0x54c2x21)&& (_0x54c2x22= {});_0x54c2x22= this[_0xa356[224]](_0x54c2x21,_0x54c2x22);_0x54c2x22!= null?_0x54c2x3[_0xa356[231]](_0x54c2x21,_0x54c2x22[_0xa356[170]](/\n/g,_0xa356[230])):_0x54c2x3[_0xa356[231]](_0x54c2x21,null);_0x54c2x1f= _0x54c2x1f&& _0x54c2x22== null};_0x54c2x20= _0xa356[232];if(_0x54c2x3[_0xa356[226]][_0xa356[105]](_0x54c2x1d)){switch(_0x54c2x1d[_0xa356[101]][_0xa356[291]]){case _0xa356[52]:_0x54c2x20= this[_0xa356[233]](_0xa356[52])?_0xa356[232]:_0xa356[234]+ _0xa356[235];break;case _0xa356[53]:_0x54c2x20= this[_0xa356[233]](_0xa356[53])?_0xa356[232]:_0xa356[236]+ _0xa356[235];break;case _0xa356[67]:_0x54c2x20= (_0x54c2x1d[_0xa356[101]][_0xa356[238]](_0xa356[237])> 0)?_0xa356[232]:mxResources[_0xa356[145]](_0xa356[239])+ _0xa356[235];break;case _0xa356[66]:;case _0xa356[68]:_0x54c2x20= (_0x54c2x1d[_0xa356[101]][_0xa356[238]](_0xa356[237])> 0)?_0xa356[232]:mxResources[_0xa356[145]](_0xa356[239])+ _0xa356[235];_0x54c2x20+= (_0x54c2x1d[_0xa356[101]][_0xa356[238]](_0xa356[240])> 0)?_0xa356[232]:mxResources[_0xa356[145]](_0xa356[241])+ _0xa356[235];break;case _0xa356[74]:_0x54c2x20= (_0x54c2x1d[_0xa356[101]][_0xa356[238]](_0xa356[237])> 0)?_0xa356[232]:mxResources[_0xa356[145]](_0xa356[239])+ _0xa356[235];_0x54c2x20+= (_0x54c2x1d[_0xa356[101]][_0xa356[238]](_0xa356[242])> 0)?_0xa356[232]:mxResources[_0xa356[145]](_0xa356[243])+ _0xa356[235];_0x54c2x20+= (_0x54c2x1d[_0xa356[101]][_0xa356[238]](_0xa356[244])> 0)?_0xa356[232]:mxResources[_0xa356[145]](_0xa356[245])+ _0xa356[235];_0x54c2x20+= (_0x54c2x1d[_0xa356[101]][_0xa356[238]](_0xa356[246])> 0)?_0xa356[232]:mxResources[_0xa356[145]](_0xa356[241])+ _0xa356[235];case _0xa356[75]:_0x54c2x20= (_0x54c2x1d[_0xa356[101]][_0xa356[238]](_0xa356[237])> 0)?_0xa356[232]:mxResources[_0xa356[145]](_0xa356[239])+ _0xa356[235];_0x54c2x20+= (_0x54c2x1d[_0xa356[101]][_0xa356[238]](_0xa356[242])> 0)?_0xa356[232]:mxResources[_0xa356[145]](_0xa356[243])+ _0xa356[235];_0x54c2x20+= (_0x54c2x1d[_0xa356[101]][_0xa356[238]](_0xa356[244])> 0)?_0xa356[232]:mxResources[_0xa356[145]](_0xa356[245])+ _0xa356[235];_0x54c2x20+= (_0x54c2x1d[_0xa356[101]][_0xa356[238]](_0xa356[246])> 0)?_0xa356[232]:mxResources[_0xa356[145]](_0xa356[241])+ _0xa356[235];_0x54c2x20+= (_0x54c2x1d[_0xa356[101]][_0xa356[238]](_0xa356[247])>= 0)?_0xa356[232]:mxResources[_0xa356[145]](_0xa356[248])+ _0xa356[235];break;case _0xa356[85]:_0x54c2x20= (_0x54c2x1d[_0xa356[101]][_0xa356[238]](_0xa356[249])!== _0xa356[232])?_0xa356[232]:mxResources[_0xa356[145]](_0xa356[243])+ _0xa356[235];break;case _0xa356[77]:_0x54c2x20= (_0x54c2x1d[_0xa356[101]][_0xa356[238]](_0xa356[250])> 0)?_0xa356[232]:mxResources[_0xa356[145]](_0xa356[251])+ _0xa356[235];break;case _0xa356[60]:_0x54c2x20= (_0x54c2x1d[_0xa356[101]][_0xa356[238]](_0xa356[252])!== _0xa356[253])?_0xa356[232]:mxResources[_0xa356[145]](_0xa356[254])+ _0xa356[235];break;case _0xa356[64]:;case _0xa356[65]:_0x54c2x20= (_0x54c2x1d[_0xa356[101]][_0xa356[238]](_0xa356[242])> 0)?_0xa356[232]:mxResources[_0xa356[145]](_0xa356[243])+ _0xa356[235];break;case _0xa356[81]:_0x54c2x20= (_0x54c2x1d[_0xa356[101]][_0xa356[238]](_0xa356[255])!== _0xa356[232])?_0xa356[232]:mxResources[_0xa356[145]](_0xa356[256])+ _0xa356[235];break;case _0xa356[89]:;case _0xa356[90]:_0x54c2x20= (_0x54c2x1d[_0xa356[101]][_0xa356[238]](_0xa356[257])!== _0xa356[232])?_0xa356[232]:mxResources[_0xa356[145]](_0xa356[258])+ _0xa356[235];break;case _0xa356[82]:_0x54c2x20= (_0x54c2x1d[_0xa356[101]][_0xa356[238]](_0xa356[259])!== _0xa356[232])?_0xa356[232]:mxResources[_0xa356[145]](_0xa356[260])+ _0xa356[235];break;case _0xa356[69]:_0x54c2x20= (_0x54c2x1d[_0xa356[101]][_0xa356[238]](_0xa356[261])!== _0xa356[232])?_0xa356[232]:mxResources[_0xa356[145]](_0xa356[262])+ _0xa356[235];break;case _0xa356[70]:_0x54c2x20= (_0x54c2x1d[_0xa356[101]][_0xa356[238]](_0xa356[263])!== _0xa356[232])?_0xa356[232]:mxResources[_0xa356[145]](_0xa356[264])+ _0xa356[235];break;case _0xa356[71]:_0x54c2x20= (_0x54c2x1d[_0xa356[101]][_0xa356[238]](_0xa356[265])!== _0xa356[232])?_0xa356[232]:mxResources[_0xa356[145]](_0xa356[266])+ _0xa356[235];break;case _0xa356[76]:_0x54c2x20= (_0x54c2x1d[_0xa356[101]][_0xa356[238]](_0xa356[267])!== _0xa356[232])?_0xa356[232]:mxResources[_0xa356[145]](_0xa356[268])+ _0xa356[235];break;case _0xa356[87]:_0x54c2x20= (_0x54c2x1d[_0xa356[101]][_0xa356[238]](_0xa356[269])!== _0xa356[232])?_0xa356[232]:mxResources[_0xa356[145]](_0xa356[270])+ _0xa356[235];break;case _0xa356[60]:_0x54c2x20= (_0x54c2x1d[_0xa356[101]][_0xa356[238]](_0xa356[271])!== _0xa356[232])?_0xa356[232]:mxResources[_0xa356[145]](_0xa356[272])+ _0xa356[235];break;case _0xa356[59]:_0x54c2x20= (_0x54c2x1d[_0xa356[101]][_0xa356[238]](_0xa356[273])> 0)?_0xa356[232]:mxResources[_0xa356[145]](_0xa356[272])+ _0xa356[235];break;case _0xa356[61]:_0x54c2x20= (_0x54c2x1d[_0xa356[101]][_0xa356[238]](_0xa356[274])!== _0xa356[253])?_0xa356[232]:mxResources[_0xa356[145]](_0xa356[275])+ _0xa356[235];break;case _0xa356[63]:_0x54c2x20= (_0x54c2x1d[_0xa356[101]][_0xa356[238]](_0xa356[276])> 0)?_0xa356[232]:mxResources[_0xa356[145]](_0xa356[277])+ _0xa356[235];break;case _0xa356[83]:_0x54c2x20= (_0x54c2x1d[_0xa356[101]][_0xa356[238]](_0xa356[278])> 0)?_0xa356[232]:mxResources[_0xa356[145]](_0xa356[279])+ _0xa356[235];break;case _0xa356[84]:_0x54c2x20= (_0x54c2x1d[_0xa356[101]][_0xa356[238]](_0xa356[278])!= _0xa356[232])?_0xa356[232]:mxResources[_0xa356[145]](_0xa356[279])+ _0xa356[235];break;case _0xa356[62]:_0x54c2x20= (_0x54c2x1d[_0xa356[101]][_0xa356[238]](_0xa356[280])!== _0xa356[232])?_0xa356[232]:mxResources[_0xa356[145]](_0xa356[281])+ _0xa356[235];break;case _0xa356[91]:_0x54c2x20= (_0x54c2x1d[_0xa356[101]][_0xa356[238]](_0xa356[282])> 0)?_0xa356[232]:mxResources[_0xa356[145]](_0xa356[283])+ _0xa356[235];break;case _0xa356[79]:_0x54c2x20= (_0x54c2x1d[_0xa356[101]][_0xa356[238]](_0xa356[284])> 0)?_0xa356[232]:mxResources[_0xa356[145]](_0xa356[285])+ _0xa356[235];_0x54c2x20+= (_0x54c2x1d[_0xa356[101]][_0xa356[238]](_0xa356[286])!== _0xa356[232])?_0xa356[232]:mxResources[_0xa356[145]](_0xa356[287])+ _0xa356[235];_0x54c2x20+= (_0x54c2x1d[_0xa356[101]][_0xa356[238]](_0xa356[288])!== _0xa356[232])?_0xa356[232]:mxResources[_0xa356[145]](_0xa356[266])+ _0xa356[235];break;case _0xa356[80]:_0x54c2x20= (_0x54c2x1d[_0xa356[101]][_0xa356[238]](_0xa356[284])> 0)?_0xa356[232]:mxResources[_0xa356[145]](_0xa356[285])+ _0xa356[235];_0x54c2x20+= (_0x54c2x1d[_0xa356[101]][_0xa356[238]](_0xa356[286])!== _0xa356[232])?_0xa356[232]:mxResources[_0xa356[145]](_0xa356[287])+ _0xa356[235];break;case _0xa356[72]:_0x54c2x20= (_0x54c2x1d[_0xa356[101]][_0xa356[238]](_0xa356[265])!== _0xa356[232])?_0xa356[232]:mxResources[_0xa356[145]](_0xa356[266])+ _0xa356[235];break;case _0xa356[73]:_0x54c2x20= (_0x54c2x1d[_0xa356[101]][_0xa356[238]](_0xa356[265])!== _0xa356[232])?_0xa356[232]:mxResources[_0xa356[145]](_0xa356[266])+ _0xa356[235];_0x54c2x20+= (_0x54c2x1d[_0xa356[101]][_0xa356[238]](_0xa356[289])!== _0xa356[232])?_0xa356[232]:mxResources[_0xa356[145]](_0xa356[290])+ _0xa356[235];break;case _0xa356[78]:_0x54c2x20= (_0x54c2x1d[_0xa356[101]][_0xa356[238]](_0xa356[289])!== _0xa356[232])?_0xa356[232]:mxResources[_0xa356[145]](_0xa356[290])+ _0xa356[235];break}};if(_0x54c2x3[_0xa356[226]][_0xa356[98]](_0x54c2x1d)){var _0x54c2x23=_0x54c2x3[_0xa356[226]][_0xa356[293]](_0x54c2x1d[_0xa356[102]][_0xa356[292]]());switch(_0x54c2x23[_0xa356[101]][_0xa356[291]]){case _0xa356[66]:var _0x54c2x24=/^[0-9]{1,45}$|^[i]{1}$|^[t]{1}|^[#]{1}|^[*]{1}$/;_0x54c2x20= _0x54c2x20+ ((_0x54c2x24[_0xa356[295]](String(_0x54c2x1d[_0xa356[294]]())))?_0xa356[232]:mxResources[_0xa356[145]](_0xa356[296])+ _0xa356[235]);break;case _0xa356[68]:var _0x54c2x24=/^[0-9]{1,45}$|^[-]{1}$|^[i]{1}$|^[t]{1}|^[#]{1}|^[*]{1}$/;var _0x54c2x25=String(_0x54c2x1d[_0xa356[294]]());var _0x54c2x26=_0x54c2x25[_0xa356[298]](_0xa356[297]);_0x54c2x26[_0xa356[300]](function(_0x54c2x27){_0x54c2x20= _0x54c2x20+ ((_0x54c2x24[_0xa356[295]](_0x54c2x27))?_0xa356[232]:mxResources[_0xa356[145]](_0xa356[299])+ _0xa356[235])});break;case _0xa356[75]:;case _0xa356[74]:var _0x54c2x24=/^(x|i|-)$/;var _0x54c2x25=String(_0x54c2x1d[_0xa356[294]]());_0x54c2x20= _0x54c2x20+ ((_0x54c2x24[_0xa356[295]](_0x54c2x25))?_0xa356[232]:mxResources[_0xa356[145]](_0xa356[301])+ _0xa356[235]);break;case _0xa356[82]:;case _0xa356[83]:;case _0xa356[84]:var _0x54c2x24=/^(true){1}$|^(false){1}$/;_0x54c2x20= _0x54c2x20+ ((_0x54c2x24[_0xa356[295]](String(_0x54c2x1d[_0xa356[294]]())))?_0xa356[232]:mxResources[_0xa356[145]](_0xa356[302])+ _0xa356[235]);break}};_0x54c2x3[_0xa356[303]](_0x54c2x1d)&& !_0x54c2x1f&& (_0x54c2x20= _0x54c2x20+ ((mxResources[_0xa356[145]](_0x54c2x3[_0xa356[304]])|| _0x54c2x3[_0xa356[304]])+ _0xa356[235]));_0x54c2x20= _0x54c2x3[_0xa356[226]][_0xa356[98]](_0x54c2x1d)?_0x54c2x20+ (_0x54c2x3[_0xa356[306]](_0x54c2x1d,_0x54c2x3[_0xa356[226]][_0xa356[305]](_0x54c2x1d,true),_0x54c2x3[_0xa356[226]][_0xa356[305]](_0x54c2x1d,false))|| _0xa356[232]):_0x54c2x20+ (_0x54c2x3[_0xa356[307]](_0x54c2x1d)|| _0xa356[232]);_0x54c2x1a= _0x54c2x3[_0xa356[308]](_0x54c2x1d,_0x54c2x1e);_0x54c2x1a!= null&& (_0x54c2x20= _0x54c2x20+ _0x54c2x1a);_0x54c2x3[_0xa356[226]][_0xa356[309]](_0x54c2x1d)== null&& _0x54c2x3[_0xa356[122]][_0xa356[224]]();return _0x54c2x20[_0xa356[176]]> 0|| !_0x54c2x1f?_0x54c2x20:null};EditorUi[_0xa356[10]][_0xa356[233]]= function(_0x54c2x28){var _0x54c2x3=this[_0xa356[0]][_0xa356[4]];var _0x54c2x29=_0x54c2x3[_0xa356[310]]();var _0x54c2x2a=0;_0x54c2x29[_0xa356[311]][_0xa356[300]](function(_0x54c2x2b){if(_0x54c2x3[_0xa356[226]][_0xa356[105]](_0x54c2x2b)&& _0x54c2x2b[_0xa356[101]][_0xa356[291]]== _0x54c2x28){_0x54c2x2a++}});return _0x54c2x2a> 1?false:true};EditorUi[_0xa356[10]][_0xa356[312]]= function(_0x54c2x18){var _0x54c2x1=this[_0xa356[0]];if(_0x54c2x18!= null){var _0x54c2x1b=this[_0xa356[224]]();if(_0x54c2x1b=== null){var _0x54c2x14=mxUtils[_0xa356[168]](this[_0xa356[0]][_0xa356[167]]());try{if(useLocalStorage){if(localStorage[_0xa356[169]](_0x54c2x18)!= null&& !mxUtils[_0xa356[171]](mxResources[_0xa356[145]](_0xa356[170],[_0x54c2x18]))){return};localStorage[_0xa356[172]](_0x54c2x18,_0x54c2x14);this[_0xa356[0]][_0xa356[175]](mxResources[_0xa356[145]](_0xa356[173])+ _0xa356[174]+ new Date())}else {console[_0xa356[177]](_0x54c2x14[_0xa356[176]]);console[_0xa356[177]](MAX_REQUEST_SIZE);if(_0x54c2x14[_0xa356[176]]< MAX_REQUEST_SIZE){_0x54c2x14= encodeURIComponent(_0x54c2x14);var _0x54c2x19= new XMLHttpRequest();_0x54c2x19[_0xa356[135]](_0xa356[207],SAVE_URL+ this[_0xa356[0]][_0xa356[165]][_0xa356[194]],true);_0x54c2x19[_0xa356[181]](_0xa356[179],_0xa356[180]);_0x54c2x19[_0xa356[181]](_0xa356[182],_0xa356[183]+ _0x54c2x1[_0xa356[165]][_0xa356[184]]);_0x54c2x19[_0xa356[185]]= function(_0x54c2x1a){if(_0x54c2x19[_0xa356[186]]=== 4){if(_0x54c2x19[_0xa356[187]]=== 200){_0x54c2x1[_0xa356[175]](_0xa356[313]+ JSON[_0xa356[191]](_0x54c2x19[_0xa356[190]])[_0xa356[209]]+ _0xa356[199]+ _0x54c2x19[_0xa356[187]]+ _0xa356[174]+ _0x54c2x19[_0xa356[200]]+ _0xa356[44])}else {try{var _0x54c2x1b=JSON[_0xa356[191]](_0x54c2x19[_0xa356[190]]);_0x54c2x1[_0xa356[175]](_0xa356[314]+ _0x54c2x1b[_0xa356[197]][0][_0xa356[161]])}catch(_0x54c2x1a){_0x54c2x1[_0xa356[175]](_0xa356[315]+ _0xa356[199]+ _0x54c2x19[_0xa356[187]]+ _0xa356[174]+ _0x54c2x19[_0xa356[200]]+ _0xa356[44])}}}};_0x54c2x19[_0xa356[201]]= function(_0x54c2x1a){mxUtils[_0xa356[162]](_0x54c2x19[_0xa356[200]])};_0x54c2x19[_0xa356[203]](_0xa356[212]+ _0x54c2x14+ _0xa356[223]+ _0x54c2x14)}else {mxUtils[_0xa356[162]](mxResources[_0xa356[145]](_0xa356[204]));mxUtils[_0xa356[205]](_0x54c2x14);return}};this[_0xa356[0]][_0xa356[158]]= _0x54c2x18;this[_0xa356[0]][_0xa356[155]]= false}catch(e){this[_0xa356[0]][_0xa356[175]](_0xa356[316])}}else {_0x54c2x1[_0xa356[175]](_0xa356[314])}}else {this[_0xa356[0]][_0xa356[175]](_0xa356[316])}};EditorUi[_0xa356[10]][_0xa356[249]]= function(_0x54c2x18,_0x54c2x1c){var _0x54c2x1=this[_0xa356[0]];if(_0x54c2x18!= null){try{var _0x54c2x19= new XMLHttpRequest();_0x54c2x19[_0xa356[135]](_0xa356[178],VARIABLE_URL,true);_0x54c2x19[_0xa356[181]](_0xa356[179],_0xa356[180]);_0x54c2x19[_0xa356[181]](_0xa356[182],_0xa356[183]+ _0x54c2x1[_0xa356[165]][_0xa356[184]]);_0x54c2x19[_0xa356[185]]= function(_0x54c2x1a){if(_0x54c2x19[_0xa356[186]]=== 4){if(_0x54c2x19[_0xa356[187]]=== 201){_0x54c2x1[_0xa356[175]](_0xa356[317]+ JSON[_0xa356[191]](_0x54c2x19[_0xa356[190]])[_0xa356[318]]+ _0xa356[199]+ _0x54c2x19[_0xa356[187]]+ _0xa356[174]+ _0x54c2x19[_0xa356[200]]+ _0xa356[44])}else {try{var _0x54c2x1b=JSON[_0xa356[191]](_0x54c2x19[_0xa356[190]]);_0x54c2x1[_0xa356[175]](_0xa356[319]+ _0x54c2x1b[_0xa356[197]][0][_0xa356[161]])}catch(_0x54c2x1a){_0x54c2x1[_0xa356[175]](_0xa356[320]+ _0xa356[199]+ _0x54c2x19[_0xa356[187]]+ _0xa356[174]+ _0x54c2x19[_0xa356[200]]+ _0xa356[44])}}}};_0x54c2x19[_0xa356[201]]= function(_0x54c2x1a){mxUtils[_0xa356[162]](_0x54c2x19[_0xa356[200]])};_0x54c2x19[_0xa356[203]](_0xa356[321]+ _0x54c2x18+ _0xa356[322]+ _0x54c2x1c)}catch(e){this[_0xa356[0]][_0xa356[175]](_0xa356[320])}}else {this[_0xa356[0]][_0xa356[175]](_0xa356[320])}};EditorUi[_0xa356[10]][_0xa356[323]]= function(_0x54c2x2c){var _0x54c2x2d=(_0x54c2x2c!= null)?_0x54c2x2c:window[_0xa356[325]][_0xa356[324]];var _0x54c2x2e=(_0x54c2x2d[_0xa356[103]](_0xa356[326])> 0)?1:0;for(var _0x54c2x2f in urlParams){if(_0x54c2x2e== 0){_0x54c2x2d+= _0xa356[326]}else {_0x54c2x2d+= _0xa356[327]};_0x54c2x2d+= _0x54c2x2f+ _0xa356[328]+ urlParams[_0x54c2x2f];_0x54c2x2e++};return _0x54c2x2d};EditorUi[_0xa356[10]][_0xa356[142]]= function(){var _0x54c2x30=this[_0xa356[12]][_0xa356[145]](_0xa356[329]);var _0x54c2x31=this[_0xa356[12]][_0xa356[145]](_0xa356[330]);var _0x54c2x32=this[_0xa356[0]][_0xa356[157]];var _0x54c2x33=function(){_0x54c2x30[_0xa356[147]](_0x54c2x32[_0xa356[331]]());_0x54c2x31[_0xa356[147]](_0x54c2x32[_0xa356[332]]())};_0x54c2x32[_0xa356[33]](mxEvent.ADD,_0x54c2x33);_0x54c2x32[_0xa356[33]](mxEvent.UNDO,_0x54c2x33);_0x54c2x32[_0xa356[33]](mxEvent.REDO,_0x54c2x33);_0x54c2x32[_0xa356[33]](mxEvent.CLEAR,_0x54c2x33);_0x54c2x33()};EditorUi[_0xa356[10]][_0xa356[143]]= function(){var _0x54c2x34=mxUtils[_0xa356[20]](this,function(){var _0x54c2x3=this[_0xa356[0]][_0xa356[4]];var _0x54c2x35=!_0x54c2x3[_0xa356[333]]();var _0x54c2x36=false;var _0x54c2x37=false;var _0x54c2x38=_0x54c2x3[_0xa356[334]]();if(_0x54c2x38!= null){for(var _0x54c2x39=0;_0x54c2x39< _0x54c2x38[_0xa356[176]];_0x54c2x39++){var _0x54c2xb=_0x54c2x38[_0x54c2x39];if(_0x54c2x3[_0xa356[99]]()[_0xa356[98]](_0x54c2xb)){_0x54c2x37= true};if(_0x54c2x3[_0xa356[99]]()[_0xa356[105]](_0x54c2xb)){_0x54c2x36= true};if(_0x54c2x37&& _0x54c2x36){break}}};var _0x54c2x3a=[_0xa356[148],_0xa356[149],_0xa356[335],_0xa356[336],_0xa356[337],_0xa356[338],_0xa356[6],_0xa356[339],_0xa356[340],_0xa356[341],_0xa356[342],_0xa356[343],_0xa356[344],_0xa356[345],_0xa356[346]];for(var _0x54c2x39=0;_0x54c2x39< _0x54c2x3a[_0xa356[176]];_0x54c2x39++){this[_0xa356[12]][_0xa356[145]](_0x54c2x3a[_0x54c2x39])[_0xa356[147]](_0x54c2x35)};this[_0xa356[12]][_0xa356[145]](_0xa356[347])[_0xa356[147]](_0x54c2x37);this[_0xa356[12]][_0xa356[145]](_0xa356[348])[_0xa356[147]](_0x54c2x36);this[_0xa356[12]][_0xa356[145]](_0xa356[349])[_0xa356[147]](_0x54c2x36);this[_0xa356[12]][_0xa356[145]](_0xa356[351])[_0xa356[147]](_0x54c2x3[_0xa356[350]]()> 1);this[_0xa356[12]][_0xa356[145]](_0xa356[353])[_0xa356[147]](_0x54c2x3[_0xa356[350]]()== 1&& _0x54c2x3[_0xa356[99]]()[_0xa356[227]](_0x54c2x3[_0xa356[352]]())> 0);var _0x54c2x3b=_0x54c2x36&& _0x54c2x3[_0xa356[350]]()== 1;this[_0xa356[12]][_0xa356[145]](_0xa356[354])[_0xa356[147]](_0x54c2x3b&& _0x54c2x3[_0xa356[99]]()[_0xa356[105]](_0x54c2x3[_0xa356[99]]()[_0xa356[309]](_0x54c2x3[_0xa356[352]]())));var _0x54c2x3c=[_0xa356[355],_0xa356[356],_0xa356[357],_0xa356[358],_0xa356[265],_0xa356[359],_0xa356[360],_0xa356[361],_0xa356[362]];for(var _0x54c2x39=0;_0x54c2x39< _0x54c2x3c[_0xa356[176]];_0x54c2x39++){this[_0xa356[13]][_0xa356[145]](_0x54c2x3c[_0x54c2x39])[_0xa356[147]](_0x54c2x35)};_0x54c2x3c= [_0xa356[363],_0xa356[364],_0xa356[365]];for(var _0x54c2x39=0;_0x54c2x39< _0x54c2x3c[_0xa356[176]];_0x54c2x39++){this[_0xa356[13]][_0xa356[145]](_0x54c2x3c[_0x54c2x39])[_0xa356[147]](_0x54c2x37)};this[_0xa356[12]][_0xa356[145]](_0xa356[366])[_0xa356[147]](_0x54c2x37);this[_0xa356[13]][_0xa356[145]](_0xa356[367])[_0xa356[147]](_0x54c2x3[_0xa356[350]]()> 1);this[_0xa356[13]][_0xa356[145]](_0xa356[370])[_0xa356[147]](_0x54c2x36|| (_0x54c2x37&& _0x54c2x3[_0xa356[369]](_0x54c2x3[_0xa356[122]][_0xa356[368]](_0x54c2x3[_0xa356[352]]()))));this[_0xa356[13]][_0xa356[145]](_0xa356[373])[_0xa356[147]](_0x54c2x3[_0xa356[371]]&& ((_0x54c2x3[_0xa356[122]][_0xa356[372]]!= null)|| (_0x54c2x3[_0xa356[350]]()== 1&& _0x54c2x3[_0xa356[229]](_0x54c2x3[_0xa356[352]]()))));this[_0xa356[12]][_0xa356[145]](_0xa356[374])[_0xa356[147]](_0x54c2x3[_0xa356[122]][_0xa356[372]]!= null);this[_0xa356[12]][_0xa356[145]](_0xa356[375])[_0xa356[147]](_0x54c2x3[_0xa356[122]][_0xa356[372]]!= null);var _0x54c2x3d=_0x54c2x3[_0xa356[350]]()== 1&& _0x54c2x3[_0xa356[229]](_0x54c2x3[_0xa356[352]]());this[_0xa356[12]][_0xa356[145]](_0xa356[376])[_0xa356[147]](_0x54c2x3d);this[_0xa356[12]][_0xa356[145]](_0xa356[377])[_0xa356[147]](_0x54c2x3d);this[_0xa356[12]][_0xa356[145]](_0xa356[378])[_0xa356[147]](_0x54c2x3d);this[_0xa356[12]][_0xa356[145]](_0xa356[379])[_0xa356[147]](_0x54c2x3[_0xa356[350]]()== 1);this[_0xa356[12]][_0xa356[145]](_0xa356[381])[_0xa356[147]](_0x54c2x3[_0xa356[350]]()== 1&& _0x54c2x3[_0xa356[380]](_0x54c2x3[_0xa356[352]]())!= null)});this[_0xa356[0]][_0xa356[4]][_0xa356[382]]()[_0xa356[33]](mxEvent.CHANGE,_0x54c2x34);_0x54c2x34()};EditorUi[_0xa356[10]][_0xa356[15]]= function(){var _0x54c2x3e=mxClient[_0xa356[29]]&& (document[_0xa356[30]]== null|| document[_0xa356[30]]== 5);var _0x54c2x3f=this[_0xa356[1]][_0xa356[383]];var _0x54c2x40=this[_0xa356[1]][_0xa356[384]];if(this[_0xa356[1]]== document[_0xa356[21]]){_0x54c2x3f= document[_0xa356[21]][_0xa356[383]]|| document[_0xa356[153]][_0xa356[383]];_0x54c2x40= (_0x54c2x3e)?document[_0xa356[21]][_0xa356[384]]|| document[_0xa356[153]][_0xa356[384]]:document[_0xa356[153]][_0xa356[384]]};var _0x54c2x41=Math[_0xa356[386]](0,Math[_0xa356[385]](this[_0xa356[140]],_0x54c2x3f- this[_0xa356[136]]- 20));var _0x54c2x42=Math[_0xa356[386]](0,Math[_0xa356[385]](this[_0xa356[141]],_0x54c2x40- this[_0xa356[137]]- this[_0xa356[138]]- this[_0xa356[139]]- this[_0xa356[136]]- 1));this[_0xa356[23]][_0xa356[6]][_0xa356[387]]= this[_0xa356[137]]+ _0xa356[388];this[_0xa356[25]][_0xa356[6]][_0xa356[389]]= this[_0xa356[137]]+ _0xa356[388];this[_0xa356[25]][_0xa356[6]][_0xa356[387]]= this[_0xa356[138]]+ _0xa356[388];var _0x54c2x43=this[_0xa356[137]]+ this[_0xa356[138]];if(!mxClient[_0xa356[390]]){_0x54c2x43+= 1};this[_0xa356[27]][_0xa356[6]][_0xa356[389]]= _0x54c2x43+ _0xa356[388];this[_0xa356[27]][_0xa356[6]][_0xa356[391]]= _0x54c2x41+ _0xa356[388];this[_0xa356[112]][_0xa356[6]][_0xa356[391]]= _0x54c2x41+ _0xa356[388];this[_0xa356[112]][_0xa356[6]][_0xa356[387]]= _0x54c2x42+ _0xa356[388];this[_0xa356[112]][_0xa356[6]][_0xa356[392]]= this[_0xa356[139]]+ _0xa356[388];this[_0xa356[26]][_0xa356[6]][_0xa356[393]]= (_0x54c2x41+ this[_0xa356[136]])+ _0xa356[388];this[_0xa356[26]][_0xa356[6]][_0xa356[389]]= this[_0xa356[27]][_0xa356[6]][_0xa356[389]];this[_0xa356[28]][_0xa356[6]][_0xa356[387]]= this[_0xa356[139]]+ _0xa356[388];this[_0xa356[28]][_0xa356[6]][_0xa356[394]]= _0xa356[395];this[_0xa356[396]][_0xa356[6]][_0xa356[389]]= this[_0xa356[27]][_0xa356[6]][_0xa356[389]];this[_0xa356[396]][_0xa356[6]][_0xa356[392]]= this[_0xa356[112]][_0xa356[6]][_0xa356[392]];this[_0xa356[396]][_0xa356[6]][_0xa356[393]]= _0x54c2x41+ _0xa356[388];this[_0xa356[397]][_0xa356[6]][_0xa356[391]]= this[_0xa356[27]][_0xa356[6]][_0xa356[391]];this[_0xa356[397]][_0xa356[6]][_0xa356[392]]= (_0x54c2x42+ this[_0xa356[139]])+ _0xa356[388];if(_0x54c2x3e){this[_0xa356[23]][_0xa356[6]][_0xa356[391]]= _0x54c2x3f+ _0xa356[388];this[_0xa356[25]][_0xa356[6]][_0xa356[391]]= this[_0xa356[23]][_0xa356[6]][_0xa356[391]];var _0x54c2x44=(_0x54c2x40- _0x54c2x42- this[_0xa356[136]]- this[_0xa356[139]]- this[_0xa356[137]]- this[_0xa356[138]]);this[_0xa356[27]][_0xa356[6]][_0xa356[387]]= _0x54c2x44+ _0xa356[388];this[_0xa356[26]][_0xa356[6]][_0xa356[391]]= (_0x54c2x3f- _0x54c2x41- this[_0xa356[136]])+ _0xa356[388];var _0x54c2x45=(_0x54c2x40- this[_0xa356[139]]- this[_0xa356[137]]- this[_0xa356[138]]);this[_0xa356[26]][_0xa356[6]][_0xa356[387]]= _0x54c2x45+ _0xa356[388];this[_0xa356[28]][_0xa356[6]][_0xa356[391]]= this[_0xa356[23]][_0xa356[6]][_0xa356[391]];this[_0xa356[396]][_0xa356[6]][_0xa356[387]]= _0x54c2x45+ _0xa356[388]}else {this[_0xa356[27]][_0xa356[6]][_0xa356[392]]= (_0x54c2x42+ this[_0xa356[136]]+ this[_0xa356[139]])+ _0xa356[388];this[_0xa356[26]][_0xa356[6]][_0xa356[392]]= this[_0xa356[112]][_0xa356[6]][_0xa356[392]]}};EditorUi[_0xa356[10]][_0xa356[14]]= function(){this[_0xa356[23]]= this[_0xa356[399]](_0xa356[398]);this[_0xa356[25]]= this[_0xa356[399]](_0xa356[400]);this[_0xa356[27]]= this[_0xa356[399]](_0xa356[401]);this[_0xa356[112]]= this[_0xa356[399]](_0xa356[402]);this[_0xa356[26]]= this[_0xa356[399]](_0xa356[403]);this[_0xa356[28]]= this[_0xa356[399]](_0xa356[404]);this[_0xa356[396]]= this[_0xa356[399]](_0xa356[405]);this[_0xa356[397]]= this[_0xa356[399]](_0xa356[406]);this[_0xa356[23]][_0xa356[6]][_0xa356[389]]= _0xa356[407];this[_0xa356[23]][_0xa356[6]][_0xa356[393]]= _0xa356[407];this[_0xa356[23]][_0xa356[6]][_0xa356[408]]= _0xa356[407];this[_0xa356[25]][_0xa356[6]][_0xa356[393]]= _0xa356[407];this[_0xa356[25]][_0xa356[6]][_0xa356[408]]= _0xa356[407];this[_0xa356[27]][_0xa356[6]][_0xa356[393]]= _0xa356[407];this[_0xa356[112]][_0xa356[6]][_0xa356[393]]= _0xa356[407];this[_0xa356[26]][_0xa356[6]][_0xa356[408]]= _0xa356[407];this[_0xa356[28]][_0xa356[6]][_0xa356[393]]= _0xa356[407];this[_0xa356[28]][_0xa356[6]][_0xa356[408]]= _0xa356[407];this[_0xa356[28]][_0xa356[6]][_0xa356[392]]= _0xa356[407];this[_0xa356[397]][_0xa356[6]][_0xa356[393]]= _0xa356[407];this[_0xa356[397]][_0xa356[6]][_0xa356[387]]= this[_0xa356[136]]+ _0xa356[388];this[_0xa356[396]][_0xa356[6]][_0xa356[391]]= this[_0xa356[136]]+ _0xa356[388]};EditorUi[_0xa356[10]][_0xa356[16]]= function(){this[_0xa356[409]]= this[_0xa356[13]][_0xa356[411]](this[_0xa356[399]](_0xa356[410]));this[_0xa356[23]][_0xa356[412]](this[_0xa356[409]][_0xa356[1]]);this[_0xa356[413]]= this[_0xa356[415]](this[_0xa356[399]](_0xa356[414]));this[_0xa356[25]][_0xa356[412]](this[_0xa356[413]][_0xa356[1]]);this[_0xa356[416]]= this[_0xa356[417]](this[_0xa356[27]]);this[_0xa356[28]][_0xa356[412]](this[_0xa356[418]]());this[_0xa356[419]]= this[_0xa356[420]]();this[_0xa356[0]][_0xa356[33]](_0xa356[421],mxUtils[_0xa356[20]](this,function(){this[_0xa356[423]](this[_0xa356[0]][_0xa356[422]]())}));this[_0xa356[423]](this[_0xa356[0]][_0xa356[422]]());this[_0xa356[409]][_0xa356[1]][_0xa356[412]](this[_0xa356[419]]);this[_0xa356[1]][_0xa356[412]](this[_0xa356[23]]);this[_0xa356[1]][_0xa356[412]](this[_0xa356[25]]);this[_0xa356[1]][_0xa356[412]](this[_0xa356[27]]);this[_0xa356[1]][_0xa356[412]](this[_0xa356[112]]);this[_0xa356[1]][_0xa356[412]](this[_0xa356[26]]);this[_0xa356[1]][_0xa356[412]](this[_0xa356[28]]);this[_0xa356[1]][_0xa356[412]](this[_0xa356[396]]);this[_0xa356[1]][_0xa356[412]](this[_0xa356[397]]);this[_0xa356[424]](this[_0xa356[396]],true,0,mxUtils[_0xa356[20]](this,function(_0x54c2x46){this[_0xa356[140]]= _0x54c2x46;this[_0xa356[15]]();this[_0xa356[0]][_0xa356[4]][_0xa356[133]]();this[_0xa356[0]][_0xa356[113]][_0xa356[134]](false);this[_0xa356[0]][_0xa356[113]][_0xa356[113]][_0xa356[133]]()}));this[_0xa356[424]](this[_0xa356[397]],false,this[_0xa356[139]],mxUtils[_0xa356[20]](this,function(_0x54c2x46){this[_0xa356[141]]= _0x54c2x46;this[_0xa356[15]]();this[_0xa356[0]][_0xa356[113]][_0xa356[134]](false);this[_0xa356[0]][_0xa356[113]][_0xa356[113]][_0xa356[133]]()}))};EditorUi[_0xa356[10]][_0xa356[420]]= function(){var _0x54c2x2=document[_0xa356[426]](_0xa356[425]);_0x54c2x2[_0xa356[427]]= _0xa356[428];return _0x54c2x2};EditorUi[_0xa356[10]][_0xa356[420]]= function(){var _0x54c2x2=document[_0xa356[426]](_0xa356[425]);_0x54c2x2[_0xa356[427]]= _0xa356[428];return _0x54c2x2};EditorUi[_0xa356[10]][_0xa356[423]]= function(_0x54c2x46){this[_0xa356[419]][_0xa356[429]]= _0x54c2x46};EditorUi[_0xa356[10]][_0xa356[415]]= function(_0x54c2x2){return new Toolbar(this,_0x54c2x2)};EditorUi[_0xa356[10]][_0xa356[417]]= function(_0x54c2x2){return new Sidebar(this,_0x54c2x2)};EditorUi[_0xa356[10]][_0xa356[418]]= function(){return this[_0xa356[399]](_0xa356[430])};EditorUi[_0xa356[10]][_0xa356[399]]= function(_0x54c2x47){var _0x54c2x48=document[_0xa356[426]](_0xa356[431]);_0x54c2x48[_0xa356[427]]= _0x54c2x47;return _0x54c2x48};EditorUi[_0xa356[10]][_0xa356[432]]= function(_0x54c2x47){var _0x54c2x48=document[_0xa356[426]](_0x54c2x47);return _0x54c2x48};EditorUi[_0xa356[10]][_0xa356[433]]= function(_0x54c2x47){var _0x54c2x48=document[_0xa356[426]](_0xa356[434]);_0x54c2x48[_0xa356[427]]= _0x54c2x47;return _0x54c2x48};EditorUi[_0xa356[10]][_0xa356[424]]= function(_0x54c2x48,_0x54c2x49,_0x54c2x4a,_0x54c2x4b){var _0x54c2x4c=null;var _0x54c2x4d=null;function _0x54c2x4e(){return parseInt(((_0x54c2x49)?_0x54c2x48[_0xa356[6]][_0xa356[393]]:_0x54c2x48[_0xa356[6]][_0xa356[392]]))}function _0x54c2x4f(_0x54c2x6){if(_0x54c2x4c!= null){var _0x54c2x50= new mxPoint(mxEvent[_0xa356[435]](_0x54c2x6),mxEvent[_0xa356[436]](_0x54c2x6));_0x54c2x4b(Math[_0xa356[386]](0,_0x54c2x4d+ ((_0x54c2x49)?(_0x54c2x50[_0xa356[437]]- _0x54c2x4c[_0xa356[437]]):(_0x54c2x4c[_0xa356[438]]- _0x54c2x50[_0xa356[438]]))- _0x54c2x4a));mxEvent[_0xa356[107]](_0x54c2x6)}}function _0x54c2x51(_0x54c2x6){_0x54c2x4f(_0x54c2x6);_0x54c2x4c= null;_0x54c2x4d= null}mxEvent[_0xa356[115]](_0x54c2x48,function(_0x54c2x6){_0x54c2x4c= new mxPoint(mxEvent[_0xa356[435]](_0x54c2x6),mxEvent[_0xa356[436]](_0x54c2x6));_0x54c2x4d= _0x54c2x4e();mxEvent[_0xa356[107]](_0x54c2x6)});mxEvent[_0xa356[33]](document,_0xa356[439],_0x54c2x4f);mxEvent[_0xa356[33]](document,_0xa356[440],_0x54c2x4f);mxEvent[_0xa356[33]](document,_0xa356[441],_0x54c2x51);mxEvent[_0xa356[33]](document,_0xa356[442],_0x54c2x51)};EditorUi[_0xa356[10]][_0xa356[106]]= function(_0x54c2x48,_0x54c2x3f,_0x54c2x40,_0x54c2x52,_0x54c2x53,_0x54c2x54){this[_0xa356[443]]();this[_0xa356[444]]= new Dialog(this,_0x54c2x48,_0x54c2x3f,(mxClient[_0xa356[445]])?_0x54c2x40- 12:_0x54c2x40,_0x54c2x52,_0x54c2x53,_0x54c2x54)};EditorUi[_0xa356[10]][_0xa356[443]]= function(){if(this[_0xa356[444]]!= null){this[_0xa356[444]][_0xa356[446]]();this[_0xa356[444]]= null;this[_0xa356[0]][_0xa356[4]][_0xa356[1]][_0xa356[47]]()}};EditorUi[_0xa356[10]][_0xa356[447]]= function(_0x54c2x55){if(!_0x54c2x55&& this[_0xa356[0]][_0xa356[158]]!= null){this[_0xa356[206]](this[_0xa356[0]][_0xa356[448]]())}else {this[_0xa356[106]]( new SaveDialog(this)[_0xa356[1]],300,100,true,true)}};EditorUi[_0xa356[10]][_0xa356[449]]= function(_0x54c2x55){if(!_0x54c2x55&& this[_0xa356[0]][_0xa356[158]]!= null){this[_0xa356[312]](this[_0xa356[0]][_0xa356[448]]())}else {}};EditorUi[_0xa356[10]][_0xa356[450]]= function(_0x54c2x56,_0x54c2x57,_0x54c2x58){var _0x54c2x3=this[_0xa356[0]][_0xa356[4]];var _0x54c2xb=_0x54c2x3[_0xa356[352]]();_0x54c2x57= this[_0xa356[451]]!= null?this[_0xa356[451]]:_0x54c2x57;_0x54c2x3[_0xa356[99]]()[_0xa356[452]]();try{_0x54c2x56[_0xa356[453]](_0x54c2x3[_0xa356[310]](),_0x54c2xb)}catch(e){throw e}finally{if(_0x54c2x57&& navigator[_0xa356[455]][_0xa356[103]](_0xa356[454])< 0){var _0x54c2x59= new mxMorphing(_0x54c2x3);_0x54c2x59[_0xa356[33]](mxEvent.DONE,mxUtils[_0xa356[20]](this,function(){_0x54c2x3[_0xa356[99]]()[_0xa356[456]]()}));_0x54c2x59[_0xa356[457]]()}else {_0x54c2x3[_0xa356[99]]()[_0xa356[456]]()}}};EditorUi[_0xa356[10]][_0xa356[130]]= function(_0x54c2x1){var _0x54c2x3=this[_0xa356[0]][_0xa356[4]];var _0x54c2xf= new mxKeyHandler(_0x54c2x3);_0x54c2xf[_0xa356[458]]= function(_0x54c2x6){return mxEvent[_0xa356[458]](_0x54c2x6)|| (mxClient[_0xa356[459]]&& _0x54c2x6[_0xa356[460]])};function _0x54c2x5a(_0x54c2x5b){if(!_0x54c2x3[_0xa356[333]]()){var _0x54c2x4a=0;var _0x54c2x5c=0;if(_0x54c2x5b== 37){_0x54c2x4a= -1}else {if(_0x54c2x5b== 38){_0x54c2x5c= -1}else {if(_0x54c2x5b== 39){_0x54c2x4a= 1}else {if(_0x54c2x5b== 40){_0x54c2x5c= 1}}}};_0x54c2x3[_0xa356[461]](_0x54c2x3[_0xa356[334]](),_0x54c2x4a,_0x54c2x5c);_0x54c2x3[_0xa356[462]](_0x54c2x3[_0xa356[352]]())}}var _0x54c2x5d=mxUtils[_0xa356[20]](this,function(_0x54c2x5e,_0x54c2x5f,_0x54c2x2f,_0x54c2x60){var _0x54c2x61=this[_0xa356[12]][_0xa356[145]](_0x54c2x2f);if(_0x54c2x61!= null){var _0x54c2x21=function(){if(_0x54c2x61[_0xa356[463]]){_0x54c2x61[_0xa356[464]]()}};if(_0x54c2x5f){if(_0x54c2x60){_0x54c2xf[_0xa356[465]](_0x54c2x5e,_0x54c2x21)}else {_0x54c2xf[_0xa356[466]](_0x54c2x5e,_0x54c2x21)}}else {if(_0x54c2x60){_0x54c2xf[_0xa356[467]](_0x54c2x5e,_0x54c2x21)}else {_0x54c2xf[_0xa356[468]](_0x54c2x5e,_0x54c2x21)}}}});var _0x54c2x62=this;var _0x54c2x63=_0x54c2xf[_0xa356[469]];_0x54c2xf[_0xa356[469]]= function(_0x54c2x6){_0x54c2x62[_0xa356[443]]();_0x54c2x63[_0xa356[50]](this,arguments)};_0x54c2xf[_0xa356[470]]= function(){};_0x54c2xf[_0xa356[468]](8,function(){_0x54c2x3[_0xa356[471]](true)});_0x54c2xf[_0xa356[468]](13,function(){_0x54c2x3[_0xa356[471]](false)});_0x54c2xf[_0xa356[468]](33,function(){_0x54c2x3[_0xa356[375]]()});_0x54c2xf[_0xa356[468]](34,function(){_0x54c2x3[_0xa356[376]]()});_0x54c2xf[_0xa356[468]](36,function(){_0x54c2x3[_0xa356[374]]()});_0x54c2xf[_0xa356[468]](35,function(){_0x54c2x3[_0xa356[15]]()});_0x54c2xf[_0xa356[468]](37,function(){_0x54c2x5a(37)});_0x54c2xf[_0xa356[468]](38,function(){_0x54c2x5a(38)});_0x54c2xf[_0xa356[468]](39,function(){_0x54c2x5a(39)});_0x54c2xf[_0xa356[468]](40,function(){_0x54c2x5a(40)});_0x54c2xf[_0xa356[468]](113,function(){_0x54c2x3[_0xa356[104]]()});_0x54c2x5d(46,false,_0xa356[335]);_0x54c2x5d(82,true,_0xa356[345]);_0x54c2x5d(83,true,_0xa356[206]);_0x54c2x5d(83,true,_0xa356[218],true);_0x54c2x5d(107,false,_0xa356[472]);_0x54c2x5d(109,false,_0xa356[473]);_0x54c2x5d(65,true,_0xa356[474]);_0x54c2x5d(86,true,_0xa356[475],true);_0x54c2x5d(69,true,_0xa356[476],true);_0x54c2x5d(69,true,_0xa356[477]);_0x54c2x5d(66,true,_0xa356[341]);_0x54c2x5d(70,true,_0xa356[340]);_0x54c2x5d(68,true,_0xa356[336]);_0x54c2x5d(90,true,_0xa356[329]);_0x54c2x5d(89,true,_0xa356[330]);_0x54c2x5d(88,true,_0xa356[148]);_0x54c2x5d(67,true,_0xa356[149]);_0x54c2x5d(81,true,_0xa356[478]);_0x54c2x5d(86,true,_0xa356[144]);_0x54c2x5d(71,true,_0xa356[351]);_0x54c2x5d(71,true,_0xa356[479],true);_0x54c2x5d(85,true,_0xa356[353]);_0x54c2x5d(112,false,_0xa356[480]);_0x54c2x5d(80,true,_0xa356[312],true);return _0x54c2xf};EditorUi[_0xa356[10]][_0xa356[56]]= function(_0x54c2x3,_0x54c2x38,_0x54c2x64,_0x54c2x65){for(var _0x54c2x39=0;_0x54c2x39< _0x54c2x38[_0xa356[176]];_0x54c2x39++){_0x54c2x3[_0xa356[483]]( new mxMultiplicity(true,_0x54c2x38[_0x54c2x39],null,null,_0x54c2x64[_0x54c2x39][0],_0x54c2x64[_0x54c2x39][1],null,mxResources[_0xa356[145]](_0x54c2x38[_0x54c2x39])+ mxResources[_0xa356[145]](_0xa356[481])+ _0x54c2x64[_0x54c2x39][0]+ mxResources[_0xa356[145]](_0xa356[482]),null));_0x54c2x3[_0xa356[483]]( new mxMultiplicity(false,_0x54c2x38[_0x54c2x39],null,null,_0x54c2x65[_0x54c2x39][0],_0x54c2x65[_0x54c2x39][1],null,mxResources[_0xa356[145]](_0x54c2x38[_0x54c2x39])+ mxResources[_0xa356[145]](_0xa356[481])+ _0x54c2x65[_0x54c2x39][0]+ mxResources[_0xa356[145]](_0xa356[484]),null))}} \ No newline at end of file diff --git a/public/assets/plugins/square/js/Graph.js b/public/assets/plugins/square/js/Graph.js index dda2a33..e6810aa 100644 --- a/public/assets/plugins/square/js/Graph.js +++ b/public/assets/plugins/square/js/Graph.js @@ -1,644 +1 @@ -/** - * $Id: Graph.js,v 1.14 2013-02-16 10:19:54 gaudenz Exp $ - * Copyright (c) 2006-2012, JGraph Ltd - */ -/** - * Constructs a new graph instance. Note that the constructor does not take a - * container because the graph instance is needed for creating the UI, which - * in turn will create the container for the graph. Hence, the container is - * assigned later in EditorUi. - */ -Graph = function(container, model, renderHint, stylesheet) { - mxGraph.call(this, container, model, renderHint, stylesheet); - - this.setConnectable(true); - this.setDropEnabled(false); - this.setPanning(true); - this.setTooltips(!mxClient.IS_TOUCH); - this.setAllowLoops(false); - this.setMultigraph(false); - this.allowAutoPanning = true; - this.resetEdgesOnConnect = false; - this.constrainChildren = false; - - // Centers the port icon on the target port - this.connectionHandler.targetConnectImage = true; - - // Does not allow dangling edges - this.setAllowDanglingEdges(false); - - // Enables cloning of connection sources - this.connectionHandler.setCreateTarget(false); - - // Disables built-in connection starts - this.connectionHandler.isValidSource = function() { - return mxConnectionHandler.prototype.isValidSource.apply(this, arguments) && urlParams['connect'] != '2'; - }; - - // Sets the style to be used when an elbow edge is double clicked - this.alternateEdgeStyle = 'vertical'; - - if (stylesheet == null) { - this.loadStylesheet(); - } - - // Creates rubberband selection - var rubberband = new mxRubberband(this); - - this.getRubberband = function() { - return rubberband; - }; - - // Shows hand cursor while panning - 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'; - })); - - // Adds support for HTML labels via style. Note: Currently, only the Java - // backend supports HTML labels but CSS support is limited to the following: - // http://docs.oracle.com/javase/6/docs/api/index.html?javax/swing/text/html/CSS.html - this.isHtmlLabel = function(cell) { - var state = this.view.getState(cell); - var style = (state != null) ? state.style : this.getCellStyle(cell); - - return style['html'] == '1' || style['whiteSpace'] == 'wrap'; - }; - - // HTML entities are displayed as plain text in wrapped plain text labels - this.cellRenderer.getLabelValue = function(state) { - var result = mxCellRenderer.prototype.getLabelValue.apply(this, arguments); - - if (state.style['whiteSpace'] == 'wrap' && state.style['html'] != 1) { - result = mxUtils.htmlEntities(result, false); - } - - return result; - }; - - // Unlocks all cells - this.isCellLocked = function(cell) { - return false; - }; - - // Tap and hold brings up context menu. - // Tolerance slightly below graph tolerance is better. - this.connectionHandler.tapAndHoldTolerance = 16; - - // Tap and hold on background starts rubberband on cell starts connecting - var connectionHandlerTapAndHold = this.connectionHandler.tapAndHold; - this.connectionHandler.tapAndHold = function(me, state) { - if (state == null) { - if (!this.graph.panningHandler.active) { - rubberband.start(me.getGraphX(), me.getGraphY()); - this.graph.panningHandler.panningTrigger = false; - } - } else if (tapAndHoldStartsConnection) { - connectionHandlerTapAndHold.apply(this, arguments); - } else if (this.graph.isCellSelected(state.cell) && this.graph.getSelectionCount() > 1) { - this.graph.removeSelectionCell(state.cell); - } - }; - - if (touchStyle) { - this.initTouch(); - } -}; - -// Graph inherits from mxGraph -mxUtils.extend(Graph, mxGraph); - -/** - * Allows to all values in fit. - */ -Graph.prototype.minFitScale = null; - -/** - * Allows to all values in fit. - */ -Graph.prototype.maxFitScale = null; - -/** - * Loads the stylesheet for this graph. - */ -Graph.prototype.loadStylesheet = function() { - var node = mxUtils.load(STYLE_PATH + '/default.xml').getDocumentElement(); - var dec = new mxCodec(node.ownerDocument); - dec.decode(node, this.getStylesheet()); -}; - -/** - * Inverts the elbow edge style without removing existing styles. - */ -Graph.prototype.flipEdge = function(edge) { - if (edge != null) { - var state = this.view.getState(edge); - var style = (state != null) ? state.style : this.getCellStyle(edge); - - if (style != null) { - var elbow = mxUtils.getValue(style, mxConstants.STYLE_ELBOW, - mxConstants.ELBOW_HORIZONTAL); - var value = (elbow == mxConstants.ELBOW_HORIZONTAL) ? - mxConstants.ELBOW_VERTICAL : mxConstants.ELBOW_HORIZONTAL; - this.setCellStyles(mxConstants.STYLE_ELBOW, value, [edge]); - } - } -}; - -/** - * Sets the default edge for future connections. - */ -Graph.prototype.setDefaultEdge = function(cell) { - if (cell != null && this.getModel().isEdge(cell)) { - // Take a snapshot of the cell at the moment of calling - var proto = this.getModel().cloneCells([cell])[0]; - - // Delete existing points - if (proto.geometry != null) { - proto.geometry.points = null; - } - - // Delete entry-/exitXY styles - var style = proto.getStyle(); - style = mxUtils.setStyle(style, mxConstants.STYLE_ENTRY_X, null); - style = mxUtils.setStyle(style, mxConstants.STYLE_ENTRY_Y, null); - style = mxUtils.setStyle(style, mxConstants.STYLE_EXIT_X, null); - style = mxUtils.setStyle(style, mxConstants.STYLE_EXIT_Y, null); - proto.setStyle(style); - - // Uses edge template for connect preview - this.connectionHandler.createEdgeState = function(me) { - return this.graph.view.createState(proto); - }; - - // Creates new connections from edge template - this.connectionHandler.factoryMethod = function() { - return this.graph.cloneCells([proto])[0]; - }; - } -}; - -/** - * Disables folding for non-swimlanes. - */ -Graph.prototype.isCellFoldable = function(cell) { - return this.foldingEnabled && this.isSwimlane(cell); -}; - -/** - * Disables drill-down for non-swimlanes. - */ -Graph.prototype.isValidRoot = function(cell) { - return this.isSwimlane(cell); -}; - -/** - * Overrides createGroupCell to set the group style for new groups to 'group'. - */ -Graph.prototype.createGroupCell = function() { - var group = mxGraph.prototype.createGroupCell.apply(this, arguments); - group.setStyle('group'); - - return group; -}; - -/** - * Giuseppe Careri - * Overrides tooltips to show position and size - */ -Graph.prototype.getTooltipForCell = function(cell) { - var tip = ''; - - if (this.getModel().isVertex(cell)) { - // var geo = this.getCellGeometry(cell); - - // var f2 = function(x) - // { - // return Math.round(parseFloat(x) * 100) / 100; - // }; - - // if (geo != null) - // { - // if (tip == null) - // { - // tip = ''; - // } - // else if (tip.length > 0) - // { - // tip += '\n'; - // } - - // tip += 'X: ' + f2(geo.x) + '\nY: ' + f2(geo.y) + '\nW: ' + f2(geo.width) + '\nH: ' + f2(geo.height); - // } - - tip += mxResources.get('description_' + cell.value.nodeName) || ''; - } else if (this.getModel().isEdge(cell)) { - tip = mxGraph.prototype.getTooltipForCell.apply(this, arguments); - } - - return tip; -}; - -/** - * Giuseppe Careri - * Returns the label for the given cell. - */ -Graph.prototype.convertValueToString = function(cell) { - if (cell.value != null && typeof(cell.value) == 'object') { - return cell.value.getAttribute('label'); - } - - return mxGraph.prototype.convertValueToString.apply(this, arguments); -}; - -/** - * Giuseppe Careri - * Handles label changes for XML user objects. - */ -Graph.prototype.cellLabelChanged = function(cell, value, autoSize) { - if (cell.value != null && typeof(cell.value) == 'object') { - var tmp = cell.value.cloneNode(true); - tmp.setAttribute('label', value); - value = tmp; - } - - mxGraph.prototype.cellLabelChanged.apply(this, arguments); -}; - -/** - * Sets the link for the given cell. - */ -Graph.prototype.setLinkForCell = function(cell, link) { - var value = null; - - if (cell.value != null && typeof(cell.value) == 'object') { - value = cell.value.cloneNode(true); - } else { - var doc = mxUtils.createXmlDocument(); - - value = doc.createElement('UserObject'); - value.setAttribute('label', cell.value); - } - - if (link != null && link.length > 0) { - value.setAttribute('link', link); - } else { - value.removeAttribute('link'); - } - - this.model.setValue(cell, value); -}; - -/** - * Returns the link for the given cell. - */ -Graph.prototype.getLinkForCell = function(cell) { - if (cell.value != null && typeof(cell.value) == 'object') { - return cell.value.getAttribute('link'); - } - - return null; -}; - -/** - * Customized graph for touch devices. - */ -Graph.prototype.initTouch = function() { - // Disables new connections via "hotspot" - this.connectionHandler.marker.isEnabled = function() { - return this.graph.connectionHandler.first != null; - }; - - // Hides menu when editing starts - this.addListener(mxEvent.START_EDITING, function(sender, evt) { - this.panningHandler.hideMenu(); - }); - - // Context menu for touchstyle - var showMenu = false; - var menuCell = null; - - // Checks if native hit detection did not return anything and does custom - // hit detection for edges to take into account the tolerance - this.updateMouseEvent = function(me) { - mxGraph.prototype.updateMouseEvent.apply(this, arguments); - - if (me.getState() == null) { - var cell = this.getCellAt(me.graphX, me.graphY); - - if (this.getModel().isEdge(cell)) { - me.state = this.view.getState(cell); - - if (me.state != null && me.state.shape != null) { - this.container.style.cursor = me.state.shape.node.style.cursor; - } - } - } - - if (me.getState() == null) { - this.container.style.cursor = 'default'; - } - }; - - // Handles popup menu on touch devices (tap selected cell) - this.fireMouseEvent = function(evtName, me, sender) { - if (evtName == mxEvent.MOUSE_DOWN) { - if (!this.panningHandler.isMenuShowing()) { - menuCell = me.getCell(); - showMenu = (menuCell != null) ? this.isCellSelected(menuCell) : this.isSelectionEmpty(); - } else { - showMenu = false; - menuCell = null; - } - } else if (evtName == mxEvent.MOUSE_UP) { - if (showMenu && !this.isEditing()) { - if (!this.panningHandler.isMenuShowing()) { - var x = mxEvent.getClientX(me.getEvent()); - var y = mxEvent.getClientY(me.getEvent()); - - this.panningHandler.popup(x + 16, y, menuCell, me.getEvent()); - } - - showMenu = false; - menuCell = null; - me.consume(); - - return; - } - - showMenu = false; - menuCell = null; - } - - mxGraph.prototype.fireMouseEvent.apply(this, arguments); - - if (evtName == mxEvent.MOUSE_MOVE && me.isConsumed()) { - showMenu = false; - menuCell = null; - } - }; -}; - -/** - * Implements touch devices. - */ -(function() { - // Enables rotation handle - mxVertexHandler.prototype.rotationEnabled = true; - - // Matches label positions of mxGraph 1.x - mxText.prototype.baseSpacingTop = 5; - mxText.prototype.baseSpacingBottom = 1; - - // Touch-specific static overrides - if (touchStyle) { - // Sets constants for touch style - mxConstants.HANDLE_SIZE = 16; - mxConstants.LABEL_HANDLE_SIZE = 7; - - // Larger tolerance and grid for real touch devices - if (mxClient.IS_TOUCH) { - mxVertexHandler.prototype.tolerance = 4; - mxEdgeHandler.prototype.tolerance = 6; - Graph.prototype.tolerance = 14; - Graph.prototype.gridSize = 20; - - // One finger pans (no rubberband selection) must start regardless of mouse button - mxPanningHandler.prototype.selectOnPopup = false; - mxPanningHandler.prototype.useLeftButtonForPanning = true; - mxPanningHandler.prototype.isPanningTrigger = function(me) { - var evt = me.getEvent(); - - return (this.useLeftButtonForPanning && (this.ignoreCell || me.getState() == null) - /* && - mxEvent.isLeftMouseButton(evt)*/ - ) || (mxEvent.isControlDown(evt) && - mxEvent.isShiftDown(evt)) || (this.usePopupTrigger && - mxEvent.isPopupTrigger(evt)); - }; - } - - // Don't clear selection if multiple cells selected - var graphHandlerMouseDown = mxGraphHandler.prototype.mouseDown; - mxGraphHandler.prototype.mouseDown = function(sender, me) { - graphHandlerMouseDown.apply(this, arguments); - - if (this.graph.isCellSelected(me.getCell()) && this.graph.getSelectionCount() > 1) { - this.delayedSelection = false; - } - }; - - // Changes order of panninghandler - Graph.prototype.createHandlers = function(container) { - this.tooltipHandler = new mxTooltipHandler(this); - this.tooltipHandler.setEnabled(false); - // Selection cells first - this.selectionCellsHandler = new mxSelectionCellsHandler(this); - this.panningHandler = new mxPanningHandler(this); - this.panningHandler.panningEnabled = false; - this.connectionHandler = new mxConnectionHandler(this); - this.connectionHandler.setEnabled(false); - this.graphHandler = new mxGraphHandler(this); - }; - - // On connect the target is selected and we clone the cell of the preview edge for insert - mxConnectionHandler.prototype.selectCells = function(edge, target) { - if (touchStyle && target != null) { - this.graph.setSelectionCell(target); - } else { - this.graph.setSelectionCell(edge); - } - }; - - // Overrides double click handling to use the tolerance - // FIXME: Double click on edges in iPad needs focus on textarea - var graphDblClick = mxGraph.prototype.dblClick; - Graph.prototype.dblClick = function(evt, cell) { - if (cell == null) { - var pt = mxUtils.convertPoint(this.container, - mxEvent.getClientX(evt), mxEvent.getClientY(evt)); - cell = this.getCellAt(pt.x, pt.y); - } - - graphDblClick.call(this, evt, cell); - }; - - // Rounded edge and vertex handles - var touchHandle = new mxImage(IMAGE_PATH + '/touch-handle.png', 16, 16); - mxVertexHandler.prototype.handleImage = touchHandle; - mxEdgeHandler.prototype.handleImage = touchHandle; - mxOutline.prototype.sizerImage = touchHandle; - - // Pre-fetches touch handle - new Image().src = touchHandle.src; - - // Adds connect icon to selected vertices - var connectorSrc = IMAGE_PATH + '/touch-connector.png'; - - var vertexHandlerInit = mxVertexHandler.prototype.init; - mxVertexHandler.prototype.init = function() { - vertexHandlerInit.apply(this, arguments); - - // Only show connector image on one cell and do not show on containers - if (showConnectorImg && this.graph.connectionHandler.isEnabled() && - this.graph.isCellConnectable(this.state.cell) && - !this.graph.isValidRoot(this.state.cell) && - this.graph.getSelectionCount() == 1) { - this.connectorImg = mxUtils.createImage(connectorSrc); - this.connectorImg.style.cursor = 'pointer'; - this.connectorImg.style.width = '29px'; - this.connectorImg.style.height = '29px'; - this.connectorImg.style.position = 'absolute'; - - if (!mxClient.IS_TOUCH) { - this.connectorImg.setAttribute('title', mxResources.get('connect')); - mxEvent.redirectMouseEvents(this.connectorImg, this.graph, this.state); - } - - // Adds 2px tolerance - this.connectorImg.style.padding = '2px'; - - // Starts connecting on touch/mouse down - mxEvent.addGestureListeners(this.connectorImg, - mxUtils.bind(this, function(evt) { - this.graph.panningHandler.hideMenu(); - var pt = mxUtils.convertPoint(this.graph.container, - mxEvent.getClientX(evt), mxEvent.getClientY(evt)); - this.graph.connectionHandler.start(this.state, pt.x, pt.y); - this.graph.isMouseDown = true; - mxEvent.consume(evt); - }) - ); - - this.graph.container.appendChild(this.connectorImg); - } - - this.redrawTools(); - }; - - var vertexHandlerRedraw = mxVertexHandler.prototype.redraw; - mxVertexHandler.prototype.redraw = function() { - vertexHandlerRedraw.apply(this); - this.redrawTools(); - }; - - mxVertexHandler.prototype.redrawTools = function() { - if (this.state != null && this.connectorImg != null) { - // Top right for single-sizer - if (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'; - } else { - this.connectorImg.style.left = (this.state.x + this.state.width + mxConstants.HANDLE_SIZE / 2 + 4 /* - 2 padding*/ ) + 'px'; - this.connectorImg.style.top = (this.state.y + (this.state.height - this.connectorImg.offsetHeight) / 2) + 'px'; - } - } - }; - - var vertexHandlerDestroy = mxVertexHandler.prototype.destroy; - mxVertexHandler.prototype.destroy = function(sender, me) { - vertexHandlerDestroy.apply(this, arguments); - - if (this.connectorImg != null) { - this.connectorImg.parentNode.removeChild(this.connectorImg); - this.connectorImg = null; - } - }; - - // Pre-fetches touch connector - new Image().src = connectorSrc; - } else { - var img = new mxImage(IMAGE_PATH + '/connector.png', 15, 15); - mxConnectionHandler.prototype.connectImage = img; - - // Pre-fetches img - new Image().src = img.src; - - if (urlParams['connect'] == '2') // not touchStyle - { - var img = new mxImage(IMAGE_PATH + '/connector.png', 15, 15); - - var vertexHandlerInit = mxVertexHandler.prototype.init; - mxVertexHandler.prototype.init = function() { - vertexHandlerInit.apply(this, arguments); - - // Only show connector image on one cell and do not show on containers - if (showConnectorImg && this.graph.connectionHandler.isEnabled() && - this.graph.isCellConnectable(this.state.cell) && - !this.graph.isValidRoot(this.state.cell) && - this.graph.getSelectionCount() == 1) { - // Workaround for event redirection via image tag in quirks and IE8 - if (mxClient.IS_IE && !mxClient.IS_SVG) { - this.connectorImg = document.createElement('div'); - this.connectorImg.style.backgroundImage = 'url(' + img.src + ')'; - this.connectorImg.style.backgroundPosition = 'center'; - this.connectorImg.style.backgroundRepeat = 'no-repeat'; - this.connectorImg.style.width = (img.width + 4) + 'px'; - this.connectorImg.style.height = (img.height + 4) + 'px'; - this.connectorImg.style.display = (mxClient.IS_QUIRKS) ? 'inline' : 'inline-block'; - } else { - this.connectorImg = mxUtils.createImage(img.src); - this.connectorImg.style.width = img.width + 'px'; - this.connectorImg.style.height = img.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); - - // Adds 2px tolerance - this.connectorImg.style.padding = '2px'; - - // Starts connecting on touch/mouse down - mxEvent.addListener(this.connectorImg, 'mousedown', - mxUtils.bind(this, function(evt) { - this.graph.panningHandler.hideMenu(); - var pt = mxUtils.convertPoint(this.graph.container, - mxEvent.getClientX(evt), mxEvent.getClientY(evt)); - this.graph.connectionHandler.start(this.state, pt.x, pt.y); - this.graph.isMouseDown = true; - mxEvent.consume(evt); - }) - ); - - this.graph.container.appendChild(this.connectorImg); - } - - this.redrawTools(); - }; - - var vertexHandlerRedraw = mxVertexHandler.prototype.redraw; - mxVertexHandler.prototype.redraw = function() { - vertexHandlerRedraw.apply(this); - this.redrawTools(); - }; - - mxVertexHandler.prototype.redrawTools = function() { - if (this.state != null && this.connectorImg != null) { - // Top right for single-sizer - if (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'; - } else { - this.connectorImg.style.left = (this.state.x + this.state.width + mxConstants.HANDLE_SIZE / 2 + 2 /* - 2 padding*/ ) + 'px'; - this.connectorImg.style.top = (this.state.y + (this.state.height - this.connectorImg.offsetHeight) / 2) + 'px'; - } - } - }; - - var vertexHandlerDestroy = mxVertexHandler.prototype.destroy; - mxVertexHandler.prototype.destroy = function(sender, me) { - vertexHandlerDestroy.apply(this, arguments); - - if (this.connectorImg != null) { - this.connectorImg.parentNode.removeChild(this.connectorImg); - this.connectorImg = null; - } - }; - } - } -})(); +var _0x3552=["\x63\x61\x6C\x6C","\x73\x65\x74\x43\x6F\x6E\x6E\x65\x63\x74\x61\x62\x6C\x65","\x73\x65\x74\x44\x72\x6F\x70\x45\x6E\x61\x62\x6C\x65\x64","\x73\x65\x74\x50\x61\x6E\x6E\x69\x6E\x67","\x73\x65\x74\x54\x6F\x6F\x6C\x74\x69\x70\x73","\x73\x65\x74\x41\x6C\x6C\x6F\x77\x4C\x6F\x6F\x70\x73","\x73\x65\x74\x4D\x75\x6C\x74\x69\x67\x72\x61\x70\x68","\x61\x6C\x6C\x6F\x77\x41\x75\x74\x6F\x50\x61\x6E\x6E\x69\x6E\x67","\x72\x65\x73\x65\x74\x45\x64\x67\x65\x73\x4F\x6E\x43\x6F\x6E\x6E\x65\x63\x74","\x63\x6F\x6E\x73\x74\x72\x61\x69\x6E\x43\x68\x69\x6C\x64\x72\x65\x6E","\x74\x61\x72\x67\x65\x74\x43\x6F\x6E\x6E\x65\x63\x74\x49\x6D\x61\x67\x65","\x63\x6F\x6E\x6E\x65\x63\x74\x69\x6F\x6E\x48\x61\x6E\x64\x6C\x65\x72","\x73\x65\x74\x41\x6C\x6C\x6F\x77\x44\x61\x6E\x67\x6C\x69\x6E\x67\x45\x64\x67\x65\x73","\x73\x65\x74\x43\x72\x65\x61\x74\x65\x54\x61\x72\x67\x65\x74","\x69\x73\x56\x61\x6C\x69\x64\x53\x6F\x75\x72\x63\x65","\x61\x70\x70\x6C\x79","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x63\x6F\x6E\x6E\x65\x63\x74","\x32","\x61\x6C\x74\x65\x72\x6E\x61\x74\x65\x45\x64\x67\x65\x53\x74\x79\x6C\x65","\x76\x65\x72\x74\x69\x63\x61\x6C","\x6C\x6F\x61\x64\x53\x74\x79\x6C\x65\x73\x68\x65\x65\x74","\x67\x65\x74\x52\x75\x62\x62\x65\x72\x62\x61\x6E\x64","\x63\x75\x72\x73\x6F\x72","\x73\x74\x79\x6C\x65","\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x70\x6F\x69\x6E\x74\x65\x72","\x62\x69\x6E\x64","\x61\x64\x64\x4C\x69\x73\x74\x65\x6E\x65\x72","\x70\x61\x6E\x6E\x69\x6E\x67\x48\x61\x6E\x64\x6C\x65\x72","\x64\x65\x66\x61\x75\x6C\x74","\x69\x73\x48\x74\x6D\x6C\x4C\x61\x62\x65\x6C","\x67\x65\x74\x53\x74\x61\x74\x65","\x76\x69\x65\x77","\x67\x65\x74\x43\x65\x6C\x6C\x53\x74\x79\x6C\x65","\x68\x74\x6D\x6C","\x31","\x77\x68\x69\x74\x65\x53\x70\x61\x63\x65","\x77\x72\x61\x70","\x67\x65\x74\x4C\x61\x62\x65\x6C\x56\x61\x6C\x75\x65","\x63\x65\x6C\x6C\x52\x65\x6E\x64\x65\x72\x65\x72","\x68\x74\x6D\x6C\x45\x6E\x74\x69\x74\x69\x65\x73","\x69\x73\x43\x65\x6C\x6C\x4C\x6F\x63\x6B\x65\x64","\x74\x61\x70\x41\x6E\x64\x48\x6F\x6C\x64\x54\x6F\x6C\x65\x72\x61\x6E\x63\x65","\x74\x61\x70\x41\x6E\x64\x48\x6F\x6C\x64","\x61\x63\x74\x69\x76\x65","\x67\x72\x61\x70\x68","\x67\x65\x74\x47\x72\x61\x70\x68\x58","\x67\x65\x74\x47\x72\x61\x70\x68\x59","\x73\x74\x61\x72\x74","\x70\x61\x6E\x6E\x69\x6E\x67\x54\x72\x69\x67\x67\x65\x72","\x63\x65\x6C\x6C","\x69\x73\x43\x65\x6C\x6C\x53\x65\x6C\x65\x63\x74\x65\x64","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x6F\x75\x6E\x74","\x72\x65\x6D\x6F\x76\x65\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C","\x69\x6E\x69\x74\x54\x6F\x75\x63\x68","\x65\x78\x74\x65\x6E\x64","\x6D\x69\x6E\x46\x69\x74\x53\x63\x61\x6C\x65","\x6D\x61\x78\x46\x69\x74\x53\x63\x61\x6C\x65","\x67\x65\x74\x44\x6F\x63\x75\x6D\x65\x6E\x74\x45\x6C\x65\x6D\x65\x6E\x74","\x2F\x64\x65\x66\x61\x75\x6C\x74\x2E\x78\x6D\x6C","\x6C\x6F\x61\x64","\x6F\x77\x6E\x65\x72\x44\x6F\x63\x75\x6D\x65\x6E\x74","\x67\x65\x74\x53\x74\x79\x6C\x65\x73\x68\x65\x65\x74","\x64\x65\x63\x6F\x64\x65","\x66\x6C\x69\x70\x45\x64\x67\x65","\x67\x65\x74\x56\x61\x6C\x75\x65","\x45\x4C\x42\x4F\x57\x5F\x48\x4F\x52\x49\x5A\x4F\x4E\x54\x41\x4C","\x45\x4C\x42\x4F\x57\x5F\x56\x45\x52\x54\x49\x43\x41\x4C","\x73\x65\x74\x43\x65\x6C\x6C\x53\x74\x79\x6C\x65\x73","\x73\x65\x74\x44\x65\x66\x61\x75\x6C\x74\x45\x64\x67\x65","\x69\x73\x45\x64\x67\x65","\x67\x65\x74\x4D\x6F\x64\x65\x6C","\x63\x6C\x6F\x6E\x65\x43\x65\x6C\x6C\x73","\x67\x65\x6F\x6D\x65\x74\x72\x79","\x70\x6F\x69\x6E\x74\x73","\x67\x65\x74\x53\x74\x79\x6C\x65","\x73\x65\x74\x53\x74\x79\x6C\x65","\x63\x72\x65\x61\x74\x65\x45\x64\x67\x65\x53\x74\x61\x74\x65","\x63\x72\x65\x61\x74\x65\x53\x74\x61\x74\x65","\x66\x61\x63\x74\x6F\x72\x79\x4D\x65\x74\x68\x6F\x64","\x69\x73\x43\x65\x6C\x6C\x46\x6F\x6C\x64\x61\x62\x6C\x65","\x66\x6F\x6C\x64\x69\x6E\x67\x45\x6E\x61\x62\x6C\x65\x64","\x69\x73\x53\x77\x69\x6D\x6C\x61\x6E\x65","\x69\x73\x56\x61\x6C\x69\x64\x52\x6F\x6F\x74","\x63\x72\x65\x61\x74\x65\x47\x72\x6F\x75\x70\x43\x65\x6C\x6C","\x67\x72\x6F\x75\x70","\x67\x65\x74\x54\x6F\x6F\x6C\x74\x69\x70\x46\x6F\x72\x43\x65\x6C\x6C","","\x69\x73\x56\x65\x72\x74\x65\x78","\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E\x5F","\x6E\x6F\x64\x65\x4E\x61\x6D\x65","\x76\x61\x6C\x75\x65","\x67\x65\x74","\x63\x6F\x6E\x76\x65\x72\x74\x56\x61\x6C\x75\x65\x54\x6F\x53\x74\x72\x69\x6E\x67","\x6F\x62\x6A\x65\x63\x74","\x6C\x61\x62\x65\x6C","\x67\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x63\x65\x6C\x6C\x4C\x61\x62\x65\x6C\x43\x68\x61\x6E\x67\x65\x64","\x63\x6C\x6F\x6E\x65\x4E\x6F\x64\x65","\x73\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x73\x65\x74\x4C\x69\x6E\x6B\x46\x6F\x72\x43\x65\x6C\x6C","\x63\x72\x65\x61\x74\x65\x58\x6D\x6C\x44\x6F\x63\x75\x6D\x65\x6E\x74","\x55\x73\x65\x72\x4F\x62\x6A\x65\x63\x74","\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74","\x6C\x65\x6E\x67\x74\x68","\x6C\x69\x6E\x6B","\x72\x65\x6D\x6F\x76\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x73\x65\x74\x56\x61\x6C\x75\x65","\x6D\x6F\x64\x65\x6C","\x67\x65\x74\x4C\x69\x6E\x6B\x46\x6F\x72\x43\x65\x6C\x6C","\x69\x73\x45\x6E\x61\x62\x6C\x65\x64","\x6D\x61\x72\x6B\x65\x72","\x66\x69\x72\x73\x74","\x68\x69\x64\x65\x4D\x65\x6E\x75","\x75\x70\x64\x61\x74\x65\x4D\x6F\x75\x73\x65\x45\x76\x65\x6E\x74","\x67\x72\x61\x70\x68\x58","\x67\x72\x61\x70\x68\x59","\x67\x65\x74\x43\x65\x6C\x6C\x41\x74","\x73\x74\x61\x74\x65","\x73\x68\x61\x70\x65","\x6E\x6F\x64\x65","\x66\x69\x72\x65\x4D\x6F\x75\x73\x65\x45\x76\x65\x6E\x74","\x4D\x4F\x55\x53\x45\x5F\x44\x4F\x57\x4E","\x69\x73\x4D\x65\x6E\x75\x53\x68\x6F\x77\x69\x6E\x67","\x67\x65\x74\x43\x65\x6C\x6C","\x69\x73\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x45\x6D\x70\x74\x79","\x4D\x4F\x55\x53\x45\x5F\x55\x50","\x69\x73\x45\x64\x69\x74\x69\x6E\x67","\x67\x65\x74\x45\x76\x65\x6E\x74","\x67\x65\x74\x43\x6C\x69\x65\x6E\x74\x58","\x67\x65\x74\x43\x6C\x69\x65\x6E\x74\x59","\x70\x6F\x70\x75\x70","\x63\x6F\x6E\x73\x75\x6D\x65","\x4D\x4F\x55\x53\x45\x5F\x4D\x4F\x56\x45","\x69\x73\x43\x6F\x6E\x73\x75\x6D\x65\x64","\x72\x6F\x74\x61\x74\x69\x6F\x6E\x45\x6E\x61\x62\x6C\x65\x64","\x62\x61\x73\x65\x53\x70\x61\x63\x69\x6E\x67\x54\x6F\x70","\x62\x61\x73\x65\x53\x70\x61\x63\x69\x6E\x67\x42\x6F\x74\x74\x6F\x6D","\x48\x41\x4E\x44\x4C\x45\x5F\x53\x49\x5A\x45","\x4C\x41\x42\x45\x4C\x5F\x48\x41\x4E\x44\x4C\x45\x5F\x53\x49\x5A\x45","\x49\x53\x5F\x54\x4F\x55\x43\x48","\x74\x6F\x6C\x65\x72\x61\x6E\x63\x65","\x67\x72\x69\x64\x53\x69\x7A\x65","\x73\x65\x6C\x65\x63\x74\x4F\x6E\x50\x6F\x70\x75\x70","\x75\x73\x65\x4C\x65\x66\x74\x42\x75\x74\x74\x6F\x6E\x46\x6F\x72\x50\x61\x6E\x6E\x69\x6E\x67","\x69\x73\x50\x61\x6E\x6E\x69\x6E\x67\x54\x72\x69\x67\x67\x65\x72","\x69\x67\x6E\x6F\x72\x65\x43\x65\x6C\x6C","\x69\x73\x43\x6F\x6E\x74\x72\x6F\x6C\x44\x6F\x77\x6E","\x69\x73\x53\x68\x69\x66\x74\x44\x6F\x77\x6E","\x75\x73\x65\x50\x6F\x70\x75\x70\x54\x72\x69\x67\x67\x65\x72","\x69\x73\x50\x6F\x70\x75\x70\x54\x72\x69\x67\x67\x65\x72","\x6D\x6F\x75\x73\x65\x44\x6F\x77\x6E","\x64\x65\x6C\x61\x79\x65\x64\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E","\x63\x72\x65\x61\x74\x65\x48\x61\x6E\x64\x6C\x65\x72\x73","\x74\x6F\x6F\x6C\x74\x69\x70\x48\x61\x6E\x64\x6C\x65\x72","\x73\x65\x74\x45\x6E\x61\x62\x6C\x65\x64","\x73\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C\x73\x48\x61\x6E\x64\x6C\x65\x72","\x70\x61\x6E\x6E\x69\x6E\x67\x45\x6E\x61\x62\x6C\x65\x64","\x67\x72\x61\x70\x68\x48\x61\x6E\x64\x6C\x65\x72","\x73\x65\x6C\x65\x63\x74\x43\x65\x6C\x6C\x73","\x73\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C","\x64\x62\x6C\x43\x6C\x69\x63\x6B","\x63\x6F\x6E\x76\x65\x72\x74\x50\x6F\x69\x6E\x74","\x78","\x79","\x2F\x74\x6F\x75\x63\x68\x2D\x68\x61\x6E\x64\x6C\x65\x2E\x70\x6E\x67","\x68\x61\x6E\x64\x6C\x65\x49\x6D\x61\x67\x65","\x73\x69\x7A\x65\x72\x49\x6D\x61\x67\x65","\x73\x72\x63","\x2F\x74\x6F\x75\x63\x68\x2D\x63\x6F\x6E\x6E\x65\x63\x74\x6F\x72\x2E\x70\x6E\x67","\x69\x6E\x69\x74","\x69\x73\x43\x65\x6C\x6C\x43\x6F\x6E\x6E\x65\x63\x74\x61\x62\x6C\x65","\x63\x6F\x6E\x6E\x65\x63\x74\x6F\x72\x49\x6D\x67","\x63\x72\x65\x61\x74\x65\x49\x6D\x61\x67\x65","\x77\x69\x64\x74\x68","\x32\x39\x70\x78","\x68\x65\x69\x67\x68\x74","\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x61\x62\x73\x6F\x6C\x75\x74\x65","\x74\x69\x74\x6C\x65","\x72\x65\x64\x69\x72\x65\x63\x74\x4D\x6F\x75\x73\x65\x45\x76\x65\x6E\x74\x73","\x70\x61\x64\x64\x69\x6E\x67","\x32\x70\x78","\x69\x73\x4D\x6F\x75\x73\x65\x44\x6F\x77\x6E","\x61\x64\x64\x47\x65\x73\x74\x75\x72\x65\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64","\x72\x65\x64\x72\x61\x77\x54\x6F\x6F\x6C\x73","\x72\x65\x64\x72\x61\x77","\x73\x69\x6E\x67\x6C\x65\x53\x69\x7A\x65\x72","\x6C\x65\x66\x74","\x6F\x66\x66\x73\x65\x74\x57\x69\x64\x74\x68","\x70\x78","\x74\x6F\x70","\x6F\x66\x66\x73\x65\x74\x48\x65\x69\x67\x68\x74","\x64\x65\x73\x74\x72\x6F\x79","\x72\x65\x6D\x6F\x76\x65\x43\x68\x69\x6C\x64","\x70\x61\x72\x65\x6E\x74\x4E\x6F\x64\x65","\x2F\x63\x6F\x6E\x6E\x65\x63\x74\x6F\x72\x2E\x70\x6E\x67","\x63\x6F\x6E\x6E\x65\x63\x74\x49\x6D\x61\x67\x65","\x49\x53\x5F\x49\x45","\x49\x53\x5F\x53\x56\x47","\x64\x69\x76","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x49\x6D\x61\x67\x65","\x75\x72\x6C\x28","\x29","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x50\x6F\x73\x69\x74\x69\x6F\x6E","\x63\x65\x6E\x74\x65\x72","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x52\x65\x70\x65\x61\x74","\x6E\x6F\x2D\x72\x65\x70\x65\x61\x74","\x64\x69\x73\x70\x6C\x61\x79","\x49\x53\x5F\x51\x55\x49\x52\x4B\x53","\x69\x6E\x6C\x69\x6E\x65","\x69\x6E\x6C\x69\x6E\x65\x2D\x62\x6C\x6F\x63\x6B","\x6D\x6F\x75\x73\x65\x64\x6F\x77\x6E"];Graph= function(_0x9489x1,_0x9489x2,_0x9489x3,_0x9489x4){mxGraph[_0x3552[0]](this,_0x9489x1,_0x9489x2,_0x9489x3,_0x9489x4);this[_0x3552[1]](true);this[_0x3552[2]](false);this[_0x3552[3]](true);this[_0x3552[4]](!mxClient.IS_TOUCH);this[_0x3552[5]](false);this[_0x3552[6]](false);this[_0x3552[7]]= true;this[_0x3552[8]]= false;this[_0x3552[9]]= false;this[_0x3552[11]][_0x3552[10]]= true;this[_0x3552[12]](false);this[_0x3552[11]][_0x3552[13]](false);this[_0x3552[11]][_0x3552[14]]= function(){return mxConnectionHandler[_0x3552[16]][_0x3552[14]][_0x3552[15]](this,arguments)&& urlParams[_0x3552[17]]!= _0x3552[18]};this[_0x3552[19]]= _0x3552[20];if(_0x9489x4== null){this[_0x3552[21]]()};var _0x9489x5= new mxRubberband(this);this[_0x3552[22]]= function(){return _0x9489x5};this[_0x3552[29]][_0x3552[28]](mxEvent.PAN_START,mxUtils[_0x3552[27]](this,function(){this[_0x3552[25]][_0x3552[24]][_0x3552[23]]= _0x3552[26]}));this[_0x3552[29]][_0x3552[28]](mxEvent.PAN_END,mxUtils[_0x3552[27]](this,function(){this[_0x3552[25]][_0x3552[24]][_0x3552[23]]= _0x3552[30]}));this[_0x3552[31]]= function(_0x9489x6){var _0x9489x7=this[_0x3552[33]][_0x3552[32]](_0x9489x6);var _0x9489x8=(_0x9489x7!= null)?_0x9489x7[_0x3552[24]]:this[_0x3552[34]](_0x9489x6);return _0x9489x8[_0x3552[35]]== _0x3552[36]|| _0x9489x8[_0x3552[37]]== _0x3552[38]};this[_0x3552[40]][_0x3552[39]]= function(_0x9489x7){var _0x9489x9=mxCellRenderer[_0x3552[16]][_0x3552[39]][_0x3552[15]](this,arguments);if(_0x9489x7[_0x3552[24]][_0x3552[37]]== _0x3552[38]&& _0x9489x7[_0x3552[24]][_0x3552[35]]!= 1){_0x9489x9= mxUtils[_0x3552[41]](_0x9489x9,false)};return _0x9489x9};this[_0x3552[42]]= function(_0x9489x6){return false};this[_0x3552[11]][_0x3552[43]]= 16;var _0x9489xa=this[_0x3552[11]][_0x3552[44]];this[_0x3552[11]][_0x3552[44]]= function(_0x9489xb,_0x9489x7){if(_0x9489x7== null){if(!this[_0x3552[46]][_0x3552[29]][_0x3552[45]]){_0x9489x5[_0x3552[49]](_0x9489xb[_0x3552[47]](),_0x9489xb[_0x3552[48]]());this[_0x3552[46]][_0x3552[29]][_0x3552[50]]= false}}else {if(tapAndHoldStartsConnection){_0x9489xa[_0x3552[15]](this,arguments)}else {if(this[_0x3552[46]][_0x3552[52]](_0x9489x7[_0x3552[51]])&& this[_0x3552[46]][_0x3552[53]]()> 1){this[_0x3552[46]][_0x3552[54]](_0x9489x7[_0x3552[51]])}}}};if(touchStyle){this[_0x3552[55]]()}};mxUtils[_0x3552[56]](Graph,mxGraph);Graph[_0x3552[16]][_0x3552[57]]= null;Graph[_0x3552[16]][_0x3552[58]]= null;Graph[_0x3552[16]][_0x3552[21]]= function(){var _0x9489xc=mxUtils[_0x3552[61]](STYLE_PATH+ _0x3552[60])[_0x3552[59]]();var _0x9489xd= new mxCodec(_0x9489xc[_0x3552[62]]);_0x9489xd[_0x3552[64]](_0x9489xc,this[_0x3552[63]]())};Graph[_0x3552[16]][_0x3552[65]]= function(_0x9489xe){if(_0x9489xe!= null){var _0x9489x7=this[_0x3552[33]][_0x3552[32]](_0x9489xe);var _0x9489x8=(_0x9489x7!= null)?_0x9489x7[_0x3552[24]]:this[_0x3552[34]](_0x9489xe);if(_0x9489x8!= null){var _0x9489xf=mxUtils[_0x3552[66]](_0x9489x8,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL);var _0x9489x10=(_0x9489xf== mxConstants[_0x3552[67]])?mxConstants[_0x3552[68]]:mxConstants[_0x3552[67]];this[_0x3552[69]](mxConstants.STYLE_ELBOW,_0x9489x10,[_0x9489xe])}}};Graph[_0x3552[16]][_0x3552[70]]= function(_0x9489x6){if(_0x9489x6!= null&& this[_0x3552[72]]()[_0x3552[71]](_0x9489x6)){var _0x9489x11=this[_0x3552[72]]()[_0x3552[73]]([_0x9489x6])[0];if(_0x9489x11[_0x3552[74]]!= null){_0x9489x11[_0x3552[74]][_0x3552[75]]= null};var _0x9489x8=_0x9489x11[_0x3552[76]]();_0x9489x8= mxUtils[_0x3552[77]](_0x9489x8,mxConstants.STYLE_ENTRY_X,null);_0x9489x8= mxUtils[_0x3552[77]](_0x9489x8,mxConstants.STYLE_ENTRY_Y,null);_0x9489x8= mxUtils[_0x3552[77]](_0x9489x8,mxConstants.STYLE_EXIT_X,null);_0x9489x8= mxUtils[_0x3552[77]](_0x9489x8,mxConstants.STYLE_EXIT_Y,null);_0x9489x11[_0x3552[77]](_0x9489x8);this[_0x3552[11]][_0x3552[78]]= function(_0x9489xb){return this[_0x3552[46]][_0x3552[33]][_0x3552[79]](_0x9489x11)};this[_0x3552[11]][_0x3552[80]]= function(){return this[_0x3552[46]][_0x3552[73]]([_0x9489x11])[0]}}};Graph[_0x3552[16]][_0x3552[81]]= function(_0x9489x6){return this[_0x3552[82]]&& this[_0x3552[83]](_0x9489x6)};Graph[_0x3552[16]][_0x3552[84]]= function(_0x9489x6){return this[_0x3552[83]](_0x9489x6)};Graph[_0x3552[16]][_0x3552[85]]= function(){var _0x9489x12=mxGraph[_0x3552[16]][_0x3552[85]][_0x3552[15]](this,arguments);_0x9489x12[_0x3552[77]](_0x3552[86]);return _0x9489x12};Graph[_0x3552[16]][_0x3552[87]]= function(_0x9489x6){var _0x9489x13=_0x3552[88];if(this[_0x3552[72]]()[_0x3552[89]](_0x9489x6)){_0x9489x13+= mxResources[_0x3552[93]](_0x3552[90]+ _0x9489x6[_0x3552[92]][_0x3552[91]])|| _0x3552[88]}else {if(this[_0x3552[72]]()[_0x3552[71]](_0x9489x6)){_0x9489x13= mxGraph[_0x3552[16]][_0x3552[87]][_0x3552[15]](this,arguments)}};return _0x9489x13};Graph[_0x3552[16]][_0x3552[94]]= function(_0x9489x6){if(_0x9489x6[_0x3552[92]]!= null&& typeof (_0x9489x6[_0x3552[92]])== _0x3552[95]){return _0x9489x6[_0x3552[92]][_0x3552[97]](_0x3552[96])};return mxGraph[_0x3552[16]][_0x3552[94]][_0x3552[15]](this,arguments)};Graph[_0x3552[16]][_0x3552[98]]= function(_0x9489x6,_0x9489x10,_0x9489x14){if(_0x9489x6[_0x3552[92]]!= null&& typeof (_0x9489x6[_0x3552[92]])== _0x3552[95]){var _0x9489x15=_0x9489x6[_0x3552[92]][_0x3552[99]](true);_0x9489x15[_0x3552[100]](_0x3552[96],_0x9489x10);_0x9489x10= _0x9489x15};mxGraph[_0x3552[16]][_0x3552[98]][_0x3552[15]](this,arguments)};Graph[_0x3552[16]][_0x3552[101]]= function(_0x9489x6,_0x9489x16){var _0x9489x10=null;if(_0x9489x6[_0x3552[92]]!= null&& typeof (_0x9489x6[_0x3552[92]])== _0x3552[95]){_0x9489x10= _0x9489x6[_0x3552[92]][_0x3552[99]](true)}else {var _0x9489x17=mxUtils[_0x3552[102]]();_0x9489x10= _0x9489x17[_0x3552[104]](_0x3552[103]);_0x9489x10[_0x3552[100]](_0x3552[96],_0x9489x6[_0x3552[92]])};if(_0x9489x16!= null&& _0x9489x16[_0x3552[105]]> 0){_0x9489x10[_0x3552[100]](_0x3552[106],_0x9489x16)}else {_0x9489x10[_0x3552[107]](_0x3552[106])};this[_0x3552[109]][_0x3552[108]](_0x9489x6,_0x9489x10)};Graph[_0x3552[16]][_0x3552[110]]= function(_0x9489x6){if(_0x9489x6[_0x3552[92]]!= null&& typeof (_0x9489x6[_0x3552[92]])== _0x3552[95]){return _0x9489x6[_0x3552[92]][_0x3552[97]](_0x3552[106])};return null};Graph[_0x3552[16]][_0x3552[55]]= function(){this[_0x3552[11]][_0x3552[112]][_0x3552[111]]= function(){return this[_0x3552[46]][_0x3552[11]][_0x3552[113]]!= null};this[_0x3552[28]](mxEvent.START_EDITING,function(_0x9489x18,_0x9489x19){this[_0x3552[29]][_0x3552[114]]()});var _0x9489x1a=false;var _0x9489x1b=null;this[_0x3552[115]]= function(_0x9489xb){mxGraph[_0x3552[16]][_0x3552[115]][_0x3552[15]](this,arguments);if(_0x9489xb[_0x3552[32]]()== null){var _0x9489x6=this[_0x3552[118]](_0x9489xb[_0x3552[116]],_0x9489xb[_0x3552[117]]);if(this[_0x3552[72]]()[_0x3552[71]](_0x9489x6)){_0x9489xb[_0x3552[119]]= this[_0x3552[33]][_0x3552[32]](_0x9489x6);if(_0x9489xb[_0x3552[119]]!= null&& _0x9489xb[_0x3552[119]][_0x3552[120]]!= null){this[_0x3552[25]][_0x3552[24]][_0x3552[23]]= _0x9489xb[_0x3552[119]][_0x3552[120]][_0x3552[121]][_0x3552[24]][_0x3552[23]]}}};if(_0x9489xb[_0x3552[32]]()== null){this[_0x3552[25]][_0x3552[24]][_0x3552[23]]= _0x3552[30]}};this[_0x3552[122]]= function(_0x9489x1c,_0x9489xb,_0x9489x18){if(_0x9489x1c== mxEvent[_0x3552[123]]){if(!this[_0x3552[29]][_0x3552[124]]()){_0x9489x1b= _0x9489xb[_0x3552[125]]();_0x9489x1a= (_0x9489x1b!= null)?this[_0x3552[52]](_0x9489x1b):this[_0x3552[126]]()}else {_0x9489x1a= false;_0x9489x1b= null}}else {if(_0x9489x1c== mxEvent[_0x3552[127]]){if(_0x9489x1a&& !this[_0x3552[128]]()){if(!this[_0x3552[29]][_0x3552[124]]()){var _0x9489x1d=mxEvent[_0x3552[130]](_0x9489xb[_0x3552[129]]());var _0x9489x1e=mxEvent[_0x3552[131]](_0x9489xb[_0x3552[129]]());this[_0x3552[29]][_0x3552[132]](_0x9489x1d+ 16,_0x9489x1e,_0x9489x1b,_0x9489xb[_0x3552[129]]())};_0x9489x1a= false;_0x9489x1b= null;_0x9489xb[_0x3552[133]]();return};_0x9489x1a= false;_0x9489x1b= null}};mxGraph[_0x3552[16]][_0x3552[122]][_0x3552[15]](this,arguments);if(_0x9489x1c== mxEvent[_0x3552[134]]&& _0x9489xb[_0x3552[135]]()){_0x9489x1a= false;_0x9489x1b= null}}};(function(){mxVertexHandler[_0x3552[16]][_0x3552[136]]= true;mxText[_0x3552[16]][_0x3552[137]]= 5;mxText[_0x3552[16]][_0x3552[138]]= 1;if(touchStyle){mxConstants[_0x3552[139]]= 16;mxConstants[_0x3552[140]]= 7;if(mxClient[_0x3552[141]]){mxVertexHandler[_0x3552[16]][_0x3552[142]]= 4;mxEdgeHandler[_0x3552[16]][_0x3552[142]]= 6;Graph[_0x3552[16]][_0x3552[142]]= 14;Graph[_0x3552[16]][_0x3552[143]]= 20;mxPanningHandler[_0x3552[16]][_0x3552[144]]= false;mxPanningHandler[_0x3552[16]][_0x3552[145]]= true;mxPanningHandler[_0x3552[16]][_0x3552[146]]= function(_0x9489xb){var _0x9489x19=_0x9489xb[_0x3552[129]]();return (this[_0x3552[145]]&& (this[_0x3552[147]]|| _0x9489xb[_0x3552[32]]()== null))|| (mxEvent[_0x3552[148]](_0x9489x19)&& mxEvent[_0x3552[149]](_0x9489x19))|| (this[_0x3552[150]]&& mxEvent[_0x3552[151]](_0x9489x19))}};var _0x9489x1f=mxGraphHandler[_0x3552[16]][_0x3552[152]];mxGraphHandler[_0x3552[16]][_0x3552[152]]= function(_0x9489x18,_0x9489xb){_0x9489x1f[_0x3552[15]](this,arguments);if(this[_0x3552[46]][_0x3552[52]](_0x9489xb[_0x3552[125]]())&& this[_0x3552[46]][_0x3552[53]]()> 1){this[_0x3552[153]]= false}};Graph[_0x3552[16]][_0x3552[154]]= function(_0x9489x1){this[_0x3552[155]]= new mxTooltipHandler(this);this[_0x3552[155]][_0x3552[156]](false);this[_0x3552[157]]= new mxSelectionCellsHandler(this);this[_0x3552[29]]= new mxPanningHandler(this);this[_0x3552[29]][_0x3552[158]]= false;this[_0x3552[11]]= new mxConnectionHandler(this);this[_0x3552[11]][_0x3552[156]](false);this[_0x3552[159]]= new mxGraphHandler(this)};mxConnectionHandler[_0x3552[16]][_0x3552[160]]= function(_0x9489xe,_0x9489x20){if(touchStyle&& _0x9489x20!= null){this[_0x3552[46]][_0x3552[161]](_0x9489x20)}else {this[_0x3552[46]][_0x3552[161]](_0x9489xe)}};var _0x9489x21=mxGraph[_0x3552[16]][_0x3552[162]];Graph[_0x3552[16]][_0x3552[162]]= function(_0x9489x19,_0x9489x6){if(_0x9489x6== null){var _0x9489x22=mxUtils[_0x3552[163]](this[_0x3552[25]],mxEvent[_0x3552[130]](_0x9489x19),mxEvent[_0x3552[131]](_0x9489x19));_0x9489x6= this[_0x3552[118]](_0x9489x22[_0x3552[164]],_0x9489x22[_0x3552[165]])};_0x9489x21[_0x3552[0]](this,_0x9489x19,_0x9489x6)};var _0x9489x23= new mxImage(IMAGE_PATH+ _0x3552[166],16,16);mxVertexHandler[_0x3552[16]][_0x3552[167]]= _0x9489x23;mxEdgeHandler[_0x3552[16]][_0x3552[167]]= _0x9489x23;mxOutline[_0x3552[16]][_0x3552[168]]= _0x9489x23; new Image()[_0x3552[169]]= _0x9489x23[_0x3552[169]];var _0x9489x24=IMAGE_PATH+ _0x3552[170];var _0x9489x25=mxVertexHandler[_0x3552[16]][_0x3552[171]];mxVertexHandler[_0x3552[16]][_0x3552[171]]= function(){_0x9489x25[_0x3552[15]](this,arguments);if(showConnectorImg&& this[_0x3552[46]][_0x3552[11]][_0x3552[111]]()&& this[_0x3552[46]][_0x3552[172]](this[_0x3552[119]][_0x3552[51]])&& !this[_0x3552[46]][_0x3552[84]](this[_0x3552[119]][_0x3552[51]])&& this[_0x3552[46]][_0x3552[53]]()== 1){this[_0x3552[173]]= mxUtils[_0x3552[174]](_0x9489x24);this[_0x3552[173]][_0x3552[24]][_0x3552[23]]= _0x3552[26];this[_0x3552[173]][_0x3552[24]][_0x3552[175]]= _0x3552[176];this[_0x3552[173]][_0x3552[24]][_0x3552[177]]= _0x3552[176];this[_0x3552[173]][_0x3552[24]][_0x3552[178]]= _0x3552[179];if(!mxClient[_0x3552[141]]){this[_0x3552[173]][_0x3552[100]](_0x3552[180],mxResources[_0x3552[93]](_0x3552[17]));mxEvent[_0x3552[181]](this[_0x3552[173]],this[_0x3552[46]],this[_0x3552[119]])};this[_0x3552[173]][_0x3552[24]][_0x3552[182]]= _0x3552[183];mxEvent[_0x3552[185]](this[_0x3552[173]],mxUtils[_0x3552[27]](this,function(_0x9489x19){this[_0x3552[46]][_0x3552[29]][_0x3552[114]]();var _0x9489x22=mxUtils[_0x3552[163]](this[_0x3552[46]][_0x3552[25]],mxEvent[_0x3552[130]](_0x9489x19),mxEvent[_0x3552[131]](_0x9489x19));this[_0x3552[46]][_0x3552[11]][_0x3552[49]](this[_0x3552[119]],_0x9489x22[_0x3552[164]],_0x9489x22[_0x3552[165]]);this[_0x3552[46]][_0x3552[184]]= true;mxEvent[_0x3552[133]](_0x9489x19)}));this[_0x3552[46]][_0x3552[25]][_0x3552[186]](this[_0x3552[173]])};this[_0x3552[187]]()};var _0x9489x26=mxVertexHandler[_0x3552[16]][_0x3552[188]];mxVertexHandler[_0x3552[16]][_0x3552[188]]= function(){_0x9489x26[_0x3552[15]](this);this[_0x3552[187]]()};mxVertexHandler[_0x3552[16]][_0x3552[187]]= function(){if(this[_0x3552[119]]!= null&& this[_0x3552[173]]!= null){if(mxVertexHandler[_0x3552[16]][_0x3552[189]]){this[_0x3552[173]][_0x3552[24]][_0x3552[190]]= (this[_0x3552[119]][_0x3552[164]]+ this[_0x3552[119]][_0x3552[175]]- this[_0x3552[173]][_0x3552[191]]/ 2)+ _0x3552[192];this[_0x3552[173]][_0x3552[24]][_0x3552[193]]= (this[_0x3552[119]][_0x3552[165]]- this[_0x3552[173]][_0x3552[194]]/ 2)+ _0x3552[192]}else {this[_0x3552[173]][_0x3552[24]][_0x3552[190]]= (this[_0x3552[119]][_0x3552[164]]+ this[_0x3552[119]][_0x3552[175]]+ mxConstants[_0x3552[139]]/ 2+ 4)+ _0x3552[192];this[_0x3552[173]][_0x3552[24]][_0x3552[193]]= (this[_0x3552[119]][_0x3552[165]]+ (this[_0x3552[119]][_0x3552[177]]- this[_0x3552[173]][_0x3552[194]])/ 2)+ _0x3552[192]}}};var _0x9489x27=mxVertexHandler[_0x3552[16]][_0x3552[195]];mxVertexHandler[_0x3552[16]][_0x3552[195]]= function(_0x9489x18,_0x9489xb){_0x9489x27[_0x3552[15]](this,arguments);if(this[_0x3552[173]]!= null){this[_0x3552[173]][_0x3552[197]][_0x3552[196]](this[_0x3552[173]]);this[_0x3552[173]]= null}}; new Image()[_0x3552[169]]= _0x9489x24}else {var _0x9489x28= new mxImage(IMAGE_PATH+ _0x3552[198],15,15);mxConnectionHandler[_0x3552[16]][_0x3552[199]]= _0x9489x28; new Image()[_0x3552[169]]= _0x9489x28[_0x3552[169]];if(urlParams[_0x3552[17]]== _0x3552[18]){var _0x9489x28= new mxImage(IMAGE_PATH+ _0x3552[198],15,15);var _0x9489x25=mxVertexHandler[_0x3552[16]][_0x3552[171]];mxVertexHandler[_0x3552[16]][_0x3552[171]]= function(){_0x9489x25[_0x3552[15]](this,arguments);if(showConnectorImg&& this[_0x3552[46]][_0x3552[11]][_0x3552[111]]()&& this[_0x3552[46]][_0x3552[172]](this[_0x3552[119]][_0x3552[51]])&& !this[_0x3552[46]][_0x3552[84]](this[_0x3552[119]][_0x3552[51]])&& this[_0x3552[46]][_0x3552[53]]()== 1){if(mxClient[_0x3552[200]]&& !mxClient[_0x3552[201]]){this[_0x3552[173]]= document[_0x3552[104]](_0x3552[202]);this[_0x3552[173]][_0x3552[24]][_0x3552[203]]= _0x3552[204]+ _0x9489x28[_0x3552[169]]+ _0x3552[205];this[_0x3552[173]][_0x3552[24]][_0x3552[206]]= _0x3552[207];this[_0x3552[173]][_0x3552[24]][_0x3552[208]]= _0x3552[209];this[_0x3552[173]][_0x3552[24]][_0x3552[175]]= (_0x9489x28[_0x3552[175]]+ 4)+ _0x3552[192];this[_0x3552[173]][_0x3552[24]][_0x3552[177]]= (_0x9489x28[_0x3552[177]]+ 4)+ _0x3552[192];this[_0x3552[173]][_0x3552[24]][_0x3552[210]]= (mxClient[_0x3552[211]])?_0x3552[212]:_0x3552[213]}else {this[_0x3552[173]]= mxUtils[_0x3552[174]](_0x9489x28[_0x3552[169]]);this[_0x3552[173]][_0x3552[24]][_0x3552[175]]= _0x9489x28[_0x3552[175]]+ _0x3552[192];this[_0x3552[173]][_0x3552[24]][_0x3552[177]]= _0x9489x28[_0x3552[177]]+ _0x3552[192]};this[_0x3552[173]][_0x3552[24]][_0x3552[23]]= _0x3552[26];this[_0x3552[173]][_0x3552[24]][_0x3552[178]]= _0x3552[179];this[_0x3552[173]][_0x3552[100]](_0x3552[180],mxResources[_0x3552[93]](_0x3552[17]));mxEvent[_0x3552[181]](this[_0x3552[173]],this[_0x3552[46]],this[_0x3552[119]]);this[_0x3552[173]][_0x3552[24]][_0x3552[182]]= _0x3552[183];mxEvent[_0x3552[28]](this[_0x3552[173]],_0x3552[214],mxUtils[_0x3552[27]](this,function(_0x9489x19){this[_0x3552[46]][_0x3552[29]][_0x3552[114]]();var _0x9489x22=mxUtils[_0x3552[163]](this[_0x3552[46]][_0x3552[25]],mxEvent[_0x3552[130]](_0x9489x19),mxEvent[_0x3552[131]](_0x9489x19));this[_0x3552[46]][_0x3552[11]][_0x3552[49]](this[_0x3552[119]],_0x9489x22[_0x3552[164]],_0x9489x22[_0x3552[165]]);this[_0x3552[46]][_0x3552[184]]= true;mxEvent[_0x3552[133]](_0x9489x19)}));this[_0x3552[46]][_0x3552[25]][_0x3552[186]](this[_0x3552[173]])};this[_0x3552[187]]()};var _0x9489x26=mxVertexHandler[_0x3552[16]][_0x3552[188]];mxVertexHandler[_0x3552[16]][_0x3552[188]]= function(){_0x9489x26[_0x3552[15]](this);this[_0x3552[187]]()};mxVertexHandler[_0x3552[16]][_0x3552[187]]= function(){if(this[_0x3552[119]]!= null&& this[_0x3552[173]]!= null){if(mxVertexHandler[_0x3552[16]][_0x3552[189]]){this[_0x3552[173]][_0x3552[24]][_0x3552[190]]= (this[_0x3552[119]][_0x3552[164]]+ this[_0x3552[119]][_0x3552[175]]- this[_0x3552[173]][_0x3552[191]]/ 2)+ _0x3552[192];this[_0x3552[173]][_0x3552[24]][_0x3552[193]]= (this[_0x3552[119]][_0x3552[165]]- this[_0x3552[173]][_0x3552[194]]/ 2)+ _0x3552[192]}else {this[_0x3552[173]][_0x3552[24]][_0x3552[190]]= (this[_0x3552[119]][_0x3552[164]]+ this[_0x3552[119]][_0x3552[175]]+ mxConstants[_0x3552[139]]/ 2+ 2)+ _0x3552[192];this[_0x3552[173]][_0x3552[24]][_0x3552[193]]= (this[_0x3552[119]][_0x3552[165]]+ (this[_0x3552[119]][_0x3552[177]]- this[_0x3552[173]][_0x3552[194]])/ 2)+ _0x3552[192]}}};var _0x9489x27=mxVertexHandler[_0x3552[16]][_0x3552[195]];mxVertexHandler[_0x3552[16]][_0x3552[195]]= function(_0x9489x18,_0x9489xb){_0x9489x27[_0x3552[15]](this,arguments);if(this[_0x3552[173]]!= null){this[_0x3552[173]][_0x3552[197]][_0x3552[196]](this[_0x3552[173]]);this[_0x3552[173]]= null}}}}})() \ No newline at end of file diff --git a/public/assets/plugins/square/js/Menus.js b/public/assets/plugins/square/js/Menus.js index f6563c8..a22cae4 100644 --- a/public/assets/plugins/square/js/Menus.js +++ b/public/assets/plugins/square/js/Menus.js @@ -1,716 +1 @@ -/** - * $Id: Menus.js,v 1.13 2013-02-20 16:21:29 gaudenz Exp $ - * Copyright (c) 2006-2012, JGraph Ltd - */ -/** - * Constructs a new graph editor - */ -Menus = function(editorUi) { - this.editorUi = editorUi; - this.menus = new Object(); - this.init(); - - // Pre-fetches checkmark image - new Image().src = IMAGE_PATH + '/checkmark.gif'; -}; - -/** - * Adds the label menu items to the given menu and parent. - */ -Menus.prototype.init = function() { - var graph = this.editorUi.editor.graph; - - this.put('fontFamily', new Menu(mxUtils.bind(this, function(menu, parent) { - var fonts = ['Helvetica', 'Verdana', 'Times New Roman', 'Garamond', - 'Comic Sans MS', - 'Courier New', 'Georgia', 'Lucida Console', 'Tahoma' - ]; - - for (var i = 0; i < fonts.length; i++) { - var tr = this.styleChange(menu, fonts[i], [mxConstants.STYLE_FONTFAMILY], [ - fonts[i] - ], null, parent); - tr.firstChild.nextSibling.style.fontFamily = fonts[i]; - } - - menu.addSeparator(parent); - this.promptChange(menu, mxResources.get('custom'), '', mxConstants.DEFAULT_FONTFAMILY, - mxConstants.STYLE_FONTFAMILY, parent); - }))); - this.put('fontSize', new Menu(mxUtils.bind(this, function(menu, parent) { - var sizes = [6, 8, 9, 10, 11, 12, 14, 18, 24, 36, 48, 72]; - - for (var i = 0; i < sizes.length; i++) { - this.styleChange(menu, sizes[i], [mxConstants.STYLE_FONTSIZE], [sizes[i]], - null, parent); - } - - menu.addSeparator(parent); - this.promptChange(menu, mxResources.get('custom'), '(pt)', '12', - mxConstants.STYLE_FONTSIZE, parent); - }))); - this.put('linewidth', new Menu(mxUtils.bind(this, function(menu, parent) { - var sizes = [1, 2, 3, 4, 8, 12, 16, 24]; - - for (var i = 0; i < sizes.length; i++) { - this.styleChange(menu, sizes[i] + 'px', [mxConstants.STYLE_STROKEWIDTH], [ - sizes[i] - ], null, parent); - } - - menu.addSeparator(parent); - this.promptChange(menu, mxResources.get('custom'), '(px)', '1', - mxConstants.STYLE_STROKEWIDTH, parent); - }))); - this.put('line', new Menu(mxUtils.bind(this, function(menu, parent) { - this.styleChange(menu, mxResources.get('straight'), [mxConstants.STYLE_EDGE], [ - null - ], null, parent); - this.styleChange(menu, mxResources.get('entityRelation'), [mxConstants.STYLE_EDGE], [ - 'entityRelationEdgeStyle' - ], null, parent); - menu.addSeparator(parent); - this.styleChange(menu, mxResources.get('horizontal'), [mxConstants.STYLE_EDGE, - mxConstants.STYLE_ELBOW - ], ['elbowEdgeStyle', 'horizontal'], null, parent); - this.styleChange(menu, mxResources.get('vertical'), [mxConstants.STYLE_EDGE, - mxConstants.STYLE_ELBOW - ], ['elbowEdgeStyle', 'vertical'], null, parent); - menu.addSeparator(parent); - this.styleChange(menu, mxResources.get('manual'), [mxConstants.STYLE_EDGE], [ - 'segmentEdgeStyle' - ], null, parent); - this.styleChange(menu, mxResources.get('automatic'), [mxConstants.STYLE_EDGE], [ - 'orthogonalEdgeStyle' - ], null, parent); - }))); - this.put('lineend', new Menu(mxUtils.bind(this, function(menu, parent) { - this.styleChange(menu, mxResources.get('classic'), [mxConstants.STYLE_ENDARROW], [ - mxConstants.ARROW_CLASSIC - ], null, parent); - this.styleChange(menu, mxResources.get('openArrow'), [mxConstants.STYLE_ENDARROW], [ - mxConstants.ARROW_OPEN - ], null, parent); - this.styleChange(menu, mxResources.get('block'), [mxConstants.STYLE_ENDARROW], [ - mxConstants.ARROW_BLOCK - ], null, parent); - menu.addSeparator(parent); - this.styleChange(menu, mxResources.get('oval'), [mxConstants.STYLE_ENDARROW], [ - mxConstants.ARROW_OVAL - ], null, parent); - this.styleChange(menu, mxResources.get('diamond'), [mxConstants.STYLE_ENDARROW], [ - mxConstants.ARROW_DIAMOND - ], null, parent); - this.styleChange(menu, mxResources.get('diamondThin'), [mxConstants.STYLE_ENDARROW], [ - mxConstants.ARROW_DIAMOND_THIN - ], null, parent); - menu.addSeparator(parent); - this.styleChange(menu, mxResources.get('none'), [mxConstants.STYLE_ENDARROW], [ - mxConstants.NONE - ], null, parent); - menu.addSeparator(parent); - menu.addItem(mxResources.get('transparent'), null, function() { - graph.toggleCellStyles('endFill', true); - }, parent, null, true); - menu.addSeparator(parent); - this.promptChange(menu, mxResources.get('size'), '(px)', mxConstants.DEFAULT_MARKERSIZE, - mxConstants.STYLE_ENDSIZE, parent); - }))); - this.put('linestart', new Menu(mxUtils.bind(this, function(menu, parent) { - this.styleChange(menu, mxResources.get('classic'), [mxConstants.STYLE_STARTARROW], [ - mxConstants.ARROW_CLASSIC - ], null, parent); - this.styleChange(menu, mxResources.get('openArrow'), [mxConstants.STYLE_STARTARROW], [ - mxConstants.ARROW_OPEN - ], null, parent); - this.styleChange(menu, mxResources.get('block'), [mxConstants.STYLE_STARTARROW], [ - mxConstants.ARROW_BLOCK - ], null, parent); - menu.addSeparator(parent); - this.styleChange(menu, mxResources.get('oval'), [mxConstants.STYLE_STARTARROW], [ - mxConstants.ARROW_OVAL - ], null, parent); - this.styleChange(menu, mxResources.get('diamond'), [mxConstants.STYLE_STARTARROW], [ - mxConstants.ARROW_DIAMOND - ], null, parent); - this.styleChange(menu, mxResources.get('diamondThin'), [mxConstants.STYLE_STARTARROW], [ - mxConstants.ARROW_DIAMOND_THIN - ], null, parent); - menu.addSeparator(parent); - this.styleChange(menu, mxResources.get('none'), [mxConstants.STYLE_STARTARROW], [ - mxConstants.NONE - ], null, parent); - menu.addSeparator(parent); - menu.addItem(mxResources.get('transparent'), null, function() { - graph.toggleCellStyles('startFill', true); - }, parent, null, true); - menu.addSeparator(parent); - this.promptChange(menu, mxResources.get('size'), '(px)', mxConstants.DEFAULT_MARKERSIZE, - mxConstants.STYLE_STARTSIZE, parent); - }))); - this.put('spacing', new Menu(mxUtils.bind(this, function(menu, parent) { - // Uses shadow action and line menu to analyze selection - var vertexSelected = this.editorUi.actions.get('shadow').enabled; - var edgeSelected = this.get('line').enabled; - - if (vertexSelected || menu.showDisabled) { - this.promptChange(menu, mxResources.get('top'), '(px)', '0', - mxConstants.STYLE_SPACING_TOP, parent, vertexSelected); - this.promptChange(menu, mxResources.get('right'), '(px)', '0', - mxConstants.STYLE_SPACING_RIGHT, parent, vertexSelected); - this.promptChange(menu, mxResources.get('bottom'), '(px)', '0', - mxConstants.STYLE_SPACING_BOTTOM, parent, vertexSelected); - this.promptChange(menu, mxResources.get('left'), '(px)', '0', - mxConstants.STYLE_SPACING_LEFT, parent, vertexSelected); - menu.addSeparator(parent); - this.promptChange(menu, mxResources.get('global'), '(px)', '0', - mxConstants.STYLE_SPACING, parent, vertexSelected); - this.promptChange(menu, mxResources.get('perimeter'), '(px)', '0', - mxConstants.STYLE_PERIMETER_SPACING, parent, vertexSelected); - } - - if (edgeSelected || menu.showDisabled) { - menu.addSeparator(parent); - this.promptChange(menu, mxResources.get('sourceSpacing'), '(px)', '0', - mxConstants.STYLE_SOURCE_PERIMETER_SPACING, parent, edgeSelected); - this.promptChange(menu, mxResources.get('targetSpacing'), '(px)', '0', - mxConstants.STYLE_TARGET_PERIMETER_SPACING, parent, edgeSelected); - } - }))); - this.put('format', new Menu(mxUtils.bind(this, function(menu, parent) { - this.addMenuItem(menu, 'style', parent); - }))); - this.put('text', new Menu(mxUtils.bind(this, function(menu, parent) { - var enabled = this.get('text').enabled; - menu.addSeparator(parent); - this.addSubmenu('fontFamily', menu, parent); - this.addSubmenu('fontSize', menu, parent); - this.addMenuItems(menu, ['-', 'bold', 'italic', 'underline', '-'], - parent); - this.addSubmenu('alignment', menu, parent); - this.addMenuItem(menu, 'wordWrap', parent); - menu.addSeparator(parent); - this.promptChange(menu, mxResources.get('textOpacity'), '(%)', '100', - mxConstants.STYLE_TEXT_OPACITY, parent, enabled); - menu.addItem(mxResources.get('hide'), null, function() { - graph.toggleCellStyles(mxConstants.STYLE_NOLABEL, false); - }, parent, null, enabled); - }))); - this.put('alignment', new Menu(mxUtils.bind(this, function(menu, parent) { - this.styleChange(menu, mxResources.get('leftAlign'), [mxConstants.STYLE_ALIGN], [ - mxConstants.ALIGN_LEFT - ], null, parent); - this.styleChange(menu, mxResources.get('center'), [mxConstants.STYLE_ALIGN], [ - mxConstants.ALIGN_CENTER - ], null, parent); - this.styleChange(menu, mxResources.get('rightAlign'), [mxConstants.STYLE_ALIGN], [ - mxConstants.ALIGN_RIGHT - ], null, parent); - menu.addSeparator(parent); - this.styleChange(menu, mxResources.get('topAlign'), [mxConstants.STYLE_VERTICAL_ALIGN], [ - mxConstants.ALIGN_TOP - ], null, parent); - this.styleChange(menu, mxResources.get('middle'), [mxConstants.STYLE_VERTICAL_ALIGN], [ - mxConstants.ALIGN_MIDDLE - ], null, parent); - this.styleChange(menu, mxResources.get('bottomAlign'), [mxConstants.STYLE_VERTICAL_ALIGN], [ - mxConstants.ALIGN_BOTTOM - ], null, parent); - menu.addSeparator(parent); - this.addSubmenu('position', menu, parent); - this.addSubmenu('spacing', menu, parent); - menu.addSeparator(parent); - var enabled = this.get('text').enabled; - menu.addItem(mxResources.get('vertical'), null, function() { - graph.toggleCellStyles(mxConstants.STYLE_HORIZONTAL, true); - }, parent, null, enabled); - }))); - this.put('position', new Menu(mxUtils.bind(this, function(menu, parent) { - this.styleChange(menu, mxResources.get('left'), [mxConstants.STYLE_LABEL_POSITION, - mxConstants.STYLE_ALIGN - ], [mxConstants.ALIGN_LEFT, mxConstants.ALIGN_RIGHT], null, parent); - this.styleChange(menu, mxResources.get('center'), [mxConstants.STYLE_LABEL_POSITION, - mxConstants.STYLE_ALIGN - ], [mxConstants.ALIGN_CENTER, mxConstants.ALIGN_CENTER], null, parent); - this.styleChange(menu, mxResources.get('right'), [mxConstants.STYLE_LABEL_POSITION, - mxConstants.STYLE_ALIGN - ], [mxConstants.ALIGN_RIGHT, mxConstants.ALIGN_LEFT], null, parent); - menu.addSeparator(parent); - this.styleChange(menu, mxResources.get('top'), [mxConstants.STYLE_VERTICAL_LABEL_POSITION, - mxConstants.STYLE_VERTICAL_ALIGN - ], [mxConstants.ALIGN_TOP, mxConstants.ALIGN_BOTTOM], null, parent); - this.styleChange(menu, mxResources.get('middle'), [mxConstants.STYLE_VERTICAL_LABEL_POSITION, - mxConstants.STYLE_VERTICAL_ALIGN - ], [mxConstants.ALIGN_MIDDLE, mxConstants.ALIGN_MIDDLE], null, parent); - this.styleChange(menu, mxResources.get('bottom'), [mxConstants.STYLE_VERTICAL_LABEL_POSITION, - mxConstants.STYLE_VERTICAL_ALIGN - ], [mxConstants.ALIGN_BOTTOM, mxConstants.ALIGN_TOP], null, parent); - }))); - this.put('direction', new Menu(mxUtils.bind(this, function(menu, parent) { - menu.addItem(mxResources.get('flipH'), null, function() { - graph.toggleCellStyles(mxConstants.STYLE_FLIPH, false); - }, parent); - menu.addItem(mxResources.get('flipV'), null, function() { - graph.toggleCellStyles(mxConstants.STYLE_FLIPV, false); - }, parent); - this.addMenuItems(menu, ['-', 'tilt', 'rotation'], parent); - }))); - this.put('align', new Menu(mxUtils.bind(this, function(menu, parent) { - menu.addItem(mxResources.get('leftAlign'), null, function() { - graph.alignCells(mxConstants.ALIGN_LEFT); - }, parent); - menu.addItem(mxResources.get('center'), null, function() { - graph.alignCells(mxConstants.ALIGN_CENTER); - }, parent); - menu.addItem(mxResources.get('rightAlign'), null, function() { - graph.alignCells(mxConstants.ALIGN_RIGHT); - }, parent); - menu.addSeparator(parent); - menu.addItem(mxResources.get('topAlign'), null, function() { - graph.alignCells(mxConstants.ALIGN_TOP); - }, parent); - menu.addItem(mxResources.get('middle'), null, function() { - graph.alignCells(mxConstants.ALIGN_MIDDLE); - }, parent); - menu.addItem(mxResources.get('bottomAlign'), null, function() { - graph.alignCells(mxConstants.ALIGN_BOTTOM); - }, parent); - }))); - this.put('layout', new Menu(mxUtils.bind(this, function(menu, parent) { - // menu.addItem(mxResources.get('horizontalTree'), null, mxUtils.bind(this, function() - // { - // if (!graph.isSelectionEmpty()) - // { - // var layout = new mxCompactTreeLayout(graph, true); - // layout.edgeRouting = false; - // layout.levelDistance = 30; - // this.editorUi.executeLayout(layout, true, true); - // } - // }), parent); - // menu.addItem(mxResources.get('verticalTree'), null, mxUtils.bind(this, function() - // { - // if (!graph.isSelectionEmpty()) - // { - // var layout = new mxCompactTreeLayout(graph, false); - // layout.edgeRouting = false; - // layout.levelDistance = 30; - // this.editorUi.executeLayout(layout, true, true); - // } - // }), parent); - // menu.addSeparator(parent); - menu.addItem(mxResources.get('horizontalFlow'), null, mxUtils.bind(this, - function() { - var layout = new mxHierarchicalLayout(graph, mxConstants.DIRECTION_WEST); - this.editorUi.executeLayout(layout, true, true); - }), parent); - menu.addItem(mxResources.get('verticalFlow'), null, mxUtils.bind(this, - function() { - var layout = new mxHierarchicalLayout(graph, mxConstants.DIRECTION_NORTH); - this.editorUi.executeLayout(layout, true, true); - }), parent); - //menu.addSeparator(parent); - // menu.addItem(mxResources.get('organic'), null, mxUtils.bind(this, function() - // { - // var layout = new mxFastOrganicLayout(graph); - // this.editorUi.executeLayout(layout, true, true); - // }), parent); - // menu.addItem(mxResources.get('circle'), null, mxUtils.bind(this, function() - // { - // var layout = new mxCircleLayout(graph); - // this.editorUi.executeLayout(layout, true, true, graph.getSelectionCells()); - // }), parent); - }))); - this.put('navigation', new Menu(mxUtils.bind(this, function(menu, parent) { - this.addMenuItems(menu, ['home', '-', 'exitGroup', 'enterGroup', '-', - 'expand', 'collapse' - ], parent); - }))); - this.put('arrange', new Menu(mxUtils.bind(this, function(menu, parent) { - this.addMenuItems(menu, ['toFront', 'toBack', '-'], parent); - //this.addSubmenu('direction', menu, parent); - this.addSubmenu('layout', menu, parent); - //this.addSubmenu('align', menu, parent); - menu.addSeparator(parent); - //this.addSubmenu('navigation', menu, parent); - this.addMenuItems(menu, ['-', 'group', 'ungroup', 'removeFromGroup'], - parent); - //this.addMenuItems(menu, ['-', 'group', 'ungroup', 'removeFromGroup', '-', 'autosize'], parent); - }))); - this.put('view', new Menu(mxUtils.bind(this, function(menu, parent) { - this.addMenuItems(menu, ['actualSize'], parent); - menu.addSeparator(); - var scales = [0.25, 0.5, 0.75, 1, 2, 4]; - - for (var i = 0; i < scales.length; i++) { - (function(scale) { - menu.addItem((scale * 100) + '%', null, function() { - graph.zoomTo(scale); - }, parent); - })(scales[i]); - } - - this.addMenuItems(menu, ['-', 'zoomIn', 'zoomOut', '-', 'fitWindow', - 'customZoom', '-', 'fitPage', 'fitPageWidth' - ], parent); - }))); - this.put('file', new Menu(mxUtils.bind(this, function(menu, parent) { - this.addMenuItems(menu, ['new', 'open', '-', 'save', 'saveAs', 'publish', - '-', 'variable', '-', 'import', 'export', '-', 'editFile', 'description', '-', - 'print' - ], parent); - }))); - this.put('edit', new Menu(mxUtils.bind(this, function(menu, parent) { - this.addMenuItems(menu, ['undo', 'redo', '-', 'cut', 'copy', 'paste', - 'delete', '-', 'duplicate', '-', - 'selectVertices', 'selectEdges', 'selectAll' - ]); - }))); - this.put('help', new Menu(mxUtils.bind(this, function(menu, parent) { - this.addMenuItems(menu, ['help', '-', 'about']); - }))); -}; - -/** - * Adds the label menu items to the given menu and parent. - */ -Menus.prototype.put = function(name, menu) { - this.menus[name] = menu; -}; - -/** - * Adds the label menu items to the given menu and parent. - */ -Menus.prototype.get = function(name) { - return this.menus[name]; -}; - -/** - * Adds the given submenu. - */ -Menus.prototype.addSubmenu = function(name, menu, parent) { - var enabled = this.get(name).enabled; - - if (menu.showDisabled || enabled) { - var submenu = menu.addItem(mxResources.get(name), null, null, parent, null, - enabled); - this.addMenu(name, menu, submenu); - } -}; - -/** - * Adds the label menu items to the given menu and parent. - */ -Menus.prototype.addMenu = function(name, popupMenu, parent) { - var menu = this.get(name); - - if (menu != null && (popupMenu.showDisabled || menu.enabled)) { - this.get(name).execute(popupMenu, parent); - } -}; - -/** - * Adds a style change item to the given menu. - */ -Menus.prototype.styleChange = function(menu, label, keys, values, sprite, - parent) { - return menu.addItem(label, null, mxUtils.bind(this, function() { - var graph = this.editorUi.editor.graph; - - graph.getModel().beginUpdate(); - try { - for (var i = 0; i < keys.length; i++) { - graph.setCellStyles(keys[i], values[i]); - } - } finally { - graph.getModel().endUpdate(); - } - }), parent, sprite); -}; - -/** - * Adds a style change item with a prompt to the given menu. - */ -Menus.prototype.promptChange = function(menu, label, hint, defaultValue, key, - parent, enabled) { - return menu.addItem(label, null, mxUtils.bind(this, function() { - var graph = this.editorUi.editor.graph; - var value = defaultValue; - var state = graph.getView().getState(graph.getSelectionCell()); - - if (state != null) { - value = state.style[key] || value; - } - - value = mxUtils.prompt(mxResources.get('enterValue') + ((hint.length > 0) ? - (' ' + hint) : ''), value); - - if (value != null && value.length > 0) { - graph.setCellStyles(key, value); - } - }), parent, null, enabled); -}; - -/** - * Creates the keyboard event handler for the current graph and history. - */ -Menus.prototype.addMenuItem = function(menu, key, parent) { - var action = this.editorUi.actions.get(key); - - if (action != null && (menu.showDisabled || action.enabled)) { - var item = menu.addItem(action.label, null, action.funct, parent, null, - action.enabled); - - // Adds checkmark image - if (action.toggleAction && action.isSelected()) { - this.addCheckmark(item); - } - - this.addShortcut(item, action); - - return item; - } - - return null; -}; - -/** - * Adds a checkmark to the given menuitem. - */ -Menus.prototype.addShortcut = function(item, action) { - if (action.shortcut != null) { - var td = item.firstChild.nextSibling.nextSibling; - var span = document.createElement('span'); - span.style.color = 'gray'; - mxUtils.write(span, action.shortcut); - td.appendChild(span); - } -}; - -/** - * Adds a checkmark to the given menuitem. - */ -Menus.prototype.addCheckmark = function(item) { - var td = item.firstChild.nextSibling; - td.style.backgroundImage = 'url(' + IMAGE_PATH + '/checkmark.gif)'; - td.style.backgroundRepeat = 'no-repeat'; - td.style.backgroundPosition = '2px 50%'; -}; - -/** - * Creates the keyboard event handler for the current graph and history. - */ -Menus.prototype.addMenuItems = function(menu, keys, parent) { - for (var i = 0; i < keys.length; i++) { - if (keys[i] == '-') { - menu.addSeparator(parent); - } else { - this.addMenuItem(menu, keys[i], parent); - } - } -}; - -/** - * Creates the keyboard event handler for the current graph and history. - */ -Menus.prototype.createPopupMenu = function(menu, cell, evt) { - var graph = this.editorUi.editor.graph; - menu.smartSeparators = true; - - if (graph.isSelectionEmpty()) { - this.addMenuItems(menu, ['undo', 'redo', '-', 'paste', '-']); - } else { - this.addMenuItems(menu, ['delete', '-', 'cut', 'copy', '-', 'duplicate']); - - if (graph.getSelectionCount() == 1 && graph.getModel().isEdge(graph.getSelectionCell())) { - this.addMenuItems(menu, ['setAsDefaultEdge']); - } - - menu.addSeparator(); - } - - if (graph.getSelectionCount() > 0) { - this.addMenuItems(menu, ['toFront', 'toBack', '-']); - - if (graph.getModel().isEdge(graph.getSelectionCell())) { - var isWaypoint = false; - var cell = graph.getSelectionCell(); - - if (cell != null && graph.getModel().isEdge(cell)) { - var handler = graph.selectionCellsHandler.getHandler(cell); - - if (handler instanceof mxEdgeHandler && handler.bends != null && handler.bends - .length > 2) { - var index = handler.getHandleForEvent(new mxMouseEvent(evt)); - - // Configures removeWaypoint action before execution - var rmWaypointAction = this.editorUi.actions.get('removeWaypoint'); - rmWaypointAction.handler = handler; - rmWaypointAction.index = index; - - isWaypoint = index > 0 && index < handler.bends.length; - } - } - - this.addMenuItems(menu, ['-', (isWaypoint) ? 'removeWaypoint' : - 'addWaypoint' - ]); - } else if (graph.getSelectionCount() > 1) { - menu.addSeparator(); - this.addMenuItems(menu, ['group']); - } - - menu.addSeparator(); - - if (graph.getSelectionCount() == 1) { - var link = graph.getLinkForCell(graph.getSelectionCell()); - - if (link != null) { - this.addMenuItems(menu, ['openLink']); - } - } - } else { - this.addMenuItems(menu, ['-', 'selectVertices', 'selectEdges', '-', - 'selectAll' - ]); - } -}; - -/** - * Creates the keyboard event handler for the current graph and history. - */ -Menus.prototype.createMenubar = function(container) { - var menubar = new Menubar(this.editorUi, container); - var menus = ['file', 'edit', 'view', 'format', 'text', 'arrange', - 'help' - ]; - - for (var i = 0; i < menus.length; i++) { - menubar.addMenu(mxResources.get(menus[i]), this.get(menus[i]).funct); - } - - return menubar; -}; - -/** - * Construcs a new menubar for the given editor. - */ -function Menubar(editorUi, container) { - this.editorUi = editorUi; - this.container = container; - - // Global handler to hide the current menu - mxEvent.addGestureListeners(document, mxUtils.bind(this, function(evt) { - this.hideMenu(); - })); -}; - -/** - * Adds the menubar elements. - */ -Menubar.prototype.hideMenu = function() { - if (this.currentMenu != null) { - this.currentMenu.hideMenu(); - } -}; - -/** - * Adds a submenu to this menubar. - */ -Menubar.prototype.addMenu = function(label, funct) { - var elt = document.createElement('a'); - elt.setAttribute('href', 'javascript:void(0);'); - elt.className = 'geItem'; - mxUtils.write(elt, label); - - this.addMenuHandler(elt, funct); - this.container.appendChild(elt); - - return elt; -}; - -/** - * Adds a handler for showing a menu in the given element. - */ -Menubar.prototype.addMenuHandler = function(elt, funct) { - if (funct != null) { - var show = true; - - var clickHandler = mxUtils.bind(this, function(evt) { - if (show && elt.enabled == null || elt.enabled) { - this.editorUi.editor.graph.panningHandler.hideMenu(); - var menu = new mxPopupMenu(funct); - menu.div.className += ' geMenubarMenu'; - menu.smartSeparators = true; - menu.showDisabled = true; - menu.autoExpand = true; - - // Disables autoexpand and destroys menu when hidden - menu.hideMenu = mxUtils.bind(this, function() { - mxPopupMenu.prototype.hideMenu.apply(menu, arguments); - menu.destroy(); - this.currentMenu = null; - this.currentElt = null; - }); - - // Added width of the page-sidebar - var x = elt.offsetLeft + document.getElementById('page-sidebar').offsetWidth + - 22; - // Added static height of the page-navbar - var y = elt.offsetTop + elt.offsetHeight + 140; - - menu.popup(x, y, null, evt); - - //menu.popup(elt.offsetLeft + 4, elt.offsetTop + elt.offsetHeight + 4, null, evt); - this.currentMenu = menu; - this.currentElt = elt; - } - - show = true; - mxEvent.consume(evt); - }); - - // Shows menu automatically while in expanded state - mxEvent.addListener(elt, 'mousemove', mxUtils.bind(this, function(evt) { - if (this.currentMenu != null && this.currentElt != elt) { - this.hideMenu(); - clickHandler(evt); - } - })); - - // Hides menu if already showing - mxEvent.addListener(elt, 'mousedown', mxUtils.bind(this, function() { - show = this.currentElt != elt; - })); - - mxEvent.addListener(elt, 'click', clickHandler); - } -}; - -/** - * Constructs a new action for the given parameters. - */ -function Menu(funct, enabled) { - mxEventSource.call(this); - this.funct = funct; - this.enabled = (enabled != null) ? enabled : true; -}; - -// Menu inherits from mxEventSource -mxUtils.extend(Menu, mxEventSource); - -/** - * Sets the enabled state of the action and fires a stateChanged event. - */ -Menu.prototype.setEnabled = function(value) { - if (this.enabled != value) { - this.enabled = value; - this.fireEvent(new mxEventObject('stateChanged')); - } -}; - -/** - * Sets the enabled state of the action and fires a stateChanged event. - */ -Menu.prototype.execute = function(menu, parent) { - this.funct(menu, parent); -}; +var _0x6f9d=["\x65\x64\x69\x74\x6F\x72\x55\x69","\x6D\x65\x6E\x75\x73","\x69\x6E\x69\x74","\x73\x72\x63","\x2F\x63\x68\x65\x63\x6B\x6D\x61\x72\x6B\x2E\x67\x69\x66","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x67\x72\x61\x70\x68","\x65\x64\x69\x74\x6F\x72","\x66\x6F\x6E\x74\x46\x61\x6D\x69\x6C\x79","\x48\x65\x6C\x76\x65\x74\x69\x63\x61","\x56\x65\x72\x64\x61\x6E\x61","\x54\x69\x6D\x65\x73\x20\x4E\x65\x77\x20\x52\x6F\x6D\x61\x6E","\x47\x61\x72\x61\x6D\x6F\x6E\x64","\x43\x6F\x6D\x69\x63\x20\x53\x61\x6E\x73\x20\x4D\x53","\x43\x6F\x75\x72\x69\x65\x72\x20\x4E\x65\x77","\x47\x65\x6F\x72\x67\x69\x61","\x4C\x75\x63\x69\x64\x61\x20\x43\x6F\x6E\x73\x6F\x6C\x65","\x54\x61\x68\x6F\x6D\x61","\x6C\x65\x6E\x67\x74\x68","\x53\x54\x59\x4C\x45\x5F\x46\x4F\x4E\x54\x46\x41\x4D\x49\x4C\x59","\x73\x74\x79\x6C\x65\x43\x68\x61\x6E\x67\x65","\x73\x74\x79\x6C\x65","\x6E\x65\x78\x74\x53\x69\x62\x6C\x69\x6E\x67","\x66\x69\x72\x73\x74\x43\x68\x69\x6C\x64","\x61\x64\x64\x53\x65\x70\x61\x72\x61\x74\x6F\x72","\x63\x75\x73\x74\x6F\x6D","\x67\x65\x74","","\x70\x72\x6F\x6D\x70\x74\x43\x68\x61\x6E\x67\x65","\x62\x69\x6E\x64","\x70\x75\x74","\x66\x6F\x6E\x74\x53\x69\x7A\x65","\x53\x54\x59\x4C\x45\x5F\x46\x4F\x4E\x54\x53\x49\x5A\x45","\x28\x70\x74\x29","\x31\x32","\x6C\x69\x6E\x65\x77\x69\x64\x74\x68","\x70\x78","\x53\x54\x59\x4C\x45\x5F\x53\x54\x52\x4F\x4B\x45\x57\x49\x44\x54\x48","\x28\x70\x78\x29","\x31","\x6C\x69\x6E\x65","\x73\x74\x72\x61\x69\x67\x68\x74","\x53\x54\x59\x4C\x45\x5F\x45\x44\x47\x45","\x65\x6E\x74\x69\x74\x79\x52\x65\x6C\x61\x74\x69\x6F\x6E","\x65\x6E\x74\x69\x74\x79\x52\x65\x6C\x61\x74\x69\x6F\x6E\x45\x64\x67\x65\x53\x74\x79\x6C\x65","\x68\x6F\x72\x69\x7A\x6F\x6E\x74\x61\x6C","\x53\x54\x59\x4C\x45\x5F\x45\x4C\x42\x4F\x57","\x65\x6C\x62\x6F\x77\x45\x64\x67\x65\x53\x74\x79\x6C\x65","\x76\x65\x72\x74\x69\x63\x61\x6C","\x6D\x61\x6E\x75\x61\x6C","\x73\x65\x67\x6D\x65\x6E\x74\x45\x64\x67\x65\x53\x74\x79\x6C\x65","\x61\x75\x74\x6F\x6D\x61\x74\x69\x63","\x6F\x72\x74\x68\x6F\x67\x6F\x6E\x61\x6C\x45\x64\x67\x65\x53\x74\x79\x6C\x65","\x6C\x69\x6E\x65\x65\x6E\x64","\x63\x6C\x61\x73\x73\x69\x63","\x53\x54\x59\x4C\x45\x5F\x45\x4E\x44\x41\x52\x52\x4F\x57","\x41\x52\x52\x4F\x57\x5F\x43\x4C\x41\x53\x53\x49\x43","\x6F\x70\x65\x6E\x41\x72\x72\x6F\x77","\x41\x52\x52\x4F\x57\x5F\x4F\x50\x45\x4E","\x62\x6C\x6F\x63\x6B","\x41\x52\x52\x4F\x57\x5F\x42\x4C\x4F\x43\x4B","\x6F\x76\x61\x6C","\x41\x52\x52\x4F\x57\x5F\x4F\x56\x41\x4C","\x64\x69\x61\x6D\x6F\x6E\x64","\x41\x52\x52\x4F\x57\x5F\x44\x49\x41\x4D\x4F\x4E\x44","\x64\x69\x61\x6D\x6F\x6E\x64\x54\x68\x69\x6E","\x41\x52\x52\x4F\x57\x5F\x44\x49\x41\x4D\x4F\x4E\x44\x5F\x54\x48\x49\x4E","\x6E\x6F\x6E\x65","\x4E\x4F\x4E\x45","\x74\x72\x61\x6E\x73\x70\x61\x72\x65\x6E\x74","\x65\x6E\x64\x46\x69\x6C\x6C","\x74\x6F\x67\x67\x6C\x65\x43\x65\x6C\x6C\x53\x74\x79\x6C\x65\x73","\x61\x64\x64\x49\x74\x65\x6D","\x73\x69\x7A\x65","\x6C\x69\x6E\x65\x73\x74\x61\x72\x74","\x53\x54\x59\x4C\x45\x5F\x53\x54\x41\x52\x54\x41\x52\x52\x4F\x57","\x73\x74\x61\x72\x74\x46\x69\x6C\x6C","\x73\x70\x61\x63\x69\x6E\x67","\x65\x6E\x61\x62\x6C\x65\x64","\x73\x68\x61\x64\x6F\x77","\x61\x63\x74\x69\x6F\x6E\x73","\x73\x68\x6F\x77\x44\x69\x73\x61\x62\x6C\x65\x64","\x74\x6F\x70","\x30","\x72\x69\x67\x68\x74","\x62\x6F\x74\x74\x6F\x6D","\x6C\x65\x66\x74","\x67\x6C\x6F\x62\x61\x6C","\x70\x65\x72\x69\x6D\x65\x74\x65\x72","\x73\x6F\x75\x72\x63\x65\x53\x70\x61\x63\x69\x6E\x67","\x74\x61\x72\x67\x65\x74\x53\x70\x61\x63\x69\x6E\x67","\x66\x6F\x72\x6D\x61\x74","\x61\x64\x64\x4D\x65\x6E\x75\x49\x74\x65\x6D","\x74\x65\x78\x74","\x61\x64\x64\x53\x75\x62\x6D\x65\x6E\x75","\x2D","\x62\x6F\x6C\x64","\x69\x74\x61\x6C\x69\x63","\x75\x6E\x64\x65\x72\x6C\x69\x6E\x65","\x61\x64\x64\x4D\x65\x6E\x75\x49\x74\x65\x6D\x73","\x61\x6C\x69\x67\x6E\x6D\x65\x6E\x74","\x77\x6F\x72\x64\x57\x72\x61\x70","\x74\x65\x78\x74\x4F\x70\x61\x63\x69\x74\x79","\x28\x25\x29","\x31\x30\x30","\x68\x69\x64\x65","\x6C\x65\x66\x74\x41\x6C\x69\x67\x6E","\x53\x54\x59\x4C\x45\x5F\x41\x4C\x49\x47\x4E","\x41\x4C\x49\x47\x4E\x5F\x4C\x45\x46\x54","\x63\x65\x6E\x74\x65\x72","\x41\x4C\x49\x47\x4E\x5F\x43\x45\x4E\x54\x45\x52","\x72\x69\x67\x68\x74\x41\x6C\x69\x67\x6E","\x41\x4C\x49\x47\x4E\x5F\x52\x49\x47\x48\x54","\x74\x6F\x70\x41\x6C\x69\x67\x6E","\x53\x54\x59\x4C\x45\x5F\x56\x45\x52\x54\x49\x43\x41\x4C\x5F\x41\x4C\x49\x47\x4E","\x41\x4C\x49\x47\x4E\x5F\x54\x4F\x50","\x6D\x69\x64\x64\x6C\x65","\x41\x4C\x49\x47\x4E\x5F\x4D\x49\x44\x44\x4C\x45","\x62\x6F\x74\x74\x6F\x6D\x41\x6C\x69\x67\x6E","\x41\x4C\x49\x47\x4E\x5F\x42\x4F\x54\x54\x4F\x4D","\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x53\x54\x59\x4C\x45\x5F\x4C\x41\x42\x45\x4C\x5F\x50\x4F\x53\x49\x54\x49\x4F\x4E","\x53\x54\x59\x4C\x45\x5F\x56\x45\x52\x54\x49\x43\x41\x4C\x5F\x4C\x41\x42\x45\x4C\x5F\x50\x4F\x53\x49\x54\x49\x4F\x4E","\x64\x69\x72\x65\x63\x74\x69\x6F\x6E","\x66\x6C\x69\x70\x48","\x66\x6C\x69\x70\x56","\x74\x69\x6C\x74","\x72\x6F\x74\x61\x74\x69\x6F\x6E","\x61\x6C\x69\x67\x6E","\x61\x6C\x69\x67\x6E\x43\x65\x6C\x6C\x73","\x6C\x61\x79\x6F\x75\x74","\x68\x6F\x72\x69\x7A\x6F\x6E\x74\x61\x6C\x46\x6C\x6F\x77","\x65\x78\x65\x63\x75\x74\x65\x4C\x61\x79\x6F\x75\x74","\x76\x65\x72\x74\x69\x63\x61\x6C\x46\x6C\x6F\x77","\x6E\x61\x76\x69\x67\x61\x74\x69\x6F\x6E","\x68\x6F\x6D\x65","\x65\x78\x69\x74\x47\x72\x6F\x75\x70","\x65\x6E\x74\x65\x72\x47\x72\x6F\x75\x70","\x65\x78\x70\x61\x6E\x64","\x63\x6F\x6C\x6C\x61\x70\x73\x65","\x61\x72\x72\x61\x6E\x67\x65","\x74\x6F\x46\x72\x6F\x6E\x74","\x74\x6F\x42\x61\x63\x6B","\x67\x72\x6F\x75\x70","\x75\x6E\x67\x72\x6F\x75\x70","\x72\x65\x6D\x6F\x76\x65\x46\x72\x6F\x6D\x47\x72\x6F\x75\x70","\x76\x69\x65\x77","\x61\x63\x74\x75\x61\x6C\x53\x69\x7A\x65","\x25","\x7A\x6F\x6F\x6D\x54\x6F","\x7A\x6F\x6F\x6D\x49\x6E","\x7A\x6F\x6F\x6D\x4F\x75\x74","\x66\x69\x74\x57\x69\x6E\x64\x6F\x77","\x63\x75\x73\x74\x6F\x6D\x5A\x6F\x6F\x6D","\x66\x69\x74\x50\x61\x67\x65","\x66\x69\x74\x50\x61\x67\x65\x57\x69\x64\x74\x68","\x66\x69\x6C\x65","\x6E\x65\x77","\x6F\x70\x65\x6E","\x73\x61\x76\x65","\x73\x61\x76\x65\x41\x73","\x70\x75\x62\x6C\x69\x73\x68","\x76\x61\x72\x69\x61\x62\x6C\x65","\x69\x6D\x70\x6F\x72\x74","\x65\x78\x70\x6F\x72\x74","\x65\x64\x69\x74\x46\x69\x6C\x65","\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E","\x70\x72\x69\x6E\x74","\x65\x64\x69\x74","\x75\x6E\x64\x6F","\x72\x65\x64\x6F","\x63\x75\x74","\x63\x6F\x70\x79","\x70\x61\x73\x74\x65","\x64\x65\x6C\x65\x74\x65","\x64\x75\x70\x6C\x69\x63\x61\x74\x65","\x73\x65\x6C\x65\x63\x74\x56\x65\x72\x74\x69\x63\x65\x73","\x73\x65\x6C\x65\x63\x74\x45\x64\x67\x65\x73","\x73\x65\x6C\x65\x63\x74\x41\x6C\x6C","\x68\x65\x6C\x70","\x61\x62\x6F\x75\x74","\x61\x64\x64\x4D\x65\x6E\x75","\x65\x78\x65\x63\x75\x74\x65","\x62\x65\x67\x69\x6E\x55\x70\x64\x61\x74\x65","\x67\x65\x74\x4D\x6F\x64\x65\x6C","\x73\x65\x74\x43\x65\x6C\x6C\x53\x74\x79\x6C\x65\x73","\x65\x6E\x64\x55\x70\x64\x61\x74\x65","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C","\x67\x65\x74\x53\x74\x61\x74\x65","\x67\x65\x74\x56\x69\x65\x77","\x65\x6E\x74\x65\x72\x56\x61\x6C\x75\x65","\x20","\x70\x72\x6F\x6D\x70\x74","\x6C\x61\x62\x65\x6C","\x66\x75\x6E\x63\x74","\x74\x6F\x67\x67\x6C\x65\x41\x63\x74\x69\x6F\x6E","\x69\x73\x53\x65\x6C\x65\x63\x74\x65\x64","\x61\x64\x64\x43\x68\x65\x63\x6B\x6D\x61\x72\x6B","\x61\x64\x64\x53\x68\x6F\x72\x74\x63\x75\x74","\x73\x68\x6F\x72\x74\x63\x75\x74","\x73\x70\x61\x6E","\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74","\x63\x6F\x6C\x6F\x72","\x67\x72\x61\x79","\x77\x72\x69\x74\x65","\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x49\x6D\x61\x67\x65","\x75\x72\x6C\x28","\x2F\x63\x68\x65\x63\x6B\x6D\x61\x72\x6B\x2E\x67\x69\x66\x29","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x52\x65\x70\x65\x61\x74","\x6E\x6F\x2D\x72\x65\x70\x65\x61\x74","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x50\x6F\x73\x69\x74\x69\x6F\x6E","\x32\x70\x78\x20\x35\x30\x25","\x63\x72\x65\x61\x74\x65\x50\x6F\x70\x75\x70\x4D\x65\x6E\x75","\x73\x6D\x61\x72\x74\x53\x65\x70\x61\x72\x61\x74\x6F\x72\x73","\x69\x73\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x45\x6D\x70\x74\x79","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x6F\x75\x6E\x74","\x69\x73\x45\x64\x67\x65","\x73\x65\x74\x41\x73\x44\x65\x66\x61\x75\x6C\x74\x45\x64\x67\x65","\x67\x65\x74\x48\x61\x6E\x64\x6C\x65\x72","\x73\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C\x73\x48\x61\x6E\x64\x6C\x65\x72","\x62\x65\x6E\x64\x73","\x67\x65\x74\x48\x61\x6E\x64\x6C\x65\x46\x6F\x72\x45\x76\x65\x6E\x74","\x72\x65\x6D\x6F\x76\x65\x57\x61\x79\x70\x6F\x69\x6E\x74","\x68\x61\x6E\x64\x6C\x65\x72","\x69\x6E\x64\x65\x78","\x61\x64\x64\x57\x61\x79\x70\x6F\x69\x6E\x74","\x67\x65\x74\x4C\x69\x6E\x6B\x46\x6F\x72\x43\x65\x6C\x6C","\x6F\x70\x65\x6E\x4C\x69\x6E\x6B","\x63\x72\x65\x61\x74\x65\x4D\x65\x6E\x75\x62\x61\x72","\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x68\x69\x64\x65\x4D\x65\x6E\x75","\x61\x64\x64\x47\x65\x73\x74\x75\x72\x65\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x63\x75\x72\x72\x65\x6E\x74\x4D\x65\x6E\x75","\x61","\x68\x72\x65\x66","\x6A\x61\x76\x61\x73\x63\x72\x69\x70\x74\x3A\x76\x6F\x69\x64\x28\x30\x29\x3B","\x73\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x63\x6C\x61\x73\x73\x4E\x61\x6D\x65","\x67\x65\x49\x74\x65\x6D","\x61\x64\x64\x4D\x65\x6E\x75\x48\x61\x6E\x64\x6C\x65\x72","\x70\x61\x6E\x6E\x69\x6E\x67\x48\x61\x6E\x64\x6C\x65\x72","\x64\x69\x76","\x20\x67\x65\x4D\x65\x6E\x75\x62\x61\x72\x4D\x65\x6E\x75","\x61\x75\x74\x6F\x45\x78\x70\x61\x6E\x64","\x61\x70\x70\x6C\x79","\x64\x65\x73\x74\x72\x6F\x79","\x63\x75\x72\x72\x65\x6E\x74\x45\x6C\x74","\x6F\x66\x66\x73\x65\x74\x4C\x65\x66\x74","\x6F\x66\x66\x73\x65\x74\x57\x69\x64\x74\x68","\x70\x61\x67\x65\x2D\x73\x69\x64\x65\x62\x61\x72","\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x42\x79\x49\x64","\x6F\x66\x66\x73\x65\x74\x54\x6F\x70","\x6F\x66\x66\x73\x65\x74\x48\x65\x69\x67\x68\x74","\x70\x6F\x70\x75\x70","\x63\x6F\x6E\x73\x75\x6D\x65","\x6D\x6F\x75\x73\x65\x6D\x6F\x76\x65","\x61\x64\x64\x4C\x69\x73\x74\x65\x6E\x65\x72","\x6D\x6F\x75\x73\x65\x64\x6F\x77\x6E","\x63\x6C\x69\x63\x6B","\x63\x61\x6C\x6C","\x65\x78\x74\x65\x6E\x64","\x73\x65\x74\x45\x6E\x61\x62\x6C\x65\x64","\x73\x74\x61\x74\x65\x43\x68\x61\x6E\x67\x65\x64","\x66\x69\x72\x65\x45\x76\x65\x6E\x74"];Menus= function(_0x5ad8x1){this[_0x6f9d[0]]= _0x5ad8x1;this[_0x6f9d[1]]= new Object();this[_0x6f9d[2]](); new Image()[_0x6f9d[3]]= IMAGE_PATH+ _0x6f9d[4]};Menus[_0x6f9d[5]][_0x6f9d[2]]= function(){var _0x5ad8x2=this[_0x6f9d[0]][_0x6f9d[7]][_0x6f9d[6]];this[_0x6f9d[30]](_0x6f9d[8], new Menu(mxUtils[_0x6f9d[29]](this,function(_0x5ad8x3,_0x5ad8x4){var _0x5ad8x5=[_0x6f9d[9],_0x6f9d[10],_0x6f9d[11],_0x6f9d[12],_0x6f9d[13],_0x6f9d[14],_0x6f9d[15],_0x6f9d[16],_0x6f9d[17]];for(var _0x5ad8x6=0;_0x5ad8x6< _0x5ad8x5[_0x6f9d[18]];_0x5ad8x6++){var _0x5ad8x7=this[_0x6f9d[20]](_0x5ad8x3,_0x5ad8x5[_0x5ad8x6],[mxConstants[_0x6f9d[19]]],[_0x5ad8x5[_0x5ad8x6]],null,_0x5ad8x4);_0x5ad8x7[_0x6f9d[23]][_0x6f9d[22]][_0x6f9d[21]][_0x6f9d[8]]= _0x5ad8x5[_0x5ad8x6]};_0x5ad8x3[_0x6f9d[24]](_0x5ad8x4);this[_0x6f9d[28]](_0x5ad8x3,mxResources[_0x6f9d[26]](_0x6f9d[25]),_0x6f9d[27],mxConstants.DEFAULT_FONTFAMILY,mxConstants.STYLE_FONTFAMILY,_0x5ad8x4)})));this[_0x6f9d[30]](_0x6f9d[31], new Menu(mxUtils[_0x6f9d[29]](this,function(_0x5ad8x3,_0x5ad8x4){var _0x5ad8x8=[6,8,9,10,11,12,14,18,24,36,48,72];for(var _0x5ad8x6=0;_0x5ad8x6< _0x5ad8x8[_0x6f9d[18]];_0x5ad8x6++){this[_0x6f9d[20]](_0x5ad8x3,_0x5ad8x8[_0x5ad8x6],[mxConstants[_0x6f9d[32]]],[_0x5ad8x8[_0x5ad8x6]],null,_0x5ad8x4)};_0x5ad8x3[_0x6f9d[24]](_0x5ad8x4);this[_0x6f9d[28]](_0x5ad8x3,mxResources[_0x6f9d[26]](_0x6f9d[25]),_0x6f9d[33],_0x6f9d[34],mxConstants.STYLE_FONTSIZE,_0x5ad8x4)})));this[_0x6f9d[30]](_0x6f9d[35], new Menu(mxUtils[_0x6f9d[29]](this,function(_0x5ad8x3,_0x5ad8x4){var _0x5ad8x8=[1,2,3,4,8,12,16,24];for(var _0x5ad8x6=0;_0x5ad8x6< _0x5ad8x8[_0x6f9d[18]];_0x5ad8x6++){this[_0x6f9d[20]](_0x5ad8x3,_0x5ad8x8[_0x5ad8x6]+ _0x6f9d[36],[mxConstants[_0x6f9d[37]]],[_0x5ad8x8[_0x5ad8x6]],null,_0x5ad8x4)};_0x5ad8x3[_0x6f9d[24]](_0x5ad8x4);this[_0x6f9d[28]](_0x5ad8x3,mxResources[_0x6f9d[26]](_0x6f9d[25]),_0x6f9d[38],_0x6f9d[39],mxConstants.STYLE_STROKEWIDTH,_0x5ad8x4)})));this[_0x6f9d[30]](_0x6f9d[40], new Menu(mxUtils[_0x6f9d[29]](this,function(_0x5ad8x3,_0x5ad8x4){this[_0x6f9d[20]](_0x5ad8x3,mxResources[_0x6f9d[26]](_0x6f9d[41]),[mxConstants[_0x6f9d[42]]],[null],null,_0x5ad8x4);this[_0x6f9d[20]](_0x5ad8x3,mxResources[_0x6f9d[26]](_0x6f9d[43]),[mxConstants[_0x6f9d[42]]],[_0x6f9d[44]],null,_0x5ad8x4);_0x5ad8x3[_0x6f9d[24]](_0x5ad8x4);this[_0x6f9d[20]](_0x5ad8x3,mxResources[_0x6f9d[26]](_0x6f9d[45]),[mxConstants[_0x6f9d[42]],mxConstants[_0x6f9d[46]]],[_0x6f9d[47],_0x6f9d[45]],null,_0x5ad8x4);this[_0x6f9d[20]](_0x5ad8x3,mxResources[_0x6f9d[26]](_0x6f9d[48]),[mxConstants[_0x6f9d[42]],mxConstants[_0x6f9d[46]]],[_0x6f9d[47],_0x6f9d[48]],null,_0x5ad8x4);_0x5ad8x3[_0x6f9d[24]](_0x5ad8x4);this[_0x6f9d[20]](_0x5ad8x3,mxResources[_0x6f9d[26]](_0x6f9d[49]),[mxConstants[_0x6f9d[42]]],[_0x6f9d[50]],null,_0x5ad8x4);this[_0x6f9d[20]](_0x5ad8x3,mxResources[_0x6f9d[26]](_0x6f9d[51]),[mxConstants[_0x6f9d[42]]],[_0x6f9d[52]],null,_0x5ad8x4)})));this[_0x6f9d[30]](_0x6f9d[53], new Menu(mxUtils[_0x6f9d[29]](this,function(_0x5ad8x3,_0x5ad8x4){this[_0x6f9d[20]](_0x5ad8x3,mxResources[_0x6f9d[26]](_0x6f9d[54]),[mxConstants[_0x6f9d[55]]],[mxConstants[_0x6f9d[56]]],null,_0x5ad8x4);this[_0x6f9d[20]](_0x5ad8x3,mxResources[_0x6f9d[26]](_0x6f9d[57]),[mxConstants[_0x6f9d[55]]],[mxConstants[_0x6f9d[58]]],null,_0x5ad8x4);this[_0x6f9d[20]](_0x5ad8x3,mxResources[_0x6f9d[26]](_0x6f9d[59]),[mxConstants[_0x6f9d[55]]],[mxConstants[_0x6f9d[60]]],null,_0x5ad8x4);_0x5ad8x3[_0x6f9d[24]](_0x5ad8x4);this[_0x6f9d[20]](_0x5ad8x3,mxResources[_0x6f9d[26]](_0x6f9d[61]),[mxConstants[_0x6f9d[55]]],[mxConstants[_0x6f9d[62]]],null,_0x5ad8x4);this[_0x6f9d[20]](_0x5ad8x3,mxResources[_0x6f9d[26]](_0x6f9d[63]),[mxConstants[_0x6f9d[55]]],[mxConstants[_0x6f9d[64]]],null,_0x5ad8x4);this[_0x6f9d[20]](_0x5ad8x3,mxResources[_0x6f9d[26]](_0x6f9d[65]),[mxConstants[_0x6f9d[55]]],[mxConstants[_0x6f9d[66]]],null,_0x5ad8x4);_0x5ad8x3[_0x6f9d[24]](_0x5ad8x4);this[_0x6f9d[20]](_0x5ad8x3,mxResources[_0x6f9d[26]](_0x6f9d[67]),[mxConstants[_0x6f9d[55]]],[mxConstants[_0x6f9d[68]]],null,_0x5ad8x4);_0x5ad8x3[_0x6f9d[24]](_0x5ad8x4);_0x5ad8x3[_0x6f9d[72]](mxResources[_0x6f9d[26]](_0x6f9d[69]),null,function(){_0x5ad8x2[_0x6f9d[71]](_0x6f9d[70],true)},_0x5ad8x4,null,true);_0x5ad8x3[_0x6f9d[24]](_0x5ad8x4);this[_0x6f9d[28]](_0x5ad8x3,mxResources[_0x6f9d[26]](_0x6f9d[73]),_0x6f9d[38],mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_ENDSIZE,_0x5ad8x4)})));this[_0x6f9d[30]](_0x6f9d[74], new Menu(mxUtils[_0x6f9d[29]](this,function(_0x5ad8x3,_0x5ad8x4){this[_0x6f9d[20]](_0x5ad8x3,mxResources[_0x6f9d[26]](_0x6f9d[54]),[mxConstants[_0x6f9d[75]]],[mxConstants[_0x6f9d[56]]],null,_0x5ad8x4);this[_0x6f9d[20]](_0x5ad8x3,mxResources[_0x6f9d[26]](_0x6f9d[57]),[mxConstants[_0x6f9d[75]]],[mxConstants[_0x6f9d[58]]],null,_0x5ad8x4);this[_0x6f9d[20]](_0x5ad8x3,mxResources[_0x6f9d[26]](_0x6f9d[59]),[mxConstants[_0x6f9d[75]]],[mxConstants[_0x6f9d[60]]],null,_0x5ad8x4);_0x5ad8x3[_0x6f9d[24]](_0x5ad8x4);this[_0x6f9d[20]](_0x5ad8x3,mxResources[_0x6f9d[26]](_0x6f9d[61]),[mxConstants[_0x6f9d[75]]],[mxConstants[_0x6f9d[62]]],null,_0x5ad8x4);this[_0x6f9d[20]](_0x5ad8x3,mxResources[_0x6f9d[26]](_0x6f9d[63]),[mxConstants[_0x6f9d[75]]],[mxConstants[_0x6f9d[64]]],null,_0x5ad8x4);this[_0x6f9d[20]](_0x5ad8x3,mxResources[_0x6f9d[26]](_0x6f9d[65]),[mxConstants[_0x6f9d[75]]],[mxConstants[_0x6f9d[66]]],null,_0x5ad8x4);_0x5ad8x3[_0x6f9d[24]](_0x5ad8x4);this[_0x6f9d[20]](_0x5ad8x3,mxResources[_0x6f9d[26]](_0x6f9d[67]),[mxConstants[_0x6f9d[75]]],[mxConstants[_0x6f9d[68]]],null,_0x5ad8x4);_0x5ad8x3[_0x6f9d[24]](_0x5ad8x4);_0x5ad8x3[_0x6f9d[72]](mxResources[_0x6f9d[26]](_0x6f9d[69]),null,function(){_0x5ad8x2[_0x6f9d[71]](_0x6f9d[76],true)},_0x5ad8x4,null,true);_0x5ad8x3[_0x6f9d[24]](_0x5ad8x4);this[_0x6f9d[28]](_0x5ad8x3,mxResources[_0x6f9d[26]](_0x6f9d[73]),_0x6f9d[38],mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_STARTSIZE,_0x5ad8x4)})));this[_0x6f9d[30]](_0x6f9d[77], new Menu(mxUtils[_0x6f9d[29]](this,function(_0x5ad8x3,_0x5ad8x4){var _0x5ad8x9=this[_0x6f9d[0]][_0x6f9d[80]][_0x6f9d[26]](_0x6f9d[79])[_0x6f9d[78]];var _0x5ad8xa=this[_0x6f9d[26]](_0x6f9d[40])[_0x6f9d[78]];if(_0x5ad8x9|| _0x5ad8x3[_0x6f9d[81]]){this[_0x6f9d[28]](_0x5ad8x3,mxResources[_0x6f9d[26]](_0x6f9d[82]),_0x6f9d[38],_0x6f9d[83],mxConstants.STYLE_SPACING_TOP,_0x5ad8x4,_0x5ad8x9);this[_0x6f9d[28]](_0x5ad8x3,mxResources[_0x6f9d[26]](_0x6f9d[84]),_0x6f9d[38],_0x6f9d[83],mxConstants.STYLE_SPACING_RIGHT,_0x5ad8x4,_0x5ad8x9);this[_0x6f9d[28]](_0x5ad8x3,mxResources[_0x6f9d[26]](_0x6f9d[85]),_0x6f9d[38],_0x6f9d[83],mxConstants.STYLE_SPACING_BOTTOM,_0x5ad8x4,_0x5ad8x9);this[_0x6f9d[28]](_0x5ad8x3,mxResources[_0x6f9d[26]](_0x6f9d[86]),_0x6f9d[38],_0x6f9d[83],mxConstants.STYLE_SPACING_LEFT,_0x5ad8x4,_0x5ad8x9);_0x5ad8x3[_0x6f9d[24]](_0x5ad8x4);this[_0x6f9d[28]](_0x5ad8x3,mxResources[_0x6f9d[26]](_0x6f9d[87]),_0x6f9d[38],_0x6f9d[83],mxConstants.STYLE_SPACING,_0x5ad8x4,_0x5ad8x9);this[_0x6f9d[28]](_0x5ad8x3,mxResources[_0x6f9d[26]](_0x6f9d[88]),_0x6f9d[38],_0x6f9d[83],mxConstants.STYLE_PERIMETER_SPACING,_0x5ad8x4,_0x5ad8x9)};if(_0x5ad8xa|| _0x5ad8x3[_0x6f9d[81]]){_0x5ad8x3[_0x6f9d[24]](_0x5ad8x4);this[_0x6f9d[28]](_0x5ad8x3,mxResources[_0x6f9d[26]](_0x6f9d[89]),_0x6f9d[38],_0x6f9d[83],mxConstants.STYLE_SOURCE_PERIMETER_SPACING,_0x5ad8x4,_0x5ad8xa);this[_0x6f9d[28]](_0x5ad8x3,mxResources[_0x6f9d[26]](_0x6f9d[90]),_0x6f9d[38],_0x6f9d[83],mxConstants.STYLE_TARGET_PERIMETER_SPACING,_0x5ad8x4,_0x5ad8xa)}})));this[_0x6f9d[30]](_0x6f9d[91], new Menu(mxUtils[_0x6f9d[29]](this,function(_0x5ad8x3,_0x5ad8x4){this[_0x6f9d[92]](_0x5ad8x3,_0x6f9d[21],_0x5ad8x4)})));this[_0x6f9d[30]](_0x6f9d[93], new Menu(mxUtils[_0x6f9d[29]](this,function(_0x5ad8x3,_0x5ad8x4){var _0x5ad8xb=this[_0x6f9d[26]](_0x6f9d[93])[_0x6f9d[78]];_0x5ad8x3[_0x6f9d[24]](_0x5ad8x4);this[_0x6f9d[94]](_0x6f9d[8],_0x5ad8x3,_0x5ad8x4);this[_0x6f9d[94]](_0x6f9d[31],_0x5ad8x3,_0x5ad8x4);this[_0x6f9d[99]](_0x5ad8x3,[_0x6f9d[95],_0x6f9d[96],_0x6f9d[97],_0x6f9d[98],_0x6f9d[95]],_0x5ad8x4);this[_0x6f9d[94]](_0x6f9d[100],_0x5ad8x3,_0x5ad8x4);this[_0x6f9d[92]](_0x5ad8x3,_0x6f9d[101],_0x5ad8x4);_0x5ad8x3[_0x6f9d[24]](_0x5ad8x4);this[_0x6f9d[28]](_0x5ad8x3,mxResources[_0x6f9d[26]](_0x6f9d[102]),_0x6f9d[103],_0x6f9d[104],mxConstants.STYLE_TEXT_OPACITY,_0x5ad8x4,_0x5ad8xb);_0x5ad8x3[_0x6f9d[72]](mxResources[_0x6f9d[26]](_0x6f9d[105]),null,function(){_0x5ad8x2[_0x6f9d[71]](mxConstants.STYLE_NOLABEL,false)},_0x5ad8x4,null,_0x5ad8xb)})));this[_0x6f9d[30]](_0x6f9d[100], new Menu(mxUtils[_0x6f9d[29]](this,function(_0x5ad8x3,_0x5ad8x4){this[_0x6f9d[20]](_0x5ad8x3,mxResources[_0x6f9d[26]](_0x6f9d[106]),[mxConstants[_0x6f9d[107]]],[mxConstants[_0x6f9d[108]]],null,_0x5ad8x4);this[_0x6f9d[20]](_0x5ad8x3,mxResources[_0x6f9d[26]](_0x6f9d[109]),[mxConstants[_0x6f9d[107]]],[mxConstants[_0x6f9d[110]]],null,_0x5ad8x4);this[_0x6f9d[20]](_0x5ad8x3,mxResources[_0x6f9d[26]](_0x6f9d[111]),[mxConstants[_0x6f9d[107]]],[mxConstants[_0x6f9d[112]]],null,_0x5ad8x4);_0x5ad8x3[_0x6f9d[24]](_0x5ad8x4);this[_0x6f9d[20]](_0x5ad8x3,mxResources[_0x6f9d[26]](_0x6f9d[113]),[mxConstants[_0x6f9d[114]]],[mxConstants[_0x6f9d[115]]],null,_0x5ad8x4);this[_0x6f9d[20]](_0x5ad8x3,mxResources[_0x6f9d[26]](_0x6f9d[116]),[mxConstants[_0x6f9d[114]]],[mxConstants[_0x6f9d[117]]],null,_0x5ad8x4);this[_0x6f9d[20]](_0x5ad8x3,mxResources[_0x6f9d[26]](_0x6f9d[118]),[mxConstants[_0x6f9d[114]]],[mxConstants[_0x6f9d[119]]],null,_0x5ad8x4);_0x5ad8x3[_0x6f9d[24]](_0x5ad8x4);this[_0x6f9d[94]](_0x6f9d[120],_0x5ad8x3,_0x5ad8x4);this[_0x6f9d[94]](_0x6f9d[77],_0x5ad8x3,_0x5ad8x4);_0x5ad8x3[_0x6f9d[24]](_0x5ad8x4);var _0x5ad8xb=this[_0x6f9d[26]](_0x6f9d[93])[_0x6f9d[78]];_0x5ad8x3[_0x6f9d[72]](mxResources[_0x6f9d[26]](_0x6f9d[48]),null,function(){_0x5ad8x2[_0x6f9d[71]](mxConstants.STYLE_HORIZONTAL,true)},_0x5ad8x4,null,_0x5ad8xb)})));this[_0x6f9d[30]](_0x6f9d[120], new Menu(mxUtils[_0x6f9d[29]](this,function(_0x5ad8x3,_0x5ad8x4){this[_0x6f9d[20]](_0x5ad8x3,mxResources[_0x6f9d[26]](_0x6f9d[86]),[mxConstants[_0x6f9d[121]],mxConstants[_0x6f9d[107]]],[mxConstants[_0x6f9d[108]],mxConstants[_0x6f9d[112]]],null,_0x5ad8x4);this[_0x6f9d[20]](_0x5ad8x3,mxResources[_0x6f9d[26]](_0x6f9d[109]),[mxConstants[_0x6f9d[121]],mxConstants[_0x6f9d[107]]],[mxConstants[_0x6f9d[110]],mxConstants[_0x6f9d[110]]],null,_0x5ad8x4);this[_0x6f9d[20]](_0x5ad8x3,mxResources[_0x6f9d[26]](_0x6f9d[84]),[mxConstants[_0x6f9d[121]],mxConstants[_0x6f9d[107]]],[mxConstants[_0x6f9d[112]],mxConstants[_0x6f9d[108]]],null,_0x5ad8x4);_0x5ad8x3[_0x6f9d[24]](_0x5ad8x4);this[_0x6f9d[20]](_0x5ad8x3,mxResources[_0x6f9d[26]](_0x6f9d[82]),[mxConstants[_0x6f9d[122]],mxConstants[_0x6f9d[114]]],[mxConstants[_0x6f9d[115]],mxConstants[_0x6f9d[119]]],null,_0x5ad8x4);this[_0x6f9d[20]](_0x5ad8x3,mxResources[_0x6f9d[26]](_0x6f9d[116]),[mxConstants[_0x6f9d[122]],mxConstants[_0x6f9d[114]]],[mxConstants[_0x6f9d[117]],mxConstants[_0x6f9d[117]]],null,_0x5ad8x4);this[_0x6f9d[20]](_0x5ad8x3,mxResources[_0x6f9d[26]](_0x6f9d[85]),[mxConstants[_0x6f9d[122]],mxConstants[_0x6f9d[114]]],[mxConstants[_0x6f9d[119]],mxConstants[_0x6f9d[115]]],null,_0x5ad8x4)})));this[_0x6f9d[30]](_0x6f9d[123], new Menu(mxUtils[_0x6f9d[29]](this,function(_0x5ad8x3,_0x5ad8x4){_0x5ad8x3[_0x6f9d[72]](mxResources[_0x6f9d[26]](_0x6f9d[124]),null,function(){_0x5ad8x2[_0x6f9d[71]](mxConstants.STYLE_FLIPH,false)},_0x5ad8x4);_0x5ad8x3[_0x6f9d[72]](mxResources[_0x6f9d[26]](_0x6f9d[125]),null,function(){_0x5ad8x2[_0x6f9d[71]](mxConstants.STYLE_FLIPV,false)},_0x5ad8x4);this[_0x6f9d[99]](_0x5ad8x3,[_0x6f9d[95],_0x6f9d[126],_0x6f9d[127]],_0x5ad8x4)})));this[_0x6f9d[30]](_0x6f9d[128], new Menu(mxUtils[_0x6f9d[29]](this,function(_0x5ad8x3,_0x5ad8x4){_0x5ad8x3[_0x6f9d[72]](mxResources[_0x6f9d[26]](_0x6f9d[106]),null,function(){_0x5ad8x2[_0x6f9d[129]](mxConstants.ALIGN_LEFT)},_0x5ad8x4);_0x5ad8x3[_0x6f9d[72]](mxResources[_0x6f9d[26]](_0x6f9d[109]),null,function(){_0x5ad8x2[_0x6f9d[129]](mxConstants.ALIGN_CENTER)},_0x5ad8x4);_0x5ad8x3[_0x6f9d[72]](mxResources[_0x6f9d[26]](_0x6f9d[111]),null,function(){_0x5ad8x2[_0x6f9d[129]](mxConstants.ALIGN_RIGHT)},_0x5ad8x4);_0x5ad8x3[_0x6f9d[24]](_0x5ad8x4);_0x5ad8x3[_0x6f9d[72]](mxResources[_0x6f9d[26]](_0x6f9d[113]),null,function(){_0x5ad8x2[_0x6f9d[129]](mxConstants.ALIGN_TOP)},_0x5ad8x4);_0x5ad8x3[_0x6f9d[72]](mxResources[_0x6f9d[26]](_0x6f9d[116]),null,function(){_0x5ad8x2[_0x6f9d[129]](mxConstants.ALIGN_MIDDLE)},_0x5ad8x4);_0x5ad8x3[_0x6f9d[72]](mxResources[_0x6f9d[26]](_0x6f9d[118]),null,function(){_0x5ad8x2[_0x6f9d[129]](mxConstants.ALIGN_BOTTOM)},_0x5ad8x4)})));this[_0x6f9d[30]](_0x6f9d[130], new Menu(mxUtils[_0x6f9d[29]](this,function(_0x5ad8x3,_0x5ad8x4){_0x5ad8x3[_0x6f9d[72]](mxResources[_0x6f9d[26]](_0x6f9d[131]),null,mxUtils[_0x6f9d[29]](this,function(){var _0x5ad8xc= new mxHierarchicalLayout(_0x5ad8x2,mxConstants.DIRECTION_WEST);this[_0x6f9d[0]][_0x6f9d[132]](_0x5ad8xc,true,true)}),_0x5ad8x4);_0x5ad8x3[_0x6f9d[72]](mxResources[_0x6f9d[26]](_0x6f9d[133]),null,mxUtils[_0x6f9d[29]](this,function(){var _0x5ad8xc= new mxHierarchicalLayout(_0x5ad8x2,mxConstants.DIRECTION_NORTH);this[_0x6f9d[0]][_0x6f9d[132]](_0x5ad8xc,true,true)}),_0x5ad8x4)})));this[_0x6f9d[30]](_0x6f9d[134], new Menu(mxUtils[_0x6f9d[29]](this,function(_0x5ad8x3,_0x5ad8x4){this[_0x6f9d[99]](_0x5ad8x3,[_0x6f9d[135],_0x6f9d[95],_0x6f9d[136],_0x6f9d[137],_0x6f9d[95],_0x6f9d[138],_0x6f9d[139]],_0x5ad8x4)})));this[_0x6f9d[30]](_0x6f9d[140], new Menu(mxUtils[_0x6f9d[29]](this,function(_0x5ad8x3,_0x5ad8x4){this[_0x6f9d[99]](_0x5ad8x3,[_0x6f9d[141],_0x6f9d[142],_0x6f9d[95]],_0x5ad8x4);this[_0x6f9d[94]](_0x6f9d[130],_0x5ad8x3,_0x5ad8x4);_0x5ad8x3[_0x6f9d[24]](_0x5ad8x4);this[_0x6f9d[99]](_0x5ad8x3,[_0x6f9d[95],_0x6f9d[143],_0x6f9d[144],_0x6f9d[145]],_0x5ad8x4)})));this[_0x6f9d[30]](_0x6f9d[146], new Menu(mxUtils[_0x6f9d[29]](this,function(_0x5ad8x3,_0x5ad8x4){this[_0x6f9d[99]](_0x5ad8x3,[_0x6f9d[147]],_0x5ad8x4);_0x5ad8x3[_0x6f9d[24]]();var _0x5ad8xd=[0.25,0.5,0.75,1,2,4];for(var _0x5ad8x6=0;_0x5ad8x6< _0x5ad8xd[_0x6f9d[18]];_0x5ad8x6++){(function(_0x5ad8xe){_0x5ad8x3[_0x6f9d[72]]((_0x5ad8xe* 100)+ _0x6f9d[148],null,function(){_0x5ad8x2[_0x6f9d[149]](_0x5ad8xe)},_0x5ad8x4)})(_0x5ad8xd[_0x5ad8x6])};this[_0x6f9d[99]](_0x5ad8x3,[_0x6f9d[95],_0x6f9d[150],_0x6f9d[151],_0x6f9d[95],_0x6f9d[152],_0x6f9d[153],_0x6f9d[95],_0x6f9d[154],_0x6f9d[155]],_0x5ad8x4)})));this[_0x6f9d[30]](_0x6f9d[156], new Menu(mxUtils[_0x6f9d[29]](this,function(_0x5ad8x3,_0x5ad8x4){this[_0x6f9d[99]](_0x5ad8x3,[_0x6f9d[157],_0x6f9d[158],_0x6f9d[95],_0x6f9d[159],_0x6f9d[160],_0x6f9d[161],_0x6f9d[95],_0x6f9d[162],_0x6f9d[95],_0x6f9d[163],_0x6f9d[164],_0x6f9d[95],_0x6f9d[165],_0x6f9d[166],_0x6f9d[95],_0x6f9d[167]],_0x5ad8x4)})));this[_0x6f9d[30]](_0x6f9d[168], new Menu(mxUtils[_0x6f9d[29]](this,function(_0x5ad8x3,_0x5ad8x4){this[_0x6f9d[99]](_0x5ad8x3,[_0x6f9d[169],_0x6f9d[170],_0x6f9d[95],_0x6f9d[171],_0x6f9d[172],_0x6f9d[173],_0x6f9d[174],_0x6f9d[95],_0x6f9d[175],_0x6f9d[95],_0x6f9d[176],_0x6f9d[177],_0x6f9d[178]])})));this[_0x6f9d[30]](_0x6f9d[179], new Menu(mxUtils[_0x6f9d[29]](this,function(_0x5ad8x3,_0x5ad8x4){this[_0x6f9d[99]](_0x5ad8x3,[_0x6f9d[179],_0x6f9d[95],_0x6f9d[180]])})))};Menus[_0x6f9d[5]][_0x6f9d[30]]= function(_0x5ad8xf,_0x5ad8x3){this[_0x6f9d[1]][_0x5ad8xf]= _0x5ad8x3};Menus[_0x6f9d[5]][_0x6f9d[26]]= function(_0x5ad8xf){return this[_0x6f9d[1]][_0x5ad8xf]};Menus[_0x6f9d[5]][_0x6f9d[94]]= function(_0x5ad8xf,_0x5ad8x3,_0x5ad8x4){var _0x5ad8xb=this[_0x6f9d[26]](_0x5ad8xf)[_0x6f9d[78]];if(_0x5ad8x3[_0x6f9d[81]]|| _0x5ad8xb){var _0x5ad8x10=_0x5ad8x3[_0x6f9d[72]](mxResources[_0x6f9d[26]](_0x5ad8xf),null,null,_0x5ad8x4,null,_0x5ad8xb);this[_0x6f9d[181]](_0x5ad8xf,_0x5ad8x3,_0x5ad8x10)}};Menus[_0x6f9d[5]][_0x6f9d[181]]= function(_0x5ad8xf,_0x5ad8x11,_0x5ad8x4){var _0x5ad8x3=this[_0x6f9d[26]](_0x5ad8xf);if(_0x5ad8x3!= null&& (_0x5ad8x11[_0x6f9d[81]]|| _0x5ad8x3[_0x6f9d[78]])){this[_0x6f9d[26]](_0x5ad8xf)[_0x6f9d[182]](_0x5ad8x11,_0x5ad8x4)}};Menus[_0x6f9d[5]][_0x6f9d[20]]= function(_0x5ad8x3,_0x5ad8x12,_0x5ad8x13,_0x5ad8x14,_0x5ad8x15,_0x5ad8x4){return _0x5ad8x3[_0x6f9d[72]](_0x5ad8x12,null,mxUtils[_0x6f9d[29]](this,function(){var _0x5ad8x2=this[_0x6f9d[0]][_0x6f9d[7]][_0x6f9d[6]];_0x5ad8x2[_0x6f9d[184]]()[_0x6f9d[183]]();try{for(var _0x5ad8x6=0;_0x5ad8x6< _0x5ad8x13[_0x6f9d[18]];_0x5ad8x6++){_0x5ad8x2[_0x6f9d[185]](_0x5ad8x13[_0x5ad8x6],_0x5ad8x14[_0x5ad8x6])}}finally{_0x5ad8x2[_0x6f9d[184]]()[_0x6f9d[186]]()}}),_0x5ad8x4,_0x5ad8x15)};Menus[_0x6f9d[5]][_0x6f9d[28]]= function(_0x5ad8x3,_0x5ad8x12,_0x5ad8x16,_0x5ad8x17,_0x5ad8x18,_0x5ad8x4,_0x5ad8xb){return _0x5ad8x3[_0x6f9d[72]](_0x5ad8x12,null,mxUtils[_0x6f9d[29]](this,function(){var _0x5ad8x2=this[_0x6f9d[0]][_0x6f9d[7]][_0x6f9d[6]];var _0x5ad8x19=_0x5ad8x17;var _0x5ad8x1a=_0x5ad8x2[_0x6f9d[189]]()[_0x6f9d[188]](_0x5ad8x2[_0x6f9d[187]]());if(_0x5ad8x1a!= null){_0x5ad8x19= _0x5ad8x1a[_0x6f9d[21]][_0x5ad8x18]|| _0x5ad8x19};_0x5ad8x19= mxUtils[_0x6f9d[192]](mxResources[_0x6f9d[26]](_0x6f9d[190])+ ((_0x5ad8x16[_0x6f9d[18]]> 0)?(_0x6f9d[191]+ _0x5ad8x16):_0x6f9d[27]),_0x5ad8x19);if(_0x5ad8x19!= null&& _0x5ad8x19[_0x6f9d[18]]> 0){_0x5ad8x2[_0x6f9d[185]](_0x5ad8x18,_0x5ad8x19)}}),_0x5ad8x4,null,_0x5ad8xb)};Menus[_0x6f9d[5]][_0x6f9d[92]]= function(_0x5ad8x3,_0x5ad8x18,_0x5ad8x4){var _0x5ad8x1b=this[_0x6f9d[0]][_0x6f9d[80]][_0x6f9d[26]](_0x5ad8x18);if(_0x5ad8x1b!= null&& (_0x5ad8x3[_0x6f9d[81]]|| _0x5ad8x1b[_0x6f9d[78]])){var _0x5ad8x1c=_0x5ad8x3[_0x6f9d[72]](_0x5ad8x1b[_0x6f9d[193]],null,_0x5ad8x1b[_0x6f9d[194]],_0x5ad8x4,null,_0x5ad8x1b[_0x6f9d[78]]);if(_0x5ad8x1b[_0x6f9d[195]]&& _0x5ad8x1b[_0x6f9d[196]]()){this[_0x6f9d[197]](_0x5ad8x1c)};this[_0x6f9d[198]](_0x5ad8x1c,_0x5ad8x1b);return _0x5ad8x1c};return null};Menus[_0x6f9d[5]][_0x6f9d[198]]= function(_0x5ad8x1c,_0x5ad8x1b){if(_0x5ad8x1b[_0x6f9d[199]]!= null){var _0x5ad8x1d=_0x5ad8x1c[_0x6f9d[23]][_0x6f9d[22]][_0x6f9d[22]];var _0x5ad8x1e=document[_0x6f9d[201]](_0x6f9d[200]);_0x5ad8x1e[_0x6f9d[21]][_0x6f9d[202]]= _0x6f9d[203];mxUtils[_0x6f9d[204]](_0x5ad8x1e,_0x5ad8x1b[_0x6f9d[199]]);_0x5ad8x1d[_0x6f9d[205]](_0x5ad8x1e)}};Menus[_0x6f9d[5]][_0x6f9d[197]]= function(_0x5ad8x1c){var _0x5ad8x1d=_0x5ad8x1c[_0x6f9d[23]][_0x6f9d[22]];_0x5ad8x1d[_0x6f9d[21]][_0x6f9d[206]]= _0x6f9d[207]+ IMAGE_PATH+ _0x6f9d[208];_0x5ad8x1d[_0x6f9d[21]][_0x6f9d[209]]= _0x6f9d[210];_0x5ad8x1d[_0x6f9d[21]][_0x6f9d[211]]= _0x6f9d[212]};Menus[_0x6f9d[5]][_0x6f9d[99]]= function(_0x5ad8x3,_0x5ad8x13,_0x5ad8x4){for(var _0x5ad8x6=0;_0x5ad8x6< _0x5ad8x13[_0x6f9d[18]];_0x5ad8x6++){if(_0x5ad8x13[_0x5ad8x6]== _0x6f9d[95]){_0x5ad8x3[_0x6f9d[24]](_0x5ad8x4)}else {this[_0x6f9d[92]](_0x5ad8x3,_0x5ad8x13[_0x5ad8x6],_0x5ad8x4)}}};Menus[_0x6f9d[5]][_0x6f9d[213]]= function(_0x5ad8x3,_0x5ad8x1f,_0x5ad8x20){var _0x5ad8x2=this[_0x6f9d[0]][_0x6f9d[7]][_0x6f9d[6]];_0x5ad8x3[_0x6f9d[214]]= true;if(_0x5ad8x2[_0x6f9d[215]]()){this[_0x6f9d[99]](_0x5ad8x3,[_0x6f9d[169],_0x6f9d[170],_0x6f9d[95],_0x6f9d[173],_0x6f9d[95]])}else {this[_0x6f9d[99]](_0x5ad8x3,[_0x6f9d[174],_0x6f9d[95],_0x6f9d[171],_0x6f9d[172],_0x6f9d[95],_0x6f9d[175]]);if(_0x5ad8x2[_0x6f9d[216]]()== 1&& _0x5ad8x2[_0x6f9d[184]]()[_0x6f9d[217]](_0x5ad8x2[_0x6f9d[187]]())){this[_0x6f9d[99]](_0x5ad8x3,[_0x6f9d[218]])};_0x5ad8x3[_0x6f9d[24]]()};if(_0x5ad8x2[_0x6f9d[216]]()> 0){this[_0x6f9d[99]](_0x5ad8x3,[_0x6f9d[141],_0x6f9d[142],_0x6f9d[95]]);if(_0x5ad8x2[_0x6f9d[184]]()[_0x6f9d[217]](_0x5ad8x2[_0x6f9d[187]]())){var _0x5ad8x21=false;var _0x5ad8x1f=_0x5ad8x2[_0x6f9d[187]]();if(_0x5ad8x1f!= null&& _0x5ad8x2[_0x6f9d[184]]()[_0x6f9d[217]](_0x5ad8x1f)){var _0x5ad8x22=_0x5ad8x2[_0x6f9d[220]][_0x6f9d[219]](_0x5ad8x1f);if(_0x5ad8x22 instanceof mxEdgeHandler&& _0x5ad8x22[_0x6f9d[221]]!= null&& _0x5ad8x22[_0x6f9d[221]][_0x6f9d[18]]> 2){var _0x5ad8x23=_0x5ad8x22[_0x6f9d[222]]( new mxMouseEvent(_0x5ad8x20));var _0x5ad8x24=this[_0x6f9d[0]][_0x6f9d[80]][_0x6f9d[26]](_0x6f9d[223]);_0x5ad8x24[_0x6f9d[224]]= _0x5ad8x22;_0x5ad8x24[_0x6f9d[225]]= _0x5ad8x23;_0x5ad8x21= _0x5ad8x23> 0&& _0x5ad8x23< _0x5ad8x22[_0x6f9d[221]][_0x6f9d[18]]}};this[_0x6f9d[99]](_0x5ad8x3,[_0x6f9d[95],(_0x5ad8x21)?_0x6f9d[223]:_0x6f9d[226]])}else {if(_0x5ad8x2[_0x6f9d[216]]()> 1){_0x5ad8x3[_0x6f9d[24]]();this[_0x6f9d[99]](_0x5ad8x3,[_0x6f9d[143]])}};_0x5ad8x3[_0x6f9d[24]]();if(_0x5ad8x2[_0x6f9d[216]]()== 1){var _0x5ad8x25=_0x5ad8x2[_0x6f9d[227]](_0x5ad8x2[_0x6f9d[187]]());if(_0x5ad8x25!= null){this[_0x6f9d[99]](_0x5ad8x3,[_0x6f9d[228]])}}}else {this[_0x6f9d[99]](_0x5ad8x3,[_0x6f9d[95],_0x6f9d[176],_0x6f9d[177],_0x6f9d[95],_0x6f9d[178]])}};Menus[_0x6f9d[5]][_0x6f9d[229]]= function(_0x5ad8x26){var _0x5ad8x27= new Menubar(this[_0x6f9d[0]],_0x5ad8x26);var _0x5ad8x28=[_0x6f9d[156],_0x6f9d[168],_0x6f9d[146],_0x6f9d[91],_0x6f9d[93],_0x6f9d[140],_0x6f9d[179]];for(var _0x5ad8x6=0;_0x5ad8x6< _0x5ad8x28[_0x6f9d[18]];_0x5ad8x6++){_0x5ad8x27[_0x6f9d[181]](mxResources[_0x6f9d[26]](_0x5ad8x28[_0x5ad8x6]),this[_0x6f9d[26]](_0x5ad8x28[_0x5ad8x6])[_0x6f9d[194]])};return _0x5ad8x27};function Menubar(_0x5ad8x1,_0x5ad8x26){this[_0x6f9d[0]]= _0x5ad8x1;this[_0x6f9d[230]]= _0x5ad8x26;mxEvent[_0x6f9d[232]](document,mxUtils[_0x6f9d[29]](this,function(_0x5ad8x20){this[_0x6f9d[231]]()}))}Menubar[_0x6f9d[5]][_0x6f9d[231]]= function(){if(this[_0x6f9d[233]]!= null){this[_0x6f9d[233]][_0x6f9d[231]]()}};Menubar[_0x6f9d[5]][_0x6f9d[181]]= function(_0x5ad8x12,_0x5ad8x2a){var _0x5ad8x2b=document[_0x6f9d[201]](_0x6f9d[234]);_0x5ad8x2b[_0x6f9d[237]](_0x6f9d[235],_0x6f9d[236]);_0x5ad8x2b[_0x6f9d[238]]= _0x6f9d[239];mxUtils[_0x6f9d[204]](_0x5ad8x2b,_0x5ad8x12);this[_0x6f9d[240]](_0x5ad8x2b,_0x5ad8x2a);this[_0x6f9d[230]][_0x6f9d[205]](_0x5ad8x2b);return _0x5ad8x2b};Menubar[_0x6f9d[5]][_0x6f9d[240]]= function(_0x5ad8x2b,_0x5ad8x2a){if(_0x5ad8x2a!= null){var _0x5ad8x2c=true;var _0x5ad8x2d=mxUtils[_0x6f9d[29]](this,function(_0x5ad8x20){if(_0x5ad8x2c&& _0x5ad8x2b[_0x6f9d[78]]== null|| _0x5ad8x2b[_0x6f9d[78]]){this[_0x6f9d[0]][_0x6f9d[7]][_0x6f9d[6]][_0x6f9d[241]][_0x6f9d[231]]();var _0x5ad8x3= new mxPopupMenu(_0x5ad8x2a);_0x5ad8x3[_0x6f9d[242]][_0x6f9d[238]]+= _0x6f9d[243];_0x5ad8x3[_0x6f9d[214]]= true;_0x5ad8x3[_0x6f9d[81]]= true;_0x5ad8x3[_0x6f9d[244]]= true;_0x5ad8x3[_0x6f9d[231]]= mxUtils[_0x6f9d[29]](this,function(){mxPopupMenu[_0x6f9d[5]][_0x6f9d[231]][_0x6f9d[245]](_0x5ad8x3,arguments);_0x5ad8x3[_0x6f9d[246]]();this[_0x6f9d[233]]= null;this[_0x6f9d[247]]= null});var _0x5ad8x2e=_0x5ad8x2b[_0x6f9d[248]]+ document[_0x6f9d[251]](_0x6f9d[250])[_0x6f9d[249]]+ 22;var _0x5ad8x2f=_0x5ad8x2b[_0x6f9d[252]]+ _0x5ad8x2b[_0x6f9d[253]]+ 140;_0x5ad8x3[_0x6f9d[254]](_0x5ad8x2e,_0x5ad8x2f,null,_0x5ad8x20);this[_0x6f9d[233]]= _0x5ad8x3;this[_0x6f9d[247]]= _0x5ad8x2b};_0x5ad8x2c= true;mxEvent[_0x6f9d[255]](_0x5ad8x20)});mxEvent[_0x6f9d[257]](_0x5ad8x2b,_0x6f9d[256],mxUtils[_0x6f9d[29]](this,function(_0x5ad8x20){if(this[_0x6f9d[233]]!= null&& this[_0x6f9d[247]]!= _0x5ad8x2b){this[_0x6f9d[231]]();_0x5ad8x2d(_0x5ad8x20)}}));mxEvent[_0x6f9d[257]](_0x5ad8x2b,_0x6f9d[258],mxUtils[_0x6f9d[29]](this,function(){_0x5ad8x2c= this[_0x6f9d[247]]!= _0x5ad8x2b}));mxEvent[_0x6f9d[257]](_0x5ad8x2b,_0x6f9d[259],_0x5ad8x2d)}};function Menu(_0x5ad8x2a,_0x5ad8xb){mxEventSource[_0x6f9d[260]](this);this[_0x6f9d[194]]= _0x5ad8x2a;this[_0x6f9d[78]]= (_0x5ad8xb!= null)?_0x5ad8xb:true}mxUtils[_0x6f9d[261]](Menu,mxEventSource);Menu[_0x6f9d[5]][_0x6f9d[262]]= function(_0x5ad8x19){if(this[_0x6f9d[78]]!= _0x5ad8x19){this[_0x6f9d[78]]= _0x5ad8x19;this[_0x6f9d[264]]( new mxEventObject(_0x6f9d[263]))}};Menu[_0x6f9d[5]][_0x6f9d[182]]= function(_0x5ad8x3,_0x5ad8x4){this[_0x6f9d[194]](_0x5ad8x3,_0x5ad8x4)} \ No newline at end of file diff --git a/public/assets/plugins/square/js/Shapes.js b/public/assets/plugins/square/js/Shapes.js index 42e13ca..6f8a715 100644 --- a/public/assets/plugins/square/js/Shapes.js +++ b/public/assets/plugins/square/js/Shapes.js @@ -1,1234 +1 @@ -/** - * $Id: Shapes.js,v 1.13 2013-02-02 06:44:30 gaudenz Exp $ - * Copyright (c) 2006-2012, JGraph Ltd - */ - -/** - * Registers shapes. - */ -(function() -{ - // Cube Shape, supports size style - function CubeShape() { }; - CubeShape.prototype = new mxCylinder(); - CubeShape.prototype.constructor = CubeShape; - CubeShape.prototype.size = 20; - CubeShape.prototype.redrawPath = function(path, x, y, w, h, isForeground) - { - var s = Math.min(w, Math.min(h, mxUtils.getValue(this.style, 'size', this.size))); - - if (isForeground) - { - path.moveTo(s, h); - path.lineTo(s, s); - path.lineTo(0, 0); - path.moveTo(s, s); - path.lineTo(w, s); - path.end(); - } - else - { - path.moveTo(0, 0); - path.lineTo(w - s, 0); - path.lineTo(w, s); - path.lineTo(w, h); - path.lineTo(s, h); - path.lineTo(0, h - s); - path.lineTo(0, 0); - path.close(); - path.end(); - } - }; - - mxCellRenderer.prototype.defaultShapes['cube'] = CubeShape; - - // Note Shape, supports size style - function NoteShape() { }; - NoteShape.prototype = new mxCylinder(); - NoteShape.prototype.constructor = NoteShape; - NoteShape.prototype.size = 30; - NoteShape.prototype.redrawPath = function(path, x, y, w, h, isForeground) - { - var s = Math.min(w, Math.min(h, mxUtils.getValue(this.style, 'size', this.size))); - - if (isForeground) - { - path.moveTo(w - s, 0); - path.lineTo(w - s, s); - path.lineTo(w, s); - path.end(); - } - else - { - path.moveTo(0, 0); - path.lineTo(w - s, 0); - path.lineTo(w, s); - path.lineTo(w, h); - path.lineTo(0, h); - path.lineTo(0, 0); - path.close(); - path.end(); - } - }; - - mxCellRenderer.prototype.defaultShapes['note'] = NoteShape; - - // Folder Shape, supports tabWidth, tabHeight styles - function FolderShape() { }; - FolderShape.prototype = new mxCylinder(); - FolderShape.prototype.constructor = FolderShape; - FolderShape.prototype.tabWidth = 60; - FolderShape.prototype.tabHeight = 20; - FolderShape.prototype.tabPosition = 'right'; - FolderShape.prototype.redrawPath = function(path, x, y, w, h, isForeground) - { - var tw = mxUtils.getValue(this.style, 'tabWidth', this.tabWidth); - var th = mxUtils.getValue(this.style, 'tabHeight', this.tabHeight); - var tp = mxUtils.getValue(this.style, 'tabPosition', this.tabPosition); - var dx = Math.min(w, tw); - var dy = Math.min(h, th); - - if (isForeground) - { - if (tp == 'left') - { - path.moveTo(0, dy); - path.lineTo(dx, dy); - } - // Right is default - else - { - path.moveTo(w - dx, dy); - path.lineTo(w, dy); - } - - path.end(); - } - else - { - if (tp == 'left') - { - path.moveTo(0, 0); - path.lineTo(dx, 0); - path.lineTo(dx, dy); - path.lineTo(w, dy); - } - // Right is default - else - { - path.moveTo(0, dy); - path.lineTo(w - dx, dy); - path.lineTo(w - dx, 0); - path.lineTo(w, 0); - } - - path.lineTo(w, h); - path.lineTo(0, h); - path.lineTo(0, dy); - path.close(); - path.end(); - } - }; - - mxCellRenderer.prototype.defaultShapes['folder'] = FolderShape; - - // Card Shape, supports size style - function CardShape() { }; - CardShape.prototype = new mxCylinder(); - CardShape.prototype.constructor = CardShape; - CardShape.prototype.size = 30; - CardShape.prototype.redrawPath = function(path, x, y, w, h, isForeground) - { - var s = Math.min(w, Math.min(h, mxUtils.getValue(this.style, 'size', this.size))); - - if (!isForeground) - { - path.moveTo(s, 0); - path.lineTo(w, 0); - path.lineTo(w, h); - path.lineTo(0, h); - path.lineTo(0, s); - path.lineTo(s, 0); - path.close(); - path.end(); - } - }; - - mxCellRenderer.prototype.defaultShapes['card'] = CardShape; - - // Tape Shape, supports size style - function TapeShape() { }; - TapeShape.prototype = new mxCylinder(); - TapeShape.prototype.constructor = TapeShape; - TapeShape.prototype.size = 0.4; - TapeShape.prototype.redrawPath = function(path, x, y, w, h, isForeground) - { - var s = mxUtils.getValue(this.style, 'size', this.size); - var dy = h * s; - var fy = 1.4; - - if (!isForeground) - { - path.moveTo(0, dy / 2); - path.quadTo(w / 4, dy * fy, w / 2, dy / 2); - path.quadTo(w * 3 / 4, dy * (1 - fy), w, dy / 2); - path.lineTo(w, h - dy / 2); - path.quadTo(w * 3 / 4, h - dy * fy, w / 2, h - dy / 2); - path.quadTo(w / 4, h - dy * (1 - fy), 0, h - dy / 2); - path.lineTo(0, dy / 2); - path.close(); - path.end(); - } - }; - - mxCellRenderer.prototype.defaultShapes['tape'] = TapeShape; - - // Tape Shape, supports size style - function StepShape() { }; - StepShape.prototype = new mxCylinder(); - StepShape.prototype.constructor = StepShape; - StepShape.prototype.size = 0.2; - StepShape.prototype.redrawPath = function(path, x, y, w, h, isForeground) - { - var s = w * mxUtils.getValue(this.style, 'size', this.size); - - if (!isForeground) - { - path.moveTo(0, 0); - path.lineTo(w - s, 0); - path.lineTo(w, h / 2); - path.lineTo(w - s, h); - path.lineTo(0, h); - path.lineTo(s, h / 2); - path.close(); - path.end(); - } - }; - - mxCellRenderer.prototype.defaultShapes['step'] = StepShape; - - // Plus Shape - function PlusShape() - { - mxRectangleShape.call(this); - }; - mxUtils.extend(PlusShape, mxRectangleShape); - PlusShape.prototype.isHtmlAllowed = function() - { - return false; - }; - PlusShape.prototype.paintForeground = function(c, x, y, w, h) - { - var border = Math.min(w / 5, h / 5) + 1; - - c.begin(); - c.moveTo(x + w / 2, y + border); - c.lineTo(x + w / 2, y + h - border); - c.moveTo(x + border, y + h / 2); - c.lineTo(x + w - border, y + h / 2); - c.end(); - c.stroke(); - mxRectangleShape.prototype.paintForeground.apply(this, arguments); - }; - - mxCellRenderer.prototype.defaultShapes['plus'] = PlusShape; - - // CompositeShape - function ExtendedShape() - { - mxRectangleShape.call(this); - }; - mxUtils.extend(ExtendedShape, mxRectangleShape); - ExtendedShape.prototype.isHtmlAllowed = function() - { - return false; - }; - ExtendedShape.prototype.paintForeground = function(c, x, y, w, h) - { - if (this.style != null) - { - if (this.style['double'] == 1) - { - var inset = Math.max(2, this.strokewidth + 1); - - mxRectangleShape.prototype.paintBackground.call(this, c, x + inset, y + inset, w - 2 * inset, h - 2 * inset); - mxRectangleShape.prototype.paintForeground.apply(this, arguments); - - x += inset; - y += inset; - w -= 2 * inset; - h -= 2 * inset; - } - - c.setDashed(false); - - // Draws the symbols defined in the style. The symbols are - // numbered from 1...n. Possible postfixes are align, - // verticalAlign, spacing, arcSpacing, width, height - var counter = 0; - var shape = null; - - do - { - shape = mxCellRenderer.prototype.defaultShapes[this.style['symbol' + counter]]; - - if (shape != null) - { - var align = this.style['symbol' + counter + 'Align']; - var valign = this.style['symbol' + counter + 'VerticalAlign']; - var width = this.style['symbol' + counter + 'Width']; - var height = this.style['symbol' + counter + 'Height']; - var spacing = this.style['symbol' + counter + 'Spacing'] || 0; - var arcspacing = this.style['symbol' + counter + 'ArcSpacing']; - - if (arcspacing != null) - { - spacing += this.getArcSize(w + this.strokewidth, h + this.strokewidth) * arcspacing; - } - - var x2 = x; - var y2 = y; - - if (align == mxConstants.ALIGN_CENTER) - { - x2 += (w - width) / 2; - } - else if (align == mxConstants.ALIGN_RIGHT) - { - x2 += w - width - spacing; - } - else - { - x2 += spacing; - } - - if (valign == mxConstants.ALIGN_MIDDLE) - { - y2 += (h - height) / 2; - } - else if (valign == mxConstants.ALIGN_BOTTOM) - { - y2 += h - height - spacing; - } - else - { - y2 += spacing; - } - - c.save(); - - // Small hack to pass style along into subshape - var tmp = new shape(); - // TODO: Clone style and override settings (eg. strokewidth) - tmp.style = this.style; - shape.prototype.paintVertexShape.call(tmp, c, x2, y2, width, height); - c.restore(); - } - - counter++; - } - while (shape != null); - } - }; - - mxCellRenderer.prototype.defaultShapes['ext'] = ExtendedShape; - - // Tape Shape, supports size style - function MessageShape() { }; - MessageShape.prototype = new mxCylinder(); - MessageShape.prototype.constructor = MessageShape; - MessageShape.prototype.redrawPath = function(path, x, y, w, h, isForeground) - { - if (isForeground) - { - path.moveTo(0, 0); - path.lineTo(w / 2, h / 2); - path.lineTo(w, 0); - path.end(); - } - else - { - path.moveTo(0, 0); - path.lineTo(w, 0); - path.lineTo(w, h); - path.lineTo(0, h); - path.close(); - } - }; - - mxCellRenderer.prototype.defaultShapes['message'] = MessageShape; - - // New Actor Shape - function UmlActorShape() { }; - UmlActorShape.prototype = new mxCylinder(); - UmlActorShape.prototype.constructor = UmlActorShape; - UmlActorShape.prototype.addPipe = true; - UmlActorShape.prototype.redrawPath = function(path, x, y, w, h, isForeground) - { - var width = w / 3; - var height = h / 4; - - if (!isForeground) - { - path.moveTo(w / 2, height); - path.curveTo(w / 2 - width, height, w / 2 - width, 0, w / 2, 0); - path.curveTo(w / 2 + width, 0, w / 2 + width, height, w / 2, height); - path.close(); - - path.moveTo(w / 2, height); - path.lineTo(w / 2, 2 * h / 3); - - // Arms - path.moveTo(w / 2, h / 3); - path.lineTo(0, h / 3); - path.moveTo(w / 2, h / 3); - path.lineTo(w, h / 3); - - // Legs - path.moveTo(w / 2, 2 * h / 3); - path.lineTo(0, h); - path.moveTo(w / 2, 2 * h / 3); - path.lineTo(w, h); - path.end(); - } - }; - - // Replaces existing actor shape - mxCellRenderer.prototype.defaultShapes['umlActor'] = UmlActorShape; - - // New Actor Shape - function LollipopShape() { }; - LollipopShape.prototype = new mxCylinder(); - LollipopShape.prototype.constructor = LollipopShape; - LollipopShape.prototype.size = 10; - LollipopShape.prototype.addPipe = true; - LollipopShape.prototype.redrawPath = function(path, x, y, w, h, isForeground) - { - var ss = mxUtils.getValue(this.style, 'size', this.size); - var width = ss * 2 / 3; - var height = ss; - - if (!isForeground) - { - path.moveTo(w / 2, height); - path.curveTo(w / 2 - width, height, w / 2 - width, 0, w / 2, 0); - path.curveTo(w / 2 + width, 0, w / 2 + width, height, w / 2, height); - path.close(); - - path.moveTo(w / 2, height); - path.lineTo(w / 2, h); - path.end(); - } - }; - - // Replaces existing actor shape - mxCellRenderer.prototype.defaultShapes['lollipop'] = LollipopShape; - - // Folder Shape, supports tabWidth, tabHeight styles - function ComponentShape() { }; - ComponentShape.prototype = new mxCylinder(); - ComponentShape.prototype.constructor = ComponentShape; - ComponentShape.prototype.jettyWidth = 32; - ComponentShape.prototype.jettyHeight = 12; - ComponentShape.prototype.redrawPath = function(path, x, y, w, h, isForeground) - { - var dx = mxUtils.getValue(this.style, 'jettyWidth', this.jettyWidth); - var dy = mxUtils.getValue(this.style, 'jettyHeight', this.jettyHeight); - var x0 = dx / 2; - var x1 = x0 + dx / 2; - var y0 = 0.3 * h - dy / 2; - var y1 = 0.7 * h - dy / 2; - - if (isForeground) - { - path.moveTo(x0, y0); - path.lineTo(x1, y0); - path.lineTo(x1, y0 + dy); - path.lineTo(x0, y0 + dy); - path.moveTo(x0, y1); - path.lineTo(x1, y1); - path.lineTo(x1, y1 + dy); - path.lineTo(x0, y1 + dy); - path.end(); - } - else - { - path.moveTo(x0, 0); - path.lineTo(w, 0); - path.lineTo(w, h); - path.lineTo(x0, h); - path.lineTo(x0, y1 + dy); - path.lineTo(0, y1 + dy); - path.lineTo(0, y1); - path.lineTo(x0, y1); - path.lineTo(x0, y0 + dy); - path.lineTo(0, y0 + dy); - path.lineTo(0, y0); - path.lineTo(x0, y0); - path.close(); - path.end(); - } - }; - - mxCellRenderer.prototype.defaultShapes['component'] = ComponentShape; - - // State Shapes derives from double ellipse - function StateShape() { }; - StateShape.prototype = new mxDoubleEllipse(); - StateShape.prototype.constructor = StateShape; - StateShape.prototype.outerStroke = true; - StateShape.prototype.paintVertexShape = function(c, x, y, w, h) - { - var inset = Math.min(4, Math.min(w / 5, h / 5)); - - if (w > 0 && h > 0) - { - c.ellipse(x + inset, y + inset, w - 2 * inset, h - 2 * inset); - c.fillAndStroke(); - } - - c.setShadow(false); - - if (this.outerStroke) - { - c.ellipse(x, y, w, h); - c.stroke(); - } - }; - - mxCellRenderer.prototype.defaultShapes['endState'] = StateShape; - - function StartStateShape() { }; - StartStateShape.prototype = new StateShape(); - StartStateShape.prototype.constructor = StartStateShape; - StartStateShape.prototype.outerStroke = false; - - mxCellRenderer.prototype.defaultShapes['startState'] = StartStateShape; - - // Image export for state shapes - var imageExportInitShapes = mxImageExport.prototype.initShapes; - mxImageExport.prototype.initShapes = function() - { - imageExportInitShapes.apply(this, arguments); - - function createStateShape(outerStroke) - { - return { - drawShape: function(canvas, state, bounds, background) - { - var x = bounds.x; - var y = bounds.y; - var w = bounds.width; - var h = bounds.height; - - if (background) - { - var inset = Math.min(4, Math.min(w / 5, h / 5)); - x += inset; - y += inset; - w -= 2 * inset; - h -= 2 * inset; - - if (w > 0 && h > 0) - { - canvas.ellipse(x, y, w, h); - } - - return true; - } - else - { - canvas.fillAndStroke(); - - if (outerStroke) - { - canvas.ellipse(x, y, w, h); - canvas.stroke(); - } - } - } - }; - }; - - this.shapes['endState'] = createStateShape(true); - this.shapes['startState'] = createStateShape(false); - }; - - // Defines custom edge shape - function LinkShape() - { - mxArrow.call(this); - }; - mxUtils.extend(LinkShape, mxArrow); - LinkShape.prototype.paintEdgeShape = function(c, pts) - { - var width = 10; - - // Base vector (between end points) - var p0 = pts[0]; - var pe = pts[pts.length - 1]; - - var dx = pe.x - p0.x; - var dy = pe.y - p0.y; - var dist = Math.sqrt(dx * dx + dy * dy); - var length = dist; - - // Computes the norm and the inverse norm - var nx = dx / dist; - var ny = dy / dist; - var basex = length * nx; - var basey = length * ny; - var floorx = width * ny/3; - var floory = -width * nx/3; - - // Computes points - var p0x = p0.x - floorx / 2; - var p0y = p0.y - floory / 2; - var p1x = p0x + floorx; - var p1y = p0y + floory; - var p2x = p1x + basex; - var p2y = p1y + basey; - var p3x = p2x + floorx; - var p3y = p2y + floory; - // p4 not necessary - var p5x = p3x - 3 * floorx; - var p5y = p3y - 3 * floory; - - c.begin(); - c.moveTo(p1x, p1y); - c.lineTo(p2x, p2y); - c.moveTo(p5x + floorx, p5y + floory); - c.lineTo(p0x, p0y); - c.stroke(); - }; - - // Registers the link shape - mxCellRenderer.prototype.defaultShapes['link'] = LinkShape; - - // Registers and defines the custom marker - mxMarker.addMarker('dash', function(canvas, shape, type, pe, unitX, unitY, size, source, sw, filled) - { - var nx = unitX * (size + sw + 1); - var ny = unitY * (size + sw + 1); - - return function() - { - canvas.begin(); - canvas.moveTo(pe.x - nx / 2 - ny / 2, pe.y - ny / 2 + nx / 2); - canvas.lineTo(pe.x + ny / 2 - 3 * nx / 2, pe.y - 3 * ny / 2 - nx / 2); - canvas.stroke(); - }; - }); - - // Implements custom handlers - var SPECIAL_HANDLE_INDEX = -99; - - // Handlers are only added if mxVertexHandler is defined (ie. not in embedded graph) - if (typeof(mxVertexHandler) != 'undefined') - { - function mxExtVertexHandler(state) - { - mxVertexHandler.call(this, state); - }; - - mxUtils.extend(mxExtVertexHandler, mxVertexHandler); - - mxExtVertexHandler.prototype.useGridForSpecialHandle = false; - - mxExtVertexHandler.prototype.init = function() - { - this.horizontal = mxUtils.getValue(this.state.style, mxConstants.STYLE_HORIZONTAL, true); - var graph = this.state.view.graph; - - if (this.handleImage != null) - { - var bounds = new mxRectangle(0, 0, this.handleImage.width, this.handleImage.height); - this.specialHandle = new mxImageShape(bounds, this.handleImage.src); - } - else - { - var size = 10; - var bounds = new mxRectangle(0, 0, size, size); - this.specialHandle = new mxRhombus(bounds, mxConstants.HANDLE_FILLCOLOR, mxConstants.HANDLE_STROKECOLOR); - } - - this.specialHandle.dialect = (graph.dialect != mxConstants.DIALECT_SVG) ? - mxConstants.DIALECT_VML : mxConstants.DIALECT_SVG; - this.specialHandle.init(graph.getView().getOverlayPane()); - this.specialHandle.node.style.cursor = this.getSpecialHandleCursor(); - - mxEvent.redirectMouseEvents(this.specialHandle.node, graph, this.state); - mxVertexHandler.prototype.init.apply(this, arguments); - }; - - mxExtVertexHandler.prototype.getSpecialHandleCursor = function() - { - return 'default'; - }; - - mxExtVertexHandler.prototype.redraw = function() - { - mxVertexHandler.prototype.redraw.apply(this, arguments); - - var size = this.specialHandle.bounds.width; - this.specialHandle.bounds = this.getSpecialHandleBounds(size); - this.specialHandle.redraw(); - }; - - mxExtVertexHandler.prototype.destroy = function() - { - mxVertexHandler.prototype.destroy.apply(this, arguments); - - if (this.specialHandle != null) - { - this.specialHandle.destroy(); - this.specialHandle = null; - } - }; - - mxExtVertexHandler.prototype.getHandleForEvent = function(me) - { - if (me.isSource(this.specialHandle)) - { - return SPECIAL_HANDLE_INDEX; - } - - return mxVertexHandler.prototype.getHandleForEvent.apply(this, arguments); - }; - - mxExtVertexHandler.prototype.mouseMove = function(sender, me) - { - if (!me.isConsumed() && this.index == SPECIAL_HANDLE_INDEX) - { - var point = new mxPoint(me.getGraphX(), me.getGraphY()); - this.constrainPoint(point); - var gridEnabled = this.graph.isGridEnabledEvent(me.getEvent()); - var scale = this.graph.getView().scale; - - if (gridEnabled && this.useGridForSpecialHandle) - { - point.x = this.graph.snap(point.x / scale) * scale; - point.y = this.graph.snap(point.y / scale) * scale; - } - - this.updateStyle(point); - this.moveSizerTo(this.specialHandle, point.x, point.y); - this.state.view.graph.cellRenderer.redraw(this.state, true); - me.consume(); - } - else - { - mxVertexHandler.prototype.mouseMove.apply(this, arguments); - } - }; - - mxExtVertexHandler.prototype.mouseUp = function(sender, me) - { - if (!me.isConsumed() && this.index == SPECIAL_HANDLE_INDEX) - { - this.applyStyle(); - this.reset(); - me.consume(); - } - else - { - mxVertexHandler.prototype.mouseUp.apply(this, arguments); - } - }; - - mxExtVertexHandler.prototype.getSpecialHandleBounds = function(size) - { - var rotation = this.state.shape.getShapeRotation(); - var alpha = mxUtils.toRadians(rotation); - var cos = Math.cos(alpha); - var sin = Math.sin(alpha); - - var bounds = new mxRectangle(this.state.x, this.state.y, this.state.width, this.state.height); - - if (this.state.shape.isPaintBoundsInverted()) - { - var t = (bounds.width - bounds.height) / 2; - bounds.x += t; - bounds.y -= t; - var tmp = bounds.width; - bounds.width = bounds.height; - bounds.height = tmp; - } - - var pt = this.getSpecialHandlePoint(bounds); - - if (this.state.shape.flipH) - { - pt.x = 2 * bounds.x + bounds.width - pt.x; - } - - if (this.state.shape.flipV) - { - pt.y = 2 * bounds.y + bounds.height - pt.y; - } - - pt = mxUtils.getRotatedPoint(pt, cos, sin, - new mxPoint(this.state.getCenterX(), this.state.getCenterY())); - - return new mxRectangle(pt.x - size / 2, pt.y - size / 2, size, size); - }; - - mxExtVertexHandler.prototype.getSpecialHandlePoint = function(bounds) - { - // Hook for subclassers - return null; - }; - - mxExtVertexHandler.prototype.updateStyle = function(point) - { - // Hook for subclassers - }; - - mxExtVertexHandler.prototype.constrainPoint = function(point) - { - point.x = Math.max(this.state.x, Math.min(this.state.x + this.state.width, point.x)); - point.y = Math.max(this.state.y, Math.min(this.state.y + this.state.height, point.y)); - }; - - mxExtVertexHandler.prototype.applyStyle = function() - { - // Hook for subclassers - }; - - // Folder Handler - function mxFolderHandler(state) - { - mxExtVertexHandler.call(this, state); - }; - - mxUtils.extend(mxFolderHandler, mxExtVertexHandler); - - mxFolderHandler.prototype.getSpecialHandlePoint = function(bounds) - { - var scale = this.graph.getView().scale; - var tw = Math.min(bounds.width, mxUtils.getValue(this.state.style, 'tabWidth', 60) * scale); - var th = Math.min(bounds.height, mxUtils.getValue(this.state.style, 'tabHeight', 20) * scale); - - var tp = mxUtils.getValue(this.state.style, 'tabPosition', 'right'); - var x = (tp == 'left') ? bounds.x + tw : bounds.x + bounds.width - tw; - - return new mxPoint(x, bounds.y + th); - }; - - mxFolderHandler.prototype.updateStyle = function(point) - { - var rotation = this.state.shape.getShapeRotation(); - var alpha = mxUtils.toRadians(rotation); - var cos = Math.cos(-alpha); - var sin = Math.sin(-alpha); - - var bounds = new mxRectangle(this.state.x, this.state.y, this.state.width, this.state.height); - - if (this.state.shape.isPaintBoundsInverted()) - { - var t = (bounds.width - bounds.height) / 2; - bounds.x += t; - bounds.y -= t; - var tmp = bounds.width; - bounds.width = bounds.height; - bounds.height = tmp; - } - - var pt = new mxPoint(point.x, point.y); - pt = mxUtils.getRotatedPoint(pt, cos, sin, - new mxPoint(this.state.getCenterX(), this.state.getCenterY())); - - if (this.state.shape.flipH) - { - pt.x = 2 * bounds.x + bounds.width - pt.x; - } - - if (this.state.shape.flipV) - { - pt.y = 2 * bounds.y + bounds.height - pt.y; - } - - var result = this.updateStyleUnrotated(pt, bounds); - - // Modifies point to use rotated coordinates of return value - if (result != null) - { - if (this.state.shape.flipH) - { - result.x = 2 * bounds.x + bounds.width - result.x; - } - - if (this.state.shape.flipV) - { - result.y = 2 * bounds.y + bounds.height - result.y; - } - - cos = Math.cos(alpha); - sin = Math.sin(alpha); - result = mxUtils.getRotatedPoint(result, cos, sin, - new mxPoint(this.state.getCenterX(), this.state.getCenterY())); - point.x = result.x; - point.y = result.y; - } - }; - - mxFolderHandler.prototype.updateStyleUnrotated = function(pt, bounds) - { - var tp = mxUtils.getValue(this.state.style, 'tabPosition', 'right'); - var tw = (tp == 'left') ? pt.x - bounds.x : bounds.x + bounds.width - pt.x; - var th = pt.y - bounds.y; - - var scale = this.graph.getView().scale; - this.state.style['tabWidth'] = Math.round(Math.max(1, tw) / scale); - this.state.style['tabHeight'] = Math.round(Math.max(1, th) / scale); - }; - - mxFolderHandler.prototype.applyStyle = function() - { - var model = this.graph.getModel(); - model.beginUpdate(); - try - { - this.state.view.graph.setCellStyles('tabWidth', this.state.style['tabWidth'], [this.state.cell]); - this.state.view.graph.setCellStyles('tabHeight', this.state.style['tabHeight'], [this.state.cell]); - } - finally - { - model.endUpdate(); - } - }; - - // Swimlane Handler - function mxSwimlaneHandler(state) - { - mxFolderHandler.call(this, state); - }; - - mxUtils.extend(mxSwimlaneHandler, mxFolderHandler); - - mxSwimlaneHandler.prototype.getSpecialHandlePoint = function(bounds) - { - var scale = this.graph.getView().scale; - var startSize = mxUtils.getValue(this.state.style, mxConstants.STYLE_STARTSIZE, mxConstants.DEFAULT_STARTSIZE); - - return new mxPoint(bounds.x + bounds.width / 2, bounds.y + Math.min(bounds.height, startSize * scale)); - }; - - mxSwimlaneHandler.prototype.updateStyleUnrotated = function(point, bounds) - { - point.x = bounds.x + bounds.width / 2; - startSize = point.y - bounds.y; - var scale = this.graph.getView().scale; - this.state.style['startSize'] = Math.round(Math.max(1, startSize) / scale); - - return point; - }; - - mxSwimlaneHandler.prototype.applyStyle = function() - { - this.state.view.graph.setCellStyles('startSize', this.state.style['startSize'], [this.state.cell]); - }; - - // Cube Handler - function mxCubeHandler(state) - { - mxFolderHandler.call(this, state); - }; - - mxUtils.extend(mxCubeHandler, mxFolderHandler); - - mxCubeHandler.prototype.defaultValue = 20; - - mxCubeHandler.prototype.scaleFactor = 1; - - mxCubeHandler.prototype.getSpecialHandlePoint = function(bounds) - { - var scale = this.graph.getView().scale; - var sz = Math.min(bounds.width, Math.min(bounds.height, - mxUtils.getValue(this.state.style, 'size', this.defaultValue) * scale / this.scaleFactor)); - - return new mxPoint(bounds.x + sz, bounds.y + sz); - }; - - mxCubeHandler.prototype.updateStyleUnrotated = function(pt, bounds) - { - var size = Math.max(0, Math.min(Math.min(bounds.width / this.scaleFactor, pt.x - bounds.x), - Math.min(bounds.height / this.scaleFactor, pt.y - bounds.y))); - var scale = this.graph.getView().scale; - this.state.style['size'] = Math.round(Math.max(1, size) / scale) * this.scaleFactor; - - // Stays on the diagonal - return new mxPoint(bounds.x + size, bounds.y + size); - }; - - mxCubeHandler.prototype.applyStyle = function() - { - this.state.view.graph.setCellStyles('size', this.state.style['size'], [this.state.cell]); - }; - - // Card Handler - function mxCardHandler(state) - { - mxCubeHandler.call(this, state); - }; - - mxUtils.extend(mxCardHandler, mxCubeHandler); - - mxCardHandler.prototype.defaultValue = 30; - - mxCardHandler.prototype.scaleFactor = 2; - - // Note Handler - function mxNoteHandler(state) - { - mxCubeHandler.call(this, state); - }; - - mxUtils.extend(mxNoteHandler, mxCubeHandler); - - mxNoteHandler.prototype.defaultValue = 30; - - mxNoteHandler.prototype.scaleFactor = 1; - - mxNoteHandler.prototype.getSpecialHandlePoint = function(bounds) - { - var scale = this.graph.getView().scale; - var sz = Math.min(bounds.width, Math.min(bounds.height, - mxUtils.getValue(this.state.style, 'size', this.defaultValue) * scale / this.scaleFactor)); - - return new mxPoint(bounds.x + bounds.width - sz, bounds.y + sz); - }; - - mxNoteHandler.prototype.updateStyleUnrotated = function(pt, bounds) - { - var size = Math.max(0, Math.min(Math.min(bounds.width / this.scaleFactor, pt.x - bounds.x + bounds.width), - Math.min(bounds.height / this.scaleFactor, pt.y - bounds.y))); - var scale = this.graph.getView().scale; - this.state.style['size'] = Math.round(Math.max(1, size) / scale) * this.scaleFactor; - - // Stays on the diagonal - return new mxPoint(bounds.x + bounds.width - size, bounds.y + size); - }; - - // Step Handler - function mxStepHandler(state) - { - mxCubeHandler.call(this, state); - }; - - mxUtils.extend(mxStepHandler, mxCubeHandler); - - mxStepHandler.prototype.defaultValue = 0.2; - - mxStepHandler.prototype.scaleFactor = 1; - - mxStepHandler.prototype.getSpecialHandlePoint = function(bounds) - { - var sz = mxUtils.getValue(this.state.style, 'size', this.defaultValue); - - return new mxPoint(bounds.x + bounds.width * sz, bounds.y + bounds.height / 2); - }; - - mxStepHandler.prototype.updateStyleUnrotated = function(pt, bounds) - { - var size = Math.min(1, (pt.x - bounds.x) / bounds.width); - this.state.style['size'] = size; - - return new mxPoint(bounds.x + size * bounds.width, bounds.y + bounds.height / 2); - }; - - // Tape Handler - function mxTapeHandler(state) - { - mxCubeHandler.call(this, state); - }; - - mxUtils.extend(mxTapeHandler, mxCubeHandler); - - mxTapeHandler.prototype.defaultValue = 0.4; - - mxTapeHandler.prototype.scaleFactor = 1; - - mxTapeHandler.prototype.getSpecialHandlePoint = function(bounds) - { - var sz = mxUtils.getValue(this.state.style, 'size', this.defaultValue); - - return new mxPoint(bounds.x + bounds.width / 2, bounds.y + sz * bounds.height / 2); - }; - - mxTapeHandler.prototype.updateStyleUnrotated = function(pt, bounds) - { - var size = Math.max(0, Math.min(1, ((pt.y - bounds.y) / bounds.height) * 2)); - this.state.style['size'] = size; - - return new mxPoint(bounds.x + bounds.width / 2, bounds.y + size * bounds.height / 2); - }; - - var handlers = {'swimlane': mxSwimlaneHandler, 'folder': mxFolderHandler, 'cube': mxCubeHandler, - 'card': mxCardHandler, 'note': mxNoteHandler, 'step': mxStepHandler, 'tape': mxTapeHandler}; - - var mxGraphCreateHandler = mxGraph.prototype.createHandler; - mxGraph.prototype.createHandler = function(state) - { - if (state != null) - { - var ctor = handlers[state.style['shape']]; - - if (ctor != null) - { - return new ctor(state); - } - } - - return mxGraphCreateHandler.apply(this, arguments); - }; - } - - // Constraints - mxGraph.prototype.getAllConnectionConstraints = function(terminal, source) - { - if (terminal != null && terminal.shape != null) - { - if (terminal.shape.stencil != null) - { - if (terminal.shape.stencil != null) - { - return terminal.shape.stencil.constraints; - } - } - else if (terminal.shape.constraints != null) - { - return terminal.shape.constraints; - } - } - - return null; - }; - - mxRectangleShape.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.25, 0), true), - new mxConnectionConstraint(new mxPoint(0.5, 0), true), - new mxConnectionConstraint(new mxPoint(0.75, 0), true), - new mxConnectionConstraint(new mxPoint(0, 0.25), true), - new mxConnectionConstraint(new mxPoint(0, 0.5), true), - new mxConnectionConstraint(new mxPoint(0, 0.75), true), - new mxConnectionConstraint(new mxPoint(1, 0.25), true), - new mxConnectionConstraint(new mxPoint(1, 0.5), true), - new mxConnectionConstraint(new mxPoint(1, 0.75), true), - new mxConnectionConstraint(new mxPoint(0.25, 1), true), - new mxConnectionConstraint(new mxPoint(0.5, 1), true), - new mxConnectionConstraint(new mxPoint(0.75, 1), true)]; - mxLabel.prototype.constraints = mxRectangleShape.prototype.constraints; - mxImageShape.prototype.constraints = mxRectangleShape.prototype.constraints; - mxSwimlane.prototype.constraints = mxRectangleShape.prototype.constraints; - PlusShape.prototype.constraints = mxRectangleShape.prototype.constraints; - NoteShape.prototype.constraints = mxRectangleShape.prototype.constraints; - CardShape.prototype.constraints = mxRectangleShape.prototype.constraints; - CubeShape.prototype.constraints = mxRectangleShape.prototype.constraints; - FolderShape.prototype.constraints = mxRectangleShape.prototype.constraints; - mxCylinder.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.15, 0.05), false), - new mxConnectionConstraint(new mxPoint(0.5, 0), true), - new mxConnectionConstraint(new mxPoint(0.85, 0.05), false), - new mxConnectionConstraint(new mxPoint(0, 0.3), true), - new mxConnectionConstraint(new mxPoint(0, 0.5), true), - new mxConnectionConstraint(new mxPoint(0, 0.7), true), - new mxConnectionConstraint(new mxPoint(1, 0.3), true), - new mxConnectionConstraint(new mxPoint(1, 0.5), true), - new mxConnectionConstraint(new mxPoint(1, 0.7), true), - new mxConnectionConstraint(new mxPoint(0.15, 0.95), false), - new mxConnectionConstraint(new mxPoint(0.5, 1), true), - new mxConnectionConstraint(new mxPoint(0.85, 0.95), false)]; - UmlActorShape.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.25, 0.1), false), - new mxConnectionConstraint(new mxPoint(0.5, 0), false), - new mxConnectionConstraint(new mxPoint(0.75, 0.1), false), - new mxConnectionConstraint(new mxPoint(0, 1/3), false), - new mxConnectionConstraint(new mxPoint(0, 1), false), - new mxConnectionConstraint(new mxPoint(1, 1/3), false), - new mxConnectionConstraint(new mxPoint(1, 1), false), - new mxConnectionConstraint(new mxPoint(0.5, 0.5), false)]; - ComponentShape.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.25, 0), true), - new mxConnectionConstraint(new mxPoint(0.5, 0), true), - new mxConnectionConstraint(new mxPoint(0.75, 0), true), - new mxConnectionConstraint(new mxPoint(0, 0.3), true), - new mxConnectionConstraint(new mxPoint(0, 0.7), true), - new mxConnectionConstraint(new mxPoint(1, 0.25), true), - new mxConnectionConstraint(new mxPoint(1, 0.5), true), - new mxConnectionConstraint(new mxPoint(1, 0.75), true), - new mxConnectionConstraint(new mxPoint(0.25, 1), true), - new mxConnectionConstraint(new mxPoint(0.5, 1), true), - new mxConnectionConstraint(new mxPoint(0.75, 1), true)]; - mxActor.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.5, 0), true), - new mxConnectionConstraint(new mxPoint(0.25, 0.2), false), - new mxConnectionConstraint(new mxPoint(0.1, 0.5), false), - new mxConnectionConstraint(new mxPoint(0, 0.75), true), - new mxConnectionConstraint(new mxPoint(0.75, 0.25), false), - new mxConnectionConstraint(new mxPoint(0.9, 0.5), false), - new mxConnectionConstraint(new mxPoint(1, 0.75), true), - new mxConnectionConstraint(new mxPoint(0.25, 1), true), - new mxConnectionConstraint(new mxPoint(0.5, 1), true), - new mxConnectionConstraint(new mxPoint(0.75, 1), true)]; - TapeShape.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0, 0.35), false), - new mxConnectionConstraint(new mxPoint(0, 0.5), false), - new mxConnectionConstraint(new mxPoint(0, 0.65), false), - new mxConnectionConstraint(new mxPoint(1, 0.35), false), - new mxConnectionConstraint(new mxPoint(1, 0.5), false), - new mxConnectionConstraint(new mxPoint(1, 0.65), false), - new mxConnectionConstraint(new mxPoint(0.25, 1), false), - new mxConnectionConstraint(new mxPoint(0.75, 0), false)]; - // TODO: Relative ports - StepShape.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.25, 0), true), - new mxConnectionConstraint(new mxPoint(0.5, 0), true), - new mxConnectionConstraint(new mxPoint(0.75, 0), true), - new mxConnectionConstraint(new mxPoint(0.25, 1), true), - new mxConnectionConstraint(new mxPoint(0.5, 1), true), - new mxConnectionConstraint(new mxPoint(0.75, 1), true), - new mxConnectionConstraint(new mxPoint(0.1, 0.25), false), - new mxConnectionConstraint(new mxPoint(0.2, 0.5), false), - new mxConnectionConstraint(new mxPoint(0.1, 0.75), false), - new mxConnectionConstraint(new mxPoint(0.9, 0.25), false), - new mxConnectionConstraint(new mxPoint(1, 0.5), false), - new mxConnectionConstraint(new mxPoint(0.9, 0.75), false)]; - mxLine.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0, 0.5), false), - new mxConnectionConstraint(new mxPoint(0.25, 0.5), false), - new mxConnectionConstraint(new mxPoint(0.75, 0.5), false), - new mxConnectionConstraint(new mxPoint(1, 0.5), false)]; - LollipopShape.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.5, 0), false), - new mxConnectionConstraint(new mxPoint(0.5, 1), false)]; - mxEllipse.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0, 0), true), new mxConnectionConstraint(new mxPoint(1, 0), true), - new mxConnectionConstraint(new mxPoint(0, 1), true), new mxConnectionConstraint(new mxPoint(1, 1), true), - new mxConnectionConstraint(new mxPoint(0.5, 0), true), new mxConnectionConstraint(new mxPoint(0.5, 1), true), - new mxConnectionConstraint(new mxPoint(0, 0.5), true), new mxConnectionConstraint(new mxPoint(1, 0.5))]; - mxDoubleEllipse.prototype.constraints = mxEllipse.prototype.constraints; - mxRhombus.prototype.constraints = mxEllipse.prototype.constraints; - mxTriangle.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0, 0.25), true), - new mxConnectionConstraint(new mxPoint(0, 0.5), true), - new mxConnectionConstraint(new mxPoint(0, 0.75), true), - new mxConnectionConstraint(new mxPoint(0.5, 0), true), - new mxConnectionConstraint(new mxPoint(0.5, 1), true), - new mxConnectionConstraint(new mxPoint(1, 0.5), true)]; - mxHexagon.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.375, 0), true), - new mxConnectionConstraint(new mxPoint(0.5, 0), true), - new mxConnectionConstraint(new mxPoint(0.625, 0), true), - new mxConnectionConstraint(new mxPoint(0.125, 0.25), false), - new mxConnectionConstraint(new mxPoint(0, 0.5), true), - new mxConnectionConstraint(new mxPoint(0.125, 0.75), false), - new mxConnectionConstraint(new mxPoint(0.875, 0.25), false), - new mxConnectionConstraint(new mxPoint(0, 0.5), true), - new mxConnectionConstraint(new mxPoint(1, 0.5), true), - new mxConnectionConstraint(new mxPoint(0.875, 0.75), false), - new mxConnectionConstraint(new mxPoint(0.375, 1), true), - new mxConnectionConstraint(new mxPoint(0.5, 1), true), - new mxConnectionConstraint(new mxPoint(0.625, 1), true)]; - mxCloud.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.25, 0.25), false), - new mxConnectionConstraint(new mxPoint(0.4, 0.1), false), - new mxConnectionConstraint(new mxPoint(0.16, 0.55), false), - new mxConnectionConstraint(new mxPoint(0.07, 0.4), false), - new mxConnectionConstraint(new mxPoint(0.31, 0.8), false), - new mxConnectionConstraint(new mxPoint(0.13, 0.77), false), - new mxConnectionConstraint(new mxPoint(0.8, 0.8), false), - new mxConnectionConstraint(new mxPoint(0.55, 0.95), false), - new mxConnectionConstraint(new mxPoint(0.875, 0.5), false), - new mxConnectionConstraint(new mxPoint(0.96, 0.7), false), - new mxConnectionConstraint(new mxPoint(0.625, 0.2), false), - new mxConnectionConstraint(new mxPoint(0.88, 0.25), false)]; - mxArrow.prototype.constraints = null; -})(); +var _0x2401=["\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x63\x6F\x6E\x73\x74\x72\x75\x63\x74\x6F\x72","\x73\x69\x7A\x65","\x72\x65\x64\x72\x61\x77\x50\x61\x74\x68","\x73\x74\x79\x6C\x65","\x67\x65\x74\x56\x61\x6C\x75\x65","\x6D\x69\x6E","\x6D\x6F\x76\x65\x54\x6F","\x6C\x69\x6E\x65\x54\x6F","\x65\x6E\x64","\x63\x6C\x6F\x73\x65","\x63\x75\x62\x65","\x64\x65\x66\x61\x75\x6C\x74\x53\x68\x61\x70\x65\x73","\x6E\x6F\x74\x65","\x74\x61\x62\x57\x69\x64\x74\x68","\x74\x61\x62\x48\x65\x69\x67\x68\x74","\x74\x61\x62\x50\x6F\x73\x69\x74\x69\x6F\x6E","\x72\x69\x67\x68\x74","\x6C\x65\x66\x74","\x66\x6F\x6C\x64\x65\x72","\x63\x61\x72\x64","\x71\x75\x61\x64\x54\x6F","\x74\x61\x70\x65","\x73\x74\x65\x70","\x63\x61\x6C\x6C","\x65\x78\x74\x65\x6E\x64","\x69\x73\x48\x74\x6D\x6C\x41\x6C\x6C\x6F\x77\x65\x64","\x70\x61\x69\x6E\x74\x46\x6F\x72\x65\x67\x72\x6F\x75\x6E\x64","\x62\x65\x67\x69\x6E","\x73\x74\x72\x6F\x6B\x65","\x61\x70\x70\x6C\x79","\x70\x6C\x75\x73","\x64\x6F\x75\x62\x6C\x65","\x73\x74\x72\x6F\x6B\x65\x77\x69\x64\x74\x68","\x6D\x61\x78","\x70\x61\x69\x6E\x74\x42\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64","\x73\x65\x74\x44\x61\x73\x68\x65\x64","\x73\x79\x6D\x62\x6F\x6C","\x41\x6C\x69\x67\x6E","\x56\x65\x72\x74\x69\x63\x61\x6C\x41\x6C\x69\x67\x6E","\x57\x69\x64\x74\x68","\x48\x65\x69\x67\x68\x74","\x53\x70\x61\x63\x69\x6E\x67","\x41\x72\x63\x53\x70\x61\x63\x69\x6E\x67","\x67\x65\x74\x41\x72\x63\x53\x69\x7A\x65","\x41\x4C\x49\x47\x4E\x5F\x43\x45\x4E\x54\x45\x52","\x41\x4C\x49\x47\x4E\x5F\x52\x49\x47\x48\x54","\x41\x4C\x49\x47\x4E\x5F\x4D\x49\x44\x44\x4C\x45","\x41\x4C\x49\x47\x4E\x5F\x42\x4F\x54\x54\x4F\x4D","\x73\x61\x76\x65","\x70\x61\x69\x6E\x74\x56\x65\x72\x74\x65\x78\x53\x68\x61\x70\x65","\x72\x65\x73\x74\x6F\x72\x65","\x65\x78\x74","\x6D\x65\x73\x73\x61\x67\x65","\x61\x64\x64\x50\x69\x70\x65","\x63\x75\x72\x76\x65\x54\x6F","\x75\x6D\x6C\x41\x63\x74\x6F\x72","\x6C\x6F\x6C\x6C\x69\x70\x6F\x70","\x6A\x65\x74\x74\x79\x57\x69\x64\x74\x68","\x6A\x65\x74\x74\x79\x48\x65\x69\x67\x68\x74","\x63\x6F\x6D\x70\x6F\x6E\x65\x6E\x74","\x6F\x75\x74\x65\x72\x53\x74\x72\x6F\x6B\x65","\x65\x6C\x6C\x69\x70\x73\x65","\x66\x69\x6C\x6C\x41\x6E\x64\x53\x74\x72\x6F\x6B\x65","\x73\x65\x74\x53\x68\x61\x64\x6F\x77","\x65\x6E\x64\x53\x74\x61\x74\x65","\x73\x74\x61\x72\x74\x53\x74\x61\x74\x65","\x69\x6E\x69\x74\x53\x68\x61\x70\x65\x73","\x78","\x79","\x77\x69\x64\x74\x68","\x68\x65\x69\x67\x68\x74","\x73\x68\x61\x70\x65\x73","\x70\x61\x69\x6E\x74\x45\x64\x67\x65\x53\x68\x61\x70\x65","\x6C\x65\x6E\x67\x74\x68","\x73\x71\x72\x74","\x6C\x69\x6E\x6B","\x64\x61\x73\x68","\x61\x64\x64\x4D\x61\x72\x6B\x65\x72","\x75\x6E\x64\x65\x66\x69\x6E\x65\x64","\x75\x73\x65\x47\x72\x69\x64\x46\x6F\x72\x53\x70\x65\x63\x69\x61\x6C\x48\x61\x6E\x64\x6C\x65","\x69\x6E\x69\x74","\x68\x6F\x72\x69\x7A\x6F\x6E\x74\x61\x6C","\x73\x74\x61\x74\x65","\x67\x72\x61\x70\x68","\x76\x69\x65\x77","\x68\x61\x6E\x64\x6C\x65\x49\x6D\x61\x67\x65","\x73\x70\x65\x63\x69\x61\x6C\x48\x61\x6E\x64\x6C\x65","\x73\x72\x63","\x64\x69\x61\x6C\x65\x63\x74","\x44\x49\x41\x4C\x45\x43\x54\x5F\x53\x56\x47","\x44\x49\x41\x4C\x45\x43\x54\x5F\x56\x4D\x4C","\x67\x65\x74\x4F\x76\x65\x72\x6C\x61\x79\x50\x61\x6E\x65","\x67\x65\x74\x56\x69\x65\x77","\x63\x75\x72\x73\x6F\x72","\x6E\x6F\x64\x65","\x67\x65\x74\x53\x70\x65\x63\x69\x61\x6C\x48\x61\x6E\x64\x6C\x65\x43\x75\x72\x73\x6F\x72","\x72\x65\x64\x69\x72\x65\x63\x74\x4D\x6F\x75\x73\x65\x45\x76\x65\x6E\x74\x73","\x64\x65\x66\x61\x75\x6C\x74","\x72\x65\x64\x72\x61\x77","\x62\x6F\x75\x6E\x64\x73","\x67\x65\x74\x53\x70\x65\x63\x69\x61\x6C\x48\x61\x6E\x64\x6C\x65\x42\x6F\x75\x6E\x64\x73","\x64\x65\x73\x74\x72\x6F\x79","\x67\x65\x74\x48\x61\x6E\x64\x6C\x65\x46\x6F\x72\x45\x76\x65\x6E\x74","\x69\x73\x53\x6F\x75\x72\x63\x65","\x6D\x6F\x75\x73\x65\x4D\x6F\x76\x65","\x69\x73\x43\x6F\x6E\x73\x75\x6D\x65\x64","\x69\x6E\x64\x65\x78","\x67\x65\x74\x47\x72\x61\x70\x68\x58","\x67\x65\x74\x47\x72\x61\x70\x68\x59","\x63\x6F\x6E\x73\x74\x72\x61\x69\x6E\x50\x6F\x69\x6E\x74","\x67\x65\x74\x45\x76\x65\x6E\x74","\x69\x73\x47\x72\x69\x64\x45\x6E\x61\x62\x6C\x65\x64\x45\x76\x65\x6E\x74","\x73\x63\x61\x6C\x65","\x73\x6E\x61\x70","\x75\x70\x64\x61\x74\x65\x53\x74\x79\x6C\x65","\x6D\x6F\x76\x65\x53\x69\x7A\x65\x72\x54\x6F","\x63\x65\x6C\x6C\x52\x65\x6E\x64\x65\x72\x65\x72","\x63\x6F\x6E\x73\x75\x6D\x65","\x6D\x6F\x75\x73\x65\x55\x70","\x61\x70\x70\x6C\x79\x53\x74\x79\x6C\x65","\x72\x65\x73\x65\x74","\x67\x65\x74\x53\x68\x61\x70\x65\x52\x6F\x74\x61\x74\x69\x6F\x6E","\x73\x68\x61\x70\x65","\x74\x6F\x52\x61\x64\x69\x61\x6E\x73","\x63\x6F\x73","\x73\x69\x6E","\x69\x73\x50\x61\x69\x6E\x74\x42\x6F\x75\x6E\x64\x73\x49\x6E\x76\x65\x72\x74\x65\x64","\x67\x65\x74\x53\x70\x65\x63\x69\x61\x6C\x48\x61\x6E\x64\x6C\x65\x50\x6F\x69\x6E\x74","\x66\x6C\x69\x70\x48","\x66\x6C\x69\x70\x56","\x67\x65\x74\x43\x65\x6E\x74\x65\x72\x58","\x67\x65\x74\x43\x65\x6E\x74\x65\x72\x59","\x67\x65\x74\x52\x6F\x74\x61\x74\x65\x64\x50\x6F\x69\x6E\x74","\x75\x70\x64\x61\x74\x65\x53\x74\x79\x6C\x65\x55\x6E\x72\x6F\x74\x61\x74\x65\x64","\x72\x6F\x75\x6E\x64","\x67\x65\x74\x4D\x6F\x64\x65\x6C","\x62\x65\x67\x69\x6E\x55\x70\x64\x61\x74\x65","\x63\x65\x6C\x6C","\x73\x65\x74\x43\x65\x6C\x6C\x53\x74\x79\x6C\x65\x73","\x65\x6E\x64\x55\x70\x64\x61\x74\x65","\x73\x74\x61\x72\x74\x53\x69\x7A\x65","\x64\x65\x66\x61\x75\x6C\x74\x56\x61\x6C\x75\x65","\x73\x63\x61\x6C\x65\x46\x61\x63\x74\x6F\x72","\x63\x72\x65\x61\x74\x65\x48\x61\x6E\x64\x6C\x65\x72","\x67\x65\x74\x41\x6C\x6C\x43\x6F\x6E\x6E\x65\x63\x74\x69\x6F\x6E\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74\x73","\x73\x74\x65\x6E\x63\x69\x6C","\x63\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74\x73"];(function(){function _0x7490x1(){}_0x7490x1[_0x2401[0]]= new mxCylinder();_0x7490x1[_0x2401[0]][_0x2401[1]]= _0x7490x1;_0x7490x1[_0x2401[0]][_0x2401[2]]= 20;_0x7490x1[_0x2401[0]][_0x2401[3]]= function(_0x7490x2,_0x7490x3,_0x7490x4,_0x7490x5,_0x7490x6,_0x7490x7){var _0x7490x8=Math[_0x2401[6]](_0x7490x5,Math[_0x2401[6]](_0x7490x6,mxUtils[_0x2401[5]](this[_0x2401[4]],_0x2401[2],this[_0x2401[2]])));if(_0x7490x7){_0x7490x2[_0x2401[7]](_0x7490x8,_0x7490x6);_0x7490x2[_0x2401[8]](_0x7490x8,_0x7490x8);_0x7490x2[_0x2401[8]](0,0);_0x7490x2[_0x2401[7]](_0x7490x8,_0x7490x8);_0x7490x2[_0x2401[8]](_0x7490x5,_0x7490x8);_0x7490x2[_0x2401[9]]()}else {_0x7490x2[_0x2401[7]](0,0);_0x7490x2[_0x2401[8]](_0x7490x5- _0x7490x8,0);_0x7490x2[_0x2401[8]](_0x7490x5,_0x7490x8);_0x7490x2[_0x2401[8]](_0x7490x5,_0x7490x6);_0x7490x2[_0x2401[8]](_0x7490x8,_0x7490x6);_0x7490x2[_0x2401[8]](0,_0x7490x6- _0x7490x8);_0x7490x2[_0x2401[8]](0,0);_0x7490x2[_0x2401[10]]();_0x7490x2[_0x2401[9]]()}};mxCellRenderer[_0x2401[0]][_0x2401[12]][_0x2401[11]]= _0x7490x1;function _0x7490x9(){}_0x7490x9[_0x2401[0]]= new mxCylinder();_0x7490x9[_0x2401[0]][_0x2401[1]]= _0x7490x9;_0x7490x9[_0x2401[0]][_0x2401[2]]= 30;_0x7490x9[_0x2401[0]][_0x2401[3]]= function(_0x7490x2,_0x7490x3,_0x7490x4,_0x7490x5,_0x7490x6,_0x7490x7){var _0x7490x8=Math[_0x2401[6]](_0x7490x5,Math[_0x2401[6]](_0x7490x6,mxUtils[_0x2401[5]](this[_0x2401[4]],_0x2401[2],this[_0x2401[2]])));if(_0x7490x7){_0x7490x2[_0x2401[7]](_0x7490x5- _0x7490x8,0);_0x7490x2[_0x2401[8]](_0x7490x5- _0x7490x8,_0x7490x8);_0x7490x2[_0x2401[8]](_0x7490x5,_0x7490x8);_0x7490x2[_0x2401[9]]()}else {_0x7490x2[_0x2401[7]](0,0);_0x7490x2[_0x2401[8]](_0x7490x5- _0x7490x8,0);_0x7490x2[_0x2401[8]](_0x7490x5,_0x7490x8);_0x7490x2[_0x2401[8]](_0x7490x5,_0x7490x6);_0x7490x2[_0x2401[8]](0,_0x7490x6);_0x7490x2[_0x2401[8]](0,0);_0x7490x2[_0x2401[10]]();_0x7490x2[_0x2401[9]]()}};mxCellRenderer[_0x2401[0]][_0x2401[12]][_0x2401[13]]= _0x7490x9;function _0x7490xa(){}_0x7490xa[_0x2401[0]]= new mxCylinder();_0x7490xa[_0x2401[0]][_0x2401[1]]= _0x7490xa;_0x7490xa[_0x2401[0]][_0x2401[14]]= 60;_0x7490xa[_0x2401[0]][_0x2401[15]]= 20;_0x7490xa[_0x2401[0]][_0x2401[16]]= _0x2401[17];_0x7490xa[_0x2401[0]][_0x2401[3]]= function(_0x7490x2,_0x7490x3,_0x7490x4,_0x7490x5,_0x7490x6,_0x7490x7){var _0x7490xb=mxUtils[_0x2401[5]](this[_0x2401[4]],_0x2401[14],this[_0x2401[14]]);var _0x7490xc=mxUtils[_0x2401[5]](this[_0x2401[4]],_0x2401[15],this[_0x2401[15]]);var _0x7490xd=mxUtils[_0x2401[5]](this[_0x2401[4]],_0x2401[16],this[_0x2401[16]]);var _0x7490xe=Math[_0x2401[6]](_0x7490x5,_0x7490xb);var _0x7490xf=Math[_0x2401[6]](_0x7490x6,_0x7490xc);if(_0x7490x7){if(_0x7490xd== _0x2401[18]){_0x7490x2[_0x2401[7]](0,_0x7490xf);_0x7490x2[_0x2401[8]](_0x7490xe,_0x7490xf)}else {_0x7490x2[_0x2401[7]](_0x7490x5- _0x7490xe,_0x7490xf);_0x7490x2[_0x2401[8]](_0x7490x5,_0x7490xf)};_0x7490x2[_0x2401[9]]()}else {if(_0x7490xd== _0x2401[18]){_0x7490x2[_0x2401[7]](0,0);_0x7490x2[_0x2401[8]](_0x7490xe,0);_0x7490x2[_0x2401[8]](_0x7490xe,_0x7490xf);_0x7490x2[_0x2401[8]](_0x7490x5,_0x7490xf)}else {_0x7490x2[_0x2401[7]](0,_0x7490xf);_0x7490x2[_0x2401[8]](_0x7490x5- _0x7490xe,_0x7490xf);_0x7490x2[_0x2401[8]](_0x7490x5- _0x7490xe,0);_0x7490x2[_0x2401[8]](_0x7490x5,0)};_0x7490x2[_0x2401[8]](_0x7490x5,_0x7490x6);_0x7490x2[_0x2401[8]](0,_0x7490x6);_0x7490x2[_0x2401[8]](0,_0x7490xf);_0x7490x2[_0x2401[10]]();_0x7490x2[_0x2401[9]]()}};mxCellRenderer[_0x2401[0]][_0x2401[12]][_0x2401[19]]= _0x7490xa;function _0x7490x10(){}_0x7490x10[_0x2401[0]]= new mxCylinder();_0x7490x10[_0x2401[0]][_0x2401[1]]= _0x7490x10;_0x7490x10[_0x2401[0]][_0x2401[2]]= 30;_0x7490x10[_0x2401[0]][_0x2401[3]]= function(_0x7490x2,_0x7490x3,_0x7490x4,_0x7490x5,_0x7490x6,_0x7490x7){var _0x7490x8=Math[_0x2401[6]](_0x7490x5,Math[_0x2401[6]](_0x7490x6,mxUtils[_0x2401[5]](this[_0x2401[4]],_0x2401[2],this[_0x2401[2]])));if(!_0x7490x7){_0x7490x2[_0x2401[7]](_0x7490x8,0);_0x7490x2[_0x2401[8]](_0x7490x5,0);_0x7490x2[_0x2401[8]](_0x7490x5,_0x7490x6);_0x7490x2[_0x2401[8]](0,_0x7490x6);_0x7490x2[_0x2401[8]](0,_0x7490x8);_0x7490x2[_0x2401[8]](_0x7490x8,0);_0x7490x2[_0x2401[10]]();_0x7490x2[_0x2401[9]]()}};mxCellRenderer[_0x2401[0]][_0x2401[12]][_0x2401[20]]= _0x7490x10;function _0x7490x11(){}_0x7490x11[_0x2401[0]]= new mxCylinder();_0x7490x11[_0x2401[0]][_0x2401[1]]= _0x7490x11;_0x7490x11[_0x2401[0]][_0x2401[2]]= 0.4;_0x7490x11[_0x2401[0]][_0x2401[3]]= function(_0x7490x2,_0x7490x3,_0x7490x4,_0x7490x5,_0x7490x6,_0x7490x7){var _0x7490x8=mxUtils[_0x2401[5]](this[_0x2401[4]],_0x2401[2],this[_0x2401[2]]);var _0x7490xf=_0x7490x6* _0x7490x8;var _0x7490x12=1.4;if(!_0x7490x7){_0x7490x2[_0x2401[7]](0,_0x7490xf/ 2);_0x7490x2[_0x2401[21]](_0x7490x5/ 4,_0x7490xf* _0x7490x12,_0x7490x5/ 2,_0x7490xf/ 2);_0x7490x2[_0x2401[21]](_0x7490x5* 3/ 4,_0x7490xf* (1- _0x7490x12),_0x7490x5,_0x7490xf/ 2);_0x7490x2[_0x2401[8]](_0x7490x5,_0x7490x6- _0x7490xf/ 2);_0x7490x2[_0x2401[21]](_0x7490x5* 3/ 4,_0x7490x6- _0x7490xf* _0x7490x12,_0x7490x5/ 2,_0x7490x6- _0x7490xf/ 2);_0x7490x2[_0x2401[21]](_0x7490x5/ 4,_0x7490x6- _0x7490xf* (1- _0x7490x12),0,_0x7490x6- _0x7490xf/ 2);_0x7490x2[_0x2401[8]](0,_0x7490xf/ 2);_0x7490x2[_0x2401[10]]();_0x7490x2[_0x2401[9]]()}};mxCellRenderer[_0x2401[0]][_0x2401[12]][_0x2401[22]]= _0x7490x11;function _0x7490x13(){}_0x7490x13[_0x2401[0]]= new mxCylinder();_0x7490x13[_0x2401[0]][_0x2401[1]]= _0x7490x13;_0x7490x13[_0x2401[0]][_0x2401[2]]= 0.2;_0x7490x13[_0x2401[0]][_0x2401[3]]= function(_0x7490x2,_0x7490x3,_0x7490x4,_0x7490x5,_0x7490x6,_0x7490x7){var _0x7490x8=_0x7490x5* mxUtils[_0x2401[5]](this[_0x2401[4]],_0x2401[2],this[_0x2401[2]]);if(!_0x7490x7){_0x7490x2[_0x2401[7]](0,0);_0x7490x2[_0x2401[8]](_0x7490x5- _0x7490x8,0);_0x7490x2[_0x2401[8]](_0x7490x5,_0x7490x6/ 2);_0x7490x2[_0x2401[8]](_0x7490x5- _0x7490x8,_0x7490x6);_0x7490x2[_0x2401[8]](0,_0x7490x6);_0x7490x2[_0x2401[8]](_0x7490x8,_0x7490x6/ 2);_0x7490x2[_0x2401[10]]();_0x7490x2[_0x2401[9]]()}};mxCellRenderer[_0x2401[0]][_0x2401[12]][_0x2401[23]]= _0x7490x13;function _0x7490x14(){mxRectangleShape[_0x2401[24]](this)}mxUtils[_0x2401[25]](_0x7490x14,mxRectangleShape);_0x7490x14[_0x2401[0]][_0x2401[26]]= function(){return false};_0x7490x14[_0x2401[0]][_0x2401[27]]= function(_0x7490x15,_0x7490x3,_0x7490x4,_0x7490x5,_0x7490x6){var _0x7490x16=Math[_0x2401[6]](_0x7490x5/ 5,_0x7490x6/ 5)+ 1;_0x7490x15[_0x2401[28]]();_0x7490x15[_0x2401[7]](_0x7490x3+ _0x7490x5/ 2,_0x7490x4+ _0x7490x16);_0x7490x15[_0x2401[8]](_0x7490x3+ _0x7490x5/ 2,_0x7490x4+ _0x7490x6- _0x7490x16);_0x7490x15[_0x2401[7]](_0x7490x3+ _0x7490x16,_0x7490x4+ _0x7490x6/ 2);_0x7490x15[_0x2401[8]](_0x7490x3+ _0x7490x5- _0x7490x16,_0x7490x4+ _0x7490x6/ 2);_0x7490x15[_0x2401[9]]();_0x7490x15[_0x2401[29]]();mxRectangleShape[_0x2401[0]][_0x2401[27]][_0x2401[30]](this,arguments)};mxCellRenderer[_0x2401[0]][_0x2401[12]][_0x2401[31]]= _0x7490x14;function _0x7490x17(){mxRectangleShape[_0x2401[24]](this)}mxUtils[_0x2401[25]](_0x7490x17,mxRectangleShape);_0x7490x17[_0x2401[0]][_0x2401[26]]= function(){return false};_0x7490x17[_0x2401[0]][_0x2401[27]]= function(_0x7490x15,_0x7490x3,_0x7490x4,_0x7490x5,_0x7490x6){if(this[_0x2401[4]]!= null){if(this[_0x2401[4]][_0x2401[32]]== 1){var _0x7490x18=Math[_0x2401[34]](2,this[_0x2401[33]]+ 1);mxRectangleShape[_0x2401[0]][_0x2401[35]][_0x2401[24]](this,_0x7490x15,_0x7490x3+ _0x7490x18,_0x7490x4+ _0x7490x18,_0x7490x5- 2* _0x7490x18,_0x7490x6- 2* _0x7490x18);mxRectangleShape[_0x2401[0]][_0x2401[27]][_0x2401[30]](this,arguments);_0x7490x3+= _0x7490x18;_0x7490x4+= _0x7490x18;_0x7490x5-= 2* _0x7490x18;_0x7490x6-= 2* _0x7490x18};_0x7490x15[_0x2401[36]](false);var _0x7490x19=0;var _0x7490x1a=null;do{_0x7490x1a= mxCellRenderer[_0x2401[0]][_0x2401[12]][this[_0x2401[4]][_0x2401[37]+ _0x7490x19]];if(_0x7490x1a!= null){var _0x7490x1b=this[_0x2401[4]][_0x2401[37]+ _0x7490x19+ _0x2401[38]];var _0x7490x1c=this[_0x2401[4]][_0x2401[37]+ _0x7490x19+ _0x2401[39]];var _0x7490x1d=this[_0x2401[4]][_0x2401[37]+ _0x7490x19+ _0x2401[40]];var _0x7490x1e=this[_0x2401[4]][_0x2401[37]+ _0x7490x19+ _0x2401[41]];var _0x7490x1f=this[_0x2401[4]][_0x2401[37]+ _0x7490x19+ _0x2401[42]]|| 0;var _0x7490x20=this[_0x2401[4]][_0x2401[37]+ _0x7490x19+ _0x2401[43]];if(_0x7490x20!= null){_0x7490x1f+= this[_0x2401[44]](_0x7490x5+ this[_0x2401[33]],_0x7490x6+ this[_0x2401[33]])* _0x7490x20};var _0x7490x21=_0x7490x3;var _0x7490x22=_0x7490x4;if(_0x7490x1b== mxConstants[_0x2401[45]]){_0x7490x21+= (_0x7490x5- _0x7490x1d)/ 2}else {if(_0x7490x1b== mxConstants[_0x2401[46]]){_0x7490x21+= _0x7490x5- _0x7490x1d- _0x7490x1f}else {_0x7490x21+= _0x7490x1f}};if(_0x7490x1c== mxConstants[_0x2401[47]]){_0x7490x22+= (_0x7490x6- _0x7490x1e)/ 2}else {if(_0x7490x1c== mxConstants[_0x2401[48]]){_0x7490x22+= _0x7490x6- _0x7490x1e- _0x7490x1f}else {_0x7490x22+= _0x7490x1f}};_0x7490x15[_0x2401[49]]();var _0x7490x23= new _0x7490x1a();_0x7490x23[_0x2401[4]]= this[_0x2401[4]];_0x7490x1a[_0x2401[0]][_0x2401[50]][_0x2401[24]](_0x7490x23,_0x7490x15,_0x7490x21,_0x7490x22,_0x7490x1d,_0x7490x1e);_0x7490x15[_0x2401[51]]()};_0x7490x19++}while(_0x7490x1a!= null);}};mxCellRenderer[_0x2401[0]][_0x2401[12]][_0x2401[52]]= _0x7490x17;function _0x7490x24(){}_0x7490x24[_0x2401[0]]= new mxCylinder();_0x7490x24[_0x2401[0]][_0x2401[1]]= _0x7490x24;_0x7490x24[_0x2401[0]][_0x2401[3]]= function(_0x7490x2,_0x7490x3,_0x7490x4,_0x7490x5,_0x7490x6,_0x7490x7){if(_0x7490x7){_0x7490x2[_0x2401[7]](0,0);_0x7490x2[_0x2401[8]](_0x7490x5/ 2,_0x7490x6/ 2);_0x7490x2[_0x2401[8]](_0x7490x5,0);_0x7490x2[_0x2401[9]]()}else {_0x7490x2[_0x2401[7]](0,0);_0x7490x2[_0x2401[8]](_0x7490x5,0);_0x7490x2[_0x2401[8]](_0x7490x5,_0x7490x6);_0x7490x2[_0x2401[8]](0,_0x7490x6);_0x7490x2[_0x2401[10]]()}};mxCellRenderer[_0x2401[0]][_0x2401[12]][_0x2401[53]]= _0x7490x24;function _0x7490x25(){}_0x7490x25[_0x2401[0]]= new mxCylinder();_0x7490x25[_0x2401[0]][_0x2401[1]]= _0x7490x25;_0x7490x25[_0x2401[0]][_0x2401[54]]= true;_0x7490x25[_0x2401[0]][_0x2401[3]]= function(_0x7490x2,_0x7490x3,_0x7490x4,_0x7490x5,_0x7490x6,_0x7490x7){var _0x7490x1d=_0x7490x5/ 3;var _0x7490x1e=_0x7490x6/ 4;if(!_0x7490x7){_0x7490x2[_0x2401[7]](_0x7490x5/ 2,_0x7490x1e);_0x7490x2[_0x2401[55]](_0x7490x5/ 2- _0x7490x1d,_0x7490x1e,_0x7490x5/ 2- _0x7490x1d,0,_0x7490x5/ 2,0);_0x7490x2[_0x2401[55]](_0x7490x5/ 2+ _0x7490x1d,0,_0x7490x5/ 2+ _0x7490x1d,_0x7490x1e,_0x7490x5/ 2,_0x7490x1e);_0x7490x2[_0x2401[10]]();_0x7490x2[_0x2401[7]](_0x7490x5/ 2,_0x7490x1e);_0x7490x2[_0x2401[8]](_0x7490x5/ 2,2* _0x7490x6/ 3);_0x7490x2[_0x2401[7]](_0x7490x5/ 2,_0x7490x6/ 3);_0x7490x2[_0x2401[8]](0,_0x7490x6/ 3);_0x7490x2[_0x2401[7]](_0x7490x5/ 2,_0x7490x6/ 3);_0x7490x2[_0x2401[8]](_0x7490x5,_0x7490x6/ 3);_0x7490x2[_0x2401[7]](_0x7490x5/ 2,2* _0x7490x6/ 3);_0x7490x2[_0x2401[8]](0,_0x7490x6);_0x7490x2[_0x2401[7]](_0x7490x5/ 2,2* _0x7490x6/ 3);_0x7490x2[_0x2401[8]](_0x7490x5,_0x7490x6);_0x7490x2[_0x2401[9]]()}};mxCellRenderer[_0x2401[0]][_0x2401[12]][_0x2401[56]]= _0x7490x25;function _0x7490x26(){}_0x7490x26[_0x2401[0]]= new mxCylinder();_0x7490x26[_0x2401[0]][_0x2401[1]]= _0x7490x26;_0x7490x26[_0x2401[0]][_0x2401[2]]= 10;_0x7490x26[_0x2401[0]][_0x2401[54]]= true;_0x7490x26[_0x2401[0]][_0x2401[3]]= function(_0x7490x2,_0x7490x3,_0x7490x4,_0x7490x5,_0x7490x6,_0x7490x7){var _0x7490x27=mxUtils[_0x2401[5]](this[_0x2401[4]],_0x2401[2],this[_0x2401[2]]);var _0x7490x1d=_0x7490x27* 2/ 3;var _0x7490x1e=_0x7490x27;if(!_0x7490x7){_0x7490x2[_0x2401[7]](_0x7490x5/ 2,_0x7490x1e);_0x7490x2[_0x2401[55]](_0x7490x5/ 2- _0x7490x1d,_0x7490x1e,_0x7490x5/ 2- _0x7490x1d,0,_0x7490x5/ 2,0);_0x7490x2[_0x2401[55]](_0x7490x5/ 2+ _0x7490x1d,0,_0x7490x5/ 2+ _0x7490x1d,_0x7490x1e,_0x7490x5/ 2,_0x7490x1e);_0x7490x2[_0x2401[10]]();_0x7490x2[_0x2401[7]](_0x7490x5/ 2,_0x7490x1e);_0x7490x2[_0x2401[8]](_0x7490x5/ 2,_0x7490x6);_0x7490x2[_0x2401[9]]()}};mxCellRenderer[_0x2401[0]][_0x2401[12]][_0x2401[57]]= _0x7490x26;function _0x7490x28(){}_0x7490x28[_0x2401[0]]= new mxCylinder();_0x7490x28[_0x2401[0]][_0x2401[1]]= _0x7490x28;_0x7490x28[_0x2401[0]][_0x2401[58]]= 32;_0x7490x28[_0x2401[0]][_0x2401[59]]= 12;_0x7490x28[_0x2401[0]][_0x2401[3]]= function(_0x7490x2,_0x7490x3,_0x7490x4,_0x7490x5,_0x7490x6,_0x7490x7){var _0x7490xe=mxUtils[_0x2401[5]](this[_0x2401[4]],_0x2401[58],this[_0x2401[58]]);var _0x7490xf=mxUtils[_0x2401[5]](this[_0x2401[4]],_0x2401[59],this[_0x2401[59]]);var _0x7490x29=_0x7490xe/ 2;var _0x7490x2a=_0x7490x29+ _0x7490xe/ 2;var _0x7490x2b=0.3* _0x7490x6- _0x7490xf/ 2;var _0x7490x2c=0.7* _0x7490x6- _0x7490xf/ 2;if(_0x7490x7){_0x7490x2[_0x2401[7]](_0x7490x29,_0x7490x2b);_0x7490x2[_0x2401[8]](_0x7490x2a,_0x7490x2b);_0x7490x2[_0x2401[8]](_0x7490x2a,_0x7490x2b+ _0x7490xf);_0x7490x2[_0x2401[8]](_0x7490x29,_0x7490x2b+ _0x7490xf);_0x7490x2[_0x2401[7]](_0x7490x29,_0x7490x2c);_0x7490x2[_0x2401[8]](_0x7490x2a,_0x7490x2c);_0x7490x2[_0x2401[8]](_0x7490x2a,_0x7490x2c+ _0x7490xf);_0x7490x2[_0x2401[8]](_0x7490x29,_0x7490x2c+ _0x7490xf);_0x7490x2[_0x2401[9]]()}else {_0x7490x2[_0x2401[7]](_0x7490x29,0);_0x7490x2[_0x2401[8]](_0x7490x5,0);_0x7490x2[_0x2401[8]](_0x7490x5,_0x7490x6);_0x7490x2[_0x2401[8]](_0x7490x29,_0x7490x6);_0x7490x2[_0x2401[8]](_0x7490x29,_0x7490x2c+ _0x7490xf);_0x7490x2[_0x2401[8]](0,_0x7490x2c+ _0x7490xf);_0x7490x2[_0x2401[8]](0,_0x7490x2c);_0x7490x2[_0x2401[8]](_0x7490x29,_0x7490x2c);_0x7490x2[_0x2401[8]](_0x7490x29,_0x7490x2b+ _0x7490xf);_0x7490x2[_0x2401[8]](0,_0x7490x2b+ _0x7490xf);_0x7490x2[_0x2401[8]](0,_0x7490x2b);_0x7490x2[_0x2401[8]](_0x7490x29,_0x7490x2b);_0x7490x2[_0x2401[10]]();_0x7490x2[_0x2401[9]]()}};mxCellRenderer[_0x2401[0]][_0x2401[12]][_0x2401[60]]= _0x7490x28;function _0x7490x2d(){}_0x7490x2d[_0x2401[0]]= new mxDoubleEllipse();_0x7490x2d[_0x2401[0]][_0x2401[1]]= _0x7490x2d;_0x7490x2d[_0x2401[0]][_0x2401[61]]= true;_0x7490x2d[_0x2401[0]][_0x2401[50]]= function(_0x7490x15,_0x7490x3,_0x7490x4,_0x7490x5,_0x7490x6){var _0x7490x18=Math[_0x2401[6]](4,Math[_0x2401[6]](_0x7490x5/ 5,_0x7490x6/ 5));if(_0x7490x5> 0&& _0x7490x6> 0){_0x7490x15[_0x2401[62]](_0x7490x3+ _0x7490x18,_0x7490x4+ _0x7490x18,_0x7490x5- 2* _0x7490x18,_0x7490x6- 2* _0x7490x18);_0x7490x15[_0x2401[63]]()};_0x7490x15[_0x2401[64]](false);if(this[_0x2401[61]]){_0x7490x15[_0x2401[62]](_0x7490x3,_0x7490x4,_0x7490x5,_0x7490x6);_0x7490x15[_0x2401[29]]()}};mxCellRenderer[_0x2401[0]][_0x2401[12]][_0x2401[65]]= _0x7490x2d;function _0x7490x2e(){}_0x7490x2e[_0x2401[0]]= new _0x7490x2d();_0x7490x2e[_0x2401[0]][_0x2401[1]]= _0x7490x2e;_0x7490x2e[_0x2401[0]][_0x2401[61]]= false;mxCellRenderer[_0x2401[0]][_0x2401[12]][_0x2401[66]]= _0x7490x2e;var _0x7490x2f=mxImageExport[_0x2401[0]][_0x2401[67]];mxImageExport[_0x2401[0]][_0x2401[67]]= function(){_0x7490x2f[_0x2401[30]](this,arguments);function _0x7490x30(_0x7490x31){return {drawShape:function(_0x7490x32,_0x7490x33,_0x7490x34,_0x7490x35){var _0x7490x3=_0x7490x34[_0x2401[68]];var _0x7490x4=_0x7490x34[_0x2401[69]];var _0x7490x5=_0x7490x34[_0x2401[70]];var _0x7490x6=_0x7490x34[_0x2401[71]];if(_0x7490x35){var _0x7490x18=Math[_0x2401[6]](4,Math[_0x2401[6]](_0x7490x5/ 5,_0x7490x6/ 5));_0x7490x3+= _0x7490x18;_0x7490x4+= _0x7490x18;_0x7490x5-= 2* _0x7490x18;_0x7490x6-= 2* _0x7490x18;if(_0x7490x5> 0&& _0x7490x6> 0){_0x7490x32[_0x2401[62]](_0x7490x3,_0x7490x4,_0x7490x5,_0x7490x6)};return true}else {_0x7490x32[_0x2401[63]]();if(_0x7490x31){_0x7490x32[_0x2401[62]](_0x7490x3,_0x7490x4,_0x7490x5,_0x7490x6);_0x7490x32[_0x2401[29]]()}}}}}this[_0x2401[72]][_0x2401[65]]= _0x7490x30(true);this[_0x2401[72]][_0x2401[66]]= _0x7490x30(false)};function _0x7490x36(){mxArrow[_0x2401[24]](this)}mxUtils[_0x2401[25]](_0x7490x36,mxArrow);_0x7490x36[_0x2401[0]][_0x2401[73]]= function(_0x7490x15,_0x7490x37){var _0x7490x1d=10;var _0x7490x38=_0x7490x37[0];var _0x7490x39=_0x7490x37[_0x7490x37[_0x2401[74]]- 1];var _0x7490xe=_0x7490x39[_0x2401[68]]- _0x7490x38[_0x2401[68]];var _0x7490xf=_0x7490x39[_0x2401[69]]- _0x7490x38[_0x2401[69]];var _0x7490x3a=Math[_0x2401[75]](_0x7490xe* _0x7490xe+ _0x7490xf* _0x7490xf);var _0x7490x3b=_0x7490x3a;var _0x7490x3c=_0x7490xe/ _0x7490x3a;var _0x7490x3d=_0x7490xf/ _0x7490x3a;var _0x7490x3e=_0x7490x3b* _0x7490x3c;var _0x7490x3f=_0x7490x3b* _0x7490x3d;var _0x7490x40=_0x7490x1d* _0x7490x3d/ 3;var _0x7490x41=-_0x7490x1d* _0x7490x3c/ 3;var _0x7490x42=_0x7490x38[_0x2401[68]]- _0x7490x40/ 2;var _0x7490x43=_0x7490x38[_0x2401[69]]- _0x7490x41/ 2;var _0x7490x44=_0x7490x42+ _0x7490x40;var _0x7490x45=_0x7490x43+ _0x7490x41;var _0x7490x46=_0x7490x44+ _0x7490x3e;var _0x7490x47=_0x7490x45+ _0x7490x3f;var _0x7490x48=_0x7490x46+ _0x7490x40;var _0x7490x49=_0x7490x47+ _0x7490x41;var _0x7490x4a=_0x7490x48- 3* _0x7490x40;var _0x7490x4b=_0x7490x49- 3* _0x7490x41;_0x7490x15[_0x2401[28]]();_0x7490x15[_0x2401[7]](_0x7490x44,_0x7490x45);_0x7490x15[_0x2401[8]](_0x7490x46,_0x7490x47);_0x7490x15[_0x2401[7]](_0x7490x4a+ _0x7490x40,_0x7490x4b+ _0x7490x41);_0x7490x15[_0x2401[8]](_0x7490x42,_0x7490x43);_0x7490x15[_0x2401[29]]()};mxCellRenderer[_0x2401[0]][_0x2401[12]][_0x2401[76]]= _0x7490x36;mxMarker[_0x2401[78]](_0x2401[77],function(_0x7490x32,_0x7490x1a,_0x7490x4c,_0x7490x39,_0x7490x4d,_0x7490x4e,_0x7490x4f,_0x7490x50,_0x7490x51,_0x7490x52){var _0x7490x3c=_0x7490x4d* (_0x7490x4f+ _0x7490x51+ 1);var _0x7490x3d=_0x7490x4e* (_0x7490x4f+ _0x7490x51+ 1);return function(){_0x7490x32[_0x2401[28]]();_0x7490x32[_0x2401[7]](_0x7490x39[_0x2401[68]]- _0x7490x3c/ 2- _0x7490x3d/ 2,_0x7490x39[_0x2401[69]]- _0x7490x3d/ 2+ _0x7490x3c/ 2);_0x7490x32[_0x2401[8]](_0x7490x39[_0x2401[68]]+ _0x7490x3d/ 2- 3* _0x7490x3c/ 2,_0x7490x39[_0x2401[69]]- 3* _0x7490x3d/ 2- _0x7490x3c/ 2);_0x7490x32[_0x2401[29]]()}});var _0x7490x53=-99;if( typeof (mxVertexHandler)!= _0x2401[79]){function _0x7490x54(_0x7490x33){mxVertexHandler[_0x2401[24]](this,_0x7490x33)}mxUtils[_0x2401[25]](_0x7490x54,mxVertexHandler);_0x7490x54[_0x2401[0]][_0x2401[80]]= false;_0x7490x54[_0x2401[0]][_0x2401[81]]= function(){this[_0x2401[82]]= mxUtils[_0x2401[5]](this[_0x2401[83]][_0x2401[4]],mxConstants.STYLE_HORIZONTAL,true);var _0x7490x55=this[_0x2401[83]][_0x2401[85]][_0x2401[84]];if(this[_0x2401[86]]!= null){var _0x7490x34= new mxRectangle(0,0,this[_0x2401[86]][_0x2401[70]],this[_0x2401[86]][_0x2401[71]]);this[_0x2401[87]]= new mxImageShape(_0x7490x34,this[_0x2401[86]][_0x2401[88]])}else {var _0x7490x4f=10;var _0x7490x34= new mxRectangle(0,0,_0x7490x4f,_0x7490x4f);this[_0x2401[87]]= new mxRhombus(_0x7490x34,mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)};this[_0x2401[87]][_0x2401[89]]= (_0x7490x55[_0x2401[89]]!= mxConstants[_0x2401[90]])?mxConstants[_0x2401[91]]:mxConstants[_0x2401[90]];this[_0x2401[87]][_0x2401[81]](_0x7490x55[_0x2401[93]]()[_0x2401[92]]());this[_0x2401[87]][_0x2401[95]][_0x2401[4]][_0x2401[94]]= this[_0x2401[96]]();mxEvent[_0x2401[97]](this[_0x2401[87]][_0x2401[95]],_0x7490x55,this[_0x2401[83]]);mxVertexHandler[_0x2401[0]][_0x2401[81]][_0x2401[30]](this,arguments)};_0x7490x54[_0x2401[0]][_0x2401[96]]= function(){return _0x2401[98]};_0x7490x54[_0x2401[0]][_0x2401[99]]= function(){mxVertexHandler[_0x2401[0]][_0x2401[99]][_0x2401[30]](this,arguments);var _0x7490x4f=this[_0x2401[87]][_0x2401[100]][_0x2401[70]];this[_0x2401[87]][_0x2401[100]]= this[_0x2401[101]](_0x7490x4f);this[_0x2401[87]][_0x2401[99]]()};_0x7490x54[_0x2401[0]][_0x2401[102]]= function(){mxVertexHandler[_0x2401[0]][_0x2401[102]][_0x2401[30]](this,arguments);if(this[_0x2401[87]]!= null){this[_0x2401[87]][_0x2401[102]]();this[_0x2401[87]]= null}};_0x7490x54[_0x2401[0]][_0x2401[103]]= function(_0x7490x56){if(_0x7490x56[_0x2401[104]](this[_0x2401[87]])){return _0x7490x53};return mxVertexHandler[_0x2401[0]][_0x2401[103]][_0x2401[30]](this,arguments)};_0x7490x54[_0x2401[0]][_0x2401[105]]= function(_0x7490x57,_0x7490x56){if(!_0x7490x56[_0x2401[106]]()&& this[_0x2401[107]]== _0x7490x53){var _0x7490x58= new mxPoint(_0x7490x56[_0x2401[108]](),_0x7490x56[_0x2401[109]]());this[_0x2401[110]](_0x7490x58);var _0x7490x59=this[_0x2401[84]][_0x2401[112]](_0x7490x56[_0x2401[111]]());var _0x7490x5a=this[_0x2401[84]][_0x2401[93]]()[_0x2401[113]];if(_0x7490x59&& this[_0x2401[80]]){_0x7490x58[_0x2401[68]]= this[_0x2401[84]][_0x2401[114]](_0x7490x58[_0x2401[68]]/ _0x7490x5a)* _0x7490x5a;_0x7490x58[_0x2401[69]]= this[_0x2401[84]][_0x2401[114]](_0x7490x58[_0x2401[69]]/ _0x7490x5a)* _0x7490x5a};this[_0x2401[115]](_0x7490x58);this[_0x2401[116]](this[_0x2401[87]],_0x7490x58[_0x2401[68]],_0x7490x58[_0x2401[69]]);this[_0x2401[83]][_0x2401[85]][_0x2401[84]][_0x2401[117]][_0x2401[99]](this[_0x2401[83]],true);_0x7490x56[_0x2401[118]]()}else {mxVertexHandler[_0x2401[0]][_0x2401[105]][_0x2401[30]](this,arguments)}};_0x7490x54[_0x2401[0]][_0x2401[119]]= function(_0x7490x57,_0x7490x56){if(!_0x7490x56[_0x2401[106]]()&& this[_0x2401[107]]== _0x7490x53){this[_0x2401[120]]();this[_0x2401[121]]();_0x7490x56[_0x2401[118]]()}else {mxVertexHandler[_0x2401[0]][_0x2401[119]][_0x2401[30]](this,arguments)}};_0x7490x54[_0x2401[0]][_0x2401[101]]= function(_0x7490x4f){var _0x7490x5b=this[_0x2401[83]][_0x2401[123]][_0x2401[122]]();var _0x7490x5c=mxUtils[_0x2401[124]](_0x7490x5b);var _0x7490x5d=Math[_0x2401[125]](_0x7490x5c);var _0x7490x5e=Math[_0x2401[126]](_0x7490x5c);var _0x7490x34= new mxRectangle(this[_0x2401[83]][_0x2401[68]],this[_0x2401[83]][_0x2401[69]],this[_0x2401[83]][_0x2401[70]],this[_0x2401[83]][_0x2401[71]]);if(this[_0x2401[83]][_0x2401[123]][_0x2401[127]]()){var _0x7490x5f=(_0x7490x34[_0x2401[70]]- _0x7490x34[_0x2401[71]])/ 2;_0x7490x34[_0x2401[68]]+= _0x7490x5f;_0x7490x34[_0x2401[69]]-= _0x7490x5f;var _0x7490x23=_0x7490x34[_0x2401[70]];_0x7490x34[_0x2401[70]]= _0x7490x34[_0x2401[71]];_0x7490x34[_0x2401[71]]= _0x7490x23};var _0x7490x60=this[_0x2401[128]](_0x7490x34);if(this[_0x2401[83]][_0x2401[123]][_0x2401[129]]){_0x7490x60[_0x2401[68]]= 2* _0x7490x34[_0x2401[68]]+ _0x7490x34[_0x2401[70]]- _0x7490x60[_0x2401[68]]};if(this[_0x2401[83]][_0x2401[123]][_0x2401[130]]){_0x7490x60[_0x2401[69]]= 2* _0x7490x34[_0x2401[69]]+ _0x7490x34[_0x2401[71]]- _0x7490x60[_0x2401[69]]};_0x7490x60= mxUtils[_0x2401[133]](_0x7490x60,_0x7490x5d,_0x7490x5e, new mxPoint(this[_0x2401[83]][_0x2401[131]](),this[_0x2401[83]][_0x2401[132]]()));return new mxRectangle(_0x7490x60[_0x2401[68]]- _0x7490x4f/ 2,_0x7490x60[_0x2401[69]]- _0x7490x4f/ 2,_0x7490x4f,_0x7490x4f)};_0x7490x54[_0x2401[0]][_0x2401[128]]= function(_0x7490x34){return null};_0x7490x54[_0x2401[0]][_0x2401[115]]= function(_0x7490x58){};_0x7490x54[_0x2401[0]][_0x2401[110]]= function(_0x7490x58){_0x7490x58[_0x2401[68]]= Math[_0x2401[34]](this[_0x2401[83]][_0x2401[68]],Math[_0x2401[6]](this[_0x2401[83]][_0x2401[68]]+ this[_0x2401[83]][_0x2401[70]],_0x7490x58[_0x2401[68]]));_0x7490x58[_0x2401[69]]= Math[_0x2401[34]](this[_0x2401[83]][_0x2401[69]],Math[_0x2401[6]](this[_0x2401[83]][_0x2401[69]]+ this[_0x2401[83]][_0x2401[71]],_0x7490x58[_0x2401[69]]))};_0x7490x54[_0x2401[0]][_0x2401[120]]= function(){};function _0x7490x61(_0x7490x33){_0x7490x54[_0x2401[24]](this,_0x7490x33)}mxUtils[_0x2401[25]](_0x7490x61,_0x7490x54);_0x7490x61[_0x2401[0]][_0x2401[128]]= function(_0x7490x34){var _0x7490x5a=this[_0x2401[84]][_0x2401[93]]()[_0x2401[113]];var _0x7490xb=Math[_0x2401[6]](_0x7490x34[_0x2401[70]],mxUtils[_0x2401[5]](this[_0x2401[83]][_0x2401[4]],_0x2401[14],60)* _0x7490x5a);var _0x7490xc=Math[_0x2401[6]](_0x7490x34[_0x2401[71]],mxUtils[_0x2401[5]](this[_0x2401[83]][_0x2401[4]],_0x2401[15],20)* _0x7490x5a);var _0x7490xd=mxUtils[_0x2401[5]](this[_0x2401[83]][_0x2401[4]],_0x2401[16],_0x2401[17]);var _0x7490x3=(_0x7490xd== _0x2401[18])?_0x7490x34[_0x2401[68]]+ _0x7490xb:_0x7490x34[_0x2401[68]]+ _0x7490x34[_0x2401[70]]- _0x7490xb;return new mxPoint(_0x7490x3,_0x7490x34[_0x2401[69]]+ _0x7490xc)};_0x7490x61[_0x2401[0]][_0x2401[115]]= function(_0x7490x58){var _0x7490x5b=this[_0x2401[83]][_0x2401[123]][_0x2401[122]]();var _0x7490x5c=mxUtils[_0x2401[124]](_0x7490x5b);var _0x7490x5d=Math[_0x2401[125]](-_0x7490x5c);var _0x7490x5e=Math[_0x2401[126]](-_0x7490x5c);var _0x7490x34= new mxRectangle(this[_0x2401[83]][_0x2401[68]],this[_0x2401[83]][_0x2401[69]],this[_0x2401[83]][_0x2401[70]],this[_0x2401[83]][_0x2401[71]]);if(this[_0x2401[83]][_0x2401[123]][_0x2401[127]]()){var _0x7490x5f=(_0x7490x34[_0x2401[70]]- _0x7490x34[_0x2401[71]])/ 2;_0x7490x34[_0x2401[68]]+= _0x7490x5f;_0x7490x34[_0x2401[69]]-= _0x7490x5f;var _0x7490x23=_0x7490x34[_0x2401[70]];_0x7490x34[_0x2401[70]]= _0x7490x34[_0x2401[71]];_0x7490x34[_0x2401[71]]= _0x7490x23};var _0x7490x60= new mxPoint(_0x7490x58[_0x2401[68]],_0x7490x58[_0x2401[69]]);_0x7490x60= mxUtils[_0x2401[133]](_0x7490x60,_0x7490x5d,_0x7490x5e, new mxPoint(this[_0x2401[83]][_0x2401[131]](),this[_0x2401[83]][_0x2401[132]]()));if(this[_0x2401[83]][_0x2401[123]][_0x2401[129]]){_0x7490x60[_0x2401[68]]= 2* _0x7490x34[_0x2401[68]]+ _0x7490x34[_0x2401[70]]- _0x7490x60[_0x2401[68]]};if(this[_0x2401[83]][_0x2401[123]][_0x2401[130]]){_0x7490x60[_0x2401[69]]= 2* _0x7490x34[_0x2401[69]]+ _0x7490x34[_0x2401[71]]- _0x7490x60[_0x2401[69]]};var _0x7490x62=this[_0x2401[134]](_0x7490x60,_0x7490x34);if(_0x7490x62!= null){if(this[_0x2401[83]][_0x2401[123]][_0x2401[129]]){_0x7490x62[_0x2401[68]]= 2* _0x7490x34[_0x2401[68]]+ _0x7490x34[_0x2401[70]]- _0x7490x62[_0x2401[68]]};if(this[_0x2401[83]][_0x2401[123]][_0x2401[130]]){_0x7490x62[_0x2401[69]]= 2* _0x7490x34[_0x2401[69]]+ _0x7490x34[_0x2401[71]]- _0x7490x62[_0x2401[69]]};_0x7490x5d= Math[_0x2401[125]](_0x7490x5c);_0x7490x5e= Math[_0x2401[126]](_0x7490x5c);_0x7490x62= mxUtils[_0x2401[133]](_0x7490x62,_0x7490x5d,_0x7490x5e, new mxPoint(this[_0x2401[83]][_0x2401[131]](),this[_0x2401[83]][_0x2401[132]]()));_0x7490x58[_0x2401[68]]= _0x7490x62[_0x2401[68]];_0x7490x58[_0x2401[69]]= _0x7490x62[_0x2401[69]]}};_0x7490x61[_0x2401[0]][_0x2401[134]]= function(_0x7490x60,_0x7490x34){var _0x7490xd=mxUtils[_0x2401[5]](this[_0x2401[83]][_0x2401[4]],_0x2401[16],_0x2401[17]);var _0x7490xb=(_0x7490xd== _0x2401[18])?_0x7490x60[_0x2401[68]]- _0x7490x34[_0x2401[68]]:_0x7490x34[_0x2401[68]]+ _0x7490x34[_0x2401[70]]- _0x7490x60[_0x2401[68]];var _0x7490xc=_0x7490x60[_0x2401[69]]- _0x7490x34[_0x2401[69]];var _0x7490x5a=this[_0x2401[84]][_0x2401[93]]()[_0x2401[113]];this[_0x2401[83]][_0x2401[4]][_0x2401[14]]= Math[_0x2401[135]](Math[_0x2401[34]](1,_0x7490xb)/ _0x7490x5a);this[_0x2401[83]][_0x2401[4]][_0x2401[15]]= Math[_0x2401[135]](Math[_0x2401[34]](1,_0x7490xc)/ _0x7490x5a)};_0x7490x61[_0x2401[0]][_0x2401[120]]= function(){var _0x7490x63=this[_0x2401[84]][_0x2401[136]]();_0x7490x63[_0x2401[137]]();try{this[_0x2401[83]][_0x2401[85]][_0x2401[84]][_0x2401[139]](_0x2401[14],this[_0x2401[83]][_0x2401[4]][_0x2401[14]],[this[_0x2401[83]][_0x2401[138]]]);this[_0x2401[83]][_0x2401[85]][_0x2401[84]][_0x2401[139]](_0x2401[15],this[_0x2401[83]][_0x2401[4]][_0x2401[15]],[this[_0x2401[83]][_0x2401[138]]])}finally{_0x7490x63[_0x2401[140]]()}};function _0x7490x64(_0x7490x33){_0x7490x61[_0x2401[24]](this,_0x7490x33)}mxUtils[_0x2401[25]](_0x7490x64,_0x7490x61);_0x7490x64[_0x2401[0]][_0x2401[128]]= function(_0x7490x34){var _0x7490x5a=this[_0x2401[84]][_0x2401[93]]()[_0x2401[113]];var _0x7490x65=mxUtils[_0x2401[5]](this[_0x2401[83]][_0x2401[4]],mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE);return new mxPoint(_0x7490x34[_0x2401[68]]+ _0x7490x34[_0x2401[70]]/ 2,_0x7490x34[_0x2401[69]]+ Math[_0x2401[6]](_0x7490x34[_0x2401[71]],_0x7490x65* _0x7490x5a))};_0x7490x64[_0x2401[0]][_0x2401[134]]= function(_0x7490x58,_0x7490x34){_0x7490x58[_0x2401[68]]= _0x7490x34[_0x2401[68]]+ _0x7490x34[_0x2401[70]]/ 2;startSize= _0x7490x58[_0x2401[69]]- _0x7490x34[_0x2401[69]];var _0x7490x5a=this[_0x2401[84]][_0x2401[93]]()[_0x2401[113]];this[_0x2401[83]][_0x2401[4]][_0x2401[141]]= Math[_0x2401[135]](Math[_0x2401[34]](1,startSize)/ _0x7490x5a);return _0x7490x58};_0x7490x64[_0x2401[0]][_0x2401[120]]= function(){this[_0x2401[83]][_0x2401[85]][_0x2401[84]][_0x2401[139]](_0x2401[141],this[_0x2401[83]][_0x2401[4]][_0x2401[141]],[this[_0x2401[83]][_0x2401[138]]])};function _0x7490x66(_0x7490x33){_0x7490x61[_0x2401[24]](this,_0x7490x33)}mxUtils[_0x2401[25]](_0x7490x66,_0x7490x61);_0x7490x66[_0x2401[0]][_0x2401[142]]= 20;_0x7490x66[_0x2401[0]][_0x2401[143]]= 1;_0x7490x66[_0x2401[0]][_0x2401[128]]= function(_0x7490x34){var _0x7490x5a=this[_0x2401[84]][_0x2401[93]]()[_0x2401[113]];var _0x7490x67=Math[_0x2401[6]](_0x7490x34[_0x2401[70]],Math[_0x2401[6]](_0x7490x34[_0x2401[71]],mxUtils[_0x2401[5]](this[_0x2401[83]][_0x2401[4]],_0x2401[2],this[_0x2401[142]])* _0x7490x5a/ this[_0x2401[143]]));return new mxPoint(_0x7490x34[_0x2401[68]]+ _0x7490x67,_0x7490x34[_0x2401[69]]+ _0x7490x67)};_0x7490x66[_0x2401[0]][_0x2401[134]]= function(_0x7490x60,_0x7490x34){var _0x7490x4f=Math[_0x2401[34]](0,Math[_0x2401[6]](Math[_0x2401[6]](_0x7490x34[_0x2401[70]]/ this[_0x2401[143]],_0x7490x60[_0x2401[68]]- _0x7490x34[_0x2401[68]]),Math[_0x2401[6]](_0x7490x34[_0x2401[71]]/ this[_0x2401[143]],_0x7490x60[_0x2401[69]]- _0x7490x34[_0x2401[69]])));var _0x7490x5a=this[_0x2401[84]][_0x2401[93]]()[_0x2401[113]];this[_0x2401[83]][_0x2401[4]][_0x2401[2]]= Math[_0x2401[135]](Math[_0x2401[34]](1,_0x7490x4f)/ _0x7490x5a)* this[_0x2401[143]];return new mxPoint(_0x7490x34[_0x2401[68]]+ _0x7490x4f,_0x7490x34[_0x2401[69]]+ _0x7490x4f)};_0x7490x66[_0x2401[0]][_0x2401[120]]= function(){this[_0x2401[83]][_0x2401[85]][_0x2401[84]][_0x2401[139]](_0x2401[2],this[_0x2401[83]][_0x2401[4]][_0x2401[2]],[this[_0x2401[83]][_0x2401[138]]])};function _0x7490x68(_0x7490x33){_0x7490x66[_0x2401[24]](this,_0x7490x33)}mxUtils[_0x2401[25]](_0x7490x68,_0x7490x66);_0x7490x68[_0x2401[0]][_0x2401[142]]= 30;_0x7490x68[_0x2401[0]][_0x2401[143]]= 2;function _0x7490x69(_0x7490x33){_0x7490x66[_0x2401[24]](this,_0x7490x33)}mxUtils[_0x2401[25]](_0x7490x69,_0x7490x66);_0x7490x69[_0x2401[0]][_0x2401[142]]= 30;_0x7490x69[_0x2401[0]][_0x2401[143]]= 1;_0x7490x69[_0x2401[0]][_0x2401[128]]= function(_0x7490x34){var _0x7490x5a=this[_0x2401[84]][_0x2401[93]]()[_0x2401[113]];var _0x7490x67=Math[_0x2401[6]](_0x7490x34[_0x2401[70]],Math[_0x2401[6]](_0x7490x34[_0x2401[71]],mxUtils[_0x2401[5]](this[_0x2401[83]][_0x2401[4]],_0x2401[2],this[_0x2401[142]])* _0x7490x5a/ this[_0x2401[143]]));return new mxPoint(_0x7490x34[_0x2401[68]]+ _0x7490x34[_0x2401[70]]- _0x7490x67,_0x7490x34[_0x2401[69]]+ _0x7490x67)};_0x7490x69[_0x2401[0]][_0x2401[134]]= function(_0x7490x60,_0x7490x34){var _0x7490x4f=Math[_0x2401[34]](0,Math[_0x2401[6]](Math[_0x2401[6]](_0x7490x34[_0x2401[70]]/ this[_0x2401[143]],_0x7490x60[_0x2401[68]]- _0x7490x34[_0x2401[68]]+ _0x7490x34[_0x2401[70]]),Math[_0x2401[6]](_0x7490x34[_0x2401[71]]/ this[_0x2401[143]],_0x7490x60[_0x2401[69]]- _0x7490x34[_0x2401[69]])));var _0x7490x5a=this[_0x2401[84]][_0x2401[93]]()[_0x2401[113]];this[_0x2401[83]][_0x2401[4]][_0x2401[2]]= Math[_0x2401[135]](Math[_0x2401[34]](1,_0x7490x4f)/ _0x7490x5a)* this[_0x2401[143]];return new mxPoint(_0x7490x34[_0x2401[68]]+ _0x7490x34[_0x2401[70]]- _0x7490x4f,_0x7490x34[_0x2401[69]]+ _0x7490x4f)};function _0x7490x6a(_0x7490x33){_0x7490x66[_0x2401[24]](this,_0x7490x33)}mxUtils[_0x2401[25]](_0x7490x6a,_0x7490x66);_0x7490x6a[_0x2401[0]][_0x2401[142]]= 0.2;_0x7490x6a[_0x2401[0]][_0x2401[143]]= 1;_0x7490x6a[_0x2401[0]][_0x2401[128]]= function(_0x7490x34){var _0x7490x67=mxUtils[_0x2401[5]](this[_0x2401[83]][_0x2401[4]],_0x2401[2],this[_0x2401[142]]);return new mxPoint(_0x7490x34[_0x2401[68]]+ _0x7490x34[_0x2401[70]]* _0x7490x67,_0x7490x34[_0x2401[69]]+ _0x7490x34[_0x2401[71]]/ 2)};_0x7490x6a[_0x2401[0]][_0x2401[134]]= function(_0x7490x60,_0x7490x34){var _0x7490x4f=Math[_0x2401[6]](1,(_0x7490x60[_0x2401[68]]- _0x7490x34[_0x2401[68]])/ _0x7490x34[_0x2401[70]]);this[_0x2401[83]][_0x2401[4]][_0x2401[2]]= _0x7490x4f;return new mxPoint(_0x7490x34[_0x2401[68]]+ _0x7490x4f* _0x7490x34[_0x2401[70]],_0x7490x34[_0x2401[69]]+ _0x7490x34[_0x2401[71]]/ 2)};function _0x7490x6b(_0x7490x33){_0x7490x66[_0x2401[24]](this,_0x7490x33)}mxUtils[_0x2401[25]](_0x7490x6b,_0x7490x66);_0x7490x6b[_0x2401[0]][_0x2401[142]]= 0.4;_0x7490x6b[_0x2401[0]][_0x2401[143]]= 1;_0x7490x6b[_0x2401[0]][_0x2401[128]]= function(_0x7490x34){var _0x7490x67=mxUtils[_0x2401[5]](this[_0x2401[83]][_0x2401[4]],_0x2401[2],this[_0x2401[142]]);return new mxPoint(_0x7490x34[_0x2401[68]]+ _0x7490x34[_0x2401[70]]/ 2,_0x7490x34[_0x2401[69]]+ _0x7490x67* _0x7490x34[_0x2401[71]]/ 2)};_0x7490x6b[_0x2401[0]][_0x2401[134]]= function(_0x7490x60,_0x7490x34){var _0x7490x4f=Math[_0x2401[34]](0,Math[_0x2401[6]](1,((_0x7490x60[_0x2401[69]]- _0x7490x34[_0x2401[69]])/ _0x7490x34[_0x2401[71]])* 2));this[_0x2401[83]][_0x2401[4]][_0x2401[2]]= _0x7490x4f;return new mxPoint(_0x7490x34[_0x2401[68]]+ _0x7490x34[_0x2401[70]]/ 2,_0x7490x34[_0x2401[69]]+ _0x7490x4f* _0x7490x34[_0x2401[71]]/ 2)};var _0x7490x6c={"\x73\x77\x69\x6D\x6C\x61\x6E\x65":_0x7490x64,"\x66\x6F\x6C\x64\x65\x72":_0x7490x61,"\x63\x75\x62\x65":_0x7490x66,"\x63\x61\x72\x64":_0x7490x68,"\x6E\x6F\x74\x65":_0x7490x69,"\x73\x74\x65\x70":_0x7490x6a,"\x74\x61\x70\x65":_0x7490x6b};var _0x7490x6d=mxGraph[_0x2401[0]][_0x2401[144]];mxGraph[_0x2401[0]][_0x2401[144]]= function(_0x7490x33){if(_0x7490x33!= null){var _0x7490x6e=_0x7490x6c[_0x7490x33[_0x2401[4]][_0x2401[123]]];if(_0x7490x6e!= null){return new _0x7490x6e(_0x7490x33)}};return _0x7490x6d[_0x2401[30]](this,arguments)}};mxGraph[_0x2401[0]][_0x2401[145]]= function(_0x7490x6f,_0x7490x50){if(_0x7490x6f!= null&& _0x7490x6f[_0x2401[123]]!= null){if(_0x7490x6f[_0x2401[123]][_0x2401[146]]!= null){if(_0x7490x6f[_0x2401[123]][_0x2401[146]]!= null){return _0x7490x6f[_0x2401[123]][_0x2401[146]][_0x2401[147]]}}else {if(_0x7490x6f[_0x2401[123]][_0x2401[147]]!= null){return _0x7490x6f[_0x2401[123]][_0x2401[147]]}}};return null};mxRectangleShape[_0x2401[0]][_0x2401[147]]= [ new mxConnectionConstraint( new mxPoint(0.25,0),true), new mxConnectionConstraint( new mxPoint(0.5,0),true), new mxConnectionConstraint( new mxPoint(0.75,0),true), new mxConnectionConstraint( new mxPoint(0,0.25),true), new mxConnectionConstraint( new mxPoint(0,0.5),true), new mxConnectionConstraint( new mxPoint(0,0.75),true), new mxConnectionConstraint( new mxPoint(1,0.25),true), new mxConnectionConstraint( new mxPoint(1,0.5),true), new mxConnectionConstraint( new mxPoint(1,0.75),true), new mxConnectionConstraint( new mxPoint(0.25,1),true), new mxConnectionConstraint( new mxPoint(0.5,1),true), new mxConnectionConstraint( new mxPoint(0.75,1),true)];mxLabel[_0x2401[0]][_0x2401[147]]= mxRectangleShape[_0x2401[0]][_0x2401[147]];mxImageShape[_0x2401[0]][_0x2401[147]]= mxRectangleShape[_0x2401[0]][_0x2401[147]];mxSwimlane[_0x2401[0]][_0x2401[147]]= mxRectangleShape[_0x2401[0]][_0x2401[147]];_0x7490x14[_0x2401[0]][_0x2401[147]]= mxRectangleShape[_0x2401[0]][_0x2401[147]];_0x7490x9[_0x2401[0]][_0x2401[147]]= mxRectangleShape[_0x2401[0]][_0x2401[147]];_0x7490x10[_0x2401[0]][_0x2401[147]]= mxRectangleShape[_0x2401[0]][_0x2401[147]];_0x7490x1[_0x2401[0]][_0x2401[147]]= mxRectangleShape[_0x2401[0]][_0x2401[147]];_0x7490xa[_0x2401[0]][_0x2401[147]]= mxRectangleShape[_0x2401[0]][_0x2401[147]];mxCylinder[_0x2401[0]][_0x2401[147]]= [ new mxConnectionConstraint( new mxPoint(0.15,0.05),false), new mxConnectionConstraint( new mxPoint(0.5,0),true), new mxConnectionConstraint( new mxPoint(0.85,0.05),false), new mxConnectionConstraint( new mxPoint(0,0.3),true), new mxConnectionConstraint( new mxPoint(0,0.5),true), new mxConnectionConstraint( new mxPoint(0,0.7),true), new mxConnectionConstraint( new mxPoint(1,0.3),true), new mxConnectionConstraint( new mxPoint(1,0.5),true), new mxConnectionConstraint( new mxPoint(1,0.7),true), new mxConnectionConstraint( new mxPoint(0.15,0.95),false), new mxConnectionConstraint( new mxPoint(0.5,1),true), new mxConnectionConstraint( new mxPoint(0.85,0.95),false)];_0x7490x25[_0x2401[0]][_0x2401[147]]= [ new mxConnectionConstraint( new mxPoint(0.25,0.1),false), new mxConnectionConstraint( new mxPoint(0.5,0),false), new mxConnectionConstraint( new mxPoint(0.75,0.1),false), new mxConnectionConstraint( new mxPoint(0,1/ 3),false), new mxConnectionConstraint( new mxPoint(0,1),false), new mxConnectionConstraint( new mxPoint(1,1/ 3),false), new mxConnectionConstraint( new mxPoint(1,1),false), new mxConnectionConstraint( new mxPoint(0.5,0.5),false)];_0x7490x28[_0x2401[0]][_0x2401[147]]= [ new mxConnectionConstraint( new mxPoint(0.25,0),true), new mxConnectionConstraint( new mxPoint(0.5,0),true), new mxConnectionConstraint( new mxPoint(0.75,0),true), new mxConnectionConstraint( new mxPoint(0,0.3),true), new mxConnectionConstraint( new mxPoint(0,0.7),true), new mxConnectionConstraint( new mxPoint(1,0.25),true), new mxConnectionConstraint( new mxPoint(1,0.5),true), new mxConnectionConstraint( new mxPoint(1,0.75),true), new mxConnectionConstraint( new mxPoint(0.25,1),true), new mxConnectionConstraint( new mxPoint(0.5,1),true), new mxConnectionConstraint( new mxPoint(0.75,1),true)];mxActor[_0x2401[0]][_0x2401[147]]= [ new mxConnectionConstraint( new mxPoint(0.5,0),true), new mxConnectionConstraint( new mxPoint(0.25,0.2),false), new mxConnectionConstraint( new mxPoint(0.1,0.5),false), new mxConnectionConstraint( new mxPoint(0,0.75),true), new mxConnectionConstraint( new mxPoint(0.75,0.25),false), new mxConnectionConstraint( new mxPoint(0.9,0.5),false), new mxConnectionConstraint( new mxPoint(1,0.75),true), new mxConnectionConstraint( new mxPoint(0.25,1),true), new mxConnectionConstraint( new mxPoint(0.5,1),true), new mxConnectionConstraint( new mxPoint(0.75,1),true)];_0x7490x11[_0x2401[0]][_0x2401[147]]= [ new mxConnectionConstraint( new mxPoint(0,0.35),false), new mxConnectionConstraint( new mxPoint(0,0.5),false), new mxConnectionConstraint( new mxPoint(0,0.65),false), new mxConnectionConstraint( new mxPoint(1,0.35),false), new mxConnectionConstraint( new mxPoint(1,0.5),false), new mxConnectionConstraint( new mxPoint(1,0.65),false), new mxConnectionConstraint( new mxPoint(0.25,1),false), new mxConnectionConstraint( new mxPoint(0.75,0),false)];_0x7490x13[_0x2401[0]][_0x2401[147]]= [ new mxConnectionConstraint( new mxPoint(0.25,0),true), new mxConnectionConstraint( new mxPoint(0.5,0),true), new mxConnectionConstraint( new mxPoint(0.75,0),true), new mxConnectionConstraint( new mxPoint(0.25,1),true), new mxConnectionConstraint( new mxPoint(0.5,1),true), new mxConnectionConstraint( new mxPoint(0.75,1),true), new mxConnectionConstraint( new mxPoint(0.1,0.25),false), new mxConnectionConstraint( new mxPoint(0.2,0.5),false), new mxConnectionConstraint( new mxPoint(0.1,0.75),false), new mxConnectionConstraint( new mxPoint(0.9,0.25),false), new mxConnectionConstraint( new mxPoint(1,0.5),false), new mxConnectionConstraint( new mxPoint(0.9,0.75),false)];mxLine[_0x2401[0]][_0x2401[147]]= [ new mxConnectionConstraint( new mxPoint(0,0.5),false), new mxConnectionConstraint( new mxPoint(0.25,0.5),false), new mxConnectionConstraint( new mxPoint(0.75,0.5),false), new mxConnectionConstraint( new mxPoint(1,0.5),false)];_0x7490x26[_0x2401[0]][_0x2401[147]]= [ new mxConnectionConstraint( new mxPoint(0.5,0),false), new mxConnectionConstraint( new mxPoint(0.5,1),false)];mxEllipse[_0x2401[0]][_0x2401[147]]= [ new mxConnectionConstraint( new mxPoint(0,0),true), new mxConnectionConstraint( new mxPoint(1,0),true), new mxConnectionConstraint( new mxPoint(0,1),true), new mxConnectionConstraint( new mxPoint(1,1),true), new mxConnectionConstraint( new mxPoint(0.5,0),true), new mxConnectionConstraint( new mxPoint(0.5,1),true), new mxConnectionConstraint( new mxPoint(0,0.5),true), new mxConnectionConstraint( new mxPoint(1,0.5))];mxDoubleEllipse[_0x2401[0]][_0x2401[147]]= mxEllipse[_0x2401[0]][_0x2401[147]];mxRhombus[_0x2401[0]][_0x2401[147]]= mxEllipse[_0x2401[0]][_0x2401[147]];mxTriangle[_0x2401[0]][_0x2401[147]]= [ new mxConnectionConstraint( new mxPoint(0,0.25),true), new mxConnectionConstraint( new mxPoint(0,0.5),true), new mxConnectionConstraint( new mxPoint(0,0.75),true), new mxConnectionConstraint( new mxPoint(0.5,0),true), new mxConnectionConstraint( new mxPoint(0.5,1),true), new mxConnectionConstraint( new mxPoint(1,0.5),true)];mxHexagon[_0x2401[0]][_0x2401[147]]= [ new mxConnectionConstraint( new mxPoint(0.375,0),true), new mxConnectionConstraint( new mxPoint(0.5,0),true), new mxConnectionConstraint( new mxPoint(0.625,0),true), new mxConnectionConstraint( new mxPoint(0.125,0.25),false), new mxConnectionConstraint( new mxPoint(0,0.5),true), new mxConnectionConstraint( new mxPoint(0.125,0.75),false), new mxConnectionConstraint( new mxPoint(0.875,0.25),false), new mxConnectionConstraint( new mxPoint(0,0.5),true), new mxConnectionConstraint( new mxPoint(1,0.5),true), new mxConnectionConstraint( new mxPoint(0.875,0.75),false), new mxConnectionConstraint( new mxPoint(0.375,1),true), new mxConnectionConstraint( new mxPoint(0.5,1),true), new mxConnectionConstraint( new mxPoint(0.625,1),true)];mxCloud[_0x2401[0]][_0x2401[147]]= [ new mxConnectionConstraint( new mxPoint(0.25,0.25),false), new mxConnectionConstraint( new mxPoint(0.4,0.1),false), new mxConnectionConstraint( new mxPoint(0.16,0.55),false), new mxConnectionConstraint( new mxPoint(0.07,0.4),false), new mxConnectionConstraint( new mxPoint(0.31,0.8),false), new mxConnectionConstraint( new mxPoint(0.13,0.77),false), new mxConnectionConstraint( new mxPoint(0.8,0.8),false), new mxConnectionConstraint( new mxPoint(0.55,0.95),false), new mxConnectionConstraint( new mxPoint(0.875,0.5),false), new mxConnectionConstraint( new mxPoint(0.96,0.7),false), new mxConnectionConstraint( new mxPoint(0.625,0.2),false), new mxConnectionConstraint( new mxPoint(0.88,0.25),false)];mxArrow[_0x2401[0]][_0x2401[147]]= null})() \ No newline at end of file diff --git a/public/assets/plugins/square/js/Sidebar.js b/public/assets/plugins/square/js/Sidebar.js index 6e4129c..472e41c 100644 --- a/public/assets/plugins/square/js/Sidebar.js +++ b/public/assets/plugins/square/js/Sidebar.js @@ -1,932 +1 @@ -'use strict'; - -/** - * Construcs a new sidebar for the given editor. - */ -function Sidebar(editorUi, container) { - this.editorUi = editorUi; - this.container = container; - this.palettes = new Object(); - this.showTooltips = true; - this.graph = new Graph(document.createElement('div'), null, null, this.editorUi - .editor.graph.getStylesheet()); - this.graph.resetViewOnRootChange = false; - this.graph.foldingEnabled = false; - this.graph.setConnectable(false); - this.graph.autoScroll = false; - this.graph.setTooltips(false); - this.graph.setEnabled(false); - - // Container must be in the DOM for correct HTML rendering - this.graph.container.style.visibility = 'hidden'; - this.graph.container.style.position = 'absolute'; - document.body.appendChild(this.graph.container); - - if (!mxClient.IS_TOUCH) { - mxEvent.addListener(document, 'mouseup', mxUtils.bind(this, function() { - this.showTooltips = true; - })); - - // Enables tooltips after scroll - mxEvent.addListener(container, 'scroll', mxUtils.bind(this, function() { - this.showTooltips = true; - })); - - mxEvent.addListener(document, 'mousedown', mxUtils.bind(this, function() { - this.showTooltips = false; - this.hideTooltip(); - })); - - mxEvent.addListener(document, 'mousemove', mxUtils.bind(this, function(evt) { - var src = mxEvent.getSource(evt); - - while (src != null) { - if (src == this.currentElt) { - return; - } - - src = src.parentNode; - } - - this.hideTooltip(); - })); - - // Handles mouse leaving the window - mxEvent.addListener(document, 'mouseout', mxUtils.bind(this, function(evt) { - if (evt.toElement == null && evt.relatedTarget == null) { - this.hideTooltip(); - } - })); - } - - this.init(); - - // Pre-fetches tooltip image - new Image().src = IMAGE_PATH + '/tooltip.png'; -}; - -/** - * Adds all palettes to the sidebar. - */ -Sidebar.prototype.init = function() { - var dir = STENCIL_PATH; - console.log(dir); - - this.addImagePalette('entry', mxResources.get('entry'), dir + '/entry/', - '_128x128.png', ['start', 'finally', 'end'], [mxResources.get('start'), - mxResources.get('finally'), mxResources.get('end') - ]); - this.addImagePalette('call_management', mxResources.get('call_management'), - dir + '/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('variable', mxResources.get('variable'), dir + - '/variable/', '_128x128.png', ['set', 'math'], [mxResources.get('set'), - mxResources.get('math') - ]); - this.addImagePalette('playback', mxResources.get('playback'), dir + - '/playback/', '_128x128.png', ['playback', 'menu', - 'saydigits', 'saynumber', 'sayphonetic', 'tts', 'ispeechtts', 'getdigits', 'getsecretdigits' - ], [mxResources.get('playback'), mxResources - .get('menu'), mxResources.get('saydigits'), mxResources.get('saynumber'), - mxResources.get('sayphonetic'), mxResources.get('tts'), mxResources.get( - 'ispeechtts'), mxResources.get('getdigits'), mxResources.get('getsecretdigits') - ]); - this.addImagePalette('recording', mxResources.get('recording'), dir + - '/recording/', '_128x128.png', ['record'], [mxResources.get('record')]); - this.addImagePalette('integrationServer', mxResources.get('integrationServer'), - dir + '/integration_server/', '_128x128.png', ['database', 'ispeechasr', - 'sendSMS', 'sendMail' - ], [ - mxResources.get('database'), mxResources.get('ispeechasr'), mxResources.get( - 'sendSMS'), mxResources.get( - 'sendMail') - ]); - this.addImagePalette('callflow', mxResources.get('callflow'), dir + - '/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'), dir + '/stats/', - '_128x128.png', [ - // 'queuelog', - 'goal' - ], [ - // mxResources.get('queuelog'), - mxResources.get('goal') - ]); - this.addImagePalette('general', mxResources.get('general'), dir + '/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') - ]); - -}; - -/** - * Specifies if tooltips should be visible. Default is true. - */ -Sidebar.prototype.enableTooltips = !mxClient.IS_TOUCH; - -/** - * Specifies the delay for the tooltip. Default is 16 px. - */ -Sidebar.prototype.tooltipBorder = 16; - -/** - * Specifies the delay for the tooltip. Default is 3 px. - */ -Sidebar.prototype.thumbBorder = 3; - -/** - * Specifies the delay for the tooltip. Default is 300 ms. - */ -Sidebar.prototype.tooltipDelay = 300; - -/** - * Specifies if edges should be used as templates if clicked. Default is true. - */ -Sidebar.prototype.installEdges = true; - -/** - * Specifies the URL of the gear image. - */ -Sidebar.prototype.gearImage = STENCIL_PATH + '/clipart/Gear_128x128.png'; - -/** - * Specifies the width of the thumbnails. - */ -Sidebar.prototype.thumbWidth = 34; - -/** - * Specifies the height of the thumbnails. - */ -Sidebar.prototype.thumbHeight = 34; - -/** - * Specifies the padding for the thumbnails. Default is 3. - */ -Sidebar.prototype.thumbPadding = 2; - -/** - * Specifies the size of the sidebar titles. - */ -Sidebar.prototype.sidebarTitleSize = 9; - -/** - * Specifies if titles in the sidebar should be enabled. - */ -Sidebar.prototype.sidebarTitles = false; - -/** - * Specifies if titles in the tooltips should be enabled. - */ -Sidebar.prototype.tooltipTitles = false; - -/** - * Adds all palettes to the sidebar. - */ -Sidebar.prototype.showTooltip = function(elt, cells, title, showLabel) { - if (this.enableTooltips && this.showTooltips) { - if (this.currentElt != elt) { - if (this.thread != null) { - window.clearTimeout(this.thread); - this.thread = null; - } - - var show = mxUtils.bind(this, function() { - // Lazy creation of the DOM nodes and graph instance - if (this.tooltip == null) { - this.tooltip = document.createElement('div'); - this.tooltip.className = 'geSidebarTooltip'; - document.body.appendChild(this.tooltip); - - this.graph2 = new Graph(this.tooltip, null, null, this.editorUi.editor.graph - .getStylesheet()); - this.graph2.view.setTranslate(this.tooltipBorder, this.tooltipBorder); - this.graph2.resetViewOnRootChange = false; - this.graph2.foldingEnabled = false; - this.graph2.autoScroll = false; - this.graph2.setTooltips(false); - this.graph2.setConnectable(false); - this.graph2.setEnabled(false); - - if (!mxClient.IS_SVG) { - this.graph2.view.canvas.style.position = 'relative'; - } - - this.tooltipImage = mxUtils.createImage(IMAGE_PATH + '/tooltip.png'); - this.tooltipImage.style.position = 'absolute'; - this.tooltipImage.style.width = '14px'; - this.tooltipImage.style.height = '27px'; - - document.body.appendChild(this.tooltipImage); - } - - this.tooltip.style.display = 'block'; - this.graph2.labelsVisible = (showLabel == null || showLabel); - this.graph2.model.clear(); - this.graph2.addCells(cells); - - var bounds = this.graph2.getGraphBounds(); - var width = bounds.width + 2 * this.tooltipBorder; - var height = bounds.height + 2 * this.tooltipBorder; - - if (mxClient.IS_QUIRKS) { - width += 4; - height += 4; - this.tooltip.style.overflow = 'hidden'; - } else { - this.tooltip.style.overflow = 'visible'; - } - - this.tooltipImage.style.visibility = 'visible'; - this.tooltip.style.width = width + 'px'; - - // Adds title for entry - if (this.tooltipTitles && title != null && title.length > 0) { - if (this.tooltipTitle == null) { - this.tooltipTitle = document.createElement('div'); - this.tooltipTitle.style.borderTop = '1px solid gray'; - this.tooltipTitle.style.textAlign = 'center'; - this.tooltipTitle.style.width = '100%'; - - // Oversize titles are cut-off currently. Should make tooltip wider later. - this.tooltipTitle.style.overflow = 'hidden'; - - if (mxClient.IS_SVG) { - this.tooltipTitle.style.paddingTop = '2px'; - } else { - this.tooltipTitle.style.position = 'absolute'; - this.tooltipTitle.style.paddingTop = '6px'; - } - - this.tooltip.appendChild(this.tooltipTitle); - } else { - this.tooltipTitle.innerHTML = ''; - } - - this.tooltipTitle.style.display = ''; - mxUtils.write(this.tooltipTitle, title); - - var dy = this.tooltipTitle.offsetHeight + 10; - height += dy; - - if (mxClient.IS_SVG) { - this.tooltipTitle.style.marginTop = (-dy) + 'px'; - } else { - height -= 6; - this.tooltipTitle.style.top = (height - dy) + 'px'; - } - } else if (this.tooltipTitle != null && this.tooltipTitle.parentNode != - null) { - this.tooltipTitle.style.display = 'none'; - } - - this.tooltip.style.height = height + 'px'; - var x0 = -Math.min(0, bounds.x - this.tooltipBorder); - var y0 = -Math.min(0, bounds.y - this.tooltipBorder); - - var left = this.container.clientWidth + this.editorUi.splitSize + 3; - var top = Math.max(0, (this.container.offsetTop + elt.offsetTop - this.container - .scrollTop - height / 2 + 16)); - - if (mxClient.IS_SVG) { - this.graph2.view.canvas.setAttribute('transform', 'translate(' + x0 + - ',' + y0 + ')'); - } else { - this.graph2.view.drawPane.style.left = x0 + 'px'; - this.graph2.view.drawPane.style.top = y0 + 'px'; - } - - // Workaround for ignored position CSS style in IE9 - // (changes to relative without the following line) - // Added width of the page-sidebar - left += document.getElementById('page-sidebar').offsetWidth; - // Added static height of the page-navbar - top += 90; - - this.tooltip.style.position = 'absolute'; - this.tooltip.style.left = left + 'px'; - this.tooltip.style.top = top + 'px'; - this.tooltipImage.style.left = (left - 13) + 'px'; - this.tooltipImage.style.top = (top + height / 2 - 13) + 'px'; - }); - - if (this.tooltip != null && this.tooltip.style.display != 'none') { - show(); - } else { - this.thread = window.setTimeout(show, this.tooltipDelay); - } - - this.currentElt = elt; - } - } -}; - -/** - * Hides the current tooltip. - */ -Sidebar.prototype.hideTooltip = function() { - if (this.thread != null) { - window.clearTimeout(this.thread); - this.thread = null; - } - - if (this.tooltip != null) { - this.tooltip.style.display = 'none'; - this.tooltipImage.style.visibility = 'hidden'; - this.currentElt = null; - } -}; - -/** - * Creates and returns the given title element. - */ -Sidebar.prototype.createTitle = function(label) { - var elt = document.createElement('a'); - elt.setAttribute('href', 'javascript:void(0);'); - elt.className = 'geTitle'; - mxUtils.write(elt, label); - - return elt; -}; - -/** - * Creates a thumbnail for the given cells. - */ -Sidebar.prototype.createThumb = function(cells, width, height, parent, title, - showLabel) { - this.graph.labelsVisible = (showLabel == null || showLabel); - this.graph.view.scaleAndTranslate(1, 0, 0); - this.graph.addCells(cells); - var bounds = this.graph.getGraphBounds(); - var corr = this.thumbBorder; - var s = Math.min((width - 2) / (bounds.width - bounds.x + corr), (height - 2) / - (bounds.height - bounds.y + corr)); - var x0 = -Math.min(bounds.x, 0); - var y0 = -Math.min(bounds.y, 0); - this.graph.view.scaleAndTranslate(s, x0, y0); - - bounds = this.graph.getGraphBounds(); - var dx = Math.max(0, Math.floor((width - bounds.width - bounds.x) / 2)); - var dy = Math.max(0, Math.floor((height - bounds.height - bounds.y) / 2)); - - var node = null; - - // For supporting HTML labels in IE9 standards mode the container is cloned instead - if (this.graph.dialect == mxConstants.DIALECT_SVG && !mxClient.NO_FO) { - node = this.graph.view.getCanvas().ownerSVGElement.cloneNode(true); - } - // LATER: Check if deep clone can be used for quirks if container in DOM - else { - node = this.graph.container.cloneNode(false); - node.innerHTML = this.graph.container.innerHTML; - } - - this.graph.getModel().clear(); - - // Catch-all event handling - if (mxClient.IS_IE6) { - parent.style.backgroundImage = 'url(' + this.editorUi.editor.transparentImage + - ')'; - } - - var dd = 3; - node.style.position = 'relative'; - node.style.overflow = 'hidden'; - node.style.cursor = 'pointer'; - node.style.left = (dx + dd) + 'px'; - node.style.top = (dy + dd) + 'px'; - node.style.width = width + 'px'; - node.style.height = height + 'px'; - node.style.visibility = ''; - node.style.minWidth = ''; - node.style.minHeight = ''; - - parent.appendChild(node); - - // Adds title for sidebar entries - if (this.sidebarTitles && title != null) { - var border = (mxClient.IS_QUIRKS) ? 2 * this.thumbPadding + 2 : 0; - parent.style.height = (this.thumbHeight + border + this.sidebarTitleSize + 8) + - 'px'; - - var div = document.createElement('div'); - div.style.fontSize = this.sidebarTitleSize + 'px'; - div.style.textAlign = 'center'; - div.style.whiteSpace = 'nowrap'; - - if (mxClient.IS_IE) { - div.style.height = (this.sidebarTitleSize + 12) + 'px'; - } - - div.style.paddingTop = '4px'; - mxUtils.write(div, title); - parent.appendChild(div); - } -}; - -/** - * Creates and returns a new palette item for the given image. - */ -Sidebar.prototype.createItem = function(cells, title, showLabel) { - var elt = document.createElement('a'); - elt.setAttribute('href', 'javascript:void(0);'); - elt.className = 'geItem'; - elt.style.overflow = 'hidden'; - var border = (mxClient.IS_QUIRKS) ? 8 + 2 * this.thumbPadding : 6; - elt.style.width = (this.thumbWidth + border) + 'px'; - elt.style.height = (this.thumbHeight + border) + 'px'; - elt.style.padding = this.thumbPadding + 'px'; - - // Blocks default click action - mxEvent.addListener(elt, 'click', function(evt) { - mxEvent.consume(evt); - }); - - this.createThumb(cells, this.thumbWidth, this.thumbHeight, elt, title, - showLabel); - - return elt; -}; - -/** - * Creates a drop handler for inserting the given cells. - */ -Sidebar.prototype.createDropHandler = function(cells, allowSplit) { - return function(graph, evt, target, x, y) { - if (graph.isEnabled()) { - cells = graph.getImportableCells(cells); - - if (cells.length > 0) { - var validDropTarget = (target != null) ? - graph.isValidDropTarget(target, cells, evt) : false; - var select = null; - - if (target != null && !validDropTarget) { - target = null; - } - - // Splits the target edge or inserts into target group - if (allowSplit && graph.isSplitEnabled() && graph.isSplitTarget(target, - cells, evt)) { - graph.splitEdge(target, cells, null, x, y); - select = cells; - } else if (cells.length > 0) { - select = graph.importCells(cells, x, y, target); - } - - if (select != null && select.length > 0) { - graph.scrollCellToVisible(select[0]); - graph.setSelectionCells(select); - } - } - } - }; -}; - -/** - * Creates and returns a preview element for the given width and height. - */ -Sidebar.prototype.createDragPreview = function(width, height) { - var elt = document.createElement('div'); - elt.style.border = '1px dashed black'; - elt.style.width = width + 'px'; - elt.style.height = height + 'px'; - - return elt; -}; - -/** - * Creates a drag source for the given element. - */ -Sidebar.prototype.createDragSource = function(elt, dropHandler, preview) { - var dragSource = mxUtils.makeDraggable(elt, this.editorUi.editor.graph, - dropHandler, - preview, 0, 0, this.editorUi.editor.graph.autoscroll, true, true); - - // Allows drop into cell only if target is a valid root - dragSource.getDropTarget = function(graph, x, y) { - var target = mxDragSource.prototype.getDropTarget.apply(this, arguments); - - if (!graph.isValidRoot(target)) { - target = null; - } - - return target; - }; - - return dragSource; -}; - -/** - * Adds a handler for inserting the cell with a single click. - */ -Sidebar.prototype.addClickHandler = function(elt, ds) { - var graph = this.editorUi.editor.graph; - var first = null; - - mxEvent.addGestureListeners(elt, function(evt) { - first = new mxPoint(mxEvent.getClientX(evt), mxEvent.getClientY(evt)); - }); - - var oldMouseUp = ds.mouseUp; - ds.mouseUp = function(evt) { - if (!mxEvent.isPopupTrigger(evt) && this.currentGraph == null && first != - null) { - var tol = graph.tolerance; - - if (Math.abs(first.x - mxEvent.getClientX(evt)) <= tol && - Math.abs(first.y - mxEvent.getClientY(evt)) <= tol) { - var gs = graph.getGridSize(); - ds.drop(graph, evt, null, gs, gs); - } - } - - oldMouseUp.apply(this, arguments); - first = null; - }; -}; - -/** - * Giuseppe Careri - * Create xml document vertex - */ -Sidebar.prototype.createXmlDocument = function(element, label, variables, - values) { - var doc = mxUtils.createXmlDocument(); - var node = doc.createElement(element) - node.setAttribute('label', label); - - variables.forEach(function(variable, index) { - node.setAttribute(variable, values[index] ? values[index] : ''); - }); - - return node; -} - -/** - * Giuseppe Careri - * Creates a drop handler for inserting the given cells. - */ -Sidebar.prototype.createVertexTemplate = function(style, width, height, value, - title, showLabel) { - var variables = []; - var values = []; - - switch (value) { - case 'answer': - break; - case 'start': - variables = ['answer']; - values = ['yes']; - break; - case 'ispeechasr': - variables = ['key', 'model', 'ispeech_asr_language', 'timeout', 'intKey', - 'beep' - ]; - values = ['', 0, 'it-IT', 1, '#', true]; - break; - case 'playback': - variables = ['file_id', 'opts']; - values = ['0']; - break; - case 'background': - variables = ['file_id', 'response', 'digit']; - values = ['0', '5', '1']; - break; - case 'menu': - variables = ['file_id', 'response', 'digit', 'retry', 'variable_id']; - values = ['0', '5', '1', '1', '0']; - break; - case 'getdigits': - variables = ['file_id', 'response', 'mindigit', 'maxdigit', 'retry', - 'variable_id' - ]; - values = ['0', '5', '1', '10', '1', '0']; - break; - case 'getsecretdigits': - variables = ['file_id', 'response', 'mindigit', 'maxdigit', 'retry', 'hiddendigitsnum', 'hiddendigitspos', - 'variable_id' - ]; - values = ['0', '5', '1', '10', '1', '0', 'first', '0']; - break; - case 'custom_app': - variables = ['application', 'options']; - values = ['', '']; - break; - case 'set': - variables = ['variable_id', 'variable_value']; - values = ['0', '']; - break; - case 'database': - variables = ['odbc_id', 'query', 'variable_id']; - values = ['0', '', '0']; - break; - case 'noop': - variables = ['output']; - values = []; - break; - case 'gotoc': - variables = ['context', 'extension']; - values = []; - break; - case 'system': - variables = ['variable_id', 'command']; - values = []; - break; - case 'agi': - variables = ['args', 'command']; - values = []; - break; - case 'gotoif': - variables = ['condition']; - values = []; - break; - case 'gotoiftime': - variables = ['interval_id']; - values = ['0']; - break; - case 'gotoifmultitime': - variables = ['interval_id']; - values = ['0']; - break; - case 'vswitch': - variables = ['variable_id']; - values = ['0']; - break; - case 'saydigits': - variables = ['digits', 'escape_digits']; - values = ['', '#']; - break; - case 'saynumber': - variables = ['number', 'escape_digits']; - values = ['', '#']; - break; - case 'sayphonetic': - variables = ['text', 'escape_digits']; - values = ['', '#']; - break; - case 'record': - variables = ['file', 'recordingFormat', 'timeout', 'escape_digits']; - values = ['', 'wav', '-1', '#']; - break; - case 'dial': - variables = ['sip_id', 'timeout', 'custom_app', 'url']; - values = ['0', '60']; - break; - case 'ext_dial': - variables = ['phone', 'trunk_name', 'timeout', 'opts', 'url']; - values = ['', '-1', '60']; - break; - case 'tts': - variables = ['text', 'google_tts_language']; - values = ['', 'it']; - break; - case 'ispeechtts': - variables = ['text', 'key', 'ispeech_tts_language', 'speed', 'intKey']; - values = ['', '', 'euritalianfemale', '0', '#']; - break; - case 'queue': - variables = ['queue_id', 'opts', 'url', 'file_id', 'timeout', 'agi', - 'macro', 'gosub', 'position' - ]; - values = ['-1', '', '', '0', '300']; - break; - case 'voicemail': - variables = ['mailbox', 'options']; - values = ['', '']; - break; - case 'subproject': - variables = ['project_id']; - values = ['0']; - break; - case 'math': - variables = ['operation', 'variable_id']; - values = ['', '0']; - break; - case 'queuelog': - variables = ['queuename', 'agent', 'queue_event', 'data1', 'data2', 'data3', - 'data4', 'data5' - ]; - values = []; - break; - case 'goal': - variables = ['goalname']; - values = []; - break; - case 'callback': - variables = ['name', 'phone', 'list_id', 'delay']; - values = ['', '{CALLERID(num)}', '0', '5']; - break; - case 'sendSMS': - variables = ['account_id', 'to', 'sms_text']; - values = ['0']; - break; - case 'sendMail': - variables = ['account_id', 'template_id', 'to', 'cc', 'subject', 'text']; - values = ['0']; - break; - - default: - variables = []; - values = []; - break; - } - - var node = this.createXmlDocument(value, title, variables, values); - - //var cells = [new mxCell((value != null) ? value : '', new mxGeometry(0, 0, width, height), style)]; - var cells = [new mxCell(node, new mxGeometry(0, 0, width, height), style)]; - cells[0].vertex = true; - - return this.createVertexTemplateFromCells(cells, width, height, title, - showLabel); -}; - -/** - * Creates a drop handler for inserting the given cells. - */ -Sidebar.prototype.createVertexTemplateFromCells = function(cells, width, height, - title, showLabel) { - var elt = this.createItem(cells, title, showLabel); - var ds = this.createDragSource(elt, this.createDropHandler(cells, true), this - .createDragPreview(width, height)); - this.addClickHandler(elt, ds); - - // Uses guides for vertices only if enabled in graph - ds.isGuidesEnabled = mxUtils.bind(this, function() { - return this.editorUi.editor.graph.graphHandler.guidesEnabled; - }); - - // Shows a tooltip with the rendered cell - if (!touchStyle) { - mxEvent.addListener(elt, 'mousemove', mxUtils.bind(this, function(evt) { - this.showTooltip(elt, cells, title, showLabel); - })); - } - - return elt; -}; - -/** - * Creates a drop handler for inserting the given cells. - */ -Sidebar.prototype.createEdgeTemplate = function(style, width, height, value, - title, showLabel) { - var cells = [new mxCell((value != null) ? value : '', new mxGeometry(0, 0, - width, height), style)]; - cells[0].geometry.setTerminalPoint(new mxPoint(0, height), true); - cells[0].geometry.setTerminalPoint(new mxPoint(width, 0), false); - cells[0].geometry.relative = true; - cells[0].edge = true; - - return this.createEdgeTemplateFromCells(cells, width, height, title, - showLabel); -}; - -/** - * Creates a drop handler for inserting the given cells. - */ -Sidebar.prototype.createEdgeTemplateFromCells = function(cells, width, height, - title, showLabel) { - var elt = this.createItem(cells, title, showLabel); - this.createDragSource(elt, this.createDropHandler(cells, false), this.createDragPreview( - width, height)); - - // Installs the default edge - var graph = this.editorUi.editor.graph; - mxEvent.addListener(elt, 'click', mxUtils.bind(this, function(evt) { - if (this.installEdges) { - graph.setDefaultEdge(cells[0]); - } - - // Highlights the entry for 200ms - elt.style.backgroundColor = '#ffffff'; - - window.setTimeout(function() { - elt.style.backgroundColor = ''; - }, 300); - - mxEvent.consume(evt); - })); - - // Shows a tooltip with the rendered cell - if (!touchStyle) { - mxEvent.addListener(elt, 'mousemove', mxUtils.bind(this, function(evt) { - this.showTooltip(elt, cells, title, showLabel); - })); - } - - return elt; -}; - -/** - * Adds the given palette. - */ -Sidebar.prototype.addPalette = function(id, title, expanded, onInit) { - var elt = this.createTitle(title); - this.container.appendChild(elt); - - var div = document.createElement('div'); - div.className = 'geSidebar'; - - if (expanded) { - onInit(div); - onInit = null; - } else { - div.style.display = 'none'; - } - - this.addFoldingHandler(elt, div, onInit); - - var outer = document.createElement('div'); - outer.appendChild(div); - this.container.appendChild(outer); - - // Keeps references to the DOM nodes - if (id != null) { - this.palettes[id] = [elt, outer]; - } -}; - -/** - * Create the given title element. - */ -Sidebar.prototype.addFoldingHandler = function(title, content, funct) { - var initialized = false; - - title.style.backgroundImage = (content.style.display == 'none') ? - 'url(' + IMAGE_PATH + '/collapsed.gif)' : 'url(' + IMAGE_PATH + - '/expanded.gif)'; - title.style.backgroundRepeat = 'no-repeat'; - title.style.backgroundPosition = '100% 50%'; - - mxEvent.addListener(title, 'click', function(evt) { - if (content.style.display == 'none') { - if (!initialized) { - initialized = true; - - if (funct != null) { - title.style.cursor = 'wait'; - window.setTimeout(function() { - funct(content); - title.style.cursor = ''; - }, 0); - } - } - - title.style.backgroundImage = 'url(' + IMAGE_PATH + '/expanded.gif)'; - content.style.display = 'block'; - } else { - title.style.backgroundImage = 'url(' + IMAGE_PATH + '/collapsed.gif)'; - content.style.display = 'none'; - } - - mxEvent.consume(evt); - }); -}; - -/** - * Removes the palette for the given ID. - */ -Sidebar.prototype.removePalette = function(id) { - var elts = this.palettes[id]; - - if (elts != null) { - this.palettes[id] = null; - - for (var i = 0; i < elts.length; i++) { - this.container.removeChild(elts[i]); - } - - return true; - } - - return false; -}; - -/** - * Adds the given image palette. - */ -Sidebar.prototype.addImagePalette = function(id, title, prefix, postfix, items, - titles) { - // Giuseppe Careri - // Expanded Sidebar only entry - this.addPalette(id, title, (id === 'entry'), mxUtils.bind(this, function( - content) { - var showTitles = titles != null; - - for (var i = 0; i < items.length; i++) { - var icon = prefix + items[i] + postfix; - content.appendChild(this.createVertexTemplate('image;image=' + icon, 80, - 80, items[i], (showTitles) ? titles[i] : null, showTitles)); - } - })); -}; +var _0x1127=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x64\x69\x74\x6F\x72\x55\x69","\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x70\x61\x6C\x65\x74\x74\x65\x73","\x73\x68\x6F\x77\x54\x6F\x6F\x6C\x74\x69\x70\x73","\x67\x72\x61\x70\x68","\x64\x69\x76","\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74","\x67\x65\x74\x53\x74\x79\x6C\x65\x73\x68\x65\x65\x74","\x65\x64\x69\x74\x6F\x72","\x72\x65\x73\x65\x74\x56\x69\x65\x77\x4F\x6E\x52\x6F\x6F\x74\x43\x68\x61\x6E\x67\x65","\x66\x6F\x6C\x64\x69\x6E\x67\x45\x6E\x61\x62\x6C\x65\x64","\x73\x65\x74\x43\x6F\x6E\x6E\x65\x63\x74\x61\x62\x6C\x65","\x61\x75\x74\x6F\x53\x63\x72\x6F\x6C\x6C","\x73\x65\x74\x54\x6F\x6F\x6C\x74\x69\x70\x73","\x73\x65\x74\x45\x6E\x61\x62\x6C\x65\x64","\x76\x69\x73\x69\x62\x69\x6C\x69\x74\x79","\x73\x74\x79\x6C\x65","\x68\x69\x64\x64\x65\x6E","\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x61\x62\x73\x6F\x6C\x75\x74\x65","\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64","\x62\x6F\x64\x79","\x49\x53\x5F\x54\x4F\x55\x43\x48","\x6D\x6F\x75\x73\x65\x75\x70","\x62\x69\x6E\x64","\x61\x64\x64\x4C\x69\x73\x74\x65\x6E\x65\x72","\x73\x63\x72\x6F\x6C\x6C","\x6D\x6F\x75\x73\x65\x64\x6F\x77\x6E","\x68\x69\x64\x65\x54\x6F\x6F\x6C\x74\x69\x70","\x6D\x6F\x75\x73\x65\x6D\x6F\x76\x65","\x67\x65\x74\x53\x6F\x75\x72\x63\x65","\x63\x75\x72\x72\x65\x6E\x74\x45\x6C\x74","\x70\x61\x72\x65\x6E\x74\x4E\x6F\x64\x65","\x6D\x6F\x75\x73\x65\x6F\x75\x74","\x74\x6F\x45\x6C\x65\x6D\x65\x6E\x74","\x72\x65\x6C\x61\x74\x65\x64\x54\x61\x72\x67\x65\x74","\x69\x6E\x69\x74","\x73\x72\x63","\x2F\x74\x6F\x6F\x6C\x74\x69\x70\x2E\x70\x6E\x67","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x6C\x6F\x67","\x65\x6E\x74\x72\x79","\x67\x65\x74","\x2F\x65\x6E\x74\x72\x79\x2F","\x5F\x31\x32\x38\x78\x31\x32\x38\x2E\x70\x6E\x67","\x73\x74\x61\x72\x74","\x66\x69\x6E\x61\x6C\x6C\x79","\x65\x6E\x64","\x61\x64\x64\x49\x6D\x61\x67\x65\x50\x61\x6C\x65\x74\x74\x65","\x63\x61\x6C\x6C\x5F\x6D\x61\x6E\x61\x67\x65\x6D\x65\x6E\x74","\x2F\x63\x61\x6C\x6C\x5F\x6D\x61\x6E\x61\x67\x65\x6D\x65\x6E\x74\x2F","\x61\x6E\x73\x77\x65\x72","\x68\x61\x6E\x67\x75\x70","\x64\x69\x61\x6C","\x65\x78\x74\x5F\x64\x69\x61\x6C","\x71\x75\x65\x75\x65","\x76\x6F\x69\x63\x65\x6D\x61\x69\x6C","\x63\x61\x6C\x6C\x62\x61\x63\x6B","\x76\x61\x72\x69\x61\x62\x6C\x65","\x2F\x76\x61\x72\x69\x61\x62\x6C\x65\x2F","\x73\x65\x74","\x6D\x61\x74\x68","\x70\x6C\x61\x79\x62\x61\x63\x6B","\x2F\x70\x6C\x61\x79\x62\x61\x63\x6B\x2F","\x6D\x65\x6E\x75","\x73\x61\x79\x64\x69\x67\x69\x74\x73","\x73\x61\x79\x6E\x75\x6D\x62\x65\x72","\x73\x61\x79\x70\x68\x6F\x6E\x65\x74\x69\x63","\x74\x74\x73","\x69\x73\x70\x65\x65\x63\x68\x74\x74\x73","\x67\x65\x74\x64\x69\x67\x69\x74\x73","\x67\x65\x74\x73\x65\x63\x72\x65\x74\x64\x69\x67\x69\x74\x73","\x72\x65\x63\x6F\x72\x64\x69\x6E\x67","\x2F\x72\x65\x63\x6F\x72\x64\x69\x6E\x67\x2F","\x72\x65\x63\x6F\x72\x64","\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x53\x65\x72\x76\x65\x72","\x2F\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x5F\x73\x65\x72\x76\x65\x72\x2F","\x64\x61\x74\x61\x62\x61\x73\x65","\x69\x73\x70\x65\x65\x63\x68\x61\x73\x72","\x73\x65\x6E\x64\x53\x4D\x53","\x73\x65\x6E\x64\x4D\x61\x69\x6C","\x63\x61\x6C\x6C\x66\x6C\x6F\x77","\x2F\x63\x61\x6C\x6C\x66\x6C\x6F\x77\x2F","\x67\x6F\x74\x6F\x63","\x67\x6F\x74\x6F\x69\x66","\x67\x6F\x74\x6F\x69\x66\x74\x69\x6D\x65","\x76\x73\x77\x69\x74\x63\x68","\x73\x74\x61\x74\x73","\x2F\x73\x74\x61\x74\x73\x2F","\x67\x6F\x61\x6C","\x67\x65\x6E\x65\x72\x61\x6C","\x2F\x67\x65\x6E\x65\x72\x61\x6C\x2F","\x6E\x6F\x6F\x70","\x73\x79\x73\x74\x65\x6D","\x61\x67\x69","\x73\x75\x62\x70\x72\x6F\x6A\x65\x63\x74","\x63\x75\x73\x74\x6F\x6D\x5F\x61\x70\x70","\x65\x6E\x61\x62\x6C\x65\x54\x6F\x6F\x6C\x74\x69\x70\x73","\x74\x6F\x6F\x6C\x74\x69\x70\x42\x6F\x72\x64\x65\x72","\x74\x68\x75\x6D\x62\x42\x6F\x72\x64\x65\x72","\x74\x6F\x6F\x6C\x74\x69\x70\x44\x65\x6C\x61\x79","\x69\x6E\x73\x74\x61\x6C\x6C\x45\x64\x67\x65\x73","\x67\x65\x61\x72\x49\x6D\x61\x67\x65","\x2F\x63\x6C\x69\x70\x61\x72\x74\x2F\x47\x65\x61\x72\x5F\x31\x32\x38\x78\x31\x32\x38\x2E\x70\x6E\x67","\x74\x68\x75\x6D\x62\x57\x69\x64\x74\x68","\x74\x68\x75\x6D\x62\x48\x65\x69\x67\x68\x74","\x74\x68\x75\x6D\x62\x50\x61\x64\x64\x69\x6E\x67","\x73\x69\x64\x65\x62\x61\x72\x54\x69\x74\x6C\x65\x53\x69\x7A\x65","\x73\x69\x64\x65\x62\x61\x72\x54\x69\x74\x6C\x65\x73","\x74\x6F\x6F\x6C\x74\x69\x70\x54\x69\x74\x6C\x65\x73","\x73\x68\x6F\x77\x54\x6F\x6F\x6C\x74\x69\x70","\x74\x68\x72\x65\x61\x64","\x63\x6C\x65\x61\x72\x54\x69\x6D\x65\x6F\x75\x74","\x74\x6F\x6F\x6C\x74\x69\x70","\x63\x6C\x61\x73\x73\x4E\x61\x6D\x65","\x67\x65\x53\x69\x64\x65\x62\x61\x72\x54\x6F\x6F\x6C\x74\x69\x70","\x67\x72\x61\x70\x68\x32","\x73\x65\x74\x54\x72\x61\x6E\x73\x6C\x61\x74\x65","\x76\x69\x65\x77","\x49\x53\x5F\x53\x56\x47","\x63\x61\x6E\x76\x61\x73","\x72\x65\x6C\x61\x74\x69\x76\x65","\x74\x6F\x6F\x6C\x74\x69\x70\x49\x6D\x61\x67\x65","\x63\x72\x65\x61\x74\x65\x49\x6D\x61\x67\x65","\x77\x69\x64\x74\x68","\x31\x34\x70\x78","\x68\x65\x69\x67\x68\x74","\x32\x37\x70\x78","\x64\x69\x73\x70\x6C\x61\x79","\x62\x6C\x6F\x63\x6B","\x6C\x61\x62\x65\x6C\x73\x56\x69\x73\x69\x62\x6C\x65","\x63\x6C\x65\x61\x72","\x6D\x6F\x64\x65\x6C","\x61\x64\x64\x43\x65\x6C\x6C\x73","\x67\x65\x74\x47\x72\x61\x70\x68\x42\x6F\x75\x6E\x64\x73","\x49\x53\x5F\x51\x55\x49\x52\x4B\x53","\x6F\x76\x65\x72\x66\x6C\x6F\x77","\x76\x69\x73\x69\x62\x6C\x65","\x70\x78","\x6C\x65\x6E\x67\x74\x68","\x74\x6F\x6F\x6C\x74\x69\x70\x54\x69\x74\x6C\x65","\x62\x6F\x72\x64\x65\x72\x54\x6F\x70","\x31\x70\x78\x20\x73\x6F\x6C\x69\x64\x20\x67\x72\x61\x79","\x74\x65\x78\x74\x41\x6C\x69\x67\x6E","\x63\x65\x6E\x74\x65\x72","\x31\x30\x30\x25","\x70\x61\x64\x64\x69\x6E\x67\x54\x6F\x70","\x32\x70\x78","\x36\x70\x78","\x69\x6E\x6E\x65\x72\x48\x54\x4D\x4C","","\x77\x72\x69\x74\x65","\x6F\x66\x66\x73\x65\x74\x48\x65\x69\x67\x68\x74","\x6D\x61\x72\x67\x69\x6E\x54\x6F\x70","\x74\x6F\x70","\x6E\x6F\x6E\x65","\x78","\x6D\x69\x6E","\x79","\x63\x6C\x69\x65\x6E\x74\x57\x69\x64\x74\x68","\x73\x70\x6C\x69\x74\x53\x69\x7A\x65","\x6F\x66\x66\x73\x65\x74\x54\x6F\x70","\x73\x63\x72\x6F\x6C\x6C\x54\x6F\x70","\x6D\x61\x78","\x74\x72\x61\x6E\x73\x66\x6F\x72\x6D","\x74\x72\x61\x6E\x73\x6C\x61\x74\x65\x28","\x2C","\x29","\x73\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x6C\x65\x66\x74","\x64\x72\x61\x77\x50\x61\x6E\x65","\x6F\x66\x66\x73\x65\x74\x57\x69\x64\x74\x68","\x70\x61\x67\x65\x2D\x73\x69\x64\x65\x62\x61\x72","\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x42\x79\x49\x64","\x73\x65\x74\x54\x69\x6D\x65\x6F\x75\x74","\x63\x72\x65\x61\x74\x65\x54\x69\x74\x6C\x65","\x61","\x68\x72\x65\x66","\x6A\x61\x76\x61\x73\x63\x72\x69\x70\x74\x3A\x76\x6F\x69\x64\x28\x30\x29\x3B","\x67\x65\x54\x69\x74\x6C\x65","\x63\x72\x65\x61\x74\x65\x54\x68\x75\x6D\x62","\x73\x63\x61\x6C\x65\x41\x6E\x64\x54\x72\x61\x6E\x73\x6C\x61\x74\x65","\x66\x6C\x6F\x6F\x72","\x64\x69\x61\x6C\x65\x63\x74","\x44\x49\x41\x4C\x45\x43\x54\x5F\x53\x56\x47","\x4E\x4F\x5F\x46\x4F","\x63\x6C\x6F\x6E\x65\x4E\x6F\x64\x65","\x6F\x77\x6E\x65\x72\x53\x56\x47\x45\x6C\x65\x6D\x65\x6E\x74","\x67\x65\x74\x43\x61\x6E\x76\x61\x73","\x67\x65\x74\x4D\x6F\x64\x65\x6C","\x49\x53\x5F\x49\x45\x36","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x49\x6D\x61\x67\x65","\x75\x72\x6C\x28","\x74\x72\x61\x6E\x73\x70\x61\x72\x65\x6E\x74\x49\x6D\x61\x67\x65","\x63\x75\x72\x73\x6F\x72","\x70\x6F\x69\x6E\x74\x65\x72","\x6D\x69\x6E\x57\x69\x64\x74\x68","\x6D\x69\x6E\x48\x65\x69\x67\x68\x74","\x66\x6F\x6E\x74\x53\x69\x7A\x65","\x77\x68\x69\x74\x65\x53\x70\x61\x63\x65","\x6E\x6F\x77\x72\x61\x70","\x49\x53\x5F\x49\x45","\x34\x70\x78","\x63\x72\x65\x61\x74\x65\x49\x74\x65\x6D","\x67\x65\x49\x74\x65\x6D","\x70\x61\x64\x64\x69\x6E\x67","\x63\x6C\x69\x63\x6B","\x63\x6F\x6E\x73\x75\x6D\x65","\x63\x72\x65\x61\x74\x65\x44\x72\x6F\x70\x48\x61\x6E\x64\x6C\x65\x72","\x69\x73\x45\x6E\x61\x62\x6C\x65\x64","\x67\x65\x74\x49\x6D\x70\x6F\x72\x74\x61\x62\x6C\x65\x43\x65\x6C\x6C\x73","\x69\x73\x56\x61\x6C\x69\x64\x44\x72\x6F\x70\x54\x61\x72\x67\x65\x74","\x69\x73\x53\x70\x6C\x69\x74\x45\x6E\x61\x62\x6C\x65\x64","\x69\x73\x53\x70\x6C\x69\x74\x54\x61\x72\x67\x65\x74","\x73\x70\x6C\x69\x74\x45\x64\x67\x65","\x69\x6D\x70\x6F\x72\x74\x43\x65\x6C\x6C\x73","\x73\x63\x72\x6F\x6C\x6C\x43\x65\x6C\x6C\x54\x6F\x56\x69\x73\x69\x62\x6C\x65","\x73\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C\x73","\x63\x72\x65\x61\x74\x65\x44\x72\x61\x67\x50\x72\x65\x76\x69\x65\x77","\x62\x6F\x72\x64\x65\x72","\x31\x70\x78\x20\x64\x61\x73\x68\x65\x64\x20\x62\x6C\x61\x63\x6B","\x63\x72\x65\x61\x74\x65\x44\x72\x61\x67\x53\x6F\x75\x72\x63\x65","\x61\x75\x74\x6F\x73\x63\x72\x6F\x6C\x6C","\x6D\x61\x6B\x65\x44\x72\x61\x67\x67\x61\x62\x6C\x65","\x67\x65\x74\x44\x72\x6F\x70\x54\x61\x72\x67\x65\x74","\x61\x70\x70\x6C\x79","\x69\x73\x56\x61\x6C\x69\x64\x52\x6F\x6F\x74","\x61\x64\x64\x43\x6C\x69\x63\x6B\x48\x61\x6E\x64\x6C\x65\x72","\x67\x65\x74\x43\x6C\x69\x65\x6E\x74\x58","\x67\x65\x74\x43\x6C\x69\x65\x6E\x74\x59","\x61\x64\x64\x47\x65\x73\x74\x75\x72\x65\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x6D\x6F\x75\x73\x65\x55\x70","\x69\x73\x50\x6F\x70\x75\x70\x54\x72\x69\x67\x67\x65\x72","\x63\x75\x72\x72\x65\x6E\x74\x47\x72\x61\x70\x68","\x74\x6F\x6C\x65\x72\x61\x6E\x63\x65","\x61\x62\x73","\x67\x65\x74\x47\x72\x69\x64\x53\x69\x7A\x65","\x64\x72\x6F\x70","\x63\x72\x65\x61\x74\x65\x58\x6D\x6C\x44\x6F\x63\x75\x6D\x65\x6E\x74","\x6C\x61\x62\x65\x6C","\x66\x6F\x72\x45\x61\x63\x68","\x63\x72\x65\x61\x74\x65\x56\x65\x72\x74\x65\x78\x54\x65\x6D\x70\x6C\x61\x74\x65","\x79\x65\x73","\x6B\x65\x79","\x69\x73\x70\x65\x65\x63\x68\x5F\x61\x73\x72\x5F\x6C\x61\x6E\x67\x75\x61\x67\x65","\x74\x69\x6D\x65\x6F\x75\x74","\x69\x6E\x74\x4B\x65\x79","\x62\x65\x65\x70","\x69\x74\x2D\x49\x54","\x23","\x66\x69\x6C\x65\x5F\x69\x64","\x6F\x70\x74\x73","\x30","\x72\x65\x73\x70\x6F\x6E\x73\x65","\x64\x69\x67\x69\x74","\x35","\x31","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64","\x72\x65\x74\x72\x79","\x76\x61\x72\x69\x61\x62\x6C\x65\x5F\x69\x64","\x6D\x69\x6E\x64\x69\x67\x69\x74","\x6D\x61\x78\x64\x69\x67\x69\x74","\x31\x30","\x68\x69\x64\x64\x65\x6E\x64\x69\x67\x69\x74\x73\x6E\x75\x6D","\x68\x69\x64\x64\x65\x6E\x64\x69\x67\x69\x74\x73\x70\x6F\x73","\x66\x69\x72\x73\x74","\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x6F\x70\x74\x69\x6F\x6E\x73","\x76\x61\x72\x69\x61\x62\x6C\x65\x5F\x76\x61\x6C\x75\x65","\x6F\x64\x62\x63\x5F\x69\x64","\x71\x75\x65\x72\x79","\x6F\x75\x74\x70\x75\x74","\x63\x6F\x6E\x74\x65\x78\x74","\x65\x78\x74\x65\x6E\x73\x69\x6F\x6E","\x63\x6F\x6D\x6D\x61\x6E\x64","\x61\x72\x67\x73","\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E","\x69\x6E\x74\x65\x72\x76\x61\x6C\x5F\x69\x64","\x67\x6F\x74\x6F\x69\x66\x6D\x75\x6C\x74\x69\x74\x69\x6D\x65","\x64\x69\x67\x69\x74\x73","\x65\x73\x63\x61\x70\x65\x5F\x64\x69\x67\x69\x74\x73","\x6E\x75\x6D\x62\x65\x72","\x74\x65\x78\x74","\x66\x69\x6C\x65","\x72\x65\x63\x6F\x72\x64\x69\x6E\x67\x46\x6F\x72\x6D\x61\x74","\x77\x61\x76","\x2D\x31","\x73\x69\x70\x5F\x69\x64","\x75\x72\x6C","\x36\x30","\x70\x68\x6F\x6E\x65","\x74\x72\x75\x6E\x6B\x5F\x6E\x61\x6D\x65","\x67\x6F\x6F\x67\x6C\x65\x5F\x74\x74\x73\x5F\x6C\x61\x6E\x67\x75\x61\x67\x65","\x69\x74","\x69\x73\x70\x65\x65\x63\x68\x5F\x74\x74\x73\x5F\x6C\x61\x6E\x67\x75\x61\x67\x65","\x73\x70\x65\x65\x64","\x65\x75\x72\x69\x74\x61\x6C\x69\x61\x6E\x66\x65\x6D\x61\x6C\x65","\x71\x75\x65\x75\x65\x5F\x69\x64","\x6D\x61\x63\x72\x6F","\x67\x6F\x73\x75\x62","\x33\x30\x30","\x6D\x61\x69\x6C\x62\x6F\x78","\x70\x72\x6F\x6A\x65\x63\x74\x5F\x69\x64","\x6F\x70\x65\x72\x61\x74\x69\x6F\x6E","\x71\x75\x65\x75\x65\x6E\x61\x6D\x65","\x61\x67\x65\x6E\x74","\x71\x75\x65\x75\x65\x5F\x65\x76\x65\x6E\x74","\x64\x61\x74\x61\x31","\x64\x61\x74\x61\x32","\x64\x61\x74\x61\x33","\x64\x61\x74\x61\x34","\x64\x61\x74\x61\x35","\x71\x75\x65\x75\x65\x6C\x6F\x67","\x67\x6F\x61\x6C\x6E\x61\x6D\x65","\x6E\x61\x6D\x65","\x6C\x69\x73\x74\x5F\x69\x64","\x64\x65\x6C\x61\x79","\x7B\x43\x41\x4C\x4C\x45\x52\x49\x44\x28\x6E\x75\x6D\x29\x7D","\x61\x63\x63\x6F\x75\x6E\x74\x5F\x69\x64","\x74\x6F","\x73\x6D\x73\x5F\x74\x65\x78\x74","\x74\x65\x6D\x70\x6C\x61\x74\x65\x5F\x69\x64","\x63\x63","\x73\x75\x62\x6A\x65\x63\x74","\x76\x65\x72\x74\x65\x78","\x63\x72\x65\x61\x74\x65\x56\x65\x72\x74\x65\x78\x54\x65\x6D\x70\x6C\x61\x74\x65\x46\x72\x6F\x6D\x43\x65\x6C\x6C\x73","\x69\x73\x47\x75\x69\x64\x65\x73\x45\x6E\x61\x62\x6C\x65\x64","\x67\x75\x69\x64\x65\x73\x45\x6E\x61\x62\x6C\x65\x64","\x67\x72\x61\x70\x68\x48\x61\x6E\x64\x6C\x65\x72","\x63\x72\x65\x61\x74\x65\x45\x64\x67\x65\x54\x65\x6D\x70\x6C\x61\x74\x65","\x73\x65\x74\x54\x65\x72\x6D\x69\x6E\x61\x6C\x50\x6F\x69\x6E\x74","\x67\x65\x6F\x6D\x65\x74\x72\x79","\x65\x64\x67\x65","\x63\x72\x65\x61\x74\x65\x45\x64\x67\x65\x54\x65\x6D\x70\x6C\x61\x74\x65\x46\x72\x6F\x6D\x43\x65\x6C\x6C\x73","\x73\x65\x74\x44\x65\x66\x61\x75\x6C\x74\x45\x64\x67\x65","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x43\x6F\x6C\x6F\x72","\x23\x66\x66\x66\x66\x66\x66","\x61\x64\x64\x50\x61\x6C\x65\x74\x74\x65","\x67\x65\x53\x69\x64\x65\x62\x61\x72","\x61\x64\x64\x46\x6F\x6C\x64\x69\x6E\x67\x48\x61\x6E\x64\x6C\x65\x72","\x2F\x63\x6F\x6C\x6C\x61\x70\x73\x65\x64\x2E\x67\x69\x66\x29","\x2F\x65\x78\x70\x61\x6E\x64\x65\x64\x2E\x67\x69\x66\x29","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x52\x65\x70\x65\x61\x74","\x6E\x6F\x2D\x72\x65\x70\x65\x61\x74","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x50\x6F\x73\x69\x74\x69\x6F\x6E","\x31\x30\x30\x25\x20\x35\x30\x25","\x77\x61\x69\x74","\x72\x65\x6D\x6F\x76\x65\x50\x61\x6C\x65\x74\x74\x65","\x72\x65\x6D\x6F\x76\x65\x43\x68\x69\x6C\x64","\x69\x6D\x61\x67\x65\x3B\x69\x6D\x61\x67\x65\x3D"];_0x1127[0];function Sidebar(_0xcab6x2,_0xcab6x3){this[_0x1127[1]]= _0xcab6x2;this[_0x1127[2]]= _0xcab6x3;this[_0x1127[3]]= new Object();this[_0x1127[4]]= true;this[_0x1127[5]]= new Graph(document[_0x1127[7]](_0x1127[6]),null,null,this[_0x1127[1]][_0x1127[9]][_0x1127[5]][_0x1127[8]]());this[_0x1127[5]][_0x1127[10]]= false;this[_0x1127[5]][_0x1127[11]]= false;this[_0x1127[5]][_0x1127[12]](false);this[_0x1127[5]][_0x1127[13]]= false;this[_0x1127[5]][_0x1127[14]](false);this[_0x1127[5]][_0x1127[15]](false);this[_0x1127[5]][_0x1127[2]][_0x1127[17]][_0x1127[16]]= _0x1127[18];this[_0x1127[5]][_0x1127[2]][_0x1127[17]][_0x1127[19]]= _0x1127[20];document[_0x1127[22]][_0x1127[21]](this[_0x1127[5]][_0x1127[2]]);if(!mxClient[_0x1127[23]]){mxEvent[_0x1127[26]](document,_0x1127[24],mxUtils[_0x1127[25]](this,function(){this[_0x1127[4]]= true}));mxEvent[_0x1127[26]](_0xcab6x3,_0x1127[27],mxUtils[_0x1127[25]](this,function(){this[_0x1127[4]]= true}));mxEvent[_0x1127[26]](document,_0x1127[28],mxUtils[_0x1127[25]](this,function(){this[_0x1127[4]]= false;this[_0x1127[29]]()}));mxEvent[_0x1127[26]](document,_0x1127[30],mxUtils[_0x1127[25]](this,function(_0xcab6x4){var _0xcab6x5=mxEvent[_0x1127[31]](_0xcab6x4);while(_0xcab6x5!= null){if(_0xcab6x5== this[_0x1127[32]]){return};_0xcab6x5= _0xcab6x5[_0x1127[33]]};this[_0x1127[29]]()}));mxEvent[_0x1127[26]](document,_0x1127[34],mxUtils[_0x1127[25]](this,function(_0xcab6x4){if(_0xcab6x4[_0x1127[35]]== null&& _0xcab6x4[_0x1127[36]]== null){this[_0x1127[29]]()}}))};this[_0x1127[37]](); new Image()[_0x1127[38]]= IMAGE_PATH+ _0x1127[39]}Sidebar[_0x1127[40]][_0x1127[37]]= function(){var _0xcab6x6=STENCIL_PATH;console[_0x1127[41]](_0xcab6x6);this[_0x1127[49]](_0x1127[42],mxResources[_0x1127[43]](_0x1127[42]),_0xcab6x6+ _0x1127[44],_0x1127[45],[_0x1127[46],_0x1127[47],_0x1127[48]],[mxResources[_0x1127[43]](_0x1127[46]),mxResources[_0x1127[43]](_0x1127[47]),mxResources[_0x1127[43]](_0x1127[48])]);this[_0x1127[49]](_0x1127[50],mxResources[_0x1127[43]](_0x1127[50]),_0xcab6x6+ _0x1127[51],_0x1127[45],[_0x1127[52],_0x1127[53],_0x1127[54],_0x1127[55],_0x1127[56],_0x1127[57],_0x1127[58]],[mxResources[_0x1127[43]](_0x1127[52]),mxResources[_0x1127[43]](_0x1127[53]),mxResources[_0x1127[43]](_0x1127[54]),mxResources[_0x1127[43]](_0x1127[55]),mxResources[_0x1127[43]](_0x1127[56]),mxResources[_0x1127[43]](_0x1127[57]),mxResources[_0x1127[43]](_0x1127[58])]);this[_0x1127[49]](_0x1127[59],mxResources[_0x1127[43]](_0x1127[59]),_0xcab6x6+ _0x1127[60],_0x1127[45],[_0x1127[61],_0x1127[62]],[mxResources[_0x1127[43]](_0x1127[61]),mxResources[_0x1127[43]](_0x1127[62])]);this[_0x1127[49]](_0x1127[63],mxResources[_0x1127[43]](_0x1127[63]),_0xcab6x6+ _0x1127[64],_0x1127[45],[_0x1127[63],_0x1127[65],_0x1127[66],_0x1127[67],_0x1127[68],_0x1127[69],_0x1127[70],_0x1127[71],_0x1127[72]],[mxResources[_0x1127[43]](_0x1127[63]),mxResources[_0x1127[43]](_0x1127[65]),mxResources[_0x1127[43]](_0x1127[66]),mxResources[_0x1127[43]](_0x1127[67]),mxResources[_0x1127[43]](_0x1127[68]),mxResources[_0x1127[43]](_0x1127[69]),mxResources[_0x1127[43]](_0x1127[70]),mxResources[_0x1127[43]](_0x1127[71]),mxResources[_0x1127[43]](_0x1127[72])]);this[_0x1127[49]](_0x1127[73],mxResources[_0x1127[43]](_0x1127[73]),_0xcab6x6+ _0x1127[74],_0x1127[45],[_0x1127[75]],[mxResources[_0x1127[43]](_0x1127[75])]);this[_0x1127[49]](_0x1127[76],mxResources[_0x1127[43]](_0x1127[76]),_0xcab6x6+ _0x1127[77],_0x1127[45],[_0x1127[78],_0x1127[79],_0x1127[80],_0x1127[81]],[mxResources[_0x1127[43]](_0x1127[78]),mxResources[_0x1127[43]](_0x1127[79]),mxResources[_0x1127[43]](_0x1127[80]),mxResources[_0x1127[43]](_0x1127[81])]);this[_0x1127[49]](_0x1127[82],mxResources[_0x1127[43]](_0x1127[82]),_0xcab6x6+ _0x1127[83],_0x1127[45],[_0x1127[84],_0x1127[85],_0x1127[86],_0x1127[87]],[mxResources[_0x1127[43]](_0x1127[84]),mxResources[_0x1127[43]](_0x1127[85]),mxResources[_0x1127[43]](_0x1127[86]),mxResources[_0x1127[43]](_0x1127[87])]);this[_0x1127[49]](_0x1127[88],mxResources[_0x1127[43]](_0x1127[88]),_0xcab6x6+ _0x1127[89],_0x1127[45],[_0x1127[90]],[mxResources[_0x1127[43]](_0x1127[90])]);this[_0x1127[49]](_0x1127[91],mxResources[_0x1127[43]](_0x1127[91]),_0xcab6x6+ _0x1127[92],_0x1127[45],[_0x1127[93],_0x1127[94],_0x1127[95],_0x1127[96],_0x1127[97]],[mxResources[_0x1127[43]](_0x1127[93]),mxResources[_0x1127[43]](_0x1127[94]),mxResources[_0x1127[43]](_0x1127[95]),mxResources[_0x1127[43]](_0x1127[96]),mxResources[_0x1127[43]](_0x1127[97])])};Sidebar[_0x1127[40]][_0x1127[98]]= !mxClient[_0x1127[23]];Sidebar[_0x1127[40]][_0x1127[99]]= 16;Sidebar[_0x1127[40]][_0x1127[100]]= 3;Sidebar[_0x1127[40]][_0x1127[101]]= 300;Sidebar[_0x1127[40]][_0x1127[102]]= true;Sidebar[_0x1127[40]][_0x1127[103]]= STENCIL_PATH+ _0x1127[104];Sidebar[_0x1127[40]][_0x1127[105]]= 34;Sidebar[_0x1127[40]][_0x1127[106]]= 34;Sidebar[_0x1127[40]][_0x1127[107]]= 2;Sidebar[_0x1127[40]][_0x1127[108]]= 9;Sidebar[_0x1127[40]][_0x1127[109]]= false;Sidebar[_0x1127[40]][_0x1127[110]]= false;Sidebar[_0x1127[40]][_0x1127[111]]= function(_0xcab6x7,_0xcab6x8,_0xcab6x9,_0xcab6xa){if(this[_0x1127[98]]&& this[_0x1127[4]]){if(this[_0x1127[32]]!= _0xcab6x7){if(this[_0x1127[112]]!= null){window[_0x1127[113]](this[_0x1127[112]]);this[_0x1127[112]]= null};var _0xcab6xb=mxUtils[_0x1127[25]](this,function(){if(this[_0x1127[114]]== null){this[_0x1127[114]]= document[_0x1127[7]](_0x1127[6]);this[_0x1127[114]][_0x1127[115]]= _0x1127[116];document[_0x1127[22]][_0x1127[21]](this[_0x1127[114]]);this[_0x1127[117]]= new Graph(this[_0x1127[114]],null,null,this[_0x1127[1]][_0x1127[9]][_0x1127[5]][_0x1127[8]]());this[_0x1127[117]][_0x1127[119]][_0x1127[118]](this[_0x1127[99]],this[_0x1127[99]]);this[_0x1127[117]][_0x1127[10]]= false;this[_0x1127[117]][_0x1127[11]]= false;this[_0x1127[117]][_0x1127[13]]= false;this[_0x1127[117]][_0x1127[14]](false);this[_0x1127[117]][_0x1127[12]](false);this[_0x1127[117]][_0x1127[15]](false);if(!mxClient[_0x1127[120]]){this[_0x1127[117]][_0x1127[119]][_0x1127[121]][_0x1127[17]][_0x1127[19]]= _0x1127[122]};this[_0x1127[123]]= mxUtils[_0x1127[124]](IMAGE_PATH+ _0x1127[39]);this[_0x1127[123]][_0x1127[17]][_0x1127[19]]= _0x1127[20];this[_0x1127[123]][_0x1127[17]][_0x1127[125]]= _0x1127[126];this[_0x1127[123]][_0x1127[17]][_0x1127[127]]= _0x1127[128];document[_0x1127[22]][_0x1127[21]](this[_0x1127[123]])};this[_0x1127[114]][_0x1127[17]][_0x1127[129]]= _0x1127[130];this[_0x1127[117]][_0x1127[131]]= (_0xcab6xa== null|| _0xcab6xa);this[_0x1127[117]][_0x1127[133]][_0x1127[132]]();this[_0x1127[117]][_0x1127[134]](_0xcab6x8);var _0xcab6xc=this[_0x1127[117]][_0x1127[135]]();var _0xcab6xd=_0xcab6xc[_0x1127[125]]+ 2* this[_0x1127[99]];var _0xcab6xe=_0xcab6xc[_0x1127[127]]+ 2* this[_0x1127[99]];if(mxClient[_0x1127[136]]){_0xcab6xd+= 4;_0xcab6xe+= 4;this[_0x1127[114]][_0x1127[17]][_0x1127[137]]= _0x1127[18]}else {this[_0x1127[114]][_0x1127[17]][_0x1127[137]]= _0x1127[138]};this[_0x1127[123]][_0x1127[17]][_0x1127[16]]= _0x1127[138];this[_0x1127[114]][_0x1127[17]][_0x1127[125]]= _0xcab6xd+ _0x1127[139];if(this[_0x1127[110]]&& _0xcab6x9!= null&& _0xcab6x9[_0x1127[140]]> 0){if(this[_0x1127[141]]== null){this[_0x1127[141]]= document[_0x1127[7]](_0x1127[6]);this[_0x1127[141]][_0x1127[17]][_0x1127[142]]= _0x1127[143];this[_0x1127[141]][_0x1127[17]][_0x1127[144]]= _0x1127[145];this[_0x1127[141]][_0x1127[17]][_0x1127[125]]= _0x1127[146];this[_0x1127[141]][_0x1127[17]][_0x1127[137]]= _0x1127[18];if(mxClient[_0x1127[120]]){this[_0x1127[141]][_0x1127[17]][_0x1127[147]]= _0x1127[148]}else {this[_0x1127[141]][_0x1127[17]][_0x1127[19]]= _0x1127[20];this[_0x1127[141]][_0x1127[17]][_0x1127[147]]= _0x1127[149]};this[_0x1127[114]][_0x1127[21]](this[_0x1127[141]])}else {this[_0x1127[141]][_0x1127[150]]= _0x1127[151]};this[_0x1127[141]][_0x1127[17]][_0x1127[129]]= _0x1127[151];mxUtils[_0x1127[152]](this[_0x1127[141]],_0xcab6x9);var _0xcab6xf=this[_0x1127[141]][_0x1127[153]]+ 10;_0xcab6xe+= _0xcab6xf;if(mxClient[_0x1127[120]]){this[_0x1127[141]][_0x1127[17]][_0x1127[154]]= (-_0xcab6xf) + _0x1127[139]}else {_0xcab6xe-= 6;this[_0x1127[141]][_0x1127[17]][_0x1127[155]]= (_0xcab6xe- _0xcab6xf)+ _0x1127[139]}}else {if(this[_0x1127[141]]!= null&& this[_0x1127[141]][_0x1127[33]]!= null){this[_0x1127[141]][_0x1127[17]][_0x1127[129]]= _0x1127[156]}};this[_0x1127[114]][_0x1127[17]][_0x1127[127]]= _0xcab6xe+ _0x1127[139];var _0xcab6x10=-Math[_0x1127[158]](0,_0xcab6xc[_0x1127[157]]- this[_0x1127[99]]);var _0xcab6x11=-Math[_0x1127[158]](0,_0xcab6xc[_0x1127[159]]- this[_0x1127[99]]);var _0xcab6x12=this[_0x1127[2]][_0x1127[160]]+ this[_0x1127[1]][_0x1127[161]]+ 3;var _0xcab6x13=Math[_0x1127[164]](0,(this[_0x1127[2]][_0x1127[162]]+ _0xcab6x7[_0x1127[162]]- this[_0x1127[2]][_0x1127[163]]- _0xcab6xe/ 2+ 16));if(mxClient[_0x1127[120]]){this[_0x1127[117]][_0x1127[119]][_0x1127[121]][_0x1127[169]](_0x1127[165],_0x1127[166]+ _0xcab6x10+ _0x1127[167]+ _0xcab6x11+ _0x1127[168])}else {this[_0x1127[117]][_0x1127[119]][_0x1127[171]][_0x1127[17]][_0x1127[170]]= _0xcab6x10+ _0x1127[139];this[_0x1127[117]][_0x1127[119]][_0x1127[171]][_0x1127[17]][_0x1127[155]]= _0xcab6x11+ _0x1127[139]};_0xcab6x12+= document[_0x1127[174]](_0x1127[173])[_0x1127[172]];_0xcab6x13+= 90;this[_0x1127[114]][_0x1127[17]][_0x1127[19]]= _0x1127[20];this[_0x1127[114]][_0x1127[17]][_0x1127[170]]= _0xcab6x12+ _0x1127[139];this[_0x1127[114]][_0x1127[17]][_0x1127[155]]= _0xcab6x13+ _0x1127[139];this[_0x1127[123]][_0x1127[17]][_0x1127[170]]= (_0xcab6x12- 13)+ _0x1127[139];this[_0x1127[123]][_0x1127[17]][_0x1127[155]]= (_0xcab6x13+ _0xcab6xe/ 2- 13)+ _0x1127[139]});if(this[_0x1127[114]]!= null&& this[_0x1127[114]][_0x1127[17]][_0x1127[129]]!= _0x1127[156]){_0xcab6xb()}else {this[_0x1127[112]]= window[_0x1127[175]](_0xcab6xb,this[_0x1127[101]])};this[_0x1127[32]]= _0xcab6x7}}};Sidebar[_0x1127[40]][_0x1127[29]]= function(){if(this[_0x1127[112]]!= null){window[_0x1127[113]](this[_0x1127[112]]);this[_0x1127[112]]= null};if(this[_0x1127[114]]!= null){this[_0x1127[114]][_0x1127[17]][_0x1127[129]]= _0x1127[156];this[_0x1127[123]][_0x1127[17]][_0x1127[16]]= _0x1127[18];this[_0x1127[32]]= null}};Sidebar[_0x1127[40]][_0x1127[176]]= function(_0xcab6x14){var _0xcab6x7=document[_0x1127[7]](_0x1127[177]);_0xcab6x7[_0x1127[169]](_0x1127[178],_0x1127[179]);_0xcab6x7[_0x1127[115]]= _0x1127[180];mxUtils[_0x1127[152]](_0xcab6x7,_0xcab6x14);return _0xcab6x7};Sidebar[_0x1127[40]][_0x1127[181]]= function(_0xcab6x8,_0xcab6xd,_0xcab6xe,_0xcab6x15,_0xcab6x9,_0xcab6xa){this[_0x1127[5]][_0x1127[131]]= (_0xcab6xa== null|| _0xcab6xa);this[_0x1127[5]][_0x1127[119]][_0x1127[182]](1,0,0);this[_0x1127[5]][_0x1127[134]](_0xcab6x8);var _0xcab6xc=this[_0x1127[5]][_0x1127[135]]();var _0xcab6x16=this[_0x1127[100]];var _0xcab6x17=Math[_0x1127[158]]((_0xcab6xd- 2)/ (_0xcab6xc[_0x1127[125]]- _0xcab6xc[_0x1127[157]]+ _0xcab6x16),(_0xcab6xe- 2)/ (_0xcab6xc[_0x1127[127]]- _0xcab6xc[_0x1127[159]]+ _0xcab6x16));var _0xcab6x10=-Math[_0x1127[158]](_0xcab6xc[_0x1127[157]],0);var _0xcab6x11=-Math[_0x1127[158]](_0xcab6xc[_0x1127[159]],0);this[_0x1127[5]][_0x1127[119]][_0x1127[182]](_0xcab6x17,_0xcab6x10,_0xcab6x11);_0xcab6xc= this[_0x1127[5]][_0x1127[135]]();var _0xcab6x18=Math[_0x1127[164]](0,Math[_0x1127[183]]((_0xcab6xd- _0xcab6xc[_0x1127[125]]- _0xcab6xc[_0x1127[157]])/ 2));var _0xcab6xf=Math[_0x1127[164]](0,Math[_0x1127[183]]((_0xcab6xe- _0xcab6xc[_0x1127[127]]- _0xcab6xc[_0x1127[159]])/ 2));var _0xcab6x19=null;if(this[_0x1127[5]][_0x1127[184]]== mxConstants[_0x1127[185]]&& !mxClient[_0x1127[186]]){_0xcab6x19= this[_0x1127[5]][_0x1127[119]][_0x1127[189]]()[_0x1127[188]][_0x1127[187]](true)}else {_0xcab6x19= this[_0x1127[5]][_0x1127[2]][_0x1127[187]](false);_0xcab6x19[_0x1127[150]]= this[_0x1127[5]][_0x1127[2]][_0x1127[150]]};this[_0x1127[5]][_0x1127[190]]()[_0x1127[132]]();if(mxClient[_0x1127[191]]){_0xcab6x15[_0x1127[17]][_0x1127[192]]= _0x1127[193]+ this[_0x1127[1]][_0x1127[9]][_0x1127[194]]+ _0x1127[168]};var _0xcab6x1a=3;_0xcab6x19[_0x1127[17]][_0x1127[19]]= _0x1127[122];_0xcab6x19[_0x1127[17]][_0x1127[137]]= _0x1127[18];_0xcab6x19[_0x1127[17]][_0x1127[195]]= _0x1127[196];_0xcab6x19[_0x1127[17]][_0x1127[170]]= (_0xcab6x18+ _0xcab6x1a)+ _0x1127[139];_0xcab6x19[_0x1127[17]][_0x1127[155]]= (_0xcab6xf+ _0xcab6x1a)+ _0x1127[139];_0xcab6x19[_0x1127[17]][_0x1127[125]]= _0xcab6xd+ _0x1127[139];_0xcab6x19[_0x1127[17]][_0x1127[127]]= _0xcab6xe+ _0x1127[139];_0xcab6x19[_0x1127[17]][_0x1127[16]]= _0x1127[151];_0xcab6x19[_0x1127[17]][_0x1127[197]]= _0x1127[151];_0xcab6x19[_0x1127[17]][_0x1127[198]]= _0x1127[151];_0xcab6x15[_0x1127[21]](_0xcab6x19);if(this[_0x1127[109]]&& _0xcab6x9!= null){var _0xcab6x1b=(mxClient[_0x1127[136]])?2* this[_0x1127[107]]+ 2:0;_0xcab6x15[_0x1127[17]][_0x1127[127]]= (this[_0x1127[106]]+ _0xcab6x1b+ this[_0x1127[108]]+ 8)+ _0x1127[139];var _0xcab6x1c=document[_0x1127[7]](_0x1127[6]);_0xcab6x1c[_0x1127[17]][_0x1127[199]]= this[_0x1127[108]]+ _0x1127[139];_0xcab6x1c[_0x1127[17]][_0x1127[144]]= _0x1127[145];_0xcab6x1c[_0x1127[17]][_0x1127[200]]= _0x1127[201];if(mxClient[_0x1127[202]]){_0xcab6x1c[_0x1127[17]][_0x1127[127]]= (this[_0x1127[108]]+ 12)+ _0x1127[139]};_0xcab6x1c[_0x1127[17]][_0x1127[147]]= _0x1127[203];mxUtils[_0x1127[152]](_0xcab6x1c,_0xcab6x9);_0xcab6x15[_0x1127[21]](_0xcab6x1c)}};Sidebar[_0x1127[40]][_0x1127[204]]= function(_0xcab6x8,_0xcab6x9,_0xcab6xa){var _0xcab6x7=document[_0x1127[7]](_0x1127[177]);_0xcab6x7[_0x1127[169]](_0x1127[178],_0x1127[179]);_0xcab6x7[_0x1127[115]]= _0x1127[205];_0xcab6x7[_0x1127[17]][_0x1127[137]]= _0x1127[18];var _0xcab6x1b=(mxClient[_0x1127[136]])?8+ 2* this[_0x1127[107]]:6;_0xcab6x7[_0x1127[17]][_0x1127[125]]= (this[_0x1127[105]]+ _0xcab6x1b)+ _0x1127[139];_0xcab6x7[_0x1127[17]][_0x1127[127]]= (this[_0x1127[106]]+ _0xcab6x1b)+ _0x1127[139];_0xcab6x7[_0x1127[17]][_0x1127[206]]= this[_0x1127[107]]+ _0x1127[139];mxEvent[_0x1127[26]](_0xcab6x7,_0x1127[207],function(_0xcab6x4){mxEvent[_0x1127[208]](_0xcab6x4)});this[_0x1127[181]](_0xcab6x8,this[_0x1127[105]],this[_0x1127[106]],_0xcab6x7,_0xcab6x9,_0xcab6xa);return _0xcab6x7};Sidebar[_0x1127[40]][_0x1127[209]]= function(_0xcab6x8,_0xcab6x1d){return function(_0xcab6x1e,_0xcab6x4,_0xcab6x1f,_0xcab6x20,_0xcab6x21){if(_0xcab6x1e[_0x1127[210]]()){_0xcab6x8= _0xcab6x1e[_0x1127[211]](_0xcab6x8);if(_0xcab6x8[_0x1127[140]]> 0){var _0xcab6x22=(_0xcab6x1f!= null)?_0xcab6x1e[_0x1127[212]](_0xcab6x1f,_0xcab6x8,_0xcab6x4):false;var _0xcab6x23=null;if(_0xcab6x1f!= null&& !_0xcab6x22){_0xcab6x1f= null};if(_0xcab6x1d&& _0xcab6x1e[_0x1127[213]]()&& _0xcab6x1e[_0x1127[214]](_0xcab6x1f,_0xcab6x8,_0xcab6x4)){_0xcab6x1e[_0x1127[215]](_0xcab6x1f,_0xcab6x8,null,_0xcab6x20,_0xcab6x21);_0xcab6x23= _0xcab6x8}else {if(_0xcab6x8[_0x1127[140]]> 0){_0xcab6x23= _0xcab6x1e[_0x1127[216]](_0xcab6x8,_0xcab6x20,_0xcab6x21,_0xcab6x1f)}};if(_0xcab6x23!= null&& _0xcab6x23[_0x1127[140]]> 0){_0xcab6x1e[_0x1127[217]](_0xcab6x23[0]);_0xcab6x1e[_0x1127[218]](_0xcab6x23)}}}}};Sidebar[_0x1127[40]][_0x1127[219]]= function(_0xcab6xd,_0xcab6xe){var _0xcab6x7=document[_0x1127[7]](_0x1127[6]);_0xcab6x7[_0x1127[17]][_0x1127[220]]= _0x1127[221];_0xcab6x7[_0x1127[17]][_0x1127[125]]= _0xcab6xd+ _0x1127[139];_0xcab6x7[_0x1127[17]][_0x1127[127]]= _0xcab6xe+ _0x1127[139];return _0xcab6x7};Sidebar[_0x1127[40]][_0x1127[222]]= function(_0xcab6x7,_0xcab6x24,_0xcab6x25){var _0xcab6x26=mxUtils[_0x1127[224]](_0xcab6x7,this[_0x1127[1]][_0x1127[9]][_0x1127[5]],_0xcab6x24,_0xcab6x25,0,0,this[_0x1127[1]][_0x1127[9]][_0x1127[5]][_0x1127[223]],true,true);_0xcab6x26[_0x1127[225]]= function(_0xcab6x1e,_0xcab6x20,_0xcab6x21){var _0xcab6x1f=mxDragSource[_0x1127[40]][_0x1127[225]][_0x1127[226]](this,arguments);if(!_0xcab6x1e[_0x1127[227]](_0xcab6x1f)){_0xcab6x1f= null};return _0xcab6x1f};return _0xcab6x26};Sidebar[_0x1127[40]][_0x1127[228]]= function(_0xcab6x7,_0xcab6x27){var _0xcab6x1e=this[_0x1127[1]][_0x1127[9]][_0x1127[5]];var _0xcab6x28=null;mxEvent[_0x1127[231]](_0xcab6x7,function(_0xcab6x4){_0xcab6x28= new mxPoint(mxEvent[_0x1127[229]](_0xcab6x4),mxEvent[_0x1127[230]](_0xcab6x4))});var _0xcab6x29=_0xcab6x27[_0x1127[232]];_0xcab6x27[_0x1127[232]]= function(_0xcab6x4){if(!mxEvent[_0x1127[233]](_0xcab6x4)&& this[_0x1127[234]]== null&& _0xcab6x28!= null){var _0xcab6x2a=_0xcab6x1e[_0x1127[235]];if(Math[_0x1127[236]](_0xcab6x28[_0x1127[157]]- mxEvent[_0x1127[229]](_0xcab6x4))<= _0xcab6x2a&& Math[_0x1127[236]](_0xcab6x28[_0x1127[159]]- mxEvent[_0x1127[230]](_0xcab6x4))<= _0xcab6x2a){var _0xcab6x2b=_0xcab6x1e[_0x1127[237]]();_0xcab6x27[_0x1127[238]](_0xcab6x1e,_0xcab6x4,null,_0xcab6x2b,_0xcab6x2b)}};_0xcab6x29[_0x1127[226]](this,arguments);_0xcab6x28= null}};Sidebar[_0x1127[40]][_0x1127[239]]= function(_0xcab6x2c,_0xcab6x14,_0xcab6x2d,_0xcab6x2e){var _0xcab6x2f=mxUtils[_0x1127[239]]();var _0xcab6x19=_0xcab6x2f[_0x1127[7]](_0xcab6x2c);_0xcab6x19[_0x1127[169]](_0x1127[240],_0xcab6x14);_0xcab6x2d[_0x1127[241]](function(_0xcab6x30,_0xcab6x31){_0xcab6x19[_0x1127[169]](_0xcab6x30,_0xcab6x2e[_0xcab6x31]?_0xcab6x2e[_0xcab6x31]:_0x1127[151])});return _0xcab6x19};Sidebar[_0x1127[40]][_0x1127[242]]= function(_0xcab6x32,_0xcab6xd,_0xcab6xe,_0xcab6x33,_0xcab6x9,_0xcab6xa){var _0xcab6x2d=[];var _0xcab6x2e=[];switch(_0xcab6x33){case _0x1127[52]:break;case _0x1127[46]:_0xcab6x2d= [_0x1127[52]];_0xcab6x2e= [_0x1127[243]];break;case _0x1127[79]:_0xcab6x2d= [_0x1127[244],_0x1127[133],_0x1127[245],_0x1127[246],_0x1127[247],_0x1127[248]];_0xcab6x2e= [_0x1127[151],0,_0x1127[249],1,_0x1127[250],true];break;case _0x1127[63]:_0xcab6x2d= [_0x1127[251],_0x1127[252]];_0xcab6x2e= [_0x1127[253]];break;case _0x1127[258]:_0xcab6x2d= [_0x1127[251],_0x1127[254],_0x1127[255]];_0xcab6x2e= [_0x1127[253],_0x1127[256],_0x1127[257]];break;case _0x1127[65]:_0xcab6x2d= [_0x1127[251],_0x1127[254],_0x1127[255],_0x1127[259],_0x1127[260]];_0xcab6x2e= [_0x1127[253],_0x1127[256],_0x1127[257],_0x1127[257],_0x1127[253]];break;case _0x1127[71]:_0xcab6x2d= [_0x1127[251],_0x1127[254],_0x1127[261],_0x1127[262],_0x1127[259],_0x1127[260]];_0xcab6x2e= [_0x1127[253],_0x1127[256],_0x1127[257],_0x1127[263],_0x1127[257],_0x1127[253]];break;case _0x1127[72]:_0xcab6x2d= [_0x1127[251],_0x1127[254],_0x1127[261],_0x1127[262],_0x1127[259],_0x1127[264],_0x1127[265],_0x1127[260]];_0xcab6x2e= [_0x1127[253],_0x1127[256],_0x1127[257],_0x1127[263],_0x1127[257],_0x1127[253],_0x1127[266],_0x1127[253]];break;case _0x1127[97]:_0xcab6x2d= [_0x1127[267],_0x1127[268]];_0xcab6x2e= [_0x1127[151],_0x1127[151]];break;case _0x1127[61]:_0xcab6x2d= [_0x1127[260],_0x1127[269]];_0xcab6x2e= [_0x1127[253],_0x1127[151]];break;case _0x1127[78]:_0xcab6x2d= [_0x1127[270],_0x1127[271],_0x1127[260]];_0xcab6x2e= [_0x1127[253],_0x1127[151],_0x1127[253]];break;case _0x1127[93]:_0xcab6x2d= [_0x1127[272]];_0xcab6x2e= [];break;case _0x1127[84]:_0xcab6x2d= [_0x1127[273],_0x1127[274]];_0xcab6x2e= [];break;case _0x1127[94]:_0xcab6x2d= [_0x1127[260],_0x1127[275]];_0xcab6x2e= [];break;case _0x1127[95]:_0xcab6x2d= [_0x1127[276],_0x1127[275]];_0xcab6x2e= [];break;case _0x1127[85]:_0xcab6x2d= [_0x1127[277]];_0xcab6x2e= [];break;case _0x1127[86]:_0xcab6x2d= [_0x1127[278]];_0xcab6x2e= [_0x1127[253]];break;case _0x1127[279]:_0xcab6x2d= [_0x1127[278]];_0xcab6x2e= [_0x1127[253]];break;case _0x1127[87]:_0xcab6x2d= [_0x1127[260]];_0xcab6x2e= [_0x1127[253]];break;case _0x1127[66]:_0xcab6x2d= [_0x1127[280],_0x1127[281]];_0xcab6x2e= [_0x1127[151],_0x1127[250]];break;case _0x1127[67]:_0xcab6x2d= [_0x1127[282],_0x1127[281]];_0xcab6x2e= [_0x1127[151],_0x1127[250]];break;case _0x1127[68]:_0xcab6x2d= [_0x1127[283],_0x1127[281]];_0xcab6x2e= [_0x1127[151],_0x1127[250]];break;case _0x1127[75]:_0xcab6x2d= [_0x1127[284],_0x1127[285],_0x1127[246],_0x1127[281]];_0xcab6x2e= [_0x1127[151],_0x1127[286],_0x1127[287],_0x1127[250]];break;case _0x1127[54]:_0xcab6x2d= [_0x1127[288],_0x1127[246],_0x1127[97],_0x1127[289]];_0xcab6x2e= [_0x1127[253],_0x1127[290]];break;case _0x1127[55]:_0xcab6x2d= [_0x1127[291],_0x1127[292],_0x1127[246],_0x1127[252],_0x1127[289]];_0xcab6x2e= [_0x1127[151],_0x1127[287],_0x1127[290]];break;case _0x1127[69]:_0xcab6x2d= [_0x1127[283],_0x1127[293]];_0xcab6x2e= [_0x1127[151],_0x1127[294]];break;case _0x1127[70]:_0xcab6x2d= [_0x1127[283],_0x1127[244],_0x1127[295],_0x1127[296],_0x1127[247]];_0xcab6x2e= [_0x1127[151],_0x1127[151],_0x1127[297],_0x1127[253],_0x1127[250]];break;case _0x1127[56]:_0xcab6x2d= [_0x1127[298],_0x1127[252],_0x1127[289],_0x1127[251],_0x1127[246],_0x1127[95],_0x1127[299],_0x1127[300],_0x1127[19]];_0xcab6x2e= [_0x1127[287],_0x1127[151],_0x1127[151],_0x1127[253],_0x1127[301]];break;case _0x1127[57]:_0xcab6x2d= [_0x1127[302],_0x1127[268]];_0xcab6x2e= [_0x1127[151],_0x1127[151]];break;case _0x1127[96]:_0xcab6x2d= [_0x1127[303]];_0xcab6x2e= [_0x1127[253]];break;case _0x1127[62]:_0xcab6x2d= [_0x1127[304],_0x1127[260]];_0xcab6x2e= [_0x1127[151],_0x1127[253]];break;case _0x1127[313]:_0xcab6x2d= [_0x1127[305],_0x1127[306],_0x1127[307],_0x1127[308],_0x1127[309],_0x1127[310],_0x1127[311],_0x1127[312]];_0xcab6x2e= [];break;case _0x1127[90]:_0xcab6x2d= [_0x1127[314]];_0xcab6x2e= [];break;case _0x1127[58]:_0xcab6x2d= [_0x1127[315],_0x1127[291],_0x1127[316],_0x1127[317]];_0xcab6x2e= [_0x1127[151],_0x1127[318],_0x1127[253],_0x1127[256]];break;case _0x1127[80]:_0xcab6x2d= [_0x1127[319],_0x1127[320],_0x1127[321]];_0xcab6x2e= [_0x1127[253]];break;case _0x1127[81]:_0xcab6x2d= [_0x1127[319],_0x1127[322],_0x1127[320],_0x1127[323],_0x1127[324],_0x1127[283]];_0xcab6x2e= [_0x1127[253]];break;default:_0xcab6x2d= [];_0xcab6x2e= [];break};var _0xcab6x19=this[_0x1127[239]](_0xcab6x33,_0xcab6x9,_0xcab6x2d,_0xcab6x2e);var _0xcab6x8=[ new mxCell(_0xcab6x19, new mxGeometry(0,0,_0xcab6xd,_0xcab6xe),_0xcab6x32)];_0xcab6x8[0][_0x1127[325]]= true;return this[_0x1127[326]](_0xcab6x8,_0xcab6xd,_0xcab6xe,_0xcab6x9,_0xcab6xa)};Sidebar[_0x1127[40]][_0x1127[326]]= function(_0xcab6x8,_0xcab6xd,_0xcab6xe,_0xcab6x9,_0xcab6xa){var _0xcab6x7=this[_0x1127[204]](_0xcab6x8,_0xcab6x9,_0xcab6xa);var _0xcab6x27=this[_0x1127[222]](_0xcab6x7,this[_0x1127[209]](_0xcab6x8,true),this[_0x1127[219]](_0xcab6xd,_0xcab6xe));this[_0x1127[228]](_0xcab6x7,_0xcab6x27);_0xcab6x27[_0x1127[327]]= mxUtils[_0x1127[25]](this,function(){return this[_0x1127[1]][_0x1127[9]][_0x1127[5]][_0x1127[329]][_0x1127[328]]});if(!touchStyle){mxEvent[_0x1127[26]](_0xcab6x7,_0x1127[30],mxUtils[_0x1127[25]](this,function(_0xcab6x4){this[_0x1127[111]](_0xcab6x7,_0xcab6x8,_0xcab6x9,_0xcab6xa)}))};return _0xcab6x7};Sidebar[_0x1127[40]][_0x1127[330]]= function(_0xcab6x32,_0xcab6xd,_0xcab6xe,_0xcab6x33,_0xcab6x9,_0xcab6xa){var _0xcab6x8=[ new mxCell((_0xcab6x33!= null)?_0xcab6x33:_0x1127[151], new mxGeometry(0,0,_0xcab6xd,_0xcab6xe),_0xcab6x32)];_0xcab6x8[0][_0x1127[332]][_0x1127[331]]( new mxPoint(0,_0xcab6xe),true);_0xcab6x8[0][_0x1127[332]][_0x1127[331]]( new mxPoint(_0xcab6xd,0),false);_0xcab6x8[0][_0x1127[332]][_0x1127[122]]= true;_0xcab6x8[0][_0x1127[333]]= true;return this[_0x1127[334]](_0xcab6x8,_0xcab6xd,_0xcab6xe,_0xcab6x9,_0xcab6xa)};Sidebar[_0x1127[40]][_0x1127[334]]= function(_0xcab6x8,_0xcab6xd,_0xcab6xe,_0xcab6x9,_0xcab6xa){var _0xcab6x7=this[_0x1127[204]](_0xcab6x8,_0xcab6x9,_0xcab6xa);this[_0x1127[222]](_0xcab6x7,this[_0x1127[209]](_0xcab6x8,false),this[_0x1127[219]](_0xcab6xd,_0xcab6xe));var _0xcab6x1e=this[_0x1127[1]][_0x1127[9]][_0x1127[5]];mxEvent[_0x1127[26]](_0xcab6x7,_0x1127[207],mxUtils[_0x1127[25]](this,function(_0xcab6x4){if(this[_0x1127[102]]){_0xcab6x1e[_0x1127[335]](_0xcab6x8[0])};_0xcab6x7[_0x1127[17]][_0x1127[336]]= _0x1127[337];window[_0x1127[175]](function(){_0xcab6x7[_0x1127[17]][_0x1127[336]]= _0x1127[151]},300);mxEvent[_0x1127[208]](_0xcab6x4)}));if(!touchStyle){mxEvent[_0x1127[26]](_0xcab6x7,_0x1127[30],mxUtils[_0x1127[25]](this,function(_0xcab6x4){this[_0x1127[111]](_0xcab6x7,_0xcab6x8,_0xcab6x9,_0xcab6xa)}))};return _0xcab6x7};Sidebar[_0x1127[40]][_0x1127[338]]= function(_0xcab6x34,_0xcab6x9,_0xcab6x35,_0xcab6x36){var _0xcab6x7=this[_0x1127[176]](_0xcab6x9);this[_0x1127[2]][_0x1127[21]](_0xcab6x7);var _0xcab6x1c=document[_0x1127[7]](_0x1127[6]);_0xcab6x1c[_0x1127[115]]= _0x1127[339];if(_0xcab6x35){_0xcab6x36(_0xcab6x1c);_0xcab6x36= null}else {_0xcab6x1c[_0x1127[17]][_0x1127[129]]= _0x1127[156]};this[_0x1127[340]](_0xcab6x7,_0xcab6x1c,_0xcab6x36);var _0xcab6x37=document[_0x1127[7]](_0x1127[6]);_0xcab6x37[_0x1127[21]](_0xcab6x1c);this[_0x1127[2]][_0x1127[21]](_0xcab6x37);if(_0xcab6x34!= null){this[_0x1127[3]][_0xcab6x34]= [_0xcab6x7,_0xcab6x37]}};Sidebar[_0x1127[40]][_0x1127[340]]= function(_0xcab6x9,_0xcab6x38,_0xcab6x39){var _0xcab6x3a=false;_0xcab6x9[_0x1127[17]][_0x1127[192]]= (_0xcab6x38[_0x1127[17]][_0x1127[129]]== _0x1127[156])?_0x1127[193]+ IMAGE_PATH+ _0x1127[341]:_0x1127[193]+ IMAGE_PATH+ _0x1127[342];_0xcab6x9[_0x1127[17]][_0x1127[343]]= _0x1127[344];_0xcab6x9[_0x1127[17]][_0x1127[345]]= _0x1127[346];mxEvent[_0x1127[26]](_0xcab6x9,_0x1127[207],function(_0xcab6x4){if(_0xcab6x38[_0x1127[17]][_0x1127[129]]== _0x1127[156]){if(!_0xcab6x3a){_0xcab6x3a= true;if(_0xcab6x39!= null){_0xcab6x9[_0x1127[17]][_0x1127[195]]= _0x1127[347];window[_0x1127[175]](function(){_0xcab6x39(_0xcab6x38);_0xcab6x9[_0x1127[17]][_0x1127[195]]= _0x1127[151]},0)}};_0xcab6x9[_0x1127[17]][_0x1127[192]]= _0x1127[193]+ IMAGE_PATH+ _0x1127[342];_0xcab6x38[_0x1127[17]][_0x1127[129]]= _0x1127[130]}else {_0xcab6x9[_0x1127[17]][_0x1127[192]]= _0x1127[193]+ IMAGE_PATH+ _0x1127[341];_0xcab6x38[_0x1127[17]][_0x1127[129]]= _0x1127[156]};mxEvent[_0x1127[208]](_0xcab6x4)})};Sidebar[_0x1127[40]][_0x1127[348]]= function(_0xcab6x34){var _0xcab6x3b=this[_0x1127[3]][_0xcab6x34];if(_0xcab6x3b!= null){this[_0x1127[3]][_0xcab6x34]= null;for(var _0xcab6x3c=0;_0xcab6x3c< _0xcab6x3b[_0x1127[140]];_0xcab6x3c++){this[_0x1127[2]][_0x1127[349]](_0xcab6x3b[_0xcab6x3c])};return true};return false};Sidebar[_0x1127[40]][_0x1127[49]]= function(_0xcab6x34,_0xcab6x9,_0xcab6x3d,_0xcab6x3e,_0xcab6x3f,_0xcab6x40){this[_0x1127[338]](_0xcab6x34,_0xcab6x9,(_0xcab6x34=== _0x1127[42]),mxUtils[_0x1127[25]](this,function(_0xcab6x38){var _0xcab6x41=_0xcab6x40!= null;for(var _0xcab6x3c=0;_0xcab6x3c< _0xcab6x3f[_0x1127[140]];_0xcab6x3c++){var _0xcab6x42=_0xcab6x3d+ _0xcab6x3f[_0xcab6x3c]+ _0xcab6x3e;_0xcab6x38[_0x1127[21]](this[_0x1127[242]](_0x1127[350]+ _0xcab6x42,80,80,_0xcab6x3f[_0xcab6x3c],(_0xcab6x41)?_0xcab6x40[_0xcab6x3c]:null,_0xcab6x41))}}))} \ No newline at end of file diff --git a/public/assets/plugins/square/js/Toolbar.js b/public/assets/plugins/square/js/Toolbar.js index 7eab562..265b45c 100644 --- a/public/assets/plugins/square/js/Toolbar.js +++ b/public/assets/plugins/square/js/Toolbar.js @@ -1,407 +1 @@ -/** - * $Id: Toolbar.js,v 1.3 2013-02-20 16:21:29 gaudenz Exp $ - * Copyright (c) 2006-2012, JGraph Ltd - */ -/** - * Construcs a new toolbar for the given editor. - */ -function Toolbar(editorUi, container) -{ - this.editorUi = editorUi; - this.container = container; - this.init(); - - // Global handler to hide the current menu - mxEvent.addGestureListeners(document, mxUtils.bind(this, function(evt) - { - this.hideMenu(); - })); -}; - -/** - * Adds the toolbar elements. - */ -Toolbar.prototype.init = function() -{ - this.addItems(['save', 'publish', '-', 'print', 'undo', 'redo', '-', 'copy', 'cut', 'paste', 'delete', '-', 'duplicate', '-', 'actualSize', 'zoomIn', 'zoomOut', '-']); - var fontElt = this.addMenu('Helvetica', mxResources.get('fontFamily'), true, 'fontFamily'); - fontElt.style.whiteSpace = 'nowrap'; - fontElt.style.overflow = 'hidden'; - fontElt.style.width = '70px'; - this.addSeparator(); - var sizeElt = this.addMenu('12', mxResources.get('fontSize'), true, 'fontSize'); - sizeElt.style.whiteSpace = 'nowrap'; - sizeElt.style.overflow = 'hidden'; - sizeElt.style.width = '30px'; - - this.addItems(['-', 'bold', 'italic', 'underline']); - // Giuseppe Careri - // var align = this.addMenuFunction('geSprite-left', mxResources.get('align'), false, mxUtils.bind(this, function(menu) - // { - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_ALIGN], [mxConstants.ALIGN_LEFT], 'geIcon geSprite geSprite-left', null).setAttribute('title', mxResources.get('left')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_ALIGN], [mxConstants.ALIGN_CENTER], 'geIcon geSprite geSprite-center', null).setAttribute('title', mxResources.get('center')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_ALIGN], [mxConstants.ALIGN_RIGHT], 'geIcon geSprite geSprite-right', null).setAttribute('title', mxResources.get('right')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_VERTICAL_ALIGN], [mxConstants.ALIGN_TOP], 'geIcon geSprite geSprite-top', null).setAttribute('title', mxResources.get('top')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_VERTICAL_ALIGN], [mxConstants.ALIGN_MIDDLE], 'geIcon geSprite geSprite-middle', null).setAttribute('title', mxResources.get('middle')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_VERTICAL_ALIGN], [mxConstants.ALIGN_BOTTOM], 'geIcon geSprite geSprite-bottom', null).setAttribute('title', mxResources.get('bottom')); - // })); - // this.addItems(['fontColor', '-']); - // var line = this.addMenuFunction('geSprite-straight', mxResources.get('line'), false, mxUtils.bind(this, function(menu) - // { - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_EDGE], [null], 'geIcon geSprite geSprite-straight', null).setAttribute('title', mxResources.get('straight')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_EDGE], ['entityRelationEdgeStyle'], 'geIcon geSprite geSprite-entity', null).setAttribute('title', mxResources.get('entityRelation')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_EDGE, mxConstants.STYLE_ELBOW], ['elbowEdgeStyle', 'horizontal'], 'geIcon geSprite geSprite-helbow', null).setAttribute('title', mxResources.get('horizontal')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_EDGE, mxConstants.STYLE_ELBOW], ['elbowEdgeStyle', 'vertical'], 'geIcon geSprite geSprite-velbow', null).setAttribute('title', mxResources.get('vertical')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_EDGE], ['segmentEdgeStyle'], 'geIcon geSprite geSprite-segment', null).setAttribute('title', mxResources.get('manual')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_EDGE], ['orthogonalEdgeStyle'], 'geIcon geSprite geSprite-orthogonal', null).setAttribute('title', mxResources.get('automatic')); - // })); - // var linestart = this.addMenuFunction('geSprite-startclassic', mxResources.get('lineend'), false, mxUtils.bind(this, function(menu) - // { - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_STARTARROW, 'startFill'], [mxConstants.NONE, 0], 'geIcon geSprite geSprite-noarrow', null).setAttribute('title', mxResources.get('none')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_STARTARROW, 'startFill'], [mxConstants.ARROW_CLASSIC, 1], 'geIcon geSprite geSprite-startclassic', null).setAttribute('title', mxResources.get('classic')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_STARTARROW, 'startFill'], [mxConstants.ARROW_OPEN, 1], 'geIcon geSprite geSprite-startopen', null).setAttribute('title', mxResources.get('openArrow')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_STARTARROW, 'startFill'], [mxConstants.ARROW_BLOCK, 1], 'geIcon geSprite geSprite-startblock', null).setAttribute('title', mxResources.get('block')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_STARTARROW, 'startFill'], [mxConstants.ARROW_OVAL, 1], 'geIcon geSprite geSprite-startoval', null).setAttribute('title', mxResources.get('oval')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_STARTARROW, 'startFill'], [mxConstants.ARROW_DIAMOND, 1], 'geIcon geSprite geSprite-startdiamond', null).setAttribute('title', mxResources.get('diamond')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_STARTARROW, 'startFill'], [mxConstants.ARROW_DIAMOND_THIN, 1], 'geIcon geSprite geSprite-startthindiamond', null).setAttribute('title', mxResources.get('diamondThin')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_STARTARROW, 'startFill'], [mxConstants.ARROW_CLASSIC, 0], 'geIcon geSprite geSprite-startclassictrans', null).setAttribute('title', mxResources.get('classic')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_STARTARROW, 'startFill'], [mxConstants.ARROW_BLOCK, 0], 'geIcon geSprite geSprite-startblocktrans', null).setAttribute('title', mxResources.get('block')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_STARTARROW, 'startFill'], [mxConstants.ARROW_OVAL, 0], 'geIcon geSprite geSprite-startovaltrans', null).setAttribute('title', mxResources.get('oval')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_STARTARROW, 'startFill'], [mxConstants.ARROW_DIAMOND, 0], 'geIcon geSprite geSprite-startdiamondtrans', null).setAttribute('title', mxResources.get('diamond')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_STARTARROW, 'startFill'], [mxConstants.ARROW_DIAMOND_THIN, 0], 'geIcon geSprite geSprite-startthindiamondtrans', null).setAttribute('title', mxResources.get('diamondThin')); - // })); - // var lineend = this.addMenuFunction('geSprite-endclassic', mxResources.get('lineend'), false, mxUtils.bind(this, function(menu) - // { - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_ENDARROW, 'endFill'], [mxConstants.NONE, 0], 'geIcon geSprite geSprite-noarrow', null).setAttribute('title', mxResources.get('none')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_ENDARROW, 'endFill'], [mxConstants.ARROW_CLASSIC, 1], 'geIcon geSprite geSprite-endclassic', null).setAttribute('title', mxResources.get('classic')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_ENDARROW, 'endFill'], [mxConstants.ARROW_OPEN, 1], 'geIcon geSprite geSprite-endopen', null).setAttribute('title', mxResources.get('openArrow')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_ENDARROW, 'endFill'], [mxConstants.ARROW_BLOCK, 1], 'geIcon geSprite geSprite-endblock', null).setAttribute('title', mxResources.get('block')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_ENDARROW, 'endFill'], [mxConstants.ARROW_OVAL, 1], 'geIcon geSprite geSprite-endoval', null).setAttribute('title', mxResources.get('oval')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_ENDARROW, 'endFill'], [mxConstants.ARROW_DIAMOND, 1], 'geIcon geSprite geSprite-enddiamond', null).setAttribute('title', mxResources.get('diamond')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_ENDARROW, 'endFill'], [mxConstants.ARROW_DIAMOND_THIN, 1], 'geIcon geSprite geSprite-endthindiamond', null).setAttribute('title', mxResources.get('diamondThin')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_ENDARROW, 'endFill'], [mxConstants.ARROW_CLASSIC, 0], 'geIcon geSprite geSprite-endclassictrans', null).setAttribute('title', mxResources.get('classic')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_ENDARROW, 'endFill'], [mxConstants.ARROW_BLOCK, 0], 'geIcon geSprite geSprite-endblocktrans', null).setAttribute('title', mxResources.get('block')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_ENDARROW, 'endFill'], [mxConstants.ARROW_OVAL, 0], 'geIcon geSprite geSprite-endovaltrans', null).setAttribute('title', mxResources.get('oval')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_ENDARROW, 'endFill'], [mxConstants.ARROW_DIAMOND, 0], 'geIcon geSprite geSprite-enddiamondtrans', null).setAttribute('title', mxResources.get('diamond')); - // this.editorUi.menus.styleChange(menu, '', [mxConstants.STYLE_ENDARROW, 'endFill'], [mxConstants.ARROW_DIAMOND_THIN, 0], 'geIcon geSprite geSprite-endthindiamondtrans', null).setAttribute('title', mxResources.get('diamondThin')); - // })); - // this.addItems(['-', 'strokeColor', 'image', 'fillColor']); - // this.addItem('geSprite-gradientcolor', 'gradientColor').setAttribute('title', mxResources.get('gradient')); - // this.addItems(['shadow']); - - var graph = this.editorUi.editor.graph; - - // Update font size and font family labels - var update = mxUtils.bind(this, function() - { - var ff = 'Helvetica'; - var fs = '12'; - var state = graph.getView().getState(graph.getSelectionCell()); - - if (state != null) - { - ff = state.style[mxConstants.STYLE_FONTFAMILY] || ff; - fs = state.style[mxConstants.STYLE_FONTSIZE] || fs; - - if (ff.length > 10) - { - ff = ff.substring(0, 8) + '...'; - } - - fontElt.innerHTML = ff; - sizeElt.innerHTML = fs; - } - }); - - graph.getSelectionModel().addListener(mxEvent.CHANGE, update); - graph.getModel().addListener(mxEvent.CHANGE, update); - - // Giuseppe Careri - // Updates button states - //this.addEdgeSelectionHandler([line, linestart, lineend]); - //this.addSelectionHandler([align]); -}; - -/** - * Hides the current menu. - */ -Toolbar.prototype.hideMenu = function() -{ - if (this.currentMenu != null) - { - this.currentMenu.hideMenu(); - this.currentMenu.destroy(); - this.currentMenu = null; - } -}; - -/** - * Adds a label to the toolbar. - */ -Toolbar.prototype.addMenu = function(label, tooltip, showLabels, name) -{ - var menu = this.editorUi.menus.get(name); - var elt = this.addMenuFunction(label, tooltip, showLabels, menu.funct); - - menu.addListener('stateChanged', function() - { - elt.setEnabled(menu.enabled); - }); - - return elt; -}; - -/** - * Adds a label to the toolbar. - */ -Toolbar.prototype.addMenuFunction = function(label, tooltip, showLabels, funct) -{ - var elt = (showLabels) ? this.createLabel(label) : this.createButton(label); - this.initElement(elt, tooltip); - this.addMenuHandler(elt, showLabels, funct); - this.container.appendChild(elt); - - return elt; -}; - -/** - * Adds a separator to the separator. - */ -Toolbar.prototype.addSeparator = function() -{ - var elt = document.createElement('div'); - elt.className = 'geSeparator'; - this.container.appendChild(elt); - - return elt; -}; - -/** - * Adds given action item - */ -Toolbar.prototype.addItems = function(keys) -{ - for (var i = 0; i < keys.length; i++) - { - var key = keys[i]; - - if (key == '-') - { - this.addSeparator(); - } - else - { - this.addItem('geSprite-' + key.toLowerCase(), key); - } - } -}; - -/** - * Adds given action item - */ -Toolbar.prototype.addItem = function(sprite, key) -{ - var action = this.editorUi.actions.get(key); - var elt = null; - - if (action != null) - { - elt = this.addButton(sprite, action.label, action.funct); - elt.setEnabled(action.enabled); - - action.addListener('stateChanged', function() - { - elt.setEnabled(action.enabled); - }); - } - - return elt; -}; - -/** - * Adds a button to the toolbar. - */ -Toolbar.prototype.addButton = function(classname, tooltip, funct) -{ - var elt = this.createButton(classname); - - this.initElement(elt, tooltip); - this.addClickHandler(elt, funct); - this.container.appendChild(elt); - - return elt; -}; - -/** - * Updates the states of the given toolbar items based on the selection. - */ -Toolbar.prototype.addSelectionHandler = function(items) -{ - var graph = this.editorUi.editor.graph; - - var selectionListener = function() - { - var selected = !graph.isSelectionEmpty(); - - for (var i = 0; i < items.length; i++) - { - items[i].setEnabled(selected); - } - }; - - graph.getSelectionModel().addListener(mxEvent.CHANGE, selectionListener); - selectionListener(); -}; - -/** - * Updates the states of the given toolbar items based on the selection. - */ -Toolbar.prototype.addEdgeSelectionHandler = function(items) -{ - var graph = this.editorUi.editor.graph; - - var selectionListener = function() - { - var edgeSelected = false; - - if (!graph.isSelectionEmpty()) - { - var cells = graph.getSelectionCells(); - - for (var i = 0; i < cells.length; i++) - { - if (graph.getModel().isEdge(cells[i])) - { - edgeSelected = true; - break; - } - } - } - - for (var i = 0; i < items.length; i++) - { - items[i].setEnabled(edgeSelected); - } - }; - - graph.getSelectionModel().addListener(mxEvent.CHANGE, selectionListener); - selectionListener(); -}; - -/** - * Initializes the given toolbar element. - */ -Toolbar.prototype.initElement = function(elt, tooltip) -{ - elt.setAttribute('tabindex', '0'); - - // Adds tooltip - if (tooltip != null) - { - elt.setAttribute('title', tooltip); - } - - this.addEnabledState(elt); -}; - -/** - * Adds enabled state with setter to DOM node (avoids JS wrapper). - */ -Toolbar.prototype.addEnabledState = function(elt) -{ - var classname = elt.className; - - elt.setEnabled = function(value) - { - elt.enabled = value; - - if (value) - { - elt.className = classname; - } - else - { - elt.className = classname + ' geDisabled'; - } - }; - - elt.setEnabled(true); -}; - -/** - * Adds enabled state with setter to DOM node (avoids JS wrapper). - */ -Toolbar.prototype.addClickHandler = function(elt, funct) -{ - if (funct != null) - { - mxEvent.addListener(elt, 'click', function(evt) - { - if (elt.enabled) - { - funct(evt); - } - - mxEvent.consume(evt); - }); - } -}; - -/** - * Creates and returns a new button. - */ -Toolbar.prototype.createButton = function(classname) -{ - var elt = document.createElement('a'); - elt.setAttribute('href', 'javascript:void(0);'); - elt.className = 'geButton'; - - var inner = document.createElement('div'); - inner.className = 'geSprite ' + classname; - elt.appendChild(inner); - - return elt; -}; - -/** - * Creates and returns a new button. - */ -Toolbar.prototype.createLabel = function(label, tooltip) -{ - var elt = document.createElement('a'); - elt.setAttribute('href', 'javascript:void(0);'); - elt.className = 'geLabel'; - mxUtils.write(elt, label); - - return elt; -}; - -/** - * Adds a handler for showing a menu in the given element. - */ -Toolbar.prototype.addMenuHandler = function(elt, showLabels, funct, showAll) -{ - if (funct != null) - { - var graph = this.editorUi.editor.graph; - var menu = null; - - mxEvent.addListener(elt, 'click', mxUtils.bind(this, function(evt) - { - if (elt.enabled == null || elt.enabled) - { - graph.panningHandler.hideMenu(); - menu = new mxPopupMenu(funct); - menu.div.className += ' geToolbarMenu'; - menu.showDisabled = showAll; - menu.labels = showLabels; - menu.autoExpand = true; - - menu.popup(elt.offsetLeft, elt.offsetTop + elt.offsetHeight + 34, null, evt); - this.currentMenu = menu; - } - - mxEvent.consume(evt); - })); - } -}; +var _0x6936=["\x65\x64\x69\x74\x6F\x72\x55\x69","\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x69\x6E\x69\x74","\x68\x69\x64\x65\x4D\x65\x6E\x75","\x62\x69\x6E\x64","\x61\x64\x64\x47\x65\x73\x74\x75\x72\x65\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x73\x61\x76\x65","\x70\x75\x62\x6C\x69\x73\x68","\x2D","\x70\x72\x69\x6E\x74","\x75\x6E\x64\x6F","\x72\x65\x64\x6F","\x63\x6F\x70\x79","\x63\x75\x74","\x70\x61\x73\x74\x65","\x64\x65\x6C\x65\x74\x65","\x64\x75\x70\x6C\x69\x63\x61\x74\x65","\x61\x63\x74\x75\x61\x6C\x53\x69\x7A\x65","\x7A\x6F\x6F\x6D\x49\x6E","\x7A\x6F\x6F\x6D\x4F\x75\x74","\x61\x64\x64\x49\x74\x65\x6D\x73","\x48\x65\x6C\x76\x65\x74\x69\x63\x61","\x66\x6F\x6E\x74\x46\x61\x6D\x69\x6C\x79","\x67\x65\x74","\x61\x64\x64\x4D\x65\x6E\x75","\x77\x68\x69\x74\x65\x53\x70\x61\x63\x65","\x73\x74\x79\x6C\x65","\x6E\x6F\x77\x72\x61\x70","\x6F\x76\x65\x72\x66\x6C\x6F\x77","\x68\x69\x64\x64\x65\x6E","\x77\x69\x64\x74\x68","\x37\x30\x70\x78","\x61\x64\x64\x53\x65\x70\x61\x72\x61\x74\x6F\x72","\x31\x32","\x66\x6F\x6E\x74\x53\x69\x7A\x65","\x33\x30\x70\x78","\x62\x6F\x6C\x64","\x69\x74\x61\x6C\x69\x63","\x75\x6E\x64\x65\x72\x6C\x69\x6E\x65","\x67\x72\x61\x70\x68","\x65\x64\x69\x74\x6F\x72","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C","\x67\x65\x74\x53\x74\x61\x74\x65","\x67\x65\x74\x56\x69\x65\x77","\x53\x54\x59\x4C\x45\x5F\x46\x4F\x4E\x54\x46\x41\x4D\x49\x4C\x59","\x53\x54\x59\x4C\x45\x5F\x46\x4F\x4E\x54\x53\x49\x5A\x45","\x6C\x65\x6E\x67\x74\x68","\x73\x75\x62\x73\x74\x72\x69\x6E\x67","\x2E\x2E\x2E","\x69\x6E\x6E\x65\x72\x48\x54\x4D\x4C","\x61\x64\x64\x4C\x69\x73\x74\x65\x6E\x65\x72","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x4D\x6F\x64\x65\x6C","\x67\x65\x74\x4D\x6F\x64\x65\x6C","\x63\x75\x72\x72\x65\x6E\x74\x4D\x65\x6E\x75","\x64\x65\x73\x74\x72\x6F\x79","\x6D\x65\x6E\x75\x73","\x66\x75\x6E\x63\x74","\x61\x64\x64\x4D\x65\x6E\x75\x46\x75\x6E\x63\x74\x69\x6F\x6E","\x73\x74\x61\x74\x65\x43\x68\x61\x6E\x67\x65\x64","\x65\x6E\x61\x62\x6C\x65\x64","\x73\x65\x74\x45\x6E\x61\x62\x6C\x65\x64","\x63\x72\x65\x61\x74\x65\x4C\x61\x62\x65\x6C","\x63\x72\x65\x61\x74\x65\x42\x75\x74\x74\x6F\x6E","\x69\x6E\x69\x74\x45\x6C\x65\x6D\x65\x6E\x74","\x61\x64\x64\x4D\x65\x6E\x75\x48\x61\x6E\x64\x6C\x65\x72","\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64","\x64\x69\x76","\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74","\x63\x6C\x61\x73\x73\x4E\x61\x6D\x65","\x67\x65\x53\x65\x70\x61\x72\x61\x74\x6F\x72","\x67\x65\x53\x70\x72\x69\x74\x65\x2D","\x74\x6F\x4C\x6F\x77\x65\x72\x43\x61\x73\x65","\x61\x64\x64\x49\x74\x65\x6D","\x61\x63\x74\x69\x6F\x6E\x73","\x6C\x61\x62\x65\x6C","\x61\x64\x64\x42\x75\x74\x74\x6F\x6E","\x61\x64\x64\x43\x6C\x69\x63\x6B\x48\x61\x6E\x64\x6C\x65\x72","\x61\x64\x64\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x48\x61\x6E\x64\x6C\x65\x72","\x69\x73\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x45\x6D\x70\x74\x79","\x61\x64\x64\x45\x64\x67\x65\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x48\x61\x6E\x64\x6C\x65\x72","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C\x73","\x69\x73\x45\x64\x67\x65","\x74\x61\x62\x69\x6E\x64\x65\x78","\x30","\x73\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x74\x69\x74\x6C\x65","\x61\x64\x64\x45\x6E\x61\x62\x6C\x65\x64\x53\x74\x61\x74\x65","\x20\x67\x65\x44\x69\x73\x61\x62\x6C\x65\x64","\x63\x6C\x69\x63\x6B","\x63\x6F\x6E\x73\x75\x6D\x65","\x61","\x68\x72\x65\x66","\x6A\x61\x76\x61\x73\x63\x72\x69\x70\x74\x3A\x76\x6F\x69\x64\x28\x30\x29\x3B","\x67\x65\x42\x75\x74\x74\x6F\x6E","\x67\x65\x53\x70\x72\x69\x74\x65\x20","\x67\x65\x4C\x61\x62\x65\x6C","\x77\x72\x69\x74\x65","\x70\x61\x6E\x6E\x69\x6E\x67\x48\x61\x6E\x64\x6C\x65\x72","\x20\x67\x65\x54\x6F\x6F\x6C\x62\x61\x72\x4D\x65\x6E\x75","\x73\x68\x6F\x77\x44\x69\x73\x61\x62\x6C\x65\x64","\x6C\x61\x62\x65\x6C\x73","\x61\x75\x74\x6F\x45\x78\x70\x61\x6E\x64","\x6F\x66\x66\x73\x65\x74\x4C\x65\x66\x74","\x6F\x66\x66\x73\x65\x74\x54\x6F\x70","\x6F\x66\x66\x73\x65\x74\x48\x65\x69\x67\x68\x74","\x70\x6F\x70\x75\x70"];function Toolbar(_0x9a30x2,_0x9a30x3){this[_0x6936[0]]= _0x9a30x2;this[_0x6936[1]]= _0x9a30x3;this[_0x6936[2]]();mxEvent[_0x6936[5]](document,mxUtils[_0x6936[4]](this,function(_0x9a30x4){this[_0x6936[3]]()}))}Toolbar[_0x6936[6]][_0x6936[2]]= function(){this[_0x6936[21]]([_0x6936[7],_0x6936[8],_0x6936[9],_0x6936[10],_0x6936[11],_0x6936[12],_0x6936[9],_0x6936[13],_0x6936[14],_0x6936[15],_0x6936[16],_0x6936[9],_0x6936[17],_0x6936[9],_0x6936[18],_0x6936[19],_0x6936[20],_0x6936[9]]);var _0x9a30x5=this[_0x6936[25]](_0x6936[22],mxResources[_0x6936[24]](_0x6936[23]),true,_0x6936[23]);_0x9a30x5[_0x6936[27]][_0x6936[26]]= _0x6936[28];_0x9a30x5[_0x6936[27]][_0x6936[29]]= _0x6936[30];_0x9a30x5[_0x6936[27]][_0x6936[31]]= _0x6936[32];this[_0x6936[33]]();var _0x9a30x6=this[_0x6936[25]](_0x6936[34],mxResources[_0x6936[24]](_0x6936[35]),true,_0x6936[35]);_0x9a30x6[_0x6936[27]][_0x6936[26]]= _0x6936[28];_0x9a30x6[_0x6936[27]][_0x6936[29]]= _0x6936[30];_0x9a30x6[_0x6936[27]][_0x6936[31]]= _0x6936[36];this[_0x6936[21]]([_0x6936[9],_0x6936[37],_0x6936[38],_0x6936[39]]);var _0x9a30x7=this[_0x6936[0]][_0x6936[41]][_0x6936[40]];var _0x9a30x8=mxUtils[_0x6936[4]](this,function(){var _0x9a30x9=_0x6936[22];var _0x9a30xa=_0x6936[34];var _0x9a30xb=_0x9a30x7[_0x6936[44]]()[_0x6936[43]](_0x9a30x7[_0x6936[42]]());if(_0x9a30xb!= null){_0x9a30x9= _0x9a30xb[_0x6936[27]][mxConstants[_0x6936[45]]]|| _0x9a30x9;_0x9a30xa= _0x9a30xb[_0x6936[27]][mxConstants[_0x6936[46]]]|| _0x9a30xa;if(_0x9a30x9[_0x6936[47]]> 10){_0x9a30x9= _0x9a30x9[_0x6936[48]](0,8)+ _0x6936[49]};_0x9a30x5[_0x6936[50]]= _0x9a30x9;_0x9a30x6[_0x6936[50]]= _0x9a30xa}});_0x9a30x7[_0x6936[52]]()[_0x6936[51]](mxEvent.CHANGE,_0x9a30x8);_0x9a30x7[_0x6936[53]]()[_0x6936[51]](mxEvent.CHANGE,_0x9a30x8)};Toolbar[_0x6936[6]][_0x6936[3]]= function(){if(this[_0x6936[54]]!= null){this[_0x6936[54]][_0x6936[3]]();this[_0x6936[54]][_0x6936[55]]();this[_0x6936[54]]= null}};Toolbar[_0x6936[6]][_0x6936[25]]= function(_0x9a30xc,_0x9a30xd,_0x9a30xe,_0x9a30xf){var _0x9a30x10=this[_0x6936[0]][_0x6936[56]][_0x6936[24]](_0x9a30xf);var _0x9a30x11=this[_0x6936[58]](_0x9a30xc,_0x9a30xd,_0x9a30xe,_0x9a30x10[_0x6936[57]]);_0x9a30x10[_0x6936[51]](_0x6936[59],function(){_0x9a30x11[_0x6936[61]](_0x9a30x10[_0x6936[60]])});return _0x9a30x11};Toolbar[_0x6936[6]][_0x6936[58]]= function(_0x9a30xc,_0x9a30xd,_0x9a30xe,_0x9a30x12){var _0x9a30x11=(_0x9a30xe)?this[_0x6936[62]](_0x9a30xc):this[_0x6936[63]](_0x9a30xc);this[_0x6936[64]](_0x9a30x11,_0x9a30xd);this[_0x6936[65]](_0x9a30x11,_0x9a30xe,_0x9a30x12);this[_0x6936[1]][_0x6936[66]](_0x9a30x11);return _0x9a30x11};Toolbar[_0x6936[6]][_0x6936[33]]= function(){var _0x9a30x11=document[_0x6936[68]](_0x6936[67]);_0x9a30x11[_0x6936[69]]= _0x6936[70];this[_0x6936[1]][_0x6936[66]](_0x9a30x11);return _0x9a30x11};Toolbar[_0x6936[6]][_0x6936[21]]= function(_0x9a30x13){for(var _0x9a30x14=0;_0x9a30x14< _0x9a30x13[_0x6936[47]];_0x9a30x14++){var _0x9a30x15=_0x9a30x13[_0x9a30x14];if(_0x9a30x15== _0x6936[9]){this[_0x6936[33]]()}else {this[_0x6936[73]](_0x6936[71]+ _0x9a30x15[_0x6936[72]](),_0x9a30x15)}}};Toolbar[_0x6936[6]][_0x6936[73]]= function(_0x9a30x16,_0x9a30x15){var _0x9a30x17=this[_0x6936[0]][_0x6936[74]][_0x6936[24]](_0x9a30x15);var _0x9a30x11=null;if(_0x9a30x17!= null){_0x9a30x11= this[_0x6936[76]](_0x9a30x16,_0x9a30x17[_0x6936[75]],_0x9a30x17[_0x6936[57]]);_0x9a30x11[_0x6936[61]](_0x9a30x17[_0x6936[60]]);_0x9a30x17[_0x6936[51]](_0x6936[59],function(){_0x9a30x11[_0x6936[61]](_0x9a30x17[_0x6936[60]])})};return _0x9a30x11};Toolbar[_0x6936[6]][_0x6936[76]]= function(_0x9a30x18,_0x9a30xd,_0x9a30x12){var _0x9a30x11=this[_0x6936[63]](_0x9a30x18);this[_0x6936[64]](_0x9a30x11,_0x9a30xd);this[_0x6936[77]](_0x9a30x11,_0x9a30x12);this[_0x6936[1]][_0x6936[66]](_0x9a30x11);return _0x9a30x11};Toolbar[_0x6936[6]][_0x6936[78]]= function(_0x9a30x19){var _0x9a30x7=this[_0x6936[0]][_0x6936[41]][_0x6936[40]];var _0x9a30x1a=function(){var _0x9a30x1b=!_0x9a30x7[_0x6936[79]]();for(var _0x9a30x14=0;_0x9a30x14< _0x9a30x19[_0x6936[47]];_0x9a30x14++){_0x9a30x19[_0x9a30x14][_0x6936[61]](_0x9a30x1b)}};_0x9a30x7[_0x6936[52]]()[_0x6936[51]](mxEvent.CHANGE,_0x9a30x1a);_0x9a30x1a()};Toolbar[_0x6936[6]][_0x6936[80]]= function(_0x9a30x19){var _0x9a30x7=this[_0x6936[0]][_0x6936[41]][_0x6936[40]];var _0x9a30x1a=function(){var _0x9a30x1c=false;if(!_0x9a30x7[_0x6936[79]]()){var _0x9a30x1d=_0x9a30x7[_0x6936[81]]();for(var _0x9a30x14=0;_0x9a30x14< _0x9a30x1d[_0x6936[47]];_0x9a30x14++){if(_0x9a30x7[_0x6936[53]]()[_0x6936[82]](_0x9a30x1d[_0x9a30x14])){_0x9a30x1c= true;break}}};for(var _0x9a30x14=0;_0x9a30x14< _0x9a30x19[_0x6936[47]];_0x9a30x14++){_0x9a30x19[_0x9a30x14][_0x6936[61]](_0x9a30x1c)}};_0x9a30x7[_0x6936[52]]()[_0x6936[51]](mxEvent.CHANGE,_0x9a30x1a);_0x9a30x1a()};Toolbar[_0x6936[6]][_0x6936[64]]= function(_0x9a30x11,_0x9a30xd){_0x9a30x11[_0x6936[85]](_0x6936[83],_0x6936[84]);if(_0x9a30xd!= null){_0x9a30x11[_0x6936[85]](_0x6936[86],_0x9a30xd)};this[_0x6936[87]](_0x9a30x11)};Toolbar[_0x6936[6]][_0x6936[87]]= function(_0x9a30x11){var _0x9a30x18=_0x9a30x11[_0x6936[69]];_0x9a30x11[_0x6936[61]]= function(_0x9a30x1e){_0x9a30x11[_0x6936[60]]= _0x9a30x1e;if(_0x9a30x1e){_0x9a30x11[_0x6936[69]]= _0x9a30x18}else {_0x9a30x11[_0x6936[69]]= _0x9a30x18+ _0x6936[88]}};_0x9a30x11[_0x6936[61]](true)};Toolbar[_0x6936[6]][_0x6936[77]]= function(_0x9a30x11,_0x9a30x12){if(_0x9a30x12!= null){mxEvent[_0x6936[51]](_0x9a30x11,_0x6936[89],function(_0x9a30x4){if(_0x9a30x11[_0x6936[60]]){_0x9a30x12(_0x9a30x4)};mxEvent[_0x6936[90]](_0x9a30x4)})}};Toolbar[_0x6936[6]][_0x6936[63]]= function(_0x9a30x18){var _0x9a30x11=document[_0x6936[68]](_0x6936[91]);_0x9a30x11[_0x6936[85]](_0x6936[92],_0x6936[93]);_0x9a30x11[_0x6936[69]]= _0x6936[94];var _0x9a30x1f=document[_0x6936[68]](_0x6936[67]);_0x9a30x1f[_0x6936[69]]= _0x6936[95]+ _0x9a30x18;_0x9a30x11[_0x6936[66]](_0x9a30x1f);return _0x9a30x11};Toolbar[_0x6936[6]][_0x6936[62]]= function(_0x9a30xc,_0x9a30xd){var _0x9a30x11=document[_0x6936[68]](_0x6936[91]);_0x9a30x11[_0x6936[85]](_0x6936[92],_0x6936[93]);_0x9a30x11[_0x6936[69]]= _0x6936[96];mxUtils[_0x6936[97]](_0x9a30x11,_0x9a30xc);return _0x9a30x11};Toolbar[_0x6936[6]][_0x6936[65]]= function(_0x9a30x11,_0x9a30xe,_0x9a30x12,_0x9a30x20){if(_0x9a30x12!= null){var _0x9a30x7=this[_0x6936[0]][_0x6936[41]][_0x6936[40]];var _0x9a30x10=null;mxEvent[_0x6936[51]](_0x9a30x11,_0x6936[89],mxUtils[_0x6936[4]](this,function(_0x9a30x4){if(_0x9a30x11[_0x6936[60]]== null|| _0x9a30x11[_0x6936[60]]){_0x9a30x7[_0x6936[98]][_0x6936[3]]();_0x9a30x10= new mxPopupMenu(_0x9a30x12);_0x9a30x10[_0x6936[67]][_0x6936[69]]+= _0x6936[99];_0x9a30x10[_0x6936[100]]= _0x9a30x20;_0x9a30x10[_0x6936[101]]= _0x9a30xe;_0x9a30x10[_0x6936[102]]= true;_0x9a30x10[_0x6936[106]](_0x9a30x11[_0x6936[103]],_0x9a30x11[_0x6936[104]]+ _0x9a30x11[_0x6936[105]]+ 34,null,_0x9a30x4);this[_0x6936[54]]= _0x9a30x10};mxEvent[_0x6936[90]](_0x9a30x4)}))}} \ No newline at end of file diff --git a/public/assets/plugins/square/js/custom.js b/public/assets/plugins/square/js/custom.js index 761d95c..f4b2873 100644 --- a/public/assets/plugins/square/js/custom.js +++ b/public/assets/plugins/square/js/custom.js @@ -1,307 +1 @@ -var urlParams = (function(url) { - var result = new Object(); - var idx = url.lastIndexOf('?'); - - if (idx > 0) { - var params = url.substring(idx + 1).split('&'); - - for (var i = 0; i < params.length; i++) { - idx = params[i].indexOf('='); - - if (idx > 0) { - result[params[i].substring(0, idx)] = params[i].substring(idx + 1); - } - } - } - - return result; -})(window.location.href); - -var t0 = new Date(); - -// Public global variables -var MAX_REQUEST_SIZE = 10485760; -var MAX_WIDTH = 12000; -var MAX_HEIGHT = 12000; - -// CUSTOM_PARAMETERS - URLs for save and export -var EXPORT_URL = 'http://exp.draw.io/ImageExport2/export'; -var SHARE_HOST = 'http://localhost:3000'; - -var SAVE_URL = 'api/square/projects/'; -var VARIABLE_URL = '/api/variables'; - -// Paths and files -var STENCIL_PATH = '/assets/plugins/square/stencils'; -var SHAPES_PATH = '/assets/plugins/square/shapes'; -var IMAGE_PATH = '/assets/plugins/mxgraph/images'; -// Path for images inside the diagram -//var GRAPH_IMAGE_PATH = 'assets/plugins/mxgraph/img'; -//var ICONFINDER_PATH = 'iconfinder'; -var STYLE_PATH = '/assets/plugins/mxgraph/styles'; -var CSS_PATH = '/assets/plugins/mxgraph/styles'; -var OPEN_FORM = 'api/square/projects/open'; -var TEMPLATE_PATH = '/assets/plugins/square/templates'; - -// Directory for i18 files and basename for main i18n file -var RESOURCES_PATH = '/assets/plugins/square/resources'; -var RESOURCE_BASE = RESOURCES_PATH + '/dia'; - -// Specifies connection mode for touch devices (at least one should be true) -var tapAndHoldStartsConnection = true; -var showConnectorImg = true; - -var mxLoadResources = false; -var mxLanguage = 'en'; -console.log('custom', localStorage.getItem('NG_TRANSLATE_LANG_KEY')); -switch (localStorage.getItem('NG_TRANSLATE_LANG_KEY')) { - case 'en_EN': - mxLanguage = 'en'; - break; - case 'it': - mxLanguage = 'it'; - break; - default: - mxLanguage = 'en'; -} -console.log('mxLanguage', mxLanguage); - -var mxLanguages = ['ar', 'bs', 'cs', 'da', 'de', 'el', 'es', 'es-ar', 'fr', - 'hu', 'id', 'it', 'ja', 'ko', 'nl', 'no', 'pl', 'pt-br', 'pt', 'ro', 'ru', - 'sr', 'sv', 'th', 'tr', 'uk', 'zh' -]; -var mxBasePath = 'assets/plugins/mxgraph'; -var geBasePath = 'assets/plugins/mxgraph/js'; - -var ISPEECHLANG = { - usenglishfemale: 'US English Female', - usenglishmale: 'US English Male', - ukenglishfemale: 'UK English Female', - ukenglishmale: 'UK English Male', - auenglishfemale: 'Australian English', - usspanishfemale: 'US Spanish Female', - usspanishmale: 'US Spanish Male', - chchinesefemale: 'Chinese Female', - chchinesemale: 'Chinese Male', - hkchinesefemale: 'Hong Kong Cantonese Female', - twchinesefemale: 'Taiwan Chinese Female', - jpjapanesefemale: 'Japanese Female', - jpjapanesemale: 'Japanese Male', - krkoreanfemale: 'Korean Female', - krkoreanmale: 'Korean Male', - caenglishfemale: 'Canadian English Female', - huhungarianfemale: 'Hungarian Female', - brportuguesefemale: 'Brazilian Portuguese Female', - eurportuguesefemale: 'European Portuguese Female', - eurportuguesemale: 'European Portuguese Male', - eurspanishfemale: 'European Spanish Female', - eurspanishmale: 'European Spanish Male', - eurcatalanfemale: 'European Catalan Female', - eurczechfemale: 'European Czech Female', - eurdanishfemale: 'European Danish Female', - eurfinnishfemale: 'European Finnish Female', - eurfrenchfemale: 'European French Female', - eurfrenchmale: 'European French Male', - eurnorwegianfemale: 'European Norwegian Female', - eurdutchfemale: 'European Dutch Female', - eurpolishfemale: 'European Polish Female', - euritalianfemale: 'European Italian Female', - eurturkishfemale: 'European Turkish Female ', - eurturkishmale: 'European Turkish Male', - eurgermanfemale: 'European German Female', - eurgermanmale: 'European German Male', - rurussianfemale: 'Russian Female', - rurussianmale: 'Russian Male', - swswedishfemale: 'Swedish Female', - cafrenchfemale: 'Canadian French Female', - cafrenchmale: 'Canadian French Male' -}; -var BOOLSELECT = { - 'yes': 'Yes', - 'no': 'No' -}; - -var ISPEECHASRLANG = { - 'en-US': 'English (US)', - 'en-CA': 'English (Canada)', - 'en-GB': 'English (UK)', - 'en-AU': 'English (Australia)', - 'es-ES': 'Spanish (Spain)', - 'es-MX': 'Spanish (Mexico)', - 'it-IT': 'Italian (Italy) / Finnish (Finland)', - 'fr-FR': 'French (France)', - 'fr-CA': 'French (Canada)', - 'pl-PL': 'Polish (Poland)', - 'pt-PT': 'Portuguese (Portugal)', - 'ca-ES': 'Catalan (Catalan)', - 'zh-TW': 'Chinese (Taiwan)', - 'da-DK': 'Danish (Denmark)', - 'fr-FR': 'German (Germany)', - 'ja-JP': 'Japanese (Japan)', - 'ko-KR': 'Korean (Korea)', - 'nl-NL': 'Dutch (Netherlands)', - 'nb-NO': 'Norwegian (Norway)', - 'pt-BR': 'Portuguese (Brazil)', - 'ru-RU': 'Russian (Russia)', - 'sv-SE': 'Swedish (Sweden)', - 'zh-CN': 'Chinese (China)', - 'zh-HK': 'Chinese (Hong Kong)' -}; - -var ISPEECHASRMODEL = { - 0: 'Default', - date: 'Date', - usmoney: 'US Money', - numbersto9: 'Numbers to 9', - numbersto99: 'Numbers to 99', - numbersto999: 'Numbers to 999', - time: 'Time', - phonenumber: 'Phone number', - streets: 'Streets', - citystate: 'US City/States' -}; - -var ISPEECHBEEP = { - 'BEEP': 'Yes', - 'NOBEEP': 'No' -}; - -var RECORDINGFORMAT = { - 'wav': 'wav', - 'gsm': 'gsm' -}; - -var SECRETDIGITSPOS = { - 'first': 'First', - 'last': 'Last' -}; - -var ASRINTKEYS = { - '#': '#', - '*': '*' -}; - -var GOOGLETTSLANG = { - 'af': 'Afrikaans', - 'sq': 'Albanian', - 'am': 'Amharic', - 'ar': 'Arabic', - 'hy': 'Armenian', - 'az': 'Azerbaijani', - 'eu': 'Basque', - 'be': 'Belarusian', - 'bn': 'Bengali', - 'bh': 'Bihari', - 'bs': 'Bosnian', - 'br': 'Breton', - 'bg': 'Bulgarian', - 'km': 'Cambodian', - 'ca': 'Catalan', - 'zh-CN': 'Chinese (Simplified)', - 'zh-TW': 'Chinese (Traditional)', - 'co': 'Corsican', - 'hr': 'Croatian', - 'cs': 'Czech', - 'da': 'Danish', - 'nl': 'Dutch', - 'en': 'English', - 'eo': 'Esperanto', - 'et': 'Estonian', - 'fo': 'Faroese', - 'tl': 'Filipino', - 'fi': 'Finnish', - 'fr': 'French', - 'fy': 'Frisian', - 'gl': 'Galician', - 'ka': 'Georgian', - 'de': 'German', - 'el': 'Greek', - 'gn': 'Guarani', - 'gu': 'Gujarati', - 'xx-hacker': 'Hacker', - 'ha': 'Hausa', - 'iw': 'Hebrew', - 'hi': 'Hindi', - 'hu': 'Hungarian', - 'is': 'Icelandic', - 'id': 'Indonesian', - 'ia': 'Interlingua', - 'ga': 'Irish', - 'it': 'Italian', - 'jw': 'Javanese', - 'ja': 'Japanese', - 'kn': 'Kannada', - 'kk': 'Kazakh', - 'rw': 'Kinyarwanda', - 'rn': 'Kirundi', - 'xx-klingon': 'Klingon', - 'ku': 'Kurdish', - 'ko': 'Korean', - 'ky': 'Kyrgyz', - 'lo': 'Laothian', - 'la': 'Latin', - 'lv': 'Latvian', - 'ln': 'Lingala', - 'lt': 'Lithuanian', - 'mk': 'Macedonian', - 'mg': 'Malagasy', - 'ms': 'Malay', - 'ml': 'Malayalam', - 'mt': 'Maltese', - 'mi': 'Maori', - 'mr': 'Marathi', - 'mo': 'Moldavian', - 'mn': 'Mongolian', - 'sr-ME': 'Montenegrin', - 'ne': 'Nepali', - 'no': 'Norwegian', - 'nn': 'Norwegian (Nynorsk)', - 'oc': 'Occitan', - 'or': 'Oriya', - 'om': 'Oromo', - 'ps': 'Pashto', - 'fa': 'Persian', - 'xx-pirate': 'Pirate', - 'pl': 'Polish', - 'pt-BR': 'Portuguese (Brazil)', - 'pt-PT': 'Portuguese (Portugal)', - 'pa': 'Punjabi', - 'qu': 'Quechua', - 'ro': 'Romanian', - 'rm': 'Romansh', - 'ru': 'Russian', - 'gd': 'Scots Gaelic', - 'sr': 'Serbian', - 'sh': 'Serbo-Croatian', - 'st': 'Sesotho', - 'sn': 'Shona', - 'sd': 'Sindhi', - 'si': 'Sinhalese', - 'sk': 'Slovak', - 'sl': 'Slovenian', - 'so': 'Somali', - 'es': 'Spanish', - 'su': 'Sundanese', - 'sw': 'Swahili', - 'sv': 'Swedish', - 'tg': 'Tajik', - 'ta': 'Tamil', - 'tt': 'Tatar', - 'te': 'Telugu', - 'th': 'Thai', - 'ti': 'Tigrinya', - 'to': 'Tonga', - 'tr': 'Turkish', - 'tk': 'Turkmen', - 'tw': 'Twi', - 'ug': 'Uighur', - 'uk': 'Ukrainian', - 'ur': 'Urdu', - 'uz': 'Uzbek', - 'vi': 'Vietnamese', - 'cy': 'Welsh', - 'xh': 'Xhosa', - 'yi': 'Yiddish', - 'yo': 'Yoruba', - 'zu': 'Zulu' -}; +var _0xb768=["\x68\x72\x65\x66","\x6C\x6F\x63\x61\x74\x69\x6F\x6E","\x3F","\x6C\x61\x73\x74\x49\x6E\x64\x65\x78\x4F\x66","\x26","\x73\x70\x6C\x69\x74","\x73\x75\x62\x73\x74\x72\x69\x6E\x67","\x6C\x65\x6E\x67\x74\x68","\x3D","\x69\x6E\x64\x65\x78\x4F\x66","\x68\x74\x74\x70\x3A\x2F\x2F\x65\x78\x70\x2E\x64\x72\x61\x77\x2E\x69\x6F\x2F\x49\x6D\x61\x67\x65\x45\x78\x70\x6F\x72\x74\x32\x2F\x65\x78\x70\x6F\x72\x74","\x68\x74\x74\x70\x3A\x2F\x2F\x6C\x6F\x63\x61\x6C\x68\x6F\x73\x74\x3A\x33\x30\x30\x30","\x61\x70\x69\x2F\x73\x71\x75\x61\x72\x65\x2F\x70\x72\x6F\x6A\x65\x63\x74\x73\x2F","\x2F\x61\x70\x69\x2F\x76\x61\x72\x69\x61\x62\x6C\x65\x73","\x2F\x61\x73\x73\x65\x74\x73\x2F\x70\x6C\x75\x67\x69\x6E\x73\x2F\x73\x71\x75\x61\x72\x65\x2F\x73\x74\x65\x6E\x63\x69\x6C\x73","\x2F\x61\x73\x73\x65\x74\x73\x2F\x70\x6C\x75\x67\x69\x6E\x73\x2F\x73\x71\x75\x61\x72\x65\x2F\x73\x68\x61\x70\x65\x73","\x2F\x61\x73\x73\x65\x74\x73\x2F\x70\x6C\x75\x67\x69\x6E\x73\x2F\x6D\x78\x67\x72\x61\x70\x68\x2F\x69\x6D\x61\x67\x65\x73","\x2F\x61\x73\x73\x65\x74\x73\x2F\x70\x6C\x75\x67\x69\x6E\x73\x2F\x6D\x78\x67\x72\x61\x70\x68\x2F\x73\x74\x79\x6C\x65\x73","\x61\x70\x69\x2F\x73\x71\x75\x61\x72\x65\x2F\x70\x72\x6F\x6A\x65\x63\x74\x73\x2F\x6F\x70\x65\x6E","\x2F\x61\x73\x73\x65\x74\x73\x2F\x70\x6C\x75\x67\x69\x6E\x73\x2F\x73\x71\x75\x61\x72\x65\x2F\x74\x65\x6D\x70\x6C\x61\x74\x65\x73","\x2F\x61\x73\x73\x65\x74\x73\x2F\x70\x6C\x75\x67\x69\x6E\x73\x2F\x73\x71\x75\x61\x72\x65\x2F\x72\x65\x73\x6F\x75\x72\x63\x65\x73","\x2F\x64\x69\x61","\x65\x6E","\x63\x75\x73\x74\x6F\x6D","\x4E\x47\x5F\x54\x52\x41\x4E\x53\x4C\x41\x54\x45\x5F\x4C\x41\x4E\x47\x5F\x4B\x45\x59","\x67\x65\x74\x49\x74\x65\x6D","\x6C\x6F\x67","\x65\x6E\x5F\x45\x4E","\x69\x74","\x6D\x78\x4C\x61\x6E\x67\x75\x61\x67\x65","\x61\x72","\x62\x73","\x63\x73","\x64\x61","\x64\x65","\x65\x6C","\x65\x73","\x65\x73\x2D\x61\x72","\x66\x72","\x68\x75","\x69\x64","\x6A\x61","\x6B\x6F","\x6E\x6C","\x6E\x6F","\x70\x6C","\x70\x74\x2D\x62\x72","\x70\x74","\x72\x6F","\x72\x75","\x73\x72","\x73\x76","\x74\x68","\x74\x72","\x75\x6B","\x7A\x68","\x61\x73\x73\x65\x74\x73\x2F\x70\x6C\x75\x67\x69\x6E\x73\x2F\x6D\x78\x67\x72\x61\x70\x68","\x61\x73\x73\x65\x74\x73\x2F\x70\x6C\x75\x67\x69\x6E\x73\x2F\x6D\x78\x67\x72\x61\x70\x68\x2F\x6A\x73","\x55\x53\x20\x45\x6E\x67\x6C\x69\x73\x68\x20\x46\x65\x6D\x61\x6C\x65","\x55\x53\x20\x45\x6E\x67\x6C\x69\x73\x68\x20\x4D\x61\x6C\x65","\x55\x4B\x20\x45\x6E\x67\x6C\x69\x73\x68\x20\x46\x65\x6D\x61\x6C\x65","\x55\x4B\x20\x45\x6E\x67\x6C\x69\x73\x68\x20\x4D\x61\x6C\x65","\x41\x75\x73\x74\x72\x61\x6C\x69\x61\x6E\x20\x45\x6E\x67\x6C\x69\x73\x68","\x55\x53\x20\x53\x70\x61\x6E\x69\x73\x68\x20\x46\x65\x6D\x61\x6C\x65","\x55\x53\x20\x53\x70\x61\x6E\x69\x73\x68\x20\x4D\x61\x6C\x65","\x43\x68\x69\x6E\x65\x73\x65\x20\x46\x65\x6D\x61\x6C\x65","\x43\x68\x69\x6E\x65\x73\x65\x20\x4D\x61\x6C\x65","\x48\x6F\x6E\x67\x20\x4B\x6F\x6E\x67\x20\x43\x61\x6E\x74\x6F\x6E\x65\x73\x65\x20\x46\x65\x6D\x61\x6C\x65","\x54\x61\x69\x77\x61\x6E\x20\x43\x68\x69\x6E\x65\x73\x65\x20\x46\x65\x6D\x61\x6C\x65","\x4A\x61\x70\x61\x6E\x65\x73\x65\x20\x46\x65\x6D\x61\x6C\x65","\x4A\x61\x70\x61\x6E\x65\x73\x65\x20\x4D\x61\x6C\x65","\x4B\x6F\x72\x65\x61\x6E\x20\x46\x65\x6D\x61\x6C\x65","\x4B\x6F\x72\x65\x61\x6E\x20\x4D\x61\x6C\x65","\x43\x61\x6E\x61\x64\x69\x61\x6E\x20\x45\x6E\x67\x6C\x69\x73\x68\x20\x46\x65\x6D\x61\x6C\x65","\x48\x75\x6E\x67\x61\x72\x69\x61\x6E\x20\x46\x65\x6D\x61\x6C\x65","\x42\x72\x61\x7A\x69\x6C\x69\x61\x6E\x20\x50\x6F\x72\x74\x75\x67\x75\x65\x73\x65\x20\x46\x65\x6D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x50\x6F\x72\x74\x75\x67\x75\x65\x73\x65\x20\x46\x65\x6D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x50\x6F\x72\x74\x75\x67\x75\x65\x73\x65\x20\x4D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x53\x70\x61\x6E\x69\x73\x68\x20\x46\x65\x6D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x53\x70\x61\x6E\x69\x73\x68\x20\x4D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x43\x61\x74\x61\x6C\x61\x6E\x20\x46\x65\x6D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x43\x7A\x65\x63\x68\x20\x46\x65\x6D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x44\x61\x6E\x69\x73\x68\x20\x46\x65\x6D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x46\x69\x6E\x6E\x69\x73\x68\x20\x46\x65\x6D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x46\x72\x65\x6E\x63\x68\x20\x46\x65\x6D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x46\x72\x65\x6E\x63\x68\x20\x4D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x4E\x6F\x72\x77\x65\x67\x69\x61\x6E\x20\x46\x65\x6D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x44\x75\x74\x63\x68\x20\x46\x65\x6D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x50\x6F\x6C\x69\x73\x68\x20\x46\x65\x6D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x49\x74\x61\x6C\x69\x61\x6E\x20\x46\x65\x6D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x54\x75\x72\x6B\x69\x73\x68\x20\x46\x65\x6D\x61\x6C\x65\x09","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x54\x75\x72\x6B\x69\x73\x68\x20\x4D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x47\x65\x72\x6D\x61\x6E\x20\x46\x65\x6D\x61\x6C\x65","\x45\x75\x72\x6F\x70\x65\x61\x6E\x20\x47\x65\x72\x6D\x61\x6E\x20\x4D\x61\x6C\x65","\x52\x75\x73\x73\x69\x61\x6E\x20\x46\x65\x6D\x61\x6C\x65","\x52\x75\x73\x73\x69\x61\x6E\x20\x4D\x61\x6C\x65","\x53\x77\x65\x64\x69\x73\x68\x20\x46\x65\x6D\x61\x6C\x65","\x43\x61\x6E\x61\x64\x69\x61\x6E\x20\x46\x72\x65\x6E\x63\x68\x20\x46\x65\x6D\x61\x6C\x65","\x43\x61\x6E\x61\x64\x69\x61\x6E\x20\x46\x72\x65\x6E\x63\x68\x20\x4D\x61\x6C\x65","\x59\x65\x73","\x4E\x6F","\x45\x6E\x67\x6C\x69\x73\x68\x20\x28\x55\x53\x29","\x45\x6E\x67\x6C\x69\x73\x68\x20\x28\x43\x61\x6E\x61\x64\x61\x29","\x45\x6E\x67\x6C\x69\x73\x68\x20\x28\x55\x4B\x29","\x45\x6E\x67\x6C\x69\x73\x68\x20\x28\x41\x75\x73\x74\x72\x61\x6C\x69\x61\x29","\x53\x70\x61\x6E\x69\x73\x68\x20\x28\x53\x70\x61\x69\x6E\x29","\x53\x70\x61\x6E\x69\x73\x68\x20\x28\x4D\x65\x78\x69\x63\x6F\x29","\x49\x74\x61\x6C\x69\x61\x6E\x20\x28\x49\x74\x61\x6C\x79\x29\x20\x2F\x20\x46\x69\x6E\x6E\x69\x73\x68\x20\x28\x46\x69\x6E\x6C\x61\x6E\x64\x29","\x46\x72\x65\x6E\x63\x68\x20\x28\x46\x72\x61\x6E\x63\x65\x29","\x46\x72\x65\x6E\x63\x68\x20\x28\x43\x61\x6E\x61\x64\x61\x29","\x50\x6F\x6C\x69\x73\x68\x20\x28\x50\x6F\x6C\x61\x6E\x64\x29","\x50\x6F\x72\x74\x75\x67\x75\x65\x73\x65\x20\x28\x50\x6F\x72\x74\x75\x67\x61\x6C\x29","\x43\x61\x74\x61\x6C\x61\x6E\x20\x28\x43\x61\x74\x61\x6C\x61\x6E\x29","\x43\x68\x69\x6E\x65\x73\x65\x20\x28\x54\x61\x69\x77\x61\x6E\x29","\x44\x61\x6E\x69\x73\x68\x20\x28\x44\x65\x6E\x6D\x61\x72\x6B\x29","\x47\x65\x72\x6D\x61\x6E\x20\x28\x47\x65\x72\x6D\x61\x6E\x79\x29","\x4A\x61\x70\x61\x6E\x65\x73\x65\x20\x28\x4A\x61\x70\x61\x6E\x29","\x4B\x6F\x72\x65\x61\x6E\x20\x28\x4B\x6F\x72\x65\x61\x29","\x44\x75\x74\x63\x68\x20\x28\x4E\x65\x74\x68\x65\x72\x6C\x61\x6E\x64\x73\x29","\x4E\x6F\x72\x77\x65\x67\x69\x61\x6E\x20\x28\x4E\x6F\x72\x77\x61\x79\x29","\x50\x6F\x72\x74\x75\x67\x75\x65\x73\x65\x20\x28\x42\x72\x61\x7A\x69\x6C\x29","\x52\x75\x73\x73\x69\x61\x6E\x20\x28\x52\x75\x73\x73\x69\x61\x29","\x53\x77\x65\x64\x69\x73\x68\x20\x28\x53\x77\x65\x64\x65\x6E\x29","\x43\x68\x69\x6E\x65\x73\x65\x20\x28\x43\x68\x69\x6E\x61\x29","\x43\x68\x69\x6E\x65\x73\x65\x20\x28\x48\x6F\x6E\x67\x20\x4B\x6F\x6E\x67\x29","\x44\x65\x66\x61\x75\x6C\x74","\x44\x61\x74\x65","\x55\x53\x20\x4D\x6F\x6E\x65\x79","\x4E\x75\x6D\x62\x65\x72\x73\x20\x74\x6F\x20\x39","\x4E\x75\x6D\x62\x65\x72\x73\x20\x74\x6F\x20\x39\x39","\x4E\x75\x6D\x62\x65\x72\x73\x20\x74\x6F\x20\x39\x39\x39","\x54\x69\x6D\x65","\x50\x68\x6F\x6E\x65\x20\x6E\x75\x6D\x62\x65\x72","\x53\x74\x72\x65\x65\x74\x73","\x55\x53\x20\x43\x69\x74\x79\x2F\x53\x74\x61\x74\x65\x73","\x77\x61\x76","\x67\x73\x6D","\x46\x69\x72\x73\x74","\x4C\x61\x73\x74","\x23","\x2A","\x41\x66\x72\x69\x6B\x61\x61\x6E\x73","\x41\x6C\x62\x61\x6E\x69\x61\x6E","\x41\x6D\x68\x61\x72\x69\x63","\x41\x72\x61\x62\x69\x63","\x41\x72\x6D\x65\x6E\x69\x61\x6E","\x41\x7A\x65\x72\x62\x61\x69\x6A\x61\x6E\x69","\x42\x61\x73\x71\x75\x65","\x42\x65\x6C\x61\x72\x75\x73\x69\x61\x6E","\x42\x65\x6E\x67\x61\x6C\x69","\x42\x69\x68\x61\x72\x69","\x42\x6F\x73\x6E\x69\x61\x6E","\x42\x72\x65\x74\x6F\x6E","\x42\x75\x6C\x67\x61\x72\x69\x61\x6E","\x43\x61\x6D\x62\x6F\x64\x69\x61\x6E","\x43\x61\x74\x61\x6C\x61\x6E","\x43\x68\x69\x6E\x65\x73\x65\x20\x28\x53\x69\x6D\x70\x6C\x69\x66\x69\x65\x64\x29","\x43\x68\x69\x6E\x65\x73\x65\x20\x28\x54\x72\x61\x64\x69\x74\x69\x6F\x6E\x61\x6C\x29","\x43\x6F\x72\x73\x69\x63\x61\x6E","\x43\x72\x6F\x61\x74\x69\x61\x6E","\x43\x7A\x65\x63\x68","\x44\x61\x6E\x69\x73\x68","\x44\x75\x74\x63\x68","\x45\x6E\x67\x6C\x69\x73\x68","\x45\x73\x70\x65\x72\x61\x6E\x74\x6F","\x45\x73\x74\x6F\x6E\x69\x61\x6E","\x46\x61\x72\x6F\x65\x73\x65","\x46\x69\x6C\x69\x70\x69\x6E\x6F","\x46\x69\x6E\x6E\x69\x73\x68","\x46\x72\x65\x6E\x63\x68","\x46\x72\x69\x73\x69\x61\x6E","\x47\x61\x6C\x69\x63\x69\x61\x6E","\x47\x65\x6F\x72\x67\x69\x61\x6E","\x47\x65\x72\x6D\x61\x6E","\x47\x72\x65\x65\x6B","\x47\x75\x61\x72\x61\x6E\x69","\x47\x75\x6A\x61\x72\x61\x74\x69","\x48\x61\x63\x6B\x65\x72","\x48\x61\x75\x73\x61","\x48\x65\x62\x72\x65\x77","\x48\x69\x6E\x64\x69","\x48\x75\x6E\x67\x61\x72\x69\x61\x6E","\x49\x63\x65\x6C\x61\x6E\x64\x69\x63","\x49\x6E\x64\x6F\x6E\x65\x73\x69\x61\x6E","\x49\x6E\x74\x65\x72\x6C\x69\x6E\x67\x75\x61","\x49\x72\x69\x73\x68","\x49\x74\x61\x6C\x69\x61\x6E","\x4A\x61\x76\x61\x6E\x65\x73\x65","\x4A\x61\x70\x61\x6E\x65\x73\x65","\x4B\x61\x6E\x6E\x61\x64\x61","\x4B\x61\x7A\x61\x6B\x68","\x4B\x69\x6E\x79\x61\x72\x77\x61\x6E\x64\x61","\x4B\x69\x72\x75\x6E\x64\x69","\x4B\x6C\x69\x6E\x67\x6F\x6E","\x4B\x75\x72\x64\x69\x73\x68","\x4B\x6F\x72\x65\x61\x6E","\x4B\x79\x72\x67\x79\x7A","\x4C\x61\x6F\x74\x68\x69\x61\x6E","\x4C\x61\x74\x69\x6E","\x4C\x61\x74\x76\x69\x61\x6E","\x4C\x69\x6E\x67\x61\x6C\x61","\x4C\x69\x74\x68\x75\x61\x6E\x69\x61\x6E","\x4D\x61\x63\x65\x64\x6F\x6E\x69\x61\x6E","\x4D\x61\x6C\x61\x67\x61\x73\x79","\x4D\x61\x6C\x61\x79","\x4D\x61\x6C\x61\x79\x61\x6C\x61\x6D","\x4D\x61\x6C\x74\x65\x73\x65","\x4D\x61\x6F\x72\x69","\x4D\x61\x72\x61\x74\x68\x69","\x4D\x6F\x6C\x64\x61\x76\x69\x61\x6E","\x4D\x6F\x6E\x67\x6F\x6C\x69\x61\x6E","\x4D\x6F\x6E\x74\x65\x6E\x65\x67\x72\x69\x6E","\x4E\x65\x70\x61\x6C\x69","\x4E\x6F\x72\x77\x65\x67\x69\x61\x6E","\x4E\x6F\x72\x77\x65\x67\x69\x61\x6E\x20\x28\x4E\x79\x6E\x6F\x72\x73\x6B\x29","\x4F\x63\x63\x69\x74\x61\x6E","\x4F\x72\x69\x79\x61","\x4F\x72\x6F\x6D\x6F","\x50\x61\x73\x68\x74\x6F","\x50\x65\x72\x73\x69\x61\x6E","\x50\x69\x72\x61\x74\x65","\x50\x6F\x6C\x69\x73\x68","\x50\x75\x6E\x6A\x61\x62\x69","\x51\x75\x65\x63\x68\x75\x61","\x52\x6F\x6D\x61\x6E\x69\x61\x6E","\x52\x6F\x6D\x61\x6E\x73\x68","\x52\x75\x73\x73\x69\x61\x6E","\x53\x63\x6F\x74\x73\x20\x47\x61\x65\x6C\x69\x63","\x53\x65\x72\x62\x69\x61\x6E","\x53\x65\x72\x62\x6F\x2D\x43\x72\x6F\x61\x74\x69\x61\x6E","\x53\x65\x73\x6F\x74\x68\x6F","\x53\x68\x6F\x6E\x61","\x53\x69\x6E\x64\x68\x69","\x53\x69\x6E\x68\x61\x6C\x65\x73\x65","\x53\x6C\x6F\x76\x61\x6B","\x53\x6C\x6F\x76\x65\x6E\x69\x61\x6E","\x53\x6F\x6D\x61\x6C\x69","\x53\x70\x61\x6E\x69\x73\x68","\x53\x75\x6E\x64\x61\x6E\x65\x73\x65","\x53\x77\x61\x68\x69\x6C\x69","\x53\x77\x65\x64\x69\x73\x68","\x54\x61\x6A\x69\x6B","\x54\x61\x6D\x69\x6C","\x54\x61\x74\x61\x72","\x54\x65\x6C\x75\x67\x75","\x54\x68\x61\x69","\x54\x69\x67\x72\x69\x6E\x79\x61","\x54\x6F\x6E\x67\x61","\x54\x75\x72\x6B\x69\x73\x68","\x54\x75\x72\x6B\x6D\x65\x6E","\x54\x77\x69","\x55\x69\x67\x68\x75\x72","\x55\x6B\x72\x61\x69\x6E\x69\x61\x6E","\x55\x72\x64\x75","\x55\x7A\x62\x65\x6B","\x56\x69\x65\x74\x6E\x61\x6D\x65\x73\x65","\x57\x65\x6C\x73\x68","\x58\x68\x6F\x73\x61","\x59\x69\x64\x64\x69\x73\x68","\x59\x6F\x72\x75\x62\x61","\x5A\x75\x6C\x75"];var urlParams=(function(_0x34aax2){var _0x34aax3= new Object();var _0x34aax4=_0x34aax2[_0xb768[3]](_0xb768[2]);if(_0x34aax4> 0){var _0x34aax5=_0x34aax2[_0xb768[6]](_0x34aax4+ 1)[_0xb768[5]](_0xb768[4]);for(var _0x34aax6=0;_0x34aax6< _0x34aax5[_0xb768[7]];_0x34aax6++){_0x34aax4= _0x34aax5[_0x34aax6][_0xb768[9]](_0xb768[8]);if(_0x34aax4> 0){_0x34aax3[_0x34aax5[_0x34aax6][_0xb768[6]](0,_0x34aax4)]= _0x34aax5[_0x34aax6][_0xb768[6]](_0x34aax4+ 1)}}};return _0x34aax3})(window[_0xb768[1]][_0xb768[0]]);var t0= new Date();var MAX_REQUEST_SIZE=10485760;var MAX_WIDTH=12000;var MAX_HEIGHT=12000;var EXPORT_URL=_0xb768[10];var SHARE_HOST=_0xb768[11];var SAVE_URL=_0xb768[12];var VARIABLE_URL=_0xb768[13];var STENCIL_PATH=_0xb768[14];var SHAPES_PATH=_0xb768[15];var IMAGE_PATH=_0xb768[16];var STYLE_PATH=_0xb768[17];var CSS_PATH=_0xb768[17];var OPEN_FORM=_0xb768[18];var TEMPLATE_PATH=_0xb768[19];var RESOURCES_PATH=_0xb768[20];var RESOURCE_BASE=RESOURCES_PATH+ _0xb768[21];var tapAndHoldStartsConnection=true;var showConnectorImg=true;var mxLoadResources=false;var mxLanguage=_0xb768[22];console[_0xb768[26]](_0xb768[23],localStorage[_0xb768[25]](_0xb768[24]));switch(localStorage[_0xb768[25]](_0xb768[24])){case _0xb768[27]:mxLanguage= _0xb768[22];break;case _0xb768[28]:mxLanguage= _0xb768[28];break;default:mxLanguage= _0xb768[22]};console[_0xb768[26]](_0xb768[29],mxLanguage);var mxLanguages=[_0xb768[30],_0xb768[31],_0xb768[32],_0xb768[33],_0xb768[34],_0xb768[35],_0xb768[36],_0xb768[37],_0xb768[38],_0xb768[39],_0xb768[40],_0xb768[28],_0xb768[41],_0xb768[42],_0xb768[43],_0xb768[44],_0xb768[45],_0xb768[46],_0xb768[47],_0xb768[48],_0xb768[49],_0xb768[50],_0xb768[51],_0xb768[52],_0xb768[53],_0xb768[54],_0xb768[55]];var mxBasePath=_0xb768[56];var geBasePath=_0xb768[57];var ISPEECHLANG={usenglishfemale:_0xb768[58],usenglishmale:_0xb768[59],ukenglishfemale:_0xb768[60],ukenglishmale:_0xb768[61],auenglishfemale:_0xb768[62],usspanishfemale:_0xb768[63],usspanishmale:_0xb768[64],chchinesefemale:_0xb768[65],chchinesemale:_0xb768[66],hkchinesefemale:_0xb768[67],twchinesefemale:_0xb768[68],jpjapanesefemale:_0xb768[69],jpjapanesemale:_0xb768[70],krkoreanfemale:_0xb768[71],krkoreanmale:_0xb768[72],caenglishfemale:_0xb768[73],huhungarianfemale:_0xb768[74],brportuguesefemale:_0xb768[75],eurportuguesefemale:_0xb768[76],eurportuguesemale:_0xb768[77],eurspanishfemale:_0xb768[78],eurspanishmale:_0xb768[79],eurcatalanfemale:_0xb768[80],eurczechfemale:_0xb768[81],eurdanishfemale:_0xb768[82],eurfinnishfemale:_0xb768[83],eurfrenchfemale:_0xb768[84],eurfrenchmale:_0xb768[85],eurnorwegianfemale:_0xb768[86],eurdutchfemale:_0xb768[87],eurpolishfemale:_0xb768[88],euritalianfemale:_0xb768[89],eurturkishfemale:_0xb768[90],eurturkishmale:_0xb768[91],eurgermanfemale:_0xb768[92],eurgermanmale:_0xb768[93],rurussianfemale:_0xb768[94],rurussianmale:_0xb768[95],swswedishfemale:_0xb768[96],cafrenchfemale:_0xb768[97],cafrenchmale:_0xb768[98]};var BOOLSELECT={"\x79\x65\x73":_0xb768[99],"\x6E\x6F":_0xb768[100]};var ISPEECHASRLANG={"\x65\x6E\x2D\x55\x53":_0xb768[101],"\x65\x6E\x2D\x43\x41":_0xb768[102],"\x65\x6E\x2D\x47\x42":_0xb768[103],"\x65\x6E\x2D\x41\x55":_0xb768[104],"\x65\x73\x2D\x45\x53":_0xb768[105],"\x65\x73\x2D\x4D\x58":_0xb768[106],"\x69\x74\x2D\x49\x54":_0xb768[107],"\x66\x72\x2D\x46\x52":_0xb768[108],"\x66\x72\x2D\x43\x41":_0xb768[109],"\x70\x6C\x2D\x50\x4C":_0xb768[110],"\x70\x74\x2D\x50\x54":_0xb768[111],"\x63\x61\x2D\x45\x53":_0xb768[112],"\x7A\x68\x2D\x54\x57":_0xb768[113],"\x64\x61\x2D\x44\x4B":_0xb768[114],"\x66\x72\x2D\x46\x52":_0xb768[115],"\x6A\x61\x2D\x4A\x50":_0xb768[116],"\x6B\x6F\x2D\x4B\x52":_0xb768[117],"\x6E\x6C\x2D\x4E\x4C":_0xb768[118],"\x6E\x62\x2D\x4E\x4F":_0xb768[119],"\x70\x74\x2D\x42\x52":_0xb768[120],"\x72\x75\x2D\x52\x55":_0xb768[121],"\x73\x76\x2D\x53\x45":_0xb768[122],"\x7A\x68\x2D\x43\x4E":_0xb768[123],"\x7A\x68\x2D\x48\x4B":_0xb768[124]};var ISPEECHASRMODEL={0:_0xb768[125],date:_0xb768[126],usmoney:_0xb768[127],numbersto9:_0xb768[128],numbersto99:_0xb768[129],numbersto999:_0xb768[130],time:_0xb768[131],phonenumber:_0xb768[132],streets:_0xb768[133],citystate:_0xb768[134]};var ISPEECHBEEP={"\x42\x45\x45\x50":_0xb768[99],"\x4E\x4F\x42\x45\x45\x50":_0xb768[100]};var RECORDINGFORMAT={"\x77\x61\x76":_0xb768[135],"\x67\x73\x6D":_0xb768[136]};var SECRETDIGITSPOS={"\x66\x69\x72\x73\x74":_0xb768[137],"\x6C\x61\x73\x74":_0xb768[138]};var ASRINTKEYS={"\x23":_0xb768[139],"\x2A":_0xb768[140]};var GOOGLETTSLANG={"\x61\x66":_0xb768[141],"\x73\x71":_0xb768[142],"\x61\x6D":_0xb768[143],"\x61\x72":_0xb768[144],"\x68\x79":_0xb768[145],"\x61\x7A":_0xb768[146],"\x65\x75":_0xb768[147],"\x62\x65":_0xb768[148],"\x62\x6E":_0xb768[149],"\x62\x68":_0xb768[150],"\x62\x73":_0xb768[151],"\x62\x72":_0xb768[152],"\x62\x67":_0xb768[153],"\x6B\x6D":_0xb768[154],"\x63\x61":_0xb768[155],"\x7A\x68\x2D\x43\x4E":_0xb768[156],"\x7A\x68\x2D\x54\x57":_0xb768[157],"\x63\x6F":_0xb768[158],"\x68\x72":_0xb768[159],"\x63\x73":_0xb768[160],"\x64\x61":_0xb768[161],"\x6E\x6C":_0xb768[162],"\x65\x6E":_0xb768[163],"\x65\x6F":_0xb768[164],"\x65\x74":_0xb768[165],"\x66\x6F":_0xb768[166],"\x74\x6C":_0xb768[167],"\x66\x69":_0xb768[168],"\x66\x72":_0xb768[169],"\x66\x79":_0xb768[170],"\x67\x6C":_0xb768[171],"\x6B\x61":_0xb768[172],"\x64\x65":_0xb768[173],"\x65\x6C":_0xb768[174],"\x67\x6E":_0xb768[175],"\x67\x75":_0xb768[176],"\x78\x78\x2D\x68\x61\x63\x6B\x65\x72":_0xb768[177],"\x68\x61":_0xb768[178],"\x69\x77":_0xb768[179],"\x68\x69":_0xb768[180],"\x68\x75":_0xb768[181],"\x69\x73":_0xb768[182],"\x69\x64":_0xb768[183],"\x69\x61":_0xb768[184],"\x67\x61":_0xb768[185],"\x69\x74":_0xb768[186],"\x6A\x77":_0xb768[187],"\x6A\x61":_0xb768[188],"\x6B\x6E":_0xb768[189],"\x6B\x6B":_0xb768[190],"\x72\x77":_0xb768[191],"\x72\x6E":_0xb768[192],"\x78\x78\x2D\x6B\x6C\x69\x6E\x67\x6F\x6E":_0xb768[193],"\x6B\x75":_0xb768[194],"\x6B\x6F":_0xb768[195],"\x6B\x79":_0xb768[196],"\x6C\x6F":_0xb768[197],"\x6C\x61":_0xb768[198],"\x6C\x76":_0xb768[199],"\x6C\x6E":_0xb768[200],"\x6C\x74":_0xb768[201],"\x6D\x6B":_0xb768[202],"\x6D\x67":_0xb768[203],"\x6D\x73":_0xb768[204],"\x6D\x6C":_0xb768[205],"\x6D\x74":_0xb768[206],"\x6D\x69":_0xb768[207],"\x6D\x72":_0xb768[208],"\x6D\x6F":_0xb768[209],"\x6D\x6E":_0xb768[210],"\x73\x72\x2D\x4D\x45":_0xb768[211],"\x6E\x65":_0xb768[212],"\x6E\x6F":_0xb768[213],"\x6E\x6E":_0xb768[214],"\x6F\x63":_0xb768[215],"\x6F\x72":_0xb768[216],"\x6F\x6D":_0xb768[217],"\x70\x73":_0xb768[218],"\x66\x61":_0xb768[219],"\x78\x78\x2D\x70\x69\x72\x61\x74\x65":_0xb768[220],"\x70\x6C":_0xb768[221],"\x70\x74\x2D\x42\x52":_0xb768[120],"\x70\x74\x2D\x50\x54":_0xb768[111],"\x70\x61":_0xb768[222],"\x71\x75":_0xb768[223],"\x72\x6F":_0xb768[224],"\x72\x6D":_0xb768[225],"\x72\x75":_0xb768[226],"\x67\x64":_0xb768[227],"\x73\x72":_0xb768[228],"\x73\x68":_0xb768[229],"\x73\x74":_0xb768[230],"\x73\x6E":_0xb768[231],"\x73\x64":_0xb768[232],"\x73\x69":_0xb768[233],"\x73\x6B":_0xb768[234],"\x73\x6C":_0xb768[235],"\x73\x6F":_0xb768[236],"\x65\x73":_0xb768[237],"\x73\x75":_0xb768[238],"\x73\x77":_0xb768[239],"\x73\x76":_0xb768[240],"\x74\x67":_0xb768[241],"\x74\x61":_0xb768[242],"\x74\x74":_0xb768[243],"\x74\x65":_0xb768[244],"\x74\x68":_0xb768[245],"\x74\x69":_0xb768[246],"\x74\x6F":_0xb768[247],"\x74\x72":_0xb768[248],"\x74\x6B":_0xb768[249],"\x74\x77":_0xb768[250],"\x75\x67":_0xb768[251],"\x75\x6B":_0xb768[252],"\x75\x72":_0xb768[253],"\x75\x7A":_0xb768[254],"\x76\x69":_0xb768[255],"\x63\x79":_0xb768[256],"\x78\x68":_0xb768[257],"\x79\x69":_0xb768[258],"\x79\x6F":_0xb768[259],"\x7A\x75":_0xb768[260]} \ No newline at end of file diff --git a/public/index.html b/public/index.html index fb5d97e..a39d132 100644 --- a/public/index.html +++ b/public/index.html @@ -50,7 +50,7 @@ - + diff --git a/release-notes/changelog_0.0.143.txt b/release-notes/changelog_0.0.143.txt index ddbec13..10a22c9 100644 --- a/release-notes/changelog_0.0.143.txt +++ b/release-notes/changelog_0.0.143.txt @@ -1,5 +1,6 @@ # xCALLY MOTION Changelog +- * 2ce5a8e - 2016-09-16: Redirect to user permissions after wizard; Disable role change for admin if editing his own profile - * 9ea097c - 2016-09-16: Channels cleaner fix - * 1ba79fa - 2016-09-16: Added cleaner for all channels - * 82c5e19 - 2016-09-16: remove custom label from mail selection (scheduler) @@ -106,9 +107,4 @@ - * 815d4b0 - 2016-09-13: client side channels update - * 576be79 - 2016-09-12: fixed routing chat behavior - * ce3bfcb - 2016-09-12: Insert canned answer at the cursor when composing mail; Updated angular ckeditor. -- * b983a9c - 2016-09-09: Added opencontact on message' s visitor name -- * 17a2767 - 2016-09-09: Removed log href -- * f19bcc5 - 2016-09-09: replace checkbox with switch in voice action -- * b58ffd5 - 2016-09-09: Fixed about whitelabel -- * fae21d1 - 2016-09-09: Added About modal; Fixed Login links diff --git a/server/api/_apidoc.js b/server/api/_apidoc.js index 836e5a5..aad92bd 100644 --- a/server/api/_apidoc.js +++ b/server/api/_apidoc.js @@ -1,21 +1 @@ -/** - * @api {post} /api/auth/local/ Basic authentication - * - * @apiVersion 0.0.140 - * @apiName BasicAuth - * @apiGroup Authentication - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiSuccess {String} role User/Agent role. - * @apiSuccess {String} token User/Agent token. - * @apiSuccess {Number} userId User/Agent ID. - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 200 OK - * { - * "role": "admin", - * "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6MTQsImlhdCI6MTQ3MjQ1ODIyMiwiZXhwIjoxNDcyNTQ0NjIyfQ" - * "userId": 5 - * } - */ +var _0x6d83=[] \ No newline at end of file diff --git a/server/api/action/action.controller.js b/server/api/action/action.controller.js index a5d8d27..2c2c56a 100644 --- a/server/api/action/action.controller.js +++ b/server/api/action/action.controller.js @@ -1,88 +1 @@ -/** - * Using Rails-like standard naming convention for endpoints. - * GET /api/actions -> index - * POST /api/actions -> create - * GET /api/actions/:id -> show - * PUT /api/actions/:id -> update - * DELETE /api/actions/:id -> destroy - */ - -'use strict'; - - -var _ = require('lodash'); - -var Action = require('../../models').Action; -var sequelize = require('../../models').sequelize; - -function handleError(res, err) { - return res.status(500).send(err); -} - -function responseWithResult(res, statusCode) { - statusCode = statusCode || 200; - return function(entity) { - if (entity) { - res.status(statusCode).json(entity); - } - }; -} - -function handleEntityNotFound(res) { - return function(entity) { - if (!entity) { - res.status(404).end(); - return null; - } - return entity; - }; -} - -function saveUpdates(updates) { - return function(entity) { - return entity.updateAttributes(updates) - .then(function(updated) { - return updated; - }); - }; -} - -function removeEntity(res) { - return function(entity) { - if (entity) { - return entity.destroy() - .then(function() { - res.status(204).end(); - }); - } - }; -} - -// Gets a list of Actions -exports.index = function(req, res) { - return Action.findAll() - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Creates a new Action in the DB -exports.create = function(req, res, next) { - req.body.UserId = req.user.id; - return sequelize.transaction(function(t) { - return Action - .create(_.merge(req.body, req.params), { - transaction: t, - body: req.body - }); - }) - .then(function(action) { - return res.status(201).send(action); - }).catch(function(err) { - console.log(err); - if (err.message === 'Interface not found') { - err.message = 'No queues associated for the user'; - err.translatedMessage = 'MESSAGE_NO_USER_QUEUES'; - } - return handleError(res, err); - }); -} +var _0x89a9=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x41\x63\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x6A\x73\x6F\x6E","\x65\x6E\x64","\x74\x68\x65\x6E","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x64\x65\x73\x74\x72\x6F\x79","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x66\x69\x6E\x64\x41\x6C\x6C","\x63\x72\x65\x61\x74\x65","\x55\x73\x65\x72\x49\x64","\x62\x6F\x64\x79","\x69\x64","\x75\x73\x65\x72","\x6C\x6F\x67","\x6D\x65\x73\x73\x61\x67\x65","\x49\x6E\x74\x65\x72\x66\x61\x63\x65\x20\x6E\x6F\x74\x20\x66\x6F\x75\x6E\x64","\x4E\x6F\x20\x71\x75\x65\x75\x65\x73\x20\x61\x73\x73\x6F\x63\x69\x61\x74\x65\x64\x20\x66\x6F\x72\x20\x74\x68\x65\x20\x75\x73\x65\x72","\x74\x72\x61\x6E\x73\x6C\x61\x74\x65\x64\x4D\x65\x73\x73\x61\x67\x65","\x4D\x45\x53\x53\x41\x47\x45\x5F\x4E\x4F\x5F\x55\x53\x45\x52\x5F\x51\x55\x45\x55\x45\x53","\x70\x61\x72\x61\x6D\x73","\x6D\x65\x72\x67\x65","\x74\x72\x61\x6E\x73\x61\x63\x74\x69\x6F\x6E"];_0x89a9[0];var _=require(_0x89a9[1]);var Action=require(_0x89a9[3])[_0x89a9[2]];var sequelize=require(_0x89a9[3])[_0x89a9[4]];function handleError(_0x74d1x5,_0x74d1x6){return _0x74d1x5[_0x89a9[6]](500)[_0x89a9[5]](_0x74d1x6)}function responseWithResult(_0x74d1x5,_0x74d1x8){_0x74d1x8= _0x74d1x8|| 200;return function(_0x74d1x9){if(_0x74d1x9){_0x74d1x5[_0x89a9[6]](_0x74d1x8)[_0x89a9[7]](_0x74d1x9)}}}function handleEntityNotFound(_0x74d1x5){return function(_0x74d1x9){if(!_0x74d1x9){_0x74d1x5[_0x89a9[6]](404)[_0x89a9[8]]();return null};return _0x74d1x9}}function saveUpdates(_0x74d1xc){return function(_0x74d1x9){return _0x74d1x9[_0x89a9[10]](_0x74d1xc)[_0x89a9[9]](function(_0x74d1xd){return _0x74d1xd})}}function removeEntity(_0x74d1x5){return function(_0x74d1x9){if(_0x74d1x9){return _0x74d1x9[_0x89a9[11]]()[_0x89a9[9]](function(){_0x74d1x5[_0x89a9[6]](204)[_0x89a9[8]]()})}}}exports[_0x89a9[12]]= function(_0x74d1xf,_0x74d1x5){return Action[_0x89a9[14]]()[_0x89a9[9]](responseWithResult(_0x74d1x5))[_0x89a9[13]](handleError(_0x74d1x5))};exports[_0x89a9[15]]= function(_0x74d1xf,_0x74d1x5,_0x74d1x10){_0x74d1xf[_0x89a9[17]][_0x89a9[16]]= _0x74d1xf[_0x89a9[19]][_0x89a9[18]];return sequelize[_0x89a9[28]](function(_0x74d1x12){return Action[_0x89a9[15]](_[_0x89a9[27]](_0x74d1xf[_0x89a9[17]],_0x74d1xf[_0x89a9[26]]),{transaction:_0x74d1x12,body:_0x74d1xf[_0x89a9[17]]})})[_0x89a9[9]](function(_0x74d1x11){return _0x74d1x5[_0x89a9[6]](201)[_0x89a9[5]](_0x74d1x11)})[_0x89a9[13]](function(_0x74d1x6){console[_0x89a9[20]](_0x74d1x6);if(_0x74d1x6[_0x89a9[21]]=== _0x89a9[22]){_0x74d1x6[_0x89a9[21]]= _0x89a9[23];_0x74d1x6[_0x89a9[24]]= _0x89a9[25]};return handleError(_0x74d1x5,_0x74d1x6)})} \ No newline at end of file diff --git a/server/api/action/action.events.js b/server/api/action/action.events.js index 597aed4..88d7d63 100644 --- a/server/api/action/action.events.js +++ b/server/api/action/action.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const Action = require('../../models').Action; - -var ActionEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -ActionEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - Action.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - ActionEvents.emit(event + ':' + doc._id, doc); - ActionEvents.emit(event, doc); - done(null); - } -} - -module.exports = ActionEvents; +var _0xe37a=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x41\x63\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xe37a[0];const EventEmitter=require(_0xe37a[1]);const Action=require(_0xe37a[3])[_0xe37a[2]];var ActionEvents= new EventEmitter();ActionEvents[_0xe37a[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xe37a[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xe37a[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xe37a[6]};for(var e in events){var event=events[e];Action[_0xe37a[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xce9cx8,_0xce9cx9,_0xce9cxa){ActionEvents[_0xe37a[10]](event+ _0xe37a[8]+ _0xce9cx8[_0xe37a[9]],_0xce9cx8);ActionEvents[_0xe37a[10]](event,_0xce9cx8);_0xce9cxa(null)}}module[_0xe37a[11]]= ActionEvents \ No newline at end of file diff --git a/server/api/action/action.socket.js b/server/api/action/action.socket.js index 26d4dbd..95e5e86 100644 --- a/server/api/action/action.socket.js +++ b/server/api/action/action.socket.js @@ -1,32 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const ActionEvents = require('./action.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('action:' + event, socket); - - ActionEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - ActionEvents.removeListener(event, listener); - }; -} +var _0x3d10=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x61\x63\x74\x69\x6F\x6E\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x61\x63\x74\x69\x6F\x6E\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x3d10[0];const ActionEvents=require(_0x3d10[1]);var events=[_0x3d10[2],_0x3d10[3]];exports[_0x3d10[4]]= function(_0xa55bx3){for(var _0xa55bx4=0,_0xa55bx5=events[_0x3d10[5]];_0xa55bx4< _0xa55bx5;_0xa55bx4++){var _0xa55bx6=events[_0xa55bx4];var _0xa55bx7=createListener(_0x3d10[6]+ _0xa55bx6,_0xa55bx3);ActionEvents[_0x3d10[7]](_0xa55bx6,_0xa55bx7);_0xa55bx3[_0x3d10[7]](_0x3d10[8],removeListener(_0xa55bx6,_0xa55bx7))}};function createListener(_0xa55bx6,_0xa55bx3){return function(_0xa55bx9){_0xa55bx3[_0x3d10[9]](_0xa55bx6,_0xa55bx9)}}function removeListener(_0xa55bx6,_0xa55bx7){return function(){ActionEvents[_0x3d10[10]](_0xa55bx6,_0xa55bx7)}} \ No newline at end of file diff --git a/server/api/action/index.js b/server/api/action/index.js index 1882fa5..d7fb1fc 100644 --- a/server/api/action/index.js +++ b/server/api/action/index.js @@ -1,13 +1 @@ -'use strict'; - -var express = require('express'); - -var auth = require('../../auth/auth.service'); -var controller = require('./action.controller'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), controller.index); -router.post('/:name', auth.isAuthenticated(), controller.create); - -module.exports = router; +var _0xde1c=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x61\x63\x74\x69\x6F\x6E\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x6E\x61\x6D\x65","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xde1c[0];var express=require(_0xde1c[1]);var auth=require(_0xde1c[2]);var controller=require(_0xde1c[3]);var router=express.Router();router[_0xde1c[7]](_0xde1c[4],auth[_0xde1c[5]](),controller[_0xde1c[6]]);router[_0xde1c[10]](_0xde1c[8],auth[_0xde1c[5]](),controller[_0xde1c[9]]);module[_0xde1c[11]]= router \ No newline at end of file diff --git a/server/api/agent/agent.controller.js b/server/api/agent/agent.controller.js index 0e63059..c112e3a 100644 --- a/server/api/agent/agent.controller.js +++ b/server/api/agent/agent.controller.js @@ -1,1144 +1 @@ -'use strict'; - -var _ = require('lodash'); -var sequelize = require('../../models').sequelize; - -var util = require('util'); -var Util = require('../../config/util'); - -var OpenchannelQueue = require('../../models').OpenchannelQueue; -var VoiceQueue = require('../../models').VoiceQueue; -var ChatQueue = require('../../models').ChatQueue; -var MailQueue = require('../../models').MailQueue; -var FaxQueue = require('../../models').FaxQueue; -var SmsQueue = require('../../models').SmsQueue; -var MailRoom = require('../../models').MailRoom; -var Setting = require('../../models').Setting; -var Agent = require('../../models').User; -var User = require('../../models').User; -var Team = require('../../models').Team; -var List = require('../../models').List; - -// Get list of agents -exports.index = function(req, res, next) { - switch (req.user.role) { - case 'user': - return User - .findById(req.user.id, { - attributes: ['id'] - }) - .then(Util.getAgentsIdByUser(req.query)) - .then(function(result) { - return res.status(200).send(result); - }) - .catch(function(err) { - console.error(err); - return handleError(res, err); - }); - - default: - return Agent - .scope('agent') - .findAndCountAll(Util.getQuery(req.query)) - .then(function(result) { - return res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); - } -}; - -exports.addQueues = function(req, res, next) { - return Agent - .findById(req.params.id, { - attributes: ['id', 'name'] - }) - .then(function(agent) { - if (!agent) { - return res.sendStatus(401); - } - - switch (req.params.channel) { - case 'voice': - return agent - .addVoiceQueues(req.body, { - interface: util.format('SIP/%s', agent.name), - stateinterface: util.format('SIP/%s', agent.name), - membername: agent.name, - UserId: agent.id, - }); - case 'chat': - return agent - .addChatQueues(req.body); - case 'mail': - return agent - .addMailQueues(req.body); - case 'fax': - return agent - .addFaxQueues(req.body); - case 'sms': - return agent - .addSmsQueues(req.body); - case 'openchannel': - return agent - .addOpenchannelQueues(req.body); - default: - return null; - } - }) - .then(function(queues) { - return res.sendStatus(queues ? 200 : 401); - }) - .catch(function(err) { - console.error(err); - }); -}; - -exports.removeQueues = function(req, res, next) { - return Agent - .findById(req.params.id, { - attributes: ['id'] - }) - .then(function(agent) { - if (!agent) { - return res.sendStatus(401); - } - - switch (req.params.channel) { - case 'voice': - return agent - .removeVoiceQueues(req.query.ids); - case 'chat': - return agent - .removeChatQueues(req.query.ids); - case 'mail': - return agent - .removeMailQueues(req.query.ids); - case 'sms': - return agent - .removeSmsQueues(req.query.ids); - case 'fax': - return agent - .removeFaxQueues(req.query.ids); - case 'openchannel': - return agent - .removeOpenchannelQueues(req.query.ids); - default: - return null; - } - }) - .then(function(queues) { - return res.sendStatus(queues ? 200 : 401); - }) - .catch(function(err) { - console.error(err); - }); -}; - - -// Get list of agents -exports.realtimeIndex = function(req, res, next) { - switch (req.user.role) { - case 'user': - return User - .findById(req.user.id, { - attributes: ['id'] - }) - .then(Util.getAgentsIdByUser(req.query)) - .then(function(result) { - return res.status(200).send(result); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); - default: - return Agent - .scope('agent', { - method: ['checkPauseStatus', req.query] - }, { - method: ['checkQueueStatus', req.query] - }, { - method: ['checkOnlineStatus', req.query] - }, { - method: ['checkSipStatus', req.query] - }, 'queues') - .findAndCountAll(Util.getQuery(req.query)) - .then(function(result) { - return res.status(200).send(result); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); - } -}; - -exports.realtimeVoiceIndex = function(req, res, next) { - switch (req.user.role) { - case 'user': - var agents = []; - return User - .findById(req.user.id, { - attributes: ['id'] - }) - .then(Util.getVoiceQueuesIdByUser({}, { - attributes: ['name'], - include: [{ - raw: true, - model: User, - attributes: ['id'] - }] - })) - .then(function(queues) { - var voiceQueues = _.map(queues.rows, 'name'); - queues.rows.forEach(function(queue) { - agents = _.union(agents, _.map(queue.Users, 'id')); - }); - return User - .scope('agent', { - method: ['checkPauseStatus', req.query] - }, { - method: ['checkQueueStatus', req.query] - }, { - method: ['checkOnlineStatus', req.query] - }, { - method: ['checkSipStatus', req.query] - }) - .findAndCountAll(_.merge(Util.getQuery(req.query, { - id: { - $in: agents - } - }), { - include: [{ - model: VoiceQueue, - where: { - name: { - $in: voiceQueues - } - }, - required: false - }] - })); - }) - .then(function(result) { - return res.status(200).send(result); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); - default: - return Agent - .scope('agent', { - method: ['checkPauseStatus', req.query] - }, { - method: ['checkQueueStatus', req.query] - }, { - method: ['checkOnlineStatus', req.query] - }, { - method: ['checkSipStatus', req.query] - }, 'queues') - .findAndCountAll(Util.getQuery(req.query)) - .then(function(result) { - return res.status(200).send(result); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); - } -}; - -exports.realtimeChatIndex = function(req, res, next) { - switch (req.user.role) { - case 'user': - var agents = []; - return User - .findById(req.user.id, { - attributes: ['id'] - }) - .then(Util.getChatQueuesIdByUser({}, { - attributes: ['id'], - include: [{ - raw: true, - model: User, - attributes: ['id'] - }] - })) - .then(function(queues) { - var chatQueues = _.map(queues.rows, 'id'); - queues.rows.forEach(function(queue) { - agents = _.union(agents, _.map(queue.Users, 'id')); - }); - return User - .scope('agent', { - method: ['checkPauseStatus', req.query] - }, { - method: ['checkQueueStatus', req.query] - }, { - method: ['checkOnlineStatus', req.query] - }, { - method: ['checkSipStatus', req.query] - }) - .findAndCountAll(_.merge(Util.getQuery(req.query, { - id: { - $in: agents - } - }), { - include: [{ - model: ChatQueue, - where: { - id: { - $in: chatQueues - } - }, - required: false - }] - })); - }) - .then(function(result) { - return res.status(200).send(result); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); - default: - return Agent - .scope('agent', { - method: ['checkPauseStatus', req.query] - }, { - method: ['checkQueueStatus', req.query] - }, { - method: ['checkOnlineStatus', req.query] - }, { - method: ['checkSipStatus', req.query] - }, 'queues') - .findAndCountAll(Util.getQuery(req.query)) - .then(function(result) { - return res.status(200).send(result); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); - } -}; - -exports.realtimeMailIndex = function(req, res, next) { - switch (req.user.role) { - case 'user': - var agents = []; - return User - .findById(req.user.id, { - attributes: ['id'] - }) - .then(Util.getMailQueuesIdByUser({}, { - attributes: ['id'], - include: [{ - raw: true, - model: User, - attributes: ['id'] - }] - })) - .then(function(queues) { - var mailQueues = _.map(queues.rows, 'id'); - queues.rows.forEach(function(queue) { - agents = _.union(agents, _.map(queue.Users, 'id')); - }); - return User - .scope('agent', { - method: ['checkPauseStatus', req.query] - }, { - method: ['checkQueueStatus', req.query] - }, { - method: ['checkOnlineStatus', req.query] - }, { - method: ['checkSipStatus', req.query] - }) - .findAndCountAll(_.merge(Util.getQuery(req.query, { - id: { - $in: agents - } - }), { - include: [{ - model: MailQueue, - where: { - id: { - $in: mailQueues - } - }, - required: false - }] - })); - }) - .then(function(result) { - return res.status(200).send(result); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); - default: - return Agent - .scope('agent', { - method: ['checkPauseStatus', req.query] - }, { - method: ['checkQueueStatus', req.query] - }, { - method: ['checkOnlineStatus', req.query] - }, { - method: ['checkSipStatus', req.query] - }, 'queues') - .findAndCountAll(Util.getQuery(req.query)) - .then(function(result) { - return res.status(200).send(result); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); - } -}; - -exports.realtimeFaxIndex = function(req, res, next) { - switch (req.user.role) { - case 'user': - var agents = []; - return User - .findById(req.user.id, { - attributes: ['id'] - }) - .then(Util.getFaxQueuesIdByUser({}, { - attributes: ['id'], - include: [{ - raw: true, - model: User, - attributes: ['id'] - }] - })) - .then(function(queues) { - var faxQueues = _.map(queues.rows, 'id'); - queues.rows.forEach(function(queue) { - agents = _.union(agents, _.map(queue.Users, 'id')); - }); - return User - .scope('agent', { - method: ['checkPauseStatus', req.query] - }, { - method: ['checkQueueStatus', req.query] - }, { - method: ['checkOnlineStatus', req.query] - }, { - method: ['checkSipStatus', req.query] - }) - .findAndCountAll(_.merge(Util.getQuery(req.query, { - id: { - $in: agents - } - }), { - include: [{ - model: FaxQueue, - where: { - id: { - $in: faxQueues - } - }, - required: false - }] - })); - }) - .then(function(result) { - return res.status(200).send(result); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); - default: - return Agent - .scope('agent', { - method: ['checkPauseStatus', req.query] - }, { - method: ['checkQueueStatus', req.query] - }, { - method: ['checkOnlineStatus', req.query] - }, { - method: ['checkSipStatus', req.query] - }, 'queues') - .findAndCountAll(Util.getQuery(req.query)) - .then(function(result) { - return res.status(200).send(result); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); - } -}; -exports.realtimeSmsIndex = function(req, res, next) { - switch (req.user.role) { - case 'user': - var agents = []; - return User - .findById(req.user.id, { - attributes: ['id'] - }) - .then(Util.getSmsQueuesIdByUser({}, { - attributes: ['id'], - include: [{ - raw: true, - model: User, - attributes: ['id'] - }] - })) - .then(function(queues) { - var smsQueues = _.map(queues.rows, 'id'); - queues.rows.forEach(function(queue) { - agents = _.union(agents, _.map(queue.Users, 'id')); - }); - return User - .scope('agent', { - method: ['checkPauseStatus', req.query] - }, { - method: ['checkQueueStatus', req.query] - }, { - method: ['checkOnlineStatus', req.query] - }, { - method: ['checkSipStatus', req.query] - }) - .findAndCountAll(_.merge(Util.getQuery(req.query, { - id: { - $in: agents - } - }), { - include: [{ - model: SmsQueue, - where: { - id: { - $in: smsQueues - } - }, - required: false - }] - })); - }) - .then(function(result) { - return res.status(200).send(result); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); - default: - return Agent - .scope('agent', { - method: ['checkPauseStatus', req.query] - }, { - method: ['checkQueueStatus', req.query] - }, { - method: ['checkOnlineStatus', req.query] - }, { - method: ['checkSipStatus', req.query] - }, 'queues') - .findAndCountAll(Util.getQuery(req.query)) - .then(function(result) { - return res.status(200).send(result); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); - } -}; - -exports.realtimeOpenchannelIndex = function(req, res, next) { - switch (req.user.role) { - case 'user': - var agents = []; - return User - .findById(req.user.id, { - attributes: ['id'] - }) - .then(Util.getOpenchannelQueuesIdByUser({}, { - attributes: ['id'], - include: [{ - raw: true, - model: User, - attributes: ['id'] - }] - })) - .then(function(queues) { - var openchannelQueues = _.map(queues.rows, 'id'); - queues.rows.forEach(function(queue) { - agents = _.union(agents, _.map(queue.Users, 'id')); - }); - return User - .scope('agent', { - method: ['checkPauseStatus', req.query] - }, { - method: ['checkQueueStatus', req.query] - }, { - method: ['checkOnlineStatus', req.query] - }, { - method: ['checkSipStatus', req.query] - }) - .findAndCountAll(_.merge(Util.getQuery(req.query, { - id: { - $in: agents - } - }), { - include: [{ - model: OpenchannelQueue, - where: { - id: { - $in: openchannelQueues - } - }, - required: false - }] - })); - }) - .then(function(result) { - return res.status(200).send(result); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); - default: - return Agent - .scope('agent', { - method: ['checkPauseStatus', req.query] - }, { - method: ['checkQueueStatus', req.query] - }, { - method: ['checkOnlineStatus', req.query] - }, { - method: ['checkSipStatus', req.query] - }, 'queues') - .findAndCountAll(Util.getQuery(req.query)) - .then(function(result) { - return res.status(200).send(result); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); - } -}; -// Get a single agent -exports.show = function(req, res) { - return Agent - .scope('agent') - .findById(req.params.id) - .then(function(agent) { - if (!agent) { - return res.sendStatus(404); - } - return res.send(agent); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get a single agent -exports.showVoiceQueues = function(req, res) { - return Agent - .scope('agent') - .findById(req.params.id) - .then(function(agent) { - if (!agent) { - return res.sendStatus(404); - } - - return agent - .getVoiceQueues({ - attributes: ['name'] - }); - }) - .then(function(voiceQueues) { - return res.send({ - count: voiceQueues.length, - rows: voiceQueues - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.showChatQueues = function(req, res) { - return Agent - .scope('agent') - .findById(req.params.id) - .then(function(agent) { - if (!agent) { - return res.sendStatus(404); - } - - return agent - .getChatQueues({ - attributes: ['id'] - }); - }) - .then(function(chatQueues) { - return res.send({ - count: chatQueues.length, - rows: chatQueues - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.showMailQueues = function(req, res) { - return Agent - .scope('agent') - .findById(req.params.id) - .then(function(agent) { - if (!agent) { - return res.sendStatus(404); - } - - return agent - .getMailQueues({ - attributes: ['id'] - }); - }) - .then(function(mailQueues) { - return res.send({ - count: mailQueues.length, - rows: mailQueues - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.showFaxQueues = function(req, res) { - return Agent - .scope('agent') - .findById(req.params.id) - .then(function(agent) { - if (!agent) { - return res.sendStatus(404); - } - - return agent - .getFaxQueues({ - attributes: ['id'] - }); - }) - .then(function(faxQueues) { - return res.send({ - count: faxQueues.length, - rows: faxQueues - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.showSmsQueues = function(req, res) { - return Agent - .scope('agent') - .findById(req.params.id) - .then(function(agent) { - if (!agent) { - return res.sendStatus(404); - } - - return agent - .getSmsQueues({ - attributes: ['id'] - }); - }) - .then(function(smsQueues) { - return res.send({ - count: smsQueues.length, - rows: smsQueues - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.showOpenchannelQueues = function(req, res) { - return Agent - .scope('agent') - .findById(req.params.id) - .then(function(agent) { - if (!agent) { - return res.sendStatus(404); - } - - return agent - .getOpenchannelQueues({ - attributes: ['id'] - }); - }) - .then(function(Queues) { - return res.send({ - count: Queues.length, - rows: Queues - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; -// Creates a new agent in the DB. -exports.create = function(req, res) { - var _agent; - - // Set default role - req.body.role = 'agent'; - - return sequelize.transaction(function(t) { - return Agent - .scope('agent') - .create(req.body, { - transaction: t - }) - .then(function(agent) { - _agent = agent; - - return Team - .findOne({ - where: { - defaultEntry: true - } - }); - }) - .then(function(team) { - return team - .addUser(_agent.id, { - transaction: t - }); - }) - .then(function() { - return List - .findOne({ - where: { - defaultEntry: true - } - }); - }) - .then(function(list) { - return list - .addUser(_agent.id, { - transaction: t - }); - }) - .then(function() { - if (req.body.channels && req.body.channels.voice && req.body.channels.voice.queues) { - return _agent - .addVoiceQueues(req.body.channels.voice.queues, { - interface: util.format('SIP/%s', _agent.name), - stateinterface: util.format('SIP/%s', _agent.name), - membername: _agent.name, - UserId: _agent.id, - transaction: t - }); - } - }) - .then(function() { - if (req.body.channels && req.body.channels.chat && req.body.channels.chat.queues) { - return _agent - .addChatQueues(req.body.channels.chat.queues, { - transaction: t - }); - } - }) - .then(function() { - if (req.body.channels && req.body.channels.mail && req.body.channels.mail.queues) { - return _agent - .addMailQueues(req.body.channels.mail.queues, { - transaction: t - }); - } - }) - .then(function() { - if (req.body.channels && req.body.channels.sms && req.body.channels.sms.queues) { - return _agent - .addSmsQueues(req.body.channels.sms.queues, { - transaction: t - }); - } - }) - .then(function() { - if (req.body.channels && req.body.channels.fax && req.body.channels.fax.queues) { - return _agent - .addFaxQueues(req.body.channels.fax.queues, { - transaction: t - }); - } - }) - .then(function() { - if (req.body.channels && req.body.channels.openchannel && req.body.channels.openchannel.queues) { - return _agent - .addOpenchannelQueues(req.body.channels.openchannel.queues, { - transaction: t - }); - } - }); - }) - .then(function() { - return res.status(201).send(_agent); - }) - .catch(sequelize.UniqueConstraintError, function(err) { - console.log(err); - return Util.errorManager.handleUniqueConstraintError(res, err); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -// Creates a new agent in the DB. -exports.bulkCreate = function(req, res) { - var _agents; - var _setting; - - var items = []; - var password = String(req.body.password); - - return sequelize.transaction(function(t) { - - return Setting - .findById(1) - .then(function(setting) { - _setting = setting; - - var regEx = _setting.securePassword ? /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[~!@#$%^&\-_=+\[\{\]\}.])[0-9a-zA-Z~!@#$%^&\-_=+\[\{\]\}.]{8,}$/ : /^[a-zA-Z0-9]{6,}$/; - - if (!regEx.test(password)) { - throw new Error('Invalid password pattern'); - } - - var startIndex = 0; - if (req.body.hasOwnProperty('startIndex') && _.isNumber(req.body.startIndex) && req.body.startIndex >= 0) { - startIndex = req.body.startIndex; - delete req.body.startIndex; - } - var internalIndex = req.body.minInternal; - delete req.body.minInternal; - - if (req.body.amount) { - req.body.role = 'agent'; - for (var i = startIndex; i < req.body.amount + startIndex; i++, internalIndex++) { - var item = _.clone(req.body); - item.internal = internalIndex; - item.name = item.name + i; - item.fullname = item.fullname + i; - item.email = item.email.split('@')[0] + i + '@' + item.email.split('@')[1]; - items.push(item); - } - } else { - throw new Error('No agents amount specified!'); - } - return Agent - .bulkCreate(items, { - transaction: t, - individualHooks: true - }); - }) - .then(function(agents) { - _agents = agents; - - return Team - .findOne({ - where: { - defaultEntry: true - } - }); - }) - .then(function(team) { - return team - .addUsers(_.map(_agents, 'id'), { - transaction: t - }); - }) - }) - .then(function() { - return res.sendStatus(201); - }) - .catch(sequelize.UniqueConstraintError, function(err) { - console.log(err); - return Util.errorManager.handleUniqueConstraintError(res, err); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -// Updates an existing agent in the DB. -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - - delete req.body.role; - delete req.body.name; - delete req.body.password; - - return sequelize.transaction(function(t) { - return Agent - .findById(req.params.id) - .then(function(agent) { - if (!agent) { - return res.sendStatus(404); - } - var updated = _.merge(agent, req.body); - return updated - .save({ - transaction: t - }); - }) - .then(function(agent) { - return res.status(200).send(agent); - }) - }) - .catch(sequelize.UniqueConstraintError, function(err) { - console.log(err); - return Util.errorManager.handleUniqueConstraintError(res, err); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -// Deletes a agent from the DB. -exports.destroy = function(req, res) { - var _agent; - - return Agent - .findById(req.params.id) - .then(function(agent) { - _agent = agent; - if (!agent) { - return res.sendStatus(404); - } - return agent - .destroy(); - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(sequelize.ForeignKeyConstraintError, function(err) { - return Util.errorManager.handleForeignKeyConstraintError(res, 'agent', _agent.name, err); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes a agent from the DB. -exports.bulkDestroy = function(req, res) { - return Agent - .destroy({ - where: { - id: req.query.ids - }, - individualHooks: true - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -/** - * Change a user password //DEPRECATED - */ -exports.changePassword = function(req, res, next) { - var _setting; - - var userId = req.user.id; - var oldPass = String(req.body.oldPassword); - var newPass = String(req.body.newPassword); - - return Setting - .findById(1) - .then(function(setting) { - _setting = setting; - - return Agent - .findById(userId); - }) - .then(function(user) { - var regEx = _setting.securePassword ? /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[~!@#$%^&\-_=+\[\{\]\}.])[0-9a-zA-Z~!@#$%^&\-_=+\[\{\]\}.]{8,}$/ : /^[a-zA-Z0-9]{6,}$/; - - if (!regEx.test(newPass)) { - throw new Error('Invalid password pattern'); - } - - if (user.authenticate(oldPass)) { - user.password = newPass; - - return user - .save(); - } else { - return res.sendStatus(403); - } - }) - .then(function() { - return res.sendStatus(200); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -/** - * Change a user password by admin //DEPRECATED - */ -exports.resetPassword = function(req, res, next) { - var _setting; - - var userId = req.params.id; - var newPass = String(req.body.newPassword); - - return Setting - .findById(1) - .then(function(setting) { - _setting = setting; - - return Agent - .findById(userId); - }) - .then(function(user) { - var regEx = _setting.securePassword ? /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[~!@#$%^&\-_=+\[\{\]\}.])[0-9a-zA-Z~!@#$%^&\-_=+\[\{\]\}.]{8,}$/ : /^[a-zA-Z0-9]{6,}$/; - - if (!regEx.test(newPass)) { - throw new Error('Invalid password pattern'); - } - - user.password = newPass; - return user - .save(); - }) - .then(function() { - return res.sendStatus(200); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0x52fc=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x75\x74\x69\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65","\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65","\x43\x68\x61\x74\x51\x75\x65\x75\x65","\x4D\x61\x69\x6C\x51\x75\x65\x75\x65","\x46\x61\x78\x51\x75\x65\x75\x65","\x53\x6D\x73\x51\x75\x65\x75\x65","\x4D\x61\x69\x6C\x52\x6F\x6F\x6D","\x53\x65\x74\x74\x69\x6E\x67","\x55\x73\x65\x72","\x54\x65\x61\x6D","\x4C\x69\x73\x74","\x69\x6E\x64\x65\x78","\x65\x72\x72\x6F\x72","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x41\x67\x65\x6E\x74\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x69\x64","\x75\x73\x65\x72","\x66\x69\x6E\x64\x42\x79\x49\x64","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x61\x67\x65\x6E\x74","\x73\x63\x6F\x70\x65","\x72\x6F\x6C\x65","\x61\x64\x64\x51\x75\x65\x75\x65\x73","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x62\x6F\x64\x79","\x53\x49\x50\x2F\x25\x73","\x6E\x61\x6D\x65","\x66\x6F\x72\x6D\x61\x74","\x61\x64\x64\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65\x73","\x76\x6F\x69\x63\x65","\x61\x64\x64\x43\x68\x61\x74\x51\x75\x65\x75\x65\x73","\x63\x68\x61\x74","\x61\x64\x64\x4D\x61\x69\x6C\x51\x75\x65\x75\x65\x73","\x6D\x61\x69\x6C","\x61\x64\x64\x46\x61\x78\x51\x75\x65\x75\x65\x73","\x66\x61\x78","\x61\x64\x64\x53\x6D\x73\x51\x75\x65\x75\x65\x73","\x73\x6D\x73","\x61\x64\x64\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65\x73","\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C","\x63\x68\x61\x6E\x6E\x65\x6C","\x70\x61\x72\x61\x6D\x73","\x72\x65\x6D\x6F\x76\x65\x51\x75\x65\x75\x65\x73","\x69\x64\x73","\x72\x65\x6D\x6F\x76\x65\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65\x73","\x72\x65\x6D\x6F\x76\x65\x43\x68\x61\x74\x51\x75\x65\x75\x65\x73","\x72\x65\x6D\x6F\x76\x65\x4D\x61\x69\x6C\x51\x75\x65\x75\x65\x73","\x72\x65\x6D\x6F\x76\x65\x53\x6D\x73\x51\x75\x65\x75\x65\x73","\x72\x65\x6D\x6F\x76\x65\x46\x61\x78\x51\x75\x65\x75\x65\x73","\x72\x65\x6D\x6F\x76\x65\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65\x73","\x72\x65\x61\x6C\x74\x69\x6D\x65\x49\x6E\x64\x65\x78","\x6C\x6F\x67","\x63\x68\x65\x63\x6B\x50\x61\x75\x73\x65\x53\x74\x61\x74\x75\x73","\x63\x68\x65\x63\x6B\x51\x75\x65\x75\x65\x53\x74\x61\x74\x75\x73","\x63\x68\x65\x63\x6B\x4F\x6E\x6C\x69\x6E\x65\x53\x74\x61\x74\x75\x73","\x63\x68\x65\x63\x6B\x53\x69\x70\x53\x74\x61\x74\x75\x73","\x71\x75\x65\x75\x65\x73","\x72\x65\x61\x6C\x74\x69\x6D\x65\x56\x6F\x69\x63\x65\x49\x6E\x64\x65\x78","\x72\x6F\x77\x73","\x6D\x61\x70","\x75\x6E\x69\x6F\x6E","\x66\x6F\x72\x45\x61\x63\x68","\x6D\x65\x72\x67\x65","\x67\x65\x74\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x72\x65\x61\x6C\x74\x69\x6D\x65\x43\x68\x61\x74\x49\x6E\x64\x65\x78","\x67\x65\x74\x43\x68\x61\x74\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x72\x65\x61\x6C\x74\x69\x6D\x65\x4D\x61\x69\x6C\x49\x6E\x64\x65\x78","\x67\x65\x74\x4D\x61\x69\x6C\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x72\x65\x61\x6C\x74\x69\x6D\x65\x46\x61\x78\x49\x6E\x64\x65\x78","\x67\x65\x74\x46\x61\x78\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x72\x65\x61\x6C\x74\x69\x6D\x65\x53\x6D\x73\x49\x6E\x64\x65\x78","\x67\x65\x74\x53\x6D\x73\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x72\x65\x61\x6C\x74\x69\x6D\x65\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x49\x6E\x64\x65\x78","\x67\x65\x74\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x73\x68\x6F\x77","\x73\x68\x6F\x77\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65\x73","\x6C\x65\x6E\x67\x74\x68","\x67\x65\x74\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65\x73","\x73\x68\x6F\x77\x43\x68\x61\x74\x51\x75\x65\x75\x65\x73","\x67\x65\x74\x43\x68\x61\x74\x51\x75\x65\x75\x65\x73","\x73\x68\x6F\x77\x4D\x61\x69\x6C\x51\x75\x65\x75\x65\x73","\x67\x65\x74\x4D\x61\x69\x6C\x51\x75\x65\x75\x65\x73","\x73\x68\x6F\x77\x46\x61\x78\x51\x75\x65\x75\x65\x73","\x67\x65\x74\x46\x61\x78\x51\x75\x65\x75\x65\x73","\x73\x68\x6F\x77\x53\x6D\x73\x51\x75\x65\x75\x65\x73","\x67\x65\x74\x53\x6D\x73\x51\x75\x65\x75\x65\x73","\x73\x68\x6F\x77\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65\x73","\x67\x65\x74\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65\x73","\x63\x72\x65\x61\x74\x65","\x68\x61\x6E\x64\x6C\x65\x55\x6E\x69\x71\x75\x65\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74\x45\x72\x72\x6F\x72","\x65\x72\x72\x6F\x72\x4D\x61\x6E\x61\x67\x65\x72","\x63\x68\x61\x6E\x6E\x65\x6C\x73","\x61\x64\x64\x55\x73\x65\x72","\x66\x69\x6E\x64\x4F\x6E\x65","\x74\x72\x61\x6E\x73\x61\x63\x74\x69\x6F\x6E","\x62\x75\x6C\x6B\x43\x72\x65\x61\x74\x65","\x70\x61\x73\x73\x77\x6F\x72\x64","\x61\x64\x64\x55\x73\x65\x72\x73","\x73\x65\x63\x75\x72\x65\x50\x61\x73\x73\x77\x6F\x72\x64","\x74\x65\x73\x74","\x49\x6E\x76\x61\x6C\x69\x64\x20\x70\x61\x73\x73\x77\x6F\x72\x64\x20\x70\x61\x74\x74\x65\x72\x6E","\x73\x74\x61\x72\x74\x49\x6E\x64\x65\x78","\x68\x61\x73\x4F\x77\x6E\x50\x72\x6F\x70\x65\x72\x74\x79","\x69\x73\x4E\x75\x6D\x62\x65\x72","\x6D\x69\x6E\x49\x6E\x74\x65\x72\x6E\x61\x6C","\x61\x6D\x6F\x75\x6E\x74","\x63\x6C\x6F\x6E\x65","\x69\x6E\x74\x65\x72\x6E\x61\x6C","\x66\x75\x6C\x6C\x6E\x61\x6D\x65","\x65\x6D\x61\x69\x6C","\x40","\x73\x70\x6C\x69\x74","\x70\x75\x73\x68","\x4E\x6F\x20\x61\x67\x65\x6E\x74\x73\x20\x61\x6D\x6F\x75\x6E\x74\x20\x73\x70\x65\x63\x69\x66\x69\x65\x64\x21","\x75\x70\x64\x61\x74\x65","\x73\x61\x76\x65","\x64\x65\x73\x74\x72\x6F\x79","\x68\x61\x6E\x64\x6C\x65\x46\x6F\x72\x65\x69\x67\x6E\x4B\x65\x79\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74\x45\x72\x72\x6F\x72","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x63\x68\x61\x6E\x67\x65\x50\x61\x73\x73\x77\x6F\x72\x64","\x6F\x6C\x64\x50\x61\x73\x73\x77\x6F\x72\x64","\x6E\x65\x77\x50\x61\x73\x73\x77\x6F\x72\x64","\x61\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65","\x72\x65\x73\x65\x74\x50\x61\x73\x73\x77\x6F\x72\x64"];_0x52fc[0];var _=require(_0x52fc[1]);var sequelize=require(_0x52fc[3])[_0x52fc[2]];var util=require(_0x52fc[4]);var Util=require(_0x52fc[5]);var OpenchannelQueue=require(_0x52fc[3])[_0x52fc[6]];var VoiceQueue=require(_0x52fc[3])[_0x52fc[7]];var ChatQueue=require(_0x52fc[3])[_0x52fc[8]];var MailQueue=require(_0x52fc[3])[_0x52fc[9]];var FaxQueue=require(_0x52fc[3])[_0x52fc[10]];var SmsQueue=require(_0x52fc[3])[_0x52fc[11]];var MailRoom=require(_0x52fc[3])[_0x52fc[12]];var Setting=require(_0x52fc[3])[_0x52fc[13]];var Agent=require(_0x52fc[3])[_0x52fc[14]];var User=require(_0x52fc[3])[_0x52fc[14]];var Team=require(_0x52fc[3])[_0x52fc[15]];var List=require(_0x52fc[3])[_0x52fc[16]];exports[_0x52fc[17]]= function(_0xdf15x11,_0xdf15x12,_0xdf15x13){switch(_0xdf15x11[_0x52fc[26]][_0x52fc[32]]){case _0x52fc[26]:return User[_0x52fc[27]](_0xdf15x11[_0x52fc[26]][_0x52fc[25]],{attributes:[_0x52fc[25]]})[_0x52fc[22]](Util[_0x52fc[24]](_0xdf15x11[_0x52fc[23]]))[_0x52fc[22]](function(_0xdf15x15){return _0xdf15x12[_0x52fc[21]](200)[_0x52fc[20]](_0xdf15x15)})[_0x52fc[19]](function(_0xdf15x14){console[_0x52fc[18]](_0xdf15x14);return handleError(_0xdf15x12,_0xdf15x14)});default:return Agent[_0x52fc[31]](_0x52fc[30])[_0x52fc[29]](Util[_0x52fc[28]](_0xdf15x11[_0x52fc[23]]))[_0x52fc[22]](function(_0xdf15x15){return _0xdf15x12[_0x52fc[21]](200)[_0x52fc[20]](_0xdf15x15)})[_0x52fc[19]](function(_0xdf15x14){return handleError(_0xdf15x12,_0xdf15x14)})}};exports[_0x52fc[33]]= function(_0xdf15x11,_0xdf15x12,_0xdf15x13){return Agent[_0x52fc[27]](_0xdf15x11[_0x52fc[52]][_0x52fc[25]],{attributes:[_0x52fc[25],_0x52fc[37]]})[_0x52fc[22]](function(_0xdf15x17){if(!_0xdf15x17){return _0xdf15x12[_0x52fc[34]](401)};switch(_0xdf15x11[_0x52fc[52]][_0x52fc[51]]){case _0x52fc[40]:return _0xdf15x17[_0x52fc[39]](_0xdf15x11[_0x52fc[35]],{interface:util[_0x52fc[38]](_0x52fc[36],_0xdf15x17[_0x52fc[37]]),stateinterface:util[_0x52fc[38]](_0x52fc[36],_0xdf15x17[_0x52fc[37]]),membername:_0xdf15x17[_0x52fc[37]],UserId:_0xdf15x17[_0x52fc[25]]});case _0x52fc[42]:return _0xdf15x17[_0x52fc[41]](_0xdf15x11[_0x52fc[35]]);case _0x52fc[44]:return _0xdf15x17[_0x52fc[43]](_0xdf15x11[_0x52fc[35]]);case _0x52fc[46]:return _0xdf15x17[_0x52fc[45]](_0xdf15x11[_0x52fc[35]]);case _0x52fc[48]:return _0xdf15x17[_0x52fc[47]](_0xdf15x11[_0x52fc[35]]);case _0x52fc[50]:return _0xdf15x17[_0x52fc[49]](_0xdf15x11[_0x52fc[35]]);default:return null}})[_0x52fc[22]](function(_0xdf15x16){return _0xdf15x12[_0x52fc[34]](_0xdf15x16?200:401)})[_0x52fc[19]](function(_0xdf15x14){console[_0x52fc[18]](_0xdf15x14)})};exports[_0x52fc[53]]= function(_0xdf15x11,_0xdf15x12,_0xdf15x13){return Agent[_0x52fc[27]](_0xdf15x11[_0x52fc[52]][_0x52fc[25]],{attributes:[_0x52fc[25]]})[_0x52fc[22]](function(_0xdf15x17){if(!_0xdf15x17){return _0xdf15x12[_0x52fc[34]](401)};switch(_0xdf15x11[_0x52fc[52]][_0x52fc[51]]){case _0x52fc[40]:return _0xdf15x17[_0x52fc[55]](_0xdf15x11[_0x52fc[23]][_0x52fc[54]]);case _0x52fc[42]:return _0xdf15x17[_0x52fc[56]](_0xdf15x11[_0x52fc[23]][_0x52fc[54]]);case _0x52fc[44]:return _0xdf15x17[_0x52fc[57]](_0xdf15x11[_0x52fc[23]][_0x52fc[54]]);case _0x52fc[48]:return _0xdf15x17[_0x52fc[58]](_0xdf15x11[_0x52fc[23]][_0x52fc[54]]);case _0x52fc[46]:return _0xdf15x17[_0x52fc[59]](_0xdf15x11[_0x52fc[23]][_0x52fc[54]]);case _0x52fc[50]:return _0xdf15x17[_0x52fc[60]](_0xdf15x11[_0x52fc[23]][_0x52fc[54]]);default:return null}})[_0x52fc[22]](function(_0xdf15x16){return _0xdf15x12[_0x52fc[34]](_0xdf15x16?200:401)})[_0x52fc[19]](function(_0xdf15x14){console[_0x52fc[18]](_0xdf15x14)})};exports[_0x52fc[61]]= function(_0xdf15x11,_0xdf15x12,_0xdf15x13){switch(_0xdf15x11[_0x52fc[26]][_0x52fc[32]]){case _0x52fc[26]:return User[_0x52fc[27]](_0xdf15x11[_0x52fc[26]][_0x52fc[25]],{attributes:[_0x52fc[25]]})[_0x52fc[22]](Util[_0x52fc[24]](_0xdf15x11[_0x52fc[23]]))[_0x52fc[22]](function(_0xdf15x15){return _0xdf15x12[_0x52fc[21]](200)[_0x52fc[20]](_0xdf15x15)})[_0x52fc[19]](function(_0xdf15x14){console[_0x52fc[62]](_0xdf15x14);return handleError(_0xdf15x12,_0xdf15x14)});default:return Agent[_0x52fc[31]](_0x52fc[30],{method:[_0x52fc[63],_0xdf15x11[_0x52fc[23]]]},{method:[_0x52fc[64],_0xdf15x11[_0x52fc[23]]]},{method:[_0x52fc[65],_0xdf15x11[_0x52fc[23]]]},{method:[_0x52fc[66],_0xdf15x11[_0x52fc[23]]]},_0x52fc[67])[_0x52fc[29]](Util[_0x52fc[28]](_0xdf15x11[_0x52fc[23]]))[_0x52fc[22]](function(_0xdf15x15){return _0xdf15x12[_0x52fc[21]](200)[_0x52fc[20]](_0xdf15x15)})[_0x52fc[19]](function(_0xdf15x14){console[_0x52fc[62]](_0xdf15x14);return handleError(_0xdf15x12,_0xdf15x14)})}};exports[_0x52fc[68]]= function(_0xdf15x11,_0xdf15x12,_0xdf15x13){switch(_0xdf15x11[_0x52fc[26]][_0x52fc[32]]){case _0x52fc[26]:var _0xdf15x18=[];return User[_0x52fc[27]](_0xdf15x11[_0x52fc[26]][_0x52fc[25]],{attributes:[_0x52fc[25]]})[_0x52fc[22]](Util[_0x52fc[74]]({},{attributes:[_0x52fc[37]],include:[{raw:true,model:User,attributes:[_0x52fc[25]]}]}))[_0x52fc[22]](function(_0xdf15x16){var _0xdf15x19=_[_0x52fc[70]](_0xdf15x16[_0x52fc[69]],_0x52fc[37]);_0xdf15x16[_0x52fc[69]][_0x52fc[72]](function(_0xdf15x1a){_0xdf15x18= _[_0x52fc[71]](_0xdf15x18,_[_0x52fc[70]](_0xdf15x1a.Users,_0x52fc[25]))});return User[_0x52fc[31]](_0x52fc[30],{method:[_0x52fc[63],_0xdf15x11[_0x52fc[23]]]},{method:[_0x52fc[64],_0xdf15x11[_0x52fc[23]]]},{method:[_0x52fc[65],_0xdf15x11[_0x52fc[23]]]},{method:[_0x52fc[66],_0xdf15x11[_0x52fc[23]]]})[_0x52fc[29]](_[_0x52fc[73]](Util[_0x52fc[28]](_0xdf15x11[_0x52fc[23]],{id:{$in:_0xdf15x18}}),{include:[{model:VoiceQueue,where:{name:{$in:_0xdf15x19}},required:false}]}))})[_0x52fc[22]](function(_0xdf15x15){return _0xdf15x12[_0x52fc[21]](200)[_0x52fc[20]](_0xdf15x15)})[_0x52fc[19]](function(_0xdf15x14){console[_0x52fc[62]](_0xdf15x14);return handleError(_0xdf15x12,_0xdf15x14)});default:return Agent[_0x52fc[31]](_0x52fc[30],{method:[_0x52fc[63],_0xdf15x11[_0x52fc[23]]]},{method:[_0x52fc[64],_0xdf15x11[_0x52fc[23]]]},{method:[_0x52fc[65],_0xdf15x11[_0x52fc[23]]]},{method:[_0x52fc[66],_0xdf15x11[_0x52fc[23]]]},_0x52fc[67])[_0x52fc[29]](Util[_0x52fc[28]](_0xdf15x11[_0x52fc[23]]))[_0x52fc[22]](function(_0xdf15x15){return _0xdf15x12[_0x52fc[21]](200)[_0x52fc[20]](_0xdf15x15)})[_0x52fc[19]](function(_0xdf15x14){console[_0x52fc[62]](_0xdf15x14);return handleError(_0xdf15x12,_0xdf15x14)})}};exports[_0x52fc[75]]= function(_0xdf15x11,_0xdf15x12,_0xdf15x13){switch(_0xdf15x11[_0x52fc[26]][_0x52fc[32]]){case _0x52fc[26]:var _0xdf15x18=[];return User[_0x52fc[27]](_0xdf15x11[_0x52fc[26]][_0x52fc[25]],{attributes:[_0x52fc[25]]})[_0x52fc[22]](Util[_0x52fc[76]]({},{attributes:[_0x52fc[25]],include:[{raw:true,model:User,attributes:[_0x52fc[25]]}]}))[_0x52fc[22]](function(_0xdf15x16){var _0xdf15x1b=_[_0x52fc[70]](_0xdf15x16[_0x52fc[69]],_0x52fc[25]);_0xdf15x16[_0x52fc[69]][_0x52fc[72]](function(_0xdf15x1a){_0xdf15x18= _[_0x52fc[71]](_0xdf15x18,_[_0x52fc[70]](_0xdf15x1a.Users,_0x52fc[25]))});return User[_0x52fc[31]](_0x52fc[30],{method:[_0x52fc[63],_0xdf15x11[_0x52fc[23]]]},{method:[_0x52fc[64],_0xdf15x11[_0x52fc[23]]]},{method:[_0x52fc[65],_0xdf15x11[_0x52fc[23]]]},{method:[_0x52fc[66],_0xdf15x11[_0x52fc[23]]]})[_0x52fc[29]](_[_0x52fc[73]](Util[_0x52fc[28]](_0xdf15x11[_0x52fc[23]],{id:{$in:_0xdf15x18}}),{include:[{model:ChatQueue,where:{id:{$in:_0xdf15x1b}},required:false}]}))})[_0x52fc[22]](function(_0xdf15x15){return _0xdf15x12[_0x52fc[21]](200)[_0x52fc[20]](_0xdf15x15)})[_0x52fc[19]](function(_0xdf15x14){console[_0x52fc[62]](_0xdf15x14);return handleError(_0xdf15x12,_0xdf15x14)});default:return Agent[_0x52fc[31]](_0x52fc[30],{method:[_0x52fc[63],_0xdf15x11[_0x52fc[23]]]},{method:[_0x52fc[64],_0xdf15x11[_0x52fc[23]]]},{method:[_0x52fc[65],_0xdf15x11[_0x52fc[23]]]},{method:[_0x52fc[66],_0xdf15x11[_0x52fc[23]]]},_0x52fc[67])[_0x52fc[29]](Util[_0x52fc[28]](_0xdf15x11[_0x52fc[23]]))[_0x52fc[22]](function(_0xdf15x15){return _0xdf15x12[_0x52fc[21]](200)[_0x52fc[20]](_0xdf15x15)})[_0x52fc[19]](function(_0xdf15x14){console[_0x52fc[62]](_0xdf15x14);return handleError(_0xdf15x12,_0xdf15x14)})}};exports[_0x52fc[77]]= function(_0xdf15x11,_0xdf15x12,_0xdf15x13){switch(_0xdf15x11[_0x52fc[26]][_0x52fc[32]]){case _0x52fc[26]:var _0xdf15x18=[];return User[_0x52fc[27]](_0xdf15x11[_0x52fc[26]][_0x52fc[25]],{attributes:[_0x52fc[25]]})[_0x52fc[22]](Util[_0x52fc[78]]({},{attributes:[_0x52fc[25]],include:[{raw:true,model:User,attributes:[_0x52fc[25]]}]}))[_0x52fc[22]](function(_0xdf15x16){var _0xdf15x1c=_[_0x52fc[70]](_0xdf15x16[_0x52fc[69]],_0x52fc[25]);_0xdf15x16[_0x52fc[69]][_0x52fc[72]](function(_0xdf15x1a){_0xdf15x18= _[_0x52fc[71]](_0xdf15x18,_[_0x52fc[70]](_0xdf15x1a.Users,_0x52fc[25]))});return User[_0x52fc[31]](_0x52fc[30],{method:[_0x52fc[63],_0xdf15x11[_0x52fc[23]]]},{method:[_0x52fc[64],_0xdf15x11[_0x52fc[23]]]},{method:[_0x52fc[65],_0xdf15x11[_0x52fc[23]]]},{method:[_0x52fc[66],_0xdf15x11[_0x52fc[23]]]})[_0x52fc[29]](_[_0x52fc[73]](Util[_0x52fc[28]](_0xdf15x11[_0x52fc[23]],{id:{$in:_0xdf15x18}}),{include:[{model:MailQueue,where:{id:{$in:_0xdf15x1c}},required:false}]}))})[_0x52fc[22]](function(_0xdf15x15){return _0xdf15x12[_0x52fc[21]](200)[_0x52fc[20]](_0xdf15x15)})[_0x52fc[19]](function(_0xdf15x14){console[_0x52fc[62]](_0xdf15x14);return handleError(_0xdf15x12,_0xdf15x14)});default:return Agent[_0x52fc[31]](_0x52fc[30],{method:[_0x52fc[63],_0xdf15x11[_0x52fc[23]]]},{method:[_0x52fc[64],_0xdf15x11[_0x52fc[23]]]},{method:[_0x52fc[65],_0xdf15x11[_0x52fc[23]]]},{method:[_0x52fc[66],_0xdf15x11[_0x52fc[23]]]},_0x52fc[67])[_0x52fc[29]](Util[_0x52fc[28]](_0xdf15x11[_0x52fc[23]]))[_0x52fc[22]](function(_0xdf15x15){return _0xdf15x12[_0x52fc[21]](200)[_0x52fc[20]](_0xdf15x15)})[_0x52fc[19]](function(_0xdf15x14){console[_0x52fc[62]](_0xdf15x14);return handleError(_0xdf15x12,_0xdf15x14)})}};exports[_0x52fc[79]]= function(_0xdf15x11,_0xdf15x12,_0xdf15x13){switch(_0xdf15x11[_0x52fc[26]][_0x52fc[32]]){case _0x52fc[26]:var _0xdf15x18=[];return User[_0x52fc[27]](_0xdf15x11[_0x52fc[26]][_0x52fc[25]],{attributes:[_0x52fc[25]]})[_0x52fc[22]](Util[_0x52fc[80]]({},{attributes:[_0x52fc[25]],include:[{raw:true,model:User,attributes:[_0x52fc[25]]}]}))[_0x52fc[22]](function(_0xdf15x16){var _0xdf15x1d=_[_0x52fc[70]](_0xdf15x16[_0x52fc[69]],_0x52fc[25]);_0xdf15x16[_0x52fc[69]][_0x52fc[72]](function(_0xdf15x1a){_0xdf15x18= _[_0x52fc[71]](_0xdf15x18,_[_0x52fc[70]](_0xdf15x1a.Users,_0x52fc[25]))});return User[_0x52fc[31]](_0x52fc[30],{method:[_0x52fc[63],_0xdf15x11[_0x52fc[23]]]},{method:[_0x52fc[64],_0xdf15x11[_0x52fc[23]]]},{method:[_0x52fc[65],_0xdf15x11[_0x52fc[23]]]},{method:[_0x52fc[66],_0xdf15x11[_0x52fc[23]]]})[_0x52fc[29]](_[_0x52fc[73]](Util[_0x52fc[28]](_0xdf15x11[_0x52fc[23]],{id:{$in:_0xdf15x18}}),{include:[{model:FaxQueue,where:{id:{$in:_0xdf15x1d}},required:false}]}))})[_0x52fc[22]](function(_0xdf15x15){return _0xdf15x12[_0x52fc[21]](200)[_0x52fc[20]](_0xdf15x15)})[_0x52fc[19]](function(_0xdf15x14){console[_0x52fc[62]](_0xdf15x14);return handleError(_0xdf15x12,_0xdf15x14)});default:return Agent[_0x52fc[31]](_0x52fc[30],{method:[_0x52fc[63],_0xdf15x11[_0x52fc[23]]]},{method:[_0x52fc[64],_0xdf15x11[_0x52fc[23]]]},{method:[_0x52fc[65],_0xdf15x11[_0x52fc[23]]]},{method:[_0x52fc[66],_0xdf15x11[_0x52fc[23]]]},_0x52fc[67])[_0x52fc[29]](Util[_0x52fc[28]](_0xdf15x11[_0x52fc[23]]))[_0x52fc[22]](function(_0xdf15x15){return _0xdf15x12[_0x52fc[21]](200)[_0x52fc[20]](_0xdf15x15)})[_0x52fc[19]](function(_0xdf15x14){console[_0x52fc[62]](_0xdf15x14);return handleError(_0xdf15x12,_0xdf15x14)})}};exports[_0x52fc[81]]= function(_0xdf15x11,_0xdf15x12,_0xdf15x13){switch(_0xdf15x11[_0x52fc[26]][_0x52fc[32]]){case _0x52fc[26]:var _0xdf15x18=[];return User[_0x52fc[27]](_0xdf15x11[_0x52fc[26]][_0x52fc[25]],{attributes:[_0x52fc[25]]})[_0x52fc[22]](Util[_0x52fc[82]]({},{attributes:[_0x52fc[25]],include:[{raw:true,model:User,attributes:[_0x52fc[25]]}]}))[_0x52fc[22]](function(_0xdf15x16){var _0xdf15x1e=_[_0x52fc[70]](_0xdf15x16[_0x52fc[69]],_0x52fc[25]);_0xdf15x16[_0x52fc[69]][_0x52fc[72]](function(_0xdf15x1a){_0xdf15x18= _[_0x52fc[71]](_0xdf15x18,_[_0x52fc[70]](_0xdf15x1a.Users,_0x52fc[25]))});return User[_0x52fc[31]](_0x52fc[30],{method:[_0x52fc[63],_0xdf15x11[_0x52fc[23]]]},{method:[_0x52fc[64],_0xdf15x11[_0x52fc[23]]]},{method:[_0x52fc[65],_0xdf15x11[_0x52fc[23]]]},{method:[_0x52fc[66],_0xdf15x11[_0x52fc[23]]]})[_0x52fc[29]](_[_0x52fc[73]](Util[_0x52fc[28]](_0xdf15x11[_0x52fc[23]],{id:{$in:_0xdf15x18}}),{include:[{model:SmsQueue,where:{id:{$in:_0xdf15x1e}},required:false}]}))})[_0x52fc[22]](function(_0xdf15x15){return _0xdf15x12[_0x52fc[21]](200)[_0x52fc[20]](_0xdf15x15)})[_0x52fc[19]](function(_0xdf15x14){console[_0x52fc[62]](_0xdf15x14);return handleError(_0xdf15x12,_0xdf15x14)});default:return Agent[_0x52fc[31]](_0x52fc[30],{method:[_0x52fc[63],_0xdf15x11[_0x52fc[23]]]},{method:[_0x52fc[64],_0xdf15x11[_0x52fc[23]]]},{method:[_0x52fc[65],_0xdf15x11[_0x52fc[23]]]},{method:[_0x52fc[66],_0xdf15x11[_0x52fc[23]]]},_0x52fc[67])[_0x52fc[29]](Util[_0x52fc[28]](_0xdf15x11[_0x52fc[23]]))[_0x52fc[22]](function(_0xdf15x15){return _0xdf15x12[_0x52fc[21]](200)[_0x52fc[20]](_0xdf15x15)})[_0x52fc[19]](function(_0xdf15x14){console[_0x52fc[62]](_0xdf15x14);return handleError(_0xdf15x12,_0xdf15x14)})}};exports[_0x52fc[83]]= function(_0xdf15x11,_0xdf15x12,_0xdf15x13){switch(_0xdf15x11[_0x52fc[26]][_0x52fc[32]]){case _0x52fc[26]:var _0xdf15x18=[];return User[_0x52fc[27]](_0xdf15x11[_0x52fc[26]][_0x52fc[25]],{attributes:[_0x52fc[25]]})[_0x52fc[22]](Util[_0x52fc[84]]({},{attributes:[_0x52fc[25]],include:[{raw:true,model:User,attributes:[_0x52fc[25]]}]}))[_0x52fc[22]](function(_0xdf15x16){var _0xdf15x1f=_[_0x52fc[70]](_0xdf15x16[_0x52fc[69]],_0x52fc[25]);_0xdf15x16[_0x52fc[69]][_0x52fc[72]](function(_0xdf15x1a){_0xdf15x18= _[_0x52fc[71]](_0xdf15x18,_[_0x52fc[70]](_0xdf15x1a.Users,_0x52fc[25]))});return User[_0x52fc[31]](_0x52fc[30],{method:[_0x52fc[63],_0xdf15x11[_0x52fc[23]]]},{method:[_0x52fc[64],_0xdf15x11[_0x52fc[23]]]},{method:[_0x52fc[65],_0xdf15x11[_0x52fc[23]]]},{method:[_0x52fc[66],_0xdf15x11[_0x52fc[23]]]})[_0x52fc[29]](_[_0x52fc[73]](Util[_0x52fc[28]](_0xdf15x11[_0x52fc[23]],{id:{$in:_0xdf15x18}}),{include:[{model:OpenchannelQueue,where:{id:{$in:_0xdf15x1f}},required:false}]}))})[_0x52fc[22]](function(_0xdf15x15){return _0xdf15x12[_0x52fc[21]](200)[_0x52fc[20]](_0xdf15x15)})[_0x52fc[19]](function(_0xdf15x14){console[_0x52fc[62]](_0xdf15x14);return handleError(_0xdf15x12,_0xdf15x14)});default:return Agent[_0x52fc[31]](_0x52fc[30],{method:[_0x52fc[63],_0xdf15x11[_0x52fc[23]]]},{method:[_0x52fc[64],_0xdf15x11[_0x52fc[23]]]},{method:[_0x52fc[65],_0xdf15x11[_0x52fc[23]]]},{method:[_0x52fc[66],_0xdf15x11[_0x52fc[23]]]},_0x52fc[67])[_0x52fc[29]](Util[_0x52fc[28]](_0xdf15x11[_0x52fc[23]]))[_0x52fc[22]](function(_0xdf15x15){return _0xdf15x12[_0x52fc[21]](200)[_0x52fc[20]](_0xdf15x15)})[_0x52fc[19]](function(_0xdf15x14){console[_0x52fc[62]](_0xdf15x14);return handleError(_0xdf15x12,_0xdf15x14)})}};exports[_0x52fc[85]]= function(_0xdf15x11,_0xdf15x12){return Agent[_0x52fc[31]](_0x52fc[30])[_0x52fc[27]](_0xdf15x11[_0x52fc[52]][_0x52fc[25]])[_0x52fc[22]](function(_0xdf15x17){if(!_0xdf15x17){return _0xdf15x12[_0x52fc[34]](404)};return _0xdf15x12[_0x52fc[20]](_0xdf15x17)})[_0x52fc[19]](function(_0xdf15x14){return handleError(_0xdf15x12,_0xdf15x14)})};exports[_0x52fc[86]]= function(_0xdf15x11,_0xdf15x12){return Agent[_0x52fc[31]](_0x52fc[30])[_0x52fc[27]](_0xdf15x11[_0x52fc[52]][_0x52fc[25]])[_0x52fc[22]](function(_0xdf15x17){if(!_0xdf15x17){return _0xdf15x12[_0x52fc[34]](404)};return _0xdf15x17[_0x52fc[88]]({attributes:[_0x52fc[37]]})})[_0x52fc[22]](function(_0xdf15x19){return _0xdf15x12[_0x52fc[20]]({count:_0xdf15x19[_0x52fc[87]],rows:_0xdf15x19})})[_0x52fc[19]](function(_0xdf15x14){return handleError(_0xdf15x12,_0xdf15x14)})};exports[_0x52fc[89]]= function(_0xdf15x11,_0xdf15x12){return Agent[_0x52fc[31]](_0x52fc[30])[_0x52fc[27]](_0xdf15x11[_0x52fc[52]][_0x52fc[25]])[_0x52fc[22]](function(_0xdf15x17){if(!_0xdf15x17){return _0xdf15x12[_0x52fc[34]](404)};return _0xdf15x17[_0x52fc[90]]({attributes:[_0x52fc[25]]})})[_0x52fc[22]](function(_0xdf15x1b){return _0xdf15x12[_0x52fc[20]]({count:_0xdf15x1b[_0x52fc[87]],rows:_0xdf15x1b})})[_0x52fc[19]](function(_0xdf15x14){return handleError(_0xdf15x12,_0xdf15x14)})};exports[_0x52fc[91]]= function(_0xdf15x11,_0xdf15x12){return Agent[_0x52fc[31]](_0x52fc[30])[_0x52fc[27]](_0xdf15x11[_0x52fc[52]][_0x52fc[25]])[_0x52fc[22]](function(_0xdf15x17){if(!_0xdf15x17){return _0xdf15x12[_0x52fc[34]](404)};return _0xdf15x17[_0x52fc[92]]({attributes:[_0x52fc[25]]})})[_0x52fc[22]](function(_0xdf15x1c){return _0xdf15x12[_0x52fc[20]]({count:_0xdf15x1c[_0x52fc[87]],rows:_0xdf15x1c})})[_0x52fc[19]](function(_0xdf15x14){return handleError(_0xdf15x12,_0xdf15x14)})};exports[_0x52fc[93]]= function(_0xdf15x11,_0xdf15x12){return Agent[_0x52fc[31]](_0x52fc[30])[_0x52fc[27]](_0xdf15x11[_0x52fc[52]][_0x52fc[25]])[_0x52fc[22]](function(_0xdf15x17){if(!_0xdf15x17){return _0xdf15x12[_0x52fc[34]](404)};return _0xdf15x17[_0x52fc[94]]({attributes:[_0x52fc[25]]})})[_0x52fc[22]](function(_0xdf15x1d){return _0xdf15x12[_0x52fc[20]]({count:_0xdf15x1d[_0x52fc[87]],rows:_0xdf15x1d})})[_0x52fc[19]](function(_0xdf15x14){return handleError(_0xdf15x12,_0xdf15x14)})};exports[_0x52fc[95]]= function(_0xdf15x11,_0xdf15x12){return Agent[_0x52fc[31]](_0x52fc[30])[_0x52fc[27]](_0xdf15x11[_0x52fc[52]][_0x52fc[25]])[_0x52fc[22]](function(_0xdf15x17){if(!_0xdf15x17){return _0xdf15x12[_0x52fc[34]](404)};return _0xdf15x17[_0x52fc[96]]({attributes:[_0x52fc[25]]})})[_0x52fc[22]](function(_0xdf15x1e){return _0xdf15x12[_0x52fc[20]]({count:_0xdf15x1e[_0x52fc[87]],rows:_0xdf15x1e})})[_0x52fc[19]](function(_0xdf15x14){return handleError(_0xdf15x12,_0xdf15x14)})};exports[_0x52fc[97]]= function(_0xdf15x11,_0xdf15x12){return Agent[_0x52fc[31]](_0x52fc[30])[_0x52fc[27]](_0xdf15x11[_0x52fc[52]][_0x52fc[25]])[_0x52fc[22]](function(_0xdf15x17){if(!_0xdf15x17){return _0xdf15x12[_0x52fc[34]](404)};return _0xdf15x17[_0x52fc[98]]({attributes:[_0x52fc[25]]})})[_0x52fc[22]](function(_0xdf15x20){return _0xdf15x12[_0x52fc[20]]({count:_0xdf15x20[_0x52fc[87]],rows:_0xdf15x20})})[_0x52fc[19]](function(_0xdf15x14){return handleError(_0xdf15x12,_0xdf15x14)})};exports[_0x52fc[99]]= function(_0xdf15x11,_0xdf15x12){var _0xdf15x21;_0xdf15x11[_0x52fc[35]][_0x52fc[32]]= _0x52fc[30];return sequelize[_0x52fc[105]](function(_0xdf15x22){return Agent[_0x52fc[31]](_0x52fc[30])[_0x52fc[99]](_0xdf15x11[_0x52fc[35]],{transaction:_0xdf15x22})[_0x52fc[22]](function(_0xdf15x17){_0xdf15x21= _0xdf15x17;return Team[_0x52fc[104]]({where:{defaultEntry:true}})})[_0x52fc[22]](function(_0xdf15x24){return _0xdf15x24[_0x52fc[103]](_0xdf15x21[_0x52fc[25]],{transaction:_0xdf15x22})})[_0x52fc[22]](function(){return List[_0x52fc[104]]({where:{defaultEntry:true}})})[_0x52fc[22]](function(_0xdf15x23){return _0xdf15x23[_0x52fc[103]](_0xdf15x21[_0x52fc[25]],{transaction:_0xdf15x22})})[_0x52fc[22]](function(){if(_0xdf15x11[_0x52fc[35]][_0x52fc[102]]&& _0xdf15x11[_0x52fc[35]][_0x52fc[102]][_0x52fc[40]]&& _0xdf15x11[_0x52fc[35]][_0x52fc[102]][_0x52fc[40]][_0x52fc[67]]){return _0xdf15x21[_0x52fc[39]](_0xdf15x11[_0x52fc[35]][_0x52fc[102]][_0x52fc[40]][_0x52fc[67]],{interface:util[_0x52fc[38]](_0x52fc[36],_0xdf15x21[_0x52fc[37]]),stateinterface:util[_0x52fc[38]](_0x52fc[36],_0xdf15x21[_0x52fc[37]]),membername:_0xdf15x21[_0x52fc[37]],UserId:_0xdf15x21[_0x52fc[25]],transaction:_0xdf15x22})}})[_0x52fc[22]](function(){if(_0xdf15x11[_0x52fc[35]][_0x52fc[102]]&& _0xdf15x11[_0x52fc[35]][_0x52fc[102]][_0x52fc[42]]&& _0xdf15x11[_0x52fc[35]][_0x52fc[102]][_0x52fc[42]][_0x52fc[67]]){return _0xdf15x21[_0x52fc[41]](_0xdf15x11[_0x52fc[35]][_0x52fc[102]][_0x52fc[42]][_0x52fc[67]],{transaction:_0xdf15x22})}})[_0x52fc[22]](function(){if(_0xdf15x11[_0x52fc[35]][_0x52fc[102]]&& _0xdf15x11[_0x52fc[35]][_0x52fc[102]][_0x52fc[44]]&& _0xdf15x11[_0x52fc[35]][_0x52fc[102]][_0x52fc[44]][_0x52fc[67]]){return _0xdf15x21[_0x52fc[43]](_0xdf15x11[_0x52fc[35]][_0x52fc[102]][_0x52fc[44]][_0x52fc[67]],{transaction:_0xdf15x22})}})[_0x52fc[22]](function(){if(_0xdf15x11[_0x52fc[35]][_0x52fc[102]]&& _0xdf15x11[_0x52fc[35]][_0x52fc[102]][_0x52fc[48]]&& _0xdf15x11[_0x52fc[35]][_0x52fc[102]][_0x52fc[48]][_0x52fc[67]]){return _0xdf15x21[_0x52fc[47]](_0xdf15x11[_0x52fc[35]][_0x52fc[102]][_0x52fc[48]][_0x52fc[67]],{transaction:_0xdf15x22})}})[_0x52fc[22]](function(){if(_0xdf15x11[_0x52fc[35]][_0x52fc[102]]&& _0xdf15x11[_0x52fc[35]][_0x52fc[102]][_0x52fc[46]]&& _0xdf15x11[_0x52fc[35]][_0x52fc[102]][_0x52fc[46]][_0x52fc[67]]){return _0xdf15x21[_0x52fc[45]](_0xdf15x11[_0x52fc[35]][_0x52fc[102]][_0x52fc[46]][_0x52fc[67]],{transaction:_0xdf15x22})}})[_0x52fc[22]](function(){if(_0xdf15x11[_0x52fc[35]][_0x52fc[102]]&& _0xdf15x11[_0x52fc[35]][_0x52fc[102]][_0x52fc[50]]&& _0xdf15x11[_0x52fc[35]][_0x52fc[102]][_0x52fc[50]][_0x52fc[67]]){return _0xdf15x21[_0x52fc[49]](_0xdf15x11[_0x52fc[35]][_0x52fc[102]][_0x52fc[50]][_0x52fc[67]],{transaction:_0xdf15x22})}})})[_0x52fc[22]](function(){return _0xdf15x12[_0x52fc[21]](201)[_0x52fc[20]](_0xdf15x21)})[_0x52fc[19]](sequelize.UniqueConstraintError,function(_0xdf15x14){console[_0x52fc[62]](_0xdf15x14);return Util[_0x52fc[101]][_0x52fc[100]](_0xdf15x12,_0xdf15x14)})[_0x52fc[19]](function(_0xdf15x14){console[_0x52fc[62]](_0xdf15x14);return handleError(_0xdf15x12,_0xdf15x14)})};exports[_0x52fc[106]]= function(_0xdf15x11,_0xdf15x12){var _0xdf15x25;var _0xdf15x26;var _0xdf15x27=[];var _0xdf15x28=String(_0xdf15x11[_0x52fc[35]][_0x52fc[107]]);return sequelize[_0x52fc[105]](function(_0xdf15x22){return Setting[_0x52fc[27]](1)[_0x52fc[22]](function(_0xdf15x29){_0xdf15x26= _0xdf15x29;var _0xdf15x2a=_0xdf15x26[_0x52fc[109]]?/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[~!@#$%^&\-_=+\[\{\]\}.])[0-9a-zA-Z~!@#$%^&\-_=+\[\{\]\}.]{8,}$/:/^[a-zA-Z0-9]{6,}$/;if(!_0xdf15x2a[_0x52fc[110]](_0xdf15x28)){throw new Error(_0x52fc[111])};var _0xdf15x2b=0;if(_0xdf15x11[_0x52fc[35]][_0x52fc[113]](_0x52fc[112])&& _[_0x52fc[114]](_0xdf15x11[_0x52fc[35]][_0x52fc[112]])&& _0xdf15x11[_0x52fc[35]][_0x52fc[112]]>= 0){_0xdf15x2b= _0xdf15x11[_0x52fc[35]][_0x52fc[112]];delete _0xdf15x11[_0x52fc[35]][_0x52fc[112]]};var _0xdf15x2c=_0xdf15x11[_0x52fc[35]][_0x52fc[115]];delete _0xdf15x11[_0x52fc[35]][_0x52fc[115]];if(_0xdf15x11[_0x52fc[35]][_0x52fc[116]]){_0xdf15x11[_0x52fc[35]][_0x52fc[32]]= _0x52fc[30];for(var _0xdf15x2d=_0xdf15x2b;_0xdf15x2d< _0xdf15x11[_0x52fc[35]][_0x52fc[116]]+ _0xdf15x2b;_0xdf15x2d++,_0xdf15x2c++){var _0xdf15x2e=_[_0x52fc[117]](_0xdf15x11[_0x52fc[35]]);_0xdf15x2e[_0x52fc[118]]= _0xdf15x2c;_0xdf15x2e[_0x52fc[37]]= _0xdf15x2e[_0x52fc[37]]+ _0xdf15x2d;_0xdf15x2e[_0x52fc[119]]= _0xdf15x2e[_0x52fc[119]]+ _0xdf15x2d;_0xdf15x2e[_0x52fc[120]]= _0xdf15x2e[_0x52fc[120]][_0x52fc[122]](_0x52fc[121])[0]+ _0xdf15x2d+ _0x52fc[121]+ _0xdf15x2e[_0x52fc[120]][_0x52fc[122]](_0x52fc[121])[1];_0xdf15x27[_0x52fc[123]](_0xdf15x2e)}}else {throw new Error(_0x52fc[124])};return Agent[_0x52fc[106]](_0xdf15x27,{transaction:_0xdf15x22,individualHooks:true})})[_0x52fc[22]](function(_0xdf15x18){_0xdf15x25= _0xdf15x18;return Team[_0x52fc[104]]({where:{defaultEntry:true}})})[_0x52fc[22]](function(_0xdf15x24){return _0xdf15x24[_0x52fc[108]](_[_0x52fc[70]](_0xdf15x25,_0x52fc[25]),{transaction:_0xdf15x22})})})[_0x52fc[22]](function(){return _0xdf15x12[_0x52fc[34]](201)})[_0x52fc[19]](sequelize.UniqueConstraintError,function(_0xdf15x14){console[_0x52fc[62]](_0xdf15x14);return Util[_0x52fc[101]][_0x52fc[100]](_0xdf15x12,_0xdf15x14)})[_0x52fc[19]](function(_0xdf15x14){console[_0x52fc[62]](_0xdf15x14);return handleError(_0xdf15x12,_0xdf15x14)})};exports[_0x52fc[125]]= function(_0xdf15x11,_0xdf15x12){if(_0xdf15x11[_0x52fc[35]][_0x52fc[25]]){delete _0xdf15x11[_0x52fc[35]][_0x52fc[25]]};delete _0xdf15x11[_0x52fc[35]][_0x52fc[32]];delete _0xdf15x11[_0x52fc[35]][_0x52fc[37]];delete _0xdf15x11[_0x52fc[35]][_0x52fc[107]];return sequelize[_0x52fc[105]](function(_0xdf15x22){return Agent[_0x52fc[27]](_0xdf15x11[_0x52fc[52]][_0x52fc[25]])[_0x52fc[22]](function(_0xdf15x17){if(!_0xdf15x17){return _0xdf15x12[_0x52fc[34]](404)};var _0xdf15x2f=_[_0x52fc[73]](_0xdf15x17,_0xdf15x11[_0x52fc[35]]);return _0xdf15x2f[_0x52fc[126]]({transaction:_0xdf15x22})})[_0x52fc[22]](function(_0xdf15x17){return _0xdf15x12[_0x52fc[21]](200)[_0x52fc[20]](_0xdf15x17)})})[_0x52fc[19]](sequelize.UniqueConstraintError,function(_0xdf15x14){console[_0x52fc[62]](_0xdf15x14);return Util[_0x52fc[101]][_0x52fc[100]](_0xdf15x12,_0xdf15x14)})[_0x52fc[19]](function(_0xdf15x14){console[_0x52fc[62]](_0xdf15x14);return handleError(_0xdf15x12,_0xdf15x14)})};exports[_0x52fc[127]]= function(_0xdf15x11,_0xdf15x12){var _0xdf15x21;return Agent[_0x52fc[27]](_0xdf15x11[_0x52fc[52]][_0x52fc[25]])[_0x52fc[22]](function(_0xdf15x17){_0xdf15x21= _0xdf15x17;if(!_0xdf15x17){return _0xdf15x12[_0x52fc[34]](404)};return _0xdf15x17[_0x52fc[127]]()})[_0x52fc[22]](function(){return _0xdf15x12[_0x52fc[34]](204)})[_0x52fc[19]](sequelize.ForeignKeyConstraintError,function(_0xdf15x14){return Util[_0x52fc[101]][_0x52fc[128]](_0xdf15x12,_0x52fc[30],_0xdf15x21[_0x52fc[37]],_0xdf15x14)})[_0x52fc[19]](function(_0xdf15x14){return handleError(_0xdf15x12,_0xdf15x14)})};exports[_0x52fc[129]]= function(_0xdf15x11,_0xdf15x12){return Agent[_0x52fc[127]]({where:{id:_0xdf15x11[_0x52fc[23]][_0x52fc[54]]},individualHooks:true})[_0x52fc[22]](function(){return _0xdf15x12[_0x52fc[34]](204)})[_0x52fc[19]](function(_0xdf15x14){return handleError(_0xdf15x12,_0xdf15x14)})};exports[_0x52fc[130]]= function(_0xdf15x11,_0xdf15x12,_0xdf15x13){var _0xdf15x26;var _0xdf15x30=_0xdf15x11[_0x52fc[26]][_0x52fc[25]];var _0xdf15x31=String(_0xdf15x11[_0x52fc[35]][_0x52fc[131]]);var _0xdf15x32=String(_0xdf15x11[_0x52fc[35]][_0x52fc[132]]);return Setting[_0x52fc[27]](1)[_0x52fc[22]](function(_0xdf15x29){_0xdf15x26= _0xdf15x29;return Agent[_0x52fc[27]](_0xdf15x30)})[_0x52fc[22]](function(_0xdf15x33){var _0xdf15x2a=_0xdf15x26[_0x52fc[109]]?/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[~!@#$%^&\-_=+\[\{\]\}.])[0-9a-zA-Z~!@#$%^&\-_=+\[\{\]\}.]{8,}$/:/^[a-zA-Z0-9]{6,}$/;if(!_0xdf15x2a[_0x52fc[110]](_0xdf15x32)){throw new Error(_0x52fc[111])};if(_0xdf15x33[_0x52fc[133]](_0xdf15x31)){_0xdf15x33[_0x52fc[107]]= _0xdf15x32;return _0xdf15x33[_0x52fc[126]]()}else {return _0xdf15x12[_0x52fc[34]](403)}})[_0x52fc[22]](function(){return _0xdf15x12[_0x52fc[34]](200)})[_0x52fc[19]](function(_0xdf15x14){return handleError(_0xdf15x12,_0xdf15x14)})};exports[_0x52fc[134]]= function(_0xdf15x11,_0xdf15x12,_0xdf15x13){var _0xdf15x26;var _0xdf15x30=_0xdf15x11[_0x52fc[52]][_0x52fc[25]];var _0xdf15x32=String(_0xdf15x11[_0x52fc[35]][_0x52fc[132]]);return Setting[_0x52fc[27]](1)[_0x52fc[22]](function(_0xdf15x29){_0xdf15x26= _0xdf15x29;return Agent[_0x52fc[27]](_0xdf15x30)})[_0x52fc[22]](function(_0xdf15x33){var _0xdf15x2a=_0xdf15x26[_0x52fc[109]]?/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[~!@#$%^&\-_=+\[\{\]\}.])[0-9a-zA-Z~!@#$%^&\-_=+\[\{\]\}.]{8,}$/:/^[a-zA-Z0-9]{6,}$/;if(!_0xdf15x2a[_0x52fc[110]](_0xdf15x32)){throw new Error(_0x52fc[111])};_0xdf15x33[_0x52fc[107]]= _0xdf15x32;return _0xdf15x33[_0x52fc[126]]()})[_0x52fc[22]](function(){return _0xdf15x12[_0x52fc[34]](200)})[_0x52fc[19]](function(_0xdf15x14){return handleError(_0xdf15x12,_0xdf15x14)})};function handleError(_0xdf15x12,_0xdf15x14){return _0xdf15x12[_0x52fc[21]](500)[_0x52fc[20]](_0xdf15x14)} \ No newline at end of file diff --git a/server/api/agent/agent.events.js b/server/api/agent/agent.events.js index 24661dc..8adabf6 100644 --- a/server/api/agent/agent.events.js +++ b/server/api/agent/agent.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const Agent = require('../../models').User; - -var AgentEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -AgentEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - Agent.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - AgentEvents.emit(event + ':' + doc._id, doc); - AgentEvents.emit(event, doc); - done(null); - } -} - -module.exports = AgentEvents; +var _0x8bdf=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x55\x73\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x8bdf[0];const EventEmitter=require(_0x8bdf[1]);const Agent=require(_0x8bdf[3])[_0x8bdf[2]];var AgentEvents= new EventEmitter();AgentEvents[_0x8bdf[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x8bdf[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x8bdf[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x8bdf[6]};for(var e in events){var event=events[e];Agent[_0x8bdf[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x13fbx8,_0x13fbx9,_0x13fbxa){AgentEvents[_0x8bdf[10]](event+ _0x8bdf[8]+ _0x13fbx8[_0x8bdf[9]],_0x13fbx8);AgentEvents[_0x8bdf[10]](event,_0x13fbx8);_0x13fbxa(null)}}module[_0x8bdf[11]]= AgentEvents \ No newline at end of file diff --git a/server/api/agent/agent.socket.js b/server/api/agent/agent.socket.js index 7f5cb13..3635bb2 100644 --- a/server/api/agent/agent.socket.js +++ b/server/api/agent/agent.socket.js @@ -1,51 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const AgentEvents = require('./agent.events'); -const _ = require('lodash'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('agent:' + event, socket); - - AgentEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - switch (event) { - case 'agent:save': - if (doc.role === 'agent' && (socket.role !== 'agent' || socket.userId == doc.id || doc.changed('online'))) { - var myDoc = _.clone(doc.dataValues); - if (doc._changed.hasOwnProperty('status')) { - myDoc.queueStatus = undefined; - } else if (doc._changed.hasOwnProperty('queueStatus')) { - myDoc.status = undefined; - } - socket.emit(event, myDoc); - } - break; - case 'agent:remove': - socket.emit(event, doc); - break; - - default: - - } - }; -} - -function removeListener(event, listener) { - return function() { - AgentEvents.removeListener(event, listener); - }; -} +var _0x91d7=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x61\x67\x65\x6E\x74\x2E\x65\x76\x65\x6E\x74\x73","\x6C\x6F\x64\x61\x73\x68","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x61\x67\x65\x6E\x74\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x72\x6F\x6C\x65","\x61\x67\x65\x6E\x74","\x75\x73\x65\x72\x49\x64","\x69\x64","\x6F\x6E\x6C\x69\x6E\x65","\x63\x68\x61\x6E\x67\x65\x64","\x64\x61\x74\x61\x56\x61\x6C\x75\x65\x73","\x63\x6C\x6F\x6E\x65","\x73\x74\x61\x74\x75\x73","\x68\x61\x73\x4F\x77\x6E\x50\x72\x6F\x70\x65\x72\x74\x79","\x5F\x63\x68\x61\x6E\x67\x65\x64","\x71\x75\x65\x75\x65\x53\x74\x61\x74\x75\x73","\x65\x6D\x69\x74","\x61\x67\x65\x6E\x74\x3A\x73\x61\x76\x65","\x61\x67\x65\x6E\x74\x3A\x72\x65\x6D\x6F\x76\x65","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x91d7[0];const AgentEvents=require(_0x91d7[1]);const _=require(_0x91d7[2]);var events=[_0x91d7[3],_0x91d7[4]];exports[_0x91d7[5]]= function(_0x4f8ex4){for(var _0x4f8ex5=0,_0x4f8ex6=events[_0x91d7[6]];_0x4f8ex5< _0x4f8ex6;_0x4f8ex5++){var _0x4f8ex7=events[_0x4f8ex5];var _0x4f8ex8=createListener(_0x91d7[7]+ _0x4f8ex7,_0x4f8ex4);AgentEvents[_0x91d7[8]](_0x4f8ex7,_0x4f8ex8);_0x4f8ex4[_0x91d7[8]](_0x91d7[9],removeListener(_0x4f8ex7,_0x4f8ex8))}};function createListener(_0x4f8ex7,_0x4f8ex4){return function(_0x4f8exa){switch(_0x4f8ex7){case _0x91d7[23]:if(_0x4f8exa[_0x91d7[10]]=== _0x91d7[11]&& (_0x4f8ex4[_0x91d7[10]]!== _0x91d7[11]|| _0x4f8ex4[_0x91d7[12]]== _0x4f8exa[_0x91d7[13]]|| _0x4f8exa[_0x91d7[15]](_0x91d7[14]))){var _0x4f8exb=_[_0x91d7[17]](_0x4f8exa[_0x91d7[16]]);if(_0x4f8exa[_0x91d7[20]][_0x91d7[19]](_0x91d7[18])){_0x4f8exb[_0x91d7[21]]= undefined}else {if(_0x4f8exa[_0x91d7[20]][_0x91d7[19]](_0x91d7[21])){_0x4f8exb[_0x91d7[18]]= undefined}};_0x4f8ex4[_0x91d7[22]](_0x4f8ex7,_0x4f8exb)};break;case _0x91d7[24]:_0x4f8ex4[_0x91d7[22]](_0x4f8ex7,_0x4f8exa);break;default:}}}function removeListener(_0x4f8ex7,_0x4f8ex8){return function(){AgentEvents[_0x91d7[25]](_0x4f8ex7,_0x4f8ex8)}} \ No newline at end of file diff --git a/server/api/agent/index.js b/server/api/agent/index.js index 49fcc15..0d9831f 100644 --- a/server/api/agent/index.js +++ b/server/api/agent/index.js @@ -1,312 +1 @@ -'use strict'; - -var express = require('express'); - -var controller = require('./agent.controller'); -var auth = require('../../auth/auth.service'); -var license = require('../../config/license/license.service'); - -var router = express.Router(); -/** - * @api {get} /api/agents/ Get agents' profile. - * - * @apiParam (Query) {Number} [offset] Pagination offset. - * @apiParam (Query) {Number} limit Pagination limit. - * - * @apiVersion 0.0.140 - * @apiName GetAgents - * @apiGroup Agents - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccess {Number} count Number of agents. - * @apiSuccess {Object[]} rows Get agents' profile list. - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 200 OK - * { - * "count": 1, - * "rows": [{ - * "id": 1 - * "name": "john.doe", - * "email": "john.doe@xcally.com", - * "internal": 1001, - * "fullname": "John Doe", - * "chatCapacity": 0, - * "mailCapacity": 0, - * "faxCapacity": 0, - * "online": false, - * "voicePause": false, - * "mailPause": false, - * "faxPause": false, - * "chatPause": false, - * "pauseType": "Default Pause", - * ... - * }] - * } - */ -router.get('/', auth.isAuthenticated(), auth.hasModule([4], ['admin', 'agent']), controller.index); -router.get('/realtime', auth.isAuthenticated(), auth.hasModule([12], ['admin']), controller.realtimeIndex); -router.get('/realtime/voice', auth.isAuthenticated(), auth.hasModule([7], ['admin']), controller.realtimeVoiceIndex); -router.get('/realtime/mail', auth.isAuthenticated(), auth.hasModule([9], ['admin']), controller.realtimeMailIndex); -router.get('/realtime/chat', auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.realtimeChatIndex); -router.get('/realtime/fax', auth.isAuthenticated(), auth.hasModule([10], ['admin']), controller.realtimeFaxIndex); -router.get('/realtime/sms', auth.isAuthenticated(), auth.hasModule([11], ['admin']), controller.realtimeSmsIndex); -router.get('/realtime/openchannel', auth.isAuthenticated(), auth.hasModule([20], ['admin']), controller.realtimeOpenchannelIndex); - -/** - * @api {get} /api/agents/:id Get agent's profile. - * @apiParam {Number} id Agent's unique ID. - * @apiVersion 0.0.140 - * @apiName GetAgent - * @apiGroup Agents - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccess {Object} Agent's profile. - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 200 OK - * { - * "id": 1 - * "name": "john.doe" - * "email": "john.doe@xcally.com", - * "internal": 1001, - * "fullname": "John Doe" - * "chatCapacity": 0, - * "mailCapacity": 0, - * "faxCapacity": 0, - * "online": false, - * "voicePause": false, - * "mailPause": false, - * "faxPause": false, - * "chatPause": false, - * "pauseType": "Default Pause", - * ... - * } - */ -router.get('/:id', auth.isAuthenticated(), auth.hasModule([4], ['admin', 'user', 'agent']), controller.show); - -/** - * @api {post} /api/agents/ Create agent's profile. - * @apiParam (Body) {String} name Agent's username. - * @apiParam (Body) {String} fullname Agent's fullname. - * @apiParam (Body) {String} email Agent's email. - * @apiParam (Body) {String} context="from-sip" Agent's SIP context. - * @apiParam (Body) {String} password Agent's password. - * @apiParam (Body) {Number} internal Agent's internal number. - * @apiParam (Body) {String="tcp", "udp", "tcp,udp"} transport="udp" Agent's SIP transport. - * @apiParam (Body) {String="alaw", "ulaw", "gsm"} allow="alaw;ulaw;gsm" Agent's SIP codecs. - * @apiParam (Body) {Number} internal Agent's internal number. - * @apiParam (Body) {String} [phone] Agent's phone. - * @apiParam (Body) {String} [mobile] Agent's mobile phone. - * @apiParam (Body) {String} [address] Agent's address. - * @apiParam (Body) {String} [zipcode] Agent's zipcode. - * @apiParam (Body) {String} [city] Agent's city. - * @apiParam (Body) {String} [country] Agent's country. - * - * @apiVersion 0.0.140 - * @apiName CreateAgent - * @apiGroup Agents - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 201 Created - * { - * "id": 1 - * "name": "john.doe", - * "email": "john.doe@xcally.com", - * "internal": 1001, - * "fullname": "John Doe", - * ... - * } - */ -router.post('/', auth.isAuthenticated(), auth.hasModule([4], ['admin']), controller.create); - -/** - * @api {post} /api/agents/bulk Bulk Create agent's profile. - * @apiParam (Body) {String} name Agent's prefix username. It's followed by index - * @apiParam (Body) {String} fullname Agent's prefix fullname. It's followed by index - * @apiParam (Body) {String} email Agent's email. The local part is followed by the index - * @apiParam (Body) {String} password Agent's password. It's the same for all agents - * @apiParam (Body) {Number} internal Agent's starting internal number. - * @apiParam (Body) {String} context="from-sip" Agent's SIP context. It's the same for all agents - * @apiParam (Body) {String="tcp", "udp", "tcp,udp"} transport="udp" Agent's SIP transport. It's the same for all agents - * @apiParam (Body) {String="alaw", "ulaw", "gsm"} allow="alaw;ulaw;gsm" Agent's SIP codecs. It's the same for all agents - * @apiParam (Body) {Number} amount=2 Number of new agents. - * @apiParam (Body) {Number} startIndex=0 Start index. - * - * @apiVersion 0.0.140 - * @apiName BulkCreateAgent - * @apiGroup Agents - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 201 Created - */ -router.post('/bulk', auth.isAuthenticated(), auth.hasModule([4], ['admin']), controller.bulkCreate); - -/** - * @api {update} /api/agents/:id Update agent's profile. - * - * @apiParam (Params) {Number} id Agent's unique ID. - * @apiParam (Body) {String} fullname Agent's fullname. - * @apiParam (Body) {String} email Agent's email. - * @apiParam (Body) {String} context="from-sip" Agent's SIP context. - * @apiParam (Body) {String} password Agent's password. - * @apiParam (Body) {Number} internal Agent's internal number. - * @apiParam (Body) {String="tcp", "udp", "tcp,udp"} transport="udp" Agent's SIP transport. - * @apiParam (Body) {String="alaw", "ulaw", "gsm"} allow="alaw;ulaw;gsm" Agent's SIP codecs. - * @apiParam (Body) {Number} internal Agent's internal number. - * @apiParam (Body) {String} [phone] Agent's phone. - * @apiParam (Body) {String} [mobile] Agent's mobile phone. - * @apiParam (Body) {String} [address] Agent's address. - * @apiParam (Body) {String} [zipcode] Agent's zipcode. - * @apiParam (Body) {String} [city] Agent's city. - * @apiParam (Body) {String} [country] Agent's country. - * - * @apiVersion 0.0.140 - * @apiName UpdateAgent - * @apiGroup Agents - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 200 OK - * { - * "id": 1 - * "name": "john.doe", - * "email": "john.doe@xcally.com", - * "internal": 1001, - * "fullname": "John Doe", - * ... - * } - */ -router.put('/:id', auth.isAuthenticated(), auth.hasModule([4], ['admin']), controller.update); - -/** - * @api {delete} /api/agents/ Bulk Delete agents' profile. - * - * @apiParam (Query) {Number[]} ids Agents' unique ID array. - * - * @apiVersion 0.0.140 - * @apiName BulkDeleteAgents - * @apiGroup Agents - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 204 No Content - */ -router.delete('/', auth.isAuthenticated(), auth.hasModule([4], ['admin']), controller.bulkDestroy); - -/** - * @api {delete} /api/agents/:id Delete agent's profile. - * - * @apiParam {Number} id Agent's unique ID. - * - * @apiVersion 0.0.140 - * @apiName DeleteAgent - * @apiGroup Agents - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 204 No Content - */ -router.delete('/:id', auth.isAuthenticated(), auth.hasModule([4], ['admin']), controller.destroy); - -/** - * @api {put} /api/agents/password Update agent's password. - * - * @apiParam (Body) {String} oldPassword Old agent's password. - * @apiParam (Body) {String} newPassword New agent's password. - * - * @apiVersion 0.0.140 - * @apiName UpdateAgentPassword - * @apiGroup Agents - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 200 OK - */ -// router.put('/password', auth.isAuthenticated(), auth.hasModule([4], ['admin']), controller.changePassword); - -/** - * @api {put} /api/agents/:id/password Reset agent's password. - * - * @apiParam (Params) {Number} id Agent's unique ID. - * @apiParam (Body) {String} newPassword New agent's password. - * - * @apiPermission admin - * - * @apiVersion 0.0.140 - * @apiName ResetAgentPassword - * @apiGroup Agents - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 200 OK - */ -// router.put('/:id/password', auth.isAuthenticated(), auth.hasModule([4], ['admin']), controller.resetPassword); - -router.get('/:id/voice/queues', auth.isAuthenticated(), auth.hasModule([4], ['admin', 'agent']), controller.showVoiceQueues); -router.get('/:id/chat/queues', auth.isAuthenticated(), auth.hasModule([4], ['admin', 'agent']), controller.showChatQueues); -router.get('/:id/mail/queues', auth.isAuthenticated(), auth.hasModule([4], ['admin', 'agent']), controller.showMailQueues); -router.get('/:id/fax/queues', auth.isAuthenticated(), auth.hasModule([4], ['admin', 'agent']), controller.showFaxQueues); -router.get('/:id/sms/queues', auth.isAuthenticated(), auth.hasModule([4], ['admin', 'agent']), controller.showSmsQueues); -router.get('/:id/openchannel/queues', auth.isAuthenticated(), auth.hasModule([4], ['admin', 'agent']), controller.showOpenchannelQueues); -router.post('/:id/:channel/queues', auth.isAuthenticated(), auth.hasModule([4], ['admin', 'agent']), controller.addQueues); -router.delete('/:id/:channel/queues', auth.isAuthenticated(), auth.hasModule([4], ['admin', 'agent']), controller.removeQueues); - - -module.exports = router; +var _0x2ee8=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x61\x67\x65\x6E\x74\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x72\x65\x61\x6C\x74\x69\x6D\x65","\x72\x65\x61\x6C\x74\x69\x6D\x65\x49\x6E\x64\x65\x78","\x2F\x72\x65\x61\x6C\x74\x69\x6D\x65\x2F\x76\x6F\x69\x63\x65","\x72\x65\x61\x6C\x74\x69\x6D\x65\x56\x6F\x69\x63\x65\x49\x6E\x64\x65\x78","\x2F\x72\x65\x61\x6C\x74\x69\x6D\x65\x2F\x6D\x61\x69\x6C","\x72\x65\x61\x6C\x74\x69\x6D\x65\x4D\x61\x69\x6C\x49\x6E\x64\x65\x78","\x2F\x72\x65\x61\x6C\x74\x69\x6D\x65\x2F\x63\x68\x61\x74","\x72\x65\x61\x6C\x74\x69\x6D\x65\x43\x68\x61\x74\x49\x6E\x64\x65\x78","\x2F\x72\x65\x61\x6C\x74\x69\x6D\x65\x2F\x66\x61\x78","\x72\x65\x61\x6C\x74\x69\x6D\x65\x46\x61\x78\x49\x6E\x64\x65\x78","\x2F\x72\x65\x61\x6C\x74\x69\x6D\x65\x2F\x73\x6D\x73","\x72\x65\x61\x6C\x74\x69\x6D\x65\x53\x6D\x73\x49\x6E\x64\x65\x78","\x2F\x72\x65\x61\x6C\x74\x69\x6D\x65\x2F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C","\x72\x65\x61\x6C\x74\x69\x6D\x65\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x49\x6E\x64\x65\x78","\x2F\x3A\x69\x64","\x75\x73\x65\x72","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x2F\x62\x75\x6C\x6B","\x62\x75\x6C\x6B\x43\x72\x65\x61\x74\x65","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x2F\x3A\x69\x64\x2F\x76\x6F\x69\x63\x65\x2F\x71\x75\x65\x75\x65\x73","\x73\x68\x6F\x77\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65\x73","\x2F\x3A\x69\x64\x2F\x63\x68\x61\x74\x2F\x71\x75\x65\x75\x65\x73","\x73\x68\x6F\x77\x43\x68\x61\x74\x51\x75\x65\x75\x65\x73","\x2F\x3A\x69\x64\x2F\x6D\x61\x69\x6C\x2F\x71\x75\x65\x75\x65\x73","\x73\x68\x6F\x77\x4D\x61\x69\x6C\x51\x75\x65\x75\x65\x73","\x2F\x3A\x69\x64\x2F\x66\x61\x78\x2F\x71\x75\x65\x75\x65\x73","\x73\x68\x6F\x77\x46\x61\x78\x51\x75\x65\x75\x65\x73","\x2F\x3A\x69\x64\x2F\x73\x6D\x73\x2F\x71\x75\x65\x75\x65\x73","\x73\x68\x6F\x77\x53\x6D\x73\x51\x75\x65\x75\x65\x73","\x2F\x3A\x69\x64\x2F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x2F\x71\x75\x65\x75\x65\x73","\x73\x68\x6F\x77\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65\x73","\x2F\x3A\x69\x64\x2F\x3A\x63\x68\x61\x6E\x6E\x65\x6C\x2F\x71\x75\x65\x75\x65\x73","\x61\x64\x64\x51\x75\x65\x75\x65\x73","\x72\x65\x6D\x6F\x76\x65\x51\x75\x65\x75\x65\x73","\x65\x78\x70\x6F\x72\x74\x73"];_0x2ee8[0];var express=require(_0x2ee8[1]);var controller=require(_0x2ee8[2]);var auth=require(_0x2ee8[3]);var license=require(_0x2ee8[4]);var router=express.Router();router[_0x2ee8[11]](_0x2ee8[5],auth[_0x2ee8[6]](),auth[_0x2ee8[9]]([4],[_0x2ee8[7],_0x2ee8[8]]),controller[_0x2ee8[10]]);router[_0x2ee8[11]](_0x2ee8[12],auth[_0x2ee8[6]](),auth[_0x2ee8[9]]([12],[_0x2ee8[7]]),controller[_0x2ee8[13]]);router[_0x2ee8[11]](_0x2ee8[14],auth[_0x2ee8[6]](),auth[_0x2ee8[9]]([7],[_0x2ee8[7]]),controller[_0x2ee8[15]]);router[_0x2ee8[11]](_0x2ee8[16],auth[_0x2ee8[6]](),auth[_0x2ee8[9]]([9],[_0x2ee8[7]]),controller[_0x2ee8[17]]);router[_0x2ee8[11]](_0x2ee8[18],auth[_0x2ee8[6]](),auth[_0x2ee8[9]]([8],[_0x2ee8[7]]),controller[_0x2ee8[19]]);router[_0x2ee8[11]](_0x2ee8[20],auth[_0x2ee8[6]](),auth[_0x2ee8[9]]([10],[_0x2ee8[7]]),controller[_0x2ee8[21]]);router[_0x2ee8[11]](_0x2ee8[22],auth[_0x2ee8[6]](),auth[_0x2ee8[9]]([11],[_0x2ee8[7]]),controller[_0x2ee8[23]]);router[_0x2ee8[11]](_0x2ee8[24],auth[_0x2ee8[6]](),auth[_0x2ee8[9]]([20],[_0x2ee8[7]]),controller[_0x2ee8[25]]);router[_0x2ee8[11]](_0x2ee8[26],auth[_0x2ee8[6]](),auth[_0x2ee8[9]]([4],[_0x2ee8[7],_0x2ee8[27],_0x2ee8[8]]),controller[_0x2ee8[28]]);router[_0x2ee8[30]](_0x2ee8[5],auth[_0x2ee8[6]](),auth[_0x2ee8[9]]([4],[_0x2ee8[7]]),controller[_0x2ee8[29]]);router[_0x2ee8[30]](_0x2ee8[31],auth[_0x2ee8[6]](),auth[_0x2ee8[9]]([4],[_0x2ee8[7]]),controller[_0x2ee8[32]]);router[_0x2ee8[34]](_0x2ee8[26],auth[_0x2ee8[6]](),auth[_0x2ee8[9]]([4],[_0x2ee8[7]]),controller[_0x2ee8[33]]);router[_0x2ee8[36]](_0x2ee8[5],auth[_0x2ee8[6]](),auth[_0x2ee8[9]]([4],[_0x2ee8[7]]),controller[_0x2ee8[35]]);router[_0x2ee8[36]](_0x2ee8[26],auth[_0x2ee8[6]](),auth[_0x2ee8[9]]([4],[_0x2ee8[7]]),controller[_0x2ee8[37]]);router[_0x2ee8[11]](_0x2ee8[38],auth[_0x2ee8[6]](),auth[_0x2ee8[9]]([4],[_0x2ee8[7],_0x2ee8[8]]),controller[_0x2ee8[39]]);router[_0x2ee8[11]](_0x2ee8[40],auth[_0x2ee8[6]](),auth[_0x2ee8[9]]([4],[_0x2ee8[7],_0x2ee8[8]]),controller[_0x2ee8[41]]);router[_0x2ee8[11]](_0x2ee8[42],auth[_0x2ee8[6]](),auth[_0x2ee8[9]]([4],[_0x2ee8[7],_0x2ee8[8]]),controller[_0x2ee8[43]]);router[_0x2ee8[11]](_0x2ee8[44],auth[_0x2ee8[6]](),auth[_0x2ee8[9]]([4],[_0x2ee8[7],_0x2ee8[8]]),controller[_0x2ee8[45]]);router[_0x2ee8[11]](_0x2ee8[46],auth[_0x2ee8[6]](),auth[_0x2ee8[9]]([4],[_0x2ee8[7],_0x2ee8[8]]),controller[_0x2ee8[47]]);router[_0x2ee8[11]](_0x2ee8[48],auth[_0x2ee8[6]](),auth[_0x2ee8[9]]([4],[_0x2ee8[7],_0x2ee8[8]]),controller[_0x2ee8[49]]);router[_0x2ee8[30]](_0x2ee8[50],auth[_0x2ee8[6]](),auth[_0x2ee8[9]]([4],[_0x2ee8[7],_0x2ee8[8]]),controller[_0x2ee8[51]]);router[_0x2ee8[36]](_0x2ee8[50],auth[_0x2ee8[6]](),auth[_0x2ee8[9]]([4],[_0x2ee8[7],_0x2ee8[8]]),controller[_0x2ee8[52]]);module[_0x2ee8[53]]= router \ No newline at end of file diff --git a/server/api/ami/ami.ami.js b/server/api/ami/ami.ami.js index 1282301..c56898a 100644 --- a/server/api/ami/ami.ami.js +++ b/server/api/ami/ami.ami.js @@ -1,36 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -var Ami = require('../../models').Ami; -var _ = require('lodash'); - -var ami = null; - -exports.register = function(ami) { - this.ami = ami; -} - -exports.action = function(action, cb) { - if (this.ami && this.ami.isConnected()) { - this.ami.action(action, function(err, res) { - if (err) { - cb(err); - } - var data = _.merge(res, action); - Ami - .create(data) - .then(function(ami) { - cb(null, ami) - }) - .catch(function(err) { - return cb(err); - }); - - }); - } else { - cb(new Error('Asterisk Manager disconnected..')); - } -} +var _0x64f7=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x41\x6D\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x6C\x6F\x64\x61\x73\x68","\x72\x65\x67\x69\x73\x74\x65\x72","\x61\x6D\x69","\x61\x63\x74\x69\x6F\x6E","\x69\x73\x43\x6F\x6E\x6E\x65\x63\x74\x65\x64","\x6D\x65\x72\x67\x65","\x63\x61\x74\x63\x68","\x74\x68\x65\x6E","\x63\x72\x65\x61\x74\x65","\x41\x73\x74\x65\x72\x69\x73\x6B\x20\x4D\x61\x6E\x61\x67\x65\x72\x20\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74\x65\x64\x2E\x2E"];_0x64f7[0];var Ami=require(_0x64f7[2])[_0x64f7[1]];var _=require(_0x64f7[3]);var ami=null;exports[_0x64f7[4]]= function(ami){this[_0x64f7[5]]= ami};exports[_0x64f7[6]]= function(_0x383ax4,_0x383ax5){if(this[_0x64f7[5]]&& this[_0x64f7[5]][_0x64f7[7]]()){this[_0x64f7[5]][_0x64f7[6]](_0x383ax4,function(_0x383ax6,_0x383ax7){if(_0x383ax6){_0x383ax5(_0x383ax6)};var _0x383ax8=_[_0x64f7[8]](_0x383ax7,_0x383ax4);Ami[_0x64f7[11]](_0x383ax8)[_0x64f7[10]](function(ami){_0x383ax5(null,ami)})[_0x64f7[9]](function(_0x383ax6){return _0x383ax5(_0x383ax6)})})}else {_0x383ax5( new Error(_0x64f7[12]))}} \ No newline at end of file diff --git a/server/api/ami/ami.controller.js b/server/api/ami/ami.controller.js index 9b00f54..2359e57 100644 --- a/server/api/ami/ami.controller.js +++ b/server/api/ami/ami.controller.js @@ -1,37 +1 @@ -'use strict'; - -var _ = require('lodash'); -var Ami = require('../../models').Ami; -var Util = require('../../config/util'); - -// Get list of amis -exports.index = function(req, res, next) { - return Ami - .findAndCountAll(Util.getQuery(req.query)) - .then(function(result) { - return res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Creates a new ami in the DB. -exports.create = function(req, res) { - - req.body.data = JSON.stringify(req.body); - req.body.UserId = req.user.id; - - require('./ami.ami').action(req.body, function(err, result) { - if (err) { - handleError(res, err); - } else { - return res.status(201).send(result); - } - }); - -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0xd5f5=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x41\x6D\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x63\x72\x65\x61\x74\x65","\x64\x61\x74\x61","\x62\x6F\x64\x79","\x73\x74\x72\x69\x6E\x67\x69\x66\x79","\x55\x73\x65\x72\x49\x64","\x69\x64","\x75\x73\x65\x72","\x61\x63\x74\x69\x6F\x6E","\x2E\x2F\x61\x6D\x69\x2E\x61\x6D\x69"];_0xd5f5[0];var _=require(_0xd5f5[1]);var Ami=require(_0xd5f5[3])[_0xd5f5[2]];var Util=require(_0xd5f5[4]);exports[_0xd5f5[5]]= function(_0xd08bx4,_0xd08bx5,_0xd08bx6){return Ami[_0xd5f5[12]](Util[_0xd5f5[11]](_0xd08bx4[_0xd5f5[10]]))[_0xd5f5[9]](function(_0xd08bx8){return _0xd08bx5[_0xd5f5[8]](200)[_0xd5f5[7]](_0xd08bx8)})[_0xd5f5[6]](function(_0xd08bx7){return handleError(_0xd08bx5,_0xd08bx7)})};exports[_0xd5f5[13]]= function(_0xd08bx4,_0xd08bx5){_0xd08bx4[_0xd5f5[15]][_0xd5f5[14]]= JSON[_0xd5f5[16]](_0xd08bx4[_0xd5f5[15]]);_0xd08bx4[_0xd5f5[15]][_0xd5f5[17]]= _0xd08bx4[_0xd5f5[19]][_0xd5f5[18]];require(_0xd5f5[21])[_0xd5f5[20]](_0xd08bx4[_0xd5f5[15]],function(_0xd08bx7,_0xd08bx8){if(_0xd08bx7){handleError(_0xd08bx5,_0xd08bx7)}else {return _0xd08bx5[_0xd5f5[8]](201)[_0xd5f5[7]](_0xd08bx8)}})};function handleError(_0xd08bx5,_0xd08bx7){return _0xd08bx5[_0xd5f5[8]](500)[_0xd5f5[7]](_0xd08bx7)} \ No newline at end of file diff --git a/server/api/ami/ami.events.js b/server/api/ami/ami.events.js index 69ed024..f96b53e 100644 --- a/server/api/ami/ami.events.js +++ b/server/api/ami/ami.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const Ami = require('../../models').Ami; - -var AmiEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -AmiEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - Ami.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - AmiEvents.emit(event + ':' + doc._id, doc); - AmiEvents.emit(event, doc); - done(null); - } -} - -module.exports = AmiEvents; +var _0xa193=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x41\x6D\x69","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xa193[0];const EventEmitter=require(_0xa193[1]);const Ami=require(_0xa193[3])[_0xa193[2]];var AmiEvents= new EventEmitter();AmiEvents[_0xa193[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xa193[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xa193[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xa193[6]};for(var e in events){var event=events[e];Ami[_0xa193[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xd440x8,_0xd440x9,_0xd440xa){AmiEvents[_0xa193[10]](event+ _0xa193[8]+ _0xd440x8[_0xa193[9]],_0xd440x8);AmiEvents[_0xa193[10]](event,_0xd440x8);_0xd440xa(null)}}module[_0xa193[11]]= AmiEvents \ No newline at end of file diff --git a/server/api/ami/ami.socket.js b/server/api/ami/ami.socket.js index b1ba530..29aa181 100644 --- a/server/api/ami/ami.socket.js +++ b/server/api/ami/ami.socket.js @@ -1,32 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const AmiEvents = require('./ami.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('ami:' + event, socket); - - AmiEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - AmiEvents.removeListener(event, listener); - }; -} +var _0x361c=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x61\x6D\x69\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x61\x6D\x69\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x361c[0];const AmiEvents=require(_0x361c[1]);var events=[_0x361c[2],_0x361c[3]];exports[_0x361c[4]]= function(_0x967cx3){for(var _0x967cx4=0,_0x967cx5=events[_0x361c[5]];_0x967cx4< _0x967cx5;_0x967cx4++){var _0x967cx6=events[_0x967cx4];var _0x967cx7=createListener(_0x361c[6]+ _0x967cx6,_0x967cx3);AmiEvents[_0x361c[7]](_0x967cx6,_0x967cx7);_0x967cx3[_0x361c[7]](_0x361c[8],removeListener(_0x967cx6,_0x967cx7))}};function createListener(_0x967cx6,_0x967cx3){return function(_0x967cx9){_0x967cx3[_0x361c[9]](_0x967cx6,_0x967cx9)}}function removeListener(_0x967cx6,_0x967cx7){return function(){AmiEvents[_0x361c[10]](_0x967cx6,_0x967cx7)}} \ No newline at end of file diff --git a/server/api/ami/index.js b/server/api/ami/index.js index ae0b77c..cea4bf8 100644 --- a/server/api/ami/index.js +++ b/server/api/ami/index.js @@ -1,12 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./ami.controller'); -var auth = require('../../auth/auth.service'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), controller.index); -router.post('/', auth.isAuthenticated(), controller.create); - -module.exports = router; +var _0x9111=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x61\x6D\x69\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x9111[0];var express=require(_0x9111[1]);var controller=require(_0x9111[2]);var auth=require(_0x9111[3]);var router=express.Router();router[_0x9111[7]](_0x9111[4],auth[_0x9111[5]](),controller[_0x9111[6]]);router[_0x9111[9]](_0x9111[4],auth[_0x9111[5]](),controller[_0x9111[8]]);module[_0x9111[10]]= router \ No newline at end of file diff --git a/server/api/automation/automation.controller.js b/server/api/automation/automation.controller.js index 169fca5..a64b06b 100644 --- a/server/api/automation/automation.controller.js +++ b/server/api/automation/automation.controller.js @@ -1,205 +1 @@ -'use strict'; - -var _ = require('lodash'); -var util = require('util'); -var Util = require('../../config/util'); -var sequelize = require('../../models').sequelize; - -var Automation = require('../../models').Automation; -var ToolsCondition = require('../../models').ToolsCondition; -var ToolsAction = require('../../models').ToolsAction; - -// Get list of agents -exports.index = function(req, res, next) { - return Automation - .scope('all') - .findAndCountAll(_.merge(Util.getQuery(req.query), { - distinct: true - })) - .then(function(result) { - res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get a single Automation -exports.show = function(req, res) { - return Automation - .scope('all') - .findById(req.params.id) - .then(function(Automation) { - if (!Automation) { - return res.sendStatus(404); - } - return res.send(Automation); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Creates a new Automation in the DB. -exports.create = function(req, res, next) { - return Automation - .create(req.body, { - include: [{ - model: ToolsCondition, - as: 'All' - }, { - model: ToolsCondition, - as: 'Any' - }, { - model: ToolsAction, - as: 'Actions' - }] - }) - .then(function() { - return res.sendStatus(201); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Updates an existing Automation in the DB. -exports.update = function(req, res, next) { - var _automation; - if (req.body.id) { - delete req.body.id; - } - return sequelize.transaction(function(t) { - return Automation - .findById(req.params.id) - .then(function(automation) { - if (!automation) { - return res.sendStatus(404); - } - _automation = automation; - if (req.body.Any) { - return ToolsCondition - .destroy({ - where: { - AutomationAnyId: req.params.id - }, - transaction: t - }); - } - }) - .then(function() { - if (req.body.Any && Array.isArray(req.body.Any) && req.body.Any.length) { - _.forEach(req.body.Any, function(elem) { - elem.AutomationAnyId = req.params.id; - }); - return ToolsCondition - .bulkCreate(req.body.Any, { - transaction: t - }); - } - return; - }) - .then(function() { - if (req.body.All) { - return ToolsCondition - .destroy({ - where: { - AutomationAllId: req.params.id - }, - transaction: t - }); - } - }) - .then(function() { - if (req.body.All && Array.isArray(req.body.All) && req.body.All.length) { - _.forEach(req.body.All, function(elem) { - elem.AutomationAllId = req.params.id; - }); - return ToolsCondition - .bulkCreate(req.body.All, { - transaction: t - }); - } - return; - }) - .then(function() { - if (req.body.Actions) { - return ToolsAction - .destroy({ - where: { - AutomationId: req.params.id - }, - transaction: t - }); - } - }) - .then(function() { - if (req.body.Actions && Array.isArray(req.body.Actions) && req.body.Actions.length) { - _.forEach(req.body.Actions, function(elem) { - elem.AutomationId = req.params.id; - }); - return ToolsAction - .bulkCreate(req.body.Actions, { - transaction: t - }); - } - return; - }) - .then(function() { - var updated = _.merge(_automation, req.body); - return updated - .save({ - transaction: t - }); - }); - }) - .then(function() { - return res.sendStatus(200); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - - -// Deletes a Automation from the DB. -exports.destroy = function(req, res) { - return Automation - .findById(req.params.id) - .then(function(Automation) { - if (!Automation) { - return res.sendStatus(404); - } - Automation.destroy() - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -} - -exports.bulkDestroy = function(req, res) { - return Automation - .destroy({ - where: { - id: req.query.ids - }, - individualHooks: true - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0xa892=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x75\x74\x69\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x41\x75\x74\x6F\x6D\x61\x74\x69\x6F\x6E","\x54\x6F\x6F\x6C\x73\x43\x6F\x6E\x64\x69\x74\x69\x6F\x6E","\x54\x6F\x6F\x6C\x73\x41\x63\x74\x69\x6F\x6E","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x6D\x65\x72\x67\x65","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x61\x6C\x6C","\x73\x63\x6F\x70\x65","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x41\x6C\x6C","\x41\x6E\x79","\x41\x63\x74\x69\x6F\x6E\x73","\x75\x70\x64\x61\x74\x65","\x6C\x6F\x67","\x73\x61\x76\x65","\x69\x73\x41\x72\x72\x61\x79","\x6C\x65\x6E\x67\x74\x68","\x41\x75\x74\x6F\x6D\x61\x74\x69\x6F\x6E\x49\x64","\x66\x6F\x72\x45\x61\x63\x68","\x62\x75\x6C\x6B\x43\x72\x65\x61\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x41\x75\x74\x6F\x6D\x61\x74\x69\x6F\x6E\x41\x6C\x6C\x49\x64","\x41\x75\x74\x6F\x6D\x61\x74\x69\x6F\x6E\x41\x6E\x79\x49\x64","\x74\x72\x61\x6E\x73\x61\x63\x74\x69\x6F\x6E","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73"];_0xa892[0];var _=require(_0xa892[1]);var util=require(_0xa892[2]);var Util=require(_0xa892[3]);var sequelize=require(_0xa892[5])[_0xa892[4]];var Automation=require(_0xa892[5])[_0xa892[6]];var ToolsCondition=require(_0xa892[5])[_0xa892[7]];var ToolsAction=require(_0xa892[5])[_0xa892[8]];exports[_0xa892[9]]= function(_0x3160x8,_0x3160x9,_0x3160xa){return Automation[_0xa892[19]](_0xa892[18])[_0xa892[17]](_[_0xa892[16]](Util[_0xa892[15]](_0x3160x8[_0xa892[14]]),{distinct:true}))[_0xa892[13]](function(_0x3160xc){_0x3160x9[_0xa892[12]](200)[_0xa892[11]](_0x3160xc)})[_0xa892[10]](function(_0x3160xb){return handleError(_0x3160x9,_0x3160xb)})};exports[_0xa892[20]]= function(_0x3160x8,_0x3160x9){return Automation[_0xa892[19]](_0xa892[18])[_0xa892[24]](_0x3160x8[_0xa892[23]][_0xa892[22]])[_0xa892[13]](function(Automation){if(!Automation){return _0x3160x9[_0xa892[21]](404)};return _0x3160x9[_0xa892[11]](Automation)})[_0xa892[10]](function(_0x3160xb){return handleError(_0x3160x9,_0x3160xb)})};exports[_0xa892[25]]= function(_0x3160x8,_0x3160x9,_0x3160xa){return Automation[_0xa892[25]](_0x3160x8[_0xa892[26]],{include:[{model:ToolsCondition,as:_0xa892[27]},{model:ToolsCondition,as:_0xa892[28]},{model:ToolsAction,as:_0xa892[29]}]})[_0xa892[13]](function(){return _0x3160x9[_0xa892[21]](201)})[_0xa892[10]](function(_0x3160xb){return handleError(_0x3160x9,_0x3160xb)})};exports[_0xa892[30]]= function(_0x3160x8,_0x3160x9,_0x3160xa){var _0x3160xd;if(_0x3160x8[_0xa892[26]][_0xa892[22]]){delete _0x3160x8[_0xa892[26]][_0xa892[22]]};return sequelize[_0xa892[41]](function(_0x3160xe){return Automation[_0xa892[24]](_0x3160x8[_0xa892[23]][_0xa892[22]])[_0xa892[13]](function(_0x3160x11){if(!_0x3160x11){return _0x3160x9[_0xa892[21]](404)};_0x3160xd= _0x3160x11;if(_0x3160x8[_0xa892[26]][_0xa892[28]]){return ToolsCondition[_0xa892[38]]({where:{AutomationAnyId:_0x3160x8[_0xa892[23]][_0xa892[22]]},transaction:_0x3160xe})}})[_0xa892[13]](function(){if(_0x3160x8[_0xa892[26]][_0xa892[28]]&& Array[_0xa892[33]](_0x3160x8[_0xa892[26]].Any)&& _0x3160x8[_0xa892[26]][_0xa892[28]][_0xa892[34]]){_[_0xa892[36]](_0x3160x8[_0xa892[26]].Any,function(_0x3160x10){_0x3160x10[_0xa892[40]]= _0x3160x8[_0xa892[23]][_0xa892[22]]});return ToolsCondition[_0xa892[37]](_0x3160x8[_0xa892[26]].Any,{transaction:_0x3160xe})};return})[_0xa892[13]](function(){if(_0x3160x8[_0xa892[26]][_0xa892[27]]){return ToolsCondition[_0xa892[38]]({where:{AutomationAllId:_0x3160x8[_0xa892[23]][_0xa892[22]]},transaction:_0x3160xe})}})[_0xa892[13]](function(){if(_0x3160x8[_0xa892[26]][_0xa892[27]]&& Array[_0xa892[33]](_0x3160x8[_0xa892[26]].All)&& _0x3160x8[_0xa892[26]][_0xa892[27]][_0xa892[34]]){_[_0xa892[36]](_0x3160x8[_0xa892[26]].All,function(_0x3160x10){_0x3160x10[_0xa892[39]]= _0x3160x8[_0xa892[23]][_0xa892[22]]});return ToolsCondition[_0xa892[37]](_0x3160x8[_0xa892[26]].All,{transaction:_0x3160xe})};return})[_0xa892[13]](function(){if(_0x3160x8[_0xa892[26]][_0xa892[29]]){return ToolsAction[_0xa892[38]]({where:{AutomationId:_0x3160x8[_0xa892[23]][_0xa892[22]]},transaction:_0x3160xe})}})[_0xa892[13]](function(){if(_0x3160x8[_0xa892[26]][_0xa892[29]]&& Array[_0xa892[33]](_0x3160x8[_0xa892[26]].Actions)&& _0x3160x8[_0xa892[26]][_0xa892[29]][_0xa892[34]]){_[_0xa892[36]](_0x3160x8[_0xa892[26]].Actions,function(_0x3160x10){_0x3160x10[_0xa892[35]]= _0x3160x8[_0xa892[23]][_0xa892[22]]});return ToolsAction[_0xa892[37]](_0x3160x8[_0xa892[26]].Actions,{transaction:_0x3160xe})};return})[_0xa892[13]](function(){var _0x3160xf=_[_0xa892[16]](_0x3160xd,_0x3160x8[_0xa892[26]]);return _0x3160xf[_0xa892[32]]({transaction:_0x3160xe})})})[_0xa892[13]](function(){return _0x3160x9[_0xa892[21]](200)})[_0xa892[10]](function(_0x3160xb){console[_0xa892[31]](_0x3160xb);return handleError(_0x3160x9,_0x3160xb)})};exports[_0xa892[38]]= function(_0x3160x8,_0x3160x9){return Automation[_0xa892[24]](_0x3160x8[_0xa892[23]][_0xa892[22]])[_0xa892[13]](function(Automation){if(!Automation){return _0x3160x9[_0xa892[21]](404)};Automation[_0xa892[38]]()[_0xa892[13]](function(){return _0x3160x9[_0xa892[21]](204)})[_0xa892[10]](function(_0x3160xb){return handleError(_0x3160x9,_0x3160xb)})})[_0xa892[10]](function(_0x3160xb){return handleError(_0x3160x9,_0x3160xb)})};exports[_0xa892[42]]= function(_0x3160x8,_0x3160x9){return Automation[_0xa892[38]]({where:{id:_0x3160x8[_0xa892[14]][_0xa892[43]]},individualHooks:true})[_0xa892[13]](function(){return _0x3160x9[_0xa892[21]](204)})[_0xa892[10]](function(_0x3160xb){return handleError(_0x3160x9,_0x3160xb)})};function handleError(_0x3160x9,_0x3160xb){return _0x3160x9[_0xa892[12]](500)[_0xa892[11]](_0x3160xb)} \ No newline at end of file diff --git a/server/api/automation/automation.events.js b/server/api/automation/automation.events.js index c0aaffc..6f080f7 100644 --- a/server/api/automation/automation.events.js +++ b/server/api/automation/automation.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const Automation = require('../../models').Automation; - -var AutomationEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -AutomationEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - Automation.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - AutomationEvents.emit(event + ':' + doc._id, doc); - AutomationEvents.emit(event, doc); - done(null); - } -} - -module.exports = AutomationEvents; +var _0xc6ab=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x41\x75\x74\x6F\x6D\x61\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xc6ab[0];const EventEmitter=require(_0xc6ab[1]);const Automation=require(_0xc6ab[3])[_0xc6ab[2]];var AutomationEvents= new EventEmitter();AutomationEvents[_0xc6ab[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xc6ab[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xc6ab[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xc6ab[6]};for(var e in events){var event=events[e];Automation[_0xc6ab[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x41f7x8,_0x41f7x9,_0x41f7xa){AutomationEvents[_0xc6ab[10]](event+ _0xc6ab[8]+ _0x41f7x8[_0xc6ab[9]],_0x41f7x8);AutomationEvents[_0xc6ab[10]](event,_0x41f7x8);_0x41f7xa(null)}}module[_0xc6ab[11]]= AutomationEvents \ No newline at end of file diff --git a/server/api/automation/automation.socket.js b/server/api/automation/automation.socket.js index c767335..ba008ef 100644 --- a/server/api/automation/automation.socket.js +++ b/server/api/automation/automation.socket.js @@ -1,28 +1 @@ -'use strict'; - -const AutomationEvents = require('./automation.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('automation:' + event, socket); - - AutomationEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - AutomationEvents.removeListener(event, listener); - }; -} +var _0x352d=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x61\x75\x74\x6F\x6D\x61\x74\x69\x6F\x6E\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x61\x75\x74\x6F\x6D\x61\x74\x69\x6F\x6E\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x352d[0];const AutomationEvents=require(_0x352d[1]);var events=[_0x352d[2],_0x352d[3]];exports[_0x352d[4]]= function(_0xdf45x3){for(var _0xdf45x4=0,_0xdf45x5=events[_0x352d[5]];_0xdf45x4< _0xdf45x5;_0xdf45x4++){var _0xdf45x6=events[_0xdf45x4];var _0xdf45x7=createListener(_0x352d[6]+ _0xdf45x6,_0xdf45x3);AutomationEvents[_0x352d[7]](_0xdf45x6,_0xdf45x7);_0xdf45x3[_0x352d[7]](_0x352d[8],removeListener(_0xdf45x6,_0xdf45x7))}};function createListener(_0xdf45x6,_0xdf45x3){return function(_0xdf45x9){_0xdf45x3[_0x352d[9]](_0xdf45x6,_0xdf45x9)}}function removeListener(_0xdf45x6,_0xdf45x7){return function(){AutomationEvents[_0x352d[10]](_0xdf45x6,_0xdf45x7)}} \ No newline at end of file diff --git a/server/api/automation/index.js b/server/api/automation/index.js index 654a7c9..a0dc9ca 100644 --- a/server/api/automation/index.js +++ b/server/api/automation/index.js @@ -1,16 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./automation.controller'); -var auth = require('../../auth/auth.service'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), auth.hasModule([13], ['admin']), controller.index); -router.get('/:id', auth.isAuthenticated(), auth.hasModule([13], ['admin']), controller.show); -router.post('/', auth.isAuthenticated(), auth.hasModule([13], ['admin']), controller.create); -router.put('/:id', auth.isAuthenticated(), auth.hasModule([13], ['admin']), controller.update); -router.delete('/:id', auth.isAuthenticated(), auth.hasModule([13], ['admin']), controller.destroy); -router.delete('/', auth.isAuthenticated(), auth.hasModule([13], ['admin']), controller.bulkDestroy); - -module.exports = router; +var _0x1dba=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x61\x75\x74\x6F\x6D\x61\x74\x69\x6F\x6E\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0x1dba[0];var express=require(_0x1dba[1]);var controller=require(_0x1dba[2]);var auth=require(_0x1dba[3]);var router=express.Router();router[_0x1dba[9]](_0x1dba[4],auth[_0x1dba[5]](),auth[_0x1dba[7]]([13],[_0x1dba[6]]),controller[_0x1dba[8]]);router[_0x1dba[9]](_0x1dba[10],auth[_0x1dba[5]](),auth[_0x1dba[7]]([13],[_0x1dba[6]]),controller[_0x1dba[11]]);router[_0x1dba[13]](_0x1dba[4],auth[_0x1dba[5]](),auth[_0x1dba[7]]([13],[_0x1dba[6]]),controller[_0x1dba[12]]);router[_0x1dba[15]](_0x1dba[10],auth[_0x1dba[5]](),auth[_0x1dba[7]]([13],[_0x1dba[6]]),controller[_0x1dba[14]]);router[_0x1dba[17]](_0x1dba[10],auth[_0x1dba[5]](),auth[_0x1dba[7]]([13],[_0x1dba[6]]),controller[_0x1dba[16]]);router[_0x1dba[17]](_0x1dba[4],auth[_0x1dba[5]](),auth[_0x1dba[7]]([13],[_0x1dba[6]]),controller[_0x1dba[18]]);module[_0x1dba[19]]= router \ No newline at end of file diff --git a/server/api/canned_answer/canned_answer.controller.js b/server/api/canned_answer/canned_answer.controller.js index dfda955..db6d7c1 100644 --- a/server/api/canned_answer/canned_answer.controller.js +++ b/server/api/canned_answer/canned_answer.controller.js @@ -1,131 +1 @@ -/** - * Using Rails-like standard naming convention for endpoints. - * GET /api/answers -> index - * POST /api/answers -> create - * GET /api/answers/:id -> show - * PUT /api/answers/:id -> update - * DELETE /api/answers/:id -> destroy - */ - -'use strict'; - - -var _ = require('lodash'); -var Util = require('../../config/util'); - -var CannedAnswer = require('../../models').CannedAnswer; - - -function handleError(res, statusCode) { - statusCode = statusCode || 500; - return function(err) { - res.status(statusCode).send(err); - }; -} - -function responseWithResult(res, statusCode) { - statusCode = statusCode || 200; - return function(entity) { - if (entity) { - res.status(statusCode).json(entity); - } - }; -} - -function handleEntityNotFound(res) { - return function(entity) { - if (!entity) { - res.status(404).end(); - return null; - } - return entity; - }; -} - -function saveUpdates(updates) { - return function(entity) { - return entity.updateAttributes(updates) - .then(function(updated) { - return updated; - }); - }; -} - -function removeEntity(res) { - return function(entity) { - if (entity) { - return entity.destroy() - .then(function() { - res.status(204).end(); - }); - } - }; -} - -// Get list of agents -exports.index = function(req, res, next) { - return CannedAnswer - .findAndCountAll(Util.getQuery(req.query)) - .then(function(result) { - res.status(200).send(result); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -// Gets a single CannedAnswer from the DB -exports.show = function(req, res) { - return CannedAnswer - .findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Creates a new CannedAnswer in the DB -exports.create = function(req, res) { - CannedAnswer.create(req.body) - .then(responseWithResult(res, 201)) - .catch(handleError(res)); -} - -// Updates an existing CannedAnswer in the DB -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - return CannedAnswer - .findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(saveUpdates(req.body)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Deletes a CannedAnswer from the DB -exports.destroy = function(req, res) { - return CannedAnswer - .findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(removeEntity(res)) - .catch(handleError(res)); -} - -// Deletes a agent from the DB. -exports.bulkDestroy = function(req, res) { - return CannedAnswer - .destroy({ - where: { - id: req.query.ids - }, - individualHooks: true - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; +var _0xca40=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x43\x61\x6E\x6E\x65\x64\x41\x6E\x73\x77\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x6A\x73\x6F\x6E","\x65\x6E\x64","\x74\x68\x65\x6E","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x64\x65\x73\x74\x72\x6F\x79","\x69\x6E\x64\x65\x78","\x6C\x6F\x67","\x63\x61\x74\x63\x68","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x73\x68\x6F\x77","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64\x73"];_0xca40[0];var _=require(_0xca40[1]);var Util=require(_0xca40[2]);var CannedAnswer=require(_0xca40[4])[_0xca40[3]];function handleError(_0x4a8ax5,_0x4a8ax6){_0x4a8ax6= _0x4a8ax6|| 500;return function(_0x4a8ax7){_0x4a8ax5[_0xca40[6]](_0x4a8ax6)[_0xca40[5]](_0x4a8ax7)}}function responseWithResult(_0x4a8ax5,_0x4a8ax6){_0x4a8ax6= _0x4a8ax6|| 200;return function(_0x4a8ax9){if(_0x4a8ax9){_0x4a8ax5[_0xca40[6]](_0x4a8ax6)[_0xca40[7]](_0x4a8ax9)}}}function handleEntityNotFound(_0x4a8ax5){return function(_0x4a8ax9){if(!_0x4a8ax9){_0x4a8ax5[_0xca40[6]](404)[_0xca40[8]]();return null};return _0x4a8ax9}}function saveUpdates(_0x4a8axc){return function(_0x4a8ax9){return _0x4a8ax9[_0xca40[10]](_0x4a8axc)[_0xca40[9]](function(_0x4a8axd){return _0x4a8axd})}}function removeEntity(_0x4a8ax5){return function(_0x4a8ax9){if(_0x4a8ax9){return _0x4a8ax9[_0xca40[11]]()[_0xca40[9]](function(){_0x4a8ax5[_0xca40[6]](204)[_0xca40[8]]()})}}}exports[_0xca40[12]]= function(_0x4a8axf,_0x4a8ax5,_0x4a8ax10){return CannedAnswer[_0xca40[17]](Util[_0xca40[16]](_0x4a8axf[_0xca40[15]]))[_0xca40[9]](function(_0x4a8ax11){_0x4a8ax5[_0xca40[6]](200)[_0xca40[5]](_0x4a8ax11)})[_0xca40[14]](function(_0x4a8ax7){console[_0xca40[13]](_0x4a8ax7);return handleError(_0x4a8ax5,_0x4a8ax7)})};exports[_0xca40[18]]= function(_0x4a8axf,_0x4a8ax5){return CannedAnswer[_0xca40[21]](_0x4a8axf[_0xca40[20]][_0xca40[19]])[_0xca40[9]](handleEntityNotFound(_0x4a8ax5))[_0xca40[9]](responseWithResult(_0x4a8ax5))[_0xca40[14]](handleError(_0x4a8ax5))};exports[_0xca40[22]]= function(_0x4a8axf,_0x4a8ax5){CannedAnswer[_0xca40[22]](_0x4a8axf[_0xca40[23]])[_0xca40[9]](responseWithResult(_0x4a8ax5,201))[_0xca40[14]](handleError(_0x4a8ax5))};exports[_0xca40[24]]= function(_0x4a8axf,_0x4a8ax5){if(_0x4a8axf[_0xca40[23]][_0xca40[19]]){delete _0x4a8axf[_0xca40[23]][_0xca40[19]]};return CannedAnswer[_0xca40[21]](_0x4a8axf[_0xca40[20]][_0xca40[19]])[_0xca40[9]](handleEntityNotFound(_0x4a8ax5))[_0xca40[9]](saveUpdates(_0x4a8axf[_0xca40[23]]))[_0xca40[9]](responseWithResult(_0x4a8ax5))[_0xca40[14]](handleError(_0x4a8ax5))};exports[_0xca40[11]]= function(_0x4a8axf,_0x4a8ax5){return CannedAnswer[_0xca40[21]](_0x4a8axf[_0xca40[20]][_0xca40[19]])[_0xca40[9]](handleEntityNotFound(_0x4a8ax5))[_0xca40[9]](removeEntity(_0x4a8ax5))[_0xca40[14]](handleError(_0x4a8ax5))};exports[_0xca40[25]]= function(_0x4a8axf,_0x4a8ax5){return CannedAnswer[_0xca40[11]]({where:{id:_0x4a8axf[_0xca40[15]][_0xca40[27]]},individualHooks:true})[_0xca40[9]](function(){return _0x4a8ax5[_0xca40[26]](204)})[_0xca40[14]](function(_0x4a8ax7){return handleError(_0x4a8ax5,_0x4a8ax7)})} \ No newline at end of file diff --git a/server/api/canned_answer/canned_answer.events.js b/server/api/canned_answer/canned_answer.events.js index cc2c85e..d722215 100644 --- a/server/api/canned_answer/canned_answer.events.js +++ b/server/api/canned_answer/canned_answer.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const CannedAnswer = require('../../models').CannedAnswer; - -var CannedAnswerEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -CannedAnswerEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - CannedAnswer.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - CannedAnswerEvents.emit(event + ':' + doc._id, doc); - CannedAnswerEvents.emit(event, doc); - done(null); - } -} - -module.exports = CannedAnswerEvents; +var _0x77a6=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x43\x61\x6E\x6E\x65\x64\x41\x6E\x73\x77\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x77a6[0];const EventEmitter=require(_0x77a6[1]);const CannedAnswer=require(_0x77a6[3])[_0x77a6[2]];var CannedAnswerEvents= new EventEmitter();CannedAnswerEvents[_0x77a6[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x77a6[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x77a6[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x77a6[6]};for(var e in events){var event=events[e];CannedAnswer[_0x77a6[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x689ex8,_0x689ex9,_0x689exa){CannedAnswerEvents[_0x77a6[10]](event+ _0x77a6[8]+ _0x689ex8[_0x77a6[9]],_0x689ex8);CannedAnswerEvents[_0x77a6[10]](event,_0x689ex8);_0x689exa(null)}}module[_0x77a6[11]]= CannedAnswerEvents \ No newline at end of file diff --git a/server/api/canned_answer/canned_answer.socket.js b/server/api/canned_answer/canned_answer.socket.js index ce308fc..319b979 100644 --- a/server/api/canned_answer/canned_answer.socket.js +++ b/server/api/canned_answer/canned_answer.socket.js @@ -1,28 +1 @@ -'use strict'; - -const CannedAnswerEvents = require('./canned_answer.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('canned_answer:' + event, socket); - - CannedAnswerEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - CannedAnswerEvents.removeListener(event, listener); - }; -} +var _0x39e1=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x63\x61\x6E\x6E\x65\x64\x5F\x61\x6E\x73\x77\x65\x72\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x63\x61\x6E\x6E\x65\x64\x5F\x61\x6E\x73\x77\x65\x72\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x39e1[0];const CannedAnswerEvents=require(_0x39e1[1]);var events=[_0x39e1[2],_0x39e1[3]];exports[_0x39e1[4]]= function(_0xd3c2x3){for(var _0xd3c2x4=0,_0xd3c2x5=events[_0x39e1[5]];_0xd3c2x4< _0xd3c2x5;_0xd3c2x4++){var _0xd3c2x6=events[_0xd3c2x4];var _0xd3c2x7=createListener(_0x39e1[6]+ _0xd3c2x6,_0xd3c2x3);CannedAnswerEvents[_0x39e1[7]](_0xd3c2x6,_0xd3c2x7);_0xd3c2x3[_0x39e1[7]](_0x39e1[8],removeListener(_0xd3c2x6,_0xd3c2x7))}};function createListener(_0xd3c2x6,_0xd3c2x3){return function(_0xd3c2x9){_0xd3c2x3[_0x39e1[9]](_0xd3c2x6,_0xd3c2x9)}}function removeListener(_0xd3c2x6,_0xd3c2x7){return function(){CannedAnswerEvents[_0x39e1[10]](_0xd3c2x6,_0xd3c2x7)}} \ No newline at end of file diff --git a/server/api/canned_answer/index.js b/server/api/canned_answer/index.js index e01ee26..b5c38d2 100644 --- a/server/api/canned_answer/index.js +++ b/server/api/canned_answer/index.js @@ -1,16 +1 @@ -'use strict'; - -var express = require('express'); -var auth = require('../../auth/auth.service'); -var controller = require('./canned_answer.controller'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), auth.hasModule([13], ['admin', 'agent']), controller.index); -router.get('/:id', auth.isAuthenticated(), auth.hasModule([13], ['admin']), controller.show); -router.post('/', auth.isAuthenticated(), auth.hasModule([13], ['admin']), controller.create); -router.put('/:id', auth.isAuthenticated(), auth.hasModule([13], ['admin']), controller.update); -router.delete('/', auth.isAuthenticated(), auth.hasModule([13], ['admin']), controller.bulkDestroy); -router.delete('/:id', auth.isAuthenticated(), auth.hasModule([13], ['admin']), controller.destroy); - -module.exports = router; +var _0xab71=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x63\x61\x6E\x6E\x65\x64\x5F\x61\x6E\x73\x77\x65\x72\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0xab71[0];var express=require(_0xab71[1]);var auth=require(_0xab71[2]);var controller=require(_0xab71[3]);var router=express.Router();router[_0xab71[10]](_0xab71[4],auth[_0xab71[5]](),auth[_0xab71[8]]([13],[_0xab71[6],_0xab71[7]]),controller[_0xab71[9]]);router[_0xab71[10]](_0xab71[11],auth[_0xab71[5]](),auth[_0xab71[8]]([13],[_0xab71[6]]),controller[_0xab71[12]]);router[_0xab71[14]](_0xab71[4],auth[_0xab71[5]](),auth[_0xab71[8]]([13],[_0xab71[6]]),controller[_0xab71[13]]);router[_0xab71[16]](_0xab71[11],auth[_0xab71[5]](),auth[_0xab71[8]]([13],[_0xab71[6]]),controller[_0xab71[15]]);router[_0xab71[18]](_0xab71[4],auth[_0xab71[5]](),auth[_0xab71[8]]([13],[_0xab71[6]]),controller[_0xab71[17]]);router[_0xab71[18]](_0xab71[11],auth[_0xab71[5]](),auth[_0xab71[8]]([13],[_0xab71[6]]),controller[_0xab71[19]]);module[_0xab71[20]]= router \ No newline at end of file diff --git a/server/api/chanspy/chanspy.controller.js b/server/api/chanspy/chanspy.controller.js index e3dafb3..2eb0cad 100644 --- a/server/api/chanspy/chanspy.controller.js +++ b/server/api/chanspy/chanspy.controller.js @@ -1,107 +1 @@ -'use strict'; - -var _ = require('lodash'); -var ChanSpy = require('../../models').ChanSpy; -var Util = require('../../config/util'); - -// Get list of chanspy -exports.index = function(req, res, next) { - return ChanSpy - .findAndCountAll(Util.getQuery(req.query)) - .then(function(result) { - res.status(200).send(result); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -// Get a single chanspy -exports.show = function(req, res) { - return ChanSpy - .findById(req.params.id) - .then(function(chanspy) { - if (!chanspy) { - return res.sendStatus(404); - } - return res.send(chanspy); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Creates a new chanspy in the DB. -exports.create = function(req, res) { - return ChanSpy - .create(req.body) - .then(function(chanspy) { - return res.status(201).send(chanspy); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Updates an existing chanspy in the DB. -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - - return ChanSpy - .findById(req.params.id) - .then(function(chanspy) { - if (!chanspy) { - return res.sendStatus(404); - } - var updated = _.merge(chanspy, req.body); - return updated - .save(); - }) - .then(function(chanspy) { - return res.status(200).send(chanspy); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes a chanspy from the DB. -exports.destroy = function(req, res) { - return ChanSpy - .findById(req.params.id) - .then(function(chanspy) { - if (!chanspy) { - return res.sendStatus(404); - } - return chanspy.destroy(); - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.bulkDestroy = function(req, res) { - return ChanSpy - .destroy({ - where: { - id: req.query.ids - }, - individualHooks: true - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0xa45e=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x43\x68\x61\x6E\x53\x70\x79","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x69\x6E\x64\x65\x78","\x6C\x6F\x67","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x64\x65\x73\x74\x72\x6F\x79","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73"];_0xa45e[0];var _=require(_0xa45e[1]);var ChanSpy=require(_0xa45e[3])[_0xa45e[2]];var Util=require(_0xa45e[4]);exports[_0xa45e[5]]= function(_0x7402x4,_0x7402x5,_0x7402x6){return ChanSpy[_0xa45e[13]](Util[_0xa45e[12]](_0x7402x4[_0xa45e[11]]))[_0xa45e[10]](function(_0x7402x8){_0x7402x5[_0xa45e[9]](200)[_0xa45e[8]](_0x7402x8)})[_0xa45e[7]](function(_0x7402x7){console[_0xa45e[6]](_0x7402x7);return handleError(_0x7402x5,_0x7402x7)})};exports[_0xa45e[14]]= function(_0x7402x4,_0x7402x5){return ChanSpy[_0xa45e[18]](_0x7402x4[_0xa45e[17]][_0xa45e[16]])[_0xa45e[10]](function(_0x7402x9){if(!_0x7402x9){return _0x7402x5[_0xa45e[15]](404)};return _0x7402x5[_0xa45e[8]](_0x7402x9)})[_0xa45e[7]](function(_0x7402x7){return handleError(_0x7402x5,_0x7402x7)})};exports[_0xa45e[19]]= function(_0x7402x4,_0x7402x5){return ChanSpy[_0xa45e[19]](_0x7402x4[_0xa45e[20]])[_0xa45e[10]](function(_0x7402x9){return _0x7402x5[_0xa45e[9]](201)[_0xa45e[8]](_0x7402x9)})[_0xa45e[7]](function(_0x7402x7){return handleError(_0x7402x5,_0x7402x7)})};exports[_0xa45e[21]]= function(_0x7402x4,_0x7402x5){if(_0x7402x4[_0xa45e[20]][_0xa45e[16]]){delete _0x7402x4[_0xa45e[20]][_0xa45e[16]]};return ChanSpy[_0xa45e[18]](_0x7402x4[_0xa45e[17]][_0xa45e[16]])[_0xa45e[10]](function(_0x7402x9){if(!_0x7402x9){return _0x7402x5[_0xa45e[15]](404)};var _0x7402xa=_[_0xa45e[22]](_0x7402x9,_0x7402x4[_0xa45e[20]]);return _0x7402xa[_0xa45e[23]]()})[_0xa45e[10]](function(_0x7402x9){return _0x7402x5[_0xa45e[9]](200)[_0xa45e[8]](_0x7402x9)})[_0xa45e[7]](function(_0x7402x7){return handleError(_0x7402x5,_0x7402x7)})};exports[_0xa45e[24]]= function(_0x7402x4,_0x7402x5){return ChanSpy[_0xa45e[18]](_0x7402x4[_0xa45e[17]][_0xa45e[16]])[_0xa45e[10]](function(_0x7402x9){if(!_0x7402x9){return _0x7402x5[_0xa45e[15]](404)};return _0x7402x9[_0xa45e[24]]()})[_0xa45e[10]](function(){return _0x7402x5[_0xa45e[15]](204)})[_0xa45e[7]](function(_0x7402x7){return handleError(_0x7402x5,_0x7402x7)})};exports[_0xa45e[25]]= function(_0x7402x4,_0x7402x5){return ChanSpy[_0xa45e[24]]({where:{id:_0x7402x4[_0xa45e[11]][_0xa45e[26]]},individualHooks:true})[_0xa45e[10]](function(){return _0x7402x5[_0xa45e[15]](204)})[_0xa45e[7]](function(_0x7402x7){return handleError(_0x7402x5,_0x7402x7)})};function handleError(_0x7402x5,_0x7402x7){return _0x7402x5[_0xa45e[9]](500)[_0xa45e[8]](_0x7402x7)} \ No newline at end of file diff --git a/server/api/chanspy/chanspy.events.js b/server/api/chanspy/chanspy.events.js index 6310918..441a448 100644 --- a/server/api/chanspy/chanspy.events.js +++ b/server/api/chanspy/chanspy.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const ChanSpy = require('../../models').ChanSpy; - -var ChanSpyEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -ChanSpyEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - ChanSpy.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - ChanSpyEvents.emit(event + ':' + doc._id, doc); - ChanSpyEvents.emit(event, doc); - done(null); - } -} - -module.exports = ChanSpyEvents; +var _0x8cd6=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x43\x68\x61\x6E\x53\x70\x79","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x8cd6[0];const EventEmitter=require(_0x8cd6[1]);const ChanSpy=require(_0x8cd6[3])[_0x8cd6[2]];var ChanSpyEvents= new EventEmitter();ChanSpyEvents[_0x8cd6[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x8cd6[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x8cd6[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x8cd6[6]};for(var e in events){var event=events[e];ChanSpy[_0x8cd6[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xdfa4x8,_0xdfa4x9,_0xdfa4xa){ChanSpyEvents[_0x8cd6[10]](event+ _0x8cd6[8]+ _0xdfa4x8[_0x8cd6[9]],_0xdfa4x8);ChanSpyEvents[_0x8cd6[10]](event,_0xdfa4x8);_0xdfa4xa(null)}}module[_0x8cd6[11]]= ChanSpyEvents \ No newline at end of file diff --git a/server/api/chanspy/chanspy.socket.js b/server/api/chanspy/chanspy.socket.js index c0e03c0..c6a122e 100644 --- a/server/api/chanspy/chanspy.socket.js +++ b/server/api/chanspy/chanspy.socket.js @@ -1,28 +1 @@ -'use strict'; - -const ChanSpyEvents = require('./chanspy.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('chanspy:' + event, socket); - - ChanSpyEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - ChanSpyEvents.removeListener(event, listener); - }; -} +var _0xca44=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x63\x68\x61\x6E\x73\x70\x79\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x63\x68\x61\x6E\x73\x70\x79\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xca44[0];const ChanSpyEvents=require(_0xca44[1]);var events=[_0xca44[2],_0xca44[3]];exports[_0xca44[4]]= function(_0xc2f0x3){for(var _0xc2f0x4=0,_0xc2f0x5=events[_0xca44[5]];_0xc2f0x4< _0xc2f0x5;_0xc2f0x4++){var _0xc2f0x6=events[_0xc2f0x4];var _0xc2f0x7=createListener(_0xca44[6]+ _0xc2f0x6,_0xc2f0x3);ChanSpyEvents[_0xca44[7]](_0xc2f0x6,_0xc2f0x7);_0xc2f0x3[_0xca44[7]](_0xca44[8],removeListener(_0xc2f0x6,_0xc2f0x7))}};function createListener(_0xc2f0x6,_0xc2f0x3){return function(_0xc2f0x9){_0xc2f0x3[_0xca44[9]](_0xc2f0x6,_0xc2f0x9)}}function removeListener(_0xc2f0x6,_0xc2f0x7){return function(){ChanSpyEvents[_0xca44[10]](_0xc2f0x6,_0xc2f0x7)}} \ No newline at end of file diff --git a/server/api/chanspy/index.js b/server/api/chanspy/index.js index 597a004..e9526a3 100644 --- a/server/api/chanspy/index.js +++ b/server/api/chanspy/index.js @@ -1,16 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./chanspy.controller'); -var auth = require('../../auth/auth.service'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), auth.hasModule([7], ['admin']), controller.index); -router.get('/:id', auth.isAuthenticated(), auth.hasModule([7], ['admin']), controller.show); -router.post('/', auth.isAuthenticated(), auth.hasModule([7], ['admin']), controller.create); -router.put('/:id', auth.isAuthenticated(), auth.hasModule([7], ['admin']), controller.update); -router.delete('/', auth.isAuthenticated(), auth.hasModule([7], ['admin']), controller.bulkDestroy); -router.delete('/:id', auth.isAuthenticated(), auth.hasModule([7], ['admin']), controller.destroy); - -module.exports = router; +var _0x9b37=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x63\x68\x61\x6E\x73\x70\x79\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0x9b37[0];var express=require(_0x9b37[1]);var controller=require(_0x9b37[2]);var auth=require(_0x9b37[3]);var router=express.Router();router[_0x9b37[9]](_0x9b37[4],auth[_0x9b37[5]](),auth[_0x9b37[7]]([7],[_0x9b37[6]]),controller[_0x9b37[8]]);router[_0x9b37[9]](_0x9b37[10],auth[_0x9b37[5]](),auth[_0x9b37[7]]([7],[_0x9b37[6]]),controller[_0x9b37[11]]);router[_0x9b37[13]](_0x9b37[4],auth[_0x9b37[5]](),auth[_0x9b37[7]]([7],[_0x9b37[6]]),controller[_0x9b37[12]]);router[_0x9b37[15]](_0x9b37[10],auth[_0x9b37[5]](),auth[_0x9b37[7]]([7],[_0x9b37[6]]),controller[_0x9b37[14]]);router[_0x9b37[17]](_0x9b37[4],auth[_0x9b37[5]](),auth[_0x9b37[7]]([7],[_0x9b37[6]]),controller[_0x9b37[16]]);router[_0x9b37[17]](_0x9b37[10],auth[_0x9b37[5]](),auth[_0x9b37[7]]([7],[_0x9b37[6]]),controller[_0x9b37[18]]);module[_0x9b37[19]]= router \ No newline at end of file diff --git a/server/api/chat_application/chat_application.controller.js b/server/api/chat_application/chat_application.controller.js index cc166a1..c680ddf 100644 --- a/server/api/chat_application/chat_application.controller.js +++ b/server/api/chat_application/chat_application.controller.js @@ -1,97 +1 @@ -'use strict'; -var _ = require('lodash'); -var ChatApplication = require('../../models').ChatApplication; -// Get list of chat_applications -exports.index = function(req, res) { - return ChatApplication - .findAll({ - where: req.query, - order: 'priority', - include: [{ - all: true - }] - }) - .then(function(chat_applications) { - return res.status(200).send(chat_applications); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; -// Get a single chat_application -exports.show = function(req, res) { - return ChatApplication - .findById(req.params.id) - .then(function(chat_application) { - if (!chat_application) { - return res.sendStatus(404); - } - return res.send(chat_application); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; -// Creates a new chat_application in the DB. -exports.create = function(req, res, next) { - return ChatApplication.max('priority', { - where: { - ChatWebsiteId: req.body.ChatWebsiteId - } - }).then(function(max) { - // SET PRIORITY - req.body.priority = max ? ++max : 1; - return ChatApplication - .create(req.body); - }) - .then(function(mailApplication) { - return res.status(201).send(mailApplication); - }) - .catch(function(err) { - next(err); - }); -}; -// Updates an existing chat_application in the DB. -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - return ChatApplication - .findById(req.params.id) - .then(function(chat_application) { - if (!chat_application) { - return res.sendStatus(404); - } - var updated = _.merge(chat_application, req.body); - return updated - .save(); - }) - .then(function(chat_application) { - return res.status(200).send(chat_application); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; -// Deletes a chat_application from the DB. -exports.destroy = function(req, res) { - return ChatApplication - .findById(req.params.id) - .then(function(chat_application) { - if (!chat_application) { - return res.sendStatus(404); - } - return chat_application - .destroy(); - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0x987d=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x43\x68\x61\x74\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x70\x72\x69\x6F\x72\x69\x74\x79","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x43\x68\x61\x74\x57\x65\x62\x73\x69\x74\x65\x49\x64","\x6D\x61\x78","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x64\x65\x73\x74\x72\x6F\x79"];_0x987d[0];var _=require(_0x987d[1]);var ChatApplication=require(_0x987d[3])[_0x987d[2]];exports[_0x987d[4]]= function(_0xf571x3,_0xf571x4){return ChatApplication[_0x987d[11]]({where:_0xf571x3[_0x987d[9]],order:_0x987d[10],include:[{all:true}]})[_0x987d[8]](function(_0xf571x6){return _0xf571x4[_0x987d[7]](200)[_0x987d[6]](_0xf571x6)})[_0x987d[5]](function(_0xf571x5){return handleError(_0xf571x4,_0xf571x5)})};exports[_0x987d[12]]= function(_0xf571x3,_0xf571x4){return ChatApplication[_0x987d[16]](_0xf571x3[_0x987d[15]][_0x987d[14]])[_0x987d[8]](function(_0xf571x7){if(!_0xf571x7){return _0xf571x4[_0x987d[13]](404)};return _0xf571x4[_0x987d[6]](_0xf571x7)})[_0x987d[5]](function(_0xf571x5){return handleError(_0xf571x4,_0xf571x5)})};exports[_0x987d[17]]= function(_0xf571x3,_0xf571x4,_0xf571x8){return ChatApplication[_0x987d[20]](_0x987d[10],{where:{ChatWebsiteId:_0xf571x3[_0x987d[18]][_0x987d[19]]}})[_0x987d[8]](function(_0xf571xa){_0xf571x3[_0x987d[18]][_0x987d[10]]= _0xf571xa?++_0xf571xa:1;return ChatApplication[_0x987d[17]](_0xf571x3[_0x987d[18]])})[_0x987d[8]](function(_0xf571x9){return _0xf571x4[_0x987d[7]](201)[_0x987d[6]](_0xf571x9)})[_0x987d[5]](function(_0xf571x5){_0xf571x8(_0xf571x5)})};exports[_0x987d[21]]= function(_0xf571x3,_0xf571x4){if(_0xf571x3[_0x987d[18]][_0x987d[14]]){delete _0xf571x3[_0x987d[18]][_0x987d[14]]};return ChatApplication[_0x987d[16]](_0xf571x3[_0x987d[15]][_0x987d[14]])[_0x987d[8]](function(_0xf571x7){if(!_0xf571x7){return _0xf571x4[_0x987d[13]](404)};var _0xf571xb=_[_0x987d[22]](_0xf571x7,_0xf571x3[_0x987d[18]]);return _0xf571xb[_0x987d[23]]()})[_0x987d[8]](function(_0xf571x7){return _0xf571x4[_0x987d[7]](200)[_0x987d[6]](_0xf571x7)})[_0x987d[5]](function(_0xf571x5){return handleError(_0xf571x4,_0xf571x5)})};exports[_0x987d[24]]= function(_0xf571x3,_0xf571x4){return ChatApplication[_0x987d[16]](_0xf571x3[_0x987d[15]][_0x987d[14]])[_0x987d[8]](function(_0xf571x7){if(!_0xf571x7){return _0xf571x4[_0x987d[13]](404)};return _0xf571x7[_0x987d[24]]()})[_0x987d[8]](function(){return _0xf571x4[_0x987d[13]](204)})[_0x987d[5]](function(_0xf571x5){return handleError(_0xf571x4,_0xf571x5)})};function handleError(_0xf571x4,_0xf571x5){return _0xf571x4[_0x987d[7]](500)[_0x987d[6]](_0xf571x5)} \ No newline at end of file diff --git a/server/api/chat_application/chat_application.events.js b/server/api/chat_application/chat_application.events.js index 25f766a..2ee58a9 100644 --- a/server/api/chat_application/chat_application.events.js +++ b/server/api/chat_application/chat_application.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const ChatApplication = require('../../models').ChatApplication; - -var ChatApplicationEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -ChatApplicationEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - ChatApplication.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - ChatApplicationEvents.emit(event + ':' + doc._id, doc); - ChatApplicationEvents.emit(event, doc); - done(null); - } -} - -module.exports = ChatApplicationEvents; +var _0x1027=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x43\x68\x61\x74\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x1027[0];const EventEmitter=require(_0x1027[1]);const ChatApplication=require(_0x1027[3])[_0x1027[2]];var ChatApplicationEvents= new EventEmitter();ChatApplicationEvents[_0x1027[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x1027[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x1027[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x1027[6]};for(var e in events){var event=events[e];ChatApplication[_0x1027[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x7f74x8,_0x7f74x9,_0x7f74xa){ChatApplicationEvents[_0x1027[10]](event+ _0x1027[8]+ _0x7f74x8[_0x1027[9]],_0x7f74x8);ChatApplicationEvents[_0x1027[10]](event,_0x7f74x8);_0x7f74xa(null)}}module[_0x1027[11]]= ChatApplicationEvents \ No newline at end of file diff --git a/server/api/chat_application/chat_application.socket.js b/server/api/chat_application/chat_application.socket.js index 1e82b2e..47cbbb0 100644 --- a/server/api/chat_application/chat_application.socket.js +++ b/server/api/chat_application/chat_application.socket.js @@ -1,28 +1 @@ -'use strict'; - -const ChatApplicationEvents = require('./chat_application.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('chat_application:' + event, socket); - - ChatApplicationEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - ChatApplicationEvents.removeListener(event, listener); - }; -} +var _0x1ca1=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x63\x68\x61\x74\x5F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x63\x68\x61\x74\x5F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x1ca1[0];const ChatApplicationEvents=require(_0x1ca1[1]);var events=[_0x1ca1[2],_0x1ca1[3]];exports[_0x1ca1[4]]= function(_0x4894x3){for(var _0x4894x4=0,_0x4894x5=events[_0x1ca1[5]];_0x4894x4< _0x4894x5;_0x4894x4++){var _0x4894x6=events[_0x4894x4];var _0x4894x7=createListener(_0x1ca1[6]+ _0x4894x6,_0x4894x3);ChatApplicationEvents[_0x1ca1[7]](_0x4894x6,_0x4894x7);_0x4894x3[_0x1ca1[7]](_0x1ca1[8],removeListener(_0x4894x6,_0x4894x7))}};function createListener(_0x4894x6,_0x4894x3){return function(_0x4894x9){_0x4894x3[_0x1ca1[9]](_0x4894x6,_0x4894x9)}}function removeListener(_0x4894x6,_0x4894x7){return function(){ChatApplicationEvents[_0x1ca1[10]](_0x4894x6,_0x4894x7)}} \ No newline at end of file diff --git a/server/api/chat_application/index.js b/server/api/chat_application/index.js index d72780d..5632bd2 100644 --- a/server/api/chat_application/index.js +++ b/server/api/chat_application/index.js @@ -1,17 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./chat_application.controller'); -var license = require('../../config/license/license.service'); -var auth = require('../../auth/auth.service'); - -var router = express.Router(); - -router.get('/', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.index); -router.get('/:id', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.show); -router.post('/', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.create); -router.put('/:id', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.update); -router.patch('/:id', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.update); -router.delete('/:id', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.destroy); - -module.exports = router; +var _0x7df0=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x63\x68\x61\x74\x5F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x68\x61\x73\x43\x68\x61\x74","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x70\x61\x74\x63\x68","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0x7df0[0];var express=require(_0x7df0[1]);var controller=require(_0x7df0[2]);var license=require(_0x7df0[3]);var auth=require(_0x7df0[4]);var router=express.Router();router[_0x7df0[12]](_0x7df0[5],license[_0x7df0[6]](),license[_0x7df0[7]](),auth[_0x7df0[8]](),auth[_0x7df0[10]]([8],[_0x7df0[9]]),controller[_0x7df0[11]]);router[_0x7df0[12]](_0x7df0[13],license[_0x7df0[6]](),license[_0x7df0[7]](),auth[_0x7df0[8]](),auth[_0x7df0[10]]([8],[_0x7df0[9]]),controller[_0x7df0[14]]);router[_0x7df0[16]](_0x7df0[5],license[_0x7df0[6]](),license[_0x7df0[7]](),auth[_0x7df0[8]](),auth[_0x7df0[10]]([8],[_0x7df0[9]]),controller[_0x7df0[15]]);router[_0x7df0[18]](_0x7df0[13],license[_0x7df0[6]](),license[_0x7df0[7]](),auth[_0x7df0[8]](),auth[_0x7df0[10]]([8],[_0x7df0[9]]),controller[_0x7df0[17]]);router[_0x7df0[19]](_0x7df0[13],license[_0x7df0[6]](),license[_0x7df0[7]](),auth[_0x7df0[8]](),auth[_0x7df0[10]]([8],[_0x7df0[9]]),controller[_0x7df0[17]]);router[_0x7df0[21]](_0x7df0[13],license[_0x7df0[6]](),license[_0x7df0[7]](),auth[_0x7df0[8]](),auth[_0x7df0[10]]([8],[_0x7df0[9]]),controller[_0x7df0[20]]);module[_0x7df0[22]]= router \ No newline at end of file diff --git a/server/api/chat_disposition/chat_disposition.controller.js b/server/api/chat_disposition/chat_disposition.controller.js index 4902da1..86a6a38 100644 --- a/server/api/chat_disposition/chat_disposition.controller.js +++ b/server/api/chat_disposition/chat_disposition.controller.js @@ -1,111 +1 @@ -/** - * Using Rails-like standard naming convention for endpoints. - * GET /api/chat/dispositions -> index - * POST /api/chat/dispositions -> create - * GET /api/chat/dispositions/:id -> show - * PUT /api/chat/dispositions/:id -> update - * DELETE /api/chat/dispositions/:id -> destroy - */ - -'use strict'; - - -var _ = require('lodash'); - -var ChatDisposition = require('../../models').ChatDisposition; - - -function handleError(res, statusCode) { - statusCode = statusCode || 500; - return function(err) { - res.status(statusCode).send(err); - }; -} - -function responseWithResult(res, statusCode) { - statusCode = statusCode || 200; - return function(entity) { - if (entity) { - res.status(statusCode).json(entity); - } - }; -} - -function responseWithoutResult(res, statusCode) { - statusCode = statusCode || 200; - return function() { - res.sendStatus(statusCode); - }; -} - -function handleEntityNotFound(res) { - return function(entity) { - if (!entity) { - res.status(404).end(); - return null; - } - return entity; - }; -} - -function saveUpdates(updates) { - return function(entity) { - return entity.updateAttributes(updates) - .then(function(updated) { - return updated; - }); - }; -} - -function removeEntity(res) { - return function(entity) { - if (entity) { - return entity.destroy() - .then(function() { - res.status(204).end(); - }); - } - }; -} - -// Gets a list of ChatDispositions -exports.index = function(req, res) { - ChatDisposition.findAndCountAll() - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Gets a single ChatDisposition from the DB -exports.show = function(req, res) { - ChatDisposition.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Creates a new ChatDisposition in the DB -exports.create = function(req, res) { - ChatDisposition.create(req.body) - .then(responseWithResult(res, 201)) - .catch(handleError(res)); -} - -// Updates an existing ChatDisposition in the DB -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - ChatDisposition.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(saveUpdates(req.body)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Deletes a ChatDisposition from the DB -exports.destroy = function(req, res) { - ChatDisposition.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(removeEntity(res)) - .catch(handleError(res)); -} +var _0xb1df=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x43\x68\x61\x74\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x6A\x73\x6F\x6E","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x65\x6E\x64","\x74\x68\x65\x6E","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x64\x65\x73\x74\x72\x6F\x79","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x73\x68\x6F\x77","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65"];_0xb1df[0];var _=require(_0xb1df[1]);var ChatDisposition=require(_0xb1df[3])[_0xb1df[2]];function handleError(_0xb267x4,_0xb267x5){_0xb267x5= _0xb267x5|| 500;return function(_0xb267x6){_0xb267x4[_0xb1df[5]](_0xb267x5)[_0xb1df[4]](_0xb267x6)}}function responseWithResult(_0xb267x4,_0xb267x5){_0xb267x5= _0xb267x5|| 200;return function(_0xb267x8){if(_0xb267x8){_0xb267x4[_0xb1df[5]](_0xb267x5)[_0xb1df[6]](_0xb267x8)}}}function responseWithoutResult(_0xb267x4,_0xb267x5){_0xb267x5= _0xb267x5|| 200;return function(){_0xb267x4[_0xb1df[7]](_0xb267x5)}}function handleEntityNotFound(_0xb267x4){return function(_0xb267x8){if(!_0xb267x8){_0xb267x4[_0xb1df[5]](404)[_0xb1df[8]]();return null};return _0xb267x8}}function saveUpdates(_0xb267xc){return function(_0xb267x8){return _0xb267x8[_0xb1df[10]](_0xb267xc)[_0xb1df[9]](function(_0xb267xd){return _0xb267xd})}}function removeEntity(_0xb267x4){return function(_0xb267x8){if(_0xb267x8){return _0xb267x8[_0xb1df[11]]()[_0xb1df[9]](function(){_0xb267x4[_0xb1df[5]](204)[_0xb1df[8]]()})}}}exports[_0xb1df[12]]= function(_0xb267xf,_0xb267x4){ChatDisposition[_0xb1df[14]]()[_0xb1df[9]](responseWithResult(_0xb267x4))[_0xb1df[13]](handleError(_0xb267x4))};exports[_0xb1df[15]]= function(_0xb267xf,_0xb267x4){ChatDisposition[_0xb1df[18]](_0xb267xf[_0xb1df[17]][_0xb1df[16]])[_0xb1df[9]](handleEntityNotFound(_0xb267x4))[_0xb1df[9]](responseWithResult(_0xb267x4))[_0xb1df[13]](handleError(_0xb267x4))};exports[_0xb1df[19]]= function(_0xb267xf,_0xb267x4){ChatDisposition[_0xb1df[19]](_0xb267xf[_0xb1df[20]])[_0xb1df[9]](responseWithResult(_0xb267x4,201))[_0xb1df[13]](handleError(_0xb267x4))};exports[_0xb1df[21]]= function(_0xb267xf,_0xb267x4){if(_0xb267xf[_0xb1df[20]][_0xb1df[16]]){delete _0xb267xf[_0xb1df[20]][_0xb1df[16]]};ChatDisposition[_0xb1df[18]](_0xb267xf[_0xb1df[17]][_0xb1df[16]])[_0xb1df[9]](handleEntityNotFound(_0xb267x4))[_0xb1df[9]](saveUpdates(_0xb267xf[_0xb1df[20]]))[_0xb1df[9]](responseWithResult(_0xb267x4))[_0xb1df[13]](handleError(_0xb267x4))};exports[_0xb1df[11]]= function(_0xb267xf,_0xb267x4){ChatDisposition[_0xb1df[18]](_0xb267xf[_0xb1df[17]][_0xb1df[16]])[_0xb1df[9]](handleEntityNotFound(_0xb267x4))[_0xb1df[9]](removeEntity(_0xb267x4))[_0xb1df[13]](handleError(_0xb267x4))} \ No newline at end of file diff --git a/server/api/chat_disposition/chat_disposition.events.js b/server/api/chat_disposition/chat_disposition.events.js index ec5fd9d..478c786 100644 --- a/server/api/chat_disposition/chat_disposition.events.js +++ b/server/api/chat_disposition/chat_disposition.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const ChatDisposition = require('../../models').ChatDisposition; - -var ChatDispositionEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -ChatDispositionEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - ChatDisposition.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - ChatDispositionEvents.emit(event + ':' + doc._id, doc); - ChatDispositionEvents.emit(event, doc); - done(null); - } -} - -module.exports = ChatDispositionEvents; +var _0xafa5=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x43\x68\x61\x74\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xafa5[0];const EventEmitter=require(_0xafa5[1]);const ChatDisposition=require(_0xafa5[3])[_0xafa5[2]];var ChatDispositionEvents= new EventEmitter();ChatDispositionEvents[_0xafa5[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xafa5[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xafa5[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xafa5[6]};for(var e in events){var event=events[e];ChatDisposition[_0xafa5[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x1edex8,_0x1edex9,_0x1edexa){ChatDispositionEvents[_0xafa5[10]](event+ _0xafa5[8]+ _0x1edex8[_0xafa5[9]],_0x1edex8);ChatDispositionEvents[_0xafa5[10]](event,_0x1edex8);_0x1edexa(null)}}module[_0xafa5[11]]= ChatDispositionEvents \ No newline at end of file diff --git a/server/api/chat_disposition/chat_disposition.socket.js b/server/api/chat_disposition/chat_disposition.socket.js index 8788c23..d53030f 100644 --- a/server/api/chat_disposition/chat_disposition.socket.js +++ b/server/api/chat_disposition/chat_disposition.socket.js @@ -1,32 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const ChatDispositionEvents = require('./chat_disposition.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('chat_disposition:' + event, socket); - - ChatDispositionEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - ChatDispositionEvents.removeListener(event, listener); - }; -} +var _0xeb8f=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x63\x68\x61\x74\x5F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x63\x68\x61\x74\x5F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xeb8f[0];const ChatDispositionEvents=require(_0xeb8f[1]);var events=[_0xeb8f[2],_0xeb8f[3]];exports[_0xeb8f[4]]= function(_0x9770x3){for(var _0x9770x4=0,_0x9770x5=events[_0xeb8f[5]];_0x9770x4< _0x9770x5;_0x9770x4++){var _0x9770x6=events[_0x9770x4];var _0x9770x7=createListener(_0xeb8f[6]+ _0x9770x6,_0x9770x3);ChatDispositionEvents[_0xeb8f[7]](_0x9770x6,_0x9770x7);_0x9770x3[_0xeb8f[7]](_0xeb8f[8],removeListener(_0x9770x6,_0x9770x7))}};function createListener(_0x9770x6,_0x9770x3){return function(_0x9770x9){_0x9770x3[_0xeb8f[9]](_0x9770x6,_0x9770x9)}}function removeListener(_0x9770x6,_0x9770x7){return function(){ChatDispositionEvents[_0xeb8f[10]](_0x9770x6,_0x9770x7)}} \ No newline at end of file diff --git a/server/api/chat_disposition/index.js b/server/api/chat_disposition/index.js index aec3275..afdc1e6 100644 --- a/server/api/chat_disposition/index.js +++ b/server/api/chat_disposition/index.js @@ -1,18 +1 @@ -'use strict'; - -var express = require('express'); -var auth = require('../../auth/auth.service'); -var controller = require('./chat_disposition.controller'); -var license = require('../../config/license/license.service'); - -var router = express.Router(); - -router.get('/', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), controller.index); -router.get('/:id', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), controller.show); -router.post('/', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), controller.create); -router.put('/:id', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), controller.update); -router.patch('/:id', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), controller.update); -router.delete('/:id', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), controller.destroy); - - -module.exports = router; +var _0x102b=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x63\x68\x61\x74\x5F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x68\x61\x73\x43\x68\x61\x74","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x70\x61\x74\x63\x68","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0x102b[0];var express=require(_0x102b[1]);var auth=require(_0x102b[2]);var controller=require(_0x102b[3]);var license=require(_0x102b[4]);var router=express.Router();router[_0x102b[10]](_0x102b[5],license[_0x102b[6]](),license[_0x102b[7]](),auth[_0x102b[8]](),controller[_0x102b[9]]);router[_0x102b[10]](_0x102b[11],license[_0x102b[6]](),license[_0x102b[7]](),auth[_0x102b[8]](),controller[_0x102b[12]]);router[_0x102b[14]](_0x102b[5],license[_0x102b[6]](),license[_0x102b[7]](),auth[_0x102b[8]](),controller[_0x102b[13]]);router[_0x102b[16]](_0x102b[11],license[_0x102b[6]](),license[_0x102b[7]](),auth[_0x102b[8]](),controller[_0x102b[15]]);router[_0x102b[17]](_0x102b[11],license[_0x102b[6]](),license[_0x102b[7]](),auth[_0x102b[8]](),controller[_0x102b[15]]);router[_0x102b[19]](_0x102b[11],license[_0x102b[6]](),license[_0x102b[7]](),auth[_0x102b[8]](),controller[_0x102b[18]]);module[_0x102b[20]]= router \ No newline at end of file diff --git a/server/api/chat_enquiry/enquiry.controller.js b/server/api/chat_enquiry/enquiry.controller.js index 0adc0f6..00fa148 100644 --- a/server/api/chat_enquiry/enquiry.controller.js +++ b/server/api/chat_enquiry/enquiry.controller.js @@ -1,123 +1 @@ -'use strict'; - -var _ = require('lodash'); -var Util = require('../../config/util'); - -var ChatEnquiry = require('../../models').ChatEnquiry; -var ChatVisitor = require('../../models').ChatVisitor; -var ChatWebsite = require('../../models').ChatWebsite; -var List = require('../../models').List; - -// Get list of agents -exports.index = function(req, res, next) { - return ChatEnquiry - .findAndCountAll(_.merge(Util.getQuery(req.query), { - include: [{ - model: ChatWebsite, - attributes: ['id', 'name'] - }] - })) - .then(function(result) { - return res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get a single enquiry -exports.show = function(req, res) { - return ChatEnquiry - .findById(req.params.id, { - include: [{ - model: ChatWebsite, - attributes: ['id', 'name', 'ListId'], - }, { - model: ChatVisitor - }] - }) - .then(function(enquiry) { - if (!enquiry) { - return res.sendStatus(404); - } - return res.send(enquiry); - }) - .catch(function(err) { - console.error(err); - return handleError(res, err); - }); -}; - -// Creates a new enquiry in the DB. -exports.create = function(req, res) { - return ChatEnquiry - .create(req.body) - .then(function(enquiry) { - return res.status(201).send(enquiry); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Updates an existing enquiry in the DB. -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - return ChatEnquiry - .findById(req.params.id) - .then(function(enquiry) { - if (!enquiry) { - return res.sendStatus(404); - } - var updated = _.merge(enquiry, req.body); - return updated - .save(); - }) - .then(function(enquiry) { - return res.status(200).send(enquiry); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes a enquiry from the DB. -exports.destroy = function(req, res) { - return ChatEnquiry - .findById(req.params.id) - .then(function(enquiry) { - if (!enquiry) { - return res.sendStatus(404); - } - return enquiry - .destroy(); - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.bulkDestroy = function(req, res) { - return ChatEnquiry - .destroy({ - where: { - id: req.query.ids - }, - individualHooks: true - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0xe885=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x43\x68\x61\x74\x45\x6E\x71\x75\x69\x72\x79","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x43\x68\x61\x74\x56\x69\x73\x69\x74\x6F\x72","\x43\x68\x61\x74\x57\x65\x62\x73\x69\x74\x65","\x4C\x69\x73\x74","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x69\x64","\x6E\x61\x6D\x65","\x6D\x65\x72\x67\x65","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x73\x68\x6F\x77","\x65\x72\x72\x6F\x72","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x70\x61\x72\x61\x6D\x73","\x4C\x69\x73\x74\x49\x64","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x73\x61\x76\x65","\x64\x65\x73\x74\x72\x6F\x79","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73"];_0xe885[0];var _=require(_0xe885[1]);var Util=require(_0xe885[2]);var ChatEnquiry=require(_0xe885[4])[_0xe885[3]];var ChatVisitor=require(_0xe885[4])[_0xe885[5]];var ChatWebsite=require(_0xe885[4])[_0xe885[6]];var List=require(_0xe885[4])[_0xe885[7]];exports[_0xe885[8]]= function(_0xe608x7,_0xe608x8,_0xe608x9){return ChatEnquiry[_0xe885[18]](_[_0xe885[17]](Util[_0xe885[14]](_0xe608x7[_0xe885[13]]),{include:[{model:ChatWebsite,attributes:[_0xe885[15],_0xe885[16]]}]}))[_0xe885[12]](function(_0xe608xb){return _0xe608x8[_0xe885[11]](200)[_0xe885[10]](_0xe608xb)})[_0xe885[9]](function(_0xe608xa){return handleError(_0xe608x8,_0xe608xa)})};exports[_0xe885[19]]= function(_0xe608x7,_0xe608x8){return ChatEnquiry[_0xe885[24]](_0xe608x7[_0xe885[22]][_0xe885[15]],{include:[{model:ChatWebsite,attributes:[_0xe885[15],_0xe885[16],_0xe885[23]]},{model:ChatVisitor}]})[_0xe885[12]](function(_0xe608xc){if(!_0xe608xc){return _0xe608x8[_0xe885[21]](404)};return _0xe608x8[_0xe885[10]](_0xe608xc)})[_0xe885[9]](function(_0xe608xa){console[_0xe885[20]](_0xe608xa);return handleError(_0xe608x8,_0xe608xa)})};exports[_0xe885[25]]= function(_0xe608x7,_0xe608x8){return ChatEnquiry[_0xe885[25]](_0xe608x7[_0xe885[26]])[_0xe885[12]](function(_0xe608xc){return _0xe608x8[_0xe885[11]](201)[_0xe885[10]](_0xe608xc)})[_0xe885[9]](function(_0xe608xa){return handleError(_0xe608x8,_0xe608xa)})};exports[_0xe885[27]]= function(_0xe608x7,_0xe608x8){if(_0xe608x7[_0xe885[26]][_0xe885[15]]){delete _0xe608x7[_0xe885[26]][_0xe885[15]]};return ChatEnquiry[_0xe885[24]](_0xe608x7[_0xe885[22]][_0xe885[15]])[_0xe885[12]](function(_0xe608xc){if(!_0xe608xc){return _0xe608x8[_0xe885[21]](404)};var _0xe608xd=_[_0xe885[17]](_0xe608xc,_0xe608x7[_0xe885[26]]);return _0xe608xd[_0xe885[28]]()})[_0xe885[12]](function(_0xe608xc){return _0xe608x8[_0xe885[11]](200)[_0xe885[10]](_0xe608xc)})[_0xe885[9]](function(_0xe608xa){return handleError(_0xe608x8,_0xe608xa)})};exports[_0xe885[29]]= function(_0xe608x7,_0xe608x8){return ChatEnquiry[_0xe885[24]](_0xe608x7[_0xe885[22]][_0xe885[15]])[_0xe885[12]](function(_0xe608xc){if(!_0xe608xc){return _0xe608x8[_0xe885[21]](404)};return _0xe608xc[_0xe885[29]]()})[_0xe885[12]](function(){return _0xe608x8[_0xe885[21]](204)})[_0xe885[9]](function(_0xe608xa){return handleError(_0xe608x8,_0xe608xa)})};exports[_0xe885[30]]= function(_0xe608x7,_0xe608x8){return ChatEnquiry[_0xe885[29]]({where:{id:_0xe608x7[_0xe885[13]][_0xe885[31]]},individualHooks:true})[_0xe885[12]](function(){return _0xe608x8[_0xe885[21]](204)})[_0xe885[9]](function(_0xe608xa){return handleError(_0xe608x8,_0xe608xa)})};function handleError(_0xe608x8,_0xe608xa){return _0xe608x8[_0xe885[11]](500)[_0xe885[10]](_0xe608xa)} \ No newline at end of file diff --git a/server/api/chat_enquiry/enquiry.events.js b/server/api/chat_enquiry/enquiry.events.js index e818a2a..6639409 100644 --- a/server/api/chat_enquiry/enquiry.events.js +++ b/server/api/chat_enquiry/enquiry.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const Enquiry = require('../../models').ChatEnquiry; - -var EnquiryEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -EnquiryEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - Enquiry.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - EnquiryEvents.emit(event + ':' + doc._id, doc); - EnquiryEvents.emit(event, doc); - done(null); - } -} - -module.exports = EnquiryEvents; +var _0x25d7=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x43\x68\x61\x74\x45\x6E\x71\x75\x69\x72\x79","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x25d7[0];const EventEmitter=require(_0x25d7[1]);const Enquiry=require(_0x25d7[3])[_0x25d7[2]];var EnquiryEvents= new EventEmitter();EnquiryEvents[_0x25d7[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x25d7[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x25d7[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x25d7[6]};for(var e in events){var event=events[e];Enquiry[_0x25d7[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xc435x8,_0xc435x9,_0xc435xa){EnquiryEvents[_0x25d7[10]](event+ _0x25d7[8]+ _0xc435x8[_0x25d7[9]],_0xc435x8);EnquiryEvents[_0x25d7[10]](event,_0xc435x8);_0xc435xa(null)}}module[_0x25d7[11]]= EnquiryEvents \ No newline at end of file diff --git a/server/api/chat_enquiry/enquiry.socket.js b/server/api/chat_enquiry/enquiry.socket.js index 686f9a1..4ab4d94 100644 --- a/server/api/chat_enquiry/enquiry.socket.js +++ b/server/api/chat_enquiry/enquiry.socket.js @@ -1,28 +1 @@ -'use strict'; - -const ChatEnquiryEvents = require('./enquiry.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('enquiry:' + event, socket); - - ChatEnquiryEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - ChatEnquiryEvents.removeListener(event, listener); - }; -} +var _0x8dc9=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x65\x6E\x71\x75\x69\x72\x79\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x65\x6E\x71\x75\x69\x72\x79\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x8dc9[0];const ChatEnquiryEvents=require(_0x8dc9[1]);var events=[_0x8dc9[2],_0x8dc9[3]];exports[_0x8dc9[4]]= function(_0xacf6x3){for(var _0xacf6x4=0,_0xacf6x5=events[_0x8dc9[5]];_0xacf6x4< _0xacf6x5;_0xacf6x4++){var _0xacf6x6=events[_0xacf6x4];var _0xacf6x7=createListener(_0x8dc9[6]+ _0xacf6x6,_0xacf6x3);ChatEnquiryEvents[_0x8dc9[7]](_0xacf6x6,_0xacf6x7);_0xacf6x3[_0x8dc9[7]](_0x8dc9[8],removeListener(_0xacf6x6,_0xacf6x7))}};function createListener(_0xacf6x6,_0xacf6x3){return function(_0xacf6x9){_0xacf6x3[_0x8dc9[9]](_0xacf6x6,_0xacf6x9)}}function removeListener(_0xacf6x6,_0xacf6x7){return function(){ChatEnquiryEvents[_0x8dc9[10]](_0xacf6x6,_0xacf6x7)}} \ No newline at end of file diff --git a/server/api/chat_enquiry/index.js b/server/api/chat_enquiry/index.js index 0add885..5be25df 100644 --- a/server/api/chat_enquiry/index.js +++ b/server/api/chat_enquiry/index.js @@ -1,19 +1 @@ -'use strict'; - -var express = require('express'); - -var controller = require('./enquiry.controller'); -var license = require('../../config/license/license.service'); -var auth = require('../../auth/auth.service'); - -var router = express.Router(); - -router.get('/', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.index); -router.get('/:id', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.show); -router.post('/', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.create); -router.put('/:id', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.update); -router.patch('/:id', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.update); -router.delete('/', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.bulkDestroy); -router.delete('/:id', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.destroy); - -module.exports = router; +var _0xf0a7=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x65\x6E\x71\x75\x69\x72\x79\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x68\x61\x73\x43\x68\x61\x74","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x70\x61\x74\x63\x68","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0xf0a7[0];var express=require(_0xf0a7[1]);var controller=require(_0xf0a7[2]);var license=require(_0xf0a7[3]);var auth=require(_0xf0a7[4]);var router=express.Router();router[_0xf0a7[12]](_0xf0a7[5],license[_0xf0a7[6]](),license[_0xf0a7[7]](),auth[_0xf0a7[8]](),auth[_0xf0a7[10]]([8],[_0xf0a7[9]]),controller[_0xf0a7[11]]);router[_0xf0a7[12]](_0xf0a7[13],license[_0xf0a7[6]](),license[_0xf0a7[7]](),auth[_0xf0a7[8]](),auth[_0xf0a7[10]]([8],[_0xf0a7[9]]),controller[_0xf0a7[14]]);router[_0xf0a7[16]](_0xf0a7[5],license[_0xf0a7[6]](),license[_0xf0a7[7]](),auth[_0xf0a7[8]](),auth[_0xf0a7[10]]([8],[_0xf0a7[9]]),controller[_0xf0a7[15]]);router[_0xf0a7[18]](_0xf0a7[13],license[_0xf0a7[6]](),license[_0xf0a7[7]](),auth[_0xf0a7[8]](),auth[_0xf0a7[10]]([8],[_0xf0a7[9]]),controller[_0xf0a7[17]]);router[_0xf0a7[19]](_0xf0a7[13],license[_0xf0a7[6]](),license[_0xf0a7[7]](),auth[_0xf0a7[8]](),auth[_0xf0a7[10]]([8],[_0xf0a7[9]]),controller[_0xf0a7[17]]);router[_0xf0a7[21]](_0xf0a7[5],license[_0xf0a7[6]](),license[_0xf0a7[7]](),auth[_0xf0a7[8]](),auth[_0xf0a7[10]]([8],[_0xf0a7[9]]),controller[_0xf0a7[20]]);router[_0xf0a7[21]](_0xf0a7[13],license[_0xf0a7[6]](),license[_0xf0a7[7]](),auth[_0xf0a7[8]](),auth[_0xf0a7[10]]([8],[_0xf0a7[9]]),controller[_0xf0a7[22]]);module[_0xf0a7[23]]= router \ No newline at end of file diff --git a/server/api/chat_message/chat_message.controller.js b/server/api/chat_message/chat_message.controller.js index ac89444..3d2187d 100644 --- a/server/api/chat_message/chat_message.controller.js +++ b/server/api/chat_message/chat_message.controller.js @@ -1,106 +1 @@ -'use strict'; - -var _ = require('lodash'); -var md5 = require('md5'); - -var User = require('../../models').User; -var ChatRoom = require('../../models').ChatRoom; -var ChatMessage = require('../../models').ChatMessage; -var ChatVisitor = require('../../models').ChatVisitor; - -// Get list of chat_messages -exports.index = function(req, res) { - return ChatMessage - .findAll() - .then(function(chat_messages) { - return res.status(200).send(chat_messages); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.describe = function(req, res) { - return ChatMessage - .describe() - .then(function(fields) { - return res.status(200).send(fields); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get a single chatMessage -exports.show = function(req, res) { - return ChatMessage - .findById(req.params.id) - .then(function(chatMessage) { - if (!chatMessage) { - return res.sendStatus(404); - } - return res.send(chatMessage); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Creates a new chatMessage in the DB. -exports.create = function(req, res, next) { - return ChatMessage - .create(_.merge(req.body, { - UserId: req.user.id - })) - .then(function(chatMessage) { - return res.status(201).send(chatMessage); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Updates an existing chatMessage in the DB. -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - - return ChatMessage - .findById(req.params.id) - .then(function(chatMessage) { - if (!chatMessage) { - return res.sendStatus(404); - } - var updated = _.merge(chatMessage, req.body); - return updated.save(); - }) - .then(function(chatMessage) { - return res.status(200).send(chatMessage); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes a chatMessage from the DB. -exports.destroy = function(req, res) { - return ChatMessage - .findById(req.params.id) - .then(function(chatMessage) { - if (!chatMessage) { - return res.sendStatus(404); - } - return chatMessage.destroy(); - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0x3bc1=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x6D\x64\x35","\x55\x73\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x43\x68\x61\x74\x52\x6F\x6F\x6D","\x43\x68\x61\x74\x4D\x65\x73\x73\x61\x67\x65","\x43\x68\x61\x74\x56\x69\x73\x69\x74\x6F\x72","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x66\x69\x6E\x64\x41\x6C\x6C","\x64\x65\x73\x63\x72\x69\x62\x65","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x73\x65\x72","\x6D\x65\x72\x67\x65","\x75\x70\x64\x61\x74\x65","\x73\x61\x76\x65","\x64\x65\x73\x74\x72\x6F\x79"];_0x3bc1[0];var _=require(_0x3bc1[1]);var md5=require(_0x3bc1[2]);var User=require(_0x3bc1[4])[_0x3bc1[3]];var ChatRoom=require(_0x3bc1[4])[_0x3bc1[5]];var ChatMessage=require(_0x3bc1[4])[_0x3bc1[6]];var ChatVisitor=require(_0x3bc1[4])[_0x3bc1[7]];exports[_0x3bc1[8]]= function(_0xd97ex7,_0xd97ex8){return ChatMessage[_0x3bc1[13]]()[_0x3bc1[12]](function(_0xd97exa){return _0xd97ex8[_0x3bc1[11]](200)[_0x3bc1[10]](_0xd97exa)})[_0x3bc1[9]](function(_0xd97ex9){return handleError(_0xd97ex8,_0xd97ex9)})};exports[_0x3bc1[14]]= function(_0xd97ex7,_0xd97ex8){return ChatMessage[_0x3bc1[14]]()[_0x3bc1[12]](function(_0xd97exb){return _0xd97ex8[_0x3bc1[11]](200)[_0x3bc1[10]](_0xd97exb)})[_0x3bc1[9]](function(_0xd97ex9){return handleError(_0xd97ex8,_0xd97ex9)})};exports[_0x3bc1[15]]= function(_0xd97ex7,_0xd97ex8){return ChatMessage[_0x3bc1[19]](_0xd97ex7[_0x3bc1[18]][_0x3bc1[17]])[_0x3bc1[12]](function(_0xd97exc){if(!_0xd97exc){return _0xd97ex8[_0x3bc1[16]](404)};return _0xd97ex8[_0x3bc1[10]](_0xd97exc)})[_0x3bc1[9]](function(_0xd97ex9){return handleError(_0xd97ex8,_0xd97ex9)})};exports[_0x3bc1[20]]= function(_0xd97ex7,_0xd97ex8,_0xd97exd){return ChatMessage[_0x3bc1[20]](_[_0x3bc1[23]](_0xd97ex7[_0x3bc1[21]],{UserId:_0xd97ex7[_0x3bc1[22]][_0x3bc1[17]]}))[_0x3bc1[12]](function(_0xd97exc){return _0xd97ex8[_0x3bc1[11]](201)[_0x3bc1[10]](_0xd97exc)})[_0x3bc1[9]](function(_0xd97ex9){return handleError(_0xd97ex8,_0xd97ex9)})};exports[_0x3bc1[24]]= function(_0xd97ex7,_0xd97ex8){if(_0xd97ex7[_0x3bc1[21]][_0x3bc1[17]]){delete _0xd97ex7[_0x3bc1[21]][_0x3bc1[17]]};return ChatMessage[_0x3bc1[19]](_0xd97ex7[_0x3bc1[18]][_0x3bc1[17]])[_0x3bc1[12]](function(_0xd97exc){if(!_0xd97exc){return _0xd97ex8[_0x3bc1[16]](404)};var _0xd97exe=_[_0x3bc1[23]](_0xd97exc,_0xd97ex7[_0x3bc1[21]]);return _0xd97exe[_0x3bc1[25]]()})[_0x3bc1[12]](function(_0xd97exc){return _0xd97ex8[_0x3bc1[11]](200)[_0x3bc1[10]](_0xd97exc)})[_0x3bc1[9]](function(_0xd97ex9){return handleError(_0xd97ex8,_0xd97ex9)})};exports[_0x3bc1[26]]= function(_0xd97ex7,_0xd97ex8){return ChatMessage[_0x3bc1[19]](_0xd97ex7[_0x3bc1[18]][_0x3bc1[17]])[_0x3bc1[12]](function(_0xd97exc){if(!_0xd97exc){return _0xd97ex8[_0x3bc1[16]](404)};return _0xd97exc[_0x3bc1[26]]()})[_0x3bc1[12]](function(){return _0xd97ex8[_0x3bc1[16]](204)})[_0x3bc1[9]](function(_0xd97ex9){return handleError(_0xd97ex8,_0xd97ex9)})};function handleError(_0xd97ex8,_0xd97ex9){return _0xd97ex8[_0x3bc1[11]](500)[_0x3bc1[10]](_0xd97ex9)} \ No newline at end of file diff --git a/server/api/chat_message/chat_message.events.js b/server/api/chat_message/chat_message.events.js index 64d8887..3c989c4 100644 --- a/server/api/chat_message/chat_message.events.js +++ b/server/api/chat_message/chat_message.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const ChatMessage = require('../../models').ChatMessage; - -var ChatMessageEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -ChatMessageEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - ChatMessage.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - ChatMessageEvents.emit(event + ':' + doc._id, doc); - ChatMessageEvents.emit(event, doc); - done(null); - } -} - -module.exports = ChatMessageEvents; +var _0x2af9=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x43\x68\x61\x74\x4D\x65\x73\x73\x61\x67\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x2af9[0];const EventEmitter=require(_0x2af9[1]);const ChatMessage=require(_0x2af9[3])[_0x2af9[2]];var ChatMessageEvents= new EventEmitter();ChatMessageEvents[_0x2af9[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x2af9[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x2af9[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x2af9[6]};for(var e in events){var event=events[e];ChatMessage[_0x2af9[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x20eax8,_0x20eax9,_0x20eaxa){ChatMessageEvents[_0x2af9[10]](event+ _0x2af9[8]+ _0x20eax8[_0x2af9[9]],_0x20eax8);ChatMessageEvents[_0x2af9[10]](event,_0x20eax8);_0x20eaxa(null)}}module[_0x2af9[11]]= ChatMessageEvents \ No newline at end of file diff --git a/server/api/chat_message/chat_message.socket.js b/server/api/chat_message/chat_message.socket.js index df90ddc..64579c6 100644 --- a/server/api/chat_message/chat_message.socket.js +++ b/server/api/chat_message/chat_message.socket.js @@ -1,62 +1 @@ -'use strict'; - -const _ = require('lodash'); - -const ChatMessage = require('../../models').ChatMessage; -const ChatMessageEvents = require('./chat_message.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('chat_message:' + event, socket); - - ChatMessageEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - return doc - .getChatRoom() - .then(function(chatRoom) { - return [chatRoom - .getUsers({ - attributes: ['id', 'name', 'fullname', 'email', 'role', 'internal', 'userpic'], - raw: true - }), chatRoom - .getChatVisitor({ - attributes: ['id', 'fullname', 'email'], - raw: true - }) - ]; - }) - .spread(function(users, visitor) { - var sender = _.find(users, { - id: doc.UserId - }); - - users.forEach(function(user) { - // SOCKET FILTER - if (socket.userId == user.id && (sender || visitor)) { - socket.emit(event, _.merge(doc.dataValues, { - User: sender, // TODO modify to sender - ChatVisitor: sender ? null : visitor // TODO modify to visitor - })); - } - }); - }) - .catch(function(err) { - console.error(err); - }); - }; -} - -function removeListener(event, listener) { - return function() { - ChatMessageEvents.removeListener(event, listener); - }; -} +var _0xe18c=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x43\x68\x61\x74\x4D\x65\x73\x73\x61\x67\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x2E\x2F\x63\x68\x61\x74\x5F\x6D\x65\x73\x73\x61\x67\x65\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x63\x68\x61\x74\x5F\x6D\x65\x73\x73\x61\x67\x65\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x72\x72\x6F\x72","\x63\x61\x74\x63\x68","\x55\x73\x65\x72\x49\x64","\x66\x69\x6E\x64","\x75\x73\x65\x72\x49\x64","\x69\x64","\x64\x61\x74\x61\x56\x61\x6C\x75\x65\x73","\x6D\x65\x72\x67\x65","\x65\x6D\x69\x74","\x66\x6F\x72\x45\x61\x63\x68","\x73\x70\x72\x65\x61\x64","\x6E\x61\x6D\x65","\x66\x75\x6C\x6C\x6E\x61\x6D\x65","\x65\x6D\x61\x69\x6C","\x72\x6F\x6C\x65","\x69\x6E\x74\x65\x72\x6E\x61\x6C","\x75\x73\x65\x72\x70\x69\x63","\x67\x65\x74\x55\x73\x65\x72\x73","\x67\x65\x74\x43\x68\x61\x74\x56\x69\x73\x69\x74\x6F\x72","\x74\x68\x65\x6E","\x67\x65\x74\x43\x68\x61\x74\x52\x6F\x6F\x6D","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xe18c[0];const _=require(_0xe18c[1]);const ChatMessage=require(_0xe18c[3])[_0xe18c[2]];const ChatMessageEvents=require(_0xe18c[4]);var events=[_0xe18c[5],_0xe18c[6]];exports[_0xe18c[7]]= function(_0xd209x5){for(var _0xd209x6=0,_0xd209x7=events[_0xe18c[8]];_0xd209x6< _0xd209x7;_0xd209x6++){var _0xd209x8=events[_0xd209x6];var _0xd209x9=createListener(_0xe18c[9]+ _0xd209x8,_0xd209x5);ChatMessageEvents[_0xe18c[10]](_0xd209x8,_0xd209x9);_0xd209x5[_0xe18c[10]](_0xe18c[11],removeListener(_0xd209x8,_0xd209x9))}};function createListener(_0xd209x8,_0xd209x5){return function(_0xd209xb){return _0xd209xb[_0xe18c[32]]()[_0xe18c[31]](function(_0xd209x11){return [_0xd209x11[_0xe18c[29]]({attributes:[_0xe18c[17],_0xe18c[23],_0xe18c[24],_0xe18c[25],_0xe18c[26],_0xe18c[27],_0xe18c[28]],raw:true}),_0xd209x11[_0xe18c[30]]({attributes:[_0xe18c[17],_0xe18c[24],_0xe18c[25]],raw:true})]})[_0xe18c[22]](function(_0xd209xd,_0xd209xe){var _0xd209xf=_[_0xe18c[15]](_0xd209xd,{id:_0xd209xb[_0xe18c[14]]});_0xd209xd[_0xe18c[21]](function(_0xd209x10){if(_0xd209x5[_0xe18c[16]]== _0xd209x10[_0xe18c[17]]&& (_0xd209xf|| _0xd209xe)){_0xd209x5[_0xe18c[20]](_0xd209x8,_[_0xe18c[19]](_0xd209xb[_0xe18c[18]],{User:_0xd209xf,ChatVisitor:_0xd209xf?null:_0xd209xe}))}})})[_0xe18c[13]](function(_0xd209xc){console[_0xe18c[12]](_0xd209xc)})}}function removeListener(_0xd209x8,_0xd209x9){return function(){ChatMessageEvents[_0xe18c[33]](_0xd209x8,_0xd209x9)}} \ No newline at end of file diff --git a/server/api/chat_message/index.js b/server/api/chat_message/index.js index 947b5a8..ccc7b46 100644 --- a/server/api/chat_message/index.js +++ b/server/api/chat_message/index.js @@ -1,18 +1 @@ -'use strict'; - -var express = require('express'); - -var controller = require('./chat_message.controller'); -var license = require('../../config/license/license.service'); -var auth = require('../../auth/auth.service'); - -var router = express.Router(); - -router.get('/', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin', 'agent']), controller.index); -router.get('/describe', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.describe); -router.get('/:id', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin', 'agent']), controller.show); -router.post('/', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin', 'agent']), controller.create); -router.put('/:id', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.update); -router.delete('/:id', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.destroy); - -module.exports = router; +var _0xfb38=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x63\x68\x61\x74\x5F\x6D\x65\x73\x73\x61\x67\x65\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x68\x61\x73\x43\x68\x61\x74","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x64\x65\x73\x63\x72\x69\x62\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0xfb38[0];var express=require(_0xfb38[1]);var controller=require(_0xfb38[2]);var license=require(_0xfb38[3]);var auth=require(_0xfb38[4]);var router=express.Router();router[_0xfb38[13]](_0xfb38[5],license[_0xfb38[6]](),license[_0xfb38[7]](),auth[_0xfb38[8]](),auth[_0xfb38[11]]([8],[_0xfb38[9],_0xfb38[10]]),controller[_0xfb38[12]]);router[_0xfb38[13]](_0xfb38[14],license[_0xfb38[6]](),license[_0xfb38[7]](),auth[_0xfb38[8]](),auth[_0xfb38[11]]([8],[_0xfb38[9]]),controller[_0xfb38[15]]);router[_0xfb38[13]](_0xfb38[16],license[_0xfb38[6]](),license[_0xfb38[7]](),auth[_0xfb38[8]](),auth[_0xfb38[11]]([8],[_0xfb38[9],_0xfb38[10]]),controller[_0xfb38[17]]);router[_0xfb38[19]](_0xfb38[5],license[_0xfb38[6]](),license[_0xfb38[7]](),auth[_0xfb38[8]](),auth[_0xfb38[11]]([8],[_0xfb38[9],_0xfb38[10]]),controller[_0xfb38[18]]);router[_0xfb38[21]](_0xfb38[16],license[_0xfb38[6]](),license[_0xfb38[7]](),auth[_0xfb38[8]](),auth[_0xfb38[11]]([8],[_0xfb38[9]]),controller[_0xfb38[20]]);router[_0xfb38[23]](_0xfb38[16],license[_0xfb38[6]](),license[_0xfb38[7]](),auth[_0xfb38[8]](),auth[_0xfb38[11]]([8],[_0xfb38[9]]),controller[_0xfb38[22]]);module[_0xfb38[24]]= router \ No newline at end of file diff --git a/server/api/chat_proactive_action/chat_proactive_action.controller.js b/server/api/chat_proactive_action/chat_proactive_action.controller.js index 8e3b8ba..4ecba9b 100644 --- a/server/api/chat_proactive_action/chat_proactive_action.controller.js +++ b/server/api/chat_proactive_action/chat_proactive_action.controller.js @@ -1,112 +1 @@ -/** - * Using Rails-like standard naming convention for endpoints. - * GET /api/chat/proactives -> index - * POST /api/chat/proactives -> create - * GET /api/chat/proactives/:id -> show - * PUT /api/chat/proactives/:id -> update - * DELETE /api/chat/proactives/:id -> destroy - */ - -'use strict'; - - -var _ = require('lodash'); -var Util = require('../../config/util'); - -var ChatProactiveAction = require('../../models').ChatProactiveAction; - - -function handleError(res, statusCode) { - statusCode = statusCode || 500; - return function(err) { - res.status(statusCode).send(err); - }; -} - -function responseWithResult(res, statusCode) { - statusCode = statusCode || 200; - return function(entity) { - if (entity) { - res.status(statusCode).json(entity); - } - }; -} - -function responseWithoutResult(res, statusCode) { - statusCode = statusCode || 204; - return function() { - res.sendStatus(statusCode); - }; -} - -function handleEntityNotFound(res) { - return function(entity) { - if (!entity) { - res.status(404).end(); - return null; - } - return entity; - }; -} - -function saveUpdates(updates) { - return function(entity) { - return entity.updateAttributes(updates) - .then(function(updated) { - return updated; - }); - }; -} - -function removeEntity(res) { - return function(entity) { - if (entity) { - return entity.destroy() - .then(function() { - res.status(204).end(); - }); - } - }; -} - -// Gets a list of ChatProactiveActions -exports.index = function(req, res) { - return ChatProactiveAction.findAll(Util.getQuery(req.query)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Gets a single ChatProactiveAction from the DB -exports.show = function(req, res) { - return ChatProactiveAction.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Creates a new ChatProactiveAction in the DB -exports.create = function(req, res) { - return ChatProactiveAction.create(req.body) - .then(responseWithResult(res, 201)) - .catch(handleError(res)); -} - -// Updates an existing ChatProactiveAction in the DB -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - return ChatProactiveAction.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(saveUpdates(req.body)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Deletes a ChatProactiveAction from the DB -exports.destroy = function(req, res) { - return ChatProactiveAction.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(removeEntity(res)) - .catch(handleError(res)); -} +var _0x9097=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x43\x68\x61\x74\x50\x72\x6F\x61\x63\x74\x69\x76\x65\x41\x63\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x6A\x73\x6F\x6E","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x65\x6E\x64","\x74\x68\x65\x6E","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x64\x65\x73\x74\x72\x6F\x79","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x68\x6F\x77","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65"];_0x9097[0];var _=require(_0x9097[1]);var Util=require(_0x9097[2]);var ChatProactiveAction=require(_0x9097[4])[_0x9097[3]];function handleError(_0xf4a7x5,_0xf4a7x6){_0xf4a7x6= _0xf4a7x6|| 500;return function(_0xf4a7x7){_0xf4a7x5[_0x9097[6]](_0xf4a7x6)[_0x9097[5]](_0xf4a7x7)}}function responseWithResult(_0xf4a7x5,_0xf4a7x6){_0xf4a7x6= _0xf4a7x6|| 200;return function(_0xf4a7x9){if(_0xf4a7x9){_0xf4a7x5[_0x9097[6]](_0xf4a7x6)[_0x9097[7]](_0xf4a7x9)}}}function responseWithoutResult(_0xf4a7x5,_0xf4a7x6){_0xf4a7x6= _0xf4a7x6|| 204;return function(){_0xf4a7x5[_0x9097[8]](_0xf4a7x6)}}function handleEntityNotFound(_0xf4a7x5){return function(_0xf4a7x9){if(!_0xf4a7x9){_0xf4a7x5[_0x9097[6]](404)[_0x9097[9]]();return null};return _0xf4a7x9}}function saveUpdates(_0xf4a7xd){return function(_0xf4a7x9){return _0xf4a7x9[_0x9097[11]](_0xf4a7xd)[_0x9097[10]](function(_0xf4a7xe){return _0xf4a7xe})}}function removeEntity(_0xf4a7x5){return function(_0xf4a7x9){if(_0xf4a7x9){return _0xf4a7x9[_0x9097[12]]()[_0x9097[10]](function(){_0xf4a7x5[_0x9097[6]](204)[_0x9097[9]]()})}}}exports[_0x9097[13]]= function(_0xf4a7x10,_0xf4a7x5){return ChatProactiveAction[_0x9097[17]](Util[_0x9097[16]](_0xf4a7x10[_0x9097[15]]))[_0x9097[10]](responseWithResult(_0xf4a7x5))[_0x9097[14]](handleError(_0xf4a7x5))};exports[_0x9097[18]]= function(_0xf4a7x10,_0xf4a7x5){return ChatProactiveAction[_0x9097[21]](_0xf4a7x10[_0x9097[20]][_0x9097[19]])[_0x9097[10]](handleEntityNotFound(_0xf4a7x5))[_0x9097[10]](responseWithResult(_0xf4a7x5))[_0x9097[14]](handleError(_0xf4a7x5))};exports[_0x9097[22]]= function(_0xf4a7x10,_0xf4a7x5){return ChatProactiveAction[_0x9097[22]](_0xf4a7x10[_0x9097[23]])[_0x9097[10]](responseWithResult(_0xf4a7x5,201))[_0x9097[14]](handleError(_0xf4a7x5))};exports[_0x9097[24]]= function(_0xf4a7x10,_0xf4a7x5){if(_0xf4a7x10[_0x9097[23]][_0x9097[19]]){delete _0xf4a7x10[_0x9097[23]][_0x9097[19]]};return ChatProactiveAction[_0x9097[21]](_0xf4a7x10[_0x9097[20]][_0x9097[19]])[_0x9097[10]](handleEntityNotFound(_0xf4a7x5))[_0x9097[10]](saveUpdates(_0xf4a7x10[_0x9097[23]]))[_0x9097[10]](responseWithResult(_0xf4a7x5))[_0x9097[14]](handleError(_0xf4a7x5))};exports[_0x9097[12]]= function(_0xf4a7x10,_0xf4a7x5){return ChatProactiveAction[_0x9097[21]](_0xf4a7x10[_0x9097[20]][_0x9097[19]])[_0x9097[10]](handleEntityNotFound(_0xf4a7x5))[_0x9097[10]](removeEntity(_0xf4a7x5))[_0x9097[14]](handleError(_0xf4a7x5))} \ No newline at end of file diff --git a/server/api/chat_proactive_action/chat_proactive_action.events.js b/server/api/chat_proactive_action/chat_proactive_action.events.js index 63b128a..cabf766 100644 --- a/server/api/chat_proactive_action/chat_proactive_action.events.js +++ b/server/api/chat_proactive_action/chat_proactive_action.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const ChatProactiveAction = require('../../models').ChatProactiveAction; - -var ChatProactiveActionEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -ChatProactiveActionEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - ChatProactiveAction.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - ChatProactiveActionEvents.emit(event + ':' + doc._id, doc); - ChatProactiveActionEvents.emit(event, doc); - done(null); - } -} - -module.exports = ChatProactiveActionEvents; +var _0x6224=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x43\x68\x61\x74\x50\x72\x6F\x61\x63\x74\x69\x76\x65\x41\x63\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x6224[0];const EventEmitter=require(_0x6224[1]);const ChatProactiveAction=require(_0x6224[3])[_0x6224[2]];var ChatProactiveActionEvents= new EventEmitter();ChatProactiveActionEvents[_0x6224[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x6224[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x6224[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x6224[6]};for(var e in events){var event=events[e];ChatProactiveAction[_0x6224[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x3f96x8,_0x3f96x9,_0x3f96xa){ChatProactiveActionEvents[_0x6224[10]](event+ _0x6224[8]+ _0x3f96x8[_0x6224[9]],_0x3f96x8);ChatProactiveActionEvents[_0x6224[10]](event,_0x3f96x8);_0x3f96xa(null)}}module[_0x6224[11]]= ChatProactiveActionEvents \ No newline at end of file diff --git a/server/api/chat_proactive_action/chat_proactive_action.socket.js b/server/api/chat_proactive_action/chat_proactive_action.socket.js index 2e9d2a7..9b6cc4c 100644 --- a/server/api/chat_proactive_action/chat_proactive_action.socket.js +++ b/server/api/chat_proactive_action/chat_proactive_action.socket.js @@ -1,28 +1 @@ -'use strict'; - -const ChatProactiveActionEvents = require('./chat_proactive_action.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('chat_proactive_action:' + event, socket); - - ChatProactiveActionEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - ChatProactiveActionEvents.removeListener(event, listener); - }; -} +var _0x86e7=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x63\x68\x61\x74\x5F\x70\x72\x6F\x61\x63\x74\x69\x76\x65\x5F\x61\x63\x74\x69\x6F\x6E\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x63\x68\x61\x74\x5F\x70\x72\x6F\x61\x63\x74\x69\x76\x65\x5F\x61\x63\x74\x69\x6F\x6E\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x86e7[0];const ChatProactiveActionEvents=require(_0x86e7[1]);var events=[_0x86e7[2],_0x86e7[3]];exports[_0x86e7[4]]= function(_0x5af9x3){for(var _0x5af9x4=0,_0x5af9x5=events[_0x86e7[5]];_0x5af9x4< _0x5af9x5;_0x5af9x4++){var _0x5af9x6=events[_0x5af9x4];var _0x5af9x7=createListener(_0x86e7[6]+ _0x5af9x6,_0x5af9x3);ChatProactiveActionEvents[_0x86e7[7]](_0x5af9x6,_0x5af9x7);_0x5af9x3[_0x86e7[7]](_0x86e7[8],removeListener(_0x5af9x6,_0x5af9x7))}};function createListener(_0x5af9x6,_0x5af9x3){return function(_0x5af9x9){_0x5af9x3[_0x86e7[9]](_0x5af9x6,_0x5af9x9)}}function removeListener(_0x5af9x6,_0x5af9x7){return function(){ChatProactiveActionEvents[_0x86e7[10]](_0x5af9x6,_0x5af9x7)}} \ No newline at end of file diff --git a/server/api/chat_proactive_action/index.js b/server/api/chat_proactive_action/index.js index e8e0ecf..8e68fc1 100644 --- a/server/api/chat_proactive_action/index.js +++ b/server/api/chat_proactive_action/index.js @@ -1,17 +1 @@ -'use strict'; - -var express = require('express'); -var auth = require('../../auth/auth.service'); -var controller = require('./chat_proactive_action.controller'); -var license = require('../../config/license/license.service'); - -var router = express.Router(); - -router.get('/', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.index); -router.get('/:id', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.show); -router.post('/', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.create); -router.put('/:id', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.update); -router.patch('/:id', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.update); -router.delete('/:id', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.destroy); - -module.exports = router; +var _0xff2e=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x63\x68\x61\x74\x5F\x70\x72\x6F\x61\x63\x74\x69\x76\x65\x5F\x61\x63\x74\x69\x6F\x6E\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x68\x61\x73\x43\x68\x61\x74","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x70\x61\x74\x63\x68","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0xff2e[0];var express=require(_0xff2e[1]);var auth=require(_0xff2e[2]);var controller=require(_0xff2e[3]);var license=require(_0xff2e[4]);var router=express.Router();router[_0xff2e[12]](_0xff2e[5],license[_0xff2e[6]](),license[_0xff2e[7]](),auth[_0xff2e[8]](),auth[_0xff2e[10]]([8],[_0xff2e[9]]),controller[_0xff2e[11]]);router[_0xff2e[12]](_0xff2e[13],license[_0xff2e[6]](),license[_0xff2e[7]](),auth[_0xff2e[8]](),auth[_0xff2e[10]]([8],[_0xff2e[9]]),controller[_0xff2e[14]]);router[_0xff2e[16]](_0xff2e[5],license[_0xff2e[6]](),license[_0xff2e[7]](),auth[_0xff2e[8]](),auth[_0xff2e[10]]([8],[_0xff2e[9]]),controller[_0xff2e[15]]);router[_0xff2e[18]](_0xff2e[13],license[_0xff2e[6]](),license[_0xff2e[7]](),auth[_0xff2e[8]](),auth[_0xff2e[10]]([8],[_0xff2e[9]]),controller[_0xff2e[17]]);router[_0xff2e[19]](_0xff2e[13],license[_0xff2e[6]](),license[_0xff2e[7]](),auth[_0xff2e[8]](),auth[_0xff2e[10]]([8],[_0xff2e[9]]),controller[_0xff2e[17]]);router[_0xff2e[21]](_0xff2e[13],license[_0xff2e[6]](),license[_0xff2e[7]](),auth[_0xff2e[8]](),auth[_0xff2e[10]]([8],[_0xff2e[9]]),controller[_0xff2e[20]]);module[_0xff2e[22]]= router \ No newline at end of file diff --git a/server/api/chat_queue/chat_queue.controller.js b/server/api/chat_queue/chat_queue.controller.js index fa34821..af38be0 100644 --- a/server/api/chat_queue/chat_queue.controller.js +++ b/server/api/chat_queue/chat_queue.controller.js @@ -1,237 +1 @@ -'use strict'; - -var _ = require('lodash'); -var Util = require('../../config/util'); - -var ChatQueue = require('../../models').ChatQueue; -var User = require('../../models').User; -var UserHasChatQueue = require('../../models').UserHasChatQueue; - -// Get list of mailQueues -exports.index = function(req, res) { - switch (req.user.role) { - case 'user': - return User - .findById(req.user.id, { - attributes: ['id'] - }) - .then(Util.getChatQueuesIdByUser(req.query)) - .then(function(result) { - res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); - - default: - return ChatQueue - .scope('default') - .findAndCountAll(_.merge(Util.getQuery(req.query), { - distinct: true - })) - .then(function(result) { - return res.status(200).send({ - rows: result.rows, - count: result.rows.length - }); - }) - .catch(function(err) { - return handleError(res, err); - }); - } -}; - -// Get list of my chat_rooms -exports.me = function(req, res, next) { - return UserHasChatQueue - .findAll({ - where: { - UserId: req.user.id - } - }) - .then(function(userHasChatQueues) { - return res.status(200).send(userHasChatQueues); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get a single chat_queue -exports.show = function(req, res) { - return ChatQueue - .findById(req.params.id) - .then(function(chat_queue) { - if (!chat_queue) { - return res.sendStatus(404); - } - return res.send(chat_queue); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get a single queue -exports.showAgents = function(req, res) { - return ChatQueue - .findById(req.params.id) - .then(function(queue) { - if (!queue) { - return res.sendStatus(404); - } - return queue - .getUsers({ - where: { - role: 'agent' - }, - attributes: ['id', 'name', 'fullname', 'email'] - }); - }) - .then(function(agents) { - return res.status(200).send({ - rows: agents, - count: agents.length - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Creates a new chat_queue in the DB. -exports.create = function(req, res) { - var _chatQueue; - - return ChatQueue - .create(req.body) - .then(function(chatQueue) { - _chatQueue = chatQueue; - - if (req.body.agents) { - return _chatQueue - .addUsers(req.body.agents, { - penalty: req.body.penalty || 0, - queue: _chatQueue.name - }); - } - }) - .then(function() { - return res.status(201).send(_chatQueue); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Updates an existing chat_queue in the DB. -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - return ChatQueue - .findById(req.params.id) - .then(function(chat_queue) { - if (!chat_queue) { - return res.sendStatus(404); - } - var updated = _.merge(chat_queue, req.body); - return updated.save(); - }) - .then(function(chat_queue) { - return res.status(200).send(chat_queue); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Add agents to chat queues -exports.addAgents = function(req, res, next) { - - return ChatQueue - .findById(req.params.id) - .then(function(chatQueue) { - if (!chatQueue) { - return res.sendStatus(404); - } - var userHasChatQueues = _.map(req.body.agents, function(agent) { - return { - UserId: agent, - penalty: req.body.penalty, - ChatQueueId: chatQueue.id, - queue: chatQueue.name - }; - }); - - return UserHasChatQueue - .bulkCreate(userHasChatQueues, { - individualHooks: true - }); - }) - .then(function() { - return res.sendStatus(200); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.removeAgents = function(req, res, next) { - return ChatQueue - .findById(req.params.id) - .then(function(chatQueue) { - if (!chatQueue) { - return res.sendStatus(404); - } - return chatQueue - .removeUsers(req.query.agents, { - individualHooks: true - }); - }) - .then(function() { - return res.sendStatus(200); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes a chat_queue from the DB. -exports.destroy = function(req, res) { - return ChatQueue - .findById(req.params.id) - .then(function(chat_queue) { - if (!chat_queue) { - return res.sendStatus(404); - } - return chat_queue.destroy(); - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes a agent from the DB. -exports.bulkDestroy = function(req, res) { - return ChatQueue - .destroy({ - where: { - id: req.query.ids - }, - individualHooks: true - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0xd75f=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x43\x68\x61\x74\x51\x75\x65\x75\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x55\x73\x65\x72","\x55\x73\x65\x72\x48\x61\x73\x43\x68\x61\x74\x51\x75\x65\x75\x65","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x43\x68\x61\x74\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x69\x64","\x75\x73\x65\x72","\x66\x69\x6E\x64\x42\x79\x49\x64","\x72\x6F\x77\x73","\x6C\x65\x6E\x67\x74\x68","\x67\x65\x74\x51\x75\x65\x72\x79","\x6D\x65\x72\x67\x65","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x64\x65\x66\x61\x75\x6C\x74","\x73\x63\x6F\x70\x65","\x72\x6F\x6C\x65","\x6D\x65","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x70\x61\x72\x61\x6D\x73","\x73\x68\x6F\x77\x41\x67\x65\x6E\x74\x73","\x61\x67\x65\x6E\x74","\x6E\x61\x6D\x65","\x66\x75\x6C\x6C\x6E\x61\x6D\x65","\x65\x6D\x61\x69\x6C","\x67\x65\x74\x55\x73\x65\x72\x73","\x63\x72\x65\x61\x74\x65","\x61\x67\x65\x6E\x74\x73","\x62\x6F\x64\x79","\x70\x65\x6E\x61\x6C\x74\x79","\x61\x64\x64\x55\x73\x65\x72\x73","\x75\x70\x64\x61\x74\x65","\x73\x61\x76\x65","\x61\x64\x64\x41\x67\x65\x6E\x74\x73","\x6D\x61\x70","\x62\x75\x6C\x6B\x43\x72\x65\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65\x41\x67\x65\x6E\x74\x73","\x72\x65\x6D\x6F\x76\x65\x55\x73\x65\x72\x73","\x64\x65\x73\x74\x72\x6F\x79","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73"];_0xd75f[0];var _=require(_0xd75f[1]);var Util=require(_0xd75f[2]);var ChatQueue=require(_0xd75f[4])[_0xd75f[3]];var User=require(_0xd75f[4])[_0xd75f[5]];var UserHasChatQueue=require(_0xd75f[4])[_0xd75f[6]];exports[_0xd75f[7]]= function(_0x6780x6,_0x6780x7){switch(_0x6780x6[_0xd75f[15]][_0xd75f[24]]){case _0xd75f[15]:return User[_0xd75f[16]](_0x6780x6[_0xd75f[15]][_0xd75f[14]],{attributes:[_0xd75f[14]]})[_0xd75f[11]](Util[_0xd75f[13]](_0x6780x6[_0xd75f[12]]))[_0xd75f[11]](function(_0x6780x9){_0x6780x7[_0xd75f[10]](200)[_0xd75f[9]](_0x6780x9)})[_0xd75f[8]](function(_0x6780x8){return handleError(_0x6780x7,_0x6780x8)});default:return ChatQueue[_0xd75f[23]](_0xd75f[22])[_0xd75f[21]](_[_0xd75f[20]](Util[_0xd75f[19]](_0x6780x6[_0xd75f[12]]),{distinct:true}))[_0xd75f[11]](function(_0x6780x9){return _0x6780x7[_0xd75f[10]](200)[_0xd75f[9]]({rows:_0x6780x9[_0xd75f[17]],count:_0x6780x9[_0xd75f[17]][_0xd75f[18]]})})[_0xd75f[8]](function(_0x6780x8){return handleError(_0x6780x7,_0x6780x8)})}};exports[_0xd75f[25]]= function(_0x6780x6,_0x6780x7,_0x6780xa){return UserHasChatQueue[_0xd75f[26]]({where:{UserId:_0x6780x6[_0xd75f[15]][_0xd75f[14]]}})[_0xd75f[11]](function(_0x6780xb){return _0x6780x7[_0xd75f[10]](200)[_0xd75f[9]](_0x6780xb)})[_0xd75f[8]](function(_0x6780x8){return handleError(_0x6780x7,_0x6780x8)})};exports[_0xd75f[27]]= function(_0x6780x6,_0x6780x7){return ChatQueue[_0xd75f[16]](_0x6780x6[_0xd75f[29]][_0xd75f[14]])[_0xd75f[11]](function(_0x6780xc){if(!_0x6780xc){return _0x6780x7[_0xd75f[28]](404)};return _0x6780x7[_0xd75f[9]](_0x6780xc)})[_0xd75f[8]](function(_0x6780x8){return handleError(_0x6780x7,_0x6780x8)})};exports[_0xd75f[30]]= function(_0x6780x6,_0x6780x7){return ChatQueue[_0xd75f[16]](_0x6780x6[_0xd75f[29]][_0xd75f[14]])[_0xd75f[11]](function(_0x6780xe){if(!_0x6780xe){return _0x6780x7[_0xd75f[28]](404)};return _0x6780xe[_0xd75f[35]]({where:{role:_0xd75f[31]},attributes:[_0xd75f[14],_0xd75f[32],_0xd75f[33],_0xd75f[34]]})})[_0xd75f[11]](function(_0x6780xd){return _0x6780x7[_0xd75f[10]](200)[_0xd75f[9]]({rows:_0x6780xd,count:_0x6780xd[_0xd75f[18]]})})[_0xd75f[8]](function(_0x6780x8){return handleError(_0x6780x7,_0x6780x8)})};exports[_0xd75f[36]]= function(_0x6780x6,_0x6780x7){var _0x6780xf;return ChatQueue[_0xd75f[36]](_0x6780x6[_0xd75f[38]])[_0xd75f[11]](function(_0x6780x10){_0x6780xf= _0x6780x10;if(_0x6780x6[_0xd75f[38]][_0xd75f[37]]){return _0x6780xf[_0xd75f[40]](_0x6780x6[_0xd75f[38]][_0xd75f[37]],{penalty:_0x6780x6[_0xd75f[38]][_0xd75f[39]]|| 0,queue:_0x6780xf[_0xd75f[32]]})}})[_0xd75f[11]](function(){return _0x6780x7[_0xd75f[10]](201)[_0xd75f[9]](_0x6780xf)})[_0xd75f[8]](function(_0x6780x8){return handleError(_0x6780x7,_0x6780x8)})};exports[_0xd75f[41]]= function(_0x6780x6,_0x6780x7){if(_0x6780x6[_0xd75f[38]][_0xd75f[14]]){delete _0x6780x6[_0xd75f[38]][_0xd75f[14]]};return ChatQueue[_0xd75f[16]](_0x6780x6[_0xd75f[29]][_0xd75f[14]])[_0xd75f[11]](function(_0x6780xc){if(!_0x6780xc){return _0x6780x7[_0xd75f[28]](404)};var _0x6780x11=_[_0xd75f[20]](_0x6780xc,_0x6780x6[_0xd75f[38]]);return _0x6780x11[_0xd75f[42]]()})[_0xd75f[11]](function(_0x6780xc){return _0x6780x7[_0xd75f[10]](200)[_0xd75f[9]](_0x6780xc)})[_0xd75f[8]](function(_0x6780x8){return handleError(_0x6780x7,_0x6780x8)})};exports[_0xd75f[43]]= function(_0x6780x6,_0x6780x7,_0x6780xa){return ChatQueue[_0xd75f[16]](_0x6780x6[_0xd75f[29]][_0xd75f[14]])[_0xd75f[11]](function(_0x6780x10){if(!_0x6780x10){return _0x6780x7[_0xd75f[28]](404)};var _0x6780xb=_[_0xd75f[44]](_0x6780x6[_0xd75f[38]][_0xd75f[37]],function(_0x6780x12){return {UserId:_0x6780x12,penalty:_0x6780x6[_0xd75f[38]][_0xd75f[39]],ChatQueueId:_0x6780x10[_0xd75f[14]],queue:_0x6780x10[_0xd75f[32]]}});return UserHasChatQueue[_0xd75f[45]](_0x6780xb,{individualHooks:true})})[_0xd75f[11]](function(){return _0x6780x7[_0xd75f[28]](200)})[_0xd75f[8]](function(_0x6780x8){return handleError(_0x6780x7,_0x6780x8)})};exports[_0xd75f[46]]= function(_0x6780x6,_0x6780x7,_0x6780xa){return ChatQueue[_0xd75f[16]](_0x6780x6[_0xd75f[29]][_0xd75f[14]])[_0xd75f[11]](function(_0x6780x10){if(!_0x6780x10){return _0x6780x7[_0xd75f[28]](404)};return _0x6780x10[_0xd75f[47]](_0x6780x6[_0xd75f[12]][_0xd75f[37]],{individualHooks:true})})[_0xd75f[11]](function(){return _0x6780x7[_0xd75f[28]](200)})[_0xd75f[8]](function(_0x6780x8){return handleError(_0x6780x7,_0x6780x8)})};exports[_0xd75f[48]]= function(_0x6780x6,_0x6780x7){return ChatQueue[_0xd75f[16]](_0x6780x6[_0xd75f[29]][_0xd75f[14]])[_0xd75f[11]](function(_0x6780xc){if(!_0x6780xc){return _0x6780x7[_0xd75f[28]](404)};return _0x6780xc[_0xd75f[48]]()})[_0xd75f[11]](function(){return _0x6780x7[_0xd75f[28]](204)})[_0xd75f[8]](function(_0x6780x8){return handleError(_0x6780x7,_0x6780x8)})};exports[_0xd75f[49]]= function(_0x6780x6,_0x6780x7){return ChatQueue[_0xd75f[48]]({where:{id:_0x6780x6[_0xd75f[12]][_0xd75f[50]]},individualHooks:true})[_0xd75f[11]](function(){return _0x6780x7[_0xd75f[28]](204)})[_0xd75f[8]](function(_0x6780x8){return handleError(_0x6780x7,_0x6780x8)})};function handleError(_0x6780x7,_0x6780x8){return _0x6780x7[_0xd75f[10]](500)[_0xd75f[9]](_0x6780x8)} \ No newline at end of file diff --git a/server/api/chat_queue/chat_queue.events.js b/server/api/chat_queue/chat_queue.events.js index 7fe734e..d1782b5 100644 --- a/server/api/chat_queue/chat_queue.events.js +++ b/server/api/chat_queue/chat_queue.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const ChatQueue = require('../../models').ChatQueue; - -var ChatQueueEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -ChatQueueEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - ChatQueue.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - ChatQueueEvents.emit(event + ':' + doc._id, doc); - ChatQueueEvents.emit(event, doc); - done(null); - } -} - -module.exports = ChatQueueEvents; +var _0xf312=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x43\x68\x61\x74\x51\x75\x65\x75\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xf312[0];const EventEmitter=require(_0xf312[1]);const ChatQueue=require(_0xf312[3])[_0xf312[2]];var ChatQueueEvents= new EventEmitter();ChatQueueEvents[_0xf312[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xf312[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xf312[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xf312[6]};for(var e in events){var event=events[e];ChatQueue[_0xf312[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x4d43x8,_0x4d43x9,_0x4d43xa){ChatQueueEvents[_0xf312[10]](event+ _0xf312[8]+ _0x4d43x8[_0xf312[9]],_0x4d43x8);ChatQueueEvents[_0xf312[10]](event,_0x4d43x8);_0x4d43xa(null)}}module[_0xf312[11]]= ChatQueueEvents \ No newline at end of file diff --git a/server/api/chat_queue/chat_queue.socket.js b/server/api/chat_queue/chat_queue.socket.js index cee7104..6d8d35b 100644 --- a/server/api/chat_queue/chat_queue.socket.js +++ b/server/api/chat_queue/chat_queue.socket.js @@ -1,28 +1 @@ -'use strict'; - -const ChatQueueEvents = require('./chat_queue.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('chat_queue:' + event, socket); - - ChatQueueEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - ChatQueueEvents.removeListener(event, listener); - }; -} +var _0xe1da=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x63\x68\x61\x74\x5F\x71\x75\x65\x75\x65\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x63\x68\x61\x74\x5F\x71\x75\x65\x75\x65\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xe1da[0];const ChatQueueEvents=require(_0xe1da[1]);var events=[_0xe1da[2],_0xe1da[3]];exports[_0xe1da[4]]= function(_0x3f5fx3){for(var _0x3f5fx4=0,_0x3f5fx5=events[_0xe1da[5]];_0x3f5fx4< _0x3f5fx5;_0x3f5fx4++){var _0x3f5fx6=events[_0x3f5fx4];var _0x3f5fx7=createListener(_0xe1da[6]+ _0x3f5fx6,_0x3f5fx3);ChatQueueEvents[_0xe1da[7]](_0x3f5fx6,_0x3f5fx7);_0x3f5fx3[_0xe1da[7]](_0xe1da[8],removeListener(_0x3f5fx6,_0x3f5fx7))}};function createListener(_0x3f5fx6,_0x3f5fx3){return function(_0x3f5fx9){_0x3f5fx3[_0xe1da[9]](_0x3f5fx6,_0x3f5fx9)}}function removeListener(_0x3f5fx6,_0x3f5fx7){return function(){ChatQueueEvents[_0xe1da[10]](_0x3f5fx6,_0x3f5fx7)}} \ No newline at end of file diff --git a/server/api/chat_queue/index.js b/server/api/chat_queue/index.js index 48b9b5b..7d01a61 100644 --- a/server/api/chat_queue/index.js +++ b/server/api/chat_queue/index.js @@ -1,23 +1 @@ -'use strict'; - -var express = require('express'); - -var controller = require('./chat_queue.controller'); -var auth = require('../../auth/auth.service'); -var license = require('../../config/license/license.service'); - -var router = express.Router(); - -router.get('/', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.index); -router.get('/me', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.me); -router.get('/:id/agents', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.showAgents); -router.get('/:id', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.show); -router.post('/', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasRole('admin'), controller.create); -router.post('/:id/agents', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasRole('admin'), controller.addAgents); -router.put('/:id', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasRole('admin'), controller.update); -router.delete('/:id/agents', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasRole('admin'), controller.removeAgents); -router.patch('/:id', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasRole('admin'), controller.update); -router.delete('/', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasRole('admin'), controller.bulkDestroy); -router.delete('/:id', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasRole('admin'), controller.destroy); - -module.exports = router; +var _0x669f=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x63\x68\x61\x74\x5F\x71\x75\x65\x75\x65\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x68\x61\x73\x43\x68\x61\x74","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x6D\x65","\x6D\x65","\x2F\x3A\x69\x64\x2F\x61\x67\x65\x6E\x74\x73","\x73\x68\x6F\x77\x41\x67\x65\x6E\x74\x73","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x68\x61\x73\x52\x6F\x6C\x65","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x61\x64\x64\x41\x67\x65\x6E\x74\x73","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x72\x65\x6D\x6F\x76\x65\x41\x67\x65\x6E\x74\x73","\x64\x65\x6C\x65\x74\x65","\x70\x61\x74\x63\x68","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0x669f[0];var express=require(_0x669f[1]);var controller=require(_0x669f[2]);var auth=require(_0x669f[3]);var license=require(_0x669f[4]);var router=express.Router();router[_0x669f[12]](_0x669f[5],license[_0x669f[6]](),license[_0x669f[7]](),auth[_0x669f[8]](),auth[_0x669f[10]]([8],[_0x669f[9]]),controller[_0x669f[11]]);router[_0x669f[12]](_0x669f[13],license[_0x669f[6]](),license[_0x669f[7]](),auth[_0x669f[8]](),auth[_0x669f[10]]([8],[_0x669f[9]]),controller[_0x669f[14]]);router[_0x669f[12]](_0x669f[15],license[_0x669f[6]](),license[_0x669f[7]](),auth[_0x669f[8]](),auth[_0x669f[10]]([8],[_0x669f[9]]),controller[_0x669f[16]]);router[_0x669f[12]](_0x669f[17],license[_0x669f[6]](),license[_0x669f[7]](),auth[_0x669f[8]](),auth[_0x669f[10]]([8],[_0x669f[9]]),controller[_0x669f[18]]);router[_0x669f[21]](_0x669f[5],license[_0x669f[6]](),license[_0x669f[7]](),auth[_0x669f[8]](),auth[_0x669f[19]](_0x669f[9]),controller[_0x669f[20]]);router[_0x669f[21]](_0x669f[15],license[_0x669f[6]](),license[_0x669f[7]](),auth[_0x669f[8]](),auth[_0x669f[19]](_0x669f[9]),controller[_0x669f[22]]);router[_0x669f[24]](_0x669f[17],license[_0x669f[6]](),license[_0x669f[7]](),auth[_0x669f[8]](),auth[_0x669f[19]](_0x669f[9]),controller[_0x669f[23]]);router[_0x669f[26]](_0x669f[15],license[_0x669f[6]](),license[_0x669f[7]](),auth[_0x669f[8]](),auth[_0x669f[19]](_0x669f[9]),controller[_0x669f[25]]);router[_0x669f[27]](_0x669f[17],license[_0x669f[6]](),license[_0x669f[7]](),auth[_0x669f[8]](),auth[_0x669f[19]](_0x669f[9]),controller[_0x669f[23]]);router[_0x669f[26]](_0x669f[5],license[_0x669f[6]](),license[_0x669f[7]](),auth[_0x669f[8]](),auth[_0x669f[19]](_0x669f[9]),controller[_0x669f[28]]);router[_0x669f[26]](_0x669f[17],license[_0x669f[6]](),license[_0x669f[7]](),auth[_0x669f[8]](),auth[_0x669f[19]](_0x669f[9]),controller[_0x669f[29]]);module[_0x669f[30]]= router \ No newline at end of file diff --git a/server/api/chat_room/chat_room.controller.js b/server/api/chat_room/chat_room.controller.js index 47b4932..d03dac8 100644 --- a/server/api/chat_room/chat_room.controller.js +++ b/server/api/chat_room/chat_room.controller.js @@ -1,655 +1 @@ -'use strict'; - -var _ = require('lodash'); -var md5 = require('md5'); -var moment = require('moment'); -var csv = require('to-csv'); -var util = require('util'); - -var Util = require('../../config/util'); - -var User = require('../../models').User; -var Agent = require('../../models').User; -var ChatRoom = require('../../models').ChatRoom; -var ChatMessage = require('../../models').ChatMessage; -var ChatWebsite = require('../../models').ChatWebsite; -var ChatApplication = require('../../models').ChatApplication; -var ChatQueue = require('../../models').ChatQueue; -var ChatVisitor = require('../../models').ChatVisitor; -var List = require('../../models').List; -var UserHasChatRoom = require('../../models').UserHasChatRoom; - -// Get list of chat_rooms -exports.index = function(req, res, next) { - return ChatRoom - .findAndCountAll(_.merge(Util.getQuery(req.query), { - include: [{ - model: User, - attributes: ['id', 'name', 'fullname', 'email', 'role', 'internal'] - }, { - model: ChatMessage - }, { - model: ChatVisitor - }] - })) - .then(function(result) { - res.status(200).send(result); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -// Get list of fields -exports.describe = function(req, res) { - return ChatRoom - .describe() - .then(function(fields) { - return res.status(200).send(fields); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function getChatQueues(user) { - return function() { - switch (user.role) { - case 'user': - return User - .findById(user.id, { - attributes: ['id'] - }) - .then(Util.getChatQueuesIdByUser({}, { - attributes: ['id'] - })) - .then(function(userQueues) { - return { - include: { - model: ChatWebsite, - include: { - model: ChatApplication, - include: { - model: ChatQueue, - where: { - id: _.map(userQueues, 'id') - } - } - } - } - }; - }); - default: - return {}; - } - } -} - -exports.unmanaged = function(req, res) { - return Promise - .all([]) - .then(getChatQueues(req.user)) - .then(function(condition) { - return ChatRoom - .count(_.merge(Util.getQuery(req.query, { - status: 'UNMANAGED', - updatedAt: { - $gte: moment().startOf('day') - } - }), condition)); - }) - .then(function(data) { - return res.status(200).send({ - value: data - }); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -exports.updatePatch = function(req, res, next) { - var _values = { - tags: req.body.tags - }; - var _options = { - where: { - id: req.params.id.split(',') - } - }; - - return ChatRoom - .update(_values, _options) - .then(function(chatRooms) { - if (!chatRooms) { - return res.sendStatus(404); - } - return chatRooms - }) - .then(function(chatRooms) { - return res.sendStatus(200); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function checkTags(query) { - if (query) { - if (query.tags) { - query.$and = []; - if (_.isArray(query.tags)) { - for (var i = 0; i < query.tags.length; i++) { - query.$and.push({ - tags: { - $like: '%' + query.tags[i] + ';%' - } - }); - } - } else { - query.$and.push({ - tags: { - $like: '%' + query.tags + ';%' - } - }); - } - - delete query.tags; - } - } -} - -exports.getAgents = function(req, res, next) { - switch (req.user.role) { - case 'user': - return User - .findById(req.user.id, { - attributes: ['id'], - where: { - id: { - $ne: req.user.id - }, - online: true - } - }) - .then(Util.getAgentsIdByUser(_.merge(req.query, { - id: { - $ne: req.user.id - } - }))) - .then(function(result) { - return res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); - - default: - return User - .scope('all') - .findAndCountAll(_.merge(Util.getQuery(req.query), { - where: { - id: { - $ne: req.user.id - }, - online: true - } - })) - .then(function(result) { - return res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); - } -}; - -exports.getGroups = function(req, res, next) { - checkTags(req.query); - var _query = { - where: _.merge({ - type: 'group' - }, req.query) - }; - - switch (req.user.role) { - case 'agent': - _.merge(_query, { - include: [{ - model: User, - attributes: ['id'], - where: { - id: req.user.id - } - }] - }) - break; - - default: - } - - return ChatRoom - .findAll(_query) - .then(function(chatRooms) { - return ChatRoom - .findAll({ - where: { - id: { - $in: _.map(chatRooms, 'id') - } - }, - include: [{ - model: User, - attributes: ['id', 'name', 'fullname', 'role', 'userpic'] - }, { - model: ChatVisitor - }] - }); - }) - .then(function(chatRooms) { - return res.status(200).send({ - rows: chatRooms, - count: chatRooms.length - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.getExternals = function(req, res, next) { - checkTags(req.query); - var _query = { - where: _.merge({ - type: 'external' - }, req.query), - include: [{ - model: ChatVisitor, - attributes: ['id', 'fullname'] - }] - }; - - switch (req.user.role) { - case 'agent': - _query.include.push({ - model: User, - attributes: ['id'], - where: { - id: req.user.id - } - }); - - break; - default: - } - - return ChatRoom - .findAll(_query) - .then(function(chatRooms) { - return res.status(200).send({ - rows: chatRooms, - count: chatRooms.length - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.getAgent = function(req, res, next) { - return User - .scope('all') - .findById(req.params.id) - .then(function(result) { - return res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.getOnlineRoom = function(req, res, next) { - return ChatRoom - .scope('online') - .findAndCountAll(_.merge(Util.getQuery(req.query), { - include: [{ - model: User, - attributes: ['id', 'name', 'fullname', 'email', 'role', 'internal'] - }, { - model: ChatMessage - }, { - model: ChatVisitor - }] - })) - .then(function(result) { - res.status(200).send(result); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -// Get list of my chat_rooms -exports.me = function(req, res) { - return User - .findById(req.user.id) - .then(function(user) { - return user - .getChatRooms({ - include: [{ - model: ChatVisitor, - attributes: ['id', 'fullname', 'email'] - }, { - model: User, - attributes: ['id', 'name', 'fullname', 'email', 'role', 'internal'] - }] - }); - }) - .then(function(chatRooms) { - if (!chatRooms) { - return res.sendStatus(404); - } - return res.send(chatRooms); - }) - .catch(function(err) { - console.error(err); - return handleError(res, err); - }); -}; - -// Get a single chatRoom -exports.show = function(req, res) { - return ChatRoom - .findById(req.params.id, { - include: [{ - model: ChatMessage, - include: [{ - model: ChatVisitor, - attributes: ['id', 'email', 'fullname'] - }, { - model: User, - attributes: ['id', 'email', 'name', 'fullname', 'userpic', 'role', 'internal'] - }] - }, { - model: User, - attributes: ['id', 'email', 'name', 'fullname', 'userpic', 'role', 'internal'] - }, { - model: ChatVisitor - }, { - model: ChatWebsite, - attributes: ['id', 'name', 'address'], - include: [List] - }] - }) - .then(function(chatRoom) { - if (!chatRoom) { - return res.sendStatus(404); - } - return res.send(chatRoom); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get a single chatRoom by users -exports.getRoomByUsers = function(req, res, next) { - - var _chatRoom; - - return ChatRoom - .findOrCreate({ - where: { - token: md5(JSON.stringify(req.query.users.sort())).toString('base64') - }, - defaults: { - type: 'internal', - token: md5(JSON.stringify(req.query.users.sort())).toString('base64'), - status: 'OPEN' - }, - include: [{ - model: ChatMessage, - include: [{ - model: ChatVisitor, - attributes: ['id', 'email', 'fullname'] - }, { - model: User, - attributes: ['id', 'name', 'fullname', 'email', 'role', 'internal'] - }] - }, { - model: User, - attributes: ['id', 'name', 'fullname', 'email', 'role', 'internal'] - }] - }) - .spread(function(chatRoom, created) { - _chatRoom = chatRoom; - if (created) { - return _chatRoom - .setUsers(req.query.users); - } - }) - .then(function() { - return _chatRoom - .getUsers(); - }) - .then(function(users) { - return res.status(200).send(_.merge(_chatRoom.dataValues, { - Users: users - })); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.createMessage = function(req, res, next) { - var _chatRoom; - - return ChatRoom - .findById(req.params.id) - .then(function(chatRoom) { - _chatRoom = chatRoom; - - if (!_chatRoom) { - return res.sendStatus(404); - } - }) - .then(function() { - return ChatMessage - .create(_.merge(req.body, { - type: _chatRoom.type, - ChatRoomId: req.params.id, - UserId: req.user.id - })); - }) - .then(function(chatMessage) { - return res.status(200).send(chatMessage); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.export = function(req, res, next) { - return ChatRoom - .findById(req.params.id, { - include: [{ - model: ChatMessage, - include: [{ - model: ChatVisitor, - attributes: ['id', 'fullname'] - }, { - model: User, - attributes: ['id', 'fullname'] - }] - }] - }) - .then(function(chatRoom) { - var chatMessageForCSV = []; - chatRoom.ChatMessages.forEach(function(chatMessage) { - chatMessageForCSV.push({ - name: chatMessage.User ? chatMessage.User.fullname : chatMessage.ChatVisitor.fullname, - text: chatMessage.body.replace(/(\r\n|\n|\r)/gm, " "), - date: chatMessage.createdAt - }); - }); - return res.type('text/csv') - .status(200).send(csv(chatMessageForCSV)); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get a single chatRoom -exports.getRoomByType = function(req, res) { - return User - .findById(req.user.id) - .then(function(user) { - return user - .getChatRooms({ - where: { - type: req.params.type - }, - include: [{ - model: ChatVisitor, - attributes: ['id', 'fullname', 'email'] - }] - }); - }) - .then(function(chatRooms) { - if (!chatRooms) { - return res.sendStatus(404); - } - return res.send(chatRooms); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get a single chatRoom -exports.getRoomGroups = function(req, res) { - return User - .findById(req.user.id) - .then(function(user) { - return user - .getChatRooms({ - include: [{ - model: ChatVisitor, - attributes: ['id', 'fullname', 'email'] - }, { - model: User, - attributes: ['id', 'name', 'fullname', 'email', 'role', 'internal'] - }] - }); - }) - .then(function(chatRooms) { - if (!chatRooms) { - return res.sendStatus(404); - } - return res.send(chatRooms); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Creates a new chatRoom in the DB. -exports.create = function(req, res) {}; - -// Updates an existing chatRoom in the DB. -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - - return ChatRoom - .findById(req.params.id) - .then(function(chatRoom) { - if (!chatRoom) { - return res.sendStatus(404); - } - return chatRoom - .update(req.body); - }) - .then(function(chatRoom) { - return res.status(200).send(chatRoom); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Updates an existing chatRoom in the DB. -exports.updateUsers = function(req, res) { - var _chatRoom; - - if (req.body.id) { - delete req.body.id; - } - - return ChatRoom - .findById(req.params.id) - .then(function(chatRoom) { - if (!chatRoom || !req.body.users) { - return res.sendStatus(404); - } - return chatRoom; - }) - .then(function(chatRoom) { - return chatRoom - .update({ - type: 'group', - token: md5(JSON.stringify(req.body.users.sort())).toString('base64') - }); - }) - .then(function(chatRoom) { - _chatRoom = chatRoom; - return chatRoom - .setUsers(req.body.users.sort(), { - individualHooks: true - }); - }) - .then(function() { - return _chatRoom - .getUsers(); - }) - .then(function(users) { - _.merge(_chatRoom.dataValues, { - Users: users - }); - - return res.status(200).send(_chatRoom); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes a chatRoom from the DB. -exports.destroy = function(req, res) { - return ChatRoom - .findById(req.params.id) - .then(function(chatRoom) { - if (!chatRoom) { - return res.sendStatus(404); - } - return chatRoom - .destroy(); - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function handleError(res, err) { - console.log(err); - return res.status(500).send(err); -} +var _0xd69c=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x6D\x64\x35","\x6D\x6F\x6D\x65\x6E\x74","\x74\x6F\x2D\x63\x73\x76","\x75\x74\x69\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x55\x73\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x43\x68\x61\x74\x52\x6F\x6F\x6D","\x43\x68\x61\x74\x4D\x65\x73\x73\x61\x67\x65","\x43\x68\x61\x74\x57\x65\x62\x73\x69\x74\x65","\x43\x68\x61\x74\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x43\x68\x61\x74\x51\x75\x65\x75\x65","\x43\x68\x61\x74\x56\x69\x73\x69\x74\x6F\x72","\x4C\x69\x73\x74","\x55\x73\x65\x72\x48\x61\x73\x43\x68\x61\x74\x52\x6F\x6F\x6D","\x69\x6E\x64\x65\x78","\x6C\x6F\x67","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x69\x64","\x6E\x61\x6D\x65","\x66\x75\x6C\x6C\x6E\x61\x6D\x65","\x65\x6D\x61\x69\x6C","\x72\x6F\x6C\x65","\x69\x6E\x74\x65\x72\x6E\x61\x6C","\x6D\x65\x72\x67\x65","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x64\x65\x73\x63\x72\x69\x62\x65","\x6D\x61\x70","\x67\x65\x74\x43\x68\x61\x74\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x66\x69\x6E\x64\x42\x79\x49\x64","\x75\x73\x65\x72","\x75\x6E\x6D\x61\x6E\x61\x67\x65\x64","\x55\x4E\x4D\x41\x4E\x41\x47\x45\x44","\x64\x61\x79","\x73\x74\x61\x72\x74\x4F\x66","\x63\x6F\x75\x6E\x74","\x61\x6C\x6C","\x75\x70\x64\x61\x74\x65\x50\x61\x74\x63\x68","\x74\x61\x67\x73","\x62\x6F\x64\x79","\x2C","\x73\x70\x6C\x69\x74","\x70\x61\x72\x61\x6D\x73","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x75\x70\x64\x61\x74\x65","\x24\x61\x6E\x64","\x69\x73\x41\x72\x72\x61\x79","\x6C\x65\x6E\x67\x74\x68","\x25","\x3B\x25","\x70\x75\x73\x68","\x67\x65\x74\x41\x67\x65\x6E\x74\x73","\x67\x65\x74\x41\x67\x65\x6E\x74\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x73\x63\x6F\x70\x65","\x67\x65\x74\x47\x72\x6F\x75\x70\x73","\x67\x72\x6F\x75\x70","\x61\x67\x65\x6E\x74","\x75\x73\x65\x72\x70\x69\x63","\x66\x69\x6E\x64\x41\x6C\x6C","\x67\x65\x74\x45\x78\x74\x65\x72\x6E\x61\x6C\x73","\x65\x78\x74\x65\x72\x6E\x61\x6C","\x69\x6E\x63\x6C\x75\x64\x65","\x67\x65\x74\x41\x67\x65\x6E\x74","\x67\x65\x74\x4F\x6E\x6C\x69\x6E\x65\x52\x6F\x6F\x6D","\x6F\x6E\x6C\x69\x6E\x65","\x6D\x65","\x65\x72\x72\x6F\x72","\x67\x65\x74\x43\x68\x61\x74\x52\x6F\x6F\x6D\x73","\x73\x68\x6F\x77","\x61\x64\x64\x72\x65\x73\x73","\x67\x65\x74\x52\x6F\x6F\x6D\x42\x79\x55\x73\x65\x72\x73","\x64\x61\x74\x61\x56\x61\x6C\x75\x65\x73","\x67\x65\x74\x55\x73\x65\x72\x73","\x75\x73\x65\x72\x73","\x73\x65\x74\x55\x73\x65\x72\x73","\x73\x70\x72\x65\x61\x64","\x62\x61\x73\x65\x36\x34","\x73\x6F\x72\x74","\x73\x74\x72\x69\x6E\x67\x69\x66\x79","\x4F\x50\x45\x4E","\x66\x69\x6E\x64\x4F\x72\x43\x72\x65\x61\x74\x65","\x63\x72\x65\x61\x74\x65\x4D\x65\x73\x73\x61\x67\x65","\x74\x79\x70\x65","\x63\x72\x65\x61\x74\x65","\x65\x78\x70\x6F\x72\x74","\x20","\x72\x65\x70\x6C\x61\x63\x65","\x63\x72\x65\x61\x74\x65\x64\x41\x74","\x66\x6F\x72\x45\x61\x63\x68","\x43\x68\x61\x74\x4D\x65\x73\x73\x61\x67\x65\x73","\x74\x65\x78\x74\x2F\x63\x73\x76","\x67\x65\x74\x52\x6F\x6F\x6D\x42\x79\x54\x79\x70\x65","\x67\x65\x74\x52\x6F\x6F\x6D\x47\x72\x6F\x75\x70\x73","\x75\x70\x64\x61\x74\x65\x55\x73\x65\x72\x73","\x64\x65\x73\x74\x72\x6F\x79"];_0xd69c[0];var _=require(_0xd69c[1]);var md5=require(_0xd69c[2]);var moment=require(_0xd69c[3]);var csv=require(_0xd69c[4]);var util=require(_0xd69c[5]);var Util=require(_0xd69c[6]);var User=require(_0xd69c[8])[_0xd69c[7]];var Agent=require(_0xd69c[8])[_0xd69c[7]];var ChatRoom=require(_0xd69c[8])[_0xd69c[9]];var ChatMessage=require(_0xd69c[8])[_0xd69c[10]];var ChatWebsite=require(_0xd69c[8])[_0xd69c[11]];var ChatApplication=require(_0xd69c[8])[_0xd69c[12]];var ChatQueue=require(_0xd69c[8])[_0xd69c[13]];var ChatVisitor=require(_0xd69c[8])[_0xd69c[14]];var List=require(_0xd69c[8])[_0xd69c[15]];var UserHasChatRoom=require(_0xd69c[8])[_0xd69c[16]];exports[_0xd69c[17]]= function(_0x4270x11,_0x4270x12,_0x4270x13){return ChatRoom[_0xd69c[32]](_[_0xd69c[31]](Util[_0xd69c[24]](_0x4270x11[_0xd69c[23]]),{include:[{model:User,attributes:[_0xd69c[25],_0xd69c[26],_0xd69c[27],_0xd69c[28],_0xd69c[29],_0xd69c[30]]},{model:ChatMessage},{model:ChatVisitor}]}))[_0xd69c[22]](function(_0x4270x15){_0x4270x12[_0xd69c[21]](200)[_0xd69c[20]](_0x4270x15)})[_0xd69c[19]](function(_0x4270x14){console[_0xd69c[18]](_0x4270x14);return handleError(_0x4270x12,_0x4270x14)})};exports[_0xd69c[33]]= function(_0x4270x11,_0x4270x12){return ChatRoom[_0xd69c[33]]()[_0xd69c[22]](function(_0x4270x16){return _0x4270x12[_0xd69c[21]](200)[_0xd69c[20]](_0x4270x16)})[_0xd69c[19]](function(_0x4270x14){return handleError(_0x4270x12,_0x4270x14)})};function getChatQueues(_0x4270x18){return function(){switch(_0x4270x18[_0xd69c[29]]){case _0xd69c[37]:return User[_0xd69c[36]](_0x4270x18[_0xd69c[25]],{attributes:[_0xd69c[25]]})[_0xd69c[22]](Util[_0xd69c[35]]({},{attributes:[_0xd69c[25]]}))[_0xd69c[22]](function(_0x4270x19){return {include:{model:ChatWebsite,include:{model:ChatApplication,include:{model:ChatQueue,where:{id:_[_0xd69c[34]](_0x4270x19,_0xd69c[25])}}}}}});default:return {}}}}exports[_0xd69c[38]]= function(_0x4270x11,_0x4270x12){return Promise[_0xd69c[43]]([])[_0xd69c[22]](getChatQueues(_0x4270x11[_0xd69c[37]]))[_0xd69c[22]](function(_0x4270x1b){return ChatRoom[_0xd69c[42]](_[_0xd69c[31]](Util[_0xd69c[24]](_0x4270x11[_0xd69c[23]],{status:_0xd69c[39],updatedAt:{$gte:moment()[_0xd69c[41]](_0xd69c[40])}}),_0x4270x1b))})[_0xd69c[22]](function(_0x4270x1a){return _0x4270x12[_0xd69c[21]](200)[_0xd69c[20]]({value:_0x4270x1a})})[_0xd69c[19]](function(_0x4270x14){console[_0xd69c[18]](_0x4270x14);return handleError(_0x4270x12,_0x4270x14)})};exports[_0xd69c[44]]= function(_0x4270x11,_0x4270x12,_0x4270x13){var _0x4270x1c={tags:_0x4270x11[_0xd69c[46]][_0xd69c[45]]};var _0x4270x1d={where:{id:_0x4270x11[_0xd69c[49]][_0xd69c[25]][_0xd69c[48]](_0xd69c[47])}};return ChatRoom[_0xd69c[51]](_0x4270x1c,_0x4270x1d)[_0xd69c[22]](function(_0x4270x1e){if(!_0x4270x1e){return _0x4270x12[_0xd69c[50]](404)};return _0x4270x1e})[_0xd69c[22]](function(_0x4270x1e){return _0x4270x12[_0xd69c[50]](200)})[_0xd69c[19]](function(_0x4270x14){return handleError(_0x4270x12,_0x4270x14)})};function checkTags(_0x4270x20){if(_0x4270x20){if(_0x4270x20[_0xd69c[45]]){_0x4270x20[_0xd69c[52]]= [];if(_[_0xd69c[53]](_0x4270x20[_0xd69c[45]])){for(var _0x4270x21=0;_0x4270x21< _0x4270x20[_0xd69c[45]][_0xd69c[54]];_0x4270x21++){_0x4270x20[_0xd69c[52]][_0xd69c[57]]({tags:{$like:_0xd69c[55]+ _0x4270x20[_0xd69c[45]][_0x4270x21]+ _0xd69c[56]}})}}else {_0x4270x20[_0xd69c[52]][_0xd69c[57]]({tags:{$like:_0xd69c[55]+ _0x4270x20[_0xd69c[45]]+ _0xd69c[56]}})};delete _0x4270x20[_0xd69c[45]]}}}exports[_0xd69c[58]]= function(_0x4270x11,_0x4270x12,_0x4270x13){switch(_0x4270x11[_0xd69c[37]][_0xd69c[29]]){case _0xd69c[37]:return User[_0xd69c[36]](_0x4270x11[_0xd69c[37]][_0xd69c[25]],{attributes:[_0xd69c[25]],where:{id:{$ne:_0x4270x11[_0xd69c[37]][_0xd69c[25]]},online:true}})[_0xd69c[22]](Util[_0xd69c[59]](_[_0xd69c[31]](_0x4270x11[_0xd69c[23]],{id:{$ne:_0x4270x11[_0xd69c[37]][_0xd69c[25]]}})))[_0xd69c[22]](function(_0x4270x15){return _0x4270x12[_0xd69c[21]](200)[_0xd69c[20]](_0x4270x15)})[_0xd69c[19]](function(_0x4270x14){return handleError(_0x4270x12,_0x4270x14)});default:return User[_0xd69c[60]](_0xd69c[43])[_0xd69c[32]](_[_0xd69c[31]](Util[_0xd69c[24]](_0x4270x11[_0xd69c[23]]),{where:{id:{$ne:_0x4270x11[_0xd69c[37]][_0xd69c[25]]},online:true}}))[_0xd69c[22]](function(_0x4270x15){return _0x4270x12[_0xd69c[21]](200)[_0xd69c[20]](_0x4270x15)})[_0xd69c[19]](function(_0x4270x14){return handleError(_0x4270x12,_0x4270x14)})}};exports[_0xd69c[61]]= function(_0x4270x11,_0x4270x12,_0x4270x13){checkTags(_0x4270x11[_0xd69c[23]]);var _0x4270x22={where:_[_0xd69c[31]]({type:_0xd69c[62]},_0x4270x11[_0xd69c[23]])};switch(_0x4270x11[_0xd69c[37]][_0xd69c[29]]){case _0xd69c[63]:_[_0xd69c[31]](_0x4270x22,{include:[{model:User,attributes:[_0xd69c[25]],where:{id:_0x4270x11[_0xd69c[37]][_0xd69c[25]]}}]});break;default:};return ChatRoom[_0xd69c[65]](_0x4270x22)[_0xd69c[22]](function(_0x4270x1e){return ChatRoom[_0xd69c[65]]({where:{id:{$in:_[_0xd69c[34]](_0x4270x1e,_0xd69c[25])}},include:[{model:User,attributes:[_0xd69c[25],_0xd69c[26],_0xd69c[27],_0xd69c[29],_0xd69c[64]]},{model:ChatVisitor}]})})[_0xd69c[22]](function(_0x4270x1e){return _0x4270x12[_0xd69c[21]](200)[_0xd69c[20]]({rows:_0x4270x1e,count:_0x4270x1e[_0xd69c[54]]})})[_0xd69c[19]](function(_0x4270x14){return handleError(_0x4270x12,_0x4270x14)})};exports[_0xd69c[66]]= function(_0x4270x11,_0x4270x12,_0x4270x13){checkTags(_0x4270x11[_0xd69c[23]]);var _0x4270x22={where:_[_0xd69c[31]]({type:_0xd69c[67]},_0x4270x11[_0xd69c[23]]),include:[{model:ChatVisitor,attributes:[_0xd69c[25],_0xd69c[27]]}]};switch(_0x4270x11[_0xd69c[37]][_0xd69c[29]]){case _0xd69c[63]:_0x4270x22[_0xd69c[68]][_0xd69c[57]]({model:User,attributes:[_0xd69c[25]],where:{id:_0x4270x11[_0xd69c[37]][_0xd69c[25]]}});break;default:};return ChatRoom[_0xd69c[65]](_0x4270x22)[_0xd69c[22]](function(_0x4270x1e){return _0x4270x12[_0xd69c[21]](200)[_0xd69c[20]]({rows:_0x4270x1e,count:_0x4270x1e[_0xd69c[54]]})})[_0xd69c[19]](function(_0x4270x14){return handleError(_0x4270x12,_0x4270x14)})};exports[_0xd69c[69]]= function(_0x4270x11,_0x4270x12,_0x4270x13){return User[_0xd69c[60]](_0xd69c[43])[_0xd69c[36]](_0x4270x11[_0xd69c[49]][_0xd69c[25]])[_0xd69c[22]](function(_0x4270x15){return _0x4270x12[_0xd69c[21]](200)[_0xd69c[20]](_0x4270x15)})[_0xd69c[19]](function(_0x4270x14){return handleError(_0x4270x12,_0x4270x14)})};exports[_0xd69c[70]]= function(_0x4270x11,_0x4270x12,_0x4270x13){return ChatRoom[_0xd69c[60]](_0xd69c[71])[_0xd69c[32]](_[_0xd69c[31]](Util[_0xd69c[24]](_0x4270x11[_0xd69c[23]]),{include:[{model:User,attributes:[_0xd69c[25],_0xd69c[26],_0xd69c[27],_0xd69c[28],_0xd69c[29],_0xd69c[30]]},{model:ChatMessage},{model:ChatVisitor}]}))[_0xd69c[22]](function(_0x4270x15){_0x4270x12[_0xd69c[21]](200)[_0xd69c[20]](_0x4270x15)})[_0xd69c[19]](function(_0x4270x14){console[_0xd69c[18]](_0x4270x14);return handleError(_0x4270x12,_0x4270x14)})};exports[_0xd69c[72]]= function(_0x4270x11,_0x4270x12){return User[_0xd69c[36]](_0x4270x11[_0xd69c[37]][_0xd69c[25]])[_0xd69c[22]](function(_0x4270x18){return _0x4270x18[_0xd69c[74]]({include:[{model:ChatVisitor,attributes:[_0xd69c[25],_0xd69c[27],_0xd69c[28]]},{model:User,attributes:[_0xd69c[25],_0xd69c[26],_0xd69c[27],_0xd69c[28],_0xd69c[29],_0xd69c[30]]}]})})[_0xd69c[22]](function(_0x4270x1e){if(!_0x4270x1e){return _0x4270x12[_0xd69c[50]](404)};return _0x4270x12[_0xd69c[20]](_0x4270x1e)})[_0xd69c[19]](function(_0x4270x14){console[_0xd69c[73]](_0x4270x14);return handleError(_0x4270x12,_0x4270x14)})};exports[_0xd69c[75]]= function(_0x4270x11,_0x4270x12){return ChatRoom[_0xd69c[36]](_0x4270x11[_0xd69c[49]][_0xd69c[25]],{include:[{model:ChatMessage,include:[{model:ChatVisitor,attributes:[_0xd69c[25],_0xd69c[28],_0xd69c[27]]},{model:User,attributes:[_0xd69c[25],_0xd69c[28],_0xd69c[26],_0xd69c[27],_0xd69c[64],_0xd69c[29],_0xd69c[30]]}]},{model:User,attributes:[_0xd69c[25],_0xd69c[28],_0xd69c[26],_0xd69c[27],_0xd69c[64],_0xd69c[29],_0xd69c[30]]},{model:ChatVisitor},{model:ChatWebsite,attributes:[_0xd69c[25],_0xd69c[26],_0xd69c[76]],include:[List]}]})[_0xd69c[22]](function(_0x4270x23){if(!_0x4270x23){return _0x4270x12[_0xd69c[50]](404)};return _0x4270x12[_0xd69c[20]](_0x4270x23)})[_0xd69c[19]](function(_0x4270x14){return handleError(_0x4270x12,_0x4270x14)})};exports[_0xd69c[77]]= function(_0x4270x11,_0x4270x12,_0x4270x13){var _0x4270x24;return ChatRoom[_0xd69c[87]]({where:{token:md5(JSON[_0xd69c[85]](_0x4270x11[_0xd69c[23]][_0xd69c[80]][_0xd69c[84]]())).toString(_0xd69c[83])},defaults:{type:_0xd69c[30],token:md5(JSON[_0xd69c[85]](_0x4270x11[_0xd69c[23]][_0xd69c[80]][_0xd69c[84]]())).toString(_0xd69c[83]),status:_0xd69c[86]},include:[{model:ChatMessage,include:[{model:ChatVisitor,attributes:[_0xd69c[25],_0xd69c[28],_0xd69c[27]]},{model:User,attributes:[_0xd69c[25],_0xd69c[26],_0xd69c[27],_0xd69c[28],_0xd69c[29],_0xd69c[30]]}]},{model:User,attributes:[_0xd69c[25],_0xd69c[26],_0xd69c[27],_0xd69c[28],_0xd69c[29],_0xd69c[30]]}]})[_0xd69c[82]](function(_0x4270x23,_0x4270x26){_0x4270x24= _0x4270x23;if(_0x4270x26){return _0x4270x24[_0xd69c[81]](_0x4270x11[_0xd69c[23]][_0xd69c[80]])}})[_0xd69c[22]](function(){return _0x4270x24[_0xd69c[79]]()})[_0xd69c[22]](function(_0x4270x25){return _0x4270x12[_0xd69c[21]](200)[_0xd69c[20]](_[_0xd69c[31]](_0x4270x24[_0xd69c[78]],{Users:_0x4270x25}))})[_0xd69c[19]](function(_0x4270x14){return handleError(_0x4270x12,_0x4270x14)})};exports[_0xd69c[88]]= function(_0x4270x11,_0x4270x12,_0x4270x13){var _0x4270x24;return ChatRoom[_0xd69c[36]](_0x4270x11[_0xd69c[49]][_0xd69c[25]])[_0xd69c[22]](function(_0x4270x23){_0x4270x24= _0x4270x23;if(!_0x4270x24){return _0x4270x12[_0xd69c[50]](404)}})[_0xd69c[22]](function(){return ChatMessage[_0xd69c[90]](_[_0xd69c[31]](_0x4270x11[_0xd69c[46]],{type:_0x4270x24[_0xd69c[89]],ChatRoomId:_0x4270x11[_0xd69c[49]][_0xd69c[25]],UserId:_0x4270x11[_0xd69c[37]][_0xd69c[25]]}))})[_0xd69c[22]](function(_0x4270x27){return _0x4270x12[_0xd69c[21]](200)[_0xd69c[20]](_0x4270x27)})[_0xd69c[19]](function(_0x4270x14){return handleError(_0x4270x12,_0x4270x14)})};exports[_0xd69c[91]]= function(_0x4270x11,_0x4270x12,_0x4270x13){return ChatRoom[_0xd69c[36]](_0x4270x11[_0xd69c[49]][_0xd69c[25]],{include:[{model:ChatMessage,include:[{model:ChatVisitor,attributes:[_0xd69c[25],_0xd69c[27]]},{model:User,attributes:[_0xd69c[25],_0xd69c[27]]}]}]})[_0xd69c[22]](function(_0x4270x23){var _0x4270x28=[];_0x4270x23[_0xd69c[96]][_0xd69c[95]](function(_0x4270x27){_0x4270x28[_0xd69c[57]]({name:_0x4270x27[_0xd69c[7]]?_0x4270x27[_0xd69c[7]][_0xd69c[27]]:_0x4270x27[_0xd69c[14]][_0xd69c[27]],text:_0x4270x27[_0xd69c[46]][_0xd69c[93]](/(\r\n|\n|\r)/gm,_0xd69c[92]),date:_0x4270x27[_0xd69c[94]]})});return _0x4270x12[_0xd69c[89]](_0xd69c[97])[_0xd69c[21]](200)[_0xd69c[20]](csv(_0x4270x28))})[_0xd69c[19]](function(_0x4270x14){return handleError(_0x4270x12,_0x4270x14)})};exports[_0xd69c[98]]= function(_0x4270x11,_0x4270x12){return User[_0xd69c[36]](_0x4270x11[_0xd69c[37]][_0xd69c[25]])[_0xd69c[22]](function(_0x4270x18){return _0x4270x18[_0xd69c[74]]({where:{type:_0x4270x11[_0xd69c[49]][_0xd69c[89]]},include:[{model:ChatVisitor,attributes:[_0xd69c[25],_0xd69c[27],_0xd69c[28]]}]})})[_0xd69c[22]](function(_0x4270x1e){if(!_0x4270x1e){return _0x4270x12[_0xd69c[50]](404)};return _0x4270x12[_0xd69c[20]](_0x4270x1e)})[_0xd69c[19]](function(_0x4270x14){return handleError(_0x4270x12,_0x4270x14)})};exports[_0xd69c[99]]= function(_0x4270x11,_0x4270x12){return User[_0xd69c[36]](_0x4270x11[_0xd69c[37]][_0xd69c[25]])[_0xd69c[22]](function(_0x4270x18){return _0x4270x18[_0xd69c[74]]({include:[{model:ChatVisitor,attributes:[_0xd69c[25],_0xd69c[27],_0xd69c[28]]},{model:User,attributes:[_0xd69c[25],_0xd69c[26],_0xd69c[27],_0xd69c[28],_0xd69c[29],_0xd69c[30]]}]})})[_0xd69c[22]](function(_0x4270x1e){if(!_0x4270x1e){return _0x4270x12[_0xd69c[50]](404)};return _0x4270x12[_0xd69c[20]](_0x4270x1e)})[_0xd69c[19]](function(_0x4270x14){return handleError(_0x4270x12,_0x4270x14)})};exports[_0xd69c[90]]= function(_0x4270x11,_0x4270x12){};exports[_0xd69c[51]]= function(_0x4270x11,_0x4270x12){if(_0x4270x11[_0xd69c[46]][_0xd69c[25]]){delete _0x4270x11[_0xd69c[46]][_0xd69c[25]]};return ChatRoom[_0xd69c[36]](_0x4270x11[_0xd69c[49]][_0xd69c[25]])[_0xd69c[22]](function(_0x4270x23){if(!_0x4270x23){return _0x4270x12[_0xd69c[50]](404)};return _0x4270x23[_0xd69c[51]](_0x4270x11[_0xd69c[46]])})[_0xd69c[22]](function(_0x4270x23){return _0x4270x12[_0xd69c[21]](200)[_0xd69c[20]](_0x4270x23)})[_0xd69c[19]](function(_0x4270x14){return handleError(_0x4270x12,_0x4270x14)})};exports[_0xd69c[100]]= function(_0x4270x11,_0x4270x12){var _0x4270x24;if(_0x4270x11[_0xd69c[46]][_0xd69c[25]]){delete _0x4270x11[_0xd69c[46]][_0xd69c[25]]};return ChatRoom[_0xd69c[36]](_0x4270x11[_0xd69c[49]][_0xd69c[25]])[_0xd69c[22]](function(_0x4270x23){if(!_0x4270x23|| !_0x4270x11[_0xd69c[46]][_0xd69c[80]]){return _0x4270x12[_0xd69c[50]](404)};return _0x4270x23})[_0xd69c[22]](function(_0x4270x23){return _0x4270x23[_0xd69c[51]]({type:_0xd69c[62],token:md5(JSON[_0xd69c[85]](_0x4270x11[_0xd69c[46]][_0xd69c[80]][_0xd69c[84]]())).toString(_0xd69c[83])})})[_0xd69c[22]](function(_0x4270x23){_0x4270x24= _0x4270x23;return _0x4270x23[_0xd69c[81]](_0x4270x11[_0xd69c[46]][_0xd69c[80]][_0xd69c[84]](),{individualHooks:true})})[_0xd69c[22]](function(){return _0x4270x24[_0xd69c[79]]()})[_0xd69c[22]](function(_0x4270x25){_[_0xd69c[31]](_0x4270x24[_0xd69c[78]],{Users:_0x4270x25});return _0x4270x12[_0xd69c[21]](200)[_0xd69c[20]](_0x4270x24)})[_0xd69c[19]](function(_0x4270x14){return handleError(_0x4270x12,_0x4270x14)})};exports[_0xd69c[101]]= function(_0x4270x11,_0x4270x12){return ChatRoom[_0xd69c[36]](_0x4270x11[_0xd69c[49]][_0xd69c[25]])[_0xd69c[22]](function(_0x4270x23){if(!_0x4270x23){return _0x4270x12[_0xd69c[50]](404)};return _0x4270x23[_0xd69c[101]]()})[_0xd69c[22]](function(){return _0x4270x12[_0xd69c[50]](204)})[_0xd69c[19]](function(_0x4270x14){return handleError(_0x4270x12,_0x4270x14)})};function handleError(_0x4270x12,_0x4270x14){console[_0xd69c[18]](_0x4270x14);return _0x4270x12[_0xd69c[21]](500)[_0xd69c[20]](_0x4270x14)} \ No newline at end of file diff --git a/server/api/chat_room/chat_room.events.js b/server/api/chat_room/chat_room.events.js index b842a41..1dc06bb 100644 --- a/server/api/chat_room/chat_room.events.js +++ b/server/api/chat_room/chat_room.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const ChatRoom = require('../../models').ChatRoom; - -var ChatRoomEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -ChatRoomEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - ChatRoom.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - ChatRoomEvents.emit(event + ':' + doc._id, doc); - ChatRoomEvents.emit(event, doc); - done(null); - } -} - -module.exports = ChatRoomEvents; +var _0xf4bc=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x43\x68\x61\x74\x52\x6F\x6F\x6D","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xf4bc[0];const EventEmitter=require(_0xf4bc[1]);const ChatRoom=require(_0xf4bc[3])[_0xf4bc[2]];var ChatRoomEvents= new EventEmitter();ChatRoomEvents[_0xf4bc[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xf4bc[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xf4bc[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xf4bc[6]};for(var e in events){var event=events[e];ChatRoom[_0xf4bc[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xfb71x8,_0xfb71x9,_0xfb71xa){ChatRoomEvents[_0xf4bc[10]](event+ _0xf4bc[8]+ _0xfb71x8[_0xf4bc[9]],_0xfb71x8);ChatRoomEvents[_0xf4bc[10]](event,_0xfb71x8);_0xfb71xa(null)}}module[_0xf4bc[11]]= ChatRoomEvents \ No newline at end of file diff --git a/server/api/chat_room/chat_room.socket.js b/server/api/chat_room/chat_room.socket.js index 0f60e68..1085f34 100644 --- a/server/api/chat_room/chat_room.socket.js +++ b/server/api/chat_room/chat_room.socket.js @@ -1,28 +1 @@ -'use strict'; - -const ChatRoomEvents = require('./chat_room.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('chat_room:' + event, socket); - - ChatRoomEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - ChatRoomEvents.removeListener(event, listener); - }; -} +var _0x3eff=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x63\x68\x61\x74\x5F\x72\x6F\x6F\x6D\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x63\x68\x61\x74\x5F\x72\x6F\x6F\x6D\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x3eff[0];const ChatRoomEvents=require(_0x3eff[1]);var events=[_0x3eff[2],_0x3eff[3]];exports[_0x3eff[4]]= function(_0x3ca2x3){for(var _0x3ca2x4=0,_0x3ca2x5=events[_0x3eff[5]];_0x3ca2x4< _0x3ca2x5;_0x3ca2x4++){var _0x3ca2x6=events[_0x3ca2x4];var _0x3ca2x7=createListener(_0x3eff[6]+ _0x3ca2x6,_0x3ca2x3);ChatRoomEvents[_0x3eff[7]](_0x3ca2x6,_0x3ca2x7);_0x3ca2x3[_0x3eff[7]](_0x3eff[8],removeListener(_0x3ca2x6,_0x3ca2x7))}};function createListener(_0x3ca2x6,_0x3ca2x3){return function(_0x3ca2x9){_0x3ca2x3[_0x3eff[9]](_0x3ca2x6,_0x3ca2x9)}}function removeListener(_0x3ca2x6,_0x3ca2x7){return function(){ChatRoomEvents[_0x3eff[10]](_0x3ca2x6,_0x3ca2x7)}} \ No newline at end of file diff --git a/server/api/chat_room/index.js b/server/api/chat_room/index.js index 43f0a87..4a377a6 100644 --- a/server/api/chat_room/index.js +++ b/server/api/chat_room/index.js @@ -1,32 +1 @@ -'use strict'; - -var express = require('express'); - -var controller = require('./chat_room.controller'); -var auth = require('../../auth/auth.service'); -var license = require('../../config/license/license.service'); - -var router = express.Router(); - -router.get('/', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin', 'agent']), controller.index); -router.get('/online', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin', 'agent']), controller.getOnlineRoom); -router.get('/describe', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.describe); -router.get('/unmanaged', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.unmanaged); -router.get('/me', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin', 'user', 'agent']), controller.me); -router.get('/groups', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin', 'agent']), controller.getGroups); -router.get('/externals', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin', 'agent']), controller.getExternals); -router.get('/agents', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin', 'agent']), controller.getAgents); -router.get('/agents/:id', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin', 'agent']), controller.getAgent); -router.get('/users', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin', 'agent']), controller.getRoomByUsers); -// router.get('/groups', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin', 'agent']), controller.getRoomGroups); -router.get('/type/:type', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin', 'agent']), controller.getRoomByType); -router.get('/:id', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin', 'agent']), controller.show); -router.get('/:id/export', license.isValidDate(), license.hasChat(), controller.export); -router.post('/', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin', 'agent']), controller.create); -router.post('/:id/messages', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin', 'agent']), controller.createMessage); -router.patch('/:id', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin', 'agent']), controller.updatePatch); -router.put('/:id', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin', 'agent']), controller.update); -router.put('/:id/users', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin', 'agent']), controller.updateUsers); -router.delete('/:id', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin', 'agent']), controller.destroy); - -module.exports = router; +var _0x25c5=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x63\x68\x61\x74\x5F\x72\x6F\x6F\x6D\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x68\x61\x73\x43\x68\x61\x74","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x6F\x6E\x6C\x69\x6E\x65","\x67\x65\x74\x4F\x6E\x6C\x69\x6E\x65\x52\x6F\x6F\x6D","\x2F\x64\x65\x73\x63\x72\x69\x62\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x2F\x75\x6E\x6D\x61\x6E\x61\x67\x65\x64","\x75\x6E\x6D\x61\x6E\x61\x67\x65\x64","\x2F\x6D\x65","\x75\x73\x65\x72","\x6D\x65","\x2F\x67\x72\x6F\x75\x70\x73","\x67\x65\x74\x47\x72\x6F\x75\x70\x73","\x2F\x65\x78\x74\x65\x72\x6E\x61\x6C\x73","\x67\x65\x74\x45\x78\x74\x65\x72\x6E\x61\x6C\x73","\x2F\x61\x67\x65\x6E\x74\x73","\x67\x65\x74\x41\x67\x65\x6E\x74\x73","\x2F\x61\x67\x65\x6E\x74\x73\x2F\x3A\x69\x64","\x67\x65\x74\x41\x67\x65\x6E\x74","\x2F\x75\x73\x65\x72\x73","\x67\x65\x74\x52\x6F\x6F\x6D\x42\x79\x55\x73\x65\x72\x73","\x2F\x74\x79\x70\x65\x2F\x3A\x74\x79\x70\x65","\x67\x65\x74\x52\x6F\x6F\x6D\x42\x79\x54\x79\x70\x65","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x2F\x3A\x69\x64\x2F\x65\x78\x70\x6F\x72\x74","\x65\x78\x70\x6F\x72\x74","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x2F\x3A\x69\x64\x2F\x6D\x65\x73\x73\x61\x67\x65\x73","\x63\x72\x65\x61\x74\x65\x4D\x65\x73\x73\x61\x67\x65","\x75\x70\x64\x61\x74\x65\x50\x61\x74\x63\x68","\x70\x61\x74\x63\x68","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x2F\x3A\x69\x64\x2F\x75\x73\x65\x72\x73","\x75\x70\x64\x61\x74\x65\x55\x73\x65\x72\x73","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0x25c5[0];var express=require(_0x25c5[1]);var controller=require(_0x25c5[2]);var auth=require(_0x25c5[3]);var license=require(_0x25c5[4]);var router=express.Router();router[_0x25c5[13]](_0x25c5[5],license[_0x25c5[6]](),license[_0x25c5[7]](),auth[_0x25c5[8]](),auth[_0x25c5[11]]([8],[_0x25c5[9],_0x25c5[10]]),controller[_0x25c5[12]]);router[_0x25c5[13]](_0x25c5[14],license[_0x25c5[6]](),license[_0x25c5[7]](),auth[_0x25c5[8]](),auth[_0x25c5[11]]([8],[_0x25c5[9],_0x25c5[10]]),controller[_0x25c5[15]]);router[_0x25c5[13]](_0x25c5[16],license[_0x25c5[6]](),license[_0x25c5[7]](),auth[_0x25c5[8]](),auth[_0x25c5[11]]([8],[_0x25c5[9]]),controller[_0x25c5[17]]);router[_0x25c5[13]](_0x25c5[18],license[_0x25c5[6]](),license[_0x25c5[7]](),auth[_0x25c5[8]](),auth[_0x25c5[11]]([8],[_0x25c5[9]]),controller[_0x25c5[19]]);router[_0x25c5[13]](_0x25c5[20],license[_0x25c5[6]](),license[_0x25c5[7]](),auth[_0x25c5[8]](),auth[_0x25c5[11]]([8],[_0x25c5[9],_0x25c5[21],_0x25c5[10]]),controller[_0x25c5[22]]);router[_0x25c5[13]](_0x25c5[23],license[_0x25c5[6]](),license[_0x25c5[7]](),auth[_0x25c5[8]](),auth[_0x25c5[11]]([8],[_0x25c5[9],_0x25c5[10]]),controller[_0x25c5[24]]);router[_0x25c5[13]](_0x25c5[25],license[_0x25c5[6]](),license[_0x25c5[7]](),auth[_0x25c5[8]](),auth[_0x25c5[11]]([8],[_0x25c5[9],_0x25c5[10]]),controller[_0x25c5[26]]);router[_0x25c5[13]](_0x25c5[27],license[_0x25c5[6]](),license[_0x25c5[7]](),auth[_0x25c5[8]](),auth[_0x25c5[11]]([8],[_0x25c5[9],_0x25c5[10]]),controller[_0x25c5[28]]);router[_0x25c5[13]](_0x25c5[29],license[_0x25c5[6]](),license[_0x25c5[7]](),auth[_0x25c5[8]](),auth[_0x25c5[11]]([8],[_0x25c5[9],_0x25c5[10]]),controller[_0x25c5[30]]);router[_0x25c5[13]](_0x25c5[31],license[_0x25c5[6]](),license[_0x25c5[7]](),auth[_0x25c5[8]](),auth[_0x25c5[11]]([8],[_0x25c5[9],_0x25c5[10]]),controller[_0x25c5[32]]);router[_0x25c5[13]](_0x25c5[33],license[_0x25c5[6]](),license[_0x25c5[7]](),auth[_0x25c5[8]](),auth[_0x25c5[11]]([8],[_0x25c5[9],_0x25c5[10]]),controller[_0x25c5[34]]);router[_0x25c5[13]](_0x25c5[35],license[_0x25c5[6]](),license[_0x25c5[7]](),auth[_0x25c5[8]](),auth[_0x25c5[11]]([8],[_0x25c5[9],_0x25c5[10]]),controller[_0x25c5[36]]);router[_0x25c5[13]](_0x25c5[37],license[_0x25c5[6]](),license[_0x25c5[7]](),controller[_0x25c5[38]]);router[_0x25c5[40]](_0x25c5[5],license[_0x25c5[6]](),license[_0x25c5[7]](),auth[_0x25c5[8]](),auth[_0x25c5[11]]([8],[_0x25c5[9],_0x25c5[10]]),controller[_0x25c5[39]]);router[_0x25c5[40]](_0x25c5[41],license[_0x25c5[6]](),license[_0x25c5[7]](),auth[_0x25c5[8]](),auth[_0x25c5[11]]([8],[_0x25c5[9],_0x25c5[10]]),controller[_0x25c5[42]]);router[_0x25c5[44]](_0x25c5[35],license[_0x25c5[6]](),license[_0x25c5[7]](),auth[_0x25c5[8]](),auth[_0x25c5[11]]([8],[_0x25c5[9],_0x25c5[10]]),controller[_0x25c5[43]]);router[_0x25c5[46]](_0x25c5[35],license[_0x25c5[6]](),license[_0x25c5[7]](),auth[_0x25c5[8]](),auth[_0x25c5[11]]([8],[_0x25c5[9],_0x25c5[10]]),controller[_0x25c5[45]]);router[_0x25c5[46]](_0x25c5[47],license[_0x25c5[6]](),license[_0x25c5[7]](),auth[_0x25c5[8]](),auth[_0x25c5[11]]([8],[_0x25c5[9],_0x25c5[10]]),controller[_0x25c5[48]]);router[_0x25c5[50]](_0x25c5[35],license[_0x25c5[6]](),license[_0x25c5[7]](),auth[_0x25c5[8]](),auth[_0x25c5[11]]([8],[_0x25c5[9],_0x25c5[10]]),controller[_0x25c5[49]]);module[_0x25c5[51]]= router \ No newline at end of file diff --git a/server/api/chat_visitor/chat_visitor.controller.js b/server/api/chat_visitor/chat_visitor.controller.js index 38e5d14..c5c9fdf 100644 --- a/server/api/chat_visitor/chat_visitor.controller.js +++ b/server/api/chat_visitor/chat_visitor.controller.js @@ -1,104 +1 @@ -'use strict'; - -var _ = require('lodash'); -var Util = require('../../config/util'); - -var ChatVisitor = require('../../models').ChatVisitor; -var ChatEnquiry = require('../../models').ChatEnquiry; -var ChatWebsite = require('../../models').ChatWebsite; - -// Get list of agents -exports.index = function(req, res, next) { - return ChatVisitor - .findAndCountAll(_.merge(Util.getQuery(req.query), { - include: [{ - model: ChatWebsite - }] - })) - .then(function(result) { - res.status(200).send(result); - }) - .catch(function(err) { - console.error(err); - return handleError(res, err); - }); -}; - -// Get a single chatVisitor -exports.show = function(req, res) { - return ChatVisitor - .findById(req.params.id, { - include: [{ - model: ChatEnquiry - }, { - model: ChatWebsite - }] - }) - .then(function(chatVisitor) { - if (!chatVisitor) { - return res.sendStatus(404); - } - return res.send(chatVisitor); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Creates a new chatVisitor in the DB. -exports.create = function(req, res) { - return ChatVisitor - .create(req.body) - .then(function(chatVisitor) { - return res.status(201).send(chatVisitor); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Updates an existing chatVisitor in the DB. -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - return ChatVisitor - .findById(req.params.id) - .then(function(chatVisitor) { - if (!chatVisitor) { - return res.sendStatus(404); - } - var updated = _.merge(chatVisitor, req.body); - return updated - .save(); - }) - .then(function(chatVisitor) { - return res.status(200).send(chatVisitor); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes a chatVisitor from the DB. -exports.destroy = function(req, res) { - return ChatVisitor - .findById(req.params.id) - .then(function(chatVisitor) { - if (!chatVisitor) { - return res.sendStatus(404); - } - return chatVisitor - .destroy(); - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0xe14f=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x43\x68\x61\x74\x56\x69\x73\x69\x74\x6F\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x43\x68\x61\x74\x45\x6E\x71\x75\x69\x72\x79","\x43\x68\x61\x74\x57\x65\x62\x73\x69\x74\x65","\x69\x6E\x64\x65\x78","\x65\x72\x72\x6F\x72","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x6D\x65\x72\x67\x65","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x73\x61\x76\x65","\x64\x65\x73\x74\x72\x6F\x79"];_0xe14f[0];var _=require(_0xe14f[1]);var Util=require(_0xe14f[2]);var ChatVisitor=require(_0xe14f[4])[_0xe14f[3]];var ChatEnquiry=require(_0xe14f[4])[_0xe14f[5]];var ChatWebsite=require(_0xe14f[4])[_0xe14f[6]];exports[_0xe14f[7]]= function(_0xb39bx6,_0xb39bx7,_0xb39bx8){return ChatVisitor[_0xe14f[16]](_[_0xe14f[15]](Util[_0xe14f[14]](_0xb39bx6[_0xe14f[13]]),{include:[{model:ChatWebsite}]}))[_0xe14f[12]](function(_0xb39bxa){_0xb39bx7[_0xe14f[11]](200)[_0xe14f[10]](_0xb39bxa)})[_0xe14f[9]](function(_0xb39bx9){console[_0xe14f[8]](_0xb39bx9);return handleError(_0xb39bx7,_0xb39bx9)})};exports[_0xe14f[17]]= function(_0xb39bx6,_0xb39bx7){return ChatVisitor[_0xe14f[21]](_0xb39bx6[_0xe14f[20]][_0xe14f[19]],{include:[{model:ChatEnquiry},{model:ChatWebsite}]})[_0xe14f[12]](function(_0xb39bxb){if(!_0xb39bxb){return _0xb39bx7[_0xe14f[18]](404)};return _0xb39bx7[_0xe14f[10]](_0xb39bxb)})[_0xe14f[9]](function(_0xb39bx9){return handleError(_0xb39bx7,_0xb39bx9)})};exports[_0xe14f[22]]= function(_0xb39bx6,_0xb39bx7){return ChatVisitor[_0xe14f[22]](_0xb39bx6[_0xe14f[23]])[_0xe14f[12]](function(_0xb39bxb){return _0xb39bx7[_0xe14f[11]](201)[_0xe14f[10]](_0xb39bxb)})[_0xe14f[9]](function(_0xb39bx9){return handleError(_0xb39bx7,_0xb39bx9)})};exports[_0xe14f[24]]= function(_0xb39bx6,_0xb39bx7){if(_0xb39bx6[_0xe14f[23]][_0xe14f[19]]){delete _0xb39bx6[_0xe14f[23]][_0xe14f[19]]};return ChatVisitor[_0xe14f[21]](_0xb39bx6[_0xe14f[20]][_0xe14f[19]])[_0xe14f[12]](function(_0xb39bxb){if(!_0xb39bxb){return _0xb39bx7[_0xe14f[18]](404)};var _0xb39bxc=_[_0xe14f[15]](_0xb39bxb,_0xb39bx6[_0xe14f[23]]);return _0xb39bxc[_0xe14f[25]]()})[_0xe14f[12]](function(_0xb39bxb){return _0xb39bx7[_0xe14f[11]](200)[_0xe14f[10]](_0xb39bxb)})[_0xe14f[9]](function(_0xb39bx9){return handleError(_0xb39bx7,_0xb39bx9)})};exports[_0xe14f[26]]= function(_0xb39bx6,_0xb39bx7){return ChatVisitor[_0xe14f[21]](_0xb39bx6[_0xe14f[20]][_0xe14f[19]])[_0xe14f[12]](function(_0xb39bxb){if(!_0xb39bxb){return _0xb39bx7[_0xe14f[18]](404)};return _0xb39bxb[_0xe14f[26]]()})[_0xe14f[12]](function(){return _0xb39bx7[_0xe14f[18]](204)})[_0xe14f[9]](function(_0xb39bx9){return handleError(_0xb39bx7,_0xb39bx9)})};function handleError(_0xb39bx7,_0xb39bx9){return _0xb39bx7[_0xe14f[11]](500)[_0xe14f[10]](_0xb39bx9)} \ No newline at end of file diff --git a/server/api/chat_visitor/chat_visitor.events.js b/server/api/chat_visitor/chat_visitor.events.js index d4c36db..4708d46 100644 --- a/server/api/chat_visitor/chat_visitor.events.js +++ b/server/api/chat_visitor/chat_visitor.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const ChatVisitor = require('../../models').ChatVisitor; - -var ChatVisitorEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -ChatVisitorEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - ChatVisitor.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - ChatVisitorEvents.emit(event + ':' + doc._id, doc); - ChatVisitorEvents.emit(event, doc); - done(null); - } -} - -module.exports = ChatVisitorEvents; +var _0x1831=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x43\x68\x61\x74\x56\x69\x73\x69\x74\x6F\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x1831[0];const EventEmitter=require(_0x1831[1]);const ChatVisitor=require(_0x1831[3])[_0x1831[2]];var ChatVisitorEvents= new EventEmitter();ChatVisitorEvents[_0x1831[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x1831[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x1831[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x1831[6]};for(var e in events){var event=events[e];ChatVisitor[_0x1831[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x816dx8,_0x816dx9,_0x816dxa){ChatVisitorEvents[_0x1831[10]](event+ _0x1831[8]+ _0x816dx8[_0x1831[9]],_0x816dx8);ChatVisitorEvents[_0x1831[10]](event,_0x816dx8);_0x816dxa(null)}}module[_0x1831[11]]= ChatVisitorEvents \ No newline at end of file diff --git a/server/api/chat_visitor/chat_visitor.socket.js b/server/api/chat_visitor/chat_visitor.socket.js index 3a627b1..47eaede 100644 --- a/server/api/chat_visitor/chat_visitor.socket.js +++ b/server/api/chat_visitor/chat_visitor.socket.js @@ -1,28 +1 @@ -'use strict'; - -const ChatVisitorEvents = require('./chat_visitor.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('chat_visitor:' + event, socket); - - ChatVisitorEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - ChatVisitorEvents.removeListener(event, listener); - }; -} +var _0xb9c9=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x63\x68\x61\x74\x5F\x76\x69\x73\x69\x74\x6F\x72\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x63\x68\x61\x74\x5F\x76\x69\x73\x69\x74\x6F\x72\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xb9c9[0];const ChatVisitorEvents=require(_0xb9c9[1]);var events=[_0xb9c9[2],_0xb9c9[3]];exports[_0xb9c9[4]]= function(_0xf8cbx3){for(var _0xf8cbx4=0,_0xf8cbx5=events[_0xb9c9[5]];_0xf8cbx4< _0xf8cbx5;_0xf8cbx4++){var _0xf8cbx6=events[_0xf8cbx4];var _0xf8cbx7=createListener(_0xb9c9[6]+ _0xf8cbx6,_0xf8cbx3);ChatVisitorEvents[_0xb9c9[7]](_0xf8cbx6,_0xf8cbx7);_0xf8cbx3[_0xb9c9[7]](_0xb9c9[8],removeListener(_0xf8cbx6,_0xf8cbx7))}};function createListener(_0xf8cbx6,_0xf8cbx3){return function(_0xf8cbx9){_0xf8cbx3[_0xb9c9[9]](_0xf8cbx6,_0xf8cbx9)}}function removeListener(_0xf8cbx6,_0xf8cbx7){return function(){ChatVisitorEvents[_0xb9c9[10]](_0xf8cbx6,_0xf8cbx7)}} \ No newline at end of file diff --git a/server/api/chat_visitor/index.js b/server/api/chat_visitor/index.js index 829db71..6d11e66 100644 --- a/server/api/chat_visitor/index.js +++ b/server/api/chat_visitor/index.js @@ -1,17 +1 @@ -'use strict'; - -var express = require('express'); - -var controller = require('./chat_visitor.controller'); -var auth = require('../../auth/auth.service'); -var license = require('../../config/license/license.service'); - -var router = express.Router(); - -router.get('/', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.index); -router.get('/:id', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.show); -router.post('/', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.create); -router.put('/:id', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.update); -router.delete('/:id', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.destroy); - -module.exports = router; +var _0xbdc7=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x63\x68\x61\x74\x5F\x76\x69\x73\x69\x74\x6F\x72\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x68\x61\x73\x43\x68\x61\x74","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0xbdc7[0];var express=require(_0xbdc7[1]);var controller=require(_0xbdc7[2]);var auth=require(_0xbdc7[3]);var license=require(_0xbdc7[4]);var router=express.Router();router[_0xbdc7[12]](_0xbdc7[5],license[_0xbdc7[6]](),license[_0xbdc7[7]](),auth[_0xbdc7[8]](),auth[_0xbdc7[10]]([8],[_0xbdc7[9]]),controller[_0xbdc7[11]]);router[_0xbdc7[12]](_0xbdc7[13],license[_0xbdc7[6]](),license[_0xbdc7[7]](),auth[_0xbdc7[8]](),auth[_0xbdc7[10]]([8],[_0xbdc7[9]]),controller[_0xbdc7[14]]);router[_0xbdc7[16]](_0xbdc7[5],license[_0xbdc7[6]](),license[_0xbdc7[7]](),auth[_0xbdc7[8]](),auth[_0xbdc7[10]]([8],[_0xbdc7[9]]),controller[_0xbdc7[15]]);router[_0xbdc7[18]](_0xbdc7[13],license[_0xbdc7[6]](),license[_0xbdc7[7]](),auth[_0xbdc7[8]](),auth[_0xbdc7[10]]([8],[_0xbdc7[9]]),controller[_0xbdc7[17]]);router[_0xbdc7[20]](_0xbdc7[13],license[_0xbdc7[6]](),license[_0xbdc7[7]](),auth[_0xbdc7[8]](),auth[_0xbdc7[10]]([8],[_0xbdc7[9]]),controller[_0xbdc7[19]]);module[_0xbdc7[21]]= router \ No newline at end of file diff --git a/server/api/chat_website/chat_website.controller.js b/server/api/chat_website/chat_website.controller.js index 2543fd9..967985f 100644 --- a/server/api/chat_website/chat_website.controller.js +++ b/server/api/chat_website/chat_website.controller.js @@ -1,579 +1 @@ -'use strict'; - -var _ = require('lodash'); -var util = require('util'); -var Mustache = require('mustache'); -var Util = require('../../config/util'); - -var sequelize = require('../../models').sequelize; -var ChatWebsite = require('../../models').ChatWebsite; -var ChatQueue = require('../../models').ChatQueue; -var User = require('../../models').User; -var Interval = require('../../models').Interval; -var ChatApplication = require('../../models').ChatApplication; -var ChatWebsitesField = require('../../models').ChatWebsitesField; -var ChatProactiveAction = require('../../models').ChatProactiveAction; -var ChatDisposition = require('../../models').ChatDisposition; -var snippet = require('../../components/xchatty').snippet; -var UploadFile = require('upload-file'); -var path = require('path'); -var sr = require('simple-random'); -var config = require('../../config/environment'); - - -// Get list of agents -exports.index = function(req, res, next) { - return ChatWebsite - .findAndCountAll(Util.getQuery(req.query)) - .then(function(result) { - res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; -// Get a single chat_website -exports.show = function(req, res) { - return ChatWebsite - .findById(req.params.id) - .then(function(chat_website) { - if (!chat_website) { - return res.sendStatus(404); - } - return res.send(chat_website); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - - -exports.changeLogo = function(req, res) { - - var upload = new UploadFile({ - dest: path.join(config.root, 'server', 'files', 'images'), - maxNumberOfFiles: 1, - minNumberOfFiles: 0, - acceptFileTypes: /(\.|\/)(jpeg|png)$/i, - rename: function(name, file) { - return sr() + path.extname(file.filename); - }, - messages: { - maxNumberOfFiles: "Max number of files upload exceeded", - acceptFileTypes: "Only jpeg and png format accepted", - invalidRequest: "Invalid request" - } - }); - - upload.on('end', function(fields, files) { - if (!files.file.filename) { - return res.status(500).send(upload); - } - return sequelize.transaction(function(t) { - return ChatWebsite - .findById(req.params.id) - .then(function(website) { - if (!website) { - return res.sendStatus(404); - } - var body = {}; - body.logo = files.file.filename; - return website - .update(body, { - transaction: t - }); - }) - .then(function(user) { - return res.status(200).send(user); - }) - }) - .catch(function(err) { - return handleError(res, err); - }); - }); - - upload.on('error', function(err) { - console.log('********** Upload error :', err) - return handleError(res, err); - }); - - upload.parse(req); -} - -exports.getDispositions = function(req, res, next) { - return ChatWebsite - .findById(req.params.id) - .then(function(chat_website) { - if (!chat_website) { - return res.sendStatus(404); - } - - return chat_website - .getChatDispositions(); - }) - .then(function(chatDispositions) { - return res.status(200).send({ - rows: chatDispositions, - count: chatDispositions.length - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.createDisposition = function(req, res, next) { - req.body.ChatWebsiteId = req.params.id; - - return ChatDisposition - .create(req.body) - .then(function(chatDisposition) { - return res.status(201).send(chatDisposition); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.updateDisposition = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - - return ChatDisposition - .findById(req.params.dispId) - .then(function(chatDisposition) { - if (!chatDisposition) { - return res.sendStatus(404); - } - var updated = _.merge(chatDisposition, req.body); - return updated - .save(); - }) - .then(function(chat_website) { - return res.status(200).send(chat_website); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.destroyDisposition = function(req, res, next) { - return ChatDisposition - .findById(req.params.dispId) - .then(function(chatDiposition) { - if (!chatDiposition) { - return res.sendStatus(404); - } - - return chatDiposition - .destroy(); - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.showApplications = function(req, res, next) { - return ChatWebsite - // .scope('default') - .findById(req.params.id) - .then(function(chatWebsite) { - if (!chatWebsite) { - return res.sendStatus(404); - } - return chatWebsite - .getChatApplications(_.merge(Util.getQuery(req.query), { - include: [{ - model: ChatQueue, - attributes: ['id', 'name'] - }, { - model: User, - attributes: ['id', 'name'] - }, { - model: Interval, - attributes: ['id', 'name'] - }] - })); - }) - .then(function(chatApplications) { - return res.send({ - count: chatApplications.length, - rows: chatApplications - }); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -exports.showProactiveActions = function(req, res, next) { - return ChatWebsite - .findById(req.params.id) - .then(function(chatWebsite) { - if (!chatWebsite) { - return res.sendStatus(404); - } - return chatWebsite - .getChatProactiveActions(Util.getQuery(req.query)); - }) - .then(function(chatProactiveActions) { - return res.send({ - count: chatProactiveActions.length, - rows: chatProactiveActions - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get a snippet for chat_website -exports.getSnippetCode = function(req, res) { - return ChatWebsite - .findById(req.params.id) - .then(function(chat_website) { - var configSnippet = { - remote: chat_website.remote, - websiteId: req.params.id - }; - var html = Mustache.render(snippet, configSnippet); - return res.status(200).send({ - html: html - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Creates a new chat_website in the DB. -exports.create = function(req, res) { - return ChatWebsite - .create(req.body) - .then(function(chat_website) { - return res.status(201).send(chat_website); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -// Updates an existing chat_website in the DB. -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - - return ChatWebsite - .findById(req.params.id) - .then(function(chat_website) { - if (!chat_website) { - return res.sendStatus(404); - } - - return chat_website - .update(req.body); - }) - .then(function(chat_website) { - return res.status(200).send(chat_website); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.updateApplications = function(req, res) { - - var priority = 0; - var apps = req.body; - - apps.forEach(function(app) { - delete app.id; - delete app.createdAt; - delete app.updatedAt; - - app.priority = ++priority; - }); - - return sequelize.transaction(function(t) { - return ChatApplication - .destroy({ - where: { - ChatWebsiteId: req.params.id - }, - individualHooks: true, - transaction: t - }).then(function() { - return ChatApplication - .bulkCreate(apps, { - individualHooks: true, - transaction: t - }); - }); - }).then(function(chatApplications) { - return res.status(200).send({ - count: chatApplications.length, - rows: chatApplications - }); - }).catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes a chat_website from the DB. -exports.destroy = function(req, res) { - return ChatWebsite - .findById(req.params.id) - .then(function(chat_website) { - if (!chat_website) { - return res.sendStatus(404); - } - return chat_website - .destroy(); - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes a agent from the DB. -exports.bulkDestroy = function(req, res) { - return ChatWebsite - .destroy({ - where: { - id: req.query.websites - }, - individualHooks: true - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes a agent from the DB. -exports.bulkDestroyApplications = function(req, res) { - return ChatApplication - .destroy({ - where: { - id: req.query.ids - }, - individualHooks: true - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes a mailAccount from the DB. -exports.destroyApplication = function(req, res, next) { - return ChatApplication - .findById(req.params.appId) - .then(function(chatApplication) { - if (!chatApplication) { - return res.sendStatus(404); - } - - return chatApplication - .destroy(); - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.getForms = function(req, res) { - return ChatWebsitesField - .scope({ - method: [req.params.type, req.params.id] - }) - .findAll() - .then(function(data) { - return res.status(200).json(data); - }) - .catch(function(err) { - return handleError(res, err); - }); -} - -exports.updateForms = function(req, res, next) { - return ChatWebsitesField - .destroy({ - where: req.params.type === 'online' ? { - OnlineId: req.params.id - } : { - OfflineId: req.params.id - } - }) - .then(function() { - _.forEach(req.body, function(value) { - if (req.params.type === 'online') { - value.OnlineId = req.params.id; - } else if (req.params.type === 'offline') { - value.OfflineId = req.params.id; - } - }); - return ChatWebsitesField.bulkCreate(req.body); - }) - .then(function(fields) { - res.status(201).json(fields); - }) - .catch(function(err) { - return handleError(res, err); - }); -} - -exports.bulkDestroyProactiveActions = function(req, res) { - return ChatProactiveAction - .destroy({ - where: { - id: req.query.ids - }, - individualHooks: true - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.destroyProactiveAction = function(req, res, next) { - return ChatProactiveAction - .findById(req.params.pactionId) - .then(function(chatProactiveAction) { - if (!chatProactiveAction) { - return res.sendStatus(404); - } - return chatProactiveAction.destroy(); - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.createProactiveAction = function(req, res, next) { - return ChatWebsite - .findById(req.params.id) - .then(function(chatWebsite) { - if (!chatWebsite) { - return res.sendStatus(404); - } - req.body.ChatWebsiteId = chatWebsite.id; - return ChatProactiveAction.create(req.body); - }) - .then(function(chatProactiveAction) { - return res.status(201).send(chatProactiveAction); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.updateProactiveAction = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - - return ChatProactiveAction - .findById(req.params.pactionId) - .then(function(chatProactiveAction) { - if (!chatProactiveAction) { - return res.sendStatus(404); - } - - return chatProactiveAction - .update(req.body); - }) - .then(function(chatProactiveAction) { - return res.status(200).send(chatProactiveAction); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} - -exports.createApplication = function(req, res, next) { - return ChatApplication - .max('priority', { - where: { - ChatWebsiteId: req.params.id - } - }).then(function(max) { - // SET PRIORITY - req.body.priority = max ? ++max : 1; - req.body.ChatWebsiteId = req.params.id; - return ChatApplication - .create(req.body); - }) - .then(function(chatApplication) { - return res.status(201).send(chatApplication); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.updateApplication = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - return ChatApplication.findById(req.params.appId) - .then(function(chatApplication) { - if (!chatApplication) { - return res.sendStatus(404); - } - - return chatApplication - .update(req.body); - }) - .then(function(chatApplication) { - return res.status(200).send(chatApplication); - }) - .catch(function(err) { - return handleError(res, err); - }); -} - -exports.showApplication = function(req, res) { - return ChatApplication - .findById(req.params.appId, { - include: [{ - all: true - }] - }) - .then(function(chatApplication) { - if (!chatApplication) { - return res.sendStatus(404); - } - return res.send(chatApplication); - }) - .catch(function(err) { - return handleError(res, err); - }); -} +var _0xe966=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x75\x74\x69\x6C","\x6D\x75\x73\x74\x61\x63\x68\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x43\x68\x61\x74\x57\x65\x62\x73\x69\x74\x65","\x43\x68\x61\x74\x51\x75\x65\x75\x65","\x55\x73\x65\x72","\x49\x6E\x74\x65\x72\x76\x61\x6C","\x43\x68\x61\x74\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x43\x68\x61\x74\x57\x65\x62\x73\x69\x74\x65\x73\x46\x69\x65\x6C\x64","\x43\x68\x61\x74\x50\x72\x6F\x61\x63\x74\x69\x76\x65\x41\x63\x74\x69\x6F\x6E","\x43\x68\x61\x74\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x73\x6E\x69\x70\x70\x65\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6D\x70\x6F\x6E\x65\x6E\x74\x73\x2F\x78\x63\x68\x61\x74\x74\x79","\x75\x70\x6C\x6F\x61\x64\x2D\x66\x69\x6C\x65","\x70\x61\x74\x68","\x73\x69\x6D\x70\x6C\x65\x2D\x72\x61\x6E\x64\x6F\x6D","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x68\x61\x6E\x67\x65\x4C\x6F\x67\x6F","\x72\x6F\x6F\x74","\x73\x65\x72\x76\x65\x72","\x66\x69\x6C\x65\x73","\x69\x6D\x61\x67\x65\x73","\x6A\x6F\x69\x6E","\x66\x69\x6C\x65\x6E\x61\x6D\x65","\x65\x78\x74\x6E\x61\x6D\x65","\x4D\x61\x78\x20\x6E\x75\x6D\x62\x65\x72\x20\x6F\x66\x20\x66\x69\x6C\x65\x73\x20\x75\x70\x6C\x6F\x61\x64\x20\x65\x78\x63\x65\x65\x64\x65\x64","\x4F\x6E\x6C\x79\x20\x6A\x70\x65\x67\x20\x61\x6E\x64\x20\x70\x6E\x67\x20\x66\x6F\x72\x6D\x61\x74\x20\x61\x63\x63\x65\x70\x74\x65\x64","\x49\x6E\x76\x61\x6C\x69\x64\x20\x72\x65\x71\x75\x65\x73\x74","\x65\x6E\x64","\x66\x69\x6C\x65","\x6C\x6F\x67\x6F","\x75\x70\x64\x61\x74\x65","\x74\x72\x61\x6E\x73\x61\x63\x74\x69\x6F\x6E","\x6F\x6E","\x65\x72\x72\x6F\x72","\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x20\x55\x70\x6C\x6F\x61\x64\x20\x65\x72\x72\x6F\x72\x20\x3A","\x6C\x6F\x67","\x70\x61\x72\x73\x65","\x67\x65\x74\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x73","\x6C\x65\x6E\x67\x74\x68","\x67\x65\x74\x43\x68\x61\x74\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x73","\x63\x72\x65\x61\x74\x65\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x43\x68\x61\x74\x57\x65\x62\x73\x69\x74\x65\x49\x64","\x62\x6F\x64\x79","\x63\x72\x65\x61\x74\x65","\x75\x70\x64\x61\x74\x65\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x64\x69\x73\x70\x49\x64","\x64\x65\x73\x74\x72\x6F\x79\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x64\x65\x73\x74\x72\x6F\x79","\x73\x68\x6F\x77\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x6E\x61\x6D\x65","\x67\x65\x74\x43\x68\x61\x74\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x73\x68\x6F\x77\x50\x72\x6F\x61\x63\x74\x69\x76\x65\x41\x63\x74\x69\x6F\x6E\x73","\x67\x65\x74\x43\x68\x61\x74\x50\x72\x6F\x61\x63\x74\x69\x76\x65\x41\x63\x74\x69\x6F\x6E\x73","\x67\x65\x74\x53\x6E\x69\x70\x70\x65\x74\x43\x6F\x64\x65","\x72\x65\x6D\x6F\x74\x65","\x72\x65\x6E\x64\x65\x72","\x75\x70\x64\x61\x74\x65\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x63\x72\x65\x61\x74\x65\x64\x41\x74","\x75\x70\x64\x61\x74\x65\x64\x41\x74","\x70\x72\x69\x6F\x72\x69\x74\x79","\x66\x6F\x72\x45\x61\x63\x68","\x62\x75\x6C\x6B\x43\x72\x65\x61\x74\x65","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x77\x65\x62\x73\x69\x74\x65\x73","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x69\x64\x73","\x64\x65\x73\x74\x72\x6F\x79\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x61\x70\x70\x49\x64","\x67\x65\x74\x46\x6F\x72\x6D\x73","\x6A\x73\x6F\x6E","\x66\x69\x6E\x64\x41\x6C\x6C","\x74\x79\x70\x65","\x73\x63\x6F\x70\x65","\x75\x70\x64\x61\x74\x65\x46\x6F\x72\x6D\x73","\x6F\x6E\x6C\x69\x6E\x65","\x4F\x6E\x6C\x69\x6E\x65\x49\x64","\x6F\x66\x66\x6C\x69\x6E\x65","\x4F\x66\x66\x6C\x69\x6E\x65\x49\x64","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79\x50\x72\x6F\x61\x63\x74\x69\x76\x65\x41\x63\x74\x69\x6F\x6E\x73","\x64\x65\x73\x74\x72\x6F\x79\x50\x72\x6F\x61\x63\x74\x69\x76\x65\x41\x63\x74\x69\x6F\x6E","\x70\x61\x63\x74\x69\x6F\x6E\x49\x64","\x63\x72\x65\x61\x74\x65\x50\x72\x6F\x61\x63\x74\x69\x76\x65\x41\x63\x74\x69\x6F\x6E","\x75\x70\x64\x61\x74\x65\x50\x72\x6F\x61\x63\x74\x69\x76\x65\x41\x63\x74\x69\x6F\x6E","\x63\x72\x65\x61\x74\x65\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x6D\x61\x78","\x75\x70\x64\x61\x74\x65\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x73\x68\x6F\x77\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E"];_0xe966[0];var _=require(_0xe966[1]);var util=require(_0xe966[2]);var Mustache=require(_0xe966[3]);var Util=require(_0xe966[4]);var sequelize=require(_0xe966[6])[_0xe966[5]];var ChatWebsite=require(_0xe966[6])[_0xe966[7]];var ChatQueue=require(_0xe966[6])[_0xe966[8]];var User=require(_0xe966[6])[_0xe966[9]];var Interval=require(_0xe966[6])[_0xe966[10]];var ChatApplication=require(_0xe966[6])[_0xe966[11]];var ChatWebsitesField=require(_0xe966[6])[_0xe966[12]];var ChatProactiveAction=require(_0xe966[6])[_0xe966[13]];var ChatDisposition=require(_0xe966[6])[_0xe966[14]];var snippet=require(_0xe966[16])[_0xe966[15]];var UploadFile=require(_0xe966[17]);var path=require(_0xe966[18]);var sr=require(_0xe966[19]);var config=require(_0xe966[20]);exports[_0xe966[21]]= function(_0xed44x13,_0xed44x14,_0xed44x15){return ChatWebsite[_0xe966[28]](Util[_0xe966[27]](_0xed44x13[_0xe966[26]]))[_0xe966[25]](function(_0xed44x17){_0xed44x14[_0xe966[24]](200)[_0xe966[23]](_0xed44x17)})[_0xe966[22]](function(_0xed44x16){return handleError(_0xed44x14,_0xed44x16)})};exports[_0xe966[29]]= function(_0xed44x13,_0xed44x14){return ChatWebsite[_0xe966[33]](_0xed44x13[_0xe966[32]][_0xe966[31]])[_0xe966[25]](function(_0xed44x18){if(!_0xed44x18){return _0xed44x14[_0xe966[30]](404)};return _0xed44x14[_0xe966[23]](_0xed44x18)})[_0xe966[22]](function(_0xed44x16){return handleError(_0xed44x14,_0xed44x16)})};exports[_0xe966[34]]= function(_0xed44x13,_0xed44x14){var _0xed44x19= new UploadFile({dest:path[_0xe966[39]](config[_0xe966[35]],_0xe966[36],_0xe966[37],_0xe966[38]),maxNumberOfFiles:1,minNumberOfFiles:0,acceptFileTypes:/(\.|\/)(jpeg|png)$/i,rename:function(_0xed44x1a,_0xed44x1b){return sr()+ path[_0xe966[41]](_0xed44x1b[_0xe966[40]])},messages:{maxNumberOfFiles:_0xe966[42],acceptFileTypes:_0xe966[43],invalidRequest:_0xe966[44]}});_0xed44x19[_0xe966[50]](_0xe966[45],function(_0xed44x1c,_0xed44x1d){if(!_0xed44x1d[_0xe966[46]][_0xe966[40]]){return _0xed44x14[_0xe966[24]](500)[_0xe966[23]](_0xed44x19)};return sequelize[_0xe966[49]](function(_0xed44x1e){return ChatWebsite[_0xe966[33]](_0xed44x13[_0xe966[32]][_0xe966[31]])[_0xe966[25]](function(_0xed44x20){if(!_0xed44x20){return _0xed44x14[_0xe966[30]](404)};var _0xed44x21={};_0xed44x21[_0xe966[47]]= _0xed44x1d[_0xe966[46]][_0xe966[40]];return _0xed44x20[_0xe966[48]](_0xed44x21,{transaction:_0xed44x1e})})[_0xe966[25]](function(_0xed44x1f){return _0xed44x14[_0xe966[24]](200)[_0xe966[23]](_0xed44x1f)})})[_0xe966[22]](function(_0xed44x16){return handleError(_0xed44x14,_0xed44x16)})});_0xed44x19[_0xe966[50]](_0xe966[51],function(_0xed44x16){console[_0xe966[53]](_0xe966[52],_0xed44x16);return handleError(_0xed44x14,_0xed44x16)});_0xed44x19[_0xe966[54]](_0xed44x13)};exports[_0xe966[55]]= function(_0xed44x13,_0xed44x14,_0xed44x15){return ChatWebsite[_0xe966[33]](_0xed44x13[_0xe966[32]][_0xe966[31]])[_0xe966[25]](function(_0xed44x18){if(!_0xed44x18){return _0xed44x14[_0xe966[30]](404)};return _0xed44x18[_0xe966[57]]()})[_0xe966[25]](function(_0xed44x22){return _0xed44x14[_0xe966[24]](200)[_0xe966[23]]({rows:_0xed44x22,count:_0xed44x22[_0xe966[56]]})})[_0xe966[22]](function(_0xed44x16){return handleError(_0xed44x14,_0xed44x16)})};exports[_0xe966[58]]= function(_0xed44x13,_0xed44x14,_0xed44x15){_0xed44x13[_0xe966[60]][_0xe966[59]]= _0xed44x13[_0xe966[32]][_0xe966[31]];return ChatDisposition[_0xe966[61]](_0xed44x13[_0xe966[60]])[_0xe966[25]](function(_0xed44x23){return _0xed44x14[_0xe966[24]](201)[_0xe966[23]](_0xed44x23)})[_0xe966[22]](function(_0xed44x16){return handleError(_0xed44x14,_0xed44x16)})};exports[_0xe966[62]]= function(_0xed44x13,_0xed44x14){if(_0xed44x13[_0xe966[60]][_0xe966[31]]){delete _0xed44x13[_0xe966[60]][_0xe966[31]]};return ChatDisposition[_0xe966[33]](_0xed44x13[_0xe966[32]][_0xe966[65]])[_0xe966[25]](function(_0xed44x23){if(!_0xed44x23){return _0xed44x14[_0xe966[30]](404)};var _0xed44x24=_[_0xe966[63]](_0xed44x23,_0xed44x13[_0xe966[60]]);return _0xed44x24[_0xe966[64]]()})[_0xe966[25]](function(_0xed44x18){return _0xed44x14[_0xe966[24]](200)[_0xe966[23]](_0xed44x18)})[_0xe966[22]](function(_0xed44x16){return handleError(_0xed44x14,_0xed44x16)})};exports[_0xe966[66]]= function(_0xed44x13,_0xed44x14,_0xed44x15){return ChatDisposition[_0xe966[33]](_0xed44x13[_0xe966[32]][_0xe966[65]])[_0xe966[25]](function(_0xed44x25){if(!_0xed44x25){return _0xed44x14[_0xe966[30]](404)};return _0xed44x25[_0xe966[67]]()})[_0xe966[25]](function(){return _0xed44x14[_0xe966[30]](204)})[_0xe966[22]](function(_0xed44x16){return handleError(_0xed44x14,_0xed44x16)})};exports[_0xe966[68]]= function(_0xed44x13,_0xed44x14,_0xed44x15){return ChatWebsite[_0xe966[33]](_0xed44x13[_0xe966[32]][_0xe966[31]])[_0xe966[25]](function(_0xed44x27){if(!_0xed44x27){return _0xed44x14[_0xe966[30]](404)};return _0xed44x27[_0xe966[70]](_[_0xe966[63]](Util[_0xe966[27]](_0xed44x13[_0xe966[26]]),{include:[{model:ChatQueue,attributes:[_0xe966[31],_0xe966[69]]},{model:User,attributes:[_0xe966[31],_0xe966[69]]},{model:Interval,attributes:[_0xe966[31],_0xe966[69]]}]}))})[_0xe966[25]](function(_0xed44x26){return _0xed44x14[_0xe966[23]]({count:_0xed44x26[_0xe966[56]],rows:_0xed44x26})})[_0xe966[22]](function(_0xed44x16){console[_0xe966[53]](_0xed44x16);return handleError(_0xed44x14,_0xed44x16)})};exports[_0xe966[71]]= function(_0xed44x13,_0xed44x14,_0xed44x15){return ChatWebsite[_0xe966[33]](_0xed44x13[_0xe966[32]][_0xe966[31]])[_0xe966[25]](function(_0xed44x27){if(!_0xed44x27){return _0xed44x14[_0xe966[30]](404)};return _0xed44x27[_0xe966[72]](Util[_0xe966[27]](_0xed44x13[_0xe966[26]]))})[_0xe966[25]](function(_0xed44x28){return _0xed44x14[_0xe966[23]]({count:_0xed44x28[_0xe966[56]],rows:_0xed44x28})})[_0xe966[22]](function(_0xed44x16){return handleError(_0xed44x14,_0xed44x16)})};exports[_0xe966[73]]= function(_0xed44x13,_0xed44x14){return ChatWebsite[_0xe966[33]](_0xed44x13[_0xe966[32]][_0xe966[31]])[_0xe966[25]](function(_0xed44x18){var _0xed44x29={remote:_0xed44x18[_0xe966[74]],websiteId:_0xed44x13[_0xe966[32]][_0xe966[31]]};var _0xed44x2a=Mustache[_0xe966[75]](snippet,_0xed44x29);return _0xed44x14[_0xe966[24]](200)[_0xe966[23]]({html:_0xed44x2a})})[_0xe966[22]](function(_0xed44x16){return handleError(_0xed44x14,_0xed44x16)})};exports[_0xe966[61]]= function(_0xed44x13,_0xed44x14){return ChatWebsite[_0xe966[61]](_0xed44x13[_0xe966[60]])[_0xe966[25]](function(_0xed44x18){return _0xed44x14[_0xe966[24]](201)[_0xe966[23]](_0xed44x18)})[_0xe966[22]](function(_0xed44x16){console[_0xe966[53]](_0xed44x16);return handleError(_0xed44x14,_0xed44x16)})};exports[_0xe966[48]]= function(_0xed44x13,_0xed44x14){if(_0xed44x13[_0xe966[60]][_0xe966[31]]){delete _0xed44x13[_0xe966[60]][_0xe966[31]]};return ChatWebsite[_0xe966[33]](_0xed44x13[_0xe966[32]][_0xe966[31]])[_0xe966[25]](function(_0xed44x18){if(!_0xed44x18){return _0xed44x14[_0xe966[30]](404)};return _0xed44x18[_0xe966[48]](_0xed44x13[_0xe966[60]])})[_0xe966[25]](function(_0xed44x18){return _0xed44x14[_0xe966[24]](200)[_0xe966[23]](_0xed44x18)})[_0xe966[22]](function(_0xed44x16){return handleError(_0xed44x14,_0xed44x16)})};exports[_0xe966[76]]= function(_0xed44x13,_0xed44x14){var _0xed44x2b=0;var _0xed44x2c=_0xed44x13[_0xe966[60]];_0xed44x2c[_0xe966[80]](function(_0xed44x2d){delete _0xed44x2d[_0xe966[31]];delete _0xed44x2d[_0xe966[77]];delete _0xed44x2d[_0xe966[78]];_0xed44x2d[_0xe966[79]]= ++_0xed44x2b});return sequelize[_0xe966[49]](function(_0xed44x1e){return ChatApplication[_0xe966[67]]({where:{ChatWebsiteId:_0xed44x13[_0xe966[32]][_0xe966[31]]},individualHooks:true,transaction:_0xed44x1e})[_0xe966[25]](function(){return ChatApplication[_0xe966[81]](_0xed44x2c,{individualHooks:true,transaction:_0xed44x1e})})})[_0xe966[25]](function(_0xed44x26){return _0xed44x14[_0xe966[24]](200)[_0xe966[23]]({count:_0xed44x26[_0xe966[56]],rows:_0xed44x26})})[_0xe966[22]](function(_0xed44x16){return handleError(_0xed44x14,_0xed44x16)})};exports[_0xe966[67]]= function(_0xed44x13,_0xed44x14){return ChatWebsite[_0xe966[33]](_0xed44x13[_0xe966[32]][_0xe966[31]])[_0xe966[25]](function(_0xed44x18){if(!_0xed44x18){return _0xed44x14[_0xe966[30]](404)};return _0xed44x18[_0xe966[67]]()})[_0xe966[25]](function(){return _0xed44x14[_0xe966[30]](204)})[_0xe966[22]](function(_0xed44x16){return handleError(_0xed44x14,_0xed44x16)})};exports[_0xe966[82]]= function(_0xed44x13,_0xed44x14){return ChatWebsite[_0xe966[67]]({where:{id:_0xed44x13[_0xe966[26]][_0xe966[83]]},individualHooks:true})[_0xe966[25]](function(){return _0xed44x14[_0xe966[30]](204)})[_0xe966[22]](function(_0xed44x16){return handleError(_0xed44x14,_0xed44x16)})};exports[_0xe966[84]]= function(_0xed44x13,_0xed44x14){return ChatApplication[_0xe966[67]]({where:{id:_0xed44x13[_0xe966[26]][_0xe966[85]]},individualHooks:true})[_0xe966[25]](function(){return _0xed44x14[_0xe966[30]](204)})[_0xe966[22]](function(_0xed44x16){return handleError(_0xed44x14,_0xed44x16)})};exports[_0xe966[86]]= function(_0xed44x13,_0xed44x14,_0xed44x15){return ChatApplication[_0xe966[33]](_0xed44x13[_0xe966[32]][_0xe966[87]])[_0xe966[25]](function(_0xed44x2e){if(!_0xed44x2e){return _0xed44x14[_0xe966[30]](404)};return _0xed44x2e[_0xe966[67]]()})[_0xe966[25]](function(){return _0xed44x14[_0xe966[30]](204)})[_0xe966[22]](function(_0xed44x16){return handleError(_0xed44x14,_0xed44x16)})};exports[_0xe966[88]]= function(_0xed44x13,_0xed44x14){return ChatWebsitesField[_0xe966[92]]({method:[_0xed44x13[_0xe966[32]][_0xe966[91]],_0xed44x13[_0xe966[32]][_0xe966[31]]]})[_0xe966[90]]()[_0xe966[25]](function(_0xed44x2f){return _0xed44x14[_0xe966[24]](200)[_0xe966[89]](_0xed44x2f)})[_0xe966[22]](function(_0xed44x16){return handleError(_0xed44x14,_0xed44x16)})};exports[_0xe966[93]]= function(_0xed44x13,_0xed44x14,_0xed44x15){return ChatWebsitesField[_0xe966[67]]({where:_0xed44x13[_0xe966[32]][_0xe966[91]]=== _0xe966[94]?{OnlineId:_0xed44x13[_0xe966[32]][_0xe966[31]]}:{OfflineId:_0xed44x13[_0xe966[32]][_0xe966[31]]}})[_0xe966[25]](function(){_[_0xe966[80]](_0xed44x13[_0xe966[60]],function(_0xed44x30){if(_0xed44x13[_0xe966[32]][_0xe966[91]]=== _0xe966[94]){_0xed44x30[_0xe966[95]]= _0xed44x13[_0xe966[32]][_0xe966[31]]}else {if(_0xed44x13[_0xe966[32]][_0xe966[91]]=== _0xe966[96]){_0xed44x30[_0xe966[97]]= _0xed44x13[_0xe966[32]][_0xe966[31]]}}});return ChatWebsitesField[_0xe966[81]](_0xed44x13[_0xe966[60]])})[_0xe966[25]](function(_0xed44x1c){_0xed44x14[_0xe966[24]](201)[_0xe966[89]](_0xed44x1c)})[_0xe966[22]](function(_0xed44x16){return handleError(_0xed44x14,_0xed44x16)})};exports[_0xe966[98]]= function(_0xed44x13,_0xed44x14){return ChatProactiveAction[_0xe966[67]]({where:{id:_0xed44x13[_0xe966[26]][_0xe966[85]]},individualHooks:true})[_0xe966[25]](function(){return _0xed44x14[_0xe966[30]](204)})[_0xe966[22]](function(_0xed44x16){return handleError(_0xed44x14,_0xed44x16)})};exports[_0xe966[99]]= function(_0xed44x13,_0xed44x14,_0xed44x15){return ChatProactiveAction[_0xe966[33]](_0xed44x13[_0xe966[32]][_0xe966[100]])[_0xe966[25]](function(_0xed44x31){if(!_0xed44x31){return _0xed44x14[_0xe966[30]](404)};return _0xed44x31[_0xe966[67]]()})[_0xe966[25]](function(){return _0xed44x14[_0xe966[30]](204)})[_0xe966[22]](function(_0xed44x16){return handleError(_0xed44x14,_0xed44x16)})};exports[_0xe966[101]]= function(_0xed44x13,_0xed44x14,_0xed44x15){return ChatWebsite[_0xe966[33]](_0xed44x13[_0xe966[32]][_0xe966[31]])[_0xe966[25]](function(_0xed44x27){if(!_0xed44x27){return _0xed44x14[_0xe966[30]](404)};_0xed44x13[_0xe966[60]][_0xe966[59]]= _0xed44x27[_0xe966[31]];return ChatProactiveAction[_0xe966[61]](_0xed44x13[_0xe966[60]])})[_0xe966[25]](function(_0xed44x31){return _0xed44x14[_0xe966[24]](201)[_0xe966[23]](_0xed44x31)})[_0xe966[22]](function(_0xed44x16){return handleError(_0xed44x14,_0xed44x16)})};exports[_0xe966[102]]= function(_0xed44x13,_0xed44x14){if(_0xed44x13[_0xe966[60]][_0xe966[31]]){delete _0xed44x13[_0xe966[60]][_0xe966[31]]};return ChatProactiveAction[_0xe966[33]](_0xed44x13[_0xe966[32]][_0xe966[100]])[_0xe966[25]](function(_0xed44x31){if(!_0xed44x31){return _0xed44x14[_0xe966[30]](404)};return _0xed44x31[_0xe966[48]](_0xed44x13[_0xe966[60]])})[_0xe966[25]](function(_0xed44x31){return _0xed44x14[_0xe966[24]](200)[_0xe966[23]](_0xed44x31)})[_0xe966[22]](function(_0xed44x16){return handleError(_0xed44x14,_0xed44x16)})};function handleError(_0xed44x14,_0xed44x16){return _0xed44x14[_0xe966[24]](500)[_0xe966[23]](_0xed44x16)}exports[_0xe966[103]]= function(_0xed44x13,_0xed44x14,_0xed44x15){return ChatApplication[_0xe966[104]](_0xe966[79],{where:{ChatWebsiteId:_0xed44x13[_0xe966[32]][_0xe966[31]]}})[_0xe966[25]](function(_0xed44x33){_0xed44x13[_0xe966[60]][_0xe966[79]]= _0xed44x33?++_0xed44x33:1;_0xed44x13[_0xe966[60]][_0xe966[59]]= _0xed44x13[_0xe966[32]][_0xe966[31]];return ChatApplication[_0xe966[61]](_0xed44x13[_0xe966[60]])})[_0xe966[25]](function(_0xed44x2e){return _0xed44x14[_0xe966[24]](201)[_0xe966[23]](_0xed44x2e)})[_0xe966[22]](function(_0xed44x16){return handleError(_0xed44x14,_0xed44x16)})};exports[_0xe966[105]]= function(_0xed44x13,_0xed44x14){if(_0xed44x13[_0xe966[60]][_0xe966[31]]){delete _0xed44x13[_0xe966[60]][_0xe966[31]]};return ChatApplication[_0xe966[33]](_0xed44x13[_0xe966[32]][_0xe966[87]])[_0xe966[25]](function(_0xed44x2e){if(!_0xed44x2e){return _0xed44x14[_0xe966[30]](404)};return _0xed44x2e[_0xe966[48]](_0xed44x13[_0xe966[60]])})[_0xe966[25]](function(_0xed44x2e){return _0xed44x14[_0xe966[24]](200)[_0xe966[23]](_0xed44x2e)})[_0xe966[22]](function(_0xed44x16){return handleError(_0xed44x14,_0xed44x16)})};exports[_0xe966[106]]= function(_0xed44x13,_0xed44x14){return ChatApplication[_0xe966[33]](_0xed44x13[_0xe966[32]][_0xe966[87]],{include:[{all:true}]})[_0xe966[25]](function(_0xed44x2e){if(!_0xed44x2e){return _0xed44x14[_0xe966[30]](404)};return _0xed44x14[_0xe966[23]](_0xed44x2e)})[_0xe966[22]](function(_0xed44x16){return handleError(_0xed44x14,_0xed44x16)})} \ No newline at end of file diff --git a/server/api/chat_website/chat_website.events.js b/server/api/chat_website/chat_website.events.js index f910de1..8340e19 100644 --- a/server/api/chat_website/chat_website.events.js +++ b/server/api/chat_website/chat_website.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const ChatWebsite = require('../../models').ChatWebsite; - -var ChatWebsiteEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -ChatWebsiteEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - ChatWebsite.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - ChatWebsiteEvents.emit(event + ':' + doc._id, doc); - ChatWebsiteEvents.emit(event, doc); - done(null); - } -} - -module.exports = ChatWebsiteEvents; +var _0x114c=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x43\x68\x61\x74\x57\x65\x62\x73\x69\x74\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x114c[0];const EventEmitter=require(_0x114c[1]);const ChatWebsite=require(_0x114c[3])[_0x114c[2]];var ChatWebsiteEvents= new EventEmitter();ChatWebsiteEvents[_0x114c[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x114c[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x114c[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x114c[6]};for(var e in events){var event=events[e];ChatWebsite[_0x114c[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x1acdx8,_0x1acdx9,_0x1acdxa){ChatWebsiteEvents[_0x114c[10]](event+ _0x114c[8]+ _0x1acdx8[_0x114c[9]],_0x1acdx8);ChatWebsiteEvents[_0x114c[10]](event,_0x1acdx8);_0x1acdxa(null)}}module[_0x114c[11]]= ChatWebsiteEvents \ No newline at end of file diff --git a/server/api/chat_website/chat_website.socket.js b/server/api/chat_website/chat_website.socket.js index 5200183..c03bdcc 100644 --- a/server/api/chat_website/chat_website.socket.js +++ b/server/api/chat_website/chat_website.socket.js @@ -1,28 +1 @@ -'use strict'; - -const ChatWebsiteEvents = require('./chat_website.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('chat_website:' + event, socket); - - ChatWebsiteEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - ChatWebsiteEvents.removeListener(event, listener); - }; -} +var _0xb014=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x63\x68\x61\x74\x5F\x77\x65\x62\x73\x69\x74\x65\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x63\x68\x61\x74\x5F\x77\x65\x62\x73\x69\x74\x65\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xb014[0];const ChatWebsiteEvents=require(_0xb014[1]);var events=[_0xb014[2],_0xb014[3]];exports[_0xb014[4]]= function(_0xc2b0x3){for(var _0xc2b0x4=0,_0xc2b0x5=events[_0xb014[5]];_0xc2b0x4< _0xc2b0x5;_0xc2b0x4++){var _0xc2b0x6=events[_0xc2b0x4];var _0xc2b0x7=createListener(_0xb014[6]+ _0xc2b0x6,_0xc2b0x3);ChatWebsiteEvents[_0xb014[7]](_0xc2b0x6,_0xc2b0x7);_0xc2b0x3[_0xb014[7]](_0xb014[8],removeListener(_0xc2b0x6,_0xc2b0x7))}};function createListener(_0xc2b0x6,_0xc2b0x3){return function(_0xc2b0x9){_0xc2b0x3[_0xb014[9]](_0xc2b0x6,_0xc2b0x9)}}function removeListener(_0xc2b0x6,_0xc2b0x7){return function(){ChatWebsiteEvents[_0xb014[10]](_0xc2b0x6,_0xc2b0x7)}} \ No newline at end of file diff --git a/server/api/chat_website/index.js b/server/api/chat_website/index.js index a197f8f..a57ecf4 100644 --- a/server/api/chat_website/index.js +++ b/server/api/chat_website/index.js @@ -1,40 +1 @@ -'use strict'; - -var express = require('express'); - -var controller = require('./chat_website.controller'); -var auth = require('../../auth/auth.service'); -var license = require('../../config/license/license.service'); - -var router = express.Router(); - -router.get('/', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.index); -router.get('/:id', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin', 'agent']), controller.show); -router.get('/:id/applications', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.showApplications); -router.get('/:id/applications/:appId', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.showApplication); -router.get('/:id/dispositions', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin', 'agent']), controller.getDispositions); -router.get('/:id/proactive', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.showProactiveActions); -router.get('/:id/fields/:type', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.getForms); -router.get('/:id/snippet', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.getSnippetCode); -router.post('/', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.create); -router.post('/:id/applications', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.createApplication); -router.post('/:id/dispositions', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.createDisposition); -router.post('/:id/proactive', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.createProactiveAction); -router.post('/:id/logo', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.changeLogo); -router.put('/:id', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.update); -router.put('/:id/applications', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.updateApplications); -router.put('/:id/applications/:appId', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.updateApplication); -router.put('/:id/dispositions/:dispId', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.updateDisposition); -router.put('/:id/proactive/:pactionId', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.updateProactiveAction); -router.put('/:id/fields/:type', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.updateForms); -router.patch('/:id', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.update); -router.delete('/', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.bulkDestroy); -router.delete('/:id', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.destroy); -router.delete('/:id/applications', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.bulkDestroyApplications); -router.delete('/:id/proactive', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.bulkDestroyProactiveActions); -router.delete('/:id/applications/:appId', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.destroyApplication); -router.delete('/:id/proactive/:pactionId', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.destroyProactiveAction); -router.delete('/:id/dispositions/:dispId', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.destroyDisposition); - - -module.exports = router; +var _0x3b3b=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x63\x68\x61\x74\x5F\x77\x65\x62\x73\x69\x74\x65\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x68\x61\x73\x43\x68\x61\x74","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x61\x67\x65\x6E\x74","\x73\x68\x6F\x77","\x2F\x3A\x69\x64\x2F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x73\x68\x6F\x77\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x2F\x3A\x69\x64\x2F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73\x2F\x3A\x61\x70\x70\x49\x64","\x73\x68\x6F\x77\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x2F\x3A\x69\x64\x2F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x73","\x67\x65\x74\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x73","\x2F\x3A\x69\x64\x2F\x70\x72\x6F\x61\x63\x74\x69\x76\x65","\x73\x68\x6F\x77\x50\x72\x6F\x61\x63\x74\x69\x76\x65\x41\x63\x74\x69\x6F\x6E\x73","\x2F\x3A\x69\x64\x2F\x66\x69\x65\x6C\x64\x73\x2F\x3A\x74\x79\x70\x65","\x67\x65\x74\x46\x6F\x72\x6D\x73","\x2F\x3A\x69\x64\x2F\x73\x6E\x69\x70\x70\x65\x74","\x67\x65\x74\x53\x6E\x69\x70\x70\x65\x74\x43\x6F\x64\x65","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x63\x72\x65\x61\x74\x65\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x63\x72\x65\x61\x74\x65\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x63\x72\x65\x61\x74\x65\x50\x72\x6F\x61\x63\x74\x69\x76\x65\x41\x63\x74\x69\x6F\x6E","\x2F\x3A\x69\x64\x2F\x6C\x6F\x67\x6F","\x63\x68\x61\x6E\x67\x65\x4C\x6F\x67\x6F","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x75\x70\x64\x61\x74\x65\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x75\x70\x64\x61\x74\x65\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x2F\x3A\x69\x64\x2F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x73\x2F\x3A\x64\x69\x73\x70\x49\x64","\x75\x70\x64\x61\x74\x65\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x2F\x3A\x69\x64\x2F\x70\x72\x6F\x61\x63\x74\x69\x76\x65\x2F\x3A\x70\x61\x63\x74\x69\x6F\x6E\x49\x64","\x75\x70\x64\x61\x74\x65\x50\x72\x6F\x61\x63\x74\x69\x76\x65\x41\x63\x74\x69\x6F\x6E","\x75\x70\x64\x61\x74\x65\x46\x6F\x72\x6D\x73","\x70\x61\x74\x63\x68","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79\x50\x72\x6F\x61\x63\x74\x69\x76\x65\x41\x63\x74\x69\x6F\x6E\x73","\x64\x65\x73\x74\x72\x6F\x79\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x64\x65\x73\x74\x72\x6F\x79\x50\x72\x6F\x61\x63\x74\x69\x76\x65\x41\x63\x74\x69\x6F\x6E","\x64\x65\x73\x74\x72\x6F\x79\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x65\x78\x70\x6F\x72\x74\x73"];_0x3b3b[0];var express=require(_0x3b3b[1]);var controller=require(_0x3b3b[2]);var auth=require(_0x3b3b[3]);var license=require(_0x3b3b[4]);var router=express.Router();router[_0x3b3b[12]](_0x3b3b[5],license[_0x3b3b[6]](),license[_0x3b3b[7]](),auth[_0x3b3b[8]](),auth[_0x3b3b[10]]([8],[_0x3b3b[9]]),controller[_0x3b3b[11]]);router[_0x3b3b[12]](_0x3b3b[13],license[_0x3b3b[6]](),license[_0x3b3b[7]](),auth[_0x3b3b[8]](),auth[_0x3b3b[10]]([8],[_0x3b3b[9],_0x3b3b[14]]),controller[_0x3b3b[15]]);router[_0x3b3b[12]](_0x3b3b[16],license[_0x3b3b[6]](),license[_0x3b3b[7]](),auth[_0x3b3b[8]](),auth[_0x3b3b[10]]([8],[_0x3b3b[9]]),controller[_0x3b3b[17]]);router[_0x3b3b[12]](_0x3b3b[18],license[_0x3b3b[6]](),license[_0x3b3b[7]](),auth[_0x3b3b[8]](),auth[_0x3b3b[10]]([8],[_0x3b3b[9]]),controller[_0x3b3b[19]]);router[_0x3b3b[12]](_0x3b3b[20],license[_0x3b3b[6]](),license[_0x3b3b[7]](),auth[_0x3b3b[8]](),auth[_0x3b3b[10]]([8],[_0x3b3b[9],_0x3b3b[14]]),controller[_0x3b3b[21]]);router[_0x3b3b[12]](_0x3b3b[22],license[_0x3b3b[6]](),license[_0x3b3b[7]](),auth[_0x3b3b[8]](),auth[_0x3b3b[10]]([8],[_0x3b3b[9]]),controller[_0x3b3b[23]]);router[_0x3b3b[12]](_0x3b3b[24],license[_0x3b3b[6]](),license[_0x3b3b[7]](),auth[_0x3b3b[8]](),auth[_0x3b3b[10]]([8],[_0x3b3b[9]]),controller[_0x3b3b[25]]);router[_0x3b3b[12]](_0x3b3b[26],license[_0x3b3b[6]](),license[_0x3b3b[7]](),auth[_0x3b3b[8]](),auth[_0x3b3b[10]]([8],[_0x3b3b[9]]),controller[_0x3b3b[27]]);router[_0x3b3b[29]](_0x3b3b[5],license[_0x3b3b[6]](),license[_0x3b3b[7]](),auth[_0x3b3b[8]](),auth[_0x3b3b[10]]([8],[_0x3b3b[9]]),controller[_0x3b3b[28]]);router[_0x3b3b[29]](_0x3b3b[16],license[_0x3b3b[6]](),license[_0x3b3b[7]](),auth[_0x3b3b[8]](),auth[_0x3b3b[10]]([8],[_0x3b3b[9]]),controller[_0x3b3b[30]]);router[_0x3b3b[29]](_0x3b3b[20],license[_0x3b3b[6]](),license[_0x3b3b[7]](),auth[_0x3b3b[8]](),auth[_0x3b3b[10]]([8],[_0x3b3b[9]]),controller[_0x3b3b[31]]);router[_0x3b3b[29]](_0x3b3b[22],license[_0x3b3b[6]](),license[_0x3b3b[7]](),auth[_0x3b3b[8]](),auth[_0x3b3b[10]]([8],[_0x3b3b[9]]),controller[_0x3b3b[32]]);router[_0x3b3b[29]](_0x3b3b[33],license[_0x3b3b[6]](),license[_0x3b3b[7]](),auth[_0x3b3b[8]](),auth[_0x3b3b[10]]([8],[_0x3b3b[9]]),controller[_0x3b3b[34]]);router[_0x3b3b[36]](_0x3b3b[13],license[_0x3b3b[6]](),license[_0x3b3b[7]](),auth[_0x3b3b[8]](),auth[_0x3b3b[10]]([8],[_0x3b3b[9]]),controller[_0x3b3b[35]]);router[_0x3b3b[36]](_0x3b3b[16],license[_0x3b3b[6]](),license[_0x3b3b[7]](),auth[_0x3b3b[8]](),auth[_0x3b3b[10]]([8],[_0x3b3b[9]]),controller[_0x3b3b[37]]);router[_0x3b3b[36]](_0x3b3b[18],license[_0x3b3b[6]](),license[_0x3b3b[7]](),auth[_0x3b3b[8]](),auth[_0x3b3b[10]]([8],[_0x3b3b[9]]),controller[_0x3b3b[38]]);router[_0x3b3b[36]](_0x3b3b[39],license[_0x3b3b[6]](),license[_0x3b3b[7]](),auth[_0x3b3b[8]](),auth[_0x3b3b[10]]([8],[_0x3b3b[9]]),controller[_0x3b3b[40]]);router[_0x3b3b[36]](_0x3b3b[41],license[_0x3b3b[6]](),license[_0x3b3b[7]](),auth[_0x3b3b[8]](),auth[_0x3b3b[10]]([8],[_0x3b3b[9]]),controller[_0x3b3b[42]]);router[_0x3b3b[36]](_0x3b3b[24],license[_0x3b3b[6]](),license[_0x3b3b[7]](),auth[_0x3b3b[8]](),auth[_0x3b3b[10]]([8],[_0x3b3b[9]]),controller[_0x3b3b[43]]);router[_0x3b3b[44]](_0x3b3b[13],license[_0x3b3b[6]](),license[_0x3b3b[7]](),auth[_0x3b3b[8]](),auth[_0x3b3b[10]]([8],[_0x3b3b[9]]),controller[_0x3b3b[35]]);router[_0x3b3b[46]](_0x3b3b[5],license[_0x3b3b[6]](),license[_0x3b3b[7]](),auth[_0x3b3b[8]](),auth[_0x3b3b[10]]([8],[_0x3b3b[9]]),controller[_0x3b3b[45]]);router[_0x3b3b[46]](_0x3b3b[13],license[_0x3b3b[6]](),license[_0x3b3b[7]](),auth[_0x3b3b[8]](),auth[_0x3b3b[10]]([8],[_0x3b3b[9]]),controller[_0x3b3b[47]]);router[_0x3b3b[46]](_0x3b3b[16],license[_0x3b3b[6]](),license[_0x3b3b[7]](),auth[_0x3b3b[8]](),auth[_0x3b3b[10]]([8],[_0x3b3b[9]]),controller[_0x3b3b[48]]);router[_0x3b3b[46]](_0x3b3b[22],license[_0x3b3b[6]](),license[_0x3b3b[7]](),auth[_0x3b3b[8]](),auth[_0x3b3b[10]]([8],[_0x3b3b[9]]),controller[_0x3b3b[49]]);router[_0x3b3b[46]](_0x3b3b[18],license[_0x3b3b[6]](),license[_0x3b3b[7]](),auth[_0x3b3b[8]](),auth[_0x3b3b[10]]([8],[_0x3b3b[9]]),controller[_0x3b3b[50]]);router[_0x3b3b[46]](_0x3b3b[41],license[_0x3b3b[6]](),license[_0x3b3b[7]](),auth[_0x3b3b[8]](),auth[_0x3b3b[10]]([8],[_0x3b3b[9]]),controller[_0x3b3b[51]]);router[_0x3b3b[46]](_0x3b3b[39],license[_0x3b3b[6]](),license[_0x3b3b[7]](),auth[_0x3b3b[8]](),auth[_0x3b3b[10]]([8],[_0x3b3b[9]]),controller[_0x3b3b[52]]);module[_0x3b3b[53]]= router \ No newline at end of file diff --git a/server/api/chat_websites_field/chat_websites_field.controller.js b/server/api/chat_websites_field/chat_websites_field.controller.js index 78c9c47..293d92a 100644 --- a/server/api/chat_websites_field/chat_websites_field.controller.js +++ b/server/api/chat_websites_field/chat_websites_field.controller.js @@ -1,112 +1 @@ -/** - * Using Rails-like standard naming convention for endpoints. - * GET /api/chat/websites/fields -> index - * POST /api/chat/websites/fields -> create - * GET /api/chat/websites/fields/:id -> show - * PUT /api/chat/websites/fields/:id -> update - * DELETE /api/chat/websites/fields/:id -> destroy - */ - -'use strict'; - - -var _ = require('lodash'); -var Util = require('../../config/util'); - -var ChatWebsitesField = require('../../models').ChatWebsitesField; - - -function handleError(res, statusCode) { - statusCode = statusCode || 500; - return function(err) { - res.status(statusCode).send(err); - }; -} - -function responseWithResult(res, statusCode) { - statusCode = statusCode || 200; - return function(entity) { - if (entity) { - res.status(statusCode).json(entity); - } - }; -} - -function responseWithoutResult(res, statusCode) { - statusCode = statusCode || 204; - return function() { - res.sendStatus(statusCode); - }; -} - -function handleEntityNotFound(res) { - return function(entity) { - if (!entity) { - res.status(404).end(); - return null; - } - return entity; - }; -} - -function saveUpdates(updates) { - return function(entity) { - return entity.updateAttributes(updates) - .then(function(updated) { - return updated; - }); - }; -} - -function removeEntity(res) { - return function(entity) { - if (entity) { - return entity.destroy() - .then(function() { - res.status(204).end(); - }); - } - }; -} - -// Gets a list of ChatWebsitesFields -exports.index = function(req, res) { - return ChatWebsitesField.findAll(Util.getQuery(req.query)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Gets a single ChatWebsitesField from the DB -exports.show = function(req, res) { - return ChatWebsitesField.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Creates a new ChatWebsitesField in the DB -exports.create = function(req, res) { - return ChatWebsitesField.create(req.body) - .then(responseWithResult(res, 201)) - .catch(handleError(res)); -} - -// Updates an existing ChatWebsitesField in the DB -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - return ChatWebsitesField.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(saveUpdates(req.body)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Deletes a ChatWebsitesField from the DB -exports.destroy = function(req, res) { - return ChatWebsitesField.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(removeEntity(res)) - .catch(handleError(res)); -} +var _0xdd06=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x43\x68\x61\x74\x57\x65\x62\x73\x69\x74\x65\x73\x46\x69\x65\x6C\x64","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x6A\x73\x6F\x6E","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x65\x6E\x64","\x74\x68\x65\x6E","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x64\x65\x73\x74\x72\x6F\x79","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x68\x6F\x77","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65"];_0xdd06[0];var _=require(_0xdd06[1]);var Util=require(_0xdd06[2]);var ChatWebsitesField=require(_0xdd06[4])[_0xdd06[3]];function handleError(_0x9967x5,_0x9967x6){_0x9967x6= _0x9967x6|| 500;return function(_0x9967x7){_0x9967x5[_0xdd06[6]](_0x9967x6)[_0xdd06[5]](_0x9967x7)}}function responseWithResult(_0x9967x5,_0x9967x6){_0x9967x6= _0x9967x6|| 200;return function(_0x9967x9){if(_0x9967x9){_0x9967x5[_0xdd06[6]](_0x9967x6)[_0xdd06[7]](_0x9967x9)}}}function responseWithoutResult(_0x9967x5,_0x9967x6){_0x9967x6= _0x9967x6|| 204;return function(){_0x9967x5[_0xdd06[8]](_0x9967x6)}}function handleEntityNotFound(_0x9967x5){return function(_0x9967x9){if(!_0x9967x9){_0x9967x5[_0xdd06[6]](404)[_0xdd06[9]]();return null};return _0x9967x9}}function saveUpdates(_0x9967xd){return function(_0x9967x9){return _0x9967x9[_0xdd06[11]](_0x9967xd)[_0xdd06[10]](function(_0x9967xe){return _0x9967xe})}}function removeEntity(_0x9967x5){return function(_0x9967x9){if(_0x9967x9){return _0x9967x9[_0xdd06[12]]()[_0xdd06[10]](function(){_0x9967x5[_0xdd06[6]](204)[_0xdd06[9]]()})}}}exports[_0xdd06[13]]= function(_0x9967x10,_0x9967x5){return ChatWebsitesField[_0xdd06[17]](Util[_0xdd06[16]](_0x9967x10[_0xdd06[15]]))[_0xdd06[10]](responseWithResult(_0x9967x5))[_0xdd06[14]](handleError(_0x9967x5))};exports[_0xdd06[18]]= function(_0x9967x10,_0x9967x5){return ChatWebsitesField[_0xdd06[21]](_0x9967x10[_0xdd06[20]][_0xdd06[19]])[_0xdd06[10]](handleEntityNotFound(_0x9967x5))[_0xdd06[10]](responseWithResult(_0x9967x5))[_0xdd06[14]](handleError(_0x9967x5))};exports[_0xdd06[22]]= function(_0x9967x10,_0x9967x5){return ChatWebsitesField[_0xdd06[22]](_0x9967x10[_0xdd06[23]])[_0xdd06[10]](responseWithResult(_0x9967x5,201))[_0xdd06[14]](handleError(_0x9967x5))};exports[_0xdd06[24]]= function(_0x9967x10,_0x9967x5){if(_0x9967x10[_0xdd06[23]][_0xdd06[19]]){delete _0x9967x10[_0xdd06[23]][_0xdd06[19]]};return ChatWebsitesField[_0xdd06[21]](_0x9967x10[_0xdd06[20]][_0xdd06[19]])[_0xdd06[10]](handleEntityNotFound(_0x9967x5))[_0xdd06[10]](saveUpdates(_0x9967x10[_0xdd06[23]]))[_0xdd06[10]](responseWithResult(_0x9967x5))[_0xdd06[14]](handleError(_0x9967x5))};exports[_0xdd06[12]]= function(_0x9967x10,_0x9967x5){return ChatWebsitesField[_0xdd06[21]](_0x9967x10[_0xdd06[20]][_0xdd06[19]])[_0xdd06[10]](handleEntityNotFound(_0x9967x5))[_0xdd06[10]](removeEntity(_0x9967x5))[_0xdd06[14]](handleError(_0x9967x5))} \ No newline at end of file diff --git a/server/api/chat_websites_field/chat_websites_field.events.js b/server/api/chat_websites_field/chat_websites_field.events.js index 44c852c..58302eb 100644 --- a/server/api/chat_websites_field/chat_websites_field.events.js +++ b/server/api/chat_websites_field/chat_websites_field.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const ChatWebsitesField = require('../../models').ChatWebsitesField; - -var ChatWebsitesFieldEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -ChatWebsitesFieldEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - ChatWebsitesField.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - ChatWebsitesFieldEvents.emit(event + ':' + doc._id, doc); - ChatWebsitesFieldEvents.emit(event, doc); - done(null); - } -} - -module.exports = ChatWebsitesFieldEvents; +var _0x2615=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x43\x68\x61\x74\x57\x65\x62\x73\x69\x74\x65\x73\x46\x69\x65\x6C\x64","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x2615[0];const EventEmitter=require(_0x2615[1]);const ChatWebsitesField=require(_0x2615[3])[_0x2615[2]];var ChatWebsitesFieldEvents= new EventEmitter();ChatWebsitesFieldEvents[_0x2615[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x2615[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x2615[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x2615[6]};for(var e in events){var event=events[e];ChatWebsitesField[_0x2615[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x67dfx8,_0x67dfx9,_0x67dfxa){ChatWebsitesFieldEvents[_0x2615[10]](event+ _0x2615[8]+ _0x67dfx8[_0x2615[9]],_0x67dfx8);ChatWebsitesFieldEvents[_0x2615[10]](event,_0x67dfx8);_0x67dfxa(null)}}module[_0x2615[11]]= ChatWebsitesFieldEvents \ No newline at end of file diff --git a/server/api/chat_websites_field/chat_websites_field.socket.js b/server/api/chat_websites_field/chat_websites_field.socket.js index 8232b06..395d4ca 100644 --- a/server/api/chat_websites_field/chat_websites_field.socket.js +++ b/server/api/chat_websites_field/chat_websites_field.socket.js @@ -1,28 +1 @@ -'use strict'; - -const ChatWebsitesFieldEvents = require('./chat_websites_field.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('chat_websites_field:' + event, socket); - - ChatWebsitesFieldEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - ChatWebsitesFieldEvents.removeListener(event, listener); - }; -} +var _0x9278=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x63\x68\x61\x74\x5F\x77\x65\x62\x73\x69\x74\x65\x73\x5F\x66\x69\x65\x6C\x64\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x63\x68\x61\x74\x5F\x77\x65\x62\x73\x69\x74\x65\x73\x5F\x66\x69\x65\x6C\x64\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x9278[0];const ChatWebsitesFieldEvents=require(_0x9278[1]);var events=[_0x9278[2],_0x9278[3]];exports[_0x9278[4]]= function(_0xa22ex3){for(var _0xa22ex4=0,_0xa22ex5=events[_0x9278[5]];_0xa22ex4< _0xa22ex5;_0xa22ex4++){var _0xa22ex6=events[_0xa22ex4];var _0xa22ex7=createListener(_0x9278[6]+ _0xa22ex6,_0xa22ex3);ChatWebsitesFieldEvents[_0x9278[7]](_0xa22ex6,_0xa22ex7);_0xa22ex3[_0x9278[7]](_0x9278[8],removeListener(_0xa22ex6,_0xa22ex7))}};function createListener(_0xa22ex6,_0xa22ex3){return function(_0xa22ex9){_0xa22ex3[_0x9278[9]](_0xa22ex6,_0xa22ex9)}}function removeListener(_0xa22ex6,_0xa22ex7){return function(){ChatWebsitesFieldEvents[_0x9278[10]](_0xa22ex6,_0xa22ex7)}} \ No newline at end of file diff --git a/server/api/chat_websites_field/index.js b/server/api/chat_websites_field/index.js index c525bbb..fbe1022 100644 --- a/server/api/chat_websites_field/index.js +++ b/server/api/chat_websites_field/index.js @@ -1,18 +1 @@ -'use strict'; - -var express = require('express'); - -var auth = require('../../auth/auth.service'); -var controller = require('./chat_websites_field.controller'); -var license = require('../../config/license/license.service'); - -var router = express.Router(); - -router.get('/', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.index); -router.get('/:id', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.show); -router.post('/', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.create); -router.put('/:id', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.update); -router.patch('/:id', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.update); -router.delete('/:id', license.isValidDate(), license.hasChat(), auth.isAuthenticated(), auth.hasModule([8], ['admin']), controller.destroy); - -module.exports = router; +var _0xd3ed=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x63\x68\x61\x74\x5F\x77\x65\x62\x73\x69\x74\x65\x73\x5F\x66\x69\x65\x6C\x64\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x68\x61\x73\x43\x68\x61\x74","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x70\x61\x74\x63\x68","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0xd3ed[0];var express=require(_0xd3ed[1]);var auth=require(_0xd3ed[2]);var controller=require(_0xd3ed[3]);var license=require(_0xd3ed[4]);var router=express.Router();router[_0xd3ed[12]](_0xd3ed[5],license[_0xd3ed[6]](),license[_0xd3ed[7]](),auth[_0xd3ed[8]](),auth[_0xd3ed[10]]([8],[_0xd3ed[9]]),controller[_0xd3ed[11]]);router[_0xd3ed[12]](_0xd3ed[13],license[_0xd3ed[6]](),license[_0xd3ed[7]](),auth[_0xd3ed[8]](),auth[_0xd3ed[10]]([8],[_0xd3ed[9]]),controller[_0xd3ed[14]]);router[_0xd3ed[16]](_0xd3ed[5],license[_0xd3ed[6]](),license[_0xd3ed[7]](),auth[_0xd3ed[8]](),auth[_0xd3ed[10]]([8],[_0xd3ed[9]]),controller[_0xd3ed[15]]);router[_0xd3ed[18]](_0xd3ed[13],license[_0xd3ed[6]](),license[_0xd3ed[7]](),auth[_0xd3ed[8]](),auth[_0xd3ed[10]]([8],[_0xd3ed[9]]),controller[_0xd3ed[17]]);router[_0xd3ed[19]](_0xd3ed[13],license[_0xd3ed[6]](),license[_0xd3ed[7]](),auth[_0xd3ed[8]](),auth[_0xd3ed[10]]([8],[_0xd3ed[9]]),controller[_0xd3ed[17]]);router[_0xd3ed[21]](_0xd3ed[13],license[_0xd3ed[6]](),license[_0xd3ed[7]](),auth[_0xd3ed[8]](),auth[_0xd3ed[10]]([8],[_0xd3ed[9]]),controller[_0xd3ed[20]]);module[_0xd3ed[22]]= router \ No newline at end of file diff --git a/server/api/company/company.controller.js b/server/api/company/company.controller.js index a20f981..f13e306 100644 --- a/server/api/company/company.controller.js +++ b/server/api/company/company.controller.js @@ -1,146 +1 @@ -'use strict'; - -var _ = require('lodash'); -var Company = require('../../models').Company; -var util = require('util'); -var Util = require('../../config/util'); - -// Get list of companies -exports.index = function(req, res, next) { - return Company - .findAndCountAll(Util.getQuery(req.query)) - .then(function(result) { - res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.companyValidation = function(req, res) { - return Company - .findAll({ - where: { - name: req.body.name - } - }) - .then(function(companies) { - if (!companies) { - return res.sendStatus(404); - } - return res.send(companies); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get a single company -exports.show = function(req, res) { - return Company - .findById(req.params.id) - .then(function(company) { - if (!company) { - return res.sendStatus(404); - } - return res.send(company); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Creates a new company in the DB. -exports.create = function(req, res) { - return Company - .create(req.body) - .then(function(company) { - return res.status(201).send(company); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Updates an existing company in the DB. -exports.update = function(req, res) { - return Company - .findAll({ - where: { - name: req.body.name, - id: { - $ne: req.body.id - } - } - }) - .then(function(companies) { - if (!companies) { - return res.sendStatus(404); - } - if (companies.length > 0) { - return res.status(500).send({ - message: 'MESSAGE_EXIST_COMPANY' - }) - } - if (req.body.id) { - delete req.body.id; - } - return Company - .find({ - where: { - id: req.params.id - } - }); - }) - .then(function(company) { - if (!company) { - return res.sendStatus(404); - } - var updated = _.merge(company, req.body); - return updated.save(); - }) - .then(function(company) { - return res.status(200).send(company); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes a company from the DB. -exports.destroy = function(req, res) { - return Company - .findById(req.params.id) - .then(function(company) { - if (!company) { - return res.sendStatus(404); - } - return company.destroy() - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.bulkDestroy = function(req, res) { - return Company - .destroy({ - where: { - id: req.query.ids - }, - individualHooks: true - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0x3dde=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x43\x6F\x6D\x70\x61\x6E\x79","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x75\x74\x69\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x63\x6F\x6D\x70\x61\x6E\x79\x56\x61\x6C\x69\x64\x61\x74\x69\x6F\x6E","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x6E\x61\x6D\x65","\x62\x6F\x64\x79","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x68\x6F\x77","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x6C\x65\x6E\x67\x74\x68","\x4D\x45\x53\x53\x41\x47\x45\x5F\x45\x58\x49\x53\x54\x5F\x43\x4F\x4D\x50\x41\x4E\x59","\x66\x69\x6E\x64","\x64\x65\x73\x74\x72\x6F\x79","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73"];_0x3dde[0];var _=require(_0x3dde[1]);var Company=require(_0x3dde[3])[_0x3dde[2]];var util=require(_0x3dde[4]);var Util=require(_0x3dde[5]);exports[_0x3dde[6]]= function(_0xd3dfx5,_0xd3dfx6,_0xd3dfx7){return Company[_0x3dde[13]](Util[_0x3dde[12]](_0xd3dfx5[_0x3dde[11]]))[_0x3dde[10]](function(_0xd3dfx9){_0xd3dfx6[_0x3dde[9]](200)[_0x3dde[8]](_0xd3dfx9)})[_0x3dde[7]](function(_0xd3dfx8){return handleError(_0xd3dfx6,_0xd3dfx8)})};exports[_0x3dde[14]]= function(_0xd3dfx5,_0xd3dfx6){return Company[_0x3dde[18]]({where:{name:_0xd3dfx5[_0x3dde[17]][_0x3dde[16]]}})[_0x3dde[10]](function(_0xd3dfxa){if(!_0xd3dfxa){return _0xd3dfx6[_0x3dde[15]](404)};return _0xd3dfx6[_0x3dde[8]](_0xd3dfxa)})[_0x3dde[7]](function(_0xd3dfx8){return handleError(_0xd3dfx6,_0xd3dfx8)})};exports[_0x3dde[19]]= function(_0xd3dfx5,_0xd3dfx6){return Company[_0x3dde[22]](_0xd3dfx5[_0x3dde[21]][_0x3dde[20]])[_0x3dde[10]](function(_0xd3dfxb){if(!_0xd3dfxb){return _0xd3dfx6[_0x3dde[15]](404)};return _0xd3dfx6[_0x3dde[8]](_0xd3dfxb)})[_0x3dde[7]](function(_0xd3dfx8){return handleError(_0xd3dfx6,_0xd3dfx8)})};exports[_0x3dde[23]]= function(_0xd3dfx5,_0xd3dfx6){return Company[_0x3dde[23]](_0xd3dfx5[_0x3dde[17]])[_0x3dde[10]](function(_0xd3dfxb){return _0xd3dfx6[_0x3dde[9]](201)[_0x3dde[8]](_0xd3dfxb)})[_0x3dde[7]](function(_0xd3dfx8){return handleError(_0xd3dfx6,_0xd3dfx8)})};exports[_0x3dde[24]]= function(_0xd3dfx5,_0xd3dfx6){return Company[_0x3dde[18]]({where:{name:_0xd3dfx5[_0x3dde[17]][_0x3dde[16]],id:{$ne:_0xd3dfx5[_0x3dde[17]][_0x3dde[20]]}}})[_0x3dde[10]](function(_0xd3dfxa){if(!_0xd3dfxa){return _0xd3dfx6[_0x3dde[15]](404)};if(_0xd3dfxa[_0x3dde[27]]> 0){return _0xd3dfx6[_0x3dde[9]](500)[_0x3dde[8]]({message:_0x3dde[28]})};if(_0xd3dfx5[_0x3dde[17]][_0x3dde[20]]){delete _0xd3dfx5[_0x3dde[17]][_0x3dde[20]]};return Company[_0x3dde[29]]({where:{id:_0xd3dfx5[_0x3dde[21]][_0x3dde[20]]}})})[_0x3dde[10]](function(_0xd3dfxb){if(!_0xd3dfxb){return _0xd3dfx6[_0x3dde[15]](404)};var _0xd3dfxc=_[_0x3dde[25]](_0xd3dfxb,_0xd3dfx5[_0x3dde[17]]);return _0xd3dfxc[_0x3dde[26]]()})[_0x3dde[10]](function(_0xd3dfxb){return _0xd3dfx6[_0x3dde[9]](200)[_0x3dde[8]](_0xd3dfxb)})[_0x3dde[7]](function(_0xd3dfx8){return handleError(_0xd3dfx6,_0xd3dfx8)})};exports[_0x3dde[30]]= function(_0xd3dfx5,_0xd3dfx6){return Company[_0x3dde[22]](_0xd3dfx5[_0x3dde[21]][_0x3dde[20]])[_0x3dde[10]](function(_0xd3dfxb){if(!_0xd3dfxb){return _0xd3dfx6[_0x3dde[15]](404)};return _0xd3dfxb[_0x3dde[30]]()})[_0x3dde[10]](function(){return _0xd3dfx6[_0x3dde[15]](204)})[_0x3dde[7]](function(_0xd3dfx8){return handleError(_0xd3dfx6,_0xd3dfx8)})};exports[_0x3dde[31]]= function(_0xd3dfx5,_0xd3dfx6){return Company[_0x3dde[30]]({where:{id:_0xd3dfx5[_0x3dde[11]][_0x3dde[32]]},individualHooks:true})[_0x3dde[10]](function(){return _0xd3dfx6[_0x3dde[15]](204)})[_0x3dde[7]](function(_0xd3dfx8){return handleError(_0xd3dfx6,_0xd3dfx8)})};function handleError(_0xd3dfx6,_0xd3dfx8){return _0xd3dfx6[_0x3dde[9]](500)[_0x3dde[8]](_0xd3dfx8)} \ No newline at end of file diff --git a/server/api/company/company.events.js b/server/api/company/company.events.js index b232d0d..d6689b5 100644 --- a/server/api/company/company.events.js +++ b/server/api/company/company.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const Company = require('../../models').Company; - -var CompanyEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -CompanyEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - Company.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - CompanyEvents.emit(event + ':' + doc._id, doc); - CompanyEvents.emit(event, doc); - done(null); - } -} - -module.exports = CompanyEvents; +var _0xfc06=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x43\x6F\x6D\x70\x61\x6E\x79","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xfc06[0];const EventEmitter=require(_0xfc06[1]);const Company=require(_0xfc06[3])[_0xfc06[2]];var CompanyEvents= new EventEmitter();CompanyEvents[_0xfc06[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xfc06[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xfc06[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xfc06[6]};for(var e in events){var event=events[e];Company[_0xfc06[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x68fdx8,_0x68fdx9,_0x68fdxa){CompanyEvents[_0xfc06[10]](event+ _0xfc06[8]+ _0x68fdx8[_0xfc06[9]],_0x68fdx8);CompanyEvents[_0xfc06[10]](event,_0x68fdx8);_0x68fdxa(null)}}module[_0xfc06[11]]= CompanyEvents \ No newline at end of file diff --git a/server/api/company/company.socket.js b/server/api/company/company.socket.js index 5fb7808..feb397c 100644 --- a/server/api/company/company.socket.js +++ b/server/api/company/company.socket.js @@ -1,28 +1 @@ -'use strict'; - -const CompanyEvents = require('./company.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('company:' + event, socket); - - CompanyEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - CompanyEvents.removeListener(event, listener); - }; -} +var _0xd9db=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x63\x6F\x6D\x70\x61\x6E\x79\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x63\x6F\x6D\x70\x61\x6E\x79\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xd9db[0];const CompanyEvents=require(_0xd9db[1]);var events=[_0xd9db[2],_0xd9db[3]];exports[_0xd9db[4]]= function(_0x9875x3){for(var _0x9875x4=0,_0x9875x5=events[_0xd9db[5]];_0x9875x4< _0x9875x5;_0x9875x4++){var _0x9875x6=events[_0x9875x4];var _0x9875x7=createListener(_0xd9db[6]+ _0x9875x6,_0x9875x3);CompanyEvents[_0xd9db[7]](_0x9875x6,_0x9875x7);_0x9875x3[_0xd9db[7]](_0xd9db[8],removeListener(_0x9875x6,_0x9875x7))}};function createListener(_0x9875x6,_0x9875x3){return function(_0x9875x9){_0x9875x3[_0xd9db[9]](_0x9875x6,_0x9875x9)}}function removeListener(_0x9875x6,_0x9875x7){return function(){CompanyEvents[_0xd9db[10]](_0x9875x6,_0x9875x7)}} \ No newline at end of file diff --git a/server/api/company/index.js b/server/api/company/index.js index af51e8c..82877d4 100644 --- a/server/api/company/index.js +++ b/server/api/company/index.js @@ -1,18 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./company.controller'); -var auth = require('../../auth/auth.service'); -var license = require('../../config/license/license.service'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), license.hasCm(), auth.hasModule([5], ['admin', 'agent']), controller.index); -router.get('/:id', auth.isAuthenticated(), license.hasCm(), auth.hasModule([5], ['admin', 'agent']), controller.show); -router.post('/', auth.isAuthenticated(), license.hasCm(), auth.hasModule([5], ['admin']), controller.create); -router.post('/validate', auth.isAuthenticated(), license.hasCm(), auth.hasModule([5], ['admin']), controller.companyValidation); -router.put('/:id', auth.isAuthenticated(), license.hasCm(), auth.hasModule([5], ['admin']), controller.update); -router.delete('/', auth.isAuthenticated(), license.hasCm(), auth.hasModule([5], ['admin']), controller.bulkDestroy); -router.delete('/:id', auth.isAuthenticated(), license.hasCm(), auth.hasModule([5], ['admin']), controller.destroy); - -module.exports = router; +var _0x7562=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x63\x6F\x6D\x70\x61\x6E\x79\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x68\x61\x73\x43\x6D","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x2F\x76\x61\x6C\x69\x64\x61\x74\x65","\x63\x6F\x6D\x70\x61\x6E\x79\x56\x61\x6C\x69\x64\x61\x74\x69\x6F\x6E","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0x7562[0];var express=require(_0x7562[1]);var controller=require(_0x7562[2]);var auth=require(_0x7562[3]);var license=require(_0x7562[4]);var router=express.Router();router[_0x7562[12]](_0x7562[5],auth[_0x7562[6]](),license[_0x7562[7]](),auth[_0x7562[10]]([5],[_0x7562[8],_0x7562[9]]),controller[_0x7562[11]]);router[_0x7562[12]](_0x7562[13],auth[_0x7562[6]](),license[_0x7562[7]](),auth[_0x7562[10]]([5],[_0x7562[8],_0x7562[9]]),controller[_0x7562[14]]);router[_0x7562[16]](_0x7562[5],auth[_0x7562[6]](),license[_0x7562[7]](),auth[_0x7562[10]]([5],[_0x7562[8]]),controller[_0x7562[15]]);router[_0x7562[16]](_0x7562[17],auth[_0x7562[6]](),license[_0x7562[7]](),auth[_0x7562[10]]([5],[_0x7562[8]]),controller[_0x7562[18]]);router[_0x7562[20]](_0x7562[13],auth[_0x7562[6]](),license[_0x7562[7]](),auth[_0x7562[10]]([5],[_0x7562[8]]),controller[_0x7562[19]]);router[_0x7562[22]](_0x7562[5],auth[_0x7562[6]](),license[_0x7562[7]](),auth[_0x7562[10]]([5],[_0x7562[8]]),controller[_0x7562[21]]);router[_0x7562[22]](_0x7562[13],auth[_0x7562[6]](),license[_0x7562[7]](),auth[_0x7562[10]]([5],[_0x7562[8]]),controller[_0x7562[23]]);module[_0x7562[24]]= router \ No newline at end of file diff --git a/server/api/contact_manager/contact_manager.controller.js b/server/api/contact_manager/contact_manager.controller.js index eea8c8a..4e84b9c 100644 --- a/server/api/contact_manager/contact_manager.controller.js +++ b/server/api/contact_manager/contact_manager.controller.js @@ -1,708 +1 @@ -'use strict'; - -var _ = require('lodash'); -var moment = require('moment'); -var Contact = require('../../models').Contact; -var User = require('../../models').User; -var ContactPhone = require('../../models').ContactPhone; -var ContactEmail = require('../../models').ContactEmail; -var CustomField = require('../../models').CustomField; -var ReportCall = require('../../models').ReportCall; -var ReportQueue = require('../../models').ReportQueue; -var ReportQueueHistory = require('../../models').history.ReportQueueHistory; -var ReportChatRoom = require('../../models').ReportChatRoom; -var ReportChatRoomHistory = require('../../models').history.ReportChatRoomHistory; -var ChatRoom = require('../../models').ChatRoom; -var FaxRoom = require('../../models').FaxRoom; -var SmsRoom = require('../../models').SmsRoom; -var ReportIntegration = require('../../models').ReportIntegration; -var List = require('../../models').List; -var ReportCallHistory = require('../../models').history.ReportCallHistory; -var ReportMailSession = require('../../models').ReportMailSession; -var MailRoom = require('../../models').MailRoom; -var ReportMailSessionHistory = require('../../models').history.ReportMailSessionHistory; -var Tag = require('../../models').Tag; -var stream = require('stream'); -var sequelize = require('../../models').sequelize; -var util = require('util'); -var Util = require('../../config/util'); -var Async = require('async'); - -// Get list of contacts -exports.index = function(req, res, next) { - var results, _agentLists; - switch (req.user.role) { - case 'agent': - return User - .findById(req.user.id) - .then(function(agent) { - return agent.getLists(); - }) - .then(function(lists) { - _agentLists = _.map(lists, 'id'); - return List - .findAll({ - where: { - defaultEntry: true - }, - attributes: ['id'] - }); - }) - .then(function(defaultLists) { - var company_list_query = { - CompanyId: req.query.CompanyId || null, - ListId: req.query.ListId || null, - }; - delete req.query.CompanyId; - delete req.query.ListId; - return Contact - .scope('list', 'company', { - method: ['company_list_filter', company_list_query] - }) - .findAndCountAll(Util.getQuery(req.query, company_list_query.ListId ? {} : { - ListId: { - $in: _agentLists.concat(_.map(defaultLists, 'id')) - } - })); - }) - .then(function(contacts) { - results = { - rows: _.map(contacts.rows, 'dataValues'), - count: contacts.rows - }; - return Contact - .describe(); - }) - .then(function(fields) { - fields = _.filter(_.keys(fields), function(elem) { - return _.includes(elem, 'cf_'); - }); - return CustomField - .findAll({ - where: { - name: fields - } - }); - }) - .then(function(customFields) { - if (customFields.length) { - var cfs = _.map(customFields, 'name').join(','); - return sequelize.query(util.format('SELECT id,%s FROM cm_contacts WHERE id IN (\'' + _.map(results.rows, 'id').join("','") + '\')', cfs), { - type: sequelize.QueryTypes.SELECT - }); - } - }) - .then(function(contactsCf) { - _.merge(results.rows, contactsCf); - return results; - }) - .then(function(result) { - res.status(200).send(result); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); - default: - var company_list_query = { - CompanyId: req.query.CompanyId || null, - ListId: req.query.ListId || null, - }; - delete req.query.CompanyId; - delete req.query.ListId; - return Contact - .scope('list', 'company', { - method: ['company_list_filter', company_list_query] - }) - .findAndCountAll(Util.getQuery(req.query)) - .then(function(contacts) { - results = { - rows: _.map(contacts.rows, 'dataValues'), - count: contacts.count - }; - return Contact - .describe(); - }) - .then(function(fields) { - fields = _.filter(_.keys(fields), function(elem) { - return _.includes(elem, 'cf_'); - }); - return CustomField - .findAll({ - where: { - name: fields - } - }); - }) - .then(function(customFields) { - if (results.rows.length && customFields.length) { - var cfs = _.map(customFields, 'name').join(','); - return sequelize.query(util.format('SELECT id,%s FROM cm_contacts WHERE id IN (\'' + _.map(results.rows, 'id').join("','") + '\')', cfs), { - type: sequelize.QueryTypes.SELECT - }); - } - }) - .then(function(contactsCf) { - if (contactsCf) { - _.merge(results.rows, contactsCf); - } - return results; - }) - .then(function(result) { - res.status(200).send(result); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); - } -}; - -// Get list of fields -exports.describe = function(req, res) { - return Contact - .describe() - .then(function(fields) { - return res.status(200).send(fields); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.getLog = function(req, res, next) { - req.query.detail = req.query.detail || 'general'; - req.query.show = req.query.show || 'phone'; - req.query.logType = req.query.logType || 'journal'; - req.query.type = req.query.type || 'inbound'; - var Api, where = {}; - return Contact - .findById(req.params.id) - .then(function(contact) { - if (!contact) { - return res.sendStatus(404); - } - switch (req.query.detail) { - case 'general': - switch (req.query.show) { - case 'phone': - Api = (req.query.logType === 'history') ? ReportCallHistory : ReportCall; - if (req.query.type === 'outbound') { - where.destination = [contact.phone, contact.mobile]; - } else { - where.source = [contact.phone, contact.mobile]; - } - break; - case 'email': - Api = MailRoom; - where.from = contact.email; - if (req.query.logType === 'history') { - where.createdAt = { - $lt: moment().startOf('day') - } - } else { - where.createdAt = { - $gte: moment().startOf('day') - } - } - break; - case 'chat': - Api = ChatRoom; - where.contact = contact.email; - if (req.query.logType === 'history') { - where.createdAt = { - $lt: moment().startOf('day') - } - } else { - where.createdAt = { - $gte: moment().startOf('day') - } - } - break; - case 'fax': - Api = FaxRoom; - where.contact = contact.fax; - if (req.query.logType === 'history') { - where.createdAt = { - $lt: moment().startOf('day') - } - } else { - where.createdAt = { - $gte: moment().startOf('day') - } - } - break; - case 'sms': - Api = SmsRoom; - where.contact = [contact.phone, contact.mobile]; - if (req.query.logType === 'history') { - where.createdAt = { - $lt: moment().startOf('day') - } - } else { - where.createdAt = { - $gte: moment().startOf('day') - } - } - break; - default: - Api = (req.query.logType === 'history') ? ReportCallHistory : ReportCall; - } - break; - case 'queue': - switch (req.query.show) { - case 'phone': - Api = (req.query.logType === 'history') ? ReportQueueHistory : ReportQueue; - where.calleridnum = [contact.phone, contact.mobile]; - break; - case 'email': - return res.sendStatus(404); - default: - Api = (req.query.logType === 'history') ? ReportQueueHistory : ReportQueue; - } - break; - default: - Api = ReportCall; - } - delete req.query.detail; - delete req.query.show; - delete req.query.logType; - delete req.query.type; - return Api - .findAndCountAll(Util.getQuery(req.query, where)); - }) - .then(function(result) { - res.status(200).send(result); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); - -}; - -// Get a single managed_contact -exports.show = function(req, res) { - var _contact; - return Contact - .scope('list', 'user', 'company') - .findById(req.params.id) - .then(function(managed_contact) { - if (!managed_contact) { - return res.sendStatus(404); - } - _contact = managed_contact; - return CustomField - .findAll({ - where: { - ListId: _contact.ListId - } - }); - }) - .then(function(customFields) { - if (customFields.length) { - var cfs = _.map(customFields, 'name').join(','); - return sequelize.query(util.format('SELECT %s FROM cm_contacts WHERE id=%s', cfs, req.params.id), { - type: sequelize.QueryTypes.SELECT - }); - } - }) - .then(function(cfValues) { - if (cfValues) { - _.forEach(cfValues[0], function(value, key, array) { - if (value === 'null') { - array[key] = null; - } - }); - _.merge(_contact.dataValues, cfValues[0]); - } - }) - .then(function() { - return res.status(200).send(_contact); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -exports.getEventContacts = function(req, res) { - return ReportIntegration - .findById(req.params.id) - .then(function(event) { - var where = {}; - switch (event.eventChannel) { - case 'voice': - where = { - $or: { - phone: event.calleridnum, - mobile: event.calleridnum - } - }; - break; - case 'mail': - where = { - email: event.from - }; - break; - default: - where = {}; - } - return Contact.findAndCountAll({ - where: where, - include: [{ - model: List, - where: { - $or: { - id: _.map(_.map(req.user.Lists, 'dataValues'), 'id'), - defaultEntry: true - } - } - }] - }); - }) - .then(function(contacts) { - return res.status(200).send(contacts); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); - -}; - -// Creates a new managed_contact in the DB. -exports.create = function(req, res, next) { - var _contact; - return Tag - .findAll() - .then(function(tags) { - var newTags = []; - var tagList = _.map(_.map(tags, 'dataValues'), 'name'); - if (req.body.tags) { - req.body.tags.forEach(function(elem) { - if (!_.includes(tagList, elem)) { - newTags.push(Tag.create({ - name: elem - })); - } - }); - } - return newTags; - }) - .all() - .then(function() { - req.body.UserId = req.user.id; - return Contact.create(req.body); - }) - .then(function(contact) { - _contact = contact; - - return CustomField - .findAll({ - where: { - ListId: _contact.ListId - } - }); - }) - .then(function(customFields) { - if (customFields.length) { - var cfs = []; - customFields.forEach(function(elem) { - if (req.body.hasOwnProperty(elem.name)) { - cfs.push(util.format('%s=\'%s\'', elem.name, req.body[elem.name])); - } - }); - if (cfs.length) { - cfs = cfs.join(','); - return sequelize.query(util.format('UPDATE cm_contacts SET %s WHERE id=%s', cfs, _contact.id)); - } - } - }) - .then(function() { - return res.status(201).send(_contact); - }) - .catch(function(err) { - console.log(err); - return next(err); - }); -}; - -exports.copy = function(req, res, next) { - var _contact, _newContact; - return Contact - .findById(req.params.id) - .then(function(contact) { - _contact = contact.dataValues; - _newContact = _.clone(contact.dataValues); - delete _newContact.id; - _newContact.UserId = req.user.id; - _newContact.ListId = req.body.ListId; - _newContact.tags = _newContact.tags ? _newContact.tags.split(';') : []; - if (_newContact.tags.length > 1) { - _newContact.tags.pop(); - } - return Contact - .create(_newContact); - }) - .then(function(newContact) { - _newContact = newContact; - if (_contact.ListId === req.body.ListId) { - return CustomField - .findAll({ - where: { - ListId: _contact.ListId - } - }); - } - }) - .then(function(customFields) { - if (customFields && customFields.length) { - var cfs = _.map(customFields, 'name').join(','); - return sequelize.query(util.format('SELECT %s FROM cm_contacts WHERE id=%s', cfs, _contact.id), { - type: sequelize.QueryTypes.SELECT - }); - } - }) - .then(function(cfValues) { - if (cfValues) { - var cfs = []; - _.forOwn(cfValues[0], function(value, key) { - cfs.push(util.format('%s=\'%s\'', key, value)); - }); - if (cfs.length) { - cfs = cfs.join(','); - return sequelize.query(util.format('UPDATE cm_contacts SET %s WHERE id=%s', cfs, _newContact.id)); - } - } - }) - .then(function() { - return res.status(201).send(_newContact); - }) - .catch(function(err) { - console.log(err); - return next(err); - }); -} - -// Creates a new managed_contact in the DB. -exports.bulkCreate = function(req, res, next) { - var _contacts = []; - var _result = { - ok: 0, - ko: 0 - }; - return Tag - .findAll() - .then(function(tags) { - var newTags = [], - contactTags = []; - var tagList = _.map(_.map(tags, 'dataValues'), 'name'); - req.body.contacts.forEach(function(contact) { - if (contact.tags) { - contactTags = _.union(contactTags, contact.tags); - } - }); - contactTags.forEach(function(elem) { - if (!_.includes(tagList, elem)) { - newTags.push(Tag.create({ - name: elem - })); - } - }); - return newTags; - }) - .all() - .then(function() { - var bulkCreate = []; - Async.forEachOf(req.body.contacts, function(contact) { - contact.UserId = req.user.id; - - bulkCreate.push(Contact.create(contact) - .then(function(contact) { - _contacts.push(contact); - _result.ok++; - }) - .catch(function(err) { - _result.ko++; - })); - }) - return bulkCreate; - }) - .all() - .then(function() { - return CustomField - .findAll({ - where: { - ListId: { - $in: _.map(req.body.contacts, 'ListId') - } - } - }); - }) - .then(function(customFields) { - var bulkFields = []; - if (customFields.length) { - var cfs = []; - _contacts.forEach(function(contact) { - cfs = []; - customFields.forEach(function(elem) { - if (contact.hasOwnProperty(elem.name)) { - cfs.push(util.format('%s=\'%s\'', elem.name, req.body[elem.name])); - } - }); - if (cfs.length) { - cfs = cfs.join(','); - bulkFields.push(sequelize.query(util.format('UPDATE cm_contacts SET %s WHERE id=%s', cfs, contact.id))); - } - }); - } - return bulkFields; - }) - .all() - .then(function() { - return res.status(201).send(_result); - }) - .catch(function(err) { - console.log(err); - return next(err); - }); -}; - -// Updates an existing managed_contact in the DB. -exports.update = function(req, res, next) { - return Promise - .all([]) - .then(updateContact(req, res)) - .then(function(contact) { - return res.status(200).send(contact); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -exports.merge = function(req, res, next) { - var _contact; - return Promise - .all([]) - .then(updateContact(req, res)) - .then(function(contact) { - _contact = contact; - if (req.body.oldContact) { - return Contact - .destroy({ - where: { - id: req.body.oldContact - }, - individualHooks: true - }); - } - }) - .then(function() { - return res.status(200).send(_contact); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -function updateContact(req, res) { - return function() { - var _contact; - return Tag - .findAll() - .then(function(tags) { - var newTags = []; - var tagList = _.map(_.map(tags, 'dataValues'), 'name'); - if (req.body.tags) { - req.body.tags.forEach(function(elem) { - if (!_.includes(tagList, elem)) { - newTags.push(Tag.create({ - name: elem - })); - } - }); - } - return newTags; - }) - .then(function() { - return Contact.findById(req.params.id); - }) - .then(function(contact) { - if (!contact) { - return res.sendStatus(404); - } - delete req.body.id; - return contact.updateAttributes(req.body) - }) - .then(function(contact) { - _contact = contact; - - return CustomField - .findAll({ - where: { - ListId: _contact.ListId - } - }); - }) - .then(function(customFields) { - if (customFields.length) { - var cfs = []; - customFields.forEach(function(elem) { - if (req.body.hasOwnProperty(elem.name)) { - cfs.push(util.format('%s=\'%s\'', elem.name, req.body[elem.name])); - } - }); - if (cfs.length) { - cfs = cfs.join(','); - return sequelize.query(util.format('UPDATE cm_contacts SET %s WHERE id=%s', cfs, _contact.id)); - } - } - }) - .then(function() { - return _contact; - }) - } -} - -// Deletes a managed_contact from the DB. -exports.destroy = function(req, res) { - return Contact - .findById(req.params.id) - .then(function(managed_contact) { - if (!managed_contact) { - return res.sendStatus(404); - } - return managed_contact.destroy(); - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes a managed_contact from the DB. -exports.bulkDestroy = function(req, res) { - return Contact - .destroy({ - where: { - id: req.query.ids - }, - individualHooks: true - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0x633a=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x6D\x6F\x6D\x65\x6E\x74","\x43\x6F\x6E\x74\x61\x63\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x55\x73\x65\x72","\x43\x6F\x6E\x74\x61\x63\x74\x50\x68\x6F\x6E\x65","\x43\x6F\x6E\x74\x61\x63\x74\x45\x6D\x61\x69\x6C","\x43\x75\x73\x74\x6F\x6D\x46\x69\x65\x6C\x64","\x52\x65\x70\x6F\x72\x74\x43\x61\x6C\x6C","\x52\x65\x70\x6F\x72\x74\x51\x75\x65\x75\x65","\x52\x65\x70\x6F\x72\x74\x51\x75\x65\x75\x65\x48\x69\x73\x74\x6F\x72\x79","\x68\x69\x73\x74\x6F\x72\x79","\x52\x65\x70\x6F\x72\x74\x43\x68\x61\x74\x52\x6F\x6F\x6D","\x52\x65\x70\x6F\x72\x74\x43\x68\x61\x74\x52\x6F\x6F\x6D\x48\x69\x73\x74\x6F\x72\x79","\x43\x68\x61\x74\x52\x6F\x6F\x6D","\x46\x61\x78\x52\x6F\x6F\x6D","\x53\x6D\x73\x52\x6F\x6F\x6D","\x52\x65\x70\x6F\x72\x74\x49\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E","\x4C\x69\x73\x74","\x52\x65\x70\x6F\x72\x74\x43\x61\x6C\x6C\x48\x69\x73\x74\x6F\x72\x79","\x52\x65\x70\x6F\x72\x74\x4D\x61\x69\x6C\x53\x65\x73\x73\x69\x6F\x6E","\x4D\x61\x69\x6C\x52\x6F\x6F\x6D","\x52\x65\x70\x6F\x72\x74\x4D\x61\x69\x6C\x53\x65\x73\x73\x69\x6F\x6E\x48\x69\x73\x74\x6F\x72\x79","\x54\x61\x67","\x73\x74\x72\x65\x61\x6D","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x75\x74\x69\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x61\x73\x79\x6E\x63","\x69\x6E\x64\x65\x78","\x6C\x6F\x67","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x72\x6F\x77\x73","\x6D\x65\x72\x67\x65","\x6C\x65\x6E\x67\x74\x68","\x2C","\x6A\x6F\x69\x6E","\x6E\x61\x6D\x65","\x6D\x61\x70","\x53\x45\x4C\x45\x43\x54\x20\x69\x64\x2C\x25\x73\x20\x46\x52\x4F\x4D\x20\x63\x6D\x5F\x63\x6F\x6E\x74\x61\x63\x74\x73\x20\x57\x48\x45\x52\x45\x20\x69\x64\x20\x49\x4E\x20\x28\x27","\x27\x2C\x27","\x69\x64","\x27\x29","\x66\x6F\x72\x6D\x61\x74","\x53\x45\x4C\x45\x43\x54","\x51\x75\x65\x72\x79\x54\x79\x70\x65\x73","\x71\x75\x65\x72\x79","\x6B\x65\x79\x73","\x63\x66\x5F","\x69\x6E\x63\x6C\x75\x64\x65\x73","\x66\x69\x6C\x74\x65\x72","\x66\x69\x6E\x64\x41\x6C\x6C","\x64\x61\x74\x61\x56\x61\x6C\x75\x65\x73","\x64\x65\x73\x63\x72\x69\x62\x65","\x43\x6F\x6D\x70\x61\x6E\x79\x49\x64","\x4C\x69\x73\x74\x49\x64","\x63\x6F\x6E\x63\x61\x74","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x6C\x69\x73\x74","\x63\x6F\x6D\x70\x61\x6E\x79","\x63\x6F\x6D\x70\x61\x6E\x79\x5F\x6C\x69\x73\x74\x5F\x66\x69\x6C\x74\x65\x72","\x73\x63\x6F\x70\x65","\x67\x65\x74\x4C\x69\x73\x74\x73","\x75\x73\x65\x72","\x66\x69\x6E\x64\x42\x79\x49\x64","\x61\x67\x65\x6E\x74","\x63\x6F\x75\x6E\x74","\x72\x6F\x6C\x65","\x67\x65\x74\x4C\x6F\x67","\x64\x65\x74\x61\x69\x6C","\x67\x65\x6E\x65\x72\x61\x6C","\x73\x68\x6F\x77","\x70\x68\x6F\x6E\x65","\x6C\x6F\x67\x54\x79\x70\x65","\x6A\x6F\x75\x72\x6E\x61\x6C","\x74\x79\x70\x65","\x69\x6E\x62\x6F\x75\x6E\x64","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x6F\x75\x74\x62\x6F\x75\x6E\x64","\x64\x65\x73\x74\x69\x6E\x61\x74\x69\x6F\x6E","\x6D\x6F\x62\x69\x6C\x65","\x73\x6F\x75\x72\x63\x65","\x66\x72\x6F\x6D","\x65\x6D\x61\x69\x6C","\x63\x72\x65\x61\x74\x65\x64\x41\x74","\x64\x61\x79","\x73\x74\x61\x72\x74\x4F\x66","\x63\x6F\x6E\x74\x61\x63\x74","\x63\x68\x61\x74","\x66\x61\x78","\x73\x6D\x73","\x63\x61\x6C\x6C\x65\x72\x69\x64\x6E\x75\x6D","\x71\x75\x65\x75\x65","\x70\x61\x72\x61\x6D\x73","\x6E\x75\x6C\x6C","\x66\x6F\x72\x45\x61\x63\x68","\x53\x45\x4C\x45\x43\x54\x20\x25\x73\x20\x46\x52\x4F\x4D\x20\x63\x6D\x5F\x63\x6F\x6E\x74\x61\x63\x74\x73\x20\x57\x48\x45\x52\x45\x20\x69\x64\x3D\x25\x73","\x67\x65\x74\x45\x76\x65\x6E\x74\x43\x6F\x6E\x74\x61\x63\x74\x73","\x76\x6F\x69\x63\x65","\x6D\x61\x69\x6C","\x65\x76\x65\x6E\x74\x43\x68\x61\x6E\x6E\x65\x6C","\x63\x72\x65\x61\x74\x65","\x68\x61\x73\x4F\x77\x6E\x50\x72\x6F\x70\x65\x72\x74\x79","\x62\x6F\x64\x79","\x25\x73\x3D\x27\x25\x73\x27","\x70\x75\x73\x68","\x55\x50\x44\x41\x54\x45\x20\x63\x6D\x5F\x63\x6F\x6E\x74\x61\x63\x74\x73\x20\x53\x45\x54\x20\x25\x73\x20\x57\x48\x45\x52\x45\x20\x69\x64\x3D\x25\x73","\x55\x73\x65\x72\x49\x64","\x61\x6C\x6C","\x74\x61\x67\x73","\x63\x6F\x70\x79","\x66\x6F\x72\x4F\x77\x6E","\x63\x6C\x6F\x6E\x65","\x3B","\x73\x70\x6C\x69\x74","\x70\x6F\x70","\x62\x75\x6C\x6B\x43\x72\x65\x61\x74\x65","\x63\x6F\x6E\x74\x61\x63\x74\x73","\x6B\x6F","\x6F\x6B","\x66\x6F\x72\x45\x61\x63\x68\x4F\x66","\x75\x6E\x69\x6F\x6E","\x75\x70\x64\x61\x74\x65","\x6F\x6C\x64\x43\x6F\x6E\x74\x61\x63\x74","\x64\x65\x73\x74\x72\x6F\x79","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73"];_0x633a[0];var _=require(_0x633a[1]);var moment=require(_0x633a[2]);var Contact=require(_0x633a[4])[_0x633a[3]];var User=require(_0x633a[4])[_0x633a[5]];var ContactPhone=require(_0x633a[4])[_0x633a[6]];var ContactEmail=require(_0x633a[4])[_0x633a[7]];var CustomField=require(_0x633a[4])[_0x633a[8]];var ReportCall=require(_0x633a[4])[_0x633a[9]];var ReportQueue=require(_0x633a[4])[_0x633a[10]];var ReportQueueHistory=require(_0x633a[4])[_0x633a[12]][_0x633a[11]];var ReportChatRoom=require(_0x633a[4])[_0x633a[13]];var ReportChatRoomHistory=require(_0x633a[4])[_0x633a[12]][_0x633a[14]];var ChatRoom=require(_0x633a[4])[_0x633a[15]];var FaxRoom=require(_0x633a[4])[_0x633a[16]];var SmsRoom=require(_0x633a[4])[_0x633a[17]];var ReportIntegration=require(_0x633a[4])[_0x633a[18]];var List=require(_0x633a[4])[_0x633a[19]];var ReportCallHistory=require(_0x633a[4])[_0x633a[12]][_0x633a[20]];var ReportMailSession=require(_0x633a[4])[_0x633a[21]];var MailRoom=require(_0x633a[4])[_0x633a[22]];var ReportMailSessionHistory=require(_0x633a[4])[_0x633a[12]][_0x633a[23]];var Tag=require(_0x633a[4])[_0x633a[24]];var stream=require(_0x633a[25]);var sequelize=require(_0x633a[4])[_0x633a[26]];var util=require(_0x633a[27]);var Util=require(_0x633a[28]);var Async=require(_0x633a[29]);exports[_0x633a[30]]= function(_0x7988x1c,_0x7988x1d,_0x7988x1e){var _0x7988x1f,_0x7988x20;switch(_0x7988x1c[_0x633a[68]][_0x633a[72]]){case _0x633a[70]:return User[_0x633a[69]](_0x7988x1c[_0x633a[68]][_0x633a[45]])[_0x633a[35]](function(_0x7988x2c){return _0x7988x2c[_0x633a[67]]()})[_0x633a[35]](function(_0x7988x2b){_0x7988x20= _[_0x633a[42]](_0x7988x2b,_0x633a[45]);return List[_0x633a[55]]({where:{defaultEntry:true},attributes:[_0x633a[45]]})})[_0x633a[35]](function(_0x7988x29){var _0x7988x2a={CompanyId:_0x7988x1c[_0x633a[50]][_0x633a[58]]|| null,ListId:_0x7988x1c[_0x633a[50]][_0x633a[59]]|| null};delete _0x7988x1c[_0x633a[50]][_0x633a[58]];delete _0x7988x1c[_0x633a[50]][_0x633a[59]];return Contact[_0x633a[66]](_0x633a[63],_0x633a[64],{method:[_0x633a[65],_0x7988x2a]})[_0x633a[62]](Util[_0x633a[61]](_0x7988x1c[_0x633a[50]],_0x7988x2a[_0x633a[59]]?{}:{ListId:{$in:_0x7988x20[_0x633a[60]](_[_0x633a[42]](_0x7988x29,_0x633a[45]))}}))})[_0x633a[35]](function(_0x7988x28){_0x7988x1f= {rows:_[_0x633a[42]](_0x7988x28[_0x633a[36]],_0x633a[56]),count:_0x7988x28[_0x633a[36]]};return Contact[_0x633a[57]]()})[_0x633a[35]](function(_0x7988x26){_0x7988x26= _[_0x633a[54]](_[_0x633a[51]](_0x7988x26),function(_0x7988x27){return _[_0x633a[53]](_0x7988x27,_0x633a[52])});return CustomField[_0x633a[55]]({where:{name:_0x7988x26}})})[_0x633a[35]](function(_0x7988x24){if(_0x7988x24[_0x633a[38]]){var _0x7988x25=_[_0x633a[42]](_0x7988x24,_0x633a[41])[_0x633a[40]](_0x633a[39]);return sequelize[_0x633a[50]](util[_0x633a[47]](_0x633a[43]+ _[_0x633a[42]](_0x7988x1f[_0x633a[36]],_0x633a[45])[_0x633a[40]](_0x633a[44])+ _0x633a[46],_0x7988x25),{type:sequelize[_0x633a[49]][_0x633a[48]]})}})[_0x633a[35]](function(_0x7988x23){_[_0x633a[37]](_0x7988x1f[_0x633a[36]],_0x7988x23);return _0x7988x1f})[_0x633a[35]](function(_0x7988x22){_0x7988x1d[_0x633a[34]](200)[_0x633a[33]](_0x7988x22)})[_0x633a[32]](function(_0x7988x21){console[_0x633a[31]](_0x7988x21);return handleError(_0x7988x1d,_0x7988x21)});default:var _0x7988x2a={CompanyId:_0x7988x1c[_0x633a[50]][_0x633a[58]]|| null,ListId:_0x7988x1c[_0x633a[50]][_0x633a[59]]|| null};delete _0x7988x1c[_0x633a[50]][_0x633a[58]];delete _0x7988x1c[_0x633a[50]][_0x633a[59]];return Contact[_0x633a[66]](_0x633a[63],_0x633a[64],{method:[_0x633a[65],_0x7988x2a]})[_0x633a[62]](Util[_0x633a[61]](_0x7988x1c[_0x633a[50]]))[_0x633a[35]](function(_0x7988x28){_0x7988x1f= {rows:_[_0x633a[42]](_0x7988x28[_0x633a[36]],_0x633a[56]),count:_0x7988x28[_0x633a[71]]};return Contact[_0x633a[57]]()})[_0x633a[35]](function(_0x7988x26){_0x7988x26= _[_0x633a[54]](_[_0x633a[51]](_0x7988x26),function(_0x7988x27){return _[_0x633a[53]](_0x7988x27,_0x633a[52])});return CustomField[_0x633a[55]]({where:{name:_0x7988x26}})})[_0x633a[35]](function(_0x7988x24){if(_0x7988x1f[_0x633a[36]][_0x633a[38]]&& _0x7988x24[_0x633a[38]]){var _0x7988x25=_[_0x633a[42]](_0x7988x24,_0x633a[41])[_0x633a[40]](_0x633a[39]);return sequelize[_0x633a[50]](util[_0x633a[47]](_0x633a[43]+ _[_0x633a[42]](_0x7988x1f[_0x633a[36]],_0x633a[45])[_0x633a[40]](_0x633a[44])+ _0x633a[46],_0x7988x25),{type:sequelize[_0x633a[49]][_0x633a[48]]})}})[_0x633a[35]](function(_0x7988x23){if(_0x7988x23){_[_0x633a[37]](_0x7988x1f[_0x633a[36]],_0x7988x23)};return _0x7988x1f})[_0x633a[35]](function(_0x7988x22){_0x7988x1d[_0x633a[34]](200)[_0x633a[33]](_0x7988x22)})[_0x633a[32]](function(_0x7988x21){console[_0x633a[31]](_0x7988x21);return handleError(_0x7988x1d,_0x7988x21)})}};exports[_0x633a[57]]= function(_0x7988x1c,_0x7988x1d){return Contact[_0x633a[57]]()[_0x633a[35]](function(_0x7988x26){return _0x7988x1d[_0x633a[34]](200)[_0x633a[33]](_0x7988x26)})[_0x633a[32]](function(_0x7988x21){return handleError(_0x7988x1d,_0x7988x21)})};exports[_0x633a[73]]= function(_0x7988x1c,_0x7988x1d,_0x7988x1e){_0x7988x1c[_0x633a[50]][_0x633a[74]]= _0x7988x1c[_0x633a[50]][_0x633a[74]]|| _0x633a[75];_0x7988x1c[_0x633a[50]][_0x633a[76]]= _0x7988x1c[_0x633a[50]][_0x633a[76]]|| _0x633a[77];_0x7988x1c[_0x633a[50]][_0x633a[78]]= _0x7988x1c[_0x633a[50]][_0x633a[78]]|| _0x633a[79];_0x7988x1c[_0x633a[50]][_0x633a[80]]= _0x7988x1c[_0x633a[50]][_0x633a[80]]|| _0x633a[81];var _0x7988x2d,_0x7988x2e={};return Contact[_0x633a[69]](_0x7988x1c[_0x633a[98]][_0x633a[45]])[_0x633a[35]](function(_0x7988x2f){if(!_0x7988x2f){return _0x7988x1d[_0x633a[82]](404)};switch(_0x7988x1c[_0x633a[50]][_0x633a[74]]){case _0x633a[75]:switch(_0x7988x1c[_0x633a[50]][_0x633a[76]]){case _0x633a[77]:_0x7988x2d= (_0x7988x1c[_0x633a[50]][_0x633a[78]]=== _0x633a[12])?ReportCallHistory:ReportCall;if(_0x7988x1c[_0x633a[50]][_0x633a[80]]=== _0x633a[83]){_0x7988x2e[_0x633a[84]]= [_0x7988x2f[_0x633a[77]],_0x7988x2f[_0x633a[85]]]}else {_0x7988x2e[_0x633a[86]]= [_0x7988x2f[_0x633a[77]],_0x7988x2f[_0x633a[85]]]};break;case _0x633a[88]:_0x7988x2d= MailRoom;_0x7988x2e[_0x633a[87]]= _0x7988x2f[_0x633a[88]];if(_0x7988x1c[_0x633a[50]][_0x633a[78]]=== _0x633a[12]){_0x7988x2e[_0x633a[89]]= {$lt:moment()[_0x633a[91]](_0x633a[90])}}else {_0x7988x2e[_0x633a[89]]= {$gte:moment()[_0x633a[91]](_0x633a[90])}};break;case _0x633a[93]:_0x7988x2d= ChatRoom;_0x7988x2e[_0x633a[92]]= _0x7988x2f[_0x633a[88]];if(_0x7988x1c[_0x633a[50]][_0x633a[78]]=== _0x633a[12]){_0x7988x2e[_0x633a[89]]= {$lt:moment()[_0x633a[91]](_0x633a[90])}}else {_0x7988x2e[_0x633a[89]]= {$gte:moment()[_0x633a[91]](_0x633a[90])}};break;case _0x633a[94]:_0x7988x2d= FaxRoom;_0x7988x2e[_0x633a[92]]= _0x7988x2f[_0x633a[94]];if(_0x7988x1c[_0x633a[50]][_0x633a[78]]=== _0x633a[12]){_0x7988x2e[_0x633a[89]]= {$lt:moment()[_0x633a[91]](_0x633a[90])}}else {_0x7988x2e[_0x633a[89]]= {$gte:moment()[_0x633a[91]](_0x633a[90])}};break;case _0x633a[95]:_0x7988x2d= SmsRoom;_0x7988x2e[_0x633a[92]]= [_0x7988x2f[_0x633a[77]],_0x7988x2f[_0x633a[85]]];if(_0x7988x1c[_0x633a[50]][_0x633a[78]]=== _0x633a[12]){_0x7988x2e[_0x633a[89]]= {$lt:moment()[_0x633a[91]](_0x633a[90])}}else {_0x7988x2e[_0x633a[89]]= {$gte:moment()[_0x633a[91]](_0x633a[90])}};break;default:_0x7988x2d= (_0x7988x1c[_0x633a[50]][_0x633a[78]]=== _0x633a[12])?ReportCallHistory:ReportCall};break;case _0x633a[97]:switch(_0x7988x1c[_0x633a[50]][_0x633a[76]]){case _0x633a[77]:_0x7988x2d= (_0x7988x1c[_0x633a[50]][_0x633a[78]]=== _0x633a[12])?ReportQueueHistory:ReportQueue;_0x7988x2e[_0x633a[96]]= [_0x7988x2f[_0x633a[77]],_0x7988x2f[_0x633a[85]]];break;case _0x633a[88]:return _0x7988x1d[_0x633a[82]](404);default:_0x7988x2d= (_0x7988x1c[_0x633a[50]][_0x633a[78]]=== _0x633a[12])?ReportQueueHistory:ReportQueue};break;default:_0x7988x2d= ReportCall};delete _0x7988x1c[_0x633a[50]][_0x633a[74]];delete _0x7988x1c[_0x633a[50]][_0x633a[76]];delete _0x7988x1c[_0x633a[50]][_0x633a[78]];delete _0x7988x1c[_0x633a[50]][_0x633a[80]];return _0x7988x2d[_0x633a[62]](Util[_0x633a[61]](_0x7988x1c[_0x633a[50]],_0x7988x2e))})[_0x633a[35]](function(_0x7988x22){_0x7988x1d[_0x633a[34]](200)[_0x633a[33]](_0x7988x22)})[_0x633a[32]](function(_0x7988x21){console[_0x633a[31]](_0x7988x21);return handleError(_0x7988x1d,_0x7988x21)})};exports[_0x633a[76]]= function(_0x7988x1c,_0x7988x1d){var _0x7988x30;return Contact[_0x633a[66]](_0x633a[63],_0x633a[68],_0x633a[64])[_0x633a[69]](_0x7988x1c[_0x633a[98]][_0x633a[45]])[_0x633a[35]](function(_0x7988x35){if(!_0x7988x35){return _0x7988x1d[_0x633a[82]](404)};_0x7988x30= _0x7988x35;return CustomField[_0x633a[55]]({where:{ListId:_0x7988x30[_0x633a[59]]}})})[_0x633a[35]](function(_0x7988x24){if(_0x7988x24[_0x633a[38]]){var _0x7988x25=_[_0x633a[42]](_0x7988x24,_0x633a[41])[_0x633a[40]](_0x633a[39]);return sequelize[_0x633a[50]](util[_0x633a[47]](_0x633a[101],_0x7988x25,_0x7988x1c[_0x633a[98]][_0x633a[45]]),{type:sequelize[_0x633a[49]][_0x633a[48]]})}})[_0x633a[35]](function(_0x7988x31){if(_0x7988x31){_[_0x633a[100]](_0x7988x31[0],function(_0x7988x32,_0x7988x33,_0x7988x34){if(_0x7988x32=== _0x633a[99]){_0x7988x34[_0x7988x33]= null}});_[_0x633a[37]](_0x7988x30[_0x633a[56]],_0x7988x31[0])}})[_0x633a[35]](function(){return _0x7988x1d[_0x633a[34]](200)[_0x633a[33]](_0x7988x30)})[_0x633a[32]](function(_0x7988x21){console[_0x633a[31]](_0x7988x21);return handleError(_0x7988x1d,_0x7988x21)})};exports[_0x633a[102]]= function(_0x7988x1c,_0x7988x1d){return ReportIntegration[_0x633a[69]](_0x7988x1c[_0x633a[98]][_0x633a[45]])[_0x633a[35]](function(_0x7988x36){var _0x7988x2e={};switch(_0x7988x36[_0x633a[105]]){case _0x633a[103]:_0x7988x2e= {$or:{phone:_0x7988x36[_0x633a[96]],mobile:_0x7988x36[_0x633a[96]]}};break;case _0x633a[104]:_0x7988x2e= {email:_0x7988x36[_0x633a[87]]};break;default:_0x7988x2e= {}};return Contact[_0x633a[62]]({where:_0x7988x2e,include:[{model:List,where:{$or:{id:_[_0x633a[42]](_[_0x633a[42]](_0x7988x1c[_0x633a[68]].Lists,_0x633a[56]),_0x633a[45]),defaultEntry:true}}}]})})[_0x633a[35]](function(_0x7988x28){return _0x7988x1d[_0x633a[34]](200)[_0x633a[33]](_0x7988x28)})[_0x633a[32]](function(_0x7988x21){console[_0x633a[31]](_0x7988x21);return handleError(_0x7988x1d,_0x7988x21)})};exports[_0x633a[106]]= function(_0x7988x1c,_0x7988x1d,_0x7988x1e){var _0x7988x30;return Tag[_0x633a[55]]()[_0x633a[35]](function(_0x7988x37){var _0x7988x38=[];var _0x7988x39=_[_0x633a[42]](_[_0x633a[42]](_0x7988x37,_0x633a[56]),_0x633a[41]);if(_0x7988x1c[_0x633a[108]][_0x633a[114]]){_0x7988x1c[_0x633a[108]][_0x633a[114]][_0x633a[100]](function(_0x7988x27){if(!_[_0x633a[53]](_0x7988x39,_0x7988x27)){_0x7988x38[_0x633a[110]](Tag[_0x633a[106]]({name:_0x7988x27}))}})};return _0x7988x38})[_0x633a[113]]()[_0x633a[35]](function(){_0x7988x1c[_0x633a[108]][_0x633a[112]]= _0x7988x1c[_0x633a[68]][_0x633a[45]];return Contact[_0x633a[106]](_0x7988x1c[_0x633a[108]])})[_0x633a[35]](function(_0x7988x2f){_0x7988x30= _0x7988x2f;return CustomField[_0x633a[55]]({where:{ListId:_0x7988x30[_0x633a[59]]}})})[_0x633a[35]](function(_0x7988x24){if(_0x7988x24[_0x633a[38]]){var _0x7988x25=[];_0x7988x24[_0x633a[100]](function(_0x7988x27){if(_0x7988x1c[_0x633a[108]][_0x633a[107]](_0x7988x27[_0x633a[41]])){_0x7988x25[_0x633a[110]](util[_0x633a[47]](_0x633a[109],_0x7988x27[_0x633a[41]],_0x7988x1c[_0x633a[108]][_0x7988x27[_0x633a[41]]]))}});if(_0x7988x25[_0x633a[38]]){_0x7988x25= _0x7988x25[_0x633a[40]](_0x633a[39]);return sequelize[_0x633a[50]](util[_0x633a[47]](_0x633a[111],_0x7988x25,_0x7988x30[_0x633a[45]]))}}})[_0x633a[35]](function(){return _0x7988x1d[_0x633a[34]](201)[_0x633a[33]](_0x7988x30)})[_0x633a[32]](function(_0x7988x21){console[_0x633a[31]](_0x7988x21);return _0x7988x1e(_0x7988x21)})};exports[_0x633a[115]]= function(_0x7988x1c,_0x7988x1d,_0x7988x1e){var _0x7988x30,_0x7988x3a;return Contact[_0x633a[69]](_0x7988x1c[_0x633a[98]][_0x633a[45]])[_0x633a[35]](function(_0x7988x2f){_0x7988x30= _0x7988x2f[_0x633a[56]];_0x7988x3a= _[_0x633a[117]](_0x7988x2f[_0x633a[56]]);delete _0x7988x3a[_0x633a[45]];_0x7988x3a[_0x633a[112]]= _0x7988x1c[_0x633a[68]][_0x633a[45]];_0x7988x3a[_0x633a[59]]= _0x7988x1c[_0x633a[108]][_0x633a[59]];_0x7988x3a[_0x633a[114]]= _0x7988x3a[_0x633a[114]]?_0x7988x3a[_0x633a[114]][_0x633a[119]](_0x633a[118]):[];if(_0x7988x3a[_0x633a[114]][_0x633a[38]]> 1){_0x7988x3a[_0x633a[114]][_0x633a[120]]()};return Contact[_0x633a[106]](_0x7988x3a)})[_0x633a[35]](function(_0x7988x3b){_0x7988x3a= _0x7988x3b;if(_0x7988x30[_0x633a[59]]=== _0x7988x1c[_0x633a[108]][_0x633a[59]]){return CustomField[_0x633a[55]]({where:{ListId:_0x7988x30[_0x633a[59]]}})}})[_0x633a[35]](function(_0x7988x24){if(_0x7988x24&& _0x7988x24[_0x633a[38]]){var _0x7988x25=_[_0x633a[42]](_0x7988x24,_0x633a[41])[_0x633a[40]](_0x633a[39]);return sequelize[_0x633a[50]](util[_0x633a[47]](_0x633a[101],_0x7988x25,_0x7988x30[_0x633a[45]]),{type:sequelize[_0x633a[49]][_0x633a[48]]})}})[_0x633a[35]](function(_0x7988x31){if(_0x7988x31){var _0x7988x25=[];_[_0x633a[116]](_0x7988x31[0],function(_0x7988x32,_0x7988x33){_0x7988x25[_0x633a[110]](util[_0x633a[47]](_0x633a[109],_0x7988x33,_0x7988x32))});if(_0x7988x25[_0x633a[38]]){_0x7988x25= _0x7988x25[_0x633a[40]](_0x633a[39]);return sequelize[_0x633a[50]](util[_0x633a[47]](_0x633a[111],_0x7988x25,_0x7988x3a[_0x633a[45]]))}}})[_0x633a[35]](function(){return _0x7988x1d[_0x633a[34]](201)[_0x633a[33]](_0x7988x3a)})[_0x633a[32]](function(_0x7988x21){console[_0x633a[31]](_0x7988x21);return _0x7988x1e(_0x7988x21)})};exports[_0x633a[121]]= function(_0x7988x1c,_0x7988x1d,_0x7988x1e){var _0x7988x3c=[];var _0x7988x3d={ok:0,ko:0};return Tag[_0x633a[55]]()[_0x633a[35]](function(_0x7988x37){var _0x7988x38=[],_0x7988x40=[];var _0x7988x39=_[_0x633a[42]](_[_0x633a[42]](_0x7988x37,_0x633a[56]),_0x633a[41]);_0x7988x1c[_0x633a[108]][_0x633a[122]][_0x633a[100]](function(_0x7988x2f){if(_0x7988x2f[_0x633a[114]]){_0x7988x40= _[_0x633a[126]](_0x7988x40,_0x7988x2f[_0x633a[114]])}});_0x7988x40[_0x633a[100]](function(_0x7988x27){if(!_[_0x633a[53]](_0x7988x39,_0x7988x27)){_0x7988x38[_0x633a[110]](Tag[_0x633a[106]]({name:_0x7988x27}))}});return _0x7988x38})[_0x633a[113]]()[_0x633a[35]](function(){var _0x7988x3f=[];Async[_0x633a[125]](_0x7988x1c[_0x633a[108]][_0x633a[122]],function(_0x7988x2f){_0x7988x2f[_0x633a[112]]= _0x7988x1c[_0x633a[68]][_0x633a[45]];_0x7988x3f[_0x633a[110]](Contact[_0x633a[106]](_0x7988x2f)[_0x633a[35]](function(_0x7988x2f){_0x7988x3c[_0x633a[110]](_0x7988x2f);_0x7988x3d[_0x633a[124]]++})[_0x633a[32]](function(_0x7988x21){_0x7988x3d[_0x633a[123]]++}))});return _0x7988x3f})[_0x633a[113]]()[_0x633a[35]](function(){return CustomField[_0x633a[55]]({where:{ListId:{$in:_[_0x633a[42]](_0x7988x1c[_0x633a[108]][_0x633a[122]],_0x633a[59])}}})})[_0x633a[35]](function(_0x7988x24){var _0x7988x3e=[];if(_0x7988x24[_0x633a[38]]){var _0x7988x25=[];_0x7988x3c[_0x633a[100]](function(_0x7988x2f){_0x7988x25= [];_0x7988x24[_0x633a[100]](function(_0x7988x27){if(_0x7988x2f[_0x633a[107]](_0x7988x27[_0x633a[41]])){_0x7988x25[_0x633a[110]](util[_0x633a[47]](_0x633a[109],_0x7988x27[_0x633a[41]],_0x7988x1c[_0x633a[108]][_0x7988x27[_0x633a[41]]]))}});if(_0x7988x25[_0x633a[38]]){_0x7988x25= _0x7988x25[_0x633a[40]](_0x633a[39]);_0x7988x3e[_0x633a[110]](sequelize[_0x633a[50]](util[_0x633a[47]](_0x633a[111],_0x7988x25,_0x7988x2f[_0x633a[45]])))}})};return _0x7988x3e})[_0x633a[113]]()[_0x633a[35]](function(){return _0x7988x1d[_0x633a[34]](201)[_0x633a[33]](_0x7988x3d)})[_0x633a[32]](function(_0x7988x21){console[_0x633a[31]](_0x7988x21);return _0x7988x1e(_0x7988x21)})};exports[_0x633a[127]]= function(_0x7988x1c,_0x7988x1d,_0x7988x1e){return Promise[_0x633a[113]]([])[_0x633a[35]](updateContact(_0x7988x1c,_0x7988x1d))[_0x633a[35]](function(_0x7988x2f){return _0x7988x1d[_0x633a[34]](200)[_0x633a[33]](_0x7988x2f)})[_0x633a[32]](function(_0x7988x21){console[_0x633a[31]](_0x7988x21);return handleError(_0x7988x1d,_0x7988x21)})};exports[_0x633a[37]]= function(_0x7988x1c,_0x7988x1d,_0x7988x1e){var _0x7988x30;return Promise[_0x633a[113]]([])[_0x633a[35]](updateContact(_0x7988x1c,_0x7988x1d))[_0x633a[35]](function(_0x7988x2f){_0x7988x30= _0x7988x2f;if(_0x7988x1c[_0x633a[108]][_0x633a[128]]){return Contact[_0x633a[129]]({where:{id:_0x7988x1c[_0x633a[108]][_0x633a[128]]},individualHooks:true})}})[_0x633a[35]](function(){return _0x7988x1d[_0x633a[34]](200)[_0x633a[33]](_0x7988x30)})[_0x633a[32]](function(_0x7988x21){console[_0x633a[31]](_0x7988x21);return handleError(_0x7988x1d,_0x7988x21)})};function updateContact(_0x7988x1c,_0x7988x1d){return function(){var _0x7988x30;return Tag[_0x633a[55]]()[_0x633a[35]](function(_0x7988x37){var _0x7988x38=[];var _0x7988x39=_[_0x633a[42]](_[_0x633a[42]](_0x7988x37,_0x633a[56]),_0x633a[41]);if(_0x7988x1c[_0x633a[108]][_0x633a[114]]){_0x7988x1c[_0x633a[108]][_0x633a[114]][_0x633a[100]](function(_0x7988x27){if(!_[_0x633a[53]](_0x7988x39,_0x7988x27)){_0x7988x38[_0x633a[110]](Tag[_0x633a[106]]({name:_0x7988x27}))}})};return _0x7988x38})[_0x633a[35]](function(){return Contact[_0x633a[69]](_0x7988x1c[_0x633a[98]][_0x633a[45]])})[_0x633a[35]](function(_0x7988x2f){if(!_0x7988x2f){return _0x7988x1d[_0x633a[82]](404)};delete _0x7988x1c[_0x633a[108]][_0x633a[45]];return _0x7988x2f[_0x633a[130]](_0x7988x1c[_0x633a[108]])})[_0x633a[35]](function(_0x7988x2f){_0x7988x30= _0x7988x2f;return CustomField[_0x633a[55]]({where:{ListId:_0x7988x30[_0x633a[59]]}})})[_0x633a[35]](function(_0x7988x24){if(_0x7988x24[_0x633a[38]]){var _0x7988x25=[];_0x7988x24[_0x633a[100]](function(_0x7988x27){if(_0x7988x1c[_0x633a[108]][_0x633a[107]](_0x7988x27[_0x633a[41]])){_0x7988x25[_0x633a[110]](util[_0x633a[47]](_0x633a[109],_0x7988x27[_0x633a[41]],_0x7988x1c[_0x633a[108]][_0x7988x27[_0x633a[41]]]))}});if(_0x7988x25[_0x633a[38]]){_0x7988x25= _0x7988x25[_0x633a[40]](_0x633a[39]);return sequelize[_0x633a[50]](util[_0x633a[47]](_0x633a[111],_0x7988x25,_0x7988x30[_0x633a[45]]))}}})[_0x633a[35]](function(){return _0x7988x30})}}exports[_0x633a[129]]= function(_0x7988x1c,_0x7988x1d){return Contact[_0x633a[69]](_0x7988x1c[_0x633a[98]][_0x633a[45]])[_0x633a[35]](function(_0x7988x35){if(!_0x7988x35){return _0x7988x1d[_0x633a[82]](404)};return _0x7988x35[_0x633a[129]]()})[_0x633a[35]](function(){return _0x7988x1d[_0x633a[82]](204)})[_0x633a[32]](function(_0x7988x21){return handleError(_0x7988x1d,_0x7988x21)})};exports[_0x633a[131]]= function(_0x7988x1c,_0x7988x1d){return Contact[_0x633a[129]]({where:{id:_0x7988x1c[_0x633a[50]][_0x633a[132]]},individualHooks:true})[_0x633a[35]](function(){return _0x7988x1d[_0x633a[82]](204)})[_0x633a[32]](function(_0x7988x21){return handleError(_0x7988x1d,_0x7988x21)})};function handleError(_0x7988x1d,_0x7988x21){return _0x7988x1d[_0x633a[34]](500)[_0x633a[33]](_0x7988x21)} \ No newline at end of file diff --git a/server/api/contact_manager/contact_manager.events.js b/server/api/contact_manager/contact_manager.events.js index dd5bf3e..ea94fb7 100644 --- a/server/api/contact_manager/contact_manager.events.js +++ b/server/api/contact_manager/contact_manager.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const Contact = require('../../models').Contact; - -var ContactEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -ContactEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - Contact.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - ContactEvents.emit(event + ':' + doc._id, doc); - ContactEvents.emit(event, doc); - done(null); - } -} - -module.exports = ContactEvents; +var _0x2050=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x43\x6F\x6E\x74\x61\x63\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x2050[0];const EventEmitter=require(_0x2050[1]);const Contact=require(_0x2050[3])[_0x2050[2]];var ContactEvents= new EventEmitter();ContactEvents[_0x2050[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x2050[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x2050[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x2050[6]};for(var e in events){var event=events[e];Contact[_0x2050[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x4a6dx8,_0x4a6dx9,_0x4a6dxa){ContactEvents[_0x2050[10]](event+ _0x2050[8]+ _0x4a6dx8[_0x2050[9]],_0x4a6dx8);ContactEvents[_0x2050[10]](event,_0x4a6dx8);_0x4a6dxa(null)}}module[_0x2050[11]]= ContactEvents \ No newline at end of file diff --git a/server/api/contact_manager/contact_manager.socket.js b/server/api/contact_manager/contact_manager.socket.js index 8432549..4094be7 100644 --- a/server/api/contact_manager/contact_manager.socket.js +++ b/server/api/contact_manager/contact_manager.socket.js @@ -1,28 +1 @@ -'use strict'; - -const ContactManagerEvents = require('./contact_manager.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('contact_manager:' + event, socket); - - ContactManagerEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - ContactManagerEvents.removeListener(event, listener); - }; -} +var _0xb366=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x63\x6F\x6E\x74\x61\x63\x74\x5F\x6D\x61\x6E\x61\x67\x65\x72\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x63\x6F\x6E\x74\x61\x63\x74\x5F\x6D\x61\x6E\x61\x67\x65\x72\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xb366[0];const ContactManagerEvents=require(_0xb366[1]);var events=[_0xb366[2],_0xb366[3]];exports[_0xb366[4]]= function(_0x2410x3){for(var _0x2410x4=0,_0x2410x5=events[_0xb366[5]];_0x2410x4< _0x2410x5;_0x2410x4++){var _0x2410x6=events[_0x2410x4];var _0x2410x7=createListener(_0xb366[6]+ _0x2410x6,_0x2410x3);ContactManagerEvents[_0xb366[7]](_0x2410x6,_0x2410x7);_0x2410x3[_0xb366[7]](_0xb366[8],removeListener(_0x2410x6,_0x2410x7))}};function createListener(_0x2410x6,_0x2410x3){return function(_0x2410x9){_0x2410x3[_0xb366[9]](_0x2410x6,_0x2410x9)}}function removeListener(_0x2410x6,_0x2410x7){return function(){ContactManagerEvents[_0xb366[10]](_0x2410x6,_0x2410x7)}} \ No newline at end of file diff --git a/server/api/contact_manager/index.js b/server/api/contact_manager/index.js index a17e604..1e3f37c 100644 --- a/server/api/contact_manager/index.js +++ b/server/api/contact_manager/index.js @@ -1,23 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./contact_manager.controller'); -var auth = require('../../auth/auth.service'); -var license = require('../../config/license/license.service'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), license.hasCm(), auth.hasModule([5], ['admin', 'agent']), controller.index); -router.get('/describe', auth.isAuthenticated(), license.hasCm(), auth.hasModule([5], ['admin']), controller.describe); -router.get('/:id/checkevent', auth.isAuthenticated(), license.hasCm(), auth.hasModule([5], ['admin', 'agent']), controller.getEventContacts); -router.get('/:id', auth.isAuthenticated(), license.hasCm(), auth.hasModule([5], ['admin', 'agent']), controller.show); -router.get('/:id/log', auth.isAuthenticated(), license.hasCm(), auth.hasModule([5], ['admin', 'agent']), controller.getLog); -router.post('/', auth.isAuthenticated(), license.hasCm(), auth.hasModule([5], ['admin', 'agent']), controller.create); -router.post('/:id/copy', auth.isAuthenticated(), license.hasCm(), auth.hasModule([5], ['admin', 'agent']), controller.copy); -router.post('/:id/merge', auth.isAuthenticated(), license.hasCm(), auth.hasModule([5], ['admin', 'agent']), controller.merge); -router.post('/bulk', auth.isAuthenticated(), license.hasCm(), auth.hasModule([5], ['admin']), controller.bulkCreate); -router.put('/:id', auth.isAuthenticated(), license.hasCm(), auth.hasModule([5], ['admin', 'agent']), controller.update); -router.delete('/', auth.isAuthenticated(), license.hasCm(), auth.hasModule([5], ['admin']), controller.bulkDestroy); -router.delete('/:id', auth.isAuthenticated(), license.hasCm(), auth.hasModule([5], ['admin']), controller.destroy); - -module.exports = router; +var _0x5b37=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x63\x6F\x6E\x74\x61\x63\x74\x5F\x6D\x61\x6E\x61\x67\x65\x72\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x68\x61\x73\x43\x6D","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x64\x65\x73\x63\x72\x69\x62\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x2F\x3A\x69\x64\x2F\x63\x68\x65\x63\x6B\x65\x76\x65\x6E\x74","\x67\x65\x74\x45\x76\x65\x6E\x74\x43\x6F\x6E\x74\x61\x63\x74\x73","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x2F\x3A\x69\x64\x2F\x6C\x6F\x67","\x67\x65\x74\x4C\x6F\x67","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x2F\x3A\x69\x64\x2F\x63\x6F\x70\x79","\x63\x6F\x70\x79","\x2F\x3A\x69\x64\x2F\x6D\x65\x72\x67\x65","\x6D\x65\x72\x67\x65","\x2F\x62\x75\x6C\x6B","\x62\x75\x6C\x6B\x43\x72\x65\x61\x74\x65","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0x5b37[0];var express=require(_0x5b37[1]);var controller=require(_0x5b37[2]);var auth=require(_0x5b37[3]);var license=require(_0x5b37[4]);var router=express.Router();router[_0x5b37[12]](_0x5b37[5],auth[_0x5b37[6]](),license[_0x5b37[7]](),auth[_0x5b37[10]]([5],[_0x5b37[8],_0x5b37[9]]),controller[_0x5b37[11]]);router[_0x5b37[12]](_0x5b37[13],auth[_0x5b37[6]](),license[_0x5b37[7]](),auth[_0x5b37[10]]([5],[_0x5b37[8]]),controller[_0x5b37[14]]);router[_0x5b37[12]](_0x5b37[15],auth[_0x5b37[6]](),license[_0x5b37[7]](),auth[_0x5b37[10]]([5],[_0x5b37[8],_0x5b37[9]]),controller[_0x5b37[16]]);router[_0x5b37[12]](_0x5b37[17],auth[_0x5b37[6]](),license[_0x5b37[7]](),auth[_0x5b37[10]]([5],[_0x5b37[8],_0x5b37[9]]),controller[_0x5b37[18]]);router[_0x5b37[12]](_0x5b37[19],auth[_0x5b37[6]](),license[_0x5b37[7]](),auth[_0x5b37[10]]([5],[_0x5b37[8],_0x5b37[9]]),controller[_0x5b37[20]]);router[_0x5b37[22]](_0x5b37[5],auth[_0x5b37[6]](),license[_0x5b37[7]](),auth[_0x5b37[10]]([5],[_0x5b37[8],_0x5b37[9]]),controller[_0x5b37[21]]);router[_0x5b37[22]](_0x5b37[23],auth[_0x5b37[6]](),license[_0x5b37[7]](),auth[_0x5b37[10]]([5],[_0x5b37[8],_0x5b37[9]]),controller[_0x5b37[24]]);router[_0x5b37[22]](_0x5b37[25],auth[_0x5b37[6]](),license[_0x5b37[7]](),auth[_0x5b37[10]]([5],[_0x5b37[8],_0x5b37[9]]),controller[_0x5b37[26]]);router[_0x5b37[22]](_0x5b37[27],auth[_0x5b37[6]](),license[_0x5b37[7]](),auth[_0x5b37[10]]([5],[_0x5b37[8]]),controller[_0x5b37[28]]);router[_0x5b37[30]](_0x5b37[17],auth[_0x5b37[6]](),license[_0x5b37[7]](),auth[_0x5b37[10]]([5],[_0x5b37[8],_0x5b37[9]]),controller[_0x5b37[29]]);router[_0x5b37[32]](_0x5b37[5],auth[_0x5b37[6]](),license[_0x5b37[7]](),auth[_0x5b37[10]]([5],[_0x5b37[8]]),controller[_0x5b37[31]]);router[_0x5b37[32]](_0x5b37[17],auth[_0x5b37[6]](),license[_0x5b37[7]](),auth[_0x5b37[10]]([5],[_0x5b37[8]]),controller[_0x5b37[33]]);module[_0x5b37[34]]= router \ No newline at end of file diff --git a/server/api/custom_report/custom_report.controller.js b/server/api/custom_report/custom_report.controller.js index b0ead9a..700c322 100644 --- a/server/api/custom_report/custom_report.controller.js +++ b/server/api/custom_report/custom_report.controller.js @@ -1,568 +1 @@ -'use strict'; - -var _ = require('lodash'); -var util = require('util'); -var sequelize = require('../../models').sequelize; -var CustomReport = require('../../models').CustomReport; -var ReportField = require('../../models').ReportField; -var Metric = require('../../models').Metric; -var ExtractedReport = require('../../models').ExtractedReport; -var extractUtils = require('../../utils/report_extraction'); -var reportBuildUtils = require('../../utils/report_build'); -var Util = require('../../config/util'); -var sr = require('simple-random'); -var moment = require('moment'); -var cp = require('child_process'); -var ReportTree = require('../../models').ReportTree; - -// Get list of agents -exports.index = function(req, res, next) { - return CustomReport - .findAndCountAll(Util.getQuery(req.query, { - deletedAt: null - })) - .then(function(result) { - res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.getReportQuery = function(req, res) { - return Promise - .all([]) - .then(getQuery(req, res)) - .then(function(query) { - if (query) { - switch (query) { - case 'permission': - query = 'no sufficient queue permissions for the user'; - break; - default: - } - } - res.status(200).send({ - query: query - }); - }) - .catch(function(err) { - console.log('Error getting query from api:', err); - }); -} - -function getQuery(req, res) { - var _report; - return function() { - return CustomReport - .scope('fields') - .findById(req.params.id) - .then(function(report) { - console.log('found report'); - if (!report) { - return res.sendStatus(404); - } - if (req.query.daily && req.query.daily === 'true') { - req.query.startDate = moment().format('YYYY-MM-DD'); - req.query.endDate = moment().format('YYYY-MM-DD'); - report.dataValues.table = report.dataValues.table.replace( - '_history', ''); - } - delete req.query.daily; - _report = report.dataValues; - return _report.table; - }) - .then(reportBuildUtils.buildFilter(req.user)) - .then(function(filter) { - return [filter, _report]; - }) - .spread(reportBuildUtils.buildQuery(req.query)) - } -} - -exports.preview = function(req, res) { - var _countAll; - return Promise - .all([]) - .then(getQuery(req, res)) - .then(reportBuildUtils.checkQuery()) - .then(function(results) { - if (results && _.isArray(results)) { - _countAll = results.length; - if (req.query.limit) { - results = _(results).slice(req.query.offset || 0).take(req.query.limit).value(); - } - _.forEach(results, function(row) { - _.forOwn(row, function(property, key) { - if (property instanceof Date) { - row[key] = moment(property).format("YYYY-MM-DD HH:mm:ss").toString(); - } - }); - }); - res.status(200).send({ - rows: results, - count: _countAll - }); - } else { - return handleError(res, { - message: results || 'query error' - }); - } - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -exports.extractPdf = function(req, res) { - // console.log('extractPdf api function'); - docExtract(req, res, 'PDF') -}; - -exports.extractCsv = function(req, res) { - // console.log('extractCsv api function'); - docExtract(req, res, 'CSV'); -}; - -exports.destroyNodeReports = function(req, res) { - return ReportTree - .findById(2) - .then(function(tree) { - tree = JSON.parse(tree.tree); - var node = _.find(tree, { - id: req.params.id - }); - if (!node) { - throw new Error('Node not found'); - } - var nodes = []; - findSubNodes(node, tree, nodes); - return CustomReport - .destroy({ - where: { - parent: nodes - }, - individualHooks: true - }); - }) - .then(function() { - return res.sendStatus(200); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -function findSubNodes(node, tree, _nodes) { //receive a node, the tree containing the node and an array where to insert all the sub nodes found recursively, including the starting node - _nodes.push(node.id); - var subNodes = _.filter(tree, { - parent: node.id - }); - if (!subNodes || !subNodes.length) { - return; - } - _.forEach(subNodes, function(subNode) { - findSubNodes(subNode, tree, _nodes); - }); -} - -function docExtract(req, res, typeFunction) { - var report; - // console.log('common docExtract api function'); - CustomReport //DO NOT ADD RETURN CAUSE THE EXTRACTING FUNCTION WILL KEEP EXTRACTING AFTER THE API HAS RETURNED - .scope('fields') - .findById(req.params.id) - .then(function(_report) { - if (!_report) { - return res.sendStatus(404); - } - report = _report; - return ReportTree - .findById(2); - }) - .then(function(tree) { - tree = JSON.parse(tree.tree); - var folder = _.find(tree, { - id: report.parent - }); - var path = getReportPath(folder, tree, report.name); - // console.log('found the report, creating the new DB row for extracted reports..'); - //CREATE A DB ROW IN A TABLE WITH THE REPORT INFO, QUERY DATES, AND THE STATUS 'ELABORATING' - if (req.query.daily && req.query.daily === 'true') { - req.query.startDate = moment().format('YYYY-MM-DD'); - req.query.endDate = moment().format('YYYY-MM-DD'); - report.dataValues.table = report.dataValues.table.replace('_history', - ''); - } - delete req.query.daily; - return [report, ExtractedReport.create({ - name: path, - startDate: req.query.startDate ? req.query.startDate + (req.query.startTime ? ' ' + req.query.startTime : '00:00') : null, - endDate: req.query.endDate ? req.query.endDate + (req.query.endTime ? ' ' + req.query.endTime : '23:59') : null, - output: typeFunction, - UserId: req.user.id - })] - }) - .spread(function(report, extractedReport) { - // console.log('created new extracted reports db entry, calling external extraction function: ' + typeFunction); - var child = cp.fork(__dirname + '/../../utils/report_extraction.js'); - child.on('message', function(data) { - console.log('child message', data); - child.kill(); - }).on('close', function() { - console.log('child close'); - }).on('error', function(err) { - console.log('child error', err); - }); - child.send({ - report: report, - query: req.query, - extractedId: extractedReport.id, - user: req.user, - type: typeFunction - }); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); - return res.sendStatus(200); -} - -function getReportPath(folder, tree, path) { - path = folder.text + '/ ' + path; - if (folder.parent === '#') { - return path; - } else { - return getReportPath(_.find(tree, { - id: folder.parent - }), tree, path); - } -} - -// Get a single report -exports.show = function(req, res) { - return CustomReport - .scope('fields') - .findById(req.params.id) - .then(function(report) { - if (!report) { - return res.sendStatus(404); - } - return res.send(report); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - - -// Get a single report -exports.export = function(req, res) { - return CustomReport - .scope({ - method: ['exportFields', { - CustomReportId: req.params.id - }] - }) //add where condition on customreport id - .findById(req.params.id, { - attributes: ['conditions', 'description', 'name', 'parent', 'table'] - }) - .then(function(report) { - if (!report) { - return res.sendStatus(404); - } - return res.send(report); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Copy a custom report -exports.copy = function(req, res) { - var _fields; - return sequelize.transaction(function(t) { - return CustomReport - .scope('fields') - .findById(req.params.id) - .then(function(report) { - if (!report) { - return res.sendStatus(404); - } - var newReport = report.dataValues; - delete newReport.id; - delete newReport.createdAt; - delete newReport.updatedAt; - newReport.parent = req.body.parent; - _fields = _.map(newReport.Fields, 'dataValues'); - return CustomReport - .create(newReport, { - transaction: t - }); - }) - .then(function(report) { - return [report, _fields]; - }) - .spread(createFields(t)); - }) - .then(function() { - return res.sendStatus(201); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -// Creates a new report in the DB. -exports.create = function(req, res) { - var _report; - return sequelize.transaction(function(t) { - return CustomReport - .create(req.body, { - transaction: t - }) - .then(function(report) { - _report = report; - return [_report, req.body.Fields]; - }) - .spread(createFields(t)); - }) - .then(function() { - return res.status(201).send(_report); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -// Import a report in the DB. -exports.import = function(req, res) { - var _report; - return sequelize.transaction(function(t) { - return CustomReport - .create(req.body, { - transaction: t - }) - .then(function(report) { - _report = report; - return [_report, req.body.Fields]; - }) - .spread(createImportFields(t)); - }) - .then(function() { - return res.status(201).send(_report); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -exports.update = function(req, res, next) { - if (req.body.id) { - delete req.body.id; - } - var _report; - return sequelize.transaction(function(t) { - return CustomReport - .findById(req.params.id) - .then(function(report) { - if (!report) { - return res.sendStatus(404); - } - var updated = _.merge(report, req.body); - return report - .save({ - transaction: t - }); - }) - .then(function(report) { - _report = report; - if (req.body.Fields) { - return ReportField.destroy({ - where: { - CustomReportId: req.params.id - }, - transaction: t - }); - } - }) - .then(function() { - return [_report, req.body.Fields]; - }) - .spread(createFields(t)); - }) - .then(function() { - return res.sendStatus(200); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -} - -function createFields(t) { - return function(report, fields) { - if (fields && Array.isArray(fields) && fields.length) { - var tableModel = reportBuildUtils.getTable(report.table); - if (tableModel) { - var _tableFields; - return tableModel - .describe() - .then(function(tableFields) { - _tableFields = _.keys(tableFields); - return Metric - .findAll(); - }) - .then(function(metrics) { - var bulkFields = []; - metrics = _.map(metrics, 'dataValues'); - fields.forEach(function(elem) { - elem.CustomReportId = report.id; - if (elem.MetricId) { - var metric = _.find(metrics, { - id: elem.MetricId - }); - if (metric) { - elem.field = metric.metric; - bulkFields.push(ReportField - .create(elem, { - transaction: t - })); - } else { - throw new sequelize.Error("The metric with id " + - elem.MetricId + " you specified does not exist"); - } - } else { - if (_.includes(_tableFields, elem.field) || elem.custom) { - bulkFields.push(ReportField - .create(elem, { - transaction: t - })); - } else { - throw new sequelize.Error("The field " + elem.field + - " you specified does not exist in the table"); - } - } - }); - return bulkFields; - }) - .all(); - } else { - throw new sequelize.Error( - "You have not specified the table or the table does not exist"); - } - } - } -} - -function createImportFields(t) { - return function(report, fields) { - if (fields && Array.isArray(fields) && fields.length) { - var tableModel = reportBuildUtils.getTable(report.table); - if (tableModel) { - var _tableFields; - return tableModel - .describe() - .then(function(tableFields) { - _tableFields = _.keys(tableFields); - var bulkFields = []; - var type; - if (_.every(fields, function(elem) { - return _.has(elem, 'DefaultMetricId'); - })) { - type = 'DefaultMetric' - } else if (_.every(fields, function(elem) { - return _.has(elem, 'MetricId'); - })) { - type = 'Metric' - } else { - throw new sequelize.Error("Unsupported Import format (Metric type in report fields is missing)"); - } - var groupedFields = _.groupBy(fields, type + 'Id'); - _.forOwn(groupedFields, function(value, key) { - if (key !== 'undefined' && key !== 'null') { - value[0][type].ReportFields.forEach(function(elem) { - elem.CustomReportId = report.id; - }); - value[0][type].name += '_' + sr({ - length: 5 - }); - bulkFields.push(Metric - .create(value[0][type], { - include: [{ - model: ReportField, - as: 'ReportFields' - }], - transaction: t - })); - } else { - value.forEach(function(elem) { - if (_.includes(_tableFields, elem.field) || elem.custom) { - elem.CustomReportId = report.id; - bulkFields.push(ReportField - .create(elem, { - transaction: t - })); - } else { - throw new sequelize.Error("The field " + elem.field + - " you specified does not exist in the table" - ); - } - }); - } - }); - return bulkFields; - }) - .all(); - } else { - throw new sequelize.Error( - "You have not specified the table or the table does not exist"); - } - } - } -} - - -// Deletes a report from the DB. -exports.destroy = function(req, res) { - return CustomReport - .findById(req.params.id) - .then(function(report) { - if (!report) { - return res.sendStatus(404); - } - return report.destroy(); - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.bulkDestroy = function(req, res) { - return CustomReport - .destroy({ - where: { - id: req.query.ids - }, - individualHooks: true - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0xa347=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x75\x74\x69\x6C","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74","\x52\x65\x70\x6F\x72\x74\x46\x69\x65\x6C\x64","\x4D\x65\x74\x72\x69\x63","\x45\x78\x74\x72\x61\x63\x74\x65\x64\x52\x65\x70\x6F\x72\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x75\x74\x69\x6C\x73\x2F\x72\x65\x70\x6F\x72\x74\x5F\x65\x78\x74\x72\x61\x63\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x75\x74\x69\x6C\x73\x2F\x72\x65\x70\x6F\x72\x74\x5F\x62\x75\x69\x6C\x64","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x73\x69\x6D\x70\x6C\x65\x2D\x72\x61\x6E\x64\x6F\x6D","\x6D\x6F\x6D\x65\x6E\x74","\x63\x68\x69\x6C\x64\x5F\x70\x72\x6F\x63\x65\x73\x73","\x52\x65\x70\x6F\x72\x74\x54\x72\x65\x65","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x67\x65\x74\x52\x65\x70\x6F\x72\x74\x51\x75\x65\x72\x79","\x45\x72\x72\x6F\x72\x20\x67\x65\x74\x74\x69\x6E\x67\x20\x71\x75\x65\x72\x79\x20\x66\x72\x6F\x6D\x20\x61\x70\x69\x3A","\x6C\x6F\x67","\x6E\x6F\x20\x73\x75\x66\x66\x69\x63\x69\x65\x6E\x74\x20\x71\x75\x65\x75\x65\x20\x70\x65\x72\x6D\x69\x73\x73\x69\x6F\x6E\x73\x20\x66\x6F\x72\x20\x74\x68\x65\x20\x75\x73\x65\x72","\x70\x65\x72\x6D\x69\x73\x73\x69\x6F\x6E","\x61\x6C\x6C","\x62\x75\x69\x6C\x64\x51\x75\x65\x72\x79","\x73\x70\x72\x65\x61\x64","\x75\x73\x65\x72","\x62\x75\x69\x6C\x64\x46\x69\x6C\x74\x65\x72","\x66\x6F\x75\x6E\x64\x20\x72\x65\x70\x6F\x72\x74","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x64\x61\x69\x6C\x79","\x74\x72\x75\x65","\x73\x74\x61\x72\x74\x44\x61\x74\x65","\x59\x59\x59\x59\x2D\x4D\x4D\x2D\x44\x44","\x66\x6F\x72\x6D\x61\x74","\x65\x6E\x64\x44\x61\x74\x65","\x74\x61\x62\x6C\x65","\x64\x61\x74\x61\x56\x61\x6C\x75\x65\x73","\x5F\x68\x69\x73\x74\x6F\x72\x79","","\x72\x65\x70\x6C\x61\x63\x65","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x66\x69\x65\x6C\x64\x73","\x73\x63\x6F\x70\x65","\x70\x72\x65\x76\x69\x65\x77","\x69\x73\x41\x72\x72\x61\x79","\x6C\x65\x6E\x67\x74\x68","\x6C\x69\x6D\x69\x74","\x76\x61\x6C\x75\x65","\x74\x61\x6B\x65","\x6F\x66\x66\x73\x65\x74","\x73\x6C\x69\x63\x65","\x59\x59\x59\x59\x2D\x4D\x4D\x2D\x44\x44\x20\x48\x48\x3A\x6D\x6D\x3A\x73\x73","\x66\x6F\x72\x4F\x77\x6E","\x66\x6F\x72\x45\x61\x63\x68","\x71\x75\x65\x72\x79\x20\x65\x72\x72\x6F\x72","\x63\x68\x65\x63\x6B\x51\x75\x65\x72\x79","\x65\x78\x74\x72\x61\x63\x74\x50\x64\x66","\x50\x44\x46","\x65\x78\x74\x72\x61\x63\x74\x43\x73\x76","\x43\x53\x56","\x64\x65\x73\x74\x72\x6F\x79\x4E\x6F\x64\x65\x52\x65\x70\x6F\x72\x74\x73","\x74\x72\x65\x65","\x70\x61\x72\x73\x65","\x66\x69\x6E\x64","\x4E\x6F\x64\x65\x20\x6E\x6F\x74\x20\x66\x6F\x75\x6E\x64","\x64\x65\x73\x74\x72\x6F\x79","\x70\x75\x73\x68","\x66\x69\x6C\x74\x65\x72","\x2F\x2E\x2E\x2F\x2E\x2E\x2F\x75\x74\x69\x6C\x73\x2F\x72\x65\x70\x6F\x72\x74\x5F\x65\x78\x74\x72\x61\x63\x74\x69\x6F\x6E\x2E\x6A\x73","\x66\x6F\x72\x6B","\x65\x72\x72\x6F\x72","\x63\x68\x69\x6C\x64\x20\x65\x72\x72\x6F\x72","\x6F\x6E","\x63\x6C\x6F\x73\x65","\x63\x68\x69\x6C\x64\x20\x63\x6C\x6F\x73\x65","\x6D\x65\x73\x73\x61\x67\x65","\x63\x68\x69\x6C\x64\x20\x6D\x65\x73\x73\x61\x67\x65","\x6B\x69\x6C\x6C","\x70\x61\x72\x65\x6E\x74","\x6E\x61\x6D\x65","\x73\x74\x61\x72\x74\x54\x69\x6D\x65","\x20","\x30\x30\x3A\x30\x30","\x65\x6E\x64\x54\x69\x6D\x65","\x32\x33\x3A\x35\x39","\x63\x72\x65\x61\x74\x65","\x74\x65\x78\x74","\x2F\x20","\x23","\x73\x68\x6F\x77","\x65\x78\x70\x6F\x72\x74","\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73","\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E","\x65\x78\x70\x6F\x72\x74\x46\x69\x65\x6C\x64\x73","\x63\x6F\x70\x79","\x63\x72\x65\x61\x74\x65\x64\x41\x74","\x75\x70\x64\x61\x74\x65\x64\x41\x74","\x62\x6F\x64\x79","\x6D\x61\x70","\x74\x72\x61\x6E\x73\x61\x63\x74\x69\x6F\x6E","\x46\x69\x65\x6C\x64\x73","\x69\x6D\x70\x6F\x72\x74","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x67\x65\x74\x54\x61\x62\x6C\x65","\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64","\x4D\x65\x74\x72\x69\x63\x49\x64","\x66\x69\x65\x6C\x64","\x6D\x65\x74\x72\x69\x63","\x54\x68\x65\x20\x6D\x65\x74\x72\x69\x63\x20\x77\x69\x74\x68\x20\x69\x64\x20","\x20\x79\x6F\x75\x20\x73\x70\x65\x63\x69\x66\x69\x65\x64\x20\x64\x6F\x65\x73\x20\x6E\x6F\x74\x20\x65\x78\x69\x73\x74","\x69\x6E\x63\x6C\x75\x64\x65\x73","\x63\x75\x73\x74\x6F\x6D","\x54\x68\x65\x20\x66\x69\x65\x6C\x64\x20","\x20\x79\x6F\x75\x20\x73\x70\x65\x63\x69\x66\x69\x65\x64\x20\x64\x6F\x65\x73\x20\x6E\x6F\x74\x20\x65\x78\x69\x73\x74\x20\x69\x6E\x20\x74\x68\x65\x20\x74\x61\x62\x6C\x65","\x6B\x65\x79\x73","\x66\x69\x6E\x64\x41\x6C\x6C","\x64\x65\x73\x63\x72\x69\x62\x65","\x59\x6F\x75\x20\x68\x61\x76\x65\x20\x6E\x6F\x74\x20\x73\x70\x65\x63\x69\x66\x69\x65\x64\x20\x74\x68\x65\x20\x74\x61\x62\x6C\x65\x20\x6F\x72\x20\x74\x68\x65\x20\x74\x61\x62\x6C\x65\x20\x64\x6F\x65\x73\x20\x6E\x6F\x74\x20\x65\x78\x69\x73\x74","\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64","\x68\x61\x73","\x65\x76\x65\x72\x79","\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63","\x55\x6E\x73\x75\x70\x70\x6F\x72\x74\x65\x64\x20\x49\x6D\x70\x6F\x72\x74\x20\x66\x6F\x72\x6D\x61\x74\x20\x28\x4D\x65\x74\x72\x69\x63\x20\x74\x79\x70\x65\x20\x69\x6E\x20\x72\x65\x70\x6F\x72\x74\x20\x66\x69\x65\x6C\x64\x73\x20\x69\x73\x20\x6D\x69\x73\x73\x69\x6E\x67\x29","\x49\x64","\x67\x72\x6F\x75\x70\x42\x79","\x75\x6E\x64\x65\x66\x69\x6E\x65\x64","\x6E\x75\x6C\x6C","\x52\x65\x70\x6F\x72\x74\x46\x69\x65\x6C\x64\x73","\x5F","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73"];_0xa347[0];var _=require(_0xa347[1]);var util=require(_0xa347[2]);var sequelize=require(_0xa347[4])[_0xa347[3]];var CustomReport=require(_0xa347[4])[_0xa347[5]];var ReportField=require(_0xa347[4])[_0xa347[6]];var Metric=require(_0xa347[4])[_0xa347[7]];var ExtractedReport=require(_0xa347[4])[_0xa347[8]];var extractUtils=require(_0xa347[9]);var reportBuildUtils=require(_0xa347[10]);var Util=require(_0xa347[11]);var sr=require(_0xa347[12]);var moment=require(_0xa347[13]);var cp=require(_0xa347[14]);var ReportTree=require(_0xa347[4])[_0xa347[15]];exports[_0xa347[16]]= function(_0x2681xf,_0x2681x10,_0x2681x11){return CustomReport[_0xa347[23]](Util[_0xa347[22]](_0x2681xf[_0xa347[21]],{deletedAt:null}))[_0xa347[20]](function(_0x2681x13){_0x2681x10[_0xa347[19]](200)[_0xa347[18]](_0x2681x13)})[_0xa347[17]](function(_0x2681x12){return handleError(_0x2681x10,_0x2681x12)})};exports[_0xa347[24]]= function(_0x2681xf,_0x2681x10){return Promise[_0xa347[29]]([])[_0xa347[20]](getQuery(_0x2681xf,_0x2681x10))[_0xa347[20]](function(_0x2681x14){if(_0x2681x14){switch(_0x2681x14){case _0xa347[28]:_0x2681x14= _0xa347[27];break;default:}};_0x2681x10[_0xa347[19]](200)[_0xa347[18]]({query:_0x2681x14})})[_0xa347[17]](function(_0x2681x12){console[_0xa347[26]](_0xa347[25],_0x2681x12)})};function getQuery(_0x2681xf,_0x2681x10){var _0x2681x16;return function(){return CustomReport[_0xa347[51]](_0xa347[50])[_0xa347[49]](_0x2681xf[_0xa347[48]][_0xa347[47]])[_0xa347[20]](function(_0x2681x18){console[_0xa347[26]](_0xa347[34]);if(!_0x2681x18){return _0x2681x10[_0xa347[35]](404)};if(_0x2681xf[_0xa347[21]][_0xa347[36]]&& _0x2681xf[_0xa347[21]][_0xa347[36]]=== _0xa347[37]){_0x2681xf[_0xa347[21]][_0xa347[38]]= moment()[_0xa347[40]](_0xa347[39]);_0x2681xf[_0xa347[21]][_0xa347[41]]= moment()[_0xa347[40]](_0xa347[39]);_0x2681x18[_0xa347[43]][_0xa347[42]]= _0x2681x18[_0xa347[43]][_0xa347[42]][_0xa347[46]](_0xa347[44],_0xa347[45])};delete _0x2681xf[_0xa347[21]][_0xa347[36]];_0x2681x16= _0x2681x18[_0xa347[43]];return _0x2681x16[_0xa347[42]]})[_0xa347[20]](reportBuildUtils[_0xa347[33]](_0x2681xf[_0xa347[32]]))[_0xa347[20]](function(_0x2681x17){return [_0x2681x17,_0x2681x16]})[_0xa347[31]](reportBuildUtils[_0xa347[30]](_0x2681xf[_0xa347[21]]))}}exports[_0xa347[52]]= function(_0x2681xf,_0x2681x10){var _0x2681x19;return Promise[_0xa347[29]]([])[_0xa347[20]](getQuery(_0x2681xf,_0x2681x10))[_0xa347[20]](reportBuildUtils[_0xa347[64]]())[_0xa347[20]](function(_0x2681x1a){if(_0x2681x1a&& _[_0xa347[53]](_0x2681x1a)){_0x2681x19= _0x2681x1a[_0xa347[54]];if(_0x2681xf[_0xa347[21]][_0xa347[55]]){_0x2681x1a= _(_0x2681x1a)[_0xa347[59]](_0x2681xf[_0xa347[21]][_0xa347[58]]|| 0)[_0xa347[57]](_0x2681xf[_0xa347[21]][_0xa347[55]])[_0xa347[56]]()};_[_0xa347[62]](_0x2681x1a,function(_0x2681x1b){_[_0xa347[61]](_0x2681x1b,function(_0x2681x1c,_0x2681x1d){if(_0x2681x1c instanceof Date){_0x2681x1b[_0x2681x1d]= moment(_0x2681x1c)[_0xa347[40]](_0xa347[60]).toString()}})});_0x2681x10[_0xa347[19]](200)[_0xa347[18]]({rows:_0x2681x1a,count:_0x2681x19})}else {return handleError(_0x2681x10,{message:_0x2681x1a|| _0xa347[63]})}})[_0xa347[17]](function(_0x2681x12){console[_0xa347[26]](_0x2681x12);return handleError(_0x2681x10,_0x2681x12)})};exports[_0xa347[65]]= function(_0x2681xf,_0x2681x10){docExtract(_0x2681xf,_0x2681x10,_0xa347[66])};exports[_0xa347[67]]= function(_0x2681xf,_0x2681x10){docExtract(_0x2681xf,_0x2681x10,_0xa347[68])};exports[_0xa347[69]]= function(_0x2681xf,_0x2681x10){return ReportTree[_0xa347[49]](2)[_0xa347[20]](function(_0x2681x1e){_0x2681x1e= JSON[_0xa347[71]](_0x2681x1e[_0xa347[70]]);var _0x2681x1f=_[_0xa347[72]](_0x2681x1e,{id:_0x2681xf[_0xa347[48]][_0xa347[47]]});if(!_0x2681x1f){throw new Error(_0xa347[73])};var _0x2681x20=[];findSubNodes(_0x2681x1f,_0x2681x1e,_0x2681x20);return CustomReport[_0xa347[74]]({where:{parent:_0x2681x20},individualHooks:true})})[_0xa347[20]](function(){return _0x2681x10[_0xa347[35]](200)})[_0xa347[17]](function(_0x2681x12){console[_0xa347[26]](_0x2681x12);return handleError(_0x2681x10,_0x2681x12)})};function findSubNodes(_0x2681x1f,_0x2681x1e,_0x2681x22){_0x2681x22[_0xa347[75]](_0x2681x1f[_0xa347[47]]);var _0x2681x23=_[_0xa347[76]](_0x2681x1e,{parent:_0x2681x1f[_0xa347[47]]});if(!_0x2681x23|| !_0x2681x23[_0xa347[54]]){return};_[_0xa347[62]](_0x2681x23,function(_0x2681x24){findSubNodes(_0x2681x24,_0x2681x1e,_0x2681x22)})}function docExtract(_0x2681xf,_0x2681x10,_0x2681x26){var _0x2681x18;CustomReport[_0xa347[51]](_0xa347[50])[_0xa347[49]](_0x2681xf[_0xa347[48]][_0xa347[47]])[_0xa347[20]](function(_0x2681x16){if(!_0x2681x16){return _0x2681x10[_0xa347[35]](404)};_0x2681x18= _0x2681x16;return ReportTree[_0xa347[49]](2)})[_0xa347[20]](function(_0x2681x1e){_0x2681x1e= JSON[_0xa347[71]](_0x2681x1e[_0xa347[70]]);var _0x2681x2a=_[_0xa347[72]](_0x2681x1e,{id:_0x2681x18[_0xa347[87]]});var _0x2681x2b=getReportPath(_0x2681x2a,_0x2681x1e,_0x2681x18[_0xa347[88]]);if(_0x2681xf[_0xa347[21]][_0xa347[36]]&& _0x2681xf[_0xa347[21]][_0xa347[36]]=== _0xa347[37]){_0x2681xf[_0xa347[21]][_0xa347[38]]= moment()[_0xa347[40]](_0xa347[39]);_0x2681xf[_0xa347[21]][_0xa347[41]]= moment()[_0xa347[40]](_0xa347[39]);_0x2681x18[_0xa347[43]][_0xa347[42]]= _0x2681x18[_0xa347[43]][_0xa347[42]][_0xa347[46]](_0xa347[44],_0xa347[45])};delete _0x2681xf[_0xa347[21]][_0xa347[36]];return [_0x2681x18,ExtractedReport[_0xa347[94]]({name:_0x2681x2b,startDate:_0x2681xf[_0xa347[21]][_0xa347[38]]?_0x2681xf[_0xa347[21]][_0xa347[38]]+ (_0x2681xf[_0xa347[21]][_0xa347[89]]?_0xa347[90]+ _0x2681xf[_0xa347[21]][_0xa347[89]]:_0xa347[91]):null,endDate:_0x2681xf[_0xa347[21]][_0xa347[41]]?_0x2681xf[_0xa347[21]][_0xa347[41]]+ (_0x2681xf[_0xa347[21]][_0xa347[92]]?_0xa347[90]+ _0x2681xf[_0xa347[21]][_0xa347[92]]:_0xa347[93]):null,output:_0x2681x26,UserId:_0x2681xf[_0xa347[32]][_0xa347[47]]})]})[_0xa347[31]](function(_0x2681x18,_0x2681x27){var _0x2681x28=cp[_0xa347[78]](__dirname+ _0xa347[77]);_0x2681x28[_0xa347[81]](_0xa347[84],function(_0x2681x29){console[_0xa347[26]](_0xa347[85],_0x2681x29);_0x2681x28[_0xa347[86]]()})[_0xa347[81]](_0xa347[82],function(){console[_0xa347[26]](_0xa347[83])})[_0xa347[81]](_0xa347[79],function(_0x2681x12){console[_0xa347[26]](_0xa347[80],_0x2681x12)});_0x2681x28[_0xa347[18]]({report:_0x2681x18,query:_0x2681xf[_0xa347[21]],extractedId:_0x2681x27[_0xa347[47]],user:_0x2681xf[_0xa347[32]],type:_0x2681x26})})[_0xa347[17]](function(_0x2681x12){console[_0xa347[26]](_0x2681x12);return handleError(_0x2681x10,_0x2681x12)});return _0x2681x10[_0xa347[35]](200)}function getReportPath(_0x2681x2a,_0x2681x1e,_0x2681x2b){_0x2681x2b= _0x2681x2a[_0xa347[95]]+ _0xa347[96]+ _0x2681x2b;if(_0x2681x2a[_0xa347[87]]=== _0xa347[97]){return _0x2681x2b}else {return getReportPath(_[_0xa347[72]](_0x2681x1e,{id:_0x2681x2a[_0xa347[87]]}),_0x2681x1e,_0x2681x2b)}}exports[_0xa347[98]]= function(_0x2681xf,_0x2681x10){return CustomReport[_0xa347[51]](_0xa347[50])[_0xa347[49]](_0x2681xf[_0xa347[48]][_0xa347[47]])[_0xa347[20]](function(_0x2681x18){if(!_0x2681x18){return _0x2681x10[_0xa347[35]](404)};return _0x2681x10[_0xa347[18]](_0x2681x18)})[_0xa347[17]](function(_0x2681x12){return handleError(_0x2681x10,_0x2681x12)})};exports[_0xa347[99]]= function(_0x2681xf,_0x2681x10){return CustomReport[_0xa347[51]]({method:[_0xa347[102],{CustomReportId:_0x2681xf[_0xa347[48]][_0xa347[47]]}]})[_0xa347[49]](_0x2681xf[_0xa347[48]][_0xa347[47]],{attributes:[_0xa347[100],_0xa347[101],_0xa347[88],_0xa347[87],_0xa347[42]]})[_0xa347[20]](function(_0x2681x18){if(!_0x2681x18){return _0x2681x10[_0xa347[35]](404)};return _0x2681x10[_0xa347[18]](_0x2681x18)})[_0xa347[17]](function(_0x2681x12){return handleError(_0x2681x10,_0x2681x12)})};exports[_0xa347[103]]= function(_0x2681xf,_0x2681x10){var _0x2681x2d;return sequelize[_0xa347[108]](function(_0x2681x2e){return CustomReport[_0xa347[51]](_0xa347[50])[_0xa347[49]](_0x2681xf[_0xa347[48]][_0xa347[47]])[_0xa347[20]](function(_0x2681x18){if(!_0x2681x18){return _0x2681x10[_0xa347[35]](404)};var _0x2681x2f=_0x2681x18[_0xa347[43]];delete _0x2681x2f[_0xa347[47]];delete _0x2681x2f[_0xa347[104]];delete _0x2681x2f[_0xa347[105]];_0x2681x2f[_0xa347[87]]= _0x2681xf[_0xa347[106]][_0xa347[87]];_0x2681x2d= _[_0xa347[107]](_0x2681x2f.Fields,_0xa347[43]);return CustomReport[_0xa347[94]](_0x2681x2f,{transaction:_0x2681x2e})})[_0xa347[20]](function(_0x2681x18){return [_0x2681x18,_0x2681x2d]})[_0xa347[31]](createFields(_0x2681x2e))})[_0xa347[20]](function(){return _0x2681x10[_0xa347[35]](201)})[_0xa347[17]](function(_0x2681x12){console[_0xa347[26]](_0x2681x12);return handleError(_0x2681x10,_0x2681x12)})};exports[_0xa347[94]]= function(_0x2681xf,_0x2681x10){var _0x2681x16;return sequelize[_0xa347[108]](function(_0x2681x2e){return CustomReport[_0xa347[94]](_0x2681xf[_0xa347[106]],{transaction:_0x2681x2e})[_0xa347[20]](function(_0x2681x18){_0x2681x16= _0x2681x18;return [_0x2681x16,_0x2681xf[_0xa347[106]][_0xa347[109]]]})[_0xa347[31]](createFields(_0x2681x2e))})[_0xa347[20]](function(){return _0x2681x10[_0xa347[19]](201)[_0xa347[18]](_0x2681x16)})[_0xa347[17]](function(_0x2681x12){console[_0xa347[26]](_0x2681x12);return handleError(_0x2681x10,_0x2681x12)})};exports[_0xa347[110]]= function(_0x2681xf,_0x2681x10){var _0x2681x16;return sequelize[_0xa347[108]](function(_0x2681x2e){return CustomReport[_0xa347[94]](_0x2681xf[_0xa347[106]],{transaction:_0x2681x2e})[_0xa347[20]](function(_0x2681x18){_0x2681x16= _0x2681x18;return [_0x2681x16,_0x2681xf[_0xa347[106]][_0xa347[109]]]})[_0xa347[31]](createImportFields(_0x2681x2e))})[_0xa347[20]](function(){return _0x2681x10[_0xa347[19]](201)[_0xa347[18]](_0x2681x16)})[_0xa347[17]](function(_0x2681x12){console[_0xa347[26]](_0x2681x12);return handleError(_0x2681x10,_0x2681x12)})};exports[_0xa347[111]]= function(_0x2681xf,_0x2681x10,_0x2681x11){if(_0x2681xf[_0xa347[106]][_0xa347[47]]){delete _0x2681xf[_0xa347[106]][_0xa347[47]]};var _0x2681x16;return sequelize[_0xa347[108]](function(_0x2681x2e){return CustomReport[_0xa347[49]](_0x2681xf[_0xa347[48]][_0xa347[47]])[_0xa347[20]](function(_0x2681x18){if(!_0x2681x18){return _0x2681x10[_0xa347[35]](404)};var _0x2681x30=_[_0xa347[112]](_0x2681x18,_0x2681xf[_0xa347[106]]);return _0x2681x18[_0xa347[113]]({transaction:_0x2681x2e})})[_0xa347[20]](function(_0x2681x18){_0x2681x16= _0x2681x18;if(_0x2681xf[_0xa347[106]][_0xa347[109]]){return ReportField[_0xa347[74]]({where:{CustomReportId:_0x2681xf[_0xa347[48]][_0xa347[47]]},transaction:_0x2681x2e})}})[_0xa347[20]](function(){return [_0x2681x16,_0x2681xf[_0xa347[106]][_0xa347[109]]]})[_0xa347[31]](createFields(_0x2681x2e))})[_0xa347[20]](function(){return _0x2681x10[_0xa347[35]](200)})[_0xa347[17]](function(_0x2681x12){console[_0xa347[26]](_0x2681x12);return handleError(_0x2681x10,_0x2681x12)})};function createFields(_0x2681x2e){return function(_0x2681x18,_0x2681x32){if(_0x2681x32&& Array[_0xa347[53]](_0x2681x32)&& _0x2681x32[_0xa347[54]]){var _0x2681x33=reportBuildUtils[_0xa347[114]](_0x2681x18[_0xa347[42]]);if(_0x2681x33){var _0x2681x34;return _0x2681x33[_0xa347[127]]()[_0xa347[20]](function(_0x2681x39){_0x2681x34= _[_0xa347[125]](_0x2681x39);return Metric[_0xa347[126]]()})[_0xa347[20]](function(_0x2681x35){var _0x2681x36=[];_0x2681x35= _[_0xa347[107]](_0x2681x35,_0xa347[43]);_0x2681x32[_0xa347[62]](function(_0x2681x37){_0x2681x37[_0xa347[115]]= _0x2681x18[_0xa347[47]];if(_0x2681x37[_0xa347[116]]){var _0x2681x38=_[_0xa347[72]](_0x2681x35,{id:_0x2681x37[_0xa347[116]]});if(_0x2681x38){_0x2681x37[_0xa347[117]]= _0x2681x38[_0xa347[118]];_0x2681x36[_0xa347[75]](ReportField[_0xa347[94]](_0x2681x37,{transaction:_0x2681x2e}))}else {throw new sequelize.Error(_0xa347[119]+ _0x2681x37[_0xa347[116]]+ _0xa347[120])}}else {if(_[_0xa347[121]](_0x2681x34,_0x2681x37[_0xa347[117]])|| _0x2681x37[_0xa347[122]]){_0x2681x36[_0xa347[75]](ReportField[_0xa347[94]](_0x2681x37,{transaction:_0x2681x2e}))}else {throw new sequelize.Error(_0xa347[123]+ _0x2681x37[_0xa347[117]]+ _0xa347[124])}}});return _0x2681x36})[_0xa347[29]]()}else {throw new sequelize.Error(_0xa347[128])}}}}function createImportFields(_0x2681x2e){return function(_0x2681x18,_0x2681x32){if(_0x2681x32&& Array[_0xa347[53]](_0x2681x32)&& _0x2681x32[_0xa347[54]]){var _0x2681x33=reportBuildUtils[_0xa347[114]](_0x2681x18[_0xa347[42]]);if(_0x2681x33){var _0x2681x34;return _0x2681x33[_0xa347[127]]()[_0xa347[20]](function(_0x2681x39){_0x2681x34= _[_0xa347[125]](_0x2681x39);var _0x2681x36=[];var _0x2681x3b;if(_[_0xa347[131]](_0x2681x32,function(_0x2681x37){return _[_0xa347[130]](_0x2681x37,_0xa347[129])})){_0x2681x3b= _0xa347[132]}else {if(_[_0xa347[131]](_0x2681x32,function(_0x2681x37){return _[_0xa347[130]](_0x2681x37,_0xa347[116])})){_0x2681x3b= _0xa347[7]}else {throw new sequelize.Error(_0xa347[133])}};var _0x2681x3c=_[_0xa347[135]](_0x2681x32,_0x2681x3b+ _0xa347[134]);_[_0xa347[61]](_0x2681x3c,function(_0x2681x3d,_0x2681x1d){if(_0x2681x1d!== _0xa347[136]&& _0x2681x1d!== _0xa347[137]){_0x2681x3d[0][_0x2681x3b][_0xa347[138]][_0xa347[62]](function(_0x2681x37){_0x2681x37[_0xa347[115]]= _0x2681x18[_0xa347[47]]});_0x2681x3d[0][_0x2681x3b][_0xa347[88]]+= _0xa347[139]+ sr({length:5});_0x2681x36[_0xa347[75]](Metric[_0xa347[94]](_0x2681x3d[0][_0x2681x3b],{include:[{model:ReportField,as:_0xa347[138]}],transaction:_0x2681x2e}))}else {_0x2681x3d[_0xa347[62]](function(_0x2681x37){if(_[_0xa347[121]](_0x2681x34,_0x2681x37[_0xa347[117]])|| _0x2681x37[_0xa347[122]]){_0x2681x37[_0xa347[115]]= _0x2681x18[_0xa347[47]];_0x2681x36[_0xa347[75]](ReportField[_0xa347[94]](_0x2681x37,{transaction:_0x2681x2e}))}else {throw new sequelize.Error(_0xa347[123]+ _0x2681x37[_0xa347[117]]+ _0xa347[124])}})}});return _0x2681x36})[_0xa347[29]]()}else {throw new sequelize.Error(_0xa347[128])}}}}exports[_0xa347[74]]= function(_0x2681xf,_0x2681x10){return CustomReport[_0xa347[49]](_0x2681xf[_0xa347[48]][_0xa347[47]])[_0xa347[20]](function(_0x2681x18){if(!_0x2681x18){return _0x2681x10[_0xa347[35]](404)};return _0x2681x18[_0xa347[74]]()})[_0xa347[20]](function(){return _0x2681x10[_0xa347[35]](204)})[_0xa347[17]](function(_0x2681x12){return handleError(_0x2681x10,_0x2681x12)})};exports[_0xa347[140]]= function(_0x2681xf,_0x2681x10){return CustomReport[_0xa347[74]]({where:{id:_0x2681xf[_0xa347[21]][_0xa347[141]]},individualHooks:true})[_0xa347[20]](function(){return _0x2681x10[_0xa347[35]](204)})[_0xa347[17]](function(_0x2681x12){return handleError(_0x2681x10,_0x2681x12)})};function handleError(_0x2681x10,_0x2681x12){return _0x2681x10[_0xa347[19]](500)[_0xa347[18]](_0x2681x12)} \ No newline at end of file diff --git a/server/api/custom_report/custom_report.events.js b/server/api/custom_report/custom_report.events.js index ac4b9d7..f63b6c4 100644 --- a/server/api/custom_report/custom_report.events.js +++ b/server/api/custom_report/custom_report.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const CustomReport = require('../../models').CustomReport; - -var CustomReportEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -CustomReportEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - CustomReport.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - CustomReportEvents.emit(event + ':' + doc._id, doc); - CustomReportEvents.emit(event, doc); - done(null); - } -} - -module.exports = CustomReportEvents; +var _0xc53f=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xc53f[0];const EventEmitter=require(_0xc53f[1]);const CustomReport=require(_0xc53f[3])[_0xc53f[2]];var CustomReportEvents= new EventEmitter();CustomReportEvents[_0xc53f[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xc53f[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xc53f[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xc53f[6]};for(var e in events){var event=events[e];CustomReport[_0xc53f[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xf59dx8,_0xf59dx9,_0xf59dxa){CustomReportEvents[_0xc53f[10]](event+ _0xc53f[8]+ _0xf59dx8[_0xc53f[9]],_0xf59dx8);CustomReportEvents[_0xc53f[10]](event,_0xf59dx8);_0xf59dxa(null)}}module[_0xc53f[11]]= CustomReportEvents \ No newline at end of file diff --git a/server/api/custom_report/custom_report.socket.js b/server/api/custom_report/custom_report.socket.js index ab9086c..ffa2941 100644 --- a/server/api/custom_report/custom_report.socket.js +++ b/server/api/custom_report/custom_report.socket.js @@ -1,28 +1 @@ -'use strict'; - -const CustomReportEvents = require('./custom_report.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('custom_report:' + event, socket); - - CustomReportEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - CustomReportEvents.removeListener(event, listener); - }; -} +var _0x9258=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x63\x75\x73\x74\x6F\x6D\x5F\x72\x65\x70\x6F\x72\x74\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x63\x75\x73\x74\x6F\x6D\x5F\x72\x65\x70\x6F\x72\x74\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x9258[0];const CustomReportEvents=require(_0x9258[1]);var events=[_0x9258[2],_0x9258[3]];exports[_0x9258[4]]= function(_0xf327x3){for(var _0xf327x4=0,_0xf327x5=events[_0x9258[5]];_0xf327x4< _0xf327x5;_0xf327x4++){var _0xf327x6=events[_0xf327x4];var _0xf327x7=createListener(_0x9258[6]+ _0xf327x6,_0xf327x3);CustomReportEvents[_0x9258[7]](_0xf327x6,_0xf327x7);_0xf327x3[_0x9258[7]](_0x9258[8],removeListener(_0xf327x6,_0xf327x7))}};function createListener(_0xf327x6,_0xf327x3){return function(_0xf327x9){_0xf327x3[_0x9258[9]](_0xf327x6,_0xf327x9)}}function removeListener(_0xf327x6,_0xf327x7){return function(){CustomReportEvents[_0x9258[10]](_0xf327x6,_0xf327x7)}} \ No newline at end of file diff --git a/server/api/custom_report/index.js b/server/api/custom_report/index.js index cf6aa62..cce9b42 100644 --- a/server/api/custom_report/index.js +++ b/server/api/custom_report/index.js @@ -1,24 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./custom_report.controller'); -var auth = require('../../auth/auth.service'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), auth.hasModule([17], ['admin']), controller.index); -router.get('/:id/preview', auth.isAuthenticated(), auth.hasModule([17], ['admin']), controller.preview); -router.get('/:id', auth.isAuthenticated(), auth.hasModule([17], ['admin']), controller.show); -router.get('/:id/query', auth.isAuthenticated(), auth.hasModule([17], ['admin']), controller.getReportQuery); -router.get('/:id/export', auth.isAuthenticated(), auth.hasModule([17], ['admin']), controller.export); -router.post('/', auth.isAuthenticated(), auth.hasModule([17], ['admin']), controller.create); -router.get('/:id/extract/pdf', auth.isAuthenticated(), auth.hasModule([17], ['admin']), controller.extractPdf); -router.get('/:id/extract/csv', auth.isAuthenticated(), auth.hasModule([17], ['admin']), controller.extractCsv); -router.post('/import', auth.isAuthenticated(), auth.hasModule([17], ['admin']), controller.import); -router.post('/:id/copy', auth.isAuthenticated(), auth.hasModule([17], ['admin']), controller.copy); -router.put('/:id', auth.isAuthenticated(), auth.hasModule([17], ['admin']), controller.update); -router.delete('/', auth.isAuthenticated(), auth.hasModule([17], ['admin']), controller.bulkDestroy); -router.delete('/node/:id', auth.isAuthenticated(), auth.hasModule([17], ['admin']), controller.destroyNodeReports); -router.delete('/:id', auth.isAuthenticated(), auth.hasModule([17], ['admin']), controller.destroy); - -module.exports = router; +var _0xbcec=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x63\x75\x73\x74\x6F\x6D\x5F\x72\x65\x70\x6F\x72\x74\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64\x2F\x70\x72\x65\x76\x69\x65\x77","\x70\x72\x65\x76\x69\x65\x77","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x2F\x3A\x69\x64\x2F\x71\x75\x65\x72\x79","\x67\x65\x74\x52\x65\x70\x6F\x72\x74\x51\x75\x65\x72\x79","\x2F\x3A\x69\x64\x2F\x65\x78\x70\x6F\x72\x74","\x65\x78\x70\x6F\x72\x74","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x2F\x3A\x69\x64\x2F\x65\x78\x74\x72\x61\x63\x74\x2F\x70\x64\x66","\x65\x78\x74\x72\x61\x63\x74\x50\x64\x66","\x2F\x3A\x69\x64\x2F\x65\x78\x74\x72\x61\x63\x74\x2F\x63\x73\x76","\x65\x78\x74\x72\x61\x63\x74\x43\x73\x76","\x2F\x69\x6D\x70\x6F\x72\x74","\x69\x6D\x70\x6F\x72\x74","\x2F\x3A\x69\x64\x2F\x63\x6F\x70\x79","\x63\x6F\x70\x79","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x2F\x6E\x6F\x64\x65\x2F\x3A\x69\x64","\x64\x65\x73\x74\x72\x6F\x79\x4E\x6F\x64\x65\x52\x65\x70\x6F\x72\x74\x73","\x64\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0xbcec[0];var express=require(_0xbcec[1]);var controller=require(_0xbcec[2]);var auth=require(_0xbcec[3]);var router=express.Router();router[_0xbcec[9]](_0xbcec[4],auth[_0xbcec[5]](),auth[_0xbcec[7]]([17],[_0xbcec[6]]),controller[_0xbcec[8]]);router[_0xbcec[9]](_0xbcec[10],auth[_0xbcec[5]](),auth[_0xbcec[7]]([17],[_0xbcec[6]]),controller[_0xbcec[11]]);router[_0xbcec[9]](_0xbcec[12],auth[_0xbcec[5]](),auth[_0xbcec[7]]([17],[_0xbcec[6]]),controller[_0xbcec[13]]);router[_0xbcec[9]](_0xbcec[14],auth[_0xbcec[5]](),auth[_0xbcec[7]]([17],[_0xbcec[6]]),controller[_0xbcec[15]]);router[_0xbcec[9]](_0xbcec[16],auth[_0xbcec[5]](),auth[_0xbcec[7]]([17],[_0xbcec[6]]),controller[_0xbcec[17]]);router[_0xbcec[19]](_0xbcec[4],auth[_0xbcec[5]](),auth[_0xbcec[7]]([17],[_0xbcec[6]]),controller[_0xbcec[18]]);router[_0xbcec[9]](_0xbcec[20],auth[_0xbcec[5]](),auth[_0xbcec[7]]([17],[_0xbcec[6]]),controller[_0xbcec[21]]);router[_0xbcec[9]](_0xbcec[22],auth[_0xbcec[5]](),auth[_0xbcec[7]]([17],[_0xbcec[6]]),controller[_0xbcec[23]]);router[_0xbcec[19]](_0xbcec[24],auth[_0xbcec[5]](),auth[_0xbcec[7]]([17],[_0xbcec[6]]),controller[_0xbcec[25]]);router[_0xbcec[19]](_0xbcec[26],auth[_0xbcec[5]](),auth[_0xbcec[7]]([17],[_0xbcec[6]]),controller[_0xbcec[27]]);router[_0xbcec[29]](_0xbcec[12],auth[_0xbcec[5]](),auth[_0xbcec[7]]([17],[_0xbcec[6]]),controller[_0xbcec[28]]);router[_0xbcec[31]](_0xbcec[4],auth[_0xbcec[5]](),auth[_0xbcec[7]]([17],[_0xbcec[6]]),controller[_0xbcec[30]]);router[_0xbcec[31]](_0xbcec[32],auth[_0xbcec[5]](),auth[_0xbcec[7]]([17],[_0xbcec[6]]),controller[_0xbcec[33]]);router[_0xbcec[31]](_0xbcec[12],auth[_0xbcec[5]](),auth[_0xbcec[7]]([17],[_0xbcec[6]]),controller[_0xbcec[34]]);module[_0xbcec[35]]= router \ No newline at end of file diff --git a/server/api/dashboard/dashboard.controller.js b/server/api/dashboard/dashboard.controller.js index 9a1998e..98042d3 100644 --- a/server/api/dashboard/dashboard.controller.js +++ b/server/api/dashboard/dashboard.controller.js @@ -1,320 +1 @@ -'use strict'; - -var _ = require('lodash'); -var util = require('util'); -var Util = require('../../config/util'); - -var Dashboard = require('../../models').Dashboard; -var VoiceQueue = require('../../models').VoiceQueue; -var sequelize = require('../../models').sequelize; - -// Get list of dashboards -exports.index = function(req, res, next) { - return Dashboard - .findAndCountAll(Util.getQuery(req.query)) - .then(function(result) { - res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.init = function(req, res, next) { - - // QUEUE SET - var voice = { - queues: {}, - outbound: {} - }; - - return VoiceQueue - .findAll({ - attributes: ['name'], - raw: true - }) - .then(function(data) { - voice.queues = _.keyBy(data, 'name'); - - return sequelize - .query('SELECT queue, count(*) as waiting \ - FROM report_queue \ - WHERE queuecallerleaveAt IS NULL \ - GROUP BY queue;', { - type: sequelize.QueryTypes.SELECT - }); - }) - .then(function(data) { - data.forEach(function(elm) { - if (voice.queues[elm.queue]) { - voice.queues[elm.queue].waiting = elm.waiting; - } - }); - - return sequelize - .query( - 'SELECT queue, count(*) as active \ - FROM report_queue \ - WHERE queuecallerexit = 0 \ - AND queuecallerabandon = 0 \ - AND queuecallercomplete = 0 \ - AND queuecallerleaveAt IS NOT NULL \ - GROUP BY queue;', { - type: sequelize.QueryTypes.SELECT - }); - }) - .then(function(data) { - data.forEach(function(elm) { - if (voice.queues[elm.queue]) { - voice.queues[elm.queue].active = elm.active; - } - }); - - return sequelize - .query( - 'SELECT queue, count(*) as abandon \ - FROM report_queue \ - WHERE queuecallerabandon = 1 \ - GROUP BY queue;', { - type: sequelize.QueryTypes.SELECT - }); - }) - .then(function(data) { - data.forEach(function(elm) { - if (voice.queues[elm.queue]) { - voice.queues[elm.queue].abandon = elm.abandon; - } - }); - - return sequelize - .query( - 'SELECT queue, count(*) as complete \ - FROM report_queue \ - WHERE queuecallercomplete = 1 \ - GROUP BY queue;', { - type: sequelize.QueryTypes.SELECT - }); - }) - .then(function(data) { - data.forEach(function(elm) { - if (voice.queues[elm.queue]) { - voice.queues[elm.queue].complete = elm.complete; - } - }); - - return sequelize - .query('SELECT queue, count(*) as calls, SUM(holdtime) as holdtime \ - FROM report_agent \ - WHERE agentcomplete = 1 \ - GROUP BY queue;', { - type: sequelize.QueryTypes.SELECT - }); - }) - .then(function(data) { - data.forEach(function(elm) { - if (voice.queues[elm.queue]) { - voice.queues[elm.queue].holdtime = elm.holdtime; - } - }); - - return sequelize - .query('SELECT queue, count(*) as calls, SUM(talktime) as talktime \ - FROM report_agent \ - WHERE agentcomplete = 1 \ - GROUP BY queue;', { - type: sequelize.QueryTypes.SELECT - }); - }) - .then(function(data) { - data.forEach(function(elm) { - if (voice.queues[elm.queue]) { - voice.queues[elm.queue].talktime = elm.talktime; - } - }); - - return sequelize - .query('SELECT queue, count(*) as unmanaged \ - FROM report_queue \ - WHERE queuecallerexit = 1 \ - GROUP BY queue;', { - type: sequelize.QueryTypes.SELECT - }); - }) - .then(function(data) { - data.forEach(function(elm) { - if (voice.queues[elm.queue]) { - voice.queues[elm.queue].unmanaged = elm.unmanaged; - } - }); - - return sequelize - .query('SELECT count(*) as answered \ - FROM report_call \ - WHERE disposition = \'ANSWERED\' \ - AND type = \'outbound\';', { - type: sequelize.QueryTypes.SELECT - }); - }) - .then(function(data) { - voice.outbound.answered = data[0].answered; - - return sequelize - .query('SELECT count(*) as manualOutbound \ - FROM report_call \ - WHERE type = \'outbound\';', { - type: sequelize.QueryTypes.SELECT - }); - }) - .then(function(data) { - voice.outbound.manualOutbound = data[0].manualOutbound; - - return sequelize - .query('SELECT SUM(duration) as globalDuration \ - FROM report_call \ - WHERE type = \'outbound\';', { - type: sequelize.QueryTypes.SELECT - }); - }) - .then(function(data) { - voice.outbound.globalDuration = data[0].globalDuration || 0; - - return sequelize - .query('SELECT AVG(duration) as avgDuration \ - FROM report_call \ - WHERE type=\"outbound\"', { - type: sequelize.QueryTypes.SELECT - }); - }) - .then(function(data) { - voice.outbound.avgDuration = data[0].avgDuration || 0; - voice.outbound.answerRate = voice.outbound.avgDuration ? ((voice.outbound.answered / voice.outbound.globalDuration) * 100) : 0; - - return res.status(200).send(voice); - }) - .catch(function(err) { - console.error(err); - }); -}; - -// Get a single dashboard -exports.all = function(req, res) { - return Dashboard - .findAll() - .then(function(dashboards) { - if (!dashboards) { - return res.sendStatus(404); - } - return res.status(200).send(dashboards); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get a single dashboard -exports.show = function(req, res) { - return Dashboard - .findById(req.params.id) - .then(function(dashboard) { - if (!dashboard) { - return res.sendStatus(404); - } - return res.send(dashboard); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Creates a new dashboard in the DB. -exports.create = function(req, res) { - return Dashboard - .create(req.body) - .then(function(dashboard) { - return res.status(201).send(dashboard); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Clone a dashboard in the DB. -exports.clone = function(req, res) { - return Dashboard - .findById(req.params.id) - .then(function(dashboard) { - var newDashboard = dashboard.dataValues; - delete newDashboard.id; - newDashboard.editable = true; - newDashboard.defaultEntry = false; - newDashboard.name = req.body.name || newDashboard.name; - return Dashboard - .create(newDashboard); - }) - .then(function(dashboard) { - return res.status(201).send(dashboard); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Updates an existing dashboard in the DB. -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - return Dashboard - .findById(req.params.id) - .then(function(dashboard) { - if (!dashboard) { - return res.sendStatus(404); - } - var updated = _.merge(dashboard, req.body); - return updated.save(); - }) - .then(function(dashboard) { - return res.status(200).send(dashboard); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes a dashboard from the DB. -exports.destroy = function(req, res) { - return Dashboard - .findById(req.params.id) - .then(function(dashboard) { - if (!dashboard) { - return res.sendStatus(404); - } - return dashboard.destroy(); - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.bulkDestroy = function(req, res) { - return Dashboard - .destroy({ - where: { - id: req.query.ids - }, - individualHooks: true - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0x948d=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x75\x74\x69\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x44\x61\x73\x68\x62\x6F\x61\x72\x64","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x69\x6E\x69\x74","\x65\x72\x72\x6F\x72","\x61\x76\x67\x44\x75\x72\x61\x74\x69\x6F\x6E","\x6F\x75\x74\x62\x6F\x75\x6E\x64","\x61\x6E\x73\x77\x65\x72\x52\x61\x74\x65","\x61\x6E\x73\x77\x65\x72\x65\x64","\x67\x6C\x6F\x62\x61\x6C\x44\x75\x72\x61\x74\x69\x6F\x6E","\x53\x45\x4C\x45\x43\x54\x20\x41\x56\x47\x28\x64\x75\x72\x61\x74\x69\x6F\x6E\x29\x20\x61\x73\x20\x61\x76\x67\x44\x75\x72\x61\x74\x69\x6F\x6E\x20\x0A\x20\x20\x20\x20\x20\x20\x46\x52\x4F\x4D\x20\x72\x65\x70\x6F\x72\x74\x5F\x63\x61\x6C\x6C\x20\x0A\x20\x20\x20\x20\x20\x20\x57\x48\x45\x52\x45\x20\x74\x79\x70\x65\x3D\x22\x6F\x75\x74\x62\x6F\x75\x6E\x64\x22","\x53\x45\x4C\x45\x43\x54","\x51\x75\x65\x72\x79\x54\x79\x70\x65\x73","\x6D\x61\x6E\x75\x61\x6C\x4F\x75\x74\x62\x6F\x75\x6E\x64","\x53\x45\x4C\x45\x43\x54\x20\x53\x55\x4D\x28\x64\x75\x72\x61\x74\x69\x6F\x6E\x29\x20\x61\x73\x20\x67\x6C\x6F\x62\x61\x6C\x44\x75\x72\x61\x74\x69\x6F\x6E\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x46\x52\x4F\x4D\x20\x72\x65\x70\x6F\x72\x74\x5F\x63\x61\x6C\x6C\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x57\x48\x45\x52\x45\x20\x74\x79\x70\x65\x20\x3D\x20\x27\x6F\x75\x74\x62\x6F\x75\x6E\x64\x27\x3B","\x53\x45\x4C\x45\x43\x54\x20\x63\x6F\x75\x6E\x74\x28\x2A\x29\x20\x61\x73\x20\x6D\x61\x6E\x75\x61\x6C\x4F\x75\x74\x62\x6F\x75\x6E\x64\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x46\x52\x4F\x4D\x20\x72\x65\x70\x6F\x72\x74\x5F\x63\x61\x6C\x6C\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x57\x48\x45\x52\x45\x20\x74\x79\x70\x65\x20\x3D\x20\x27\x6F\x75\x74\x62\x6F\x75\x6E\x64\x27\x3B","\x71\x75\x65\x75\x65","\x71\x75\x65\x75\x65\x73","\x75\x6E\x6D\x61\x6E\x61\x67\x65\x64","\x66\x6F\x72\x45\x61\x63\x68","\x53\x45\x4C\x45\x43\x54\x20\x63\x6F\x75\x6E\x74\x28\x2A\x29\x20\x61\x73\x20\x61\x6E\x73\x77\x65\x72\x65\x64\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x46\x52\x4F\x4D\x20\x72\x65\x70\x6F\x72\x74\x5F\x63\x61\x6C\x6C\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x57\x48\x45\x52\x45\x20\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x20\x3D\x20\x27\x41\x4E\x53\x57\x45\x52\x45\x44\x27\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x41\x4E\x44\x20\x74\x79\x70\x65\x20\x3D\x20\x27\x6F\x75\x74\x62\x6F\x75\x6E\x64\x27\x3B","\x74\x61\x6C\x6B\x74\x69\x6D\x65","\x53\x45\x4C\x45\x43\x54\x20\x71\x75\x65\x75\x65\x2C\x20\x63\x6F\x75\x6E\x74\x28\x2A\x29\x20\x61\x73\x20\x75\x6E\x6D\x61\x6E\x61\x67\x65\x64\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x46\x52\x4F\x4D\x20\x72\x65\x70\x6F\x72\x74\x5F\x71\x75\x65\x75\x65\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x57\x48\x45\x52\x45\x20\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x65\x78\x69\x74\x20\x3D\x20\x31\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x47\x52\x4F\x55\x50\x20\x42\x59\x20\x71\x75\x65\x75\x65\x3B","\x68\x6F\x6C\x64\x74\x69\x6D\x65","\x53\x45\x4C\x45\x43\x54\x20\x71\x75\x65\x75\x65\x2C\x20\x63\x6F\x75\x6E\x74\x28\x2A\x29\x20\x61\x73\x20\x63\x61\x6C\x6C\x73\x2C\x20\x53\x55\x4D\x28\x74\x61\x6C\x6B\x74\x69\x6D\x65\x29\x20\x61\x73\x20\x74\x61\x6C\x6B\x74\x69\x6D\x65\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x46\x52\x4F\x4D\x20\x72\x65\x70\x6F\x72\x74\x5F\x61\x67\x65\x6E\x74\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x57\x48\x45\x52\x45\x20\x61\x67\x65\x6E\x74\x63\x6F\x6D\x70\x6C\x65\x74\x65\x20\x3D\x20\x31\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x47\x52\x4F\x55\x50\x20\x42\x59\x20\x71\x75\x65\x75\x65\x3B","\x63\x6F\x6D\x70\x6C\x65\x74\x65","\x53\x45\x4C\x45\x43\x54\x20\x71\x75\x65\x75\x65\x2C\x20\x63\x6F\x75\x6E\x74\x28\x2A\x29\x20\x61\x73\x20\x63\x61\x6C\x6C\x73\x2C\x20\x53\x55\x4D\x28\x68\x6F\x6C\x64\x74\x69\x6D\x65\x29\x20\x61\x73\x20\x68\x6F\x6C\x64\x74\x69\x6D\x65\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x46\x52\x4F\x4D\x20\x72\x65\x70\x6F\x72\x74\x5F\x61\x67\x65\x6E\x74\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x57\x48\x45\x52\x45\x20\x61\x67\x65\x6E\x74\x63\x6F\x6D\x70\x6C\x65\x74\x65\x20\x3D\x20\x31\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x47\x52\x4F\x55\x50\x20\x42\x59\x20\x71\x75\x65\x75\x65\x3B","\x61\x62\x61\x6E\x64\x6F\x6E","\x53\x45\x4C\x45\x43\x54\x20\x71\x75\x65\x75\x65\x2C\x20\x63\x6F\x75\x6E\x74\x28\x2A\x29\x20\x61\x73\x20\x63\x6F\x6D\x70\x6C\x65\x74\x65\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x46\x52\x4F\x4D\x20\x72\x65\x70\x6F\x72\x74\x5F\x71\x75\x65\x75\x65\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x57\x48\x45\x52\x45\x20\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x63\x6F\x6D\x70\x6C\x65\x74\x65\x20\x3D\x20\x31\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x47\x52\x4F\x55\x50\x20\x42\x59\x20\x71\x75\x65\x75\x65\x3B","\x61\x63\x74\x69\x76\x65","\x53\x45\x4C\x45\x43\x54\x20\x71\x75\x65\x75\x65\x2C\x20\x63\x6F\x75\x6E\x74\x28\x2A\x29\x20\x61\x73\x20\x61\x62\x61\x6E\x64\x6F\x6E\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x46\x52\x4F\x4D\x20\x72\x65\x70\x6F\x72\x74\x5F\x71\x75\x65\x75\x65\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x57\x48\x45\x52\x45\x20\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x61\x62\x61\x6E\x64\x6F\x6E\x20\x3D\x20\x31\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x47\x52\x4F\x55\x50\x20\x42\x59\x20\x71\x75\x65\x75\x65\x3B","\x77\x61\x69\x74\x69\x6E\x67","\x53\x45\x4C\x45\x43\x54\x20\x71\x75\x65\x75\x65\x2C\x20\x63\x6F\x75\x6E\x74\x28\x2A\x29\x20\x61\x73\x20\x61\x63\x74\x69\x76\x65\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x46\x52\x4F\x4D\x20\x72\x65\x70\x6F\x72\x74\x5F\x71\x75\x65\x75\x65\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x57\x48\x45\x52\x45\x20\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x65\x78\x69\x74\x20\x3D\x20\x30\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x41\x4E\x44\x20\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x61\x62\x61\x6E\x64\x6F\x6E\x20\x3D\x20\x30\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x41\x4E\x44\x20\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x63\x6F\x6D\x70\x6C\x65\x74\x65\x20\x3D\x20\x30\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x41\x4E\x44\x20\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6C\x65\x61\x76\x65\x41\x74\x20\x49\x53\x20\x4E\x4F\x54\x20\x4E\x55\x4C\x4C\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x47\x52\x4F\x55\x50\x20\x42\x59\x20\x71\x75\x65\x75\x65\x3B","\x6E\x61\x6D\x65","\x6B\x65\x79\x42\x79","\x53\x45\x4C\x45\x43\x54\x20\x71\x75\x65\x75\x65\x2C\x20\x63\x6F\x75\x6E\x74\x28\x2A\x29\x20\x61\x73\x20\x77\x61\x69\x74\x69\x6E\x67\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x46\x52\x4F\x4D\x20\x72\x65\x70\x6F\x72\x74\x5F\x71\x75\x65\x75\x65\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x57\x48\x45\x52\x45\x20\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6C\x65\x61\x76\x65\x41\x74\x20\x49\x53\x20\x4E\x55\x4C\x4C\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x47\x52\x4F\x55\x50\x20\x42\x59\x20\x71\x75\x65\x75\x65\x3B","\x66\x69\x6E\x64\x41\x6C\x6C","\x61\x6C\x6C","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x73\x68\x6F\x77","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x63\x6C\x6F\x6E\x65","\x64\x61\x74\x61\x56\x61\x6C\x75\x65\x73","\x65\x64\x69\x74\x61\x62\x6C\x65","\x64\x65\x66\x61\x75\x6C\x74\x45\x6E\x74\x72\x79","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x64\x65\x73\x74\x72\x6F\x79","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73"];_0x948d[0];var _=require(_0x948d[1]);var util=require(_0x948d[2]);var Util=require(_0x948d[3]);var Dashboard=require(_0x948d[5])[_0x948d[4]];var VoiceQueue=require(_0x948d[5])[_0x948d[6]];var sequelize=require(_0x948d[5])[_0x948d[7]];exports[_0x948d[8]]= function(_0x8ee2x7,_0x8ee2x8,_0x8ee2x9){return Dashboard[_0x948d[15]](Util[_0x948d[14]](_0x8ee2x7[_0x948d[13]]))[_0x948d[12]](function(_0x8ee2xb){_0x8ee2x8[_0x948d[11]](200)[_0x948d[10]](_0x8ee2xb)})[_0x948d[9]](function(_0x8ee2xa){return handleError(_0x8ee2x8,_0x8ee2xa)})};exports[_0x948d[16]]= function(_0x8ee2x7,_0x8ee2x8,_0x8ee2x9){var _0x8ee2xc={queues:{},outbound:{}};return VoiceQueue[_0x948d[49]]({attributes:[_0x948d[46]],raw:true})[_0x948d[12]](function(_0x8ee2xd){_0x8ee2xc[_0x948d[30]]= _[_0x948d[47]](_0x8ee2xd,_0x948d[46]);return sequelize[_0x948d[13]](_0x948d[48],{type:sequelize[_0x948d[25]][_0x948d[24]]})})[_0x948d[12]](function(_0x8ee2xd){_0x8ee2xd[_0x948d[32]](function(_0x8ee2xe){if(_0x8ee2xc[_0x948d[30]][_0x8ee2xe[_0x948d[29]]]){_0x8ee2xc[_0x948d[30]][_0x8ee2xe[_0x948d[29]]][_0x948d[44]]= _0x8ee2xe[_0x948d[44]]}});return sequelize[_0x948d[13]](_0x948d[45],{type:sequelize[_0x948d[25]][_0x948d[24]]})})[_0x948d[12]](function(_0x8ee2xd){_0x8ee2xd[_0x948d[32]](function(_0x8ee2xe){if(_0x8ee2xc[_0x948d[30]][_0x8ee2xe[_0x948d[29]]]){_0x8ee2xc[_0x948d[30]][_0x8ee2xe[_0x948d[29]]][_0x948d[42]]= _0x8ee2xe[_0x948d[42]]}});return sequelize[_0x948d[13]](_0x948d[43],{type:sequelize[_0x948d[25]][_0x948d[24]]})})[_0x948d[12]](function(_0x8ee2xd){_0x8ee2xd[_0x948d[32]](function(_0x8ee2xe){if(_0x8ee2xc[_0x948d[30]][_0x8ee2xe[_0x948d[29]]]){_0x8ee2xc[_0x948d[30]][_0x8ee2xe[_0x948d[29]]][_0x948d[40]]= _0x8ee2xe[_0x948d[40]]}});return sequelize[_0x948d[13]](_0x948d[41],{type:sequelize[_0x948d[25]][_0x948d[24]]})})[_0x948d[12]](function(_0x8ee2xd){_0x8ee2xd[_0x948d[32]](function(_0x8ee2xe){if(_0x8ee2xc[_0x948d[30]][_0x8ee2xe[_0x948d[29]]]){_0x8ee2xc[_0x948d[30]][_0x8ee2xe[_0x948d[29]]][_0x948d[38]]= _0x8ee2xe[_0x948d[38]]}});return sequelize[_0x948d[13]](_0x948d[39],{type:sequelize[_0x948d[25]][_0x948d[24]]})})[_0x948d[12]](function(_0x8ee2xd){_0x8ee2xd[_0x948d[32]](function(_0x8ee2xe){if(_0x8ee2xc[_0x948d[30]][_0x8ee2xe[_0x948d[29]]]){_0x8ee2xc[_0x948d[30]][_0x8ee2xe[_0x948d[29]]][_0x948d[36]]= _0x8ee2xe[_0x948d[36]]}});return sequelize[_0x948d[13]](_0x948d[37],{type:sequelize[_0x948d[25]][_0x948d[24]]})})[_0x948d[12]](function(_0x8ee2xd){_0x8ee2xd[_0x948d[32]](function(_0x8ee2xe){if(_0x8ee2xc[_0x948d[30]][_0x8ee2xe[_0x948d[29]]]){_0x8ee2xc[_0x948d[30]][_0x8ee2xe[_0x948d[29]]][_0x948d[34]]= _0x8ee2xe[_0x948d[34]]}});return sequelize[_0x948d[13]](_0x948d[35],{type:sequelize[_0x948d[25]][_0x948d[24]]})})[_0x948d[12]](function(_0x8ee2xd){_0x8ee2xd[_0x948d[32]](function(_0x8ee2xe){if(_0x8ee2xc[_0x948d[30]][_0x8ee2xe[_0x948d[29]]]){_0x8ee2xc[_0x948d[30]][_0x8ee2xe[_0x948d[29]]][_0x948d[31]]= _0x8ee2xe[_0x948d[31]]}});return sequelize[_0x948d[13]](_0x948d[33],{type:sequelize[_0x948d[25]][_0x948d[24]]})})[_0x948d[12]](function(_0x8ee2xd){_0x8ee2xc[_0x948d[19]][_0x948d[21]]= _0x8ee2xd[0][_0x948d[21]];return sequelize[_0x948d[13]](_0x948d[28],{type:sequelize[_0x948d[25]][_0x948d[24]]})})[_0x948d[12]](function(_0x8ee2xd){_0x8ee2xc[_0x948d[19]][_0x948d[26]]= _0x8ee2xd[0][_0x948d[26]];return sequelize[_0x948d[13]](_0x948d[27],{type:sequelize[_0x948d[25]][_0x948d[24]]})})[_0x948d[12]](function(_0x8ee2xd){_0x8ee2xc[_0x948d[19]][_0x948d[22]]= _0x8ee2xd[0][_0x948d[22]]|| 0;return sequelize[_0x948d[13]](_0x948d[23],{type:sequelize[_0x948d[25]][_0x948d[24]]})})[_0x948d[12]](function(_0x8ee2xd){_0x8ee2xc[_0x948d[19]][_0x948d[18]]= _0x8ee2xd[0][_0x948d[18]]|| 0;_0x8ee2xc[_0x948d[19]][_0x948d[20]]= _0x8ee2xc[_0x948d[19]][_0x948d[18]]?((_0x8ee2xc[_0x948d[19]][_0x948d[21]]/ _0x8ee2xc[_0x948d[19]][_0x948d[22]])* 100):0;return _0x8ee2x8[_0x948d[11]](200)[_0x948d[10]](_0x8ee2xc)})[_0x948d[9]](function(_0x8ee2xa){console[_0x948d[17]](_0x8ee2xa)})};exports[_0x948d[50]]= function(_0x8ee2x7,_0x8ee2x8){return Dashboard[_0x948d[49]]()[_0x948d[12]](function(_0x8ee2xf){if(!_0x8ee2xf){return _0x8ee2x8[_0x948d[51]](404)};return _0x8ee2x8[_0x948d[11]](200)[_0x948d[10]](_0x8ee2xf)})[_0x948d[9]](function(_0x8ee2xa){return handleError(_0x8ee2x8,_0x8ee2xa)})};exports[_0x948d[52]]= function(_0x8ee2x7,_0x8ee2x8){return Dashboard[_0x948d[55]](_0x8ee2x7[_0x948d[54]][_0x948d[53]])[_0x948d[12]](function(_0x8ee2x10){if(!_0x8ee2x10){return _0x8ee2x8[_0x948d[51]](404)};return _0x8ee2x8[_0x948d[10]](_0x8ee2x10)})[_0x948d[9]](function(_0x8ee2xa){return handleError(_0x8ee2x8,_0x8ee2xa)})};exports[_0x948d[56]]= function(_0x8ee2x7,_0x8ee2x8){return Dashboard[_0x948d[56]](_0x8ee2x7[_0x948d[57]])[_0x948d[12]](function(_0x8ee2x10){return _0x8ee2x8[_0x948d[11]](201)[_0x948d[10]](_0x8ee2x10)})[_0x948d[9]](function(_0x8ee2xa){return handleError(_0x8ee2x8,_0x8ee2xa)})};exports[_0x948d[58]]= function(_0x8ee2x7,_0x8ee2x8){return Dashboard[_0x948d[55]](_0x8ee2x7[_0x948d[54]][_0x948d[53]])[_0x948d[12]](function(_0x8ee2x10){var _0x8ee2x11=_0x8ee2x10[_0x948d[59]];delete _0x8ee2x11[_0x948d[53]];_0x8ee2x11[_0x948d[60]]= true;_0x8ee2x11[_0x948d[61]]= false;_0x8ee2x11[_0x948d[46]]= _0x8ee2x7[_0x948d[57]][_0x948d[46]]|| _0x8ee2x11[_0x948d[46]];return Dashboard[_0x948d[56]](_0x8ee2x11)})[_0x948d[12]](function(_0x8ee2x10){return _0x8ee2x8[_0x948d[11]](201)[_0x948d[10]](_0x8ee2x10)})[_0x948d[9]](function(_0x8ee2xa){return handleError(_0x8ee2x8,_0x8ee2xa)})};exports[_0x948d[62]]= function(_0x8ee2x7,_0x8ee2x8){if(_0x8ee2x7[_0x948d[57]][_0x948d[53]]){delete _0x8ee2x7[_0x948d[57]][_0x948d[53]]};return Dashboard[_0x948d[55]](_0x8ee2x7[_0x948d[54]][_0x948d[53]])[_0x948d[12]](function(_0x8ee2x10){if(!_0x8ee2x10){return _0x8ee2x8[_0x948d[51]](404)};var _0x8ee2x12=_[_0x948d[63]](_0x8ee2x10,_0x8ee2x7[_0x948d[57]]);return _0x8ee2x12[_0x948d[64]]()})[_0x948d[12]](function(_0x8ee2x10){return _0x8ee2x8[_0x948d[11]](200)[_0x948d[10]](_0x8ee2x10)})[_0x948d[9]](function(_0x8ee2xa){return handleError(_0x8ee2x8,_0x8ee2xa)})};exports[_0x948d[65]]= function(_0x8ee2x7,_0x8ee2x8){return Dashboard[_0x948d[55]](_0x8ee2x7[_0x948d[54]][_0x948d[53]])[_0x948d[12]](function(_0x8ee2x10){if(!_0x8ee2x10){return _0x8ee2x8[_0x948d[51]](404)};return _0x8ee2x10[_0x948d[65]]()})[_0x948d[12]](function(){return _0x8ee2x8[_0x948d[51]](204)})[_0x948d[9]](function(_0x8ee2xa){return handleError(_0x8ee2x8,_0x8ee2xa)})};exports[_0x948d[66]]= function(_0x8ee2x7,_0x8ee2x8){return Dashboard[_0x948d[65]]({where:{id:_0x8ee2x7[_0x948d[13]][_0x948d[67]]},individualHooks:true})[_0x948d[12]](function(){return _0x8ee2x8[_0x948d[51]](204)})[_0x948d[9]](function(_0x8ee2xa){return handleError(_0x8ee2x8,_0x8ee2xa)})};function handleError(_0x8ee2x8,_0x8ee2xa){return _0x8ee2x8[_0x948d[11]](500)[_0x948d[10]](_0x8ee2xa)} \ No newline at end of file diff --git a/server/api/dashboard/dashboard.events.js b/server/api/dashboard/dashboard.events.js index 2097ae7..ccfd4c3 100644 --- a/server/api/dashboard/dashboard.events.js +++ b/server/api/dashboard/dashboard.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const Dashboard = require('../../models').Dashboard; - -var DashboardEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -DashboardEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - Dashboard.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - DashboardEvents.emit(event + ':' + doc._id, doc); - DashboardEvents.emit(event, doc); - done(null); - } -} - -module.exports = DashboardEvents; +var _0x1dfb=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x44\x61\x73\x68\x62\x6F\x61\x72\x64","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x1dfb[0];const EventEmitter=require(_0x1dfb[1]);const Dashboard=require(_0x1dfb[3])[_0x1dfb[2]];var DashboardEvents= new EventEmitter();DashboardEvents[_0x1dfb[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x1dfb[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x1dfb[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x1dfb[6]};for(var e in events){var event=events[e];Dashboard[_0x1dfb[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x4389x8,_0x4389x9,_0x4389xa){DashboardEvents[_0x1dfb[10]](event+ _0x1dfb[8]+ _0x4389x8[_0x1dfb[9]],_0x4389x8);DashboardEvents[_0x1dfb[10]](event,_0x4389x8);_0x4389xa(null)}}module[_0x1dfb[11]]= DashboardEvents \ No newline at end of file diff --git a/server/api/dashboard/dashboard.socket.js b/server/api/dashboard/dashboard.socket.js index f23e2a0..ff2f6c4 100644 --- a/server/api/dashboard/dashboard.socket.js +++ b/server/api/dashboard/dashboard.socket.js @@ -1,28 +1 @@ -'use strict'; - -const DashboardEvents = require('./dashboard.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('dashboard:' + event, socket); - - DashboardEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - DashboardEvents.removeListener(event, listener); - }; -} +var _0x217d=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x64\x61\x73\x68\x62\x6F\x61\x72\x64\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x64\x61\x73\x68\x62\x6F\x61\x72\x64\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x217d[0];const DashboardEvents=require(_0x217d[1]);var events=[_0x217d[2],_0x217d[3]];exports[_0x217d[4]]= function(_0x1602x3){for(var _0x1602x4=0,_0x1602x5=events[_0x217d[5]];_0x1602x4< _0x1602x5;_0x1602x4++){var _0x1602x6=events[_0x1602x4];var _0x1602x7=createListener(_0x217d[6]+ _0x1602x6,_0x1602x3);DashboardEvents[_0x217d[7]](_0x1602x6,_0x1602x7);_0x1602x3[_0x217d[7]](_0x217d[8],removeListener(_0x1602x6,_0x1602x7))}};function createListener(_0x1602x6,_0x1602x3){return function(_0x1602x9){_0x1602x3[_0x217d[9]](_0x1602x6,_0x1602x9)}}function removeListener(_0x1602x6,_0x1602x7){return function(){DashboardEvents[_0x217d[10]](_0x1602x6,_0x1602x7)}} \ No newline at end of file diff --git a/server/api/dashboard/index.js b/server/api/dashboard/index.js index 495783a..655a3c5 100644 --- a/server/api/dashboard/index.js +++ b/server/api/dashboard/index.js @@ -1,19 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./dashboard.controller'); -var auth = require('../../auth/auth.service'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), auth.hasModule([2], ['admin', 'user', 'agent']), controller.index); -router.get('/all', auth.isAuthenticated(), auth.hasModule([2], ['admin']), controller.all); -router.get('/voice/init', auth.isAuthenticated(), auth.hasModule([2], ['admin', 'user', 'agent']), controller.init); -router.get('/:id', auth.isAuthenticated(), auth.hasModule([2], ['admin']), controller.show); -router.post('/', auth.isAuthenticated(), auth.hasModule([2], ['admin']), controller.create); -router.post('/:id/clone', auth.isAuthenticated(), auth.hasModule([2], ['admin']), controller.clone); -router.put('/:id', auth.isAuthenticated(), auth.hasModule([2], ['admin']), controller.update); -router.delete('/', auth.isAuthenticated(), auth.hasModule([2], ['admin']), controller.bulkDestroy); -router.delete('/:id', auth.isAuthenticated(), auth.hasModule([2], ['admin']), controller.destroy); - -module.exports = router; +var _0x805a=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x64\x61\x73\x68\x62\x6F\x61\x72\x64\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x75\x73\x65\x72","\x61\x67\x65\x6E\x74","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x61\x6C\x6C","\x61\x6C\x6C","\x2F\x76\x6F\x69\x63\x65\x2F\x69\x6E\x69\x74","\x69\x6E\x69\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x2F\x3A\x69\x64\x2F\x63\x6C\x6F\x6E\x65","\x63\x6C\x6F\x6E\x65","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0x805a[0];var express=require(_0x805a[1]);var controller=require(_0x805a[2]);var auth=require(_0x805a[3]);var router=express.Router();router[_0x805a[11]](_0x805a[4],auth[_0x805a[5]](),auth[_0x805a[9]]([2],[_0x805a[6],_0x805a[7],_0x805a[8]]),controller[_0x805a[10]]);router[_0x805a[11]](_0x805a[12],auth[_0x805a[5]](),auth[_0x805a[9]]([2],[_0x805a[6]]),controller[_0x805a[13]]);router[_0x805a[11]](_0x805a[14],auth[_0x805a[5]](),auth[_0x805a[9]]([2],[_0x805a[6],_0x805a[7],_0x805a[8]]),controller[_0x805a[15]]);router[_0x805a[11]](_0x805a[16],auth[_0x805a[5]](),auth[_0x805a[9]]([2],[_0x805a[6]]),controller[_0x805a[17]]);router[_0x805a[19]](_0x805a[4],auth[_0x805a[5]](),auth[_0x805a[9]]([2],[_0x805a[6]]),controller[_0x805a[18]]);router[_0x805a[19]](_0x805a[20],auth[_0x805a[5]](),auth[_0x805a[9]]([2],[_0x805a[6]]),controller[_0x805a[21]]);router[_0x805a[23]](_0x805a[16],auth[_0x805a[5]](),auth[_0x805a[9]]([2],[_0x805a[6]]),controller[_0x805a[22]]);router[_0x805a[25]](_0x805a[4],auth[_0x805a[5]](),auth[_0x805a[9]]([2],[_0x805a[6]]),controller[_0x805a[24]]);router[_0x805a[25]](_0x805a[16],auth[_0x805a[5]](),auth[_0x805a[9]]([2],[_0x805a[6]]),controller[_0x805a[26]]);module[_0x805a[27]]= router \ No newline at end of file diff --git a/server/api/default_metric/default_metric.controller.js b/server/api/default_metric/default_metric.controller.js index 321849c..5971319 100644 --- a/server/api/default_metric/default_metric.controller.js +++ b/server/api/default_metric/default_metric.controller.js @@ -1,158 +1 @@ -'use strict'; - -var _ = require('lodash'); -var DefaultMetric = require('../../models').DefaultMetric; -var Metric = require('../../models').Metric; -var util = require('util'); -var Util = require('../../config/util'); -var sequelize = require('../../models').sequelize; -var sr = require('simple-random'); - -// Get list of metrics -exports.index = function(req, res, next) { - return DefaultMetric - .findAndCountAll(Util.getQuery(req.query)) - .then(function(result) { - return res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.getMetricsByTable = function(req, res) { - return DefaultMetric - .findAll({ - where: { - table: req.query.table - } - }) - .then(function(metrics) { - if (!metrics) { - return res.sendStatus(404); - } - return res.status(200).send({ - count: metrics.length, - rows: metrics - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.cloneMetric = function(req, res) { - return DefaultMetric - .findById(req.params.id) - .then(function(metric) { - if (!metric) { - return res.sendStatus(404); - } - delete metric.dataValues.id; - metric.dataValues.name += '_' + sr({ - length: 5 - }) - return Metric.create(metric.dataValues); - }) - .then(function() { - return res.sendStatus(201); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// // Get a single metric -// exports.show = function(req, res) { -// return Metric -// .findById(req.params.id) -// .then(function(metric) { -// if (!metric) { -// return res.sendStatus(404); -// } -// return res.send(metric); -// }) -// .catch(function(err) { -// return handleError(res, err); -// }); -// }; -// -// // Creates a new metric in the DB. -// exports.create = function(req, res) { -// return Metric -// .create(req.body) -// .then(function(metric) { -// return res.status(201).send(metric); -// }) -// .catch(sequelize.UniqueConstraintError, function(err) { -// err.translatedMessage = 'MESSAGE_EXIST_METRIC'; -// err.message = 'A Metric with that name already exists'; -// return res.status(500).send(err); -// }) -// .catch(function(err) { -// return handleError(res, err); -// }); -// }; -// -// // Updates an existing metric in the DB. -// exports.update = function(req, res) { -// return Metric -// .findById(req.params.id) -// .then(function(metric) { -// if (!metric) { -// return res.sendStatus(404); -// } -// var updated = _.merge(metric, req.body); -// return updated.save(); -// }) -// .then(function() { -// return res.sendStatus(200); -// }) -// .catch(sequelize.UniqueConstraintError, function(err) { -// err.translatedMessage = 'MESSAGE_EXIST_METRIC'; -// err.message = 'A Metric with that name already exists'; -// return res.status(500).send(err); -// }) -// .catch(function(err) { -// console.log(err); -// return handleError(res, err); -// }); -// }; -// -// // Deletes a metric from the DB. -// exports.destroy = function(req, res) { -// return Metric -// .findById(req.params.id) -// .then(function(metric) { -// if (!metric) { -// return res.sendStatus(404); -// } -// return metric.destroy(); -// }) -// .then(function() { -// return res.sendStatus(204); -// }) -// .catch(function(err) { -// return handleError(res, err); -// }); -// }; -// -// exports.bulkDestroy = function(req, res) { -// return Metric -// .destroy({ -// where: { -// id: req.query.ids -// }, -// individualHooks: true -// }) -// .then(function() { -// return res.sendStatus(204); -// }) -// .catch(function(err) { -// return handleError(res, err); -// }); -// }; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0x749c=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x4D\x65\x74\x72\x69\x63","\x75\x74\x69\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x73\x69\x6D\x70\x6C\x65\x2D\x72\x61\x6E\x64\x6F\x6D","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x67\x65\x74\x4D\x65\x74\x72\x69\x63\x73\x42\x79\x54\x61\x62\x6C\x65","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x6C\x65\x6E\x67\x74\x68","\x74\x61\x62\x6C\x65","\x66\x69\x6E\x64\x41\x6C\x6C","\x63\x6C\x6F\x6E\x65\x4D\x65\x74\x72\x69\x63","\x69\x64","\x64\x61\x74\x61\x56\x61\x6C\x75\x65\x73","\x6E\x61\x6D\x65","\x5F","\x63\x72\x65\x61\x74\x65","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64"];_0x749c[0];var _=require(_0x749c[1]);var DefaultMetric=require(_0x749c[3])[_0x749c[2]];var Metric=require(_0x749c[3])[_0x749c[4]];var util=require(_0x749c[5]);var Util=require(_0x749c[6]);var sequelize=require(_0x749c[3])[_0x749c[7]];var sr=require(_0x749c[8]);exports[_0x749c[9]]= function(_0x9e2fx8,_0x9e2fx9,_0x9e2fxa){return DefaultMetric[_0x749c[16]](Util[_0x749c[15]](_0x9e2fx8[_0x749c[14]]))[_0x749c[13]](function(_0x9e2fxc){return _0x9e2fx9[_0x749c[12]](200)[_0x749c[11]](_0x9e2fxc)})[_0x749c[10]](function(_0x9e2fxb){return handleError(_0x9e2fx9,_0x9e2fxb)})};exports[_0x749c[17]]= function(_0x9e2fx8,_0x9e2fx9){return DefaultMetric[_0x749c[21]]({where:{table:_0x9e2fx8[_0x749c[14]][_0x749c[20]]}})[_0x749c[13]](function(_0x9e2fxd){if(!_0x9e2fxd){return _0x9e2fx9[_0x749c[18]](404)};return _0x9e2fx9[_0x749c[12]](200)[_0x749c[11]]({count:_0x9e2fxd[_0x749c[19]],rows:_0x9e2fxd})})[_0x749c[10]](function(_0x9e2fxb){return handleError(_0x9e2fx9,_0x9e2fxb)})};exports[_0x749c[22]]= function(_0x9e2fx8,_0x9e2fx9){return DefaultMetric[_0x749c[29]](_0x9e2fx8[_0x749c[28]][_0x749c[23]])[_0x749c[13]](function(_0x9e2fxe){if(!_0x9e2fxe){return _0x9e2fx9[_0x749c[18]](404)};delete _0x9e2fxe[_0x749c[24]][_0x749c[23]];_0x9e2fxe[_0x749c[24]][_0x749c[25]]+= _0x749c[26]+ sr({length:5});return Metric[_0x749c[27]](_0x9e2fxe[_0x749c[24]])})[_0x749c[13]](function(){return _0x9e2fx9[_0x749c[18]](201)})[_0x749c[10]](function(_0x9e2fxb){return handleError(_0x9e2fx9,_0x9e2fxb)})};function handleError(_0x9e2fx9,_0x9e2fxb){return _0x9e2fx9[_0x749c[12]](500)[_0x749c[11]](_0x9e2fxb)} \ No newline at end of file diff --git a/server/api/default_metric/index.js b/server/api/default_metric/index.js index 4608ee8..0b0d834 100644 --- a/server/api/default_metric/index.js +++ b/server/api/default_metric/index.js @@ -1,19 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./default_metric.controller'); -var auth = require('../../auth/auth.service'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), auth.hasModule([17], ['admin']), controller.index); -router.get('/table', auth.isAuthenticated(), auth.hasModule([17], ['admin']), controller.getMetricsByTable); -router.get('/:id/clone', auth.isAuthenticated(), auth.hasModule([17], ['admin']), controller.cloneMetric); -// router.get('/:id', auth.isAuthenticated(), auth.hasModule([17], ['admin']), controller.show); -// router.post('/', auth.isAuthenticated(), auth.hasModule([17], ['admin']), controller.create); -// router.put('/:id', auth.isAuthenticated(), auth.hasModule([17], ['admin']), controller.update); -// router.patch('/:id', auth.isAuthenticated(), auth.hasModule([17], ['admin']), controller.update); -// router.delete('/', auth.isAuthenticated(), auth.hasModule([17], ['admin']), controller.bulkDestroy); -// router.delete('/:id', auth.isAuthenticated(), auth.hasModule([17], ['admin']), controller.destroy); - -module.exports = router; +var _0x2456=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x64\x65\x66\x61\x75\x6C\x74\x5F\x6D\x65\x74\x72\x69\x63\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x74\x61\x62\x6C\x65","\x67\x65\x74\x4D\x65\x74\x72\x69\x63\x73\x42\x79\x54\x61\x62\x6C\x65","\x2F\x3A\x69\x64\x2F\x63\x6C\x6F\x6E\x65","\x63\x6C\x6F\x6E\x65\x4D\x65\x74\x72\x69\x63","\x65\x78\x70\x6F\x72\x74\x73"];_0x2456[0];var express=require(_0x2456[1]);var controller=require(_0x2456[2]);var auth=require(_0x2456[3]);var router=express.Router();router[_0x2456[9]](_0x2456[4],auth[_0x2456[5]](),auth[_0x2456[7]]([17],[_0x2456[6]]),controller[_0x2456[8]]);router[_0x2456[9]](_0x2456[10],auth[_0x2456[5]](),auth[_0x2456[7]]([17],[_0x2456[6]]),controller[_0x2456[11]]);router[_0x2456[9]](_0x2456[12],auth[_0x2456[5]](),auth[_0x2456[7]]([17],[_0x2456[6]]),controller[_0x2456[13]]);module[_0x2456[14]]= router \ No newline at end of file diff --git a/server/api/default_report/default_report.controller.js b/server/api/default_report/default_report.controller.js index ea51157..f7fd757 100644 --- a/server/api/default_report/default_report.controller.js +++ b/server/api/default_report/default_report.controller.js @@ -1,392 +1 @@ -'use strict'; - -var _ = require('lodash'); -var util = require('util'); -var DefaultReport = require('../../models').DefaultReport; -var ReportField = require('../../models').ReportField; -var Metric = require('../../models').Metric; -var sequelize = require('../../models').sequelize; -var CustomReport = require('../../models').CustomReport; -var ExtractedReport = require('../../models').ExtractedReport; -var extractUtils = require('../../utils/report_extraction'); -var reportBuildUtils = require('../../utils/report_build'); -var Util = require('../../config/util'); -var moment = require('moment'); -var cp = require('child_process'); -var sr = require('simple-random'); -var ReportTree = require('../../models').ReportTree; - -// Get list of agents -exports.index = function(req, res, next) { - return DefaultReport - .findAndCountAll(Util.getQuery(req.query)) - .then(function(result) { - res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get a single report -exports.export = function(req, res) { - return DefaultReport - .scope({ - method: ['exportFields', { - DefaultReportId: req.params.id - }] - }) //add where condition on customreport id - .findById(req.params.id, { - attributes: ['conditions', 'description', 'name', 'parent', 'table'] - }) - .then(function(report) { - if (!report) { - return res.sendStatus(404); - } - return res.send(report); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - - -exports.getReportQuery = function(req, res) { - return Promise - .all([]) - .then(getQuery(req, res)) - .then(function(query) { - if (query) { - switch (query) { - case 'permission': - query = 'no sufficient queue permissions for the user'; - break; - default: - } - } - res.status(200).send({ - query: query - }); - }) - .catch(function(err) { - console.log('Error getting query from api:', err); - }); -} - -function getQuery(req, res) { - var _report; - return function() { - return DefaultReport - .scope('fields') - .findById(req.params.id) - .then(function(report) { - console.log('found report'); - if (!report) { - return res.sendStatus(404); - } - if (req.query.daily && req.query.daily === 'true') { - req.query.startDate = moment().format('YYYY-MM-DD'); - req.query.endDate = moment().format('YYYY-MM-DD'); - report.dataValues.table = report.dataValues.table.replace( - '_history', ''); - } - delete req.query.daily; - _report = report.dataValues; - return _report.table; - }) - .then(reportBuildUtils.buildFilter(req.user)) - .then(function(filter) { - return [filter, _report]; - }) - .spread(reportBuildUtils.buildQuery(req.query)) - } -} - -exports.preview = function(req, res) { - var _countAll; - return Promise - .all([]) - .then(getQuery(req, res)) - .then(reportBuildUtils.checkQuery()) - .then(function(results) { - if (results && _.isArray(results)) { - _countAll = results.length; - if (req.query.limit) { - results = _(results).slice(req.query.offset || 0).take(req.query.limit).value(); - } - _.forEach(results, function(row) { - _.forOwn(row, function(property, key) { - if (property instanceof Date) { - row[key] = moment(property).format("YYYY-MM-DD HH:mm:ss").toString(); - } - }); - }); - res.status(200).send({ - rows: results, - count: _countAll - }); - } else { - return handleError(res, { - message: results || 'query error' - }); - } - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -exports.extractPdf = function(req, res) { - // console.log('extractPdf api function'); - docExtract(req, res, 'PDF') -}; - -exports.extractCsv = function(req, res) { - // console.log('extractCsv api function'); - docExtract(req, res, 'CSV'); -}; - -function docExtract(req, res, typeFunction) { - var report; - // console.log('common docExtract api function'); - DefaultReport //DO NOT ADD RETURN CAUSE THE EXTRACTING FUNCTION WILL KEEP EXTRACTING AFTER THE API HAS RETURNED - .scope('fields') - .findById(req.params.id) - .then(function(_report) { - if (!_report) { - return res.sendStatus(404); - } - report = _report; - return ReportTree - .findById(1); - }) - .then(function(tree) { - tree = JSON.parse(tree.tree); - var folder = _.find(tree, { - id: report.parent - }); - var path = getReportPath(folder, tree, report.name); - // console.log('found the report, creating the new DB row for extracted reports..'); - //CREATE A DB ROW IN A TABLE WITH THE REPORT INFO, QUERY DATES, AND THE STATUS 'ELABORATING' - if (req.query.daily && req.query.daily === 'true') { - req.query.startDate = moment().format('YYYY-MM-DD'); - req.query.endDate = moment().format('YYYY-MM-DD'); - report.dataValues.table = report.dataValues.table.replace('_history', ''); - } - delete req.query.daily; - return [report, ExtractedReport.create({ - name: path, - startDate: req.query.startDate ? req.query.startDate + (req.query.startTime ? ' ' + req.query.startTime : '00:00') : null, - endDate: req.query.endDate ? req.query.endDate + (req.query.endTime ? ' ' + req.query.endTime : '23:59') : null, - output: typeFunction, - UserId: req.user.id - })] - }) - .spread(function(report, extractedReport) { - // console.log('created new extracted reports db entry, calling external extraction function: ' + typeFunction); - var child = cp.fork(__dirname + '/../../utils/report_extraction.js'); - child.on('message', function(data) { - console.log('child message', data); - child.kill(); - }).on('close', function() { - console.log('child close'); - }).on('error', function(err) { - console.log('child error', err); - }); - child.send({ - report: report, - query: req.query, - extractedId: extractedReport.id, - user: req.user, - type: typeFunction - }); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); - return res.sendStatus(200); -} - -function getReportPath(folder, tree, path) { - path = folder.text + '/ ' + path; - if (folder.parent === '#') { - return path; - } else { - return getReportPath(_.find(tree, { - id: folder.parent - }), tree, path); - } -} - -// Get a single report -exports.show = function(req, res) { - return DefaultReport - .findById(req.params.id, { - include: [{ - all: true - }] - }) - .then(function(report) { - if (!report) { - return res.sendStatus(404); - } - return res.send(report); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Copy a default report -exports.copy = function(req, res) { - var _fields; - return sequelize.transaction(function(t) { - return DefaultReport - .scope({ - method: ['exportFields', { - DefaultReportId: req.params.id - }] - }) - .findById(req.params.id) - .then(function(report) { - if (!report) { - return res.sendStatus(404); - } - var newReport = report.dataValues; - console.log(newReport); - delete newReport.id; - delete newReport.createdAt; - delete newReport.updatedAt; - newReport.parent = req.body.parent; - _fields = _.map(newReport.Fields, 'dataValues'); - return CustomReport.create(newReport, { - transaction: t - }) - }) - .then(function(report) { - return [report, _fields]; - }) - .spread(createCopyFields(t)); - }) - .then(function() { - return res.sendStatus(201); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -function createCopyFields(t) { - return function(report, fields) { - if (fields && Array.isArray(fields) && fields.length) { - var tableModel = reportBuildUtils.getTable(report.table); - if (tableModel) { - var _tableFields; - return tableModel - .describe() - .then(function(tableFields) { - _tableFields = _.keys(tableFields); - var bulkFields = []; - var groupedFields = _.groupBy(fields, 'DefaultMetricId'); - _.forOwn(groupedFields, function(value, key) { - if (key !== 'undefined' && key !== 'null') { - value[0].DefaultMetric.ReportFields.forEach(function(elem) { - elem.CustomReportId = report.id; - }); - value[0].DefaultMetric.name += '_' + sr({ - length: 5 - }); - bulkFields.push(Metric - .create(value[0].DefaultMetric.dataValues, { - include: [{ - model: ReportField, - as: 'ReportFields' - }], - transaction: t - })); - } else { - value.forEach(function(elem) { - if (_.includes(_tableFields, elem.field) || elem.custom) { - elem.CustomReportId = report.id; - bulkFields.push(ReportField - .create(elem, { - transaction: t - })); - } else { - throw new sequelize.Error("The field " + elem.field + - " you specified does not exist in the table" - ); - } - }); - } - }); - return bulkFields; - }) - .all(); - } else { - throw new sequelize.Error( - "You have not specified the table or the table does not exist"); - } - } - } -} - - -// Creates a new report in the DB. -exports.create = function(req, res) { - return DefaultReport - .create(req.body) - .then(function(report) { - return res.status(201).send(report); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Updates an existing report in the DB. -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - return DefaultReport - .findById(req.params.id) - .then(function(report) { - if (!report) { - return res.sendStatus(404); - } - var updated = _.merge(report, req.body); - return updated.save(); - }) - .then(function(report) { - return res.status(200).send(report); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes a report from the DB. -exports.destroy = function(req, res) { - return DefaultReport - .findById(req.params.id) - .then(function(report) { - if (!report) { - return res.sendStatus(404); - } - return report.destroy(); - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0x46f8=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x75\x74\x69\x6C","\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x52\x65\x70\x6F\x72\x74\x46\x69\x65\x6C\x64","\x4D\x65\x74\x72\x69\x63","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74","\x45\x78\x74\x72\x61\x63\x74\x65\x64\x52\x65\x70\x6F\x72\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x75\x74\x69\x6C\x73\x2F\x72\x65\x70\x6F\x72\x74\x5F\x65\x78\x74\x72\x61\x63\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x75\x74\x69\x6C\x73\x2F\x72\x65\x70\x6F\x72\x74\x5F\x62\x75\x69\x6C\x64","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x6D\x6F\x6D\x65\x6E\x74","\x63\x68\x69\x6C\x64\x5F\x70\x72\x6F\x63\x65\x73\x73","\x73\x69\x6D\x70\x6C\x65\x2D\x72\x61\x6E\x64\x6F\x6D","\x52\x65\x70\x6F\x72\x74\x54\x72\x65\x65","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x65\x78\x70\x6F\x72\x74","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73","\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E","\x6E\x61\x6D\x65","\x70\x61\x72\x65\x6E\x74","\x74\x61\x62\x6C\x65","\x66\x69\x6E\x64\x42\x79\x49\x64","\x65\x78\x70\x6F\x72\x74\x46\x69\x65\x6C\x64\x73","\x73\x63\x6F\x70\x65","\x67\x65\x74\x52\x65\x70\x6F\x72\x74\x51\x75\x65\x72\x79","\x45\x72\x72\x6F\x72\x20\x67\x65\x74\x74\x69\x6E\x67\x20\x71\x75\x65\x72\x79\x20\x66\x72\x6F\x6D\x20\x61\x70\x69\x3A","\x6C\x6F\x67","\x6E\x6F\x20\x73\x75\x66\x66\x69\x63\x69\x65\x6E\x74\x20\x71\x75\x65\x75\x65\x20\x70\x65\x72\x6D\x69\x73\x73\x69\x6F\x6E\x73\x20\x66\x6F\x72\x20\x74\x68\x65\x20\x75\x73\x65\x72","\x70\x65\x72\x6D\x69\x73\x73\x69\x6F\x6E","\x61\x6C\x6C","\x62\x75\x69\x6C\x64\x51\x75\x65\x72\x79","\x73\x70\x72\x65\x61\x64","\x75\x73\x65\x72","\x62\x75\x69\x6C\x64\x46\x69\x6C\x74\x65\x72","\x66\x6F\x75\x6E\x64\x20\x72\x65\x70\x6F\x72\x74","\x64\x61\x69\x6C\x79","\x74\x72\x75\x65","\x73\x74\x61\x72\x74\x44\x61\x74\x65","\x59\x59\x59\x59\x2D\x4D\x4D\x2D\x44\x44","\x66\x6F\x72\x6D\x61\x74","\x65\x6E\x64\x44\x61\x74\x65","\x64\x61\x74\x61\x56\x61\x6C\x75\x65\x73","\x5F\x68\x69\x73\x74\x6F\x72\x79","","\x72\x65\x70\x6C\x61\x63\x65","\x66\x69\x65\x6C\x64\x73","\x70\x72\x65\x76\x69\x65\x77","\x69\x73\x41\x72\x72\x61\x79","\x6C\x65\x6E\x67\x74\x68","\x6C\x69\x6D\x69\x74","\x76\x61\x6C\x75\x65","\x74\x61\x6B\x65","\x6F\x66\x66\x73\x65\x74","\x73\x6C\x69\x63\x65","\x59\x59\x59\x59\x2D\x4D\x4D\x2D\x44\x44\x20\x48\x48\x3A\x6D\x6D\x3A\x73\x73","\x66\x6F\x72\x4F\x77\x6E","\x66\x6F\x72\x45\x61\x63\x68","\x71\x75\x65\x72\x79\x20\x65\x72\x72\x6F\x72","\x63\x68\x65\x63\x6B\x51\x75\x65\x72\x79","\x65\x78\x74\x72\x61\x63\x74\x50\x64\x66","\x50\x44\x46","\x65\x78\x74\x72\x61\x63\x74\x43\x73\x76","\x43\x53\x56","\x2F\x2E\x2E\x2F\x2E\x2E\x2F\x75\x74\x69\x6C\x73\x2F\x72\x65\x70\x6F\x72\x74\x5F\x65\x78\x74\x72\x61\x63\x74\x69\x6F\x6E\x2E\x6A\x73","\x66\x6F\x72\x6B","\x65\x72\x72\x6F\x72","\x63\x68\x69\x6C\x64\x20\x65\x72\x72\x6F\x72","\x6F\x6E","\x63\x6C\x6F\x73\x65","\x63\x68\x69\x6C\x64\x20\x63\x6C\x6F\x73\x65","\x6D\x65\x73\x73\x61\x67\x65","\x63\x68\x69\x6C\x64\x20\x6D\x65\x73\x73\x61\x67\x65","\x6B\x69\x6C\x6C","\x74\x72\x65\x65","\x70\x61\x72\x73\x65","\x66\x69\x6E\x64","\x73\x74\x61\x72\x74\x54\x69\x6D\x65","\x20","\x30\x30\x3A\x30\x30","\x65\x6E\x64\x54\x69\x6D\x65","\x32\x33\x3A\x35\x39","\x63\x72\x65\x61\x74\x65","\x74\x65\x78\x74","\x2F\x20","\x23","\x73\x68\x6F\x77","\x63\x6F\x70\x79","\x63\x72\x65\x61\x74\x65\x64\x41\x74","\x75\x70\x64\x61\x74\x65\x64\x41\x74","\x62\x6F\x64\x79","\x6D\x61\x70","\x74\x72\x61\x6E\x73\x61\x63\x74\x69\x6F\x6E","\x67\x65\x74\x54\x61\x62\x6C\x65","\x6B\x65\x79\x73","\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64","\x67\x72\x6F\x75\x70\x42\x79","\x75\x6E\x64\x65\x66\x69\x6E\x65\x64","\x6E\x75\x6C\x6C","\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64","\x52\x65\x70\x6F\x72\x74\x46\x69\x65\x6C\x64\x73","\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63","\x5F","\x70\x75\x73\x68","\x66\x69\x65\x6C\x64","\x69\x6E\x63\x6C\x75\x64\x65\x73","\x63\x75\x73\x74\x6F\x6D","\x54\x68\x65\x20\x66\x69\x65\x6C\x64\x20","\x20\x79\x6F\x75\x20\x73\x70\x65\x63\x69\x66\x69\x65\x64\x20\x64\x6F\x65\x73\x20\x6E\x6F\x74\x20\x65\x78\x69\x73\x74\x20\x69\x6E\x20\x74\x68\x65\x20\x74\x61\x62\x6C\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x59\x6F\x75\x20\x68\x61\x76\x65\x20\x6E\x6F\x74\x20\x73\x70\x65\x63\x69\x66\x69\x65\x64\x20\x74\x68\x65\x20\x74\x61\x62\x6C\x65\x20\x6F\x72\x20\x74\x68\x65\x20\x74\x61\x62\x6C\x65\x20\x64\x6F\x65\x73\x20\x6E\x6F\x74\x20\x65\x78\x69\x73\x74","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x64\x65\x73\x74\x72\x6F\x79"];_0x46f8[0];var _=require(_0x46f8[1]);var util=require(_0x46f8[2]);var DefaultReport=require(_0x46f8[4])[_0x46f8[3]];var ReportField=require(_0x46f8[4])[_0x46f8[5]];var Metric=require(_0x46f8[4])[_0x46f8[6]];var sequelize=require(_0x46f8[4])[_0x46f8[7]];var CustomReport=require(_0x46f8[4])[_0x46f8[8]];var ExtractedReport=require(_0x46f8[4])[_0x46f8[9]];var extractUtils=require(_0x46f8[10]);var reportBuildUtils=require(_0x46f8[11]);var Util=require(_0x46f8[12]);var moment=require(_0x46f8[13]);var cp=require(_0x46f8[14]);var sr=require(_0x46f8[15]);var ReportTree=require(_0x46f8[4])[_0x46f8[16]];exports[_0x46f8[17]]= function(_0x39f1x10,_0x39f1x11,_0x39f1x12){return DefaultReport[_0x46f8[24]](Util[_0x46f8[23]](_0x39f1x10[_0x46f8[22]]))[_0x46f8[21]](function(_0x39f1x14){_0x39f1x11[_0x46f8[20]](200)[_0x46f8[19]](_0x39f1x14)})[_0x46f8[18]](function(_0x39f1x13){return handleError(_0x39f1x11,_0x39f1x13)})};exports[_0x46f8[25]]= function(_0x39f1x10,_0x39f1x11){return DefaultReport[_0x46f8[36]]({method:[_0x46f8[35],{DefaultReportId:_0x39f1x10[_0x46f8[28]][_0x46f8[27]]}]})[_0x46f8[34]](_0x39f1x10[_0x46f8[28]][_0x46f8[27]],{attributes:[_0x46f8[29],_0x46f8[30],_0x46f8[31],_0x46f8[32],_0x46f8[33]]})[_0x46f8[21]](function(_0x39f1x15){if(!_0x39f1x15){return _0x39f1x11[_0x46f8[26]](404)};return _0x39f1x11[_0x46f8[19]](_0x39f1x15)})[_0x46f8[18]](function(_0x39f1x13){return handleError(_0x39f1x11,_0x39f1x13)})};exports[_0x46f8[37]]= function(_0x39f1x10,_0x39f1x11){return Promise[_0x46f8[42]]([])[_0x46f8[21]](getQuery(_0x39f1x10,_0x39f1x11))[_0x46f8[21]](function(_0x39f1x16){if(_0x39f1x16){switch(_0x39f1x16){case _0x46f8[41]:_0x39f1x16= _0x46f8[40];break;default:}};_0x39f1x11[_0x46f8[20]](200)[_0x46f8[19]]({query:_0x39f1x16})})[_0x46f8[18]](function(_0x39f1x13){console[_0x46f8[39]](_0x46f8[38],_0x39f1x13)})};function getQuery(_0x39f1x10,_0x39f1x11){var _0x39f1x18;return function(){return DefaultReport[_0x46f8[36]](_0x46f8[58])[_0x46f8[34]](_0x39f1x10[_0x46f8[28]][_0x46f8[27]])[_0x46f8[21]](function(_0x39f1x15){console[_0x46f8[39]](_0x46f8[47]);if(!_0x39f1x15){return _0x39f1x11[_0x46f8[26]](404)};if(_0x39f1x10[_0x46f8[22]][_0x46f8[48]]&& _0x39f1x10[_0x46f8[22]][_0x46f8[48]]=== _0x46f8[49]){_0x39f1x10[_0x46f8[22]][_0x46f8[50]]= moment()[_0x46f8[52]](_0x46f8[51]);_0x39f1x10[_0x46f8[22]][_0x46f8[53]]= moment()[_0x46f8[52]](_0x46f8[51]);_0x39f1x15[_0x46f8[54]][_0x46f8[33]]= _0x39f1x15[_0x46f8[54]][_0x46f8[33]][_0x46f8[57]](_0x46f8[55],_0x46f8[56])};delete _0x39f1x10[_0x46f8[22]][_0x46f8[48]];_0x39f1x18= _0x39f1x15[_0x46f8[54]];return _0x39f1x18[_0x46f8[33]]})[_0x46f8[21]](reportBuildUtils[_0x46f8[46]](_0x39f1x10[_0x46f8[45]]))[_0x46f8[21]](function(_0x39f1x19){return [_0x39f1x19,_0x39f1x18]})[_0x46f8[44]](reportBuildUtils[_0x46f8[43]](_0x39f1x10[_0x46f8[22]]))}}exports[_0x46f8[59]]= function(_0x39f1x10,_0x39f1x11){var _0x39f1x1a;return Promise[_0x46f8[42]]([])[_0x46f8[21]](getQuery(_0x39f1x10,_0x39f1x11))[_0x46f8[21]](reportBuildUtils[_0x46f8[71]]())[_0x46f8[21]](function(_0x39f1x1b){if(_0x39f1x1b&& _[_0x46f8[60]](_0x39f1x1b)){_0x39f1x1a= _0x39f1x1b[_0x46f8[61]];if(_0x39f1x10[_0x46f8[22]][_0x46f8[62]]){_0x39f1x1b= _(_0x39f1x1b)[_0x46f8[66]](_0x39f1x10[_0x46f8[22]][_0x46f8[65]]|| 0)[_0x46f8[64]](_0x39f1x10[_0x46f8[22]][_0x46f8[62]])[_0x46f8[63]]()};_[_0x46f8[69]](_0x39f1x1b,function(_0x39f1x1c){_[_0x46f8[68]](_0x39f1x1c,function(_0x39f1x1d,_0x39f1x1e){if(_0x39f1x1d instanceof Date){_0x39f1x1c[_0x39f1x1e]= moment(_0x39f1x1d)[_0x46f8[52]](_0x46f8[67]).toString()}})});_0x39f1x11[_0x46f8[20]](200)[_0x46f8[19]]({rows:_0x39f1x1b,count:_0x39f1x1a})}else {return handleError(_0x39f1x11,{message:_0x39f1x1b|| _0x46f8[70]})}})[_0x46f8[18]](function(_0x39f1x13){console[_0x46f8[39]](_0x39f1x13);return handleError(_0x39f1x11,_0x39f1x13)})};exports[_0x46f8[72]]= function(_0x39f1x10,_0x39f1x11){docExtract(_0x39f1x10,_0x39f1x11,_0x46f8[73])};exports[_0x46f8[74]]= function(_0x39f1x10,_0x39f1x11){docExtract(_0x39f1x10,_0x39f1x11,_0x46f8[75])};function docExtract(_0x39f1x10,_0x39f1x11,_0x39f1x20){var _0x39f1x15;DefaultReport[_0x46f8[36]](_0x46f8[58])[_0x46f8[34]](_0x39f1x10[_0x46f8[28]][_0x46f8[27]])[_0x46f8[21]](function(_0x39f1x18){if(!_0x39f1x18){return _0x39f1x11[_0x46f8[26]](404)};_0x39f1x15= _0x39f1x18;return ReportTree[_0x46f8[34]](1)})[_0x46f8[21]](function(_0x39f1x24){_0x39f1x24= JSON[_0x46f8[87]](_0x39f1x24[_0x46f8[86]]);var _0x39f1x25=_[_0x46f8[88]](_0x39f1x24,{id:_0x39f1x15[_0x46f8[32]]});var _0x39f1x26=getReportPath(_0x39f1x25,_0x39f1x24,_0x39f1x15[_0x46f8[31]]);if(_0x39f1x10[_0x46f8[22]][_0x46f8[48]]&& _0x39f1x10[_0x46f8[22]][_0x46f8[48]]=== _0x46f8[49]){_0x39f1x10[_0x46f8[22]][_0x46f8[50]]= moment()[_0x46f8[52]](_0x46f8[51]);_0x39f1x10[_0x46f8[22]][_0x46f8[53]]= moment()[_0x46f8[52]](_0x46f8[51]);_0x39f1x15[_0x46f8[54]][_0x46f8[33]]= _0x39f1x15[_0x46f8[54]][_0x46f8[33]][_0x46f8[57]](_0x46f8[55],_0x46f8[56])};delete _0x39f1x10[_0x46f8[22]][_0x46f8[48]];return [_0x39f1x15,ExtractedReport[_0x46f8[94]]({name:_0x39f1x26,startDate:_0x39f1x10[_0x46f8[22]][_0x46f8[50]]?_0x39f1x10[_0x46f8[22]][_0x46f8[50]]+ (_0x39f1x10[_0x46f8[22]][_0x46f8[89]]?_0x46f8[90]+ _0x39f1x10[_0x46f8[22]][_0x46f8[89]]:_0x46f8[91]):null,endDate:_0x39f1x10[_0x46f8[22]][_0x46f8[53]]?_0x39f1x10[_0x46f8[22]][_0x46f8[53]]+ (_0x39f1x10[_0x46f8[22]][_0x46f8[92]]?_0x46f8[90]+ _0x39f1x10[_0x46f8[22]][_0x46f8[92]]:_0x46f8[93]):null,output:_0x39f1x20,UserId:_0x39f1x10[_0x46f8[45]][_0x46f8[27]]})]})[_0x46f8[44]](function(_0x39f1x15,_0x39f1x21){var _0x39f1x22=cp[_0x46f8[77]](__dirname+ _0x46f8[76]);_0x39f1x22[_0x46f8[80]](_0x46f8[83],function(_0x39f1x23){console[_0x46f8[39]](_0x46f8[84],_0x39f1x23);_0x39f1x22[_0x46f8[85]]()})[_0x46f8[80]](_0x46f8[81],function(){console[_0x46f8[39]](_0x46f8[82])})[_0x46f8[80]](_0x46f8[78],function(_0x39f1x13){console[_0x46f8[39]](_0x46f8[79],_0x39f1x13)});_0x39f1x22[_0x46f8[19]]({report:_0x39f1x15,query:_0x39f1x10[_0x46f8[22]],extractedId:_0x39f1x21[_0x46f8[27]],user:_0x39f1x10[_0x46f8[45]],type:_0x39f1x20})})[_0x46f8[18]](function(_0x39f1x13){console[_0x46f8[39]](_0x39f1x13);return handleError(_0x39f1x11,_0x39f1x13)});return _0x39f1x11[_0x46f8[26]](200)}function getReportPath(_0x39f1x25,_0x39f1x24,_0x39f1x26){_0x39f1x26= _0x39f1x25[_0x46f8[95]]+ _0x46f8[96]+ _0x39f1x26;if(_0x39f1x25[_0x46f8[32]]=== _0x46f8[97]){return _0x39f1x26}else {return getReportPath(_[_0x46f8[88]](_0x39f1x24,{id:_0x39f1x25[_0x46f8[32]]}),_0x39f1x24,_0x39f1x26)}}exports[_0x46f8[98]]= function(_0x39f1x10,_0x39f1x11){return DefaultReport[_0x46f8[34]](_0x39f1x10[_0x46f8[28]][_0x46f8[27]],{include:[{all:true}]})[_0x46f8[21]](function(_0x39f1x15){if(!_0x39f1x15){return _0x39f1x11[_0x46f8[26]](404)};return _0x39f1x11[_0x46f8[19]](_0x39f1x15)})[_0x46f8[18]](function(_0x39f1x13){return handleError(_0x39f1x11,_0x39f1x13)})};exports[_0x46f8[99]]= function(_0x39f1x10,_0x39f1x11){var _0x39f1x28;return sequelize[_0x46f8[104]](function(_0x39f1x29){return DefaultReport[_0x46f8[36]]({method:[_0x46f8[35],{DefaultReportId:_0x39f1x10[_0x46f8[28]][_0x46f8[27]]}]})[_0x46f8[34]](_0x39f1x10[_0x46f8[28]][_0x46f8[27]])[_0x46f8[21]](function(_0x39f1x15){if(!_0x39f1x15){return _0x39f1x11[_0x46f8[26]](404)};var _0x39f1x2a=_0x39f1x15[_0x46f8[54]];console[_0x46f8[39]](_0x39f1x2a);delete _0x39f1x2a[_0x46f8[27]];delete _0x39f1x2a[_0x46f8[100]];delete _0x39f1x2a[_0x46f8[101]];_0x39f1x2a[_0x46f8[32]]= _0x39f1x10[_0x46f8[102]][_0x46f8[32]];_0x39f1x28= _[_0x46f8[103]](_0x39f1x2a.Fields,_0x46f8[54]);return CustomReport[_0x46f8[94]](_0x39f1x2a,{transaction:_0x39f1x29})})[_0x46f8[21]](function(_0x39f1x15){return [_0x39f1x15,_0x39f1x28]})[_0x46f8[44]](createCopyFields(_0x39f1x29))})[_0x46f8[21]](function(){return _0x39f1x11[_0x46f8[26]](201)})[_0x46f8[18]](function(_0x39f1x13){console[_0x46f8[39]](_0x39f1x13);return handleError(_0x39f1x11,_0x39f1x13)})};function createCopyFields(_0x39f1x29){return function(_0x39f1x15,_0x39f1x2c){if(_0x39f1x2c&& Array[_0x46f8[60]](_0x39f1x2c)&& _0x39f1x2c[_0x46f8[61]]){var _0x39f1x2d=reportBuildUtils[_0x46f8[105]](_0x39f1x15[_0x46f8[33]]);if(_0x39f1x2d){var _0x39f1x2e;return _0x39f1x2d[_0x46f8[121]]()[_0x46f8[21]](function(_0x39f1x2f){_0x39f1x2e= _[_0x46f8[106]](_0x39f1x2f);var _0x39f1x30=[];var _0x39f1x31=_[_0x46f8[108]](_0x39f1x2c,_0x46f8[107]);_[_0x46f8[68]](_0x39f1x31,function(_0x39f1x32,_0x39f1x1e){if(_0x39f1x1e!== _0x46f8[109]&& _0x39f1x1e!== _0x46f8[110]){_0x39f1x32[0][_0x46f8[113]][_0x46f8[112]][_0x46f8[69]](function(_0x39f1x33){_0x39f1x33[_0x46f8[111]]= _0x39f1x15[_0x46f8[27]]});_0x39f1x32[0][_0x46f8[113]][_0x46f8[31]]+= _0x46f8[114]+ sr({length:5});_0x39f1x30[_0x46f8[115]](Metric[_0x46f8[94]](_0x39f1x32[0][_0x46f8[113]][_0x46f8[54]],{include:[{model:ReportField,as:_0x46f8[112]}],transaction:_0x39f1x29}))}else {_0x39f1x32[_0x46f8[69]](function(_0x39f1x33){if(_[_0x46f8[117]](_0x39f1x2e,_0x39f1x33[_0x46f8[116]])|| _0x39f1x33[_0x46f8[118]]){_0x39f1x33[_0x46f8[111]]= _0x39f1x15[_0x46f8[27]];_0x39f1x30[_0x46f8[115]](ReportField[_0x46f8[94]](_0x39f1x33,{transaction:_0x39f1x29}))}else {throw new sequelize.Error(_0x46f8[119]+ _0x39f1x33[_0x46f8[116]]+ _0x46f8[120])}})}});return _0x39f1x30})[_0x46f8[42]]()}else {throw new sequelize.Error(_0x46f8[122])}}}}exports[_0x46f8[94]]= function(_0x39f1x10,_0x39f1x11){return DefaultReport[_0x46f8[94]](_0x39f1x10[_0x46f8[102]])[_0x46f8[21]](function(_0x39f1x15){return _0x39f1x11[_0x46f8[20]](201)[_0x46f8[19]](_0x39f1x15)})[_0x46f8[18]](function(_0x39f1x13){return handleError(_0x39f1x11,_0x39f1x13)})};exports[_0x46f8[123]]= function(_0x39f1x10,_0x39f1x11){if(_0x39f1x10[_0x46f8[102]][_0x46f8[27]]){delete _0x39f1x10[_0x46f8[102]][_0x46f8[27]]};return DefaultReport[_0x46f8[34]](_0x39f1x10[_0x46f8[28]][_0x46f8[27]])[_0x46f8[21]](function(_0x39f1x15){if(!_0x39f1x15){return _0x39f1x11[_0x46f8[26]](404)};var _0x39f1x34=_[_0x46f8[124]](_0x39f1x15,_0x39f1x10[_0x46f8[102]]);return _0x39f1x34[_0x46f8[125]]()})[_0x46f8[21]](function(_0x39f1x15){return _0x39f1x11[_0x46f8[20]](200)[_0x46f8[19]](_0x39f1x15)})[_0x46f8[18]](function(_0x39f1x13){return handleError(_0x39f1x11,_0x39f1x13)})};exports[_0x46f8[126]]= function(_0x39f1x10,_0x39f1x11){return DefaultReport[_0x46f8[34]](_0x39f1x10[_0x46f8[28]][_0x46f8[27]])[_0x46f8[21]](function(_0x39f1x15){if(!_0x39f1x15){return _0x39f1x11[_0x46f8[26]](404)};return _0x39f1x15[_0x46f8[126]]()})[_0x46f8[21]](function(){return _0x39f1x11[_0x46f8[26]](204)})[_0x46f8[18]](function(_0x39f1x13){return handleError(_0x39f1x11,_0x39f1x13)})};function handleError(_0x39f1x11,_0x39f1x13){return _0x39f1x11[_0x46f8[20]](500)[_0x46f8[19]](_0x39f1x13)} \ No newline at end of file diff --git a/server/api/default_report/default_report.events.js b/server/api/default_report/default_report.events.js index d10d898..8d8599d 100644 --- a/server/api/default_report/default_report.events.js +++ b/server/api/default_report/default_report.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const DefaultReport = require('../../models').DefaultReport; - -var DefaultReportEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -DefaultReportEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - DefaultReport.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - DefaultReportEvents.emit(event + ':' + doc._id, doc); - DefaultReportEvents.emit(event, doc); - done(null); - } -} - -module.exports = DefaultReportEvents; +var _0x5503=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x5503[0];const EventEmitter=require(_0x5503[1]);const DefaultReport=require(_0x5503[3])[_0x5503[2]];var DefaultReportEvents= new EventEmitter();DefaultReportEvents[_0x5503[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x5503[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x5503[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x5503[6]};for(var e in events){var event=events[e];DefaultReport[_0x5503[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x16f6x8,_0x16f6x9,_0x16f6xa){DefaultReportEvents[_0x5503[10]](event+ _0x5503[8]+ _0x16f6x8[_0x5503[9]],_0x16f6x8);DefaultReportEvents[_0x5503[10]](event,_0x16f6x8);_0x16f6xa(null)}}module[_0x5503[11]]= DefaultReportEvents \ No newline at end of file diff --git a/server/api/default_report/default_report.socket.js b/server/api/default_report/default_report.socket.js index db50575..726d344 100644 --- a/server/api/default_report/default_report.socket.js +++ b/server/api/default_report/default_report.socket.js @@ -1,28 +1 @@ -'use strict'; - -const DefaultReportEvents = require('./default_report.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('default_report:' + event, socket); - - DefaultReportEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - DefaultReportEvents.removeListener(event, listener); - }; -} +var _0xdf64=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x64\x65\x66\x61\x75\x6C\x74\x5F\x72\x65\x70\x6F\x72\x74\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x64\x65\x66\x61\x75\x6C\x74\x5F\x72\x65\x70\x6F\x72\x74\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xdf64[0];const DefaultReportEvents=require(_0xdf64[1]);var events=[_0xdf64[2],_0xdf64[3]];exports[_0xdf64[4]]= function(_0x14dbx3){for(var _0x14dbx4=0,_0x14dbx5=events[_0xdf64[5]];_0x14dbx4< _0x14dbx5;_0x14dbx4++){var _0x14dbx6=events[_0x14dbx4];var _0x14dbx7=createListener(_0xdf64[6]+ _0x14dbx6,_0x14dbx3);DefaultReportEvents[_0xdf64[7]](_0x14dbx6,_0x14dbx7);_0x14dbx3[_0xdf64[7]](_0xdf64[8],removeListener(_0x14dbx6,_0x14dbx7))}};function createListener(_0x14dbx6,_0x14dbx3){return function(_0x14dbx9){_0x14dbx3[_0xdf64[9]](_0x14dbx6,_0x14dbx9)}}function removeListener(_0x14dbx6,_0x14dbx7){return function(){DefaultReportEvents[_0xdf64[10]](_0x14dbx6,_0x14dbx7)}} \ No newline at end of file diff --git a/server/api/default_report/index.js b/server/api/default_report/index.js index 019d6fb..c6d1650 100644 --- a/server/api/default_report/index.js +++ b/server/api/default_report/index.js @@ -1,21 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./default_report.controller'); -var auth = require('../../auth/auth.service'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), auth.hasModule([17], ['admin']), controller.index); -router.get('/:id/preview', auth.isAuthenticated(), auth.hasModule([17], ['admin']), controller.preview); -router.get('/:id/query', auth.isAuthenticated(), auth.hasModule([17], ['admin']), controller.getReportQuery); -router.get('/:id', auth.isAuthenticated(), auth.hasModule([17], ['admin']), controller.show); -router.get('/:id/export', auth.isAuthenticated(), auth.hasModule([17], ['admin']), controller.export); -// router.post('/', controller.create); -router.get('/:id/extract/pdf', auth.isAuthenticated(), auth.hasModule([17], ['admin']), controller.extractPdf); -router.get('/:id/extract/csv', auth.isAuthenticated(), auth.hasModule([17], ['admin']), controller.extractCsv); -router.post('/:id/copy', auth.isAuthenticated(), auth.hasModule([17], ['admin']), controller.copy); -// router.put('/:id', controller.update); -// router.delete('/:id', controller.destroy); - -module.exports = router; +var _0xdf26=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x64\x65\x66\x61\x75\x6C\x74\x5F\x72\x65\x70\x6F\x72\x74\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64\x2F\x70\x72\x65\x76\x69\x65\x77","\x70\x72\x65\x76\x69\x65\x77","\x2F\x3A\x69\x64\x2F\x71\x75\x65\x72\x79","\x67\x65\x74\x52\x65\x70\x6F\x72\x74\x51\x75\x65\x72\x79","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x2F\x3A\x69\x64\x2F\x65\x78\x70\x6F\x72\x74","\x65\x78\x70\x6F\x72\x74","\x2F\x3A\x69\x64\x2F\x65\x78\x74\x72\x61\x63\x74\x2F\x70\x64\x66","\x65\x78\x74\x72\x61\x63\x74\x50\x64\x66","\x2F\x3A\x69\x64\x2F\x65\x78\x74\x72\x61\x63\x74\x2F\x63\x73\x76","\x65\x78\x74\x72\x61\x63\x74\x43\x73\x76","\x2F\x3A\x69\x64\x2F\x63\x6F\x70\x79","\x63\x6F\x70\x79","\x70\x6F\x73\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xdf26[0];var express=require(_0xdf26[1]);var controller=require(_0xdf26[2]);var auth=require(_0xdf26[3]);var router=express.Router();router[_0xdf26[9]](_0xdf26[4],auth[_0xdf26[5]](),auth[_0xdf26[7]]([17],[_0xdf26[6]]),controller[_0xdf26[8]]);router[_0xdf26[9]](_0xdf26[10],auth[_0xdf26[5]](),auth[_0xdf26[7]]([17],[_0xdf26[6]]),controller[_0xdf26[11]]);router[_0xdf26[9]](_0xdf26[12],auth[_0xdf26[5]](),auth[_0xdf26[7]]([17],[_0xdf26[6]]),controller[_0xdf26[13]]);router[_0xdf26[9]](_0xdf26[14],auth[_0xdf26[5]](),auth[_0xdf26[7]]([17],[_0xdf26[6]]),controller[_0xdf26[15]]);router[_0xdf26[9]](_0xdf26[16],auth[_0xdf26[5]](),auth[_0xdf26[7]]([17],[_0xdf26[6]]),controller[_0xdf26[17]]);router[_0xdf26[9]](_0xdf26[18],auth[_0xdf26[5]](),auth[_0xdf26[7]]([17],[_0xdf26[6]]),controller[_0xdf26[19]]);router[_0xdf26[9]](_0xdf26[20],auth[_0xdf26[5]](),auth[_0xdf26[7]]([17],[_0xdf26[6]]),controller[_0xdf26[21]]);router[_0xdf26[24]](_0xdf26[22],auth[_0xdf26[5]](),auth[_0xdf26[7]]([17],[_0xdf26[6]]),controller[_0xdf26[23]]);module[_0xdf26[25]]= router \ No newline at end of file diff --git a/server/api/desk_account/desk_account.controller.js b/server/api/desk_account/desk_account.controller.js index f65313b..d357888 100644 --- a/server/api/desk_account/desk_account.controller.js +++ b/server/api/desk_account/desk_account.controller.js @@ -1,255 +1 @@ -'use strict'; - -var _ = require('lodash'); -var util = require('util'); -var desk = require('desk.js'); - -var DeskAccount = require('../../models').DeskAccount; - -// Get list of desk_accounts -exports.index = function(req, res) { - var attributes = ['description', 'name', 'username', 'remoteUri']; - var per_page = req.query.per_page ? parseInt(req.query.per_page, 10) : 100; - var page = req.query.page ? parseInt(req.query.page, 10) : 0; - - var query = { - where: {}, - limit: per_page, - offset: page * per_page - }; - - _.forIn(req.query, function(value, key) { - switch (key) { - case 'per_page': - case 'page': - break; - case 'sort_by': - query.order = util.format('%s %s', req.query.sort_by, req.query.sort_order || 'ASC') || null; - break; - case 'sort_order': - break; - case '$': - query.where.$or = []; - attributes.forEach(function(attribute) { - var tmp = {}; - tmp[attribute] = { - $like: '%' + value + '%' - }; - - query.where.$or.push(tmp); - }); - break; - default: - query.where[key] = { - $like: {} - }; - query.where[key].$like = '%' + value + '%'; - } - }); - - return DeskAccount - .findAndCountAll(query) - .then(function(result) { - - var total_pages = Math.ceil(result.count / per_page); - var next_page = total_pages > (query.offset + 1) ? util.format('%s://%s%s?page=%d', req.protocol, req.headers.host, req.baseUrl, page + 1) : null; - var previous_page = page > 0 ? util.format('%s://%s%s?page=%d', req.protocol, req.headers.host, req.baseUrl, page - 1) : null; - - return res.status(200).send({ - count: result.count, - rows: result.rows, - next_page: next_page, - previous_page: previous_page, - total_pages: total_pages - }); - }) - .catch(function(err) { - return res.status(500).send({ - error: 'Something blew up!' - }); - }); -}; - -// Get a single desk_account -exports.show = function(req, res) { - DeskAccount - .findById(req.params.id) - .then(function(desk_account) { - if (!desk_account) { - return res.sendStatus(404); - } - return res.send(desk_account); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Creates a new desk_account in the DB. -exports.create = function(req, res, next) { - DeskAccount - .create(req.body) - .then(function(desk_account) { - return res.status(201).send(desk_account); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Updates an existing desk_account in the DB. -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - DeskAccount - .findById(req.params.id) - .then(function(desk_account) { - if (!desk_account) { - return res.sendStatus(404); - } - var updated = _.merge(desk_account, req.body); - updated.save() - .then(function() { - return res.status(200).send(desk_account); - }) - .catch(function(err) { - return handleError(res, err); - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes a desk_account from the DB. -exports.destroy = function(req, res) { - DeskAccount - .findById(req.params.id) - .then(function(desk_account) { - if (!desk_account) { - return res.sendStatus(404); - } - desk_account.destroy() - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.checkAccount = function(req, res) { - DeskAccount - .findById(req.params.id) - .then(function(account) { - var desk_account = { - endpoint: stripTrailingSlash(account.remoteUri), - retry: false - }; - if (account.authType === 'basic') { - desk_account.username = account.username; - desk_account.password = account.password; - } else if (account.authType === 'oauth') { - desk_account.consumerKey = account.consumerKey; - desk_account.consumerSecret = account.consumerSecret; - desk_account.token = account.token; - desk_account.tokenSecret = account.tokenSecret; - } - var client = desk.createClient(desk_account); - client.get('/api/v2/users/me', function(err, body, response) { - if (err) { - return handleError(res, err); - } - return res.sendStatus(200); - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.deskValidation = function(req, res) { - var where = {}; - where[req.params.field] = req.body.value; - DeskAccount - .findAndCountAll({ - where: where - }) - .then(function(result) { - if (result.count) { - return res.status(200).send({ - isValid: false, - value: req.body.value - }); - } - return res.status(200).send({ - isValid: true, - value: req.body.value - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.getFields = function(req, res) { - DeskAccount - .findById(req.params.id) - .then(function(account) { - var desk_account = { - endpoint: stripTrailingSlash(account.remoteUri), - retry: false - }; - if (account.authType === 'basic') { - desk_account.username = account.username; - desk_account.password = account.password; - } else if (account.authType === 'oauth') { - desk_account.consumerKey = account.consumerKey; - desk_account.consumerSecret = account.consumerSecret; - desk_account.token = account.token; - desk_account.tokenSecret = account.tokenSecret; - } - var client = desk.createClient(desk_account); - client.get('/api/v2/custom_fields', function(err, body, response) { - if (err) { - return handleError(res, err); - } - return res.status(200).json(body._embedded.entries); - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -} - -exports.bulkDestroy = function(req, res) { - DeskAccount - .destroy({ - where: { - id: req.query.id - }, - individualHooks: true - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function stripTrailingSlash(str) { - if (str.substr(-1) === '/') { - return str.substr(0, str.length - 1); - } - return str; -} - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0x215d=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x75\x74\x69\x6C","\x64\x65\x73\x6B\x2E\x6A\x73","\x44\x65\x73\x6B\x41\x63\x63\x6F\x75\x6E\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x69\x6E\x64\x65\x78","\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E","\x6E\x61\x6D\x65","\x75\x73\x65\x72\x6E\x61\x6D\x65","\x72\x65\x6D\x6F\x74\x65\x55\x72\x69","\x70\x65\x72\x5F\x70\x61\x67\x65","\x71\x75\x65\x72\x79","\x70\x61\x67\x65","\x6F\x72\x64\x65\x72","\x25\x73\x20\x25\x73","\x73\x6F\x72\x74\x5F\x62\x79","\x73\x6F\x72\x74\x5F\x6F\x72\x64\x65\x72","\x41\x53\x43","\x66\x6F\x72\x6D\x61\x74","\x24\x6F\x72","\x77\x68\x65\x72\x65","\x25","\x70\x75\x73\x68","\x66\x6F\x72\x45\x61\x63\x68","\x24","\x24\x6C\x69\x6B\x65","\x66\x6F\x72\x49\x6E","\x53\x6F\x6D\x65\x74\x68\x69\x6E\x67\x20\x62\x6C\x65\x77\x20\x75\x70\x21","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x63\x61\x74\x63\x68","\x63\x6F\x75\x6E\x74","\x63\x65\x69\x6C","\x6F\x66\x66\x73\x65\x74","\x25\x73\x3A\x2F\x2F\x25\x73\x25\x73\x3F\x70\x61\x67\x65\x3D\x25\x64","\x70\x72\x6F\x74\x6F\x63\x6F\x6C","\x68\x6F\x73\x74","\x68\x65\x61\x64\x65\x72\x73","\x62\x61\x73\x65\x55\x72\x6C","\x72\x6F\x77\x73","\x74\x68\x65\x6E","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x64\x65\x73\x74\x72\x6F\x79","\x63\x68\x65\x63\x6B\x41\x63\x63\x6F\x75\x6E\x74","\x61\x75\x74\x68\x54\x79\x70\x65","\x62\x61\x73\x69\x63","\x70\x61\x73\x73\x77\x6F\x72\x64","\x6F\x61\x75\x74\x68","\x63\x6F\x6E\x73\x75\x6D\x65\x72\x4B\x65\x79","\x63\x6F\x6E\x73\x75\x6D\x65\x72\x53\x65\x63\x72\x65\x74","\x74\x6F\x6B\x65\x6E","\x74\x6F\x6B\x65\x6E\x53\x65\x63\x72\x65\x74","\x63\x72\x65\x61\x74\x65\x43\x6C\x69\x65\x6E\x74","\x2F\x61\x70\x69\x2F\x76\x32\x2F\x75\x73\x65\x72\x73\x2F\x6D\x65","\x67\x65\x74","\x64\x65\x73\x6B\x56\x61\x6C\x69\x64\x61\x74\x69\x6F\x6E","\x66\x69\x65\x6C\x64","\x76\x61\x6C\x75\x65","\x67\x65\x74\x46\x69\x65\x6C\x64\x73","\x2F\x61\x70\x69\x2F\x76\x32\x2F\x63\x75\x73\x74\x6F\x6D\x5F\x66\x69\x65\x6C\x64\x73","\x65\x6E\x74\x72\x69\x65\x73","\x5F\x65\x6D\x62\x65\x64\x64\x65\x64","\x6A\x73\x6F\x6E","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x73\x75\x62\x73\x74\x72","\x2F","\x6C\x65\x6E\x67\x74\x68"];_0x215d[0];var _=require(_0x215d[1]);var util=require(_0x215d[2]);var desk=require(_0x215d[3]);var DeskAccount=require(_0x215d[5])[_0x215d[4]];exports[_0x215d[6]]= function(_0x4ce1x5,_0x4ce1x6){var _0x4ce1x7=[_0x215d[7],_0x215d[8],_0x215d[9],_0x215d[10]];var _0x4ce1x8=_0x4ce1x5[_0x215d[12]][_0x215d[11]]?parseInt(_0x4ce1x5[_0x215d[12]][_0x215d[11]],10):100;var _0x4ce1x9=_0x4ce1x5[_0x215d[12]][_0x215d[13]]?parseInt(_0x4ce1x5[_0x215d[12]][_0x215d[13]],10):0;var _0x4ce1xa={where:{},limit:_0x4ce1x8,offset:_0x4ce1x9* _0x4ce1x8};_[_0x215d[27]](_0x4ce1x5[_0x215d[12]],function(_0x4ce1xb,_0x4ce1xc){switch(_0x4ce1xc){case _0x215d[11]:;case _0x215d[13]:break;case _0x215d[16]:_0x4ce1xa[_0x215d[14]]= util[_0x215d[19]](_0x215d[15],_0x4ce1x5[_0x215d[12]][_0x215d[16]],_0x4ce1x5[_0x215d[12]][_0x215d[17]]|| _0x215d[18])|| null;break;case _0x215d[17]:break;case _0x215d[25]:_0x4ce1xa[_0x215d[21]][_0x215d[20]]= [];_0x4ce1x7[_0x215d[24]](function(_0x4ce1xd){var _0x4ce1xe={};_0x4ce1xe[_0x4ce1xd]= {$like:_0x215d[22]+ _0x4ce1xb+ _0x215d[22]};_0x4ce1xa[_0x215d[21]][_0x215d[20]][_0x215d[23]](_0x4ce1xe)});break;default:_0x4ce1xa[_0x215d[21]][_0x4ce1xc]= {$like:{}};_0x4ce1xa[_0x215d[21]][_0x4ce1xc][_0x215d[26]]= _0x215d[22]+ _0x4ce1xb+ _0x215d[22]}});return DeskAccount[_0x215d[42]](_0x4ce1xa)[_0x215d[41]](function(_0x4ce1x10){var _0x4ce1x11=Math[_0x215d[33]](_0x4ce1x10[_0x215d[32]]/ _0x4ce1x8);var _0x4ce1x12=_0x4ce1x11> (_0x4ce1xa[_0x215d[34]]+ 1)?util[_0x215d[19]](_0x215d[35],_0x4ce1x5[_0x215d[36]],_0x4ce1x5[_0x215d[38]][_0x215d[37]],_0x4ce1x5[_0x215d[39]],_0x4ce1x9+ 1):null;var _0x4ce1x13=_0x4ce1x9> 0?util[_0x215d[19]](_0x215d[35],_0x4ce1x5[_0x215d[36]],_0x4ce1x5[_0x215d[38]][_0x215d[37]],_0x4ce1x5[_0x215d[39]],_0x4ce1x9- 1):null;return _0x4ce1x6[_0x215d[30]](200)[_0x215d[29]]({count:_0x4ce1x10[_0x215d[32]],rows:_0x4ce1x10[_0x215d[40]],next_page:_0x4ce1x12,previous_page:_0x4ce1x13,total_pages:_0x4ce1x11})})[_0x215d[31]](function(_0x4ce1xf){return _0x4ce1x6[_0x215d[30]](500)[_0x215d[29]]({error:_0x215d[28]})})};exports[_0x215d[43]]= function(_0x4ce1x5,_0x4ce1x6){DeskAccount[_0x215d[47]](_0x4ce1x5[_0x215d[46]][_0x215d[45]])[_0x215d[41]](function(_0x4ce1x14){if(!_0x4ce1x14){return _0x4ce1x6[_0x215d[44]](404)};return _0x4ce1x6[_0x215d[29]](_0x4ce1x14)})[_0x215d[31]](function(_0x4ce1xf){return handleError(_0x4ce1x6,_0x4ce1xf)})};exports[_0x215d[48]]= function(_0x4ce1x5,_0x4ce1x6,_0x4ce1x15){DeskAccount[_0x215d[48]](_0x4ce1x5[_0x215d[49]])[_0x215d[41]](function(_0x4ce1x14){return _0x4ce1x6[_0x215d[30]](201)[_0x215d[29]](_0x4ce1x14)})[_0x215d[31]](function(_0x4ce1xf){return handleError(_0x4ce1x6,_0x4ce1xf)})};exports[_0x215d[50]]= function(_0x4ce1x5,_0x4ce1x6){if(_0x4ce1x5[_0x215d[49]][_0x215d[45]]){delete _0x4ce1x5[_0x215d[49]][_0x215d[45]]};DeskAccount[_0x215d[47]](_0x4ce1x5[_0x215d[46]][_0x215d[45]])[_0x215d[41]](function(_0x4ce1x14){if(!_0x4ce1x14){return _0x4ce1x6[_0x215d[44]](404)};var _0x4ce1x16=_[_0x215d[51]](_0x4ce1x14,_0x4ce1x5[_0x215d[49]]);_0x4ce1x16[_0x215d[52]]()[_0x215d[41]](function(){return _0x4ce1x6[_0x215d[30]](200)[_0x215d[29]](_0x4ce1x14)})[_0x215d[31]](function(_0x4ce1xf){return handleError(_0x4ce1x6,_0x4ce1xf)})})[_0x215d[31]](function(_0x4ce1xf){return handleError(_0x4ce1x6,_0x4ce1xf)})};exports[_0x215d[53]]= function(_0x4ce1x5,_0x4ce1x6){DeskAccount[_0x215d[47]](_0x4ce1x5[_0x215d[46]][_0x215d[45]])[_0x215d[41]](function(_0x4ce1x14){if(!_0x4ce1x14){return _0x4ce1x6[_0x215d[44]](404)};_0x4ce1x14[_0x215d[53]]()[_0x215d[41]](function(){return _0x4ce1x6[_0x215d[44]](204)})[_0x215d[31]](function(_0x4ce1xf){return handleError(_0x4ce1x6,_0x4ce1xf)})})[_0x215d[31]](function(_0x4ce1xf){return handleError(_0x4ce1x6,_0x4ce1xf)})};exports[_0x215d[54]]= function(_0x4ce1x5,_0x4ce1x6){DeskAccount[_0x215d[47]](_0x4ce1x5[_0x215d[46]][_0x215d[45]])[_0x215d[41]](function(_0x4ce1x17){var _0x4ce1x14={endpoint:stripTrailingSlash(_0x4ce1x17[_0x215d[10]]),retry:false};if(_0x4ce1x17[_0x215d[55]]=== _0x215d[56]){_0x4ce1x14[_0x215d[9]]= _0x4ce1x17[_0x215d[9]];_0x4ce1x14[_0x215d[57]]= _0x4ce1x17[_0x215d[57]]}else {if(_0x4ce1x17[_0x215d[55]]=== _0x215d[58]){_0x4ce1x14[_0x215d[59]]= _0x4ce1x17[_0x215d[59]];_0x4ce1x14[_0x215d[60]]= _0x4ce1x17[_0x215d[60]];_0x4ce1x14[_0x215d[61]]= _0x4ce1x17[_0x215d[61]];_0x4ce1x14[_0x215d[62]]= _0x4ce1x17[_0x215d[62]]}};var _0x4ce1x18=desk[_0x215d[63]](_0x4ce1x14);_0x4ce1x18[_0x215d[65]](_0x215d[64],function(_0x4ce1xf,_0x4ce1x19,_0x4ce1x1a){if(_0x4ce1xf){return handleError(_0x4ce1x6,_0x4ce1xf)};return _0x4ce1x6[_0x215d[44]](200)})})[_0x215d[31]](function(_0x4ce1xf){return handleError(_0x4ce1x6,_0x4ce1xf)})};exports[_0x215d[66]]= function(_0x4ce1x5,_0x4ce1x6){var _0x4ce1x1b={};_0x4ce1x1b[_0x4ce1x5[_0x215d[46]][_0x215d[67]]]= _0x4ce1x5[_0x215d[49]][_0x215d[68]];DeskAccount[_0x215d[42]]({where:_0x4ce1x1b})[_0x215d[41]](function(_0x4ce1x10){if(_0x4ce1x10[_0x215d[32]]){return _0x4ce1x6[_0x215d[30]](200)[_0x215d[29]]({isValid:false,value:_0x4ce1x5[_0x215d[49]][_0x215d[68]]})};return _0x4ce1x6[_0x215d[30]](200)[_0x215d[29]]({isValid:true,value:_0x4ce1x5[_0x215d[49]][_0x215d[68]]})})[_0x215d[31]](function(_0x4ce1xf){return handleError(_0x4ce1x6,_0x4ce1xf)})};exports[_0x215d[69]]= function(_0x4ce1x5,_0x4ce1x6){DeskAccount[_0x215d[47]](_0x4ce1x5[_0x215d[46]][_0x215d[45]])[_0x215d[41]](function(_0x4ce1x17){var _0x4ce1x14={endpoint:stripTrailingSlash(_0x4ce1x17[_0x215d[10]]),retry:false};if(_0x4ce1x17[_0x215d[55]]=== _0x215d[56]){_0x4ce1x14[_0x215d[9]]= _0x4ce1x17[_0x215d[9]];_0x4ce1x14[_0x215d[57]]= _0x4ce1x17[_0x215d[57]]}else {if(_0x4ce1x17[_0x215d[55]]=== _0x215d[58]){_0x4ce1x14[_0x215d[59]]= _0x4ce1x17[_0x215d[59]];_0x4ce1x14[_0x215d[60]]= _0x4ce1x17[_0x215d[60]];_0x4ce1x14[_0x215d[61]]= _0x4ce1x17[_0x215d[61]];_0x4ce1x14[_0x215d[62]]= _0x4ce1x17[_0x215d[62]]}};var _0x4ce1x18=desk[_0x215d[63]](_0x4ce1x14);_0x4ce1x18[_0x215d[65]](_0x215d[70],function(_0x4ce1xf,_0x4ce1x19,_0x4ce1x1a){if(_0x4ce1xf){return handleError(_0x4ce1x6,_0x4ce1xf)};return _0x4ce1x6[_0x215d[30]](200)[_0x215d[73]](_0x4ce1x19[_0x215d[72]][_0x215d[71]])})})[_0x215d[31]](function(_0x4ce1xf){return handleError(_0x4ce1x6,_0x4ce1xf)})};exports[_0x215d[74]]= function(_0x4ce1x5,_0x4ce1x6){DeskAccount[_0x215d[53]]({where:{id:_0x4ce1x5[_0x215d[12]][_0x215d[45]]},individualHooks:true})[_0x215d[41]](function(){return _0x4ce1x6[_0x215d[44]](204)})[_0x215d[31]](function(_0x4ce1xf){return handleError(_0x4ce1x6,_0x4ce1xf)})};function stripTrailingSlash(_0x4ce1x1d){if(_0x4ce1x1d[_0x215d[75]](-1) === _0x215d[76]){return _0x4ce1x1d[_0x215d[75]](0,_0x4ce1x1d[_0x215d[77]]- 1)};return _0x4ce1x1d}function handleError(_0x4ce1x6,_0x4ce1xf){return _0x4ce1x6[_0x215d[30]](500)[_0x215d[29]](_0x4ce1xf)} \ No newline at end of file diff --git a/server/api/desk_account/desk_account.events.js b/server/api/desk_account/desk_account.events.js index 3a0d697..94aea89 100644 --- a/server/api/desk_account/desk_account.events.js +++ b/server/api/desk_account/desk_account.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const DeskAccount = require('../../models').DeskAccount; - -var DeskAccountEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -DeskAccountEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - DeskAccount.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - DeskAccountEvents.emit(event + ':' + doc._id, doc); - DeskAccountEvents.emit(event, doc); - done(null); - } -} - -module.exports = DeskAccountEvents; +var _0x77e6=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x44\x65\x73\x6B\x41\x63\x63\x6F\x75\x6E\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x77e6[0];const EventEmitter=require(_0x77e6[1]);const DeskAccount=require(_0x77e6[3])[_0x77e6[2]];var DeskAccountEvents= new EventEmitter();DeskAccountEvents[_0x77e6[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x77e6[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x77e6[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x77e6[6]};for(var e in events){var event=events[e];DeskAccount[_0x77e6[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xbd33x8,_0xbd33x9,_0xbd33xa){DeskAccountEvents[_0x77e6[10]](event+ _0x77e6[8]+ _0xbd33x8[_0x77e6[9]],_0xbd33x8);DeskAccountEvents[_0x77e6[10]](event,_0xbd33x8);_0xbd33xa(null)}}module[_0x77e6[11]]= DeskAccountEvents \ No newline at end of file diff --git a/server/api/desk_account/desk_account.socket.js b/server/api/desk_account/desk_account.socket.js index 1d543a4..21fda8d 100644 --- a/server/api/desk_account/desk_account.socket.js +++ b/server/api/desk_account/desk_account.socket.js @@ -1,28 +1 @@ -'use strict'; - -const DeskAccountEvents = require('./desk_account.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('desk_account:' + event, socket); - - DeskAccountEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - DeskAccountEvents.removeListener(event, listener); - }; -} +var _0x66e4=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x64\x65\x73\x6B\x5F\x61\x63\x63\x6F\x75\x6E\x74\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x64\x65\x73\x6B\x5F\x61\x63\x63\x6F\x75\x6E\x74\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x66e4[0];const DeskAccountEvents=require(_0x66e4[1]);var events=[_0x66e4[2],_0x66e4[3]];exports[_0x66e4[4]]= function(_0xdc08x3){for(var _0xdc08x4=0,_0xdc08x5=events[_0x66e4[5]];_0xdc08x4< _0xdc08x5;_0xdc08x4++){var _0xdc08x6=events[_0xdc08x4];var _0xdc08x7=createListener(_0x66e4[6]+ _0xdc08x6,_0xdc08x3);DeskAccountEvents[_0x66e4[7]](_0xdc08x6,_0xdc08x7);_0xdc08x3[_0x66e4[7]](_0x66e4[8],removeListener(_0xdc08x6,_0xdc08x7))}};function createListener(_0xdc08x6,_0xdc08x3){return function(_0xdc08x9){_0xdc08x3[_0x66e4[9]](_0xdc08x6,_0xdc08x9)}}function removeListener(_0xdc08x6,_0xdc08x7){return function(){DeskAccountEvents[_0x66e4[10]](_0xdc08x6,_0xdc08x7)}} \ No newline at end of file diff --git a/server/api/desk_account/index.js b/server/api/desk_account/index.js index 506e627..438b68c 100644 --- a/server/api/desk_account/index.js +++ b/server/api/desk_account/index.js @@ -1,18 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./desk_account.controller'); -var auth = require('../../auth/auth.service'); -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), auth.hasModule([19, 13], ['admin']), controller.index); -router.get('/:id', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.show); -router.get('/:id/check', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.checkAccount); -router.get('/:id/fields', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.getFields); -router.post('/validate/:field', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.deskValidation); -router.post('/', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.create); -router.put('/:id', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.update); -router.delete('/', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.bulkDestroy); -router.delete('/:id', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.destroy); - -module.exports = router; +var _0xb525=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x64\x65\x73\x6B\x5F\x61\x63\x63\x6F\x75\x6E\x74\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x2F\x3A\x69\x64\x2F\x63\x68\x65\x63\x6B","\x63\x68\x65\x63\x6B\x41\x63\x63\x6F\x75\x6E\x74","\x2F\x3A\x69\x64\x2F\x66\x69\x65\x6C\x64\x73","\x67\x65\x74\x46\x69\x65\x6C\x64\x73","\x2F\x76\x61\x6C\x69\x64\x61\x74\x65\x2F\x3A\x66\x69\x65\x6C\x64","\x64\x65\x73\x6B\x56\x61\x6C\x69\x64\x61\x74\x69\x6F\x6E","\x70\x6F\x73\x74","\x63\x72\x65\x61\x74\x65","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0xb525[0];var express=require(_0xb525[1]);var controller=require(_0xb525[2]);var auth=require(_0xb525[3]);var router=express.Router();router[_0xb525[9]](_0xb525[4],auth[_0xb525[5]](),auth[_0xb525[7]]([19,13],[_0xb525[6]]),controller[_0xb525[8]]);router[_0xb525[9]](_0xb525[10],auth[_0xb525[5]](),auth[_0xb525[7]]([19],[_0xb525[6]]),controller[_0xb525[11]]);router[_0xb525[9]](_0xb525[12],auth[_0xb525[5]](),auth[_0xb525[7]]([19],[_0xb525[6]]),controller[_0xb525[13]]);router[_0xb525[9]](_0xb525[14],auth[_0xb525[5]](),auth[_0xb525[7]]([19],[_0xb525[6]]),controller[_0xb525[15]]);router[_0xb525[18]](_0xb525[16],auth[_0xb525[5]](),auth[_0xb525[7]]([19],[_0xb525[6]]),controller[_0xb525[17]]);router[_0xb525[18]](_0xb525[4],auth[_0xb525[5]](),auth[_0xb525[7]]([19],[_0xb525[6]]),controller[_0xb525[19]]);router[_0xb525[21]](_0xb525[10],auth[_0xb525[5]](),auth[_0xb525[7]]([19],[_0xb525[6]]),controller[_0xb525[20]]);router[_0xb525[23]](_0xb525[4],auth[_0xb525[5]](),auth[_0xb525[7]]([19],[_0xb525[6]]),controller[_0xb525[22]]);router[_0xb525[23]](_0xb525[10],auth[_0xb525[5]](),auth[_0xb525[7]]([19],[_0xb525[6]]),controller[_0xb525[24]]);module[_0xb525[25]]= router \ No newline at end of file diff --git a/server/api/desk_configuration/desk_configuration.controller.js b/server/api/desk_configuration/desk_configuration.controller.js index 3824ca1..84ff5ae 100644 --- a/server/api/desk_configuration/desk_configuration.controller.js +++ b/server/api/desk_configuration/desk_configuration.controller.js @@ -1,145 +1 @@ -/** - * Using Rails-like standard naming convention for endpoints. - * GET /api/desk/configurations -> index - * POST /api/desk/configurations -> create - * GET /api/desk/configurations/:id -> show - * PUT /api/desk/configurations/:id -> update - * DELETE /api/desk/configurations/:id -> destroy - */ - -'use strict'; - -var _ = require('lodash'); - -var DeskConfiguration = require('../../models').DeskConfiguration; -var DeskField = require('../../models').DeskField; - -function handleError(res, statusCode) { - statusCode = statusCode || 500; - return function(err) { - res.status(statusCode).send(err); - }; -} - -function responseWithResult(res, statusCode) { - statusCode = statusCode || 200; - return function(entity) { - if (entity) { - res.status(statusCode).json(entity); - } - }; -} - -function handleEntityNotFound(res) { - return function(entity) { - if (!entity) { - res.status(404).end(); - return null; - } - return entity; - }; -} - -function saveUpdates(updates) { - return function(entity) { - return entity.updateAttributes(updates) - .then(function(updated) { - return updated; - }); - }; -} - -function removeEntity(res) { - return function(entity) { - if (entity) { - return entity.destroy() - .then(function() { - res.status(204).end(); - }); - } - }; -} - -// Gets a list of DeskConfigurations -exports.index = function(req, res) { - DeskConfiguration.findAll({ - where: req.query - }) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Gets a single DeskConfiguration from the DB -exports.show = function(req, res) { - DeskConfiguration.find({ - where: { - id: req.params.id - }, - include: [{ - model: DeskField, - as: 'Subject' - }, { - model: DeskField, - as: 'Description' - }, { - model: DeskField, - as: 'Field' - }] - }) - .then(handleEntityNotFound(res)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Creates a new DeskConfiguration in the DB -exports.create = function(req, res) { - DeskConfiguration.create(req.body) - .then(responseWithResult(res, 201)) - .catch(handleError(res)); -} - -// Updates an existing DeskConfiguration in the DB -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - DeskConfiguration.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(saveUpdates(req.body)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Deletes a DeskConfiguration from the DB -exports.destroy = function(req, res) { - DeskConfiguration.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(removeEntity(res)) - .catch(handleError(res)); -} - -exports.addConfigurationField = function(req, res, next) { - // console.log(req.params); - var deskConfiguration; - DeskConfiguration - .findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(function(desk_configuration) { - deskConfiguration = desk_configuration; - return DeskField.create(req.body) - }) - .then(function(deskField) { - switch (req.params.type) { - case 'subject': - return [deskConfiguration.addSubject(deskField), deskField]; - case 'description': - return [deskConfiguration.addDescription(deskField), deskField]; - case 'field': - return [deskConfiguration.addField(deskField), deskField]; - } - }) - .spread(function(data, deskField) { - return res.status(201).json(deskField); - }) - .catch(handleError(res)); -}; +var _0x69af=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x44\x65\x73\x6B\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x44\x65\x73\x6B\x46\x69\x65\x6C\x64","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x6A\x73\x6F\x6E","\x65\x6E\x64","\x74\x68\x65\x6E","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x64\x65\x73\x74\x72\x6F\x79","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x71\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x68\x6F\x77","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x53\x75\x62\x6A\x65\x63\x74","\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E","\x46\x69\x65\x6C\x64","\x66\x69\x6E\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x66\x69\x6E\x64\x42\x79\x49\x64","\x61\x64\x64\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x46\x69\x65\x6C\x64","\x73\x70\x72\x65\x61\x64","\x61\x64\x64\x53\x75\x62\x6A\x65\x63\x74","\x73\x75\x62\x6A\x65\x63\x74","\x61\x64\x64\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E","\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E","\x61\x64\x64\x46\x69\x65\x6C\x64","\x66\x69\x65\x6C\x64","\x74\x79\x70\x65"];_0x69af[0];var _=require(_0x69af[1]);var DeskConfiguration=require(_0x69af[3])[_0x69af[2]];var DeskField=require(_0x69af[3])[_0x69af[4]];function handleError(_0xbacbx5,_0xbacbx6){_0xbacbx6= _0xbacbx6|| 500;return function(_0xbacbx7){_0xbacbx5[_0x69af[6]](_0xbacbx6)[_0x69af[5]](_0xbacbx7)}}function responseWithResult(_0xbacbx5,_0xbacbx6){_0xbacbx6= _0xbacbx6|| 200;return function(_0xbacbx9){if(_0xbacbx9){_0xbacbx5[_0x69af[6]](_0xbacbx6)[_0x69af[7]](_0xbacbx9)}}}function handleEntityNotFound(_0xbacbx5){return function(_0xbacbx9){if(!_0xbacbx9){_0xbacbx5[_0x69af[6]](404)[_0x69af[8]]();return null};return _0xbacbx9}}function saveUpdates(_0xbacbxc){return function(_0xbacbx9){return _0xbacbx9[_0x69af[10]](_0xbacbxc)[_0x69af[9]](function(_0xbacbxd){return _0xbacbxd})}}function removeEntity(_0xbacbx5){return function(_0xbacbx9){if(_0xbacbx9){return _0xbacbx9[_0x69af[11]]()[_0x69af[9]](function(){_0xbacbx5[_0x69af[6]](204)[_0x69af[8]]()})}}}exports[_0x69af[12]]= function(_0xbacbxf,_0xbacbx5){DeskConfiguration[_0x69af[15]]({where:_0xbacbxf[_0x69af[14]]})[_0x69af[9]](responseWithResult(_0xbacbx5))[_0x69af[13]](handleError(_0xbacbx5))};exports[_0x69af[16]]= function(_0xbacbxf,_0xbacbx5){DeskConfiguration[_0x69af[22]]({where:{id:_0xbacbxf[_0x69af[18]][_0x69af[17]]},include:[{model:DeskField,as:_0x69af[19]},{model:DeskField,as:_0x69af[20]},{model:DeskField,as:_0x69af[21]}]})[_0x69af[9]](handleEntityNotFound(_0xbacbx5))[_0x69af[9]](responseWithResult(_0xbacbx5))[_0x69af[13]](handleError(_0xbacbx5))};exports[_0x69af[23]]= function(_0xbacbxf,_0xbacbx5){DeskConfiguration[_0x69af[23]](_0xbacbxf[_0x69af[24]])[_0x69af[9]](responseWithResult(_0xbacbx5,201))[_0x69af[13]](handleError(_0xbacbx5))};exports[_0x69af[25]]= function(_0xbacbxf,_0xbacbx5){if(_0xbacbxf[_0x69af[24]][_0x69af[17]]){delete _0xbacbxf[_0x69af[24]][_0x69af[17]]};DeskConfiguration[_0x69af[26]](_0xbacbxf[_0x69af[18]][_0x69af[17]])[_0x69af[9]](handleEntityNotFound(_0xbacbx5))[_0x69af[9]](saveUpdates(_0xbacbxf[_0x69af[24]]))[_0x69af[9]](responseWithResult(_0xbacbx5))[_0x69af[13]](handleError(_0xbacbx5))};exports[_0x69af[11]]= function(_0xbacbxf,_0xbacbx5){DeskConfiguration[_0x69af[26]](_0xbacbxf[_0x69af[18]][_0x69af[17]])[_0x69af[9]](handleEntityNotFound(_0xbacbx5))[_0x69af[9]](removeEntity(_0xbacbx5))[_0x69af[13]](handleError(_0xbacbx5))};exports[_0x69af[27]]= function(_0xbacbxf,_0xbacbx5,_0xbacbx10){var _0xbacbx11;DeskConfiguration[_0x69af[26]](_0xbacbxf[_0x69af[18]][_0x69af[17]])[_0x69af[9]](handleEntityNotFound(_0xbacbx5))[_0x69af[9]](function(_0xbacbx14){_0xbacbx11= _0xbacbx14;return DeskField[_0x69af[23]](_0xbacbxf[_0x69af[24]])})[_0x69af[9]](function(_0xbacbx13){switch(_0xbacbxf[_0x69af[18]][_0x69af[35]]){case _0x69af[30]:return [_0xbacbx11[_0x69af[29]](_0xbacbx13),_0xbacbx13];case _0x69af[32]:return [_0xbacbx11[_0x69af[31]](_0xbacbx13),_0xbacbx13];case _0x69af[34]:return [_0xbacbx11[_0x69af[33]](_0xbacbx13),_0xbacbx13]}})[_0x69af[28]](function(_0xbacbx12,_0xbacbx13){return _0xbacbx5[_0x69af[6]](201)[_0x69af[7]](_0xbacbx13)})[_0x69af[13]](handleError(_0xbacbx5))} \ No newline at end of file diff --git a/server/api/desk_configuration/desk_configuration.events.js b/server/api/desk_configuration/desk_configuration.events.js index 12fbc47..66b44cf 100644 --- a/server/api/desk_configuration/desk_configuration.events.js +++ b/server/api/desk_configuration/desk_configuration.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const DeskConfiguration = require('../../models').DeskConfiguration; - -var DeskConfigurationEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -DeskConfigurationEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - DeskConfiguration.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - DeskConfigurationEvents.emit(event + ':' + doc._id, doc); - DeskConfigurationEvents.emit(event, doc); - done(null); - } -} - -module.exports = DeskConfigurationEvents; +var _0x9705=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x44\x65\x73\x6B\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x9705[0];const EventEmitter=require(_0x9705[1]);const DeskConfiguration=require(_0x9705[3])[_0x9705[2]];var DeskConfigurationEvents= new EventEmitter();DeskConfigurationEvents[_0x9705[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x9705[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x9705[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x9705[6]};for(var e in events){var event=events[e];DeskConfiguration[_0x9705[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xf48cx8,_0xf48cx9,_0xf48cxa){DeskConfigurationEvents[_0x9705[10]](event+ _0x9705[8]+ _0xf48cx8[_0x9705[9]],_0xf48cx8);DeskConfigurationEvents[_0x9705[10]](event,_0xf48cx8);_0xf48cxa(null)}}module[_0x9705[11]]= DeskConfigurationEvents \ No newline at end of file diff --git a/server/api/desk_configuration/desk_configuration.socket.js b/server/api/desk_configuration/desk_configuration.socket.js index 5bc3ca6..002de82 100644 --- a/server/api/desk_configuration/desk_configuration.socket.js +++ b/server/api/desk_configuration/desk_configuration.socket.js @@ -1,28 +1 @@ -'use strict'; - -const DeskConfigurationEvents = require('./desk_configuration.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('desk_configuration:' + event, socket); - - DeskConfigurationEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - DeskConfigurationEvents.removeListener(event, listener); - }; -} +var _0xa5db=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x64\x65\x73\x6B\x5F\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x64\x65\x73\x6B\x5F\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xa5db[0];const DeskConfigurationEvents=require(_0xa5db[1]);var events=[_0xa5db[2],_0xa5db[3]];exports[_0xa5db[4]]= function(_0xcbb5x3){for(var _0xcbb5x4=0,_0xcbb5x5=events[_0xa5db[5]];_0xcbb5x4< _0xcbb5x5;_0xcbb5x4++){var _0xcbb5x6=events[_0xcbb5x4];var _0xcbb5x7=createListener(_0xa5db[6]+ _0xcbb5x6,_0xcbb5x3);DeskConfigurationEvents[_0xa5db[7]](_0xcbb5x6,_0xcbb5x7);_0xcbb5x3[_0xa5db[7]](_0xa5db[8],removeListener(_0xcbb5x6,_0xcbb5x7))}};function createListener(_0xcbb5x6,_0xcbb5x3){return function(_0xcbb5x9){_0xcbb5x3[_0xa5db[9]](_0xcbb5x6,_0xcbb5x9)}}function removeListener(_0xcbb5x6,_0xcbb5x7){return function(){DeskConfigurationEvents[_0xa5db[10]](_0xcbb5x6,_0xcbb5x7)}} \ No newline at end of file diff --git a/server/api/desk_configuration/index.js b/server/api/desk_configuration/index.js index 23cf463..8917fae 100644 --- a/server/api/desk_configuration/index.js +++ b/server/api/desk_configuration/index.js @@ -1,18 +1 @@ -'use strict'; - -var express = require('express'); -var auth = require('../../auth/auth.service'); -var controller = require('./desk_configuration.controller'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), controller.index); - -router.get('/:id', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.show); -router.post('/', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.create); -router.put('/:id', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.update); -router.post('/:id/:type', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.addConfigurationField); -router.delete('/:id', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.destroy); - - -module.exports = router; +var _0x8fe3=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x64\x65\x73\x6B\x5F\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x2F\x3A\x69\x64\x2F\x3A\x74\x79\x70\x65","\x61\x64\x64\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x46\x69\x65\x6C\x64","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0x8fe3[0];var express=require(_0x8fe3[1]);var auth=require(_0x8fe3[2]);var controller=require(_0x8fe3[3]);var router=express.Router();router[_0x8fe3[7]](_0x8fe3[4],auth[_0x8fe3[5]](),controller[_0x8fe3[6]]);router[_0x8fe3[7]](_0x8fe3[8],auth[_0x8fe3[5]](),auth[_0x8fe3[10]]([19],[_0x8fe3[9]]),controller[_0x8fe3[11]]);router[_0x8fe3[13]](_0x8fe3[4],auth[_0x8fe3[5]](),auth[_0x8fe3[10]]([19],[_0x8fe3[9]]),controller[_0x8fe3[12]]);router[_0x8fe3[15]](_0x8fe3[8],auth[_0x8fe3[5]](),auth[_0x8fe3[10]]([19],[_0x8fe3[9]]),controller[_0x8fe3[14]]);router[_0x8fe3[13]](_0x8fe3[16],auth[_0x8fe3[5]](),auth[_0x8fe3[10]]([19],[_0x8fe3[9]]),controller[_0x8fe3[17]]);router[_0x8fe3[19]](_0x8fe3[8],auth[_0x8fe3[5]](),auth[_0x8fe3[10]]([19],[_0x8fe3[9]]),controller[_0x8fe3[18]]);module[_0x8fe3[20]]= router \ No newline at end of file diff --git a/server/api/desk_field/desk_field.controller.js b/server/api/desk_field/desk_field.controller.js index 6b39f83..59ef31e 100644 --- a/server/api/desk_field/desk_field.controller.js +++ b/server/api/desk_field/desk_field.controller.js @@ -1,104 +1 @@ -/** - * Using Rails-like standard naming convention for endpoints. - * GET /api/desk/fields -> index - * POST /api/desk/fields -> create - * GET /api/desk/fields/:id -> show - * PUT /api/desk/fields/:id -> update - * DELETE /api/desk/fields/:id -> destroy - */ - -'use strict'; - - -var _ = require('lodash'); - -var DeskField = require('../../models').DeskField; - - -function handleError(res, statusCode) { - statusCode = statusCode || 500; - return function(err) { - res.status(statusCode).send(err); - }; -} - -function responseWithResult(res, statusCode) { - statusCode = statusCode || 200; - return function(entity) { - if (entity) { - res.status(statusCode).json(entity); - } - }; -} - -function handleEntityNotFound(res) { - return function(entity) { - if (!entity) { - res.status(404).end(); - return null; - } - return entity; - }; -} - -function saveUpdates(updates) { - return function(entity) { - return entity.updateAttributes(updates) - .then(function(updated) { - return updated; - }); - }; -} - -function removeEntity(res) { - return function(entity) { - if (entity) { - return entity.destroy() - .then(function() { - res.status(204).end(); - }); - } - }; -} - -// Gets a list of DeskFields -exports.index = function(req, res) { - DeskField.findAll() - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Gets a single DeskField from the DB -exports.show = function(req, res) { - DeskField.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Creates a new DeskField in the DB -exports.create = function(req, res) { - DeskField.create(req.body) - .then(responseWithResult(res, 201)) - .catch(handleError(res)); -} - -// Updates an existing DeskField in the DB -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - DeskField.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(saveUpdates(req.body)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Deletes a DeskField from the DB -exports.destroy = function(req, res) { - DeskField.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(removeEntity(res)) - .catch(handleError(res)); -} +var _0xeae9=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x44\x65\x73\x6B\x46\x69\x65\x6C\x64","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x6A\x73\x6F\x6E","\x65\x6E\x64","\x74\x68\x65\x6E","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x64\x65\x73\x74\x72\x6F\x79","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x68\x6F\x77","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65"];_0xeae9[0];var _=require(_0xeae9[1]);var DeskField=require(_0xeae9[3])[_0xeae9[2]];function handleError(_0xf2c5x4,_0xf2c5x5){_0xf2c5x5= _0xf2c5x5|| 500;return function(_0xf2c5x6){_0xf2c5x4[_0xeae9[5]](_0xf2c5x5)[_0xeae9[4]](_0xf2c5x6)}}function responseWithResult(_0xf2c5x4,_0xf2c5x5){_0xf2c5x5= _0xf2c5x5|| 200;return function(_0xf2c5x8){if(_0xf2c5x8){_0xf2c5x4[_0xeae9[5]](_0xf2c5x5)[_0xeae9[6]](_0xf2c5x8)}}}function handleEntityNotFound(_0xf2c5x4){return function(_0xf2c5x8){if(!_0xf2c5x8){_0xf2c5x4[_0xeae9[5]](404)[_0xeae9[7]]();return null};return _0xf2c5x8}}function saveUpdates(_0xf2c5xb){return function(_0xf2c5x8){return _0xf2c5x8[_0xeae9[9]](_0xf2c5xb)[_0xeae9[8]](function(_0xf2c5xc){return _0xf2c5xc})}}function removeEntity(_0xf2c5x4){return function(_0xf2c5x8){if(_0xf2c5x8){return _0xf2c5x8[_0xeae9[10]]()[_0xeae9[8]](function(){_0xf2c5x4[_0xeae9[5]](204)[_0xeae9[7]]()})}}}exports[_0xeae9[11]]= function(_0xf2c5xe,_0xf2c5x4){DeskField[_0xeae9[13]]()[_0xeae9[8]](responseWithResult(_0xf2c5x4))[_0xeae9[12]](handleError(_0xf2c5x4))};exports[_0xeae9[14]]= function(_0xf2c5xe,_0xf2c5x4){DeskField[_0xeae9[17]](_0xf2c5xe[_0xeae9[16]][_0xeae9[15]])[_0xeae9[8]](handleEntityNotFound(_0xf2c5x4))[_0xeae9[8]](responseWithResult(_0xf2c5x4))[_0xeae9[12]](handleError(_0xf2c5x4))};exports[_0xeae9[18]]= function(_0xf2c5xe,_0xf2c5x4){DeskField[_0xeae9[18]](_0xf2c5xe[_0xeae9[19]])[_0xeae9[8]](responseWithResult(_0xf2c5x4,201))[_0xeae9[12]](handleError(_0xf2c5x4))};exports[_0xeae9[20]]= function(_0xf2c5xe,_0xf2c5x4){if(_0xf2c5xe[_0xeae9[19]][_0xeae9[15]]){delete _0xf2c5xe[_0xeae9[19]][_0xeae9[15]]};DeskField[_0xeae9[17]](_0xf2c5xe[_0xeae9[16]][_0xeae9[15]])[_0xeae9[8]](handleEntityNotFound(_0xf2c5x4))[_0xeae9[8]](saveUpdates(_0xf2c5xe[_0xeae9[19]]))[_0xeae9[8]](responseWithResult(_0xf2c5x4))[_0xeae9[12]](handleError(_0xf2c5x4))};exports[_0xeae9[10]]= function(_0xf2c5xe,_0xf2c5x4){DeskField[_0xeae9[17]](_0xf2c5xe[_0xeae9[16]][_0xeae9[15]])[_0xeae9[8]](handleEntityNotFound(_0xf2c5x4))[_0xeae9[8]](removeEntity(_0xf2c5x4))[_0xeae9[12]](handleError(_0xf2c5x4))} \ No newline at end of file diff --git a/server/api/desk_field/desk_field.events.js b/server/api/desk_field/desk_field.events.js index 90e8c70..69119bd 100644 --- a/server/api/desk_field/desk_field.events.js +++ b/server/api/desk_field/desk_field.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const DeskField = require('../../models').DeskField; - -var DeskFieldEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -DeskFieldEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - DeskField.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - DeskFieldEvents.emit(event + ':' + doc._id, doc); - DeskFieldEvents.emit(event, doc); - done(null); - } -} - -module.exports = DeskFieldEvents; +var _0xc9ce=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x44\x65\x73\x6B\x46\x69\x65\x6C\x64","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xc9ce[0];const EventEmitter=require(_0xc9ce[1]);const DeskField=require(_0xc9ce[3])[_0xc9ce[2]];var DeskFieldEvents= new EventEmitter();DeskFieldEvents[_0xc9ce[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xc9ce[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xc9ce[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xc9ce[6]};for(var e in events){var event=events[e];DeskField[_0xc9ce[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xc955x8,_0xc955x9,_0xc955xa){DeskFieldEvents[_0xc9ce[10]](event+ _0xc9ce[8]+ _0xc955x8[_0xc9ce[9]],_0xc955x8);DeskFieldEvents[_0xc9ce[10]](event,_0xc955x8);_0xc955xa(null)}}module[_0xc9ce[11]]= DeskFieldEvents \ No newline at end of file diff --git a/server/api/desk_field/desk_field.socket.js b/server/api/desk_field/desk_field.socket.js index b8144e2..06946ea 100644 --- a/server/api/desk_field/desk_field.socket.js +++ b/server/api/desk_field/desk_field.socket.js @@ -1,28 +1 @@ -'use strict'; - -const DeskFieldEvents = require('./desk_field.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('desk_field:' + event, socket); - - DeskFieldEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - DeskFieldEvents.removeListener(event, listener); - }; -} +var _0xe126=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x64\x65\x73\x6B\x5F\x66\x69\x65\x6C\x64\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x64\x65\x73\x6B\x5F\x66\x69\x65\x6C\x64\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xe126[0];const DeskFieldEvents=require(_0xe126[1]);var events=[_0xe126[2],_0xe126[3]];exports[_0xe126[4]]= function(_0xfef9x3){for(var _0xfef9x4=0,_0xfef9x5=events[_0xe126[5]];_0xfef9x4< _0xfef9x5;_0xfef9x4++){var _0xfef9x6=events[_0xfef9x4];var _0xfef9x7=createListener(_0xe126[6]+ _0xfef9x6,_0xfef9x3);DeskFieldEvents[_0xe126[7]](_0xfef9x6,_0xfef9x7);_0xfef9x3[_0xe126[7]](_0xe126[8],removeListener(_0xfef9x6,_0xfef9x7))}};function createListener(_0xfef9x6,_0xfef9x3){return function(_0xfef9x9){_0xfef9x3[_0xe126[9]](_0xfef9x6,_0xfef9x9)}}function removeListener(_0xfef9x6,_0xfef9x7){return function(){DeskFieldEvents[_0xe126[10]](_0xfef9x6,_0xfef9x7)}} \ No newline at end of file diff --git a/server/api/desk_field/index.js b/server/api/desk_field/index.js index 37342d1..0d4fb8b 100644 --- a/server/api/desk_field/index.js +++ b/server/api/desk_field/index.js @@ -1,16 +1 @@ -'use strict'; - -var express = require('express'); -var auth = require('../../auth/auth.service'); -var controller = require('./desk_field.controller'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.index); -router.get('/:id', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.show); -router.post('/', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.create); -router.put('/:id', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.update); -router.delete('/:id', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.destroy); - - -module.exports = router; +var _0xdab0=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x64\x65\x73\x6B\x5F\x66\x69\x65\x6C\x64\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0xdab0[0];var express=require(_0xdab0[1]);var auth=require(_0xdab0[2]);var controller=require(_0xdab0[3]);var router=express.Router();router[_0xdab0[9]](_0xdab0[4],auth[_0xdab0[5]](),auth[_0xdab0[7]]([19],[_0xdab0[6]]),controller[_0xdab0[8]]);router[_0xdab0[9]](_0xdab0[10],auth[_0xdab0[5]](),auth[_0xdab0[7]]([19],[_0xdab0[6]]),controller[_0xdab0[11]]);router[_0xdab0[13]](_0xdab0[4],auth[_0xdab0[5]](),auth[_0xdab0[7]]([19],[_0xdab0[6]]),controller[_0xdab0[12]]);router[_0xdab0[15]](_0xdab0[10],auth[_0xdab0[5]](),auth[_0xdab0[7]]([19],[_0xdab0[6]]),controller[_0xdab0[14]]);router[_0xdab0[17]](_0xdab0[10],auth[_0xdab0[5]](),auth[_0xdab0[7]]([19],[_0xdab0[6]]),controller[_0xdab0[16]]);module[_0xdab0[18]]= router \ No newline at end of file diff --git a/server/api/extracted_report/extracted_report.controller.js b/server/api/extracted_report/extracted_report.controller.js index 454f170..d951a06 100644 --- a/server/api/extracted_report/extracted_report.controller.js +++ b/server/api/extracted_report/extracted_report.controller.js @@ -1,207 +1 @@ -'use strict'; - -var _ = require('lodash'); -var ExtractedReport = require('../../models').ExtractedReport; -var util = require('util'); -var path = require('path'); -var moment = require('moment'); -var config = require('../../config/environment'); -var base64 = require('file-base64'); -var fs = require('fs'); -var Util = require('../../config/util'); - -// Get list of extracted_reports -exports.index = function(req, res, next) { - switch (req.user.role) { - case 'user': - return ExtractedReport - .findAndCountAll(Util.getQuery(req.query, { - UserId: req.user.id - })) - .then(function(result) { - res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); - default: - return ExtractedReport - .findAndCountAll(Util.getQuery(req.query)) - .then(function(result) { - res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); - } -}; - -// Get a single extracted_reports -exports.show = function(req, res) { - return ExtractedReport - .findById(req.params.id) - .then(function(extracted) { - if (!extracted) { - return res.sendStatus(404); - } - return res.send(extracted); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.download = function(req, res) { - return ExtractedReport - .findById(req.params.id) - .then(function(extract) { - if (!extract) { - return res.status(404).send(extract); - } - var filepath = path.join(config.root, 'server', 'files', 'reports', extract.savename); - base64.encode(filepath, function(err, base64String) { - if (err) { - return handleError(res, err); - } else { - return res.status(200).send({ - downloadString: base64String - }); - } - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Creates a new extracted_report in the DB. -exports.create = function(req, res) { - return ExtractedReport - .create(req.body) - .then(function(extracted) { - return res.status(201).send(extracted); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Updates an existing extracted_report in the DB. -exports.update = function(req, res) { - return ExtractedReport - .findAll({ - where: { - name: req.body.name, - id: { - $ne: req.body.id - } - } - }) - .then(function(extracted_reports) { - if (!extracted_reports) { - return res.sendStatus(404); - } - if (req.body.id) { - delete req.body.id; - } - return ExtractedReport - .findById(req.params.id); - }) - .then(function(extracted) { - if (!extracted) { - return res.sendStatus(404); - } - var updated = _.merge(extracted, req.body); - return updated.save(); - }) - .then(function(extracted) { - return res.status(200).send(extracted); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes an extracted_report from the DB. -exports.destroy = function(req, res) { - var _extracted; - return ExtractedReport - .findById(req.params.id) - .then(function(extracted) { - _extracted = extracted; - if (!extracted) { - return res.sendStatus(404); - } - return extracted.destroy(); - }) - .then(function() { - if (_extracted.savename) { - var filepath = path.join(config.root, 'server', 'files', 'reports', _extracted.savename); - fs.access(filepath, fs.R_OK | fs.W_OK, function(err) { - if (err) { - console.error('File does not exist or operation not permitted'); - } else { - fs.unlink(filepath, function(err) { - if (err) { - console.error('error deleting file :', err); - } else { - console.log('file deleted'); - } - }) - } - }); - } - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.bulkDestroy = function(req, res) { - var _extracts; - return ExtractedReport - .findAll({ - where: { - id: req.query.ids - } - }) - .then(function(extracts) { - _extracts = extracts; - var bulkDelete = []; - extracts.forEach(function(extracted) { - bulkDelete.push(extracted.destroy()); - }); - return bulkDelete; - }) - .all() - .then(function() { - _extracts.forEach(function(extracted) { - if (extracted.savename) { - var filepath = path.join(config.root, 'server', 'files', 'reports', extracted.savename); - fs.access(filepath, fs.R_OK | fs.W_OK, function(err) { - if (err) { - console.error('File does not exist or operation not permitted'); - } else { - fs.unlink(filepath, function(err) { - if (err) { - console.error('error deleting file :', err); - } else { - console.log('file deleted'); - } - }) - } - }); - } - }); - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function handleError(res, err) { - console.log(err); - return res.status(500).send(err); -} +var _0x16dd=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x45\x78\x74\x72\x61\x63\x74\x65\x64\x52\x65\x70\x6F\x72\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x75\x74\x69\x6C","\x70\x61\x74\x68","\x6D\x6F\x6D\x65\x6E\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x66\x69\x6C\x65\x2D\x62\x61\x73\x65\x36\x34","\x66\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x69\x64","\x75\x73\x65\x72","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x72\x6F\x6C\x65","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x64\x6F\x77\x6E\x6C\x6F\x61\x64","\x72\x6F\x6F\x74","\x73\x65\x72\x76\x65\x72","\x66\x69\x6C\x65\x73","\x72\x65\x70\x6F\x72\x74\x73","\x73\x61\x76\x65\x6E\x61\x6D\x65","\x6A\x6F\x69\x6E","\x65\x6E\x63\x6F\x64\x65","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x6E\x61\x6D\x65","\x66\x69\x6E\x64\x41\x6C\x6C","\x64\x65\x73\x74\x72\x6F\x79","\x52\x5F\x4F\x4B","\x57\x5F\x4F\x4B","\x46\x69\x6C\x65\x20\x64\x6F\x65\x73\x20\x6E\x6F\x74\x20\x65\x78\x69\x73\x74\x20\x6F\x72\x20\x6F\x70\x65\x72\x61\x74\x69\x6F\x6E\x20\x6E\x6F\x74\x20\x70\x65\x72\x6D\x69\x74\x74\x65\x64","\x65\x72\x72\x6F\x72","\x65\x72\x72\x6F\x72\x20\x64\x65\x6C\x65\x74\x69\x6E\x67\x20\x66\x69\x6C\x65\x20\x3A","\x66\x69\x6C\x65\x20\x64\x65\x6C\x65\x74\x65\x64","\x6C\x6F\x67","\x75\x6E\x6C\x69\x6E\x6B","\x61\x63\x63\x65\x73\x73","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x66\x6F\x72\x45\x61\x63\x68","\x61\x6C\x6C","\x70\x75\x73\x68","\x69\x64\x73"];_0x16dd[0];var _=require(_0x16dd[1]);var ExtractedReport=require(_0x16dd[3])[_0x16dd[2]];var util=require(_0x16dd[4]);var path=require(_0x16dd[5]);var moment=require(_0x16dd[6]);var config=require(_0x16dd[7]);var base64=require(_0x16dd[8]);var fs=require(_0x16dd[9]);var Util=require(_0x16dd[10]);exports[_0x16dd[11]]= function(_0x822dxa,_0x822dxb,_0x822dxc){switch(_0x822dxa[_0x16dd[18]][_0x16dd[21]]){case _0x16dd[18]:return ExtractedReport[_0x16dd[20]](Util[_0x16dd[19]](_0x822dxa[_0x16dd[16]],{UserId:_0x822dxa[_0x16dd[18]][_0x16dd[17]]}))[_0x16dd[15]](function(_0x822dxe){_0x822dxb[_0x16dd[14]](200)[_0x16dd[13]](_0x822dxe)})[_0x16dd[12]](function(_0x822dxd){return handleError(_0x822dxb,_0x822dxd)});default:return ExtractedReport[_0x16dd[20]](Util[_0x16dd[19]](_0x822dxa[_0x16dd[16]]))[_0x16dd[15]](function(_0x822dxe){_0x822dxb[_0x16dd[14]](200)[_0x16dd[13]](_0x822dxe)})[_0x16dd[12]](function(_0x822dxd){return handleError(_0x822dxb,_0x822dxd)})}};exports[_0x16dd[22]]= function(_0x822dxa,_0x822dxb){return ExtractedReport[_0x16dd[25]](_0x822dxa[_0x16dd[24]][_0x16dd[17]])[_0x16dd[15]](function(_0x822dxf){if(!_0x822dxf){return _0x822dxb[_0x16dd[23]](404)};return _0x822dxb[_0x16dd[13]](_0x822dxf)})[_0x16dd[12]](function(_0x822dxd){return handleError(_0x822dxb,_0x822dxd)})};exports[_0x16dd[26]]= function(_0x822dxa,_0x822dxb){return ExtractedReport[_0x16dd[25]](_0x822dxa[_0x16dd[24]][_0x16dd[17]])[_0x16dd[15]](function(_0x822dx10){if(!_0x822dx10){return _0x822dxb[_0x16dd[14]](404)[_0x16dd[13]](_0x822dx10)};var _0x822dx11=path[_0x16dd[32]](config[_0x16dd[27]],_0x16dd[28],_0x16dd[29],_0x16dd[30],_0x822dx10[_0x16dd[31]]);base64[_0x16dd[33]](_0x822dx11,function(_0x822dxd,_0x822dx12){if(_0x822dxd){return handleError(_0x822dxb,_0x822dxd)}else {return _0x822dxb[_0x16dd[14]](200)[_0x16dd[13]]({downloadString:_0x822dx12})}})})[_0x16dd[12]](function(_0x822dxd){return handleError(_0x822dxb,_0x822dxd)})};exports[_0x16dd[34]]= function(_0x822dxa,_0x822dxb){return ExtractedReport[_0x16dd[34]](_0x822dxa[_0x16dd[35]])[_0x16dd[15]](function(_0x822dxf){return _0x822dxb[_0x16dd[14]](201)[_0x16dd[13]](_0x822dxf)})[_0x16dd[12]](function(_0x822dxd){return handleError(_0x822dxb,_0x822dxd)})};exports[_0x16dd[36]]= function(_0x822dxa,_0x822dxb){return ExtractedReport[_0x16dd[40]]({where:{name:_0x822dxa[_0x16dd[35]][_0x16dd[39]],id:{$ne:_0x822dxa[_0x16dd[35]][_0x16dd[17]]}}})[_0x16dd[15]](function(_0x822dx14){if(!_0x822dx14){return _0x822dxb[_0x16dd[23]](404)};if(_0x822dxa[_0x16dd[35]][_0x16dd[17]]){delete _0x822dxa[_0x16dd[35]][_0x16dd[17]]};return ExtractedReport[_0x16dd[25]](_0x822dxa[_0x16dd[24]][_0x16dd[17]])})[_0x16dd[15]](function(_0x822dxf){if(!_0x822dxf){return _0x822dxb[_0x16dd[23]](404)};var _0x822dx13=_[_0x16dd[37]](_0x822dxf,_0x822dxa[_0x16dd[35]]);return _0x822dx13[_0x16dd[38]]()})[_0x16dd[15]](function(_0x822dxf){return _0x822dxb[_0x16dd[14]](200)[_0x16dd[13]](_0x822dxf)})[_0x16dd[12]](function(_0x822dxd){return handleError(_0x822dxb,_0x822dxd)})};exports[_0x16dd[41]]= function(_0x822dxa,_0x822dxb){var _0x822dx15;return ExtractedReport[_0x16dd[25]](_0x822dxa[_0x16dd[24]][_0x16dd[17]])[_0x16dd[15]](function(_0x822dxf){_0x822dx15= _0x822dxf;if(!_0x822dxf){return _0x822dxb[_0x16dd[23]](404)};return _0x822dxf[_0x16dd[41]]()})[_0x16dd[15]](function(){if(_0x822dx15[_0x16dd[31]]){var _0x822dx11=path[_0x16dd[32]](config[_0x16dd[27]],_0x16dd[28],_0x16dd[29],_0x16dd[30],_0x822dx15[_0x16dd[31]]);fs[_0x16dd[50]](_0x822dx11,fs[_0x16dd[42]]| fs[_0x16dd[43]],function(_0x822dxd){if(_0x822dxd){console[_0x16dd[45]](_0x16dd[44])}else {fs[_0x16dd[49]](_0x822dx11,function(_0x822dxd){if(_0x822dxd){console[_0x16dd[45]](_0x16dd[46],_0x822dxd)}else {console[_0x16dd[48]](_0x16dd[47])}})}})};return _0x822dxb[_0x16dd[23]](204)})[_0x16dd[12]](function(_0x822dxd){return handleError(_0x822dxb,_0x822dxd)})};exports[_0x16dd[51]]= function(_0x822dxa,_0x822dxb){var _0x822dx16;return ExtractedReport[_0x16dd[40]]({where:{id:_0x822dxa[_0x16dd[16]][_0x16dd[55]]}})[_0x16dd[15]](function(_0x822dx17){_0x822dx16= _0x822dx17;var _0x822dx18=[];_0x822dx17[_0x16dd[52]](function(_0x822dxf){_0x822dx18[_0x16dd[54]](_0x822dxf[_0x16dd[41]]())});return _0x822dx18})[_0x16dd[53]]()[_0x16dd[15]](function(){_0x822dx16[_0x16dd[52]](function(_0x822dxf){if(_0x822dxf[_0x16dd[31]]){var _0x822dx11=path[_0x16dd[32]](config[_0x16dd[27]],_0x16dd[28],_0x16dd[29],_0x16dd[30],_0x822dxf[_0x16dd[31]]);fs[_0x16dd[50]](_0x822dx11,fs[_0x16dd[42]]| fs[_0x16dd[43]],function(_0x822dxd){if(_0x822dxd){console[_0x16dd[45]](_0x16dd[44])}else {fs[_0x16dd[49]](_0x822dx11,function(_0x822dxd){if(_0x822dxd){console[_0x16dd[45]](_0x16dd[46],_0x822dxd)}else {console[_0x16dd[48]](_0x16dd[47])}})}})}});return _0x822dxb[_0x16dd[23]](204)})[_0x16dd[12]](function(_0x822dxd){return handleError(_0x822dxb,_0x822dxd)})};function handleError(_0x822dxb,_0x822dxd){console[_0x16dd[48]](_0x822dxd);return _0x822dxb[_0x16dd[14]](500)[_0x16dd[13]](_0x822dxd)} \ No newline at end of file diff --git a/server/api/extracted_report/extracted_report.events.js b/server/api/extracted_report/extracted_report.events.js index 311b078..4aa2b76 100644 --- a/server/api/extracted_report/extracted_report.events.js +++ b/server/api/extracted_report/extracted_report.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const ExtractedReport = require('../../models').ExtractedReport; - -var ExtractedReportEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -ExtractedReportEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - ExtractedReport.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - ExtractedReportEvents.emit(event + ':' + doc._id, doc); - ExtractedReportEvents.emit(event, doc); - done(null); - } -} - -module.exports = ExtractedReportEvents; +var _0x4493=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x45\x78\x74\x72\x61\x63\x74\x65\x64\x52\x65\x70\x6F\x72\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x4493[0];const EventEmitter=require(_0x4493[1]);const ExtractedReport=require(_0x4493[3])[_0x4493[2]];var ExtractedReportEvents= new EventEmitter();ExtractedReportEvents[_0x4493[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x4493[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x4493[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x4493[6]};for(var e in events){var event=events[e];ExtractedReport[_0x4493[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xb7b2x8,_0xb7b2x9,_0xb7b2xa){ExtractedReportEvents[_0x4493[10]](event+ _0x4493[8]+ _0xb7b2x8[_0x4493[9]],_0xb7b2x8);ExtractedReportEvents[_0x4493[10]](event,_0xb7b2x8);_0xb7b2xa(null)}}module[_0x4493[11]]= ExtractedReportEvents \ No newline at end of file diff --git a/server/api/extracted_report/extracted_report.socket.js b/server/api/extracted_report/extracted_report.socket.js index 684fc40..0d8f5ce 100644 --- a/server/api/extracted_report/extracted_report.socket.js +++ b/server/api/extracted_report/extracted_report.socket.js @@ -1,28 +1 @@ -'use strict'; - -const ExtractedReportEvents = require('./extracted_report.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('extracted_report:' + event, socket); - - ExtractedReportEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - ExtractedReportEvents.removeListener(event, listener); - }; -} +var _0xcfee=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x65\x78\x74\x72\x61\x63\x74\x65\x64\x5F\x72\x65\x70\x6F\x72\x74\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x65\x78\x74\x72\x61\x63\x74\x65\x64\x5F\x72\x65\x70\x6F\x72\x74\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xcfee[0];const ExtractedReportEvents=require(_0xcfee[1]);var events=[_0xcfee[2],_0xcfee[3]];exports[_0xcfee[4]]= function(_0x96e8x3){for(var _0x96e8x4=0,_0x96e8x5=events[_0xcfee[5]];_0x96e8x4< _0x96e8x5;_0x96e8x4++){var _0x96e8x6=events[_0x96e8x4];var _0x96e8x7=createListener(_0xcfee[6]+ _0x96e8x6,_0x96e8x3);ExtractedReportEvents[_0xcfee[7]](_0x96e8x6,_0x96e8x7);_0x96e8x3[_0xcfee[7]](_0xcfee[8],removeListener(_0x96e8x6,_0x96e8x7))}};function createListener(_0x96e8x6,_0x96e8x3){return function(_0x96e8x9){_0x96e8x3[_0xcfee[9]](_0x96e8x6,_0x96e8x9)}}function removeListener(_0x96e8x6,_0x96e8x7){return function(){ExtractedReportEvents[_0xcfee[10]](_0x96e8x6,_0x96e8x7)}} \ No newline at end of file diff --git a/server/api/extracted_report/index.js b/server/api/extracted_report/index.js index ab71e52..c5602ff 100644 --- a/server/api/extracted_report/index.js +++ b/server/api/extracted_report/index.js @@ -1,17 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./extracted_report.controller'); -var auth = require('../../auth/auth.service'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), auth.hasModule([17], ['admin']), controller.index); -router.get('/:id/download', auth.isAuthenticated(), auth.hasModule([17], ['admin']), controller.download); -router.get('/:id', auth.isAuthenticated(), auth.hasModule([17], ['admin']), controller.show); -router.post('/', auth.isAuthenticated(), auth.hasModule([17], ['admin']), controller.create); -router.put('/:id', auth.isAuthenticated(), auth.hasModule([17], ['admin']), controller.update); -router.delete('/', auth.isAuthenticated(), auth.hasModule([17], ['admin']), controller.bulkDestroy); -router.delete('/:id', auth.isAuthenticated(), auth.hasModule([17], ['admin']), controller.destroy); - -module.exports = router; +var _0x47c8=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x65\x78\x74\x72\x61\x63\x74\x65\x64\x5F\x72\x65\x70\x6F\x72\x74\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64\x2F\x64\x6F\x77\x6E\x6C\x6F\x61\x64","\x64\x6F\x77\x6E\x6C\x6F\x61\x64","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0x47c8[0];var express=require(_0x47c8[1]);var controller=require(_0x47c8[2]);var auth=require(_0x47c8[3]);var router=express.Router();router[_0x47c8[9]](_0x47c8[4],auth[_0x47c8[5]](),auth[_0x47c8[7]]([17],[_0x47c8[6]]),controller[_0x47c8[8]]);router[_0x47c8[9]](_0x47c8[10],auth[_0x47c8[5]](),auth[_0x47c8[7]]([17],[_0x47c8[6]]),controller[_0x47c8[11]]);router[_0x47c8[9]](_0x47c8[12],auth[_0x47c8[5]](),auth[_0x47c8[7]]([17],[_0x47c8[6]]),controller[_0x47c8[13]]);router[_0x47c8[15]](_0x47c8[4],auth[_0x47c8[5]](),auth[_0x47c8[7]]([17],[_0x47c8[6]]),controller[_0x47c8[14]]);router[_0x47c8[17]](_0x47c8[12],auth[_0x47c8[5]](),auth[_0x47c8[7]]([17],[_0x47c8[6]]),controller[_0x47c8[16]]);router[_0x47c8[19]](_0x47c8[4],auth[_0x47c8[5]](),auth[_0x47c8[7]]([17],[_0x47c8[6]]),controller[_0x47c8[18]]);router[_0x47c8[19]](_0x47c8[12],auth[_0x47c8[5]](),auth[_0x47c8[7]]([17],[_0x47c8[6]]),controller[_0x47c8[20]]);module[_0x47c8[21]]= router \ No newline at end of file diff --git a/server/api/fax_account/fax_account.controller.js b/server/api/fax_account/fax_account.controller.js index 92adae5..b5c9989 100644 --- a/server/api/fax_account/fax_account.controller.js +++ b/server/api/fax_account/fax_account.controller.js @@ -1,474 +1 @@ -/** - * Using Rails-like standard naming convention for endpoints. - * GET /api/fax/accounts -> index - * POST /api/fax/accounts -> create - * GET /api/fax/accounts/:id -> show - * PUT /api/fax/accounts/:id -> update - * DELETE /api/fax/accounts/:id -> destroy - */ - -'use strict'; - - -var _ = require('lodash'); -var Util = require('../../config/util'); - -var sequelize = require('../../models').sequelize; - -var FaxAccount = require('../../models').FaxAccount; -var FaxRoom = require('../../models').FaxRoom; -var FaxApplication = require('../../models').FaxApplication; -var FaxQueue = require('../../models').FaxQueue; -var FaxDisposition = require('../../models').FaxDisposition; -var FaxMessage = require('../../models').FaxMessage; -var FaxAttachment = require('../../models').FaxAttachment; -var User = require('../../models').User; -var Interval = require('../../models').Interval; - - -function handleError(res, statusCode) { - statusCode = statusCode || 500; - return function(err) { - res.status(statusCode).send(err); - }; -} - -function responseWithResult(res, statusCode) { - statusCode = statusCode || 200; - return function(entity) { - if (entity) { - res.status(statusCode).json(entity); - } - }; -} - -function responseWithoutResult(res, statusCode) { - statusCode = statusCode || 204; - return function() { - res.sendStatus(statusCode); - }; -} - -function handleEntityNotFound(res) { - return function(entity) { - if (!entity) { - res.status(404).end(); - return null; - } - return entity; - }; -} - -function saveUpdates(updates) { - return function(entity) { - return entity.updateAttributes(updates) - .then(function(updated) { - return updated; - }); - }; -} - -function removeEntity(res) { - return function(entity) { - if (entity) { - return entity.destroy() - .then(function() { - res.status(204).end(); - }); - } - }; -} - -// Gets a list of FaxAccounts -exports.index = function(req, res) { - return FaxAccount - .findAndCountAll(Util.getQuery(req.query)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Gets a single FaxAccount from the DB -exports.show = function(req, res) { - return FaxAccount.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Creates a new FaxAccount in the DB -exports.create = function(req, res) { - return sequelize.transaction(function(t) { - return FaxAccount.create(req.body, { - transaction: t - }); - }) - .then(responseWithoutResult(res, 201)) - .catch(sequelize.ValidationError, function(err) { - err.message = 'Extension/context combination already exist'; - err.translatedMessage = 'MESSAGE_EXIST_ROUTE' - return res.status(500).send(err); - }) - .catch(sequelize.UniqueConstraintError, function(err) { - return Util.errorManager.handleUniqueConstraintError(res, err); - }) - .catch(handleError(res)); -} - -// Updates an existing FaxAccount in the DB -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - return sequelize.transaction(function(t) { - return FaxAccount.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(function(faxAccount) { - return faxAccount.updateAttributes(req.body, { - transaction: t - }) - }) - }) - .then(responseWithoutResult(res)) - .catch(sequelize.ValidationError, function(err) { - err.message = 'Extension/context combination already exist'; - err.translatedMessage = 'MESSAGE_EXIST_ROUTE' - return res.status(500).send(err); - }) - .catch(sequelize.UniqueConstraintError, function(err) { - return Util.errorManager.handleUniqueConstraintError(res, err); - }) - .catch(handleError(res)); -} - -// Deletes a FaxAccount from the DB -exports.destroy = function(req, res) { - return sequelize.transaction(function(t) { - return FaxAccount.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(function(faxAccount) { - return faxAccount.destroy(); - }); - }) - .then(function() { - res.status(204).end(); - }) - .catch(handleError(res)); -} - -exports.bulkDestroy = function(req, res) { - return FaxAccount - .destroy({ - where: { - id: req.query.ids - }, - individualHooks: true - }) - .then(responseWithoutResult(res)) - .catch(handleError(res)); -}; - -exports.showApplications = function(req, res, next) { - return FaxAccount - .scope('default') - .findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(function(faxAccount) { - return faxAccount - .getFaxApplications(_.merge(Util.getQuery(req.query), { - include: [{ - model: FaxQueue, - attributes: ['id', 'name'] - }, { - model: User, - attributes: ['id', 'name', 'online'] - }, { - model: Interval, - attributes: ['id', 'name'] - }] - })); - }) - .then(function(faxApplications) { - return res.send({ - count: faxApplications.length, - rows: faxApplications - }); - }) - .catch(handleError(res)); -}; - -exports.createApplication = function(req, res, next) { - return FaxApplication - .max('priority', { - where: { - FaxAccountId: req.params.id - } - }).then(function(max) { - // SET PRIORITY - req.body.priority = max ? ++max : 1; - req.body.FaxAccountId = req.params.id; - return FaxApplication - .create(req.body); - }) - .then(responseWithResult(res, 201)) - .catch(handleError(res)); -}; - -exports.bulkDestroyApplications = function(req, res) { - return FaxApplication - .destroy({ - where: { - id: req.query.ids - }, - individualHooks: true - }) - .then(responseWithoutResult(res)) - .catch(handleError(res)); -}; - -exports.destroyApplication = function(req, res, next) { - return FaxApplication - .findById(req.params.appId) - .then(handleEntityNotFound(res)) - .then(removeEntity(res)) - .catch(handleError(res)); -}; - -exports.updateApplications = function(req, res) { - - var priority = 0; - var apps = req.body; - - apps.forEach(function(app) { - delete app.id; - delete app.createdAt; - delete app.updatedAt; - - app.priority = ++priority; - }); - - return sequelize.transaction(function(t) { - return FaxApplication - .destroy({ - where: { - FaxAccountId: req.params.id - }, - individualHooks: true, - transaction: t - }) - .then(function(faxApplication) { - return FaxApplication - .bulkCreate(apps, { - individualHooks: true, - transaction: t - }); - }); - }) - .then(function(faxApplications) { - return res.status(200).send({ - count: faxApplications.length, - rows: faxApplications - }); - }) - .catch(handleError(res)); -}; - -exports.updateApplication = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - return FaxApplication.findById(req.params.appId) - .then(handleEntityNotFound(res)) - .then(saveUpdates(req.body)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -exports.showApplication = function(req, res) { - return FaxApplication - .findById(req.params.appId, { - include: [{ - all: true - }] - }) - .then(handleEntityNotFound(res)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -exports.getFaxRooms = function(req, res, next) { - var _query = { - where: { - FaxAccountId: req.params.id, - $and: [] - }, - include: [], - attributes: ['id', 'contact', 'disposition', 'tags', 'lastEvent', 'updatedAt'] - }; - - // TO MOVE SOON INTO AN EXTENAL UTIL FILE - if (req.query) { - if (req.query.tags) { - if (_.isArray(req.query.tags)) { - for (var i = 0; i < req.query.tags.length; i++) { - _query.where.$and.push({ - tags: { - $like: '%' + req.query.tags[i] + '%' - } - }); - } - } else { - _query.where.$and.push({ - tags: { - $like: '%' + req.query.tags + '%' - } - }); - } - - delete req.query.tags; - } - - _.merge(_query.where, req.query); - } - - switch (req.user.role) { - case 'agent': - _query.include.push({ - model: User, - attributes: ['id'] - }); - - var _agents; - var _agentQueues; - var _accountQueues; - - return User - .findById(req.user.id) - .then(function(user) { - if (user) { - return user - .getFaxQueues(); - } else { - return []; - } - }) - .then(function(queues) { - _agentQueues = _.map(queues, 'id'); - return FaxAccount - .findById(req.params.id); - }) - .then(function(account) { - return account - .getFaxApplications({ - where: { - $or: [{ - app: 'queue' - }, { - app: 'agent' - }] - } - }); - }) - .then(function(apps) { - - _agents = _.map(_.find(apps, { - 'app': 'agent' - }), 'UserId'); - - _accountQueues = _.map(_.find(apps, { - 'app': 'queue' - }), 'FaxQueueId'); - - if (_.intersection(_agentQueues, _accountQueues).length || _.intersection(_agents, [req.user.id]).length) { - return FaxRoom - .findAll(_query) - .then(function(faxRooms) { - return res.status(200).send(faxRooms); - }) - .catch(function(err) { - console.error(err); - return handleError(res, err); - }); - } else { - - return res.status(200).send([]); - } - }) - .catch(function(err) { - console.error(err); - }); - - default: - return FaxRoom - .findAll(_query) - .then(function(faxRooms) { - return res.status(200).send(faxRooms); - }) - .catch(handleError(res)); - } -}; - -exports.getDispositions = function(req, res, next) { - return FaxAccount - .findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(function(faxAccount) { - return faxAccount.getFaxDispositions(); - }) - .then(function(faxDispositions) { - return res.status(200).send({ - rows: faxDispositions, - count: faxDispositions.length - }); - }) - .catch(handleError(res)); -}; - -exports.createDisposition = function(req, res, next) { - req.body.FaxAccountId = req.params.id; - - return FaxDisposition - .create(req.body) - .then(responseWithResult(res, 201)) - .catch(handleError(res)); -}; - -exports.updateDisposition = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - - return FaxDisposition - .findById(req.params.dispId) - .then(handleEntityNotFound(res)) - .then(function(faxDisposition) { - var updated = _.merge(faxDisposition, req.body); - return updated.save(); - }) - .then(responseWithResult(res, 200)) - .catch(handleError(res)); -}; - -exports.destroyDisposition = function(req, res, next) { - return FaxDisposition - .findById(req.params.dispId) - .then(handleEntityNotFound(res)) - .then(function(faxDiposition) { - return faxDiposition.destroy(); - }) - .then(responseWithoutResult(res, 204)) - .catch(handleError(res)); -}; - -exports.sendMessage = function(req, res, next) { - req.body.UserId = req.user.id; - - return FaxMessage - .create(req.body, { - include: [{ - model: FaxAttachment - }], - user: req.user - }) - .then(responseWithResult(res, 201)) - .catch(handleError(res)); -}; +var _0xb353=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x46\x61\x78\x41\x63\x63\x6F\x75\x6E\x74","\x46\x61\x78\x52\x6F\x6F\x6D","\x46\x61\x78\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x46\x61\x78\x51\x75\x65\x75\x65","\x46\x61\x78\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x46\x61\x78\x4D\x65\x73\x73\x61\x67\x65","\x46\x61\x78\x41\x74\x74\x61\x63\x68\x6D\x65\x6E\x74","\x55\x73\x65\x72","\x49\x6E\x74\x65\x72\x76\x61\x6C","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x6A\x73\x6F\x6E","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x65\x6E\x64","\x74\x68\x65\x6E","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x64\x65\x73\x74\x72\x6F\x79","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x73\x68\x6F\x77","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x68\x61\x6E\x64\x6C\x65\x55\x6E\x69\x71\x75\x65\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74\x45\x72\x72\x6F\x72","\x65\x72\x72\x6F\x72\x4D\x61\x6E\x61\x67\x65\x72","\x6D\x65\x73\x73\x61\x67\x65","\x45\x78\x74\x65\x6E\x73\x69\x6F\x6E\x2F\x63\x6F\x6E\x74\x65\x78\x74\x20\x63\x6F\x6D\x62\x69\x6E\x61\x74\x69\x6F\x6E\x20\x61\x6C\x72\x65\x61\x64\x79\x20\x65\x78\x69\x73\x74","\x74\x72\x61\x6E\x73\x6C\x61\x74\x65\x64\x4D\x65\x73\x73\x61\x67\x65","\x4D\x45\x53\x53\x41\x47\x45\x5F\x45\x58\x49\x53\x54\x5F\x52\x4F\x55\x54\x45","\x62\x6F\x64\x79","\x74\x72\x61\x6E\x73\x61\x63\x74\x69\x6F\x6E","\x75\x70\x64\x61\x74\x65","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73","\x73\x68\x6F\x77\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x6C\x65\x6E\x67\x74\x68","\x6E\x61\x6D\x65","\x6F\x6E\x6C\x69\x6E\x65","\x6D\x65\x72\x67\x65","\x67\x65\x74\x46\x61\x78\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x64\x65\x66\x61\x75\x6C\x74","\x73\x63\x6F\x70\x65","\x63\x72\x65\x61\x74\x65\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x70\x72\x69\x6F\x72\x69\x74\x79","\x46\x61\x78\x41\x63\x63\x6F\x75\x6E\x74\x49\x64","\x6D\x61\x78","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x64\x65\x73\x74\x72\x6F\x79\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x61\x70\x70\x49\x64","\x75\x70\x64\x61\x74\x65\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x63\x72\x65\x61\x74\x65\x64\x41\x74","\x75\x70\x64\x61\x74\x65\x64\x41\x74","\x66\x6F\x72\x45\x61\x63\x68","\x62\x75\x6C\x6B\x43\x72\x65\x61\x74\x65","\x75\x70\x64\x61\x74\x65\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x73\x68\x6F\x77\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x67\x65\x74\x46\x61\x78\x52\x6F\x6F\x6D\x73","\x63\x6F\x6E\x74\x61\x63\x74","\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x74\x61\x67\x73","\x6C\x61\x73\x74\x45\x76\x65\x6E\x74","\x69\x73\x41\x72\x72\x61\x79","\x25","\x70\x75\x73\x68","\x24\x61\x6E\x64","\x77\x68\x65\x72\x65","\x69\x6E\x63\x6C\x75\x64\x65","\x65\x72\x72\x6F\x72","\x61\x67\x65\x6E\x74","\x66\x69\x6E\x64","\x55\x73\x65\x72\x49\x64","\x6D\x61\x70","\x71\x75\x65\x75\x65","\x46\x61\x78\x51\x75\x65\x75\x65\x49\x64","\x69\x6E\x74\x65\x72\x73\x65\x63\x74\x69\x6F\x6E","\x75\x73\x65\x72","\x66\x69\x6E\x64\x41\x6C\x6C","\x67\x65\x74\x46\x61\x78\x51\x75\x65\x75\x65\x73","\x72\x6F\x6C\x65","\x67\x65\x74\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x73","\x67\x65\x74\x46\x61\x78\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x73","\x63\x72\x65\x61\x74\x65\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x75\x70\x64\x61\x74\x65\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x73\x61\x76\x65","\x64\x69\x73\x70\x49\x64","\x64\x65\x73\x74\x72\x6F\x79\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x73\x65\x6E\x64\x4D\x65\x73\x73\x61\x67\x65"];_0xb353[0];var _=require(_0xb353[1]);var Util=require(_0xb353[2]);var sequelize=require(_0xb353[4])[_0xb353[3]];var FaxAccount=require(_0xb353[4])[_0xb353[5]];var FaxRoom=require(_0xb353[4])[_0xb353[6]];var FaxApplication=require(_0xb353[4])[_0xb353[7]];var FaxQueue=require(_0xb353[4])[_0xb353[8]];var FaxDisposition=require(_0xb353[4])[_0xb353[9]];var FaxMessage=require(_0xb353[4])[_0xb353[10]];var FaxAttachment=require(_0xb353[4])[_0xb353[11]];var User=require(_0xb353[4])[_0xb353[12]];var Interval=require(_0xb353[4])[_0xb353[13]];function handleError(_0x8b2cxe,_0x8b2cxf){_0x8b2cxf= _0x8b2cxf|| 500;return function(_0x8b2cx10){_0x8b2cxe[_0xb353[15]](_0x8b2cxf)[_0xb353[14]](_0x8b2cx10)}}function responseWithResult(_0x8b2cxe,_0x8b2cxf){_0x8b2cxf= _0x8b2cxf|| 200;return function(_0x8b2cx12){if(_0x8b2cx12){_0x8b2cxe[_0xb353[15]](_0x8b2cxf)[_0xb353[16]](_0x8b2cx12)}}}function responseWithoutResult(_0x8b2cxe,_0x8b2cxf){_0x8b2cxf= _0x8b2cxf|| 204;return function(){_0x8b2cxe[_0xb353[17]](_0x8b2cxf)}}function handleEntityNotFound(_0x8b2cxe){return function(_0x8b2cx12){if(!_0x8b2cx12){_0x8b2cxe[_0xb353[15]](404)[_0xb353[18]]();return null};return _0x8b2cx12}}function saveUpdates(_0x8b2cx16){return function(_0x8b2cx12){return _0x8b2cx12[_0xb353[20]](_0x8b2cx16)[_0xb353[19]](function(_0x8b2cx17){return _0x8b2cx17})}}function removeEntity(_0x8b2cxe){return function(_0x8b2cx12){if(_0x8b2cx12){return _0x8b2cx12[_0xb353[21]]()[_0xb353[19]](function(){_0x8b2cxe[_0xb353[15]](204)[_0xb353[18]]()})}}}exports[_0xb353[22]]= function(_0x8b2cx19,_0x8b2cxe){return FaxAccount[_0xb353[26]](Util[_0xb353[25]](_0x8b2cx19[_0xb353[24]]))[_0xb353[19]](responseWithResult(_0x8b2cxe))[_0xb353[23]](handleError(_0x8b2cxe))};exports[_0xb353[27]]= function(_0x8b2cx19,_0x8b2cxe){return FaxAccount[_0xb353[30]](_0x8b2cx19[_0xb353[29]][_0xb353[28]])[_0xb353[19]](handleEntityNotFound(_0x8b2cxe))[_0xb353[19]](responseWithResult(_0x8b2cxe))[_0xb353[23]](handleError(_0x8b2cxe))};exports[_0xb353[31]]= function(_0x8b2cx19,_0x8b2cxe){return sequelize[_0xb353[39]](function(_0x8b2cx1a){return FaxAccount[_0xb353[31]](_0x8b2cx19[_0xb353[38]],{transaction:_0x8b2cx1a})})[_0xb353[19]](responseWithoutResult(_0x8b2cxe,201))[_0xb353[23]](sequelize.ValidationError,function(_0x8b2cx10){_0x8b2cx10[_0xb353[34]]= _0xb353[35];_0x8b2cx10[_0xb353[36]]= _0xb353[37];return _0x8b2cxe[_0xb353[15]](500)[_0xb353[14]](_0x8b2cx10)})[_0xb353[23]](sequelize.UniqueConstraintError,function(_0x8b2cx10){return Util[_0xb353[33]][_0xb353[32]](_0x8b2cxe,_0x8b2cx10)})[_0xb353[23]](handleError(_0x8b2cxe))};exports[_0xb353[40]]= function(_0x8b2cx19,_0x8b2cxe){if(_0x8b2cx19[_0xb353[38]][_0xb353[28]]){delete _0x8b2cx19[_0xb353[38]][_0xb353[28]]};return sequelize[_0xb353[39]](function(_0x8b2cx1a){return FaxAccount[_0xb353[30]](_0x8b2cx19[_0xb353[29]][_0xb353[28]])[_0xb353[19]](handleEntityNotFound(_0x8b2cxe))[_0xb353[19]](function(_0x8b2cx1b){return _0x8b2cx1b[_0xb353[20]](_0x8b2cx19[_0xb353[38]],{transaction:_0x8b2cx1a})})})[_0xb353[19]](responseWithoutResult(_0x8b2cxe))[_0xb353[23]](sequelize.ValidationError,function(_0x8b2cx10){_0x8b2cx10[_0xb353[34]]= _0xb353[35];_0x8b2cx10[_0xb353[36]]= _0xb353[37];return _0x8b2cxe[_0xb353[15]](500)[_0xb353[14]](_0x8b2cx10)})[_0xb353[23]](sequelize.UniqueConstraintError,function(_0x8b2cx10){return Util[_0xb353[33]][_0xb353[32]](_0x8b2cxe,_0x8b2cx10)})[_0xb353[23]](handleError(_0x8b2cxe))};exports[_0xb353[21]]= function(_0x8b2cx19,_0x8b2cxe){return sequelize[_0xb353[39]](function(_0x8b2cx1a){return FaxAccount[_0xb353[30]](_0x8b2cx19[_0xb353[29]][_0xb353[28]])[_0xb353[19]](handleEntityNotFound(_0x8b2cxe))[_0xb353[19]](function(_0x8b2cx1b){return _0x8b2cx1b[_0xb353[21]]()})})[_0xb353[19]](function(){_0x8b2cxe[_0xb353[15]](204)[_0xb353[18]]()})[_0xb353[23]](handleError(_0x8b2cxe))};exports[_0xb353[41]]= function(_0x8b2cx19,_0x8b2cxe){return FaxAccount[_0xb353[21]]({where:{id:_0x8b2cx19[_0xb353[24]][_0xb353[42]]},individualHooks:true})[_0xb353[19]](responseWithoutResult(_0x8b2cxe))[_0xb353[23]](handleError(_0x8b2cxe))};exports[_0xb353[43]]= function(_0x8b2cx19,_0x8b2cxe,_0x8b2cx1c){return FaxAccount[_0xb353[50]](_0xb353[49])[_0xb353[30]](_0x8b2cx19[_0xb353[29]][_0xb353[28]])[_0xb353[19]](handleEntityNotFound(_0x8b2cxe))[_0xb353[19]](function(_0x8b2cx1b){return _0x8b2cx1b[_0xb353[48]](_[_0xb353[47]](Util[_0xb353[25]](_0x8b2cx19[_0xb353[24]]),{include:[{model:FaxQueue,attributes:[_0xb353[28],_0xb353[45]]},{model:User,attributes:[_0xb353[28],_0xb353[45],_0xb353[46]]},{model:Interval,attributes:[_0xb353[28],_0xb353[45]]}]}))})[_0xb353[19]](function(_0x8b2cx1d){return _0x8b2cxe[_0xb353[14]]({count:_0x8b2cx1d[_0xb353[44]],rows:_0x8b2cx1d})})[_0xb353[23]](handleError(_0x8b2cxe))};exports[_0xb353[51]]= function(_0x8b2cx19,_0x8b2cxe,_0x8b2cx1c){return FaxApplication[_0xb353[54]](_0xb353[52],{where:{FaxAccountId:_0x8b2cx19[_0xb353[29]][_0xb353[28]]}})[_0xb353[19]](function(_0x8b2cx1e){_0x8b2cx19[_0xb353[38]][_0xb353[52]]= _0x8b2cx1e?++_0x8b2cx1e:1;_0x8b2cx19[_0xb353[38]][_0xb353[53]]= _0x8b2cx19[_0xb353[29]][_0xb353[28]];return FaxApplication[_0xb353[31]](_0x8b2cx19[_0xb353[38]])})[_0xb353[19]](responseWithResult(_0x8b2cxe,201))[_0xb353[23]](handleError(_0x8b2cxe))};exports[_0xb353[55]]= function(_0x8b2cx19,_0x8b2cxe){return FaxApplication[_0xb353[21]]({where:{id:_0x8b2cx19[_0xb353[24]][_0xb353[42]]},individualHooks:true})[_0xb353[19]](responseWithoutResult(_0x8b2cxe))[_0xb353[23]](handleError(_0x8b2cxe))};exports[_0xb353[56]]= function(_0x8b2cx19,_0x8b2cxe,_0x8b2cx1c){return FaxApplication[_0xb353[30]](_0x8b2cx19[_0xb353[29]][_0xb353[57]])[_0xb353[19]](handleEntityNotFound(_0x8b2cxe))[_0xb353[19]](removeEntity(_0x8b2cxe))[_0xb353[23]](handleError(_0x8b2cxe))};exports[_0xb353[58]]= function(_0x8b2cx19,_0x8b2cxe){var _0x8b2cx1f=0;var _0x8b2cx20=_0x8b2cx19[_0xb353[38]];_0x8b2cx20[_0xb353[61]](function(_0x8b2cx21){delete _0x8b2cx21[_0xb353[28]];delete _0x8b2cx21[_0xb353[59]];delete _0x8b2cx21[_0xb353[60]];_0x8b2cx21[_0xb353[52]]= ++_0x8b2cx1f});return sequelize[_0xb353[39]](function(_0x8b2cx1a){return FaxApplication[_0xb353[21]]({where:{FaxAccountId:_0x8b2cx19[_0xb353[29]][_0xb353[28]]},individualHooks:true,transaction:_0x8b2cx1a})[_0xb353[19]](function(_0x8b2cx22){return FaxApplication[_0xb353[62]](_0x8b2cx20,{individualHooks:true,transaction:_0x8b2cx1a})})})[_0xb353[19]](function(_0x8b2cx1d){return _0x8b2cxe[_0xb353[15]](200)[_0xb353[14]]({count:_0x8b2cx1d[_0xb353[44]],rows:_0x8b2cx1d})})[_0xb353[23]](handleError(_0x8b2cxe))};exports[_0xb353[63]]= function(_0x8b2cx19,_0x8b2cxe){if(_0x8b2cx19[_0xb353[38]][_0xb353[28]]){delete _0x8b2cx19[_0xb353[38]][_0xb353[28]]};return FaxApplication[_0xb353[30]](_0x8b2cx19[_0xb353[29]][_0xb353[57]])[_0xb353[19]](handleEntityNotFound(_0x8b2cxe))[_0xb353[19]](saveUpdates(_0x8b2cx19[_0xb353[38]]))[_0xb353[19]](responseWithResult(_0x8b2cxe))[_0xb353[23]](handleError(_0x8b2cxe))};exports[_0xb353[64]]= function(_0x8b2cx19,_0x8b2cxe){return FaxApplication[_0xb353[30]](_0x8b2cx19[_0xb353[29]][_0xb353[57]],{include:[{all:true}]})[_0xb353[19]](handleEntityNotFound(_0x8b2cxe))[_0xb353[19]](responseWithResult(_0x8b2cxe))[_0xb353[23]](handleError(_0x8b2cxe))};exports[_0xb353[65]]= function(_0x8b2cx19,_0x8b2cxe,_0x8b2cx1c){var _0x8b2cx23={where:{FaxAccountId:_0x8b2cx19[_0xb353[29]][_0xb353[28]],$and:[]},include:[],attributes:[_0xb353[28],_0xb353[66],_0xb353[67],_0xb353[68],_0xb353[69],_0xb353[60]]};if(_0x8b2cx19[_0xb353[24]]){if(_0x8b2cx19[_0xb353[24]][_0xb353[68]]){if(_[_0xb353[70]](_0x8b2cx19[_0xb353[24]][_0xb353[68]])){for(var _0x8b2cx24=0;_0x8b2cx24< _0x8b2cx19[_0xb353[24]][_0xb353[68]][_0xb353[44]];_0x8b2cx24++){_0x8b2cx23[_0xb353[74]][_0xb353[73]][_0xb353[72]]({tags:{$like:_0xb353[71]+ _0x8b2cx19[_0xb353[24]][_0xb353[68]][_0x8b2cx24]+ _0xb353[71]}})}}else {_0x8b2cx23[_0xb353[74]][_0xb353[73]][_0xb353[72]]({tags:{$like:_0xb353[71]+ _0x8b2cx19[_0xb353[24]][_0xb353[68]]+ _0xb353[71]}})};delete _0x8b2cx19[_0xb353[24]][_0xb353[68]]};_[_0xb353[47]](_0x8b2cx23[_0xb353[74]],_0x8b2cx19[_0xb353[24]])};switch(_0x8b2cx19[_0xb353[84]][_0xb353[87]]){case _0xb353[77]:_0x8b2cx23[_0xb353[75]][_0xb353[72]]({model:User,attributes:[_0xb353[28]]});var _0x8b2cx25;var _0x8b2cx26;var _0x8b2cx27;return User[_0xb353[30]](_0x8b2cx19[_0xb353[84]][_0xb353[28]])[_0xb353[19]](function(_0x8b2cx2b){if(_0x8b2cx2b){return _0x8b2cx2b[_0xb353[86]]()}else {return []}})[_0xb353[19]](function(_0x8b2cx2a){_0x8b2cx26= _[_0xb353[80]](_0x8b2cx2a,_0xb353[28]);return FaxAccount[_0xb353[30]](_0x8b2cx19[_0xb353[29]][_0xb353[28]])})[_0xb353[19]](function(_0x8b2cx29){return _0x8b2cx29[_0xb353[48]]({where:{$or:[{app:_0xb353[81]},{app:_0xb353[77]}]}})})[_0xb353[19]](function(_0x8b2cx20){_0x8b2cx25= _[_0xb353[80]](_[_0xb353[78]](_0x8b2cx20,{"\x61\x70\x70":_0xb353[77]}),_0xb353[79]);_0x8b2cx27= _[_0xb353[80]](_[_0xb353[78]](_0x8b2cx20,{"\x61\x70\x70":_0xb353[81]}),_0xb353[82]);if(_[_0xb353[83]](_0x8b2cx26,_0x8b2cx27)[_0xb353[44]]|| _[_0xb353[83]](_0x8b2cx25,[_0x8b2cx19[_0xb353[84]][_0xb353[28]]])[_0xb353[44]]){return FaxRoom[_0xb353[85]](_0x8b2cx23)[_0xb353[19]](function(_0x8b2cx28){return _0x8b2cxe[_0xb353[15]](200)[_0xb353[14]](_0x8b2cx28)})[_0xb353[23]](function(_0x8b2cx10){console[_0xb353[76]](_0x8b2cx10);return handleError(_0x8b2cxe,_0x8b2cx10)})}else {return _0x8b2cxe[_0xb353[15]](200)[_0xb353[14]]([])}})[_0xb353[23]](function(_0x8b2cx10){console[_0xb353[76]](_0x8b2cx10)});default:return FaxRoom[_0xb353[85]](_0x8b2cx23)[_0xb353[19]](function(_0x8b2cx28){return _0x8b2cxe[_0xb353[15]](200)[_0xb353[14]](_0x8b2cx28)})[_0xb353[23]](handleError(_0x8b2cxe))}};exports[_0xb353[88]]= function(_0x8b2cx19,_0x8b2cxe,_0x8b2cx1c){return FaxAccount[_0xb353[30]](_0x8b2cx19[_0xb353[29]][_0xb353[28]])[_0xb353[19]](handleEntityNotFound(_0x8b2cxe))[_0xb353[19]](function(_0x8b2cx1b){return _0x8b2cx1b[_0xb353[89]]()})[_0xb353[19]](function(_0x8b2cx2c){return _0x8b2cxe[_0xb353[15]](200)[_0xb353[14]]({rows:_0x8b2cx2c,count:_0x8b2cx2c[_0xb353[44]]})})[_0xb353[23]](handleError(_0x8b2cxe))};exports[_0xb353[90]]= function(_0x8b2cx19,_0x8b2cxe,_0x8b2cx1c){_0x8b2cx19[_0xb353[38]][_0xb353[53]]= _0x8b2cx19[_0xb353[29]][_0xb353[28]];return FaxDisposition[_0xb353[31]](_0x8b2cx19[_0xb353[38]])[_0xb353[19]](responseWithResult(_0x8b2cxe,201))[_0xb353[23]](handleError(_0x8b2cxe))};exports[_0xb353[91]]= function(_0x8b2cx19,_0x8b2cxe){if(_0x8b2cx19[_0xb353[38]][_0xb353[28]]){delete _0x8b2cx19[_0xb353[38]][_0xb353[28]]};return FaxDisposition[_0xb353[30]](_0x8b2cx19[_0xb353[29]][_0xb353[93]])[_0xb353[19]](handleEntityNotFound(_0x8b2cxe))[_0xb353[19]](function(_0x8b2cx2d){var _0x8b2cx17=_[_0xb353[47]](_0x8b2cx2d,_0x8b2cx19[_0xb353[38]]);return _0x8b2cx17[_0xb353[92]]()})[_0xb353[19]](responseWithResult(_0x8b2cxe,200))[_0xb353[23]](handleError(_0x8b2cxe))};exports[_0xb353[94]]= function(_0x8b2cx19,_0x8b2cxe,_0x8b2cx1c){return FaxDisposition[_0xb353[30]](_0x8b2cx19[_0xb353[29]][_0xb353[93]])[_0xb353[19]](handleEntityNotFound(_0x8b2cxe))[_0xb353[19]](function(_0x8b2cx2e){return _0x8b2cx2e[_0xb353[21]]()})[_0xb353[19]](responseWithoutResult(_0x8b2cxe,204))[_0xb353[23]](handleError(_0x8b2cxe))};exports[_0xb353[95]]= function(_0x8b2cx19,_0x8b2cxe,_0x8b2cx1c){_0x8b2cx19[_0xb353[38]][_0xb353[79]]= _0x8b2cx19[_0xb353[84]][_0xb353[28]];return FaxMessage[_0xb353[31]](_0x8b2cx19[_0xb353[38]],{include:[{model:FaxAttachment}],user:_0x8b2cx19[_0xb353[84]]})[_0xb353[19]](responseWithResult(_0x8b2cxe,201))[_0xb353[23]](handleError(_0x8b2cxe))} \ No newline at end of file diff --git a/server/api/fax_account/fax_account.events.js b/server/api/fax_account/fax_account.events.js index 076c9bc..82cd870 100644 --- a/server/api/fax_account/fax_account.events.js +++ b/server/api/fax_account/fax_account.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const FaxAccount = require('../../models').FaxAccount; - -var FaxAccountEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -FaxAccountEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - FaxAccount.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - FaxAccountEvents.emit(event + ':' + doc._id, doc); - FaxAccountEvents.emit(event, doc); - done(null); - } -} - -module.exports = FaxAccountEvents; +var _0xa33c=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x46\x61\x78\x41\x63\x63\x6F\x75\x6E\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xa33c[0];const EventEmitter=require(_0xa33c[1]);const FaxAccount=require(_0xa33c[3])[_0xa33c[2]];var FaxAccountEvents= new EventEmitter();FaxAccountEvents[_0xa33c[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xa33c[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xa33c[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xa33c[6]};for(var e in events){var event=events[e];FaxAccount[_0xa33c[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xcf30x8,_0xcf30x9,_0xcf30xa){FaxAccountEvents[_0xa33c[10]](event+ _0xa33c[8]+ _0xcf30x8[_0xa33c[9]],_0xcf30x8);FaxAccountEvents[_0xa33c[10]](event,_0xcf30x8);_0xcf30xa(null)}}module[_0xa33c[11]]= FaxAccountEvents \ No newline at end of file diff --git a/server/api/fax_account/fax_account.socket.js b/server/api/fax_account/fax_account.socket.js index 777c337..70252a3 100644 --- a/server/api/fax_account/fax_account.socket.js +++ b/server/api/fax_account/fax_account.socket.js @@ -1,28 +1 @@ -'use strict'; - -const FaxAccountEvents = require('./fax_account.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('fax_account:' + event, socket); - - FaxAccountEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - FaxAccountEvents.removeListener(event, listener); - }; -} +var _0x7f56=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x66\x61\x78\x5F\x61\x63\x63\x6F\x75\x6E\x74\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x66\x61\x78\x5F\x61\x63\x63\x6F\x75\x6E\x74\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x7f56[0];const FaxAccountEvents=require(_0x7f56[1]);var events=[_0x7f56[2],_0x7f56[3]];exports[_0x7f56[4]]= function(_0xbf04x3){for(var _0xbf04x4=0,_0xbf04x5=events[_0x7f56[5]];_0xbf04x4< _0xbf04x5;_0xbf04x4++){var _0xbf04x6=events[_0xbf04x4];var _0xbf04x7=createListener(_0x7f56[6]+ _0xbf04x6,_0xbf04x3);FaxAccountEvents[_0x7f56[7]](_0xbf04x6,_0xbf04x7);_0xbf04x3[_0x7f56[7]](_0x7f56[8],removeListener(_0xbf04x6,_0xbf04x7))}};function createListener(_0xbf04x6,_0xbf04x3){return function(_0xbf04x9){_0xbf04x3[_0x7f56[9]](_0xbf04x6,_0xbf04x9)}}function removeListener(_0xbf04x6,_0xbf04x7){return function(){FaxAccountEvents[_0x7f56[10]](_0xbf04x6,_0xbf04x7)}} \ No newline at end of file diff --git a/server/api/fax_account/index.js b/server/api/fax_account/index.js index 52e34bf..f2e4dfe 100644 --- a/server/api/fax_account/index.js +++ b/server/api/fax_account/index.js @@ -1,31 +1 @@ -'use strict'; - -var express = require('express'); - -var auth = require('../../auth/auth.service'); -var controller = require('./fax_account.controller'); -var license = require('../../config/license/license.service'); - -var router = express.Router(); - -router.get('/', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasModule([10], ['admin', 'agent']), controller.index); -router.get('/:id', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasModule([10], ['admin', 'agent']), controller.show); -router.get('/:id/applications', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasModule([10], ['admin']), controller.showApplications); -router.get('/:id/applications/:appId', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasModule([10], ['admin']), controller.showApplication); -router.get('/:id/rooms', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasModule([10], ['admin', 'agent']), controller.getFaxRooms); -router.get('/:id/dispositions', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasModule([10], ['admin', 'agent']), controller.getDispositions); -router.post('/', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasModule([10], ['admin']), controller.create); -router.post('/:id/applications', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasModule([10], ['admin']), controller.createApplication); -router.post('/:id/dispositions', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasModule([10], ['admin']), controller.createDisposition); -router.post('/:id/send', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasModule([10], ['admin', 'agent']), controller.sendMessage); -router.put('/:id', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasModule([10], ['admin']), controller.update); -router.put('/:id/applications', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasModule([10], ['admin']), controller.updateApplications); -router.put('/:id/applications/:appId', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasModule([10], ['admin']), controller.updateApplication); -router.put('/:id/dispositions/:dispId', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasModule([10], ['admin']), controller.updateDisposition); -router.delete('/', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasModule([10], ['admin']), controller.bulkDestroy); -router.delete('/:id', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasModule([10], ['admin']), controller.destroy); -router.delete('/:id/applications', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasModule([10], ['admin']), controller.bulkDestroyApplications); -router.delete('/:id/applications/:appId', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasModule([10], ['admin']), controller.destroyApplication); -router.delete('/:id/dispositions/:dispId', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasModule([10], ['admin']), controller.destroyDisposition); - -module.exports = router; +var _0x8f8f=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x66\x61\x78\x5F\x61\x63\x63\x6F\x75\x6E\x74\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x68\x61\x73\x46\x61\x78","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x2F\x3A\x69\x64\x2F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x73\x68\x6F\x77\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x2F\x3A\x69\x64\x2F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73\x2F\x3A\x61\x70\x70\x49\x64","\x73\x68\x6F\x77\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x2F\x3A\x69\x64\x2F\x72\x6F\x6F\x6D\x73","\x67\x65\x74\x46\x61\x78\x52\x6F\x6F\x6D\x73","\x2F\x3A\x69\x64\x2F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x73","\x67\x65\x74\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x73","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x63\x72\x65\x61\x74\x65\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x63\x72\x65\x61\x74\x65\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x2F\x3A\x69\x64\x2F\x73\x65\x6E\x64","\x73\x65\x6E\x64\x4D\x65\x73\x73\x61\x67\x65","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x75\x70\x64\x61\x74\x65\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x75\x70\x64\x61\x74\x65\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x2F\x3A\x69\x64\x2F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x73\x2F\x3A\x64\x69\x73\x70\x49\x64","\x75\x70\x64\x61\x74\x65\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x64\x65\x73\x74\x72\x6F\x79\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x64\x65\x73\x74\x72\x6F\x79\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x65\x78\x70\x6F\x72\x74\x73"];_0x8f8f[0];var express=require(_0x8f8f[1]);var auth=require(_0x8f8f[2]);var controller=require(_0x8f8f[3]);var license=require(_0x8f8f[4]);var router=express.Router();router[_0x8f8f[13]](_0x8f8f[5],license[_0x8f8f[6]](),license[_0x8f8f[7]](),auth[_0x8f8f[8]](),auth[_0x8f8f[11]]([10],[_0x8f8f[9],_0x8f8f[10]]),controller[_0x8f8f[12]]);router[_0x8f8f[13]](_0x8f8f[14],license[_0x8f8f[6]](),license[_0x8f8f[7]](),auth[_0x8f8f[8]](),auth[_0x8f8f[11]]([10],[_0x8f8f[9],_0x8f8f[10]]),controller[_0x8f8f[15]]);router[_0x8f8f[13]](_0x8f8f[16],license[_0x8f8f[6]](),license[_0x8f8f[7]](),auth[_0x8f8f[8]](),auth[_0x8f8f[11]]([10],[_0x8f8f[9]]),controller[_0x8f8f[17]]);router[_0x8f8f[13]](_0x8f8f[18],license[_0x8f8f[6]](),license[_0x8f8f[7]](),auth[_0x8f8f[8]](),auth[_0x8f8f[11]]([10],[_0x8f8f[9]]),controller[_0x8f8f[19]]);router[_0x8f8f[13]](_0x8f8f[20],license[_0x8f8f[6]](),license[_0x8f8f[7]](),auth[_0x8f8f[8]](),auth[_0x8f8f[11]]([10],[_0x8f8f[9],_0x8f8f[10]]),controller[_0x8f8f[21]]);router[_0x8f8f[13]](_0x8f8f[22],license[_0x8f8f[6]](),license[_0x8f8f[7]](),auth[_0x8f8f[8]](),auth[_0x8f8f[11]]([10],[_0x8f8f[9],_0x8f8f[10]]),controller[_0x8f8f[23]]);router[_0x8f8f[25]](_0x8f8f[5],license[_0x8f8f[6]](),license[_0x8f8f[7]](),auth[_0x8f8f[8]](),auth[_0x8f8f[11]]([10],[_0x8f8f[9]]),controller[_0x8f8f[24]]);router[_0x8f8f[25]](_0x8f8f[16],license[_0x8f8f[6]](),license[_0x8f8f[7]](),auth[_0x8f8f[8]](),auth[_0x8f8f[11]]([10],[_0x8f8f[9]]),controller[_0x8f8f[26]]);router[_0x8f8f[25]](_0x8f8f[22],license[_0x8f8f[6]](),license[_0x8f8f[7]](),auth[_0x8f8f[8]](),auth[_0x8f8f[11]]([10],[_0x8f8f[9]]),controller[_0x8f8f[27]]);router[_0x8f8f[25]](_0x8f8f[28],license[_0x8f8f[6]](),license[_0x8f8f[7]](),auth[_0x8f8f[8]](),auth[_0x8f8f[11]]([10],[_0x8f8f[9],_0x8f8f[10]]),controller[_0x8f8f[29]]);router[_0x8f8f[31]](_0x8f8f[14],license[_0x8f8f[6]](),license[_0x8f8f[7]](),auth[_0x8f8f[8]](),auth[_0x8f8f[11]]([10],[_0x8f8f[9]]),controller[_0x8f8f[30]]);router[_0x8f8f[31]](_0x8f8f[16],license[_0x8f8f[6]](),license[_0x8f8f[7]](),auth[_0x8f8f[8]](),auth[_0x8f8f[11]]([10],[_0x8f8f[9]]),controller[_0x8f8f[32]]);router[_0x8f8f[31]](_0x8f8f[18],license[_0x8f8f[6]](),license[_0x8f8f[7]](),auth[_0x8f8f[8]](),auth[_0x8f8f[11]]([10],[_0x8f8f[9]]),controller[_0x8f8f[33]]);router[_0x8f8f[31]](_0x8f8f[34],license[_0x8f8f[6]](),license[_0x8f8f[7]](),auth[_0x8f8f[8]](),auth[_0x8f8f[11]]([10],[_0x8f8f[9]]),controller[_0x8f8f[35]]);router[_0x8f8f[37]](_0x8f8f[5],license[_0x8f8f[6]](),license[_0x8f8f[7]](),auth[_0x8f8f[8]](),auth[_0x8f8f[11]]([10],[_0x8f8f[9]]),controller[_0x8f8f[36]]);router[_0x8f8f[37]](_0x8f8f[14],license[_0x8f8f[6]](),license[_0x8f8f[7]](),auth[_0x8f8f[8]](),auth[_0x8f8f[11]]([10],[_0x8f8f[9]]),controller[_0x8f8f[38]]);router[_0x8f8f[37]](_0x8f8f[16],license[_0x8f8f[6]](),license[_0x8f8f[7]](),auth[_0x8f8f[8]](),auth[_0x8f8f[11]]([10],[_0x8f8f[9]]),controller[_0x8f8f[39]]);router[_0x8f8f[37]](_0x8f8f[18],license[_0x8f8f[6]](),license[_0x8f8f[7]](),auth[_0x8f8f[8]](),auth[_0x8f8f[11]]([10],[_0x8f8f[9]]),controller[_0x8f8f[40]]);router[_0x8f8f[37]](_0x8f8f[34],license[_0x8f8f[6]](),license[_0x8f8f[7]](),auth[_0x8f8f[8]](),auth[_0x8f8f[11]]([10],[_0x8f8f[9]]),controller[_0x8f8f[41]]);module[_0x8f8f[42]]= router \ No newline at end of file diff --git a/server/api/fax_application/fax_application.controller.js b/server/api/fax_application/fax_application.controller.js index 59b09cb..7b96ba1 100644 --- a/server/api/fax_application/fax_application.controller.js +++ b/server/api/fax_application/fax_application.controller.js @@ -1,94 +1 @@ -'use strict'; -var _ = require('lodash'); -var FaxApplication = require('../../models').FaxApplication; -// Get list of fax_applications -exports.index = function(req, res) { - FaxApplication.findAll({ - where: req.query - }).then(function(fax_applications) { - return res.status(200).send(fax_applications); - }).catch(function(err) { - return handleError(res, err); - }); -}; -// Get a single fax_application -exports.show = function(req, res) { - FaxApplication.findById(req.params.id).then(function(fax_application) { - if (!fax_application) { - return res.sendStatus(404); - } - return res.send(fax_application); - }).catch(function(err) { - return handleError(res, err); - }); -}; -// Creates a new fax_application in the DB. -exports.create = function(req, res, next) { - console.log(req.body); - FaxApplication.max('priority', { - where: { - FaxAccountId: req.body.FaxAccountId - } - }).then(function(max) { - // SET PRIORITY - req.body.priority = max ? ++max : 1; - FaxApplication.create(req.body).then(function(faxApplication) { - return res.status(201).send(faxApplication); - }).catch(function(err) { - return next(err); - }); - console.log(max); - }).catch(function(err) { - next(err); - }); - // FaxApplication - // .create(req.body) - // .then(function(fax_application) { - // return res.status(201).send(fax_application); - // }) - // .catch(function(err) { - // return handleError(res, err); - // }); -}; -// Updates an existing fax_application in the DB. -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - FaxApplication.findById(req.params.id).then(function(fax_application) { - if (!fax_application) { - return res.sendStatus(404); - } - var updated = _.merge(fax_application, req.body); - updated.save().then(function() { - return res.status(200).send(fax_application); - }).catch(function(err) { - return handleError(res, err); - }); - }).catch(function(err) { - return handleError(res, err); - }); -}; -// Deletes a fax_application from the DB. -exports.destroy = function(req, res) { - FaxApplication.find({ - where: { - id: req.params.id - } - }).then(function(fax_application) { - if (!fax_application) { - return res.sendStatus(404); - } - fax_application.destroy().then(function() { - return res.sendStatus(204); - }).catch(function(err) { - return handleError(res, err); - }); - }).catch(function(err) { - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0x85b7=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x46\x61\x78\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x6C\x6F\x67","\x70\x72\x69\x6F\x72\x69\x74\x79","\x46\x61\x78\x41\x63\x63\x6F\x75\x6E\x74\x49\x64","\x6D\x61\x78","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x64\x65\x73\x74\x72\x6F\x79","\x66\x69\x6E\x64"];_0x85b7[0];var _=require(_0x85b7[1]);var FaxApplication=require(_0x85b7[3])[_0x85b7[2]];exports[_0x85b7[4]]= function(_0xf9a2x3,_0xf9a2x4){FaxApplication[_0x85b7[10]]({where:_0xf9a2x3[_0x85b7[9]]})[_0x85b7[8]](function(_0xf9a2x6){return _0xf9a2x4[_0x85b7[7]](200)[_0x85b7[6]](_0xf9a2x6)})[_0x85b7[5]](function(_0xf9a2x5){return handleError(_0xf9a2x4,_0xf9a2x5)})};exports[_0x85b7[11]]= function(_0xf9a2x3,_0xf9a2x4){FaxApplication[_0x85b7[15]](_0xf9a2x3[_0x85b7[14]][_0x85b7[13]])[_0x85b7[8]](function(_0xf9a2x7){if(!_0xf9a2x7){return _0xf9a2x4[_0x85b7[12]](404)};return _0xf9a2x4[_0x85b7[6]](_0xf9a2x7)})[_0x85b7[5]](function(_0xf9a2x5){return handleError(_0xf9a2x4,_0xf9a2x5)})};exports[_0x85b7[16]]= function(_0xf9a2x3,_0xf9a2x4,_0xf9a2x8){console[_0x85b7[18]](_0xf9a2x3[_0x85b7[17]]);FaxApplication[_0x85b7[21]](_0x85b7[19],{where:{FaxAccountId:_0xf9a2x3[_0x85b7[17]][_0x85b7[20]]}})[_0x85b7[8]](function(_0xf9a2x9){_0xf9a2x3[_0x85b7[17]][_0x85b7[19]]= _0xf9a2x9?++_0xf9a2x9:1;FaxApplication[_0x85b7[16]](_0xf9a2x3[_0x85b7[17]])[_0x85b7[8]](function(_0xf9a2xa){return _0xf9a2x4[_0x85b7[7]](201)[_0x85b7[6]](_0xf9a2xa)})[_0x85b7[5]](function(_0xf9a2x5){return _0xf9a2x8(_0xf9a2x5)});console[_0x85b7[18]](_0xf9a2x9)})[_0x85b7[5]](function(_0xf9a2x5){_0xf9a2x8(_0xf9a2x5)})};exports[_0x85b7[22]]= function(_0xf9a2x3,_0xf9a2x4){if(_0xf9a2x3[_0x85b7[17]][_0x85b7[13]]){delete _0xf9a2x3[_0x85b7[17]][_0x85b7[13]]};FaxApplication[_0x85b7[15]](_0xf9a2x3[_0x85b7[14]][_0x85b7[13]])[_0x85b7[8]](function(_0xf9a2x7){if(!_0xf9a2x7){return _0xf9a2x4[_0x85b7[12]](404)};var _0xf9a2xb=_[_0x85b7[23]](_0xf9a2x7,_0xf9a2x3[_0x85b7[17]]);_0xf9a2xb[_0x85b7[24]]()[_0x85b7[8]](function(){return _0xf9a2x4[_0x85b7[7]](200)[_0x85b7[6]](_0xf9a2x7)})[_0x85b7[5]](function(_0xf9a2x5){return handleError(_0xf9a2x4,_0xf9a2x5)})})[_0x85b7[5]](function(_0xf9a2x5){return handleError(_0xf9a2x4,_0xf9a2x5)})};exports[_0x85b7[25]]= function(_0xf9a2x3,_0xf9a2x4){FaxApplication[_0x85b7[26]]({where:{id:_0xf9a2x3[_0x85b7[14]][_0x85b7[13]]}})[_0x85b7[8]](function(_0xf9a2x7){if(!_0xf9a2x7){return _0xf9a2x4[_0x85b7[12]](404)};_0xf9a2x7[_0x85b7[25]]()[_0x85b7[8]](function(){return _0xf9a2x4[_0x85b7[12]](204)})[_0x85b7[5]](function(_0xf9a2x5){return handleError(_0xf9a2x4,_0xf9a2x5)})})[_0x85b7[5]](function(_0xf9a2x5){return handleError(_0xf9a2x4,_0xf9a2x5)})};function handleError(_0xf9a2x4,_0xf9a2x5){return _0xf9a2x4[_0x85b7[7]](500)[_0x85b7[6]](_0xf9a2x5)} \ No newline at end of file diff --git a/server/api/fax_application/fax_application.events.js b/server/api/fax_application/fax_application.events.js index 72f4dd0..c3a20af 100644 --- a/server/api/fax_application/fax_application.events.js +++ b/server/api/fax_application/fax_application.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const FaxApplication = require('../../models').FaxApplication; - -var FaxApplicationEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -FaxApplicationEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - FaxApplication.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - FaxApplicationEvents.emit(event + ':' + doc._id, doc); - FaxApplicationEvents.emit(event, doc); - done(null); - } -} - -module.exports = FaxApplicationEvents; +var _0x59ba=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x46\x61\x78\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x59ba[0];const EventEmitter=require(_0x59ba[1]);const FaxApplication=require(_0x59ba[3])[_0x59ba[2]];var FaxApplicationEvents= new EventEmitter();FaxApplicationEvents[_0x59ba[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x59ba[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x59ba[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x59ba[6]};for(var e in events){var event=events[e];FaxApplication[_0x59ba[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xab23x8,_0xab23x9,_0xab23xa){FaxApplicationEvents[_0x59ba[10]](event+ _0x59ba[8]+ _0xab23x8[_0x59ba[9]],_0xab23x8);FaxApplicationEvents[_0x59ba[10]](event,_0xab23x8);_0xab23xa(null)}}module[_0x59ba[11]]= FaxApplicationEvents \ No newline at end of file diff --git a/server/api/fax_application/fax_application.socket.js b/server/api/fax_application/fax_application.socket.js index ce03f3d..caa3302 100644 --- a/server/api/fax_application/fax_application.socket.js +++ b/server/api/fax_application/fax_application.socket.js @@ -1,28 +1 @@ -'use strict'; - -const FaxApplicationEvents = require('./fax_application.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('fax_application:' + event, socket); - - FaxApplicationEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - FaxApplicationEvents.removeListener(event, listener); - }; -} +var _0x5226=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x66\x61\x78\x5F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x66\x61\x78\x5F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x5226[0];const FaxApplicationEvents=require(_0x5226[1]);var events=[_0x5226[2],_0x5226[3]];exports[_0x5226[4]]= function(_0x6e0ex3){for(var _0x6e0ex4=0,_0x6e0ex5=events[_0x5226[5]];_0x6e0ex4< _0x6e0ex5;_0x6e0ex4++){var _0x6e0ex6=events[_0x6e0ex4];var _0x6e0ex7=createListener(_0x5226[6]+ _0x6e0ex6,_0x6e0ex3);FaxApplicationEvents[_0x5226[7]](_0x6e0ex6,_0x6e0ex7);_0x6e0ex3[_0x5226[7]](_0x5226[8],removeListener(_0x6e0ex6,_0x6e0ex7))}};function createListener(_0x6e0ex6,_0x6e0ex3){return function(_0x6e0ex9){_0x6e0ex3[_0x5226[9]](_0x6e0ex6,_0x6e0ex9)}}function removeListener(_0x6e0ex6,_0x6e0ex7){return function(){FaxApplicationEvents[_0x5226[10]](_0x6e0ex6,_0x6e0ex7)}} \ No newline at end of file diff --git a/server/api/fax_application/index.js b/server/api/fax_application/index.js index 91aae9d..4f02654 100644 --- a/server/api/fax_application/index.js +++ b/server/api/fax_application/index.js @@ -1,15 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./fax_application.controller'); -var auth = require('../../auth/auth.service'); -var license = require('../../config/license/license.service'); - -var router = express.Router(); - -router.get('/', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasModule([10], ['admin']), controller.index); -router.get('/:id', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasModule([10], ['admin']), controller.show); -router.post('/', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasModule([10], ['admin']), controller.create); -router.put('/:id', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasModule([10], ['admin']), controller.update); -router.delete('/:id', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasModule([10], ['admin']), controller.destroy); -module.exports = router; +var _0xf2f4=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x66\x61\x78\x5F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x68\x61\x73\x46\x61\x78","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0xf2f4[0];var express=require(_0xf2f4[1]);var controller=require(_0xf2f4[2]);var auth=require(_0xf2f4[3]);var license=require(_0xf2f4[4]);var router=express.Router();router[_0xf2f4[12]](_0xf2f4[5],license[_0xf2f4[6]](),license[_0xf2f4[7]](),auth[_0xf2f4[8]](),auth[_0xf2f4[10]]([10],[_0xf2f4[9]]),controller[_0xf2f4[11]]);router[_0xf2f4[12]](_0xf2f4[13],license[_0xf2f4[6]](),license[_0xf2f4[7]](),auth[_0xf2f4[8]](),auth[_0xf2f4[10]]([10],[_0xf2f4[9]]),controller[_0xf2f4[14]]);router[_0xf2f4[16]](_0xf2f4[5],license[_0xf2f4[6]](),license[_0xf2f4[7]](),auth[_0xf2f4[8]](),auth[_0xf2f4[10]]([10],[_0xf2f4[9]]),controller[_0xf2f4[15]]);router[_0xf2f4[18]](_0xf2f4[13],license[_0xf2f4[6]](),license[_0xf2f4[7]](),auth[_0xf2f4[8]](),auth[_0xf2f4[10]]([10],[_0xf2f4[9]]),controller[_0xf2f4[17]]);router[_0xf2f4[20]](_0xf2f4[13],license[_0xf2f4[6]](),license[_0xf2f4[7]](),auth[_0xf2f4[8]](),auth[_0xf2f4[10]]([10],[_0xf2f4[9]]),controller[_0xf2f4[19]]);module[_0xf2f4[21]]= router \ No newline at end of file diff --git a/server/api/fax_attachment/fax_attachment.controller.js b/server/api/fax_attachment/fax_attachment.controller.js index 39802ff..29454fa 100644 --- a/server/api/fax_attachment/fax_attachment.controller.js +++ b/server/api/fax_attachment/fax_attachment.controller.js @@ -1,140 +1 @@ -/** - * Using Rails-like standard naming convention for endpoints. - * GET /api/fax/attachments -> index - * POST /api/fax/attachments -> create - * GET /api/fax/attachments/:id -> show - * PUT /api/fax/attachments/:id -> update - * DELETE /api/fax/attachments/:id -> destroy - */ - -'use strict'; - - -var _ = require('lodash'); -var path = require('path'); -var Util = require('../../config/util'); -var formidable = require('formidable'); -var Promise = require('bluebird'); - -var config = require('../../config/environment'); -var FaxAttachment = require('../../models').FaxAttachment; - - -function handleError(res, statusCode) { - statusCode = statusCode || 500; - return function(err) { - res.status(statusCode).send(err); - }; -} - -function responseWithResult(res, statusCode) { - statusCode = statusCode || 200; - return function(entity) { - if (entity) { - res.status(statusCode).json(entity); - } - }; -} - -function responseWithoutResult(res, statusCode) { - statusCode = statusCode || 204; - return function() { - res.sendStatus(statusCode); - }; -} - -function handleEntityNotFound(res) { - return function(entity) { - if (!entity) { - res.status(404).end(); - return null; - } - return entity; - }; -} - -function saveUpdates(updates) { - return function(entity) { - return entity.updateAttributes(updates) - .then(function(updated) { - return updated; - }); - }; -} - -function removeEntity(res) { - return function(entity) { - if (entity) { - return entity.destroy() - .then(function() { - res.status(204).end(); - }); - } - }; -} - -// Gets a list of FaxAttachments -exports.index = function(req, res) { - return FaxAttachment.findAll(Util.getQuery(req.query)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Gets a single FaxAttachment from the DB -exports.show = function(req, res) { - return FaxAttachment.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(function(faxAttachment) { - return res.sendFile(faxAttachment.path); - }) - .catch(handleError(res)); -} - -// Creates a new FaxAttachment in the DB -exports.create = function(req, res) { - - var form = new formidable.IncomingForm(); - form.uploadDir = path.join(config.root, 'server', 'files', 'fax', 'outbound', 'original'); - form.keepExtensions = true; - form.multiples = true; - form.hash = true; - - form.parse(req, function(err, form, wrap) { - if (err) { - return res.status(500).send(err); - } - return res.status(201).send({ - path: wrap.file.path, - name: wrap.file.name, - basename: path.basename(wrap.file.path), - type: wrap.file.type - }); - }); - -} - -// Updates an existing FaxAttachment in the DB -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - return FaxAttachment.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(saveUpdates(req.body)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Deletes a FaxAttachment from the DB -exports.destroy = function(req, res) { - var unlink = Promise.promisify(require("fs").unlink); - var _path = path.join(config.root, 'server', 'files', 'fax', 'outbound', 'original', req.params.id); - - return unlink(_path) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -} +var _0x5b42=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x70\x61\x74\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x66\x6F\x72\x6D\x69\x64\x61\x62\x6C\x65","\x62\x6C\x75\x65\x62\x69\x72\x64","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x46\x61\x78\x41\x74\x74\x61\x63\x68\x6D\x65\x6E\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x6A\x73\x6F\x6E","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x65\x6E\x64","\x74\x68\x65\x6E","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x64\x65\x73\x74\x72\x6F\x79","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x46\x69\x6C\x65","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x75\x70\x6C\x6F\x61\x64\x44\x69\x72","\x72\x6F\x6F\x74","\x73\x65\x72\x76\x65\x72","\x66\x69\x6C\x65\x73","\x66\x61\x78","\x6F\x75\x74\x62\x6F\x75\x6E\x64","\x6F\x72\x69\x67\x69\x6E\x61\x6C","\x6A\x6F\x69\x6E","\x6B\x65\x65\x70\x45\x78\x74\x65\x6E\x73\x69\x6F\x6E\x73","\x6D\x75\x6C\x74\x69\x70\x6C\x65\x73","\x68\x61\x73\x68","\x66\x69\x6C\x65","\x6E\x61\x6D\x65","\x62\x61\x73\x65\x6E\x61\x6D\x65","\x74\x79\x70\x65","\x70\x61\x72\x73\x65","\x75\x70\x64\x61\x74\x65","\x62\x6F\x64\x79","\x75\x6E\x6C\x69\x6E\x6B","\x66\x73","\x70\x72\x6F\x6D\x69\x73\x69\x66\x79"];_0x5b42[0];var _=require(_0x5b42[1]);var path=require(_0x5b42[2]);var Util=require(_0x5b42[3]);var formidable=require(_0x5b42[4]);var Promise=require(_0x5b42[5]);var config=require(_0x5b42[6]);var FaxAttachment=require(_0x5b42[8])[_0x5b42[7]];function handleError(_0xc082x9,_0xc082xa){_0xc082xa= _0xc082xa|| 500;return function(_0xc082xb){_0xc082x9[_0x5b42[10]](_0xc082xa)[_0x5b42[9]](_0xc082xb)}}function responseWithResult(_0xc082x9,_0xc082xa){_0xc082xa= _0xc082xa|| 200;return function(_0xc082xd){if(_0xc082xd){_0xc082x9[_0x5b42[10]](_0xc082xa)[_0x5b42[11]](_0xc082xd)}}}function responseWithoutResult(_0xc082x9,_0xc082xa){_0xc082xa= _0xc082xa|| 204;return function(){_0xc082x9[_0x5b42[12]](_0xc082xa)}}function handleEntityNotFound(_0xc082x9){return function(_0xc082xd){if(!_0xc082xd){_0xc082x9[_0x5b42[10]](404)[_0x5b42[13]]();return null};return _0xc082xd}}function saveUpdates(_0xc082x11){return function(_0xc082xd){return _0xc082xd[_0x5b42[15]](_0xc082x11)[_0x5b42[14]](function(_0xc082x12){return _0xc082x12})}}function removeEntity(_0xc082x9){return function(_0xc082xd){if(_0xc082xd){return _0xc082xd[_0x5b42[16]]()[_0x5b42[14]](function(){_0xc082x9[_0x5b42[10]](204)[_0x5b42[13]]()})}}}exports[_0x5b42[17]]= function(_0xc082x14,_0xc082x9){return FaxAttachment[_0x5b42[21]](Util[_0x5b42[20]](_0xc082x14[_0x5b42[19]]))[_0x5b42[14]](responseWithResult(_0xc082x9))[_0x5b42[18]](handleError(_0xc082x9))};exports[_0x5b42[22]]= function(_0xc082x14,_0xc082x9){return FaxAttachment[_0x5b42[26]](_0xc082x14[_0x5b42[25]][_0x5b42[24]])[_0x5b42[14]](handleEntityNotFound(_0xc082x9))[_0x5b42[14]](function(_0xc082x15){return _0xc082x9[_0x5b42[23]](_0xc082x15[_0x5b42[2]])})[_0x5b42[18]](handleError(_0xc082x9))};exports[_0x5b42[27]]= function(_0xc082x14,_0xc082x9){var _0xc082x16= new formidable.IncomingForm();_0xc082x16[_0x5b42[28]]= path[_0x5b42[35]](config[_0x5b42[29]],_0x5b42[30],_0x5b42[31],_0x5b42[32],_0x5b42[33],_0x5b42[34]);_0xc082x16[_0x5b42[36]]= true;_0xc082x16[_0x5b42[37]]= true;_0xc082x16[_0x5b42[38]]= true;_0xc082x16[_0x5b42[43]](_0xc082x14,function(_0xc082xb,_0xc082x16,_0xc082x17){if(_0xc082xb){return _0xc082x9[_0x5b42[10]](500)[_0x5b42[9]](_0xc082xb)};return _0xc082x9[_0x5b42[10]](201)[_0x5b42[9]]({path:_0xc082x17[_0x5b42[39]][_0x5b42[2]],name:_0xc082x17[_0x5b42[39]][_0x5b42[40]],basename:path[_0x5b42[41]](_0xc082x17[_0x5b42[39]][_0x5b42[2]]),type:_0xc082x17[_0x5b42[39]][_0x5b42[42]]})})};exports[_0x5b42[44]]= function(_0xc082x14,_0xc082x9){if(_0xc082x14[_0x5b42[45]][_0x5b42[24]]){delete _0xc082x14[_0x5b42[45]][_0x5b42[24]]};return FaxAttachment[_0x5b42[26]](_0xc082x14[_0x5b42[25]][_0x5b42[24]])[_0x5b42[14]](handleEntityNotFound(_0xc082x9))[_0x5b42[14]](saveUpdates(_0xc082x14[_0x5b42[45]]))[_0x5b42[14]](responseWithResult(_0xc082x9))[_0x5b42[18]](handleError(_0xc082x9))};exports[_0x5b42[16]]= function(_0xc082x14,_0xc082x9){var _0xc082x18=Promise[_0x5b42[48]](require(_0x5b42[47])[_0x5b42[46]]);var _0xc082x19=path[_0x5b42[35]](config[_0x5b42[29]],_0x5b42[30],_0x5b42[31],_0x5b42[32],_0x5b42[33],_0x5b42[34],_0xc082x14[_0x5b42[25]][_0x5b42[24]]);return _0xc082x18(_0xc082x19)[_0x5b42[14]](function(){return _0xc082x9[_0x5b42[12]](204)})[_0x5b42[18]](function(_0xc082xb){return handleError(_0xc082x9,_0xc082xb)})} \ No newline at end of file diff --git a/server/api/fax_attachment/fax_attachment.events.js b/server/api/fax_attachment/fax_attachment.events.js index 173e113..99b3ed4 100644 --- a/server/api/fax_attachment/fax_attachment.events.js +++ b/server/api/fax_attachment/fax_attachment.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const FaxAttachment = require('../../models').FaxAttachment; - -var FaxAttachmentEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -FaxAttachmentEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - FaxAttachment.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - FaxAttachmentEvents.emit(event + ':' + doc._id, doc); - FaxAttachmentEvents.emit(event, doc); - done(null); - } -} - -module.exports = FaxAttachmentEvents; +var _0xe87e=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x46\x61\x78\x41\x74\x74\x61\x63\x68\x6D\x65\x6E\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xe87e[0];const EventEmitter=require(_0xe87e[1]);const FaxAttachment=require(_0xe87e[3])[_0xe87e[2]];var FaxAttachmentEvents= new EventEmitter();FaxAttachmentEvents[_0xe87e[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xe87e[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xe87e[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xe87e[6]};for(var e in events){var event=events[e];FaxAttachment[_0xe87e[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x5700x8,_0x5700x9,_0x5700xa){FaxAttachmentEvents[_0xe87e[10]](event+ _0xe87e[8]+ _0x5700x8[_0xe87e[9]],_0x5700x8);FaxAttachmentEvents[_0xe87e[10]](event,_0x5700x8);_0x5700xa(null)}}module[_0xe87e[11]]= FaxAttachmentEvents \ No newline at end of file diff --git a/server/api/fax_attachment/fax_attachment.socket.js b/server/api/fax_attachment/fax_attachment.socket.js index ab07da6..222fac7 100644 --- a/server/api/fax_attachment/fax_attachment.socket.js +++ b/server/api/fax_attachment/fax_attachment.socket.js @@ -1,28 +1 @@ -'use strict'; - -const FaxAttachmentEvents = require('./fax_attachment.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('fax_attachment:' + event, socket); - - FaxAttachmentEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - FaxAttachmentEvents.removeListener(event, listener); - }; -} +var _0x3d98=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x66\x61\x78\x5F\x61\x74\x74\x61\x63\x68\x6D\x65\x6E\x74\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x66\x61\x78\x5F\x61\x74\x74\x61\x63\x68\x6D\x65\x6E\x74\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x3d98[0];const FaxAttachmentEvents=require(_0x3d98[1]);var events=[_0x3d98[2],_0x3d98[3]];exports[_0x3d98[4]]= function(_0x1beax3){for(var _0x1beax4=0,_0x1beax5=events[_0x3d98[5]];_0x1beax4< _0x1beax5;_0x1beax4++){var _0x1beax6=events[_0x1beax4];var _0x1beax7=createListener(_0x3d98[6]+ _0x1beax6,_0x1beax3);FaxAttachmentEvents[_0x3d98[7]](_0x1beax6,_0x1beax7);_0x1beax3[_0x3d98[7]](_0x3d98[8],removeListener(_0x1beax6,_0x1beax7))}};function createListener(_0x1beax6,_0x1beax3){return function(_0x1beax9){_0x1beax3[_0x3d98[9]](_0x1beax6,_0x1beax9)}}function removeListener(_0x1beax6,_0x1beax7){return function(){FaxAttachmentEvents[_0x3d98[10]](_0x1beax6,_0x1beax7)}} \ No newline at end of file diff --git a/server/api/fax_attachment/index.js b/server/api/fax_attachment/index.js index 9dd6190..92c2221 100644 --- a/server/api/fax_attachment/index.js +++ b/server/api/fax_attachment/index.js @@ -1,16 +1 @@ -'use strict'; - -var express = require('express'); - -var auth = require('../../auth/auth.service'); -var controller = require('./fax_attachment.controller'); -var license = require('../../config/license/license.service'); - -var router = express.Router(); - -router.get('/', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasModule([10], ['admin', 'agent']), controller.index); -router.get('/:id', license.isValidDate(), license.hasFax(), controller.show); -router.post('/', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasModule([10], ['admin', 'agent']), controller.create); -router.put('/:id', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasModule([10], ['admin', 'agent']), controller.update); -router.delete('/:id', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasModule([10], ['admin', 'agent']), controller.destroy); -module.exports = router; +var _0x2607=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x66\x61\x78\x5F\x61\x74\x74\x61\x63\x68\x6D\x65\x6E\x74\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x68\x61\x73\x46\x61\x78","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0x2607[0];var express=require(_0x2607[1]);var auth=require(_0x2607[2]);var controller=require(_0x2607[3]);var license=require(_0x2607[4]);var router=express.Router();router[_0x2607[13]](_0x2607[5],license[_0x2607[6]](),license[_0x2607[7]](),auth[_0x2607[8]](),auth[_0x2607[11]]([10],[_0x2607[9],_0x2607[10]]),controller[_0x2607[12]]);router[_0x2607[13]](_0x2607[14],license[_0x2607[6]](),license[_0x2607[7]](),controller[_0x2607[15]]);router[_0x2607[17]](_0x2607[5],license[_0x2607[6]](),license[_0x2607[7]](),auth[_0x2607[8]](),auth[_0x2607[11]]([10],[_0x2607[9],_0x2607[10]]),controller[_0x2607[16]]);router[_0x2607[19]](_0x2607[14],license[_0x2607[6]](),license[_0x2607[7]](),auth[_0x2607[8]](),auth[_0x2607[11]]([10],[_0x2607[9],_0x2607[10]]),controller[_0x2607[18]]);router[_0x2607[21]](_0x2607[14],license[_0x2607[6]](),license[_0x2607[7]](),auth[_0x2607[8]](),auth[_0x2607[11]]([10],[_0x2607[9],_0x2607[10]]),controller[_0x2607[20]]);module[_0x2607[22]]= router \ No newline at end of file diff --git a/server/api/fax_disposition/fax_disposition.controller.js b/server/api/fax_disposition/fax_disposition.controller.js index c3dcbb7..32bed8e 100644 --- a/server/api/fax_disposition/fax_disposition.controller.js +++ b/server/api/fax_disposition/fax_disposition.controller.js @@ -1,112 +1 @@ -/** - * Using Rails-like standard naming convention for endpoints. - * GET /api/fax/dispositions -> index - * POST /api/fax/dispositions -> create - * GET /api/fax/dispositions/:id -> show - * PUT /api/fax/dispositions/:id -> update - * DELETE /api/fax/dispositions/:id -> destroy - */ - -'use strict'; - - -var _ = require('lodash'); -var Util = require('../../config/util'); - -var FaxDisposition = require('../../models').FaxDisposition; - - -function handleError(res, statusCode) { - statusCode = statusCode || 500; - return function(err) { - res.status(statusCode).send(err); - }; -} - -function responseWithResult(res, statusCode) { - statusCode = statusCode || 200; - return function(entity) { - if (entity) { - res.status(statusCode).json(entity); - } - }; -} - -function responseWithoutResult(res, statusCode) { - statusCode = statusCode || 204; - return function() { - res.sendStatus(statusCode); - }; -} - -function handleEntityNotFound(res) { - return function(entity) { - if (!entity) { - res.status(404).end(); - return null; - } - return entity; - }; -} - -function saveUpdates(updates) { - return function(entity) { - return entity.updateAttributes(updates) - .then(function(updated) { - return updated; - }); - }; -} - -function removeEntity(res) { - return function(entity) { - if (entity) { - return entity.destroy() - .then(function() { - res.status(204).end(); - }); - } - }; -} - -// Gets a list of FaxDispositions -exports.index = function(req, res) { - return FaxDisposition.findAll(Util.getQuery(req.query)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Gets a single FaxDisposition from the DB -exports.show = function(req, res) { - return FaxDisposition.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Creates a new FaxDisposition in the DB -exports.create = function(req, res) { - return FaxDisposition.create(req.body) - .then(responseWithResult(res, 201)) - .catch(handleError(res)); -} - -// Updates an existing FaxDisposition in the DB -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - return FaxDisposition.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(saveUpdates(req.body)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Deletes a FaxDisposition from the DB -exports.destroy = function(req, res) { - return FaxDisposition.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(removeEntity(res)) - .catch(handleError(res)); -} +var _0xd724=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x46\x61\x78\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x6A\x73\x6F\x6E","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x65\x6E\x64","\x74\x68\x65\x6E","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x64\x65\x73\x74\x72\x6F\x79","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x68\x6F\x77","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65"];_0xd724[0];var _=require(_0xd724[1]);var Util=require(_0xd724[2]);var FaxDisposition=require(_0xd724[4])[_0xd724[3]];function handleError(_0x1b2fx5,_0x1b2fx6){_0x1b2fx6= _0x1b2fx6|| 500;return function(_0x1b2fx7){_0x1b2fx5[_0xd724[6]](_0x1b2fx6)[_0xd724[5]](_0x1b2fx7)}}function responseWithResult(_0x1b2fx5,_0x1b2fx6){_0x1b2fx6= _0x1b2fx6|| 200;return function(_0x1b2fx9){if(_0x1b2fx9){_0x1b2fx5[_0xd724[6]](_0x1b2fx6)[_0xd724[7]](_0x1b2fx9)}}}function responseWithoutResult(_0x1b2fx5,_0x1b2fx6){_0x1b2fx6= _0x1b2fx6|| 204;return function(){_0x1b2fx5[_0xd724[8]](_0x1b2fx6)}}function handleEntityNotFound(_0x1b2fx5){return function(_0x1b2fx9){if(!_0x1b2fx9){_0x1b2fx5[_0xd724[6]](404)[_0xd724[9]]();return null};return _0x1b2fx9}}function saveUpdates(_0x1b2fxd){return function(_0x1b2fx9){return _0x1b2fx9[_0xd724[11]](_0x1b2fxd)[_0xd724[10]](function(_0x1b2fxe){return _0x1b2fxe})}}function removeEntity(_0x1b2fx5){return function(_0x1b2fx9){if(_0x1b2fx9){return _0x1b2fx9[_0xd724[12]]()[_0xd724[10]](function(){_0x1b2fx5[_0xd724[6]](204)[_0xd724[9]]()})}}}exports[_0xd724[13]]= function(_0x1b2fx10,_0x1b2fx5){return FaxDisposition[_0xd724[17]](Util[_0xd724[16]](_0x1b2fx10[_0xd724[15]]))[_0xd724[10]](responseWithResult(_0x1b2fx5))[_0xd724[14]](handleError(_0x1b2fx5))};exports[_0xd724[18]]= function(_0x1b2fx10,_0x1b2fx5){return FaxDisposition[_0xd724[21]](_0x1b2fx10[_0xd724[20]][_0xd724[19]])[_0xd724[10]](handleEntityNotFound(_0x1b2fx5))[_0xd724[10]](responseWithResult(_0x1b2fx5))[_0xd724[14]](handleError(_0x1b2fx5))};exports[_0xd724[22]]= function(_0x1b2fx10,_0x1b2fx5){return FaxDisposition[_0xd724[22]](_0x1b2fx10[_0xd724[23]])[_0xd724[10]](responseWithResult(_0x1b2fx5,201))[_0xd724[14]](handleError(_0x1b2fx5))};exports[_0xd724[24]]= function(_0x1b2fx10,_0x1b2fx5){if(_0x1b2fx10[_0xd724[23]][_0xd724[19]]){delete _0x1b2fx10[_0xd724[23]][_0xd724[19]]};return FaxDisposition[_0xd724[21]](_0x1b2fx10[_0xd724[20]][_0xd724[19]])[_0xd724[10]](handleEntityNotFound(_0x1b2fx5))[_0xd724[10]](saveUpdates(_0x1b2fx10[_0xd724[23]]))[_0xd724[10]](responseWithResult(_0x1b2fx5))[_0xd724[14]](handleError(_0x1b2fx5))};exports[_0xd724[12]]= function(_0x1b2fx10,_0x1b2fx5){return FaxDisposition[_0xd724[21]](_0x1b2fx10[_0xd724[20]][_0xd724[19]])[_0xd724[10]](handleEntityNotFound(_0x1b2fx5))[_0xd724[10]](removeEntity(_0x1b2fx5))[_0xd724[14]](handleError(_0x1b2fx5))} \ No newline at end of file diff --git a/server/api/fax_disposition/fax_disposition.events.js b/server/api/fax_disposition/fax_disposition.events.js index ea2756f..5efd7f7 100644 --- a/server/api/fax_disposition/fax_disposition.events.js +++ b/server/api/fax_disposition/fax_disposition.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const FaxDisposition = require('../../models').FaxDisposition; - -var FaxDispositionEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -FaxDispositionEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - FaxDisposition.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - FaxDispositionEvents.emit(event + ':' + doc._id, doc); - FaxDispositionEvents.emit(event, doc); - done(null); - } -} - -module.exports = FaxDispositionEvents; +var _0x2909=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x46\x61\x78\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x2909[0];const EventEmitter=require(_0x2909[1]);const FaxDisposition=require(_0x2909[3])[_0x2909[2]];var FaxDispositionEvents= new EventEmitter();FaxDispositionEvents[_0x2909[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x2909[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x2909[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x2909[6]};for(var e in events){var event=events[e];FaxDisposition[_0x2909[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xce7bx8,_0xce7bx9,_0xce7bxa){FaxDispositionEvents[_0x2909[10]](event+ _0x2909[8]+ _0xce7bx8[_0x2909[9]],_0xce7bx8);FaxDispositionEvents[_0x2909[10]](event,_0xce7bx8);_0xce7bxa(null)}}module[_0x2909[11]]= FaxDispositionEvents \ No newline at end of file diff --git a/server/api/fax_disposition/fax_disposition.socket.js b/server/api/fax_disposition/fax_disposition.socket.js index 42f6297..ecf3f58 100644 --- a/server/api/fax_disposition/fax_disposition.socket.js +++ b/server/api/fax_disposition/fax_disposition.socket.js @@ -1,28 +1 @@ -'use strict'; - -const FaxDispositionEvents = require('./fax_disposition.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('fax_disposition:' + event, socket); - - FaxDispositionEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - FaxDispositionEvents.removeListener(event, listener); - }; -} +var _0xfca0=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x66\x61\x78\x5F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x66\x61\x78\x5F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xfca0[0];const FaxDispositionEvents=require(_0xfca0[1]);var events=[_0xfca0[2],_0xfca0[3]];exports[_0xfca0[4]]= function(_0xdbf4x3){for(var _0xdbf4x4=0,_0xdbf4x5=events[_0xfca0[5]];_0xdbf4x4< _0xdbf4x5;_0xdbf4x4++){var _0xdbf4x6=events[_0xdbf4x4];var _0xdbf4x7=createListener(_0xfca0[6]+ _0xdbf4x6,_0xdbf4x3);FaxDispositionEvents[_0xfca0[7]](_0xdbf4x6,_0xdbf4x7);_0xdbf4x3[_0xfca0[7]](_0xfca0[8],removeListener(_0xdbf4x6,_0xdbf4x7))}};function createListener(_0xdbf4x6,_0xdbf4x3){return function(_0xdbf4x9){_0xdbf4x3[_0xfca0[9]](_0xdbf4x6,_0xdbf4x9)}}function removeListener(_0xdbf4x6,_0xdbf4x7){return function(){FaxDispositionEvents[_0xfca0[10]](_0xdbf4x6,_0xdbf4x7)}} \ No newline at end of file diff --git a/server/api/fax_disposition/index.js b/server/api/fax_disposition/index.js index 2e61ead..f3c4999 100644 --- a/server/api/fax_disposition/index.js +++ b/server/api/fax_disposition/index.js @@ -1,16 +1 @@ -'use strict'; - -var express = require('express'); -var auth = require('../../auth/auth.service'); -var controller = require('./fax_disposition.controller'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), controller.index); -router.get('/:id', auth.isAuthenticated(), controller.show); -router.post('/', auth.isAuthenticated(), controller.create); -router.put('/:id', auth.isAuthenticated(), controller.update); -router.patch('/:id', auth.isAuthenticated(), controller.update); -router.delete('/:id', auth.isAuthenticated(), controller.destroy); - -module.exports = router; +var _0x53a3=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x66\x61\x78\x5F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x70\x61\x74\x63\x68","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0x53a3[0];var express=require(_0x53a3[1]);var auth=require(_0x53a3[2]);var controller=require(_0x53a3[3]);var router=express.Router();router[_0x53a3[7]](_0x53a3[4],auth[_0x53a3[5]](),controller[_0x53a3[6]]);router[_0x53a3[7]](_0x53a3[8],auth[_0x53a3[5]](),controller[_0x53a3[9]]);router[_0x53a3[11]](_0x53a3[4],auth[_0x53a3[5]](),controller[_0x53a3[10]]);router[_0x53a3[13]](_0x53a3[8],auth[_0x53a3[5]](),controller[_0x53a3[12]]);router[_0x53a3[14]](_0x53a3[8],auth[_0x53a3[5]](),controller[_0x53a3[12]]);router[_0x53a3[16]](_0x53a3[8],auth[_0x53a3[5]](),controller[_0x53a3[15]]);module[_0x53a3[17]]= router \ No newline at end of file diff --git a/server/api/fax_message/fax_message.ami.js b/server/api/fax_message/fax_message.ami.js index 8bb89b2..b8202f5 100644 --- a/server/api/fax_message/fax_message.ami.js +++ b/server/api/fax_message/fax_message.ami.js @@ -1,64 +1 @@ -'use strict'; - -var _ = require('lodash'); -var util = require('util'); - -var FaxMessage = require('../../models').FaxMessage; -var Trunk = require('../../models').User; - -exports.register = function(ami) { - - FaxMessage.afterCreate(function(doc) { - console.log('FaxMessage afterCreate'); - // onSave(ami, doc); - }); -}; - -function onSave(ami, doc, cb) { - if (doc.status === 'NOT SENT' && !doc.actionid) { - // I have to send the fax with the Originate - var faxBody = JSON.parse(doc.body); - console.log('faxBody', faxBody); - - Trunk - .findById(faxBody.trunk.id) - .then(function(trunk) { - var action = { - Action: 'originate', - CallerID: faxBody.from, - Channel: util.format('%s/%s@%s', faxBody.technology, faxBody.to, trunk.name), - Context: 'outbound-fax', - Exten: 's', - Priority: 1, - Async: 'true', - Variable: { - MAXRATE: faxBody.maxrate, - MINRATE: faxBody.minrate, - ECM: faxBody.ecm ? 'yes' : 'no', - LOCALID: faxBody.fax_localid, - FAXFILE: faxBody.fax_file, - // 'FAXFILE': 'test.tiff', // Scommentare se si fanno prove in locale! - FAXHEADER: faxBody.fax_header, - FAXUUID: faxBody.uuid - } - }; - - ami.action(action, function(err, res) { - if (err) { - doc.updateAttributes({ - status: 'FAILED' - }); - } else { - if (res.response && res.actionid) { - doc.updateAttributes({ - actionid: res.actionid - }); - } - } - }); - }) - .catch(function(err) { - console.error(err); - }); - } -} +var _0x55a2=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x75\x74\x69\x6C","\x46\x61\x78\x4D\x65\x73\x73\x61\x67\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x55\x73\x65\x72","\x72\x65\x67\x69\x73\x74\x65\x72","\x46\x61\x78\x4D\x65\x73\x73\x61\x67\x65\x20\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x6C\x6F\x67","\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x73\x74\x61\x74\x75\x73","\x4E\x4F\x54\x20\x53\x45\x4E\x54","\x61\x63\x74\x69\x6F\x6E\x69\x64","\x62\x6F\x64\x79","\x70\x61\x72\x73\x65","\x66\x61\x78\x42\x6F\x64\x79","\x65\x72\x72\x6F\x72","\x63\x61\x74\x63\x68","\x6F\x72\x69\x67\x69\x6E\x61\x74\x65","\x66\x72\x6F\x6D","\x25\x73\x2F\x25\x73\x40\x25\x73","\x74\x65\x63\x68\x6E\x6F\x6C\x6F\x67\x79","\x74\x6F","\x6E\x61\x6D\x65","\x66\x6F\x72\x6D\x61\x74","\x6F\x75\x74\x62\x6F\x75\x6E\x64\x2D\x66\x61\x78","\x73","\x74\x72\x75\x65","\x6D\x61\x78\x72\x61\x74\x65","\x6D\x69\x6E\x72\x61\x74\x65","\x65\x63\x6D","\x79\x65\x73","\x6E\x6F","\x66\x61\x78\x5F\x6C\x6F\x63\x61\x6C\x69\x64","\x66\x61\x78\x5F\x66\x69\x6C\x65","\x66\x61\x78\x5F\x68\x65\x61\x64\x65\x72","\x75\x75\x69\x64","\x46\x41\x49\x4C\x45\x44","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x72\x65\x73\x70\x6F\x6E\x73\x65","\x61\x63\x74\x69\x6F\x6E","\x74\x68\x65\x6E","\x69\x64","\x74\x72\x75\x6E\x6B","\x66\x69\x6E\x64\x42\x79\x49\x64"];_0x55a2[0];var _=require(_0x55a2[1]);var util=require(_0x55a2[2]);var FaxMessage=require(_0x55a2[4])[_0x55a2[3]];var Trunk=require(_0x55a2[4])[_0x55a2[5]];exports[_0x55a2[6]]= function(_0x66bax5){FaxMessage[_0x55a2[9]](function(_0x66bax6){console[_0x55a2[8]](_0x55a2[7])})};function onSave(_0x66bax5,_0x66bax6,_0x66bax8){if(_0x66bax6[_0x55a2[10]]=== _0x55a2[11]&& !_0x66bax6[_0x55a2[12]]){var _0x66bax9=JSON[_0x55a2[14]](_0x66bax6[_0x55a2[13]]);console[_0x55a2[8]](_0x55a2[15],_0x66bax9);Trunk[_0x55a2[44]](_0x66bax9[_0x55a2[43]][_0x55a2[42]])[_0x55a2[41]](function(_0x66baxb){var _0x66baxc={Action:_0x55a2[18],CallerID:_0x66bax9[_0x55a2[19]],Channel:util[_0x55a2[24]](_0x55a2[20],_0x66bax9[_0x55a2[21]],_0x66bax9[_0x55a2[22]],_0x66baxb[_0x55a2[23]]),Context:_0x55a2[25],Exten:_0x55a2[26],Priority:1,Async:_0x55a2[27],Variable:{MAXRATE:_0x66bax9[_0x55a2[28]],MINRATE:_0x66bax9[_0x55a2[29]],ECM:_0x66bax9[_0x55a2[30]]?_0x55a2[31]:_0x55a2[32],LOCALID:_0x66bax9[_0x55a2[33]],FAXFILE:_0x66bax9[_0x55a2[34]],FAXHEADER:_0x66bax9[_0x55a2[35]],FAXUUID:_0x66bax9[_0x55a2[36]]}};_0x66bax5[_0x55a2[40]](_0x66baxc,function(_0x66baxa,_0x66baxd){if(_0x66baxa){_0x66bax6[_0x55a2[38]]({status:_0x55a2[37]})}else {if(_0x66baxd[_0x55a2[39]]&& _0x66baxd[_0x55a2[12]]){_0x66bax6[_0x55a2[38]]({actionid:_0x66baxd[_0x55a2[12]]})}}})})[_0x55a2[17]](function(_0x66baxa){console[_0x55a2[16]](_0x66baxa)})}} \ No newline at end of file diff --git a/server/api/fax_message/fax_message.controller.js b/server/api/fax_message/fax_message.controller.js index 39fa261..1d7348f 100644 --- a/server/api/fax_message/fax_message.controller.js +++ b/server/api/fax_message/fax_message.controller.js @@ -1,175 +1 @@ -'use strict'; - -var _ = require('lodash'); -var fs = require('fs'); -var path = require('path'); -var uploadFile = require('upload-file'); -var uuidLib = require('node-uuid'); -var pdf = require('html-pdf'); -// var spindrift = require('spindrift'); -var formidable = require('formidable'); -var exec = require('child_process').exec; -var config = require('../../config/environment'); - -var FaxMessage = require('../../models').FaxMessage; -var FaxAttachment = require('../../models').FaxAttachment; -var FaxRoom = require('../../models').FaxRoom; -var FaxAccount = require('../../models').FaxAccount; -var FaxAttachment = require('../../models').FaxAttachment; -var User = require('../../models').User; - -// Get list of fax_message -exports.index = function(req, res, next) { - var params = { - order: 'createdAt DESC', - include: [{ - all: true, - include: [{ - all: true - }] - }] - }; - - switch (req.user.role) { - case 'admin': - params.where = req.query; - break; - case 'agent': - break; - default: - } - - return FaxMessage - .findAll(params) - .then(function(fax_message) { - return res.status(200).send(fax_message); - }) - .catch(function(err) { - return handleError(res, err, next); - }); -}; - -exports.describe = function(req, res) { - return FaxMessage - .describe() - .then(function(fields) { - return res.status(200).send(fields); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get a single faxMessage -exports.show = function(req, res, next) { - return FaxMessage - .findById(req.params.id, { - include: [{ - model: FaxAttachment - }, { - model: User, - attributes: ['id', 'name', 'fullname', 'email'] - }] - }) - .then(function(faxMessage) { - if (!faxMessage) { - return res.sendStatus(404); - } - return res.send(faxMessage); - }) - .catch(function(err) { - return handleError(res, err, next); - }); -}; - -// Creates a new faxMessage in the DB. -exports.create = function(req, res, next) { - req.body.UserId = req.user.id; - req.body.text = req.body.text; - - return FaxMessage - .create(req.body, { - include: [{ - model: FaxAttachment - }] - }) - .then(function(faxMessage) { - return res.status(201).send(faxMessage); - }).catch(function(err) { - return handleError(res, err); - }); -}; - -// Updates an existing faxMessage in the DB. -exports.update = function(req, res, next) { - return FaxMessage - .findById(req.params.id, { - include: [{ - all: true - }] - }) - .then(function(faxMessage) { - if (!faxMessage) { - return res.sendStatus(404); - } - return faxMessage.updateAttributes(req.body, { - user: req.user - }); - }) - .then(function(updated) { - return res.status(200).send(updated); - }) - .catch(function(err) { - return handleError(res, err, next); - }); -}; - -// Deletes a faxMessage from the DB. -exports.destroy = function(req, res, next) { - return FaxMessage - .findById(req.params.id) - .then(function(faxMessage) { - if (!faxMessage) { - return res.sendStatus(404); - } - return faxMessage - .destroy(); - }).then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err, next); - }); -}; - -// Deletes a faxMessage from the DB. -exports.bulkDelete = function(req, res, next) { - return FaxMessage - .bulkUpdate({ - where: { - id: { - $in: req.body.id - } - }, - attributes: { - directory: 'TRASH' - } - }) - .then(function(faxMessage) { - if (!faxMessage) { - return res.sendStatus(404); - } - return faxMessage - .destroy(); - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err, next); - }); -}; - -function handleError(res, err, next) { - return res.status(500).send(err); -} +var _0xca9d=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x66\x73","\x70\x61\x74\x68","\x75\x70\x6C\x6F\x61\x64\x2D\x66\x69\x6C\x65","\x6E\x6F\x64\x65\x2D\x75\x75\x69\x64","\x68\x74\x6D\x6C\x2D\x70\x64\x66","\x66\x6F\x72\x6D\x69\x64\x61\x62\x6C\x65","\x65\x78\x65\x63","\x63\x68\x69\x6C\x64\x5F\x70\x72\x6F\x63\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x46\x61\x78\x4D\x65\x73\x73\x61\x67\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x46\x61\x78\x41\x74\x74\x61\x63\x68\x6D\x65\x6E\x74","\x46\x61\x78\x52\x6F\x6F\x6D","\x46\x61\x78\x41\x63\x63\x6F\x75\x6E\x74","\x55\x73\x65\x72","\x69\x6E\x64\x65\x78","\x63\x72\x65\x61\x74\x65\x64\x41\x74\x20\x44\x45\x53\x43","\x77\x68\x65\x72\x65","\x71\x75\x65\x72\x79","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x72\x6F\x6C\x65","\x75\x73\x65\x72","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x66\x69\x6E\x64\x41\x6C\x6C","\x64\x65\x73\x63\x72\x69\x62\x65","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x6E\x61\x6D\x65","\x66\x75\x6C\x6C\x6E\x61\x6D\x65","\x65\x6D\x61\x69\x6C","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x55\x73\x65\x72\x49\x64","\x62\x6F\x64\x79","\x74\x65\x78\x74","\x75\x70\x64\x61\x74\x65","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x64\x65\x73\x74\x72\x6F\x79","\x62\x75\x6C\x6B\x44\x65\x6C\x65\x74\x65","\x54\x52\x41\x53\x48","\x62\x75\x6C\x6B\x55\x70\x64\x61\x74\x65"];_0xca9d[0];var _=require(_0xca9d[1]);var fs=require(_0xca9d[2]);var path=require(_0xca9d[3]);var uploadFile=require(_0xca9d[4]);var uuidLib=require(_0xca9d[5]);var pdf=require(_0xca9d[6]);var formidable=require(_0xca9d[7]);var exec=require(_0xca9d[9])[_0xca9d[8]];var config=require(_0xca9d[10]);var FaxMessage=require(_0xca9d[12])[_0xca9d[11]];var FaxAttachment=require(_0xca9d[12])[_0xca9d[13]];var FaxRoom=require(_0xca9d[12])[_0xca9d[14]];var FaxAccount=require(_0xca9d[12])[_0xca9d[15]];var FaxAttachment=require(_0xca9d[12])[_0xca9d[13]];var User=require(_0xca9d[12])[_0xca9d[16]];exports[_0xca9d[17]]= function(_0xd472xf,_0xd472x10,_0xd472x11){var _0xd472x12={order:_0xca9d[18],include:[{all:true,include:[{all:true}]}]};switch(_0xd472xf[_0xca9d[24]][_0xca9d[23]]){case _0xca9d[21]:_0xd472x12[_0xca9d[19]]= _0xd472xf[_0xca9d[20]];break;case _0xca9d[22]:break;default:};return FaxMessage[_0xca9d[29]](_0xd472x12)[_0xca9d[28]](function(_0xd472x14){return _0xd472x10[_0xca9d[27]](200)[_0xca9d[26]](_0xd472x14)})[_0xca9d[25]](function(_0xd472x13){return handleError(_0xd472x10,_0xd472x13,_0xd472x11)})};exports[_0xca9d[30]]= function(_0xd472xf,_0xd472x10){return FaxMessage[_0xca9d[30]]()[_0xca9d[28]](function(_0xd472x15){return _0xd472x10[_0xca9d[27]](200)[_0xca9d[26]](_0xd472x15)})[_0xca9d[25]](function(_0xd472x13){return handleError(_0xd472x10,_0xd472x13)})};exports[_0xca9d[31]]= function(_0xd472xf,_0xd472x10,_0xd472x11){return FaxMessage[_0xca9d[38]](_0xd472xf[_0xca9d[34]][_0xca9d[33]],{include:[{model:FaxAttachment},{model:User,attributes:[_0xca9d[33],_0xca9d[35],_0xca9d[36],_0xca9d[37]]}]})[_0xca9d[28]](function(_0xd472x16){if(!_0xd472x16){return _0xd472x10[_0xca9d[32]](404)};return _0xd472x10[_0xca9d[26]](_0xd472x16)})[_0xca9d[25]](function(_0xd472x13){return handleError(_0xd472x10,_0xd472x13,_0xd472x11)})};exports[_0xca9d[39]]= function(_0xd472xf,_0xd472x10,_0xd472x11){_0xd472xf[_0xca9d[41]][_0xca9d[40]]= _0xd472xf[_0xca9d[24]][_0xca9d[33]];_0xd472xf[_0xca9d[41]][_0xca9d[42]]= _0xd472xf[_0xca9d[41]][_0xca9d[42]];return FaxMessage[_0xca9d[39]](_0xd472xf[_0xca9d[41]],{include:[{model:FaxAttachment}]})[_0xca9d[28]](function(_0xd472x16){return _0xd472x10[_0xca9d[27]](201)[_0xca9d[26]](_0xd472x16)})[_0xca9d[25]](function(_0xd472x13){return handleError(_0xd472x10,_0xd472x13)})};exports[_0xca9d[43]]= function(_0xd472xf,_0xd472x10,_0xd472x11){return FaxMessage[_0xca9d[38]](_0xd472xf[_0xca9d[34]][_0xca9d[33]],{include:[{all:true}]})[_0xca9d[28]](function(_0xd472x16){if(!_0xd472x16){return _0xd472x10[_0xca9d[32]](404)};return _0xd472x16[_0xca9d[44]](_0xd472xf[_0xca9d[41]],{user:_0xd472xf[_0xca9d[24]]})})[_0xca9d[28]](function(_0xd472x17){return _0xd472x10[_0xca9d[27]](200)[_0xca9d[26]](_0xd472x17)})[_0xca9d[25]](function(_0xd472x13){return handleError(_0xd472x10,_0xd472x13,_0xd472x11)})};exports[_0xca9d[45]]= function(_0xd472xf,_0xd472x10,_0xd472x11){return FaxMessage[_0xca9d[38]](_0xd472xf[_0xca9d[34]][_0xca9d[33]])[_0xca9d[28]](function(_0xd472x16){if(!_0xd472x16){return _0xd472x10[_0xca9d[32]](404)};return _0xd472x16[_0xca9d[45]]()})[_0xca9d[28]](function(){return _0xd472x10[_0xca9d[32]](204)})[_0xca9d[25]](function(_0xd472x13){return handleError(_0xd472x10,_0xd472x13,_0xd472x11)})};exports[_0xca9d[46]]= function(_0xd472xf,_0xd472x10,_0xd472x11){return FaxMessage[_0xca9d[48]]({where:{id:{$in:_0xd472xf[_0xca9d[41]][_0xca9d[33]]}},attributes:{directory:_0xca9d[47]}})[_0xca9d[28]](function(_0xd472x16){if(!_0xd472x16){return _0xd472x10[_0xca9d[32]](404)};return _0xd472x16[_0xca9d[45]]()})[_0xca9d[28]](function(){return _0xd472x10[_0xca9d[32]](204)})[_0xca9d[25]](function(_0xd472x13){return handleError(_0xd472x10,_0xd472x13,_0xd472x11)})};function handleError(_0xd472x10,_0xd472x13,_0xd472x11){return _0xd472x10[_0xca9d[27]](500)[_0xca9d[26]](_0xd472x13)} \ No newline at end of file diff --git a/server/api/fax_message/fax_message.events.js b/server/api/fax_message/fax_message.events.js index ca98ec2..dd8ca74 100644 --- a/server/api/fax_message/fax_message.events.js +++ b/server/api/fax_message/fax_message.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const FaxMessage = require('../../models').FaxMessage; - -var FaxMessageEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -FaxMessageEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - FaxMessage.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - FaxMessageEvents.emit(event + ':' + doc._id, doc); - FaxMessageEvents.emit(event, doc); - done(null); - } -} - -module.exports = FaxMessageEvents; +var _0x1f4c=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x46\x61\x78\x4D\x65\x73\x73\x61\x67\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x1f4c[0];const EventEmitter=require(_0x1f4c[1]);const FaxMessage=require(_0x1f4c[3])[_0x1f4c[2]];var FaxMessageEvents= new EventEmitter();FaxMessageEvents[_0x1f4c[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x1f4c[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x1f4c[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x1f4c[6]};for(var e in events){var event=events[e];FaxMessage[_0x1f4c[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xe432x8,_0xe432x9,_0xe432xa){FaxMessageEvents[_0x1f4c[10]](event+ _0x1f4c[8]+ _0xe432x8[_0x1f4c[9]],_0xe432x8);FaxMessageEvents[_0x1f4c[10]](event,_0xe432x8);_0xe432xa(null)}}module[_0x1f4c[11]]= FaxMessageEvents \ No newline at end of file diff --git a/server/api/fax_message/fax_message.socket.js b/server/api/fax_message/fax_message.socket.js index fc70af3..5766ee6 100644 --- a/server/api/fax_message/fax_message.socket.js +++ b/server/api/fax_message/fax_message.socket.js @@ -1,28 +1 @@ -'use strict'; - -const FaxMessageEvents = require('./fax_message.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('fax_message:' + event, socket); - - FaxMessageEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - FaxMessageEvents.removeListener(event, listener); - }; -} +var _0x49f4=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x66\x61\x78\x5F\x6D\x65\x73\x73\x61\x67\x65\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x66\x61\x78\x5F\x6D\x65\x73\x73\x61\x67\x65\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x49f4[0];const FaxMessageEvents=require(_0x49f4[1]);var events=[_0x49f4[2],_0x49f4[3]];exports[_0x49f4[4]]= function(_0x85b8x3){for(var _0x85b8x4=0,_0x85b8x5=events[_0x49f4[5]];_0x85b8x4< _0x85b8x5;_0x85b8x4++){var _0x85b8x6=events[_0x85b8x4];var _0x85b8x7=createListener(_0x49f4[6]+ _0x85b8x6,_0x85b8x3);FaxMessageEvents[_0x49f4[7]](_0x85b8x6,_0x85b8x7);_0x85b8x3[_0x49f4[7]](_0x49f4[8],removeListener(_0x85b8x6,_0x85b8x7))}};function createListener(_0x85b8x6,_0x85b8x3){return function(_0x85b8x9){_0x85b8x3[_0x49f4[9]](_0x85b8x6,_0x85b8x9)}}function removeListener(_0x85b8x6,_0x85b8x7){return function(){FaxMessageEvents[_0x49f4[10]](_0x85b8x6,_0x85b8x7)}} \ No newline at end of file diff --git a/server/api/fax_message/index.js b/server/api/fax_message/index.js index 60e36a1..0bf99e5 100644 --- a/server/api/fax_message/index.js +++ b/server/api/fax_message/index.js @@ -1,30 +1 @@ -'use strict'; - -var express = require('express'); - -var controller = require('./fax_message.controller'); -var auth = require('../../auth/auth.service'); -var license = require('../../config/license/license.service'); - -var router = express.Router(); - -// router.get('/', controller.index); -// router.get('/:id/content', controller.getContentFromMessage); -// router.get('/:id', controller.show); -// router.post('/', controller.create); -// router.put('/:id', controller.update); -// router.patch('/:id', controller.update); -// router.delete('/:id', controller.destroy); - -router.get('/', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasModule([10], ['admin', 'agent']), controller.index); -router.get('/describe', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasModule([10], ['admin']), controller.describe); -router.get('/:id', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasModule([10], ['admin', 'agent']), controller.show); -router.post('/', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasModule([10], ['admin', 'agent']), controller.create); -router.put('/', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasModule([10], ['admin', 'agent']), controller.update); -router.put('/delete/bulk', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasModule([10], ['admin']), controller.bulkDelete); -router.put('/delete/:id', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasModule([10], ['admin']), controller.update); -router.put('/:id', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasModule([10], ['admin', 'agent']), controller.update); -router.delete('/:id', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasModule([10], ['admin']), controller.destroy); - - -module.exports = router; +var _0x4620=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x66\x61\x78\x5F\x6D\x65\x73\x73\x61\x67\x65\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x68\x61\x73\x46\x61\x78","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x64\x65\x73\x63\x72\x69\x62\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x2F\x64\x65\x6C\x65\x74\x65\x2F\x62\x75\x6C\x6B","\x62\x75\x6C\x6B\x44\x65\x6C\x65\x74\x65","\x2F\x64\x65\x6C\x65\x74\x65\x2F\x3A\x69\x64","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0x4620[0];var express=require(_0x4620[1]);var controller=require(_0x4620[2]);var auth=require(_0x4620[3]);var license=require(_0x4620[4]);var router=express.Router();router[_0x4620[13]](_0x4620[5],license[_0x4620[6]](),license[_0x4620[7]](),auth[_0x4620[8]](),auth[_0x4620[11]]([10],[_0x4620[9],_0x4620[10]]),controller[_0x4620[12]]);router[_0x4620[13]](_0x4620[14],license[_0x4620[6]](),license[_0x4620[7]](),auth[_0x4620[8]](),auth[_0x4620[11]]([10],[_0x4620[9]]),controller[_0x4620[15]]);router[_0x4620[13]](_0x4620[16],license[_0x4620[6]](),license[_0x4620[7]](),auth[_0x4620[8]](),auth[_0x4620[11]]([10],[_0x4620[9],_0x4620[10]]),controller[_0x4620[17]]);router[_0x4620[19]](_0x4620[5],license[_0x4620[6]](),license[_0x4620[7]](),auth[_0x4620[8]](),auth[_0x4620[11]]([10],[_0x4620[9],_0x4620[10]]),controller[_0x4620[18]]);router[_0x4620[21]](_0x4620[5],license[_0x4620[6]](),license[_0x4620[7]](),auth[_0x4620[8]](),auth[_0x4620[11]]([10],[_0x4620[9],_0x4620[10]]),controller[_0x4620[20]]);router[_0x4620[21]](_0x4620[22],license[_0x4620[6]](),license[_0x4620[7]](),auth[_0x4620[8]](),auth[_0x4620[11]]([10],[_0x4620[9]]),controller[_0x4620[23]]);router[_0x4620[21]](_0x4620[24],license[_0x4620[6]](),license[_0x4620[7]](),auth[_0x4620[8]](),auth[_0x4620[11]]([10],[_0x4620[9]]),controller[_0x4620[20]]);router[_0x4620[21]](_0x4620[16],license[_0x4620[6]](),license[_0x4620[7]](),auth[_0x4620[8]](),auth[_0x4620[11]]([10],[_0x4620[9],_0x4620[10]]),controller[_0x4620[20]]);router[_0x4620[26]](_0x4620[16],license[_0x4620[6]](),license[_0x4620[7]](),auth[_0x4620[8]](),auth[_0x4620[11]]([10],[_0x4620[9]]),controller[_0x4620[25]]);module[_0x4620[27]]= router \ No newline at end of file diff --git a/server/api/fax_queue/fax_queue.controller.js b/server/api/fax_queue/fax_queue.controller.js index 682bc1f..264b5d5 100644 --- a/server/api/fax_queue/fax_queue.controller.js +++ b/server/api/fax_queue/fax_queue.controller.js @@ -1,213 +1 @@ -'use strict'; - -var _ = require('lodash'); -var Util = require('../../config/util'); - -var User = require('../../models').User; -var FaxQueue = require('../../models').FaxQueue; -var UserHasFaxQueue = require('../../models').UserHasFaxQueue; - -// Get list of fax_queues -exports.index = function(req, res) { - switch (req.user.role) { - case 'user': - return User - .findById(req.user.id, { - attributes: ['id'] - }) - .then(Util.getFaxQueuesIdByUser(req.query)) - .then(function(result) { - res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); - - default: - return FaxQueue - .findAndCountAll(Util.getQuery(req.query)) - .then(function(result) { - res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); - } -}; - -// Get a single fax_queue -exports.show = function(req, res) { - return FaxQueue - .findById(req.params.id) - .then(function(fax_queue) { - if (!fax_queue) { - return res.sendStatus(404); - } - return res.send(fax_queue); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Creates a new fax_queue in the DB. -exports.create = function(req, res) { - var _faxQueue; - - return FaxQueue - .create(req.body) - .then(function(faxQueue) { - _faxQueue = faxQueue; - - if (req.body.agents) { - return _faxQueue - .addUsers(req.body.agents, { - penalty: req.body.penalty || 0, - queue: _faxQueue.name - }); - } - }) - .then(function() { - return res.status(201).send(_faxQueue); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Updates an existing fax_queue in the DB. -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - return FaxQueue - .findById(req.params.id) - .then(function(fax_queue) { - if (!fax_queue) { - return res.sendStatus(404); - } - var updated = _.merge(fax_queue, req.body); - return updated.save(); - }) - .then(function(fax_queue) { - return res.status(200).send(fax_queue); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes a fax_queue from the DB. -exports.destroy = function(req, res) { - return FaxQueue - .findById(req.params.id) - .then(function(fax_queue) { - if (!fax_queue) { - return res.sendStatus(404); - } - return fax_queue.destroy(); - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.addAgents = function(req, res, next) { - - return FaxQueue - .findById(req.params.id) - .then(function(faxQueue) { - if (!faxQueue) { - return res.sendStatus(404); - } - var userHasFaxQueues = _.map(req.body.agents, function(agent) { - return { - UserId: agent, - penalty: req.body.penalty, - FaxQueueId: faxQueue.id, - queue: faxQueue.name - }; - }); - - return UserHasFaxQueue - .bulkCreate(userHasFaxQueues, { - individualHooks: true - }); - }) - .then(function() { - return res.sendStatus(200); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.showAgents = function(req, res) { - return FaxQueue - .findById(req.params.id) - .then(function(queue) { - if (!queue) { - return res.sendStatus(404); - } - return queue - .getUsers({ - where: { - role: 'agent' - }, - attributes: ['id', 'name', 'fullname', 'email'] - }); - }) - .then(function(agents) { - return res.status(200).send({ - rows: agents, - count: agents.length - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.removeAgents = function(req, res, next) { - return FaxQueue - .findById(req.params.id) - .then(function(queue) { - if (!queue) { - return res.sendStatus(404); - } - return queue - .removeUsers(req.query.agents, { - individualHooks: true - }); - }) - .then(function() { - return res.sendStatus(202); - }) - .catch(function(err) { - return next(err); - }); -}; - -// Deletes a agent from the DB. -exports.bulkDestroy = function(req, res) { - return FaxQueue - .destroy({ - where: { - id: req.query.ids - }, - individualHooks: true - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0x854f=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x55\x73\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x46\x61\x78\x51\x75\x65\x75\x65","\x55\x73\x65\x72\x48\x61\x73\x46\x61\x78\x51\x75\x65\x75\x65","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x46\x61\x78\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x69\x64","\x75\x73\x65\x72","\x66\x69\x6E\x64\x42\x79\x49\x64","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x72\x6F\x6C\x65","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x70\x61\x72\x61\x6D\x73","\x63\x72\x65\x61\x74\x65","\x61\x67\x65\x6E\x74\x73","\x62\x6F\x64\x79","\x70\x65\x6E\x61\x6C\x74\x79","\x6E\x61\x6D\x65","\x61\x64\x64\x55\x73\x65\x72\x73","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x64\x65\x73\x74\x72\x6F\x79","\x61\x64\x64\x41\x67\x65\x6E\x74\x73","\x6D\x61\x70","\x62\x75\x6C\x6B\x43\x72\x65\x61\x74\x65","\x73\x68\x6F\x77\x41\x67\x65\x6E\x74\x73","\x6C\x65\x6E\x67\x74\x68","\x61\x67\x65\x6E\x74","\x66\x75\x6C\x6C\x6E\x61\x6D\x65","\x65\x6D\x61\x69\x6C","\x67\x65\x74\x55\x73\x65\x72\x73","\x72\x65\x6D\x6F\x76\x65\x41\x67\x65\x6E\x74\x73","\x72\x65\x6D\x6F\x76\x65\x55\x73\x65\x72\x73","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73"];_0x854f[0];var _=require(_0x854f[1]);var Util=require(_0x854f[2]);var User=require(_0x854f[4])[_0x854f[3]];var FaxQueue=require(_0x854f[4])[_0x854f[5]];var UserHasFaxQueue=require(_0x854f[4])[_0x854f[6]];exports[_0x854f[7]]= function(_0xe0cax6,_0xe0cax7){switch(_0xe0cax6[_0x854f[15]][_0x854f[19]]){case _0x854f[15]:return User[_0x854f[16]](_0xe0cax6[_0x854f[15]][_0x854f[14]],{attributes:[_0x854f[14]]})[_0x854f[11]](Util[_0x854f[13]](_0xe0cax6[_0x854f[12]]))[_0x854f[11]](function(_0xe0cax9){_0xe0cax7[_0x854f[10]](200)[_0x854f[9]](_0xe0cax9)})[_0x854f[8]](function(_0xe0cax8){return handleError(_0xe0cax7,_0xe0cax8)});default:return FaxQueue[_0x854f[18]](Util[_0x854f[17]](_0xe0cax6[_0x854f[12]]))[_0x854f[11]](function(_0xe0cax9){_0xe0cax7[_0x854f[10]](200)[_0x854f[9]](_0xe0cax9)})[_0x854f[8]](function(_0xe0cax8){return handleError(_0xe0cax7,_0xe0cax8)})}};exports[_0x854f[20]]= function(_0xe0cax6,_0xe0cax7){return FaxQueue[_0x854f[16]](_0xe0cax6[_0x854f[22]][_0x854f[14]])[_0x854f[11]](function(_0xe0caxa){if(!_0xe0caxa){return _0xe0cax7[_0x854f[21]](404)};return _0xe0cax7[_0x854f[9]](_0xe0caxa)})[_0x854f[8]](function(_0xe0cax8){return handleError(_0xe0cax7,_0xe0cax8)})};exports[_0x854f[23]]= function(_0xe0cax6,_0xe0cax7){var _0xe0caxb;return FaxQueue[_0x854f[23]](_0xe0cax6[_0x854f[25]])[_0x854f[11]](function(_0xe0caxc){_0xe0caxb= _0xe0caxc;if(_0xe0cax6[_0x854f[25]][_0x854f[24]]){return _0xe0caxb[_0x854f[28]](_0xe0cax6[_0x854f[25]][_0x854f[24]],{penalty:_0xe0cax6[_0x854f[25]][_0x854f[26]]|| 0,queue:_0xe0caxb[_0x854f[27]]})}})[_0x854f[11]](function(){return _0xe0cax7[_0x854f[10]](201)[_0x854f[9]](_0xe0caxb)})[_0x854f[8]](function(_0xe0cax8){return handleError(_0xe0cax7,_0xe0cax8)})};exports[_0x854f[29]]= function(_0xe0cax6,_0xe0cax7){if(_0xe0cax6[_0x854f[25]][_0x854f[14]]){delete _0xe0cax6[_0x854f[25]][_0x854f[14]]};return FaxQueue[_0x854f[16]](_0xe0cax6[_0x854f[22]][_0x854f[14]])[_0x854f[11]](function(_0xe0caxa){if(!_0xe0caxa){return _0xe0cax7[_0x854f[21]](404)};var _0xe0caxd=_[_0x854f[30]](_0xe0caxa,_0xe0cax6[_0x854f[25]]);return _0xe0caxd[_0x854f[31]]()})[_0x854f[11]](function(_0xe0caxa){return _0xe0cax7[_0x854f[10]](200)[_0x854f[9]](_0xe0caxa)})[_0x854f[8]](function(_0xe0cax8){return handleError(_0xe0cax7,_0xe0cax8)})};exports[_0x854f[32]]= function(_0xe0cax6,_0xe0cax7){return FaxQueue[_0x854f[16]](_0xe0cax6[_0x854f[22]][_0x854f[14]])[_0x854f[11]](function(_0xe0caxa){if(!_0xe0caxa){return _0xe0cax7[_0x854f[21]](404)};return _0xe0caxa[_0x854f[32]]()})[_0x854f[11]](function(){return _0xe0cax7[_0x854f[21]](204)})[_0x854f[8]](function(_0xe0cax8){return handleError(_0xe0cax7,_0xe0cax8)})};exports[_0x854f[33]]= function(_0xe0cax6,_0xe0cax7,_0xe0caxe){return FaxQueue[_0x854f[16]](_0xe0cax6[_0x854f[22]][_0x854f[14]])[_0x854f[11]](function(_0xe0caxc){if(!_0xe0caxc){return _0xe0cax7[_0x854f[21]](404)};var _0xe0caxf=_[_0x854f[34]](_0xe0cax6[_0x854f[25]][_0x854f[24]],function(_0xe0cax10){return {UserId:_0xe0cax10,penalty:_0xe0cax6[_0x854f[25]][_0x854f[26]],FaxQueueId:_0xe0caxc[_0x854f[14]],queue:_0xe0caxc[_0x854f[27]]}});return UserHasFaxQueue[_0x854f[35]](_0xe0caxf,{individualHooks:true})})[_0x854f[11]](function(){return _0xe0cax7[_0x854f[21]](200)})[_0x854f[8]](function(_0xe0cax8){return handleError(_0xe0cax7,_0xe0cax8)})};exports[_0x854f[36]]= function(_0xe0cax6,_0xe0cax7){return FaxQueue[_0x854f[16]](_0xe0cax6[_0x854f[22]][_0x854f[14]])[_0x854f[11]](function(_0xe0cax12){if(!_0xe0cax12){return _0xe0cax7[_0x854f[21]](404)};return _0xe0cax12[_0x854f[41]]({where:{role:_0x854f[38]},attributes:[_0x854f[14],_0x854f[27],_0x854f[39],_0x854f[40]]})})[_0x854f[11]](function(_0xe0cax11){return _0xe0cax7[_0x854f[10]](200)[_0x854f[9]]({rows:_0xe0cax11,count:_0xe0cax11[_0x854f[37]]})})[_0x854f[8]](function(_0xe0cax8){return handleError(_0xe0cax7,_0xe0cax8)})};exports[_0x854f[42]]= function(_0xe0cax6,_0xe0cax7,_0xe0caxe){return FaxQueue[_0x854f[16]](_0xe0cax6[_0x854f[22]][_0x854f[14]])[_0x854f[11]](function(_0xe0cax12){if(!_0xe0cax12){return _0xe0cax7[_0x854f[21]](404)};return _0xe0cax12[_0x854f[43]](_0xe0cax6[_0x854f[12]][_0x854f[24]],{individualHooks:true})})[_0x854f[11]](function(){return _0xe0cax7[_0x854f[21]](202)})[_0x854f[8]](function(_0xe0cax8){return _0xe0caxe(_0xe0cax8)})};exports[_0x854f[44]]= function(_0xe0cax6,_0xe0cax7){return FaxQueue[_0x854f[32]]({where:{id:_0xe0cax6[_0x854f[12]][_0x854f[45]]},individualHooks:true})[_0x854f[11]](function(){return _0xe0cax7[_0x854f[21]](204)})[_0x854f[8]](function(_0xe0cax8){return handleError(_0xe0cax7,_0xe0cax8)})};function handleError(_0xe0cax7,_0xe0cax8){return _0xe0cax7[_0x854f[10]](500)[_0x854f[9]](_0xe0cax8)} \ No newline at end of file diff --git a/server/api/fax_queue/fax_queue.events.js b/server/api/fax_queue/fax_queue.events.js index a65c990..fa0cd5e 100644 --- a/server/api/fax_queue/fax_queue.events.js +++ b/server/api/fax_queue/fax_queue.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const FaxQueue = require('../../models').FaxQueue; - -var FaxQueueEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -FaxQueueEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - FaxQueue.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - FaxQueueEvents.emit(event + ':' + doc._id, doc); - FaxQueueEvents.emit(event, doc); - done(null); - } -} - -module.exports = FaxQueueEvents; +var _0xd659=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x46\x61\x78\x51\x75\x65\x75\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xd659[0];const EventEmitter=require(_0xd659[1]);const FaxQueue=require(_0xd659[3])[_0xd659[2]];var FaxQueueEvents= new EventEmitter();FaxQueueEvents[_0xd659[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xd659[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xd659[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xd659[6]};for(var e in events){var event=events[e];FaxQueue[_0xd659[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x3e0ex8,_0x3e0ex9,_0x3e0exa){FaxQueueEvents[_0xd659[10]](event+ _0xd659[8]+ _0x3e0ex8[_0xd659[9]],_0x3e0ex8);FaxQueueEvents[_0xd659[10]](event,_0x3e0ex8);_0x3e0exa(null)}}module[_0xd659[11]]= FaxQueueEvents \ No newline at end of file diff --git a/server/api/fax_queue/fax_queue.socket.js b/server/api/fax_queue/fax_queue.socket.js index 8d589ab..79eb8eb 100644 --- a/server/api/fax_queue/fax_queue.socket.js +++ b/server/api/fax_queue/fax_queue.socket.js @@ -1,28 +1 @@ -'use strict'; - -const FaxQueueEvents = require('./fax_queue.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('fax_queue:' + event, socket); - - FaxQueueEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - FaxQueueEvents.removeListener(event, listener); - }; -} +var _0x1e6d=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x66\x61\x78\x5F\x71\x75\x65\x75\x65\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x66\x61\x78\x5F\x71\x75\x65\x75\x65\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x1e6d[0];const FaxQueueEvents=require(_0x1e6d[1]);var events=[_0x1e6d[2],_0x1e6d[3]];exports[_0x1e6d[4]]= function(_0x6a14x3){for(var _0x6a14x4=0,_0x6a14x5=events[_0x1e6d[5]];_0x6a14x4< _0x6a14x5;_0x6a14x4++){var _0x6a14x6=events[_0x6a14x4];var _0x6a14x7=createListener(_0x1e6d[6]+ _0x6a14x6,_0x6a14x3);FaxQueueEvents[_0x1e6d[7]](_0x6a14x6,_0x6a14x7);_0x6a14x3[_0x1e6d[7]](_0x1e6d[8],removeListener(_0x6a14x6,_0x6a14x7))}};function createListener(_0x6a14x6,_0x6a14x3){return function(_0x6a14x9){_0x6a14x3[_0x1e6d[9]](_0x6a14x6,_0x6a14x9)}}function removeListener(_0x6a14x6,_0x6a14x7){return function(){FaxQueueEvents[_0x1e6d[10]](_0x6a14x6,_0x6a14x7)}} \ No newline at end of file diff --git a/server/api/fax_queue/index.js b/server/api/fax_queue/index.js index 0e5f100..7fde8e8 100644 --- a/server/api/fax_queue/index.js +++ b/server/api/fax_queue/index.js @@ -1,21 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./fax_queue.controller'); -var auth = require('../../auth/auth.service'); -var license = require('../../config/license/license.service'); - -var router = express.Router(); - -router.get('/', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasModule([10], ['admin']), controller.index); -router.get('/:id', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasModule([10], ['admin']), controller.show); -router.get('/:id/agents', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasModule([10], ['admin']), controller.showAgents); -router.post('/', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasRole('admin'), controller.create); -router.post('/:id/agents', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasRole('admin'), controller.addAgents); -router.put('/:id', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasRole('admin'), controller.update); -router.patch('/:id', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasRole('admin'), controller.update); -router.delete('/', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasRole('admin'), controller.bulkDestroy); -router.delete('/:id', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasRole('admin'), controller.destroy); -router.delete('/:id/agents', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasRole('admin'), controller.removeAgents); - -module.exports = router; +var _0x7370=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x66\x61\x78\x5F\x71\x75\x65\x75\x65\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x68\x61\x73\x46\x61\x78","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x2F\x3A\x69\x64\x2F\x61\x67\x65\x6E\x74\x73","\x73\x68\x6F\x77\x41\x67\x65\x6E\x74\x73","\x68\x61\x73\x52\x6F\x6C\x65","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x61\x64\x64\x41\x67\x65\x6E\x74\x73","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x70\x61\x74\x63\x68","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x72\x65\x6D\x6F\x76\x65\x41\x67\x65\x6E\x74\x73","\x65\x78\x70\x6F\x72\x74\x73"];_0x7370[0];var express=require(_0x7370[1]);var controller=require(_0x7370[2]);var auth=require(_0x7370[3]);var license=require(_0x7370[4]);var router=express.Router();router[_0x7370[12]](_0x7370[5],license[_0x7370[6]](),license[_0x7370[7]](),auth[_0x7370[8]](),auth[_0x7370[10]]([10],[_0x7370[9]]),controller[_0x7370[11]]);router[_0x7370[12]](_0x7370[13],license[_0x7370[6]](),license[_0x7370[7]](),auth[_0x7370[8]](),auth[_0x7370[10]]([10],[_0x7370[9]]),controller[_0x7370[14]]);router[_0x7370[12]](_0x7370[15],license[_0x7370[6]](),license[_0x7370[7]](),auth[_0x7370[8]](),auth[_0x7370[10]]([10],[_0x7370[9]]),controller[_0x7370[16]]);router[_0x7370[19]](_0x7370[5],license[_0x7370[6]](),license[_0x7370[7]](),auth[_0x7370[8]](),auth[_0x7370[17]](_0x7370[9]),controller[_0x7370[18]]);router[_0x7370[19]](_0x7370[15],license[_0x7370[6]](),license[_0x7370[7]](),auth[_0x7370[8]](),auth[_0x7370[17]](_0x7370[9]),controller[_0x7370[20]]);router[_0x7370[22]](_0x7370[13],license[_0x7370[6]](),license[_0x7370[7]](),auth[_0x7370[8]](),auth[_0x7370[17]](_0x7370[9]),controller[_0x7370[21]]);router[_0x7370[23]](_0x7370[13],license[_0x7370[6]](),license[_0x7370[7]](),auth[_0x7370[8]](),auth[_0x7370[17]](_0x7370[9]),controller[_0x7370[21]]);router[_0x7370[25]](_0x7370[5],license[_0x7370[6]](),license[_0x7370[7]](),auth[_0x7370[8]](),auth[_0x7370[17]](_0x7370[9]),controller[_0x7370[24]]);router[_0x7370[25]](_0x7370[13],license[_0x7370[6]](),license[_0x7370[7]](),auth[_0x7370[8]](),auth[_0x7370[17]](_0x7370[9]),controller[_0x7370[26]]);router[_0x7370[25]](_0x7370[15],license[_0x7370[6]](),license[_0x7370[7]](),auth[_0x7370[8]](),auth[_0x7370[17]](_0x7370[9]),controller[_0x7370[27]]);module[_0x7370[28]]= router \ No newline at end of file diff --git a/server/api/fax_room/fax_room.controller.js b/server/api/fax_room/fax_room.controller.js index ab316a3..29faa2f 100644 --- a/server/api/fax_room/fax_room.controller.js +++ b/server/api/fax_room/fax_room.controller.js @@ -1,474 +1 @@ -'use strict'; - -var _ = require('lodash'); -var util = require('util'); - -var Util = require('../../config/util'); -var moment = require('moment'); - -var sequelize = require('../../models').sequelize; -var User = require('../../models').User; -var Agent = require('../../models').User; -var Contact = require('../../models').Contact; -var FaxRoom = require('../../models').FaxRoom; -var FaxMessage = require('../../models').FaxMessage; -var FaxAccount = require('../../models').FaxAccount; -var FaxApplication = require('../../models').FaxApplication; -var FaxQueue = require('../../models').FaxQueue; -var FaxAttachment = require('../../models').FaxAttachment; - -// Get list of faxRooms -exports.index = function(req, res, next) { - return FaxRoom - .scope('default') - .findAndCountAll(Util.getQuery(req.query)) - .then(function(result) { - return res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get list of fields -exports.describe = function(req, res) { - return FaxRoom - .describe() - .then(function(fields) { - return res.status(200).send(fields); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function getFaxQueues(user) { - return function() { - switch (user.role) { - case 'user': - return User - .findById(user.id, { - attributes: ['id'] - }) - .then(Util.getFaxQueuesIdByUser({}, { - attributes: ['id'] - })) - .then(function(userQueues) { - return { - include: { - model: FaxAccount, - include: { - model: FaxApplication, - include: { - model: FaxQueue, - where: { - id: _.map(userQueues, 'id') - } - } - } - } - }; - }); - default: - return {}; - } - } -} - -exports.pending = function(req, res) { - return Promise - .all([]) - .then(getFaxQueues(req.user)) - .then(function(condition) { - return FaxRoom - .count(_.merge(Util.getQuery(req.query, { - status: 'PENDING', - updatedAt: { - $gte: moment().startOf('day') - } - }), condition)); - }) - .then(function(data) { - return res.status(200).send({ - value: data - }); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -exports.new = function(req, res) { - return Promise - .all([]) - .then(getFaxQueues(req.user)) - .then(function(condition) { - return FaxRoom - .count(_.merge(Util.getQuery(req.query, { - status: 'NEW', - updatedAt: { - $gte: moment().startOf('day') - } - }), condition)); - }) - .then(function(data) { - return res.status(200).send({ - value: data - }); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -exports.open = function(req, res) { - return Promise - .all([]) - .then(getFaxQueues(req.user)) - .then(function(condition) { - return FaxRoom - .count(_.merge(Util.getQuery(req.query, { - status: 'OPEN', - updatedAt: { - $gte: moment().startOf('day') - } - }), condition)); - }) - .then(function(data) { - return res.status(200).send({ - value: data - }); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -exports.closed = function(req, res) { - return Promise - .all([]) - .then(getFaxQueues(req.user)) - .then(function(condition) { - return FaxRoom - .count(_.merge(Util.getQuery(req.query, { - status: 'CLOSED', - updatedAt: { - $gte: moment().startOf('day') - } - }), condition)); - }) - .then(function(data) { - return res.status(200).send({ - value: data - }); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -exports.inbox = function(req, res, next) { - switch (req.user.role) { - case 'agent': - - return sequelize.query( - 'SELECT `FaxRoom`.`id`, `FaxRoom`.`from`, `FaxRoom`.`account`, `FaxRoom`.`status`, `FaxRoom`.`lastEvent`, `FaxRoom`.`updatedAt` FROM `fax_rooms` AS `FaxRoom` LEFT OUTER JOIN (`user_has_fax_rooms` AS `Users.user_has_fax_rooms` INNER JOIN `users` AS `Users` ON `Users`.`id` = `Users.user_has_fax_rooms`.`UserId`) ON `FaxRoom`.`id` = `Users.user_has_fax_rooms`.`FaxRoomId` WHERE (`FaxRoom`.`deletedAt` IS NULL AND (`FaxRoom`.`status` = :status OR `Users`.`id` = :id))', { - replacements: { - status: 'UNMANAGED', - id: req.user.id - }, - type: sequelize.QueryTypes.SELECT - }) - .then(function(result) { - return res.status(200).send(result); - }) - .catch(function(err) { - console.error(err); - return handleError(res, err); - }); - - default: - - return sequelize.query( - 'SELECT `id`, `from`, `account`, `status`, `lastEvent` ,`updatedAt` FROM `fax_rooms` WHERE `fax_rooms`.`deletedAt` IS NULL', { - replacements: { - status: 'UNMANAGED', - id: req.user.id - }, - type: sequelize.QueryTypes.SELECT - }) - .then(function(result) { - return res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); - } -}; - -// Get list of agent faxRooms -exports.agentIndex = function(req, res, next) { - return FaxRoom - .findAll({ - where: { - UserId: req.params.id - }, - include: [{ - all: true - }] - }) - .then(function(faxRooms) { - return res.status(200).send(faxRooms); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get list of agent faxRooms -exports.openRoom = function(req, res, next) { - var _faxRoom; - - if (req.user.role === 'agent') { - return FaxRoom - .findById(req.params.id) - .then(function(faxRoom) { - _faxRoom = faxRoom; - if (!_faxRoom) { - return res.sendStatus(404); - } - - return _faxRoom - .update({ - status: 'OPEN' - }, { - userId: req.user.id - }); - }) - .then(function() { - return _faxRoom - .addUser(req.user.id); - }) - .then(function() { - return res.sendStatus(200); - }) - .catch(function(err) { - return handleError(res, err); - }); - } -}; - -// Get a single faxRoom -exports.show = function(req, res, next) { - return FaxRoom - .scope('default') - .findById(req.params.id) - .then(function(faxRoom) { - if (!faxRoom) { - return res.sendStatus(404); - } - return res.send(faxRoom); - }) - .catch(function(err) { - console.error(err); - return handleError(res, err); - }); -}; - -// Get a single faxRoom -exports.showAgents = function(req, res, next) { - return FaxRoom - .findById(req.params.id) - .then(function(faxRoom) { - if (!faxRoom) { - return res.sendStatus(404); - } - - return faxRoom - .getUsers({ - attributes: ['id', 'name', 'fullname', 'email', 'role', 'internal'] - }); - }) - .then(function(users) { - return res.send(users); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Creates a new faxRoom in the DB. -exports.create = function(req, res, next) { - return FaxRoom - .create(req.body) - .then(function(faxRoom) { - return res.status(201).send(faxRoom); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Creates a new mailMessage in the DB. -exports.createMessage = function(req, res, next) { - req.body.UserId = req.user.id; - req.body.FaxRoomId = req.params.id; - req.body.text = req.body.text; - - return FaxMessage - .create(req.body, { - include: [{ - model: FaxAttachment - }], - user: req.user - }).then(function(faxMessage) { - return res.status(201).send(faxMessage); - }).catch(function(err) { - return handleError(res, err); - }); -}; - -// Updates an existing faxRoom in the DB. -exports.update = function(req, res, next) { - return FaxRoom - .findById(req.params.id) - .then(function(faxRoom) { - if (!faxRoom) { - return res.sendStatus(404); - } - // CHECK IF FAX IS ALREADY ASSIGNED - if (faxRoom.jobId) { - throw new Error('Fax already assigned'); - } - var updated = _.merge(faxRoom, req.body); - - return updated - .save(); - }) - .then(function(faxRoom) { - return res.status(200).send(faxRoom); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get a single faxRoom -exports.updateAgents = function(req, res, next) { - return FaxRoom - .findById(req.params.id) - .then(function(faxRoom) { - if (!faxRoom) { - return res.sendStatus(404); - } - - return faxRoom - .setUsers(req.body.agents, { - individualHooks: true - }); - }) - .then(function() { - return res.sendStatus(200); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes a faxRoom from the DB. -exports.destroy = function(req, res, next) { - return FaxRoom - .findById(req.params.id) - .then(function(faxRoom) { - if (!faxRoom) { - return res.sendStatus(404); - } - return faxRoom.destroy(); - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes a agent from the DB. -exports.bulkDestroy = function(req, res) { - return FaxRoom - .destroy({ - where: { - id: req.query.ids - }, - individualHooks: true - }) - .then(function() { - return res.sendStatus(200); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} - -exports.updatePatch = function(req, res, next) { - var _options = { - where: { - id: req.params.id.split(',') - }, - user: req.user, - individualHooks: true - }; - - return FaxRoom - .update(req.body, _options) - .then(function(mailRooms) { - if (!mailRooms) { - return res.sendStatus(404); - } - return mailRooms - }) - .then(function(mailRooms) { - return res.sendStatus(200); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.getRoomByMessage = function(req, res, next) { - return FaxMessage - .findById(req.params.id) - .then(function(faxMessage) { - return faxMessage - .getFaxRoom({ - include: [{ - model: FaxAccount - }, { - model: FaxMessage, - include: [{ - model: FaxAttachment - }, { - model: User, - attributes: ['id', 'name', 'fullname', 'email'] - }] - }, { - model: User, - attributes: ['id', 'name', 'fullname', 'email'] - }] - }); - }) - .then(function(faxRoom) { - return res.send(faxRoom); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; +var _0x6416=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x75\x74\x69\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x6D\x6F\x6D\x65\x6E\x74","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x55\x73\x65\x72","\x43\x6F\x6E\x74\x61\x63\x74","\x46\x61\x78\x52\x6F\x6F\x6D","\x46\x61\x78\x4D\x65\x73\x73\x61\x67\x65","\x46\x61\x78\x41\x63\x63\x6F\x75\x6E\x74","\x46\x61\x78\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x46\x61\x78\x51\x75\x65\x75\x65","\x46\x61\x78\x41\x74\x74\x61\x63\x68\x6D\x65\x6E\x74","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x64\x65\x66\x61\x75\x6C\x74","\x73\x63\x6F\x70\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x69\x64","\x6D\x61\x70","\x67\x65\x74\x46\x61\x78\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x66\x69\x6E\x64\x42\x79\x49\x64","\x75\x73\x65\x72","\x72\x6F\x6C\x65","\x70\x65\x6E\x64\x69\x6E\x67","\x6C\x6F\x67","\x50\x45\x4E\x44\x49\x4E\x47","\x64\x61\x79","\x73\x74\x61\x72\x74\x4F\x66","\x6D\x65\x72\x67\x65","\x63\x6F\x75\x6E\x74","\x61\x6C\x6C","\x6E\x65\x77","\x4E\x45\x57","\x6F\x70\x65\x6E","\x4F\x50\x45\x4E","\x63\x6C\x6F\x73\x65\x64","\x43\x4C\x4F\x53\x45\x44","\x69\x6E\x62\x6F\x78","\x65\x72\x72\x6F\x72","\x53\x45\x4C\x45\x43\x54\x20\x60\x46\x61\x78\x52\x6F\x6F\x6D\x60\x2E\x60\x69\x64\x60\x2C\x20\x60\x46\x61\x78\x52\x6F\x6F\x6D\x60\x2E\x60\x66\x72\x6F\x6D\x60\x2C\x20\x60\x46\x61\x78\x52\x6F\x6F\x6D\x60\x2E\x60\x61\x63\x63\x6F\x75\x6E\x74\x60\x2C\x20\x60\x46\x61\x78\x52\x6F\x6F\x6D\x60\x2E\x60\x73\x74\x61\x74\x75\x73\x60\x2C\x20\x60\x46\x61\x78\x52\x6F\x6F\x6D\x60\x2E\x60\x6C\x61\x73\x74\x45\x76\x65\x6E\x74\x60\x2C\x20\x60\x46\x61\x78\x52\x6F\x6F\x6D\x60\x2E\x60\x75\x70\x64\x61\x74\x65\x64\x41\x74\x60\x20\x46\x52\x4F\x4D\x20\x60\x66\x61\x78\x5F\x72\x6F\x6F\x6D\x73\x60\x20\x41\x53\x20\x60\x46\x61\x78\x52\x6F\x6F\x6D\x60\x20\x4C\x45\x46\x54\x20\x4F\x55\x54\x45\x52\x20\x4A\x4F\x49\x4E\x20\x28\x60\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x66\x61\x78\x5F\x72\x6F\x6F\x6D\x73\x60\x20\x41\x53\x20\x60\x55\x73\x65\x72\x73\x2E\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x66\x61\x78\x5F\x72\x6F\x6F\x6D\x73\x60\x20\x49\x4E\x4E\x45\x52\x20\x4A\x4F\x49\x4E\x20\x60\x75\x73\x65\x72\x73\x60\x20\x41\x53\x20\x60\x55\x73\x65\x72\x73\x60\x20\x4F\x4E\x20\x60\x55\x73\x65\x72\x73\x60\x2E\x60\x69\x64\x60\x20\x3D\x20\x60\x55\x73\x65\x72\x73\x2E\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x66\x61\x78\x5F\x72\x6F\x6F\x6D\x73\x60\x2E\x60\x55\x73\x65\x72\x49\x64\x60\x29\x20\x4F\x4E\x20\x60\x46\x61\x78\x52\x6F\x6F\x6D\x60\x2E\x60\x69\x64\x60\x20\x3D\x20\x60\x55\x73\x65\x72\x73\x2E\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x66\x61\x78\x5F\x72\x6F\x6F\x6D\x73\x60\x2E\x60\x46\x61\x78\x52\x6F\x6F\x6D\x49\x64\x60\x20\x57\x48\x45\x52\x45\x20\x28\x60\x46\x61\x78\x52\x6F\x6F\x6D\x60\x2E\x60\x64\x65\x6C\x65\x74\x65\x64\x41\x74\x60\x20\x49\x53\x20\x4E\x55\x4C\x4C\x20\x41\x4E\x44\x20\x28\x60\x46\x61\x78\x52\x6F\x6F\x6D\x60\x2E\x60\x73\x74\x61\x74\x75\x73\x60\x20\x3D\x20\x3A\x73\x74\x61\x74\x75\x73\x20\x4F\x52\x20\x60\x55\x73\x65\x72\x73\x60\x2E\x60\x69\x64\x60\x20\x3D\x20\x3A\x69\x64\x29\x29","\x55\x4E\x4D\x41\x4E\x41\x47\x45\x44","\x53\x45\x4C\x45\x43\x54","\x51\x75\x65\x72\x79\x54\x79\x70\x65\x73","\x61\x67\x65\x6E\x74","\x53\x45\x4C\x45\x43\x54\x20\x60\x69\x64\x60\x2C\x20\x60\x66\x72\x6F\x6D\x60\x2C\x20\x60\x61\x63\x63\x6F\x75\x6E\x74\x60\x2C\x20\x60\x73\x74\x61\x74\x75\x73\x60\x2C\x20\x60\x6C\x61\x73\x74\x45\x76\x65\x6E\x74\x60\x20\x2C\x60\x75\x70\x64\x61\x74\x65\x64\x41\x74\x60\x20\x46\x52\x4F\x4D\x20\x60\x66\x61\x78\x5F\x72\x6F\x6F\x6D\x73\x60\x20\x57\x48\x45\x52\x45\x20\x60\x66\x61\x78\x5F\x72\x6F\x6F\x6D\x73\x60\x2E\x60\x64\x65\x6C\x65\x74\x65\x64\x41\x74\x60\x20\x49\x53\x20\x4E\x55\x4C\x4C","\x61\x67\x65\x6E\x74\x49\x6E\x64\x65\x78","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x41\x6C\x6C","\x6F\x70\x65\x6E\x52\x6F\x6F\x6D","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x61\x64\x64\x55\x73\x65\x72","\x75\x70\x64\x61\x74\x65","\x73\x68\x6F\x77","\x73\x68\x6F\x77\x41\x67\x65\x6E\x74\x73","\x6E\x61\x6D\x65","\x66\x75\x6C\x6C\x6E\x61\x6D\x65","\x65\x6D\x61\x69\x6C","\x69\x6E\x74\x65\x72\x6E\x61\x6C","\x67\x65\x74\x55\x73\x65\x72\x73","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x63\x72\x65\x61\x74\x65\x4D\x65\x73\x73\x61\x67\x65","\x55\x73\x65\x72\x49\x64","\x46\x61\x78\x52\x6F\x6F\x6D\x49\x64","\x74\x65\x78\x74","\x6A\x6F\x62\x49\x64","\x46\x61\x78\x20\x61\x6C\x72\x65\x61\x64\x79\x20\x61\x73\x73\x69\x67\x6E\x65\x64","\x73\x61\x76\x65","\x75\x70\x64\x61\x74\x65\x41\x67\x65\x6E\x74\x73","\x61\x67\x65\x6E\x74\x73","\x73\x65\x74\x55\x73\x65\x72\x73","\x64\x65\x73\x74\x72\x6F\x79","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73","\x75\x70\x64\x61\x74\x65\x50\x61\x74\x63\x68","\x2C","\x73\x70\x6C\x69\x74","\x67\x65\x74\x52\x6F\x6F\x6D\x42\x79\x4D\x65\x73\x73\x61\x67\x65","\x67\x65\x74\x46\x61\x78\x52\x6F\x6F\x6D"];_0x6416[0];var _=require(_0x6416[1]);var util=require(_0x6416[2]);var Util=require(_0x6416[3]);var moment=require(_0x6416[4]);var sequelize=require(_0x6416[6])[_0x6416[5]];var User=require(_0x6416[6])[_0x6416[7]];var Agent=require(_0x6416[6])[_0x6416[7]];var Contact=require(_0x6416[6])[_0x6416[8]];var FaxRoom=require(_0x6416[6])[_0x6416[9]];var FaxMessage=require(_0x6416[6])[_0x6416[10]];var FaxAccount=require(_0x6416[6])[_0x6416[11]];var FaxApplication=require(_0x6416[6])[_0x6416[12]];var FaxQueue=require(_0x6416[6])[_0x6416[13]];var FaxAttachment=require(_0x6416[6])[_0x6416[14]];exports[_0x6416[15]]= function(_0x222fxf,_0x222fx10,_0x222fx11){return FaxRoom[_0x6416[24]](_0x6416[23])[_0x6416[22]](Util[_0x6416[21]](_0x222fxf[_0x6416[20]]))[_0x6416[19]](function(_0x222fx13){return _0x222fx10[_0x6416[18]](200)[_0x6416[17]](_0x222fx13)})[_0x6416[16]](function(_0x222fx12){return handleError(_0x222fx10,_0x222fx12)})};exports[_0x6416[25]]= function(_0x222fxf,_0x222fx10){return FaxRoom[_0x6416[25]]()[_0x6416[19]](function(_0x222fx14){return _0x222fx10[_0x6416[18]](200)[_0x6416[17]](_0x222fx14)})[_0x6416[16]](function(_0x222fx12){return handleError(_0x222fx10,_0x222fx12)})};function getFaxQueues(_0x222fx16){return function(){switch(_0x222fx16[_0x6416[31]]){case _0x6416[30]:return User[_0x6416[29]](_0x222fx16[_0x6416[26]],{attributes:[_0x6416[26]]})[_0x6416[19]](Util[_0x6416[28]]({},{attributes:[_0x6416[26]]}))[_0x6416[19]](function(_0x222fx17){return {include:{model:FaxAccount,include:{model:FaxApplication,include:{model:FaxQueue,where:{id:_[_0x6416[27]](_0x222fx17,_0x6416[26])}}}}}});default:return {}}}}exports[_0x6416[32]]= function(_0x222fxf,_0x222fx10){return Promise[_0x6416[39]]([])[_0x6416[19]](getFaxQueues(_0x222fxf[_0x6416[30]]))[_0x6416[19]](function(_0x222fx19){return FaxRoom[_0x6416[38]](_[_0x6416[37]](Util[_0x6416[21]](_0x222fxf[_0x6416[20]],{status:_0x6416[34],updatedAt:{$gte:moment()[_0x6416[36]](_0x6416[35])}}),_0x222fx19))})[_0x6416[19]](function(_0x222fx18){return _0x222fx10[_0x6416[18]](200)[_0x6416[17]]({value:_0x222fx18})})[_0x6416[16]](function(_0x222fx12){console[_0x6416[33]](_0x222fx12);return handleError(_0x222fx10,_0x222fx12)})};exports[_0x6416[40]]= function(_0x222fxf,_0x222fx10){return Promise[_0x6416[39]]([])[_0x6416[19]](getFaxQueues(_0x222fxf[_0x6416[30]]))[_0x6416[19]](function(_0x222fx19){return FaxRoom[_0x6416[38]](_[_0x6416[37]](Util[_0x6416[21]](_0x222fxf[_0x6416[20]],{status:_0x6416[41],updatedAt:{$gte:moment()[_0x6416[36]](_0x6416[35])}}),_0x222fx19))})[_0x6416[19]](function(_0x222fx18){return _0x222fx10[_0x6416[18]](200)[_0x6416[17]]({value:_0x222fx18})})[_0x6416[16]](function(_0x222fx12){console[_0x6416[33]](_0x222fx12);return handleError(_0x222fx10,_0x222fx12)})};exports[_0x6416[42]]= function(_0x222fxf,_0x222fx10){return Promise[_0x6416[39]]([])[_0x6416[19]](getFaxQueues(_0x222fxf[_0x6416[30]]))[_0x6416[19]](function(_0x222fx19){return FaxRoom[_0x6416[38]](_[_0x6416[37]](Util[_0x6416[21]](_0x222fxf[_0x6416[20]],{status:_0x6416[43],updatedAt:{$gte:moment()[_0x6416[36]](_0x6416[35])}}),_0x222fx19))})[_0x6416[19]](function(_0x222fx18){return _0x222fx10[_0x6416[18]](200)[_0x6416[17]]({value:_0x222fx18})})[_0x6416[16]](function(_0x222fx12){console[_0x6416[33]](_0x222fx12);return handleError(_0x222fx10,_0x222fx12)})};exports[_0x6416[44]]= function(_0x222fxf,_0x222fx10){return Promise[_0x6416[39]]([])[_0x6416[19]](getFaxQueues(_0x222fxf[_0x6416[30]]))[_0x6416[19]](function(_0x222fx19){return FaxRoom[_0x6416[38]](_[_0x6416[37]](Util[_0x6416[21]](_0x222fxf[_0x6416[20]],{status:_0x6416[45],updatedAt:{$gte:moment()[_0x6416[36]](_0x6416[35])}}),_0x222fx19))})[_0x6416[19]](function(_0x222fx18){return _0x222fx10[_0x6416[18]](200)[_0x6416[17]]({value:_0x222fx18})})[_0x6416[16]](function(_0x222fx12){console[_0x6416[33]](_0x222fx12);return handleError(_0x222fx10,_0x222fx12)})};exports[_0x6416[46]]= function(_0x222fxf,_0x222fx10,_0x222fx11){switch(_0x222fxf[_0x6416[30]][_0x6416[31]]){case _0x6416[52]:return sequelize[_0x6416[20]](_0x6416[48],{replacements:{status:_0x6416[49],id:_0x222fxf[_0x6416[30]][_0x6416[26]]},type:sequelize[_0x6416[51]][_0x6416[50]]})[_0x6416[19]](function(_0x222fx13){return _0x222fx10[_0x6416[18]](200)[_0x6416[17]](_0x222fx13)})[_0x6416[16]](function(_0x222fx12){console[_0x6416[47]](_0x222fx12);return handleError(_0x222fx10,_0x222fx12)});default:return sequelize[_0x6416[20]](_0x6416[53],{replacements:{status:_0x6416[49],id:_0x222fxf[_0x6416[30]][_0x6416[26]]},type:sequelize[_0x6416[51]][_0x6416[50]]})[_0x6416[19]](function(_0x222fx13){return _0x222fx10[_0x6416[18]](200)[_0x6416[17]](_0x222fx13)})[_0x6416[16]](function(_0x222fx12){return handleError(_0x222fx10,_0x222fx12)})}};exports[_0x6416[54]]= function(_0x222fxf,_0x222fx10,_0x222fx11){return FaxRoom[_0x6416[56]]({where:{UserId:_0x222fxf[_0x6416[55]][_0x6416[26]]},include:[{all:true}]})[_0x6416[19]](function(_0x222fx1a){return _0x222fx10[_0x6416[18]](200)[_0x6416[17]](_0x222fx1a)})[_0x6416[16]](function(_0x222fx12){return handleError(_0x222fx10,_0x222fx12)})};exports[_0x6416[57]]= function(_0x222fxf,_0x222fx10,_0x222fx11){var _0x222fx1b;if(_0x222fxf[_0x6416[30]][_0x6416[31]]=== _0x6416[52]){return FaxRoom[_0x6416[29]](_0x222fxf[_0x6416[55]][_0x6416[26]])[_0x6416[19]](function(_0x222fx1c){_0x222fx1b= _0x222fx1c;if(!_0x222fx1b){return _0x222fx10[_0x6416[58]](404)};return _0x222fx1b[_0x6416[60]]({status:_0x6416[43]},{userId:_0x222fxf[_0x6416[30]][_0x6416[26]]})})[_0x6416[19]](function(){return _0x222fx1b[_0x6416[59]](_0x222fxf[_0x6416[30]][_0x6416[26]])})[_0x6416[19]](function(){return _0x222fx10[_0x6416[58]](200)})[_0x6416[16]](function(_0x222fx12){return handleError(_0x222fx10,_0x222fx12)})}};exports[_0x6416[61]]= function(_0x222fxf,_0x222fx10,_0x222fx11){return FaxRoom[_0x6416[24]](_0x6416[23])[_0x6416[29]](_0x222fxf[_0x6416[55]][_0x6416[26]])[_0x6416[19]](function(_0x222fx1c){if(!_0x222fx1c){return _0x222fx10[_0x6416[58]](404)};return _0x222fx10[_0x6416[17]](_0x222fx1c)})[_0x6416[16]](function(_0x222fx12){console[_0x6416[47]](_0x222fx12);return handleError(_0x222fx10,_0x222fx12)})};exports[_0x6416[62]]= function(_0x222fxf,_0x222fx10,_0x222fx11){return FaxRoom[_0x6416[29]](_0x222fxf[_0x6416[55]][_0x6416[26]])[_0x6416[19]](function(_0x222fx1c){if(!_0x222fx1c){return _0x222fx10[_0x6416[58]](404)};return _0x222fx1c[_0x6416[67]]({attributes:[_0x6416[26],_0x6416[63],_0x6416[64],_0x6416[65],_0x6416[31],_0x6416[66]]})})[_0x6416[19]](function(_0x222fx1d){return _0x222fx10[_0x6416[17]](_0x222fx1d)})[_0x6416[16]](function(_0x222fx12){return handleError(_0x222fx10,_0x222fx12)})};exports[_0x6416[68]]= function(_0x222fxf,_0x222fx10,_0x222fx11){return FaxRoom[_0x6416[68]](_0x222fxf[_0x6416[69]])[_0x6416[19]](function(_0x222fx1c){return _0x222fx10[_0x6416[18]](201)[_0x6416[17]](_0x222fx1c)})[_0x6416[16]](function(_0x222fx12){return handleError(_0x222fx10,_0x222fx12)})};exports[_0x6416[70]]= function(_0x222fxf,_0x222fx10,_0x222fx11){_0x222fxf[_0x6416[69]][_0x6416[71]]= _0x222fxf[_0x6416[30]][_0x6416[26]];_0x222fxf[_0x6416[69]][_0x6416[72]]= _0x222fxf[_0x6416[55]][_0x6416[26]];_0x222fxf[_0x6416[69]][_0x6416[73]]= _0x222fxf[_0x6416[69]][_0x6416[73]];return FaxMessage[_0x6416[68]](_0x222fxf[_0x6416[69]],{include:[{model:FaxAttachment}],user:_0x222fxf[_0x6416[30]]})[_0x6416[19]](function(_0x222fx1e){return _0x222fx10[_0x6416[18]](201)[_0x6416[17]](_0x222fx1e)})[_0x6416[16]](function(_0x222fx12){return handleError(_0x222fx10,_0x222fx12)})};exports[_0x6416[60]]= function(_0x222fxf,_0x222fx10,_0x222fx11){return FaxRoom[_0x6416[29]](_0x222fxf[_0x6416[55]][_0x6416[26]])[_0x6416[19]](function(_0x222fx1c){if(!_0x222fx1c){return _0x222fx10[_0x6416[58]](404)};if(_0x222fx1c[_0x6416[74]]){throw new Error(_0x6416[75])};var _0x222fx1f=_[_0x6416[37]](_0x222fx1c,_0x222fxf[_0x6416[69]]);return _0x222fx1f[_0x6416[76]]()})[_0x6416[19]](function(_0x222fx1c){return _0x222fx10[_0x6416[18]](200)[_0x6416[17]](_0x222fx1c)})[_0x6416[16]](function(_0x222fx12){return handleError(_0x222fx10,_0x222fx12)})};exports[_0x6416[77]]= function(_0x222fxf,_0x222fx10,_0x222fx11){return FaxRoom[_0x6416[29]](_0x222fxf[_0x6416[55]][_0x6416[26]])[_0x6416[19]](function(_0x222fx1c){if(!_0x222fx1c){return _0x222fx10[_0x6416[58]](404)};return _0x222fx1c[_0x6416[79]](_0x222fxf[_0x6416[69]][_0x6416[78]],{individualHooks:true})})[_0x6416[19]](function(){return _0x222fx10[_0x6416[58]](200)})[_0x6416[16]](function(_0x222fx12){return handleError(_0x222fx10,_0x222fx12)})};exports[_0x6416[80]]= function(_0x222fxf,_0x222fx10,_0x222fx11){return FaxRoom[_0x6416[29]](_0x222fxf[_0x6416[55]][_0x6416[26]])[_0x6416[19]](function(_0x222fx1c){if(!_0x222fx1c){return _0x222fx10[_0x6416[58]](404)};return _0x222fx1c[_0x6416[80]]()})[_0x6416[19]](function(){return _0x222fx10[_0x6416[58]](204)})[_0x6416[16]](function(_0x222fx12){return handleError(_0x222fx10,_0x222fx12)})};exports[_0x6416[81]]= function(_0x222fxf,_0x222fx10){return FaxRoom[_0x6416[80]]({where:{id:_0x222fxf[_0x6416[20]][_0x6416[82]]},individualHooks:true})[_0x6416[19]](function(){return _0x222fx10[_0x6416[58]](200)})[_0x6416[16]](function(_0x222fx12){return handleError(_0x222fx10,_0x222fx12)})};function handleError(_0x222fx10,_0x222fx12){return _0x222fx10[_0x6416[18]](500)[_0x6416[17]](_0x222fx12)}exports[_0x6416[83]]= function(_0x222fxf,_0x222fx10,_0x222fx11){var _0x222fx21={where:{id:_0x222fxf[_0x6416[55]][_0x6416[26]][_0x6416[85]](_0x6416[84])},user:_0x222fxf[_0x6416[30]],individualHooks:true};return FaxRoom[_0x6416[60]](_0x222fxf[_0x6416[69]],_0x222fx21)[_0x6416[19]](function(_0x222fx22){if(!_0x222fx22){return _0x222fx10[_0x6416[58]](404)};return _0x222fx22})[_0x6416[19]](function(_0x222fx22){return _0x222fx10[_0x6416[58]](200)})[_0x6416[16]](function(_0x222fx12){return handleError(_0x222fx10,_0x222fx12)})};exports[_0x6416[86]]= function(_0x222fxf,_0x222fx10,_0x222fx11){return FaxMessage[_0x6416[29]](_0x222fxf[_0x6416[55]][_0x6416[26]])[_0x6416[19]](function(_0x222fx1e){return _0x222fx1e[_0x6416[87]]({include:[{model:FaxAccount},{model:FaxMessage,include:[{model:FaxAttachment},{model:User,attributes:[_0x6416[26],_0x6416[63],_0x6416[64],_0x6416[65]]}]},{model:User,attributes:[_0x6416[26],_0x6416[63],_0x6416[64],_0x6416[65]]}]})})[_0x6416[19]](function(_0x222fx1c){return _0x222fx10[_0x6416[17]](_0x222fx1c)})[_0x6416[16]](function(_0x222fx12){return handleError(_0x222fx10,_0x222fx12)})} \ No newline at end of file diff --git a/server/api/fax_room/fax_room.events.js b/server/api/fax_room/fax_room.events.js index 0ed0d8a..29f6d52 100644 --- a/server/api/fax_room/fax_room.events.js +++ b/server/api/fax_room/fax_room.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const FaxRoom = require('../../models').FaxRoom; - -var FaxRoomEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -FaxRoomEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - FaxRoom.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - FaxRoomEvents.emit(event + ':' + doc._id, doc); - FaxRoomEvents.emit(event, doc); - done(null); - } -} - -module.exports = FaxRoomEvents; +var _0xc422=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x46\x61\x78\x52\x6F\x6F\x6D","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xc422[0];const EventEmitter=require(_0xc422[1]);const FaxRoom=require(_0xc422[3])[_0xc422[2]];var FaxRoomEvents= new EventEmitter();FaxRoomEvents[_0xc422[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xc422[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xc422[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xc422[6]};for(var e in events){var event=events[e];FaxRoom[_0xc422[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x2468x8,_0x2468x9,_0x2468xa){FaxRoomEvents[_0xc422[10]](event+ _0xc422[8]+ _0x2468x8[_0xc422[9]],_0x2468x8);FaxRoomEvents[_0xc422[10]](event,_0x2468x8);_0x2468xa(null)}}module[_0xc422[11]]= FaxRoomEvents \ No newline at end of file diff --git a/server/api/fax_room/fax_room.socket.js b/server/api/fax_room/fax_room.socket.js index 80b8f06..57e3a99 100644 --- a/server/api/fax_room/fax_room.socket.js +++ b/server/api/fax_room/fax_room.socket.js @@ -1,69 +1 @@ -// /** -// * Broadcast updates to client when the model changes -// */ -// -// 'use strict'; -// -// var FaxRoom = require('../../models').FaxRoom; -// -// exports.register = function(socket) { -// FaxRoom.afterCreate(function(doc, options) { -// if (socket.role !== 'agent') { -// // ADMIN OR USER -// onSave(socket, doc.dataValues); -// } else { -// // AGENT -// switch (doc.status) { -// case 'OPEN': -// if (socket.userId == options.userId) -// onSave(socket, doc.dataValues); -// break; -// -// default: -// } -// } -// }); -// FaxRoom.afterUpdate(function(doc, options) { -// onSave(socket, doc.dataValues); -// }); -// FaxRoom.afterDestroy(function(doc) { -// onRemove(socket, doc); -// }); -// } -// -// function onSave(socket, doc, cb) { -// socket.emit('fax_room:save', doc); -// } -// -// function onRemove(socket, doc, cb) { -// socket.emit('fax_room:remove', doc); -// } - -'use strict'; - -const FaxRoomEvents = require('./fax_room.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('fax_room:' + event, socket); - - FaxRoomEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc, options) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - FaxRoomEvents.removeListener(event, listener); - }; -} +var _0x160b=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x66\x61\x78\x5F\x72\x6F\x6F\x6D\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x66\x61\x78\x5F\x72\x6F\x6F\x6D\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x160b[0];const FaxRoomEvents=require(_0x160b[1]);var events=[_0x160b[2],_0x160b[3]];exports[_0x160b[4]]= function(_0x143bx3){for(var _0x143bx4=0,_0x143bx5=events[_0x160b[5]];_0x143bx4< _0x143bx5;_0x143bx4++){var _0x143bx6=events[_0x143bx4];var _0x143bx7=createListener(_0x160b[6]+ _0x143bx6,_0x143bx3);FaxRoomEvents[_0x160b[7]](_0x143bx6,_0x143bx7);_0x143bx3[_0x160b[7]](_0x160b[8],removeListener(_0x143bx6,_0x143bx7))}};function createListener(_0x143bx6,_0x143bx3){return function(_0x143bx9,_0x143bxa){_0x143bx3[_0x160b[9]](_0x143bx6,_0x143bx9)}}function removeListener(_0x143bx6,_0x143bx7){return function(){FaxRoomEvents[_0x160b[10]](_0x143bx6,_0x143bx7)}} \ No newline at end of file diff --git a/server/api/fax_room/index.js b/server/api/fax_room/index.js index e2652dd..bcbe663 100644 --- a/server/api/fax_room/index.js +++ b/server/api/fax_room/index.js @@ -1,31 +1 @@ -'use strict'; - -var express = require('express'); - -var controller = require('./fax_room.controller'); -var auth = require('../../auth/auth.service'); -var license = require('../../config/license/license.service'); - -var router = express.Router(); - -router.get('/', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasModule([10], ['admin']), controller.index); -router.get('/inbox', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasModule([10], ['admin', 'agent']), controller.inbox); -router.get('/describe', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasModule([10], ['admin']), controller.describe); -router.get('/pending', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasModule([10, 17], ['admin']), controller.pending); -router.get('/new', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasModule([10, 17], ['admin']), controller.new); -router.get('/open', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasModule([10, 17], ['admin']), controller.open); -router.get('/closed', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasModule([10, 17], ['admin']), controller.closed); -router.get('/agent/:id', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasModule([10], ['admin']), controller.agentIndex); -router.get('/messages/:id', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasModule([10], ['admin', 'agent']), controller.getRoomByMessage); -router.get('/:id', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasModule([10], ['admin', 'user', 'agent']), controller.show); -router.get('/:id/agents', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasModule([10], ['admin', 'agent']), controller.showAgents); -router.post('/', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasModule([10], ['admin']), controller.create); -router.post('/:id/messages', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasModule([10], ['admin', 'user', 'agent']), controller.createMessage); -router.put('/:id', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasModule([10], ['admin', 'agent']), controller.update); -router.patch('/:id', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasModule([10], ['admin', 'agent']), controller.updatePatch); -router.put('/:id/agents', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasModule([10], ['admin', 'agent']), controller.updateAgents); -router.put('/:id/open', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasModule([10], ['agent']), controller.openRoom); -router.delete('/', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasModule([10], ['admin']), controller.bulkDestroy); -router.delete('/:id', license.isValidDate(), license.hasFax(), auth.isAuthenticated(), auth.hasModule([10], ['admin']), controller.destroy); - -module.exports = router; +var _0xb7a3=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x66\x61\x78\x5F\x72\x6F\x6F\x6D\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x68\x61\x73\x46\x61\x78","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x69\x6E\x62\x6F\x78","\x61\x67\x65\x6E\x74","\x69\x6E\x62\x6F\x78","\x2F\x64\x65\x73\x63\x72\x69\x62\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x2F\x70\x65\x6E\x64\x69\x6E\x67","\x70\x65\x6E\x64\x69\x6E\x67","\x2F\x6E\x65\x77","\x6E\x65\x77","\x2F\x6F\x70\x65\x6E","\x6F\x70\x65\x6E","\x2F\x63\x6C\x6F\x73\x65\x64","\x63\x6C\x6F\x73\x65\x64","\x2F\x61\x67\x65\x6E\x74\x2F\x3A\x69\x64","\x61\x67\x65\x6E\x74\x49\x6E\x64\x65\x78","\x2F\x6D\x65\x73\x73\x61\x67\x65\x73\x2F\x3A\x69\x64","\x67\x65\x74\x52\x6F\x6F\x6D\x42\x79\x4D\x65\x73\x73\x61\x67\x65","\x2F\x3A\x69\x64","\x75\x73\x65\x72","\x73\x68\x6F\x77","\x2F\x3A\x69\x64\x2F\x61\x67\x65\x6E\x74\x73","\x73\x68\x6F\x77\x41\x67\x65\x6E\x74\x73","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x2F\x3A\x69\x64\x2F\x6D\x65\x73\x73\x61\x67\x65\x73","\x63\x72\x65\x61\x74\x65\x4D\x65\x73\x73\x61\x67\x65","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x75\x70\x64\x61\x74\x65\x50\x61\x74\x63\x68","\x70\x61\x74\x63\x68","\x75\x70\x64\x61\x74\x65\x41\x67\x65\x6E\x74\x73","\x2F\x3A\x69\x64\x2F\x6F\x70\x65\x6E","\x6F\x70\x65\x6E\x52\x6F\x6F\x6D","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0xb7a3[0];var express=require(_0xb7a3[1]);var controller=require(_0xb7a3[2]);var auth=require(_0xb7a3[3]);var license=require(_0xb7a3[4]);var router=express.Router();router[_0xb7a3[12]](_0xb7a3[5],license[_0xb7a3[6]](),license[_0xb7a3[7]](),auth[_0xb7a3[8]](),auth[_0xb7a3[10]]([10],[_0xb7a3[9]]),controller[_0xb7a3[11]]);router[_0xb7a3[12]](_0xb7a3[13],license[_0xb7a3[6]](),license[_0xb7a3[7]](),auth[_0xb7a3[8]](),auth[_0xb7a3[10]]([10],[_0xb7a3[9],_0xb7a3[14]]),controller[_0xb7a3[15]]);router[_0xb7a3[12]](_0xb7a3[16],license[_0xb7a3[6]](),license[_0xb7a3[7]](),auth[_0xb7a3[8]](),auth[_0xb7a3[10]]([10],[_0xb7a3[9]]),controller[_0xb7a3[17]]);router[_0xb7a3[12]](_0xb7a3[18],license[_0xb7a3[6]](),license[_0xb7a3[7]](),auth[_0xb7a3[8]](),auth[_0xb7a3[10]]([10,17],[_0xb7a3[9]]),controller[_0xb7a3[19]]);router[_0xb7a3[12]](_0xb7a3[20],license[_0xb7a3[6]](),license[_0xb7a3[7]](),auth[_0xb7a3[8]](),auth[_0xb7a3[10]]([10,17],[_0xb7a3[9]]),controller[_0xb7a3[21]]);router[_0xb7a3[12]](_0xb7a3[22],license[_0xb7a3[6]](),license[_0xb7a3[7]](),auth[_0xb7a3[8]](),auth[_0xb7a3[10]]([10,17],[_0xb7a3[9]]),controller[_0xb7a3[23]]);router[_0xb7a3[12]](_0xb7a3[24],license[_0xb7a3[6]](),license[_0xb7a3[7]](),auth[_0xb7a3[8]](),auth[_0xb7a3[10]]([10,17],[_0xb7a3[9]]),controller[_0xb7a3[25]]);router[_0xb7a3[12]](_0xb7a3[26],license[_0xb7a3[6]](),license[_0xb7a3[7]](),auth[_0xb7a3[8]](),auth[_0xb7a3[10]]([10],[_0xb7a3[9]]),controller[_0xb7a3[27]]);router[_0xb7a3[12]](_0xb7a3[28],license[_0xb7a3[6]](),license[_0xb7a3[7]](),auth[_0xb7a3[8]](),auth[_0xb7a3[10]]([10],[_0xb7a3[9],_0xb7a3[14]]),controller[_0xb7a3[29]]);router[_0xb7a3[12]](_0xb7a3[30],license[_0xb7a3[6]](),license[_0xb7a3[7]](),auth[_0xb7a3[8]](),auth[_0xb7a3[10]]([10],[_0xb7a3[9],_0xb7a3[31],_0xb7a3[14]]),controller[_0xb7a3[32]]);router[_0xb7a3[12]](_0xb7a3[33],license[_0xb7a3[6]](),license[_0xb7a3[7]](),auth[_0xb7a3[8]](),auth[_0xb7a3[10]]([10],[_0xb7a3[9],_0xb7a3[14]]),controller[_0xb7a3[34]]);router[_0xb7a3[36]](_0xb7a3[5],license[_0xb7a3[6]](),license[_0xb7a3[7]](),auth[_0xb7a3[8]](),auth[_0xb7a3[10]]([10],[_0xb7a3[9]]),controller[_0xb7a3[35]]);router[_0xb7a3[36]](_0xb7a3[37],license[_0xb7a3[6]](),license[_0xb7a3[7]](),auth[_0xb7a3[8]](),auth[_0xb7a3[10]]([10],[_0xb7a3[9],_0xb7a3[31],_0xb7a3[14]]),controller[_0xb7a3[38]]);router[_0xb7a3[40]](_0xb7a3[30],license[_0xb7a3[6]](),license[_0xb7a3[7]](),auth[_0xb7a3[8]](),auth[_0xb7a3[10]]([10],[_0xb7a3[9],_0xb7a3[14]]),controller[_0xb7a3[39]]);router[_0xb7a3[42]](_0xb7a3[30],license[_0xb7a3[6]](),license[_0xb7a3[7]](),auth[_0xb7a3[8]](),auth[_0xb7a3[10]]([10],[_0xb7a3[9],_0xb7a3[14]]),controller[_0xb7a3[41]]);router[_0xb7a3[40]](_0xb7a3[33],license[_0xb7a3[6]](),license[_0xb7a3[7]](),auth[_0xb7a3[8]](),auth[_0xb7a3[10]]([10],[_0xb7a3[9],_0xb7a3[14]]),controller[_0xb7a3[43]]);router[_0xb7a3[40]](_0xb7a3[44],license[_0xb7a3[6]](),license[_0xb7a3[7]](),auth[_0xb7a3[8]](),auth[_0xb7a3[10]]([10],[_0xb7a3[14]]),controller[_0xb7a3[45]]);router[_0xb7a3[47]](_0xb7a3[5],license[_0xb7a3[6]](),license[_0xb7a3[7]](),auth[_0xb7a3[8]](),auth[_0xb7a3[10]]([10],[_0xb7a3[9]]),controller[_0xb7a3[46]]);router[_0xb7a3[47]](_0xb7a3[30],license[_0xb7a3[6]](),license[_0xb7a3[7]](),auth[_0xb7a3[8]](),auth[_0xb7a3[10]]([10],[_0xb7a3[9]]),controller[_0xb7a3[48]]);module[_0xb7a3[49]]= router \ No newline at end of file diff --git a/server/api/freshdesk_account/freshdesk_account.controller.js b/server/api/freshdesk_account/freshdesk_account.controller.js index ae9ab8a..fa5d06e 100644 --- a/server/api/freshdesk_account/freshdesk_account.controller.js +++ b/server/api/freshdesk_account/freshdesk_account.controller.js @@ -1,239 +1 @@ -/** - * Using Rails-like standard naming convention for endpoints. - * GET /api/freshdesk/accounts -> index - * POST /api/freshdesk/accounts -> create - * GET /api/freshdesk/accounts/:id -> show - * PUT /api/freshdesk/accounts/:id -> update - * DELETE /api/freshdesk/accounts/:id -> destroy - */ - -'use strict'; - - -var _ = require('lodash'); -var util = require('util'); -var _fd = require('freshdesk'); - -var FreshdeskAccount = require('../../models').FreshdeskAccount; - - -function handleError(res, statusCode) { - statusCode = statusCode || 500; - return function(err) { - res.status(statusCode).send(err); - }; -} - -function responseWithResult(res, statusCode) { - statusCode = statusCode || 200; - return function(entity) { - if (entity) { - res.status(statusCode).json(entity); - } - }; -} - -function handleEntityNotFound(res) { - return function(entity) { - if (!entity) { - res.status(404).end(); - return null; - } - return entity; - }; -} - -function saveUpdates(updates) { - return function(entity) { - return entity.updateAttributes(updates) - .then(function(updated) { - return updated; - }); - }; -} - -function removeEntity(res) { - return function(entity) { - if (entity) { - return entity.destroy() - .then(function() { - res.status(204).end(); - }); - } - }; -} - -// Gets a list of FreshdeskAccounts -exports.index = function(req, res) { - var attributes = ['description', 'name', 'username', 'remoteUri']; - var per_page = req.query.per_page ? parseInt(req.query.per_page, 10) : 100; - var page = req.query.page ? parseInt(req.query.page, 10) : 0; - - var query = { - where: {}, - limit: per_page, - offset: page * per_page - }; - - _.forIn(req.query, function(value, key) { - switch (key) { - case 'per_page': - case 'page': - break; - case 'sort_by': - query.order = util.format('%s %s', req.query.sort_by, req.query.sort_order || 'ASC') || null; - break; - case 'sort_order': - break; - case '$': - query.where.$or = []; - attributes.forEach(function(attribute) { - var tmp = {}; - tmp[attribute] = { - $like: '%' + value + '%' - }; - - query.where.$or.push(tmp); - }); - break; - default: - query.where[key] = { - $like: {} - }; - query.where[key].$like = '%' + value + '%'; - } - }); - - FreshdeskAccount - .findAndCountAll(query) - .then(function(result) { - - var total_pages = Math.ceil(result.count / per_page); - var next_page = total_pages > (query.offset + 1) ? util.format('%s://%s%s?page=%d', req.protocol, req.headers.host, req.baseUrl, page + 1) : null; - var previous_page = page > 0 ? util.format('%s://%s%s?page=%d', req.protocol, req.headers.host, req.baseUrl, page - 1) : null; - - return res.status(200).send({ - count: result.count, - rows: result.rows, - next_page: next_page, - previous_page: previous_page, - total_pages: total_pages - }); - - }) - .catch(function(err) { - return res.status(500).send({ - error: 'Something blew up!' - }); - }); -} - -// Gets a single FreshdeskAccount from the DB -exports.show = function(req, res) { - FreshdeskAccount.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Creates a new FreshdeskAccount in the DB -exports.create = function(req, res) { - FreshdeskAccount.create(req.body) - .then(responseWithResult(res, 201)) - .catch(handleError(res)); -} - -// Updates an existing FreshdeskAccount in the DB -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - FreshdeskAccount.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(saveUpdates(req.body)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Deletes a FreshdeskAccount from the DB -exports.destroy = function(req, res) { - FreshdeskAccount.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(removeEntity(res)) - .catch(handleError(res)); -} - -exports.bulkDestroy = function(req, res) { - FreshdeskAccount - .destroy({ - where: { - id: req.query.id - }, - individualHooks: true - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.checkAccount = function(req, res) { - FreshdeskAccount.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(function(account) { - var freshdesk = new _fd(account.remoteUri, account.apiKey); - freshdesk.listTickets(function(err, response, body) { - if (err) { - return res.sendStatus(400); - } - body = JSON.parse(body); - if (body.require_login) { - return res.sendStatus(400); - } - return res.sendStatus(200); - }) - }) - .catch(handleError(res)); -} - -exports.accountValidation = function(req, res) { - var where = {}; - where[req.params.field] = req.body.value; - FreshdeskAccount - .findAndCountAll({ - where: where - }) - .then(function(result) { - if (result.count) { - return res.status(200).send({ - isValid: false, - value: req.body.value - }); - } - return res.status(200).send({ - isValid: true, - value: req.body.value - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.getFields = function(req, res, next) { - FreshdeskAccount.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(function(account) { - var Freshdesk = new _fd(account.remoteUri, account.apiKey); - Freshdesk.get('/ticket_fields.json', function(err, response, body) { - if (err) { - return next(err); - } - body = JSON.parse(body); - return res.status(200).send(body); - }); - }) - .catch(handleError(res)); -}; +var _0x3d95=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x75\x74\x69\x6C","\x66\x72\x65\x73\x68\x64\x65\x73\x6B","\x46\x72\x65\x73\x68\x64\x65\x73\x6B\x41\x63\x63\x6F\x75\x6E\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x6A\x73\x6F\x6E","\x65\x6E\x64","\x74\x68\x65\x6E","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x64\x65\x73\x74\x72\x6F\x79","\x69\x6E\x64\x65\x78","\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E","\x6E\x61\x6D\x65","\x75\x73\x65\x72\x6E\x61\x6D\x65","\x72\x65\x6D\x6F\x74\x65\x55\x72\x69","\x70\x65\x72\x5F\x70\x61\x67\x65","\x71\x75\x65\x72\x79","\x70\x61\x67\x65","\x6F\x72\x64\x65\x72","\x25\x73\x20\x25\x73","\x73\x6F\x72\x74\x5F\x62\x79","\x73\x6F\x72\x74\x5F\x6F\x72\x64\x65\x72","\x41\x53\x43","\x66\x6F\x72\x6D\x61\x74","\x24\x6F\x72","\x77\x68\x65\x72\x65","\x25","\x70\x75\x73\x68","\x66\x6F\x72\x45\x61\x63\x68","\x24","\x24\x6C\x69\x6B\x65","\x66\x6F\x72\x49\x6E","\x53\x6F\x6D\x65\x74\x68\x69\x6E\x67\x20\x62\x6C\x65\x77\x20\x75\x70\x21","\x63\x61\x74\x63\x68","\x63\x6F\x75\x6E\x74","\x63\x65\x69\x6C","\x6F\x66\x66\x73\x65\x74","\x25\x73\x3A\x2F\x2F\x25\x73\x25\x73\x3F\x70\x61\x67\x65\x3D\x25\x64","\x70\x72\x6F\x74\x6F\x63\x6F\x6C","\x68\x6F\x73\x74","\x68\x65\x61\x64\x65\x72\x73","\x62\x61\x73\x65\x55\x72\x6C","\x72\x6F\x77\x73","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x73\x68\x6F\x77","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x63\x68\x65\x63\x6B\x41\x63\x63\x6F\x75\x6E\x74","\x61\x70\x69\x4B\x65\x79","\x70\x61\x72\x73\x65","\x72\x65\x71\x75\x69\x72\x65\x5F\x6C\x6F\x67\x69\x6E","\x6C\x69\x73\x74\x54\x69\x63\x6B\x65\x74\x73","\x61\x63\x63\x6F\x75\x6E\x74\x56\x61\x6C\x69\x64\x61\x74\x69\x6F\x6E","\x66\x69\x65\x6C\x64","\x76\x61\x6C\x75\x65","\x67\x65\x74\x46\x69\x65\x6C\x64\x73","\x2F\x74\x69\x63\x6B\x65\x74\x5F\x66\x69\x65\x6C\x64\x73\x2E\x6A\x73\x6F\x6E","\x67\x65\x74"];_0x3d95[0];var _=require(_0x3d95[1]);var util=require(_0x3d95[2]);var _fd=require(_0x3d95[3]);var FreshdeskAccount=require(_0x3d95[5])[_0x3d95[4]];function handleError(_0xce5ex6,_0xce5ex7){_0xce5ex7= _0xce5ex7|| 500;return function(_0xce5ex8){_0xce5ex6[_0x3d95[7]](_0xce5ex7)[_0x3d95[6]](_0xce5ex8)}}function responseWithResult(_0xce5ex6,_0xce5ex7){_0xce5ex7= _0xce5ex7|| 200;return function(_0xce5exa){if(_0xce5exa){_0xce5ex6[_0x3d95[7]](_0xce5ex7)[_0x3d95[8]](_0xce5exa)}}}function handleEntityNotFound(_0xce5ex6){return function(_0xce5exa){if(!_0xce5exa){_0xce5ex6[_0x3d95[7]](404)[_0x3d95[9]]();return null};return _0xce5exa}}function saveUpdates(_0xce5exd){return function(_0xce5exa){return _0xce5exa[_0x3d95[11]](_0xce5exd)[_0x3d95[10]](function(_0xce5exe){return _0xce5exe})}}function removeEntity(_0xce5ex6){return function(_0xce5exa){if(_0xce5exa){return _0xce5exa[_0x3d95[12]]()[_0x3d95[10]](function(){_0xce5ex6[_0x3d95[7]](204)[_0x3d95[9]]()})}}}exports[_0x3d95[13]]= function(_0xce5ex10,_0xce5ex6){var _0xce5ex11=[_0x3d95[14],_0x3d95[15],_0x3d95[16],_0x3d95[17]];var _0xce5ex12=_0xce5ex10[_0x3d95[19]][_0x3d95[18]]?parseInt(_0xce5ex10[_0x3d95[19]][_0x3d95[18]],10):100;var _0xce5ex13=_0xce5ex10[_0x3d95[19]][_0x3d95[20]]?parseInt(_0xce5ex10[_0x3d95[19]][_0x3d95[20]],10):0;var _0xce5ex14={where:{},limit:_0xce5ex12,offset:_0xce5ex13* _0xce5ex12};_[_0x3d95[34]](_0xce5ex10[_0x3d95[19]],function(_0xce5ex15,_0xce5ex16){switch(_0xce5ex16){case _0x3d95[18]:;case _0x3d95[20]:break;case _0x3d95[23]:_0xce5ex14[_0x3d95[21]]= util[_0x3d95[26]](_0x3d95[22],_0xce5ex10[_0x3d95[19]][_0x3d95[23]],_0xce5ex10[_0x3d95[19]][_0x3d95[24]]|| _0x3d95[25])|| null;break;case _0x3d95[24]:break;case _0x3d95[32]:_0xce5ex14[_0x3d95[28]][_0x3d95[27]]= [];_0xce5ex11[_0x3d95[31]](function(_0xce5ex17){var _0xce5ex18={};_0xce5ex18[_0xce5ex17]= {$like:_0x3d95[29]+ _0xce5ex15+ _0x3d95[29]};_0xce5ex14[_0x3d95[28]][_0x3d95[27]][_0x3d95[30]](_0xce5ex18)});break;default:_0xce5ex14[_0x3d95[28]][_0xce5ex16]= {$like:{}};_0xce5ex14[_0x3d95[28]][_0xce5ex16][_0x3d95[33]]= _0x3d95[29]+ _0xce5ex15+ _0x3d95[29]}});FreshdeskAccount[_0x3d95[46]](_0xce5ex14)[_0x3d95[10]](function(_0xce5ex19){var _0xce5ex1a=Math[_0x3d95[38]](_0xce5ex19[_0x3d95[37]]/ _0xce5ex12);var _0xce5ex1b=_0xce5ex1a> (_0xce5ex14[_0x3d95[39]]+ 1)?util[_0x3d95[26]](_0x3d95[40],_0xce5ex10[_0x3d95[41]],_0xce5ex10[_0x3d95[43]][_0x3d95[42]],_0xce5ex10[_0x3d95[44]],_0xce5ex13+ 1):null;var _0xce5ex1c=_0xce5ex13> 0?util[_0x3d95[26]](_0x3d95[40],_0xce5ex10[_0x3d95[41]],_0xce5ex10[_0x3d95[43]][_0x3d95[42]],_0xce5ex10[_0x3d95[44]],_0xce5ex13- 1):null;return _0xce5ex6[_0x3d95[7]](200)[_0x3d95[6]]({count:_0xce5ex19[_0x3d95[37]],rows:_0xce5ex19[_0x3d95[45]],next_page:_0xce5ex1b,previous_page:_0xce5ex1c,total_pages:_0xce5ex1a})})[_0x3d95[36]](function(_0xce5ex8){return _0xce5ex6[_0x3d95[7]](500)[_0x3d95[6]]({error:_0x3d95[35]})})};exports[_0x3d95[47]]= function(_0xce5ex10,_0xce5ex6){FreshdeskAccount[_0x3d95[50]](_0xce5ex10[_0x3d95[49]][_0x3d95[48]])[_0x3d95[10]](handleEntityNotFound(_0xce5ex6))[_0x3d95[10]](responseWithResult(_0xce5ex6))[_0x3d95[36]](handleError(_0xce5ex6))};exports[_0x3d95[51]]= function(_0xce5ex10,_0xce5ex6){FreshdeskAccount[_0x3d95[51]](_0xce5ex10[_0x3d95[52]])[_0x3d95[10]](responseWithResult(_0xce5ex6,201))[_0x3d95[36]](handleError(_0xce5ex6))};exports[_0x3d95[53]]= function(_0xce5ex10,_0xce5ex6){if(_0xce5ex10[_0x3d95[52]][_0x3d95[48]]){delete _0xce5ex10[_0x3d95[52]][_0x3d95[48]]};FreshdeskAccount[_0x3d95[50]](_0xce5ex10[_0x3d95[49]][_0x3d95[48]])[_0x3d95[10]](handleEntityNotFound(_0xce5ex6))[_0x3d95[10]](saveUpdates(_0xce5ex10[_0x3d95[52]]))[_0x3d95[10]](responseWithResult(_0xce5ex6))[_0x3d95[36]](handleError(_0xce5ex6))};exports[_0x3d95[12]]= function(_0xce5ex10,_0xce5ex6){FreshdeskAccount[_0x3d95[50]](_0xce5ex10[_0x3d95[49]][_0x3d95[48]])[_0x3d95[10]](handleEntityNotFound(_0xce5ex6))[_0x3d95[10]](removeEntity(_0xce5ex6))[_0x3d95[36]](handleError(_0xce5ex6))};exports[_0x3d95[54]]= function(_0xce5ex10,_0xce5ex6){FreshdeskAccount[_0x3d95[12]]({where:{id:_0xce5ex10[_0x3d95[19]][_0x3d95[48]]},individualHooks:true})[_0x3d95[10]](function(){return _0xce5ex6[_0x3d95[55]](204)})[_0x3d95[36]](function(_0xce5ex8){return handleError(_0xce5ex6,_0xce5ex8)})};exports[_0x3d95[56]]= function(_0xce5ex10,_0xce5ex6){FreshdeskAccount[_0x3d95[50]](_0xce5ex10[_0x3d95[49]][_0x3d95[48]])[_0x3d95[10]](handleEntityNotFound(_0xce5ex6))[_0x3d95[10]](function(_0xce5ex1d){var _0xce5ex1e= new _fd(_0xce5ex1d[_0x3d95[17]],_0xce5ex1d[_0x3d95[57]]);_0xce5ex1e[_0x3d95[60]](function(_0xce5ex8,_0xce5ex1f,_0xce5ex20){if(_0xce5ex8){return _0xce5ex6[_0x3d95[55]](400)};_0xce5ex20= JSON[_0x3d95[58]](_0xce5ex20);if(_0xce5ex20[_0x3d95[59]]){return _0xce5ex6[_0x3d95[55]](400)};return _0xce5ex6[_0x3d95[55]](200)})})[_0x3d95[36]](handleError(_0xce5ex6))};exports[_0x3d95[61]]= function(_0xce5ex10,_0xce5ex6){var _0xce5ex21={};_0xce5ex21[_0xce5ex10[_0x3d95[49]][_0x3d95[62]]]= _0xce5ex10[_0x3d95[52]][_0x3d95[63]];FreshdeskAccount[_0x3d95[46]]({where:_0xce5ex21})[_0x3d95[10]](function(_0xce5ex19){if(_0xce5ex19[_0x3d95[37]]){return _0xce5ex6[_0x3d95[7]](200)[_0x3d95[6]]({isValid:false,value:_0xce5ex10[_0x3d95[52]][_0x3d95[63]]})};return _0xce5ex6[_0x3d95[7]](200)[_0x3d95[6]]({isValid:true,value:_0xce5ex10[_0x3d95[52]][_0x3d95[63]]})})[_0x3d95[36]](function(_0xce5ex8){return handleError(_0xce5ex6,_0xce5ex8)})};exports[_0x3d95[64]]= function(_0xce5ex10,_0xce5ex6,_0xce5ex22){FreshdeskAccount[_0x3d95[50]](_0xce5ex10[_0x3d95[49]][_0x3d95[48]])[_0x3d95[10]](handleEntityNotFound(_0xce5ex6))[_0x3d95[10]](function(_0xce5ex1d){var _0xce5ex23= new _fd(_0xce5ex1d[_0x3d95[17]],_0xce5ex1d[_0x3d95[57]]);_0xce5ex23[_0x3d95[66]](_0x3d95[65],function(_0xce5ex8,_0xce5ex1f,_0xce5ex20){if(_0xce5ex8){return _0xce5ex22(_0xce5ex8)};_0xce5ex20= JSON[_0x3d95[58]](_0xce5ex20);return _0xce5ex6[_0x3d95[7]](200)[_0x3d95[6]](_0xce5ex20)})})[_0x3d95[36]](handleError(_0xce5ex6))} \ No newline at end of file diff --git a/server/api/freshdesk_account/freshdesk_account.events.js b/server/api/freshdesk_account/freshdesk_account.events.js index 0b71e73..4f7e80a 100644 --- a/server/api/freshdesk_account/freshdesk_account.events.js +++ b/server/api/freshdesk_account/freshdesk_account.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const FreshdeskAccount = require('../../models').FreshdeskAccount; - -var FreshdeskAccountEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -FreshdeskAccountEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - FreshdeskAccount.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - FreshdeskAccountEvents.emit(event + ':' + doc._id, doc); - FreshdeskAccountEvents.emit(event, doc); - done(null); - } -} - -module.exports = FreshdeskAccountEvents; +var _0x755d=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x46\x72\x65\x73\x68\x64\x65\x73\x6B\x41\x63\x63\x6F\x75\x6E\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x755d[0];const EventEmitter=require(_0x755d[1]);const FreshdeskAccount=require(_0x755d[3])[_0x755d[2]];var FreshdeskAccountEvents= new EventEmitter();FreshdeskAccountEvents[_0x755d[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x755d[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x755d[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x755d[6]};for(var e in events){var event=events[e];FreshdeskAccount[_0x755d[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xa7c1x8,_0xa7c1x9,_0xa7c1xa){FreshdeskAccountEvents[_0x755d[10]](event+ _0x755d[8]+ _0xa7c1x8[_0x755d[9]],_0xa7c1x8);FreshdeskAccountEvents[_0x755d[10]](event,_0xa7c1x8);_0xa7c1xa(null)}}module[_0x755d[11]]= FreshdeskAccountEvents \ No newline at end of file diff --git a/server/api/freshdesk_account/freshdesk_account.socket.js b/server/api/freshdesk_account/freshdesk_account.socket.js index c41142d..0de4e3c 100644 --- a/server/api/freshdesk_account/freshdesk_account.socket.js +++ b/server/api/freshdesk_account/freshdesk_account.socket.js @@ -1,28 +1 @@ -'use strict'; - -const FreshdeskAccountEvents = require('./freshdesk_account.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('freshdesk_account:' + event, socket); - - FreshdeskAccountEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - FreshdeskAccountEvents.removeListener(event, listener); - }; -} +var _0xe2fd=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x66\x72\x65\x73\x68\x64\x65\x73\x6B\x5F\x61\x63\x63\x6F\x75\x6E\x74\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x66\x72\x65\x73\x68\x64\x65\x73\x6B\x5F\x61\x63\x63\x6F\x75\x6E\x74\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xe2fd[0];const FreshdeskAccountEvents=require(_0xe2fd[1]);var events=[_0xe2fd[2],_0xe2fd[3]];exports[_0xe2fd[4]]= function(_0xe998x3){for(var _0xe998x4=0,_0xe998x5=events[_0xe2fd[5]];_0xe998x4< _0xe998x5;_0xe998x4++){var _0xe998x6=events[_0xe998x4];var _0xe998x7=createListener(_0xe2fd[6]+ _0xe998x6,_0xe998x3);FreshdeskAccountEvents[_0xe2fd[7]](_0xe998x6,_0xe998x7);_0xe998x3[_0xe2fd[7]](_0xe2fd[8],removeListener(_0xe998x6,_0xe998x7))}};function createListener(_0xe998x6,_0xe998x3){return function(_0xe998x9){_0xe998x3[_0xe2fd[9]](_0xe998x6,_0xe998x9)}}function removeListener(_0xe998x6,_0xe998x7){return function(){FreshdeskAccountEvents[_0xe2fd[10]](_0xe998x6,_0xe998x7)}} \ No newline at end of file diff --git a/server/api/freshdesk_account/index.js b/server/api/freshdesk_account/index.js index a7385b7..280e501 100644 --- a/server/api/freshdesk_account/index.js +++ b/server/api/freshdesk_account/index.js @@ -1,21 +1 @@ -'use strict'; - -var express = require('express'); -var auth = require('../../auth/auth.service'); -var controller = require('./freshdesk_account.controller'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), controller.index); -router.get('/:id', auth.isAuthenticated(), controller.show); -router.get('/:id/fields', auth.isAuthenticated(), controller.getFields); -router.get('/:id/check', auth.isAuthenticated(), controller.checkAccount); -router.post('/validate/:field', auth.isAuthenticated(), controller.accountValidation); -router.post('/', auth.isAuthenticated(), controller.create); -router.put('/:id', auth.isAuthenticated(), controller.update); -router.patch('/:id', auth.isAuthenticated(), controller.update); -router.delete('/', auth.isAuthenticated(), controller.bulkDestroy); -router.delete('/:id', auth.isAuthenticated(), controller.destroy); - - -module.exports = router; +var _0x18f5=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x66\x72\x65\x73\x68\x64\x65\x73\x6B\x5F\x61\x63\x63\x6F\x75\x6E\x74\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x2F\x3A\x69\x64\x2F\x66\x69\x65\x6C\x64\x73","\x67\x65\x74\x46\x69\x65\x6C\x64\x73","\x2F\x3A\x69\x64\x2F\x63\x68\x65\x63\x6B","\x63\x68\x65\x63\x6B\x41\x63\x63\x6F\x75\x6E\x74","\x2F\x76\x61\x6C\x69\x64\x61\x74\x65\x2F\x3A\x66\x69\x65\x6C\x64","\x61\x63\x63\x6F\x75\x6E\x74\x56\x61\x6C\x69\x64\x61\x74\x69\x6F\x6E","\x70\x6F\x73\x74","\x63\x72\x65\x61\x74\x65","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x70\x61\x74\x63\x68","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0x18f5[0];var express=require(_0x18f5[1]);var auth=require(_0x18f5[2]);var controller=require(_0x18f5[3]);var router=express.Router();router[_0x18f5[7]](_0x18f5[4],auth[_0x18f5[5]](),controller[_0x18f5[6]]);router[_0x18f5[7]](_0x18f5[8],auth[_0x18f5[5]](),controller[_0x18f5[9]]);router[_0x18f5[7]](_0x18f5[10],auth[_0x18f5[5]](),controller[_0x18f5[11]]);router[_0x18f5[7]](_0x18f5[12],auth[_0x18f5[5]](),controller[_0x18f5[13]]);router[_0x18f5[16]](_0x18f5[14],auth[_0x18f5[5]](),controller[_0x18f5[15]]);router[_0x18f5[16]](_0x18f5[4],auth[_0x18f5[5]](),controller[_0x18f5[17]]);router[_0x18f5[19]](_0x18f5[8],auth[_0x18f5[5]](),controller[_0x18f5[18]]);router[_0x18f5[20]](_0x18f5[8],auth[_0x18f5[5]](),controller[_0x18f5[18]]);router[_0x18f5[22]](_0x18f5[4],auth[_0x18f5[5]](),controller[_0x18f5[21]]);router[_0x18f5[22]](_0x18f5[8],auth[_0x18f5[5]](),controller[_0x18f5[23]]);module[_0x18f5[24]]= router \ No newline at end of file diff --git a/server/api/freshdesk_configuration/freshdesk_configuration.controller.js b/server/api/freshdesk_configuration/freshdesk_configuration.controller.js index 4c3d44d..df49372 100644 --- a/server/api/freshdesk_configuration/freshdesk_configuration.controller.js +++ b/server/api/freshdesk_configuration/freshdesk_configuration.controller.js @@ -1,146 +1 @@ -/** - * Using Rails-like standard naming convention for endpoints. - * GET /api/freshdesk/configurations -> index - * POST /api/freshdesk/configurations -> create - * GET /api/freshdesk/configurations/:id -> show - * PUT /api/freshdesk/configurations/:id -> update - * DELETE /api/freshdesk/configurations/:id -> destroy - */ - -'use strict'; - - -var _ = require('lodash'); - -var FreshdeskConfiguration = require('../../models').FreshdeskConfiguration; -var FreshdeskField = require('../../models').FreshdeskField; - -function handleError(res, statusCode) { - statusCode = statusCode || 500; - return function(err) { - res.status(statusCode).send(err); - }; -} - -function responseWithResult(res, statusCode) { - statusCode = statusCode || 200; - return function(entity) { - if (entity) { - res.status(statusCode).json(entity); - } - }; -} - -function handleEntityNotFound(res) { - return function(entity) { - if (!entity) { - res.status(404).end(); - return null; - } - return entity; - }; -} - -function saveUpdates(updates) { - return function(entity) { - return entity.updateAttributes(updates) - .then(function(updated) { - return updated; - }); - }; -} - -function removeEntity(res) { - return function(entity) { - if (entity) { - return entity.destroy() - .then(function() { - res.status(204).end(); - }); - } - }; -} - -// Gets a list of FreshdeskConfigurations -exports.index = function(req, res) { - FreshdeskConfiguration.findAll({ - where: req.query - }) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Gets a single FreshdeskConfiguration from the DB -exports.show = function(req, res) { - FreshdeskConfiguration.find({ - where: { - id: req.params.id - }, - include: [{ - model: FreshdeskField, - as: 'Subject' - }, { - model: FreshdeskField, - as: 'Description' - }, { - model: FreshdeskField, - as: 'Field' - }] - }) - .then(handleEntityNotFound(res)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Creates a new FreshdeskConfiguration in the DB -exports.create = function(req, res) { - FreshdeskConfiguration.create(req.body) - .then(responseWithResult(res, 201)) - .catch(handleError(res)); -} - -// Updates an existing FreshdeskConfiguration in the DB -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - FreshdeskConfiguration.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(saveUpdates(req.body)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Deletes a FreshdeskConfiguration from the DB -exports.destroy = function(req, res) { - FreshdeskConfiguration.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(removeEntity(res)) - .catch(handleError(res)); -} - -exports.addConfigurationField = function(req, res, next) { - // console.log(req.params); - var freshdeskConfiguration; - FreshdeskConfiguration - .findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(function(salesforce_configuration) { - freshdeskConfiguration = salesforce_configuration; - return FreshdeskField.create(req.body) - }) - .then(function(freshdeskField) { - switch (req.params.type) { - case 'subject': - return [freshdeskConfiguration.addSubject(freshdeskField), freshdeskField]; - case 'description': - return [freshdeskConfiguration.addDescription(freshdeskField), freshdeskField]; - case 'field': - return [freshdeskConfiguration.addField(freshdeskField), freshdeskField]; - } - }) - .spread(function(data, freshdeskField) { - return res.status(201).json(freshdeskField); - }) - .catch(handleError(res)); -}; +var _0x1488=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x46\x72\x65\x73\x68\x64\x65\x73\x6B\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x46\x72\x65\x73\x68\x64\x65\x73\x6B\x46\x69\x65\x6C\x64","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x6A\x73\x6F\x6E","\x65\x6E\x64","\x74\x68\x65\x6E","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x64\x65\x73\x74\x72\x6F\x79","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x71\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x68\x6F\x77","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x53\x75\x62\x6A\x65\x63\x74","\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E","\x46\x69\x65\x6C\x64","\x66\x69\x6E\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x66\x69\x6E\x64\x42\x79\x49\x64","\x61\x64\x64\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x46\x69\x65\x6C\x64","\x73\x70\x72\x65\x61\x64","\x61\x64\x64\x53\x75\x62\x6A\x65\x63\x74","\x73\x75\x62\x6A\x65\x63\x74","\x61\x64\x64\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E","\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E","\x61\x64\x64\x46\x69\x65\x6C\x64","\x66\x69\x65\x6C\x64","\x74\x79\x70\x65"];_0x1488[0];var _=require(_0x1488[1]);var FreshdeskConfiguration=require(_0x1488[3])[_0x1488[2]];var FreshdeskField=require(_0x1488[3])[_0x1488[4]];function handleError(_0x6843x5,_0x6843x6){_0x6843x6= _0x6843x6|| 500;return function(_0x6843x7){_0x6843x5[_0x1488[6]](_0x6843x6)[_0x1488[5]](_0x6843x7)}}function responseWithResult(_0x6843x5,_0x6843x6){_0x6843x6= _0x6843x6|| 200;return function(_0x6843x9){if(_0x6843x9){_0x6843x5[_0x1488[6]](_0x6843x6)[_0x1488[7]](_0x6843x9)}}}function handleEntityNotFound(_0x6843x5){return function(_0x6843x9){if(!_0x6843x9){_0x6843x5[_0x1488[6]](404)[_0x1488[8]]();return null};return _0x6843x9}}function saveUpdates(_0x6843xc){return function(_0x6843x9){return _0x6843x9[_0x1488[10]](_0x6843xc)[_0x1488[9]](function(_0x6843xd){return _0x6843xd})}}function removeEntity(_0x6843x5){return function(_0x6843x9){if(_0x6843x9){return _0x6843x9[_0x1488[11]]()[_0x1488[9]](function(){_0x6843x5[_0x1488[6]](204)[_0x1488[8]]()})}}}exports[_0x1488[12]]= function(_0x6843xf,_0x6843x5){FreshdeskConfiguration[_0x1488[15]]({where:_0x6843xf[_0x1488[14]]})[_0x1488[9]](responseWithResult(_0x6843x5))[_0x1488[13]](handleError(_0x6843x5))};exports[_0x1488[16]]= function(_0x6843xf,_0x6843x5){FreshdeskConfiguration[_0x1488[22]]({where:{id:_0x6843xf[_0x1488[18]][_0x1488[17]]},include:[{model:FreshdeskField,as:_0x1488[19]},{model:FreshdeskField,as:_0x1488[20]},{model:FreshdeskField,as:_0x1488[21]}]})[_0x1488[9]](handleEntityNotFound(_0x6843x5))[_0x1488[9]](responseWithResult(_0x6843x5))[_0x1488[13]](handleError(_0x6843x5))};exports[_0x1488[23]]= function(_0x6843xf,_0x6843x5){FreshdeskConfiguration[_0x1488[23]](_0x6843xf[_0x1488[24]])[_0x1488[9]](responseWithResult(_0x6843x5,201))[_0x1488[13]](handleError(_0x6843x5))};exports[_0x1488[25]]= function(_0x6843xf,_0x6843x5){if(_0x6843xf[_0x1488[24]][_0x1488[17]]){delete _0x6843xf[_0x1488[24]][_0x1488[17]]};FreshdeskConfiguration[_0x1488[26]](_0x6843xf[_0x1488[18]][_0x1488[17]])[_0x1488[9]](handleEntityNotFound(_0x6843x5))[_0x1488[9]](saveUpdates(_0x6843xf[_0x1488[24]]))[_0x1488[9]](responseWithResult(_0x6843x5))[_0x1488[13]](handleError(_0x6843x5))};exports[_0x1488[11]]= function(_0x6843xf,_0x6843x5){FreshdeskConfiguration[_0x1488[26]](_0x6843xf[_0x1488[18]][_0x1488[17]])[_0x1488[9]](handleEntityNotFound(_0x6843x5))[_0x1488[9]](removeEntity(_0x6843x5))[_0x1488[13]](handleError(_0x6843x5))};exports[_0x1488[27]]= function(_0x6843xf,_0x6843x5,_0x6843x10){var _0x6843x11;FreshdeskConfiguration[_0x1488[26]](_0x6843xf[_0x1488[18]][_0x1488[17]])[_0x1488[9]](handleEntityNotFound(_0x6843x5))[_0x1488[9]](function(_0x6843x14){_0x6843x11= _0x6843x14;return FreshdeskField[_0x1488[23]](_0x6843xf[_0x1488[24]])})[_0x1488[9]](function(_0x6843x13){switch(_0x6843xf[_0x1488[18]][_0x1488[35]]){case _0x1488[30]:return [_0x6843x11[_0x1488[29]](_0x6843x13),_0x6843x13];case _0x1488[32]:return [_0x6843x11[_0x1488[31]](_0x6843x13),_0x6843x13];case _0x1488[34]:return [_0x6843x11[_0x1488[33]](_0x6843x13),_0x6843x13]}})[_0x1488[28]](function(_0x6843x12,_0x6843x13){return _0x6843x5[_0x1488[6]](201)[_0x1488[7]](_0x6843x13)})[_0x1488[13]](handleError(_0x6843x5))} \ No newline at end of file diff --git a/server/api/freshdesk_configuration/freshdesk_configuration.events.js b/server/api/freshdesk_configuration/freshdesk_configuration.events.js index f36d5f5..e52086d 100644 --- a/server/api/freshdesk_configuration/freshdesk_configuration.events.js +++ b/server/api/freshdesk_configuration/freshdesk_configuration.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const FreshdeskConfiguration = require('../../models').FreshdeskConfiguration; - -var FreshdeskConfigurationEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -FreshdeskConfigurationEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - FreshdeskConfiguration.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - FreshdeskConfigurationEvents.emit(event + ':' + doc._id, doc); - FreshdeskConfigurationEvents.emit(event, doc); - done(null); - } -} - -module.exports = FreshdeskConfigurationEvents; +var _0xee08=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x46\x72\x65\x73\x68\x64\x65\x73\x6B\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xee08[0];const EventEmitter=require(_0xee08[1]);const FreshdeskConfiguration=require(_0xee08[3])[_0xee08[2]];var FreshdeskConfigurationEvents= new EventEmitter();FreshdeskConfigurationEvents[_0xee08[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xee08[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xee08[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xee08[6]};for(var e in events){var event=events[e];FreshdeskConfiguration[_0xee08[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x716ax8,_0x716ax9,_0x716axa){FreshdeskConfigurationEvents[_0xee08[10]](event+ _0xee08[8]+ _0x716ax8[_0xee08[9]],_0x716ax8);FreshdeskConfigurationEvents[_0xee08[10]](event,_0x716ax8);_0x716axa(null)}}module[_0xee08[11]]= FreshdeskConfigurationEvents \ No newline at end of file diff --git a/server/api/freshdesk_configuration/freshdesk_configuration.socket.js b/server/api/freshdesk_configuration/freshdesk_configuration.socket.js index 9c77498..541f18a 100644 --- a/server/api/freshdesk_configuration/freshdesk_configuration.socket.js +++ b/server/api/freshdesk_configuration/freshdesk_configuration.socket.js @@ -1,28 +1 @@ -'use strict'; - -const FreshdeskConfigurationEvents = require('./freshdesk_configuration.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('freshdesk_configuration:' + event, socket); - - FreshdeskConfigurationEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - FreshdeskConfigurationEvents.removeListener(event, listener); - }; -} +var _0x4dbf=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x66\x72\x65\x73\x68\x64\x65\x73\x6B\x5F\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x66\x72\x65\x73\x68\x64\x65\x73\x6B\x5F\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x4dbf[0];const FreshdeskConfigurationEvents=require(_0x4dbf[1]);var events=[_0x4dbf[2],_0x4dbf[3]];exports[_0x4dbf[4]]= function(_0xb480x3){for(var _0xb480x4=0,_0xb480x5=events[_0x4dbf[5]];_0xb480x4< _0xb480x5;_0xb480x4++){var _0xb480x6=events[_0xb480x4];var _0xb480x7=createListener(_0x4dbf[6]+ _0xb480x6,_0xb480x3);FreshdeskConfigurationEvents[_0x4dbf[7]](_0xb480x6,_0xb480x7);_0xb480x3[_0x4dbf[7]](_0x4dbf[8],removeListener(_0xb480x6,_0xb480x7))}};function createListener(_0xb480x6,_0xb480x3){return function(_0xb480x9){_0xb480x3[_0x4dbf[9]](_0xb480x6,_0xb480x9)}}function removeListener(_0xb480x6,_0xb480x7){return function(){FreshdeskConfigurationEvents[_0x4dbf[10]](_0xb480x6,_0xb480x7)}} \ No newline at end of file diff --git a/server/api/freshdesk_configuration/index.js b/server/api/freshdesk_configuration/index.js index e08945f..e4c6e5d 100644 --- a/server/api/freshdesk_configuration/index.js +++ b/server/api/freshdesk_configuration/index.js @@ -1,19 +1 @@ -'use strict'; - -var express = require('express'); -var auth = require('../../auth/auth.service'); -var controller = require('./freshdesk_configuration.controller'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), controller.index); - -router.get('/:id', auth.isAuthenticated(), controller.show); -router.post('/', auth.isAuthenticated(), controller.create); -router.put('/:id', auth.isAuthenticated(), controller.update); -router.post('/:id/:type', auth.isAuthenticated(), controller.addConfigurationField); -router.patch('/:id', auth.isAuthenticated(), controller.update); -router.delete('/:id', auth.isAuthenticated(), controller.destroy); - - -module.exports = router; +var _0x86ea=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x66\x72\x65\x73\x68\x64\x65\x73\x6B\x5F\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x2F\x3A\x69\x64\x2F\x3A\x74\x79\x70\x65","\x61\x64\x64\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x46\x69\x65\x6C\x64","\x70\x61\x74\x63\x68","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0x86ea[0];var express=require(_0x86ea[1]);var auth=require(_0x86ea[2]);var controller=require(_0x86ea[3]);var router=express.Router();router[_0x86ea[7]](_0x86ea[4],auth[_0x86ea[5]](),controller[_0x86ea[6]]);router[_0x86ea[7]](_0x86ea[8],auth[_0x86ea[5]](),controller[_0x86ea[9]]);router[_0x86ea[11]](_0x86ea[4],auth[_0x86ea[5]](),controller[_0x86ea[10]]);router[_0x86ea[13]](_0x86ea[8],auth[_0x86ea[5]](),controller[_0x86ea[12]]);router[_0x86ea[11]](_0x86ea[14],auth[_0x86ea[5]](),controller[_0x86ea[15]]);router[_0x86ea[16]](_0x86ea[8],auth[_0x86ea[5]](),controller[_0x86ea[12]]);router[_0x86ea[18]](_0x86ea[8],auth[_0x86ea[5]](),controller[_0x86ea[17]]);module[_0x86ea[19]]= router \ No newline at end of file diff --git a/server/api/freshdesk_field/freshdesk_field.controller.js b/server/api/freshdesk_field/freshdesk_field.controller.js index 4a35db8..9f4b8cd 100644 --- a/server/api/freshdesk_field/freshdesk_field.controller.js +++ b/server/api/freshdesk_field/freshdesk_field.controller.js @@ -1,104 +1 @@ -/** - * Using Rails-like standard naming convention for endpoints. - * GET /api/freshdesk/fields -> index - * POST /api/freshdesk/fields -> create - * GET /api/freshdesk/fields/:id -> show - * PUT /api/freshdesk/fields/:id -> update - * DELETE /api/freshdesk/fields/:id -> destroy - */ - -'use strict'; - - -var _ = require('lodash'); - -var FreshdeskField = require('../../models').FreshdeskField; - - -function handleError(res, statusCode) { - statusCode = statusCode || 500; - return function(err) { - res.status(statusCode).send(err); - }; -} - -function responseWithResult(res, statusCode) { - statusCode = statusCode || 200; - return function(entity) { - if (entity) { - res.status(statusCode).json(entity); - } - }; -} - -function handleEntityNotFound(res) { - return function(entity) { - if (!entity) { - res.status(404).end(); - return null; - } - return entity; - }; -} - -function saveUpdates(updates) { - return function(entity) { - return entity.updateAttributes(updates) - .then(function(updated) { - return updated; - }); - }; -} - -function removeEntity(res) { - return function(entity) { - if (entity) { - return entity.destroy() - .then(function() { - res.status(204).end(); - }); - } - }; -} - -// Gets a list of FreshdeskFields -exports.index = function(req, res) { - FreshdeskField.findAll() - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Gets a single FreshdeskField from the DB -exports.show = function(req, res) { - FreshdeskField.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Creates a new FreshdeskField in the DB -exports.create = function(req, res) { - FreshdeskField.create(req.body) - .then(responseWithResult(res, 201)) - .catch(handleError(res)); -} - -// Updates an existing FreshdeskField in the DB -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - FreshdeskField.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(saveUpdates(req.body)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Deletes a FreshdeskField from the DB -exports.destroy = function(req, res) { - FreshdeskField.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(removeEntity(res)) - .catch(handleError(res)); -} +var _0xe171=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x46\x72\x65\x73\x68\x64\x65\x73\x6B\x46\x69\x65\x6C\x64","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x6A\x73\x6F\x6E","\x65\x6E\x64","\x74\x68\x65\x6E","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x64\x65\x73\x74\x72\x6F\x79","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x68\x6F\x77","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65"];_0xe171[0];var _=require(_0xe171[1]);var FreshdeskField=require(_0xe171[3])[_0xe171[2]];function handleError(_0xb618x4,_0xb618x5){_0xb618x5= _0xb618x5|| 500;return function(_0xb618x6){_0xb618x4[_0xe171[5]](_0xb618x5)[_0xe171[4]](_0xb618x6)}}function responseWithResult(_0xb618x4,_0xb618x5){_0xb618x5= _0xb618x5|| 200;return function(_0xb618x8){if(_0xb618x8){_0xb618x4[_0xe171[5]](_0xb618x5)[_0xe171[6]](_0xb618x8)}}}function handleEntityNotFound(_0xb618x4){return function(_0xb618x8){if(!_0xb618x8){_0xb618x4[_0xe171[5]](404)[_0xe171[7]]();return null};return _0xb618x8}}function saveUpdates(_0xb618xb){return function(_0xb618x8){return _0xb618x8[_0xe171[9]](_0xb618xb)[_0xe171[8]](function(_0xb618xc){return _0xb618xc})}}function removeEntity(_0xb618x4){return function(_0xb618x8){if(_0xb618x8){return _0xb618x8[_0xe171[10]]()[_0xe171[8]](function(){_0xb618x4[_0xe171[5]](204)[_0xe171[7]]()})}}}exports[_0xe171[11]]= function(_0xb618xe,_0xb618x4){FreshdeskField[_0xe171[13]]()[_0xe171[8]](responseWithResult(_0xb618x4))[_0xe171[12]](handleError(_0xb618x4))};exports[_0xe171[14]]= function(_0xb618xe,_0xb618x4){FreshdeskField[_0xe171[17]](_0xb618xe[_0xe171[16]][_0xe171[15]])[_0xe171[8]](handleEntityNotFound(_0xb618x4))[_0xe171[8]](responseWithResult(_0xb618x4))[_0xe171[12]](handleError(_0xb618x4))};exports[_0xe171[18]]= function(_0xb618xe,_0xb618x4){FreshdeskField[_0xe171[18]](_0xb618xe[_0xe171[19]])[_0xe171[8]](responseWithResult(_0xb618x4,201))[_0xe171[12]](handleError(_0xb618x4))};exports[_0xe171[20]]= function(_0xb618xe,_0xb618x4){if(_0xb618xe[_0xe171[19]][_0xe171[15]]){delete _0xb618xe[_0xe171[19]][_0xe171[15]]};FreshdeskField[_0xe171[17]](_0xb618xe[_0xe171[16]][_0xe171[15]])[_0xe171[8]](handleEntityNotFound(_0xb618x4))[_0xe171[8]](saveUpdates(_0xb618xe[_0xe171[19]]))[_0xe171[8]](responseWithResult(_0xb618x4))[_0xe171[12]](handleError(_0xb618x4))};exports[_0xe171[10]]= function(_0xb618xe,_0xb618x4){FreshdeskField[_0xe171[17]](_0xb618xe[_0xe171[16]][_0xe171[15]])[_0xe171[8]](handleEntityNotFound(_0xb618x4))[_0xe171[8]](removeEntity(_0xb618x4))[_0xe171[12]](handleError(_0xb618x4))} \ No newline at end of file diff --git a/server/api/freshdesk_field/freshdesk_field.events.js b/server/api/freshdesk_field/freshdesk_field.events.js index dcadf5c..32039ab 100644 --- a/server/api/freshdesk_field/freshdesk_field.events.js +++ b/server/api/freshdesk_field/freshdesk_field.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const FreshdeskField = require('../../models').FreshdeskField; - -var FreshdeskFieldEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -FreshdeskFieldEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - FreshdeskField.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - FreshdeskFieldEvents.emit(event + ':' + doc._id, doc); - FreshdeskFieldEvents.emit(event, doc); - done(null); - } -} - -module.exports = FreshdeskFieldEvents; +var _0xcaa3=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x46\x72\x65\x73\x68\x64\x65\x73\x6B\x46\x69\x65\x6C\x64","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xcaa3[0];const EventEmitter=require(_0xcaa3[1]);const FreshdeskField=require(_0xcaa3[3])[_0xcaa3[2]];var FreshdeskFieldEvents= new EventEmitter();FreshdeskFieldEvents[_0xcaa3[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xcaa3[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xcaa3[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xcaa3[6]};for(var e in events){var event=events[e];FreshdeskField[_0xcaa3[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x9d5cx8,_0x9d5cx9,_0x9d5cxa){FreshdeskFieldEvents[_0xcaa3[10]](event+ _0xcaa3[8]+ _0x9d5cx8[_0xcaa3[9]],_0x9d5cx8);FreshdeskFieldEvents[_0xcaa3[10]](event,_0x9d5cx8);_0x9d5cxa(null)}}module[_0xcaa3[11]]= FreshdeskFieldEvents \ No newline at end of file diff --git a/server/api/freshdesk_field/freshdesk_field.socket.js b/server/api/freshdesk_field/freshdesk_field.socket.js index 41eae7a..648f84f 100644 --- a/server/api/freshdesk_field/freshdesk_field.socket.js +++ b/server/api/freshdesk_field/freshdesk_field.socket.js @@ -1,28 +1 @@ -'use strict'; - -const FreshdeskFieldEvents = require('./freshdesk_field.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('freshdesk_field:' + event, socket); - - FreshdeskFieldEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - FreshdeskFieldEvents.removeListener(event, listener); - }; -} +var _0x2893=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x66\x72\x65\x73\x68\x64\x65\x73\x6B\x5F\x66\x69\x65\x6C\x64\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x66\x72\x65\x73\x68\x64\x65\x73\x6B\x5F\x66\x69\x65\x6C\x64\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x2893[0];const FreshdeskFieldEvents=require(_0x2893[1]);var events=[_0x2893[2],_0x2893[3]];exports[_0x2893[4]]= function(_0x7a2dx3){for(var _0x7a2dx4=0,_0x7a2dx5=events[_0x2893[5]];_0x7a2dx4< _0x7a2dx5;_0x7a2dx4++){var _0x7a2dx6=events[_0x7a2dx4];var _0x7a2dx7=createListener(_0x2893[6]+ _0x7a2dx6,_0x7a2dx3);FreshdeskFieldEvents[_0x2893[7]](_0x7a2dx6,_0x7a2dx7);_0x7a2dx3[_0x2893[7]](_0x2893[8],removeListener(_0x7a2dx6,_0x7a2dx7))}};function createListener(_0x7a2dx6,_0x7a2dx3){return function(_0x7a2dx9){_0x7a2dx3[_0x2893[9]](_0x7a2dx6,_0x7a2dx9)}}function removeListener(_0x7a2dx6,_0x7a2dx7){return function(){FreshdeskFieldEvents[_0x2893[10]](_0x7a2dx6,_0x7a2dx7)}} \ No newline at end of file diff --git a/server/api/freshdesk_field/index.js b/server/api/freshdesk_field/index.js index d17268f..a41a8d1 100644 --- a/server/api/freshdesk_field/index.js +++ b/server/api/freshdesk_field/index.js @@ -1,18 +1 @@ -'use strict'; - -var express = require('express'); -var auth = require('../../auth/auth.service'); -var controller = require('./freshdesk_field.controller'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), controller.index); - -router.get('/:id', auth.isAuthenticated(), controller.show); -router.post('/', auth.isAuthenticated(), controller.create); -router.put('/:id', auth.isAuthenticated(), controller.update); -router.patch('/:id', auth.isAuthenticated(), controller.update); -router.delete('/:id', auth.isAuthenticated(), controller.destroy); - - -module.exports = router; +var _0x6a60=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x66\x72\x65\x73\x68\x64\x65\x73\x6B\x5F\x66\x69\x65\x6C\x64\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x70\x61\x74\x63\x68","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0x6a60[0];var express=require(_0x6a60[1]);var auth=require(_0x6a60[2]);var controller=require(_0x6a60[3]);var router=express.Router();router[_0x6a60[7]](_0x6a60[4],auth[_0x6a60[5]](),controller[_0x6a60[6]]);router[_0x6a60[7]](_0x6a60[8],auth[_0x6a60[5]](),controller[_0x6a60[9]]);router[_0x6a60[11]](_0x6a60[4],auth[_0x6a60[5]](),controller[_0x6a60[10]]);router[_0x6a60[13]](_0x6a60[8],auth[_0x6a60[5]](),controller[_0x6a60[12]]);router[_0x6a60[14]](_0x6a60[8],auth[_0x6a60[5]](),controller[_0x6a60[12]]);router[_0x6a60[16]](_0x6a60[8],auth[_0x6a60[5]](),controller[_0x6a60[15]]);module[_0x6a60[17]]= router \ No newline at end of file diff --git a/server/api/integration/index.js b/server/api/integration/index.js index 74118a8..e84ce38 100644 --- a/server/api/integration/index.js +++ b/server/api/integration/index.js @@ -1,15 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./integration.controller'); -var auth = require('../../auth/auth.service'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), auth.hasModule([19], ['admin', 'agent']), controller.index); -router.get('/:id', auth.isAuthenticated(), auth.hasRole('admin'), controller.show); -router.post('/', auth.isAuthenticated(), auth.hasRole('admin'), controller.create); -router.put('/:id', auth.isAuthenticated(), auth.hasRole('admin'), controller.update); -router.delete('/:id', auth.isAuthenticated(), auth.hasRole('admin'), controller.destroy); - -module.exports = router; +var _0xfae4=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x68\x61\x73\x52\x6F\x6C\x65","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0xfae4[0];var express=require(_0xfae4[1]);var controller=require(_0xfae4[2]);var auth=require(_0xfae4[3]);var router=express.Router();router[_0xfae4[10]](_0xfae4[4],auth[_0xfae4[5]](),auth[_0xfae4[8]]([19],[_0xfae4[6],_0xfae4[7]]),controller[_0xfae4[9]]);router[_0xfae4[10]](_0xfae4[11],auth[_0xfae4[5]](),auth[_0xfae4[12]](_0xfae4[6]),controller[_0xfae4[13]]);router[_0xfae4[15]](_0xfae4[4],auth[_0xfae4[5]](),auth[_0xfae4[12]](_0xfae4[6]),controller[_0xfae4[14]]);router[_0xfae4[17]](_0xfae4[11],auth[_0xfae4[5]](),auth[_0xfae4[12]](_0xfae4[6]),controller[_0xfae4[16]]);router[_0xfae4[19]](_0xfae4[11],auth[_0xfae4[5]](),auth[_0xfae4[12]](_0xfae4[6]),controller[_0xfae4[18]]);module[_0xfae4[20]]= router \ No newline at end of file diff --git a/server/api/integration/integration.controller.js b/server/api/integration/integration.controller.js index d99521f..3444571 100644 --- a/server/api/integration/integration.controller.js +++ b/server/api/integration/integration.controller.js @@ -1,168 +1 @@ -'use strict'; - -var _ = require('lodash'); -var uploadFile = require('upload-file'); -var config = require('../../config/environment'); -var path = require('path'); -var sr = require('simple-random'); -var admZip = require('adm-zip'); -var str2json = require('string-to-json'); -var fs = require('fs'); -var Util = require('../../config/util'); - -var Integration = require('../../models').Integration; - -// Get list of Integration -exports.index = function(req, res, next) { - return Integration - .findAndCountAll(Util.getQuery(req.query)) - .then(function(result) { - res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get a single integration -exports.show = function(req, res) { - return Integration - .findById(req.params.id) - .then(function(integration) { - if (!integration) { - return res.sendStatus(404); - } - return res.send(integration); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Creates a new integration in the DB. -exports.create = function(req, res) { - var upload = new uploadFile({ - dest: path.join(config.root, 'server/files/integrations'), - maxFileSize: 5 * 1000000, - maxNumberOfFiles: 1, - minNumberOfFiles: 1, - acceptFileTypes: /(\.|\/)(zip)$/i, - messages: { - maxNumberOfFiles: "Max number of files upload exceeded", - acceptFileTypes: "Only zip format accepted", - maxFileSize: "The maximum file size is 5 Mb", - invalidRequest: "Invalid request" - } - }); - - upload.on('end', function(fields, files) { - var zip = new admZip(files.file.path); - - var manifest = false; - var zipEntries = zip.getEntries(); - zipEntries.forEach(function(zipEntry) { - if (zipEntry.name === 'manifest.json') { - var str = zipEntry.getData().toString('utf8'); - console.log('uploadZip', str); - try { - manifest = JSON.parse(str); - console.log('uploadZip', manifest); - Integration - .create(_.merge(files.file, manifest)) - .then(function(integration) { - - // Extract All Zip and overwrite old directory - zip.extractAllTo(path.join(config.root, - 'server/files/integrations'), true); - - return res.status(201).send(integration); - }) - .catch(function(err) { - return handleError(res, err); - }); - } catch (e) { - console.log(e); - var err = { - errors: [{ - type: 'json', - message: e - }] - }; - return handleError(res, err); - } - } - }); - - fs.unlinkSync(files.file.path); - - if (!manifest) { - var err = { - errors: [{ - type: 'manifest', - message: 'manifest.json not found' - }] - }; - return handleError(res, err); - } - }); - - upload.on('error', function(e) { - var err = { - errors: [{ - type: 'upload', - message: e - }] - }; - return handleError(res, err); - }); - - upload.parse(req); -}; - -// Updates an existing integration in the DB. -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - return Integration - .findById(req.params.id) - .then(function(integration) { - if (!integration) { - return res.sendStatus(404); - } - var updated = _.merge(integration, req.body); - return updated.save(); - }) - .then(function(integration) { - return res.status(200).send(integration); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes a integration from the DB. -exports.destroy = function(req, res) { - return Integration - .find({ - where: { - id: req.params.id - } - }) - .then(function(integration) { - if (!integration) { - return res.sendStatus(404); - } - return integration.destroy(); - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0x1697=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x75\x70\x6C\x6F\x61\x64\x2D\x66\x69\x6C\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x70\x61\x74\x68","\x73\x69\x6D\x70\x6C\x65\x2D\x72\x61\x6E\x64\x6F\x6D","\x61\x64\x6D\x2D\x7A\x69\x70","\x73\x74\x72\x69\x6E\x67\x2D\x74\x6F\x2D\x6A\x73\x6F\x6E","\x66\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x49\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x72\x6F\x6F\x74","\x73\x65\x72\x76\x65\x72\x2F\x66\x69\x6C\x65\x73\x2F\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x73","\x6A\x6F\x69\x6E","\x4D\x61\x78\x20\x6E\x75\x6D\x62\x65\x72\x20\x6F\x66\x20\x66\x69\x6C\x65\x73\x20\x75\x70\x6C\x6F\x61\x64\x20\x65\x78\x63\x65\x65\x64\x65\x64","\x4F\x6E\x6C\x79\x20\x7A\x69\x70\x20\x66\x6F\x72\x6D\x61\x74\x20\x61\x63\x63\x65\x70\x74\x65\x64","\x54\x68\x65\x20\x6D\x61\x78\x69\x6D\x75\x6D\x20\x66\x69\x6C\x65\x20\x73\x69\x7A\x65\x20\x69\x73\x20\x35\x20\x4D\x62","\x49\x6E\x76\x61\x6C\x69\x64\x20\x72\x65\x71\x75\x65\x73\x74","\x65\x6E\x64","\x66\x69\x6C\x65","\x67\x65\x74\x45\x6E\x74\x72\x69\x65\x73","\x6E\x61\x6D\x65","\x6D\x61\x6E\x69\x66\x65\x73\x74\x2E\x6A\x73\x6F\x6E","\x75\x74\x66\x38","\x67\x65\x74\x44\x61\x74\x61","\x75\x70\x6C\x6F\x61\x64\x5A\x69\x70","\x6C\x6F\x67","\x70\x61\x72\x73\x65","\x65\x78\x74\x72\x61\x63\x74\x41\x6C\x6C\x54\x6F","\x6D\x65\x72\x67\x65","\x6A\x73\x6F\x6E","\x66\x6F\x72\x45\x61\x63\x68","\x75\x6E\x6C\x69\x6E\x6B\x53\x79\x6E\x63","\x6D\x61\x6E\x69\x66\x65\x73\x74","\x6D\x61\x6E\x69\x66\x65\x73\x74\x2E\x6A\x73\x6F\x6E\x20\x6E\x6F\x74\x20\x66\x6F\x75\x6E\x64","\x6F\x6E","\x65\x72\x72\x6F\x72","\x75\x70\x6C\x6F\x61\x64","\x75\x70\x64\x61\x74\x65","\x62\x6F\x64\x79","\x73\x61\x76\x65","\x64\x65\x73\x74\x72\x6F\x79","\x66\x69\x6E\x64"];_0x1697[0];var _=require(_0x1697[1]);var uploadFile=require(_0x1697[2]);var config=require(_0x1697[3]);var path=require(_0x1697[4]);var sr=require(_0x1697[5]);var admZip=require(_0x1697[6]);var str2json=require(_0x1697[7]);var fs=require(_0x1697[8]);var Util=require(_0x1697[9]);var Integration=require(_0x1697[11])[_0x1697[10]];exports[_0x1697[12]]= function(_0xc057xb,_0xc057xc,_0xc057xd){return Integration[_0x1697[19]](Util[_0x1697[18]](_0xc057xb[_0x1697[17]]))[_0x1697[16]](function(_0xc057xf){_0xc057xc[_0x1697[15]](200)[_0x1697[14]](_0xc057xf)})[_0x1697[13]](function(_0xc057xe){return handleError(_0xc057xc,_0xc057xe)})};exports[_0x1697[20]]= function(_0xc057xb,_0xc057xc){return Integration[_0x1697[24]](_0xc057xb[_0x1697[23]][_0x1697[22]])[_0x1697[16]](function(_0xc057x10){if(!_0xc057x10){return _0xc057xc[_0x1697[21]](404)};return _0xc057xc[_0x1697[14]](_0xc057x10)})[_0x1697[13]](function(_0xc057xe){return handleError(_0xc057xc,_0xc057xe)})};exports[_0x1697[25]]= function(_0xc057xb,_0xc057xc){var _0xc057x11= new uploadFile({dest:path[_0x1697[28]](config[_0x1697[26]],_0x1697[27]),maxFileSize:5* 1000000,maxNumberOfFiles:1,minNumberOfFiles:1,acceptFileTypes:/(\.|\/)(zip)$/i,messages:{maxNumberOfFiles:_0x1697[29],acceptFileTypes:_0x1697[30],maxFileSize:_0x1697[31],invalidRequest:_0x1697[32]}});_0xc057x11[_0x1697[50]](_0x1697[33],function(_0xc057x12,_0xc057x13){var _0xc057x14= new admZip(_0xc057x13[_0x1697[34]][_0x1697[4]]);var _0xc057x15=false;var _0xc057x16=_0xc057x14[_0x1697[35]]();_0xc057x16[_0x1697[46]](function(_0xc057x17){if(_0xc057x17[_0x1697[36]]=== _0x1697[37]){var _0xc057x18=_0xc057x17[_0x1697[39]]().toString(_0x1697[38]);console[_0x1697[41]](_0x1697[40],_0xc057x18);try{_0xc057x15= JSON[_0x1697[42]](_0xc057x18);console[_0x1697[41]](_0x1697[40],_0xc057x15);Integration[_0x1697[25]](_[_0x1697[44]](_0xc057x13[_0x1697[34]],_0xc057x15))[_0x1697[16]](function(_0xc057x10){_0xc057x14[_0x1697[43]](path[_0x1697[28]](config[_0x1697[26]],_0x1697[27]),true);return _0xc057xc[_0x1697[15]](201)[_0x1697[14]](_0xc057x10)})[_0x1697[13]](function(_0xc057xe){return handleError(_0xc057xc,_0xc057xe)})}catch(e){console[_0x1697[41]](e);var _0xc057xe={errors:[{type:_0x1697[45],message:e}]};return handleError(_0xc057xc,_0xc057xe)}}});fs[_0x1697[47]](_0xc057x13[_0x1697[34]][_0x1697[4]]);if(!_0xc057x15){var _0xc057xe={errors:[{type:_0x1697[48],message:_0x1697[49]}]};return handleError(_0xc057xc,_0xc057xe)}});_0xc057x11[_0x1697[50]](_0x1697[51],function(_0xc057x19){var _0xc057xe={errors:[{type:_0x1697[52],message:_0xc057x19}]};return handleError(_0xc057xc,_0xc057xe)});_0xc057x11[_0x1697[42]](_0xc057xb)};exports[_0x1697[53]]= function(_0xc057xb,_0xc057xc){if(_0xc057xb[_0x1697[54]][_0x1697[22]]){delete _0xc057xb[_0x1697[54]][_0x1697[22]]};return Integration[_0x1697[24]](_0xc057xb[_0x1697[23]][_0x1697[22]])[_0x1697[16]](function(_0xc057x10){if(!_0xc057x10){return _0xc057xc[_0x1697[21]](404)};var _0xc057x1a=_[_0x1697[44]](_0xc057x10,_0xc057xb[_0x1697[54]]);return _0xc057x1a[_0x1697[55]]()})[_0x1697[16]](function(_0xc057x10){return _0xc057xc[_0x1697[15]](200)[_0x1697[14]](_0xc057x10)})[_0x1697[13]](function(_0xc057xe){return handleError(_0xc057xc,_0xc057xe)})};exports[_0x1697[56]]= function(_0xc057xb,_0xc057xc){return Integration[_0x1697[57]]({where:{id:_0xc057xb[_0x1697[23]][_0x1697[22]]}})[_0x1697[16]](function(_0xc057x10){if(!_0xc057x10){return _0xc057xc[_0x1697[21]](404)};return _0xc057x10[_0x1697[56]]()})[_0x1697[16]](function(){return _0xc057xc[_0x1697[21]](204)})[_0x1697[13]](function(_0xc057xe){return handleError(_0xc057xc,_0xc057xe)})};function handleError(_0xc057xc,_0xc057xe){return _0xc057xc[_0x1697[15]](500)[_0x1697[14]](_0xc057xe)} \ No newline at end of file diff --git a/server/api/integration/integration.events.js b/server/api/integration/integration.events.js index 6c9a2bf..6f6d03a 100644 --- a/server/api/integration/integration.events.js +++ b/server/api/integration/integration.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const Integration = require('../../models').Integration; - -var IntegrationEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -IntegrationEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - Integration.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - IntegrationEvents.emit(event + ':' + doc._id, doc); - IntegrationEvents.emit(event, doc); - done(null); - } -} - -module.exports = IntegrationEvents; +var _0x71ac=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x49\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x71ac[0];const EventEmitter=require(_0x71ac[1]);const Integration=require(_0x71ac[3])[_0x71ac[2]];var IntegrationEvents= new EventEmitter();IntegrationEvents[_0x71ac[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x71ac[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x71ac[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x71ac[6]};for(var e in events){var event=events[e];Integration[_0x71ac[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x15c3x8,_0x15c3x9,_0x15c3xa){IntegrationEvents[_0x71ac[10]](event+ _0x71ac[8]+ _0x15c3x8[_0x71ac[9]],_0x15c3x8);IntegrationEvents[_0x71ac[10]](event,_0x15c3x8);_0x15c3xa(null)}}module[_0x71ac[11]]= IntegrationEvents \ No newline at end of file diff --git a/server/api/integration/integration.socket.js b/server/api/integration/integration.socket.js index 849c2ef..d678adf 100644 --- a/server/api/integration/integration.socket.js +++ b/server/api/integration/integration.socket.js @@ -1,28 +1 @@ -'use strict'; - -const IntegrationEvents = require('./integration.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('integration:' + event, socket); - - IntegrationEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - IntegrationEvents.removeListener(event, listener); - }; -} +var _0x31ee=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x31ee[0];const IntegrationEvents=require(_0x31ee[1]);var events=[_0x31ee[2],_0x31ee[3]];exports[_0x31ee[4]]= function(_0xc3c5x3){for(var _0xc3c5x4=0,_0xc3c5x5=events[_0x31ee[5]];_0xc3c5x4< _0xc3c5x5;_0xc3c5x4++){var _0xc3c5x6=events[_0xc3c5x4];var _0xc3c5x7=createListener(_0x31ee[6]+ _0xc3c5x6,_0xc3c5x3);IntegrationEvents[_0x31ee[7]](_0xc3c5x6,_0xc3c5x7);_0xc3c5x3[_0x31ee[7]](_0x31ee[8],removeListener(_0xc3c5x6,_0xc3c5x7))}};function createListener(_0xc3c5x6,_0xc3c5x3){return function(_0xc3c5x9){_0xc3c5x3[_0x31ee[9]](_0xc3c5x6,_0xc3c5x9)}}function removeListener(_0xc3c5x6,_0xc3c5x7){return function(){IntegrationEvents[_0x31ee[10]](_0xc3c5x6,_0xc3c5x7)}} \ No newline at end of file diff --git a/server/api/interval/index.js b/server/api/interval/index.js index 2fb3ff5..ea99c30 100644 --- a/server/api/interval/index.js +++ b/server/api/interval/index.js @@ -1,201 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./interval.controller'); -var auth = require('../../auth/auth.service'); - -var router = express.Router(); - -/** - * @api {get} /api/intervals/ Get intervals' list. - * - * @apiParam (Query) {Number} [offset] Pagination offset. - * @apiParam (Query) {Number} [limit] Pagination limit. - * - * @apiVersion 0.0.140 - * @apiName GetIntervals - * @apiGroup Intervals - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccess {Number} count Number of intervals. - * @apiSuccess {Object[]} rows Get intervals' list. - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 200 OK - * { - * "count": 1, - * "rows": [{ - * "id": 1 - * "name": "I1", - * "description": "Interval mon-fri", - * "SubIntervals": [{ - * "name": "SI1" - * "interval": "9:00-17:00,mon-fri,*,*" - * }] - * }] - * } - */ -router.get('/', auth.isAuthenticated(), auth.hasModule([13, 7, 8, 9, 10, 11], ['admin']), controller.index); - -/** - * @api {get} /api/intervals/:id Get interval's details. - * @apiParam {Number} id Interval's unique ID. - * @apiVersion 0.0.140 - * @apiName GetInterval - * @apiGroup Intervals - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccess {Object} Get interval's details. - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 200 OK - * { - * "id": 1 - * "name": "I1", - * "description": "Interval mon-fri", - * "SubIntervals": [{ - * "name": "SI1" - * "interval": "9:00-17:00,mon-fri,*,*" - * }] - * } - */ -router.get('/:id', auth.isAuthenticated(), auth.hasModule([13], ['admin']), controller.show); - -/** - * @api {post} /api/intervals/ Create interval. - * - * @apiParamExample {json} Request-Example: - * { - * "name": "I1", - * "description": "Interval mon-fri", - * "SubIntervals": [{ - * "name": "SI1" - * "interval": "9:00-17:00,mon-fri,*,*" - * }] - * } - * - * @apiParam (Body) {String} name Interval's name. - * @apiParam (Body) {Object[]} [SubIntervals] SubIntervals' array. - * @apiParam (Body) {String} [description] Interval's description. - * - * @apiVersion 0.0.140 - * @apiName CreateInterval - * @apiGroup Intervals - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 201 Created - * { - * "id": 1 - * "name": "john.doe", - * "email": "john.doe@xcally.com", - * "internal": 1001, - * "fullname": "John Doe", - * ... - * } - */ -router.post('/', auth.isAuthenticated(), auth.hasModule([13], ['admin']), controller.create); - -/** - * @api {put} /api/intervals/:id Update interval. - * - * @apiParamExample {json} Request-Example: - * { - * "name": "I1", - * "description": "Interval mon-fri", - * "SubIntervals": [{ - * "name": "SI1" - * "interval": "9:00-17:00,mon-fri,*,*" - * }] - * } - * - * @apiParam (Params) {Number} id Interval's unique ID. - * @apiParam (Body) {String} name Interval's name. - * @apiParam (Body) {Object[]} [SubIntervals] SubIntervals' array. - * @apiParam (Body) {String} [description] Interval's description. - * - * @apiVersion 0.0.140 - * @apiName UpdateInterval - * @apiGroup Intervals - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 200 OK - * { - * "id": 1 - * "name": "john.doe", - * "email": "john.doe@xcally.com", - * "internal": 1001, - * "fullname": "John Doe", - * ... - * } - */ -router.put('/:id', auth.isAuthenticated(), auth.hasModule([13], ['admin']), controller.update); - -/** - * @api {delete} /api/intervals/ Bulk Delete intervals' details. - * - * @apiParam (Query) {Number[]} ids Intervals' unique ID array. - * - * @apiVersion 0.0.140 - * @apiName BulkDeleteIntervals - * @apiGroup Intervals - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 204 No Content - */ -router.delete('/', auth.isAuthenticated(), auth.hasModule([13], ['admin']), controller.bulkDestroy); - -/** - * @api {delete} /api/intervals/:id Delete interval's details. - * - * @apiParam {Number} id Interval's unique ID. - * - * @apiVersion 0.0.140 - * @apiName DeleteInterval - * @apiGroup Intervals - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 204 No Content - */ -router.delete('/:id', auth.isAuthenticated(), auth.hasModule([13], ['admin']), controller.destroy); - -module.exports = router; +var _0xe2b8=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x69\x6E\x74\x65\x72\x76\x61\x6C\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0xe2b8[0];var express=require(_0xe2b8[1]);var controller=require(_0xe2b8[2]);var auth=require(_0xe2b8[3]);var router=express.Router();router[_0xe2b8[9]](_0xe2b8[4],auth[_0xe2b8[5]](),auth[_0xe2b8[7]]([13,7,8,9,10,11],[_0xe2b8[6]]),controller[_0xe2b8[8]]);router[_0xe2b8[9]](_0xe2b8[10],auth[_0xe2b8[5]](),auth[_0xe2b8[7]]([13],[_0xe2b8[6]]),controller[_0xe2b8[11]]);router[_0xe2b8[13]](_0xe2b8[4],auth[_0xe2b8[5]](),auth[_0xe2b8[7]]([13],[_0xe2b8[6]]),controller[_0xe2b8[12]]);router[_0xe2b8[15]](_0xe2b8[10],auth[_0xe2b8[5]](),auth[_0xe2b8[7]]([13],[_0xe2b8[6]]),controller[_0xe2b8[14]]);router[_0xe2b8[17]](_0xe2b8[4],auth[_0xe2b8[5]](),auth[_0xe2b8[7]]([13],[_0xe2b8[6]]),controller[_0xe2b8[16]]);router[_0xe2b8[17]](_0xe2b8[10],auth[_0xe2b8[5]](),auth[_0xe2b8[7]]([13],[_0xe2b8[6]]),controller[_0xe2b8[18]]);module[_0xe2b8[19]]= router \ No newline at end of file diff --git a/server/api/interval/interval.controller.js b/server/api/interval/interval.controller.js index 8931ac2..baef449 100644 --- a/server/api/interval/interval.controller.js +++ b/server/api/interval/interval.controller.js @@ -1,195 +1 @@ -'use strict'; - -var _ = require('lodash'); -var Interval = require('../../models').Interval; -var VoiceExtension = require('../../models').VoiceExtension; -var sequelize = require('../../models').sequelize; -var Promise = require('bluebird'); - -var Util = require('../../config/util'); - -// Get list of interval -exports.index = function(req, res, next) { - return Interval - .scope('intervals', 'subintervals') - .findAndCountAll(_.merge(Util.getQuery(req.query), { - distinct: true - })) - .then(function(result) { - res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get a single interval -exports.show = function(req, res) { - return Interval - .scope('subintervals') - .findById(req.params.id) - .then(function(interval) { - if (!interval) { - return res.sendStatus(404); - } - return res.send(interval); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Creates a new interval in the DB. -exports.create = function(req, res) { - return Interval - .scope('subintervals') - .create(req.body) - .then(function(interval) { - return res.status(201).send(interval); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -// Updates an existing interval in the DB. -exports.update = function(req, res) { - var _interval; - return sequelize.transaction(function(t) { - if (req.body.id) { - delete req.body.id; - } - return Interval - .scope('subintervals') - .findById(req.params.id) - .then(function(interval) { - if (!interval) { - return res.sendStatus(404); - } - _interval = _.clone(interval); - return interval - .updateAttributes(req.body, { - transaction: t - }); - }) - .then(function() { - if (req.body.SubIntervals && !req.body.SubIntervals.length) { //if I pass an empty subintervals object it means I want to delete all the sub-intervals - return Interval - .destroy({ - where: { - IntervalId: req.params.id - }, - transaction: t - }); - } else if (req.body.SubIntervals && req.body.SubIntervals.length) { //otherwise i update, add or delete sub-intervals depending on the object content - return bulkCreateSubIntervals(req.body.SubIntervals, _interval, t) - } - }) - }) - .then(function() { - return res.sendStatus(200); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -function bulkCreateSubIntervals(subIntervals, _interval, t) { - return Promise - .all([]) - .then(function() { - var bulkSubInts = []; - var oldSubIntervals = _.map(_interval.SubIntervals, 'dataValues'); - var newInterval; - _.forEach(oldSubIntervals, function(element, index) { - newInterval = _.find(subIntervals, { - id: element.id - }); - if (newInterval) { - newInterval.IntervalId = _interval.id; - bulkSubInts.push(Interval.update(_.clone(newInterval), { - where: { - id: element.id - }, - transaction: t, - individualHooks: true - })); - _.remove(subIntervals, { - id: element.id - }); - } else { - bulkSubInts.push(Interval - .destroy({ - where: { - id: element.id - }, - transaction: t - })); - } - }); - _.forEach(subIntervals, function(element) { - element.IntervalId = _interval.id; - bulkSubInts.push(Interval.create(element, { - transaction: t - })); - }); - return bulkSubInts; - }) - .all(); -} - -// Deletes a interval from the DB. -exports.destroy = function(req, res) { - return sequelize.transaction(function(t) { - return Interval - .destroy({ - where: { - id: req.params.id - }, - individualHooks: true, - transaction: t - }); - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(sequelize.ForeignKeyConstraintError, function(err) { - err.message = 'The Interval is associated with one or more routes, delete them first'; - err.translatedMessage = 'MESSAGE_INTERVAL_ROUTE_ASSOCIATED' - return handleError(res, err); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes multiple intervals from the DB. -exports.bulkDestroy = function(req, res) { - return sequelize.transaction(function(t) { - return Interval - .destroy({ - where: { - id: req.query.ids - }, - individualHooks: true, - transaction: t - }); - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(sequelize.ForeignKeyConstraintError, function(err) { - err.message = 'The Interval is associated with one or more routes, delete them first'; - err.translatedMessage = 'MESSAGE_INTERVAL_ROUTE_ASSOCIATED' - return handleError(res, err); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0xc514=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x49\x6E\x74\x65\x72\x76\x61\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x56\x6F\x69\x63\x65\x45\x78\x74\x65\x6E\x73\x69\x6F\x6E","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x62\x6C\x75\x65\x62\x69\x72\x64","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x6D\x65\x72\x67\x65","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x69\x6E\x74\x65\x72\x76\x61\x6C\x73","\x73\x75\x62\x69\x6E\x74\x65\x72\x76\x61\x6C\x73","\x73\x63\x6F\x70\x65","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x6C\x6F\x67","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x53\x75\x62\x49\x6E\x74\x65\x72\x76\x61\x6C\x73","\x6C\x65\x6E\x67\x74\x68","\x64\x65\x73\x74\x72\x6F\x79","\x63\x6C\x6F\x6E\x65","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x74\x72\x61\x6E\x73\x61\x63\x74\x69\x6F\x6E","\x61\x6C\x6C","\x64\x61\x74\x61\x56\x61\x6C\x75\x65\x73","\x6D\x61\x70","\x66\x69\x6E\x64","\x49\x6E\x74\x65\x72\x76\x61\x6C\x49\x64","\x70\x75\x73\x68","\x72\x65\x6D\x6F\x76\x65","\x66\x6F\x72\x45\x61\x63\x68","\x6D\x65\x73\x73\x61\x67\x65","\x54\x68\x65\x20\x49\x6E\x74\x65\x72\x76\x61\x6C\x20\x69\x73\x20\x61\x73\x73\x6F\x63\x69\x61\x74\x65\x64\x20\x77\x69\x74\x68\x20\x6F\x6E\x65\x20\x6F\x72\x20\x6D\x6F\x72\x65\x20\x72\x6F\x75\x74\x65\x73\x2C\x20\x64\x65\x6C\x65\x74\x65\x20\x74\x68\x65\x6D\x20\x66\x69\x72\x73\x74","\x74\x72\x61\x6E\x73\x6C\x61\x74\x65\x64\x4D\x65\x73\x73\x61\x67\x65","\x4D\x45\x53\x53\x41\x47\x45\x5F\x49\x4E\x54\x45\x52\x56\x41\x4C\x5F\x52\x4F\x55\x54\x45\x5F\x41\x53\x53\x4F\x43\x49\x41\x54\x45\x44","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73"];_0xc514[0];var _=require(_0xc514[1]);var Interval=require(_0xc514[3])[_0xc514[2]];var VoiceExtension=require(_0xc514[3])[_0xc514[4]];var sequelize=require(_0xc514[3])[_0xc514[5]];var Promise=require(_0xc514[6]);var Util=require(_0xc514[7]);exports[_0xc514[8]]= function(_0x1926x7,_0x1926x8,_0x1926x9){return Interval[_0xc514[19]](_0xc514[17],_0xc514[18])[_0xc514[16]](_[_0xc514[15]](Util[_0xc514[14]](_0x1926x7[_0xc514[13]]),{distinct:true}))[_0xc514[12]](function(_0x1926xb){_0x1926x8[_0xc514[11]](200)[_0xc514[10]](_0x1926xb)})[_0xc514[9]](function(_0x1926xa){return handleError(_0x1926x8,_0x1926xa)})};exports[_0xc514[20]]= function(_0x1926x7,_0x1926x8){return Interval[_0xc514[19]](_0xc514[18])[_0xc514[24]](_0x1926x7[_0xc514[23]][_0xc514[22]])[_0xc514[12]](function(_0x1926xc){if(!_0x1926xc){return _0x1926x8[_0xc514[21]](404)};return _0x1926x8[_0xc514[10]](_0x1926xc)})[_0xc514[9]](function(_0x1926xa){return handleError(_0x1926x8,_0x1926xa)})};exports[_0xc514[25]]= function(_0x1926x7,_0x1926x8){return Interval[_0xc514[19]](_0xc514[18])[_0xc514[25]](_0x1926x7[_0xc514[27]])[_0xc514[12]](function(_0x1926xc){return _0x1926x8[_0xc514[11]](201)[_0xc514[10]](_0x1926xc)})[_0xc514[9]](function(_0x1926xa){console[_0xc514[26]](_0x1926xa);return handleError(_0x1926x8,_0x1926xa)})};exports[_0xc514[28]]= function(_0x1926x7,_0x1926x8){var _0x1926xd;return sequelize[_0xc514[34]](function(_0x1926xe){if(_0x1926x7[_0xc514[27]][_0xc514[22]]){delete _0x1926x7[_0xc514[27]][_0xc514[22]]};return Interval[_0xc514[19]](_0xc514[18])[_0xc514[24]](_0x1926x7[_0xc514[23]][_0xc514[22]])[_0xc514[12]](function(_0x1926xc){if(!_0x1926xc){return _0x1926x8[_0xc514[21]](404)};_0x1926xd= _[_0xc514[32]](_0x1926xc);return _0x1926xc[_0xc514[33]](_0x1926x7[_0xc514[27]],{transaction:_0x1926xe})})[_0xc514[12]](function(){if(_0x1926x7[_0xc514[27]][_0xc514[29]]&& !_0x1926x7[_0xc514[27]][_0xc514[29]][_0xc514[30]]){return Interval[_0xc514[31]]({where:{IntervalId:_0x1926x7[_0xc514[23]][_0xc514[22]]},transaction:_0x1926xe})}else {if(_0x1926x7[_0xc514[27]][_0xc514[29]]&& _0x1926x7[_0xc514[27]][_0xc514[29]][_0xc514[30]]){return bulkCreateSubIntervals(_0x1926x7[_0xc514[27]].SubIntervals,_0x1926xd,_0x1926xe)}}})})[_0xc514[12]](function(){return _0x1926x8[_0xc514[21]](200)})[_0xc514[9]](function(_0x1926xa){console[_0xc514[26]](_0x1926xa);return handleError(_0x1926x8,_0x1926xa)})};function bulkCreateSubIntervals(_0x1926x10,_0x1926xd,_0x1926xe){return Promise[_0xc514[35]]([])[_0xc514[12]](function(){var _0x1926x11=[];var _0x1926x12=_[_0xc514[37]](_0x1926xd.SubIntervals,_0xc514[36]);var _0x1926x13;_[_0xc514[42]](_0x1926x12,function(_0x1926x14,_0x1926x15){_0x1926x13= _[_0xc514[38]](_0x1926x10,{id:_0x1926x14[_0xc514[22]]});if(_0x1926x13){_0x1926x13[_0xc514[39]]= _0x1926xd[_0xc514[22]];_0x1926x11[_0xc514[40]](Interval[_0xc514[28]](_[_0xc514[32]](_0x1926x13),{where:{id:_0x1926x14[_0xc514[22]]},transaction:_0x1926xe,individualHooks:true}));_[_0xc514[41]](_0x1926x10,{id:_0x1926x14[_0xc514[22]]})}else {_0x1926x11[_0xc514[40]](Interval[_0xc514[31]]({where:{id:_0x1926x14[_0xc514[22]]},transaction:_0x1926xe}))}});_[_0xc514[42]](_0x1926x10,function(_0x1926x14){_0x1926x14[_0xc514[39]]= _0x1926xd[_0xc514[22]];_0x1926x11[_0xc514[40]](Interval[_0xc514[25]](_0x1926x14,{transaction:_0x1926xe}))});return _0x1926x11})[_0xc514[35]]()}exports[_0xc514[31]]= function(_0x1926x7,_0x1926x8){return sequelize[_0xc514[34]](function(_0x1926xe){return Interval[_0xc514[31]]({where:{id:_0x1926x7[_0xc514[23]][_0xc514[22]]},individualHooks:true,transaction:_0x1926xe})})[_0xc514[12]](function(){return _0x1926x8[_0xc514[21]](204)})[_0xc514[9]](sequelize.ForeignKeyConstraintError,function(_0x1926xa){_0x1926xa[_0xc514[43]]= _0xc514[44];_0x1926xa[_0xc514[45]]= _0xc514[46];return handleError(_0x1926x8,_0x1926xa)})[_0xc514[9]](function(_0x1926xa){return handleError(_0x1926x8,_0x1926xa)})};exports[_0xc514[47]]= function(_0x1926x7,_0x1926x8){return sequelize[_0xc514[34]](function(_0x1926xe){return Interval[_0xc514[31]]({where:{id:_0x1926x7[_0xc514[13]][_0xc514[48]]},individualHooks:true,transaction:_0x1926xe})})[_0xc514[12]](function(){return _0x1926x8[_0xc514[21]](204)})[_0xc514[9]](sequelize.ForeignKeyConstraintError,function(_0x1926xa){_0x1926xa[_0xc514[43]]= _0xc514[44];_0x1926xa[_0xc514[45]]= _0xc514[46];return handleError(_0x1926x8,_0x1926xa)})[_0xc514[9]](function(_0x1926xa){return handleError(_0x1926x8,_0x1926xa)})};function handleError(_0x1926x8,_0x1926xa){return _0x1926x8[_0xc514[11]](500)[_0xc514[10]](_0x1926xa)} \ No newline at end of file diff --git a/server/api/interval/interval.events.js b/server/api/interval/interval.events.js index cd38713..82d01a8 100644 --- a/server/api/interval/interval.events.js +++ b/server/api/interval/interval.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const Interval = require('../../models').Interval; - -var IntervalEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -IntervalEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - Interval.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - IntervalEvents.emit(event + ':' + doc._id, doc); - IntervalEvents.emit(event, doc); - done(null); - } -} - -module.exports = IntervalEvents; +var _0x7a18=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x49\x6E\x74\x65\x72\x76\x61\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x7a18[0];const EventEmitter=require(_0x7a18[1]);const Interval=require(_0x7a18[3])[_0x7a18[2]];var IntervalEvents= new EventEmitter();IntervalEvents[_0x7a18[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x7a18[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x7a18[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x7a18[6]};for(var e in events){var event=events[e];Interval[_0x7a18[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x79cdx8,_0x79cdx9,_0x79cdxa){IntervalEvents[_0x7a18[10]](event+ _0x7a18[8]+ _0x79cdx8[_0x7a18[9]],_0x79cdx8);IntervalEvents[_0x7a18[10]](event,_0x79cdx8);_0x79cdxa(null)}}module[_0x7a18[11]]= IntervalEvents \ No newline at end of file diff --git a/server/api/interval/interval.socket.js b/server/api/interval/interval.socket.js index 8d62dce..edfdcbe 100644 --- a/server/api/interval/interval.socket.js +++ b/server/api/interval/interval.socket.js @@ -1,28 +1 @@ -'use strict'; - -const IntervalEvents = require('./interval.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('interval:' + event, socket); - - IntervalEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - IntervalEvents.removeListener(event, listener); - }; -} +var _0xa2f3=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x69\x6E\x74\x65\x72\x76\x61\x6C\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x69\x6E\x74\x65\x72\x76\x61\x6C\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xa2f3[0];const IntervalEvents=require(_0xa2f3[1]);var events=[_0xa2f3[2],_0xa2f3[3]];exports[_0xa2f3[4]]= function(_0x6ed8x3){for(var _0x6ed8x4=0,_0x6ed8x5=events[_0xa2f3[5]];_0x6ed8x4< _0x6ed8x5;_0x6ed8x4++){var _0x6ed8x6=events[_0x6ed8x4];var _0x6ed8x7=createListener(_0xa2f3[6]+ _0x6ed8x6,_0x6ed8x3);IntervalEvents[_0xa2f3[7]](_0x6ed8x6,_0x6ed8x7);_0x6ed8x3[_0xa2f3[7]](_0xa2f3[8],removeListener(_0x6ed8x6,_0x6ed8x7))}};function createListener(_0x6ed8x6,_0x6ed8x3){return function(_0x6ed8x9){_0x6ed8x3[_0xa2f3[9]](_0x6ed8x6,_0x6ed8x9)}}function removeListener(_0x6ed8x6,_0x6ed8x7){return function(){IntervalEvents[_0xa2f3[10]](_0x6ed8x6,_0x6ed8x7)}} \ No newline at end of file diff --git a/server/api/jscripty_project/index.js b/server/api/jscripty_project/index.js index dba0e5b..a1325bb 100644 --- a/server/api/jscripty_project/index.js +++ b/server/api/jscripty_project/index.js @@ -1,33 +1 @@ -'use strict'; - -var express = require('express'); -var auth = require('../../auth/auth.service'); -var controller = require('./jscripty_project.controller'); -var license = require('../../config/license/license.service'); - -var router = express.Router(); - - -router.get('/', license.isValidDate(), license.hasJscripty(), auth.isAuthenticated(), auth.hasModule([15], ['admin', 'agent']), controller.index); -router.get('/:id', license.isValidDate(), license.hasJscripty(), auth.isAuthenticated(), auth.hasModule([15], ['admin']), controller.show); -router.get('/:id/download', license.isValidDate(), license.hasJscripty(), auth.isAuthenticated(), auth.hasModule([15], ['admin', 'agent']), controller.download); -router.get('/:id/sessions', license.isValidDate(), license.hasJscripty(), auth.isAuthenticated(), auth.hasModule([15], ['admin']), controller.showSessions); -router.get('/:id/sessions/:sessionId', license.isValidDate(), license.hasJscripty(), auth.isAuthenticated(), auth.hasModule([15], ['admin']), controller.showSession); -router.get('/:id/questions/:questionId/detail', license.isValidDate(), license.hasJscripty(), auth.isAuthenticated(), auth.hasModule([15], ['admin']), controller.showQuestionDetail); -router.get('/:id/questions', license.isValidDate(), license.hasJscripty(), auth.isAuthenticated(), auth.hasModule([15], ['admin']), controller.showQuestions); -router.get('/:id/questions/summary', license.isValidDate(), license.hasJscripty(), auth.isAuthenticated(), auth.hasModule([15], ['admin']), controller.showSummary); -router.get('/:id/inputs', license.isValidDate(), license.hasJscripty(), auth.isAuthenticated(), auth.hasModule([15], ['admin']), controller.showInputs); -// router.get('/:id/questions/:questionId/otherOption', license.isValidDate(), license.hasJscripty(), auth.isAuthenticated(), auth.hasModule([15], ['admin']), controller.showOther); -router.get('/:id/questions/detail', license.isValidDate(), license.hasJscripty(), auth.isAuthenticated(), auth.hasModule([15], ['admin']), controller.showDetail); -router.post('/', license.isValidDate(), license.hasJscripty(), auth.isAuthenticated(), auth.hasModule([15], ['admin']), controller.create); -router.post('/:id/sessions', license.isValidDate(), license.hasJscripty(), auth.isAuthenticated(), auth.hasModule([15], ['admin', 'agent']), controller.createSession); -router.post('/:id/sessions/:sessionId/questions', license.isValidDate(), license.hasJscripty(), auth.isAuthenticated(), auth.hasModule([15], ['admin', 'agent']), controller.createQuestions); -router.put('/:id', license.isValidDate(), license.hasJscripty(), auth.isAuthenticated(), auth.hasModule([15], ['admin']), controller.update); -router.put('/:id/sessions/:sessionId', license.isValidDate(), license.hasJscripty(), auth.isAuthenticated(), auth.hasModule([15], ['admin', 'agent']), controller.updateSession); -router.delete('/:id/sessions/:sessionId', license.isValidDate(), license.hasJscripty(), auth.isAuthenticated(), auth.hasModule([15], ['admin']), controller.destroySession); -router.delete('/', license.isValidDate(), license.hasJscripty(), auth.isAuthenticated(), auth.hasModule([15], ['admin']), controller.bulkDestroy); -router.delete('/:id', license.isValidDate(), license.hasJscripty(), auth.isAuthenticated(), auth.hasModule([15], ['admin']), controller.destroy); - - - -module.exports = router; +var _0xa917=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x6A\x73\x63\x72\x69\x70\x74\x79\x5F\x70\x72\x6F\x6A\x65\x63\x74\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x68\x61\x73\x4A\x73\x63\x72\x69\x70\x74\x79","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x2F\x3A\x69\x64\x2F\x64\x6F\x77\x6E\x6C\x6F\x61\x64","\x64\x6F\x77\x6E\x6C\x6F\x61\x64","\x2F\x3A\x69\x64\x2F\x73\x65\x73\x73\x69\x6F\x6E\x73","\x73\x68\x6F\x77\x53\x65\x73\x73\x69\x6F\x6E\x73","\x2F\x3A\x69\x64\x2F\x73\x65\x73\x73\x69\x6F\x6E\x73\x2F\x3A\x73\x65\x73\x73\x69\x6F\x6E\x49\x64","\x73\x68\x6F\x77\x53\x65\x73\x73\x69\x6F\x6E","\x2F\x3A\x69\x64\x2F\x71\x75\x65\x73\x74\x69\x6F\x6E\x73\x2F\x3A\x71\x75\x65\x73\x74\x69\x6F\x6E\x49\x64\x2F\x64\x65\x74\x61\x69\x6C","\x73\x68\x6F\x77\x51\x75\x65\x73\x74\x69\x6F\x6E\x44\x65\x74\x61\x69\x6C","\x2F\x3A\x69\x64\x2F\x71\x75\x65\x73\x74\x69\x6F\x6E\x73","\x73\x68\x6F\x77\x51\x75\x65\x73\x74\x69\x6F\x6E\x73","\x2F\x3A\x69\x64\x2F\x71\x75\x65\x73\x74\x69\x6F\x6E\x73\x2F\x73\x75\x6D\x6D\x61\x72\x79","\x73\x68\x6F\x77\x53\x75\x6D\x6D\x61\x72\x79","\x2F\x3A\x69\x64\x2F\x69\x6E\x70\x75\x74\x73","\x73\x68\x6F\x77\x49\x6E\x70\x75\x74\x73","\x2F\x3A\x69\x64\x2F\x71\x75\x65\x73\x74\x69\x6F\x6E\x73\x2F\x64\x65\x74\x61\x69\x6C","\x73\x68\x6F\x77\x44\x65\x74\x61\x69\x6C","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x63\x72\x65\x61\x74\x65\x53\x65\x73\x73\x69\x6F\x6E","\x2F\x3A\x69\x64\x2F\x73\x65\x73\x73\x69\x6F\x6E\x73\x2F\x3A\x73\x65\x73\x73\x69\x6F\x6E\x49\x64\x2F\x71\x75\x65\x73\x74\x69\x6F\x6E\x73","\x63\x72\x65\x61\x74\x65\x51\x75\x65\x73\x74\x69\x6F\x6E\x73","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x75\x70\x64\x61\x74\x65\x53\x65\x73\x73\x69\x6F\x6E","\x64\x65\x73\x74\x72\x6F\x79\x53\x65\x73\x73\x69\x6F\x6E","\x64\x65\x6C\x65\x74\x65","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0xa917[0];var express=require(_0xa917[1]);var auth=require(_0xa917[2]);var controller=require(_0xa917[3]);var license=require(_0xa917[4]);var router=express.Router();router[_0xa917[13]](_0xa917[5],license[_0xa917[6]](),license[_0xa917[7]](),auth[_0xa917[8]](),auth[_0xa917[11]]([15],[_0xa917[9],_0xa917[10]]),controller[_0xa917[12]]);router[_0xa917[13]](_0xa917[14],license[_0xa917[6]](),license[_0xa917[7]](),auth[_0xa917[8]](),auth[_0xa917[11]]([15],[_0xa917[9]]),controller[_0xa917[15]]);router[_0xa917[13]](_0xa917[16],license[_0xa917[6]](),license[_0xa917[7]](),auth[_0xa917[8]](),auth[_0xa917[11]]([15],[_0xa917[9],_0xa917[10]]),controller[_0xa917[17]]);router[_0xa917[13]](_0xa917[18],license[_0xa917[6]](),license[_0xa917[7]](),auth[_0xa917[8]](),auth[_0xa917[11]]([15],[_0xa917[9]]),controller[_0xa917[19]]);router[_0xa917[13]](_0xa917[20],license[_0xa917[6]](),license[_0xa917[7]](),auth[_0xa917[8]](),auth[_0xa917[11]]([15],[_0xa917[9]]),controller[_0xa917[21]]);router[_0xa917[13]](_0xa917[22],license[_0xa917[6]](),license[_0xa917[7]](),auth[_0xa917[8]](),auth[_0xa917[11]]([15],[_0xa917[9]]),controller[_0xa917[23]]);router[_0xa917[13]](_0xa917[24],license[_0xa917[6]](),license[_0xa917[7]](),auth[_0xa917[8]](),auth[_0xa917[11]]([15],[_0xa917[9]]),controller[_0xa917[25]]);router[_0xa917[13]](_0xa917[26],license[_0xa917[6]](),license[_0xa917[7]](),auth[_0xa917[8]](),auth[_0xa917[11]]([15],[_0xa917[9]]),controller[_0xa917[27]]);router[_0xa917[13]](_0xa917[28],license[_0xa917[6]](),license[_0xa917[7]](),auth[_0xa917[8]](),auth[_0xa917[11]]([15],[_0xa917[9]]),controller[_0xa917[29]]);router[_0xa917[13]](_0xa917[30],license[_0xa917[6]](),license[_0xa917[7]](),auth[_0xa917[8]](),auth[_0xa917[11]]([15],[_0xa917[9]]),controller[_0xa917[31]]);router[_0xa917[33]](_0xa917[5],license[_0xa917[6]](),license[_0xa917[7]](),auth[_0xa917[8]](),auth[_0xa917[11]]([15],[_0xa917[9]]),controller[_0xa917[32]]);router[_0xa917[33]](_0xa917[18],license[_0xa917[6]](),license[_0xa917[7]](),auth[_0xa917[8]](),auth[_0xa917[11]]([15],[_0xa917[9],_0xa917[10]]),controller[_0xa917[34]]);router[_0xa917[33]](_0xa917[35],license[_0xa917[6]](),license[_0xa917[7]](),auth[_0xa917[8]](),auth[_0xa917[11]]([15],[_0xa917[9],_0xa917[10]]),controller[_0xa917[36]]);router[_0xa917[38]](_0xa917[14],license[_0xa917[6]](),license[_0xa917[7]](),auth[_0xa917[8]](),auth[_0xa917[11]]([15],[_0xa917[9]]),controller[_0xa917[37]]);router[_0xa917[38]](_0xa917[20],license[_0xa917[6]](),license[_0xa917[7]](),auth[_0xa917[8]](),auth[_0xa917[11]]([15],[_0xa917[9],_0xa917[10]]),controller[_0xa917[39]]);router[_0xa917[41]](_0xa917[20],license[_0xa917[6]](),license[_0xa917[7]](),auth[_0xa917[8]](),auth[_0xa917[11]]([15],[_0xa917[9]]),controller[_0xa917[40]]);router[_0xa917[41]](_0xa917[5],license[_0xa917[6]](),license[_0xa917[7]](),auth[_0xa917[8]](),auth[_0xa917[11]]([15],[_0xa917[9]]),controller[_0xa917[42]]);router[_0xa917[41]](_0xa917[14],license[_0xa917[6]](),license[_0xa917[7]](),auth[_0xa917[8]](),auth[_0xa917[11]]([15],[_0xa917[9]]),controller[_0xa917[43]]);module[_0xa917[44]]= router \ No newline at end of file diff --git a/server/api/jscripty_project/jscripty_project.controller.js b/server/api/jscripty_project/jscripty_project.controller.js index 662f2f9..a3af33c 100644 --- a/server/api/jscripty_project/jscripty_project.controller.js +++ b/server/api/jscripty_project/jscripty_project.controller.js @@ -1,1026 +1 @@ -/** - * Using Rails-like standard naming convention for endpoints. - * GET /api/jscripty/projects -> index - * POST /api/jscripty/projects -> create - * GET /api/jscripty/projects/:id -> show - * PUT /api/jscripty/projects/:id -> update - * DELETE /api/jscripty/projects/:id -> destroy - */ - -'use strict'; -var xml = require('xml2js'); - -var _ = require('lodash'); - -var JscriptyProject = require('../../models').JscriptyProject; -var Util = require('../../config/util'); -var sequelize = require('../../models').sequelize; -var ReportJscriptySession = require('../../models').ReportJscriptySession; -var ReportJscriptyQuestion = require('../../models').ReportJscriptyQuestion; -var ReportJscriptyInput = require('../../models').ReportJscriptyInput; -var Promise = require('bluebird'); - -function handleError(res, err) { - return res.status(500).send(err); -} - - - -function responseWithResult(res, statusCode) { - statusCode = statusCode || 200; - return function(entity) { - if (entity) { - res.status(statusCode).json(entity); - } - }; -} - -function handleEntityNotFound(res) { - return function(entity) { - if (!entity) { - res.status(404).end(); - return null; - } - return entity; - }; -} - -function saveUpdates(updates) { - return function(entity) { - return entity.updateAttributes(updates) - .then(function(updated) { - return updated; - }); - }; -} - -function removeEntity(res) { - return function(entity) { - if (entity) { - return entity.destroy() - .then(function() { - res.status(204).end(); - }); - } - }; -} - -// Gets a list of JscriptyProjects - -exports.index = function(req, res, next) { - return JscriptyProject - .findAndCountAll(Util.getQuery(req.query)) - .then(function(result) { - res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.show = function(req, res) { - return JscriptyProject - .findById(req.params.id) - .then(function(jscripty_project) { - if (!jscripty_project) { - return res.sendStatus(404); - } - return res.send(jscripty_project); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; -// Gets a all ReportJscriptySession from the DB -exports.showSessions = function(req, res) { - return ReportJscriptySession - .scope({ - method: ['sessions', req.params.id] - }) - .findAndCountAll(Util.getQuery(req.query)) - .then(handleEntityNotFound(res)) - .then(responseWithResult(res)) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); - } - // Gets a one ReportJscriptySession from the DB -exports.showSession = function(req, res) { - return ReportJscriptySession - .find({ - where: { - projectId: req.params.id, - session_id: req.params.sessionId - }, - include: [{ - model: ReportJscriptyQuestion, - include: [{ - model: ReportJscriptyInput - }] - }] - - }) - .then(handleEntityNotFound(res)) - .then(responseWithResult(res)) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); - } - // exports.showOther = function(req, res) { - // return ReportJscriptyQuestion - // .scope({ - // method: ['otherOption', req.params.id, req.params.questionId] - // }) - // .findAndCountAll(Util.getQuery(req.query)) - // .then(handleEntityNotFound(res)) - // .then(responseWithResult(res)) - // .catch(function(err) { - // console.log(err); - // return handleError(res, err); - // }); - // } -exports.showInputs = function(req, res) { - var inputs = { - count: 0, - rows: [] - }; - return ReportJscriptySession - .scope({ - method: ['inputs', req.params.id] - }) - .findAndCountAll(Util.getQuery(req.query)) - .then(function(response) { - _.forEach(response.rows, function(session) { - var session_id = session.session_id; - _.forEach(session.ReportJscriptyQuestions, function(question) { - var question_id = question.question_id; - var question_type = question.question_type; - var question_label = question.question_label; - var question_text = question.question_text; - _.forEach(question.ReportJscriptyInputs, function(input) { - inputs.rows.push({ - session_id: session_id, - question_type: question_type, - question_id: question_id, - question_label: question_label, - question_text: question_text, - input_label: input.input_label, - input_value: input.input_value - }) - }) - }) - }) - inputs.count = inputs.rows.length; - return inputs; - }) - .then(handleEntityNotFound(res)) - .then(responseWithResult(res)) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -} - -// Gets a all ReportJscriptyQuestion from the DB -exports.showQuestions = function(req, res) { - return ReportJscriptyQuestion - .findAll({ - where: { - projectId: req.params.id - }, - include: [{ - model: ReportJscriptyInput - }], - - }) - .then(function(jscripty_questions) { - if (!jscripty_questions) { - return res.sendStatus(404); - } - return res.status(200).send(jscripty_questions); - }) - .then(handleEntityNotFound(res)) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -} - - -// Gets summary of ReportJscriptyQuestion from the DB - -exports.showSummary = function(req, res) { - return ReportJscriptyQuestion - .scope({ - method: ['summary', req.params.id] - }) - .findAndCountAll(Util.getQuery(req.query)) - .then(handleEntityNotFound(res)) - .then(function(jscripty_summary) { - return res.status(200).send(jscripty_summary); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); - -} - -exports.showQuestionDetail = function(req, res) { - var temp = {}; - var jscripty_questions; - var total = 0; - return ReportJscriptyQuestion - .find({ - where: { - projectId: req.params.id, - question_id: req.params.questionId - }, - attributes: ['question_type'] - }) - .then(function(jscripty_question) { - if (!jscripty_question) { - return res.sendStatus(404); - } - // jscripty_questions = jscripty_question; - if (jscripty_question.dataValues.question_type == 'input') { - return ReportJscriptyQuestion - .findAll({ - where: { - projectId: req.params.id, - question_id: req.params.questionId - }, - attributes: ['question_type', 'question_id', 'question_label', 'question_text'], - include: [{ - model: ReportJscriptyInput, - where: { - $or: [{ - input_type: 'checkbox', - input_value: '1' - }, { - input_type: { - $ne: 'checkbox' - }, - input_value: { - $ne: null - } - }] - }, - attributes: ['input_label', 'input_value', 'input_type', [sequelize.fn('count', sequelize.col('input_label')), - 'count' - ]] - }], - group: ['question_id', 'input_label'] - - }) - .then(function(jscripty_question) { - jscripty_questions = jscripty_question; - return ReportJscriptyQuestion - .findAll({ - where: { - projectId: req.params.id, - question_id: req.params.questionId, - question_type: 'input' - }, - attributes: ['question_id', [sequelize.fn('count', sequelize.col('question_id')), - 'count' - ]], - group: ['question_id'] - }) - }) - - .then(function(question_count) { - total = question_count[0].dataValues.count; - - if (jscripty_questions) { - var grouped = _.groupBy(jscripty_questions, 'question_id'); - _.forEach(grouped, function(value, id) { - var answers_count = []; - var graphData = []; - var graphLabels = []; - var graphType = 'bar'; - _.forEach(value, function(element) { - if (element.ReportJscriptyInputs) { - _.forEach(element.ReportJscriptyInputs, function(input) { - answers_count.push({ - checkbox: true, - value: input.input_label, - count: input.dataValues.count - }) - - }) - } - }); - var tempGraphdata = []; - for (var i = 0; i < answers_count.length; i++) { - tempGraphdata[i] = answers_count[i].count; - graphLabels[i] = answers_count[i].value; - answers_count[i].percentage = total ? (answers_count[i].count / total) * 100 : 0; - } - graphData[0] = tempGraphdata; - temp = { - total: total, - question_type: _.last(value).question_type, - question_id: _.last(value).question_id, - question_label: _.last(value).question_label, - question_text: _.last(value).question_text, - choices: answers_count, - graphData: graphData, - graphLabels: graphLabels, - graphType: graphType - }; - }); - } - - return ReportJscriptyQuestion - .findAll({ - where: { - projectId: req.params.id, - question_id: req.params.questionId, - question_type: 'input' - }, - attributes: ['question_type', 'question_id', 'question_label', 'question_text'], - include: [{ - model: ReportJscriptyInput, - attributes: ['input_label'] - }] - }) - - }) - .then(function(inputs) { - var input_labels = []; - if (inputs) { - var grouped = _.groupBy(inputs, 'question_id'); - _.forEach(grouped, function(question, id) { - var allLabels = []; - _.forEach(question, function(item) { - allLabels = _.union(allLabels, _.map(item.ReportJscriptyInputs, 'input_label')); - }); - input_labels.push({ - question_id: _.last(question).question_id, - labels: allLabels - }); - }) - _.forEach(input_labels, function(element) { - if (Object.keys(temp).length) { - _.forEach(element.labels, function(label) { - var input_label = _.find(temp.choices, { - value: label - }); - if (!input_label) { - temp.choices.push({ - value: label, - count: 0, - percentage: 0 - }) - temp.graphData[0].push(0); - temp.graphLabels.push(label); - } - }); - } else { - var answers_count = []; - var graphData = []; - var tempGraphdata = []; - var graphLabels = []; - _.forEach(element.labels, function(label) { - answers_count.push({ - value: label, - count: 0, - percentage: 0 - }) - tempGraphdata.push(0); - graphLabels.push(label); - - }); - graphData.push(tempGraphdata); - var input = inputs[0]; - temp = { - total: total, - question_type: input.question_type, - question_id: input.question_id, - question_label: input.question_label, - question_text: input.question_text, - choices: answers_count, - graphType: 'bar', - graphData: graphData, - graphLabels: graphLabels - - }; - } - }) - } - return res.status(201).send(temp); - - }) - - } else if (jscripty_question.dataValues.question_type == 'question') { - - return ReportJscriptyQuestion - .findAll({ - where: { - projectId: req.params.id, - question_id: req.params.questionId - }, - attributes: ['question_type', 'question_id', 'question_label', 'question_text', 'question_options', 'question_answer', [sequelize.fn('count', sequelize.col('question_answer')), - 'count' - ]], - group: ['question_id', 'question_answer'] - - }) - .then(function(jscripty_question) { - - jscripty_questions = jscripty_question; - return ReportJscriptyQuestion - .findAll({ - where: { - projectId: req.params.id, - question_id: req.params.questionId, - question_type: 'question', - question_other_answer: { - $ne: null - } - }, - attributes: ['question_type', 'question_id', 'question_label', 'question_options', 'question_text', 'question_other_answer', 'question_other_label', [sequelize.fn('count', - sequelize.col( - 'question_other_label')), - 'count' - ]], - group: ['question_id', 'question_other_label'] - - }) - }) - .then(function(response) { - if (response) { - _.forEach(response, function(element) { - jscripty_questions.push(element); - }) - } - - var grouped = _.groupBy(jscripty_questions, 'question_id'); - _.forEach(grouped, function(value, id) { - var answers_count = []; - var total = 0; - var graphData = []; - var graphLabels = []; - var graphType = 'pie'; - _.forEach(value, function(element) { - - if (element.question_answer) { - answers_count.push({ - value: element.question_answer, - count: element.dataValues.count - }) - total = total + element.dataValues.count; - - } - if (element.question_other_answer) { - answers_count.push({ - other_option: true, - value: element.question_other_label, - count: element.dataValues.count - }) - } - - }); - var question_options = _.last(value).question_options ? JSON.parse(_.last(value).question_options) : null; - if (question_options) { - _.forEach(question_options.options, function(option) { - var edge_label = _.find(answers_count, { - value: option - }); - - if (!edge_label) { - answers_count.push({ - value: option, - count: 0, - percentage: 0 - }); - - } - }); - } - var tempGraphdata = []; - var input_type = false - for (var i = 0; i < answers_count.length; i++) { - if (!answers_count[i].other_option) { - graphData[i] = answers_count[i].count; - graphLabels[i] = answers_count[i].value; - answers_count[i].percentage = total ? (answers_count[i].count / total) * 100 : 0; - } - } - - temp = { - total: total, - question_type: _.last(value).question_type, - question_id: _.last(value).question_id, - question_label: _.last(value).question_label, - question_text: _.last(value).question_text, - choices: answers_count, - graphData: graphData, - graphLabels: graphLabels, - graphType: graphType - }; - }); - return res.status(201).send(temp); - }) - } else { - console.log('question type not recognized'); - return res.sendStatus(404); - } - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -} - -// Gets detail of ReportJscriptyQuestion from the DB -exports.showDetail = function(req, res) { - var temp_questions; - var jscripty_questions; - var temp_inputs; - var question_count; - - return ReportJscriptyQuestion - .findAll({ - - where: { - projectId: req.params.id, - question_type: 'question' - }, - attributes: ['question_type', 'question_id', 'question_label', 'question_text', 'question_answer', 'question_options', 'question_other_label', [sequelize.fn('count', sequelize.col( - 'question_answer')), - 'count' - ]], - group: ['question_id', 'question_answer'] - - }) - .then(function(response) { - jscripty_questions = response; - return ReportJscriptyQuestion - .findAll({ - where: { - projectId: req.params.id, - question_type: 'question', - question_other_answer: { - $ne: null - } - }, - attributes: ['question_type', 'question_id', 'question_label', 'question_text', 'question_other_answer', 'question_other_label', 'question_options', [sequelize.fn('count', sequelize.col( - 'question_other_answer')), - 'count' - ]], - group: ['question_id', 'question_other_answer'] - - // attributes: ['question_type', 'question_id', 'question_label', 'question_text', 'question_other_answer', 'question_other_label', 'question_options', [sequelize.fn('count', sequelize.col( - // 'question_other_label')), - // 'count' - // ]], - // group: ['question_id', 'question_other_label'] - - }) - }) - .then(function(response) { - _.forEach(response, function(element) { - jscripty_questions.push(element); - }) - var temp = []; - var graphType = 'pie'; - - var grouped = _.groupBy(jscripty_questions, 'question_id'); - _.forEach(grouped, function(value, id) { - var total = 0; - var graphData = []; - var graphLabels = []; - var answers_count = []; - - _.forEach(value, function(element) { - if (element.question_answer) { - answers_count.push({ - value: element.question_answer, - count: element.dataValues.count - }) - total = total + element.dataValues.count; - } - if (element.question_other_answer) { - answers_count.push({ - other_option: true, - value: element.question_other_answer, - count: element.dataValues.count - }) - } - - }); - var question_options = JSON.parse(_.last(value).question_options); - if (question_options) { - _.forEach(question_options.options, function(option) { - var edge_label = _.find(answers_count, { - value: option - }); - if (!edge_label) { - answers_count.push({ - value: option, - count: 0, - percentage: 0 - }); - } - }); - } - for (var i = 0; i < answers_count.length; i++) { - - if (!answers_count[i].other_option && (total != 0)) { - answers_count[i].percentage = (answers_count[i].count / total) * 100; - graphData.push(answers_count[i].count); - graphLabels.push(answers_count[i].value); - } - - } - - temp.push({ - total: total, - question_type: _.last(value).question_type, - question_id: _.last(value).question_id, - question_label: _.last(value).question_label, - question_other_label: _.last(value).question_other_label, - question_text: _.last(value).question_text, - choices: answers_count, - graphData: graphData, - graphLabels: graphLabels, - graphType: graphType - }) - - }); - temp_questions = temp; - return ReportJscriptyQuestion - .findAll({ - where: { - projectId: req.params.id, - question_type: 'input' - }, - attributes: ['id', 'question_type', 'question_id', 'question_label', 'question_text', 'question_answer'], - include: [{ - model: ReportJscriptyInput, - where: { - $or: [{ - input_type: 'checkbox', - input_value: '1' - }, { - input_type: { - $ne: 'checkbox' - }, - input_value: { - $ne: null - } - }] - - }, - attributes: ['input_label', 'input_value', 'input_type', [sequelize.fn('count', sequelize.col('input_label')), - 'count' - ]] - }], - group: ['question_id', 'input_label'] - }) - - }) - .then(function(jscripty_question) { - jscripty_questions = jscripty_question; - return ReportJscriptyQuestion - .findAll({ - where: { - projectId: req.params.id, - question_type: 'input' - }, - attributes: ['question_id', [sequelize.fn('count', sequelize.col('question_id')), - 'count' - ]], - group: ['question_id'] - }) - }) - .then(function(question) { - question_count = question; - var temp = []; - var grouped = _.groupBy(jscripty_questions, 'question_id'); - _.forEach(grouped, function(value, id) { - var answers_count = []; - var total = 0; - total = _.find(question_count, function(question) { - return question.question_id == _.last(value).question_id; - }).dataValues.count; - var graphData = []; - var graphData2 = []; - var graphLabels = []; - var graphType = 'bar'; - _.forEach(value, function(element) { - var elemt = element; - _.forEach(elemt.ReportJscriptyInputs, function(input) { - answers_count.push({ - checkbox: true, - value: input.input_label, - count: input.dataValues.count - }) - }) - }); - var tempGraphdata = []; - for (var i = 0; i < answers_count.length; i++) { - tempGraphdata[i] = answers_count[i].count; - answers_count[i].percentage = (answers_count[i].count / total) * 100; - graphLabels[i] = answers_count[i].value; - } - graphData[0] = tempGraphdata; - temp_questions.push({ - total: total, - question_type: _.last(value).question_type, - question_id: _.last(value).question_id, - question_label: _.last(value).question_label, - question_text: _.last(value).question_text, - choices: answers_count, - graphData: graphData, - graphLabels: graphLabels, - graphType: graphType - }) - }); - return ReportJscriptyQuestion - .findAll({ - where: { - projectId: req.params.id, - question_type: 'input' - }, - attributes: ['id', 'question_id', 'question_label', 'question_text', 'question_type'], - include: [{ - model: ReportJscriptyInput, - attributes: ['input_label'] - }], - }) - }) - .then(function(inputs) { - var grouped = _.groupBy(inputs, 'question_id'); - var labels = []; - _.forEach(grouped, function(question, id) { - var allLabels = []; - _.forEach(question, function(item) { - allLabels = _.union(allLabels, _.map(item.ReportJscriptyInputs, 'input_label')); - }); - labels.push({ - question_text: _.last(question).question_text, - question_type: _.last(question).question_type, - question_label: _.last(question).question_label, - question_id: _.last(question).question_id, - labels: allLabels - }); - }) - - _.forEach(labels, function(element) { - var question = _.find(temp_questions, { - 'question_id': element.question_id - }); - if (question) { - _.forEach(element.labels, function(label) { - var input_label = _.find(question.choices, { - value: label - }); - if (!input_label) { - question.choices.push({ - value: label, - count: 0, - percentage: 0 - }); - question.graphData[0].push(0); - question.graphLabels.push(label); - } - }); - } else { - var answers_count = []; - var graphData = []; - var tempGraphdata = []; - var graphLabels = []; - _.forEach(element.labels, function(label) { - answers_count.push({ - value: label, - count: 0, - percentage: 0 - }) - // tempGraphdata.push(0); - // graphLabels.push(label); - }); - // graphData.push(tempGraphdata); - var total = _.find(question_count, function(question) { - return question.question_id == element.question_id; - }).dataValues.count; - temp_questions.push({ - total: total, - question_type: element.question_type, - question_id: element.question_id, - question_label: element.question_label, - question_text: element.question_text, - choices: answers_count, - graphType: 'bar', - graphData: graphData, - graphLabels: graphLabels - }) - } - }) - return res.status(201).send(temp_questions); - }) - - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); - // }) - - } - // Creates a new JscriptyProject in the DB -exports.create = function(req, res) { - return JscriptyProject - .create(req.body) - .then(function(jscripty_project) { - return res.status(201).send(jscripty_project); - }) - .catch(sequelize.UniqueConstraintError, function(err) { - if (err.fields.name) { - err.message = 'Project name already exists'; - err.translatedMessage = 'MESSAGE_EXIST_PROJECT' - } - return handleError(res, err); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Creates a new ReportJscriptySession in the DB -exports.createSession = function(req, res) { - return ReportJscriptySession - .create(req.body) - .then(function(jscripty_session) { - return res.status(201).send(jscripty_session); - }) - .catch(function(err) { - return handleError(res, err); - }); - - } - // Creates a new ReportJscriptyQuestions in the DB -exports.createQuestions = function(req, res) { - return ReportJscriptyQuestion - .destroy({ - where: { - sessionId: req.params.sessionId - } - }) - .then(function() { - var _promises = []; - for (var i = 0; i < req.body.length; i++) { - _promises[i] = ReportJscriptyQuestion.create(req.body[i], { - include: [{ - model: ReportJscriptyInput - }] - }) - } - return Promise - .all(_promises); - }) - .then(function(jscripty_question) { - return res.sendStatus(201); - }) - .catch(function(err) { - return handleError(res, err); - }); - } - // Updates an existing JscriptyProject in the DB -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - return JscriptyProject - .findById(req.params.id) - .then(function(jscripty_project) { - if (!jscripty_project) { - return res.sendStatus(404); - } - var updated = _.merge(jscripty_project, req.body); - return updated.save(); - }) - .then(function(jscripty_project) { - return res.status(200).send(jscripty_project); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; -// Updates an existing ReportJscriptySession in the DB -exports.updateSession = function(req, res) { - return ReportJscriptySession - .findById(req.params.sessionId) - .then(function(session) { - if (!session) { - return res.sendStatus(404); - } - var updated = _.merge(session, req.body); - return updated.save(); - }) - .then(function(jscripty_session) { - return res.status(200).send(jscripty_session); - }) - .catch(function(err) { - return handleError(res, err); - }); -} - -// Deletes a JscriptyProject from the DB -exports.destroy = function(req, res) { - return JscriptyProject - .findById(req.params.id) - .then(function(jscripty_project) { - if (!jscripty_project) { - return res.sendStatus(404); - } - return jscripty_project.destroy(); - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; -exports.destroySession = function(req, res) { - return ReportJscriptySession - .find({ - where: { - session_id: req.params.sessionId - } - }) - .then(function(session) { - if (!session) { - return res.sendStatus(404); - } - return session.destroy(); - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes a jscripty_project from the DB. -exports.bulkDestroy = function(req, res) { - return JscriptyProject - .destroy({ - where: { - id: req.query.ids - }, - individualHooks: true - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; -exports.download = function(req, res, next) { - return JscriptyProject - .findById(req.params.id) - .then(function(jscripty_project) { - if (!jscripty_project) { - return res.sendStatus(404); - } - // console.log(req.query.filename); - res.set({ - "Content-Disposition": "attachment; filename=\"" + req.query.filename + - ".xml\"", - "Content-Type": "txt/xml" - }); - return res.send(jscripty_project.production); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// exports.projectJson = function(req, res, next) { -// JscriptyProject -// .findById(req.params.id) -// .then(function(jscripty_project) { -// if (!jscripty_project) { -// return res.sendStatus(404); -// } -// -// xml.parseString(jscripty_project.production, { -// normalizeTags: true, -// explicitArray: false -// }, function(err, result) { -// console.log(result); -// return res.status(200).send(result); -// -// }); -// }) -// .catch(function(err) { -// return handleError(res, err); -// }); -// }; +var _0x8bf6=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x78\x6D\x6C\x32\x6A\x73","\x6C\x6F\x64\x61\x73\x68","\x4A\x73\x63\x72\x69\x70\x74\x79\x50\x72\x6F\x6A\x65\x63\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x52\x65\x70\x6F\x72\x74\x4A\x73\x63\x72\x69\x70\x74\x79\x53\x65\x73\x73\x69\x6F\x6E","\x52\x65\x70\x6F\x72\x74\x4A\x73\x63\x72\x69\x70\x74\x79\x51\x75\x65\x73\x74\x69\x6F\x6E","\x52\x65\x70\x6F\x72\x74\x4A\x73\x63\x72\x69\x70\x74\x79\x49\x6E\x70\x75\x74","\x62\x6C\x75\x65\x62\x69\x72\x64","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x6A\x73\x6F\x6E","\x65\x6E\x64","\x74\x68\x65\x6E","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x64\x65\x73\x74\x72\x6F\x79","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x73\x68\x6F\x77\x53\x65\x73\x73\x69\x6F\x6E\x73","\x6C\x6F\x67","\x73\x65\x73\x73\x69\x6F\x6E\x73","\x73\x63\x6F\x70\x65","\x73\x68\x6F\x77\x53\x65\x73\x73\x69\x6F\x6E","\x73\x65\x73\x73\x69\x6F\x6E\x49\x64","\x66\x69\x6E\x64","\x73\x68\x6F\x77\x49\x6E\x70\x75\x74\x73","\x72\x6F\x77\x73","\x73\x65\x73\x73\x69\x6F\x6E\x5F\x69\x64","\x71\x75\x65\x73\x74\x69\x6F\x6E\x5F\x69\x64","\x71\x75\x65\x73\x74\x69\x6F\x6E\x5F\x74\x79\x70\x65","\x71\x75\x65\x73\x74\x69\x6F\x6E\x5F\x6C\x61\x62\x65\x6C","\x71\x75\x65\x73\x74\x69\x6F\x6E\x5F\x74\x65\x78\x74","\x69\x6E\x70\x75\x74\x5F\x6C\x61\x62\x65\x6C","\x69\x6E\x70\x75\x74\x5F\x76\x61\x6C\x75\x65","\x70\x75\x73\x68","\x66\x6F\x72\x45\x61\x63\x68","\x63\x6F\x75\x6E\x74","\x6C\x65\x6E\x67\x74\x68","\x69\x6E\x70\x75\x74\x73","\x73\x68\x6F\x77\x51\x75\x65\x73\x74\x69\x6F\x6E\x73","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x68\x6F\x77\x53\x75\x6D\x6D\x61\x72\x79","\x73\x75\x6D\x6D\x61\x72\x79","\x73\x68\x6F\x77\x51\x75\x65\x73\x74\x69\x6F\x6E\x44\x65\x74\x61\x69\x6C","\x64\x61\x74\x61\x56\x61\x6C\x75\x65\x73","\x69\x6E\x70\x75\x74","\x67\x72\x6F\x75\x70\x42\x79","\x6D\x61\x70","\x75\x6E\x69\x6F\x6E","\x6C\x61\x73\x74","\x6B\x65\x79\x73","\x6C\x61\x62\x65\x6C\x73","\x63\x68\x6F\x69\x63\x65\x73","\x67\x72\x61\x70\x68\x44\x61\x74\x61","\x67\x72\x61\x70\x68\x4C\x61\x62\x65\x6C\x73","\x62\x61\x72","\x52\x65\x70\x6F\x72\x74\x4A\x73\x63\x72\x69\x70\x74\x79\x49\x6E\x70\x75\x74\x73","\x76\x61\x6C\x75\x65","\x70\x65\x72\x63\x65\x6E\x74\x61\x67\x65","\x71\x75\x65\x73\x74\x69\x6F\x6E\x49\x64","\x63\x6F\x6C","\x66\x6E","\x63\x68\x65\x63\x6B\x62\x6F\x78","\x31","\x69\x6E\x70\x75\x74\x5F\x74\x79\x70\x65","\x71\x75\x65\x73\x74\x69\x6F\x6E","\x70\x69\x65","\x71\x75\x65\x73\x74\x69\x6F\x6E\x5F\x61\x6E\x73\x77\x65\x72","\x71\x75\x65\x73\x74\x69\x6F\x6E\x5F\x6F\x74\x68\x65\x72\x5F\x61\x6E\x73\x77\x65\x72","\x71\x75\x65\x73\x74\x69\x6F\x6E\x5F\x6F\x74\x68\x65\x72\x5F\x6C\x61\x62\x65\x6C","\x71\x75\x65\x73\x74\x69\x6F\x6E\x5F\x6F\x70\x74\x69\x6F\x6E\x73","\x70\x61\x72\x73\x65","\x6F\x70\x74\x69\x6F\x6E\x73","\x6F\x74\x68\x65\x72\x5F\x6F\x70\x74\x69\x6F\x6E","\x71\x75\x65\x73\x74\x69\x6F\x6E\x20\x74\x79\x70\x65\x20\x6E\x6F\x74\x20\x72\x65\x63\x6F\x67\x6E\x69\x7A\x65\x64","\x73\x68\x6F\x77\x44\x65\x74\x61\x69\x6C","\x63\x72\x65\x61\x74\x65","\x6E\x61\x6D\x65","\x66\x69\x65\x6C\x64\x73","\x6D\x65\x73\x73\x61\x67\x65","\x50\x72\x6F\x6A\x65\x63\x74\x20\x6E\x61\x6D\x65\x20\x61\x6C\x72\x65\x61\x64\x79\x20\x65\x78\x69\x73\x74\x73","\x74\x72\x61\x6E\x73\x6C\x61\x74\x65\x64\x4D\x65\x73\x73\x61\x67\x65","\x4D\x45\x53\x53\x41\x47\x45\x5F\x45\x58\x49\x53\x54\x5F\x50\x52\x4F\x4A\x45\x43\x54","\x62\x6F\x64\x79","\x63\x72\x65\x61\x74\x65\x53\x65\x73\x73\x69\x6F\x6E","\x63\x72\x65\x61\x74\x65\x51\x75\x65\x73\x74\x69\x6F\x6E\x73","\x61\x6C\x6C","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x75\x70\x64\x61\x74\x65\x53\x65\x73\x73\x69\x6F\x6E","\x64\x65\x73\x74\x72\x6F\x79\x53\x65\x73\x73\x69\x6F\x6E","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73","\x64\x6F\x77\x6E\x6C\x6F\x61\x64","\x61\x74\x74\x61\x63\x68\x6D\x65\x6E\x74\x3B\x20\x66\x69\x6C\x65\x6E\x61\x6D\x65\x3D\x22","\x66\x69\x6C\x65\x6E\x61\x6D\x65","\x2E\x78\x6D\x6C\x22","\x74\x78\x74\x2F\x78\x6D\x6C","\x73\x65\x74","\x70\x72\x6F\x64\x75\x63\x74\x69\x6F\x6E"];_0x8bf6[0];var xml=require(_0x8bf6[1]);var _=require(_0x8bf6[2]);var JscriptyProject=require(_0x8bf6[4])[_0x8bf6[3]];var Util=require(_0x8bf6[5]);var sequelize=require(_0x8bf6[4])[_0x8bf6[6]];var ReportJscriptySession=require(_0x8bf6[4])[_0x8bf6[7]];var ReportJscriptyQuestion=require(_0x8bf6[4])[_0x8bf6[8]];var ReportJscriptyInput=require(_0x8bf6[4])[_0x8bf6[9]];var Promise=require(_0x8bf6[10]);function handleError(_0xa180xb,_0xa180xc){return _0xa180xb[_0x8bf6[12]](500)[_0x8bf6[11]](_0xa180xc)}function responseWithResult(_0xa180xb,_0xa180xe){_0xa180xe= _0xa180xe|| 200;return function(_0xa180xf){if(_0xa180xf){_0xa180xb[_0x8bf6[12]](_0xa180xe)[_0x8bf6[13]](_0xa180xf)}}}function handleEntityNotFound(_0xa180xb){return function(_0xa180xf){if(!_0xa180xf){_0xa180xb[_0x8bf6[12]](404)[_0x8bf6[14]]();return null};return _0xa180xf}}function saveUpdates(_0xa180x12){return function(_0xa180xf){return _0xa180xf[_0x8bf6[16]](_0xa180x12)[_0x8bf6[15]](function(_0xa180x13){return _0xa180x13})}}function removeEntity(_0xa180xb){return function(_0xa180xf){if(_0xa180xf){return _0xa180xf[_0x8bf6[17]]()[_0x8bf6[15]](function(){_0xa180xb[_0x8bf6[12]](204)[_0x8bf6[14]]()})}}}exports[_0x8bf6[18]]= function(_0xa180x15,_0xa180xb,_0xa180x16){return JscriptyProject[_0x8bf6[22]](Util[_0x8bf6[21]](_0xa180x15[_0x8bf6[20]]))[_0x8bf6[15]](function(_0xa180x17){_0xa180xb[_0x8bf6[12]](200)[_0x8bf6[11]](_0xa180x17)})[_0x8bf6[19]](function(_0xa180xc){return handleError(_0xa180xb,_0xa180xc)})};exports[_0x8bf6[23]]= function(_0xa180x15,_0xa180xb){return JscriptyProject[_0x8bf6[27]](_0xa180x15[_0x8bf6[26]][_0x8bf6[25]])[_0x8bf6[15]](function(_0xa180x18){if(!_0xa180x18){return _0xa180xb[_0x8bf6[24]](404)};return _0xa180xb[_0x8bf6[11]](_0xa180x18)})[_0x8bf6[19]](function(_0xa180xc){return handleError(_0xa180xb,_0xa180xc)})};exports[_0x8bf6[28]]= function(_0xa180x15,_0xa180xb){return ReportJscriptySession[_0x8bf6[31]]({method:[_0x8bf6[30],_0xa180x15[_0x8bf6[26]][_0x8bf6[25]]]})[_0x8bf6[22]](Util[_0x8bf6[21]](_0xa180x15[_0x8bf6[20]]))[_0x8bf6[15]](handleEntityNotFound(_0xa180xb))[_0x8bf6[15]](responseWithResult(_0xa180xb))[_0x8bf6[19]](function(_0xa180xc){console[_0x8bf6[29]](_0xa180xc);return handleError(_0xa180xb,_0xa180xc)})};exports[_0x8bf6[32]]= function(_0xa180x15,_0xa180xb){return ReportJscriptySession[_0x8bf6[34]]({where:{projectId:_0xa180x15[_0x8bf6[26]][_0x8bf6[25]],session_id:_0xa180x15[_0x8bf6[26]][_0x8bf6[33]]},include:[{model:ReportJscriptyQuestion,include:[{model:ReportJscriptyInput}]}]})[_0x8bf6[15]](handleEntityNotFound(_0xa180xb))[_0x8bf6[15]](responseWithResult(_0xa180xb))[_0x8bf6[19]](function(_0xa180xc){console[_0x8bf6[29]](_0xa180xc);return handleError(_0xa180xb,_0xa180xc)})};exports[_0x8bf6[35]]= function(_0xa180x15,_0xa180xb){var _0xa180x19={count:0,rows:[]};return ReportJscriptySession[_0x8bf6[31]]({method:[_0x8bf6[48],_0xa180x15[_0x8bf6[26]][_0x8bf6[25]]]})[_0x8bf6[22]](Util[_0x8bf6[21]](_0xa180x15[_0x8bf6[20]]))[_0x8bf6[15]](function(_0xa180x1a){_[_0x8bf6[45]](_0xa180x1a[_0x8bf6[36]],function(_0xa180x1b){var _0xa180x1c=_0xa180x1b[_0x8bf6[37]];_[_0x8bf6[45]](_0xa180x1b.ReportJscriptyQuestions,function(_0xa180x1d){var _0xa180x1e=_0xa180x1d[_0x8bf6[38]];var _0xa180x1f=_0xa180x1d[_0x8bf6[39]];var _0xa180x20=_0xa180x1d[_0x8bf6[40]];var _0xa180x21=_0xa180x1d[_0x8bf6[41]];_[_0x8bf6[45]](_0xa180x1d.ReportJscriptyInputs,function(_0xa180x22){_0xa180x19[_0x8bf6[36]][_0x8bf6[44]]({session_id:_0xa180x1c,question_type:_0xa180x1f,question_id:_0xa180x1e,question_label:_0xa180x20,question_text:_0xa180x21,input_label:_0xa180x22[_0x8bf6[42]],input_value:_0xa180x22[_0x8bf6[43]]})})})});_0xa180x19[_0x8bf6[46]]= _0xa180x19[_0x8bf6[36]][_0x8bf6[47]];return _0xa180x19})[_0x8bf6[15]](handleEntityNotFound(_0xa180xb))[_0x8bf6[15]](responseWithResult(_0xa180xb))[_0x8bf6[19]](function(_0xa180xc){console[_0x8bf6[29]](_0xa180xc);return handleError(_0xa180xb,_0xa180xc)})};exports[_0x8bf6[49]]= function(_0xa180x15,_0xa180xb){return ReportJscriptyQuestion[_0x8bf6[50]]({where:{projectId:_0xa180x15[_0x8bf6[26]][_0x8bf6[25]]},include:[{model:ReportJscriptyInput}]})[_0x8bf6[15]](function(_0xa180x23){if(!_0xa180x23){return _0xa180xb[_0x8bf6[24]](404)};return _0xa180xb[_0x8bf6[12]](200)[_0x8bf6[11]](_0xa180x23)})[_0x8bf6[15]](handleEntityNotFound(_0xa180xb))[_0x8bf6[19]](function(_0xa180xc){console[_0x8bf6[29]](_0xa180xc);return handleError(_0xa180xb,_0xa180xc)})};exports[_0x8bf6[51]]= function(_0xa180x15,_0xa180xb){return ReportJscriptyQuestion[_0x8bf6[31]]({method:[_0x8bf6[52],_0xa180x15[_0x8bf6[26]][_0x8bf6[25]]]})[_0x8bf6[22]](Util[_0x8bf6[21]](_0xa180x15[_0x8bf6[20]]))[_0x8bf6[15]](handleEntityNotFound(_0xa180xb))[_0x8bf6[15]](function(_0xa180x24){return _0xa180xb[_0x8bf6[12]](200)[_0x8bf6[11]](_0xa180x24)})[_0x8bf6[19]](function(_0xa180xc){console[_0x8bf6[29]](_0xa180xc);return handleError(_0xa180xb,_0xa180xc)})};exports[_0x8bf6[53]]= function(_0xa180x15,_0xa180xb){var _0xa180x25={};var _0xa180x23;var _0xa180x26=0;return ReportJscriptyQuestion[_0x8bf6[34]]({where:{projectId:_0xa180x15[_0x8bf6[26]][_0x8bf6[25]],question_id:_0xa180x15[_0x8bf6[26]][_0x8bf6[69]]},attributes:[_0x8bf6[39]]})[_0x8bf6[15]](function(_0xa180x27){if(!_0xa180x27){return _0xa180xb[_0x8bf6[24]](404)};if(_0xa180x27[_0x8bf6[54]][_0x8bf6[39]]== _0x8bf6[55]){return ReportJscriptyQuestion[_0x8bf6[50]]({where:{projectId:_0xa180x15[_0x8bf6[26]][_0x8bf6[25]],question_id:_0xa180x15[_0x8bf6[26]][_0x8bf6[69]]},attributes:[_0x8bf6[39],_0x8bf6[38],_0x8bf6[40],_0x8bf6[41]],include:[{model:ReportJscriptyInput,where:{$or:[{input_type:_0x8bf6[72],input_value:_0x8bf6[73]},{input_type:{$ne:_0x8bf6[72]},input_value:{$ne:null}}]},attributes:[_0x8bf6[42],_0x8bf6[43],_0x8bf6[74],[sequelize[_0x8bf6[71]](_0x8bf6[46],sequelize[_0x8bf6[70]](_0x8bf6[42])),_0x8bf6[46]]]}],group:[_0x8bf6[38],_0x8bf6[42]]})[_0x8bf6[15]](function(_0xa180x27){_0xa180x23= _0xa180x27;return ReportJscriptyQuestion[_0x8bf6[50]]({where:{projectId:_0xa180x15[_0x8bf6[26]][_0x8bf6[25]],question_id:_0xa180x15[_0x8bf6[26]][_0x8bf6[69]],question_type:_0x8bf6[55]},attributes:[_0x8bf6[38],[sequelize[_0x8bf6[71]](_0x8bf6[46],sequelize[_0x8bf6[70]](_0x8bf6[38])),_0x8bf6[46]]],group:[_0x8bf6[38]]})})[_0x8bf6[15]](function(_0xa180x34){_0xa180x26= _0xa180x34[0][_0x8bf6[54]][_0x8bf6[46]];if(_0xa180x23){var _0xa180x29=_[_0x8bf6[56]](_0xa180x23,_0x8bf6[38]);_[_0x8bf6[45]](_0xa180x29,function(_0xa180x35,_0xa180x2a){var _0xa180x30=[];var _0xa180x31=[];var _0xa180x33=[];var _0xa180x36=_0x8bf6[65];_[_0x8bf6[45]](_0xa180x35,function(_0xa180x2d){if(_0xa180x2d[_0x8bf6[66]]){_[_0x8bf6[45]](_0xa180x2d.ReportJscriptyInputs,function(_0xa180x22){_0xa180x30[_0x8bf6[44]]({checkbox:true,value:_0xa180x22[_0x8bf6[42]],count:_0xa180x22[_0x8bf6[54]][_0x8bf6[46]]})})}});var _0xa180x32=[];for(var _0xa180x37=0;_0xa180x37< _0xa180x30[_0x8bf6[47]];_0xa180x37++){_0xa180x32[_0xa180x37]= _0xa180x30[_0xa180x37][_0x8bf6[46]];_0xa180x33[_0xa180x37]= _0xa180x30[_0xa180x37][_0x8bf6[67]];_0xa180x30[_0xa180x37][_0x8bf6[68]]= _0xa180x26?(_0xa180x30[_0xa180x37][_0x8bf6[46]]/ _0xa180x26)* 100:0};_0xa180x31[0]= _0xa180x32;_0xa180x25= {total:_0xa180x26,question_type:_[_0x8bf6[59]](_0xa180x35)[_0x8bf6[39]],question_id:_[_0x8bf6[59]](_0xa180x35)[_0x8bf6[38]],question_label:_[_0x8bf6[59]](_0xa180x35)[_0x8bf6[40]],question_text:_[_0x8bf6[59]](_0xa180x35)[_0x8bf6[41]],choices:_0xa180x30,graphData:_0xa180x31,graphLabels:_0xa180x33,graphType:_0xa180x36}})};return ReportJscriptyQuestion[_0x8bf6[50]]({where:{projectId:_0xa180x15[_0x8bf6[26]][_0x8bf6[25]],question_id:_0xa180x15[_0x8bf6[26]][_0x8bf6[69]],question_type:_0x8bf6[55]},attributes:[_0x8bf6[39],_0x8bf6[38],_0x8bf6[40],_0x8bf6[41]],include:[{model:ReportJscriptyInput,attributes:[_0x8bf6[42]]}]})})[_0x8bf6[15]](function(_0xa180x19){var _0xa180x28=[];if(_0xa180x19){var _0xa180x29=_[_0x8bf6[56]](_0xa180x19,_0x8bf6[38]);_[_0x8bf6[45]](_0xa180x29,function(_0xa180x1d,_0xa180x2a){var _0xa180x2b=[];_[_0x8bf6[45]](_0xa180x1d,function(_0xa180x2c){_0xa180x2b= _[_0x8bf6[58]](_0xa180x2b,_[_0x8bf6[57]](_0xa180x2c.ReportJscriptyInputs,_0x8bf6[42]))});_0xa180x28[_0x8bf6[44]]({question_id:_[_0x8bf6[59]](_0xa180x1d)[_0x8bf6[38]],labels:_0xa180x2b})});_[_0x8bf6[45]](_0xa180x28,function(_0xa180x2d){if(Object[_0x8bf6[60]](_0xa180x25)[_0x8bf6[47]]){_[_0x8bf6[45]](_0xa180x2d[_0x8bf6[61]],function(_0xa180x2e){var _0xa180x2f=_[_0x8bf6[34]](_0xa180x25[_0x8bf6[62]],{value:_0xa180x2e});if(!_0xa180x2f){_0xa180x25[_0x8bf6[62]][_0x8bf6[44]]({value:_0xa180x2e,count:0,percentage:0});_0xa180x25[_0x8bf6[63]][0][_0x8bf6[44]](0);_0xa180x25[_0x8bf6[64]][_0x8bf6[44]](_0xa180x2e)}})}else {var _0xa180x30=[];var _0xa180x31=[];var _0xa180x32=[];var _0xa180x33=[];_[_0x8bf6[45]](_0xa180x2d[_0x8bf6[61]],function(_0xa180x2e){_0xa180x30[_0x8bf6[44]]({value:_0xa180x2e,count:0,percentage:0});_0xa180x32[_0x8bf6[44]](0);_0xa180x33[_0x8bf6[44]](_0xa180x2e)});_0xa180x31[_0x8bf6[44]](_0xa180x32);var _0xa180x22=_0xa180x19[0];_0xa180x25= {total:_0xa180x26,question_type:_0xa180x22[_0x8bf6[39]],question_id:_0xa180x22[_0x8bf6[38]],question_label:_0xa180x22[_0x8bf6[40]],question_text:_0xa180x22[_0x8bf6[41]],choices:_0xa180x30,graphType:_0x8bf6[65],graphData:_0xa180x31,graphLabels:_0xa180x33}}})};return _0xa180xb[_0x8bf6[12]](201)[_0x8bf6[11]](_0xa180x25)})}else {if(_0xa180x27[_0x8bf6[54]][_0x8bf6[39]]== _0x8bf6[75]){return ReportJscriptyQuestion[_0x8bf6[50]]({where:{projectId:_0xa180x15[_0x8bf6[26]][_0x8bf6[25]],question_id:_0xa180x15[_0x8bf6[26]][_0x8bf6[69]]},attributes:[_0x8bf6[39],_0x8bf6[38],_0x8bf6[40],_0x8bf6[41],_0x8bf6[80],_0x8bf6[77],[sequelize[_0x8bf6[71]](_0x8bf6[46],sequelize[_0x8bf6[70]](_0x8bf6[77])),_0x8bf6[46]]],group:[_0x8bf6[38],_0x8bf6[77]]})[_0x8bf6[15]](function(_0xa180x27){_0xa180x23= _0xa180x27;return ReportJscriptyQuestion[_0x8bf6[50]]({where:{projectId:_0xa180x15[_0x8bf6[26]][_0x8bf6[25]],question_id:_0xa180x15[_0x8bf6[26]][_0x8bf6[69]],question_type:_0x8bf6[75],question_other_answer:{$ne:null}},attributes:[_0x8bf6[39],_0x8bf6[38],_0x8bf6[40],_0x8bf6[80],_0x8bf6[41],_0x8bf6[78],_0x8bf6[79],[sequelize[_0x8bf6[71]](_0x8bf6[46],sequelize[_0x8bf6[70]](_0x8bf6[79])),_0x8bf6[46]]],group:[_0x8bf6[38],_0x8bf6[79]]})})[_0x8bf6[15]](function(_0xa180x1a){if(_0xa180x1a){_[_0x8bf6[45]](_0xa180x1a,function(_0xa180x2d){_0xa180x23[_0x8bf6[44]](_0xa180x2d)})};var _0xa180x29=_[_0x8bf6[56]](_0xa180x23,_0x8bf6[38]);_[_0x8bf6[45]](_0xa180x29,function(_0xa180x35,_0xa180x2a){var _0xa180x30=[];var _0xa180x26=0;var _0xa180x31=[];var _0xa180x33=[];var _0xa180x36=_0x8bf6[76];_[_0x8bf6[45]](_0xa180x35,function(_0xa180x2d){if(_0xa180x2d[_0x8bf6[77]]){_0xa180x30[_0x8bf6[44]]({value:_0xa180x2d[_0x8bf6[77]],count:_0xa180x2d[_0x8bf6[54]][_0x8bf6[46]]});_0xa180x26= _0xa180x26+ _0xa180x2d[_0x8bf6[54]][_0x8bf6[46]]};if(_0xa180x2d[_0x8bf6[78]]){_0xa180x30[_0x8bf6[44]]({other_option:true,value:_0xa180x2d[_0x8bf6[79]],count:_0xa180x2d[_0x8bf6[54]][_0x8bf6[46]]})}});var _0xa180x38=_[_0x8bf6[59]](_0xa180x35)[_0x8bf6[80]]?JSON[_0x8bf6[81]](_[_0x8bf6[59]](_0xa180x35)[_0x8bf6[80]]):null;if(_0xa180x38){_[_0x8bf6[45]](_0xa180x38[_0x8bf6[82]],function(_0xa180x39){var _0xa180x3a=_[_0x8bf6[34]](_0xa180x30,{value:_0xa180x39});if(!_0xa180x3a){_0xa180x30[_0x8bf6[44]]({value:_0xa180x39,count:0,percentage:0})}})};var _0xa180x32=[];var _0xa180x3b=false;for(var _0xa180x37=0;_0xa180x37< _0xa180x30[_0x8bf6[47]];_0xa180x37++){if(!_0xa180x30[_0xa180x37][_0x8bf6[83]]){_0xa180x31[_0xa180x37]= _0xa180x30[_0xa180x37][_0x8bf6[46]];_0xa180x33[_0xa180x37]= _0xa180x30[_0xa180x37][_0x8bf6[67]];_0xa180x30[_0xa180x37][_0x8bf6[68]]= _0xa180x26?(_0xa180x30[_0xa180x37][_0x8bf6[46]]/ _0xa180x26)* 100:0}};_0xa180x25= {total:_0xa180x26,question_type:_[_0x8bf6[59]](_0xa180x35)[_0x8bf6[39]],question_id:_[_0x8bf6[59]](_0xa180x35)[_0x8bf6[38]],question_label:_[_0x8bf6[59]](_0xa180x35)[_0x8bf6[40]],question_text:_[_0x8bf6[59]](_0xa180x35)[_0x8bf6[41]],choices:_0xa180x30,graphData:_0xa180x31,graphLabels:_0xa180x33,graphType:_0xa180x36}});return _0xa180xb[_0x8bf6[12]](201)[_0x8bf6[11]](_0xa180x25)})}else {console[_0x8bf6[29]](_0x8bf6[84]);return _0xa180xb[_0x8bf6[24]](404)}}})[_0x8bf6[19]](function(_0xa180xc){console[_0x8bf6[29]](_0xa180xc);return handleError(_0xa180xb,_0xa180xc)})};exports[_0x8bf6[85]]= function(_0xa180x15,_0xa180xb){var _0xa180x3c;var _0xa180x23;var _0xa180x3d;var _0xa180x34;return ReportJscriptyQuestion[_0x8bf6[50]]({where:{projectId:_0xa180x15[_0x8bf6[26]][_0x8bf6[25]],question_type:_0x8bf6[75]},attributes:[_0x8bf6[39],_0x8bf6[38],_0x8bf6[40],_0x8bf6[41],_0x8bf6[77],_0x8bf6[80],_0x8bf6[79],[sequelize[_0x8bf6[71]](_0x8bf6[46],sequelize[_0x8bf6[70]](_0x8bf6[77])),_0x8bf6[46]]],group:[_0x8bf6[38],_0x8bf6[77]]})[_0x8bf6[15]](function(_0xa180x1a){_0xa180x23= _0xa180x1a;return ReportJscriptyQuestion[_0x8bf6[50]]({where:{projectId:_0xa180x15[_0x8bf6[26]][_0x8bf6[25]],question_type:_0x8bf6[75],question_other_answer:{$ne:null}},attributes:[_0x8bf6[39],_0x8bf6[38],_0x8bf6[40],_0x8bf6[41],_0x8bf6[78],_0x8bf6[79],_0x8bf6[80],[sequelize[_0x8bf6[71]](_0x8bf6[46],sequelize[_0x8bf6[70]](_0x8bf6[78])),_0x8bf6[46]]],group:[_0x8bf6[38],_0x8bf6[78]]})})[_0x8bf6[15]](function(_0xa180x1a){_[_0x8bf6[45]](_0xa180x1a,function(_0xa180x2d){_0xa180x23[_0x8bf6[44]](_0xa180x2d)});var _0xa180x25=[];var _0xa180x36=_0x8bf6[76];var _0xa180x29=_[_0x8bf6[56]](_0xa180x23,_0x8bf6[38]);_[_0x8bf6[45]](_0xa180x29,function(_0xa180x35,_0xa180x2a){var _0xa180x26=0;var _0xa180x31=[];var _0xa180x33=[];var _0xa180x30=[];_[_0x8bf6[45]](_0xa180x35,function(_0xa180x2d){if(_0xa180x2d[_0x8bf6[77]]){_0xa180x30[_0x8bf6[44]]({value:_0xa180x2d[_0x8bf6[77]],count:_0xa180x2d[_0x8bf6[54]][_0x8bf6[46]]});_0xa180x26= _0xa180x26+ _0xa180x2d[_0x8bf6[54]][_0x8bf6[46]]};if(_0xa180x2d[_0x8bf6[78]]){_0xa180x30[_0x8bf6[44]]({other_option:true,value:_0xa180x2d[_0x8bf6[78]],count:_0xa180x2d[_0x8bf6[54]][_0x8bf6[46]]})}});var _0xa180x38=JSON[_0x8bf6[81]](_[_0x8bf6[59]](_0xa180x35)[_0x8bf6[80]]);if(_0xa180x38){_[_0x8bf6[45]](_0xa180x38[_0x8bf6[82]],function(_0xa180x39){var _0xa180x3a=_[_0x8bf6[34]](_0xa180x30,{value:_0xa180x39});if(!_0xa180x3a){_0xa180x30[_0x8bf6[44]]({value:_0xa180x39,count:0,percentage:0})}})};for(var _0xa180x37=0;_0xa180x37< _0xa180x30[_0x8bf6[47]];_0xa180x37++){if(!_0xa180x30[_0xa180x37][_0x8bf6[83]]&& (_0xa180x26!= 0)){_0xa180x30[_0xa180x37][_0x8bf6[68]]= (_0xa180x30[_0xa180x37][_0x8bf6[46]]/ _0xa180x26)* 100;_0xa180x31[_0x8bf6[44]](_0xa180x30[_0xa180x37][_0x8bf6[46]]);_0xa180x33[_0x8bf6[44]](_0xa180x30[_0xa180x37][_0x8bf6[67]])}};_0xa180x25[_0x8bf6[44]]({total:_0xa180x26,question_type:_[_0x8bf6[59]](_0xa180x35)[_0x8bf6[39]],question_id:_[_0x8bf6[59]](_0xa180x35)[_0x8bf6[38]],question_label:_[_0x8bf6[59]](_0xa180x35)[_0x8bf6[40]],question_other_label:_[_0x8bf6[59]](_0xa180x35)[_0x8bf6[79]],question_text:_[_0x8bf6[59]](_0xa180x35)[_0x8bf6[41]],choices:_0xa180x30,graphData:_0xa180x31,graphLabels:_0xa180x33,graphType:_0xa180x36})});_0xa180x3c= _0xa180x25;return ReportJscriptyQuestion[_0x8bf6[50]]({where:{projectId:_0xa180x15[_0x8bf6[26]][_0x8bf6[25]],question_type:_0x8bf6[55]},attributes:[_0x8bf6[25],_0x8bf6[39],_0x8bf6[38],_0x8bf6[40],_0x8bf6[41],_0x8bf6[77]],include:[{model:ReportJscriptyInput,where:{$or:[{input_type:_0x8bf6[72],input_value:_0x8bf6[73]},{input_type:{$ne:_0x8bf6[72]},input_value:{$ne:null}}]},attributes:[_0x8bf6[42],_0x8bf6[43],_0x8bf6[74],[sequelize[_0x8bf6[71]](_0x8bf6[46],sequelize[_0x8bf6[70]](_0x8bf6[42])),_0x8bf6[46]]]}],group:[_0x8bf6[38],_0x8bf6[42]]})})[_0x8bf6[15]](function(_0xa180x27){_0xa180x23= _0xa180x27;return ReportJscriptyQuestion[_0x8bf6[50]]({where:{projectId:_0xa180x15[_0x8bf6[26]][_0x8bf6[25]],question_type:_0x8bf6[55]},attributes:[_0x8bf6[38],[sequelize[_0x8bf6[71]](_0x8bf6[46],sequelize[_0x8bf6[70]](_0x8bf6[38])),_0x8bf6[46]]],group:[_0x8bf6[38]]})})[_0x8bf6[15]](function(_0xa180x1d){_0xa180x34= _0xa180x1d;var _0xa180x25=[];var _0xa180x29=_[_0x8bf6[56]](_0xa180x23,_0x8bf6[38]);_[_0x8bf6[45]](_0xa180x29,function(_0xa180x35,_0xa180x2a){var _0xa180x30=[];var _0xa180x26=0;_0xa180x26= _[_0x8bf6[34]](_0xa180x34,function(_0xa180x1d){return _0xa180x1d[_0x8bf6[38]]== _[_0x8bf6[59]](_0xa180x35)[_0x8bf6[38]]})[_0x8bf6[54]][_0x8bf6[46]];var _0xa180x31=[];var _0xa180x3f=[];var _0xa180x33=[];var _0xa180x36=_0x8bf6[65];_[_0x8bf6[45]](_0xa180x35,function(_0xa180x2d){var _0xa180x40=_0xa180x2d;_[_0x8bf6[45]](_0xa180x40.ReportJscriptyInputs,function(_0xa180x22){_0xa180x30[_0x8bf6[44]]({checkbox:true,value:_0xa180x22[_0x8bf6[42]],count:_0xa180x22[_0x8bf6[54]][_0x8bf6[46]]})})});var _0xa180x32=[];for(var _0xa180x37=0;_0xa180x37< _0xa180x30[_0x8bf6[47]];_0xa180x37++){_0xa180x32[_0xa180x37]= _0xa180x30[_0xa180x37][_0x8bf6[46]];_0xa180x30[_0xa180x37][_0x8bf6[68]]= (_0xa180x30[_0xa180x37][_0x8bf6[46]]/ _0xa180x26)* 100;_0xa180x33[_0xa180x37]= _0xa180x30[_0xa180x37][_0x8bf6[67]]};_0xa180x31[0]= _0xa180x32;_0xa180x3c[_0x8bf6[44]]({total:_0xa180x26,question_type:_[_0x8bf6[59]](_0xa180x35)[_0x8bf6[39]],question_id:_[_0x8bf6[59]](_0xa180x35)[_0x8bf6[38]],question_label:_[_0x8bf6[59]](_0xa180x35)[_0x8bf6[40]],question_text:_[_0x8bf6[59]](_0xa180x35)[_0x8bf6[41]],choices:_0xa180x30,graphData:_0xa180x31,graphLabels:_0xa180x33,graphType:_0xa180x36})});return ReportJscriptyQuestion[_0x8bf6[50]]({where:{projectId:_0xa180x15[_0x8bf6[26]][_0x8bf6[25]],question_type:_0x8bf6[55]},attributes:[_0x8bf6[25],_0x8bf6[38],_0x8bf6[40],_0x8bf6[41],_0x8bf6[39]],include:[{model:ReportJscriptyInput,attributes:[_0x8bf6[42]]}]})})[_0x8bf6[15]](function(_0xa180x19){var _0xa180x29=_[_0x8bf6[56]](_0xa180x19,_0x8bf6[38]);var _0xa180x3e=[];_[_0x8bf6[45]](_0xa180x29,function(_0xa180x1d,_0xa180x2a){var _0xa180x2b=[];_[_0x8bf6[45]](_0xa180x1d,function(_0xa180x2c){_0xa180x2b= _[_0x8bf6[58]](_0xa180x2b,_[_0x8bf6[57]](_0xa180x2c.ReportJscriptyInputs,_0x8bf6[42]))});_0xa180x3e[_0x8bf6[44]]({question_text:_[_0x8bf6[59]](_0xa180x1d)[_0x8bf6[41]],question_type:_[_0x8bf6[59]](_0xa180x1d)[_0x8bf6[39]],question_label:_[_0x8bf6[59]](_0xa180x1d)[_0x8bf6[40]],question_id:_[_0x8bf6[59]](_0xa180x1d)[_0x8bf6[38]],labels:_0xa180x2b})});_[_0x8bf6[45]](_0xa180x3e,function(_0xa180x2d){var _0xa180x1d=_[_0x8bf6[34]](_0xa180x3c,{"\x71\x75\x65\x73\x74\x69\x6F\x6E\x5F\x69\x64":_0xa180x2d[_0x8bf6[38]]});if(_0xa180x1d){_[_0x8bf6[45]](_0xa180x2d[_0x8bf6[61]],function(_0xa180x2e){var _0xa180x2f=_[_0x8bf6[34]](_0xa180x1d[_0x8bf6[62]],{value:_0xa180x2e});if(!_0xa180x2f){_0xa180x1d[_0x8bf6[62]][_0x8bf6[44]]({value:_0xa180x2e,count:0,percentage:0});_0xa180x1d[_0x8bf6[63]][0][_0x8bf6[44]](0);_0xa180x1d[_0x8bf6[64]][_0x8bf6[44]](_0xa180x2e)}})}else {var _0xa180x30=[];var _0xa180x31=[];var _0xa180x32=[];var _0xa180x33=[];_[_0x8bf6[45]](_0xa180x2d[_0x8bf6[61]],function(_0xa180x2e){_0xa180x30[_0x8bf6[44]]({value:_0xa180x2e,count:0,percentage:0})});var _0xa180x26=_[_0x8bf6[34]](_0xa180x34,function(_0xa180x1d){return _0xa180x1d[_0x8bf6[38]]== _0xa180x2d[_0x8bf6[38]]})[_0x8bf6[54]][_0x8bf6[46]];_0xa180x3c[_0x8bf6[44]]({total:_0xa180x26,question_type:_0xa180x2d[_0x8bf6[39]],question_id:_0xa180x2d[_0x8bf6[38]],question_label:_0xa180x2d[_0x8bf6[40]],question_text:_0xa180x2d[_0x8bf6[41]],choices:_0xa180x30,graphType:_0x8bf6[65],graphData:_0xa180x31,graphLabels:_0xa180x33})}});return _0xa180xb[_0x8bf6[12]](201)[_0x8bf6[11]](_0xa180x3c)})[_0x8bf6[19]](function(_0xa180xc){console[_0x8bf6[29]](_0xa180xc);return handleError(_0xa180xb,_0xa180xc)})};exports[_0x8bf6[86]]= function(_0xa180x15,_0xa180xb){return JscriptyProject[_0x8bf6[86]](_0xa180x15[_0x8bf6[93]])[_0x8bf6[15]](function(_0xa180x18){return _0xa180xb[_0x8bf6[12]](201)[_0x8bf6[11]](_0xa180x18)})[_0x8bf6[19]](sequelize.UniqueConstraintError,function(_0xa180xc){if(_0xa180xc[_0x8bf6[88]][_0x8bf6[87]]){_0xa180xc[_0x8bf6[89]]= _0x8bf6[90];_0xa180xc[_0x8bf6[91]]= _0x8bf6[92]};return handleError(_0xa180xb,_0xa180xc)})[_0x8bf6[19]](function(_0xa180xc){return handleError(_0xa180xb,_0xa180xc)})};exports[_0x8bf6[94]]= function(_0xa180x15,_0xa180xb){return ReportJscriptySession[_0x8bf6[86]](_0xa180x15[_0x8bf6[93]])[_0x8bf6[15]](function(_0xa180x41){return _0xa180xb[_0x8bf6[12]](201)[_0x8bf6[11]](_0xa180x41)})[_0x8bf6[19]](function(_0xa180xc){return handleError(_0xa180xb,_0xa180xc)})};exports[_0x8bf6[95]]= function(_0xa180x15,_0xa180xb){return ReportJscriptyQuestion[_0x8bf6[17]]({where:{sessionId:_0xa180x15[_0x8bf6[26]][_0x8bf6[33]]}})[_0x8bf6[15]](function(){var _0xa180x42=[];for(var _0xa180x37=0;_0xa180x37< _0xa180x15[_0x8bf6[93]][_0x8bf6[47]];_0xa180x37++){_0xa180x42[_0xa180x37]= ReportJscriptyQuestion[_0x8bf6[86]](_0xa180x15[_0x8bf6[93]][_0xa180x37],{include:[{model:ReportJscriptyInput}]})};return Promise[_0x8bf6[96]](_0xa180x42)})[_0x8bf6[15]](function(_0xa180x27){return _0xa180xb[_0x8bf6[24]](201)})[_0x8bf6[19]](function(_0xa180xc){return handleError(_0xa180xb,_0xa180xc)})};exports[_0x8bf6[97]]= function(_0xa180x15,_0xa180xb){if(_0xa180x15[_0x8bf6[93]][_0x8bf6[25]]){delete _0xa180x15[_0x8bf6[93]][_0x8bf6[25]]};return JscriptyProject[_0x8bf6[27]](_0xa180x15[_0x8bf6[26]][_0x8bf6[25]])[_0x8bf6[15]](function(_0xa180x18){if(!_0xa180x18){return _0xa180xb[_0x8bf6[24]](404)};var _0xa180x13=_[_0x8bf6[98]](_0xa180x18,_0xa180x15[_0x8bf6[93]]);return _0xa180x13[_0x8bf6[99]]()})[_0x8bf6[15]](function(_0xa180x18){return _0xa180xb[_0x8bf6[12]](200)[_0x8bf6[11]](_0xa180x18)})[_0x8bf6[19]](function(_0xa180xc){return handleError(_0xa180xb,_0xa180xc)})};exports[_0x8bf6[100]]= function(_0xa180x15,_0xa180xb){return ReportJscriptySession[_0x8bf6[27]](_0xa180x15[_0x8bf6[26]][_0x8bf6[33]])[_0x8bf6[15]](function(_0xa180x1b){if(!_0xa180x1b){return _0xa180xb[_0x8bf6[24]](404)};var _0xa180x13=_[_0x8bf6[98]](_0xa180x1b,_0xa180x15[_0x8bf6[93]]);return _0xa180x13[_0x8bf6[99]]()})[_0x8bf6[15]](function(_0xa180x41){return _0xa180xb[_0x8bf6[12]](200)[_0x8bf6[11]](_0xa180x41)})[_0x8bf6[19]](function(_0xa180xc){return handleError(_0xa180xb,_0xa180xc)})};exports[_0x8bf6[17]]= function(_0xa180x15,_0xa180xb){return JscriptyProject[_0x8bf6[27]](_0xa180x15[_0x8bf6[26]][_0x8bf6[25]])[_0x8bf6[15]](function(_0xa180x18){if(!_0xa180x18){return _0xa180xb[_0x8bf6[24]](404)};return _0xa180x18[_0x8bf6[17]]()})[_0x8bf6[15]](function(){return _0xa180xb[_0x8bf6[24]](204)})[_0x8bf6[19]](function(_0xa180xc){return handleError(_0xa180xb,_0xa180xc)})};exports[_0x8bf6[101]]= function(_0xa180x15,_0xa180xb){return ReportJscriptySession[_0x8bf6[34]]({where:{session_id:_0xa180x15[_0x8bf6[26]][_0x8bf6[33]]}})[_0x8bf6[15]](function(_0xa180x1b){if(!_0xa180x1b){return _0xa180xb[_0x8bf6[24]](404)};return _0xa180x1b[_0x8bf6[17]]()})[_0x8bf6[15]](function(){return _0xa180xb[_0x8bf6[24]](204)})[_0x8bf6[19]](function(_0xa180xc){return handleError(_0xa180xb,_0xa180xc)})};exports[_0x8bf6[102]]= function(_0xa180x15,_0xa180xb){return JscriptyProject[_0x8bf6[17]]({where:{id:_0xa180x15[_0x8bf6[20]][_0x8bf6[103]]},individualHooks:true})[_0x8bf6[15]](function(){return _0xa180xb[_0x8bf6[24]](204)})[_0x8bf6[19]](function(_0xa180xc){return handleError(_0xa180xb,_0xa180xc)})};exports[_0x8bf6[104]]= function(_0xa180x15,_0xa180xb,_0xa180x16){return JscriptyProject[_0x8bf6[27]](_0xa180x15[_0x8bf6[26]][_0x8bf6[25]])[_0x8bf6[15]](function(_0xa180x18){if(!_0xa180x18){return _0xa180xb[_0x8bf6[24]](404)};_0xa180xb[_0x8bf6[109]]({"\x43\x6F\x6E\x74\x65\x6E\x74\x2D\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E":_0x8bf6[105]+ _0xa180x15[_0x8bf6[20]][_0x8bf6[106]]+ _0x8bf6[107],"\x43\x6F\x6E\x74\x65\x6E\x74\x2D\x54\x79\x70\x65":_0x8bf6[108]});return _0xa180xb[_0x8bf6[11]](_0xa180x18[_0x8bf6[110]])})[_0x8bf6[19]](function(_0xa180xc){return handleError(_0xa180xb,_0xa180xc)})} \ No newline at end of file diff --git a/server/api/jscripty_project/jscripty_project.events.js b/server/api/jscripty_project/jscripty_project.events.js index fe91bd8..c5557fe 100644 --- a/server/api/jscripty_project/jscripty_project.events.js +++ b/server/api/jscripty_project/jscripty_project.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const JscriptyProject = require('../../models').JscriptyProject; - -var JscriptyProjectEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -JscriptyProjectEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - JscriptyProject.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - JscriptyProjectEvents.emit(event + ':' + doc._id, doc); - JscriptyProjectEvents.emit(event, doc); - done(null); - } -} - -module.exports = JscriptyProjectEvents; +var _0x567b=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x4A\x73\x63\x72\x69\x70\x74\x79\x50\x72\x6F\x6A\x65\x63\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x567b[0];const EventEmitter=require(_0x567b[1]);const JscriptyProject=require(_0x567b[3])[_0x567b[2]];var JscriptyProjectEvents= new EventEmitter();JscriptyProjectEvents[_0x567b[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x567b[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x567b[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x567b[6]};for(var e in events){var event=events[e];JscriptyProject[_0x567b[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xfc72x8,_0xfc72x9,_0xfc72xa){JscriptyProjectEvents[_0x567b[10]](event+ _0x567b[8]+ _0xfc72x8[_0x567b[9]],_0xfc72x8);JscriptyProjectEvents[_0x567b[10]](event,_0xfc72x8);_0xfc72xa(null)}}module[_0x567b[11]]= JscriptyProjectEvents \ No newline at end of file diff --git a/server/api/jscripty_project/jscripty_project.socket.js b/server/api/jscripty_project/jscripty_project.socket.js index 9911b1a..f47f3f5 100644 --- a/server/api/jscripty_project/jscripty_project.socket.js +++ b/server/api/jscripty_project/jscripty_project.socket.js @@ -1,28 +1 @@ -'use strict'; - -const JscriptyProjectEvents = require('./jscripty_project.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('jscripty_project:' + event, socket); - - JscriptyProjectEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - JscriptyProjectEvents.removeListener(event, listener); - }; -} +var _0x8cfd=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x6A\x73\x63\x72\x69\x70\x74\x79\x5F\x70\x72\x6F\x6A\x65\x63\x74\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x6A\x73\x63\x72\x69\x70\x74\x79\x5F\x70\x72\x6F\x6A\x65\x63\x74\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x8cfd[0];const JscriptyProjectEvents=require(_0x8cfd[1]);var events=[_0x8cfd[2],_0x8cfd[3]];exports[_0x8cfd[4]]= function(_0xcb7ax3){for(var _0xcb7ax4=0,_0xcb7ax5=events[_0x8cfd[5]];_0xcb7ax4< _0xcb7ax5;_0xcb7ax4++){var _0xcb7ax6=events[_0xcb7ax4];var _0xcb7ax7=createListener(_0x8cfd[6]+ _0xcb7ax6,_0xcb7ax3);JscriptyProjectEvents[_0x8cfd[7]](_0xcb7ax6,_0xcb7ax7);_0xcb7ax3[_0x8cfd[7]](_0x8cfd[8],removeListener(_0xcb7ax6,_0xcb7ax7))}};function createListener(_0xcb7ax6,_0xcb7ax3){return function(_0xcb7ax9){_0xcb7ax3[_0x8cfd[9]](_0xcb7ax6,_0xcb7ax9)}}function removeListener(_0xcb7ax6,_0xcb7ax7){return function(){JscriptyProjectEvents[_0x8cfd[10]](_0xcb7ax6,_0xcb7ax7)}} \ No newline at end of file diff --git a/server/api/license/index.js b/server/api/license/index.js index f0a2983..d87cee0 100644 --- a/server/api/license/index.js +++ b/server/api/license/index.js @@ -1,12 +1 @@ -'use strict'; - -var express = require('express'); -var auth = require('../../auth/auth.service'); -var controller = require('./license.controller'); - -var router = express.Router(); - -router.get('/', controller.index); -router.post('/request', auth.isAuthenticated(), controller.request); - -module.exports = router; +var _0x13b4=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2F","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x72\x65\x71\x75\x65\x73\x74","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x72\x65\x71\x75\x65\x73\x74","\x70\x6F\x73\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x13b4[0];var express=require(_0x13b4[1]);var auth=require(_0x13b4[2]);var controller=require(_0x13b4[3]);var router=express.Router();router[_0x13b4[6]](_0x13b4[4],controller[_0x13b4[5]]);router[_0x13b4[10]](_0x13b4[7],auth[_0x13b4[8]](),controller[_0x13b4[9]]);module[_0x13b4[11]]= router \ No newline at end of file diff --git a/server/api/license/license.controller.js b/server/api/license/license.controller.js index a5d47ec..fd86f12 100644 --- a/server/api/license/license.controller.js +++ b/server/api/license/license.controller.js @@ -1,135 +1 @@ -'use strict'; - -/** - * Using Rails-like standard naming convention for endpoints. - * GET /api/licenses -> index - * POST /api/licenses -> create - * GET /api/licenses/:id -> show - * PUT /api/licenses/:id -> update - * DELETE /api/licenses/:id -> destroy - */ - -var _ = require('lodash'); -var crypto = require('crypto'); -var moment = require('moment'); -var rp = require('request-promise'); - -var config = require('../../config/environment'); -var license = require('../../config/license/license.service'); -var License = require('../../models').License; -var Setting = require('../../models').Setting; - -const expirationTh = 7; - -function handleError(res, statusCode) { - statusCode = statusCode || 500; - return function(err) { - console.log(err); - res.status(statusCode).send(err); - }; -} - -function handleEntityNotFound(res) { - return function(entity) { - if (!entity) { - entity = { - dataValues: { - license: license.demoLicense - } - }; - - entity.dataValues.license.token = license.getUuid(); - res.status(201).json(entity); - return null; - } - - return entity; - }; -} - -function saveUpdates(updates) { - return function(entity) { - return entity - .updateAttributes(updates) - .then(function(updated) { - return updated; - }); - }; -} - -function removeEntity(res) { - return function(entity) { - if (entity) { - return entity - .destroy() - .then(function() { - res.status(204).end(); - }); - } - }; -} - -// Gets a list of Licenses -exports.index = function(req, res, next) { - var _settings; - var _license; - - return Setting - .findById(1) - .then(function(settings) { - _settings = settings; - return License - .findById(1); - }) - .then(handleEntityNotFound(res)) - .then(function(_license) { - - if (!_license) { - _license = {}; - } - - try { - if (_license.license) { - _license.license = license.decrypt(_license.license, _license.data1); - _license.license = JSON.parse(_license.license); - } else { - _license.license = license.demoLicense; - } - } catch (err) { - console.log('decrypt error', err); - _license.license = license.demoLicense; - } - - if (_license.data2) { - var decipher = crypto.createDecipher('aes-256-ctr', config.session.secret); - var dec = decipher.update(_license.data2, 'base64', 'utf8') - dec += decipher.final('utf8'); - - _license.license.expirationTime = expirationTh - moment().diff(dec, 'days'); - } - - _license.license.token = _license.data1; - _license.license.token2 = license.getUuid(); - _.merge(_license.dataValues, _settings.dataValues); - - res.status(200).json(_license.dataValues); - }) - .catch(handleError(res)); -} - -// Creates a new License in the DB -exports.request = function(req, res) { - return rp({ - method: 'POST', - uri: config.provisioning + '/servers/' + license.getUuid() + '/request', - body: req.body, - json: true // Automatically stringifies the body to JSON - }) - .then(function(data) { - res.status(201).send(data); - }) - .catch(function(err) { - console.log(err); - return res.status(err.statusCode || 500).send(err); - }); -} +var _0x19ae=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x63\x72\x79\x70\x74\x6F","\x6D\x6F\x6D\x65\x6E\x74","\x72\x65\x71\x75\x65\x73\x74\x2D\x70\x72\x6F\x6D\x69\x73\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x4C\x69\x63\x65\x6E\x73\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x53\x65\x74\x74\x69\x6E\x67","\x6C\x6F\x67","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x64\x65\x6D\x6F\x4C\x69\x63\x65\x6E\x73\x65","\x74\x6F\x6B\x65\x6E","\x6C\x69\x63\x65\x6E\x73\x65","\x64\x61\x74\x61\x56\x61\x6C\x75\x65\x73","\x67\x65\x74\x55\x75\x69\x64","\x6A\x73\x6F\x6E","\x74\x68\x65\x6E","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x65\x6E\x64","\x64\x65\x73\x74\x72\x6F\x79","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x64\x61\x74\x61\x31","\x64\x65\x63\x72\x79\x70\x74","\x70\x61\x72\x73\x65","\x64\x65\x63\x72\x79\x70\x74\x20\x65\x72\x72\x6F\x72","\x64\x61\x74\x61\x32","\x61\x65\x73\x2D\x32\x35\x36\x2D\x63\x74\x72","\x73\x65\x63\x72\x65\x74","\x73\x65\x73\x73\x69\x6F\x6E","\x63\x72\x65\x61\x74\x65\x44\x65\x63\x69\x70\x68\x65\x72","\x62\x61\x73\x65\x36\x34","\x75\x74\x66\x38","\x75\x70\x64\x61\x74\x65","\x66\x69\x6E\x61\x6C","\x65\x78\x70\x69\x72\x61\x74\x69\x6F\x6E\x54\x69\x6D\x65","\x64\x61\x79\x73","\x64\x69\x66\x66","\x74\x6F\x6B\x65\x6E\x32","\x6D\x65\x72\x67\x65","\x66\x69\x6E\x64\x42\x79\x49\x64","\x72\x65\x71\x75\x65\x73\x74","\x73\x74\x61\x74\x75\x73\x43\x6F\x64\x65","\x50\x4F\x53\x54","\x70\x72\x6F\x76\x69\x73\x69\x6F\x6E\x69\x6E\x67","\x2F\x73\x65\x72\x76\x65\x72\x73\x2F","\x2F\x72\x65\x71\x75\x65\x73\x74","\x62\x6F\x64\x79"];_0x19ae[0];var _=require(_0x19ae[1]);var crypto=require(_0x19ae[2]);var moment=require(_0x19ae[3]);var rp=require(_0x19ae[4]);var config=require(_0x19ae[5]);var license=require(_0x19ae[6]);var License=require(_0x19ae[8])[_0x19ae[7]];var Setting=require(_0x19ae[8])[_0x19ae[9]];const expirationTh=7;function handleError(_0x201bxb,_0x201bxc){_0x201bxc= _0x201bxc|| 500;return function(_0x201bxd){console[_0x19ae[10]](_0x201bxd);_0x201bxb[_0x19ae[12]](_0x201bxc)[_0x19ae[11]](_0x201bxd)}}function handleEntityNotFound(_0x201bxb){return function(_0x201bxf){if(!_0x201bxf){_0x201bxf= {dataValues:{license:license[_0x19ae[13]]}};_0x201bxf[_0x19ae[16]][_0x19ae[15]][_0x19ae[14]]= license[_0x19ae[17]]();_0x201bxb[_0x19ae[12]](201)[_0x19ae[18]](_0x201bxf);return null};return _0x201bxf}}function saveUpdates(_0x201bx11){return function(_0x201bxf){return _0x201bxf[_0x19ae[20]](_0x201bx11)[_0x19ae[19]](function(_0x201bx12){return _0x201bx12})}}function removeEntity(_0x201bxb){return function(_0x201bxf){if(_0x201bxf){return _0x201bxf[_0x19ae[22]]()[_0x19ae[19]](function(){_0x201bxb[_0x19ae[12]](204)[_0x19ae[21]]()})}}}exports[_0x19ae[23]]= function(_0x201bx14,_0x201bxb,_0x201bx15){var _0x201bx16;var _0x201bx17;return Setting[_0x19ae[43]](1)[_0x19ae[19]](function(_0x201bx1a){_0x201bx16= _0x201bx1a;return License[_0x19ae[43]](1)})[_0x19ae[19]](handleEntityNotFound(_0x201bxb))[_0x19ae[19]](function(_0x201bx17){if(!_0x201bx17){_0x201bx17= {}};try{if(_0x201bx17[_0x19ae[15]]){_0x201bx17[_0x19ae[15]]= license[_0x19ae[26]](_0x201bx17[_0x19ae[15]],_0x201bx17[_0x19ae[25]]);_0x201bx17[_0x19ae[15]]= JSON[_0x19ae[27]](_0x201bx17[_0x19ae[15]])}else {_0x201bx17[_0x19ae[15]]= license[_0x19ae[13]]}}catch(err){console[_0x19ae[10]](_0x19ae[28],err);_0x201bx17[_0x19ae[15]]= license[_0x19ae[13]]};if(_0x201bx17[_0x19ae[29]]){var _0x201bx18=crypto[_0x19ae[33]](_0x19ae[30],config[_0x19ae[32]][_0x19ae[31]]);var _0x201bx19=_0x201bx18[_0x19ae[36]](_0x201bx17[_0x19ae[29]],_0x19ae[34],_0x19ae[35]);_0x201bx19+= _0x201bx18[_0x19ae[37]](_0x19ae[35]);_0x201bx17[_0x19ae[15]][_0x19ae[38]]= expirationTh- moment()[_0x19ae[40]](_0x201bx19,_0x19ae[39])};_0x201bx17[_0x19ae[15]][_0x19ae[14]]= _0x201bx17[_0x19ae[25]];_0x201bx17[_0x19ae[15]][_0x19ae[41]]= license[_0x19ae[17]]();_[_0x19ae[42]](_0x201bx17[_0x19ae[16]],_0x201bx16[_0x19ae[16]]);_0x201bxb[_0x19ae[12]](200)[_0x19ae[18]](_0x201bx17[_0x19ae[16]])})[_0x19ae[24]](handleError(_0x201bxb))};exports[_0x19ae[44]]= function(_0x201bx14,_0x201bxb){return rp({method:_0x19ae[46],uri:config[_0x19ae[47]]+ _0x19ae[48]+ license[_0x19ae[17]]()+ _0x19ae[49],body:_0x201bx14[_0x19ae[50]],json:true})[_0x19ae[19]](function(_0x201bx1b){_0x201bxb[_0x19ae[12]](201)[_0x19ae[11]](_0x201bx1b)})[_0x19ae[24]](function(_0x201bxd){console[_0x19ae[10]](_0x201bxd);return _0x201bxb[_0x19ae[12]](_0x201bxd[_0x19ae[45]]|| 500)[_0x19ae[11]](_0x201bxd)})} \ No newline at end of file diff --git a/server/api/list/index.js b/server/api/list/index.js index 2336f13..2fe4a30 100644 --- a/server/api/list/index.js +++ b/server/api/list/index.js @@ -1,28 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./list.controller'); -var auth = require('../../auth/auth.service'); -var license = require('../../config/license/license.service'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), license.hasCm(), auth.hasModule([5], ['admin', 'agent']), controller.index); -router.get('/:listId/customfields/:id', auth.isAuthenticated(), license.hasCm(), auth.hasModule([5], ['admin', 'agent']), controller.showCustomField); -router.get('/:id/customfields', auth.isAuthenticated(), license.hasCm(), auth.hasModule([5], ['admin', 'agent']), controller.getCustomFields); -router.get('/:id/agents', auth.isAuthenticated(), license.hasCm(), auth.hasModule([5], ['admin', 'agent']), controller.showAgents); -router.get('/:id/contacts', auth.isAuthenticated(), license.hasCm(), auth.hasModule([5], ['admin', 'agent']), controller.getContacts); -router.get('/:id', auth.isAuthenticated(), license.hasCm(), auth.hasModule([5], ['admin', 'agent']), controller.show); -router.post('/', auth.isAuthenticated(), license.hasCm(), auth.hasModule([5], ['admin']), controller.create); -router.post('/:id/agents', auth.isAuthenticated(), license.hasCm(), auth.hasModule([5], ['admin']), controller.addAgents); -router.post('/:id/contacts', auth.isAuthenticated(), license.hasCm(), auth.hasModule([5], ['admin', 'agent']), controller.getContact); -router.post('/:id/customfields', auth.isAuthenticated(), license.hasCm(), auth.hasModule([5], ['admin']), controller.createCustomField); -router.put('/:listId/customfields/:id', auth.isAuthenticated(), license.hasCm(), auth.hasModule([5], ['admin']), controller.updateCustomField); -router.put('/:id', auth.isAuthenticated(), license.hasCm(), auth.hasModule([5], ['admin']), controller.update); -router.delete('/:id/agents', auth.isAuthenticated(), license.hasCm(), auth.hasModule([5], ['admin']), controller.removeAgents); -router.delete('/', auth.isAuthenticated(), license.hasCm(), auth.hasModule([5], ['admin']), controller.bulkDestroy); -router.delete('/:id', auth.isAuthenticated(), license.hasCm(), auth.hasModule([5], ['admin']), controller.destroy); -router.delete('/:listId/customfields/:id', auth.isAuthenticated(), license.hasCm(), auth.hasModule([5], ['admin']), controller.removeCustomField); -router.delete('/:listId/customfields', auth.isAuthenticated(), license.hasCm(), auth.hasModule([5], ['admin']), controller.removeAllCustomFields); - -module.exports = router; +var _0x9444=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x6C\x69\x73\x74\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x68\x61\x73\x43\x6D","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x6C\x69\x73\x74\x49\x64\x2F\x63\x75\x73\x74\x6F\x6D\x66\x69\x65\x6C\x64\x73\x2F\x3A\x69\x64","\x73\x68\x6F\x77\x43\x75\x73\x74\x6F\x6D\x46\x69\x65\x6C\x64","\x2F\x3A\x69\x64\x2F\x63\x75\x73\x74\x6F\x6D\x66\x69\x65\x6C\x64\x73","\x67\x65\x74\x43\x75\x73\x74\x6F\x6D\x46\x69\x65\x6C\x64\x73","\x2F\x3A\x69\x64\x2F\x61\x67\x65\x6E\x74\x73","\x73\x68\x6F\x77\x41\x67\x65\x6E\x74\x73","\x2F\x3A\x69\x64\x2F\x63\x6F\x6E\x74\x61\x63\x74\x73","\x67\x65\x74\x43\x6F\x6E\x74\x61\x63\x74\x73","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x61\x64\x64\x41\x67\x65\x6E\x74\x73","\x67\x65\x74\x43\x6F\x6E\x74\x61\x63\x74","\x63\x72\x65\x61\x74\x65\x43\x75\x73\x74\x6F\x6D\x46\x69\x65\x6C\x64","\x75\x70\x64\x61\x74\x65\x43\x75\x73\x74\x6F\x6D\x46\x69\x65\x6C\x64","\x70\x75\x74","\x75\x70\x64\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65\x41\x67\x65\x6E\x74\x73","\x64\x65\x6C\x65\x74\x65","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x73\x74\x72\x6F\x79","\x72\x65\x6D\x6F\x76\x65\x43\x75\x73\x74\x6F\x6D\x46\x69\x65\x6C\x64","\x2F\x3A\x6C\x69\x73\x74\x49\x64\x2F\x63\x75\x73\x74\x6F\x6D\x66\x69\x65\x6C\x64\x73","\x72\x65\x6D\x6F\x76\x65\x41\x6C\x6C\x43\x75\x73\x74\x6F\x6D\x46\x69\x65\x6C\x64\x73","\x65\x78\x70\x6F\x72\x74\x73"];_0x9444[0];var express=require(_0x9444[1]);var controller=require(_0x9444[2]);var auth=require(_0x9444[3]);var license=require(_0x9444[4]);var router=express.Router();router[_0x9444[12]](_0x9444[5],auth[_0x9444[6]](),license[_0x9444[7]](),auth[_0x9444[10]]([5],[_0x9444[8],_0x9444[9]]),controller[_0x9444[11]]);router[_0x9444[12]](_0x9444[13],auth[_0x9444[6]](),license[_0x9444[7]](),auth[_0x9444[10]]([5],[_0x9444[8],_0x9444[9]]),controller[_0x9444[14]]);router[_0x9444[12]](_0x9444[15],auth[_0x9444[6]](),license[_0x9444[7]](),auth[_0x9444[10]]([5],[_0x9444[8],_0x9444[9]]),controller[_0x9444[16]]);router[_0x9444[12]](_0x9444[17],auth[_0x9444[6]](),license[_0x9444[7]](),auth[_0x9444[10]]([5],[_0x9444[8],_0x9444[9]]),controller[_0x9444[18]]);router[_0x9444[12]](_0x9444[19],auth[_0x9444[6]](),license[_0x9444[7]](),auth[_0x9444[10]]([5],[_0x9444[8],_0x9444[9]]),controller[_0x9444[20]]);router[_0x9444[12]](_0x9444[21],auth[_0x9444[6]](),license[_0x9444[7]](),auth[_0x9444[10]]([5],[_0x9444[8],_0x9444[9]]),controller[_0x9444[22]]);router[_0x9444[24]](_0x9444[5],auth[_0x9444[6]](),license[_0x9444[7]](),auth[_0x9444[10]]([5],[_0x9444[8]]),controller[_0x9444[23]]);router[_0x9444[24]](_0x9444[17],auth[_0x9444[6]](),license[_0x9444[7]](),auth[_0x9444[10]]([5],[_0x9444[8]]),controller[_0x9444[25]]);router[_0x9444[24]](_0x9444[19],auth[_0x9444[6]](),license[_0x9444[7]](),auth[_0x9444[10]]([5],[_0x9444[8],_0x9444[9]]),controller[_0x9444[26]]);router[_0x9444[24]](_0x9444[15],auth[_0x9444[6]](),license[_0x9444[7]](),auth[_0x9444[10]]([5],[_0x9444[8]]),controller[_0x9444[27]]);router[_0x9444[29]](_0x9444[13],auth[_0x9444[6]](),license[_0x9444[7]](),auth[_0x9444[10]]([5],[_0x9444[8]]),controller[_0x9444[28]]);router[_0x9444[29]](_0x9444[21],auth[_0x9444[6]](),license[_0x9444[7]](),auth[_0x9444[10]]([5],[_0x9444[8]]),controller[_0x9444[30]]);router[_0x9444[32]](_0x9444[17],auth[_0x9444[6]](),license[_0x9444[7]](),auth[_0x9444[10]]([5],[_0x9444[8]]),controller[_0x9444[31]]);router[_0x9444[32]](_0x9444[5],auth[_0x9444[6]](),license[_0x9444[7]](),auth[_0x9444[10]]([5],[_0x9444[8]]),controller[_0x9444[33]]);router[_0x9444[32]](_0x9444[21],auth[_0x9444[6]](),license[_0x9444[7]](),auth[_0x9444[10]]([5],[_0x9444[8]]),controller[_0x9444[34]]);router[_0x9444[32]](_0x9444[13],auth[_0x9444[6]](),license[_0x9444[7]](),auth[_0x9444[10]]([5],[_0x9444[8]]),controller[_0x9444[35]]);router[_0x9444[32]](_0x9444[36],auth[_0x9444[6]](),license[_0x9444[7]](),auth[_0x9444[10]]([5],[_0x9444[8]]),controller[_0x9444[37]]);module[_0x9444[38]]= router \ No newline at end of file diff --git a/server/api/list/list.controller.js b/server/api/list/list.controller.js index 18caabc..b17ddb6 100644 --- a/server/api/list/list.controller.js +++ b/server/api/list/list.controller.js @@ -1,463 +1 @@ -'use strict'; - -var _ = require('lodash'); -var util = require('util'); - -var User = require('../../models').User; -var List = require('../../models').List; -var UserHasList = require('../../models').UserHasList; -var CustomField = require('../../models').CustomField; -var Contact = require('../../models').Contact; -var Util = require('../../config/util'); -var sequelize = require('../../models').sequelize; - -// Get list of lists -exports.index = function(req, res, next) { - switch (req.user.role) { - case 'agent': - return User - .findById(req.user.id) - .then(function(agent) { - return agent.getLists(); - }) - .then(function(lists) { - var agentLists = _.map(lists, 'id'); - return List - .scope('customFields') - .findAndCountAll(_.merge(Util.getQuery(req.query, { - $or: [{ - defaultEntry: true - }, { - id: agentLists - }] - }), { - distinct: true - })); - }) - .then(function(result) { - res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); - default: - return List - .scope('customFields') - .findAndCountAll(_.merge(Util.getQuery(req.query), { - distinct: true - })) - .then(function(result) { - res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); - } - -}; - -// Get all custom_fields -exports.getCustomFields = function(req, res) { - return CustomField - .findAndCountAll({ - where: { - ListId: req.params.id - } - }) - .then(function(customFields) { - return res.status(200).send(customFields); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -// Get all custom_fields -exports.getContact = function(req, res) { - var where = _.merge(req.body, { - ListId: req.params.id - }); - - return Contact - .findOrCreate({ - where: where, - default: req.body - }) - .spread(function(contact) { - return res.status(200).send(contact); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.getContacts = function(req, res) { - var _baseQuery = { - where: { - ListId: req.params.id, - }, - attributes: ['phone', 'mobile', 'fax', 'email'] - }; - - _.forIn(req.query, function(value, key) { - _baseQuery.where[key] = { - $like: '%' + value + '%' - }; - }); - - return Contact - .findAll(_baseQuery) - .then(function(contacts) { - return res.status(200).send({ - rows: contacts, - length: contacts.length - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.showCustomField = function(req, res) { - return CustomField - .findById(req.params.id) - .then(function(customField) { - if (!customField) { - return res.sendStatus(404); - } - return res.status(200).send(customField); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.updateCustomField = function(req, res) { - return CustomField - .findById(req.params.id) - .then(function(customField) { - if (!customField) { - return res.sendStatus(404); - } - var updated = _.merge(customField, req.body); - return updated.save(); - }) - .then(function(customField) { - return res.status(200).send(customField); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.createCustomField = function(req, res) { - var _customField; - req.body.ListId = req.params.id; - return sequelize.transaction(function(t) { - return CustomField - .create(req.body) - .then(function(customField) { - _customField = customField; - customField.name = 'cf_' + customField.id; - return customField.save(); - }) - .then(function() { - return sequelize.query(util.format('ALTER TABLE cm_contacts ADD COLUMN %s VARCHAR(255)', _customField.name)); - }) - .then(function() { - return res.sendStatus(201); - }) - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get a single list -exports.show = function(req, res) { - return List - .findById(req.params.id) - .then(function(list) { - if (!list) { - return res.sendStatus(404); - } - return res.send(list); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Creates a new list in the DB. -exports.create = function(req, res) { - return sequelize.transaction(function(t) { - return List - .create(req.body) - .then(function(list) { - return res.status(201).send(list); - }) - }) - .catch(sequelize.UniqueConstraintError, function(err) { - err.translatedMessage = 'MESSAGE_EXIST_LIST'; - err.message = 'The list name already exists'; - return res.status(500).send(err); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Updates an existing list in the DB. -exports.update = function(req, res) { - return List - .findById(req.params.id) - .then(function(list) { - if (!list) { - return res.sendStatus(404); - } - if (req.body.id) { - delete req.body.id; - } - var updated = _.merge(list, req.body); - return updated.save(); - }) - .then(function(list) { - return res.status(200).send(list); - }) - .catch(sequelize.UniqueConstraintError, function(err) { - err.translatedMessage = 'MESSAGE_EXIST_LIST'; - err.message = 'The list name already exists'; - return res.status(500).send(err); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.showAgents = function(req, res) { - return List - .findById(req.params.id) - .then(function(list) { - if (!list) { - return res.sendStatus(404); - } - return list - .getUsers({ - where: { - role: 'agent' - }, - attributes: ['id', 'name', 'fullname', 'email'] - }); - }) - .then(function(agents) { - return res.status(200).send({ - rows: agents, - count: agents.length - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Updates an existing user_has_list in the DB. -exports.addAgents = function(req, res, next) { - return User - .findAll({ - where: { - id: req.body.agents - } - }) - .then(function(users) { - var userHasLists = _.map(users, function(user) { - return { - list: req.params.id, - membername: user.name, - UserId: user.id - }; - }); - - return UserHasList - .bulkCreate(userHasLists, { - individualHooks: true - }); - }) - .then(function() { - return res.sendStatus(200); - }) - .catch(function(err) { - console.log(err); - return next(err); - }); -}; - -exports.removeAgents = function(req, res, next) { - return UserHasList - .destroy({ - where: { - UserId: req.query.agents, - list: req.params.id - }, - individualHooks: true - }) - .then(function() { - return res.sendStatus(202); - }) - .catch(function(err) { - return next(err); - }); -}; - -// Deletes a list from the DB. -exports.destroy = function(req, res) { - return destroyList(req.params.id, res); -}; - -// Deletes multiple lists from the DB. -exports.bulkDestroy = function(req, res) { //add the check for associated contacts - return destroyList(req.query.id, res); -}; - -function destroyList(id, res) { - return delCf(id, res) - .all() - .then(function() { - return List.destroy({ - where: { - id: id - }, - individualHooks: true - }); - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -} - -function delCf(id, res) { - var _cfs; - return CustomField.findAll({ - where: { - ListId: id - } - }) - .then(function(cfs) { - if (!cfs) { - return res.sendStatus(404); - } - _cfs = cfs; - return CustomField - .destroy({ - where: { - id: id - } - }); - }) - .then(function() { - return Contact - .describe(); - }) - .then(function(tableFields) { - return _.keys(tableFields); - }) - .then(function(fields) { - var bulkDel = []; - _.forEach(_cfs, function(elem) { - if (_.includes(fields, elem.name)) { - bulkDel.push(sequelize.query(util.format('ALTER TABLE cm_contacts DROP COLUMN %s', elem.name))); - } - }); - return bulkDel; - }) -} - -exports.removeCustomField = function(req, res) { - var _cf; - return CustomField - .findById(req.params.id) - .then(function(cf) { - if (!cf) { - return res.sendStatus(404); - } - _cf = cf; - return CustomField - .destroy({ - where: { - id: req.params.id - } - }); - }) - .then(function() { - return Contact - .describe(); - }) - .then(function(tableFields) { - return _.keys(tableFields); - }) - .then(function(fields) { - if (_.includes(fields, _cf.name)) { - return sequelize.query(util.format('ALTER TABLE cm_contacts DROP COLUMN %s', _cf.name)); - } - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.removeAllCustomFields = function(req, res) { - var _cfs; - return CustomField - .findAll({ - where: { - id: req.query.ids - } - }) - .then(function(cfs) { - if (!cfs) { - return res.sendStatus(404); - } - _cfs = cfs; - return CustomField - .destroy({ - where: { - id: req.query.ids - } - }); - }) - .then(function() { - return Contact - .describe(); - }) - .then(function(tableFields) { - return _.keys(tableFields); - }) - .then(function(fields) { - var bulkDel = []; - _cfs.forEach(function(elem) { - if (_.includes(fields, elem.name)) { - bulkDel.push(sequelize.query(util.format('ALTER TABLE cm_contacts DROP COLUMN %s', elem.name))); - } - }); - return bulkDel; - }) - .all() - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0xce13=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x75\x74\x69\x6C","\x55\x73\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x4C\x69\x73\x74","\x55\x73\x65\x72\x48\x61\x73\x4C\x69\x73\x74","\x43\x75\x73\x74\x6F\x6D\x46\x69\x65\x6C\x64","\x43\x6F\x6E\x74\x61\x63\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x69\x64","\x6D\x61\x70","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x6D\x65\x72\x67\x65","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x63\x75\x73\x74\x6F\x6D\x46\x69\x65\x6C\x64\x73","\x73\x63\x6F\x70\x65","\x67\x65\x74\x4C\x69\x73\x74\x73","\x75\x73\x65\x72","\x66\x69\x6E\x64\x42\x79\x49\x64","\x61\x67\x65\x6E\x74","\x72\x6F\x6C\x65","\x67\x65\x74\x43\x75\x73\x74\x6F\x6D\x46\x69\x65\x6C\x64\x73","\x6C\x6F\x67","\x70\x61\x72\x61\x6D\x73","\x67\x65\x74\x43\x6F\x6E\x74\x61\x63\x74","\x62\x6F\x64\x79","\x73\x70\x72\x65\x61\x64","\x66\x69\x6E\x64\x4F\x72\x43\x72\x65\x61\x74\x65","\x67\x65\x74\x43\x6F\x6E\x74\x61\x63\x74\x73","\x70\x68\x6F\x6E\x65","\x6D\x6F\x62\x69\x6C\x65","\x66\x61\x78","\x65\x6D\x61\x69\x6C","\x77\x68\x65\x72\x65","\x25","\x66\x6F\x72\x49\x6E","\x6C\x65\x6E\x67\x74\x68","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x68\x6F\x77\x43\x75\x73\x74\x6F\x6D\x46\x69\x65\x6C\x64","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x75\x70\x64\x61\x74\x65\x43\x75\x73\x74\x6F\x6D\x46\x69\x65\x6C\x64","\x73\x61\x76\x65","\x63\x72\x65\x61\x74\x65\x43\x75\x73\x74\x6F\x6D\x46\x69\x65\x6C\x64","\x4C\x69\x73\x74\x49\x64","\x41\x4C\x54\x45\x52\x20\x54\x41\x42\x4C\x45\x20\x63\x6D\x5F\x63\x6F\x6E\x74\x61\x63\x74\x73\x20\x41\x44\x44\x20\x43\x4F\x4C\x55\x4D\x4E\x20\x25\x73\x20\x56\x41\x52\x43\x48\x41\x52\x28\x32\x35\x35\x29","\x6E\x61\x6D\x65","\x66\x6F\x72\x6D\x61\x74","\x63\x66\x5F","\x63\x72\x65\x61\x74\x65","\x74\x72\x61\x6E\x73\x61\x63\x74\x69\x6F\x6E","\x73\x68\x6F\x77","\x74\x72\x61\x6E\x73\x6C\x61\x74\x65\x64\x4D\x65\x73\x73\x61\x67\x65","\x4D\x45\x53\x53\x41\x47\x45\x5F\x45\x58\x49\x53\x54\x5F\x4C\x49\x53\x54","\x6D\x65\x73\x73\x61\x67\x65","\x54\x68\x65\x20\x6C\x69\x73\x74\x20\x6E\x61\x6D\x65\x20\x61\x6C\x72\x65\x61\x64\x79\x20\x65\x78\x69\x73\x74\x73","\x75\x70\x64\x61\x74\x65","\x73\x68\x6F\x77\x41\x67\x65\x6E\x74\x73","\x66\x75\x6C\x6C\x6E\x61\x6D\x65","\x67\x65\x74\x55\x73\x65\x72\x73","\x61\x64\x64\x41\x67\x65\x6E\x74\x73","\x62\x75\x6C\x6B\x43\x72\x65\x61\x74\x65","\x61\x67\x65\x6E\x74\x73","\x72\x65\x6D\x6F\x76\x65\x41\x67\x65\x6E\x74\x73","\x64\x65\x73\x74\x72\x6F\x79","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x61\x6C\x6C","\x69\x6E\x63\x6C\x75\x64\x65\x73","\x41\x4C\x54\x45\x52\x20\x54\x41\x42\x4C\x45\x20\x63\x6D\x5F\x63\x6F\x6E\x74\x61\x63\x74\x73\x20\x44\x52\x4F\x50\x20\x43\x4F\x4C\x55\x4D\x4E\x20\x25\x73","\x70\x75\x73\x68","\x66\x6F\x72\x45\x61\x63\x68","\x6B\x65\x79\x73","\x64\x65\x73\x63\x72\x69\x62\x65","\x72\x65\x6D\x6F\x76\x65\x43\x75\x73\x74\x6F\x6D\x46\x69\x65\x6C\x64","\x72\x65\x6D\x6F\x76\x65\x41\x6C\x6C\x43\x75\x73\x74\x6F\x6D\x46\x69\x65\x6C\x64\x73","\x69\x64\x73"];_0xce13[0];var _=require(_0xce13[1]);var util=require(_0xce13[2]);var User=require(_0xce13[4])[_0xce13[3]];var List=require(_0xce13[4])[_0xce13[5]];var UserHasList=require(_0xce13[4])[_0xce13[6]];var CustomField=require(_0xce13[4])[_0xce13[7]];var Contact=require(_0xce13[4])[_0xce13[8]];var Util=require(_0xce13[9]);var sequelize=require(_0xce13[4])[_0xce13[10]];exports[_0xce13[11]]= function(_0x710cxa,_0x710cxb,_0x710cxc){switch(_0x710cxa[_0xce13[25]][_0xce13[28]]){case _0xce13[27]:return User[_0xce13[26]](_0x710cxa[_0xce13[25]][_0xce13[16]])[_0xce13[15]](function(_0x710cx11){return _0x710cx11[_0xce13[24]]()})[_0xce13[15]](function(_0x710cxf){var _0x710cx10=_[_0xce13[17]](_0x710cxf,_0xce13[16]);return List[_0xce13[23]](_0xce13[22])[_0xce13[21]](_[_0xce13[20]](Util[_0xce13[19]](_0x710cxa[_0xce13[18]],{$or:[{defaultEntry:true},{id:_0x710cx10}]}),{distinct:true}))})[_0xce13[15]](function(_0x710cxe){_0x710cxb[_0xce13[14]](200)[_0xce13[13]](_0x710cxe)})[_0xce13[12]](function(_0x710cxd){return handleError(_0x710cxb,_0x710cxd)});default:return List[_0xce13[23]](_0xce13[22])[_0xce13[21]](_[_0xce13[20]](Util[_0xce13[19]](_0x710cxa[_0xce13[18]]),{distinct:true}))[_0xce13[15]](function(_0x710cxe){_0x710cxb[_0xce13[14]](200)[_0xce13[13]](_0x710cxe)})[_0xce13[12]](function(_0x710cxd){return handleError(_0x710cxb,_0x710cxd)})}};exports[_0xce13[29]]= function(_0x710cxa,_0x710cxb){return CustomField[_0xce13[21]]({where:{ListId:_0x710cxa[_0xce13[31]][_0xce13[16]]}})[_0xce13[15]](function(_0x710cx12){return _0x710cxb[_0xce13[14]](200)[_0xce13[13]](_0x710cx12)})[_0xce13[12]](function(_0x710cxd){console[_0xce13[30]](_0x710cxd);return handleError(_0x710cxb,_0x710cxd)})};exports[_0xce13[32]]= function(_0x710cxa,_0x710cxb){var _0x710cx13=_[_0xce13[20]](_0x710cxa[_0xce13[33]],{ListId:_0x710cxa[_0xce13[31]][_0xce13[16]]});return Contact[_0xce13[35]]({where:_0x710cx13,default:_0x710cxa[_0xce13[33]]})[_0xce13[34]](function(_0x710cx14){return _0x710cxb[_0xce13[14]](200)[_0xce13[13]](_0x710cx14)})[_0xce13[12]](function(_0x710cxd){return handleError(_0x710cxb,_0x710cxd)})};exports[_0xce13[36]]= function(_0x710cxa,_0x710cxb){var _0x710cx15={where:{ListId:_0x710cxa[_0xce13[31]][_0xce13[16]]},attributes:[_0xce13[37],_0xce13[38],_0xce13[39],_0xce13[40]]};_[_0xce13[43]](_0x710cxa[_0xce13[18]],function(_0x710cx16,_0x710cx17){_0x710cx15[_0xce13[41]][_0x710cx17]= {$like:_0xce13[42]+ _0x710cx16+ _0xce13[42]}});return Contact[_0xce13[45]](_0x710cx15)[_0xce13[15]](function(_0x710cx18){return _0x710cxb[_0xce13[14]](200)[_0xce13[13]]({rows:_0x710cx18,length:_0x710cx18[_0xce13[44]]})})[_0xce13[12]](function(_0x710cxd){return handleError(_0x710cxb,_0x710cxd)})};exports[_0xce13[46]]= function(_0x710cxa,_0x710cxb){return CustomField[_0xce13[26]](_0x710cxa[_0xce13[31]][_0xce13[16]])[_0xce13[15]](function(_0x710cx19){if(!_0x710cx19){return _0x710cxb[_0xce13[47]](404)};return _0x710cxb[_0xce13[14]](200)[_0xce13[13]](_0x710cx19)})[_0xce13[12]](function(_0x710cxd){return handleError(_0x710cxb,_0x710cxd)})};exports[_0xce13[48]]= function(_0x710cxa,_0x710cxb){return CustomField[_0xce13[26]](_0x710cxa[_0xce13[31]][_0xce13[16]])[_0xce13[15]](function(_0x710cx19){if(!_0x710cx19){return _0x710cxb[_0xce13[47]](404)};var _0x710cx1a=_[_0xce13[20]](_0x710cx19,_0x710cxa[_0xce13[33]]);return _0x710cx1a[_0xce13[49]]()})[_0xce13[15]](function(_0x710cx19){return _0x710cxb[_0xce13[14]](200)[_0xce13[13]](_0x710cx19)})[_0xce13[12]](function(_0x710cxd){return handleError(_0x710cxb,_0x710cxd)})};exports[_0xce13[50]]= function(_0x710cxa,_0x710cxb){var _0x710cx1b;_0x710cxa[_0xce13[33]][_0xce13[51]]= _0x710cxa[_0xce13[31]][_0xce13[16]];return sequelize[_0xce13[57]](function(_0x710cx1c){return CustomField[_0xce13[56]](_0x710cxa[_0xce13[33]])[_0xce13[15]](function(_0x710cx19){_0x710cx1b= _0x710cx19;_0x710cx19[_0xce13[53]]= _0xce13[55]+ _0x710cx19[_0xce13[16]];return _0x710cx19[_0xce13[49]]()})[_0xce13[15]](function(){return sequelize[_0xce13[18]](util[_0xce13[54]](_0xce13[52],_0x710cx1b[_0xce13[53]]))})[_0xce13[15]](function(){return _0x710cxb[_0xce13[47]](201)})})[_0xce13[12]](function(_0x710cxd){return handleError(_0x710cxb,_0x710cxd)})};exports[_0xce13[58]]= function(_0x710cxa,_0x710cxb){return List[_0xce13[26]](_0x710cxa[_0xce13[31]][_0xce13[16]])[_0xce13[15]](function(_0x710cx1d){if(!_0x710cx1d){return _0x710cxb[_0xce13[47]](404)};return _0x710cxb[_0xce13[13]](_0x710cx1d)})[_0xce13[12]](function(_0x710cxd){return handleError(_0x710cxb,_0x710cxd)})};exports[_0xce13[56]]= function(_0x710cxa,_0x710cxb){return sequelize[_0xce13[57]](function(_0x710cx1c){return List[_0xce13[56]](_0x710cxa[_0xce13[33]])[_0xce13[15]](function(_0x710cx1d){return _0x710cxb[_0xce13[14]](201)[_0xce13[13]](_0x710cx1d)})})[_0xce13[12]](sequelize.UniqueConstraintError,function(_0x710cxd){_0x710cxd[_0xce13[59]]= _0xce13[60];_0x710cxd[_0xce13[61]]= _0xce13[62];return _0x710cxb[_0xce13[14]](500)[_0xce13[13]](_0x710cxd)})[_0xce13[12]](function(_0x710cxd){return handleError(_0x710cxb,_0x710cxd)})};exports[_0xce13[63]]= function(_0x710cxa,_0x710cxb){return List[_0xce13[26]](_0x710cxa[_0xce13[31]][_0xce13[16]])[_0xce13[15]](function(_0x710cx1d){if(!_0x710cx1d){return _0x710cxb[_0xce13[47]](404)};if(_0x710cxa[_0xce13[33]][_0xce13[16]]){delete _0x710cxa[_0xce13[33]][_0xce13[16]]};var _0x710cx1a=_[_0xce13[20]](_0x710cx1d,_0x710cxa[_0xce13[33]]);return _0x710cx1a[_0xce13[49]]()})[_0xce13[15]](function(_0x710cx1d){return _0x710cxb[_0xce13[14]](200)[_0xce13[13]](_0x710cx1d)})[_0xce13[12]](sequelize.UniqueConstraintError,function(_0x710cxd){_0x710cxd[_0xce13[59]]= _0xce13[60];_0x710cxd[_0xce13[61]]= _0xce13[62];return _0x710cxb[_0xce13[14]](500)[_0xce13[13]](_0x710cxd)})[_0xce13[12]](function(_0x710cxd){return handleError(_0x710cxb,_0x710cxd)})};exports[_0xce13[64]]= function(_0x710cxa,_0x710cxb){return List[_0xce13[26]](_0x710cxa[_0xce13[31]][_0xce13[16]])[_0xce13[15]](function(_0x710cx1d){if(!_0x710cx1d){return _0x710cxb[_0xce13[47]](404)};return _0x710cx1d[_0xce13[66]]({where:{role:_0xce13[27]},attributes:[_0xce13[16],_0xce13[53],_0xce13[65],_0xce13[40]]})})[_0xce13[15]](function(_0x710cx1e){return _0x710cxb[_0xce13[14]](200)[_0xce13[13]]({rows:_0x710cx1e,count:_0x710cx1e[_0xce13[44]]})})[_0xce13[12]](function(_0x710cxd){return handleError(_0x710cxb,_0x710cxd)})};exports[_0xce13[67]]= function(_0x710cxa,_0x710cxb,_0x710cxc){return User[_0xce13[45]]({where:{id:_0x710cxa[_0xce13[33]][_0xce13[69]]}})[_0xce13[15]](function(_0x710cx1f){var _0x710cx20=_[_0xce13[17]](_0x710cx1f,function(_0x710cx21){return {list:_0x710cxa[_0xce13[31]][_0xce13[16]],membername:_0x710cx21[_0xce13[53]],UserId:_0x710cx21[_0xce13[16]]}});return UserHasList[_0xce13[68]](_0x710cx20,{individualHooks:true})})[_0xce13[15]](function(){return _0x710cxb[_0xce13[47]](200)})[_0xce13[12]](function(_0x710cxd){console[_0xce13[30]](_0x710cxd);return _0x710cxc(_0x710cxd)})};exports[_0xce13[70]]= function(_0x710cxa,_0x710cxb,_0x710cxc){return UserHasList[_0xce13[71]]({where:{UserId:_0x710cxa[_0xce13[18]][_0xce13[69]],list:_0x710cxa[_0xce13[31]][_0xce13[16]]},individualHooks:true})[_0xce13[15]](function(){return _0x710cxb[_0xce13[47]](202)})[_0xce13[12]](function(_0x710cxd){return _0x710cxc(_0x710cxd)})};exports[_0xce13[71]]= function(_0x710cxa,_0x710cxb){return destroyList(_0x710cxa[_0xce13[31]][_0xce13[16]],_0x710cxb)};exports[_0xce13[72]]= function(_0x710cxa,_0x710cxb){return destroyList(_0x710cxa[_0xce13[18]][_0xce13[16]],_0x710cxb)};function destroyList(_0x710cx23,_0x710cxb){return delCf(_0x710cx23,_0x710cxb)[_0xce13[73]]()[_0xce13[15]](function(){return List[_0xce13[71]]({where:{id:_0x710cx23},individualHooks:true})})[_0xce13[15]](function(){return _0x710cxb[_0xce13[47]](204)})[_0xce13[12]](function(_0x710cxd){console[_0xce13[30]](_0x710cxd);return handleError(_0x710cxb,_0x710cxd)})}function delCf(_0x710cx23,_0x710cxb){var _0x710cx25;return CustomField[_0xce13[45]]({where:{ListId:_0x710cx23}})[_0xce13[15]](function(_0x710cx2a){if(!_0x710cx2a){return _0x710cxb[_0xce13[47]](404)};_0x710cx25= _0x710cx2a;return CustomField[_0xce13[71]]({where:{id:_0x710cx23}})})[_0xce13[15]](function(){return Contact[_0xce13[79]]()})[_0xce13[15]](function(_0x710cx29){return _[_0xce13[78]](_0x710cx29)})[_0xce13[15]](function(_0x710cx26){var _0x710cx27=[];_[_0xce13[77]](_0x710cx25,function(_0x710cx28){if(_[_0xce13[74]](_0x710cx26,_0x710cx28[_0xce13[53]])){_0x710cx27[_0xce13[76]](sequelize[_0xce13[18]](util[_0xce13[54]](_0xce13[75],_0x710cx28[_0xce13[53]])))}});return _0x710cx27})}exports[_0xce13[80]]= function(_0x710cxa,_0x710cxb){var _0x710cx2b;return CustomField[_0xce13[26]](_0x710cxa[_0xce13[31]][_0xce13[16]])[_0xce13[15]](function(_0x710cx2c){if(!_0x710cx2c){return _0x710cxb[_0xce13[47]](404)};_0x710cx2b= _0x710cx2c;return CustomField[_0xce13[71]]({where:{id:_0x710cxa[_0xce13[31]][_0xce13[16]]}})})[_0xce13[15]](function(){return Contact[_0xce13[79]]()})[_0xce13[15]](function(_0x710cx29){return _[_0xce13[78]](_0x710cx29)})[_0xce13[15]](function(_0x710cx26){if(_[_0xce13[74]](_0x710cx26,_0x710cx2b[_0xce13[53]])){return sequelize[_0xce13[18]](util[_0xce13[54]](_0xce13[75],_0x710cx2b[_0xce13[53]]))}})[_0xce13[15]](function(){return _0x710cxb[_0xce13[47]](204)})[_0xce13[12]](function(_0x710cxd){return handleError(_0x710cxb,_0x710cxd)})};exports[_0xce13[81]]= function(_0x710cxa,_0x710cxb){var _0x710cx25;return CustomField[_0xce13[45]]({where:{id:_0x710cxa[_0xce13[18]][_0xce13[82]]}})[_0xce13[15]](function(_0x710cx2a){if(!_0x710cx2a){return _0x710cxb[_0xce13[47]](404)};_0x710cx25= _0x710cx2a;return CustomField[_0xce13[71]]({where:{id:_0x710cxa[_0xce13[18]][_0xce13[82]]}})})[_0xce13[15]](function(){return Contact[_0xce13[79]]()})[_0xce13[15]](function(_0x710cx29){return _[_0xce13[78]](_0x710cx29)})[_0xce13[15]](function(_0x710cx26){var _0x710cx27=[];_0x710cx25[_0xce13[77]](function(_0x710cx28){if(_[_0xce13[74]](_0x710cx26,_0x710cx28[_0xce13[53]])){_0x710cx27[_0xce13[76]](sequelize[_0xce13[18]](util[_0xce13[54]](_0xce13[75],_0x710cx28[_0xce13[53]])))}});return _0x710cx27})[_0xce13[73]]()[_0xce13[15]](function(){return _0x710cxb[_0xce13[47]](204)})[_0xce13[12]](function(_0x710cxd){return handleError(_0x710cxb,_0x710cxd)})};function handleError(_0x710cxb,_0x710cxd){return _0x710cxb[_0xce13[14]](500)[_0xce13[13]](_0x710cxd)} \ No newline at end of file diff --git a/server/api/list/list.events.js b/server/api/list/list.events.js index 0cb87f0..825523a 100644 --- a/server/api/list/list.events.js +++ b/server/api/list/list.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const List = require('../../models').List; - -var ListEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -ListEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - List.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - ListEvents.emit(event + ':' + doc._id, doc); - ListEvents.emit(event, doc); - done(null); - } -} - -module.exports = ListEvents; +var _0x2f3b=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x4C\x69\x73\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x2f3b[0];const EventEmitter=require(_0x2f3b[1]);const List=require(_0x2f3b[3])[_0x2f3b[2]];var ListEvents= new EventEmitter();ListEvents[_0x2f3b[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x2f3b[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x2f3b[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x2f3b[6]};for(var e in events){var event=events[e];List[_0x2f3b[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x447dx8,_0x447dx9,_0x447dxa){ListEvents[_0x2f3b[10]](event+ _0x2f3b[8]+ _0x447dx8[_0x2f3b[9]],_0x447dx8);ListEvents[_0x2f3b[10]](event,_0x447dx8);_0x447dxa(null)}}module[_0x2f3b[11]]= ListEvents \ No newline at end of file diff --git a/server/api/list/list.socket.js b/server/api/list/list.socket.js index c79e17b..54a101c 100644 --- a/server/api/list/list.socket.js +++ b/server/api/list/list.socket.js @@ -1,28 +1 @@ -'use strict'; - -const ListEvents = require('./list.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('list:' + event, socket); - - ListEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - ListEvents.removeListener(event, listener); - }; -} +var _0x3909=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x6C\x69\x73\x74\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x6C\x69\x73\x74\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x3909[0];const ListEvents=require(_0x3909[1]);var events=[_0x3909[2],_0x3909[3]];exports[_0x3909[4]]= function(_0xa6e3x3){for(var _0xa6e3x4=0,_0xa6e3x5=events[_0x3909[5]];_0xa6e3x4< _0xa6e3x5;_0xa6e3x4++){var _0xa6e3x6=events[_0xa6e3x4];var _0xa6e3x7=createListener(_0x3909[6]+ _0xa6e3x6,_0xa6e3x3);ListEvents[_0x3909[7]](_0xa6e3x6,_0xa6e3x7);_0xa6e3x3[_0x3909[7]](_0x3909[8],removeListener(_0xa6e3x6,_0xa6e3x7))}};function createListener(_0xa6e3x6,_0xa6e3x3){return function(_0xa6e3x9){_0xa6e3x3[_0x3909[9]](_0xa6e3x6,_0xa6e3x9)}}function removeListener(_0xa6e3x6,_0xa6e3x7){return function(){ListEvents[_0x3909[10]](_0xa6e3x6,_0xa6e3x7)}} \ No newline at end of file diff --git a/server/api/mail_account/index.js b/server/api/mail_account/index.js index c41e67f..88db936 100644 --- a/server/api/mail_account/index.js +++ b/server/api/mail_account/index.js @@ -1,31 +1 @@ -'use strict'; - -var express = require('express'); - -var controller = require('./mail_account.controller'); -var auth = require('../../auth/auth.service'); -var license = require('../../config/license/license.service'); - -var router = express.Router(); - -router.get('/', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin', 'agent']), controller.index); -router.get('/:id', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin', 'agent']), controller.show); -router.get('/account/:address', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin', 'agent']), controller.showFromAddress); -router.get('/:id/applications', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin']), controller.showApplications); -router.get('/:id/applications/:appId', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin']), controller.showApplication); -router.get('/:id/rooms', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin', 'agent']), controller.getMailRooms); -router.get('/:id/dispositions', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin', 'agent']), controller.getDispositions); -router.post('/', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin']), controller.create); -router.post('/:id/applications', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin']), controller.createApplication); -router.post('/:id/dispositions', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin']), controller.createDisposition); -router.put('/:id', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin']), controller.update); -router.put('/:id/applications', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin']), controller.updateApplications); -router.put('/:id/applications/:appId', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin']), controller.updateApplication); -router.put('/:id/dispositions/:dispId', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin']), controller.updateDisposition); -router.delete('/', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin']), controller.bulkDestroy); -router.delete('/:id', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin']), controller.destroy); -router.delete('/:id/applications', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin']), controller.bulkDestroyApplications); -router.delete('/:id/applications/:appId', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin']), controller.destroyApplication); -router.delete('/:id/dispositions/:dispId', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin']), controller.destroyDisposition); - -module.exports = router; +var _0x55ef=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x6D\x61\x69\x6C\x5F\x61\x63\x63\x6F\x75\x6E\x74\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x68\x61\x73\x4D\x61\x69\x6C","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x2F\x61\x63\x63\x6F\x75\x6E\x74\x2F\x3A\x61\x64\x64\x72\x65\x73\x73","\x73\x68\x6F\x77\x46\x72\x6F\x6D\x41\x64\x64\x72\x65\x73\x73","\x2F\x3A\x69\x64\x2F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x73\x68\x6F\x77\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x2F\x3A\x69\x64\x2F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73\x2F\x3A\x61\x70\x70\x49\x64","\x73\x68\x6F\x77\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x2F\x3A\x69\x64\x2F\x72\x6F\x6F\x6D\x73","\x67\x65\x74\x4D\x61\x69\x6C\x52\x6F\x6F\x6D\x73","\x2F\x3A\x69\x64\x2F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x73","\x67\x65\x74\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x73","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x63\x72\x65\x61\x74\x65\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x63\x72\x65\x61\x74\x65\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x75\x70\x64\x61\x74\x65\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x75\x70\x64\x61\x74\x65\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x2F\x3A\x69\x64\x2F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x73\x2F\x3A\x64\x69\x73\x70\x49\x64","\x75\x70\x64\x61\x74\x65\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x64\x65\x73\x74\x72\x6F\x79\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x64\x65\x73\x74\x72\x6F\x79\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x65\x78\x70\x6F\x72\x74\x73"];_0x55ef[0];var express=require(_0x55ef[1]);var controller=require(_0x55ef[2]);var auth=require(_0x55ef[3]);var license=require(_0x55ef[4]);var router=express.Router();router[_0x55ef[13]](_0x55ef[5],license[_0x55ef[6]](),license[_0x55ef[7]](),auth[_0x55ef[8]](),auth[_0x55ef[11]]([9],[_0x55ef[9],_0x55ef[10]]),controller[_0x55ef[12]]);router[_0x55ef[13]](_0x55ef[14],license[_0x55ef[6]](),license[_0x55ef[7]](),auth[_0x55ef[8]](),auth[_0x55ef[11]]([9],[_0x55ef[9],_0x55ef[10]]),controller[_0x55ef[15]]);router[_0x55ef[13]](_0x55ef[16],license[_0x55ef[6]](),license[_0x55ef[7]](),auth[_0x55ef[8]](),auth[_0x55ef[11]]([9],[_0x55ef[9],_0x55ef[10]]),controller[_0x55ef[17]]);router[_0x55ef[13]](_0x55ef[18],license[_0x55ef[6]](),license[_0x55ef[7]](),auth[_0x55ef[8]](),auth[_0x55ef[11]]([9],[_0x55ef[9]]),controller[_0x55ef[19]]);router[_0x55ef[13]](_0x55ef[20],license[_0x55ef[6]](),license[_0x55ef[7]](),auth[_0x55ef[8]](),auth[_0x55ef[11]]([9],[_0x55ef[9]]),controller[_0x55ef[21]]);router[_0x55ef[13]](_0x55ef[22],license[_0x55ef[6]](),license[_0x55ef[7]](),auth[_0x55ef[8]](),auth[_0x55ef[11]]([9],[_0x55ef[9],_0x55ef[10]]),controller[_0x55ef[23]]);router[_0x55ef[13]](_0x55ef[24],license[_0x55ef[6]](),license[_0x55ef[7]](),auth[_0x55ef[8]](),auth[_0x55ef[11]]([9],[_0x55ef[9],_0x55ef[10]]),controller[_0x55ef[25]]);router[_0x55ef[27]](_0x55ef[5],license[_0x55ef[6]](),license[_0x55ef[7]](),auth[_0x55ef[8]](),auth[_0x55ef[11]]([9],[_0x55ef[9]]),controller[_0x55ef[26]]);router[_0x55ef[27]](_0x55ef[18],license[_0x55ef[6]](),license[_0x55ef[7]](),auth[_0x55ef[8]](),auth[_0x55ef[11]]([9],[_0x55ef[9]]),controller[_0x55ef[28]]);router[_0x55ef[27]](_0x55ef[24],license[_0x55ef[6]](),license[_0x55ef[7]](),auth[_0x55ef[8]](),auth[_0x55ef[11]]([9],[_0x55ef[9]]),controller[_0x55ef[29]]);router[_0x55ef[31]](_0x55ef[14],license[_0x55ef[6]](),license[_0x55ef[7]](),auth[_0x55ef[8]](),auth[_0x55ef[11]]([9],[_0x55ef[9]]),controller[_0x55ef[30]]);router[_0x55ef[31]](_0x55ef[18],license[_0x55ef[6]](),license[_0x55ef[7]](),auth[_0x55ef[8]](),auth[_0x55ef[11]]([9],[_0x55ef[9]]),controller[_0x55ef[32]]);router[_0x55ef[31]](_0x55ef[20],license[_0x55ef[6]](),license[_0x55ef[7]](),auth[_0x55ef[8]](),auth[_0x55ef[11]]([9],[_0x55ef[9]]),controller[_0x55ef[33]]);router[_0x55ef[31]](_0x55ef[34],license[_0x55ef[6]](),license[_0x55ef[7]](),auth[_0x55ef[8]](),auth[_0x55ef[11]]([9],[_0x55ef[9]]),controller[_0x55ef[35]]);router[_0x55ef[37]](_0x55ef[5],license[_0x55ef[6]](),license[_0x55ef[7]](),auth[_0x55ef[8]](),auth[_0x55ef[11]]([9],[_0x55ef[9]]),controller[_0x55ef[36]]);router[_0x55ef[37]](_0x55ef[14],license[_0x55ef[6]](),license[_0x55ef[7]](),auth[_0x55ef[8]](),auth[_0x55ef[11]]([9],[_0x55ef[9]]),controller[_0x55ef[38]]);router[_0x55ef[37]](_0x55ef[18],license[_0x55ef[6]](),license[_0x55ef[7]](),auth[_0x55ef[8]](),auth[_0x55ef[11]]([9],[_0x55ef[9]]),controller[_0x55ef[39]]);router[_0x55ef[37]](_0x55ef[20],license[_0x55ef[6]](),license[_0x55ef[7]](),auth[_0x55ef[8]](),auth[_0x55ef[11]]([9],[_0x55ef[9]]),controller[_0x55ef[40]]);router[_0x55ef[37]](_0x55ef[34],license[_0x55ef[6]](),license[_0x55ef[7]](),auth[_0x55ef[8]](),auth[_0x55ef[11]]([9],[_0x55ef[9]]),controller[_0x55ef[41]]);module[_0x55ef[42]]= router \ No newline at end of file diff --git a/server/api/mail_account/mail_account.controller.js b/server/api/mail_account/mail_account.controller.js index 31adb32..239824d 100644 --- a/server/api/mail_account/mail_account.controller.js +++ b/server/api/mail_account/mail_account.controller.js @@ -1,527 +1 @@ -'use strict'; - -var _ = require('lodash'); -var util = require('util'); -var async = require('async'); - -var Util = require('../../config/util'); - -var sequelize = require('../../models').sequelize; -var User = require('../../models').User; -var MailAttachment = require('../../models').MailAttachment; -var MailQueue = require('../../models').MailQueue; -var MailRoom = require('../../models').MailRoom; -var MailAccount = require('../../models').MailAccount; -var MailServerIn = require('../../models').MailServerIn; -var MailServerOut = require('../../models').MailServerOut; -var MailApplication = require('../../models').MailApplication; -var MailDisposition = require('../../models').MailDisposition; -var Interval = require('../../models').Interval; - -// Get list of mailAccounts -exports.index = function(req, res) { - return MailAccount - .scope('default') - .findAndCountAll(Util.getQuery(req.query)) - .then(function(result) { - res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.getMailRooms = function(req, res, next) { - var _query = { - include: [], - where: { - MailAccountId: req.params.id, - $and: [] - }, - attributes: ['id', 'subject', 'from', 'attachment', 'disposition', 'tags', 'waiting', 'lastEvent', 'updatedAt'] - }; - - // TO MOVE SOON INTO AN EXTENAL UTIL FILE - if (req.query) { - if (req.query.tags) { - if (_.isArray(req.query.tags)) { - for (var i = 0; i < req.query.tags.length; i++) { - _query.where.$and.push({ - tags: { - $like: '%' + req.query.tags[i] + ';%' - } - }); - } - } else { - _query.where.$and.push({ - tags: { - $like: '%' + req.query.tags + ';%' - } - }); - } - delete req.query.tags; - } - _.merge(_query.where, req.query); - } - - switch (req.user.role) { - case 'agent': - _query.include.push({ - model: User, - attributes: ['id'] - }); - - var _agents; - var _agentQueues; - var _accountQueues; - - return User - .findById(req.user.id) - .then(function(user) { - if (user) { - return user - .getMailQueues(); - } else { - return []; - } - }) - .then(function(queues) { - _agentQueues = _.map(queues, 'id'); - - return MailAccount - .findById(req.params.id); - }) - .then(function(account) { - return account - .getMailApplications({ - where: { - $or: [{ - app: 'queue' - }, { - app: 'agent' - }] - } - }); - }) - .then(function(apps) { - _agents = _.map(_.find(apps, { - 'app': 'agent' - }), 'UserId'); - - _accountQueues = _.map(_.find(apps, { - 'app': 'queue' - }), 'MailQueueId'); - - if (_.intersection(_agentQueues, _accountQueues).length || _.intersection(_agents, [req.user.id]).length) { - return MailRoom - .findAll(_query) - .then(function(mailRooms) { - return res.status(200).send(mailRooms); - }) - .catch(function(err) { - console.error(err); - return handleError(res, err); - }); - } else { - - return res.status(200).send([]); - } - }) - .catch(function(err) { - console.error(err); - }); - - default: - - return MailRoom - .findAll(_query) - .then(function(mailRooms) { - return res.status(200).send(mailRooms); - }) - .catch(function(err) { - console.error(err); - return handleError(res, err); - }); - } -}; - -exports.getDispositions = function(req, res, next) { - return MailAccount - .findById(req.params.id) - .then(function(mailAccount) { - if (!mailAccount) { - return res.sendStatus(404); - } - - return mailAccount - .getMailDispositions(); - }) - .then(function(mailDispositions) { - return res.status(200).send({ - rows: mailDispositions, - count: mailDispositions.length - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get a single mailAccount -exports.show = function(req, res, next) { - return MailAccount - .scope('default') - .findById(req.params.id) - .then(function(mailAccount) { - if (!mailAccount) { - return res.sendStatus(404); - } - return res.send(mailAccount); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.showFromAddress = function(req, res, next) { - return MailAccount - .findOne({ - where: { - address: req.params.address - } - }) - .then(function(mailAccount) { - if (!mailAccount) { - return res.sendStatus(404); - } - return res.send(mailAccount); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get a single mailAccount -exports.showApplications = function(req, res, next) { - return MailAccount - .scope('default') - .findById(req.params.id) - .then(function(mailAccount) { - if (!mailAccount) { - return res.sendStatus(404); - } - return mailAccount - .getMailApplications(_.merge(Util.getQuery(req.query), { - include: [{ - model: MailQueue, - attributes: ['id', 'name'] - }, { - model: User, - attributes: ['id', 'name', 'online'] - }, { - model: Interval, - attributes: ['id', 'name'] - }] - })); - }) - .then(function(mailApplications) { - return res.send({ - count: mailApplications.length, - rows: mailApplications - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Creates a new mailAccount in the DB. -exports.create = function(req, res, next) { - return sequelize.transaction(function(t) { - return MailAccount - .create(req.body, { - include: [{ - model: MailServerIn - }, { - model: MailServerOut - }], - transaction: t - }); - }).then(function(mailAccount) { - return res.status(201).send(mailAccount); - }) - .catch(sequelize.UniqueConstraintError, function(err) { - return Util.errorManager.handleUniqueConstraintError(res, err); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Creates a new mailApplication in the DB. -exports.createApplication = function(req, res, next) { - - return MailApplication - .max('priority', { - where: { - MailAccountId: req.params.id - } - }).then(function(max) { - // SET PRIORITY - req.body.priority = max ? ++max : 1; - req.body.MailAccountId = req.params.id; - - return MailApplication - .create(req.body); - }) - .then(function(mailApplication) { - return res.status(201).send(mailApplication); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Creates a new mailAccount in the DB. -exports.createDisposition = function(req, res, next) { - req.body.MailAccountId = req.params.id; - - return MailDisposition - .create(req.body) - .then(function(mailDiposition) { - return res.status(201).send(mailDiposition); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - - -// Updates an existing mailAccount in the DB. -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - - return MailAccount - .findById(req.params.id) - .then(function(mailAccount) { - if (!mailAccount) { - return res.sendStatus(404); - } - var updated = _.merge(mailAccount, req.body); - return updated - .save(); - }) - .then(function(mailAccount) { - return res.status(200).send(mailAccount); - }) - .catch(sequelize.UniqueConstraintError, function(err) { - return Util.errorManager.handleUniqueConstraintError(res, err); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Updates an existing mailAccount in the DB. -exports.updateDisposition = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - - return MailDisposition - .findById(req.params.dispId) - .then(function(mailDisposition) { - if (!mailDisposition) { - return res.sendStatus(404); - } - var updated = _.merge(mailDisposition, req.body); - return updated - .save(); - }) - .then(function(mailAccount) { - return res.status(200).send(mailAccount); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Updates an existing mailAccount in the DB. -exports.updateApplications = function(req, res) { - - var priority = 0; - var apps = req.body; - - apps.forEach(function(app) { - delete app.id; - delete app.createdAt; - delete app.updatedAt; - - app.priority = ++priority; - }); - - return sequelize.transaction(function(t) { - return MailApplication - .destroy({ - where: { - MailAccountId: req.params.id - }, - individualHooks: true, - transaction: t - }).then(function(mailApplication) { - return MailApplication - .bulkCreate(apps, { - individualHooks: true, - transaction: t - }); - }); - }).then(function(mailAccounts) { - return res.status(200).send({ - count: mailAccounts.length, - rows: mailAccounts - }); - }).catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes a mailAccount from the DB. -exports.destroy = function(req, res, next) { - return MailAccount - .findById(req.params.id) - .then(function(mailAccount) { - if (!mailAccount) { - return res.sendStatus(404); - } - - return mailAccount - .destroy(); - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes a mailAccount from the DB. -exports.destroyApplication = function(req, res, next) { - return MailApplication - .findById(req.params.appId) - .then(function(mailApplication) { - if (!mailApplication) { - return res.sendStatus(404); - } - - return mailApplication - .destroy(); - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes a mailAccount from the DB. -exports.destroyDisposition = function(req, res, next) { - return MailDisposition - .findById(req.params.dispId) - .then(function(mailDiposition) { - if (!mailDiposition) { - return res.sendStatus(404); - } - - return mailDiposition - .destroy(); - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes a agent from the DB. -exports.bulkDestroy = function(req, res) { - return MailAccount - .destroy({ - where: { - id: req.query.ids - }, - individualHooks: true - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes a agent from the DB. -exports.bulkDestroyApplications = function(req, res) { - return MailApplication - .destroy({ - where: { - id: req.query.ids - }, - individualHooks: true - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.showApplication = function(req, res) { - return MailApplication - .findById(req.params.appId, { - include: [{ - all: true - }] - }) - .then(function(mailApplication) { - if (!mailApplication) { - return res.sendStatus(404); - } - return res.send(mailApplication); - }) - .catch(function(err) { - return handleError(res, err); - }); -} - -exports.updateApplication = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - return MailApplication - .findById(req.params.appId) - .then(function(mailApplication) { - if (!mailApplication) { - return res.sendStatus(404); - } - var updated = _.merge(mailApplication, req.body); - return updated - .save(); - }) - .then(function(mailApplication) { - return res.status(200).send(mailApplication); - }) - .catch(function(err) { - return handleError(res, err); - }); -} - -function handleError(res, err) { - console.log(err); - return res.status(500).send(err); -} +var _0x1f18=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x75\x74\x69\x6C","\x61\x73\x79\x6E\x63","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x55\x73\x65\x72","\x4D\x61\x69\x6C\x41\x74\x74\x61\x63\x68\x6D\x65\x6E\x74","\x4D\x61\x69\x6C\x51\x75\x65\x75\x65","\x4D\x61\x69\x6C\x52\x6F\x6F\x6D","\x4D\x61\x69\x6C\x41\x63\x63\x6F\x75\x6E\x74","\x4D\x61\x69\x6C\x53\x65\x72\x76\x65\x72\x49\x6E","\x4D\x61\x69\x6C\x53\x65\x72\x76\x65\x72\x4F\x75\x74","\x4D\x61\x69\x6C\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x4D\x61\x69\x6C\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x49\x6E\x74\x65\x72\x76\x61\x6C","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x64\x65\x66\x61\x75\x6C\x74","\x73\x63\x6F\x70\x65","\x67\x65\x74\x4D\x61\x69\x6C\x52\x6F\x6F\x6D\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x73\x75\x62\x6A\x65\x63\x74","\x66\x72\x6F\x6D","\x61\x74\x74\x61\x63\x68\x6D\x65\x6E\x74","\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x74\x61\x67\x73","\x77\x61\x69\x74\x69\x6E\x67","\x6C\x61\x73\x74\x45\x76\x65\x6E\x74","\x75\x70\x64\x61\x74\x65\x64\x41\x74","\x69\x73\x41\x72\x72\x61\x79","\x6C\x65\x6E\x67\x74\x68","\x25","\x3B\x25","\x70\x75\x73\x68","\x24\x61\x6E\x64","\x77\x68\x65\x72\x65","\x6D\x65\x72\x67\x65","\x69\x6E\x63\x6C\x75\x64\x65","\x65\x72\x72\x6F\x72","\x61\x67\x65\x6E\x74","\x66\x69\x6E\x64","\x55\x73\x65\x72\x49\x64","\x6D\x61\x70","\x71\x75\x65\x75\x65","\x4D\x61\x69\x6C\x51\x75\x65\x75\x65\x49\x64","\x69\x6E\x74\x65\x72\x73\x65\x63\x74\x69\x6F\x6E","\x75\x73\x65\x72","\x66\x69\x6E\x64\x41\x6C\x6C","\x67\x65\x74\x4D\x61\x69\x6C\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x67\x65\x74\x4D\x61\x69\x6C\x51\x75\x65\x75\x65\x73","\x72\x6F\x6C\x65","\x67\x65\x74\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x73","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x67\x65\x74\x4D\x61\x69\x6C\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x73","\x73\x68\x6F\x77","\x73\x68\x6F\x77\x46\x72\x6F\x6D\x41\x64\x64\x72\x65\x73\x73","\x61\x64\x64\x72\x65\x73\x73","\x66\x69\x6E\x64\x4F\x6E\x65","\x73\x68\x6F\x77\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x6E\x61\x6D\x65","\x6F\x6E\x6C\x69\x6E\x65","\x63\x72\x65\x61\x74\x65","\x68\x61\x6E\x64\x6C\x65\x55\x6E\x69\x71\x75\x65\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74\x45\x72\x72\x6F\x72","\x65\x72\x72\x6F\x72\x4D\x61\x6E\x61\x67\x65\x72","\x62\x6F\x64\x79","\x74\x72\x61\x6E\x73\x61\x63\x74\x69\x6F\x6E","\x63\x72\x65\x61\x74\x65\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x70\x72\x69\x6F\x72\x69\x74\x79","\x4D\x61\x69\x6C\x41\x63\x63\x6F\x75\x6E\x74\x49\x64","\x6D\x61\x78","\x63\x72\x65\x61\x74\x65\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x75\x70\x64\x61\x74\x65","\x73\x61\x76\x65","\x75\x70\x64\x61\x74\x65\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x64\x69\x73\x70\x49\x64","\x75\x70\x64\x61\x74\x65\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x63\x72\x65\x61\x74\x65\x64\x41\x74","\x66\x6F\x72\x45\x61\x63\x68","\x62\x75\x6C\x6B\x43\x72\x65\x61\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x73\x74\x72\x6F\x79\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x61\x70\x70\x49\x64","\x64\x65\x73\x74\x72\x6F\x79\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x73\x68\x6F\x77\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x75\x70\x64\x61\x74\x65\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x6C\x6F\x67"];_0x1f18[0];var _=require(_0x1f18[1]);var util=require(_0x1f18[2]);var async=require(_0x1f18[3]);var Util=require(_0x1f18[4]);var sequelize=require(_0x1f18[6])[_0x1f18[5]];var User=require(_0x1f18[6])[_0x1f18[7]];var MailAttachment=require(_0x1f18[6])[_0x1f18[8]];var MailQueue=require(_0x1f18[6])[_0x1f18[9]];var MailRoom=require(_0x1f18[6])[_0x1f18[10]];var MailAccount=require(_0x1f18[6])[_0x1f18[11]];var MailServerIn=require(_0x1f18[6])[_0x1f18[12]];var MailServerOut=require(_0x1f18[6])[_0x1f18[13]];var MailApplication=require(_0x1f18[6])[_0x1f18[14]];var MailDisposition=require(_0x1f18[6])[_0x1f18[15]];var Interval=require(_0x1f18[6])[_0x1f18[16]];exports[_0x1f18[17]]= function(_0xdc99x10,_0xdc99x11){return MailAccount[_0x1f18[26]](_0x1f18[25])[_0x1f18[24]](Util[_0x1f18[23]](_0xdc99x10[_0x1f18[22]]))[_0x1f18[21]](function(_0xdc99x13){_0xdc99x11[_0x1f18[20]](200)[_0x1f18[19]](_0xdc99x13)})[_0x1f18[18]](function(_0xdc99x12){return handleError(_0xdc99x11,_0xdc99x12)})};exports[_0x1f18[27]]= function(_0xdc99x10,_0xdc99x11,_0xdc99x14){var _0xdc99x15={include:[],where:{MailAccountId:_0xdc99x10[_0x1f18[29]][_0x1f18[28]],$and:[]},attributes:[_0x1f18[28],_0x1f18[30],_0x1f18[31],_0x1f18[32],_0x1f18[33],_0x1f18[34],_0x1f18[35],_0x1f18[36],_0x1f18[37]]};if(_0xdc99x10[_0x1f18[22]]){if(_0xdc99x10[_0x1f18[22]][_0x1f18[34]]){if(_[_0x1f18[38]](_0xdc99x10[_0x1f18[22]][_0x1f18[34]])){for(var _0xdc99x16=0;_0xdc99x16< _0xdc99x10[_0x1f18[22]][_0x1f18[34]][_0x1f18[39]];_0xdc99x16++){_0xdc99x15[_0x1f18[44]][_0x1f18[43]][_0x1f18[42]]({tags:{$like:_0x1f18[40]+ _0xdc99x10[_0x1f18[22]][_0x1f18[34]][_0xdc99x16]+ _0x1f18[41]}})}}else {_0xdc99x15[_0x1f18[44]][_0x1f18[43]][_0x1f18[42]]({tags:{$like:_0x1f18[40]+ _0xdc99x10[_0x1f18[22]][_0x1f18[34]]+ _0x1f18[41]}})};delete _0xdc99x10[_0x1f18[22]][_0x1f18[34]]};_[_0x1f18[45]](_0xdc99x15[_0x1f18[44]],_0xdc99x10[_0x1f18[22]])};switch(_0xdc99x10[_0x1f18[55]][_0x1f18[60]]){case _0x1f18[48]:_0xdc99x15[_0x1f18[46]][_0x1f18[42]]({model:User,attributes:[_0x1f18[28]]});var _0xdc99x17;var _0xdc99x18;var _0xdc99x19;return User[_0x1f18[58]](_0xdc99x10[_0x1f18[55]][_0x1f18[28]])[_0x1f18[21]](function(_0xdc99x1e){if(_0xdc99x1e){return _0xdc99x1e[_0x1f18[59]]()}else {return []}})[_0x1f18[21]](function(_0xdc99x1d){_0xdc99x18= _[_0x1f18[51]](_0xdc99x1d,_0x1f18[28]);return MailAccount[_0x1f18[58]](_0xdc99x10[_0x1f18[29]][_0x1f18[28]])})[_0x1f18[21]](function(_0xdc99x1c){return _0xdc99x1c[_0x1f18[57]]({where:{$or:[{app:_0x1f18[52]},{app:_0x1f18[48]}]}})})[_0x1f18[21]](function(_0xdc99x1a){_0xdc99x17= _[_0x1f18[51]](_[_0x1f18[49]](_0xdc99x1a,{"\x61\x70\x70":_0x1f18[48]}),_0x1f18[50]);_0xdc99x19= _[_0x1f18[51]](_[_0x1f18[49]](_0xdc99x1a,{"\x61\x70\x70":_0x1f18[52]}),_0x1f18[53]);if(_[_0x1f18[54]](_0xdc99x18,_0xdc99x19)[_0x1f18[39]]|| _[_0x1f18[54]](_0xdc99x17,[_0xdc99x10[_0x1f18[55]][_0x1f18[28]]])[_0x1f18[39]]){return MailRoom[_0x1f18[56]](_0xdc99x15)[_0x1f18[21]](function(_0xdc99x1b){return _0xdc99x11[_0x1f18[20]](200)[_0x1f18[19]](_0xdc99x1b)})[_0x1f18[18]](function(_0xdc99x12){console[_0x1f18[47]](_0xdc99x12);return handleError(_0xdc99x11,_0xdc99x12)})}else {return _0xdc99x11[_0x1f18[20]](200)[_0x1f18[19]]([])}})[_0x1f18[18]](function(_0xdc99x12){console[_0x1f18[47]](_0xdc99x12)});default:return MailRoom[_0x1f18[56]](_0xdc99x15)[_0x1f18[21]](function(_0xdc99x1b){return _0xdc99x11[_0x1f18[20]](200)[_0x1f18[19]](_0xdc99x1b)})[_0x1f18[18]](function(_0xdc99x12){console[_0x1f18[47]](_0xdc99x12);return handleError(_0xdc99x11,_0xdc99x12)})}};exports[_0x1f18[61]]= function(_0xdc99x10,_0xdc99x11,_0xdc99x14){return MailAccount[_0x1f18[58]](_0xdc99x10[_0x1f18[29]][_0x1f18[28]])[_0x1f18[21]](function(_0xdc99x20){if(!_0xdc99x20){return _0xdc99x11[_0x1f18[62]](404)};return _0xdc99x20[_0x1f18[63]]()})[_0x1f18[21]](function(_0xdc99x1f){return _0xdc99x11[_0x1f18[20]](200)[_0x1f18[19]]({rows:_0xdc99x1f,count:_0xdc99x1f[_0x1f18[39]]})})[_0x1f18[18]](function(_0xdc99x12){return handleError(_0xdc99x11,_0xdc99x12)})};exports[_0x1f18[64]]= function(_0xdc99x10,_0xdc99x11,_0xdc99x14){return MailAccount[_0x1f18[26]](_0x1f18[25])[_0x1f18[58]](_0xdc99x10[_0x1f18[29]][_0x1f18[28]])[_0x1f18[21]](function(_0xdc99x20){if(!_0xdc99x20){return _0xdc99x11[_0x1f18[62]](404)};return _0xdc99x11[_0x1f18[19]](_0xdc99x20)})[_0x1f18[18]](function(_0xdc99x12){return handleError(_0xdc99x11,_0xdc99x12)})};exports[_0x1f18[65]]= function(_0xdc99x10,_0xdc99x11,_0xdc99x14){return MailAccount[_0x1f18[67]]({where:{address:_0xdc99x10[_0x1f18[29]][_0x1f18[66]]}})[_0x1f18[21]](function(_0xdc99x20){if(!_0xdc99x20){return _0xdc99x11[_0x1f18[62]](404)};return _0xdc99x11[_0x1f18[19]](_0xdc99x20)})[_0x1f18[18]](function(_0xdc99x12){return handleError(_0xdc99x11,_0xdc99x12)})};exports[_0x1f18[68]]= function(_0xdc99x10,_0xdc99x11,_0xdc99x14){return MailAccount[_0x1f18[26]](_0x1f18[25])[_0x1f18[58]](_0xdc99x10[_0x1f18[29]][_0x1f18[28]])[_0x1f18[21]](function(_0xdc99x20){if(!_0xdc99x20){return _0xdc99x11[_0x1f18[62]](404)};return _0xdc99x20[_0x1f18[57]](_[_0x1f18[45]](Util[_0x1f18[23]](_0xdc99x10[_0x1f18[22]]),{include:[{model:MailQueue,attributes:[_0x1f18[28],_0x1f18[69]]},{model:User,attributes:[_0x1f18[28],_0x1f18[69],_0x1f18[70]]},{model:Interval,attributes:[_0x1f18[28],_0x1f18[69]]}]}))})[_0x1f18[21]](function(_0xdc99x21){return _0xdc99x11[_0x1f18[19]]({count:_0xdc99x21[_0x1f18[39]],rows:_0xdc99x21})})[_0x1f18[18]](function(_0xdc99x12){return handleError(_0xdc99x11,_0xdc99x12)})};exports[_0x1f18[71]]= function(_0xdc99x10,_0xdc99x11,_0xdc99x14){return sequelize[_0x1f18[75]](function(_0xdc99x22){return MailAccount[_0x1f18[71]](_0xdc99x10[_0x1f18[74]],{include:[{model:MailServerIn},{model:MailServerOut}],transaction:_0xdc99x22})})[_0x1f18[21]](function(_0xdc99x20){return _0xdc99x11[_0x1f18[20]](201)[_0x1f18[19]](_0xdc99x20)})[_0x1f18[18]](sequelize.UniqueConstraintError,function(_0xdc99x12){return Util[_0x1f18[73]][_0x1f18[72]](_0xdc99x11,_0xdc99x12)})[_0x1f18[18]](function(_0xdc99x12){return handleError(_0xdc99x11,_0xdc99x12)})};exports[_0x1f18[76]]= function(_0xdc99x10,_0xdc99x11,_0xdc99x14){return MailApplication[_0x1f18[79]](_0x1f18[77],{where:{MailAccountId:_0xdc99x10[_0x1f18[29]][_0x1f18[28]]}})[_0x1f18[21]](function(_0xdc99x24){_0xdc99x10[_0x1f18[74]][_0x1f18[77]]= _0xdc99x24?++_0xdc99x24:1;_0xdc99x10[_0x1f18[74]][_0x1f18[78]]= _0xdc99x10[_0x1f18[29]][_0x1f18[28]];return MailApplication[_0x1f18[71]](_0xdc99x10[_0x1f18[74]])})[_0x1f18[21]](function(_0xdc99x23){return _0xdc99x11[_0x1f18[20]](201)[_0x1f18[19]](_0xdc99x23)})[_0x1f18[18]](function(_0xdc99x12){return handleError(_0xdc99x11,_0xdc99x12)})};exports[_0x1f18[80]]= function(_0xdc99x10,_0xdc99x11,_0xdc99x14){_0xdc99x10[_0x1f18[74]][_0x1f18[78]]= _0xdc99x10[_0x1f18[29]][_0x1f18[28]];return MailDisposition[_0x1f18[71]](_0xdc99x10[_0x1f18[74]])[_0x1f18[21]](function(_0xdc99x25){return _0xdc99x11[_0x1f18[20]](201)[_0x1f18[19]](_0xdc99x25)})[_0x1f18[18]](function(_0xdc99x12){return handleError(_0xdc99x11,_0xdc99x12)})};exports[_0x1f18[81]]= function(_0xdc99x10,_0xdc99x11){if(_0xdc99x10[_0x1f18[74]][_0x1f18[28]]){delete _0xdc99x10[_0x1f18[74]][_0x1f18[28]]};return MailAccount[_0x1f18[58]](_0xdc99x10[_0x1f18[29]][_0x1f18[28]])[_0x1f18[21]](function(_0xdc99x20){if(!_0xdc99x20){return _0xdc99x11[_0x1f18[62]](404)};var _0xdc99x26=_[_0x1f18[45]](_0xdc99x20,_0xdc99x10[_0x1f18[74]]);return _0xdc99x26[_0x1f18[82]]()})[_0x1f18[21]](function(_0xdc99x20){return _0xdc99x11[_0x1f18[20]](200)[_0x1f18[19]](_0xdc99x20)})[_0x1f18[18]](sequelize.UniqueConstraintError,function(_0xdc99x12){return Util[_0x1f18[73]][_0x1f18[72]](_0xdc99x11,_0xdc99x12)})[_0x1f18[18]](function(_0xdc99x12){return handleError(_0xdc99x11,_0xdc99x12)})};exports[_0x1f18[83]]= function(_0xdc99x10,_0xdc99x11){if(_0xdc99x10[_0x1f18[74]][_0x1f18[28]]){delete _0xdc99x10[_0x1f18[74]][_0x1f18[28]]};return MailDisposition[_0x1f18[58]](_0xdc99x10[_0x1f18[29]][_0x1f18[84]])[_0x1f18[21]](function(_0xdc99x27){if(!_0xdc99x27){return _0xdc99x11[_0x1f18[62]](404)};var _0xdc99x26=_[_0x1f18[45]](_0xdc99x27,_0xdc99x10[_0x1f18[74]]);return _0xdc99x26[_0x1f18[82]]()})[_0x1f18[21]](function(_0xdc99x20){return _0xdc99x11[_0x1f18[20]](200)[_0x1f18[19]](_0xdc99x20)})[_0x1f18[18]](function(_0xdc99x12){return handleError(_0xdc99x11,_0xdc99x12)})};exports[_0x1f18[85]]= function(_0xdc99x10,_0xdc99x11){var _0xdc99x28=0;var _0xdc99x1a=_0xdc99x10[_0x1f18[74]];_0xdc99x1a[_0x1f18[87]](function(_0xdc99x29){delete _0xdc99x29[_0x1f18[28]];delete _0xdc99x29[_0x1f18[86]];delete _0xdc99x29[_0x1f18[37]];_0xdc99x29[_0x1f18[77]]= ++_0xdc99x28});return sequelize[_0x1f18[75]](function(_0xdc99x22){return MailApplication[_0x1f18[89]]({where:{MailAccountId:_0xdc99x10[_0x1f18[29]][_0x1f18[28]]},individualHooks:true,transaction:_0xdc99x22})[_0x1f18[21]](function(_0xdc99x23){return MailApplication[_0x1f18[88]](_0xdc99x1a,{individualHooks:true,transaction:_0xdc99x22})})})[_0x1f18[21]](function(_0xdc99x2a){return _0xdc99x11[_0x1f18[20]](200)[_0x1f18[19]]({count:_0xdc99x2a[_0x1f18[39]],rows:_0xdc99x2a})})[_0x1f18[18]](function(_0xdc99x12){return handleError(_0xdc99x11,_0xdc99x12)})};exports[_0x1f18[89]]= function(_0xdc99x10,_0xdc99x11,_0xdc99x14){return MailAccount[_0x1f18[58]](_0xdc99x10[_0x1f18[29]][_0x1f18[28]])[_0x1f18[21]](function(_0xdc99x20){if(!_0xdc99x20){return _0xdc99x11[_0x1f18[62]](404)};return _0xdc99x20[_0x1f18[89]]()})[_0x1f18[21]](function(){return _0xdc99x11[_0x1f18[62]](204)})[_0x1f18[18]](function(_0xdc99x12){return handleError(_0xdc99x11,_0xdc99x12)})};exports[_0x1f18[90]]= function(_0xdc99x10,_0xdc99x11,_0xdc99x14){return MailApplication[_0x1f18[58]](_0xdc99x10[_0x1f18[29]][_0x1f18[91]])[_0x1f18[21]](function(_0xdc99x23){if(!_0xdc99x23){return _0xdc99x11[_0x1f18[62]](404)};return _0xdc99x23[_0x1f18[89]]()})[_0x1f18[21]](function(){return _0xdc99x11[_0x1f18[62]](204)})[_0x1f18[18]](function(_0xdc99x12){return handleError(_0xdc99x11,_0xdc99x12)})};exports[_0x1f18[92]]= function(_0xdc99x10,_0xdc99x11,_0xdc99x14){return MailDisposition[_0x1f18[58]](_0xdc99x10[_0x1f18[29]][_0x1f18[84]])[_0x1f18[21]](function(_0xdc99x25){if(!_0xdc99x25){return _0xdc99x11[_0x1f18[62]](404)};return _0xdc99x25[_0x1f18[89]]()})[_0x1f18[21]](function(){return _0xdc99x11[_0x1f18[62]](204)})[_0x1f18[18]](function(_0xdc99x12){return handleError(_0xdc99x11,_0xdc99x12)})};exports[_0x1f18[93]]= function(_0xdc99x10,_0xdc99x11){return MailAccount[_0x1f18[89]]({where:{id:_0xdc99x10[_0x1f18[22]][_0x1f18[94]]},individualHooks:true})[_0x1f18[21]](function(){return _0xdc99x11[_0x1f18[62]](204)})[_0x1f18[18]](function(_0xdc99x12){return handleError(_0xdc99x11,_0xdc99x12)})};exports[_0x1f18[95]]= function(_0xdc99x10,_0xdc99x11){return MailApplication[_0x1f18[89]]({where:{id:_0xdc99x10[_0x1f18[22]][_0x1f18[94]]},individualHooks:true})[_0x1f18[21]](function(){return _0xdc99x11[_0x1f18[62]](204)})[_0x1f18[18]](function(_0xdc99x12){return handleError(_0xdc99x11,_0xdc99x12)})};exports[_0x1f18[96]]= function(_0xdc99x10,_0xdc99x11){return MailApplication[_0x1f18[58]](_0xdc99x10[_0x1f18[29]][_0x1f18[91]],{include:[{all:true}]})[_0x1f18[21]](function(_0xdc99x23){if(!_0xdc99x23){return _0xdc99x11[_0x1f18[62]](404)};return _0xdc99x11[_0x1f18[19]](_0xdc99x23)})[_0x1f18[18]](function(_0xdc99x12){return handleError(_0xdc99x11,_0xdc99x12)})};exports[_0x1f18[97]]= function(_0xdc99x10,_0xdc99x11){if(_0xdc99x10[_0x1f18[74]][_0x1f18[28]]){delete _0xdc99x10[_0x1f18[74]][_0x1f18[28]]};return MailApplication[_0x1f18[58]](_0xdc99x10[_0x1f18[29]][_0x1f18[91]])[_0x1f18[21]](function(_0xdc99x23){if(!_0xdc99x23){return _0xdc99x11[_0x1f18[62]](404)};var _0xdc99x26=_[_0x1f18[45]](_0xdc99x23,_0xdc99x10[_0x1f18[74]]);return _0xdc99x26[_0x1f18[82]]()})[_0x1f18[21]](function(_0xdc99x23){return _0xdc99x11[_0x1f18[20]](200)[_0x1f18[19]](_0xdc99x23)})[_0x1f18[18]](function(_0xdc99x12){return handleError(_0xdc99x11,_0xdc99x12)})};function handleError(_0xdc99x11,_0xdc99x12){console[_0x1f18[98]](_0xdc99x12);return _0xdc99x11[_0x1f18[20]](500)[_0x1f18[19]](_0xdc99x12)} \ No newline at end of file diff --git a/server/api/mail_account/mail_account.events.js b/server/api/mail_account/mail_account.events.js index b5d3ffa..ed9ce79 100644 --- a/server/api/mail_account/mail_account.events.js +++ b/server/api/mail_account/mail_account.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const MailAccount = require('../../models').MailAccount; - -var MailAccountEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -MailAccountEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - MailAccount.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - MailAccountEvents.emit(event + ':' + doc._id, doc); - MailAccountEvents.emit(event, doc); - done(null); - } -} - -module.exports = MailAccountEvents; +var _0xcc89=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x4D\x61\x69\x6C\x41\x63\x63\x6F\x75\x6E\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xcc89[0];const EventEmitter=require(_0xcc89[1]);const MailAccount=require(_0xcc89[3])[_0xcc89[2]];var MailAccountEvents= new EventEmitter();MailAccountEvents[_0xcc89[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xcc89[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xcc89[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xcc89[6]};for(var e in events){var event=events[e];MailAccount[_0xcc89[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x1eb5x8,_0x1eb5x9,_0x1eb5xa){MailAccountEvents[_0xcc89[10]](event+ _0xcc89[8]+ _0x1eb5x8[_0xcc89[9]],_0x1eb5x8);MailAccountEvents[_0xcc89[10]](event,_0x1eb5x8);_0x1eb5xa(null)}}module[_0xcc89[11]]= MailAccountEvents \ No newline at end of file diff --git a/server/api/mail_account/mail_account.socket.js b/server/api/mail_account/mail_account.socket.js index 64b2c78..2dd13ac 100644 --- a/server/api/mail_account/mail_account.socket.js +++ b/server/api/mail_account/mail_account.socket.js @@ -1,28 +1 @@ -'use strict'; - -const MailAccountEvents = require('./mail_account.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('mail_account:' + event, socket); - - MailAccountEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - MailAccountEvents.removeListener(event, listener); - }; -} +var _0x71dd=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x6D\x61\x69\x6C\x5F\x61\x63\x63\x6F\x75\x6E\x74\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x6D\x61\x69\x6C\x5F\x61\x63\x63\x6F\x75\x6E\x74\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x71dd[0];const MailAccountEvents=require(_0x71dd[1]);var events=[_0x71dd[2],_0x71dd[3]];exports[_0x71dd[4]]= function(_0x43e9x3){for(var _0x43e9x4=0,_0x43e9x5=events[_0x71dd[5]];_0x43e9x4< _0x43e9x5;_0x43e9x4++){var _0x43e9x6=events[_0x43e9x4];var _0x43e9x7=createListener(_0x71dd[6]+ _0x43e9x6,_0x43e9x3);MailAccountEvents[_0x71dd[7]](_0x43e9x6,_0x43e9x7);_0x43e9x3[_0x71dd[7]](_0x71dd[8],removeListener(_0x43e9x6,_0x43e9x7))}};function createListener(_0x43e9x6,_0x43e9x3){return function(_0x43e9x9){_0x43e9x3[_0x71dd[9]](_0x43e9x6,_0x43e9x9)}}function removeListener(_0x43e9x6,_0x43e9x7){return function(){MailAccountEvents[_0x71dd[10]](_0x43e9x6,_0x43e9x7)}} \ No newline at end of file diff --git a/server/api/mail_application/index.js b/server/api/mail_application/index.js index 7f53439..a113bfa 100644 --- a/server/api/mail_application/index.js +++ b/server/api/mail_application/index.js @@ -1,17 +1 @@ -'use strict'; - -var express = require('express'); - -var controller = require('./mail_application.controller'); -var auth = require('../../auth/auth.service'); -var license = require('../../config/license/license.service'); - -var router = express.Router(); - -router.get('/', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin']), controller.index); -router.get('/:id', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin']), controller.show); -router.post('/', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin']), controller.create); -router.put('/:id', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin']), controller.update); -router.delete('/:id', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin']), controller.destroy); - -module.exports = router; +var _0xaa4a=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x6D\x61\x69\x6C\x5F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x68\x61\x73\x4D\x61\x69\x6C","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0xaa4a[0];var express=require(_0xaa4a[1]);var controller=require(_0xaa4a[2]);var auth=require(_0xaa4a[3]);var license=require(_0xaa4a[4]);var router=express.Router();router[_0xaa4a[12]](_0xaa4a[5],license[_0xaa4a[6]](),license[_0xaa4a[7]](),auth[_0xaa4a[8]](),auth[_0xaa4a[10]]([9],[_0xaa4a[9]]),controller[_0xaa4a[11]]);router[_0xaa4a[12]](_0xaa4a[13],license[_0xaa4a[6]](),license[_0xaa4a[7]](),auth[_0xaa4a[8]](),auth[_0xaa4a[10]]([9],[_0xaa4a[9]]),controller[_0xaa4a[14]]);router[_0xaa4a[16]](_0xaa4a[5],license[_0xaa4a[6]](),license[_0xaa4a[7]](),auth[_0xaa4a[8]](),auth[_0xaa4a[10]]([9],[_0xaa4a[9]]),controller[_0xaa4a[15]]);router[_0xaa4a[18]](_0xaa4a[13],license[_0xaa4a[6]](),license[_0xaa4a[7]](),auth[_0xaa4a[8]](),auth[_0xaa4a[10]]([9],[_0xaa4a[9]]),controller[_0xaa4a[17]]);router[_0xaa4a[20]](_0xaa4a[13],license[_0xaa4a[6]](),license[_0xaa4a[7]](),auth[_0xaa4a[8]](),auth[_0xaa4a[10]]([9],[_0xaa4a[9]]),controller[_0xaa4a[19]]);module[_0xaa4a[21]]= router \ No newline at end of file diff --git a/server/api/mail_application/mail_application.controller.js b/server/api/mail_application/mail_application.controller.js index 0a75c15..e94a80c 100644 --- a/server/api/mail_application/mail_application.controller.js +++ b/server/api/mail_application/mail_application.controller.js @@ -1,102 +1 @@ -'use strict'; -var _ = require('lodash'); -var MailApplication = require('../../models').MailApplication; -// Get list of mailApplications -exports.index = function(req, res, next) { - return MailApplication - .findAll({ - where: req.query, - order: 'priority', - include: [{ - all: true - }] - }) - .then(function(mailApplications) { - return res.status(200).send(mailApplications); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; -// Get a single mailApplication -exports.show = function(req, res, next) { - return MailApplication - .findById(req.params.id, { - include: [{ - all: true - }] - }) - .then(function(mailApplication) { - if (!mailApplication) { - return res.sendStatus(404); - } - return res.send(mailApplication); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; -// Creates a new mailApplication in the DB. -exports.create = function(req, res, next) { - return MailApplication - .max('priority', { - where: { - MailAccountId: req.body.MailAccountId - } - }).then(function(max) { - // SET PRIORITY - req.body.priority = max ? ++max : 1; - return MailApplication - .create(req.body); - }) - .then(function(mailApplication) { - return res.status(201).send(mailApplication); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; -// Updates an existing mailApplication in the DB. -exports.update = function(req, res, next) { - if (req.body.id) { - delete req.body.id; - } - return MailApplication - .findById(req.params.id) - .then(function(mailApplication) { - if (!mailApplication) { - return res.sendStatus(404); - } - var updated = _.merge(mailApplication, req.body); - return updated - .save(); - }) - .then(function(mailApplication) { - return res.status(200).send(mailApplication); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; -// Deletes a mailApplication from the DB. -exports.destroy = function(req, res, next) { - return MailApplication - .findById(req.params.id) - .then(function(mailApplication) { - if (!mailApplication) { - return res.sendStatus(404); - } - return mailApplication - .destroy(); - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0x3b02=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x4D\x61\x69\x6C\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x70\x72\x69\x6F\x72\x69\x74\x79","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x4D\x61\x69\x6C\x41\x63\x63\x6F\x75\x6E\x74\x49\x64","\x6D\x61\x78","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x64\x65\x73\x74\x72\x6F\x79"];_0x3b02[0];var _=require(_0x3b02[1]);var MailApplication=require(_0x3b02[3])[_0x3b02[2]];exports[_0x3b02[4]]= function(_0x72c8x3,_0x72c8x4,_0x72c8x5){return MailApplication[_0x3b02[11]]({where:_0x72c8x3[_0x3b02[9]],order:_0x3b02[10],include:[{all:true}]})[_0x3b02[8]](function(_0x72c8x7){return _0x72c8x4[_0x3b02[7]](200)[_0x3b02[6]](_0x72c8x7)})[_0x3b02[5]](function(_0x72c8x6){return handleError(_0x72c8x4,_0x72c8x6)})};exports[_0x3b02[12]]= function(_0x72c8x3,_0x72c8x4,_0x72c8x5){return MailApplication[_0x3b02[16]](_0x72c8x3[_0x3b02[15]][_0x3b02[14]],{include:[{all:true}]})[_0x3b02[8]](function(_0x72c8x8){if(!_0x72c8x8){return _0x72c8x4[_0x3b02[13]](404)};return _0x72c8x4[_0x3b02[6]](_0x72c8x8)})[_0x3b02[5]](function(_0x72c8x6){return handleError(_0x72c8x4,_0x72c8x6)})};exports[_0x3b02[17]]= function(_0x72c8x3,_0x72c8x4,_0x72c8x5){return MailApplication[_0x3b02[20]](_0x3b02[10],{where:{MailAccountId:_0x72c8x3[_0x3b02[18]][_0x3b02[19]]}})[_0x3b02[8]](function(_0x72c8x9){_0x72c8x3[_0x3b02[18]][_0x3b02[10]]= _0x72c8x9?++_0x72c8x9:1;return MailApplication[_0x3b02[17]](_0x72c8x3[_0x3b02[18]])})[_0x3b02[8]](function(_0x72c8x8){return _0x72c8x4[_0x3b02[7]](201)[_0x3b02[6]](_0x72c8x8)})[_0x3b02[5]](function(_0x72c8x6){return handleError(_0x72c8x4,_0x72c8x6)})};exports[_0x3b02[21]]= function(_0x72c8x3,_0x72c8x4,_0x72c8x5){if(_0x72c8x3[_0x3b02[18]][_0x3b02[14]]){delete _0x72c8x3[_0x3b02[18]][_0x3b02[14]]};return MailApplication[_0x3b02[16]](_0x72c8x3[_0x3b02[15]][_0x3b02[14]])[_0x3b02[8]](function(_0x72c8x8){if(!_0x72c8x8){return _0x72c8x4[_0x3b02[13]](404)};var _0x72c8xa=_[_0x3b02[22]](_0x72c8x8,_0x72c8x3[_0x3b02[18]]);return _0x72c8xa[_0x3b02[23]]()})[_0x3b02[8]](function(_0x72c8x8){return _0x72c8x4[_0x3b02[7]](200)[_0x3b02[6]](_0x72c8x8)})[_0x3b02[5]](function(_0x72c8x6){return handleError(_0x72c8x4,_0x72c8x6)})};exports[_0x3b02[24]]= function(_0x72c8x3,_0x72c8x4,_0x72c8x5){return MailApplication[_0x3b02[16]](_0x72c8x3[_0x3b02[15]][_0x3b02[14]])[_0x3b02[8]](function(_0x72c8x8){if(!_0x72c8x8){return _0x72c8x4[_0x3b02[13]](404)};return _0x72c8x8[_0x3b02[24]]()})[_0x3b02[8]](function(){return _0x72c8x4[_0x3b02[13]](204)})[_0x3b02[5]](function(_0x72c8x6){return handleError(_0x72c8x4,_0x72c8x6)})};function handleError(_0x72c8x4,_0x72c8x6){return _0x72c8x4[_0x3b02[7]](500)[_0x3b02[6]](_0x72c8x6)} \ No newline at end of file diff --git a/server/api/mail_application/mail_application.events.js b/server/api/mail_application/mail_application.events.js index 99d6421..f0d165a 100644 --- a/server/api/mail_application/mail_application.events.js +++ b/server/api/mail_application/mail_application.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const MailApplication = require('../../models').MailApplication; - -var MailApplicationEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -MailApplicationEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - MailApplication.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - MailApplicationEvents.emit(event + ':' + doc._id, doc); - MailApplicationEvents.emit(event, doc); - done(null); - } -} - -module.exports = MailApplicationEvents; +var _0xed68=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x4D\x61\x69\x6C\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xed68[0];const EventEmitter=require(_0xed68[1]);const MailApplication=require(_0xed68[3])[_0xed68[2]];var MailApplicationEvents= new EventEmitter();MailApplicationEvents[_0xed68[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xed68[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xed68[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xed68[6]};for(var e in events){var event=events[e];MailApplication[_0xed68[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x1c11x8,_0x1c11x9,_0x1c11xa){MailApplicationEvents[_0xed68[10]](event+ _0xed68[8]+ _0x1c11x8[_0xed68[9]],_0x1c11x8);MailApplicationEvents[_0xed68[10]](event,_0x1c11x8);_0x1c11xa(null)}}module[_0xed68[11]]= MailApplicationEvents \ No newline at end of file diff --git a/server/api/mail_application/mail_application.socket.js b/server/api/mail_application/mail_application.socket.js index 4243448..9cdb7cb 100644 --- a/server/api/mail_application/mail_application.socket.js +++ b/server/api/mail_application/mail_application.socket.js @@ -1,28 +1 @@ -'use strict'; - -const MailApplicationEvents = require('./mail_application.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('mail_application:' + event, socket); - - MailApplicationEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - MailApplicationEvents.removeListener(event, listener); - }; -} +var _0x9106=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x6D\x61\x69\x6C\x5F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x6D\x61\x69\x6C\x5F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x9106[0];const MailApplicationEvents=require(_0x9106[1]);var events=[_0x9106[2],_0x9106[3]];exports[_0x9106[4]]= function(_0x240ex3){for(var _0x240ex4=0,_0x240ex5=events[_0x9106[5]];_0x240ex4< _0x240ex5;_0x240ex4++){var _0x240ex6=events[_0x240ex4];var _0x240ex7=createListener(_0x9106[6]+ _0x240ex6,_0x240ex3);MailApplicationEvents[_0x9106[7]](_0x240ex6,_0x240ex7);_0x240ex3[_0x9106[7]](_0x9106[8],removeListener(_0x240ex6,_0x240ex7))}};function createListener(_0x240ex6,_0x240ex3){return function(_0x240ex9){_0x240ex3[_0x9106[9]](_0x240ex6,_0x240ex9)}}function removeListener(_0x240ex6,_0x240ex7){return function(){MailApplicationEvents[_0x9106[10]](_0x240ex6,_0x240ex7)}} \ No newline at end of file diff --git a/server/api/mail_attachment/index.js b/server/api/mail_attachment/index.js index 8118efb..036ef8a 100644 --- a/server/api/mail_attachment/index.js +++ b/server/api/mail_attachment/index.js @@ -1,17 +1 @@ -'use strict'; - -var express = require('express'); - -var controller = require('./mail_attachment.controller'); -var auth = require('../../auth/auth.service'); -var license = require('../../config/license/license.service'); - -var router = express.Router(); - -router.get('/', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin', 'agent']), controller.index); -router.get('/:id', license.isValidDate(), license.hasMail(), controller.show); -router.post('/', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin', 'agent']), controller.create); -router.put('/:id', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin', 'agent']), controller.update); -router.delete('/:id', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin', 'agent']), controller.destroy); - -module.exports = router; +var _0x8f62=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x6D\x61\x69\x6C\x5F\x61\x74\x74\x61\x63\x68\x6D\x65\x6E\x74\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x68\x61\x73\x4D\x61\x69\x6C","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0x8f62[0];var express=require(_0x8f62[1]);var controller=require(_0x8f62[2]);var auth=require(_0x8f62[3]);var license=require(_0x8f62[4]);var router=express.Router();router[_0x8f62[13]](_0x8f62[5],license[_0x8f62[6]](),license[_0x8f62[7]](),auth[_0x8f62[8]](),auth[_0x8f62[11]]([9],[_0x8f62[9],_0x8f62[10]]),controller[_0x8f62[12]]);router[_0x8f62[13]](_0x8f62[14],license[_0x8f62[6]](),license[_0x8f62[7]](),controller[_0x8f62[15]]);router[_0x8f62[17]](_0x8f62[5],license[_0x8f62[6]](),license[_0x8f62[7]](),auth[_0x8f62[8]](),auth[_0x8f62[11]]([9],[_0x8f62[9],_0x8f62[10]]),controller[_0x8f62[16]]);router[_0x8f62[19]](_0x8f62[14],license[_0x8f62[6]](),license[_0x8f62[7]](),auth[_0x8f62[8]](),auth[_0x8f62[11]]([9],[_0x8f62[9],_0x8f62[10]]),controller[_0x8f62[18]]);router[_0x8f62[21]](_0x8f62[14],license[_0x8f62[6]](),license[_0x8f62[7]](),auth[_0x8f62[8]](),auth[_0x8f62[11]]([9],[_0x8f62[9],_0x8f62[10]]),controller[_0x8f62[20]]);module[_0x8f62[22]]= router \ No newline at end of file diff --git a/server/api/mail_attachment/mail_attachment.controller.js b/server/api/mail_attachment/mail_attachment.controller.js index 2d24f24..60ebce8 100644 --- a/server/api/mail_attachment/mail_attachment.controller.js +++ b/server/api/mail_attachment/mail_attachment.controller.js @@ -1,97 +1 @@ -'use strict'; - -var _ = require('lodash'); -var path = require('path'); -var fs = require('fs'); -var formidable = require('formidable'); -var Promise = require('bluebird'); - -var config = require('../../config/environment'); -var MailAttachment = require('../../models').MailAttachment; - -// Get list of mailAttachments -exports.index = function(req, res, next) { - return MailAttachment - .findAll() - .then(function(mailAttachments) { - return res.status(200).send(mailAttachments); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get a single mailAttachment -exports.show = function(req, res, next) { - return MailAttachment - .findById(req.params.id) - .then(function(mailAttachment) { - return res.sendFile(mailAttachment.path); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Creates a new mailAttachment in the DB. -exports.create = function(req, res, next) { - console.log(req); - var form = new formidable.IncomingForm(); - form.uploadDir = path.join(config.root, 'server', 'files', 'attachments'); - form.keepExtensions = true; - form.multiples = true; - form.hash = true; - - form.parse(req, function(err, form, wrap) { - if (err) { - return res.status(500).send(err); - } - return res.status(201).send({ - size: wrap.file.size, - path: wrap.file.path, - name: wrap.file.name, - type: wrap.file.type, - basename: path.basename(wrap.file.path) - }); - }); -}; - -// Updates an existing mailAttachment in the DB. -exports.update = function(req, res, next) { - if (req.body.id) { - delete req.body.id; - } - return MailAttachment - .findById(req.params.id) - .then(function(mailAttachment) { - if (!mailAttachment) { - return res.sendStatus(404); - } - var updated = _.merge(mailAttachment, req.body); - return updated.save(); - }) - .then(function(mailAttachment) { - return res.status(200).send(mailAttachment); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes a mailAttachment from the DB. -exports.destroy = function(req, res, next) { - var unlink = Promise.promisify(require("fs").unlink); - var _path = path.join(config.root, 'server', 'files', 'attachments', req.params.id); - - return unlink(_path) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0x38a8=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x70\x61\x74\x68","\x66\x73","\x66\x6F\x72\x6D\x69\x64\x61\x62\x6C\x65","\x62\x6C\x75\x65\x62\x69\x72\x64","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x4D\x61\x69\x6C\x41\x74\x74\x61\x63\x68\x6D\x65\x6E\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x46\x69\x6C\x65","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x6C\x6F\x67","\x75\x70\x6C\x6F\x61\x64\x44\x69\x72","\x72\x6F\x6F\x74","\x73\x65\x72\x76\x65\x72","\x66\x69\x6C\x65\x73","\x61\x74\x74\x61\x63\x68\x6D\x65\x6E\x74\x73","\x6A\x6F\x69\x6E","\x6B\x65\x65\x70\x45\x78\x74\x65\x6E\x73\x69\x6F\x6E\x73","\x6D\x75\x6C\x74\x69\x70\x6C\x65\x73","\x68\x61\x73\x68","\x73\x69\x7A\x65","\x66\x69\x6C\x65","\x6E\x61\x6D\x65","\x74\x79\x70\x65","\x62\x61\x73\x65\x6E\x61\x6D\x65","\x70\x61\x72\x73\x65","\x75\x70\x64\x61\x74\x65","\x62\x6F\x64\x79","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x64\x65\x73\x74\x72\x6F\x79","\x75\x6E\x6C\x69\x6E\x6B","\x70\x72\x6F\x6D\x69\x73\x69\x66\x79"];_0x38a8[0];var _=require(_0x38a8[1]);var path=require(_0x38a8[2]);var fs=require(_0x38a8[3]);var formidable=require(_0x38a8[4]);var Promise=require(_0x38a8[5]);var config=require(_0x38a8[6]);var MailAttachment=require(_0x38a8[8])[_0x38a8[7]];exports[_0x38a8[9]]= function(_0xb4f6x8,_0xb4f6x9,_0xb4f6xa){return MailAttachment[_0x38a8[14]]()[_0x38a8[13]](function(_0xb4f6xc){return _0xb4f6x9[_0x38a8[12]](200)[_0x38a8[11]](_0xb4f6xc)})[_0x38a8[10]](function(_0xb4f6xb){return handleError(_0xb4f6x9,_0xb4f6xb)})};exports[_0x38a8[15]]= function(_0xb4f6x8,_0xb4f6x9,_0xb4f6xa){return MailAttachment[_0x38a8[19]](_0xb4f6x8[_0x38a8[18]][_0x38a8[17]])[_0x38a8[13]](function(_0xb4f6xd){return _0xb4f6x9[_0x38a8[16]](_0xb4f6xd[_0x38a8[2]])})[_0x38a8[10]](function(_0xb4f6xb){return handleError(_0xb4f6x9,_0xb4f6xb)})};exports[_0x38a8[20]]= function(_0xb4f6x8,_0xb4f6x9,_0xb4f6xa){console[_0x38a8[21]](_0xb4f6x8);var _0xb4f6xe= new formidable.IncomingForm();_0xb4f6xe[_0x38a8[22]]= path[_0x38a8[27]](config[_0x38a8[23]],_0x38a8[24],_0x38a8[25],_0x38a8[26]);_0xb4f6xe[_0x38a8[28]]= true;_0xb4f6xe[_0x38a8[29]]= true;_0xb4f6xe[_0x38a8[30]]= true;_0xb4f6xe[_0x38a8[36]](_0xb4f6x8,function(_0xb4f6xb,_0xb4f6xe,_0xb4f6xf){if(_0xb4f6xb){return _0xb4f6x9[_0x38a8[12]](500)[_0x38a8[11]](_0xb4f6xb)};return _0xb4f6x9[_0x38a8[12]](201)[_0x38a8[11]]({size:_0xb4f6xf[_0x38a8[32]][_0x38a8[31]],path:_0xb4f6xf[_0x38a8[32]][_0x38a8[2]],name:_0xb4f6xf[_0x38a8[32]][_0x38a8[33]],type:_0xb4f6xf[_0x38a8[32]][_0x38a8[34]],basename:path[_0x38a8[35]](_0xb4f6xf[_0x38a8[32]][_0x38a8[2]])})})};exports[_0x38a8[37]]= function(_0xb4f6x8,_0xb4f6x9,_0xb4f6xa){if(_0xb4f6x8[_0x38a8[38]][_0x38a8[17]]){delete _0xb4f6x8[_0x38a8[38]][_0x38a8[17]]};return MailAttachment[_0x38a8[19]](_0xb4f6x8[_0x38a8[18]][_0x38a8[17]])[_0x38a8[13]](function(_0xb4f6xd){if(!_0xb4f6xd){return _0xb4f6x9[_0x38a8[39]](404)};var _0xb4f6x10=_[_0x38a8[40]](_0xb4f6xd,_0xb4f6x8[_0x38a8[38]]);return _0xb4f6x10[_0x38a8[41]]()})[_0x38a8[13]](function(_0xb4f6xd){return _0xb4f6x9[_0x38a8[12]](200)[_0x38a8[11]](_0xb4f6xd)})[_0x38a8[10]](function(_0xb4f6xb){return handleError(_0xb4f6x9,_0xb4f6xb)})};exports[_0x38a8[42]]= function(_0xb4f6x8,_0xb4f6x9,_0xb4f6xa){var _0xb4f6x11=Promise[_0x38a8[44]](require(_0x38a8[3])[_0x38a8[43]]);var _0xb4f6x12=path[_0x38a8[27]](config[_0x38a8[23]],_0x38a8[24],_0x38a8[25],_0x38a8[26],_0xb4f6x8[_0x38a8[18]][_0x38a8[17]]);return _0xb4f6x11(_0xb4f6x12)[_0x38a8[13]](function(){return _0xb4f6x9[_0x38a8[39]](204)})[_0x38a8[10]](function(_0xb4f6xb){return handleError(_0xb4f6x9,_0xb4f6xb)})};function handleError(_0xb4f6x9,_0xb4f6xb){return _0xb4f6x9[_0x38a8[12]](500)[_0x38a8[11]](_0xb4f6xb)} \ No newline at end of file diff --git a/server/api/mail_attachment/mail_attachment.events.js b/server/api/mail_attachment/mail_attachment.events.js index 72cbdbb..5cbf22a 100644 --- a/server/api/mail_attachment/mail_attachment.events.js +++ b/server/api/mail_attachment/mail_attachment.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const MailAttachment = require('../../models').MailAttachment; - -var MailAttachmentEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -MailAttachmentEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - MailAttachment.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - MailAttachmentEvents.emit(event + ':' + doc._id, doc); - MailAttachmentEvents.emit(event, doc); - done(null); - } -} - -module.exports = MailAttachmentEvents; +var _0x61a3=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x4D\x61\x69\x6C\x41\x74\x74\x61\x63\x68\x6D\x65\x6E\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x61a3[0];const EventEmitter=require(_0x61a3[1]);const MailAttachment=require(_0x61a3[3])[_0x61a3[2]];var MailAttachmentEvents= new EventEmitter();MailAttachmentEvents[_0x61a3[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x61a3[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x61a3[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x61a3[6]};for(var e in events){var event=events[e];MailAttachment[_0x61a3[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xfa79x8,_0xfa79x9,_0xfa79xa){MailAttachmentEvents[_0x61a3[10]](event+ _0x61a3[8]+ _0xfa79x8[_0x61a3[9]],_0xfa79x8);MailAttachmentEvents[_0x61a3[10]](event,_0xfa79x8);_0xfa79xa(null)}}module[_0x61a3[11]]= MailAttachmentEvents \ No newline at end of file diff --git a/server/api/mail_attachment/mail_attachment.socket.js b/server/api/mail_attachment/mail_attachment.socket.js index 4120d58..d34e6fb 100644 --- a/server/api/mail_attachment/mail_attachment.socket.js +++ b/server/api/mail_attachment/mail_attachment.socket.js @@ -1,28 +1 @@ -'use strict'; - -const MailAttachmentEvents = require('./mail_attachment.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('mail_attachment:' + event, socket); - - MailAttachmentEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - MailAttachmentEvents.removeListener(event, listener); - }; -} +var _0x2451=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x6D\x61\x69\x6C\x5F\x61\x74\x74\x61\x63\x68\x6D\x65\x6E\x74\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x6D\x61\x69\x6C\x5F\x61\x74\x74\x61\x63\x68\x6D\x65\x6E\x74\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x2451[0];const MailAttachmentEvents=require(_0x2451[1]);var events=[_0x2451[2],_0x2451[3]];exports[_0x2451[4]]= function(_0x7b68x3){for(var _0x7b68x4=0,_0x7b68x5=events[_0x2451[5]];_0x7b68x4< _0x7b68x5;_0x7b68x4++){var _0x7b68x6=events[_0x7b68x4];var _0x7b68x7=createListener(_0x2451[6]+ _0x7b68x6,_0x7b68x3);MailAttachmentEvents[_0x2451[7]](_0x7b68x6,_0x7b68x7);_0x7b68x3[_0x2451[7]](_0x2451[8],removeListener(_0x7b68x6,_0x7b68x7))}};function createListener(_0x7b68x6,_0x7b68x3){return function(_0x7b68x9){_0x7b68x3[_0x2451[9]](_0x7b68x6,_0x7b68x9)}}function removeListener(_0x7b68x6,_0x7b68x7){return function(){MailAttachmentEvents[_0x2451[10]](_0x7b68x6,_0x7b68x7)}} \ No newline at end of file diff --git a/server/api/mail_disposition/index.js b/server/api/mail_disposition/index.js index ef8de1a..8f2f66e 100644 --- a/server/api/mail_disposition/index.js +++ b/server/api/mail_disposition/index.js @@ -1,18 +1 @@ -'use strict'; - -var express = require('express'); -var auth = require('../../auth/auth.service'); -var controller = require('./mail_disposition.controller'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), controller.index); - -router.get('/:id', auth.isAuthenticated(), controller.show); -router.post('/', auth.isAuthenticated(), controller.create); -router.put('/:id', auth.isAuthenticated(), controller.update); -router.patch('/:id', auth.isAuthenticated(), controller.update); -router.delete('/:id', auth.isAuthenticated(), controller.destroy); - - -module.exports = router; +var _0x1e61=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x6D\x61\x69\x6C\x5F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x70\x61\x74\x63\x68","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0x1e61[0];var express=require(_0x1e61[1]);var auth=require(_0x1e61[2]);var controller=require(_0x1e61[3]);var router=express.Router();router[_0x1e61[7]](_0x1e61[4],auth[_0x1e61[5]](),controller[_0x1e61[6]]);router[_0x1e61[7]](_0x1e61[8],auth[_0x1e61[5]](),controller[_0x1e61[9]]);router[_0x1e61[11]](_0x1e61[4],auth[_0x1e61[5]](),controller[_0x1e61[10]]);router[_0x1e61[13]](_0x1e61[8],auth[_0x1e61[5]](),controller[_0x1e61[12]]);router[_0x1e61[14]](_0x1e61[8],auth[_0x1e61[5]](),controller[_0x1e61[12]]);router[_0x1e61[16]](_0x1e61[8],auth[_0x1e61[5]](),controller[_0x1e61[15]]);module[_0x1e61[17]]= router \ No newline at end of file diff --git a/server/api/mail_disposition/mail_disposition.controller.js b/server/api/mail_disposition/mail_disposition.controller.js index 193b6af..877f3f3 100644 --- a/server/api/mail_disposition/mail_disposition.controller.js +++ b/server/api/mail_disposition/mail_disposition.controller.js @@ -1,111 +1 @@ -/** - * Using Rails-like standard naming convention for endpoints. - * GET /api/mail/dispositions -> index - * POST /api/mail/dispositions -> create - * GET /api/mail/dispositions/:id -> show - * PUT /api/mail/dispositions/:id -> update - * DELETE /api/mail/dispositions/:id -> destroy - */ - -'use strict'; - - -var _ = require('lodash'); - -var MailDisposition = require('../../models').MailDisposition; - - -function handleError(res, statusCode) { - statusCode = statusCode || 500; - return function(err) { - res.status(statusCode).send(err); - }; -} - -function responseWithResult(res, statusCode) { - statusCode = statusCode || 200; - return function(entity) { - if (entity) { - res.status(statusCode).json(entity); - } - }; -} - -function responseWithoutResult(res, statusCode) { - statusCode = statusCode || 200; - return function() { - res.sendStatus(statusCode); - }; -} - -function handleEntityNotFound(res) { - return function(entity) { - if (!entity) { - res.status(404).end(); - return null; - } - return entity; - }; -} - -function saveUpdates(updates) { - return function(entity) { - return entity.updateAttributes(updates) - .then(function(updated) { - return updated; - }); - }; -} - -function removeEntity(res) { - return function(entity) { - if (entity) { - return entity.destroy() - .then(function() { - res.status(204).end(); - }); - } - }; -} - -// Gets a list of MailDispositions -exports.index = function(req, res) { - MailDisposition.findAndCountAll() - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Gets a single MailDisposition from the DB -exports.show = function(req, res) { - MailDisposition.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Creates a new MailDisposition in the DB -exports.create = function(req, res) { - MailDisposition.create(req.body) - .then(responseWithResult(res, 201)) - .catch(handleError(res)); -} - -// Updates an existing MailDisposition in the DB -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - MailDisposition.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(saveUpdates(req.body)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Deletes a MailDisposition from the DB -exports.destroy = function(req, res) { - MailDisposition.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(removeEntity(res)) - .catch(handleError(res)); -} +var _0xd34d=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x4D\x61\x69\x6C\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x6A\x73\x6F\x6E","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x65\x6E\x64","\x74\x68\x65\x6E","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x64\x65\x73\x74\x72\x6F\x79","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x73\x68\x6F\x77","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65"];_0xd34d[0];var _=require(_0xd34d[1]);var MailDisposition=require(_0xd34d[3])[_0xd34d[2]];function handleError(_0x3247x4,_0x3247x5){_0x3247x5= _0x3247x5|| 500;return function(_0x3247x6){_0x3247x4[_0xd34d[5]](_0x3247x5)[_0xd34d[4]](_0x3247x6)}}function responseWithResult(_0x3247x4,_0x3247x5){_0x3247x5= _0x3247x5|| 200;return function(_0x3247x8){if(_0x3247x8){_0x3247x4[_0xd34d[5]](_0x3247x5)[_0xd34d[6]](_0x3247x8)}}}function responseWithoutResult(_0x3247x4,_0x3247x5){_0x3247x5= _0x3247x5|| 200;return function(){_0x3247x4[_0xd34d[7]](_0x3247x5)}}function handleEntityNotFound(_0x3247x4){return function(_0x3247x8){if(!_0x3247x8){_0x3247x4[_0xd34d[5]](404)[_0xd34d[8]]();return null};return _0x3247x8}}function saveUpdates(_0x3247xc){return function(_0x3247x8){return _0x3247x8[_0xd34d[10]](_0x3247xc)[_0xd34d[9]](function(_0x3247xd){return _0x3247xd})}}function removeEntity(_0x3247x4){return function(_0x3247x8){if(_0x3247x8){return _0x3247x8[_0xd34d[11]]()[_0xd34d[9]](function(){_0x3247x4[_0xd34d[5]](204)[_0xd34d[8]]()})}}}exports[_0xd34d[12]]= function(_0x3247xf,_0x3247x4){MailDisposition[_0xd34d[14]]()[_0xd34d[9]](responseWithResult(_0x3247x4))[_0xd34d[13]](handleError(_0x3247x4))};exports[_0xd34d[15]]= function(_0x3247xf,_0x3247x4){MailDisposition[_0xd34d[18]](_0x3247xf[_0xd34d[17]][_0xd34d[16]])[_0xd34d[9]](handleEntityNotFound(_0x3247x4))[_0xd34d[9]](responseWithResult(_0x3247x4))[_0xd34d[13]](handleError(_0x3247x4))};exports[_0xd34d[19]]= function(_0x3247xf,_0x3247x4){MailDisposition[_0xd34d[19]](_0x3247xf[_0xd34d[20]])[_0xd34d[9]](responseWithResult(_0x3247x4,201))[_0xd34d[13]](handleError(_0x3247x4))};exports[_0xd34d[21]]= function(_0x3247xf,_0x3247x4){if(_0x3247xf[_0xd34d[20]][_0xd34d[16]]){delete _0x3247xf[_0xd34d[20]][_0xd34d[16]]};MailDisposition[_0xd34d[18]](_0x3247xf[_0xd34d[17]][_0xd34d[16]])[_0xd34d[9]](handleEntityNotFound(_0x3247x4))[_0xd34d[9]](saveUpdates(_0x3247xf[_0xd34d[20]]))[_0xd34d[9]](responseWithResult(_0x3247x4))[_0xd34d[13]](handleError(_0x3247x4))};exports[_0xd34d[11]]= function(_0x3247xf,_0x3247x4){MailDisposition[_0xd34d[18]](_0x3247xf[_0xd34d[17]][_0xd34d[16]])[_0xd34d[9]](handleEntityNotFound(_0x3247x4))[_0xd34d[9]](removeEntity(_0x3247x4))[_0xd34d[13]](handleError(_0x3247x4))} \ No newline at end of file diff --git a/server/api/mail_disposition/mail_disposition.events.js b/server/api/mail_disposition/mail_disposition.events.js index ece78a2..86f8c5a 100644 --- a/server/api/mail_disposition/mail_disposition.events.js +++ b/server/api/mail_disposition/mail_disposition.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const MailDisposition = require('../../models').MailDisposition; - -var MailDispositionEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -MailDispositionEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - MailDisposition.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - MailDispositionEvents.emit(event + ':' + doc._id, doc); - MailDispositionEvents.emit(event, doc); - done(null); - } -} - -module.exports = MailDispositionEvents; +var _0xafa4=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x4D\x61\x69\x6C\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xafa4[0];const EventEmitter=require(_0xafa4[1]);const MailDisposition=require(_0xafa4[3])[_0xafa4[2]];var MailDispositionEvents= new EventEmitter();MailDispositionEvents[_0xafa4[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xafa4[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xafa4[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xafa4[6]};for(var e in events){var event=events[e];MailDisposition[_0xafa4[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x7d34x8,_0x7d34x9,_0x7d34xa){MailDispositionEvents[_0xafa4[10]](event+ _0xafa4[8]+ _0x7d34x8[_0xafa4[9]],_0x7d34x8);MailDispositionEvents[_0xafa4[10]](event,_0x7d34x8);_0x7d34xa(null)}}module[_0xafa4[11]]= MailDispositionEvents \ No newline at end of file diff --git a/server/api/mail_disposition/mail_disposition.socket.js b/server/api/mail_disposition/mail_disposition.socket.js index 49ccf9a..b15ba9f 100644 --- a/server/api/mail_disposition/mail_disposition.socket.js +++ b/server/api/mail_disposition/mail_disposition.socket.js @@ -1,28 +1 @@ -'use strict'; - -const MailDispositionEvents = require('./mail_disposition.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('mail_disposition:' + event, socket); - - MailDispositionEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - MailDispositionEvents.removeListener(event, listener); - }; -} +var _0x8ef0=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x6D\x61\x69\x6C\x5F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x6D\x61\x69\x6C\x5F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x8ef0[0];const MailDispositionEvents=require(_0x8ef0[1]);var events=[_0x8ef0[2],_0x8ef0[3]];exports[_0x8ef0[4]]= function(_0x74c1x3){for(var _0x74c1x4=0,_0x74c1x5=events[_0x8ef0[5]];_0x74c1x4< _0x74c1x5;_0x74c1x4++){var _0x74c1x6=events[_0x74c1x4];var _0x74c1x7=createListener(_0x8ef0[6]+ _0x74c1x6,_0x74c1x3);MailDispositionEvents[_0x8ef0[7]](_0x74c1x6,_0x74c1x7);_0x74c1x3[_0x8ef0[7]](_0x8ef0[8],removeListener(_0x74c1x6,_0x74c1x7))}};function createListener(_0x74c1x6,_0x74c1x3){return function(_0x74c1x9){_0x74c1x3[_0x8ef0[9]](_0x74c1x6,_0x74c1x9)}}function removeListener(_0x74c1x6,_0x74c1x7){return function(){MailDispositionEvents[_0x8ef0[10]](_0x74c1x6,_0x74c1x7)}} \ No newline at end of file diff --git a/server/api/mail_message/index.js b/server/api/mail_message/index.js index 9f3d288..30e7495 100644 --- a/server/api/mail_message/index.js +++ b/server/api/mail_message/index.js @@ -1,21 +1 @@ -'use strict'; - -var express = require('express'); - -var controller = require('./mail_message.controller'); -var auth = require('../../auth/auth.service'); -var license = require('../../config/license/license.service'); - -var router = express.Router(); - -router.get('/', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin', 'agent']), controller.index); -router.get('/describe', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin']), controller.describe); -router.get('/:id', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin', 'agent']), controller.show); -router.post('/', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin', 'agent']), controller.create); -router.put('/', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin', 'agent']), controller.update); -router.put('/delete/bulk', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin']), controller.bulkDelete); -router.put('/delete/:id', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin']), controller.update); -router.put('/:id', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin', 'agent']), controller.update); -router.delete('/:id', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin', 'agent']), controller.destroy); - -module.exports = router; +var _0xc945=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x6D\x61\x69\x6C\x5F\x6D\x65\x73\x73\x61\x67\x65\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x68\x61\x73\x4D\x61\x69\x6C","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x64\x65\x73\x63\x72\x69\x62\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x2F\x64\x65\x6C\x65\x74\x65\x2F\x62\x75\x6C\x6B","\x62\x75\x6C\x6B\x44\x65\x6C\x65\x74\x65","\x2F\x64\x65\x6C\x65\x74\x65\x2F\x3A\x69\x64","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0xc945[0];var express=require(_0xc945[1]);var controller=require(_0xc945[2]);var auth=require(_0xc945[3]);var license=require(_0xc945[4]);var router=express.Router();router[_0xc945[13]](_0xc945[5],license[_0xc945[6]](),license[_0xc945[7]](),auth[_0xc945[8]](),auth[_0xc945[11]]([9],[_0xc945[9],_0xc945[10]]),controller[_0xc945[12]]);router[_0xc945[13]](_0xc945[14],license[_0xc945[6]](),license[_0xc945[7]](),auth[_0xc945[8]](),auth[_0xc945[11]]([9],[_0xc945[9]]),controller[_0xc945[15]]);router[_0xc945[13]](_0xc945[16],license[_0xc945[6]](),license[_0xc945[7]](),auth[_0xc945[8]](),auth[_0xc945[11]]([9],[_0xc945[9],_0xc945[10]]),controller[_0xc945[17]]);router[_0xc945[19]](_0xc945[5],license[_0xc945[6]](),license[_0xc945[7]](),auth[_0xc945[8]](),auth[_0xc945[11]]([9],[_0xc945[9],_0xc945[10]]),controller[_0xc945[18]]);router[_0xc945[21]](_0xc945[5],license[_0xc945[6]](),license[_0xc945[7]](),auth[_0xc945[8]](),auth[_0xc945[11]]([9],[_0xc945[9],_0xc945[10]]),controller[_0xc945[20]]);router[_0xc945[21]](_0xc945[22],license[_0xc945[6]](),license[_0xc945[7]](),auth[_0xc945[8]](),auth[_0xc945[11]]([9],[_0xc945[9]]),controller[_0xc945[23]]);router[_0xc945[21]](_0xc945[24],license[_0xc945[6]](),license[_0xc945[7]](),auth[_0xc945[8]](),auth[_0xc945[11]]([9],[_0xc945[9]]),controller[_0xc945[20]]);router[_0xc945[21]](_0xc945[16],license[_0xc945[6]](),license[_0xc945[7]](),auth[_0xc945[8]](),auth[_0xc945[11]]([9],[_0xc945[9],_0xc945[10]]),controller[_0xc945[20]]);router[_0xc945[26]](_0xc945[16],license[_0xc945[6]](),license[_0xc945[7]](),auth[_0xc945[8]](),auth[_0xc945[11]]([9],[_0xc945[9],_0xc945[10]]),controller[_0xc945[25]]);module[_0xc945[27]]= router \ No newline at end of file diff --git a/server/api/mail_message/mail_message.controller.js b/server/api/mail_message/mail_message.controller.js index 4a701cd..9d4a91b 100644 --- a/server/api/mail_message/mail_message.controller.js +++ b/server/api/mail_message/mail_message.controller.js @@ -1,207 +1 @@ -'use strict'; - -var _ = require('lodash'); -var async = require('async'); - -var htmlToText = require('html-to-text'); -var formidable = require('formidable'); -var moment = require('moment'); -var path = require('path'); - -var config = require('../../config/environment'); -var sequelize = require('../../models').sequelize; -var MailMessage = require('../../models').MailMessage; -var MailAttachment = require('../../models').MailAttachment; -var MailRoom = require('../../models').MailRoom; -var MailAccount = require('../../models').MailAccount; -var ContactEmail = require('../../models').ContactEmail; -var Contact = require('../../models').Contact; -var User = require('../../models').User; - -// Get list of mail_messages -exports.index = function(req, res, next) { - var params = { - order: 'createdAt DESC', - include: [{ - all: true, - include: [{ - all: true - }] - }] - }; - - switch (req.user.role) { - case 'admin': - params.where = req.query; - break; - case 'agent': - break; - default: - } - - return MailMessage - .findAll(params) - .then(function(mail_messages) { - return res.status(200).send(mail_messages); - }) - .catch(function(err) { - return handleError(res, err, next); - }); -}; - -exports.describe = function(req, res) { - return MailMessage - .describe() - .then(function(fields) { - return res.status(200).send(fields); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get a single mailMessage -exports.show = function(req, res, next) { - return MailMessage - .findById(req.params.id, { - include: [{ - model: MailAttachment - }, { - model: User, - attributes: ['id', 'name', 'fullname', 'email'] - }] - }) - .then(function(mailMessage) { - if (!mailMessage) { - return res.sendStatus(404); - } - return res.send(mailMessage); - }) - .catch(function(err) { - return handleError(res, err, next); - }); -}; - -// Creates a new mailMessage in the DB. -exports.create = function(req, res, next) { - req.body.UserId = req.user.id; - req.body.userName = req.user.name; - req.body.userFullname = req.user.fullname; - req.body.text = req.body.text || htmlToText.fromString(req.body.html, { - wordwrap: false - }); - - return MailAccount - .findOne({ - where: { - address: req.body.from[0] - } - }) - .then(function(account) { - req.body.accountId = account.id; - req.body.accountName = account.name; - - return MailRoom - .create({ - from: req.body.from[0], - subject: req.body.subject, - account: account.name, - mailIn: 0, - mailOut: 1, - status: 'PENDING', - openReason: 'agent', - lastEvent: 'SENDING', - lastEventAt: moment().format('YYYY-MM-DD HH:mm:ss'), - MailAccountId: account.id, - MailMessages: [req.body] - }, { - include: [{ - model: MailMessage, - include: [{ - model: MailAttachment - }] - }] - }); - }) - .then(function(mailRoom) { - return res.status(201).send(mailRoom); - }) - .catch(function(err) { - console.error(err); - return handleError(res, err); - }); -}; - -// Updates an existing mailMessage in the DB. -exports.update = function(req, res, next) { - return MailMessage - .findById(req.params.id, { - include: [{ - all: true - }] - }) - .then(function(mailMessage) { - if (!mailMessage) { - return res.sendStatus(404); - } - var updated = _.merge(mailMessage, req.body); - return updated - .save(); - }) - .then(function(updated) { - return res.status(200).send(updated); - }) - .catch(function(err) { - return handleError(res, err, next); - }); -}; - -// Deletes a mailMessage from the DB. -exports.destroy = function(req, res, next) { - return MailMessage - .findById(req.params.id) - .then(function(mailMessage) { - if (!mailMessage) { - return res.sendStatus(404); - } - return mailMessage - .destroy(); - }).then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err, next); - }); -}; - -// Deletes a mailMessage from the DB. -exports.bulkDelete = function(req, res, next) { - return MailMessage - .bulkUpdate({ - where: { - id: { - $in: req.body.id - } - }, - attributes: { - directory: 'TRASH' - } - }) - .then(function(mailMessage) { - if (!mailMessage) { - return res.sendStatus(404); - } - return mailMessage - .destroy(); - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err, next); - }); -}; - -function handleError(res, err, next) { - return res.status(500).send(err); -} +var _0x9d1b=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x61\x73\x79\x6E\x63","\x68\x74\x6D\x6C\x2D\x74\x6F\x2D\x74\x65\x78\x74","\x66\x6F\x72\x6D\x69\x64\x61\x62\x6C\x65","\x6D\x6F\x6D\x65\x6E\x74","\x70\x61\x74\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x4D\x61\x69\x6C\x4D\x65\x73\x73\x61\x67\x65","\x4D\x61\x69\x6C\x41\x74\x74\x61\x63\x68\x6D\x65\x6E\x74","\x4D\x61\x69\x6C\x52\x6F\x6F\x6D","\x4D\x61\x69\x6C\x41\x63\x63\x6F\x75\x6E\x74","\x43\x6F\x6E\x74\x61\x63\x74\x45\x6D\x61\x69\x6C","\x43\x6F\x6E\x74\x61\x63\x74","\x55\x73\x65\x72","\x69\x6E\x64\x65\x78","\x63\x72\x65\x61\x74\x65\x64\x41\x74\x20\x44\x45\x53\x43","\x77\x68\x65\x72\x65","\x71\x75\x65\x72\x79","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x72\x6F\x6C\x65","\x75\x73\x65\x72","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x66\x69\x6E\x64\x41\x6C\x6C","\x64\x65\x73\x63\x72\x69\x62\x65","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x6E\x61\x6D\x65","\x66\x75\x6C\x6C\x6E\x61\x6D\x65","\x65\x6D\x61\x69\x6C","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x55\x73\x65\x72\x49\x64","\x62\x6F\x64\x79","\x75\x73\x65\x72\x4E\x61\x6D\x65","\x75\x73\x65\x72\x46\x75\x6C\x6C\x6E\x61\x6D\x65","\x74\x65\x78\x74","\x68\x74\x6D\x6C","\x66\x72\x6F\x6D\x53\x74\x72\x69\x6E\x67","\x65\x72\x72\x6F\x72","\x61\x63\x63\x6F\x75\x6E\x74\x49\x64","\x61\x63\x63\x6F\x75\x6E\x74\x4E\x61\x6D\x65","\x66\x72\x6F\x6D","\x73\x75\x62\x6A\x65\x63\x74","\x50\x45\x4E\x44\x49\x4E\x47","\x53\x45\x4E\x44\x49\x4E\x47","\x59\x59\x59\x59\x2D\x4D\x4D\x2D\x44\x44\x20\x48\x48\x3A\x6D\x6D\x3A\x73\x73","\x66\x6F\x72\x6D\x61\x74","\x66\x69\x6E\x64\x4F\x6E\x65","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x64\x65\x73\x74\x72\x6F\x79","\x62\x75\x6C\x6B\x44\x65\x6C\x65\x74\x65","\x54\x52\x41\x53\x48","\x62\x75\x6C\x6B\x55\x70\x64\x61\x74\x65"];_0x9d1b[0];var _=require(_0x9d1b[1]);var async=require(_0x9d1b[2]);var htmlToText=require(_0x9d1b[3]);var formidable=require(_0x9d1b[4]);var moment=require(_0x9d1b[5]);var path=require(_0x9d1b[6]);var config=require(_0x9d1b[7]);var sequelize=require(_0x9d1b[9])[_0x9d1b[8]];var MailMessage=require(_0x9d1b[9])[_0x9d1b[10]];var MailAttachment=require(_0x9d1b[9])[_0x9d1b[11]];var MailRoom=require(_0x9d1b[9])[_0x9d1b[12]];var MailAccount=require(_0x9d1b[9])[_0x9d1b[13]];var ContactEmail=require(_0x9d1b[9])[_0x9d1b[14]];var Contact=require(_0x9d1b[9])[_0x9d1b[15]];var User=require(_0x9d1b[9])[_0x9d1b[16]];exports[_0x9d1b[17]]= function(_0x1f36x10,_0x1f36x11,_0x1f36x12){var _0x1f36x13={order:_0x9d1b[18],include:[{all:true,include:[{all:true}]}]};switch(_0x1f36x10[_0x9d1b[24]][_0x9d1b[23]]){case _0x9d1b[21]:_0x1f36x13[_0x9d1b[19]]= _0x1f36x10[_0x9d1b[20]];break;case _0x9d1b[22]:break;default:};return MailMessage[_0x9d1b[29]](_0x1f36x13)[_0x9d1b[28]](function(_0x1f36x15){return _0x1f36x11[_0x9d1b[27]](200)[_0x9d1b[26]](_0x1f36x15)})[_0x9d1b[25]](function(_0x1f36x14){return handleError(_0x1f36x11,_0x1f36x14,_0x1f36x12)})};exports[_0x9d1b[30]]= function(_0x1f36x10,_0x1f36x11){return MailMessage[_0x9d1b[30]]()[_0x9d1b[28]](function(_0x1f36x16){return _0x1f36x11[_0x9d1b[27]](200)[_0x9d1b[26]](_0x1f36x16)})[_0x9d1b[25]](function(_0x1f36x14){return handleError(_0x1f36x11,_0x1f36x14)})};exports[_0x9d1b[31]]= function(_0x1f36x10,_0x1f36x11,_0x1f36x12){return MailMessage[_0x9d1b[38]](_0x1f36x10[_0x9d1b[34]][_0x9d1b[33]],{include:[{model:MailAttachment},{model:User,attributes:[_0x9d1b[33],_0x9d1b[35],_0x9d1b[36],_0x9d1b[37]]}]})[_0x9d1b[28]](function(_0x1f36x17){if(!_0x1f36x17){return _0x1f36x11[_0x9d1b[32]](404)};return _0x1f36x11[_0x9d1b[26]](_0x1f36x17)})[_0x9d1b[25]](function(_0x1f36x14){return handleError(_0x1f36x11,_0x1f36x14,_0x1f36x12)})};exports[_0x9d1b[39]]= function(_0x1f36x10,_0x1f36x11,_0x1f36x12){_0x1f36x10[_0x9d1b[41]][_0x9d1b[40]]= _0x1f36x10[_0x9d1b[24]][_0x9d1b[33]];_0x1f36x10[_0x9d1b[41]][_0x9d1b[42]]= _0x1f36x10[_0x9d1b[24]][_0x9d1b[35]];_0x1f36x10[_0x9d1b[41]][_0x9d1b[43]]= _0x1f36x10[_0x9d1b[24]][_0x9d1b[36]];_0x1f36x10[_0x9d1b[41]][_0x9d1b[44]]= _0x1f36x10[_0x9d1b[41]][_0x9d1b[44]]|| htmlToText[_0x9d1b[46]](_0x1f36x10[_0x9d1b[41]][_0x9d1b[45]],{wordwrap:false});return MailAccount[_0x9d1b[56]]({where:{address:_0x1f36x10[_0x9d1b[41]][_0x9d1b[50]][0]}})[_0x9d1b[28]](function(_0x1f36x19){_0x1f36x10[_0x9d1b[41]][_0x9d1b[48]]= _0x1f36x19[_0x9d1b[33]];_0x1f36x10[_0x9d1b[41]][_0x9d1b[49]]= _0x1f36x19[_0x9d1b[35]];return MailRoom[_0x9d1b[39]]({from:_0x1f36x10[_0x9d1b[41]][_0x9d1b[50]][0],subject:_0x1f36x10[_0x9d1b[41]][_0x9d1b[51]],account:_0x1f36x19[_0x9d1b[35]],mailIn:0,mailOut:1,status:_0x9d1b[52],openReason:_0x9d1b[22],lastEvent:_0x9d1b[53],lastEventAt:moment()[_0x9d1b[55]](_0x9d1b[54]),MailAccountId:_0x1f36x19[_0x9d1b[33]],MailMessages:[_0x1f36x10[_0x9d1b[41]]]},{include:[{model:MailMessage,include:[{model:MailAttachment}]}]})})[_0x9d1b[28]](function(_0x1f36x18){return _0x1f36x11[_0x9d1b[27]](201)[_0x9d1b[26]](_0x1f36x18)})[_0x9d1b[25]](function(_0x1f36x14){console[_0x9d1b[47]](_0x1f36x14);return handleError(_0x1f36x11,_0x1f36x14)})};exports[_0x9d1b[57]]= function(_0x1f36x10,_0x1f36x11,_0x1f36x12){return MailMessage[_0x9d1b[38]](_0x1f36x10[_0x9d1b[34]][_0x9d1b[33]],{include:[{all:true}]})[_0x9d1b[28]](function(_0x1f36x17){if(!_0x1f36x17){return _0x1f36x11[_0x9d1b[32]](404)};var _0x1f36x1a=_[_0x9d1b[58]](_0x1f36x17,_0x1f36x10[_0x9d1b[41]]);return _0x1f36x1a[_0x9d1b[59]]()})[_0x9d1b[28]](function(_0x1f36x1a){return _0x1f36x11[_0x9d1b[27]](200)[_0x9d1b[26]](_0x1f36x1a)})[_0x9d1b[25]](function(_0x1f36x14){return handleError(_0x1f36x11,_0x1f36x14,_0x1f36x12)})};exports[_0x9d1b[60]]= function(_0x1f36x10,_0x1f36x11,_0x1f36x12){return MailMessage[_0x9d1b[38]](_0x1f36x10[_0x9d1b[34]][_0x9d1b[33]])[_0x9d1b[28]](function(_0x1f36x17){if(!_0x1f36x17){return _0x1f36x11[_0x9d1b[32]](404)};return _0x1f36x17[_0x9d1b[60]]()})[_0x9d1b[28]](function(){return _0x1f36x11[_0x9d1b[32]](204)})[_0x9d1b[25]](function(_0x1f36x14){return handleError(_0x1f36x11,_0x1f36x14,_0x1f36x12)})};exports[_0x9d1b[61]]= function(_0x1f36x10,_0x1f36x11,_0x1f36x12){return MailMessage[_0x9d1b[63]]({where:{id:{$in:_0x1f36x10[_0x9d1b[41]][_0x9d1b[33]]}},attributes:{directory:_0x9d1b[62]}})[_0x9d1b[28]](function(_0x1f36x17){if(!_0x1f36x17){return _0x1f36x11[_0x9d1b[32]](404)};return _0x1f36x17[_0x9d1b[60]]()})[_0x9d1b[28]](function(){return _0x1f36x11[_0x9d1b[32]](204)})[_0x9d1b[25]](function(_0x1f36x14){return handleError(_0x1f36x11,_0x1f36x14,_0x1f36x12)})};function handleError(_0x1f36x11,_0x1f36x14,_0x1f36x12){return _0x1f36x11[_0x9d1b[27]](500)[_0x9d1b[26]](_0x1f36x14)} \ No newline at end of file diff --git a/server/api/mail_message/mail_message.events.js b/server/api/mail_message/mail_message.events.js index c7fe99a..cf68187 100644 --- a/server/api/mail_message/mail_message.events.js +++ b/server/api/mail_message/mail_message.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const MailMessage = require('../../models').MailMessage; - -var MailMessageEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -MailMessageEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - MailMessage.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - MailMessageEvents.emit(event + ':' + doc._id, doc); - MailMessageEvents.emit(event, doc); - done(null); - } -} - -module.exports = MailMessageEvents; +var _0xf2ba=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x4D\x61\x69\x6C\x4D\x65\x73\x73\x61\x67\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xf2ba[0];const EventEmitter=require(_0xf2ba[1]);const MailMessage=require(_0xf2ba[3])[_0xf2ba[2]];var MailMessageEvents= new EventEmitter();MailMessageEvents[_0xf2ba[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xf2ba[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xf2ba[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xf2ba[6]};for(var e in events){var event=events[e];MailMessage[_0xf2ba[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x839fx8,_0x839fx9,_0x839fxa){MailMessageEvents[_0xf2ba[10]](event+ _0xf2ba[8]+ _0x839fx8[_0xf2ba[9]],_0x839fx8);MailMessageEvents[_0xf2ba[10]](event,_0x839fx8);_0x839fxa(null)}}module[_0xf2ba[11]]= MailMessageEvents \ No newline at end of file diff --git a/server/api/mail_message/mail_message.socket.js b/server/api/mail_message/mail_message.socket.js index bfe4369..cdb8a7f 100644 --- a/server/api/mail_message/mail_message.socket.js +++ b/server/api/mail_message/mail_message.socket.js @@ -1,28 +1 @@ -'use strict'; - -const MailMessageEvents = require('./mail_message.events'); - -// Model events to emit -var events = ['save', 'save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('mail_message:' + event, socket); - - MailMessageEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - MailMessageEvents.removeListener(event, listener); - }; -} +var _0x3de8=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x6D\x61\x69\x6C\x5F\x6D\x65\x73\x73\x61\x67\x65\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x6D\x61\x69\x6C\x5F\x6D\x65\x73\x73\x61\x67\x65\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x3de8[0];const MailMessageEvents=require(_0x3de8[1]);var events=[_0x3de8[2],_0x3de8[2],_0x3de8[3]];exports[_0x3de8[4]]= function(_0x1c9fx3){for(var _0x1c9fx4=0,_0x1c9fx5=events[_0x3de8[5]];_0x1c9fx4< _0x1c9fx5;_0x1c9fx4++){var _0x1c9fx6=events[_0x1c9fx4];var _0x1c9fx7=createListener(_0x3de8[6]+ _0x1c9fx6,_0x1c9fx3);MailMessageEvents[_0x3de8[7]](_0x1c9fx6,_0x1c9fx7);_0x1c9fx3[_0x3de8[7]](_0x3de8[8],removeListener(_0x1c9fx6,_0x1c9fx7))}};function createListener(_0x1c9fx6,_0x1c9fx3){return function(_0x1c9fx9){_0x1c9fx3[_0x3de8[9]](_0x1c9fx6,_0x1c9fx9)}}function removeListener(_0x1c9fx6,_0x1c9fx7){return function(){MailMessageEvents[_0x3de8[10]](_0x1c9fx6,_0x1c9fx7)}} \ No newline at end of file diff --git a/server/api/mail_queue/index.js b/server/api/mail_queue/index.js index 16acbca..511bf82 100644 --- a/server/api/mail_queue/index.js +++ b/server/api/mail_queue/index.js @@ -1,21 +1 @@ -'use strict'; - -var express = require('express'); - -var controller = require('./mail_queue.controller'); -var auth = require('../../auth/auth.service'); -var license = require('../../config/license/license.service'); - -var router = express.Router(); - -router.get('/', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin']), controller.index); -router.get('/:id', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin']), controller.show); -router.get('/:id/agents', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin']), controller.showAgents); -router.post('/', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasRole('admin'), controller.create); -router.post('/:id/agents', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasRole('admin'), controller.addAgents); -router.put('/:id', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasRole('admin'), controller.update); -router.delete('/', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasRole('admin'), controller.bulkDestroy); -router.delete('/:id', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasRole('admin'), controller.destroy); -router.delete('/:id/agents', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasRole('admin'), controller.removeAgents); - -module.exports = router; +var _0xa8b9=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x6D\x61\x69\x6C\x5F\x71\x75\x65\x75\x65\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x68\x61\x73\x4D\x61\x69\x6C","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x2F\x3A\x69\x64\x2F\x61\x67\x65\x6E\x74\x73","\x73\x68\x6F\x77\x41\x67\x65\x6E\x74\x73","\x68\x61\x73\x52\x6F\x6C\x65","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x61\x64\x64\x41\x67\x65\x6E\x74\x73","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x72\x65\x6D\x6F\x76\x65\x41\x67\x65\x6E\x74\x73","\x65\x78\x70\x6F\x72\x74\x73"];_0xa8b9[0];var express=require(_0xa8b9[1]);var controller=require(_0xa8b9[2]);var auth=require(_0xa8b9[3]);var license=require(_0xa8b9[4]);var router=express.Router();router[_0xa8b9[12]](_0xa8b9[5],license[_0xa8b9[6]](),license[_0xa8b9[7]](),auth[_0xa8b9[8]](),auth[_0xa8b9[10]]([9],[_0xa8b9[9]]),controller[_0xa8b9[11]]);router[_0xa8b9[12]](_0xa8b9[13],license[_0xa8b9[6]](),license[_0xa8b9[7]](),auth[_0xa8b9[8]](),auth[_0xa8b9[10]]([9],[_0xa8b9[9]]),controller[_0xa8b9[14]]);router[_0xa8b9[12]](_0xa8b9[15],license[_0xa8b9[6]](),license[_0xa8b9[7]](),auth[_0xa8b9[8]](),auth[_0xa8b9[10]]([9],[_0xa8b9[9]]),controller[_0xa8b9[16]]);router[_0xa8b9[19]](_0xa8b9[5],license[_0xa8b9[6]](),license[_0xa8b9[7]](),auth[_0xa8b9[8]](),auth[_0xa8b9[17]](_0xa8b9[9]),controller[_0xa8b9[18]]);router[_0xa8b9[19]](_0xa8b9[15],license[_0xa8b9[6]](),license[_0xa8b9[7]](),auth[_0xa8b9[8]](),auth[_0xa8b9[17]](_0xa8b9[9]),controller[_0xa8b9[20]]);router[_0xa8b9[22]](_0xa8b9[13],license[_0xa8b9[6]](),license[_0xa8b9[7]](),auth[_0xa8b9[8]](),auth[_0xa8b9[17]](_0xa8b9[9]),controller[_0xa8b9[21]]);router[_0xa8b9[24]](_0xa8b9[5],license[_0xa8b9[6]](),license[_0xa8b9[7]](),auth[_0xa8b9[8]](),auth[_0xa8b9[17]](_0xa8b9[9]),controller[_0xa8b9[23]]);router[_0xa8b9[24]](_0xa8b9[13],license[_0xa8b9[6]](),license[_0xa8b9[7]](),auth[_0xa8b9[8]](),auth[_0xa8b9[17]](_0xa8b9[9]),controller[_0xa8b9[25]]);router[_0xa8b9[24]](_0xa8b9[15],license[_0xa8b9[6]](),license[_0xa8b9[7]](),auth[_0xa8b9[8]](),auth[_0xa8b9[17]](_0xa8b9[9]),controller[_0xa8b9[26]]);module[_0xa8b9[27]]= router \ No newline at end of file diff --git a/server/api/mail_queue/mail_queue.controller.js b/server/api/mail_queue/mail_queue.controller.js index 8824524..37789ee 100644 --- a/server/api/mail_queue/mail_queue.controller.js +++ b/server/api/mail_queue/mail_queue.controller.js @@ -1,235 +1 @@ -'use strict'; - -var _ = require('lodash'); -var util = require('util'); -var Util = require('../../config/util'); - -var sequelize = require('../../models').sequelize; - -var MailQueue = require('../../models').MailQueue; -var User = require('../../models').User; -var UserHasMailQueue = require('../../models').UserHasMailQueue; - -// Get list of mailQueues -exports.index = function(req, res) { - switch (req.user.role) { - case 'user': - return User - .findById(req.user.id, { - attributes: ['id'] - }) - .then(Util.getMailQueuesIdByUser(req.query)) - .then(function(result) { - res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); - - default: - return MailQueue - .scope('default') - .findAndCountAll(_.merge(Util.getQuery(req.query), { - distinct: true - })) - .then(function(result) { - res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); - } -}; - -// Get a single mailQueue -exports.show = function(req, res) { - return MailQueue - .scope('default') - .findById(req.params.id) - .then(function(mailQueue) { - if (!mailQueue) { - return res.sendStatus(404); - } - return res.send(mailQueue); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Creates a new mailQueue in the DB. -exports.create = function(req, res) { - var _mailQueue; - - return MailQueue - .create(req.body) - .then(function(mailQueue) { - _mailQueue = mailQueue; - - if (req.body.agents) { - return _mailQueue - .addUsers(req.body.agents, { - penalty: req.body.penalty || 0, - queue: _mailQueue.name - }); - } - }) - .then(function() { - return res.status(201).send(_mailQueue); - }) - .catch(sequelize.UniqueConstraintError, function(err) { - return Util.errorManager.handleUniqueConstraintError(res, err); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Updates an existing mailQueue in the DB. -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - return MailQueue - .findById(req.params.id) - .then(function(mailQueue) { - if (!mailQueue) { - return res.sendStatus(404); - } - var updated = _.merge(mailQueue, req.body); - return updated - .save(); - }) - .then(function(mailQueue) { - return res.status(200).send(mailQueue); - }) - .catch(sequelize.UniqueConstraintError, function(err) { - return Util.errorManager.handleUniqueConstraintError(res, err); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Updates an existing user_has_mailQueue in the DB. -exports.addAgents = function(req, res, next) { - return MailQueue - .findById(req.params.id) - .then(function(mailQueue) { - if (!mailQueue) { - return res.sendStatus(404); - } - var userHasMailQueues = _.map(req.body.agents, function(agent) { - return { - UserId: agent, - penalty: req.body.penalty, - MailQueueId: mailQueue.id, - queue: mailQueue.name - }; - }); - - return UserHasMailQueue - .bulkCreate(userHasMailQueues, { - individualHooks: true - }); - }) - .then(function() { - return res.sendStatus(200); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.removeAgents = function(req, res) { - return MailQueue - .findById(req.params.id) - .then(function(queue) { - if (!queue) { - return res.sendStatus(404); - } - return queue - .removeUsers(req.query.agents, { - individualHooks: true - }); - }) - .then(function() { - return res.sendStatus(200); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes a mailQueue from the DB. -exports.destroy = function(req, res) { - var _mailQueue; - - return MailQueue - .findById(req.params.id) - .then(function(mailQueue) { - _mailQueue = mailQueue; - if (!mailQueue) { - return res.sendStatus(404); - } - return mailQueue - .destroy(); - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(sequelize.ForeignKeyConstraintError, function(err) { - return Util.errorManager.handleForeignKeyConstraintError(res, 'queue', _mailQueue.name, err); - }) - .catch(function(err) { - console.error('err', err); - return handleError(res, err); - }); -}; - -// Deletes a agent from the DB. -exports.bulkDestroy = function(req, res) { - return MailQueue - .destroy({ - where: { - id: req.query.ids - }, - individualHooks: true - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.showAgents = function(req, res) { - return MailQueue - .findById(req.params.id) - .then(function(queue) { - if (!queue) { - return res.sendStatus(404); - } - return queue - .getUsers({ - where: { - role: 'agent' - }, - attributes: ['id', 'name', 'fullname', 'email'] - }); - }) - .then(function(agents) { - return res.status(200).send({ - rows: agents, - count: agents.length - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0x38da=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x75\x74\x69\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x4D\x61\x69\x6C\x51\x75\x65\x75\x65","\x55\x73\x65\x72","\x55\x73\x65\x72\x48\x61\x73\x4D\x61\x69\x6C\x51\x75\x65\x75\x65","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x4D\x61\x69\x6C\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x69\x64","\x75\x73\x65\x72","\x66\x69\x6E\x64\x42\x79\x49\x64","\x67\x65\x74\x51\x75\x65\x72\x79","\x6D\x65\x72\x67\x65","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x64\x65\x66\x61\x75\x6C\x74","\x73\x63\x6F\x70\x65","\x72\x6F\x6C\x65","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x70\x61\x72\x61\x6D\x73","\x63\x72\x65\x61\x74\x65","\x68\x61\x6E\x64\x6C\x65\x55\x6E\x69\x71\x75\x65\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74\x45\x72\x72\x6F\x72","\x65\x72\x72\x6F\x72\x4D\x61\x6E\x61\x67\x65\x72","\x61\x67\x65\x6E\x74\x73","\x62\x6F\x64\x79","\x70\x65\x6E\x61\x6C\x74\x79","\x6E\x61\x6D\x65","\x61\x64\x64\x55\x73\x65\x72\x73","\x75\x70\x64\x61\x74\x65","\x73\x61\x76\x65","\x61\x64\x64\x41\x67\x65\x6E\x74\x73","\x6D\x61\x70","\x62\x75\x6C\x6B\x43\x72\x65\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65\x41\x67\x65\x6E\x74\x73","\x72\x65\x6D\x6F\x76\x65\x55\x73\x65\x72\x73","\x64\x65\x73\x74\x72\x6F\x79","\x65\x72\x72","\x65\x72\x72\x6F\x72","\x71\x75\x65\x75\x65","\x68\x61\x6E\x64\x6C\x65\x46\x6F\x72\x65\x69\x67\x6E\x4B\x65\x79\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74\x45\x72\x72\x6F\x72","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73","\x73\x68\x6F\x77\x41\x67\x65\x6E\x74\x73","\x6C\x65\x6E\x67\x74\x68","\x61\x67\x65\x6E\x74","\x66\x75\x6C\x6C\x6E\x61\x6D\x65","\x65\x6D\x61\x69\x6C","\x67\x65\x74\x55\x73\x65\x72\x73"];_0x38da[0];var _=require(_0x38da[1]);var util=require(_0x38da[2]);var Util=require(_0x38da[3]);var sequelize=require(_0x38da[5])[_0x38da[4]];var MailQueue=require(_0x38da[5])[_0x38da[6]];var User=require(_0x38da[5])[_0x38da[7]];var UserHasMailQueue=require(_0x38da[5])[_0x38da[8]];exports[_0x38da[9]]= function(_0x5731x8,_0x5731x9){switch(_0x5731x8[_0x38da[17]][_0x38da[24]]){case _0x38da[17]:return User[_0x38da[18]](_0x5731x8[_0x38da[17]][_0x38da[16]],{attributes:[_0x38da[16]]})[_0x38da[13]](Util[_0x38da[15]](_0x5731x8[_0x38da[14]]))[_0x38da[13]](function(_0x5731xb){_0x5731x9[_0x38da[12]](200)[_0x38da[11]](_0x5731xb)})[_0x38da[10]](function(_0x5731xa){return handleError(_0x5731x9,_0x5731xa)});default:return MailQueue[_0x38da[23]](_0x38da[22])[_0x38da[21]](_[_0x38da[20]](Util[_0x38da[19]](_0x5731x8[_0x38da[14]]),{distinct:true}))[_0x38da[13]](function(_0x5731xb){_0x5731x9[_0x38da[12]](200)[_0x38da[11]](_0x5731xb)})[_0x38da[10]](function(_0x5731xa){return handleError(_0x5731x9,_0x5731xa)})}};exports[_0x38da[25]]= function(_0x5731x8,_0x5731x9){return MailQueue[_0x38da[23]](_0x38da[22])[_0x38da[18]](_0x5731x8[_0x38da[27]][_0x38da[16]])[_0x38da[13]](function(_0x5731xc){if(!_0x5731xc){return _0x5731x9[_0x38da[26]](404)};return _0x5731x9[_0x38da[11]](_0x5731xc)})[_0x38da[10]](function(_0x5731xa){return handleError(_0x5731x9,_0x5731xa)})};exports[_0x38da[28]]= function(_0x5731x8,_0x5731x9){var _0x5731xd;return MailQueue[_0x38da[28]](_0x5731x8[_0x38da[32]])[_0x38da[13]](function(_0x5731xc){_0x5731xd= _0x5731xc;if(_0x5731x8[_0x38da[32]][_0x38da[31]]){return _0x5731xd[_0x38da[35]](_0x5731x8[_0x38da[32]][_0x38da[31]],{penalty:_0x5731x8[_0x38da[32]][_0x38da[33]]|| 0,queue:_0x5731xd[_0x38da[34]]})}})[_0x38da[13]](function(){return _0x5731x9[_0x38da[12]](201)[_0x38da[11]](_0x5731xd)})[_0x38da[10]](sequelize.UniqueConstraintError,function(_0x5731xa){return Util[_0x38da[30]][_0x38da[29]](_0x5731x9,_0x5731xa)})[_0x38da[10]](function(_0x5731xa){return handleError(_0x5731x9,_0x5731xa)})};exports[_0x38da[36]]= function(_0x5731x8,_0x5731x9){if(_0x5731x8[_0x38da[32]][_0x38da[16]]){delete _0x5731x8[_0x38da[32]][_0x38da[16]]};return MailQueue[_0x38da[18]](_0x5731x8[_0x38da[27]][_0x38da[16]])[_0x38da[13]](function(_0x5731xc){if(!_0x5731xc){return _0x5731x9[_0x38da[26]](404)};var _0x5731xe=_[_0x38da[20]](_0x5731xc,_0x5731x8[_0x38da[32]]);return _0x5731xe[_0x38da[37]]()})[_0x38da[13]](function(_0x5731xc){return _0x5731x9[_0x38da[12]](200)[_0x38da[11]](_0x5731xc)})[_0x38da[10]](sequelize.UniqueConstraintError,function(_0x5731xa){return Util[_0x38da[30]][_0x38da[29]](_0x5731x9,_0x5731xa)})[_0x38da[10]](function(_0x5731xa){return handleError(_0x5731x9,_0x5731xa)})};exports[_0x38da[38]]= function(_0x5731x8,_0x5731x9,_0x5731xf){return MailQueue[_0x38da[18]](_0x5731x8[_0x38da[27]][_0x38da[16]])[_0x38da[13]](function(_0x5731xc){if(!_0x5731xc){return _0x5731x9[_0x38da[26]](404)};var _0x5731x10=_[_0x38da[39]](_0x5731x8[_0x38da[32]][_0x38da[31]],function(_0x5731x11){return {UserId:_0x5731x11,penalty:_0x5731x8[_0x38da[32]][_0x38da[33]],MailQueueId:_0x5731xc[_0x38da[16]],queue:_0x5731xc[_0x38da[34]]}});return UserHasMailQueue[_0x38da[40]](_0x5731x10,{individualHooks:true})})[_0x38da[13]](function(){return _0x5731x9[_0x38da[26]](200)})[_0x38da[10]](function(_0x5731xa){return handleError(_0x5731x9,_0x5731xa)})};exports[_0x38da[41]]= function(_0x5731x8,_0x5731x9){return MailQueue[_0x38da[18]](_0x5731x8[_0x38da[27]][_0x38da[16]])[_0x38da[13]](function(_0x5731x12){if(!_0x5731x12){return _0x5731x9[_0x38da[26]](404)};return _0x5731x12[_0x38da[42]](_0x5731x8[_0x38da[14]][_0x38da[31]],{individualHooks:true})})[_0x38da[13]](function(){return _0x5731x9[_0x38da[26]](200)})[_0x38da[10]](function(_0x5731xa){return handleError(_0x5731x9,_0x5731xa)})};exports[_0x38da[43]]= function(_0x5731x8,_0x5731x9){var _0x5731xd;return MailQueue[_0x38da[18]](_0x5731x8[_0x38da[27]][_0x38da[16]])[_0x38da[13]](function(_0x5731xc){_0x5731xd= _0x5731xc;if(!_0x5731xc){return _0x5731x9[_0x38da[26]](404)};return _0x5731xc[_0x38da[43]]()})[_0x38da[13]](function(){return _0x5731x9[_0x38da[26]](204)})[_0x38da[10]](sequelize.ForeignKeyConstraintError,function(_0x5731xa){return Util[_0x38da[30]][_0x38da[47]](_0x5731x9,_0x38da[46],_0x5731xd[_0x38da[34]],_0x5731xa)})[_0x38da[10]](function(_0x5731xa){console[_0x38da[45]](_0x38da[44],_0x5731xa);return handleError(_0x5731x9,_0x5731xa)})};exports[_0x38da[48]]= function(_0x5731x8,_0x5731x9){return MailQueue[_0x38da[43]]({where:{id:_0x5731x8[_0x38da[14]][_0x38da[49]]},individualHooks:true})[_0x38da[13]](function(){return _0x5731x9[_0x38da[26]](204)})[_0x38da[10]](function(_0x5731xa){return handleError(_0x5731x9,_0x5731xa)})};exports[_0x38da[50]]= function(_0x5731x8,_0x5731x9){return MailQueue[_0x38da[18]](_0x5731x8[_0x38da[27]][_0x38da[16]])[_0x38da[13]](function(_0x5731x12){if(!_0x5731x12){return _0x5731x9[_0x38da[26]](404)};return _0x5731x12[_0x38da[55]]({where:{role:_0x38da[52]},attributes:[_0x38da[16],_0x38da[34],_0x38da[53],_0x38da[54]]})})[_0x38da[13]](function(_0x5731x13){return _0x5731x9[_0x38da[12]](200)[_0x38da[11]]({rows:_0x5731x13,count:_0x5731x13[_0x38da[51]]})})[_0x38da[10]](function(_0x5731xa){return handleError(_0x5731x9,_0x5731xa)})};function handleError(_0x5731x9,_0x5731xa){return _0x5731x9[_0x38da[12]](500)[_0x38da[11]](_0x5731xa)} \ No newline at end of file diff --git a/server/api/mail_queue/mail_queue.events.js b/server/api/mail_queue/mail_queue.events.js index 7f926cc..55659c1 100644 --- a/server/api/mail_queue/mail_queue.events.js +++ b/server/api/mail_queue/mail_queue.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const MailQueue = require('../../models').MailQueue; - -var MailQueueEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -MailQueueEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - MailQueue.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - MailQueueEvents.emit(event + ':' + doc._id, doc); - MailQueueEvents.emit(event, doc); - done(null); - } -} - -module.exports = MailQueueEvents; +var _0x3ab2=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x4D\x61\x69\x6C\x51\x75\x65\x75\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x3ab2[0];const EventEmitter=require(_0x3ab2[1]);const MailQueue=require(_0x3ab2[3])[_0x3ab2[2]];var MailQueueEvents= new EventEmitter();MailQueueEvents[_0x3ab2[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x3ab2[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x3ab2[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x3ab2[6]};for(var e in events){var event=events[e];MailQueue[_0x3ab2[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xe328x8,_0xe328x9,_0xe328xa){MailQueueEvents[_0x3ab2[10]](event+ _0x3ab2[8]+ _0xe328x8[_0x3ab2[9]],_0xe328x8);MailQueueEvents[_0x3ab2[10]](event,_0xe328x8);_0xe328xa(null)}}module[_0x3ab2[11]]= MailQueueEvents \ No newline at end of file diff --git a/server/api/mail_queue/mail_queue.socket.js b/server/api/mail_queue/mail_queue.socket.js index dca86ad..1202d60 100644 --- a/server/api/mail_queue/mail_queue.socket.js +++ b/server/api/mail_queue/mail_queue.socket.js @@ -1,28 +1 @@ -'use strict'; - -const MailQueueEvents = require('./mail_queue.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('mail_queue:' + event, socket); - - MailQueueEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - MailQueueEvents.removeListener(event, listener); - }; -} +var _0xbf6c=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x6D\x61\x69\x6C\x5F\x71\x75\x65\x75\x65\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x6D\x61\x69\x6C\x5F\x71\x75\x65\x75\x65\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xbf6c[0];const MailQueueEvents=require(_0xbf6c[1]);var events=[_0xbf6c[2],_0xbf6c[3]];exports[_0xbf6c[4]]= function(_0x524ex3){for(var _0x524ex4=0,_0x524ex5=events[_0xbf6c[5]];_0x524ex4< _0x524ex5;_0x524ex4++){var _0x524ex6=events[_0x524ex4];var _0x524ex7=createListener(_0xbf6c[6]+ _0x524ex6,_0x524ex3);MailQueueEvents[_0xbf6c[7]](_0x524ex6,_0x524ex7);_0x524ex3[_0xbf6c[7]](_0xbf6c[8],removeListener(_0x524ex6,_0x524ex7))}};function createListener(_0x524ex6,_0x524ex3){return function(_0x524ex9){_0x524ex3[_0xbf6c[9]](_0x524ex6,_0x524ex9)}}function removeListener(_0x524ex6,_0x524ex7){return function(){MailQueueEvents[_0xbf6c[10]](_0x524ex6,_0x524ex7)}} \ No newline at end of file diff --git a/server/api/mail_room/index.js b/server/api/mail_room/index.js index 376f392..d902eaa 100644 --- a/server/api/mail_room/index.js +++ b/server/api/mail_room/index.js @@ -1,32 +1 @@ -'use strict'; - -var express = require('express'); - -var controller = require('./mail_room.controller'); -var auth = require('../../auth/auth.service'); -var license = require('../../config/license/license.service'); - -var router = express.Router(); - -// TODO endpoint to filter just NEW/OPEN -router.get('/', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin']), controller.index); -router.get('/inbox', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin', 'agent']), controller.inbox); -router.get('/describe', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin']), controller.describe); -router.get('/pending', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9, 17], ['admin']), controller.pending); -router.get('/new', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9, 17], ['admin']), controller.new); -router.get('/open', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9, 17], ['admin']), controller.open); -router.get('/closed', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9, 17], ['admin']), controller.closed); -router.get('/agent/:id', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin']), controller.agentIndex); -router.get('/messages/:id', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin', 'agent']), controller.getRoomByMessage); -router.get('/:id', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin', 'user', 'agent']), controller.show); -router.get('/:id/agents', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin', 'agent']), controller.showAgents); -router.post('/', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin']), controller.create); -router.post('/:id/messages/send', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin', 'agent']), controller.sendMessage); -// router.post('/:id/messages/receive', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin', 'agent']), controller.receiveMessage); -router.put('/:id', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin', 'agent']), controller.update); -router.patch('/:id', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin', 'agent']), controller.updatePatch); -router.put('/:id/agents', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin', 'agent']), controller.updateAgents); -router.delete('/', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin']), controller.bulkDestroy); -router.delete('/:id', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin']), controller.destroy); - -module.exports = router; +var _0x5437=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x6D\x61\x69\x6C\x5F\x72\x6F\x6F\x6D\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x68\x61\x73\x4D\x61\x69\x6C","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x69\x6E\x62\x6F\x78","\x61\x67\x65\x6E\x74","\x69\x6E\x62\x6F\x78","\x2F\x64\x65\x73\x63\x72\x69\x62\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x2F\x70\x65\x6E\x64\x69\x6E\x67","\x70\x65\x6E\x64\x69\x6E\x67","\x2F\x6E\x65\x77","\x6E\x65\x77","\x2F\x6F\x70\x65\x6E","\x6F\x70\x65\x6E","\x2F\x63\x6C\x6F\x73\x65\x64","\x63\x6C\x6F\x73\x65\x64","\x2F\x61\x67\x65\x6E\x74\x2F\x3A\x69\x64","\x61\x67\x65\x6E\x74\x49\x6E\x64\x65\x78","\x2F\x6D\x65\x73\x73\x61\x67\x65\x73\x2F\x3A\x69\x64","\x67\x65\x74\x52\x6F\x6F\x6D\x42\x79\x4D\x65\x73\x73\x61\x67\x65","\x2F\x3A\x69\x64","\x75\x73\x65\x72","\x73\x68\x6F\x77","\x2F\x3A\x69\x64\x2F\x61\x67\x65\x6E\x74\x73","\x73\x68\x6F\x77\x41\x67\x65\x6E\x74\x73","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x2F\x3A\x69\x64\x2F\x6D\x65\x73\x73\x61\x67\x65\x73\x2F\x73\x65\x6E\x64","\x73\x65\x6E\x64\x4D\x65\x73\x73\x61\x67\x65","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x75\x70\x64\x61\x74\x65\x50\x61\x74\x63\x68","\x70\x61\x74\x63\x68","\x75\x70\x64\x61\x74\x65\x41\x67\x65\x6E\x74\x73","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0x5437[0];var express=require(_0x5437[1]);var controller=require(_0x5437[2]);var auth=require(_0x5437[3]);var license=require(_0x5437[4]);var router=express.Router();router[_0x5437[12]](_0x5437[5],license[_0x5437[6]](),license[_0x5437[7]](),auth[_0x5437[8]](),auth[_0x5437[10]]([9],[_0x5437[9]]),controller[_0x5437[11]]);router[_0x5437[12]](_0x5437[13],license[_0x5437[6]](),license[_0x5437[7]](),auth[_0x5437[8]](),auth[_0x5437[10]]([9],[_0x5437[9],_0x5437[14]]),controller[_0x5437[15]]);router[_0x5437[12]](_0x5437[16],license[_0x5437[6]](),license[_0x5437[7]](),auth[_0x5437[8]](),auth[_0x5437[10]]([9],[_0x5437[9]]),controller[_0x5437[17]]);router[_0x5437[12]](_0x5437[18],license[_0x5437[6]](),license[_0x5437[7]](),auth[_0x5437[8]](),auth[_0x5437[10]]([9,17],[_0x5437[9]]),controller[_0x5437[19]]);router[_0x5437[12]](_0x5437[20],license[_0x5437[6]](),license[_0x5437[7]](),auth[_0x5437[8]](),auth[_0x5437[10]]([9,17],[_0x5437[9]]),controller[_0x5437[21]]);router[_0x5437[12]](_0x5437[22],license[_0x5437[6]](),license[_0x5437[7]](),auth[_0x5437[8]](),auth[_0x5437[10]]([9,17],[_0x5437[9]]),controller[_0x5437[23]]);router[_0x5437[12]](_0x5437[24],license[_0x5437[6]](),license[_0x5437[7]](),auth[_0x5437[8]](),auth[_0x5437[10]]([9,17],[_0x5437[9]]),controller[_0x5437[25]]);router[_0x5437[12]](_0x5437[26],license[_0x5437[6]](),license[_0x5437[7]](),auth[_0x5437[8]](),auth[_0x5437[10]]([9],[_0x5437[9]]),controller[_0x5437[27]]);router[_0x5437[12]](_0x5437[28],license[_0x5437[6]](),license[_0x5437[7]](),auth[_0x5437[8]](),auth[_0x5437[10]]([9],[_0x5437[9],_0x5437[14]]),controller[_0x5437[29]]);router[_0x5437[12]](_0x5437[30],license[_0x5437[6]](),license[_0x5437[7]](),auth[_0x5437[8]](),auth[_0x5437[10]]([9],[_0x5437[9],_0x5437[31],_0x5437[14]]),controller[_0x5437[32]]);router[_0x5437[12]](_0x5437[33],license[_0x5437[6]](),license[_0x5437[7]](),auth[_0x5437[8]](),auth[_0x5437[10]]([9],[_0x5437[9],_0x5437[14]]),controller[_0x5437[34]]);router[_0x5437[36]](_0x5437[5],license[_0x5437[6]](),license[_0x5437[7]](),auth[_0x5437[8]](),auth[_0x5437[10]]([9],[_0x5437[9]]),controller[_0x5437[35]]);router[_0x5437[36]](_0x5437[37],license[_0x5437[6]](),license[_0x5437[7]](),auth[_0x5437[8]](),auth[_0x5437[10]]([9],[_0x5437[9],_0x5437[14]]),controller[_0x5437[38]]);router[_0x5437[40]](_0x5437[30],license[_0x5437[6]](),license[_0x5437[7]](),auth[_0x5437[8]](),auth[_0x5437[10]]([9],[_0x5437[9],_0x5437[14]]),controller[_0x5437[39]]);router[_0x5437[42]](_0x5437[30],license[_0x5437[6]](),license[_0x5437[7]](),auth[_0x5437[8]](),auth[_0x5437[10]]([9],[_0x5437[9],_0x5437[14]]),controller[_0x5437[41]]);router[_0x5437[40]](_0x5437[33],license[_0x5437[6]](),license[_0x5437[7]](),auth[_0x5437[8]](),auth[_0x5437[10]]([9],[_0x5437[9],_0x5437[14]]),controller[_0x5437[43]]);router[_0x5437[45]](_0x5437[5],license[_0x5437[6]](),license[_0x5437[7]](),auth[_0x5437[8]](),auth[_0x5437[10]]([9],[_0x5437[9]]),controller[_0x5437[44]]);router[_0x5437[45]](_0x5437[30],license[_0x5437[6]](),license[_0x5437[7]](),auth[_0x5437[8]](),auth[_0x5437[10]]([9],[_0x5437[9]]),controller[_0x5437[46]]);module[_0x5437[47]]= router \ No newline at end of file diff --git a/server/api/mail_room/mail_room.controller.js b/server/api/mail_room/mail_room.controller.js index 4d07489..464135e 100644 --- a/server/api/mail_room/mail_room.controller.js +++ b/server/api/mail_room/mail_room.controller.js @@ -1,479 +1 @@ -'use strict'; - -var _ = require('lodash'); -var util = require('util'); -var htmlToText = require('html-to-text'); - -var Util = require('../../config/util'); -var moment = require('moment'); - -var sequelize = require('../../models').sequelize; -var User = require('../../models').User; -var Agent = require('../../models').User; -var Contact = require('../../models').Contact; -var Status = require('../../models').MailRoomStatus; -var MailRoom = require('../../models').MailRoom; -var MailMessage = require('../../models').MailMessage; -var MailAccount = require('../../models').MailAccount; -var MailApplication = require('../../models').MailApplication; -var MailQueue = require('../../models').MailQueue; -var MailAttachment = require('../../models').MailAttachment; - -// Get list of mailRooms -exports.index = function(req, res, next) { - return MailRoom - .scope('default') - .findAndCountAll(Util.getQuery(req.query)) - .then(function(result) { - return res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get list of fields -exports.describe = function(req, res) { - return MailRoom - .describe() - .then(function(fields) { - return res.status(200).send(fields); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function getMailQueues(user) { - return function() { - switch (user.role) { - case 'user': - return User - .findById(user.id, { - attributes: ['id'] - }) - .then(Util.getMailQueuesIdByUser({}, { - attributes: ['id'] - })) - .then(function(userQueues) { - return { - include: { - model: MailAccount, - include: { - model: MailApplication, - include: { - model: MailQueue, - where: { - id: _.map(userQueues, 'id') - } - } - } - } - }; - }); - default: - return {}; - } - } -} - -exports.pending = function(req, res) { - return Promise - .all([]) - .then(getMailQueues(req.user)) - .then(function(condition) { - return MailRoom - .count(_.merge(Util.getQuery(req.query, { - status: 'PENDING', - updatedAt: { - $gte: moment().startOf('day') - } - }), condition)); - }) - .then(function(data) { - return res.status(200).send({ - value: data - }); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -exports.new = function(req, res) { - return Promise - .all([]) - .then(getMailQueues(req.user)) - .then(function(condition) { - return MailRoom - .count(_.merge(Util.getQuery(req.query, { - status: 'NEW', - updatedAt: { - $gte: moment().startOf('day') - } - }), condition)); - }) - .then(function(data) { - return res.status(200).send({ - value: data - }); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -exports.open = function(req, res) { - return Promise - .all([]) - .then(getMailQueues(req.user)) - .then(function(condition) { - return MailRoom - .count(_.merge(Util.getQuery(req.query, { - status: 'OPEN', - updatedAt: { - $gte: moment().startOf('day') - } - }), condition)); - }) - .then(function(data) { - return res.status(200).send({ - value: data - }); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -exports.closed = function(req, res) { - return Promise - .all([]) - .then(getMailQueues(req.user)) - .then(function(condition) { - return MailRoom - .count(_.merge(Util.getQuery(req.query, { - status: 'CLOSED', - updatedAt: { - $gte: moment().startOf('day') - } - }), condition)); - }) - .then(function(data) { - return res.status(200).send({ - value: data - }); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -exports.inbox = function(req, res, next) { - switch (req.user.role) { - case 'agent': - - return sequelize.query( - 'SELECT `MailRoom`.`id`, `MailRoom`.`subject`, `MailRoom`.`from`, `MailRoom`.`account`, `MailRoom`.`status`, `MailRoom`.`lastEvent`, `MailRoom`.`updatedAt` FROM `mail_rooms` AS `MailRoom` LEFT OUTER JOIN (`user_has_mail_rooms` AS `Users.user_has_mail_rooms` INNER JOIN `users` AS `Users` ON `Users`.`id` = `Users.user_has_mail_rooms`.`UserId`) ON `MailRoom`.`id` = `Users.user_has_mail_rooms`.`MailRoomId` WHERE (`MailRoom`.`deletedAt` IS NULL AND (`MailRoom`.`status` = :status OR `Users`.`id` = :id))', { - replacements: { - status: 'UNMANAGED', - id: req.user.id - }, - type: sequelize.QueryTypes.SELECT - }) - .then(function(result) { - return res.status(200).send(result); - }) - .catch(function(err) { - console.error(err); - return handleError(res, err); - }); - - default: - - return sequelize.query( - 'SELECT `id`, `subject`, `from`, `account`, `status`, `lastEvent` ,`updatedAt` FROM `mail_rooms` WHERE `mail_rooms`.`deletedAt` IS NULL', { - replacements: { - status: 'UNMANAGED', - id: req.user.id - }, - type: sequelize.QueryTypes.SELECT - }) - .then(function(result) { - return res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); - } -}; - -// Get list of agent mailRooms -exports.agentIndex = function(req, res, next) { - return MailRoom - .findAll({ - where: { - UserId: req.params.id - }, - include: [{ - all: true - }] - }) - .then(function(mailRooms) { - return res.status(200).send(mailRooms); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get list of agent mailRooms -exports.updateRoomStatus = function(req, res, next) { - var _mailRoom; - var _promises = []; - - console.log(req.body); - console.log(req.params); - - return MailRoom - .update(req.body, { - where: { - id: req.params.id.split(',') - }, - individualHooks: true - }) - .then(function() { - return Status - .bulkCreate(_.map(req.params.id.split(','), function(id) { - return { - status: req.body.status, - data1: req.user.name, - data2: req.user.fullname, - MailRoomId: id, - UserId: req.user.id - } - })); - }) - .then(function(mailRooms) { - return res.sendStatus(200); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.getRoomByMessage = function(req, res, next) { - return MailMessage - .findById(req.params.id) - .then(function(mailMessage) { - return mailMessage - .getMailRoom({ - include: [{ - model: MailAccount - }, { - model: MailMessage, - include: [{ - model: MailAttachment - }, { - model: User, - attributes: ['id', 'name', 'fullname', 'email'] - }] - }, { - model: User, - attributes: ['id', 'name', 'fullname', 'email'] - }] - }); - }) - .then(function(mailRoom) { - return res.send(mailRoom); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get a single mailRoom -exports.show = function(req, res, next) { - return MailRoom - .scope('default') - .findById(req.params.id) - .then(function(mailRoom) { - if (!mailRoom) { - return res.sendStatus(404); - } - return res.send(mailRoom); - }) - .catch(function(err) { - console.error(err); - return handleError(res, err); - }); -}; - -// Get a single mailRoom -exports.showAgents = function(req, res, next) { - return MailRoom - .findById(req.params.id) - .then(function(mailRoom) { - if (!mailRoom) { - return res.sendStatus(404); - } - - return mailRoom - .getUsers({ - attributes: ['id', 'name', 'fullname', 'email', 'role', 'internal'] - }); - }) - .then(function(users) { - return res.send(users); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Creates a new mailRoom in the DB. -exports.create = function(req, res, next) { - return MailRoom - .create(req.body) - .then(function(mailRoom) { - return res.status(201).send(mailRoom); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Creates a new mailMessage in the DB. -exports.sendMessage = function(req, res, next) { - req.body.UserId = req.user.id; - req.body.MailRoomId = req.params.id; - req.body.attachment = (req.body.MailAttachments && req.body.MailAttachments.length) ? true : false; - req.body.text = req.body.text || htmlToText.fromString(req.body.html, { - wordwrap: false - }); - return MailMessage - .create(req.body, { - include: [{ - model: MailAttachment - }], - user: req.user - }) - .then(function(mailMessage) { - return res.status(201).send(mailMessage); - - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Updates an existing mailRoom in the DB. -exports.update = function(req, res, next) { - return MailRoom - .findById(req.params.id) - .then(function(mailRoom) { - if (!mailRoom) { - return res.sendStatus(404); - } - - return mailRoom - .update(req.body); - }) - .then(function(mailRoom) { - return res.status(200).send(mailRoom); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Updates an existing mailRoom in the DB. -exports.updatePatch = function(req, res, next) { - var _options = { - where: { - id: req.params.id.split(',') - }, - user: req.user, - individualHooks: true - }; - - return MailRoom - .update(req.body, _options) - .then(function(mailRooms) { - if (!mailRooms) { - return res.sendStatus(404); - } - return mailRooms - }) - .then(function(mailRooms) { - return res.sendStatus(200); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get a single mailRoom -exports.updateAgents = function(req, res, next) { - return MailRoom - .findById(req.params.id) - .then(function(mailRoom) { - if (!mailRoom) { - return res.sendStatus(404); - } - - return mailRoom - .setUsers(req.body.agents, { - individualHooks: true - }); - }) - .then(function() { - return res.sendStatus(200); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes a mailRoom from the DB. -exports.destroy = function(req, res, next) { - return MailRoom - .findById(req.params.id) - .then(function(mailRoom) { - if (!mailRoom) { - return res.sendStatus(404); - } - return mailRoom.destroy(); - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes a agent from the DB. -exports.bulkDestroy = function(req, res) { - return MailRoom - .destroy({ - where: { - id: req.query.ids - }, - individualHooks: true - }) - .then(function() { - return res.sendStatus(200); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0xa6fd=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x75\x74\x69\x6C","\x68\x74\x6D\x6C\x2D\x74\x6F\x2D\x74\x65\x78\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x6D\x6F\x6D\x65\x6E\x74","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x55\x73\x65\x72","\x43\x6F\x6E\x74\x61\x63\x74","\x4D\x61\x69\x6C\x52\x6F\x6F\x6D\x53\x74\x61\x74\x75\x73","\x4D\x61\x69\x6C\x52\x6F\x6F\x6D","\x4D\x61\x69\x6C\x4D\x65\x73\x73\x61\x67\x65","\x4D\x61\x69\x6C\x41\x63\x63\x6F\x75\x6E\x74","\x4D\x61\x69\x6C\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x4D\x61\x69\x6C\x51\x75\x65\x75\x65","\x4D\x61\x69\x6C\x41\x74\x74\x61\x63\x68\x6D\x65\x6E\x74","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x64\x65\x66\x61\x75\x6C\x74","\x73\x63\x6F\x70\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x69\x64","\x6D\x61\x70","\x67\x65\x74\x4D\x61\x69\x6C\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x66\x69\x6E\x64\x42\x79\x49\x64","\x75\x73\x65\x72","\x72\x6F\x6C\x65","\x70\x65\x6E\x64\x69\x6E\x67","\x6C\x6F\x67","\x50\x45\x4E\x44\x49\x4E\x47","\x64\x61\x79","\x73\x74\x61\x72\x74\x4F\x66","\x6D\x65\x72\x67\x65","\x63\x6F\x75\x6E\x74","\x61\x6C\x6C","\x6E\x65\x77","\x4E\x45\x57","\x6F\x70\x65\x6E","\x4F\x50\x45\x4E","\x63\x6C\x6F\x73\x65\x64","\x43\x4C\x4F\x53\x45\x44","\x69\x6E\x62\x6F\x78","\x65\x72\x72\x6F\x72","\x53\x45\x4C\x45\x43\x54\x20\x60\x4D\x61\x69\x6C\x52\x6F\x6F\x6D\x60\x2E\x60\x69\x64\x60\x2C\x20\x60\x4D\x61\x69\x6C\x52\x6F\x6F\x6D\x60\x2E\x60\x73\x75\x62\x6A\x65\x63\x74\x60\x2C\x20\x60\x4D\x61\x69\x6C\x52\x6F\x6F\x6D\x60\x2E\x60\x66\x72\x6F\x6D\x60\x2C\x20\x60\x4D\x61\x69\x6C\x52\x6F\x6F\x6D\x60\x2E\x60\x61\x63\x63\x6F\x75\x6E\x74\x60\x2C\x20\x60\x4D\x61\x69\x6C\x52\x6F\x6F\x6D\x60\x2E\x60\x73\x74\x61\x74\x75\x73\x60\x2C\x20\x60\x4D\x61\x69\x6C\x52\x6F\x6F\x6D\x60\x2E\x60\x6C\x61\x73\x74\x45\x76\x65\x6E\x74\x60\x2C\x20\x60\x4D\x61\x69\x6C\x52\x6F\x6F\x6D\x60\x2E\x60\x75\x70\x64\x61\x74\x65\x64\x41\x74\x60\x20\x46\x52\x4F\x4D\x20\x60\x6D\x61\x69\x6C\x5F\x72\x6F\x6F\x6D\x73\x60\x20\x41\x53\x20\x60\x4D\x61\x69\x6C\x52\x6F\x6F\x6D\x60\x20\x4C\x45\x46\x54\x20\x4F\x55\x54\x45\x52\x20\x4A\x4F\x49\x4E\x20\x28\x60\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x6D\x61\x69\x6C\x5F\x72\x6F\x6F\x6D\x73\x60\x20\x41\x53\x20\x60\x55\x73\x65\x72\x73\x2E\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x6D\x61\x69\x6C\x5F\x72\x6F\x6F\x6D\x73\x60\x20\x49\x4E\x4E\x45\x52\x20\x4A\x4F\x49\x4E\x20\x60\x75\x73\x65\x72\x73\x60\x20\x41\x53\x20\x60\x55\x73\x65\x72\x73\x60\x20\x4F\x4E\x20\x60\x55\x73\x65\x72\x73\x60\x2E\x60\x69\x64\x60\x20\x3D\x20\x60\x55\x73\x65\x72\x73\x2E\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x6D\x61\x69\x6C\x5F\x72\x6F\x6F\x6D\x73\x60\x2E\x60\x55\x73\x65\x72\x49\x64\x60\x29\x20\x4F\x4E\x20\x60\x4D\x61\x69\x6C\x52\x6F\x6F\x6D\x60\x2E\x60\x69\x64\x60\x20\x3D\x20\x60\x55\x73\x65\x72\x73\x2E\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x6D\x61\x69\x6C\x5F\x72\x6F\x6F\x6D\x73\x60\x2E\x60\x4D\x61\x69\x6C\x52\x6F\x6F\x6D\x49\x64\x60\x20\x57\x48\x45\x52\x45\x20\x28\x60\x4D\x61\x69\x6C\x52\x6F\x6F\x6D\x60\x2E\x60\x64\x65\x6C\x65\x74\x65\x64\x41\x74\x60\x20\x49\x53\x20\x4E\x55\x4C\x4C\x20\x41\x4E\x44\x20\x28\x60\x4D\x61\x69\x6C\x52\x6F\x6F\x6D\x60\x2E\x60\x73\x74\x61\x74\x75\x73\x60\x20\x3D\x20\x3A\x73\x74\x61\x74\x75\x73\x20\x4F\x52\x20\x60\x55\x73\x65\x72\x73\x60\x2E\x60\x69\x64\x60\x20\x3D\x20\x3A\x69\x64\x29\x29","\x55\x4E\x4D\x41\x4E\x41\x47\x45\x44","\x53\x45\x4C\x45\x43\x54","\x51\x75\x65\x72\x79\x54\x79\x70\x65\x73","\x61\x67\x65\x6E\x74","\x53\x45\x4C\x45\x43\x54\x20\x60\x69\x64\x60\x2C\x20\x60\x73\x75\x62\x6A\x65\x63\x74\x60\x2C\x20\x60\x66\x72\x6F\x6D\x60\x2C\x20\x60\x61\x63\x63\x6F\x75\x6E\x74\x60\x2C\x20\x60\x73\x74\x61\x74\x75\x73\x60\x2C\x20\x60\x6C\x61\x73\x74\x45\x76\x65\x6E\x74\x60\x20\x2C\x60\x75\x70\x64\x61\x74\x65\x64\x41\x74\x60\x20\x46\x52\x4F\x4D\x20\x60\x6D\x61\x69\x6C\x5F\x72\x6F\x6F\x6D\x73\x60\x20\x57\x48\x45\x52\x45\x20\x60\x6D\x61\x69\x6C\x5F\x72\x6F\x6F\x6D\x73\x60\x2E\x60\x64\x65\x6C\x65\x74\x65\x64\x41\x74\x60\x20\x49\x53\x20\x4E\x55\x4C\x4C","\x61\x67\x65\x6E\x74\x49\x6E\x64\x65\x78","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x41\x6C\x6C","\x75\x70\x64\x61\x74\x65\x52\x6F\x6F\x6D\x53\x74\x61\x74\x75\x73","\x62\x6F\x64\x79","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x2C","\x73\x70\x6C\x69\x74","\x6E\x61\x6D\x65","\x66\x75\x6C\x6C\x6E\x61\x6D\x65","\x62\x75\x6C\x6B\x43\x72\x65\x61\x74\x65","\x75\x70\x64\x61\x74\x65","\x67\x65\x74\x52\x6F\x6F\x6D\x42\x79\x4D\x65\x73\x73\x61\x67\x65","\x65\x6D\x61\x69\x6C","\x67\x65\x74\x4D\x61\x69\x6C\x52\x6F\x6F\x6D","\x73\x68\x6F\x77","\x73\x68\x6F\x77\x41\x67\x65\x6E\x74\x73","\x69\x6E\x74\x65\x72\x6E\x61\x6C","\x67\x65\x74\x55\x73\x65\x72\x73","\x63\x72\x65\x61\x74\x65","\x73\x65\x6E\x64\x4D\x65\x73\x73\x61\x67\x65","\x55\x73\x65\x72\x49\x64","\x4D\x61\x69\x6C\x52\x6F\x6F\x6D\x49\x64","\x61\x74\x74\x61\x63\x68\x6D\x65\x6E\x74","\x4D\x61\x69\x6C\x41\x74\x74\x61\x63\x68\x6D\x65\x6E\x74\x73","\x6C\x65\x6E\x67\x74\x68","\x74\x65\x78\x74","\x68\x74\x6D\x6C","\x66\x72\x6F\x6D\x53\x74\x72\x69\x6E\x67","\x75\x70\x64\x61\x74\x65\x50\x61\x74\x63\x68","\x75\x70\x64\x61\x74\x65\x41\x67\x65\x6E\x74\x73","\x61\x67\x65\x6E\x74\x73","\x73\x65\x74\x55\x73\x65\x72\x73","\x64\x65\x73\x74\x72\x6F\x79","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73"];_0xa6fd[0];var _=require(_0xa6fd[1]);var util=require(_0xa6fd[2]);var htmlToText=require(_0xa6fd[3]);var Util=require(_0xa6fd[4]);var moment=require(_0xa6fd[5]);var sequelize=require(_0xa6fd[7])[_0xa6fd[6]];var User=require(_0xa6fd[7])[_0xa6fd[8]];var Agent=require(_0xa6fd[7])[_0xa6fd[8]];var Contact=require(_0xa6fd[7])[_0xa6fd[9]];var Status=require(_0xa6fd[7])[_0xa6fd[10]];var MailRoom=require(_0xa6fd[7])[_0xa6fd[11]];var MailMessage=require(_0xa6fd[7])[_0xa6fd[12]];var MailAccount=require(_0xa6fd[7])[_0xa6fd[13]];var MailApplication=require(_0xa6fd[7])[_0xa6fd[14]];var MailQueue=require(_0xa6fd[7])[_0xa6fd[15]];var MailAttachment=require(_0xa6fd[7])[_0xa6fd[16]];exports[_0xa6fd[17]]= function(_0x1e7fx11,_0x1e7fx12,_0x1e7fx13){return MailRoom[_0xa6fd[26]](_0xa6fd[25])[_0xa6fd[24]](Util[_0xa6fd[23]](_0x1e7fx11[_0xa6fd[22]]))[_0xa6fd[21]](function(_0x1e7fx15){return _0x1e7fx12[_0xa6fd[20]](200)[_0xa6fd[19]](_0x1e7fx15)})[_0xa6fd[18]](function(_0x1e7fx14){return handleError(_0x1e7fx12,_0x1e7fx14)})};exports[_0xa6fd[27]]= function(_0x1e7fx11,_0x1e7fx12){return MailRoom[_0xa6fd[27]]()[_0xa6fd[21]](function(_0x1e7fx16){return _0x1e7fx12[_0xa6fd[20]](200)[_0xa6fd[19]](_0x1e7fx16)})[_0xa6fd[18]](function(_0x1e7fx14){return handleError(_0x1e7fx12,_0x1e7fx14)})};function getMailQueues(_0x1e7fx18){return function(){switch(_0x1e7fx18[_0xa6fd[33]]){case _0xa6fd[32]:return User[_0xa6fd[31]](_0x1e7fx18[_0xa6fd[28]],{attributes:[_0xa6fd[28]]})[_0xa6fd[21]](Util[_0xa6fd[30]]({},{attributes:[_0xa6fd[28]]}))[_0xa6fd[21]](function(_0x1e7fx19){return {include:{model:MailAccount,include:{model:MailApplication,include:{model:MailQueue,where:{id:_[_0xa6fd[29]](_0x1e7fx19,_0xa6fd[28])}}}}}});default:return {}}}}exports[_0xa6fd[34]]= function(_0x1e7fx11,_0x1e7fx12){return Promise[_0xa6fd[41]]([])[_0xa6fd[21]](getMailQueues(_0x1e7fx11[_0xa6fd[32]]))[_0xa6fd[21]](function(_0x1e7fx1b){return MailRoom[_0xa6fd[40]](_[_0xa6fd[39]](Util[_0xa6fd[23]](_0x1e7fx11[_0xa6fd[22]],{status:_0xa6fd[36],updatedAt:{$gte:moment()[_0xa6fd[38]](_0xa6fd[37])}}),_0x1e7fx1b))})[_0xa6fd[21]](function(_0x1e7fx1a){return _0x1e7fx12[_0xa6fd[20]](200)[_0xa6fd[19]]({value:_0x1e7fx1a})})[_0xa6fd[18]](function(_0x1e7fx14){console[_0xa6fd[35]](_0x1e7fx14);return handleError(_0x1e7fx12,_0x1e7fx14)})};exports[_0xa6fd[42]]= function(_0x1e7fx11,_0x1e7fx12){return Promise[_0xa6fd[41]]([])[_0xa6fd[21]](getMailQueues(_0x1e7fx11[_0xa6fd[32]]))[_0xa6fd[21]](function(_0x1e7fx1b){return MailRoom[_0xa6fd[40]](_[_0xa6fd[39]](Util[_0xa6fd[23]](_0x1e7fx11[_0xa6fd[22]],{status:_0xa6fd[43],updatedAt:{$gte:moment()[_0xa6fd[38]](_0xa6fd[37])}}),_0x1e7fx1b))})[_0xa6fd[21]](function(_0x1e7fx1a){return _0x1e7fx12[_0xa6fd[20]](200)[_0xa6fd[19]]({value:_0x1e7fx1a})})[_0xa6fd[18]](function(_0x1e7fx14){console[_0xa6fd[35]](_0x1e7fx14);return handleError(_0x1e7fx12,_0x1e7fx14)})};exports[_0xa6fd[44]]= function(_0x1e7fx11,_0x1e7fx12){return Promise[_0xa6fd[41]]([])[_0xa6fd[21]](getMailQueues(_0x1e7fx11[_0xa6fd[32]]))[_0xa6fd[21]](function(_0x1e7fx1b){return MailRoom[_0xa6fd[40]](_[_0xa6fd[39]](Util[_0xa6fd[23]](_0x1e7fx11[_0xa6fd[22]],{status:_0xa6fd[45],updatedAt:{$gte:moment()[_0xa6fd[38]](_0xa6fd[37])}}),_0x1e7fx1b))})[_0xa6fd[21]](function(_0x1e7fx1a){return _0x1e7fx12[_0xa6fd[20]](200)[_0xa6fd[19]]({value:_0x1e7fx1a})})[_0xa6fd[18]](function(_0x1e7fx14){console[_0xa6fd[35]](_0x1e7fx14);return handleError(_0x1e7fx12,_0x1e7fx14)})};exports[_0xa6fd[46]]= function(_0x1e7fx11,_0x1e7fx12){return Promise[_0xa6fd[41]]([])[_0xa6fd[21]](getMailQueues(_0x1e7fx11[_0xa6fd[32]]))[_0xa6fd[21]](function(_0x1e7fx1b){return MailRoom[_0xa6fd[40]](_[_0xa6fd[39]](Util[_0xa6fd[23]](_0x1e7fx11[_0xa6fd[22]],{status:_0xa6fd[47],updatedAt:{$gte:moment()[_0xa6fd[38]](_0xa6fd[37])}}),_0x1e7fx1b))})[_0xa6fd[21]](function(_0x1e7fx1a){return _0x1e7fx12[_0xa6fd[20]](200)[_0xa6fd[19]]({value:_0x1e7fx1a})})[_0xa6fd[18]](function(_0x1e7fx14){console[_0xa6fd[35]](_0x1e7fx14);return handleError(_0x1e7fx12,_0x1e7fx14)})};exports[_0xa6fd[48]]= function(_0x1e7fx11,_0x1e7fx12,_0x1e7fx13){switch(_0x1e7fx11[_0xa6fd[32]][_0xa6fd[33]]){case _0xa6fd[54]:return sequelize[_0xa6fd[22]](_0xa6fd[50],{replacements:{status:_0xa6fd[51],id:_0x1e7fx11[_0xa6fd[32]][_0xa6fd[28]]},type:sequelize[_0xa6fd[53]][_0xa6fd[52]]})[_0xa6fd[21]](function(_0x1e7fx15){return _0x1e7fx12[_0xa6fd[20]](200)[_0xa6fd[19]](_0x1e7fx15)})[_0xa6fd[18]](function(_0x1e7fx14){console[_0xa6fd[49]](_0x1e7fx14);return handleError(_0x1e7fx12,_0x1e7fx14)});default:return sequelize[_0xa6fd[22]](_0xa6fd[55],{replacements:{status:_0xa6fd[51],id:_0x1e7fx11[_0xa6fd[32]][_0xa6fd[28]]},type:sequelize[_0xa6fd[53]][_0xa6fd[52]]})[_0xa6fd[21]](function(_0x1e7fx15){return _0x1e7fx12[_0xa6fd[20]](200)[_0xa6fd[19]](_0x1e7fx15)})[_0xa6fd[18]](function(_0x1e7fx14){return handleError(_0x1e7fx12,_0x1e7fx14)})}};exports[_0xa6fd[56]]= function(_0x1e7fx11,_0x1e7fx12,_0x1e7fx13){return MailRoom[_0xa6fd[58]]({where:{UserId:_0x1e7fx11[_0xa6fd[57]][_0xa6fd[28]]},include:[{all:true}]})[_0xa6fd[21]](function(_0x1e7fx1c){return _0x1e7fx12[_0xa6fd[20]](200)[_0xa6fd[19]](_0x1e7fx1c)})[_0xa6fd[18]](function(_0x1e7fx14){return handleError(_0x1e7fx12,_0x1e7fx14)})};exports[_0xa6fd[59]]= function(_0x1e7fx11,_0x1e7fx12,_0x1e7fx13){var _0x1e7fx1d;var _0x1e7fx1e=[];console[_0xa6fd[35]](_0x1e7fx11[_0xa6fd[60]]);console[_0xa6fd[35]](_0x1e7fx11[_0xa6fd[57]]);return MailRoom[_0xa6fd[67]](_0x1e7fx11[_0xa6fd[60]],{where:{id:_0x1e7fx11[_0xa6fd[57]][_0xa6fd[28]][_0xa6fd[63]](_0xa6fd[62])},individualHooks:true})[_0xa6fd[21]](function(){return Status[_0xa6fd[66]](_[_0xa6fd[29]](_0x1e7fx11[_0xa6fd[57]][_0xa6fd[28]][_0xa6fd[63]](_0xa6fd[62]),function(_0x1e7fx1f){return {status:_0x1e7fx11[_0xa6fd[60]][_0xa6fd[20]],data1:_0x1e7fx11[_0xa6fd[32]][_0xa6fd[64]],data2:_0x1e7fx11[_0xa6fd[32]][_0xa6fd[65]],MailRoomId:_0x1e7fx1f,UserId:_0x1e7fx11[_0xa6fd[32]][_0xa6fd[28]]}}))})[_0xa6fd[21]](function(_0x1e7fx1c){return _0x1e7fx12[_0xa6fd[61]](200)})[_0xa6fd[18]](function(_0x1e7fx14){return handleError(_0x1e7fx12,_0x1e7fx14)})};exports[_0xa6fd[68]]= function(_0x1e7fx11,_0x1e7fx12,_0x1e7fx13){return MailMessage[_0xa6fd[31]](_0x1e7fx11[_0xa6fd[57]][_0xa6fd[28]])[_0xa6fd[21]](function(_0x1e7fx21){return _0x1e7fx21[_0xa6fd[70]]({include:[{model:MailAccount},{model:MailMessage,include:[{model:MailAttachment},{model:User,attributes:[_0xa6fd[28],_0xa6fd[64],_0xa6fd[65],_0xa6fd[69]]}]},{model:User,attributes:[_0xa6fd[28],_0xa6fd[64],_0xa6fd[65],_0xa6fd[69]]}]})})[_0xa6fd[21]](function(_0x1e7fx20){return _0x1e7fx12[_0xa6fd[19]](_0x1e7fx20)})[_0xa6fd[18]](function(_0x1e7fx14){return handleError(_0x1e7fx12,_0x1e7fx14)})};exports[_0xa6fd[71]]= function(_0x1e7fx11,_0x1e7fx12,_0x1e7fx13){return MailRoom[_0xa6fd[26]](_0xa6fd[25])[_0xa6fd[31]](_0x1e7fx11[_0xa6fd[57]][_0xa6fd[28]])[_0xa6fd[21]](function(_0x1e7fx20){if(!_0x1e7fx20){return _0x1e7fx12[_0xa6fd[61]](404)};return _0x1e7fx12[_0xa6fd[19]](_0x1e7fx20)})[_0xa6fd[18]](function(_0x1e7fx14){console[_0xa6fd[49]](_0x1e7fx14);return handleError(_0x1e7fx12,_0x1e7fx14)})};exports[_0xa6fd[72]]= function(_0x1e7fx11,_0x1e7fx12,_0x1e7fx13){return MailRoom[_0xa6fd[31]](_0x1e7fx11[_0xa6fd[57]][_0xa6fd[28]])[_0xa6fd[21]](function(_0x1e7fx20){if(!_0x1e7fx20){return _0x1e7fx12[_0xa6fd[61]](404)};return _0x1e7fx20[_0xa6fd[74]]({attributes:[_0xa6fd[28],_0xa6fd[64],_0xa6fd[65],_0xa6fd[69],_0xa6fd[33],_0xa6fd[73]]})})[_0xa6fd[21]](function(_0x1e7fx22){return _0x1e7fx12[_0xa6fd[19]](_0x1e7fx22)})[_0xa6fd[18]](function(_0x1e7fx14){return handleError(_0x1e7fx12,_0x1e7fx14)})};exports[_0xa6fd[75]]= function(_0x1e7fx11,_0x1e7fx12,_0x1e7fx13){return MailRoom[_0xa6fd[75]](_0x1e7fx11[_0xa6fd[60]])[_0xa6fd[21]](function(_0x1e7fx20){return _0x1e7fx12[_0xa6fd[20]](201)[_0xa6fd[19]](_0x1e7fx20)})[_0xa6fd[18]](function(_0x1e7fx14){return handleError(_0x1e7fx12,_0x1e7fx14)})};exports[_0xa6fd[76]]= function(_0x1e7fx11,_0x1e7fx12,_0x1e7fx13){_0x1e7fx11[_0xa6fd[60]][_0xa6fd[77]]= _0x1e7fx11[_0xa6fd[32]][_0xa6fd[28]];_0x1e7fx11[_0xa6fd[60]][_0xa6fd[78]]= _0x1e7fx11[_0xa6fd[57]][_0xa6fd[28]];_0x1e7fx11[_0xa6fd[60]][_0xa6fd[79]]= (_0x1e7fx11[_0xa6fd[60]][_0xa6fd[80]]&& _0x1e7fx11[_0xa6fd[60]][_0xa6fd[80]][_0xa6fd[81]])?true:false;_0x1e7fx11[_0xa6fd[60]][_0xa6fd[82]]= _0x1e7fx11[_0xa6fd[60]][_0xa6fd[82]]|| htmlToText[_0xa6fd[84]](_0x1e7fx11[_0xa6fd[60]][_0xa6fd[83]],{wordwrap:false});return MailMessage[_0xa6fd[75]](_0x1e7fx11[_0xa6fd[60]],{include:[{model:MailAttachment}],user:_0x1e7fx11[_0xa6fd[32]]})[_0xa6fd[21]](function(_0x1e7fx21){return _0x1e7fx12[_0xa6fd[20]](201)[_0xa6fd[19]](_0x1e7fx21)})[_0xa6fd[18]](function(_0x1e7fx14){return handleError(_0x1e7fx12,_0x1e7fx14)})};exports[_0xa6fd[67]]= function(_0x1e7fx11,_0x1e7fx12,_0x1e7fx13){return MailRoom[_0xa6fd[31]](_0x1e7fx11[_0xa6fd[57]][_0xa6fd[28]])[_0xa6fd[21]](function(_0x1e7fx20){if(!_0x1e7fx20){return _0x1e7fx12[_0xa6fd[61]](404)};return _0x1e7fx20[_0xa6fd[67]](_0x1e7fx11[_0xa6fd[60]])})[_0xa6fd[21]](function(_0x1e7fx20){return _0x1e7fx12[_0xa6fd[20]](200)[_0xa6fd[19]](_0x1e7fx20)})[_0xa6fd[18]](function(_0x1e7fx14){return handleError(_0x1e7fx12,_0x1e7fx14)})};exports[_0xa6fd[85]]= function(_0x1e7fx11,_0x1e7fx12,_0x1e7fx13){var _0x1e7fx23={where:{id:_0x1e7fx11[_0xa6fd[57]][_0xa6fd[28]][_0xa6fd[63]](_0xa6fd[62])},user:_0x1e7fx11[_0xa6fd[32]],individualHooks:true};return MailRoom[_0xa6fd[67]](_0x1e7fx11[_0xa6fd[60]],_0x1e7fx23)[_0xa6fd[21]](function(_0x1e7fx1c){if(!_0x1e7fx1c){return _0x1e7fx12[_0xa6fd[61]](404)};return _0x1e7fx1c})[_0xa6fd[21]](function(_0x1e7fx1c){return _0x1e7fx12[_0xa6fd[61]](200)})[_0xa6fd[18]](function(_0x1e7fx14){return handleError(_0x1e7fx12,_0x1e7fx14)})};exports[_0xa6fd[86]]= function(_0x1e7fx11,_0x1e7fx12,_0x1e7fx13){return MailRoom[_0xa6fd[31]](_0x1e7fx11[_0xa6fd[57]][_0xa6fd[28]])[_0xa6fd[21]](function(_0x1e7fx20){if(!_0x1e7fx20){return _0x1e7fx12[_0xa6fd[61]](404)};return _0x1e7fx20[_0xa6fd[88]](_0x1e7fx11[_0xa6fd[60]][_0xa6fd[87]],{individualHooks:true})})[_0xa6fd[21]](function(){return _0x1e7fx12[_0xa6fd[61]](200)})[_0xa6fd[18]](function(_0x1e7fx14){return handleError(_0x1e7fx12,_0x1e7fx14)})};exports[_0xa6fd[89]]= function(_0x1e7fx11,_0x1e7fx12,_0x1e7fx13){return MailRoom[_0xa6fd[31]](_0x1e7fx11[_0xa6fd[57]][_0xa6fd[28]])[_0xa6fd[21]](function(_0x1e7fx20){if(!_0x1e7fx20){return _0x1e7fx12[_0xa6fd[61]](404)};return _0x1e7fx20[_0xa6fd[89]]()})[_0xa6fd[21]](function(){return _0x1e7fx12[_0xa6fd[61]](204)})[_0xa6fd[18]](function(_0x1e7fx14){return handleError(_0x1e7fx12,_0x1e7fx14)})};exports[_0xa6fd[90]]= function(_0x1e7fx11,_0x1e7fx12){return MailRoom[_0xa6fd[89]]({where:{id:_0x1e7fx11[_0xa6fd[22]][_0xa6fd[91]]},individualHooks:true})[_0xa6fd[21]](function(){return _0x1e7fx12[_0xa6fd[61]](200)})[_0xa6fd[18]](function(_0x1e7fx14){return handleError(_0x1e7fx12,_0x1e7fx14)})};function handleError(_0x1e7fx12,_0x1e7fx14){return _0x1e7fx12[_0xa6fd[20]](500)[_0xa6fd[19]](_0x1e7fx14)} \ No newline at end of file diff --git a/server/api/mail_room/mail_room.events.js b/server/api/mail_room/mail_room.events.js index b0fc25b..9eee426 100644 --- a/server/api/mail_room/mail_room.events.js +++ b/server/api/mail_room/mail_room.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const MailRoom = require('../../models').MailRoom; - -var MailRoomEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -MailRoomEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - MailRoom.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - MailRoomEvents.emit(event + ':' + doc._id, doc); - MailRoomEvents.emit(event, doc); - done(null); - } -} - -module.exports = MailRoomEvents; +var _0x63bf=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x4D\x61\x69\x6C\x52\x6F\x6F\x6D","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x63bf[0];const EventEmitter=require(_0x63bf[1]);const MailRoom=require(_0x63bf[3])[_0x63bf[2]];var MailRoomEvents= new EventEmitter();MailRoomEvents[_0x63bf[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x63bf[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x63bf[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x63bf[6]};for(var e in events){var event=events[e];MailRoom[_0x63bf[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x9112x8,_0x9112x9,_0x9112xa){MailRoomEvents[_0x63bf[10]](event+ _0x63bf[8]+ _0x9112x8[_0x63bf[9]],_0x9112x8);MailRoomEvents[_0x63bf[10]](event,_0x9112x8);_0x9112xa(null)}}module[_0x63bf[11]]= MailRoomEvents \ No newline at end of file diff --git a/server/api/mail_room/mail_room.socket.js b/server/api/mail_room/mail_room.socket.js index 9d2aefc..a13d10b 100644 --- a/server/api/mail_room/mail_room.socket.js +++ b/server/api/mail_room/mail_room.socket.js @@ -1,28 +1 @@ -'use strict'; - -const MailRoomEvents = require('./mail_room.events'); - -// Model events to emit -var events = ['save', 'save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('mail_room:' + event, socket); - - MailRoomEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - MailRoomEvents.removeListener(event, listener); - }; -} +var _0x3b55=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x6D\x61\x69\x6C\x5F\x72\x6F\x6F\x6D\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x6D\x61\x69\x6C\x5F\x72\x6F\x6F\x6D\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x3b55[0];const MailRoomEvents=require(_0x3b55[1]);var events=[_0x3b55[2],_0x3b55[2],_0x3b55[3]];exports[_0x3b55[4]]= function(_0xdb69x3){for(var _0xdb69x4=0,_0xdb69x5=events[_0x3b55[5]];_0xdb69x4< _0xdb69x5;_0xdb69x4++){var _0xdb69x6=events[_0xdb69x4];var _0xdb69x7=createListener(_0x3b55[6]+ _0xdb69x6,_0xdb69x3);MailRoomEvents[_0x3b55[7]](_0xdb69x6,_0xdb69x7);_0xdb69x3[_0x3b55[7]](_0x3b55[8],removeListener(_0xdb69x6,_0xdb69x7))}};function createListener(_0xdb69x6,_0xdb69x3){return function(_0xdb69x9){_0xdb69x3[_0x3b55[9]](_0xdb69x6,_0xdb69x9)}}function removeListener(_0xdb69x6,_0xdb69x7){return function(){MailRoomEvents[_0x3b55[10]](_0xdb69x6,_0xdb69x7)}} \ No newline at end of file diff --git a/server/api/mail_server_in/index.js b/server/api/mail_server_in/index.js index 58902a3..4cb6f5b 100644 --- a/server/api/mail_server_in/index.js +++ b/server/api/mail_server_in/index.js @@ -1,17 +1 @@ -'use strict'; - -var express = require('express'); - -var controller = require('./mail_server_in.controller'); -var auth = require('../../auth/auth.service'); -var license = require('../../config/license/license.service'); - -var router = express.Router(); - -router.get('/', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin']), controller.index); -router.get('/:id', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin']), controller.show); -router.post('/', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin']), controller.create); -router.put('/:id', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin']), controller.update); -router.delete('/:id', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin']), controller.destroy); - -module.exports = router; +var _0x4e36=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x6D\x61\x69\x6C\x5F\x73\x65\x72\x76\x65\x72\x5F\x69\x6E\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x68\x61\x73\x4D\x61\x69\x6C","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0x4e36[0];var express=require(_0x4e36[1]);var controller=require(_0x4e36[2]);var auth=require(_0x4e36[3]);var license=require(_0x4e36[4]);var router=express.Router();router[_0x4e36[12]](_0x4e36[5],license[_0x4e36[6]](),license[_0x4e36[7]](),auth[_0x4e36[8]](),auth[_0x4e36[10]]([9],[_0x4e36[9]]),controller[_0x4e36[11]]);router[_0x4e36[12]](_0x4e36[13],license[_0x4e36[6]](),license[_0x4e36[7]](),auth[_0x4e36[8]](),auth[_0x4e36[10]]([9],[_0x4e36[9]]),controller[_0x4e36[14]]);router[_0x4e36[16]](_0x4e36[5],license[_0x4e36[6]](),license[_0x4e36[7]](),auth[_0x4e36[8]](),auth[_0x4e36[10]]([9],[_0x4e36[9]]),controller[_0x4e36[15]]);router[_0x4e36[18]](_0x4e36[13],license[_0x4e36[6]](),license[_0x4e36[7]](),auth[_0x4e36[8]](),auth[_0x4e36[10]]([9],[_0x4e36[9]]),controller[_0x4e36[17]]);router[_0x4e36[20]](_0x4e36[13],license[_0x4e36[6]](),license[_0x4e36[7]](),auth[_0x4e36[8]](),auth[_0x4e36[10]]([9],[_0x4e36[9]]),controller[_0x4e36[19]]);module[_0x4e36[21]]= router \ No newline at end of file diff --git a/server/api/mail_server_in/mail_server_in.controller.js b/server/api/mail_server_in/mail_server_in.controller.js index 27fda21..5581418 100644 --- a/server/api/mail_server_in/mail_server_in.controller.js +++ b/server/api/mail_server_in/mail_server_in.controller.js @@ -1,96 +1 @@ -'use strict'; - -var _ = require('lodash'); -var Util = require('../../config/util'); - -var sequelize = require('../../models').sequelize; -var MailServerIn = require('../../models').MailServerIn; - -// Get list of mail_server_ins -exports.index = function(req, res) { - return MailServerIn - .findAll() - .then(function(mail_server_ins) { - return res.status(200).send(mail_server_ins); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get a single mailServerIn -exports.show = function(req, res) { - return MailServerIn - .findById(req.params.id) - .then(function(mailServerIn) { - if (!mailServerIn) { - return res.sendStatus(404); - } - return res.send(mailServerIn); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Creates a new mailServerIn in the DB. -exports.create = function(req, res) { - return MailServerIn - .create(req.body) - .then(function(mailServerIn) { - return res.status(201).send(mailServerIn); - }) - .catch(sequelize.UniqueConstraintError, function(err) { - return Util.errorManager.handleUniqueConstraintError(res, err); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Updates an existing mailServerIn in the DB. -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - - return MailServerIn - .findById(req.params.id) - .then(function(mailServerIn) { - if (!mailServerIn) { - return res.sendStatus(404); - } - var updated = _.merge(mailServerIn, req.body); - return updated - .save(); - }) - .then(function(mailServerIn) { - return res.status(200).send(mailServerIn); - }) - .catch(sequelize.UniqueConstraintError, function(err) { - return Util.errorManager.handleUniqueConstraintError(res, err); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes a mailServerIn from the DB. -exports.destroy = function(req, res) { - return MailServerIn - .findById(req.params.id) - .then(function(mailServerIn) { - if (!mailServerIn) { - return res.sendStatus(404); - } - return mailServerIn - .destroy(); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0xe535=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x4D\x61\x69\x6C\x53\x65\x72\x76\x65\x72\x49\x6E","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x68\x61\x6E\x64\x6C\x65\x55\x6E\x69\x71\x75\x65\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74\x45\x72\x72\x6F\x72","\x65\x72\x72\x6F\x72\x4D\x61\x6E\x61\x67\x65\x72","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x64\x65\x73\x74\x72\x6F\x79"];_0xe535[0];var _=require(_0xe535[1]);var Util=require(_0xe535[2]);var sequelize=require(_0xe535[4])[_0xe535[3]];var MailServerIn=require(_0xe535[4])[_0xe535[5]];exports[_0xe535[6]]= function(_0x70a6x5,_0x70a6x6){return MailServerIn[_0xe535[11]]()[_0xe535[10]](function(_0x70a6x8){return _0x70a6x6[_0xe535[9]](200)[_0xe535[8]](_0x70a6x8)})[_0xe535[7]](function(_0x70a6x7){return handleError(_0x70a6x6,_0x70a6x7)})};exports[_0xe535[12]]= function(_0x70a6x5,_0x70a6x6){return MailServerIn[_0xe535[16]](_0x70a6x5[_0xe535[15]][_0xe535[14]])[_0xe535[10]](function(_0x70a6x9){if(!_0x70a6x9){return _0x70a6x6[_0xe535[13]](404)};return _0x70a6x6[_0xe535[8]](_0x70a6x9)})[_0xe535[7]](function(_0x70a6x7){return handleError(_0x70a6x6,_0x70a6x7)})};exports[_0xe535[17]]= function(_0x70a6x5,_0x70a6x6){return MailServerIn[_0xe535[17]](_0x70a6x5[_0xe535[20]])[_0xe535[10]](function(_0x70a6x9){return _0x70a6x6[_0xe535[9]](201)[_0xe535[8]](_0x70a6x9)})[_0xe535[7]](sequelize.UniqueConstraintError,function(_0x70a6x7){return Util[_0xe535[19]][_0xe535[18]](_0x70a6x6,_0x70a6x7)})[_0xe535[7]](function(_0x70a6x7){return handleError(_0x70a6x6,_0x70a6x7)})};exports[_0xe535[21]]= function(_0x70a6x5,_0x70a6x6){if(_0x70a6x5[_0xe535[20]][_0xe535[14]]){delete _0x70a6x5[_0xe535[20]][_0xe535[14]]};return MailServerIn[_0xe535[16]](_0x70a6x5[_0xe535[15]][_0xe535[14]])[_0xe535[10]](function(_0x70a6x9){if(!_0x70a6x9){return _0x70a6x6[_0xe535[13]](404)};var _0x70a6xa=_[_0xe535[22]](_0x70a6x9,_0x70a6x5[_0xe535[20]]);return _0x70a6xa[_0xe535[23]]()})[_0xe535[10]](function(_0x70a6x9){return _0x70a6x6[_0xe535[9]](200)[_0xe535[8]](_0x70a6x9)})[_0xe535[7]](sequelize.UniqueConstraintError,function(_0x70a6x7){return Util[_0xe535[19]][_0xe535[18]](_0x70a6x6,_0x70a6x7)})[_0xe535[7]](function(_0x70a6x7){return handleError(_0x70a6x6,_0x70a6x7)})};exports[_0xe535[24]]= function(_0x70a6x5,_0x70a6x6){return MailServerIn[_0xe535[16]](_0x70a6x5[_0xe535[15]][_0xe535[14]])[_0xe535[10]](function(_0x70a6x9){if(!_0x70a6x9){return _0x70a6x6[_0xe535[13]](404)};return _0x70a6x9[_0xe535[24]]()})[_0xe535[7]](function(_0x70a6x7){return handleError(_0x70a6x6,_0x70a6x7)})};function handleError(_0x70a6x6,_0x70a6x7){return _0x70a6x6[_0xe535[9]](500)[_0xe535[8]](_0x70a6x7)} \ No newline at end of file diff --git a/server/api/mail_server_in/mail_server_in.events.js b/server/api/mail_server_in/mail_server_in.events.js index 540e207..497948d 100644 --- a/server/api/mail_server_in/mail_server_in.events.js +++ b/server/api/mail_server_in/mail_server_in.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const MailServerIn = require('../../models').MailServerIn; - -var MailServerInEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -MailServerInEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - MailServerIn.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - MailServerInEvents.emit(event + ':' + doc._id, doc); - MailServerInEvents.emit(event, doc); - done(null); - } -} - -module.exports = MailServerInEvents; +var _0x4782=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x4D\x61\x69\x6C\x53\x65\x72\x76\x65\x72\x49\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x4782[0];const EventEmitter=require(_0x4782[1]);const MailServerIn=require(_0x4782[3])[_0x4782[2]];var MailServerInEvents= new EventEmitter();MailServerInEvents[_0x4782[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x4782[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x4782[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x4782[6]};for(var e in events){var event=events[e];MailServerIn[_0x4782[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x38fbx8,_0x38fbx9,_0x38fbxa){MailServerInEvents[_0x4782[10]](event+ _0x4782[8]+ _0x38fbx8[_0x4782[9]],_0x38fbx8);MailServerInEvents[_0x4782[10]](event,_0x38fbx8);_0x38fbxa(null)}}module[_0x4782[11]]= MailServerInEvents \ No newline at end of file diff --git a/server/api/mail_server_in/mail_server_in.socket.js b/server/api/mail_server_in/mail_server_in.socket.js index b6bcc34..9a2fb1b 100644 --- a/server/api/mail_server_in/mail_server_in.socket.js +++ b/server/api/mail_server_in/mail_server_in.socket.js @@ -1,42 +1 @@ -'use strict'; - -const MailServerInEvents = require('./mail_server_in.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('mail_server_in:' + event, socket); - - MailServerInEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - switch (event) { - case 'mail_server_in:save': - if (doc.changed('state')) { - socket.emit('mail_server_in:state', doc); - } else { - socket.emit('mail_server_in:save', doc); - } - break; - - case 'mail_server_in:remove': - socket.emit(event, doc); - break; - - default: - } - }; -} - -function removeListener(event, listener) { - return function() { - MailServerInEvents.removeListener(event, listener); - }; -} +var _0xbeec=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x6D\x61\x69\x6C\x5F\x73\x65\x72\x76\x65\x72\x5F\x69\x6E\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x6D\x61\x69\x6C\x5F\x73\x65\x72\x76\x65\x72\x5F\x69\x6E\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x73\x74\x61\x74\x65","\x63\x68\x61\x6E\x67\x65\x64","\x6D\x61\x69\x6C\x5F\x73\x65\x72\x76\x65\x72\x5F\x69\x6E\x3A\x73\x74\x61\x74\x65","\x65\x6D\x69\x74","\x6D\x61\x69\x6C\x5F\x73\x65\x72\x76\x65\x72\x5F\x69\x6E\x3A\x73\x61\x76\x65","\x6D\x61\x69\x6C\x5F\x73\x65\x72\x76\x65\x72\x5F\x69\x6E\x3A\x72\x65\x6D\x6F\x76\x65","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xbeec[0];const MailServerInEvents=require(_0xbeec[1]);var events=[_0xbeec[2],_0xbeec[3]];exports[_0xbeec[4]]= function(_0xb52bx3){for(var _0xb52bx4=0,_0xb52bx5=events[_0xbeec[5]];_0xb52bx4< _0xb52bx5;_0xb52bx4++){var _0xb52bx6=events[_0xb52bx4];var _0xb52bx7=createListener(_0xbeec[6]+ _0xb52bx6,_0xb52bx3);MailServerInEvents[_0xbeec[7]](_0xb52bx6,_0xb52bx7);_0xb52bx3[_0xbeec[7]](_0xbeec[8],removeListener(_0xb52bx6,_0xb52bx7))}};function createListener(_0xb52bx6,_0xb52bx3){return function(_0xb52bx9){switch(_0xb52bx6){case _0xbeec[13]:if(_0xb52bx9[_0xbeec[10]](_0xbeec[9])){_0xb52bx3[_0xbeec[12]](_0xbeec[11],_0xb52bx9)}else {_0xb52bx3[_0xbeec[12]](_0xbeec[13],_0xb52bx9)};break;case _0xbeec[14]:_0xb52bx3[_0xbeec[12]](_0xb52bx6,_0xb52bx9);break;default:}}}function removeListener(_0xb52bx6,_0xb52bx7){return function(){MailServerInEvents[_0xbeec[15]](_0xb52bx6,_0xb52bx7)}} \ No newline at end of file diff --git a/server/api/mail_server_out/index.js b/server/api/mail_server_out/index.js index 323abb4..6d08a4b 100644 --- a/server/api/mail_server_out/index.js +++ b/server/api/mail_server_out/index.js @@ -1,19 +1 @@ -'use strict'; - -var express = require('express'); - -var controller = require('./mail_server_out.controller'); -var auth = require('../../auth/auth.service'); -var license = require('../../config/license/license.service'); - -var router = express.Router(); - -router.get('/', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin']), controller.index); -router.get('/service', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin']), controller.indexService); -router.get('/:id', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin']), controller.show); -router.get('/:id/test', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin']), controller.test); -router.post('/', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin']), controller.create); -router.put('/:id', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin']), controller.update); -router.delete('/:id', license.isValidDate(), license.hasMail(), auth.isAuthenticated(), auth.hasModule([9], ['admin']), controller.destroy); - -module.exports = router; +var _0xc1a8=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x6D\x61\x69\x6C\x5F\x73\x65\x72\x76\x65\x72\x5F\x6F\x75\x74\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x68\x61\x73\x4D\x61\x69\x6C","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x73\x65\x72\x76\x69\x63\x65","\x69\x6E\x64\x65\x78\x53\x65\x72\x76\x69\x63\x65","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x2F\x3A\x69\x64\x2F\x74\x65\x73\x74","\x74\x65\x73\x74","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0xc1a8[0];var express=require(_0xc1a8[1]);var controller=require(_0xc1a8[2]);var auth=require(_0xc1a8[3]);var license=require(_0xc1a8[4]);var router=express.Router();router[_0xc1a8[12]](_0xc1a8[5],license[_0xc1a8[6]](),license[_0xc1a8[7]](),auth[_0xc1a8[8]](),auth[_0xc1a8[10]]([9],[_0xc1a8[9]]),controller[_0xc1a8[11]]);router[_0xc1a8[12]](_0xc1a8[13],license[_0xc1a8[6]](),license[_0xc1a8[7]](),auth[_0xc1a8[8]](),auth[_0xc1a8[10]]([9],[_0xc1a8[9]]),controller[_0xc1a8[14]]);router[_0xc1a8[12]](_0xc1a8[15],license[_0xc1a8[6]](),license[_0xc1a8[7]](),auth[_0xc1a8[8]](),auth[_0xc1a8[10]]([9],[_0xc1a8[9]]),controller[_0xc1a8[16]]);router[_0xc1a8[12]](_0xc1a8[17],license[_0xc1a8[6]](),license[_0xc1a8[7]](),auth[_0xc1a8[8]](),auth[_0xc1a8[10]]([9],[_0xc1a8[9]]),controller[_0xc1a8[18]]);router[_0xc1a8[20]](_0xc1a8[5],license[_0xc1a8[6]](),license[_0xc1a8[7]](),auth[_0xc1a8[8]](),auth[_0xc1a8[10]]([9],[_0xc1a8[9]]),controller[_0xc1a8[19]]);router[_0xc1a8[22]](_0xc1a8[15],license[_0xc1a8[6]](),license[_0xc1a8[7]](),auth[_0xc1a8[8]](),auth[_0xc1a8[10]]([9],[_0xc1a8[9]]),controller[_0xc1a8[21]]);router[_0xc1a8[24]](_0xc1a8[15],license[_0xc1a8[6]](),license[_0xc1a8[7]](),auth[_0xc1a8[8]](),auth[_0xc1a8[10]]([9],[_0xc1a8[9]]),controller[_0xc1a8[23]]);module[_0xc1a8[25]]= router \ No newline at end of file diff --git a/server/api/mail_server_out/mail_server_out.controller.js b/server/api/mail_server_out/mail_server_out.controller.js index 00117cf..d0b5446 100644 --- a/server/api/mail_server_out/mail_server_out.controller.js +++ b/server/api/mail_server_out/mail_server_out.controller.js @@ -1,157 +1 @@ -'use strict'; - -var _ = require('lodash'); -var MailServerOut = require('../../models').MailServerOut; -var MailMessage = require('../../models').MailMessage; -var MailAccount = require('../../models').MailAccount; -var sequelize = require('../../models').sequelize; -var Util = require('../../config/util'); - -// Get list of mailServerOuts -exports.index = function(req, res, next) { - return MailServerOut - .findAndCountAll(Util.getQuery(req.query)) - .then(function(result) { - return res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.indexService = function(req, res) { - return MailServerOut - .findOne({ - where: { - service: true - } - }) - .then(function(mailServerOut) { - if (!mailServerOut) { - throw new Error("Mail service account not found."); - } - - return res.status(200).send(mailServerOut); - }) - .catch(function(err) { - return handleError(res, { - message: err.message - }); - }); -}; - -// Get a single mailServerOut -exports.show = function(req, res) { - return MailServerOut - .findById(req.params.id) - .then(function(mailServerOut) { - if (!mailServerOut) { - return res.sendStatus(404); - } - return res.send(mailServerOut); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get a single mailAccount -exports.showCustom = function(req, res, next) { - return MailAccount - .findOne({ - where: { - custom: true - } - }) - .then(function(mailAccount) { - if (!mailAccount) { - return res.sendStatus(404); - } - return res.send(mailAccount); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Creates a new mailServerOut in the DB. -exports.create = function(req, res) { - return MailServerOut - .create(req.body) - .then(function(mailServerOut) { - return res.status(201).send(mailServerOut); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Updates an existing mailServerOut in the DB. -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - - req.body.state = 'CONNECTING'; - - return MailServerOut - .findById(req.params.id) - .then(function(mailServerOut) { - if (!mailServerOut) { - return res.sendStatus(404); - } - var updated = _.merge(mailServerOut, req.body); - return updated - .save(); - }) - .then(function(mailServerOut) { - return res.status(200).send(mailServerOut); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes a mailServerOut from the DB. -exports.destroy = function(req, res) { - return MailServerOut - .findById(req.params.id) - .then(function(mailServerOut) { - if (!mailServerOut) { - return res.sendStatus(404); - } - - return mailServerOut - .destroy(); - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.test = function(req, res) { - var _mailServerOut; - var _mailMessage; - - return MailServerOut - .findById(req.params.id) - .then(function(mailServerOut) { - if (!mailServerOut) { - return res.sendStatus(404); - } - return mailServerOut - .update({ - state: 'CONNECTING', - }); - }) - .then(function() { - return res.status(201).send(_mailMessage); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0x6212=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x4D\x61\x69\x6C\x53\x65\x72\x76\x65\x72\x4F\x75\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x4D\x61\x69\x6C\x4D\x65\x73\x73\x61\x67\x65","\x4D\x61\x69\x6C\x41\x63\x63\x6F\x75\x6E\x74","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x69\x6E\x64\x65\x78\x53\x65\x72\x76\x69\x63\x65","\x6D\x65\x73\x73\x61\x67\x65","\x4D\x61\x69\x6C\x20\x73\x65\x72\x76\x69\x63\x65\x20\x61\x63\x63\x6F\x75\x6E\x74\x20\x6E\x6F\x74\x20\x66\x6F\x75\x6E\x64\x2E","\x66\x69\x6E\x64\x4F\x6E\x65","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x73\x68\x6F\x77\x43\x75\x73\x74\x6F\x6D","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x73\x74\x61\x74\x65","\x43\x4F\x4E\x4E\x45\x43\x54\x49\x4E\x47","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x64\x65\x73\x74\x72\x6F\x79","\x74\x65\x73\x74"];_0x6212[0];var _=require(_0x6212[1]);var MailServerOut=require(_0x6212[3])[_0x6212[2]];var MailMessage=require(_0x6212[3])[_0x6212[4]];var MailAccount=require(_0x6212[3])[_0x6212[5]];var sequelize=require(_0x6212[3])[_0x6212[6]];var Util=require(_0x6212[7]);exports[_0x6212[8]]= function(_0xd129x7,_0xd129x8,_0xd129x9){return MailServerOut[_0x6212[15]](Util[_0x6212[14]](_0xd129x7[_0x6212[13]]))[_0x6212[12]](function(_0xd129xb){return _0xd129x8[_0x6212[11]](200)[_0x6212[10]](_0xd129xb)})[_0x6212[9]](function(_0xd129xa){return handleError(_0xd129x8,_0xd129xa)})};exports[_0x6212[16]]= function(_0xd129x7,_0xd129x8){return MailServerOut[_0x6212[19]]({where:{service:true}})[_0x6212[12]](function(_0xd129xc){if(!_0xd129xc){throw new Error(_0x6212[18])};return _0xd129x8[_0x6212[11]](200)[_0x6212[10]](_0xd129xc)})[_0x6212[9]](function(_0xd129xa){return handleError(_0xd129x8,{message:_0xd129xa[_0x6212[17]]})})};exports[_0x6212[20]]= function(_0xd129x7,_0xd129x8){return MailServerOut[_0x6212[24]](_0xd129x7[_0x6212[23]][_0x6212[22]])[_0x6212[12]](function(_0xd129xc){if(!_0xd129xc){return _0xd129x8[_0x6212[21]](404)};return _0xd129x8[_0x6212[10]](_0xd129xc)})[_0x6212[9]](function(_0xd129xa){return handleError(_0xd129x8,_0xd129xa)})};exports[_0x6212[25]]= function(_0xd129x7,_0xd129x8,_0xd129x9){return MailAccount[_0x6212[19]]({where:{custom:true}})[_0x6212[12]](function(_0xd129xd){if(!_0xd129xd){return _0xd129x8[_0x6212[21]](404)};return _0xd129x8[_0x6212[10]](_0xd129xd)})[_0x6212[9]](function(_0xd129xa){return handleError(_0xd129x8,_0xd129xa)})};exports[_0x6212[26]]= function(_0xd129x7,_0xd129x8){return MailServerOut[_0x6212[26]](_0xd129x7[_0x6212[27]])[_0x6212[12]](function(_0xd129xc){return _0xd129x8[_0x6212[11]](201)[_0x6212[10]](_0xd129xc)})[_0x6212[9]](function(_0xd129xa){return handleError(_0xd129x8,_0xd129xa)})};exports[_0x6212[28]]= function(_0xd129x7,_0xd129x8){if(_0xd129x7[_0x6212[27]][_0x6212[22]]){delete _0xd129x7[_0x6212[27]][_0x6212[22]]};_0xd129x7[_0x6212[27]][_0x6212[29]]= _0x6212[30];return MailServerOut[_0x6212[24]](_0xd129x7[_0x6212[23]][_0x6212[22]])[_0x6212[12]](function(_0xd129xc){if(!_0xd129xc){return _0xd129x8[_0x6212[21]](404)};var _0xd129xe=_[_0x6212[31]](_0xd129xc,_0xd129x7[_0x6212[27]]);return _0xd129xe[_0x6212[32]]()})[_0x6212[12]](function(_0xd129xc){return _0xd129x8[_0x6212[11]](200)[_0x6212[10]](_0xd129xc)})[_0x6212[9]](function(_0xd129xa){return handleError(_0xd129x8,_0xd129xa)})};exports[_0x6212[33]]= function(_0xd129x7,_0xd129x8){return MailServerOut[_0x6212[24]](_0xd129x7[_0x6212[23]][_0x6212[22]])[_0x6212[12]](function(_0xd129xc){if(!_0xd129xc){return _0xd129x8[_0x6212[21]](404)};return _0xd129xc[_0x6212[33]]()})[_0x6212[12]](function(){return _0xd129x8[_0x6212[21]](204)})[_0x6212[9]](function(_0xd129xa){return handleError(_0xd129x8,_0xd129xa)})};exports[_0x6212[34]]= function(_0xd129x7,_0xd129x8){var _0xd129xf;var _0xd129x10;return MailServerOut[_0x6212[24]](_0xd129x7[_0x6212[23]][_0x6212[22]])[_0x6212[12]](function(_0xd129xc){if(!_0xd129xc){return _0xd129x8[_0x6212[21]](404)};return _0xd129xc[_0x6212[28]]({state:_0x6212[30]})})[_0x6212[12]](function(){return _0xd129x8[_0x6212[11]](201)[_0x6212[10]](_0xd129x10)})};function handleError(_0xd129x8,_0xd129xa){return _0xd129x8[_0x6212[11]](500)[_0x6212[10]](_0xd129xa)} \ No newline at end of file diff --git a/server/api/mail_server_out/mail_server_out.events.js b/server/api/mail_server_out/mail_server_out.events.js index 997dd0f..abf32ae 100644 --- a/server/api/mail_server_out/mail_server_out.events.js +++ b/server/api/mail_server_out/mail_server_out.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const MailServerOut = require('../../models').MailServerOut; - -var MailServerOutEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -MailServerOutEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - MailServerOut.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - MailServerOutEvents.emit(event + ':' + doc._id, doc); - MailServerOutEvents.emit(event, doc); - done(null); - } -} - -module.exports = MailServerOutEvents; +var _0xfc95=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x4D\x61\x69\x6C\x53\x65\x72\x76\x65\x72\x4F\x75\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xfc95[0];const EventEmitter=require(_0xfc95[1]);const MailServerOut=require(_0xfc95[3])[_0xfc95[2]];var MailServerOutEvents= new EventEmitter();MailServerOutEvents[_0xfc95[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xfc95[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xfc95[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xfc95[6]};for(var e in events){var event=events[e];MailServerOut[_0xfc95[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x2a90x8,_0x2a90x9,_0x2a90xa){MailServerOutEvents[_0xfc95[10]](event+ _0xfc95[8]+ _0x2a90x8[_0xfc95[9]],_0x2a90x8);MailServerOutEvents[_0xfc95[10]](event,_0x2a90x8);_0x2a90xa(null)}}module[_0xfc95[11]]= MailServerOutEvents \ No newline at end of file diff --git a/server/api/mail_server_out/mail_server_out.socket.js b/server/api/mail_server_out/mail_server_out.socket.js index 4b7bf76..78eb9c7 100644 --- a/server/api/mail_server_out/mail_server_out.socket.js +++ b/server/api/mail_server_out/mail_server_out.socket.js @@ -1,42 +1 @@ -'use strict'; - -const MailServerOutEvents = require('./mail_server_out.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('mail_server_out:' + event, socket); - - MailServerOutEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - switch (event) { - case 'mail_server_out:save': - if (doc.changed('state')) { - socket.emit('mail_server_out:state', doc); - } else { - socket.emit('mail_server_out:save', doc); - } - break; - - case 'mail_server_out:remove': - socket.emit(event, doc); - break; - - default: - } - }; -} - -function removeListener(event, listener) { - return function() { - MailServerOutEvents.removeListener(event, listener); - }; -} +var _0x4224=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x6D\x61\x69\x6C\x5F\x73\x65\x72\x76\x65\x72\x5F\x6F\x75\x74\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x6D\x61\x69\x6C\x5F\x73\x65\x72\x76\x65\x72\x5F\x6F\x75\x74\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x73\x74\x61\x74\x65","\x63\x68\x61\x6E\x67\x65\x64","\x6D\x61\x69\x6C\x5F\x73\x65\x72\x76\x65\x72\x5F\x6F\x75\x74\x3A\x73\x74\x61\x74\x65","\x65\x6D\x69\x74","\x6D\x61\x69\x6C\x5F\x73\x65\x72\x76\x65\x72\x5F\x6F\x75\x74\x3A\x73\x61\x76\x65","\x6D\x61\x69\x6C\x5F\x73\x65\x72\x76\x65\x72\x5F\x6F\x75\x74\x3A\x72\x65\x6D\x6F\x76\x65","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x4224[0];const MailServerOutEvents=require(_0x4224[1]);var events=[_0x4224[2],_0x4224[3]];exports[_0x4224[4]]= function(_0x9722x3){for(var _0x9722x4=0,_0x9722x5=events[_0x4224[5]];_0x9722x4< _0x9722x5;_0x9722x4++){var _0x9722x6=events[_0x9722x4];var _0x9722x7=createListener(_0x4224[6]+ _0x9722x6,_0x9722x3);MailServerOutEvents[_0x4224[7]](_0x9722x6,_0x9722x7);_0x9722x3[_0x4224[7]](_0x4224[8],removeListener(_0x9722x6,_0x9722x7))}};function createListener(_0x9722x6,_0x9722x3){return function(_0x9722x9){switch(_0x9722x6){case _0x4224[13]:if(_0x9722x9[_0x4224[10]](_0x4224[9])){_0x9722x3[_0x4224[12]](_0x4224[11],_0x9722x9)}else {_0x9722x3[_0x4224[12]](_0x4224[13],_0x9722x9)};break;case _0x4224[14]:_0x9722x3[_0x4224[12]](_0x9722x6,_0x9722x9);break;default:}}}function removeListener(_0x9722x6,_0x9722x7){return function(){MailServerOutEvents[_0x4224[15]](_0x9722x6,_0x9722x7)}} \ No newline at end of file diff --git a/server/api/metric/index.js b/server/api/metric/index.js index b802bb1..137ccdd 100644 --- a/server/api/metric/index.js +++ b/server/api/metric/index.js @@ -1,18 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./metric.controller'); -var auth = require('../../auth/auth.service'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), auth.hasModule([17], ['admin']), controller.index); -router.get('/table', auth.isAuthenticated(), auth.hasModule([17], ['admin']), controller.getMetricsByTable); -router.get('/:id', auth.isAuthenticated(), auth.hasModule([17], ['admin']), controller.show); -router.post('/', auth.isAuthenticated(), auth.hasModule([17], ['admin']), controller.create); -router.put('/:id', auth.isAuthenticated(), auth.hasModule([17], ['admin']), controller.update); -router.patch('/:id', auth.isAuthenticated(), auth.hasModule([17], ['admin']), controller.update); -router.delete('/', auth.isAuthenticated(), auth.hasModule([17], ['admin']), controller.bulkDestroy); -router.delete('/:id', auth.isAuthenticated(), auth.hasModule([17], ['admin']), controller.destroy); - -module.exports = router; +var _0xa525=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x6D\x65\x74\x72\x69\x63\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x74\x61\x62\x6C\x65","\x67\x65\x74\x4D\x65\x74\x72\x69\x63\x73\x42\x79\x54\x61\x62\x6C\x65","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x70\x61\x74\x63\x68","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0xa525[0];var express=require(_0xa525[1]);var controller=require(_0xa525[2]);var auth=require(_0xa525[3]);var router=express.Router();router[_0xa525[9]](_0xa525[4],auth[_0xa525[5]](),auth[_0xa525[7]]([17],[_0xa525[6]]),controller[_0xa525[8]]);router[_0xa525[9]](_0xa525[10],auth[_0xa525[5]](),auth[_0xa525[7]]([17],[_0xa525[6]]),controller[_0xa525[11]]);router[_0xa525[9]](_0xa525[12],auth[_0xa525[5]](),auth[_0xa525[7]]([17],[_0xa525[6]]),controller[_0xa525[13]]);router[_0xa525[15]](_0xa525[4],auth[_0xa525[5]](),auth[_0xa525[7]]([17],[_0xa525[6]]),controller[_0xa525[14]]);router[_0xa525[17]](_0xa525[12],auth[_0xa525[5]](),auth[_0xa525[7]]([17],[_0xa525[6]]),controller[_0xa525[16]]);router[_0xa525[18]](_0xa525[12],auth[_0xa525[5]](),auth[_0xa525[7]]([17],[_0xa525[6]]),controller[_0xa525[16]]);router[_0xa525[20]](_0xa525[4],auth[_0xa525[5]](),auth[_0xa525[7]]([17],[_0xa525[6]]),controller[_0xa525[19]]);router[_0xa525[20]](_0xa525[12],auth[_0xa525[5]](),auth[_0xa525[7]]([17],[_0xa525[6]]),controller[_0xa525[21]]);module[_0xa525[22]]= router \ No newline at end of file diff --git a/server/api/metric/metric.controller.js b/server/api/metric/metric.controller.js index 0b82a6a..105b15e 100644 --- a/server/api/metric/metric.controller.js +++ b/server/api/metric/metric.controller.js @@ -1,135 +1 @@ -'use strict'; - -var _ = require('lodash'); -var Metric = require('../../models').Metric; -var util = require('util'); -var Util = require('../../config/util'); -var sequelize = require('../../models').sequelize; - -// Get list of metrics -exports.index = function(req, res, next) { - return Metric - .findAndCountAll(Util.getQuery(req.query)) - .then(function(result) { - return res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.getMetricsByTable = function(req, res) { - return Metric - .findAll({ - where: { - table: req.query.table - } - }) - .then(function(metrics) { - if (!metrics) { - return res.sendStatus(404); - } - return res.status(200).send({ - count: metrics.length, - rows: metrics - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get a single metric -exports.show = function(req, res) { - return Metric - .findById(req.params.id) - .then(function(metric) { - if (!metric) { - return res.sendStatus(404); - } - return res.send(metric); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Creates a new metric in the DB. -exports.create = function(req, res) { - return Metric - .create(req.body) - .then(function(metric) { - return res.status(201).send(metric); - }) - .catch(sequelize.UniqueConstraintError, function(err) { - err.translatedMessage = 'MESSAGE_EXIST_METRIC'; - err.message = 'A Metric with that name already exists'; - return res.status(500).send(err); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Updates an existing metric in the DB. -exports.update = function(req, res) { - return Metric - .findById(req.params.id) - .then(function(metric) { - if (!metric) { - return res.sendStatus(404); - } - var updated = _.merge(metric, req.body); - return updated.save(); - }) - .then(function() { - return res.sendStatus(200); - }) - .catch(sequelize.UniqueConstraintError, function(err) { - err.translatedMessage = 'MESSAGE_EXIST_METRIC'; - err.message = 'A Metric with that name already exists'; - return res.status(500).send(err); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -// Deletes a metric from the DB. -exports.destroy = function(req, res) { - return Metric - .findById(req.params.id) - .then(function(metric) { - if (!metric) { - return res.sendStatus(404); - } - return metric.destroy(); - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.bulkDestroy = function(req, res) { - return Metric - .destroy({ - where: { - id: req.query.ids - }, - individualHooks: true - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0xee41=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x4D\x65\x74\x72\x69\x63","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x75\x74\x69\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x67\x65\x74\x4D\x65\x74\x72\x69\x63\x73\x42\x79\x54\x61\x62\x6C\x65","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x6C\x65\x6E\x67\x74\x68","\x74\x61\x62\x6C\x65","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x68\x6F\x77","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x74\x72\x61\x6E\x73\x6C\x61\x74\x65\x64\x4D\x65\x73\x73\x61\x67\x65","\x4D\x45\x53\x53\x41\x47\x45\x5F\x45\x58\x49\x53\x54\x5F\x4D\x45\x54\x52\x49\x43","\x6D\x65\x73\x73\x61\x67\x65","\x41\x20\x4D\x65\x74\x72\x69\x63\x20\x77\x69\x74\x68\x20\x74\x68\x61\x74\x20\x6E\x61\x6D\x65\x20\x61\x6C\x72\x65\x61\x64\x79\x20\x65\x78\x69\x73\x74\x73","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x6C\x6F\x67","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x64\x65\x73\x74\x72\x6F\x79","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73"];_0xee41[0];var _=require(_0xee41[1]);var Metric=require(_0xee41[3])[_0xee41[2]];var util=require(_0xee41[4]);var Util=require(_0xee41[5]);var sequelize=require(_0xee41[3])[_0xee41[6]];exports[_0xee41[7]]= function(_0x2c37x6,_0x2c37x7,_0x2c37x8){return Metric[_0xee41[14]](Util[_0xee41[13]](_0x2c37x6[_0xee41[12]]))[_0xee41[11]](function(_0x2c37xa){return _0x2c37x7[_0xee41[10]](200)[_0xee41[9]](_0x2c37xa)})[_0xee41[8]](function(_0x2c37x9){return handleError(_0x2c37x7,_0x2c37x9)})};exports[_0xee41[15]]= function(_0x2c37x6,_0x2c37x7){return Metric[_0xee41[19]]({where:{table:_0x2c37x6[_0xee41[12]][_0xee41[18]]}})[_0xee41[11]](function(_0x2c37xb){if(!_0x2c37xb){return _0x2c37x7[_0xee41[16]](404)};return _0x2c37x7[_0xee41[10]](200)[_0xee41[9]]({count:_0x2c37xb[_0xee41[17]],rows:_0x2c37xb})})[_0xee41[8]](function(_0x2c37x9){return handleError(_0x2c37x7,_0x2c37x9)})};exports[_0xee41[20]]= function(_0x2c37x6,_0x2c37x7){return Metric[_0xee41[23]](_0x2c37x6[_0xee41[22]][_0xee41[21]])[_0xee41[11]](function(_0x2c37xc){if(!_0x2c37xc){return _0x2c37x7[_0xee41[16]](404)};return _0x2c37x7[_0xee41[9]](_0x2c37xc)})[_0xee41[8]](function(_0x2c37x9){return handleError(_0x2c37x7,_0x2c37x9)})};exports[_0xee41[24]]= function(_0x2c37x6,_0x2c37x7){return Metric[_0xee41[24]](_0x2c37x6[_0xee41[29]])[_0xee41[11]](function(_0x2c37xc){return _0x2c37x7[_0xee41[10]](201)[_0xee41[9]](_0x2c37xc)})[_0xee41[8]](sequelize.UniqueConstraintError,function(_0x2c37x9){_0x2c37x9[_0xee41[25]]= _0xee41[26];_0x2c37x9[_0xee41[27]]= _0xee41[28];return _0x2c37x7[_0xee41[10]](500)[_0xee41[9]](_0x2c37x9)})[_0xee41[8]](function(_0x2c37x9){return handleError(_0x2c37x7,_0x2c37x9)})};exports[_0xee41[30]]= function(_0x2c37x6,_0x2c37x7){return Metric[_0xee41[23]](_0x2c37x6[_0xee41[22]][_0xee41[21]])[_0xee41[11]](function(_0x2c37xc){if(!_0x2c37xc){return _0x2c37x7[_0xee41[16]](404)};var _0x2c37xd=_[_0xee41[32]](_0x2c37xc,_0x2c37x6[_0xee41[29]]);return _0x2c37xd[_0xee41[33]]()})[_0xee41[11]](function(){return _0x2c37x7[_0xee41[16]](200)})[_0xee41[8]](sequelize.UniqueConstraintError,function(_0x2c37x9){_0x2c37x9[_0xee41[25]]= _0xee41[26];_0x2c37x9[_0xee41[27]]= _0xee41[28];return _0x2c37x7[_0xee41[10]](500)[_0xee41[9]](_0x2c37x9)})[_0xee41[8]](function(_0x2c37x9){console[_0xee41[31]](_0x2c37x9);return handleError(_0x2c37x7,_0x2c37x9)})};exports[_0xee41[34]]= function(_0x2c37x6,_0x2c37x7){return Metric[_0xee41[23]](_0x2c37x6[_0xee41[22]][_0xee41[21]])[_0xee41[11]](function(_0x2c37xc){if(!_0x2c37xc){return _0x2c37x7[_0xee41[16]](404)};return _0x2c37xc[_0xee41[34]]()})[_0xee41[11]](function(){return _0x2c37x7[_0xee41[16]](204)})[_0xee41[8]](function(_0x2c37x9){return handleError(_0x2c37x7,_0x2c37x9)})};exports[_0xee41[35]]= function(_0x2c37x6,_0x2c37x7){return Metric[_0xee41[34]]({where:{id:_0x2c37x6[_0xee41[12]][_0xee41[36]]},individualHooks:true})[_0xee41[11]](function(){return _0x2c37x7[_0xee41[16]](204)})[_0xee41[8]](function(_0x2c37x9){return handleError(_0x2c37x7,_0x2c37x9)})};function handleError(_0x2c37x7,_0x2c37x9){return _0x2c37x7[_0xee41[10]](500)[_0xee41[9]](_0x2c37x9)} \ No newline at end of file diff --git a/server/api/metric/metric.events.js b/server/api/metric/metric.events.js index 6aa5669..17bc8c0 100644 --- a/server/api/metric/metric.events.js +++ b/server/api/metric/metric.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const Metric = require('../../models').Metric; - -var MetricEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -MetricEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'update', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - Metric.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - MetricEvents.emit(event + ':' + doc._id, doc); - MetricEvents.emit(event, doc); - done(null); - } -} - -module.exports = MetricEvents; +var _0xa810=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x4D\x65\x74\x72\x69\x63","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x75\x70\x64\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xa810[0];const EventEmitter=require(_0xa810[1]);const Metric=require(_0xa810[3])[_0xa810[2]];var MetricEvents= new EventEmitter();MetricEvents[_0xa810[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xa810[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xa810[6],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xa810[7]};for(var e in events){var event=events[e];Metric[_0xa810[8]](e,emitEvent(event))};function emitEvent(event){return function(_0xa0d9x8,_0xa0d9x9,_0xa0d9xa){MetricEvents[_0xa810[11]](event+ _0xa810[9]+ _0xa0d9x8[_0xa810[10]],_0xa0d9x8);MetricEvents[_0xa810[11]](event,_0xa0d9x8);_0xa0d9xa(null)}}module[_0xa810[12]]= MetricEvents \ No newline at end of file diff --git a/server/api/metric/metric.socket.js b/server/api/metric/metric.socket.js index 80e152f..75831cb 100644 --- a/server/api/metric/metric.socket.js +++ b/server/api/metric/metric.socket.js @@ -1,54 +1 @@ -'use strict'; - -const MetricEvents = require('./metric.events'); -const ReportField = require('../../models').ReportField; - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('metric:' + event, socket); - - MetricEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - switch (event) { - case 'metric:save': - socket.emit(event, doc); - break; - case 'metric:update': - updateFields(doc); - break; - case 'metric:remove': - socket.emit(event, doc); - break; - - default: - } - }; -} - -function removeListener(event, listener) { - return function() { - MetricEvents.removeListener(event, listener); - }; -} - -function updateFields(doc) { - return ReportField.update({ - field: doc.metric - }, { - where: { - MetricId: doc.id - } - }) - .catch(function(err) { - console.log(err); - }); -} +var _0xf2e6=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x6D\x65\x74\x72\x69\x63\x2E\x65\x76\x65\x6E\x74\x73","\x52\x65\x70\x6F\x72\x74\x46\x69\x65\x6C\x64","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x6D\x65\x74\x72\x69\x63\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x6D\x65\x74\x72\x69\x63\x3A\x73\x61\x76\x65","\x6D\x65\x74\x72\x69\x63\x3A\x75\x70\x64\x61\x74\x65","\x6D\x65\x74\x72\x69\x63\x3A\x72\x65\x6D\x6F\x76\x65","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72","\x6C\x6F\x67","\x63\x61\x74\x63\x68","\x6D\x65\x74\x72\x69\x63","\x69\x64","\x75\x70\x64\x61\x74\x65"];_0xf2e6[0];const MetricEvents=require(_0xf2e6[1]);const ReportField=require(_0xf2e6[3])[_0xf2e6[2]];var events=[_0xf2e6[4],_0xf2e6[5]];exports[_0xf2e6[6]]= function(_0xe9f6x4){for(var _0xe9f6x5=0,_0xe9f6x6=events[_0xf2e6[7]];_0xe9f6x5< _0xe9f6x6;_0xe9f6x5++){var _0xe9f6x7=events[_0xe9f6x5];var _0xe9f6x8=createListener(_0xf2e6[8]+ _0xe9f6x7,_0xe9f6x4);MetricEvents[_0xf2e6[9]](_0xe9f6x7,_0xe9f6x8);_0xe9f6x4[_0xf2e6[9]](_0xf2e6[10],removeListener(_0xe9f6x7,_0xe9f6x8))}};function createListener(_0xe9f6x7,_0xe9f6x4){return function(_0xe9f6xa){switch(_0xe9f6x7){case _0xf2e6[12]:_0xe9f6x4[_0xf2e6[11]](_0xe9f6x7,_0xe9f6xa);break;case _0xf2e6[13]:updateFields(_0xe9f6xa);break;case _0xf2e6[14]:_0xe9f6x4[_0xf2e6[11]](_0xe9f6x7,_0xe9f6xa);break;default:}}}function removeListener(_0xe9f6x7,_0xe9f6x8){return function(){MetricEvents[_0xf2e6[15]](_0xe9f6x7,_0xe9f6x8)}}function updateFields(_0xe9f6xa){return ReportField[_0xf2e6[20]]({field:_0xe9f6xa[_0xf2e6[18]]},{where:{MetricId:_0xe9f6xa[_0xf2e6[19]]}})[_0xf2e6[17]](function(_0xe9f6xd){console[_0xf2e6[16]](_0xe9f6xd)})} \ No newline at end of file diff --git a/server/api/module/index.js b/server/api/module/index.js index b57548b..94dd5f6 100644 --- a/server/api/module/index.js +++ b/server/api/module/index.js @@ -1,11 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./module.controller'); -var auth = require('../../auth/auth.service'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), auth.hasRole('admin'), controller.index); - -module.exports = router; +var _0xb178=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x6D\x6F\x64\x75\x6C\x65\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x52\x6F\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xb178[0];var express=require(_0xb178[1]);var controller=require(_0xb178[2]);var auth=require(_0xb178[3]);var router=express.Router();router[_0xb178[9]](_0xb178[4],auth[_0xb178[5]](),auth[_0xb178[7]](_0xb178[6]),controller[_0xb178[8]]);module[_0xb178[10]]= router \ No newline at end of file diff --git a/server/api/module/module.controller.js b/server/api/module/module.controller.js index 5ccc934..af6748a 100644 --- a/server/api/module/module.controller.js +++ b/server/api/module/module.controller.js @@ -1,28 +1 @@ -'use strict'; - -var _ = require('lodash'); -var Module = require('../../models').Module; -var util = require('util'); -var Util = require('../../config/util'); -var sequelize = require('../../models').sequelize; - -// Get list of modules -exports.index = function(req, res, next) { - return Module - // .findAndCountAll(Util.getQuery(req.query)) - .findAndCountAll({ - include: [{ - all: true - }] - }) - .then(function(result) { - return res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0x7a1a=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x4D\x6F\x64\x75\x6C\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x75\x74\x69\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C"];_0x7a1a[0];var _=require(_0x7a1a[1]);var Module=require(_0x7a1a[3])[_0x7a1a[2]];var util=require(_0x7a1a[4]);var Util=require(_0x7a1a[5]);var sequelize=require(_0x7a1a[3])[_0x7a1a[6]];exports[_0x7a1a[7]]= function(_0x64b3x6,_0x64b3x7,_0x64b3x8){return Module[_0x7a1a[12]]({include:[{all:true}]})[_0x7a1a[11]](function(_0x64b3xa){return _0x64b3x7[_0x7a1a[10]](200)[_0x7a1a[9]](_0x64b3xa)})[_0x7a1a[8]](function(_0x64b3x9){return handleError(_0x64b3x7,_0x64b3x9)})};function handleError(_0x64b3x7,_0x64b3x9){return _0x64b3x7[_0x7a1a[10]](500)[_0x7a1a[9]](_0x64b3x9)} \ No newline at end of file diff --git a/server/api/module/module.events.js b/server/api/module/module.events.js index 2dbb456..d1d71c8 100644 --- a/server/api/module/module.events.js +++ b/server/api/module/module.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const Module = require('../../models').Module; - -var ModuleEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -ModuleEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - Module.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - ModuleEvents.emit(event + ':' + doc._id, doc); - ModuleEvents.emit(event, doc); - done(null); - } -} - -module.exports = ModuleEvents; +var _0x814f=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x4D\x6F\x64\x75\x6C\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x814f[0];const EventEmitter=require(_0x814f[1]);const Module=require(_0x814f[3])[_0x814f[2]];var ModuleEvents= new EventEmitter();ModuleEvents[_0x814f[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x814f[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x814f[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x814f[6]};for(var e in events){var event=events[e];Module[_0x814f[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xd83ax8,_0xd83ax9,_0xd83axa){ModuleEvents[_0x814f[10]](event+ _0x814f[8]+ _0xd83ax8[_0x814f[9]],_0xd83ax8);ModuleEvents[_0x814f[10]](event,_0xd83ax8);_0xd83axa(null)}}module[_0x814f[11]]= ModuleEvents \ No newline at end of file diff --git a/server/api/module/module.socket.js b/server/api/module/module.socket.js index ebccd0c..fce2406 100644 --- a/server/api/module/module.socket.js +++ b/server/api/module/module.socket.js @@ -1,28 +1 @@ -'use strict'; - -const ModuleEvents = require('./module.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('module:' + event, socket); - - ModuleEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - ModuleEvents.removeListener(event, listener); - }; -} +var _0x3733=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x6D\x6F\x64\x75\x6C\x65\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x6D\x6F\x64\x75\x6C\x65\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x3733[0];const ModuleEvents=require(_0x3733[1]);var events=[_0x3733[2],_0x3733[3]];exports[_0x3733[4]]= function(_0xf93cx3){for(var _0xf93cx4=0,_0xf93cx5=events[_0x3733[5]];_0xf93cx4< _0xf93cx5;_0xf93cx4++){var _0xf93cx6=events[_0xf93cx4];var _0xf93cx7=createListener(_0x3733[6]+ _0xf93cx6,_0xf93cx3);ModuleEvents[_0x3733[7]](_0xf93cx6,_0xf93cx7);_0xf93cx3[_0x3733[7]](_0x3733[8],removeListener(_0xf93cx6,_0xf93cx7))}};function createListener(_0xf93cx6,_0xf93cx3){return function(_0xf93cx9){_0xf93cx3[_0x3733[9]](_0xf93cx6,_0xf93cx9)}}function removeListener(_0xf93cx6,_0xf93cx7){return function(){ModuleEvents[_0x3733[10]](_0xf93cx6,_0xf93cx7)}} \ No newline at end of file diff --git a/server/api/motionbar/index.js b/server/api/motionbar/index.js index fd9d420..c589a80 100644 --- a/server/api/motionbar/index.js +++ b/server/api/motionbar/index.js @@ -1,11 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./motionbar.controller'); -var auth = require('../../auth/auth.service'); - -var router = express.Router(); - -router.get('/:action/:state', auth.isAuthenticated(), controller.action); - -module.exports = router; +var _0x2735=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x6D\x6F\x74\x69\x6F\x6E\x62\x61\x72\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F\x3A\x61\x63\x74\x69\x6F\x6E\x2F\x3A\x73\x74\x61\x74\x65","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x63\x74\x69\x6F\x6E","\x67\x65\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x2735[0];var express=require(_0x2735[1]);var controller=require(_0x2735[2]);var auth=require(_0x2735[3]);var router=express.Router();router[_0x2735[7]](_0x2735[4],auth[_0x2735[5]](),controller[_0x2735[6]]);module[_0x2735[8]]= router \ No newline at end of file diff --git a/server/api/motionbar/motionbar.controller.js b/server/api/motionbar/motionbar.controller.js index 275d338..8619b8c 100644 --- a/server/api/motionbar/motionbar.controller.js +++ b/server/api/motionbar/motionbar.controller.js @@ -1,32 +1 @@ -'use strict'; - -var _ = require('lodash'); -var Motionbar = require('../../models').Motionbar; - -// Get list of motionbars -exports.action = function(req, res) { - - if (!req.query.userId) { - return handleError(res, { - message: 'Use userId' - }); - } - - req.body.UserId = parseInt(req.query.userId, 10); - req.body.action = req.params.action; - req.body.state = req.params.state; - req.body.AdminId = req.user.id; - - return Motionbar - .create(req.body) - .then(function(action) { - return res.status(201).send(action); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0x81f9=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x4D\x6F\x74\x69\x6F\x6E\x62\x61\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x61\x63\x74\x69\x6F\x6E","\x75\x73\x65\x72\x49\x64","\x71\x75\x65\x72\x79","\x55\x73\x65\x20\x75\x73\x65\x72\x49\x64","\x55\x73\x65\x72\x49\x64","\x62\x6F\x64\x79","\x70\x61\x72\x61\x6D\x73","\x73\x74\x61\x74\x65","\x41\x64\x6D\x69\x6E\x49\x64","\x69\x64","\x75\x73\x65\x72","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x63\x72\x65\x61\x74\x65"];_0x81f9[0];var _=require(_0x81f9[1]);var Motionbar=require(_0x81f9[3])[_0x81f9[2]];exports[_0x81f9[4]]= function(_0x7677x3,_0x7677x4){if(!_0x7677x3[_0x81f9[6]][_0x81f9[5]]){return handleError(_0x7677x4,{message:_0x81f9[7]})};_0x7677x3[_0x81f9[9]][_0x81f9[8]]= parseInt(_0x7677x3[_0x81f9[6]][_0x81f9[5]],10);_0x7677x3[_0x81f9[9]][_0x81f9[4]]= _0x7677x3[_0x81f9[10]][_0x81f9[4]];_0x7677x3[_0x81f9[9]][_0x81f9[11]]= _0x7677x3[_0x81f9[10]][_0x81f9[11]];_0x7677x3[_0x81f9[9]][_0x81f9[12]]= _0x7677x3[_0x81f9[14]][_0x81f9[13]];return Motionbar[_0x81f9[19]](_0x7677x3[_0x81f9[9]])[_0x81f9[18]](function(_0x7677x6){return _0x7677x4[_0x81f9[17]](201)[_0x81f9[16]](_0x7677x6)})[_0x81f9[15]](function(_0x7677x5){return handleError(_0x7677x4,_0x7677x5)})};function handleError(_0x7677x4,_0x7677x5){return _0x7677x4[_0x81f9[17]](500)[_0x81f9[16]](_0x7677x5)} \ No newline at end of file diff --git a/server/api/motionbar/motionbar.events.js b/server/api/motionbar/motionbar.events.js index f84fb17..58b5eae 100644 --- a/server/api/motionbar/motionbar.events.js +++ b/server/api/motionbar/motionbar.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const Motionbar = require('../../models').Motionbar; - -var MotionbarEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -MotionbarEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - Motionbar.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - MotionbarEvents.emit(event + ':' + doc._id, doc); - MotionbarEvents.emit(event, doc); - done(null); - } -} - -module.exports = MotionbarEvents; +var _0x531b=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x4D\x6F\x74\x69\x6F\x6E\x62\x61\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x531b[0];const EventEmitter=require(_0x531b[1]);const Motionbar=require(_0x531b[3])[_0x531b[2]];var MotionbarEvents= new EventEmitter();MotionbarEvents[_0x531b[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x531b[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x531b[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x531b[6]};for(var e in events){var event=events[e];Motionbar[_0x531b[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x7df0x8,_0x7df0x9,_0x7df0xa){MotionbarEvents[_0x531b[10]](event+ _0x531b[8]+ _0x7df0x8[_0x531b[9]],_0x7df0x8);MotionbarEvents[_0x531b[10]](event,_0x7df0x8);_0x7df0xa(null)}}module[_0x531b[11]]= MotionbarEvents \ No newline at end of file diff --git a/server/api/motionbar/motionbar.socket.js b/server/api/motionbar/motionbar.socket.js index cf3aa56..e8e8f28 100644 --- a/server/api/motionbar/motionbar.socket.js +++ b/server/api/motionbar/motionbar.socket.js @@ -1,30 +1 @@ -'use strict'; - -const MotionbarEvents = require('./motionbar.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('motionbar:' + event, socket); - - MotionbarEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - if (socket.userId == doc.UserId) { - socket.emit(event, doc); - } - }; -} - -function removeListener(event, listener) { - return function() { - MotionbarEvents.removeListener(event, listener); - }; -} +var _0xe90b=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x6D\x6F\x74\x69\x6F\x6E\x62\x61\x72\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x6D\x6F\x74\x69\x6F\x6E\x62\x61\x72\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x75\x73\x65\x72\x49\x64","\x55\x73\x65\x72\x49\x64","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xe90b[0];const MotionbarEvents=require(_0xe90b[1]);var events=[_0xe90b[2],_0xe90b[3]];exports[_0xe90b[4]]= function(_0xb20fx3){for(var _0xb20fx4=0,_0xb20fx5=events[_0xe90b[5]];_0xb20fx4< _0xb20fx5;_0xb20fx4++){var _0xb20fx6=events[_0xb20fx4];var _0xb20fx7=createListener(_0xe90b[6]+ _0xb20fx6,_0xb20fx3);MotionbarEvents[_0xe90b[7]](_0xb20fx6,_0xb20fx7);_0xb20fx3[_0xe90b[7]](_0xe90b[8],removeListener(_0xb20fx6,_0xb20fx7))}};function createListener(_0xb20fx6,_0xb20fx3){return function(_0xb20fx9){if(_0xb20fx3[_0xe90b[9]]== _0xb20fx9[_0xe90b[10]]){_0xb20fx3[_0xe90b[11]](_0xb20fx6,_0xb20fx9)}}}function removeListener(_0xb20fx6,_0xb20fx7){return function(){MotionbarEvents[_0xe90b[12]](_0xb20fx6,_0xb20fx7)}} \ No newline at end of file diff --git a/server/api/network_externip/index.js b/server/api/network_externip/index.js index c9daa97..670ef05 100644 --- a/server/api/network_externip/index.js +++ b/server/api/network_externip/index.js @@ -1,16 +1 @@ -'use strict'; - -var express = require('express'); -var auth = require('../../auth/auth.service'); -var controller = require('./network_externip.controller'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), auth.hasRole('admin'), controller.index); -router.get('/:id', auth.isAuthenticated(), auth.hasRole('admin'), controller.show); -router.post('/', auth.isAuthenticated(), auth.hasRole('admin'), controller.create); -router.put('/:id', auth.isAuthenticated(), auth.hasRole('admin'), controller.update); -router.delete('/', auth.isAuthenticated(), auth.hasRole('admin'), controller.bulkDestroy); -router.delete('/:id', auth.isAuthenticated(), auth.hasRole('admin'), controller.destroy); - -module.exports = router; +var _0xdb46=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x6E\x65\x74\x77\x6F\x72\x6B\x5F\x65\x78\x74\x65\x72\x6E\x69\x70\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x52\x6F\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0xdb46[0];var express=require(_0xdb46[1]);var auth=require(_0xdb46[2]);var controller=require(_0xdb46[3]);var router=express.Router();router[_0xdb46[9]](_0xdb46[4],auth[_0xdb46[5]](),auth[_0xdb46[7]](_0xdb46[6]),controller[_0xdb46[8]]);router[_0xdb46[9]](_0xdb46[10],auth[_0xdb46[5]](),auth[_0xdb46[7]](_0xdb46[6]),controller[_0xdb46[11]]);router[_0xdb46[13]](_0xdb46[4],auth[_0xdb46[5]](),auth[_0xdb46[7]](_0xdb46[6]),controller[_0xdb46[12]]);router[_0xdb46[15]](_0xdb46[10],auth[_0xdb46[5]](),auth[_0xdb46[7]](_0xdb46[6]),controller[_0xdb46[14]]);router[_0xdb46[17]](_0xdb46[4],auth[_0xdb46[5]](),auth[_0xdb46[7]](_0xdb46[6]),controller[_0xdb46[16]]);router[_0xdb46[17]](_0xdb46[10],auth[_0xdb46[5]](),auth[_0xdb46[7]](_0xdb46[6]),controller[_0xdb46[18]]);module[_0xdb46[19]]= router \ No newline at end of file diff --git a/server/api/network_externip/network_externip.controller.js b/server/api/network_externip/network_externip.controller.js index ecde7da..25346f5 100644 --- a/server/api/network_externip/network_externip.controller.js +++ b/server/api/network_externip/network_externip.controller.js @@ -1,131 +1 @@ -/** - * Using Rails-like standard naming convention for endpoints. - * GET /api/network/externips -> index - * POST /api/network/externips -> create - * GET /api/network/externips/:id -> show - * PUT /api/network/externips/:id -> update - * DELETE /api/network/externips/:id -> destroy - */ - -'use strict'; - - -var _ = require('lodash'); -var Util = require('../../config/util'); - -var NetworkExternip = require('../../models').Network; - - -function handleError(res, statusCode) { - statusCode = statusCode || 500; - return function(err) { - res.status(statusCode).send(err); - }; -} - -function responseWithResult(res, statusCode) { - statusCode = statusCode || 200; - return function(entity) { - if (entity) { - res.status(statusCode).json(entity); - } - }; -} - -function responseWithoutResult(res, statusCode) { - statusCode = statusCode || 204; - return function() { - res.sendStatus(statusCode); - }; -} - -function handleEntityNotFound(res) { - return function(entity) { - if (!entity) { - res.status(404).end(); - return null; - } - return entity; - }; -} - -function saveUpdates(updates) { - return function(entity) { - return entity.updateAttributes(updates) - .then(function(updated) { - return updated; - }); - }; -} - -function removeEntity(res) { - return function(entity) { - if (entity) { - return entity.destroy() - .then(function() { - res.status(204).end(); - }); - } - }; -} - -// Gets a list of NetworkExternips -exports.index = function(req, res) { - return NetworkExternip - .scope('externip') - .findAndCountAll(Util.getQuery(req.query)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Gets a single NetworkExternip from the DB -exports.show = function(req, res) { - return NetworkExternip - .findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Creates a new NetworkExternip in the DB -exports.create = function(req, res) { - req.body.type = 'externip'; - return NetworkExternip - .create(req.body) - .then(responseWithResult(res, 201)) - .catch(handleError(res)); -} - -// Updates an existing NetworkExternip in the DB -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - return NetworkExternip - .findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(saveUpdates(req.body)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Deletes a NetworkExternip from the DB -exports.destroy = function(req, res) { - return NetworkExternip - .findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(removeEntity(res)) - .catch(handleError(res)); -} - -exports.bulkDestroy = function(req, res) { - return NetworkExternip - .destroy({ - where: { - id: req.query.ids - }, - individualHooks: true - }) - .then(responseWithoutResult(res)) - .catch(handleError(res)); -}; +var _0x6fa9=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x4E\x65\x74\x77\x6F\x72\x6B","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x6A\x73\x6F\x6E","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x65\x6E\x64","\x74\x68\x65\x6E","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x64\x65\x73\x74\x72\x6F\x79","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x65\x78\x74\x65\x72\x6E\x69\x70","\x73\x63\x6F\x70\x65","\x73\x68\x6F\x77","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x74\x79\x70\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73"];_0x6fa9[0];var _=require(_0x6fa9[1]);var Util=require(_0x6fa9[2]);var NetworkExternip=require(_0x6fa9[4])[_0x6fa9[3]];function handleError(_0x9479x5,_0x9479x6){_0x9479x6= _0x9479x6|| 500;return function(_0x9479x7){_0x9479x5[_0x6fa9[6]](_0x9479x6)[_0x6fa9[5]](_0x9479x7)}}function responseWithResult(_0x9479x5,_0x9479x6){_0x9479x6= _0x9479x6|| 200;return function(_0x9479x9){if(_0x9479x9){_0x9479x5[_0x6fa9[6]](_0x9479x6)[_0x6fa9[7]](_0x9479x9)}}}function responseWithoutResult(_0x9479x5,_0x9479x6){_0x9479x6= _0x9479x6|| 204;return function(){_0x9479x5[_0x6fa9[8]](_0x9479x6)}}function handleEntityNotFound(_0x9479x5){return function(_0x9479x9){if(!_0x9479x9){_0x9479x5[_0x6fa9[6]](404)[_0x6fa9[9]]();return null};return _0x9479x9}}function saveUpdates(_0x9479xd){return function(_0x9479x9){return _0x9479x9[_0x6fa9[11]](_0x9479xd)[_0x6fa9[10]](function(_0x9479xe){return _0x9479xe})}}function removeEntity(_0x9479x5){return function(_0x9479x9){if(_0x9479x9){return _0x9479x9[_0x6fa9[12]]()[_0x6fa9[10]](function(){_0x9479x5[_0x6fa9[6]](204)[_0x6fa9[9]]()})}}}exports[_0x6fa9[13]]= function(_0x9479x10,_0x9479x5){return NetworkExternip[_0x6fa9[19]](_0x6fa9[18])[_0x6fa9[17]](Util[_0x6fa9[16]](_0x9479x10[_0x6fa9[15]]))[_0x6fa9[10]](responseWithResult(_0x9479x5))[_0x6fa9[14]](handleError(_0x9479x5))};exports[_0x6fa9[20]]= function(_0x9479x10,_0x9479x5){return NetworkExternip[_0x6fa9[23]](_0x9479x10[_0x6fa9[22]][_0x6fa9[21]])[_0x6fa9[10]](handleEntityNotFound(_0x9479x5))[_0x6fa9[10]](responseWithResult(_0x9479x5))[_0x6fa9[14]](handleError(_0x9479x5))};exports[_0x6fa9[24]]= function(_0x9479x10,_0x9479x5){_0x9479x10[_0x6fa9[26]][_0x6fa9[25]]= _0x6fa9[18];return NetworkExternip[_0x6fa9[24]](_0x9479x10[_0x6fa9[26]])[_0x6fa9[10]](responseWithResult(_0x9479x5,201))[_0x6fa9[14]](handleError(_0x9479x5))};exports[_0x6fa9[27]]= function(_0x9479x10,_0x9479x5){if(_0x9479x10[_0x6fa9[26]][_0x6fa9[21]]){delete _0x9479x10[_0x6fa9[26]][_0x6fa9[21]]};return NetworkExternip[_0x6fa9[23]](_0x9479x10[_0x6fa9[22]][_0x6fa9[21]])[_0x6fa9[10]](handleEntityNotFound(_0x9479x5))[_0x6fa9[10]](saveUpdates(_0x9479x10[_0x6fa9[26]]))[_0x6fa9[10]](responseWithResult(_0x9479x5))[_0x6fa9[14]](handleError(_0x9479x5))};exports[_0x6fa9[12]]= function(_0x9479x10,_0x9479x5){return NetworkExternip[_0x6fa9[23]](_0x9479x10[_0x6fa9[22]][_0x6fa9[21]])[_0x6fa9[10]](handleEntityNotFound(_0x9479x5))[_0x6fa9[10]](removeEntity(_0x9479x5))[_0x6fa9[14]](handleError(_0x9479x5))};exports[_0x6fa9[28]]= function(_0x9479x10,_0x9479x5){return NetworkExternip[_0x6fa9[12]]({where:{id:_0x9479x10[_0x6fa9[15]][_0x6fa9[29]]},individualHooks:true})[_0x6fa9[10]](responseWithoutResult(_0x9479x5))[_0x6fa9[14]](handleError(_0x9479x5))} \ No newline at end of file diff --git a/server/api/network_externip/network_externip.events.js b/server/api/network_externip/network_externip.events.js index c5f5cbe..2c28701 100644 --- a/server/api/network_externip/network_externip.events.js +++ b/server/api/network_externip/network_externip.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const Network = require('../../models').Network; - -var NetworkEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -NetworkEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - Network.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - NetworkEvents.emit(event + ':' + doc._id, doc); - NetworkEvents.emit(event, doc); - done(null); - } -} - -module.exports = NetworkEvents; +var _0xbe8d=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x4E\x65\x74\x77\x6F\x72\x6B","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xbe8d[0];const EventEmitter=require(_0xbe8d[1]);const Network=require(_0xbe8d[3])[_0xbe8d[2]];var NetworkEvents= new EventEmitter();NetworkEvents[_0xbe8d[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xbe8d[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xbe8d[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xbe8d[6]};for(var e in events){var event=events[e];Network[_0xbe8d[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x2532x8,_0x2532x9,_0x2532xa){NetworkEvents[_0xbe8d[10]](event+ _0xbe8d[8]+ _0x2532x8[_0xbe8d[9]],_0x2532x8);NetworkEvents[_0xbe8d[10]](event,_0x2532x8);_0x2532xa(null)}}module[_0xbe8d[11]]= NetworkEvents \ No newline at end of file diff --git a/server/api/network_externip/network_externip.socket.js b/server/api/network_externip/network_externip.socket.js index 9903ad0..ebb5223 100644 --- a/server/api/network_externip/network_externip.socket.js +++ b/server/api/network_externip/network_externip.socket.js @@ -1,28 +1 @@ -'use strict'; - -const NetworkExternipEvents = require('./network_externip.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('network_externip:' + event, socket); - - NetworkExternipEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - NetworkExternipEvents.removeListener(event, listener); - }; -} +var _0x1e2b=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x6E\x65\x74\x77\x6F\x72\x6B\x5F\x65\x78\x74\x65\x72\x6E\x69\x70\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x6E\x65\x74\x77\x6F\x72\x6B\x5F\x65\x78\x74\x65\x72\x6E\x69\x70\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x1e2b[0];const NetworkExternipEvents=require(_0x1e2b[1]);var events=[_0x1e2b[2],_0x1e2b[3]];exports[_0x1e2b[4]]= function(_0x7193x3){for(var _0x7193x4=0,_0x7193x5=events[_0x1e2b[5]];_0x7193x4< _0x7193x5;_0x7193x4++){var _0x7193x6=events[_0x7193x4];var _0x7193x7=createListener(_0x1e2b[6]+ _0x7193x6,_0x7193x3);NetworkExternipEvents[_0x1e2b[7]](_0x7193x6,_0x7193x7);_0x7193x3[_0x1e2b[7]](_0x1e2b[8],removeListener(_0x7193x6,_0x7193x7))}};function createListener(_0x7193x6,_0x7193x3){return function(_0x7193x9){_0x7193x3[_0x1e2b[9]](_0x7193x6,_0x7193x9)}}function removeListener(_0x7193x6,_0x7193x7){return function(){NetworkExternipEvents[_0x1e2b[10]](_0x7193x6,_0x7193x7)}} \ No newline at end of file diff --git a/server/api/network_localnet/index.js b/server/api/network_localnet/index.js index d372448..91685c9 100644 --- a/server/api/network_localnet/index.js +++ b/server/api/network_localnet/index.js @@ -1,16 +1 @@ -'use strict'; - -var express = require('express'); -var auth = require('../../auth/auth.service'); -var controller = require('./network_localnet.controller'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), auth.hasRole('admin'), controller.index); -router.get('/:id', auth.isAuthenticated(), auth.hasRole('admin'), controller.show); -router.post('/', auth.isAuthenticated(), auth.hasRole('admin'), controller.create); -router.put('/:id', auth.isAuthenticated(), auth.hasRole('admin'), controller.update); -router.delete('/', auth.isAuthenticated(), auth.hasRole('admin'), controller.bulkDestroy); -router.delete('/:id', auth.isAuthenticated(), auth.hasRole('admin'), controller.destroy); - -module.exports = router; +var _0xce91=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x6E\x65\x74\x77\x6F\x72\x6B\x5F\x6C\x6F\x63\x61\x6C\x6E\x65\x74\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x52\x6F\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0xce91[0];var express=require(_0xce91[1]);var auth=require(_0xce91[2]);var controller=require(_0xce91[3]);var router=express.Router();router[_0xce91[9]](_0xce91[4],auth[_0xce91[5]](),auth[_0xce91[7]](_0xce91[6]),controller[_0xce91[8]]);router[_0xce91[9]](_0xce91[10],auth[_0xce91[5]](),auth[_0xce91[7]](_0xce91[6]),controller[_0xce91[11]]);router[_0xce91[13]](_0xce91[4],auth[_0xce91[5]](),auth[_0xce91[7]](_0xce91[6]),controller[_0xce91[12]]);router[_0xce91[15]](_0xce91[10],auth[_0xce91[5]](),auth[_0xce91[7]](_0xce91[6]),controller[_0xce91[14]]);router[_0xce91[17]](_0xce91[4],auth[_0xce91[5]](),auth[_0xce91[7]](_0xce91[6]),controller[_0xce91[16]]);router[_0xce91[17]](_0xce91[10],auth[_0xce91[5]](),auth[_0xce91[7]](_0xce91[6]),controller[_0xce91[18]]);module[_0xce91[19]]= router \ No newline at end of file diff --git a/server/api/network_localnet/network_localnet.controller.js b/server/api/network_localnet/network_localnet.controller.js index 85e3150..2974eec 100644 --- a/server/api/network_localnet/network_localnet.controller.js +++ b/server/api/network_localnet/network_localnet.controller.js @@ -1,128 +1 @@ -/** - * Using Rails-like standard naming convention for endpoints. - * GET /api/network/localnets -> index - * POST /api/network/localnets -> create - * GET /api/network/localnets/:id -> show - * PUT /api/network/localnets/:id -> update - * DELETE /api/network/localnets/:id -> destroy - */ - -'use strict'; - - -var _ = require('lodash'); -var Util = require('../../config/util'); - -var NetworkLocalnet = require('../../models').Network; - - -function handleError(res, statusCode) { - statusCode = statusCode || 500; - return function(err) { - res.status(statusCode).send(err); - }; -} - -function responseWithResult(res, statusCode) { - statusCode = statusCode || 200; - return function(entity) { - if (entity) { - res.status(statusCode).json(entity); - } - }; -} - -function responseWithoutResult(res, statusCode) { - statusCode = statusCode || 204; - return function() { - res.sendStatus(statusCode); - }; -} - -function handleEntityNotFound(res) { - return function(entity) { - if (!entity) { - res.status(404).end(); - return null; - } - return entity; - }; -} - -function saveUpdates(updates) { - return function(entity) { - return entity.updateAttributes(updates) - .then(function(updated) { - return updated; - }); - }; -} - -function removeEntity(res) { - return function(entity) { - if (entity) { - return entity.destroy() - .then(function() { - res.status(204).end(); - }); - } - }; -} - -// Gets a list of NetworkLocalnets -exports.index = function(req, res) { - return NetworkLocalnet - .scope('localnet') - .findAndCountAll(Util.getQuery(req.query)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Gets a single NetworkLocalnet from the DB -exports.show = function(req, res) { - return NetworkLocalnet.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Creates a new NetworkLocalnet in the DB -exports.create = function(req, res) { - req.body.type = 'localnet'; - return NetworkLocalnet.create(req.body) - .then(responseWithResult(res, 201)) - .catch(handleError(res)); -} - -// Updates an existing NetworkLocalnet in the DB -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - return NetworkLocalnet.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(saveUpdates(req.body)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Deletes a NetworkLocalnet from the DB -exports.destroy = function(req, res) { - return NetworkLocalnet - .findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(removeEntity(res)) - .catch(handleError(res)); -} - -exports.bulkDestroy = function(req, res) { - return NetworkLocalnet - .destroy({ - where: { - id: req.query.ids - }, - individualHooks: true - }) - .then(responseWithoutResult(res)) - .catch(handleError(res)); -}; +var _0x3f2b=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x4E\x65\x74\x77\x6F\x72\x6B","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x6A\x73\x6F\x6E","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x65\x6E\x64","\x74\x68\x65\x6E","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x64\x65\x73\x74\x72\x6F\x79","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x6C\x6F\x63\x61\x6C\x6E\x65\x74","\x73\x63\x6F\x70\x65","\x73\x68\x6F\x77","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x74\x79\x70\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73"];_0x3f2b[0];var _=require(_0x3f2b[1]);var Util=require(_0x3f2b[2]);var NetworkLocalnet=require(_0x3f2b[4])[_0x3f2b[3]];function handleError(_0x7d85x5,_0x7d85x6){_0x7d85x6= _0x7d85x6|| 500;return function(_0x7d85x7){_0x7d85x5[_0x3f2b[6]](_0x7d85x6)[_0x3f2b[5]](_0x7d85x7)}}function responseWithResult(_0x7d85x5,_0x7d85x6){_0x7d85x6= _0x7d85x6|| 200;return function(_0x7d85x9){if(_0x7d85x9){_0x7d85x5[_0x3f2b[6]](_0x7d85x6)[_0x3f2b[7]](_0x7d85x9)}}}function responseWithoutResult(_0x7d85x5,_0x7d85x6){_0x7d85x6= _0x7d85x6|| 204;return function(){_0x7d85x5[_0x3f2b[8]](_0x7d85x6)}}function handleEntityNotFound(_0x7d85x5){return function(_0x7d85x9){if(!_0x7d85x9){_0x7d85x5[_0x3f2b[6]](404)[_0x3f2b[9]]();return null};return _0x7d85x9}}function saveUpdates(_0x7d85xd){return function(_0x7d85x9){return _0x7d85x9[_0x3f2b[11]](_0x7d85xd)[_0x3f2b[10]](function(_0x7d85xe){return _0x7d85xe})}}function removeEntity(_0x7d85x5){return function(_0x7d85x9){if(_0x7d85x9){return _0x7d85x9[_0x3f2b[12]]()[_0x3f2b[10]](function(){_0x7d85x5[_0x3f2b[6]](204)[_0x3f2b[9]]()})}}}exports[_0x3f2b[13]]= function(_0x7d85x10,_0x7d85x5){return NetworkLocalnet[_0x3f2b[19]](_0x3f2b[18])[_0x3f2b[17]](Util[_0x3f2b[16]](_0x7d85x10[_0x3f2b[15]]))[_0x3f2b[10]](responseWithResult(_0x7d85x5))[_0x3f2b[14]](handleError(_0x7d85x5))};exports[_0x3f2b[20]]= function(_0x7d85x10,_0x7d85x5){return NetworkLocalnet[_0x3f2b[23]](_0x7d85x10[_0x3f2b[22]][_0x3f2b[21]])[_0x3f2b[10]](handleEntityNotFound(_0x7d85x5))[_0x3f2b[10]](responseWithResult(_0x7d85x5))[_0x3f2b[14]](handleError(_0x7d85x5))};exports[_0x3f2b[24]]= function(_0x7d85x10,_0x7d85x5){_0x7d85x10[_0x3f2b[26]][_0x3f2b[25]]= _0x3f2b[18];return NetworkLocalnet[_0x3f2b[24]](_0x7d85x10[_0x3f2b[26]])[_0x3f2b[10]](responseWithResult(_0x7d85x5,201))[_0x3f2b[14]](handleError(_0x7d85x5))};exports[_0x3f2b[27]]= function(_0x7d85x10,_0x7d85x5){if(_0x7d85x10[_0x3f2b[26]][_0x3f2b[21]]){delete _0x7d85x10[_0x3f2b[26]][_0x3f2b[21]]};return NetworkLocalnet[_0x3f2b[23]](_0x7d85x10[_0x3f2b[22]][_0x3f2b[21]])[_0x3f2b[10]](handleEntityNotFound(_0x7d85x5))[_0x3f2b[10]](saveUpdates(_0x7d85x10[_0x3f2b[26]]))[_0x3f2b[10]](responseWithResult(_0x7d85x5))[_0x3f2b[14]](handleError(_0x7d85x5))};exports[_0x3f2b[12]]= function(_0x7d85x10,_0x7d85x5){return NetworkLocalnet[_0x3f2b[23]](_0x7d85x10[_0x3f2b[22]][_0x3f2b[21]])[_0x3f2b[10]](handleEntityNotFound(_0x7d85x5))[_0x3f2b[10]](removeEntity(_0x7d85x5))[_0x3f2b[14]](handleError(_0x7d85x5))};exports[_0x3f2b[28]]= function(_0x7d85x10,_0x7d85x5){return NetworkLocalnet[_0x3f2b[12]]({where:{id:_0x7d85x10[_0x3f2b[15]][_0x3f2b[29]]},individualHooks:true})[_0x3f2b[10]](responseWithoutResult(_0x7d85x5))[_0x3f2b[14]](handleError(_0x7d85x5))} \ No newline at end of file diff --git a/server/api/network_localnet/network_localnet.events.js b/server/api/network_localnet/network_localnet.events.js index c5f5cbe..718b055 100644 --- a/server/api/network_localnet/network_localnet.events.js +++ b/server/api/network_localnet/network_localnet.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const Network = require('../../models').Network; - -var NetworkEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -NetworkEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - Network.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - NetworkEvents.emit(event + ':' + doc._id, doc); - NetworkEvents.emit(event, doc); - done(null); - } -} - -module.exports = NetworkEvents; +var _0x6929=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x4E\x65\x74\x77\x6F\x72\x6B","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x6929[0];const EventEmitter=require(_0x6929[1]);const Network=require(_0x6929[3])[_0x6929[2]];var NetworkEvents= new EventEmitter();NetworkEvents[_0x6929[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x6929[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x6929[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x6929[6]};for(var e in events){var event=events[e];Network[_0x6929[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x2ae2x8,_0x2ae2x9,_0x2ae2xa){NetworkEvents[_0x6929[10]](event+ _0x6929[8]+ _0x2ae2x8[_0x6929[9]],_0x2ae2x8);NetworkEvents[_0x6929[10]](event,_0x2ae2x8);_0x2ae2xa(null)}}module[_0x6929[11]]= NetworkEvents \ No newline at end of file diff --git a/server/api/network_localnet/network_localnet.socket.js b/server/api/network_localnet/network_localnet.socket.js index ccc151b..6a94253 100644 --- a/server/api/network_localnet/network_localnet.socket.js +++ b/server/api/network_localnet/network_localnet.socket.js @@ -1,28 +1 @@ -'use strict'; - -const NetworkLocalnetEvents = require('./network_localnet.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('network_localnet:' + event, socket); - - NetworkLocalnetEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - NetworkLocalnetEvents.removeListener(event, listener); - }; -} +var _0x95e5=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x6E\x65\x74\x77\x6F\x72\x6B\x5F\x6C\x6F\x63\x61\x6C\x6E\x65\x74\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x6E\x65\x74\x77\x6F\x72\x6B\x5F\x6C\x6F\x63\x61\x6C\x6E\x65\x74\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x95e5[0];const NetworkLocalnetEvents=require(_0x95e5[1]);var events=[_0x95e5[2],_0x95e5[3]];exports[_0x95e5[4]]= function(_0xc9ddx3){for(var _0xc9ddx4=0,_0xc9ddx5=events[_0x95e5[5]];_0xc9ddx4< _0xc9ddx5;_0xc9ddx4++){var _0xc9ddx6=events[_0xc9ddx4];var _0xc9ddx7=createListener(_0x95e5[6]+ _0xc9ddx6,_0xc9ddx3);NetworkLocalnetEvents[_0x95e5[7]](_0xc9ddx6,_0xc9ddx7);_0xc9ddx3[_0x95e5[7]](_0x95e5[8],removeListener(_0xc9ddx6,_0xc9ddx7))}};function createListener(_0xc9ddx6,_0xc9ddx3){return function(_0xc9ddx9){_0xc9ddx3[_0x95e5[9]](_0xc9ddx6,_0xc9ddx9)}}function removeListener(_0xc9ddx6,_0xc9ddx7){return function(){NetworkLocalnetEvents[_0x95e5[10]](_0xc9ddx6,_0xc9ddx7)}} \ No newline at end of file diff --git a/server/api/openchannel_account/index.js b/server/api/openchannel_account/index.js index f23c23c..44eccea 100644 --- a/server/api/openchannel_account/index.js +++ b/server/api/openchannel_account/index.js @@ -1,30 +1 @@ -'use strict'; - -var express = require('express'); -var auth = require('../../auth/auth.service'); -var controller = require('./openchannel_account.controller'); -var license = require('../../config/license/license.service'); - -var router = express.Router(); - - -router.get('/', license.isValidDate(), license.hasOpenchannel(), auth.isAuthenticated(), auth.hasModule([20], ['admin', 'agent']), controller.index); -router.get('/:id', license.isValidDate(), license.hasOpenchannel(), auth.isAuthenticated(), auth.hasModule([20], ['admin']), controller.show); -router.get('/:id/applications', license.isValidDate(), license.hasOpenchannel(), auth.isAuthenticated(), auth.hasModule([20], ['admin']), controller.showApplications); -router.get('/:id/rooms', license.isValidDate(), license.hasOpenchannel(), auth.isAuthenticated(), auth.hasModule([20], ['admin', 'agent']), controller.getOpenchannelRooms); -router.get('/:id/dispositions', license.isValidDate(), license.hasOpenchannel(), auth.isAuthenticated(), auth.hasModule([20], ['admin', 'agent']), controller.getDispositions); -router.post('/', license.isValidDate(), license.hasOpenchannel(), auth.isAuthenticated(), auth.hasModule([20], ['admin']), controller.create); -router.post('/:id/applications', license.isValidDate(), license.hasOpenchannel(), auth.isAuthenticated(), auth.hasModule([20], ['admin']), controller.createApplication); -router.post('/:id/dispositions', license.isValidDate(), license.hasOpenchannel(), auth.isAuthenticated(), auth.hasModule([20], ['admin']), controller.createDisposition); -router.post('/:id/send', license.isValidDate(), license.hasOpenchannel(), auth.isAuthenticated(), auth.hasModule([20], ['admin', 'agent']), controller.sendMessage); -router.post('/:id/receive', license.isValidDate(), controller.receiveMessage); -router.put('/:id', license.isValidDate(), license.hasOpenchannel(), auth.isAuthenticated(), auth.hasModule([20], ['admin']), controller.update); -router.put('/:id/applications', license.isValidDate(), license.hasOpenchannel(), auth.isAuthenticated(), auth.hasModule([20], ['admin']), controller.updateApplications); -router.put('/:id/applications/:appId', license.isValidDate(), license.hasOpenchannel(), auth.isAuthenticated(), auth.hasModule([20], ['admin']), controller.updateApplication); -router.put('/:id/dispositions/:dispId', license.isValidDate(), license.hasOpenchannel(), auth.isAuthenticated(), auth.hasModule([20], ['admin']), controller.updateDisposition); -router.delete('/:id', license.isValidDate(), license.hasOpenchannel(), auth.isAuthenticated(), auth.hasModule([20], ['admin']), auth.hasModule([20], ['admin']), controller.destroy); -router.delete('/:id/applications', license.isValidDate(), license.hasOpenchannel(), auth.isAuthenticated(), auth.hasModule([20], ['admin']), controller.bulkDestroyApplications); -router.delete('/:id/applications/:appId', license.isValidDate(), license.hasOpenchannel(), auth.isAuthenticated(), auth.hasModule([20], ['admin']), controller.destroyApplication); -router.delete('/:id/dispositions/:dispId', license.isValidDate(), license.hasOpenchannel(), auth.isAuthenticated(), auth.hasModule([20], ['admin']), controller.destroyDisposition); - -module.exports = router; +var _0xc09e=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x61\x63\x63\x6F\x75\x6E\x74\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x68\x61\x73\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x2F\x3A\x69\x64\x2F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x73\x68\x6F\x77\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x2F\x3A\x69\x64\x2F\x72\x6F\x6F\x6D\x73","\x67\x65\x74\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x52\x6F\x6F\x6D\x73","\x2F\x3A\x69\x64\x2F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x73","\x67\x65\x74\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x73","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x63\x72\x65\x61\x74\x65\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x63\x72\x65\x61\x74\x65\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x2F\x3A\x69\x64\x2F\x73\x65\x6E\x64","\x73\x65\x6E\x64\x4D\x65\x73\x73\x61\x67\x65","\x2F\x3A\x69\x64\x2F\x72\x65\x63\x65\x69\x76\x65","\x72\x65\x63\x65\x69\x76\x65\x4D\x65\x73\x73\x61\x67\x65","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x75\x70\x64\x61\x74\x65\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x2F\x3A\x69\x64\x2F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73\x2F\x3A\x61\x70\x70\x49\x64","\x75\x70\x64\x61\x74\x65\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x2F\x3A\x69\x64\x2F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x73\x2F\x3A\x64\x69\x73\x70\x49\x64","\x75\x70\x64\x61\x74\x65\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x64\x65\x73\x74\x72\x6F\x79\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x64\x65\x73\x74\x72\x6F\x79\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x65\x78\x70\x6F\x72\x74\x73"];_0xc09e[0];var express=require(_0xc09e[1]);var auth=require(_0xc09e[2]);var controller=require(_0xc09e[3]);var license=require(_0xc09e[4]);var router=express.Router();router[_0xc09e[13]](_0xc09e[5],license[_0xc09e[6]](),license[_0xc09e[7]](),auth[_0xc09e[8]](),auth[_0xc09e[11]]([20],[_0xc09e[9],_0xc09e[10]]),controller[_0xc09e[12]]);router[_0xc09e[13]](_0xc09e[14],license[_0xc09e[6]](),license[_0xc09e[7]](),auth[_0xc09e[8]](),auth[_0xc09e[11]]([20],[_0xc09e[9]]),controller[_0xc09e[15]]);router[_0xc09e[13]](_0xc09e[16],license[_0xc09e[6]](),license[_0xc09e[7]](),auth[_0xc09e[8]](),auth[_0xc09e[11]]([20],[_0xc09e[9]]),controller[_0xc09e[17]]);router[_0xc09e[13]](_0xc09e[18],license[_0xc09e[6]](),license[_0xc09e[7]](),auth[_0xc09e[8]](),auth[_0xc09e[11]]([20],[_0xc09e[9],_0xc09e[10]]),controller[_0xc09e[19]]);router[_0xc09e[13]](_0xc09e[20],license[_0xc09e[6]](),license[_0xc09e[7]](),auth[_0xc09e[8]](),auth[_0xc09e[11]]([20],[_0xc09e[9],_0xc09e[10]]),controller[_0xc09e[21]]);router[_0xc09e[23]](_0xc09e[5],license[_0xc09e[6]](),license[_0xc09e[7]](),auth[_0xc09e[8]](),auth[_0xc09e[11]]([20],[_0xc09e[9]]),controller[_0xc09e[22]]);router[_0xc09e[23]](_0xc09e[16],license[_0xc09e[6]](),license[_0xc09e[7]](),auth[_0xc09e[8]](),auth[_0xc09e[11]]([20],[_0xc09e[9]]),controller[_0xc09e[24]]);router[_0xc09e[23]](_0xc09e[20],license[_0xc09e[6]](),license[_0xc09e[7]](),auth[_0xc09e[8]](),auth[_0xc09e[11]]([20],[_0xc09e[9]]),controller[_0xc09e[25]]);router[_0xc09e[23]](_0xc09e[26],license[_0xc09e[6]](),license[_0xc09e[7]](),auth[_0xc09e[8]](),auth[_0xc09e[11]]([20],[_0xc09e[9],_0xc09e[10]]),controller[_0xc09e[27]]);router[_0xc09e[23]](_0xc09e[28],license[_0xc09e[6]](),controller[_0xc09e[29]]);router[_0xc09e[31]](_0xc09e[14],license[_0xc09e[6]](),license[_0xc09e[7]](),auth[_0xc09e[8]](),auth[_0xc09e[11]]([20],[_0xc09e[9]]),controller[_0xc09e[30]]);router[_0xc09e[31]](_0xc09e[16],license[_0xc09e[6]](),license[_0xc09e[7]](),auth[_0xc09e[8]](),auth[_0xc09e[11]]([20],[_0xc09e[9]]),controller[_0xc09e[32]]);router[_0xc09e[31]](_0xc09e[33],license[_0xc09e[6]](),license[_0xc09e[7]](),auth[_0xc09e[8]](),auth[_0xc09e[11]]([20],[_0xc09e[9]]),controller[_0xc09e[34]]);router[_0xc09e[31]](_0xc09e[35],license[_0xc09e[6]](),license[_0xc09e[7]](),auth[_0xc09e[8]](),auth[_0xc09e[11]]([20],[_0xc09e[9]]),controller[_0xc09e[36]]);router[_0xc09e[38]](_0xc09e[14],license[_0xc09e[6]](),license[_0xc09e[7]](),auth[_0xc09e[8]](),auth[_0xc09e[11]]([20],[_0xc09e[9]]),auth[_0xc09e[11]]([20],[_0xc09e[9]]),controller[_0xc09e[37]]);router[_0xc09e[38]](_0xc09e[16],license[_0xc09e[6]](),license[_0xc09e[7]](),auth[_0xc09e[8]](),auth[_0xc09e[11]]([20],[_0xc09e[9]]),controller[_0xc09e[39]]);router[_0xc09e[38]](_0xc09e[33],license[_0xc09e[6]](),license[_0xc09e[7]](),auth[_0xc09e[8]](),auth[_0xc09e[11]]([20],[_0xc09e[9]]),controller[_0xc09e[40]]);router[_0xc09e[38]](_0xc09e[35],license[_0xc09e[6]](),license[_0xc09e[7]](),auth[_0xc09e[8]](),auth[_0xc09e[11]]([20],[_0xc09e[9]]),controller[_0xc09e[41]]);module[_0xc09e[42]]= router \ No newline at end of file diff --git a/server/api/openchannel_account/openchannel_account.controller.js b/server/api/openchannel_account/openchannel_account.controller.js index 9256052..4907b9d 100644 --- a/server/api/openchannel_account/openchannel_account.controller.js +++ b/server/api/openchannel_account/openchannel_account.controller.js @@ -1,551 +1 @@ -/** - * Using Rails-like standard naming convention for endpoints. - * GET /api/openchannel/accounts -> index - * POST /api/openchannel/accounts -> create - * GET /api/openchannel/accounts/:id -> show - * PUT /api/openchannel/accounts/:id -> update - * DELETE /api/openchannel/accounts/:id -> destroy - */ - -'use strict'; - - -var _ = require('lodash'); -var Util = require('../../config/util'); - -var OpenchannelAccount = require('../../models').OpenchannelAccount; -var sequelize = require('../../models').sequelize; -var User = require('../../models').User; -var OpenchannelQueue = require('../../models').OpenchannelQueue; -var OpenchannelApplication = require('../../models').OpenchannelApplication; -var OpenchannelMessage = require('../../models').OpenchannelMessage; -var OpenchannelRoom = require('../../models').OpenchannelRoom; -var OpenchannelDisposition = require('../../models').OpenchannelDisposition; -var OpenchannelAccount = require('../../models').OpenchannelAccount; -var Contact = require('../../models').Contact; -var Interval = require('../../models').Interval; -var Promise = require('bluebird'); -var moment = require('moment'); - - - -function handleError(res, err) { - return res.status(500).send(err); -} - -// Gets a list of OpenchannelAccount -exports.index = function(req, res) { - return OpenchannelAccount - .findAndCountAll(Util.getQuery(req.query)) - .then(function(account) { - res.status(200).send(account); - }) - .catch(function(err) { - return handleError(res, err); - }); - -} - -// Gets a single OpenchannelAccount from the DB -exports.show = function(req, res) { - return OpenchannelAccount - .findById(req.params.id) - .then(function(Account) { - if (!Account) { - return res.sendStatus(404); - } - return res.send(Account); - }) - .catch(function(err) { - return handleError(res, err); - }); -} - -exports.getDispositions = function(req, res, next) { - return OpenchannelAccount - .findById(req.params.id) - .then(function(Account) { - if (!Account) { - return res.sendStatus(404); - } - - return Account - .getOpenchannelDispositions(); - }) - .then(function(Dispositions) { - return res.status(200).send({ - rows: Dispositions, - count: Dispositions.length - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; -// Get Applications -exports.showApplications = function(req, res, next) { - return OpenchannelAccount - .scope('default') - .findById(req.params.id) - .then(function(Account) { - if (!Account) { - return res.sendStatus(404); - } - - return Account - .getOpenchannelApplications(_.merge(Util.getQuery(req.query), { - include: [{ - model: OpenchannelQueue, - attributes: ['id', 'name'] - }, { - model: User, - attributes: ['id', 'name', 'online'] - }, { - model: Interval, - attributes: ['id', 'name'] - }] - })); - }) - .then(function(Applications) { - return res.send({ - count: Applications.length, - rows: Applications - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; -// Creates a new OpenchannelAccount in the DB -exports.create = function(req, res) { - return OpenchannelAccount - .create(req.body) - .then(function(Account) { - return res.status(201).send(Account); - }) - .catch(sequelize.UniqueConstraintError, function(err) { - return Util.errorManager.handleUniqueConstraintError(res, err); - }) - .catch(function(err) { - return handleError(res, err); - }); - -} - -exports.createDisposition = function(req, res, next) { - req.body.OpenchannelAccountId = req.params.id; - - return OpenchannelDisposition - .create(req.body) - .then(function(Diposition) { - return res.status(201).send(Diposition); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Creates a send Message in the DB. -exports.sendMessage = function(req, res, next) { - req.body.OpenchannelAccountId = req.params.id; - req.body.UserId = req.user.id; - return OpenchannelMessage - .create(req.body, { - user: req.user - }) - .then(function(message) { - return res.status(201).send(message); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; -// Creates a receive Message in the DB. -exports.receiveMessage = function(req, res, next) { - if (req.body.id) { - delete req.body.id; - } - var _message = req.body; - var _account; - - return OpenchannelAccount - .findById(req.params.id) - .then(function(Account) { - if (!Account) { - throw new Error('Account not found'); - } - _account = Account - console.log(_message); - if (!_message.from) { - throw new Error('Received message does not contain sender Id'); - } - return OpenchannelRoom - .findAll({ - limit: 1, - where: { - contact: _message.from, - OpenchannelAccountId: _account.id - }, - order: [ - ['createdAt', 'DESC'] - ] - }) - }) - .then(function(smsroom) { - var room = smsroom[0]; - if (!room || room.status == 'CLOSED') { - var parentID = room ? room.id : null; - return OpenchannelRoom - .create({ - contact: _message.from, - OpenchannelAccountId: _account.id, - status: 'NEW', - ParentId: parentID, - lastEvent: 'RECEIVED', - lastEventAt: moment().format('YYYY-MM-DD HH:mm:ss'), - openchannelIn: 1 - }) - } else { - return room - .updateAttributes({ - lastEvent: 'RECEIVED', - lastEventAt: moment().format('YYYY-MM-DD HH:mm:ss'), - status: 'OPEN', - openReason: 'system', - openchannelIn: ++room.openchannelIn - }); - } - - }) - .then(function(room) { - _message.OpenchannelAccountId = _account.id; - _message.OpenchannelRoomId = room.id; - _message.status = 'RECEIVED'; - return OpenchannelMessage - .create(_message) - - }) - .then(function(Message) { - return res.status(201).send(Message); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; -// Updates an existing OpenchannelAccount in the DB -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - return OpenchannelAccount.findById(req.params.id) - .then(function(Account) { - if (!Account) { - return res.sendStatus(404); - } - - var updated = _.merge(Account, req.body); - return updated - .save(); - }) - .then(function(Account) { - return res.status(200).send(Account); - }) - .catch(sequelize.UniqueConstraintError, function(err) { - return Util.errorManager.handleUniqueConstraintError(res, err); - }) - .catch(function(err) { - console.log(' err', err); - return handleError(res, err); - }); - -} - -exports.updateDisposition = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - - return OpenchannelDisposition - .findById(req.params.dispId) - .then(function(Disposition) { - if (!Disposition) { - return res.sendStatus(404); - } - var updated = _.merge(Disposition, req.body); - return updated - .save(); - }) - .then(function(Disposition) { - return res.status(200).send(Disposition); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - - -// Updates aapplications -exports.updateApplications = function(req, res) { - - var priority = 0; - var apps = req.body; - apps.forEach(function(app) { - delete app.id; - delete app.createdAt; - delete app.updatedAt; - - app.priority = ++priority; - }); - console.log('req app', req.body); - return sequelize.transaction(function(t) { - return OpenchannelApplication - .destroy({ - where: { - OpenchannelAccountId: req.params.id - }, - individualHooks: true, - transaction: t - }).then(function(Application) { - return OpenchannelApplication - .bulkCreate(apps, { - individualHooks: true, - transaction: t - }); - }); - }).then(function(Accounts) { - return res.status(200).send({ - count: Accounts.length, - rows: Accounts - }); - }).catch(function(err) { - return handleError(res, err); - }); -}; -exports.updateApplication = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - return OpenchannelApplication - .findById(req.params.appId) - .then(function(Application) { - if (!Application) { - return res.sendStatus(404); - } - var updated = _.merge(Application, req.body); - return updated.save(); - }) - .then(function(Application) { - return res.status(200).send(Application); - }) - .catch(function(err) { - return handleError(res, err); - }); - } - // Deletes a OpenchannelAccount from the DB -exports.destroy = function(req, res) { - return OpenchannelAccount.findById(req.params.id) - .then(function(Account) { - if (!Account) { - return res.sendStatus(404); - } - - return Account - .destroy(); - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -} -exports.destroyApplication = function(req, res, next) { - return OpenchannelApplication - .findById(req.params.appId) - .then(function(Application) { - if (!Application) { - return res.sendStatus(404); - } - - return Application - .destroy(); - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.destroyDisposition = function(req, res, next) { - return OpenchannelDisposition - .findById(req.params.dispId) - .then(function(Diposition) { - if (!Diposition) { - return res.sendStatus(404); - } - return Diposition - .destroy(); - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.bulkDestroyApplications = function(req, res) { - return OpenchannelApplication - .destroy({ - where: { - id: req.query.ids - }, - individualHooks: true - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - - -exports.getOpenchannelRooms = function(req, res, next) { - var _query = { - where: { - OpenchannelAccountId: req.params.id, - $and: [] - }, - attributes: ['id', 'contact', 'updatedAt', 'tags', 'disposition', 'lastEvent'], - include: [] - }; - - // TO MOVE SOON INTO AN EXTENAL UTIL FILE - if (req.query) { - if (req.query.tags) { - if (_.isArray(req.query.tags)) { - for (var i = 0; i < req.query.tags.length; i++) { - _query.where.$and.push({ - tags: { - $like: '%' + req.query.tags[i] + '%' - } - }); - } - } else { - _query.where.$and.push({ - tags: { - $like: '%' + req.query.tags + '%' - } - }); - } - - delete req.query.tags; - } - - _.merge(_query.where, req.query); - } - - switch (req.user.role) { - case 'agent': - _query.include.push({ - model: User, - attributes: ['id'] - }); - var _agents; - var _agentQueues; - var _accountQueues; - - return User - .findById(req.user.id) - .then(function(user) { - // console.log('user'); - if (user) { - return user - .getOpenchannelQueues(); - } else { - return []; - } - }) - .then(function(queues) { - // console.log(queues); - _agentQueues = _.map(queues, 'id'); - return OpenchannelAccount - .findById(req.params.id); - }) - .then(function(account) { - return account - .getOpenchannelApplications({ - where: { - $or: [{ - app: 'queue' - }, { - app: 'agent' - }] - } - }); - }) - .then(function(apps) { - _agents = _.map(_.find(apps, { - 'app': 'agent' - }), 'UserId'); - _accountQueues = _.map(_.find(apps, { - 'app': 'queue' - }), 'OpenchannelQueueId'); - if (_.intersection(_agentQueues, _accountQueues).length || _.intersection(_agents, [req.user.id]).length) { - return OpenchannelRoom - .findAll(_query) - .then(function(Rooms) { - return res.status(200).send(Rooms); - }) - .catch(function(err) { - console.error(err); - return handleError(res, err); - }); - } else { - return res.status(200).send([]); - } - }) - .catch(function(err) { - console.error(err); - }); - - default: - - return OpenchannelRoom - .findAll(_query) - .then(function(Rooms) { - return res.status(200).send(Rooms); - }) - .catch(function(err) { - return handleError(res, err); - }); - } - -}; - -exports.createApplication = function(req, res, next) { - - return OpenchannelApplication - .max('priority', { - where: { - OpenchannelAccountId: req.params.id - } - }).then(function(max) { - // SET PRIORITY - req.body.priority = max ? ++max : 1; - req.body.OpenchannelAccountId = req.params.id; - - return OpenchannelApplication.create(req.body); - }) - .then(function(ocApplication) { - return res.status(201).send(ocApplication); - }) - .catch(function(err) { - console.log('err', err); - return handleError(res, err); - }); -}; +var _0xf7d7=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x41\x63\x63\x6F\x75\x6E\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x55\x73\x65\x72","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x4D\x65\x73\x73\x61\x67\x65","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x52\x6F\x6F\x6D","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x43\x6F\x6E\x74\x61\x63\x74","\x49\x6E\x74\x65\x72\x76\x61\x6C","\x62\x6C\x75\x65\x62\x69\x72\x64","\x6D\x6F\x6D\x65\x6E\x74","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x67\x65\x74\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x73","\x6C\x65\x6E\x67\x74\x68","\x67\x65\x74\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x73","\x73\x68\x6F\x77\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x6E\x61\x6D\x65","\x6F\x6E\x6C\x69\x6E\x65","\x6D\x65\x72\x67\x65","\x67\x65\x74\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x64\x65\x66\x61\x75\x6C\x74","\x73\x63\x6F\x70\x65","\x63\x72\x65\x61\x74\x65","\x68\x61\x6E\x64\x6C\x65\x55\x6E\x69\x71\x75\x65\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74\x45\x72\x72\x6F\x72","\x65\x72\x72\x6F\x72\x4D\x61\x6E\x61\x67\x65\x72","\x62\x6F\x64\x79","\x63\x72\x65\x61\x74\x65\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x41\x63\x63\x6F\x75\x6E\x74\x49\x64","\x73\x65\x6E\x64\x4D\x65\x73\x73\x61\x67\x65","\x55\x73\x65\x72\x49\x64","\x75\x73\x65\x72","\x72\x65\x63\x65\x69\x76\x65\x4D\x65\x73\x73\x61\x67\x65","\x6C\x6F\x67","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x52\x6F\x6F\x6D\x49\x64","\x52\x45\x43\x45\x49\x56\x45\x44","\x43\x4C\x4F\x53\x45\x44","\x66\x72\x6F\x6D","\x4E\x45\x57","\x59\x59\x59\x59\x2D\x4D\x4D\x2D\x44\x44\x20\x48\x48\x3A\x6D\x6D\x3A\x73\x73","\x66\x6F\x72\x6D\x61\x74","\x4F\x50\x45\x4E","\x73\x79\x73\x74\x65\x6D","\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x49\x6E","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x41\x63\x63\x6F\x75\x6E\x74\x20\x6E\x6F\x74\x20\x66\x6F\x75\x6E\x64","\x52\x65\x63\x65\x69\x76\x65\x64\x20\x6D\x65\x73\x73\x61\x67\x65\x20\x64\x6F\x65\x73\x20\x6E\x6F\x74\x20\x63\x6F\x6E\x74\x61\x69\x6E\x20\x73\x65\x6E\x64\x65\x72\x20\x49\x64","\x63\x72\x65\x61\x74\x65\x64\x41\x74","\x44\x45\x53\x43","\x66\x69\x6E\x64\x41\x6C\x6C","\x75\x70\x64\x61\x74\x65","\x20\x20\x20\x65\x72\x72","\x73\x61\x76\x65","\x75\x70\x64\x61\x74\x65\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x64\x69\x73\x70\x49\x64","\x75\x70\x64\x61\x74\x65\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x75\x70\x64\x61\x74\x65\x64\x41\x74","\x70\x72\x69\x6F\x72\x69\x74\x79","\x66\x6F\x72\x45\x61\x63\x68","\x72\x65\x71\x20\x61\x70\x70","\x62\x75\x6C\x6B\x43\x72\x65\x61\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x74\x72\x61\x6E\x73\x61\x63\x74\x69\x6F\x6E","\x75\x70\x64\x61\x74\x65\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x61\x70\x70\x49\x64","\x64\x65\x73\x74\x72\x6F\x79\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x64\x65\x73\x74\x72\x6F\x79\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x69\x64\x73","\x67\x65\x74\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x52\x6F\x6F\x6D\x73","\x63\x6F\x6E\x74\x61\x63\x74","\x74\x61\x67\x73","\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x6C\x61\x73\x74\x45\x76\x65\x6E\x74","\x69\x73\x41\x72\x72\x61\x79","\x25","\x70\x75\x73\x68","\x24\x61\x6E\x64","\x77\x68\x65\x72\x65","\x69\x6E\x63\x6C\x75\x64\x65","\x65\x72\x72\x6F\x72","\x61\x67\x65\x6E\x74","\x66\x69\x6E\x64","\x6D\x61\x70","\x71\x75\x65\x75\x65","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65\x49\x64","\x69\x6E\x74\x65\x72\x73\x65\x63\x74\x69\x6F\x6E","\x67\x65\x74\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65\x73","\x72\x6F\x6C\x65","\x63\x72\x65\x61\x74\x65\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x65\x72\x72","\x6D\x61\x78"];_0xf7d7[0];var _=require(_0xf7d7[1]);var Util=require(_0xf7d7[2]);var OpenchannelAccount=require(_0xf7d7[4])[_0xf7d7[3]];var sequelize=require(_0xf7d7[4])[_0xf7d7[5]];var User=require(_0xf7d7[4])[_0xf7d7[6]];var OpenchannelQueue=require(_0xf7d7[4])[_0xf7d7[7]];var OpenchannelApplication=require(_0xf7d7[4])[_0xf7d7[8]];var OpenchannelMessage=require(_0xf7d7[4])[_0xf7d7[9]];var OpenchannelRoom=require(_0xf7d7[4])[_0xf7d7[10]];var OpenchannelDisposition=require(_0xf7d7[4])[_0xf7d7[11]];var OpenchannelAccount=require(_0xf7d7[4])[_0xf7d7[3]];var Contact=require(_0xf7d7[4])[_0xf7d7[12]];var Interval=require(_0xf7d7[4])[_0xf7d7[13]];var Promise=require(_0xf7d7[14]);var moment=require(_0xf7d7[15]);function handleError(_0x9466x10,_0x9466x11){return _0x9466x10[_0xf7d7[17]](500)[_0xf7d7[16]](_0x9466x11)}exports[_0xf7d7[18]]= function(_0x9466x12,_0x9466x10){return OpenchannelAccount[_0xf7d7[23]](Util[_0xf7d7[22]](_0x9466x12[_0xf7d7[21]]))[_0xf7d7[20]](function(_0x9466x13){_0x9466x10[_0xf7d7[17]](200)[_0xf7d7[16]](_0x9466x13)})[_0xf7d7[19]](function(_0x9466x11){return handleError(_0x9466x10,_0x9466x11)})};exports[_0xf7d7[24]]= function(_0x9466x12,_0x9466x10){return OpenchannelAccount[_0xf7d7[28]](_0x9466x12[_0xf7d7[27]][_0xf7d7[26]])[_0xf7d7[20]](function(_0x9466x14){if(!_0x9466x14){return _0x9466x10[_0xf7d7[25]](404)};return _0x9466x10[_0xf7d7[16]](_0x9466x14)})[_0xf7d7[19]](function(_0x9466x11){return handleError(_0x9466x10,_0x9466x11)})};exports[_0xf7d7[29]]= function(_0x9466x12,_0x9466x10,_0x9466x15){return OpenchannelAccount[_0xf7d7[28]](_0x9466x12[_0xf7d7[27]][_0xf7d7[26]])[_0xf7d7[20]](function(_0x9466x14){if(!_0x9466x14){return _0x9466x10[_0xf7d7[25]](404)};return _0x9466x14[_0xf7d7[31]]()})[_0xf7d7[20]](function(_0x9466x16){return _0x9466x10[_0xf7d7[17]](200)[_0xf7d7[16]]({rows:_0x9466x16,count:_0x9466x16[_0xf7d7[30]]})})[_0xf7d7[19]](function(_0x9466x11){return handleError(_0x9466x10,_0x9466x11)})};exports[_0xf7d7[32]]= function(_0x9466x12,_0x9466x10,_0x9466x15){return OpenchannelAccount[_0xf7d7[38]](_0xf7d7[37])[_0xf7d7[28]](_0x9466x12[_0xf7d7[27]][_0xf7d7[26]])[_0xf7d7[20]](function(_0x9466x14){if(!_0x9466x14){return _0x9466x10[_0xf7d7[25]](404)};return _0x9466x14[_0xf7d7[36]](_[_0xf7d7[35]](Util[_0xf7d7[22]](_0x9466x12[_0xf7d7[21]]),{include:[{model:OpenchannelQueue,attributes:[_0xf7d7[26],_0xf7d7[33]]},{model:User,attributes:[_0xf7d7[26],_0xf7d7[33],_0xf7d7[34]]},{model:Interval,attributes:[_0xf7d7[26],_0xf7d7[33]]}]}))})[_0xf7d7[20]](function(_0x9466x17){return _0x9466x10[_0xf7d7[16]]({count:_0x9466x17[_0xf7d7[30]],rows:_0x9466x17})})[_0xf7d7[19]](function(_0x9466x11){return handleError(_0x9466x10,_0x9466x11)})};exports[_0xf7d7[39]]= function(_0x9466x12,_0x9466x10){return OpenchannelAccount[_0xf7d7[39]](_0x9466x12[_0xf7d7[42]])[_0xf7d7[20]](function(_0x9466x14){return _0x9466x10[_0xf7d7[17]](201)[_0xf7d7[16]](_0x9466x14)})[_0xf7d7[19]](sequelize.UniqueConstraintError,function(_0x9466x11){return Util[_0xf7d7[41]][_0xf7d7[40]](_0x9466x10,_0x9466x11)})[_0xf7d7[19]](function(_0x9466x11){return handleError(_0x9466x10,_0x9466x11)})};exports[_0xf7d7[43]]= function(_0x9466x12,_0x9466x10,_0x9466x15){_0x9466x12[_0xf7d7[42]][_0xf7d7[44]]= _0x9466x12[_0xf7d7[27]][_0xf7d7[26]];return OpenchannelDisposition[_0xf7d7[39]](_0x9466x12[_0xf7d7[42]])[_0xf7d7[20]](function(_0x9466x18){return _0x9466x10[_0xf7d7[17]](201)[_0xf7d7[16]](_0x9466x18)})[_0xf7d7[19]](function(_0x9466x11){return handleError(_0x9466x10,_0x9466x11)})};exports[_0xf7d7[45]]= function(_0x9466x12,_0x9466x10,_0x9466x15){_0x9466x12[_0xf7d7[42]][_0xf7d7[44]]= _0x9466x12[_0xf7d7[27]][_0xf7d7[26]];_0x9466x12[_0xf7d7[42]][_0xf7d7[46]]= _0x9466x12[_0xf7d7[47]][_0xf7d7[26]];return OpenchannelMessage[_0xf7d7[39]](_0x9466x12[_0xf7d7[42]],{user:_0x9466x12[_0xf7d7[47]]})[_0xf7d7[20]](function(_0x9466x19){return _0x9466x10[_0xf7d7[17]](201)[_0xf7d7[16]](_0x9466x19)})[_0xf7d7[19]](function(_0x9466x11){return handleError(_0x9466x10,_0x9466x11)})};exports[_0xf7d7[48]]= function(_0x9466x12,_0x9466x10,_0x9466x15){if(_0x9466x12[_0xf7d7[42]][_0xf7d7[26]]){delete _0x9466x12[_0xf7d7[42]][_0xf7d7[26]]};var _0x9466x1a=_0x9466x12[_0xf7d7[42]];var _0x9466x1b;return OpenchannelAccount[_0xf7d7[28]](_0x9466x12[_0xf7d7[27]][_0xf7d7[26]])[_0xf7d7[20]](function(_0x9466x14){if(!_0x9466x14){throw new Error(_0xf7d7[61])};_0x9466x1b= _0x9466x14;console[_0xf7d7[49]](_0x9466x1a);if(!_0x9466x1a[_0xf7d7[53]]){throw new Error(_0xf7d7[62])};return OpenchannelRoom[_0xf7d7[65]]({limit:1,where:{contact:_0x9466x1a[_0xf7d7[53]],OpenchannelAccountId:_0x9466x1b[_0xf7d7[26]]},order:[[_0xf7d7[63],_0xf7d7[64]]]})})[_0xf7d7[20]](function(_0x9466x1e){var _0x9466x1d=_0x9466x1e[0];if(!_0x9466x1d|| _0x9466x1d[_0xf7d7[17]]== _0xf7d7[52]){var _0x9466x1f=_0x9466x1d?_0x9466x1d[_0xf7d7[26]]:null;return OpenchannelRoom[_0xf7d7[39]]({contact:_0x9466x1a[_0xf7d7[53]],OpenchannelAccountId:_0x9466x1b[_0xf7d7[26]],status:_0xf7d7[54],ParentId:_0x9466x1f,lastEvent:_0xf7d7[51],lastEventAt:moment()[_0xf7d7[56]](_0xf7d7[55]),openchannelIn:1})}else {return _0x9466x1d[_0xf7d7[60]]({lastEvent:_0xf7d7[51],lastEventAt:moment()[_0xf7d7[56]](_0xf7d7[55]),status:_0xf7d7[57],openReason:_0xf7d7[58],openchannelIn:++_0x9466x1d[_0xf7d7[59]]})}})[_0xf7d7[20]](function(_0x9466x1d){_0x9466x1a[_0xf7d7[44]]= _0x9466x1b[_0xf7d7[26]];_0x9466x1a[_0xf7d7[50]]= _0x9466x1d[_0xf7d7[26]];_0x9466x1a[_0xf7d7[17]]= _0xf7d7[51];return OpenchannelMessage[_0xf7d7[39]](_0x9466x1a)})[_0xf7d7[20]](function(_0x9466x1c){return _0x9466x10[_0xf7d7[17]](201)[_0xf7d7[16]](_0x9466x1c)})[_0xf7d7[19]](function(_0x9466x11){console[_0xf7d7[49]](_0x9466x11);return handleError(_0x9466x10,_0x9466x11)})};exports[_0xf7d7[66]]= function(_0x9466x12,_0x9466x10){if(_0x9466x12[_0xf7d7[42]][_0xf7d7[26]]){delete _0x9466x12[_0xf7d7[42]][_0xf7d7[26]]};return OpenchannelAccount[_0xf7d7[28]](_0x9466x12[_0xf7d7[27]][_0xf7d7[26]])[_0xf7d7[20]](function(_0x9466x14){if(!_0x9466x14){return _0x9466x10[_0xf7d7[25]](404)};var _0x9466x20=_[_0xf7d7[35]](_0x9466x14,_0x9466x12[_0xf7d7[42]]);return _0x9466x20[_0xf7d7[68]]()})[_0xf7d7[20]](function(_0x9466x14){return _0x9466x10[_0xf7d7[17]](200)[_0xf7d7[16]](_0x9466x14)})[_0xf7d7[19]](sequelize.UniqueConstraintError,function(_0x9466x11){return Util[_0xf7d7[41]][_0xf7d7[40]](_0x9466x10,_0x9466x11)})[_0xf7d7[19]](function(_0x9466x11){console[_0xf7d7[49]](_0xf7d7[67],_0x9466x11);return handleError(_0x9466x10,_0x9466x11)})};exports[_0xf7d7[69]]= function(_0x9466x12,_0x9466x10){if(_0x9466x12[_0xf7d7[42]][_0xf7d7[26]]){delete _0x9466x12[_0xf7d7[42]][_0xf7d7[26]]};return OpenchannelDisposition[_0xf7d7[28]](_0x9466x12[_0xf7d7[27]][_0xf7d7[70]])[_0xf7d7[20]](function(_0x9466x21){if(!_0x9466x21){return _0x9466x10[_0xf7d7[25]](404)};var _0x9466x20=_[_0xf7d7[35]](_0x9466x21,_0x9466x12[_0xf7d7[42]]);return _0x9466x20[_0xf7d7[68]]()})[_0xf7d7[20]](function(_0x9466x21){return _0x9466x10[_0xf7d7[17]](200)[_0xf7d7[16]](_0x9466x21)})[_0xf7d7[19]](function(_0x9466x11){return handleError(_0x9466x10,_0x9466x11)})};exports[_0xf7d7[71]]= function(_0x9466x12,_0x9466x10){var _0x9466x22=0;var _0x9466x23=_0x9466x12[_0xf7d7[42]];_0x9466x23[_0xf7d7[74]](function(_0x9466x24){delete _0x9466x24[_0xf7d7[26]];delete _0x9466x24[_0xf7d7[63]];delete _0x9466x24[_0xf7d7[72]];_0x9466x24[_0xf7d7[73]]= ++_0x9466x22});console[_0xf7d7[49]](_0xf7d7[75],_0x9466x12[_0xf7d7[42]]);return sequelize[_0xf7d7[78]](function(_0x9466x26){return OpenchannelApplication[_0xf7d7[77]]({where:{OpenchannelAccountId:_0x9466x12[_0xf7d7[27]][_0xf7d7[26]]},individualHooks:true,transaction:_0x9466x26})[_0xf7d7[20]](function(_0x9466x27){return OpenchannelApplication[_0xf7d7[76]](_0x9466x23,{individualHooks:true,transaction:_0x9466x26})})})[_0xf7d7[20]](function(_0x9466x25){return _0x9466x10[_0xf7d7[17]](200)[_0xf7d7[16]]({count:_0x9466x25[_0xf7d7[30]],rows:_0x9466x25})})[_0xf7d7[19]](function(_0x9466x11){return handleError(_0x9466x10,_0x9466x11)})};exports[_0xf7d7[79]]= function(_0x9466x12,_0x9466x10){if(_0x9466x12[_0xf7d7[42]][_0xf7d7[26]]){delete _0x9466x12[_0xf7d7[42]][_0xf7d7[26]]};return OpenchannelApplication[_0xf7d7[28]](_0x9466x12[_0xf7d7[27]][_0xf7d7[80]])[_0xf7d7[20]](function(_0x9466x27){if(!_0x9466x27){return _0x9466x10[_0xf7d7[25]](404)};var _0x9466x20=_[_0xf7d7[35]](_0x9466x27,_0x9466x12[_0xf7d7[42]]);return _0x9466x20[_0xf7d7[68]]()})[_0xf7d7[20]](function(_0x9466x27){return _0x9466x10[_0xf7d7[17]](200)[_0xf7d7[16]](_0x9466x27)})[_0xf7d7[19]](function(_0x9466x11){return handleError(_0x9466x10,_0x9466x11)})};exports[_0xf7d7[77]]= function(_0x9466x12,_0x9466x10){return OpenchannelAccount[_0xf7d7[28]](_0x9466x12[_0xf7d7[27]][_0xf7d7[26]])[_0xf7d7[20]](function(_0x9466x14){if(!_0x9466x14){return _0x9466x10[_0xf7d7[25]](404)};return _0x9466x14[_0xf7d7[77]]()})[_0xf7d7[20]](function(){return _0x9466x10[_0xf7d7[25]](204)})[_0xf7d7[19]](function(_0x9466x11){return handleError(_0x9466x10,_0x9466x11)})};exports[_0xf7d7[81]]= function(_0x9466x12,_0x9466x10,_0x9466x15){return OpenchannelApplication[_0xf7d7[28]](_0x9466x12[_0xf7d7[27]][_0xf7d7[80]])[_0xf7d7[20]](function(_0x9466x27){if(!_0x9466x27){return _0x9466x10[_0xf7d7[25]](404)};return _0x9466x27[_0xf7d7[77]]()})[_0xf7d7[20]](function(){return _0x9466x10[_0xf7d7[25]](204)})[_0xf7d7[19]](function(_0x9466x11){return handleError(_0x9466x10,_0x9466x11)})};exports[_0xf7d7[82]]= function(_0x9466x12,_0x9466x10,_0x9466x15){return OpenchannelDisposition[_0xf7d7[28]](_0x9466x12[_0xf7d7[27]][_0xf7d7[70]])[_0xf7d7[20]](function(_0x9466x18){if(!_0x9466x18){return _0x9466x10[_0xf7d7[25]](404)};return _0x9466x18[_0xf7d7[77]]()})[_0xf7d7[20]](function(){return _0x9466x10[_0xf7d7[25]](204)})[_0xf7d7[19]](function(_0x9466x11){return handleError(_0x9466x10,_0x9466x11)})};exports[_0xf7d7[83]]= function(_0x9466x12,_0x9466x10){return OpenchannelApplication[_0xf7d7[77]]({where:{id:_0x9466x12[_0xf7d7[21]][_0xf7d7[84]]},individualHooks:true})[_0xf7d7[20]](function(){return _0x9466x10[_0xf7d7[25]](204)})[_0xf7d7[19]](function(_0x9466x11){return handleError(_0x9466x10,_0x9466x11)})};exports[_0xf7d7[85]]= function(_0x9466x12,_0x9466x10,_0x9466x15){var _0x9466x28={where:{OpenchannelAccountId:_0x9466x12[_0xf7d7[27]][_0xf7d7[26]],$and:[]},attributes:[_0xf7d7[26],_0xf7d7[86],_0xf7d7[72],_0xf7d7[87],_0xf7d7[88],_0xf7d7[89]],include:[]};if(_0x9466x12[_0xf7d7[21]]){if(_0x9466x12[_0xf7d7[21]][_0xf7d7[87]]){if(_[_0xf7d7[90]](_0x9466x12[_0xf7d7[21]][_0xf7d7[87]])){for(var _0x9466x29=0;_0x9466x29< _0x9466x12[_0xf7d7[21]][_0xf7d7[87]][_0xf7d7[30]];_0x9466x29++){_0x9466x28[_0xf7d7[94]][_0xf7d7[93]][_0xf7d7[92]]({tags:{$like:_0xf7d7[91]+ _0x9466x12[_0xf7d7[21]][_0xf7d7[87]][_0x9466x29]+ _0xf7d7[91]}})}}else {_0x9466x28[_0xf7d7[94]][_0xf7d7[93]][_0xf7d7[92]]({tags:{$like:_0xf7d7[91]+ _0x9466x12[_0xf7d7[21]][_0xf7d7[87]]+ _0xf7d7[91]}})};delete _0x9466x12[_0xf7d7[21]][_0xf7d7[87]]};_[_0xf7d7[35]](_0x9466x28[_0xf7d7[94]],_0x9466x12[_0xf7d7[21]])};switch(_0x9466x12[_0xf7d7[47]][_0xf7d7[104]]){case _0xf7d7[97]:_0x9466x28[_0xf7d7[95]][_0xf7d7[92]]({model:User,attributes:[_0xf7d7[26]]});var _0x9466x2a;var _0x9466x2b;var _0x9466x2c;return User[_0xf7d7[28]](_0x9466x12[_0xf7d7[47]][_0xf7d7[26]])[_0xf7d7[20]](function(_0x9466x2f){if(_0x9466x2f){return _0x9466x2f[_0xf7d7[103]]()}else {return []}})[_0xf7d7[20]](function(_0x9466x2e){_0x9466x2b= _[_0xf7d7[99]](_0x9466x2e,_0xf7d7[26]);return OpenchannelAccount[_0xf7d7[28]](_0x9466x12[_0xf7d7[27]][_0xf7d7[26]])})[_0xf7d7[20]](function(_0x9466x13){return _0x9466x13[_0xf7d7[36]]({where:{$or:[{app:_0xf7d7[100]},{app:_0xf7d7[97]}]}})})[_0xf7d7[20]](function(_0x9466x23){_0x9466x2a= _[_0xf7d7[99]](_[_0xf7d7[98]](_0x9466x23,{"\x61\x70\x70":_0xf7d7[97]}),_0xf7d7[46]);_0x9466x2c= _[_0xf7d7[99]](_[_0xf7d7[98]](_0x9466x23,{"\x61\x70\x70":_0xf7d7[100]}),_0xf7d7[101]);if(_[_0xf7d7[102]](_0x9466x2b,_0x9466x2c)[_0xf7d7[30]]|| _[_0xf7d7[102]](_0x9466x2a,[_0x9466x12[_0xf7d7[47]][_0xf7d7[26]]])[_0xf7d7[30]]){return OpenchannelRoom[_0xf7d7[65]](_0x9466x28)[_0xf7d7[20]](function(_0x9466x2d){return _0x9466x10[_0xf7d7[17]](200)[_0xf7d7[16]](_0x9466x2d)})[_0xf7d7[19]](function(_0x9466x11){console[_0xf7d7[96]](_0x9466x11);return handleError(_0x9466x10,_0x9466x11)})}else {return _0x9466x10[_0xf7d7[17]](200)[_0xf7d7[16]]([])}})[_0xf7d7[19]](function(_0x9466x11){console[_0xf7d7[96]](_0x9466x11)});default:return OpenchannelRoom[_0xf7d7[65]](_0x9466x28)[_0xf7d7[20]](function(_0x9466x2d){return _0x9466x10[_0xf7d7[17]](200)[_0xf7d7[16]](_0x9466x2d)})[_0xf7d7[19]](function(_0x9466x11){return handleError(_0x9466x10,_0x9466x11)})}};exports[_0xf7d7[105]]= function(_0x9466x12,_0x9466x10,_0x9466x15){return OpenchannelApplication[_0xf7d7[107]](_0xf7d7[73],{where:{OpenchannelAccountId:_0x9466x12[_0xf7d7[27]][_0xf7d7[26]]}})[_0xf7d7[20]](function(_0x9466x31){_0x9466x12[_0xf7d7[42]][_0xf7d7[73]]= _0x9466x31?++_0x9466x31:1;_0x9466x12[_0xf7d7[42]][_0xf7d7[44]]= _0x9466x12[_0xf7d7[27]][_0xf7d7[26]];return OpenchannelApplication[_0xf7d7[39]](_0x9466x12[_0xf7d7[42]])})[_0xf7d7[20]](function(_0x9466x30){return _0x9466x10[_0xf7d7[17]](201)[_0xf7d7[16]](_0x9466x30)})[_0xf7d7[19]](function(_0x9466x11){console[_0xf7d7[49]](_0xf7d7[106],_0x9466x11);return handleError(_0x9466x10,_0x9466x11)})} \ No newline at end of file diff --git a/server/api/openchannel_account/openchannel_account.events.js b/server/api/openchannel_account/openchannel_account.events.js index cc2ccdb..beb4605 100644 --- a/server/api/openchannel_account/openchannel_account.events.js +++ b/server/api/openchannel_account/openchannel_account.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const OpenchannelAccount = require('../../models').OpenchannelAccount; - -var OpenchannelAccountEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -OpenchannelAccountEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - OpenchannelAccount.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - OpenchannelAccountEvents.emit(event + ':' + doc._id, doc); - OpenchannelAccountEvents.emit(event, doc); - done(null); - } -} - -module.exports = OpenchannelAccountEvents; +var _0x445f=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x41\x63\x63\x6F\x75\x6E\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x445f[0];const EventEmitter=require(_0x445f[1]);const OpenchannelAccount=require(_0x445f[3])[_0x445f[2]];var OpenchannelAccountEvents= new EventEmitter();OpenchannelAccountEvents[_0x445f[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x445f[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x445f[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x445f[6]};for(var e in events){var event=events[e];OpenchannelAccount[_0x445f[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x55fcx8,_0x55fcx9,_0x55fcxa){OpenchannelAccountEvents[_0x445f[10]](event+ _0x445f[8]+ _0x55fcx8[_0x445f[9]],_0x55fcx8);OpenchannelAccountEvents[_0x445f[10]](event,_0x55fcx8);_0x55fcxa(null)}}module[_0x445f[11]]= OpenchannelAccountEvents \ No newline at end of file diff --git a/server/api/openchannel_account/openchannel_account.socket.js b/server/api/openchannel_account/openchannel_account.socket.js index 15f955e..268d374 100644 --- a/server/api/openchannel_account/openchannel_account.socket.js +++ b/server/api/openchannel_account/openchannel_account.socket.js @@ -1,32 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const OpenchannelAccountEvents = require('./openchannel_account.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('openchannel_account:' + event, socket); - - OpenchannelAccountEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - OpenchannelAccountEvents.removeListener(event, listener); - }; -} +var _0xf9a9=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x61\x63\x63\x6F\x75\x6E\x74\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x61\x63\x63\x6F\x75\x6E\x74\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xf9a9[0];const OpenchannelAccountEvents=require(_0xf9a9[1]);var events=[_0xf9a9[2],_0xf9a9[3]];exports[_0xf9a9[4]]= function(_0x1790x3){for(var _0x1790x4=0,_0x1790x5=events[_0xf9a9[5]];_0x1790x4< _0x1790x5;_0x1790x4++){var _0x1790x6=events[_0x1790x4];var _0x1790x7=createListener(_0xf9a9[6]+ _0x1790x6,_0x1790x3);OpenchannelAccountEvents[_0xf9a9[7]](_0x1790x6,_0x1790x7);_0x1790x3[_0xf9a9[7]](_0xf9a9[8],removeListener(_0x1790x6,_0x1790x7))}};function createListener(_0x1790x6,_0x1790x3){return function(_0x1790x9){_0x1790x3[_0xf9a9[9]](_0x1790x6,_0x1790x9)}}function removeListener(_0x1790x6,_0x1790x7){return function(){OpenchannelAccountEvents[_0xf9a9[10]](_0x1790x6,_0x1790x7)}} \ No newline at end of file diff --git a/server/api/openchannel_application/index.js b/server/api/openchannel_application/index.js index de6d7b3..f74ca17 100644 --- a/server/api/openchannel_application/index.js +++ b/server/api/openchannel_application/index.js @@ -1,15 +1 @@ -'use strict'; - -var express = require('express'); -var auth = require('../../auth/auth.service'); -var controller = require('./openchannel_application.controller'); -var license = require('../../config/license/license.service'); -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), license.hasOpenchannel(), auth.hasModule([20], ['admin']), controller.index); -router.get('/:id', auth.isAuthenticated(), license.hasOpenchannel(), auth.hasModule([20], ['admin']), controller.show); -router.post('/', auth.isAuthenticated(), license.hasOpenchannel(), auth.hasModule([20], ['admin']), controller.create); -router.put('/:id', auth.isAuthenticated(), license.hasOpenchannel(), auth.hasModule([20], ['admin']), controller.update); -router.delete('/:id', auth.isAuthenticated(), license.hasOpenchannel(), auth.hasModule([20], ['admin']), controller.destroy); - -module.exports = router; +var _0xc6bd=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x68\x61\x73\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0xc6bd[0];var express=require(_0xc6bd[1]);var auth=require(_0xc6bd[2]);var controller=require(_0xc6bd[3]);var license=require(_0xc6bd[4]);var router=express.Router();router[_0xc6bd[11]](_0xc6bd[5],auth[_0xc6bd[6]](),license[_0xc6bd[7]](),auth[_0xc6bd[9]]([20],[_0xc6bd[8]]),controller[_0xc6bd[10]]);router[_0xc6bd[11]](_0xc6bd[12],auth[_0xc6bd[6]](),license[_0xc6bd[7]](),auth[_0xc6bd[9]]([20],[_0xc6bd[8]]),controller[_0xc6bd[13]]);router[_0xc6bd[15]](_0xc6bd[5],auth[_0xc6bd[6]](),license[_0xc6bd[7]](),auth[_0xc6bd[9]]([20],[_0xc6bd[8]]),controller[_0xc6bd[14]]);router[_0xc6bd[17]](_0xc6bd[12],auth[_0xc6bd[6]](),license[_0xc6bd[7]](),auth[_0xc6bd[9]]([20],[_0xc6bd[8]]),controller[_0xc6bd[16]]);router[_0xc6bd[19]](_0xc6bd[12],auth[_0xc6bd[6]](),license[_0xc6bd[7]](),auth[_0xc6bd[9]]([20],[_0xc6bd[8]]),controller[_0xc6bd[18]]);module[_0xc6bd[20]]= router \ No newline at end of file diff --git a/server/api/openchannel_application/openchannel_application.controller.js b/server/api/openchannel_application/openchannel_application.controller.js index c47b66b..268cf61 100644 --- a/server/api/openchannel_application/openchannel_application.controller.js +++ b/server/api/openchannel_application/openchannel_application.controller.js @@ -1,129 +1 @@ -/** - * Using Rails-like standard naming convention for endpoints. - * GET /api/openchannel/applications -> index - * POST /api/openchannel/applications -> create - * GET /api/openchannel/applications/:id -> show - * PUT /api/openchannel/applications/:id -> update - * DELETE /api/openchannel/applications/:id -> destroy - */ - -'use strict'; - - -var _ = require('lodash'); -var Util = require('../../config/util'); - -var OpenchannelApplication = require('../../models').OpenchannelApplication; - -function handleError(res, err) { - return res.status(500).send(err); -} - -// Gets a list of OpenchannelApplication -exports.index = function(req, res) { - return OpenchannelApplication - .findAll({ - where: req.query, - order: 'priority', - include: [{ - all: true - }] - }) - .then(function(Applications) { - return res.status(200).send(Applications); - }) - .catch(function(err) { - return handleError(res, err); - }); -} - -// Gets a single OpenchannelApplication from the DB -exports.show = function(req, res) { - return OpenchannelApplication - .findById(req.params.id, { - include: [{ - all: true - }] - }) - .then(function(Application) { - if (!Application) { - return res.sendStatus(404); - } - return res.send(Application); - }) - .catch(function(err) { - return handleError(res, err); - }); - -} - -// Creates a new OpenchannelApplication in the DB -exports.create = function(req, res) { - - return OpenchannelApplication - .max('priority', { - where: { - OpenchannelAccountId: req.body.OpenchannelAccountId - } - }) - .then(function(max) { - // SET PRIORITY - req.body.priority = max ? ++max : 1; - return OpenchannelApplication - .create(req.body) - }) - .then(function(Application) { - return res.status(201).send(Application); - }) - .catch(function(err) { - return handleError(res, err); - }); - - -} - -// Updates an existing OpenchannelApplication in the DB -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - return OpenchannelApplication - .findById(req.params.id) - .then(function(Application) { - if (!Application) { - return res.sendStatus(404); - } - var updated = _.merge(Application, req.body); - return updated - .save() - - }) - .then(function(Application) { - return res.status(200).send(Application); - }) - .catch(function(err) { - return handleError(res, err); - }); - -} - - -// Deletes a OpenchannelApplication from the DB -exports.destroy = function(req, res) { - return OpenchannelApplication - .findById(req.params.id) - .then(function(Application) { - if (!Application) { - return res.sendStatus(404); - } - return Application - .destroy() - - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -} +var _0x43d0=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x70\x72\x69\x6F\x72\x69\x74\x79","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x41\x63\x63\x6F\x75\x6E\x74\x49\x64","\x6D\x61\x78","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x64\x65\x73\x74\x72\x6F\x79"];_0x43d0[0];var _=require(_0x43d0[1]);var Util=require(_0x43d0[2]);var OpenchannelApplication=require(_0x43d0[4])[_0x43d0[3]];function handleError(_0xd7a3x5,_0xd7a3x6){return _0xd7a3x5[_0x43d0[6]](500)[_0x43d0[5]](_0xd7a3x6)}exports[_0x43d0[7]]= function(_0xd7a3x7,_0xd7a3x5){return OpenchannelApplication[_0x43d0[12]]({where:_0xd7a3x7[_0x43d0[10]],order:_0x43d0[11],include:[{all:true}]})[_0x43d0[9]](function(_0xd7a3x8){return _0xd7a3x5[_0x43d0[6]](200)[_0x43d0[5]](_0xd7a3x8)})[_0x43d0[8]](function(_0xd7a3x6){return handleError(_0xd7a3x5,_0xd7a3x6)})};exports[_0x43d0[13]]= function(_0xd7a3x7,_0xd7a3x5){return OpenchannelApplication[_0x43d0[17]](_0xd7a3x7[_0x43d0[16]][_0x43d0[15]],{include:[{all:true}]})[_0x43d0[9]](function(_0xd7a3x9){if(!_0xd7a3x9){return _0xd7a3x5[_0x43d0[14]](404)};return _0xd7a3x5[_0x43d0[5]](_0xd7a3x9)})[_0x43d0[8]](function(_0xd7a3x6){return handleError(_0xd7a3x5,_0xd7a3x6)})};exports[_0x43d0[18]]= function(_0xd7a3x7,_0xd7a3x5){return OpenchannelApplication[_0x43d0[21]](_0x43d0[11],{where:{OpenchannelAccountId:_0xd7a3x7[_0x43d0[19]][_0x43d0[20]]}})[_0x43d0[9]](function(_0xd7a3xa){_0xd7a3x7[_0x43d0[19]][_0x43d0[11]]= _0xd7a3xa?++_0xd7a3xa:1;return OpenchannelApplication[_0x43d0[18]](_0xd7a3x7[_0x43d0[19]])})[_0x43d0[9]](function(_0xd7a3x9){return _0xd7a3x5[_0x43d0[6]](201)[_0x43d0[5]](_0xd7a3x9)})[_0x43d0[8]](function(_0xd7a3x6){return handleError(_0xd7a3x5,_0xd7a3x6)})};exports[_0x43d0[22]]= function(_0xd7a3x7,_0xd7a3x5){if(_0xd7a3x7[_0x43d0[19]][_0x43d0[15]]){delete _0xd7a3x7[_0x43d0[19]][_0x43d0[15]]};return OpenchannelApplication[_0x43d0[17]](_0xd7a3x7[_0x43d0[16]][_0x43d0[15]])[_0x43d0[9]](function(_0xd7a3x9){if(!_0xd7a3x9){return _0xd7a3x5[_0x43d0[14]](404)};var _0xd7a3xb=_[_0x43d0[23]](_0xd7a3x9,_0xd7a3x7[_0x43d0[19]]);return _0xd7a3xb[_0x43d0[24]]()})[_0x43d0[9]](function(_0xd7a3x9){return _0xd7a3x5[_0x43d0[6]](200)[_0x43d0[5]](_0xd7a3x9)})[_0x43d0[8]](function(_0xd7a3x6){return handleError(_0xd7a3x5,_0xd7a3x6)})};exports[_0x43d0[25]]= function(_0xd7a3x7,_0xd7a3x5){return OpenchannelApplication[_0x43d0[17]](_0xd7a3x7[_0x43d0[16]][_0x43d0[15]])[_0x43d0[9]](function(_0xd7a3x9){if(!_0xd7a3x9){return _0xd7a3x5[_0x43d0[14]](404)};return _0xd7a3x9[_0x43d0[25]]()})[_0x43d0[9]](function(){return _0xd7a3x5[_0x43d0[14]](204)})[_0x43d0[8]](function(_0xd7a3x6){return handleError(_0xd7a3x5,_0xd7a3x6)})} \ No newline at end of file diff --git a/server/api/openchannel_application/openchannel_application.events.js b/server/api/openchannel_application/openchannel_application.events.js index 13b8c25..4116ba3 100644 --- a/server/api/openchannel_application/openchannel_application.events.js +++ b/server/api/openchannel_application/openchannel_application.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const OpenchannelApplication = require('../../models').OpenchannelApplication; - -var OpenchannelApplicationEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -OpenchannelApplicationEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - OpenchannelApplication.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - OpenchannelApplicationEvents.emit(event + ':' + doc._id, doc); - OpenchannelApplicationEvents.emit(event, doc); - done(null); - } -} - -module.exports = OpenchannelApplicationEvents; +var _0x1fd7=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x1fd7[0];const EventEmitter=require(_0x1fd7[1]);const OpenchannelApplication=require(_0x1fd7[3])[_0x1fd7[2]];var OpenchannelApplicationEvents= new EventEmitter();OpenchannelApplicationEvents[_0x1fd7[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x1fd7[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x1fd7[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x1fd7[6]};for(var e in events){var event=events[e];OpenchannelApplication[_0x1fd7[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xc95cx8,_0xc95cx9,_0xc95cxa){OpenchannelApplicationEvents[_0x1fd7[10]](event+ _0x1fd7[8]+ _0xc95cx8[_0x1fd7[9]],_0xc95cx8);OpenchannelApplicationEvents[_0x1fd7[10]](event,_0xc95cx8);_0xc95cxa(null)}}module[_0x1fd7[11]]= OpenchannelApplicationEvents \ No newline at end of file diff --git a/server/api/openchannel_application/openchannel_application.socket.js b/server/api/openchannel_application/openchannel_application.socket.js index d8ab577..19a379e 100644 --- a/server/api/openchannel_application/openchannel_application.socket.js +++ b/server/api/openchannel_application/openchannel_application.socket.js @@ -1,32 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const OpenchannelApplicationEvents = require('./openchannel_application.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('openchannel_application:' + event, socket); - - OpenchannelApplicationEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - OpenchannelApplicationEvents.removeListener(event, listener); - }; -} +var _0xa01b=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xa01b[0];const OpenchannelApplicationEvents=require(_0xa01b[1]);var events=[_0xa01b[2],_0xa01b[3]];exports[_0xa01b[4]]= function(_0xe11fx3){for(var _0xe11fx4=0,_0xe11fx5=events[_0xa01b[5]];_0xe11fx4< _0xe11fx5;_0xe11fx4++){var _0xe11fx6=events[_0xe11fx4];var _0xe11fx7=createListener(_0xa01b[6]+ _0xe11fx6,_0xe11fx3);OpenchannelApplicationEvents[_0xa01b[7]](_0xe11fx6,_0xe11fx7);_0xe11fx3[_0xa01b[7]](_0xa01b[8],removeListener(_0xe11fx6,_0xe11fx7))}};function createListener(_0xe11fx6,_0xe11fx3){return function(_0xe11fx9){_0xe11fx3[_0xa01b[9]](_0xe11fx6,_0xe11fx9)}}function removeListener(_0xe11fx6,_0xe11fx7){return function(){OpenchannelApplicationEvents[_0xa01b[10]](_0xe11fx6,_0xe11fx7)}} \ No newline at end of file diff --git a/server/api/openchannel_disposition/index.js b/server/api/openchannel_disposition/index.js index b10f1c8..d3c37b9 100644 --- a/server/api/openchannel_disposition/index.js +++ b/server/api/openchannel_disposition/index.js @@ -1,16 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./openchannel_disposition.controller'); -var auth = require('../../auth/auth.service'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), controller.index); -router.get('/:id', auth.isAuthenticated(), controller.show); -router.post('/', auth.isAuthenticated(), controller.create); -router.put('/:id', auth.isAuthenticated(), controller.update); -router.patch('/:id', auth.isAuthenticated(), controller.update); -router.delete('/:id', auth.isAuthenticated(), controller.destroy); - -module.exports = router; +var _0x6386=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x70\x61\x74\x63\x68","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0x6386[0];var express=require(_0x6386[1]);var controller=require(_0x6386[2]);var auth=require(_0x6386[3]);var router=express.Router();router[_0x6386[7]](_0x6386[4],auth[_0x6386[5]](),controller[_0x6386[6]]);router[_0x6386[7]](_0x6386[8],auth[_0x6386[5]](),controller[_0x6386[9]]);router[_0x6386[11]](_0x6386[4],auth[_0x6386[5]](),controller[_0x6386[10]]);router[_0x6386[13]](_0x6386[8],auth[_0x6386[5]](),controller[_0x6386[12]]);router[_0x6386[14]](_0x6386[8],auth[_0x6386[5]](),controller[_0x6386[12]]);router[_0x6386[16]](_0x6386[8],auth[_0x6386[5]](),controller[_0x6386[15]]);module[_0x6386[17]]= router \ No newline at end of file diff --git a/server/api/openchannel_disposition/openchannel_disposition.controller.js b/server/api/openchannel_disposition/openchannel_disposition.controller.js index fb1250f..1347524 100644 --- a/server/api/openchannel_disposition/openchannel_disposition.controller.js +++ b/server/api/openchannel_disposition/openchannel_disposition.controller.js @@ -1,110 +1 @@ -/** - * Using Rails-like standard naming convention for endpoints. - * GET /api/openchannel/disposition -> index - * POST /api/openchannel/disposition -> create - * GET /api/openchannel/disposition/:id -> show - * PUT /api/openchannel/disposition/:id -> update - * DELETE /api/openchannel/disposition/:id -> destroy - */ - -'use strict'; - - -var _ = require('lodash'); -var Util = require('../../config/util'); - -var OpenchannelDisposition = require('../../models').OpenchannelDisposition; - - -function handleError(res, statusCode) { - statusCode = statusCode || 500; - return function(err) { - res.status(statusCode).send(err); - }; -} - -function responseWithResult(res, statusCode) { - statusCode = statusCode || 200; - return function(entity) { - if (entity) { - res.status(statusCode).json(entity); - } - }; -} - -function handleEntityNotFound(res) { - return function(entity) { - if (!entity) { - res.status(404).end(); - return null; - } - return entity; - }; -} - -function saveUpdates(updates) { - return function(entity) { - return entity.updateAttributes(updates) - .then(function(updated) { - return updated; - }) - }; -} - -function removeEntity(res) { - return function(entity) { - if (entity) { - return entity.destroy() - .then(function() { - res.status(204).end(); - }) - } - }; -} - -// Gets a list of OpenchannelDisposition -exports.index = function(req, res) { - OpenchannelDisposition - .findAndCountAll() - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Gets a single OpenchannelDisposition from the DB -exports.show = function(req, res) { - OpenchannelDisposition - .findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Creates a new OpenchannelDisposition in the DB -exports.create = function(req, res) { - OpenchannelDisposition - .create(req.body) - .then(responseWithResult(res, 201)) - .catch(handleError(res)); -} - -// Updates an existing OpenchannelDisposition in the DB -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - OpenchannelDisposition - .findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(saveUpdates(req.body)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Deletes a OpenchannelDisposition from the DB -exports.destroy = function(req, res) { - OpenchannelDisposition - .findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(removeEntity(res)) - .catch(handleError(res)); -} +var _0xe8af=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x6A\x73\x6F\x6E","\x65\x6E\x64","\x74\x68\x65\x6E","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x64\x65\x73\x74\x72\x6F\x79","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x73\x68\x6F\x77","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65"];_0xe8af[0];var _=require(_0xe8af[1]);var Util=require(_0xe8af[2]);var OpenchannelDisposition=require(_0xe8af[4])[_0xe8af[3]];function handleError(_0xfe85x5,_0xfe85x6){_0xfe85x6= _0xfe85x6|| 500;return function(_0xfe85x7){_0xfe85x5[_0xe8af[6]](_0xfe85x6)[_0xe8af[5]](_0xfe85x7)}}function responseWithResult(_0xfe85x5,_0xfe85x6){_0xfe85x6= _0xfe85x6|| 200;return function(_0xfe85x9){if(_0xfe85x9){_0xfe85x5[_0xe8af[6]](_0xfe85x6)[_0xe8af[7]](_0xfe85x9)}}}function handleEntityNotFound(_0xfe85x5){return function(_0xfe85x9){if(!_0xfe85x9){_0xfe85x5[_0xe8af[6]](404)[_0xe8af[8]]();return null};return _0xfe85x9}}function saveUpdates(_0xfe85xc){return function(_0xfe85x9){return _0xfe85x9[_0xe8af[10]](_0xfe85xc)[_0xe8af[9]](function(_0xfe85xd){return _0xfe85xd})}}function removeEntity(_0xfe85x5){return function(_0xfe85x9){if(_0xfe85x9){return _0xfe85x9[_0xe8af[11]]()[_0xe8af[9]](function(){_0xfe85x5[_0xe8af[6]](204)[_0xe8af[8]]()})}}}exports[_0xe8af[12]]= function(_0xfe85xf,_0xfe85x5){OpenchannelDisposition[_0xe8af[14]]()[_0xe8af[9]](responseWithResult(_0xfe85x5))[_0xe8af[13]](handleError(_0xfe85x5))};exports[_0xe8af[15]]= function(_0xfe85xf,_0xfe85x5){OpenchannelDisposition[_0xe8af[18]](_0xfe85xf[_0xe8af[17]][_0xe8af[16]])[_0xe8af[9]](handleEntityNotFound(_0xfe85x5))[_0xe8af[9]](responseWithResult(_0xfe85x5))[_0xe8af[13]](handleError(_0xfe85x5))};exports[_0xe8af[19]]= function(_0xfe85xf,_0xfe85x5){OpenchannelDisposition[_0xe8af[19]](_0xfe85xf[_0xe8af[20]])[_0xe8af[9]](responseWithResult(_0xfe85x5,201))[_0xe8af[13]](handleError(_0xfe85x5))};exports[_0xe8af[21]]= function(_0xfe85xf,_0xfe85x5){if(_0xfe85xf[_0xe8af[20]][_0xe8af[16]]){delete _0xfe85xf[_0xe8af[20]][_0xe8af[16]]};OpenchannelDisposition[_0xe8af[18]](_0xfe85xf[_0xe8af[17]][_0xe8af[16]])[_0xe8af[9]](handleEntityNotFound(_0xfe85x5))[_0xe8af[9]](saveUpdates(_0xfe85xf[_0xe8af[20]]))[_0xe8af[9]](responseWithResult(_0xfe85x5))[_0xe8af[13]](handleError(_0xfe85x5))};exports[_0xe8af[11]]= function(_0xfe85xf,_0xfe85x5){OpenchannelDisposition[_0xe8af[18]](_0xfe85xf[_0xe8af[17]][_0xe8af[16]])[_0xe8af[9]](handleEntityNotFound(_0xfe85x5))[_0xe8af[9]](removeEntity(_0xfe85x5))[_0xe8af[13]](handleError(_0xfe85x5))} \ No newline at end of file diff --git a/server/api/openchannel_disposition/openchannel_disposition.events.js b/server/api/openchannel_disposition/openchannel_disposition.events.js index 178c511..72f2d1d 100644 --- a/server/api/openchannel_disposition/openchannel_disposition.events.js +++ b/server/api/openchannel_disposition/openchannel_disposition.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const OpenchannelDisposition = require('../../models').OpenchannelDisposition; - -var OpenchannelDispositionEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -OpenchannelDispositionEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - OpenchannelDisposition.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - OpenchannelDispositionEvents.emit(event + ':' + doc._id, doc); - OpenchannelDispositionEvents.emit(event, doc); - done(null); - } -} - -module.exports = OpenchannelDispositionEvents; +var _0x3d0c=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x3d0c[0];const EventEmitter=require(_0x3d0c[1]);const OpenchannelDisposition=require(_0x3d0c[3])[_0x3d0c[2]];var OpenchannelDispositionEvents= new EventEmitter();OpenchannelDispositionEvents[_0x3d0c[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x3d0c[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x3d0c[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x3d0c[6]};for(var e in events){var event=events[e];OpenchannelDisposition[_0x3d0c[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x395cx8,_0x395cx9,_0x395cxa){OpenchannelDispositionEvents[_0x3d0c[10]](event+ _0x3d0c[8]+ _0x395cx8[_0x3d0c[9]],_0x395cx8);OpenchannelDispositionEvents[_0x3d0c[10]](event,_0x395cx8);_0x395cxa(null)}}module[_0x3d0c[11]]= OpenchannelDispositionEvents \ No newline at end of file diff --git a/server/api/openchannel_disposition/openchannel_disposition.socket.js b/server/api/openchannel_disposition/openchannel_disposition.socket.js index 960c110..feb90f0 100644 --- a/server/api/openchannel_disposition/openchannel_disposition.socket.js +++ b/server/api/openchannel_disposition/openchannel_disposition.socket.js @@ -1,32 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const OpenchannelDispositionEvents = require('./openchannel_disposition.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('openchannel_disposition:' + event, socket); - - OpenchannelDispositionEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - OpenchannelDispositionEvents.removeListener(event, listener); - }; -} +var _0x9e67=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x9e67[0];const OpenchannelDispositionEvents=require(_0x9e67[1]);var events=[_0x9e67[2],_0x9e67[3]];exports[_0x9e67[4]]= function(_0x4162x3){for(var _0x4162x4=0,_0x4162x5=events[_0x9e67[5]];_0x4162x4< _0x4162x5;_0x4162x4++){var _0x4162x6=events[_0x4162x4];var _0x4162x7=createListener(_0x9e67[6]+ _0x4162x6,_0x4162x3);OpenchannelDispositionEvents[_0x9e67[7]](_0x4162x6,_0x4162x7);_0x4162x3[_0x9e67[7]](_0x9e67[8],removeListener(_0x4162x6,_0x4162x7))}};function createListener(_0x4162x6,_0x4162x3){return function(_0x4162x9){_0x4162x3[_0x9e67[9]](_0x4162x6,_0x4162x9)}}function removeListener(_0x4162x6,_0x4162x7){return function(){OpenchannelDispositionEvents[_0x9e67[10]](_0x4162x6,_0x4162x7)}} \ No newline at end of file diff --git a/server/api/openchannel_message/index.js b/server/api/openchannel_message/index.js index fb26cb8..4f72eb4 100644 --- a/server/api/openchannel_message/index.js +++ b/server/api/openchannel_message/index.js @@ -1,18 +1 @@ -'use strict'; - -var express = require('express'); -var auth = require('../../auth/auth.service'); -var controller = require('./openchannel_message.controller'); -var license = require('../../config/license/license.service'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), license.hasOpenchannel(), auth.hasModule([20], ['admin']), controller.index); -router.get('/describe', auth.isAuthenticated(), license.hasOpenchannel(), auth.hasModule([20], ['admin']), controller.describe); -router.get('/:id', auth.isAuthenticated(), license.hasOpenchannel(), auth.hasModule([20], ['admin', 'agent']), controller.show); -router.post('/', auth.isAuthenticated(), license.hasOpenchannel(), auth.hasModule([20], ['admin']), controller.create); -router.put('/:id', auth.isAuthenticated(), license.hasOpenchannel(), auth.hasModule([20], ['admin']), controller.update); -router.delete('/:id', auth.isAuthenticated(), license.hasOpenchannel(), auth.hasModule([20], ['admin']), controller.destroy); -router.delete('/', auth.isAuthenticated(), license.hasOpenchannel(), auth.hasModule([20], ['admin']), controller.bulkDelete); - -module.exports = router; +var _0xb8d9=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x6D\x65\x73\x73\x61\x67\x65\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x68\x61\x73\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x64\x65\x73\x63\x72\x69\x62\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x2F\x3A\x69\x64","\x61\x67\x65\x6E\x74","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x62\x75\x6C\x6B\x44\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0xb8d9[0];var express=require(_0xb8d9[1]);var auth=require(_0xb8d9[2]);var controller=require(_0xb8d9[3]);var license=require(_0xb8d9[4]);var router=express.Router();router[_0xb8d9[11]](_0xb8d9[5],auth[_0xb8d9[6]](),license[_0xb8d9[7]](),auth[_0xb8d9[9]]([20],[_0xb8d9[8]]),controller[_0xb8d9[10]]);router[_0xb8d9[11]](_0xb8d9[12],auth[_0xb8d9[6]](),license[_0xb8d9[7]](),auth[_0xb8d9[9]]([20],[_0xb8d9[8]]),controller[_0xb8d9[13]]);router[_0xb8d9[11]](_0xb8d9[14],auth[_0xb8d9[6]](),license[_0xb8d9[7]](),auth[_0xb8d9[9]]([20],[_0xb8d9[8],_0xb8d9[15]]),controller[_0xb8d9[16]]);router[_0xb8d9[18]](_0xb8d9[5],auth[_0xb8d9[6]](),license[_0xb8d9[7]](),auth[_0xb8d9[9]]([20],[_0xb8d9[8]]),controller[_0xb8d9[17]]);router[_0xb8d9[20]](_0xb8d9[14],auth[_0xb8d9[6]](),license[_0xb8d9[7]](),auth[_0xb8d9[9]]([20],[_0xb8d9[8]]),controller[_0xb8d9[19]]);router[_0xb8d9[22]](_0xb8d9[14],auth[_0xb8d9[6]](),license[_0xb8d9[7]](),auth[_0xb8d9[9]]([20],[_0xb8d9[8]]),controller[_0xb8d9[21]]);router[_0xb8d9[22]](_0xb8d9[5],auth[_0xb8d9[6]](),license[_0xb8d9[7]](),auth[_0xb8d9[9]]([20],[_0xb8d9[8]]),controller[_0xb8d9[23]]);module[_0xb8d9[24]]= router \ No newline at end of file diff --git a/server/api/openchannel_message/openchannel_message.controller.js b/server/api/openchannel_message/openchannel_message.controller.js index 17f68b9..708a1ea 100644 --- a/server/api/openchannel_message/openchannel_message.controller.js +++ b/server/api/openchannel_message/openchannel_message.controller.js @@ -1,170 +1 @@ -/** - * Using Rails-like standard naming convention for endpoints. - * GET /api/openchannel/messages -> index - * POST /api/openchannel/messages -> create - * GET /api/openchannel/messages/:id -> show - * PUT /api/openchannel/messages/:id -> update - * DELETE /api/openchannel/messages/:id -> destroy - */ - -'use strict'; - - -var _ = require('lodash'); -var Util = require('../../config/util'); - -var OpenchannelMessage = require('../../models').OpenchannelMessage; -var OpenchannelRoom = require('../../models').OpenchannelRoom; -var User = require('../../models').User; - - -function handleError(res, err) { - return res.status(500).send(err); -} - -// Gets a list of OpenchannelMessage -exports.index = function(req, res) { - var params = { - order: 'createdAt DESC', - include: [{ - all: true, - include: [{ - all: true - }] - }] - }; - - switch (req.user.role) { - case 'admin': - params.where = req.query; - break; - case 'agent': - break; - default: - } - - return OpenchannelMessage - .findAll(params) - .then(function(messages) { - return res.status(200).send(messages); - }) - .catch(function(err) { - return handleError(res, err); - }); -} - -exports.describe = function(req, res) { - return OpenchannelMessage - .describe() - .then(function(fields) { - return res.status(200).send(fields); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Gets a single OpenchannelMessage from the DB -exports.show = function(req, res) { - return OpenchannelMessage - .findById(req.params.id, { - include: [{ - model: User, - attributes: ['id', 'name', 'fullname', 'email'] - }] - }) - .then(function(Message) { - if (!Message) { - return res.sendStatus(404); - } - return res.send(Message); - }) - .catch(function(err) { - return handleError(res, err); - }); -} - -// Creates a new OpenchannelMessage in the DB -exports.create = function(req, res) { - req.body.UserId = req.user.id; - return OpenchannelMessage - .create(req.body) - .then(function(Message) { - return res.status(201).send(Message); - }) - .catch(function(err) { - return handleError(res, err); - }); -} - -// Updates an existing OpenchannelMessage in the DB -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - return OpenchannelMessage - .findById(req.params.id, { - include: [{ - all: true - }] - }) - .then(function(Message) { - if (!Message) { - return res.sendStatus(404); - } - var updated = _.merge(Message, req.body); - return updated - .save(); - }) - .then(function(updated) { - return res.status(200).send(updated); - }) - .catch(function(err) { - return handleError(res, err); - }); -} - -// Deletes a OpenchannelMessage from the DB -exports.destroy = function(req, res) { - return OpenchannelMessage - .findById(req.params.id) - .then(function(Message) { - if (!Message) { - return res.sendStatus(404); - } - return Message - .destroy(); - }).then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -} - -exports.bulkDelete = function(req, res) { - return OpenchannelMessage - .bulkUpdate({ - where: { - id: { - $in: req.body.id - } - }, - attributes: { - directory: 'TRASH' - } - }) - .then(function(Message) { - if (!Message) { - return res.sendStatus(404); - } - return Message - .destroy(); - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; +var _0x5eeb=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x4D\x65\x73\x73\x61\x67\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x52\x6F\x6F\x6D","\x55\x73\x65\x72","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x69\x6E\x64\x65\x78","\x63\x72\x65\x61\x74\x65\x64\x41\x74\x20\x44\x45\x53\x43","\x77\x68\x65\x72\x65","\x71\x75\x65\x72\x79","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x72\x6F\x6C\x65","\x75\x73\x65\x72","\x63\x61\x74\x63\x68","\x74\x68\x65\x6E","\x66\x69\x6E\x64\x41\x6C\x6C","\x64\x65\x73\x63\x72\x69\x62\x65","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x6E\x61\x6D\x65","\x66\x75\x6C\x6C\x6E\x61\x6D\x65","\x65\x6D\x61\x69\x6C","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x55\x73\x65\x72\x49\x64","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x64\x65\x73\x74\x72\x6F\x79","\x62\x75\x6C\x6B\x44\x65\x6C\x65\x74\x65","\x54\x52\x41\x53\x48","\x62\x75\x6C\x6B\x55\x70\x64\x61\x74\x65"];_0x5eeb[0];var _=require(_0x5eeb[1]);var Util=require(_0x5eeb[2]);var OpenchannelMessage=require(_0x5eeb[4])[_0x5eeb[3]];var OpenchannelRoom=require(_0x5eeb[4])[_0x5eeb[5]];var User=require(_0x5eeb[4])[_0x5eeb[6]];function handleError(_0x62dcx7,_0x62dcx8){return _0x62dcx7[_0x5eeb[8]](500)[_0x5eeb[7]](_0x62dcx8)}exports[_0x5eeb[9]]= function(_0x62dcx9,_0x62dcx7){var _0x62dcxa={order:_0x5eeb[10],include:[{all:true,include:[{all:true}]}]};switch(_0x62dcx9[_0x5eeb[16]][_0x5eeb[15]]){case _0x5eeb[13]:_0x62dcxa[_0x5eeb[11]]= _0x62dcx9[_0x5eeb[12]];break;case _0x5eeb[14]:break;default:};return OpenchannelMessage[_0x5eeb[19]](_0x62dcxa)[_0x5eeb[18]](function(_0x62dcxb){return _0x62dcx7[_0x5eeb[8]](200)[_0x5eeb[7]](_0x62dcxb)})[_0x5eeb[17]](function(_0x62dcx8){return handleError(_0x62dcx7,_0x62dcx8)})};exports[_0x5eeb[20]]= function(_0x62dcx9,_0x62dcx7){return OpenchannelMessage[_0x5eeb[20]]()[_0x5eeb[18]](function(_0x62dcxc){return _0x62dcx7[_0x5eeb[8]](200)[_0x5eeb[7]](_0x62dcxc)})[_0x5eeb[17]](function(_0x62dcx8){return handleError(_0x62dcx7,_0x62dcx8)})};exports[_0x5eeb[21]]= function(_0x62dcx9,_0x62dcx7){return OpenchannelMessage[_0x5eeb[28]](_0x62dcx9[_0x5eeb[24]][_0x5eeb[23]],{include:[{model:User,attributes:[_0x5eeb[23],_0x5eeb[25],_0x5eeb[26],_0x5eeb[27]]}]})[_0x5eeb[18]](function(_0x62dcxd){if(!_0x62dcxd){return _0x62dcx7[_0x5eeb[22]](404)};return _0x62dcx7[_0x5eeb[7]](_0x62dcxd)})[_0x5eeb[17]](function(_0x62dcx8){return handleError(_0x62dcx7,_0x62dcx8)})};exports[_0x5eeb[29]]= function(_0x62dcx9,_0x62dcx7){_0x62dcx9[_0x5eeb[31]][_0x5eeb[30]]= _0x62dcx9[_0x5eeb[16]][_0x5eeb[23]];return OpenchannelMessage[_0x5eeb[29]](_0x62dcx9[_0x5eeb[31]])[_0x5eeb[18]](function(_0x62dcxd){return _0x62dcx7[_0x5eeb[8]](201)[_0x5eeb[7]](_0x62dcxd)})[_0x5eeb[17]](function(_0x62dcx8){return handleError(_0x62dcx7,_0x62dcx8)})};exports[_0x5eeb[32]]= function(_0x62dcx9,_0x62dcx7){if(_0x62dcx9[_0x5eeb[31]][_0x5eeb[23]]){delete _0x62dcx9[_0x5eeb[31]][_0x5eeb[23]]};return OpenchannelMessage[_0x5eeb[28]](_0x62dcx9[_0x5eeb[24]][_0x5eeb[23]],{include:[{all:true}]})[_0x5eeb[18]](function(_0x62dcxd){if(!_0x62dcxd){return _0x62dcx7[_0x5eeb[22]](404)};var _0x62dcxe=_[_0x5eeb[33]](_0x62dcxd,_0x62dcx9[_0x5eeb[31]]);return _0x62dcxe[_0x5eeb[34]]()})[_0x5eeb[18]](function(_0x62dcxe){return _0x62dcx7[_0x5eeb[8]](200)[_0x5eeb[7]](_0x62dcxe)})[_0x5eeb[17]](function(_0x62dcx8){return handleError(_0x62dcx7,_0x62dcx8)})};exports[_0x5eeb[35]]= function(_0x62dcx9,_0x62dcx7){return OpenchannelMessage[_0x5eeb[28]](_0x62dcx9[_0x5eeb[24]][_0x5eeb[23]])[_0x5eeb[18]](function(_0x62dcxd){if(!_0x62dcxd){return _0x62dcx7[_0x5eeb[22]](404)};return _0x62dcxd[_0x5eeb[35]]()})[_0x5eeb[18]](function(){return _0x62dcx7[_0x5eeb[22]](204)})[_0x5eeb[17]](function(_0x62dcx8){return handleError(_0x62dcx7,_0x62dcx8)})};exports[_0x5eeb[36]]= function(_0x62dcx9,_0x62dcx7){return OpenchannelMessage[_0x5eeb[38]]({where:{id:{$in:_0x62dcx9[_0x5eeb[31]][_0x5eeb[23]]}},attributes:{directory:_0x5eeb[37]}})[_0x5eeb[18]](function(_0x62dcxd){if(!_0x62dcxd){return _0x62dcx7[_0x5eeb[22]](404)};return _0x62dcxd[_0x5eeb[35]]()})[_0x5eeb[18]](function(){return _0x62dcx7[_0x5eeb[22]](204)})[_0x5eeb[17]](function(_0x62dcx8){return handleError(_0x62dcx7,_0x62dcx8)})} \ No newline at end of file diff --git a/server/api/openchannel_message/openchannel_message.events.js b/server/api/openchannel_message/openchannel_message.events.js index 5095912..7013796 100644 --- a/server/api/openchannel_message/openchannel_message.events.js +++ b/server/api/openchannel_message/openchannel_message.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const OpenchannelMessage = require('../../models').OpenchannelMessage; - -var OpenchannelMessageEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -OpenchannelMessageEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'update', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - OpenchannelMessage.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - OpenchannelMessageEvents.emit(event + ':' + doc._id, doc); - OpenchannelMessageEvents.emit(event, doc); - done(null); - } -} - -module.exports = OpenchannelMessageEvents; +var _0x2343=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x4D\x65\x73\x73\x61\x67\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x75\x70\x64\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x2343[0];const EventEmitter=require(_0x2343[1]);const OpenchannelMessage=require(_0x2343[3])[_0x2343[2]];var OpenchannelMessageEvents= new EventEmitter();OpenchannelMessageEvents[_0x2343[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x2343[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x2343[6],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x2343[7]};for(var e in events){var event=events[e];OpenchannelMessage[_0x2343[8]](e,emitEvent(event))};function emitEvent(event){return function(_0x5425x8,_0x5425x9,_0x5425xa){OpenchannelMessageEvents[_0x2343[11]](event+ _0x2343[9]+ _0x5425x8[_0x2343[10]],_0x5425x8);OpenchannelMessageEvents[_0x2343[11]](event,_0x5425x8);_0x5425xa(null)}}module[_0x2343[12]]= OpenchannelMessageEvents \ No newline at end of file diff --git a/server/api/openchannel_message/openchannel_message.socket.js b/server/api/openchannel_message/openchannel_message.socket.js index 0f942a5..2d9e294 100644 --- a/server/api/openchannel_message/openchannel_message.socket.js +++ b/server/api/openchannel_message/openchannel_message.socket.js @@ -1,47 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const OpenchannelMessageEvents = require('./openchannel_message.events'); - -// Model events to emit -var events = ['save', 'update', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('openchannel_message:' + event, socket); - - OpenchannelMessageEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - switch (event) { - case 'openchannel_message:save': - socket.emit(event, doc); - break; - case 'openchannel_message:update': - if (doc.changed('status')) { - socket.emit(event, doc); - } - break; - case 'openchannel_message:remove': - socket.emit(event, doc); - break; - - default: - - } - }; -} - -function removeListener(event, listener) { - return function() { - OpenchannelMessageEvents.removeListener(event, listener); - }; -} +var _0xe8d7=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x6D\x65\x73\x73\x61\x67\x65\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x75\x70\x64\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x6D\x65\x73\x73\x61\x67\x65\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x6D\x65\x73\x73\x61\x67\x65\x3A\x73\x61\x76\x65","\x73\x74\x61\x74\x75\x73","\x63\x68\x61\x6E\x67\x65\x64","\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x6D\x65\x73\x73\x61\x67\x65\x3A\x75\x70\x64\x61\x74\x65","\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x6D\x65\x73\x73\x61\x67\x65\x3A\x72\x65\x6D\x6F\x76\x65","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xe8d7[0];const OpenchannelMessageEvents=require(_0xe8d7[1]);var events=[_0xe8d7[2],_0xe8d7[3],_0xe8d7[4]];exports[_0xe8d7[5]]= function(_0xdac8x3){for(var _0xdac8x4=0,_0xdac8x5=events[_0xe8d7[6]];_0xdac8x4< _0xdac8x5;_0xdac8x4++){var _0xdac8x6=events[_0xdac8x4];var _0xdac8x7=createListener(_0xe8d7[7]+ _0xdac8x6,_0xdac8x3);OpenchannelMessageEvents[_0xe8d7[8]](_0xdac8x6,_0xdac8x7);_0xdac8x3[_0xe8d7[8]](_0xe8d7[9],removeListener(_0xdac8x6,_0xdac8x7))}};function createListener(_0xdac8x6,_0xdac8x3){return function(_0xdac8x9){switch(_0xdac8x6){case _0xe8d7[11]:_0xdac8x3[_0xe8d7[10]](_0xdac8x6,_0xdac8x9);break;case _0xe8d7[14]:if(_0xdac8x9[_0xe8d7[13]](_0xe8d7[12])){_0xdac8x3[_0xe8d7[10]](_0xdac8x6,_0xdac8x9)};break;case _0xe8d7[15]:_0xdac8x3[_0xe8d7[10]](_0xdac8x6,_0xdac8x9);break;default:}}}function removeListener(_0xdac8x6,_0xdac8x7){return function(){OpenchannelMessageEvents[_0xe8d7[16]](_0xdac8x6,_0xdac8x7)}} \ No newline at end of file diff --git a/server/api/openchannel_queue/index.js b/server/api/openchannel_queue/index.js index a85e598..d5f0665 100644 --- a/server/api/openchannel_queue/index.js +++ b/server/api/openchannel_queue/index.js @@ -1,22 +1 @@ -'use strict'; - -var express = require('express'); -var auth = require('../../auth/auth.service'); -var controller = require('./openchannel_queue.controller'); -var license = require('../../config/license/license.service'); - -var router = express.Router(); - -// router.get('/', auth.isAuthenticated(), license.hasSms(), auth.hasModule([11], ['admin']), controller.index); -router.get('/', license.isValidDate(), auth.isAuthenticated(), license.hasOpenchannel(), auth.hasModule([20], ['admin']), controller.index); -router.get('/:id', license.isValidDate(), auth.isAuthenticated(), license.hasOpenchannel(), auth.hasModule([20], ['admin']), controller.show); -router.get('/:id/agents', license.isValidDate(), auth.isAuthenticated(), license.hasOpenchannel(), auth.hasModule([20], ['admin']), controller.showAgents); -router.post('/', license.isValidDate(), auth.isAuthenticated(), license.hasOpenchannel(), auth.hasRole('admin'), controller.create); -router.post('/:id/agents', license.isValidDate(), auth.isAuthenticated(), license.hasOpenchannel(), auth.hasRole('admin'), controller.addAgents); -router.put('/:id', license.isValidDate(), auth.isAuthenticated(), license.hasOpenchannel(), auth.hasRole('admin'), controller.update); -router.patch('/:id', license.isValidDate(), auth.isAuthenticated(), license.hasOpenchannel(), auth.hasRole('admin'), controller.update); -router.delete('/:id', license.isValidDate(), auth.isAuthenticated(), license.hasOpenchannel(), auth.hasRole('admin'), controller.destroy); -router.delete('/:id/agents', license.isValidDate(), auth.isAuthenticated(), license.hasOpenchannel(), auth.hasRole('admin'), controller.removeAgents); -router.delete('/', license.isValidDate(), auth.isAuthenticated(), license.hasOpenchannel(), auth.hasRole('admin'), controller.bulkDestroy); - -module.exports = router; +var _0x3faa=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x71\x75\x65\x75\x65\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x68\x61\x73\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x2F\x3A\x69\x64\x2F\x61\x67\x65\x6E\x74\x73","\x73\x68\x6F\x77\x41\x67\x65\x6E\x74\x73","\x68\x61\x73\x52\x6F\x6C\x65","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x61\x64\x64\x41\x67\x65\x6E\x74\x73","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x70\x61\x74\x63\x68","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x72\x65\x6D\x6F\x76\x65\x41\x67\x65\x6E\x74\x73","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0x3faa[0];var express=require(_0x3faa[1]);var auth=require(_0x3faa[2]);var controller=require(_0x3faa[3]);var license=require(_0x3faa[4]);var router=express.Router();router[_0x3faa[12]](_0x3faa[5],license[_0x3faa[6]](),auth[_0x3faa[7]](),license[_0x3faa[8]](),auth[_0x3faa[10]]([20],[_0x3faa[9]]),controller[_0x3faa[11]]);router[_0x3faa[12]](_0x3faa[13],license[_0x3faa[6]](),auth[_0x3faa[7]](),license[_0x3faa[8]](),auth[_0x3faa[10]]([20],[_0x3faa[9]]),controller[_0x3faa[14]]);router[_0x3faa[12]](_0x3faa[15],license[_0x3faa[6]](),auth[_0x3faa[7]](),license[_0x3faa[8]](),auth[_0x3faa[10]]([20],[_0x3faa[9]]),controller[_0x3faa[16]]);router[_0x3faa[19]](_0x3faa[5],license[_0x3faa[6]](),auth[_0x3faa[7]](),license[_0x3faa[8]](),auth[_0x3faa[17]](_0x3faa[9]),controller[_0x3faa[18]]);router[_0x3faa[19]](_0x3faa[15],license[_0x3faa[6]](),auth[_0x3faa[7]](),license[_0x3faa[8]](),auth[_0x3faa[17]](_0x3faa[9]),controller[_0x3faa[20]]);router[_0x3faa[22]](_0x3faa[13],license[_0x3faa[6]](),auth[_0x3faa[7]](),license[_0x3faa[8]](),auth[_0x3faa[17]](_0x3faa[9]),controller[_0x3faa[21]]);router[_0x3faa[23]](_0x3faa[13],license[_0x3faa[6]](),auth[_0x3faa[7]](),license[_0x3faa[8]](),auth[_0x3faa[17]](_0x3faa[9]),controller[_0x3faa[21]]);router[_0x3faa[25]](_0x3faa[13],license[_0x3faa[6]](),auth[_0x3faa[7]](),license[_0x3faa[8]](),auth[_0x3faa[17]](_0x3faa[9]),controller[_0x3faa[24]]);router[_0x3faa[25]](_0x3faa[15],license[_0x3faa[6]](),auth[_0x3faa[7]](),license[_0x3faa[8]](),auth[_0x3faa[17]](_0x3faa[9]),controller[_0x3faa[26]]);router[_0x3faa[25]](_0x3faa[5],license[_0x3faa[6]](),auth[_0x3faa[7]](),license[_0x3faa[8]](),auth[_0x3faa[17]](_0x3faa[9]),controller[_0x3faa[27]]);module[_0x3faa[28]]= router \ No newline at end of file diff --git a/server/api/openchannel_queue/openchannel_queue.controller.js b/server/api/openchannel_queue/openchannel_queue.controller.js index dde6c2b..20154f6 100644 --- a/server/api/openchannel_queue/openchannel_queue.controller.js +++ b/server/api/openchannel_queue/openchannel_queue.controller.js @@ -1,246 +1 @@ -/** - * Using Rails-like standard naming convention for endpoints. - * GET /api/openchannel/queues -> index - * POST /api/openchannel/queues -> create - * GET /api/openchannel/queues/:id -> show - * PUT /api/openchannel/queues/:id -> update - * DELETE /api/openchannel/queues/:id -> destroy - */ - -'use strict'; - - -var _ = require('lodash'); -var Util = require('../../config/util'); - -var OpenchannelQueue = require('../../models').OpenchannelQueue; -var User = require('../../models').User; -var sequelize = require('../../models').sequelize; -var UserHasOpenchannelQueue = require('../../models').UserHasOpenchannelQueue; - -function handleError(res, err) { - return res.status(500).send(err); -} - - -// Gets a list of openchannelQueues -exports.index = function(req, res) { - - switch (req.user.role) { - case 'user': - return User - .findById(req.user.id, { - attributes: ['id'] - }) - .then(Util.getOpenchannelQueuesIdByUser(req.query)) - .then(function(result) { - res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); - - default: - return OpenchannelQueue - .scope('default') - .findAndCountAll(_.merge(Util.getQuery(req.query), { - distinct: true - })) - .then(function(result) { - res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); - } - - - -} - -// Gets a single OpenchannelQueue from the DB -exports.show = function(req, res) { - return OpenchannelQueue - .scope('default') - .findById(req.params.id) - .then(function(Queue) { - if (!Queue) { - return res.sendStatus(404); - } - return res.send(Queue); - }) - .catch(function(err) { - return handleError(res, err); - }); -} - -exports.showAgents = function(req, res) { - return OpenchannelQueue - .findById(req.params.id) - .then(function(queue) { - if (!queue) { - return res.sendStatus(404); - } - return queue - .getUsers({ - where: { - role: 'agent' - }, - attributes: ['id', 'name', 'fullname', 'email'] - }); - }) - .then(function(agents) { - // console.log(agents); - return res.status(200).send({ - rows: agents, - count: agents.length - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; -// Creates a new OpenchannelQueue in the DB -exports.create = function(req, res) { - var _openchannelQueue; - - return OpenchannelQueue - .create(req.body) - .then(function(openchannelQueue) { - _openchannelQueue = openchannelQueue; - - if (req.body.agents) { - return _openchannelQueue - .addUsers(req.body.agents, { - penalty: req.body.penalty || 0, - queue: _openchannelQueue.name - }); - } - }) - .then(function() { - return res.status(201).send(_openchannelQueue); - }) - .catch(sequelize.UniqueConstraintError, function(err) { - return Util.errorManager.handleUniqueConstraintError(res, err); - }) - .catch(function(err) { - return handleError(res, err); - }); -} - -// Updates an existing OpenchannelQueue in the DB -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - return OpenchannelQueue - .findById(req.params.id) - .then(function(Queue) { - if (!Queue) { - return res.sendStatus(404); - } - var updated = _.merge(Queue, req.body); - return updated - .save(); - }) - .then(function(Queue) { - return res.status(200).send(Queue); - }) - .catch(sequelize.UniqueConstraintError, function(err) { - return Util.errorManager.handleUniqueConstraintError(res, err); - }) - .catch(function(err) { - return handleError(res, err); - }); - } - // Updates an existing OpenchannelQueue in the DB. -exports.addAgents = function(req, res, next) { - return OpenchannelQueue - .findById(req.params.id) - .then(function(Queue) { - if (!Queue) { - return res.sendStatus(404); - } - var userHasOpenchannelQueues = _.map(req.body.agents, function(agent) { - return { - UserId: agent, - penalty: req.body.penalty, - OpenchannelQueueId: Queue.id, - queue: Queue.name - }; - }); - - return UserHasOpenchannelQueue - .bulkCreate(userHasOpenchannelQueues, { - individualHooks: true - }); - }) - .then(function() { - return res.sendStatus(200); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.removeAgents = function(req, res) { - return OpenchannelQueue - .findById(req.params.id) - .then(function(Queue) { - if (Queue) { - return Queue - .removeUsers(req.query.agents, { - individualHooks: true - }); - } else { - throw new Error('Openchannel Queue not found'); - } - }) - .then(function() { - return res.sendStatus(202); - }) - .catch(function(err) { - return handleError(res, err); - }); - -}; - -// Deletes a OpenchannelQueue from the DB -exports.destroy = function(req, res) { - var _OpenchannelQueue; - return OpenchannelQueue - .findById(req.params.id) - .then(function(Queue) { - _OpenchannelQueue = Queue; - if (!Queue) { - return res.sendStatus(404); - } - return Queue - .destroy(); - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(sequelize.ForeignKeyConstraintError, function(err) { - return Util.errorManager.handleForeignKeyConstraintError(res, 'queue', _OpenchannelQueue.name, err); - }) - .catch(function(err) { - console.error('err', err); - return handleError(res, err); - }); -} -exports.bulkDestroy = function(req, res) { - return OpenchannelQueue - .destroy({ - where: { - id: req.query.ids - }, - individualHooks: true - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; +var _0xfe96=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x55\x73\x65\x72","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x55\x73\x65\x72\x48\x61\x73\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x69\x64","\x75\x73\x65\x72","\x66\x69\x6E\x64\x42\x79\x49\x64","\x67\x65\x74\x51\x75\x65\x72\x79","\x6D\x65\x72\x67\x65","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x64\x65\x66\x61\x75\x6C\x74","\x73\x63\x6F\x70\x65","\x72\x6F\x6C\x65","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x70\x61\x72\x61\x6D\x73","\x73\x68\x6F\x77\x41\x67\x65\x6E\x74\x73","\x6C\x65\x6E\x67\x74\x68","\x61\x67\x65\x6E\x74","\x6E\x61\x6D\x65","\x66\x75\x6C\x6C\x6E\x61\x6D\x65","\x65\x6D\x61\x69\x6C","\x67\x65\x74\x55\x73\x65\x72\x73","\x63\x72\x65\x61\x74\x65","\x68\x61\x6E\x64\x6C\x65\x55\x6E\x69\x71\x75\x65\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74\x45\x72\x72\x6F\x72","\x65\x72\x72\x6F\x72\x4D\x61\x6E\x61\x67\x65\x72","\x61\x67\x65\x6E\x74\x73","\x62\x6F\x64\x79","\x70\x65\x6E\x61\x6C\x74\x79","\x61\x64\x64\x55\x73\x65\x72\x73","\x75\x70\x64\x61\x74\x65","\x73\x61\x76\x65","\x61\x64\x64\x41\x67\x65\x6E\x74\x73","\x6D\x61\x70","\x62\x75\x6C\x6B\x43\x72\x65\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65\x41\x67\x65\x6E\x74\x73","\x72\x65\x6D\x6F\x76\x65\x55\x73\x65\x72\x73","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x20\x51\x75\x65\x75\x65\x20\x6E\x6F\x74\x20\x66\x6F\x75\x6E\x64","\x64\x65\x73\x74\x72\x6F\x79","\x65\x72\x72","\x65\x72\x72\x6F\x72","\x71\x75\x65\x75\x65","\x68\x61\x6E\x64\x6C\x65\x46\x6F\x72\x65\x69\x67\x6E\x4B\x65\x79\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74\x45\x72\x72\x6F\x72","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73"];_0xfe96[0];var _=require(_0xfe96[1]);var Util=require(_0xfe96[2]);var OpenchannelQueue=require(_0xfe96[4])[_0xfe96[3]];var User=require(_0xfe96[4])[_0xfe96[5]];var sequelize=require(_0xfe96[4])[_0xfe96[6]];var UserHasOpenchannelQueue=require(_0xfe96[4])[_0xfe96[7]];function handleError(_0x439ex8,_0x439ex9){return _0x439ex8[_0xfe96[9]](500)[_0xfe96[8]](_0x439ex9)}exports[_0xfe96[10]]= function(_0x439exa,_0x439ex8){switch(_0x439exa[_0xfe96[16]][_0xfe96[23]]){case _0xfe96[16]:return User[_0xfe96[17]](_0x439exa[_0xfe96[16]][_0xfe96[15]],{attributes:[_0xfe96[15]]})[_0xfe96[12]](Util[_0xfe96[14]](_0x439exa[_0xfe96[13]]))[_0xfe96[12]](function(_0x439exb){_0x439ex8[_0xfe96[9]](200)[_0xfe96[8]](_0x439exb)})[_0xfe96[11]](function(_0x439ex9){return handleError(_0x439ex8,_0x439ex9)});default:return OpenchannelQueue[_0xfe96[22]](_0xfe96[21])[_0xfe96[20]](_[_0xfe96[19]](Util[_0xfe96[18]](_0x439exa[_0xfe96[13]]),{distinct:true}))[_0xfe96[12]](function(_0x439exb){_0x439ex8[_0xfe96[9]](200)[_0xfe96[8]](_0x439exb)})[_0xfe96[11]](function(_0x439ex9){return handleError(_0x439ex8,_0x439ex9)})}};exports[_0xfe96[24]]= function(_0x439exa,_0x439ex8){return OpenchannelQueue[_0xfe96[22]](_0xfe96[21])[_0xfe96[17]](_0x439exa[_0xfe96[26]][_0xfe96[15]])[_0xfe96[12]](function(_0x439exc){if(!_0x439exc){return _0x439ex8[_0xfe96[25]](404)};return _0x439ex8[_0xfe96[8]](_0x439exc)})[_0xfe96[11]](function(_0x439ex9){return handleError(_0x439ex8,_0x439ex9)})};exports[_0xfe96[27]]= function(_0x439exa,_0x439ex8){return OpenchannelQueue[_0xfe96[17]](_0x439exa[_0xfe96[26]][_0xfe96[15]])[_0xfe96[12]](function(_0x439exe){if(!_0x439exe){return _0x439ex8[_0xfe96[25]](404)};return _0x439exe[_0xfe96[33]]({where:{role:_0xfe96[29]},attributes:[_0xfe96[15],_0xfe96[30],_0xfe96[31],_0xfe96[32]]})})[_0xfe96[12]](function(_0x439exd){return _0x439ex8[_0xfe96[9]](200)[_0xfe96[8]]({rows:_0x439exd,count:_0x439exd[_0xfe96[28]]})})[_0xfe96[11]](function(_0x439ex9){return handleError(_0x439ex8,_0x439ex9)})};exports[_0xfe96[34]]= function(_0x439exa,_0x439ex8){var _0x439exf;return OpenchannelQueue[_0xfe96[34]](_0x439exa[_0xfe96[38]])[_0xfe96[12]](function(_0x439ex10){_0x439exf= _0x439ex10;if(_0x439exa[_0xfe96[38]][_0xfe96[37]]){return _0x439exf[_0xfe96[40]](_0x439exa[_0xfe96[38]][_0xfe96[37]],{penalty:_0x439exa[_0xfe96[38]][_0xfe96[39]]|| 0,queue:_0x439exf[_0xfe96[30]]})}})[_0xfe96[12]](function(){return _0x439ex8[_0xfe96[9]](201)[_0xfe96[8]](_0x439exf)})[_0xfe96[11]](sequelize.UniqueConstraintError,function(_0x439ex9){return Util[_0xfe96[36]][_0xfe96[35]](_0x439ex8,_0x439ex9)})[_0xfe96[11]](function(_0x439ex9){return handleError(_0x439ex8,_0x439ex9)})};exports[_0xfe96[41]]= function(_0x439exa,_0x439ex8){if(_0x439exa[_0xfe96[38]][_0xfe96[15]]){delete _0x439exa[_0xfe96[38]][_0xfe96[15]]};return OpenchannelQueue[_0xfe96[17]](_0x439exa[_0xfe96[26]][_0xfe96[15]])[_0xfe96[12]](function(_0x439exc){if(!_0x439exc){return _0x439ex8[_0xfe96[25]](404)};var _0x439ex11=_[_0xfe96[19]](_0x439exc,_0x439exa[_0xfe96[38]]);return _0x439ex11[_0xfe96[42]]()})[_0xfe96[12]](function(_0x439exc){return _0x439ex8[_0xfe96[9]](200)[_0xfe96[8]](_0x439exc)})[_0xfe96[11]](sequelize.UniqueConstraintError,function(_0x439ex9){return Util[_0xfe96[36]][_0xfe96[35]](_0x439ex8,_0x439ex9)})[_0xfe96[11]](function(_0x439ex9){return handleError(_0x439ex8,_0x439ex9)})};exports[_0xfe96[43]]= function(_0x439exa,_0x439ex8,_0x439ex12){return OpenchannelQueue[_0xfe96[17]](_0x439exa[_0xfe96[26]][_0xfe96[15]])[_0xfe96[12]](function(_0x439exc){if(!_0x439exc){return _0x439ex8[_0xfe96[25]](404)};var _0x439ex13=_[_0xfe96[44]](_0x439exa[_0xfe96[38]][_0xfe96[37]],function(_0x439ex14){return {UserId:_0x439ex14,penalty:_0x439exa[_0xfe96[38]][_0xfe96[39]],OpenchannelQueueId:_0x439exc[_0xfe96[15]],queue:_0x439exc[_0xfe96[30]]}});return UserHasOpenchannelQueue[_0xfe96[45]](_0x439ex13,{individualHooks:true})})[_0xfe96[12]](function(){return _0x439ex8[_0xfe96[25]](200)})[_0xfe96[11]](function(_0x439ex9){return handleError(_0x439ex8,_0x439ex9)})};exports[_0xfe96[46]]= function(_0x439exa,_0x439ex8){return OpenchannelQueue[_0xfe96[17]](_0x439exa[_0xfe96[26]][_0xfe96[15]])[_0xfe96[12]](function(_0x439exc){if(_0x439exc){return _0x439exc[_0xfe96[47]](_0x439exa[_0xfe96[13]][_0xfe96[37]],{individualHooks:true})}else {throw new Error(_0xfe96[48])}})[_0xfe96[12]](function(){return _0x439ex8[_0xfe96[25]](202)})[_0xfe96[11]](function(_0x439ex9){return handleError(_0x439ex8,_0x439ex9)})};exports[_0xfe96[49]]= function(_0x439exa,_0x439ex8){var _0x439ex15;return OpenchannelQueue[_0xfe96[17]](_0x439exa[_0xfe96[26]][_0xfe96[15]])[_0xfe96[12]](function(_0x439exc){_0x439ex15= _0x439exc;if(!_0x439exc){return _0x439ex8[_0xfe96[25]](404)};return _0x439exc[_0xfe96[49]]()})[_0xfe96[12]](function(){return _0x439ex8[_0xfe96[25]](204)})[_0xfe96[11]](sequelize.ForeignKeyConstraintError,function(_0x439ex9){return Util[_0xfe96[36]][_0xfe96[53]](_0x439ex8,_0xfe96[52],_0x439ex15[_0xfe96[30]],_0x439ex9)})[_0xfe96[11]](function(_0x439ex9){console[_0xfe96[51]](_0xfe96[50],_0x439ex9);return handleError(_0x439ex8,_0x439ex9)})};exports[_0xfe96[54]]= function(_0x439exa,_0x439ex8){return OpenchannelQueue[_0xfe96[49]]({where:{id:_0x439exa[_0xfe96[13]][_0xfe96[55]]},individualHooks:true})[_0xfe96[12]](function(){return _0x439ex8[_0xfe96[25]](204)})[_0xfe96[11]](function(_0x439ex9){return handleError(_0x439ex8,_0x439ex9)})} \ No newline at end of file diff --git a/server/api/openchannel_queue/openchannel_queue.events.js b/server/api/openchannel_queue/openchannel_queue.events.js index a1ca116..51ba3f4 100644 --- a/server/api/openchannel_queue/openchannel_queue.events.js +++ b/server/api/openchannel_queue/openchannel_queue.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const OpenchannelQueue = require('../../models').OpenchannelQueue; - -var OpenchannelQueueEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -OpenchannelQueueEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - OpenchannelQueue.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - OpenchannelQueueEvents.emit(event + ':' + doc._id, doc); - OpenchannelQueueEvents.emit(event, doc); - done(null); - } -} - -module.exports = OpenchannelQueueEvents; +var _0xc883=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xc883[0];const EventEmitter=require(_0xc883[1]);const OpenchannelQueue=require(_0xc883[3])[_0xc883[2]];var OpenchannelQueueEvents= new EventEmitter();OpenchannelQueueEvents[_0xc883[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xc883[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xc883[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xc883[6]};for(var e in events){var event=events[e];OpenchannelQueue[_0xc883[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x3830x8,_0x3830x9,_0x3830xa){OpenchannelQueueEvents[_0xc883[10]](event+ _0xc883[8]+ _0x3830x8[_0xc883[9]],_0x3830x8);OpenchannelQueueEvents[_0xc883[10]](event,_0x3830x8);_0x3830xa(null)}}module[_0xc883[11]]= OpenchannelQueueEvents \ No newline at end of file diff --git a/server/api/openchannel_queue/openchannel_queue.socket.js b/server/api/openchannel_queue/openchannel_queue.socket.js index 2ef4161..04e6e34 100644 --- a/server/api/openchannel_queue/openchannel_queue.socket.js +++ b/server/api/openchannel_queue/openchannel_queue.socket.js @@ -1,32 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const OpenchannelQueueEvents = require('./openchannel_queue.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('openchannel_queue:' + event, socket); - - OpenchannelQueueEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - OpenchannelQueueEvents.removeListener(event, listener); - }; -} +var _0x7c46=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x71\x75\x65\x75\x65\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x71\x75\x65\x75\x65\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x7c46[0];const OpenchannelQueueEvents=require(_0x7c46[1]);var events=[_0x7c46[2],_0x7c46[3]];exports[_0x7c46[4]]= function(_0x571ex3){for(var _0x571ex4=0,_0x571ex5=events[_0x7c46[5]];_0x571ex4< _0x571ex5;_0x571ex4++){var _0x571ex6=events[_0x571ex4];var _0x571ex7=createListener(_0x7c46[6]+ _0x571ex6,_0x571ex3);OpenchannelQueueEvents[_0x7c46[7]](_0x571ex6,_0x571ex7);_0x571ex3[_0x7c46[7]](_0x7c46[8],removeListener(_0x571ex6,_0x571ex7))}};function createListener(_0x571ex6,_0x571ex3){return function(_0x571ex9){_0x571ex3[_0x7c46[9]](_0x571ex6,_0x571ex9)}}function removeListener(_0x571ex6,_0x571ex7){return function(){OpenchannelQueueEvents[_0x7c46[10]](_0x571ex6,_0x571ex7)}} \ No newline at end of file diff --git a/server/api/openchannel_room/index.js b/server/api/openchannel_room/index.js index 3466839..ef100f3 100644 --- a/server/api/openchannel_room/index.js +++ b/server/api/openchannel_room/index.js @@ -1,25 +1 @@ -'use strict'; - -var express = require('express'); -var auth = require('../../auth/auth.service'); -var controller = require('./openchannel_room.controller'); -var license = require('../../config/license/license.service'); - -var router = express.Router(); -router.get('/', license.isValidDate(), license.hasOpenchannel(), auth.isAuthenticated(), auth.hasModule([20], ['admin', 'agent']), controller.index); -router.get('/pending', auth.isAuthenticated(), license.isValidDate(), license.hasSms(), auth.hasModule([20, 17], ['admin']), controller.pending); -router.get('/new', auth.isAuthenticated(), license.isValidDate(), license.hasSms(), auth.hasModule([20, 17], ['admin']), controller.new); -router.get('/open', auth.isAuthenticated(), license.isValidDate(), license.hasSms(), auth.hasModule([20, 17], ['admin']), controller.open); -router.get('/closed', auth.isAuthenticated(), license.isValidDate(), license.hasSms(), auth.hasModule([20, 17], ['admin']), controller.closed); -router.get('/:id', license.isValidDate(), license.hasOpenchannel(), auth.isAuthenticated(), auth.hasModule([20], ['admin', 'agent']), controller.show); -router.get('/describe', license.isValidDate(), license.hasOpenchannel(), auth.isAuthenticated(), auth.hasModule([20], ['admin']), controller.describe); -router.get('/:id/agents', license.isValidDate(), license.hasOpenchannel(), auth.isAuthenticated(), auth.hasModule([20], ['admin', 'agent']), controller.showAgents); -router.get('/messages/:id', license.isValidDate(), license.hasOpenchannel(), auth.isAuthenticated(), auth.hasModule([20], ['admin', 'agent']), controller.getRoomByMessage); -router.post('/', license.isValidDate(), license.hasOpenchannel(), auth.isAuthenticated(), auth.hasModule([20], ['admin']), controller.create); -router.post('/:id/messages', license.isValidDate(), license.hasOpenchannel(), auth.isAuthenticated(), auth.hasModule([20], ['admin']), controller.createMessage); -router.put('/:id', license.isValidDate(), license.hasOpenchannel(), auth.isAuthenticated(), auth.hasModule([20], ['admin', 'agent']), controller.update); -router.put('/:id/agents', license.isValidDate(), license.hasOpenchannel(), auth.isAuthenticated(), auth.hasModule([20], ['admin', 'agent']), controller.updateAgents); -router.patch('/:id', license.isValidDate(), license.hasOpenchannel(), auth.isAuthenticated(), auth.hasModule([20], ['admin', 'agent']), controller.updatePatch); -router.delete('/:id', license.isValidDate(), license.hasOpenchannel(), auth.isAuthenticated(), auth.hasModule([20], ['admin']), controller.destroy); -router.delete('/', license.isValidDate(), license.hasOpenchannel(), auth.isAuthenticated(), auth.hasModule([20], ['admin']), controller.bulkDestroy); -module.exports = router; +var _0xa5cd=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x72\x6F\x6F\x6D\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x68\x61\x73\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x70\x65\x6E\x64\x69\x6E\x67","\x68\x61\x73\x53\x6D\x73","\x70\x65\x6E\x64\x69\x6E\x67","\x2F\x6E\x65\x77","\x6E\x65\x77","\x2F\x6F\x70\x65\x6E","\x6F\x70\x65\x6E","\x2F\x63\x6C\x6F\x73\x65\x64","\x63\x6C\x6F\x73\x65\x64","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x2F\x64\x65\x73\x63\x72\x69\x62\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x2F\x3A\x69\x64\x2F\x61\x67\x65\x6E\x74\x73","\x73\x68\x6F\x77\x41\x67\x65\x6E\x74\x73","\x2F\x6D\x65\x73\x73\x61\x67\x65\x73\x2F\x3A\x69\x64","\x67\x65\x74\x52\x6F\x6F\x6D\x42\x79\x4D\x65\x73\x73\x61\x67\x65","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x2F\x3A\x69\x64\x2F\x6D\x65\x73\x73\x61\x67\x65\x73","\x63\x72\x65\x61\x74\x65\x4D\x65\x73\x73\x61\x67\x65","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x75\x70\x64\x61\x74\x65\x41\x67\x65\x6E\x74\x73","\x75\x70\x64\x61\x74\x65\x50\x61\x74\x63\x68","\x70\x61\x74\x63\x68","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0xa5cd[0];var express=require(_0xa5cd[1]);var auth=require(_0xa5cd[2]);var controller=require(_0xa5cd[3]);var license=require(_0xa5cd[4]);var router=express.Router();router[_0xa5cd[13]](_0xa5cd[5],license[_0xa5cd[6]](),license[_0xa5cd[7]](),auth[_0xa5cd[8]](),auth[_0xa5cd[11]]([20],[_0xa5cd[9],_0xa5cd[10]]),controller[_0xa5cd[12]]);router[_0xa5cd[13]](_0xa5cd[14],auth[_0xa5cd[8]](),license[_0xa5cd[6]](),license[_0xa5cd[15]](),auth[_0xa5cd[11]]([20,17],[_0xa5cd[9]]),controller[_0xa5cd[16]]);router[_0xa5cd[13]](_0xa5cd[17],auth[_0xa5cd[8]](),license[_0xa5cd[6]](),license[_0xa5cd[15]](),auth[_0xa5cd[11]]([20,17],[_0xa5cd[9]]),controller[_0xa5cd[18]]);router[_0xa5cd[13]](_0xa5cd[19],auth[_0xa5cd[8]](),license[_0xa5cd[6]](),license[_0xa5cd[15]](),auth[_0xa5cd[11]]([20,17],[_0xa5cd[9]]),controller[_0xa5cd[20]]);router[_0xa5cd[13]](_0xa5cd[21],auth[_0xa5cd[8]](),license[_0xa5cd[6]](),license[_0xa5cd[15]](),auth[_0xa5cd[11]]([20,17],[_0xa5cd[9]]),controller[_0xa5cd[22]]);router[_0xa5cd[13]](_0xa5cd[23],license[_0xa5cd[6]](),license[_0xa5cd[7]](),auth[_0xa5cd[8]](),auth[_0xa5cd[11]]([20],[_0xa5cd[9],_0xa5cd[10]]),controller[_0xa5cd[24]]);router[_0xa5cd[13]](_0xa5cd[25],license[_0xa5cd[6]](),license[_0xa5cd[7]](),auth[_0xa5cd[8]](),auth[_0xa5cd[11]]([20],[_0xa5cd[9]]),controller[_0xa5cd[26]]);router[_0xa5cd[13]](_0xa5cd[27],license[_0xa5cd[6]](),license[_0xa5cd[7]](),auth[_0xa5cd[8]](),auth[_0xa5cd[11]]([20],[_0xa5cd[9],_0xa5cd[10]]),controller[_0xa5cd[28]]);router[_0xa5cd[13]](_0xa5cd[29],license[_0xa5cd[6]](),license[_0xa5cd[7]](),auth[_0xa5cd[8]](),auth[_0xa5cd[11]]([20],[_0xa5cd[9],_0xa5cd[10]]),controller[_0xa5cd[30]]);router[_0xa5cd[32]](_0xa5cd[5],license[_0xa5cd[6]](),license[_0xa5cd[7]](),auth[_0xa5cd[8]](),auth[_0xa5cd[11]]([20],[_0xa5cd[9]]),controller[_0xa5cd[31]]);router[_0xa5cd[32]](_0xa5cd[33],license[_0xa5cd[6]](),license[_0xa5cd[7]](),auth[_0xa5cd[8]](),auth[_0xa5cd[11]]([20],[_0xa5cd[9]]),controller[_0xa5cd[34]]);router[_0xa5cd[36]](_0xa5cd[23],license[_0xa5cd[6]](),license[_0xa5cd[7]](),auth[_0xa5cd[8]](),auth[_0xa5cd[11]]([20],[_0xa5cd[9],_0xa5cd[10]]),controller[_0xa5cd[35]]);router[_0xa5cd[36]](_0xa5cd[27],license[_0xa5cd[6]](),license[_0xa5cd[7]](),auth[_0xa5cd[8]](),auth[_0xa5cd[11]]([20],[_0xa5cd[9],_0xa5cd[10]]),controller[_0xa5cd[37]]);router[_0xa5cd[39]](_0xa5cd[23],license[_0xa5cd[6]](),license[_0xa5cd[7]](),auth[_0xa5cd[8]](),auth[_0xa5cd[11]]([20],[_0xa5cd[9],_0xa5cd[10]]),controller[_0xa5cd[38]]);router[_0xa5cd[41]](_0xa5cd[23],license[_0xa5cd[6]](),license[_0xa5cd[7]](),auth[_0xa5cd[8]](),auth[_0xa5cd[11]]([20],[_0xa5cd[9]]),controller[_0xa5cd[40]]);router[_0xa5cd[41]](_0xa5cd[5],license[_0xa5cd[6]](),license[_0xa5cd[7]](),auth[_0xa5cd[8]](),auth[_0xa5cd[11]]([20],[_0xa5cd[9]]),controller[_0xa5cd[42]]);module[_0xa5cd[43]]= router \ No newline at end of file diff --git a/server/api/openchannel_room/openchannel_room.controller.js b/server/api/openchannel_room/openchannel_room.controller.js index 05ee965..4f3d689 100644 --- a/server/api/openchannel_room/openchannel_room.controller.js +++ b/server/api/openchannel_room/openchannel_room.controller.js @@ -1,399 +1 @@ -/** - * Using Rails-like standard naming convention for endpoints. - * GET /api/openchannel/rooms -> index - * POST /api/openchannel/rooms -> create - * GET /api/openchannel/rooms/:id -> show - * PUT /api/openchannel/rooms/:id -> update - * DELETE /api/openchannel/rooms/:id -> destroy - */ - -'use strict'; - - -var _ = require('lodash'); -var Util = require('../../config/util'); -var moment = require('moment'); - -var OpenchannelRoom = require('../../models').OpenchannelRoom; -var OpenchannelMessage = require('../../models').OpenchannelMessage; -var OpenchannelAccount = require('../../models').OpenchannelAccount; -var OpenchannelQueue = require('../../models').OpenchannelQueue; -var OpenchannelApplication = require('../../models').OpenchannelApplication; -var User = require('../../models').User; - - -function handleError(res, err) { - return res.status(500).send(err); -} - - - -// Gets a list of OpenchannelRooms -exports.index = function(req, res) { - switch (req.user.role) { - case 'agent': - return OpenchannelRoom - .scope('default', { - method: ['agent', req.user.id] - }) - .findAndCountAll(Util.getQuery(req.query)) - .then(function(result) { - return res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); - - default: - return OpenchannelRoom - .scope('default') - .findAndCountAll(Util.getQuery(req.query)) - .then(function(result) { - return res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); - } - -} - -// Get list of fields -exports.describe = function(req, res) { - return OpenchannelRoom - .describe() - .then(function(fields) { - return res.status(200).send(fields); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function getOpenchannelQueues(user) { - return function() { - switch (user.role) { - case 'user': - return User - .findById(user.id, { - attributes: ['id'] - }) - .then(Util.getOpenchannelQueuesIdByUser({}, { - attributes: ['id'], - include: [{ - raw: true, - model: User, - attributes: ['id'] - }] - })) - .then(function(userQueues) { - return { - include: { - model: OpenchannelAccount, - include: { - model: OpenchannelApplication, - include: { - model: OpenchannelQueue, - where: { - id: _.map(userQueues, 'id') - } - } - } - } - }; - }); - default: - return {}; - } - } -} - -exports.pending = function(req, res) { - return Promise - .all([]) - .then(getOpenchannelQueues(req.user)) - .then(function(condition) { - return OpenchannelRoom - .count(_.merge(Util.getQuery(req.query, { - status: 'PENDING', - updatedAt: { - $gte: moment().startOf('day') - } - }), condition)); - }) - .then(function(data) { - return res.status(200).send({ - value: data - }); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -exports.new = function(req, res) { - return Promise - .all([]) - .then(getOpenchannelQueues(req.user)) - .then(function(condition) { - return OpenchannelRoom - .count(_.merge(Util.getQuery(req.query, { - status: 'NEW', - updatedAt: { - $gte: moment().startOf('day') - } - }), condition)); - }) - .then(function(data) { - return res.status(200).send({ - value: data - }); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -exports.open = function(req, res) { - return Promise - .all([]) - .then(getOpenchannelQueues(req.user)) - .then(function(condition) { - return OpenchannelRoom - .count(_.merge(Util.getQuery(req.query, { - status: 'OPEN', - updatedAt: { - $gte: moment().startOf('day') - } - }), condition)); - }) - .then(function(data) { - return res.status(200).send({ - value: data - }); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -exports.closed = function(req, res) { - return Promise - .all([]) - .then(getOpenchannelQueues(req.user)) - .then(function(condition) { - return OpenchannelRoom - .count(_.merge(Util.getQuery(req.query, { - status: 'CLOSED', - updatedAt: { - $gte: moment().startOf('day') - } - }), condition)); - }) - .then(function(data) { - return res.status(200).send({ - value: data - }); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - - - -// Gets a single OpenchannelRoom from the DB -exports.show = function(req, res) { - return OpenchannelRoom - .scope('default') - .findById(req.params.id) - .then(function(Room) { - if (!Room) { - return res.sendStatus(404); - } - return res.send(Room); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; -exports.showAgents = function(req, res, next) { - return OpenchannelRoom - .findById(req.params.id) - .then(function(Room) { - if (!Room) { - return res.sendStatus(404); - } - return Room - .getUsers({ - attributes: ['id', 'name', 'fullname', 'email', 'role', 'internal'] - }); - }) - .then(function(users) { - return res.send(users); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.getRoomByMessage = function(req, res, next) { - return OpenchannelMessage - .findById(req.params.id) - .then(function(Message) { - return Message - .getOpenchannelRoom({ - include: [{ - model: OpenchannelAccount - }, { - model: OpenchannelMessage, - include: [{ - model: User, - attributes: ['id', 'name', 'fullname', 'email'] - }] - }, { - model: User, - attributes: ['id', 'name', 'fullname', 'email'] - }] - }); - }) - .then(function(Room) { - return res.send(Room); - }) - .catch(function(err) { - console.log('err', err); - return handleError(res, err); - }); -}; -// Creates a new OpenchannelRoom in the DB -exports.create = function(req, res) { - - return OpenchannelRoom - .create(req.body) - .then(function(Message) { - return res.status(201).send(Message); - }) - .catch(function(err) { - return handleError(res, err); - }); -} - - -// Creates a new Message in the DB. -exports.createMessage = function(req, res, next) { - req.body.UserId = req.user.id; - req.body.OpenchannelRoomId = req.params.id; - return OpenchannelMessage - .create(req.body) - .then(function(Message) { - return res.status(201).send(Message); - }).catch(function(err) { - return handleError(res, err); - }); -}; -// Updates an existing OpenchannelRoom in the DB -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - return OpenchannelRoom - .findById(req.params.id) - .then(function(Room) { - if (!Room) { - return res.sendStatus(404); - } - - var updated = _.merge(Room, req.body); - - return updated - .save(); - }) - .then(function(Room) { - return res.status(200).send(Room); - }) - .catch(function(err) { - return handleError(res, err); - }); -} -exports.updateAgents = function(req, res, next) { - return OpenchannelRoom - .findById(req.params.id) - .then(function(Room) { - if (!Room) { - return res.sendStatus(404); - } - - return Room - .setUsers(req.body.agents, { - individualHooks: true - }); - }) - .then(function() { - return res.sendStatus(200); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes a OpenchannelRoom from the DB -exports.destroy = function(req, res) { - return OpenchannelRoom - .findById(req.params.id) - .then(function(Room) { - if (!Room) { - return res.sendStatus(404); - } - return Room.destroy(); - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -} - -exports.bulkDestroy = function(req, res) { - return OpenchannelRoom - .destroy({ - where: { - id: req.query.ids - }, - individualHooks: true - }) - .then(function() { - return res.sendStatus(200); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; -exports.updatePatch = function(req, res, next) { - - var _options = { - where: { - id: req.params.id.split(',') - }, - user: req.user, - individualHooks: true - }; - return OpenchannelRoom - .update(req.body, _options) - .then(function(Rooms) { - if (!Rooms) { - return res.sendStatus(404); - } - return Rooms - }) - .then(function(Rooms) { - return res.sendStatus(200); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; +var _0xf72b=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x6D\x6F\x6D\x65\x6E\x74","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x52\x6F\x6F\x6D","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x4D\x65\x73\x73\x61\x67\x65","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x41\x63\x63\x6F\x75\x6E\x74","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x55\x73\x65\x72","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x64\x65\x66\x61\x75\x6C\x74","\x61\x67\x65\x6E\x74","\x69\x64","\x75\x73\x65\x72","\x73\x63\x6F\x70\x65","\x72\x6F\x6C\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x6D\x61\x70","\x67\x65\x74\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x66\x69\x6E\x64\x42\x79\x49\x64","\x70\x65\x6E\x64\x69\x6E\x67","\x6C\x6F\x67","\x50\x45\x4E\x44\x49\x4E\x47","\x64\x61\x79","\x73\x74\x61\x72\x74\x4F\x66","\x6D\x65\x72\x67\x65","\x63\x6F\x75\x6E\x74","\x61\x6C\x6C","\x6E\x65\x77","\x4E\x45\x57","\x6F\x70\x65\x6E","\x4F\x50\x45\x4E","\x63\x6C\x6F\x73\x65\x64","\x43\x4C\x4F\x53\x45\x44","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x70\x61\x72\x61\x6D\x73","\x73\x68\x6F\x77\x41\x67\x65\x6E\x74\x73","\x6E\x61\x6D\x65","\x66\x75\x6C\x6C\x6E\x61\x6D\x65","\x65\x6D\x61\x69\x6C","\x69\x6E\x74\x65\x72\x6E\x61\x6C","\x67\x65\x74\x55\x73\x65\x72\x73","\x67\x65\x74\x52\x6F\x6F\x6D\x42\x79\x4D\x65\x73\x73\x61\x67\x65","\x65\x72\x72","\x67\x65\x74\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x52\x6F\x6F\x6D","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x63\x72\x65\x61\x74\x65\x4D\x65\x73\x73\x61\x67\x65","\x55\x73\x65\x72\x49\x64","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x52\x6F\x6F\x6D\x49\x64","\x75\x70\x64\x61\x74\x65","\x73\x61\x76\x65","\x75\x70\x64\x61\x74\x65\x41\x67\x65\x6E\x74\x73","\x61\x67\x65\x6E\x74\x73","\x73\x65\x74\x55\x73\x65\x72\x73","\x64\x65\x73\x74\x72\x6F\x79","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73","\x75\x70\x64\x61\x74\x65\x50\x61\x74\x63\x68","\x2C","\x73\x70\x6C\x69\x74"];_0xf72b[0];var _=require(_0xf72b[1]);var Util=require(_0xf72b[2]);var moment=require(_0xf72b[3]);var OpenchannelRoom=require(_0xf72b[5])[_0xf72b[4]];var OpenchannelMessage=require(_0xf72b[5])[_0xf72b[6]];var OpenchannelAccount=require(_0xf72b[5])[_0xf72b[7]];var OpenchannelQueue=require(_0xf72b[5])[_0xf72b[8]];var OpenchannelApplication=require(_0xf72b[5])[_0xf72b[9]];var User=require(_0xf72b[5])[_0xf72b[10]];function handleError(_0xb569xb,_0xb569xc){return _0xb569xb[_0xf72b[12]](500)[_0xf72b[11]](_0xb569xc)}exports[_0xf72b[13]]= function(_0xb569xd,_0xb569xb){switch(_0xb569xd[_0xf72b[22]][_0xf72b[24]]){case _0xf72b[20]:return OpenchannelRoom[_0xf72b[23]](_0xf72b[19],{method:[_0xf72b[20],_0xb569xd[_0xf72b[22]][_0xf72b[21]]]})[_0xf72b[18]](Util[_0xf72b[17]](_0xb569xd[_0xf72b[16]]))[_0xf72b[15]](function(_0xb569xe){return _0xb569xb[_0xf72b[12]](200)[_0xf72b[11]](_0xb569xe)})[_0xf72b[14]](function(_0xb569xc){return handleError(_0xb569xb,_0xb569xc)});default:return OpenchannelRoom[_0xf72b[23]](_0xf72b[19])[_0xf72b[18]](Util[_0xf72b[17]](_0xb569xd[_0xf72b[16]]))[_0xf72b[15]](function(_0xb569xe){return _0xb569xb[_0xf72b[12]](200)[_0xf72b[11]](_0xb569xe)})[_0xf72b[14]](function(_0xb569xc){return handleError(_0xb569xb,_0xb569xc)})}};exports[_0xf72b[25]]= function(_0xb569xd,_0xb569xb){return OpenchannelRoom[_0xf72b[25]]()[_0xf72b[15]](function(_0xb569xf){return _0xb569xb[_0xf72b[12]](200)[_0xf72b[11]](_0xb569xf)})[_0xf72b[14]](function(_0xb569xc){return handleError(_0xb569xb,_0xb569xc)})};function getOpenchannelQueues(_0xb569x11){return function(){switch(_0xb569x11[_0xf72b[24]]){case _0xf72b[22]:return User[_0xf72b[28]](_0xb569x11[_0xf72b[21]],{attributes:[_0xf72b[21]]})[_0xf72b[15]](Util[_0xf72b[27]]({},{attributes:[_0xf72b[21]],include:[{raw:true,model:User,attributes:[_0xf72b[21]]}]}))[_0xf72b[15]](function(_0xb569x12){return {include:{model:OpenchannelAccount,include:{model:OpenchannelApplication,include:{model:OpenchannelQueue,where:{id:_[_0xf72b[26]](_0xb569x12,_0xf72b[21])}}}}}});default:return {}}}}exports[_0xf72b[29]]= function(_0xb569xd,_0xb569xb){return Promise[_0xf72b[36]]([])[_0xf72b[15]](getOpenchannelQueues(_0xb569xd[_0xf72b[22]]))[_0xf72b[15]](function(_0xb569x14){return OpenchannelRoom[_0xf72b[35]](_[_0xf72b[34]](Util[_0xf72b[17]](_0xb569xd[_0xf72b[16]],{status:_0xf72b[31],updatedAt:{$gte:moment()[_0xf72b[33]](_0xf72b[32])}}),_0xb569x14))})[_0xf72b[15]](function(_0xb569x13){return _0xb569xb[_0xf72b[12]](200)[_0xf72b[11]]({value:_0xb569x13})})[_0xf72b[14]](function(_0xb569xc){console[_0xf72b[30]](_0xb569xc);return handleError(_0xb569xb,_0xb569xc)})};exports[_0xf72b[37]]= function(_0xb569xd,_0xb569xb){return Promise[_0xf72b[36]]([])[_0xf72b[15]](getOpenchannelQueues(_0xb569xd[_0xf72b[22]]))[_0xf72b[15]](function(_0xb569x14){return OpenchannelRoom[_0xf72b[35]](_[_0xf72b[34]](Util[_0xf72b[17]](_0xb569xd[_0xf72b[16]],{status:_0xf72b[38],updatedAt:{$gte:moment()[_0xf72b[33]](_0xf72b[32])}}),_0xb569x14))})[_0xf72b[15]](function(_0xb569x13){return _0xb569xb[_0xf72b[12]](200)[_0xf72b[11]]({value:_0xb569x13})})[_0xf72b[14]](function(_0xb569xc){console[_0xf72b[30]](_0xb569xc);return handleError(_0xb569xb,_0xb569xc)})};exports[_0xf72b[39]]= function(_0xb569xd,_0xb569xb){return Promise[_0xf72b[36]]([])[_0xf72b[15]](getOpenchannelQueues(_0xb569xd[_0xf72b[22]]))[_0xf72b[15]](function(_0xb569x14){return OpenchannelRoom[_0xf72b[35]](_[_0xf72b[34]](Util[_0xf72b[17]](_0xb569xd[_0xf72b[16]],{status:_0xf72b[40],updatedAt:{$gte:moment()[_0xf72b[33]](_0xf72b[32])}}),_0xb569x14))})[_0xf72b[15]](function(_0xb569x13){return _0xb569xb[_0xf72b[12]](200)[_0xf72b[11]]({value:_0xb569x13})})[_0xf72b[14]](function(_0xb569xc){console[_0xf72b[30]](_0xb569xc);return handleError(_0xb569xb,_0xb569xc)})};exports[_0xf72b[41]]= function(_0xb569xd,_0xb569xb){return Promise[_0xf72b[36]]([])[_0xf72b[15]](getOpenchannelQueues(_0xb569xd[_0xf72b[22]]))[_0xf72b[15]](function(_0xb569x14){return OpenchannelRoom[_0xf72b[35]](_[_0xf72b[34]](Util[_0xf72b[17]](_0xb569xd[_0xf72b[16]],{status:_0xf72b[42],updatedAt:{$gte:moment()[_0xf72b[33]](_0xf72b[32])}}),_0xb569x14))})[_0xf72b[15]](function(_0xb569x13){return _0xb569xb[_0xf72b[12]](200)[_0xf72b[11]]({value:_0xb569x13})})[_0xf72b[14]](function(_0xb569xc){console[_0xf72b[30]](_0xb569xc);return handleError(_0xb569xb,_0xb569xc)})};exports[_0xf72b[43]]= function(_0xb569xd,_0xb569xb){return OpenchannelRoom[_0xf72b[23]](_0xf72b[19])[_0xf72b[28]](_0xb569xd[_0xf72b[45]][_0xf72b[21]])[_0xf72b[15]](function(_0xb569x15){if(!_0xb569x15){return _0xb569xb[_0xf72b[44]](404)};return _0xb569xb[_0xf72b[11]](_0xb569x15)})[_0xf72b[14]](function(_0xb569xc){return handleError(_0xb569xb,_0xb569xc)})};exports[_0xf72b[46]]= function(_0xb569xd,_0xb569xb,_0xb569x16){return OpenchannelRoom[_0xf72b[28]](_0xb569xd[_0xf72b[45]][_0xf72b[21]])[_0xf72b[15]](function(_0xb569x15){if(!_0xb569x15){return _0xb569xb[_0xf72b[44]](404)};return _0xb569x15[_0xf72b[51]]({attributes:[_0xf72b[21],_0xf72b[47],_0xf72b[48],_0xf72b[49],_0xf72b[24],_0xf72b[50]]})})[_0xf72b[15]](function(_0xb569x17){return _0xb569xb[_0xf72b[11]](_0xb569x17)})[_0xf72b[14]](function(_0xb569xc){return handleError(_0xb569xb,_0xb569xc)})};exports[_0xf72b[52]]= function(_0xb569xd,_0xb569xb,_0xb569x16){return OpenchannelMessage[_0xf72b[28]](_0xb569xd[_0xf72b[45]][_0xf72b[21]])[_0xf72b[15]](function(_0xb569x18){return _0xb569x18[_0xf72b[54]]({include:[{model:OpenchannelAccount},{model:OpenchannelMessage,include:[{model:User,attributes:[_0xf72b[21],_0xf72b[47],_0xf72b[48],_0xf72b[49]]}]},{model:User,attributes:[_0xf72b[21],_0xf72b[47],_0xf72b[48],_0xf72b[49]]}]})})[_0xf72b[15]](function(_0xb569x15){return _0xb569xb[_0xf72b[11]](_0xb569x15)})[_0xf72b[14]](function(_0xb569xc){console[_0xf72b[30]](_0xf72b[53],_0xb569xc);return handleError(_0xb569xb,_0xb569xc)})};exports[_0xf72b[55]]= function(_0xb569xd,_0xb569xb){return OpenchannelRoom[_0xf72b[55]](_0xb569xd[_0xf72b[56]])[_0xf72b[15]](function(_0xb569x18){return _0xb569xb[_0xf72b[12]](201)[_0xf72b[11]](_0xb569x18)})[_0xf72b[14]](function(_0xb569xc){return handleError(_0xb569xb,_0xb569xc)})};exports[_0xf72b[57]]= function(_0xb569xd,_0xb569xb,_0xb569x16){_0xb569xd[_0xf72b[56]][_0xf72b[58]]= _0xb569xd[_0xf72b[22]][_0xf72b[21]];_0xb569xd[_0xf72b[56]][_0xf72b[59]]= _0xb569xd[_0xf72b[45]][_0xf72b[21]];return OpenchannelMessage[_0xf72b[55]](_0xb569xd[_0xf72b[56]])[_0xf72b[15]](function(_0xb569x18){return _0xb569xb[_0xf72b[12]](201)[_0xf72b[11]](_0xb569x18)})[_0xf72b[14]](function(_0xb569xc){return handleError(_0xb569xb,_0xb569xc)})};exports[_0xf72b[60]]= function(_0xb569xd,_0xb569xb){if(_0xb569xd[_0xf72b[56]][_0xf72b[21]]){delete _0xb569xd[_0xf72b[56]][_0xf72b[21]]};return OpenchannelRoom[_0xf72b[28]](_0xb569xd[_0xf72b[45]][_0xf72b[21]])[_0xf72b[15]](function(_0xb569x15){if(!_0xb569x15){return _0xb569xb[_0xf72b[44]](404)};var _0xb569x19=_[_0xf72b[34]](_0xb569x15,_0xb569xd[_0xf72b[56]]);return _0xb569x19[_0xf72b[61]]()})[_0xf72b[15]](function(_0xb569x15){return _0xb569xb[_0xf72b[12]](200)[_0xf72b[11]](_0xb569x15)})[_0xf72b[14]](function(_0xb569xc){return handleError(_0xb569xb,_0xb569xc)})};exports[_0xf72b[62]]= function(_0xb569xd,_0xb569xb,_0xb569x16){return OpenchannelRoom[_0xf72b[28]](_0xb569xd[_0xf72b[45]][_0xf72b[21]])[_0xf72b[15]](function(_0xb569x15){if(!_0xb569x15){return _0xb569xb[_0xf72b[44]](404)};return _0xb569x15[_0xf72b[64]](_0xb569xd[_0xf72b[56]][_0xf72b[63]],{individualHooks:true})})[_0xf72b[15]](function(){return _0xb569xb[_0xf72b[44]](200)})[_0xf72b[14]](function(_0xb569xc){return handleError(_0xb569xb,_0xb569xc)})};exports[_0xf72b[65]]= function(_0xb569xd,_0xb569xb){return OpenchannelRoom[_0xf72b[28]](_0xb569xd[_0xf72b[45]][_0xf72b[21]])[_0xf72b[15]](function(_0xb569x15){if(!_0xb569x15){return _0xb569xb[_0xf72b[44]](404)};return _0xb569x15[_0xf72b[65]]()})[_0xf72b[15]](function(){return _0xb569xb[_0xf72b[44]](204)})[_0xf72b[14]](function(_0xb569xc){return handleError(_0xb569xb,_0xb569xc)})};exports[_0xf72b[66]]= function(_0xb569xd,_0xb569xb){return OpenchannelRoom[_0xf72b[65]]({where:{id:_0xb569xd[_0xf72b[16]][_0xf72b[67]]},individualHooks:true})[_0xf72b[15]](function(){return _0xb569xb[_0xf72b[44]](200)})[_0xf72b[14]](function(_0xb569xc){return handleError(_0xb569xb,_0xb569xc)})};exports[_0xf72b[68]]= function(_0xb569xd,_0xb569xb,_0xb569x16){var _0xb569x1a={where:{id:_0xb569xd[_0xf72b[45]][_0xf72b[21]][_0xf72b[70]](_0xf72b[69])},user:_0xb569xd[_0xf72b[22]],individualHooks:true};return OpenchannelRoom[_0xf72b[60]](_0xb569xd[_0xf72b[56]],_0xb569x1a)[_0xf72b[15]](function(_0xb569x1b){if(!_0xb569x1b){return _0xb569xb[_0xf72b[44]](404)};return _0xb569x1b})[_0xf72b[15]](function(_0xb569x1b){return _0xb569xb[_0xf72b[44]](200)})[_0xf72b[14]](function(_0xb569xc){return handleError(_0xb569xb,_0xb569xc)})} \ No newline at end of file diff --git a/server/api/openchannel_room/openchannel_room.events.js b/server/api/openchannel_room/openchannel_room.events.js index 1bea005..7311179 100644 --- a/server/api/openchannel_room/openchannel_room.events.js +++ b/server/api/openchannel_room/openchannel_room.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const OpenchannelRoom = require('../../models').OpenchannelRoom; - -var OpenchannelRoomEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -OpenchannelRoomEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - OpenchannelRoom.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - OpenchannelRoomEvents.emit(event + ':' + doc._id, doc); - OpenchannelRoomEvents.emit(event, doc); - done(null); - } -} - -module.exports = OpenchannelRoomEvents; +var _0xfd2c=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x52\x6F\x6F\x6D","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xfd2c[0];const EventEmitter=require(_0xfd2c[1]);const OpenchannelRoom=require(_0xfd2c[3])[_0xfd2c[2]];var OpenchannelRoomEvents= new EventEmitter();OpenchannelRoomEvents[_0xfd2c[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xfd2c[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xfd2c[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xfd2c[6]};for(var e in events){var event=events[e];OpenchannelRoom[_0xfd2c[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xa228x8,_0xa228x9,_0xa228xa){OpenchannelRoomEvents[_0xfd2c[10]](event+ _0xfd2c[8]+ _0xa228x8[_0xfd2c[9]],_0xa228x8);OpenchannelRoomEvents[_0xfd2c[10]](event,_0xa228x8);_0xa228xa(null)}}module[_0xfd2c[11]]= OpenchannelRoomEvents \ No newline at end of file diff --git a/server/api/openchannel_room/openchannel_room.socket.js b/server/api/openchannel_room/openchannel_room.socket.js index 0868959..3f4496a 100644 --- a/server/api/openchannel_room/openchannel_room.socket.js +++ b/server/api/openchannel_room/openchannel_room.socket.js @@ -1,33 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const OpenchannelRoomEvents = require('./openchannel_room.events'); - -// Model events to emit -var events = ['save', 'save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('openchannel_room:' + event, socket); - - OpenchannelRoomEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - - -function removeListener(event, listener) { - return function() { - OpenchannelRoomEvents.removeListener(event, listener); - }; -} +var _0x95f9=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x72\x6F\x6F\x6D\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x72\x6F\x6F\x6D\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x95f9[0];const OpenchannelRoomEvents=require(_0x95f9[1]);var events=[_0x95f9[2],_0x95f9[2],_0x95f9[3]];exports[_0x95f9[4]]= function(_0xa348x3){for(var _0xa348x4=0,_0xa348x5=events[_0x95f9[5]];_0xa348x4< _0xa348x5;_0xa348x4++){var _0xa348x6=events[_0xa348x4];var _0xa348x7=createListener(_0x95f9[6]+ _0xa348x6,_0xa348x3);OpenchannelRoomEvents[_0x95f9[7]](_0xa348x6,_0xa348x7);_0xa348x3[_0x95f9[7]](_0x95f9[8],removeListener(_0xa348x6,_0xa348x7))}};function createListener(_0xa348x6,_0xa348x3){return function(_0xa348x9){_0xa348x3[_0x95f9[9]](_0xa348x6,_0xa348x9)}}function removeListener(_0xa348x6,_0xa348x7){return function(){OpenchannelRoomEvents[_0x95f9[10]](_0xa348x6,_0xa348x7)}} \ No newline at end of file diff --git a/server/api/pause/index.js b/server/api/pause/index.js index e7ac19a..c547ec1 100644 --- a/server/api/pause/index.js +++ b/server/api/pause/index.js @@ -1,162 +1 @@ -'use strict'; - -var express = require('express'); -var auth = require('../../auth/auth.service'); -var controller = require('./pause.controller'); - -var router = express.Router(); - -/** - * @api {get} /api/pauses/ Get pauses list. - * - * @apiParam (Query) {Number} [offset] Pagination offset. - * @apiParam (Query) {Number} [limit] Pagination limit. - * - * @apiVersion 0.0.140 - * @apiName GetPauses - * @apiGroup Pauses - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccess {Number} count Number of pauses. - * @apiSuccess {Object[]} rows Pauses list. - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 200 OK - * { - * "count": 1, - * "rows": [{ - * "id": 1 - * "name": "BACKOFFICE" - * "description": "BACKOFFICE Pause" - * }] - * } - */ -router.get('/', auth.isAuthenticated(), auth.hasModule([6, 13], ['admin', 'agent']), controller.index); - -/** - * @api {get} /api/pauses/:id Get pause. - * @apiParam {Number} id Pause unique ID. - * @apiVersion 0.0.140 - * @apiName GetPause - * @apiGroup Pauses - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 200 OK - * { - * "id": 1 - * "name": "BACKOFFICE" - * "description": "BACKOFFICE Pause" - * } - */ -router.get('/:id', auth.isAuthenticated(), auth.hasModule([13], ['admin']), controller.show); - -/** - * @api {post} /api/users/ Create pause. - * @apiParam (Body) {String} name Pause name. - * @apiParam (Body) {String} [description] Pause description. - * - * @apiVersion 0.0.140 - * @apiName CreatePause - * @apiGroup Pauses - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 201 Created - * { - * "id": 1 - * "name": "BACKOFFICE" - * "description": "BACKOFFICE Pause" - * } - */ -router.post('/', auth.isAuthenticated(), auth.hasModule([13], ['admin']), controller.create); - -/** - * @api {delete} /api/users/:id Update pause details. - * - * @apiParam (Params) {Number} id Pause unique ID. - * @apiParam (Body) {String} name Pause name. - * @apiParam (Body) {String} [description] Pause description. - * - * @apiVersion 0.0.140 - * @apiName UpdatePause - * @apiGroup Pauses - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 200 OK - * { - * "id": 1 - * "name": "BACKOFFICE" - * "description": "BACKOFFICE Pause" - * } - */ -router.put('/:id', auth.isAuthenticated(), auth.hasModule([13], ['admin']), controller.update); - -/** - * @api {delete} /api/pauses/ Bulk Delete pauses. - * - * @apiParam (Query) {Number[]} ids Pauses unique ID array. - * - * @apiVersion 0.0.140 - * @apiName BulkDeletePauses - * @apiGroup Pauses - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 204 No Content - */ -router.delete('/', auth.isAuthenticated(), auth.hasModule([13], ['admin']), controller.bulkDestroy); - -/** - * @api {delete} /api/telephones/:id Delete pause. - * - * @apiParam {Number} id Pause unique ID. - * - * @apiVersion 0.0.140 - * @apiName DeletePause - * @apiGroup Pauses - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 204 No Content - */ -router.delete('/:id', auth.isAuthenticated(), auth.hasModule([13], ['admin']), controller.destroy); - -module.exports = router; +var _0x7ffd=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x70\x61\x75\x73\x65\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0x7ffd[0];var express=require(_0x7ffd[1]);var auth=require(_0x7ffd[2]);var controller=require(_0x7ffd[3]);var router=express.Router();router[_0x7ffd[10]](_0x7ffd[4],auth[_0x7ffd[5]](),auth[_0x7ffd[8]]([6,13],[_0x7ffd[6],_0x7ffd[7]]),controller[_0x7ffd[9]]);router[_0x7ffd[10]](_0x7ffd[11],auth[_0x7ffd[5]](),auth[_0x7ffd[8]]([13],[_0x7ffd[6]]),controller[_0x7ffd[12]]);router[_0x7ffd[14]](_0x7ffd[4],auth[_0x7ffd[5]](),auth[_0x7ffd[8]]([13],[_0x7ffd[6]]),controller[_0x7ffd[13]]);router[_0x7ffd[16]](_0x7ffd[11],auth[_0x7ffd[5]](),auth[_0x7ffd[8]]([13],[_0x7ffd[6]]),controller[_0x7ffd[15]]);router[_0x7ffd[18]](_0x7ffd[4],auth[_0x7ffd[5]](),auth[_0x7ffd[8]]([13],[_0x7ffd[6]]),controller[_0x7ffd[17]]);router[_0x7ffd[18]](_0x7ffd[11],auth[_0x7ffd[5]](),auth[_0x7ffd[8]]([13],[_0x7ffd[6]]),controller[_0x7ffd[19]]);module[_0x7ffd[20]]= router \ No newline at end of file diff --git a/server/api/pause/pause.controller.js b/server/api/pause/pause.controller.js index d33093a..2900321 100644 --- a/server/api/pause/pause.controller.js +++ b/server/api/pause/pause.controller.js @@ -1,150 +1 @@ -/** - * Using Rails-like standard naming convention for endpoints. - * GET /api/pauses -> index - * POST /api/pauses -> create - * GET /api/pauses/:id -> show - * PUT /api/pauses/:id -> update - * DELETE /api/pauses/:id -> destroy - */ - -'use strict'; - - -var _ = require('lodash'); -var Util = require('../../config/util'); - -var Pause = require('../../models').Pause; - - -function handleError(res, statusCode) { - statusCode = statusCode || 500; - return function(err) { - res.status(statusCode).send(err); - }; -} - -function responseWithResult(res, statusCode) { - statusCode = statusCode || 200; - return function(entity) { - if (entity) { - res.status(statusCode).json(entity); - } - }; -} - -function handleEntityNotFound(res) { - return function(entity) { - if (!entity) { - res.status(404).end(); - return null; - } - return entity; - }; -} - -function saveUpdates(updates) { - return function(entity) { - return entity.updateAttributes(updates) - .then(function(updated) { - return updated; - }); - }; -} - -function removeEntity(res) { - return function(entity) { - if (entity) { - return entity.destroy() - .then(function() { - res.status(204).end(); - }); - } - }; -} - -// Gets a list of Pauses -exports.index = function(req, res) { - return Pause - .findAndCountAll(Util.getQuery(req.query)) - .then(function(result) { - res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); -} - -// Gets a single Pause from the DB -exports.show = function(req, res) { - return Pause.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Creates a new Pause in the DB -exports.create = function(req, res) { - return Pause.create(req.body) - .then(responseWithResult(res, 201)) - .catch(handleError(res)); -} - -// Updates an existing Pause in the DB -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - return Pause.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(saveUpdates(req.body)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Deletes a Pause from the DB -exports.destroy = function(req, res) { - return Pause.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(removeEntity(res)) - .catch(handleError(res)); -} - -// Deletes a agent from the DB. -exports.bulkDestroy = function(req, res) { - - return Pause - .destroy({ - where: { - id: req.query.ids - }, - individualHooks: true - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function getQuery(query) { - var _query = { - where: {} - }; - - _.forEach(query, function(value, key) { - switch (key) { - case 'limit': - case 'offset': - case 'order': - _query[key] = value; - break; - default: - _query.where[key] = { - $like: '%' + value + '%' - }; - } - }); - - return _query; -} +var _0x1d26=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x50\x61\x75\x73\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x6A\x73\x6F\x6E","\x65\x6E\x64","\x74\x68\x65\x6E","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x64\x65\x73\x74\x72\x6F\x79","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x73\x68\x6F\x77","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64\x73","\x6C\x69\x6D\x69\x74","\x6F\x66\x66\x73\x65\x74","\x6F\x72\x64\x65\x72","\x77\x68\x65\x72\x65","\x25","\x66\x6F\x72\x45\x61\x63\x68"];_0x1d26[0];var _=require(_0x1d26[1]);var Util=require(_0x1d26[2]);var Pause=require(_0x1d26[4])[_0x1d26[3]];function handleError(_0xeb31x5,_0xeb31x6){_0xeb31x6= _0xeb31x6|| 500;return function(_0xeb31x7){_0xeb31x5[_0x1d26[6]](_0xeb31x6)[_0x1d26[5]](_0xeb31x7)}}function responseWithResult(_0xeb31x5,_0xeb31x6){_0xeb31x6= _0xeb31x6|| 200;return function(_0xeb31x9){if(_0xeb31x9){_0xeb31x5[_0x1d26[6]](_0xeb31x6)[_0x1d26[7]](_0xeb31x9)}}}function handleEntityNotFound(_0xeb31x5){return function(_0xeb31x9){if(!_0xeb31x9){_0xeb31x5[_0x1d26[6]](404)[_0x1d26[8]]();return null};return _0xeb31x9}}function saveUpdates(_0xeb31xc){return function(_0xeb31x9){return _0xeb31x9[_0x1d26[10]](_0xeb31xc)[_0x1d26[9]](function(_0xeb31xd){return _0xeb31xd})}}function removeEntity(_0xeb31x5){return function(_0xeb31x9){if(_0xeb31x9){return _0xeb31x9[_0x1d26[11]]()[_0x1d26[9]](function(){_0xeb31x5[_0x1d26[6]](204)[_0x1d26[8]]()})}}}exports[_0x1d26[12]]= function(_0xeb31xf,_0xeb31x5){return Pause[_0x1d26[16]](Util[_0x1d26[15]](_0xeb31xf[_0x1d26[14]]))[_0x1d26[9]](function(_0xeb31x10){_0xeb31x5[_0x1d26[6]](200)[_0x1d26[5]](_0xeb31x10)})[_0x1d26[13]](function(_0xeb31x7){return handleError(_0xeb31x5,_0xeb31x7)})};exports[_0x1d26[17]]= function(_0xeb31xf,_0xeb31x5){return Pause[_0x1d26[20]](_0xeb31xf[_0x1d26[19]][_0x1d26[18]])[_0x1d26[9]](handleEntityNotFound(_0xeb31x5))[_0x1d26[9]](responseWithResult(_0xeb31x5))[_0x1d26[13]](handleError(_0xeb31x5))};exports[_0x1d26[21]]= function(_0xeb31xf,_0xeb31x5){return Pause[_0x1d26[21]](_0xeb31xf[_0x1d26[22]])[_0x1d26[9]](responseWithResult(_0xeb31x5,201))[_0x1d26[13]](handleError(_0xeb31x5))};exports[_0x1d26[23]]= function(_0xeb31xf,_0xeb31x5){if(_0xeb31xf[_0x1d26[22]][_0x1d26[18]]){delete _0xeb31xf[_0x1d26[22]][_0x1d26[18]]};return Pause[_0x1d26[20]](_0xeb31xf[_0x1d26[19]][_0x1d26[18]])[_0x1d26[9]](handleEntityNotFound(_0xeb31x5))[_0x1d26[9]](saveUpdates(_0xeb31xf[_0x1d26[22]]))[_0x1d26[9]](responseWithResult(_0xeb31x5))[_0x1d26[13]](handleError(_0xeb31x5))};exports[_0x1d26[11]]= function(_0xeb31xf,_0xeb31x5){return Pause[_0x1d26[20]](_0xeb31xf[_0x1d26[19]][_0x1d26[18]])[_0x1d26[9]](handleEntityNotFound(_0xeb31x5))[_0x1d26[9]](removeEntity(_0xeb31x5))[_0x1d26[13]](handleError(_0xeb31x5))};exports[_0x1d26[24]]= function(_0xeb31xf,_0xeb31x5){return Pause[_0x1d26[11]]({where:{id:_0xeb31xf[_0x1d26[14]][_0x1d26[26]]},individualHooks:true})[_0x1d26[9]](function(){return _0xeb31x5[_0x1d26[25]](204)})[_0x1d26[13]](function(_0xeb31x7){return handleError(_0xeb31x5,_0xeb31x7)})};function getQuery(_0xeb31x12){var _0xeb31x13={where:{}};_[_0x1d26[32]](_0xeb31x12,function(_0xeb31x14,_0xeb31x15){switch(_0xeb31x15){case _0x1d26[27]:;case _0x1d26[28]:;case _0x1d26[29]:_0xeb31x13[_0xeb31x15]= _0xeb31x14;break;default:_0xeb31x13[_0x1d26[30]][_0xeb31x15]= {$like:_0x1d26[31]+ _0xeb31x14+ _0x1d26[31]}}});return _0xeb31x13} \ No newline at end of file diff --git a/server/api/pause/pause.events.js b/server/api/pause/pause.events.js index 034b226..7579c10 100644 --- a/server/api/pause/pause.events.js +++ b/server/api/pause/pause.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const Pause = require('../../models').Pause; - -var PauseEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -PauseEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - Pause.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - PauseEvents.emit(event + ':' + doc._id, doc); - PauseEvents.emit(event, doc); - done(null); - } -} - -module.exports = PauseEvents; +var _0x161c=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x50\x61\x75\x73\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x161c[0];const EventEmitter=require(_0x161c[1]);const Pause=require(_0x161c[3])[_0x161c[2]];var PauseEvents= new EventEmitter();PauseEvents[_0x161c[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x161c[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x161c[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x161c[6]};for(var e in events){var event=events[e];Pause[_0x161c[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xb94dx8,_0xb94dx9,_0xb94dxa){PauseEvents[_0x161c[10]](event+ _0x161c[8]+ _0xb94dx8[_0x161c[9]],_0xb94dx8);PauseEvents[_0x161c[10]](event,_0xb94dx8);_0xb94dxa(null)}}module[_0x161c[11]]= PauseEvents \ No newline at end of file diff --git a/server/api/pause/pause.socket.js b/server/api/pause/pause.socket.js index c01be0c..dabf0ef 100644 --- a/server/api/pause/pause.socket.js +++ b/server/api/pause/pause.socket.js @@ -1,28 +1 @@ -'use strict'; - -const PauseEvents = require('./pause.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('pause:' + event, socket); - - PauseEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - PauseEvents.removeListener(event, listener); - }; -} +var _0xddae=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x70\x61\x75\x73\x65\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x70\x61\x75\x73\x65\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xddae[0];const PauseEvents=require(_0xddae[1]);var events=[_0xddae[2],_0xddae[3]];exports[_0xddae[4]]= function(_0xccb4x3){for(var _0xccb4x4=0,_0xccb4x5=events[_0xddae[5]];_0xccb4x4< _0xccb4x5;_0xccb4x4++){var _0xccb4x6=events[_0xccb4x4];var _0xccb4x7=createListener(_0xddae[6]+ _0xccb4x6,_0xccb4x3);PauseEvents[_0xddae[7]](_0xccb4x6,_0xccb4x7);_0xccb4x3[_0xddae[7]](_0xddae[8],removeListener(_0xccb4x6,_0xccb4x7))}};function createListener(_0xccb4x6,_0xccb4x3){return function(_0xccb4x9){_0xccb4x3[_0xddae[9]](_0xccb4x6,_0xccb4x9)}}function removeListener(_0xccb4x6,_0xccb4x7){return function(){PauseEvents[_0xddae[10]](_0xccb4x6,_0xccb4x7)}} \ No newline at end of file diff --git a/server/api/report_agent/index.js b/server/api/report_agent/index.js index c0ded72..d6a9174 100644 --- a/server/api/report_agent/index.js +++ b/server/api/report_agent/index.js @@ -1,13 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./report_agent.controller'); -var auth = require('../../auth/auth.service'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), auth.hasModule([17], ['admin', 'agent']), controller.index); -router.get('/describe', auth.isAuthenticated(), auth.hasModule([17], ['admin']), controller.describe); -router.get('/active/calls', auth.isAuthenticated(), auth.hasModule([17], ['admin', 'agent']), controller.activeCalls); - -module.exports = router; +var _0x3d6f=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x61\x67\x65\x6E\x74\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x64\x65\x73\x63\x72\x69\x62\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x2F\x61\x63\x74\x69\x76\x65\x2F\x63\x61\x6C\x6C\x73","\x61\x63\x74\x69\x76\x65\x43\x61\x6C\x6C\x73","\x65\x78\x70\x6F\x72\x74\x73"];_0x3d6f[0];var express=require(_0x3d6f[1]);var controller=require(_0x3d6f[2]);var auth=require(_0x3d6f[3]);var router=express.Router();router[_0x3d6f[10]](_0x3d6f[4],auth[_0x3d6f[5]](),auth[_0x3d6f[8]]([17],[_0x3d6f[6],_0x3d6f[7]]),controller[_0x3d6f[9]]);router[_0x3d6f[10]](_0x3d6f[11],auth[_0x3d6f[5]](),auth[_0x3d6f[8]]([17],[_0x3d6f[6]]),controller[_0x3d6f[12]]);router[_0x3d6f[10]](_0x3d6f[13],auth[_0x3d6f[5]](),auth[_0x3d6f[8]]([17],[_0x3d6f[6],_0x3d6f[7]]),controller[_0x3d6f[14]]);module[_0x3d6f[15]]= router \ No newline at end of file diff --git a/server/api/report_agent/report_agent.controller.js b/server/api/report_agent/report_agent.controller.js index 4f27797..aa2de97 100644 --- a/server/api/report_agent/report_agent.controller.js +++ b/server/api/report_agent/report_agent.controller.js @@ -1,107 +1 @@ -'use strict'; - -var _ = require('lodash'); -var ReportAgent = require('../../models').ReportAgent; -var User = require('../../models').User; -var VoiceQueue = require('../../models').VoiceQueue; -var ReportAgentHistory = require('../../models').history.ReportAgentHistory; -var Util = require('../../config/util'); - -// Get list of report_agents -exports.index = function(req, res, next) { - var where = {}; - if (req.user.role === 'agent') { - where.membername = req.user.name; - } - return ReportAgent - .findAndCountAll(Util.getQuery(req.query, where)) - .then(function(result) { - return res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function getVoiceQueues(user) { - return function() { - switch (user.role) { - case 'user': - return User - .findById(user.id, { - attributes: ['id'] - }) - .then(Util.getVoiceQueuesIdByUser()) - .then(function(userQueues) { - return _.map(userQueues.rows, 'name'); - }); - case 'agent': - return User - .findById(user.id) - .then(function(agent) { - return agent - .getVoiceQueues({ - attributes: ['name'] - }); - }) - .then(function(userQueues) { - return _.map(userQueues, 'name'); - }); - default: - return VoiceQueue - .findAll() - .then(function(queues) { - return { - rows: queues - }; - }) - .then(function(userQueues) { - return _.map(userQueues.rows, 'name'); - }); - } - } -} - -// Get active Calls -exports.activeCalls = function(req, res) { - var where = {}; - if (req.user.role === 'agent') { - where.membername = req.user.fullname; - } - return Promise - .all([]) - .then(getVoiceQueues(req.user)) - .then(function(userQueues) { - return ReportAgent - .findAll(Util.getQuery(req.query, _.merge(where, { - agentcomplete: false, - agentringnoanswer: false, - agentdump: false - }))); - }) - .then(function(data) { - return res.status(200).send({ - rows: data, - count: data.length - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get list of fields -exports.describe = function(req, res) { - return ReportAgentHistory - .describe() - .then(function(fields) { - return res.status(200).send(fields); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0xf21e=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x52\x65\x70\x6F\x72\x74\x41\x67\x65\x6E\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x55\x73\x65\x72","\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65","\x52\x65\x70\x6F\x72\x74\x41\x67\x65\x6E\x74\x48\x69\x73\x74\x6F\x72\x79","\x68\x69\x73\x74\x6F\x72\x79","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x69\x6E\x64\x65\x78","\x72\x6F\x6C\x65","\x75\x73\x65\x72","\x61\x67\x65\x6E\x74","\x6D\x65\x6D\x62\x65\x72\x6E\x61\x6D\x65","\x6E\x61\x6D\x65","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x72\x6F\x77\x73","\x6D\x61\x70","\x67\x65\x74\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x69\x64","\x66\x69\x6E\x64\x42\x79\x49\x64","\x67\x65\x74\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65\x73","\x66\x69\x6E\x64\x41\x6C\x6C","\x61\x63\x74\x69\x76\x65\x43\x61\x6C\x6C\x73","\x66\x75\x6C\x6C\x6E\x61\x6D\x65","\x6C\x65\x6E\x67\x74\x68","\x6D\x65\x72\x67\x65","\x61\x6C\x6C","\x64\x65\x73\x63\x72\x69\x62\x65"];_0xf21e[0];var _=require(_0xf21e[1]);var ReportAgent=require(_0xf21e[3])[_0xf21e[2]];var User=require(_0xf21e[3])[_0xf21e[4]];var VoiceQueue=require(_0xf21e[3])[_0xf21e[5]];var ReportAgentHistory=require(_0xf21e[3])[_0xf21e[7]][_0xf21e[6]];var Util=require(_0xf21e[8]);exports[_0xf21e[9]]= function(_0x538fx7,_0x538fx8,_0x538fx9){var _0x538fxa={};if(_0x538fx7[_0xf21e[11]][_0xf21e[10]]=== _0xf21e[12]){_0x538fxa[_0xf21e[13]]= _0x538fx7[_0xf21e[11]][_0xf21e[14]]};return ReportAgent[_0xf21e[21]](Util[_0xf21e[20]](_0x538fx7[_0xf21e[19]],_0x538fxa))[_0xf21e[18]](function(_0x538fxc){return _0x538fx8[_0xf21e[17]](200)[_0xf21e[16]](_0x538fxc)})[_0xf21e[15]](function(_0x538fxb){return handleError(_0x538fx8,_0x538fxb)})};function getVoiceQueues(_0x538fxe){return function(){switch(_0x538fxe[_0xf21e[10]]){case _0xf21e[11]:return User[_0xf21e[26]](_0x538fxe[_0xf21e[25]],{attributes:[_0xf21e[25]]})[_0xf21e[18]](Util[_0xf21e[24]]())[_0xf21e[18]](function(_0x538fxf){return _[_0xf21e[23]](_0x538fxf[_0xf21e[22]],_0xf21e[14])});case _0xf21e[12]:return User[_0xf21e[26]](_0x538fxe[_0xf21e[25]])[_0xf21e[18]](function(_0x538fx10){return _0x538fx10[_0xf21e[27]]({attributes:[_0xf21e[14]]})})[_0xf21e[18]](function(_0x538fxf){return _[_0xf21e[23]](_0x538fxf,_0xf21e[14])});default:return VoiceQueue[_0xf21e[28]]()[_0xf21e[18]](function(_0x538fx11){return {rows:_0x538fx11}})[_0xf21e[18]](function(_0x538fxf){return _[_0xf21e[23]](_0x538fxf[_0xf21e[22]],_0xf21e[14])})}}}exports[_0xf21e[29]]= function(_0x538fx7,_0x538fx8){var _0x538fxa={};if(_0x538fx7[_0xf21e[11]][_0xf21e[10]]=== _0xf21e[12]){_0x538fxa[_0xf21e[13]]= _0x538fx7[_0xf21e[11]][_0xf21e[30]]};return Promise[_0xf21e[33]]([])[_0xf21e[18]](getVoiceQueues(_0x538fx7[_0xf21e[11]]))[_0xf21e[18]](function(_0x538fxf){return ReportAgent[_0xf21e[28]](Util[_0xf21e[20]](_0x538fx7[_0xf21e[19]],_[_0xf21e[32]](_0x538fxa,{agentcomplete:false,agentringnoanswer:false,agentdump:false})))})[_0xf21e[18]](function(_0x538fx12){return _0x538fx8[_0xf21e[17]](200)[_0xf21e[16]]({rows:_0x538fx12,count:_0x538fx12[_0xf21e[31]]})})[_0xf21e[15]](function(_0x538fxb){return handleError(_0x538fx8,_0x538fxb)})};exports[_0xf21e[34]]= function(_0x538fx7,_0x538fx8){return ReportAgentHistory[_0xf21e[34]]()[_0xf21e[18]](function(_0x538fx13){return _0x538fx8[_0xf21e[17]](200)[_0xf21e[16]](_0x538fx13)})[_0xf21e[15]](function(_0x538fxb){return handleError(_0x538fx8,_0x538fxb)})};function handleError(_0x538fx8,_0x538fxb){return _0x538fx8[_0xf21e[17]](500)[_0xf21e[16]](_0x538fxb)} \ No newline at end of file diff --git a/server/api/report_agent/report_agent.events.js b/server/api/report_agent/report_agent.events.js index 4a38996..079d754 100644 --- a/server/api/report_agent/report_agent.events.js +++ b/server/api/report_agent/report_agent.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const ReportAgent = require('../../models').ReportAgent; - -var ReportAgentEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -ReportAgentEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'update', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - ReportAgent.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - ReportAgentEvents.emit(event + ':' + doc._id, doc); - ReportAgentEvents.emit(event, doc); - done(null); - } -} - -module.exports = ReportAgentEvents; +var _0xa7f5=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x52\x65\x70\x6F\x72\x74\x41\x67\x65\x6E\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x75\x70\x64\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xa7f5[0];const EventEmitter=require(_0xa7f5[1]);const ReportAgent=require(_0xa7f5[3])[_0xa7f5[2]];var ReportAgentEvents= new EventEmitter();ReportAgentEvents[_0xa7f5[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xa7f5[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xa7f5[6],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xa7f5[7]};for(var e in events){var event=events[e];ReportAgent[_0xa7f5[8]](e,emitEvent(event))};function emitEvent(event){return function(_0xb67dx8,_0xb67dx9,_0xb67dxa){ReportAgentEvents[_0xa7f5[11]](event+ _0xa7f5[9]+ _0xb67dx8[_0xa7f5[10]],_0xb67dx8);ReportAgentEvents[_0xa7f5[11]](event,_0xb67dx8);_0xb67dxa(null)}}module[_0xa7f5[12]]= ReportAgentEvents \ No newline at end of file diff --git a/server/api/report_agent/report_agent.socket.js b/server/api/report_agent/report_agent.socket.js index 27b95f5..0bfa521 100644 --- a/server/api/report_agent/report_agent.socket.js +++ b/server/api/report_agent/report_agent.socket.js @@ -1,30 +1 @@ -'use strict'; - -const ReportAgentEvents = require('./report_agent.events'); - -// Model events to emit -var events = ['save', 'update', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('report_agent:' + event, socket); - - ReportAgentEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - if (socket.name === doc.membername || socket.role === 'admin') { - socket.emit(event, doc); - } - }; -} - -function removeListener(event, listener) { - return function() { - ReportAgentEvents.removeListener(event, listener); - }; -} +var _0x3919=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x61\x67\x65\x6E\x74\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x75\x70\x64\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x72\x65\x70\x6F\x72\x74\x5F\x61\x67\x65\x6E\x74\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x6E\x61\x6D\x65","\x6D\x65\x6D\x62\x65\x72\x6E\x61\x6D\x65","\x72\x6F\x6C\x65","\x61\x64\x6D\x69\x6E","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x3919[0];const ReportAgentEvents=require(_0x3919[1]);var events=[_0x3919[2],_0x3919[3],_0x3919[4]];exports[_0x3919[5]]= function(_0x3123x3){for(var _0x3123x4=0,_0x3123x5=events[_0x3919[6]];_0x3123x4< _0x3123x5;_0x3123x4++){var _0x3123x6=events[_0x3123x4];var _0x3123x7=createListener(_0x3919[7]+ _0x3123x6,_0x3123x3);ReportAgentEvents[_0x3919[8]](_0x3123x6,_0x3123x7);_0x3123x3[_0x3919[8]](_0x3919[9],removeListener(_0x3123x6,_0x3123x7))}};function createListener(_0x3123x6,_0x3123x3){return function(_0x3123x9){if(_0x3123x3[_0x3919[10]]=== _0x3123x9[_0x3919[11]]|| _0x3123x3[_0x3919[12]]=== _0x3919[13]){_0x3123x3[_0x3919[14]](_0x3123x6,_0x3123x9)}}}function removeListener(_0x3123x6,_0x3123x7){return function(){ReportAgentEvents[_0x3919[15]](_0x3123x6,_0x3123x7)}} \ No newline at end of file diff --git a/server/api/report_call/index.js b/server/api/report_call/index.js index 65350f2..0e76f07 100644 --- a/server/api/report_call/index.js +++ b/server/api/report_call/index.js @@ -1,19 +1 @@ -'use strict'; - -var express = require('express'); -var auth = require('../../auth/auth.service'); -var controller = require('./report_call.controller'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), auth.hasModule([17], ['admin']), controller.index); -router.get('/describe', auth.isAuthenticated(), auth.hasModule([17], ['admin']), controller.describe); -router.get('/manualoutbound', auth.isAuthenticated(), auth.hasModule([1], ['admin', 'agent']), controller.manualOutbound); -router.get('/manualoutboundglobalduration', auth.isAuthenticated(), auth.hasModule([1], ['admin', 'agent']), controller.manualOutboundGlobalDuration); -router.get('/manualoutboundavgduration', auth.isAuthenticated(), auth.hasModule([1], ['admin', 'agent']), controller.manualOutboundAvgDuration); -router.get('/manualoutboundanswered', auth.isAuthenticated(), auth.hasModule([1], ['admin', 'agent']), controller.manualOutboundAnswered); -router.get('/manualoutboundanswerrate', auth.isAuthenticated(), auth.hasModule([1], ['admin', 'agent']), controller.manualOutboundAnswerRate); -router.put('/:uniqueid', auth.isAuthenticated(), auth.hasModule([1], ['admin', 'agent']), controller.update); - - -module.exports = router; +var _0x21f9=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x63\x61\x6C\x6C\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x64\x65\x73\x63\x72\x69\x62\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x2F\x6D\x61\x6E\x75\x61\x6C\x6F\x75\x74\x62\x6F\x75\x6E\x64","\x61\x67\x65\x6E\x74","\x6D\x61\x6E\x75\x61\x6C\x4F\x75\x74\x62\x6F\x75\x6E\x64","\x2F\x6D\x61\x6E\x75\x61\x6C\x6F\x75\x74\x62\x6F\x75\x6E\x64\x67\x6C\x6F\x62\x61\x6C\x64\x75\x72\x61\x74\x69\x6F\x6E","\x6D\x61\x6E\x75\x61\x6C\x4F\x75\x74\x62\x6F\x75\x6E\x64\x47\x6C\x6F\x62\x61\x6C\x44\x75\x72\x61\x74\x69\x6F\x6E","\x2F\x6D\x61\x6E\x75\x61\x6C\x6F\x75\x74\x62\x6F\x75\x6E\x64\x61\x76\x67\x64\x75\x72\x61\x74\x69\x6F\x6E","\x6D\x61\x6E\x75\x61\x6C\x4F\x75\x74\x62\x6F\x75\x6E\x64\x41\x76\x67\x44\x75\x72\x61\x74\x69\x6F\x6E","\x2F\x6D\x61\x6E\x75\x61\x6C\x6F\x75\x74\x62\x6F\x75\x6E\x64\x61\x6E\x73\x77\x65\x72\x65\x64","\x6D\x61\x6E\x75\x61\x6C\x4F\x75\x74\x62\x6F\x75\x6E\x64\x41\x6E\x73\x77\x65\x72\x65\x64","\x2F\x6D\x61\x6E\x75\x61\x6C\x6F\x75\x74\x62\x6F\x75\x6E\x64\x61\x6E\x73\x77\x65\x72\x72\x61\x74\x65","\x6D\x61\x6E\x75\x61\x6C\x4F\x75\x74\x62\x6F\x75\x6E\x64\x41\x6E\x73\x77\x65\x72\x52\x61\x74\x65","\x2F\x3A\x75\x6E\x69\x71\x75\x65\x69\x64","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x21f9[0];var express=require(_0x21f9[1]);var auth=require(_0x21f9[2]);var controller=require(_0x21f9[3]);var router=express.Router();router[_0x21f9[9]](_0x21f9[4],auth[_0x21f9[5]](),auth[_0x21f9[7]]([17],[_0x21f9[6]]),controller[_0x21f9[8]]);router[_0x21f9[9]](_0x21f9[10],auth[_0x21f9[5]](),auth[_0x21f9[7]]([17],[_0x21f9[6]]),controller[_0x21f9[11]]);router[_0x21f9[9]](_0x21f9[12],auth[_0x21f9[5]](),auth[_0x21f9[7]]([1],[_0x21f9[6],_0x21f9[13]]),controller[_0x21f9[14]]);router[_0x21f9[9]](_0x21f9[15],auth[_0x21f9[5]](),auth[_0x21f9[7]]([1],[_0x21f9[6],_0x21f9[13]]),controller[_0x21f9[16]]);router[_0x21f9[9]](_0x21f9[17],auth[_0x21f9[5]](),auth[_0x21f9[7]]([1],[_0x21f9[6],_0x21f9[13]]),controller[_0x21f9[18]]);router[_0x21f9[9]](_0x21f9[19],auth[_0x21f9[5]](),auth[_0x21f9[7]]([1],[_0x21f9[6],_0x21f9[13]]),controller[_0x21f9[20]]);router[_0x21f9[9]](_0x21f9[21],auth[_0x21f9[5]](),auth[_0x21f9[7]]([1],[_0x21f9[6],_0x21f9[13]]),controller[_0x21f9[22]]);router[_0x21f9[25]](_0x21f9[23],auth[_0x21f9[5]](),auth[_0x21f9[7]]([1],[_0x21f9[6],_0x21f9[13]]),controller[_0x21f9[24]]);module[_0x21f9[26]]= router \ No newline at end of file diff --git a/server/api/report_call/report_call.controller.js b/server/api/report_call/report_call.controller.js index 9ba5632..32f47ed 100644 --- a/server/api/report_call/report_call.controller.js +++ b/server/api/report_call/report_call.controller.js @@ -1,176 +1 @@ -/** - * Using Rails-like standard naming convention for endpoints. - * GET /api/report/calls -> index - * POST /api/report/calls -> create - * GET /api/report/calls/:id -> show - * PUT /api/report/calls/:id -> update - * DELETE /api/report/calls/:id -> destroy - */ - -'use strict'; - - -var _ = require('lodash'); - -var sequelize = require('../../models').sequelize; -var ReportCall = require('../../models').ReportCall; -var ReportCallHistory = require('../../models').history.ReportCallHistory; -var Util = require('../../config/util'); - -function handleError(res, statusCode) { - statusCode = statusCode || 500; - return function(err) { - console.log(err); - res.status(statusCode).send(err); - }; -} - -function responseWithResult(res, statusCode) { - statusCode = statusCode || 200; - return function(entity) { - if (entity) { - res.status(statusCode).json(entity); - } - }; -} - -function handleEntityNotFound(res) { - return function(entity) { - if (!entity) { - res.status(404).end(); - return null; - } - return entity; - }; -} - -function saveUpdates(updates) { - return function(entity) { - return entity.updateAttributes(updates) - .then(function(updated) { - return updated; - }); - }; -} - -function removeEntity(res) { - return function(entity) { - if (entity) { - return entity - .destroy() - .then(function() { - res.status(204).end(); - }); - } - }; -} - -// Gets a list of ReportCalls -exports.index = function(req, res, next) { - return ReportCall - .findAndCountAll(Util.getQuery(req.query)) - .then(function(result) { - return res.status(200).send(result); - }) - .catch(handleError(res)); -}; - -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - return ReportCall.findOne({ - where: { - uniqueid: req.params.uniqueid - } - }) - .then(handleEntityNotFound(res)) - .then(saveUpdates(req.body)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Get Answered Calls -exports.manualOutbound = function(req, res) { - return ReportCall - .count({ - where: { - type: 'outbound' - } - }) - .then(function(data) { - return res.status(200).send({ - value: data - }); - }) - .catch(handleError(res)); -}; - -// Get Answered Calls -exports.manualOutboundGlobalDuration = function(req, res) { - return sequelize - .query('SELECT SEC_TO_TIME(SUM(duration)) as value FROM report_call WHERE type=\"outbound\"', { - type: sequelize.QueryTypes.SELECT - }) - .then(function(data) { - return res.status(200).send({ - value: data[0].value - }); - }) - .catch(handleError(res)); -}; - -// Get Answered Calls -exports.manualOutboundAvgDuration = function(req, res) { - return sequelize - .query('SELECT SEC_TO_TIME(ROUND(AVG(duration), 0)) as value FROM report_call WHERE type=\"outbound\"', { - type: sequelize.QueryTypes.SELECT - }) - .then(function(data) { - return res.status(200).send({ - value: data[0].value - }); - }) - .catch(handleError(res)); -}; - -// Get Answered Calls -exports.manualOutboundAnswered = function(req, res) { - return ReportCall - .count({ - where: { - disposition: 'ANSWERED', - type: 'outbound' - } - }) - .then(function(data) { - return res.status(200).send({ - value: data - }); - }) - .catch(handleError(res)); -}; - -// Get Answered Calls -exports.manualOutboundAnswerRate = function(req, res) { - return sequelize - .query('SELECT ROUND(SUM(IF(disposition=\"ANSWERED\", 1, 0)) / COUNT(*) * 100, 1) as value FROM report_call WHERE type=\"outbound\"', { - type: sequelize.QueryTypes.SELECT - }) - .then(function(data) { - return res.status(200).send({ - value: data[0].value - }); - }) - .catch(handleError(res)); -}; - -// Get list of fields -exports.describe = function(req, res) { - return ReportCallHistory - .describe() - .then(function(fields) { - return res.status(200).send(fields); - }) - .catch(handleError(res)); -}; +var _0x2ed5=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x52\x65\x70\x6F\x72\x74\x43\x61\x6C\x6C","\x52\x65\x70\x6F\x72\x74\x43\x61\x6C\x6C\x48\x69\x73\x74\x6F\x72\x79","\x68\x69\x73\x74\x6F\x72\x79","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x6C\x6F\x67","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x6A\x73\x6F\x6E","\x65\x6E\x64","\x74\x68\x65\x6E","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x64\x65\x73\x74\x72\x6F\x79","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x75\x70\x64\x61\x74\x65","\x69\x64","\x62\x6F\x64\x79","\x75\x6E\x69\x71\x75\x65\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x4F\x6E\x65","\x6D\x61\x6E\x75\x61\x6C\x4F\x75\x74\x62\x6F\x75\x6E\x64","\x6F\x75\x74\x62\x6F\x75\x6E\x64","\x63\x6F\x75\x6E\x74","\x6D\x61\x6E\x75\x61\x6C\x4F\x75\x74\x62\x6F\x75\x6E\x64\x47\x6C\x6F\x62\x61\x6C\x44\x75\x72\x61\x74\x69\x6F\x6E","\x76\x61\x6C\x75\x65","\x53\x45\x4C\x45\x43\x54\x20\x53\x45\x43\x5F\x54\x4F\x5F\x54\x49\x4D\x45\x28\x53\x55\x4D\x28\x64\x75\x72\x61\x74\x69\x6F\x6E\x29\x29\x20\x61\x73\x20\x76\x61\x6C\x75\x65\x20\x46\x52\x4F\x4D\x20\x72\x65\x70\x6F\x72\x74\x5F\x63\x61\x6C\x6C\x20\x57\x48\x45\x52\x45\x20\x74\x79\x70\x65\x3D\x22\x6F\x75\x74\x62\x6F\x75\x6E\x64\x22","\x53\x45\x4C\x45\x43\x54","\x51\x75\x65\x72\x79\x54\x79\x70\x65\x73","\x6D\x61\x6E\x75\x61\x6C\x4F\x75\x74\x62\x6F\x75\x6E\x64\x41\x76\x67\x44\x75\x72\x61\x74\x69\x6F\x6E","\x53\x45\x4C\x45\x43\x54\x20\x53\x45\x43\x5F\x54\x4F\x5F\x54\x49\x4D\x45\x28\x52\x4F\x55\x4E\x44\x28\x41\x56\x47\x28\x64\x75\x72\x61\x74\x69\x6F\x6E\x29\x2C\x20\x30\x29\x29\x20\x61\x73\x20\x76\x61\x6C\x75\x65\x20\x46\x52\x4F\x4D\x20\x72\x65\x70\x6F\x72\x74\x5F\x63\x61\x6C\x6C\x20\x57\x48\x45\x52\x45\x20\x74\x79\x70\x65\x3D\x22\x6F\x75\x74\x62\x6F\x75\x6E\x64\x22","\x6D\x61\x6E\x75\x61\x6C\x4F\x75\x74\x62\x6F\x75\x6E\x64\x41\x6E\x73\x77\x65\x72\x65\x64","\x41\x4E\x53\x57\x45\x52\x45\x44","\x6D\x61\x6E\x75\x61\x6C\x4F\x75\x74\x62\x6F\x75\x6E\x64\x41\x6E\x73\x77\x65\x72\x52\x61\x74\x65","\x53\x45\x4C\x45\x43\x54\x20\x52\x4F\x55\x4E\x44\x28\x53\x55\x4D\x28\x49\x46\x28\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x3D\x22\x41\x4E\x53\x57\x45\x52\x45\x44\x22\x2C\x20\x31\x2C\x20\x30\x29\x29\x20\x2F\x20\x43\x4F\x55\x4E\x54\x28\x2A\x29\x20\x2A\x20\x31\x30\x30\x2C\x20\x31\x29\x20\x61\x73\x20\x76\x61\x6C\x75\x65\x20\x46\x52\x4F\x4D\x20\x72\x65\x70\x6F\x72\x74\x5F\x63\x61\x6C\x6C\x20\x57\x48\x45\x52\x45\x20\x74\x79\x70\x65\x3D\x22\x6F\x75\x74\x62\x6F\x75\x6E\x64\x22","\x64\x65\x73\x63\x72\x69\x62\x65"];_0x2ed5[0];var _=require(_0x2ed5[1]);var sequelize=require(_0x2ed5[3])[_0x2ed5[2]];var ReportCall=require(_0x2ed5[3])[_0x2ed5[4]];var ReportCallHistory=require(_0x2ed5[3])[_0x2ed5[6]][_0x2ed5[5]];var Util=require(_0x2ed5[7]);function handleError(_0xf5cax7,_0xf5cax8){_0xf5cax8= _0xf5cax8|| 500;return function(_0xf5cax9){console[_0x2ed5[8]](_0xf5cax9);_0xf5cax7[_0x2ed5[10]](_0xf5cax8)[_0x2ed5[9]](_0xf5cax9)}}function responseWithResult(_0xf5cax7,_0xf5cax8){_0xf5cax8= _0xf5cax8|| 200;return function(_0xf5caxb){if(_0xf5caxb){_0xf5cax7[_0x2ed5[10]](_0xf5cax8)[_0x2ed5[11]](_0xf5caxb)}}}function handleEntityNotFound(_0xf5cax7){return function(_0xf5caxb){if(!_0xf5caxb){_0xf5cax7[_0x2ed5[10]](404)[_0x2ed5[12]]();return null};return _0xf5caxb}}function saveUpdates(_0xf5caxe){return function(_0xf5caxb){return _0xf5caxb[_0x2ed5[14]](_0xf5caxe)[_0x2ed5[13]](function(_0xf5caxf){return _0xf5caxf})}}function removeEntity(_0xf5cax7){return function(_0xf5caxb){if(_0xf5caxb){return _0xf5caxb[_0x2ed5[15]]()[_0x2ed5[13]](function(){_0xf5cax7[_0x2ed5[10]](204)[_0x2ed5[12]]()})}}}exports[_0x2ed5[16]]= function(_0xf5cax11,_0xf5cax7,_0xf5cax12){return ReportCall[_0x2ed5[20]](Util[_0x2ed5[19]](_0xf5cax11[_0x2ed5[18]]))[_0x2ed5[13]](function(_0xf5cax13){return _0xf5cax7[_0x2ed5[10]](200)[_0x2ed5[9]](_0xf5cax13)})[_0x2ed5[17]](handleError(_0xf5cax7))};exports[_0x2ed5[21]]= function(_0xf5cax11,_0xf5cax7){if(_0xf5cax11[_0x2ed5[23]][_0x2ed5[22]]){delete _0xf5cax11[_0x2ed5[23]][_0x2ed5[22]]};return ReportCall[_0x2ed5[26]]({where:{uniqueid:_0xf5cax11[_0x2ed5[25]][_0x2ed5[24]]}})[_0x2ed5[13]](handleEntityNotFound(_0xf5cax7))[_0x2ed5[13]](saveUpdates(_0xf5cax11[_0x2ed5[23]]))[_0x2ed5[13]](responseWithResult(_0xf5cax7))[_0x2ed5[17]](handleError(_0xf5cax7))};exports[_0x2ed5[27]]= function(_0xf5cax11,_0xf5cax7){return ReportCall[_0x2ed5[29]]({where:{type:_0x2ed5[28]}})[_0x2ed5[13]](function(_0xf5cax14){return _0xf5cax7[_0x2ed5[10]](200)[_0x2ed5[9]]({value:_0xf5cax14})})[_0x2ed5[17]](handleError(_0xf5cax7))};exports[_0x2ed5[30]]= function(_0xf5cax11,_0xf5cax7){return sequelize[_0x2ed5[18]](_0x2ed5[32],{type:sequelize[_0x2ed5[34]][_0x2ed5[33]]})[_0x2ed5[13]](function(_0xf5cax14){return _0xf5cax7[_0x2ed5[10]](200)[_0x2ed5[9]]({value:_0xf5cax14[0][_0x2ed5[31]]})})[_0x2ed5[17]](handleError(_0xf5cax7))};exports[_0x2ed5[35]]= function(_0xf5cax11,_0xf5cax7){return sequelize[_0x2ed5[18]](_0x2ed5[36],{type:sequelize[_0x2ed5[34]][_0x2ed5[33]]})[_0x2ed5[13]](function(_0xf5cax14){return _0xf5cax7[_0x2ed5[10]](200)[_0x2ed5[9]]({value:_0xf5cax14[0][_0x2ed5[31]]})})[_0x2ed5[17]](handleError(_0xf5cax7))};exports[_0x2ed5[37]]= function(_0xf5cax11,_0xf5cax7){return ReportCall[_0x2ed5[29]]({where:{disposition:_0x2ed5[38],type:_0x2ed5[28]}})[_0x2ed5[13]](function(_0xf5cax14){return _0xf5cax7[_0x2ed5[10]](200)[_0x2ed5[9]]({value:_0xf5cax14})})[_0x2ed5[17]](handleError(_0xf5cax7))};exports[_0x2ed5[39]]= function(_0xf5cax11,_0xf5cax7){return sequelize[_0x2ed5[18]](_0x2ed5[40],{type:sequelize[_0x2ed5[34]][_0x2ed5[33]]})[_0x2ed5[13]](function(_0xf5cax14){return _0xf5cax7[_0x2ed5[10]](200)[_0x2ed5[9]]({value:_0xf5cax14[0][_0x2ed5[31]]})})[_0x2ed5[17]](handleError(_0xf5cax7))};exports[_0x2ed5[41]]= function(_0xf5cax11,_0xf5cax7){return ReportCallHistory[_0x2ed5[41]]()[_0x2ed5[13]](function(_0xf5cax15){return _0xf5cax7[_0x2ed5[10]](200)[_0x2ed5[9]](_0xf5cax15)})[_0x2ed5[17]](handleError(_0xf5cax7))} \ No newline at end of file diff --git a/server/api/report_call/report_call.events.js b/server/api/report_call/report_call.events.js index 6ee64f5..127b2ba 100644 --- a/server/api/report_call/report_call.events.js +++ b/server/api/report_call/report_call.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const ReportCall = require('../../models').ReportCall; - -var ReportCallEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -ReportCallEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - ReportCall.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - ReportCallEvents.emit(event + ':' + doc._id, doc); - ReportCallEvents.emit(event, doc); - done(null); - } -} - -module.exports = ReportCallEvents; +var _0x79c4=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x52\x65\x70\x6F\x72\x74\x43\x61\x6C\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x79c4[0];const EventEmitter=require(_0x79c4[1]);const ReportCall=require(_0x79c4[3])[_0x79c4[2]];var ReportCallEvents= new EventEmitter();ReportCallEvents[_0x79c4[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x79c4[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x79c4[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x79c4[6]};for(var e in events){var event=events[e];ReportCall[_0x79c4[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x22adx8,_0x22adx9,_0x22adxa){ReportCallEvents[_0x79c4[10]](event+ _0x79c4[8]+ _0x22adx8[_0x79c4[9]],_0x22adx8);ReportCallEvents[_0x79c4[10]](event,_0x22adx8);_0x22adxa(null)}}module[_0x79c4[11]]= ReportCallEvents \ No newline at end of file diff --git a/server/api/report_call/report_call.socket.js b/server/api/report_call/report_call.socket.js index b76cd89..d5e13bb 100644 --- a/server/api/report_call/report_call.socket.js +++ b/server/api/report_call/report_call.socket.js @@ -1,28 +1 @@ -'use strict'; - -const ReportCallEvents = require('./report_call.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('report_call:' + event, socket); - - ReportCallEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - ReportCallEvents.removeListener(event, listener); - }; -} +var _0x4c9e=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x63\x61\x6C\x6C\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x72\x65\x70\x6F\x72\x74\x5F\x63\x61\x6C\x6C\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x4c9e[0];const ReportCallEvents=require(_0x4c9e[1]);var events=[_0x4c9e[2],_0x4c9e[3]];exports[_0x4c9e[4]]= function(_0x5371x3){for(var _0x5371x4=0,_0x5371x5=events[_0x4c9e[5]];_0x5371x4< _0x5371x5;_0x5371x4++){var _0x5371x6=events[_0x5371x4];var _0x5371x7=createListener(_0x4c9e[6]+ _0x5371x6,_0x5371x3);ReportCallEvents[_0x4c9e[7]](_0x5371x6,_0x5371x7);_0x5371x3[_0x4c9e[7]](_0x4c9e[8],removeListener(_0x5371x6,_0x5371x7))}};function createListener(_0x5371x6,_0x5371x3){return function(_0x5371x9){_0x5371x3[_0x4c9e[9]](_0x5371x6,_0x5371x9)}}function removeListener(_0x5371x6,_0x5371x7){return function(){ReportCallEvents[_0x4c9e[10]](_0x5371x6,_0x5371x7)}} \ No newline at end of file diff --git a/server/api/report_chat/index.js b/server/api/report_chat/index.js index b49820f..0974225 100644 --- a/server/api/report_chat/index.js +++ b/server/api/report_chat/index.js @@ -1,14 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./report_chat.controller'); -var auth = require('../../auth/auth.service'); -var license = require('../../config/license/license.service'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), license.hasChat(), auth.hasModule([17], ['admin', 'agent']), controller.index); -router.get('/:id/accept/:uniqueid', auth.isAuthenticated(), license.hasChat(), auth.hasRole('agent'), controller.accept); -router.get('/:id/reject', auth.isAuthenticated(), license.hasChat(), auth.hasRole('agent'), controller.reject); - -module.exports = router; +var _0x2686=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x63\x68\x61\x74\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x68\x61\x73\x43\x68\x61\x74","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64\x2F\x61\x63\x63\x65\x70\x74\x2F\x3A\x75\x6E\x69\x71\x75\x65\x69\x64","\x68\x61\x73\x52\x6F\x6C\x65","\x61\x63\x63\x65\x70\x74","\x2F\x3A\x69\x64\x2F\x72\x65\x6A\x65\x63\x74","\x72\x65\x6A\x65\x63\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x2686[0];var express=require(_0x2686[1]);var controller=require(_0x2686[2]);var auth=require(_0x2686[3]);var license=require(_0x2686[4]);var router=express.Router();router[_0x2686[12]](_0x2686[5],auth[_0x2686[6]](),license[_0x2686[7]](),auth[_0x2686[10]]([17],[_0x2686[8],_0x2686[9]]),controller[_0x2686[11]]);router[_0x2686[12]](_0x2686[13],auth[_0x2686[6]](),license[_0x2686[7]](),auth[_0x2686[14]](_0x2686[9]),controller[_0x2686[15]]);router[_0x2686[12]](_0x2686[16],auth[_0x2686[6]](),license[_0x2686[7]](),auth[_0x2686[14]](_0x2686[9]),controller[_0x2686[17]]);module[_0x2686[18]]= router \ No newline at end of file diff --git a/server/api/report_chat/report_chat.controller.js b/server/api/report_chat/report_chat.controller.js index f45b278..8e7820c 100644 --- a/server/api/report_chat/report_chat.controller.js +++ b/server/api/report_chat/report_chat.controller.js @@ -1,163 +1 @@ -'use strict'; - -var _ = require('lodash'); -var md5 = require('md5'); -var moment = require('moment'); - -var ReportChat = require('../../models').ReportChat; -var ChatRoom = require('../../models').ChatRoom; -var ChatVisitor = require('../../models').ChatVisitor; -var Agent = require('../../models').User; -var sequelize = require('../../models').sequelize; - -var Util = require('../../config/util'); - -// Get list of agents -exports.index = function(req, res, next) { - return ReportChat - .findAndCountAll(Util.getQuery(req.query)) - .then(function(result) { - res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get a single reportMail -exports.accept = function(req, res) { - var _roomid = req.params.uniqueid.split('.')[1]; - var _chatRoom; - - return ReportChat - .findById(req.params.id) - .then(function(reportChat) { - if (!reportChat) { - return res.sendStatus(404); - } - var updated = _.merge(reportChat, { - connectid: req.params.uniqueid - }); - return updated.save(); - }) - .then(function() { - return ChatRoom - .findById(_roomid); - }) - .then(function(chatRoom) { - _chatRoom = chatRoom; - return _chatRoom - .addUser(req.user.id, { - individualHooks: true - }); - }) - .then(function() { - return _chatRoom - .update({ - token: md5(JSON.stringify([req.user.id])).toString('base64'), - status: 'OPEN' - }) - }) - .then(function() { - return ChatVisitor.findById(_chatRoom.ChatVisitorId); - }) - .then(function(chatVisitor) { - if (!chatVisitor) { - return res.sendStatus(404); - } - var updated = _.merge(chatVisitor, { - status: 'accepted' - }); - return updated.save(); - }) - .then(function() { - return res.sendStatus(200); - }) - .catch(sequelize.UniqueConstraintError, function(err) { - return res.sendStatus(504); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Creates a new reportChat in the DB. -exports.create = function(req, res) { - return ReportChat - .create(req.body) - .then(function(reportChat) { - return res.status(201).send(reportChat); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Updates an existing reportChat in the DB. -exports.update = function(req, res, next) { - if (req.body.id) { - delete req.body.id; - } - - return ReportChat - .findById(req.params.id) - .then(function(reportChat) { - if (!reportChat) { - return res.sendStatus(404); - } - var updated = _.merge(reportChat, req.body); - return updated - .save(); - }) - .then(function(reportChat) { - return res.status(200).send(reportChat); - }) - .catch(sequelize.ValidationError, function(err) { - return handleError(res, err); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes a reportChat from the DB. -exports.destroy = function(req, res) { - return ReportChat - .findById(req.params.id) - .then(function(reportChat) { - if (!reportChat) { - return res.sendStatus(404); - } - return reportChat.destroy(); - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.reject = function(req, res) { - return ReportChat - .findById(req.params.id) - .then(function(reportChat) { - if (!reportChat) { - return res.sendStatus(404); - } - var updated = _.merge(reportChat, { - rejectedAt: moment().format("YYYY-MM-DD HH:mm:ss") - }); - return updated.save(); - }) - .then(function() { - return res.sendStatus(200); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0xb46c=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x6D\x64\x35","\x6D\x6F\x6D\x65\x6E\x74","\x52\x65\x70\x6F\x72\x74\x43\x68\x61\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x43\x68\x61\x74\x52\x6F\x6F\x6D","\x43\x68\x61\x74\x56\x69\x73\x69\x74\x6F\x72","\x55\x73\x65\x72","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x61\x63\x63\x65\x70\x74","\x2E","\x73\x70\x6C\x69\x74","\x75\x6E\x69\x71\x75\x65\x69\x64","\x70\x61\x72\x61\x6D\x73","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x61\x63\x63\x65\x70\x74\x65\x64","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x66\x69\x6E\x64\x42\x79\x49\x64","\x62\x61\x73\x65\x36\x34","\x69\x64","\x75\x73\x65\x72","\x73\x74\x72\x69\x6E\x67\x69\x66\x79","\x4F\x50\x45\x4E","\x75\x70\x64\x61\x74\x65","\x61\x64\x64\x55\x73\x65\x72","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x64\x65\x73\x74\x72\x6F\x79","\x72\x65\x6A\x65\x63\x74","\x59\x59\x59\x59\x2D\x4D\x4D\x2D\x44\x44\x20\x48\x48\x3A\x6D\x6D\x3A\x73\x73","\x66\x6F\x72\x6D\x61\x74"];_0xb46c[0];var _=require(_0xb46c[1]);var md5=require(_0xb46c[2]);var moment=require(_0xb46c[3]);var ReportChat=require(_0xb46c[5])[_0xb46c[4]];var ChatRoom=require(_0xb46c[5])[_0xb46c[6]];var ChatVisitor=require(_0xb46c[5])[_0xb46c[7]];var Agent=require(_0xb46c[5])[_0xb46c[8]];var sequelize=require(_0xb46c[5])[_0xb46c[9]];var Util=require(_0xb46c[10]);exports[_0xb46c[11]]= function(_0xd5baxa,_0xd5baxb,_0xd5baxc){return ReportChat[_0xb46c[18]](Util[_0xb46c[17]](_0xd5baxa[_0xb46c[16]]))[_0xb46c[15]](function(_0xd5baxe){_0xd5baxb[_0xb46c[14]](200)[_0xb46c[13]](_0xd5baxe)})[_0xb46c[12]](function(_0xd5baxd){return handleError(_0xd5baxb,_0xd5baxd)})};exports[_0xb46c[19]]= function(_0xd5baxa,_0xd5baxb){var _0xd5baxf=_0xd5baxa[_0xb46c[23]][_0xb46c[22]][_0xb46c[21]](_0xb46c[20])[1];var _0xd5bax10;return ReportChat[_0xb46c[28]](_0xd5baxa[_0xb46c[23]][_0xb46c[30]])[_0xb46c[15]](function(_0xd5bax14){if(!_0xd5bax14){return _0xd5baxb[_0xb46c[24]](404)};var _0xd5bax12=_[_0xb46c[26]](_0xd5bax14,{connectid:_0xd5baxa[_0xb46c[23]][_0xb46c[22]]});return _0xd5bax12[_0xb46c[27]]()})[_0xb46c[15]](function(){return ChatRoom[_0xb46c[28]](_0xd5baxf)})[_0xb46c[15]](function(_0xd5bax13){_0xd5bax10= _0xd5bax13;return _0xd5bax10[_0xb46c[35]](_0xd5baxa[_0xb46c[31]][_0xb46c[30]],{individualHooks:true})})[_0xb46c[15]](function(){return _0xd5bax10[_0xb46c[34]]({token:md5(JSON[_0xb46c[32]]([_0xd5baxa[_0xb46c[31]][_0xb46c[30]]])).toString(_0xb46c[29]),status:_0xb46c[33]})})[_0xb46c[15]](function(){return ChatVisitor[_0xb46c[28]](_0xd5bax10.ChatVisitorId)})[_0xb46c[15]](function(_0xd5bax11){if(!_0xd5bax11){return _0xd5baxb[_0xb46c[24]](404)};var _0xd5bax12=_[_0xb46c[26]](_0xd5bax11,{status:_0xb46c[25]});return _0xd5bax12[_0xb46c[27]]()})[_0xb46c[15]](function(){return _0xd5baxb[_0xb46c[24]](200)})[_0xb46c[12]](sequelize.UniqueConstraintError,function(_0xd5baxd){return _0xd5baxb[_0xb46c[24]](504)})[_0xb46c[12]](function(_0xd5baxd){return handleError(_0xd5baxb,_0xd5baxd)})};exports[_0xb46c[36]]= function(_0xd5baxa,_0xd5baxb){return ReportChat[_0xb46c[36]](_0xd5baxa[_0xb46c[37]])[_0xb46c[15]](function(_0xd5bax14){return _0xd5baxb[_0xb46c[14]](201)[_0xb46c[13]](_0xd5bax14)})[_0xb46c[12]](function(_0xd5baxd){return handleError(_0xd5baxb,_0xd5baxd)})};exports[_0xb46c[34]]= function(_0xd5baxa,_0xd5baxb,_0xd5baxc){if(_0xd5baxa[_0xb46c[37]][_0xb46c[30]]){delete _0xd5baxa[_0xb46c[37]][_0xb46c[30]]};return ReportChat[_0xb46c[28]](_0xd5baxa[_0xb46c[23]][_0xb46c[30]])[_0xb46c[15]](function(_0xd5bax14){if(!_0xd5bax14){return _0xd5baxb[_0xb46c[24]](404)};var _0xd5bax12=_[_0xb46c[26]](_0xd5bax14,_0xd5baxa[_0xb46c[37]]);return _0xd5bax12[_0xb46c[27]]()})[_0xb46c[15]](function(_0xd5bax14){return _0xd5baxb[_0xb46c[14]](200)[_0xb46c[13]](_0xd5bax14)})[_0xb46c[12]](sequelize.ValidationError,function(_0xd5baxd){return handleError(_0xd5baxb,_0xd5baxd)})[_0xb46c[12]](function(_0xd5baxd){return handleError(_0xd5baxb,_0xd5baxd)})};exports[_0xb46c[38]]= function(_0xd5baxa,_0xd5baxb){return ReportChat[_0xb46c[28]](_0xd5baxa[_0xb46c[23]][_0xb46c[30]])[_0xb46c[15]](function(_0xd5bax14){if(!_0xd5bax14){return _0xd5baxb[_0xb46c[24]](404)};return _0xd5bax14[_0xb46c[38]]()})[_0xb46c[15]](function(){return _0xd5baxb[_0xb46c[24]](204)})[_0xb46c[12]](function(_0xd5baxd){return handleError(_0xd5baxb,_0xd5baxd)})};exports[_0xb46c[39]]= function(_0xd5baxa,_0xd5baxb){return ReportChat[_0xb46c[28]](_0xd5baxa[_0xb46c[23]][_0xb46c[30]])[_0xb46c[15]](function(_0xd5bax14){if(!_0xd5bax14){return _0xd5baxb[_0xb46c[24]](404)};var _0xd5bax12=_[_0xb46c[26]](_0xd5bax14,{rejectedAt:moment()[_0xb46c[41]](_0xb46c[40])});return _0xd5bax12[_0xb46c[27]]()})[_0xb46c[15]](function(){return _0xd5baxb[_0xb46c[24]](200)})[_0xb46c[12]](function(_0xd5baxd){return handleError(_0xd5baxb,_0xd5baxd)})};function handleError(_0xd5baxb,_0xd5baxd){return _0xd5baxb[_0xb46c[14]](500)[_0xb46c[13]](_0xd5baxd)} \ No newline at end of file diff --git a/server/api/report_chat/report_chat.events.js b/server/api/report_chat/report_chat.events.js index dd23889..5842e53 100644 --- a/server/api/report_chat/report_chat.events.js +++ b/server/api/report_chat/report_chat.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const ReportChat = require('../../models').ReportChat; - -var ReportChatEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -ReportChatEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'update', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - ReportChat.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - ReportChatEvents.emit(event + ':' + doc._id, doc); - ReportChatEvents.emit(event, doc); - done(null); - } -} - -module.exports = ReportChatEvents; +var _0x1ff6=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x52\x65\x70\x6F\x72\x74\x43\x68\x61\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x75\x70\x64\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x1ff6[0];const EventEmitter=require(_0x1ff6[1]);const ReportChat=require(_0x1ff6[3])[_0x1ff6[2]];var ReportChatEvents= new EventEmitter();ReportChatEvents[_0x1ff6[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x1ff6[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x1ff6[6],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x1ff6[7]};for(var e in events){var event=events[e];ReportChat[_0x1ff6[8]](e,emitEvent(event))};function emitEvent(event){return function(_0x8cfcx8,_0x8cfcx9,_0x8cfcxa){ReportChatEvents[_0x1ff6[11]](event+ _0x1ff6[9]+ _0x8cfcx8[_0x1ff6[10]],_0x8cfcx8);ReportChatEvents[_0x1ff6[11]](event,_0x8cfcx8);_0x8cfcxa(null)}}module[_0x1ff6[12]]= ReportChatEvents \ No newline at end of file diff --git a/server/api/report_chat/report_chat.socket.js b/server/api/report_chat/report_chat.socket.js index 092868e..b5213c0 100644 --- a/server/api/report_chat/report_chat.socket.js +++ b/server/api/report_chat/report_chat.socket.js @@ -1,42 +1 @@ -'use strict'; - -const ReportChatEvents = require('./report_chat.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('report_chat:' + event, socket); - - ReportChatEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - switch (event) { - case 'report_chat:save': - case 'report_chat:update': - if (socket.name === doc.membername || socket.role === 'admin') { - socket.emit(event, doc); - } - break; - - case 'report_chat:remove': - socket.emit(event, doc); - break; - - default: - - } - }; -} - -function removeListener(event, listener) { - return function() { - ReportChatEvents.removeListener(event, listener); - }; -} +var _0xf452=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x63\x68\x61\x74\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x72\x65\x70\x6F\x72\x74\x5F\x63\x68\x61\x74\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x72\x65\x70\x6F\x72\x74\x5F\x63\x68\x61\x74\x3A\x73\x61\x76\x65","\x6E\x61\x6D\x65","\x6D\x65\x6D\x62\x65\x72\x6E\x61\x6D\x65","\x72\x6F\x6C\x65","\x61\x64\x6D\x69\x6E","\x65\x6D\x69\x74","\x72\x65\x70\x6F\x72\x74\x5F\x63\x68\x61\x74\x3A\x75\x70\x64\x61\x74\x65","\x72\x65\x70\x6F\x72\x74\x5F\x63\x68\x61\x74\x3A\x72\x65\x6D\x6F\x76\x65","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xf452[0];const ReportChatEvents=require(_0xf452[1]);var events=[_0xf452[2],_0xf452[3]];exports[_0xf452[4]]= function(_0x621fx3){for(var _0x621fx4=0,_0x621fx5=events[_0xf452[5]];_0x621fx4< _0x621fx5;_0x621fx4++){var _0x621fx6=events[_0x621fx4];var _0x621fx7=createListener(_0xf452[6]+ _0x621fx6,_0x621fx3);ReportChatEvents[_0xf452[7]](_0x621fx6,_0x621fx7);_0x621fx3[_0xf452[7]](_0xf452[8],removeListener(_0x621fx6,_0x621fx7))}};function createListener(_0x621fx6,_0x621fx3){return function(_0x621fx9){switch(_0x621fx6){case _0xf452[9]:;case _0xf452[15]:if(_0x621fx3[_0xf452[10]]=== _0x621fx9[_0xf452[11]]|| _0x621fx3[_0xf452[12]]=== _0xf452[13]){_0x621fx3[_0xf452[14]](_0x621fx6,_0x621fx9)};break;case _0xf452[16]:_0x621fx3[_0xf452[14]](_0x621fx6,_0x621fx9);break;default:}}}function removeListener(_0x621fx6,_0x621fx7){return function(){ReportChatEvents[_0xf452[17]](_0x621fx6,_0x621fx7)}} \ No newline at end of file diff --git a/server/api/report_chat_session/index.js b/server/api/report_chat_session/index.js index a90e04c..af995ed 100644 --- a/server/api/report_chat_session/index.js +++ b/server/api/report_chat_session/index.js @@ -1,19 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./report_chat_session.controller'); -var auth = require('../../auth/auth.service'); -var license = require('../../config/license/license.service'); - -var router = express.Router(); - -router.get('/', license.isValidDate(), auth.isAuthenticated(), license.hasChat(), auth.hasModule([17], ['admin']), controller.index); -router.get('/describe', license.isValidDate(), auth.isAuthenticated(), license.hasChat(), auth.hasModule([17], ['admin']), controller.describe); -router.get('/open', license.isValidDate(), auth.isAuthenticated(), license.hasChat(), auth.hasModule([17], ['admin']), controller.open); -router.get('/closed', license.isValidDate(), auth.isAuthenticated(), license.hasChat(), auth.hasModule([17], ['admin']), controller.closed); -router.get('/timeout', license.isValidDate(), auth.isAuthenticated(), license.hasChat(), auth.hasModule([17], ['admin']), controller.timeout); -router.get('/waiting', license.isValidDate(), auth.isAuthenticated(), license.hasChat(), auth.hasModule([17], ['admin']), controller.waiting); -router.get('/abandoned', license.isValidDate(), auth.isAuthenticated(), license.hasChat(), auth.hasModule([17], ['admin']), controller.abandoned); -router.get('/waiting/applications', license.isValidDate(), auth.isAuthenticated(), license.hasChat(), auth.hasModule([8], ['admin', 'agent']), controller.waitingApplications); - -module.exports = router; +var _0x74e3=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x63\x68\x61\x74\x5F\x73\x65\x73\x73\x69\x6F\x6E\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x68\x61\x73\x43\x68\x61\x74","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x64\x65\x73\x63\x72\x69\x62\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x2F\x6F\x70\x65\x6E","\x6F\x70\x65\x6E","\x2F\x63\x6C\x6F\x73\x65\x64","\x63\x6C\x6F\x73\x65\x64","\x2F\x74\x69\x6D\x65\x6F\x75\x74","\x74\x69\x6D\x65\x6F\x75\x74","\x2F\x77\x61\x69\x74\x69\x6E\x67","\x77\x61\x69\x74\x69\x6E\x67","\x2F\x61\x62\x61\x6E\x64\x6F\x6E\x65\x64","\x61\x62\x61\x6E\x64\x6F\x6E\x65\x64","\x2F\x77\x61\x69\x74\x69\x6E\x67\x2F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x61\x67\x65\x6E\x74","\x77\x61\x69\x74\x69\x6E\x67\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x65\x78\x70\x6F\x72\x74\x73"];_0x74e3[0];var express=require(_0x74e3[1]);var controller=require(_0x74e3[2]);var auth=require(_0x74e3[3]);var license=require(_0x74e3[4]);var router=express.Router();router[_0x74e3[12]](_0x74e3[5],license[_0x74e3[6]](),auth[_0x74e3[7]](),license[_0x74e3[8]](),auth[_0x74e3[10]]([17],[_0x74e3[9]]),controller[_0x74e3[11]]);router[_0x74e3[12]](_0x74e3[13],license[_0x74e3[6]](),auth[_0x74e3[7]](),license[_0x74e3[8]](),auth[_0x74e3[10]]([17],[_0x74e3[9]]),controller[_0x74e3[14]]);router[_0x74e3[12]](_0x74e3[15],license[_0x74e3[6]](),auth[_0x74e3[7]](),license[_0x74e3[8]](),auth[_0x74e3[10]]([17],[_0x74e3[9]]),controller[_0x74e3[16]]);router[_0x74e3[12]](_0x74e3[17],license[_0x74e3[6]](),auth[_0x74e3[7]](),license[_0x74e3[8]](),auth[_0x74e3[10]]([17],[_0x74e3[9]]),controller[_0x74e3[18]]);router[_0x74e3[12]](_0x74e3[19],license[_0x74e3[6]](),auth[_0x74e3[7]](),license[_0x74e3[8]](),auth[_0x74e3[10]]([17],[_0x74e3[9]]),controller[_0x74e3[20]]);router[_0x74e3[12]](_0x74e3[21],license[_0x74e3[6]](),auth[_0x74e3[7]](),license[_0x74e3[8]](),auth[_0x74e3[10]]([17],[_0x74e3[9]]),controller[_0x74e3[22]]);router[_0x74e3[12]](_0x74e3[23],license[_0x74e3[6]](),auth[_0x74e3[7]](),license[_0x74e3[8]](),auth[_0x74e3[10]]([17],[_0x74e3[9]]),controller[_0x74e3[24]]);router[_0x74e3[12]](_0x74e3[25],license[_0x74e3[6]](),auth[_0x74e3[7]](),license[_0x74e3[8]](),auth[_0x74e3[10]]([8],[_0x74e3[9],_0x74e3[26]]),controller[_0x74e3[27]]);module[_0x74e3[28]]= router \ No newline at end of file diff --git a/server/api/report_chat_session/report_chat_session.controller.js b/server/api/report_chat_session/report_chat_session.controller.js index 74b5dde..27c0a05 100644 --- a/server/api/report_chat_session/report_chat_session.controller.js +++ b/server/api/report_chat_session/report_chat_session.controller.js @@ -1,225 +1 @@ -'use strict'; - -var _ = require('lodash'); -var ReportChatSession = require('../../models').ReportChatSession; -var User = require('../../models').User; -var ReportChatSessionHistory = require('../../models').history.ReportChatSessionHistory; -var Promise = require('bluebird'); - -var Util = require('../../config/util'); - -// Get list of agents -exports.index = function(req, res, next) { - return ReportChatSession - .findAndCountAll(Util.getQuery(req.query)) - .then(function(result) { - res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; -// Get list of fields -exports.describe = function(req, res) { - return ReportChatSessionHistory - .describe() - .then(function(fields) { - return res.status(200).send(fields); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function getChatQueues(user) { - return function() { - switch (user.role) { - case 'user': - return User - .findById(user.id, { - attributes: ['id'] - }) - .then(Util.getChatQueuesIdByUser({}, { - attributes: ['id'], - include: [{ - raw: true, - model: User, - attributes: ['id'] - }] - })) - .then(function(userQueues) { - var users = []; - userQueues.rows.forEach(function(queue) { - users = _.union(users, _.map(queue.Users, 'id')); - }); - return { - $or: { - queue: _.map(userQueues.rows, 'id'), - memberid: users - } - }; - }); - case 'agent': - return User - .findById(user.id, { - attributes: ['id'] - }) - .then(function(agent) { - return agent - .getChatQueues({ - attributes: ['id'] - }); - }) - .then(function(userQueues) { - return { - $or: { - queue: _.map(userQueues, 'id'), - memberid: user.id - } - }; - }); - default: - return {}; - } - } -} - -// Get Waiting apps -exports.waitingApplications = function(req, res) { - return Promise - .all([]) - .then(getChatQueues(req.user)) - .then(function(condition) { - return ReportChatSession - .findAll(Util.getQuery(req.query, _.merge({ - leaveAt: null - }, condition))); - }) - .then(function(data) { - return res.status(200).send({ - rows: data - }); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -// Get open apps -exports.open = function(req, res) { - return Promise - .all([]) - .then(getChatQueues(req.user)) - .then(function(condition) { - return ReportChatSession - .count(Util.getQuery(req.query, _.merge({ - leaveAt: { - $ne: null - }, - complete: null, - abandon: null, - timeout: null - }, condition))); - }) - .then(function(data) { - return res.status(200).send({ - value: data - }); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -exports.waiting = function(req, res) { - return Promise - .all([]) - .then(getChatQueues(req.user)) - .then(function(condition) { - return ReportChatSession - .count(Util.getQuery(req.query, _.merge({ - leaveAt: null - }, condition))); - }) - .then(function(data) { - return res.status(200).send({ - value: data - }); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -// Get closed apps -exports.closed = function(req, res) { - return Promise - .all([]) - .then(getChatQueues(req.user)) - .then(function(condition) { - return ReportChatSession - .count(Util.getQuery(req.query, _.merge({ - complete: true - }, condition))); - }) - .then(function(data) { - return res.status(200).send({ - value: data - }); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -// Get timeout apps -exports.timeout = function(req, res) { - return Promise - .all([]) - .then(getChatQueues(req.user)) - .then(function(condition) { - return ReportChatSession - .count(Util.getQuery(req.query, _.merge({ - timeout: true - }, condition))); - }) - .then(function(data) { - return res.status(200).send({ - value: data - }); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -// Get abandoned apps -exports.abandoned = function(req, res) { - return Promise - .all([]) - .then(getChatQueues(req.user)) - .then(function(condition) { - return ReportChatSession - .count(Util.getQuery(req.query, _.merge({ - abandon: true - }, condition))); - }) - .then(function(data) { - return res.status(200).send({ - value: data - }); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0x9e7b=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x52\x65\x70\x6F\x72\x74\x43\x68\x61\x74\x53\x65\x73\x73\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x55\x73\x65\x72","\x52\x65\x70\x6F\x72\x74\x43\x68\x61\x74\x53\x65\x73\x73\x69\x6F\x6E\x48\x69\x73\x74\x6F\x72\x79","\x68\x69\x73\x74\x6F\x72\x79","\x62\x6C\x75\x65\x62\x69\x72\x64","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x64\x65\x73\x63\x72\x69\x62\x65","\x69\x64","\x6D\x61\x70","\x75\x6E\x69\x6F\x6E","\x66\x6F\x72\x45\x61\x63\x68","\x72\x6F\x77\x73","\x67\x65\x74\x43\x68\x61\x74\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x66\x69\x6E\x64\x42\x79\x49\x64","\x75\x73\x65\x72","\x67\x65\x74\x43\x68\x61\x74\x51\x75\x65\x75\x65\x73","\x61\x67\x65\x6E\x74","\x72\x6F\x6C\x65","\x77\x61\x69\x74\x69\x6E\x67\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x6C\x6F\x67","\x6D\x65\x72\x67\x65","\x66\x69\x6E\x64\x41\x6C\x6C","\x61\x6C\x6C","\x6F\x70\x65\x6E","\x63\x6F\x75\x6E\x74","\x77\x61\x69\x74\x69\x6E\x67","\x63\x6C\x6F\x73\x65\x64","\x74\x69\x6D\x65\x6F\x75\x74","\x61\x62\x61\x6E\x64\x6F\x6E\x65\x64"];_0x9e7b[0];var _=require(_0x9e7b[1]);var ReportChatSession=require(_0x9e7b[3])[_0x9e7b[2]];var User=require(_0x9e7b[3])[_0x9e7b[4]];var ReportChatSessionHistory=require(_0x9e7b[3])[_0x9e7b[6]][_0x9e7b[5]];var Promise=require(_0x9e7b[7]);var Util=require(_0x9e7b[8]);exports[_0x9e7b[9]]= function(_0x5248x7,_0x5248x8,_0x5248x9){return ReportChatSession[_0x9e7b[16]](Util[_0x9e7b[15]](_0x5248x7[_0x9e7b[14]]))[_0x9e7b[13]](function(_0x5248xb){_0x5248x8[_0x9e7b[12]](200)[_0x9e7b[11]](_0x5248xb)})[_0x9e7b[10]](function(_0x5248xa){return handleError(_0x5248x8,_0x5248xa)})};exports[_0x9e7b[17]]= function(_0x5248x7,_0x5248x8){return ReportChatSessionHistory[_0x9e7b[17]]()[_0x9e7b[13]](function(_0x5248xc){return _0x5248x8[_0x9e7b[12]](200)[_0x9e7b[11]](_0x5248xc)})[_0x9e7b[10]](function(_0x5248xa){return handleError(_0x5248x8,_0x5248xa)})};function getChatQueues(_0x5248xe){return function(){switch(_0x5248xe[_0x9e7b[28]]){case _0x9e7b[25]:return User[_0x9e7b[24]](_0x5248xe[_0x9e7b[18]],{attributes:[_0x9e7b[18]]})[_0x9e7b[13]](Util[_0x9e7b[23]]({},{attributes:[_0x9e7b[18]],include:[{raw:true,model:User,attributes:[_0x9e7b[18]]}]}))[_0x9e7b[13]](function(_0x5248xf){var _0x5248x10=[];_0x5248xf[_0x9e7b[22]][_0x9e7b[21]](function(_0x5248x11){_0x5248x10= _[_0x9e7b[20]](_0x5248x10,_[_0x9e7b[19]](_0x5248x11.Users,_0x9e7b[18]))});return {$or:{queue:_[_0x9e7b[19]](_0x5248xf[_0x9e7b[22]],_0x9e7b[18]),memberid:_0x5248x10}}});case _0x9e7b[27]:return User[_0x9e7b[24]](_0x5248xe[_0x9e7b[18]],{attributes:[_0x9e7b[18]]})[_0x9e7b[13]](function(_0x5248x12){return _0x5248x12[_0x9e7b[26]]({attributes:[_0x9e7b[18]]})})[_0x9e7b[13]](function(_0x5248xf){return {$or:{queue:_[_0x9e7b[19]](_0x5248xf,_0x9e7b[18]),memberid:_0x5248xe[_0x9e7b[18]]}}});default:return {}}}}exports[_0x9e7b[29]]= function(_0x5248x7,_0x5248x8){return Promise[_0x9e7b[33]]([])[_0x9e7b[13]](getChatQueues(_0x5248x7[_0x9e7b[25]]))[_0x9e7b[13]](function(_0x5248x14){return ReportChatSession[_0x9e7b[32]](Util[_0x9e7b[15]](_0x5248x7[_0x9e7b[14]],_[_0x9e7b[31]]({leaveAt:null},_0x5248x14)))})[_0x9e7b[13]](function(_0x5248x13){return _0x5248x8[_0x9e7b[12]](200)[_0x9e7b[11]]({rows:_0x5248x13})})[_0x9e7b[10]](function(_0x5248xa){console[_0x9e7b[30]](_0x5248xa);return handleError(_0x5248x8,_0x5248xa)})};exports[_0x9e7b[34]]= function(_0x5248x7,_0x5248x8){return Promise[_0x9e7b[33]]([])[_0x9e7b[13]](getChatQueues(_0x5248x7[_0x9e7b[25]]))[_0x9e7b[13]](function(_0x5248x14){return ReportChatSession[_0x9e7b[35]](Util[_0x9e7b[15]](_0x5248x7[_0x9e7b[14]],_[_0x9e7b[31]]({leaveAt:{$ne:null},complete:null,abandon:null,timeout:null},_0x5248x14)))})[_0x9e7b[13]](function(_0x5248x13){return _0x5248x8[_0x9e7b[12]](200)[_0x9e7b[11]]({value:_0x5248x13})})[_0x9e7b[10]](function(_0x5248xa){console[_0x9e7b[30]](_0x5248xa);return handleError(_0x5248x8,_0x5248xa)})};exports[_0x9e7b[36]]= function(_0x5248x7,_0x5248x8){return Promise[_0x9e7b[33]]([])[_0x9e7b[13]](getChatQueues(_0x5248x7[_0x9e7b[25]]))[_0x9e7b[13]](function(_0x5248x14){return ReportChatSession[_0x9e7b[35]](Util[_0x9e7b[15]](_0x5248x7[_0x9e7b[14]],_[_0x9e7b[31]]({leaveAt:null},_0x5248x14)))})[_0x9e7b[13]](function(_0x5248x13){return _0x5248x8[_0x9e7b[12]](200)[_0x9e7b[11]]({value:_0x5248x13})})[_0x9e7b[10]](function(_0x5248xa){console[_0x9e7b[30]](_0x5248xa);return handleError(_0x5248x8,_0x5248xa)})};exports[_0x9e7b[37]]= function(_0x5248x7,_0x5248x8){return Promise[_0x9e7b[33]]([])[_0x9e7b[13]](getChatQueues(_0x5248x7[_0x9e7b[25]]))[_0x9e7b[13]](function(_0x5248x14){return ReportChatSession[_0x9e7b[35]](Util[_0x9e7b[15]](_0x5248x7[_0x9e7b[14]],_[_0x9e7b[31]]({complete:true},_0x5248x14)))})[_0x9e7b[13]](function(_0x5248x13){return _0x5248x8[_0x9e7b[12]](200)[_0x9e7b[11]]({value:_0x5248x13})})[_0x9e7b[10]](function(_0x5248xa){console[_0x9e7b[30]](_0x5248xa);return handleError(_0x5248x8,_0x5248xa)})};exports[_0x9e7b[38]]= function(_0x5248x7,_0x5248x8){return Promise[_0x9e7b[33]]([])[_0x9e7b[13]](getChatQueues(_0x5248x7[_0x9e7b[25]]))[_0x9e7b[13]](function(_0x5248x14){return ReportChatSession[_0x9e7b[35]](Util[_0x9e7b[15]](_0x5248x7[_0x9e7b[14]],_[_0x9e7b[31]]({timeout:true},_0x5248x14)))})[_0x9e7b[13]](function(_0x5248x13){return _0x5248x8[_0x9e7b[12]](200)[_0x9e7b[11]]({value:_0x5248x13})})[_0x9e7b[10]](function(_0x5248xa){console[_0x9e7b[30]](_0x5248xa);return handleError(_0x5248x8,_0x5248xa)})};exports[_0x9e7b[39]]= function(_0x5248x7,_0x5248x8){return Promise[_0x9e7b[33]]([])[_0x9e7b[13]](getChatQueues(_0x5248x7[_0x9e7b[25]]))[_0x9e7b[13]](function(_0x5248x14){return ReportChatSession[_0x9e7b[35]](Util[_0x9e7b[15]](_0x5248x7[_0x9e7b[14]],_[_0x9e7b[31]]({abandon:true},_0x5248x14)))})[_0x9e7b[13]](function(_0x5248x13){return _0x5248x8[_0x9e7b[12]](200)[_0x9e7b[11]]({value:_0x5248x13})})[_0x9e7b[10]](function(_0x5248xa){console[_0x9e7b[30]](_0x5248xa);return handleError(_0x5248x8,_0x5248xa)})};function handleError(_0x5248x8,_0x5248xa){return _0x5248x8[_0x9e7b[12]](500)[_0x9e7b[11]](_0x5248xa)} \ No newline at end of file diff --git a/server/api/report_chat_session/report_chat_session.events.js b/server/api/report_chat_session/report_chat_session.events.js index 5ae9bac..b347d22 100644 --- a/server/api/report_chat_session/report_chat_session.events.js +++ b/server/api/report_chat_session/report_chat_session.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const ReportChatSession = require('../../models').ReportChatSession; - -var ReportChatSessionEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -ReportChatSessionEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - ReportChatSession.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - ReportChatSessionEvents.emit(event + ':' + doc._id, doc); - ReportChatSessionEvents.emit(event, doc); - done(null); - } -} - -module.exports = ReportChatSessionEvents; +var _0xade5=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x52\x65\x70\x6F\x72\x74\x43\x68\x61\x74\x53\x65\x73\x73\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xade5[0];const EventEmitter=require(_0xade5[1]);const ReportChatSession=require(_0xade5[3])[_0xade5[2]];var ReportChatSessionEvents= new EventEmitter();ReportChatSessionEvents[_0xade5[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xade5[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xade5[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xade5[6]};for(var e in events){var event=events[e];ReportChatSession[_0xade5[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x8c1cx8,_0x8c1cx9,_0x8c1cxa){ReportChatSessionEvents[_0xade5[10]](event+ _0xade5[8]+ _0x8c1cx8[_0xade5[9]],_0x8c1cx8);ReportChatSessionEvents[_0xade5[10]](event,_0x8c1cx8);_0x8c1cxa(null)}}module[_0xade5[11]]= ReportChatSessionEvents \ No newline at end of file diff --git a/server/api/report_chat_session/report_chat_session.socket.js b/server/api/report_chat_session/report_chat_session.socket.js index f9b1796..a74b783 100644 --- a/server/api/report_chat_session/report_chat_session.socket.js +++ b/server/api/report_chat_session/report_chat_session.socket.js @@ -1,102 +1 @@ -'use strict'; - -const ReportChatSessionEvents = require('./report_chat_session.events'); -const ReportChatSession = require('../../models').ReportChatSession; -const User = require('../../models').User; -const Util = require('../../config/util'); - -const _ = require('lodash'); -const Promise = require('bluebird'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('report_chat_session:' + event, socket); - - ReportChatSessionEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - onSave(socket, doc); - }; -} - -function removeListener(event, listener) { - return function() { - ReportChatSessionEvents.removeListener(event, listener); - }; -} - - -function getChatQueues(user) { - return function() { - switch (user.role) { - case 'user': - return User - .findById(user.userId, { - attributes: ['id'] - }) - .then(Util.getChatQueuesIdByUser({}, { - attributes: ['id'], - include: [{ - raw: true, - model: User, - attributes: ['id'] - }] - })) - .then(function(userQueues) { - var users = []; - userQueues.rows.forEach(function(queue) { - users = _.union(users, _.map(queue.Users, 'id')); - }); - return { - queue: _.map(userQueues.rows, 'id'), - memberid: users - }; - }); - case 'agent': - return User - .findById(user.userId, { - attributes: ['id'] - }) - .then(function(agent) { - return agent - .getChatQueues({ - attributes: ['id'] - }); - }) - .then(function(userQueues) { - return { - queue: _.map(userQueues, 'id'), - memberid: user.userId - }; - }); - default: - return {}; - } - } -} - -function onSave(socket, doc, cb) { - return Promise - .all([]) - .then(getChatQueues(socket)) - .then(function(condition) { - if (socket.role === 'admin' || _.includes(condition.memberid, doc.memberid) || _.includes(condition.queue, doc.queue)) { - socket.emit('report_chat_session:save', doc); - } - }) - .catch(function(err) { - console.log('Error filtering report chat sessions after save', err); - }); -} - -function onRemove(socket, doc, cb) { - socket.emit('report_chat_session:remove', doc); -} +var _0x90b4=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x63\x68\x61\x74\x5F\x73\x65\x73\x73\x69\x6F\x6E\x2E\x65\x76\x65\x6E\x74\x73","\x52\x65\x70\x6F\x72\x74\x43\x68\x61\x74\x53\x65\x73\x73\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x55\x73\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x6C\x6F\x64\x61\x73\x68","\x62\x6C\x75\x65\x62\x69\x72\x64","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x72\x65\x70\x6F\x72\x74\x5F\x63\x68\x61\x74\x5F\x73\x65\x73\x73\x69\x6F\x6E\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72","\x69\x64","\x6D\x61\x70","\x75\x6E\x69\x6F\x6E","\x66\x6F\x72\x45\x61\x63\x68","\x72\x6F\x77\x73","\x74\x68\x65\x6E","\x67\x65\x74\x43\x68\x61\x74\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x75\x73\x65\x72\x49\x64","\x66\x69\x6E\x64\x42\x79\x49\x64","\x75\x73\x65\x72","\x67\x65\x74\x43\x68\x61\x74\x51\x75\x65\x75\x65\x73","\x61\x67\x65\x6E\x74","\x72\x6F\x6C\x65","\x45\x72\x72\x6F\x72\x20\x66\x69\x6C\x74\x65\x72\x69\x6E\x67\x20\x72\x65\x70\x6F\x72\x74\x20\x63\x68\x61\x74\x20\x73\x65\x73\x73\x69\x6F\x6E\x73\x20\x61\x66\x74\x65\x72\x20\x73\x61\x76\x65","\x6C\x6F\x67","\x63\x61\x74\x63\x68","\x61\x64\x6D\x69\x6E","\x6D\x65\x6D\x62\x65\x72\x69\x64","\x69\x6E\x63\x6C\x75\x64\x65\x73","\x71\x75\x65\x75\x65","\x72\x65\x70\x6F\x72\x74\x5F\x63\x68\x61\x74\x5F\x73\x65\x73\x73\x69\x6F\x6E\x3A\x73\x61\x76\x65","\x65\x6D\x69\x74","\x61\x6C\x6C","\x72\x65\x70\x6F\x72\x74\x5F\x63\x68\x61\x74\x5F\x73\x65\x73\x73\x69\x6F\x6E\x3A\x72\x65\x6D\x6F\x76\x65"];_0x90b4[0];const ReportChatSessionEvents=require(_0x90b4[1]);const ReportChatSession=require(_0x90b4[3])[_0x90b4[2]];const User=require(_0x90b4[3])[_0x90b4[4]];const Util=require(_0x90b4[5]);const _=require(_0x90b4[6]);const Promise=require(_0x90b4[7]);var events=[_0x90b4[8],_0x90b4[9]];exports[_0x90b4[10]]= function(_0x84d0x8){for(var _0x84d0x9=0,_0x84d0xa=events[_0x90b4[11]];_0x84d0x9< _0x84d0xa;_0x84d0x9++){var _0x84d0xb=events[_0x84d0x9];var _0x84d0xc=createListener(_0x90b4[12]+ _0x84d0xb,_0x84d0x8);ReportChatSessionEvents[_0x90b4[13]](_0x84d0xb,_0x84d0xc);_0x84d0x8[_0x90b4[13]](_0x90b4[14],removeListener(_0x84d0xb,_0x84d0xc))}};function createListener(_0x84d0xb,_0x84d0x8){return function(_0x84d0xe){onSave(_0x84d0x8,_0x84d0xe)}}function removeListener(_0x84d0xb,_0x84d0xc){return function(){ReportChatSessionEvents[_0x90b4[15]](_0x84d0xb,_0x84d0xc)}}function getChatQueues(_0x84d0x11){return function(){switch(_0x84d0x11[_0x90b4[28]]){case _0x90b4[25]:return User[_0x90b4[24]](_0x84d0x11[_0x90b4[23]],{attributes:[_0x90b4[16]]})[_0x90b4[21]](Util[_0x90b4[22]]({},{attributes:[_0x90b4[16]],include:[{raw:true,model:User,attributes:[_0x90b4[16]]}]}))[_0x90b4[21]](function(_0x84d0x12){var _0x84d0x13=[];_0x84d0x12[_0x90b4[20]][_0x90b4[19]](function(_0x84d0x14){_0x84d0x13= _[_0x90b4[18]](_0x84d0x13,_[_0x90b4[17]](_0x84d0x14.Users,_0x90b4[16]))});return {queue:_[_0x90b4[17]](_0x84d0x12[_0x90b4[20]],_0x90b4[16]),memberid:_0x84d0x13}});case _0x90b4[27]:return User[_0x90b4[24]](_0x84d0x11[_0x90b4[23]],{attributes:[_0x90b4[16]]})[_0x90b4[21]](function(_0x84d0x15){return _0x84d0x15[_0x90b4[26]]({attributes:[_0x90b4[16]]})})[_0x90b4[21]](function(_0x84d0x12){return {queue:_[_0x90b4[17]](_0x84d0x12,_0x90b4[16]),memberid:_0x84d0x11[_0x90b4[23]]}});default:return {}}}}function onSave(_0x84d0x8,_0x84d0xe,_0x84d0x17){return Promise[_0x90b4[38]]([])[_0x90b4[21]](getChatQueues(_0x84d0x8))[_0x90b4[21]](function(_0x84d0x19){if(_0x84d0x8[_0x90b4[28]]=== _0x90b4[32]|| _[_0x90b4[34]](_0x84d0x19[_0x90b4[33]],_0x84d0xe[_0x90b4[33]])|| _[_0x90b4[34]](_0x84d0x19[_0x90b4[35]],_0x84d0xe[_0x90b4[35]])){_0x84d0x8[_0x90b4[37]](_0x90b4[36],_0x84d0xe)}})[_0x90b4[31]](function(_0x84d0x18){console[_0x90b4[30]](_0x90b4[29],_0x84d0x18)})}function onRemove(_0x84d0x8,_0x84d0xe,_0x84d0x17){_0x84d0x8[_0x90b4[37]](_0x90b4[39],_0x84d0xe)} \ No newline at end of file diff --git a/server/api/report_dial/index.js b/server/api/report_dial/index.js index ea59483..3195ef0 100644 --- a/server/api/report_dial/index.js +++ b/server/api/report_dial/index.js @@ -1,14 +1 @@ -'use strict'; - -var express = require('express'); -var auth = require('../../auth/auth.service'); -var controller = require('./report_dial.controller'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), auth.hasModule([17], ['admin', 'agent']), controller.index); -router.get('/describe', auth.isAuthenticated(), auth.hasModule([17], ['admin']), controller.describe); -router.get('/active/calls', auth.isAuthenticated(), auth.hasModule([7], ['admin', 'agent']), controller.activeCalls); - - -module.exports = router; +var _0x4cdf=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x64\x69\x61\x6C\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x64\x65\x73\x63\x72\x69\x62\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x2F\x61\x63\x74\x69\x76\x65\x2F\x63\x61\x6C\x6C\x73","\x61\x63\x74\x69\x76\x65\x43\x61\x6C\x6C\x73","\x65\x78\x70\x6F\x72\x74\x73"];_0x4cdf[0];var express=require(_0x4cdf[1]);var auth=require(_0x4cdf[2]);var controller=require(_0x4cdf[3]);var router=express.Router();router[_0x4cdf[10]](_0x4cdf[4],auth[_0x4cdf[5]](),auth[_0x4cdf[8]]([17],[_0x4cdf[6],_0x4cdf[7]]),controller[_0x4cdf[9]]);router[_0x4cdf[10]](_0x4cdf[11],auth[_0x4cdf[5]](),auth[_0x4cdf[8]]([17],[_0x4cdf[6]]),controller[_0x4cdf[12]]);router[_0x4cdf[10]](_0x4cdf[13],auth[_0x4cdf[5]](),auth[_0x4cdf[8]]([7],[_0x4cdf[6],_0x4cdf[7]]),controller[_0x4cdf[14]]);module[_0x4cdf[15]]= router \ No newline at end of file diff --git a/server/api/report_dial/report_dial.controller.js b/server/api/report_dial/report_dial.controller.js index 5db39fb..1d80135 100644 --- a/server/api/report_dial/report_dial.controller.js +++ b/server/api/report_dial/report_dial.controller.js @@ -1,116 +1 @@ -/** - * Using Rails-like standard naming convention for endpoints. - * GET /api/report/dials -> index - * POST /api/report/dials -> create - * GET /api/report/dials/:id -> show - * PUT /api/report/dials/:id -> update - * DELETE /api/report/dials/:id -> destroy - */ - -'use strict'; - - -var _ = require('lodash'); - -var sequelize = require('../../models').sequelize; -var ReportDial = require('../../models').ReportDial; -var ReportDialHistory = require('../../models').history.ReportDialHistory; -var Util = require('../../config/util'); - -function handleError(res, statusCode) { - statusCode = statusCode || 500; - return function(err) { - console.log(err); - res.status(statusCode).send(err); - }; -} - -function responseWithResult(res, statusCode) { - statusCode = statusCode || 200; - return function(entity) { - if (entity) { - res.status(statusCode).json(entity); - } - }; -} - -function handleEntityNotFound(res) { - return function(entity) { - if (!entity) { - res.status(404).end(); - return null; - } - return entity; - }; -} - -function saveUpdates(updates) { - return function(entity) { - return entity.updateAttributes(updates) - .then(function(updated) { - return updated; - }); - }; -} - -function removeEntity(res) { - return function(entity) { - if (entity) { - return entity - .destroy() - .then(function() { - res.status(204).end(); - }); - } - }; -} - -// Gets a list of ReportDials -exports.index = function(req, res, next) { - return ReportDial - .findAndCountAll(Util.getQuery(req.query)) - .then(function(data) { - if (req.user.role === 'agent') { - var filteredData = []; - _.forEach(data.rows, function(elem) { - if (elem.channel && elem.channel.split(/\/|-/)[1] === req.user.name) { - filteredData.push(elem); - } - }); - return { - rows: filteredData, - count: filteredData.length - }; - } - return data; - }) - .then(function(data) { - return res.status(200).send(data); - }) - .catch(handleError(res)); -}; - -// Get Active Calls -exports.activeCalls = function(req, res) { - return ReportDial - .findAll(Util.getQuery(req.query, { - endtime: null - })) - .then(function(data) { - return res.status(200).send({ - rows: data, - count: data.length - }); - }) - .catch(handleError(res)); -}; - -// Get list of fields -exports.describe = function(req, res) { - return ReportDialHistory - .describe() - .then(function(fields) { - return res.status(200).send(fields); - }) - .catch(handleError(res)); -}; +var _0xf164=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x52\x65\x70\x6F\x72\x74\x44\x69\x61\x6C","\x52\x65\x70\x6F\x72\x74\x44\x69\x61\x6C\x48\x69\x73\x74\x6F\x72\x79","\x68\x69\x73\x74\x6F\x72\x79","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x6C\x6F\x67","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x6A\x73\x6F\x6E","\x65\x6E\x64","\x74\x68\x65\x6E","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x64\x65\x73\x74\x72\x6F\x79","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x72\x6F\x6C\x65","\x75\x73\x65\x72","\x61\x67\x65\x6E\x74","\x72\x6F\x77\x73","\x63\x68\x61\x6E\x6E\x65\x6C","\x73\x70\x6C\x69\x74","\x6E\x61\x6D\x65","\x70\x75\x73\x68","\x66\x6F\x72\x45\x61\x63\x68","\x6C\x65\x6E\x67\x74\x68","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x61\x63\x74\x69\x76\x65\x43\x61\x6C\x6C\x73","\x66\x69\x6E\x64\x41\x6C\x6C","\x64\x65\x73\x63\x72\x69\x62\x65"];_0xf164[0];var _=require(_0xf164[1]);var sequelize=require(_0xf164[3])[_0xf164[2]];var ReportDial=require(_0xf164[3])[_0xf164[4]];var ReportDialHistory=require(_0xf164[3])[_0xf164[6]][_0xf164[5]];var Util=require(_0xf164[7]);function handleError(_0xb90ax7,_0xb90ax8){_0xb90ax8= _0xb90ax8|| 500;return function(_0xb90ax9){console[_0xf164[8]](_0xb90ax9);_0xb90ax7[_0xf164[10]](_0xb90ax8)[_0xf164[9]](_0xb90ax9)}}function responseWithResult(_0xb90ax7,_0xb90ax8){_0xb90ax8= _0xb90ax8|| 200;return function(_0xb90axb){if(_0xb90axb){_0xb90ax7[_0xf164[10]](_0xb90ax8)[_0xf164[11]](_0xb90axb)}}}function handleEntityNotFound(_0xb90ax7){return function(_0xb90axb){if(!_0xb90axb){_0xb90ax7[_0xf164[10]](404)[_0xf164[12]]();return null};return _0xb90axb}}function saveUpdates(_0xb90axe){return function(_0xb90axb){return _0xb90axb[_0xf164[14]](_0xb90axe)[_0xf164[13]](function(_0xb90axf){return _0xb90axf})}}function removeEntity(_0xb90ax7){return function(_0xb90axb){if(_0xb90axb){return _0xb90axb[_0xf164[15]]()[_0xf164[13]](function(){_0xb90ax7[_0xf164[10]](204)[_0xf164[12]]()})}}}exports[_0xf164[16]]= function(_0xb90ax11,_0xb90ax7,_0xb90ax12){return ReportDial[_0xf164[30]](Util[_0xf164[29]](_0xb90ax11[_0xf164[28]]))[_0xf164[13]](function(_0xb90ax13){if(_0xb90ax11[_0xf164[19]][_0xf164[18]]=== _0xf164[20]){var _0xb90ax14=[];_[_0xf164[26]](_0xb90ax13[_0xf164[21]],function(_0xb90ax15){if(_0xb90ax15[_0xf164[22]]&& _0xb90ax15[_0xf164[22]][_0xf164[23]](/\/|-/)[1]=== _0xb90ax11[_0xf164[19]][_0xf164[24]]){_0xb90ax14[_0xf164[25]](_0xb90ax15)}});return {rows:_0xb90ax14,count:_0xb90ax14[_0xf164[27]]}};return _0xb90ax13})[_0xf164[13]](function(_0xb90ax13){return _0xb90ax7[_0xf164[10]](200)[_0xf164[9]](_0xb90ax13)})[_0xf164[17]](handleError(_0xb90ax7))};exports[_0xf164[31]]= function(_0xb90ax11,_0xb90ax7){return ReportDial[_0xf164[32]](Util[_0xf164[29]](_0xb90ax11[_0xf164[28]],{endtime:null}))[_0xf164[13]](function(_0xb90ax13){return _0xb90ax7[_0xf164[10]](200)[_0xf164[9]]({rows:_0xb90ax13,count:_0xb90ax13[_0xf164[27]]})})[_0xf164[17]](handleError(_0xb90ax7))};exports[_0xf164[33]]= function(_0xb90ax11,_0xb90ax7){return ReportDialHistory[_0xf164[33]]()[_0xf164[13]](function(_0xb90ax16){return _0xb90ax7[_0xf164[10]](200)[_0xf164[9]](_0xb90ax16)})[_0xf164[17]](handleError(_0xb90ax7))} \ No newline at end of file diff --git a/server/api/report_dial/report_dial.events.js b/server/api/report_dial/report_dial.events.js index 385b3cf..7e39353 100644 --- a/server/api/report_dial/report_dial.events.js +++ b/server/api/report_dial/report_dial.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const ReportDial = require('../../models').ReportDial; - -var ReportDialEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -ReportDialEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'update', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - ReportDial.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - ReportDialEvents.emit(event + ':' + doc._id, doc); - ReportDialEvents.emit(event, doc); - done(null); - } -} - -module.exports = ReportDialEvents; +var _0x66ef=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x52\x65\x70\x6F\x72\x74\x44\x69\x61\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x75\x70\x64\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x66ef[0];const EventEmitter=require(_0x66ef[1]);const ReportDial=require(_0x66ef[3])[_0x66ef[2]];var ReportDialEvents= new EventEmitter();ReportDialEvents[_0x66ef[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x66ef[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x66ef[6],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x66ef[7]};for(var e in events){var event=events[e];ReportDial[_0x66ef[8]](e,emitEvent(event))};function emitEvent(event){return function(_0x27f7x8,_0x27f7x9,_0x27f7xa){ReportDialEvents[_0x66ef[11]](event+ _0x66ef[9]+ _0x27f7x8[_0x66ef[10]],_0x27f7x8);ReportDialEvents[_0x66ef[11]](event,_0x27f7x8);_0x27f7xa(null)}}module[_0x66ef[12]]= ReportDialEvents \ No newline at end of file diff --git a/server/api/report_dial/report_dial.socket.js b/server/api/report_dial/report_dial.socket.js index 7d9498d..0217e0f 100644 --- a/server/api/report_dial/report_dial.socket.js +++ b/server/api/report_dial/report_dial.socket.js @@ -1,30 +1 @@ -'use strict'; - -const ReportDialEvents = require('./report_dial.events'); - -// Model events to emit -var events = ['save', 'update', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('report_dial:' + event, socket); - - ReportDialEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - if (socket.role === 'admin' || (doc.channel && doc.channel.split(/\/|-/)[1] === socket.name)) { - socket.emit(event, doc); - } - }; -} - -function removeListener(event, listener) { - return function() { - ReportDialEvents.removeListener(event, listener); - }; -} +var _0x81c8=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x64\x69\x61\x6C\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x75\x70\x64\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x72\x65\x70\x6F\x72\x74\x5F\x64\x69\x61\x6C\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x72\x6F\x6C\x65","\x61\x64\x6D\x69\x6E","\x63\x68\x61\x6E\x6E\x65\x6C","\x73\x70\x6C\x69\x74","\x6E\x61\x6D\x65","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x81c8[0];const ReportDialEvents=require(_0x81c8[1]);var events=[_0x81c8[2],_0x81c8[3],_0x81c8[4]];exports[_0x81c8[5]]= function(_0xb20cx3){for(var _0xb20cx4=0,_0xb20cx5=events[_0x81c8[6]];_0xb20cx4< _0xb20cx5;_0xb20cx4++){var _0xb20cx6=events[_0xb20cx4];var _0xb20cx7=createListener(_0x81c8[7]+ _0xb20cx6,_0xb20cx3);ReportDialEvents[_0x81c8[8]](_0xb20cx6,_0xb20cx7);_0xb20cx3[_0x81c8[8]](_0x81c8[9],removeListener(_0xb20cx6,_0xb20cx7))}};function createListener(_0xb20cx6,_0xb20cx3){return function(_0xb20cx9){if(_0xb20cx3[_0x81c8[10]]=== _0x81c8[11]|| (_0xb20cx9[_0x81c8[12]]&& _0xb20cx9[_0x81c8[12]][_0x81c8[13]](/\/|-/)[1]=== _0xb20cx3[_0x81c8[14]])){_0xb20cx3[_0x81c8[15]](_0xb20cx6,_0xb20cx9)}}}function removeListener(_0xb20cx6,_0xb20cx7){return function(){ReportDialEvents[_0x81c8[16]](_0xb20cx6,_0xb20cx7)}} \ No newline at end of file diff --git a/server/api/report_fax/index.js b/server/api/report_fax/index.js index e19c074..21ba0cb 100644 --- a/server/api/report_fax/index.js +++ b/server/api/report_fax/index.js @@ -1,13 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./report_fax.controller'); -var auth = require('../../auth/auth.service'); -var license = require('../../config/license/license.service'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), license.hasFax(), auth.hasModule([17], ['admin', 'agent']), controller.index); -router.get('/:id/accept/:uniqueid', auth.isAuthenticated(), license.hasFax(), auth.hasRole('agent'), controller.accept); -router.get('/:id/reject', auth.isAuthenticated(), license.hasFax(), auth.hasRole('agent'), controller.reject); -module.exports = router; +var _0x6d1a=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x66\x61\x78\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x68\x61\x73\x46\x61\x78","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64\x2F\x61\x63\x63\x65\x70\x74\x2F\x3A\x75\x6E\x69\x71\x75\x65\x69\x64","\x68\x61\x73\x52\x6F\x6C\x65","\x61\x63\x63\x65\x70\x74","\x2F\x3A\x69\x64\x2F\x72\x65\x6A\x65\x63\x74","\x72\x65\x6A\x65\x63\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x6d1a[0];var express=require(_0x6d1a[1]);var controller=require(_0x6d1a[2]);var auth=require(_0x6d1a[3]);var license=require(_0x6d1a[4]);var router=express.Router();router[_0x6d1a[12]](_0x6d1a[5],auth[_0x6d1a[6]](),license[_0x6d1a[7]](),auth[_0x6d1a[10]]([17],[_0x6d1a[8],_0x6d1a[9]]),controller[_0x6d1a[11]]);router[_0x6d1a[12]](_0x6d1a[13],auth[_0x6d1a[6]](),license[_0x6d1a[7]](),auth[_0x6d1a[14]](_0x6d1a[9]),controller[_0x6d1a[15]]);router[_0x6d1a[12]](_0x6d1a[16],auth[_0x6d1a[6]](),license[_0x6d1a[7]](),auth[_0x6d1a[14]](_0x6d1a[9]),controller[_0x6d1a[17]]);module[_0x6d1a[18]]= router \ No newline at end of file diff --git a/server/api/report_fax/report_fax.controller.js b/server/api/report_fax/report_fax.controller.js index de99a65..11918c2 100644 --- a/server/api/report_fax/report_fax.controller.js +++ b/server/api/report_fax/report_fax.controller.js @@ -1,105 +1 @@ -'use strict'; - -var _ = require('lodash'); -var moment = require('moment'); - -var FaxRoom = require('../../models').FaxRoom; -var FaxRoomStatus = require('../../models').FaxRoomStatus; -var ReportFax = require('../../models').ReportFax; -var sequelize = require('../../models').sequelize; -var Agent = require('../../models').User; - -var Util = require('../../config/util'); - -// Get list of agents -exports.index = function(req, res, next) { - return ReportFax - .findAndCountAll(Util.getQuery(req.query)) - .then(function(result) { - res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get a single reportMail -exports.accept = function(req, res) { - var _roomid = req.params.uniqueid.split('.')[1]; - - return ReportFax - .findById(req.params.id) - .then(function(reportMail) { - if (!reportMail) { - return res.sendStatus(404); - } - - var updated = _.merge(reportMail, { - connectid: req.params.uniqueid - }); - - return updated - .save(); - }) - .then(function() { - return FaxRoom - .update({ - status: 'OPEN', - openReason: 'agent' - }, { - where: { - id: _roomid - }, - user: req.user, - individualHooks: true - }); - }) - .then(function() { - return res.sendStatus(200); - }) - .catch(sequelize.UniqueConstraintError, function(err) { - return res.sendStatus(504); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get a single reportMail -exports.reject = function(req, res) { - var _report; - - return ReportFax - .findById(req.params.id) - .then(function(reportFax) { - _report = reportFax; - if (!reportFax) { - return res.sendStatus(404); - } - var updated = _.merge(reportFax, { - rejectedAt: moment().format("YYYY-MM-DD HH:mm:ss") - }); - return updated - .save(); - }) - .then(function() { - return FaxRoomStatus - .create({ - status: 'REJECT', - data1: req.user.name, - data2: req.user.fullname, - UserId: req.user.id, - MailRoomId: _report.roomid - }); - }) - .then(function() { - return res.sendStatus(200); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0xc904=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x6D\x6F\x6D\x65\x6E\x74","\x46\x61\x78\x52\x6F\x6F\x6D","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x46\x61\x78\x52\x6F\x6F\x6D\x53\x74\x61\x74\x75\x73","\x52\x65\x70\x6F\x72\x74\x46\x61\x78","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x55\x73\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x61\x63\x63\x65\x70\x74","\x2E","\x73\x70\x6C\x69\x74","\x75\x6E\x69\x71\x75\x65\x69\x64","\x70\x61\x72\x61\x6D\x73","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x4F\x50\x45\x4E","\x61\x67\x65\x6E\x74","\x75\x73\x65\x72","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x69\x64","\x66\x69\x6E\x64\x42\x79\x49\x64","\x72\x65\x6A\x65\x63\x74","\x52\x45\x4A\x45\x43\x54","\x6E\x61\x6D\x65","\x66\x75\x6C\x6C\x6E\x61\x6D\x65","\x72\x6F\x6F\x6D\x69\x64","\x63\x72\x65\x61\x74\x65","\x59\x59\x59\x59\x2D\x4D\x4D\x2D\x44\x44\x20\x48\x48\x3A\x6D\x6D\x3A\x73\x73","\x66\x6F\x72\x6D\x61\x74"];_0xc904[0];var _=require(_0xc904[1]);var moment=require(_0xc904[2]);var FaxRoom=require(_0xc904[4])[_0xc904[3]];var FaxRoomStatus=require(_0xc904[4])[_0xc904[5]];var ReportFax=require(_0xc904[4])[_0xc904[6]];var sequelize=require(_0xc904[4])[_0xc904[7]];var Agent=require(_0xc904[4])[_0xc904[8]];var Util=require(_0xc904[9]);exports[_0xc904[10]]= function(_0xd034x9,_0xd034xa,_0xd034xb){return ReportFax[_0xc904[17]](Util[_0xc904[16]](_0xd034x9[_0xc904[15]]))[_0xc904[14]](function(_0xd034xd){_0xd034xa[_0xc904[13]](200)[_0xc904[12]](_0xd034xd)})[_0xc904[11]](function(_0xd034xc){return handleError(_0xd034xa,_0xd034xc)})};exports[_0xc904[18]]= function(_0xd034x9,_0xd034xa){var _0xd034xe=_0xd034x9[_0xc904[22]][_0xc904[21]][_0xc904[20]](_0xc904[19])[1];return ReportFax[_0xc904[31]](_0xd034x9[_0xc904[22]][_0xc904[30]])[_0xc904[14]](function(_0xd034xf){if(!_0xd034xf){return _0xd034xa[_0xc904[23]](404)};var _0xd034x10=_[_0xc904[28]](_0xd034xf,{connectid:_0xd034x9[_0xc904[22]][_0xc904[21]]});return _0xd034x10[_0xc904[29]]()})[_0xc904[14]](function(){return FaxRoom[_0xc904[27]]({status:_0xc904[24],openReason:_0xc904[25]},{where:{id:_0xd034xe},user:_0xd034x9[_0xc904[26]],individualHooks:true})})[_0xc904[14]](function(){return _0xd034xa[_0xc904[23]](200)})[_0xc904[11]](sequelize.UniqueConstraintError,function(_0xd034xc){return _0xd034xa[_0xc904[23]](504)})[_0xc904[11]](function(_0xd034xc){return handleError(_0xd034xa,_0xd034xc)})};exports[_0xc904[32]]= function(_0xd034x9,_0xd034xa){var _0xd034x11;return ReportFax[_0xc904[31]](_0xd034x9[_0xc904[22]][_0xc904[30]])[_0xc904[14]](function(_0xd034x12){_0xd034x11= _0xd034x12;if(!_0xd034x12){return _0xd034xa[_0xc904[23]](404)};var _0xd034x10=_[_0xc904[28]](_0xd034x12,{rejectedAt:moment()[_0xc904[39]](_0xc904[38])});return _0xd034x10[_0xc904[29]]()})[_0xc904[14]](function(){return FaxRoomStatus[_0xc904[37]]({status:_0xc904[33],data1:_0xd034x9[_0xc904[26]][_0xc904[34]],data2:_0xd034x9[_0xc904[26]][_0xc904[35]],UserId:_0xd034x9[_0xc904[26]][_0xc904[30]],MailRoomId:_0xd034x11[_0xc904[36]]})})[_0xc904[14]](function(){return _0xd034xa[_0xc904[23]](200)})[_0xc904[11]](function(_0xd034xc){return handleError(_0xd034xa,_0xd034xc)})};function handleError(_0xd034xa,_0xd034xc){return _0xd034xa[_0xc904[13]](500)[_0xc904[12]](_0xd034xc)} \ No newline at end of file diff --git a/server/api/report_fax/report_fax.events.js b/server/api/report_fax/report_fax.events.js index f0e5f3e..69d2f17 100644 --- a/server/api/report_fax/report_fax.events.js +++ b/server/api/report_fax/report_fax.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const ReportFax = require('../../models').ReportFax; - -var ReportFaxEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -ReportFaxEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'update', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - ReportFax.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - ReportFaxEvents.emit(event + ':' + doc._id, doc); - ReportFaxEvents.emit(event, doc); - done(null); - } -} - -module.exports = ReportFaxEvents; +var _0x8c07=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x52\x65\x70\x6F\x72\x74\x46\x61\x78","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x75\x70\x64\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x8c07[0];const EventEmitter=require(_0x8c07[1]);const ReportFax=require(_0x8c07[3])[_0x8c07[2]];var ReportFaxEvents= new EventEmitter();ReportFaxEvents[_0x8c07[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x8c07[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x8c07[6],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x8c07[7]};for(var e in events){var event=events[e];ReportFax[_0x8c07[8]](e,emitEvent(event))};function emitEvent(event){return function(_0xba45x8,_0xba45x9,_0xba45xa){ReportFaxEvents[_0x8c07[11]](event+ _0x8c07[9]+ _0xba45x8[_0x8c07[10]],_0xba45x8);ReportFaxEvents[_0x8c07[11]](event,_0xba45x8);_0xba45xa(null)}}module[_0x8c07[12]]= ReportFaxEvents \ No newline at end of file diff --git a/server/api/report_fax/report_fax.socket.js b/server/api/report_fax/report_fax.socket.js index 7d32de9..ede4f6e 100644 --- a/server/api/report_fax/report_fax.socket.js +++ b/server/api/report_fax/report_fax.socket.js @@ -1,44 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const ReportFaxEvents = require('./report_fax.events'); - -// Model events to emit -var events = ['save', 'update', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('report_fax:' + event, socket); - - ReportFaxEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - switch (event) { - case 'report_fax:save': - case 'report_fax:update': - if (socket.name === doc.membername || socket.role === 'admin') { - socket.emit(event, doc); - } - break; - case 'report_fax:remove': - socket.emit(event, doc); - break; - default: - - } - }; -} - -function removeListener(event, listener) { - return function() { - ReportFaxEvents.removeListener(event, listener); - }; -} +var _0x943b=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x66\x61\x78\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x75\x70\x64\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x72\x65\x70\x6F\x72\x74\x5F\x66\x61\x78\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x72\x65\x70\x6F\x72\x74\x5F\x66\x61\x78\x3A\x73\x61\x76\x65","\x6E\x61\x6D\x65","\x6D\x65\x6D\x62\x65\x72\x6E\x61\x6D\x65","\x72\x6F\x6C\x65","\x61\x64\x6D\x69\x6E","\x65\x6D\x69\x74","\x72\x65\x70\x6F\x72\x74\x5F\x66\x61\x78\x3A\x75\x70\x64\x61\x74\x65","\x72\x65\x70\x6F\x72\x74\x5F\x66\x61\x78\x3A\x72\x65\x6D\x6F\x76\x65","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x943b[0];const ReportFaxEvents=require(_0x943b[1]);var events=[_0x943b[2],_0x943b[3],_0x943b[4]];exports[_0x943b[5]]= function(_0x3ff0x3){for(var _0x3ff0x4=0,_0x3ff0x5=events[_0x943b[6]];_0x3ff0x4< _0x3ff0x5;_0x3ff0x4++){var _0x3ff0x6=events[_0x3ff0x4];var _0x3ff0x7=createListener(_0x943b[7]+ _0x3ff0x6,_0x3ff0x3);ReportFaxEvents[_0x943b[8]](_0x3ff0x6,_0x3ff0x7);_0x3ff0x3[_0x943b[8]](_0x943b[9],removeListener(_0x3ff0x6,_0x3ff0x7))}};function createListener(_0x3ff0x6,_0x3ff0x3){return function(_0x3ff0x9){switch(_0x3ff0x6){case _0x943b[10]:;case _0x943b[16]:if(_0x3ff0x3[_0x943b[11]]=== _0x3ff0x9[_0x943b[12]]|| _0x3ff0x3[_0x943b[13]]=== _0x943b[14]){_0x3ff0x3[_0x943b[15]](_0x3ff0x6,_0x3ff0x9)};break;case _0x943b[17]:_0x3ff0x3[_0x943b[15]](_0x3ff0x6,_0x3ff0x9);break;default:}}}function removeListener(_0x3ff0x6,_0x3ff0x7){return function(){ReportFaxEvents[_0x943b[18]](_0x3ff0x6,_0x3ff0x7)}} \ No newline at end of file diff --git a/server/api/report_fax_session/index.js b/server/api/report_fax_session/index.js index 14bf55c..a2359bd 100644 --- a/server/api/report_fax_session/index.js +++ b/server/api/report_fax_session/index.js @@ -1,15 +1 @@ -'use strict'; - -var express = require('express'); -var auth = require('../../auth/auth.service'); -var controller = require('./report_fax_session.controller'); -var license = require('../../config/license/license.service'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), license.hasFax(), auth.hasModule([17], ['admin']), controller.index); -router.get('/describe', auth.isAuthenticated(), license.hasFax(), auth.hasModule([17], ['admin']), controller.describe); -router.get('/timeout', license.isValidDate(), auth.isAuthenticated(), license.hasFax(), auth.hasModule([17], ['admin']), controller.timeout); -router.get('/waiting', license.isValidDate(), auth.isAuthenticated(), license.hasFax(), auth.hasModule([17], ['admin']), controller.waiting); -router.get('/waiting/applications', auth.isAuthenticated(), license.hasFax(), auth.hasModule([10], ['admin', 'agent']), controller.waitingApplications); -module.exports = router; +var _0x6022=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x66\x61\x78\x5F\x73\x65\x73\x73\x69\x6F\x6E\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x68\x61\x73\x46\x61\x78","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x64\x65\x73\x63\x72\x69\x62\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x2F\x74\x69\x6D\x65\x6F\x75\x74","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x74\x69\x6D\x65\x6F\x75\x74","\x2F\x77\x61\x69\x74\x69\x6E\x67","\x77\x61\x69\x74\x69\x6E\x67","\x2F\x77\x61\x69\x74\x69\x6E\x67\x2F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x61\x67\x65\x6E\x74","\x77\x61\x69\x74\x69\x6E\x67\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x65\x78\x70\x6F\x72\x74\x73"];_0x6022[0];var express=require(_0x6022[1]);var auth=require(_0x6022[2]);var controller=require(_0x6022[3]);var license=require(_0x6022[4]);var router=express.Router();router[_0x6022[11]](_0x6022[5],auth[_0x6022[6]](),license[_0x6022[7]](),auth[_0x6022[9]]([17],[_0x6022[8]]),controller[_0x6022[10]]);router[_0x6022[11]](_0x6022[12],auth[_0x6022[6]](),license[_0x6022[7]](),auth[_0x6022[9]]([17],[_0x6022[8]]),controller[_0x6022[13]]);router[_0x6022[11]](_0x6022[14],license[_0x6022[15]](),auth[_0x6022[6]](),license[_0x6022[7]](),auth[_0x6022[9]]([17],[_0x6022[8]]),controller[_0x6022[16]]);router[_0x6022[11]](_0x6022[17],license[_0x6022[15]](),auth[_0x6022[6]](),license[_0x6022[7]](),auth[_0x6022[9]]([17],[_0x6022[8]]),controller[_0x6022[18]]);router[_0x6022[11]](_0x6022[19],auth[_0x6022[6]](),license[_0x6022[7]](),auth[_0x6022[9]]([10],[_0x6022[8],_0x6022[20]]),controller[_0x6022[21]]);module[_0x6022[22]]= router \ No newline at end of file diff --git a/server/api/report_fax_session/report_fax_session.controller.js b/server/api/report_fax_session/report_fax_session.controller.js index 29bf8ba..0fbc08f 100644 --- a/server/api/report_fax_session/report_fax_session.controller.js +++ b/server/api/report_fax_session/report_fax_session.controller.js @@ -1,238 +1 @@ -/** - * Using Rails-like standard naming convention for endpoints. - * GET /api/report/fax/sessions -> index - * POST /api/report/fax/sessions -> create - * GET /api/report/fax/sessions/:id -> show - * PUT /api/report/fax/sessions/:id -> update - * DELETE /api/report/fax/sessions/:id -> destroy - */ - -'use strict'; - - -var _ = require('lodash'); -var Util = require('../../config/util'); - -var ReportFaxSession = require('../../models').ReportFaxSession; -var ReportFaxSessionHistory = require('../../models').history.ReportFaxSessionHistory; -var User = require('../../models').User; - - -function handleError(res, statusCode) { - statusCode = statusCode || 500; - return function(err) { - res.status(statusCode).send(err); - }; -} - -function responseWithResult(res, statusCode) { - statusCode = statusCode || 200; - return function(entity) { - if (entity) { - res.status(statusCode).json(entity); - } - }; -} - -function responseWithoutResult(res, statusCode) { - statusCode = statusCode || 204; - return function() { - res.sendStatus(statusCode); - }; -} - -function handleEntityNotFound(res) { - return function(entity) { - if (!entity) { - res.status(404).end(); - return null; - } - return entity; - }; -} - -function saveUpdates(updates) { - return function(entity) { - return entity.updateAttributes(updates) - .then(function(updated) { - return updated; - }); - }; -} - -function removeEntity(res) { - return function(entity) { - if (entity) { - return entity.destroy() - .then(function() { - res.status(204).end(); - }); - } - }; -} - -// Gets a list of ReportFaxSessions -exports.index = function(req, res) { - return ReportFaxSession.findAll(Util.getQuery(req.query)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Gets a single ReportFaxSession from the DB -exports.show = function(req, res) { - return ReportFaxSession.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Creates a new ReportFaxSession in the DB -exports.create = function(req, res) { - return ReportFaxSession.create(req.body) - .then(responseWithResult(res, 201)) - .catch(handleError(res)); -} - -// Updates an existing ReportFaxSession in the DB -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - return ReportFaxSession.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(saveUpdates(req.body)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Deletes a ReportFaxSession from the DB -exports.destroy = function(req, res) { - return ReportFaxSession.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(removeEntity(res)) - .catch(handleError(res)); -} - -exports.describe = function(req, res) { - return ReportFaxSessionHistory - .describe() - .then(function(fields) { - return res.status(200).send(fields); - }) - .catch(handleError(res)); -}; - -// Get timeout apps -exports.timeout = function(req, res) { - return Promise - .all([]) - .then(getFaxQueues(req.user)) - .then(function(condition) { - return ReportFaxSession - .count(Util.getQuery(req.query, _.merge({ - timeout: true - }, condition))); - }) - .then(function(data) { - return res.status(200).send({ - value: data - }); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -// Get waiting apps -exports.waiting = function(req, res) { - return Promise - .all([]) - .then(getFaxQueues(req.user)) - .then(function(condition) { - return ReportFaxSession - .count(Util.getQuery(req.query, _.merge({ - leaveAt: null - }, condition))); - }) - .then(function(data) { - return res.status(200).send({ - value: data - }); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -exports.waitingApplications = function(req, res) { - return Promise - .all([]) - .then(getFaxQueues(req.user)) - .then(function(condition) { - return ReportFaxSession - .findAll(Util.getQuery(req.query, _.merge({ - leaveAt: null - }, condition))); - }) - .then(function(data) { - return res.status(200).send({ - rows: data - }); - }) - .catch(handleError(res)); -}; - -function getFaxQueues(user) { - return function() { - switch (user.role) { - case 'user': - return User - .findById(user.id, { - attributes: ['id'] - }) - .then(Util.getFaxQueuesIdByUser({}, { - attributes: ['id'], - include: [{ - raw: true, - model: User, - attributes: ['id'] - }] - })) - .then(function(userQueues) { - var users = []; - userQueues.rows.forEach(function(queue) { - users = _.union(users, _.map(queue.Users, 'id')); - }); - return { - $or: { - queue: _.map(userQueues.rows, 'id'), - memberid: users - } - }; - }); - case 'agent': - return User - .findById(user.id, { - attributes: ['id'] - }) - .then(function(agent) { - return agent - .getFaxQueues({ - attributes: ['id'] - }); - }) - .then(function(userQueues) { - return { - $or: { - queue: _.map(userQueues, 'id'), - memberid: user.id - } - }; - }); - default: - return {}; - } - } -} +var _0xc91b=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x52\x65\x70\x6F\x72\x74\x46\x61\x78\x53\x65\x73\x73\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x52\x65\x70\x6F\x72\x74\x46\x61\x78\x53\x65\x73\x73\x69\x6F\x6E\x48\x69\x73\x74\x6F\x72\x79","\x68\x69\x73\x74\x6F\x72\x79","\x55\x73\x65\x72","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x6A\x73\x6F\x6E","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x65\x6E\x64","\x74\x68\x65\x6E","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x64\x65\x73\x74\x72\x6F\x79","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x68\x6F\x77","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x74\x69\x6D\x65\x6F\x75\x74","\x6C\x6F\x67","\x6D\x65\x72\x67\x65","\x63\x6F\x75\x6E\x74","\x75\x73\x65\x72","\x61\x6C\x6C","\x77\x61\x69\x74\x69\x6E\x67","\x77\x61\x69\x74\x69\x6E\x67\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x6D\x61\x70","\x75\x6E\x69\x6F\x6E","\x66\x6F\x72\x45\x61\x63\x68","\x72\x6F\x77\x73","\x67\x65\x74\x46\x61\x78\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x67\x65\x74\x46\x61\x78\x51\x75\x65\x75\x65\x73","\x61\x67\x65\x6E\x74","\x72\x6F\x6C\x65"];_0xc91b[0];var _=require(_0xc91b[1]);var Util=require(_0xc91b[2]);var ReportFaxSession=require(_0xc91b[4])[_0xc91b[3]];var ReportFaxSessionHistory=require(_0xc91b[4])[_0xc91b[6]][_0xc91b[5]];var User=require(_0xc91b[4])[_0xc91b[7]];function handleError(_0xea38x7,_0xea38x8){_0xea38x8= _0xea38x8|| 500;return function(_0xea38x9){_0xea38x7[_0xc91b[9]](_0xea38x8)[_0xc91b[8]](_0xea38x9)}}function responseWithResult(_0xea38x7,_0xea38x8){_0xea38x8= _0xea38x8|| 200;return function(_0xea38xb){if(_0xea38xb){_0xea38x7[_0xc91b[9]](_0xea38x8)[_0xc91b[10]](_0xea38xb)}}}function responseWithoutResult(_0xea38x7,_0xea38x8){_0xea38x8= _0xea38x8|| 204;return function(){_0xea38x7[_0xc91b[11]](_0xea38x8)}}function handleEntityNotFound(_0xea38x7){return function(_0xea38xb){if(!_0xea38xb){_0xea38x7[_0xc91b[9]](404)[_0xc91b[12]]();return null};return _0xea38xb}}function saveUpdates(_0xea38xf){return function(_0xea38xb){return _0xea38xb[_0xc91b[14]](_0xea38xf)[_0xc91b[13]](function(_0xea38x10){return _0xea38x10})}}function removeEntity(_0xea38x7){return function(_0xea38xb){if(_0xea38xb){return _0xea38xb[_0xc91b[15]]()[_0xc91b[13]](function(){_0xea38x7[_0xc91b[9]](204)[_0xc91b[12]]()})}}}exports[_0xc91b[16]]= function(_0xea38x12,_0xea38x7){return ReportFaxSession[_0xc91b[20]](Util[_0xc91b[19]](_0xea38x12[_0xc91b[18]]))[_0xc91b[13]](responseWithResult(_0xea38x7))[_0xc91b[17]](handleError(_0xea38x7))};exports[_0xc91b[21]]= function(_0xea38x12,_0xea38x7){return ReportFaxSession[_0xc91b[24]](_0xea38x12[_0xc91b[23]][_0xc91b[22]])[_0xc91b[13]](handleEntityNotFound(_0xea38x7))[_0xc91b[13]](responseWithResult(_0xea38x7))[_0xc91b[17]](handleError(_0xea38x7))};exports[_0xc91b[25]]= function(_0xea38x12,_0xea38x7){return ReportFaxSession[_0xc91b[25]](_0xea38x12[_0xc91b[26]])[_0xc91b[13]](responseWithResult(_0xea38x7,201))[_0xc91b[17]](handleError(_0xea38x7))};exports[_0xc91b[27]]= function(_0xea38x12,_0xea38x7){if(_0xea38x12[_0xc91b[26]][_0xc91b[22]]){delete _0xea38x12[_0xc91b[26]][_0xc91b[22]]};return ReportFaxSession[_0xc91b[24]](_0xea38x12[_0xc91b[23]][_0xc91b[22]])[_0xc91b[13]](handleEntityNotFound(_0xea38x7))[_0xc91b[13]](saveUpdates(_0xea38x12[_0xc91b[26]]))[_0xc91b[13]](responseWithResult(_0xea38x7))[_0xc91b[17]](handleError(_0xea38x7))};exports[_0xc91b[15]]= function(_0xea38x12,_0xea38x7){return ReportFaxSession[_0xc91b[24]](_0xea38x12[_0xc91b[23]][_0xc91b[22]])[_0xc91b[13]](handleEntityNotFound(_0xea38x7))[_0xc91b[13]](removeEntity(_0xea38x7))[_0xc91b[17]](handleError(_0xea38x7))};exports[_0xc91b[28]]= function(_0xea38x12,_0xea38x7){return ReportFaxSessionHistory[_0xc91b[28]]()[_0xc91b[13]](function(_0xea38x13){return _0xea38x7[_0xc91b[9]](200)[_0xc91b[8]](_0xea38x13)})[_0xc91b[17]](handleError(_0xea38x7))};exports[_0xc91b[29]]= function(_0xea38x12,_0xea38x7){return Promise[_0xc91b[34]]([])[_0xc91b[13]](getFaxQueues(_0xea38x12[_0xc91b[33]]))[_0xc91b[13]](function(_0xea38x15){return ReportFaxSession[_0xc91b[32]](Util[_0xc91b[19]](_0xea38x12[_0xc91b[18]],_[_0xc91b[31]]({timeout:true},_0xea38x15)))})[_0xc91b[13]](function(_0xea38x14){return _0xea38x7[_0xc91b[9]](200)[_0xc91b[8]]({value:_0xea38x14})})[_0xc91b[17]](function(_0xea38x9){console[_0xc91b[30]](_0xea38x9);return handleError(_0xea38x7,_0xea38x9)})};exports[_0xc91b[35]]= function(_0xea38x12,_0xea38x7){return Promise[_0xc91b[34]]([])[_0xc91b[13]](getFaxQueues(_0xea38x12[_0xc91b[33]]))[_0xc91b[13]](function(_0xea38x15){return ReportFaxSession[_0xc91b[32]](Util[_0xc91b[19]](_0xea38x12[_0xc91b[18]],_[_0xc91b[31]]({leaveAt:null},_0xea38x15)))})[_0xc91b[13]](function(_0xea38x14){return _0xea38x7[_0xc91b[9]](200)[_0xc91b[8]]({value:_0xea38x14})})[_0xc91b[17]](function(_0xea38x9){console[_0xc91b[30]](_0xea38x9);return handleError(_0xea38x7,_0xea38x9)})};exports[_0xc91b[36]]= function(_0xea38x12,_0xea38x7){return Promise[_0xc91b[34]]([])[_0xc91b[13]](getFaxQueues(_0xea38x12[_0xc91b[33]]))[_0xc91b[13]](function(_0xea38x15){return ReportFaxSession[_0xc91b[20]](Util[_0xc91b[19]](_0xea38x12[_0xc91b[18]],_[_0xc91b[31]]({leaveAt:null},_0xea38x15)))})[_0xc91b[13]](function(_0xea38x14){return _0xea38x7[_0xc91b[9]](200)[_0xc91b[8]]({rows:_0xea38x14})})[_0xc91b[17]](handleError(_0xea38x7))};function getFaxQueues(_0xea38x17){return function(){switch(_0xea38x17[_0xc91b[44]]){case _0xc91b[33]:return User[_0xc91b[24]](_0xea38x17[_0xc91b[22]],{attributes:[_0xc91b[22]]})[_0xc91b[13]](Util[_0xc91b[41]]({},{attributes:[_0xc91b[22]],include:[{raw:true,model:User,attributes:[_0xc91b[22]]}]}))[_0xc91b[13]](function(_0xea38x18){var _0xea38x19=[];_0xea38x18[_0xc91b[40]][_0xc91b[39]](function(_0xea38x1a){_0xea38x19= _[_0xc91b[38]](_0xea38x19,_[_0xc91b[37]](_0xea38x1a.Users,_0xc91b[22]))});return {$or:{queue:_[_0xc91b[37]](_0xea38x18[_0xc91b[40]],_0xc91b[22]),memberid:_0xea38x19}}});case _0xc91b[43]:return User[_0xc91b[24]](_0xea38x17[_0xc91b[22]],{attributes:[_0xc91b[22]]})[_0xc91b[13]](function(_0xea38x1b){return _0xea38x1b[_0xc91b[42]]({attributes:[_0xc91b[22]]})})[_0xc91b[13]](function(_0xea38x18){return {$or:{queue:_[_0xc91b[37]](_0xea38x18,_0xc91b[22]),memberid:_0xea38x17[_0xc91b[22]]}}});default:return {}}}} \ No newline at end of file diff --git a/server/api/report_fax_session/report_fax_session.events.js b/server/api/report_fax_session/report_fax_session.events.js index 6d9b5cc..a56b646 100644 --- a/server/api/report_fax_session/report_fax_session.events.js +++ b/server/api/report_fax_session/report_fax_session.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const ReportFaxSession = require('../../models').ReportFaxSession; - -var ReportFaxSessionEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -ReportFaxSessionEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - ReportFaxSession.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - ReportFaxSessionEvents.emit(event + ':' + doc._id, doc); - ReportFaxSessionEvents.emit(event, doc); - done(null); - } -} - -module.exports = ReportFaxSessionEvents; +var _0x786a=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x52\x65\x70\x6F\x72\x74\x46\x61\x78\x53\x65\x73\x73\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x786a[0];const EventEmitter=require(_0x786a[1]);const ReportFaxSession=require(_0x786a[3])[_0x786a[2]];var ReportFaxSessionEvents= new EventEmitter();ReportFaxSessionEvents[_0x786a[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x786a[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x786a[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x786a[6]};for(var e in events){var event=events[e];ReportFaxSession[_0x786a[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xfefax8,_0xfefax9,_0xfefaxa){ReportFaxSessionEvents[_0x786a[10]](event+ _0x786a[8]+ _0xfefax8[_0x786a[9]],_0xfefax8);ReportFaxSessionEvents[_0x786a[10]](event,_0xfefax8);_0xfefaxa(null)}}module[_0x786a[11]]= ReportFaxSessionEvents \ No newline at end of file diff --git a/server/api/report_fax_session/report_fax_session.socket.js b/server/api/report_fax_session/report_fax_session.socket.js index 53585b9..33478f1 100644 --- a/server/api/report_fax_session/report_fax_session.socket.js +++ b/server/api/report_fax_session/report_fax_session.socket.js @@ -1,104 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const ReportFaxSession = require('./report_fax_session.events'); -const User = require('../../models').User; -const Util = require('../../config/util'); -const _ = require('lodash'); -const Promise = require('bluebird'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('report_fax_session:' + event, socket); - - ReportFaxSession.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - switch (event) { - case 'report_fax_session:save': - return Promise - .all([]) - .then(getFaxQueues(socket)) - .then(function(condition) { - if (socket.role === 'admin' || _.includes(condition.memberid, doc.memberid) || _.includes(condition.queue, doc.queue)) { - socket.emit(event, doc); - } - }) - .catch(function(err) { - console.log('Error filtering report fax sessions after save', err); - }); - case 'report_fax_session:remove': - socket.emit(event, doc); - break; - - default: - - } - }; -} - -function removeListener(event, listener) { - return function() { - ReportFaxSession.removeListener(event, listener); - }; -} - -function getFaxQueues(user) { - return function() { - switch (user.role) { - case 'user': - return User - .findById(user.userId, { - attributes: ['id'] - }) - .then(Util.getFaxQueuesIdByUser({}, { - attributes: ['id'], - include: [{ - raw: true, - model: User, - attributes: ['id'] - }] - })) - .then(function(userQueues) { - var users = []; - userQueues.rows.forEach(function(queue) { - users = _.union(users, _.map(queue.Users, 'id')); - }); - return { - queue: _.map(userQueues.rows, 'id'), - memberid: users - }; - }); - case 'agent': - return User - .findById(user.userId, { - attributes: ['id'] - }) - .then(function(agent) { - return agent - .getFaxQueues({ - attributes: ['id'] - }); - }) - .then(function(userQueues) { - return { - queue: _.map(userQueues, 'id'), - memberid: user.userId - }; - }); - default: - return {}; - } - } -} +var _0xbb7b=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x66\x61\x78\x5F\x73\x65\x73\x73\x69\x6F\x6E\x2E\x65\x76\x65\x6E\x74\x73","\x55\x73\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x6C\x6F\x64\x61\x73\x68","\x62\x6C\x75\x65\x62\x69\x72\x64","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x72\x65\x70\x6F\x72\x74\x5F\x66\x61\x78\x5F\x73\x65\x73\x73\x69\x6F\x6E\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x45\x72\x72\x6F\x72\x20\x66\x69\x6C\x74\x65\x72\x69\x6E\x67\x20\x72\x65\x70\x6F\x72\x74\x20\x66\x61\x78\x20\x73\x65\x73\x73\x69\x6F\x6E\x73\x20\x61\x66\x74\x65\x72\x20\x73\x61\x76\x65","\x6C\x6F\x67","\x63\x61\x74\x63\x68","\x72\x6F\x6C\x65","\x61\x64\x6D\x69\x6E","\x6D\x65\x6D\x62\x65\x72\x69\x64","\x69\x6E\x63\x6C\x75\x64\x65\x73","\x71\x75\x65\x75\x65","\x65\x6D\x69\x74","\x74\x68\x65\x6E","\x61\x6C\x6C","\x72\x65\x70\x6F\x72\x74\x5F\x66\x61\x78\x5F\x73\x65\x73\x73\x69\x6F\x6E\x3A\x73\x61\x76\x65","\x72\x65\x70\x6F\x72\x74\x5F\x66\x61\x78\x5F\x73\x65\x73\x73\x69\x6F\x6E\x3A\x72\x65\x6D\x6F\x76\x65","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72","\x69\x64","\x6D\x61\x70","\x75\x6E\x69\x6F\x6E","\x66\x6F\x72\x45\x61\x63\x68","\x72\x6F\x77\x73","\x67\x65\x74\x46\x61\x78\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x75\x73\x65\x72\x49\x64","\x66\x69\x6E\x64\x42\x79\x49\x64","\x75\x73\x65\x72","\x67\x65\x74\x46\x61\x78\x51\x75\x65\x75\x65\x73","\x61\x67\x65\x6E\x74"];_0xbb7b[0];const ReportFaxSession=require(_0xbb7b[1]);const User=require(_0xbb7b[3])[_0xbb7b[2]];const Util=require(_0xbb7b[4]);const _=require(_0xbb7b[5]);const Promise=require(_0xbb7b[6]);var events=[_0xbb7b[7],_0xbb7b[8]];exports[_0xbb7b[9]]= function(_0x7c04x7){for(var _0x7c04x8=0,_0x7c04x9=events[_0xbb7b[10]];_0x7c04x8< _0x7c04x9;_0x7c04x8++){var _0x7c04xa=events[_0x7c04x8];var _0x7c04xb=createListener(_0xbb7b[11]+ _0x7c04xa,_0x7c04x7);ReportFaxSession[_0xbb7b[12]](_0x7c04xa,_0x7c04xb);_0x7c04x7[_0xbb7b[12]](_0xbb7b[13],removeListener(_0x7c04xa,_0x7c04xb))}};function createListener(_0x7c04xa,_0x7c04x7){return function(_0x7c04xd){switch(_0x7c04xa){case _0xbb7b[25]:return Promise[_0xbb7b[24]]([])[_0xbb7b[23]](getFaxQueues(_0x7c04x7))[_0xbb7b[23]](function(_0x7c04xf){if(_0x7c04x7[_0xbb7b[17]]=== _0xbb7b[18]|| _[_0xbb7b[20]](_0x7c04xf[_0xbb7b[19]],_0x7c04xd[_0xbb7b[19]])|| _[_0xbb7b[20]](_0x7c04xf[_0xbb7b[21]],_0x7c04xd[_0xbb7b[21]])){_0x7c04x7[_0xbb7b[22]](_0x7c04xa,_0x7c04xd)}})[_0xbb7b[16]](function(_0x7c04xe){console[_0xbb7b[15]](_0xbb7b[14],_0x7c04xe)});case _0xbb7b[26]:_0x7c04x7[_0xbb7b[22]](_0x7c04xa,_0x7c04xd);break;default:}}}function removeListener(_0x7c04xa,_0x7c04xb){return function(){ReportFaxSession[_0xbb7b[27]](_0x7c04xa,_0x7c04xb)}}function getFaxQueues(_0x7c04x12){return function(){switch(_0x7c04x12[_0xbb7b[17]]){case _0xbb7b[36]:return User[_0xbb7b[35]](_0x7c04x12[_0xbb7b[34]],{attributes:[_0xbb7b[28]]})[_0xbb7b[23]](Util[_0xbb7b[33]]({},{attributes:[_0xbb7b[28]],include:[{raw:true,model:User,attributes:[_0xbb7b[28]]}]}))[_0xbb7b[23]](function(_0x7c04x13){var _0x7c04x14=[];_0x7c04x13[_0xbb7b[32]][_0xbb7b[31]](function(_0x7c04x15){_0x7c04x14= _[_0xbb7b[30]](_0x7c04x14,_[_0xbb7b[29]](_0x7c04x15.Users,_0xbb7b[28]))});return {queue:_[_0xbb7b[29]](_0x7c04x13[_0xbb7b[32]],_0xbb7b[28]),memberid:_0x7c04x14}});case _0xbb7b[38]:return User[_0xbb7b[35]](_0x7c04x12[_0xbb7b[34]],{attributes:[_0xbb7b[28]]})[_0xbb7b[23]](function(_0x7c04x16){return _0x7c04x16[_0xbb7b[37]]({attributes:[_0xbb7b[28]]})})[_0xbb7b[23]](function(_0x7c04x13){return {queue:_[_0xbb7b[29]](_0x7c04x13,_0xbb7b[28]),memberid:_0x7c04x12[_0xbb7b[34]]}});default:return {}}}} \ No newline at end of file diff --git a/server/api/report_integration/index.js b/server/api/report_integration/index.js index 80f013c..b76fd4d 100644 --- a/server/api/report_integration/index.js +++ b/server/api/report_integration/index.js @@ -1,13 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./report_integration.controller'); -var auth = require('../../auth/auth.service'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), auth.hasModule([17], ['admin']), controller.index); -router.get('/describe', auth.isAuthenticated(), auth.hasModule([17], ['admin']), controller.describe); -router.post('/', auth.isAuthenticated(), controller.create); - -module.exports = router; +var _0x591f=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x64\x65\x73\x63\x72\x69\x62\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x591f[0];var express=require(_0x591f[1]);var controller=require(_0x591f[2]);var auth=require(_0x591f[3]);var router=express.Router();router[_0x591f[9]](_0x591f[4],auth[_0x591f[5]](),auth[_0x591f[7]]([17],[_0x591f[6]]),controller[_0x591f[8]]);router[_0x591f[9]](_0x591f[10],auth[_0x591f[5]](),auth[_0x591f[7]]([17],[_0x591f[6]]),controller[_0x591f[11]]);router[_0x591f[13]](_0x591f[4],auth[_0x591f[5]](),controller[_0x591f[12]]);module[_0x591f[14]]= router \ No newline at end of file diff --git a/server/api/report_integration/report_integration.controller.js b/server/api/report_integration/report_integration.controller.js index ebc479d..4d22f67 100644 --- a/server/api/report_integration/report_integration.controller.js +++ b/server/api/report_integration/report_integration.controller.js @@ -1,46 +1 @@ -'use strict'; - -var _ = require('lodash'); -var ReportIntegration = require('../../models').ReportIntegration; -var ReportIntegrationHistory = require('../../models').history.ReportIntegrationHistory; -var Util = require('../../config/util'); - -// Get list of report_integrations -exports.index = function(req, res, next) { - return ReportIntegration - .findAndCountAll(Util.getQuery(req.query)) - .then(function(result) { - return res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get list of fields -exports.describe = function(req, res) { - return ReportIntegrationHistory - .describe() - .then(function(fields) { - return res.status(200).send(fields); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Creates a new report_integration in the DB. -exports.create = function(req, res) { - return ReportIntegration - .create(req.body) - .then(function(report_integration) { - return res.status(201).send(report_integration); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0x20cc=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x52\x65\x70\x6F\x72\x74\x49\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x52\x65\x70\x6F\x72\x74\x49\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x48\x69\x73\x74\x6F\x72\x79","\x68\x69\x73\x74\x6F\x72\x79","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x64\x65\x73\x63\x72\x69\x62\x65","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79"];_0x20cc[0];var _=require(_0x20cc[1]);var ReportIntegration=require(_0x20cc[3])[_0x20cc[2]];var ReportIntegrationHistory=require(_0x20cc[3])[_0x20cc[5]][_0x20cc[4]];var Util=require(_0x20cc[6]);exports[_0x20cc[7]]= function(_0x5fc2x5,_0x5fc2x6,_0x5fc2x7){return ReportIntegration[_0x20cc[14]](Util[_0x20cc[13]](_0x5fc2x5[_0x20cc[12]]))[_0x20cc[11]](function(_0x5fc2x9){return _0x5fc2x6[_0x20cc[10]](200)[_0x20cc[9]](_0x5fc2x9)})[_0x20cc[8]](function(_0x5fc2x8){return handleError(_0x5fc2x6,_0x5fc2x8)})};exports[_0x20cc[15]]= function(_0x5fc2x5,_0x5fc2x6){return ReportIntegrationHistory[_0x20cc[15]]()[_0x20cc[11]](function(_0x5fc2xa){return _0x5fc2x6[_0x20cc[10]](200)[_0x20cc[9]](_0x5fc2xa)})[_0x20cc[8]](function(_0x5fc2x8){return handleError(_0x5fc2x6,_0x5fc2x8)})};exports[_0x20cc[16]]= function(_0x5fc2x5,_0x5fc2x6){return ReportIntegration[_0x20cc[16]](_0x5fc2x5[_0x20cc[17]])[_0x20cc[11]](function(_0x5fc2xb){return _0x5fc2x6[_0x20cc[10]](201)[_0x20cc[9]](_0x5fc2xb)})[_0x20cc[8]](function(_0x5fc2x8){return handleError(_0x5fc2x6,_0x5fc2x8)})};function handleError(_0x5fc2x6,_0x5fc2x8){return _0x5fc2x6[_0x20cc[10]](500)[_0x20cc[9]](_0x5fc2x8)} \ No newline at end of file diff --git a/server/api/report_integration/report_integration.events.js b/server/api/report_integration/report_integration.events.js index ea294b9..5d146d2 100644 --- a/server/api/report_integration/report_integration.events.js +++ b/server/api/report_integration/report_integration.events.js @@ -1,34 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const ReportIntegration = require('../../models').ReportIntegration; - -var ReportIntegrationEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -ReportIntegrationEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - ReportIntegration.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - ReportIntegrationEvents.emit(event + ':' + doc._id, doc); - ReportIntegrationEvents.emit(event, doc); - done(null); - } -} - -module.exports = ReportIntegrationEvents; +var _0xea07=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x52\x65\x70\x6F\x72\x74\x49\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xea07[0];const EventEmitter=require(_0xea07[1]);const ReportIntegration=require(_0xea07[3])[_0xea07[2]];var ReportIntegrationEvents= new EventEmitter();ReportIntegrationEvents[_0xea07[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xea07[5]};for(var e in events){var event=events[e];ReportIntegration[_0xea07[6]](e,emitEvent(event))};function emitEvent(event){return function(_0x1f8cx8,_0x1f8cx9,_0x1f8cxa){ReportIntegrationEvents[_0xea07[9]](event+ _0xea07[7]+ _0x1f8cx8[_0xea07[8]],_0x1f8cx8);ReportIntegrationEvents[_0xea07[9]](event,_0x1f8cx8);_0x1f8cxa(null)}}module[_0xea07[10]]= ReportIntegrationEvents \ No newline at end of file diff --git a/server/api/report_integration/report_integration.socket.js b/server/api/report_integration/report_integration.socket.js index 78f2dea..9196230 100644 --- a/server/api/report_integration/report_integration.socket.js +++ b/server/api/report_integration/report_integration.socket.js @@ -1,41 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const ReportIntegrationEvents = require('./report_integration.events'); -const util = require('util'); - -// Model events to emit -var events = ['save']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('report_integration:' + event, socket); - - ReportIntegrationEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - switch (event) { - case 'report_integration:save': - if (socket.name === doc.membername) { - socket.emit(util.format('report_integration:%s', doc.integration), doc); - } - break; - default: - - } - }; -} - -function removeListener(event, listener) { - return function() { - ReportIntegrationEvents.removeListener(event, listener); - }; -} +var _0x60d9=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x2E\x65\x76\x65\x6E\x74\x73","\x75\x74\x69\x6C","\x73\x61\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x72\x65\x70\x6F\x72\x74\x5F\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x6E\x61\x6D\x65","\x6D\x65\x6D\x62\x65\x72\x6E\x61\x6D\x65","\x72\x65\x70\x6F\x72\x74\x5F\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x3A\x25\x73","\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E","\x66\x6F\x72\x6D\x61\x74","\x65\x6D\x69\x74","\x72\x65\x70\x6F\x72\x74\x5F\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x3A\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x60d9[0];const ReportIntegrationEvents=require(_0x60d9[1]);const util=require(_0x60d9[2]);var events=[_0x60d9[3]];exports[_0x60d9[4]]= function(_0x7057x4){for(var _0x7057x5=0,_0x7057x6=events[_0x60d9[5]];_0x7057x5< _0x7057x6;_0x7057x5++){var _0x7057x7=events[_0x7057x5];var _0x7057x8=createListener(_0x60d9[6]+ _0x7057x7,_0x7057x4);ReportIntegrationEvents[_0x60d9[7]](_0x7057x7,_0x7057x8);_0x7057x4[_0x60d9[7]](_0x60d9[8],removeListener(_0x7057x7,_0x7057x8))}};function createListener(_0x7057x7,_0x7057x4){return function(_0x7057xa){switch(_0x7057x7){case _0x60d9[15]:if(_0x7057x4[_0x60d9[9]]=== _0x7057xa[_0x60d9[10]]){_0x7057x4[_0x60d9[14]](util[_0x60d9[13]](_0x60d9[11],_0x7057xa[_0x60d9[12]]),_0x7057xa)};break;default:}}}function removeListener(_0x7057x7,_0x7057x8){return function(){ReportIntegrationEvents[_0x60d9[16]](_0x7057x7,_0x7057x8)}} \ No newline at end of file diff --git a/server/api/report_mail/index.js b/server/api/report_mail/index.js index 9256f76..3a7b1a2 100644 --- a/server/api/report_mail/index.js +++ b/server/api/report_mail/index.js @@ -1,14 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./report_mail.controller'); -var auth = require('../../auth/auth.service'); -var license = require('../../config/license/license.service'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), license.hasMail(), auth.hasModule([17], ['admin', 'agent']), controller.index); -router.get('/:id/accept/:uniqueid', auth.isAuthenticated(), license.hasMail(), auth.hasRole('agent'), controller.accept); -router.get('/:id/reject', auth.isAuthenticated(), license.hasMail(), auth.hasRole('agent'), controller.reject); - -module.exports = router; +var _0x6010=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x6D\x61\x69\x6C\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x68\x61\x73\x4D\x61\x69\x6C","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64\x2F\x61\x63\x63\x65\x70\x74\x2F\x3A\x75\x6E\x69\x71\x75\x65\x69\x64","\x68\x61\x73\x52\x6F\x6C\x65","\x61\x63\x63\x65\x70\x74","\x2F\x3A\x69\x64\x2F\x72\x65\x6A\x65\x63\x74","\x72\x65\x6A\x65\x63\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x6010[0];var express=require(_0x6010[1]);var controller=require(_0x6010[2]);var auth=require(_0x6010[3]);var license=require(_0x6010[4]);var router=express.Router();router[_0x6010[12]](_0x6010[5],auth[_0x6010[6]](),license[_0x6010[7]](),auth[_0x6010[10]]([17],[_0x6010[8],_0x6010[9]]),controller[_0x6010[11]]);router[_0x6010[12]](_0x6010[13],auth[_0x6010[6]](),license[_0x6010[7]](),auth[_0x6010[14]](_0x6010[9]),controller[_0x6010[15]]);router[_0x6010[12]](_0x6010[16],auth[_0x6010[6]](),license[_0x6010[7]](),auth[_0x6010[14]](_0x6010[9]),controller[_0x6010[17]]);module[_0x6010[18]]= router \ No newline at end of file diff --git a/server/api/report_mail/report_mail.controller.js b/server/api/report_mail/report_mail.controller.js index c0a5cde..296b64d 100644 --- a/server/api/report_mail/report_mail.controller.js +++ b/server/api/report_mail/report_mail.controller.js @@ -1,113 +1 @@ -'use strict'; - -var _ = require('lodash'); -var moment = require('moment'); - -var Report = require('../../models').ReportMail; -var Room = require('../../models').MailRoom; -var Status = require('../../models').MailRoomStatus; - -var sequelize = require('../../models').sequelize; - -var Util = require('../../config/util'); - -// Get list of agents -exports.index = function(req, res, next) { - var where = {}; - if (req.user.role === 'agent') { - where.membername = req.user.name; - } - return Report - .findAndCountAll(Util.getQuery(req.query, where)) - .then(function(result) { - res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get a single reportMail -exports.accept = function(req, res) { - var _roomid = req.params.uniqueid.split('.')[1]; - - return Report - .findById(req.params.id) - .then(function(reportMail) { - if (!reportMail) { - return res.sendStatus(404); - } - - var updated = _.merge(reportMail, { - connectid: req.params.uniqueid - }); - - return updated - .save(); - }) - .then(function() { - return Room - .update({ - status: 'OPEN', - openReason: 'agent' - }, { - where: { - id: _roomid - }, - user: req.user, - individualHooks: true - }); - }) - .then(function() { - return res.sendStatus(200); - }) - .catch(sequelize.UniqueConstraintError, function(err) { - return res.sendStatus(504); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get a single reportMail -exports.reject = function(req, res) { - var _report; - - return Report - .findById(req.params.id) - .then(function(report) { - _report = report; - - if (!_report) { - return res.sendStatus(404); - } - - var updated = _.merge(report, { - rejectedAt: moment().format("YYYY-MM-DD HH:mm:ss") - }); - - return updated - .save(); - }) - .then(function() { - return Status - .create({ - status: 'REJECT', - data1: req.user.name, - data2: req.user.fullname, - UserId: req.user.id, - MailRoomId: _report.roomid - }); - }) - .then(function() { - return res.sendStatus(200); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function handleError(res, err) { - console.log(err); - return res.status(500).send(err); -} +var _0xbcce=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x6D\x6F\x6D\x65\x6E\x74","\x52\x65\x70\x6F\x72\x74\x4D\x61\x69\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x4D\x61\x69\x6C\x52\x6F\x6F\x6D","\x4D\x61\x69\x6C\x52\x6F\x6F\x6D\x53\x74\x61\x74\x75\x73","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x69\x6E\x64\x65\x78","\x72\x6F\x6C\x65","\x75\x73\x65\x72","\x61\x67\x65\x6E\x74","\x6D\x65\x6D\x62\x65\x72\x6E\x61\x6D\x65","\x6E\x61\x6D\x65","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x61\x63\x63\x65\x70\x74","\x2E","\x73\x70\x6C\x69\x74","\x75\x6E\x69\x71\x75\x65\x69\x64","\x70\x61\x72\x61\x6D\x73","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x4F\x50\x45\x4E","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x69\x64","\x66\x69\x6E\x64\x42\x79\x49\x64","\x72\x65\x6A\x65\x63\x74","\x52\x45\x4A\x45\x43\x54","\x66\x75\x6C\x6C\x6E\x61\x6D\x65","\x72\x6F\x6F\x6D\x69\x64","\x63\x72\x65\x61\x74\x65","\x59\x59\x59\x59\x2D\x4D\x4D\x2D\x44\x44\x20\x48\x48\x3A\x6D\x6D\x3A\x73\x73","\x66\x6F\x72\x6D\x61\x74","\x6C\x6F\x67"];_0xbcce[0];var _=require(_0xbcce[1]);var moment=require(_0xbcce[2]);var Report=require(_0xbcce[4])[_0xbcce[3]];var Room=require(_0xbcce[4])[_0xbcce[5]];var Status=require(_0xbcce[4])[_0xbcce[6]];var sequelize=require(_0xbcce[4])[_0xbcce[7]];var Util=require(_0xbcce[8]);exports[_0xbcce[9]]= function(_0x4652x8,_0x4652x9,_0x4652xa){var _0x4652xb={};if(_0x4652x8[_0xbcce[11]][_0xbcce[10]]=== _0xbcce[12]){_0x4652xb[_0xbcce[13]]= _0x4652x8[_0xbcce[11]][_0xbcce[14]]};return Report[_0xbcce[21]](Util[_0xbcce[20]](_0x4652x8[_0xbcce[19]],_0x4652xb))[_0xbcce[18]](function(_0x4652xd){_0x4652x9[_0xbcce[17]](200)[_0xbcce[16]](_0x4652xd)})[_0xbcce[15]](function(_0x4652xc){return handleError(_0x4652x9,_0x4652xc)})};exports[_0xbcce[22]]= function(_0x4652x8,_0x4652x9){var _0x4652xe=_0x4652x8[_0xbcce[26]][_0xbcce[25]][_0xbcce[24]](_0xbcce[23])[1];return Report[_0xbcce[33]](_0x4652x8[_0xbcce[26]][_0xbcce[32]])[_0xbcce[18]](function(_0x4652xf){if(!_0x4652xf){return _0x4652x9[_0xbcce[27]](404)};var _0x4652x10=_[_0xbcce[30]](_0x4652xf,{connectid:_0x4652x8[_0xbcce[26]][_0xbcce[25]]});return _0x4652x10[_0xbcce[31]]()})[_0xbcce[18]](function(){return Room[_0xbcce[29]]({status:_0xbcce[28],openReason:_0xbcce[12]},{where:{id:_0x4652xe},user:_0x4652x8[_0xbcce[11]],individualHooks:true})})[_0xbcce[18]](function(){return _0x4652x9[_0xbcce[27]](200)})[_0xbcce[15]](sequelize.UniqueConstraintError,function(_0x4652xc){return _0x4652x9[_0xbcce[27]](504)})[_0xbcce[15]](function(_0x4652xc){return handleError(_0x4652x9,_0x4652xc)})};exports[_0xbcce[34]]= function(_0x4652x8,_0x4652x9){var _0x4652x11;return Report[_0xbcce[33]](_0x4652x8[_0xbcce[26]][_0xbcce[32]])[_0xbcce[18]](function(_0x4652x12){_0x4652x11= _0x4652x12;if(!_0x4652x11){return _0x4652x9[_0xbcce[27]](404)};var _0x4652x10=_[_0xbcce[30]](_0x4652x12,{rejectedAt:moment()[_0xbcce[40]](_0xbcce[39])});return _0x4652x10[_0xbcce[31]]()})[_0xbcce[18]](function(){return Status[_0xbcce[38]]({status:_0xbcce[35],data1:_0x4652x8[_0xbcce[11]][_0xbcce[14]],data2:_0x4652x8[_0xbcce[11]][_0xbcce[36]],UserId:_0x4652x8[_0xbcce[11]][_0xbcce[32]],MailRoomId:_0x4652x11[_0xbcce[37]]})})[_0xbcce[18]](function(){return _0x4652x9[_0xbcce[27]](200)})[_0xbcce[15]](function(_0x4652xc){return handleError(_0x4652x9,_0x4652xc)})};function handleError(_0x4652x9,_0x4652xc){console[_0xbcce[41]](_0x4652xc);return _0x4652x9[_0xbcce[17]](500)[_0xbcce[16]](_0x4652xc)} \ No newline at end of file diff --git a/server/api/report_mail/report_mail.events.js b/server/api/report_mail/report_mail.events.js index 4a48caa..aa44fdb 100644 --- a/server/api/report_mail/report_mail.events.js +++ b/server/api/report_mail/report_mail.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const ReportMail = require('../../models').ReportMail; - -var ReportMailEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -ReportMailEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'update', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - ReportMail.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - ReportMailEvents.emit(event + ':' + doc._id, doc); - ReportMailEvents.emit(event, doc); - done(null); - } -} - -module.exports = ReportMailEvents; +var _0x5775=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x52\x65\x70\x6F\x72\x74\x4D\x61\x69\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x75\x70\x64\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x5775[0];const EventEmitter=require(_0x5775[1]);const ReportMail=require(_0x5775[3])[_0x5775[2]];var ReportMailEvents= new EventEmitter();ReportMailEvents[_0x5775[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x5775[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x5775[6],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x5775[7]};for(var e in events){var event=events[e];ReportMail[_0x5775[8]](e,emitEvent(event))};function emitEvent(event){return function(_0x90a1x8,_0x90a1x9,_0x90a1xa){ReportMailEvents[_0x5775[11]](event+ _0x5775[9]+ _0x90a1x8[_0x5775[10]],_0x90a1x8);ReportMailEvents[_0x5775[11]](event,_0x90a1x8);_0x90a1xa(null)}}module[_0x5775[12]]= ReportMailEvents \ No newline at end of file diff --git a/server/api/report_mail/report_mail.socket.js b/server/api/report_mail/report_mail.socket.js index 0b9cab3..dd970e5 100644 --- a/server/api/report_mail/report_mail.socket.js +++ b/server/api/report_mail/report_mail.socket.js @@ -1,46 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const ReportMailEvents = require('./report_mail.events'); - -// Model events to emit -var events = ['save', 'update', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('report_mail:' + event, socket); - - ReportMailEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - switch (event) { - case 'report_mail:save': - case 'report_mail:update': - if (socket.name === doc.membername || socket.role === 'admin') { - socket.emit(event, doc); - } - break; - - case 'report_mail:remove': - socket.emit(event, doc); - break; - - default: - - } - }; -} - -function removeListener(event, listener) { - return function() { - ReportMailEvents.removeListener(event, listener); - }; -} +var _0x28af=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x6D\x61\x69\x6C\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x75\x70\x64\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x72\x65\x70\x6F\x72\x74\x5F\x6D\x61\x69\x6C\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x72\x65\x70\x6F\x72\x74\x5F\x6D\x61\x69\x6C\x3A\x73\x61\x76\x65","\x6E\x61\x6D\x65","\x6D\x65\x6D\x62\x65\x72\x6E\x61\x6D\x65","\x72\x6F\x6C\x65","\x61\x64\x6D\x69\x6E","\x65\x6D\x69\x74","\x72\x65\x70\x6F\x72\x74\x5F\x6D\x61\x69\x6C\x3A\x75\x70\x64\x61\x74\x65","\x72\x65\x70\x6F\x72\x74\x5F\x6D\x61\x69\x6C\x3A\x72\x65\x6D\x6F\x76\x65","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x28af[0];const ReportMailEvents=require(_0x28af[1]);var events=[_0x28af[2],_0x28af[3],_0x28af[4]];exports[_0x28af[5]]= function(_0x9bbcx3){for(var _0x9bbcx4=0,_0x9bbcx5=events[_0x28af[6]];_0x9bbcx4< _0x9bbcx5;_0x9bbcx4++){var _0x9bbcx6=events[_0x9bbcx4];var _0x9bbcx7=createListener(_0x28af[7]+ _0x9bbcx6,_0x9bbcx3);ReportMailEvents[_0x28af[8]](_0x9bbcx6,_0x9bbcx7);_0x9bbcx3[_0x28af[8]](_0x28af[9],removeListener(_0x9bbcx6,_0x9bbcx7))}};function createListener(_0x9bbcx6,_0x9bbcx3){return function(_0x9bbcx9){switch(_0x9bbcx6){case _0x28af[10]:;case _0x28af[16]:if(_0x9bbcx3[_0x28af[11]]=== _0x9bbcx9[_0x28af[12]]|| _0x9bbcx3[_0x28af[13]]=== _0x28af[14]){_0x9bbcx3[_0x28af[15]](_0x9bbcx6,_0x9bbcx9)};break;case _0x28af[17]:_0x9bbcx3[_0x28af[15]](_0x9bbcx6,_0x9bbcx9);break;default:}}}function removeListener(_0x9bbcx6,_0x9bbcx7){return function(){ReportMailEvents[_0x28af[18]](_0x9bbcx6,_0x9bbcx7)}} \ No newline at end of file diff --git a/server/api/report_mail_session/index.js b/server/api/report_mail_session/index.js index 3e04193..b06d38b 100644 --- a/server/api/report_mail_session/index.js +++ b/server/api/report_mail_session/index.js @@ -1,16 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./report_mail_session.controller'); -var auth = require('../../auth/auth.service'); -var license = require('../../config/license/license.service'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), license.hasMail(), auth.hasModule([17], ['admin']), controller.index); -router.get('/describe', auth.isAuthenticated(), license.hasMail(), auth.hasModule([17], ['admin']), controller.describe); -router.get('/timeout', license.isValidDate(), auth.isAuthenticated(), license.hasMail(), auth.hasModule([17], ['admin']), controller.timeout); -router.get('/waiting', license.isValidDate(), auth.isAuthenticated(), license.hasMail(), auth.hasModule([17], ['admin']), controller.waiting); -router.get('/waiting/applications', auth.isAuthenticated(), license.hasMail(), auth.hasModule([9], ['admin', 'agent']), controller.waitingApplications); - -module.exports = router; +var _0x9541=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x6D\x61\x69\x6C\x5F\x73\x65\x73\x73\x69\x6F\x6E\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x68\x61\x73\x4D\x61\x69\x6C","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x64\x65\x73\x63\x72\x69\x62\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x2F\x74\x69\x6D\x65\x6F\x75\x74","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x74\x69\x6D\x65\x6F\x75\x74","\x2F\x77\x61\x69\x74\x69\x6E\x67","\x77\x61\x69\x74\x69\x6E\x67","\x2F\x77\x61\x69\x74\x69\x6E\x67\x2F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x61\x67\x65\x6E\x74","\x77\x61\x69\x74\x69\x6E\x67\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x65\x78\x70\x6F\x72\x74\x73"];_0x9541[0];var express=require(_0x9541[1]);var controller=require(_0x9541[2]);var auth=require(_0x9541[3]);var license=require(_0x9541[4]);var router=express.Router();router[_0x9541[11]](_0x9541[5],auth[_0x9541[6]](),license[_0x9541[7]](),auth[_0x9541[9]]([17],[_0x9541[8]]),controller[_0x9541[10]]);router[_0x9541[11]](_0x9541[12],auth[_0x9541[6]](),license[_0x9541[7]](),auth[_0x9541[9]]([17],[_0x9541[8]]),controller[_0x9541[13]]);router[_0x9541[11]](_0x9541[14],license[_0x9541[15]](),auth[_0x9541[6]](),license[_0x9541[7]](),auth[_0x9541[9]]([17],[_0x9541[8]]),controller[_0x9541[16]]);router[_0x9541[11]](_0x9541[17],license[_0x9541[15]](),auth[_0x9541[6]](),license[_0x9541[7]](),auth[_0x9541[9]]([17],[_0x9541[8]]),controller[_0x9541[18]]);router[_0x9541[11]](_0x9541[19],auth[_0x9541[6]](),license[_0x9541[7]](),auth[_0x9541[9]]([9],[_0x9541[8],_0x9541[20]]),controller[_0x9541[21]]);module[_0x9541[22]]= router \ No newline at end of file diff --git a/server/api/report_mail_session/report_mail_session.controller.js b/server/api/report_mail_session/report_mail_session.controller.js index 1764001..9768734 100644 --- a/server/api/report_mail_session/report_mail_session.controller.js +++ b/server/api/report_mail_session/report_mail_session.controller.js @@ -1,155 +1 @@ -'use strict'; - -var _ = require('lodash'); -var ReportMailSession = require('../../models').ReportMailSession; -var ReportMailSessionHistory = require('../../models').history.ReportMailSessionHistory; - -var Util = require('../../config/util'); -var User = require('../../models').User; -var Promise = require('bluebird'); - -// Get list of agents -exports.index = function(req, res, next) { - return ReportMailSession - .findAndCountAll(Util.getQuery(req.query)) - .then(function(result) { - res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get list of fields -exports.describe = function(req, res) { - return ReportMailSession - .describe() - .then(function(fields) { - return res.status(200).send(fields); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function getMailQueues(user) { - return function() { - switch (user.role) { - case 'user': - return User - .findById(user.id, { - attributes: ['id'] - }) - .then(Util.getMailQueuesIdByUser({}, { - attributes: ['id'], - include: [{ - raw: true, - model: User, - attributes: ['id'] - }] - })) - .then(function(userQueues) { - var users = []; - userQueues.rows.forEach(function(queue) { - users = _.union(users, _.map(queue.Users, 'id')); - }); - return { - $or: { - queue: _.map(userQueues.rows, 'id'), - memberid: users - } - }; - }); - case 'agent': - return User - .findById(user.id, { - attributes: ['id'] - }) - .then(function(agent) { - return agent - .getMailQueues({ - attributes: ['id'] - }); - }) - .then(function(userQueues) { - return { - $or: { - queue: _.map(userQueues, 'id'), - memberid: user.id - } - }; - }); - default: - return {}; - } - } -} - -// Get timeout apps -exports.timeout = function(req, res) { - return Promise - .all([]) - .then(getMailQueues(req.user)) - .then(function(condition) { - return ReportMailSession - .count(Util.getQuery(req.query, _.merge({ - timeout: true - }, condition))); - }) - .then(function(data) { - return res.status(200).send({ - value: data - }); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -// Get waiting apps -exports.waiting = function(req, res) { - return Promise - .all([]) - .then(getMailQueues(req.user)) - .then(function(condition) { - return ReportMailSession - .count(Util.getQuery(req.query, _.merge({ - leaveAt: null - }, condition))); - }) - .then(function(data) { - return res.status(200).send({ - value: data - }); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -exports.waitingApplications = function(req, res) { - return Promise - .all([]) - .then(getMailQueues(req.user)) - .then(function(condition) { - return ReportMailSession - .findAll(Util.getQuery(req.query, _.merge({ - leaveAt: null - }, condition))); - }) - .then(function(data) { - return res.status(200).send({ - rows: data - }); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0xcbb0=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x52\x65\x70\x6F\x72\x74\x4D\x61\x69\x6C\x53\x65\x73\x73\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x52\x65\x70\x6F\x72\x74\x4D\x61\x69\x6C\x53\x65\x73\x73\x69\x6F\x6E\x48\x69\x73\x74\x6F\x72\x79","\x68\x69\x73\x74\x6F\x72\x79","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x55\x73\x65\x72","\x62\x6C\x75\x65\x62\x69\x72\x64","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x64\x65\x73\x63\x72\x69\x62\x65","\x69\x64","\x6D\x61\x70","\x75\x6E\x69\x6F\x6E","\x66\x6F\x72\x45\x61\x63\x68","\x72\x6F\x77\x73","\x67\x65\x74\x4D\x61\x69\x6C\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x66\x69\x6E\x64\x42\x79\x49\x64","\x75\x73\x65\x72","\x67\x65\x74\x4D\x61\x69\x6C\x51\x75\x65\x75\x65\x73","\x61\x67\x65\x6E\x74","\x72\x6F\x6C\x65","\x74\x69\x6D\x65\x6F\x75\x74","\x6C\x6F\x67","\x6D\x65\x72\x67\x65","\x63\x6F\x75\x6E\x74","\x61\x6C\x6C","\x77\x61\x69\x74\x69\x6E\x67","\x77\x61\x69\x74\x69\x6E\x67\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x66\x69\x6E\x64\x41\x6C\x6C"];_0xcbb0[0];var _=require(_0xcbb0[1]);var ReportMailSession=require(_0xcbb0[3])[_0xcbb0[2]];var ReportMailSessionHistory=require(_0xcbb0[3])[_0xcbb0[5]][_0xcbb0[4]];var Util=require(_0xcbb0[6]);var User=require(_0xcbb0[3])[_0xcbb0[7]];var Promise=require(_0xcbb0[8]);exports[_0xcbb0[9]]= function(_0x6a34x7,_0x6a34x8,_0x6a34x9){return ReportMailSession[_0xcbb0[16]](Util[_0xcbb0[15]](_0x6a34x7[_0xcbb0[14]]))[_0xcbb0[13]](function(_0x6a34xb){_0x6a34x8[_0xcbb0[12]](200)[_0xcbb0[11]](_0x6a34xb)})[_0xcbb0[10]](function(_0x6a34xa){return handleError(_0x6a34x8,_0x6a34xa)})};exports[_0xcbb0[17]]= function(_0x6a34x7,_0x6a34x8){return ReportMailSession[_0xcbb0[17]]()[_0xcbb0[13]](function(_0x6a34xc){return _0x6a34x8[_0xcbb0[12]](200)[_0xcbb0[11]](_0x6a34xc)})[_0xcbb0[10]](function(_0x6a34xa){return handleError(_0x6a34x8,_0x6a34xa)})};function getMailQueues(_0x6a34xe){return function(){switch(_0x6a34xe[_0xcbb0[28]]){case _0xcbb0[25]:return User[_0xcbb0[24]](_0x6a34xe[_0xcbb0[18]],{attributes:[_0xcbb0[18]]})[_0xcbb0[13]](Util[_0xcbb0[23]]({},{attributes:[_0xcbb0[18]],include:[{raw:true,model:User,attributes:[_0xcbb0[18]]}]}))[_0xcbb0[13]](function(_0x6a34xf){var _0x6a34x10=[];_0x6a34xf[_0xcbb0[22]][_0xcbb0[21]](function(_0x6a34x11){_0x6a34x10= _[_0xcbb0[20]](_0x6a34x10,_[_0xcbb0[19]](_0x6a34x11.Users,_0xcbb0[18]))});return {$or:{queue:_[_0xcbb0[19]](_0x6a34xf[_0xcbb0[22]],_0xcbb0[18]),memberid:_0x6a34x10}}});case _0xcbb0[27]:return User[_0xcbb0[24]](_0x6a34xe[_0xcbb0[18]],{attributes:[_0xcbb0[18]]})[_0xcbb0[13]](function(_0x6a34x12){return _0x6a34x12[_0xcbb0[26]]({attributes:[_0xcbb0[18]]})})[_0xcbb0[13]](function(_0x6a34xf){return {$or:{queue:_[_0xcbb0[19]](_0x6a34xf,_0xcbb0[18]),memberid:_0x6a34xe[_0xcbb0[18]]}}});default:return {}}}}exports[_0xcbb0[29]]= function(_0x6a34x7,_0x6a34x8){return Promise[_0xcbb0[33]]([])[_0xcbb0[13]](getMailQueues(_0x6a34x7[_0xcbb0[25]]))[_0xcbb0[13]](function(_0x6a34x14){return ReportMailSession[_0xcbb0[32]](Util[_0xcbb0[15]](_0x6a34x7[_0xcbb0[14]],_[_0xcbb0[31]]({timeout:true},_0x6a34x14)))})[_0xcbb0[13]](function(_0x6a34x13){return _0x6a34x8[_0xcbb0[12]](200)[_0xcbb0[11]]({value:_0x6a34x13})})[_0xcbb0[10]](function(_0x6a34xa){console[_0xcbb0[30]](_0x6a34xa);return handleError(_0x6a34x8,_0x6a34xa)})};exports[_0xcbb0[34]]= function(_0x6a34x7,_0x6a34x8){return Promise[_0xcbb0[33]]([])[_0xcbb0[13]](getMailQueues(_0x6a34x7[_0xcbb0[25]]))[_0xcbb0[13]](function(_0x6a34x14){return ReportMailSession[_0xcbb0[32]](Util[_0xcbb0[15]](_0x6a34x7[_0xcbb0[14]],_[_0xcbb0[31]]({leaveAt:null},_0x6a34x14)))})[_0xcbb0[13]](function(_0x6a34x13){return _0x6a34x8[_0xcbb0[12]](200)[_0xcbb0[11]]({value:_0x6a34x13})})[_0xcbb0[10]](function(_0x6a34xa){console[_0xcbb0[30]](_0x6a34xa);return handleError(_0x6a34x8,_0x6a34xa)})};exports[_0xcbb0[35]]= function(_0x6a34x7,_0x6a34x8){return Promise[_0xcbb0[33]]([])[_0xcbb0[13]](getMailQueues(_0x6a34x7[_0xcbb0[25]]))[_0xcbb0[13]](function(_0x6a34x14){return ReportMailSession[_0xcbb0[36]](Util[_0xcbb0[15]](_0x6a34x7[_0xcbb0[14]],_[_0xcbb0[31]]({leaveAt:null},_0x6a34x14)))})[_0xcbb0[13]](function(_0x6a34x13){return _0x6a34x8[_0xcbb0[12]](200)[_0xcbb0[11]]({rows:_0x6a34x13})})[_0xcbb0[10]](function(_0x6a34xa){console[_0xcbb0[30]](_0x6a34xa);return handleError(_0x6a34x8,_0x6a34xa)})};function handleError(_0x6a34x8,_0x6a34xa){return _0x6a34x8[_0xcbb0[12]](500)[_0xcbb0[11]](_0x6a34xa)} \ No newline at end of file diff --git a/server/api/report_mail_session/report_mail_session.events.js b/server/api/report_mail_session/report_mail_session.events.js index 95c4a4e..1319b9f 100644 --- a/server/api/report_mail_session/report_mail_session.events.js +++ b/server/api/report_mail_session/report_mail_session.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const ReportMailSession = require('../../models').ReportMailSession; - -var ReportMailSessionEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -ReportMailSessionEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - ReportMailSession.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - ReportMailSessionEvents.emit(event + ':' + doc._id, doc); - ReportMailSessionEvents.emit(event, doc); - done(null); - } -} - -module.exports = ReportMailSessionEvents; +var _0xc17f=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x52\x65\x70\x6F\x72\x74\x4D\x61\x69\x6C\x53\x65\x73\x73\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xc17f[0];const EventEmitter=require(_0xc17f[1]);const ReportMailSession=require(_0xc17f[3])[_0xc17f[2]];var ReportMailSessionEvents= new EventEmitter();ReportMailSessionEvents[_0xc17f[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xc17f[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xc17f[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xc17f[6]};for(var e in events){var event=events[e];ReportMailSession[_0xc17f[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xd29cx8,_0xd29cx9,_0xd29cxa){ReportMailSessionEvents[_0xc17f[10]](event+ _0xc17f[8]+ _0xd29cx8[_0xc17f[9]],_0xd29cx8);ReportMailSessionEvents[_0xc17f[10]](event,_0xd29cx8);_0xd29cxa(null)}}module[_0xc17f[11]]= ReportMailSessionEvents \ No newline at end of file diff --git a/server/api/report_mail_session/report_mail_session.socket.js b/server/api/report_mail_session/report_mail_session.socket.js index 5014a50..093a45b 100644 --- a/server/api/report_mail_session/report_mail_session.socket.js +++ b/server/api/report_mail_session/report_mail_session.socket.js @@ -1,104 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const ReportMailSessionEvents = require('./report_mail_session.events'); -const User = require('../../models').User; -const Util = require('../../config/util'); -const _ = require('lodash'); -const Promise = require('bluebird'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('report_mail_session:' + event, socket); - - ReportMailSessionEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - switch (event) { - case 'report_mail_session:save': - return Promise - .all([]) - .then(getMailQueues(socket)) - .then(function(condition) { - if (socket.role === 'admin' || _.includes(condition.memberid, doc.memberid) || _.includes(condition.queue, doc.queue)) { - socket.emit(event, doc); - } - }) - .catch(function(err) { - console.log('Error filtering report mail sessions after save', err); - }); - case 'report_mail_session:remove': - socket.emit(event, doc); - break; - - default: - - } - }; -} - -function removeListener(event, listener) { - return function() { - ReportMailSessionEvents.removeListener(event, listener); - }; -} - -function getMailQueues(user) { - return function() { - switch (user.role) { - case 'user': - return User - .findById(user.userId, { - attributes: ['id'] - }) - .then(Util.getMailQueuesIdByUser({}, { - attributes: ['id'], - include: [{ - raw: true, - model: User, - attributes: ['id'] - }] - })) - .then(function(userQueues) { - var users = []; - userQueues.rows.forEach(function(queue) { - users = _.union(users, _.map(queue.Users, 'id')); - }); - return { - queue: _.map(userQueues.rows, 'id'), - memberid: users - }; - }); - case 'agent': - return User - .findById(user.userId, { - attributes: ['id'] - }) - .then(function(agent) { - return agent - .getMailQueues({ - attributes: ['id'] - }); - }) - .then(function(userQueues) { - return { - queue: _.map(userQueues, 'id'), - memberid: user.userId - }; - }); - default: - return {}; - } - } -} +var _0x4aad=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x6D\x61\x69\x6C\x5F\x73\x65\x73\x73\x69\x6F\x6E\x2E\x65\x76\x65\x6E\x74\x73","\x55\x73\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x6C\x6F\x64\x61\x73\x68","\x62\x6C\x75\x65\x62\x69\x72\x64","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x72\x65\x70\x6F\x72\x74\x5F\x6D\x61\x69\x6C\x5F\x73\x65\x73\x73\x69\x6F\x6E\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x45\x72\x72\x6F\x72\x20\x66\x69\x6C\x74\x65\x72\x69\x6E\x67\x20\x72\x65\x70\x6F\x72\x74\x20\x6D\x61\x69\x6C\x20\x73\x65\x73\x73\x69\x6F\x6E\x73\x20\x61\x66\x74\x65\x72\x20\x73\x61\x76\x65","\x6C\x6F\x67","\x63\x61\x74\x63\x68","\x72\x6F\x6C\x65","\x61\x64\x6D\x69\x6E","\x6D\x65\x6D\x62\x65\x72\x69\x64","\x69\x6E\x63\x6C\x75\x64\x65\x73","\x71\x75\x65\x75\x65","\x65\x6D\x69\x74","\x74\x68\x65\x6E","\x61\x6C\x6C","\x72\x65\x70\x6F\x72\x74\x5F\x6D\x61\x69\x6C\x5F\x73\x65\x73\x73\x69\x6F\x6E\x3A\x73\x61\x76\x65","\x72\x65\x70\x6F\x72\x74\x5F\x6D\x61\x69\x6C\x5F\x73\x65\x73\x73\x69\x6F\x6E\x3A\x72\x65\x6D\x6F\x76\x65","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72","\x69\x64","\x6D\x61\x70","\x75\x6E\x69\x6F\x6E","\x66\x6F\x72\x45\x61\x63\x68","\x72\x6F\x77\x73","\x67\x65\x74\x4D\x61\x69\x6C\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x75\x73\x65\x72\x49\x64","\x66\x69\x6E\x64\x42\x79\x49\x64","\x75\x73\x65\x72","\x67\x65\x74\x4D\x61\x69\x6C\x51\x75\x65\x75\x65\x73","\x61\x67\x65\x6E\x74"];_0x4aad[0];const ReportMailSessionEvents=require(_0x4aad[1]);const User=require(_0x4aad[3])[_0x4aad[2]];const Util=require(_0x4aad[4]);const _=require(_0x4aad[5]);const Promise=require(_0x4aad[6]);var events=[_0x4aad[7],_0x4aad[8]];exports[_0x4aad[9]]= function(_0xd884x7){for(var _0xd884x8=0,_0xd884x9=events[_0x4aad[10]];_0xd884x8< _0xd884x9;_0xd884x8++){var _0xd884xa=events[_0xd884x8];var _0xd884xb=createListener(_0x4aad[11]+ _0xd884xa,_0xd884x7);ReportMailSessionEvents[_0x4aad[12]](_0xd884xa,_0xd884xb);_0xd884x7[_0x4aad[12]](_0x4aad[13],removeListener(_0xd884xa,_0xd884xb))}};function createListener(_0xd884xa,_0xd884x7){return function(_0xd884xd){switch(_0xd884xa){case _0x4aad[25]:return Promise[_0x4aad[24]]([])[_0x4aad[23]](getMailQueues(_0xd884x7))[_0x4aad[23]](function(_0xd884xf){if(_0xd884x7[_0x4aad[17]]=== _0x4aad[18]|| _[_0x4aad[20]](_0xd884xf[_0x4aad[19]],_0xd884xd[_0x4aad[19]])|| _[_0x4aad[20]](_0xd884xf[_0x4aad[21]],_0xd884xd[_0x4aad[21]])){_0xd884x7[_0x4aad[22]](_0xd884xa,_0xd884xd)}})[_0x4aad[16]](function(_0xd884xe){console[_0x4aad[15]](_0x4aad[14],_0xd884xe)});case _0x4aad[26]:_0xd884x7[_0x4aad[22]](_0xd884xa,_0xd884xd);break;default:}}}function removeListener(_0xd884xa,_0xd884xb){return function(){ReportMailSessionEvents[_0x4aad[27]](_0xd884xa,_0xd884xb)}}function getMailQueues(_0xd884x12){return function(){switch(_0xd884x12[_0x4aad[17]]){case _0x4aad[36]:return User[_0x4aad[35]](_0xd884x12[_0x4aad[34]],{attributes:[_0x4aad[28]]})[_0x4aad[23]](Util[_0x4aad[33]]({},{attributes:[_0x4aad[28]],include:[{raw:true,model:User,attributes:[_0x4aad[28]]}]}))[_0x4aad[23]](function(_0xd884x13){var _0xd884x14=[];_0xd884x13[_0x4aad[32]][_0x4aad[31]](function(_0xd884x15){_0xd884x14= _[_0x4aad[30]](_0xd884x14,_[_0x4aad[29]](_0xd884x15.Users,_0x4aad[28]))});return {queue:_[_0x4aad[29]](_0xd884x13[_0x4aad[32]],_0x4aad[28]),memberid:_0xd884x14}});case _0x4aad[38]:return User[_0x4aad[35]](_0xd884x12[_0x4aad[34]],{attributes:[_0x4aad[28]]})[_0x4aad[23]](function(_0xd884x16){return _0xd884x16[_0x4aad[37]]({attributes:[_0x4aad[28]]})})[_0x4aad[23]](function(_0xd884x13){return {queue:_[_0x4aad[29]](_0xd884x13,_0x4aad[28]),memberid:_0xd884x12[_0x4aad[34]]}});default:return {}}}} \ No newline at end of file diff --git a/server/api/report_member/index.js b/server/api/report_member/index.js index 0afbd74..3c9c1d0 100644 --- a/server/api/report_member/index.js +++ b/server/api/report_member/index.js @@ -1,12 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./report_member.controller'); -var auth = require('../../auth/auth.service'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), auth.hasModule([17], ['admin']), controller.index); -router.get('/describe', auth.isAuthenticated(), auth.hasModule([17], ['admin']), controller.describe); - -module.exports = router; +var _0x9086=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x6D\x65\x6D\x62\x65\x72\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x64\x65\x73\x63\x72\x69\x62\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0x9086[0];var express=require(_0x9086[1]);var controller=require(_0x9086[2]);var auth=require(_0x9086[3]);var router=express.Router();router[_0x9086[9]](_0x9086[4],auth[_0x9086[5]](),auth[_0x9086[7]]([17],[_0x9086[6]]),controller[_0x9086[8]]);router[_0x9086[9]](_0x9086[10],auth[_0x9086[5]](),auth[_0x9086[7]]([17],[_0x9086[6]]),controller[_0x9086[11]]);module[_0x9086[12]]= router \ No newline at end of file diff --git a/server/api/report_member/report_member.controller.js b/server/api/report_member/report_member.controller.js index 6864b80..f7b65a1 100644 --- a/server/api/report_member/report_member.controller.js +++ b/server/api/report_member/report_member.controller.js @@ -1,34 +1 @@ -'use strict'; - -var _ = require('lodash'); -var ReportMember = require('../../models').ReportMember; -var ReportMemberHistory = require('../../models').history.ReportMemberHistory; -var Util = require('../../config/util'); - -// Get list of report_members -exports.index = function(req, res, next) { - return ReportMember - .findAndCountAll(Util.getQuery(req.query)) - .then(function(result) { - return res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get list of fields -exports.describe = function(req, res) { - return ReportMemberHistory - .describe() - .then(function(fields) { - return res.status(200).send(fields); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0xadc9=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x52\x65\x70\x6F\x72\x74\x4D\x65\x6D\x62\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x52\x65\x70\x6F\x72\x74\x4D\x65\x6D\x62\x65\x72\x48\x69\x73\x74\x6F\x72\x79","\x68\x69\x73\x74\x6F\x72\x79","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x64\x65\x73\x63\x72\x69\x62\x65"];_0xadc9[0];var _=require(_0xadc9[1]);var ReportMember=require(_0xadc9[3])[_0xadc9[2]];var ReportMemberHistory=require(_0xadc9[3])[_0xadc9[5]][_0xadc9[4]];var Util=require(_0xadc9[6]);exports[_0xadc9[7]]= function(_0xa795x5,_0xa795x6,_0xa795x7){return ReportMember[_0xadc9[14]](Util[_0xadc9[13]](_0xa795x5[_0xadc9[12]]))[_0xadc9[11]](function(_0xa795x9){return _0xa795x6[_0xadc9[10]](200)[_0xadc9[9]](_0xa795x9)})[_0xadc9[8]](function(_0xa795x8){return handleError(_0xa795x6,_0xa795x8)})};exports[_0xadc9[15]]= function(_0xa795x5,_0xa795x6){return ReportMemberHistory[_0xadc9[15]]()[_0xadc9[11]](function(_0xa795xa){return _0xa795x6[_0xadc9[10]](200)[_0xadc9[9]](_0xa795xa)})[_0xadc9[8]](function(_0xa795x8){return handleError(_0xa795x6,_0xa795x8)})};function handleError(_0xa795x6,_0xa795x8){return _0xa795x6[_0xadc9[10]](500)[_0xadc9[9]](_0xa795x8)} \ No newline at end of file diff --git a/server/api/report_member/report_member.events.js b/server/api/report_member/report_member.events.js index d42092f..d1fdf9e 100644 --- a/server/api/report_member/report_member.events.js +++ b/server/api/report_member/report_member.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const ReportMember = require('../../models').ReportMember; - -var ReportMemberEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -ReportMemberEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - ReportMember.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - ReportMemberEvents.emit(event + ':' + doc._id, doc); - ReportMemberEvents.emit(event, doc); - done(null); - } -} - -module.exports = ReportMemberEvents; +var _0xe341=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x52\x65\x70\x6F\x72\x74\x4D\x65\x6D\x62\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xe341[0];const EventEmitter=require(_0xe341[1]);const ReportMember=require(_0xe341[3])[_0xe341[2]];var ReportMemberEvents= new EventEmitter();ReportMemberEvents[_0xe341[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xe341[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xe341[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xe341[6]};for(var e in events){var event=events[e];ReportMember[_0xe341[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x957cx8,_0x957cx9,_0x957cxa){ReportMemberEvents[_0xe341[10]](event+ _0xe341[8]+ _0x957cx8[_0xe341[9]],_0x957cx8);ReportMemberEvents[_0xe341[10]](event,_0x957cx8);_0x957cxa(null)}}module[_0xe341[11]]= ReportMemberEvents \ No newline at end of file diff --git a/server/api/report_member/report_member.socket.js b/server/api/report_member/report_member.socket.js index d0b7de2..5d20774 100644 --- a/server/api/report_member/report_member.socket.js +++ b/server/api/report_member/report_member.socket.js @@ -1,45 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const ReportMemberEvents = require('./report_member.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('report_member:' + event, socket); - - ReportMemberEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - switch (event) { - case 'report_member:save': - if (socket.name === doc.membername || socket.role === 'admin') { - socket.emit(event, doc); - } - break; - - case 'report_member:remove': - socket.emit(event, doc); - break; - - default: - - } - }; -} - -function removeListener(event, listener) { - return function() { - ReportMemberEvents.removeListener(event, listener); - }; -} +var _0xbf0a=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x6D\x65\x6D\x62\x65\x72\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x72\x65\x70\x6F\x72\x74\x5F\x6D\x65\x6D\x62\x65\x72\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x6E\x61\x6D\x65","\x6D\x65\x6D\x62\x65\x72\x6E\x61\x6D\x65","\x72\x6F\x6C\x65","\x61\x64\x6D\x69\x6E","\x65\x6D\x69\x74","\x72\x65\x70\x6F\x72\x74\x5F\x6D\x65\x6D\x62\x65\x72\x3A\x73\x61\x76\x65","\x72\x65\x70\x6F\x72\x74\x5F\x6D\x65\x6D\x62\x65\x72\x3A\x72\x65\x6D\x6F\x76\x65","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xbf0a[0];const ReportMemberEvents=require(_0xbf0a[1]);var events=[_0xbf0a[2],_0xbf0a[3]];exports[_0xbf0a[4]]= function(_0x39e0x3){for(var _0x39e0x4=0,_0x39e0x5=events[_0xbf0a[5]];_0x39e0x4< _0x39e0x5;_0x39e0x4++){var _0x39e0x6=events[_0x39e0x4];var _0x39e0x7=createListener(_0xbf0a[6]+ _0x39e0x6,_0x39e0x3);ReportMemberEvents[_0xbf0a[7]](_0x39e0x6,_0x39e0x7);_0x39e0x3[_0xbf0a[7]](_0xbf0a[8],removeListener(_0x39e0x6,_0x39e0x7))}};function createListener(_0x39e0x6,_0x39e0x3){return function(_0x39e0x9){switch(_0x39e0x6){case _0xbf0a[14]:if(_0x39e0x3[_0xbf0a[9]]=== _0x39e0x9[_0xbf0a[10]]|| _0x39e0x3[_0xbf0a[11]]=== _0xbf0a[12]){_0x39e0x3[_0xbf0a[13]](_0x39e0x6,_0x39e0x9)};break;case _0xbf0a[15]:_0x39e0x3[_0xbf0a[13]](_0x39e0x6,_0x39e0x9);break;default:}}}function removeListener(_0x39e0x6,_0x39e0x7){return function(){ReportMemberEvents[_0xbf0a[16]](_0x39e0x6,_0x39e0x7)}} \ No newline at end of file diff --git a/server/api/report_openchannel/index.js b/server/api/report_openchannel/index.js index 3703020..99fd3cd 100644 --- a/server/api/report_openchannel/index.js +++ b/server/api/report_openchannel/index.js @@ -1,14 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./report_openchannel.controller'); -var auth = require('../../auth/auth.service'); -var license = require('../../config/license/license.service'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), license.hasOpenchannel(), auth.hasModule([17], ['admin', 'agent']), controller.index); -router.get('/:id/accept/:uniqueid', auth.isAuthenticated(), license.hasOpenchannel(), auth.hasRole('agent'), controller.accept); -router.get('/:id/reject', auth.isAuthenticated(), license.hasOpenchannel(), auth.hasRole('agent'), controller.reject); - -module.exports = router; +var _0x15a1=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x68\x61\x73\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64\x2F\x61\x63\x63\x65\x70\x74\x2F\x3A\x75\x6E\x69\x71\x75\x65\x69\x64","\x68\x61\x73\x52\x6F\x6C\x65","\x61\x63\x63\x65\x70\x74","\x2F\x3A\x69\x64\x2F\x72\x65\x6A\x65\x63\x74","\x72\x65\x6A\x65\x63\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x15a1[0];var express=require(_0x15a1[1]);var controller=require(_0x15a1[2]);var auth=require(_0x15a1[3]);var license=require(_0x15a1[4]);var router=express.Router();router[_0x15a1[12]](_0x15a1[5],auth[_0x15a1[6]](),license[_0x15a1[7]](),auth[_0x15a1[10]]([17],[_0x15a1[8],_0x15a1[9]]),controller[_0x15a1[11]]);router[_0x15a1[12]](_0x15a1[13],auth[_0x15a1[6]](),license[_0x15a1[7]](),auth[_0x15a1[14]](_0x15a1[9]),controller[_0x15a1[15]]);router[_0x15a1[12]](_0x15a1[16],auth[_0x15a1[6]](),license[_0x15a1[7]](),auth[_0x15a1[14]](_0x15a1[9]),controller[_0x15a1[17]]);module[_0x15a1[18]]= router \ No newline at end of file diff --git a/server/api/report_openchannel/report_openchannel.controller.js b/server/api/report_openchannel/report_openchannel.controller.js index 8dd23a3..bec5c4c 100644 --- a/server/api/report_openchannel/report_openchannel.controller.js +++ b/server/api/report_openchannel/report_openchannel.controller.js @@ -1,117 +1 @@ -'use strict'; -var _ = require('lodash'); -var ReportOpenchannel = require('../../models').ReportOpenchannel; -var OpenchannelRoom = require('../../models').OpenchannelRoom; -var sequelize = require('../../models').sequelize; -var Agent = require('../../models').User; -var Util = require('../../config/util'); -var moment = require('moment'); - - - -function handleError(res, err) { - return res.status(500).send(err); -} - -// Gets a list of Report - - - -exports.index = function(req, res) { - return ReportOpenchannel - .findAndCountAll(Util.getQuery(req.query)) - .then(function(result) { - res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - - -// Get a single report -exports.accept = function(req, res) { - var _agent; - var _roomid = req.params.uniqueid.split('.')[1]; - - return Agent - .findById(req.user.id, { - attributes: ['id', 'openchannelCapacity'] - }) - .then(function(agent) { - _agent = agent; - return agent - .getOpenchannelRooms({ - where: { - status: { - $ne: 'CLOSED' - }, - id: { - $ne: _roomid - } - }, - attributes: ['id'] - }); - }) - .then(function(Rooms) { - return ReportOpenchannel - .findById(req.params.id); - }) - .then(function(report) { - if (!report) { - return res.sendStatus(404); - } - - var updated = _.merge(report, { - connectid: req.params.uniqueid - }); - - return updated - .save(); - }) - .then(function() { - return OpenchannelRoom - .update({ - status: 'OPEN', - openReason: 'agent' - }, { - where: { - id: _roomid - }, - user: req.user, - individualHooks: true - }); - }) - .then(function() { - return res.sendStatus(200); - }) - .catch(sequelize.UniqueConstraintError, function(err) { - return res.sendStatus(504); - }) - .catch(function(err) { - return handleError(res, err); - }); - -}; - -// Get a single report -exports.reject = function(req, res) { - return ReportOpenchannel - .findById(req.params.id) - .then(function(report) { - if (!report) { - return res.sendStatus(404); - } - var updated = _.merge(report, { - rejectedAt: moment().format("YYYY-MM-DD HH:mm:ss") - }); - return updated - .save(); - }) - .then(function() { - return res.sendStatus(200); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; +var _0x9572=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x52\x65\x70\x6F\x72\x74\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x52\x6F\x6F\x6D","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x55\x73\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x6D\x6F\x6D\x65\x6E\x74","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x61\x63\x63\x65\x70\x74","\x2E","\x73\x70\x6C\x69\x74","\x75\x6E\x69\x71\x75\x65\x69\x64","\x70\x61\x72\x61\x6D\x73","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x4F\x50\x45\x4E","\x61\x67\x65\x6E\x74","\x75\x73\x65\x72","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x69\x64","\x66\x69\x6E\x64\x42\x79\x49\x64","\x43\x4C\x4F\x53\x45\x44","\x67\x65\x74\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x52\x6F\x6F\x6D\x73","\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x43\x61\x70\x61\x63\x69\x74\x79","\x72\x65\x6A\x65\x63\x74","\x59\x59\x59\x59\x2D\x4D\x4D\x2D\x44\x44\x20\x48\x48\x3A\x6D\x6D\x3A\x73\x73","\x66\x6F\x72\x6D\x61\x74"];_0x9572[0];var _=require(_0x9572[1]);var ReportOpenchannel=require(_0x9572[3])[_0x9572[2]];var OpenchannelRoom=require(_0x9572[3])[_0x9572[4]];var sequelize=require(_0x9572[3])[_0x9572[5]];var Agent=require(_0x9572[3])[_0x9572[6]];var Util=require(_0x9572[7]);var moment=require(_0x9572[8]);function handleError(_0xc4ddx9,_0xc4ddxa){return _0xc4ddx9[_0x9572[10]](500)[_0x9572[9]](_0xc4ddxa)}exports[_0x9572[11]]= function(_0xc4ddxb,_0xc4ddx9){return ReportOpenchannel[_0x9572[16]](Util[_0x9572[15]](_0xc4ddxb[_0x9572[14]]))[_0x9572[13]](function(_0xc4ddxc){_0xc4ddx9[_0x9572[10]](200)[_0x9572[9]](_0xc4ddxc)})[_0x9572[12]](function(_0xc4ddxa){return handleError(_0xc4ddx9,_0xc4ddxa)})};exports[_0x9572[17]]= function(_0xc4ddxb,_0xc4ddx9){var _0xc4ddxd;var _0xc4ddxe=_0xc4ddxb[_0x9572[21]][_0x9572[20]][_0x9572[19]](_0x9572[18])[1];return Agent[_0x9572[30]](_0xc4ddxb[_0x9572[25]][_0x9572[29]],{attributes:[_0x9572[29],_0x9572[33]]})[_0x9572[13]](function(_0xc4ddx12){_0xc4ddxd= _0xc4ddx12;return _0xc4ddx12[_0x9572[32]]({where:{status:{$ne:_0x9572[31]},id:{$ne:_0xc4ddxe}},attributes:[_0x9572[29]]})})[_0x9572[13]](function(_0xc4ddx11){return ReportOpenchannel[_0x9572[30]](_0xc4ddxb[_0x9572[21]][_0x9572[29]])})[_0x9572[13]](function(_0xc4ddxf){if(!_0xc4ddxf){return _0xc4ddx9[_0x9572[22]](404)};var _0xc4ddx10=_[_0x9572[27]](_0xc4ddxf,{connectid:_0xc4ddxb[_0x9572[21]][_0x9572[20]]});return _0xc4ddx10[_0x9572[28]]()})[_0x9572[13]](function(){return OpenchannelRoom[_0x9572[26]]({status:_0x9572[23],openReason:_0x9572[24]},{where:{id:_0xc4ddxe},user:_0xc4ddxb[_0x9572[25]],individualHooks:true})})[_0x9572[13]](function(){return _0xc4ddx9[_0x9572[22]](200)})[_0x9572[12]](sequelize.UniqueConstraintError,function(_0xc4ddxa){return _0xc4ddx9[_0x9572[22]](504)})[_0x9572[12]](function(_0xc4ddxa){return handleError(_0xc4ddx9,_0xc4ddxa)})};exports[_0x9572[34]]= function(_0xc4ddxb,_0xc4ddx9){return ReportOpenchannel[_0x9572[30]](_0xc4ddxb[_0x9572[21]][_0x9572[29]])[_0x9572[13]](function(_0xc4ddxf){if(!_0xc4ddxf){return _0xc4ddx9[_0x9572[22]](404)};var _0xc4ddx10=_[_0x9572[27]](_0xc4ddxf,{rejectedAt:moment()[_0x9572[36]](_0x9572[35])});return _0xc4ddx10[_0x9572[28]]()})[_0x9572[13]](function(){return _0xc4ddx9[_0x9572[22]](200)})[_0x9572[12]](function(_0xc4ddxa){return handleError(_0xc4ddx9,_0xc4ddxa)})} \ No newline at end of file diff --git a/server/api/report_openchannel/report_openchannel.events.js b/server/api/report_openchannel/report_openchannel.events.js index e0277fc..bb1a20d 100644 --- a/server/api/report_openchannel/report_openchannel.events.js +++ b/server/api/report_openchannel/report_openchannel.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const ReportOpenchannel = require('../../models').ReportOpenchannel; - -var ReportOpenchannelEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -ReportOpenchannelEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'update', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - ReportOpenchannel.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - ReportOpenchannelEvents.emit(event + ':' + doc._id, doc); - ReportOpenchannelEvents.emit(event, doc); - done(null); - } -} - -module.exports = ReportOpenchannelEvents; +var _0xf478=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x52\x65\x70\x6F\x72\x74\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x75\x70\x64\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xf478[0];const EventEmitter=require(_0xf478[1]);const ReportOpenchannel=require(_0xf478[3])[_0xf478[2]];var ReportOpenchannelEvents= new EventEmitter();ReportOpenchannelEvents[_0xf478[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xf478[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xf478[6],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xf478[7]};for(var e in events){var event=events[e];ReportOpenchannel[_0xf478[8]](e,emitEvent(event))};function emitEvent(event){return function(_0x6c14x8,_0x6c14x9,_0x6c14xa){ReportOpenchannelEvents[_0xf478[11]](event+ _0xf478[9]+ _0x6c14x8[_0xf478[10]],_0x6c14x8);ReportOpenchannelEvents[_0xf478[11]](event,_0x6c14x8);_0x6c14xa(null)}}module[_0xf478[12]]= ReportOpenchannelEvents \ No newline at end of file diff --git a/server/api/report_openchannel/report_openchannel.socket.js b/server/api/report_openchannel/report_openchannel.socket.js index 994bcd8..7ac5b12 100644 --- a/server/api/report_openchannel/report_openchannel.socket.js +++ b/server/api/report_openchannel/report_openchannel.socket.js @@ -1,45 +1 @@ -/** - * Broadcast updates to client when the model changes - */ -// -'use strict'; -// -const ReportOpenchannelEvents = require('./report_openchannel.events'); - -// Model events to emit -var events = ['save', 'update', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('report_openchannel:' + event, socket); - - ReportOpenchannelEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - switch (event) { - case 'report_openchannel:save': - case 'report_openchannel:update': - if (socket.name === doc.membername || socket.role === 'admin') { - socket.emit(event, doc); - } - break; - case 'report_openchannel:remove': - socket.emit(event, doc); - break; - - default: - - } - }; -} - -function removeListener(event, listener) { - return function() { - ReportOpenchannelEvents.removeListener(event, listener); - }; -} +var _0x10aa=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x75\x70\x64\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x72\x65\x70\x6F\x72\x74\x5F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x72\x65\x70\x6F\x72\x74\x5F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x3A\x73\x61\x76\x65","\x6E\x61\x6D\x65","\x6D\x65\x6D\x62\x65\x72\x6E\x61\x6D\x65","\x72\x6F\x6C\x65","\x61\x64\x6D\x69\x6E","\x65\x6D\x69\x74","\x72\x65\x70\x6F\x72\x74\x5F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x3A\x75\x70\x64\x61\x74\x65","\x72\x65\x70\x6F\x72\x74\x5F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x3A\x72\x65\x6D\x6F\x76\x65","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x10aa[0];const ReportOpenchannelEvents=require(_0x10aa[1]);var events=[_0x10aa[2],_0x10aa[3],_0x10aa[4]];exports[_0x10aa[5]]= function(_0xfe73x3){for(var _0xfe73x4=0,_0xfe73x5=events[_0x10aa[6]];_0xfe73x4< _0xfe73x5;_0xfe73x4++){var _0xfe73x6=events[_0xfe73x4];var _0xfe73x7=createListener(_0x10aa[7]+ _0xfe73x6,_0xfe73x3);ReportOpenchannelEvents[_0x10aa[8]](_0xfe73x6,_0xfe73x7);_0xfe73x3[_0x10aa[8]](_0x10aa[9],removeListener(_0xfe73x6,_0xfe73x7))}};function createListener(_0xfe73x6,_0xfe73x3){return function(_0xfe73x9){switch(_0xfe73x6){case _0x10aa[10]:;case _0x10aa[16]:if(_0xfe73x3[_0x10aa[11]]=== _0xfe73x9[_0x10aa[12]]|| _0xfe73x3[_0x10aa[13]]=== _0x10aa[14]){_0xfe73x3[_0x10aa[15]](_0xfe73x6,_0xfe73x9)};break;case _0x10aa[17]:_0xfe73x3[_0x10aa[15]](_0xfe73x6,_0xfe73x9);break;default:}}}function removeListener(_0xfe73x6,_0xfe73x7){return function(){ReportOpenchannelEvents[_0x10aa[18]](_0xfe73x6,_0xfe73x7)}} \ No newline at end of file diff --git a/server/api/report_openchannel_session/index.js b/server/api/report_openchannel_session/index.js index 832ba1c..cdc82bb 100644 --- a/server/api/report_openchannel_session/index.js +++ b/server/api/report_openchannel_session/index.js @@ -1,16 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./report_openchannel_session.controller'); -var auth = require('../../auth/auth.service'); -var license = require('../../config/license/license.service'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), license.hasOpenchannel(), auth.hasModule([20], ['admin']), controller.index); -router.get('/describe', auth.isAuthenticated(), license.hasOpenchannel(), auth.hasModule([20], ['admin']), controller.describe); -router.get('/timeout', license.isValidDate(), auth.isAuthenticated(), license.hasOpenchannel(), auth.hasModule([20], ['admin']), controller.timeout); -router.get('/waiting', license.isValidDate(), auth.isAuthenticated(), license.hasOpenchannel(), auth.hasModule([20], ['admin']), controller.waiting); -router.get('/waiting/applications', auth.isAuthenticated(), license.hasOpenchannel(), controller.waitingApplications); -// , auth.hasModule([11], ['admin', 'agent']) -module.exports = router; +var _0x777a=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x73\x65\x73\x73\x69\x6F\x6E\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x68\x61\x73\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x64\x65\x73\x63\x72\x69\x62\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x2F\x74\x69\x6D\x65\x6F\x75\x74","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x74\x69\x6D\x65\x6F\x75\x74","\x2F\x77\x61\x69\x74\x69\x6E\x67","\x77\x61\x69\x74\x69\x6E\x67","\x2F\x77\x61\x69\x74\x69\x6E\x67\x2F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x77\x61\x69\x74\x69\x6E\x67\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x65\x78\x70\x6F\x72\x74\x73"];_0x777a[0];var express=require(_0x777a[1]);var controller=require(_0x777a[2]);var auth=require(_0x777a[3]);var license=require(_0x777a[4]);var router=express.Router();router[_0x777a[11]](_0x777a[5],auth[_0x777a[6]](),license[_0x777a[7]](),auth[_0x777a[9]]([20],[_0x777a[8]]),controller[_0x777a[10]]);router[_0x777a[11]](_0x777a[12],auth[_0x777a[6]](),license[_0x777a[7]](),auth[_0x777a[9]]([20],[_0x777a[8]]),controller[_0x777a[13]]);router[_0x777a[11]](_0x777a[14],license[_0x777a[15]](),auth[_0x777a[6]](),license[_0x777a[7]](),auth[_0x777a[9]]([20],[_0x777a[8]]),controller[_0x777a[16]]);router[_0x777a[11]](_0x777a[17],license[_0x777a[15]](),auth[_0x777a[6]](),license[_0x777a[7]](),auth[_0x777a[9]]([20],[_0x777a[8]]),controller[_0x777a[18]]);router[_0x777a[11]](_0x777a[19],auth[_0x777a[6]](),license[_0x777a[7]](),controller[_0x777a[20]]);module[_0x777a[21]]= router \ No newline at end of file diff --git a/server/api/report_openchannel_session/report_openchannel_session.controller.js b/server/api/report_openchannel_session/report_openchannel_session.controller.js index e6a814a..338efb4 100644 --- a/server/api/report_openchannel_session/report_openchannel_session.controller.js +++ b/server/api/report_openchannel_session/report_openchannel_session.controller.js @@ -1,155 +1 @@ -'use strict'; - -var _ = require('lodash'); -var ReportOpenchannelSession = require('../../models').ReportOpenchannelSession; -var ReportOpenchannelSessionHistory = require('../../models').history.ReportOpenchannelSessionHistory; - -var Util = require('../../config/util'); -var User = require('../../models').User; -var Promise = require('bluebird'); - -// Get list of agents -exports.index = function(req, res, next) { - return ReportOpenchannelSession - .findAndCountAll(Util.getQuery(req.query)) - .then(function(result) { - res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get list of fields -exports.describe = function(req, res) { - return ReportOpenchannelSessionHistory - .describe() - .then(function(fields) { - return res.status(200).send(fields); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function getOpenchannelQueues(user) { - return function() { - switch (user.role) { - case 'user': - return User - .findById(user.id, { - attributes: ['id'] - }) - .then(Util.getOpenchannelQueuesIdByUser({}, { - attributes: ['id'], - include: [{ - raw: true, - model: User, - attributes: ['id'] - }] - })) - .then(function(userQueues) { - var users = []; - userQueues.rows.forEach(function(queue) { - users = _.union(users, _.map(queue.Users, 'id')); - }); - return { - $or: { - queue: _.map(userQueues.rows, 'id'), - memberid: users - } - }; - }); - case 'agent': - return User - .findById(user.id, { - attributes: ['id'] - }) - .then(function(agent) { - return agent - .getOpenchannelQueues({ - attributes: ['id'] - }); - }) - .then(function(userQueues) { - return { - $or: { - queue: _.map(userQueues, 'id'), - memberid: user.id - } - }; - }); - default: - return {}; - } - } -} - -// Get timeout apps -exports.timeout = function(req, res) { - return Promise - .all([]) - .then(getOpenchannelQueues(req.user)) - .then(function(condition) { - return ReportOpenchannelSession - .count(Util.getQuery(req.query, _.merge({ - timeout: true - }, condition))); - }) - .then(function(data) { - return res.status(200).send({ - value: data - }); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -// Get waiting apps -exports.waiting = function(req, res) { - return Promise - .all([]) - .then(getOpenchannelQueues(req.user)) - .then(function(condition) { - return ReportOpenchannelSession - .count(Util.getQuery(req.query, _.merge({ - leaveAt: null - }, condition))); - }) - .then(function(data) { - return res.status(200).send({ - value: data - }); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -exports.waitingApplications = function(req, res) { - return Promise - .all([]) - .then(getOpenchannelQueues(req.user)) - .then(function(condition) { - return ReportOpenchannelSession - .findAll(Util.getQuery(req.query, _.merge({ - leaveAt: null - }, condition))); - }) - .then(function(data) { - return res.status(200).send({ - rows: data - }); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0x4a61=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x52\x65\x70\x6F\x72\x74\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x53\x65\x73\x73\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x52\x65\x70\x6F\x72\x74\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x53\x65\x73\x73\x69\x6F\x6E\x48\x69\x73\x74\x6F\x72\x79","\x68\x69\x73\x74\x6F\x72\x79","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x55\x73\x65\x72","\x62\x6C\x75\x65\x62\x69\x72\x64","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x64\x65\x73\x63\x72\x69\x62\x65","\x69\x64","\x6D\x61\x70","\x75\x6E\x69\x6F\x6E","\x66\x6F\x72\x45\x61\x63\x68","\x72\x6F\x77\x73","\x67\x65\x74\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x66\x69\x6E\x64\x42\x79\x49\x64","\x75\x73\x65\x72","\x67\x65\x74\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65\x73","\x61\x67\x65\x6E\x74","\x72\x6F\x6C\x65","\x74\x69\x6D\x65\x6F\x75\x74","\x6C\x6F\x67","\x6D\x65\x72\x67\x65","\x63\x6F\x75\x6E\x74","\x61\x6C\x6C","\x77\x61\x69\x74\x69\x6E\x67","\x77\x61\x69\x74\x69\x6E\x67\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x66\x69\x6E\x64\x41\x6C\x6C"];_0x4a61[0];var _=require(_0x4a61[1]);var ReportOpenchannelSession=require(_0x4a61[3])[_0x4a61[2]];var ReportOpenchannelSessionHistory=require(_0x4a61[3])[_0x4a61[5]][_0x4a61[4]];var Util=require(_0x4a61[6]);var User=require(_0x4a61[3])[_0x4a61[7]];var Promise=require(_0x4a61[8]);exports[_0x4a61[9]]= function(_0x558fx7,_0x558fx8,_0x558fx9){return ReportOpenchannelSession[_0x4a61[16]](Util[_0x4a61[15]](_0x558fx7[_0x4a61[14]]))[_0x4a61[13]](function(_0x558fxb){_0x558fx8[_0x4a61[12]](200)[_0x4a61[11]](_0x558fxb)})[_0x4a61[10]](function(_0x558fxa){return handleError(_0x558fx8,_0x558fxa)})};exports[_0x4a61[17]]= function(_0x558fx7,_0x558fx8){return ReportOpenchannelSessionHistory[_0x4a61[17]]()[_0x4a61[13]](function(_0x558fxc){return _0x558fx8[_0x4a61[12]](200)[_0x4a61[11]](_0x558fxc)})[_0x4a61[10]](function(_0x558fxa){return handleError(_0x558fx8,_0x558fxa)})};function getOpenchannelQueues(_0x558fxe){return function(){switch(_0x558fxe[_0x4a61[28]]){case _0x4a61[25]:return User[_0x4a61[24]](_0x558fxe[_0x4a61[18]],{attributes:[_0x4a61[18]]})[_0x4a61[13]](Util[_0x4a61[23]]({},{attributes:[_0x4a61[18]],include:[{raw:true,model:User,attributes:[_0x4a61[18]]}]}))[_0x4a61[13]](function(_0x558fxf){var _0x558fx10=[];_0x558fxf[_0x4a61[22]][_0x4a61[21]](function(_0x558fx11){_0x558fx10= _[_0x4a61[20]](_0x558fx10,_[_0x4a61[19]](_0x558fx11.Users,_0x4a61[18]))});return {$or:{queue:_[_0x4a61[19]](_0x558fxf[_0x4a61[22]],_0x4a61[18]),memberid:_0x558fx10}}});case _0x4a61[27]:return User[_0x4a61[24]](_0x558fxe[_0x4a61[18]],{attributes:[_0x4a61[18]]})[_0x4a61[13]](function(_0x558fx12){return _0x558fx12[_0x4a61[26]]({attributes:[_0x4a61[18]]})})[_0x4a61[13]](function(_0x558fxf){return {$or:{queue:_[_0x4a61[19]](_0x558fxf,_0x4a61[18]),memberid:_0x558fxe[_0x4a61[18]]}}});default:return {}}}}exports[_0x4a61[29]]= function(_0x558fx7,_0x558fx8){return Promise[_0x4a61[33]]([])[_0x4a61[13]](getOpenchannelQueues(_0x558fx7[_0x4a61[25]]))[_0x4a61[13]](function(_0x558fx14){return ReportOpenchannelSession[_0x4a61[32]](Util[_0x4a61[15]](_0x558fx7[_0x4a61[14]],_[_0x4a61[31]]({timeout:true},_0x558fx14)))})[_0x4a61[13]](function(_0x558fx13){return _0x558fx8[_0x4a61[12]](200)[_0x4a61[11]]({value:_0x558fx13})})[_0x4a61[10]](function(_0x558fxa){console[_0x4a61[30]](_0x558fxa);return handleError(_0x558fx8,_0x558fxa)})};exports[_0x4a61[34]]= function(_0x558fx7,_0x558fx8){return Promise[_0x4a61[33]]([])[_0x4a61[13]](getOpenchannelQueues(_0x558fx7[_0x4a61[25]]))[_0x4a61[13]](function(_0x558fx14){return ReportOpenchannelSession[_0x4a61[32]](Util[_0x4a61[15]](_0x558fx7[_0x4a61[14]],_[_0x4a61[31]]({leaveAt:null},_0x558fx14)))})[_0x4a61[13]](function(_0x558fx13){return _0x558fx8[_0x4a61[12]](200)[_0x4a61[11]]({value:_0x558fx13})})[_0x4a61[10]](function(_0x558fxa){console[_0x4a61[30]](_0x558fxa);return handleError(_0x558fx8,_0x558fxa)})};exports[_0x4a61[35]]= function(_0x558fx7,_0x558fx8){return Promise[_0x4a61[33]]([])[_0x4a61[13]](getOpenchannelQueues(_0x558fx7[_0x4a61[25]]))[_0x4a61[13]](function(_0x558fx14){return ReportOpenchannelSession[_0x4a61[36]](Util[_0x4a61[15]](_0x558fx7[_0x4a61[14]],_[_0x4a61[31]]({leaveAt:null},_0x558fx14)))})[_0x4a61[13]](function(_0x558fx13){return _0x558fx8[_0x4a61[12]](200)[_0x4a61[11]]({rows:_0x558fx13})})[_0x4a61[10]](function(_0x558fxa){console[_0x4a61[30]](_0x558fxa);return handleError(_0x558fx8,_0x558fxa)})};function handleError(_0x558fx8,_0x558fxa){return _0x558fx8[_0x4a61[12]](500)[_0x4a61[11]](_0x558fxa)} \ No newline at end of file diff --git a/server/api/report_openchannel_session/report_openchannel_session.events.js b/server/api/report_openchannel_session/report_openchannel_session.events.js index 0c9e3ff..1f0f9b6 100644 --- a/server/api/report_openchannel_session/report_openchannel_session.events.js +++ b/server/api/report_openchannel_session/report_openchannel_session.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const ReportOpenchannelSession = require('../../models').ReportOpenchannelSession; - -var ReportOpenchannelSessionEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -ReportOpenchannelSessionEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - ReportOpenchannelSession.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - ReportOpenchannelSessionEvents.emit(event + ':' + doc._id, doc); - ReportOpenchannelSessionEvents.emit(event, doc); - done(null); - } -} - -module.exports = ReportOpenchannelSessionEvents; +var _0xee7b=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x52\x65\x70\x6F\x72\x74\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x53\x65\x73\x73\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xee7b[0];const EventEmitter=require(_0xee7b[1]);const ReportOpenchannelSession=require(_0xee7b[3])[_0xee7b[2]];var ReportOpenchannelSessionEvents= new EventEmitter();ReportOpenchannelSessionEvents[_0xee7b[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xee7b[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xee7b[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xee7b[6]};for(var e in events){var event=events[e];ReportOpenchannelSession[_0xee7b[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xdafcx8,_0xdafcx9,_0xdafcxa){ReportOpenchannelSessionEvents[_0xee7b[10]](event+ _0xee7b[8]+ _0xdafcx8[_0xee7b[9]],_0xdafcx8);ReportOpenchannelSessionEvents[_0xee7b[10]](event,_0xdafcx8);_0xdafcxa(null)}}module[_0xee7b[11]]= ReportOpenchannelSessionEvents \ No newline at end of file diff --git a/server/api/report_openchannel_session/report_openchannel_session.socket.js b/server/api/report_openchannel_session/report_openchannel_session.socket.js index 36ca924..34d2ef5 100644 --- a/server/api/report_openchannel_session/report_openchannel_session.socket.js +++ b/server/api/report_openchannel_session/report_openchannel_session.socket.js @@ -1,90 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -var ReportOpenchannelSession = require('../../models').ReportOpenchannelSession; -var User = require('../../models').User; -var Util = require('../../config/util'); -var _ = require('lodash'); -var Promise = require('bluebird'); - -exports.register = function(socket) { - ReportOpenchannelSession.afterCreate(function(doc) { - onSave(socket, doc); - }); - ReportOpenchannelSession.afterUpdate(function(doc) { - onSave(socket, doc); - }); - ReportOpenchannelSession.afterDestroy(function(doc) { - onRemove(socket, doc); - }); -} - -function getOpenchannelQueues(user) { - return function() { - switch (user.role) { - case 'user': - return User - .findById(user.userId, { - attributes: ['id'] - }) - .then(Util.getOpenchannelQueuesIdByUser({}, { - attributes: ['id'], - include: [{ - raw: true, - model: User, - attributes: ['id'] - }] - })) - .then(function(userQueues) { - var users = []; - userQueues.rows.forEach(function(queue) { - users = _.union(users, _.map(queue.Users, 'id')); - }); - return { - queue: _.map(userQueues.rows, 'id'), - memberid: users - }; - }); - case 'agent': - return User - .findById(user.userId, { - attributes: ['id'] - }) - .then(function(agent) { - return agent - .getOpenchannelQueues({ - attributes: ['id'] - }); - }) - .then(function(userQueues) { - return { - queue: _.map(userQueues, 'id'), - memberid: user.userId - }; - }); - default: - return {}; - } - } -} - -function onSave(socket, doc, cb) { - return Promise - .all([]) - .then(getOpenchannelQueues(socket)) - .then(function(condition) { - if (socket.role === 'admin' || _.includes(condition.memberid, doc.memberid) || _.includes(condition.queue, doc.queue)) { - socket.emit('report_openchannel_session:save', doc); - } - }) - .catch(function(err) { - console.log('Error filtering report Openchannel sessions after save', err); - }); -} - -function onRemove(socket, doc, cb) { - socket.emit('report_openchannel_session:remove', doc); -} +var _0xecaa=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x52\x65\x70\x6F\x72\x74\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x53\x65\x73\x73\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x55\x73\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x6C\x6F\x64\x61\x73\x68","\x62\x6C\x75\x65\x62\x69\x72\x64","\x72\x65\x67\x69\x73\x74\x65\x72","\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79","\x69\x64","\x6D\x61\x70","\x75\x6E\x69\x6F\x6E","\x66\x6F\x72\x45\x61\x63\x68","\x72\x6F\x77\x73","\x74\x68\x65\x6E","\x67\x65\x74\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x75\x73\x65\x72\x49\x64","\x66\x69\x6E\x64\x42\x79\x49\x64","\x75\x73\x65\x72","\x67\x65\x74\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65\x73","\x61\x67\x65\x6E\x74","\x72\x6F\x6C\x65","\x45\x72\x72\x6F\x72\x20\x66\x69\x6C\x74\x65\x72\x69\x6E\x67\x20\x72\x65\x70\x6F\x72\x74\x20\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x20\x73\x65\x73\x73\x69\x6F\x6E\x73\x20\x61\x66\x74\x65\x72\x20\x73\x61\x76\x65","\x6C\x6F\x67","\x63\x61\x74\x63\x68","\x61\x64\x6D\x69\x6E","\x6D\x65\x6D\x62\x65\x72\x69\x64","\x69\x6E\x63\x6C\x75\x64\x65\x73","\x71\x75\x65\x75\x65","\x72\x65\x70\x6F\x72\x74\x5F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x73\x65\x73\x73\x69\x6F\x6E\x3A\x73\x61\x76\x65","\x65\x6D\x69\x74","\x61\x6C\x6C","\x72\x65\x70\x6F\x72\x74\x5F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x73\x65\x73\x73\x69\x6F\x6E\x3A\x72\x65\x6D\x6F\x76\x65"];_0xecaa[0];var ReportOpenchannelSession=require(_0xecaa[2])[_0xecaa[1]];var User=require(_0xecaa[2])[_0xecaa[3]];var Util=require(_0xecaa[4]);var _=require(_0xecaa[5]);var Promise=require(_0xecaa[6]);exports[_0xecaa[7]]= function(_0x8bdbx6){ReportOpenchannelSession[_0xecaa[8]](function(_0x8bdbx7){onSave(_0x8bdbx6,_0x8bdbx7)});ReportOpenchannelSession[_0xecaa[9]](function(_0x8bdbx7){onSave(_0x8bdbx6,_0x8bdbx7)});ReportOpenchannelSession[_0xecaa[10]](function(_0x8bdbx7){onRemove(_0x8bdbx6,_0x8bdbx7)})};function getOpenchannelQueues(_0x8bdbx9){return function(){switch(_0x8bdbx9[_0xecaa[23]]){case _0xecaa[20]:return User[_0xecaa[19]](_0x8bdbx9[_0xecaa[18]],{attributes:[_0xecaa[11]]})[_0xecaa[16]](Util[_0xecaa[17]]({},{attributes:[_0xecaa[11]],include:[{raw:true,model:User,attributes:[_0xecaa[11]]}]}))[_0xecaa[16]](function(_0x8bdbxa){var _0x8bdbxb=[];_0x8bdbxa[_0xecaa[15]][_0xecaa[14]](function(_0x8bdbxc){_0x8bdbxb= _[_0xecaa[13]](_0x8bdbxb,_[_0xecaa[12]](_0x8bdbxc.Users,_0xecaa[11]))});return {queue:_[_0xecaa[12]](_0x8bdbxa[_0xecaa[15]],_0xecaa[11]),memberid:_0x8bdbxb}});case _0xecaa[22]:return User[_0xecaa[19]](_0x8bdbx9[_0xecaa[18]],{attributes:[_0xecaa[11]]})[_0xecaa[16]](function(_0x8bdbxd){return _0x8bdbxd[_0xecaa[21]]({attributes:[_0xecaa[11]]})})[_0xecaa[16]](function(_0x8bdbxa){return {queue:_[_0xecaa[12]](_0x8bdbxa,_0xecaa[11]),memberid:_0x8bdbx9[_0xecaa[18]]}});default:return {}}}}function onSave(_0x8bdbx6,_0x8bdbx7,_0x8bdbxf){return Promise[_0xecaa[33]]([])[_0xecaa[16]](getOpenchannelQueues(_0x8bdbx6))[_0xecaa[16]](function(_0x8bdbx11){if(_0x8bdbx6[_0xecaa[23]]=== _0xecaa[27]|| _[_0xecaa[29]](_0x8bdbx11[_0xecaa[28]],_0x8bdbx7[_0xecaa[28]])|| _[_0xecaa[29]](_0x8bdbx11[_0xecaa[30]],_0x8bdbx7[_0xecaa[30]])){_0x8bdbx6[_0xecaa[32]](_0xecaa[31],_0x8bdbx7)}})[_0xecaa[26]](function(_0x8bdbx10){console[_0xecaa[25]](_0xecaa[24],_0x8bdbx10)})}function onRemove(_0x8bdbx6,_0x8bdbx7,_0x8bdbxf){_0x8bdbx6[_0xecaa[32]](_0xecaa[34],_0x8bdbx7)} \ No newline at end of file diff --git a/server/api/report_queue/index.js b/server/api/report_queue/index.js index 2a28045..fdf703b 100644 --- a/server/api/report_queue/index.js +++ b/server/api/report_queue/index.js @@ -1,27 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./report_queue.controller'); -var auth = require('../../auth/auth.service'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), auth.hasModule([17], ['admin']), controller.index); -router.get('/describe', auth.isAuthenticated(), auth.hasModule([17], ['admin']), controller.describe); -router.get('/waiting', auth.isAuthenticated(), auth.hasModule([1], ['admin', 'agent']), controller.waiting); -router.get('/parameters', auth.isAuthenticated(), auth.hasModule([1], ['admin']), controller.queueParameters); -router.get('/waiting/calls', auth.isAuthenticated(), auth.hasModule([7], ['admin', 'agent']), controller.waitingCalls); -router.get('/active', auth.isAuthenticated(), auth.hasModule([1], ['admin', 'agent']), controller.active); -router.get('/answered', auth.isAuthenticated(), auth.hasModule([1], ['admin', 'agent']), controller.answered); -router.get('/abandoned', auth.isAuthenticated(), auth.hasModule([1], ['admin', 'agent']), controller.abandoned); -router.get('/abandoned/all', auth.isAuthenticated(), auth.hasModule([7], ['admin', 'agent']), controller.abandonedAll); -router.get('/avganswertime', auth.isAuthenticated(), auth.hasModule([1], ['admin', 'agent']), controller.avganswertime); -router.get('/avgtalktime', auth.isAuthenticated(), auth.hasModule([1], ['admin', 'agent']), controller.avgtalktime); -router.get('/answerrate', auth.isAuthenticated(), auth.hasModule([1], ['admin', 'agent']), controller.answerrate); -router.get('/abandonrate', auth.isAuthenticated(), auth.hasModule([1], ['admin', 'agent']), controller.abandonrate); -router.get('/totaloffered', auth.isAuthenticated(), auth.hasModule([1], ['admin', 'agent']), controller.totaloffered); -router.get('/unmanaged', auth.isAuthenticated(), auth.hasModule([1], ['admin', 'agent']), controller.unmanaged); -router.get('/:queue', auth.isAuthenticated(), controller.show); -router.put('/:id', auth.isAuthenticated(), controller.update); - -module.exports = router; +var _0xaeb9=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x71\x75\x65\x75\x65\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x64\x65\x73\x63\x72\x69\x62\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x2F\x77\x61\x69\x74\x69\x6E\x67","\x61\x67\x65\x6E\x74","\x77\x61\x69\x74\x69\x6E\x67","\x2F\x70\x61\x72\x61\x6D\x65\x74\x65\x72\x73","\x71\x75\x65\x75\x65\x50\x61\x72\x61\x6D\x65\x74\x65\x72\x73","\x2F\x77\x61\x69\x74\x69\x6E\x67\x2F\x63\x61\x6C\x6C\x73","\x77\x61\x69\x74\x69\x6E\x67\x43\x61\x6C\x6C\x73","\x2F\x61\x63\x74\x69\x76\x65","\x61\x63\x74\x69\x76\x65","\x2F\x61\x6E\x73\x77\x65\x72\x65\x64","\x61\x6E\x73\x77\x65\x72\x65\x64","\x2F\x61\x62\x61\x6E\x64\x6F\x6E\x65\x64","\x61\x62\x61\x6E\x64\x6F\x6E\x65\x64","\x2F\x61\x62\x61\x6E\x64\x6F\x6E\x65\x64\x2F\x61\x6C\x6C","\x61\x62\x61\x6E\x64\x6F\x6E\x65\x64\x41\x6C\x6C","\x2F\x61\x76\x67\x61\x6E\x73\x77\x65\x72\x74\x69\x6D\x65","\x61\x76\x67\x61\x6E\x73\x77\x65\x72\x74\x69\x6D\x65","\x2F\x61\x76\x67\x74\x61\x6C\x6B\x74\x69\x6D\x65","\x61\x76\x67\x74\x61\x6C\x6B\x74\x69\x6D\x65","\x2F\x61\x6E\x73\x77\x65\x72\x72\x61\x74\x65","\x61\x6E\x73\x77\x65\x72\x72\x61\x74\x65","\x2F\x61\x62\x61\x6E\x64\x6F\x6E\x72\x61\x74\x65","\x61\x62\x61\x6E\x64\x6F\x6E\x72\x61\x74\x65","\x2F\x74\x6F\x74\x61\x6C\x6F\x66\x66\x65\x72\x65\x64","\x74\x6F\x74\x61\x6C\x6F\x66\x66\x65\x72\x65\x64","\x2F\x75\x6E\x6D\x61\x6E\x61\x67\x65\x64","\x75\x6E\x6D\x61\x6E\x61\x67\x65\x64","\x2F\x3A\x71\x75\x65\x75\x65","\x73\x68\x6F\x77","\x2F\x3A\x69\x64","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xaeb9[0];var express=require(_0xaeb9[1]);var controller=require(_0xaeb9[2]);var auth=require(_0xaeb9[3]);var router=express.Router();router[_0xaeb9[9]](_0xaeb9[4],auth[_0xaeb9[5]](),auth[_0xaeb9[7]]([17],[_0xaeb9[6]]),controller[_0xaeb9[8]]);router[_0xaeb9[9]](_0xaeb9[10],auth[_0xaeb9[5]](),auth[_0xaeb9[7]]([17],[_0xaeb9[6]]),controller[_0xaeb9[11]]);router[_0xaeb9[9]](_0xaeb9[12],auth[_0xaeb9[5]](),auth[_0xaeb9[7]]([1],[_0xaeb9[6],_0xaeb9[13]]),controller[_0xaeb9[14]]);router[_0xaeb9[9]](_0xaeb9[15],auth[_0xaeb9[5]](),auth[_0xaeb9[7]]([1],[_0xaeb9[6]]),controller[_0xaeb9[16]]);router[_0xaeb9[9]](_0xaeb9[17],auth[_0xaeb9[5]](),auth[_0xaeb9[7]]([7],[_0xaeb9[6],_0xaeb9[13]]),controller[_0xaeb9[18]]);router[_0xaeb9[9]](_0xaeb9[19],auth[_0xaeb9[5]](),auth[_0xaeb9[7]]([1],[_0xaeb9[6],_0xaeb9[13]]),controller[_0xaeb9[20]]);router[_0xaeb9[9]](_0xaeb9[21],auth[_0xaeb9[5]](),auth[_0xaeb9[7]]([1],[_0xaeb9[6],_0xaeb9[13]]),controller[_0xaeb9[22]]);router[_0xaeb9[9]](_0xaeb9[23],auth[_0xaeb9[5]](),auth[_0xaeb9[7]]([1],[_0xaeb9[6],_0xaeb9[13]]),controller[_0xaeb9[24]]);router[_0xaeb9[9]](_0xaeb9[25],auth[_0xaeb9[5]](),auth[_0xaeb9[7]]([7],[_0xaeb9[6],_0xaeb9[13]]),controller[_0xaeb9[26]]);router[_0xaeb9[9]](_0xaeb9[27],auth[_0xaeb9[5]](),auth[_0xaeb9[7]]([1],[_0xaeb9[6],_0xaeb9[13]]),controller[_0xaeb9[28]]);router[_0xaeb9[9]](_0xaeb9[29],auth[_0xaeb9[5]](),auth[_0xaeb9[7]]([1],[_0xaeb9[6],_0xaeb9[13]]),controller[_0xaeb9[30]]);router[_0xaeb9[9]](_0xaeb9[31],auth[_0xaeb9[5]](),auth[_0xaeb9[7]]([1],[_0xaeb9[6],_0xaeb9[13]]),controller[_0xaeb9[32]]);router[_0xaeb9[9]](_0xaeb9[33],auth[_0xaeb9[5]](),auth[_0xaeb9[7]]([1],[_0xaeb9[6],_0xaeb9[13]]),controller[_0xaeb9[34]]);router[_0xaeb9[9]](_0xaeb9[35],auth[_0xaeb9[5]](),auth[_0xaeb9[7]]([1],[_0xaeb9[6],_0xaeb9[13]]),controller[_0xaeb9[36]]);router[_0xaeb9[9]](_0xaeb9[37],auth[_0xaeb9[5]](),auth[_0xaeb9[7]]([1],[_0xaeb9[6],_0xaeb9[13]]),controller[_0xaeb9[38]]);router[_0xaeb9[9]](_0xaeb9[39],auth[_0xaeb9[5]](),controller[_0xaeb9[40]]);router[_0xaeb9[43]](_0xaeb9[41],auth[_0xaeb9[5]](),controller[_0xaeb9[42]]);module[_0xaeb9[44]]= router \ No newline at end of file diff --git a/server/api/report_queue/report_queue.controller.js b/server/api/report_queue/report_queue.controller.js index a2757ef..017371d 100644 --- a/server/api/report_queue/report_queue.controller.js +++ b/server/api/report_queue/report_queue.controller.js @@ -1,626 +1 @@ -'use strict'; - -var _ = require('lodash'); -var sequelize = require('../../models').sequelize; -var Agent = require('../../models').User; -var ReportQueue = require('../../models').ReportQueue; -var VoiceQueue = require('../../models').VoiceQueue; -var ReportQueueHistory = require('../../models').history.ReportQueueHistory; -var Util = require('../../config/util'); -var Promise = require('bluebird'); - -// Get list of reportQueues -exports.index = function(req, res, next) { - return ReportQueue - .findAndCountAll(Util.getQuery(req.query)) - .then(function(result) { - return res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.update = function(req, res) { - return ReportQueue - .findById(req.params.id) - .then(function(queue) { - if (!queue) { - return res.sendStatus(404); - } - var updated = _.merge(queue, req.body); - return updated.save(); - }) - .then(function(queue) { - return res.status(200).send(queue); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get list of fields -exports.describe = function(req, res) { - return ReportQueueHistory - .describe() - .then(function(fields) { - return res.status(200).send(fields); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get Waiting Calls -exports.waiting = function(req, res) { - return Promise - .all([]) - .then(getVoiceQueues(req.user)) - .then(function(userQueues) { - return ReportQueue - .count({ - where: { - queuecallerleaveAt: null, - queue: userQueues - } - }); - }) - .then(function(data) { - return res.status(200).send({ - value: data - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function getVoiceQueues(user) { - return function() { - switch (user.role) { - case 'user': - return Agent //also User model - .findById(user.id, { - attributes: ['id'] - }) - .then(Util.getVoiceQueuesIdByUser()) - .then(function(userQueues) { - return _.map(userQueues.rows, 'name'); - }); - case 'agent': - return Agent - .findById(user.id) - .then(function(agent) { - return agent - .getVoiceQueues({ - attributes: ['name'] - }); - }) - .then(function(userQueues) { - return _.map(userQueues, 'name'); - }); - default: - return VoiceQueue - .findAll() - .then(function(queues) { - return { - rows: queues - }; - }) - .then(function(userQueues) { - return _.map(userQueues.rows, 'name'); - }); - } - } -} - -exports.queueParameters = function(req, res) { - var query = { - _limit: req.query.limit ? req.query.limit : null, - _offset: req.query.offset ? req.query.offset : 0, - _name: req.query.name || undefined, - _answeredFrom: req.query.answered_uiFrom || req.query.answered_uiFrom === 0 ? req.query.answered_uiFrom : undefined, - _answeredTo: req.query.answered_uiTo || req.query.answered_uiTo === 0 ? req.query.answered_uiTo : undefined, - _abandonedFrom: req.query.abandoned_uiFrom || req.query.abandoned_uiFrom === 0 ? req.query.abandoned_uiFrom : undefined, - _abandonedTo: req.query.abandoned_uiTo || req.query.abandoned_uiTo === 0 ? req.query.abandoned_uiTo : undefined, - _unmanagedFrom: req.query.unmanaged_uiFrom || req.query.unmanaged_uiFrom === 0 ? req.query.unmanaged_uiFrom : undefined, - _unmanagedTo: req.query.unmanaged_uiTo || req.query.unmanaged_uiTo === 0 ? req.query.unmanaged_uiTo : undefined, - } - console.log(query); - var _parameters, _userQueues, _limit, _offset; - delete req.query.limit; - delete req.query.offset; - delete req.query.answered_uiFrom; - delete req.query.answered_uiTo; - delete req.query.abandoned_uiFrom; - delete req.query.abandoned_uiTo; - delete req.query.unmanaged_uiFrom; - delete req.query.unmanaged_uiTo; - - return Promise - .all([]) - .then(getVoiceQueues(req.user)) - .then(function(userQueues) { - _userQueues = userQueues; - _parameters = _.map(userQueues, function(element) { - return { - name: element - }; - }); - //waiting - return ReportQueue - .findAll({ - where: { - queuecallerleaveAt: null, - queue: _userQueues - }, - group: 'queue', - attributes: [ - ['queue', 'name'], - [sequelize.fn('COUNT', sequelize.col('id')), 'waiting'] - ] - }); - }) - .then(function(waiting) { - waiting = _.map(waiting, 'dataValues'); - _parameters.forEach(function(element, key) { - var value = _.find(waiting, { - name: element.name - }); - element.waiting = value ? value.waiting : 0; - }); - // console.log('WAITING', _parameters); - //active - return ReportQueue - .findAll({ - where: { - queuecallerexit: false, - queuecallerabandon: false, - queuecallercomplete: false, - queuecallerleaveAt: { - $ne: null - }, - queue: _userQueues - }, - group: 'queue', - attributes: [ - ['queue', 'name'], - [sequelize.fn('COUNT', sequelize.col('id')), 'active'] - ] - }); - }) - .then(function(active) { - active = _.map(active, 'dataValues'); - _parameters.forEach(function(element) { - var value = _.find(active, { - name: element.name - }); - element.active = value ? value.active : 0; - }); - // console.log('ACTIVE', _parameters); - //answered - return ReportQueue - .findAll({ - where: { - queuecallercomplete: true, - queue: _userQueues - }, - group: 'queue', - attributes: [ - ['queue', 'name'], - [sequelize.fn('COUNT', sequelize.col('id')), 'answered'] - ] - }); - }) - .then(function(answered) { - answered = _.map(answered, 'dataValues'); - // console.log('beforeAnswered', _.map(answered, 'dataValues')); - _parameters.forEach(function(element) { - var value = _.find(answered, { - name: element.name - }); - element.answered = value ? value.answered : 0; - }); - // console.log('ANSWERED', _parameters); - //abandoned - return ReportQueue - .findAll({ - where: { - queuecallerabandon: true, - queue: _userQueues - }, - group: 'queue', - attributes: [ - ['queue', 'name'], - [sequelize.fn('COUNT', sequelize.col('id')), 'abandoned'] - ] - }); - }) - .then(function(abandoned) { - abandoned = _.map(abandoned, 'dataValues'); - _parameters.forEach(function(element) { - var value = _.find(abandoned, { - name: element.name - }); - element.abandoned = value ? value.abandoned : 0; - }); - // console.log('ABANDONED', _parameters); - //unmanaged - return ReportQueue - .findAll({ - where: { - queuecallerexit: true, - queue: _userQueues - }, - group: 'queue', - attributes: [ - ['queue', 'name'], - [sequelize.fn('COUNT', sequelize.col('id')), 'unmanaged'] - ] - }); - }) - .then(function(unmanaged) { - unmanaged = _.map(unmanaged, 'dataValues'); - _parameters.forEach(function(element) { - var value = _.find(unmanaged, { - name: element.name - }); - element.unmanaged = value ? value.unmanaged : 0; - }); - // console.log('UNMANAGED', _parameters); - //holdtime - return sequelize - .query('SELECT queue AS \'name\',SEC_TO_TIME(ROUND(AVG(holdtime), 0)) as holdtime FROM report_agent WHERE agentcomplete = 1 AND queue IN (\'' + _userQueues.join("','") + - '\') GROUP BY queue', { - type: sequelize.QueryTypes.SELECT - }); - }) - .then(function(holdtime) { - _parameters.forEach(function(element) { - var value = _.find(holdtime, { - name: element.name - }); - element.holdtime = value ? value.holdtime : '00:00:00'; - }); - // console.log('HOLDTIME', _parameters); - //talktime - return sequelize - .query('SELECT queue AS \'name\',SEC_TO_TIME(ROUND(AVG(talktime), 0)) as talktime FROM report_agent WHERE agentcomplete = 1 AND queue IN (\'' + _userQueues.join("','") + - '\') GROUP BY queue', { - type: sequelize.QueryTypes.SELECT - }); - }) - .then(function(talktime) { - _parameters.forEach(function(element) { - var value = _.find(talktime, { - name: element.name - }); - element.talktime = value ? value.talktime : '00:00:00'; - }); - // console.log('TALKTIME', _parameters); - //totalcalls - return sequelize - .query('SELECT queue AS \'name\',COUNT(distinct uniqueid) as totalcalls FROM report_queue WHERE queue IN (\'' + _userQueues.join("','") + '\') GROUP BY queue', { - type: sequelize.QueryTypes.SELECT - }); - }) - .then(function(totalcalls) { - _parameters.forEach(function(element) { - var value = _.find(totalcalls, { - name: element.name - }); - element.totalcalls = value ? value.totalcalls : 0; - }); - // console.log('TOTALCALLS', _parameters); - var results = _(_.filter(_parameters, function(element) { - var answeredFrom = query._answeredFrom ? (element.answered >= Number(query._answeredFrom)) : true; - var answeredTo = query._answeredTo ? (element.answered <= Number(query._answeredTo)) : true; - var abandonedFrom = query._abandonedFrom ? (element.abandoned >= Number(query._abandonedFrom)) : true; - var abandonedto = query._abandonedTo ? (element.abandoned <= Number(query._abandonedTo)) : true; - var unmanagedFrom = query._unmanagedFrom ? (element.unmanaged >= Number(query._unmanagedFrom)) : true; - var unmanagedTo = query._unmanagedTo ? (element.unmanaged <= Number(query._unmanagedTo)) : true; - var name = query._name ? _.includes(element.name, query._name) : true; - return _.reduce([answeredFrom, answeredTo, abandonedFrom, abandonedto, unmanagedFrom, unmanagedTo, name], function(total, n) { - return total && n; - }); - })); - if (query._limit) { - results = results.slice(query._offset).take(query._limit).value(); - } - return [_parameters.length, results]; - }) - .spread(function(count, rows) { - // console.log('RETURN', rows); - return res.status(200).send({ - rows: rows, - count: count - }); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -// Get Waiting Calls -exports.waitingCalls = function(req, res) { - var where = {}; - if (req.user.role === 'agent') { - where.connectedlinename = req.user.fullname; - } - return Promise - .all([]) - .then(getVoiceQueues(req.user)) - .then(function(userQueues) { - return ReportQueue - .scope('waiting', { - method: ['queueFilter', userQueues] - }) - .findAll(Util.getQuery(req.query, where)); - }) - .then(function(data) { - return res.status(200).send({ - rows: data, - count: data.length - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get Waiting Calls -exports.active = function(req, res) { - return Promise - .all([]) - .then(getVoiceQueues(req.user)) - .then(function(userQueues) { - return ReportQueue - .count({ - where: { - queuecallerexit: false, - queuecallerabandon: false, - queuecallercomplete: false, - queuecallerleaveAt: { - $ne: null - }, - queue: userQueues - } - }); - }) - .then(function(data) { - return res.status(200).send({ - value: data - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get Answered Calls -exports.answered = function(req, res) { - return Promise - .all([]) - .then(getVoiceQueues(req.user)) - .then(function(userQueues) { - return ReportQueue - .count({ - where: { - queuecallercomplete: true, - queue: userQueues - } - }); - }) - .then(function(data) { - return res.status(200).send({ - value: data - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get Abandoned Calls -exports.abandoned = function(req, res) { - return Promise - .all([]) - .then(getVoiceQueues(req.user)) - .then(function(userQueues) { - return ReportQueue - .count({ - where: { - queuecallerabandon: true, - queue: userQueues - } - }); - }) - .then(function(data) { - return res.status(200).send({ - value: data - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get Answered Calls -exports.avganswertime = function(req, res) { - return Promise - .all([]) - .then(getVoiceQueues(req.user)) - .then(function(userQueues) { - return sequelize - .query('SELECT SEC_TO_TIME(ROUND(AVG(holdtime), 0)) as value FROM report_agent WHERE agentcomplete = 1 AND queue IN (\'' + userQueues.join("','") + '\')', { - type: sequelize.QueryTypes.SELECT - }); - }) - .then(function(data) { - return res.status(200).send({ - value: data[0].value - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get Answered Calls -exports.avgtalktime = function(req, res) { - return Promise - .all([]) - .then(getVoiceQueues(req.user)) - .then(function(userQueues) { - return sequelize - .query('SELECT SEC_TO_TIME(ROUND(AVG(talktime), 0)) as value FROM report_agent WHERE agentcomplete = 1 AND queue IN (\'' + userQueues.join("','") + '\')', { - type: sequelize.QueryTypes.SELECT - }); - }) - .then(function(data) { - return res.status(200).send({ - value: data[0].value - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get Answered Calls -exports.answerrate = function(req, res) { - return Promise - .all([]) - .then(getVoiceQueues(req.user)) - .then(function(userQueues) { - return sequelize - .query('SELECT ROUND(SUM(queuecallercomplete) / (SUM(queuecallercomplete) + SUM(queuecallerabandon)) * 100, 1) as value FROM report_queue WHERE queue IN (\'' + userQueues.join("','") + - '\')', { - type: sequelize.QueryTypes.SELECT - }); - }) - .then(function(data) { - return res.status(200).send({ - value: data[0].value - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get Answered Calls -exports.abandonrate = function(req, res) { - return Promise - .all([]) - .then(getVoiceQueues(req.user)) - .then(function(userQueues) { - return sequelize - .query('SELECT ROUND(SUM(queuecallerabandon) / (SUM(queuecallercomplete) + SUM(queuecallerabandon)) * 100, 1) as value FROM report_queue WHERE queue IN (\'' + userQueues.join("','") + - '\')', { - type: sequelize.QueryTypes.SELECT - }); - }) - .then(function(data) { - return res.status(200).send({ - value: data[0].value - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get Answered Calls -exports.totaloffered = function(req, res) { - return Promise - .all([]) - .then(getVoiceQueues(req.user)) - .then(function(userQueues) { - return sequelize - .query('SELECT COUNT(distinct uniqueid) as value FROM report_queue WHERE queue IN (\'' + userQueues.join("','") + '\')', { - type: sequelize.QueryTypes.SELECT - }); - }) - .then(function(data) { - return res.status(200).send({ - value: data[0].value - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get Unmanaged Calls -exports.unmanaged = function(req, res) { - return Promise - .all([]) - .then(getVoiceQueues(req.user)) - .then(function(userQueues) { - return ReportQueue - .count({ - where: { - queuecallerexit: true, - queue: userQueues - } - }); - }) - .then(function(data) { - return res.status(200).send({ - value: data - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get Unmanaged Calls -exports.abandonedAll = function(req, res) { - return Promise - .all([]) - .then(getVoiceQueues(req.user)) - .then(function(userQueues) { - return ReportQueue - .findAndCountAll({ - where: { - queuecallerabandon: true, - queue: userQueues - } - }); - }) - .then(function(data) { - return res.status(200).send(data); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get a single reportQueue -exports.show = function(req, res) { - return ReportQueue - .findAll({ - where: { - queue: req.params.queue - } - }) - .then(function(reportQueue) { - if (!reportQueue) { - return res.sendStatus(404); - } - return res.send({ - count: reportQueue.length, - rows: reportQueue - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0x5c3f=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x55\x73\x65\x72","\x52\x65\x70\x6F\x72\x74\x51\x75\x65\x75\x65","\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65","\x52\x65\x70\x6F\x72\x74\x51\x75\x65\x75\x65\x48\x69\x73\x74\x6F\x72\x79","\x68\x69\x73\x74\x6F\x72\x79","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x62\x6C\x75\x65\x62\x69\x72\x64","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x75\x70\x64\x61\x74\x65","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x62\x6F\x64\x79","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x64\x65\x73\x63\x72\x69\x62\x65","\x77\x61\x69\x74\x69\x6E\x67","\x63\x6F\x75\x6E\x74","\x75\x73\x65\x72","\x61\x6C\x6C","\x72\x6F\x77\x73","\x6E\x61\x6D\x65","\x6D\x61\x70","\x67\x65\x74\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x67\x65\x74\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65\x73","\x61\x67\x65\x6E\x74","\x66\x69\x6E\x64\x41\x6C\x6C","\x72\x6F\x6C\x65","\x71\x75\x65\x75\x65\x50\x61\x72\x61\x6D\x65\x74\x65\x72\x73","\x6C\x69\x6D\x69\x74","\x6F\x66\x66\x73\x65\x74","\x61\x6E\x73\x77\x65\x72\x65\x64\x5F\x75\x69\x46\x72\x6F\x6D","\x61\x6E\x73\x77\x65\x72\x65\x64\x5F\x75\x69\x54\x6F","\x61\x62\x61\x6E\x64\x6F\x6E\x65\x64\x5F\x75\x69\x46\x72\x6F\x6D","\x61\x62\x61\x6E\x64\x6F\x6E\x65\x64\x5F\x75\x69\x54\x6F","\x75\x6E\x6D\x61\x6E\x61\x67\x65\x64\x5F\x75\x69\x46\x72\x6F\x6D","\x75\x6E\x6D\x61\x6E\x61\x67\x65\x64\x5F\x75\x69\x54\x6F","\x6C\x6F\x67","\x73\x70\x72\x65\x61\x64","\x66\x69\x6E\x64","\x74\x6F\x74\x61\x6C\x63\x61\x6C\x6C\x73","\x66\x6F\x72\x45\x61\x63\x68","\x5F\x61\x6E\x73\x77\x65\x72\x65\x64\x46\x72\x6F\x6D","\x61\x6E\x73\x77\x65\x72\x65\x64","\x5F\x61\x6E\x73\x77\x65\x72\x65\x64\x54\x6F","\x5F\x61\x62\x61\x6E\x64\x6F\x6E\x65\x64\x46\x72\x6F\x6D","\x61\x62\x61\x6E\x64\x6F\x6E\x65\x64","\x5F\x61\x62\x61\x6E\x64\x6F\x6E\x65\x64\x54\x6F","\x5F\x75\x6E\x6D\x61\x6E\x61\x67\x65\x64\x46\x72\x6F\x6D","\x75\x6E\x6D\x61\x6E\x61\x67\x65\x64","\x5F\x75\x6E\x6D\x61\x6E\x61\x67\x65\x64\x54\x6F","\x5F\x6E\x61\x6D\x65","\x69\x6E\x63\x6C\x75\x64\x65\x73","\x72\x65\x64\x75\x63\x65","\x66\x69\x6C\x74\x65\x72","\x5F\x6C\x69\x6D\x69\x74","\x76\x61\x6C\x75\x65","\x74\x61\x6B\x65","\x73\x6C\x69\x63\x65","\x6C\x65\x6E\x67\x74\x68","\x74\x61\x6C\x6B\x74\x69\x6D\x65","\x30\x30\x3A\x30\x30\x3A\x30\x30","\x53\x45\x4C\x45\x43\x54\x20\x71\x75\x65\x75\x65\x20\x41\x53\x20\x27\x6E\x61\x6D\x65\x27\x2C\x43\x4F\x55\x4E\x54\x28\x64\x69\x73\x74\x69\x6E\x63\x74\x20\x75\x6E\x69\x71\x75\x65\x69\x64\x29\x20\x61\x73\x20\x74\x6F\x74\x61\x6C\x63\x61\x6C\x6C\x73\x20\x46\x52\x4F\x4D\x20\x72\x65\x70\x6F\x72\x74\x5F\x71\x75\x65\x75\x65\x20\x57\x48\x45\x52\x45\x20\x71\x75\x65\x75\x65\x20\x49\x4E\x20\x28\x27","\x27\x2C\x27","\x6A\x6F\x69\x6E","\x27\x29\x20\x47\x52\x4F\x55\x50\x20\x42\x59\x20\x71\x75\x65\x75\x65","\x53\x45\x4C\x45\x43\x54","\x51\x75\x65\x72\x79\x54\x79\x70\x65\x73","\x68\x6F\x6C\x64\x74\x69\x6D\x65","\x53\x45\x4C\x45\x43\x54\x20\x71\x75\x65\x75\x65\x20\x41\x53\x20\x27\x6E\x61\x6D\x65\x27\x2C\x53\x45\x43\x5F\x54\x4F\x5F\x54\x49\x4D\x45\x28\x52\x4F\x55\x4E\x44\x28\x41\x56\x47\x28\x74\x61\x6C\x6B\x74\x69\x6D\x65\x29\x2C\x20\x30\x29\x29\x20\x61\x73\x20\x74\x61\x6C\x6B\x74\x69\x6D\x65\x20\x46\x52\x4F\x4D\x20\x72\x65\x70\x6F\x72\x74\x5F\x61\x67\x65\x6E\x74\x20\x57\x48\x45\x52\x45\x20\x61\x67\x65\x6E\x74\x63\x6F\x6D\x70\x6C\x65\x74\x65\x20\x3D\x20\x31\x20\x41\x4E\x44\x20\x71\x75\x65\x75\x65\x20\x49\x4E\x20\x28\x27","\x64\x61\x74\x61\x56\x61\x6C\x75\x65\x73","\x53\x45\x4C\x45\x43\x54\x20\x71\x75\x65\x75\x65\x20\x41\x53\x20\x27\x6E\x61\x6D\x65\x27\x2C\x53\x45\x43\x5F\x54\x4F\x5F\x54\x49\x4D\x45\x28\x52\x4F\x55\x4E\x44\x28\x41\x56\x47\x28\x68\x6F\x6C\x64\x74\x69\x6D\x65\x29\x2C\x20\x30\x29\x29\x20\x61\x73\x20\x68\x6F\x6C\x64\x74\x69\x6D\x65\x20\x46\x52\x4F\x4D\x20\x72\x65\x70\x6F\x72\x74\x5F\x61\x67\x65\x6E\x74\x20\x57\x48\x45\x52\x45\x20\x61\x67\x65\x6E\x74\x63\x6F\x6D\x70\x6C\x65\x74\x65\x20\x3D\x20\x31\x20\x41\x4E\x44\x20\x71\x75\x65\x75\x65\x20\x49\x4E\x20\x28\x27","\x71\x75\x65\x75\x65","\x43\x4F\x55\x4E\x54","\x63\x6F\x6C","\x66\x6E","\x61\x63\x74\x69\x76\x65","\x77\x61\x69\x74\x69\x6E\x67\x43\x61\x6C\x6C\x73","\x63\x6F\x6E\x6E\x65\x63\x74\x65\x64\x6C\x69\x6E\x65\x6E\x61\x6D\x65","\x66\x75\x6C\x6C\x6E\x61\x6D\x65","\x71\x75\x65\x75\x65\x46\x69\x6C\x74\x65\x72","\x73\x63\x6F\x70\x65","\x61\x76\x67\x61\x6E\x73\x77\x65\x72\x74\x69\x6D\x65","\x53\x45\x4C\x45\x43\x54\x20\x53\x45\x43\x5F\x54\x4F\x5F\x54\x49\x4D\x45\x28\x52\x4F\x55\x4E\x44\x28\x41\x56\x47\x28\x68\x6F\x6C\x64\x74\x69\x6D\x65\x29\x2C\x20\x30\x29\x29\x20\x61\x73\x20\x76\x61\x6C\x75\x65\x20\x46\x52\x4F\x4D\x20\x72\x65\x70\x6F\x72\x74\x5F\x61\x67\x65\x6E\x74\x20\x57\x48\x45\x52\x45\x20\x61\x67\x65\x6E\x74\x63\x6F\x6D\x70\x6C\x65\x74\x65\x20\x3D\x20\x31\x20\x41\x4E\x44\x20\x71\x75\x65\x75\x65\x20\x49\x4E\x20\x28\x27","\x27\x29","\x61\x76\x67\x74\x61\x6C\x6B\x74\x69\x6D\x65","\x53\x45\x4C\x45\x43\x54\x20\x53\x45\x43\x5F\x54\x4F\x5F\x54\x49\x4D\x45\x28\x52\x4F\x55\x4E\x44\x28\x41\x56\x47\x28\x74\x61\x6C\x6B\x74\x69\x6D\x65\x29\x2C\x20\x30\x29\x29\x20\x61\x73\x20\x76\x61\x6C\x75\x65\x20\x46\x52\x4F\x4D\x20\x72\x65\x70\x6F\x72\x74\x5F\x61\x67\x65\x6E\x74\x20\x57\x48\x45\x52\x45\x20\x61\x67\x65\x6E\x74\x63\x6F\x6D\x70\x6C\x65\x74\x65\x20\x3D\x20\x31\x20\x41\x4E\x44\x20\x71\x75\x65\x75\x65\x20\x49\x4E\x20\x28\x27","\x61\x6E\x73\x77\x65\x72\x72\x61\x74\x65","\x53\x45\x4C\x45\x43\x54\x20\x52\x4F\x55\x4E\x44\x28\x53\x55\x4D\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x63\x6F\x6D\x70\x6C\x65\x74\x65\x29\x20\x2F\x20\x28\x53\x55\x4D\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x63\x6F\x6D\x70\x6C\x65\x74\x65\x29\x20\x2B\x20\x53\x55\x4D\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x61\x62\x61\x6E\x64\x6F\x6E\x29\x29\x20\x2A\x20\x31\x30\x30\x2C\x20\x31\x29\x20\x61\x73\x20\x76\x61\x6C\x75\x65\x20\x46\x52\x4F\x4D\x20\x72\x65\x70\x6F\x72\x74\x5F\x71\x75\x65\x75\x65\x20\x57\x48\x45\x52\x45\x20\x71\x75\x65\x75\x65\x20\x49\x4E\x20\x28\x27","\x61\x62\x61\x6E\x64\x6F\x6E\x72\x61\x74\x65","\x53\x45\x4C\x45\x43\x54\x20\x52\x4F\x55\x4E\x44\x28\x53\x55\x4D\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x61\x62\x61\x6E\x64\x6F\x6E\x29\x20\x2F\x20\x28\x53\x55\x4D\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x63\x6F\x6D\x70\x6C\x65\x74\x65\x29\x20\x2B\x20\x53\x55\x4D\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x61\x62\x61\x6E\x64\x6F\x6E\x29\x29\x20\x2A\x20\x31\x30\x30\x2C\x20\x31\x29\x20\x61\x73\x20\x76\x61\x6C\x75\x65\x20\x46\x52\x4F\x4D\x20\x72\x65\x70\x6F\x72\x74\x5F\x71\x75\x65\x75\x65\x20\x57\x48\x45\x52\x45\x20\x71\x75\x65\x75\x65\x20\x49\x4E\x20\x28\x27","\x74\x6F\x74\x61\x6C\x6F\x66\x66\x65\x72\x65\x64","\x53\x45\x4C\x45\x43\x54\x20\x43\x4F\x55\x4E\x54\x28\x64\x69\x73\x74\x69\x6E\x63\x74\x20\x75\x6E\x69\x71\x75\x65\x69\x64\x29\x20\x61\x73\x20\x76\x61\x6C\x75\x65\x20\x46\x52\x4F\x4D\x20\x72\x65\x70\x6F\x72\x74\x5F\x71\x75\x65\x75\x65\x20\x57\x48\x45\x52\x45\x20\x71\x75\x65\x75\x65\x20\x49\x4E\x20\x28\x27","\x61\x62\x61\x6E\x64\x6F\x6E\x65\x64\x41\x6C\x6C","\x73\x68\x6F\x77"];_0x5c3f[0];var _=require(_0x5c3f[1]);var sequelize=require(_0x5c3f[3])[_0x5c3f[2]];var Agent=require(_0x5c3f[3])[_0x5c3f[4]];var ReportQueue=require(_0x5c3f[3])[_0x5c3f[5]];var VoiceQueue=require(_0x5c3f[3])[_0x5c3f[6]];var ReportQueueHistory=require(_0x5c3f[3])[_0x5c3f[8]][_0x5c3f[7]];var Util=require(_0x5c3f[9]);var Promise=require(_0x5c3f[10]);exports[_0x5c3f[11]]= function(_0xaafax9,_0xaafaxa,_0xaafaxb){return ReportQueue[_0x5c3f[18]](Util[_0x5c3f[17]](_0xaafax9[_0x5c3f[16]]))[_0x5c3f[15]](function(_0xaafaxd){return _0xaafaxa[_0x5c3f[14]](200)[_0x5c3f[13]](_0xaafaxd)})[_0x5c3f[12]](function(_0xaafaxc){return handleError(_0xaafaxa,_0xaafaxc)})};exports[_0x5c3f[19]]= function(_0xaafax9,_0xaafaxa){return ReportQueue[_0x5c3f[26]](_0xaafax9[_0x5c3f[25]][_0x5c3f[24]])[_0x5c3f[15]](function(_0xaafaxe){if(!_0xaafaxe){return _0xaafaxa[_0x5c3f[20]](404)};var _0xaafaxf=_[_0x5c3f[22]](_0xaafaxe,_0xaafax9[_0x5c3f[21]]);return _0xaafaxf[_0x5c3f[23]]()})[_0x5c3f[15]](function(_0xaafaxe){return _0xaafaxa[_0x5c3f[14]](200)[_0x5c3f[13]](_0xaafaxe)})[_0x5c3f[12]](function(_0xaafaxc){return handleError(_0xaafaxa,_0xaafaxc)})};exports[_0x5c3f[27]]= function(_0xaafax9,_0xaafaxa){return ReportQueueHistory[_0x5c3f[27]]()[_0x5c3f[15]](function(_0xaafax10){return _0xaafaxa[_0x5c3f[14]](200)[_0x5c3f[13]](_0xaafax10)})[_0x5c3f[12]](function(_0xaafaxc){return handleError(_0xaafaxa,_0xaafaxc)})};exports[_0x5c3f[28]]= function(_0xaafax9,_0xaafaxa){return Promise[_0x5c3f[31]]([])[_0x5c3f[15]](getVoiceQueues(_0xaafax9[_0x5c3f[30]]))[_0x5c3f[15]](function(_0xaafax12){return ReportQueue[_0x5c3f[29]]({where:{queuecallerleaveAt:null,queue:_0xaafax12}})})[_0x5c3f[15]](function(_0xaafax11){return _0xaafaxa[_0x5c3f[14]](200)[_0x5c3f[13]]({value:_0xaafax11})})[_0x5c3f[12]](function(_0xaafaxc){return handleError(_0xaafaxa,_0xaafaxc)})};function getVoiceQueues(_0xaafax14){return function(){switch(_0xaafax14[_0x5c3f[39]]){case _0x5c3f[30]:return Agent[_0x5c3f[26]](_0xaafax14[_0x5c3f[24]],{attributes:[_0x5c3f[24]]})[_0x5c3f[15]](Util[_0x5c3f[35]]())[_0x5c3f[15]](function(_0xaafax12){return _[_0x5c3f[34]](_0xaafax12[_0x5c3f[32]],_0x5c3f[33])});case _0x5c3f[37]:return Agent[_0x5c3f[26]](_0xaafax14[_0x5c3f[24]])[_0x5c3f[15]](function(_0xaafax15){return _0xaafax15[_0x5c3f[36]]({attributes:[_0x5c3f[33]]})})[_0x5c3f[15]](function(_0xaafax12){return _[_0x5c3f[34]](_0xaafax12,_0x5c3f[33])});default:return VoiceQueue[_0x5c3f[38]]()[_0x5c3f[15]](function(_0xaafax16){return {rows:_0xaafax16}})[_0x5c3f[15]](function(_0xaafax12){return _[_0x5c3f[34]](_0xaafax12[_0x5c3f[32]],_0x5c3f[33])})}}}exports[_0x5c3f[40]]= function(_0xaafax9,_0xaafaxa){var _0xaafax17={_limit:_0xaafax9[_0x5c3f[16]][_0x5c3f[41]]?_0xaafax9[_0x5c3f[16]][_0x5c3f[41]]:null,_offset:_0xaafax9[_0x5c3f[16]][_0x5c3f[42]]?_0xaafax9[_0x5c3f[16]][_0x5c3f[42]]:0,_name:_0xaafax9[_0x5c3f[16]][_0x5c3f[33]]|| undefined,_answeredFrom:_0xaafax9[_0x5c3f[16]][_0x5c3f[43]]|| _0xaafax9[_0x5c3f[16]][_0x5c3f[43]]=== 0?_0xaafax9[_0x5c3f[16]][_0x5c3f[43]]:undefined,_answeredTo:_0xaafax9[_0x5c3f[16]][_0x5c3f[44]]|| _0xaafax9[_0x5c3f[16]][_0x5c3f[44]]=== 0?_0xaafax9[_0x5c3f[16]][_0x5c3f[44]]:undefined,_abandonedFrom:_0xaafax9[_0x5c3f[16]][_0x5c3f[45]]|| _0xaafax9[_0x5c3f[16]][_0x5c3f[45]]=== 0?_0xaafax9[_0x5c3f[16]][_0x5c3f[45]]:undefined,_abandonedTo:_0xaafax9[_0x5c3f[16]][_0x5c3f[46]]|| _0xaafax9[_0x5c3f[16]][_0x5c3f[46]]=== 0?_0xaafax9[_0x5c3f[16]][_0x5c3f[46]]:undefined,_unmanagedFrom:_0xaafax9[_0x5c3f[16]][_0x5c3f[47]]|| _0xaafax9[_0x5c3f[16]][_0x5c3f[47]]=== 0?_0xaafax9[_0x5c3f[16]][_0x5c3f[47]]:undefined,_unmanagedTo:_0xaafax9[_0x5c3f[16]][_0x5c3f[48]]|| _0xaafax9[_0x5c3f[16]][_0x5c3f[48]]=== 0?_0xaafax9[_0x5c3f[16]][_0x5c3f[48]]:undefined};console[_0x5c3f[49]](_0xaafax17);var _0xaafax18,_0xaafax19,_0xaafax1a,_0xaafax1b;delete _0xaafax9[_0x5c3f[16]][_0x5c3f[41]];delete _0xaafax9[_0x5c3f[16]][_0x5c3f[42]];delete _0xaafax9[_0x5c3f[16]][_0x5c3f[43]];delete _0xaafax9[_0x5c3f[16]][_0x5c3f[44]];delete _0xaafax9[_0x5c3f[16]][_0x5c3f[45]];delete _0xaafax9[_0x5c3f[16]][_0x5c3f[46]];delete _0xaafax9[_0x5c3f[16]][_0x5c3f[47]];delete _0xaafax9[_0x5c3f[16]][_0x5c3f[48]];return Promise[_0x5c3f[31]]([])[_0x5c3f[15]](getVoiceQueues(_0xaafax9[_0x5c3f[30]]))[_0x5c3f[15]](function(_0xaafax12){_0xaafax19= _0xaafax12;_0xaafax18= _[_0x5c3f[34]](_0xaafax12,function(_0xaafax1f){return {name:_0xaafax1f}});return ReportQueue[_0x5c3f[38]]({where:{queuecallerleaveAt:null,queue:_0xaafax19},group:_0x5c3f[84],attributes:[[_0x5c3f[84],_0x5c3f[33]],[sequelize[_0x5c3f[87]](_0x5c3f[85],sequelize[_0x5c3f[86]](_0x5c3f[24])),_0x5c3f[28]]]})})[_0x5c3f[15]](function(_0xaafax31){_0xaafax31= _[_0x5c3f[34]](_0xaafax31,_0x5c3f[82]);_0xaafax18[_0x5c3f[53]](function(_0xaafax1f,_0xaafax32){var _0xaafax20=_[_0x5c3f[51]](_0xaafax31,{name:_0xaafax1f[_0x5c3f[33]]});_0xaafax1f[_0x5c3f[28]]= _0xaafax20?_0xaafax20[_0x5c3f[28]]:0});return ReportQueue[_0x5c3f[38]]({where:{queuecallerexit:false,queuecallerabandon:false,queuecallercomplete:false,queuecallerleaveAt:{$ne:null},queue:_0xaafax19},group:_0x5c3f[84],attributes:[[_0x5c3f[84],_0x5c3f[33]],[sequelize[_0x5c3f[87]](_0x5c3f[85],sequelize[_0x5c3f[86]](_0x5c3f[24])),_0x5c3f[88]]]})})[_0x5c3f[15]](function(_0xaafax30){_0xaafax30= _[_0x5c3f[34]](_0xaafax30,_0x5c3f[82]);_0xaafax18[_0x5c3f[53]](function(_0xaafax1f){var _0xaafax20=_[_0x5c3f[51]](_0xaafax30,{name:_0xaafax1f[_0x5c3f[33]]});_0xaafax1f[_0x5c3f[88]]= _0xaafax20?_0xaafax20[_0x5c3f[88]]:0});return ReportQueue[_0x5c3f[38]]({where:{queuecallercomplete:true,queue:_0xaafax19},group:_0x5c3f[84],attributes:[[_0x5c3f[84],_0x5c3f[33]],[sequelize[_0x5c3f[87]](_0x5c3f[85],sequelize[_0x5c3f[86]](_0x5c3f[24])),_0x5c3f[55]]]})})[_0x5c3f[15]](function(_0xaafax2f){_0xaafax2f= _[_0x5c3f[34]](_0xaafax2f,_0x5c3f[82]);_0xaafax18[_0x5c3f[53]](function(_0xaafax1f){var _0xaafax20=_[_0x5c3f[51]](_0xaafax2f,{name:_0xaafax1f[_0x5c3f[33]]});_0xaafax1f[_0x5c3f[55]]= _0xaafax20?_0xaafax20[_0x5c3f[55]]:0});return ReportQueue[_0x5c3f[38]]({where:{queuecallerabandon:true,queue:_0xaafax19},group:_0x5c3f[84],attributes:[[_0x5c3f[84],_0x5c3f[33]],[sequelize[_0x5c3f[87]](_0x5c3f[85],sequelize[_0x5c3f[86]](_0x5c3f[24])),_0x5c3f[58]]]})})[_0x5c3f[15]](function(_0xaafax2e){_0xaafax2e= _[_0x5c3f[34]](_0xaafax2e,_0x5c3f[82]);_0xaafax18[_0x5c3f[53]](function(_0xaafax1f){var _0xaafax20=_[_0x5c3f[51]](_0xaafax2e,{name:_0xaafax1f[_0x5c3f[33]]});_0xaafax1f[_0x5c3f[58]]= _0xaafax20?_0xaafax20[_0x5c3f[58]]:0});return ReportQueue[_0x5c3f[38]]({where:{queuecallerexit:true,queue:_0xaafax19},group:_0x5c3f[84],attributes:[[_0x5c3f[84],_0x5c3f[33]],[sequelize[_0x5c3f[87]](_0x5c3f[85],sequelize[_0x5c3f[86]](_0x5c3f[24])),_0x5c3f[61]]]})})[_0x5c3f[15]](function(_0xaafax2d){_0xaafax2d= _[_0x5c3f[34]](_0xaafax2d,_0x5c3f[82]);_0xaafax18[_0x5c3f[53]](function(_0xaafax1f){var _0xaafax20=_[_0x5c3f[51]](_0xaafax2d,{name:_0xaafax1f[_0x5c3f[33]]});_0xaafax1f[_0x5c3f[61]]= _0xaafax20?_0xaafax20[_0x5c3f[61]]:0});return sequelize[_0x5c3f[16]](_0x5c3f[83]+ _0xaafax19[_0x5c3f[76]](_0x5c3f[75])+ _0x5c3f[77],{type:sequelize[_0x5c3f[79]][_0x5c3f[78]]})})[_0x5c3f[15]](function(_0xaafax2c){_0xaafax18[_0x5c3f[53]](function(_0xaafax1f){var _0xaafax20=_[_0x5c3f[51]](_0xaafax2c,{name:_0xaafax1f[_0x5c3f[33]]});_0xaafax1f[_0x5c3f[80]]= _0xaafax20?_0xaafax20[_0x5c3f[80]]:_0x5c3f[73]});return sequelize[_0x5c3f[16]](_0x5c3f[81]+ _0xaafax19[_0x5c3f[76]](_0x5c3f[75])+ _0x5c3f[77],{type:sequelize[_0x5c3f[79]][_0x5c3f[78]]})})[_0x5c3f[15]](function(_0xaafax2b){_0xaafax18[_0x5c3f[53]](function(_0xaafax1f){var _0xaafax20=_[_0x5c3f[51]](_0xaafax2b,{name:_0xaafax1f[_0x5c3f[33]]});_0xaafax1f[_0x5c3f[72]]= _0xaafax20?_0xaafax20[_0x5c3f[72]]:_0x5c3f[73]});return sequelize[_0x5c3f[16]](_0x5c3f[74]+ _0xaafax19[_0x5c3f[76]](_0x5c3f[75])+ _0x5c3f[77],{type:sequelize[_0x5c3f[79]][_0x5c3f[78]]})})[_0x5c3f[15]](function(_0xaafax1e){_0xaafax18[_0x5c3f[53]](function(_0xaafax1f){var _0xaafax20=_[_0x5c3f[51]](_0xaafax1e,{name:_0xaafax1f[_0x5c3f[33]]});_0xaafax1f[_0x5c3f[52]]= _0xaafax20?_0xaafax20[_0x5c3f[52]]:0});var _0xaafax21=_(_[_0x5c3f[66]](_0xaafax18,function(_0xaafax1f){var _0xaafax22=_0xaafax17[_0x5c3f[54]]?(_0xaafax1f[_0x5c3f[55]]>= Number(_0xaafax17._answeredFrom)):true;var _0xaafax23=_0xaafax17[_0x5c3f[56]]?(_0xaafax1f[_0x5c3f[55]]<= Number(_0xaafax17._answeredTo)):true;var _0xaafax24=_0xaafax17[_0x5c3f[57]]?(_0xaafax1f[_0x5c3f[58]]>= Number(_0xaafax17._abandonedFrom)):true;var _0xaafax25=_0xaafax17[_0x5c3f[59]]?(_0xaafax1f[_0x5c3f[58]]<= Number(_0xaafax17._abandonedTo)):true;var _0xaafax26=_0xaafax17[_0x5c3f[60]]?(_0xaafax1f[_0x5c3f[61]]>= Number(_0xaafax17._unmanagedFrom)):true;var _0xaafax27=_0xaafax17[_0x5c3f[62]]?(_0xaafax1f[_0x5c3f[61]]<= Number(_0xaafax17._unmanagedTo)):true;var _0xaafax28=_0xaafax17[_0x5c3f[63]]?_[_0x5c3f[64]](_0xaafax1f[_0x5c3f[33]],_0xaafax17._name):true;return _[_0x5c3f[65]]([_0xaafax22,_0xaafax23,_0xaafax24,_0xaafax25,_0xaafax26,_0xaafax27,_0xaafax28],function(_0xaafax29,_0xaafax2a){return _0xaafax29&& _0xaafax2a})}));if(_0xaafax17[_0x5c3f[67]]){_0xaafax21= _0xaafax21[_0x5c3f[70]](_0xaafax17._offset)[_0x5c3f[69]](_0xaafax17._limit)[_0x5c3f[68]]()};return [_0xaafax18[_0x5c3f[71]],_0xaafax21]})[_0x5c3f[50]](function(_0xaafax1c,_0xaafax1d){return _0xaafaxa[_0x5c3f[14]](200)[_0x5c3f[13]]({rows:_0xaafax1d,count:_0xaafax1c})})[_0x5c3f[12]](function(_0xaafaxc){console[_0x5c3f[49]](_0xaafaxc);return handleError(_0xaafaxa,_0xaafaxc)})};exports[_0x5c3f[89]]= function(_0xaafax9,_0xaafaxa){var _0xaafax33={};if(_0xaafax9[_0x5c3f[30]][_0x5c3f[39]]=== _0x5c3f[37]){_0xaafax33[_0x5c3f[90]]= _0xaafax9[_0x5c3f[30]][_0x5c3f[91]]};return Promise[_0x5c3f[31]]([])[_0x5c3f[15]](getVoiceQueues(_0xaafax9[_0x5c3f[30]]))[_0x5c3f[15]](function(_0xaafax12){return ReportQueue[_0x5c3f[93]](_0x5c3f[28],{method:[_0x5c3f[92],_0xaafax12]})[_0x5c3f[38]](Util[_0x5c3f[17]](_0xaafax9[_0x5c3f[16]],_0xaafax33))})[_0x5c3f[15]](function(_0xaafax11){return _0xaafaxa[_0x5c3f[14]](200)[_0x5c3f[13]]({rows:_0xaafax11,count:_0xaafax11[_0x5c3f[71]]})})[_0x5c3f[12]](function(_0xaafaxc){return handleError(_0xaafaxa,_0xaafaxc)})};exports[_0x5c3f[88]]= function(_0xaafax9,_0xaafaxa){return Promise[_0x5c3f[31]]([])[_0x5c3f[15]](getVoiceQueues(_0xaafax9[_0x5c3f[30]]))[_0x5c3f[15]](function(_0xaafax12){return ReportQueue[_0x5c3f[29]]({where:{queuecallerexit:false,queuecallerabandon:false,queuecallercomplete:false,queuecallerleaveAt:{$ne:null},queue:_0xaafax12}})})[_0x5c3f[15]](function(_0xaafax11){return _0xaafaxa[_0x5c3f[14]](200)[_0x5c3f[13]]({value:_0xaafax11})})[_0x5c3f[12]](function(_0xaafaxc){return handleError(_0xaafaxa,_0xaafaxc)})};exports[_0x5c3f[55]]= function(_0xaafax9,_0xaafaxa){return Promise[_0x5c3f[31]]([])[_0x5c3f[15]](getVoiceQueues(_0xaafax9[_0x5c3f[30]]))[_0x5c3f[15]](function(_0xaafax12){return ReportQueue[_0x5c3f[29]]({where:{queuecallercomplete:true,queue:_0xaafax12}})})[_0x5c3f[15]](function(_0xaafax11){return _0xaafaxa[_0x5c3f[14]](200)[_0x5c3f[13]]({value:_0xaafax11})})[_0x5c3f[12]](function(_0xaafaxc){return handleError(_0xaafaxa,_0xaafaxc)})};exports[_0x5c3f[58]]= function(_0xaafax9,_0xaafaxa){return Promise[_0x5c3f[31]]([])[_0x5c3f[15]](getVoiceQueues(_0xaafax9[_0x5c3f[30]]))[_0x5c3f[15]](function(_0xaafax12){return ReportQueue[_0x5c3f[29]]({where:{queuecallerabandon:true,queue:_0xaafax12}})})[_0x5c3f[15]](function(_0xaafax11){return _0xaafaxa[_0x5c3f[14]](200)[_0x5c3f[13]]({value:_0xaafax11})})[_0x5c3f[12]](function(_0xaafaxc){return handleError(_0xaafaxa,_0xaafaxc)})};exports[_0x5c3f[94]]= function(_0xaafax9,_0xaafaxa){return Promise[_0x5c3f[31]]([])[_0x5c3f[15]](getVoiceQueues(_0xaafax9[_0x5c3f[30]]))[_0x5c3f[15]](function(_0xaafax12){return sequelize[_0x5c3f[16]](_0x5c3f[95]+ _0xaafax12[_0x5c3f[76]](_0x5c3f[75])+ _0x5c3f[96],{type:sequelize[_0x5c3f[79]][_0x5c3f[78]]})})[_0x5c3f[15]](function(_0xaafax11){return _0xaafaxa[_0x5c3f[14]](200)[_0x5c3f[13]]({value:_0xaafax11[0][_0x5c3f[68]]})})[_0x5c3f[12]](function(_0xaafaxc){return handleError(_0xaafaxa,_0xaafaxc)})};exports[_0x5c3f[97]]= function(_0xaafax9,_0xaafaxa){return Promise[_0x5c3f[31]]([])[_0x5c3f[15]](getVoiceQueues(_0xaafax9[_0x5c3f[30]]))[_0x5c3f[15]](function(_0xaafax12){return sequelize[_0x5c3f[16]](_0x5c3f[98]+ _0xaafax12[_0x5c3f[76]](_0x5c3f[75])+ _0x5c3f[96],{type:sequelize[_0x5c3f[79]][_0x5c3f[78]]})})[_0x5c3f[15]](function(_0xaafax11){return _0xaafaxa[_0x5c3f[14]](200)[_0x5c3f[13]]({value:_0xaafax11[0][_0x5c3f[68]]})})[_0x5c3f[12]](function(_0xaafaxc){return handleError(_0xaafaxa,_0xaafaxc)})};exports[_0x5c3f[99]]= function(_0xaafax9,_0xaafaxa){return Promise[_0x5c3f[31]]([])[_0x5c3f[15]](getVoiceQueues(_0xaafax9[_0x5c3f[30]]))[_0x5c3f[15]](function(_0xaafax12){return sequelize[_0x5c3f[16]](_0x5c3f[100]+ _0xaafax12[_0x5c3f[76]](_0x5c3f[75])+ _0x5c3f[96],{type:sequelize[_0x5c3f[79]][_0x5c3f[78]]})})[_0x5c3f[15]](function(_0xaafax11){return _0xaafaxa[_0x5c3f[14]](200)[_0x5c3f[13]]({value:_0xaafax11[0][_0x5c3f[68]]})})[_0x5c3f[12]](function(_0xaafaxc){return handleError(_0xaafaxa,_0xaafaxc)})};exports[_0x5c3f[101]]= function(_0xaafax9,_0xaafaxa){return Promise[_0x5c3f[31]]([])[_0x5c3f[15]](getVoiceQueues(_0xaafax9[_0x5c3f[30]]))[_0x5c3f[15]](function(_0xaafax12){return sequelize[_0x5c3f[16]](_0x5c3f[102]+ _0xaafax12[_0x5c3f[76]](_0x5c3f[75])+ _0x5c3f[96],{type:sequelize[_0x5c3f[79]][_0x5c3f[78]]})})[_0x5c3f[15]](function(_0xaafax11){return _0xaafaxa[_0x5c3f[14]](200)[_0x5c3f[13]]({value:_0xaafax11[0][_0x5c3f[68]]})})[_0x5c3f[12]](function(_0xaafaxc){return handleError(_0xaafaxa,_0xaafaxc)})};exports[_0x5c3f[103]]= function(_0xaafax9,_0xaafaxa){return Promise[_0x5c3f[31]]([])[_0x5c3f[15]](getVoiceQueues(_0xaafax9[_0x5c3f[30]]))[_0x5c3f[15]](function(_0xaafax12){return sequelize[_0x5c3f[16]](_0x5c3f[104]+ _0xaafax12[_0x5c3f[76]](_0x5c3f[75])+ _0x5c3f[96],{type:sequelize[_0x5c3f[79]][_0x5c3f[78]]})})[_0x5c3f[15]](function(_0xaafax11){return _0xaafaxa[_0x5c3f[14]](200)[_0x5c3f[13]]({value:_0xaafax11[0][_0x5c3f[68]]})})[_0x5c3f[12]](function(_0xaafaxc){return handleError(_0xaafaxa,_0xaafaxc)})};exports[_0x5c3f[61]]= function(_0xaafax9,_0xaafaxa){return Promise[_0x5c3f[31]]([])[_0x5c3f[15]](getVoiceQueues(_0xaafax9[_0x5c3f[30]]))[_0x5c3f[15]](function(_0xaafax12){return ReportQueue[_0x5c3f[29]]({where:{queuecallerexit:true,queue:_0xaafax12}})})[_0x5c3f[15]](function(_0xaafax11){return _0xaafaxa[_0x5c3f[14]](200)[_0x5c3f[13]]({value:_0xaafax11})})[_0x5c3f[12]](function(_0xaafaxc){return handleError(_0xaafaxa,_0xaafaxc)})};exports[_0x5c3f[105]]= function(_0xaafax9,_0xaafaxa){return Promise[_0x5c3f[31]]([])[_0x5c3f[15]](getVoiceQueues(_0xaafax9[_0x5c3f[30]]))[_0x5c3f[15]](function(_0xaafax12){return ReportQueue[_0x5c3f[18]]({where:{queuecallerabandon:true,queue:_0xaafax12}})})[_0x5c3f[15]](function(_0xaafax11){return _0xaafaxa[_0x5c3f[14]](200)[_0x5c3f[13]](_0xaafax11)})[_0x5c3f[12]](function(_0xaafaxc){return handleError(_0xaafaxa,_0xaafaxc)})};exports[_0x5c3f[106]]= function(_0xaafax9,_0xaafaxa){return ReportQueue[_0x5c3f[38]]({where:{queue:_0xaafax9[_0x5c3f[25]][_0x5c3f[84]]}})[_0x5c3f[15]](function(_0xaafax34){if(!_0xaafax34){return _0xaafaxa[_0x5c3f[20]](404)};return _0xaafaxa[_0x5c3f[13]]({count:_0xaafax34[_0x5c3f[71]],rows:_0xaafax34})})[_0x5c3f[12]](function(_0xaafaxc){return handleError(_0xaafaxa,_0xaafaxc)})};function handleError(_0xaafaxa,_0xaafaxc){return _0xaafaxa[_0x5c3f[14]](500)[_0x5c3f[13]](_0xaafaxc)} \ No newline at end of file diff --git a/server/api/report_queue/report_queue.events.js b/server/api/report_queue/report_queue.events.js index 29eace5..1216083 100644 --- a/server/api/report_queue/report_queue.events.js +++ b/server/api/report_queue/report_queue.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const ReportQueue = require('../../models').ReportQueue; - -var ReportQueueEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -ReportQueueEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'update', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - ReportQueue.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - ReportQueueEvents.emit(event + ':' + doc._id, doc); - ReportQueueEvents.emit(event, doc); - done(null); - } -} - -module.exports = ReportQueueEvents; +var _0x7f31=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x52\x65\x70\x6F\x72\x74\x51\x75\x65\x75\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x75\x70\x64\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x7f31[0];const EventEmitter=require(_0x7f31[1]);const ReportQueue=require(_0x7f31[3])[_0x7f31[2]];var ReportQueueEvents= new EventEmitter();ReportQueueEvents[_0x7f31[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x7f31[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x7f31[6],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x7f31[7]};for(var e in events){var event=events[e];ReportQueue[_0x7f31[8]](e,emitEvent(event))};function emitEvent(event){return function(_0x6b64x8,_0x6b64x9,_0x6b64xa){ReportQueueEvents[_0x7f31[11]](event+ _0x7f31[9]+ _0x6b64x8[_0x7f31[10]],_0x6b64x8);ReportQueueEvents[_0x7f31[11]](event,_0x6b64x8);_0x6b64xa(null)}}module[_0x7f31[12]]= ReportQueueEvents \ No newline at end of file diff --git a/server/api/report_queue/report_queue.socket.js b/server/api/report_queue/report_queue.socket.js index 3c27c94..7f35346 100644 --- a/server/api/report_queue/report_queue.socket.js +++ b/server/api/report_queue/report_queue.socket.js @@ -1,93 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const ReportQueueEvents = require('./report_queue.events'); -const VoiceQueue = require('../../models').VoiceQueue; -const User = require('../../models').User; -const Util = require('../../config/util'); -const _ = require('lodash'); -const Promise = require('bluebird'); - -// Model events to emit -var events = ['save', 'update', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('report_queue:' + event, socket); - - ReportQueueEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - switch (event) { - case 'report_queue:save': - case 'report_queue:update': - return Promise - .all([]) - .then(getVoiceQueues(socket)) - .then(function(userQueues) { - if (_.includes(userQueues, doc.queue)) { - socket.emit(event, doc); - } - }) - .catch(function(err) { - console.log('Error filtering queues after queue save', err); - }) - - case 'report_queue:remove': - socket.emit(event, doc); - break; - - default: - - } - }; -} - -function removeListener(event, listener) { - return function() { - ReportQueueEvents.removeListener(event, listener); - }; -} - -function getVoiceQueues(user) { - return function() { - switch (user.role) { - case 'user': - return User - .findById(user.userId, { - attributes: ['id'] - }) - .then(Util.getVoiceQueuesIdByUser()) - .then(function(userQueues) { - return _.map(userQueues.rows, 'name'); - }); - case 'agent': - return User - .scope('agent') - .findById(user.userId) - .then(function(agent) { - return agent - .getVoiceQueues({ - attributes: ['name'] - }); - }) - .then(function(agentQueues) { - return _.map(agentQueues, 'name'); - }); - default: - return VoiceQueue //the queue has to exist in my motion queues, otherwise is not manageable from the interface (prbably an error didn' t delete the queue from asterisk) - .findAll() - .then(function(userQueues) { - return _.map(userQueues, 'name'); - }); - } - } -} +var _0x4143=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x71\x75\x65\x75\x65\x2E\x65\x76\x65\x6E\x74\x73","\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x55\x73\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x6C\x6F\x64\x61\x73\x68","\x62\x6C\x75\x65\x62\x69\x72\x64","\x73\x61\x76\x65","\x75\x70\x64\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x72\x65\x70\x6F\x72\x74\x5F\x71\x75\x65\x75\x65\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x72\x65\x70\x6F\x72\x74\x5F\x71\x75\x65\x75\x65\x3A\x73\x61\x76\x65","\x45\x72\x72\x6F\x72\x20\x66\x69\x6C\x74\x65\x72\x69\x6E\x67\x20\x71\x75\x65\x75\x65\x73\x20\x61\x66\x74\x65\x72\x20\x71\x75\x65\x75\x65\x20\x73\x61\x76\x65","\x6C\x6F\x67","\x63\x61\x74\x63\x68","\x71\x75\x65\x75\x65","\x69\x6E\x63\x6C\x75\x64\x65\x73","\x65\x6D\x69\x74","\x74\x68\x65\x6E","\x61\x6C\x6C","\x72\x65\x70\x6F\x72\x74\x5F\x71\x75\x65\x75\x65\x3A\x75\x70\x64\x61\x74\x65","\x72\x65\x70\x6F\x72\x74\x5F\x71\x75\x65\x75\x65\x3A\x72\x65\x6D\x6F\x76\x65","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72","\x72\x6F\x77\x73","\x6E\x61\x6D\x65","\x6D\x61\x70","\x67\x65\x74\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x75\x73\x65\x72\x49\x64","\x69\x64","\x66\x69\x6E\x64\x42\x79\x49\x64","\x75\x73\x65\x72","\x67\x65\x74\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65\x73","\x61\x67\x65\x6E\x74","\x73\x63\x6F\x70\x65","\x66\x69\x6E\x64\x41\x6C\x6C","\x72\x6F\x6C\x65"];_0x4143[0];const ReportQueueEvents=require(_0x4143[1]);const VoiceQueue=require(_0x4143[3])[_0x4143[2]];const User=require(_0x4143[3])[_0x4143[4]];const Util=require(_0x4143[5]);const _=require(_0x4143[6]);const Promise=require(_0x4143[7]);var events=[_0x4143[8],_0x4143[9],_0x4143[10]];exports[_0x4143[11]]= function(_0xcd7ex8){for(var _0xcd7ex9=0,_0xcd7exa=events[_0x4143[12]];_0xcd7ex9< _0xcd7exa;_0xcd7ex9++){var _0xcd7exb=events[_0xcd7ex9];var _0xcd7exc=createListener(_0x4143[13]+ _0xcd7exb,_0xcd7ex8);ReportQueueEvents[_0x4143[14]](_0xcd7exb,_0xcd7exc);_0xcd7ex8[_0x4143[14]](_0x4143[15],removeListener(_0xcd7exb,_0xcd7exc))}};function createListener(_0xcd7exb,_0xcd7ex8){return function(_0xcd7exe){switch(_0xcd7exb){case _0x4143[16]:;case _0x4143[25]:return Promise[_0x4143[24]]([])[_0x4143[23]](getVoiceQueues(_0xcd7ex8))[_0x4143[23]](function(_0xcd7ex10){if(_[_0x4143[21]](_0xcd7ex10,_0xcd7exe[_0x4143[20]])){_0xcd7ex8[_0x4143[22]](_0xcd7exb,_0xcd7exe)}})[_0x4143[19]](function(_0xcd7exf){console[_0x4143[18]](_0x4143[17],_0xcd7exf)});case _0x4143[26]:_0xcd7ex8[_0x4143[22]](_0xcd7exb,_0xcd7exe);break;default:}}}function removeListener(_0xcd7exb,_0xcd7exc){return function(){ReportQueueEvents[_0x4143[27]](_0xcd7exb,_0xcd7exc)}}function getVoiceQueues(_0xcd7ex13){return function(){switch(_0xcd7ex13[_0x4143[40]]){case _0x4143[35]:return User[_0x4143[34]](_0xcd7ex13[_0x4143[32]],{attributes:[_0x4143[33]]})[_0x4143[23]](Util[_0x4143[31]]())[_0x4143[23]](function(_0xcd7ex10){return _[_0x4143[30]](_0xcd7ex10[_0x4143[28]],_0x4143[29])});case _0x4143[37]:return User[_0x4143[38]](_0x4143[37])[_0x4143[34]](_0xcd7ex13[_0x4143[32]])[_0x4143[23]](function(_0xcd7ex15){return _0xcd7ex15[_0x4143[36]]({attributes:[_0x4143[29]]})})[_0x4143[23]](function(_0xcd7ex14){return _[_0x4143[30]](_0xcd7ex14,_0x4143[29])});default:return VoiceQueue[_0x4143[39]]()[_0x4143[23]](function(_0xcd7ex10){return _[_0x4143[30]](_0xcd7ex10,_0x4143[29])})}}} \ No newline at end of file diff --git a/server/api/report_sms/index.js b/server/api/report_sms/index.js index 93dc165..e3031f3 100644 --- a/server/api/report_sms/index.js +++ b/server/api/report_sms/index.js @@ -1,16 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./report_sms.controller'); -var auth = require('../../auth/auth.service'); -var license = require('../../config/license/license.service'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), license.hasSms(), auth.hasModule([17], ['admin', 'agent']), controller.index); -router.get('/:id/accept/:uniqueid', auth.isAuthenticated(), license.hasSms(), auth.hasRole('agent'), controller.accept); -router.get('/:id/reject', auth.isAuthenticated(), license.hasSms(), auth.hasRole('agent'), controller.reject); - - - -module.exports = router; +var _0xc10a=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x73\x6D\x73\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x68\x61\x73\x53\x6D\x73","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64\x2F\x61\x63\x63\x65\x70\x74\x2F\x3A\x75\x6E\x69\x71\x75\x65\x69\x64","\x68\x61\x73\x52\x6F\x6C\x65","\x61\x63\x63\x65\x70\x74","\x2F\x3A\x69\x64\x2F\x72\x65\x6A\x65\x63\x74","\x72\x65\x6A\x65\x63\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xc10a[0];var express=require(_0xc10a[1]);var controller=require(_0xc10a[2]);var auth=require(_0xc10a[3]);var license=require(_0xc10a[4]);var router=express.Router();router[_0xc10a[12]](_0xc10a[5],auth[_0xc10a[6]](),license[_0xc10a[7]](),auth[_0xc10a[10]]([17],[_0xc10a[8],_0xc10a[9]]),controller[_0xc10a[11]]);router[_0xc10a[12]](_0xc10a[13],auth[_0xc10a[6]](),license[_0xc10a[7]](),auth[_0xc10a[14]](_0xc10a[9]),controller[_0xc10a[15]]);router[_0xc10a[12]](_0xc10a[16],auth[_0xc10a[6]](),license[_0xc10a[7]](),auth[_0xc10a[14]](_0xc10a[9]),controller[_0xc10a[17]]);module[_0xc10a[18]]= router \ No newline at end of file diff --git a/server/api/report_sms/report_sms.controller.js b/server/api/report_sms/report_sms.controller.js index 20e4240..e23d62c 100644 --- a/server/api/report_sms/report_sms.controller.js +++ b/server/api/report_sms/report_sms.controller.js @@ -1,179 +1 @@ -/** - * Using Rails-like standard naming convention for endpoints. - * GET /api/report/sms -> index - * POST /api/report/sms -> create - * GET /api/report/sms/:id -> show - * PUT /api/report/sms/:id -> update - * DELETE /api/report/sms/:id -> destroy - */ - -'use strict'; -var _ = require('lodash'); -var ReportSms = require('../../models').ReportSms; -var SmsRoom = require('../../models').SmsRoom; -var sequelize = require('../../models').sequelize; -var Agent = require('../../models').User; -var Util = require('../../config/util'); -var moment = require('moment'); - - - -function handleError(res, err) { - return res.status(500).send(err); -} - -// Gets a list of ReportSmss - - - -exports.index = function(req, res) { - return ReportSms - .findAndCountAll(Util.getQuery(req.query)) - .then(function(result) { - res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - - -// Get a single reportSMS -exports.accept = function(req, res) { - var _agent; - var _roomid = req.params.uniqueid.split('.')[1]; - - return Agent - .findById(req.user.id, { - attributes: ['id', 'smsCapacity'] - }) - .then(function(agent) { - _agent = agent; - return agent - .getSmsRooms({ - where: { - status: { - $ne: 'CLOSED' - }, - id: { - $ne: _roomid - } - }, - attributes: ['id'] - }); - }) - .then(function(smsRooms) { - return ReportSms - .findById(req.params.id); - }) - .then(function(reportSms) { - if (!reportSms) { - return res.sendStatus(404); - } - - var updated = _.merge(reportSms, { - connectid: req.params.uniqueid - }); - - return updated - .save(); - }) - .then(function() { - return SmsRoom - .update({ - status: 'OPEN', - openReason: 'agent' - }, { - where: { - id: _roomid - }, - user: req.user, - individualHooks: true - }); - }) - .then(function() { - return res.sendStatus(200); - }) - .catch(sequelize.UniqueConstraintError, function(err) { - return res.sendStatus(504); - }) - .catch(function(err) { - return handleError(res, err); - }); - -}; - -// Get a single reportMail -exports.reject = function(req, res) { - return ReportSms - .findById(req.params.id) - .then(function(reportSms) { - if (!reportSms) { - return res.sendStatus(404); - } - var updated = _.merge(reportSms, { - rejectedAt: moment().format("YYYY-MM-DD HH:mm:ss") - }); - return updated - .save(); - }) - .then(function() { - return res.sendStatus(200); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; -// Creates a new ReportSms in the DB -// exports.create = function(req, res) { -// return ReportSms -// .create(req.body) -// .then(function(reportSms) { -// return res.status(201).send(reportSms); -// }) -// .catch(function(err) { -// return handleError(res, err); -// }); -// } - -// Updates an existing ReportSms in the DB -// exports.update = function(req, res) { -// if (req.body._id) { -// delete req.body._id; -// } -// return ReportSms -// .findById(req.params.id) -// .then(function(reportSms) { -// if (!reportSms) { -// return res.sendStatus(404); -// } -// var updated = _.merge(reportSms, req.body); -// return updated -// .save(); -// }) -// .then(function(reportSms) { -// return res.status(200).send(reportSms); -// }) -// .catch(function(err) { -// return handleError(res, err); -// }); -// } -// -// Deletes a ReportSms from the DB -// exports.destroy = function(req, res) { -// return ReportSms -// .findById(req.params.id) -// .then(function(reportSms) { -// if (!reportSms) { -// return res.sendStatus(404); -// } -// return reportSms -// .destroy(); -// }) -// .then(function() { -// return res.sendStatus(204); -// }) -// .catch(function(err) { -// return handleError(res, err); -// }); -// } +var _0xcf88=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x52\x65\x70\x6F\x72\x74\x53\x6D\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x53\x6D\x73\x52\x6F\x6F\x6D","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x55\x73\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x6D\x6F\x6D\x65\x6E\x74","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x61\x63\x63\x65\x70\x74","\x2E","\x73\x70\x6C\x69\x74","\x75\x6E\x69\x71\x75\x65\x69\x64","\x70\x61\x72\x61\x6D\x73","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x4F\x50\x45\x4E","\x61\x67\x65\x6E\x74","\x75\x73\x65\x72","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x69\x64","\x66\x69\x6E\x64\x42\x79\x49\x64","\x43\x4C\x4F\x53\x45\x44","\x67\x65\x74\x53\x6D\x73\x52\x6F\x6F\x6D\x73","\x73\x6D\x73\x43\x61\x70\x61\x63\x69\x74\x79","\x72\x65\x6A\x65\x63\x74","\x59\x59\x59\x59\x2D\x4D\x4D\x2D\x44\x44\x20\x48\x48\x3A\x6D\x6D\x3A\x73\x73","\x66\x6F\x72\x6D\x61\x74"];_0xcf88[0];var _=require(_0xcf88[1]);var ReportSms=require(_0xcf88[3])[_0xcf88[2]];var SmsRoom=require(_0xcf88[3])[_0xcf88[4]];var sequelize=require(_0xcf88[3])[_0xcf88[5]];var Agent=require(_0xcf88[3])[_0xcf88[6]];var Util=require(_0xcf88[7]);var moment=require(_0xcf88[8]);function handleError(_0x589fx9,_0x589fxa){return _0x589fx9[_0xcf88[10]](500)[_0xcf88[9]](_0x589fxa)}exports[_0xcf88[11]]= function(_0x589fxb,_0x589fx9){return ReportSms[_0xcf88[16]](Util[_0xcf88[15]](_0x589fxb[_0xcf88[14]]))[_0xcf88[13]](function(_0x589fxc){_0x589fx9[_0xcf88[10]](200)[_0xcf88[9]](_0x589fxc)})[_0xcf88[12]](function(_0x589fxa){return handleError(_0x589fx9,_0x589fxa)})};exports[_0xcf88[17]]= function(_0x589fxb,_0x589fx9){var _0x589fxd;var _0x589fxe=_0x589fxb[_0xcf88[21]][_0xcf88[20]][_0xcf88[19]](_0xcf88[18])[1];return Agent[_0xcf88[30]](_0x589fxb[_0xcf88[25]][_0xcf88[29]],{attributes:[_0xcf88[29],_0xcf88[33]]})[_0xcf88[13]](function(_0x589fx12){_0x589fxd= _0x589fx12;return _0x589fx12[_0xcf88[32]]({where:{status:{$ne:_0xcf88[31]},id:{$ne:_0x589fxe}},attributes:[_0xcf88[29]]})})[_0xcf88[13]](function(_0x589fx11){return ReportSms[_0xcf88[30]](_0x589fxb[_0xcf88[21]][_0xcf88[29]])})[_0xcf88[13]](function(_0x589fxf){if(!_0x589fxf){return _0x589fx9[_0xcf88[22]](404)};var _0x589fx10=_[_0xcf88[27]](_0x589fxf,{connectid:_0x589fxb[_0xcf88[21]][_0xcf88[20]]});return _0x589fx10[_0xcf88[28]]()})[_0xcf88[13]](function(){return SmsRoom[_0xcf88[26]]({status:_0xcf88[23],openReason:_0xcf88[24]},{where:{id:_0x589fxe},user:_0x589fxb[_0xcf88[25]],individualHooks:true})})[_0xcf88[13]](function(){return _0x589fx9[_0xcf88[22]](200)})[_0xcf88[12]](sequelize.UniqueConstraintError,function(_0x589fxa){return _0x589fx9[_0xcf88[22]](504)})[_0xcf88[12]](function(_0x589fxa){return handleError(_0x589fx9,_0x589fxa)})};exports[_0xcf88[34]]= function(_0x589fxb,_0x589fx9){return ReportSms[_0xcf88[30]](_0x589fxb[_0xcf88[21]][_0xcf88[29]])[_0xcf88[13]](function(_0x589fxf){if(!_0x589fxf){return _0x589fx9[_0xcf88[22]](404)};var _0x589fx10=_[_0xcf88[27]](_0x589fxf,{rejectedAt:moment()[_0xcf88[36]](_0xcf88[35])});return _0x589fx10[_0xcf88[28]]()})[_0xcf88[13]](function(){return _0x589fx9[_0xcf88[22]](200)})[_0xcf88[12]](function(_0x589fxa){return handleError(_0x589fx9,_0x589fxa)})} \ No newline at end of file diff --git a/server/api/report_sms/report_sms.events.js b/server/api/report_sms/report_sms.events.js index 85c8624..499711d 100644 --- a/server/api/report_sms/report_sms.events.js +++ b/server/api/report_sms/report_sms.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const ReportSms = require('../../models').ReportSms; - -var ReportSmsEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -ReportSmsEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'update', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - ReportSms.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - ReportSmsEvents.emit(event + ':' + doc._id, doc); - ReportSmsEvents.emit(event, doc); - done(null); - } -} - -module.exports = ReportSmsEvents; +var _0xb4dd=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x52\x65\x70\x6F\x72\x74\x53\x6D\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x75\x70\x64\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xb4dd[0];const EventEmitter=require(_0xb4dd[1]);const ReportSms=require(_0xb4dd[3])[_0xb4dd[2]];var ReportSmsEvents= new EventEmitter();ReportSmsEvents[_0xb4dd[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xb4dd[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xb4dd[6],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xb4dd[7]};for(var e in events){var event=events[e];ReportSms[_0xb4dd[8]](e,emitEvent(event))};function emitEvent(event){return function(_0x1052x8,_0x1052x9,_0x1052xa){ReportSmsEvents[_0xb4dd[11]](event+ _0xb4dd[9]+ _0x1052x8[_0xb4dd[10]],_0x1052x8);ReportSmsEvents[_0xb4dd[11]](event,_0x1052x8);_0x1052xa(null)}}module[_0xb4dd[12]]= ReportSmsEvents \ No newline at end of file diff --git a/server/api/report_sms/report_sms.socket.js b/server/api/report_sms/report_sms.socket.js index f63cd11..222f570 100644 --- a/server/api/report_sms/report_sms.socket.js +++ b/server/api/report_sms/report_sms.socket.js @@ -1,46 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const ReportSmsEvents = require('./report_sms.events'); - -// Model events to emit -var events = ['save', 'update', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('report_sms:' + event, socket); - - ReportSmsEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - switch (event) { - case 'report_sms:save': - case 'report_sms:update': - if (socket.name === doc.membername || socket.role === 'admin') { - socket.emit(event, doc); - } - break; - - case 'report_sms:remove': - socket.emit(event, doc); - break; - - default: - - } - }; -} - -function removeListener(event, listener) { - return function() { - ReportSmsEvents.removeListener(event, listener); - }; -} +var _0x71f8=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x73\x6D\x73\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x75\x70\x64\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x72\x65\x70\x6F\x72\x74\x5F\x73\x6D\x73\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x72\x65\x70\x6F\x72\x74\x5F\x73\x6D\x73\x3A\x73\x61\x76\x65","\x6E\x61\x6D\x65","\x6D\x65\x6D\x62\x65\x72\x6E\x61\x6D\x65","\x72\x6F\x6C\x65","\x61\x64\x6D\x69\x6E","\x65\x6D\x69\x74","\x72\x65\x70\x6F\x72\x74\x5F\x73\x6D\x73\x3A\x75\x70\x64\x61\x74\x65","\x72\x65\x70\x6F\x72\x74\x5F\x73\x6D\x73\x3A\x72\x65\x6D\x6F\x76\x65","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x71f8[0];const ReportSmsEvents=require(_0x71f8[1]);var events=[_0x71f8[2],_0x71f8[3],_0x71f8[4]];exports[_0x71f8[5]]= function(_0x4784x3){for(var _0x4784x4=0,_0x4784x5=events[_0x71f8[6]];_0x4784x4< _0x4784x5;_0x4784x4++){var _0x4784x6=events[_0x4784x4];var _0x4784x7=createListener(_0x71f8[7]+ _0x4784x6,_0x4784x3);ReportSmsEvents[_0x71f8[8]](_0x4784x6,_0x4784x7);_0x4784x3[_0x71f8[8]](_0x71f8[9],removeListener(_0x4784x6,_0x4784x7))}};function createListener(_0x4784x6,_0x4784x3){return function(_0x4784x9){switch(_0x4784x6){case _0x71f8[10]:;case _0x71f8[16]:if(_0x4784x3[_0x71f8[11]]=== _0x4784x9[_0x71f8[12]]|| _0x4784x3[_0x71f8[13]]=== _0x71f8[14]){_0x4784x3[_0x71f8[15]](_0x4784x6,_0x4784x9)};break;case _0x71f8[17]:_0x4784x3[_0x71f8[15]](_0x4784x6,_0x4784x9);break;default:}}}function removeListener(_0x4784x6,_0x4784x7){return function(){ReportSmsEvents[_0x71f8[18]](_0x4784x6,_0x4784x7)}} \ No newline at end of file diff --git a/server/api/report_sms_session/index.js b/server/api/report_sms_session/index.js index eba420d..75e3efc 100644 --- a/server/api/report_sms_session/index.js +++ b/server/api/report_sms_session/index.js @@ -1,16 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./report_sms_session.controller'); -var auth = require('../../auth/auth.service'); -var license = require('../../config/license/license.service'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), license.hasSms(), auth.hasModule([17], ['admin']), controller.index); -router.get('/describe', auth.isAuthenticated(), license.hasSms(), auth.hasModule([17], ['admin']), controller.describe); -router.get('/timeout', license.isValidDate(), auth.isAuthenticated(), license.hasSms(), auth.hasModule([17], ['admin']), controller.timeout); -router.get('/waiting', license.isValidDate(), auth.isAuthenticated(), license.hasSms(), auth.hasModule([17], ['admin']), controller.waiting); -router.get('/waiting/applications', auth.isAuthenticated(), license.hasSms(), auth.hasModule([11], ['admin', 'agent']), controller.waitingApplications); - -module.exports = router; +var _0xae2f=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x73\x6D\x73\x5F\x73\x65\x73\x73\x69\x6F\x6E\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x68\x61\x73\x53\x6D\x73","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x64\x65\x73\x63\x72\x69\x62\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x2F\x74\x69\x6D\x65\x6F\x75\x74","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x74\x69\x6D\x65\x6F\x75\x74","\x2F\x77\x61\x69\x74\x69\x6E\x67","\x77\x61\x69\x74\x69\x6E\x67","\x2F\x77\x61\x69\x74\x69\x6E\x67\x2F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x61\x67\x65\x6E\x74","\x77\x61\x69\x74\x69\x6E\x67\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x65\x78\x70\x6F\x72\x74\x73"];_0xae2f[0];var express=require(_0xae2f[1]);var controller=require(_0xae2f[2]);var auth=require(_0xae2f[3]);var license=require(_0xae2f[4]);var router=express.Router();router[_0xae2f[11]](_0xae2f[5],auth[_0xae2f[6]](),license[_0xae2f[7]](),auth[_0xae2f[9]]([17],[_0xae2f[8]]),controller[_0xae2f[10]]);router[_0xae2f[11]](_0xae2f[12],auth[_0xae2f[6]](),license[_0xae2f[7]](),auth[_0xae2f[9]]([17],[_0xae2f[8]]),controller[_0xae2f[13]]);router[_0xae2f[11]](_0xae2f[14],license[_0xae2f[15]](),auth[_0xae2f[6]](),license[_0xae2f[7]](),auth[_0xae2f[9]]([17],[_0xae2f[8]]),controller[_0xae2f[16]]);router[_0xae2f[11]](_0xae2f[17],license[_0xae2f[15]](),auth[_0xae2f[6]](),license[_0xae2f[7]](),auth[_0xae2f[9]]([17],[_0xae2f[8]]),controller[_0xae2f[18]]);router[_0xae2f[11]](_0xae2f[19],auth[_0xae2f[6]](),license[_0xae2f[7]](),auth[_0xae2f[9]]([11],[_0xae2f[8],_0xae2f[20]]),controller[_0xae2f[21]]);module[_0xae2f[22]]= router \ No newline at end of file diff --git a/server/api/report_sms_session/report_sms_session.controller.js b/server/api/report_sms_session/report_sms_session.controller.js index 0b240ac..f42a24e 100644 --- a/server/api/report_sms_session/report_sms_session.controller.js +++ b/server/api/report_sms_session/report_sms_session.controller.js @@ -1,155 +1 @@ -'use strict'; - -var _ = require('lodash'); -var ReportSmsSession = require('../../models').ReportSmsSession; -var ReportSmsSessionHistory = require('../../models').history.ReportSmsSessionHistory; - -var Util = require('../../config/util'); -var User = require('../../models').User; -var Promise = require('bluebird'); - -// Get list of agents -exports.index = function(req, res, next) { - return ReportSmsSession - .findAndCountAll(Util.getQuery(req.query)) - .then(function(result) { - res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get list of fields -exports.describe = function(req, res) { - return ReportSmsSessionHistory - .describe() - .then(function(fields) { - return res.status(200).send(fields); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function getSmsQueues(user) { - return function() { - switch (user.role) { - case 'user': - return User - .findById(user.id, { - attributes: ['id'] - }) - .then(Util.getSmsQueuesIdByUser({}, { - attributes: ['id'], - include: [{ - raw: true, - model: User, - attributes: ['id'] - }] - })) - .then(function(userQueues) { - var users = []; - userQueues.rows.forEach(function(queue) { - users = _.union(users, _.map(queue.Users, 'id')); - }); - return { - $or: { - queue: _.map(userQueues.rows, 'id'), - memberid: users - } - }; - }); - case 'agent': - return User - .findById(user.id, { - attributes: ['id'] - }) - .then(function(agent) { - return agent - .getSmsQueues({ - attributes: ['id'] - }); - }) - .then(function(userQueues) { - return { - $or: { - queue: _.map(userQueues, 'id'), - memberid: user.id - } - }; - }); - default: - return {}; - } - } -} - -// Get timeout apps -exports.timeout = function(req, res) { - return Promise - .all([]) - .then(getSmsQueues(req.user)) - .then(function(condition) { - return ReportSmsSession - .count(Util.getQuery(req.query, _.merge({ - timeout: true - }, condition))); - }) - .then(function(data) { - return res.status(200).send({ - value: data - }); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -// Get waiting apps -exports.waiting = function(req, res) { - return Promise - .all([]) - .then(getSmsQueues(req.user)) - .then(function(condition) { - return ReportSmsSession - .count(Util.getQuery(req.query, _.merge({ - leaveAt: null - }, condition))); - }) - .then(function(data) { - return res.status(200).send({ - value: data - }); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -exports.waitingApplications = function(req, res) { - return Promise - .all([]) - .then(getSmsQueues(req.user)) - .then(function(condition) { - return ReportSmsSession - .findAll(Util.getQuery(req.query, _.merge({ - leaveAt: null - }, condition))); - }) - .then(function(data) { - return res.status(200).send({ - rows: data - }); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0xe6f7=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x52\x65\x70\x6F\x72\x74\x53\x6D\x73\x53\x65\x73\x73\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x52\x65\x70\x6F\x72\x74\x53\x6D\x73\x53\x65\x73\x73\x69\x6F\x6E\x48\x69\x73\x74\x6F\x72\x79","\x68\x69\x73\x74\x6F\x72\x79","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x55\x73\x65\x72","\x62\x6C\x75\x65\x62\x69\x72\x64","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x64\x65\x73\x63\x72\x69\x62\x65","\x69\x64","\x6D\x61\x70","\x75\x6E\x69\x6F\x6E","\x66\x6F\x72\x45\x61\x63\x68","\x72\x6F\x77\x73","\x67\x65\x74\x53\x6D\x73\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x66\x69\x6E\x64\x42\x79\x49\x64","\x75\x73\x65\x72","\x67\x65\x74\x53\x6D\x73\x51\x75\x65\x75\x65\x73","\x61\x67\x65\x6E\x74","\x72\x6F\x6C\x65","\x74\x69\x6D\x65\x6F\x75\x74","\x6C\x6F\x67","\x6D\x65\x72\x67\x65","\x63\x6F\x75\x6E\x74","\x61\x6C\x6C","\x77\x61\x69\x74\x69\x6E\x67","\x77\x61\x69\x74\x69\x6E\x67\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x66\x69\x6E\x64\x41\x6C\x6C"];_0xe6f7[0];var _=require(_0xe6f7[1]);var ReportSmsSession=require(_0xe6f7[3])[_0xe6f7[2]];var ReportSmsSessionHistory=require(_0xe6f7[3])[_0xe6f7[5]][_0xe6f7[4]];var Util=require(_0xe6f7[6]);var User=require(_0xe6f7[3])[_0xe6f7[7]];var Promise=require(_0xe6f7[8]);exports[_0xe6f7[9]]= function(_0x95b9x7,_0x95b9x8,_0x95b9x9){return ReportSmsSession[_0xe6f7[16]](Util[_0xe6f7[15]](_0x95b9x7[_0xe6f7[14]]))[_0xe6f7[13]](function(_0x95b9xb){_0x95b9x8[_0xe6f7[12]](200)[_0xe6f7[11]](_0x95b9xb)})[_0xe6f7[10]](function(_0x95b9xa){return handleError(_0x95b9x8,_0x95b9xa)})};exports[_0xe6f7[17]]= function(_0x95b9x7,_0x95b9x8){return ReportSmsSessionHistory[_0xe6f7[17]]()[_0xe6f7[13]](function(_0x95b9xc){return _0x95b9x8[_0xe6f7[12]](200)[_0xe6f7[11]](_0x95b9xc)})[_0xe6f7[10]](function(_0x95b9xa){return handleError(_0x95b9x8,_0x95b9xa)})};function getSmsQueues(_0x95b9xe){return function(){switch(_0x95b9xe[_0xe6f7[28]]){case _0xe6f7[25]:return User[_0xe6f7[24]](_0x95b9xe[_0xe6f7[18]],{attributes:[_0xe6f7[18]]})[_0xe6f7[13]](Util[_0xe6f7[23]]({},{attributes:[_0xe6f7[18]],include:[{raw:true,model:User,attributes:[_0xe6f7[18]]}]}))[_0xe6f7[13]](function(_0x95b9xf){var _0x95b9x10=[];_0x95b9xf[_0xe6f7[22]][_0xe6f7[21]](function(_0x95b9x11){_0x95b9x10= _[_0xe6f7[20]](_0x95b9x10,_[_0xe6f7[19]](_0x95b9x11.Users,_0xe6f7[18]))});return {$or:{queue:_[_0xe6f7[19]](_0x95b9xf[_0xe6f7[22]],_0xe6f7[18]),memberid:_0x95b9x10}}});case _0xe6f7[27]:return User[_0xe6f7[24]](_0x95b9xe[_0xe6f7[18]],{attributes:[_0xe6f7[18]]})[_0xe6f7[13]](function(_0x95b9x12){return _0x95b9x12[_0xe6f7[26]]({attributes:[_0xe6f7[18]]})})[_0xe6f7[13]](function(_0x95b9xf){return {$or:{queue:_[_0xe6f7[19]](_0x95b9xf,_0xe6f7[18]),memberid:_0x95b9xe[_0xe6f7[18]]}}});default:return {}}}}exports[_0xe6f7[29]]= function(_0x95b9x7,_0x95b9x8){return Promise[_0xe6f7[33]]([])[_0xe6f7[13]](getSmsQueues(_0x95b9x7[_0xe6f7[25]]))[_0xe6f7[13]](function(_0x95b9x14){return ReportSmsSession[_0xe6f7[32]](Util[_0xe6f7[15]](_0x95b9x7[_0xe6f7[14]],_[_0xe6f7[31]]({timeout:true},_0x95b9x14)))})[_0xe6f7[13]](function(_0x95b9x13){return _0x95b9x8[_0xe6f7[12]](200)[_0xe6f7[11]]({value:_0x95b9x13})})[_0xe6f7[10]](function(_0x95b9xa){console[_0xe6f7[30]](_0x95b9xa);return handleError(_0x95b9x8,_0x95b9xa)})};exports[_0xe6f7[34]]= function(_0x95b9x7,_0x95b9x8){return Promise[_0xe6f7[33]]([])[_0xe6f7[13]](getSmsQueues(_0x95b9x7[_0xe6f7[25]]))[_0xe6f7[13]](function(_0x95b9x14){return ReportSmsSession[_0xe6f7[32]](Util[_0xe6f7[15]](_0x95b9x7[_0xe6f7[14]],_[_0xe6f7[31]]({leaveAt:null},_0x95b9x14)))})[_0xe6f7[13]](function(_0x95b9x13){return _0x95b9x8[_0xe6f7[12]](200)[_0xe6f7[11]]({value:_0x95b9x13})})[_0xe6f7[10]](function(_0x95b9xa){console[_0xe6f7[30]](_0x95b9xa);return handleError(_0x95b9x8,_0x95b9xa)})};exports[_0xe6f7[35]]= function(_0x95b9x7,_0x95b9x8){return Promise[_0xe6f7[33]]([])[_0xe6f7[13]](getSmsQueues(_0x95b9x7[_0xe6f7[25]]))[_0xe6f7[13]](function(_0x95b9x14){return ReportSmsSession[_0xe6f7[36]](Util[_0xe6f7[15]](_0x95b9x7[_0xe6f7[14]],_[_0xe6f7[31]]({leaveAt:null},_0x95b9x14)))})[_0xe6f7[13]](function(_0x95b9x13){return _0x95b9x8[_0xe6f7[12]](200)[_0xe6f7[11]]({rows:_0x95b9x13})})[_0xe6f7[10]](function(_0x95b9xa){console[_0xe6f7[30]](_0x95b9xa);return handleError(_0x95b9x8,_0x95b9xa)})};function handleError(_0x95b9x8,_0x95b9xa){return _0x95b9x8[_0xe6f7[12]](500)[_0xe6f7[11]](_0x95b9xa)} \ No newline at end of file diff --git a/server/api/report_sms_session/report_sms_session.events.js b/server/api/report_sms_session/report_sms_session.events.js index 6617408..ca1ee56 100644 --- a/server/api/report_sms_session/report_sms_session.events.js +++ b/server/api/report_sms_session/report_sms_session.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const ReportSmsSession = require('../../models').ReportSmsSession; - -var ReportSmsSessionEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -ReportSmsSessionEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - ReportSmsSession.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - ReportSmsSessionEvents.emit(event + ':' + doc._id, doc); - ReportSmsSessionEvents.emit(event, doc); - done(null); - } -} - -module.exports = ReportSmsSessionEvents; +var _0xf323=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x52\x65\x70\x6F\x72\x74\x53\x6D\x73\x53\x65\x73\x73\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xf323[0];const EventEmitter=require(_0xf323[1]);const ReportSmsSession=require(_0xf323[3])[_0xf323[2]];var ReportSmsSessionEvents= new EventEmitter();ReportSmsSessionEvents[_0xf323[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xf323[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xf323[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xf323[6]};for(var e in events){var event=events[e];ReportSmsSession[_0xf323[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xc693x8,_0xc693x9,_0xc693xa){ReportSmsSessionEvents[_0xf323[10]](event+ _0xf323[8]+ _0xc693x8[_0xf323[9]],_0xc693x8);ReportSmsSessionEvents[_0xf323[10]](event,_0xc693x8);_0xc693xa(null)}}module[_0xf323[11]]= ReportSmsSessionEvents \ No newline at end of file diff --git a/server/api/report_sms_session/report_sms_session.socket.js b/server/api/report_sms_session/report_sms_session.socket.js index ef20c19..48186df 100644 --- a/server/api/report_sms_session/report_sms_session.socket.js +++ b/server/api/report_sms_session/report_sms_session.socket.js @@ -1,104 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const ReportSmsSessionEvents = require('./report_sms_session.events'); -const User = require('../../models').User; -const Util = require('../../config/util'); -const _ = require('lodash'); -const Promise = require('bluebird'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('report_sms_session:' + event, socket); - - ReportSmsSessionEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - switch (event) { - case 'report_sms_session:save': - return Promise - .all([]) - .then(getSmsQueues(socket)) - .then(function(condition) { - if (socket.role === 'admin' || _.includes(condition.memberid, doc.memberid) || _.includes(condition.queue, doc.queue)) { - socket.emit(event, doc); - } - }) - .catch(function(err) { - console.log('Error filtering report sms sessions after save', err); - }); - case 'report_sms_session:remove': - socket.emit(event, doc); - break; - - default: - - } - }; -} - -function removeListener(event, listener) { - return function() { - ReportSmsSessionEvents.removeListener(event, listener); - }; -} - -function getSmsQueues(user) { - return function() { - switch (user.role) { - case 'user': - return User - .findById(user.userId, { - attributes: ['id'] - }) - .then(Util.getSmsQueuesIdByUser({}, { - attributes: ['id'], - include: [{ - raw: true, - model: User, - attributes: ['id'] - }] - })) - .then(function(userQueues) { - var users = []; - userQueues.rows.forEach(function(queue) { - users = _.union(users, _.map(queue.Users, 'id')); - }); - return { - queue: _.map(userQueues.rows, 'id'), - memberid: users - }; - }); - case 'agent': - return User - .findById(user.userId, { - attributes: ['id'] - }) - .then(function(agent) { - return agent - .getSmsQueues({ - attributes: ['id'] - }); - }) - .then(function(userQueues) { - return { - queue: _.map(userQueues, 'id'), - memberid: user.userId - }; - }); - default: - return {}; - } - } -} +var _0xe404=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x73\x6D\x73\x5F\x73\x65\x73\x73\x69\x6F\x6E\x2E\x65\x76\x65\x6E\x74\x73","\x55\x73\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x6C\x6F\x64\x61\x73\x68","\x62\x6C\x75\x65\x62\x69\x72\x64","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x72\x65\x70\x6F\x72\x74\x5F\x73\x6D\x73\x5F\x73\x65\x73\x73\x69\x6F\x6E\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x45\x72\x72\x6F\x72\x20\x66\x69\x6C\x74\x65\x72\x69\x6E\x67\x20\x72\x65\x70\x6F\x72\x74\x20\x73\x6D\x73\x20\x73\x65\x73\x73\x69\x6F\x6E\x73\x20\x61\x66\x74\x65\x72\x20\x73\x61\x76\x65","\x6C\x6F\x67","\x63\x61\x74\x63\x68","\x72\x6F\x6C\x65","\x61\x64\x6D\x69\x6E","\x6D\x65\x6D\x62\x65\x72\x69\x64","\x69\x6E\x63\x6C\x75\x64\x65\x73","\x71\x75\x65\x75\x65","\x65\x6D\x69\x74","\x74\x68\x65\x6E","\x61\x6C\x6C","\x72\x65\x70\x6F\x72\x74\x5F\x73\x6D\x73\x5F\x73\x65\x73\x73\x69\x6F\x6E\x3A\x73\x61\x76\x65","\x72\x65\x70\x6F\x72\x74\x5F\x73\x6D\x73\x5F\x73\x65\x73\x73\x69\x6F\x6E\x3A\x72\x65\x6D\x6F\x76\x65","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72","\x69\x64","\x6D\x61\x70","\x75\x6E\x69\x6F\x6E","\x66\x6F\x72\x45\x61\x63\x68","\x72\x6F\x77\x73","\x67\x65\x74\x53\x6D\x73\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x75\x73\x65\x72\x49\x64","\x66\x69\x6E\x64\x42\x79\x49\x64","\x75\x73\x65\x72","\x67\x65\x74\x53\x6D\x73\x51\x75\x65\x75\x65\x73","\x61\x67\x65\x6E\x74"];_0xe404[0];const ReportSmsSessionEvents=require(_0xe404[1]);const User=require(_0xe404[3])[_0xe404[2]];const Util=require(_0xe404[4]);const _=require(_0xe404[5]);const Promise=require(_0xe404[6]);var events=[_0xe404[7],_0xe404[8]];exports[_0xe404[9]]= function(_0xa745x7){for(var _0xa745x8=0,_0xa745x9=events[_0xe404[10]];_0xa745x8< _0xa745x9;_0xa745x8++){var _0xa745xa=events[_0xa745x8];var _0xa745xb=createListener(_0xe404[11]+ _0xa745xa,_0xa745x7);ReportSmsSessionEvents[_0xe404[12]](_0xa745xa,_0xa745xb);_0xa745x7[_0xe404[12]](_0xe404[13],removeListener(_0xa745xa,_0xa745xb))}};function createListener(_0xa745xa,_0xa745x7){return function(_0xa745xd){switch(_0xa745xa){case _0xe404[25]:return Promise[_0xe404[24]]([])[_0xe404[23]](getSmsQueues(_0xa745x7))[_0xe404[23]](function(_0xa745xf){if(_0xa745x7[_0xe404[17]]=== _0xe404[18]|| _[_0xe404[20]](_0xa745xf[_0xe404[19]],_0xa745xd[_0xe404[19]])|| _[_0xe404[20]](_0xa745xf[_0xe404[21]],_0xa745xd[_0xe404[21]])){_0xa745x7[_0xe404[22]](_0xa745xa,_0xa745xd)}})[_0xe404[16]](function(_0xa745xe){console[_0xe404[15]](_0xe404[14],_0xa745xe)});case _0xe404[26]:_0xa745x7[_0xe404[22]](_0xa745xa,_0xa745xd);break;default:}}}function removeListener(_0xa745xa,_0xa745xb){return function(){ReportSmsSessionEvents[_0xe404[27]](_0xa745xa,_0xa745xb)}}function getSmsQueues(_0xa745x12){return function(){switch(_0xa745x12[_0xe404[17]]){case _0xe404[36]:return User[_0xe404[35]](_0xa745x12[_0xe404[34]],{attributes:[_0xe404[28]]})[_0xe404[23]](Util[_0xe404[33]]({},{attributes:[_0xe404[28]],include:[{raw:true,model:User,attributes:[_0xe404[28]]}]}))[_0xe404[23]](function(_0xa745x13){var _0xa745x14=[];_0xa745x13[_0xe404[32]][_0xe404[31]](function(_0xa745x15){_0xa745x14= _[_0xe404[30]](_0xa745x14,_[_0xe404[29]](_0xa745x15.Users,_0xe404[28]))});return {queue:_[_0xe404[29]](_0xa745x13[_0xe404[32]],_0xe404[28]),memberid:_0xa745x14}});case _0xe404[38]:return User[_0xe404[35]](_0xa745x12[_0xe404[34]],{attributes:[_0xe404[28]]})[_0xe404[23]](function(_0xa745x16){return _0xa745x16[_0xe404[37]]({attributes:[_0xe404[28]]})})[_0xe404[23]](function(_0xa745x13){return {queue:_[_0xe404[29]](_0xa745x13,_0xe404[28]),memberid:_0xa745x12[_0xe404[34]]}});default:return {}}}} \ No newline at end of file diff --git a/server/api/report_square/index.js b/server/api/report_square/index.js index ecde7a2..d91a0f3 100644 --- a/server/api/report_square/index.js +++ b/server/api/report_square/index.js @@ -1,14 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./report_square.controller'); -var auth = require('../../auth/auth.service'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), auth.hasModule([14], ['admin']), controller.index); -router.get('/describe', auth.isAuthenticated(), auth.hasModule([14], ['admin']), controller.describe); -router.get('/realtime', auth.isAuthenticated(), auth.hasModule([14], ['admin']), controller.realtime); -router.get('/show', auth.isAuthenticated(), auth.hasModule([14], ['admin', 'agent']), controller.show); - -module.exports = router; +var _0x6969=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x73\x71\x75\x61\x72\x65\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x64\x65\x73\x63\x72\x69\x62\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x2F\x72\x65\x61\x6C\x74\x69\x6D\x65","\x72\x65\x61\x6C\x74\x69\x6D\x65","\x2F\x73\x68\x6F\x77","\x61\x67\x65\x6E\x74","\x73\x68\x6F\x77","\x65\x78\x70\x6F\x72\x74\x73"];_0x6969[0];var express=require(_0x6969[1]);var controller=require(_0x6969[2]);var auth=require(_0x6969[3]);var router=express.Router();router[_0x6969[9]](_0x6969[4],auth[_0x6969[5]](),auth[_0x6969[7]]([14],[_0x6969[6]]),controller[_0x6969[8]]);router[_0x6969[9]](_0x6969[10],auth[_0x6969[5]](),auth[_0x6969[7]]([14],[_0x6969[6]]),controller[_0x6969[11]]);router[_0x6969[9]](_0x6969[12],auth[_0x6969[5]](),auth[_0x6969[7]]([14],[_0x6969[6]]),controller[_0x6969[13]]);router[_0x6969[9]](_0x6969[14],auth[_0x6969[5]](),auth[_0x6969[7]]([14],[_0x6969[6],_0x6969[15]]),controller[_0x6969[16]]);module[_0x6969[17]]= router \ No newline at end of file diff --git a/server/api/report_square/report_square.controller.js b/server/api/report_square/report_square.controller.js index b32d3b6..602a1aa 100644 --- a/server/api/report_square/report_square.controller.js +++ b/server/api/report_square/report_square.controller.js @@ -1,72 +1 @@ -'use strict'; - -var _ = require('lodash'); -var ReportSquare = require('../../models').ReportSquare; -var ReportSquareHistory = require('../../models').history.ReportSquareHistory; -var Util = require('../../config/util'); - -// Get list of report_square -exports.index = function(req, res, next) { - return generalIndex(req, res, next); -}; - -exports.realtime = function(req, res, next) { - return generalIndex(req, res, next, { - leaveAt: null - }); -}; - -function generalIndex(req, res, next, extraWhere) { - return ReportSquare - .findAndCountAll(Util.getQuery(req.query, extraWhere || {})) - .then(function(result) { - return res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); -} - -// Get list of fields -exports.describe = function(req, res) { - return ReportSquareHistory - .describe() - .then(function(fields) { - return res.status(200).send(fields); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; -exports.show = function(req, res) { - return ReportSquare - .findOne({ - where: { - uniqueid: req.query.uniqueid - } - }) - .then(function(report) { - if (report) { - return report; - } - return ReportSquareHistory - .findOne({ - where: { - uniqueid: req.query.uniqueid - } - }) - }) - .then(function(report) { - if (!report) { - return res.sendStatus(404); - } - return res.status(200).send(report); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0x3910=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x52\x65\x70\x6F\x72\x74\x53\x71\x75\x61\x72\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x52\x65\x70\x6F\x72\x74\x53\x71\x75\x61\x72\x65\x48\x69\x73\x74\x6F\x72\x79","\x68\x69\x73\x74\x6F\x72\x79","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x69\x6E\x64\x65\x78","\x72\x65\x61\x6C\x74\x69\x6D\x65","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x64\x65\x73\x63\x72\x69\x62\x65","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x75\x6E\x69\x71\x75\x65\x69\x64","\x66\x69\x6E\x64\x4F\x6E\x65"];_0x3910[0];var _=require(_0x3910[1]);var ReportSquare=require(_0x3910[3])[_0x3910[2]];var ReportSquareHistory=require(_0x3910[3])[_0x3910[5]][_0x3910[4]];var Util=require(_0x3910[6]);exports[_0x3910[7]]= function(_0x7f3cx5,_0x7f3cx6,_0x7f3cx7){return generalIndex(_0x7f3cx5,_0x7f3cx6,_0x7f3cx7)};exports[_0x3910[8]]= function(_0x7f3cx5,_0x7f3cx6,_0x7f3cx7){return generalIndex(_0x7f3cx5,_0x7f3cx6,_0x7f3cx7,{leaveAt:null})};function generalIndex(_0x7f3cx5,_0x7f3cx6,_0x7f3cx7,_0x7f3cx9){return ReportSquare[_0x3910[15]](Util[_0x3910[14]](_0x7f3cx5[_0x3910[13]],_0x7f3cx9|| {}))[_0x3910[12]](function(_0x7f3cxb){return _0x7f3cx6[_0x3910[11]](200)[_0x3910[10]](_0x7f3cxb)})[_0x3910[9]](function(_0x7f3cxa){return handleError(_0x7f3cx6,_0x7f3cxa)})}exports[_0x3910[16]]= function(_0x7f3cx5,_0x7f3cx6){return ReportSquareHistory[_0x3910[16]]()[_0x3910[12]](function(_0x7f3cxc){return _0x7f3cx6[_0x3910[11]](200)[_0x3910[10]](_0x7f3cxc)})[_0x3910[9]](function(_0x7f3cxa){return handleError(_0x7f3cx6,_0x7f3cxa)})};exports[_0x3910[17]]= function(_0x7f3cx5,_0x7f3cx6){return ReportSquare[_0x3910[20]]({where:{uniqueid:_0x7f3cx5[_0x3910[13]][_0x3910[19]]}})[_0x3910[12]](function(_0x7f3cxd){if(_0x7f3cxd){return _0x7f3cxd};return ReportSquareHistory[_0x3910[20]]({where:{uniqueid:_0x7f3cx5[_0x3910[13]][_0x3910[19]]}})})[_0x3910[12]](function(_0x7f3cxd){if(!_0x7f3cxd){return _0x7f3cx6[_0x3910[18]](404)};return _0x7f3cx6[_0x3910[11]](200)[_0x3910[10]](_0x7f3cxd)})[_0x3910[9]](function(_0x7f3cxa){return handleError(_0x7f3cx6,_0x7f3cxa)})};function handleError(_0x7f3cx6,_0x7f3cxa){return _0x7f3cx6[_0x3910[11]](500)[_0x3910[10]](_0x7f3cxa)} \ No newline at end of file diff --git a/server/api/report_square/report_square.events.js b/server/api/report_square/report_square.events.js index 6dd24aa..be3538a 100644 --- a/server/api/report_square/report_square.events.js +++ b/server/api/report_square/report_square.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const ReportSquare = require('../../models').ReportSquare; - -var ReportSquareEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -ReportSquareEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - ReportSquare.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - ReportSquareEvents.emit(event + ':' + doc._id, doc); - ReportSquareEvents.emit(event, doc); - done(null); - } -} - -module.exports = ReportSquareEvents; +var _0xa8fd=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x52\x65\x70\x6F\x72\x74\x53\x71\x75\x61\x72\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xa8fd[0];const EventEmitter=require(_0xa8fd[1]);const ReportSquare=require(_0xa8fd[3])[_0xa8fd[2]];var ReportSquareEvents= new EventEmitter();ReportSquareEvents[_0xa8fd[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xa8fd[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xa8fd[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xa8fd[6]};for(var e in events){var event=events[e];ReportSquare[_0xa8fd[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xfa42x8,_0xfa42x9,_0xfa42xa){ReportSquareEvents[_0xa8fd[10]](event+ _0xa8fd[8]+ _0xfa42x8[_0xa8fd[9]],_0xfa42x8);ReportSquareEvents[_0xa8fd[10]](event,_0xfa42x8);_0xfa42xa(null)}}module[_0xa8fd[11]]= ReportSquareEvents \ No newline at end of file diff --git a/server/api/report_square/report_square.socket.js b/server/api/report_square/report_square.socket.js index c919775..2343236 100644 --- a/server/api/report_square/report_square.socket.js +++ b/server/api/report_square/report_square.socket.js @@ -1,44 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const ReportSquareEvents = require('./report_square.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('report_square:' + event, socket); - - ReportSquareEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - switch (event) { - case 'report_square:save': - if (socket.role !== 'agent') { - socket.emit(event, doc); - } - break; - case 'report_square:remove': - socket.emit(event, doc); - break; - - default: - - } - }; -} - -function removeListener(event, listener) { - return function() { - ReportSquareEvents.removeListener(event, listener); - }; -} +var _0x46bf=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x73\x71\x75\x61\x72\x65\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x72\x65\x70\x6F\x72\x74\x5F\x73\x71\x75\x61\x72\x65\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x72\x6F\x6C\x65","\x61\x67\x65\x6E\x74","\x65\x6D\x69\x74","\x72\x65\x70\x6F\x72\x74\x5F\x73\x71\x75\x61\x72\x65\x3A\x73\x61\x76\x65","\x72\x65\x70\x6F\x72\x74\x5F\x73\x71\x75\x61\x72\x65\x3A\x72\x65\x6D\x6F\x76\x65","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x46bf[0];const ReportSquareEvents=require(_0x46bf[1]);var events=[_0x46bf[2],_0x46bf[3]];exports[_0x46bf[4]]= function(_0xe963x3){for(var _0xe963x4=0,_0xe963x5=events[_0x46bf[5]];_0xe963x4< _0xe963x5;_0xe963x4++){var _0xe963x6=events[_0xe963x4];var _0xe963x7=createListener(_0x46bf[6]+ _0xe963x6,_0xe963x3);ReportSquareEvents[_0x46bf[7]](_0xe963x6,_0xe963x7);_0xe963x3[_0x46bf[7]](_0x46bf[8],removeListener(_0xe963x6,_0xe963x7))}};function createListener(_0xe963x6,_0xe963x3){return function(_0xe963x9){switch(_0xe963x6){case _0x46bf[12]:if(_0xe963x3[_0x46bf[9]]!== _0x46bf[10]){_0xe963x3[_0x46bf[11]](_0xe963x6,_0xe963x9)};break;case _0x46bf[13]:_0xe963x3[_0x46bf[11]](_0xe963x6,_0xe963x9);break;default:}}}function removeListener(_0xe963x6,_0xe963x7){return function(){ReportSquareEvents[_0x46bf[14]](_0xe963x6,_0xe963x7)}} \ No newline at end of file diff --git a/server/api/report_square_detail/index.js b/server/api/report_square_detail/index.js index 58f916c..3fd884d 100644 --- a/server/api/report_square_detail/index.js +++ b/server/api/report_square_detail/index.js @@ -1,13 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./report_square_detail.controller'); -var auth = require('../../auth/auth.service'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), auth.hasModule([14], ['admin']), controller.index); -router.get('/describe', auth.isAuthenticated(), auth.hasModule([14], ['admin']), controller.describe); -router.get('/realtime', auth.isAuthenticated(), auth.hasModule([14], ['admin']), controller.realtime); - -module.exports = router; +var _0x23a3=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x73\x71\x75\x61\x72\x65\x5F\x64\x65\x74\x61\x69\x6C\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x64\x65\x73\x63\x72\x69\x62\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x2F\x72\x65\x61\x6C\x74\x69\x6D\x65","\x72\x65\x61\x6C\x74\x69\x6D\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0x23a3[0];var express=require(_0x23a3[1]);var controller=require(_0x23a3[2]);var auth=require(_0x23a3[3]);var router=express.Router();router[_0x23a3[9]](_0x23a3[4],auth[_0x23a3[5]](),auth[_0x23a3[7]]([14],[_0x23a3[6]]),controller[_0x23a3[8]]);router[_0x23a3[9]](_0x23a3[10],auth[_0x23a3[5]](),auth[_0x23a3[7]]([14],[_0x23a3[6]]),controller[_0x23a3[11]]);router[_0x23a3[9]](_0x23a3[12],auth[_0x23a3[5]](),auth[_0x23a3[7]]([14],[_0x23a3[6]]),controller[_0x23a3[13]]);module[_0x23a3[14]]= router \ No newline at end of file diff --git a/server/api/report_square_detail/report_square_detail.controller.js b/server/api/report_square_detail/report_square_detail.controller.js index c903f0f..30a953c 100644 --- a/server/api/report_square_detail/report_square_detail.controller.js +++ b/server/api/report_square_detail/report_square_detail.controller.js @@ -1,44 +1 @@ -'use strict'; - -var _ = require('lodash'); -var ReportSquareDetail = require('../../models').ReportSquareDetail; -var ReportSquareDetailHistory = require('../../models').history.ReportSquareDetailHistory; -var Util = require('../../config/util'); - -// Get list of report_square -exports.index = function(req, res, next) { - return generalIndex(req, res, next); -}; - -exports.realtime = function(req, res, next) { - return generalIndex(req, res, next, { - leaveAt: null - }); -}; - -function generalIndex(req, res, next, extraWhere) { - return ReportSquareDetail - .findAndCountAll(Util.getQuery(req.query, extraWhere || {})) - .then(function(result) { - return res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); -} - -// Get list of fields -exports.describe = function(req, res) { - return ReportSquareDetailHistory - .describe() - .then(function(fields) { - return res.status(200).send(fields); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0x4583=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x52\x65\x70\x6F\x72\x74\x53\x71\x75\x61\x72\x65\x44\x65\x74\x61\x69\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x52\x65\x70\x6F\x72\x74\x53\x71\x75\x61\x72\x65\x44\x65\x74\x61\x69\x6C\x48\x69\x73\x74\x6F\x72\x79","\x68\x69\x73\x74\x6F\x72\x79","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x69\x6E\x64\x65\x78","\x72\x65\x61\x6C\x74\x69\x6D\x65","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x64\x65\x73\x63\x72\x69\x62\x65"];_0x4583[0];var _=require(_0x4583[1]);var ReportSquareDetail=require(_0x4583[3])[_0x4583[2]];var ReportSquareDetailHistory=require(_0x4583[3])[_0x4583[5]][_0x4583[4]];var Util=require(_0x4583[6]);exports[_0x4583[7]]= function(_0xccbdx5,_0xccbdx6,_0xccbdx7){return generalIndex(_0xccbdx5,_0xccbdx6,_0xccbdx7)};exports[_0x4583[8]]= function(_0xccbdx5,_0xccbdx6,_0xccbdx7){return generalIndex(_0xccbdx5,_0xccbdx6,_0xccbdx7,{leaveAt:null})};function generalIndex(_0xccbdx5,_0xccbdx6,_0xccbdx7,_0xccbdx9){return ReportSquareDetail[_0x4583[15]](Util[_0x4583[14]](_0xccbdx5[_0x4583[13]],_0xccbdx9|| {}))[_0x4583[12]](function(_0xccbdxb){return _0xccbdx6[_0x4583[11]](200)[_0x4583[10]](_0xccbdxb)})[_0x4583[9]](function(_0xccbdxa){return handleError(_0xccbdx6,_0xccbdxa)})}exports[_0x4583[16]]= function(_0xccbdx5,_0xccbdx6){return ReportSquareDetailHistory[_0x4583[16]]()[_0x4583[12]](function(_0xccbdxc){return _0xccbdx6[_0x4583[11]](200)[_0x4583[10]](_0xccbdxc)})[_0x4583[9]](function(_0xccbdxa){return handleError(_0xccbdx6,_0xccbdxa)})};function handleError(_0xccbdx6,_0xccbdxa){return _0xccbdx6[_0x4583[11]](500)[_0x4583[10]](_0xccbdxa)} \ No newline at end of file diff --git a/server/api/report_square_detail/report_square_detail.events.js b/server/api/report_square_detail/report_square_detail.events.js index f5cbed4..6fc5fd1 100644 --- a/server/api/report_square_detail/report_square_detail.events.js +++ b/server/api/report_square_detail/report_square_detail.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const ReportSquareDetail = require('../../models').ReportSquareDetail; - -var ReportSquareDetailEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -ReportSquareDetailEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - ReportSquareDetail.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - ReportSquareDetailEvents.emit(event + ':' + doc._id, doc); - ReportSquareDetailEvents.emit(event, doc); - done(null); - } -} - -module.exports = ReportSquareDetailEvents; +var _0xa4ca=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x52\x65\x70\x6F\x72\x74\x53\x71\x75\x61\x72\x65\x44\x65\x74\x61\x69\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xa4ca[0];const EventEmitter=require(_0xa4ca[1]);const ReportSquareDetail=require(_0xa4ca[3])[_0xa4ca[2]];var ReportSquareDetailEvents= new EventEmitter();ReportSquareDetailEvents[_0xa4ca[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xa4ca[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xa4ca[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xa4ca[6]};for(var e in events){var event=events[e];ReportSquareDetail[_0xa4ca[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x9466x8,_0x9466x9,_0x9466xa){ReportSquareDetailEvents[_0xa4ca[10]](event+ _0xa4ca[8]+ _0x9466x8[_0xa4ca[9]],_0x9466x8);ReportSquareDetailEvents[_0xa4ca[10]](event,_0x9466x8);_0x9466xa(null)}}module[_0xa4ca[11]]= ReportSquareDetailEvents \ No newline at end of file diff --git a/server/api/report_square_detail/report_square_detail.socket.js b/server/api/report_square_detail/report_square_detail.socket.js index ba3a758..7c70c49 100644 --- a/server/api/report_square_detail/report_square_detail.socket.js +++ b/server/api/report_square_detail/report_square_detail.socket.js @@ -1,45 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const ReportSquareDetailEvents = require('./report_square_detail.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('report_square_detail:' + event, socket); - - ReportSquareDetailEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - switch (event) { - case 'report_square_detail:save': - if (socket.role !== 'agent') { - socket.emit(event, doc); - } - break; - - case 'report_square_detail:remove': - socket.emit(event, doc); - break; - - default: - - } - }; -} - -function removeListener(event, listener) { - return function() { - ReportSquareDetailEvents.removeListener(event, listener); - }; -} +var _0x3962=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x73\x71\x75\x61\x72\x65\x5F\x64\x65\x74\x61\x69\x6C\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x72\x65\x70\x6F\x72\x74\x5F\x73\x71\x75\x61\x72\x65\x5F\x64\x65\x74\x61\x69\x6C\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x72\x6F\x6C\x65","\x61\x67\x65\x6E\x74","\x65\x6D\x69\x74","\x72\x65\x70\x6F\x72\x74\x5F\x73\x71\x75\x61\x72\x65\x5F\x64\x65\x74\x61\x69\x6C\x3A\x73\x61\x76\x65","\x72\x65\x70\x6F\x72\x74\x5F\x73\x71\x75\x61\x72\x65\x5F\x64\x65\x74\x61\x69\x6C\x3A\x72\x65\x6D\x6F\x76\x65","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x3962[0];const ReportSquareDetailEvents=require(_0x3962[1]);var events=[_0x3962[2],_0x3962[3]];exports[_0x3962[4]]= function(_0xf010x3){for(var _0xf010x4=0,_0xf010x5=events[_0x3962[5]];_0xf010x4< _0xf010x5;_0xf010x4++){var _0xf010x6=events[_0xf010x4];var _0xf010x7=createListener(_0x3962[6]+ _0xf010x6,_0xf010x3);ReportSquareDetailEvents[_0x3962[7]](_0xf010x6,_0xf010x7);_0xf010x3[_0x3962[7]](_0x3962[8],removeListener(_0xf010x6,_0xf010x7))}};function createListener(_0xf010x6,_0xf010x3){return function(_0xf010x9){switch(_0xf010x6){case _0x3962[12]:if(_0xf010x3[_0x3962[9]]!== _0x3962[10]){_0xf010x3[_0x3962[11]](_0xf010x6,_0xf010x9)};break;case _0x3962[13]:_0xf010x3[_0x3962[11]](_0xf010x6,_0xf010x9);break;default:}}}function removeListener(_0xf010x6,_0xf010x7){return function(){ReportSquareDetailEvents[_0x3962[14]](_0xf010x6,_0xf010x7)}} \ No newline at end of file diff --git a/server/api/report_tree/index.js b/server/api/report_tree/index.js index 419796c..fe37474 100644 --- a/server/api/report_tree/index.js +++ b/server/api/report_tree/index.js @@ -1,12 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./report_tree.controller'); -var auth = require('../../auth/auth.service'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), auth.hasModule([17], ['admin']), controller.index); -router.put('/:id', auth.isAuthenticated(), auth.hasModule([17], ['admin']), controller.update); - -module.exports = router; +var _0x7f66=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x74\x72\x65\x65\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x7f66[0];var express=require(_0x7f66[1]);var controller=require(_0x7f66[2]);var auth=require(_0x7f66[3]);var router=express.Router();router[_0x7f66[9]](_0x7f66[4],auth[_0x7f66[5]](),auth[_0x7f66[7]]([17],[_0x7f66[6]]),controller[_0x7f66[8]]);router[_0x7f66[12]](_0x7f66[10],auth[_0x7f66[5]](),auth[_0x7f66[7]]([17],[_0x7f66[6]]),controller[_0x7f66[11]]);module[_0x7f66[13]]= router \ No newline at end of file diff --git a/server/api/report_tree/report_tree.controller.js b/server/api/report_tree/report_tree.controller.js index e1f947e..14b6e33 100644 --- a/server/api/report_tree/report_tree.controller.js +++ b/server/api/report_tree/report_tree.controller.js @@ -1,43 +1 @@ -'use strict'; - -var _ = require('lodash'); -var util = require('util'); -var ReportTree = require('../../models').ReportTree; - -// Get the reports trees -exports.index = function(req, res) { - return ReportTree - .findAll() - .then(function(trees) { - if (!trees) { - return res.sendStatus(404); - } - return res.status(200).send(trees); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Updates an existing report in the DB. -exports.update = function(req, res) { - return ReportTree - .findById(req.params.id) - .then(function(tree) { - if (!tree) { - return res.sendStatus(404); - } - var updated = _.merge(tree, req.body); - return updated.save(); - }) - .then(function(tree) { - return res.status(200).send(tree); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0xc78d=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x75\x74\x69\x6C","\x52\x65\x70\x6F\x72\x74\x54\x72\x65\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x66\x69\x6E\x64\x41\x6C\x6C","\x75\x70\x64\x61\x74\x65","\x62\x6F\x64\x79","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64"];_0xc78d[0];var _=require(_0xc78d[1]);var util=require(_0xc78d[2]);var ReportTree=require(_0xc78d[4])[_0xc78d[3]];exports[_0xc78d[5]]= function(_0xe315x4,_0xe315x5){return ReportTree[_0xc78d[11]]()[_0xc78d[10]](function(_0xe315x7){if(!_0xe315x7){return _0xe315x5[_0xc78d[7]](404)};return _0xe315x5[_0xc78d[9]](200)[_0xc78d[8]](_0xe315x7)})[_0xc78d[6]](function(_0xe315x6){return handleError(_0xe315x5,_0xe315x6)})};exports[_0xc78d[12]]= function(_0xe315x4,_0xe315x5){return ReportTree[_0xc78d[18]](_0xe315x4[_0xc78d[17]][_0xc78d[16]])[_0xc78d[10]](function(_0xe315x8){if(!_0xe315x8){return _0xe315x5[_0xc78d[7]](404)};var _0xe315x9=_[_0xc78d[14]](_0xe315x8,_0xe315x4[_0xc78d[13]]);return _0xe315x9[_0xc78d[15]]()})[_0xc78d[10]](function(_0xe315x8){return _0xe315x5[_0xc78d[9]](200)[_0xc78d[8]](_0xe315x8)})[_0xc78d[6]](function(_0xe315x6){return handleError(_0xe315x5,_0xe315x6)})};function handleError(_0xe315x5,_0xe315x6){return _0xe315x5[_0xc78d[9]](500)[_0xc78d[8]](_0xe315x6)} \ No newline at end of file diff --git a/server/api/report_tree/report_tree.events.js b/server/api/report_tree/report_tree.events.js index 650282c..36b7a41 100644 --- a/server/api/report_tree/report_tree.events.js +++ b/server/api/report_tree/report_tree.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const ReportTree = require('../../models').ReportTree; - -var ReportTreeEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -ReportTreeEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - ReportTree.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - ReportTreeEvents.emit(event + ':' + doc._id, doc); - ReportTreeEvents.emit(event, doc); - done(null); - } -} - -module.exports = ReportTreeEvents; +var _0x2080=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x52\x65\x70\x6F\x72\x74\x54\x72\x65\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x2080[0];const EventEmitter=require(_0x2080[1]);const ReportTree=require(_0x2080[3])[_0x2080[2]];var ReportTreeEvents= new EventEmitter();ReportTreeEvents[_0x2080[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x2080[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x2080[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x2080[6]};for(var e in events){var event=events[e];ReportTree[_0x2080[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xd3c9x8,_0xd3c9x9,_0xd3c9xa){ReportTreeEvents[_0x2080[10]](event+ _0x2080[8]+ _0xd3c9x8[_0x2080[9]],_0xd3c9x8);ReportTreeEvents[_0x2080[10]](event,_0xd3c9x8);_0xd3c9xa(null)}}module[_0x2080[11]]= ReportTreeEvents \ No newline at end of file diff --git a/server/api/report_tree/report_tree.socket.js b/server/api/report_tree/report_tree.socket.js index 0209c1a..4fb31ed 100644 --- a/server/api/report_tree/report_tree.socket.js +++ b/server/api/report_tree/report_tree.socket.js @@ -1,32 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const ReportTreeEvents = require('./report_tree.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('report_tree:' + event, socket); - - ReportTreeEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - ReportTreeEvents.removeListener(event, listener); - }; -} +var _0x92bc=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x74\x72\x65\x65\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x72\x65\x70\x6F\x72\x74\x5F\x74\x72\x65\x65\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x92bc[0];const ReportTreeEvents=require(_0x92bc[1]);var events=[_0x92bc[2],_0x92bc[3]];exports[_0x92bc[4]]= function(_0x2574x3){for(var _0x2574x4=0,_0x2574x5=events[_0x92bc[5]];_0x2574x4< _0x2574x5;_0x2574x4++){var _0x2574x6=events[_0x2574x4];var _0x2574x7=createListener(_0x92bc[6]+ _0x2574x6,_0x2574x3);ReportTreeEvents[_0x92bc[7]](_0x2574x6,_0x2574x7);_0x2574x3[_0x92bc[7]](_0x92bc[8],removeListener(_0x2574x6,_0x2574x7))}};function createListener(_0x2574x6,_0x2574x3){return function(_0x2574x9){_0x2574x3[_0x92bc[9]](_0x2574x6,_0x2574x9)}}function removeListener(_0x2574x6,_0x2574x7){return function(){ReportTreeEvents[_0x92bc[10]](_0x2574x6,_0x2574x7)}} \ No newline at end of file diff --git a/server/api/salesforce_account/index.js b/server/api/salesforce_account/index.js index ec28594..b76cd47 100644 --- a/server/api/salesforce_account/index.js +++ b/server/api/salesforce_account/index.js @@ -1,28 +1 @@ -'use strict'; - -var express = require('express'); -var auth = require('../../auth/auth.service'); -var controller = require('./salesforce_account.controller'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), auth.hasModule([19, 13], ['admin']), controller.index); -router.get('/:id', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.show); -router.get('/:id/check', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.checkAccount); -router.get('/:id/fields', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.getFields); -router.get('/:id/configurations', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.getAccountConfigurations); -router.get('/:id/configurations/:cid', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.getConfiguration); -router.post('/validate/:field', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.accountValidation); -router.post('/', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.create); -router.post('/:id/configurations', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.createConfiguration); -router.post('/:id/configurations/:cid/:type', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.createField); -router.put('/:id', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.update); -router.put('/:id/configurations/:cid/fields/:fid', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.updateField); -router.delete('/', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.bulkDestroy); -router.delete('/:id', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.destroy); -router.delete('/:id/configurations', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.bulkDestroyConfigurations); -router.delete('/:id/configurations/:cid', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.destroyConfiguration); -router.delete('/:id/configurations/:cid/fields/:fid', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.destroyField); - - -module.exports = router; +var _0x1b85=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x73\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x5F\x61\x63\x63\x6F\x75\x6E\x74\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x2F\x3A\x69\x64\x2F\x63\x68\x65\x63\x6B","\x63\x68\x65\x63\x6B\x41\x63\x63\x6F\x75\x6E\x74","\x2F\x3A\x69\x64\x2F\x66\x69\x65\x6C\x64\x73","\x67\x65\x74\x46\x69\x65\x6C\x64\x73","\x2F\x3A\x69\x64\x2F\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x73","\x67\x65\x74\x41\x63\x63\x6F\x75\x6E\x74\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x73","\x2F\x3A\x69\x64\x2F\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x73\x2F\x3A\x63\x69\x64","\x67\x65\x74\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E","\x2F\x76\x61\x6C\x69\x64\x61\x74\x65\x2F\x3A\x66\x69\x65\x6C\x64","\x61\x63\x63\x6F\x75\x6E\x74\x56\x61\x6C\x69\x64\x61\x74\x69\x6F\x6E","\x70\x6F\x73\x74","\x63\x72\x65\x61\x74\x65","\x63\x72\x65\x61\x74\x65\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E","\x2F\x3A\x69\x64\x2F\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x73\x2F\x3A\x63\x69\x64\x2F\x3A\x74\x79\x70\x65","\x63\x72\x65\x61\x74\x65\x46\x69\x65\x6C\x64","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x2F\x3A\x69\x64\x2F\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x73\x2F\x3A\x63\x69\x64\x2F\x66\x69\x65\x6C\x64\x73\x2F\x3A\x66\x69\x64","\x75\x70\x64\x61\x74\x65\x46\x69\x65\x6C\x64","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x73","\x64\x65\x73\x74\x72\x6F\x79\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E","\x64\x65\x73\x74\x72\x6F\x79\x46\x69\x65\x6C\x64","\x65\x78\x70\x6F\x72\x74\x73"];_0x1b85[0];var express=require(_0x1b85[1]);var auth=require(_0x1b85[2]);var controller=require(_0x1b85[3]);var router=express.Router();router[_0x1b85[9]](_0x1b85[4],auth[_0x1b85[5]](),auth[_0x1b85[7]]([19,13],[_0x1b85[6]]),controller[_0x1b85[8]]);router[_0x1b85[9]](_0x1b85[10],auth[_0x1b85[5]](),auth[_0x1b85[7]]([19],[_0x1b85[6]]),controller[_0x1b85[11]]);router[_0x1b85[9]](_0x1b85[12],auth[_0x1b85[5]](),auth[_0x1b85[7]]([19],[_0x1b85[6]]),controller[_0x1b85[13]]);router[_0x1b85[9]](_0x1b85[14],auth[_0x1b85[5]](),auth[_0x1b85[7]]([19],[_0x1b85[6]]),controller[_0x1b85[15]]);router[_0x1b85[9]](_0x1b85[16],auth[_0x1b85[5]](),auth[_0x1b85[7]]([19],[_0x1b85[6]]),controller[_0x1b85[17]]);router[_0x1b85[9]](_0x1b85[18],auth[_0x1b85[5]](),auth[_0x1b85[7]]([19],[_0x1b85[6]]),controller[_0x1b85[19]]);router[_0x1b85[22]](_0x1b85[20],auth[_0x1b85[5]](),auth[_0x1b85[7]]([19],[_0x1b85[6]]),controller[_0x1b85[21]]);router[_0x1b85[22]](_0x1b85[4],auth[_0x1b85[5]](),auth[_0x1b85[7]]([19],[_0x1b85[6]]),controller[_0x1b85[23]]);router[_0x1b85[22]](_0x1b85[16],auth[_0x1b85[5]](),auth[_0x1b85[7]]([19],[_0x1b85[6]]),controller[_0x1b85[24]]);router[_0x1b85[22]](_0x1b85[25],auth[_0x1b85[5]](),auth[_0x1b85[7]]([19],[_0x1b85[6]]),controller[_0x1b85[26]]);router[_0x1b85[28]](_0x1b85[10],auth[_0x1b85[5]](),auth[_0x1b85[7]]([19],[_0x1b85[6]]),controller[_0x1b85[27]]);router[_0x1b85[28]](_0x1b85[29],auth[_0x1b85[5]](),auth[_0x1b85[7]]([19],[_0x1b85[6]]),controller[_0x1b85[30]]);router[_0x1b85[32]](_0x1b85[4],auth[_0x1b85[5]](),auth[_0x1b85[7]]([19],[_0x1b85[6]]),controller[_0x1b85[31]]);router[_0x1b85[32]](_0x1b85[10],auth[_0x1b85[5]](),auth[_0x1b85[7]]([19],[_0x1b85[6]]),controller[_0x1b85[33]]);router[_0x1b85[32]](_0x1b85[16],auth[_0x1b85[5]](),auth[_0x1b85[7]]([19],[_0x1b85[6]]),controller[_0x1b85[34]]);router[_0x1b85[32]](_0x1b85[18],auth[_0x1b85[5]](),auth[_0x1b85[7]]([19],[_0x1b85[6]]),controller[_0x1b85[35]]);router[_0x1b85[32]](_0x1b85[29],auth[_0x1b85[5]](),auth[_0x1b85[7]]([19],[_0x1b85[6]]),controller[_0x1b85[36]]);module[_0x1b85[37]]= router \ No newline at end of file diff --git a/server/api/salesforce_account/salesforce_account.controller.js b/server/api/salesforce_account/salesforce_account.controller.js index 008c8f1..e727041 100644 --- a/server/api/salesforce_account/salesforce_account.controller.js +++ b/server/api/salesforce_account/salesforce_account.controller.js @@ -1,519 +1 @@ -/** - * Using Rails-like standard naming convention for endpoints. - * GET /api/salesforce/accounts -> index - * POST /api/salesforce/accounts -> create - * GET /api/salesforce/accounts/:id -> show - * PUT /api/salesforce/accounts/:id -> update - * DELETE /api/salesforce/accounts/:id -> destroy - */ - -'use strict'; - - -var _ = require('lodash'); -var util = require('util'); -var jsforce = require('jsforce'); -var Util = require('../../config/util'); - -var SalesforceAccount = require('../../models').SalesforceAccount; -var SalesforceConfiguration = require('../../models').SalesforceConfiguration; -var SalesforceField = require('../../models').SalesforceField; - - -function handleError(res, statusCode) { - statusCode = statusCode || 500; - return function(err) { - res.status(statusCode).send(err); - }; -} - -function responseWithResult(res, statusCode) { - statusCode = statusCode || 200; - return function(entity) { - if (entity) { - res.status(statusCode).json(entity); - } - }; -} - -function responseWithoutResult(res, statusCode) { - statusCode = statusCode || 200; - return function() { - res.sendStatus(statusCode); - }; -} - -function handleEntityNotFound(res) { - return function(entity) { - if (!entity) { - res.status(404).end(); - return null; - } - return entity; - }; -} - -function saveUpdates(updates) { - return function(entity) { - return entity.updateAttributes(updates) - .then(function(updated) { - return updated; - }); - }; -} - -function removeEntity(res) { - return function(entity) { - if (entity) { - return entity.destroy() - .then(function() { - res.status(204).end(); - }); - } - }; -} - -// Gets a list of SalesforceAccounts -exports.index = function(req, res, next) { - return SalesforceAccount - .scope('configurations') - .findAndCountAll(_.merge(Util.getQuery(req.query), { - distinct: true - })) - .then(responseWithResult(res)) - .catch(handleError(res)); -}; - -// Gets a single SalesforceAccount from the DB -exports.show = function(req, res) { - return SalesforceAccount - .findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Creates a new SalesforceAccount in the DB -exports.create = function(req, res) { - return SalesforceAccount - .create(req.body) - .then(responseWithResult(res, 201)) - .catch(handleError(res)); -} - -// Updates an existing SalesforceAccount in the DB -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - return SalesforceAccount - .findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(saveUpdates(req.body)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Deletes a SalesforceAccount from the DB -exports.destroy = function(req, res) { - return SalesforceAccount - .findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(removeEntity(res)) - .catch(handleError(res)); -} - -exports.bulkDestroy = function(req, res) { - return SalesforceAccount - .destroy({ - where: { - id: req.query.ids - }, - individualHooks: true - }) - .then(responseWithResult(res, 204)) - .catch(handleError(res)); -}; - -exports.checkAccount = function(req, res) { - return SalesforceAccount.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(function(account) { - var conn = new jsforce.Connection({ - oauth2: { - loginUrl: account.remoteUri, - clientId: account.clientId, - clientSecret: account.clientSecret, - } - }); - var pwd = account.password.concat(account.securityToken); - conn.login(account.username, pwd, function(err, userInfo) { - if (err) { - return res.status(400).send(err); - } - return res.sendStatus(200); - }); - }) - .catch(handleError(res)); -} - -exports.accountValidation = function(req, res) { - var where = {}; - where[req.params.field] = req.body.value; - return SalesforceAccount - .findAndCountAll({ - where: where - }) - .then(function(result) { - if (result.count) { - return res.status(200).send({ - isValid: false, - value: req.body.value - }); - } - return res.status(200).send({ - isValid: true, - value: req.body.value - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.getFields = function(req, res) { - return SalesforceAccount.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(function(account) { - var conn = new jsforce.Connection({ - oauth2: { - loginUrl: account.remoteUri, - clientId: account.clientId, - clientSecret: account.clientSecret, - } - }); - var pwd = account.password.concat(account.securityToken); - conn.login(account.username, pwd, function(err, userInfo) { - if (err) { - return res.status(400).send(err); - } - conn.sobject("Task").describe(function(err, meta) { - if (err) { - return res.status(400).send(err); - } - return res.status(200).send(meta.fields); - }); - }); - }) - .catch(handleError(res)); -}; - -exports.getAccountConfigurations = function(req, res) { - return SalesforceConfiguration - .scope({ - method: ['account', req.params.id] - }) - .findAndCountAll(_.merge(Util.getQuery(req.query), { - distinct: true - })) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -exports.getConfiguration = function(req, res) { - - return SalesforceConfiguration - .scope({ - method: ['account', req.params.id] - }) - .findById(req.params.cid) - .then(handleEntityNotFound(res)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -exports.destroyConfiguration = function(req, res) { - return SalesforceConfiguration - .scope({ - method: ['account', req.params.id] - }) - .findById(req.params.cid) - .then(handleEntityNotFound(res)) - .then(removeEntity(res)) - .catch(handleError(res)); -}; - -exports.bulkDestroyConfigurations = function(req, res) { - return SalesforceConfiguration - .destroy({ - where: { - id: req.query.ids - }, - individualHooks: true - }) - .then(responseWithResult(res, 204)) - .catch(handleError(res)); -}; - -exports.createConfiguration = function(req, res) { - req.body['AccountId'] = req.params.id; - - switch (req.body.channel) { - case 'voice': - - if (req.body.type === 'Queue') { - req.body.Subject = [{ - "type": "string", - "content": "[xCALLY Ticket]", - "variableName": null - }, { - "type": "variable", - "content": "", - "variableName": "queue" - }, { - "type": "variable", - "content": "", - "variableName": "calleridnum" - }]; - req.body.Description = [{ - "type": "string", - "content": "*** Call Info ***", - "key": null, - "keyType": null, - "variableName": null - }, { - "type": "keyValue", - "content": "", - "key": "Caller Number", - "keyType": "variable", - "variableName": "calleridnum" - }, { - "type": "keyValue", - "content": "", - "key": "Caller Name", - "keyType": "variable", - "variableName": "calleridname" - }, { - "type": "keyValue", - "content": "", - "key": "Call To", - "keyType": "variable", - "variableName": "destexten" - }, { - "type": "keyValue", - "content": "", - "key": "Queue", - "keyType": "variable", - "variableName": "queue" - }, { - "type": "keyValue", - "content": "", - "key": "UniqueId", - "keyType": "variable", - "variableName": "uniqueid" - }, { - "type": "keyValue", - "content": "", - "key": "Date", - "keyType": "variable", - "variableName": "agentcalledAt" - }, { - "type": "string", - "content": "*** Agent Info ***", - "key": null, - "keyType": null, - "variableName": null - }, { - "type": "keyValue", - "content": "", - "key": "Agent Name", - "keyType": "variable", - "variableName": "destcalleridname" - }, { - "type": "keyValue", - "content": "", - "key": "Agent Number", - "keyType": "variable", - "variableName": "destcalleridnum" - }, { - "type": "string", - "content": "*** Time Info ***", - "key": null, - "keyType": null, - "variableName": null - }, { - "type": "keyValue", - "content": "", - "key": "Agent Ring", - "keyType": "variable", - "variableName": "agentcalledAt" - }, { - "type": "keyValue", - "content": "", - "key": "Agent Connect", - "keyType": "variable", - "variableName": "agentconnectAt" - }, { - "type": "keyValue", - "content": "", - "key": "Agent Complete", - "keyType": "variable", - "variableName": "agentcompleteAt" - }, { - "type": "keyValue", - "content": "", - "key": "Hold Time", - "keyType": "variable", - "variableName": "holdtime" - }, { - "type": "keyValue", - "content": "", - "key": "Talk Time", - "keyType": "variable", - "variableName": "talktime" - }]; - } else if (req.body.type === 'Outbound') { - req.body.Subject = [{ - "type": "string", - "content": "[xCALLY Ticket]", - "variableName": null - }, { - "type": "string", - "content": "Outbound Call", - "variableName": null - }, { - "type": "variable", - "content": "", - "variableName": "destcalleridnum" - }]; - req.body.Description = [{ - "type": "string", - "content": "*** Call Info ***", - "variableName": null - }, { - "type": "keyValue", - "content": "", - "key": "Called Number", - "keyType": "variable", - "keyContent": "", - "variableName": "destcalleridnum" - }, { - "type": "keyValue", - "content": "", - "key": "Member Name", - "keyType": "variable", - "keyContent": "", - "variableName": "membername" - }, { - "type": "keyValue", - "content": "", - "key": "UniqueId", - "keyType": "variable", - "keyContent": "", - "variableName": "uniqueid" - }, { - "type": "keyValue", - "content": "", - "key": "Date", - "keyType": "variable", - "keyContent": "", - "variableName": "starttime" - }, { - "type": "string", - "content": "*** Time Info ***", - }, { - "type": "keyValue", - "content": "", - "key": "Answer Time", - "keyType": "variable", - "keyContent": "", - "variableName": "answertime" - }, { - "type": "keyValue", - "content": "", - "key": "Complete Time", - "keyType": "variable", - "keyContent": "", - "variableName": "endtime" - }]; - } - break; - default: - console.log('Channel not available:', req.body.channel); - } - - delete req.body.channel; - delete req.body.type; - - return SalesforceConfiguration - .create(req.body, { - include: [{ - model: SalesforceField, - as: 'Subject' - }, { - model: SalesforceField, - as: 'Description' - }] - }) - .then(responseWithResult(res, 201)) - .catch(handleError(res)); -}; - -exports.createField = function(req, res) { - return SalesforceConfiguration - .scope({ - method: ['account', req.params.id] - }) - .findById(req.params.cid) - .then(handleEntityNotFound(res)) - .then(function(configuration) { - switch (req.params.type) { - case 'subject': - req.body['SubjectId'] = req.params.cid; - break; - case 'description': - req.body['DescriptionId'] = req.params.cid; - break; - case 'field': - req.body['FieldId'] = req.params.cid; - break; - } - return SalesforceField.create(req.body); - }) - .then(responseWithResult(res, 201)) - .catch(handleError(res)); -}; - -exports.updateField = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - return SalesforceField - .findById(req.params.fid) - .then(handleEntityNotFound(res)) - .then(saveUpdates(req.body)) - .then(responseWithResult(res)) - .catch(handleError(res)); -}; - -exports.destroyField = function(req, res) { - return SalesforceField - .findById(req.params.fid) - .then(handleEntityNotFound(res)) - .then(removeEntity(res)) - .catch(handleError(res)); -}; - -exports.addConfigurationTags = function(req, res, next) { - return SalesforceConfiguration - .findById(req.params.cid) - .then(handleEntityNotFound(res)) - .then(function(configuration) { - return configuration.setTags(req.body); - }) - .then(responseWithoutResult(res, 200)) - .catch(function(err) { - console.error(err); - return handleError(res, err); - }); -}; +var _0x64e4=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x75\x74\x69\x6C","\x6A\x73\x66\x6F\x72\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x53\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x41\x63\x63\x6F\x75\x6E\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x53\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E","\x53\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x46\x69\x65\x6C\x64","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x6A\x73\x6F\x6E","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x65\x6E\x64","\x74\x68\x65\x6E","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x64\x65\x73\x74\x72\x6F\x79","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x6D\x65\x72\x67\x65","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x73","\x73\x63\x6F\x70\x65","\x73\x68\x6F\x77","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73","\x63\x68\x65\x63\x6B\x41\x63\x63\x6F\x75\x6E\x74","\x72\x65\x6D\x6F\x74\x65\x55\x72\x69","\x63\x6C\x69\x65\x6E\x74\x49\x64","\x63\x6C\x69\x65\x6E\x74\x53\x65\x63\x72\x65\x74","\x73\x65\x63\x75\x72\x69\x74\x79\x54\x6F\x6B\x65\x6E","\x63\x6F\x6E\x63\x61\x74","\x70\x61\x73\x73\x77\x6F\x72\x64","\x75\x73\x65\x72\x6E\x61\x6D\x65","\x6C\x6F\x67\x69\x6E","\x61\x63\x63\x6F\x75\x6E\x74\x56\x61\x6C\x69\x64\x61\x74\x69\x6F\x6E","\x66\x69\x65\x6C\x64","\x76\x61\x6C\x75\x65","\x63\x6F\x75\x6E\x74","\x67\x65\x74\x46\x69\x65\x6C\x64\x73","\x66\x69\x65\x6C\x64\x73","\x64\x65\x73\x63\x72\x69\x62\x65","\x54\x61\x73\x6B","\x73\x6F\x62\x6A\x65\x63\x74","\x67\x65\x74\x41\x63\x63\x6F\x75\x6E\x74\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x73","\x61\x63\x63\x6F\x75\x6E\x74","\x67\x65\x74\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E","\x63\x69\x64","\x64\x65\x73\x74\x72\x6F\x79\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x73","\x63\x72\x65\x61\x74\x65\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E","\x41\x63\x63\x6F\x75\x6E\x74\x49\x64","\x74\x79\x70\x65","\x51\x75\x65\x75\x65","\x53\x75\x62\x6A\x65\x63\x74","\x73\x74\x72\x69\x6E\x67","\x5B\x78\x43\x41\x4C\x4C\x59\x20\x54\x69\x63\x6B\x65\x74\x5D","\x76\x61\x72\x69\x61\x62\x6C\x65","","\x71\x75\x65\x75\x65","\x63\x61\x6C\x6C\x65\x72\x69\x64\x6E\x75\x6D","\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E","\x2A\x2A\x2A\x20\x43\x61\x6C\x6C\x20\x49\x6E\x66\x6F\x20\x2A\x2A\x2A","\x6B\x65\x79\x56\x61\x6C\x75\x65","\x43\x61\x6C\x6C\x65\x72\x20\x4E\x75\x6D\x62\x65\x72","\x43\x61\x6C\x6C\x65\x72\x20\x4E\x61\x6D\x65","\x63\x61\x6C\x6C\x65\x72\x69\x64\x6E\x61\x6D\x65","\x43\x61\x6C\x6C\x20\x54\x6F","\x64\x65\x73\x74\x65\x78\x74\x65\x6E","\x55\x6E\x69\x71\x75\x65\x49\x64","\x75\x6E\x69\x71\x75\x65\x69\x64","\x44\x61\x74\x65","\x61\x67\x65\x6E\x74\x63\x61\x6C\x6C\x65\x64\x41\x74","\x2A\x2A\x2A\x20\x41\x67\x65\x6E\x74\x20\x49\x6E\x66\x6F\x20\x2A\x2A\x2A","\x41\x67\x65\x6E\x74\x20\x4E\x61\x6D\x65","\x64\x65\x73\x74\x63\x61\x6C\x6C\x65\x72\x69\x64\x6E\x61\x6D\x65","\x41\x67\x65\x6E\x74\x20\x4E\x75\x6D\x62\x65\x72","\x64\x65\x73\x74\x63\x61\x6C\x6C\x65\x72\x69\x64\x6E\x75\x6D","\x2A\x2A\x2A\x20\x54\x69\x6D\x65\x20\x49\x6E\x66\x6F\x20\x2A\x2A\x2A","\x41\x67\x65\x6E\x74\x20\x52\x69\x6E\x67","\x41\x67\x65\x6E\x74\x20\x43\x6F\x6E\x6E\x65\x63\x74","\x61\x67\x65\x6E\x74\x63\x6F\x6E\x6E\x65\x63\x74\x41\x74","\x41\x67\x65\x6E\x74\x20\x43\x6F\x6D\x70\x6C\x65\x74\x65","\x61\x67\x65\x6E\x74\x63\x6F\x6D\x70\x6C\x65\x74\x65\x41\x74","\x48\x6F\x6C\x64\x20\x54\x69\x6D\x65","\x68\x6F\x6C\x64\x74\x69\x6D\x65","\x54\x61\x6C\x6B\x20\x54\x69\x6D\x65","\x74\x61\x6C\x6B\x74\x69\x6D\x65","\x4F\x75\x74\x62\x6F\x75\x6E\x64","\x4F\x75\x74\x62\x6F\x75\x6E\x64\x20\x43\x61\x6C\x6C","\x43\x61\x6C\x6C\x65\x64\x20\x4E\x75\x6D\x62\x65\x72","\x4D\x65\x6D\x62\x65\x72\x20\x4E\x61\x6D\x65","\x6D\x65\x6D\x62\x65\x72\x6E\x61\x6D\x65","\x73\x74\x61\x72\x74\x74\x69\x6D\x65","\x41\x6E\x73\x77\x65\x72\x20\x54\x69\x6D\x65","\x61\x6E\x73\x77\x65\x72\x74\x69\x6D\x65","\x43\x6F\x6D\x70\x6C\x65\x74\x65\x20\x54\x69\x6D\x65","\x65\x6E\x64\x74\x69\x6D\x65","\x76\x6F\x69\x63\x65","\x43\x68\x61\x6E\x6E\x65\x6C\x20\x6E\x6F\x74\x20\x61\x76\x61\x69\x6C\x61\x62\x6C\x65\x3A","\x63\x68\x61\x6E\x6E\x65\x6C","\x6C\x6F\x67","\x63\x72\x65\x61\x74\x65\x46\x69\x65\x6C\x64","\x53\x75\x62\x6A\x65\x63\x74\x49\x64","\x73\x75\x62\x6A\x65\x63\x74","\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E\x49\x64","\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E","\x46\x69\x65\x6C\x64\x49\x64","\x75\x70\x64\x61\x74\x65\x46\x69\x65\x6C\x64","\x66\x69\x64","\x64\x65\x73\x74\x72\x6F\x79\x46\x69\x65\x6C\x64","\x61\x64\x64\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x54\x61\x67\x73","\x65\x72\x72\x6F\x72","\x73\x65\x74\x54\x61\x67\x73"];_0x64e4[0];var _=require(_0x64e4[1]);var util=require(_0x64e4[2]);var jsforce=require(_0x64e4[3]);var Util=require(_0x64e4[4]);var SalesforceAccount=require(_0x64e4[6])[_0x64e4[5]];var SalesforceConfiguration=require(_0x64e4[6])[_0x64e4[7]];var SalesforceField=require(_0x64e4[6])[_0x64e4[8]];function handleError(_0x6411x9,_0x6411xa){_0x6411xa= _0x6411xa|| 500;return function(_0x6411xb){_0x6411x9[_0x64e4[10]](_0x6411xa)[_0x64e4[9]](_0x6411xb)}}function responseWithResult(_0x6411x9,_0x6411xa){_0x6411xa= _0x6411xa|| 200;return function(_0x6411xd){if(_0x6411xd){_0x6411x9[_0x64e4[10]](_0x6411xa)[_0x64e4[11]](_0x6411xd)}}}function responseWithoutResult(_0x6411x9,_0x6411xa){_0x6411xa= _0x6411xa|| 200;return function(){_0x6411x9[_0x64e4[12]](_0x6411xa)}}function handleEntityNotFound(_0x6411x9){return function(_0x6411xd){if(!_0x6411xd){_0x6411x9[_0x64e4[10]](404)[_0x64e4[13]]();return null};return _0x6411xd}}function saveUpdates(_0x6411x11){return function(_0x6411xd){return _0x6411xd[_0x64e4[15]](_0x6411x11)[_0x64e4[14]](function(_0x6411x12){return _0x6411x12})}}function removeEntity(_0x6411x9){return function(_0x6411xd){if(_0x6411xd){return _0x6411xd[_0x64e4[16]]()[_0x64e4[14]](function(){_0x6411x9[_0x64e4[10]](204)[_0x64e4[13]]()})}}}exports[_0x64e4[17]]= function(_0x6411x14,_0x6411x9,_0x6411x15){return SalesforceAccount[_0x64e4[24]](_0x64e4[23])[_0x64e4[22]](_[_0x64e4[21]](Util[_0x64e4[20]](_0x6411x14[_0x64e4[19]]),{distinct:true}))[_0x64e4[14]](responseWithResult(_0x6411x9))[_0x64e4[18]](handleError(_0x6411x9))};exports[_0x64e4[25]]= function(_0x6411x14,_0x6411x9){return SalesforceAccount[_0x64e4[28]](_0x6411x14[_0x64e4[27]][_0x64e4[26]])[_0x64e4[14]](handleEntityNotFound(_0x6411x9))[_0x64e4[14]](responseWithResult(_0x6411x9))[_0x64e4[18]](handleError(_0x6411x9))};exports[_0x64e4[29]]= function(_0x6411x14,_0x6411x9){return SalesforceAccount[_0x64e4[29]](_0x6411x14[_0x64e4[30]])[_0x64e4[14]](responseWithResult(_0x6411x9,201))[_0x64e4[18]](handleError(_0x6411x9))};exports[_0x64e4[31]]= function(_0x6411x14,_0x6411x9){if(_0x6411x14[_0x64e4[30]][_0x64e4[26]]){delete _0x6411x14[_0x64e4[30]][_0x64e4[26]]};return SalesforceAccount[_0x64e4[28]](_0x6411x14[_0x64e4[27]][_0x64e4[26]])[_0x64e4[14]](handleEntityNotFound(_0x6411x9))[_0x64e4[14]](saveUpdates(_0x6411x14[_0x64e4[30]]))[_0x64e4[14]](responseWithResult(_0x6411x9))[_0x64e4[18]](handleError(_0x6411x9))};exports[_0x64e4[16]]= function(_0x6411x14,_0x6411x9){return SalesforceAccount[_0x64e4[28]](_0x6411x14[_0x64e4[27]][_0x64e4[26]])[_0x64e4[14]](handleEntityNotFound(_0x6411x9))[_0x64e4[14]](removeEntity(_0x6411x9))[_0x64e4[18]](handleError(_0x6411x9))};exports[_0x64e4[32]]= function(_0x6411x14,_0x6411x9){return SalesforceAccount[_0x64e4[16]]({where:{id:_0x6411x14[_0x64e4[19]][_0x64e4[33]]},individualHooks:true})[_0x64e4[14]](responseWithResult(_0x6411x9,204))[_0x64e4[18]](handleError(_0x6411x9))};exports[_0x64e4[34]]= function(_0x6411x14,_0x6411x9){return SalesforceAccount[_0x64e4[28]](_0x6411x14[_0x64e4[27]][_0x64e4[26]])[_0x64e4[14]](handleEntityNotFound(_0x6411x9))[_0x64e4[14]](function(_0x6411x16){var _0x6411x17= new jsforce.Connection({oauth2:{loginUrl:_0x6411x16[_0x64e4[35]],clientId:_0x6411x16[_0x64e4[36]],clientSecret:_0x6411x16[_0x64e4[37]]}});var _0x6411x18=_0x6411x16[_0x64e4[40]][_0x64e4[39]](_0x6411x16[_0x64e4[38]]);_0x6411x17[_0x64e4[42]](_0x6411x16[_0x64e4[41]],_0x6411x18,function(_0x6411xb,_0x6411x19){if(_0x6411xb){return _0x6411x9[_0x64e4[10]](400)[_0x64e4[9]](_0x6411xb)};return _0x6411x9[_0x64e4[12]](200)})})[_0x64e4[18]](handleError(_0x6411x9))};exports[_0x64e4[43]]= function(_0x6411x14,_0x6411x9){var _0x6411x1a={};_0x6411x1a[_0x6411x14[_0x64e4[27]][_0x64e4[44]]]= _0x6411x14[_0x64e4[30]][_0x64e4[45]];return SalesforceAccount[_0x64e4[22]]({where:_0x6411x1a})[_0x64e4[14]](function(_0x6411x1b){if(_0x6411x1b[_0x64e4[46]]){return _0x6411x9[_0x64e4[10]](200)[_0x64e4[9]]({isValid:false,value:_0x6411x14[_0x64e4[30]][_0x64e4[45]]})};return _0x6411x9[_0x64e4[10]](200)[_0x64e4[9]]({isValid:true,value:_0x6411x14[_0x64e4[30]][_0x64e4[45]]})})[_0x64e4[18]](function(_0x6411xb){return handleError(_0x6411x9,_0x6411xb)})};exports[_0x64e4[47]]= function(_0x6411x14,_0x6411x9){return SalesforceAccount[_0x64e4[28]](_0x6411x14[_0x64e4[27]][_0x64e4[26]])[_0x64e4[14]](handleEntityNotFound(_0x6411x9))[_0x64e4[14]](function(_0x6411x16){var _0x6411x17= new jsforce.Connection({oauth2:{loginUrl:_0x6411x16[_0x64e4[35]],clientId:_0x6411x16[_0x64e4[36]],clientSecret:_0x6411x16[_0x64e4[37]]}});var _0x6411x18=_0x6411x16[_0x64e4[40]][_0x64e4[39]](_0x6411x16[_0x64e4[38]]);_0x6411x17[_0x64e4[42]](_0x6411x16[_0x64e4[41]],_0x6411x18,function(_0x6411xb,_0x6411x19){if(_0x6411xb){return _0x6411x9[_0x64e4[10]](400)[_0x64e4[9]](_0x6411xb)};_0x6411x17[_0x64e4[51]](_0x64e4[50])[_0x64e4[49]](function(_0x6411xb,_0x6411x1c){if(_0x6411xb){return _0x6411x9[_0x64e4[10]](400)[_0x64e4[9]](_0x6411xb)};return _0x6411x9[_0x64e4[10]](200)[_0x64e4[9]](_0x6411x1c[_0x64e4[48]])})})})[_0x64e4[18]](handleError(_0x6411x9))};exports[_0x64e4[52]]= function(_0x6411x14,_0x6411x9){return SalesforceConfiguration[_0x64e4[24]]({method:[_0x64e4[53],_0x6411x14[_0x64e4[27]][_0x64e4[26]]]})[_0x64e4[22]](_[_0x64e4[21]](Util[_0x64e4[20]](_0x6411x14[_0x64e4[19]]),{distinct:true}))[_0x64e4[14]](responseWithResult(_0x6411x9))[_0x64e4[18]](handleError(_0x6411x9))};exports[_0x64e4[54]]= function(_0x6411x14,_0x6411x9){return SalesforceConfiguration[_0x64e4[24]]({method:[_0x64e4[53],_0x6411x14[_0x64e4[27]][_0x64e4[26]]]})[_0x64e4[28]](_0x6411x14[_0x64e4[27]][_0x64e4[55]])[_0x64e4[14]](handleEntityNotFound(_0x6411x9))[_0x64e4[14]](responseWithResult(_0x6411x9))[_0x64e4[18]](handleError(_0x6411x9))};exports[_0x64e4[56]]= function(_0x6411x14,_0x6411x9){return SalesforceConfiguration[_0x64e4[24]]({method:[_0x64e4[53],_0x6411x14[_0x64e4[27]][_0x64e4[26]]]})[_0x64e4[28]](_0x6411x14[_0x64e4[27]][_0x64e4[55]])[_0x64e4[14]](handleEntityNotFound(_0x6411x9))[_0x64e4[14]](removeEntity(_0x6411x9))[_0x64e4[18]](handleError(_0x6411x9))};exports[_0x64e4[57]]= function(_0x6411x14,_0x6411x9){return SalesforceConfiguration[_0x64e4[16]]({where:{id:_0x6411x14[_0x64e4[19]][_0x64e4[33]]},individualHooks:true})[_0x64e4[14]](responseWithResult(_0x6411x9,204))[_0x64e4[18]](handleError(_0x6411x9))};exports[_0x64e4[58]]= function(_0x6411x14,_0x6411x9){_0x6411x14[_0x64e4[30]][_0x64e4[59]]= _0x6411x14[_0x64e4[27]][_0x64e4[26]];switch(_0x6411x14[_0x64e4[30]][_0x64e4[108]]){case _0x64e4[106]:if(_0x6411x14[_0x64e4[30]][_0x64e4[60]]=== _0x64e4[61]){_0x6411x14[_0x64e4[30]][_0x64e4[62]]= [{"\x74\x79\x70\x65":_0x64e4[63],"\x63\x6F\x6E\x74\x65\x6E\x74":_0x64e4[64],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":null},{"\x74\x79\x70\x65":_0x64e4[65],"\x63\x6F\x6E\x74\x65\x6E\x74":_0x64e4[66],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0x64e4[67]},{"\x74\x79\x70\x65":_0x64e4[65],"\x63\x6F\x6E\x74\x65\x6E\x74":_0x64e4[66],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0x64e4[68]}];_0x6411x14[_0x64e4[30]][_0x64e4[69]]= [{"\x74\x79\x70\x65":_0x64e4[63],"\x63\x6F\x6E\x74\x65\x6E\x74":_0x64e4[70],"\x6B\x65\x79":null,"\x6B\x65\x79\x54\x79\x70\x65":null,"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":null},{"\x74\x79\x70\x65":_0x64e4[71],"\x63\x6F\x6E\x74\x65\x6E\x74":_0x64e4[66],"\x6B\x65\x79":_0x64e4[72],"\x6B\x65\x79\x54\x79\x70\x65":_0x64e4[65],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0x64e4[68]},{"\x74\x79\x70\x65":_0x64e4[71],"\x63\x6F\x6E\x74\x65\x6E\x74":_0x64e4[66],"\x6B\x65\x79":_0x64e4[73],"\x6B\x65\x79\x54\x79\x70\x65":_0x64e4[65],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0x64e4[74]},{"\x74\x79\x70\x65":_0x64e4[71],"\x63\x6F\x6E\x74\x65\x6E\x74":_0x64e4[66],"\x6B\x65\x79":_0x64e4[75],"\x6B\x65\x79\x54\x79\x70\x65":_0x64e4[65],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0x64e4[76]},{"\x74\x79\x70\x65":_0x64e4[71],"\x63\x6F\x6E\x74\x65\x6E\x74":_0x64e4[66],"\x6B\x65\x79":_0x64e4[61],"\x6B\x65\x79\x54\x79\x70\x65":_0x64e4[65],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0x64e4[67]},{"\x74\x79\x70\x65":_0x64e4[71],"\x63\x6F\x6E\x74\x65\x6E\x74":_0x64e4[66],"\x6B\x65\x79":_0x64e4[77],"\x6B\x65\x79\x54\x79\x70\x65":_0x64e4[65],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0x64e4[78]},{"\x74\x79\x70\x65":_0x64e4[71],"\x63\x6F\x6E\x74\x65\x6E\x74":_0x64e4[66],"\x6B\x65\x79":_0x64e4[79],"\x6B\x65\x79\x54\x79\x70\x65":_0x64e4[65],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0x64e4[80]},{"\x74\x79\x70\x65":_0x64e4[63],"\x63\x6F\x6E\x74\x65\x6E\x74":_0x64e4[81],"\x6B\x65\x79":null,"\x6B\x65\x79\x54\x79\x70\x65":null,"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":null},{"\x74\x79\x70\x65":_0x64e4[71],"\x63\x6F\x6E\x74\x65\x6E\x74":_0x64e4[66],"\x6B\x65\x79":_0x64e4[82],"\x6B\x65\x79\x54\x79\x70\x65":_0x64e4[65],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0x64e4[83]},{"\x74\x79\x70\x65":_0x64e4[71],"\x63\x6F\x6E\x74\x65\x6E\x74":_0x64e4[66],"\x6B\x65\x79":_0x64e4[84],"\x6B\x65\x79\x54\x79\x70\x65":_0x64e4[65],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0x64e4[85]},{"\x74\x79\x70\x65":_0x64e4[63],"\x63\x6F\x6E\x74\x65\x6E\x74":_0x64e4[86],"\x6B\x65\x79":null,"\x6B\x65\x79\x54\x79\x70\x65":null,"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":null},{"\x74\x79\x70\x65":_0x64e4[71],"\x63\x6F\x6E\x74\x65\x6E\x74":_0x64e4[66],"\x6B\x65\x79":_0x64e4[87],"\x6B\x65\x79\x54\x79\x70\x65":_0x64e4[65],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0x64e4[80]},{"\x74\x79\x70\x65":_0x64e4[71],"\x63\x6F\x6E\x74\x65\x6E\x74":_0x64e4[66],"\x6B\x65\x79":_0x64e4[88],"\x6B\x65\x79\x54\x79\x70\x65":_0x64e4[65],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0x64e4[89]},{"\x74\x79\x70\x65":_0x64e4[71],"\x63\x6F\x6E\x74\x65\x6E\x74":_0x64e4[66],"\x6B\x65\x79":_0x64e4[90],"\x6B\x65\x79\x54\x79\x70\x65":_0x64e4[65],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0x64e4[91]},{"\x74\x79\x70\x65":_0x64e4[71],"\x63\x6F\x6E\x74\x65\x6E\x74":_0x64e4[66],"\x6B\x65\x79":_0x64e4[92],"\x6B\x65\x79\x54\x79\x70\x65":_0x64e4[65],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0x64e4[93]},{"\x74\x79\x70\x65":_0x64e4[71],"\x63\x6F\x6E\x74\x65\x6E\x74":_0x64e4[66],"\x6B\x65\x79":_0x64e4[94],"\x6B\x65\x79\x54\x79\x70\x65":_0x64e4[65],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0x64e4[95]}]}else {if(_0x6411x14[_0x64e4[30]][_0x64e4[60]]=== _0x64e4[96]){_0x6411x14[_0x64e4[30]][_0x64e4[62]]= [{"\x74\x79\x70\x65":_0x64e4[63],"\x63\x6F\x6E\x74\x65\x6E\x74":_0x64e4[64],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":null},{"\x74\x79\x70\x65":_0x64e4[63],"\x63\x6F\x6E\x74\x65\x6E\x74":_0x64e4[97],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":null},{"\x74\x79\x70\x65":_0x64e4[65],"\x63\x6F\x6E\x74\x65\x6E\x74":_0x64e4[66],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0x64e4[85]}];_0x6411x14[_0x64e4[30]][_0x64e4[69]]= [{"\x74\x79\x70\x65":_0x64e4[63],"\x63\x6F\x6E\x74\x65\x6E\x74":_0x64e4[70],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":null},{"\x74\x79\x70\x65":_0x64e4[71],"\x63\x6F\x6E\x74\x65\x6E\x74":_0x64e4[66],"\x6B\x65\x79":_0x64e4[98],"\x6B\x65\x79\x54\x79\x70\x65":_0x64e4[65],"\x6B\x65\x79\x43\x6F\x6E\x74\x65\x6E\x74":_0x64e4[66],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0x64e4[85]},{"\x74\x79\x70\x65":_0x64e4[71],"\x63\x6F\x6E\x74\x65\x6E\x74":_0x64e4[66],"\x6B\x65\x79":_0x64e4[99],"\x6B\x65\x79\x54\x79\x70\x65":_0x64e4[65],"\x6B\x65\x79\x43\x6F\x6E\x74\x65\x6E\x74":_0x64e4[66],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0x64e4[100]},{"\x74\x79\x70\x65":_0x64e4[71],"\x63\x6F\x6E\x74\x65\x6E\x74":_0x64e4[66],"\x6B\x65\x79":_0x64e4[77],"\x6B\x65\x79\x54\x79\x70\x65":_0x64e4[65],"\x6B\x65\x79\x43\x6F\x6E\x74\x65\x6E\x74":_0x64e4[66],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0x64e4[78]},{"\x74\x79\x70\x65":_0x64e4[71],"\x63\x6F\x6E\x74\x65\x6E\x74":_0x64e4[66],"\x6B\x65\x79":_0x64e4[79],"\x6B\x65\x79\x54\x79\x70\x65":_0x64e4[65],"\x6B\x65\x79\x43\x6F\x6E\x74\x65\x6E\x74":_0x64e4[66],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0x64e4[101]},{"\x74\x79\x70\x65":_0x64e4[63],"\x63\x6F\x6E\x74\x65\x6E\x74":_0x64e4[86]},{"\x74\x79\x70\x65":_0x64e4[71],"\x63\x6F\x6E\x74\x65\x6E\x74":_0x64e4[66],"\x6B\x65\x79":_0x64e4[102],"\x6B\x65\x79\x54\x79\x70\x65":_0x64e4[65],"\x6B\x65\x79\x43\x6F\x6E\x74\x65\x6E\x74":_0x64e4[66],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0x64e4[103]},{"\x74\x79\x70\x65":_0x64e4[71],"\x63\x6F\x6E\x74\x65\x6E\x74":_0x64e4[66],"\x6B\x65\x79":_0x64e4[104],"\x6B\x65\x79\x54\x79\x70\x65":_0x64e4[65],"\x6B\x65\x79\x43\x6F\x6E\x74\x65\x6E\x74":_0x64e4[66],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0x64e4[105]}]}};break;default:console[_0x64e4[109]](_0x64e4[107],_0x6411x14[_0x64e4[30]][_0x64e4[108]])};delete _0x6411x14[_0x64e4[30]][_0x64e4[108]];delete _0x6411x14[_0x64e4[30]][_0x64e4[60]];return SalesforceConfiguration[_0x64e4[29]](_0x6411x14[_0x64e4[30]],{include:[{model:SalesforceField,as:_0x64e4[62]},{model:SalesforceField,as:_0x64e4[69]}]})[_0x64e4[14]](responseWithResult(_0x6411x9,201))[_0x64e4[18]](handleError(_0x6411x9))};exports[_0x64e4[110]]= function(_0x6411x14,_0x6411x9){return SalesforceConfiguration[_0x64e4[24]]({method:[_0x64e4[53],_0x6411x14[_0x64e4[27]][_0x64e4[26]]]})[_0x64e4[28]](_0x6411x14[_0x64e4[27]][_0x64e4[55]])[_0x64e4[14]](handleEntityNotFound(_0x6411x9))[_0x64e4[14]](function(_0x6411x1d){switch(_0x6411x14[_0x64e4[27]][_0x64e4[60]]){case _0x64e4[112]:_0x6411x14[_0x64e4[30]][_0x64e4[111]]= _0x6411x14[_0x64e4[27]][_0x64e4[55]];break;case _0x64e4[114]:_0x6411x14[_0x64e4[30]][_0x64e4[113]]= _0x6411x14[_0x64e4[27]][_0x64e4[55]];break;case _0x64e4[44]:_0x6411x14[_0x64e4[30]][_0x64e4[115]]= _0x6411x14[_0x64e4[27]][_0x64e4[55]];break};return SalesforceField[_0x64e4[29]](_0x6411x14[_0x64e4[30]])})[_0x64e4[14]](responseWithResult(_0x6411x9,201))[_0x64e4[18]](handleError(_0x6411x9))};exports[_0x64e4[116]]= function(_0x6411x14,_0x6411x9){if(_0x6411x14[_0x64e4[30]][_0x64e4[26]]){delete _0x6411x14[_0x64e4[30]][_0x64e4[26]]};return SalesforceField[_0x64e4[28]](_0x6411x14[_0x64e4[27]][_0x64e4[117]])[_0x64e4[14]](handleEntityNotFound(_0x6411x9))[_0x64e4[14]](saveUpdates(_0x6411x14[_0x64e4[30]]))[_0x64e4[14]](responseWithResult(_0x6411x9))[_0x64e4[18]](handleError(_0x6411x9))};exports[_0x64e4[118]]= function(_0x6411x14,_0x6411x9){return SalesforceField[_0x64e4[28]](_0x6411x14[_0x64e4[27]][_0x64e4[117]])[_0x64e4[14]](handleEntityNotFound(_0x6411x9))[_0x64e4[14]](removeEntity(_0x6411x9))[_0x64e4[18]](handleError(_0x6411x9))};exports[_0x64e4[119]]= function(_0x6411x14,_0x6411x9,_0x6411x15){return SalesforceConfiguration[_0x64e4[28]](_0x6411x14[_0x64e4[27]][_0x64e4[55]])[_0x64e4[14]](handleEntityNotFound(_0x6411x9))[_0x64e4[14]](function(_0x6411x1d){return _0x6411x1d[_0x64e4[121]](_0x6411x14[_0x64e4[30]])})[_0x64e4[14]](responseWithoutResult(_0x6411x9,200))[_0x64e4[18]](function(_0x6411xb){console[_0x64e4[120]](_0x6411xb);return handleError(_0x6411x9,_0x6411xb)})} \ No newline at end of file diff --git a/server/api/salesforce_account/salesforce_account.events.js b/server/api/salesforce_account/salesforce_account.events.js index 13ee57f..9e71149 100644 --- a/server/api/salesforce_account/salesforce_account.events.js +++ b/server/api/salesforce_account/salesforce_account.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const SalesforceAccount = require('../../models').SalesforceAccount; - -var SalesforceAccountEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -SalesforceAccountEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - SalesforceAccount.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - SalesforceAccountEvents.emit(event + ':' + doc._id, doc); - SalesforceAccountEvents.emit(event, doc); - done(null); - } -} - -module.exports = SalesforceAccountEvents; +var _0x83cf=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x53\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x41\x63\x63\x6F\x75\x6E\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x83cf[0];const EventEmitter=require(_0x83cf[1]);const SalesforceAccount=require(_0x83cf[3])[_0x83cf[2]];var SalesforceAccountEvents= new EventEmitter();SalesforceAccountEvents[_0x83cf[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x83cf[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x83cf[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x83cf[6]};for(var e in events){var event=events[e];SalesforceAccount[_0x83cf[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x95c7x8,_0x95c7x9,_0x95c7xa){SalesforceAccountEvents[_0x83cf[10]](event+ _0x83cf[8]+ _0x95c7x8[_0x83cf[9]],_0x95c7x8);SalesforceAccountEvents[_0x83cf[10]](event,_0x95c7x8);_0x95c7xa(null)}}module[_0x83cf[11]]= SalesforceAccountEvents \ No newline at end of file diff --git a/server/api/salesforce_account/salesforce_account.socket.js b/server/api/salesforce_account/salesforce_account.socket.js index 3ee49f7..8589a31 100644 --- a/server/api/salesforce_account/salesforce_account.socket.js +++ b/server/api/salesforce_account/salesforce_account.socket.js @@ -1,32 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const SalesforceAccountEvents = require('./salesforce_account.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('salesforce_account:' + event, socket); - - SalesforceAccountEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - SalesforceAccountEvents.removeListener(event, listener); - }; -} +var _0x8887=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x73\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x5F\x61\x63\x63\x6F\x75\x6E\x74\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x73\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x5F\x61\x63\x63\x6F\x75\x6E\x74\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x8887[0];const SalesforceAccountEvents=require(_0x8887[1]);var events=[_0x8887[2],_0x8887[3]];exports[_0x8887[4]]= function(_0xd35fx3){for(var _0xd35fx4=0,_0xd35fx5=events[_0x8887[5]];_0xd35fx4< _0xd35fx5;_0xd35fx4++){var _0xd35fx6=events[_0xd35fx4];var _0xd35fx7=createListener(_0x8887[6]+ _0xd35fx6,_0xd35fx3);SalesforceAccountEvents[_0x8887[7]](_0xd35fx6,_0xd35fx7);_0xd35fx3[_0x8887[7]](_0x8887[8],removeListener(_0xd35fx6,_0xd35fx7))}};function createListener(_0xd35fx6,_0xd35fx3){return function(_0xd35fx9){_0xd35fx3[_0x8887[9]](_0xd35fx6,_0xd35fx9)}}function removeListener(_0xd35fx6,_0xd35fx7){return function(){SalesforceAccountEvents[_0x8887[10]](_0xd35fx6,_0xd35fx7)}} \ No newline at end of file diff --git a/server/api/salesforce_configuration/index.js b/server/api/salesforce_configuration/index.js index e0f8ff7..d75a7f7 100644 --- a/server/api/salesforce_configuration/index.js +++ b/server/api/salesforce_configuration/index.js @@ -1,17 +1 @@ -'use strict'; - -var express = require('express'); -var auth = require('../../auth/auth.service'); -var controller = require('./salesforce_configuration.controller'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), controller.index); - -router.get('/:id', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.show); -router.post('/', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.create); -router.put('/:id', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.update); -router.post('/:id/:type', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.addConfigurationField); -router.delete('/:id', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.destroy); - -module.exports = router; +var _0x1ee8=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x73\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x5F\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x2F\x3A\x69\x64\x2F\x3A\x74\x79\x70\x65","\x61\x64\x64\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x46\x69\x65\x6C\x64","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0x1ee8[0];var express=require(_0x1ee8[1]);var auth=require(_0x1ee8[2]);var controller=require(_0x1ee8[3]);var router=express.Router();router[_0x1ee8[7]](_0x1ee8[4],auth[_0x1ee8[5]](),controller[_0x1ee8[6]]);router[_0x1ee8[7]](_0x1ee8[8],auth[_0x1ee8[5]](),auth[_0x1ee8[10]]([19],[_0x1ee8[9]]),controller[_0x1ee8[11]]);router[_0x1ee8[13]](_0x1ee8[4],auth[_0x1ee8[5]](),auth[_0x1ee8[10]]([19],[_0x1ee8[9]]),controller[_0x1ee8[12]]);router[_0x1ee8[15]](_0x1ee8[8],auth[_0x1ee8[5]](),auth[_0x1ee8[10]]([19],[_0x1ee8[9]]),controller[_0x1ee8[14]]);router[_0x1ee8[13]](_0x1ee8[16],auth[_0x1ee8[5]](),auth[_0x1ee8[10]]([19],[_0x1ee8[9]]),controller[_0x1ee8[17]]);router[_0x1ee8[19]](_0x1ee8[8],auth[_0x1ee8[5]](),auth[_0x1ee8[10]]([19],[_0x1ee8[9]]),controller[_0x1ee8[18]]);module[_0x1ee8[20]]= router \ No newline at end of file diff --git a/server/api/salesforce_configuration/salesforce_configuration.controller.js b/server/api/salesforce_configuration/salesforce_configuration.controller.js index 523aef6..cc88cbe 100644 --- a/server/api/salesforce_configuration/salesforce_configuration.controller.js +++ b/server/api/salesforce_configuration/salesforce_configuration.controller.js @@ -1,147 +1 @@ -/** - * Using Rails-like standard naming convention for endpoints. - * GET /api/salesforce/configurations -> index - * POST /api/salesforce/configurations -> create - * GET /api/salesforce/configurations/:id -> show - * PUT /api/salesforce/configurations/:id -> update - * DELETE /api/salesforce/configurations/:id -> destroy - */ - -'use strict'; - - -var _ = require('lodash'); - -var SalesforceConfiguration = require('../../models').SalesforceConfiguration; -var SalesforceField = require('../../models').SalesforceField; - - -function handleError(res, statusCode) { - statusCode = statusCode || 500; - return function(err) { - res.status(statusCode).send(err); - }; -} - -function responseWithResult(res, statusCode) { - statusCode = statusCode || 200; - return function(entity) { - if (entity) { - res.status(statusCode).json(entity); - } - }; -} - -function handleEntityNotFound(res) { - return function(entity) { - if (!entity) { - res.status(404).end(); - return null; - } - return entity; - }; -} - -function saveUpdates(updates) { - return function(entity) { - return entity.updateAttributes(updates) - .then(function(updated) { - return updated; - }); - }; -} - -function removeEntity(res) { - return function(entity) { - if (entity) { - return entity.destroy() - .then(function() { - res.status(204).end(); - }); - } - }; -} - -// Gets a list of SalesforceConfigurations -exports.index = function(req, res) { - SalesforceConfiguration.findAll({ - where: req.query - }) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Gets a single SalesforceConfiguration from the DB -exports.show = function(req, res) { - SalesforceConfiguration.find({ - where: { - id: req.params.id - }, - include: [{ - model: SalesforceField, - as: 'Subject' - }, { - model: SalesforceField, - as: 'Description' - }, { - model: SalesforceField, - as: 'Field' - }] - }) - .then(handleEntityNotFound(res)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Creates a new SalesforceConfiguration in the DB -exports.create = function(req, res) { - SalesforceConfiguration.create(req.body) - .then(responseWithResult(res, 201)) - .catch(handleError(res)); -} - -// Updates an existing SalesforceConfiguration in the DB -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - SalesforceConfiguration.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(saveUpdates(req.body)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Deletes a SalesforceConfiguration from the DB -exports.destroy = function(req, res) { - SalesforceConfiguration.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(removeEntity(res)) - .catch(handleError(res)); -} - -exports.addConfigurationField = function(req, res, next) { - // console.log(req.params); - var salesforceConfiguration; - SalesforceConfiguration - .findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(function(salesforce_configuration) { - salesforceConfiguration = salesforce_configuration; - return SalesforceField.create(req.body) - }) - .then(function(salesforceField) { - switch (req.params.type) { - case 'subject': - return [salesforceConfiguration.addSubject(salesforceField), salesforceField]; - case 'description': - return [salesforceConfiguration.addDescription(salesforceField), salesforceField]; - case 'field': - return [salesforceConfiguration.addField(salesforceField), salesforceField]; - } - }) - .spread(function(data, salesforceField) { - return res.status(201).json(salesforceField); - }) - .catch(handleError(res)); -}; +var _0x7cb9=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x53\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x53\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x46\x69\x65\x6C\x64","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x6A\x73\x6F\x6E","\x65\x6E\x64","\x74\x68\x65\x6E","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x64\x65\x73\x74\x72\x6F\x79","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x71\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x68\x6F\x77","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x53\x75\x62\x6A\x65\x63\x74","\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E","\x46\x69\x65\x6C\x64","\x66\x69\x6E\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x66\x69\x6E\x64\x42\x79\x49\x64","\x61\x64\x64\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x46\x69\x65\x6C\x64","\x73\x70\x72\x65\x61\x64","\x61\x64\x64\x53\x75\x62\x6A\x65\x63\x74","\x73\x75\x62\x6A\x65\x63\x74","\x61\x64\x64\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E","\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E","\x61\x64\x64\x46\x69\x65\x6C\x64","\x66\x69\x65\x6C\x64","\x74\x79\x70\x65"];_0x7cb9[0];var _=require(_0x7cb9[1]);var SalesforceConfiguration=require(_0x7cb9[3])[_0x7cb9[2]];var SalesforceField=require(_0x7cb9[3])[_0x7cb9[4]];function handleError(_0xcfb0x5,_0xcfb0x6){_0xcfb0x6= _0xcfb0x6|| 500;return function(_0xcfb0x7){_0xcfb0x5[_0x7cb9[6]](_0xcfb0x6)[_0x7cb9[5]](_0xcfb0x7)}}function responseWithResult(_0xcfb0x5,_0xcfb0x6){_0xcfb0x6= _0xcfb0x6|| 200;return function(_0xcfb0x9){if(_0xcfb0x9){_0xcfb0x5[_0x7cb9[6]](_0xcfb0x6)[_0x7cb9[7]](_0xcfb0x9)}}}function handleEntityNotFound(_0xcfb0x5){return function(_0xcfb0x9){if(!_0xcfb0x9){_0xcfb0x5[_0x7cb9[6]](404)[_0x7cb9[8]]();return null};return _0xcfb0x9}}function saveUpdates(_0xcfb0xc){return function(_0xcfb0x9){return _0xcfb0x9[_0x7cb9[10]](_0xcfb0xc)[_0x7cb9[9]](function(_0xcfb0xd){return _0xcfb0xd})}}function removeEntity(_0xcfb0x5){return function(_0xcfb0x9){if(_0xcfb0x9){return _0xcfb0x9[_0x7cb9[11]]()[_0x7cb9[9]](function(){_0xcfb0x5[_0x7cb9[6]](204)[_0x7cb9[8]]()})}}}exports[_0x7cb9[12]]= function(_0xcfb0xf,_0xcfb0x5){SalesforceConfiguration[_0x7cb9[15]]({where:_0xcfb0xf[_0x7cb9[14]]})[_0x7cb9[9]](responseWithResult(_0xcfb0x5))[_0x7cb9[13]](handleError(_0xcfb0x5))};exports[_0x7cb9[16]]= function(_0xcfb0xf,_0xcfb0x5){SalesforceConfiguration[_0x7cb9[22]]({where:{id:_0xcfb0xf[_0x7cb9[18]][_0x7cb9[17]]},include:[{model:SalesforceField,as:_0x7cb9[19]},{model:SalesforceField,as:_0x7cb9[20]},{model:SalesforceField,as:_0x7cb9[21]}]})[_0x7cb9[9]](handleEntityNotFound(_0xcfb0x5))[_0x7cb9[9]](responseWithResult(_0xcfb0x5))[_0x7cb9[13]](handleError(_0xcfb0x5))};exports[_0x7cb9[23]]= function(_0xcfb0xf,_0xcfb0x5){SalesforceConfiguration[_0x7cb9[23]](_0xcfb0xf[_0x7cb9[24]])[_0x7cb9[9]](responseWithResult(_0xcfb0x5,201))[_0x7cb9[13]](handleError(_0xcfb0x5))};exports[_0x7cb9[25]]= function(_0xcfb0xf,_0xcfb0x5){if(_0xcfb0xf[_0x7cb9[24]][_0x7cb9[17]]){delete _0xcfb0xf[_0x7cb9[24]][_0x7cb9[17]]};SalesforceConfiguration[_0x7cb9[26]](_0xcfb0xf[_0x7cb9[18]][_0x7cb9[17]])[_0x7cb9[9]](handleEntityNotFound(_0xcfb0x5))[_0x7cb9[9]](saveUpdates(_0xcfb0xf[_0x7cb9[24]]))[_0x7cb9[9]](responseWithResult(_0xcfb0x5))[_0x7cb9[13]](handleError(_0xcfb0x5))};exports[_0x7cb9[11]]= function(_0xcfb0xf,_0xcfb0x5){SalesforceConfiguration[_0x7cb9[26]](_0xcfb0xf[_0x7cb9[18]][_0x7cb9[17]])[_0x7cb9[9]](handleEntityNotFound(_0xcfb0x5))[_0x7cb9[9]](removeEntity(_0xcfb0x5))[_0x7cb9[13]](handleError(_0xcfb0x5))};exports[_0x7cb9[27]]= function(_0xcfb0xf,_0xcfb0x5,_0xcfb0x10){var _0xcfb0x11;SalesforceConfiguration[_0x7cb9[26]](_0xcfb0xf[_0x7cb9[18]][_0x7cb9[17]])[_0x7cb9[9]](handleEntityNotFound(_0xcfb0x5))[_0x7cb9[9]](function(_0xcfb0x14){_0xcfb0x11= _0xcfb0x14;return SalesforceField[_0x7cb9[23]](_0xcfb0xf[_0x7cb9[24]])})[_0x7cb9[9]](function(_0xcfb0x13){switch(_0xcfb0xf[_0x7cb9[18]][_0x7cb9[35]]){case _0x7cb9[30]:return [_0xcfb0x11[_0x7cb9[29]](_0xcfb0x13),_0xcfb0x13];case _0x7cb9[32]:return [_0xcfb0x11[_0x7cb9[31]](_0xcfb0x13),_0xcfb0x13];case _0x7cb9[34]:return [_0xcfb0x11[_0x7cb9[33]](_0xcfb0x13),_0xcfb0x13]}})[_0x7cb9[28]](function(_0xcfb0x12,_0xcfb0x13){return _0xcfb0x5[_0x7cb9[6]](201)[_0x7cb9[7]](_0xcfb0x13)})[_0x7cb9[13]](handleError(_0xcfb0x5))} \ No newline at end of file diff --git a/server/api/salesforce_configuration/salesforce_configuration.events.js b/server/api/salesforce_configuration/salesforce_configuration.events.js index 0814fbf..237dee6 100644 --- a/server/api/salesforce_configuration/salesforce_configuration.events.js +++ b/server/api/salesforce_configuration/salesforce_configuration.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const SalesforceConfiguration = require('../../models').SalesforceConfiguration; - -var SalesforceConfigurationEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -SalesforceConfigurationEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - SalesforceConfiguration.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - SalesforceConfigurationEvents.emit(event + ':' + doc._id, doc); - SalesforceConfigurationEvents.emit(event, doc); - done(null); - } -} - -module.exports = SalesforceConfigurationEvents; +var _0xee90=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x53\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xee90[0];const EventEmitter=require(_0xee90[1]);const SalesforceConfiguration=require(_0xee90[3])[_0xee90[2]];var SalesforceConfigurationEvents= new EventEmitter();SalesforceConfigurationEvents[_0xee90[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xee90[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xee90[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xee90[6]};for(var e in events){var event=events[e];SalesforceConfiguration[_0xee90[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xbd47x8,_0xbd47x9,_0xbd47xa){SalesforceConfigurationEvents[_0xee90[10]](event+ _0xee90[8]+ _0xbd47x8[_0xee90[9]],_0xbd47x8);SalesforceConfigurationEvents[_0xee90[10]](event,_0xbd47x8);_0xbd47xa(null)}}module[_0xee90[11]]= SalesforceConfigurationEvents \ No newline at end of file diff --git a/server/api/salesforce_configuration/salesforce_configuration.socket.js b/server/api/salesforce_configuration/salesforce_configuration.socket.js index df21994..e1c4b94 100644 --- a/server/api/salesforce_configuration/salesforce_configuration.socket.js +++ b/server/api/salesforce_configuration/salesforce_configuration.socket.js @@ -1,32 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const SalesforceConfigurationEvents = require('./salesforce_configuration.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('salesforce_configuration:' + event, socket); - - SalesforceConfigurationEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - SalesforceConfigurationEvents.removeListener(event, listener); - }; -} +var _0x9788=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x73\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x5F\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x73\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x5F\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x9788[0];const SalesforceConfigurationEvents=require(_0x9788[1]);var events=[_0x9788[2],_0x9788[3]];exports[_0x9788[4]]= function(_0x5d2cx3){for(var _0x5d2cx4=0,_0x5d2cx5=events[_0x9788[5]];_0x5d2cx4< _0x5d2cx5;_0x5d2cx4++){var _0x5d2cx6=events[_0x5d2cx4];var _0x5d2cx7=createListener(_0x9788[6]+ _0x5d2cx6,_0x5d2cx3);SalesforceConfigurationEvents[_0x9788[7]](_0x5d2cx6,_0x5d2cx7);_0x5d2cx3[_0x9788[7]](_0x9788[8],removeListener(_0x5d2cx6,_0x5d2cx7))}};function createListener(_0x5d2cx6,_0x5d2cx3){return function(_0x5d2cx9){_0x5d2cx3[_0x9788[9]](_0x5d2cx6,_0x5d2cx9)}}function removeListener(_0x5d2cx6,_0x5d2cx7){return function(){SalesforceConfigurationEvents[_0x9788[10]](_0x5d2cx6,_0x5d2cx7)}} \ No newline at end of file diff --git a/server/api/salesforce_field/index.js b/server/api/salesforce_field/index.js index 2dd2a9d..af47d86 100644 --- a/server/api/salesforce_field/index.js +++ b/server/api/salesforce_field/index.js @@ -1,17 +1 @@ -'use strict'; - -var express = require('express'); -var auth = require('../../auth/auth.service'); -var controller = require('./salesforce_field.controller'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), controller.index); - -router.get('/:id', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.show); -router.post('/', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.create); -router.put('/:id', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.update); -router.delete('/:id', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.destroy); - - -module.exports = router; +var _0x140b=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x73\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x5F\x66\x69\x65\x6C\x64\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0x140b[0];var express=require(_0x140b[1]);var auth=require(_0x140b[2]);var controller=require(_0x140b[3]);var router=express.Router();router[_0x140b[7]](_0x140b[4],auth[_0x140b[5]](),controller[_0x140b[6]]);router[_0x140b[7]](_0x140b[8],auth[_0x140b[5]](),auth[_0x140b[10]]([19],[_0x140b[9]]),controller[_0x140b[11]]);router[_0x140b[13]](_0x140b[4],auth[_0x140b[5]](),auth[_0x140b[10]]([19],[_0x140b[9]]),controller[_0x140b[12]]);router[_0x140b[15]](_0x140b[8],auth[_0x140b[5]](),auth[_0x140b[10]]([19],[_0x140b[9]]),controller[_0x140b[14]]);router[_0x140b[17]](_0x140b[8],auth[_0x140b[5]](),auth[_0x140b[10]]([19],[_0x140b[9]]),controller[_0x140b[16]]);module[_0x140b[18]]= router \ No newline at end of file diff --git a/server/api/salesforce_field/salesforce_field.controller.js b/server/api/salesforce_field/salesforce_field.controller.js index bab61d7..c69bd57 100644 --- a/server/api/salesforce_field/salesforce_field.controller.js +++ b/server/api/salesforce_field/salesforce_field.controller.js @@ -1,104 +1 @@ -/** - * Using Rails-like standard naming convention for endpoints. - * GET /api/salesforce/fields -> index - * POST /api/salesforce/fields -> create - * GET /api/salesforce/fields/:id -> show - * PUT /api/salesforce/fields/:id -> update - * DELETE /api/salesforce/fields/:id -> destroy - */ - -'use strict'; - - -var _ = require('lodash'); - -var SalesforceField = require('../../models').SalesforceField; - - -function handleError(res, statusCode) { - statusCode = statusCode || 500; - return function(err) { - res.status(statusCode).send(err); - }; -} - -function responseWithResult(res, statusCode) { - statusCode = statusCode || 200; - return function(entity) { - if (entity) { - res.status(statusCode).json(entity); - } - }; -} - -function handleEntityNotFound(res) { - return function(entity) { - if (!entity) { - res.status(404).end(); - return null; - } - return entity; - }; -} - -function saveUpdates(updates) { - return function(entity) { - return entity.updateAttributes(updates) - .then(function(updated) { - return updated; - }); - }; -} - -function removeEntity(res) { - return function(entity) { - if (entity) { - return entity.destroy() - .then(function() { - res.status(204).end(); - }); - } - }; -} - -// Gets a list of SalesforceFields -exports.index = function(req, res) { - SalesforceField.findAll() - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Gets a single SalesforceField from the DB -exports.show = function(req, res) { - SalesforceField.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Creates a new SalesforceField in the DB -exports.create = function(req, res) { - SalesforceField.create(req.body) - .then(responseWithResult(res, 201)) - .catch(handleError(res)); -} - -// Updates an existing SalesforceField in the DB -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - SalesforceField.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(saveUpdates(req.body)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Deletes a SalesforceField from the DB -exports.destroy = function(req, res) { - SalesforceField.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(removeEntity(res)) - .catch(handleError(res)); -} +var _0x4fca=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x53\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x46\x69\x65\x6C\x64","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x6A\x73\x6F\x6E","\x65\x6E\x64","\x74\x68\x65\x6E","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x64\x65\x73\x74\x72\x6F\x79","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x68\x6F\x77","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65"];_0x4fca[0];var _=require(_0x4fca[1]);var SalesforceField=require(_0x4fca[3])[_0x4fca[2]];function handleError(_0x5a73x4,_0x5a73x5){_0x5a73x5= _0x5a73x5|| 500;return function(_0x5a73x6){_0x5a73x4[_0x4fca[5]](_0x5a73x5)[_0x4fca[4]](_0x5a73x6)}}function responseWithResult(_0x5a73x4,_0x5a73x5){_0x5a73x5= _0x5a73x5|| 200;return function(_0x5a73x8){if(_0x5a73x8){_0x5a73x4[_0x4fca[5]](_0x5a73x5)[_0x4fca[6]](_0x5a73x8)}}}function handleEntityNotFound(_0x5a73x4){return function(_0x5a73x8){if(!_0x5a73x8){_0x5a73x4[_0x4fca[5]](404)[_0x4fca[7]]();return null};return _0x5a73x8}}function saveUpdates(_0x5a73xb){return function(_0x5a73x8){return _0x5a73x8[_0x4fca[9]](_0x5a73xb)[_0x4fca[8]](function(_0x5a73xc){return _0x5a73xc})}}function removeEntity(_0x5a73x4){return function(_0x5a73x8){if(_0x5a73x8){return _0x5a73x8[_0x4fca[10]]()[_0x4fca[8]](function(){_0x5a73x4[_0x4fca[5]](204)[_0x4fca[7]]()})}}}exports[_0x4fca[11]]= function(_0x5a73xe,_0x5a73x4){SalesforceField[_0x4fca[13]]()[_0x4fca[8]](responseWithResult(_0x5a73x4))[_0x4fca[12]](handleError(_0x5a73x4))};exports[_0x4fca[14]]= function(_0x5a73xe,_0x5a73x4){SalesforceField[_0x4fca[17]](_0x5a73xe[_0x4fca[16]][_0x4fca[15]])[_0x4fca[8]](handleEntityNotFound(_0x5a73x4))[_0x4fca[8]](responseWithResult(_0x5a73x4))[_0x4fca[12]](handleError(_0x5a73x4))};exports[_0x4fca[18]]= function(_0x5a73xe,_0x5a73x4){SalesforceField[_0x4fca[18]](_0x5a73xe[_0x4fca[19]])[_0x4fca[8]](responseWithResult(_0x5a73x4,201))[_0x4fca[12]](handleError(_0x5a73x4))};exports[_0x4fca[20]]= function(_0x5a73xe,_0x5a73x4){if(_0x5a73xe[_0x4fca[19]][_0x4fca[15]]){delete _0x5a73xe[_0x4fca[19]][_0x4fca[15]]};SalesforceField[_0x4fca[17]](_0x5a73xe[_0x4fca[16]][_0x4fca[15]])[_0x4fca[8]](handleEntityNotFound(_0x5a73x4))[_0x4fca[8]](saveUpdates(_0x5a73xe[_0x4fca[19]]))[_0x4fca[8]](responseWithResult(_0x5a73x4))[_0x4fca[12]](handleError(_0x5a73x4))};exports[_0x4fca[10]]= function(_0x5a73xe,_0x5a73x4){SalesforceField[_0x4fca[17]](_0x5a73xe[_0x4fca[16]][_0x4fca[15]])[_0x4fca[8]](handleEntityNotFound(_0x5a73x4))[_0x4fca[8]](removeEntity(_0x5a73x4))[_0x4fca[12]](handleError(_0x5a73x4))} \ No newline at end of file diff --git a/server/api/salesforce_field/salesforce_field.events.js b/server/api/salesforce_field/salesforce_field.events.js index 44a66ad..c56bdf3 100644 --- a/server/api/salesforce_field/salesforce_field.events.js +++ b/server/api/salesforce_field/salesforce_field.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const SalesforceField = require('../../models').SalesforceField; - -var SalesforceFieldEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -SalesforceFieldEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - SalesforceField.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - SalesforceFieldEvents.emit(event + ':' + doc._id, doc); - SalesforceFieldEvents.emit(event, doc); - done(null); - } -} - -module.exports = SalesforceFieldEvents; +var _0xade2=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x53\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x46\x69\x65\x6C\x64","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xade2[0];const EventEmitter=require(_0xade2[1]);const SalesforceField=require(_0xade2[3])[_0xade2[2]];var SalesforceFieldEvents= new EventEmitter();SalesforceFieldEvents[_0xade2[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xade2[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xade2[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xade2[6]};for(var e in events){var event=events[e];SalesforceField[_0xade2[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x73e5x8,_0x73e5x9,_0x73e5xa){SalesforceFieldEvents[_0xade2[10]](event+ _0xade2[8]+ _0x73e5x8[_0xade2[9]],_0x73e5x8);SalesforceFieldEvents[_0xade2[10]](event,_0x73e5x8);_0x73e5xa(null)}}module[_0xade2[11]]= SalesforceFieldEvents \ No newline at end of file diff --git a/server/api/salesforce_field/salesforce_field.socket.js b/server/api/salesforce_field/salesforce_field.socket.js index e394e5b..021a1e6 100644 --- a/server/api/salesforce_field/salesforce_field.socket.js +++ b/server/api/salesforce_field/salesforce_field.socket.js @@ -1,32 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const SalesforceFieldEvents = require('./salesforce_field.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('salesforce_field:' + event, socket); - - SalesforceFieldEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - SalesforceFieldEvents.removeListener(event, listener); - }; -} +var _0xad56=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x73\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x5F\x66\x69\x65\x6C\x64\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x73\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x5F\x66\x69\x65\x6C\x64\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xad56[0];const SalesforceFieldEvents=require(_0xad56[1]);var events=[_0xad56[2],_0xad56[3]];exports[_0xad56[4]]= function(_0x996ex3){for(var _0x996ex4=0,_0x996ex5=events[_0xad56[5]];_0x996ex4< _0x996ex5;_0x996ex4++){var _0x996ex6=events[_0x996ex4];var _0x996ex7=createListener(_0xad56[6]+ _0x996ex6,_0x996ex3);SalesforceFieldEvents[_0xad56[7]](_0x996ex6,_0x996ex7);_0x996ex3[_0xad56[7]](_0xad56[8],removeListener(_0x996ex6,_0x996ex7))}};function createListener(_0x996ex6,_0x996ex3){return function(_0x996ex9){_0x996ex3[_0xad56[9]](_0x996ex6,_0x996ex9)}}function removeListener(_0x996ex6,_0x996ex7){return function(){SalesforceFieldEvents[_0xad56[10]](_0x996ex6,_0x996ex7)}} \ No newline at end of file diff --git a/server/api/scheduler/index.js b/server/api/scheduler/index.js index 7dd28ad..c2336de 100644 --- a/server/api/scheduler/index.js +++ b/server/api/scheduler/index.js @@ -1,19 +1 @@ -'use strict'; - -var express = require('express'); -var auth = require('../../auth/auth.service'); -var controller = require('./scheduler.controller'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), controller.index); - -router.get('/:id', auth.isAuthenticated(), controller.show); -router.get('/:id/run', auth.isAuthenticated(), controller.runSchedule); -router.post('/', auth.isAuthenticated(), controller.create); -router.put('/:id', auth.isAuthenticated(), controller.update); -router.patch('/:id', auth.isAuthenticated(), controller.update); -router.delete('/:id', auth.isAuthenticated(), controller.destroy); - - -module.exports = router; +var _0x6ca8=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x73\x63\x68\x65\x64\x75\x6C\x65\x72\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x2F\x3A\x69\x64\x2F\x72\x75\x6E","\x72\x75\x6E\x53\x63\x68\x65\x64\x75\x6C\x65","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x70\x61\x74\x63\x68","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0x6ca8[0];var express=require(_0x6ca8[1]);var auth=require(_0x6ca8[2]);var controller=require(_0x6ca8[3]);var router=express.Router();router[_0x6ca8[7]](_0x6ca8[4],auth[_0x6ca8[5]](),controller[_0x6ca8[6]]);router[_0x6ca8[7]](_0x6ca8[8],auth[_0x6ca8[5]](),controller[_0x6ca8[9]]);router[_0x6ca8[7]](_0x6ca8[10],auth[_0x6ca8[5]](),controller[_0x6ca8[11]]);router[_0x6ca8[13]](_0x6ca8[4],auth[_0x6ca8[5]](),controller[_0x6ca8[12]]);router[_0x6ca8[15]](_0x6ca8[8],auth[_0x6ca8[5]](),controller[_0x6ca8[14]]);router[_0x6ca8[16]](_0x6ca8[8],auth[_0x6ca8[5]](),controller[_0x6ca8[14]]);router[_0x6ca8[18]](_0x6ca8[8],auth[_0x6ca8[5]](),controller[_0x6ca8[17]]);module[_0x6ca8[19]]= router \ No newline at end of file diff --git a/server/api/scheduler/scheduler.controller.js b/server/api/scheduler/scheduler.controller.js index f25aa6a..d65a882 100644 --- a/server/api/scheduler/scheduler.controller.js +++ b/server/api/scheduler/scheduler.controller.js @@ -1,130 +1 @@ -'use strict'; - - -var _ = require('lodash'); - -var Schedule = require('../../models').Schedule; -var MailServerOut = require('../../models').MailServerOut; -var Reports = require('../../config/scheduler/reports'); - - -function handleError(res, statusCode) { - statusCode = statusCode || 500; - return function(err) { - console.log(err); - res.status(statusCode).send(err); - }; -} - -function responseWithResult(res, statusCode) { - statusCode = statusCode || 200; - return function(entity) { - if (entity) { - res.status(statusCode).json(entity); - } - }; -} - -function responseWithoutResult(res, statusCode) { - statusCode = statusCode || 200; - return function() { - res.sendStatus(statusCode); - }; -} - -function handleEntityNotFound(res) { - return function(entity) { - if (!entity) { - res.status(404).end(); - return null; - } - return entity; - }; -} - -function saveUpdates(updates) { - return function(entity) { - return entity.updateAttributes(updates) - .then(function(updated) { - return updated; - }); - }; -} - -function removeEntity(res) { - return function(entity) { - if (entity) { - return entity.destroy() - .then(function() { - res.status(204).end(); - }); - } - }; -} - -function runSchedule(req) { - return function(entity) { - if (entity) { - switch (entity.type) { - case 'report': - var scheduler = new Reports(); - scheduler.extractReport(entity, req.user) - break; - default: - } - } - } -} - -// Gets a list of Schedules -exports.index = function(req, res) { - Schedule.findAndCountAll() - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Gets a single Schedule from the DB -exports.show = function(req, res) { - Schedule.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Execute single Schedule from the DB -exports.runSchedule = function(req, res) { - Schedule.findById(req.params.id, { - include: [MailServerOut] - }) - .then(handleEntityNotFound(res)) - .then(runSchedule(req)) - .then(responseWithoutResult(res)) - .catch(handleError(res)); -} - -// Creates a new Schedule in the DB -exports.create = function(req, res) { - Schedule.create(req.body) - .then(responseWithResult(res, 201)) - .catch(handleError(res)); -} - -// Updates an existing Schedule in the DB -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - Schedule.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(saveUpdates(req.body)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Deletes a Schedule from the DB -exports.destroy = function(req, res) { - Schedule.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(removeEntity(res)) - .catch(handleError(res)); -} +var _0x6ec4=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x53\x63\x68\x65\x64\x75\x6C\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x4D\x61\x69\x6C\x53\x65\x72\x76\x65\x72\x4F\x75\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x73\x63\x68\x65\x64\x75\x6C\x65\x72\x2F\x72\x65\x70\x6F\x72\x74\x73","\x6C\x6F\x67","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x6A\x73\x6F\x6E","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x65\x6E\x64","\x74\x68\x65\x6E","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x64\x65\x73\x74\x72\x6F\x79","\x75\x73\x65\x72","\x65\x78\x74\x72\x61\x63\x74\x52\x65\x70\x6F\x72\x74","\x72\x65\x70\x6F\x72\x74","\x74\x79\x70\x65","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x73\x68\x6F\x77","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x72\x75\x6E\x53\x63\x68\x65\x64\x75\x6C\x65","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65"];_0x6ec4[0];var _=require(_0x6ec4[1]);var Schedule=require(_0x6ec4[3])[_0x6ec4[2]];var MailServerOut=require(_0x6ec4[3])[_0x6ec4[4]];var Reports=require(_0x6ec4[5]);function handleError(_0x8822x6,_0x8822x7){_0x8822x7= _0x8822x7|| 500;return function(_0x8822x8){console[_0x6ec4[6]](_0x8822x8);_0x8822x6[_0x6ec4[8]](_0x8822x7)[_0x6ec4[7]](_0x8822x8)}}function responseWithResult(_0x8822x6,_0x8822x7){_0x8822x7= _0x8822x7|| 200;return function(_0x8822xa){if(_0x8822xa){_0x8822x6[_0x6ec4[8]](_0x8822x7)[_0x6ec4[9]](_0x8822xa)}}}function responseWithoutResult(_0x8822x6,_0x8822x7){_0x8822x7= _0x8822x7|| 200;return function(){_0x8822x6[_0x6ec4[10]](_0x8822x7)}}function handleEntityNotFound(_0x8822x6){return function(_0x8822xa){if(!_0x8822xa){_0x8822x6[_0x6ec4[8]](404)[_0x6ec4[11]]();return null};return _0x8822xa}}function saveUpdates(_0x8822xe){return function(_0x8822xa){return _0x8822xa[_0x6ec4[13]](_0x8822xe)[_0x6ec4[12]](function(_0x8822xf){return _0x8822xf})}}function removeEntity(_0x8822x6){return function(_0x8822xa){if(_0x8822xa){return _0x8822xa[_0x6ec4[14]]()[_0x6ec4[12]](function(){_0x8822x6[_0x6ec4[8]](204)[_0x6ec4[11]]()})}}}function runSchedule(_0x8822x12){return function(_0x8822xa){if(_0x8822xa){switch(_0x8822xa[_0x6ec4[18]]){case _0x6ec4[17]:var _0x8822x13= new Reports();_0x8822x13[_0x6ec4[16]](_0x8822xa,_0x8822x12[_0x6ec4[15]]);break;default:}}}}exports[_0x6ec4[19]]= function(_0x8822x12,_0x8822x6){Schedule[_0x6ec4[21]]()[_0x6ec4[12]](responseWithResult(_0x8822x6))[_0x6ec4[20]](handleError(_0x8822x6))};exports[_0x6ec4[22]]= function(_0x8822x12,_0x8822x6){Schedule[_0x6ec4[25]](_0x8822x12[_0x6ec4[24]][_0x6ec4[23]])[_0x6ec4[12]](handleEntityNotFound(_0x8822x6))[_0x6ec4[12]](responseWithResult(_0x8822x6))[_0x6ec4[20]](handleError(_0x8822x6))};exports[_0x6ec4[26]]= function(_0x8822x12,_0x8822x6){Schedule[_0x6ec4[25]](_0x8822x12[_0x6ec4[24]][_0x6ec4[23]],{include:[MailServerOut]})[_0x6ec4[12]](handleEntityNotFound(_0x8822x6))[_0x6ec4[12]](runSchedule(_0x8822x12))[_0x6ec4[12]](responseWithoutResult(_0x8822x6))[_0x6ec4[20]](handleError(_0x8822x6))};exports[_0x6ec4[27]]= function(_0x8822x12,_0x8822x6){Schedule[_0x6ec4[27]](_0x8822x12[_0x6ec4[28]])[_0x6ec4[12]](responseWithResult(_0x8822x6,201))[_0x6ec4[20]](handleError(_0x8822x6))};exports[_0x6ec4[29]]= function(_0x8822x12,_0x8822x6){if(_0x8822x12[_0x6ec4[28]][_0x6ec4[23]]){delete _0x8822x12[_0x6ec4[28]][_0x6ec4[23]]};Schedule[_0x6ec4[25]](_0x8822x12[_0x6ec4[24]][_0x6ec4[23]])[_0x6ec4[12]](handleEntityNotFound(_0x8822x6))[_0x6ec4[12]](saveUpdates(_0x8822x12[_0x6ec4[28]]))[_0x6ec4[12]](responseWithResult(_0x8822x6))[_0x6ec4[20]](handleError(_0x8822x6))};exports[_0x6ec4[14]]= function(_0x8822x12,_0x8822x6){Schedule[_0x6ec4[25]](_0x8822x12[_0x6ec4[24]][_0x6ec4[23]])[_0x6ec4[12]](handleEntityNotFound(_0x8822x6))[_0x6ec4[12]](removeEntity(_0x8822x6))[_0x6ec4[20]](handleError(_0x8822x6))} \ No newline at end of file diff --git a/server/api/scheduler/scheduler.events.js b/server/api/scheduler/scheduler.events.js index 7718bf6..c363444 100644 --- a/server/api/scheduler/scheduler.events.js +++ b/server/api/scheduler/scheduler.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const Schedule = require('../../models').Schedule; - -var SchedulerEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -SchedulerEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - Schedule.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - SchedulerEvents.emit(event + ':' + doc._id, doc); - SchedulerEvents.emit(event, doc); - done(null); - } -} - -module.exports = SchedulerEvents; +var _0xc4d1=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x53\x63\x68\x65\x64\x75\x6C\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xc4d1[0];const EventEmitter=require(_0xc4d1[1]);const Schedule=require(_0xc4d1[3])[_0xc4d1[2]];var SchedulerEvents= new EventEmitter();SchedulerEvents[_0xc4d1[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xc4d1[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xc4d1[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xc4d1[6]};for(var e in events){var event=events[e];Schedule[_0xc4d1[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x1c05x8,_0x1c05x9,_0x1c05xa){SchedulerEvents[_0xc4d1[10]](event+ _0xc4d1[8]+ _0x1c05x8[_0xc4d1[9]],_0x1c05x8);SchedulerEvents[_0xc4d1[10]](event,_0x1c05x8);_0x1c05xa(null)}}module[_0xc4d1[11]]= SchedulerEvents \ No newline at end of file diff --git a/server/api/scheduler/scheduler.socket.js b/server/api/scheduler/scheduler.socket.js index 16264a4..a4f6137 100644 --- a/server/api/scheduler/scheduler.socket.js +++ b/server/api/scheduler/scheduler.socket.js @@ -1,32 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const SchedulerEvents = require('./scheduler.events'); - -// Model events to emit -var events = ['save', 'update', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('schedule:' + event, socket); - - SchedulerEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - SchedulerEvents.removeListener(event, listener); - }; -} +var _0xdeec=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x73\x63\x68\x65\x64\x75\x6C\x65\x72\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x75\x70\x64\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x73\x63\x68\x65\x64\x75\x6C\x65\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xdeec[0];const SchedulerEvents=require(_0xdeec[1]);var events=[_0xdeec[2],_0xdeec[3],_0xdeec[4]];exports[_0xdeec[5]]= function(_0xdcedx3){for(var _0xdcedx4=0,_0xdcedx5=events[_0xdeec[6]];_0xdcedx4< _0xdcedx5;_0xdcedx4++){var _0xdcedx6=events[_0xdcedx4];var _0xdcedx7=createListener(_0xdeec[7]+ _0xdcedx6,_0xdcedx3);SchedulerEvents[_0xdeec[8]](_0xdcedx6,_0xdcedx7);_0xdcedx3[_0xdeec[8]](_0xdeec[9],removeListener(_0xdcedx6,_0xdcedx7))}};function createListener(_0xdcedx6,_0xdcedx3){return function(_0xdcedx9){_0xdcedx3[_0xdeec[10]](_0xdcedx6,_0xdcedx9)}}function removeListener(_0xdcedx6,_0xdcedx7){return function(){SchedulerEvents[_0xdeec[11]](_0xdcedx6,_0xdcedx7)}} \ No newline at end of file diff --git a/server/api/setting/index.js b/server/api/setting/index.js index cbca952..01921c1 100644 --- a/server/api/setting/index.js +++ b/server/api/setting/index.js @@ -1,28 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./setting.controller'); -var auth = require('../../auth/auth.service'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), auth.hasRole('admin'), controller.index); -router.get('/smtp', auth.isAuthenticated(), auth.hasModule([9], ['admin', 'agent']), controller.showCustom); -router.get('/internal', auth.isAuthenticated(), auth.hasRole('admin'), controller.getInternal); -router.get('/mailbox', auth.isAuthenticated(), auth.hasRole('admin'), controller.getMailbox); -router.get('/logo/main/:filename', controller.getLogo); -router.get('/logo/login/:filename', controller.getLoginLogo); -router.get('/system', auth.isAuthenticated(), auth.hasRole('admin'), controller.stats); -router.get('/logs', auth.isAuthenticated(), auth.hasRole('admin'), controller.logs); -router.get('/info', controller.getInfo); -router.get('/:id', auth.isAuthenticated(), controller.show); -router.post('/', auth.isAuthenticated(), auth.hasRole('admin'), controller.create); -router.post('/asterisk', auth.isAuthenticated(), auth.hasRole('admin'), controller.asteriskCommand); -router.post('/logo/main', auth.isAuthenticated(), auth.hasRole('admin'), controller.changeLogo); -router.post('/logo/login', auth.isAuthenticated(), auth.hasRole('admin'), controller.changeLoginLogo); -router.post('/smtp', auth.isAuthenticated(), auth.hasRole('admin'), controller.createSmtp); -router.put('/smtp/:id', auth.isAuthenticated(), auth.hasRole('admin'), controller.updateSmtp); -router.put('/:id', auth.isAuthenticated(), auth.hasRole('admin'), controller.update); -router.delete('/:id', auth.isAuthenticated(), auth.hasRole('admin'), controller.destroy); - -module.exports = router; +var _0x5d6e=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x73\x65\x74\x74\x69\x6E\x67\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x52\x6F\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x73\x6D\x74\x70","\x61\x67\x65\x6E\x74","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x73\x68\x6F\x77\x43\x75\x73\x74\x6F\x6D","\x2F\x69\x6E\x74\x65\x72\x6E\x61\x6C","\x67\x65\x74\x49\x6E\x74\x65\x72\x6E\x61\x6C","\x2F\x6D\x61\x69\x6C\x62\x6F\x78","\x67\x65\x74\x4D\x61\x69\x6C\x62\x6F\x78","\x2F\x6C\x6F\x67\x6F\x2F\x6D\x61\x69\x6E\x2F\x3A\x66\x69\x6C\x65\x6E\x61\x6D\x65","\x67\x65\x74\x4C\x6F\x67\x6F","\x2F\x6C\x6F\x67\x6F\x2F\x6C\x6F\x67\x69\x6E\x2F\x3A\x66\x69\x6C\x65\x6E\x61\x6D\x65","\x67\x65\x74\x4C\x6F\x67\x69\x6E\x4C\x6F\x67\x6F","\x2F\x73\x79\x73\x74\x65\x6D","\x73\x74\x61\x74\x73","\x2F\x6C\x6F\x67\x73","\x6C\x6F\x67\x73","\x2F\x69\x6E\x66\x6F","\x67\x65\x74\x49\x6E\x66\x6F","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x2F\x61\x73\x74\x65\x72\x69\x73\x6B","\x61\x73\x74\x65\x72\x69\x73\x6B\x43\x6F\x6D\x6D\x61\x6E\x64","\x2F\x6C\x6F\x67\x6F\x2F\x6D\x61\x69\x6E","\x63\x68\x61\x6E\x67\x65\x4C\x6F\x67\x6F","\x2F\x6C\x6F\x67\x6F\x2F\x6C\x6F\x67\x69\x6E","\x63\x68\x61\x6E\x67\x65\x4C\x6F\x67\x69\x6E\x4C\x6F\x67\x6F","\x63\x72\x65\x61\x74\x65\x53\x6D\x74\x70","\x2F\x73\x6D\x74\x70\x2F\x3A\x69\x64","\x75\x70\x64\x61\x74\x65\x53\x6D\x74\x70","\x70\x75\x74","\x75\x70\x64\x61\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0x5d6e[0];var express=require(_0x5d6e[1]);var controller=require(_0x5d6e[2]);var auth=require(_0x5d6e[3]);var router=express.Router();router[_0x5d6e[9]](_0x5d6e[4],auth[_0x5d6e[5]](),auth[_0x5d6e[7]](_0x5d6e[6]),controller[_0x5d6e[8]]);router[_0x5d6e[9]](_0x5d6e[10],auth[_0x5d6e[5]](),auth[_0x5d6e[12]]([9],[_0x5d6e[6],_0x5d6e[11]]),controller[_0x5d6e[13]]);router[_0x5d6e[9]](_0x5d6e[14],auth[_0x5d6e[5]](),auth[_0x5d6e[7]](_0x5d6e[6]),controller[_0x5d6e[15]]);router[_0x5d6e[9]](_0x5d6e[16],auth[_0x5d6e[5]](),auth[_0x5d6e[7]](_0x5d6e[6]),controller[_0x5d6e[17]]);router[_0x5d6e[9]](_0x5d6e[18],controller[_0x5d6e[19]]);router[_0x5d6e[9]](_0x5d6e[20],controller[_0x5d6e[21]]);router[_0x5d6e[9]](_0x5d6e[22],auth[_0x5d6e[5]](),auth[_0x5d6e[7]](_0x5d6e[6]),controller[_0x5d6e[23]]);router[_0x5d6e[9]](_0x5d6e[24],auth[_0x5d6e[5]](),auth[_0x5d6e[7]](_0x5d6e[6]),controller[_0x5d6e[25]]);router[_0x5d6e[9]](_0x5d6e[26],controller[_0x5d6e[27]]);router[_0x5d6e[9]](_0x5d6e[28],auth[_0x5d6e[5]](),controller[_0x5d6e[29]]);router[_0x5d6e[31]](_0x5d6e[4],auth[_0x5d6e[5]](),auth[_0x5d6e[7]](_0x5d6e[6]),controller[_0x5d6e[30]]);router[_0x5d6e[31]](_0x5d6e[32],auth[_0x5d6e[5]](),auth[_0x5d6e[7]](_0x5d6e[6]),controller[_0x5d6e[33]]);router[_0x5d6e[31]](_0x5d6e[34],auth[_0x5d6e[5]](),auth[_0x5d6e[7]](_0x5d6e[6]),controller[_0x5d6e[35]]);router[_0x5d6e[31]](_0x5d6e[36],auth[_0x5d6e[5]](),auth[_0x5d6e[7]](_0x5d6e[6]),controller[_0x5d6e[37]]);router[_0x5d6e[31]](_0x5d6e[10],auth[_0x5d6e[5]](),auth[_0x5d6e[7]](_0x5d6e[6]),controller[_0x5d6e[38]]);router[_0x5d6e[41]](_0x5d6e[39],auth[_0x5d6e[5]](),auth[_0x5d6e[7]](_0x5d6e[6]),controller[_0x5d6e[40]]);router[_0x5d6e[41]](_0x5d6e[28],auth[_0x5d6e[5]](),auth[_0x5d6e[7]](_0x5d6e[6]),controller[_0x5d6e[42]]);router[_0x5d6e[44]](_0x5d6e[28],auth[_0x5d6e[5]](),auth[_0x5d6e[7]](_0x5d6e[6]),controller[_0x5d6e[43]]);module[_0x5d6e[45]]= router \ No newline at end of file diff --git a/server/api/setting/setting.controller.js b/server/api/setting/setting.controller.js index 506f144..491402c 100644 --- a/server/api/setting/setting.controller.js +++ b/server/api/setting/setting.controller.js @@ -1,422 +1 @@ -'use strict'; - -var _ = require('lodash'); -var Setting = require('../../models').Setting; -var system = require('../../config/tools/system'); -var Agent = require('../../models').User; -var VoiceMail = require('../../models').VoiceVoicemail; -var MailAccount = require('../../models').MailAccount; -var MailServerOut = require('../../models').MailServerOut; -var Promise = require('bluebird'); -var UploadFile = require('upload-file'); -var path = require('path'); -var sequelize = require('../../models').sequelize; -var config = require('../../config/environment'); -var sr = require('simple-random'); -var fs = require('fs'); - -// Get list of settings -exports.index = function(req, res) { - return Setting - .findAll() - .then(function(settings) { - return res.status(200).send(settings); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.stats = function(req, res) { - return Promise - .all([]) - .then(system.checkStatus()) - .then(function(stats) { - return res.status(200).send(stats); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -} - -exports.asteriskCommand = function(req, res) { - return Promise - .promisify(req.app.locals.ami.action)({ - action: 'Command', - command: req.body.command.trim(), - }) - .then(function(result) { - return res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); -} - -exports.logs = function(req, res) { - var logs = { - output: '', - errors: '' - }; - var readFile = Promise.promisify(fs.readFile); - var exists = Promise.promisify(fs.exists); - return readFile('/var/log/xcally/motion-err.log', 'utf8') - .then(function(errs) { - logs.errors = errs; - }) - .catch(function(err) { - logs.errors = 'No error log file found!'; - }) - .then(function() { - return readFile('/var/log/xcally/motion-out.log', 'utf8'); - }) - .then(function(out) { - logs.output = out; - }) - .catch(function(err) { - logs.output = 'No output log file found!'; - }) - .then(function(result) { - return res.status(200).send(logs); - }) - .catch(function(err) { - console.log('logs error:', err.message); - return handleError(res, err); - }); -} - -exports.changeLogo = function(req, res) { - changeLogo(req, res, 'logo'); -} - -exports.changeLoginLogo = function(req, res) { - changeLogo(req, res, 'loginLogo'); -} - -function changeLogo(req, res, field) { - - var upload = new UploadFile({ - dest: path.join(config.root, 'server', 'files', 'images'), - maxNumberOfFiles: 1, - minNumberOfFiles: 0, - acceptFileTypes: /(\.|\/)(jpeg|png)$/i, - rename: function(name, file) { - return sr() + path.extname(file.filename); - }, - messages: { - maxNumberOfFiles: "Max number of files upload exceeded", - acceptFileTypes: "Only jpeg and png format accepted", - invalidRequest: "Invalid request" - } - }); - - upload.on('end', function(fields, files) { - if (!files.file.filename) { - return res.status(500).send(upload); - } - return sequelize.transaction(function(t) { - return Setting - .findById(1) - .then(function(settings) { - if (!settings) { - return res.sendStatus(404); - } - var body = {}; - body[field] = files.file.filename; - return settings - .update(body, { - transaction: t - }); - }) - .then(function(user) { - return res.status(200).send(user); - }) - }) - .catch(function(err) { - return handleError(res, err); - }); - }); - - upload.on('error', function(err) { - console.log('********** Upload error :', err) - return handleError(res, err); - }); - - upload.parse(req); -} - - -exports.getLogo = function(req, res) { - getLogo(req, res, 'logo.png'); -} - -exports.getLoginLogo = function(req, res) { - getLogo(req, res, 'logo-big.png'); -} - -function getLogo(req, res, image) { - var imgPath = path.join(config.root, 'server', 'files', 'images', req.params.filename); - - fs.exists(imgPath, function(exists) { - if (!exists) { - imgPath = path.join(config.root, 'server', 'files', 'images', 'default', image); - } - - return res.sendFile(imgPath); - }); -} - -// Get internal -exports.getInternal = function(req, res) { - var _settings; - return Setting - .findById(1) - .then(function(settings) { - _settings = settings; - return Agent - .findAll({ - attributes: ['internal'] - }); - }) - .then(function(internals) { - var _internals = _.map(internals, 'internal'); - var _internal = { - value: 0, - range: 0 //maximum number of internals before an occupied one, 0 is unlimited - }; - var nextUsed; - if (req.query.internal) { - _internal.value = Number(req.query.internal); - while (_.includes(_internals, _internal.value)) { - _internal.value++; - } - nextUsed = _.filter(_internals, function(elem) { - return elem > _internal.value; - }).shift(); - _internal.range = nextUsed - _internal.value; - } else { - var maxInternal = _.max(_internals); - _internal.value = _settings.min_internal; //if the max internal is lower than my lower limit, i just set the limit as the internal - if (maxInternal && maxInternal >= _settings.min_internal) { //otherwise i get the first of the used internals and then I increment the value until I find an empty one - while (_.includes(_internals, _internal.value)) { - _internal.value++; - } - //then I find the next used internal and calculate the maximum number of free internals before a used one - nextUsed = _.filter(_internals, function(elem) { - return elem > _internal.value; - }).shift(); - _internal.range = nextUsed - _internal.value; - } - } - return res.status(200).send(_internal); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get mailbox -exports.getMailbox = function(req, res) { - var _settings; - return Setting - .findById(1) - .then(function(settings) { - _settings = settings; - return VoiceMail - .findAll({ - attributes: ['mailbox'] - }); - }) - .then(function(mailboxes) { - var _mailboxes = _.map(mailboxes, function(elem) { - return Number(elem.mailbox); - }); - var _mailbox = { - value: 0, - range: 0 //maximum number of mailboxs before an occupied one, 0 is unlimited - }; - var nextUsed; - var maxMailbox = _.max(_mailboxes); - _mailbox.value = _settings.min_mailbox; //if the max mailbox is lower than my lower limit, i just set the limit as the mailbox - if (maxMailbox && maxMailbox >= _settings.min_mailbox) { //otherwise i get the first of the used mailboxes and then I increment the value until I find an empty one - while (_.includes(_mailboxes, _mailbox.value)) { - _mailbox.value++; - } - //then I find the next used mailbox and calculate the maximum number of free mailboxes before a used one - nextUsed = _.filter(_mailboxes, function(elem) { - return elem > _mailbox.value; - }).shift(); - _mailbox.range = nextUsed - _mailbox.value; - } - - return res.status(200).send(_mailbox); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -// Get list of settings -exports.getInfo = function(req, res) { - - var info = require('../../../package.json'); - - return res.status(200).send({ - name: info.name, - version: info.version, - engines: info.engines - }); -}; - -// Get a single setting -exports.show = function(req, res) { - return Setting - .findById(req.params.id) - .then(function(setting) { - if (!setting) { - return res.sendStatus(404); - } - return res.send(setting); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get a single mailAccount -exports.showCustom = function(req, res, next) { - return MailAccount - .findOne({ - where: { - custom: true - }, - include: [{ - model: MailServerOut, - attributes: ['id', 'host', 'port', 'username', 'password', 'ssl', 'state', 'source', 'description'] - }] - }) - .then(function(mailAccount) { - console.log('mailAccount', mailAccount); - if (!mailAccount) { - return res.sendStatus(404); - } - return res.send(mailAccount); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Creates a new setting in the DB. -exports.create = function(req, res) { - return Setting - .create(req.body) - .then(function(setting) { - return res.status(201).send(setting); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Creates a new mailAccount in the DB. -exports.createSmtp = function(req, res, next) { - return MailAccount - .create(req.body, { - include: [{ - model: MailServerOut - }] - }).then(function(mailAccount) { - return res.status(201).send(mailAccount); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Creates a new setting in the DB. -exports.updateSmtp = function(req, res) { - var _mailAccount; - - return MailAccount - .findById(req.params.id) - .then(function(mailAccount) { - _mailAccount = mailAccount; - - return _mailAccount - .update({ - name: req.body.name, - address: req.body.address, - service: req.body.service, - signature: req.body.signature, - ListId: req.body.ListId, - TemplateId: req.body.TemplateId - }); - }) - .then(function(mailAccount) { - if (req.body.MailServerOut) { - req.body.MailServerOut.state = 'CONNECTING'; - req.body.MailServerOut.source = null; - - return MailServerOut - .update(req.body.MailServerOut, { - where: { - id: req.body.MailServerOut.id - }, - individualHooks: true - }); - } - }) - .then(function(smtp) { - return res.sendStatus(200); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Updates an existing setting in the DB. -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - return Setting - .findById(req.params.id) - .then(function(setting) { - if (!setting) { - return res.sendStatus(404); - } - var updated = _.merge(setting, req.body); - return updated.save(); - }) - .then(function(setting) { - return res.status(200).send(setting); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes a setting from the DB. -exports.destroy = function(req, res) { - return Setting - .findById(req.params.id) - .then(function(setting) { - if (!setting) { - return res.sendStatus(404); - } - return setting.destroy(); - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0x31ef=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x53\x65\x74\x74\x69\x6E\x67","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x74\x6F\x6F\x6C\x73\x2F\x73\x79\x73\x74\x65\x6D","\x55\x73\x65\x72","\x56\x6F\x69\x63\x65\x56\x6F\x69\x63\x65\x6D\x61\x69\x6C","\x4D\x61\x69\x6C\x41\x63\x63\x6F\x75\x6E\x74","\x4D\x61\x69\x6C\x53\x65\x72\x76\x65\x72\x4F\x75\x74","\x62\x6C\x75\x65\x62\x69\x72\x64","\x75\x70\x6C\x6F\x61\x64\x2D\x66\x69\x6C\x65","\x70\x61\x74\x68","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x73\x69\x6D\x70\x6C\x65\x2D\x72\x61\x6E\x64\x6F\x6D","\x66\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x74\x61\x74\x73","\x6C\x6F\x67","\x63\x68\x65\x63\x6B\x53\x74\x61\x74\x75\x73","\x61\x6C\x6C","\x61\x73\x74\x65\x72\x69\x73\x6B\x43\x6F\x6D\x6D\x61\x6E\x64","\x43\x6F\x6D\x6D\x61\x6E\x64","\x74\x72\x69\x6D","\x63\x6F\x6D\x6D\x61\x6E\x64","\x62\x6F\x64\x79","\x61\x63\x74\x69\x6F\x6E","\x61\x6D\x69","\x6C\x6F\x63\x61\x6C\x73","\x61\x70\x70","\x70\x72\x6F\x6D\x69\x73\x69\x66\x79","\x6C\x6F\x67\x73","","\x72\x65\x61\x64\x46\x69\x6C\x65","\x65\x78\x69\x73\x74\x73","\x6C\x6F\x67\x73\x20\x65\x72\x72\x6F\x72\x3A","\x6D\x65\x73\x73\x61\x67\x65","\x6F\x75\x74\x70\x75\x74","\x4E\x6F\x20\x6F\x75\x74\x70\x75\x74\x20\x6C\x6F\x67\x20\x66\x69\x6C\x65\x20\x66\x6F\x75\x6E\x64\x21","\x2F\x76\x61\x72\x2F\x6C\x6F\x67\x2F\x78\x63\x61\x6C\x6C\x79\x2F\x6D\x6F\x74\x69\x6F\x6E\x2D\x6F\x75\x74\x2E\x6C\x6F\x67","\x75\x74\x66\x38","\x65\x72\x72\x6F\x72\x73","\x4E\x6F\x20\x65\x72\x72\x6F\x72\x20\x6C\x6F\x67\x20\x66\x69\x6C\x65\x20\x66\x6F\x75\x6E\x64\x21","\x2F\x76\x61\x72\x2F\x6C\x6F\x67\x2F\x78\x63\x61\x6C\x6C\x79\x2F\x6D\x6F\x74\x69\x6F\x6E\x2D\x65\x72\x72\x2E\x6C\x6F\x67","\x63\x68\x61\x6E\x67\x65\x4C\x6F\x67\x6F","\x6C\x6F\x67\x6F","\x63\x68\x61\x6E\x67\x65\x4C\x6F\x67\x69\x6E\x4C\x6F\x67\x6F","\x6C\x6F\x67\x69\x6E\x4C\x6F\x67\x6F","\x72\x6F\x6F\x74","\x73\x65\x72\x76\x65\x72","\x66\x69\x6C\x65\x73","\x69\x6D\x61\x67\x65\x73","\x6A\x6F\x69\x6E","\x66\x69\x6C\x65\x6E\x61\x6D\x65","\x65\x78\x74\x6E\x61\x6D\x65","\x4D\x61\x78\x20\x6E\x75\x6D\x62\x65\x72\x20\x6F\x66\x20\x66\x69\x6C\x65\x73\x20\x75\x70\x6C\x6F\x61\x64\x20\x65\x78\x63\x65\x65\x64\x65\x64","\x4F\x6E\x6C\x79\x20\x6A\x70\x65\x67\x20\x61\x6E\x64\x20\x70\x6E\x67\x20\x66\x6F\x72\x6D\x61\x74\x20\x61\x63\x63\x65\x70\x74\x65\x64","\x49\x6E\x76\x61\x6C\x69\x64\x20\x72\x65\x71\x75\x65\x73\x74","\x65\x6E\x64","\x66\x69\x6C\x65","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x75\x70\x64\x61\x74\x65","\x66\x69\x6E\x64\x42\x79\x49\x64","\x74\x72\x61\x6E\x73\x61\x63\x74\x69\x6F\x6E","\x6F\x6E","\x65\x72\x72\x6F\x72","\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x20\x55\x70\x6C\x6F\x61\x64\x20\x65\x72\x72\x6F\x72\x20\x3A","\x70\x61\x72\x73\x65","\x67\x65\x74\x4C\x6F\x67\x6F","\x6C\x6F\x67\x6F\x2E\x70\x6E\x67","\x67\x65\x74\x4C\x6F\x67\x69\x6E\x4C\x6F\x67\x6F","\x6C\x6F\x67\x6F\x2D\x62\x69\x67\x2E\x70\x6E\x67","\x70\x61\x72\x61\x6D\x73","\x64\x65\x66\x61\x75\x6C\x74","\x73\x65\x6E\x64\x46\x69\x6C\x65","\x67\x65\x74\x49\x6E\x74\x65\x72\x6E\x61\x6C","\x69\x6E\x74\x65\x72\x6E\x61\x6C","\x6D\x61\x70","\x71\x75\x65\x72\x79","\x76\x61\x6C\x75\x65","\x69\x6E\x63\x6C\x75\x64\x65\x73","\x73\x68\x69\x66\x74","\x66\x69\x6C\x74\x65\x72","\x72\x61\x6E\x67\x65","\x6D\x61\x78","\x6D\x69\x6E\x5F\x69\x6E\x74\x65\x72\x6E\x61\x6C","\x67\x65\x74\x4D\x61\x69\x6C\x62\x6F\x78","\x6D\x61\x69\x6C\x62\x6F\x78","\x6D\x69\x6E\x5F\x6D\x61\x69\x6C\x62\x6F\x78","\x67\x65\x74\x49\x6E\x66\x6F","\x2E\x2E\x2F\x2E\x2E\x2F\x2E\x2E\x2F\x70\x61\x63\x6B\x61\x67\x65\x2E\x6A\x73\x6F\x6E","\x6E\x61\x6D\x65","\x76\x65\x72\x73\x69\x6F\x6E","\x65\x6E\x67\x69\x6E\x65\x73","\x73\x68\x6F\x77","\x69\x64","\x73\x68\x6F\x77\x43\x75\x73\x74\x6F\x6D","\x6D\x61\x69\x6C\x41\x63\x63\x6F\x75\x6E\x74","\x68\x6F\x73\x74","\x70\x6F\x72\x74","\x75\x73\x65\x72\x6E\x61\x6D\x65","\x70\x61\x73\x73\x77\x6F\x72\x64","\x73\x73\x6C","\x73\x74\x61\x74\x65","\x73\x6F\x75\x72\x63\x65","\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E","\x66\x69\x6E\x64\x4F\x6E\x65","\x63\x72\x65\x61\x74\x65","\x63\x72\x65\x61\x74\x65\x53\x6D\x74\x70","\x75\x70\x64\x61\x74\x65\x53\x6D\x74\x70","\x43\x4F\x4E\x4E\x45\x43\x54\x49\x4E\x47","\x61\x64\x64\x72\x65\x73\x73","\x73\x65\x72\x76\x69\x63\x65","\x73\x69\x67\x6E\x61\x74\x75\x72\x65","\x4C\x69\x73\x74\x49\x64","\x54\x65\x6D\x70\x6C\x61\x74\x65\x49\x64","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x64\x65\x73\x74\x72\x6F\x79"];_0x31ef[0];var _=require(_0x31ef[1]);var Setting=require(_0x31ef[3])[_0x31ef[2]];var system=require(_0x31ef[4]);var Agent=require(_0x31ef[3])[_0x31ef[5]];var VoiceMail=require(_0x31ef[3])[_0x31ef[6]];var MailAccount=require(_0x31ef[3])[_0x31ef[7]];var MailServerOut=require(_0x31ef[3])[_0x31ef[8]];var Promise=require(_0x31ef[9]);var UploadFile=require(_0x31ef[10]);var path=require(_0x31ef[11]);var sequelize=require(_0x31ef[3])[_0x31ef[12]];var config=require(_0x31ef[13]);var sr=require(_0x31ef[14]);var fs=require(_0x31ef[15]);exports[_0x31ef[16]]= function(_0xa654xf,_0xa654x10){return Setting[_0x31ef[21]]()[_0x31ef[20]](function(_0xa654x12){return _0xa654x10[_0x31ef[19]](200)[_0x31ef[18]](_0xa654x12)})[_0x31ef[17]](function(_0xa654x11){return handleError(_0xa654x10,_0xa654x11)})};exports[_0x31ef[22]]= function(_0xa654xf,_0xa654x10){return Promise[_0x31ef[25]]([])[_0x31ef[20]](system[_0x31ef[24]]())[_0x31ef[20]](function(_0xa654x13){return _0xa654x10[_0x31ef[19]](200)[_0x31ef[18]](_0xa654x13)})[_0x31ef[17]](function(_0xa654x11){console[_0x31ef[23]](_0xa654x11);return handleError(_0xa654x10,_0xa654x11)})};exports[_0x31ef[26]]= function(_0xa654xf,_0xa654x10){return Promise[_0x31ef[35]](_0xa654xf[_0x31ef[34]][_0x31ef[33]][_0x31ef[32]][_0x31ef[31]])({action:_0x31ef[27],command:_0xa654xf[_0x31ef[30]][_0x31ef[29]][_0x31ef[28]]()})[_0x31ef[20]](function(_0xa654x14){return _0xa654x10[_0x31ef[19]](200)[_0x31ef[18]](_0xa654x14)})[_0x31ef[17]](function(_0xa654x11){return handleError(_0xa654x10,_0xa654x11)})};exports[_0x31ef[36]]= function(_0xa654xf,_0xa654x10){var _0xa654x15={output:_0x31ef[37],errors:_0x31ef[37]};var _0xa654x16=Promise[_0x31ef[35]](fs[_0x31ef[38]]);var _0xa654x17=Promise[_0x31ef[35]](fs[_0x31ef[39]]);return _0xa654x16(_0x31ef[48],_0x31ef[45])[_0x31ef[20]](function(_0xa654x19){_0xa654x15[_0x31ef[46]]= _0xa654x19})[_0x31ef[17]](function(_0xa654x11){_0xa654x15[_0x31ef[46]]= _0x31ef[47]})[_0x31ef[20]](function(){return _0xa654x16(_0x31ef[44],_0x31ef[45])})[_0x31ef[20]](function(_0xa654x18){_0xa654x15[_0x31ef[42]]= _0xa654x18})[_0x31ef[17]](function(_0xa654x11){_0xa654x15[_0x31ef[42]]= _0x31ef[43]})[_0x31ef[20]](function(_0xa654x14){return _0xa654x10[_0x31ef[19]](200)[_0x31ef[18]](_0xa654x15)})[_0x31ef[17]](function(_0xa654x11){console[_0x31ef[23]](_0x31ef[40],_0xa654x11[_0x31ef[41]]);return handleError(_0xa654x10,_0xa654x11)})};exports[_0x31ef[49]]= function(_0xa654xf,_0xa654x10){changeLogo(_0xa654xf,_0xa654x10,_0x31ef[50])};exports[_0x31ef[51]]= function(_0xa654xf,_0xa654x10){changeLogo(_0xa654xf,_0xa654x10,_0x31ef[52])};function changeLogo(_0xa654xf,_0xa654x10,_0xa654x1b){var _0xa654x1c= new UploadFile({dest:path[_0x31ef[57]](config[_0x31ef[53]],_0x31ef[54],_0x31ef[55],_0x31ef[56]),maxNumberOfFiles:1,minNumberOfFiles:0,acceptFileTypes:/(\.|\/)(jpeg|png)$/i,rename:function(_0xa654x1d,_0xa654x1e){return sr()+ path[_0x31ef[59]](_0xa654x1e[_0x31ef[58]])},messages:{maxNumberOfFiles:_0x31ef[60],acceptFileTypes:_0x31ef[61],invalidRequest:_0x31ef[62]}});_0xa654x1c[_0x31ef[69]](_0x31ef[63],function(_0xa654x1f,_0xa654x20){if(!_0xa654x20[_0x31ef[64]][_0x31ef[58]]){return _0xa654x10[_0x31ef[19]](500)[_0x31ef[18]](_0xa654x1c)};return sequelize[_0x31ef[68]](function(_0xa654x21){return Setting[_0x31ef[67]](1)[_0x31ef[20]](function(_0xa654x12){if(!_0xa654x12){return _0xa654x10[_0x31ef[65]](404)};var _0xa654x23={};_0xa654x23[_0xa654x1b]= _0xa654x20[_0x31ef[64]][_0x31ef[58]];return _0xa654x12[_0x31ef[66]](_0xa654x23,{transaction:_0xa654x21})})[_0x31ef[20]](function(_0xa654x22){return _0xa654x10[_0x31ef[19]](200)[_0x31ef[18]](_0xa654x22)})})[_0x31ef[17]](function(_0xa654x11){return handleError(_0xa654x10,_0xa654x11)})});_0xa654x1c[_0x31ef[69]](_0x31ef[70],function(_0xa654x11){console[_0x31ef[23]](_0x31ef[71],_0xa654x11);return handleError(_0xa654x10,_0xa654x11)});_0xa654x1c[_0x31ef[72]](_0xa654xf)}exports[_0x31ef[73]]= function(_0xa654xf,_0xa654x10){getLogo(_0xa654xf,_0xa654x10,_0x31ef[74])};exports[_0x31ef[75]]= function(_0xa654xf,_0xa654x10){getLogo(_0xa654xf,_0xa654x10,_0x31ef[76])};function getLogo(_0xa654xf,_0xa654x10,_0xa654x25){var _0xa654x26=path[_0x31ef[57]](config[_0x31ef[53]],_0x31ef[54],_0x31ef[55],_0x31ef[56],_0xa654xf[_0x31ef[77]][_0x31ef[58]]);fs[_0x31ef[39]](_0xa654x26,function(_0xa654x17){if(!_0xa654x17){_0xa654x26= path[_0x31ef[57]](config[_0x31ef[53]],_0x31ef[54],_0x31ef[55],_0x31ef[56],_0x31ef[78],_0xa654x25)};return _0xa654x10[_0x31ef[79]](_0xa654x26)})}exports[_0x31ef[80]]= function(_0xa654xf,_0xa654x10){var _0xa654x27;return Setting[_0x31ef[67]](1)[_0x31ef[20]](function(_0xa654x12){_0xa654x27= _0xa654x12;return Agent[_0x31ef[21]]({attributes:[_0x31ef[81]]})})[_0x31ef[20]](function(_0xa654x28){var _0xa654x29=_[_0x31ef[82]](_0xa654x28,_0x31ef[81]);var _0xa654x2a={value:0,range:0};var _0xa654x2b;if(_0xa654xf[_0x31ef[83]][_0x31ef[81]]){_0xa654x2a[_0x31ef[84]]= Number(_0xa654xf[_0x31ef[83]][_0x31ef[81]]);while(_[_0x31ef[85]](_0xa654x29,_0xa654x2a[_0x31ef[84]])){_0xa654x2a[_0x31ef[84]]++};_0xa654x2b= _[_0x31ef[87]](_0xa654x29,function(_0xa654x2c){return _0xa654x2c> _0xa654x2a[_0x31ef[84]]})[_0x31ef[86]]();_0xa654x2a[_0x31ef[88]]= _0xa654x2b- _0xa654x2a[_0x31ef[84]]}else {var _0xa654x2d=_[_0x31ef[89]](_0xa654x29);_0xa654x2a[_0x31ef[84]]= _0xa654x27[_0x31ef[90]];if(_0xa654x2d&& _0xa654x2d>= _0xa654x27[_0x31ef[90]]){while(_[_0x31ef[85]](_0xa654x29,_0xa654x2a[_0x31ef[84]])){_0xa654x2a[_0x31ef[84]]++};_0xa654x2b= _[_0x31ef[87]](_0xa654x29,function(_0xa654x2c){return _0xa654x2c> _0xa654x2a[_0x31ef[84]]})[_0x31ef[86]]();_0xa654x2a[_0x31ef[88]]= _0xa654x2b- _0xa654x2a[_0x31ef[84]]}};return _0xa654x10[_0x31ef[19]](200)[_0x31ef[18]](_0xa654x2a)})[_0x31ef[17]](function(_0xa654x11){return handleError(_0xa654x10,_0xa654x11)})};exports[_0x31ef[91]]= function(_0xa654xf,_0xa654x10){var _0xa654x27;return Setting[_0x31ef[67]](1)[_0x31ef[20]](function(_0xa654x12){_0xa654x27= _0xa654x12;return VoiceMail[_0x31ef[21]]({attributes:[_0x31ef[92]]})})[_0x31ef[20]](function(_0xa654x2e){var _0xa654x2f=_[_0x31ef[82]](_0xa654x2e,function(_0xa654x2c){return Number(_0xa654x2c[_0x31ef[92]])});var _0xa654x30={value:0,range:0};var _0xa654x2b;var _0xa654x31=_[_0x31ef[89]](_0xa654x2f);_0xa654x30[_0x31ef[84]]= _0xa654x27[_0x31ef[93]];if(_0xa654x31&& _0xa654x31>= _0xa654x27[_0x31ef[93]]){while(_[_0x31ef[85]](_0xa654x2f,_0xa654x30[_0x31ef[84]])){_0xa654x30[_0x31ef[84]]++};_0xa654x2b= _[_0x31ef[87]](_0xa654x2f,function(_0xa654x2c){return _0xa654x2c> _0xa654x30[_0x31ef[84]]})[_0x31ef[86]]();_0xa654x30[_0x31ef[88]]= _0xa654x2b- _0xa654x30[_0x31ef[84]]};return _0xa654x10[_0x31ef[19]](200)[_0x31ef[18]](_0xa654x30)})[_0x31ef[17]](function(_0xa654x11){console[_0x31ef[23]](_0xa654x11);return handleError(_0xa654x10,_0xa654x11)})};exports[_0x31ef[94]]= function(_0xa654xf,_0xa654x10){var _0xa654x32=require(_0x31ef[95]);return _0xa654x10[_0x31ef[19]](200)[_0x31ef[18]]({name:_0xa654x32[_0x31ef[96]],version:_0xa654x32[_0x31ef[97]],engines:_0xa654x32[_0x31ef[98]]})};exports[_0x31ef[99]]= function(_0xa654xf,_0xa654x10){return Setting[_0x31ef[67]](_0xa654xf[_0x31ef[77]][_0x31ef[100]])[_0x31ef[20]](function(_0xa654x33){if(!_0xa654x33){return _0xa654x10[_0x31ef[65]](404)};return _0xa654x10[_0x31ef[18]](_0xa654x33)})[_0x31ef[17]](function(_0xa654x11){return handleError(_0xa654x10,_0xa654x11)})};exports[_0x31ef[101]]= function(_0xa654xf,_0xa654x10,_0xa654x34){return MailAccount[_0x31ef[111]]({where:{custom:true},include:[{model:MailServerOut,attributes:[_0x31ef[100],_0x31ef[103],_0x31ef[104],_0x31ef[105],_0x31ef[106],_0x31ef[107],_0x31ef[108],_0x31ef[109],_0x31ef[110]]}]})[_0x31ef[20]](function(_0xa654x35){console[_0x31ef[23]](_0x31ef[102],_0xa654x35);if(!_0xa654x35){return _0xa654x10[_0x31ef[65]](404)};return _0xa654x10[_0x31ef[18]](_0xa654x35)})[_0x31ef[17]](function(_0xa654x11){return handleError(_0xa654x10,_0xa654x11)})};exports[_0x31ef[112]]= function(_0xa654xf,_0xa654x10){return Setting[_0x31ef[112]](_0xa654xf[_0x31ef[30]])[_0x31ef[20]](function(_0xa654x33){return _0xa654x10[_0x31ef[19]](201)[_0x31ef[18]](_0xa654x33)})[_0x31ef[17]](function(_0xa654x11){return handleError(_0xa654x10,_0xa654x11)})};exports[_0x31ef[113]]= function(_0xa654xf,_0xa654x10,_0xa654x34){return MailAccount[_0x31ef[112]](_0xa654xf[_0x31ef[30]],{include:[{model:MailServerOut}]})[_0x31ef[20]](function(_0xa654x35){return _0xa654x10[_0x31ef[19]](201)[_0x31ef[18]](_0xa654x35)})[_0x31ef[17]](function(_0xa654x11){return handleError(_0xa654x10,_0xa654x11)})};exports[_0x31ef[114]]= function(_0xa654xf,_0xa654x10){var _0xa654x36;return MailAccount[_0x31ef[67]](_0xa654xf[_0x31ef[77]][_0x31ef[100]])[_0x31ef[20]](function(_0xa654x35){_0xa654x36= _0xa654x35;return _0xa654x36[_0x31ef[66]]({name:_0xa654xf[_0x31ef[30]][_0x31ef[96]],address:_0xa654xf[_0x31ef[30]][_0x31ef[116]],service:_0xa654xf[_0x31ef[30]][_0x31ef[117]],signature:_0xa654xf[_0x31ef[30]][_0x31ef[118]],ListId:_0xa654xf[_0x31ef[30]][_0x31ef[119]],TemplateId:_0xa654xf[_0x31ef[30]][_0x31ef[120]]})})[_0x31ef[20]](function(_0xa654x35){if(_0xa654xf[_0x31ef[30]][_0x31ef[8]]){_0xa654xf[_0x31ef[30]][_0x31ef[8]][_0x31ef[108]]= _0x31ef[115];_0xa654xf[_0x31ef[30]][_0x31ef[8]][_0x31ef[109]]= null;return MailServerOut[_0x31ef[66]](_0xa654xf[_0x31ef[30]].MailServerOut,{where:{id:_0xa654xf[_0x31ef[30]][_0x31ef[8]][_0x31ef[100]]},individualHooks:true})}})[_0x31ef[20]](function(_0xa654x37){return _0xa654x10[_0x31ef[65]](200)})[_0x31ef[17]](function(_0xa654x11){return handleError(_0xa654x10,_0xa654x11)})};exports[_0x31ef[66]]= function(_0xa654xf,_0xa654x10){if(_0xa654xf[_0x31ef[30]][_0x31ef[100]]){delete _0xa654xf[_0x31ef[30]][_0x31ef[100]]};return Setting[_0x31ef[67]](_0xa654xf[_0x31ef[77]][_0x31ef[100]])[_0x31ef[20]](function(_0xa654x33){if(!_0xa654x33){return _0xa654x10[_0x31ef[65]](404)};var _0xa654x38=_[_0x31ef[121]](_0xa654x33,_0xa654xf[_0x31ef[30]]);return _0xa654x38[_0x31ef[122]]()})[_0x31ef[20]](function(_0xa654x33){return _0xa654x10[_0x31ef[19]](200)[_0x31ef[18]](_0xa654x33)})[_0x31ef[17]](function(_0xa654x11){return handleError(_0xa654x10,_0xa654x11)})};exports[_0x31ef[123]]= function(_0xa654xf,_0xa654x10){return Setting[_0x31ef[67]](_0xa654xf[_0x31ef[77]][_0x31ef[100]])[_0x31ef[20]](function(_0xa654x33){if(!_0xa654x33){return _0xa654x10[_0x31ef[65]](404)};return _0xa654x33[_0x31ef[123]]()})[_0x31ef[20]](function(){return _0xa654x10[_0x31ef[65]](204)})[_0x31ef[17]](function(_0xa654x11){return handleError(_0xa654x10,_0xa654x11)})};function handleError(_0xa654x10,_0xa654x11){return _0xa654x10[_0x31ef[19]](500)[_0x31ef[18]](_0xa654x11)} \ No newline at end of file diff --git a/server/api/setting/setting.events.js b/server/api/setting/setting.events.js index 1aa184d..6b73490 100644 --- a/server/api/setting/setting.events.js +++ b/server/api/setting/setting.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const Setting = require('../../models').Setting; - -var SettingEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -SettingEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - Setting.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - SettingEvents.emit(event + ':' + doc._id, doc); - SettingEvents.emit(event, doc); - done(null); - } -} - -module.exports = SettingEvents; +var _0x3ec6=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x53\x65\x74\x74\x69\x6E\x67","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x3ec6[0];const EventEmitter=require(_0x3ec6[1]);const Setting=require(_0x3ec6[3])[_0x3ec6[2]];var SettingEvents= new EventEmitter();SettingEvents[_0x3ec6[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x3ec6[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x3ec6[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x3ec6[6]};for(var e in events){var event=events[e];Setting[_0x3ec6[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x6ffcx8,_0x6ffcx9,_0x6ffcxa){SettingEvents[_0x3ec6[10]](event+ _0x3ec6[8]+ _0x6ffcx8[_0x3ec6[9]],_0x6ffcx8);SettingEvents[_0x3ec6[10]](event,_0x6ffcx8);_0x6ffcxa(null)}}module[_0x3ec6[11]]= SettingEvents \ No newline at end of file diff --git a/server/api/setting/setting.socket.js b/server/api/setting/setting.socket.js index 6b71535..761ebea 100644 --- a/server/api/setting/setting.socket.js +++ b/server/api/setting/setting.socket.js @@ -1,32 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const SettingEvents = require('./setting.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('setting:' + event, socket); - - SettingEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - SettingEvents.removeListener(event, listener); - }; -} +var _0x1f81=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x73\x65\x74\x74\x69\x6E\x67\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x73\x65\x74\x74\x69\x6E\x67\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x1f81[0];const SettingEvents=require(_0x1f81[1]);var events=[_0x1f81[2],_0x1f81[3]];exports[_0x1f81[4]]= function(_0x5bb3x3){for(var _0x5bb3x4=0,_0x5bb3x5=events[_0x1f81[5]];_0x5bb3x4< _0x5bb3x5;_0x5bb3x4++){var _0x5bb3x6=events[_0x5bb3x4];var _0x5bb3x7=createListener(_0x1f81[6]+ _0x5bb3x6,_0x5bb3x3);SettingEvents[_0x1f81[7]](_0x5bb3x6,_0x5bb3x7);_0x5bb3x3[_0x1f81[7]](_0x1f81[8],removeListener(_0x5bb3x6,_0x5bb3x7))}};function createListener(_0x5bb3x6,_0x5bb3x3){return function(_0x5bb3x9){_0x5bb3x3[_0x1f81[9]](_0x5bb3x6,_0x5bb3x9)}}function removeListener(_0x5bb3x6,_0x5bb3x7){return function(){SettingEvents[_0x1f81[10]](_0x5bb3x6,_0x5bb3x7)}} \ No newline at end of file diff --git a/server/api/sms_account/index.js b/server/api/sms_account/index.js index 6870a09..7c7632b 100644 --- a/server/api/sms_account/index.js +++ b/server/api/sms_account/index.js @@ -1,31 +1 @@ -'use strict'; - -var express = require('express'); -var auth = require('../../auth/auth.service'); -var controller = require('./sms_account.controller'); -var license = require('../../config/license/license.service'); -var router = express.Router(); - -router.get('/', license.isValidDate(), license.hasSms(), auth.isAuthenticated(), auth.hasModule([11], ['admin', 'agent']), controller.index); -router.get('/:id', license.isValidDate(), license.hasSms(), auth.isAuthenticated(), auth.hasModule([11], ['admin']), controller.show); -router.get('/:id/applications', license.isValidDate(), license.hasSms(), auth.isAuthenticated(), auth.hasModule([11], ['admin']), controller.showApplications); -router.get('/:id/check', license.isValidDate(), license.hasSms(), auth.isAuthenticated(), auth.hasModule([11], ['admin']), controller.checkAccount); -router.get('/:id/rooms', license.isValidDate(), license.hasSms(), auth.isAuthenticated(), auth.hasModule([11], ['admin', 'agent']), controller.getSmsRooms); -router.get('/:id/dispositions', license.isValidDate(), license.hasSms(), auth.isAuthenticated(), auth.hasModule([11], ['admin', 'agent']), controller.getDispositions); -router.post('/', license.isValidDate(), license.hasSms(), auth.isAuthenticated(), auth.hasModule([11], ['admin']), controller.create); -router.post('/:id/dispositions', license.isValidDate(), license.hasSms(), auth.isAuthenticated(), auth.hasModule([11], ['admin']), controller.createDisposition); -router.post('/:id/applications', license.isValidDate(), license.hasSms(), auth.isAuthenticated(), auth.hasModule([11], ['admin']), controller.createApplication); -router.post('/:id/send', license.isValidDate(), license.hasSms(), auth.isAuthenticated(), auth.hasModule([11], ['admin', 'agent']), controller.sendMessage); -router.post('/:id/receive', license.isValidDate(), license.hasSms(), controller.receiveMessage); -router.post('/:id/message/:msgId/update', license.isValidDate(), license.hasSms(), controller.updateStatus); -router.post('/:id/messageStatus', license.isValidDate(), license.hasSms(), controller.messageStatus); -router.put('/:id', license.isValidDate(), license.hasSms(), auth.isAuthenticated(), auth.hasModule([11], ['admin']), controller.update); -router.put('/:id/applications', license.isValidDate(), license.hasSms(), auth.isAuthenticated(), auth.hasModule([11], ['admin']), controller.updateApplications); -router.put('/:id/applications/:appId', license.isValidDate(), license.hasSms(), auth.isAuthenticated(), auth.hasModule([11], ['admin']), controller.updateApplication); -router.put('/:id/dispositions/:dispId', license.isValidDate(), license.hasSms(), auth.isAuthenticated(), auth.hasModule([11], ['admin']), controller.updateDisposition); -router.delete('/:id', license.isValidDate(), license.hasSms(), auth.isAuthenticated(), auth.hasModule([11], ['admin']), controller.destroy); -router.delete('/:id/applications', license.isValidDate(), license.hasSms(), auth.isAuthenticated(), auth.hasModule([11], ['admin']), controller.bulkDestroyApplications); -router.delete('/:id/applications/:appId', license.isValidDate(), license.hasSms(), auth.isAuthenticated(), auth.hasModule([11], ['admin']), controller.destroyApplication); -router.delete('/:id/dispositions/:dispId', license.isValidDate(), license.hasSms(), auth.isAuthenticated(), auth.hasModule([11], ['admin']), controller.destroyDisposition); - -module.exports = router; +var _0x82df=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x73\x6D\x73\x5F\x61\x63\x63\x6F\x75\x6E\x74\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x68\x61\x73\x53\x6D\x73","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x2F\x3A\x69\x64\x2F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x73\x68\x6F\x77\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x2F\x3A\x69\x64\x2F\x63\x68\x65\x63\x6B","\x63\x68\x65\x63\x6B\x41\x63\x63\x6F\x75\x6E\x74","\x2F\x3A\x69\x64\x2F\x72\x6F\x6F\x6D\x73","\x67\x65\x74\x53\x6D\x73\x52\x6F\x6F\x6D\x73","\x2F\x3A\x69\x64\x2F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x73","\x67\x65\x74\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x73","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x63\x72\x65\x61\x74\x65\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x63\x72\x65\x61\x74\x65\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x2F\x3A\x69\x64\x2F\x73\x65\x6E\x64","\x73\x65\x6E\x64\x4D\x65\x73\x73\x61\x67\x65","\x2F\x3A\x69\x64\x2F\x72\x65\x63\x65\x69\x76\x65","\x72\x65\x63\x65\x69\x76\x65\x4D\x65\x73\x73\x61\x67\x65","\x2F\x3A\x69\x64\x2F\x6D\x65\x73\x73\x61\x67\x65\x2F\x3A\x6D\x73\x67\x49\x64\x2F\x75\x70\x64\x61\x74\x65","\x75\x70\x64\x61\x74\x65\x53\x74\x61\x74\x75\x73","\x2F\x3A\x69\x64\x2F\x6D\x65\x73\x73\x61\x67\x65\x53\x74\x61\x74\x75\x73","\x6D\x65\x73\x73\x61\x67\x65\x53\x74\x61\x74\x75\x73","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x75\x70\x64\x61\x74\x65\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x2F\x3A\x69\x64\x2F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73\x2F\x3A\x61\x70\x70\x49\x64","\x75\x70\x64\x61\x74\x65\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x2F\x3A\x69\x64\x2F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x73\x2F\x3A\x64\x69\x73\x70\x49\x64","\x75\x70\x64\x61\x74\x65\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x64\x65\x73\x74\x72\x6F\x79\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x64\x65\x73\x74\x72\x6F\x79\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x65\x78\x70\x6F\x72\x74\x73"];_0x82df[0];var express=require(_0x82df[1]);var auth=require(_0x82df[2]);var controller=require(_0x82df[3]);var license=require(_0x82df[4]);var router=express.Router();router[_0x82df[13]](_0x82df[5],license[_0x82df[6]](),license[_0x82df[7]](),auth[_0x82df[8]](),auth[_0x82df[11]]([11],[_0x82df[9],_0x82df[10]]),controller[_0x82df[12]]);router[_0x82df[13]](_0x82df[14],license[_0x82df[6]](),license[_0x82df[7]](),auth[_0x82df[8]](),auth[_0x82df[11]]([11],[_0x82df[9]]),controller[_0x82df[15]]);router[_0x82df[13]](_0x82df[16],license[_0x82df[6]](),license[_0x82df[7]](),auth[_0x82df[8]](),auth[_0x82df[11]]([11],[_0x82df[9]]),controller[_0x82df[17]]);router[_0x82df[13]](_0x82df[18],license[_0x82df[6]](),license[_0x82df[7]](),auth[_0x82df[8]](),auth[_0x82df[11]]([11],[_0x82df[9]]),controller[_0x82df[19]]);router[_0x82df[13]](_0x82df[20],license[_0x82df[6]](),license[_0x82df[7]](),auth[_0x82df[8]](),auth[_0x82df[11]]([11],[_0x82df[9],_0x82df[10]]),controller[_0x82df[21]]);router[_0x82df[13]](_0x82df[22],license[_0x82df[6]](),license[_0x82df[7]](),auth[_0x82df[8]](),auth[_0x82df[11]]([11],[_0x82df[9],_0x82df[10]]),controller[_0x82df[23]]);router[_0x82df[25]](_0x82df[5],license[_0x82df[6]](),license[_0x82df[7]](),auth[_0x82df[8]](),auth[_0x82df[11]]([11],[_0x82df[9]]),controller[_0x82df[24]]);router[_0x82df[25]](_0x82df[22],license[_0x82df[6]](),license[_0x82df[7]](),auth[_0x82df[8]](),auth[_0x82df[11]]([11],[_0x82df[9]]),controller[_0x82df[26]]);router[_0x82df[25]](_0x82df[16],license[_0x82df[6]](),license[_0x82df[7]](),auth[_0x82df[8]](),auth[_0x82df[11]]([11],[_0x82df[9]]),controller[_0x82df[27]]);router[_0x82df[25]](_0x82df[28],license[_0x82df[6]](),license[_0x82df[7]](),auth[_0x82df[8]](),auth[_0x82df[11]]([11],[_0x82df[9],_0x82df[10]]),controller[_0x82df[29]]);router[_0x82df[25]](_0x82df[30],license[_0x82df[6]](),license[_0x82df[7]](),controller[_0x82df[31]]);router[_0x82df[25]](_0x82df[32],license[_0x82df[6]](),license[_0x82df[7]](),controller[_0x82df[33]]);router[_0x82df[25]](_0x82df[34],license[_0x82df[6]](),license[_0x82df[7]](),controller[_0x82df[35]]);router[_0x82df[37]](_0x82df[14],license[_0x82df[6]](),license[_0x82df[7]](),auth[_0x82df[8]](),auth[_0x82df[11]]([11],[_0x82df[9]]),controller[_0x82df[36]]);router[_0x82df[37]](_0x82df[16],license[_0x82df[6]](),license[_0x82df[7]](),auth[_0x82df[8]](),auth[_0x82df[11]]([11],[_0x82df[9]]),controller[_0x82df[38]]);router[_0x82df[37]](_0x82df[39],license[_0x82df[6]](),license[_0x82df[7]](),auth[_0x82df[8]](),auth[_0x82df[11]]([11],[_0x82df[9]]),controller[_0x82df[40]]);router[_0x82df[37]](_0x82df[41],license[_0x82df[6]](),license[_0x82df[7]](),auth[_0x82df[8]](),auth[_0x82df[11]]([11],[_0x82df[9]]),controller[_0x82df[42]]);router[_0x82df[44]](_0x82df[14],license[_0x82df[6]](),license[_0x82df[7]](),auth[_0x82df[8]](),auth[_0x82df[11]]([11],[_0x82df[9]]),controller[_0x82df[43]]);router[_0x82df[44]](_0x82df[16],license[_0x82df[6]](),license[_0x82df[7]](),auth[_0x82df[8]](),auth[_0x82df[11]]([11],[_0x82df[9]]),controller[_0x82df[45]]);router[_0x82df[44]](_0x82df[39],license[_0x82df[6]](),license[_0x82df[7]](),auth[_0x82df[8]](),auth[_0x82df[11]]([11],[_0x82df[9]]),controller[_0x82df[46]]);router[_0x82df[44]](_0x82df[41],license[_0x82df[6]](),license[_0x82df[7]](),auth[_0x82df[8]](),auth[_0x82df[11]]([11],[_0x82df[9]]),controller[_0x82df[47]]);module[_0x82df[48]]= router \ No newline at end of file diff --git a/server/api/sms_account/sms_account.controller.js b/server/api/sms_account/sms_account.controller.js index 78cb631..b2b7ad8 100644 --- a/server/api/sms_account/sms_account.controller.js +++ b/server/api/sms_account/sms_account.controller.js @@ -1,678 +1 @@ -/** - * Using Rails-like standard naming convention for endpoints. - * GET /api/sms_accounts -> index - * POST /api/sms_accounts -> create - * GET /api/sms_accounts/:id -> show - * PUT /api/sms_accounts/:id -> update - * DELETE /api/sms_accounts/:id -> destroy - */ - -'use strict'; - - -var _ = require('lodash'); -var Util = require('../../config/util'); -var skebby = require('../../config/sms/skebby'); -var sequelize = require('../../models').sequelize; -var User = require('../../models').User; -var SmsAccount = require('../../models').SmsAccount; -var SmsQueue = require('../../models').SmsQueue; -var SmsApplication = require('../../models').SmsApplication; -var SmsMessage = require('../../models').SmsMessage; -var SmsRoom = require('../../models').SmsRoom; -var SmsDisposition = require('../../models').SmsDisposition; -var Contact = require('../../models').Contact; -var Interval = require('../../models').Interval; -var Promise = require('bluebird'); -var moment = require('moment'); - - - -function handleError(res, err) { - return res.status(500).send(err); -} - -// Gets a list of SmsAccounts -exports.index = function(req, res) { - return SmsAccount - .findAndCountAll(Util.getQuery(req.query)) - .then(function(sms_account) { - res.status(200).send(sms_account); - }) - .catch(function(err) { - return handleError(res, err); - }); - -} - -// Gets a single SmsAccount from the DB -exports.show = function(req, res) { - return SmsAccount - .findById(req.params.id) - .then(function(smsAccount) { - if (!smsAccount) { - return res.sendStatus(404); - } - return res.send(smsAccount); - }) - .catch(function(err) { - return handleError(res, err); - }); -} -exports.checkAccount = function(req, res) { - return SmsAccount - .findById(req.params.id) - .then(function(smsAccount) { - if (!smsAccount) { - return res.sendStatus(404); - } - switch (smsAccount.type) { - case 'twilio': - var client = require('twilio')(smsAccount.sid, smsAccount.token); - var getList = Promise.promisify(client.accounts.list); - return getList(); - break; - case 'skebby': - var _mMessage = { - from: 'Test', - to: 'Test', - body: 'Test' - }; - smsAccount.smstype = 'test'; - return skebby.sendMessage(_mMessage, smsAccount) - break; - default: - throw new Error('There is no authentication for this account'); - - } - }) - .then(function(response) { - return res.sendStatus(200); - }) - .catch(function(err) { - return handleError(res, err); - }); -} -exports.getDispositions = function(req, res, next) { - return SmsAccount - .findById(req.params.id) - .then(function(smsAccount) { - if (!smsAccount) { - return res.sendStatus(404); - } - - return smsAccount - .getSmsDispositions(); - }) - .then(function(smsDispositions) { - return res.status(200).send({ - rows: smsDispositions, - count: smsDispositions.length - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; -// Get Applications -exports.showApplications = function(req, res, next) { - return SmsAccount - .scope('default') - .findById(req.params.id) - .then(function(smsAccount) { - if (!smsAccount) { - return res.sendStatus(404); - } - return smsAccount - .getSmsApplications(_.merge(Util.getQuery(req.query), { - include: [{ - model: SmsQueue, - attributes: ['id', 'name'] - }, { - model: User, - attributes: ['id', 'name', 'online'] - }, { - model: Interval, - attributes: ['id', 'name'] - }] - })); - }) - .then(function(smsApplications) { - return res.send({ - count: smsApplications.length, - rows: smsApplications - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; -// Creates a new SmsAccount in the DB -exports.create = function(req, res) { - return SmsAccount - .create(req.body) - .then(function(smsAccount) { - console.log(smsAccount); - return res.status(201).send(smsAccount); - }) - .catch(sequelize.UniqueConstraintError, function(err) { - return Util.errorManager.handleUniqueConstraintError(res, err); - }) - .catch(function(err) { - return handleError(res, err); - }); - -} - -exports.createDisposition = function(req, res, next) { - req.body.SmsAccountId = req.params.id; - - return SmsDisposition - .create(req.body) - .then(function(smsDiposition) { - return res.status(201).send(smsDiposition); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Creates a send Message in the DB. -exports.sendMessage = function(req, res, next) { - req.body.SmsAccountId = req.params.id; - req.body.UserId = req.user.id; - - return SmsMessage - .create(req.body, { - user: req.user - }) - .then(function(sms_message) { - return res.status(201).send(sms_message); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; -// Creates a receive Message in the DB. -function getMessage(message) { - var _message; - console.log(message); - switch (message.accountType) { - case 'twilio': - if (message.From && message.To && message.Body) { - _message = { - from: message.From, - to: message.To, - body: message.Body - }; - } - break; - case 'skebby': - if ((message.sender && message.receiver && message.text)) { - _message = { - from: message.sender, - to: message.receiver, - body: message.text - }; - } - break; - default: - } - return _message; -} - -exports.receiveMessage = function(req, res, next) { - var _message; - var _account; - - return SmsAccount - .findById(req.params.id) - .then(function(smsAccount) { - if (!smsAccount) { - throw new Error('SMS account not found'); - } - _account = smsAccount; - req.body.accountType = _account.type; - - _message = getMessage(req.body); - if (!_message) { - throw new Error('SMS message format is not known'); - } - // console.log(_message); - if (_account.ListId) { - return Contact - .findOrCreate({ - where: { - ListId: _account.ListId, - mobile: _message.from - }, - defaults: { - ListId: _account.ListId, - mobile: _message.from - } - }); - } else { - return []; - } - - }) - .then(function(contact) { - return SmsRoom - .findAll({ - limit: 1, - where: { - contact: _message.from, - SmsAccountId: _account.id - }, - order: [ - ['createdAt', 'DESC'] - ] - }) - }) - .then(function(smsroom) { - var room = smsroom[0]; - if (!room || room.status === 'CLOSED') { - var parentID = room ? room.id : null; - return SmsRoom - .create({ - contact: _message.from, - SmsAccountId: _account.id, - status: 'NEW', - ParentId: parentID, - lastEvent: 'RECEIVED', - lastEventAt: moment().format('YYYY-MM-DD HH:mm:ss'), - smsIn: 1 - }) - } else { - return room - .updateAttributes({ - status: 'OPEN', - openReason: 'system', - lastEvent: 'RECEIVED', - lastEventAt: moment().format('YYYY-MM-DD HH:mm:ss'), - smsIn: ++room.smsIn - }); - } - }) - .then(function(room) { - // console.log(room); - _message.SmsAccountId = _account.id; - _message.SmsRoomId = room.id; - _message.status = 'RECEIVED'; - - return SmsMessage - .create(_message) - }) - .then(function(smsMessage) { - return res.status(201).send(smsMessage); - }) - .catch(function(err) { - console.error(err); - return handleError(res, err); - }); -}; -// Updates an existing SmsAccount in the DB -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - return SmsAccount.findById(req.params.id) - .then(function(smsAccount) { - if (!smsAccount) { - return res.sendStatus(404); - } - - var updated = _.merge(smsAccount, req.body); - return updated - .save(); - }) - .then(function(smsAccount) { - return res.status(200).send(smsAccount); - }) - .catch(sequelize.UniqueConstraintError, function(err) { - return Util.errorManager.handleUniqueConstraintError(res, err); - }) - .catch(function(err) { - console.log(' err', err); - return handleError(res, err); - }); - -} - -exports.updateDisposition = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - - return SmsDisposition - .findById(req.params.dispId) - .then(function(smsDisposition) { - if (!smsDisposition) { - return res.sendStatus(404); - } - var updated = _.merge(smsDisposition, req.body); - return updated - .save(); - }) - .then(function(mailAccount) { - return res.status(200).send(mailAccount); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; -// Updates message status in the DB for TWILIO account -exports.updateStatus = function(req, res) { - - return SmsMessage - .findById(req.params.msgId) - .then(function(smsMessage) { - if (!smsMessage) { - return res.sendStatus(404); - } - var updated = _.merge(smsMessage, { - status: _.toUpper(req.body.MessageStatus), - errorcode: req.body.ErrorCode - }); - return updated - .save(); - }) - .then(function(smsMessage) { - return res.status(200).send(smsMessage); - }) - .catch(function(err) { - return handleError(res, err); - }); - -} - -exports.messageStatus = function(req, res) { - - return SmsMessage - .findOne({ - where: { - skebby_message_id: req.body.skebby_dispatch_id - } - }) - .then(function(smsMessage) { - if (!smsMessage) { - return res.sendStatus(404); - } - var updated = _.merge(smsMessage, { - status: req.body.status, - errorcode: req.body.error_code - }); - return updated - .save(); - }) - .then(function(smsMessage) { - return res.status(200).send(smsMessage); - }) - .catch(function(err) { - return handleError(res, err); - }); - - } - // Updates aapplications -exports.updateApplications = function(req, res) { - - var priority = 0; - var apps = req.body; - - apps.forEach(function(app) { - delete app.id; - delete app.createdAt; - delete app.updatedAt; - - app.priority = ++priority; - }); - - return sequelize.transaction(function(t) { - return SmsApplication - .destroy({ - where: { - SmsAccountId: req.params.id - }, - individualHooks: true, - transaction: t - }).then(function(smsApplication) { - return SmsApplication - .bulkCreate(apps, { - individualHooks: true, - transaction: t - }); - }); - }).then(function(smsAccounts) { - return res.status(200).send({ - count: smsAccounts.length, - rows: smsAccounts - }); - }).catch(function(err) { - return handleError(res, err); - }); -}; -// Deletes a SmsAccount from the DB -exports.destroy = function(req, res) { - return SmsAccount.findById(req.params.id) - .then(function(smsAccount) { - if (!smsAccount) { - return res.sendStatus(404); - } - - return smsAccount - .destroy(); - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -} -exports.destroyApplication = function(req, res, next) { - return SmsApplication - .findById(req.params.appId) - .then(function(smsApplication) { - if (!smsApplication) { - return res.sendStatus(404); - } - - return smsApplication - .destroy(); - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.destroyDisposition = function(req, res, next) { - return SmsDisposition - .findById(req.params.dispId) - .then(function(smsDiposition) { - if (!smsDiposition) { - return res.sendStatus(404); - } - return smsDiposition - .destroy(); - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.bulkDestroyApplications = function(req, res) { - return SmsApplication - .destroy({ - where: { - id: req.query.ids - }, - individualHooks: true - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - - -exports.getSmsRooms = function(req, res, next) { - var _query = { - where: { - SmsAccountId: req.params.id, - $and: [] - }, - attributes: ['id', 'contact', 'updatedAt', 'tags', 'disposition', 'voiceSource', 'lastEvent'], - include: [] - }; - - // TO MOVE SOON INTO AN EXTENAL UTIL FILE - if (req.query) { - if (req.query.tags) { - if (_.isArray(req.query.tags)) { - for (var i = 0; i < req.query.tags.length; i++) { - _query.where.$and.push({ - tags: { - $like: '%' + req.query.tags[i] + '%' - } - }); - } - } else { - _query.where.$and.push({ - tags: { - $like: '%' + req.query.tags + '%' - } - }); - } - - delete req.query.tags; - } - - _.merge(_query.where, req.query); - } - - switch (req.user.role) { - case 'agent': - _query.include.push({ - model: User, - attributes: ['id'] - }); - var _agents; - var _agentQueues; - var _accountQueues; - - return User - .findById(req.user.id) - .then(function(user) { - if (user) { - return user - .getSmsQueues(); - } else { - return []; - } - }) - .then(function(queues) { - _agentQueues = _.map(queues, 'id'); - return SmsAccount - .findById(req.params.id); - }) - .then(function(account) { - return account - .getSmsApplications({ - where: { - $or: [{ - app: 'queue' - }, { - app: 'agent' - }] - } - }); - }) - .then(function(apps) { - _agents = _.map(_.find(apps, { - 'app': 'agent' - }), 'UserId'); - _accountQueues = _.map(_.find(apps, { - 'app': 'queue' - }), 'SmsQueueId'); - // _accountQueues = _.map(queues, 'SmsQueueId'); - if (_.intersection(_agentQueues, _accountQueues).length || _.intersection(_agents, [req.user.id]).length) { - return SmsRoom - .findAll(_query) - .then(function(smsRooms) { - return res.status(200).send(smsRooms); - }) - .catch(function(err) { - console.error(err); - return handleError(res, err); - }); - } else { - return res.status(200).send([]); - } - }) - .catch(function(err) { - console.error(err); - }); - - default: - - return SmsRoom - .findAll(_query) - .then(function(smsRooms) { - return res.status(200).send(smsRooms); - }) - .catch(function(err) { - return handleError(res, err); - }); - } -}; - -exports.createApplication = function(req, res, next) { - - return SmsApplication - .max('priority', { - where: { - SmsAccountId: req.params.id - } - }).then(function(max) { - // SET PRIORITY - req.body.priority = max ? ++max : 1; - req.body.SmsAccountId = req.params.id; - - return SmsApplication.create(req.body); - }) - .then(function(smsApplication) { - return res.status(201).send(smsApplication); - }) - .catch(function(err) { - console.log('err', err); - return handleError(res, err); - }); -}; - -exports.updateApplication = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - return SmsApplication.findById(req.params.appId) - .then(function(smsApplication) { - if (!smsApplication) { - return res.sendStatus(404); - } - var updated = _.merge(smsApplication, req.body); - return updated.save(); - }) - .then(function(smsApplication) { - return res.status(200).send(smsApplication); - }) - .catch(function(err) { - return handleError(res, err); - }); -} +var _0x8604=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x73\x6D\x73\x2F\x73\x6B\x65\x62\x62\x79","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x55\x73\x65\x72","\x53\x6D\x73\x41\x63\x63\x6F\x75\x6E\x74","\x53\x6D\x73\x51\x75\x65\x75\x65","\x53\x6D\x73\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x53\x6D\x73\x4D\x65\x73\x73\x61\x67\x65","\x53\x6D\x73\x52\x6F\x6F\x6D","\x53\x6D\x73\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x43\x6F\x6E\x74\x61\x63\x74","\x49\x6E\x74\x65\x72\x76\x61\x6C","\x62\x6C\x75\x65\x62\x69\x72\x64","\x6D\x6F\x6D\x65\x6E\x74","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x68\x65\x63\x6B\x41\x63\x63\x6F\x75\x6E\x74","\x73\x69\x64","\x74\x6F\x6B\x65\x6E","\x74\x77\x69\x6C\x69\x6F","\x6C\x69\x73\x74","\x61\x63\x63\x6F\x75\x6E\x74\x73","\x70\x72\x6F\x6D\x69\x73\x69\x66\x79","\x54\x65\x73\x74","\x73\x6D\x73\x74\x79\x70\x65","\x74\x65\x73\x74","\x73\x65\x6E\x64\x4D\x65\x73\x73\x61\x67\x65","\x73\x6B\x65\x62\x62\x79","\x54\x68\x65\x72\x65\x20\x69\x73\x20\x6E\x6F\x20\x61\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x69\x6F\x6E\x20\x66\x6F\x72\x20\x74\x68\x69\x73\x20\x61\x63\x63\x6F\x75\x6E\x74","\x74\x79\x70\x65","\x67\x65\x74\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x73","\x6C\x65\x6E\x67\x74\x68","\x67\x65\x74\x53\x6D\x73\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x73","\x73\x68\x6F\x77\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x6E\x61\x6D\x65","\x6F\x6E\x6C\x69\x6E\x65","\x6D\x65\x72\x67\x65","\x67\x65\x74\x53\x6D\x73\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x64\x65\x66\x61\x75\x6C\x74","\x73\x63\x6F\x70\x65","\x63\x72\x65\x61\x74\x65","\x68\x61\x6E\x64\x6C\x65\x55\x6E\x69\x71\x75\x65\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74\x45\x72\x72\x6F\x72","\x65\x72\x72\x6F\x72\x4D\x61\x6E\x61\x67\x65\x72","\x6C\x6F\x67","\x62\x6F\x64\x79","\x63\x72\x65\x61\x74\x65\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x53\x6D\x73\x41\x63\x63\x6F\x75\x6E\x74\x49\x64","\x55\x73\x65\x72\x49\x64","\x75\x73\x65\x72","\x46\x72\x6F\x6D","\x54\x6F","\x42\x6F\x64\x79","\x73\x65\x6E\x64\x65\x72","\x72\x65\x63\x65\x69\x76\x65\x72","\x74\x65\x78\x74","\x61\x63\x63\x6F\x75\x6E\x74\x54\x79\x70\x65","\x72\x65\x63\x65\x69\x76\x65\x4D\x65\x73\x73\x61\x67\x65","\x65\x72\x72\x6F\x72","\x53\x6D\x73\x52\x6F\x6F\x6D\x49\x64","\x52\x45\x43\x45\x49\x56\x45\x44","\x43\x4C\x4F\x53\x45\x44","\x66\x72\x6F\x6D","\x4E\x45\x57","\x59\x59\x59\x59\x2D\x4D\x4D\x2D\x44\x44\x20\x48\x48\x3A\x6D\x6D\x3A\x73\x73","\x66\x6F\x72\x6D\x61\x74","\x4F\x50\x45\x4E","\x73\x79\x73\x74\x65\x6D","\x73\x6D\x73\x49\x6E","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x63\x72\x65\x61\x74\x65\x64\x41\x74","\x44\x45\x53\x43","\x66\x69\x6E\x64\x41\x6C\x6C","\x53\x4D\x53\x20\x61\x63\x63\x6F\x75\x6E\x74\x20\x6E\x6F\x74\x20\x66\x6F\x75\x6E\x64","\x53\x4D\x53\x20\x6D\x65\x73\x73\x61\x67\x65\x20\x66\x6F\x72\x6D\x61\x74\x20\x69\x73\x20\x6E\x6F\x74\x20\x6B\x6E\x6F\x77\x6E","\x4C\x69\x73\x74\x49\x64","\x66\x69\x6E\x64\x4F\x72\x43\x72\x65\x61\x74\x65","\x75\x70\x64\x61\x74\x65","\x20\x20\x20\x65\x72\x72","\x73\x61\x76\x65","\x75\x70\x64\x61\x74\x65\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x64\x69\x73\x70\x49\x64","\x75\x70\x64\x61\x74\x65\x53\x74\x61\x74\x75\x73","\x74\x6F\x55\x70\x70\x65\x72","\x45\x72\x72\x6F\x72\x43\x6F\x64\x65","\x6D\x73\x67\x49\x64","\x6D\x65\x73\x73\x61\x67\x65\x53\x74\x61\x74\x75\x73","\x65\x72\x72\x6F\x72\x5F\x63\x6F\x64\x65","\x73\x6B\x65\x62\x62\x79\x5F\x64\x69\x73\x70\x61\x74\x63\x68\x5F\x69\x64","\x66\x69\x6E\x64\x4F\x6E\x65","\x75\x70\x64\x61\x74\x65\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x75\x70\x64\x61\x74\x65\x64\x41\x74","\x70\x72\x69\x6F\x72\x69\x74\x79","\x66\x6F\x72\x45\x61\x63\x68","\x62\x75\x6C\x6B\x43\x72\x65\x61\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x74\x72\x61\x6E\x73\x61\x63\x74\x69\x6F\x6E","\x64\x65\x73\x74\x72\x6F\x79\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x61\x70\x70\x49\x64","\x64\x65\x73\x74\x72\x6F\x79\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x69\x64\x73","\x67\x65\x74\x53\x6D\x73\x52\x6F\x6F\x6D\x73","\x63\x6F\x6E\x74\x61\x63\x74","\x74\x61\x67\x73","\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x76\x6F\x69\x63\x65\x53\x6F\x75\x72\x63\x65","\x6C\x61\x73\x74\x45\x76\x65\x6E\x74","\x69\x73\x41\x72\x72\x61\x79","\x25","\x70\x75\x73\x68","\x24\x61\x6E\x64","\x77\x68\x65\x72\x65","\x69\x6E\x63\x6C\x75\x64\x65","\x61\x67\x65\x6E\x74","\x66\x69\x6E\x64","\x6D\x61\x70","\x71\x75\x65\x75\x65","\x53\x6D\x73\x51\x75\x65\x75\x65\x49\x64","\x69\x6E\x74\x65\x72\x73\x65\x63\x74\x69\x6F\x6E","\x67\x65\x74\x53\x6D\x73\x51\x75\x65\x75\x65\x73","\x72\x6F\x6C\x65","\x63\x72\x65\x61\x74\x65\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x65\x72\x72","\x6D\x61\x78","\x75\x70\x64\x61\x74\x65\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E"];_0x8604[0];var _=require(_0x8604[1]);var Util=require(_0x8604[2]);var skebby=require(_0x8604[3]);var sequelize=require(_0x8604[5])[_0x8604[4]];var User=require(_0x8604[5])[_0x8604[6]];var SmsAccount=require(_0x8604[5])[_0x8604[7]];var SmsQueue=require(_0x8604[5])[_0x8604[8]];var SmsApplication=require(_0x8604[5])[_0x8604[9]];var SmsMessage=require(_0x8604[5])[_0x8604[10]];var SmsRoom=require(_0x8604[5])[_0x8604[11]];var SmsDisposition=require(_0x8604[5])[_0x8604[12]];var Contact=require(_0x8604[5])[_0x8604[13]];var Interval=require(_0x8604[5])[_0x8604[14]];var Promise=require(_0x8604[15]);var moment=require(_0x8604[16]);function handleError(_0x1670x11,_0x1670x12){return _0x1670x11[_0x8604[18]](500)[_0x8604[17]](_0x1670x12)}exports[_0x8604[19]]= function(_0x1670x13,_0x1670x11){return SmsAccount[_0x8604[24]](Util[_0x8604[23]](_0x1670x13[_0x8604[22]]))[_0x8604[21]](function(_0x1670x14){_0x1670x11[_0x8604[18]](200)[_0x8604[17]](_0x1670x14)})[_0x8604[20]](function(_0x1670x12){return handleError(_0x1670x11,_0x1670x12)})};exports[_0x8604[25]]= function(_0x1670x13,_0x1670x11){return SmsAccount[_0x8604[29]](_0x1670x13[_0x8604[28]][_0x8604[27]])[_0x8604[21]](function(_0x1670x15){if(!_0x1670x15){return _0x1670x11[_0x8604[26]](404)};return _0x1670x11[_0x8604[17]](_0x1670x15)})[_0x8604[20]](function(_0x1670x12){return handleError(_0x1670x11,_0x1670x12)})};exports[_0x8604[30]]= function(_0x1670x13,_0x1670x11){return SmsAccount[_0x8604[29]](_0x1670x13[_0x8604[28]][_0x8604[27]])[_0x8604[21]](function(_0x1670x15){if(!_0x1670x15){return _0x1670x11[_0x8604[26]](404)};switch(_0x1670x15[_0x8604[43]]){case _0x8604[33]:var _0x1670x17=require(_0x8604[33])(_0x1670x15[_0x8604[31]],_0x1670x15[_0x8604[32]]);var _0x1670x18=Promise[_0x8604[36]](_0x1670x17[_0x8604[35]][_0x8604[34]]);return _0x1670x18();break;case _0x8604[41]:var _0x1670x19={from:_0x8604[37],to:_0x8604[37],body:_0x8604[37]};_0x1670x15[_0x8604[38]]= _0x8604[39];return skebby[_0x8604[40]](_0x1670x19,_0x1670x15);break;default:throw new Error(_0x8604[42])}})[_0x8604[21]](function(_0x1670x16){return _0x1670x11[_0x8604[26]](200)})[_0x8604[20]](function(_0x1670x12){return handleError(_0x1670x11,_0x1670x12)})};exports[_0x8604[44]]= function(_0x1670x13,_0x1670x11,_0x1670x1a){return SmsAccount[_0x8604[29]](_0x1670x13[_0x8604[28]][_0x8604[27]])[_0x8604[21]](function(_0x1670x15){if(!_0x1670x15){return _0x1670x11[_0x8604[26]](404)};return _0x1670x15[_0x8604[46]]()})[_0x8604[21]](function(_0x1670x1b){return _0x1670x11[_0x8604[18]](200)[_0x8604[17]]({rows:_0x1670x1b,count:_0x1670x1b[_0x8604[45]]})})[_0x8604[20]](function(_0x1670x12){return handleError(_0x1670x11,_0x1670x12)})};exports[_0x8604[47]]= function(_0x1670x13,_0x1670x11,_0x1670x1a){return SmsAccount[_0x8604[53]](_0x8604[52])[_0x8604[29]](_0x1670x13[_0x8604[28]][_0x8604[27]])[_0x8604[21]](function(_0x1670x15){if(!_0x1670x15){return _0x1670x11[_0x8604[26]](404)};return _0x1670x15[_0x8604[51]](_[_0x8604[50]](Util[_0x8604[23]](_0x1670x13[_0x8604[22]]),{include:[{model:SmsQueue,attributes:[_0x8604[27],_0x8604[48]]},{model:User,attributes:[_0x8604[27],_0x8604[48],_0x8604[49]]},{model:Interval,attributes:[_0x8604[27],_0x8604[48]]}]}))})[_0x8604[21]](function(_0x1670x1c){return _0x1670x11[_0x8604[17]]({count:_0x1670x1c[_0x8604[45]],rows:_0x1670x1c})})[_0x8604[20]](function(_0x1670x12){return handleError(_0x1670x11,_0x1670x12)})};exports[_0x8604[54]]= function(_0x1670x13,_0x1670x11){return SmsAccount[_0x8604[54]](_0x1670x13[_0x8604[58]])[_0x8604[21]](function(_0x1670x15){console[_0x8604[57]](_0x1670x15);return _0x1670x11[_0x8604[18]](201)[_0x8604[17]](_0x1670x15)})[_0x8604[20]](sequelize.UniqueConstraintError,function(_0x1670x12){return Util[_0x8604[56]][_0x8604[55]](_0x1670x11,_0x1670x12)})[_0x8604[20]](function(_0x1670x12){return handleError(_0x1670x11,_0x1670x12)})};exports[_0x8604[59]]= function(_0x1670x13,_0x1670x11,_0x1670x1a){_0x1670x13[_0x8604[58]][_0x8604[60]]= _0x1670x13[_0x8604[28]][_0x8604[27]];return SmsDisposition[_0x8604[54]](_0x1670x13[_0x8604[58]])[_0x8604[21]](function(_0x1670x1d){return _0x1670x11[_0x8604[18]](201)[_0x8604[17]](_0x1670x1d)})[_0x8604[20]](function(_0x1670x12){return handleError(_0x1670x11,_0x1670x12)})};exports[_0x8604[40]]= function(_0x1670x13,_0x1670x11,_0x1670x1a){_0x1670x13[_0x8604[58]][_0x8604[60]]= _0x1670x13[_0x8604[28]][_0x8604[27]];_0x1670x13[_0x8604[58]][_0x8604[61]]= _0x1670x13[_0x8604[62]][_0x8604[27]];return SmsMessage[_0x8604[54]](_0x1670x13[_0x8604[58]],{user:_0x1670x13[_0x8604[62]]})[_0x8604[21]](function(_0x1670x1e){return _0x1670x11[_0x8604[18]](201)[_0x8604[17]](_0x1670x1e)})[_0x8604[20]](function(_0x1670x12){return handleError(_0x1670x11,_0x1670x12)})};function getMessage(_0x1670x20){var _0x1670x21;console[_0x8604[57]](_0x1670x20);switch(_0x1670x20[_0x8604[69]]){case _0x8604[33]:if(_0x1670x20[_0x8604[63]]&& _0x1670x20[_0x8604[64]]&& _0x1670x20[_0x8604[65]]){_0x1670x21= {from:_0x1670x20[_0x8604[63]],to:_0x1670x20[_0x8604[64]],body:_0x1670x20[_0x8604[65]]}};break;case _0x8604[41]:if((_0x1670x20[_0x8604[66]]&& _0x1670x20[_0x8604[67]]&& _0x1670x20[_0x8604[68]])){_0x1670x21= {from:_0x1670x20[_0x8604[66]],to:_0x1670x20[_0x8604[67]],body:_0x1670x20[_0x8604[68]]}};break;default:};return _0x1670x21}exports[_0x8604[70]]= function(_0x1670x13,_0x1670x11,_0x1670x1a){var _0x1670x21;var _0x1670x22;return SmsAccount[_0x8604[29]](_0x1670x13[_0x8604[28]][_0x8604[27]])[_0x8604[21]](function(_0x1670x15){if(!_0x1670x15){throw new Error(_0x8604[86])};_0x1670x22= _0x1670x15;_0x1670x13[_0x8604[58]][_0x8604[69]]= _0x1670x22[_0x8604[43]];_0x1670x21= getMessage(_0x1670x13[_0x8604[58]]);if(!_0x1670x21){throw new Error(_0x8604[87])};if(_0x1670x22[_0x8604[88]]){return Contact[_0x8604[89]]({where:{ListId:_0x1670x22[_0x8604[88]],mobile:_0x1670x21[_0x8604[75]]},defaults:{ListId:_0x1670x22[_0x8604[88]],mobile:_0x1670x21[_0x8604[75]]}})}else {return []}})[_0x8604[21]](function(_0x1670x27){return SmsRoom[_0x8604[85]]({limit:1,where:{contact:_0x1670x21[_0x8604[75]],SmsAccountId:_0x1670x22[_0x8604[27]]},order:[[_0x8604[83],_0x8604[84]]]})})[_0x8604[21]](function(_0x1670x25){var _0x1670x24=_0x1670x25[0];if(!_0x1670x24|| _0x1670x24[_0x8604[18]]=== _0x8604[74]){var _0x1670x26=_0x1670x24?_0x1670x24[_0x8604[27]]:null;return SmsRoom[_0x8604[54]]({contact:_0x1670x21[_0x8604[75]],SmsAccountId:_0x1670x22[_0x8604[27]],status:_0x8604[76],ParentId:_0x1670x26,lastEvent:_0x8604[73],lastEventAt:moment()[_0x8604[78]](_0x8604[77]),smsIn:1})}else {return _0x1670x24[_0x8604[82]]({status:_0x8604[79],openReason:_0x8604[80],lastEvent:_0x8604[73],lastEventAt:moment()[_0x8604[78]](_0x8604[77]),smsIn:++_0x1670x24[_0x8604[81]]})}})[_0x8604[21]](function(_0x1670x24){_0x1670x21[_0x8604[60]]= _0x1670x22[_0x8604[27]];_0x1670x21[_0x8604[72]]= _0x1670x24[_0x8604[27]];_0x1670x21[_0x8604[18]]= _0x8604[73];return SmsMessage[_0x8604[54]](_0x1670x21)})[_0x8604[21]](function(_0x1670x23){return _0x1670x11[_0x8604[18]](201)[_0x8604[17]](_0x1670x23)})[_0x8604[20]](function(_0x1670x12){console[_0x8604[71]](_0x1670x12);return handleError(_0x1670x11,_0x1670x12)})};exports[_0x8604[90]]= function(_0x1670x13,_0x1670x11){if(_0x1670x13[_0x8604[58]][_0x8604[27]]){delete _0x1670x13[_0x8604[58]][_0x8604[27]]};return SmsAccount[_0x8604[29]](_0x1670x13[_0x8604[28]][_0x8604[27]])[_0x8604[21]](function(_0x1670x15){if(!_0x1670x15){return _0x1670x11[_0x8604[26]](404)};var _0x1670x28=_[_0x8604[50]](_0x1670x15,_0x1670x13[_0x8604[58]]);return _0x1670x28[_0x8604[92]]()})[_0x8604[21]](function(_0x1670x15){return _0x1670x11[_0x8604[18]](200)[_0x8604[17]](_0x1670x15)})[_0x8604[20]](sequelize.UniqueConstraintError,function(_0x1670x12){return Util[_0x8604[56]][_0x8604[55]](_0x1670x11,_0x1670x12)})[_0x8604[20]](function(_0x1670x12){console[_0x8604[57]](_0x8604[91],_0x1670x12);return handleError(_0x1670x11,_0x1670x12)})};exports[_0x8604[93]]= function(_0x1670x13,_0x1670x11){if(_0x1670x13[_0x8604[58]][_0x8604[27]]){delete _0x1670x13[_0x8604[58]][_0x8604[27]]};return SmsDisposition[_0x8604[29]](_0x1670x13[_0x8604[28]][_0x8604[94]])[_0x8604[21]](function(_0x1670x2a){if(!_0x1670x2a){return _0x1670x11[_0x8604[26]](404)};var _0x1670x28=_[_0x8604[50]](_0x1670x2a,_0x1670x13[_0x8604[58]]);return _0x1670x28[_0x8604[92]]()})[_0x8604[21]](function(_0x1670x29){return _0x1670x11[_0x8604[18]](200)[_0x8604[17]](_0x1670x29)})[_0x8604[20]](function(_0x1670x12){return handleError(_0x1670x11,_0x1670x12)})};exports[_0x8604[95]]= function(_0x1670x13,_0x1670x11){return SmsMessage[_0x8604[29]](_0x1670x13[_0x8604[28]][_0x8604[98]])[_0x8604[21]](function(_0x1670x23){if(!_0x1670x23){return _0x1670x11[_0x8604[26]](404)};var _0x1670x28=_[_0x8604[50]](_0x1670x23,{status:_[_0x8604[96]](_0x1670x13[_0x8604[58]].MessageStatus),errorcode:_0x1670x13[_0x8604[58]][_0x8604[97]]});return _0x1670x28[_0x8604[92]]()})[_0x8604[21]](function(_0x1670x23){return _0x1670x11[_0x8604[18]](200)[_0x8604[17]](_0x1670x23)})[_0x8604[20]](function(_0x1670x12){return handleError(_0x1670x11,_0x1670x12)})};exports[_0x8604[99]]= function(_0x1670x13,_0x1670x11){return SmsMessage[_0x8604[102]]({where:{skebby_message_id:_0x1670x13[_0x8604[58]][_0x8604[101]]}})[_0x8604[21]](function(_0x1670x23){if(!_0x1670x23){return _0x1670x11[_0x8604[26]](404)};var _0x1670x28=_[_0x8604[50]](_0x1670x23,{status:_0x1670x13[_0x8604[58]][_0x8604[18]],errorcode:_0x1670x13[_0x8604[58]][_0x8604[100]]});return _0x1670x28[_0x8604[92]]()})[_0x8604[21]](function(_0x1670x23){return _0x1670x11[_0x8604[18]](200)[_0x8604[17]](_0x1670x23)})[_0x8604[20]](function(_0x1670x12){return handleError(_0x1670x11,_0x1670x12)})};exports[_0x8604[103]]= function(_0x1670x13,_0x1670x11){var _0x1670x2b=0;var _0x1670x2c=_0x1670x13[_0x8604[58]];_0x1670x2c[_0x8604[106]](function(_0x1670x2d){delete _0x1670x2d[_0x8604[27]];delete _0x1670x2d[_0x8604[83]];delete _0x1670x2d[_0x8604[104]];_0x1670x2d[_0x8604[105]]= ++_0x1670x2b});return sequelize[_0x8604[109]](function(_0x1670x2f){return SmsApplication[_0x8604[108]]({where:{SmsAccountId:_0x1670x13[_0x8604[28]][_0x8604[27]]},individualHooks:true,transaction:_0x1670x2f})[_0x8604[21]](function(_0x1670x30){return SmsApplication[_0x8604[107]](_0x1670x2c,{individualHooks:true,transaction:_0x1670x2f})})})[_0x8604[21]](function(_0x1670x2e){return _0x1670x11[_0x8604[18]](200)[_0x8604[17]]({count:_0x1670x2e[_0x8604[45]],rows:_0x1670x2e})})[_0x8604[20]](function(_0x1670x12){return handleError(_0x1670x11,_0x1670x12)})};exports[_0x8604[108]]= function(_0x1670x13,_0x1670x11){return SmsAccount[_0x8604[29]](_0x1670x13[_0x8604[28]][_0x8604[27]])[_0x8604[21]](function(_0x1670x15){if(!_0x1670x15){return _0x1670x11[_0x8604[26]](404)};return _0x1670x15[_0x8604[108]]()})[_0x8604[21]](function(){return _0x1670x11[_0x8604[26]](204)})[_0x8604[20]](function(_0x1670x12){return handleError(_0x1670x11,_0x1670x12)})};exports[_0x8604[110]]= function(_0x1670x13,_0x1670x11,_0x1670x1a){return SmsApplication[_0x8604[29]](_0x1670x13[_0x8604[28]][_0x8604[111]])[_0x8604[21]](function(_0x1670x30){if(!_0x1670x30){return _0x1670x11[_0x8604[26]](404)};return _0x1670x30[_0x8604[108]]()})[_0x8604[21]](function(){return _0x1670x11[_0x8604[26]](204)})[_0x8604[20]](function(_0x1670x12){return handleError(_0x1670x11,_0x1670x12)})};exports[_0x8604[112]]= function(_0x1670x13,_0x1670x11,_0x1670x1a){return SmsDisposition[_0x8604[29]](_0x1670x13[_0x8604[28]][_0x8604[94]])[_0x8604[21]](function(_0x1670x1d){if(!_0x1670x1d){return _0x1670x11[_0x8604[26]](404)};return _0x1670x1d[_0x8604[108]]()})[_0x8604[21]](function(){return _0x1670x11[_0x8604[26]](204)})[_0x8604[20]](function(_0x1670x12){return handleError(_0x1670x11,_0x1670x12)})};exports[_0x8604[113]]= function(_0x1670x13,_0x1670x11){return SmsApplication[_0x8604[108]]({where:{id:_0x1670x13[_0x8604[22]][_0x8604[114]]},individualHooks:true})[_0x8604[21]](function(){return _0x1670x11[_0x8604[26]](204)})[_0x8604[20]](function(_0x1670x12){return handleError(_0x1670x11,_0x1670x12)})};exports[_0x8604[115]]= function(_0x1670x13,_0x1670x11,_0x1670x1a){var _0x1670x31={where:{SmsAccountId:_0x1670x13[_0x8604[28]][_0x8604[27]],$and:[]},attributes:[_0x8604[27],_0x8604[116],_0x8604[104],_0x8604[117],_0x8604[118],_0x8604[119],_0x8604[120]],include:[]};if(_0x1670x13[_0x8604[22]]){if(_0x1670x13[_0x8604[22]][_0x8604[117]]){if(_[_0x8604[121]](_0x1670x13[_0x8604[22]][_0x8604[117]])){for(var _0x1670x32=0;_0x1670x32< _0x1670x13[_0x8604[22]][_0x8604[117]][_0x8604[45]];_0x1670x32++){_0x1670x31[_0x8604[125]][_0x8604[124]][_0x8604[123]]({tags:{$like:_0x8604[122]+ _0x1670x13[_0x8604[22]][_0x8604[117]][_0x1670x32]+ _0x8604[122]}})}}else {_0x1670x31[_0x8604[125]][_0x8604[124]][_0x8604[123]]({tags:{$like:_0x8604[122]+ _0x1670x13[_0x8604[22]][_0x8604[117]]+ _0x8604[122]}})};delete _0x1670x13[_0x8604[22]][_0x8604[117]]};_[_0x8604[50]](_0x1670x31[_0x8604[125]],_0x1670x13[_0x8604[22]])};switch(_0x1670x13[_0x8604[62]][_0x8604[134]]){case _0x8604[127]:_0x1670x31[_0x8604[126]][_0x8604[123]]({model:User,attributes:[_0x8604[27]]});var _0x1670x33;var _0x1670x34;var _0x1670x35;return User[_0x8604[29]](_0x1670x13[_0x8604[62]][_0x8604[27]])[_0x8604[21]](function(_0x1670x39){if(_0x1670x39){return _0x1670x39[_0x8604[133]]()}else {return []}})[_0x8604[21]](function(_0x1670x38){_0x1670x34= _[_0x8604[129]](_0x1670x38,_0x8604[27]);return SmsAccount[_0x8604[29]](_0x1670x13[_0x8604[28]][_0x8604[27]])})[_0x8604[21]](function(_0x1670x37){return _0x1670x37[_0x8604[51]]({where:{$or:[{app:_0x8604[130]},{app:_0x8604[127]}]}})})[_0x8604[21]](function(_0x1670x2c){_0x1670x33= _[_0x8604[129]](_[_0x8604[128]](_0x1670x2c,{"\x61\x70\x70":_0x8604[127]}),_0x8604[61]);_0x1670x35= _[_0x8604[129]](_[_0x8604[128]](_0x1670x2c,{"\x61\x70\x70":_0x8604[130]}),_0x8604[131]);if(_[_0x8604[132]](_0x1670x34,_0x1670x35)[_0x8604[45]]|| _[_0x8604[132]](_0x1670x33,[_0x1670x13[_0x8604[62]][_0x8604[27]]])[_0x8604[45]]){return SmsRoom[_0x8604[85]](_0x1670x31)[_0x8604[21]](function(_0x1670x36){return _0x1670x11[_0x8604[18]](200)[_0x8604[17]](_0x1670x36)})[_0x8604[20]](function(_0x1670x12){console[_0x8604[71]](_0x1670x12);return handleError(_0x1670x11,_0x1670x12)})}else {return _0x1670x11[_0x8604[18]](200)[_0x8604[17]]([])}})[_0x8604[20]](function(_0x1670x12){console[_0x8604[71]](_0x1670x12)});default:return SmsRoom[_0x8604[85]](_0x1670x31)[_0x8604[21]](function(_0x1670x36){return _0x1670x11[_0x8604[18]](200)[_0x8604[17]](_0x1670x36)})[_0x8604[20]](function(_0x1670x12){return handleError(_0x1670x11,_0x1670x12)})}};exports[_0x8604[135]]= function(_0x1670x13,_0x1670x11,_0x1670x1a){return SmsApplication[_0x8604[137]](_0x8604[105],{where:{SmsAccountId:_0x1670x13[_0x8604[28]][_0x8604[27]]}})[_0x8604[21]](function(_0x1670x3a){_0x1670x13[_0x8604[58]][_0x8604[105]]= _0x1670x3a?++_0x1670x3a:1;_0x1670x13[_0x8604[58]][_0x8604[60]]= _0x1670x13[_0x8604[28]][_0x8604[27]];return SmsApplication[_0x8604[54]](_0x1670x13[_0x8604[58]])})[_0x8604[21]](function(_0x1670x30){return _0x1670x11[_0x8604[18]](201)[_0x8604[17]](_0x1670x30)})[_0x8604[20]](function(_0x1670x12){console[_0x8604[57]](_0x8604[136],_0x1670x12);return handleError(_0x1670x11,_0x1670x12)})};exports[_0x8604[138]]= function(_0x1670x13,_0x1670x11){if(_0x1670x13[_0x8604[58]][_0x8604[27]]){delete _0x1670x13[_0x8604[58]][_0x8604[27]]};return SmsApplication[_0x8604[29]](_0x1670x13[_0x8604[28]][_0x8604[111]])[_0x8604[21]](function(_0x1670x30){if(!_0x1670x30){return _0x1670x11[_0x8604[26]](404)};var _0x1670x28=_[_0x8604[50]](_0x1670x30,_0x1670x13[_0x8604[58]]);return _0x1670x28[_0x8604[92]]()})[_0x8604[21]](function(_0x1670x30){return _0x1670x11[_0x8604[18]](200)[_0x8604[17]](_0x1670x30)})[_0x8604[20]](function(_0x1670x12){return handleError(_0x1670x11,_0x1670x12)})} \ No newline at end of file diff --git a/server/api/sms_account/sms_account.events.js b/server/api/sms_account/sms_account.events.js index 932ef04..4267c56 100644 --- a/server/api/sms_account/sms_account.events.js +++ b/server/api/sms_account/sms_account.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const SmsAccount = require('../../models').SmsAccount; - -var SmsAccountEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -SmsAccountEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - SmsAccount.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - SmsAccountEvents.emit(event + ':' + doc._id, doc); - SmsAccountEvents.emit(event, doc); - done(null); - } -} - -module.exports = SmsAccountEvents; +var _0xa4e1=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x53\x6D\x73\x41\x63\x63\x6F\x75\x6E\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xa4e1[0];const EventEmitter=require(_0xa4e1[1]);const SmsAccount=require(_0xa4e1[3])[_0xa4e1[2]];var SmsAccountEvents= new EventEmitter();SmsAccountEvents[_0xa4e1[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xa4e1[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xa4e1[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xa4e1[6]};for(var e in events){var event=events[e];SmsAccount[_0xa4e1[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xcfddx8,_0xcfddx9,_0xcfddxa){SmsAccountEvents[_0xa4e1[10]](event+ _0xa4e1[8]+ _0xcfddx8[_0xa4e1[9]],_0xcfddx8);SmsAccountEvents[_0xa4e1[10]](event,_0xcfddx8);_0xcfddxa(null)}}module[_0xa4e1[11]]= SmsAccountEvents \ No newline at end of file diff --git a/server/api/sms_account/sms_account.socket.js b/server/api/sms_account/sms_account.socket.js index 4aa38a4..0f2173d 100644 --- a/server/api/sms_account/sms_account.socket.js +++ b/server/api/sms_account/sms_account.socket.js @@ -1,32 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const SmsAccountEvents = require('./sms_account.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('sms_account:' + event, socket); - - SmsAccountEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - SmsAccountEvents.removeListener(event, listener); - }; -} +var _0x5064=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x73\x6D\x73\x5F\x61\x63\x63\x6F\x75\x6E\x74\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x73\x6D\x73\x5F\x61\x63\x63\x6F\x75\x6E\x74\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x5064[0];const SmsAccountEvents=require(_0x5064[1]);var events=[_0x5064[2],_0x5064[3]];exports[_0x5064[4]]= function(_0xb324x3){for(var _0xb324x4=0,_0xb324x5=events[_0x5064[5]];_0xb324x4< _0xb324x5;_0xb324x4++){var _0xb324x6=events[_0xb324x4];var _0xb324x7=createListener(_0x5064[6]+ _0xb324x6,_0xb324x3);SmsAccountEvents[_0x5064[7]](_0xb324x6,_0xb324x7);_0xb324x3[_0x5064[7]](_0x5064[8],removeListener(_0xb324x6,_0xb324x7))}};function createListener(_0xb324x6,_0xb324x3){return function(_0xb324x9){_0xb324x3[_0x5064[9]](_0xb324x6,_0xb324x9)}}function removeListener(_0xb324x6,_0xb324x7){return function(){SmsAccountEvents[_0x5064[10]](_0xb324x6,_0xb324x7)}} \ No newline at end of file diff --git a/server/api/sms_application/index.js b/server/api/sms_application/index.js index fd4d4f1..0fe65f3 100644 --- a/server/api/sms_application/index.js +++ b/server/api/sms_application/index.js @@ -1,15 +1 @@ -'use strict'; - -var express = require('express'); -var auth = require('../../auth/auth.service'); -var controller = require('./sms_application.controller'); -var license = require('../../config/license/license.service'); -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), license.hasSms(), auth.hasModule([11], ['admin']), controller.index); -router.get('/:id', auth.isAuthenticated(), license.hasSms(), auth.hasModule([11], ['admin']), controller.show); -router.post('/', auth.isAuthenticated(), license.hasSms(), auth.hasModule([11], ['admin']), controller.create); -router.put('/:id', auth.isAuthenticated(), license.hasSms(), auth.hasModule([11], ['admin']), controller.update); -router.delete('/:id', auth.isAuthenticated(), license.hasSms(), auth.hasModule([11], ['admin']), controller.destroy); - -module.exports = router; +var _0x55d9=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x73\x6D\x73\x5F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x68\x61\x73\x53\x6D\x73","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0x55d9[0];var express=require(_0x55d9[1]);var auth=require(_0x55d9[2]);var controller=require(_0x55d9[3]);var license=require(_0x55d9[4]);var router=express.Router();router[_0x55d9[11]](_0x55d9[5],auth[_0x55d9[6]](),license[_0x55d9[7]](),auth[_0x55d9[9]]([11],[_0x55d9[8]]),controller[_0x55d9[10]]);router[_0x55d9[11]](_0x55d9[12],auth[_0x55d9[6]](),license[_0x55d9[7]](),auth[_0x55d9[9]]([11],[_0x55d9[8]]),controller[_0x55d9[13]]);router[_0x55d9[15]](_0x55d9[5],auth[_0x55d9[6]](),license[_0x55d9[7]](),auth[_0x55d9[9]]([11],[_0x55d9[8]]),controller[_0x55d9[14]]);router[_0x55d9[17]](_0x55d9[12],auth[_0x55d9[6]](),license[_0x55d9[7]](),auth[_0x55d9[9]]([11],[_0x55d9[8]]),controller[_0x55d9[16]]);router[_0x55d9[19]](_0x55d9[12],auth[_0x55d9[6]](),license[_0x55d9[7]](),auth[_0x55d9[9]]([11],[_0x55d9[8]]),controller[_0x55d9[18]]);module[_0x55d9[20]]= router \ No newline at end of file diff --git a/server/api/sms_application/sms_application.controller.js b/server/api/sms_application/sms_application.controller.js index e1abd0b..6352de0 100644 --- a/server/api/sms_application/sms_application.controller.js +++ b/server/api/sms_application/sms_application.controller.js @@ -1,130 +1 @@ -/** - * Using Rails-like standard naming convention for endpoints. - * GET /api/sms/applications -> index - * POST /api/sms/applications -> create - * GET /api/sms/applications/:id -> show - * PUT /api/sms/applications/:id -> update - * DELETE /api/sms/applications/:id -> destroy - */ - -'use strict'; - - -var _ = require('lodash'); -var Util = require('../../config/util'); - -var SmsApplication = require('../../models').SmsApplication; - - -function handleError(res, err) { - return res.status(500).send(err); -} - -// Gets a list of SmsApplications -exports.index = function(req, res) { - return SmsApplication - .findAll({ - where: req.query, - order: 'priority', - include: [{ - all: true - }] - }) - .then(function(smsApplications) { - return res.status(200).send(smsApplications); - }) - .catch(function(err) { - return handleError(res, err); - }); -} - -// Gets a single SmsApplication from the DB -exports.show = function(req, res) { - return SmsApplication - .findById(req.params.id, { - include: [{ - all: true - }] - }) - .then(function(smsApplication) { - if (!smsApplication) { - return res.sendStatus(404); - } - return res.send(smsApplication); - }) - .catch(function(err) { - return handleError(res, err); - }); - -} - -// Creates a new SmsApplication in the DB -exports.create = function(req, res) { - - return SmsApplication - .max('priority', { - where: { - SmsAccountId: req.body.SmsAccountId - } - }) - .then(function(max) { - // SET PRIORITY - req.body.priority = max ? ++max : 1; - return SmsApplication - .create(req.body) - }) - .then(function(smsApplication) { - return res.status(201).send(smsApplication); - }) - .catch(function(err) { - return handleError(res, err); - }); - - -} - -// Updates an existing SmsApplication in the DB -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - return SmsApplication - .findById(req.params.id) - .then(function(smsApplication) { - if (!smsApplication) { - return res.sendStatus(404); - } - var updated = _.merge(smsApplication, req.body); - return updated - .save() - - }) - .then(function(smsApplication) { - return res.status(200).send(smsApplication); - }) - .catch(function(err) { - return handleError(res, err); - }); - -} - - -// Deletes a SmsApplication from the DB -exports.destroy = function(req, res) { - return SmsApplication - .findById(req.params.id) - .then(function(smsApplication) { - if (!smsApplication) { - return res.sendStatus(404); - } - return smsApplication - .destroy() - - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -} +var _0xd72c=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x53\x6D\x73\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x70\x72\x69\x6F\x72\x69\x74\x79","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x53\x6D\x73\x41\x63\x63\x6F\x75\x6E\x74\x49\x64","\x6D\x61\x78","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x64\x65\x73\x74\x72\x6F\x79"];_0xd72c[0];var _=require(_0xd72c[1]);var Util=require(_0xd72c[2]);var SmsApplication=require(_0xd72c[4])[_0xd72c[3]];function handleError(_0x9438x5,_0x9438x6){return _0x9438x5[_0xd72c[6]](500)[_0xd72c[5]](_0x9438x6)}exports[_0xd72c[7]]= function(_0x9438x7,_0x9438x5){return SmsApplication[_0xd72c[12]]({where:_0x9438x7[_0xd72c[10]],order:_0xd72c[11],include:[{all:true}]})[_0xd72c[9]](function(_0x9438x8){return _0x9438x5[_0xd72c[6]](200)[_0xd72c[5]](_0x9438x8)})[_0xd72c[8]](function(_0x9438x6){return handleError(_0x9438x5,_0x9438x6)})};exports[_0xd72c[13]]= function(_0x9438x7,_0x9438x5){return SmsApplication[_0xd72c[17]](_0x9438x7[_0xd72c[16]][_0xd72c[15]],{include:[{all:true}]})[_0xd72c[9]](function(_0x9438x9){if(!_0x9438x9){return _0x9438x5[_0xd72c[14]](404)};return _0x9438x5[_0xd72c[5]](_0x9438x9)})[_0xd72c[8]](function(_0x9438x6){return handleError(_0x9438x5,_0x9438x6)})};exports[_0xd72c[18]]= function(_0x9438x7,_0x9438x5){return SmsApplication[_0xd72c[21]](_0xd72c[11],{where:{SmsAccountId:_0x9438x7[_0xd72c[19]][_0xd72c[20]]}})[_0xd72c[9]](function(_0x9438xa){_0x9438x7[_0xd72c[19]][_0xd72c[11]]= _0x9438xa?++_0x9438xa:1;return SmsApplication[_0xd72c[18]](_0x9438x7[_0xd72c[19]])})[_0xd72c[9]](function(_0x9438x9){return _0x9438x5[_0xd72c[6]](201)[_0xd72c[5]](_0x9438x9)})[_0xd72c[8]](function(_0x9438x6){return handleError(_0x9438x5,_0x9438x6)})};exports[_0xd72c[22]]= function(_0x9438x7,_0x9438x5){if(_0x9438x7[_0xd72c[19]][_0xd72c[15]]){delete _0x9438x7[_0xd72c[19]][_0xd72c[15]]};return SmsApplication[_0xd72c[17]](_0x9438x7[_0xd72c[16]][_0xd72c[15]])[_0xd72c[9]](function(_0x9438x9){if(!_0x9438x9){return _0x9438x5[_0xd72c[14]](404)};var _0x9438xb=_[_0xd72c[23]](_0x9438x9,_0x9438x7[_0xd72c[19]]);return _0x9438xb[_0xd72c[24]]()})[_0xd72c[9]](function(_0x9438x9){return _0x9438x5[_0xd72c[6]](200)[_0xd72c[5]](_0x9438x9)})[_0xd72c[8]](function(_0x9438x6){return handleError(_0x9438x5,_0x9438x6)})};exports[_0xd72c[25]]= function(_0x9438x7,_0x9438x5){return SmsApplication[_0xd72c[17]](_0x9438x7[_0xd72c[16]][_0xd72c[15]])[_0xd72c[9]](function(_0x9438x9){if(!_0x9438x9){return _0x9438x5[_0xd72c[14]](404)};return _0x9438x9[_0xd72c[25]]()})[_0xd72c[9]](function(){return _0x9438x5[_0xd72c[14]](204)})[_0xd72c[8]](function(_0x9438x6){return handleError(_0x9438x5,_0x9438x6)})} \ No newline at end of file diff --git a/server/api/sms_application/sms_application.events.js b/server/api/sms_application/sms_application.events.js index 5d95d05..a5dea4b 100644 --- a/server/api/sms_application/sms_application.events.js +++ b/server/api/sms_application/sms_application.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const SmsApplication = require('../../models').SmsApplication; - -var SmsApplicationEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -SmsApplicationEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - SmsApplication.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - SmsApplicationEvents.emit(event + ':' + doc._id, doc); - SmsApplicationEvents.emit(event, doc); - done(null); - } -} - -module.exports = SmsApplicationEvents; +var _0xe81f=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x53\x6D\x73\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xe81f[0];const EventEmitter=require(_0xe81f[1]);const SmsApplication=require(_0xe81f[3])[_0xe81f[2]];var SmsApplicationEvents= new EventEmitter();SmsApplicationEvents[_0xe81f[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xe81f[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xe81f[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xe81f[6]};for(var e in events){var event=events[e];SmsApplication[_0xe81f[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xe840x8,_0xe840x9,_0xe840xa){SmsApplicationEvents[_0xe81f[10]](event+ _0xe81f[8]+ _0xe840x8[_0xe81f[9]],_0xe840x8);SmsApplicationEvents[_0xe81f[10]](event,_0xe840x8);_0xe840xa(null)}}module[_0xe81f[11]]= SmsApplicationEvents \ No newline at end of file diff --git a/server/api/sms_application/sms_application.socket.js b/server/api/sms_application/sms_application.socket.js index 9926f52..bb4272f 100644 --- a/server/api/sms_application/sms_application.socket.js +++ b/server/api/sms_application/sms_application.socket.js @@ -1,32 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const SmsApplicationEvents = require('./sms_application.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('sms_application:' + event, socket); - - SmsApplicationEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - SmsApplicationEvents.removeListener(event, listener); - }; -} +var _0xfe0a=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x73\x6D\x73\x5F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x73\x6D\x73\x5F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xfe0a[0];const SmsApplicationEvents=require(_0xfe0a[1]);var events=[_0xfe0a[2],_0xfe0a[3]];exports[_0xfe0a[4]]= function(_0x2212x3){for(var _0x2212x4=0,_0x2212x5=events[_0xfe0a[5]];_0x2212x4< _0x2212x5;_0x2212x4++){var _0x2212x6=events[_0x2212x4];var _0x2212x7=createListener(_0xfe0a[6]+ _0x2212x6,_0x2212x3);SmsApplicationEvents[_0xfe0a[7]](_0x2212x6,_0x2212x7);_0x2212x3[_0xfe0a[7]](_0xfe0a[8],removeListener(_0x2212x6,_0x2212x7))}};function createListener(_0x2212x6,_0x2212x3){return function(_0x2212x9){_0x2212x3[_0xfe0a[9]](_0x2212x6,_0x2212x9)}}function removeListener(_0x2212x6,_0x2212x7){return function(){SmsApplicationEvents[_0xfe0a[10]](_0x2212x6,_0x2212x7)}} \ No newline at end of file diff --git a/server/api/sms_disposition/index.js b/server/api/sms_disposition/index.js index 6e1022b..2ce2a15 100644 --- a/server/api/sms_disposition/index.js +++ b/server/api/sms_disposition/index.js @@ -1,16 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./sms_disposition.controller'); -var auth = require('../../auth/auth.service'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), controller.index); -router.get('/:id', auth.isAuthenticated(), controller.show); -router.post('/', auth.isAuthenticated(), controller.create); -router.put('/:id', auth.isAuthenticated(), controller.update); -router.patch('/:id', auth.isAuthenticated(), controller.update); -router.delete('/:id', auth.isAuthenticated(), controller.destroy); - -module.exports = router; +var _0x6152=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x73\x6D\x73\x5F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x70\x61\x74\x63\x68","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0x6152[0];var express=require(_0x6152[1]);var controller=require(_0x6152[2]);var auth=require(_0x6152[3]);var router=express.Router();router[_0x6152[7]](_0x6152[4],auth[_0x6152[5]](),controller[_0x6152[6]]);router[_0x6152[7]](_0x6152[8],auth[_0x6152[5]](),controller[_0x6152[9]]);router[_0x6152[11]](_0x6152[4],auth[_0x6152[5]](),controller[_0x6152[10]]);router[_0x6152[13]](_0x6152[8],auth[_0x6152[5]](),controller[_0x6152[12]]);router[_0x6152[14]](_0x6152[8],auth[_0x6152[5]](),controller[_0x6152[12]]);router[_0x6152[16]](_0x6152[8],auth[_0x6152[5]](),controller[_0x6152[15]]);module[_0x6152[17]]= router \ No newline at end of file diff --git a/server/api/sms_disposition/sms_disposition.controller.js b/server/api/sms_disposition/sms_disposition.controller.js index 066dd7e..51712dc 100644 --- a/server/api/sms_disposition/sms_disposition.controller.js +++ b/server/api/sms_disposition/sms_disposition.controller.js @@ -1,95 +1 @@ -'use strict'; - - -var _ = require('lodash'); - -var SmsDisposition = require('../../models').SmsDisposition; - - -function handleError(res, statusCode) { - statusCode = statusCode || 500; - return function(err) { - res.status(statusCode).send(err); - }; -} - -function responseWithResult(res, statusCode) { - statusCode = statusCode || 200; - return function(entity) { - if (entity) { - res.status(statusCode).json(entity); - } - }; -} - -function handleEntityNotFound(res) { - return function(entity) { - if (!entity) { - res.status(404).end(); - return null; - } - return entity; - }; -} - -function saveUpdates(updates) { - return function(entity) { - return entity.updateAttributes(updates) - .then(function(updated) { - return updated; - }) - }; -} - -function removeEntity(res) { - return function(entity) { - if (entity) { - return entity.destroy() - .then(function() { - res.status(204).end(); - }) - } - }; -} - -// Gets a list of SmsDispositions -exports.index = function(req, res) { - SmsDisposition.findAndCountAll() - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Gets a single SmsDisposition from the DB -exports.show = function(req, res) { - SmsDisposition.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Creates a new SmsDisposition in the DB -exports.create = function(req, res) { - SmsDisposition.create(req.body) - .then(responseWithResult(res, 201)) - .catch(handleError(res)); -} - -// Updates an existing SmsDisposition in the DB -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - SmsDisposition.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(saveUpdates(req.body)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Deletes a SmsDisposition from the DB -exports.destroy = function(req, res) { - SmsDisposition.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(removeEntity(res)) - .catch(handleError(res)); -} +var _0xd63f=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x53\x6D\x73\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x6A\x73\x6F\x6E","\x65\x6E\x64","\x74\x68\x65\x6E","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x64\x65\x73\x74\x72\x6F\x79","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x73\x68\x6F\x77","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65"];_0xd63f[0];var _=require(_0xd63f[1]);var SmsDisposition=require(_0xd63f[3])[_0xd63f[2]];function handleError(_0x6797x4,_0x6797x5){_0x6797x5= _0x6797x5|| 500;return function(_0x6797x6){_0x6797x4[_0xd63f[5]](_0x6797x5)[_0xd63f[4]](_0x6797x6)}}function responseWithResult(_0x6797x4,_0x6797x5){_0x6797x5= _0x6797x5|| 200;return function(_0x6797x8){if(_0x6797x8){_0x6797x4[_0xd63f[5]](_0x6797x5)[_0xd63f[6]](_0x6797x8)}}}function handleEntityNotFound(_0x6797x4){return function(_0x6797x8){if(!_0x6797x8){_0x6797x4[_0xd63f[5]](404)[_0xd63f[7]]();return null};return _0x6797x8}}function saveUpdates(_0x6797xb){return function(_0x6797x8){return _0x6797x8[_0xd63f[9]](_0x6797xb)[_0xd63f[8]](function(_0x6797xc){return _0x6797xc})}}function removeEntity(_0x6797x4){return function(_0x6797x8){if(_0x6797x8){return _0x6797x8[_0xd63f[10]]()[_0xd63f[8]](function(){_0x6797x4[_0xd63f[5]](204)[_0xd63f[7]]()})}}}exports[_0xd63f[11]]= function(_0x6797xe,_0x6797x4){SmsDisposition[_0xd63f[13]]()[_0xd63f[8]](responseWithResult(_0x6797x4))[_0xd63f[12]](handleError(_0x6797x4))};exports[_0xd63f[14]]= function(_0x6797xe,_0x6797x4){SmsDisposition[_0xd63f[17]](_0x6797xe[_0xd63f[16]][_0xd63f[15]])[_0xd63f[8]](handleEntityNotFound(_0x6797x4))[_0xd63f[8]](responseWithResult(_0x6797x4))[_0xd63f[12]](handleError(_0x6797x4))};exports[_0xd63f[18]]= function(_0x6797xe,_0x6797x4){SmsDisposition[_0xd63f[18]](_0x6797xe[_0xd63f[19]])[_0xd63f[8]](responseWithResult(_0x6797x4,201))[_0xd63f[12]](handleError(_0x6797x4))};exports[_0xd63f[20]]= function(_0x6797xe,_0x6797x4){if(_0x6797xe[_0xd63f[19]][_0xd63f[15]]){delete _0x6797xe[_0xd63f[19]][_0xd63f[15]]};SmsDisposition[_0xd63f[17]](_0x6797xe[_0xd63f[16]][_0xd63f[15]])[_0xd63f[8]](handleEntityNotFound(_0x6797x4))[_0xd63f[8]](saveUpdates(_0x6797xe[_0xd63f[19]]))[_0xd63f[8]](responseWithResult(_0x6797x4))[_0xd63f[12]](handleError(_0x6797x4))};exports[_0xd63f[10]]= function(_0x6797xe,_0x6797x4){SmsDisposition[_0xd63f[17]](_0x6797xe[_0xd63f[16]][_0xd63f[15]])[_0xd63f[8]](handleEntityNotFound(_0x6797x4))[_0xd63f[8]](removeEntity(_0x6797x4))[_0xd63f[12]](handleError(_0x6797x4))} \ No newline at end of file diff --git a/server/api/sms_disposition/sms_disposition.events.js b/server/api/sms_disposition/sms_disposition.events.js index 5f2d801..3c9c560 100644 --- a/server/api/sms_disposition/sms_disposition.events.js +++ b/server/api/sms_disposition/sms_disposition.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const SmsDisposition = require('../../models').SmsDisposition; - -var SmsDispositionEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -SmsDispositionEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - SmsDisposition.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - SmsDispositionEvents.emit(event + ':' + doc._id, doc); - SmsDispositionEvents.emit(event, doc); - done(null); - } -} - -module.exports = SmsDispositionEvents; +var _0x3069=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x53\x6D\x73\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x3069[0];const EventEmitter=require(_0x3069[1]);const SmsDisposition=require(_0x3069[3])[_0x3069[2]];var SmsDispositionEvents= new EventEmitter();SmsDispositionEvents[_0x3069[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x3069[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x3069[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x3069[6]};for(var e in events){var event=events[e];SmsDisposition[_0x3069[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x52bex8,_0x52bex9,_0x52bexa){SmsDispositionEvents[_0x3069[10]](event+ _0x3069[8]+ _0x52bex8[_0x3069[9]],_0x52bex8);SmsDispositionEvents[_0x3069[10]](event,_0x52bex8);_0x52bexa(null)}}module[_0x3069[11]]= SmsDispositionEvents \ No newline at end of file diff --git a/server/api/sms_disposition/sms_disposition.socket.js b/server/api/sms_disposition/sms_disposition.socket.js index 577c85f..471ad20 100644 --- a/server/api/sms_disposition/sms_disposition.socket.js +++ b/server/api/sms_disposition/sms_disposition.socket.js @@ -1,32 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const SmsDispositionEvents = require('./sms_disposition.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('sms_disposition:' + event, socket); - - SmsDispositionEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - SmsDispositionEvents.removeListener(event, listener); - }; -} +var _0x249f=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x73\x6D\x73\x5F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x73\x6D\x73\x5F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x249f[0];const SmsDispositionEvents=require(_0x249f[1]);var events=[_0x249f[2],_0x249f[3]];exports[_0x249f[4]]= function(_0xecfcx3){for(var _0xecfcx4=0,_0xecfcx5=events[_0x249f[5]];_0xecfcx4< _0xecfcx5;_0xecfcx4++){var _0xecfcx6=events[_0xecfcx4];var _0xecfcx7=createListener(_0x249f[6]+ _0xecfcx6,_0xecfcx3);SmsDispositionEvents[_0x249f[7]](_0xecfcx6,_0xecfcx7);_0xecfcx3[_0x249f[7]](_0x249f[8],removeListener(_0xecfcx6,_0xecfcx7))}};function createListener(_0xecfcx6,_0xecfcx3){return function(_0xecfcx9){_0xecfcx3[_0x249f[9]](_0xecfcx6,_0xecfcx9)}}function removeListener(_0xecfcx6,_0xecfcx7){return function(){SmsDispositionEvents[_0x249f[10]](_0xecfcx6,_0xecfcx7)}} \ No newline at end of file diff --git a/server/api/sms_message/index.js b/server/api/sms_message/index.js index 5c0b3d0..3899c9d 100644 --- a/server/api/sms_message/index.js +++ b/server/api/sms_message/index.js @@ -1,18 +1 @@ -'use strict'; - -var express = require('express'); -var auth = require('../../auth/auth.service'); -var controller = require('./sms_message.controller'); -var license = require('../../config/license/license.service'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), license.hasSms(), auth.hasModule([11], ['admin']), controller.index); -router.get('/describe', auth.isAuthenticated(), license.hasSms(), auth.hasModule([11], ['admin']), controller.describe); -router.get('/:id', auth.isAuthenticated(), license.hasSms(), auth.hasModule([11], ['admin', 'agent']), controller.show); -router.post('/', auth.isAuthenticated(), license.hasSms(), auth.hasModule([11], ['admin']), controller.create); -router.put('/:id', auth.isAuthenticated(), license.hasSms(), auth.hasModule([11], ['admin']), controller.update); -router.delete('/:id', auth.isAuthenticated(), license.hasSms(), auth.hasModule([11], ['admin']), controller.destroy); -router.delete('/', auth.isAuthenticated(), license.hasSms(), auth.hasModule([11], ['admin']), controller.bulkDelete); - -module.exports = router; +var _0x32de=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x73\x6D\x73\x5F\x6D\x65\x73\x73\x61\x67\x65\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x68\x61\x73\x53\x6D\x73","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x64\x65\x73\x63\x72\x69\x62\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x2F\x3A\x69\x64","\x61\x67\x65\x6E\x74","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x62\x75\x6C\x6B\x44\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0x32de[0];var express=require(_0x32de[1]);var auth=require(_0x32de[2]);var controller=require(_0x32de[3]);var license=require(_0x32de[4]);var router=express.Router();router[_0x32de[11]](_0x32de[5],auth[_0x32de[6]](),license[_0x32de[7]](),auth[_0x32de[9]]([11],[_0x32de[8]]),controller[_0x32de[10]]);router[_0x32de[11]](_0x32de[12],auth[_0x32de[6]](),license[_0x32de[7]](),auth[_0x32de[9]]([11],[_0x32de[8]]),controller[_0x32de[13]]);router[_0x32de[11]](_0x32de[14],auth[_0x32de[6]](),license[_0x32de[7]](),auth[_0x32de[9]]([11],[_0x32de[8],_0x32de[15]]),controller[_0x32de[16]]);router[_0x32de[18]](_0x32de[5],auth[_0x32de[6]](),license[_0x32de[7]](),auth[_0x32de[9]]([11],[_0x32de[8]]),controller[_0x32de[17]]);router[_0x32de[20]](_0x32de[14],auth[_0x32de[6]](),license[_0x32de[7]](),auth[_0x32de[9]]([11],[_0x32de[8]]),controller[_0x32de[19]]);router[_0x32de[22]](_0x32de[14],auth[_0x32de[6]](),license[_0x32de[7]](),auth[_0x32de[9]]([11],[_0x32de[8]]),controller[_0x32de[21]]);router[_0x32de[22]](_0x32de[5],auth[_0x32de[6]](),license[_0x32de[7]](),auth[_0x32de[9]]([11],[_0x32de[8]]),controller[_0x32de[23]]);module[_0x32de[24]]= router \ No newline at end of file diff --git a/server/api/sms_message/sms_message.controller.js b/server/api/sms_message/sms_message.controller.js index d1dd899..d5865ca 100644 --- a/server/api/sms_message/sms_message.controller.js +++ b/server/api/sms_message/sms_message.controller.js @@ -1,170 +1 @@ -/** - * Using Rails-like standard naming convention for endpoints. - * GET /api/sms/messages -> index - * POST /api/sms/messages -> create - * GET /api/sms/messages/:id -> show - * PUT /api/sms/messages/:id -> update - * DELETE /api/sms/messages/:id -> destroy - */ - -'use strict'; - - -var _ = require('lodash'); -var Util = require('../../config/util'); - -var SmsMessage = require('../../models').SmsMessage; -var SmsRoom = require('../../models').SmsRoom; -var User = require('../../models').User; - - -function handleError(res, err) { - return res.status(500).send(err); -} - -// Gets a list of SmsMessages -exports.index = function(req, res) { - var params = { - order: 'createdAt DESC', - include: [{ - all: true, - include: [{ - all: true - }] - }] - }; - - switch (req.user.role) { - case 'admin': - params.where = req.query; - break; - case 'agent': - break; - default: - } - - return SmsMessage - .findAll(params) - .then(function(sms_messages) { - return res.status(200).send(sms_messages); - }) - .catch(function(err) { - return handleError(res, err); - }); -} - -exports.describe = function(req, res) { - return SmsMessage - .describe() - .then(function(fields) { - return res.status(200).send(fields); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Gets a single SmsMessage from the DB -exports.show = function(req, res) { - return SmsMessage - .findById(req.params.id, { - include: [{ - model: User, - attributes: ['id', 'name', 'fullname', 'email'] - }] - }) - .then(function(smsMessage) { - if (!smsMessage) { - return res.sendStatus(404); - } - return res.send(smsMessage); - }) - .catch(function(err) { - return handleError(res, err); - }); -} - -// Creates a new SmsMessage in the DB -exports.create = function(req, res) { - req.body.UserId = req.user.id; - return SmsMessage - .create(req.body) - .then(function(smsMessage) { - return res.status(201).send(smsMessage); - }) - .catch(function(err) { - return handleError(res, err); - }); -} - -// Updates an existing SmsMessage in the DB -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - return SmsMessage - .findById(req.params.id, { - include: [{ - all: true - }] - }) - .then(function(smsMessage) { - if (!smsMessage) { - return res.sendStatus(404); - } - var updated = _.merge(smsMessage, req.body); - return updated - .save(); - }) - .then(function(updated) { - return res.status(200).send(updated); - }) - .catch(function(err) { - return handleError(res, err); - }); -} - -// Deletes a SmsMessage from the DB -exports.destroy = function(req, res) { - return SmsMessage - .findById(req.params.id) - .then(function(smsMessage) { - if (!smsMessage) { - return res.sendStatus(404); - } - return smsMessage - .destroy(); - }).then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -} - -exports.bulkDelete = function(req, res) { - return SmsMessage - .bulkUpdate({ - where: { - id: { - $in: req.body.id - } - }, - attributes: { - directory: 'TRASH' - } - }) - .then(function(smsMessage) { - if (!smsMessage) { - return res.sendStatus(404); - } - return smsMessage - .destroy(); - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; +var _0xf836=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x53\x6D\x73\x4D\x65\x73\x73\x61\x67\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x53\x6D\x73\x52\x6F\x6F\x6D","\x55\x73\x65\x72","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x69\x6E\x64\x65\x78","\x63\x72\x65\x61\x74\x65\x64\x41\x74\x20\x44\x45\x53\x43","\x77\x68\x65\x72\x65","\x71\x75\x65\x72\x79","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x72\x6F\x6C\x65","\x75\x73\x65\x72","\x63\x61\x74\x63\x68","\x74\x68\x65\x6E","\x66\x69\x6E\x64\x41\x6C\x6C","\x64\x65\x73\x63\x72\x69\x62\x65","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x6E\x61\x6D\x65","\x66\x75\x6C\x6C\x6E\x61\x6D\x65","\x65\x6D\x61\x69\x6C","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x55\x73\x65\x72\x49\x64","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x64\x65\x73\x74\x72\x6F\x79","\x62\x75\x6C\x6B\x44\x65\x6C\x65\x74\x65","\x54\x52\x41\x53\x48","\x62\x75\x6C\x6B\x55\x70\x64\x61\x74\x65"];_0xf836[0];var _=require(_0xf836[1]);var Util=require(_0xf836[2]);var SmsMessage=require(_0xf836[4])[_0xf836[3]];var SmsRoom=require(_0xf836[4])[_0xf836[5]];var User=require(_0xf836[4])[_0xf836[6]];function handleError(_0xf0d0x7,_0xf0d0x8){return _0xf0d0x7[_0xf836[8]](500)[_0xf836[7]](_0xf0d0x8)}exports[_0xf836[9]]= function(_0xf0d0x9,_0xf0d0x7){var _0xf0d0xa={order:_0xf836[10],include:[{all:true,include:[{all:true}]}]};switch(_0xf0d0x9[_0xf836[16]][_0xf836[15]]){case _0xf836[13]:_0xf0d0xa[_0xf836[11]]= _0xf0d0x9[_0xf836[12]];break;case _0xf836[14]:break;default:};return SmsMessage[_0xf836[19]](_0xf0d0xa)[_0xf836[18]](function(_0xf0d0xb){return _0xf0d0x7[_0xf836[8]](200)[_0xf836[7]](_0xf0d0xb)})[_0xf836[17]](function(_0xf0d0x8){return handleError(_0xf0d0x7,_0xf0d0x8)})};exports[_0xf836[20]]= function(_0xf0d0x9,_0xf0d0x7){return SmsMessage[_0xf836[20]]()[_0xf836[18]](function(_0xf0d0xc){return _0xf0d0x7[_0xf836[8]](200)[_0xf836[7]](_0xf0d0xc)})[_0xf836[17]](function(_0xf0d0x8){return handleError(_0xf0d0x7,_0xf0d0x8)})};exports[_0xf836[21]]= function(_0xf0d0x9,_0xf0d0x7){return SmsMessage[_0xf836[28]](_0xf0d0x9[_0xf836[24]][_0xf836[23]],{include:[{model:User,attributes:[_0xf836[23],_0xf836[25],_0xf836[26],_0xf836[27]]}]})[_0xf836[18]](function(_0xf0d0xd){if(!_0xf0d0xd){return _0xf0d0x7[_0xf836[22]](404)};return _0xf0d0x7[_0xf836[7]](_0xf0d0xd)})[_0xf836[17]](function(_0xf0d0x8){return handleError(_0xf0d0x7,_0xf0d0x8)})};exports[_0xf836[29]]= function(_0xf0d0x9,_0xf0d0x7){_0xf0d0x9[_0xf836[31]][_0xf836[30]]= _0xf0d0x9[_0xf836[16]][_0xf836[23]];return SmsMessage[_0xf836[29]](_0xf0d0x9[_0xf836[31]])[_0xf836[18]](function(_0xf0d0xd){return _0xf0d0x7[_0xf836[8]](201)[_0xf836[7]](_0xf0d0xd)})[_0xf836[17]](function(_0xf0d0x8){return handleError(_0xf0d0x7,_0xf0d0x8)})};exports[_0xf836[32]]= function(_0xf0d0x9,_0xf0d0x7){if(_0xf0d0x9[_0xf836[31]][_0xf836[23]]){delete _0xf0d0x9[_0xf836[31]][_0xf836[23]]};return SmsMessage[_0xf836[28]](_0xf0d0x9[_0xf836[24]][_0xf836[23]],{include:[{all:true}]})[_0xf836[18]](function(_0xf0d0xd){if(!_0xf0d0xd){return _0xf0d0x7[_0xf836[22]](404)};var _0xf0d0xe=_[_0xf836[33]](_0xf0d0xd,_0xf0d0x9[_0xf836[31]]);return _0xf0d0xe[_0xf836[34]]()})[_0xf836[18]](function(_0xf0d0xe){return _0xf0d0x7[_0xf836[8]](200)[_0xf836[7]](_0xf0d0xe)})[_0xf836[17]](function(_0xf0d0x8){return handleError(_0xf0d0x7,_0xf0d0x8)})};exports[_0xf836[35]]= function(_0xf0d0x9,_0xf0d0x7){return SmsMessage[_0xf836[28]](_0xf0d0x9[_0xf836[24]][_0xf836[23]])[_0xf836[18]](function(_0xf0d0xd){if(!_0xf0d0xd){return _0xf0d0x7[_0xf836[22]](404)};return _0xf0d0xd[_0xf836[35]]()})[_0xf836[18]](function(){return _0xf0d0x7[_0xf836[22]](204)})[_0xf836[17]](function(_0xf0d0x8){return handleError(_0xf0d0x7,_0xf0d0x8)})};exports[_0xf836[36]]= function(_0xf0d0x9,_0xf0d0x7){return SmsMessage[_0xf836[38]]({where:{id:{$in:_0xf0d0x9[_0xf836[31]][_0xf836[23]]}},attributes:{directory:_0xf836[37]}})[_0xf836[18]](function(_0xf0d0xd){if(!_0xf0d0xd){return _0xf0d0x7[_0xf836[22]](404)};return _0xf0d0xd[_0xf836[35]]()})[_0xf836[18]](function(){return _0xf0d0x7[_0xf836[22]](204)})[_0xf836[17]](function(_0xf0d0x8){return handleError(_0xf0d0x7,_0xf0d0x8)})} \ No newline at end of file diff --git a/server/api/sms_message/sms_message.events.js b/server/api/sms_message/sms_message.events.js index 21dd796..3ab1b40 100644 --- a/server/api/sms_message/sms_message.events.js +++ b/server/api/sms_message/sms_message.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const SmsMessage = require('../../models').SmsMessage; - -var SmsMessageEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -SmsMessageEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'update', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - SmsMessage.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - SmsMessageEvents.emit(event + ':' + doc._id, doc); - SmsMessageEvents.emit(event, doc); - done(null); - } -} - -module.exports = SmsMessageEvents; +var _0xabd7=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x53\x6D\x73\x4D\x65\x73\x73\x61\x67\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x75\x70\x64\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xabd7[0];const EventEmitter=require(_0xabd7[1]);const SmsMessage=require(_0xabd7[3])[_0xabd7[2]];var SmsMessageEvents= new EventEmitter();SmsMessageEvents[_0xabd7[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xabd7[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xabd7[6],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xabd7[7]};for(var e in events){var event=events[e];SmsMessage[_0xabd7[8]](e,emitEvent(event))};function emitEvent(event){return function(_0x56a0x8,_0x56a0x9,_0x56a0xa){SmsMessageEvents[_0xabd7[11]](event+ _0xabd7[9]+ _0x56a0x8[_0xabd7[10]],_0x56a0x8);SmsMessageEvents[_0xabd7[11]](event,_0x56a0x8);_0x56a0xa(null)}}module[_0xabd7[12]]= SmsMessageEvents \ No newline at end of file diff --git a/server/api/sms_message/sms_message.socket.js b/server/api/sms_message/sms_message.socket.js index 70931c8..9c8fcba 100644 --- a/server/api/sms_message/sms_message.socket.js +++ b/server/api/sms_message/sms_message.socket.js @@ -1,47 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const SmsMessageEvents = require('./sms_message.events'); - -// Model events to emit -var events = ['save', 'update', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('sms_message:' + event, socket); - - SmsMessageEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - switch (event) { - case 'sms_message:save': - socket.emit(event, doc); - break; - case 'sms_message:update': - if (doc.changed('status')) { - socket.emit(event, doc); - } - break; - case 'sms_message:remove': - socket.emit(event, doc); - break; - - default: - - } - }; -} - -function removeListener(event, listener) { - return function() { - SmsMessageEvents.removeListener(event, listener); - }; -} +var _0xe383=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x73\x6D\x73\x5F\x6D\x65\x73\x73\x61\x67\x65\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x75\x70\x64\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x73\x6D\x73\x5F\x6D\x65\x73\x73\x61\x67\x65\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x73\x6D\x73\x5F\x6D\x65\x73\x73\x61\x67\x65\x3A\x73\x61\x76\x65","\x73\x74\x61\x74\x75\x73","\x63\x68\x61\x6E\x67\x65\x64","\x73\x6D\x73\x5F\x6D\x65\x73\x73\x61\x67\x65\x3A\x75\x70\x64\x61\x74\x65","\x73\x6D\x73\x5F\x6D\x65\x73\x73\x61\x67\x65\x3A\x72\x65\x6D\x6F\x76\x65","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xe383[0];const SmsMessageEvents=require(_0xe383[1]);var events=[_0xe383[2],_0xe383[3],_0xe383[4]];exports[_0xe383[5]]= function(_0x42a4x3){for(var _0x42a4x4=0,_0x42a4x5=events[_0xe383[6]];_0x42a4x4< _0x42a4x5;_0x42a4x4++){var _0x42a4x6=events[_0x42a4x4];var _0x42a4x7=createListener(_0xe383[7]+ _0x42a4x6,_0x42a4x3);SmsMessageEvents[_0xe383[8]](_0x42a4x6,_0x42a4x7);_0x42a4x3[_0xe383[8]](_0xe383[9],removeListener(_0x42a4x6,_0x42a4x7))}};function createListener(_0x42a4x6,_0x42a4x3){return function(_0x42a4x9){switch(_0x42a4x6){case _0xe383[11]:_0x42a4x3[_0xe383[10]](_0x42a4x6,_0x42a4x9);break;case _0xe383[14]:if(_0x42a4x9[_0xe383[13]](_0xe383[12])){_0x42a4x3[_0xe383[10]](_0x42a4x6,_0x42a4x9)};break;case _0xe383[15]:_0x42a4x3[_0xe383[10]](_0x42a4x6,_0x42a4x9);break;default:}}}function removeListener(_0x42a4x6,_0x42a4x7){return function(){SmsMessageEvents[_0xe383[16]](_0x42a4x6,_0x42a4x7)}} \ No newline at end of file diff --git a/server/api/sms_queue/index.js b/server/api/sms_queue/index.js index 2033118..bc28bb6 100644 --- a/server/api/sms_queue/index.js +++ b/server/api/sms_queue/index.js @@ -1,21 +1 @@ -'use strict'; - -var express = require('express'); -var auth = require('../../auth/auth.service'); -var controller = require('./sms_queue.controller'); -var license = require('../../config/license/license.service'); - -var router = express.Router(); - -router.get('/', license.isValidDate(), auth.isAuthenticated(), license.hasSms(), auth.hasModule([11], ['admin']), controller.index); -router.get('/:id', license.isValidDate(), auth.isAuthenticated(), license.hasSms(), auth.hasModule([11], ['admin']), controller.show); -router.get('/:id/agents', license.isValidDate(), auth.isAuthenticated(), license.hasSms(), auth.hasModule([11], ['admin']), controller.showAgents); -router.post('/', license.isValidDate(), auth.isAuthenticated(), license.hasSms(), auth.hasRole('admin'), controller.create); -router.post('/:id/agents', license.isValidDate(), auth.isAuthenticated(), license.hasSms(), auth.hasRole('admin'), controller.addAgents); -router.put('/:id', license.isValidDate(), auth.isAuthenticated(), license.hasSms(), auth.hasRole('admin'), controller.update); -router.patch('/:id', license.isValidDate(), auth.isAuthenticated(), license.hasSms(), auth.hasRole('admin'), controller.update); -router.delete('/:id', license.isValidDate(), auth.isAuthenticated(), license.hasSms(), auth.hasRole('admin'), controller.destroy); -router.delete('/:id/agents', license.isValidDate(), auth.isAuthenticated(), license.hasSms(), auth.hasRole('admin'), controller.removeAgents); -router.delete('/', license.isValidDate(), auth.isAuthenticated(), license.hasSms(), auth.hasRole('admin'), controller.bulkDestroy); - -module.exports = router; +var _0x471d=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x73\x6D\x73\x5F\x71\x75\x65\x75\x65\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x68\x61\x73\x53\x6D\x73","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x2F\x3A\x69\x64\x2F\x61\x67\x65\x6E\x74\x73","\x73\x68\x6F\x77\x41\x67\x65\x6E\x74\x73","\x68\x61\x73\x52\x6F\x6C\x65","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x61\x64\x64\x41\x67\x65\x6E\x74\x73","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x70\x61\x74\x63\x68","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x72\x65\x6D\x6F\x76\x65\x41\x67\x65\x6E\x74\x73","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0x471d[0];var express=require(_0x471d[1]);var auth=require(_0x471d[2]);var controller=require(_0x471d[3]);var license=require(_0x471d[4]);var router=express.Router();router[_0x471d[12]](_0x471d[5],license[_0x471d[6]](),auth[_0x471d[7]](),license[_0x471d[8]](),auth[_0x471d[10]]([11],[_0x471d[9]]),controller[_0x471d[11]]);router[_0x471d[12]](_0x471d[13],license[_0x471d[6]](),auth[_0x471d[7]](),license[_0x471d[8]](),auth[_0x471d[10]]([11],[_0x471d[9]]),controller[_0x471d[14]]);router[_0x471d[12]](_0x471d[15],license[_0x471d[6]](),auth[_0x471d[7]](),license[_0x471d[8]](),auth[_0x471d[10]]([11],[_0x471d[9]]),controller[_0x471d[16]]);router[_0x471d[19]](_0x471d[5],license[_0x471d[6]](),auth[_0x471d[7]](),license[_0x471d[8]](),auth[_0x471d[17]](_0x471d[9]),controller[_0x471d[18]]);router[_0x471d[19]](_0x471d[15],license[_0x471d[6]](),auth[_0x471d[7]](),license[_0x471d[8]](),auth[_0x471d[17]](_0x471d[9]),controller[_0x471d[20]]);router[_0x471d[22]](_0x471d[13],license[_0x471d[6]](),auth[_0x471d[7]](),license[_0x471d[8]](),auth[_0x471d[17]](_0x471d[9]),controller[_0x471d[21]]);router[_0x471d[23]](_0x471d[13],license[_0x471d[6]](),auth[_0x471d[7]](),license[_0x471d[8]](),auth[_0x471d[17]](_0x471d[9]),controller[_0x471d[21]]);router[_0x471d[25]](_0x471d[13],license[_0x471d[6]](),auth[_0x471d[7]](),license[_0x471d[8]](),auth[_0x471d[17]](_0x471d[9]),controller[_0x471d[24]]);router[_0x471d[25]](_0x471d[15],license[_0x471d[6]](),auth[_0x471d[7]](),license[_0x471d[8]](),auth[_0x471d[17]](_0x471d[9]),controller[_0x471d[26]]);router[_0x471d[25]](_0x471d[5],license[_0x471d[6]](),auth[_0x471d[7]](),license[_0x471d[8]](),auth[_0x471d[17]](_0x471d[9]),controller[_0x471d[27]]);module[_0x471d[28]]= router \ No newline at end of file diff --git a/server/api/sms_queue/sms_queue.controller.js b/server/api/sms_queue/sms_queue.controller.js index da0bf5b..d355c4b 100644 --- a/server/api/sms_queue/sms_queue.controller.js +++ b/server/api/sms_queue/sms_queue.controller.js @@ -1,242 +1 @@ -/** - * Using Rails-like standard naming convention for endpoints. - * GET /api/sms/queues -> index - * POST /api/sms/queues -> create - * GET /api/sms/queues/:id -> show - * PUT /api/sms/queues/:id -> update - * DELETE /api/sms/queues/:id -> destroy - */ - -'use strict'; - - -var _ = require('lodash'); -var Util = require('../../config/util'); - -var SmsQueue = require('../../models').SmsQueue; -var User = require('../../models').User; -var sequelize = require('../../models').sequelize; -var UserHasSmsQueue = require('../../models').UserHasSmsQueue; - -function handleError(res, err) { - return res.status(500).send(err); -} - -// Gets a list of SmsQueues -exports.index = function(req, res) { - - switch (req.user.role) { - case 'user': - return User - .findById(req.user.id, { - attributes: ['id'] - }) - .then(Util.getSmsQueuesIdByUser(req.query)) - .then(function(result) { - res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); - - default: - return SmsQueue - .scope('default') - .findAndCountAll(Util.getQuery(req.query)) - .then(function(result) { - res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); - } - - - -} - -// Gets a single SmsQueue from the DB -exports.show = function(req, res) { - return SmsQueue - .scope('default') - .findById(req.params.id) - .then(function(smsQueue) { - if (!smsQueue) { - return res.sendStatus(404); - } - return res.send(smsQueue); - }) - .catch(function(err) { - return handleError(res, err); - }); -} - -exports.showAgents = function(req, res) { - return SmsQueue - .findById(req.params.id) - .then(function(queue) { - if (!queue) { - return res.sendStatus(404); - } - return queue - .getUsers({ - where: { - role: 'agent' - }, - attributes: ['id', 'name', 'fullname', 'email'] - }); - }) - .then(function(agents) { - return res.status(200).send({ - rows: agents, - count: agents.length - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; -// Creates a new SmsQueue in the DB -exports.create = function(req, res) { - var _smsQueue; - - return SmsQueue - .create(req.body) - .then(function(smsQueue) { - _smsQueue = smsQueue; - - if (req.body.agents) { - return _smsQueue - .addUsers(req.body.agents, { - penalty: req.body.penalty || 0, - queue: _smsQueue.name - }); - } - }) - .then(function() { - return res.status(201).send(_smsQueue); - }) - .catch(sequelize.UniqueConstraintError, function(err) { - return Util.errorManager.handleUniqueConstraintError(res, err); - }) - .catch(function(err) { - return handleError(res, err); - }); -} - -// Updates an existing SmsQueue in the DB -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - return SmsQueue - .findById(req.params.id) - .then(function(smsQueue) { - if (!smsQueue) { - return res.sendStatus(404); - } - var updated = _.merge(smsQueue, req.body); - return updated - .save(); - }) - .then(function(smsQueue) { - return res.status(200).send(smsQueue); - }) - .catch(sequelize.UniqueConstraintError, function(err) { - return Util.errorManager.handleUniqueConstraintError(res, err); - }) - .catch(function(err) { - return handleError(res, err); - }); - } - // Updates an existing user_has_smsQueue in the DB. -exports.addAgents = function(req, res, next) { - return SmsQueue - .findById(req.params.id) - .then(function(smsQueue) { - if (!smsQueue) { - return res.sendStatus(404); - } - var userHasSmsQueues = _.map(req.body.agents, function(agent) { - return { - UserId: agent, - penalty: req.body.penalty, - SmsQueueId: smsQueue.id, - queue: smsQueue.name - }; - }); - - return UserHasSmsQueue - .bulkCreate(userHasSmsQueues, { - individualHooks: true - }); - }) - .then(function() { - return res.sendStatus(200); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.removeAgents = function(req, res) { - return SmsQueue - .findById(req.params.id) - .then(function(smsQueue) { - if (smsQueue) { - return smsQueue - .removeUsers(req.query.agents, { - individualHooks: true - }); - } else { - throw new Error('SmsQueue not found'); - } - }) - .then(function() { - return res.sendStatus(202); - }) - .catch(function(err) { - return handleError(res, err); - }); - -}; - -// Deletes a SmsQueue from the DB -exports.destroy = function(req, res) { - var _smsQueue; - return SmsQueue - .findById(req.params.id) - .then(function(smsQueue) { - _smsQueue = smsQueue; - if (!smsQueue) { - return res.sendStatus(404); - } - return smsQueue - .destroy(); - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(sequelize.ForeignKeyConstraintError, function(err) { - return Util.errorManager.handleForeignKeyConstraintError(res, 'queue', _smsQueue.name, err); - }) - .catch(function(err) { - console.error('err', err); - return handleError(res, err); - }); -} -exports.bulkDestroy = function(req, res) { - return SmsQueue - .destroy({ - where: { - id: req.query.ids - }, - individualHooks: true - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; +var _0x58da=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x53\x6D\x73\x51\x75\x65\x75\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x55\x73\x65\x72","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x55\x73\x65\x72\x48\x61\x73\x53\x6D\x73\x51\x75\x65\x75\x65","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x53\x6D\x73\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x69\x64","\x75\x73\x65\x72","\x66\x69\x6E\x64\x42\x79\x49\x64","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x64\x65\x66\x61\x75\x6C\x74","\x73\x63\x6F\x70\x65","\x72\x6F\x6C\x65","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x70\x61\x72\x61\x6D\x73","\x73\x68\x6F\x77\x41\x67\x65\x6E\x74\x73","\x6C\x65\x6E\x67\x74\x68","\x61\x67\x65\x6E\x74","\x6E\x61\x6D\x65","\x66\x75\x6C\x6C\x6E\x61\x6D\x65","\x65\x6D\x61\x69\x6C","\x67\x65\x74\x55\x73\x65\x72\x73","\x63\x72\x65\x61\x74\x65","\x68\x61\x6E\x64\x6C\x65\x55\x6E\x69\x71\x75\x65\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74\x45\x72\x72\x6F\x72","\x65\x72\x72\x6F\x72\x4D\x61\x6E\x61\x67\x65\x72","\x61\x67\x65\x6E\x74\x73","\x62\x6F\x64\x79","\x70\x65\x6E\x61\x6C\x74\x79","\x61\x64\x64\x55\x73\x65\x72\x73","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x61\x64\x64\x41\x67\x65\x6E\x74\x73","\x6D\x61\x70","\x62\x75\x6C\x6B\x43\x72\x65\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65\x41\x67\x65\x6E\x74\x73","\x72\x65\x6D\x6F\x76\x65\x55\x73\x65\x72\x73","\x53\x6D\x73\x51\x75\x65\x75\x65\x20\x6E\x6F\x74\x20\x66\x6F\x75\x6E\x64","\x64\x65\x73\x74\x72\x6F\x79","\x65\x72\x72","\x65\x72\x72\x6F\x72","\x71\x75\x65\x75\x65","\x68\x61\x6E\x64\x6C\x65\x46\x6F\x72\x65\x69\x67\x6E\x4B\x65\x79\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74\x45\x72\x72\x6F\x72","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73"];_0x58da[0];var _=require(_0x58da[1]);var Util=require(_0x58da[2]);var SmsQueue=require(_0x58da[4])[_0x58da[3]];var User=require(_0x58da[4])[_0x58da[5]];var sequelize=require(_0x58da[4])[_0x58da[6]];var UserHasSmsQueue=require(_0x58da[4])[_0x58da[7]];function handleError(_0x8662x8,_0x8662x9){return _0x8662x8[_0x58da[9]](500)[_0x58da[8]](_0x8662x9)}exports[_0x58da[10]]= function(_0x8662xa,_0x8662x8){switch(_0x8662xa[_0x58da[16]][_0x58da[22]]){case _0x58da[16]:return User[_0x58da[17]](_0x8662xa[_0x58da[16]][_0x58da[15]],{attributes:[_0x58da[15]]})[_0x58da[12]](Util[_0x58da[14]](_0x8662xa[_0x58da[13]]))[_0x58da[12]](function(_0x8662xb){_0x8662x8[_0x58da[9]](200)[_0x58da[8]](_0x8662xb)})[_0x58da[11]](function(_0x8662x9){return handleError(_0x8662x8,_0x8662x9)});default:return SmsQueue[_0x58da[21]](_0x58da[20])[_0x58da[19]](Util[_0x58da[18]](_0x8662xa[_0x58da[13]]))[_0x58da[12]](function(_0x8662xb){_0x8662x8[_0x58da[9]](200)[_0x58da[8]](_0x8662xb)})[_0x58da[11]](function(_0x8662x9){return handleError(_0x8662x8,_0x8662x9)})}};exports[_0x58da[23]]= function(_0x8662xa,_0x8662x8){return SmsQueue[_0x58da[21]](_0x58da[20])[_0x58da[17]](_0x8662xa[_0x58da[25]][_0x58da[15]])[_0x58da[12]](function(_0x8662xc){if(!_0x8662xc){return _0x8662x8[_0x58da[24]](404)};return _0x8662x8[_0x58da[8]](_0x8662xc)})[_0x58da[11]](function(_0x8662x9){return handleError(_0x8662x8,_0x8662x9)})};exports[_0x58da[26]]= function(_0x8662xa,_0x8662x8){return SmsQueue[_0x58da[17]](_0x8662xa[_0x58da[25]][_0x58da[15]])[_0x58da[12]](function(_0x8662xe){if(!_0x8662xe){return _0x8662x8[_0x58da[24]](404)};return _0x8662xe[_0x58da[32]]({where:{role:_0x58da[28]},attributes:[_0x58da[15],_0x58da[29],_0x58da[30],_0x58da[31]]})})[_0x58da[12]](function(_0x8662xd){return _0x8662x8[_0x58da[9]](200)[_0x58da[8]]({rows:_0x8662xd,count:_0x8662xd[_0x58da[27]]})})[_0x58da[11]](function(_0x8662x9){return handleError(_0x8662x8,_0x8662x9)})};exports[_0x58da[33]]= function(_0x8662xa,_0x8662x8){var _0x8662xf;return SmsQueue[_0x58da[33]](_0x8662xa[_0x58da[37]])[_0x58da[12]](function(_0x8662xc){_0x8662xf= _0x8662xc;if(_0x8662xa[_0x58da[37]][_0x58da[36]]){return _0x8662xf[_0x58da[39]](_0x8662xa[_0x58da[37]][_0x58da[36]],{penalty:_0x8662xa[_0x58da[37]][_0x58da[38]]|| 0,queue:_0x8662xf[_0x58da[29]]})}})[_0x58da[12]](function(){return _0x8662x8[_0x58da[9]](201)[_0x58da[8]](_0x8662xf)})[_0x58da[11]](sequelize.UniqueConstraintError,function(_0x8662x9){return Util[_0x58da[35]][_0x58da[34]](_0x8662x8,_0x8662x9)})[_0x58da[11]](function(_0x8662x9){return handleError(_0x8662x8,_0x8662x9)})};exports[_0x58da[40]]= function(_0x8662xa,_0x8662x8){if(_0x8662xa[_0x58da[37]][_0x58da[15]]){delete _0x8662xa[_0x58da[37]][_0x58da[15]]};return SmsQueue[_0x58da[17]](_0x8662xa[_0x58da[25]][_0x58da[15]])[_0x58da[12]](function(_0x8662xc){if(!_0x8662xc){return _0x8662x8[_0x58da[24]](404)};var _0x8662x10=_[_0x58da[41]](_0x8662xc,_0x8662xa[_0x58da[37]]);return _0x8662x10[_0x58da[42]]()})[_0x58da[12]](function(_0x8662xc){return _0x8662x8[_0x58da[9]](200)[_0x58da[8]](_0x8662xc)})[_0x58da[11]](sequelize.UniqueConstraintError,function(_0x8662x9){return Util[_0x58da[35]][_0x58da[34]](_0x8662x8,_0x8662x9)})[_0x58da[11]](function(_0x8662x9){return handleError(_0x8662x8,_0x8662x9)})};exports[_0x58da[43]]= function(_0x8662xa,_0x8662x8,_0x8662x11){return SmsQueue[_0x58da[17]](_0x8662xa[_0x58da[25]][_0x58da[15]])[_0x58da[12]](function(_0x8662xc){if(!_0x8662xc){return _0x8662x8[_0x58da[24]](404)};var _0x8662x12=_[_0x58da[44]](_0x8662xa[_0x58da[37]][_0x58da[36]],function(_0x8662x13){return {UserId:_0x8662x13,penalty:_0x8662xa[_0x58da[37]][_0x58da[38]],SmsQueueId:_0x8662xc[_0x58da[15]],queue:_0x8662xc[_0x58da[29]]}});return UserHasSmsQueue[_0x58da[45]](_0x8662x12,{individualHooks:true})})[_0x58da[12]](function(){return _0x8662x8[_0x58da[24]](200)})[_0x58da[11]](function(_0x8662x9){return handleError(_0x8662x8,_0x8662x9)})};exports[_0x58da[46]]= function(_0x8662xa,_0x8662x8){return SmsQueue[_0x58da[17]](_0x8662xa[_0x58da[25]][_0x58da[15]])[_0x58da[12]](function(_0x8662xc){if(_0x8662xc){return _0x8662xc[_0x58da[47]](_0x8662xa[_0x58da[13]][_0x58da[36]],{individualHooks:true})}else {throw new Error(_0x58da[48])}})[_0x58da[12]](function(){return _0x8662x8[_0x58da[24]](202)})[_0x58da[11]](function(_0x8662x9){return handleError(_0x8662x8,_0x8662x9)})};exports[_0x58da[49]]= function(_0x8662xa,_0x8662x8){var _0x8662xf;return SmsQueue[_0x58da[17]](_0x8662xa[_0x58da[25]][_0x58da[15]])[_0x58da[12]](function(_0x8662xc){_0x8662xf= _0x8662xc;if(!_0x8662xc){return _0x8662x8[_0x58da[24]](404)};return _0x8662xc[_0x58da[49]]()})[_0x58da[12]](function(){return _0x8662x8[_0x58da[24]](204)})[_0x58da[11]](sequelize.ForeignKeyConstraintError,function(_0x8662x9){return Util[_0x58da[35]][_0x58da[53]](_0x8662x8,_0x58da[52],_0x8662xf[_0x58da[29]],_0x8662x9)})[_0x58da[11]](function(_0x8662x9){console[_0x58da[51]](_0x58da[50],_0x8662x9);return handleError(_0x8662x8,_0x8662x9)})};exports[_0x58da[54]]= function(_0x8662xa,_0x8662x8){return SmsQueue[_0x58da[49]]({where:{id:_0x8662xa[_0x58da[13]][_0x58da[55]]},individualHooks:true})[_0x58da[12]](function(){return _0x8662x8[_0x58da[24]](204)})[_0x58da[11]](function(_0x8662x9){return handleError(_0x8662x8,_0x8662x9)})} \ No newline at end of file diff --git a/server/api/sms_queue/sms_queue.events.js b/server/api/sms_queue/sms_queue.events.js index 31beb9a..21842b4 100644 --- a/server/api/sms_queue/sms_queue.events.js +++ b/server/api/sms_queue/sms_queue.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const SmsQueue = require('../../models').SmsQueue; - -var SmsQueueEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -SmsQueueEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - SmsQueue.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - SmsQueueEvents.emit(event + ':' + doc._id, doc); - SmsQueueEvents.emit(event, doc); - done(null); - } -} - -module.exports = SmsQueueEvents; +var _0x88b1=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x53\x6D\x73\x51\x75\x65\x75\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x88b1[0];const EventEmitter=require(_0x88b1[1]);const SmsQueue=require(_0x88b1[3])[_0x88b1[2]];var SmsQueueEvents= new EventEmitter();SmsQueueEvents[_0x88b1[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x88b1[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x88b1[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x88b1[6]};for(var e in events){var event=events[e];SmsQueue[_0x88b1[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x2e9cx8,_0x2e9cx9,_0x2e9cxa){SmsQueueEvents[_0x88b1[10]](event+ _0x88b1[8]+ _0x2e9cx8[_0x88b1[9]],_0x2e9cx8);SmsQueueEvents[_0x88b1[10]](event,_0x2e9cx8);_0x2e9cxa(null)}}module[_0x88b1[11]]= SmsQueueEvents \ No newline at end of file diff --git a/server/api/sms_queue/sms_queue.socket.js b/server/api/sms_queue/sms_queue.socket.js index 2c6c4f1..75843ff 100644 --- a/server/api/sms_queue/sms_queue.socket.js +++ b/server/api/sms_queue/sms_queue.socket.js @@ -1,32 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const SmsQueueEvents = require('./sms_queue.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('sms_queue:' + event, socket); - - SmsQueueEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - SmsQueueEvents.removeListener(event, listener); - }; -} +var _0x8ded=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x73\x6D\x73\x5F\x71\x75\x65\x75\x65\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x73\x6D\x73\x5F\x71\x75\x65\x75\x65\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x8ded[0];const SmsQueueEvents=require(_0x8ded[1]);var events=[_0x8ded[2],_0x8ded[3]];exports[_0x8ded[4]]= function(_0xe7d9x3){for(var _0xe7d9x4=0,_0xe7d9x5=events[_0x8ded[5]];_0xe7d9x4< _0xe7d9x5;_0xe7d9x4++){var _0xe7d9x6=events[_0xe7d9x4];var _0xe7d9x7=createListener(_0x8ded[6]+ _0xe7d9x6,_0xe7d9x3);SmsQueueEvents[_0x8ded[7]](_0xe7d9x6,_0xe7d9x7);_0xe7d9x3[_0x8ded[7]](_0x8ded[8],removeListener(_0xe7d9x6,_0xe7d9x7))}};function createListener(_0xe7d9x6,_0xe7d9x3){return function(_0xe7d9x9){_0xe7d9x3[_0x8ded[9]](_0xe7d9x6,_0xe7d9x9)}}function removeListener(_0xe7d9x6,_0xe7d9x7){return function(){SmsQueueEvents[_0x8ded[10]](_0xe7d9x6,_0xe7d9x7)}} \ No newline at end of file diff --git a/server/api/sms_room/index.js b/server/api/sms_room/index.js index 429772f..1f0a87c 100644 --- a/server/api/sms_room/index.js +++ b/server/api/sms_room/index.js @@ -1,26 +1 @@ -'use strict'; - -var express = require('express'); -var auth = require('../../auth/auth.service'); -var controller = require('./sms_room.controller'); -var license = require('../../config/license/license.service'); - -var router = express.Router(); - -router.get('/', license.isValidDate(), license.hasSms(), auth.isAuthenticated(), auth.hasModule([11], ['admin', 'agent']), controller.index); -router.get('/describe', auth.isAuthenticated(), license.isValidDate(), license.hasSms(), auth.hasModule([1, 11], ['admin']), controller.describe); -router.get('/pending', auth.isAuthenticated(), license.isValidDate(), license.hasSms(), auth.hasModule([11, 17], ['admin']), controller.pending); -router.get('/new', auth.isAuthenticated(), license.isValidDate(), license.hasSms(), auth.hasModule([11, 17], ['admin']), controller.new); -router.get('/open', auth.isAuthenticated(), license.isValidDate(), license.hasSms(), auth.hasModule([11, 17], ['admin']), controller.open); -router.get('/closed', auth.isAuthenticated(), license.isValidDate(), license.hasSms(), auth.hasModule([11, 17], ['admin']), controller.closed); -router.get('/:id', license.isValidDate(), license.hasSms(), auth.isAuthenticated(), auth.hasModule([11], ['admin', 'agent']), controller.show); -router.get('/:id/agents', license.isValidDate(), license.hasSms(), auth.isAuthenticated(), auth.hasModule([11], ['admin', 'agent']), controller.showAgents); -router.get('/messages/:id', license.isValidDate(), license.hasSms(), auth.isAuthenticated(), auth.hasModule([11], ['admin', 'agent']), controller.getRoomByMessage); -router.post('/', license.isValidDate(), license.hasSms(), auth.isAuthenticated(), auth.hasModule([11], ['admin']), controller.create); -router.post('/:id/messages', license.isValidDate(), license.hasSms(), auth.isAuthenticated(), auth.hasModule([11], ['admin']), controller.createMessage); -router.put('/:id', license.isValidDate(), license.hasSms(), auth.isAuthenticated(), auth.hasModule([11], ['admin', 'agent']), controller.update); -router.put('/:id/agents', license.isValidDate(), license.hasSms(), auth.isAuthenticated(), auth.hasModule([11], ['admin', 'agent']), controller.updateAgents); -router.patch('/:id', license.isValidDate(), license.hasSms(), auth.isAuthenticated(), auth.hasModule([11], ['admin', 'agent']), controller.updatePatch); -router.delete('/:id', license.isValidDate(), license.hasSms(), auth.isAuthenticated(), auth.hasModule([11], ['admin']), controller.destroy); -router.delete('/', license.isValidDate(), license.hasSms(), auth.isAuthenticated(), auth.hasModule([11], ['admin']), controller.bulkDestroy); -module.exports = router; +var _0xcd1b=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x73\x6D\x73\x5F\x72\x6F\x6F\x6D\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x68\x61\x73\x53\x6D\x73","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x64\x65\x73\x63\x72\x69\x62\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x2F\x70\x65\x6E\x64\x69\x6E\x67","\x70\x65\x6E\x64\x69\x6E\x67","\x2F\x6E\x65\x77","\x6E\x65\x77","\x2F\x6F\x70\x65\x6E","\x6F\x70\x65\x6E","\x2F\x63\x6C\x6F\x73\x65\x64","\x63\x6C\x6F\x73\x65\x64","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x2F\x3A\x69\x64\x2F\x61\x67\x65\x6E\x74\x73","\x73\x68\x6F\x77\x41\x67\x65\x6E\x74\x73","\x2F\x6D\x65\x73\x73\x61\x67\x65\x73\x2F\x3A\x69\x64","\x67\x65\x74\x52\x6F\x6F\x6D\x42\x79\x4D\x65\x73\x73\x61\x67\x65","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x2F\x3A\x69\x64\x2F\x6D\x65\x73\x73\x61\x67\x65\x73","\x63\x72\x65\x61\x74\x65\x4D\x65\x73\x73\x61\x67\x65","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x75\x70\x64\x61\x74\x65\x41\x67\x65\x6E\x74\x73","\x75\x70\x64\x61\x74\x65\x50\x61\x74\x63\x68","\x70\x61\x74\x63\x68","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0xcd1b[0];var express=require(_0xcd1b[1]);var auth=require(_0xcd1b[2]);var controller=require(_0xcd1b[3]);var license=require(_0xcd1b[4]);var router=express.Router();router[_0xcd1b[13]](_0xcd1b[5],license[_0xcd1b[6]](),license[_0xcd1b[7]](),auth[_0xcd1b[8]](),auth[_0xcd1b[11]]([11],[_0xcd1b[9],_0xcd1b[10]]),controller[_0xcd1b[12]]);router[_0xcd1b[13]](_0xcd1b[14],auth[_0xcd1b[8]](),license[_0xcd1b[6]](),license[_0xcd1b[7]](),auth[_0xcd1b[11]]([1,11],[_0xcd1b[9]]),controller[_0xcd1b[15]]);router[_0xcd1b[13]](_0xcd1b[16],auth[_0xcd1b[8]](),license[_0xcd1b[6]](),license[_0xcd1b[7]](),auth[_0xcd1b[11]]([11,17],[_0xcd1b[9]]),controller[_0xcd1b[17]]);router[_0xcd1b[13]](_0xcd1b[18],auth[_0xcd1b[8]](),license[_0xcd1b[6]](),license[_0xcd1b[7]](),auth[_0xcd1b[11]]([11,17],[_0xcd1b[9]]),controller[_0xcd1b[19]]);router[_0xcd1b[13]](_0xcd1b[20],auth[_0xcd1b[8]](),license[_0xcd1b[6]](),license[_0xcd1b[7]](),auth[_0xcd1b[11]]([11,17],[_0xcd1b[9]]),controller[_0xcd1b[21]]);router[_0xcd1b[13]](_0xcd1b[22],auth[_0xcd1b[8]](),license[_0xcd1b[6]](),license[_0xcd1b[7]](),auth[_0xcd1b[11]]([11,17],[_0xcd1b[9]]),controller[_0xcd1b[23]]);router[_0xcd1b[13]](_0xcd1b[24],license[_0xcd1b[6]](),license[_0xcd1b[7]](),auth[_0xcd1b[8]](),auth[_0xcd1b[11]]([11],[_0xcd1b[9],_0xcd1b[10]]),controller[_0xcd1b[25]]);router[_0xcd1b[13]](_0xcd1b[26],license[_0xcd1b[6]](),license[_0xcd1b[7]](),auth[_0xcd1b[8]](),auth[_0xcd1b[11]]([11],[_0xcd1b[9],_0xcd1b[10]]),controller[_0xcd1b[27]]);router[_0xcd1b[13]](_0xcd1b[28],license[_0xcd1b[6]](),license[_0xcd1b[7]](),auth[_0xcd1b[8]](),auth[_0xcd1b[11]]([11],[_0xcd1b[9],_0xcd1b[10]]),controller[_0xcd1b[29]]);router[_0xcd1b[31]](_0xcd1b[5],license[_0xcd1b[6]](),license[_0xcd1b[7]](),auth[_0xcd1b[8]](),auth[_0xcd1b[11]]([11],[_0xcd1b[9]]),controller[_0xcd1b[30]]);router[_0xcd1b[31]](_0xcd1b[32],license[_0xcd1b[6]](),license[_0xcd1b[7]](),auth[_0xcd1b[8]](),auth[_0xcd1b[11]]([11],[_0xcd1b[9]]),controller[_0xcd1b[33]]);router[_0xcd1b[35]](_0xcd1b[24],license[_0xcd1b[6]](),license[_0xcd1b[7]](),auth[_0xcd1b[8]](),auth[_0xcd1b[11]]([11],[_0xcd1b[9],_0xcd1b[10]]),controller[_0xcd1b[34]]);router[_0xcd1b[35]](_0xcd1b[26],license[_0xcd1b[6]](),license[_0xcd1b[7]](),auth[_0xcd1b[8]](),auth[_0xcd1b[11]]([11],[_0xcd1b[9],_0xcd1b[10]]),controller[_0xcd1b[36]]);router[_0xcd1b[38]](_0xcd1b[24],license[_0xcd1b[6]](),license[_0xcd1b[7]](),auth[_0xcd1b[8]](),auth[_0xcd1b[11]]([11],[_0xcd1b[9],_0xcd1b[10]]),controller[_0xcd1b[37]]);router[_0xcd1b[40]](_0xcd1b[24],license[_0xcd1b[6]](),license[_0xcd1b[7]](),auth[_0xcd1b[8]](),auth[_0xcd1b[11]]([11],[_0xcd1b[9]]),controller[_0xcd1b[39]]);router[_0xcd1b[40]](_0xcd1b[5],license[_0xcd1b[6]](),license[_0xcd1b[7]](),auth[_0xcd1b[8]](),auth[_0xcd1b[11]]([11],[_0xcd1b[9]]),controller[_0xcd1b[41]]);module[_0xcd1b[42]]= router \ No newline at end of file diff --git a/server/api/sms_room/sms_room.controller.js b/server/api/sms_room/sms_room.controller.js index e3946f0..9b0240e 100644 --- a/server/api/sms_room/sms_room.controller.js +++ b/server/api/sms_room/sms_room.controller.js @@ -1,399 +1 @@ -/** - * Using Rails-like standard naming convention for endpoints. - * GET /api/sms/rooms -> index - * POST /api/sms/rooms -> create - * GET /api/sms/rooms/:id -> show - * PUT /api/sms/rooms/:id -> update - * DELETE /api/sms/rooms/:id -> destroy - */ - -'use strict'; - - -var _ = require('lodash'); -var Util = require('../../config/util'); -var moment = require('moment'); - -var SmsRoom = require('../../models').SmsRoom; -var User = require('../../models').User; -var SmsMessage = require('../../models').SmsMessage; -var SmsAccount = require('../../models').SmsAccount; -var User = require('../../models').User; -var SmsApplication = require('../../models').SmsApplication; -var SmsQueue = require('../../models').SmsQueue; - - -function handleError(res, err) { - return res.status(500).send(err); -} - - - -// Gets a list of SmsRooms -exports.index = function(req, res) { - switch (req.user.role) { - case 'agent': - return SmsRoom - .scope('default', { - method: ['agent', req.user.id] - }) - .findAndCountAll(Util.getQuery(req.query)) - .then(function(result) { - return res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); - - default: - return SmsRoom - .scope('default') - .findAndCountAll(Util.getQuery(req.query)) - .then(function(result) { - return res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); - } -} - -// Get list of fields -exports.describe = function(req, res) { - return SmsRoom - .describe() - .then(function(fields) { - return res.status(200).send(fields); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function getSmsQueues(user) { - return function() { - switch (user.role) { - case 'user': - return User - .findById(user.id, { - attributes: ['id'] - }) - .then(Util.getSmsQueuesIdByUser({}, { - attributes: ['id'], - include: [{ - raw: true, - model: User, - attributes: ['id'] - }] - })) - .then(function(userQueues) { - return { - include: { - model: SmsAccount, - include: { - model: SmsApplication, - include: { - model: SmsQueue, - where: { - id: _.map(userQueues, 'id') - } - } - } - } - }; - }); - default: - return {}; - } - } -} - -exports.pending = function(req, res) { - return Promise - .all([]) - .then(getSmsQueues(req.user)) - .then(function(condition) { - return SmsRoom - .count(_.merge(Util.getQuery(req.query, { - status: 'PENDING', - updatedAt: { - $gte: moment().startOf('day') - } - }), condition)); - }) - .then(function(data) { - return res.status(200).send({ - value: data - }); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -exports.new = function(req, res) { - return Promise - .all([]) - .then(getSmsQueues(req.user)) - .then(function(condition) { - return SmsRoom - .count(_.merge(Util.getQuery(req.query, { - status: 'NEW', - updatedAt: { - $gte: moment().startOf('day') - } - }), condition)); - }) - .then(function(data) { - return res.status(200).send({ - value: data - }); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -exports.open = function(req, res) { - return Promise - .all([]) - .then(getSmsQueues(req.user)) - .then(function(condition) { - return SmsRoom - .count(_.merge(Util.getQuery(req.query, { - status: 'OPEN', - updatedAt: { - $gte: moment().startOf('day') - } - }), condition)); - }) - .then(function(data) { - return res.status(200).send({ - value: data - }); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -exports.closed = function(req, res) { - return Promise - .all([]) - .then(getSmsQueues(req.user)) - .then(function(condition) { - return SmsRoom - .count(_.merge(Util.getQuery(req.query, { - status: 'CLOSED', - updatedAt: { - $gte: moment().startOf('day') - } - }), condition)); - }) - .then(function(data) { - return res.status(200).send({ - value: data - }); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -// Gets a single SmsRoom from the DB -exports.show = function(req, res) { - return SmsRoom - .scope('default') - .findById(req.params.id) - .then(function(smsRoom) { - if (!smsRoom) { - return res.sendStatus(404); - } - return res.send(smsRoom); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; -exports.showAgents = function(req, res, next) { - return SmsRoom - .findById(req.params.id) - .then(function(smsRoom) { - if (!smsRoom) { - return res.sendStatus(404); - } - - return smsRoom - .getUsers({ - attributes: ['id', 'name', 'fullname', 'email', 'role', 'internal'] - }); - }) - .then(function(users) { - return res.send(users); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; -exports.getRoomByMessage = function(req, res, next) { - return SmsMessage - .findById(req.params.id) - .then(function(Message) { - return Message - .getSmsRoom({ - include: [{ - model: SmsAccount - }, { - model: SmsMessage, - include: [{ - model: User, - attributes: ['id', 'name', 'fullname', 'email'] - }] - }, { - model: User, - attributes: ['id', 'name', 'fullname', 'email'] - }] - }); - }) - .then(function(Room) { - // console.log('room', Room); - return res.send(Room); - }) - .catch(function(err) { - console.log('err', err); - return handleError(res, err); - }); -}; -// Creates a new SmsRoom in the DB -exports.create = function(req, res) { - - return SmsRoom - .create(req.body) - .then(function(smsMessage) { - return res.status(201).send(smsMessage); - }) - .catch(function(err) { - return handleError(res, err); - }); -} - - -// Creates a new mailMessage in the DB. -exports.createMessage = function(req, res, next) { - req.body.UserId = req.user.id; - req.body.SmsRoomId = req.params.id; - return SmsMessage - .create(req.body) - .then(function(smsMessage) { - return res.status(201).send(smsMessage); - }).catch(function(err) { - return handleError(res, err); - }); -}; -// Updates an existing SmsRoom in the DB -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - return SmsRoom - .findById(req.params.id) - .then(function(smsRoom) { - if (!smsRoom) { - return res.sendStatus(404); - } - - var updated = _.merge(smsRoom, req.body); - - return updated - .save(); - }) - .then(function(smsRoom) { - return res.status(200).send(smsRoom); - }) - .catch(function(err) { - return handleError(res, err); - }); -} - -exports.updateAgents = function(req, res, next) { - return SmsRoom - .findById(req.params.id) - .then(function(smsRoom) { - if (!smsRoom) { - return res.sendStatus(404); - } - - return smsRoom - .setUsers(req.body.agents, { - individualHooks: true - }); - }) - .then(function() { - return res.sendStatus(200); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes a SmsRoom from the DB -exports.destroy = function(req, res) { - return SmsRoom - .findById(req.params.id) - .then(function(smsRoom) { - if (!smsRoom) { - return res.sendStatus(404); - } - return smsRoom.destroy(); - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -} - -exports.bulkDestroy = function(req, res) { - return SmsRoom - .destroy({ - where: { - id: req.query.ids - }, - individualHooks: true - }) - .then(function() { - return res.sendStatus(200); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; -exports.updatePatch = function(req, res, next) { - var _options = { - where: { - id: req.params.id.split(',') - }, - user: req.user, - individualHooks: true - }; - - return SmsRoom - .update(req.body, _options) - .then(function(smsRooms) { - if (!smsRooms) { - return res.sendStatus(404); - } - return smsRooms - }) - .then(function(smsRooms) { - return res.sendStatus(200); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; +var _0x7bcf=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x6D\x6F\x6D\x65\x6E\x74","\x53\x6D\x73\x52\x6F\x6F\x6D","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x55\x73\x65\x72","\x53\x6D\x73\x4D\x65\x73\x73\x61\x67\x65","\x53\x6D\x73\x41\x63\x63\x6F\x75\x6E\x74","\x53\x6D\x73\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x53\x6D\x73\x51\x75\x65\x75\x65","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x64\x65\x66\x61\x75\x6C\x74","\x61\x67\x65\x6E\x74","\x69\x64","\x75\x73\x65\x72","\x73\x63\x6F\x70\x65","\x72\x6F\x6C\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x6D\x61\x70","\x67\x65\x74\x53\x6D\x73\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x66\x69\x6E\x64\x42\x79\x49\x64","\x70\x65\x6E\x64\x69\x6E\x67","\x6C\x6F\x67","\x50\x45\x4E\x44\x49\x4E\x47","\x64\x61\x79","\x73\x74\x61\x72\x74\x4F\x66","\x6D\x65\x72\x67\x65","\x63\x6F\x75\x6E\x74","\x61\x6C\x6C","\x6E\x65\x77","\x4E\x45\x57","\x6F\x70\x65\x6E","\x4F\x50\x45\x4E","\x63\x6C\x6F\x73\x65\x64","\x43\x4C\x4F\x53\x45\x44","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x70\x61\x72\x61\x6D\x73","\x73\x68\x6F\x77\x41\x67\x65\x6E\x74\x73","\x6E\x61\x6D\x65","\x66\x75\x6C\x6C\x6E\x61\x6D\x65","\x65\x6D\x61\x69\x6C","\x69\x6E\x74\x65\x72\x6E\x61\x6C","\x67\x65\x74\x55\x73\x65\x72\x73","\x67\x65\x74\x52\x6F\x6F\x6D\x42\x79\x4D\x65\x73\x73\x61\x67\x65","\x65\x72\x72","\x67\x65\x74\x53\x6D\x73\x52\x6F\x6F\x6D","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x63\x72\x65\x61\x74\x65\x4D\x65\x73\x73\x61\x67\x65","\x55\x73\x65\x72\x49\x64","\x53\x6D\x73\x52\x6F\x6F\x6D\x49\x64","\x75\x70\x64\x61\x74\x65","\x73\x61\x76\x65","\x75\x70\x64\x61\x74\x65\x41\x67\x65\x6E\x74\x73","\x61\x67\x65\x6E\x74\x73","\x73\x65\x74\x55\x73\x65\x72\x73","\x64\x65\x73\x74\x72\x6F\x79","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73","\x75\x70\x64\x61\x74\x65\x50\x61\x74\x63\x68","\x2C","\x73\x70\x6C\x69\x74"];_0x7bcf[0];var _=require(_0x7bcf[1]);var Util=require(_0x7bcf[2]);var moment=require(_0x7bcf[3]);var SmsRoom=require(_0x7bcf[5])[_0x7bcf[4]];var User=require(_0x7bcf[5])[_0x7bcf[6]];var SmsMessage=require(_0x7bcf[5])[_0x7bcf[7]];var SmsAccount=require(_0x7bcf[5])[_0x7bcf[8]];var User=require(_0x7bcf[5])[_0x7bcf[6]];var SmsApplication=require(_0x7bcf[5])[_0x7bcf[9]];var SmsQueue=require(_0x7bcf[5])[_0x7bcf[10]];function handleError(_0x42e2xb,_0x42e2xc){return _0x42e2xb[_0x7bcf[12]](500)[_0x7bcf[11]](_0x42e2xc)}exports[_0x7bcf[13]]= function(_0x42e2xd,_0x42e2xb){switch(_0x42e2xd[_0x7bcf[22]][_0x7bcf[24]]){case _0x7bcf[20]:return SmsRoom[_0x7bcf[23]](_0x7bcf[19],{method:[_0x7bcf[20],_0x42e2xd[_0x7bcf[22]][_0x7bcf[21]]]})[_0x7bcf[18]](Util[_0x7bcf[17]](_0x42e2xd[_0x7bcf[16]]))[_0x7bcf[15]](function(_0x42e2xe){return _0x42e2xb[_0x7bcf[12]](200)[_0x7bcf[11]](_0x42e2xe)})[_0x7bcf[14]](function(_0x42e2xc){return handleError(_0x42e2xb,_0x42e2xc)});default:return SmsRoom[_0x7bcf[23]](_0x7bcf[19])[_0x7bcf[18]](Util[_0x7bcf[17]](_0x42e2xd[_0x7bcf[16]]))[_0x7bcf[15]](function(_0x42e2xe){return _0x42e2xb[_0x7bcf[12]](200)[_0x7bcf[11]](_0x42e2xe)})[_0x7bcf[14]](function(_0x42e2xc){return handleError(_0x42e2xb,_0x42e2xc)})}};exports[_0x7bcf[25]]= function(_0x42e2xd,_0x42e2xb){return SmsRoom[_0x7bcf[25]]()[_0x7bcf[15]](function(_0x42e2xf){return _0x42e2xb[_0x7bcf[12]](200)[_0x7bcf[11]](_0x42e2xf)})[_0x7bcf[14]](function(_0x42e2xc){return handleError(_0x42e2xb,_0x42e2xc)})};function getSmsQueues(_0x42e2x11){return function(){switch(_0x42e2x11[_0x7bcf[24]]){case _0x7bcf[22]:return User[_0x7bcf[28]](_0x42e2x11[_0x7bcf[21]],{attributes:[_0x7bcf[21]]})[_0x7bcf[15]](Util[_0x7bcf[27]]({},{attributes:[_0x7bcf[21]],include:[{raw:true,model:User,attributes:[_0x7bcf[21]]}]}))[_0x7bcf[15]](function(_0x42e2x12){return {include:{model:SmsAccount,include:{model:SmsApplication,include:{model:SmsQueue,where:{id:_[_0x7bcf[26]](_0x42e2x12,_0x7bcf[21])}}}}}});default:return {}}}}exports[_0x7bcf[29]]= function(_0x42e2xd,_0x42e2xb){return Promise[_0x7bcf[36]]([])[_0x7bcf[15]](getSmsQueues(_0x42e2xd[_0x7bcf[22]]))[_0x7bcf[15]](function(_0x42e2x14){return SmsRoom[_0x7bcf[35]](_[_0x7bcf[34]](Util[_0x7bcf[17]](_0x42e2xd[_0x7bcf[16]],{status:_0x7bcf[31],updatedAt:{$gte:moment()[_0x7bcf[33]](_0x7bcf[32])}}),_0x42e2x14))})[_0x7bcf[15]](function(_0x42e2x13){return _0x42e2xb[_0x7bcf[12]](200)[_0x7bcf[11]]({value:_0x42e2x13})})[_0x7bcf[14]](function(_0x42e2xc){console[_0x7bcf[30]](_0x42e2xc);return handleError(_0x42e2xb,_0x42e2xc)})};exports[_0x7bcf[37]]= function(_0x42e2xd,_0x42e2xb){return Promise[_0x7bcf[36]]([])[_0x7bcf[15]](getSmsQueues(_0x42e2xd[_0x7bcf[22]]))[_0x7bcf[15]](function(_0x42e2x14){return SmsRoom[_0x7bcf[35]](_[_0x7bcf[34]](Util[_0x7bcf[17]](_0x42e2xd[_0x7bcf[16]],{status:_0x7bcf[38],updatedAt:{$gte:moment()[_0x7bcf[33]](_0x7bcf[32])}}),_0x42e2x14))})[_0x7bcf[15]](function(_0x42e2x13){return _0x42e2xb[_0x7bcf[12]](200)[_0x7bcf[11]]({value:_0x42e2x13})})[_0x7bcf[14]](function(_0x42e2xc){console[_0x7bcf[30]](_0x42e2xc);return handleError(_0x42e2xb,_0x42e2xc)})};exports[_0x7bcf[39]]= function(_0x42e2xd,_0x42e2xb){return Promise[_0x7bcf[36]]([])[_0x7bcf[15]](getSmsQueues(_0x42e2xd[_0x7bcf[22]]))[_0x7bcf[15]](function(_0x42e2x14){return SmsRoom[_0x7bcf[35]](_[_0x7bcf[34]](Util[_0x7bcf[17]](_0x42e2xd[_0x7bcf[16]],{status:_0x7bcf[40],updatedAt:{$gte:moment()[_0x7bcf[33]](_0x7bcf[32])}}),_0x42e2x14))})[_0x7bcf[15]](function(_0x42e2x13){return _0x42e2xb[_0x7bcf[12]](200)[_0x7bcf[11]]({value:_0x42e2x13})})[_0x7bcf[14]](function(_0x42e2xc){console[_0x7bcf[30]](_0x42e2xc);return handleError(_0x42e2xb,_0x42e2xc)})};exports[_0x7bcf[41]]= function(_0x42e2xd,_0x42e2xb){return Promise[_0x7bcf[36]]([])[_0x7bcf[15]](getSmsQueues(_0x42e2xd[_0x7bcf[22]]))[_0x7bcf[15]](function(_0x42e2x14){return SmsRoom[_0x7bcf[35]](_[_0x7bcf[34]](Util[_0x7bcf[17]](_0x42e2xd[_0x7bcf[16]],{status:_0x7bcf[42],updatedAt:{$gte:moment()[_0x7bcf[33]](_0x7bcf[32])}}),_0x42e2x14))})[_0x7bcf[15]](function(_0x42e2x13){return _0x42e2xb[_0x7bcf[12]](200)[_0x7bcf[11]]({value:_0x42e2x13})})[_0x7bcf[14]](function(_0x42e2xc){console[_0x7bcf[30]](_0x42e2xc);return handleError(_0x42e2xb,_0x42e2xc)})};exports[_0x7bcf[43]]= function(_0x42e2xd,_0x42e2xb){return SmsRoom[_0x7bcf[23]](_0x7bcf[19])[_0x7bcf[28]](_0x42e2xd[_0x7bcf[45]][_0x7bcf[21]])[_0x7bcf[15]](function(_0x42e2x15){if(!_0x42e2x15){return _0x42e2xb[_0x7bcf[44]](404)};return _0x42e2xb[_0x7bcf[11]](_0x42e2x15)})[_0x7bcf[14]](function(_0x42e2xc){return handleError(_0x42e2xb,_0x42e2xc)})};exports[_0x7bcf[46]]= function(_0x42e2xd,_0x42e2xb,_0x42e2x16){return SmsRoom[_0x7bcf[28]](_0x42e2xd[_0x7bcf[45]][_0x7bcf[21]])[_0x7bcf[15]](function(_0x42e2x15){if(!_0x42e2x15){return _0x42e2xb[_0x7bcf[44]](404)};return _0x42e2x15[_0x7bcf[51]]({attributes:[_0x7bcf[21],_0x7bcf[47],_0x7bcf[48],_0x7bcf[49],_0x7bcf[24],_0x7bcf[50]]})})[_0x7bcf[15]](function(_0x42e2x17){return _0x42e2xb[_0x7bcf[11]](_0x42e2x17)})[_0x7bcf[14]](function(_0x42e2xc){return handleError(_0x42e2xb,_0x42e2xc)})};exports[_0x7bcf[52]]= function(_0x42e2xd,_0x42e2xb,_0x42e2x16){return SmsMessage[_0x7bcf[28]](_0x42e2xd[_0x7bcf[45]][_0x7bcf[21]])[_0x7bcf[15]](function(_0x42e2x19){return _0x42e2x19[_0x7bcf[54]]({include:[{model:SmsAccount},{model:SmsMessage,include:[{model:User,attributes:[_0x7bcf[21],_0x7bcf[47],_0x7bcf[48],_0x7bcf[49]]}]},{model:User,attributes:[_0x7bcf[21],_0x7bcf[47],_0x7bcf[48],_0x7bcf[49]]}]})})[_0x7bcf[15]](function(_0x42e2x18){return _0x42e2xb[_0x7bcf[11]](_0x42e2x18)})[_0x7bcf[14]](function(_0x42e2xc){console[_0x7bcf[30]](_0x7bcf[53],_0x42e2xc);return handleError(_0x42e2xb,_0x42e2xc)})};exports[_0x7bcf[55]]= function(_0x42e2xd,_0x42e2xb){return SmsRoom[_0x7bcf[55]](_0x42e2xd[_0x7bcf[56]])[_0x7bcf[15]](function(_0x42e2x1a){return _0x42e2xb[_0x7bcf[12]](201)[_0x7bcf[11]](_0x42e2x1a)})[_0x7bcf[14]](function(_0x42e2xc){return handleError(_0x42e2xb,_0x42e2xc)})};exports[_0x7bcf[57]]= function(_0x42e2xd,_0x42e2xb,_0x42e2x16){_0x42e2xd[_0x7bcf[56]][_0x7bcf[58]]= _0x42e2xd[_0x7bcf[22]][_0x7bcf[21]];_0x42e2xd[_0x7bcf[56]][_0x7bcf[59]]= _0x42e2xd[_0x7bcf[45]][_0x7bcf[21]];return SmsMessage[_0x7bcf[55]](_0x42e2xd[_0x7bcf[56]])[_0x7bcf[15]](function(_0x42e2x1a){return _0x42e2xb[_0x7bcf[12]](201)[_0x7bcf[11]](_0x42e2x1a)})[_0x7bcf[14]](function(_0x42e2xc){return handleError(_0x42e2xb,_0x42e2xc)})};exports[_0x7bcf[60]]= function(_0x42e2xd,_0x42e2xb){if(_0x42e2xd[_0x7bcf[56]][_0x7bcf[21]]){delete _0x42e2xd[_0x7bcf[56]][_0x7bcf[21]]};return SmsRoom[_0x7bcf[28]](_0x42e2xd[_0x7bcf[45]][_0x7bcf[21]])[_0x7bcf[15]](function(_0x42e2x15){if(!_0x42e2x15){return _0x42e2xb[_0x7bcf[44]](404)};var _0x42e2x1b=_[_0x7bcf[34]](_0x42e2x15,_0x42e2xd[_0x7bcf[56]]);return _0x42e2x1b[_0x7bcf[61]]()})[_0x7bcf[15]](function(_0x42e2x15){return _0x42e2xb[_0x7bcf[12]](200)[_0x7bcf[11]](_0x42e2x15)})[_0x7bcf[14]](function(_0x42e2xc){return handleError(_0x42e2xb,_0x42e2xc)})};exports[_0x7bcf[62]]= function(_0x42e2xd,_0x42e2xb,_0x42e2x16){return SmsRoom[_0x7bcf[28]](_0x42e2xd[_0x7bcf[45]][_0x7bcf[21]])[_0x7bcf[15]](function(_0x42e2x15){if(!_0x42e2x15){return _0x42e2xb[_0x7bcf[44]](404)};return _0x42e2x15[_0x7bcf[64]](_0x42e2xd[_0x7bcf[56]][_0x7bcf[63]],{individualHooks:true})})[_0x7bcf[15]](function(){return _0x42e2xb[_0x7bcf[44]](200)})[_0x7bcf[14]](function(_0x42e2xc){return handleError(_0x42e2xb,_0x42e2xc)})};exports[_0x7bcf[65]]= function(_0x42e2xd,_0x42e2xb){return SmsRoom[_0x7bcf[28]](_0x42e2xd[_0x7bcf[45]][_0x7bcf[21]])[_0x7bcf[15]](function(_0x42e2x15){if(!_0x42e2x15){return _0x42e2xb[_0x7bcf[44]](404)};return _0x42e2x15[_0x7bcf[65]]()})[_0x7bcf[15]](function(){return _0x42e2xb[_0x7bcf[44]](204)})[_0x7bcf[14]](function(_0x42e2xc){return handleError(_0x42e2xb,_0x42e2xc)})};exports[_0x7bcf[66]]= function(_0x42e2xd,_0x42e2xb){return SmsRoom[_0x7bcf[65]]({where:{id:_0x42e2xd[_0x7bcf[16]][_0x7bcf[67]]},individualHooks:true})[_0x7bcf[15]](function(){return _0x42e2xb[_0x7bcf[44]](200)})[_0x7bcf[14]](function(_0x42e2xc){return handleError(_0x42e2xb,_0x42e2xc)})};exports[_0x7bcf[68]]= function(_0x42e2xd,_0x42e2xb,_0x42e2x16){var _0x42e2x1c={where:{id:_0x42e2xd[_0x7bcf[45]][_0x7bcf[21]][_0x7bcf[70]](_0x7bcf[69])},user:_0x42e2xd[_0x7bcf[22]],individualHooks:true};return SmsRoom[_0x7bcf[60]](_0x42e2xd[_0x7bcf[56]],_0x42e2x1c)[_0x7bcf[15]](function(_0x42e2x1d){if(!_0x42e2x1d){return _0x42e2xb[_0x7bcf[44]](404)};return _0x42e2x1d})[_0x7bcf[15]](function(_0x42e2x1d){return _0x42e2xb[_0x7bcf[44]](200)})[_0x7bcf[14]](function(_0x42e2xc){return handleError(_0x42e2xb,_0x42e2xc)})} \ No newline at end of file diff --git a/server/api/sms_room/sms_room.events.js b/server/api/sms_room/sms_room.events.js index a1390fd..f4d3109 100644 --- a/server/api/sms_room/sms_room.events.js +++ b/server/api/sms_room/sms_room.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const SmsRoom = require('../../models').SmsRoom; - -var SmsRoomEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -SmsRoomEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - SmsRoom.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - SmsRoomEvents.emit(event + ':' + doc._id, doc); - SmsRoomEvents.emit(event, doc); - done(null); - } -} - -module.exports = SmsRoomEvents; +var _0x8237=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x53\x6D\x73\x52\x6F\x6F\x6D","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x8237[0];const EventEmitter=require(_0x8237[1]);const SmsRoom=require(_0x8237[3])[_0x8237[2]];var SmsRoomEvents= new EventEmitter();SmsRoomEvents[_0x8237[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x8237[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x8237[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x8237[6]};for(var e in events){var event=events[e];SmsRoom[_0x8237[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x8de2x8,_0x8de2x9,_0x8de2xa){SmsRoomEvents[_0x8237[10]](event+ _0x8237[8]+ _0x8de2x8[_0x8237[9]],_0x8de2x8);SmsRoomEvents[_0x8237[10]](event,_0x8de2x8);_0x8de2xa(null)}}module[_0x8237[11]]= SmsRoomEvents \ No newline at end of file diff --git a/server/api/sms_room/sms_room.socket.js b/server/api/sms_room/sms_room.socket.js index fe08042..5b37827 100644 --- a/server/api/sms_room/sms_room.socket.js +++ b/server/api/sms_room/sms_room.socket.js @@ -1,33 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const SmsRoomEvents = require('./sms_room.events'); - -// Model events to emit -var events = ['save', 'save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('sms_room:' + event, socket); - - SmsRoomEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - - -function removeListener(event, listener) { - return function() { - SmsRoomEvents.removeListener(event, listener); - }; -} +var _0x1b54=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x73\x6D\x73\x5F\x72\x6F\x6F\x6D\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x73\x6D\x73\x5F\x72\x6F\x6F\x6D\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x1b54[0];const SmsRoomEvents=require(_0x1b54[1]);var events=[_0x1b54[2],_0x1b54[2],_0x1b54[3]];exports[_0x1b54[4]]= function(_0xc00cx3){for(var _0xc00cx4=0,_0xc00cx5=events[_0x1b54[5]];_0xc00cx4< _0xc00cx5;_0xc00cx4++){var _0xc00cx6=events[_0xc00cx4];var _0xc00cx7=createListener(_0x1b54[6]+ _0xc00cx6,_0xc00cx3);SmsRoomEvents[_0x1b54[7]](_0xc00cx6,_0xc00cx7);_0xc00cx3[_0x1b54[7]](_0x1b54[8],removeListener(_0xc00cx6,_0xc00cx7))}};function createListener(_0xc00cx6,_0xc00cx3){return function(_0xc00cx9){_0xc00cx3[_0x1b54[9]](_0xc00cx6,_0xc00cx9)}}function removeListener(_0xc00cx6,_0xc00cx7){return function(){SmsRoomEvents[_0x1b54[10]](_0xc00cx6,_0xc00cx7)}} \ No newline at end of file diff --git a/server/api/sound/index.js b/server/api/sound/index.js index ac4a804..cea9b85 100644 --- a/server/api/sound/index.js +++ b/server/api/sound/index.js @@ -1,17 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./sound.controller'); -var auth = require('../../auth/auth.service'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), auth.hasModule([13, 7], ['admin']), controller.index); -router.get('/:id', auth.isAuthenticated(), auth.hasModule([13], ['admin']), controller.show); -router.get('/:id/download', auth.isAuthenticated(), auth.hasModule([13], ['admin']), controller.download); -router.get('/:id/stream', auth.isAuthenticated(), auth.hasModule([13], ['admin']), controller.stream); -router.post('/', auth.isAuthenticated(), auth.hasModule([13], ['admin']), controller.create); -router.put('/:id', auth.isAuthenticated(), auth.hasModule([13], ['admin']), controller.update); -router.delete('/:id', auth.isAuthenticated(), auth.hasModule([13], ['admin']), controller.destroy); - -module.exports = router; +var _0x76ef=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x73\x6F\x75\x6E\x64\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x2F\x3A\x69\x64\x2F\x64\x6F\x77\x6E\x6C\x6F\x61\x64","\x64\x6F\x77\x6E\x6C\x6F\x61\x64","\x2F\x3A\x69\x64\x2F\x73\x74\x72\x65\x61\x6D","\x73\x74\x72\x65\x61\x6D","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0x76ef[0];var express=require(_0x76ef[1]);var controller=require(_0x76ef[2]);var auth=require(_0x76ef[3]);var router=express.Router();router[_0x76ef[9]](_0x76ef[4],auth[_0x76ef[5]](),auth[_0x76ef[7]]([13,7],[_0x76ef[6]]),controller[_0x76ef[8]]);router[_0x76ef[9]](_0x76ef[10],auth[_0x76ef[5]](),auth[_0x76ef[7]]([13],[_0x76ef[6]]),controller[_0x76ef[11]]);router[_0x76ef[9]](_0x76ef[12],auth[_0x76ef[5]](),auth[_0x76ef[7]]([13],[_0x76ef[6]]),controller[_0x76ef[13]]);router[_0x76ef[9]](_0x76ef[14],auth[_0x76ef[5]](),auth[_0x76ef[7]]([13],[_0x76ef[6]]),controller[_0x76ef[15]]);router[_0x76ef[17]](_0x76ef[4],auth[_0x76ef[5]](),auth[_0x76ef[7]]([13],[_0x76ef[6]]),controller[_0x76ef[16]]);router[_0x76ef[19]](_0x76ef[10],auth[_0x76ef[5]](),auth[_0x76ef[7]]([13],[_0x76ef[6]]),controller[_0x76ef[18]]);router[_0x76ef[21]](_0x76ef[10],auth[_0x76ef[5]](),auth[_0x76ef[7]]([13],[_0x76ef[6]]),controller[_0x76ef[20]]);module[_0x76ef[22]]= router \ No newline at end of file diff --git a/server/api/sound/sound.controller.js b/server/api/sound/sound.controller.js index 9cc2d15..1cc016c 100644 --- a/server/api/sound/sound.controller.js +++ b/server/api/sound/sound.controller.js @@ -1,278 +1 @@ -'use strict'; - -var _ = require('lodash'); -var Sound = require('../../models').Sound; -var uploadFile = require('upload-file'); -var sr = require('simple-random'); -var sox = require('sox'); -var path = require('path'); -var config = require('../../config/environment'); -var fs = require('fs'); -var sequelize = require('../../models').sequelize; -var base64 = require('file-base64'); -var Promise = require('bluebird'); -var Setting = require('../../models').Setting; - -// Get list of Sounds -exports.index = function(req, res) { - return Sound - .findAndCountAll() - .then(function(Sounds) { - return res.status(200).send(Sounds); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get a single Sound -exports.show = function(req, res) { - return Sound - .findById(req.params.id) - .then(function(Sound) { - if (!Sound) { - return res.sendStatus(404); - } - return res.send(Sound); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Creates a new Sound in the DB. -exports.create = function(req, res) { - var upload = new uploadFile({ - dest: path.join(config.originalSounds), - maxFileSize: 15 * 1000000, - maxNumberOfFiles: 10, - minNumberOfFiles: 0, - acceptFileTypes: /(\.|\/)(wav|mp3|gsm|ogg)$/i, - rename: function(name, file) { - return sr() + path.extname(file.filename); - }, - messages: { - maxNumberOfFiles: "Max number of files upload exceeded", - acceptFileTypes: "Only wav,mp3,gsm, and ogg format accepted", - maxFileSize: "The maximum file size is 15 Mb", - invalidRequest: "Invalid request" - } - }); - - upload.on('end', function(fields, files) { - if (!files.file.filename) { - return res.status(500).send(upload); - } - - return Setting - .findById(1) - .then(function(settings) { - var job_details = {}; - var original_format = path.extname(files.file.filename); - job_details.description = ""; - job_details.original_format = path.extname(files.file.filename).substring(1); - job_details.converted_format = 'wav'; - job_details.name = job_details.display_name = path.basename(files.file.path, original_format); - job_details.save_name = path.basename(files.file.filename, original_format); - - - - var filepath = path.join(config.originalSounds, job_details.save_name + original_format); - var destination = path.join(settings.soundPath || '/var/opt/motion/server/files/sounds/converted', job_details.save_name + '.' + job_details.converted_format); - // - - fs.chmodSync(filepath, parseInt('0777', 8)); - sox.identify(filepath, function(err, result) { - // console.log('************** Result: ', result); - }); - - var job = sox.transcode(filepath, destination, { - sampleRate: 8000, - format: 'wav', - channelCount: 1, - bitRate: 192 * 1024, - compressionQuality: 5, - }); - - - - job.on('error', function(err) { - console.error('********** Conversion Error: ', err); - fs.unlink(filepath, function(err) { - if (err) - return handleError(res, err); - }); - return handleError(res, err); - }); - - job.on('progress', function(amountDone, amountTotal) { - // console.log("*********** Progress", amountDone, amountTotal); - }); - - job.on('src', function(info) { - // console.log('********** src: ', info); - /* info looks like: - { - format: 'wav', - duration: 1.5, - sampleCount: 66150, - channelCount: 1, - bitRate: 722944, - sampleRate: 44100, - } - */ - job_details.original_duration = isNaN(info.duration) ? null : info.duration * 1000; - job_details.original_sampleCount = isNaN(info.sampleCount) ? null : info.sampleCount; - job_details.original_channelCount = isNaN(info.channelCount) ? null : info.channelCount; - job_details.original_bitRate = isNaN(info.bitRate) ? null : info.bitRate; - job_details.original_sampleRate = isNaN(info.sampleRate) ? null : info.sampleRate; - }); - - job.on('dest', function(info) { - // console.log('********** dest: ', info); - /* info looks like: - { - sampleRate: 44100, - format: 'mp3', - channelCount: 2, - sampleCount: 67958, - duration: 1.540998, - bitRate: 196608, - } - */ - job_details.converted_duration = isNaN(info.duration) ? null : info.duration * 1000; - job_details.converted_sampleCount = isNaN(info.sampleCount) ? null : info.sampleCount; - job_details.converted_channelCount = isNaN(info.channelCount) ? null : info.channelCount; - job_details.converted_bitRate = isNaN(info.bitRate) ? null : info.bitRate; - job_details.converted_sampleRate = isNaN(info.sampleRate) ? null : info.sampleRate; - }); - - job.on('end', function() { - console.log("Conversion completed"); - fs.chmodSync(destination, parseInt('0777', 8)); - return Sound - .create(job_details) - .then(function(sound) { - return res.status(201).send(sound); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); - }); - - job.start(); - }) - .catch(function(err) { - return handleError(res, err); - }); - - - }); - - upload.on('error', function(err) { - console.log('********** Upload error :', err) - return handleError(res, err); - }); - - upload.parse(req); -}; - -// Updates an existing upload in the DB. -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - return Sound - .findById(req.params.id) - .then(function(sound) { - if (!sound) { - return res.sendStatus(404); - } - var updated = _.merge(sound, req.body); - return updated.save(); - }) - .then(function(sound) { - return res.status(200).send(sound); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes a Sound from the DB. -exports.destroy = function(req, res) { - var _settings; - return Setting - .findById(1) - .then(function(settings) { - _settings = settings; - return Sound - .findById(req.params.id); - }) - .then(function(sound) { - if (!sound) { - return res.sendStatus(404); - } - var original_filepath = path.join(config.originalSounds, sound.save_name + '.' + sound.original_format); - var converted_filepath = path.join(_settings.soundPath || '/var/opt/motion/server/files/sounds/converted', sound.save_name + '.' + sound.converted_format); - return sequelize.transaction(function(t) { - return sound.destroy({ - transaction: t - }) - .then(function() { - fs.unlink(original_filepath, function(err) { - if (err) - return handleError(res, err); - }); - fs.unlink(converted_filepath, function(err) { - if (err) - return handleError(res, err); - }); - return res.status(200).send(sound); - }) - }) - .catch(function(err) { - return handleError(res, err); - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; -//Download an uploaded file -exports.download = function(req, res) { - getStream(req, res, 'original'); -}; - -//Stream an uploaded file -exports.stream = function(req, res) { - getStream(req, res, 'converted'); -} - - -function getStream(req, res, value) { - return Sound - .findById(req.params.id) - .then(function(sound) { - var readFile = Promise.promisify(fs.readFile); - return readFile(path.join(config[value + 'Sounds'], sound.save_name + '.' + sound[value + '_format'])); - }) - .then(function(result) { - var base64String = new Buffer(result, 'binary').toString('base64'); - return base64String; - }) - .then(function(base64String) { - return res.status(200).send({ - downloadString: base64String - }); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -} - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0x83cd=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x53\x6F\x75\x6E\x64","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x75\x70\x6C\x6F\x61\x64\x2D\x66\x69\x6C\x65","\x73\x69\x6D\x70\x6C\x65\x2D\x72\x61\x6E\x64\x6F\x6D","\x73\x6F\x78","\x70\x61\x74\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x66\x73","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x66\x69\x6C\x65\x2D\x62\x61\x73\x65\x36\x34","\x62\x6C\x75\x65\x62\x69\x72\x64","\x53\x65\x74\x74\x69\x6E\x67","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x6F\x72\x69\x67\x69\x6E\x61\x6C\x53\x6F\x75\x6E\x64\x73","\x6A\x6F\x69\x6E","\x66\x69\x6C\x65\x6E\x61\x6D\x65","\x65\x78\x74\x6E\x61\x6D\x65","\x4D\x61\x78\x20\x6E\x75\x6D\x62\x65\x72\x20\x6F\x66\x20\x66\x69\x6C\x65\x73\x20\x75\x70\x6C\x6F\x61\x64\x20\x65\x78\x63\x65\x65\x64\x65\x64","\x4F\x6E\x6C\x79\x20\x77\x61\x76\x2C\x6D\x70\x33\x2C\x67\x73\x6D\x2C\x20\x61\x6E\x64\x20\x6F\x67\x67\x20\x66\x6F\x72\x6D\x61\x74\x20\x61\x63\x63\x65\x70\x74\x65\x64","\x54\x68\x65\x20\x6D\x61\x78\x69\x6D\x75\x6D\x20\x66\x69\x6C\x65\x20\x73\x69\x7A\x65\x20\x69\x73\x20\x31\x35\x20\x4D\x62","\x49\x6E\x76\x61\x6C\x69\x64\x20\x72\x65\x71\x75\x65\x73\x74","\x65\x6E\x64","\x66\x69\x6C\x65","\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E","","\x6F\x72\x69\x67\x69\x6E\x61\x6C\x5F\x66\x6F\x72\x6D\x61\x74","\x73\x75\x62\x73\x74\x72\x69\x6E\x67","\x63\x6F\x6E\x76\x65\x72\x74\x65\x64\x5F\x66\x6F\x72\x6D\x61\x74","\x77\x61\x76","\x6E\x61\x6D\x65","\x64\x69\x73\x70\x6C\x61\x79\x5F\x6E\x61\x6D\x65","\x62\x61\x73\x65\x6E\x61\x6D\x65","\x73\x61\x76\x65\x5F\x6E\x61\x6D\x65","\x73\x6F\x75\x6E\x64\x50\x61\x74\x68","\x2F\x76\x61\x72\x2F\x6F\x70\x74\x2F\x6D\x6F\x74\x69\x6F\x6E\x2F\x73\x65\x72\x76\x65\x72\x2F\x66\x69\x6C\x65\x73\x2F\x73\x6F\x75\x6E\x64\x73\x2F\x63\x6F\x6E\x76\x65\x72\x74\x65\x64","\x2E","\x30\x37\x37\x37","\x63\x68\x6D\x6F\x64\x53\x79\x6E\x63","\x69\x64\x65\x6E\x74\x69\x66\x79","\x74\x72\x61\x6E\x73\x63\x6F\x64\x65","\x65\x72\x72\x6F\x72","\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x20\x43\x6F\x6E\x76\x65\x72\x73\x69\x6F\x6E\x20\x45\x72\x72\x6F\x72\x3A\x20","\x75\x6E\x6C\x69\x6E\x6B","\x6F\x6E","\x70\x72\x6F\x67\x72\x65\x73\x73","\x73\x72\x63","\x6F\x72\x69\x67\x69\x6E\x61\x6C\x5F\x64\x75\x72\x61\x74\x69\x6F\x6E","\x64\x75\x72\x61\x74\x69\x6F\x6E","\x6F\x72\x69\x67\x69\x6E\x61\x6C\x5F\x73\x61\x6D\x70\x6C\x65\x43\x6F\x75\x6E\x74","\x73\x61\x6D\x70\x6C\x65\x43\x6F\x75\x6E\x74","\x6F\x72\x69\x67\x69\x6E\x61\x6C\x5F\x63\x68\x61\x6E\x6E\x65\x6C\x43\x6F\x75\x6E\x74","\x63\x68\x61\x6E\x6E\x65\x6C\x43\x6F\x75\x6E\x74","\x6F\x72\x69\x67\x69\x6E\x61\x6C\x5F\x62\x69\x74\x52\x61\x74\x65","\x62\x69\x74\x52\x61\x74\x65","\x6F\x72\x69\x67\x69\x6E\x61\x6C\x5F\x73\x61\x6D\x70\x6C\x65\x52\x61\x74\x65","\x73\x61\x6D\x70\x6C\x65\x52\x61\x74\x65","\x64\x65\x73\x74","\x63\x6F\x6E\x76\x65\x72\x74\x65\x64\x5F\x64\x75\x72\x61\x74\x69\x6F\x6E","\x63\x6F\x6E\x76\x65\x72\x74\x65\x64\x5F\x73\x61\x6D\x70\x6C\x65\x43\x6F\x75\x6E\x74","\x63\x6F\x6E\x76\x65\x72\x74\x65\x64\x5F\x63\x68\x61\x6E\x6E\x65\x6C\x43\x6F\x75\x6E\x74","\x63\x6F\x6E\x76\x65\x72\x74\x65\x64\x5F\x62\x69\x74\x52\x61\x74\x65","\x63\x6F\x6E\x76\x65\x72\x74\x65\x64\x5F\x73\x61\x6D\x70\x6C\x65\x52\x61\x74\x65","\x43\x6F\x6E\x76\x65\x72\x73\x69\x6F\x6E\x20\x63\x6F\x6D\x70\x6C\x65\x74\x65\x64","\x6C\x6F\x67","\x73\x74\x61\x72\x74","\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x20\x55\x70\x6C\x6F\x61\x64\x20\x65\x72\x72\x6F\x72\x20\x3A","\x70\x61\x72\x73\x65","\x75\x70\x64\x61\x74\x65","\x62\x6F\x64\x79","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x64\x65\x73\x74\x72\x6F\x79","\x74\x72\x61\x6E\x73\x61\x63\x74\x69\x6F\x6E","\x64\x6F\x77\x6E\x6C\x6F\x61\x64","\x6F\x72\x69\x67\x69\x6E\x61\x6C","\x73\x74\x72\x65\x61\x6D","\x63\x6F\x6E\x76\x65\x72\x74\x65\x64","\x62\x61\x73\x65\x36\x34","\x62\x69\x6E\x61\x72\x79","\x72\x65\x61\x64\x46\x69\x6C\x65","\x70\x72\x6F\x6D\x69\x73\x69\x66\x79","\x53\x6F\x75\x6E\x64\x73","\x5F\x66\x6F\x72\x6D\x61\x74"];_0x83cd[0];var _=require(_0x83cd[1]);var Sound=require(_0x83cd[3])[_0x83cd[2]];var uploadFile=require(_0x83cd[4]);var sr=require(_0x83cd[5]);var sox=require(_0x83cd[6]);var path=require(_0x83cd[7]);var config=require(_0x83cd[8]);var fs=require(_0x83cd[9]);var sequelize=require(_0x83cd[3])[_0x83cd[10]];var base64=require(_0x83cd[11]);var Promise=require(_0x83cd[12]);var Setting=require(_0x83cd[3])[_0x83cd[13]];exports[_0x83cd[14]]= function(_0x89c7xd,_0x89c7xe){return Sound[_0x83cd[19]]()[_0x83cd[18]](function(_0x89c7x10){return _0x89c7xe[_0x83cd[17]](200)[_0x83cd[16]](_0x89c7x10)})[_0x83cd[15]](function(_0x89c7xf){return handleError(_0x89c7xe,_0x89c7xf)})};exports[_0x83cd[20]]= function(_0x89c7xd,_0x89c7xe){return Sound[_0x83cd[24]](_0x89c7xd[_0x83cd[23]][_0x83cd[22]])[_0x83cd[18]](function(Sound){if(!Sound){return _0x89c7xe[_0x83cd[21]](404)};return _0x89c7xe[_0x83cd[16]](Sound)})[_0x83cd[15]](function(_0x89c7xf){return handleError(_0x89c7xe,_0x89c7xf)})};exports[_0x83cd[25]]= function(_0x89c7xd,_0x89c7xe){var _0x89c7x11= new uploadFile({dest:path[_0x83cd[27]](config[_0x83cd[26]]),maxFileSize:15* 1000000,maxNumberOfFiles:10,minNumberOfFiles:0,acceptFileTypes:/(\.|\/)(wav|mp3|gsm|ogg)$/i,rename:function(_0x89c7x12,_0x89c7x13){return sr()+ path[_0x83cd[29]](_0x89c7x13[_0x83cd[28]])},messages:{maxNumberOfFiles:_0x83cd[30],acceptFileTypes:_0x83cd[31],maxFileSize:_0x83cd[32],invalidRequest:_0x83cd[33]}});_0x89c7x11[_0x83cd[56]](_0x83cd[34],function(_0x89c7x14,_0x89c7x15){if(!_0x89c7x15[_0x83cd[35]][_0x83cd[28]]){return _0x89c7xe[_0x83cd[17]](500)[_0x83cd[16]](_0x89c7x11)};return Setting[_0x83cd[24]](1)[_0x83cd[18]](function(_0x89c7x16){var _0x89c7x17={};var _0x89c7x18=path[_0x83cd[29]](_0x89c7x15[_0x83cd[35]][_0x83cd[28]]);_0x89c7x17[_0x83cd[36]]= _0x83cd[37];_0x89c7x17[_0x83cd[38]]= path[_0x83cd[29]](_0x89c7x15[_0x83cd[35]][_0x83cd[28]])[_0x83cd[39]](1);_0x89c7x17[_0x83cd[40]]= _0x83cd[41];_0x89c7x17[_0x83cd[42]]= _0x89c7x17[_0x83cd[43]]= path[_0x83cd[44]](_0x89c7x15[_0x83cd[35]][_0x83cd[7]],_0x89c7x18);_0x89c7x17[_0x83cd[45]]= path[_0x83cd[44]](_0x89c7x15[_0x83cd[35]][_0x83cd[28]],_0x89c7x18);var _0x89c7x19=path[_0x83cd[27]](config[_0x83cd[26]],_0x89c7x17[_0x83cd[45]]+ _0x89c7x18);var _0x89c7x1a=path[_0x83cd[27]](_0x89c7x16[_0x83cd[46]]|| _0x83cd[47],_0x89c7x17[_0x83cd[45]]+ _0x83cd[48]+ _0x89c7x17[_0x83cd[40]]);fs[_0x83cd[50]](_0x89c7x19,parseInt(_0x83cd[49],8));sox[_0x83cd[51]](_0x89c7x19,function(_0x89c7xf,_0x89c7x1b){});var _0x89c7x1c=sox[_0x83cd[52]](_0x89c7x19,_0x89c7x1a,{sampleRate:8000,format:_0x83cd[41],channelCount:1,bitRate:192* 1024,compressionQuality:5});_0x89c7x1c[_0x83cd[56]](_0x83cd[53],function(_0x89c7xf){console[_0x83cd[53]](_0x83cd[54],_0x89c7xf);fs[_0x83cd[55]](_0x89c7x19,function(_0x89c7xf){if(_0x89c7xf){return handleError(_0x89c7xe,_0x89c7xf)}});return handleError(_0x89c7xe,_0x89c7xf)});_0x89c7x1c[_0x83cd[56]](_0x83cd[57],function(_0x89c7x1d,_0x89c7x1e){});_0x89c7x1c[_0x83cd[56]](_0x83cd[58],function(_0x89c7x1f){_0x89c7x17[_0x83cd[59]]= isNaN(_0x89c7x1f[_0x83cd[60]])?null:_0x89c7x1f[_0x83cd[60]]* 1000;_0x89c7x17[_0x83cd[61]]= isNaN(_0x89c7x1f[_0x83cd[62]])?null:_0x89c7x1f[_0x83cd[62]];_0x89c7x17[_0x83cd[63]]= isNaN(_0x89c7x1f[_0x83cd[64]])?null:_0x89c7x1f[_0x83cd[64]];_0x89c7x17[_0x83cd[65]]= isNaN(_0x89c7x1f[_0x83cd[66]])?null:_0x89c7x1f[_0x83cd[66]];_0x89c7x17[_0x83cd[67]]= isNaN(_0x89c7x1f[_0x83cd[68]])?null:_0x89c7x1f[_0x83cd[68]]});_0x89c7x1c[_0x83cd[56]](_0x83cd[69],function(_0x89c7x1f){_0x89c7x17[_0x83cd[70]]= isNaN(_0x89c7x1f[_0x83cd[60]])?null:_0x89c7x1f[_0x83cd[60]]* 1000;_0x89c7x17[_0x83cd[71]]= isNaN(_0x89c7x1f[_0x83cd[62]])?null:_0x89c7x1f[_0x83cd[62]];_0x89c7x17[_0x83cd[72]]= isNaN(_0x89c7x1f[_0x83cd[64]])?null:_0x89c7x1f[_0x83cd[64]];_0x89c7x17[_0x83cd[73]]= isNaN(_0x89c7x1f[_0x83cd[66]])?null:_0x89c7x1f[_0x83cd[66]];_0x89c7x17[_0x83cd[74]]= isNaN(_0x89c7x1f[_0x83cd[68]])?null:_0x89c7x1f[_0x83cd[68]]});_0x89c7x1c[_0x83cd[56]](_0x83cd[34],function(){console[_0x83cd[76]](_0x83cd[75]);fs[_0x83cd[50]](_0x89c7x1a,parseInt(_0x83cd[49],8));return Sound[_0x83cd[25]](_0x89c7x17)[_0x83cd[18]](function(_0x89c7x20){return _0x89c7xe[_0x83cd[17]](201)[_0x83cd[16]](_0x89c7x20)})[_0x83cd[15]](function(_0x89c7xf){console[_0x83cd[76]](_0x89c7xf);return handleError(_0x89c7xe,_0x89c7xf)})});_0x89c7x1c[_0x83cd[77]]()})[_0x83cd[15]](function(_0x89c7xf){return handleError(_0x89c7xe,_0x89c7xf)})});_0x89c7x11[_0x83cd[56]](_0x83cd[53],function(_0x89c7xf){console[_0x83cd[76]](_0x83cd[78],_0x89c7xf);return handleError(_0x89c7xe,_0x89c7xf)});_0x89c7x11[_0x83cd[79]](_0x89c7xd)};exports[_0x83cd[80]]= function(_0x89c7xd,_0x89c7xe){if(_0x89c7xd[_0x83cd[81]][_0x83cd[22]]){delete _0x89c7xd[_0x83cd[81]][_0x83cd[22]]};return Sound[_0x83cd[24]](_0x89c7xd[_0x83cd[23]][_0x83cd[22]])[_0x83cd[18]](function(_0x89c7x20){if(!_0x89c7x20){return _0x89c7xe[_0x83cd[21]](404)};var _0x89c7x21=_[_0x83cd[82]](_0x89c7x20,_0x89c7xd[_0x83cd[81]]);return _0x89c7x21[_0x83cd[83]]()})[_0x83cd[18]](function(_0x89c7x20){return _0x89c7xe[_0x83cd[17]](200)[_0x83cd[16]](_0x89c7x20)})[_0x83cd[15]](function(_0x89c7xf){return handleError(_0x89c7xe,_0x89c7xf)})};exports[_0x83cd[84]]= function(_0x89c7xd,_0x89c7xe){var _0x89c7x22;return Setting[_0x83cd[24]](1)[_0x83cd[18]](function(_0x89c7x16){_0x89c7x22= _0x89c7x16;return Sound[_0x83cd[24]](_0x89c7xd[_0x83cd[23]][_0x83cd[22]])})[_0x83cd[18]](function(_0x89c7x20){if(!_0x89c7x20){return _0x89c7xe[_0x83cd[21]](404)};var _0x89c7x23=path[_0x83cd[27]](config[_0x83cd[26]],_0x89c7x20[_0x83cd[45]]+ _0x83cd[48]+ _0x89c7x20[_0x83cd[38]]);var _0x89c7x24=path[_0x83cd[27]](_0x89c7x22[_0x83cd[46]]|| _0x83cd[47],_0x89c7x20[_0x83cd[45]]+ _0x83cd[48]+ _0x89c7x20[_0x83cd[40]]);return sequelize[_0x83cd[85]](function(_0x89c7x25){return _0x89c7x20[_0x83cd[84]]({transaction:_0x89c7x25})[_0x83cd[18]](function(){fs[_0x83cd[55]](_0x89c7x23,function(_0x89c7xf){if(_0x89c7xf){return handleError(_0x89c7xe,_0x89c7xf)}});fs[_0x83cd[55]](_0x89c7x24,function(_0x89c7xf){if(_0x89c7xf){return handleError(_0x89c7xe,_0x89c7xf)}});return _0x89c7xe[_0x83cd[17]](200)[_0x83cd[16]](_0x89c7x20)})})[_0x83cd[15]](function(_0x89c7xf){return handleError(_0x89c7xe,_0x89c7xf)})})[_0x83cd[15]](function(_0x89c7xf){return handleError(_0x89c7xe,_0x89c7xf)})};exports[_0x83cd[86]]= function(_0x89c7xd,_0x89c7xe){getStream(_0x89c7xd,_0x89c7xe,_0x83cd[87])};exports[_0x83cd[88]]= function(_0x89c7xd,_0x89c7xe){getStream(_0x89c7xd,_0x89c7xe,_0x83cd[89])};function getStream(_0x89c7xd,_0x89c7xe,_0x89c7x27){return Sound[_0x83cd[24]](_0x89c7xd[_0x83cd[23]][_0x83cd[22]])[_0x83cd[18]](function(_0x89c7x20){var _0x89c7x29=Promise[_0x83cd[93]](fs[_0x83cd[92]]);return _0x89c7x29(path[_0x83cd[27]](config[_0x89c7x27+ _0x83cd[94]],_0x89c7x20[_0x83cd[45]]+ _0x83cd[48]+ _0x89c7x20[_0x89c7x27+ _0x83cd[95]]))})[_0x83cd[18]](function(_0x89c7x1b){var _0x89c7x28= new Buffer(_0x89c7x1b,_0x83cd[91]).toString(_0x83cd[90]);return _0x89c7x28})[_0x83cd[18]](function(_0x89c7x28){return _0x89c7xe[_0x83cd[17]](200)[_0x83cd[16]]({downloadString:_0x89c7x28})})[_0x83cd[15]](function(_0x89c7xf){console[_0x83cd[76]](_0x89c7xf);return handleError(_0x89c7xe,_0x89c7xf)})}function handleError(_0x89c7xe,_0x89c7xf){return _0x89c7xe[_0x83cd[17]](500)[_0x83cd[16]](_0x89c7xf)} \ No newline at end of file diff --git a/server/api/sound/sound.events.js b/server/api/sound/sound.events.js index ce73c5a..b5e84c2 100644 --- a/server/api/sound/sound.events.js +++ b/server/api/sound/sound.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const Sound = require('../../models').Sound; - -var SoundEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -SoundEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - Sound.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - SoundEvents.emit(event + ':' + doc._id, doc); - SoundEvents.emit(event, doc); - done(null); - } -} - -module.exports = SoundEvents; +var _0x670c=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x53\x6F\x75\x6E\x64","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x670c[0];const EventEmitter=require(_0x670c[1]);const Sound=require(_0x670c[3])[_0x670c[2]];var SoundEvents= new EventEmitter();SoundEvents[_0x670c[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x670c[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x670c[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x670c[6]};for(var e in events){var event=events[e];Sound[_0x670c[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xd561x8,_0xd561x9,_0xd561xa){SoundEvents[_0x670c[10]](event+ _0x670c[8]+ _0xd561x8[_0x670c[9]],_0xd561x8);SoundEvents[_0x670c[10]](event,_0xd561x8);_0xd561xa(null)}}module[_0x670c[11]]= SoundEvents \ No newline at end of file diff --git a/server/api/sound/sound.socket.js b/server/api/sound/sound.socket.js index 137a669..e700288 100644 --- a/server/api/sound/sound.socket.js +++ b/server/api/sound/sound.socket.js @@ -1,32 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const SoundEvents = require('./sound.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('sound:' + event, socket); - - SoundEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - SoundEvents.removeListener(event, listener); - }; -} +var _0x3cd4=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x73\x6F\x75\x6E\x64\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x73\x6F\x75\x6E\x64\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x3cd4[0];const SoundEvents=require(_0x3cd4[1]);var events=[_0x3cd4[2],_0x3cd4[3]];exports[_0x3cd4[4]]= function(_0xb78bx3){for(var _0xb78bx4=0,_0xb78bx5=events[_0x3cd4[5]];_0xb78bx4< _0xb78bx5;_0xb78bx4++){var _0xb78bx6=events[_0xb78bx4];var _0xb78bx7=createListener(_0x3cd4[6]+ _0xb78bx6,_0xb78bx3);SoundEvents[_0x3cd4[7]](_0xb78bx6,_0xb78bx7);_0xb78bx3[_0x3cd4[7]](_0x3cd4[8],removeListener(_0xb78bx6,_0xb78bx7))}};function createListener(_0xb78bx6,_0xb78bx3){return function(_0xb78bx9){_0xb78bx3[_0x3cd4[9]](_0xb78bx6,_0xb78bx9)}}function removeListener(_0xb78bx6,_0xb78bx7){return function(){SoundEvents[_0x3cd4[10]](_0xb78bx6,_0xb78bx7)}} \ No newline at end of file diff --git a/server/api/square_odbc/index.js b/server/api/square_odbc/index.js index b6dd309..dd64683 100644 --- a/server/api/square_odbc/index.js +++ b/server/api/square_odbc/index.js @@ -1,17 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./square_odbc.controller'); -var auth = require('../../auth/auth.service'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), auth.hasModule([14], ['admin']), controller.index); -router.get('/:id/check', auth.isAuthenticated(), auth.hasModule([14], ['admin']), controller.checkConnection); -router.get('/:id', auth.isAuthenticated(), auth.hasModule([14], ['admin']), controller.show); -router.post('/', auth.isAuthenticated(), auth.hasModule([14], ['admin']), controller.create); -router.put('/:id', auth.isAuthenticated(), auth.hasModule([14], ['admin']), controller.update); -router.delete('/', auth.isAuthenticated(), auth.hasModule([14], ['admin']), controller.bulkDestroy); -router.delete('/:id', auth.isAuthenticated(), auth.hasModule([14], ['admin']), controller.destroy); - -module.exports = router; +var _0xe0ea=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x73\x71\x75\x61\x72\x65\x5F\x6F\x64\x62\x63\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64\x2F\x63\x68\x65\x63\x6B","\x63\x68\x65\x63\x6B\x43\x6F\x6E\x6E\x65\x63\x74\x69\x6F\x6E","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0xe0ea[0];var express=require(_0xe0ea[1]);var controller=require(_0xe0ea[2]);var auth=require(_0xe0ea[3]);var router=express.Router();router[_0xe0ea[9]](_0xe0ea[4],auth[_0xe0ea[5]](),auth[_0xe0ea[7]]([14],[_0xe0ea[6]]),controller[_0xe0ea[8]]);router[_0xe0ea[9]](_0xe0ea[10],auth[_0xe0ea[5]](),auth[_0xe0ea[7]]([14],[_0xe0ea[6]]),controller[_0xe0ea[11]]);router[_0xe0ea[9]](_0xe0ea[12],auth[_0xe0ea[5]](),auth[_0xe0ea[7]]([14],[_0xe0ea[6]]),controller[_0xe0ea[13]]);router[_0xe0ea[15]](_0xe0ea[4],auth[_0xe0ea[5]](),auth[_0xe0ea[7]]([14],[_0xe0ea[6]]),controller[_0xe0ea[14]]);router[_0xe0ea[17]](_0xe0ea[12],auth[_0xe0ea[5]](),auth[_0xe0ea[7]]([14],[_0xe0ea[6]]),controller[_0xe0ea[16]]);router[_0xe0ea[19]](_0xe0ea[4],auth[_0xe0ea[5]](),auth[_0xe0ea[7]]([14],[_0xe0ea[6]]),controller[_0xe0ea[18]]);router[_0xe0ea[19]](_0xe0ea[12],auth[_0xe0ea[5]](),auth[_0xe0ea[7]]([14],[_0xe0ea[6]]),controller[_0xe0ea[20]]);module[_0xe0ea[21]]= router \ No newline at end of file diff --git a/server/api/square_odbc/square_odbc.controller.js b/server/api/square_odbc/square_odbc.controller.js index 69af149..a5a59d8 100644 --- a/server/api/square_odbc/square_odbc.controller.js +++ b/server/api/square_odbc/square_odbc.controller.js @@ -1,135 +1 @@ -'use strict'; - -var _ = require('lodash'); -var db = require("odbc")(); - -var SquareOdbc = require('../../models').SquareOdbc; -var Util = require('../../config/util'); - -// Get list of square_odbcs -exports.index = function(req, res) { - return SquareOdbc - .findAndCountAll(Util.getQuery(req.query)) - .then(function(result) { - res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get a single square_odbc -exports.show = function(req, res) { - return SquareOdbc - .findById(req.params.id) - .then(function(square_odbc) { - if (!square_odbc) { - return res.sendStatus(404); - } - return res.send(square_odbc); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Creates a new square_odbc in the DB. -exports.create = function(req, res) { - return SquareOdbc - .create(req.body) - .then(function(square_odbc) { - return res.status(201).send(square_odbc); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Updates an existing square_odbc in the DB. -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - return SquareOdbc - .findById(req.params.id) - .then(function(square_odbc) { - if (!square_odbc) { - return res.sendStatus(404); - } - var updated = _.merge(square_odbc, req.body); - updated.save() - .then(function() { - return res.status(200).send(square_odbc); - }) - .catch(function(err) { - return handleError(res, err); - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes a square_odbc from the DB. -exports.destroy = function(req, res) { - return SquareOdbc - .findById(req.params.id) - .then(function(odbc) { - if (!odbc) { - return res.sendStatus(404); - } - return odbc - .destroy(); - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes a square_project from the DB. -exports.bulkDestroy = function(req, res) { - return SquareOdbc - .destroy({ - where: { - id: req.query.ids - }, - individualHooks: true - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.checkConnection = function(req, res) { - return SquareOdbc - .findById(req.params.id) - .then(function(square_odbc) { - if (!square_odbc) { - return res.sendStatus(404); - } - db.open(square_odbc.dsn, function(err) { - if (err) { - return handleError(res, err); - } - db.close(function(err) { - if (err) { - return handleError(res, err); - } - return res.sendStatus(200); - }) - }) - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0x140e=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x6F\x64\x62\x63","\x53\x71\x75\x61\x72\x65\x4F\x64\x62\x63","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x64\x65\x73\x74\x72\x6F\x79","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73","\x63\x68\x65\x63\x6B\x43\x6F\x6E\x6E\x65\x63\x74\x69\x6F\x6E","\x64\x73\x6E","\x63\x6C\x6F\x73\x65","\x6F\x70\x65\x6E"];_0x140e[0];var _=require(_0x140e[1]);var db=require(_0x140e[2])();var SquareOdbc=require(_0x140e[4])[_0x140e[3]];var Util=require(_0x140e[5]);exports[_0x140e[6]]= function(_0xb75ex5,_0xb75ex6){return SquareOdbc[_0x140e[13]](Util[_0x140e[12]](_0xb75ex5[_0x140e[11]]))[_0x140e[10]](function(_0xb75ex8){_0xb75ex6[_0x140e[9]](200)[_0x140e[8]](_0xb75ex8)})[_0x140e[7]](function(_0xb75ex7){return handleError(_0xb75ex6,_0xb75ex7)})};exports[_0x140e[14]]= function(_0xb75ex5,_0xb75ex6){return SquareOdbc[_0x140e[18]](_0xb75ex5[_0x140e[17]][_0x140e[16]])[_0x140e[10]](function(_0xb75ex9){if(!_0xb75ex9){return _0xb75ex6[_0x140e[15]](404)};return _0xb75ex6[_0x140e[8]](_0xb75ex9)})[_0x140e[7]](function(_0xb75ex7){return handleError(_0xb75ex6,_0xb75ex7)})};exports[_0x140e[19]]= function(_0xb75ex5,_0xb75ex6){return SquareOdbc[_0x140e[19]](_0xb75ex5[_0x140e[20]])[_0x140e[10]](function(_0xb75ex9){return _0xb75ex6[_0x140e[9]](201)[_0x140e[8]](_0xb75ex9)})[_0x140e[7]](function(_0xb75ex7){return handleError(_0xb75ex6,_0xb75ex7)})};exports[_0x140e[21]]= function(_0xb75ex5,_0xb75ex6){if(_0xb75ex5[_0x140e[20]][_0x140e[16]]){delete _0xb75ex5[_0x140e[20]][_0x140e[16]]};return SquareOdbc[_0x140e[18]](_0xb75ex5[_0x140e[17]][_0x140e[16]])[_0x140e[10]](function(_0xb75ex9){if(!_0xb75ex9){return _0xb75ex6[_0x140e[15]](404)};var _0xb75exa=_[_0x140e[22]](_0xb75ex9,_0xb75ex5[_0x140e[20]]);_0xb75exa[_0x140e[23]]()[_0x140e[10]](function(){return _0xb75ex6[_0x140e[9]](200)[_0x140e[8]](_0xb75ex9)})[_0x140e[7]](function(_0xb75ex7){return handleError(_0xb75ex6,_0xb75ex7)})})[_0x140e[7]](function(_0xb75ex7){return handleError(_0xb75ex6,_0xb75ex7)})};exports[_0x140e[24]]= function(_0xb75ex5,_0xb75ex6){return SquareOdbc[_0x140e[18]](_0xb75ex5[_0x140e[17]][_0x140e[16]])[_0x140e[10]](function(_0xb75exb){if(!_0xb75exb){return _0xb75ex6[_0x140e[15]](404)};return _0xb75exb[_0x140e[24]]()})[_0x140e[10]](function(){return _0xb75ex6[_0x140e[15]](204)})[_0x140e[7]](function(_0xb75ex7){return handleError(_0xb75ex6,_0xb75ex7)})};exports[_0x140e[25]]= function(_0xb75ex5,_0xb75ex6){return SquareOdbc[_0x140e[24]]({where:{id:_0xb75ex5[_0x140e[11]][_0x140e[26]]},individualHooks:true})[_0x140e[10]](function(){return _0xb75ex6[_0x140e[15]](204)})[_0x140e[7]](function(_0xb75ex7){return handleError(_0xb75ex6,_0xb75ex7)})};exports[_0x140e[27]]= function(_0xb75ex5,_0xb75ex6){return SquareOdbc[_0x140e[18]](_0xb75ex5[_0x140e[17]][_0x140e[16]])[_0x140e[10]](function(_0xb75ex9){if(!_0xb75ex9){return _0xb75ex6[_0x140e[15]](404)};db[_0x140e[30]](_0xb75ex9[_0x140e[28]],function(_0xb75ex7){if(_0xb75ex7){return handleError(_0xb75ex6,_0xb75ex7)};db[_0x140e[29]](function(_0xb75ex7){if(_0xb75ex7){return handleError(_0xb75ex6,_0xb75ex7)};return _0xb75ex6[_0x140e[15]](200)})})})[_0x140e[7]](function(_0xb75ex7){return handleError(_0xb75ex6,_0xb75ex7)})};function handleError(_0xb75ex6,_0xb75ex7){return _0xb75ex6[_0x140e[9]](500)[_0x140e[8]](_0xb75ex7)} \ No newline at end of file diff --git a/server/api/square_odbc/square_odbc.events.js b/server/api/square_odbc/square_odbc.events.js index 1f9776a..03950b8 100644 --- a/server/api/square_odbc/square_odbc.events.js +++ b/server/api/square_odbc/square_odbc.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const SquareOdbc = require('../../models').SquareOdbc; - -var SquareOdbcEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -SquareOdbcEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - SquareOdbc.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - SquareOdbcEvents.emit(event + ':' + doc._id, doc); - SquareOdbcEvents.emit(event, doc); - done(null); - } -} - -module.exports = SquareOdbcEvents; +var _0xea18=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x53\x71\x75\x61\x72\x65\x4F\x64\x62\x63","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xea18[0];const EventEmitter=require(_0xea18[1]);const SquareOdbc=require(_0xea18[3])[_0xea18[2]];var SquareOdbcEvents= new EventEmitter();SquareOdbcEvents[_0xea18[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xea18[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xea18[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xea18[6]};for(var e in events){var event=events[e];SquareOdbc[_0xea18[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x1627x8,_0x1627x9,_0x1627xa){SquareOdbcEvents[_0xea18[10]](event+ _0xea18[8]+ _0x1627x8[_0xea18[9]],_0x1627x8);SquareOdbcEvents[_0xea18[10]](event,_0x1627x8);_0x1627xa(null)}}module[_0xea18[11]]= SquareOdbcEvents \ No newline at end of file diff --git a/server/api/square_odbc/square_odbc.socket.js b/server/api/square_odbc/square_odbc.socket.js index 34d555e..526abab 100644 --- a/server/api/square_odbc/square_odbc.socket.js +++ b/server/api/square_odbc/square_odbc.socket.js @@ -1,32 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const SquareOdbcEvents = require('./square_odbc.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('square_odbc:' + event, socket); - - SquareOdbcEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - SquareOdbcEvents.removeListener(event, listener); - }; -} +var _0x1ddb=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x73\x71\x75\x61\x72\x65\x5F\x6F\x64\x62\x63\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x73\x71\x75\x61\x72\x65\x5F\x6F\x64\x62\x63\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x1ddb[0];const SquareOdbcEvents=require(_0x1ddb[1]);var events=[_0x1ddb[2],_0x1ddb[3]];exports[_0x1ddb[4]]= function(_0x724dx3){for(var _0x724dx4=0,_0x724dx5=events[_0x1ddb[5]];_0x724dx4< _0x724dx5;_0x724dx4++){var _0x724dx6=events[_0x724dx4];var _0x724dx7=createListener(_0x1ddb[6]+ _0x724dx6,_0x724dx3);SquareOdbcEvents[_0x1ddb[7]](_0x724dx6,_0x724dx7);_0x724dx3[_0x1ddb[7]](_0x1ddb[8],removeListener(_0x724dx6,_0x724dx7))}};function createListener(_0x724dx6,_0x724dx3){return function(_0x724dx9){_0x724dx3[_0x1ddb[9]](_0x724dx6,_0x724dx9)}}function removeListener(_0x724dx6,_0x724dx7){return function(){SquareOdbcEvents[_0x1ddb[10]](_0x724dx6,_0x724dx7)}} \ No newline at end of file diff --git a/server/api/square_project/index.js b/server/api/square_project/index.js index 0b1c55e..2072892 100644 --- a/server/api/square_project/index.js +++ b/server/api/square_project/index.js @@ -1,17 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./square_project.controller'); -var auth = require('../../auth/auth.service'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), auth.hasModule([14, 7], ['admin']), controller.index); -router.get('/:id', auth.isAuthenticated(), auth.hasModule([14], ['admin']), controller.show); -router.get('/:id/download', controller.download); -router.post('/', auth.isAuthenticated(), auth.hasModule([14], ['admin']), controller.create); -router.put('/:id', auth.isAuthenticated(), auth.hasModule([14], ['admin']), controller.update); -router.delete('/', auth.isAuthenticated(), auth.hasModule([14], ['admin']), controller.bulkDestroy); -router.delete('/:id', auth.isAuthenticated(), auth.hasModule([14], ['admin']), controller.destroy); - -module.exports = router; +var _0x7215=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x73\x71\x75\x61\x72\x65\x5F\x70\x72\x6F\x6A\x65\x63\x74\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x2F\x3A\x69\x64\x2F\x64\x6F\x77\x6E\x6C\x6F\x61\x64","\x64\x6F\x77\x6E\x6C\x6F\x61\x64","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0x7215[0];var express=require(_0x7215[1]);var controller=require(_0x7215[2]);var auth=require(_0x7215[3]);var router=express.Router();router[_0x7215[9]](_0x7215[4],auth[_0x7215[5]](),auth[_0x7215[7]]([14,7],[_0x7215[6]]),controller[_0x7215[8]]);router[_0x7215[9]](_0x7215[10],auth[_0x7215[5]](),auth[_0x7215[7]]([14],[_0x7215[6]]),controller[_0x7215[11]]);router[_0x7215[9]](_0x7215[12],controller[_0x7215[13]]);router[_0x7215[15]](_0x7215[4],auth[_0x7215[5]](),auth[_0x7215[7]]([14],[_0x7215[6]]),controller[_0x7215[14]]);router[_0x7215[17]](_0x7215[10],auth[_0x7215[5]](),auth[_0x7215[7]]([14],[_0x7215[6]]),controller[_0x7215[16]]);router[_0x7215[19]](_0x7215[4],auth[_0x7215[5]](),auth[_0x7215[7]]([14],[_0x7215[6]]),controller[_0x7215[18]]);router[_0x7215[19]](_0x7215[10],auth[_0x7215[5]](),auth[_0x7215[7]]([14],[_0x7215[6]]),controller[_0x7215[20]]);module[_0x7215[21]]= router \ No newline at end of file diff --git a/server/api/square_project/square_project.controller.js b/server/api/square_project/square_project.controller.js index 46766e9..3cef893 100644 --- a/server/api/square_project/square_project.controller.js +++ b/server/api/square_project/square_project.controller.js @@ -1,133 +1 @@ -'use strict'; - -var _ = require('lodash'); -var path = require('path'); -var config = require('../../config/environment'); -var Util = require('../../config/util'); - -var SquareProject = require('../../models').SquareProject; - -// Get list of square_projects -exports.index = function(req, res) { - return SquareProject - .findAndCountAll(Util.getQuery(req.query)) - .then(function(result) { - res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get a single square_project -exports.show = function(req, res) { - return SquareProject - .findById(req.params.id) - .then(function(square_project) { - if (!square_project) { - return res.sendStatus(404); - } - return res.send(square_project); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Creates a new square_project in the DB. -exports.create = function(req, res) { - return SquareProject - .create(req.body) - .then(function(square_project) { - return res.status(201).send(square_project); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Updates an existing square_project in the DB. -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - delete req.body.name; - return SquareProject - .findById(req.params.id) - .then(function(square_project) { - if (!square_project) { - return res.sendStatus(404); - } - var updated = _.merge(square_project, req.body); - updated.save() - .then(function() { - return res.status(200).send(square_project); - }) - .catch(function(err) { - return handleError(res, err); - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes a square_project from the DB. -exports.destroy = function(req, res) { - return SquareProject - .findById(req.params.id) - .then(function(project) { - if (!project) { - return res.sendStatus(404); - } - return project - .destroy(); - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes a square_project from the DB. -exports.bulkDestroy = function(req, res) { - return SquareProject - .destroy({ - where: { - id: req.query.ids - }, - individualHooks: true - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.download = function(req, res, next) { - SquareProject - .findById(req.params.id) - .then(function(square_project) { - if (!square_project) { - return res.sendStatus(404); - } - console.log(req.query.filename); - res.set({ - "Content-Disposition": "attachment; filename=\"" + req.query.filename + - ".xml\"", - "Content-Type": "txt/xml" - }); - return res.send(square_project.preproduction); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0xc7dd=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x70\x61\x74\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x53\x71\x75\x61\x72\x65\x50\x72\x6F\x6A\x65\x63\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x6E\x61\x6D\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x64\x65\x73\x74\x72\x6F\x79","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73","\x64\x6F\x77\x6E\x6C\x6F\x61\x64","\x66\x69\x6C\x65\x6E\x61\x6D\x65","\x6C\x6F\x67","\x61\x74\x74\x61\x63\x68\x6D\x65\x6E\x74\x3B\x20\x66\x69\x6C\x65\x6E\x61\x6D\x65\x3D\x22","\x2E\x78\x6D\x6C\x22","\x74\x78\x74\x2F\x78\x6D\x6C","\x73\x65\x74","\x70\x72\x65\x70\x72\x6F\x64\x75\x63\x74\x69\x6F\x6E"];_0xc7dd[0];var _=require(_0xc7dd[1]);var path=require(_0xc7dd[2]);var config=require(_0xc7dd[3]);var Util=require(_0xc7dd[4]);var SquareProject=require(_0xc7dd[6])[_0xc7dd[5]];exports[_0xc7dd[7]]= function(_0x4626x6,_0x4626x7){return SquareProject[_0xc7dd[14]](Util[_0xc7dd[13]](_0x4626x6[_0xc7dd[12]]))[_0xc7dd[11]](function(_0x4626x9){_0x4626x7[_0xc7dd[10]](200)[_0xc7dd[9]](_0x4626x9)})[_0xc7dd[8]](function(_0x4626x8){return handleError(_0x4626x7,_0x4626x8)})};exports[_0xc7dd[15]]= function(_0x4626x6,_0x4626x7){return SquareProject[_0xc7dd[19]](_0x4626x6[_0xc7dd[18]][_0xc7dd[17]])[_0xc7dd[11]](function(_0x4626xa){if(!_0x4626xa){return _0x4626x7[_0xc7dd[16]](404)};return _0x4626x7[_0xc7dd[9]](_0x4626xa)})[_0xc7dd[8]](function(_0x4626x8){return handleError(_0x4626x7,_0x4626x8)})};exports[_0xc7dd[20]]= function(_0x4626x6,_0x4626x7){return SquareProject[_0xc7dd[20]](_0x4626x6[_0xc7dd[21]])[_0xc7dd[11]](function(_0x4626xa){return _0x4626x7[_0xc7dd[10]](201)[_0xc7dd[9]](_0x4626xa)})[_0xc7dd[8]](function(_0x4626x8){return handleError(_0x4626x7,_0x4626x8)})};exports[_0xc7dd[22]]= function(_0x4626x6,_0x4626x7){if(_0x4626x6[_0xc7dd[21]][_0xc7dd[17]]){delete _0x4626x6[_0xc7dd[21]][_0xc7dd[17]]};delete _0x4626x6[_0xc7dd[21]][_0xc7dd[23]];return SquareProject[_0xc7dd[19]](_0x4626x6[_0xc7dd[18]][_0xc7dd[17]])[_0xc7dd[11]](function(_0x4626xa){if(!_0x4626xa){return _0x4626x7[_0xc7dd[16]](404)};var _0x4626xb=_[_0xc7dd[24]](_0x4626xa,_0x4626x6[_0xc7dd[21]]);_0x4626xb[_0xc7dd[25]]()[_0xc7dd[11]](function(){return _0x4626x7[_0xc7dd[10]](200)[_0xc7dd[9]](_0x4626xa)})[_0xc7dd[8]](function(_0x4626x8){return handleError(_0x4626x7,_0x4626x8)})})[_0xc7dd[8]](function(_0x4626x8){return handleError(_0x4626x7,_0x4626x8)})};exports[_0xc7dd[26]]= function(_0x4626x6,_0x4626x7){return SquareProject[_0xc7dd[19]](_0x4626x6[_0xc7dd[18]][_0xc7dd[17]])[_0xc7dd[11]](function(_0x4626xc){if(!_0x4626xc){return _0x4626x7[_0xc7dd[16]](404)};return _0x4626xc[_0xc7dd[26]]()})[_0xc7dd[11]](function(){return _0x4626x7[_0xc7dd[16]](204)})[_0xc7dd[8]](function(_0x4626x8){return handleError(_0x4626x7,_0x4626x8)})};exports[_0xc7dd[27]]= function(_0x4626x6,_0x4626x7){return SquareProject[_0xc7dd[26]]({where:{id:_0x4626x6[_0xc7dd[12]][_0xc7dd[28]]},individualHooks:true})[_0xc7dd[11]](function(){return _0x4626x7[_0xc7dd[16]](204)})[_0xc7dd[8]](function(_0x4626x8){return handleError(_0x4626x7,_0x4626x8)})};exports[_0xc7dd[29]]= function(_0x4626x6,_0x4626x7,_0x4626xd){SquareProject[_0xc7dd[19]](_0x4626x6[_0xc7dd[18]][_0xc7dd[17]])[_0xc7dd[11]](function(_0x4626xa){if(!_0x4626xa){return _0x4626x7[_0xc7dd[16]](404)};console[_0xc7dd[31]](_0x4626x6[_0xc7dd[12]][_0xc7dd[30]]);_0x4626x7[_0xc7dd[35]]({"\x43\x6F\x6E\x74\x65\x6E\x74\x2D\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E":_0xc7dd[32]+ _0x4626x6[_0xc7dd[12]][_0xc7dd[30]]+ _0xc7dd[33],"\x43\x6F\x6E\x74\x65\x6E\x74\x2D\x54\x79\x70\x65":_0xc7dd[34]});return _0x4626x7[_0xc7dd[9]](_0x4626xa[_0xc7dd[36]])})[_0xc7dd[8]](function(_0x4626x8){return handleError(_0x4626x7,_0x4626x8)})};function handleError(_0x4626x7,_0x4626x8){return _0x4626x7[_0xc7dd[10]](500)[_0xc7dd[9]](_0x4626x8)} \ No newline at end of file diff --git a/server/api/square_project/square_project.events.js b/server/api/square_project/square_project.events.js index d592ee2..0e59094 100644 --- a/server/api/square_project/square_project.events.js +++ b/server/api/square_project/square_project.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const SquareProject = require('../../models').SquareProject; - -var SquareProjectEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -SquareProjectEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - SquareProject.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - SquareProjectEvents.emit(event + ':' + doc._id, doc); - SquareProjectEvents.emit(event, doc); - done(null); - } -} - -module.exports = SquareProjectEvents; +var _0xc356=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x53\x71\x75\x61\x72\x65\x50\x72\x6F\x6A\x65\x63\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xc356[0];const EventEmitter=require(_0xc356[1]);const SquareProject=require(_0xc356[3])[_0xc356[2]];var SquareProjectEvents= new EventEmitter();SquareProjectEvents[_0xc356[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xc356[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xc356[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xc356[6]};for(var e in events){var event=events[e];SquareProject[_0xc356[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x8da8x8,_0x8da8x9,_0x8da8xa){SquareProjectEvents[_0xc356[10]](event+ _0xc356[8]+ _0x8da8x8[_0xc356[9]],_0x8da8x8);SquareProjectEvents[_0xc356[10]](event,_0x8da8x8);_0x8da8xa(null)}}module[_0xc356[11]]= SquareProjectEvents \ No newline at end of file diff --git a/server/api/square_project/square_project.socket.js b/server/api/square_project/square_project.socket.js index fc240c5..1659192 100644 --- a/server/api/square_project/square_project.socket.js +++ b/server/api/square_project/square_project.socket.js @@ -1,32 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const SquareProjectEvents = require('./square_project.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('square_project:' + event, socket); - - SquareProjectEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - SquareProjectEvents.removeListener(event, listener); - }; -} +var _0x6599=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x73\x71\x75\x61\x72\x65\x5F\x70\x72\x6F\x6A\x65\x63\x74\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x73\x71\x75\x61\x72\x65\x5F\x70\x72\x6F\x6A\x65\x63\x74\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x6599[0];const SquareProjectEvents=require(_0x6599[1]);var events=[_0x6599[2],_0x6599[3]];exports[_0x6599[4]]= function(_0x29e0x3){for(var _0x29e0x4=0,_0x29e0x5=events[_0x6599[5]];_0x29e0x4< _0x29e0x5;_0x29e0x4++){var _0x29e0x6=events[_0x29e0x4];var _0x29e0x7=createListener(_0x6599[6]+ _0x29e0x6,_0x29e0x3);SquareProjectEvents[_0x6599[7]](_0x29e0x6,_0x29e0x7);_0x29e0x3[_0x6599[7]](_0x6599[8],removeListener(_0x29e0x6,_0x29e0x7))}};function createListener(_0x29e0x6,_0x29e0x3){return function(_0x29e0x9){_0x29e0x3[_0x6599[9]](_0x29e0x6,_0x29e0x9)}}function removeListener(_0x29e0x6,_0x29e0x7){return function(){SquareProjectEvents[_0x6599[10]](_0x29e0x6,_0x29e0x7)}} \ No newline at end of file diff --git a/server/api/square_recording/index.js b/server/api/square_recording/index.js index 0ac38d5..62de2e8 100644 --- a/server/api/square_recording/index.js +++ b/server/api/square_recording/index.js @@ -1,17 +1 @@ -'use strict'; - -var express = require('express'); -var auth = require('../../auth/auth.service'); -var controller = require('./square_recording.controller'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), auth.hasModule([14], ['admin']), controller.index); -router.get('/:id', auth.isAuthenticated(), auth.hasModule([14], ['admin']), controller.show); -router.get('/:id/stream', auth.isAuthenticated(), auth.hasModule([14], ['admin']), controller.getStream); -router.post('/', auth.isAuthenticated(), auth.hasModule([14], ['admin']), controller.create); -router.put('/:id', auth.isAuthenticated(), auth.hasModule([14], ['admin']), controller.update); -router.delete('/', auth.isAuthenticated(), auth.hasModule([14], ['admin']), controller.bulkDestroy); -router.delete('/:id', auth.isAuthenticated(), auth.hasModule([14], ['admin']), controller.destroy); - -module.exports = router; +var _0x1945=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x73\x71\x75\x61\x72\x65\x5F\x72\x65\x63\x6F\x72\x64\x69\x6E\x67\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x2F\x3A\x69\x64\x2F\x73\x74\x72\x65\x61\x6D","\x67\x65\x74\x53\x74\x72\x65\x61\x6D","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0x1945[0];var express=require(_0x1945[1]);var auth=require(_0x1945[2]);var controller=require(_0x1945[3]);var router=express.Router();router[_0x1945[9]](_0x1945[4],auth[_0x1945[5]](),auth[_0x1945[7]]([14],[_0x1945[6]]),controller[_0x1945[8]]);router[_0x1945[9]](_0x1945[10],auth[_0x1945[5]](),auth[_0x1945[7]]([14],[_0x1945[6]]),controller[_0x1945[11]]);router[_0x1945[9]](_0x1945[12],auth[_0x1945[5]](),auth[_0x1945[7]]([14],[_0x1945[6]]),controller[_0x1945[13]]);router[_0x1945[15]](_0x1945[4],auth[_0x1945[5]](),auth[_0x1945[7]]([14],[_0x1945[6]]),controller[_0x1945[14]]);router[_0x1945[17]](_0x1945[10],auth[_0x1945[5]](),auth[_0x1945[7]]([14],[_0x1945[6]]),controller[_0x1945[16]]);router[_0x1945[19]](_0x1945[4],auth[_0x1945[5]](),auth[_0x1945[7]]([14],[_0x1945[6]]),controller[_0x1945[18]]);router[_0x1945[19]](_0x1945[10],auth[_0x1945[5]](),auth[_0x1945[7]]([14],[_0x1945[6]]),controller[_0x1945[20]]);module[_0x1945[21]]= router \ No newline at end of file diff --git a/server/api/square_recording/square_recording.controller.js b/server/api/square_recording/square_recording.controller.js index 12c824a..47c983c 100644 --- a/server/api/square_recording/square_recording.controller.js +++ b/server/api/square_recording/square_recording.controller.js @@ -1,172 +1 @@ -/** - * Using Rails-like standard naming convention for endpoints. - * GET /api/square/recordings -> index - * POST /api/square/recordings -> create - * GET /api/square/recordings/:id -> show - * PUT /api/square/recordings/:id -> update - * DELETE /api/square/recordings/:id -> destroy - */ - -'use strict'; - - -var _ = require('lodash'); -var util = require('util'); - -var SquareRecording = require('../../models').SquareRecording; -var Promise = require('bluebird'); -// var base64 = Promise.promisifyAll(require('file-base64')); -var base64 = require('file-base64'); -var fs = require('fs'); - -function handleError(res) { - return function(err) { - if (err.cause && err.cause.code === 'ENOENT') { - err = { - message: 'No file or directory', - translatedMessage: 'MESSAGE_NO_FILE_OR_DIRECTORY' - }; - } - return res.status(500).send(err); - } -} - -function responseWithResult(res, statusCode) { - statusCode = statusCode || 200; - return function(entity) { - if (entity) { - res.status(statusCode).json(entity); - } - }; -} - -function handleEntityNotFound(res) { - return function(entity) { - if (!entity) { - res.status(404).end(); - return null; - } - return entity; - }; -} - -function saveUpdates(body) { - return function(entity) { - return entity - .updateAttributes(body); - }; -} - -function removeEntity(res) { - return function(entity) { - if (entity) { - return entity.destroy() - .then(function() { - res.status(204).end(); - }); - } - }; -} - -function getQuery(query) { - var _query = {}; - _query.where = {}; - - _.forEach(query, function(value, key) { - switch (key) { - case 'limit': - case 'offset': - _query[key] = Number(value); - break; - case 'order': - _query[key] = value; - break; - default: - _query.where[key] = { - $like: '%' + value + '%' - }; - } - }); - - return _query; -} - -// Gets a list of SquareRecordings -exports.index = function(req, res) { - var _query = getQuery(req.query); - return SquareRecording - .findAndCountAll(_query) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Gets a single SquareRecording from the DB -exports.show = function(req, res) { - return SquareRecording.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Gets a single SquareRecording from the DB -exports.getStream = function(req, res) { - return SquareRecording - .findById(req.params.id) - .then(function(recording) { - var readFile = Promise.promisify(fs.readFile); - return readFile(recording.savePath); - }) - .then(function(result) { - var base64String = new Buffer(result, 'binary').toString('base64'); - return base64String; - }) - .then(function(base64String) { - return res.status(200).send({ - downloadString: base64String - }); - }) - .catch(handleError(res)); -} - - -// Creates a new SquareRecording in the DB -exports.create = function(req, res) { - return SquareRecording.create(req.body) - .then(responseWithResult(res, 201)) - .catch(handleError(res)); -} - -// Updates an existing SquareRecording in the DB -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - return SquareRecording.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(saveUpdates(req.body)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Deletes a SquareRecording from the DB -exports.destroy = function(req, res) { - return SquareRecording.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(removeEntity(res)) - .catch(handleError(res)); -} - -// Deletes a recording from the DB. -exports.bulkDestroy = function(req, res) { - return SquareRecording - .destroy({ - where: { - id: req.query.ids - }, - individualHooks: true - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(handleError(res)); -}; +var _0x7ad3=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x75\x74\x69\x6C","\x53\x71\x75\x61\x72\x65\x52\x65\x63\x6F\x72\x64\x69\x6E\x67","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x62\x6C\x75\x65\x62\x69\x72\x64","\x66\x69\x6C\x65\x2D\x62\x61\x73\x65\x36\x34","\x66\x73","\x63\x61\x75\x73\x65","\x63\x6F\x64\x65","\x45\x4E\x4F\x45\x4E\x54","\x4E\x6F\x20\x66\x69\x6C\x65\x20\x6F\x72\x20\x64\x69\x72\x65\x63\x74\x6F\x72\x79","\x4D\x45\x53\x53\x41\x47\x45\x5F\x4E\x4F\x5F\x46\x49\x4C\x45\x5F\x4F\x52\x5F\x44\x49\x52\x45\x43\x54\x4F\x52\x59","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x6A\x73\x6F\x6E","\x65\x6E\x64","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x74\x68\x65\x6E","\x64\x65\x73\x74\x72\x6F\x79","\x77\x68\x65\x72\x65","\x6C\x69\x6D\x69\x74","\x6F\x66\x66\x73\x65\x74","\x6F\x72\x64\x65\x72","\x25","\x66\x6F\x72\x45\x61\x63\x68","\x69\x6E\x64\x65\x78","\x71\x75\x65\x72\x79","\x63\x61\x74\x63\x68","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x73\x68\x6F\x77","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x67\x65\x74\x53\x74\x72\x65\x61\x6D","\x62\x61\x73\x65\x36\x34","\x62\x69\x6E\x61\x72\x79","\x72\x65\x61\x64\x46\x69\x6C\x65","\x70\x72\x6F\x6D\x69\x73\x69\x66\x79","\x73\x61\x76\x65\x50\x61\x74\x68","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64\x73"];_0x7ad3[0];var _=require(_0x7ad3[1]);var util=require(_0x7ad3[2]);var SquareRecording=require(_0x7ad3[4])[_0x7ad3[3]];var Promise=require(_0x7ad3[5]);var base64=require(_0x7ad3[6]);var fs=require(_0x7ad3[7]);function handleError(_0x5f4ax8){return function(_0x5f4ax9){if(_0x5f4ax9[_0x7ad3[8]]&& _0x5f4ax9[_0x7ad3[8]][_0x7ad3[9]]=== _0x7ad3[10]){_0x5f4ax9= {message:_0x7ad3[11],translatedMessage:_0x7ad3[12]}};return _0x5f4ax8[_0x7ad3[14]](500)[_0x7ad3[13]](_0x5f4ax9)}}function responseWithResult(_0x5f4ax8,_0x5f4axb){_0x5f4axb= _0x5f4axb|| 200;return function(_0x5f4axc){if(_0x5f4axc){_0x5f4ax8[_0x7ad3[14]](_0x5f4axb)[_0x7ad3[15]](_0x5f4axc)}}}function handleEntityNotFound(_0x5f4ax8){return function(_0x5f4axc){if(!_0x5f4axc){_0x5f4ax8[_0x7ad3[14]](404)[_0x7ad3[16]]();return null};return _0x5f4axc}}function saveUpdates(_0x5f4axf){return function(_0x5f4axc){return _0x5f4axc[_0x7ad3[17]](_0x5f4axf)}}function removeEntity(_0x5f4ax8){return function(_0x5f4axc){if(_0x5f4axc){return _0x5f4axc[_0x7ad3[19]]()[_0x7ad3[18]](function(){_0x5f4ax8[_0x7ad3[14]](204)[_0x7ad3[16]]()})}}}function getQuery(_0x5f4ax12){var _0x5f4ax13={};_0x5f4ax13[_0x7ad3[20]]= {};_[_0x7ad3[25]](_0x5f4ax12,function(_0x5f4ax14,_0x5f4ax15){switch(_0x5f4ax15){case _0x7ad3[21]:;case _0x7ad3[22]:_0x5f4ax13[_0x5f4ax15]= Number(_0x5f4ax14);break;case _0x7ad3[23]:_0x5f4ax13[_0x5f4ax15]= _0x5f4ax14;break;default:_0x5f4ax13[_0x7ad3[20]][_0x5f4ax15]= {$like:_0x7ad3[24]+ _0x5f4ax14+ _0x7ad3[24]}}});return _0x5f4ax13}exports[_0x7ad3[26]]= function(_0x5f4ax16,_0x5f4ax8){var _0x5f4ax13=getQuery(_0x5f4ax16[_0x7ad3[27]]);return SquareRecording[_0x7ad3[29]](_0x5f4ax13)[_0x7ad3[18]](responseWithResult(_0x5f4ax8))[_0x7ad3[28]](handleError(_0x5f4ax8))};exports[_0x7ad3[30]]= function(_0x5f4ax16,_0x5f4ax8){return SquareRecording[_0x7ad3[33]](_0x5f4ax16[_0x7ad3[32]][_0x7ad3[31]])[_0x7ad3[18]](handleEntityNotFound(_0x5f4ax8))[_0x7ad3[18]](responseWithResult(_0x5f4ax8))[_0x7ad3[28]](handleError(_0x5f4ax8))};exports[_0x7ad3[34]]= function(_0x5f4ax16,_0x5f4ax8){return SquareRecording[_0x7ad3[33]](_0x5f4ax16[_0x7ad3[32]][_0x7ad3[31]])[_0x7ad3[18]](function(_0x5f4ax19){var _0x5f4ax1a=Promise[_0x7ad3[38]](fs[_0x7ad3[37]]);return _0x5f4ax1a(_0x5f4ax19[_0x7ad3[39]])})[_0x7ad3[18]](function(_0x5f4ax18){var _0x5f4ax17= new Buffer(_0x5f4ax18,_0x7ad3[36]).toString(_0x7ad3[35]);return _0x5f4ax17})[_0x7ad3[18]](function(_0x5f4ax17){return _0x5f4ax8[_0x7ad3[14]](200)[_0x7ad3[13]]({downloadString:_0x5f4ax17})})[_0x7ad3[28]](handleError(_0x5f4ax8))};exports[_0x7ad3[40]]= function(_0x5f4ax16,_0x5f4ax8){return SquareRecording[_0x7ad3[40]](_0x5f4ax16[_0x7ad3[41]])[_0x7ad3[18]](responseWithResult(_0x5f4ax8,201))[_0x7ad3[28]](handleError(_0x5f4ax8))};exports[_0x7ad3[42]]= function(_0x5f4ax16,_0x5f4ax8){if(_0x5f4ax16[_0x7ad3[41]][_0x7ad3[31]]){delete _0x5f4ax16[_0x7ad3[41]][_0x7ad3[31]]};return SquareRecording[_0x7ad3[33]](_0x5f4ax16[_0x7ad3[32]][_0x7ad3[31]])[_0x7ad3[18]](handleEntityNotFound(_0x5f4ax8))[_0x7ad3[18]](saveUpdates(_0x5f4ax16[_0x7ad3[41]]))[_0x7ad3[18]](responseWithResult(_0x5f4ax8))[_0x7ad3[28]](handleError(_0x5f4ax8))};exports[_0x7ad3[19]]= function(_0x5f4ax16,_0x5f4ax8){return SquareRecording[_0x7ad3[33]](_0x5f4ax16[_0x7ad3[32]][_0x7ad3[31]])[_0x7ad3[18]](handleEntityNotFound(_0x5f4ax8))[_0x7ad3[18]](removeEntity(_0x5f4ax8))[_0x7ad3[28]](handleError(_0x5f4ax8))};exports[_0x7ad3[43]]= function(_0x5f4ax16,_0x5f4ax8){return SquareRecording[_0x7ad3[19]]({where:{id:_0x5f4ax16[_0x7ad3[27]][_0x7ad3[45]]},individualHooks:true})[_0x7ad3[18]](function(){return _0x5f4ax8[_0x7ad3[44]](204)})[_0x7ad3[28]](handleError(_0x5f4ax8))} \ No newline at end of file diff --git a/server/api/square_recording/square_recording.events.js b/server/api/square_recording/square_recording.events.js index 76305fd..be93e45 100644 --- a/server/api/square_recording/square_recording.events.js +++ b/server/api/square_recording/square_recording.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const SquareRecording = require('../../models').SquareRecording; - -var SquareRecordingEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -SquareRecordingEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - SquareRecording.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - SquareRecordingEvents.emit(event + ':' + doc._id, doc); - SquareRecordingEvents.emit(event, doc); - done(null); - } -} - -module.exports = SquareRecordingEvents; +var _0x5d04=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x53\x71\x75\x61\x72\x65\x52\x65\x63\x6F\x72\x64\x69\x6E\x67","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x5d04[0];const EventEmitter=require(_0x5d04[1]);const SquareRecording=require(_0x5d04[3])[_0x5d04[2]];var SquareRecordingEvents= new EventEmitter();SquareRecordingEvents[_0x5d04[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x5d04[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x5d04[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x5d04[6]};for(var e in events){var event=events[e];SquareRecording[_0x5d04[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xf922x8,_0xf922x9,_0xf922xa){SquareRecordingEvents[_0x5d04[10]](event+ _0x5d04[8]+ _0xf922x8[_0x5d04[9]],_0xf922x8);SquareRecordingEvents[_0x5d04[10]](event,_0xf922x8);_0xf922xa(null)}}module[_0x5d04[11]]= SquareRecordingEvents \ No newline at end of file diff --git a/server/api/square_recording/square_recording.socket.js b/server/api/square_recording/square_recording.socket.js index 8ca5928..b271cf7 100644 --- a/server/api/square_recording/square_recording.socket.js +++ b/server/api/square_recording/square_recording.socket.js @@ -1,32 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const SquareRecordingEvents = require('./square_recording.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('square_recording:' + event, socket); - - SquareRecordingEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - SquareRecordingEvents.removeListener(event, listener); - }; -} +var _0xa400=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x73\x71\x75\x61\x72\x65\x5F\x72\x65\x63\x6F\x72\x64\x69\x6E\x67\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x73\x71\x75\x61\x72\x65\x5F\x72\x65\x63\x6F\x72\x64\x69\x6E\x67\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xa400[0];const SquareRecordingEvents=require(_0xa400[1]);var events=[_0xa400[2],_0xa400[3]];exports[_0xa400[4]]= function(_0x4178x3){for(var _0x4178x4=0,_0x4178x5=events[_0xa400[5]];_0x4178x4< _0x4178x5;_0x4178x4++){var _0x4178x6=events[_0x4178x4];var _0x4178x7=createListener(_0xa400[6]+ _0x4178x6,_0x4178x3);SquareRecordingEvents[_0xa400[7]](_0x4178x6,_0x4178x7);_0x4178x3[_0xa400[7]](_0xa400[8],removeListener(_0x4178x6,_0x4178x7))}};function createListener(_0x4178x6,_0x4178x3){return function(_0x4178x9){_0x4178x3[_0xa400[9]](_0x4178x6,_0x4178x9)}}function removeListener(_0x4178x6,_0x4178x7){return function(){SquareRecordingEvents[_0xa400[10]](_0x4178x6,_0x4178x7)}} \ No newline at end of file diff --git a/server/api/sugarcrm_account/index.js b/server/api/sugarcrm_account/index.js index 5927151..daac3f3 100644 --- a/server/api/sugarcrm_account/index.js +++ b/server/api/sugarcrm_account/index.js @@ -1,20 +1 @@ -'use strict'; - -var express = require('express'); -var auth = require('../../auth/auth.service'); -var controller = require('./sugarcrm_account.controller'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), auth.hasModule([19, 13], ['admin']), controller.index); -router.get('/:id/check', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.checkAccount); -router.get('/:id/fields', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.getFields); -router.get('/:id', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.show); -router.post('/validate/:field', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.accountValidation); -router.post('/', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.create); -router.put('/:id', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.update); -router.delete('/', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.bulkDestroy); -router.delete('/:id', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.destroy); - - -module.exports = router; +var _0x12e2=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x73\x75\x67\x61\x72\x63\x72\x6D\x5F\x61\x63\x63\x6F\x75\x6E\x74\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64\x2F\x63\x68\x65\x63\x6B","\x63\x68\x65\x63\x6B\x41\x63\x63\x6F\x75\x6E\x74","\x2F\x3A\x69\x64\x2F\x66\x69\x65\x6C\x64\x73","\x67\x65\x74\x46\x69\x65\x6C\x64\x73","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x2F\x76\x61\x6C\x69\x64\x61\x74\x65\x2F\x3A\x66\x69\x65\x6C\x64","\x61\x63\x63\x6F\x75\x6E\x74\x56\x61\x6C\x69\x64\x61\x74\x69\x6F\x6E","\x70\x6F\x73\x74","\x63\x72\x65\x61\x74\x65","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0x12e2[0];var express=require(_0x12e2[1]);var auth=require(_0x12e2[2]);var controller=require(_0x12e2[3]);var router=express.Router();router[_0x12e2[9]](_0x12e2[4],auth[_0x12e2[5]](),auth[_0x12e2[7]]([19,13],[_0x12e2[6]]),controller[_0x12e2[8]]);router[_0x12e2[9]](_0x12e2[10],auth[_0x12e2[5]](),auth[_0x12e2[7]]([19],[_0x12e2[6]]),controller[_0x12e2[11]]);router[_0x12e2[9]](_0x12e2[12],auth[_0x12e2[5]](),auth[_0x12e2[7]]([19],[_0x12e2[6]]),controller[_0x12e2[13]]);router[_0x12e2[9]](_0x12e2[14],auth[_0x12e2[5]](),auth[_0x12e2[7]]([19],[_0x12e2[6]]),controller[_0x12e2[15]]);router[_0x12e2[18]](_0x12e2[16],auth[_0x12e2[5]](),auth[_0x12e2[7]]([19],[_0x12e2[6]]),controller[_0x12e2[17]]);router[_0x12e2[18]](_0x12e2[4],auth[_0x12e2[5]](),auth[_0x12e2[7]]([19],[_0x12e2[6]]),controller[_0x12e2[19]]);router[_0x12e2[21]](_0x12e2[14],auth[_0x12e2[5]](),auth[_0x12e2[7]]([19],[_0x12e2[6]]),controller[_0x12e2[20]]);router[_0x12e2[23]](_0x12e2[4],auth[_0x12e2[5]](),auth[_0x12e2[7]]([19],[_0x12e2[6]]),controller[_0x12e2[22]]);router[_0x12e2[23]](_0x12e2[14],auth[_0x12e2[5]](),auth[_0x12e2[7]]([19],[_0x12e2[6]]),controller[_0x12e2[24]]);module[_0x12e2[25]]= router \ No newline at end of file diff --git a/server/api/sugarcrm_account/sugarcrm_account.controller.js b/server/api/sugarcrm_account/sugarcrm_account.controller.js index 344c0ed..5e03d42 100644 --- a/server/api/sugarcrm_account/sugarcrm_account.controller.js +++ b/server/api/sugarcrm_account/sugarcrm_account.controller.js @@ -1,202 +1 @@ -/** - * Using Rails-like standard naming convention for endpoints. - * GET /api/sugarcrm/accounts -> index - * POST /api/sugarcrm/accounts -> create - * GET /api/sugarcrm/accounts/:id -> show - * PUT /api/sugarcrm/accounts/:id -> update - * DELETE /api/sugarcrm/accounts/:id -> destroy - */ - -'use strict'; - - -var _ = require('lodash'); -var Util = require('../../config/util'); - -var SugarcrmAccount = require('../../models').SugarcrmAccount; - -function handleError(res, statusCode) { - statusCode = statusCode || 500; - return function(err) { - res.status(statusCode).send(err); - }; -} - -function responseWithResult(res, statusCode) { - statusCode = statusCode || 200; - return function(entity) { - if (entity) { - res.status(statusCode).json(entity); - } - }; -} - -function responseWithoutResult(res, statusCode) { - statusCode = statusCode || 200; - return function() { - res.sendStatus(statusCode); - }; -} - -function handleEntityNotFound(res) { - return function(entity) { - if (!entity) { - res.status(404).end(); - return null; - } - return entity; - }; -} - -function saveUpdates(updates) { - return function(entity) { - return entity.updateAttributes(updates) - .then(function(updated) { - return updated; - }); - }; -} - -function removeEntity(res) { - return function(entity) { - if (entity) { - return entity.destroy() - .then(function() { - res.status(204).end(); - }); - } - }; -} - -// Gets a list of SugarcrmAccounts -exports.index = function(req, res) { - return SugarcrmAccount - .scope('configurations') - .findAndCountAll(_.merge(Util.getQuery(req.query), { - distinct: true - })) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Gets a single SugarcrmAccount from the DB -exports.show = function(req, res) { - return SugarcrmAccount.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Creates a new SugarcrmAccount in the DB -exports.create = function(req, res) { - return SugarcrmAccount.create(req.body) - .then(responseWithResult(res, 201)) - .catch(handleError(res)); -} - -// Updates an existing SugarcrmAccount in the DB -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - return SugarcrmAccount.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(saveUpdates(req.body)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Deletes a SugarcrmAccount from the DB -exports.destroy = function(req, res) { - return SugarcrmAccount.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(removeEntity(res)) - .catch(handleError(res)); -} - -exports.checkAccount = function(req, res) { - return SugarcrmAccount.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(function(account) { - var sugar = require('node-sugarcrm-client'); - sugar.init({ - apiURL: Util.stripTrailingSlash(account.remoteUri) + "/service/v4_1/rest.php", - login: account.username, - passwd: account.password - }); - sugar.login(function(sessionId) { - if (!sessionId) { - return res.sendStatus(400); - } - return res.sendStatus(200); - }); - }) - .catch(handleError(res)); -} - -exports.bulkDestroy = function(req, res) { - SugarcrmAccount - .destroy({ - where: { - id: req.query.ids - }, - individualHooks: true - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(handleError(res)); -}; - -exports.accountValidation = function(req, res) { - var where = {}; - where[req.params.field] = req.body.value; - return SugarcrmAccount - .findAndCountAll({ - where: where - }) - .then(function(result) { - if (result.count) { - return res.status(200).send({ - isValid: false, - value: req.body.value - }); - } - return res.status(200).send({ - isValid: true, - value: req.body.value - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.getFields = function(req, res) { - var sugar = require('node-sugarcrm-client'); - return SugarcrmAccount.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(function(account) { - sugar.init({ - apiURL: Util.stripTrailingSlash(account.remoteUri) + "/service/v4_1/rest.php", - login: account.username, - passwd: account.password - }); - sugar.login(function(sessionId) { - if (!sessionId) { - return res.sendStatus(400); - } - var params = { - session: sessionId, - module_name: "Cases" - }; - sugar.call("get_module_fields", params, function(result, err) { - if (err) { - return res.sendStatus(400); - } - return res.status(200).send(result.module_fields); - }); - }); - }) - .catch(handleError(res)); -}; +var _0x5106=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x53\x75\x67\x61\x72\x63\x72\x6D\x41\x63\x63\x6F\x75\x6E\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x6A\x73\x6F\x6E","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x65\x6E\x64","\x74\x68\x65\x6E","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x64\x65\x73\x74\x72\x6F\x79","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x6D\x65\x72\x67\x65","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x73","\x73\x63\x6F\x70\x65","\x73\x68\x6F\x77","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x63\x68\x65\x63\x6B\x41\x63\x63\x6F\x75\x6E\x74","\x6E\x6F\x64\x65\x2D\x73\x75\x67\x61\x72\x63\x72\x6D\x2D\x63\x6C\x69\x65\x6E\x74","\x72\x65\x6D\x6F\x74\x65\x55\x72\x69","\x73\x74\x72\x69\x70\x54\x72\x61\x69\x6C\x69\x6E\x67\x53\x6C\x61\x73\x68","\x2F\x73\x65\x72\x76\x69\x63\x65\x2F\x76\x34\x5F\x31\x2F\x72\x65\x73\x74\x2E\x70\x68\x70","\x75\x73\x65\x72\x6E\x61\x6D\x65","\x70\x61\x73\x73\x77\x6F\x72\x64","\x69\x6E\x69\x74","\x6C\x6F\x67\x69\x6E","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73","\x61\x63\x63\x6F\x75\x6E\x74\x56\x61\x6C\x69\x64\x61\x74\x69\x6F\x6E","\x66\x69\x65\x6C\x64","\x76\x61\x6C\x75\x65","\x63\x6F\x75\x6E\x74","\x67\x65\x74\x46\x69\x65\x6C\x64\x73","\x43\x61\x73\x65\x73","\x67\x65\x74\x5F\x6D\x6F\x64\x75\x6C\x65\x5F\x66\x69\x65\x6C\x64\x73","\x6D\x6F\x64\x75\x6C\x65\x5F\x66\x69\x65\x6C\x64\x73","\x63\x61\x6C\x6C"];_0x5106[0];var _=require(_0x5106[1]);var Util=require(_0x5106[2]);var SugarcrmAccount=require(_0x5106[4])[_0x5106[3]];function handleError(_0xb1a8x5,_0xb1a8x6){_0xb1a8x6= _0xb1a8x6|| 500;return function(_0xb1a8x7){_0xb1a8x5[_0x5106[6]](_0xb1a8x6)[_0x5106[5]](_0xb1a8x7)}}function responseWithResult(_0xb1a8x5,_0xb1a8x6){_0xb1a8x6= _0xb1a8x6|| 200;return function(_0xb1a8x9){if(_0xb1a8x9){_0xb1a8x5[_0x5106[6]](_0xb1a8x6)[_0x5106[7]](_0xb1a8x9)}}}function responseWithoutResult(_0xb1a8x5,_0xb1a8x6){_0xb1a8x6= _0xb1a8x6|| 200;return function(){_0xb1a8x5[_0x5106[8]](_0xb1a8x6)}}function handleEntityNotFound(_0xb1a8x5){return function(_0xb1a8x9){if(!_0xb1a8x9){_0xb1a8x5[_0x5106[6]](404)[_0x5106[9]]();return null};return _0xb1a8x9}}function saveUpdates(_0xb1a8xd){return function(_0xb1a8x9){return _0xb1a8x9[_0x5106[11]](_0xb1a8xd)[_0x5106[10]](function(_0xb1a8xe){return _0xb1a8xe})}}function removeEntity(_0xb1a8x5){return function(_0xb1a8x9){if(_0xb1a8x9){return _0xb1a8x9[_0x5106[12]]()[_0x5106[10]](function(){_0xb1a8x5[_0x5106[6]](204)[_0x5106[9]]()})}}}exports[_0x5106[13]]= function(_0xb1a8x10,_0xb1a8x5){return SugarcrmAccount[_0x5106[20]](_0x5106[19])[_0x5106[18]](_[_0x5106[17]](Util[_0x5106[16]](_0xb1a8x10[_0x5106[15]]),{distinct:true}))[_0x5106[10]](responseWithResult(_0xb1a8x5))[_0x5106[14]](handleError(_0xb1a8x5))};exports[_0x5106[21]]= function(_0xb1a8x10,_0xb1a8x5){return SugarcrmAccount[_0x5106[24]](_0xb1a8x10[_0x5106[23]][_0x5106[22]])[_0x5106[10]](handleEntityNotFound(_0xb1a8x5))[_0x5106[10]](responseWithResult(_0xb1a8x5))[_0x5106[14]](handleError(_0xb1a8x5))};exports[_0x5106[25]]= function(_0xb1a8x10,_0xb1a8x5){return SugarcrmAccount[_0x5106[25]](_0xb1a8x10[_0x5106[26]])[_0x5106[10]](responseWithResult(_0xb1a8x5,201))[_0x5106[14]](handleError(_0xb1a8x5))};exports[_0x5106[27]]= function(_0xb1a8x10,_0xb1a8x5){if(_0xb1a8x10[_0x5106[26]][_0x5106[22]]){delete _0xb1a8x10[_0x5106[26]][_0x5106[22]]};return SugarcrmAccount[_0x5106[24]](_0xb1a8x10[_0x5106[23]][_0x5106[22]])[_0x5106[10]](handleEntityNotFound(_0xb1a8x5))[_0x5106[10]](saveUpdates(_0xb1a8x10[_0x5106[26]]))[_0x5106[10]](responseWithResult(_0xb1a8x5))[_0x5106[14]](handleError(_0xb1a8x5))};exports[_0x5106[12]]= function(_0xb1a8x10,_0xb1a8x5){return SugarcrmAccount[_0x5106[24]](_0xb1a8x10[_0x5106[23]][_0x5106[22]])[_0x5106[10]](handleEntityNotFound(_0xb1a8x5))[_0x5106[10]](removeEntity(_0xb1a8x5))[_0x5106[14]](handleError(_0xb1a8x5))};exports[_0x5106[28]]= function(_0xb1a8x10,_0xb1a8x5){return SugarcrmAccount[_0x5106[24]](_0xb1a8x10[_0x5106[23]][_0x5106[22]])[_0x5106[10]](handleEntityNotFound(_0xb1a8x5))[_0x5106[10]](function(_0xb1a8x11){var _0xb1a8x12=require(_0x5106[29]);_0xb1a8x12[_0x5106[35]]({apiURL:Util[_0x5106[31]](_0xb1a8x11[_0x5106[30]])+ _0x5106[32],login:_0xb1a8x11[_0x5106[33]],passwd:_0xb1a8x11[_0x5106[34]]});_0xb1a8x12[_0x5106[36]](function(_0xb1a8x13){if(!_0xb1a8x13){return _0xb1a8x5[_0x5106[8]](400)};return _0xb1a8x5[_0x5106[8]](200)})})[_0x5106[14]](handleError(_0xb1a8x5))};exports[_0x5106[37]]= function(_0xb1a8x10,_0xb1a8x5){SugarcrmAccount[_0x5106[12]]({where:{id:_0xb1a8x10[_0x5106[15]][_0x5106[38]]},individualHooks:true})[_0x5106[10]](function(){return _0xb1a8x5[_0x5106[8]](204)})[_0x5106[14]](handleError(_0xb1a8x5))};exports[_0x5106[39]]= function(_0xb1a8x10,_0xb1a8x5){var _0xb1a8x14={};_0xb1a8x14[_0xb1a8x10[_0x5106[23]][_0x5106[40]]]= _0xb1a8x10[_0x5106[26]][_0x5106[41]];return SugarcrmAccount[_0x5106[18]]({where:_0xb1a8x14})[_0x5106[10]](function(_0xb1a8x15){if(_0xb1a8x15[_0x5106[42]]){return _0xb1a8x5[_0x5106[6]](200)[_0x5106[5]]({isValid:false,value:_0xb1a8x10[_0x5106[26]][_0x5106[41]]})};return _0xb1a8x5[_0x5106[6]](200)[_0x5106[5]]({isValid:true,value:_0xb1a8x10[_0x5106[26]][_0x5106[41]]})})[_0x5106[14]](function(_0xb1a8x7){return handleError(_0xb1a8x5,_0xb1a8x7)})};exports[_0x5106[43]]= function(_0xb1a8x10,_0xb1a8x5){var _0xb1a8x12=require(_0x5106[29]);return SugarcrmAccount[_0x5106[24]](_0xb1a8x10[_0x5106[23]][_0x5106[22]])[_0x5106[10]](handleEntityNotFound(_0xb1a8x5))[_0x5106[10]](function(_0xb1a8x11){_0xb1a8x12[_0x5106[35]]({apiURL:Util[_0x5106[31]](_0xb1a8x11[_0x5106[30]])+ _0x5106[32],login:_0xb1a8x11[_0x5106[33]],passwd:_0xb1a8x11[_0x5106[34]]});_0xb1a8x12[_0x5106[36]](function(_0xb1a8x13){if(!_0xb1a8x13){return _0xb1a8x5[_0x5106[8]](400)};var _0xb1a8x16={session:_0xb1a8x13,module_name:_0x5106[44]};_0xb1a8x12[_0x5106[47]](_0x5106[45],_0xb1a8x16,function(_0xb1a8x15,_0xb1a8x7){if(_0xb1a8x7){return _0xb1a8x5[_0x5106[8]](400)};return _0xb1a8x5[_0x5106[6]](200)[_0x5106[5]](_0xb1a8x15[_0x5106[46]])})})})[_0x5106[14]](handleError(_0xb1a8x5))} \ No newline at end of file diff --git a/server/api/sugarcrm_account/sugarcrm_account.events.js b/server/api/sugarcrm_account/sugarcrm_account.events.js index b65ac40..96291be 100644 --- a/server/api/sugarcrm_account/sugarcrm_account.events.js +++ b/server/api/sugarcrm_account/sugarcrm_account.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const SugarcrmAccount = require('../../models').SugarcrmAccount; - -var SugarcrmAccountEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -SugarcrmAccountEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - SugarcrmAccount.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - SugarcrmAccountEvents.emit(event + ':' + doc._id, doc); - SugarcrmAccountEvents.emit(event, doc); - done(null); - } -} - -module.exports = SugarcrmAccountEvents; +var _0xb2e4=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x53\x75\x67\x61\x72\x63\x72\x6D\x41\x63\x63\x6F\x75\x6E\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xb2e4[0];const EventEmitter=require(_0xb2e4[1]);const SugarcrmAccount=require(_0xb2e4[3])[_0xb2e4[2]];var SugarcrmAccountEvents= new EventEmitter();SugarcrmAccountEvents[_0xb2e4[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xb2e4[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xb2e4[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xb2e4[6]};for(var e in events){var event=events[e];SugarcrmAccount[_0xb2e4[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x13e3x8,_0x13e3x9,_0x13e3xa){SugarcrmAccountEvents[_0xb2e4[10]](event+ _0xb2e4[8]+ _0x13e3x8[_0xb2e4[9]],_0x13e3x8);SugarcrmAccountEvents[_0xb2e4[10]](event,_0x13e3x8);_0x13e3xa(null)}}module[_0xb2e4[11]]= SugarcrmAccountEvents \ No newline at end of file diff --git a/server/api/sugarcrm_account/sugarcrm_account.socket.js b/server/api/sugarcrm_account/sugarcrm_account.socket.js index 5a94608..151d330 100644 --- a/server/api/sugarcrm_account/sugarcrm_account.socket.js +++ b/server/api/sugarcrm_account/sugarcrm_account.socket.js @@ -1,32 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const SugarcrmAccountEvents = require('./sugarcrm_account.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('sugarcrm_account:' + event, socket); - - SugarcrmAccountEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - SugarcrmAccountEvents.removeListener(event, listener); - }; -} +var _0xcb92=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x73\x75\x67\x61\x72\x63\x72\x6D\x5F\x61\x63\x63\x6F\x75\x6E\x74\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x73\x75\x67\x61\x72\x63\x72\x6D\x5F\x61\x63\x63\x6F\x75\x6E\x74\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xcb92[0];const SugarcrmAccountEvents=require(_0xcb92[1]);var events=[_0xcb92[2],_0xcb92[3]];exports[_0xcb92[4]]= function(_0x6e81x3){for(var _0x6e81x4=0,_0x6e81x5=events[_0xcb92[5]];_0x6e81x4< _0x6e81x5;_0x6e81x4++){var _0x6e81x6=events[_0x6e81x4];var _0x6e81x7=createListener(_0xcb92[6]+ _0x6e81x6,_0x6e81x3);SugarcrmAccountEvents[_0xcb92[7]](_0x6e81x6,_0x6e81x7);_0x6e81x3[_0xcb92[7]](_0xcb92[8],removeListener(_0x6e81x6,_0x6e81x7))}};function createListener(_0x6e81x6,_0x6e81x3){return function(_0x6e81x9){_0x6e81x3[_0xcb92[9]](_0x6e81x6,_0x6e81x9)}}function removeListener(_0x6e81x6,_0x6e81x7){return function(){SugarcrmAccountEvents[_0xcb92[10]](_0x6e81x6,_0x6e81x7)}} \ No newline at end of file diff --git a/server/api/sugarcrm_configuration/index.js b/server/api/sugarcrm_configuration/index.js index a7bbe3c..a4e7458 100644 --- a/server/api/sugarcrm_configuration/index.js +++ b/server/api/sugarcrm_configuration/index.js @@ -1,17 +1 @@ -'use strict'; - -var express = require('express'); -var auth = require('../../auth/auth.service'); -var controller = require('./sugarcrm_configuration.controller'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.index); -router.get('/:id', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.show); -router.post('/', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.create); -router.put('/:id', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.update); -router.post('/:id/:type', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.addConfigurationField); -router.delete('/:id', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.destroy); - - -module.exports = router; +var _0x4f7b=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x73\x75\x67\x61\x72\x63\x72\x6D\x5F\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x2F\x3A\x69\x64\x2F\x3A\x74\x79\x70\x65","\x61\x64\x64\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x46\x69\x65\x6C\x64","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0x4f7b[0];var express=require(_0x4f7b[1]);var auth=require(_0x4f7b[2]);var controller=require(_0x4f7b[3]);var router=express.Router();router[_0x4f7b[9]](_0x4f7b[4],auth[_0x4f7b[5]](),auth[_0x4f7b[7]]([19],[_0x4f7b[6]]),controller[_0x4f7b[8]]);router[_0x4f7b[9]](_0x4f7b[10],auth[_0x4f7b[5]](),auth[_0x4f7b[7]]([19],[_0x4f7b[6]]),controller[_0x4f7b[11]]);router[_0x4f7b[13]](_0x4f7b[4],auth[_0x4f7b[5]](),auth[_0x4f7b[7]]([19],[_0x4f7b[6]]),controller[_0x4f7b[12]]);router[_0x4f7b[15]](_0x4f7b[10],auth[_0x4f7b[5]](),auth[_0x4f7b[7]]([19],[_0x4f7b[6]]),controller[_0x4f7b[14]]);router[_0x4f7b[13]](_0x4f7b[16],auth[_0x4f7b[5]](),auth[_0x4f7b[7]]([19],[_0x4f7b[6]]),controller[_0x4f7b[17]]);router[_0x4f7b[19]](_0x4f7b[10],auth[_0x4f7b[5]](),auth[_0x4f7b[7]]([19],[_0x4f7b[6]]),controller[_0x4f7b[18]]);module[_0x4f7b[20]]= router \ No newline at end of file diff --git a/server/api/sugarcrm_configuration/sugarcrm_configuration.controller.js b/server/api/sugarcrm_configuration/sugarcrm_configuration.controller.js index 5918283..cb530b9 100644 --- a/server/api/sugarcrm_configuration/sugarcrm_configuration.controller.js +++ b/server/api/sugarcrm_configuration/sugarcrm_configuration.controller.js @@ -1,145 +1 @@ -/** - * Using Rails-like standard naming convention for endpoints. - * GET /api/sugarcrm/configurations -> index - * POST /api/sugarcrm/configurations -> create - * GET /api/sugarcrm/configurations/:id -> show - * PUT /api/sugarcrm/configurations/:id -> update - * DELETE /api/sugarcrm/configurations/:id -> destroy - */ - -'use strict'; - - -var _ = require('lodash'); - -var SugarcrmConfiguration = require('../../models').SugarcrmConfiguration; -var SugarcrmField = require('../../models').SugarcrmField; - -function handleError(res, statusCode) { - statusCode = statusCode || 500; - return function(err) { - res.status(statusCode).send(err); - }; -} - -function responseWithResult(res, statusCode) { - statusCode = statusCode || 200; - return function(entity) { - if (entity) { - res.status(statusCode).json(entity); - } - }; -} - -function handleEntityNotFound(res) { - return function(entity) { - if (!entity) { - res.status(404).end(); - return null; - } - return entity; - }; -} - -function saveUpdates(updates) { - return function(entity) { - return entity.updateAttributes(updates) - .then(function(updated) { - return updated; - }); - }; -} - -function removeEntity(res) { - return function(entity) { - if (entity) { - return entity.destroy() - .then(function() { - res.status(204).end(); - }); - } - }; -} - -// Gets a list of SugarcrmConfigurations -exports.index = function(req, res) { - SugarcrmConfiguration.findAll({ - where: req.query - }) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Gets a single SugarcrmConfiguration from the DB -exports.show = function(req, res) { - SugarcrmConfiguration.find({ - where: { - id: req.params.id - }, - include: [{ - model: SugarcrmField, - as: 'Subject' - }, { - model: SugarcrmField, - as: 'Description' - }, { - model: SugarcrmField, - as: 'Field' - }] - }) - .then(handleEntityNotFound(res)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Creates a new SugarcrmConfiguration in the DB -exports.create = function(req, res) { - SugarcrmConfiguration.create(req.body) - .then(responseWithResult(res, 201)) - .catch(handleError(res)); -} - -// Updates an existing SugarcrmConfiguration in the DB -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - SugarcrmConfiguration.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(saveUpdates(req.body)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Deletes a SugarcrmConfiguration from the DB -exports.destroy = function(req, res) { - SugarcrmConfiguration.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(removeEntity(res)) - .catch(handleError(res)); -} - -exports.addConfigurationField = function(req, res, next) { - var sugarcrmConfiguration; - SugarcrmConfiguration - .findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(function(sugarcrm_configuration) { - sugarcrmConfiguration = sugarcrm_configuration; - return SugarcrmField.create(req.body) - }) - .then(function(sugarcrmField) { - switch (req.params.type) { - case 'subject': - return [sugarcrmConfiguration.addSubject(sugarcrmField), sugarcrmField]; - case 'description': - return [sugarcrmConfiguration.addDescription(sugarcrmField), sugarcrmField]; - case 'field': - return [sugarcrmConfiguration.addField(sugarcrmField), sugarcrmField]; - } - }) - .spread(function(data, sugarcrmField) { - return res.status(201).json(sugarcrmField); - }) - .catch(handleError(res)); -}; +var _0x19ed=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x53\x75\x67\x61\x72\x63\x72\x6D\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x53\x75\x67\x61\x72\x63\x72\x6D\x46\x69\x65\x6C\x64","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x6A\x73\x6F\x6E","\x65\x6E\x64","\x74\x68\x65\x6E","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x64\x65\x73\x74\x72\x6F\x79","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x71\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x68\x6F\x77","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x53\x75\x62\x6A\x65\x63\x74","\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E","\x46\x69\x65\x6C\x64","\x66\x69\x6E\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x66\x69\x6E\x64\x42\x79\x49\x64","\x61\x64\x64\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x46\x69\x65\x6C\x64","\x73\x70\x72\x65\x61\x64","\x61\x64\x64\x53\x75\x62\x6A\x65\x63\x74","\x73\x75\x62\x6A\x65\x63\x74","\x61\x64\x64\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E","\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E","\x61\x64\x64\x46\x69\x65\x6C\x64","\x66\x69\x65\x6C\x64","\x74\x79\x70\x65"];_0x19ed[0];var _=require(_0x19ed[1]);var SugarcrmConfiguration=require(_0x19ed[3])[_0x19ed[2]];var SugarcrmField=require(_0x19ed[3])[_0x19ed[4]];function handleError(_0xbbd6x5,_0xbbd6x6){_0xbbd6x6= _0xbbd6x6|| 500;return function(_0xbbd6x7){_0xbbd6x5[_0x19ed[6]](_0xbbd6x6)[_0x19ed[5]](_0xbbd6x7)}}function responseWithResult(_0xbbd6x5,_0xbbd6x6){_0xbbd6x6= _0xbbd6x6|| 200;return function(_0xbbd6x9){if(_0xbbd6x9){_0xbbd6x5[_0x19ed[6]](_0xbbd6x6)[_0x19ed[7]](_0xbbd6x9)}}}function handleEntityNotFound(_0xbbd6x5){return function(_0xbbd6x9){if(!_0xbbd6x9){_0xbbd6x5[_0x19ed[6]](404)[_0x19ed[8]]();return null};return _0xbbd6x9}}function saveUpdates(_0xbbd6xc){return function(_0xbbd6x9){return _0xbbd6x9[_0x19ed[10]](_0xbbd6xc)[_0x19ed[9]](function(_0xbbd6xd){return _0xbbd6xd})}}function removeEntity(_0xbbd6x5){return function(_0xbbd6x9){if(_0xbbd6x9){return _0xbbd6x9[_0x19ed[11]]()[_0x19ed[9]](function(){_0xbbd6x5[_0x19ed[6]](204)[_0x19ed[8]]()})}}}exports[_0x19ed[12]]= function(_0xbbd6xf,_0xbbd6x5){SugarcrmConfiguration[_0x19ed[15]]({where:_0xbbd6xf[_0x19ed[14]]})[_0x19ed[9]](responseWithResult(_0xbbd6x5))[_0x19ed[13]](handleError(_0xbbd6x5))};exports[_0x19ed[16]]= function(_0xbbd6xf,_0xbbd6x5){SugarcrmConfiguration[_0x19ed[22]]({where:{id:_0xbbd6xf[_0x19ed[18]][_0x19ed[17]]},include:[{model:SugarcrmField,as:_0x19ed[19]},{model:SugarcrmField,as:_0x19ed[20]},{model:SugarcrmField,as:_0x19ed[21]}]})[_0x19ed[9]](handleEntityNotFound(_0xbbd6x5))[_0x19ed[9]](responseWithResult(_0xbbd6x5))[_0x19ed[13]](handleError(_0xbbd6x5))};exports[_0x19ed[23]]= function(_0xbbd6xf,_0xbbd6x5){SugarcrmConfiguration[_0x19ed[23]](_0xbbd6xf[_0x19ed[24]])[_0x19ed[9]](responseWithResult(_0xbbd6x5,201))[_0x19ed[13]](handleError(_0xbbd6x5))};exports[_0x19ed[25]]= function(_0xbbd6xf,_0xbbd6x5){if(_0xbbd6xf[_0x19ed[24]][_0x19ed[17]]){delete _0xbbd6xf[_0x19ed[24]][_0x19ed[17]]};SugarcrmConfiguration[_0x19ed[26]](_0xbbd6xf[_0x19ed[18]][_0x19ed[17]])[_0x19ed[9]](handleEntityNotFound(_0xbbd6x5))[_0x19ed[9]](saveUpdates(_0xbbd6xf[_0x19ed[24]]))[_0x19ed[9]](responseWithResult(_0xbbd6x5))[_0x19ed[13]](handleError(_0xbbd6x5))};exports[_0x19ed[11]]= function(_0xbbd6xf,_0xbbd6x5){SugarcrmConfiguration[_0x19ed[26]](_0xbbd6xf[_0x19ed[18]][_0x19ed[17]])[_0x19ed[9]](handleEntityNotFound(_0xbbd6x5))[_0x19ed[9]](removeEntity(_0xbbd6x5))[_0x19ed[13]](handleError(_0xbbd6x5))};exports[_0x19ed[27]]= function(_0xbbd6xf,_0xbbd6x5,_0xbbd6x10){var _0xbbd6x11;SugarcrmConfiguration[_0x19ed[26]](_0xbbd6xf[_0x19ed[18]][_0x19ed[17]])[_0x19ed[9]](handleEntityNotFound(_0xbbd6x5))[_0x19ed[9]](function(_0xbbd6x14){_0xbbd6x11= _0xbbd6x14;return SugarcrmField[_0x19ed[23]](_0xbbd6xf[_0x19ed[24]])})[_0x19ed[9]](function(_0xbbd6x13){switch(_0xbbd6xf[_0x19ed[18]][_0x19ed[35]]){case _0x19ed[30]:return [_0xbbd6x11[_0x19ed[29]](_0xbbd6x13),_0xbbd6x13];case _0x19ed[32]:return [_0xbbd6x11[_0x19ed[31]](_0xbbd6x13),_0xbbd6x13];case _0x19ed[34]:return [_0xbbd6x11[_0x19ed[33]](_0xbbd6x13),_0xbbd6x13]}})[_0x19ed[28]](function(_0xbbd6x12,_0xbbd6x13){return _0xbbd6x5[_0x19ed[6]](201)[_0x19ed[7]](_0xbbd6x13)})[_0x19ed[13]](handleError(_0xbbd6x5))} \ No newline at end of file diff --git a/server/api/sugarcrm_configuration/sugarcrm_configuration.events.js b/server/api/sugarcrm_configuration/sugarcrm_configuration.events.js index f1764e0..d57f1aa 100644 --- a/server/api/sugarcrm_configuration/sugarcrm_configuration.events.js +++ b/server/api/sugarcrm_configuration/sugarcrm_configuration.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const SugarcrmConfiguration = require('../../models').SugarcrmConfiguration; - -var SugarcrmConfigurationEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -SugarcrmConfigurationEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - SugarcrmConfiguration.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - SugarcrmConfigurationEvents.emit(event + ':' + doc._id, doc); - SugarcrmConfigurationEvents.emit(event, doc); - done(null); - } -} - -module.exports = SugarcrmConfigurationEvents; +var _0x639e=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x53\x75\x67\x61\x72\x63\x72\x6D\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x639e[0];const EventEmitter=require(_0x639e[1]);const SugarcrmConfiguration=require(_0x639e[3])[_0x639e[2]];var SugarcrmConfigurationEvents= new EventEmitter();SugarcrmConfigurationEvents[_0x639e[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x639e[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x639e[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x639e[6]};for(var e in events){var event=events[e];SugarcrmConfiguration[_0x639e[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xfa1cx8,_0xfa1cx9,_0xfa1cxa){SugarcrmConfigurationEvents[_0x639e[10]](event+ _0x639e[8]+ _0xfa1cx8[_0x639e[9]],_0xfa1cx8);SugarcrmConfigurationEvents[_0x639e[10]](event,_0xfa1cx8);_0xfa1cxa(null)}}module[_0x639e[11]]= SugarcrmConfigurationEvents \ No newline at end of file diff --git a/server/api/sugarcrm_configuration/sugarcrm_configuration.socket.js b/server/api/sugarcrm_configuration/sugarcrm_configuration.socket.js index 3a1b051..ac5be74 100644 --- a/server/api/sugarcrm_configuration/sugarcrm_configuration.socket.js +++ b/server/api/sugarcrm_configuration/sugarcrm_configuration.socket.js @@ -1,32 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const SugarcrmConfigurationEvents = require('./sugarcrm_configuration.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('sugarcrm_configuration:' + event, socket); - - SugarcrmConfigurationEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - SugarcrmConfigurationEvents.removeListener(event, listener); - }; -} +var _0xaac6=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x73\x75\x67\x61\x72\x63\x72\x6D\x5F\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x73\x75\x67\x61\x72\x63\x72\x6D\x5F\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xaac6[0];const SugarcrmConfigurationEvents=require(_0xaac6[1]);var events=[_0xaac6[2],_0xaac6[3]];exports[_0xaac6[4]]= function(_0xe48ax3){for(var _0xe48ax4=0,_0xe48ax5=events[_0xaac6[5]];_0xe48ax4< _0xe48ax5;_0xe48ax4++){var _0xe48ax6=events[_0xe48ax4];var _0xe48ax7=createListener(_0xaac6[6]+ _0xe48ax6,_0xe48ax3);SugarcrmConfigurationEvents[_0xaac6[7]](_0xe48ax6,_0xe48ax7);_0xe48ax3[_0xaac6[7]](_0xaac6[8],removeListener(_0xe48ax6,_0xe48ax7))}};function createListener(_0xe48ax6,_0xe48ax3){return function(_0xe48ax9){_0xe48ax3[_0xaac6[9]](_0xe48ax6,_0xe48ax9)}}function removeListener(_0xe48ax6,_0xe48ax7){return function(){SugarcrmConfigurationEvents[_0xaac6[10]](_0xe48ax6,_0xe48ax7)}} \ No newline at end of file diff --git a/server/api/sugarcrm_field/index.js b/server/api/sugarcrm_field/index.js index 30e2ad2..545c27e 100644 --- a/server/api/sugarcrm_field/index.js +++ b/server/api/sugarcrm_field/index.js @@ -1,17 +1 @@ -'use strict'; - -var express = require('express'); -var auth = require('../../auth/auth.service'); -var controller = require('./sugarcrm_field.controller'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), controller.index); - -router.get('/:id', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.show); -router.post('/', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.create); -router.put('/:id', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.update); -router.delete('/:id', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.destroy); - - -module.exports = router; +var _0xb256=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x73\x75\x67\x61\x72\x63\x72\x6D\x5F\x66\x69\x65\x6C\x64\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0xb256[0];var express=require(_0xb256[1]);var auth=require(_0xb256[2]);var controller=require(_0xb256[3]);var router=express.Router();router[_0xb256[7]](_0xb256[4],auth[_0xb256[5]](),controller[_0xb256[6]]);router[_0xb256[7]](_0xb256[8],auth[_0xb256[5]](),auth[_0xb256[10]]([19],[_0xb256[9]]),controller[_0xb256[11]]);router[_0xb256[13]](_0xb256[4],auth[_0xb256[5]](),auth[_0xb256[10]]([19],[_0xb256[9]]),controller[_0xb256[12]]);router[_0xb256[15]](_0xb256[8],auth[_0xb256[5]](),auth[_0xb256[10]]([19],[_0xb256[9]]),controller[_0xb256[14]]);router[_0xb256[17]](_0xb256[8],auth[_0xb256[5]](),auth[_0xb256[10]]([19],[_0xb256[9]]),controller[_0xb256[16]]);module[_0xb256[18]]= router \ No newline at end of file diff --git a/server/api/sugarcrm_field/sugarcrm_field.controller.js b/server/api/sugarcrm_field/sugarcrm_field.controller.js index eb6fe3d..370b336 100644 --- a/server/api/sugarcrm_field/sugarcrm_field.controller.js +++ b/server/api/sugarcrm_field/sugarcrm_field.controller.js @@ -1,104 +1 @@ -/** - * Using Rails-like standard naming convention for endpoints. - * GET /api/sugarcrm/fields -> index - * POST /api/sugarcrm/fields -> create - * GET /api/sugarcrm/fields/:id -> show - * PUT /api/sugarcrm/fields/:id -> update - * DELETE /api/sugarcrm/fields/:id -> destroy - */ - -'use strict'; - - -var _ = require('lodash'); - -var SugarcrmField = require('../../models').SugarcrmField; - - -function handleError(res, statusCode) { - statusCode = statusCode || 500; - return function(err) { - res.status(statusCode).send(err); - }; -} - -function responseWithResult(res, statusCode) { - statusCode = statusCode || 200; - return function(entity) { - if (entity) { - res.status(statusCode).json(entity); - } - }; -} - -function handleEntityNotFound(res) { - return function(entity) { - if (!entity) { - res.status(404).end(); - return null; - } - return entity; - }; -} - -function saveUpdates(updates) { - return function(entity) { - return entity.updateAttributes(updates) - .then(function(updated) { - return updated; - }); - }; -} - -function removeEntity(res) { - return function(entity) { - if (entity) { - return entity.destroy() - .then(function() { - res.status(204).end(); - }); - } - }; -} - -// Gets a list of SugarcrmFields -exports.index = function(req, res) { - SugarcrmField.findAll() - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Gets a single SugarcrmField from the DB -exports.show = function(req, res) { - SugarcrmField.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Creates a new SugarcrmField in the DB -exports.create = function(req, res) { - SugarcrmField.create(req.body) - .then(responseWithResult(res, 201)) - .catch(handleError(res)); -} - -// Updates an existing SugarcrmField in the DB -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - SugarcrmField.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(saveUpdates(req.body)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Deletes a SugarcrmField from the DB -exports.destroy = function(req, res) { - SugarcrmField.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(removeEntity(res)) - .catch(handleError(res)); -} +var _0x325b=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x53\x75\x67\x61\x72\x63\x72\x6D\x46\x69\x65\x6C\x64","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x6A\x73\x6F\x6E","\x65\x6E\x64","\x74\x68\x65\x6E","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x64\x65\x73\x74\x72\x6F\x79","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x68\x6F\x77","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65"];_0x325b[0];var _=require(_0x325b[1]);var SugarcrmField=require(_0x325b[3])[_0x325b[2]];function handleError(_0x4012x4,_0x4012x5){_0x4012x5= _0x4012x5|| 500;return function(_0x4012x6){_0x4012x4[_0x325b[5]](_0x4012x5)[_0x325b[4]](_0x4012x6)}}function responseWithResult(_0x4012x4,_0x4012x5){_0x4012x5= _0x4012x5|| 200;return function(_0x4012x8){if(_0x4012x8){_0x4012x4[_0x325b[5]](_0x4012x5)[_0x325b[6]](_0x4012x8)}}}function handleEntityNotFound(_0x4012x4){return function(_0x4012x8){if(!_0x4012x8){_0x4012x4[_0x325b[5]](404)[_0x325b[7]]();return null};return _0x4012x8}}function saveUpdates(_0x4012xb){return function(_0x4012x8){return _0x4012x8[_0x325b[9]](_0x4012xb)[_0x325b[8]](function(_0x4012xc){return _0x4012xc})}}function removeEntity(_0x4012x4){return function(_0x4012x8){if(_0x4012x8){return _0x4012x8[_0x325b[10]]()[_0x325b[8]](function(){_0x4012x4[_0x325b[5]](204)[_0x325b[7]]()})}}}exports[_0x325b[11]]= function(_0x4012xe,_0x4012x4){SugarcrmField[_0x325b[13]]()[_0x325b[8]](responseWithResult(_0x4012x4))[_0x325b[12]](handleError(_0x4012x4))};exports[_0x325b[14]]= function(_0x4012xe,_0x4012x4){SugarcrmField[_0x325b[17]](_0x4012xe[_0x325b[16]][_0x325b[15]])[_0x325b[8]](handleEntityNotFound(_0x4012x4))[_0x325b[8]](responseWithResult(_0x4012x4))[_0x325b[12]](handleError(_0x4012x4))};exports[_0x325b[18]]= function(_0x4012xe,_0x4012x4){SugarcrmField[_0x325b[18]](_0x4012xe[_0x325b[19]])[_0x325b[8]](responseWithResult(_0x4012x4,201))[_0x325b[12]](handleError(_0x4012x4))};exports[_0x325b[20]]= function(_0x4012xe,_0x4012x4){if(_0x4012xe[_0x325b[19]][_0x325b[15]]){delete _0x4012xe[_0x325b[19]][_0x325b[15]]};SugarcrmField[_0x325b[17]](_0x4012xe[_0x325b[16]][_0x325b[15]])[_0x325b[8]](handleEntityNotFound(_0x4012x4))[_0x325b[8]](saveUpdates(_0x4012xe[_0x325b[19]]))[_0x325b[8]](responseWithResult(_0x4012x4))[_0x325b[12]](handleError(_0x4012x4))};exports[_0x325b[10]]= function(_0x4012xe,_0x4012x4){SugarcrmField[_0x325b[17]](_0x4012xe[_0x325b[16]][_0x325b[15]])[_0x325b[8]](handleEntityNotFound(_0x4012x4))[_0x325b[8]](removeEntity(_0x4012x4))[_0x325b[12]](handleError(_0x4012x4))} \ No newline at end of file diff --git a/server/api/sugarcrm_field/sugarcrm_field.events.js b/server/api/sugarcrm_field/sugarcrm_field.events.js index 0845bee..7e820a0 100644 --- a/server/api/sugarcrm_field/sugarcrm_field.events.js +++ b/server/api/sugarcrm_field/sugarcrm_field.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const SugarcrmField = require('../../models').SugarcrmField; - -var SugarcrmFieldEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -SugarcrmFieldEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - SugarcrmField.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - SugarcrmFieldEvents.emit(event + ':' + doc._id, doc); - SugarcrmFieldEvents.emit(event, doc); - done(null); - } -} - -module.exports = SugarcrmFieldEvents; +var _0xddce=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x53\x75\x67\x61\x72\x63\x72\x6D\x46\x69\x65\x6C\x64","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xddce[0];const EventEmitter=require(_0xddce[1]);const SugarcrmField=require(_0xddce[3])[_0xddce[2]];var SugarcrmFieldEvents= new EventEmitter();SugarcrmFieldEvents[_0xddce[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xddce[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xddce[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xddce[6]};for(var e in events){var event=events[e];SugarcrmField[_0xddce[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x93ccx8,_0x93ccx9,_0x93ccxa){SugarcrmFieldEvents[_0xddce[10]](event+ _0xddce[8]+ _0x93ccx8[_0xddce[9]],_0x93ccx8);SugarcrmFieldEvents[_0xddce[10]](event,_0x93ccx8);_0x93ccxa(null)}}module[_0xddce[11]]= SugarcrmFieldEvents \ No newline at end of file diff --git a/server/api/sugarcrm_field/sugarcrm_field.socket.js b/server/api/sugarcrm_field/sugarcrm_field.socket.js index 8830ac2..73d7879 100644 --- a/server/api/sugarcrm_field/sugarcrm_field.socket.js +++ b/server/api/sugarcrm_field/sugarcrm_field.socket.js @@ -1,32 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const SugarcrmFieldEvents = require('./sugarcrm_field.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('sugarcrm_field:' + event, socket); - - SugarcrmFieldEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - SugarcrmFieldEvents.removeListener(event, listener); - }; -} +var _0xea86=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x73\x75\x67\x61\x72\x63\x72\x6D\x5F\x66\x69\x65\x6C\x64\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x73\x75\x67\x61\x72\x63\x72\x6D\x5F\x66\x69\x65\x6C\x64\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xea86[0];const SugarcrmFieldEvents=require(_0xea86[1]);var events=[_0xea86[2],_0xea86[3]];exports[_0xea86[4]]= function(_0x5d65x3){for(var _0x5d65x4=0,_0x5d65x5=events[_0xea86[5]];_0x5d65x4< _0x5d65x5;_0x5d65x4++){var _0x5d65x6=events[_0x5d65x4];var _0x5d65x7=createListener(_0xea86[6]+ _0x5d65x6,_0x5d65x3);SugarcrmFieldEvents[_0xea86[7]](_0x5d65x6,_0x5d65x7);_0x5d65x3[_0xea86[7]](_0xea86[8],removeListener(_0x5d65x6,_0x5d65x7))}};function createListener(_0x5d65x6,_0x5d65x3){return function(_0x5d65x9){_0x5d65x3[_0xea86[9]](_0x5d65x6,_0x5d65x9)}}function removeListener(_0x5d65x6,_0x5d65x7){return function(){SugarcrmFieldEvents[_0xea86[10]](_0x5d65x6,_0x5d65x7)}} \ No newline at end of file diff --git a/server/api/tag/index.js b/server/api/tag/index.js index 1751dda..a88c144 100644 --- a/server/api/tag/index.js +++ b/server/api/tag/index.js @@ -1,171 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./tag.controller'); -var auth = require('../../auth/auth.service'); - -var router = express.Router(); -/** - * @api {get} /api/tags/ Get Tags' list. - * - * @apiParam (Query) {Number} [offset] Pagination offset. - * @apiParam (Query) {Number} [limit] Pagination limit. - * - * @apiVersion 0.0.140 - * @apiName GetTags - * @apiGroup Tags - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccess {Number} count Number of tags. - * @apiSuccess {Object[]} rows Tags' list. - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 200 OK - * { - * "count": 2, - * "rows": [{ - * "id": 1 - * "name": "tag1" - * "description": "my tag description" - * ... - * },{ - * "id": 2 - * "name": "newtag" - * "description": null - * ... - * },...] - * } - */ -router.get('/', auth.isAuthenticated(), auth.hasModule([5, 9, 13], ['admin', 'agent']), controller.index); -/** - * @api {get} /api/tags/:id Get Tag's details. - * @apiParam {Number} id Tag's unique ID. - * @apiVersion 0.0.140 - * @apiName GetTag - * @apiGroup Tags - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccess {Object} Tag's details. - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 200 OK - * { - * "id": 1 - * "name": "tag1" - * "description": "my tag description" - * ... - * } - */ -router.get('/:id', auth.isAuthenticated(), auth.hasModule([13], ['admin']), controller.show); -router.get('/chat/:tag', auth.isAuthenticated(), auth.hasModule([13], ['admin']), controller.getChatByTag); -router.get('/mail/:tag', auth.isAuthenticated(), auth.hasModule([13], ['admin']), controller.getMailByTag); -router.get('/fax/:tag', auth.isAuthenticated(), auth.hasModule([13], ['admin']), controller.getFaxByTag); -router.get('/sms/:tag', auth.isAuthenticated(), auth.hasModule([13], ['admin']), controller.getSmsByTag); -router.get('/contacts/:tag', auth.isAuthenticated(), auth.hasModule([13], ['admin']), controller.getContactsByTag); -/** - * @api {post} /api/tags/ Create a new tag. - * @apiParam (body) {String} name Tag's name. - * @apiParam (body) {String} [description] Tag's description. - * - * @apiVersion 0.0.140 - * @apiName CreateTag - * @apiGroup Tags - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 201 Created - * { - * "id": 3 - * "name": "Tag3" - * "description": "my tag" - * ... - * } - */ -router.post('/', auth.isAuthenticated(), auth.hasModule([5, 13], ['admin', 'agent']), controller.create); -/** - * @api {put} /api/tags/:id Update tag's details. - * @apiParam {Number} id Tag's unique ID. - * @apiParam (body) {String} name Tag's name. - * @apiParam (body) {String} [description] Tag's description. - * - * @apiVersion 0.0.140 - * @apiName UpdateTag - * @apiGroup Tags - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 200 OK - * { - * "id": 3 - * "name": "Tag 3" - * "description": "My new description" - * ... - * } - */ -router.put('/:id', auth.isAuthenticated(), auth.hasModule([13], ['admin']), controller.update); -/** - * @api {delete} /api/tags/ Bulk Delete tags. - * - * @apiParam (Query) {Number[]} ids Tags' unique ID array. - * - * @apiVersion 0.0.140 - * @apiName BulkDeleteTags - * @apiGroup Tags - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 204 No Content - */ -router.delete('/', auth.isAuthenticated(), auth.hasModule([13], ['admin']), controller.bulkDestroy); -/** - * @api {delete} /api/tags/:id Delete a tag. - * - * @apiParam {Number} id Tag's unique ID. - * - * @apiVersion 0.0.140 - * @apiName DeleteTag - * @apiGroup Tags - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 204 No Content - */ -router.delete('/:id', auth.isAuthenticated(), auth.hasModule([13], ['admin']), controller.destroy); - -module.exports = router; +var _0xefc5=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x74\x61\x67\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x2F\x63\x68\x61\x74\x2F\x3A\x74\x61\x67","\x67\x65\x74\x43\x68\x61\x74\x42\x79\x54\x61\x67","\x2F\x6D\x61\x69\x6C\x2F\x3A\x74\x61\x67","\x67\x65\x74\x4D\x61\x69\x6C\x42\x79\x54\x61\x67","\x2F\x66\x61\x78\x2F\x3A\x74\x61\x67","\x67\x65\x74\x46\x61\x78\x42\x79\x54\x61\x67","\x2F\x73\x6D\x73\x2F\x3A\x74\x61\x67","\x67\x65\x74\x53\x6D\x73\x42\x79\x54\x61\x67","\x2F\x63\x6F\x6E\x74\x61\x63\x74\x73\x2F\x3A\x74\x61\x67","\x67\x65\x74\x43\x6F\x6E\x74\x61\x63\x74\x73\x42\x79\x54\x61\x67","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0xefc5[0];var express=require(_0xefc5[1]);var controller=require(_0xefc5[2]);var auth=require(_0xefc5[3]);var router=express.Router();router[_0xefc5[10]](_0xefc5[4],auth[_0xefc5[5]](),auth[_0xefc5[8]]([5,9,13],[_0xefc5[6],_0xefc5[7]]),controller[_0xefc5[9]]);router[_0xefc5[10]](_0xefc5[11],auth[_0xefc5[5]](),auth[_0xefc5[8]]([13],[_0xefc5[6]]),controller[_0xefc5[12]]);router[_0xefc5[10]](_0xefc5[13],auth[_0xefc5[5]](),auth[_0xefc5[8]]([13],[_0xefc5[6]]),controller[_0xefc5[14]]);router[_0xefc5[10]](_0xefc5[15],auth[_0xefc5[5]](),auth[_0xefc5[8]]([13],[_0xefc5[6]]),controller[_0xefc5[16]]);router[_0xefc5[10]](_0xefc5[17],auth[_0xefc5[5]](),auth[_0xefc5[8]]([13],[_0xefc5[6]]),controller[_0xefc5[18]]);router[_0xefc5[10]](_0xefc5[19],auth[_0xefc5[5]](),auth[_0xefc5[8]]([13],[_0xefc5[6]]),controller[_0xefc5[20]]);router[_0xefc5[10]](_0xefc5[21],auth[_0xefc5[5]](),auth[_0xefc5[8]]([13],[_0xefc5[6]]),controller[_0xefc5[22]]);router[_0xefc5[24]](_0xefc5[4],auth[_0xefc5[5]](),auth[_0xefc5[8]]([5,13],[_0xefc5[6],_0xefc5[7]]),controller[_0xefc5[23]]);router[_0xefc5[26]](_0xefc5[11],auth[_0xefc5[5]](),auth[_0xefc5[8]]([13],[_0xefc5[6]]),controller[_0xefc5[25]]);router[_0xefc5[28]](_0xefc5[4],auth[_0xefc5[5]](),auth[_0xefc5[8]]([13],[_0xefc5[6]]),controller[_0xefc5[27]]);router[_0xefc5[28]](_0xefc5[11],auth[_0xefc5[5]](),auth[_0xefc5[8]]([13],[_0xefc5[6]]),controller[_0xefc5[29]]);module[_0xefc5[30]]= router \ No newline at end of file diff --git a/server/api/tag/tag.controller.js b/server/api/tag/tag.controller.js index 8caf0e0..37660e1 100644 --- a/server/api/tag/tag.controller.js +++ b/server/api/tag/tag.controller.js @@ -1,209 +1 @@ -'use strict'; - -var _ = require('lodash'); -var Tag = require('../../models').Tag; -var ChatRoom = require('../../models').ChatRoom; -var ChatWebsite = require('../../models').ChatWebsite; -var ChatVisitor = require('../../models').ChatVisitor; -var MailRoom = require('../../models').MailRoom; -var FaxRoom = require('../../models').FaxRoom; -var SmsRoom = require('../../models').SmsRoom; -var Contact = require('../../models').Contact; -var Util = require('../../config/util'); - -// Get list of tags -exports.index = function(req, res, next) { - return Tag - .findAndCountAll(Util.getQuery(req.query)) - .then(function(result) { - res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get a single tag -exports.show = function(req, res) { - return Tag - .findById(req.params.id) - .then(function(tag) { - if (!tag) { - return res.sendStatus(404); - } - return res.send(tag); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - - -exports.getChatByTag = function(req, res) { - return ChatRoom - .findAndCountAll(_.merge(Util.getQuery(req.query, { - tags: { - $like: '%' + req.params.tag + ';%' - } - }), { - include: [ChatWebsite, ChatVisitor] - })) - .then(function(result) { - res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.getMailByTag = function(req, res) { - return MailRoom - .scope('default') - .findAndCountAll(Util.getQuery(req.query, { - tags: { - $like: '%' + req.params.tag + ';%' - } - })) - .then(function(result) { - res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.getFaxByTag = function(req, res) { - return FaxRoom - .scope('default') - .findAndCountAll(Util.getQuery(req.query, { - tags: { - $like: '%' + req.params.tag + ';%' - } - })) - .then(function(result) { - res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.getSmsByTag = function(req, res) { - return SmsRoom - .scope('default') - .findAndCountAll(Util.getQuery(req.query, { - tags: { - $like: '%' + req.params.tag + ';%' - } - })) - .then(function(result) { - res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.getContactsByTag = function(req, res) { - return Contact - .scope('list', 'company', { - method: ['company_list_filter', req.query] - }) - .findAndCountAll(Util.getQuery(req.query, { - tags: { - $like: '%' + req.params.tag + ';%' - } - })) - .then(function(result) { - res.status(200).send(result); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - - -// Creates a new tag in the DB. -exports.create = function(req, res) { - return Tag - .create(req.body) - .then(function(tag) { - return res.status(201).send(tag); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Updates an existing tag in the DB. -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - - return Tag - .findById(req.params.id) - .then(function(tag) { - if (!tag) { - return res.sendStatus(404); - } - var updated = _.merge(tag, req.body); - return updated - .save(); - }) - .then(function(tag) { - return res.status(200).send(tag); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes a tag from the DB. -exports.destroy = function(req, res) { - return Tag - .scope('configuration') - .findById(req.params.id) - .then(function(tag) { - if (!tag) { - return res.sendStatus(404); - } - if (tagHasAssociation(tag)) { - var err = new Error(); - err.message = 'Tag is associated with an integration\'s configuration'; - throw err; - } - return tag.destroy(); - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.bulkDestroy = function(req, res) { - return Tag - .destroy({ - where: { - id: req.query.ids - }, - individualHooks: true - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} - -function tagHasAssociation(tag) { - return ((tag.ZendeskConfigurations && tag.ZendeskConfigurations.length > 0)); -} +var _0x11e6=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x54\x61\x67","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x43\x68\x61\x74\x52\x6F\x6F\x6D","\x43\x68\x61\x74\x57\x65\x62\x73\x69\x74\x65","\x43\x68\x61\x74\x56\x69\x73\x69\x74\x6F\x72","\x4D\x61\x69\x6C\x52\x6F\x6F\x6D","\x46\x61\x78\x52\x6F\x6F\x6D","\x53\x6D\x73\x52\x6F\x6F\x6D","\x43\x6F\x6E\x74\x61\x63\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x67\x65\x74\x43\x68\x61\x74\x42\x79\x54\x61\x67","\x25","\x74\x61\x67","\x3B\x25","\x6D\x65\x72\x67\x65","\x67\x65\x74\x4D\x61\x69\x6C\x42\x79\x54\x61\x67","\x64\x65\x66\x61\x75\x6C\x74","\x73\x63\x6F\x70\x65","\x67\x65\x74\x46\x61\x78\x42\x79\x54\x61\x67","\x67\x65\x74\x53\x6D\x73\x42\x79\x54\x61\x67","\x67\x65\x74\x43\x6F\x6E\x74\x61\x63\x74\x73\x42\x79\x54\x61\x67","\x6C\x6F\x67","\x6C\x69\x73\x74","\x63\x6F\x6D\x70\x61\x6E\x79","\x63\x6F\x6D\x70\x61\x6E\x79\x5F\x6C\x69\x73\x74\x5F\x66\x69\x6C\x74\x65\x72","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x73\x61\x76\x65","\x64\x65\x73\x74\x72\x6F\x79","\x6D\x65\x73\x73\x61\x67\x65","\x54\x61\x67\x20\x69\x73\x20\x61\x73\x73\x6F\x63\x69\x61\x74\x65\x64\x20\x77\x69\x74\x68\x20\x61\x6E\x20\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x27\x73\x20\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E","\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73","\x5A\x65\x6E\x64\x65\x73\x6B\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x73","\x6C\x65\x6E\x67\x74\x68"];_0x11e6[0];var _=require(_0x11e6[1]);var Tag=require(_0x11e6[3])[_0x11e6[2]];var ChatRoom=require(_0x11e6[3])[_0x11e6[4]];var ChatWebsite=require(_0x11e6[3])[_0x11e6[5]];var ChatVisitor=require(_0x11e6[3])[_0x11e6[6]];var MailRoom=require(_0x11e6[3])[_0x11e6[7]];var FaxRoom=require(_0x11e6[3])[_0x11e6[8]];var SmsRoom=require(_0x11e6[3])[_0x11e6[9]];var Contact=require(_0x11e6[3])[_0x11e6[10]];var Util=require(_0x11e6[11]);exports[_0x11e6[12]]= function(_0x378exb,_0x378exc,_0x378exd){return Tag[_0x11e6[19]](Util[_0x11e6[18]](_0x378exb[_0x11e6[17]]))[_0x11e6[16]](function(_0x378exf){_0x378exc[_0x11e6[15]](200)[_0x11e6[14]](_0x378exf)})[_0x11e6[13]](function(_0x378exe){return handleError(_0x378exc,_0x378exe)})};exports[_0x11e6[20]]= function(_0x378exb,_0x378exc){return Tag[_0x11e6[24]](_0x378exb[_0x11e6[23]][_0x11e6[22]])[_0x11e6[16]](function(_0x378ex10){if(!_0x378ex10){return _0x378exc[_0x11e6[21]](404)};return _0x378exc[_0x11e6[14]](_0x378ex10)})[_0x11e6[13]](function(_0x378exe){return handleError(_0x378exc,_0x378exe)})};exports[_0x11e6[25]]= function(_0x378exb,_0x378exc){return ChatRoom[_0x11e6[19]](_[_0x11e6[29]](Util[_0x11e6[18]](_0x378exb[_0x11e6[17]],{tags:{$like:_0x11e6[26]+ _0x378exb[_0x11e6[23]][_0x11e6[27]]+ _0x11e6[28]}}),{include:[ChatWebsite,ChatVisitor]}))[_0x11e6[16]](function(_0x378exf){_0x378exc[_0x11e6[15]](200)[_0x11e6[14]](_0x378exf)})[_0x11e6[13]](function(_0x378exe){return handleError(_0x378exc,_0x378exe)})};exports[_0x11e6[30]]= function(_0x378exb,_0x378exc){return MailRoom[_0x11e6[32]](_0x11e6[31])[_0x11e6[19]](Util[_0x11e6[18]](_0x378exb[_0x11e6[17]],{tags:{$like:_0x11e6[26]+ _0x378exb[_0x11e6[23]][_0x11e6[27]]+ _0x11e6[28]}}))[_0x11e6[16]](function(_0x378exf){_0x378exc[_0x11e6[15]](200)[_0x11e6[14]](_0x378exf)})[_0x11e6[13]](function(_0x378exe){return handleError(_0x378exc,_0x378exe)})};exports[_0x11e6[33]]= function(_0x378exb,_0x378exc){return FaxRoom[_0x11e6[32]](_0x11e6[31])[_0x11e6[19]](Util[_0x11e6[18]](_0x378exb[_0x11e6[17]],{tags:{$like:_0x11e6[26]+ _0x378exb[_0x11e6[23]][_0x11e6[27]]+ _0x11e6[28]}}))[_0x11e6[16]](function(_0x378exf){_0x378exc[_0x11e6[15]](200)[_0x11e6[14]](_0x378exf)})[_0x11e6[13]](function(_0x378exe){return handleError(_0x378exc,_0x378exe)})};exports[_0x11e6[34]]= function(_0x378exb,_0x378exc){return SmsRoom[_0x11e6[32]](_0x11e6[31])[_0x11e6[19]](Util[_0x11e6[18]](_0x378exb[_0x11e6[17]],{tags:{$like:_0x11e6[26]+ _0x378exb[_0x11e6[23]][_0x11e6[27]]+ _0x11e6[28]}}))[_0x11e6[16]](function(_0x378exf){_0x378exc[_0x11e6[15]](200)[_0x11e6[14]](_0x378exf)})[_0x11e6[13]](function(_0x378exe){return handleError(_0x378exc,_0x378exe)})};exports[_0x11e6[35]]= function(_0x378exb,_0x378exc){return Contact[_0x11e6[32]](_0x11e6[37],_0x11e6[38],{method:[_0x11e6[39],_0x378exb[_0x11e6[17]]]})[_0x11e6[19]](Util[_0x11e6[18]](_0x378exb[_0x11e6[17]],{tags:{$like:_0x11e6[26]+ _0x378exb[_0x11e6[23]][_0x11e6[27]]+ _0x11e6[28]}}))[_0x11e6[16]](function(_0x378exf){_0x378exc[_0x11e6[15]](200)[_0x11e6[14]](_0x378exf)})[_0x11e6[13]](function(_0x378exe){console[_0x11e6[36]](_0x378exe);return handleError(_0x378exc,_0x378exe)})};exports[_0x11e6[40]]= function(_0x378exb,_0x378exc){return Tag[_0x11e6[40]](_0x378exb[_0x11e6[41]])[_0x11e6[16]](function(_0x378ex10){return _0x378exc[_0x11e6[15]](201)[_0x11e6[14]](_0x378ex10)})[_0x11e6[13]](function(_0x378exe){return handleError(_0x378exc,_0x378exe)})};exports[_0x11e6[42]]= function(_0x378exb,_0x378exc){if(_0x378exb[_0x11e6[41]][_0x11e6[22]]){delete _0x378exb[_0x11e6[41]][_0x11e6[22]]};return Tag[_0x11e6[24]](_0x378exb[_0x11e6[23]][_0x11e6[22]])[_0x11e6[16]](function(_0x378ex10){if(!_0x378ex10){return _0x378exc[_0x11e6[21]](404)};var _0x378ex11=_[_0x11e6[29]](_0x378ex10,_0x378exb[_0x11e6[41]]);return _0x378ex11[_0x11e6[43]]()})[_0x11e6[16]](function(_0x378ex10){return _0x378exc[_0x11e6[15]](200)[_0x11e6[14]](_0x378ex10)})[_0x11e6[13]](function(_0x378exe){return handleError(_0x378exc,_0x378exe)})};exports[_0x11e6[44]]= function(_0x378exb,_0x378exc){return Tag[_0x11e6[32]](_0x11e6[47])[_0x11e6[24]](_0x378exb[_0x11e6[23]][_0x11e6[22]])[_0x11e6[16]](function(_0x378ex10){if(!_0x378ex10){return _0x378exc[_0x11e6[21]](404)};if(tagHasAssociation(_0x378ex10)){var _0x378exe= new Error();_0x378exe[_0x11e6[45]]= _0x11e6[46];throw _0x378exe};return _0x378ex10[_0x11e6[44]]()})[_0x11e6[16]](function(){return _0x378exc[_0x11e6[21]](204)})[_0x11e6[13]](function(_0x378exe){return handleError(_0x378exc,_0x378exe)})};exports[_0x11e6[48]]= function(_0x378exb,_0x378exc){return Tag[_0x11e6[44]]({where:{id:_0x378exb[_0x11e6[17]][_0x11e6[49]]},individualHooks:true})[_0x11e6[16]](function(){return _0x378exc[_0x11e6[21]](204)})[_0x11e6[13]](function(_0x378exe){return handleError(_0x378exc,_0x378exe)})};function handleError(_0x378exc,_0x378exe){return _0x378exc[_0x11e6[15]](500)[_0x11e6[14]](_0x378exe)}function tagHasAssociation(_0x378ex10){return ((_0x378ex10[_0x11e6[50]]&& _0x378ex10[_0x11e6[50]][_0x11e6[51]]> 0))} \ No newline at end of file diff --git a/server/api/tag/tag.events.js b/server/api/tag/tag.events.js index 61d6e17..15fdb5e 100644 --- a/server/api/tag/tag.events.js +++ b/server/api/tag/tag.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const Tag = require('../../models').Tag; - -var TagEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -TagEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - Tag.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - TagEvents.emit(event + ':' + doc._id, doc); - TagEvents.emit(event, doc); - done(null); - } -} - -module.exports = TagEvents; +var _0x9474=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x54\x61\x67","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x9474[0];const EventEmitter=require(_0x9474[1]);const Tag=require(_0x9474[3])[_0x9474[2]];var TagEvents= new EventEmitter();TagEvents[_0x9474[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x9474[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x9474[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x9474[6]};for(var e in events){var event=events[e];Tag[_0x9474[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x3813x8,_0x3813x9,_0x3813xa){TagEvents[_0x9474[10]](event+ _0x9474[8]+ _0x3813x8[_0x9474[9]],_0x3813x8);TagEvents[_0x9474[10]](event,_0x3813x8);_0x3813xa(null)}}module[_0x9474[11]]= TagEvents \ No newline at end of file diff --git a/server/api/tag/tag.socket.js b/server/api/tag/tag.socket.js index 6fccbd9..8f0fe62 100644 --- a/server/api/tag/tag.socket.js +++ b/server/api/tag/tag.socket.js @@ -1,32 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const TagEvents = require('./tag.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('tag:' + event, socket); - - TagEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - TagEvents.removeListener(event, listener); - }; -} +var _0x89eb=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x74\x61\x67\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x74\x61\x67\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x89eb[0];const TagEvents=require(_0x89eb[1]);var events=[_0x89eb[2],_0x89eb[3]];exports[_0x89eb[4]]= function(_0xb8bax3){for(var _0xb8bax4=0,_0xb8bax5=events[_0x89eb[5]];_0xb8bax4< _0xb8bax5;_0xb8bax4++){var _0xb8bax6=events[_0xb8bax4];var _0xb8bax7=createListener(_0x89eb[6]+ _0xb8bax6,_0xb8bax3);TagEvents[_0x89eb[7]](_0xb8bax6,_0xb8bax7);_0xb8bax3[_0x89eb[7]](_0x89eb[8],removeListener(_0xb8bax6,_0xb8bax7))}};function createListener(_0xb8bax6,_0xb8bax3){return function(_0xb8bax9){_0xb8bax3[_0x89eb[9]](_0xb8bax6,_0xb8bax9)}}function removeListener(_0xb8bax6,_0xb8bax7){return function(){TagEvents[_0x89eb[10]](_0xb8bax6,_0xb8bax7)}} \ No newline at end of file diff --git a/server/api/team/index.js b/server/api/team/index.js index cfc9a7a..d654366 100644 --- a/server/api/team/index.js +++ b/server/api/team/index.js @@ -1,247 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./team.controller'); -var auth = require('../../auth/auth.service'); - -var router = express.Router(); - -/** - * @api {get} /api/teams/ Get Teams' list. - * - * @apiParam (Query) {Number} [offset] Pagination offset. - * @apiParam (Query) {Number} [limit] Pagination limit. - * - * @apiVersion 0.0.140 - * @apiName GetTeams - * @apiGroup Teams - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccess {Number} count Number of teams. - * @apiSuccess {Object[]} rows Teams' list. - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 200 OK - * { - * "count": 2, - * "rows": [{ - * "id": 1 - * "name": "T1" - * "description": "Default Team", - * ... - * },{ - * "id": 2 - * "name": "T2" - * "description": null - * ... - * },...] - * } - */ -router.get('/', auth.isAuthenticated(), auth.hasRole('admin'), controller.index); -router.get('/associations', auth.isAuthenticated(), auth.hasModule([5], ['admin']), controller.associationsIndex); -/** - * @api {get} /api/teams/:id Get Team's details. - * @apiParam {Number} id Team's unique ID. - * @apiVersion 0.0.140 - * @apiName GetTeam - * @apiGroup Teams - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccess {Object} Team's details. - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 200 OK - * { - * "id": 1 - * "name": "T1" - * "description": "Default Team" - * ... - * } - */ -router.get('/:id', auth.isAuthenticated(), auth.hasRole('admin'), controller.show); -/** - * @api {get} /api/teams/:id/agents Get Team's agents - * @apiParam {Number} id Team's unique ID. - * @apiVersion 0.0.140 - * @apiName showAgents - * @apiGroup Teams - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccess {Number} count Number of agents. - * @apiSuccess {Object[]} rows Agents list. - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 200 OK - * { - * "count": 2, - * "rows": [{ - * "id": 1 - * "name": "John Doe" - * "fullname": "john.doe" - * "email": "johndoe@test.com" - * "internal": 1000, - * ... - * },{ - * "id": 2 - * "name": "Jane Miller" - * "fullname": "jane.miller", - * "email": "janemiller@test.com" - * "internal": 1001, - * ... - * },...] - * } - */ -router.get('/:id/agents', auth.isAuthenticated(), auth.hasRole('admin'), controller.showAgents); -/** - * @api {post} /api/teams/ Create a new team. - * @apiParam (body) {String} name Team's name. - * @apiParam (body) {String} [description] Team's description. - * - * @apiVersion 0.0.140 - * @apiName CreateTeam - * @apiGroup Teams - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 201 Created - * { - * "id": 3 - * "name": "My Team" - * "description": "New Team" - * ... - * } - */ -router.post('/', auth.isAuthenticated(), auth.hasRole('admin'), controller.create); -/** - * @api {post} /api/teams/:id/agents Add agents to a team. - * @apiParam {Number} id Team's unique ID. - * @apiParam (body) {Number[]} agents Array of agents' ID - * - * @apiVersion 0.0.140 - * @apiName AddAgents - * @apiGroup Teams - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 204 No Content - */ -router.post('/:id/agents', auth.isAuthenticated(), auth.hasRole('admin'), controller.addAgents); -/** - * @api {put} /api/teams/:id Update team's details. - * @apiParam {Number} id Team's unique ID. - * @apiParam (body) {String} name Team's name. - * @apiParam (body) {String} [description] Team's description. - * - * @apiVersion 0.0.140 - * @apiName UpdateTeam - * @apiGroup Teams - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 200 OK - * { - * "id": 3 - * "name": "Team 3" - * "description": "My description" - * ... - * } - */ -router.put('/:id', auth.isAuthenticated(), auth.hasRole('admin'), controller.update); -/** - * @api {delete} /api/teams/ Bulk Delete teams. - * - * @apiParam (Query) {Number[]} ids Teams' unique ID array. - * - * @apiVersion 0.0.140 - * @apiName BulkDeleteTeams - * @apiGroup Teams - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 204 No Content - */ -router.delete('/', auth.isAuthenticated(), auth.hasRole('admin'), controller.bulkDestroy); -/** - * @api {delete} /api/teams/:id Delete a team. - * - * @apiParam {Number} id Team's unique ID. - * - * @apiVersion 0.0.140 - * @apiName DeleteTeam - * @apiGroup Teams - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 204 No Content - */ -router.delete('/:id', auth.isAuthenticated(), auth.hasRole('admin'), controller.destroy); -/** - * @api {delete} /api/teams/:id/agents Remove agents from a team. - * @apiParam {Number} id Team's unique ID. - * @apiParam (Query) {Number[]} ids Agents' unique ID array. - * - * @apiVersion 0.0.140 - * @apiName RemoveAgents - * @apiGroup Teams - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 204 No Content - */ -router.delete('/:id/agents', auth.isAuthenticated(), auth.hasRole('admin'), controller.removeAgents); - -module.exports = router; +var _0x8469=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x74\x65\x61\x6D\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x52\x6F\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x61\x73\x73\x6F\x63\x69\x61\x74\x69\x6F\x6E\x73","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x61\x73\x73\x6F\x63\x69\x61\x74\x69\x6F\x6E\x73\x49\x6E\x64\x65\x78","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x2F\x3A\x69\x64\x2F\x61\x67\x65\x6E\x74\x73","\x73\x68\x6F\x77\x41\x67\x65\x6E\x74\x73","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x61\x64\x64\x41\x67\x65\x6E\x74\x73","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x72\x65\x6D\x6F\x76\x65\x41\x67\x65\x6E\x74\x73","\x65\x78\x70\x6F\x72\x74\x73"];_0x8469[0];var express=require(_0x8469[1]);var controller=require(_0x8469[2]);var auth=require(_0x8469[3]);var router=express.Router();router[_0x8469[9]](_0x8469[4],auth[_0x8469[5]](),auth[_0x8469[7]](_0x8469[6]),controller[_0x8469[8]]);router[_0x8469[9]](_0x8469[10],auth[_0x8469[5]](),auth[_0x8469[11]]([5],[_0x8469[6]]),controller[_0x8469[12]]);router[_0x8469[9]](_0x8469[13],auth[_0x8469[5]](),auth[_0x8469[7]](_0x8469[6]),controller[_0x8469[14]]);router[_0x8469[9]](_0x8469[15],auth[_0x8469[5]](),auth[_0x8469[7]](_0x8469[6]),controller[_0x8469[16]]);router[_0x8469[18]](_0x8469[4],auth[_0x8469[5]](),auth[_0x8469[7]](_0x8469[6]),controller[_0x8469[17]]);router[_0x8469[18]](_0x8469[15],auth[_0x8469[5]](),auth[_0x8469[7]](_0x8469[6]),controller[_0x8469[19]]);router[_0x8469[21]](_0x8469[13],auth[_0x8469[5]](),auth[_0x8469[7]](_0x8469[6]),controller[_0x8469[20]]);router[_0x8469[23]](_0x8469[4],auth[_0x8469[5]](),auth[_0x8469[7]](_0x8469[6]),controller[_0x8469[22]]);router[_0x8469[23]](_0x8469[13],auth[_0x8469[5]](),auth[_0x8469[7]](_0x8469[6]),controller[_0x8469[24]]);router[_0x8469[23]](_0x8469[15],auth[_0x8469[5]](),auth[_0x8469[7]](_0x8469[6]),controller[_0x8469[25]]);module[_0x8469[26]]= router \ No newline at end of file diff --git a/server/api/team/team.controller.js b/server/api/team/team.controller.js index cac8024..1429125 100644 --- a/server/api/team/team.controller.js +++ b/server/api/team/team.controller.js @@ -1,252 +1 @@ -'use strict'; - -var _ = require('lodash'); -var util = require('util'); -var Util = require('../../config/util'); - -var sequelize = require('../../models').sequelize; -var Team = require('../../models').Team; -var Agent = require('../../models').User; -var User = require('../../models').User; - -// Get list of teams -exports.index = function(req, res) { - return Team - .scope('default') - .findAndCountAll(_.merge(Util.getQuery(req.query))) - .then(function(result) { - res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.associationsIndex = function(req, res) { - switch (req.user.role) { - case 'user': - return User - .findById(req.user.id) - .then(function(user) { - if (!user) { - return res.sendStatus(404); - } - - return user; - }) - .then(Util.getAgentsIdByUser(req.query)) - .then(function(data) { - return Team - .scope({ - method: ['agents', _.map(data.rows, 'id')] - }) - .findAll(_.merge(Util.getQuery(req.query))); - }) - .then(function(result) { - res.status(200).send({ - rows: result, - count: result.length - }); - }) - .catch(function(err) { - return handleError(res, err); - }); - - default: - return Team - .scope('agents') - .findAll(_.merge(Util.getQuery(req.query))) - .then(function(result) { - res.status(200).send({ - rows: result, - count: result.length - }); - }) - .catch(function(err) { - return handleError(res, err); - }); - } -}; - -// Get a single team -exports.show = function(req, res) { - return Team - // .scope('default') - .findById(req.params.id) - .then(function(team) { - if (!team) { - return res.sendStatus(404); - } - return res.send(team); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get a single team -exports.showAgents = function(req, res) { - switch (req.user.role) { - case 'user': - return User - .findById(req.user.id) - .then(function(user) { - if (!user) { - return res.sendStatus(404); - } - return user; - }) - .then(Util.getAgentsIdByUser(req.query)) - .then(function(data) { - return Team - .scope({ - method: ['agents', _.map(data.rows, 'id')] - }) - .findById(req.params.id); - }) - .then(function(team) { - if (!team) { - return res.sendStatus(404); - } - return res.status(200).send({ - count: team.Users.length, - rows: team.Users - }); - }) - .catch(function(err) { - return handleError(res, err); - }); - default: - return Team - .scope('agents') - .findById(req.params.id) - .then(function(team) { - if (!team) { - return res.sendStatus(404); - } - return res.status(200).send({ - count: team.Users.length, - rows: team.Users - }); - }) - .catch(function(err) { - return handleError(res, err); - }); - } -}; - -// Creates a new team in the DB. -exports.create = function(req, res) { - return Team - // .scope('default') - .create(req.body) - .then(function(team) { - return res.status(201).send(team); - }) - .catch(sequelize.UniqueConstraintError, function(err) { - return Util.errorManager.handleUniqueConstraintError(res, err); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Updates an existing team in the DB. -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - - return Team - .findById(req.params.id) - .then(function(team) { - if (!team) { - return res.sendStatus(404); - } - var updated = _.merge(team, req.body); - return updated - .save(); - }) - .then(function(team) { - return res.status(200).send(team); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes a team from the DB. -exports.destroy = function(req, res) { - return Team - .findById(req.params.id) - .then(function(team) { - if (!team) { - return res.sendStatus(404); - } - return team.destroy(); - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes a agent from the DB. -exports.bulkDestroy = function(req, res) { - return Team - .destroy({ - where: { - id: req.query.ids - }, - individualHooks: true - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Updates an existing user_has_mail_queue in the DB. -exports.addAgents = function(req, res, next) { - return Team - .findById(req.params.id) - .then(function(team) { - if (!team) { - return res.sendStatus(404); - } - return team - .addUsers(req.body.agents); - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return next(err); - }); -}; - -exports.removeAgents = function(req, res, next) { - return Team - .findById(req.params.id) - .then(function(team) { - if (!team) { - return res.sendStatus(404); - } - return team - .removeUser(req.query.agents); - }) - .then(function() { - return res.sendStatus(202); - }) - .catch(function(err) { - return next(err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0x97e2=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x75\x74\x69\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x54\x65\x61\x6D","\x55\x73\x65\x72","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x6D\x65\x72\x67\x65","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x64\x65\x66\x61\x75\x6C\x74","\x73\x63\x6F\x70\x65","\x61\x73\x73\x6F\x63\x69\x61\x74\x69\x6F\x6E\x73\x49\x6E\x64\x65\x78","\x6C\x65\x6E\x67\x74\x68","\x66\x69\x6E\x64\x41\x6C\x6C","\x61\x67\x65\x6E\x74\x73","\x72\x6F\x77\x73","\x69\x64","\x6D\x61\x70","\x67\x65\x74\x41\x67\x65\x6E\x74\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x75\x73\x65\x72","\x66\x69\x6E\x64\x42\x79\x49\x64","\x72\x6F\x6C\x65","\x73\x68\x6F\x77","\x70\x61\x72\x61\x6D\x73","\x73\x68\x6F\x77\x41\x67\x65\x6E\x74\x73","\x55\x73\x65\x72\x73","\x63\x72\x65\x61\x74\x65","\x68\x61\x6E\x64\x6C\x65\x55\x6E\x69\x71\x75\x65\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74\x45\x72\x72\x6F\x72","\x65\x72\x72\x6F\x72\x4D\x61\x6E\x61\x67\x65\x72","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x73\x61\x76\x65","\x64\x65\x73\x74\x72\x6F\x79","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73","\x61\x64\x64\x41\x67\x65\x6E\x74\x73","\x61\x64\x64\x55\x73\x65\x72\x73","\x72\x65\x6D\x6F\x76\x65\x41\x67\x65\x6E\x74\x73","\x72\x65\x6D\x6F\x76\x65\x55\x73\x65\x72"];_0x97e2[0];var _=require(_0x97e2[1]);var util=require(_0x97e2[2]);var Util=require(_0x97e2[3]);var sequelize=require(_0x97e2[5])[_0x97e2[4]];var Team=require(_0x97e2[5])[_0x97e2[6]];var Agent=require(_0x97e2[5])[_0x97e2[7]];var User=require(_0x97e2[5])[_0x97e2[7]];exports[_0x97e2[8]]= function(_0x719bx8,_0x719bx9){return Team[_0x97e2[18]](_0x97e2[17])[_0x97e2[16]](_[_0x97e2[15]](Util[_0x97e2[14]](_0x719bx8[_0x97e2[13]])))[_0x97e2[12]](function(_0x719bxb){_0x719bx9[_0x97e2[11]](200)[_0x97e2[10]](_0x719bxb)})[_0x97e2[9]](function(_0x719bxa){return handleError(_0x719bx9,_0x719bxa)})};exports[_0x97e2[19]]= function(_0x719bx8,_0x719bx9){switch(_0x719bx8[_0x97e2[28]][_0x97e2[30]]){case _0x97e2[28]:return User[_0x97e2[29]](_0x719bx8[_0x97e2[28]][_0x97e2[24]])[_0x97e2[12]](function(_0x719bxd){if(!_0x719bxd){return _0x719bx9[_0x97e2[27]](404)};return _0x719bxd})[_0x97e2[12]](Util[_0x97e2[26]](_0x719bx8[_0x97e2[13]]))[_0x97e2[12]](function(_0x719bxc){return Team[_0x97e2[18]]({method:[_0x97e2[22],_[_0x97e2[25]](_0x719bxc[_0x97e2[23]],_0x97e2[24])]})[_0x97e2[21]](_[_0x97e2[15]](Util[_0x97e2[14]](_0x719bx8[_0x97e2[13]])))})[_0x97e2[12]](function(_0x719bxb){_0x719bx9[_0x97e2[11]](200)[_0x97e2[10]]({rows:_0x719bxb,count:_0x719bxb[_0x97e2[20]]})})[_0x97e2[9]](function(_0x719bxa){return handleError(_0x719bx9,_0x719bxa)});default:return Team[_0x97e2[18]](_0x97e2[22])[_0x97e2[21]](_[_0x97e2[15]](Util[_0x97e2[14]](_0x719bx8[_0x97e2[13]])))[_0x97e2[12]](function(_0x719bxb){_0x719bx9[_0x97e2[11]](200)[_0x97e2[10]]({rows:_0x719bxb,count:_0x719bxb[_0x97e2[20]]})})[_0x97e2[9]](function(_0x719bxa){return handleError(_0x719bx9,_0x719bxa)})}};exports[_0x97e2[31]]= function(_0x719bx8,_0x719bx9){return Team[_0x97e2[29]](_0x719bx8[_0x97e2[32]][_0x97e2[24]])[_0x97e2[12]](function(_0x719bxe){if(!_0x719bxe){return _0x719bx9[_0x97e2[27]](404)};return _0x719bx9[_0x97e2[10]](_0x719bxe)})[_0x97e2[9]](function(_0x719bxa){return handleError(_0x719bx9,_0x719bxa)})};exports[_0x97e2[33]]= function(_0x719bx8,_0x719bx9){switch(_0x719bx8[_0x97e2[28]][_0x97e2[30]]){case _0x97e2[28]:return User[_0x97e2[29]](_0x719bx8[_0x97e2[28]][_0x97e2[24]])[_0x97e2[12]](function(_0x719bxd){if(!_0x719bxd){return _0x719bx9[_0x97e2[27]](404)};return _0x719bxd})[_0x97e2[12]](Util[_0x97e2[26]](_0x719bx8[_0x97e2[13]]))[_0x97e2[12]](function(_0x719bxc){return Team[_0x97e2[18]]({method:[_0x97e2[22],_[_0x97e2[25]](_0x719bxc[_0x97e2[23]],_0x97e2[24])]})[_0x97e2[29]](_0x719bx8[_0x97e2[32]][_0x97e2[24]])})[_0x97e2[12]](function(_0x719bxe){if(!_0x719bxe){return _0x719bx9[_0x97e2[27]](404)};return _0x719bx9[_0x97e2[11]](200)[_0x97e2[10]]({count:_0x719bxe[_0x97e2[34]][_0x97e2[20]],rows:_0x719bxe[_0x97e2[34]]})})[_0x97e2[9]](function(_0x719bxa){return handleError(_0x719bx9,_0x719bxa)});default:return Team[_0x97e2[18]](_0x97e2[22])[_0x97e2[29]](_0x719bx8[_0x97e2[32]][_0x97e2[24]])[_0x97e2[12]](function(_0x719bxe){if(!_0x719bxe){return _0x719bx9[_0x97e2[27]](404)};return _0x719bx9[_0x97e2[11]](200)[_0x97e2[10]]({count:_0x719bxe[_0x97e2[34]][_0x97e2[20]],rows:_0x719bxe[_0x97e2[34]]})})[_0x97e2[9]](function(_0x719bxa){return handleError(_0x719bx9,_0x719bxa)})}};exports[_0x97e2[35]]= function(_0x719bx8,_0x719bx9){return Team[_0x97e2[35]](_0x719bx8[_0x97e2[38]])[_0x97e2[12]](function(_0x719bxe){return _0x719bx9[_0x97e2[11]](201)[_0x97e2[10]](_0x719bxe)})[_0x97e2[9]](sequelize.UniqueConstraintError,function(_0x719bxa){return Util[_0x97e2[37]][_0x97e2[36]](_0x719bx9,_0x719bxa)})[_0x97e2[9]](function(_0x719bxa){return handleError(_0x719bx9,_0x719bxa)})};exports[_0x97e2[39]]= function(_0x719bx8,_0x719bx9){if(_0x719bx8[_0x97e2[38]][_0x97e2[24]]){delete _0x719bx8[_0x97e2[38]][_0x97e2[24]]};return Team[_0x97e2[29]](_0x719bx8[_0x97e2[32]][_0x97e2[24]])[_0x97e2[12]](function(_0x719bxe){if(!_0x719bxe){return _0x719bx9[_0x97e2[27]](404)};var _0x719bxf=_[_0x97e2[15]](_0x719bxe,_0x719bx8[_0x97e2[38]]);return _0x719bxf[_0x97e2[40]]()})[_0x97e2[12]](function(_0x719bxe){return _0x719bx9[_0x97e2[11]](200)[_0x97e2[10]](_0x719bxe)})[_0x97e2[9]](function(_0x719bxa){return handleError(_0x719bx9,_0x719bxa)})};exports[_0x97e2[41]]= function(_0x719bx8,_0x719bx9){return Team[_0x97e2[29]](_0x719bx8[_0x97e2[32]][_0x97e2[24]])[_0x97e2[12]](function(_0x719bxe){if(!_0x719bxe){return _0x719bx9[_0x97e2[27]](404)};return _0x719bxe[_0x97e2[41]]()})[_0x97e2[12]](function(){return _0x719bx9[_0x97e2[27]](204)})[_0x97e2[9]](function(_0x719bxa){return handleError(_0x719bx9,_0x719bxa)})};exports[_0x97e2[42]]= function(_0x719bx8,_0x719bx9){return Team[_0x97e2[41]]({where:{id:_0x719bx8[_0x97e2[13]][_0x97e2[43]]},individualHooks:true})[_0x97e2[12]](function(){return _0x719bx9[_0x97e2[27]](204)})[_0x97e2[9]](function(_0x719bxa){return handleError(_0x719bx9,_0x719bxa)})};exports[_0x97e2[44]]= function(_0x719bx8,_0x719bx9,_0x719bx10){return Team[_0x97e2[29]](_0x719bx8[_0x97e2[32]][_0x97e2[24]])[_0x97e2[12]](function(_0x719bxe){if(!_0x719bxe){return _0x719bx9[_0x97e2[27]](404)};return _0x719bxe[_0x97e2[45]](_0x719bx8[_0x97e2[38]][_0x97e2[22]])})[_0x97e2[12]](function(){return _0x719bx9[_0x97e2[27]](204)})[_0x97e2[9]](function(_0x719bxa){return _0x719bx10(_0x719bxa)})};exports[_0x97e2[46]]= function(_0x719bx8,_0x719bx9,_0x719bx10){return Team[_0x97e2[29]](_0x719bx8[_0x97e2[32]][_0x97e2[24]])[_0x97e2[12]](function(_0x719bxe){if(!_0x719bxe){return _0x719bx9[_0x97e2[27]](404)};return _0x719bxe[_0x97e2[47]](_0x719bx8[_0x97e2[13]][_0x97e2[22]])})[_0x97e2[12]](function(){return _0x719bx9[_0x97e2[27]](202)})[_0x97e2[9]](function(_0x719bxa){return _0x719bx10(_0x719bxa)})};function handleError(_0x719bx9,_0x719bxa){return _0x719bx9[_0x97e2[11]](500)[_0x97e2[10]](_0x719bxa)} \ No newline at end of file diff --git a/server/api/team/team.events.js b/server/api/team/team.events.js index 8a9173b..1254de6 100644 --- a/server/api/team/team.events.js +++ b/server/api/team/team.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const Team = require('../../models').Team; - -var TeamEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -TeamEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - Team.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - TeamEvents.emit(event + ':' + doc._id, doc); - TeamEvents.emit(event, doc); - done(null); - } -} - -module.exports = TeamEvents; +var _0x11b0=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x54\x65\x61\x6D","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x11b0[0];const EventEmitter=require(_0x11b0[1]);const Team=require(_0x11b0[3])[_0x11b0[2]];var TeamEvents= new EventEmitter();TeamEvents[_0x11b0[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x11b0[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x11b0[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x11b0[6]};for(var e in events){var event=events[e];Team[_0x11b0[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x7650x8,_0x7650x9,_0x7650xa){TeamEvents[_0x11b0[10]](event+ _0x11b0[8]+ _0x7650x8[_0x11b0[9]],_0x7650x8);TeamEvents[_0x11b0[10]](event,_0x7650x8);_0x7650xa(null)}}module[_0x11b0[11]]= TeamEvents \ No newline at end of file diff --git a/server/api/team/team.socket.js b/server/api/team/team.socket.js index 8217583..48ddaa6 100644 --- a/server/api/team/team.socket.js +++ b/server/api/team/team.socket.js @@ -1,32 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const TeamEvents = require('./team.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('team:' + event, socket); - - TeamEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - TeamEvents.removeListener(event, listener); - }; -} +var _0x2524=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x74\x65\x61\x6D\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x74\x65\x61\x6D\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x2524[0];const TeamEvents=require(_0x2524[1]);var events=[_0x2524[2],_0x2524[3]];exports[_0x2524[4]]= function(_0x968ex3){for(var _0x968ex4=0,_0x968ex5=events[_0x2524[5]];_0x968ex4< _0x968ex5;_0x968ex4++){var _0x968ex6=events[_0x968ex4];var _0x968ex7=createListener(_0x2524[6]+ _0x968ex6,_0x968ex3);TeamEvents[_0x2524[7]](_0x968ex6,_0x968ex7);_0x968ex3[_0x2524[7]](_0x2524[8],removeListener(_0x968ex6,_0x968ex7))}};function createListener(_0x968ex6,_0x968ex3){return function(_0x968ex9){_0x968ex3[_0x2524[9]](_0x968ex6,_0x968ex9)}}function removeListener(_0x968ex6,_0x968ex7){return function(){TeamEvents[_0x2524[10]](_0x968ex6,_0x968ex7)}} \ No newline at end of file diff --git a/server/api/telephone/index.js b/server/api/telephone/index.js index a545c63..148f2ec 100644 --- a/server/api/telephone/index.js +++ b/server/api/telephone/index.js @@ -1,174 +1 @@ -'use strict'; - -var express = require('express'); -var auth = require('../../auth/auth.service'); -var controller = require('./telephone.controller'); -var license = require('../../config/license/license.service'); - -var router = express.Router(); - -/** - * @api {get} /api/telephones/ Get telephones list. - * @apiVersion 0.0.140 - * @apiName GetTelephones - * @apiGroup Telephones - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccess {Number} count Number of telephones. - * @apiSuccess {Object[]} rows Get list of agent detailss. - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 200 OK - * { - * "count": 1, - * "rows": [{ - * "id": 1 - * "name": "john.doe" - * "internal": 1001 - * ... - * }] - * } - */ -router.get('/', auth.isAuthenticated(), auth.hasRole('admin'), controller.index); - -/** - * @api {get} /api/telephones/:id Get telephone details. - * @apiParam {Number} id Telephone's unique ID. - * @apiVersion 0.0.140 - * @apiName GetTelephone - * @apiGroup Telephones - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccess {Object} Telephone's details. - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 200 OK - * { - * "id": 1 - * "name": "john.doe" - * "internal": 1001 - * ... - * } - */ -router.get('/:id', auth.isAuthenticated(), auth.hasRole('admin'), controller.show); - -/** - * @api {post} /api/telephones/ Create telephone. - * @apiParam (Body) {String} name Telephone's name. - * @apiParam (Body) {String} context="from-sip" Telephone's SIP context. - * @apiParam (Body) {String} password Telephone's password. - * @apiParam (Body) {Number} internal Telephone's internal number. - * @apiParam (Body) {String="tcp", "udp", "tcp,udp"} transport="udp" Telephone's SIP transport. - * @apiParam (Body) {String="alaw", "ulaw", "gsm"} allow="alaw;ulaw;gsm" Telephone's SIP codecs. - * @apiParam (Body) {Number} internal Telephone's internal number. - * - * @apiVersion 0.0.140 - * @apiName CreateTelephone - * @apiGroup Telephones - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 201 Created - * { - * "id": 1 - * "name": "john.doe" - * "internal": 1001 - * ... - * } - */ -router.post('/', auth.isAuthenticated(), license.isValidDate(), license.isTelephonesLimit(), auth.hasRole('admin'), controller.create); - -/** - * @api {update} /api/telephones/:id Update telephone details. - * - * @apiParam (Params) {Number} id Telephone's unique ID. - * @apiParam (Body) {String} email Telephone's email. - * @apiParam (Body) {String} context="from-sip" Telephone's SIP context. - * @apiParam (Body) {String} password Telephone's password. - * @apiParam (Body) {Number} internal Telephone's internal number. - * @apiParam (Body) {String="tcp", "udp", "tcp,udp"} transport="udp" Telephone's SIP transport. - * @apiParam (Body) {String="alaw", "ulaw", "gsm"} allow="alaw;ulaw;gsm" Telephone's SIP codecs. - * - * @apiVersion 0.0.140 - * @apiName UpdateTelephone - * @apiGroup Telephones - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 200 OK - * { - * "id": 1 - * "name": "john.doe" - * "internal": 1001 - * ... - * } - */ -router.put('/:id', auth.isAuthenticated(), auth.hasRole('admin'), controller.update); - -/** - * @api {delete} /api/telephones/ Bulk Delete telephones. - * - * @apiParam (Query) {Number[]} ids Telephones' unique ID array. - * - * @apiVersion 0.0.140 - * @apiName BulkDeleteTelephones - * @apiGroup Telephones - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 204 No Content - */ -router.delete('/', auth.isAuthenticated(), auth.hasRole('admin'), controller.bulkDestroy); - -/** - * @api {delete} /api/telephones/:id Delete telephone. - * - * @apiParam {Number} id Telephone's unique ID. - * - * @apiVersion 0.0.140 - * @apiName DeleteTelephone - * @apiGroup Telephones - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 204 No Content - */ -router.delete('/:id', auth.isAuthenticated(), auth.hasRole('admin'), controller.destroy); - -module.exports = router; +var _0x70a2=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x74\x65\x6C\x65\x70\x68\x6F\x6E\x65\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x52\x6F\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x69\x73\x54\x65\x6C\x65\x70\x68\x6F\x6E\x65\x73\x4C\x69\x6D\x69\x74","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0x70a2[0];var express=require(_0x70a2[1]);var auth=require(_0x70a2[2]);var controller=require(_0x70a2[3]);var license=require(_0x70a2[4]);var router=express.Router();router[_0x70a2[10]](_0x70a2[5],auth[_0x70a2[6]](),auth[_0x70a2[8]](_0x70a2[7]),controller[_0x70a2[9]]);router[_0x70a2[10]](_0x70a2[11],auth[_0x70a2[6]](),auth[_0x70a2[8]](_0x70a2[7]),controller[_0x70a2[12]]);router[_0x70a2[16]](_0x70a2[5],auth[_0x70a2[6]](),license[_0x70a2[13]](),license[_0x70a2[14]](),auth[_0x70a2[8]](_0x70a2[7]),controller[_0x70a2[15]]);router[_0x70a2[18]](_0x70a2[11],auth[_0x70a2[6]](),auth[_0x70a2[8]](_0x70a2[7]),controller[_0x70a2[17]]);router[_0x70a2[20]](_0x70a2[5],auth[_0x70a2[6]](),auth[_0x70a2[8]](_0x70a2[7]),controller[_0x70a2[19]]);router[_0x70a2[20]](_0x70a2[11],auth[_0x70a2[6]](),auth[_0x70a2[8]](_0x70a2[7]),controller[_0x70a2[21]]);module[_0x70a2[22]]= router \ No newline at end of file diff --git a/server/api/telephone/telephone.controller.js b/server/api/telephone/telephone.controller.js index 139df32..782ffb8 100644 --- a/server/api/telephone/telephone.controller.js +++ b/server/api/telephone/telephone.controller.js @@ -1,157 +1 @@ -/** - * Using Rails-like standard naming convention for endpoints. - * GET /api/telephones -> index - * POST /api/telephones -> create - * GET /api/telephones/:id -> show - * PUT /api/telephones/:id -> update - * DELETE /api/telephones/:id -> destroy - */ - -'use strict'; - -var _ = require('lodash'); -var Util = require('../../config/util'); - -var sequelize = require('../../models').sequelize; -var Telephone = require('../../models').User; - -function handleError(res, statusCode) { - statusCode = statusCode || 500; - return function(err) { - res.status(statusCode).send(err); - }; -} - -function responseWithResult(res, statusCode) { - statusCode = statusCode || 200; - return function(entity) { - if (entity) { - res.status(statusCode).json(entity); - } - }; -} - -function handleEntityNotFound(res) { - return function(entity) { - if (!entity) { - res.status(404).end(); - return null; - } - return entity; - }; -} - -function saveUpdates(updates, t) { - return function(entity) { - return entity.updateAttributes(updates, { - transaction: t - }) - .then(function(updated) { - return updated; - }); - }; -} - -function removeEntity(res) { - return function(entity) { - if (entity) { - return entity.destroy() - .then(function() { - res.status(204).end(); - }); - } - }; -} - -// Gets a list of Telephones -exports.index = function(req, res) { - return Telephone - .scope('telephone') - .findAndCountAll(Util.getQuery(req.query)) - .then(function(result) { - res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); -} - -// Gets a single Telephone from the DB -exports.show = function(req, res) { - Telephone.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Creates a new Telephone in the DB -exports.create = function(req, res) { - var password = String(req.body.password); - if (!(/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[~!@#$%^&\-_=+\[\{\]\}.])[0-9a-zA-Z~!@#$%^&\-_=+\[\{\]\}.]{8,}$/.test(password))) { - throw new Error('Wrong password format!'); - } - // Set default role - req.body.role = 'telephone'; - return sequelize.transaction(function(t) { - return Telephone - .create(req.body, { - transaction: t - }) - .then(responseWithResult(res, 201)) - }) - .catch(sequelize.UniqueConstraintError, function(err) { - return Util.errorManager.handleUniqueConstraintError(res, err); - }) - .catch(handleError(res)); -} - -// Updates an existing Telephone in the DB -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - if (req.body.password) { - var password = String(req.body.password); - if (!(/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[~!@#$%^&\-_=+\[\{\]\}.])[0-9a-zA-Z~!@#$%^&\-_=+\[\{\]\}.]{8,}$/.test(password))) { - throw new Error('Wrong password format!'); - } - } - - delete req.body.name; - - return sequelize.transaction(function(t) { - return Telephone.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(saveUpdates(req.body, t)) - .then(responseWithResult(res)) - }) - .catch(sequelize.UniqueConstraintError, function(err) { - return Util.errorManager.handleUniqueConstraintError(res, err); - }) - .catch(handleError(res)); -} - -// Deletes a Telephone from the DB -exports.destroy = function(req, res) { - return Telephone.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(removeEntity(res)) - .catch(handleError(res)); -} - -// Deletes a agent from the DB. -exports.bulkDestroy = function(req, res) { - return Telephone - .destroy({ - where: { - id: req.query.ids - }, - individualHooks: true - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; +var _0x4c69=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x55\x73\x65\x72","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x6A\x73\x6F\x6E","\x65\x6E\x64","\x74\x68\x65\x6E","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x64\x65\x73\x74\x72\x6F\x79","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x74\x65\x6C\x65\x70\x68\x6F\x6E\x65","\x73\x63\x6F\x70\x65","\x73\x68\x6F\x77","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x70\x61\x73\x73\x77\x6F\x72\x64","\x62\x6F\x64\x79","\x74\x65\x73\x74","\x57\x72\x6F\x6E\x67\x20\x70\x61\x73\x73\x77\x6F\x72\x64\x20\x66\x6F\x72\x6D\x61\x74\x21","\x72\x6F\x6C\x65","\x68\x61\x6E\x64\x6C\x65\x55\x6E\x69\x71\x75\x65\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74\x45\x72\x72\x6F\x72","\x65\x72\x72\x6F\x72\x4D\x61\x6E\x61\x67\x65\x72","\x74\x72\x61\x6E\x73\x61\x63\x74\x69\x6F\x6E","\x75\x70\x64\x61\x74\x65","\x6E\x61\x6D\x65","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64\x73"];_0x4c69[0];var _=require(_0x4c69[1]);var Util=require(_0x4c69[2]);var sequelize=require(_0x4c69[4])[_0x4c69[3]];var Telephone=require(_0x4c69[4])[_0x4c69[5]];function handleError(_0x9541x6,_0x9541x7){_0x9541x7= _0x9541x7|| 500;return function(_0x9541x8){_0x9541x6[_0x4c69[7]](_0x9541x7)[_0x4c69[6]](_0x9541x8)}}function responseWithResult(_0x9541x6,_0x9541x7){_0x9541x7= _0x9541x7|| 200;return function(_0x9541xa){if(_0x9541xa){_0x9541x6[_0x4c69[7]](_0x9541x7)[_0x4c69[8]](_0x9541xa)}}}function handleEntityNotFound(_0x9541x6){return function(_0x9541xa){if(!_0x9541xa){_0x9541x6[_0x4c69[7]](404)[_0x4c69[9]]();return null};return _0x9541xa}}function saveUpdates(_0x9541xd,_0x9541xe){return function(_0x9541xa){return _0x9541xa[_0x4c69[11]](_0x9541xd,{transaction:_0x9541xe})[_0x4c69[10]](function(_0x9541xf){return _0x9541xf})}}function removeEntity(_0x9541x6){return function(_0x9541xa){if(_0x9541xa){return _0x9541xa[_0x4c69[12]]()[_0x4c69[10]](function(){_0x9541x6[_0x4c69[7]](204)[_0x4c69[9]]()})}}}exports[_0x4c69[13]]= function(_0x9541x11,_0x9541x6){return Telephone[_0x4c69[19]](_0x4c69[18])[_0x4c69[17]](Util[_0x4c69[16]](_0x9541x11[_0x4c69[15]]))[_0x4c69[10]](function(_0x9541x12){_0x9541x6[_0x4c69[7]](200)[_0x4c69[6]](_0x9541x12)})[_0x4c69[14]](function(_0x9541x8){return handleError(_0x9541x6,_0x9541x8)})};exports[_0x4c69[20]]= function(_0x9541x11,_0x9541x6){Telephone[_0x4c69[23]](_0x9541x11[_0x4c69[22]][_0x4c69[21]])[_0x4c69[10]](handleEntityNotFound(_0x9541x6))[_0x4c69[10]](responseWithResult(_0x9541x6))[_0x4c69[14]](handleError(_0x9541x6))};exports[_0x4c69[24]]= function(_0x9541x11,_0x9541x6){var _0x9541x13=String(_0x9541x11[_0x4c69[26]][_0x4c69[25]]);if(!(/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[~!@#$%^&\-_=+\[\{\]\}.])[0-9a-zA-Z~!@#$%^&\-_=+\[\{\]\}.]{8,}$/[_0x4c69[27]](_0x9541x13))){throw new Error(_0x4c69[28])};_0x9541x11[_0x4c69[26]][_0x4c69[29]]= _0x4c69[18];return sequelize[_0x4c69[32]](function(_0x9541xe){return Telephone[_0x4c69[24]](_0x9541x11[_0x4c69[26]],{transaction:_0x9541xe})[_0x4c69[10]](responseWithResult(_0x9541x6,201))})[_0x4c69[14]](sequelize.UniqueConstraintError,function(_0x9541x8){return Util[_0x4c69[31]][_0x4c69[30]](_0x9541x6,_0x9541x8)})[_0x4c69[14]](handleError(_0x9541x6))};exports[_0x4c69[33]]= function(_0x9541x11,_0x9541x6){if(_0x9541x11[_0x4c69[26]][_0x4c69[21]]){delete _0x9541x11[_0x4c69[26]][_0x4c69[21]]};if(_0x9541x11[_0x4c69[26]][_0x4c69[25]]){var _0x9541x13=String(_0x9541x11[_0x4c69[26]][_0x4c69[25]]);if(!(/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[~!@#$%^&\-_=+\[\{\]\}.])[0-9a-zA-Z~!@#$%^&\-_=+\[\{\]\}.]{8,}$/[_0x4c69[27]](_0x9541x13))){throw new Error(_0x4c69[28])}};delete _0x9541x11[_0x4c69[26]][_0x4c69[34]];return sequelize[_0x4c69[32]](function(_0x9541xe){return Telephone[_0x4c69[23]](_0x9541x11[_0x4c69[22]][_0x4c69[21]])[_0x4c69[10]](handleEntityNotFound(_0x9541x6))[_0x4c69[10]](saveUpdates(_0x9541x11[_0x4c69[26]],_0x9541xe))[_0x4c69[10]](responseWithResult(_0x9541x6))})[_0x4c69[14]](sequelize.UniqueConstraintError,function(_0x9541x8){return Util[_0x4c69[31]][_0x4c69[30]](_0x9541x6,_0x9541x8)})[_0x4c69[14]](handleError(_0x9541x6))};exports[_0x4c69[12]]= function(_0x9541x11,_0x9541x6){return Telephone[_0x4c69[23]](_0x9541x11[_0x4c69[22]][_0x4c69[21]])[_0x4c69[10]](handleEntityNotFound(_0x9541x6))[_0x4c69[10]](removeEntity(_0x9541x6))[_0x4c69[14]](handleError(_0x9541x6))};exports[_0x4c69[35]]= function(_0x9541x11,_0x9541x6){return Telephone[_0x4c69[12]]({where:{id:_0x9541x11[_0x4c69[15]][_0x4c69[37]]},individualHooks:true})[_0x4c69[10]](function(){return _0x9541x6[_0x4c69[36]](204)})[_0x4c69[14]](function(_0x9541x8){return handleError(_0x9541x6,_0x9541x8)})} \ No newline at end of file diff --git a/server/api/telephone/telephone.events.js b/server/api/telephone/telephone.events.js index 25f4f9a..62c7eea 100644 --- a/server/api/telephone/telephone.events.js +++ b/server/api/telephone/telephone.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const Telephone = require('../../models').Telephone; - -var TelephoneEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -TelephoneEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - Telephone.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - TelephoneEvents.emit(event + ':' + doc._id, doc); - TelephoneEvents.emit(event, doc); - done(null); - } -} - -module.exports = TelephoneEvents; +var _0xb659=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x54\x65\x6C\x65\x70\x68\x6F\x6E\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xb659[0];const EventEmitter=require(_0xb659[1]);const Telephone=require(_0xb659[3])[_0xb659[2]];var TelephoneEvents= new EventEmitter();TelephoneEvents[_0xb659[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xb659[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xb659[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xb659[6]};for(var e in events){var event=events[e];Telephone[_0xb659[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x5822x8,_0x5822x9,_0x5822xa){TelephoneEvents[_0xb659[10]](event+ _0xb659[8]+ _0x5822x8[_0xb659[9]],_0x5822x8);TelephoneEvents[_0xb659[10]](event,_0x5822x8);_0x5822xa(null)}}module[_0xb659[11]]= TelephoneEvents \ No newline at end of file diff --git a/server/api/telephone/telephone.socket.js b/server/api/telephone/telephone.socket.js index 66a9a8e..faefac0 100644 --- a/server/api/telephone/telephone.socket.js +++ b/server/api/telephone/telephone.socket.js @@ -1,32 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const TelephoneEvents = require('./telephone.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('telephone:' + event, socket); - - TelephoneEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - TelephoneEvents.removeListener(event, listener); - }; -} +var _0x122f=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x74\x65\x6C\x65\x70\x68\x6F\x6E\x65\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x74\x65\x6C\x65\x70\x68\x6F\x6E\x65\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x122f[0];const TelephoneEvents=require(_0x122f[1]);var events=[_0x122f[2],_0x122f[3]];exports[_0x122f[4]]= function(_0x95e4x3){for(var _0x95e4x4=0,_0x95e4x5=events[_0x122f[5]];_0x95e4x4< _0x95e4x5;_0x95e4x4++){var _0x95e4x6=events[_0x95e4x4];var _0x95e4x7=createListener(_0x122f[6]+ _0x95e4x6,_0x95e4x3);TelephoneEvents[_0x122f[7]](_0x95e4x6,_0x95e4x7);_0x95e4x3[_0x122f[7]](_0x122f[8],removeListener(_0x95e4x6,_0x95e4x7))}};function createListener(_0x95e4x6,_0x95e4x3){return function(_0x95e4x9){_0x95e4x3[_0x122f[9]](_0x95e4x6,_0x95e4x9)}}function removeListener(_0x95e4x6,_0x95e4x7){return function(){TelephoneEvents[_0x122f[10]](_0x95e4x6,_0x95e4x7)}} \ No newline at end of file diff --git a/server/api/template/index.js b/server/api/template/index.js index 68e0650..c842f37 100644 --- a/server/api/template/index.js +++ b/server/api/template/index.js @@ -1,182 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./template.controller'); -var auth = require('../../auth/auth.service'); - -var router = express.Router(); -/** - * @api {get} /api/template/ Get Templates' list. - * - * @apiParam (Query) {Number} [offset] Pagination offset. - * @apiParam (Query) {Number} [limit] Pagination limit. - * - * @apiVersion 0.0.140 - * @apiName GetTemplates - * @apiGroup Templates - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccess {Number} count Number of templates. - * @apiSuccess {Object[]} rows Templates list. - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 200 OK - * { - * "count": 2, - * "rows": [{ - * "id": 1 - * "name": "Template 1" - * "description": "Auto Response" - * "subject": "My subject" - * "attachment": null - * "html": null - * "text": "Hi, nice to meet you" - * ... - * },{ - * "id": 2 - * "name": "Template abc" - * "description": null - * ... - * },...] - * } - */ -router.get('/', auth.isAuthenticated(), auth.hasModule([13], ['admin', 'user', 'agent']), controller.index); -/** - * @api {get} /api/templates/:id Get Template's details. - * @apiParam {Number} id Template's unique ID. - * @apiVersion 0.0.140 - * @apiName GetTemplate - * @apiGroup Templates - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccess {Object} Template's details. - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 200 OK - * { - * "id": 1 - * "name": "Template 1" - * "description": "Auto Response" - * "subject": "My subject" - * "attachment": null - * "html": null - * "text": "Hi, nice to meet you" - * ... - * } - */ -router.get('/:id', auth.isAuthenticated(), auth.hasModule([13], ['admin']), controller.show); -/** - * @api {post} /api/templates/ Create a new template. - * @apiParam (body) {String} name Template's name. - * @apiParam (body) {String} [description] Template's description. - * @apiParam (body) {String} [subject] Template's subject. - * @apiParam (body) {String} [html] Template's content. - * - * @apiVersion 0.0.140 - * @apiName CreateTemplate - * @apiGroup Templates - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 201 Created - * { - * id": 2 - * "name": "Template 2" - * "description": "My Response", - * "subject": "My subject", - * "html": null - * ... - * } - */ -router.post('/', auth.isAuthenticated(), auth.hasModule([13], ['admin']), controller.create); -/** - * @api {put} /api/templates/:id Update template's details. - * @apiParam {Number} id Template's unique ID. - * @apiParam (body) {String} name Template's name. - * @apiParam (body) {String} [description] Template's description. - * @apiParam (body) {String} [subject] Template's subject. - * @apiParam (body) {String} [html] Template's content. - * - * @apiVersion 0.0.140 - * @apiName UpdateTemplate - * @apiGroup Templates - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 200 OK - * { - * id": 2 - * "name": "Template 2" - * "description": "My Response", - * "subject": "My subject", - * "html": "Hi, nice to meet you" - * ... - * } - */ -router.put('/:id', auth.isAuthenticated(), auth.hasModule([13], ['admin']), controller.update); -/** - * @api {delete} /api/templates/:id Delete a template. - * - * @apiParam {Number} id Template's unique ID. - * - * @apiVersion 0.0.140 - * @apiName DeleteTemplate - * @apiGroup Templates - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 204 No Content - */ -router.delete('/:id', auth.isAuthenticated(), auth.hasModule([13], ['admin']), controller.destroy); -/** - * @api {delete} /api/templates/ Bulk Delete templates. - * - * @apiParam (Query) {Number[]} ids Templates' unique ID array. - * - * @apiVersion 0.0.140 - * @apiName BulkDeleteTemplates - * @apiGroup Templates - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 204 No Content - */ -router.delete('/', auth.isAuthenticated(), auth.hasModule([13], ['admin']), controller.bulkDestroy); - -module.exports = router; +var _0xd861=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x74\x65\x6D\x70\x6C\x61\x74\x65\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x75\x73\x65\x72","\x61\x67\x65\x6E\x74","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0xd861[0];var express=require(_0xd861[1]);var controller=require(_0xd861[2]);var auth=require(_0xd861[3]);var router=express.Router();router[_0xd861[11]](_0xd861[4],auth[_0xd861[5]](),auth[_0xd861[9]]([13],[_0xd861[6],_0xd861[7],_0xd861[8]]),controller[_0xd861[10]]);router[_0xd861[11]](_0xd861[12],auth[_0xd861[5]](),auth[_0xd861[9]]([13],[_0xd861[6]]),controller[_0xd861[13]]);router[_0xd861[15]](_0xd861[4],auth[_0xd861[5]](),auth[_0xd861[9]]([13],[_0xd861[6]]),controller[_0xd861[14]]);router[_0xd861[17]](_0xd861[12],auth[_0xd861[5]](),auth[_0xd861[9]]([13],[_0xd861[6]]),controller[_0xd861[16]]);router[_0xd861[19]](_0xd861[12],auth[_0xd861[5]](),auth[_0xd861[9]]([13],[_0xd861[6]]),controller[_0xd861[18]]);router[_0xd861[19]](_0xd861[4],auth[_0xd861[5]](),auth[_0xd861[9]]([13],[_0xd861[6]]),controller[_0xd861[20]]);module[_0xd861[21]]= router \ No newline at end of file diff --git a/server/api/template/template.controller.js b/server/api/template/template.controller.js index 79f8d99..be56cad 100644 --- a/server/api/template/template.controller.js +++ b/server/api/template/template.controller.js @@ -1,108 +1 @@ -'use strict'; - -var _ = require('lodash'); -var util = require('util'); -var Util = require('../../config/util'); - -var Template = require('../../models').Template; - -// Get list of agents -exports.index = function(req, res, next) { - return Template - .findAndCountAll(Util.getQuery(req.query)) - .then(function(result) { - res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get a single template -exports.show = function(req, res) { - return Template - .findById(req.params.id) - .then(function(template) { - if (!template) { - return res.sendStatus(404); - } - return res.send(template); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Creates a new template in the DB. -exports.create = function(req, res) { - return Template - .create(req.body) - .then(function(template) { - return res.status(201).send(template); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Updates an existing template in the DB. -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - return Template - .findById(req.params.id) - .then(function(template) { - if (!template) { - return res.sendStatus(404); - } - var updated = _.merge(template, req.body); - return updated - .save(); - }) - .then(function(template) { - return res.status(200).send(template); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes a template from the DB. -exports.destroy = function(req, res) { - return Template - .findById(req.params.id) - .then(function(template) { - if (!template) { - return res.sendStatus(404); - } - return template - .destroy(); - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.bulkDestroy = function(req, res) { - return Template - .destroy({ - where: { - id: req.query.ids - }, - individualHooks: true - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0xa339=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x75\x74\x69\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x54\x65\x6D\x70\x6C\x61\x74\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x64\x65\x73\x74\x72\x6F\x79","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73"];_0xa339[0];var _=require(_0xa339[1]);var util=require(_0xa339[2]);var Util=require(_0xa339[3]);var Template=require(_0xa339[5])[_0xa339[4]];exports[_0xa339[6]]= function(_0x2966x5,_0x2966x6,_0x2966x7){return Template[_0xa339[13]](Util[_0xa339[12]](_0x2966x5[_0xa339[11]]))[_0xa339[10]](function(_0x2966x9){_0x2966x6[_0xa339[9]](200)[_0xa339[8]](_0x2966x9)})[_0xa339[7]](function(_0x2966x8){return handleError(_0x2966x6,_0x2966x8)})};exports[_0xa339[14]]= function(_0x2966x5,_0x2966x6){return Template[_0xa339[18]](_0x2966x5[_0xa339[17]][_0xa339[16]])[_0xa339[10]](function(_0x2966xa){if(!_0x2966xa){return _0x2966x6[_0xa339[15]](404)};return _0x2966x6[_0xa339[8]](_0x2966xa)})[_0xa339[7]](function(_0x2966x8){return handleError(_0x2966x6,_0x2966x8)})};exports[_0xa339[19]]= function(_0x2966x5,_0x2966x6){return Template[_0xa339[19]](_0x2966x5[_0xa339[20]])[_0xa339[10]](function(_0x2966xa){return _0x2966x6[_0xa339[9]](201)[_0xa339[8]](_0x2966xa)})[_0xa339[7]](function(_0x2966x8){return handleError(_0x2966x6,_0x2966x8)})};exports[_0xa339[21]]= function(_0x2966x5,_0x2966x6){if(_0x2966x5[_0xa339[20]][_0xa339[16]]){delete _0x2966x5[_0xa339[20]][_0xa339[16]]};return Template[_0xa339[18]](_0x2966x5[_0xa339[17]][_0xa339[16]])[_0xa339[10]](function(_0x2966xa){if(!_0x2966xa){return _0x2966x6[_0xa339[15]](404)};var _0x2966xb=_[_0xa339[22]](_0x2966xa,_0x2966x5[_0xa339[20]]);return _0x2966xb[_0xa339[23]]()})[_0xa339[10]](function(_0x2966xa){return _0x2966x6[_0xa339[9]](200)[_0xa339[8]](_0x2966xa)})[_0xa339[7]](function(_0x2966x8){return handleError(_0x2966x6,_0x2966x8)})};exports[_0xa339[24]]= function(_0x2966x5,_0x2966x6){return Template[_0xa339[18]](_0x2966x5[_0xa339[17]][_0xa339[16]])[_0xa339[10]](function(_0x2966xa){if(!_0x2966xa){return _0x2966x6[_0xa339[15]](404)};return _0x2966xa[_0xa339[24]]()})[_0xa339[10]](function(){return _0x2966x6[_0xa339[15]](204)})[_0xa339[7]](function(_0x2966x8){return handleError(_0x2966x6,_0x2966x8)})};exports[_0xa339[25]]= function(_0x2966x5,_0x2966x6){return Template[_0xa339[24]]({where:{id:_0x2966x5[_0xa339[11]][_0xa339[26]]},individualHooks:true})[_0xa339[10]](function(){return _0x2966x6[_0xa339[15]](204)})[_0xa339[7]](function(_0x2966x8){return handleError(_0x2966x6,_0x2966x8)})};function handleError(_0x2966x6,_0x2966x8){return _0x2966x6[_0xa339[9]](500)[_0xa339[8]](_0x2966x8)} \ No newline at end of file diff --git a/server/api/template/template.events.js b/server/api/template/template.events.js index aa7bb8e..f98a2c4 100644 --- a/server/api/template/template.events.js +++ b/server/api/template/template.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const Template = require('../../models').Template; - -var TemplateEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -TemplateEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - Template.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - TemplateEvents.emit(event + ':' + doc._id, doc); - TemplateEvents.emit(event, doc); - done(null); - } -} - -module.exports = TemplateEvents; +var _0xc5ba=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x54\x65\x6D\x70\x6C\x61\x74\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xc5ba[0];const EventEmitter=require(_0xc5ba[1]);const Template=require(_0xc5ba[3])[_0xc5ba[2]];var TemplateEvents= new EventEmitter();TemplateEvents[_0xc5ba[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xc5ba[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xc5ba[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xc5ba[6]};for(var e in events){var event=events[e];Template[_0xc5ba[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xfcc0x8,_0xfcc0x9,_0xfcc0xa){TemplateEvents[_0xc5ba[10]](event+ _0xc5ba[8]+ _0xfcc0x8[_0xc5ba[9]],_0xfcc0x8);TemplateEvents[_0xc5ba[10]](event,_0xfcc0x8);_0xfcc0xa(null)}}module[_0xc5ba[11]]= TemplateEvents \ No newline at end of file diff --git a/server/api/template/template.socket.js b/server/api/template/template.socket.js index 1757712..d9b772e 100644 --- a/server/api/template/template.socket.js +++ b/server/api/template/template.socket.js @@ -1,32 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const TemplateEvents = require('./template.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('template:' + event, socket); - - TemplateEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - TemplateEvents.removeListener(event, listener); - }; -} +var _0xae41=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x74\x65\x6D\x70\x6C\x61\x74\x65\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x74\x65\x6D\x70\x6C\x61\x74\x65\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xae41[0];const TemplateEvents=require(_0xae41[1]);var events=[_0xae41[2],_0xae41[3]];exports[_0xae41[4]]= function(_0xe917x3){for(var _0xe917x4=0,_0xe917x5=events[_0xae41[5]];_0xe917x4< _0xe917x5;_0xe917x4++){var _0xe917x6=events[_0xe917x4];var _0xe917x7=createListener(_0xae41[6]+ _0xe917x6,_0xe917x3);TemplateEvents[_0xae41[7]](_0xe917x6,_0xe917x7);_0xe917x3[_0xae41[7]](_0xae41[8],removeListener(_0xe917x6,_0xe917x7))}};function createListener(_0xe917x6,_0xe917x3){return function(_0xe917x9){_0xe917x3[_0xae41[9]](_0xe917x6,_0xe917x9)}}function removeListener(_0xe917x6,_0xe917x7){return function(){TemplateEvents[_0xae41[10]](_0xe917x6,_0xe917x7)}} \ No newline at end of file diff --git a/server/api/trigger/index.js b/server/api/trigger/index.js index 05578f4..1134015 100644 --- a/server/api/trigger/index.js +++ b/server/api/trigger/index.js @@ -1,261 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./trigger.controller'); -var auth = require('../../auth/auth.service'); - -var router = express.Router(); -/** - * @api {get} /api/triggers/ Get Triggers' list. - * - * @apiParam (Query) {Number} [offset] Pagination offset. - * @apiParam (Query) {Number} [limit] Pagination limit. - * - * @apiVersion 0.0.140 - * @apiName GetTriggers - * @apiGroup Triggers - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccess {Number} count Number of triggers. - * @apiSuccess {Object[]} rows Triggers' list. - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 200 OK - * { - * "count": 2, - * "rows": [{ - * "id": 1 - * "name": "trigger1" - * "description": "my trigger description" - * ... - * },{ - * "id": 2 - * "name": "newtrigger" - * "description": null - * ... - * },...] - * } - */ -router.get('/', auth.isAuthenticated(), auth.hasModule([13], ['admin']), controller.index); -/** - * @api {get} /api/triggers/:id Get Trigger's details. - * @apiParam {Number} id Trigger's unique ID. - * @apiVersion 0.0.140 - * @apiName GetTrigger - * @apiGroup Triggers - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccess {Object} Trigger's details. - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 200 OK - * { - * "id":1, - * "All": [ - * { - * "field": "queue", - * "operator": "equals", - * "value": "Support" - * }, - * ... - * ], - * "Any": [ - * { - * "field": "lastevent", - * "operator": "equals", - * "value": "complete" - * }, - * { - * "field": "lastevent", - * "operator": "equals", - * "value": "abandoned" - * }, - * ... - * ], - * "Actions": [ - * { - * "action": "contactManager", - * "data1": "", - * "data2": "", - * "data3": "", - * "data4": "", - * "data5": "" - * }, - * ... - * ], - * "channel": "voice", - * "status": false, - * "name": "my trigger", - * "description": "my demo trigger", - * ... - * } - */ -router.get('/:id', auth.isAuthenticated(), auth.hasModule([13], ['admin']), controller.show); -/** - * @api {post} /api/triggers/ Create a new trigger. - * @apiParam (body) {String} name Trigger's name. - * @apiParam (body) {String} [description] Trigger's description. - * @apiParam (body) {Boolean} status Trigger's status (active/inactive). - * @apiParam (body) {String} channel Trigger's channel. - * @apiParam (body) {conditions[]} All Trigger's conditions, all of them must be met. - * @apiParam (body) {conditions[]} Any Trigger's conditions, at least one of them must be met. - * @apiParam (body) {actions[]} Actions Trigger's actions. - * - * @apiParam (Conditions) {string} field Condition field. - * @apiParam (Conditions) {string} operator Condition operator, to compare field and value. - * @apiParam (Conditions) {string} value The value to compare the condition field with. - * - * @apiParam (Actions) {string} action Trigger action. - * @apiParam (Actions) {string} data1 Action data. - * @apiParam (Actions) {string} data2 Action data. - * @apiParam (Actions) {string} data3 Action data. - * @apiParam (Actions) {string} data4 Action data. - * @apiParam (Actions) {string} data5 Action data. - * - * @apiVersion 0.0.140 - * @apiName CreateTrigger - * @apiGroup Triggers - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 201 Created - * { - * "id":1, - * "All": [ - * { - * "field": "queue", - * "operator": "equals", - * "value": "Support" - * }, - * ... - * ], - * "Any": [ - * { - * "field": "lastevent", - * "operator": "equals", - * "value": "complete" - * }, - * { - * "field": "lastevent", - * "operator": "equals", - * "value": "abandoned" - * }, - * ... - * ], - * "Actions": [ - * { - * "action": "contactManager", - * "data1": "", - * "data2": "", - * "data3": "", - * "data4": "", - * "data5": "" - * }, - * ... - * ], - * "channel": "voice", - * "status": false, - * "name": "my trigger", - * "description": "my demo trigger", - * ... - * } - */ -router.post('/', auth.isAuthenticated(), auth.hasModule([13], ['admin']), controller.create); -/** - * @api {put} /api/triggers/:id Update an existing trigger. - * @apiParam {Number} id Trigger's unique ID. - * - * @apiParam (body) {String} name Trigger's name. - * @apiParam (body) {String} [description] Trigger's description. - * @apiParam (body) {Boolean} status Trigger's status (active/inactive). - * @apiParam (body) {String} channel Trigger's channel. - * @apiParam (body) {conditions[]} All Trigger's conditions, all of them must be met. - * @apiParam (body) {conditions[]} Any Trigger's conditions, at least one of them must be met. - * @apiParam (body) {actions[]} Actions Trigger's actions. - * - * @apiParam (Conditions) {string} field Condition field. - * @apiParam (Conditions) {string} operator Condition operator, to compare field and value. - * @apiParam (Conditions) {string} value The value to compare the condition field with. - * - * @apiParam (Actions) {string} action Trigger action. - * @apiParam (Actions) {string} data1 Action data. - * @apiParam (Actions) {string} data2 Action data. - * @apiParam (Actions) {string} data3 Action data. - * @apiParam (Actions) {string} data4 Action data. - * @apiParam (Actions) {string} data5 Action data. - * - * @apiVersion 0.0.140 - * @apiName UpdateTrigger - * @apiGroup Triggers - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 200 OK - */ -router.put('/:id', auth.isAuthenticated(), auth.hasModule([13], ['admin']), controller.update); -/** - * @api {delete} /api/triggers/:id Delete a trigger. - * - * @apiParam {Number} id Trigger's unique ID. - * - * @apiVersion 0.0.140 - * @apiName DeleteTrigger - * @apiGroup Triggers - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 204 No Content - */ -router.delete('/:id', auth.isAuthenticated(), auth.hasModule([13], ['admin']), controller.destroy); -/** - * @api {delete} /api/triggers/ Bulk Delete triggers. - * - * @apiParam (Query) {Number[]} ids Triggers' unique ID array. - * - * @apiVersion 0.0.140 - * @apiName BulkDeleteTriggers - * @apiGroup Triggers - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 204 No Content - */ -router.delete('/', auth.isAuthenticated(), auth.hasModule([13], ['admin']), controller.bulkDestroy); - -module.exports = router; +var _0x76b7=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x74\x72\x69\x67\x67\x65\x72\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0x76b7[0];var express=require(_0x76b7[1]);var controller=require(_0x76b7[2]);var auth=require(_0x76b7[3]);var router=express.Router();router[_0x76b7[9]](_0x76b7[4],auth[_0x76b7[5]](),auth[_0x76b7[7]]([13],[_0x76b7[6]]),controller[_0x76b7[8]]);router[_0x76b7[9]](_0x76b7[10],auth[_0x76b7[5]](),auth[_0x76b7[7]]([13],[_0x76b7[6]]),controller[_0x76b7[11]]);router[_0x76b7[13]](_0x76b7[4],auth[_0x76b7[5]](),auth[_0x76b7[7]]([13],[_0x76b7[6]]),controller[_0x76b7[12]]);router[_0x76b7[15]](_0x76b7[10],auth[_0x76b7[5]](),auth[_0x76b7[7]]([13],[_0x76b7[6]]),controller[_0x76b7[14]]);router[_0x76b7[17]](_0x76b7[10],auth[_0x76b7[5]](),auth[_0x76b7[7]]([13],[_0x76b7[6]]),controller[_0x76b7[16]]);router[_0x76b7[17]](_0x76b7[4],auth[_0x76b7[5]](),auth[_0x76b7[7]]([13],[_0x76b7[6]]),controller[_0x76b7[18]]);module[_0x76b7[19]]= router \ No newline at end of file diff --git a/server/api/trigger/trigger.controller.js b/server/api/trigger/trigger.controller.js index dbb3e29..f35b0f1 100644 --- a/server/api/trigger/trigger.controller.js +++ b/server/api/trigger/trigger.controller.js @@ -1,216 +1 @@ -'use strict'; - -var _ = require('lodash'); -var util = require('util'); -var Util = require('../../config/util'); -var sequelize = require('../../models').sequelize; - -var Trigger = require('../../models').Trigger; -var ToolsCondition = require('../../models').ToolsCondition; -var ToolsAction = require('../../models').ToolsAction; - -// Get list of agents -exports.index = function(req, res, next) { - return Trigger - .scope('all') - .findAndCountAll(_.merge(Util.getQuery(req.query), { - distinct: true - })) - .then(function(result) { - return res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get a single Trigger -exports.show = function(req, res) { - return Trigger - .scope('all') - .findById(req.params.id) - .then(function(trigger) { - if (!trigger) { - return res.sendStatus(404); - } - return res.status(200).send(trigger); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Creates a new Trigger in the DB. -exports.create = function(req, res) { - return Trigger - .create(req.body, { - include: [{ - model: ToolsCondition, - as: 'All' - }, { - model: ToolsCondition, - as: 'Any' - }, { - model: ToolsAction, - as: 'Actions' - }], - newTrigger: req.body - }) - .then(function(trigger) { - return res.status(201).send(trigger); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Updates an existing Trigger in the DB. -exports.update = function(req, res, next) { - var _trigger; - if (req.body.id) { - delete req.body.id; - } - // return sequelize.transaction(function(t) { - return Trigger - .findById(req.params.id) - .then(function(trigger) { - _trigger = trigger; - if (req.body.Any) { - return ToolsCondition - .destroy({ - where: { - TriggerAnyId: req.params.id - } - // , - // transaction: t - }); - } - return; - }) - .then(function() { - if (req.body.Any && Array.isArray(req.body.Any) && req.body.Any.length) { - _.forEach(req.body.Any, function(elem) { - elem.TriggerAnyId = req.params.id; - }); - return ToolsCondition - .bulkCreate(req.body.Any - // , { - // transaction: t - // } - ); - } - return; - }) - .then(function() { - if (req.body.All) { - return ToolsCondition - .destroy({ - where: { - TriggerAllId: req.params.id - } - // , - // transaction: t - }); - } - return; - }) - .then(function() { - if (req.body.All && Array.isArray(req.body.All) && req.body.All.length) { - _.forEach(req.body.All, function(elem) { - elem.TriggerAllId = req.params.id; - }); - return ToolsCondition - .bulkCreate(req.body.All - // , { - // transaction: t - // } - ); - } - return; - }) - .then(function() { - if (req.body.Actions) { - return ToolsAction - .destroy({ - where: { - TriggerId: req.params.id - } - // , - // transaction: t - }); - } - return; - }) - .then(function() { - if (req.body.Actions && Array.isArray(req.body.Actions) && req.body.Actions.length) { - _.forEach(req.body.Actions, function(elem) { - elem.TriggerId = req.params.id; - }); - return ToolsAction - .bulkCreate(req.body.Actions - // , { - // transaction: t - // } - ); - } - return; - }) - .then(function() { - var updated = _.merge(_trigger, req.body); - return updated - .save( - // { - // transaction: t - // } - ); - // }); - }) - .then(function() { - return res.sendStatus(200); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -// Deletes a Trigger from the DB. -exports.destroy = function(req, res) { - return Trigger - .findById(req.params.id) - .then(function(Trigger) { - if (!Trigger) { - return res.sendStatus(404); - } - Trigger.destroy() - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.bulkDestroy = function(req, res) { - return Trigger - .destroy({ - where: { - id: req.query.ids - }, - individualHooks: true - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0x7c57=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x75\x74\x69\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x54\x72\x69\x67\x67\x65\x72","\x54\x6F\x6F\x6C\x73\x43\x6F\x6E\x64\x69\x74\x69\x6F\x6E","\x54\x6F\x6F\x6C\x73\x41\x63\x74\x69\x6F\x6E","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x6D\x65\x72\x67\x65","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x61\x6C\x6C","\x73\x63\x6F\x70\x65","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x41\x6C\x6C","\x41\x6E\x79","\x41\x63\x74\x69\x6F\x6E\x73","\x75\x70\x64\x61\x74\x65","\x6C\x6F\x67","\x73\x61\x76\x65","\x69\x73\x41\x72\x72\x61\x79","\x6C\x65\x6E\x67\x74\x68","\x54\x72\x69\x67\x67\x65\x72\x49\x64","\x66\x6F\x72\x45\x61\x63\x68","\x62\x75\x6C\x6B\x43\x72\x65\x61\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x54\x72\x69\x67\x67\x65\x72\x41\x6C\x6C\x49\x64","\x54\x72\x69\x67\x67\x65\x72\x41\x6E\x79\x49\x64","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73"];_0x7c57[0];var _=require(_0x7c57[1]);var util=require(_0x7c57[2]);var Util=require(_0x7c57[3]);var sequelize=require(_0x7c57[5])[_0x7c57[4]];var Trigger=require(_0x7c57[5])[_0x7c57[6]];var ToolsCondition=require(_0x7c57[5])[_0x7c57[7]];var ToolsAction=require(_0x7c57[5])[_0x7c57[8]];exports[_0x7c57[9]]= function(_0x3499x8,_0x3499x9,_0x3499xa){return Trigger[_0x7c57[19]](_0x7c57[18])[_0x7c57[17]](_[_0x7c57[16]](Util[_0x7c57[15]](_0x3499x8[_0x7c57[14]]),{distinct:true}))[_0x7c57[13]](function(_0x3499xc){return _0x3499x9[_0x7c57[12]](200)[_0x7c57[11]](_0x3499xc)})[_0x7c57[10]](function(_0x3499xb){return handleError(_0x3499x9,_0x3499xb)})};exports[_0x7c57[20]]= function(_0x3499x8,_0x3499x9){return Trigger[_0x7c57[19]](_0x7c57[18])[_0x7c57[24]](_0x3499x8[_0x7c57[23]][_0x7c57[22]])[_0x7c57[13]](function(_0x3499xd){if(!_0x3499xd){return _0x3499x9[_0x7c57[21]](404)};return _0x3499x9[_0x7c57[12]](200)[_0x7c57[11]](_0x3499xd)})[_0x7c57[10]](function(_0x3499xb){return handleError(_0x3499x9,_0x3499xb)})};exports[_0x7c57[25]]= function(_0x3499x8,_0x3499x9){return Trigger[_0x7c57[25]](_0x3499x8[_0x7c57[26]],{include:[{model:ToolsCondition,as:_0x7c57[27]},{model:ToolsCondition,as:_0x7c57[28]},{model:ToolsAction,as:_0x7c57[29]}],newTrigger:_0x3499x8[_0x7c57[26]]})[_0x7c57[13]](function(_0x3499xd){return _0x3499x9[_0x7c57[12]](201)[_0x7c57[11]](_0x3499xd)})[_0x7c57[10]](function(_0x3499xb){return handleError(_0x3499x9,_0x3499xb)})};exports[_0x7c57[30]]= function(_0x3499x8,_0x3499x9,_0x3499xa){var _0x3499xe;if(_0x3499x8[_0x7c57[26]][_0x7c57[22]]){delete _0x3499x8[_0x7c57[26]][_0x7c57[22]]};return Trigger[_0x7c57[24]](_0x3499x8[_0x7c57[23]][_0x7c57[22]])[_0x7c57[13]](function(_0x3499xd){_0x3499xe= _0x3499xd;if(_0x3499x8[_0x7c57[26]][_0x7c57[28]]){return ToolsCondition[_0x7c57[38]]({where:{TriggerAnyId:_0x3499x8[_0x7c57[23]][_0x7c57[22]]}})};return})[_0x7c57[13]](function(){if(_0x3499x8[_0x7c57[26]][_0x7c57[28]]&& Array[_0x7c57[33]](_0x3499x8[_0x7c57[26]].Any)&& _0x3499x8[_0x7c57[26]][_0x7c57[28]][_0x7c57[34]]){_[_0x7c57[36]](_0x3499x8[_0x7c57[26]].Any,function(_0x3499x10){_0x3499x10[_0x7c57[40]]= _0x3499x8[_0x7c57[23]][_0x7c57[22]]});return ToolsCondition[_0x7c57[37]](_0x3499x8[_0x7c57[26]].Any)};return})[_0x7c57[13]](function(){if(_0x3499x8[_0x7c57[26]][_0x7c57[27]]){return ToolsCondition[_0x7c57[38]]({where:{TriggerAllId:_0x3499x8[_0x7c57[23]][_0x7c57[22]]}})};return})[_0x7c57[13]](function(){if(_0x3499x8[_0x7c57[26]][_0x7c57[27]]&& Array[_0x7c57[33]](_0x3499x8[_0x7c57[26]].All)&& _0x3499x8[_0x7c57[26]][_0x7c57[27]][_0x7c57[34]]){_[_0x7c57[36]](_0x3499x8[_0x7c57[26]].All,function(_0x3499x10){_0x3499x10[_0x7c57[39]]= _0x3499x8[_0x7c57[23]][_0x7c57[22]]});return ToolsCondition[_0x7c57[37]](_0x3499x8[_0x7c57[26]].All)};return})[_0x7c57[13]](function(){if(_0x3499x8[_0x7c57[26]][_0x7c57[29]]){return ToolsAction[_0x7c57[38]]({where:{TriggerId:_0x3499x8[_0x7c57[23]][_0x7c57[22]]}})};return})[_0x7c57[13]](function(){if(_0x3499x8[_0x7c57[26]][_0x7c57[29]]&& Array[_0x7c57[33]](_0x3499x8[_0x7c57[26]].Actions)&& _0x3499x8[_0x7c57[26]][_0x7c57[29]][_0x7c57[34]]){_[_0x7c57[36]](_0x3499x8[_0x7c57[26]].Actions,function(_0x3499x10){_0x3499x10[_0x7c57[35]]= _0x3499x8[_0x7c57[23]][_0x7c57[22]]});return ToolsAction[_0x7c57[37]](_0x3499x8[_0x7c57[26]].Actions)};return})[_0x7c57[13]](function(){var _0x3499xf=_[_0x7c57[16]](_0x3499xe,_0x3499x8[_0x7c57[26]]);return _0x3499xf[_0x7c57[32]]()})[_0x7c57[13]](function(){return _0x3499x9[_0x7c57[21]](200)})[_0x7c57[10]](function(_0x3499xb){console[_0x7c57[31]](_0x3499xb);return handleError(_0x3499x9,_0x3499xb)})};exports[_0x7c57[38]]= function(_0x3499x8,_0x3499x9){return Trigger[_0x7c57[24]](_0x3499x8[_0x7c57[23]][_0x7c57[22]])[_0x7c57[13]](function(Trigger){if(!Trigger){return _0x3499x9[_0x7c57[21]](404)};Trigger[_0x7c57[38]]()[_0x7c57[13]](function(){return _0x3499x9[_0x7c57[21]](204)})[_0x7c57[10]](function(_0x3499xb){return handleError(_0x3499x9,_0x3499xb)})})[_0x7c57[10]](function(_0x3499xb){return handleError(_0x3499x9,_0x3499xb)})};exports[_0x7c57[41]]= function(_0x3499x8,_0x3499x9){return Trigger[_0x7c57[38]]({where:{id:_0x3499x8[_0x7c57[14]][_0x7c57[42]]},individualHooks:true})[_0x7c57[13]](function(){return _0x3499x9[_0x7c57[21]](204)})[_0x7c57[10]](function(_0x3499xb){return handleError(_0x3499x9,_0x3499xb)})};function handleError(_0x3499x9,_0x3499xb){return _0x3499x9[_0x7c57[12]](500)[_0x7c57[11]](_0x3499xb)} \ No newline at end of file diff --git a/server/api/trigger/trigger.events.js b/server/api/trigger/trigger.events.js index 5978c45..abc4baa 100644 --- a/server/api/trigger/trigger.events.js +++ b/server/api/trigger/trigger.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const Trigger = require('../../models').Trigger; - -var TriggerEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -TriggerEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - Trigger.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - TriggerEvents.emit(event + ':' + doc._id, doc); - TriggerEvents.emit(event, doc); - done(null); - } -} - -module.exports = TriggerEvents; +var _0xad58=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x54\x72\x69\x67\x67\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xad58[0];const EventEmitter=require(_0xad58[1]);const Trigger=require(_0xad58[3])[_0xad58[2]];var TriggerEvents= new EventEmitter();TriggerEvents[_0xad58[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xad58[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xad58[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xad58[6]};for(var e in events){var event=events[e];Trigger[_0xad58[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x29f4x8,_0x29f4x9,_0x29f4xa){TriggerEvents[_0xad58[10]](event+ _0xad58[8]+ _0x29f4x8[_0xad58[9]],_0x29f4x8);TriggerEvents[_0xad58[10]](event,_0x29f4x8);_0x29f4xa(null)}}module[_0xad58[11]]= TriggerEvents \ No newline at end of file diff --git a/server/api/trigger/trigger.socket.js b/server/api/trigger/trigger.socket.js index e83aa13..b0ae23c 100644 --- a/server/api/trigger/trigger.socket.js +++ b/server/api/trigger/trigger.socket.js @@ -1,32 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const TriggerEvents = require('./trigger.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('trigger:' + event, socket); - - TriggerEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - TriggerEvents.removeListener(event, listener); - }; -} +var _0x889c=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x74\x72\x69\x67\x67\x65\x72\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x74\x72\x69\x67\x67\x65\x72\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x889c[0];const TriggerEvents=require(_0x889c[1]);var events=[_0x889c[2],_0x889c[3]];exports[_0x889c[4]]= function(_0x35f3x3){for(var _0x35f3x4=0,_0x35f3x5=events[_0x889c[5]];_0x35f3x4< _0x35f3x5;_0x35f3x4++){var _0x35f3x6=events[_0x35f3x4];var _0x35f3x7=createListener(_0x889c[6]+ _0x35f3x6,_0x35f3x3);TriggerEvents[_0x889c[7]](_0x35f3x6,_0x35f3x7);_0x35f3x3[_0x889c[7]](_0x889c[8],removeListener(_0x35f3x6,_0x35f3x7))}};function createListener(_0x35f3x6,_0x35f3x3){return function(_0x35f3x9){_0x35f3x3[_0x889c[9]](_0x35f3x6,_0x35f3x9)}}function removeListener(_0x35f3x6,_0x35f3x7){return function(){TriggerEvents[_0x889c[10]](_0x35f3x6,_0x35f3x7)}} \ No newline at end of file diff --git a/server/api/trunk/index.js b/server/api/trunk/index.js index fda6e40..e646616 100644 --- a/server/api/trunk/index.js +++ b/server/api/trunk/index.js @@ -1,226 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./trunk.controller'); -var config = require('../../config/environment'); -var auth = require('../../auth/auth.service'); - -var router = express.Router(); - -/** - * @api {get} /api/trunks/ Get trunks' list. - * - * @apiParam (Query) {Number} [offset] Pagination offset. - * @apiParam (Query) {Number} [limit] Pagination limit. - * - * @apiVersion 0.0.140 - * @apiName GetTrunks - * @apiGroup Trunks - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccess {Number} count Number of trunks. - * @apiSuccess {Object[]} rows Get trunks list. - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 200 OK - * { - * "count": 1, - * "rows": [{ - * "name": "DemoTrunk" - * "type": "friend" - * "context": "from-sip" - * "callingpres": "ALLOWED_NOT_SCREENED" - * "permit": "0.0.0.0/0.0.0.0" - * "deny": "0.0.0.0/0.0.0.0" - * ... - * }] - * } - */ -router.get('/', auth.isAuthenticated(), auth.hasModule([13, 7, 10], ['admin']), controller.index); - -/** - * @api {get} /api/trunks/:id Get trunk's details. - * @apiParam {Number} id Trunk unique ID. - * @apiVersion 0.0.140 - * @apiName GetTrunk - * @apiGroup Trunks - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 200 OK - * { - * "name": "DemoTrunk" - * "type": "friend" - * "context": "from-sip" - * "callingpres": "ALLOWED_NOT_SCREENED" - * "permit": "0.0.0.0/0.0.0.0" - * "deny": "0.0.0.0/0.0.0.0" - * ... - * } - */ -router.get('/:id', auth.isAuthenticated(), auth.hasModule([13], ['admin']), controller.show); - -/** - * @api {post} /api/trunks/ Create trunk. - * - * @apiParam (Body) {String} name Trunk name. - * @apiParam (Body) {String="friend", "user", "peer"} [type="friend"] Trunk type. - * @apiParam (Body) {String} [context="from-sip"] Trunk context. - * @apiParam (Body) {String="ALLOWED_NOT_SCREENED", "ALLOWED_PASSED_SCREEN", "ALLOWED_FAILED_SCREEN", "ALLOWED", "PROHIB_NOT_SCREENED", "PROHIB_PASSED_SCREEN", "PROHIB_FAILED_SCREEN", "PROHIB"} [callinprogress="ALLOWED_NOT_SCREENED"] Trunk context. - * @apiParam (Body) {String} [permit] Trunk permit. - * @apiParam (Body) {String} [deny] Trunk deny. - * @apiParam (Body) {String} secret Trunk secret. - * @apiParam (Body) {String="rfc2833", "info", "shortinfo", "inband", "auto"} [dtmfmode="rfc2833"] Trunk internal number. - * @apiParam (Body) {String="tcp", "udp", "tcp,udp"} [transport="udp"] Trunk SIP transport. - * @apiParam (Body) {String="alaw", "ulaw", "gsm"} [allow="alaw;ulaw;gsm"] Trunk SIP codecs. - * @apiParam (Body) {String="yes", "no", "nonat", "update", "outgoing"} [directmedia="no"] Trunk directmedia. - * @apiParam (Body) {String="yes", "no"} [directrtpsetup="no"] Trunk directrtpsetup. - * @apiParam (Body) {String} [nat="force_rport,comedia"] Trunk mobile phone. - * @apiParam (Body) {String} [disallow="all"] Trunk address. - * @apiParam (Body) {String} [allow="alaw;ulaw;gsm"] Trunk allow codecs. - * @apiParam (Body) {String} [callerid='"" <>'] Trunk callerid. - * @apiParam (Body) {String="yes"} [callcounter="yes, no"] Trunk callcounter. - * @apiParam (Body) {String="no"} [videosupport="yes, no"] Trunk video support. - * @apiParam (Body) {String="uas"} [session_refresher="uas, uac"] Trunk session refresher. - * @apiParam (Body) {String} [host="dynamic"] Trunk host. - * @apiParam (Body) {String="yes"} [qualify="yes,no"] Trunk qualify. - * @apiParam (Body) {String} [insecure="port,invite"] Trunk insicure. - * @apiParam (Body) {String="no"} [sendrpid="yes,no"] Trunk sendrpid. - * @apiParam (Body) {String="no"} [encryption="yes,no"] Trunk encryption. - * @apiParam (Body) {String="no"} [usereqphone="yes,no"] Trunk usereqphone. - * @apiParam (Body) {String="no"} [canreinvite="yes,no"] Trunk can reinvite. - * - * @apiVersion 0.0.140 - * @apiName CreateTrunk - * @apiGroup Trunks - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 201 Created - * { - * "id": 1 - * "name": "john.doe" - * "email": "john.doe@xcally.com" - * "internal": 1001 - * "fullname": "John Doe" - * ... - * } - */ -router.post('/', auth.isAuthenticated(), auth.hasModule([13], ['admin']), controller.create); - -/** - * @api {delete} /api/trunks/:id Update trunk's details. - * - * @apiParam (Params) {Number} id Trunk unique ID. - * @apiParam (Body) {String} name Trunk name. - * @apiParam (Body) {String="friend", "user", "peer"} [type="friend"] Trunk type. - * @apiParam (Body) {String} [context="from-sip"] Trunk context. - * @apiParam (Body) {String="ALLOWED_NOT_SCREENED", "ALLOWED_PASSED_SCREEN", "ALLOWED_FAILED_SCREEN", "ALLOWED", "PROHIB_NOT_SCREENED", "PROHIB_PASSED_SCREEN", "PROHIB_FAILED_SCREEN", "PROHIB"} [callinprogress="ALLOWED_NOT_SCREENED"] Trunk context. - * @apiParam (Body) {String} [permit] Trunk permit. - * @apiParam (Body) {String} [deny] Trunk deny. - * @apiParam (Body) {String} secret Trunk secret. - * @apiParam (Body) {String="rfc2833", "info", "shortinfo", "inband", "auto"} [dtmfmode="rfc2833"] Trunk internal number. - * @apiParam (Body) {String="tcp", "udp", "tcp,udp"} [transport="udp"] Trunk SIP transport. - * @apiParam (Body) {String="alaw", "ulaw", "gsm"} [allow="alaw;ulaw;gsm"] Trunk SIP codecs. - * @apiParam (Body) {String="yes", "no", "nonat", "update", "outgoing"} [directmedia="no"] Trunk directmedia. - * @apiParam (Body) {String="yes", "no"} [directrtpsetup="no"] Trunk directrtpsetup. - * @apiParam (Body) {String} [nat="force_rport,comedia"] Trunk mobile phone. - * @apiParam (Body) {String} [disallow="all"] Trunk address. - * @apiParam (Body) {String} [allow="alaw;ulaw;gsm"] Trunk allow codecs. - * @apiParam (Body) {String} [callerid='"" <>'] Trunk callerid. - * @apiParam (Body) {String="yes"} [callcounter="yes, no"] Trunk callcounter. - * @apiParam (Body) {String="no"} [videosupport="yes, no"] Trunk video support. - * @apiParam (Body) {String="uas"} [session_refresher="uas, uac"] Trunk session refresher. - * @apiParam (Body) {String} [host="dynamic"] Trunk host. - * @apiParam (Body) {String="yes"} [qualify="yes,no"] Trunk qualify. - * @apiParam (Body) {String} [insecure="port,invite"] Trunk insicure. - * @apiParam (Body) {String="no"} [sendrpid="yes,no"] Trunk sendrpid. - * @apiParam (Body) {String="no"} [encryption="yes,no"] Trunk encryption. - * @apiParam (Body) {String="no"} [usereqphone="yes,no"] Trunk usereqphone. - * @apiParam (Body) {String="no"} [canreinvite="yes,no"] Trunk can reinvite. - * - * @apiVersion 0.0.140 - * @apiName UpdateTrunk - * @apiGroup Trunks - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 200 OK - * { - * "id": 1 - * "name": "john.doe" - * "email": "john.doe@xcally.com" - * "internal": 1001 - * "fullname": "John Doe" - * ... - * } - */ -router.put('/:id', auth.isAuthenticated(), auth.hasModule([13], ['admin']), controller.update); - -/** - * @api {delete} /api/trunks/ Bulk Delete trunks. - * - * @apiParam (Query) {Number[]} ids Trunks unique ID array. - * - * @apiVersion 0.0.140 - * @apiName BulkDeleteTrunks - * @apiGroup Trunks - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 204 No Content - */ -router.delete('/', auth.isAuthenticated(), auth.hasModule([13], ['admin']), controller.bulkDestroy); - -/** - * @api {delete} /api/trunks/:id Delete a trunk. - * - * @apiParam {Number} id Trunk unique ID. - * - * @apiVersion 0.0.140 - * @apiName DeleteTrunk - * @apiGroup Trunks - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 204 No Content - */ -router.delete('/:id', auth.isAuthenticated(), auth.hasModule([13], ['admin']), controller.destroy); - -module.exports = router; +var _0x109c=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x74\x72\x75\x6E\x6B\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0x109c[0];var express=require(_0x109c[1]);var controller=require(_0x109c[2]);var config=require(_0x109c[3]);var auth=require(_0x109c[4]);var router=express.Router();router[_0x109c[10]](_0x109c[5],auth[_0x109c[6]](),auth[_0x109c[8]]([13,7,10],[_0x109c[7]]),controller[_0x109c[9]]);router[_0x109c[10]](_0x109c[11],auth[_0x109c[6]](),auth[_0x109c[8]]([13],[_0x109c[7]]),controller[_0x109c[12]]);router[_0x109c[14]](_0x109c[5],auth[_0x109c[6]](),auth[_0x109c[8]]([13],[_0x109c[7]]),controller[_0x109c[13]]);router[_0x109c[16]](_0x109c[11],auth[_0x109c[6]](),auth[_0x109c[8]]([13],[_0x109c[7]]),controller[_0x109c[15]]);router[_0x109c[18]](_0x109c[5],auth[_0x109c[6]](),auth[_0x109c[8]]([13],[_0x109c[7]]),controller[_0x109c[17]]);router[_0x109c[18]](_0x109c[11],auth[_0x109c[6]](),auth[_0x109c[8]]([13],[_0x109c[7]]),controller[_0x109c[19]]);module[_0x109c[20]]= router \ No newline at end of file diff --git a/server/api/trunk/trunk.controller.js b/server/api/trunk/trunk.controller.js index 9ee3289..6b81f7b 100644 --- a/server/api/trunk/trunk.controller.js +++ b/server/api/trunk/trunk.controller.js @@ -1,111 +1 @@ -'use strict'; - -var _ = require('lodash'); -var Trunk = require('../../models').Trunk; -var VoiceExtension = require('../../models').VoiceExtension; -var sequelize = require('../../models').sequelize; -var util = require('util'); -var Util = require('../../config/util'); - -// Get list of agents -exports.index = function(req, res, next) { - return Trunk - .findAndCountAll(Util.getQuery(req.query)) - .then(function(result) { - res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get a single trunk -exports.show = function(req, res) { - return Trunk - .findById(req.params.id) - .then(function(trunk) { - if (!trunk) { - return res.sendStatus(404); - } - return res.send(trunk); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Creates a new trunk in the DB. -exports.create = function(req, res) { - return Trunk - .create(req.body) - .then(function(trunk) { - return res.status(201).send(trunk); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - - return Trunk - .findById(req.params.id) - .then(function(trunk) { - if (!trunk) { - return res.sendStatus(404); - } - var updated = _.merge(trunk, req.body); - return updated - .save(); - }) - .then(function(trunk) { - return res.status(200).send(trunk); - }) - .catch(function(err) { - console.log('trunk update error', err); - return handleError(res, err); - }); -}; - -// Deletes a trunk from the DB. -exports.destroy = function(req, res) { - return Trunk - .findById(req.params.id) - .then(function(trunk) { - if (!trunk) { - return res.sendStatus(404); - } - return trunk - .destroy(); - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes multiple trunk from the DB. -exports.bulkDestroy = function(req, res) { - return Trunk - .destroy({ - where: { - id: req.query.ids - }, - individualHooks: true - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0x5182=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x54\x72\x75\x6E\x6B","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x56\x6F\x69\x63\x65\x45\x78\x74\x65\x6E\x73\x69\x6F\x6E","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x75\x74\x69\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x74\x72\x75\x6E\x6B\x20\x75\x70\x64\x61\x74\x65\x20\x65\x72\x72\x6F\x72","\x6C\x6F\x67","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x64\x65\x73\x74\x72\x6F\x79","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73"];_0x5182[0];var _=require(_0x5182[1]);var Trunk=require(_0x5182[3])[_0x5182[2]];var VoiceExtension=require(_0x5182[3])[_0x5182[4]];var sequelize=require(_0x5182[3])[_0x5182[5]];var util=require(_0x5182[6]);var Util=require(_0x5182[7]);exports[_0x5182[8]]= function(_0x2ebbx7,_0x2ebbx8,_0x2ebbx9){return Trunk[_0x5182[15]](Util[_0x5182[14]](_0x2ebbx7[_0x5182[13]]))[_0x5182[12]](function(_0x2ebbxb){_0x2ebbx8[_0x5182[11]](200)[_0x5182[10]](_0x2ebbxb)})[_0x5182[9]](function(_0x2ebbxa){return handleError(_0x2ebbx8,_0x2ebbxa)})};exports[_0x5182[16]]= function(_0x2ebbx7,_0x2ebbx8){return Trunk[_0x5182[20]](_0x2ebbx7[_0x5182[19]][_0x5182[18]])[_0x5182[12]](function(_0x2ebbxc){if(!_0x2ebbxc){return _0x2ebbx8[_0x5182[17]](404)};return _0x2ebbx8[_0x5182[10]](_0x2ebbxc)})[_0x5182[9]](function(_0x2ebbxa){return handleError(_0x2ebbx8,_0x2ebbxa)})};exports[_0x5182[21]]= function(_0x2ebbx7,_0x2ebbx8){return Trunk[_0x5182[21]](_0x2ebbx7[_0x5182[22]])[_0x5182[12]](function(_0x2ebbxc){return _0x2ebbx8[_0x5182[11]](201)[_0x5182[10]](_0x2ebbxc)})[_0x5182[9]](function(_0x2ebbxa){return handleError(_0x2ebbx8,_0x2ebbxa)})};exports[_0x5182[23]]= function(_0x2ebbx7,_0x2ebbx8){if(_0x2ebbx7[_0x5182[22]][_0x5182[18]]){delete _0x2ebbx7[_0x5182[22]][_0x5182[18]]};return Trunk[_0x5182[20]](_0x2ebbx7[_0x5182[19]][_0x5182[18]])[_0x5182[12]](function(_0x2ebbxc){if(!_0x2ebbxc){return _0x2ebbx8[_0x5182[17]](404)};var _0x2ebbxd=_[_0x5182[26]](_0x2ebbxc,_0x2ebbx7[_0x5182[22]]);return _0x2ebbxd[_0x5182[27]]()})[_0x5182[12]](function(_0x2ebbxc){return _0x2ebbx8[_0x5182[11]](200)[_0x5182[10]](_0x2ebbxc)})[_0x5182[9]](function(_0x2ebbxa){console[_0x5182[25]](_0x5182[24],_0x2ebbxa);return handleError(_0x2ebbx8,_0x2ebbxa)})};exports[_0x5182[28]]= function(_0x2ebbx7,_0x2ebbx8){return Trunk[_0x5182[20]](_0x2ebbx7[_0x5182[19]][_0x5182[18]])[_0x5182[12]](function(_0x2ebbxc){if(!_0x2ebbxc){return _0x2ebbx8[_0x5182[17]](404)};return _0x2ebbxc[_0x5182[28]]()})[_0x5182[12]](function(){return _0x2ebbx8[_0x5182[17]](204)})[_0x5182[9]](function(_0x2ebbxa){return handleError(_0x2ebbx8,_0x2ebbxa)})};exports[_0x5182[29]]= function(_0x2ebbx7,_0x2ebbx8){return Trunk[_0x5182[28]]({where:{id:_0x2ebbx7[_0x5182[13]][_0x5182[30]]},individualHooks:true})[_0x5182[12]](function(){return _0x2ebbx8[_0x5182[17]](204)})[_0x5182[9]](function(_0x2ebbxa){return handleError(_0x2ebbx8,_0x2ebbxa)})};function handleError(_0x2ebbx8,_0x2ebbxa){return _0x2ebbx8[_0x5182[11]](500)[_0x5182[10]](_0x2ebbxa)} \ No newline at end of file diff --git a/server/api/trunk/trunk.events.js b/server/api/trunk/trunk.events.js index 5ceb1a1..8eef459 100644 --- a/server/api/trunk/trunk.events.js +++ b/server/api/trunk/trunk.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const Trunk = require('../../models').Trunk; - -var TrunkEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -TrunkEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'update', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - Trunk.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - TrunkEvents.emit(event + ':' + doc._id, doc); - TrunkEvents.emit(event, doc); - done(null); - } -} - -module.exports = TrunkEvents; +var _0x58f7=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x54\x72\x75\x6E\x6B","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x75\x70\x64\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x58f7[0];const EventEmitter=require(_0x58f7[1]);const Trunk=require(_0x58f7[3])[_0x58f7[2]];var TrunkEvents= new EventEmitter();TrunkEvents[_0x58f7[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x58f7[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x58f7[6],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x58f7[7]};for(var e in events){var event=events[e];Trunk[_0x58f7[8]](e,emitEvent(event))};function emitEvent(event){return function(_0x2224x8,_0x2224x9,_0x2224xa){TrunkEvents[_0x58f7[11]](event+ _0x58f7[9]+ _0x2224x8[_0x58f7[10]],_0x2224x8);TrunkEvents[_0x58f7[11]](event,_0x2224x8);_0x2224xa(null)}}module[_0x58f7[12]]= TrunkEvents \ No newline at end of file diff --git a/server/api/trunk/trunk.socket.js b/server/api/trunk/trunk.socket.js index 5dda5a9..eae3b57 100644 --- a/server/api/trunk/trunk.socket.js +++ b/server/api/trunk/trunk.socket.js @@ -1,47 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const TrunkEvents = require('./trunk.events'); - -// Model events to emit -var events = ['save', 'update', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('trunk:' + event, socket); - - TrunkEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - switch (event) { - case 'trunk:save': - socket.emit(event, doc); - break; - case 'trunk:update': - if (socket.role !== 'trunk' && (doc.changed('status') || doc.changed('peerstatus'))) { - socket.emit(event, doc); - } - break; - case 'trunk:remove': - socket.emit(event, doc); - break; - - default: - - } - }; -} - -function removeListener(event, listener) { - return function() { - TrunkEvents.removeListener(event, listener); - }; -} +var _0x5ad6=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x74\x72\x75\x6E\x6B\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x75\x70\x64\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x74\x72\x75\x6E\x6B\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x74\x72\x75\x6E\x6B\x3A\x73\x61\x76\x65","\x72\x6F\x6C\x65","\x74\x72\x75\x6E\x6B","\x73\x74\x61\x74\x75\x73","\x63\x68\x61\x6E\x67\x65\x64","\x70\x65\x65\x72\x73\x74\x61\x74\x75\x73","\x74\x72\x75\x6E\x6B\x3A\x75\x70\x64\x61\x74\x65","\x74\x72\x75\x6E\x6B\x3A\x72\x65\x6D\x6F\x76\x65","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x5ad6[0];const TrunkEvents=require(_0x5ad6[1]);var events=[_0x5ad6[2],_0x5ad6[3],_0x5ad6[4]];exports[_0x5ad6[5]]= function(_0xfe82x3){for(var _0xfe82x4=0,_0xfe82x5=events[_0x5ad6[6]];_0xfe82x4< _0xfe82x5;_0xfe82x4++){var _0xfe82x6=events[_0xfe82x4];var _0xfe82x7=createListener(_0x5ad6[7]+ _0xfe82x6,_0xfe82x3);TrunkEvents[_0x5ad6[8]](_0xfe82x6,_0xfe82x7);_0xfe82x3[_0x5ad6[8]](_0x5ad6[9],removeListener(_0xfe82x6,_0xfe82x7))}};function createListener(_0xfe82x6,_0xfe82x3){return function(_0xfe82x9){switch(_0xfe82x6){case _0x5ad6[11]:_0xfe82x3[_0x5ad6[10]](_0xfe82x6,_0xfe82x9);break;case _0x5ad6[17]:if(_0xfe82x3[_0x5ad6[12]]!== _0x5ad6[13]&& (_0xfe82x9[_0x5ad6[15]](_0x5ad6[14])|| _0xfe82x9[_0x5ad6[15]](_0x5ad6[16]))){_0xfe82x3[_0x5ad6[10]](_0xfe82x6,_0xfe82x9)};break;case _0x5ad6[18]:_0xfe82x3[_0x5ad6[10]](_0xfe82x6,_0xfe82x9);break;default:}}}function removeListener(_0xfe82x6,_0xfe82x7){return function(){TrunkEvents[_0x5ad6[19]](_0xfe82x6,_0xfe82x7)}} \ No newline at end of file diff --git a/server/api/update/index.js b/server/api/update/index.js index 6c97808..af1be64 100644 --- a/server/api/update/index.js +++ b/server/api/update/index.js @@ -1,13 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./update.controller'); -var auth = require('../../auth/auth.service'); -var license = require('../../config/license/license.service'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), auth.hasRole('admin'), license.hasUpdate(), controller.index); -router.get('/pull', auth.isAuthenticated(), auth.hasRole('admin'), license.hasUpdate(), controller.pull); - -module.exports = router; +var _0x715b=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x75\x70\x64\x61\x74\x65\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x52\x6F\x6C\x65","\x68\x61\x73\x55\x70\x64\x61\x74\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x70\x75\x6C\x6C","\x70\x75\x6C\x6C","\x65\x78\x70\x6F\x72\x74\x73"];_0x715b[0];var express=require(_0x715b[1]);var controller=require(_0x715b[2]);var auth=require(_0x715b[3]);var license=require(_0x715b[4]);var router=express.Router();router[_0x715b[11]](_0x715b[5],auth[_0x715b[6]](),auth[_0x715b[8]](_0x715b[7]),license[_0x715b[9]](),controller[_0x715b[10]]);router[_0x715b[11]](_0x715b[12],auth[_0x715b[6]](),auth[_0x715b[8]](_0x715b[7]),license[_0x715b[9]](),controller[_0x715b[13]]);module[_0x715b[14]]= router \ No newline at end of file diff --git a/server/api/update/update.controller.js b/server/api/update/update.controller.js index c6da9ad..63bff87 100644 --- a/server/api/update/update.controller.js +++ b/server/api/update/update.controller.js @@ -1,48 +1 @@ -'use strict'; - -var _ = require('lodash'); -var path = require('path'); -var moment = require('moment'); -var config = require('../../config/environment'); - -var Git = require('simple-git')(path.join(config.root)); - -// Get list of updates -exports.index = function(req, res) { - return Git - .log(function(err, logs) { - if (err) { - return handleError(res, err); - } - - var rows = []; - for (var i = 0; i < 10 && i < logs.all.length; i++) { - rows.push({ - version: logs.all[i].message.split('|')[1] || 'unknown', - message: logs.all[i].message.split('|')[0], - createdAt: moment(logs.all[i].date).format("YYYY-MM-DD HH:mm:ss") - }); - } - - return res.status(200).send({ - rows: rows, - count: rows.length - }); - }); -}; - -// Get a single update -exports.pull = function(req, res) { - Git - .pull('origin', 'master', function(err, data) { - if (err) { - console.error('err', err); - } - }); - - return res.sendStatus(200).send(); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0xb08c=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x70\x61\x74\x68","\x6D\x6F\x6D\x65\x6E\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x72\x6F\x6F\x74","\x6A\x6F\x69\x6E","\x73\x69\x6D\x70\x6C\x65\x2D\x67\x69\x74","\x69\x6E\x64\x65\x78","\x6C\x65\x6E\x67\x74\x68","\x61\x6C\x6C","\x7C","\x73\x70\x6C\x69\x74","\x6D\x65\x73\x73\x61\x67\x65","\x75\x6E\x6B\x6E\x6F\x77\x6E","\x59\x59\x59\x59\x2D\x4D\x4D\x2D\x44\x44\x20\x48\x48\x3A\x6D\x6D\x3A\x73\x73","\x66\x6F\x72\x6D\x61\x74","\x64\x61\x74\x65","\x70\x75\x73\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x6C\x6F\x67","\x70\x75\x6C\x6C","\x6F\x72\x69\x67\x69\x6E","\x6D\x61\x73\x74\x65\x72","\x65\x72\x72","\x65\x72\x72\x6F\x72","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73"];_0xb08c[0];var _=require(_0xb08c[1]);var path=require(_0xb08c[2]);var moment=require(_0xb08c[3]);var config=require(_0xb08c[4]);var Git=require(_0xb08c[7])(path[_0xb08c[6]](config[_0xb08c[5]]));exports[_0xb08c[8]]= function(_0xf4bbx6,_0xf4bbx7){return Git[_0xb08c[21]](function(_0xf4bbx8,_0xf4bbx9){if(_0xf4bbx8){return handleError(_0xf4bbx7,_0xf4bbx8)};var _0xf4bbxa=[];for(var _0xf4bbxb=0;_0xf4bbxb< 10&& _0xf4bbxb< _0xf4bbx9[_0xb08c[10]][_0xb08c[9]];_0xf4bbxb++){_0xf4bbxa[_0xb08c[18]]({version:_0xf4bbx9[_0xb08c[10]][_0xf4bbxb][_0xb08c[13]][_0xb08c[12]](_0xb08c[11])[1]|| _0xb08c[14],message:_0xf4bbx9[_0xb08c[10]][_0xf4bbxb][_0xb08c[13]][_0xb08c[12]](_0xb08c[11])[0],createdAt:moment(_0xf4bbx9[_0xb08c[10]][_0xf4bbxb][_0xb08c[17]])[_0xb08c[16]](_0xb08c[15])})};return _0xf4bbx7[_0xb08c[20]](200)[_0xb08c[19]]({rows:_0xf4bbxa,count:_0xf4bbxa[_0xb08c[9]]})})};exports[_0xb08c[22]]= function(_0xf4bbx6,_0xf4bbx7){Git[_0xb08c[22]](_0xb08c[23],_0xb08c[24],function(_0xf4bbx8,_0xf4bbxc){if(_0xf4bbx8){console[_0xb08c[26]](_0xb08c[25],_0xf4bbx8)}});return _0xf4bbx7[_0xb08c[27]](200)[_0xb08c[19]]()};function handleError(_0xf4bbx7,_0xf4bbx8){return _0xf4bbx7[_0xb08c[20]](500)[_0xb08c[19]](_0xf4bbx8)} \ No newline at end of file diff --git a/server/api/user/index.js b/server/api/user/index.js index 86e16fb..2bfcda9 100644 --- a/server/api/user/index.js +++ b/server/api/user/index.js @@ -1,261 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./user.controller'); -var config = require('../../config/environment'); -var auth = require('../../auth/auth.service'); -var license = require('../../config/license/license.service'); - -var router = express.Router(); - -/** - * @api {get} /api/users/ Get users' profile. - * - * @api {get} /api/agents/ Get users' profile. - * - * @apiParam (Query) {Number} [offset] Pagination offset. - * @apiParam (Query) {Number} [limit] Pagination limit. - * - * @apiVersion 0.0.140 - * @apiName GetUsers - * @apiGroup Users - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccess {Number} count Number of users. - * @apiSuccess {Object[]} rows Get list of user profiles. - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 200 OK - * { - * "count": 1, - * "rows": [{ - * "id": 1 - * "name": "john.doe" - * "email": "john.doe@xcally.com" - * "internal": 1001 - * "fullname": "John Doe" - * ... - * }] - * } - */ -router.get('/', auth.isAuthenticated(), auth.hasModule([7], ['admin', 'user', 'agent']), controller.index); -router.get('/describe', auth.isAuthenticated(), auth.hasModule([17], ['admin']), controller.describe); - -router.get('/me', auth.isAuthenticated(), controller.me); -router.get('/all', auth.isAuthenticated(), controller.getUsers); -router.get('/avatar/:filename', controller.getAvatar); -/** - * @api {get} /api/users/:id Get user's profile. - * @apiParam {Number} id User's unique ID. - * @apiVersion 0.0.140 - * @apiName GetUser - * @apiGroup Users - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 200 OK - * { - * "id": 1 - * "name": "john.doe" - * "email": "john.doe@xcally.com" - * "internal": 1001 - * "fullname": "John Doe" - * ... - * } - */ -router.get('/:id', auth.isAuthenticated(), auth.hasModule([], ['admin', 'user']), controller.show); -router.get('/:id/avatar', auth.isAuthenticated(), controller.getAvatarById); -router.get('/:id/allowed/modules', auth.isAuthenticated(), auth.hasRole('admin'), controller.getAllowedModules); -router.get('/:id/allowed/:channel/queues', auth.isAuthenticated(), auth.hasRole('admin'), controller.getAllowedQueues); - -/** - * @api {post} /api/users/ Create user's profile. - * @apiParam (Body) {String} name User's username. - * @apiParam (Body) {String} fullname User's fullname. - * @apiParam (Body) {String} email User's email. - * @apiParam (Body) {String} context="from-sip" User's SIP context. - * @apiParam (Body) {String} password User's password. - * @apiParam (Body) {Number} internal User's internal number. - * @apiParam (Body) {String="tcp", "udp", "tcp,udp"} transport="udp" User's SIP transport. - * @apiParam (Body) {String="alaw", "ulaw", "gsm"} allow="alaw;ulaw;gsm" User's SIP codecs. - * @apiParam (Body) {Number} internal User's internal number. - * @apiParam (Body) {String} [phone] User's phone. - * @apiParam (Body) {String} [mobile] User's mobile phone. - * @apiParam (Body) {String} [address] User's address. - * @apiParam (Body) {String} [zipcode] User's zipcode. - * @apiParam (Body) {String} [city] User's city. - * @apiParam (Body) {String} [country] User's country. - * - * @apiVersion 0.0.140 - * @apiName CreateUser - * @apiGroup Users - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 201 Created - * { - * "id": 1 - * "name": "john.doe" - * "email": "john.doe@xcally.com" - * "internal": 1001 - * "fullname": "John Doe" - * ... - * } - */ -router.post('/', auth.isAuthenticated(), license.isValidDate(), license.isUsersLimit(), auth.hasRole('admin'), controller.create); -router.post('/:id/allowed/modules', auth.isAuthenticated(), auth.hasRole('admin'), controller.setAllowedModules); -router.post('/:id/allowed/:channel/queues', auth.isAuthenticated(), auth.hasRole('admin'), controller.addAllowedQueues); -/** - * @api {put} /api/users/password Update user's password. - * - * @apiParam (Body) {String} oldPassword Old user's password. - * @apiParam (Body) {String} newPassword New user's password. - * - * @apiVersion 0.0.140 - * @apiName UpdateUserPassword - * @apiGroup Users - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 200 OK - */ -router.put('/password', auth.isAuthenticated(), controller.changePassword); -/** - * @api {update} /api/users/:id Update user's profile. - * - * @apiParam (Params) {Number} id User's unique ID. - * @apiParam (Body) {String} fullname User's fullname. - * @apiParam (Body) {String} email User's email. - * @apiParam (Body) {String} context="from-sip" User's SIP context. - * @apiParam (Body) {String} password User's password. - * @apiParam (Body) {Number} internal User's internal number. - * @apiParam (Body) {String="tcp", "udp", "tcp,udp"} transport="udp" User's SIP transport. - * @apiParam (Body) {String="alaw", "ulaw", "gsm"} allow="alaw;ulaw;gsm" User's SIP codecs. - * @apiParam (Body) {Number} internal User's internal number. - * @apiParam (Body) {String} [phone] User's phone. - * @apiParam (Body) {String} [mobile] User's mobile phone. - * @apiParam (Body) {String} [address] User's address. - * @apiParam (Body) {String} [zipcode] User's zipcode. - * @apiParam (Body) {String} [city] User's city. - * @apiParam (Body) {String} [country] User's country. - * - * @apiVersion 0.0.140 - * @apiName UpdateUser - * @apiGroup Users - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 200 OK - * { - * "id": 1 - * "name": "john.doe" - * "email": "john.doe@xcally.com" - * "internal": 1001 - * "fullname": "John Doe" - * ... - * } - */ - -router.put('/:id', auth.isAuthenticated(), auth.hasModule([], ['admin', 'user', 'agent']), controller.update); - -/** - * @api {delete} /api/users/ Bulk Delete users' profile. - * - * @apiParam (Query) {Number[]} ids Users' unique ID array. - * - * @apiVersion 0.0.140 - * @apiName BulkDeleteUsers - * @apiGroup Users - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 204 No Content - */ -router.delete('/', auth.isAuthenticated(), auth.hasRole('admin'), controller.bulkDestroy); - -/** - * @api {delete} /api/users/:id Delete user's profile. - * - * @apiParam {Number} id User's unique ID. - * - * @apiVersion 0.0.140 - * @apiName DeleteUser - * @apiGroup Users - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 204 No Content - */ -router.delete('/:id', auth.isAuthenticated(), auth.hasRole('admin'), controller.destroy); -router.delete('/:id/allowed/:channel/queues', auth.isAuthenticated(), auth.hasRole('admin'), controller.removeAllowedQueues); - - -/** - * @api {put} /api/users/:id/password Reset user's password. - * - * @apiParam (Params) {Number} id User's unique ID. - * @apiParam (Body) {String} newPassword New user's password. - * - * @apiPermission admin - * - * @apiVersion 0.0.140 - * @apiName ResetUserPassword - * @apiGroup Users - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 200 OK - */ -router.put('/:id/password', auth.isAuthenticated(), auth.hasRole('admin'), controller.resetPassword); -router.post('/validate/:field', auth.isAuthenticated(), auth.hasRole('admin'), controller.userValidation); -router.post('/:id/avatar', auth.isAuthenticated(), auth.hasRole('admin'), controller.changeAvatar); - -module.exports = router; +var _0x74f6=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x75\x73\x65\x72\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x75\x73\x65\x72","\x61\x67\x65\x6E\x74","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x64\x65\x73\x63\x72\x69\x62\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x2F\x6D\x65","\x6D\x65","\x2F\x61\x6C\x6C","\x67\x65\x74\x55\x73\x65\x72\x73","\x2F\x61\x76\x61\x74\x61\x72\x2F\x3A\x66\x69\x6C\x65\x6E\x61\x6D\x65","\x67\x65\x74\x41\x76\x61\x74\x61\x72","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x2F\x3A\x69\x64\x2F\x61\x76\x61\x74\x61\x72","\x67\x65\x74\x41\x76\x61\x74\x61\x72\x42\x79\x49\x64","\x2F\x3A\x69\x64\x2F\x61\x6C\x6C\x6F\x77\x65\x64\x2F\x6D\x6F\x64\x75\x6C\x65\x73","\x68\x61\x73\x52\x6F\x6C\x65","\x67\x65\x74\x41\x6C\x6C\x6F\x77\x65\x64\x4D\x6F\x64\x75\x6C\x65\x73","\x2F\x3A\x69\x64\x2F\x61\x6C\x6C\x6F\x77\x65\x64\x2F\x3A\x63\x68\x61\x6E\x6E\x65\x6C\x2F\x71\x75\x65\x75\x65\x73","\x67\x65\x74\x41\x6C\x6C\x6F\x77\x65\x64\x51\x75\x65\x75\x65\x73","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x69\x73\x55\x73\x65\x72\x73\x4C\x69\x6D\x69\x74","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x73\x65\x74\x41\x6C\x6C\x6F\x77\x65\x64\x4D\x6F\x64\x75\x6C\x65\x73","\x61\x64\x64\x41\x6C\x6C\x6F\x77\x65\x64\x51\x75\x65\x75\x65\x73","\x2F\x70\x61\x73\x73\x77\x6F\x72\x64","\x63\x68\x61\x6E\x67\x65\x50\x61\x73\x73\x77\x6F\x72\x64","\x70\x75\x74","\x75\x70\x64\x61\x74\x65","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x72\x65\x6D\x6F\x76\x65\x41\x6C\x6C\x6F\x77\x65\x64\x51\x75\x65\x75\x65\x73","\x2F\x3A\x69\x64\x2F\x70\x61\x73\x73\x77\x6F\x72\x64","\x72\x65\x73\x65\x74\x50\x61\x73\x73\x77\x6F\x72\x64","\x2F\x76\x61\x6C\x69\x64\x61\x74\x65\x2F\x3A\x66\x69\x65\x6C\x64","\x75\x73\x65\x72\x56\x61\x6C\x69\x64\x61\x74\x69\x6F\x6E","\x63\x68\x61\x6E\x67\x65\x41\x76\x61\x74\x61\x72","\x65\x78\x70\x6F\x72\x74\x73"];_0x74f6[0];var express=require(_0x74f6[1]);var controller=require(_0x74f6[2]);var config=require(_0x74f6[3]);var auth=require(_0x74f6[4]);var license=require(_0x74f6[5]);var router=express.Router();router[_0x74f6[13]](_0x74f6[6],auth[_0x74f6[7]](),auth[_0x74f6[11]]([7],[_0x74f6[8],_0x74f6[9],_0x74f6[10]]),controller[_0x74f6[12]]);router[_0x74f6[13]](_0x74f6[14],auth[_0x74f6[7]](),auth[_0x74f6[11]]([17],[_0x74f6[8]]),controller[_0x74f6[15]]);router[_0x74f6[13]](_0x74f6[16],auth[_0x74f6[7]](),controller[_0x74f6[17]]);router[_0x74f6[13]](_0x74f6[18],auth[_0x74f6[7]](),controller[_0x74f6[19]]);router[_0x74f6[13]](_0x74f6[20],controller[_0x74f6[21]]);router[_0x74f6[13]](_0x74f6[22],auth[_0x74f6[7]](),auth[_0x74f6[11]]([],[_0x74f6[8],_0x74f6[9]]),controller[_0x74f6[23]]);router[_0x74f6[13]](_0x74f6[24],auth[_0x74f6[7]](),controller[_0x74f6[25]]);router[_0x74f6[13]](_0x74f6[26],auth[_0x74f6[7]](),auth[_0x74f6[27]](_0x74f6[8]),controller[_0x74f6[28]]);router[_0x74f6[13]](_0x74f6[29],auth[_0x74f6[7]](),auth[_0x74f6[27]](_0x74f6[8]),controller[_0x74f6[30]]);router[_0x74f6[34]](_0x74f6[6],auth[_0x74f6[7]](),license[_0x74f6[31]](),license[_0x74f6[32]](),auth[_0x74f6[27]](_0x74f6[8]),controller[_0x74f6[33]]);router[_0x74f6[34]](_0x74f6[26],auth[_0x74f6[7]](),auth[_0x74f6[27]](_0x74f6[8]),controller[_0x74f6[35]]);router[_0x74f6[34]](_0x74f6[29],auth[_0x74f6[7]](),auth[_0x74f6[27]](_0x74f6[8]),controller[_0x74f6[36]]);router[_0x74f6[39]](_0x74f6[37],auth[_0x74f6[7]](),controller[_0x74f6[38]]);router[_0x74f6[39]](_0x74f6[22],auth[_0x74f6[7]](),auth[_0x74f6[11]]([],[_0x74f6[8],_0x74f6[9],_0x74f6[10]]),controller[_0x74f6[40]]);router[_0x74f6[42]](_0x74f6[6],auth[_0x74f6[7]](),auth[_0x74f6[27]](_0x74f6[8]),controller[_0x74f6[41]]);router[_0x74f6[42]](_0x74f6[22],auth[_0x74f6[7]](),auth[_0x74f6[27]](_0x74f6[8]),controller[_0x74f6[43]]);router[_0x74f6[42]](_0x74f6[29],auth[_0x74f6[7]](),auth[_0x74f6[27]](_0x74f6[8]),controller[_0x74f6[44]]);router[_0x74f6[39]](_0x74f6[45],auth[_0x74f6[7]](),auth[_0x74f6[27]](_0x74f6[8]),controller[_0x74f6[46]]);router[_0x74f6[34]](_0x74f6[47],auth[_0x74f6[7]](),auth[_0x74f6[27]](_0x74f6[8]),controller[_0x74f6[48]]);router[_0x74f6[34]](_0x74f6[24],auth[_0x74f6[7]](),auth[_0x74f6[27]](_0x74f6[8]),controller[_0x74f6[49]]);module[_0x74f6[50]]= router \ No newline at end of file diff --git a/server/api/user/user.controller.js b/server/api/user/user.controller.js index 6f45c42..a26746f 100644 --- a/server/api/user/user.controller.js +++ b/server/api/user/user.controller.js @@ -1,740 +1 @@ -'use strict'; - -var User = require('../../models').User; -var Module = require('../../models').Module; -var Setting = require('../../models').Setting; -var VoiceQueue = require('../../models').VoiceQueue; -var ChatQueue = require('../../models').ChatQueue; -var MailQueue = require('../../models').MailQueue; -var FaxQueue = require('../../models').FaxQueue; -var SmsQueue = require('../../models').SmsQueue; -var sequelize = require('../../models').sequelize; - -var config = require('../../config/environment'); -var Util = require('../../config/util'); - -var passport = require('passport'); -var moment = require('moment'); -var jwt = require('jsonwebtoken'); -var uploadFile = require('upload-file'); -var path = require('path'); -var fs = require('fs'); -var _ = require('lodash'); -var util = require('util'); -var sr = require('simple-random'); - -/** - * Get list of admin/user - */ -exports.index = function(req, res, next) { - return User - .scope('user') - .findAndCountAll(Util.getQuery(req.query)) - .then(function(result) { - res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get list of fields -exports.describe = function(req, res) { - return User - .describe() - .then(function(fields) { - return res.status(200).send(fields); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} - -/** - * Get list of admin/user/agent/telephone - */ -exports.getUsers = function(req, res, next) { - return User - .findAll() - .then(function(users) { - return res.status(200).send({ - rows: users - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -/** - * Get list of allowed modules - */ -exports.getAllowedModules = function(req, res, next) { - return User - .findById(req.params.id) - .then(function(user) { - if (!user) { - return res.sendStatus(404); - } - - return user.getModules(); - }) - .then(function(modules) { - return res.status(200).send(modules); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -/** - * Creates a new user - */ -exports.create = function(req, res, next) { - - // Set default role - req.body.role = req.body.role || 'user'; - var password = String(req.body.password); - if (!(/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[~!@#$%^&\-_=+\[\{\]\}.])[0-9a-zA-Z~!@#$%^&\-_=+\[\{\]\}.]{8,}$/.test(password))) { - throw new Error('Wrong password format!'); - } - - return sequelize.transaction(function(t) { - return User - .create(req.body, { - transaction: t - }) - .then(function(user) { - return res.status(201).send(user); - }) - }) - .catch(sequelize.UniqueConstraintError, function(err) { - return Util.errorManager.handleUniqueConstraintError(res, err); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.setAllowedModules = function(req, res, next) { - return sequelize.transaction(function(t) { - return User - .findById(req.params.id) - .then(function(user) { - if (!user) { - return res.sendStatus(404); - } - return user.setModules(req.body.modules); - }) - .then(function() { - return res.sendStatus(201); - }) - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -/** - * Get a single user - */ -exports.show = function(req, res, next) { - return User - .findById(req.params.id) - .then(function(user) { - if (!user) { - return res.sendStatus(404); - } - - return res.status(200).send(user); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -/** - * Deletes a user - */ -exports.destroy = function(req, res, next) { - var userId = req.params.id; - var _user; - - return User - .findById(userId) - .then(function(user) { - _user = user; - if (!user) { - return res.sendStatus(404); - } - return user - .destroy(); - }) - .then(function(user) { - return res.status(200).send(user); - }) - .catch(sequelize.ForeignKeyConstraintError, function(err) { - return Util.errorManager.handleForeignKeyConstraintError(res, 'user', _user.name, err); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes a user from the DB. -exports.bulkDestroy = function(req, res) { - return User - .destroy({ - where: { - id: req.query.ids - }, - individualHooks: true - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -/** - * Change a user password - */ -exports.changePassword = function(req, res, next) { - var userId = req.user.id; - var oldPass = String(req.body.oldPassword); - var newPass = String(req.body.newPassword); - return sequelize.transaction(function(t) { - return Setting - .findById(1) - .then(function(setting) { - if (setting.securePassword && !(/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[~!@#$%^&\-_=+\[\{\]\}.])[0-9a-zA-Z~!@#$%^&\-_=+\[\{\]\}.]{8,}$/.test(newPass))) { - throw new Error('Wrong password format!'); - } - - return User - .findById(userId); - }) - .then(function(user) { - if (!user.authenticate(oldPass)) { - return res.sendStatus(403); - } else { - user.password = newPass; - return user.save({ - transaction: t - }).then(function() { - return res.sendStatus(200); - }) - } - }) - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -/** - * Change a user password by admin - */ -exports.resetPassword = function(req, res, next) { - var _setting; - - var userId = req.params.id; - var newPass = String(req.body.newPassword); - - return sequelize.transaction(function(t) { - return Setting - .findById(1) - .then(function(setting) { - _setting = setting; - - return User - .findById(userId); - }) - .then(function(user) { - var regEx = _setting.securePassword ? /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[~!@#$%^&\-_=+\[\{\]\}.])[0-9a-zA-Z~!@#$%^&\-_=+\[\{\]\}.]{8,}$/ : /^[a-zA-Z0-9]{6,}$/; - - if (_setting.securePassword && !regEx.test(newPass)) { - throw new Error('Invalid password pattern'); - } - - user.password = newPass; - return user - .save({ - transaction: t - }); - }) - }) - .then(function() { - return res.sendStatus(200); - }) - .catch(function(err) { - console.error(err); - return handleError(res, err); - }); -}; - -/** - * Change the avatar of the user - */ -exports.changeAvatar = function(req, res, next) { - - var upload = new uploadFile({ - dest: path.join(config.root, 'server', 'files', 'images'), - maxNumberOfFiles: 1, - minNumberOfFiles: 0, - acceptFileTypes: /(\.|\/)(jpeg|png)$/i, - rename: function(name, file) { - return sr() + path.extname(file.filename); - }, - messages: { - maxNumberOfFiles: "Max number of files upload exceeded", - acceptFileTypes: "Only jpeg and png format accepted", - invalidRequest: "Invalid request" - } - }); - - upload.on('end', function(fields, files) { - if (!files.file.filename) { - return res.status(500).send(upload); - } - return sequelize.transaction(function(t) { - return User - .findById(req.params.id) - .then(function(user) { - if (!user) { - return res.sendStatus(404); - } - - return user - .update({ - userpic: files.file.filename - }, { - transaction: t - }); - }) - .then(function(user) { - return res.status(200).send(user); - }) - }) - .catch(function(err) { - return handleError(res, err); - }); - }); - - upload.on('error', function(err) { - console.log('********** Upload error :', err) - return handleError(res, err); - }); - - upload.parse(req); -}; - - -/** - * Get my info - */ -exports.me = function(req, res, next) { - var userId = req.user.id; - - return User - .findOne({ - where: { - id: userId - }, - attributes: ['id', 'fullname', 'name', 'email', 'role', 'userpic', 'lastLoginAt', 'voicePause', - 'mailPause', - 'chatPause', - 'faxPause', - 'smsPause', - 'openchannelPause', - 'lastPauseAt', - 'pauseType', - 'phoneBarRemoteControl', - 'phoneBarRemoteControlPort', - 'loginInPause' - ], - include: [Module, { - model: VoiceQueue, - as: 'PVoiceQueues' - }, { - model: ChatQueue, - as: 'PChatQueues' - }, { - model: MailQueue, - as: 'PMailQueues' - }, { - model: FaxQueue, - as: 'PFaxQueues' - }, { - model: SmsQueue, - as: 'PSmsQueues' - }] - }) - .then(function(user) { - if (!user) { - return res.sendStatus(401); - } - return res.status(200).send(user); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -/** - * Update my user - */ -exports.update = function(req, res, next) { - var userId = req.user.id; - - delete req.body.password; - delete req.body.name; - - return sequelize.transaction(function(t) { - return User - .findById(req.params.id) - .then(function(user) { - if (!user) { - return res.sendStatus(500); - } - return user - .update(req.body, { - transaction: t - }); - }) - .then(function(user) { - return res.status(200).send(user); - }) - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -/** - * Get my avatar - */ -exports.getAvatar = function(req, res, next) { - var imgPath = path.join(config.root, 'server', 'files', 'images', req.params.filename); - - fs.exists(imgPath, function(exists) { - if (!exists) { - imgPath = path.join(config.root, 'server', 'files', 'images', 'userpic.png'); - } - - return res.sendFile(imgPath); - }); -}; - -/** - * Get my avatar by id - */ -exports.getAvatarById = function(req, res, next) { - if (req.params.id === 'visitor') { - var imgPath = path.join(config.root, 'server', 'files', 'images', 'customer.png'); - - fs.exists(imgPath, function(exists) { - return res.sendFile(imgPath); - }); - - } else { - return User - .findById(req.params.id) - .then(function(user) { - if (user) { - var imgPath = path.join(config.root, 'server', 'files', 'images', user.userpic ? user.userpic : 'userpic.png'); - - fs.exists(imgPath, function(exists) { - if (!exists) { - imgPath = path.join(config.root, 'server', 'files', 'images', 'userpic.png'); - } - - return res.sendFile(imgPath); - }); - } else { - return res.sendStatus(500); - } - }) - .catch(function(err) { - return handleError(res, err); - }); - } -}; - -/** - * Get my avatar by id - */ -// exports.getAllowedQueues = function(req, res, next) { -// var _user; -// var _permits = { -// voice: [], -// chat: [], -// mail: [], -// fax: [], -// sms: [] -// }; -// -// return User -// .findById(req.params.id, { -// attributes: ['id'] -// }) -// .then(function(user) { -// _user = user; -// if (!_user) { -// return res.sendStatus(401); -// } -// -// return _user -// .getPVoiceQueues({ -// attributes: ['name'] -// }); -// }) -// .then(function(queues) { -// _permits.voice = _permits.voice.concat(_.map(queues, 'name')); -// }) -// .then(function() { -// return _user -// .getPChatQueues({ -// attributes: ['name'] -// }); -// }) -// .then(function(queues) { -// _permits.chat = _permits.chat.concat(_.map(queues, 'name')); -// }) -// .then(function() { -// return _user -// .getPMailQueues({ -// attributes: ['name'] -// }); -// }) -// .then(function(queues) { -// _permits.mail = _permits.mail.concat(_.map(queues, 'name')); -// }) -// .then(function() { -// return _user -// .getPFaxQueues({ -// attributes: ['name'] -// }); -// }) -// .then(function(queues) { -// _permits.fax = _permits.fax.concat(_.map(queues, 'name')); -// }) -// // .then(function() { -// // return _user -// // .getPSmsQueues({ -// // attributes: ['name'] -// // }); -// // }) -// // .then(function(queues) { -// // _permits.sms = _permits.sms.concat(_.map(queues, 'name')); -// // }) -// .then(function() { -// return res.status(200).send(_permits); -// }) -// .catch(function(err) { -// console.error(err); -// return handleError(res, err); -// }); -// }; - -exports.getAllowedQueues = function(req, res, next) { - var _user; - - return User - .findById(req.params.id, { - attributes: ['id'] - }) - .then(function(user) { - _user = user; - if (!_user) { - return res.sendStatus(401); - } - - switch (req.params.channel) { - case 'voice': - return _user - .getPVoiceQueues({ - attributes: ['name'] - }); - case 'chat': - return _user - .getPChatQueues({ - attributes: ['id', 'name'] - }); - case 'mail': - return _user - .getPMailQueues({ - attributes: ['id', 'name'] - }); - case 'fax': - return _user - .getPFaxQueues({ - attributes: ['id', 'name'] - }); - case 'sms': - return _user - .getPSmsQueues({ - attributes: ['id', 'name'] - }); - case 'openchannel': - return _user - .getPOpenchannelQueues({ - attributes: ['id', 'name'] - }); - default: - throw new Error('The channel does not exist'); - } - }) - .then(function(queues) { - if (queues) { - return res.status(200).send(_.map(queues, function(queue) { - var _data = { - name: queue.name - }; - - if (queue.id) { - _data.id = queue.id; - } - - return _data; - })); - } - }) - .catch(function(err) { - console.error(err); - return handleError(res, err); - }); -}; - -exports.addAllowedQueues = function(req, res, next) { - var _user; - - return User - .findById(req.params.id, { - attributes: ['id'] - }) - .then(function(user) { - _user = user; - if (!_user) { - return res.sendStatus(401); - } - - switch (req.params.channel) { - case 'voice': - return _user - .addPVoiceQueues(req.body); - case 'chat': - return _user - .addPChatQueues(req.body); - case 'mail': - return _user - .addPMailQueues(req.body); - case 'fax': - return _user - .addPFaxQueues(req.body); - case 'sms': - return _user - .addPSmsQueues(req.body); - case 'openchannel': - return _user - .addPOpenchannelQueues(req.body); - default: - return null; - } - }) - .then(function(queues) { - return res.sendStatus(queues ? 200 : 401); - }) - .catch(function(err) { - console.error(err); - }); -}; - -exports.removeAllowedQueues = function(req, res, next) { - var _user; - - return User - .findById(req.params.id, { - attributes: ['id'] - }) - .then(function(user) { - _user = user; - if (!_user) { - return res.sendStatus(401); - } - - switch (req.params.channel) { - case 'voice': - return _user - .removePVoiceQueues(req.query.ids); - case 'chat': - return _user - .removePChatQueues(req.query.ids); - case 'mail': - return _user - .removePMailQueues(req.query.ids); - case 'sms': - return _user - .removePSmsQueues(req.query.ids); - case 'fax': - return _user - .removePFaxQueues(req.query.ids); - case 'openchannel': - return _user - .removePOpenchannelQueues(req.query.ids); - default: - return null; - } - }) - .then(function(queues) { - return res.sendStatus(queues ? 200 : 401); - }) - .catch(function(err) { - console.error(err); - }); -}; - -exports.userValidation = function(req, res) { - var where = {}; - where[req.params.field] = req.body.value; - - return User - .findAndCountAll({ - where: where - }) - .then(function(result) { - if (result.count) { - return res.status(200).send({ - isValid: false, - value: req.body.value - }); - } - return res.status(200).send({ - isValid: true, - value: req.body.value - }); - }) - .catch(function(err) { - return handleError(res, err); - }); - -}; - -/** - * Authentication callback - */ -exports.authCallback = function(req, res, next) { - res.redirect('/'); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0x8699=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x55\x73\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x4D\x6F\x64\x75\x6C\x65","\x53\x65\x74\x74\x69\x6E\x67","\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65","\x43\x68\x61\x74\x51\x75\x65\x75\x65","\x4D\x61\x69\x6C\x51\x75\x65\x75\x65","\x46\x61\x78\x51\x75\x65\x75\x65","\x53\x6D\x73\x51\x75\x65\x75\x65","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x70\x61\x73\x73\x70\x6F\x72\x74","\x6D\x6F\x6D\x65\x6E\x74","\x6A\x73\x6F\x6E\x77\x65\x62\x74\x6F\x6B\x65\x6E","\x75\x70\x6C\x6F\x61\x64\x2D\x66\x69\x6C\x65","\x70\x61\x74\x68","\x66\x73","\x6C\x6F\x64\x61\x73\x68","\x75\x74\x69\x6C","\x73\x69\x6D\x70\x6C\x65\x2D\x72\x61\x6E\x64\x6F\x6D","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x75\x73\x65\x72","\x73\x63\x6F\x70\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x67\x65\x74\x55\x73\x65\x72\x73","\x66\x69\x6E\x64\x41\x6C\x6C","\x67\x65\x74\x41\x6C\x6C\x6F\x77\x65\x64\x4D\x6F\x64\x75\x6C\x65\x73","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x67\x65\x74\x4D\x6F\x64\x75\x6C\x65\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x72\x6F\x6C\x65","\x62\x6F\x64\x79","\x70\x61\x73\x73\x77\x6F\x72\x64","\x74\x65\x73\x74","\x57\x72\x6F\x6E\x67\x20\x70\x61\x73\x73\x77\x6F\x72\x64\x20\x66\x6F\x72\x6D\x61\x74\x21","\x68\x61\x6E\x64\x6C\x65\x55\x6E\x69\x71\x75\x65\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74\x45\x72\x72\x6F\x72","\x65\x72\x72\x6F\x72\x4D\x61\x6E\x61\x67\x65\x72","\x74\x72\x61\x6E\x73\x61\x63\x74\x69\x6F\x6E","\x73\x65\x74\x41\x6C\x6C\x6F\x77\x65\x64\x4D\x6F\x64\x75\x6C\x65\x73","\x6C\x6F\x67","\x6D\x6F\x64\x75\x6C\x65\x73","\x73\x65\x74\x4D\x6F\x64\x75\x6C\x65\x73","\x73\x68\x6F\x77","\x64\x65\x73\x74\x72\x6F\x79","\x6E\x61\x6D\x65","\x68\x61\x6E\x64\x6C\x65\x46\x6F\x72\x65\x69\x67\x6E\x4B\x65\x79\x43\x6F\x6E\x73\x74\x72\x61\x69\x6E\x74\x45\x72\x72\x6F\x72","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73","\x63\x68\x61\x6E\x67\x65\x50\x61\x73\x73\x77\x6F\x72\x64","\x6F\x6C\x64\x50\x61\x73\x73\x77\x6F\x72\x64","\x6E\x65\x77\x50\x61\x73\x73\x77\x6F\x72\x64","\x61\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65","\x73\x61\x76\x65","\x73\x65\x63\x75\x72\x65\x50\x61\x73\x73\x77\x6F\x72\x64","\x72\x65\x73\x65\x74\x50\x61\x73\x73\x77\x6F\x72\x64","\x65\x72\x72\x6F\x72","\x49\x6E\x76\x61\x6C\x69\x64\x20\x70\x61\x73\x73\x77\x6F\x72\x64\x20\x70\x61\x74\x74\x65\x72\x6E","\x63\x68\x61\x6E\x67\x65\x41\x76\x61\x74\x61\x72","\x72\x6F\x6F\x74","\x73\x65\x72\x76\x65\x72","\x66\x69\x6C\x65\x73","\x69\x6D\x61\x67\x65\x73","\x6A\x6F\x69\x6E","\x66\x69\x6C\x65\x6E\x61\x6D\x65","\x65\x78\x74\x6E\x61\x6D\x65","\x4D\x61\x78\x20\x6E\x75\x6D\x62\x65\x72\x20\x6F\x66\x20\x66\x69\x6C\x65\x73\x20\x75\x70\x6C\x6F\x61\x64\x20\x65\x78\x63\x65\x65\x64\x65\x64","\x4F\x6E\x6C\x79\x20\x6A\x70\x65\x67\x20\x61\x6E\x64\x20\x70\x6E\x67\x20\x66\x6F\x72\x6D\x61\x74\x20\x61\x63\x63\x65\x70\x74\x65\x64","\x49\x6E\x76\x61\x6C\x69\x64\x20\x72\x65\x71\x75\x65\x73\x74","\x65\x6E\x64","\x66\x69\x6C\x65","\x75\x70\x64\x61\x74\x65","\x6F\x6E","\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x20\x55\x70\x6C\x6F\x61\x64\x20\x65\x72\x72\x6F\x72\x20\x3A","\x70\x61\x72\x73\x65","\x6D\x65","\x66\x75\x6C\x6C\x6E\x61\x6D\x65","\x65\x6D\x61\x69\x6C","\x75\x73\x65\x72\x70\x69\x63","\x6C\x61\x73\x74\x4C\x6F\x67\x69\x6E\x41\x74","\x76\x6F\x69\x63\x65\x50\x61\x75\x73\x65","\x6D\x61\x69\x6C\x50\x61\x75\x73\x65","\x63\x68\x61\x74\x50\x61\x75\x73\x65","\x66\x61\x78\x50\x61\x75\x73\x65","\x73\x6D\x73\x50\x61\x75\x73\x65","\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x50\x61\x75\x73\x65","\x6C\x61\x73\x74\x50\x61\x75\x73\x65\x41\x74","\x70\x61\x75\x73\x65\x54\x79\x70\x65","\x70\x68\x6F\x6E\x65\x42\x61\x72\x52\x65\x6D\x6F\x74\x65\x43\x6F\x6E\x74\x72\x6F\x6C","\x70\x68\x6F\x6E\x65\x42\x61\x72\x52\x65\x6D\x6F\x74\x65\x43\x6F\x6E\x74\x72\x6F\x6C\x50\x6F\x72\x74","\x6C\x6F\x67\x69\x6E\x49\x6E\x50\x61\x75\x73\x65","\x50\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65\x73","\x50\x43\x68\x61\x74\x51\x75\x65\x75\x65\x73","\x50\x4D\x61\x69\x6C\x51\x75\x65\x75\x65\x73","\x50\x46\x61\x78\x51\x75\x65\x75\x65\x73","\x50\x53\x6D\x73\x51\x75\x65\x75\x65\x73","\x66\x69\x6E\x64\x4F\x6E\x65","\x67\x65\x74\x41\x76\x61\x74\x61\x72","\x75\x73\x65\x72\x70\x69\x63\x2E\x70\x6E\x67","\x73\x65\x6E\x64\x46\x69\x6C\x65","\x65\x78\x69\x73\x74\x73","\x67\x65\x74\x41\x76\x61\x74\x61\x72\x42\x79\x49\x64","\x76\x69\x73\x69\x74\x6F\x72","\x63\x75\x73\x74\x6F\x6D\x65\x72\x2E\x70\x6E\x67","\x67\x65\x74\x41\x6C\x6C\x6F\x77\x65\x64\x51\x75\x65\x75\x65\x73","\x6D\x61\x70","\x67\x65\x74\x50\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65\x73","\x76\x6F\x69\x63\x65","\x67\x65\x74\x50\x43\x68\x61\x74\x51\x75\x65\x75\x65\x73","\x63\x68\x61\x74","\x67\x65\x74\x50\x4D\x61\x69\x6C\x51\x75\x65\x75\x65\x73","\x6D\x61\x69\x6C","\x67\x65\x74\x50\x46\x61\x78\x51\x75\x65\x75\x65\x73","\x66\x61\x78","\x67\x65\x74\x50\x53\x6D\x73\x51\x75\x65\x75\x65\x73","\x73\x6D\x73","\x67\x65\x74\x50\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65\x73","\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C","\x54\x68\x65\x20\x63\x68\x61\x6E\x6E\x65\x6C\x20\x64\x6F\x65\x73\x20\x6E\x6F\x74\x20\x65\x78\x69\x73\x74","\x63\x68\x61\x6E\x6E\x65\x6C","\x61\x64\x64\x41\x6C\x6C\x6F\x77\x65\x64\x51\x75\x65\x75\x65\x73","\x61\x64\x64\x50\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65\x73","\x61\x64\x64\x50\x43\x68\x61\x74\x51\x75\x65\x75\x65\x73","\x61\x64\x64\x50\x4D\x61\x69\x6C\x51\x75\x65\x75\x65\x73","\x61\x64\x64\x50\x46\x61\x78\x51\x75\x65\x75\x65\x73","\x61\x64\x64\x50\x53\x6D\x73\x51\x75\x65\x75\x65\x73","\x61\x64\x64\x50\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65\x73","\x72\x65\x6D\x6F\x76\x65\x41\x6C\x6C\x6F\x77\x65\x64\x51\x75\x65\x75\x65\x73","\x72\x65\x6D\x6F\x76\x65\x50\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65\x73","\x72\x65\x6D\x6F\x76\x65\x50\x43\x68\x61\x74\x51\x75\x65\x75\x65\x73","\x72\x65\x6D\x6F\x76\x65\x50\x4D\x61\x69\x6C\x51\x75\x65\x75\x65\x73","\x72\x65\x6D\x6F\x76\x65\x50\x53\x6D\x73\x51\x75\x65\x75\x65\x73","\x72\x65\x6D\x6F\x76\x65\x50\x46\x61\x78\x51\x75\x65\x75\x65\x73","\x72\x65\x6D\x6F\x76\x65\x50\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65\x73","\x75\x73\x65\x72\x56\x61\x6C\x69\x64\x61\x74\x69\x6F\x6E","\x66\x69\x65\x6C\x64","\x76\x61\x6C\x75\x65","\x63\x6F\x75\x6E\x74","\x61\x75\x74\x68\x43\x61\x6C\x6C\x62\x61\x63\x6B","\x2F","\x72\x65\x64\x69\x72\x65\x63\x74"];_0x8699[0];var User=require(_0x8699[2])[_0x8699[1]];var Module=require(_0x8699[2])[_0x8699[3]];var Setting=require(_0x8699[2])[_0x8699[4]];var VoiceQueue=require(_0x8699[2])[_0x8699[5]];var ChatQueue=require(_0x8699[2])[_0x8699[6]];var MailQueue=require(_0x8699[2])[_0x8699[7]];var FaxQueue=require(_0x8699[2])[_0x8699[8]];var SmsQueue=require(_0x8699[2])[_0x8699[9]];var sequelize=require(_0x8699[2])[_0x8699[10]];var config=require(_0x8699[11]);var Util=require(_0x8699[12]);var passport=require(_0x8699[13]);var moment=require(_0x8699[14]);var jwt=require(_0x8699[15]);var uploadFile=require(_0x8699[16]);var path=require(_0x8699[17]);var fs=require(_0x8699[18]);var _=require(_0x8699[19]);var util=require(_0x8699[20]);var sr=require(_0x8699[21]);exports[_0x8699[22]]= function(_0x3ca2x15,_0x3ca2x16,_0x3ca2x17){return User[_0x8699[31]](_0x8699[30])[_0x8699[29]](Util[_0x8699[28]](_0x3ca2x15[_0x8699[27]]))[_0x8699[26]](function(_0x3ca2x19){_0x3ca2x16[_0x8699[25]](200)[_0x8699[24]](_0x3ca2x19)})[_0x8699[23]](function(_0x3ca2x18){return handleError(_0x3ca2x16,_0x3ca2x18)})};exports[_0x8699[32]]= function(_0x3ca2x15,_0x3ca2x16){return User[_0x8699[32]]()[_0x8699[26]](function(_0x3ca2x1a){return _0x3ca2x16[_0x8699[25]](200)[_0x8699[24]](_0x3ca2x1a)})[_0x8699[23]](function(_0x3ca2x18){return handleError(_0x3ca2x16,_0x3ca2x18)})};function handleError(_0x3ca2x16,_0x3ca2x18){return _0x3ca2x16[_0x8699[25]](500)[_0x8699[24]](_0x3ca2x18)}exports[_0x8699[33]]= function(_0x3ca2x15,_0x3ca2x16,_0x3ca2x17){return User[_0x8699[34]]()[_0x8699[26]](function(_0x3ca2x1c){return _0x3ca2x16[_0x8699[25]](200)[_0x8699[24]]({rows:_0x3ca2x1c})})[_0x8699[23]](function(_0x3ca2x18){return handleError(_0x3ca2x16,_0x3ca2x18)})};exports[_0x8699[35]]= function(_0x3ca2x15,_0x3ca2x16,_0x3ca2x17){return User[_0x8699[40]](_0x3ca2x15[_0x8699[39]][_0x8699[38]])[_0x8699[26]](function(_0x3ca2x1e){if(!_0x3ca2x1e){return _0x3ca2x16[_0x8699[36]](404)};return _0x3ca2x1e[_0x8699[37]]()})[_0x8699[26]](function(_0x3ca2x1d){return _0x3ca2x16[_0x8699[25]](200)[_0x8699[24]](_0x3ca2x1d)})[_0x8699[23]](function(_0x3ca2x18){return handleError(_0x3ca2x16,_0x3ca2x18)})};exports[_0x8699[41]]= function(_0x3ca2x15,_0x3ca2x16,_0x3ca2x17){_0x3ca2x15[_0x8699[43]][_0x8699[42]]= _0x3ca2x15[_0x8699[43]][_0x8699[42]]|| _0x8699[30];var _0x3ca2x1f=String(_0x3ca2x15[_0x8699[43]][_0x8699[44]]);if(!(/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[~!@#$%^&\-_=+\[\{\]\}.])[0-9a-zA-Z~!@#$%^&\-_=+\[\{\]\}.]{8,}$/[_0x8699[45]](_0x3ca2x1f))){throw new Error(_0x8699[46])};return sequelize[_0x8699[49]](function(_0x3ca2x20){return User[_0x8699[41]](_0x3ca2x15[_0x8699[43]],{transaction:_0x3ca2x20})[_0x8699[26]](function(_0x3ca2x1e){return _0x3ca2x16[_0x8699[25]](201)[_0x8699[24]](_0x3ca2x1e)})})[_0x8699[23]](sequelize.UniqueConstraintError,function(_0x3ca2x18){return Util[_0x8699[48]][_0x8699[47]](_0x3ca2x16,_0x3ca2x18)})[_0x8699[23]](function(_0x3ca2x18){return handleError(_0x3ca2x16,_0x3ca2x18)})};exports[_0x8699[50]]= function(_0x3ca2x15,_0x3ca2x16,_0x3ca2x17){return sequelize[_0x8699[49]](function(_0x3ca2x20){return User[_0x8699[40]](_0x3ca2x15[_0x8699[39]][_0x8699[38]])[_0x8699[26]](function(_0x3ca2x1e){if(!_0x3ca2x1e){return _0x3ca2x16[_0x8699[36]](404)};return _0x3ca2x1e[_0x8699[53]](_0x3ca2x15[_0x8699[43]][_0x8699[52]])})[_0x8699[26]](function(){return _0x3ca2x16[_0x8699[36]](201)})})[_0x8699[23]](function(_0x3ca2x18){console[_0x8699[51]](_0x3ca2x18);return handleError(_0x3ca2x16,_0x3ca2x18)})};exports[_0x8699[54]]= function(_0x3ca2x15,_0x3ca2x16,_0x3ca2x17){return User[_0x8699[40]](_0x3ca2x15[_0x8699[39]][_0x8699[38]])[_0x8699[26]](function(_0x3ca2x1e){if(!_0x3ca2x1e){return _0x3ca2x16[_0x8699[36]](404)};return _0x3ca2x16[_0x8699[25]](200)[_0x8699[24]](_0x3ca2x1e)})[_0x8699[23]](function(_0x3ca2x18){return handleError(_0x3ca2x16,_0x3ca2x18)})};exports[_0x8699[55]]= function(_0x3ca2x15,_0x3ca2x16,_0x3ca2x17){var _0x3ca2x21=_0x3ca2x15[_0x8699[39]][_0x8699[38]];var _0x3ca2x22;return User[_0x8699[40]](_0x3ca2x21)[_0x8699[26]](function(_0x3ca2x1e){_0x3ca2x22= _0x3ca2x1e;if(!_0x3ca2x1e){return _0x3ca2x16[_0x8699[36]](404)};return _0x3ca2x1e[_0x8699[55]]()})[_0x8699[26]](function(_0x3ca2x1e){return _0x3ca2x16[_0x8699[25]](200)[_0x8699[24]](_0x3ca2x1e)})[_0x8699[23]](sequelize.ForeignKeyConstraintError,function(_0x3ca2x18){return Util[_0x8699[48]][_0x8699[57]](_0x3ca2x16,_0x8699[30],_0x3ca2x22[_0x8699[56]],_0x3ca2x18)})[_0x8699[23]](function(_0x3ca2x18){return handleError(_0x3ca2x16,_0x3ca2x18)})};exports[_0x8699[58]]= function(_0x3ca2x15,_0x3ca2x16){return User[_0x8699[55]]({where:{id:_0x3ca2x15[_0x8699[27]][_0x8699[59]]},individualHooks:true})[_0x8699[26]](function(){return _0x3ca2x16[_0x8699[36]](204)})[_0x8699[23]](function(_0x3ca2x18){return handleError(_0x3ca2x16,_0x3ca2x18)})};exports[_0x8699[60]]= function(_0x3ca2x15,_0x3ca2x16,_0x3ca2x17){var _0x3ca2x21=_0x3ca2x15[_0x8699[30]][_0x8699[38]];var _0x3ca2x23=String(_0x3ca2x15[_0x8699[43]][_0x8699[61]]);var _0x3ca2x24=String(_0x3ca2x15[_0x8699[43]][_0x8699[62]]);return sequelize[_0x8699[49]](function(_0x3ca2x20){return Setting[_0x8699[40]](1)[_0x8699[26]](function(_0x3ca2x25){if(_0x3ca2x25[_0x8699[65]]&& !(/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[~!@#$%^&\-_=+\[\{\]\}.])[0-9a-zA-Z~!@#$%^&\-_=+\[\{\]\}.]{8,}$/[_0x8699[45]](_0x3ca2x24))){throw new Error(_0x8699[46])};return User[_0x8699[40]](_0x3ca2x21)})[_0x8699[26]](function(_0x3ca2x1e){if(!_0x3ca2x1e[_0x8699[63]](_0x3ca2x23)){return _0x3ca2x16[_0x8699[36]](403)}else {_0x3ca2x1e[_0x8699[44]]= _0x3ca2x24;return _0x3ca2x1e[_0x8699[64]]({transaction:_0x3ca2x20})[_0x8699[26]](function(){return _0x3ca2x16[_0x8699[36]](200)})}})})[_0x8699[23]](function(_0x3ca2x18){console[_0x8699[51]](_0x3ca2x18);return handleError(_0x3ca2x16,_0x3ca2x18)})};exports[_0x8699[66]]= function(_0x3ca2x15,_0x3ca2x16,_0x3ca2x17){var _0x3ca2x26;var _0x3ca2x21=_0x3ca2x15[_0x8699[39]][_0x8699[38]];var _0x3ca2x24=String(_0x3ca2x15[_0x8699[43]][_0x8699[62]]);return sequelize[_0x8699[49]](function(_0x3ca2x20){return Setting[_0x8699[40]](1)[_0x8699[26]](function(_0x3ca2x25){_0x3ca2x26= _0x3ca2x25;return User[_0x8699[40]](_0x3ca2x21)})[_0x8699[26]](function(_0x3ca2x1e){var _0x3ca2x27=_0x3ca2x26[_0x8699[65]]?/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[~!@#$%^&\-_=+\[\{\]\}.])[0-9a-zA-Z~!@#$%^&\-_=+\[\{\]\}.]{8,}$/:/^[a-zA-Z0-9]{6,}$/;if(_0x3ca2x26[_0x8699[65]]&& !_0x3ca2x27[_0x8699[45]](_0x3ca2x24)){throw new Error(_0x8699[68])};_0x3ca2x1e[_0x8699[44]]= _0x3ca2x24;return _0x3ca2x1e[_0x8699[64]]({transaction:_0x3ca2x20})})})[_0x8699[26]](function(){return _0x3ca2x16[_0x8699[36]](200)})[_0x8699[23]](function(_0x3ca2x18){console[_0x8699[67]](_0x3ca2x18);return handleError(_0x3ca2x16,_0x3ca2x18)})};exports[_0x8699[69]]= function(_0x3ca2x15,_0x3ca2x16,_0x3ca2x17){var _0x3ca2x28= new uploadFile({dest:path[_0x8699[74]](config[_0x8699[70]],_0x8699[71],_0x8699[72],_0x8699[73]),maxNumberOfFiles:1,minNumberOfFiles:0,acceptFileTypes:/(\.|\/)(jpeg|png)$/i,rename:function(_0x3ca2x29,_0x3ca2x2a){return sr()+ path[_0x8699[76]](_0x3ca2x2a[_0x8699[75]])},messages:{maxNumberOfFiles:_0x8699[77],acceptFileTypes:_0x8699[78],invalidRequest:_0x8699[79]}});_0x3ca2x28[_0x8699[83]](_0x8699[80],function(_0x3ca2x1a,_0x3ca2x2b){if(!_0x3ca2x2b[_0x8699[81]][_0x8699[75]]){return _0x3ca2x16[_0x8699[25]](500)[_0x8699[24]](_0x3ca2x28)};return sequelize[_0x8699[49]](function(_0x3ca2x20){return User[_0x8699[40]](_0x3ca2x15[_0x8699[39]][_0x8699[38]])[_0x8699[26]](function(_0x3ca2x1e){if(!_0x3ca2x1e){return _0x3ca2x16[_0x8699[36]](404)};return _0x3ca2x1e[_0x8699[82]]({userpic:_0x3ca2x2b[_0x8699[81]][_0x8699[75]]},{transaction:_0x3ca2x20})})[_0x8699[26]](function(_0x3ca2x1e){return _0x3ca2x16[_0x8699[25]](200)[_0x8699[24]](_0x3ca2x1e)})})[_0x8699[23]](function(_0x3ca2x18){return handleError(_0x3ca2x16,_0x3ca2x18)})});_0x3ca2x28[_0x8699[83]](_0x8699[67],function(_0x3ca2x18){console[_0x8699[51]](_0x8699[84],_0x3ca2x18);return handleError(_0x3ca2x16,_0x3ca2x18)});_0x3ca2x28[_0x8699[85]](_0x3ca2x15)};exports[_0x8699[86]]= function(_0x3ca2x15,_0x3ca2x16,_0x3ca2x17){var _0x3ca2x21=_0x3ca2x15[_0x8699[30]][_0x8699[38]];return User[_0x8699[107]]({where:{id:_0x3ca2x21},attributes:[_0x8699[38],_0x8699[87],_0x8699[56],_0x8699[88],_0x8699[42],_0x8699[89],_0x8699[90],_0x8699[91],_0x8699[92],_0x8699[93],_0x8699[94],_0x8699[95],_0x8699[96],_0x8699[97],_0x8699[98],_0x8699[99],_0x8699[100],_0x8699[101]],include:[Module,{model:VoiceQueue,as:_0x8699[102]},{model:ChatQueue,as:_0x8699[103]},{model:MailQueue,as:_0x8699[104]},{model:FaxQueue,as:_0x8699[105]},{model:SmsQueue,as:_0x8699[106]}]})[_0x8699[26]](function(_0x3ca2x1e){if(!_0x3ca2x1e){return _0x3ca2x16[_0x8699[36]](401)};return _0x3ca2x16[_0x8699[25]](200)[_0x8699[24]](_0x3ca2x1e)})[_0x8699[23]](function(_0x3ca2x18){return handleError(_0x3ca2x16,_0x3ca2x18)})};exports[_0x8699[82]]= function(_0x3ca2x15,_0x3ca2x16,_0x3ca2x17){var _0x3ca2x21=_0x3ca2x15[_0x8699[30]][_0x8699[38]];delete _0x3ca2x15[_0x8699[43]][_0x8699[44]];delete _0x3ca2x15[_0x8699[43]][_0x8699[56]];return sequelize[_0x8699[49]](function(_0x3ca2x20){return User[_0x8699[40]](_0x3ca2x15[_0x8699[39]][_0x8699[38]])[_0x8699[26]](function(_0x3ca2x1e){if(!_0x3ca2x1e){return _0x3ca2x16[_0x8699[36]](500)};return _0x3ca2x1e[_0x8699[82]](_0x3ca2x15[_0x8699[43]],{transaction:_0x3ca2x20})})[_0x8699[26]](function(_0x3ca2x1e){return _0x3ca2x16[_0x8699[25]](200)[_0x8699[24]](_0x3ca2x1e)})})[_0x8699[23]](function(_0x3ca2x18){return handleError(_0x3ca2x16,_0x3ca2x18)})};exports[_0x8699[108]]= function(_0x3ca2x15,_0x3ca2x16,_0x3ca2x17){var _0x3ca2x2c=path[_0x8699[74]](config[_0x8699[70]],_0x8699[71],_0x8699[72],_0x8699[73],_0x3ca2x15[_0x8699[39]][_0x8699[75]]);fs[_0x8699[111]](_0x3ca2x2c,function(_0x3ca2x2d){if(!_0x3ca2x2d){_0x3ca2x2c= path[_0x8699[74]](config[_0x8699[70]],_0x8699[71],_0x8699[72],_0x8699[73],_0x8699[109])};return _0x3ca2x16[_0x8699[110]](_0x3ca2x2c)})};exports[_0x8699[112]]= function(_0x3ca2x15,_0x3ca2x16,_0x3ca2x17){if(_0x3ca2x15[_0x8699[39]][_0x8699[38]]=== _0x8699[113]){var _0x3ca2x2c=path[_0x8699[74]](config[_0x8699[70]],_0x8699[71],_0x8699[72],_0x8699[73],_0x8699[114]);fs[_0x8699[111]](_0x3ca2x2c,function(_0x3ca2x2d){return _0x3ca2x16[_0x8699[110]](_0x3ca2x2c)})}else {return User[_0x8699[40]](_0x3ca2x15[_0x8699[39]][_0x8699[38]])[_0x8699[26]](function(_0x3ca2x1e){if(_0x3ca2x1e){var _0x3ca2x2c=path[_0x8699[74]](config[_0x8699[70]],_0x8699[71],_0x8699[72],_0x8699[73],_0x3ca2x1e[_0x8699[89]]?_0x3ca2x1e[_0x8699[89]]:_0x8699[109]);fs[_0x8699[111]](_0x3ca2x2c,function(_0x3ca2x2d){if(!_0x3ca2x2d){_0x3ca2x2c= path[_0x8699[74]](config[_0x8699[70]],_0x8699[71],_0x8699[72],_0x8699[73],_0x8699[109])};return _0x3ca2x16[_0x8699[110]](_0x3ca2x2c)})}else {return _0x3ca2x16[_0x8699[36]](500)}})[_0x8699[23]](function(_0x3ca2x18){return handleError(_0x3ca2x16,_0x3ca2x18)})}};exports[_0x8699[115]]= function(_0x3ca2x15,_0x3ca2x16,_0x3ca2x17){var _0x3ca2x22;return User[_0x8699[40]](_0x3ca2x15[_0x8699[39]][_0x8699[38]],{attributes:[_0x8699[38]]})[_0x8699[26]](function(_0x3ca2x1e){_0x3ca2x22= _0x3ca2x1e;if(!_0x3ca2x22){return _0x3ca2x16[_0x8699[36]](401)};switch(_0x3ca2x15[_0x8699[39]][_0x8699[130]]){case _0x8699[118]:return _0x3ca2x22[_0x8699[117]]({attributes:[_0x8699[56]]});case _0x8699[120]:return _0x3ca2x22[_0x8699[119]]({attributes:[_0x8699[38],_0x8699[56]]});case _0x8699[122]:return _0x3ca2x22[_0x8699[121]]({attributes:[_0x8699[38],_0x8699[56]]});case _0x8699[124]:return _0x3ca2x22[_0x8699[123]]({attributes:[_0x8699[38],_0x8699[56]]});case _0x8699[126]:return _0x3ca2x22[_0x8699[125]]({attributes:[_0x8699[38],_0x8699[56]]});case _0x8699[128]:return _0x3ca2x22[_0x8699[127]]({attributes:[_0x8699[38],_0x8699[56]]});default:throw new Error(_0x8699[129])}})[_0x8699[26]](function(_0x3ca2x2e){if(_0x3ca2x2e){return _0x3ca2x16[_0x8699[25]](200)[_0x8699[24]](_[_0x8699[116]](_0x3ca2x2e,function(_0x3ca2x2f){var _0x3ca2x30={name:_0x3ca2x2f[_0x8699[56]]};if(_0x3ca2x2f[_0x8699[38]]){_0x3ca2x30[_0x8699[38]]= _0x3ca2x2f[_0x8699[38]]};return _0x3ca2x30}))}})[_0x8699[23]](function(_0x3ca2x18){console[_0x8699[67]](_0x3ca2x18);return handleError(_0x3ca2x16,_0x3ca2x18)})};exports[_0x8699[131]]= function(_0x3ca2x15,_0x3ca2x16,_0x3ca2x17){var _0x3ca2x22;return User[_0x8699[40]](_0x3ca2x15[_0x8699[39]][_0x8699[38]],{attributes:[_0x8699[38]]})[_0x8699[26]](function(_0x3ca2x1e){_0x3ca2x22= _0x3ca2x1e;if(!_0x3ca2x22){return _0x3ca2x16[_0x8699[36]](401)};switch(_0x3ca2x15[_0x8699[39]][_0x8699[130]]){case _0x8699[118]:return _0x3ca2x22[_0x8699[132]](_0x3ca2x15[_0x8699[43]]);case _0x8699[120]:return _0x3ca2x22[_0x8699[133]](_0x3ca2x15[_0x8699[43]]);case _0x8699[122]:return _0x3ca2x22[_0x8699[134]](_0x3ca2x15[_0x8699[43]]);case _0x8699[124]:return _0x3ca2x22[_0x8699[135]](_0x3ca2x15[_0x8699[43]]);case _0x8699[126]:return _0x3ca2x22[_0x8699[136]](_0x3ca2x15[_0x8699[43]]);case _0x8699[128]:return _0x3ca2x22[_0x8699[137]](_0x3ca2x15[_0x8699[43]]);default:return null}})[_0x8699[26]](function(_0x3ca2x2e){return _0x3ca2x16[_0x8699[36]](_0x3ca2x2e?200:401)})[_0x8699[23]](function(_0x3ca2x18){console[_0x8699[67]](_0x3ca2x18)})};exports[_0x8699[138]]= function(_0x3ca2x15,_0x3ca2x16,_0x3ca2x17){var _0x3ca2x22;return User[_0x8699[40]](_0x3ca2x15[_0x8699[39]][_0x8699[38]],{attributes:[_0x8699[38]]})[_0x8699[26]](function(_0x3ca2x1e){_0x3ca2x22= _0x3ca2x1e;if(!_0x3ca2x22){return _0x3ca2x16[_0x8699[36]](401)};switch(_0x3ca2x15[_0x8699[39]][_0x8699[130]]){case _0x8699[118]:return _0x3ca2x22[_0x8699[139]](_0x3ca2x15[_0x8699[27]][_0x8699[59]]);case _0x8699[120]:return _0x3ca2x22[_0x8699[140]](_0x3ca2x15[_0x8699[27]][_0x8699[59]]);case _0x8699[122]:return _0x3ca2x22[_0x8699[141]](_0x3ca2x15[_0x8699[27]][_0x8699[59]]);case _0x8699[126]:return _0x3ca2x22[_0x8699[142]](_0x3ca2x15[_0x8699[27]][_0x8699[59]]);case _0x8699[124]:return _0x3ca2x22[_0x8699[143]](_0x3ca2x15[_0x8699[27]][_0x8699[59]]);case _0x8699[128]:return _0x3ca2x22[_0x8699[144]](_0x3ca2x15[_0x8699[27]][_0x8699[59]]);default:return null}})[_0x8699[26]](function(_0x3ca2x2e){return _0x3ca2x16[_0x8699[36]](_0x3ca2x2e?200:401)})[_0x8699[23]](function(_0x3ca2x18){console[_0x8699[67]](_0x3ca2x18)})};exports[_0x8699[145]]= function(_0x3ca2x15,_0x3ca2x16){var _0x3ca2x31={};_0x3ca2x31[_0x3ca2x15[_0x8699[39]][_0x8699[146]]]= _0x3ca2x15[_0x8699[43]][_0x8699[147]];return User[_0x8699[29]]({where:_0x3ca2x31})[_0x8699[26]](function(_0x3ca2x19){if(_0x3ca2x19[_0x8699[148]]){return _0x3ca2x16[_0x8699[25]](200)[_0x8699[24]]({isValid:false,value:_0x3ca2x15[_0x8699[43]][_0x8699[147]]})};return _0x3ca2x16[_0x8699[25]](200)[_0x8699[24]]({isValid:true,value:_0x3ca2x15[_0x8699[43]][_0x8699[147]]})})[_0x8699[23]](function(_0x3ca2x18){return handleError(_0x3ca2x16,_0x3ca2x18)})};exports[_0x8699[149]]= function(_0x3ca2x15,_0x3ca2x16,_0x3ca2x17){_0x3ca2x16[_0x8699[151]](_0x8699[150])};function handleError(_0x3ca2x16,_0x3ca2x18){return _0x3ca2x16[_0x8699[25]](500)[_0x8699[24]](_0x3ca2x18)} \ No newline at end of file diff --git a/server/api/user/user.events.js b/server/api/user/user.events.js index 7052b15..722af81 100644 --- a/server/api/user/user.events.js +++ b/server/api/user/user.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const User = require('../../models').User; - -var UserEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -UserEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - User.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - UserEvents.emit(event + ':' + doc._id, doc); - UserEvents.emit(event, doc); - done(null); - } -} - -module.exports = UserEvents; +var _0x8f4f=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x55\x73\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x8f4f[0];const EventEmitter=require(_0x8f4f[1]);const User=require(_0x8f4f[3])[_0x8f4f[2]];var UserEvents= new EventEmitter();UserEvents[_0x8f4f[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x8f4f[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x8f4f[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x8f4f[6]};for(var e in events){var event=events[e];User[_0x8f4f[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xa304x8,_0xa304x9,_0xa304xa){UserEvents[_0x8f4f[10]](event+ _0x8f4f[8]+ _0xa304x8[_0x8f4f[9]],_0xa304x8);UserEvents[_0x8f4f[10]](event,_0xa304x8);_0xa304xa(null)}}module[_0x8f4f[11]]= UserEvents \ No newline at end of file diff --git a/server/api/user/user.socket.js b/server/api/user/user.socket.js index a5f1bc9..e0c38c9 100644 --- a/server/api/user/user.socket.js +++ b/server/api/user/user.socket.js @@ -1,34 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const UserEvents = require('./user.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('user:' + event, socket); - - UserEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - if (doc.role === 'user' || doc.role === 'admin') { - socket.emit(event, doc); - } - }; -} - -function removeListener(event, listener) { - return function() { - UserEvents.removeListener(event, listener); - }; -} +var _0x2835=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x75\x73\x65\x72\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x75\x73\x65\x72\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x72\x6F\x6C\x65","\x75\x73\x65\x72","\x61\x64\x6D\x69\x6E","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x2835[0];const UserEvents=require(_0x2835[1]);var events=[_0x2835[2],_0x2835[3]];exports[_0x2835[4]]= function(_0x3510x3){for(var _0x3510x4=0,_0x3510x5=events[_0x2835[5]];_0x3510x4< _0x3510x5;_0x3510x4++){var _0x3510x6=events[_0x3510x4];var _0x3510x7=createListener(_0x2835[6]+ _0x3510x6,_0x3510x3);UserEvents[_0x2835[7]](_0x3510x6,_0x3510x7);_0x3510x3[_0x2835[7]](_0x2835[8],removeListener(_0x3510x6,_0x3510x7))}};function createListener(_0x3510x6,_0x3510x3){return function(_0x3510x9){if(_0x3510x9[_0x2835[9]]=== _0x2835[10]|| _0x3510x9[_0x2835[9]]=== _0x2835[11]){_0x3510x3[_0x2835[12]](_0x3510x6,_0x3510x9)}}}function removeListener(_0x3510x6,_0x3510x7){return function(){UserEvents[_0x2835[13]](_0x3510x6,_0x3510x7)}} \ No newline at end of file diff --git a/server/api/user_has_chat_queue/index.js b/server/api/user_has_chat_queue/index.js index bce94e7..43af371 100644 --- a/server/api/user_has_chat_queue/index.js +++ b/server/api/user_has_chat_queue/index.js @@ -1,15 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./user_has_chat_queue.controller'); - -var router = express.Router(); - -router.get('/', controller.index); -router.get('/:id', controller.show); -router.post('/', controller.create); -router.put('/:id', controller.update); -router.patch('/:id', controller.update); -router.delete('/:id', controller.destroy); - -module.exports = router; \ No newline at end of file +var _0x78aa=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x63\x68\x61\x74\x5F\x71\x75\x65\x75\x65\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2F","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x70\x61\x74\x63\x68","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0x78aa[0];var express=require(_0x78aa[1]);var controller=require(_0x78aa[2]);var router=express.Router();router[_0x78aa[5]](_0x78aa[3],controller[_0x78aa[4]]);router[_0x78aa[5]](_0x78aa[6],controller[_0x78aa[7]]);router[_0x78aa[9]](_0x78aa[3],controller[_0x78aa[8]]);router[_0x78aa[11]](_0x78aa[6],controller[_0x78aa[10]]);router[_0x78aa[12]](_0x78aa[6],controller[_0x78aa[10]]);router[_0x78aa[14]](_0x78aa[6],controller[_0x78aa[13]]);module[_0x78aa[15]]= router \ No newline at end of file diff --git a/server/api/user_has_chat_queue/user_has_chat_queue.controller.js b/server/api/user_has_chat_queue/user_has_chat_queue.controller.js index b399892..2fb4af1 100644 --- a/server/api/user_has_chat_queue/user_has_chat_queue.controller.js +++ b/server/api/user_has_chat_queue/user_has_chat_queue.controller.js @@ -1,103 +1 @@ -'use strict'; - -var _ = require('lodash'); -var UserHasChatQueue = require('../../models').UserHasChatQueue; - -// Get list of userHasChatQueues -exports.index = function(req, res) { - UserHasChatQueue - .findAll(req.query ? { - where: req.query - } : {}) - .then(function(userHasChatQueues) { - return res.status(200).send(userHasChatQueues); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get a single userHasChatQueue -exports.show = function(req, res) { - UserHasChatQueue - .findById(req.params.id) - .then(function(userHasChatQueue) { - if (!userHasChatQueue) { - return res.sendStatus(404); - } - return res.send(userHasChatQueue); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Creates a new userHasChatQueue in the DB. -exports.create = function(req, res) { - UserHasChatQueue - .create(req.body) - .then(function(userHasChatQueue) { - return res.status(201).send(userHasChatQueue); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Updates an existing userHasChatQueue in the DB. -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - UserHasChatQueue - .find({ - where: { - id: req.params.id - } - }) - .then(function(userHasChatQueue) { - if (!userHasChatQueue) { - return res.sendStatus(404); - } - var updated = _.merge(userHasChatQueue, req.body); - updated.save() - .then(function() { - return res.status(200).send(userHasChatQueue); - }) - .catch(function(err) { - return handleError(res, err); - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes a userHasChatQueue from the DB. -exports.destroy = function(req, res) { - UserHasChatQueue - .find({ - where: { - id: req.params.id - } - }) - .then(function(userHasChatQueue) { - if (!userHasChatQueue) { - return res.sendStatus(404); - } - userHasChatQueue.destroy() - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0x800e=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x55\x73\x65\x72\x48\x61\x73\x43\x68\x61\x74\x51\x75\x65\x75\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x66\x69\x6E\x64","\x64\x65\x73\x74\x72\x6F\x79"];_0x800e[0];var _=require(_0x800e[1]);var UserHasChatQueue=require(_0x800e[3])[_0x800e[2]];exports[_0x800e[4]]= function(_0x8c97x3,_0x8c97x4){UserHasChatQueue[_0x800e[10]](_0x8c97x3[_0x800e[9]]?{where:_0x8c97x3[_0x800e[9]]}:{})[_0x800e[8]](function(_0x8c97x6){return _0x8c97x4[_0x800e[7]](200)[_0x800e[6]](_0x8c97x6)})[_0x800e[5]](function(_0x8c97x5){return handleError(_0x8c97x4,_0x8c97x5)})};exports[_0x800e[11]]= function(_0x8c97x3,_0x8c97x4){UserHasChatQueue[_0x800e[15]](_0x8c97x3[_0x800e[14]][_0x800e[13]])[_0x800e[8]](function(_0x8c97x7){if(!_0x8c97x7){return _0x8c97x4[_0x800e[12]](404)};return _0x8c97x4[_0x800e[6]](_0x8c97x7)})[_0x800e[5]](function(_0x8c97x5){return handleError(_0x8c97x4,_0x8c97x5)})};exports[_0x800e[16]]= function(_0x8c97x3,_0x8c97x4){UserHasChatQueue[_0x800e[16]](_0x8c97x3[_0x800e[17]])[_0x800e[8]](function(_0x8c97x7){return _0x8c97x4[_0x800e[7]](201)[_0x800e[6]](_0x8c97x7)})[_0x800e[5]](function(_0x8c97x5){return handleError(_0x8c97x4,_0x8c97x5)})};exports[_0x800e[18]]= function(_0x8c97x3,_0x8c97x4){if(_0x8c97x3[_0x800e[17]][_0x800e[13]]){delete _0x8c97x3[_0x800e[17]][_0x800e[13]]};UserHasChatQueue[_0x800e[21]]({where:{id:_0x8c97x3[_0x800e[14]][_0x800e[13]]}})[_0x800e[8]](function(_0x8c97x7){if(!_0x8c97x7){return _0x8c97x4[_0x800e[12]](404)};var _0x8c97x8=_[_0x800e[19]](_0x8c97x7,_0x8c97x3[_0x800e[17]]);_0x8c97x8[_0x800e[20]]()[_0x800e[8]](function(){return _0x8c97x4[_0x800e[7]](200)[_0x800e[6]](_0x8c97x7)})[_0x800e[5]](function(_0x8c97x5){return handleError(_0x8c97x4,_0x8c97x5)})})[_0x800e[5]](function(_0x8c97x5){return handleError(_0x8c97x4,_0x8c97x5)})};exports[_0x800e[22]]= function(_0x8c97x3,_0x8c97x4){UserHasChatQueue[_0x800e[21]]({where:{id:_0x8c97x3[_0x800e[14]][_0x800e[13]]}})[_0x800e[8]](function(_0x8c97x7){if(!_0x8c97x7){return _0x8c97x4[_0x800e[12]](404)};_0x8c97x7[_0x800e[22]]()[_0x800e[8]](function(){return _0x8c97x4[_0x800e[12]](204)})[_0x800e[5]](function(_0x8c97x5){return handleError(_0x8c97x4,_0x8c97x5)})})[_0x800e[5]](function(_0x8c97x5){return handleError(_0x8c97x4,_0x8c97x5)})};function handleError(_0x8c97x4,_0x8c97x5){return _0x8c97x4[_0x800e[7]](500)[_0x800e[6]](_0x8c97x5)} \ No newline at end of file diff --git a/server/api/user_has_chat_queue/user_has_chat_queue.events.js b/server/api/user_has_chat_queue/user_has_chat_queue.events.js index 7289f5f..af1d3d1 100644 --- a/server/api/user_has_chat_queue/user_has_chat_queue.events.js +++ b/server/api/user_has_chat_queue/user_has_chat_queue.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const UserHasChatQueue = require('../../models').UserHasChatQueue; - -var UserHasChatQueueEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -UserHasChatQueueEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - UserHasChatQueue.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - UserHasChatQueueEvents.emit(event + ':' + doc._id, doc); - UserHasChatQueueEvents.emit(event, doc); - done(null); - } -} - -module.exports = UserHasChatQueueEvents; +var _0xa937=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x55\x73\x65\x72\x48\x61\x73\x43\x68\x61\x74\x51\x75\x65\x75\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xa937[0];const EventEmitter=require(_0xa937[1]);const UserHasChatQueue=require(_0xa937[3])[_0xa937[2]];var UserHasChatQueueEvents= new EventEmitter();UserHasChatQueueEvents[_0xa937[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xa937[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xa937[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xa937[6]};for(var e in events){var event=events[e];UserHasChatQueue[_0xa937[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xf3f9x8,_0xf3f9x9,_0xf3f9xa){UserHasChatQueueEvents[_0xa937[10]](event+ _0xa937[8]+ _0xf3f9x8[_0xa937[9]],_0xf3f9x8);UserHasChatQueueEvents[_0xa937[10]](event,_0xf3f9x8);_0xf3f9xa(null)}}module[_0xa937[11]]= UserHasChatQueueEvents \ No newline at end of file diff --git a/server/api/user_has_chat_queue/user_has_chat_queue.socket.js b/server/api/user_has_chat_queue/user_has_chat_queue.socket.js index cbe8860..520a30b 100644 --- a/server/api/user_has_chat_queue/user_has_chat_queue.socket.js +++ b/server/api/user_has_chat_queue/user_has_chat_queue.socket.js @@ -1,32 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const UserHasChatQueueEvents = require('./user_has_chat_queue.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('user_has_chat_queue:' + event, socket); - - UserHasChatQueueEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - UserHasChatQueueEvents.removeListener(event, listener); - }; -} +var _0xcf31=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x63\x68\x61\x74\x5F\x71\x75\x65\x75\x65\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x63\x68\x61\x74\x5F\x71\x75\x65\x75\x65\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xcf31[0];const UserHasChatQueueEvents=require(_0xcf31[1]);var events=[_0xcf31[2],_0xcf31[3]];exports[_0xcf31[4]]= function(_0xff7bx3){for(var _0xff7bx4=0,_0xff7bx5=events[_0xcf31[5]];_0xff7bx4< _0xff7bx5;_0xff7bx4++){var _0xff7bx6=events[_0xff7bx4];var _0xff7bx7=createListener(_0xcf31[6]+ _0xff7bx6,_0xff7bx3);UserHasChatQueueEvents[_0xcf31[7]](_0xff7bx6,_0xff7bx7);_0xff7bx3[_0xcf31[7]](_0xcf31[8],removeListener(_0xff7bx6,_0xff7bx7))}};function createListener(_0xff7bx6,_0xff7bx3){return function(_0xff7bx9){_0xff7bx3[_0xcf31[9]](_0xff7bx6,_0xff7bx9)}}function removeListener(_0xff7bx6,_0xff7bx7){return function(){UserHasChatQueueEvents[_0xcf31[10]](_0xff7bx6,_0xff7bx7)}} \ No newline at end of file diff --git a/server/api/user_has_chat_queue/user_has_chat_queue_permit.events.js b/server/api/user_has_chat_queue/user_has_chat_queue_permit.events.js index 985d823..2d26e54 100644 --- a/server/api/user_has_chat_queue/user_has_chat_queue_permit.events.js +++ b/server/api/user_has_chat_queue/user_has_chat_queue_permit.events.js @@ -1,35 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const UserHasChatQueuePermit = require('../../models').UserHasChatQueuePermit; - -var UserHasChatQueuePermitEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -UserHasChatQueuePermitEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - UserHasChatQueuePermit.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - UserHasChatQueuePermitEvents.emit(event + ':' + doc._id, doc); - UserHasChatQueuePermitEvents.emit(event, doc); - done(null); - } -} - -module.exports = UserHasChatQueuePermitEvents; +var _0x5234=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x55\x73\x65\x72\x48\x61\x73\x43\x68\x61\x74\x51\x75\x65\x75\x65\x50\x65\x72\x6D\x69\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x5234[0];const EventEmitter=require(_0x5234[1]);const UserHasChatQueuePermit=require(_0x5234[3])[_0x5234[2]];var UserHasChatQueuePermitEvents= new EventEmitter();UserHasChatQueuePermitEvents[_0x5234[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x5234[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x5234[6]};for(var e in events){var event=events[e];UserHasChatQueuePermit[_0x5234[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x7665x8,_0x7665x9,_0x7665xa){UserHasChatQueuePermitEvents[_0x5234[10]](event+ _0x5234[8]+ _0x7665x8[_0x5234[9]],_0x7665x8);UserHasChatQueuePermitEvents[_0x5234[10]](event,_0x7665x8);_0x7665xa(null)}}module[_0x5234[11]]= UserHasChatQueuePermitEvents \ No newline at end of file diff --git a/server/api/user_has_chat_queue/user_has_chat_queue_permit.socket.js b/server/api/user_has_chat_queue/user_has_chat_queue_permit.socket.js index 4ffea53..1b9cc0b 100644 --- a/server/api/user_has_chat_queue/user_has_chat_queue_permit.socket.js +++ b/server/api/user_has_chat_queue/user_has_chat_queue_permit.socket.js @@ -1,34 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const UserHasChatQueuePermitEvents = require('./user_has_chat_queue_permit.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('user_has_chat_queue_permit:' + event, socket); - - UserHasChatQueuePermitEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - if (socket.userId === doc.Userid) { - socket.emit('user_has_chat_queue_permit:change'); - } - }; -} - -function removeListener(event, listener) { - return function() { - UserHasChatQueuePermitEvents.removeListener(event, listener); - }; -} +var _0xf482=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x63\x68\x61\x74\x5F\x71\x75\x65\x75\x65\x5F\x70\x65\x72\x6D\x69\x74\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x63\x68\x61\x74\x5F\x71\x75\x65\x75\x65\x5F\x70\x65\x72\x6D\x69\x74\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x75\x73\x65\x72\x49\x64","\x55\x73\x65\x72\x69\x64","\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x63\x68\x61\x74\x5F\x71\x75\x65\x75\x65\x5F\x70\x65\x72\x6D\x69\x74\x3A\x63\x68\x61\x6E\x67\x65","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xf482[0];const UserHasChatQueuePermitEvents=require(_0xf482[1]);var events=[_0xf482[2],_0xf482[3]];exports[_0xf482[4]]= function(_0x70fcx3){for(var _0x70fcx4=0,_0x70fcx5=events[_0xf482[5]];_0x70fcx4< _0x70fcx5;_0x70fcx4++){var _0x70fcx6=events[_0x70fcx4];var _0x70fcx7=createListener(_0xf482[6]+ _0x70fcx6,_0x70fcx3);UserHasChatQueuePermitEvents[_0xf482[7]](_0x70fcx6,_0x70fcx7);_0x70fcx3[_0xf482[7]](_0xf482[8],removeListener(_0x70fcx6,_0x70fcx7))}};function createListener(_0x70fcx6,_0x70fcx3){return function(_0x70fcx9){if(_0x70fcx3[_0xf482[9]]=== _0x70fcx9[_0xf482[10]]){_0x70fcx3[_0xf482[12]](_0xf482[11])}}}function removeListener(_0x70fcx6,_0x70fcx7){return function(){UserHasChatQueuePermitEvents[_0xf482[13]](_0x70fcx6,_0x70fcx7)}} \ No newline at end of file diff --git a/server/api/user_has_chat_room/index.js b/server/api/user_has_chat_room/index.js index 381448d..e722ce0 100644 --- a/server/api/user_has_chat_room/index.js +++ b/server/api/user_has_chat_room/index.js @@ -1,16 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./user_has_chat_room.controller'); -var auth = require('../../auth/auth.service'); - -var router = express.Router(); - -// router.get('/', controller.index); -// router.get('/:id', controller.show); -// router.post('/', controller.create); -router.put('/:userId/:chatRoomId', controller.update); -// router.patch('/:id', controller.update); -// router.delete('/:id', controller.destroy); - -module.exports = router; +var _0xda9e=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x63\x68\x61\x74\x5F\x72\x6F\x6F\x6D\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F\x3A\x75\x73\x65\x72\x49\x64\x2F\x3A\x63\x68\x61\x74\x52\x6F\x6F\x6D\x49\x64","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xda9e[0];var express=require(_0xda9e[1]);var controller=require(_0xda9e[2]);var auth=require(_0xda9e[3]);var router=express.Router();router[_0xda9e[6]](_0xda9e[4],controller[_0xda9e[5]]);module[_0xda9e[7]]= router \ No newline at end of file diff --git a/server/api/user_has_chat_room/user_has_chat_room.controller.js b/server/api/user_has_chat_room/user_has_chat_room.controller.js index d747380..ec0fc2a 100644 --- a/server/api/user_has_chat_room/user_has_chat_room.controller.js +++ b/server/api/user_has_chat_room/user_has_chat_room.controller.js @@ -1,96 +1 @@ -'use strict'; - -var _ = require('lodash'); -var UserHasChatRoom = require('../../models').UserHasChatRoom; - -// Get list of user_has_chat_rooms -exports.index = function(req, res) { - UserHasChatRoom - .findAll() - .then(function (user_has_chat_rooms) { - return res.status(200).send(user_has_chat_rooms); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get a single user_has_chat_room -exports.show = function(req, res) { - UserHasChatRoom - .findById(req.params.id) - .then(function (user_has_chat_room) { - if(!user_has_chat_room) { return res.sendStatus(404); } - return res.send(user_has_chat_room); - }) - .catch(function(err){ - return handleError(res, err); - }); -}; - -// Creates a new user_has_chat_room in the DB. -exports.create = function(req, res) { - - UserHasChatRoom - .create(req.body) - .then(function(user_has_chat_room) { - return res.status(201).send(user_has_chat_room); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Updates an existing user_has_chat_room in the DB. -exports.update = function(req, res) { - - UserHasChatRoom - .findOne({ - where: { - UserId: req.params.userId, - ChatRoomId: req.params.chatRoomId - }, - limit: 1 - }) - .then(function (user_has_chat_room) { - if (!user_has_chat_room) { - return res.sendStatus(404); - } - - user_has_chat_room - .updateAttributes(req.body) - .then(function () { - return res.status(200).send(user_has_chat_room); - }) - .catch(function(err) { - return handleError(res, err); - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes a user_has_chat_room from the DB. -exports.destroy = function(req, res) { - - UserHasChatRoom - .findById(req.params.id) - .then(function (user_has_chat_room) { - if(!user_has_chat_room) { return res.sendStatus(404); } - user_has_chat_room.destroy() - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0xd4f4=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x55\x73\x65\x72\x48\x61\x73\x43\x68\x61\x74\x52\x6F\x6F\x6D","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x75\x73\x65\x72\x49\x64","\x63\x68\x61\x74\x52\x6F\x6F\x6D\x49\x64","\x66\x69\x6E\x64\x4F\x6E\x65","\x64\x65\x73\x74\x72\x6F\x79"];_0xd4f4[0];var _=require(_0xd4f4[1]);var UserHasChatRoom=require(_0xd4f4[3])[_0xd4f4[2]];exports[_0xd4f4[4]]= function(_0x6a76x3,_0x6a76x4){UserHasChatRoom[_0xd4f4[9]]()[_0xd4f4[8]](function(_0x6a76x6){return _0x6a76x4[_0xd4f4[7]](200)[_0xd4f4[6]](_0x6a76x6)})[_0xd4f4[5]](function(_0x6a76x5){return handleError(_0x6a76x4,_0x6a76x5)})};exports[_0xd4f4[10]]= function(_0x6a76x3,_0x6a76x4){UserHasChatRoom[_0xd4f4[14]](_0x6a76x3[_0xd4f4[13]][_0xd4f4[12]])[_0xd4f4[8]](function(_0x6a76x7){if(!_0x6a76x7){return _0x6a76x4[_0xd4f4[11]](404)};return _0x6a76x4[_0xd4f4[6]](_0x6a76x7)})[_0xd4f4[5]](function(_0x6a76x5){return handleError(_0x6a76x4,_0x6a76x5)})};exports[_0xd4f4[15]]= function(_0x6a76x3,_0x6a76x4){UserHasChatRoom[_0xd4f4[15]](_0x6a76x3[_0xd4f4[16]])[_0xd4f4[8]](function(_0x6a76x7){return _0x6a76x4[_0xd4f4[7]](201)[_0xd4f4[6]](_0x6a76x7)})[_0xd4f4[5]](function(_0x6a76x5){return handleError(_0x6a76x4,_0x6a76x5)})};exports[_0xd4f4[17]]= function(_0x6a76x3,_0x6a76x4){UserHasChatRoom[_0xd4f4[21]]({where:{UserId:_0x6a76x3[_0xd4f4[13]][_0xd4f4[19]],ChatRoomId:_0x6a76x3[_0xd4f4[13]][_0xd4f4[20]]},limit:1})[_0xd4f4[8]](function(_0x6a76x7){if(!_0x6a76x7){return _0x6a76x4[_0xd4f4[11]](404)};_0x6a76x7[_0xd4f4[18]](_0x6a76x3[_0xd4f4[16]])[_0xd4f4[8]](function(){return _0x6a76x4[_0xd4f4[7]](200)[_0xd4f4[6]](_0x6a76x7)})[_0xd4f4[5]](function(_0x6a76x5){return handleError(_0x6a76x4,_0x6a76x5)})})[_0xd4f4[5]](function(_0x6a76x5){return handleError(_0x6a76x4,_0x6a76x5)})};exports[_0xd4f4[22]]= function(_0x6a76x3,_0x6a76x4){UserHasChatRoom[_0xd4f4[14]](_0x6a76x3[_0xd4f4[13]][_0xd4f4[12]])[_0xd4f4[8]](function(_0x6a76x7){if(!_0x6a76x7){return _0x6a76x4[_0xd4f4[11]](404)};_0x6a76x7[_0xd4f4[22]]()[_0xd4f4[8]](function(){return _0x6a76x4[_0xd4f4[11]](204)})[_0xd4f4[5]](function(_0x6a76x5){return handleError(_0x6a76x4,_0x6a76x5)})})[_0xd4f4[5]](function(_0x6a76x5){return handleError(_0x6a76x4,_0x6a76x5)})};function handleError(_0x6a76x4,_0x6a76x5){return _0x6a76x4[_0xd4f4[7]](500)[_0xd4f4[6]](_0x6a76x5)} \ No newline at end of file diff --git a/server/api/user_has_chat_room/user_has_chat_room.events.js b/server/api/user_has_chat_room/user_has_chat_room.events.js index 619a0ae..8c56bea 100644 --- a/server/api/user_has_chat_room/user_has_chat_room.events.js +++ b/server/api/user_has_chat_room/user_has_chat_room.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const UserHasChatRoom = require('../../models').UserHasChatRoom; - -var UserHasChatRoomEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -UserHasChatRoomEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - UserHasChatRoom.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - UserHasChatRoomEvents.emit(event + ':' + doc._id, doc); - UserHasChatRoomEvents.emit(event, doc); - done(null); - } -} - -module.exports = UserHasChatRoomEvents; +var _0xf7bc=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x55\x73\x65\x72\x48\x61\x73\x43\x68\x61\x74\x52\x6F\x6F\x6D","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xf7bc[0];const EventEmitter=require(_0xf7bc[1]);const UserHasChatRoom=require(_0xf7bc[3])[_0xf7bc[2]];var UserHasChatRoomEvents= new EventEmitter();UserHasChatRoomEvents[_0xf7bc[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xf7bc[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xf7bc[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xf7bc[6]};for(var e in events){var event=events[e];UserHasChatRoom[_0xf7bc[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x987bx8,_0x987bx9,_0x987bxa){UserHasChatRoomEvents[_0xf7bc[10]](event+ _0xf7bc[8]+ _0x987bx8[_0xf7bc[9]],_0x987bx8);UserHasChatRoomEvents[_0xf7bc[10]](event,_0x987bx8);_0x987bxa(null)}}module[_0xf7bc[11]]= UserHasChatRoomEvents \ No newline at end of file diff --git a/server/api/user_has_chat_room/user_has_chat_room.socket.js b/server/api/user_has_chat_room/user_has_chat_room.socket.js index 20d7dd6..479d098 100644 --- a/server/api/user_has_chat_room/user_has_chat_room.socket.js +++ b/server/api/user_has_chat_room/user_has_chat_room.socket.js @@ -1,60 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const UserHasChatRoomEvents = require('./user_has_chat_room.events'); -const ChatRoom = require('../../models').ChatRoom; -const User = require('../../models').User; - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('user_has_chat_room:' + event, socket); - - UserHasChatRoomEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - switch (event) { - case 'user_has_chat_room:save': - return ChatRoom - .findById(doc.ChatRoomId, { - include: [{ - model: User, - attributes: ['id'] - }] - }) - .then(function(chatRoom) { - chatRoom.Users.forEach(function(user) { - if (socket.userId == user.id) { - socket.emit(event, doc); - } - }); - }) - .catch(function(err) { - console.error(err); - }); - - case 'user_has_chat_room:remove': - socket.emit(event, doc); - break; - - default: - - } - }; -} - -function removeListener(event, listener) { - return function() { - UserHasChatRoomEvents.removeListener(event, listener); - }; -} +var _0xf1ba=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x63\x68\x61\x74\x5F\x72\x6F\x6F\x6D\x2E\x65\x76\x65\x6E\x74\x73","\x43\x68\x61\x74\x52\x6F\x6F\x6D","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x55\x73\x65\x72","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x63\x68\x61\x74\x5F\x72\x6F\x6F\x6D\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x72\x72\x6F\x72","\x63\x61\x74\x63\x68","\x75\x73\x65\x72\x49\x64","\x69\x64","\x65\x6D\x69\x74","\x66\x6F\x72\x45\x61\x63\x68","\x55\x73\x65\x72\x73","\x74\x68\x65\x6E","\x66\x69\x6E\x64\x42\x79\x49\x64","\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x63\x68\x61\x74\x5F\x72\x6F\x6F\x6D\x3A\x73\x61\x76\x65","\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x63\x68\x61\x74\x5F\x72\x6F\x6F\x6D\x3A\x72\x65\x6D\x6F\x76\x65","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xf1ba[0];const UserHasChatRoomEvents=require(_0xf1ba[1]);const ChatRoom=require(_0xf1ba[3])[_0xf1ba[2]];const User=require(_0xf1ba[3])[_0xf1ba[4]];var events=[_0xf1ba[5],_0xf1ba[6]];exports[_0xf1ba[7]]= function(_0xf7e4x5){for(var _0xf7e4x6=0,_0xf7e4x7=events[_0xf1ba[8]];_0xf7e4x6< _0xf7e4x7;_0xf7e4x6++){var _0xf7e4x8=events[_0xf7e4x6];var _0xf7e4x9=createListener(_0xf1ba[9]+ _0xf7e4x8,_0xf7e4x5);UserHasChatRoomEvents[_0xf1ba[10]](_0xf7e4x8,_0xf7e4x9);_0xf7e4x5[_0xf1ba[10]](_0xf1ba[11],removeListener(_0xf7e4x8,_0xf7e4x9))}};function createListener(_0xf7e4x8,_0xf7e4x5){return function(_0xf7e4xb){switch(_0xf7e4x8){case _0xf1ba[21]:return ChatRoom[_0xf1ba[20]](_0xf7e4xb.ChatRoomId,{include:[{model:User,attributes:[_0xf1ba[15]]}]})[_0xf1ba[19]](function(_0xf7e4xd){_0xf7e4xd[_0xf1ba[18]][_0xf1ba[17]](function(_0xf7e4xe){if(_0xf7e4x5[_0xf1ba[14]]== _0xf7e4xe[_0xf1ba[15]]){_0xf7e4x5[_0xf1ba[16]](_0xf7e4x8,_0xf7e4xb)}})})[_0xf1ba[13]](function(_0xf7e4xc){console[_0xf1ba[12]](_0xf7e4xc)});case _0xf1ba[22]:_0xf7e4x5[_0xf1ba[16]](_0xf7e4x8,_0xf7e4xb);break;default:}}}function removeListener(_0xf7e4x8,_0xf7e4x9){return function(){UserHasChatRoomEvents[_0xf1ba[23]](_0xf7e4x8,_0xf7e4x9)}} \ No newline at end of file diff --git a/server/api/user_has_fax_queue/index.js b/server/api/user_has_fax_queue/index.js index 5805e3d..b06b3ac 100644 --- a/server/api/user_has_fax_queue/index.js +++ b/server/api/user_has_fax_queue/index.js @@ -1,15 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./user_has_fax_queue.controller'); - -var router = express.Router(); - -router.get('/', controller.index); -router.get('/:id', controller.show); -router.post('/', controller.create); -router.put('/:id', controller.update); -router.patch('/:id', controller.update); -router.delete('/:id', controller.destroy); - -module.exports = router; \ No newline at end of file +var _0x91e4=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x66\x61\x78\x5F\x71\x75\x65\x75\x65\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2F","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x70\x61\x74\x63\x68","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0x91e4[0];var express=require(_0x91e4[1]);var controller=require(_0x91e4[2]);var router=express.Router();router[_0x91e4[5]](_0x91e4[3],controller[_0x91e4[4]]);router[_0x91e4[5]](_0x91e4[6],controller[_0x91e4[7]]);router[_0x91e4[9]](_0x91e4[3],controller[_0x91e4[8]]);router[_0x91e4[11]](_0x91e4[6],controller[_0x91e4[10]]);router[_0x91e4[12]](_0x91e4[6],controller[_0x91e4[10]]);router[_0x91e4[14]](_0x91e4[6],controller[_0x91e4[13]]);module[_0x91e4[15]]= router \ No newline at end of file diff --git a/server/api/user_has_fax_queue/user_has_fax_queue.controller.js b/server/api/user_has_fax_queue/user_has_fax_queue.controller.js index f92e570..f32bb42 100644 --- a/server/api/user_has_fax_queue/user_has_fax_queue.controller.js +++ b/server/api/user_has_fax_queue/user_has_fax_queue.controller.js @@ -1,103 +1 @@ -'use strict'; - -var _ = require('lodash'); -var UserHasFaxQueue = require('../../models').UserHasFaxQueue; - -// Get list of user_has_fax_queues -exports.index = function(req, res) { - UserHasFaxQueue - .findAll(req.query ? { - where: req.query - } : {}) - .then(function(user_has_fax_queues) { - return res.status(200).send(user_has_fax_queues); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get a single user_has_fax_queue -exports.show = function(req, res) { - UserHasFaxQueue - .findById(req.params.id) - .then(function(user_has_fax_queue) { - if (!user_has_fax_queue) { - return res.sendStatus(404); - } - return res.send(user_has_fax_queue); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Creates a new user_has_fax_queue in the DB. -exports.create = function(req, res) { - UserHasFaxQueue - .create(req.body) - .then(function(user_has_fax_queue) { - return res.status(201).send(user_has_fax_queue); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Updates an existing user_has_fax_queue in the DB. -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - UserHasFaxQueue - .find({ - where: { - id: req.params.id - } - }) - .then(function(user_has_fax_queue) { - if (!user_has_fax_queue) { - return res.sendStatus(404); - } - var updated = _.merge(user_has_fax_queue, req.body); - updated.save() - .then(function() { - return res.status(200).send(user_has_fax_queue); - }) - .catch(function(err) { - return handleError(res, err); - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes a user_has_fax_queue from the DB. -exports.destroy = function(req, res) { - UserHasFaxQueue - .find({ - where: { - id: req.params.id - } - }) - .then(function(user_has_fax_queue) { - if (!user_has_fax_queue) { - return res.sendStatus(404); - } - user_has_fax_queue.destroy() - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0xaafd=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x55\x73\x65\x72\x48\x61\x73\x46\x61\x78\x51\x75\x65\x75\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x66\x69\x6E\x64","\x64\x65\x73\x74\x72\x6F\x79"];_0xaafd[0];var _=require(_0xaafd[1]);var UserHasFaxQueue=require(_0xaafd[3])[_0xaafd[2]];exports[_0xaafd[4]]= function(_0xbb28x3,_0xbb28x4){UserHasFaxQueue[_0xaafd[10]](_0xbb28x3[_0xaafd[9]]?{where:_0xbb28x3[_0xaafd[9]]}:{})[_0xaafd[8]](function(_0xbb28x6){return _0xbb28x4[_0xaafd[7]](200)[_0xaafd[6]](_0xbb28x6)})[_0xaafd[5]](function(_0xbb28x5){return handleError(_0xbb28x4,_0xbb28x5)})};exports[_0xaafd[11]]= function(_0xbb28x3,_0xbb28x4){UserHasFaxQueue[_0xaafd[15]](_0xbb28x3[_0xaafd[14]][_0xaafd[13]])[_0xaafd[8]](function(_0xbb28x7){if(!_0xbb28x7){return _0xbb28x4[_0xaafd[12]](404)};return _0xbb28x4[_0xaafd[6]](_0xbb28x7)})[_0xaafd[5]](function(_0xbb28x5){return handleError(_0xbb28x4,_0xbb28x5)})};exports[_0xaafd[16]]= function(_0xbb28x3,_0xbb28x4){UserHasFaxQueue[_0xaafd[16]](_0xbb28x3[_0xaafd[17]])[_0xaafd[8]](function(_0xbb28x7){return _0xbb28x4[_0xaafd[7]](201)[_0xaafd[6]](_0xbb28x7)})[_0xaafd[5]](function(_0xbb28x5){return handleError(_0xbb28x4,_0xbb28x5)})};exports[_0xaafd[18]]= function(_0xbb28x3,_0xbb28x4){if(_0xbb28x3[_0xaafd[17]][_0xaafd[13]]){delete _0xbb28x3[_0xaafd[17]][_0xaafd[13]]};UserHasFaxQueue[_0xaafd[21]]({where:{id:_0xbb28x3[_0xaafd[14]][_0xaafd[13]]}})[_0xaafd[8]](function(_0xbb28x7){if(!_0xbb28x7){return _0xbb28x4[_0xaafd[12]](404)};var _0xbb28x8=_[_0xaafd[19]](_0xbb28x7,_0xbb28x3[_0xaafd[17]]);_0xbb28x8[_0xaafd[20]]()[_0xaafd[8]](function(){return _0xbb28x4[_0xaafd[7]](200)[_0xaafd[6]](_0xbb28x7)})[_0xaafd[5]](function(_0xbb28x5){return handleError(_0xbb28x4,_0xbb28x5)})})[_0xaafd[5]](function(_0xbb28x5){return handleError(_0xbb28x4,_0xbb28x5)})};exports[_0xaafd[22]]= function(_0xbb28x3,_0xbb28x4){UserHasFaxQueue[_0xaafd[21]]({where:{id:_0xbb28x3[_0xaafd[14]][_0xaafd[13]]}})[_0xaafd[8]](function(_0xbb28x7){if(!_0xbb28x7){return _0xbb28x4[_0xaafd[12]](404)};_0xbb28x7[_0xaafd[22]]()[_0xaafd[8]](function(){return _0xbb28x4[_0xaafd[12]](204)})[_0xaafd[5]](function(_0xbb28x5){return handleError(_0xbb28x4,_0xbb28x5)})})[_0xaafd[5]](function(_0xbb28x5){return handleError(_0xbb28x4,_0xbb28x5)})};function handleError(_0xbb28x4,_0xbb28x5){return _0xbb28x4[_0xaafd[7]](500)[_0xaafd[6]](_0xbb28x5)} \ No newline at end of file diff --git a/server/api/user_has_fax_queue/user_has_fax_queue.events.js b/server/api/user_has_fax_queue/user_has_fax_queue.events.js index 081e428..5cd194f 100644 --- a/server/api/user_has_fax_queue/user_has_fax_queue.events.js +++ b/server/api/user_has_fax_queue/user_has_fax_queue.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const UserHasFaxQueue = require('../../models').UserHasFaxQueue; - -var UserHasFaxQueueEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -UserHasFaxQueueEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - UserHasFaxQueue.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - UserHasFaxQueueEvents.emit(event + ':' + doc._id, doc); - UserHasFaxQueueEvents.emit(event, doc); - done(null); - } -} - -module.exports = UserHasFaxQueueEvents; +var _0x264b=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x55\x73\x65\x72\x48\x61\x73\x46\x61\x78\x51\x75\x65\x75\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x264b[0];const EventEmitter=require(_0x264b[1]);const UserHasFaxQueue=require(_0x264b[3])[_0x264b[2]];var UserHasFaxQueueEvents= new EventEmitter();UserHasFaxQueueEvents[_0x264b[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x264b[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x264b[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x264b[6]};for(var e in events){var event=events[e];UserHasFaxQueue[_0x264b[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xb793x8,_0xb793x9,_0xb793xa){UserHasFaxQueueEvents[_0x264b[10]](event+ _0x264b[8]+ _0xb793x8[_0x264b[9]],_0xb793x8);UserHasFaxQueueEvents[_0x264b[10]](event,_0xb793x8);_0xb793xa(null)}}module[_0x264b[11]]= UserHasFaxQueueEvents \ No newline at end of file diff --git a/server/api/user_has_fax_queue/user_has_fax_queue.socket.js b/server/api/user_has_fax_queue/user_has_fax_queue.socket.js index 93b3bcc..43faf88 100644 --- a/server/api/user_has_fax_queue/user_has_fax_queue.socket.js +++ b/server/api/user_has_fax_queue/user_has_fax_queue.socket.js @@ -1,32 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const UserHasFaxQueueEvents = require('./user_has_fax_queue.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('user_has_fax_queue:' + event, socket); - - UserHasFaxQueueEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - UserHasFaxQueueEvents.removeListener(event, listener); - }; -} +var _0x878b=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x66\x61\x78\x5F\x71\x75\x65\x75\x65\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x66\x61\x78\x5F\x71\x75\x65\x75\x65\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x878b[0];const UserHasFaxQueueEvents=require(_0x878b[1]);var events=[_0x878b[2],_0x878b[3]];exports[_0x878b[4]]= function(_0x8ef8x3){for(var _0x8ef8x4=0,_0x8ef8x5=events[_0x878b[5]];_0x8ef8x4< _0x8ef8x5;_0x8ef8x4++){var _0x8ef8x6=events[_0x8ef8x4];var _0x8ef8x7=createListener(_0x878b[6]+ _0x8ef8x6,_0x8ef8x3);UserHasFaxQueueEvents[_0x878b[7]](_0x8ef8x6,_0x8ef8x7);_0x8ef8x3[_0x878b[7]](_0x878b[8],removeListener(_0x8ef8x6,_0x8ef8x7))}};function createListener(_0x8ef8x6,_0x8ef8x3){return function(_0x8ef8x9){_0x8ef8x3[_0x878b[9]](_0x8ef8x6,_0x8ef8x9)}}function removeListener(_0x8ef8x6,_0x8ef8x7){return function(){UserHasFaxQueueEvents[_0x878b[10]](_0x8ef8x6,_0x8ef8x7)}} \ No newline at end of file diff --git a/server/api/user_has_fax_queue/user_has_fax_queue_permit.events.js b/server/api/user_has_fax_queue/user_has_fax_queue_permit.events.js index 67646f7..f358ecc 100644 --- a/server/api/user_has_fax_queue/user_has_fax_queue_permit.events.js +++ b/server/api/user_has_fax_queue/user_has_fax_queue_permit.events.js @@ -1,35 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const UserHasFaxQueuePermit = require('../../models').UserHasFaxQueuePermit; - -var UserHasFaxQueuePermitEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -UserHasFaxQueuePermitEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - UserHasFaxQueuePermit.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - UserHasFaxQueuePermitEvents.emit(event + ':' + doc._id, doc); - UserHasFaxQueuePermitEvents.emit(event, doc); - done(null); - } -} - -module.exports = UserHasFaxQueuePermitEvents; +var _0x2322=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x55\x73\x65\x72\x48\x61\x73\x46\x61\x78\x51\x75\x65\x75\x65\x50\x65\x72\x6D\x69\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x2322[0];const EventEmitter=require(_0x2322[1]);const UserHasFaxQueuePermit=require(_0x2322[3])[_0x2322[2]];var UserHasFaxQueuePermitEvents= new EventEmitter();UserHasFaxQueuePermitEvents[_0x2322[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x2322[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x2322[6]};for(var e in events){var event=events[e];UserHasFaxQueuePermit[_0x2322[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xa90fx8,_0xa90fx9,_0xa90fxa){UserHasFaxQueuePermitEvents[_0x2322[10]](event+ _0x2322[8]+ _0xa90fx8[_0x2322[9]],_0xa90fx8);UserHasFaxQueuePermitEvents[_0x2322[10]](event,_0xa90fx8);_0xa90fxa(null)}}module[_0x2322[11]]= UserHasFaxQueuePermitEvents \ No newline at end of file diff --git a/server/api/user_has_fax_queue/user_has_fax_queue_permit.socket.js b/server/api/user_has_fax_queue/user_has_fax_queue_permit.socket.js index 2a923b2..facda78 100644 --- a/server/api/user_has_fax_queue/user_has_fax_queue_permit.socket.js +++ b/server/api/user_has_fax_queue/user_has_fax_queue_permit.socket.js @@ -1,34 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const UserHasFaxQueuePermitEvents = require('./user_has_fax_queue_permit.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('user_has_fax_queue_permit:' + event, socket); - - UserHasFaxQueuePermitEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - if (socket.userId === doc.Userid) { - socket.emit('user_has_fax_queue_permit:change'); - } - }; -} - -function removeListener(event, listener) { - return function() { - UserHasFaxQueuePermitEvents.removeListener(event, listener); - }; -} +var _0xe23c=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x66\x61\x78\x5F\x71\x75\x65\x75\x65\x5F\x70\x65\x72\x6D\x69\x74\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x66\x61\x78\x5F\x71\x75\x65\x75\x65\x5F\x70\x65\x72\x6D\x69\x74\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x75\x73\x65\x72\x49\x64","\x55\x73\x65\x72\x69\x64","\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x66\x61\x78\x5F\x71\x75\x65\x75\x65\x5F\x70\x65\x72\x6D\x69\x74\x3A\x63\x68\x61\x6E\x67\x65","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xe23c[0];const UserHasFaxQueuePermitEvents=require(_0xe23c[1]);var events=[_0xe23c[2],_0xe23c[3]];exports[_0xe23c[4]]= function(_0xfdf4x3){for(var _0xfdf4x4=0,_0xfdf4x5=events[_0xe23c[5]];_0xfdf4x4< _0xfdf4x5;_0xfdf4x4++){var _0xfdf4x6=events[_0xfdf4x4];var _0xfdf4x7=createListener(_0xe23c[6]+ _0xfdf4x6,_0xfdf4x3);UserHasFaxQueuePermitEvents[_0xe23c[7]](_0xfdf4x6,_0xfdf4x7);_0xfdf4x3[_0xe23c[7]](_0xe23c[8],removeListener(_0xfdf4x6,_0xfdf4x7))}};function createListener(_0xfdf4x6,_0xfdf4x3){return function(_0xfdf4x9){if(_0xfdf4x3[_0xe23c[9]]=== _0xfdf4x9[_0xe23c[10]]){_0xfdf4x3[_0xe23c[12]](_0xe23c[11])}}}function removeListener(_0xfdf4x6,_0xfdf4x7){return function(){UserHasFaxQueuePermitEvents[_0xe23c[13]](_0xfdf4x6,_0xfdf4x7)}} \ No newline at end of file diff --git a/server/api/user_has_list/index.js b/server/api/user_has_list/index.js index ee1b9af..2cb76c0 100644 --- a/server/api/user_has_list/index.js +++ b/server/api/user_has_list/index.js @@ -1,15 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./user_has_list.controller'); - -var router = express.Router(); - -router.get('/', controller.index); -router.get('/:id', controller.show); -router.post('/', controller.create); -router.put('/:id', controller.update); -router.patch('/:id', controller.update); -router.delete('/:id', controller.destroy); - -module.exports = router; +var _0xc312=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x6C\x69\x73\x74\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2F","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x70\x61\x74\x63\x68","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0xc312[0];var express=require(_0xc312[1]);var controller=require(_0xc312[2]);var router=express.Router();router[_0xc312[5]](_0xc312[3],controller[_0xc312[4]]);router[_0xc312[5]](_0xc312[6],controller[_0xc312[7]]);router[_0xc312[9]](_0xc312[3],controller[_0xc312[8]]);router[_0xc312[11]](_0xc312[6],controller[_0xc312[10]]);router[_0xc312[12]](_0xc312[6],controller[_0xc312[10]]);router[_0xc312[14]](_0xc312[6],controller[_0xc312[13]]);module[_0xc312[15]]= router \ No newline at end of file diff --git a/server/api/user_has_list/user_has_list.controller.js b/server/api/user_has_list/user_has_list.controller.js index f0a66dd..13a9ebe 100644 --- a/server/api/user_has_list/user_has_list.controller.js +++ b/server/api/user_has_list/user_has_list.controller.js @@ -1,98 +1 @@ -'use strict'; - -var _ = require('lodash'); -var UserHasList = require('../../models').UserHasList; - -// Get list of user_has_voice_queues -exports.index = function(req, res) { - UserHasList - .findAll(req.query ? { - where: req.query - } : {}) - .then(function(user_has_voice_queues) { - return res.status(200).send(user_has_voice_queues); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get a single userHasList -exports.show = function(req, res) { - UserHasList - .findById(req.params.id) - .then(function(userHasList) { - if (!userHasList) { - return res.sendStatus(404); - } - return res.send(userHasList); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Creates a new userHasList in the DB. -exports.create = function(req, res, next) { - console.log(req.body); - UserHasList - .create(req.body) - .then(function(userHasList) { - return res.status(201).send(userHasList); - }) - .catch(function(err) { - console.error(err); - return next(err); - // return handleError(res, err); - }); -}; - -// Updates an existing userHasList in the DB. -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - UserHasList - .findById(req.params.id) - .then(function(userHasList) { - if (!userHasList) { - return res.sendStatus(404); - } - var updated = _.merge(userHasList, req.body); - updated.save() - .then(function() { - return res.status(200).send(userHasList); - }) - .catch(function(err) { - return handleError(res, err); - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes a userHasList from the DB. -exports.destroy = function(req, res) { - UserHasList - .findById(req.params.id) - .then(function(userHasList) { - if (!userHasList) { - return res.sendStatus(404); - } - userHasList.destroy() - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0xe739=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x55\x73\x65\x72\x48\x61\x73\x4C\x69\x73\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x6C\x6F\x67","\x65\x72\x72\x6F\x72","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x64\x65\x73\x74\x72\x6F\x79"];_0xe739[0];var _=require(_0xe739[1]);var UserHasList=require(_0xe739[3])[_0xe739[2]];exports[_0xe739[4]]= function(_0x8865x3,_0x8865x4){UserHasList[_0xe739[10]](_0x8865x3[_0xe739[9]]?{where:_0x8865x3[_0xe739[9]]}:{})[_0xe739[8]](function(_0x8865x6){return _0x8865x4[_0xe739[7]](200)[_0xe739[6]](_0x8865x6)})[_0xe739[5]](function(_0x8865x5){return handleError(_0x8865x4,_0x8865x5)})};exports[_0xe739[11]]= function(_0x8865x3,_0x8865x4){UserHasList[_0xe739[15]](_0x8865x3[_0xe739[14]][_0xe739[13]])[_0xe739[8]](function(_0x8865x7){if(!_0x8865x7){return _0x8865x4[_0xe739[12]](404)};return _0x8865x4[_0xe739[6]](_0x8865x7)})[_0xe739[5]](function(_0x8865x5){return handleError(_0x8865x4,_0x8865x5)})};exports[_0xe739[16]]= function(_0x8865x3,_0x8865x4,_0x8865x8){console[_0xe739[18]](_0x8865x3[_0xe739[17]]);UserHasList[_0xe739[16]](_0x8865x3[_0xe739[17]])[_0xe739[8]](function(_0x8865x7){return _0x8865x4[_0xe739[7]](201)[_0xe739[6]](_0x8865x7)})[_0xe739[5]](function(_0x8865x5){console[_0xe739[19]](_0x8865x5);return _0x8865x8(_0x8865x5)})};exports[_0xe739[20]]= function(_0x8865x3,_0x8865x4){if(_0x8865x3[_0xe739[17]][_0xe739[13]]){delete _0x8865x3[_0xe739[17]][_0xe739[13]]};UserHasList[_0xe739[15]](_0x8865x3[_0xe739[14]][_0xe739[13]])[_0xe739[8]](function(_0x8865x7){if(!_0x8865x7){return _0x8865x4[_0xe739[12]](404)};var _0x8865x9=_[_0xe739[21]](_0x8865x7,_0x8865x3[_0xe739[17]]);_0x8865x9[_0xe739[22]]()[_0xe739[8]](function(){return _0x8865x4[_0xe739[7]](200)[_0xe739[6]](_0x8865x7)})[_0xe739[5]](function(_0x8865x5){return handleError(_0x8865x4,_0x8865x5)})})[_0xe739[5]](function(_0x8865x5){return handleError(_0x8865x4,_0x8865x5)})};exports[_0xe739[23]]= function(_0x8865x3,_0x8865x4){UserHasList[_0xe739[15]](_0x8865x3[_0xe739[14]][_0xe739[13]])[_0xe739[8]](function(_0x8865x7){if(!_0x8865x7){return _0x8865x4[_0xe739[12]](404)};_0x8865x7[_0xe739[23]]()[_0xe739[8]](function(){return _0x8865x4[_0xe739[12]](204)})[_0xe739[5]](function(_0x8865x5){return handleError(_0x8865x4,_0x8865x5)})})[_0xe739[5]](function(_0x8865x5){return handleError(_0x8865x4,_0x8865x5)})};function handleError(_0x8865x4,_0x8865x5){return _0x8865x4[_0xe739[7]](500)[_0xe739[6]](_0x8865x5)} \ No newline at end of file diff --git a/server/api/user_has_list/user_has_list.events.js b/server/api/user_has_list/user_has_list.events.js index d0988e3..916417b 100644 --- a/server/api/user_has_list/user_has_list.events.js +++ b/server/api/user_has_list/user_has_list.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const UserHasList = require('../../models').UserHasList; - -var UserHasListEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -UserHasListEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - UserHasList.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - UserHasListEvents.emit(event + ':' + doc._id, doc); - UserHasListEvents.emit(event, doc); - done(null); - } -} - -module.exports = UserHasListEvents; +var _0x621b=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x55\x73\x65\x72\x48\x61\x73\x4C\x69\x73\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x621b[0];const EventEmitter=require(_0x621b[1]);const UserHasList=require(_0x621b[3])[_0x621b[2]];var UserHasListEvents= new EventEmitter();UserHasListEvents[_0x621b[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x621b[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x621b[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x621b[6]};for(var e in events){var event=events[e];UserHasList[_0x621b[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x20d2x8,_0x20d2x9,_0x20d2xa){UserHasListEvents[_0x621b[10]](event+ _0x621b[8]+ _0x20d2x8[_0x621b[9]],_0x20d2x8);UserHasListEvents[_0x621b[10]](event,_0x20d2x8);_0x20d2xa(null)}}module[_0x621b[11]]= UserHasListEvents \ No newline at end of file diff --git a/server/api/user_has_list/user_has_list.socket.js b/server/api/user_has_list/user_has_list.socket.js index 505a97b..c809242 100644 --- a/server/api/user_has_list/user_has_list.socket.js +++ b/server/api/user_has_list/user_has_list.socket.js @@ -1,32 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const UserHasListEvents = require('./user_has_list.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('user_has_list:' + event, socket); - - UserHasListEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - UserHasListEvents.removeListener(event, listener); - }; -} +var _0x271c=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x6C\x69\x73\x74\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x6C\x69\x73\x74\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x271c[0];const UserHasListEvents=require(_0x271c[1]);var events=[_0x271c[2],_0x271c[3]];exports[_0x271c[4]]= function(_0x7b4bx3){for(var _0x7b4bx4=0,_0x7b4bx5=events[_0x271c[5]];_0x7b4bx4< _0x7b4bx5;_0x7b4bx4++){var _0x7b4bx6=events[_0x7b4bx4];var _0x7b4bx7=createListener(_0x271c[6]+ _0x7b4bx6,_0x7b4bx3);UserHasListEvents[_0x271c[7]](_0x7b4bx6,_0x7b4bx7);_0x7b4bx3[_0x271c[7]](_0x271c[8],removeListener(_0x7b4bx6,_0x7b4bx7))}};function createListener(_0x7b4bx6,_0x7b4bx3){return function(_0x7b4bx9){_0x7b4bx3[_0x271c[9]](_0x7b4bx6,_0x7b4bx9)}}function removeListener(_0x7b4bx6,_0x7b4bx7){return function(){UserHasListEvents[_0x271c[10]](_0x7b4bx6,_0x7b4bx7)}} \ No newline at end of file diff --git a/server/api/user_has_mail_queue/index.js b/server/api/user_has_mail_queue/index.js index 50b083e..0bc9a82 100644 --- a/server/api/user_has_mail_queue/index.js +++ b/server/api/user_has_mail_queue/index.js @@ -1,15 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./user_has_mail_queue.controller'); - -var router = express.Router(); - -router.get('/', controller.index); -router.get('/:id', controller.show); -router.post('/', controller.create); -router.put('/:id', controller.update); -router.patch('/:id', controller.update); -router.delete('/:id', controller.destroy); - -module.exports = router; +var _0x445f=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x6D\x61\x69\x6C\x5F\x71\x75\x65\x75\x65\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2F","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x70\x61\x74\x63\x68","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0x445f[0];var express=require(_0x445f[1]);var controller=require(_0x445f[2]);var router=express.Router();router[_0x445f[5]](_0x445f[3],controller[_0x445f[4]]);router[_0x445f[5]](_0x445f[6],controller[_0x445f[7]]);router[_0x445f[9]](_0x445f[3],controller[_0x445f[8]]);router[_0x445f[11]](_0x445f[6],controller[_0x445f[10]]);router[_0x445f[12]](_0x445f[6],controller[_0x445f[10]]);router[_0x445f[14]](_0x445f[6],controller[_0x445f[13]]);module[_0x445f[15]]= router \ No newline at end of file diff --git a/server/api/user_has_mail_queue/user_has_mail_queue.controller.js b/server/api/user_has_mail_queue/user_has_mail_queue.controller.js index c15bc9d..f531360 100644 --- a/server/api/user_has_mail_queue/user_has_mail_queue.controller.js +++ b/server/api/user_has_mail_queue/user_has_mail_queue.controller.js @@ -1,95 +1 @@ -'use strict'; - -var _ = require('lodash'); -var UserHasMailQueue = require('../../models').UserHasMailQueue; - -// Get list of user_has_mail_queues -exports.index = function(req, res) { - UserHasMailQueue - .findAll(req.query ? { - where: req.query - } : {}) - .then(function(user_has_mail_queues) { - return res.status(200).send(user_has_mail_queues); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get a single user_has_mail_queue -exports.show = function(req, res) { - UserHasMailQueue - .findById(req.params.id) - .then(function(user_has_mail_queue) { - if (!user_has_mail_queue) { - return res.sendStatus(404); - } - return res.send(user_has_mail_queue); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Creates a new user_has_mail_queue in the DB. -exports.create = function(req, res) { - UserHasMailQueue - .create(req.body) - .then(function(user_has_mail_queue) { - return res.status(201).send(user_has_mail_queue); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Updates an existing user_has_mail_queue in the DB. -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - UserHasMailQueue - .findById(req.params.id) - .then(function(user_has_mail_queue) { - if (!user_has_mail_queue) { - return res.sendStatus(404); - } - var updated = _.merge(user_has_mail_queue, req.body); - updated.save() - .then(function() { - return res.status(200).send(user_has_mail_queue); - }) - .catch(function(err) { - return handleError(res, err); - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes a user_has_mail_queue from the DB. -exports.destroy = function(req, res) { - UserHasMailQueue - .findById(req.params.id) - .then(function(user_has_mail_queue) { - if (!user_has_mail_queue) { - return res.sendStatus(404); - } - user_has_mail_queue.destroy() - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0x6288=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x55\x73\x65\x72\x48\x61\x73\x4D\x61\x69\x6C\x51\x75\x65\x75\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x64\x65\x73\x74\x72\x6F\x79"];_0x6288[0];var _=require(_0x6288[1]);var UserHasMailQueue=require(_0x6288[3])[_0x6288[2]];exports[_0x6288[4]]= function(_0x90a1x3,_0x90a1x4){UserHasMailQueue[_0x6288[10]](_0x90a1x3[_0x6288[9]]?{where:_0x90a1x3[_0x6288[9]]}:{})[_0x6288[8]](function(_0x90a1x6){return _0x90a1x4[_0x6288[7]](200)[_0x6288[6]](_0x90a1x6)})[_0x6288[5]](function(_0x90a1x5){return handleError(_0x90a1x4,_0x90a1x5)})};exports[_0x6288[11]]= function(_0x90a1x3,_0x90a1x4){UserHasMailQueue[_0x6288[15]](_0x90a1x3[_0x6288[14]][_0x6288[13]])[_0x6288[8]](function(_0x90a1x7){if(!_0x90a1x7){return _0x90a1x4[_0x6288[12]](404)};return _0x90a1x4[_0x6288[6]](_0x90a1x7)})[_0x6288[5]](function(_0x90a1x5){return handleError(_0x90a1x4,_0x90a1x5)})};exports[_0x6288[16]]= function(_0x90a1x3,_0x90a1x4){UserHasMailQueue[_0x6288[16]](_0x90a1x3[_0x6288[17]])[_0x6288[8]](function(_0x90a1x7){return _0x90a1x4[_0x6288[7]](201)[_0x6288[6]](_0x90a1x7)})[_0x6288[5]](function(_0x90a1x5){return handleError(_0x90a1x4,_0x90a1x5)})};exports[_0x6288[18]]= function(_0x90a1x3,_0x90a1x4){if(_0x90a1x3[_0x6288[17]][_0x6288[13]]){delete _0x90a1x3[_0x6288[17]][_0x6288[13]]};UserHasMailQueue[_0x6288[15]](_0x90a1x3[_0x6288[14]][_0x6288[13]])[_0x6288[8]](function(_0x90a1x7){if(!_0x90a1x7){return _0x90a1x4[_0x6288[12]](404)};var _0x90a1x8=_[_0x6288[19]](_0x90a1x7,_0x90a1x3[_0x6288[17]]);_0x90a1x8[_0x6288[20]]()[_0x6288[8]](function(){return _0x90a1x4[_0x6288[7]](200)[_0x6288[6]](_0x90a1x7)})[_0x6288[5]](function(_0x90a1x5){return handleError(_0x90a1x4,_0x90a1x5)})})[_0x6288[5]](function(_0x90a1x5){return handleError(_0x90a1x4,_0x90a1x5)})};exports[_0x6288[21]]= function(_0x90a1x3,_0x90a1x4){UserHasMailQueue[_0x6288[15]](_0x90a1x3[_0x6288[14]][_0x6288[13]])[_0x6288[8]](function(_0x90a1x7){if(!_0x90a1x7){return _0x90a1x4[_0x6288[12]](404)};_0x90a1x7[_0x6288[21]]()[_0x6288[8]](function(){return _0x90a1x4[_0x6288[12]](204)})[_0x6288[5]](function(_0x90a1x5){return handleError(_0x90a1x4,_0x90a1x5)})})[_0x6288[5]](function(_0x90a1x5){return handleError(_0x90a1x4,_0x90a1x5)})};function handleError(_0x90a1x4,_0x90a1x5){return _0x90a1x4[_0x6288[7]](500)[_0x6288[6]](_0x90a1x5)} \ No newline at end of file diff --git a/server/api/user_has_mail_queue/user_has_mail_queue.events.js b/server/api/user_has_mail_queue/user_has_mail_queue.events.js index 46a7c73..d058b7c 100644 --- a/server/api/user_has_mail_queue/user_has_mail_queue.events.js +++ b/server/api/user_has_mail_queue/user_has_mail_queue.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const UserHasMailQueue = require('../../models').UserHasMailQueue; - -var UserHasMailQueueEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -UserHasMailQueueEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - UserHasMailQueue.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - UserHasMailQueueEvents.emit(event + ':' + doc._id, doc); - UserHasMailQueueEvents.emit(event, doc); - done(null); - } -} - -module.exports = UserHasMailQueueEvents; +var _0x1d87=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x55\x73\x65\x72\x48\x61\x73\x4D\x61\x69\x6C\x51\x75\x65\x75\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x1d87[0];const EventEmitter=require(_0x1d87[1]);const UserHasMailQueue=require(_0x1d87[3])[_0x1d87[2]];var UserHasMailQueueEvents= new EventEmitter();UserHasMailQueueEvents[_0x1d87[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x1d87[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x1d87[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x1d87[6]};for(var e in events){var event=events[e];UserHasMailQueue[_0x1d87[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x1f45x8,_0x1f45x9,_0x1f45xa){UserHasMailQueueEvents[_0x1d87[10]](event+ _0x1d87[8]+ _0x1f45x8[_0x1d87[9]],_0x1f45x8);UserHasMailQueueEvents[_0x1d87[10]](event,_0x1f45x8);_0x1f45xa(null)}}module[_0x1d87[11]]= UserHasMailQueueEvents \ No newline at end of file diff --git a/server/api/user_has_mail_queue/user_has_mail_queue.socket.js b/server/api/user_has_mail_queue/user_has_mail_queue.socket.js index 1635bbe..d9696f7 100644 --- a/server/api/user_has_mail_queue/user_has_mail_queue.socket.js +++ b/server/api/user_has_mail_queue/user_has_mail_queue.socket.js @@ -1,32 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const UserHasMailQueueEvents = require('./user_has_mail_queue.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('user_has_mail_queue:' + event, socket); - - UserHasMailQueueEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - UserHasMailQueueEvents.removeListener(event, listener); - }; -} +var _0x255e=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x6D\x61\x69\x6C\x5F\x71\x75\x65\x75\x65\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x6D\x61\x69\x6C\x5F\x71\x75\x65\x75\x65\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x255e[0];const UserHasMailQueueEvents=require(_0x255e[1]);var events=[_0x255e[2],_0x255e[3]];exports[_0x255e[4]]= function(_0x7310x3){for(var _0x7310x4=0,_0x7310x5=events[_0x255e[5]];_0x7310x4< _0x7310x5;_0x7310x4++){var _0x7310x6=events[_0x7310x4];var _0x7310x7=createListener(_0x255e[6]+ _0x7310x6,_0x7310x3);UserHasMailQueueEvents[_0x255e[7]](_0x7310x6,_0x7310x7);_0x7310x3[_0x255e[7]](_0x255e[8],removeListener(_0x7310x6,_0x7310x7))}};function createListener(_0x7310x6,_0x7310x3){return function(_0x7310x9){_0x7310x3[_0x255e[9]](_0x7310x6,_0x7310x9)}}function removeListener(_0x7310x6,_0x7310x7){return function(){UserHasMailQueueEvents[_0x255e[10]](_0x7310x6,_0x7310x7)}} \ No newline at end of file diff --git a/server/api/user_has_mail_queue/user_has_mail_queue_permit.events.js b/server/api/user_has_mail_queue/user_has_mail_queue_permit.events.js index 519ac53..fc9cc9c 100644 --- a/server/api/user_has_mail_queue/user_has_mail_queue_permit.events.js +++ b/server/api/user_has_mail_queue/user_has_mail_queue_permit.events.js @@ -1,35 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const UserHasMailQueuePermit = require('../../models').UserHasMailQueuePermit; - -var UserHasMailQueuePermitEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -UserHasMailQueuePermitEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - UserHasMailQueuePermit.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - UserHasMailQueuePermitEvents.emit(event + ':' + doc._id, doc); - UserHasMailQueuePermitEvents.emit(event, doc); - done(null); - } -} - -module.exports = UserHasMailQueuePermitEvents; +var _0xec00=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x55\x73\x65\x72\x48\x61\x73\x4D\x61\x69\x6C\x51\x75\x65\x75\x65\x50\x65\x72\x6D\x69\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xec00[0];const EventEmitter=require(_0xec00[1]);const UserHasMailQueuePermit=require(_0xec00[3])[_0xec00[2]];var UserHasMailQueuePermitEvents= new EventEmitter();UserHasMailQueuePermitEvents[_0xec00[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xec00[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xec00[6]};for(var e in events){var event=events[e];UserHasMailQueuePermit[_0xec00[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xf6b3x8,_0xf6b3x9,_0xf6b3xa){UserHasMailQueuePermitEvents[_0xec00[10]](event+ _0xec00[8]+ _0xf6b3x8[_0xec00[9]],_0xf6b3x8);UserHasMailQueuePermitEvents[_0xec00[10]](event,_0xf6b3x8);_0xf6b3xa(null)}}module[_0xec00[11]]= UserHasMailQueuePermitEvents \ No newline at end of file diff --git a/server/api/user_has_mail_queue/user_has_mail_queue_permit.socket.js b/server/api/user_has_mail_queue/user_has_mail_queue_permit.socket.js index d4786d1..b69ba45 100644 --- a/server/api/user_has_mail_queue/user_has_mail_queue_permit.socket.js +++ b/server/api/user_has_mail_queue/user_has_mail_queue_permit.socket.js @@ -1,34 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const UserHasMailQueuePermitEvents = require('./user_has_mail_queue_permit.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('user_has_mail_queue_permit:' + event, socket); - - UserHasMailQueuePermitEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - if (socket.userId === doc.Userid) { - socket.emit('user_has_mail_queue_permit:change'); - } - }; -} - -function removeListener(event, listener) { - return function() { - UserHasMailQueuePermitEvents.removeListener(event, listener); - }; -} +var _0x8b2f=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x6D\x61\x69\x6C\x5F\x71\x75\x65\x75\x65\x5F\x70\x65\x72\x6D\x69\x74\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x6D\x61\x69\x6C\x5F\x71\x75\x65\x75\x65\x5F\x70\x65\x72\x6D\x69\x74\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x75\x73\x65\x72\x49\x64","\x55\x73\x65\x72\x69\x64","\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x6D\x61\x69\x6C\x5F\x71\x75\x65\x75\x65\x5F\x70\x65\x72\x6D\x69\x74\x3A\x63\x68\x61\x6E\x67\x65","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x8b2f[0];const UserHasMailQueuePermitEvents=require(_0x8b2f[1]);var events=[_0x8b2f[2],_0x8b2f[3]];exports[_0x8b2f[4]]= function(_0x4c38x3){for(var _0x4c38x4=0,_0x4c38x5=events[_0x8b2f[5]];_0x4c38x4< _0x4c38x5;_0x4c38x4++){var _0x4c38x6=events[_0x4c38x4];var _0x4c38x7=createListener(_0x8b2f[6]+ _0x4c38x6,_0x4c38x3);UserHasMailQueuePermitEvents[_0x8b2f[7]](_0x4c38x6,_0x4c38x7);_0x4c38x3[_0x8b2f[7]](_0x8b2f[8],removeListener(_0x4c38x6,_0x4c38x7))}};function createListener(_0x4c38x6,_0x4c38x3){return function(_0x4c38x9){if(_0x4c38x3[_0x8b2f[9]]=== _0x4c38x9[_0x8b2f[10]]){_0x4c38x3[_0x8b2f[12]](_0x8b2f[11])}}}function removeListener(_0x4c38x6,_0x4c38x7){return function(){UserHasMailQueuePermitEvents[_0x8b2f[13]](_0x4c38x6,_0x4c38x7)}} \ No newline at end of file diff --git a/server/api/user_has_openchannel_queue/index.js b/server/api/user_has_openchannel_queue/index.js index 2548a35..c2f1398 100644 --- a/server/api/user_has_openchannel_queue/index.js +++ b/server/api/user_has_openchannel_queue/index.js @@ -1,16 +1 @@ -'use strict'; - -var express = require('express'); -var auth = require('../../auth/auth.service'); -var controller = require('./user_has_openchannel_queue.controller'); - -var router = express.Router(); - -router.get('/', controller.index); -router.get('/:id', controller.show); -router.post('/', controller.create); -router.put('/:id', controller.update); -router.patch('/:id', controller.update); -router.delete('/:id', controller.destroy); - -module.exports = router; +var _0x866e=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x71\x75\x65\x75\x65\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2F","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x70\x61\x74\x63\x68","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0x866e[0];var express=require(_0x866e[1]);var auth=require(_0x866e[2]);var controller=require(_0x866e[3]);var router=express.Router();router[_0x866e[6]](_0x866e[4],controller[_0x866e[5]]);router[_0x866e[6]](_0x866e[7],controller[_0x866e[8]]);router[_0x866e[10]](_0x866e[4],controller[_0x866e[9]]);router[_0x866e[12]](_0x866e[7],controller[_0x866e[11]]);router[_0x866e[13]](_0x866e[7],controller[_0x866e[11]]);router[_0x866e[15]](_0x866e[7],controller[_0x866e[14]]);module[_0x866e[16]]= router \ No newline at end of file diff --git a/server/api/user_has_openchannel_queue/user_has_openchannel_queue.controller.js b/server/api/user_has_openchannel_queue/user_has_openchannel_queue.controller.js index 6e3c857..64f8258 100644 --- a/server/api/user_has_openchannel_queue/user_has_openchannel_queue.controller.js +++ b/server/api/user_has_openchannel_queue/user_has_openchannel_queue.controller.js @@ -1,109 +1 @@ -/** - * Using Rails-like standard naming convention for endpoints. - * GET /api/openchannel/user_has_queues -> index - * POST /api/openchannel/user_has_queues -> create - * GET /api/openchannel/user_has_queues/:id -> show - * PUT /api/openchannel/user_has_queues/:id -> update - * DELETE /api/openchannel/user_has_queues/:id -> destroy - */ - -'use strict'; - - -var _ = require('lodash'); -var Util = require('../../config/util'); - -var UserHasOpenchannelQueue = require('../../models').UserHasOpenchannelQueue; - - - -// Get list of user_has_openchannel_queues -exports.index = function(req, res) { - UserHasOpenchannelQueue - .findAll(req.query ? { - where: req.query - } : {}) - .then(function(user_has_openchannel_queues) { - return res.status(200).send(user_has_openchannel_queues); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get a single user_has_openchannel_queues -exports.show = function(req, res) { - UserHasOpenchannelQueue - .findById(req.params.id) - .then(function(user_has_openchannel_queues) { - if (!user_has_openchannel_queues) { - return res.sendStatus(404); - } - return res.send(user_has_openchannel_queues); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Creates a new user_has_openchannel_queues in the DB. -exports.create = function(req, res) { - UserHasOpenchannelQueue - .create(req.body) - .then(function(user_has_openchannel_queues) { - return res.status(201).send(user_has_openchannel_queues); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Updates an existing user_has_openchannel_queues in the DB. -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - UserHasOpenchannelQueue - .findById(req.params.id) - .then(function(user_has_openchannel_queue) { - if (!user_has_openchannel_queue) { - return res.sendStatus(404); - } - var updated = _.merge(user_has_openchannel_queue, req.body); - updated.save() - .then(function() { - return res.status(200).send(user_has_openchannel_queue); - }) - .catch(function(err) { - return handleError(res, err); - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes a user_has_openchannel_queues from the DB. -exports.destroy = function(req, res) { - UserHasOpenchannelQueue - .findById(req.params.id) - .then(function(user_has_openchannel_queue) { - if (!user_has_openchannel_queue) { - return res.sendStatus(404); - } - user_has_mail_queue.destroy() - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0xd12f=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x55\x73\x65\x72\x48\x61\x73\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x64\x65\x73\x74\x72\x6F\x79"];_0xd12f[0];var _=require(_0xd12f[1]);var Util=require(_0xd12f[2]);var UserHasOpenchannelQueue=require(_0xd12f[4])[_0xd12f[3]];exports[_0xd12f[5]]= function(_0xd4f7x4,_0xd4f7x5){UserHasOpenchannelQueue[_0xd12f[11]](_0xd4f7x4[_0xd12f[10]]?{where:_0xd4f7x4[_0xd12f[10]]}:{})[_0xd12f[9]](function(_0xd4f7x7){return _0xd4f7x5[_0xd12f[8]](200)[_0xd12f[7]](_0xd4f7x7)})[_0xd12f[6]](function(_0xd4f7x6){return handleError(_0xd4f7x5,_0xd4f7x6)})};exports[_0xd12f[12]]= function(_0xd4f7x4,_0xd4f7x5){UserHasOpenchannelQueue[_0xd12f[16]](_0xd4f7x4[_0xd12f[15]][_0xd12f[14]])[_0xd12f[9]](function(_0xd4f7x7){if(!_0xd4f7x7){return _0xd4f7x5[_0xd12f[13]](404)};return _0xd4f7x5[_0xd12f[7]](_0xd4f7x7)})[_0xd12f[6]](function(_0xd4f7x6){return handleError(_0xd4f7x5,_0xd4f7x6)})};exports[_0xd12f[17]]= function(_0xd4f7x4,_0xd4f7x5){UserHasOpenchannelQueue[_0xd12f[17]](_0xd4f7x4[_0xd12f[18]])[_0xd12f[9]](function(_0xd4f7x7){return _0xd4f7x5[_0xd12f[8]](201)[_0xd12f[7]](_0xd4f7x7)})[_0xd12f[6]](function(_0xd4f7x6){return handleError(_0xd4f7x5,_0xd4f7x6)})};exports[_0xd12f[19]]= function(_0xd4f7x4,_0xd4f7x5){if(_0xd4f7x4[_0xd12f[18]][_0xd12f[14]]){delete _0xd4f7x4[_0xd12f[18]][_0xd12f[14]]};UserHasOpenchannelQueue[_0xd12f[16]](_0xd4f7x4[_0xd12f[15]][_0xd12f[14]])[_0xd12f[9]](function(_0xd4f7x8){if(!_0xd4f7x8){return _0xd4f7x5[_0xd12f[13]](404)};var _0xd4f7x9=_[_0xd12f[20]](_0xd4f7x8,_0xd4f7x4[_0xd12f[18]]);_0xd4f7x9[_0xd12f[21]]()[_0xd12f[9]](function(){return _0xd4f7x5[_0xd12f[8]](200)[_0xd12f[7]](_0xd4f7x8)})[_0xd12f[6]](function(_0xd4f7x6){return handleError(_0xd4f7x5,_0xd4f7x6)})})[_0xd12f[6]](function(_0xd4f7x6){return handleError(_0xd4f7x5,_0xd4f7x6)})};exports[_0xd12f[22]]= function(_0xd4f7x4,_0xd4f7x5){UserHasOpenchannelQueue[_0xd12f[16]](_0xd4f7x4[_0xd12f[15]][_0xd12f[14]])[_0xd12f[9]](function(_0xd4f7x8){if(!_0xd4f7x8){return _0xd4f7x5[_0xd12f[13]](404)};user_has_mail_queue[_0xd12f[22]]()[_0xd12f[9]](function(){return _0xd4f7x5[_0xd12f[13]](204)})[_0xd12f[6]](function(_0xd4f7x6){return handleError(_0xd4f7x5,_0xd4f7x6)})})[_0xd12f[6]](function(_0xd4f7x6){return handleError(_0xd4f7x5,_0xd4f7x6)})};function handleError(_0xd4f7x5,_0xd4f7x6){return _0xd4f7x5[_0xd12f[8]](500)[_0xd12f[7]](_0xd4f7x6)} \ No newline at end of file diff --git a/server/api/user_has_openchannel_queue/user_has_openchannel_queue.events.js b/server/api/user_has_openchannel_queue/user_has_openchannel_queue.events.js index 1be5c74..26e42b6 100644 --- a/server/api/user_has_openchannel_queue/user_has_openchannel_queue.events.js +++ b/server/api/user_has_openchannel_queue/user_has_openchannel_queue.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const UserHasOpenchannelQueue = require('../../models').UserHasOpenchannelQueue; - -var UserHasOpenchannelQueueEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -UserHasOpenchannelQueueEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - UserHasOpenchannelQueue.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - UserHasOpenchannelQueueEvents.emit(event + ':' + doc._id, doc); - UserHasOpenchannelQueueEvents.emit(event, doc); - done(null); - } -} - -module.exports = UserHasOpenchannelQueueEvents; +var _0x21a4=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x55\x73\x65\x72\x48\x61\x73\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x21a4[0];const EventEmitter=require(_0x21a4[1]);const UserHasOpenchannelQueue=require(_0x21a4[3])[_0x21a4[2]];var UserHasOpenchannelQueueEvents= new EventEmitter();UserHasOpenchannelQueueEvents[_0x21a4[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x21a4[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x21a4[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x21a4[6]};for(var e in events){var event=events[e];UserHasOpenchannelQueue[_0x21a4[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x280cx8,_0x280cx9,_0x280cxa){UserHasOpenchannelQueueEvents[_0x21a4[10]](event+ _0x21a4[8]+ _0x280cx8[_0x21a4[9]],_0x280cx8);UserHasOpenchannelQueueEvents[_0x21a4[10]](event,_0x280cx8);_0x280cxa(null)}}module[_0x21a4[11]]= UserHasOpenchannelQueueEvents \ No newline at end of file diff --git a/server/api/user_has_openchannel_queue/user_has_openchannel_queue.socket.js b/server/api/user_has_openchannel_queue/user_has_openchannel_queue.socket.js index 26d8caa..9dbcb98 100644 --- a/server/api/user_has_openchannel_queue/user_has_openchannel_queue.socket.js +++ b/server/api/user_has_openchannel_queue/user_has_openchannel_queue.socket.js @@ -1,32 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const UserHasOpenchannelQueueEvents = require('./user_has_openchannel_queue.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('user_has_openchannel_queue:' + event, socket); - - UserHasOpenchannelQueueEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - UserHasOpenchannelQueueEvents.removeListener(event, listener); - }; -} +var _0x86e6=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x71\x75\x65\x75\x65\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x71\x75\x65\x75\x65\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x86e6[0];const UserHasOpenchannelQueueEvents=require(_0x86e6[1]);var events=[_0x86e6[2],_0x86e6[3]];exports[_0x86e6[4]]= function(_0x2b2bx3){for(var _0x2b2bx4=0,_0x2b2bx5=events[_0x86e6[5]];_0x2b2bx4< _0x2b2bx5;_0x2b2bx4++){var _0x2b2bx6=events[_0x2b2bx4];var _0x2b2bx7=createListener(_0x86e6[6]+ _0x2b2bx6,_0x2b2bx3);UserHasOpenchannelQueueEvents[_0x86e6[7]](_0x2b2bx6,_0x2b2bx7);_0x2b2bx3[_0x86e6[7]](_0x86e6[8],removeListener(_0x2b2bx6,_0x2b2bx7))}};function createListener(_0x2b2bx6,_0x2b2bx3){return function(_0x2b2bx9){_0x2b2bx3[_0x86e6[9]](_0x2b2bx6,_0x2b2bx9)}}function removeListener(_0x2b2bx6,_0x2b2bx7){return function(){UserHasOpenchannelQueueEvents[_0x86e6[10]](_0x2b2bx6,_0x2b2bx7)}} \ No newline at end of file diff --git a/server/api/user_has_openchannel_queue/user_has_openchannel_queue_permit.events.js b/server/api/user_has_openchannel_queue/user_has_openchannel_queue_permit.events.js index 0caae70..ac93bf8 100644 --- a/server/api/user_has_openchannel_queue/user_has_openchannel_queue_permit.events.js +++ b/server/api/user_has_openchannel_queue/user_has_openchannel_queue_permit.events.js @@ -1,35 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const UserHasOpenchannelQueuePermit = require('../../models').UserHasOpenchannelQueuePermit; - -var UserHasOpenchannelQueuePermitEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -UserHasOpenchannelQueuePermitEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - UserHasOpenchannelQueuePermit.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - UserHasOpenchannelQueuePermitEvents.emit(event + ':' + doc._id, doc); - UserHasOpenchannelQueuePermitEvents.emit(event, doc); - done(null); - } -} - -module.exports = UserHasOpenchannelQueuePermitEvents; +var _0x4ac2=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x55\x73\x65\x72\x48\x61\x73\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65\x50\x65\x72\x6D\x69\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x4ac2[0];const EventEmitter=require(_0x4ac2[1]);const UserHasOpenchannelQueuePermit=require(_0x4ac2[3])[_0x4ac2[2]];var UserHasOpenchannelQueuePermitEvents= new EventEmitter();UserHasOpenchannelQueuePermitEvents[_0x4ac2[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x4ac2[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x4ac2[6]};for(var e in events){var event=events[e];UserHasOpenchannelQueuePermit[_0x4ac2[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x16bfx8,_0x16bfx9,_0x16bfxa){UserHasOpenchannelQueuePermitEvents[_0x4ac2[10]](event+ _0x4ac2[8]+ _0x16bfx8[_0x4ac2[9]],_0x16bfx8);UserHasOpenchannelQueuePermitEvents[_0x4ac2[10]](event,_0x16bfx8);_0x16bfxa(null)}}module[_0x4ac2[11]]= UserHasOpenchannelQueuePermitEvents \ No newline at end of file diff --git a/server/api/user_has_openchannel_queue/user_has_openchannel_queue_permit.socket.js b/server/api/user_has_openchannel_queue/user_has_openchannel_queue_permit.socket.js index 1c7289d..e2d291d 100644 --- a/server/api/user_has_openchannel_queue/user_has_openchannel_queue_permit.socket.js +++ b/server/api/user_has_openchannel_queue/user_has_openchannel_queue_permit.socket.js @@ -1,34 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const UserHasOpenchannelQueuePermitEvents = require('./user_has_openchannel_queue_permit.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('user_has_openchannel_queue_permit:' + event, socket); - - UserHasOpenchannelQueuePermitEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - if (socket.userId === doc.Userid) { - socket.emit('user_has_openchannel_queue_permit:change'); - } - }; -} - -function removeListener(event, listener) { - return function() { - UserHasOpenchannelQueuePermitEvents.removeListener(event, listener); - }; -} +var _0x8caf=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x71\x75\x65\x75\x65\x5F\x70\x65\x72\x6D\x69\x74\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x71\x75\x65\x75\x65\x5F\x70\x65\x72\x6D\x69\x74\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x75\x73\x65\x72\x49\x64","\x55\x73\x65\x72\x69\x64","\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x71\x75\x65\x75\x65\x5F\x70\x65\x72\x6D\x69\x74\x3A\x63\x68\x61\x6E\x67\x65","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x8caf[0];const UserHasOpenchannelQueuePermitEvents=require(_0x8caf[1]);var events=[_0x8caf[2],_0x8caf[3]];exports[_0x8caf[4]]= function(_0xd54bx3){for(var _0xd54bx4=0,_0xd54bx5=events[_0x8caf[5]];_0xd54bx4< _0xd54bx5;_0xd54bx4++){var _0xd54bx6=events[_0xd54bx4];var _0xd54bx7=createListener(_0x8caf[6]+ _0xd54bx6,_0xd54bx3);UserHasOpenchannelQueuePermitEvents[_0x8caf[7]](_0xd54bx6,_0xd54bx7);_0xd54bx3[_0x8caf[7]](_0x8caf[8],removeListener(_0xd54bx6,_0xd54bx7))}};function createListener(_0xd54bx6,_0xd54bx3){return function(_0xd54bx9){if(_0xd54bx3[_0x8caf[9]]=== _0xd54bx9[_0x8caf[10]]){_0xd54bx3[_0x8caf[12]](_0x8caf[11])}}}function removeListener(_0xd54bx6,_0xd54bx7){return function(){UserHasOpenchannelQueuePermitEvents[_0x8caf[13]](_0xd54bx6,_0xd54bx7)}} \ No newline at end of file diff --git a/server/api/user_has_sms_queue/index.js b/server/api/user_has_sms_queue/index.js index 5e63266..87a163d 100644 --- a/server/api/user_has_sms_queue/index.js +++ b/server/api/user_has_sms_queue/index.js @@ -1,15 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./user_has_sms_queue.controller'); - -var router = express.Router(); - -router.get('/', controller.index); -router.get('/:id', controller.show); -router.post('/', controller.create); -router.put('/:id', controller.update); -router.patch('/:id', controller.update); -router.delete('/:id', controller.destroy); - -module.exports = router; +var _0x68e2=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x73\x6D\x73\x5F\x71\x75\x65\x75\x65\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2F","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x70\x61\x74\x63\x68","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0x68e2[0];var express=require(_0x68e2[1]);var controller=require(_0x68e2[2]);var router=express.Router();router[_0x68e2[5]](_0x68e2[3],controller[_0x68e2[4]]);router[_0x68e2[5]](_0x68e2[6],controller[_0x68e2[7]]);router[_0x68e2[9]](_0x68e2[3],controller[_0x68e2[8]]);router[_0x68e2[11]](_0x68e2[6],controller[_0x68e2[10]]);router[_0x68e2[12]](_0x68e2[6],controller[_0x68e2[10]]);router[_0x68e2[14]](_0x68e2[6],controller[_0x68e2[13]]);module[_0x68e2[15]]= router \ No newline at end of file diff --git a/server/api/user_has_sms_queue/user_has_sms_queue.controller.js b/server/api/user_has_sms_queue/user_has_sms_queue.controller.js index 9293afa..6a80f51 100644 --- a/server/api/user_has_sms_queue/user_has_sms_queue.controller.js +++ b/server/api/user_has_sms_queue/user_has_sms_queue.controller.js @@ -1,103 +1 @@ -'use strict'; - -var _ = require('lodash'); -var UserHasSmsQueue = require('../../models').UserHasSmsQueue; - -// Get list of UserHasSmsQueues -exports.index = function(req, res) { - UserHasSmsQueue - .findAll(req.query ? { - where: req.query - } : {}) - .then(function(UserHasSmsQueues) { - return res.status(200).send(UserHasSmsQueues); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get a single UserHasSmsQueue -exports.show = function(req, res) { - UserHasSmsQueue - .findById(req.params.id) - .then(function(UserHasSmsQueue) { - if (!UserHasSmsQueue) { - return res.sendStatus(404); - } - return res.send(UserHasSmsQueue); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Creates a new UserHasSmsQueue in the DB. -exports.create = function(req, res) { - UserHasSmsQueue - .create(req.body) - .then(function(UserHasSmsQueue) { - return res.status(201).send(UserHasSmsQueue); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Updates an existing UserHasSmsQueue in the DB. -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - UserHasSmsQueue - .find({ - where: { - id: req.params.id - } - }) - .then(function(UserHasSmsQueue) { - if (!UserHasSmsQueue) { - return res.sendStatus(404); - } - var updated = _.merge(UserHasSmsQueue, req.body); - updated.save() - .then(function() { - return res.status(200).send(UserHasSmsQueue); - }) - .catch(function(err) { - return handleError(res, err); - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes a UserHasSmsQueue from the DB. -exports.destroy = function(req, res) { - UserHasSmsQueue - .find({ - where: { - id: req.params.id - } - }) - .then(function(UserHasSmsQueue) { - if (!UserHasSmsQueue) { - return res.sendStatus(404); - } - UserHasSmsQueue.destroy() - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0xf787=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x55\x73\x65\x72\x48\x61\x73\x53\x6D\x73\x51\x75\x65\x75\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x66\x69\x6E\x64","\x64\x65\x73\x74\x72\x6F\x79"];_0xf787[0];var _=require(_0xf787[1]);var UserHasSmsQueue=require(_0xf787[3])[_0xf787[2]];exports[_0xf787[4]]= function(_0x901cx3,_0x901cx4){UserHasSmsQueue[_0xf787[10]](_0x901cx3[_0xf787[9]]?{where:_0x901cx3[_0xf787[9]]}:{})[_0xf787[8]](function(_0x901cx6){return _0x901cx4[_0xf787[7]](200)[_0xf787[6]](_0x901cx6)})[_0xf787[5]](function(_0x901cx5){return handleError(_0x901cx4,_0x901cx5)})};exports[_0xf787[11]]= function(_0x901cx3,_0x901cx4){UserHasSmsQueue[_0xf787[15]](_0x901cx3[_0xf787[14]][_0xf787[13]])[_0xf787[8]](function(UserHasSmsQueue){if(!UserHasSmsQueue){return _0x901cx4[_0xf787[12]](404)};return _0x901cx4[_0xf787[6]](UserHasSmsQueue)})[_0xf787[5]](function(_0x901cx5){return handleError(_0x901cx4,_0x901cx5)})};exports[_0xf787[16]]= function(_0x901cx3,_0x901cx4){UserHasSmsQueue[_0xf787[16]](_0x901cx3[_0xf787[17]])[_0xf787[8]](function(UserHasSmsQueue){return _0x901cx4[_0xf787[7]](201)[_0xf787[6]](UserHasSmsQueue)})[_0xf787[5]](function(_0x901cx5){return handleError(_0x901cx4,_0x901cx5)})};exports[_0xf787[18]]= function(_0x901cx3,_0x901cx4){if(_0x901cx3[_0xf787[17]][_0xf787[13]]){delete _0x901cx3[_0xf787[17]][_0xf787[13]]};UserHasSmsQueue[_0xf787[21]]({where:{id:_0x901cx3[_0xf787[14]][_0xf787[13]]}})[_0xf787[8]](function(UserHasSmsQueue){if(!UserHasSmsQueue){return _0x901cx4[_0xf787[12]](404)};var _0x901cx7=_[_0xf787[19]](UserHasSmsQueue,_0x901cx3[_0xf787[17]]);_0x901cx7[_0xf787[20]]()[_0xf787[8]](function(){return _0x901cx4[_0xf787[7]](200)[_0xf787[6]](UserHasSmsQueue)})[_0xf787[5]](function(_0x901cx5){return handleError(_0x901cx4,_0x901cx5)})})[_0xf787[5]](function(_0x901cx5){return handleError(_0x901cx4,_0x901cx5)})};exports[_0xf787[22]]= function(_0x901cx3,_0x901cx4){UserHasSmsQueue[_0xf787[21]]({where:{id:_0x901cx3[_0xf787[14]][_0xf787[13]]}})[_0xf787[8]](function(UserHasSmsQueue){if(!UserHasSmsQueue){return _0x901cx4[_0xf787[12]](404)};UserHasSmsQueue[_0xf787[22]]()[_0xf787[8]](function(){return _0x901cx4[_0xf787[12]](204)})[_0xf787[5]](function(_0x901cx5){return handleError(_0x901cx4,_0x901cx5)})})[_0xf787[5]](function(_0x901cx5){return handleError(_0x901cx4,_0x901cx5)})};function handleError(_0x901cx4,_0x901cx5){return _0x901cx4[_0xf787[7]](500)[_0xf787[6]](_0x901cx5)} \ No newline at end of file diff --git a/server/api/user_has_sms_queue/user_has_sms_queue.events.js b/server/api/user_has_sms_queue/user_has_sms_queue.events.js index 2104253..f823c40 100644 --- a/server/api/user_has_sms_queue/user_has_sms_queue.events.js +++ b/server/api/user_has_sms_queue/user_has_sms_queue.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const UserHasSmsQueue = require('../../models').UserHasSmsQueue; - -var UserHasSmsQueueEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -UserHasSmsQueueEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - UserHasSmsQueue.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - UserHasSmsQueueEvents.emit(event + ':' + doc._id, doc); - UserHasSmsQueueEvents.emit(event, doc); - done(null); - } -} - -module.exports = UserHasSmsQueueEvents; +var _0x3f4b=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x55\x73\x65\x72\x48\x61\x73\x53\x6D\x73\x51\x75\x65\x75\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x3f4b[0];const EventEmitter=require(_0x3f4b[1]);const UserHasSmsQueue=require(_0x3f4b[3])[_0x3f4b[2]];var UserHasSmsQueueEvents= new EventEmitter();UserHasSmsQueueEvents[_0x3f4b[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x3f4b[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x3f4b[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x3f4b[6]};for(var e in events){var event=events[e];UserHasSmsQueue[_0x3f4b[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xf916x8,_0xf916x9,_0xf916xa){UserHasSmsQueueEvents[_0x3f4b[10]](event+ _0x3f4b[8]+ _0xf916x8[_0x3f4b[9]],_0xf916x8);UserHasSmsQueueEvents[_0x3f4b[10]](event,_0xf916x8);_0xf916xa(null)}}module[_0x3f4b[11]]= UserHasSmsQueueEvents \ No newline at end of file diff --git a/server/api/user_has_sms_queue/user_has_sms_queue.socket.js b/server/api/user_has_sms_queue/user_has_sms_queue.socket.js index 7dfde5c..02c335c 100644 --- a/server/api/user_has_sms_queue/user_has_sms_queue.socket.js +++ b/server/api/user_has_sms_queue/user_has_sms_queue.socket.js @@ -1,32 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const UserHasSmsQueueEvents = require('./user_has_sms_queue.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('user_has_sms_queue:' + event, socket); - - UserHasSmsQueueEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - UserHasSmsQueueEvents.removeListener(event, listener); - }; -} +var _0x3c79=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x73\x6D\x73\x5F\x71\x75\x65\x75\x65\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x73\x6D\x73\x5F\x71\x75\x65\x75\x65\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x3c79[0];const UserHasSmsQueueEvents=require(_0x3c79[1]);var events=[_0x3c79[2],_0x3c79[3]];exports[_0x3c79[4]]= function(_0xe296x3){for(var _0xe296x4=0,_0xe296x5=events[_0x3c79[5]];_0xe296x4< _0xe296x5;_0xe296x4++){var _0xe296x6=events[_0xe296x4];var _0xe296x7=createListener(_0x3c79[6]+ _0xe296x6,_0xe296x3);UserHasSmsQueueEvents[_0x3c79[7]](_0xe296x6,_0xe296x7);_0xe296x3[_0x3c79[7]](_0x3c79[8],removeListener(_0xe296x6,_0xe296x7))}};function createListener(_0xe296x6,_0xe296x3){return function(_0xe296x9){_0xe296x3[_0x3c79[9]](_0xe296x6,_0xe296x9)}}function removeListener(_0xe296x6,_0xe296x7){return function(){UserHasSmsQueueEvents[_0x3c79[10]](_0xe296x6,_0xe296x7)}} \ No newline at end of file diff --git a/server/api/user_has_sms_queue/user_has_sms_queue_permit.events.js b/server/api/user_has_sms_queue/user_has_sms_queue_permit.events.js index b6b7a01..f06d5f0 100644 --- a/server/api/user_has_sms_queue/user_has_sms_queue_permit.events.js +++ b/server/api/user_has_sms_queue/user_has_sms_queue_permit.events.js @@ -1,35 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const UserHasSmsQueuePermit = require('../../models').UserHasSmsQueuePermit; - -var UserHasSmsQueuePermitEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -UserHasSmsQueuePermitEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - UserHasSmsQueuePermit.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - UserHasSmsQueuePermitEvents.emit(event + ':' + doc._id, doc); - UserHasSmsQueuePermitEvents.emit(event, doc); - done(null); - } -} - -module.exports = UserHasSmsQueuePermitEvents; +var _0xcdc1=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x55\x73\x65\x72\x48\x61\x73\x53\x6D\x73\x51\x75\x65\x75\x65\x50\x65\x72\x6D\x69\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xcdc1[0];const EventEmitter=require(_0xcdc1[1]);const UserHasSmsQueuePermit=require(_0xcdc1[3])[_0xcdc1[2]];var UserHasSmsQueuePermitEvents= new EventEmitter();UserHasSmsQueuePermitEvents[_0xcdc1[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xcdc1[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xcdc1[6]};for(var e in events){var event=events[e];UserHasSmsQueuePermit[_0xcdc1[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xb69cx8,_0xb69cx9,_0xb69cxa){UserHasSmsQueuePermitEvents[_0xcdc1[10]](event+ _0xcdc1[8]+ _0xb69cx8[_0xcdc1[9]],_0xb69cx8);UserHasSmsQueuePermitEvents[_0xcdc1[10]](event,_0xb69cx8);_0xb69cxa(null)}}module[_0xcdc1[11]]= UserHasSmsQueuePermitEvents \ No newline at end of file diff --git a/server/api/user_has_sms_queue/user_has_sms_queue_permit.socket.js b/server/api/user_has_sms_queue/user_has_sms_queue_permit.socket.js index 2c2b49c..5d3f798 100644 --- a/server/api/user_has_sms_queue/user_has_sms_queue_permit.socket.js +++ b/server/api/user_has_sms_queue/user_has_sms_queue_permit.socket.js @@ -1,34 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const UserHasSmsQueuePermitEvents = require('./user_has_sms_queue_permit.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('user_has_sms_queue_permit:' + event, socket); - - UserHasSmsQueuePermitEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - if (socket.userId === doc.Userid) { - socket.emit('user_has_sms_queue_permit:change'); - } - }; -} - -function removeListener(event, listener) { - return function() { - UserHasSmsQueuePermitEvents.removeListener(event, listener); - }; -} +var _0xaa44=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x73\x6D\x73\x5F\x71\x75\x65\x75\x65\x5F\x70\x65\x72\x6D\x69\x74\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x73\x6D\x73\x5F\x71\x75\x65\x75\x65\x5F\x70\x65\x72\x6D\x69\x74\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x75\x73\x65\x72\x49\x64","\x55\x73\x65\x72\x69\x64","\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x73\x6D\x73\x5F\x71\x75\x65\x75\x65\x5F\x70\x65\x72\x6D\x69\x74\x3A\x63\x68\x61\x6E\x67\x65","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xaa44[0];const UserHasSmsQueuePermitEvents=require(_0xaa44[1]);var events=[_0xaa44[2],_0xaa44[3]];exports[_0xaa44[4]]= function(_0x8349x3){for(var _0x8349x4=0,_0x8349x5=events[_0xaa44[5]];_0x8349x4< _0x8349x5;_0x8349x4++){var _0x8349x6=events[_0x8349x4];var _0x8349x7=createListener(_0xaa44[6]+ _0x8349x6,_0x8349x3);UserHasSmsQueuePermitEvents[_0xaa44[7]](_0x8349x6,_0x8349x7);_0x8349x3[_0xaa44[7]](_0xaa44[8],removeListener(_0x8349x6,_0x8349x7))}};function createListener(_0x8349x6,_0x8349x3){return function(_0x8349x9){if(_0x8349x3[_0xaa44[9]]=== _0x8349x9[_0xaa44[10]]){_0x8349x3[_0xaa44[12]](_0xaa44[11])}}}function removeListener(_0x8349x6,_0x8349x7){return function(){UserHasSmsQueuePermitEvents[_0xaa44[13]](_0x8349x6,_0x8349x7)}} \ No newline at end of file diff --git a/server/api/user_has_team/index.js b/server/api/user_has_team/index.js index 723bdc1..948f366 100644 --- a/server/api/user_has_team/index.js +++ b/server/api/user_has_team/index.js @@ -1,15 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./user_has_team.controller'); - -var router = express.Router(); - -router.get('/', controller.index); -router.get('/:id', controller.show); -router.post('/', controller.create); -router.put('/:id', controller.update); -router.patch('/:id', controller.update); -router.delete('/:id', controller.destroy); - -module.exports = router; \ No newline at end of file +var _0xa894=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x74\x65\x61\x6D\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2F","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x70\x61\x74\x63\x68","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0xa894[0];var express=require(_0xa894[1]);var controller=require(_0xa894[2]);var router=express.Router();router[_0xa894[5]](_0xa894[3],controller[_0xa894[4]]);router[_0xa894[5]](_0xa894[6],controller[_0xa894[7]]);router[_0xa894[9]](_0xa894[3],controller[_0xa894[8]]);router[_0xa894[11]](_0xa894[6],controller[_0xa894[10]]);router[_0xa894[12]](_0xa894[6],controller[_0xa894[10]]);router[_0xa894[14]](_0xa894[6],controller[_0xa894[13]]);module[_0xa894[15]]= router \ No newline at end of file diff --git a/server/api/user_has_team/user_has_team.controller.js b/server/api/user_has_team/user_has_team.controller.js index 7f0f426..159f6c7 100644 --- a/server/api/user_has_team/user_has_team.controller.js +++ b/server/api/user_has_team/user_has_team.controller.js @@ -1,96 +1 @@ -'use strict'; - -var _ = require('lodash'); -var UserHasTeam = require('../../models').UserHasTeam; - -// Get list of user_has_teams -exports.index = function(req, res) { - console.log(req.query); - UserHasTeam - .findAll({ - where: req.query - }) - .then(function(user_has_teams) { - return res.status(200).send(user_has_teams); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get a single user_has_team -exports.show = function(req, res) { - UserHasTeam - .findById(req.params.id) - .then(function(user_has_team) { - if (!user_has_team) { - return res.sendStatus(404); - } - return res.send(user_has_team); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Creates a new user_has_team in the DB. -exports.create = function(req, res) { - UserHasTeam - .create(req.body) - .then(function(user_has_team) { - return res.status(201).send(user_has_team); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Updates an existing user_has_team in the DB. -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - UserHasTeam - .findById(req.params.id) - .then(function(user_has_team) { - if (!user_has_team) { - return res.sendStatus(404); - } - var updated = _.merge(user_has_team, req.body); - updated.save() - .then(function() { - return res.status(200).send(user_has_team); - }) - .catch(function(err) { - return handleError(res, err); - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes a user_has_team from the DB. -exports.destroy = function(req, res) { - UserHasTeam - .findById(req.params.id) - .then(function(user_has_team) { - if (!user_has_team) { - return res.sendStatus(404); - } - user_has_team.destroy() - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0xa893=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x55\x73\x65\x72\x48\x61\x73\x54\x65\x61\x6D","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x69\x6E\x64\x65\x78","\x71\x75\x65\x72\x79","\x6C\x6F\x67","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x64\x65\x73\x74\x72\x6F\x79"];_0xa893[0];var _=require(_0xa893[1]);var UserHasTeam=require(_0xa893[3])[_0xa893[2]];exports[_0xa893[4]]= function(_0x5970x3,_0x5970x4){console[_0xa893[6]](_0x5970x3[_0xa893[5]]);UserHasTeam[_0xa893[11]]({where:_0x5970x3[_0xa893[5]]})[_0xa893[10]](function(_0x5970x6){return _0x5970x4[_0xa893[9]](200)[_0xa893[8]](_0x5970x6)})[_0xa893[7]](function(_0x5970x5){return handleError(_0x5970x4,_0x5970x5)})};exports[_0xa893[12]]= function(_0x5970x3,_0x5970x4){UserHasTeam[_0xa893[16]](_0x5970x3[_0xa893[15]][_0xa893[14]])[_0xa893[10]](function(_0x5970x7){if(!_0x5970x7){return _0x5970x4[_0xa893[13]](404)};return _0x5970x4[_0xa893[8]](_0x5970x7)})[_0xa893[7]](function(_0x5970x5){return handleError(_0x5970x4,_0x5970x5)})};exports[_0xa893[17]]= function(_0x5970x3,_0x5970x4){UserHasTeam[_0xa893[17]](_0x5970x3[_0xa893[18]])[_0xa893[10]](function(_0x5970x7){return _0x5970x4[_0xa893[9]](201)[_0xa893[8]](_0x5970x7)})[_0xa893[7]](function(_0x5970x5){return handleError(_0x5970x4,_0x5970x5)})};exports[_0xa893[19]]= function(_0x5970x3,_0x5970x4){if(_0x5970x3[_0xa893[18]][_0xa893[14]]){delete _0x5970x3[_0xa893[18]][_0xa893[14]]};UserHasTeam[_0xa893[16]](_0x5970x3[_0xa893[15]][_0xa893[14]])[_0xa893[10]](function(_0x5970x7){if(!_0x5970x7){return _0x5970x4[_0xa893[13]](404)};var _0x5970x8=_[_0xa893[20]](_0x5970x7,_0x5970x3[_0xa893[18]]);_0x5970x8[_0xa893[21]]()[_0xa893[10]](function(){return _0x5970x4[_0xa893[9]](200)[_0xa893[8]](_0x5970x7)})[_0xa893[7]](function(_0x5970x5){return handleError(_0x5970x4,_0x5970x5)})})[_0xa893[7]](function(_0x5970x5){return handleError(_0x5970x4,_0x5970x5)})};exports[_0xa893[22]]= function(_0x5970x3,_0x5970x4){UserHasTeam[_0xa893[16]](_0x5970x3[_0xa893[15]][_0xa893[14]])[_0xa893[10]](function(_0x5970x7){if(!_0x5970x7){return _0x5970x4[_0xa893[13]](404)};_0x5970x7[_0xa893[22]]()[_0xa893[10]](function(){return _0x5970x4[_0xa893[13]](204)})[_0xa893[7]](function(_0x5970x5){return handleError(_0x5970x4,_0x5970x5)})})[_0xa893[7]](function(_0x5970x5){return handleError(_0x5970x4,_0x5970x5)})};function handleError(_0x5970x4,_0x5970x5){return _0x5970x4[_0xa893[9]](500)[_0xa893[8]](_0x5970x5)} \ No newline at end of file diff --git a/server/api/user_has_team/user_has_team.events.js b/server/api/user_has_team/user_has_team.events.js index ce02e87..e975077 100644 --- a/server/api/user_has_team/user_has_team.events.js +++ b/server/api/user_has_team/user_has_team.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const UserHasTeam = require('../../models').UserHasTeam; - -var UserHasTeamEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -UserHasTeamEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - UserHasTeam.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - UserHasTeamEvents.emit(event + ':' + doc._id, doc); - UserHasTeamEvents.emit(event, doc); - done(null); - } -} - -module.exports = UserHasTeamEvents; +var _0x8221=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x55\x73\x65\x72\x48\x61\x73\x54\x65\x61\x6D","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x8221[0];const EventEmitter=require(_0x8221[1]);const UserHasTeam=require(_0x8221[3])[_0x8221[2]];var UserHasTeamEvents= new EventEmitter();UserHasTeamEvents[_0x8221[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x8221[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x8221[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x8221[6]};for(var e in events){var event=events[e];UserHasTeam[_0x8221[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x1946x8,_0x1946x9,_0x1946xa){UserHasTeamEvents[_0x8221[10]](event+ _0x8221[8]+ _0x1946x8[_0x8221[9]],_0x1946x8);UserHasTeamEvents[_0x8221[10]](event,_0x1946x8);_0x1946xa(null)}}module[_0x8221[11]]= UserHasTeamEvents \ No newline at end of file diff --git a/server/api/user_has_team/user_has_team.socket.js b/server/api/user_has_team/user_has_team.socket.js index 423b31f..3ef0d63 100644 --- a/server/api/user_has_team/user_has_team.socket.js +++ b/server/api/user_has_team/user_has_team.socket.js @@ -1,32 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const UserHasTeamEvents = require('./user_has_team.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('user_has_team:' + event, socket); - - UserHasTeamEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - UserHasTeamEvents.removeListener(event, listener); - }; -} +var _0x9a5e=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x74\x65\x61\x6D\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x74\x65\x61\x6D\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x9a5e[0];const UserHasTeamEvents=require(_0x9a5e[1]);var events=[_0x9a5e[2],_0x9a5e[3]];exports[_0x9a5e[4]]= function(_0xe76dx3){for(var _0xe76dx4=0,_0xe76dx5=events[_0x9a5e[5]];_0xe76dx4< _0xe76dx5;_0xe76dx4++){var _0xe76dx6=events[_0xe76dx4];var _0xe76dx7=createListener(_0x9a5e[6]+ _0xe76dx6,_0xe76dx3);UserHasTeamEvents[_0x9a5e[7]](_0xe76dx6,_0xe76dx7);_0xe76dx3[_0x9a5e[7]](_0x9a5e[8],removeListener(_0xe76dx6,_0xe76dx7))}};function createListener(_0xe76dx6,_0xe76dx3){return function(_0xe76dx9){_0xe76dx3[_0x9a5e[9]](_0xe76dx6,_0xe76dx9)}}function removeListener(_0xe76dx6,_0xe76dx7){return function(){UserHasTeamEvents[_0x9a5e[10]](_0xe76dx6,_0xe76dx7)}} \ No newline at end of file diff --git a/server/api/user_has_voice_queue/index.js b/server/api/user_has_voice_queue/index.js index 72551d5..8a39202 100644 --- a/server/api/user_has_voice_queue/index.js +++ b/server/api/user_has_voice_queue/index.js @@ -1,15 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./user_has_voice_queue.controller'); - -var router = express.Router(); - -router.get('/', controller.index); -router.get('/:id', controller.show); -router.post('/', controller.create); -router.put('/:id', controller.update); -router.patch('/:id', controller.update); -router.delete('/:id', controller.destroy); - -module.exports = router; \ No newline at end of file +var _0xa99c=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x76\x6F\x69\x63\x65\x5F\x71\x75\x65\x75\x65\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2F","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x70\x61\x74\x63\x68","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0xa99c[0];var express=require(_0xa99c[1]);var controller=require(_0xa99c[2]);var router=express.Router();router[_0xa99c[5]](_0xa99c[3],controller[_0xa99c[4]]);router[_0xa99c[5]](_0xa99c[6],controller[_0xa99c[7]]);router[_0xa99c[9]](_0xa99c[3],controller[_0xa99c[8]]);router[_0xa99c[11]](_0xa99c[6],controller[_0xa99c[10]]);router[_0xa99c[12]](_0xa99c[6],controller[_0xa99c[10]]);router[_0xa99c[14]](_0xa99c[6],controller[_0xa99c[13]]);module[_0xa99c[15]]= router \ No newline at end of file diff --git a/server/api/user_has_voice_queue/user_has_voice_queue.controller.js b/server/api/user_has_voice_queue/user_has_voice_queue.controller.js index f3e5d22..a895443 100644 --- a/server/api/user_has_voice_queue/user_has_voice_queue.controller.js +++ b/server/api/user_has_voice_queue/user_has_voice_queue.controller.js @@ -1,98 +1 @@ -'use strict'; - -var _ = require('lodash'); -var UserHasVoiceQueue = require('../../models').UserHasVoiceQueue; - -// Get list of user_has_voice_queues -exports.index = function(req, res) { - UserHasVoiceQueue - .findAll(req.query ? { - where: req.query - } : {}) - .then(function(user_has_voice_queues) { - return res.status(200).send(user_has_voice_queues); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get a single userHasVoiceQueue -exports.show = function(req, res) { - UserHasVoiceQueue - .findById(req.params.id) - .then(function(userHasVoiceQueue) { - if (!userHasVoiceQueue) { - return res.sendStatus(404); - } - return res.send(userHasVoiceQueue); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Creates a new userHasVoiceQueue in the DB. -exports.create = function(req, res, next) { - console.log(req.body); - UserHasVoiceQueue - .create(req.body) - .then(function(userHasVoiceQueue) { - return res.status(201).send(userHasVoiceQueue); - }) - .catch(function(err) { - console.error(err); - return next(err); - // return handleError(res, err); - }); -}; - -// Updates an existing userHasVoiceQueue in the DB. -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - UserHasVoiceQueue - .findById(req.params.id) - .then(function(userHasVoiceQueue) { - if (!userHasVoiceQueue) { - return res.sendStatus(404); - } - var updated = _.merge(userHasVoiceQueue, req.body); - updated.save() - .then(function() { - return res.status(200).send(userHasVoiceQueue); - }) - .catch(function(err) { - return handleError(res, err); - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes a userHasVoiceQueue from the DB. -exports.destroy = function(req, res) { - UserHasVoiceQueue - .findById(req.params.id) - .then(function(userHasVoiceQueue) { - if (!userHasVoiceQueue) { - return res.sendStatus(404); - } - userHasVoiceQueue.destroy() - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0xf177=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x55\x73\x65\x72\x48\x61\x73\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x6C\x6F\x67","\x65\x72\x72\x6F\x72","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x64\x65\x73\x74\x72\x6F\x79"];_0xf177[0];var _=require(_0xf177[1]);var UserHasVoiceQueue=require(_0xf177[3])[_0xf177[2]];exports[_0xf177[4]]= function(_0xd8d5x3,_0xd8d5x4){UserHasVoiceQueue[_0xf177[10]](_0xd8d5x3[_0xf177[9]]?{where:_0xd8d5x3[_0xf177[9]]}:{})[_0xf177[8]](function(_0xd8d5x6){return _0xd8d5x4[_0xf177[7]](200)[_0xf177[6]](_0xd8d5x6)})[_0xf177[5]](function(_0xd8d5x5){return handleError(_0xd8d5x4,_0xd8d5x5)})};exports[_0xf177[11]]= function(_0xd8d5x3,_0xd8d5x4){UserHasVoiceQueue[_0xf177[15]](_0xd8d5x3[_0xf177[14]][_0xf177[13]])[_0xf177[8]](function(_0xd8d5x7){if(!_0xd8d5x7){return _0xd8d5x4[_0xf177[12]](404)};return _0xd8d5x4[_0xf177[6]](_0xd8d5x7)})[_0xf177[5]](function(_0xd8d5x5){return handleError(_0xd8d5x4,_0xd8d5x5)})};exports[_0xf177[16]]= function(_0xd8d5x3,_0xd8d5x4,_0xd8d5x8){console[_0xf177[18]](_0xd8d5x3[_0xf177[17]]);UserHasVoiceQueue[_0xf177[16]](_0xd8d5x3[_0xf177[17]])[_0xf177[8]](function(_0xd8d5x7){return _0xd8d5x4[_0xf177[7]](201)[_0xf177[6]](_0xd8d5x7)})[_0xf177[5]](function(_0xd8d5x5){console[_0xf177[19]](_0xd8d5x5);return _0xd8d5x8(_0xd8d5x5)})};exports[_0xf177[20]]= function(_0xd8d5x3,_0xd8d5x4){if(_0xd8d5x3[_0xf177[17]][_0xf177[13]]){delete _0xd8d5x3[_0xf177[17]][_0xf177[13]]};UserHasVoiceQueue[_0xf177[15]](_0xd8d5x3[_0xf177[14]][_0xf177[13]])[_0xf177[8]](function(_0xd8d5x7){if(!_0xd8d5x7){return _0xd8d5x4[_0xf177[12]](404)};var _0xd8d5x9=_[_0xf177[21]](_0xd8d5x7,_0xd8d5x3[_0xf177[17]]);_0xd8d5x9[_0xf177[22]]()[_0xf177[8]](function(){return _0xd8d5x4[_0xf177[7]](200)[_0xf177[6]](_0xd8d5x7)})[_0xf177[5]](function(_0xd8d5x5){return handleError(_0xd8d5x4,_0xd8d5x5)})})[_0xf177[5]](function(_0xd8d5x5){return handleError(_0xd8d5x4,_0xd8d5x5)})};exports[_0xf177[23]]= function(_0xd8d5x3,_0xd8d5x4){UserHasVoiceQueue[_0xf177[15]](_0xd8d5x3[_0xf177[14]][_0xf177[13]])[_0xf177[8]](function(_0xd8d5x7){if(!_0xd8d5x7){return _0xd8d5x4[_0xf177[12]](404)};_0xd8d5x7[_0xf177[23]]()[_0xf177[8]](function(){return _0xd8d5x4[_0xf177[12]](204)})[_0xf177[5]](function(_0xd8d5x5){return handleError(_0xd8d5x4,_0xd8d5x5)})})[_0xf177[5]](function(_0xd8d5x5){return handleError(_0xd8d5x4,_0xd8d5x5)})};function handleError(_0xd8d5x4,_0xd8d5x5){return _0xd8d5x4[_0xf177[7]](500)[_0xf177[6]](_0xd8d5x5)} \ No newline at end of file diff --git a/server/api/user_has_voice_queue/user_has_voice_queue.events.js b/server/api/user_has_voice_queue/user_has_voice_queue.events.js index aacd9a7..db41992 100644 --- a/server/api/user_has_voice_queue/user_has_voice_queue.events.js +++ b/server/api/user_has_voice_queue/user_has_voice_queue.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const UserHasVoiceQueue = require('../../models').UserHasVoiceQueue; - -var UserHasVoiceQueueEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -UserHasVoiceQueueEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - UserHasVoiceQueue.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - UserHasVoiceQueueEvents.emit(event + ':' + doc._id, doc); - UserHasVoiceQueueEvents.emit(event, doc); - done(null); - } -} - -module.exports = UserHasVoiceQueueEvents; +var _0x3f41=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x55\x73\x65\x72\x48\x61\x73\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x3f41[0];const EventEmitter=require(_0x3f41[1]);const UserHasVoiceQueue=require(_0x3f41[3])[_0x3f41[2]];var UserHasVoiceQueueEvents= new EventEmitter();UserHasVoiceQueueEvents[_0x3f41[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x3f41[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x3f41[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x3f41[6]};for(var e in events){var event=events[e];UserHasVoiceQueue[_0x3f41[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xcec0x8,_0xcec0x9,_0xcec0xa){UserHasVoiceQueueEvents[_0x3f41[10]](event+ _0x3f41[8]+ _0xcec0x8[_0x3f41[9]],_0xcec0x8);UserHasVoiceQueueEvents[_0x3f41[10]](event,_0xcec0x8);_0xcec0xa(null)}}module[_0x3f41[11]]= UserHasVoiceQueueEvents \ No newline at end of file diff --git a/server/api/user_has_voice_queue/user_has_voice_queue.socket.js b/server/api/user_has_voice_queue/user_has_voice_queue.socket.js index 5056bed..e7d0bf8 100644 --- a/server/api/user_has_voice_queue/user_has_voice_queue.socket.js +++ b/server/api/user_has_voice_queue/user_has_voice_queue.socket.js @@ -1,58 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const UserHasVoiceQueueEvents = require('./user_has_voice_queue.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('user_has_voice_queue:' + event, socket); - - UserHasVoiceQueueEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - switch (event) { - case 'user_has_voice_queue:save': - socket.emit(event, { - logged: doc.logged, - loggedAt: doc.loggedAt, - queue: doc.queue, - membername: doc.membername, - interface: doc.interface, - callstaken: doc.callstaken, - lastcall: doc.lastcall, - status: doc.status, - statusdesc: doc.statusdesc, - statusAt: doc.statusAt, - paused: doc.paused, - pausedAt: doc.pausedAt, - reason: doc.reason, - UserId: doc.UserId - }); - break; - - case 'user_has_voice_queue:remove': - socket.emit(event, doc); - break; - - default: - - } - }; -} - -function removeListener(event, listener) { - return function() { - UserHasVoiceQueueEvents.removeListener(event, listener); - }; -} +var _0xac33=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x76\x6F\x69\x63\x65\x5F\x71\x75\x65\x75\x65\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x76\x6F\x69\x63\x65\x5F\x71\x75\x65\x75\x65\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x6C\x6F\x67\x67\x65\x64","\x6C\x6F\x67\x67\x65\x64\x41\x74","\x71\x75\x65\x75\x65","\x6D\x65\x6D\x62\x65\x72\x6E\x61\x6D\x65","\x69\x6E\x74\x65\x72\x66\x61\x63\x65","\x63\x61\x6C\x6C\x73\x74\x61\x6B\x65\x6E","\x6C\x61\x73\x74\x63\x61\x6C\x6C","\x73\x74\x61\x74\x75\x73","\x73\x74\x61\x74\x75\x73\x64\x65\x73\x63","\x73\x74\x61\x74\x75\x73\x41\x74","\x70\x61\x75\x73\x65\x64","\x70\x61\x75\x73\x65\x64\x41\x74","\x72\x65\x61\x73\x6F\x6E","\x55\x73\x65\x72\x49\x64","\x65\x6D\x69\x74","\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x76\x6F\x69\x63\x65\x5F\x71\x75\x65\x75\x65\x3A\x73\x61\x76\x65","\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x76\x6F\x69\x63\x65\x5F\x71\x75\x65\x75\x65\x3A\x72\x65\x6D\x6F\x76\x65","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xac33[0];const UserHasVoiceQueueEvents=require(_0xac33[1]);var events=[_0xac33[2],_0xac33[3]];exports[_0xac33[4]]= function(_0xf4a8x3){for(var _0xf4a8x4=0,_0xf4a8x5=events[_0xac33[5]];_0xf4a8x4< _0xf4a8x5;_0xf4a8x4++){var _0xf4a8x6=events[_0xf4a8x4];var _0xf4a8x7=createListener(_0xac33[6]+ _0xf4a8x6,_0xf4a8x3);UserHasVoiceQueueEvents[_0xac33[7]](_0xf4a8x6,_0xf4a8x7);_0xf4a8x3[_0xac33[7]](_0xac33[8],removeListener(_0xf4a8x6,_0xf4a8x7))}};function createListener(_0xf4a8x6,_0xf4a8x3){return function(_0xf4a8x9){switch(_0xf4a8x6){case _0xac33[24]:_0xf4a8x3[_0xac33[23]](_0xf4a8x6,{logged:_0xf4a8x9[_0xac33[9]],loggedAt:_0xf4a8x9[_0xac33[10]],queue:_0xf4a8x9[_0xac33[11]],membername:_0xf4a8x9[_0xac33[12]],interface:_0xf4a8x9[_0xac33[13]],callstaken:_0xf4a8x9[_0xac33[14]],lastcall:_0xf4a8x9[_0xac33[15]],status:_0xf4a8x9[_0xac33[16]],statusdesc:_0xf4a8x9[_0xac33[17]],statusAt:_0xf4a8x9[_0xac33[18]],paused:_0xf4a8x9[_0xac33[19]],pausedAt:_0xf4a8x9[_0xac33[20]],reason:_0xf4a8x9[_0xac33[21]],UserId:_0xf4a8x9[_0xac33[22]]});break;case _0xac33[25]:_0xf4a8x3[_0xac33[23]](_0xf4a8x6,_0xf4a8x9);break;default:}}}function removeListener(_0xf4a8x6,_0xf4a8x7){return function(){UserHasVoiceQueueEvents[_0xac33[26]](_0xf4a8x6,_0xf4a8x7)}} \ No newline at end of file diff --git a/server/api/user_has_voice_queue/user_has_voice_queue_permit.events.js b/server/api/user_has_voice_queue/user_has_voice_queue_permit.events.js index edcd78c..9d57312 100644 --- a/server/api/user_has_voice_queue/user_has_voice_queue_permit.events.js +++ b/server/api/user_has_voice_queue/user_has_voice_queue_permit.events.js @@ -1,35 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const UserHasVoiceQueuePermit = require('../../models').UserHasVoiceQueuePermit; - -var UserHasVoiceQueuePermitEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -UserHasVoiceQueuePermitEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - UserHasVoiceQueuePermit.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - UserHasVoiceQueuePermitEvents.emit(event + ':' + doc._id, doc); - UserHasVoiceQueuePermitEvents.emit(event, doc); - done(null); - } -} - -module.exports = UserHasVoiceQueuePermitEvents; +var _0x10cd=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x55\x73\x65\x72\x48\x61\x73\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65\x50\x65\x72\x6D\x69\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x10cd[0];const EventEmitter=require(_0x10cd[1]);const UserHasVoiceQueuePermit=require(_0x10cd[3])[_0x10cd[2]];var UserHasVoiceQueuePermitEvents= new EventEmitter();UserHasVoiceQueuePermitEvents[_0x10cd[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x10cd[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x10cd[6]};for(var e in events){var event=events[e];UserHasVoiceQueuePermit[_0x10cd[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x632fx8,_0x632fx9,_0x632fxa){UserHasVoiceQueuePermitEvents[_0x10cd[10]](event+ _0x10cd[8]+ _0x632fx8[_0x10cd[9]],_0x632fx8);UserHasVoiceQueuePermitEvents[_0x10cd[10]](event,_0x632fx8);_0x632fxa(null)}}module[_0x10cd[11]]= UserHasVoiceQueuePermitEvents \ No newline at end of file diff --git a/server/api/user_has_voice_queue/user_has_voice_queue_permit.socket.js b/server/api/user_has_voice_queue/user_has_voice_queue_permit.socket.js index 877e1e4..b3cb11e 100644 --- a/server/api/user_has_voice_queue/user_has_voice_queue_permit.socket.js +++ b/server/api/user_has_voice_queue/user_has_voice_queue_permit.socket.js @@ -1,34 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const UserHasVoiceQueuePermitEvents = require('./user_has_voice_queue_permit.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('user_has_voice_queue_permit:' + event, socket); - - UserHasVoiceQueuePermitEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - if (socket.userId === doc.Userid) { - socket.emit('user_has_voice_queue_permit:change'); - } - }; -} - -function removeListener(event, listener) { - return function() { - UserHasVoiceQueuePermitEvents.removeListener(event, listener); - }; -} +var _0x8249=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x76\x6F\x69\x63\x65\x5F\x71\x75\x65\x75\x65\x5F\x70\x65\x72\x6D\x69\x74\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x76\x6F\x69\x63\x65\x5F\x71\x75\x65\x75\x65\x5F\x70\x65\x72\x6D\x69\x74\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x75\x73\x65\x72\x49\x64","\x55\x73\x65\x72\x69\x64","\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x76\x6F\x69\x63\x65\x5F\x71\x75\x65\x75\x65\x5F\x70\x65\x72\x6D\x69\x74\x3A\x63\x68\x61\x6E\x67\x65","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x8249[0];const UserHasVoiceQueuePermitEvents=require(_0x8249[1]);var events=[_0x8249[2],_0x8249[3]];exports[_0x8249[4]]= function(_0x590ex3){for(var _0x590ex4=0,_0x590ex5=events[_0x8249[5]];_0x590ex4< _0x590ex5;_0x590ex4++){var _0x590ex6=events[_0x590ex4];var _0x590ex7=createListener(_0x8249[6]+ _0x590ex6,_0x590ex3);UserHasVoiceQueuePermitEvents[_0x8249[7]](_0x590ex6,_0x590ex7);_0x590ex3[_0x8249[7]](_0x8249[8],removeListener(_0x590ex6,_0x590ex7))}};function createListener(_0x590ex6,_0x590ex3){return function(_0x590ex9){if(_0x590ex3[_0x8249[9]]=== _0x590ex9[_0x8249[10]]){_0x590ex3[_0x8249[12]](_0x8249[11])}}}function removeListener(_0x590ex6,_0x590ex7){return function(){UserHasVoiceQueuePermitEvents[_0x8249[13]](_0x590ex6,_0x590ex7)}} \ No newline at end of file diff --git a/server/api/variable/index.js b/server/api/variable/index.js index 3af9541..c383d0f 100644 --- a/server/api/variable/index.js +++ b/server/api/variable/index.js @@ -1,166 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./variable.controller'); -var auth = require('../../auth/auth.service'); - -var router = express.Router(); -/** - * @api {get} /api/variables/ Get Variables' list. - * - * @apiParam (Query) {Number} [offset] Pagination offset. - * @apiParam (Query) {Number} [limit] Pagination limit. - * - * @apiVersion 0.0.140 - * @apiName GetVariables - * @apiGroup Variables - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccess {Number} count Number of variables. - * @apiSuccess {Object[]} rows Variables' list. - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 200 OK - * { - * "count": 2, - * "rows": [{ - * "id": 1 - * "name": "variable1" - * "description": "my variable description" - * ... - * },{ - * "id": 2 - * "name": "newvariable" - * "description": null - * ... - * },...] - * } - */ -router.get('/', auth.isAuthenticated(), auth.hasModule([13, 14], ['admin']), controller.index); -/** - * @api {get} /api/variables/:id Get Variable's details. - * @apiParam {Number} id Variable's unique ID. - * @apiVersion 0.0.140 - * @apiName GetVariable - * @apiGroup Variables - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccess {Object} Variable's details. - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 200 OK - * { - * "id": 1 - * "name": "variable1" - * "description": "my variable description" - * ... - * } - */ -router.get('/:id', auth.isAuthenticated(), auth.hasModule([13], ['admin']), controller.show); -/** - * @api {post} /api/variables/ Create a new variable. - * @apiParam (body) {String} name Variable's name. - * @apiParam (body) {String} [description] Variable's description. - * - * @apiVersion 0.0.140 - * @apiName CreateVariable - * @apiGroup Variables - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 201 Created - * { - * "id": 3 - * "name": "Variable3" - * "description": "my variable" - * ... - * } - */ -router.post('/', auth.isAuthenticated(), auth.hasModule([13], ['admin']), controller.create); -/** - * @api {put} /api/variables/:id Update variable's details. - * @apiParam {Number} id Variable's unique ID. - * @apiParam (body) {String} name Variable's name. - * @apiParam (body) {String} [description] Variable's description. - * - * @apiVersion 0.0.140 - * @apiName UpdateVariable - * @apiGroup Variables - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 200 OK - * { - * "id": 3 - * "name": "Variable 3" - * "description": "My new description" - * ... - * } - */ -router.put('/:id', auth.isAuthenticated(), auth.hasModule([13], ['admin']), controller.update); -/** - * @api {delete} /api/variables/ Bulk Delete variables. - * - * @apiParam (Query) {Number[]} ids Variables' unique ID array. - * - * @apiVersion 0.0.140 - * @apiName BulkDeleteVariables - * @apiGroup Variables - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 204 No Content - */ -router.delete('/', auth.isAuthenticated(), auth.hasModule([13], ['admin']), controller.bulkDestroy); -/** - * @api {delete} /api/variables/:id Delete a variable. - * - * @apiParam {Number} id Variable's unique ID. - * - * @apiVersion 0.0.140 - * @apiName DeleteVariable - * @apiGroup Variables - * - * @apiHeader (Header) {String} Authorization Authorization access token. - * - * @apiHeaderExample {json} Header-Example: - * { - * "Authentication": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI" - * } - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 204 No Content - */ -router.delete('/:id', auth.isAuthenticated(), auth.hasModule([13], ['admin']), controller.destroy); - -module.exports = router; +var _0x8e37=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x76\x61\x72\x69\x61\x62\x6C\x65\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0x8e37[0];var express=require(_0x8e37[1]);var controller=require(_0x8e37[2]);var auth=require(_0x8e37[3]);var router=express.Router();router[_0x8e37[9]](_0x8e37[4],auth[_0x8e37[5]](),auth[_0x8e37[7]]([13,14],[_0x8e37[6]]),controller[_0x8e37[8]]);router[_0x8e37[9]](_0x8e37[10],auth[_0x8e37[5]](),auth[_0x8e37[7]]([13],[_0x8e37[6]]),controller[_0x8e37[11]]);router[_0x8e37[13]](_0x8e37[4],auth[_0x8e37[5]](),auth[_0x8e37[7]]([13],[_0x8e37[6]]),controller[_0x8e37[12]]);router[_0x8e37[15]](_0x8e37[10],auth[_0x8e37[5]](),auth[_0x8e37[7]]([13],[_0x8e37[6]]),controller[_0x8e37[14]]);router[_0x8e37[17]](_0x8e37[4],auth[_0x8e37[5]](),auth[_0x8e37[7]]([13],[_0x8e37[6]]),controller[_0x8e37[16]]);router[_0x8e37[17]](_0x8e37[10],auth[_0x8e37[5]](),auth[_0x8e37[7]]([13],[_0x8e37[6]]),controller[_0x8e37[18]]);module[_0x8e37[19]]= router \ No newline at end of file diff --git a/server/api/variable/variable.controller.js b/server/api/variable/variable.controller.js index 2378a95..5e9e377 100644 --- a/server/api/variable/variable.controller.js +++ b/server/api/variable/variable.controller.js @@ -1,117 +1 @@ -'use strict'; - -var _ = require('lodash'); -var Variable = require('../../models').Variable; -var Util = require('../../config/util'); - -// Get list of variables -exports.index = function(req, res, next) { - return Variable - .findAndCountAll(Util.getQuery(req.query)) - .then(function(result) { - res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get a single variable -exports.show = function(req, res) { - return Variable - .findById(req.params.id) - .then(function(variable) { - if (!variable) { - return res.sendStatus(404); - } - return res.send(variable); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Creates a new variable in the DB. -exports.create = function(req, res) { - return Variable - .create(req.body) - .then(function(variable) { - return res.status(201).send(variable); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Updates an existing variable in the DB. -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - - return Variable - .findById(req.params.id) - .then(function(variable) { - if (!variable) { - return res.sendStatus(404); - } - var updated = _.merge(variable, req.body); - return updated - .save(); - }) - .then(function(variable) { - return res.status(200).send(variable); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes a variable from the DB. -exports.destroy = function(req, res) { - return Variable - .scope('fields') - .findById(req.params.id) - .then(function(variable) { - if (!variable) { - return res.sendStatus(404); - } - if (variableHasAssociation(variable)) { - var err = new Error(); - err.message = 'Variable is associated with an integration\'s configuration'; - throw err; - } - return variable.destroy(); - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.bulkDestroy = function(req, res) { - return Variable - .destroy({ - where: { - id: req.query.ids - }, - individualHooks: true - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} - -function variableHasAssociation(variable) { - return ((variable.ZendeskFields && variable.ZendeskFields.length > 0) || (variable.DeskFields && variable.DeskFields.length > 0) || (variable.SalesforceFields && variable.SalesforceFields.length > - 0) || (variable.FreshdeskFields && variable.FreshdeskFields.length > 0) || (variable.SugarcrmFields && variable.SugarcrmFields.length > 0)); -} +var _0x4563=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x56\x61\x72\x69\x61\x62\x6C\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x64\x65\x73\x74\x72\x6F\x79","\x6D\x65\x73\x73\x61\x67\x65","\x56\x61\x72\x69\x61\x62\x6C\x65\x20\x69\x73\x20\x61\x73\x73\x6F\x63\x69\x61\x74\x65\x64\x20\x77\x69\x74\x68\x20\x61\x6E\x20\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x27\x73\x20\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E","\x66\x69\x65\x6C\x64\x73","\x73\x63\x6F\x70\x65","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73","\x5A\x65\x6E\x64\x65\x73\x6B\x46\x69\x65\x6C\x64\x73","\x6C\x65\x6E\x67\x74\x68","\x44\x65\x73\x6B\x46\x69\x65\x6C\x64\x73","\x53\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x46\x69\x65\x6C\x64\x73","\x46\x72\x65\x73\x68\x64\x65\x73\x6B\x46\x69\x65\x6C\x64\x73","\x53\x75\x67\x61\x72\x63\x72\x6D\x46\x69\x65\x6C\x64\x73"];_0x4563[0];var _=require(_0x4563[1]);var Variable=require(_0x4563[3])[_0x4563[2]];var Util=require(_0x4563[4]);exports[_0x4563[5]]= function(_0x61dex4,_0x61dex5,_0x61dex6){return Variable[_0x4563[12]](Util[_0x4563[11]](_0x61dex4[_0x4563[10]]))[_0x4563[9]](function(_0x61dex8){_0x61dex5[_0x4563[8]](200)[_0x4563[7]](_0x61dex8)})[_0x4563[6]](function(_0x61dex7){return handleError(_0x61dex5,_0x61dex7)})};exports[_0x4563[13]]= function(_0x61dex4,_0x61dex5){return Variable[_0x4563[17]](_0x61dex4[_0x4563[16]][_0x4563[15]])[_0x4563[9]](function(_0x61dex9){if(!_0x61dex9){return _0x61dex5[_0x4563[14]](404)};return _0x61dex5[_0x4563[7]](_0x61dex9)})[_0x4563[6]](function(_0x61dex7){return handleError(_0x61dex5,_0x61dex7)})};exports[_0x4563[18]]= function(_0x61dex4,_0x61dex5){return Variable[_0x4563[18]](_0x61dex4[_0x4563[19]])[_0x4563[9]](function(_0x61dex9){return _0x61dex5[_0x4563[8]](201)[_0x4563[7]](_0x61dex9)})[_0x4563[6]](function(_0x61dex7){return handleError(_0x61dex5,_0x61dex7)})};exports[_0x4563[20]]= function(_0x61dex4,_0x61dex5){if(_0x61dex4[_0x4563[19]][_0x4563[15]]){delete _0x61dex4[_0x4563[19]][_0x4563[15]]};return Variable[_0x4563[17]](_0x61dex4[_0x4563[16]][_0x4563[15]])[_0x4563[9]](function(_0x61dex9){if(!_0x61dex9){return _0x61dex5[_0x4563[14]](404)};var _0x61dexa=_[_0x4563[21]](_0x61dex9,_0x61dex4[_0x4563[19]]);return _0x61dexa[_0x4563[22]]()})[_0x4563[9]](function(_0x61dex9){return _0x61dex5[_0x4563[8]](200)[_0x4563[7]](_0x61dex9)})[_0x4563[6]](function(_0x61dex7){return handleError(_0x61dex5,_0x61dex7)})};exports[_0x4563[23]]= function(_0x61dex4,_0x61dex5){return Variable[_0x4563[27]](_0x4563[26])[_0x4563[17]](_0x61dex4[_0x4563[16]][_0x4563[15]])[_0x4563[9]](function(_0x61dex9){if(!_0x61dex9){return _0x61dex5[_0x4563[14]](404)};if(variableHasAssociation(_0x61dex9)){var _0x61dex7= new Error();_0x61dex7[_0x4563[24]]= _0x4563[25];throw _0x61dex7};return _0x61dex9[_0x4563[23]]()})[_0x4563[9]](function(){return _0x61dex5[_0x4563[14]](204)})[_0x4563[6]](function(_0x61dex7){return handleError(_0x61dex5,_0x61dex7)})};exports[_0x4563[28]]= function(_0x61dex4,_0x61dex5){return Variable[_0x4563[23]]({where:{id:_0x61dex4[_0x4563[10]][_0x4563[29]]},individualHooks:true})[_0x4563[9]](function(){return _0x61dex5[_0x4563[14]](204)})[_0x4563[6]](function(_0x61dex7){return handleError(_0x61dex5,_0x61dex7)})};function handleError(_0x61dex5,_0x61dex7){return _0x61dex5[_0x4563[8]](500)[_0x4563[7]](_0x61dex7)}function variableHasAssociation(_0x61dex9){return ((_0x61dex9[_0x4563[30]]&& _0x61dex9[_0x4563[30]][_0x4563[31]]> 0)|| (_0x61dex9[_0x4563[32]]&& _0x61dex9[_0x4563[32]][_0x4563[31]]> 0)|| (_0x61dex9[_0x4563[33]]&& _0x61dex9[_0x4563[33]][_0x4563[31]]> 0)|| (_0x61dex9[_0x4563[34]]&& _0x61dex9[_0x4563[34]][_0x4563[31]]> 0)|| (_0x61dex9[_0x4563[35]]&& _0x61dex9[_0x4563[35]][_0x4563[31]]> 0))} \ No newline at end of file diff --git a/server/api/variable/variable.events.js b/server/api/variable/variable.events.js index 2f51fee..050ccb2 100644 --- a/server/api/variable/variable.events.js +++ b/server/api/variable/variable.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const Variable = require('../../models').Variable; - -var VariableEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -VariableEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - Variable.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - VariableEvents.emit(event + ':' + doc._id, doc); - VariableEvents.emit(event, doc); - done(null); - } -} - -module.exports = VariableEvents; +var _0x1e21=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x56\x61\x72\x69\x61\x62\x6C\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x1e21[0];const EventEmitter=require(_0x1e21[1]);const Variable=require(_0x1e21[3])[_0x1e21[2]];var VariableEvents= new EventEmitter();VariableEvents[_0x1e21[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x1e21[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x1e21[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x1e21[6]};for(var e in events){var event=events[e];Variable[_0x1e21[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x1ea2x8,_0x1ea2x9,_0x1ea2xa){VariableEvents[_0x1e21[10]](event+ _0x1e21[8]+ _0x1ea2x8[_0x1e21[9]],_0x1ea2x8);VariableEvents[_0x1e21[10]](event,_0x1ea2x8);_0x1ea2xa(null)}}module[_0x1e21[11]]= VariableEvents \ No newline at end of file diff --git a/server/api/variable/variable.socket.js b/server/api/variable/variable.socket.js index 32f14e8..24382a0 100644 --- a/server/api/variable/variable.socket.js +++ b/server/api/variable/variable.socket.js @@ -1,32 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const VariableEvents = require('./variable.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('variable:' + event, socket); - - VariableEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - VariableEvents.removeListener(event, listener); - }; -} +var _0xd26a=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x76\x61\x72\x69\x61\x62\x6C\x65\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x76\x61\x72\x69\x61\x62\x6C\x65\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xd26a[0];const VariableEvents=require(_0xd26a[1]);var events=[_0xd26a[2],_0xd26a[3]];exports[_0xd26a[4]]= function(_0xbb41x3){for(var _0xbb41x4=0,_0xbb41x5=events[_0xd26a[5]];_0xbb41x4< _0xbb41x5;_0xbb41x4++){var _0xbb41x6=events[_0xbb41x4];var _0xbb41x7=createListener(_0xd26a[6]+ _0xbb41x6,_0xbb41x3);VariableEvents[_0xd26a[7]](_0xbb41x6,_0xbb41x7);_0xbb41x3[_0xd26a[7]](_0xd26a[8],removeListener(_0xbb41x6,_0xbb41x7))}};function createListener(_0xbb41x6,_0xbb41x3){return function(_0xbb41x9){_0xbb41x3[_0xd26a[9]](_0xbb41x6,_0xbb41x9)}}function removeListener(_0xbb41x6,_0xbb41x7){return function(){VariableEvents[_0xd26a[10]](_0xbb41x6,_0xbb41x7)}} \ No newline at end of file diff --git a/server/api/voice_context/index.js b/server/api/voice_context/index.js index 8f14e04..a81ca4c 100644 --- a/server/api/voice_context/index.js +++ b/server/api/voice_context/index.js @@ -1,16 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./voice_context.controller'); -var auth = require('../../auth/auth.service'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), auth.hasModule([7], ['admin']), controller.index); -router.get('/:id', auth.isAuthenticated(), auth.hasModule([7], ['admin']), controller.show); -router.post('/', auth.isAuthenticated(), auth.hasModule([7], ['admin']), controller.create); -router.post('/validate', auth.isAuthenticated(), auth.hasModule([7], ['admin']), controller.contextValidation); -router.put('/:id', auth.isAuthenticated(), auth.hasModule([7], ['admin']), controller.update); -router.delete('/', auth.isAuthenticated(), auth.hasModule([7], ['admin']), controller.bulkDestroy); -router.delete('/:id', auth.isAuthenticated(), auth.hasModule([7], ['admin']), controller.destroy); -module.exports = router; +var _0xa338=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x76\x6F\x69\x63\x65\x5F\x63\x6F\x6E\x74\x65\x78\x74\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x2F\x76\x61\x6C\x69\x64\x61\x74\x65","\x63\x6F\x6E\x74\x65\x78\x74\x56\x61\x6C\x69\x64\x61\x74\x69\x6F\x6E","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0xa338[0];var express=require(_0xa338[1]);var controller=require(_0xa338[2]);var auth=require(_0xa338[3]);var router=express.Router();router[_0xa338[9]](_0xa338[4],auth[_0xa338[5]](),auth[_0xa338[7]]([7],[_0xa338[6]]),controller[_0xa338[8]]);router[_0xa338[9]](_0xa338[10],auth[_0xa338[5]](),auth[_0xa338[7]]([7],[_0xa338[6]]),controller[_0xa338[11]]);router[_0xa338[13]](_0xa338[4],auth[_0xa338[5]](),auth[_0xa338[7]]([7],[_0xa338[6]]),controller[_0xa338[12]]);router[_0xa338[13]](_0xa338[14],auth[_0xa338[5]](),auth[_0xa338[7]]([7],[_0xa338[6]]),controller[_0xa338[15]]);router[_0xa338[17]](_0xa338[10],auth[_0xa338[5]](),auth[_0xa338[7]]([7],[_0xa338[6]]),controller[_0xa338[16]]);router[_0xa338[19]](_0xa338[4],auth[_0xa338[5]](),auth[_0xa338[7]]([7],[_0xa338[6]]),controller[_0xa338[18]]);router[_0xa338[19]](_0xa338[10],auth[_0xa338[5]](),auth[_0xa338[7]]([7],[_0xa338[6]]),controller[_0xa338[20]]);module[_0xa338[21]]= router \ No newline at end of file diff --git a/server/api/voice_context/voice_context.controller.js b/server/api/voice_context/voice_context.controller.js index c6ec224..0897868 100644 --- a/server/api/voice_context/voice_context.controller.js +++ b/server/api/voice_context/voice_context.controller.js @@ -1,227 +1 @@ -'use strict'; - -var _ = require('lodash'); -var util = require('util'); - -var Util = require('../../config/util'); -var sequelize = require('../../models').sequelize; - -var VoiceContext = require('../../models').VoiceContext; -var VoiceExtension = require('../../models').VoiceExtension; - -// Get list of agents -exports.index = function(req, res, next) { - return VoiceContext - .findAndCountAll(Util.getQuery(req.query)) - .then(function(result) { - res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get a single voiceContext -exports.show = function(req, res) { - return VoiceContext - .findById(req.params.id) - .then(function(voiceContext) { - if (!voiceContext) { - return res.sendStatus(404); - } - return res.send(voiceContext); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Validate the existence of a context -exports.contextValidation = function(req, res) { - return VoiceContext - .findAll({ - where: { - name: req.body.name - } - }) - .then(function(voiceContexts) { - if (!voiceContexts) { - return res.sendStatus(404); - } - return res.send(voiceContexts); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Creates a new voiceContext in the DB. -exports.create = function(req, res) { - return VoiceContext - .create(req.body) - .then(function(voiceContext) { - return res.status(201).send(voiceContext); - }) - .catch(sequelize.UniqueConstraintError, function(err) { - err.message = 'The context name already exists'; - err.translatedMessage = 'MESSAGE_EXIST_CONTEXT' - return handleError(res, err); - }) - .catch(function(err) { - return handleError(res, err); - }); - -}; - -// Updates an existing voiceContext in the DB. -exports.update = function(req, res) { - return VoiceContext - .findAll({ - where: { - name: req.body.name, - id: { - $ne: req.body.id - } - } - }) - .then(function(existingContexts) { - if (!existingContexts) { - return res.sendStatus(404); - } - if (existingContexts.length > 0) { - return res.status(500).send({ - message: 'MESSAGE_EXIST_CONTEXT' - }); - } - if (req.body.id) { - delete req.body.id; - } - return VoiceContext - .findById(req.params.id); - }) - .then(function(voiceContext) { - if (!voiceContext) { - return res.sendStatus(404); - } - var updated = _.merge(voiceContext, req.body); - return updated - .save(); - }) - .then(function(voiceContext) { - return res.status(200).send(voiceContext); - }) - .catch(function(err) { - return handleError(res, err); - }); - -}; - -// Deletes a voiceContext from the DB. -exports.destroy = function(req, res) { - var _voiceContext; - - return VoiceContext - .findById(req.params.id) - .then(function(voiceContext) { - _voiceContext = voiceContext; - if (!_voiceContext) { - return res.sendStatus(404); - } - if (_voiceContext.defaultEntry) { - return res.status(500).send({ - message: 'You can\'t delete a default entry!', - translatedMessage: 'MESSAGE_DEFAULT_ENTRY' - }); - } - return VoiceExtension - .findAll({ - where: { - context: _voiceContext.name, - VoiceContextId: null - } - }); - }) - .then(function(contextExtensions) { - console.log(contextExtensions); - if (contextExtensions.length > 0) { - return res.status(500).send({ - message: 'The context is associated to a route, delete or change it first', - translatedMessage: 'MESSAGE_CONTEXT_ROUTE_ASSOCIATED' - }); - } - return _voiceContext - .destroy(); - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - console.log('err', err); - return handleError(res, err); - }); - -}; - -// Deletes a context from the DB. -exports.bulkDestroy = function(req, res) { - - var _voiceContexts; - - return VoiceContext - .findAll({ - where: { - id: req.query.ids - } - }) - .then(function(voiceContexts) { - _voiceContexts = voiceContexts; - var isDefault = _.find(_voiceContexts, { - defaultEntry: true - }); - if (isDefault) { - return res.status(500).send({ - message: 'You can\'t delete a default entry!', - translatedMessage: 'MESSAGE_DEFAULT_ENTRY' - }); - } - if (!_voiceContexts) { - return res.sendStatus(404); - } - var destroyContextsNames = _.map(_.map(_voiceContexts, 'dataValues'), 'name'); - - return VoiceExtension - .findAll({ - where: { - context: destroyContextsNames, - VoiceContextId: null - } - }); - }) - .then(function(contextExtensions) { - if (contextExtensions.length > _voiceContexts.length) { - return res.status(500).send({ - message: 'The context is associated to a route, delete or change it first', - translatedMessage: 'MESSAGE_CONTEXT_ROUTE_ASSOCIATED' - }); - } - - return VoiceContext - .destroy({ - where: { - id: req.query.ids - }, - individualHooks: true - }); - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0x8cb4=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x75\x74\x69\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x56\x6F\x69\x63\x65\x43\x6F\x6E\x74\x65\x78\x74","\x56\x6F\x69\x63\x65\x45\x78\x74\x65\x6E\x73\x69\x6F\x6E","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x6F\x6E\x74\x65\x78\x74\x56\x61\x6C\x69\x64\x61\x74\x69\x6F\x6E","\x6E\x61\x6D\x65","\x62\x6F\x64\x79","\x66\x69\x6E\x64\x41\x6C\x6C","\x63\x72\x65\x61\x74\x65","\x6D\x65\x73\x73\x61\x67\x65","\x54\x68\x65\x20\x63\x6F\x6E\x74\x65\x78\x74\x20\x6E\x61\x6D\x65\x20\x61\x6C\x72\x65\x61\x64\x79\x20\x65\x78\x69\x73\x74\x73","\x74\x72\x61\x6E\x73\x6C\x61\x74\x65\x64\x4D\x65\x73\x73\x61\x67\x65","\x4D\x45\x53\x53\x41\x47\x45\x5F\x45\x58\x49\x53\x54\x5F\x43\x4F\x4E\x54\x45\x58\x54","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x6C\x65\x6E\x67\x74\x68","\x64\x65\x73\x74\x72\x6F\x79","\x65\x72\x72","\x6C\x6F\x67","\x54\x68\x65\x20\x63\x6F\x6E\x74\x65\x78\x74\x20\x69\x73\x20\x61\x73\x73\x6F\x63\x69\x61\x74\x65\x64\x20\x74\x6F\x20\x61\x20\x72\x6F\x75\x74\x65\x2C\x20\x64\x65\x6C\x65\x74\x65\x20\x6F\x72\x20\x63\x68\x61\x6E\x67\x65\x20\x69\x74\x20\x66\x69\x72\x73\x74","\x4D\x45\x53\x53\x41\x47\x45\x5F\x43\x4F\x4E\x54\x45\x58\x54\x5F\x52\x4F\x55\x54\x45\x5F\x41\x53\x53\x4F\x43\x49\x41\x54\x45\x44","\x64\x65\x66\x61\x75\x6C\x74\x45\x6E\x74\x72\x79","\x59\x6F\x75\x20\x63\x61\x6E\x27\x74\x20\x64\x65\x6C\x65\x74\x65\x20\x61\x20\x64\x65\x66\x61\x75\x6C\x74\x20\x65\x6E\x74\x72\x79\x21","\x4D\x45\x53\x53\x41\x47\x45\x5F\x44\x45\x46\x41\x55\x4C\x54\x5F\x45\x4E\x54\x52\x59","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73","\x66\x69\x6E\x64","\x64\x61\x74\x61\x56\x61\x6C\x75\x65\x73","\x6D\x61\x70"];_0x8cb4[0];var _=require(_0x8cb4[1]);var util=require(_0x8cb4[2]);var Util=require(_0x8cb4[3]);var sequelize=require(_0x8cb4[5])[_0x8cb4[4]];var VoiceContext=require(_0x8cb4[5])[_0x8cb4[6]];var VoiceExtension=require(_0x8cb4[5])[_0x8cb4[7]];exports[_0x8cb4[8]]= function(_0xeac4x7,_0xeac4x8,_0xeac4x9){return VoiceContext[_0x8cb4[15]](Util[_0x8cb4[14]](_0xeac4x7[_0x8cb4[13]]))[_0x8cb4[12]](function(_0xeac4xb){_0xeac4x8[_0x8cb4[11]](200)[_0x8cb4[10]](_0xeac4xb)})[_0x8cb4[9]](function(_0xeac4xa){return handleError(_0xeac4x8,_0xeac4xa)})};exports[_0x8cb4[16]]= function(_0xeac4x7,_0xeac4x8){return VoiceContext[_0x8cb4[20]](_0xeac4x7[_0x8cb4[19]][_0x8cb4[18]])[_0x8cb4[12]](function(_0xeac4xc){if(!_0xeac4xc){return _0xeac4x8[_0x8cb4[17]](404)};return _0xeac4x8[_0x8cb4[10]](_0xeac4xc)})[_0x8cb4[9]](function(_0xeac4xa){return handleError(_0xeac4x8,_0xeac4xa)})};exports[_0x8cb4[21]]= function(_0xeac4x7,_0xeac4x8){return VoiceContext[_0x8cb4[24]]({where:{name:_0xeac4x7[_0x8cb4[23]][_0x8cb4[22]]}})[_0x8cb4[12]](function(_0xeac4xd){if(!_0xeac4xd){return _0xeac4x8[_0x8cb4[17]](404)};return _0xeac4x8[_0x8cb4[10]](_0xeac4xd)})[_0x8cb4[9]](function(_0xeac4xa){return handleError(_0xeac4x8,_0xeac4xa)})};exports[_0x8cb4[25]]= function(_0xeac4x7,_0xeac4x8){return VoiceContext[_0x8cb4[25]](_0xeac4x7[_0x8cb4[23]])[_0x8cb4[12]](function(_0xeac4xc){return _0xeac4x8[_0x8cb4[11]](201)[_0x8cb4[10]](_0xeac4xc)})[_0x8cb4[9]](sequelize.UniqueConstraintError,function(_0xeac4xa){_0xeac4xa[_0x8cb4[26]]= _0x8cb4[27];_0xeac4xa[_0x8cb4[28]]= _0x8cb4[29];return handleError(_0xeac4x8,_0xeac4xa)})[_0x8cb4[9]](function(_0xeac4xa){return handleError(_0xeac4x8,_0xeac4xa)})};exports[_0x8cb4[30]]= function(_0xeac4x7,_0xeac4x8){return VoiceContext[_0x8cb4[24]]({where:{name:_0xeac4x7[_0x8cb4[23]][_0x8cb4[22]],id:{$ne:_0xeac4x7[_0x8cb4[23]][_0x8cb4[18]]}}})[_0x8cb4[12]](function(_0xeac4xf){if(!_0xeac4xf){return _0xeac4x8[_0x8cb4[17]](404)};if(_0xeac4xf[_0x8cb4[33]]> 0){return _0xeac4x8[_0x8cb4[11]](500)[_0x8cb4[10]]({message:_0x8cb4[29]})};if(_0xeac4x7[_0x8cb4[23]][_0x8cb4[18]]){delete _0xeac4x7[_0x8cb4[23]][_0x8cb4[18]]};return VoiceContext[_0x8cb4[20]](_0xeac4x7[_0x8cb4[19]][_0x8cb4[18]])})[_0x8cb4[12]](function(_0xeac4xc){if(!_0xeac4xc){return _0xeac4x8[_0x8cb4[17]](404)};var _0xeac4xe=_[_0x8cb4[31]](_0xeac4xc,_0xeac4x7[_0x8cb4[23]]);return _0xeac4xe[_0x8cb4[32]]()})[_0x8cb4[12]](function(_0xeac4xc){return _0xeac4x8[_0x8cb4[11]](200)[_0x8cb4[10]](_0xeac4xc)})[_0x8cb4[9]](function(_0xeac4xa){return handleError(_0xeac4x8,_0xeac4xa)})};exports[_0x8cb4[34]]= function(_0xeac4x7,_0xeac4x8){var _0xeac4x10;return VoiceContext[_0x8cb4[20]](_0xeac4x7[_0x8cb4[19]][_0x8cb4[18]])[_0x8cb4[12]](function(_0xeac4xc){_0xeac4x10= _0xeac4xc;if(!_0xeac4x10){return _0xeac4x8[_0x8cb4[17]](404)};if(_0xeac4x10[_0x8cb4[39]]){return _0xeac4x8[_0x8cb4[11]](500)[_0x8cb4[10]]({message:_0x8cb4[40],translatedMessage:_0x8cb4[41]})};return VoiceExtension[_0x8cb4[24]]({where:{context:_0xeac4x10[_0x8cb4[22]],VoiceContextId:null}})})[_0x8cb4[12]](function(_0xeac4x11){console[_0x8cb4[36]](_0xeac4x11);if(_0xeac4x11[_0x8cb4[33]]> 0){return _0xeac4x8[_0x8cb4[11]](500)[_0x8cb4[10]]({message:_0x8cb4[37],translatedMessage:_0x8cb4[38]})};return _0xeac4x10[_0x8cb4[34]]()})[_0x8cb4[12]](function(){return _0xeac4x8[_0x8cb4[17]](204)})[_0x8cb4[9]](function(_0xeac4xa){console[_0x8cb4[36]](_0x8cb4[35],_0xeac4xa);return handleError(_0xeac4x8,_0xeac4xa)})};exports[_0x8cb4[42]]= function(_0xeac4x7,_0xeac4x8){var _0xeac4x12;return VoiceContext[_0x8cb4[24]]({where:{id:_0xeac4x7[_0x8cb4[13]][_0x8cb4[43]]}})[_0x8cb4[12]](function(_0xeac4xd){_0xeac4x12= _0xeac4xd;var _0xeac4x13=_[_0x8cb4[44]](_0xeac4x12,{defaultEntry:true});if(_0xeac4x13){return _0xeac4x8[_0x8cb4[11]](500)[_0x8cb4[10]]({message:_0x8cb4[40],translatedMessage:_0x8cb4[41]})};if(!_0xeac4x12){return _0xeac4x8[_0x8cb4[17]](404)};var _0xeac4x14=_[_0x8cb4[46]](_[_0x8cb4[46]](_0xeac4x12,_0x8cb4[45]),_0x8cb4[22]);return VoiceExtension[_0x8cb4[24]]({where:{context:_0xeac4x14,VoiceContextId:null}})})[_0x8cb4[12]](function(_0xeac4x11){if(_0xeac4x11[_0x8cb4[33]]> _0xeac4x12[_0x8cb4[33]]){return _0xeac4x8[_0x8cb4[11]](500)[_0x8cb4[10]]({message:_0x8cb4[37],translatedMessage:_0x8cb4[38]})};return VoiceContext[_0x8cb4[34]]({where:{id:_0xeac4x7[_0x8cb4[13]][_0x8cb4[43]]},individualHooks:true})})[_0x8cb4[12]](function(){return _0xeac4x8[_0x8cb4[17]](204)})[_0x8cb4[9]](function(_0xeac4xa){console[_0x8cb4[36]](_0xeac4xa);return handleError(_0xeac4x8,_0xeac4xa)})};function handleError(_0xeac4x8,_0xeac4xa){return _0xeac4x8[_0x8cb4[11]](500)[_0x8cb4[10]](_0xeac4xa)} \ No newline at end of file diff --git a/server/api/voice_context/voice_context.events.js b/server/api/voice_context/voice_context.events.js index c7c0711..5382cbc 100644 --- a/server/api/voice_context/voice_context.events.js +++ b/server/api/voice_context/voice_context.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const VoiceContext = require('../../models').VoiceContext; - -var VoiceContextEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -VoiceContextEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - VoiceContext.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - VoiceContextEvents.emit(event + ':' + doc._id, doc); - VoiceContextEvents.emit(event, doc); - done(null); - } -} - -module.exports = VoiceContextEvents; +var _0x7fbe=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x56\x6F\x69\x63\x65\x43\x6F\x6E\x74\x65\x78\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x7fbe[0];const EventEmitter=require(_0x7fbe[1]);const VoiceContext=require(_0x7fbe[3])[_0x7fbe[2]];var VoiceContextEvents= new EventEmitter();VoiceContextEvents[_0x7fbe[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x7fbe[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x7fbe[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x7fbe[6]};for(var e in events){var event=events[e];VoiceContext[_0x7fbe[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x6f33x8,_0x6f33x9,_0x6f33xa){VoiceContextEvents[_0x7fbe[10]](event+ _0x7fbe[8]+ _0x6f33x8[_0x7fbe[9]],_0x6f33x8);VoiceContextEvents[_0x7fbe[10]](event,_0x6f33x8);_0x6f33xa(null)}}module[_0x7fbe[11]]= VoiceContextEvents \ No newline at end of file diff --git a/server/api/voice_context/voice_context.socket.js b/server/api/voice_context/voice_context.socket.js index 34a2d6e..572fc48 100644 --- a/server/api/voice_context/voice_context.socket.js +++ b/server/api/voice_context/voice_context.socket.js @@ -1,32 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const VoiceContextEvents = require('./voice_context.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('voice_context:' + event, socket); - - VoiceContextEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - VoiceContextEvents.removeListener(event, listener); - }; -} +var _0xfe36=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x76\x6F\x69\x63\x65\x5F\x63\x6F\x6E\x74\x65\x78\x74\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x76\x6F\x69\x63\x65\x5F\x63\x6F\x6E\x74\x65\x78\x74\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xfe36[0];const VoiceContextEvents=require(_0xfe36[1]);var events=[_0xfe36[2],_0xfe36[3]];exports[_0xfe36[4]]= function(_0x9148x3){for(var _0x9148x4=0,_0x9148x5=events[_0xfe36[5]];_0x9148x4< _0x9148x5;_0x9148x4++){var _0x9148x6=events[_0x9148x4];var _0x9148x7=createListener(_0xfe36[6]+ _0x9148x6,_0x9148x3);VoiceContextEvents[_0xfe36[7]](_0x9148x6,_0x9148x7);_0x9148x3[_0xfe36[7]](_0xfe36[8],removeListener(_0x9148x6,_0x9148x7))}};function createListener(_0x9148x6,_0x9148x3){return function(_0x9148x9){_0x9148x3[_0xfe36[9]](_0x9148x6,_0x9148x9)}}function removeListener(_0x9148x6,_0x9148x7){return function(){VoiceContextEvents[_0xfe36[10]](_0x9148x6,_0x9148x7)}} \ No newline at end of file diff --git a/server/api/voice_disposition/index.js b/server/api/voice_disposition/index.js index 2c15433..8c3bab6 100644 --- a/server/api/voice_disposition/index.js +++ b/server/api/voice_disposition/index.js @@ -1,18 +1 @@ -'use strict'; - -var express = require('express'); -var auth = require('../../auth/auth.service'); -var controller = require('./voice_disposition.controller'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), controller.index); - -router.get('/:id', auth.isAuthenticated(), controller.show); -router.post('/', auth.isAuthenticated(), controller.create); -router.put('/:id', auth.isAuthenticated(), controller.update); -router.patch('/:id', auth.isAuthenticated(), controller.update); -router.delete('/:id', auth.isAuthenticated(), controller.destroy); - - -module.exports = router; +var _0x983b=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x76\x6F\x69\x63\x65\x5F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x70\x61\x74\x63\x68","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0x983b[0];var express=require(_0x983b[1]);var auth=require(_0x983b[2]);var controller=require(_0x983b[3]);var router=express.Router();router[_0x983b[7]](_0x983b[4],auth[_0x983b[5]](),controller[_0x983b[6]]);router[_0x983b[7]](_0x983b[8],auth[_0x983b[5]](),controller[_0x983b[9]]);router[_0x983b[11]](_0x983b[4],auth[_0x983b[5]](),controller[_0x983b[10]]);router[_0x983b[13]](_0x983b[8],auth[_0x983b[5]](),controller[_0x983b[12]]);router[_0x983b[14]](_0x983b[8],auth[_0x983b[5]](),controller[_0x983b[12]]);router[_0x983b[16]](_0x983b[8],auth[_0x983b[5]](),controller[_0x983b[15]]);module[_0x983b[17]]= router \ No newline at end of file diff --git a/server/api/voice_disposition/voice_disposition.controller.js b/server/api/voice_disposition/voice_disposition.controller.js index 96b0f15..ffe89fe 100644 --- a/server/api/voice_disposition/voice_disposition.controller.js +++ b/server/api/voice_disposition/voice_disposition.controller.js @@ -1,112 +1 @@ -/** - * Using Rails-like standard naming convention for endpoints. - * GET /api/voice/dispositions -> index - * POST /api/voice/dispositions -> create - * GET /api/voice/dispositions/:id -> show - * PUT /api/voice/dispositions/:id -> update - * DELETE /api/voice/dispositions/:id -> destroy - */ - -'use strict'; - - -var _ = require('lodash'); - -var VoiceDisposition = require('../../models').VoiceDisposition; - - -function handleError(res, statusCode) { - statusCode = statusCode || 500; - return function(err) { - console.log(err); - res.status(statusCode).send(err); - }; -} - -function responseWithResult(res, statusCode) { - statusCode = statusCode || 200; - return function(entity) { - if (entity) { - res.status(statusCode).json(entity); - } - }; -} - -function responseWithoutResult(res, statusCode) { - statusCode = statusCode || 200; - return function() { - res.sendStatus(statusCode); - }; -} - -function handleEntityNotFound(res) { - return function(entity) { - if (!entity) { - res.status(404).end(); - return null; - } - return entity; - }; -} - -function saveUpdates(updates) { - return function(entity) { - return entity.updateAttributes(updates) - .then(function(updated) { - return updated; - }); - }; -} - -function removeEntity(res) { - return function(entity) { - if (entity) { - return entity.destroy() - .then(function() { - res.status(204).end(); - }); - } - }; -} - -// Gets a list of VoiceDispositions -exports.index = function(req, res) { - VoiceDisposition.findAndCountAll() - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Gets a single VoiceDisposition from the DB -exports.show = function(req, res) { - VoiceDisposition.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Creates a new VoiceDisposition in the DB -exports.create = function(req, res) { - VoiceDisposition.create(req.body) - .then(responseWithResult(res, 201)) - .catch(handleError(res)); -} - -// Updates an existing VoiceDisposition in the DB -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - VoiceDisposition.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(saveUpdates(req.body)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Deletes a VoiceDisposition from the DB -exports.destroy = function(req, res) { - VoiceDisposition.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(removeEntity(res)) - .catch(handleError(res)); -} +var _0x4419=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x56\x6F\x69\x63\x65\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x6C\x6F\x67","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x6A\x73\x6F\x6E","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x65\x6E\x64","\x74\x68\x65\x6E","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x64\x65\x73\x74\x72\x6F\x79","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x73\x68\x6F\x77","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65"];_0x4419[0];var _=require(_0x4419[1]);var VoiceDisposition=require(_0x4419[3])[_0x4419[2]];function handleError(_0xfa20x4,_0xfa20x5){_0xfa20x5= _0xfa20x5|| 500;return function(_0xfa20x6){console[_0x4419[4]](_0xfa20x6);_0xfa20x4[_0x4419[6]](_0xfa20x5)[_0x4419[5]](_0xfa20x6)}}function responseWithResult(_0xfa20x4,_0xfa20x5){_0xfa20x5= _0xfa20x5|| 200;return function(_0xfa20x8){if(_0xfa20x8){_0xfa20x4[_0x4419[6]](_0xfa20x5)[_0x4419[7]](_0xfa20x8)}}}function responseWithoutResult(_0xfa20x4,_0xfa20x5){_0xfa20x5= _0xfa20x5|| 200;return function(){_0xfa20x4[_0x4419[8]](_0xfa20x5)}}function handleEntityNotFound(_0xfa20x4){return function(_0xfa20x8){if(!_0xfa20x8){_0xfa20x4[_0x4419[6]](404)[_0x4419[9]]();return null};return _0xfa20x8}}function saveUpdates(_0xfa20xc){return function(_0xfa20x8){return _0xfa20x8[_0x4419[11]](_0xfa20xc)[_0x4419[10]](function(_0xfa20xd){return _0xfa20xd})}}function removeEntity(_0xfa20x4){return function(_0xfa20x8){if(_0xfa20x8){return _0xfa20x8[_0x4419[12]]()[_0x4419[10]](function(){_0xfa20x4[_0x4419[6]](204)[_0x4419[9]]()})}}}exports[_0x4419[13]]= function(_0xfa20xf,_0xfa20x4){VoiceDisposition[_0x4419[15]]()[_0x4419[10]](responseWithResult(_0xfa20x4))[_0x4419[14]](handleError(_0xfa20x4))};exports[_0x4419[16]]= function(_0xfa20xf,_0xfa20x4){VoiceDisposition[_0x4419[19]](_0xfa20xf[_0x4419[18]][_0x4419[17]])[_0x4419[10]](handleEntityNotFound(_0xfa20x4))[_0x4419[10]](responseWithResult(_0xfa20x4))[_0x4419[14]](handleError(_0xfa20x4))};exports[_0x4419[20]]= function(_0xfa20xf,_0xfa20x4){VoiceDisposition[_0x4419[20]](_0xfa20xf[_0x4419[21]])[_0x4419[10]](responseWithResult(_0xfa20x4,201))[_0x4419[14]](handleError(_0xfa20x4))};exports[_0x4419[22]]= function(_0xfa20xf,_0xfa20x4){if(_0xfa20xf[_0x4419[21]][_0x4419[17]]){delete _0xfa20xf[_0x4419[21]][_0x4419[17]]};VoiceDisposition[_0x4419[19]](_0xfa20xf[_0x4419[18]][_0x4419[17]])[_0x4419[10]](handleEntityNotFound(_0xfa20x4))[_0x4419[10]](saveUpdates(_0xfa20xf[_0x4419[21]]))[_0x4419[10]](responseWithResult(_0xfa20x4))[_0x4419[14]](handleError(_0xfa20x4))};exports[_0x4419[12]]= function(_0xfa20xf,_0xfa20x4){VoiceDisposition[_0x4419[19]](_0xfa20xf[_0x4419[18]][_0x4419[17]])[_0x4419[10]](handleEntityNotFound(_0xfa20x4))[_0x4419[10]](removeEntity(_0xfa20x4))[_0x4419[14]](handleError(_0xfa20x4))} \ No newline at end of file diff --git a/server/api/voice_disposition/voice_disposition.events.js b/server/api/voice_disposition/voice_disposition.events.js index 8436878..6c05b76 100644 --- a/server/api/voice_disposition/voice_disposition.events.js +++ b/server/api/voice_disposition/voice_disposition.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const VoiceDisposition = require('../../models').VoiceDisposition; - -var VoiceDispositionEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -VoiceDispositionEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - VoiceDisposition.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - VoiceDispositionEvents.emit(event + ':' + doc._id, doc); - VoiceDispositionEvents.emit(event, doc); - done(null); - } -} - -module.exports = VoiceDispositionEvents; +var _0x43da=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x56\x6F\x69\x63\x65\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x43da[0];const EventEmitter=require(_0x43da[1]);const VoiceDisposition=require(_0x43da[3])[_0x43da[2]];var VoiceDispositionEvents= new EventEmitter();VoiceDispositionEvents[_0x43da[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x43da[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x43da[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x43da[6]};for(var e in events){var event=events[e];VoiceDisposition[_0x43da[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x5511x8,_0x5511x9,_0x5511xa){VoiceDispositionEvents[_0x43da[10]](event+ _0x43da[8]+ _0x5511x8[_0x43da[9]],_0x5511x8);VoiceDispositionEvents[_0x43da[10]](event,_0x5511x8);_0x5511xa(null)}}module[_0x43da[11]]= VoiceDispositionEvents \ No newline at end of file diff --git a/server/api/voice_disposition/voice_disposition.socket.js b/server/api/voice_disposition/voice_disposition.socket.js index 6cfaf1c..0c6329d 100644 --- a/server/api/voice_disposition/voice_disposition.socket.js +++ b/server/api/voice_disposition/voice_disposition.socket.js @@ -1,32 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const VoiceDispositionEvents = require('./voice_disposition.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('voice_disposition:' + event, socket); - - VoiceDispositionEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - VoiceDispositionEvents.removeListener(event, listener); - }; -} +var _0xf7f2=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x76\x6F\x69\x63\x65\x5F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x76\x6F\x69\x63\x65\x5F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xf7f2[0];const VoiceDispositionEvents=require(_0xf7f2[1]);var events=[_0xf7f2[2],_0xf7f2[3]];exports[_0xf7f2[4]]= function(_0x158fx3){for(var _0x158fx4=0,_0x158fx5=events[_0xf7f2[5]];_0x158fx4< _0x158fx5;_0x158fx4++){var _0x158fx6=events[_0x158fx4];var _0x158fx7=createListener(_0xf7f2[6]+ _0x158fx6,_0x158fx3);VoiceDispositionEvents[_0xf7f2[7]](_0x158fx6,_0x158fx7);_0x158fx3[_0xf7f2[7]](_0xf7f2[8],removeListener(_0x158fx6,_0x158fx7))}};function createListener(_0x158fx6,_0x158fx3){return function(_0x158fx9){_0x158fx3[_0xf7f2[9]](_0x158fx6,_0x158fx9)}}function removeListener(_0x158fx6,_0x158fx7){return function(){VoiceDispositionEvents[_0xf7f2[10]](_0x158fx6,_0x158fx7)}} \ No newline at end of file diff --git a/server/api/voice_extension/index.js b/server/api/voice_extension/index.js index 29591db..225c87e 100644 --- a/server/api/voice_extension/index.js +++ b/server/api/voice_extension/index.js @@ -1,16 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./voice_extension.controller'); -var auth = require('../../auth/auth.service'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), auth.hasModule([7], ['admin']), controller.index); -router.get('/:id', auth.isAuthenticated(), auth.hasModule([7], ['admin']), controller.show); -router.post('/', auth.isAuthenticated(), auth.hasModule([7], ['admin']), controller.create); -router.put('/:id', auth.isAuthenticated(), auth.hasModule([7], ['admin']), controller.update); -router.delete('/', auth.isAuthenticated(), auth.hasModule([7], ['admin']), controller.bulkDestroy); //check it for apps -router.delete('/:id', auth.isAuthenticated(), auth.hasModule([7], ['admin']), controller.destroy); //check it for apps - -module.exports = router; +var _0x483c=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x76\x6F\x69\x63\x65\x5F\x65\x78\x74\x65\x6E\x73\x69\x6F\x6E\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0x483c[0];var express=require(_0x483c[1]);var controller=require(_0x483c[2]);var auth=require(_0x483c[3]);var router=express.Router();router[_0x483c[9]](_0x483c[4],auth[_0x483c[5]](),auth[_0x483c[7]]([7],[_0x483c[6]]),controller[_0x483c[8]]);router[_0x483c[9]](_0x483c[10],auth[_0x483c[5]](),auth[_0x483c[7]]([7],[_0x483c[6]]),controller[_0x483c[11]]);router[_0x483c[13]](_0x483c[4],auth[_0x483c[5]](),auth[_0x483c[7]]([7],[_0x483c[6]]),controller[_0x483c[12]]);router[_0x483c[15]](_0x483c[10],auth[_0x483c[5]](),auth[_0x483c[7]]([7],[_0x483c[6]]),controller[_0x483c[14]]);router[_0x483c[17]](_0x483c[4],auth[_0x483c[5]](),auth[_0x483c[7]]([7],[_0x483c[6]]),controller[_0x483c[16]]);router[_0x483c[17]](_0x483c[10],auth[_0x483c[5]](),auth[_0x483c[7]]([7],[_0x483c[6]]),controller[_0x483c[18]]);module[_0x483c[19]]= router \ No newline at end of file diff --git a/server/api/voice_extension/voice_extension.controller.js b/server/api/voice_extension/voice_extension.controller.js index 8a6ec34..c8e82a7 100644 --- a/server/api/voice_extension/voice_extension.controller.js +++ b/server/api/voice_extension/voice_extension.controller.js @@ -1,148 +1 @@ -'use strict'; - -var _ = require('lodash'); -var VoiceExtension = require('../../models').VoiceExtension; -var Interval = require('../../models').Interval; -var sequelize = require('../../models').sequelize; -var Sequelize = require('../../models').Sequelize; -var util = require('util'); -var async = require('async'); -var veUtil = require('../../utils/voice_extension'); -var Util = require('../../config/util'); - -var Applications = veUtil.Applications; - -// Get list of extensions -exports.index = function(req, res, next) { - return VoiceExtension - .scope('routes', 'application') - .findAndCountAll(_.merge(Util.getQuery(req.query), { - distinct: true - })) - .then(function(result) { - res.status(200).send(result); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -// Get a single voice_extension or application -exports.show = function(req, res) { - return VoiceExtension - .scope('application') - .findOne({ - where: { - id: req.params.id, - VoiceExtensionId: null - } - }) - .then(function(voice_extension) { - if (!voice_extension) { - return res.sendStatus(404); - } - return res.send(voice_extension); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.create = function(req, res) { - var _route; - return sequelize.transaction(function(t) { - return VoiceExtension - .create(req.body, { - transaction: t - }) - .then(function(route) { - _route = route; - if (req.body.Applications && Array.isArray(req.body.Applications) && req.body.Applications.length) { - return route; - } - }) - .then(veUtil.createApps(req.body.Applications, t, res)); - }) - .then(function() { - return res.status(201).send(_route); - }) - .catch(sequelize.UniqueConstraintError, function(err) { - err.message = 'Extension/context combination already exist'; - err.translatedMessage = 'MESSAGE_EXIST_ROUTE' - return handleError(res, err); - }) - .catch(sequelize.ValidationError, function(err) { - err.message = 'Extension/context combination already exist'; - err.translatedMessage = 'MESSAGE_EXIST_ROUTE' - return handleError(res, err); - }) - .catch(function(err) { - console.log('err', err); - return handleError(res, err); - }); -} - - - -// Updates an existing voice_extension in the DB. -exports.update = function(req, res) { - return sequelize.transaction(function(t) { - return veUtil.routeUpdate(req, t); - }) - .then(function() { - return res.sendStatus(200); - }) - .catch(sequelize.UniqueConstraintError, function(err) { - err.message = 'Extension/context combination already exist'; - err.translatedMessage = 'MESSAGE_EXIST_ROUTE' - console.log(err); - return handleError(res, err); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -} - -// Deletes a voice_extension from the DB. -exports.destroy = function(req, res, next) { - return sequelize.transaction(function(t) { - return VoiceExtension - .findById(req.params.id) - .then(function(voice_extension) { - if (!voice_extension) { - return res.sendStatus(404); - } - return voice_extension.destroy(); - }); - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -// Deletes from the DB. -exports.bulkDestroy = function(req, res) { - return VoiceExtension - .destroy({ - where: { - id: req.query.ids - }, - individualHooks: true - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0x45e1=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x56\x6F\x69\x63\x65\x45\x78\x74\x65\x6E\x73\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x49\x6E\x74\x65\x72\x76\x61\x6C","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x53\x65\x71\x75\x65\x6C\x69\x7A\x65","\x75\x74\x69\x6C","\x61\x73\x79\x6E\x63","\x2E\x2E\x2F\x2E\x2E\x2F\x75\x74\x69\x6C\x73\x2F\x76\x6F\x69\x63\x65\x5F\x65\x78\x74\x65\x6E\x73\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x69\x6E\x64\x65\x78","\x6C\x6F\x67","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x6D\x65\x72\x67\x65","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x72\x6F\x75\x74\x65\x73","\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x73\x63\x6F\x70\x65","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x4F\x6E\x65","\x63\x72\x65\x61\x74\x65","\x65\x72\x72","\x6D\x65\x73\x73\x61\x67\x65","\x45\x78\x74\x65\x6E\x73\x69\x6F\x6E\x2F\x63\x6F\x6E\x74\x65\x78\x74\x20\x63\x6F\x6D\x62\x69\x6E\x61\x74\x69\x6F\x6E\x20\x61\x6C\x72\x65\x61\x64\x79\x20\x65\x78\x69\x73\x74","\x74\x72\x61\x6E\x73\x6C\x61\x74\x65\x64\x4D\x65\x73\x73\x61\x67\x65","\x4D\x45\x53\x53\x41\x47\x45\x5F\x45\x58\x49\x53\x54\x5F\x52\x4F\x55\x54\x45","\x62\x6F\x64\x79","\x63\x72\x65\x61\x74\x65\x41\x70\x70\x73","\x69\x73\x41\x72\x72\x61\x79","\x6C\x65\x6E\x67\x74\x68","\x74\x72\x61\x6E\x73\x61\x63\x74\x69\x6F\x6E","\x75\x70\x64\x61\x74\x65","\x72\x6F\x75\x74\x65\x55\x70\x64\x61\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x66\x69\x6E\x64\x42\x79\x49\x64","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73"];_0x45e1[0];var _=require(_0x45e1[1]);var VoiceExtension=require(_0x45e1[3])[_0x45e1[2]];var Interval=require(_0x45e1[3])[_0x45e1[4]];var sequelize=require(_0x45e1[3])[_0x45e1[5]];var Sequelize=require(_0x45e1[3])[_0x45e1[6]];var util=require(_0x45e1[7]);var async=require(_0x45e1[8]);var veUtil=require(_0x45e1[9]);var Util=require(_0x45e1[10]);var Applications=veUtil[_0x45e1[11]];exports[_0x45e1[12]]= function(_0x9d55xb,_0x9d55xc,_0x9d55xd){return VoiceExtension[_0x45e1[24]](_0x45e1[22],_0x45e1[23])[_0x45e1[21]](_[_0x45e1[20]](Util[_0x45e1[19]](_0x9d55xb[_0x45e1[18]]),{distinct:true}))[_0x45e1[17]](function(_0x9d55xf){_0x9d55xc[_0x45e1[16]](200)[_0x45e1[15]](_0x9d55xf)})[_0x45e1[14]](function(_0x9d55xe){console[_0x45e1[13]](_0x9d55xe);return handleError(_0x9d55xc,_0x9d55xe)})};exports[_0x45e1[25]]= function(_0x9d55xb,_0x9d55xc){return VoiceExtension[_0x45e1[24]](_0x45e1[23])[_0x45e1[29]]({where:{id:_0x9d55xb[_0x45e1[28]][_0x45e1[27]],VoiceExtensionId:null}})[_0x45e1[17]](function(_0x9d55x10){if(!_0x9d55x10){return _0x9d55xc[_0x45e1[26]](404)};return _0x9d55xc[_0x45e1[15]](_0x9d55x10)})[_0x45e1[14]](function(_0x9d55xe){return handleError(_0x9d55xc,_0x9d55xe)})};exports[_0x45e1[30]]= function(_0x9d55xb,_0x9d55xc){var _0x9d55x11;return sequelize[_0x45e1[40]](function(_0x9d55x12){return VoiceExtension[_0x45e1[30]](_0x9d55xb[_0x45e1[36]],{transaction:_0x9d55x12})[_0x45e1[17]](function(_0x9d55x13){_0x9d55x11= _0x9d55x13;if(_0x9d55xb[_0x45e1[36]][_0x45e1[11]]&& Array[_0x45e1[38]](_0x9d55xb[_0x45e1[36]].Applications)&& _0x9d55xb[_0x45e1[36]][_0x45e1[11]][_0x45e1[39]]){return _0x9d55x13}})[_0x45e1[17]](veUtil[_0x45e1[37]](_0x9d55xb[_0x45e1[36]].Applications,_0x9d55x12,_0x9d55xc))})[_0x45e1[17]](function(){return _0x9d55xc[_0x45e1[16]](201)[_0x45e1[15]](_0x9d55x11)})[_0x45e1[14]](sequelize.UniqueConstraintError,function(_0x9d55xe){_0x9d55xe[_0x45e1[32]]= _0x45e1[33];_0x9d55xe[_0x45e1[34]]= _0x45e1[35];return handleError(_0x9d55xc,_0x9d55xe)})[_0x45e1[14]](sequelize.ValidationError,function(_0x9d55xe){_0x9d55xe[_0x45e1[32]]= _0x45e1[33];_0x9d55xe[_0x45e1[34]]= _0x45e1[35];return handleError(_0x9d55xc,_0x9d55xe)})[_0x45e1[14]](function(_0x9d55xe){console[_0x45e1[13]](_0x45e1[31],_0x9d55xe);return handleError(_0x9d55xc,_0x9d55xe)})};exports[_0x45e1[41]]= function(_0x9d55xb,_0x9d55xc){return sequelize[_0x45e1[40]](function(_0x9d55x12){return veUtil[_0x45e1[42]](_0x9d55xb,_0x9d55x12)})[_0x45e1[17]](function(){return _0x9d55xc[_0x45e1[26]](200)})[_0x45e1[14]](sequelize.UniqueConstraintError,function(_0x9d55xe){_0x9d55xe[_0x45e1[32]]= _0x45e1[33];_0x9d55xe[_0x45e1[34]]= _0x45e1[35];console[_0x45e1[13]](_0x9d55xe);return handleError(_0x9d55xc,_0x9d55xe)})[_0x45e1[14]](function(_0x9d55xe){console[_0x45e1[13]](_0x9d55xe);return handleError(_0x9d55xc,_0x9d55xe)})};exports[_0x45e1[43]]= function(_0x9d55xb,_0x9d55xc,_0x9d55xd){return sequelize[_0x45e1[40]](function(_0x9d55x12){return VoiceExtension[_0x45e1[44]](_0x9d55xb[_0x45e1[28]][_0x45e1[27]])[_0x45e1[17]](function(_0x9d55x10){if(!_0x9d55x10){return _0x9d55xc[_0x45e1[26]](404)};return _0x9d55x10[_0x45e1[43]]()})})[_0x45e1[17]](function(){return _0x9d55xc[_0x45e1[26]](204)})[_0x45e1[14]](function(_0x9d55xe){console[_0x45e1[13]](_0x9d55xe);return handleError(_0x9d55xc,_0x9d55xe)})};exports[_0x45e1[45]]= function(_0x9d55xb,_0x9d55xc){return VoiceExtension[_0x45e1[43]]({where:{id:_0x9d55xb[_0x45e1[18]][_0x45e1[46]]},individualHooks:true})[_0x45e1[17]](function(){return _0x9d55xc[_0x45e1[26]](204)})[_0x45e1[14]](function(_0x9d55xe){return handleError(_0x9d55xc,_0x9d55xe)})};function handleError(_0x9d55xc,_0x9d55xe){return _0x9d55xc[_0x45e1[16]](500)[_0x45e1[15]](_0x9d55xe)} \ No newline at end of file diff --git a/server/api/voice_extension/voice_extension.events.js b/server/api/voice_extension/voice_extension.events.js index 2facad8..e311baa 100644 --- a/server/api/voice_extension/voice_extension.events.js +++ b/server/api/voice_extension/voice_extension.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const VoiceExtension = require('../../models').VoiceExtension; - -var VoiceExtensionEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -VoiceExtensionEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'update', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - VoiceExtension.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - VoiceExtensionEvents.emit(event + ':' + doc._id, doc); - VoiceExtensionEvents.emit(event, doc); - done(null); - } -} - -module.exports = VoiceExtensionEvents; +var _0x82b7=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x56\x6F\x69\x63\x65\x45\x78\x74\x65\x6E\x73\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x75\x70\x64\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x82b7[0];const EventEmitter=require(_0x82b7[1]);const VoiceExtension=require(_0x82b7[3])[_0x82b7[2]];var VoiceExtensionEvents= new EventEmitter();VoiceExtensionEvents[_0x82b7[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x82b7[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x82b7[6],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x82b7[7]};for(var e in events){var event=events[e];VoiceExtension[_0x82b7[8]](e,emitEvent(event))};function emitEvent(event){return function(_0xe007x8,_0xe007x9,_0xe007xa){VoiceExtensionEvents[_0x82b7[11]](event+ _0x82b7[9]+ _0xe007x8[_0x82b7[10]],_0xe007x8);VoiceExtensionEvents[_0x82b7[11]](event,_0xe007x8);_0xe007xa(null)}}module[_0x82b7[12]]= VoiceExtensionEvents \ No newline at end of file diff --git a/server/api/voice_extension/voice_extension.socket.js b/server/api/voice_extension/voice_extension.socket.js index 7f2dca6..b8ff1f3 100644 --- a/server/api/voice_extension/voice_extension.socket.js +++ b/server/api/voice_extension/voice_extension.socket.js @@ -1,32 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const VoiceExtensionEvents = require('./voice_extension.events'); - -// Model events to emit -var events = ['save', 'update', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('voice_extension:' + event, socket); - - VoiceExtensionEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - VoiceExtensionEvents.removeListener(event, listener); - }; -} +var _0xc842=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x76\x6F\x69\x63\x65\x5F\x65\x78\x74\x65\x6E\x73\x69\x6F\x6E\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x75\x70\x64\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x76\x6F\x69\x63\x65\x5F\x65\x78\x74\x65\x6E\x73\x69\x6F\x6E\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xc842[0];const VoiceExtensionEvents=require(_0xc842[1]);var events=[_0xc842[2],_0xc842[3],_0xc842[4]];exports[_0xc842[5]]= function(_0x8ff9x3){for(var _0x8ff9x4=0,_0x8ff9x5=events[_0xc842[6]];_0x8ff9x4< _0x8ff9x5;_0x8ff9x4++){var _0x8ff9x6=events[_0x8ff9x4];var _0x8ff9x7=createListener(_0xc842[7]+ _0x8ff9x6,_0x8ff9x3);VoiceExtensionEvents[_0xc842[8]](_0x8ff9x6,_0x8ff9x7);_0x8ff9x3[_0xc842[8]](_0xc842[9],removeListener(_0x8ff9x6,_0x8ff9x7))}};function createListener(_0x8ff9x6,_0x8ff9x3){return function(_0x8ff9x9){_0x8ff9x3[_0xc842[10]](_0x8ff9x6,_0x8ff9x9)}}function removeListener(_0x8ff9x6,_0x8ff9x7){return function(){VoiceExtensionEvents[_0xc842[11]](_0x8ff9x6,_0x8ff9x7)}} \ No newline at end of file diff --git a/server/api/voice_musiconhold/index.js b/server/api/voice_musiconhold/index.js index 8bcbd0e..1185ab8 100644 --- a/server/api/voice_musiconhold/index.js +++ b/server/api/voice_musiconhold/index.js @@ -1,21 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./voice_musiconhold.controller'); -var auth = require('../../auth/auth.service'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), auth.hasModule([7], ['admin']), controller.index); -router.get('/stream', auth.isAuthenticated(), auth.hasModule([7], ['admin']), controller.stream); -router.get('/:id', auth.isAuthenticated(), auth.hasModule([7], ['admin']), controller.show); -router.get('/:id/files', auth.isAuthenticated(), auth.hasModule([7], ['admin']), controller.showAudioFiles); -router.post('/', auth.isAuthenticated(), auth.hasModule([7], ['admin']), controller.create); -router.post('/validate', auth.isAuthenticated(), auth.hasModule([7], ['admin']), controller.mohValidation); -router.post('/:id/files', auth.isAuthenticated(), auth.hasModule([7], ['admin']), controller.addFiles); -router.put('/:id', auth.isAuthenticated(), auth.hasModule([7], ['admin']), controller.update); -router.delete('/', auth.isAuthenticated(), auth.hasModule([7], ['admin']), controller.bulkDestroy); -router.delete('/:id', auth.isAuthenticated(), auth.hasModule([7], ['admin']), controller.destroy); -router.delete('/:id/files', auth.isAuthenticated(), auth.hasModule([7], ['admin']), controller.deleteAudioFiles); - -module.exports = router; +var _0xfc3a=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x76\x6F\x69\x63\x65\x5F\x6D\x75\x73\x69\x63\x6F\x6E\x68\x6F\x6C\x64\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x73\x74\x72\x65\x61\x6D","\x73\x74\x72\x65\x61\x6D","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x2F\x3A\x69\x64\x2F\x66\x69\x6C\x65\x73","\x73\x68\x6F\x77\x41\x75\x64\x69\x6F\x46\x69\x6C\x65\x73","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x2F\x76\x61\x6C\x69\x64\x61\x74\x65","\x6D\x6F\x68\x56\x61\x6C\x69\x64\x61\x74\x69\x6F\x6E","\x61\x64\x64\x46\x69\x6C\x65\x73","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65\x41\x75\x64\x69\x6F\x46\x69\x6C\x65\x73","\x65\x78\x70\x6F\x72\x74\x73"];_0xfc3a[0];var express=require(_0xfc3a[1]);var controller=require(_0xfc3a[2]);var auth=require(_0xfc3a[3]);var router=express.Router();router[_0xfc3a[9]](_0xfc3a[4],auth[_0xfc3a[5]](),auth[_0xfc3a[7]]([7],[_0xfc3a[6]]),controller[_0xfc3a[8]]);router[_0xfc3a[9]](_0xfc3a[10],auth[_0xfc3a[5]](),auth[_0xfc3a[7]]([7],[_0xfc3a[6]]),controller[_0xfc3a[11]]);router[_0xfc3a[9]](_0xfc3a[12],auth[_0xfc3a[5]](),auth[_0xfc3a[7]]([7],[_0xfc3a[6]]),controller[_0xfc3a[13]]);router[_0xfc3a[9]](_0xfc3a[14],auth[_0xfc3a[5]](),auth[_0xfc3a[7]]([7],[_0xfc3a[6]]),controller[_0xfc3a[15]]);router[_0xfc3a[17]](_0xfc3a[4],auth[_0xfc3a[5]](),auth[_0xfc3a[7]]([7],[_0xfc3a[6]]),controller[_0xfc3a[16]]);router[_0xfc3a[17]](_0xfc3a[18],auth[_0xfc3a[5]](),auth[_0xfc3a[7]]([7],[_0xfc3a[6]]),controller[_0xfc3a[19]]);router[_0xfc3a[17]](_0xfc3a[14],auth[_0xfc3a[5]](),auth[_0xfc3a[7]]([7],[_0xfc3a[6]]),controller[_0xfc3a[20]]);router[_0xfc3a[22]](_0xfc3a[12],auth[_0xfc3a[5]](),auth[_0xfc3a[7]]([7],[_0xfc3a[6]]),controller[_0xfc3a[21]]);router[_0xfc3a[24]](_0xfc3a[4],auth[_0xfc3a[5]](),auth[_0xfc3a[7]]([7],[_0xfc3a[6]]),controller[_0xfc3a[23]]);router[_0xfc3a[24]](_0xfc3a[12],auth[_0xfc3a[5]](),auth[_0xfc3a[7]]([7],[_0xfc3a[6]]),controller[_0xfc3a[25]]);router[_0xfc3a[24]](_0xfc3a[14],auth[_0xfc3a[5]](),auth[_0xfc3a[7]]([7],[_0xfc3a[6]]),controller[_0xfc3a[26]]);module[_0xfc3a[27]]= router \ No newline at end of file diff --git a/server/api/voice_musiconhold/voice_musiconhold.controller.js b/server/api/voice_musiconhold/voice_musiconhold.controller.js index 83c6288..5769284 100644 --- a/server/api/voice_musiconhold/voice_musiconhold.controller.js +++ b/server/api/voice_musiconhold/voice_musiconhold.controller.js @@ -1,290 +1 @@ -'use strict'; - -var fs = require('fs'); -var _ = require('lodash'); -var path = require('path'); -var util = require('util'); -var fse = require('fs-extra'); -var remove = require('remove'); -var base64 = require('file-base64'); - -var config = require('../../config/environment'); -var Util = require('../../config/util'); - -var Sound = require('../../models').Sound; -var Setting = require('../../models').Setting; -var sequelize = require('../../models').sequelize; -var VoiceMusicOnHold = require('../../models').VoiceMusicOnHold; - - -// Get list of voice_musiconholds -exports.index = function(req, res) { - return VoiceMusicOnHold - .findAndCountAll(Util.getQuery(req.query)) - .then(function(result) { - res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get a single voiceMusiconhold -exports.show = function(req, res) { - return VoiceMusicOnHold - .findById(req.params.id) - .then(function(voiceMusiconhold) { - if (!voiceMusiconhold) { - return res.sendStatus(404); - } - return res.send(voiceMusiconhold); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Add files to moh class -exports.addFiles = function(req, res) { - var _voiceMusiconhold, _soundFiles; - return VoiceMusicOnHold - .findById(req.params.id) - .then(function(voiceMusiconhold) { - if (!voiceMusiconhold) { - return res.sendStatus(404); - } - _voiceMusiconhold = voiceMusiconhold; - - return Sound - .findAll({ - where: { - id: req.body.sounds - } - }); - }) - .then(function(soundFiles) { - _soundFiles = soundFiles; - - return Setting - .findById(1); - }) - .then(function(settings) { - - var dest; - _soundFiles.forEach(function(elem) { - dest = path.join(_voiceMusiconhold.directory, elem.display_name + '.wav'); - fse.copySync(path.join(settings.soundPath || '/var/opt/motion/server/files/sounds/converted', elem.save_name + '.wav'), dest); - }); - fs.chmodSync(dest, parseInt('0777', 8)); - res.sendStatus(200); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.showAudioFiles = function(req, res) { - var fileObject = {}; - VoiceMusicOnHold - .findById(req.params.id) - .then(function(voiceMusiconhold) { - if (!voiceMusiconhold) { - return res.sendStatus(404); - } - fileObject.path = voiceMusiconhold.directory; - fs.readdir(voiceMusiconhold.directory, function(err, files) { - if (!err) { - fileObject.files = files; - return res.send(fileObject); - } else { - throw err; - } - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.deleteAudioFiles = function(req, res) { - return VoiceMusicOnHold - .findById(req.params.id) - .then(function(voiceMusiconhold) { - if (!voiceMusiconhold) { - return res.sendStatus(404); - } - var deletePath = voiceMusiconhold.directory + '/' + req.query.filename; - fs.unlink(deletePath, function(err) { - if (err) { - return handleError(res, err); - } else { - return res.sendStatus(204); - } - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Validate the existence of a route -exports.mohValidation = function(req, res) { - console.log(req.body); - return VoiceMusicOnHold - .findAll({ - where: { - name: req.body.name, - } - }) - .then(function(voice_mohs) { - if (!voice_mohs) { - return res.sendStatus(404); - } - return res.send(voice_mohs); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Creates a new voiceMusiconhold in the DB. -exports.create = function(req, res) { - return sequelize.transaction().then(function(t) { - req.body.directory = path.join(config.root, 'server/files/moh', req.body.name); - return VoiceMusicOnHold - .create(req.body, { - transaction: t - }) - .then(function(voiceMusiconhold) { - fs.mkdir(voiceMusiconhold.directory, parseInt('0777', 8), function(err) { - if (err) { - console.log('file error'); - t.rollback(); - return res.status(500).send({ - message: 'MESSAGE_FILE_CREATION_ERROR' - }); - } - t.commit(); - console.log('file created'); - return res.status(201).send(voiceMusiconhold); - }); - }) - .catch(function(err) { - t.rollback(); - }); - }) -}; - -// Updates an existing voiceMusiconhold in the DB. -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - - return VoiceMusicOnHold - .findById(req.params.id) - .then(function(voiceMusiconhold) { - if (!voiceMusiconhold) { - return res.sendStatus(404); - } - var updated = _.merge(voiceMusiconhold, req.body); - - return updated - .save(); - }) - .then(function(voiceMusiconhold) { - return res.status(200).send(voiceMusiconhold); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes a voiceMusiconhold from the DB. -exports.destroy = function(req, res) { - var _voicemoh; - return sequelize.transaction(function(t) { - return VoiceMusicOnHold - .findById(req.params.id) - .then(function(voiceMusiconhold) { - if (!voiceMusiconhold) { - return res.sendStatus(404); - } - _voicemoh = voiceMusiconhold; - return voiceMusiconhold.destroy({ - transaction: t - }); - }) - .then(function() { - remove(_voicemoh.directory, function(err) { - if (err) { - console.log(err); - } - return res.sendStatus(204); - }); - }) - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes multiple voice_musiconholds from the DB. -exports.bulkDestroy = function(req, res) { - var _voicemohs; - return sequelize.transaction(function(t) { - return VoiceMusicOnHold - .findAll({ - where: { - id: req.query.ids - } - }) - .then(function(voice_musiconholds) { - if (!voice_musiconholds) { - return res.sendStatus(404); - } - _voicemohs = voice_musiconholds; - var bulkDest = []; - voice_musiconholds.forEach(function(element) { - bulkDest.push(element.destroy({ - transaction: t - })); - }); - return bulkDest; - }) - .all() - .then(function() { - _voicemohs.forEach(function(element) { - remove(element.directory, function(err) { - if (err) { - console.log(err); - throw err - } - }); - }) - }); - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// stream a moh file -exports.stream = function(req, res) { - var filepath = decodeURI(req.query.path); - base64.encode(filepath, function(err, base64String) { - if (err) { - return handleError(res, err); - } else { - return res.status(200).send(base64String); - } - }); -}; - -function handleError(res, err) { - console.log(err); - return res.status(500).send(err); -} +var _0xef40=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x66\x73","\x6C\x6F\x64\x61\x73\x68","\x70\x61\x74\x68","\x75\x74\x69\x6C","\x66\x73\x2D\x65\x78\x74\x72\x61","\x72\x65\x6D\x6F\x76\x65","\x66\x69\x6C\x65\x2D\x62\x61\x73\x65\x36\x34","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x53\x6F\x75\x6E\x64","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x53\x65\x74\x74\x69\x6E\x67","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x56\x6F\x69\x63\x65\x4D\x75\x73\x69\x63\x4F\x6E\x48\x6F\x6C\x64","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x61\x64\x64\x46\x69\x6C\x65\x73","\x64\x69\x72\x65\x63\x74\x6F\x72\x79","\x64\x69\x73\x70\x6C\x61\x79\x5F\x6E\x61\x6D\x65","\x2E\x77\x61\x76","\x6A\x6F\x69\x6E","\x73\x6F\x75\x6E\x64\x50\x61\x74\x68","\x2F\x76\x61\x72\x2F\x6F\x70\x74\x2F\x6D\x6F\x74\x69\x6F\x6E\x2F\x73\x65\x72\x76\x65\x72\x2F\x66\x69\x6C\x65\x73\x2F\x73\x6F\x75\x6E\x64\x73\x2F\x63\x6F\x6E\x76\x65\x72\x74\x65\x64","\x73\x61\x76\x65\x5F\x6E\x61\x6D\x65","\x63\x6F\x70\x79\x53\x79\x6E\x63","\x66\x6F\x72\x45\x61\x63\x68","\x30\x37\x37\x37","\x63\x68\x6D\x6F\x64\x53\x79\x6E\x63","\x73\x6F\x75\x6E\x64\x73","\x62\x6F\x64\x79","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x68\x6F\x77\x41\x75\x64\x69\x6F\x46\x69\x6C\x65\x73","\x66\x69\x6C\x65\x73","\x72\x65\x61\x64\x64\x69\x72","\x64\x65\x6C\x65\x74\x65\x41\x75\x64\x69\x6F\x46\x69\x6C\x65\x73","\x2F","\x66\x69\x6C\x65\x6E\x61\x6D\x65","\x75\x6E\x6C\x69\x6E\x6B","\x6D\x6F\x68\x56\x61\x6C\x69\x64\x61\x74\x69\x6F\x6E","\x6C\x6F\x67","\x6E\x61\x6D\x65","\x63\x72\x65\x61\x74\x65","\x72\x6F\x6F\x74","\x73\x65\x72\x76\x65\x72\x2F\x66\x69\x6C\x65\x73\x2F\x6D\x6F\x68","\x72\x6F\x6C\x6C\x62\x61\x63\x6B","\x66\x69\x6C\x65\x20\x65\x72\x72\x6F\x72","\x4D\x45\x53\x53\x41\x47\x45\x5F\x46\x49\x4C\x45\x5F\x43\x52\x45\x41\x54\x49\x4F\x4E\x5F\x45\x52\x52\x4F\x52","\x63\x6F\x6D\x6D\x69\x74","\x66\x69\x6C\x65\x20\x63\x72\x65\x61\x74\x65\x64","\x6D\x6B\x64\x69\x72","\x74\x72\x61\x6E\x73\x61\x63\x74\x69\x6F\x6E","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x64\x65\x73\x74\x72\x6F\x79","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x61\x6C\x6C","\x70\x75\x73\x68","\x69\x64\x73","\x73\x74\x72\x65\x61\x6D","\x65\x6E\x63\x6F\x64\x65"];_0xef40[0];var fs=require(_0xef40[1]);var _=require(_0xef40[2]);var path=require(_0xef40[3]);var util=require(_0xef40[4]);var fse=require(_0xef40[5]);var remove=require(_0xef40[6]);var base64=require(_0xef40[7]);var config=require(_0xef40[8]);var Util=require(_0xef40[9]);var Sound=require(_0xef40[11])[_0xef40[10]];var Setting=require(_0xef40[11])[_0xef40[12]];var sequelize=require(_0xef40[11])[_0xef40[13]];var VoiceMusicOnHold=require(_0xef40[11])[_0xef40[14]];exports[_0xef40[15]]= function(_0xeb90xe,_0xeb90xf){return VoiceMusicOnHold[_0xef40[22]](Util[_0xef40[21]](_0xeb90xe[_0xef40[20]]))[_0xef40[19]](function(_0xeb90x11){_0xeb90xf[_0xef40[18]](200)[_0xef40[17]](_0xeb90x11)})[_0xef40[16]](function(_0xeb90x10){return handleError(_0xeb90xf,_0xeb90x10)})};exports[_0xef40[23]]= function(_0xeb90xe,_0xeb90xf){return VoiceMusicOnHold[_0xef40[27]](_0xeb90xe[_0xef40[26]][_0xef40[25]])[_0xef40[19]](function(_0xeb90x12){if(!_0xeb90x12){return _0xeb90xf[_0xef40[24]](404)};return _0xeb90xf[_0xef40[17]](_0xeb90x12)})[_0xef40[16]](function(_0xeb90x10){return handleError(_0xeb90xf,_0xeb90x10)})};exports[_0xef40[28]]= function(_0xeb90xe,_0xeb90xf){var _0xeb90x13,_0xeb90x14;return VoiceMusicOnHold[_0xef40[27]](_0xeb90xe[_0xef40[26]][_0xef40[25]])[_0xef40[19]](function(_0xeb90x12){if(!_0xeb90x12){return _0xeb90xf[_0xef40[24]](404)};_0xeb90x13= _0xeb90x12;return Sound[_0xef40[42]]({where:{id:_0xeb90xe[_0xef40[41]][_0xef40[40]]}})})[_0xef40[19]](function(_0xeb90x18){_0xeb90x14= _0xeb90x18;return Setting[_0xef40[27]](1)})[_0xef40[19]](function(_0xeb90x15){var _0xeb90x16;_0xeb90x14[_0xef40[37]](function(_0xeb90x17){_0xeb90x16= path[_0xef40[32]](_0xeb90x13[_0xef40[29]],_0xeb90x17[_0xef40[30]]+ _0xef40[31]);fse[_0xef40[36]](path[_0xef40[32]](_0xeb90x15[_0xef40[33]]|| _0xef40[34],_0xeb90x17[_0xef40[35]]+ _0xef40[31]),_0xeb90x16)});fs[_0xef40[39]](_0xeb90x16,parseInt(_0xef40[38],8));_0xeb90xf[_0xef40[24]](200)})[_0xef40[16]](function(_0xeb90x10){return handleError(_0xeb90xf,_0xeb90x10)})};exports[_0xef40[43]]= function(_0xeb90xe,_0xeb90xf){var _0xeb90x19={};VoiceMusicOnHold[_0xef40[27]](_0xeb90xe[_0xef40[26]][_0xef40[25]])[_0xef40[19]](function(_0xeb90x12){if(!_0xeb90x12){return _0xeb90xf[_0xef40[24]](404)};_0xeb90x19[_0xef40[3]]= _0xeb90x12[_0xef40[29]];fs[_0xef40[45]](_0xeb90x12[_0xef40[29]],function(_0xeb90x10,_0xeb90x1a){if(!_0xeb90x10){_0xeb90x19[_0xef40[44]]= _0xeb90x1a;return _0xeb90xf[_0xef40[17]](_0xeb90x19)}else {throw _0xeb90x10}})})[_0xef40[16]](function(_0xeb90x10){return handleError(_0xeb90xf,_0xeb90x10)})};exports[_0xef40[46]]= function(_0xeb90xe,_0xeb90xf){return VoiceMusicOnHold[_0xef40[27]](_0xeb90xe[_0xef40[26]][_0xef40[25]])[_0xef40[19]](function(_0xeb90x12){if(!_0xeb90x12){return _0xeb90xf[_0xef40[24]](404)};var _0xeb90x1b=_0xeb90x12[_0xef40[29]]+ _0xef40[47]+ _0xeb90xe[_0xef40[20]][_0xef40[48]];fs[_0xef40[49]](_0xeb90x1b,function(_0xeb90x10){if(_0xeb90x10){return handleError(_0xeb90xf,_0xeb90x10)}else {return _0xeb90xf[_0xef40[24]](204)}})})[_0xef40[16]](function(_0xeb90x10){return handleError(_0xeb90xf,_0xeb90x10)})};exports[_0xef40[50]]= function(_0xeb90xe,_0xeb90xf){console[_0xef40[51]](_0xeb90xe[_0xef40[41]]);return VoiceMusicOnHold[_0xef40[42]]({where:{name:_0xeb90xe[_0xef40[41]][_0xef40[52]]}})[_0xef40[19]](function(_0xeb90x1c){if(!_0xeb90x1c){return _0xeb90xf[_0xef40[24]](404)};return _0xeb90xf[_0xef40[17]](_0xeb90x1c)})[_0xef40[16]](function(_0xeb90x10){return handleError(_0xeb90xf,_0xeb90x10)})};exports[_0xef40[53]]= function(_0xeb90xe,_0xeb90xf){return sequelize[_0xef40[62]]()[_0xef40[19]](function(_0xeb90x1d){_0xeb90xe[_0xef40[41]][_0xef40[29]]= path[_0xef40[32]](config[_0xef40[54]],_0xef40[55],_0xeb90xe[_0xef40[41]][_0xef40[52]]);return VoiceMusicOnHold[_0xef40[53]](_0xeb90xe[_0xef40[41]],{transaction:_0xeb90x1d})[_0xef40[19]](function(_0xeb90x12){fs[_0xef40[61]](_0xeb90x12[_0xef40[29]],parseInt(_0xef40[38],8),function(_0xeb90x10){if(_0xeb90x10){console[_0xef40[51]](_0xef40[57]);_0xeb90x1d[_0xef40[56]]();return _0xeb90xf[_0xef40[18]](500)[_0xef40[17]]({message:_0xef40[58]})};_0xeb90x1d[_0xef40[59]]();console[_0xef40[51]](_0xef40[60]);return _0xeb90xf[_0xef40[18]](201)[_0xef40[17]](_0xeb90x12)})})[_0xef40[16]](function(_0xeb90x10){_0xeb90x1d[_0xef40[56]]()})})};exports[_0xef40[63]]= function(_0xeb90xe,_0xeb90xf){if(_0xeb90xe[_0xef40[41]][_0xef40[25]]){delete _0xeb90xe[_0xef40[41]][_0xef40[25]]};return VoiceMusicOnHold[_0xef40[27]](_0xeb90xe[_0xef40[26]][_0xef40[25]])[_0xef40[19]](function(_0xeb90x12){if(!_0xeb90x12){return _0xeb90xf[_0xef40[24]](404)};var _0xeb90x1e=_[_0xef40[64]](_0xeb90x12,_0xeb90xe[_0xef40[41]]);return _0xeb90x1e[_0xef40[65]]()})[_0xef40[19]](function(_0xeb90x12){return _0xeb90xf[_0xef40[18]](200)[_0xef40[17]](_0xeb90x12)})[_0xef40[16]](function(_0xeb90x10){return handleError(_0xeb90xf,_0xeb90x10)})};exports[_0xef40[66]]= function(_0xeb90xe,_0xeb90xf){var _0xeb90x1f;return sequelize[_0xef40[62]](function(_0xeb90x1d){return VoiceMusicOnHold[_0xef40[27]](_0xeb90xe[_0xef40[26]][_0xef40[25]])[_0xef40[19]](function(_0xeb90x12){if(!_0xeb90x12){return _0xeb90xf[_0xef40[24]](404)};_0xeb90x1f= _0xeb90x12;return _0xeb90x12[_0xef40[66]]({transaction:_0xeb90x1d})})[_0xef40[19]](function(){remove(_0xeb90x1f[_0xef40[29]],function(_0xeb90x10){if(_0xeb90x10){console[_0xef40[51]](_0xeb90x10)};return _0xeb90xf[_0xef40[24]](204)})})})[_0xef40[16]](function(_0xeb90x10){return handleError(_0xeb90xf,_0xeb90x10)})};exports[_0xef40[67]]= function(_0xeb90xe,_0xeb90xf){var _0xeb90x20;return sequelize[_0xef40[62]](function(_0xeb90x1d){return VoiceMusicOnHold[_0xef40[42]]({where:{id:_0xeb90xe[_0xef40[20]][_0xef40[70]]}})[_0xef40[19]](function(_0xeb90x22){if(!_0xeb90x22){return _0xeb90xf[_0xef40[24]](404)};_0xeb90x20= _0xeb90x22;var _0xeb90x23=[];_0xeb90x22[_0xef40[37]](function(_0xeb90x21){_0xeb90x23[_0xef40[69]](_0xeb90x21[_0xef40[66]]({transaction:_0xeb90x1d}))});return _0xeb90x23})[_0xef40[68]]()[_0xef40[19]](function(){_0xeb90x20[_0xef40[37]](function(_0xeb90x21){remove(_0xeb90x21[_0xef40[29]],function(_0xeb90x10){if(_0xeb90x10){console[_0xef40[51]](_0xeb90x10);throw _0xeb90x10}})})})})[_0xef40[19]](function(){return _0xeb90xf[_0xef40[24]](204)})[_0xef40[16]](function(_0xeb90x10){return handleError(_0xeb90xf,_0xeb90x10)})};exports[_0xef40[71]]= function(_0xeb90xe,_0xeb90xf){var _0xeb90x24=decodeURI(_0xeb90xe[_0xef40[20]][_0xef40[3]]);base64[_0xef40[72]](_0xeb90x24,function(_0xeb90x10,_0xeb90x25){if(_0xeb90x10){return handleError(_0xeb90xf,_0xeb90x10)}else {return _0xeb90xf[_0xef40[18]](200)[_0xef40[17]](_0xeb90x25)}})};function handleError(_0xeb90xf,_0xeb90x10){console[_0xef40[51]](_0xeb90x10);return _0xeb90xf[_0xef40[18]](500)[_0xef40[17]](_0xeb90x10)} \ No newline at end of file diff --git a/server/api/voice_musiconhold/voice_musiconhold.events.js b/server/api/voice_musiconhold/voice_musiconhold.events.js index e3d8587..82f13e4 100644 --- a/server/api/voice_musiconhold/voice_musiconhold.events.js +++ b/server/api/voice_musiconhold/voice_musiconhold.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const VoiceMusicOnHold = require('../../models').VoiceMusicOnHold; - -var VoiceMusicOnHoldEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -VoiceMusicOnHoldEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - VoiceMusicOnHold.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - VoiceMusicOnHoldEvents.emit(event + ':' + doc._id, doc); - VoiceMusicOnHoldEvents.emit(event, doc); - done(null); - } -} - -module.exports = VoiceMusicOnHoldEvents; +var _0x898f=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x56\x6F\x69\x63\x65\x4D\x75\x73\x69\x63\x4F\x6E\x48\x6F\x6C\x64","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x898f[0];const EventEmitter=require(_0x898f[1]);const VoiceMusicOnHold=require(_0x898f[3])[_0x898f[2]];var VoiceMusicOnHoldEvents= new EventEmitter();VoiceMusicOnHoldEvents[_0x898f[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x898f[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x898f[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x898f[6]};for(var e in events){var event=events[e];VoiceMusicOnHold[_0x898f[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xdab6x8,_0xdab6x9,_0xdab6xa){VoiceMusicOnHoldEvents[_0x898f[10]](event+ _0x898f[8]+ _0xdab6x8[_0x898f[9]],_0xdab6x8);VoiceMusicOnHoldEvents[_0x898f[10]](event,_0xdab6x8);_0xdab6xa(null)}}module[_0x898f[11]]= VoiceMusicOnHoldEvents \ No newline at end of file diff --git a/server/api/voice_musiconhold/voice_musiconhold.socket.js b/server/api/voice_musiconhold/voice_musiconhold.socket.js index cbc19a2..06c3b89 100644 --- a/server/api/voice_musiconhold/voice_musiconhold.socket.js +++ b/server/api/voice_musiconhold/voice_musiconhold.socket.js @@ -1,32 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const VoiceMusicOnHoldEvents = require('./voice_musiconhold.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('voice_musiconhold:' + event, socket); - - VoiceMusicOnHoldEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - VoiceMusicOnHoldEvents.removeListener(event, listener); - }; -} +var _0x5d02=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x76\x6F\x69\x63\x65\x5F\x6D\x75\x73\x69\x63\x6F\x6E\x68\x6F\x6C\x64\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x76\x6F\x69\x63\x65\x5F\x6D\x75\x73\x69\x63\x6F\x6E\x68\x6F\x6C\x64\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x5d02[0];const VoiceMusicOnHoldEvents=require(_0x5d02[1]);var events=[_0x5d02[2],_0x5d02[3]];exports[_0x5d02[4]]= function(_0x4577x3){for(var _0x4577x4=0,_0x4577x5=events[_0x5d02[5]];_0x4577x4< _0x4577x5;_0x4577x4++){var _0x4577x6=events[_0x4577x4];var _0x4577x7=createListener(_0x5d02[6]+ _0x4577x6,_0x4577x3);VoiceMusicOnHoldEvents[_0x5d02[7]](_0x4577x6,_0x4577x7);_0x4577x3[_0x5d02[7]](_0x5d02[8],removeListener(_0x4577x6,_0x4577x7))}};function createListener(_0x4577x6,_0x4577x3){return function(_0x4577x9){_0x4577x3[_0x5d02[9]](_0x4577x6,_0x4577x9)}}function removeListener(_0x4577x6,_0x4577x7){return function(){VoiceMusicOnHoldEvents[_0x5d02[10]](_0x4577x6,_0x4577x7)}} \ No newline at end of file diff --git a/server/api/voice_queue/index.js b/server/api/voice_queue/index.js index f1f9c3f..1a61f04 100644 --- a/server/api/voice_queue/index.js +++ b/server/api/voice_queue/index.js @@ -1,20 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./voice_queue.controller'); -var auth = require('../../auth/auth.service'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), auth.hasModule([7, 13], ['admin']), controller.index); -router.get('/:name', auth.isAuthenticated(), auth.hasModule([7], ['admin']), controller.show); -router.get('/realtime/voice', auth.isAuthenticated(), auth.hasModule([7], ['admin']), controller.getRealtimeQueues); -router.get('/:name/agents', auth.isAuthenticated(), auth.hasModule([7], ['admin']), controller.showAgents); -router.post('/', auth.isAuthenticated(), auth.hasModule([7], ['admin']), controller.create); -router.post('/:name/agents', auth.isAuthenticated(), auth.hasModule([7], ['admin']), controller.addAgents); -router.put('/:name', auth.isAuthenticated(), auth.hasModule([7], ['admin']), controller.update); -router.delete('/:name/agents', auth.isAuthenticated(), auth.hasModule([7], ['admin']), controller.removeAgents); -router.delete('/', auth.isAuthenticated(), auth.hasModule([7], ['admin']), controller.bulkDestroy); -router.delete('/:name', auth.isAuthenticated(), auth.hasModule([7], ['admin']), controller.destroy); - -module.exports = router; +var _0x7321=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x76\x6F\x69\x63\x65\x5F\x71\x75\x65\x75\x65\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x6E\x61\x6D\x65","\x73\x68\x6F\x77","\x2F\x72\x65\x61\x6C\x74\x69\x6D\x65\x2F\x76\x6F\x69\x63\x65","\x67\x65\x74\x52\x65\x61\x6C\x74\x69\x6D\x65\x51\x75\x65\x75\x65\x73","\x2F\x3A\x6E\x61\x6D\x65\x2F\x61\x67\x65\x6E\x74\x73","\x73\x68\x6F\x77\x41\x67\x65\x6E\x74\x73","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x61\x64\x64\x41\x67\x65\x6E\x74\x73","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x72\x65\x6D\x6F\x76\x65\x41\x67\x65\x6E\x74\x73","\x64\x65\x6C\x65\x74\x65","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0x7321[0];var express=require(_0x7321[1]);var controller=require(_0x7321[2]);var auth=require(_0x7321[3]);var router=express.Router();router[_0x7321[9]](_0x7321[4],auth[_0x7321[5]](),auth[_0x7321[7]]([7,13],[_0x7321[6]]),controller[_0x7321[8]]);router[_0x7321[9]](_0x7321[10],auth[_0x7321[5]](),auth[_0x7321[7]]([7],[_0x7321[6]]),controller[_0x7321[11]]);router[_0x7321[9]](_0x7321[12],auth[_0x7321[5]](),auth[_0x7321[7]]([7],[_0x7321[6]]),controller[_0x7321[13]]);router[_0x7321[9]](_0x7321[14],auth[_0x7321[5]](),auth[_0x7321[7]]([7],[_0x7321[6]]),controller[_0x7321[15]]);router[_0x7321[17]](_0x7321[4],auth[_0x7321[5]](),auth[_0x7321[7]]([7],[_0x7321[6]]),controller[_0x7321[16]]);router[_0x7321[17]](_0x7321[14],auth[_0x7321[5]](),auth[_0x7321[7]]([7],[_0x7321[6]]),controller[_0x7321[18]]);router[_0x7321[20]](_0x7321[10],auth[_0x7321[5]](),auth[_0x7321[7]]([7],[_0x7321[6]]),controller[_0x7321[19]]);router[_0x7321[22]](_0x7321[14],auth[_0x7321[5]](),auth[_0x7321[7]]([7],[_0x7321[6]]),controller[_0x7321[21]]);router[_0x7321[22]](_0x7321[4],auth[_0x7321[5]](),auth[_0x7321[7]]([7],[_0x7321[6]]),controller[_0x7321[23]]);router[_0x7321[22]](_0x7321[10],auth[_0x7321[5]](),auth[_0x7321[7]]([7],[_0x7321[6]]),controller[_0x7321[24]]);module[_0x7321[25]]= router \ No newline at end of file diff --git a/server/api/voice_queue/voice_queue.controller.js b/server/api/voice_queue/voice_queue.controller.js index 2f70952..5b25291 100644 --- a/server/api/voice_queue/voice_queue.controller.js +++ b/server/api/voice_queue/voice_queue.controller.js @@ -1,304 +1 @@ -'use strict'; - -var _ = require('lodash'); - -var util = require('util'); -var Util = require('../../config/util'); - -var sequelize = require('../../models').sequelize; -var User = require('../../models').User; -var VoiceQueue = require('../../models').VoiceQueue; -var UserHasVoiceQueue = require('../../models').UserHasVoiceQueue; -var VoiceExtension = require('../../models').VoiceExtension; - -// Get list of voiceQueues -exports.index = function(req, res) { - switch (req.user.role) { - case 'user': - return User - .findById(req.user.id, { - attributes: ['id'] - }) - .then(Util.getVoiceQueuesIdByUser(req.query)) - .then(function(result) { - res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); - - default: - return VoiceQueue - .findAndCountAll(Util.getQuery(req.query)) - .then(function(result) { - res.status(200).send(result); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); - } -}; - -exports.getRealtimeQueues = function(req, res, next) { - switch (req.user.role) { - case 'user': - var agents = []; - return User - .findById(req.user.id, { - attributes: ['id'] - }) - .then(Util.getVoiceQueuesIdByUser({}, { - attributes: ['name'], - include: [{ - raw: true, - model: User, - attributes: ['id'] - }] - })) - .then(function(queues) { - var voiceQueues = _.map(queues.rows, 'name'); - queues.rows.forEach(function(queue) { - agents = _.union(agents, _.map(queue.Users, 'id')); - }); - return VoiceQueue - .findAndCountAll(_.merge(Util.getQuery(req.query, { - name: voiceQueues - }), { - include: [{ - model: User, - where: { - id: agents - }, - required: false - }] - })); - }) - .then(function(result) { - return res.status(200).send(result); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); - default: - return VoiceQueue - .findAndCountAll(_.merge(Util.getQuery(req.query), { - include: [{ - model: User, - required: false - }] - })) - .then(function(result) { - return res.status(200).send(result); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); - } -}; - - -// Get a single voiceQueue -exports.show = function(req, res) { - return VoiceQueue - .findById(req.params.name) - .then(function(voiceQueue) { - if (!voiceQueue) { - return res.sendStatus(404); - } - return res.send(voiceQueue); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get a single queue -exports.showAgents = function(req, res) { - return VoiceQueue - .findById(req.params.name) - .then(function(queue) { - if (!queue) { - return res.sendStatus(404); - } - return queue - .getUsers({ - where: { - role: 'agent' - }, - attributes: ['id', 'name', 'fullname', 'email'] - }); - }) - .then(function(agents) { - return res.status(200).send({ - rows: agents, - count: agents.length - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Creates a new voiceQueue in the DB. -exports.create = function(req, res) { - var _voiceQueue; - - return VoiceQueue - .create(req.body) - .then(function(voiceQueue) { - _voiceQueue = voiceQueue; - - if (req.body.agents) { - return _voiceQueue - .addUsers(req.body.agents, { - penalty: req.body.penalty || 0 - }); - } - }) - .then(function() { - return res.status(201).send(_voiceQueue); - }) - .catch(sequelize.UniqueConstraintError, function(err) { - var paths = []; - - err.errors.forEach(function(error) { - switch (error.path) { - case 'PRIMARY': - paths.push('name'); - break; - default: - paths.push(error.path); - } - }); - - paths.push(' must be unique'); - err.message = paths.join(); - err.translatedMessage = 'MESSAGE_EXIST_QUEUE'; - - return res.status(500).send(err); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Updates an existing voiceQueue in the DB. -exports.update = function(req, res) { - if (req.body.name) { - delete req.body.name; - } - - return VoiceQueue - .findById(req.params.name) - .then(function(voiceQueue) { - if (!voiceQueue) { - return res.sendStatus(404); - } - var updated = _.merge(voiceQueue, req.body); - return updated - .save(); - }) - .then(function(voiceQueue) { - return res.status(200).send(voiceQueue); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - - -// Add agents to voice queues -exports.addAgents = function(req, res, next) { - return User - .findAll({ - where: { - id: { - $in: req.body.agents - } - } - }) - .then(function(users) { - var userHasVoiceQueues = _.map(users, function(user) { - return { - queue: req.params.name, - interface: util.format('SIP/%s', user.name), - stateinterface: util.format('SIP/%s', user.name), - membername: user.name, - UserId: user.id, - penalty: req.body.penalty - }; - }); - - return UserHasVoiceQueue - .bulkCreate(userHasVoiceQueues, { - individualHooks: true - }); - }) - .then(function() { - return res.sendStatus(200); - }) - .catch(function(err) { - console.log(err); - return next(err); - }); -}; - -exports.removeAgents = function(req, res, next) { - return UserHasVoiceQueue - .destroy({ - where: { - UserId: req.query.agents, - queue: req.params.name - }, - individualHooks: true - }) - .then(function() { - return res.sendStatus(202); - }) - .catch(function(err) { - return next(err); - }); -}; - -// Deletes a voiceQueue from the DB. -exports.destroy = function(req, res) { - return VoiceQueue - .destroy({ - where: { - name: req.params.name - }, - individualHooks: true - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes multiple voiceQueues from the DB. -exports.bulkDestroy = function(req, res) { - return VoiceQueue - .destroy({ - where: { - name: req.query.ids - }, - individualHooks: true - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0xd408=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x75\x74\x69\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x55\x73\x65\x72","\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65","\x55\x73\x65\x72\x48\x61\x73\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65","\x56\x6F\x69\x63\x65\x45\x78\x74\x65\x6E\x73\x69\x6F\x6E","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x69\x64","\x75\x73\x65\x72","\x66\x69\x6E\x64\x42\x79\x49\x64","\x6C\x6F\x67","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x72\x6F\x6C\x65","\x67\x65\x74\x52\x65\x61\x6C\x74\x69\x6D\x65\x51\x75\x65\x75\x65\x73","\x72\x6F\x77\x73","\x6E\x61\x6D\x65","\x6D\x61\x70","\x75\x6E\x69\x6F\x6E","\x66\x6F\x72\x45\x61\x63\x68","\x6D\x65\x72\x67\x65","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x70\x61\x72\x61\x6D\x73","\x73\x68\x6F\x77\x41\x67\x65\x6E\x74\x73","\x6C\x65\x6E\x67\x74\x68","\x61\x67\x65\x6E\x74","\x66\x75\x6C\x6C\x6E\x61\x6D\x65","\x65\x6D\x61\x69\x6C","\x67\x65\x74\x55\x73\x65\x72\x73","\x63\x72\x65\x61\x74\x65","\x70\x75\x73\x68","\x50\x52\x49\x4D\x41\x52\x59","\x70\x61\x74\x68","\x65\x72\x72\x6F\x72\x73","\x20\x6D\x75\x73\x74\x20\x62\x65\x20\x75\x6E\x69\x71\x75\x65","\x6D\x65\x73\x73\x61\x67\x65","\x6A\x6F\x69\x6E","\x74\x72\x61\x6E\x73\x6C\x61\x74\x65\x64\x4D\x65\x73\x73\x61\x67\x65","\x4D\x45\x53\x53\x41\x47\x45\x5F\x45\x58\x49\x53\x54\x5F\x51\x55\x45\x55\x45","\x61\x67\x65\x6E\x74\x73","\x62\x6F\x64\x79","\x70\x65\x6E\x61\x6C\x74\x79","\x61\x64\x64\x55\x73\x65\x72\x73","\x75\x70\x64\x61\x74\x65","\x73\x61\x76\x65","\x61\x64\x64\x41\x67\x65\x6E\x74\x73","\x53\x49\x50\x2F\x25\x73","\x66\x6F\x72\x6D\x61\x74","\x62\x75\x6C\x6B\x43\x72\x65\x61\x74\x65","\x66\x69\x6E\x64\x41\x6C\x6C","\x72\x65\x6D\x6F\x76\x65\x41\x67\x65\x6E\x74\x73","\x64\x65\x73\x74\x72\x6F\x79","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73"];_0xd408[0];var _=require(_0xd408[1]);var util=require(_0xd408[2]);var Util=require(_0xd408[3]);var sequelize=require(_0xd408[5])[_0xd408[4]];var User=require(_0xd408[5])[_0xd408[6]];var VoiceQueue=require(_0xd408[5])[_0xd408[7]];var UserHasVoiceQueue=require(_0xd408[5])[_0xd408[8]];var VoiceExtension=require(_0xd408[5])[_0xd408[9]];exports[_0xd408[10]]= function(_0x8d4dx9,_0x8d4dxa){switch(_0x8d4dx9[_0xd408[18]][_0xd408[23]]){case _0xd408[18]:return User[_0xd408[19]](_0x8d4dx9[_0xd408[18]][_0xd408[17]],{attributes:[_0xd408[17]]})[_0xd408[14]](Util[_0xd408[16]](_0x8d4dx9[_0xd408[15]]))[_0xd408[14]](function(_0x8d4dxc){_0x8d4dxa[_0xd408[13]](200)[_0xd408[12]](_0x8d4dxc)})[_0xd408[11]](function(_0x8d4dxb){return handleError(_0x8d4dxa,_0x8d4dxb)});default:return VoiceQueue[_0xd408[22]](Util[_0xd408[21]](_0x8d4dx9[_0xd408[15]]))[_0xd408[14]](function(_0x8d4dxc){_0x8d4dxa[_0xd408[13]](200)[_0xd408[12]](_0x8d4dxc)})[_0xd408[11]](function(_0x8d4dxb){console[_0xd408[20]](_0x8d4dxb);return handleError(_0x8d4dxa,_0x8d4dxb)})}};exports[_0xd408[24]]= function(_0x8d4dx9,_0x8d4dxa,_0x8d4dxd){switch(_0x8d4dx9[_0xd408[18]][_0xd408[23]]){case _0xd408[18]:var _0x8d4dxe=[];return User[_0xd408[19]](_0x8d4dx9[_0xd408[18]][_0xd408[17]],{attributes:[_0xd408[17]]})[_0xd408[14]](Util[_0xd408[16]]({},{attributes:[_0xd408[26]],include:[{raw:true,model:User,attributes:[_0xd408[17]]}]}))[_0xd408[14]](function(_0x8d4dxf){var _0x8d4dx10=_[_0xd408[27]](_0x8d4dxf[_0xd408[25]],_0xd408[26]);_0x8d4dxf[_0xd408[25]][_0xd408[29]](function(_0x8d4dx11){_0x8d4dxe= _[_0xd408[28]](_0x8d4dxe,_[_0xd408[27]](_0x8d4dx11.Users,_0xd408[17]))});return VoiceQueue[_0xd408[22]](_[_0xd408[30]](Util[_0xd408[21]](_0x8d4dx9[_0xd408[15]],{name:_0x8d4dx10}),{include:[{model:User,where:{id:_0x8d4dxe},required:false}]}))})[_0xd408[14]](function(_0x8d4dxc){return _0x8d4dxa[_0xd408[13]](200)[_0xd408[12]](_0x8d4dxc)})[_0xd408[11]](function(_0x8d4dxb){console[_0xd408[20]](_0x8d4dxb);return handleError(_0x8d4dxa,_0x8d4dxb)});default:return VoiceQueue[_0xd408[22]](_[_0xd408[30]](Util[_0xd408[21]](_0x8d4dx9[_0xd408[15]]),{include:[{model:User,required:false}]}))[_0xd408[14]](function(_0x8d4dxc){return _0x8d4dxa[_0xd408[13]](200)[_0xd408[12]](_0x8d4dxc)})[_0xd408[11]](function(_0x8d4dxb){console[_0xd408[20]](_0x8d4dxb);return handleError(_0x8d4dxa,_0x8d4dxb)})}};exports[_0xd408[31]]= function(_0x8d4dx9,_0x8d4dxa){return VoiceQueue[_0xd408[19]](_0x8d4dx9[_0xd408[33]][_0xd408[26]])[_0xd408[14]](function(_0x8d4dx12){if(!_0x8d4dx12){return _0x8d4dxa[_0xd408[32]](404)};return _0x8d4dxa[_0xd408[12]](_0x8d4dx12)})[_0xd408[11]](function(_0x8d4dxb){return handleError(_0x8d4dxa,_0x8d4dxb)})};exports[_0xd408[34]]= function(_0x8d4dx9,_0x8d4dxa){return VoiceQueue[_0xd408[19]](_0x8d4dx9[_0xd408[33]][_0xd408[26]])[_0xd408[14]](function(_0x8d4dx11){if(!_0x8d4dx11){return _0x8d4dxa[_0xd408[32]](404)};return _0x8d4dx11[_0xd408[39]]({where:{role:_0xd408[36]},attributes:[_0xd408[17],_0xd408[26],_0xd408[37],_0xd408[38]]})})[_0xd408[14]](function(_0x8d4dxe){return _0x8d4dxa[_0xd408[13]](200)[_0xd408[12]]({rows:_0x8d4dxe,count:_0x8d4dxe[_0xd408[35]]})})[_0xd408[11]](function(_0x8d4dxb){return handleError(_0x8d4dxa,_0x8d4dxb)})};exports[_0xd408[40]]= function(_0x8d4dx9,_0x8d4dxa){var _0x8d4dx13;return VoiceQueue[_0xd408[40]](_0x8d4dx9[_0xd408[51]])[_0xd408[14]](function(_0x8d4dx12){_0x8d4dx13= _0x8d4dx12;if(_0x8d4dx9[_0xd408[51]][_0xd408[50]]){return _0x8d4dx13[_0xd408[53]](_0x8d4dx9[_0xd408[51]][_0xd408[50]],{penalty:_0x8d4dx9[_0xd408[51]][_0xd408[52]]|| 0})}})[_0xd408[14]](function(){return _0x8d4dxa[_0xd408[13]](201)[_0xd408[12]](_0x8d4dx13)})[_0xd408[11]](sequelize.UniqueConstraintError,function(_0x8d4dxb){var _0x8d4dx14=[];_0x8d4dxb[_0xd408[44]][_0xd408[29]](function(_0x8d4dx15){switch(_0x8d4dx15[_0xd408[43]]){case _0xd408[42]:_0x8d4dx14[_0xd408[41]](_0xd408[26]);break;default:_0x8d4dx14[_0xd408[41]](_0x8d4dx15[_0xd408[43]])}});_0x8d4dx14[_0xd408[41]](_0xd408[45]);_0x8d4dxb[_0xd408[46]]= _0x8d4dx14[_0xd408[47]]();_0x8d4dxb[_0xd408[48]]= _0xd408[49];return _0x8d4dxa[_0xd408[13]](500)[_0xd408[12]](_0x8d4dxb)})[_0xd408[11]](function(_0x8d4dxb){return handleError(_0x8d4dxa,_0x8d4dxb)})};exports[_0xd408[54]]= function(_0x8d4dx9,_0x8d4dxa){if(_0x8d4dx9[_0xd408[51]][_0xd408[26]]){delete _0x8d4dx9[_0xd408[51]][_0xd408[26]]};return VoiceQueue[_0xd408[19]](_0x8d4dx9[_0xd408[33]][_0xd408[26]])[_0xd408[14]](function(_0x8d4dx12){if(!_0x8d4dx12){return _0x8d4dxa[_0xd408[32]](404)};var _0x8d4dx16=_[_0xd408[30]](_0x8d4dx12,_0x8d4dx9[_0xd408[51]]);return _0x8d4dx16[_0xd408[55]]()})[_0xd408[14]](function(_0x8d4dx12){return _0x8d4dxa[_0xd408[13]](200)[_0xd408[12]](_0x8d4dx12)})[_0xd408[11]](function(_0x8d4dxb){console[_0xd408[20]](_0x8d4dxb);return handleError(_0x8d4dxa,_0x8d4dxb)})};exports[_0xd408[56]]= function(_0x8d4dx9,_0x8d4dxa,_0x8d4dxd){return User[_0xd408[60]]({where:{id:{$in:_0x8d4dx9[_0xd408[51]][_0xd408[50]]}}})[_0xd408[14]](function(_0x8d4dx17){var _0x8d4dx18=_[_0xd408[27]](_0x8d4dx17,function(_0x8d4dx19){return {queue:_0x8d4dx9[_0xd408[33]][_0xd408[26]],interface:util[_0xd408[58]](_0xd408[57],_0x8d4dx19[_0xd408[26]]),stateinterface:util[_0xd408[58]](_0xd408[57],_0x8d4dx19[_0xd408[26]]),membername:_0x8d4dx19[_0xd408[26]],UserId:_0x8d4dx19[_0xd408[17]],penalty:_0x8d4dx9[_0xd408[51]][_0xd408[52]]}});return UserHasVoiceQueue[_0xd408[59]](_0x8d4dx18,{individualHooks:true})})[_0xd408[14]](function(){return _0x8d4dxa[_0xd408[32]](200)})[_0xd408[11]](function(_0x8d4dxb){console[_0xd408[20]](_0x8d4dxb);return _0x8d4dxd(_0x8d4dxb)})};exports[_0xd408[61]]= function(_0x8d4dx9,_0x8d4dxa,_0x8d4dxd){return UserHasVoiceQueue[_0xd408[62]]({where:{UserId:_0x8d4dx9[_0xd408[15]][_0xd408[50]],queue:_0x8d4dx9[_0xd408[33]][_0xd408[26]]},individualHooks:true})[_0xd408[14]](function(){return _0x8d4dxa[_0xd408[32]](202)})[_0xd408[11]](function(_0x8d4dxb){return _0x8d4dxd(_0x8d4dxb)})};exports[_0xd408[62]]= function(_0x8d4dx9,_0x8d4dxa){return VoiceQueue[_0xd408[62]]({where:{name:_0x8d4dx9[_0xd408[33]][_0xd408[26]]},individualHooks:true})[_0xd408[14]](function(){return _0x8d4dxa[_0xd408[32]](204)})[_0xd408[11]](function(_0x8d4dxb){return handleError(_0x8d4dxa,_0x8d4dxb)})};exports[_0xd408[63]]= function(_0x8d4dx9,_0x8d4dxa){return VoiceQueue[_0xd408[62]]({where:{name:_0x8d4dx9[_0xd408[15]][_0xd408[64]]},individualHooks:true})[_0xd408[14]](function(){return _0x8d4dxa[_0xd408[32]](204)})[_0xd408[11]](function(_0x8d4dxb){return handleError(_0x8d4dxa,_0x8d4dxb)})};function handleError(_0x8d4dxa,_0x8d4dxb){return _0x8d4dxa[_0xd408[13]](500)[_0xd408[12]](_0x8d4dxb)} \ No newline at end of file diff --git a/server/api/voice_queue/voice_queue.events.js b/server/api/voice_queue/voice_queue.events.js index 47e7ba6..8b4c901 100644 --- a/server/api/voice_queue/voice_queue.events.js +++ b/server/api/voice_queue/voice_queue.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const VoiceQueue = require('../../models').VoiceQueue; - -var VoiceQueueEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -VoiceQueueEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - VoiceQueue.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - VoiceQueueEvents.emit(event + ':' + doc._id, doc); - VoiceQueueEvents.emit(event, doc); - done(null); - } -} - -module.exports = VoiceQueueEvents; +var _0xd4ed=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xd4ed[0];const EventEmitter=require(_0xd4ed[1]);const VoiceQueue=require(_0xd4ed[3])[_0xd4ed[2]];var VoiceQueueEvents= new EventEmitter();VoiceQueueEvents[_0xd4ed[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xd4ed[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xd4ed[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xd4ed[6]};for(var e in events){var event=events[e];VoiceQueue[_0xd4ed[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xd0c7x8,_0xd0c7x9,_0xd0c7xa){VoiceQueueEvents[_0xd4ed[10]](event+ _0xd4ed[8]+ _0xd0c7x8[_0xd4ed[9]],_0xd0c7x8);VoiceQueueEvents[_0xd4ed[10]](event,_0xd0c7x8);_0xd0c7xa(null)}}module[_0xd4ed[11]]= VoiceQueueEvents \ No newline at end of file diff --git a/server/api/voice_queue/voice_queue.socket.js b/server/api/voice_queue/voice_queue.socket.js index 1036ff9..e0cdd9f 100644 --- a/server/api/voice_queue/voice_queue.socket.js +++ b/server/api/voice_queue/voice_queue.socket.js @@ -1,86 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const VoiceQueueEvents = require('./voice_queue.events'); -const VoiceQueue = require('../../models').VoiceQueue; -const User = require('../../models').User; -const Util = require('../../config/util'); -const _ = require('lodash'); -const Promise = require('bluebird'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('voice_queue:' + event, socket); - - VoiceQueueEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - switch (event) { - case 'voice_queue:save': - return Promise - .all([]) - .then(getVoiceQueues(socket)) - .then(function(userQueues) { - if (_.includes(userQueues, doc.name)) { - socket.emit(event, doc); - } - }) - .catch(function(err) { - console.log('Error filtering queues after queue save', err); - }) - break; - case 'voice_queue:remove': - socket.emit(event, doc); - break; - - default: - - } - }; -} - -function removeListener(event, listener) { - return function() { - VoiceQueueEvents.removeListener(event, listener); - }; -} - -function getVoiceQueues(user) { - return function() { - switch (user.role) { - case 'user': - return User - .findById(user.userId, { - attributes: ['id'] - }) - .then(Util.getVoiceQueuesIdByUser()) - .then(function(userQueues) { - return _.map(userQueues.rows, 'name'); - }); - case 'admin': - return VoiceQueue - .findAll() - .then(function(queues) { - return { - rows: queues - }; - }) - .then(function(userQueues) { - return _.map(userQueues.rows, 'name'); - }); - default: - return []; - } - } -} +var _0x33cc=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x76\x6F\x69\x63\x65\x5F\x71\x75\x65\x75\x65\x2E\x65\x76\x65\x6E\x74\x73","\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x55\x73\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x6C\x6F\x64\x61\x73\x68","\x62\x6C\x75\x65\x62\x69\x72\x64","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x76\x6F\x69\x63\x65\x5F\x71\x75\x65\x75\x65\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x45\x72\x72\x6F\x72\x20\x66\x69\x6C\x74\x65\x72\x69\x6E\x67\x20\x71\x75\x65\x75\x65\x73\x20\x61\x66\x74\x65\x72\x20\x71\x75\x65\x75\x65\x20\x73\x61\x76\x65","\x6C\x6F\x67","\x63\x61\x74\x63\x68","\x6E\x61\x6D\x65","\x69\x6E\x63\x6C\x75\x64\x65\x73","\x65\x6D\x69\x74","\x74\x68\x65\x6E","\x61\x6C\x6C","\x76\x6F\x69\x63\x65\x5F\x71\x75\x65\x75\x65\x3A\x73\x61\x76\x65","\x76\x6F\x69\x63\x65\x5F\x71\x75\x65\x75\x65\x3A\x72\x65\x6D\x6F\x76\x65","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72","\x72\x6F\x77\x73","\x6D\x61\x70","\x67\x65\x74\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x75\x73\x65\x72\x49\x64","\x69\x64","\x66\x69\x6E\x64\x42\x79\x49\x64","\x75\x73\x65\x72","\x66\x69\x6E\x64\x41\x6C\x6C","\x61\x64\x6D\x69\x6E","\x72\x6F\x6C\x65"];_0x33cc[0];const VoiceQueueEvents=require(_0x33cc[1]);const VoiceQueue=require(_0x33cc[3])[_0x33cc[2]];const User=require(_0x33cc[3])[_0x33cc[4]];const Util=require(_0x33cc[5]);const _=require(_0x33cc[6]);const Promise=require(_0x33cc[7]);var events=[_0x33cc[8],_0x33cc[9]];exports[_0x33cc[10]]= function(_0xe13fx8){for(var _0xe13fx9=0,_0xe13fxa=events[_0x33cc[11]];_0xe13fx9< _0xe13fxa;_0xe13fx9++){var _0xe13fxb=events[_0xe13fx9];var _0xe13fxc=createListener(_0x33cc[12]+ _0xe13fxb,_0xe13fx8);VoiceQueueEvents[_0x33cc[13]](_0xe13fxb,_0xe13fxc);_0xe13fx8[_0x33cc[13]](_0x33cc[14],removeListener(_0xe13fxb,_0xe13fxc))}};function createListener(_0xe13fxb,_0xe13fx8){return function(_0xe13fxe){switch(_0xe13fxb){case _0x33cc[23]:return Promise[_0x33cc[22]]([])[_0x33cc[21]](getVoiceQueues(_0xe13fx8))[_0x33cc[21]](function(_0xe13fx10){if(_[_0x33cc[19]](_0xe13fx10,_0xe13fxe[_0x33cc[18]])){_0xe13fx8[_0x33cc[20]](_0xe13fxb,_0xe13fxe)}})[_0x33cc[17]](function(_0xe13fxf){console[_0x33cc[16]](_0x33cc[15],_0xe13fxf)});break;case _0x33cc[24]:_0xe13fx8[_0x33cc[20]](_0xe13fxb,_0xe13fxe);break;default:}}}function removeListener(_0xe13fxb,_0xe13fxc){return function(){VoiceQueueEvents[_0x33cc[25]](_0xe13fxb,_0xe13fxc)}}function getVoiceQueues(_0xe13fx13){return function(){switch(_0xe13fx13[_0x33cc[35]]){case _0x33cc[32]:return User[_0x33cc[31]](_0xe13fx13[_0x33cc[29]],{attributes:[_0x33cc[30]]})[_0x33cc[21]](Util[_0x33cc[28]]())[_0x33cc[21]](function(_0xe13fx10){return _[_0x33cc[27]](_0xe13fx10[_0x33cc[26]],_0x33cc[18])});case _0x33cc[34]:return VoiceQueue[_0x33cc[33]]()[_0x33cc[21]](function(_0xe13fx14){return {rows:_0xe13fx14}})[_0x33cc[21]](function(_0xe13fx10){return _[_0x33cc[27]](_0xe13fx10[_0x33cc[26]],_0x33cc[18])});default:return []}}} \ No newline at end of file diff --git a/server/api/voice_recording/index.js b/server/api/voice_recording/index.js index bc07dc3..79cb9f4 100644 --- a/server/api/voice_recording/index.js +++ b/server/api/voice_recording/index.js @@ -1,19 +1 @@ -'use strict'; - -var express = require('express'); -var auth = require('../../auth/auth.service'); -var controller = require('./voice_recording.controller'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), auth.hasModule([7], ['admin', 'agent']), controller.index); -router.get('/describe', auth.isAuthenticated(), auth.hasModule([7], ['admin']), controller.describe); -router.get('/:id', auth.isAuthenticated(), auth.hasModule([7], ['admin']), controller.show); -router.get('/:id/download', controller.getStreamById); -router.get('/:id/stream', auth.isAuthenticated(), auth.hasModule([7], ['admin', 'agent']), controller.getStream); -router.post('/', auth.isAuthenticated(), auth.hasModule([7], ['admin']), controller.create); -router.put('/:id', auth.isAuthenticated(), auth.hasModule([7], ['admin']), controller.update); -router.delete('/', auth.isAuthenticated(), auth.hasModule([7], ['admin']), controller.bulkDestroy); -router.delete('/:id', auth.isAuthenticated(), auth.hasModule([7], ['admin']), controller.destroy); - -module.exports = router; +var _0xc44d=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x76\x6F\x69\x63\x65\x5F\x72\x65\x63\x6F\x72\x64\x69\x6E\x67\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x61\x67\x65\x6E\x74","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x64\x65\x73\x63\x72\x69\x62\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x2F\x3A\x69\x64\x2F\x64\x6F\x77\x6E\x6C\x6F\x61\x64","\x67\x65\x74\x53\x74\x72\x65\x61\x6D\x42\x79\x49\x64","\x2F\x3A\x69\x64\x2F\x73\x74\x72\x65\x61\x6D","\x67\x65\x74\x53\x74\x72\x65\x61\x6D","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0xc44d[0];var express=require(_0xc44d[1]);var auth=require(_0xc44d[2]);var controller=require(_0xc44d[3]);var router=express.Router();router[_0xc44d[10]](_0xc44d[4],auth[_0xc44d[5]](),auth[_0xc44d[8]]([7],[_0xc44d[6],_0xc44d[7]]),controller[_0xc44d[9]]);router[_0xc44d[10]](_0xc44d[11],auth[_0xc44d[5]](),auth[_0xc44d[8]]([7],[_0xc44d[6]]),controller[_0xc44d[12]]);router[_0xc44d[10]](_0xc44d[13],auth[_0xc44d[5]](),auth[_0xc44d[8]]([7],[_0xc44d[6]]),controller[_0xc44d[14]]);router[_0xc44d[10]](_0xc44d[15],controller[_0xc44d[16]]);router[_0xc44d[10]](_0xc44d[17],auth[_0xc44d[5]](),auth[_0xc44d[8]]([7],[_0xc44d[6],_0xc44d[7]]),controller[_0xc44d[18]]);router[_0xc44d[20]](_0xc44d[4],auth[_0xc44d[5]](),auth[_0xc44d[8]]([7],[_0xc44d[6]]),controller[_0xc44d[19]]);router[_0xc44d[22]](_0xc44d[13],auth[_0xc44d[5]](),auth[_0xc44d[8]]([7],[_0xc44d[6]]),controller[_0xc44d[21]]);router[_0xc44d[24]](_0xc44d[4],auth[_0xc44d[5]](),auth[_0xc44d[8]]([7],[_0xc44d[6]]),controller[_0xc44d[23]]);router[_0xc44d[24]](_0xc44d[13],auth[_0xc44d[5]](),auth[_0xc44d[8]]([7],[_0xc44d[6]]),controller[_0xc44d[25]]);module[_0xc44d[26]]= router \ No newline at end of file diff --git a/server/api/voice_recording/voice_recording.controller.js b/server/api/voice_recording/voice_recording.controller.js index 032e36d..4ba0f03 100644 --- a/server/api/voice_recording/voice_recording.controller.js +++ b/server/api/voice_recording/voice_recording.controller.js @@ -1,215 +1 @@ -/** - * Using Rails-like standard naming convention for endpoints. - * GET /api/voice/recordings -> index - * POST /api/voice/recordings -> create - * GET /api/voice/recordings/:id -> show - * PUT /api/voice/recordings/:id -> update - * DELETE /api/voice/recordings/:id -> destroy - */ - -'use strict'; - - -var _ = require('lodash'); -var util = require('util'); -var Util = require('../../config/util'); - -var VoiceRecording = require('../../models').VoiceRecording; -var User = require('../../models').User; -var Promise = require('bluebird'); -// var base64 = Promise.promisifyAll(require('file-base64')); -var base64 = require('file-base64'); -var fs = require('fs'); -var path = require('path'); - -function handleError(res) { - return function(err) { - if (err.cause && err.cause.code === 'ENOENT') { - err = { - message: 'No file or directory', - translatedMessage: 'MESSAGE_NO_FILE_OR_DIRECTORY' - }; - } - return res.status(500).send(err); - } -} - -function responseWithResult(res, statusCode) { - statusCode = statusCode || 200; - return function(entity) { - if (entity) { - res.status(statusCode).json(entity); - } - }; -} - -function handleEntityNotFound(res) { - return function(entity) { - if (!entity) { - res.status(404).end(); - return null; - } - return entity; - }; -} - -function saveUpdates(body) { - return function(entity) { - return entity - .updateAttributes(body); - }; -} - -function removeEntity(res) { - return function(entity) { - if (entity) { - return entity.destroy() - .then(function() { - res.status(204).end(); - }); - } - }; -} - -// Gets a list of VoiceRecordings -exports.index = function(req, res) { - switch (req.user.role) { - case 'user': - return User - .findById(req.user.id, { - attributes: ['id'] - }) - .then(Util.getVoiceQueuesIdByUser()) - .then(function(userQueues) { - var users = []; - var _userQueues = _.map(userQueues.rows, 'name'); - userQueues.rows.forEach(function(queue) { - users = _.union(users, _.map(queue.Users, 'name')); - }); - return VoiceRecording - .findAndCountAll(Util.getQuery(req.query, { - $or: { - queue: _userQueues, - membername: users - } - })) - }) - .then(responseWithResult(res)) - .catch(handleError(res)); - case 'agent': - return VoiceRecording - .findAndCountAll(Util.getQuery(req.query, { - membername: req.user.name - })) - .then(responseWithResult(res)) - .catch(handleError(res)); - default: - return VoiceRecording - .findAndCountAll(Util.getQuery(req.query)) - .then(responseWithResult(res)) - .catch(handleError(res)); - } -} - -// Gets a single VoiceRecording from the DB -exports.show = function(req, res) { - return VoiceRecording.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Get list of fields -exports.describe = function(req, res) { - return VoiceRecording - .describe() - .then(function(fields) { - return res.status(200).send(fields); - }) - .catch(handleError(res)); -}; - - -// Gets a single VoiceRecording from the DB -exports.getStream = function(req, res) { - return VoiceRecording - .findById(req.params.id) - .then(function(recording) { - var readFile = Promise.promisify(fs.readFile); - return readFile(recording.value); - }) - .then(function(result) { - var base64String = new Buffer(result, 'binary').toString('base64'); - return base64String; - }) - .then(function(base64String) { - return res.status(200).send({ - downloadString: base64String - }); - }) - .catch(handleError(res)); -} - -//Download a Vocie Recordings: Not authenticated -exports.getStreamById = function(req, res) { - var where = {}; - - if (req.query && req.query.hasOwnProperty('type') && req.query.type === 'uniqueid') { - where.uniqueid = req.params.id; - } else { - where.id = req.params.id; - } - - return VoiceRecording - .findOne({ - where: where - }) - .then(handleEntityNotFound(res)) - .then(function(recording) { - return res.download(recording.value, path.basename(recording.value)); - }) - .catch(handleError(res)); -} - - -// Creates a new VoiceRecording in the DB -exports.create = function(req, res) { - return VoiceRecording.create(req.body) - .then(responseWithResult(res, 201)) - .catch(handleError(res)); -} - -// Updates an existing VoiceRecording in the DB -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - return VoiceRecording.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(saveUpdates(req.body)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -// Deletes a VoiceRecording from the DB -exports.destroy = function(req, res) { - return VoiceRecording.findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(removeEntity(res)) - .catch(handleError(res)); -} - -// Deletes a agent from the DB. -exports.bulkDestroy = function(req, res) { - return VoiceRecording - .destroy({ - where: { - id: req.query.ids - }, - individualHooks: true - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(handleError(res)); -}; +var _0x58a8=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x75\x74\x69\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x56\x6F\x69\x63\x65\x52\x65\x63\x6F\x72\x64\x69\x6E\x67","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x55\x73\x65\x72","\x62\x6C\x75\x65\x62\x69\x72\x64","\x66\x69\x6C\x65\x2D\x62\x61\x73\x65\x36\x34","\x66\x73","\x70\x61\x74\x68","\x63\x61\x75\x73\x65","\x63\x6F\x64\x65","\x45\x4E\x4F\x45\x4E\x54","\x4E\x6F\x20\x66\x69\x6C\x65\x20\x6F\x72\x20\x64\x69\x72\x65\x63\x74\x6F\x72\x79","\x4D\x45\x53\x53\x41\x47\x45\x5F\x4E\x4F\x5F\x46\x49\x4C\x45\x5F\x4F\x52\x5F\x44\x49\x52\x45\x43\x54\x4F\x52\x59","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x6A\x73\x6F\x6E","\x65\x6E\x64","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x74\x68\x65\x6E","\x64\x65\x73\x74\x72\x6F\x79","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x72\x6F\x77\x73","\x6E\x61\x6D\x65","\x6D\x61\x70","\x75\x6E\x69\x6F\x6E","\x66\x6F\x72\x45\x61\x63\x68","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x67\x65\x74\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x69\x64","\x75\x73\x65\x72","\x66\x69\x6E\x64\x42\x79\x49\x64","\x61\x67\x65\x6E\x74","\x72\x6F\x6C\x65","\x73\x68\x6F\x77","\x70\x61\x72\x61\x6D\x73","\x64\x65\x73\x63\x72\x69\x62\x65","\x67\x65\x74\x53\x74\x72\x65\x61\x6D","\x62\x61\x73\x65\x36\x34","\x62\x69\x6E\x61\x72\x79","\x72\x65\x61\x64\x46\x69\x6C\x65","\x70\x72\x6F\x6D\x69\x73\x69\x66\x79","\x76\x61\x6C\x75\x65","\x67\x65\x74\x53\x74\x72\x65\x61\x6D\x42\x79\x49\x64","\x74\x79\x70\x65","\x68\x61\x73\x4F\x77\x6E\x50\x72\x6F\x70\x65\x72\x74\x79","\x75\x6E\x69\x71\x75\x65\x69\x64","\x62\x61\x73\x65\x6E\x61\x6D\x65","\x64\x6F\x77\x6E\x6C\x6F\x61\x64","\x66\x69\x6E\x64\x4F\x6E\x65","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64\x73"];_0x58a8[0];var _=require(_0x58a8[1]);var util=require(_0x58a8[2]);var Util=require(_0x58a8[3]);var VoiceRecording=require(_0x58a8[5])[_0x58a8[4]];var User=require(_0x58a8[5])[_0x58a8[6]];var Promise=require(_0x58a8[7]);var base64=require(_0x58a8[8]);var fs=require(_0x58a8[9]);var path=require(_0x58a8[10]);function handleError(_0xa41cxb){return function(_0xa41cxc){if(_0xa41cxc[_0x58a8[11]]&& _0xa41cxc[_0x58a8[11]][_0x58a8[12]]=== _0x58a8[13]){_0xa41cxc= {message:_0x58a8[14],translatedMessage:_0x58a8[15]}};return _0xa41cxb[_0x58a8[17]](500)[_0x58a8[16]](_0xa41cxc)}}function responseWithResult(_0xa41cxb,_0xa41cxe){_0xa41cxe= _0xa41cxe|| 200;return function(_0xa41cxf){if(_0xa41cxf){_0xa41cxb[_0x58a8[17]](_0xa41cxe)[_0x58a8[18]](_0xa41cxf)}}}function handleEntityNotFound(_0xa41cxb){return function(_0xa41cxf){if(!_0xa41cxf){_0xa41cxb[_0x58a8[17]](404)[_0x58a8[19]]();return null};return _0xa41cxf}}function saveUpdates(_0xa41cx12){return function(_0xa41cxf){return _0xa41cxf[_0x58a8[20]](_0xa41cx12)}}function removeEntity(_0xa41cxb){return function(_0xa41cxf){if(_0xa41cxf){return _0xa41cxf[_0x58a8[22]]()[_0x58a8[21]](function(){_0xa41cxb[_0x58a8[17]](204)[_0x58a8[19]]()})}}}exports[_0x58a8[23]]= function(_0xa41cx14,_0xa41cxb){switch(_0xa41cx14[_0x58a8[35]][_0x58a8[38]]){case _0x58a8[35]:return User[_0x58a8[36]](_0xa41cx14[_0x58a8[35]][_0x58a8[34]],{attributes:[_0x58a8[34]]})[_0x58a8[21]](Util[_0x58a8[33]]())[_0x58a8[21]](function(_0xa41cx15){var _0xa41cx16=[];var _0xa41cx17=_[_0x58a8[27]](_0xa41cx15[_0x58a8[25]],_0x58a8[26]);_0xa41cx15[_0x58a8[25]][_0x58a8[29]](function(_0xa41cx18){_0xa41cx16= _[_0x58a8[28]](_0xa41cx16,_[_0x58a8[27]](_0xa41cx18.Users,_0x58a8[26]))});return VoiceRecording[_0x58a8[32]](Util[_0x58a8[31]](_0xa41cx14[_0x58a8[30]],{$or:{queue:_0xa41cx17,membername:_0xa41cx16}}))})[_0x58a8[21]](responseWithResult(_0xa41cxb))[_0x58a8[24]](handleError(_0xa41cxb));case _0x58a8[37]:return VoiceRecording[_0x58a8[32]](Util[_0x58a8[31]](_0xa41cx14[_0x58a8[30]],{membername:_0xa41cx14[_0x58a8[35]][_0x58a8[26]]}))[_0x58a8[21]](responseWithResult(_0xa41cxb))[_0x58a8[24]](handleError(_0xa41cxb));default:return VoiceRecording[_0x58a8[32]](Util[_0x58a8[31]](_0xa41cx14[_0x58a8[30]]))[_0x58a8[21]](responseWithResult(_0xa41cxb))[_0x58a8[24]](handleError(_0xa41cxb))}};exports[_0x58a8[39]]= function(_0xa41cx14,_0xa41cxb){return VoiceRecording[_0x58a8[36]](_0xa41cx14[_0x58a8[40]][_0x58a8[34]])[_0x58a8[21]](handleEntityNotFound(_0xa41cxb))[_0x58a8[21]](responseWithResult(_0xa41cxb))[_0x58a8[24]](handleError(_0xa41cxb))};exports[_0x58a8[41]]= function(_0xa41cx14,_0xa41cxb){return VoiceRecording[_0x58a8[41]]()[_0x58a8[21]](function(_0xa41cx19){return _0xa41cxb[_0x58a8[17]](200)[_0x58a8[16]](_0xa41cx19)})[_0x58a8[24]](handleError(_0xa41cxb))};exports[_0x58a8[42]]= function(_0xa41cx14,_0xa41cxb){return VoiceRecording[_0x58a8[36]](_0xa41cx14[_0x58a8[40]][_0x58a8[34]])[_0x58a8[21]](function(_0xa41cx1c){var _0xa41cx1d=Promise[_0x58a8[46]](fs[_0x58a8[45]]);return _0xa41cx1d(_0xa41cx1c[_0x58a8[47]])})[_0x58a8[21]](function(_0xa41cx1b){var _0xa41cx1a= new Buffer(_0xa41cx1b,_0x58a8[44]).toString(_0x58a8[43]);return _0xa41cx1a})[_0x58a8[21]](function(_0xa41cx1a){return _0xa41cxb[_0x58a8[17]](200)[_0x58a8[16]]({downloadString:_0xa41cx1a})})[_0x58a8[24]](handleError(_0xa41cxb))};exports[_0x58a8[48]]= function(_0xa41cx14,_0xa41cxb){var _0xa41cx1e={};if(_0xa41cx14[_0x58a8[30]]&& _0xa41cx14[_0x58a8[30]][_0x58a8[50]](_0x58a8[49])&& _0xa41cx14[_0x58a8[30]][_0x58a8[49]]=== _0x58a8[51]){_0xa41cx1e[_0x58a8[51]]= _0xa41cx14[_0x58a8[40]][_0x58a8[34]]}else {_0xa41cx1e[_0x58a8[34]]= _0xa41cx14[_0x58a8[40]][_0x58a8[34]]};return VoiceRecording[_0x58a8[54]]({where:_0xa41cx1e})[_0x58a8[21]](handleEntityNotFound(_0xa41cxb))[_0x58a8[21]](function(_0xa41cx1c){return _0xa41cxb[_0x58a8[53]](_0xa41cx1c[_0x58a8[47]],path[_0x58a8[52]](_0xa41cx1c[_0x58a8[47]]))})[_0x58a8[24]](handleError(_0xa41cxb))};exports[_0x58a8[55]]= function(_0xa41cx14,_0xa41cxb){return VoiceRecording[_0x58a8[55]](_0xa41cx14[_0x58a8[56]])[_0x58a8[21]](responseWithResult(_0xa41cxb,201))[_0x58a8[24]](handleError(_0xa41cxb))};exports[_0x58a8[57]]= function(_0xa41cx14,_0xa41cxb){if(_0xa41cx14[_0x58a8[56]][_0x58a8[34]]){delete _0xa41cx14[_0x58a8[56]][_0x58a8[34]]};return VoiceRecording[_0x58a8[36]](_0xa41cx14[_0x58a8[40]][_0x58a8[34]])[_0x58a8[21]](handleEntityNotFound(_0xa41cxb))[_0x58a8[21]](saveUpdates(_0xa41cx14[_0x58a8[56]]))[_0x58a8[21]](responseWithResult(_0xa41cxb))[_0x58a8[24]](handleError(_0xa41cxb))};exports[_0x58a8[22]]= function(_0xa41cx14,_0xa41cxb){return VoiceRecording[_0x58a8[36]](_0xa41cx14[_0x58a8[40]][_0x58a8[34]])[_0x58a8[21]](handleEntityNotFound(_0xa41cxb))[_0x58a8[21]](removeEntity(_0xa41cxb))[_0x58a8[24]](handleError(_0xa41cxb))};exports[_0x58a8[58]]= function(_0xa41cx14,_0xa41cxb){return VoiceRecording[_0x58a8[22]]({where:{id:_0xa41cx14[_0x58a8[30]][_0x58a8[60]]},individualHooks:true})[_0x58a8[21]](function(){return _0xa41cxb[_0x58a8[59]](204)})[_0x58a8[24]](handleError(_0xa41cxb))} \ No newline at end of file diff --git a/server/api/voice_recording/voice_recording.events.js b/server/api/voice_recording/voice_recording.events.js index ac0c175..60c7f69 100644 --- a/server/api/voice_recording/voice_recording.events.js +++ b/server/api/voice_recording/voice_recording.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const VoiceRecording = require('../../models').VoiceRecording; - -var VoiceRecordingEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -VoiceRecordingEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - VoiceRecording.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - VoiceRecordingEvents.emit(event + ':' + doc._id, doc); - VoiceRecordingEvents.emit(event, doc); - done(null); - } -} - -module.exports = VoiceRecordingEvents; +var _0x7a32=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x56\x6F\x69\x63\x65\x52\x65\x63\x6F\x72\x64\x69\x6E\x67","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x7a32[0];const EventEmitter=require(_0x7a32[1]);const VoiceRecording=require(_0x7a32[3])[_0x7a32[2]];var VoiceRecordingEvents= new EventEmitter();VoiceRecordingEvents[_0x7a32[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x7a32[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x7a32[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x7a32[6]};for(var e in events){var event=events[e];VoiceRecording[_0x7a32[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xa716x8,_0xa716x9,_0xa716xa){VoiceRecordingEvents[_0x7a32[10]](event+ _0x7a32[8]+ _0xa716x8[_0x7a32[9]],_0xa716x8);VoiceRecordingEvents[_0x7a32[10]](event,_0xa716x8);_0xa716xa(null)}}module[_0x7a32[11]]= VoiceRecordingEvents \ No newline at end of file diff --git a/server/api/voice_recording/voice_recording.socket.js b/server/api/voice_recording/voice_recording.socket.js index 6b7ee22..a6be2e9 100644 --- a/server/api/voice_recording/voice_recording.socket.js +++ b/server/api/voice_recording/voice_recording.socket.js @@ -1,32 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const VoiceRecordingEvents = require('./voice_recording.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('voice_recording:' + event, socket); - - VoiceRecordingEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - VoiceRecordingEvents.removeListener(event, listener); - }; -} +var _0x5414=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x76\x6F\x69\x63\x65\x5F\x72\x65\x63\x6F\x72\x64\x69\x6E\x67\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x76\x6F\x69\x63\x65\x5F\x72\x65\x63\x6F\x72\x64\x69\x6E\x67\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x5414[0];const VoiceRecordingEvents=require(_0x5414[1]);var events=[_0x5414[2],_0x5414[3]];exports[_0x5414[4]]= function(_0xd318x3){for(var _0xd318x4=0,_0xd318x5=events[_0x5414[5]];_0xd318x4< _0xd318x5;_0xd318x4++){var _0xd318x6=events[_0xd318x4];var _0xd318x7=createListener(_0x5414[6]+ _0xd318x6,_0xd318x3);VoiceRecordingEvents[_0x5414[7]](_0xd318x6,_0xd318x7);_0xd318x3[_0x5414[7]](_0x5414[8],removeListener(_0xd318x6,_0xd318x7))}};function createListener(_0xd318x6,_0xd318x3){return function(_0xd318x9){_0xd318x3[_0x5414[9]](_0xd318x6,_0xd318x9)}}function removeListener(_0xd318x6,_0xd318x7){return function(){VoiceRecordingEvents[_0x5414[10]](_0xd318x6,_0xd318x7)}} \ No newline at end of file diff --git a/server/api/voice_voicemail/index.js b/server/api/voice_voicemail/index.js index db2e635..afb1351 100644 --- a/server/api/voice_voicemail/index.js +++ b/server/api/voice_voicemail/index.js @@ -1,17 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./voice_voicemail.controller'); -var auth = require('../../auth/auth.service'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), auth.hasModule([7], ['admin']), controller.index); -router.get('/:uniqueid', auth.isAuthenticated(), auth.hasModule([7], ['admin']), controller.show); -router.post('/', auth.isAuthenticated(), auth.hasModule([7], ['admin']), controller.create); -router.post('/validate', auth.isAuthenticated(), auth.hasModule([7], ['admin']), controller.mailboxValidation); -router.put('/:uniqueid', auth.isAuthenticated(), auth.hasModule([7], ['admin']), controller.update); -router.delete('/', auth.isAuthenticated(), auth.hasModule([7], ['admin']), controller.bulkDestroy); -router.delete('/:uniqueid', auth.isAuthenticated(), auth.hasModule([7], ['admin']), controller.destroy); - -module.exports = router; +var _0x1827=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x76\x6F\x69\x63\x65\x5F\x76\x6F\x69\x63\x65\x6D\x61\x69\x6C\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x75\x6E\x69\x71\x75\x65\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x2F\x76\x61\x6C\x69\x64\x61\x74\x65","\x6D\x61\x69\x6C\x62\x6F\x78\x56\x61\x6C\x69\x64\x61\x74\x69\x6F\x6E","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0x1827[0];var express=require(_0x1827[1]);var controller=require(_0x1827[2]);var auth=require(_0x1827[3]);var router=express.Router();router[_0x1827[9]](_0x1827[4],auth[_0x1827[5]](),auth[_0x1827[7]]([7],[_0x1827[6]]),controller[_0x1827[8]]);router[_0x1827[9]](_0x1827[10],auth[_0x1827[5]](),auth[_0x1827[7]]([7],[_0x1827[6]]),controller[_0x1827[11]]);router[_0x1827[13]](_0x1827[4],auth[_0x1827[5]](),auth[_0x1827[7]]([7],[_0x1827[6]]),controller[_0x1827[12]]);router[_0x1827[13]](_0x1827[14],auth[_0x1827[5]](),auth[_0x1827[7]]([7],[_0x1827[6]]),controller[_0x1827[15]]);router[_0x1827[17]](_0x1827[10],auth[_0x1827[5]](),auth[_0x1827[7]]([7],[_0x1827[6]]),controller[_0x1827[16]]);router[_0x1827[19]](_0x1827[4],auth[_0x1827[5]](),auth[_0x1827[7]]([7],[_0x1827[6]]),controller[_0x1827[18]]);router[_0x1827[19]](_0x1827[10],auth[_0x1827[5]](),auth[_0x1827[7]]([7],[_0x1827[6]]),controller[_0x1827[20]]);module[_0x1827[21]]= router \ No newline at end of file diff --git a/server/api/voice_voicemail/voice_voicemail.controller.js b/server/api/voice_voicemail/voice_voicemail.controller.js index 69a1139..23b6e49 100644 --- a/server/api/voice_voicemail/voice_voicemail.controller.js +++ b/server/api/voice_voicemail/voice_voicemail.controller.js @@ -1,190 +1 @@ -'use strict'; - -var _ = require('lodash'); -var stream = require('stream'); -var Util = require('../../config/util'); - -var VoiceVoicemail = require('../../models').VoiceVoicemail; -var VoiceVoicemailMessages = require('../../models').VoiceVoicemailMessages; - -// Get list of voice_voicemails -exports.index = function(req, res) { - return VoiceVoicemail - .findAndCountAll(Util.getQuery(req.query)) - .then(function(result) { - res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get a single voice_voicemail -exports.show = function(req, res) { - VoiceVoicemail - .find({ - where: { - uniqueid: req.params.uniqueid - } - }) - .then(function(voice_voicemail) { - if (!voice_voicemail) { - return res.sendStatus(404); - } - return res.send(voice_voicemail); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// validate mailbox uniqueness -exports.mailboxValidation = function(req, res) { - console.log(req.body); - VoiceVoicemail - .findAll({ - where: { - mailbox: req.body.mailbox, - context: req.body.context - } - }) - .then(function(voicemails) { - if (!voicemails) { - return res.sendStatus(404); - } - return res.send(voicemails); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; -// Creates a new voice_voicemail in the DB. -exports.create = function(req, res) { - VoiceVoicemail - .findAll({ - where: { - mailbox: req.body.mailbox, - context: req.body.context - } - }) - .then(function(voicemails) { - if (!voicemails) { - return res.sendStatus(404); - } - if (voicemails.length > 0) { - return res.status(500).send({ - message: 'MESSAGE_EXIST_MAILBOX' - }) - } - VoiceVoicemail - .create(req.body) - .then(function(voice_voicemail) { - return res.status(201).send(voice_voicemail); - }) - .catch(function(err) { - return handleError(res, err); - }) - .catch(function(err) { - return handleError(res, err); - }); - }) -}; - -// Updates an existing voice_voicemail in the DB. -exports.update = function(req, res) { - VoiceVoicemail - .findAll({ - where: { - mailbox: req.body.mailbox, - context: req.body.context, - uniqueid: { - $ne: req.body.uniqueid - } - } - }) - .then(function(voicemails) { - if (!voicemails) { - return res.sendStatus(404); - } - if (voicemails.length > 0) { - return res.status(500).send({ - message: 'MESSAGE_EXIST_MAILBOX' - }) - } - if (req.body.uniqueid) { - delete req.body.uniqueid; - } - VoiceVoicemail - .find({ - where: { - uniqueid: req.params.uniqueid - } - }) - .then(function(voice_voicemail) { - if (!voice_voicemail) { - return res.sendStatus(404); - } - var updated = _.merge(voice_voicemail, req.body); - updated.save() - .then(function() { - return res.status(200).send(voice_voicemail); - }) - .catch(function(err) { - return handleError(res, err); - }); - }) - .catch(function(err) { - return handleError(res, err); - }); - }) - .catch(function(err) { - return handleError(res, err); - }); - -}; - -// Deletes a voice_voicemail from the DB. -exports.destroy = function(req, res) { - VoiceVoicemail - .find({ - where: { - uniqueid: req.params.uniqueid - } - }) - .then(function(voice_voicemail) { - if (!voice_voicemail) { - return res.sendStatus(404); - } - voice_voicemail.destroy() - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes a voice_voicemail from the DB. -exports.bulkDestroy = function(req, res) { - VoiceVoicemail - .destroy({ - where: { - uniqueid: req.query.uniqueid - }, - individualHooks: true - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0x64f5=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x73\x74\x72\x65\x61\x6D","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x56\x6F\x69\x63\x65\x56\x6F\x69\x63\x65\x6D\x61\x69\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x56\x6F\x69\x63\x65\x56\x6F\x69\x63\x65\x6D\x61\x69\x6C\x4D\x65\x73\x73\x61\x67\x65\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x75\x6E\x69\x71\x75\x65\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64","\x6D\x61\x69\x6C\x62\x6F\x78\x56\x61\x6C\x69\x64\x61\x74\x69\x6F\x6E","\x62\x6F\x64\x79","\x6C\x6F\x67","\x6D\x61\x69\x6C\x62\x6F\x78","\x63\x6F\x6E\x74\x65\x78\x74","\x66\x69\x6E\x64\x41\x6C\x6C","\x63\x72\x65\x61\x74\x65","\x6C\x65\x6E\x67\x74\x68","\x4D\x45\x53\x53\x41\x47\x45\x5F\x45\x58\x49\x53\x54\x5F\x4D\x41\x49\x4C\x42\x4F\x58","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x64\x65\x73\x74\x72\x6F\x79","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79"];_0x64f5[0];var _=require(_0x64f5[1]);var stream=require(_0x64f5[2]);var Util=require(_0x64f5[3]);var VoiceVoicemail=require(_0x64f5[5])[_0x64f5[4]];var VoiceVoicemailMessages=require(_0x64f5[5])[_0x64f5[6]];exports[_0x64f5[7]]= function(_0xa10dx6,_0xa10dx7){return VoiceVoicemail[_0x64f5[14]](Util[_0x64f5[13]](_0xa10dx6[_0x64f5[12]]))[_0x64f5[11]](function(_0xa10dx9){_0xa10dx7[_0x64f5[10]](200)[_0x64f5[9]](_0xa10dx9)})[_0x64f5[8]](function(_0xa10dx8){return handleError(_0xa10dx7,_0xa10dx8)})};exports[_0x64f5[15]]= function(_0xa10dx6,_0xa10dx7){VoiceVoicemail[_0x64f5[19]]({where:{uniqueid:_0xa10dx6[_0x64f5[18]][_0x64f5[17]]}})[_0x64f5[11]](function(_0xa10dxa){if(!_0xa10dxa){return _0xa10dx7[_0x64f5[16]](404)};return _0xa10dx7[_0x64f5[9]](_0xa10dxa)})[_0x64f5[8]](function(_0xa10dx8){return handleError(_0xa10dx7,_0xa10dx8)})};exports[_0x64f5[20]]= function(_0xa10dx6,_0xa10dx7){console[_0x64f5[22]](_0xa10dx6[_0x64f5[21]]);VoiceVoicemail[_0x64f5[25]]({where:{mailbox:_0xa10dx6[_0x64f5[21]][_0x64f5[23]],context:_0xa10dx6[_0x64f5[21]][_0x64f5[24]]}})[_0x64f5[11]](function(_0xa10dxb){if(!_0xa10dxb){return _0xa10dx7[_0x64f5[16]](404)};return _0xa10dx7[_0x64f5[9]](_0xa10dxb)})[_0x64f5[8]](function(_0xa10dx8){return handleError(_0xa10dx7,_0xa10dx8)})};exports[_0x64f5[26]]= function(_0xa10dx6,_0xa10dx7){VoiceVoicemail[_0x64f5[25]]({where:{mailbox:_0xa10dx6[_0x64f5[21]][_0x64f5[23]],context:_0xa10dx6[_0x64f5[21]][_0x64f5[24]]}})[_0x64f5[11]](function(_0xa10dxb){if(!_0xa10dxb){return _0xa10dx7[_0x64f5[16]](404)};if(_0xa10dxb[_0x64f5[27]]> 0){return _0xa10dx7[_0x64f5[10]](500)[_0x64f5[9]]({message:_0x64f5[28]})};VoiceVoicemail[_0x64f5[26]](_0xa10dx6[_0x64f5[21]])[_0x64f5[11]](function(_0xa10dxa){return _0xa10dx7[_0x64f5[10]](201)[_0x64f5[9]](_0xa10dxa)})[_0x64f5[8]](function(_0xa10dx8){return handleError(_0xa10dx7,_0xa10dx8)})[_0x64f5[8]](function(_0xa10dx8){return handleError(_0xa10dx7,_0xa10dx8)})})};exports[_0x64f5[29]]= function(_0xa10dx6,_0xa10dx7){VoiceVoicemail[_0x64f5[25]]({where:{mailbox:_0xa10dx6[_0x64f5[21]][_0x64f5[23]],context:_0xa10dx6[_0x64f5[21]][_0x64f5[24]],uniqueid:{$ne:_0xa10dx6[_0x64f5[21]][_0x64f5[17]]}}})[_0x64f5[11]](function(_0xa10dxb){if(!_0xa10dxb){return _0xa10dx7[_0x64f5[16]](404)};if(_0xa10dxb[_0x64f5[27]]> 0){return _0xa10dx7[_0x64f5[10]](500)[_0x64f5[9]]({message:_0x64f5[28]})};if(_0xa10dx6[_0x64f5[21]][_0x64f5[17]]){delete _0xa10dx6[_0x64f5[21]][_0x64f5[17]]};VoiceVoicemail[_0x64f5[19]]({where:{uniqueid:_0xa10dx6[_0x64f5[18]][_0x64f5[17]]}})[_0x64f5[11]](function(_0xa10dxa){if(!_0xa10dxa){return _0xa10dx7[_0x64f5[16]](404)};var _0xa10dxc=_[_0x64f5[30]](_0xa10dxa,_0xa10dx6[_0x64f5[21]]);_0xa10dxc[_0x64f5[31]]()[_0x64f5[11]](function(){return _0xa10dx7[_0x64f5[10]](200)[_0x64f5[9]](_0xa10dxa)})[_0x64f5[8]](function(_0xa10dx8){return handleError(_0xa10dx7,_0xa10dx8)})})[_0x64f5[8]](function(_0xa10dx8){return handleError(_0xa10dx7,_0xa10dx8)})})[_0x64f5[8]](function(_0xa10dx8){return handleError(_0xa10dx7,_0xa10dx8)})};exports[_0x64f5[32]]= function(_0xa10dx6,_0xa10dx7){VoiceVoicemail[_0x64f5[19]]({where:{uniqueid:_0xa10dx6[_0x64f5[18]][_0x64f5[17]]}})[_0x64f5[11]](function(_0xa10dxa){if(!_0xa10dxa){return _0xa10dx7[_0x64f5[16]](404)};_0xa10dxa[_0x64f5[32]]()[_0x64f5[11]](function(){return _0xa10dx7[_0x64f5[16]](204)})[_0x64f5[8]](function(_0xa10dx8){return handleError(_0xa10dx7,_0xa10dx8)})})[_0x64f5[8]](function(_0xa10dx8){return handleError(_0xa10dx7,_0xa10dx8)})};exports[_0x64f5[33]]= function(_0xa10dx6,_0xa10dx7){VoiceVoicemail[_0x64f5[32]]({where:{uniqueid:_0xa10dx6[_0x64f5[12]][_0x64f5[17]]},individualHooks:true})[_0x64f5[11]](function(){return _0xa10dx7[_0x64f5[16]](204)})[_0x64f5[8]](function(_0xa10dx8){return handleError(_0xa10dx7,_0xa10dx8)})};function handleError(_0xa10dx7,_0xa10dx8){return _0xa10dx7[_0x64f5[10]](500)[_0x64f5[9]](_0xa10dx8)} \ No newline at end of file diff --git a/server/api/voice_voicemail/voice_voicemail.events.js b/server/api/voice_voicemail/voice_voicemail.events.js index 7f8360b..d438133 100644 --- a/server/api/voice_voicemail/voice_voicemail.events.js +++ b/server/api/voice_voicemail/voice_voicemail.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const VoiceVoicemail = require('../../models').VoiceVoicemail; - -var VoiceVoicemailEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -VoiceVoicemailEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - VoiceVoicemail.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - VoiceVoicemailEvents.emit(event + ':' + doc._id, doc); - VoiceVoicemailEvents.emit(event, doc); - done(null); - } -} - -module.exports = VoiceVoicemailEvents; +var _0xa053=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x56\x6F\x69\x63\x65\x56\x6F\x69\x63\x65\x6D\x61\x69\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xa053[0];const EventEmitter=require(_0xa053[1]);const VoiceVoicemail=require(_0xa053[3])[_0xa053[2]];var VoiceVoicemailEvents= new EventEmitter();VoiceVoicemailEvents[_0xa053[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xa053[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xa053[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xa053[6]};for(var e in events){var event=events[e];VoiceVoicemail[_0xa053[7]](e,emitEvent(event))};function emitEvent(event){return function(_0x7204x8,_0x7204x9,_0x7204xa){VoiceVoicemailEvents[_0xa053[10]](event+ _0xa053[8]+ _0x7204x8[_0xa053[9]],_0x7204x8);VoiceVoicemailEvents[_0xa053[10]](event,_0x7204x8);_0x7204xa(null)}}module[_0xa053[11]]= VoiceVoicemailEvents \ No newline at end of file diff --git a/server/api/voice_voicemail/voice_voicemail.socket.js b/server/api/voice_voicemail/voice_voicemail.socket.js index 1c63f6d..e0d4319 100644 --- a/server/api/voice_voicemail/voice_voicemail.socket.js +++ b/server/api/voice_voicemail/voice_voicemail.socket.js @@ -1,32 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const VoiceVoicemailEvents = require('./voice_voicemail.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('voice_voicemail:' + event, socket); - - VoiceVoicemailEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - VoiceVoicemailEvents.removeListener(event, listener); - }; -} +var _0x70ce=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x76\x6F\x69\x63\x65\x5F\x76\x6F\x69\x63\x65\x6D\x61\x69\x6C\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x76\x6F\x69\x63\x65\x5F\x76\x6F\x69\x63\x65\x6D\x61\x69\x6C\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x70ce[0];const VoiceVoicemailEvents=require(_0x70ce[1]);var events=[_0x70ce[2],_0x70ce[3]];exports[_0x70ce[4]]= function(_0x2d21x3){for(var _0x2d21x4=0,_0x2d21x5=events[_0x70ce[5]];_0x2d21x4< _0x2d21x5;_0x2d21x4++){var _0x2d21x6=events[_0x2d21x4];var _0x2d21x7=createListener(_0x70ce[6]+ _0x2d21x6,_0x2d21x3);VoiceVoicemailEvents[_0x70ce[7]](_0x2d21x6,_0x2d21x7);_0x2d21x3[_0x70ce[7]](_0x70ce[8],removeListener(_0x2d21x6,_0x2d21x7))}};function createListener(_0x2d21x6,_0x2d21x3){return function(_0x2d21x9){_0x2d21x3[_0x70ce[9]](_0x2d21x6,_0x2d21x9)}}function removeListener(_0x2d21x6,_0x2d21x7){return function(){VoiceVoicemailEvents[_0x70ce[10]](_0x2d21x6,_0x2d21x7)}} \ No newline at end of file diff --git a/server/api/voice_voicemail_messages/index.js b/server/api/voice_voicemail_messages/index.js index 94f57a6..5d60822 100644 --- a/server/api/voice_voicemail_messages/index.js +++ b/server/api/voice_voicemail_messages/index.js @@ -1,15 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./voice_voicemail_messages.controller'); -var auth = require('../../auth/auth.service'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), auth.hasModule([7], ['admin']), controller.index); -router.get('/:id', auth.isAuthenticated(), auth.hasModule([7], ['admin']), controller.show); -router.get('/:id/download', auth.isAuthenticated(), auth.hasModule([7], ['admin']), controller.download); -router.delete('/', auth.isAuthenticated(), auth.hasModule([7], ['admin']), controller.bulkDestroy); -router.delete('/:id', auth.isAuthenticated(), auth.hasModule([7], ['admin']), controller.destroy); - -module.exports = router; +var _0x7083=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x76\x6F\x69\x63\x65\x5F\x76\x6F\x69\x63\x65\x6D\x61\x69\x6C\x5F\x6D\x65\x73\x73\x61\x67\x65\x73\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x2F\x3A\x69\x64\x2F\x64\x6F\x77\x6E\x6C\x6F\x61\x64","\x64\x6F\x77\x6E\x6C\x6F\x61\x64","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0x7083[0];var express=require(_0x7083[1]);var controller=require(_0x7083[2]);var auth=require(_0x7083[3]);var router=express.Router();router[_0x7083[9]](_0x7083[4],auth[_0x7083[5]](),auth[_0x7083[7]]([7],[_0x7083[6]]),controller[_0x7083[8]]);router[_0x7083[9]](_0x7083[10],auth[_0x7083[5]](),auth[_0x7083[7]]([7],[_0x7083[6]]),controller[_0x7083[11]]);router[_0x7083[9]](_0x7083[12],auth[_0x7083[5]](),auth[_0x7083[7]]([7],[_0x7083[6]]),controller[_0x7083[13]]);router[_0x7083[15]](_0x7083[4],auth[_0x7083[5]](),auth[_0x7083[7]]([7],[_0x7083[6]]),controller[_0x7083[14]]);router[_0x7083[15]](_0x7083[10],auth[_0x7083[5]](),auth[_0x7083[7]]([7],[_0x7083[6]]),controller[_0x7083[16]]);module[_0x7083[17]]= router \ No newline at end of file diff --git a/server/api/voice_voicemail_messages/voice_voicemail_messages.controller.js b/server/api/voice_voicemail_messages/voice_voicemail_messages.controller.js index f97d1a1..f91bc06 100644 --- a/server/api/voice_voicemail_messages/voice_voicemail_messages.controller.js +++ b/server/api/voice_voicemail_messages/voice_voicemail_messages.controller.js @@ -1,106 +1 @@ -'use strict'; - -var _ = require('lodash'); -var stream = require('stream'); -var Util = require('../../config/util'); - -var VoiceVoicemailMessages = require('../../models').VoiceVoicemailMessages; - -// Get list of voicemail messages -exports.index = function(req, res) { - return VoiceVoicemailMessages - .scope({ - method: ['mailbox', req.query] - }) - .findAndCountAll(Util.getQuery(req.query)) - .then(function(result) { - res.status(200).send(result); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -// Get a single voicemail_message -exports.show = function(req, res) { - return VoiceVoicemailMessages - .findById(req.params.id) - .then(function(voicemail_message) { - if (!voicemail_message) { - return res.sendStatus(404); - } - return res.send(voicemail_message); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes a voicemail_message from the DB. -exports.destroy = function(req, res) { - return VoiceVoicemailMessages - .findById(req.params.id) - .then(function(voicemail_message) { - if (!voicemail_message) { - return res.sendStatus(404); - } - voicemail_message.recording = null; - voicemail_message.destroy(); - }) - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes all voicemail_messages from the DB. -exports.bulkDestroy = function(req, res) { - return VoiceVoicemailMessages - .findAll({ - where: { - id: req.query.ids - }, - individualHooks: true - }) - .then(function(voicemail_messages) { - var bulkDest = []; - voicemail_messages.forEach(function(message) { - message.recording = null; - bulkDest.push(message.destroy()); - }); - return bulkDest; - }) - .all() - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.download = function(req, res) { - return VoiceVoicemailMessages - .findById(req.params.id) - .then(function(message) { - var base64String = new Buffer(message.recording, 'binary').toString('base64'); - return base64String; - }) - .then(function(base64String) { - return res.status(200).send({ - downloadString: base64String - }); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0xf8e2=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x73\x74\x72\x65\x61\x6D","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x56\x6F\x69\x63\x65\x56\x6F\x69\x63\x65\x6D\x61\x69\x6C\x4D\x65\x73\x73\x61\x67\x65\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x69\x6E\x64\x65\x78","\x6C\x6F\x67","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x6D\x61\x69\x6C\x62\x6F\x78","\x73\x63\x6F\x70\x65","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x64\x65\x73\x74\x72\x6F\x79","\x72\x65\x63\x6F\x72\x64\x69\x6E\x67","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x61\x6C\x6C","\x70\x75\x73\x68","\x66\x6F\x72\x45\x61\x63\x68","\x69\x64\x73","\x66\x69\x6E\x64\x41\x6C\x6C","\x64\x6F\x77\x6E\x6C\x6F\x61\x64","\x62\x61\x73\x65\x36\x34","\x62\x69\x6E\x61\x72\x79"];_0xf8e2[0];var _=require(_0xf8e2[1]);var stream=require(_0xf8e2[2]);var Util=require(_0xf8e2[3]);var VoiceVoicemailMessages=require(_0xf8e2[5])[_0xf8e2[4]];exports[_0xf8e2[6]]= function(_0x1e5ex5,_0x1e5ex6){return VoiceVoicemailMessages[_0xf8e2[16]]({method:[_0xf8e2[15],_0x1e5ex5[_0xf8e2[12]]]})[_0xf8e2[14]](Util[_0xf8e2[13]](_0x1e5ex5[_0xf8e2[12]]))[_0xf8e2[11]](function(_0x1e5ex8){_0x1e5ex6[_0xf8e2[10]](200)[_0xf8e2[9]](_0x1e5ex8)})[_0xf8e2[8]](function(_0x1e5ex7){console[_0xf8e2[7]](_0x1e5ex7);return handleError(_0x1e5ex6,_0x1e5ex7)})};exports[_0xf8e2[17]]= function(_0x1e5ex5,_0x1e5ex6){return VoiceVoicemailMessages[_0xf8e2[21]](_0x1e5ex5[_0xf8e2[20]][_0xf8e2[19]])[_0xf8e2[11]](function(_0x1e5ex9){if(!_0x1e5ex9){return _0x1e5ex6[_0xf8e2[18]](404)};return _0x1e5ex6[_0xf8e2[9]](_0x1e5ex9)})[_0xf8e2[8]](function(_0x1e5ex7){return handleError(_0x1e5ex6,_0x1e5ex7)})};exports[_0xf8e2[22]]= function(_0x1e5ex5,_0x1e5ex6){return VoiceVoicemailMessages[_0xf8e2[21]](_0x1e5ex5[_0xf8e2[20]][_0xf8e2[19]])[_0xf8e2[11]](function(_0x1e5ex9){if(!_0x1e5ex9){return _0x1e5ex6[_0xf8e2[18]](404)};_0x1e5ex9[_0xf8e2[23]]= null;_0x1e5ex9[_0xf8e2[22]]()})[_0xf8e2[11]](function(){return _0x1e5ex6[_0xf8e2[18]](204)})[_0xf8e2[8]](function(_0x1e5ex7){return handleError(_0x1e5ex6,_0x1e5ex7)})};exports[_0xf8e2[24]]= function(_0x1e5ex5,_0x1e5ex6){return VoiceVoicemailMessages[_0xf8e2[29]]({where:{id:_0x1e5ex5[_0xf8e2[12]][_0xf8e2[28]]},individualHooks:true})[_0xf8e2[11]](function(_0x1e5exa){var _0x1e5exb=[];_0x1e5exa[_0xf8e2[27]](function(_0x1e5exc){_0x1e5exc[_0xf8e2[23]]= null;_0x1e5exb[_0xf8e2[26]](_0x1e5exc[_0xf8e2[22]]())});return _0x1e5exb})[_0xf8e2[25]]()[_0xf8e2[11]](function(){return _0x1e5ex6[_0xf8e2[18]](204)})[_0xf8e2[8]](function(_0x1e5ex7){return handleError(_0x1e5ex6,_0x1e5ex7)})};exports[_0xf8e2[30]]= function(_0x1e5ex5,_0x1e5ex6){return VoiceVoicemailMessages[_0xf8e2[21]](_0x1e5ex5[_0xf8e2[20]][_0xf8e2[19]])[_0xf8e2[11]](function(_0x1e5exc){var _0x1e5exd= new Buffer(_0x1e5exc[_0xf8e2[23]],_0xf8e2[32]).toString(_0xf8e2[31]);return _0x1e5exd})[_0xf8e2[11]](function(_0x1e5exd){return _0x1e5ex6[_0xf8e2[10]](200)[_0xf8e2[9]]({downloadString:_0x1e5exd})})[_0xf8e2[8]](function(_0x1e5ex7){console[_0xf8e2[7]](_0x1e5ex7);return handleError(_0x1e5ex6,_0x1e5ex7)})};function handleError(_0x1e5ex6,_0x1e5ex7){return _0x1e5ex6[_0xf8e2[10]](500)[_0xf8e2[9]](_0x1e5ex7)} \ No newline at end of file diff --git a/server/api/voice_voicemail_messages/voice_voicemail_messages.events.js b/server/api/voice_voicemail_messages/voice_voicemail_messages.events.js index aa3edd9..0cd5407 100644 --- a/server/api/voice_voicemail_messages/voice_voicemail_messages.events.js +++ b/server/api/voice_voicemail_messages/voice_voicemail_messages.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const VoiceVoicemailMessages = require('../../models').VoiceVoicemailMessages; - -var VoiceVoicemailMessagesEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -VoiceVoicemailMessagesEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - VoiceVoicemailMessages.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - VoiceVoicemailMessagesEvents.emit(event + ':' + doc._id, doc); - VoiceVoicemailMessagesEvents.emit(event, doc); - done(null); - } -} - -module.exports = VoiceVoicemailMessagesEvents; +var _0x92c2=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x56\x6F\x69\x63\x65\x56\x6F\x69\x63\x65\x6D\x61\x69\x6C\x4D\x65\x73\x73\x61\x67\x65\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x92c2[0];const EventEmitter=require(_0x92c2[1]);const VoiceVoicemailMessages=require(_0x92c2[3])[_0x92c2[2]];var VoiceVoicemailMessagesEvents= new EventEmitter();VoiceVoicemailMessagesEvents[_0x92c2[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x92c2[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x92c2[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x92c2[6]};for(var e in events){var event=events[e];VoiceVoicemailMessages[_0x92c2[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xc789x8,_0xc789x9,_0xc789xa){VoiceVoicemailMessagesEvents[_0x92c2[10]](event+ _0x92c2[8]+ _0xc789x8[_0x92c2[9]],_0xc789x8);VoiceVoicemailMessagesEvents[_0x92c2[10]](event,_0xc789x8);_0xc789xa(null)}}module[_0x92c2[11]]= VoiceVoicemailMessagesEvents \ No newline at end of file diff --git a/server/api/voice_voicemail_messages/voice_voicemail_messages.socket.js b/server/api/voice_voicemail_messages/voice_voicemail_messages.socket.js index 3e1dac1..895e888 100644 --- a/server/api/voice_voicemail_messages/voice_voicemail_messages.socket.js +++ b/server/api/voice_voicemail_messages/voice_voicemail_messages.socket.js @@ -1,32 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const VoiceVoicemailMessagesEvents = require('./voice_voicemail_messages.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('voice_voicemail_messages:' + event, socket); - - VoiceVoicemailMessagesEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - VoiceVoicemailMessagesEvents.removeListener(event, listener); - }; -} +var _0xc506=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x76\x6F\x69\x63\x65\x5F\x76\x6F\x69\x63\x65\x6D\x61\x69\x6C\x5F\x6D\x65\x73\x73\x61\x67\x65\x73\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x76\x6F\x69\x63\x65\x5F\x76\x6F\x69\x63\x65\x6D\x61\x69\x6C\x5F\x6D\x65\x73\x73\x61\x67\x65\x73\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xc506[0];const VoiceVoicemailMessagesEvents=require(_0xc506[1]);var events=[_0xc506[2],_0xc506[3]];exports[_0xc506[4]]= function(_0x8ffcx3){for(var _0x8ffcx4=0,_0x8ffcx5=events[_0xc506[5]];_0x8ffcx4< _0x8ffcx5;_0x8ffcx4++){var _0x8ffcx6=events[_0x8ffcx4];var _0x8ffcx7=createListener(_0xc506[6]+ _0x8ffcx6,_0x8ffcx3);VoiceVoicemailMessagesEvents[_0xc506[7]](_0x8ffcx6,_0x8ffcx7);_0x8ffcx3[_0xc506[7]](_0xc506[8],removeListener(_0x8ffcx6,_0x8ffcx7))}};function createListener(_0x8ffcx6,_0x8ffcx3){return function(_0x8ffcx9){_0x8ffcx3[_0xc506[9]](_0x8ffcx6,_0x8ffcx9)}}function removeListener(_0x8ffcx6,_0x8ffcx7){return function(){VoiceVoicemailMessagesEvents[_0xc506[10]](_0x8ffcx6,_0x8ffcx7)}} \ No newline at end of file diff --git a/server/api/widget/index.js b/server/api/widget/index.js index 8fec508..d9a8283 100644 --- a/server/api/widget/index.js +++ b/server/api/widget/index.js @@ -1,13 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./widget.controller'); -var auth = require('../../auth/auth.service'); - -var router = express.Router(); - -router.get('/counter', auth.isAuthenticated(), auth.hasModule([2], ['admin']), controller.counter); -router.get('/table', auth.isAuthenticated(), auth.hasModule([2], ['admin']), controller.table); -router.get('/piechart', auth.isAuthenticated(), auth.hasModule([2], ['admin']), controller.piechart); - -module.exports = router; +var _0x38e1=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x77\x69\x64\x67\x65\x74\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F\x63\x6F\x75\x6E\x74\x65\x72","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x63\x6F\x75\x6E\x74\x65\x72","\x67\x65\x74","\x2F\x74\x61\x62\x6C\x65","\x74\x61\x62\x6C\x65","\x2F\x70\x69\x65\x63\x68\x61\x72\x74","\x70\x69\x65\x63\x68\x61\x72\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x38e1[0];var express=require(_0x38e1[1]);var controller=require(_0x38e1[2]);var auth=require(_0x38e1[3]);var router=express.Router();router[_0x38e1[9]](_0x38e1[4],auth[_0x38e1[5]](),auth[_0x38e1[7]]([2],[_0x38e1[6]]),controller[_0x38e1[8]]);router[_0x38e1[9]](_0x38e1[10],auth[_0x38e1[5]](),auth[_0x38e1[7]]([2],[_0x38e1[6]]),controller[_0x38e1[11]]);router[_0x38e1[9]](_0x38e1[12],auth[_0x38e1[5]](),auth[_0x38e1[7]]([2],[_0x38e1[6]]),controller[_0x38e1[13]]);module[_0x38e1[14]]= router \ No newline at end of file diff --git a/server/api/widget/widget.controller.js b/server/api/widget/widget.controller.js index dbcb701..064299c 100644 --- a/server/api/widget/widget.controller.js +++ b/server/api/widget/widget.controller.js @@ -1,147 +1 @@ -'use strict'; - -var _ = require('lodash'); -var util = require('util'); -var sequelize = require('../../models').sequelize; -var reportBuildUtils = require('../../utils/report_build'); -var Promise = require('bluebird'); - -// var ReportAgent = require('../../models').ReportAgent; -// var ReportCall = require('../../models').ReportCall; -// var ReportDial = require('../../models').ReportDial; -// var ReportMember = require('../../models').ReportMember; -// var ReportQueue = require('../../models').ReportQueue; - - - -exports.counter = function(req, res) { - return Promise - .all([]) - .then(function() { - return req.query.table; - }) - .then(reportBuildUtils.buildFilter(req.user)) - .then(function(filter) { - var query = util.format("SELECT %s FROM %s", req.query.select, req.query.table); - if (req.query.condition) { - query += util.format(" WHERE %s", decodeURIComponent(req.query.condition)) - } - if (!filter || filter !== 'empty') { - if (filter) { - query += req.query.condition ? ' AND ' + filter : ' WHERE ' + filter; - } - console.log(' ==== RESULTING QUERY ===='); - console.log(query); - console.log(' ========================='); - return sequelize.query(query, { - type: sequelize.QueryTypes.SELECT - }); - } else { - console.log(' ==== RESULTING QUERY ===='); - console.log('NO SUFFICIENT PERMISSIONS'); - console.log(' ========================='); - return []; - } - }) - .then(function(result) { - return res.status(200).send({ - result: result - }); - }) - .catch(function(err) { - console.log(err); - return handleError(res, err); - }); -}; - -exports.table = function(req, res) { - var columns = []; - var elem; - if (req.query.fields) { - if (_.isArray(req.query.fields)) { - req.query.fields.forEach(function(element) { - elem = JSON.parse(element); - if (elem.column && elem.alias) { - columns.push(elem.column + ' AS "' + elem.alias + '"'); - } - }); - } else if (_.isString(req.query.fields)) { - elem = JSON.parse(req.query.fields); - if (elem.column && elem.alias) { - columns.push(elem.column + ' AS "' + elem.alias + '"'); - } - } - } - var select = columns.length ? columns.join(',') : '*'; - sequelize.query(util.format("SELECT %s FROM %s WHERE %s", select, 'report' + req.query.table, decodeURIComponent(req.query.condition)), { - type: sequelize.QueryTypes.SELECT - }) - .then(function(result) { - return res.status(200).send(result); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.piechart = function(req, res) { - return Promise - .all([]) - .then(function() { - return req.query.table; - }) - .then(reportBuildUtils.buildFilter(req.user)) - .then(function(filter) { - var columns = []; - var elem; - if (req.query.fields) { - if (_.isArray(req.query.fields)) { - req.query.fields.forEach(function(element) { - elem = JSON.parse(element); - if (elem.column && elem.alias) { - columns.push(elem.column + ' AS "' + elem.alias + '"'); - } - }); - } else if (_.isString(req.query.fields)) { - elem = JSON.parse(req.query.fields); - if (elem.column && elem.alias) { - columns.push(elem.column + ' AS "' + elem.alias + '"'); - } - } - } - var select = columns.length ? columns.join(',') : '*'; - var where = ''; - if (req.query.condition !== 'undefined') { - where = util.format(' WHERE %s', decodeURIComponent(req.query.condition)); - } - if (!filter || filter !== 'empty') { - if (filter) { - where += ' AND ' + filter; - } - var query = util.format("SELECT %s FROM %s%s", select, req.query.table, where); - console.log(' ==== RESULTING QUERY ===='); - console.log(query); - console.log(' ========================='); - return sequelize.query(query, { - type: sequelize.QueryTypes.SELECT - }); - } else { - console.log(' ==== RESULTING QUERY ===='); - console.log('NO SUFFICIENT PERMISSIONS'); - console.log(' ========================='); - return []; - } - }) - .then(function(result) { - return res.status(200).send({ - result: result - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0xe748=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x75\x74\x69\x6C","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x75\x74\x69\x6C\x73\x2F\x72\x65\x70\x6F\x72\x74\x5F\x62\x75\x69\x6C\x64","\x62\x6C\x75\x65\x62\x69\x72\x64","\x63\x6F\x75\x6E\x74\x65\x72","\x6C\x6F\x67","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x53\x45\x4C\x45\x43\x54\x20\x25\x73\x20\x46\x52\x4F\x4D\x20\x25\x73","\x73\x65\x6C\x65\x63\x74","\x71\x75\x65\x72\x79","\x74\x61\x62\x6C\x65","\x66\x6F\x72\x6D\x61\x74","\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E","\x20\x57\x48\x45\x52\x45\x20\x25\x73","\x65\x6D\x70\x74\x79","\x20\x41\x4E\x44\x20","\x20\x57\x48\x45\x52\x45\x20","\x20\x3D\x3D\x3D\x3D\x20\x52\x45\x53\x55\x4C\x54\x49\x4E\x47\x20\x51\x55\x45\x52\x59\x20\x3D\x3D\x3D\x3D","\x20\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D","\x53\x45\x4C\x45\x43\x54","\x51\x75\x65\x72\x79\x54\x79\x70\x65\x73","\x4E\x4F\x20\x53\x55\x46\x46\x49\x43\x49\x45\x4E\x54\x20\x50\x45\x52\x4D\x49\x53\x53\x49\x4F\x4E\x53","\x75\x73\x65\x72","\x62\x75\x69\x6C\x64\x46\x69\x6C\x74\x65\x72","\x61\x6C\x6C","\x66\x69\x65\x6C\x64\x73","\x69\x73\x41\x72\x72\x61\x79","\x70\x61\x72\x73\x65","\x63\x6F\x6C\x75\x6D\x6E","\x61\x6C\x69\x61\x73","\x20\x41\x53\x20\x22","\x22","\x70\x75\x73\x68","\x66\x6F\x72\x45\x61\x63\x68","\x69\x73\x53\x74\x72\x69\x6E\x67","\x6C\x65\x6E\x67\x74\x68","\x2C","\x6A\x6F\x69\x6E","\x2A","\x53\x45\x4C\x45\x43\x54\x20\x25\x73\x20\x46\x52\x4F\x4D\x20\x25\x73\x20\x57\x48\x45\x52\x45\x20\x25\x73","\x72\x65\x70\x6F\x72\x74","\x70\x69\x65\x63\x68\x61\x72\x74","","\x75\x6E\x64\x65\x66\x69\x6E\x65\x64","\x53\x45\x4C\x45\x43\x54\x20\x25\x73\x20\x46\x52\x4F\x4D\x20\x25\x73\x25\x73"];_0xe748[0];var _=require(_0xe748[1]);var util=require(_0xe748[2]);var sequelize=require(_0xe748[4])[_0xe748[3]];var reportBuildUtils=require(_0xe748[5]);var Promise=require(_0xe748[6]);exports[_0xe748[7]]= function(_0x784bx6,_0x784bx7){return Promise[_0xe748[30]]([])[_0xe748[12]](function(){return _0x784bx6[_0xe748[15]][_0xe748[16]]})[_0xe748[12]](reportBuildUtils[_0xe748[29]](_0x784bx6[_0xe748[28]]))[_0xe748[12]](function(_0x784bxa){var _0x784bxb=util[_0xe748[17]](_0xe748[13],_0x784bx6[_0xe748[15]][_0xe748[14]],_0x784bx6[_0xe748[15]][_0xe748[16]]);if(_0x784bx6[_0xe748[15]][_0xe748[18]]){_0x784bxb+= util[_0xe748[17]](_0xe748[19],decodeURIComponent(_0x784bx6[_0xe748[15]][_0xe748[18]]))};if(!_0x784bxa|| _0x784bxa!== _0xe748[20]){if(_0x784bxa){_0x784bxb+= _0x784bx6[_0xe748[15]][_0xe748[18]]?_0xe748[21]+ _0x784bxa:_0xe748[22]+ _0x784bxa};console[_0xe748[8]](_0xe748[23]);console[_0xe748[8]](_0x784bxb);console[_0xe748[8]](_0xe748[24]);return sequelize[_0xe748[15]](_0x784bxb,{type:sequelize[_0xe748[26]][_0xe748[25]]})}else {console[_0xe748[8]](_0xe748[23]);console[_0xe748[8]](_0xe748[27]);console[_0xe748[8]](_0xe748[24]);return []}})[_0xe748[12]](function(_0x784bx9){return _0x784bx7[_0xe748[11]](200)[_0xe748[10]]({result:_0x784bx9})})[_0xe748[9]](function(_0x784bx8){console[_0xe748[8]](_0x784bx8);return handleError(_0x784bx7,_0x784bx8)})};exports[_0xe748[16]]= function(_0x784bx6,_0x784bx7){var _0x784bxc=[];var _0x784bxd;if(_0x784bx6[_0xe748[15]][_0xe748[31]]){if(_[_0xe748[32]](_0x784bx6[_0xe748[15]][_0xe748[31]])){_0x784bx6[_0xe748[15]][_0xe748[31]][_0xe748[39]](function(_0x784bxe){_0x784bxd= JSON[_0xe748[33]](_0x784bxe);if(_0x784bxd[_0xe748[34]]&& _0x784bxd[_0xe748[35]]){_0x784bxc[_0xe748[38]](_0x784bxd[_0xe748[34]]+ _0xe748[36]+ _0x784bxd[_0xe748[35]]+ _0xe748[37])}})}else {if(_[_0xe748[40]](_0x784bx6[_0xe748[15]][_0xe748[31]])){_0x784bxd= JSON[_0xe748[33]](_0x784bx6[_0xe748[15]][_0xe748[31]]);if(_0x784bxd[_0xe748[34]]&& _0x784bxd[_0xe748[35]]){_0x784bxc[_0xe748[38]](_0x784bxd[_0xe748[34]]+ _0xe748[36]+ _0x784bxd[_0xe748[35]]+ _0xe748[37])}}}};var _0x784bxf=_0x784bxc[_0xe748[41]]?_0x784bxc[_0xe748[43]](_0xe748[42]):_0xe748[44];sequelize[_0xe748[15]](util[_0xe748[17]](_0xe748[45],_0x784bxf,_0xe748[46]+ _0x784bx6[_0xe748[15]][_0xe748[16]],decodeURIComponent(_0x784bx6[_0xe748[15]][_0xe748[18]])),{type:sequelize[_0xe748[26]][_0xe748[25]]})[_0xe748[12]](function(_0x784bx9){return _0x784bx7[_0xe748[11]](200)[_0xe748[10]](_0x784bx9)})[_0xe748[9]](function(_0x784bx8){return handleError(_0x784bx7,_0x784bx8)})};exports[_0xe748[47]]= function(_0x784bx6,_0x784bx7){return Promise[_0xe748[30]]([])[_0xe748[12]](function(){return _0x784bx6[_0xe748[15]][_0xe748[16]]})[_0xe748[12]](reportBuildUtils[_0xe748[29]](_0x784bx6[_0xe748[28]]))[_0xe748[12]](function(_0x784bxa){var _0x784bxc=[];var _0x784bxd;if(_0x784bx6[_0xe748[15]][_0xe748[31]]){if(_[_0xe748[32]](_0x784bx6[_0xe748[15]][_0xe748[31]])){_0x784bx6[_0xe748[15]][_0xe748[31]][_0xe748[39]](function(_0x784bxe){_0x784bxd= JSON[_0xe748[33]](_0x784bxe);if(_0x784bxd[_0xe748[34]]&& _0x784bxd[_0xe748[35]]){_0x784bxc[_0xe748[38]](_0x784bxd[_0xe748[34]]+ _0xe748[36]+ _0x784bxd[_0xe748[35]]+ _0xe748[37])}})}else {if(_[_0xe748[40]](_0x784bx6[_0xe748[15]][_0xe748[31]])){_0x784bxd= JSON[_0xe748[33]](_0x784bx6[_0xe748[15]][_0xe748[31]]);if(_0x784bxd[_0xe748[34]]&& _0x784bxd[_0xe748[35]]){_0x784bxc[_0xe748[38]](_0x784bxd[_0xe748[34]]+ _0xe748[36]+ _0x784bxd[_0xe748[35]]+ _0xe748[37])}}}};var _0x784bxf=_0x784bxc[_0xe748[41]]?_0x784bxc[_0xe748[43]](_0xe748[42]):_0xe748[44];var _0x784bx10=_0xe748[48];if(_0x784bx6[_0xe748[15]][_0xe748[18]]!== _0xe748[49]){_0x784bx10= util[_0xe748[17]](_0xe748[19],decodeURIComponent(_0x784bx6[_0xe748[15]][_0xe748[18]]))};if(!_0x784bxa|| _0x784bxa!== _0xe748[20]){if(_0x784bxa){_0x784bx10+= _0xe748[21]+ _0x784bxa};var _0x784bxb=util[_0xe748[17]](_0xe748[50],_0x784bxf,_0x784bx6[_0xe748[15]][_0xe748[16]],_0x784bx10);console[_0xe748[8]](_0xe748[23]);console[_0xe748[8]](_0x784bxb);console[_0xe748[8]](_0xe748[24]);return sequelize[_0xe748[15]](_0x784bxb,{type:sequelize[_0xe748[26]][_0xe748[25]]})}else {console[_0xe748[8]](_0xe748[23]);console[_0xe748[8]](_0xe748[27]);console[_0xe748[8]](_0xe748[24]);return []}})[_0xe748[12]](function(_0x784bx9){return _0x784bx7[_0xe748[11]](200)[_0xe748[10]]({result:_0x784bx9})})[_0xe748[9]](function(_0x784bx8){return handleError(_0x784bx7,_0x784bx8)})};function handleError(_0x784bx7,_0x784bx8){return _0x784bx7[_0xe748[11]](500)[_0xe748[10]](_0x784bx8)} \ No newline at end of file diff --git a/server/api/xchatty/index.js b/server/api/xchatty/index.js index d408579..239719e 100644 --- a/server/api/xchatty/index.js +++ b/server/api/xchatty/index.js @@ -1,28 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./xchatty.controller'); -var license = require('../../config/license/license.service'); - -var router = express.Router(); - -router.get('/jquery', controller.getJqueryLibrary); -router.get('/assets', controller.getAssets); - -router.get('/submit', controller.submitEnquiry); -router.get('/rating', controller.setRating); - -router.get('/:id', license.isValidDate(), license.hasChat(), controller.getJsByWebsite); -router.get('/:id/abandon', license.isValidDate(), license.hasChat(), controller.abandonCustomer); -router.get('/:id/html', license.isValidDate(), license.hasChat(), controller.getHtmlByWebsite); -router.get('/:id/proactive', license.isValidDate(), license.hasChat(), controller.getProactiveActionsByWebsite); -router.get('/:id/read', license.isValidDate(), license.hasChat(), controller.getMessages); -router.get('/:id/send', license.isValidDate(), license.hasChat(), controller.sendMessage); -router.get('/:id/signout', license.isValidDate(), license.hasChat(), controller.signoutCustomer); -router.get('/:id/signup', license.isValidDate(), license.hasChat(), controller.signupCustomer); -router.get('/:id/status', license.isValidDate(), license.hasChat(), controller.getStatusByWebsite); -router.get('/:id/styles', license.isValidDate(), license.hasChat(), controller.getStyleByWebsite); -router.get('/:id/transcript', license.isValidDate(), license.hasChat(), controller.getTranscript); -router.get('/:id/unserved', license.isValidDate(), license.hasChat(), controller.unservedCustomer); - -module.exports = router; +var _0xca83=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x78\x63\x68\x61\x74\x74\x79\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F\x6A\x71\x75\x65\x72\x79","\x67\x65\x74\x4A\x71\x75\x65\x72\x79\x4C\x69\x62\x72\x61\x72\x79","\x67\x65\x74","\x2F\x61\x73\x73\x65\x74\x73","\x67\x65\x74\x41\x73\x73\x65\x74\x73","\x2F\x73\x75\x62\x6D\x69\x74","\x73\x75\x62\x6D\x69\x74\x45\x6E\x71\x75\x69\x72\x79","\x2F\x72\x61\x74\x69\x6E\x67","\x73\x65\x74\x52\x61\x74\x69\x6E\x67","\x2F\x3A\x69\x64","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x68\x61\x73\x43\x68\x61\x74","\x67\x65\x74\x4A\x73\x42\x79\x57\x65\x62\x73\x69\x74\x65","\x2F\x3A\x69\x64\x2F\x61\x62\x61\x6E\x64\x6F\x6E","\x61\x62\x61\x6E\x64\x6F\x6E\x43\x75\x73\x74\x6F\x6D\x65\x72","\x2F\x3A\x69\x64\x2F\x68\x74\x6D\x6C","\x67\x65\x74\x48\x74\x6D\x6C\x42\x79\x57\x65\x62\x73\x69\x74\x65","\x2F\x3A\x69\x64\x2F\x70\x72\x6F\x61\x63\x74\x69\x76\x65","\x67\x65\x74\x50\x72\x6F\x61\x63\x74\x69\x76\x65\x41\x63\x74\x69\x6F\x6E\x73\x42\x79\x57\x65\x62\x73\x69\x74\x65","\x2F\x3A\x69\x64\x2F\x72\x65\x61\x64","\x67\x65\x74\x4D\x65\x73\x73\x61\x67\x65\x73","\x2F\x3A\x69\x64\x2F\x73\x65\x6E\x64","\x73\x65\x6E\x64\x4D\x65\x73\x73\x61\x67\x65","\x2F\x3A\x69\x64\x2F\x73\x69\x67\x6E\x6F\x75\x74","\x73\x69\x67\x6E\x6F\x75\x74\x43\x75\x73\x74\x6F\x6D\x65\x72","\x2F\x3A\x69\x64\x2F\x73\x69\x67\x6E\x75\x70","\x73\x69\x67\x6E\x75\x70\x43\x75\x73\x74\x6F\x6D\x65\x72","\x2F\x3A\x69\x64\x2F\x73\x74\x61\x74\x75\x73","\x67\x65\x74\x53\x74\x61\x74\x75\x73\x42\x79\x57\x65\x62\x73\x69\x74\x65","\x2F\x3A\x69\x64\x2F\x73\x74\x79\x6C\x65\x73","\x67\x65\x74\x53\x74\x79\x6C\x65\x42\x79\x57\x65\x62\x73\x69\x74\x65","\x2F\x3A\x69\x64\x2F\x74\x72\x61\x6E\x73\x63\x72\x69\x70\x74","\x67\x65\x74\x54\x72\x61\x6E\x73\x63\x72\x69\x70\x74","\x2F\x3A\x69\x64\x2F\x75\x6E\x73\x65\x72\x76\x65\x64","\x75\x6E\x73\x65\x72\x76\x65\x64\x43\x75\x73\x74\x6F\x6D\x65\x72","\x65\x78\x70\x6F\x72\x74\x73"];_0xca83[0];var express=require(_0xca83[1]);var controller=require(_0xca83[2]);var license=require(_0xca83[3]);var router=express.Router();router[_0xca83[6]](_0xca83[4],controller[_0xca83[5]]);router[_0xca83[6]](_0xca83[7],controller[_0xca83[8]]);router[_0xca83[6]](_0xca83[9],controller[_0xca83[10]]);router[_0xca83[6]](_0xca83[11],controller[_0xca83[12]]);router[_0xca83[6]](_0xca83[13],license[_0xca83[14]](),license[_0xca83[15]](),controller[_0xca83[16]]);router[_0xca83[6]](_0xca83[17],license[_0xca83[14]](),license[_0xca83[15]](),controller[_0xca83[18]]);router[_0xca83[6]](_0xca83[19],license[_0xca83[14]](),license[_0xca83[15]](),controller[_0xca83[20]]);router[_0xca83[6]](_0xca83[21],license[_0xca83[14]](),license[_0xca83[15]](),controller[_0xca83[22]]);router[_0xca83[6]](_0xca83[23],license[_0xca83[14]](),license[_0xca83[15]](),controller[_0xca83[24]]);router[_0xca83[6]](_0xca83[25],license[_0xca83[14]](),license[_0xca83[15]](),controller[_0xca83[26]]);router[_0xca83[6]](_0xca83[27],license[_0xca83[14]](),license[_0xca83[15]](),controller[_0xca83[28]]);router[_0xca83[6]](_0xca83[29],license[_0xca83[14]](),license[_0xca83[15]](),controller[_0xca83[30]]);router[_0xca83[6]](_0xca83[31],license[_0xca83[14]](),license[_0xca83[15]](),controller[_0xca83[32]]);router[_0xca83[6]](_0xca83[33],license[_0xca83[14]](),license[_0xca83[15]](),controller[_0xca83[34]]);router[_0xca83[6]](_0xca83[35],license[_0xca83[14]](),license[_0xca83[15]](),controller[_0xca83[36]]);router[_0xca83[6]](_0xca83[37],license[_0xca83[14]](),license[_0xca83[15]](),controller[_0xca83[38]]);module[_0xca83[39]]= router \ No newline at end of file diff --git a/server/api/xchatty/xchatty.controller.js b/server/api/xchatty/xchatty.controller.js index 527adb7..195ecc2 100644 --- a/server/api/xchatty/xchatty.controller.js +++ b/server/api/xchatty/xchatty.controller.js @@ -1,1286 +1 @@ -'use strict'; - -var _ = require('lodash'); -var jsmin = require('jsmin').jsmin; -var Mustache = require('mustache'); -var querystring = require('querystring'); -var path = require('path'); -var md5 = require('md5'); -var fs = require('fs'); -var UAParser = require('ua-parser-js'); -var uaParser = new UAParser(); -var languageParser = require('accept-language-parser'); -var ipaddr = require('ipaddr.js'); -var geoip = require('geoip-lite'); -var csv = require('to-csv'); -var util = require('util'); -var moment = require('moment'); - -var Scheduler = require('../../config/routing/scheduler'); -var config = require('../../config/environment'); -var xchatty_components = require('../../components/xchatty'); -var Util = require('../../config/util'); -var license = require('../../config/license/license.service'); -var demoLicense = { - users: 1, - agents: 1, - telephones: 0, - chat: false, - mail: false, - fax: false, - messaging: false, - cm: false, - dialer: false, - jscripty: false, - update: false, - custom: false, - description: 'DEMO LICENSE' -}; - -var sequelize = require('../../models').sequelize; -var User = require('../../models').User; -var Agent = require('../../models').User; -var ChatRoom = require('../../models').ChatRoom; -var ChatEnquiry = require('../../models').ChatEnquiry; -var ChatVisitor = require('../../models').ChatVisitor; -var ChatMessage = require('../../models').ChatMessage; -var ChatWebsite = require('../../models').ChatWebsite; -var ChatWebsitesField = require('../../models').ChatWebsitesField; -var ChatProactiveAction = require('../../models').ChatProactiveAction; -var ReportChatSession = require('../../models').ReportChatSession; -var ChatQueue = require('../../models').ChatQueue; -var License = require('../../models').License; -var Xchatty = require('../../models').Xchatty; -var Setting = require('../../models').Setting; -const Contact = require('../../models').Contact; -var Interval = require('../../models').Interval; - -const weekDaysCollection = { - mon: 1, - tue: 2, - wed: 3, - thu: 4, - fri: 5, - sat: 6, - sun: 7 -}; - -const monthsCollection = { - jan: 1, - feb: 2, - mar: 3, - apr: 4, - may: 5, - jun: 6, - jul: 7, - aug: 8, - sep: 9, - oct: 10, - nov: 11, - dec: 12 -}; - -var id = 1; - -// Get list of xchattys -exports.index = function(req, res, next) { - return Xchatty - .findAll() - .then(function(xchattys) { - return res.status(200).send(xchattys); - }) - .catch(function(err) { - return next(err); - }); -}; - -exports.getJsByWebsite = function(req, res, next) { - - // TO DO: Find the configuration of the website and replace configuration in the file - ChatWebsite - .findById(req.params.id) - .then(function(chatWebsite) { - res.set({ - 'Content-Type': 'application/javascript', - 'x-timestamp': Date.now(), - 'x-sent': true - }); - - var js = xchatty_components.js; - /*jshint multistr: true */ - var configJS = { - websiteId: req.params.id, - // rootPath: path.join(chatWebsite.remote, 'api', 'xchatty/'), - rootPath: Util.stripTrailingSlash(chatWebsite.remote) + '/api/xchatty/', - signedUp: 'false', - windowFocused: 'false', - isNewPage: 'true', - processingSignUp: 'false', - processingEnquiry: 'false', - processingSend: 'false', - processingRating: 'false', - visitorFullname: '""', - visitorAvatar: '""', - timerReadMessages: 'null', - timerCheckStatus: 'null', - isOnline: 'false', - decayHistory: 0, - defaultTimeout: 5000, - isInitialStatusCheck: 'true', - muteNotificationSoundOnce: 'false', - assetBase: Util.stripTrailingSlash(chatWebsite.remote) + '/api/xchatty/assets', - hasSessionSaf: 'false', - restoreOpenState: 'false', - animateHover: chatWebsite.animation, - hideEmail: 'false', - hideOffline: 'false', - headerShape: chatWebsite.header_shape, - HeaderOnline: chatWebsite.header_online, - OnlineMessage: chatWebsite.online_message, - UsernamePlaceholder: chatWebsite.username_placeholder, - EmailPlaceholder: chatWebsite.email_placeholder, - StartChatButtonText: chatWebsite.start_chat_button, - OfflineMessage: chatWebsite.offline_message, - HeaderOffline: chatWebsite.header_offline, - EnquiryMessagePlaceholder: chatWebsite.enquiry_message_placeholder, - EnquiryButtonText: chatWebsite.enquiry_button, - downloadTranscript: chatWebsite.download_transcript, - RatingMessage: chatWebsite.rating_message, - RatingSend: chatWebsite.rating_send, - RatingSkip: chatWebsite.rating_skip, - MessageAgentsBusy: chatWebsite.agents_busy, - NameTitle: chatWebsite.name_title, - EmailTitle: chatWebsite.email_title, - MessageTitle: chatWebsite.message_title - }; - - js = Mustache.render(js, configJS); - res.send(js); - - }) - .catch(function(err) { - next(err); - }); - -}; - -exports.getStyleByWebsite = function(req, res, next) { - - // TO DO: Find the configuration of the website and replace configuration in the file - ChatWebsite - .findById(req.params.id) - .then(function(chatWebsite) { - - res.set({ - 'Content-Type': 'text/css', - 'x-timestamp': Date.now(), - 'x-sent': true - }); - - var css = xchatty_components.css; - - var configCSS = { - // assetBase: path.join(chatWebsite.remote, 'api', 'xchatty', - // 'assets'), - assetBase: Util.stripTrailingSlash(chatWebsite.remote) + '/api/xchatty/assets', - color: chatWebsite.color, - colorFocus: chatWebsite.color_focus, - colorButton: chatWebsite.color_button - }; - - css = Mustache.render(css, configCSS); - res.send(css); - }) - .catch(function(err) { - next(err); - }); -}; - -exports.getAssets = function(req, res, next) { - if (req.query.hasOwnProperty('uploaded')) { - res.download(path.join(config.root, 'server', 'files', req.query.resource)); - } else { - res.download(path.join(config.root, 'server', 'components', 'xchatty', 'assets', req.query.resource)); - } -}; - -exports.getJqueryLibrary = function(req, res, next) { - - // TODO: Find the configuration of the website and replace configuration in the file - res.set({ - 'Content-Type': 'application/javascript', - 'x-timestamp': Date.now(), - 'x-sent': true - }); - - var jquery = xchatty_components.jquery; - res.send(jquery); - -}; - -exports.getStatus = function(req, res, next) { - - if (!req.session.xchatty) { - req.session.xchatty = {}; - } - - var _jsonResponse = {}; - - return Agent - .findAll({ - where: { - online: true, - role: 'agent' - } - }) - .then(function(agents) { - if (req.query.data.open_state) - req.session.xchatty.open_state = req.query.data.open_state === 'true' ? true : false; - _jsonResponse = { - success: true, - has_session_saf: null, - signed_up: req.session.xchatty.room_id ? true : false, - fullname: req.session.xchatty.fullname ? req.session.xchatty.fullname : '', - email: req.session.xchatty.email ? req.session.xchatty.email : '', - avatar: req.session.xchatty.avatar ? req.session.xchatty.avatar : '', - open_state: req.session.xchatty.open_state || req.session.xchatty.room_id ? true : false, - online: agents.length ? true : false, - is_unserved: false, - room_id: 0 - }; - return; - }) - .then(function() { - if (req.session.xchatty.visitor_id) { - return ChatRoom - .findOne({ - where: { - ChatVisitorId: req.session.xchatty.visitor_id, - status: 'OPEN', - token: { - $ne: '' - } - } - }); - } - return; - }) - .then(function(chatRoom) { - if (chatRoom) { - req.session.xchatty.room_id = chatRoom.id; - _jsonResponse.room_id = chatRoom.id; - _jsonResponse.signed_up = true; - } else { - _jsonResponse.signed_up = false; - } - return; - }) - .then(function() { - if (req.session.xchatty.visitor_id) { - return ChatVisitor - .findOne({ - where: { - id: req.session.xchatty.visitor_id, - status: 'unserved' - } - }) - } - return; - }) - .then(function(visitor) { - if (visitor) { - _jsonResponse.is_unserved = true; - } - return res.send(req.query.callback + '(' + JSON.stringify(_jsonResponse) + ')'); - }) - .catch(function(err) { - return next(err); - }); -}; - -exports.getMessages = function(req, res, next) { - - var _websiteId = req.params.id; - - /*jshint multistr: true */ - var condition = { - where: { - ChatRoomId: req.session.xchatty[_websiteId].room_id - }, - include: [{ - model: User, - attributes: ['id', 'name', 'fullname', 'email'] - }, { - model: ChatVisitor, - attributes: ['id', 'fullname', 'email'] - }] - }; - - if (req.query.data.is_new_page === 'false') { - condition.where.id = { - $gt: req.query.data.last_id - }; - } - - ChatMessage - .findAll(condition) - .then(function(chatMessages) { - var json = { - success: true, - messages: chatMessages, - composing: false, - composing_fullname: null - }; - - res.send(req.query.callback + '(' + JSON.stringify(json) + ')'); - }) - .catch(function(err) { - next(err); - }); -}; - -exports.sendMessage = function(req, res, next) { - - var _websiteId = req.params.id; - - /*jshint multistr: true */ - var condition = { - where: { - ChatRoomId: req.session.xchatty[_websiteId].room_id - }, - include: [{ - model: User, - attributes: ['id', 'name', 'fullname', 'email'] - }, { - model: ChatVisitor, - attributes: ['id', 'fullname', 'email'] - }] - }; - - if (req.query.data.is_new_page === 'false') { - condition.where.id = { - $gt: req.query.data.last_id - }; - } - - ChatMessage - .create({ - body: req.query.data.Message.message, - ChatRoomId: req.session.xchatty[_websiteId].room_id, - ChatVisitorId: req.session.xchatty[_websiteId].visitor_id - }) - .then(function(chatMessage) { - ChatMessage - .findAll(condition) - .then(function(chatMessages) { - var json = { - errors: [], - success: true, - data: chatMessage, - messages: chatMessages - }; - - res.send(req.query.callback + '(' + JSON.stringify(json) + ')'); - }) - .catch(function(err) { - next(err); - }); - }) - .catch(function(err) { - next(err); - }); - -}; - -exports.signoutCustomer = function(req, res, next) { - - var _websiteId = req.params.id; - - return ChatRoom - .findById(req.session.xchatty[_websiteId].room_id) - .then(function(chatRoom) { - return chatRoom - .update({ - status: 'CLOSED', - completeReason: 'requester' - }); - }) - .then(function() { - var json = { - success: true, - errors: [] - }; - req.session.xchatty[_websiteId] = {}; - res.send(req.query.callback + '(' + JSON.stringify(json) + ')'); - }) - .catch(function(err) { - next(err); - }); -}; - -exports.signupCustomer = function(req, res, next) { - - var _websiteId = req.params.id; - - var ua = uaParser.setUA(req.headers['user-agent']).getResult(); - var languages = languageParser.parse(req.headers['accept-language']); - var remoteAddress = req.headers['x-forwarded-for'] ? req.headers['x-forwarded-for'] : req.connection.remoteAddress || req.ip; - - var body = { - fullname: req.query.data.Discussion.fullname, - email: req.query.data.Discussion.email, - remote_address: remoteAddress, - user_agent: req.headers['user-agent'], - visitor_language: req.headers['accept-language'], - referer: req.headers.referer, - origin: 'webchat', - browser: ua.browser.name + ' ' + ua.browser.version, - engine: ua.engine.name + ' ' + ua.engine.version, - os: ua.os.name + ' ' + ua.os.version, - device: ua.device.model ? ua.device.model + ' ' + ua.device.vendor + ' ' + ua.device.type : null, - ChatWebsiteId: req.query.chatWebsiteId - }; - - if (req.query.data.Discussion.data1 && req.query.data.Discussion.labelData1) { - body.data1 = req.query.data.Discussion.data1; - if (_.isArray(body.data1)) { - body.data1 = _.join(body.data1, ','); - } - body.labelData1 = req.query.data.Discussion.labelData1; - } - if (req.query.data.Discussion.data2 && req.query.data.Discussion.labelData2) { - body.data2 = req.query.data.Discussion.data2; - if (_.isArray(body.data2)) { - body.data2 = _.join(body.data2, ','); - } - body.labelData2 = req.query.data.Discussion.labelData2; - } - if (req.query.data.Discussion.data3 && req.query.data.Discussion.labelData3) { - body.data3 = req.query.data.Discussion.data3; - if (_.isArray(body.data3)) { - body.data3 = _.join(body.data3, ','); - } - body.labelData3 = req.query.data.Discussion.labelData3; - } - - var _chatVisitor, _chatWebsite, _chatRoom; - - return ChatVisitor - .create(body) - .then(function(chatVisitor) { - - _chatVisitor = chatVisitor; - return ChatWebsite - .findById(_chatVisitor.ChatWebsiteId); - }) - .then(function(website) { - _chatWebsite = website; - - if (_chatWebsite.ListId) { - return Contact - .findOrCreate({ - where: { - email: _chatVisitor.email, - }, - defaults: { - email: _chatVisitor.email, - firstName: _chatVisitor.fullname, - ListId: _chatWebsite.ListId - } - }); - } - }) - .then(function() { - return ChatRoom - .create({ - type: 'external', - ChatVisitorId: _chatVisitor.id, - ChatWebsiteId: _chatWebsite.id, - contact: _chatVisitor.email, - website: _chatWebsite.name - }); - }) - .then(function(chatRoom) { - _chatRoom = chatRoom; - - var scheduler = new Scheduler({ - channel: 'chat', - uniqueid: util.format('%s.%s', moment().unix(), _chatRoom.id), - roomid: _chatRoom.id, - websiteid: _chatWebsite.id, - websitename: _chatWebsite.name, - websiteaddress: _chatWebsite.address, - accountid: _chatWebsite.id, - accountname: _chatWebsite.name, - accountaddress: _chatWebsite.address, - visitorid: _chatVisitor.id, - visitorname: _chatVisitor.fullname, - visitoremail: _chatVisitor.email - }) - - scheduler.init(); - - req.session.xchatty[_websiteId].fullname = _chatVisitor.fullname; - req.session.xchatty[_websiteId].email = _chatVisitor.email; - req.session.xchatty[_websiteId].avatar = md5(_chatVisitor.email).toString('base64'); - req.session.xchatty[_websiteId].visitor_id = _chatVisitor.id; - - var json = { - success: true, - errors: [], - chatVisitor: { - id: _chatVisitor.id - } - }; - - /*jshint multistr: true */ - res.send(req.query.callback + '(' + JSON.stringify(json) + ')'); - }) - .catch(function(err) { - next(err); - }); -}; - -exports.unservedCustomer = function(req, res, next) { - - var _websiteId = req.params.id; - - return ChatVisitor - .findById(req.session.xchatty[_websiteId].visitor_id) - .then(function(chatVisitor) { - return chatVisitor - .update({ - status: 'unserved' - }); - }) - .then(function() { - var json = { - success: true, - errors: [] - }; - req.session.xchatty[_websiteId] = {}; - res.send(req.query.callback + '(' + JSON.stringify(json) + ')'); - }) - .catch(function(err) { - next(err); - }); -}; - -exports.submitEnquiry = function(req, res, next) { - - return sequelize.transaction().then(function(t) { - - var remoteAddress = req.headers['x-forwarded-for'] ? req.headers['x-forwarded-for'] : req.connection.remoteAddress || req.ip; - - var ua = uaParser.setUA(req.headers['user-agent']).getResult(); - var languages = languageParser.parse(req.headers['accept-language']); - var body = { - fullname: req.query.data.Enquiry.fullname, - email: req.query.data.Enquiry.email, - remote_address: remoteAddress, - user_agent: req.headers['user-agent'], - visitor_language: req.headers['accept-language'], - browser: ua.browser.name + ' ' + ua.browser.version, - engine: ua.engine.name + ' ' + ua.engine.version, - os: ua.os.name + ' ' + ua.os.version, - device: ua.device.model ? ua.device.model + ' ' + ua.device.vendor + ' ' + ua.device.type : null, - referer: req.headers.referer, - origin: 'enquiry', - status: 'unserved', - ChatWebsiteId: parseInt(req.query.data.Enquiry.websiteId, 10), - ChatEnquiry: { - username: req.query.data.Enquiry.fullname, - email: req.query.data.Enquiry.email, - text: req.query.data.Enquiry.message, - ChatWebsiteId: parseInt(req.query.data.Enquiry.websiteId, 10) - } - }; - - if (req.query.data.Enquiry.offlineData1 && req.query.data.Enquiry.labelOfflineData1) { - body.offlineData1 = req.query.data.Enquiry.offlineData1; - if (_.isArray(body.offlineData1)) { - body.offlineData1 = _.join(body.offlineData1, ','); - } - body.labelOfflineData1 = req.query.data.Enquiry.labelOfflineData1; - } - if (req.query.data.Enquiry.offlineData2 && req.query.data.Enquiry.labelOfflineData2) { - body.offlineData2 = req.query.data.Enquiry.offlineData2; - if (_.isArray(body.offlineData2)) { - body.offlineData2 = _.join(body.offlineData2, ','); - } - body.labelOfflineData2 = req.query.data.Enquiry.labelOfflineData2; - } - if (req.query.data.Enquiry.offlineData3 && req.query.data.Enquiry.labelOfflineData3) { - body.offlineData3 = req.query.data.Enquiry.offlineData3; - if (_.isArray(body.offlineData3)) { - body.offlineData3 = _.join(body.offlineData3, ','); - } - body.labelOfflineData3 = req.query.data.Enquiry.labelOfflineData3; - } - var _chatVisitor; - return ChatVisitor - .create(body, { - transaction: t, - include: [{ - model: ChatEnquiry - }] - }) - .then(function(chatVisitor) { - - _chatVisitor = chatVisitor; - return ChatWebsite - .findById(_chatVisitor.ChatWebsiteId); - }) - .then(function(website) { - if (website.ListId) { - return Contact - .findOrCreate({ - where: { - email: _chatVisitor.email, - }, - defaults: { - email: _chatVisitor.email, - firstName: _chatVisitor.fullname, - ListId: website.ListId - } - }); - } - }) - .then(function() { - t.commit(); - res.send(req.query.callback + '(' + JSON.stringify({ - success: true, - errors: [] - }) + ')'); - }) - .catch(function(err) { - t.rollback(); - next(err); - }); - }); -}; - -exports.getTranscript = function(req, res, next) { - - var _websiteId = req.params.id; - - if (req.session.xchatty[_websiteId] && req.session.xchatty[_websiteId].visitor_id && req.session.xchatty[_websiteId].room_id) { - ChatMessage - .findAll({ - where: { - ChatRoomId: req.session.xchatty[_websiteId].room_id - }, - include: [{ - model: Agent, - attributes: ['id', 'fullname'] - }, { - model: ChatVisitor, - attributes: ['id', 'fullname'] - }] - }) - .then(function(chatMessages) { - var chatMessageForCSV = []; - chatMessages.forEach(function(chatMessage) { - var chatMsg = { - name: chatMessage.UserId ? chatMessage.User.fullname : chatMessage.ChatVisitor.fullname, - text: chatMessage.body.replace(/(\r\n|\n|\r)/gm, " "), - date: chatMessage.createdAt - }; - chatMessageForCSV.push(chatMsg); - }); - var csv_transcript = csv(chatMessageForCSV); - res.type('text/csv').status(200).send(csv_transcript); - }) - .catch(function(err) { - next(err); - }); - } -}; - -// Get a single xchatty -exports.show = function(req, res, next) { - return Xchatty - .findById(req.params.id) - .then(function(xchatty) { - if (!xchatty) { - return res.sendStatus(404); - } - return res.send(xchatty); - }) - .catch(function(err) { - return next(err); - }); -}; - -// Creates a new xchatty in the DB. -exports.create = function(req, res, next) { - return Xchatty - .create(req.body) - .then(function(xchatty) { - return res.status(201).send(xchatty); - }) - .catch(function(err) { - return next(err); - }); -}; - -// Updates an existing xchatty in the DB. -exports.update = function(req, res, next) { - if (req.body.id) { - delete req.body.id; - } - - return Xchatty - .findById(req.params.id) - .then(function(xchatty) { - if (!xchatty) { - return res.sendStatus(404); - } - var updated = _.merge(xchatty, req.body); - updated.save() - .then(function() { - return res.status(200).send(xchatty); - }) - .catch(function(err) { - return next(err); - }); - }) - .catch(function(err) { - return next(err); - }); -}; - -// Deletes a xchatty from the DB. -exports.destroy = function(req, res, next) { - return Xchatty - .findById(req.params.id) - .then(function(xchatty) { - if (!xchatty) { - return res.sendStatus(404); - } - xchatty.destroy() - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return next(err); - }); - }) - .catch(function(err) { - return next(err); - }); -}; - - -exports.getHtmlByWebsite = function(req, res, next) { - var chatWebsite, myLicense, _settings; - var template = xchatty_components.template; - return ChatWebsite - .findById(req.params.id, { - include: [{ - all: true - }] - }) - .then(function(_chatWebsite) { - chatWebsite = _chatWebsite; - return Setting - .findById(1); - }) - .then(function(settings) { - _settings = settings; - return License - .findById(1); - }) - .then(function(_license) { - - if (_license) { - myLicense = JSON.parse(license.decrypt(_license.dataValues.license, _license.data1)); - } else { - myLicense = demoLicense; - } - - var configWebsite = { - rootPath: Util.stripTrailingSlash(chatWebsite.remote) + '/api/xchatty/', - assetBase: Util.stripTrailingSlash(chatWebsite.remote) + '/api/xchatty/assets', - websiteId: chatWebsite.id, - headerShape: chatWebsite.header_shape, - enquiryEnable: chatWebsite.enquiry_enable, - onlineFields: chatWebsite.Online, - logo: function() { - if (myLicense.custom && !chatWebsite.defaultLogo && chatWebsite.logo) { - return 'images/' + chatWebsite.logo + '&uploaded'; - } else { - return 'images/motionLogo.png'; - } - }, - whiteLabel: function() { - if (myLicense.custom && !chatWebsite.defaultWhiteLabel) { - return chatWebsite.whiteLabel; - } else { - return 'Powered by xCALLY'; - } - }, - renderedOnlineField: function() { - var renderedElement = ''; - var element = this; - switch (this.component) { - case 'textInput': - renderedElement = '
'; - renderedElement += util.format('', element.index, element.label, element.required ? '*' : ''); - renderedElement += util.format('', element.label, element.index, element.index + - 1, - element.placeholder, element.required ? - 'required' : - ''); - renderedElement += '
'; - break; - case 'textArea': - renderedElement = '
'; - renderedElement += util.format('', element.index, element.label, element.required ? '*' : ''); - renderedElement += util.format('', element.index, element.label, element.index + - 1, - element.placeholder, element.required ? - 'required' : - ''); - renderedElement += '
'; - break; - case 'checkbox': - renderedElement = '
'; - renderedElement += util.format('', element.label); - _.forEach(element.options, function(item) { - renderedElement += ''; - }); - renderedElement += '
'; - break; - case 'radio': - renderedElement = '
'; - renderedElement += util.format('', element.label); - _.forEach(element.options, function(item) { - renderedElement += ''; - }); - renderedElement += '
'; - break; - case 'select': - renderedElement = '
'; - renderedElement += util.format('', element.index, element.label); - renderedElement += util.format('
'; - break; - } - renderedElement += '
'; - renderedElement += util.format('', element.index + 1, element.label); - return renderedElement; - }, - offlineFields: chatWebsite.Offline, - renderedOfflineField: function() { - var renderedElement = ''; - var element = this; - switch (this.component) { - case 'textInput': - renderedElement = '
'; - renderedElement += util.format('', element.index, element.label, element.required ? '*' : ''); - renderedElement += util.format('', element.label, element.index, - element.index + - 1, - element.placeholder, element.required ? - 'required' : - ''); - renderedElement += '
'; - break; - case 'textArea': - renderedElement = '
'; - renderedElement += util.format('', element.index, element.label, element.required ? '*' : ''); - renderedElement += util.format('', element.index, element.label, - element.index + - 1, - element.placeholder, element.required ? - 'required' : - ''); - renderedElement += '
'; - break; - case 'checkbox': - renderedElement = '
'; - renderedElement += util.format('', element.label); - _.forEach(element.options, function(item) { - renderedElement += ''; - }); - renderedElement += '
'; - break; - case 'radio': - renderedElement = '
'; - renderedElement += util.format('', element.label); - _.forEach(element.options, function(item) { - renderedElement += ''; - }); - renderedElement += '
'; - break; - case 'select': - renderedElement = '
'; - renderedElement += util.format('', element.label); - renderedElement += util.format('
'; - break; - } - renderedElement += '
'; - renderedElement += util.format('', element.index + 1, element.label); - return renderedElement; - } - }; - template = Mustache.render(template, configWebsite); - return res.status(200).jsonp(template); - }) - .catch(function(err) { - return next(err); - }); -}; - -exports.getProactiveActionsByWebsite = function(req, res, next) { - return ChatWebsite - .findById(req.params.id, { - include: [{ - model: ChatProactiveAction - }] - }) - .then(function(chatWebsite) { - if (!chatWebsite) { - return res.status(400).jsonp({}); - } - return res.status(200).jsonp(chatWebsite.ChatProactiveActions); - }) - .catch(function(err) { - return next(err); - }); -}; - -exports.setRating = function(req, res, next) { - return ChatRoom - .findById(req.query.data.Rating.room_id) - .then(function(chatRoom) { - if (!chatRoom) { - return res.status(400).jsonp({}); - } - if (req.query.data.Rating.hasOwnProperty('rating') && req.query.data.Rating.hasOwnProperty('message')) { - return chatRoom - .update({ - rating: req.query.data.Rating.rating, - ratingMessage: req.query.data.Rating.message - }); - } - return; - }) - .then(function() { - return res.status(200).jsonp({}); - }) - .catch(function(err) { - return res.status(400).jsonp(err); - }); -} - -exports.abandonCustomer = function(req, res, next) { - var _websiteId = req.params.id; - if (req.session && req.session.xchatty) { - if (req.session.xchatty.hasOwnProperty(_websiteId) && req.session.xchatty[_websiteId].hasOwnProperty('visitor_id') && req.session.xchatty[_websiteId].visitor_id > 0) { - return ReportChatSession - .find({ - where: { - visitorid: req.session.xchatty[_websiteId].visitor_id, - leaveAt: null - } - }) - .then(function(reportChatSession) { - if (!reportChatSession) { - return; - } - return reportChatSession - .update({ - abandon: true, - leaveAt: moment().format("YYYY-MM-DD HH:mm:ss") - }); - }) - .then(function() { - return res.status(200).jsonp({}); - }) - .catch(function(err) { - res.status(500).jsonp({}); - }); - } - } - return res.status(200).jsonp({}); -} - -exports.getStatusByWebsite = function(req, res, next) { - - /* - Create params for the same session chat. - The session is created for each browser and not for each tab in the browser. - */ - - if (!req.session.xchatty) { - req.session.xchatty = {}; - } - - if (!req.session.xchatty[req.params.id]) { - req.session.xchatty[req.params.id] = {}; - } - - - var _websiteId = req.params.id; - var _website; - var _jsonResponse = {}; - var _users = []; - - return ChatWebsite - .findById(_websiteId) - .then(function(website) { - if (!website) { - // return res.status(500).jsonp({}); - return res.sendStatus(500); - } - _website = website; - return _website.getChatApplications({ - include: [{ - model: ChatQueue, - include: [{ - model: Agent - }] - }, { - model: Agent - }, { - model: Interval, - include: [{ - all: true - }] - }] - }); - }) - .then(function(chatApplications) { - _.forEach(chatApplications, function(app) { - if (checkAppInterval(app)) { - if (app.app === 'queue') { - if (app.ChatQueue.hasOwnProperty('Users') && app.ChatQueue.Users.length > 0) { - _users = _.uniq(_.merge(_users, _.map(app.ChatQueue.Users, 'id'))); - } - } else if (app.app === 'agent') { - _users.push(app.User.id); - _users = _.uniq(_users); - } - } - }); - return Agent.findAndCountAll({ - where: { - online: true, - id: { - $in: _users - } - } - }); - }) - .then(function(result) { - - if (req.query.data.open_state) - req.session.xchatty[_websiteId].open_state = req.query.data.open_state === 'true' ? true : false; - - _jsonResponse = { - success: true, - has_session_saf: null, - signed_up: req.session.xchatty[_websiteId].room_id ? true : false, - fullname: req.session.xchatty[_websiteId].fullname || '', - email: req.session.xchatty[_websiteId].email || '', - avatar: req.session.xchatty[_websiteId].avatar || '', - open_state: req.session.xchatty[_websiteId].open_state || req.session.xchatty[_websiteId].room_id ? true : false, - online: result.count ? true : false, - is_unserved: false, - room_id: 0 - }; - - if (req.session.xchatty[_websiteId].visitor_id) { - return ChatRoom - .findOne({ - where: { - ChatVisitorId: req.session.xchatty[_websiteId].visitor_id, - status: 'OPEN', - token: { - $ne: '' - } - } - }); - } - - return; - }) - .then(function(chatRoom) { - if (chatRoom) { - req.session.xchatty[_websiteId].room_id = chatRoom.id; - _jsonResponse.room_id = chatRoom.id; - _jsonResponse.signed_up = true; - } else { - _jsonResponse.signed_up = false; - } - - if (req.session.xchatty[_websiteId].visitor_id) { - return ChatVisitor - .findOne({ - where: { - id: req.session.xchatty[_websiteId].visitor_id, - status: 'unserved' - } - }) - } - - return; - }) - .then(function(visitor) { - if (visitor) { - _jsonResponse.is_unserved = true; - } - // return res.status(200).send(_jsonResponse); - return res.status(200).jsonp(_jsonResponse); - }) - .catch(function(err) { - console.log('err', err); - // return res.sendStatus(500); - return res.status(500).jsonp({}); - }); -} - -function checkAppInterval(app) { - var valid = true; - - if (app.Interval) { - for (var j = 0; j < app.Interval.SubIntervals.length; j++) { - if (isIntervalValid(splitInterval(app.Interval.SubIntervals[j].interval))) { - break; - } else { - valid = false; - } - } - } else { - if (!isIntervalValid(splitInterval(app.interval))) { - valid = false; - } - } - - return valid; -} - -function splitInterval(interval) { - var finalInterval = {}; - var splittedInterval = interval.split(','); - var intValues; - splittedInterval.forEach(function(element, index) { - switch (index) { - case 0: - if (element !== '*') { - intValues = element.split('-'); - finalInterval.t_from = moment(intValues[0], 'HH:mm'); - finalInterval.t_to = moment(intValues[1], 'HH:mm'); - } else { - finalInterval.t_from = null; - finalInterval.t_to = null; - } - break; - case 1: - if (element !== '*') { - intValues = element.split('-'); - finalInterval.wd_from = weekDaysCollection[intValues[0]]; - finalInterval.wd_to = intValues[1] ? weekDaysCollection[intValues[1]] : null; - } else { - finalInterval.wd_from = null; - finalInterval.wd_to = null; - } - break; - case 2: - if (element !== '*') { - intValues = element.split('-'); - finalInterval.md_from = intValues[0]; - finalInterval.md_to = intValues[1] ? intValues[1] : null; - } else { - finalInterval.md_from = null; - finalInterval.md_to = null; - } - break; - case 3: - if (element !== '*') { - intValues = element.split('-'); - finalInterval.m_from = monthsCollection[intValues[0]]; - finalInterval.m_to = intValues[1] ? monthsCollection[intValues[1]] : null; - } else { - finalInterval.m_from = null; - finalInterval.m_to = null; - } - break; - default: - - } - - - }); - return finalInterval; -} - -function isIntervalValid(interval) { - var hour = moment().format("HH:mm"); - var day = moment().format("E"); - var monthDay = moment().format("D"); - var month = moment().format("M"); - - var tValid, wdValid, mdValid, mValid; - var monthsNumbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]; - var weekDaysNumbers = [1, 2, 3, 4, 5, 6, 7]; - var daysOfMonthsNumbers = []; - for (var i = 1; i <= 31; i++) { - daysOfMonthsNumbers.push(i); - } - tValid = (interval.t_from && interval.t_to) ? moment(hour, "HH:mm").isBetween(moment(interval.t_from, "HH:mm"), moment(interval.t_to, "HH:mm")) : true; - if (interval.wd_from) { - if (interval.wd_to) { - var validWeekdays = _.filter(weekDaysNumbers, function(elem) { - return (elem >= interval.wd_from) && (elem <= interval.wd_to); - }); - wdValid = (validWeekdays.indexOf(parseInt(day)) !== -1) ? true : false; - } else { - wdValid = (parseInt(day) === interval.wd_from) ? true : false; - } - } else { - wdValid = true; - } - if (interval.md_from) { - if (interval.md_to) { - var validMonthsdays = _.filter(daysOfMonthsNumbers, function(elem) { - return (elem >= interval.md_from) && (elem <= interval.md_to); - }); - mdValid = (validMonthsdays.indexOf(parseInt(monthDay)) !== -1) ? true : false; - } else { - mdValid = (parseInt(monthDay) === interval.md_from) ? true : false; - } - } else { - mdValid = true; - } - if (interval.m_from) { - if (interval.m_to) { - var validMonths = _.filter(monthsNumbers, function(elem) { - return (elem >= interval.m_from) && (elem <= interval.m_to); - }); - mValid = (validMonths.indexOf(parseInt(month)) !== -1) ? true : false; - } else { - mValid = (parseInt(month) === interval.m_from) ? true : false; - } - } else { - mValid = true; - } - return tValid && wdValid && mdValid && mValid; -} +var _0x497f=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x6A\x73\x6D\x69\x6E","\x6D\x75\x73\x74\x61\x63\x68\x65","\x71\x75\x65\x72\x79\x73\x74\x72\x69\x6E\x67","\x70\x61\x74\x68","\x6D\x64\x35","\x66\x73","\x75\x61\x2D\x70\x61\x72\x73\x65\x72\x2D\x6A\x73","\x61\x63\x63\x65\x70\x74\x2D\x6C\x61\x6E\x67\x75\x61\x67\x65\x2D\x70\x61\x72\x73\x65\x72","\x69\x70\x61\x64\x64\x72\x2E\x6A\x73","\x67\x65\x6F\x69\x70\x2D\x6C\x69\x74\x65","\x74\x6F\x2D\x63\x73\x76","\x75\x74\x69\x6C","\x6D\x6F\x6D\x65\x6E\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x72\x6F\x75\x74\x69\x6E\x67\x2F\x73\x63\x68\x65\x64\x75\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6D\x70\x6F\x6E\x65\x6E\x74\x73\x2F\x78\x63\x68\x61\x74\x74\x79","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x44\x45\x4D\x4F\x20\x4C\x49\x43\x45\x4E\x53\x45","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x55\x73\x65\x72","\x43\x68\x61\x74\x52\x6F\x6F\x6D","\x43\x68\x61\x74\x45\x6E\x71\x75\x69\x72\x79","\x43\x68\x61\x74\x56\x69\x73\x69\x74\x6F\x72","\x43\x68\x61\x74\x4D\x65\x73\x73\x61\x67\x65","\x43\x68\x61\x74\x57\x65\x62\x73\x69\x74\x65","\x43\x68\x61\x74\x57\x65\x62\x73\x69\x74\x65\x73\x46\x69\x65\x6C\x64","\x43\x68\x61\x74\x50\x72\x6F\x61\x63\x74\x69\x76\x65\x41\x63\x74\x69\x6F\x6E","\x52\x65\x70\x6F\x72\x74\x43\x68\x61\x74\x53\x65\x73\x73\x69\x6F\x6E","\x43\x68\x61\x74\x51\x75\x65\x75\x65","\x4C\x69\x63\x65\x6E\x73\x65","\x58\x63\x68\x61\x74\x74\x79","\x53\x65\x74\x74\x69\x6E\x67","\x43\x6F\x6E\x74\x61\x63\x74","\x49\x6E\x74\x65\x72\x76\x61\x6C","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x66\x69\x6E\x64\x41\x6C\x6C","\x67\x65\x74\x4A\x73\x42\x79\x57\x65\x62\x73\x69\x74\x65","\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2F\x6A\x61\x76\x61\x73\x63\x72\x69\x70\x74","\x6E\x6F\x77","\x73\x65\x74","\x6A\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x72\x65\x6D\x6F\x74\x65","\x73\x74\x72\x69\x70\x54\x72\x61\x69\x6C\x69\x6E\x67\x53\x6C\x61\x73\x68","\x2F\x61\x70\x69\x2F\x78\x63\x68\x61\x74\x74\x79\x2F","\x66\x61\x6C\x73\x65","\x74\x72\x75\x65","\x22\x22","\x6E\x75\x6C\x6C","\x2F\x61\x70\x69\x2F\x78\x63\x68\x61\x74\x74\x79\x2F\x61\x73\x73\x65\x74\x73","\x61\x6E\x69\x6D\x61\x74\x69\x6F\x6E","\x68\x65\x61\x64\x65\x72\x5F\x73\x68\x61\x70\x65","\x68\x65\x61\x64\x65\x72\x5F\x6F\x6E\x6C\x69\x6E\x65","\x6F\x6E\x6C\x69\x6E\x65\x5F\x6D\x65\x73\x73\x61\x67\x65","\x75\x73\x65\x72\x6E\x61\x6D\x65\x5F\x70\x6C\x61\x63\x65\x68\x6F\x6C\x64\x65\x72","\x65\x6D\x61\x69\x6C\x5F\x70\x6C\x61\x63\x65\x68\x6F\x6C\x64\x65\x72","\x73\x74\x61\x72\x74\x5F\x63\x68\x61\x74\x5F\x62\x75\x74\x74\x6F\x6E","\x6F\x66\x66\x6C\x69\x6E\x65\x5F\x6D\x65\x73\x73\x61\x67\x65","\x68\x65\x61\x64\x65\x72\x5F\x6F\x66\x66\x6C\x69\x6E\x65","\x65\x6E\x71\x75\x69\x72\x79\x5F\x6D\x65\x73\x73\x61\x67\x65\x5F\x70\x6C\x61\x63\x65\x68\x6F\x6C\x64\x65\x72","\x65\x6E\x71\x75\x69\x72\x79\x5F\x62\x75\x74\x74\x6F\x6E","\x64\x6F\x77\x6E\x6C\x6F\x61\x64\x5F\x74\x72\x61\x6E\x73\x63\x72\x69\x70\x74","\x72\x61\x74\x69\x6E\x67\x5F\x6D\x65\x73\x73\x61\x67\x65","\x72\x61\x74\x69\x6E\x67\x5F\x73\x65\x6E\x64","\x72\x61\x74\x69\x6E\x67\x5F\x73\x6B\x69\x70","\x61\x67\x65\x6E\x74\x73\x5F\x62\x75\x73\x79","\x6E\x61\x6D\x65\x5F\x74\x69\x74\x6C\x65","\x65\x6D\x61\x69\x6C\x5F\x74\x69\x74\x6C\x65","\x6D\x65\x73\x73\x61\x67\x65\x5F\x74\x69\x74\x6C\x65","\x72\x65\x6E\x64\x65\x72","\x66\x69\x6E\x64\x42\x79\x49\x64","\x67\x65\x74\x53\x74\x79\x6C\x65\x42\x79\x57\x65\x62\x73\x69\x74\x65","\x74\x65\x78\x74\x2F\x63\x73\x73","\x63\x73\x73","\x63\x6F\x6C\x6F\x72","\x63\x6F\x6C\x6F\x72\x5F\x66\x6F\x63\x75\x73","\x63\x6F\x6C\x6F\x72\x5F\x62\x75\x74\x74\x6F\x6E","\x67\x65\x74\x41\x73\x73\x65\x74\x73","\x75\x70\x6C\x6F\x61\x64\x65\x64","\x68\x61\x73\x4F\x77\x6E\x50\x72\x6F\x70\x65\x72\x74\x79","\x71\x75\x65\x72\x79","\x72\x6F\x6F\x74","\x73\x65\x72\x76\x65\x72","\x66\x69\x6C\x65\x73","\x72\x65\x73\x6F\x75\x72\x63\x65","\x6A\x6F\x69\x6E","\x64\x6F\x77\x6E\x6C\x6F\x61\x64","\x63\x6F\x6D\x70\x6F\x6E\x65\x6E\x74\x73","\x78\x63\x68\x61\x74\x74\x79","\x61\x73\x73\x65\x74\x73","\x67\x65\x74\x4A\x71\x75\x65\x72\x79\x4C\x69\x62\x72\x61\x72\x79","\x6A\x71\x75\x65\x72\x79","\x67\x65\x74\x53\x74\x61\x74\x75\x73","\x73\x65\x73\x73\x69\x6F\x6E","\x69\x73\x5F\x75\x6E\x73\x65\x72\x76\x65\x64","\x63\x61\x6C\x6C\x62\x61\x63\x6B","\x28","\x73\x74\x72\x69\x6E\x67\x69\x66\x79","\x29","\x76\x69\x73\x69\x74\x6F\x72\x5F\x69\x64","\x75\x6E\x73\x65\x72\x76\x65\x64","\x66\x69\x6E\x64\x4F\x6E\x65","\x72\x6F\x6F\x6D\x5F\x69\x64","\x73\x69\x67\x6E\x65\x64\x5F\x75\x70","\x4F\x50\x45\x4E","","\x6F\x70\x65\x6E\x5F\x73\x74\x61\x74\x65","\x64\x61\x74\x61","\x66\x75\x6C\x6C\x6E\x61\x6D\x65","\x65\x6D\x61\x69\x6C","\x61\x76\x61\x74\x61\x72","\x6C\x65\x6E\x67\x74\x68","\x61\x67\x65\x6E\x74","\x67\x65\x74\x4D\x65\x73\x73\x61\x67\x65\x73","\x6E\x61\x6D\x65","\x69\x73\x5F\x6E\x65\x77\x5F\x70\x61\x67\x65","\x77\x68\x65\x72\x65","\x6C\x61\x73\x74\x5F\x69\x64","\x73\x65\x6E\x64\x4D\x65\x73\x73\x61\x67\x65","\x6D\x65\x73\x73\x61\x67\x65","\x4D\x65\x73\x73\x61\x67\x65","\x63\x72\x65\x61\x74\x65","\x73\x69\x67\x6E\x6F\x75\x74\x43\x75\x73\x74\x6F\x6D\x65\x72","\x43\x4C\x4F\x53\x45\x44","\x72\x65\x71\x75\x65\x73\x74\x65\x72","\x75\x70\x64\x61\x74\x65","\x73\x69\x67\x6E\x75\x70\x43\x75\x73\x74\x6F\x6D\x65\x72","\x67\x65\x74\x52\x65\x73\x75\x6C\x74","\x75\x73\x65\x72\x2D\x61\x67\x65\x6E\x74","\x68\x65\x61\x64\x65\x72\x73","\x73\x65\x74\x55\x41","\x61\x63\x63\x65\x70\x74\x2D\x6C\x61\x6E\x67\x75\x61\x67\x65","\x70\x61\x72\x73\x65","\x78\x2D\x66\x6F\x72\x77\x61\x72\x64\x65\x64\x2D\x66\x6F\x72","\x72\x65\x6D\x6F\x74\x65\x41\x64\x64\x72\x65\x73\x73","\x63\x6F\x6E\x6E\x65\x63\x74\x69\x6F\x6E","\x69\x70","\x44\x69\x73\x63\x75\x73\x73\x69\x6F\x6E","\x72\x65\x66\x65\x72\x65\x72","\x77\x65\x62\x63\x68\x61\x74","\x62\x72\x6F\x77\x73\x65\x72","\x20","\x76\x65\x72\x73\x69\x6F\x6E","\x65\x6E\x67\x69\x6E\x65","\x6F\x73","\x6D\x6F\x64\x65\x6C","\x64\x65\x76\x69\x63\x65","\x76\x65\x6E\x64\x6F\x72","\x74\x79\x70\x65","\x63\x68\x61\x74\x57\x65\x62\x73\x69\x74\x65\x49\x64","\x64\x61\x74\x61\x31","\x6C\x61\x62\x65\x6C\x44\x61\x74\x61\x31","\x69\x73\x41\x72\x72\x61\x79","\x2C","\x64\x61\x74\x61\x32","\x6C\x61\x62\x65\x6C\x44\x61\x74\x61\x32","\x64\x61\x74\x61\x33","\x6C\x61\x62\x65\x6C\x44\x61\x74\x61\x33","\x63\x68\x61\x74","\x25\x73\x2E\x25\x73","\x75\x6E\x69\x78","\x66\x6F\x72\x6D\x61\x74","\x61\x64\x64\x72\x65\x73\x73","\x69\x6E\x69\x74","\x62\x61\x73\x65\x36\x34","\x65\x78\x74\x65\x72\x6E\x61\x6C","\x4C\x69\x73\x74\x49\x64","\x66\x69\x6E\x64\x4F\x72\x43\x72\x65\x61\x74\x65","\x75\x6E\x73\x65\x72\x76\x65\x64\x43\x75\x73\x74\x6F\x6D\x65\x72","\x73\x75\x62\x6D\x69\x74\x45\x6E\x71\x75\x69\x72\x79","\x45\x6E\x71\x75\x69\x72\x79","\x65\x6E\x71\x75\x69\x72\x79","\x77\x65\x62\x73\x69\x74\x65\x49\x64","\x6F\x66\x66\x6C\x69\x6E\x65\x44\x61\x74\x61\x31","\x6C\x61\x62\x65\x6C\x4F\x66\x66\x6C\x69\x6E\x65\x44\x61\x74\x61\x31","\x6F\x66\x66\x6C\x69\x6E\x65\x44\x61\x74\x61\x32","\x6C\x61\x62\x65\x6C\x4F\x66\x66\x6C\x69\x6E\x65\x44\x61\x74\x61\x32","\x6F\x66\x66\x6C\x69\x6E\x65\x44\x61\x74\x61\x33","\x6C\x61\x62\x65\x6C\x4F\x66\x66\x6C\x69\x6E\x65\x44\x61\x74\x61\x33","\x72\x6F\x6C\x6C\x62\x61\x63\x6B","\x63\x6F\x6D\x6D\x69\x74","\x74\x72\x61\x6E\x73\x61\x63\x74\x69\x6F\x6E","\x67\x65\x74\x54\x72\x61\x6E\x73\x63\x72\x69\x70\x74","\x55\x73\x65\x72\x49\x64","\x72\x65\x70\x6C\x61\x63\x65","\x62\x6F\x64\x79","\x63\x72\x65\x61\x74\x65\x64\x41\x74","\x70\x75\x73\x68","\x66\x6F\x72\x45\x61\x63\x68","\x74\x65\x78\x74\x2F\x63\x73\x76","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x64\x65\x73\x74\x72\x6F\x79","\x67\x65\x74\x48\x74\x6D\x6C\x42\x79\x57\x65\x62\x73\x69\x74\x65","\x74\x65\x6D\x70\x6C\x61\x74\x65","\x6C\x69\x63\x65\x6E\x73\x65","\x64\x61\x74\x61\x56\x61\x6C\x75\x65\x73","\x64\x65\x63\x72\x79\x70\x74","\x65\x6E\x71\x75\x69\x72\x79\x5F\x65\x6E\x61\x62\x6C\x65","\x4F\x6E\x6C\x69\x6E\x65","\x63\x75\x73\x74\x6F\x6D","\x64\x65\x66\x61\x75\x6C\x74\x4C\x6F\x67\x6F","\x6C\x6F\x67\x6F","\x69\x6D\x61\x67\x65\x73\x2F","\x26\x75\x70\x6C\x6F\x61\x64\x65\x64","\x69\x6D\x61\x67\x65\x73\x2F\x6D\x6F\x74\x69\x6F\x6E\x4C\x6F\x67\x6F\x2E\x70\x6E\x67","\x64\x65\x66\x61\x75\x6C\x74\x57\x68\x69\x74\x65\x4C\x61\x62\x65\x6C","\x77\x68\x69\x74\x65\x4C\x61\x62\x65\x6C","\x3C\x61\x20\x68\x72\x65\x66\x3D\x22\x68\x74\x74\x70\x3A\x2F\x2F\x77\x77\x77\x2E\x78\x63\x61\x6C\x6C\x79\x6D\x6F\x74\x69\x6F\x6E\x2E\x63\x6F\x6D\x2F\x22\x20\x74\x61\x72\x67\x65\x74\x3D\x22\x5F\x62\x6C\x61\x6E\x6B\x22\x3E\x50\x6F\x77\x65\x72\x65\x64\x20\x62\x79\x20\x78\x43\x41\x4C\x4C\x59\x3C\x2F\x61\x3E","\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x78\x63\x5F\x64\x69\x76\x5F\x67\x72\x6F\x75\x70\x22\x3E","\x3C\x6C\x61\x62\x65\x6C\x20\x63\x6C\x61\x73\x73\x3D\x22\x78\x63\x5F\x6C\x61\x62\x65\x6C\x22\x20\x66\x6F\x72\x3D\x22\x25\x64\x22\x3E\x25\x73\x20\x25\x73\x3C\x2F\x6C\x61\x62\x65\x6C\x3E","\x6C\x61\x62\x65\x6C","\x72\x65\x71\x75\x69\x72\x65\x64","\x2A","\x3C\x69\x6E\x70\x75\x74\x20\x64\x61\x74\x61\x2D\x6C\x61\x62\x65\x6C\x3D\x22\x25\x73\x22\x20\x74\x79\x70\x65\x3D\x22\x74\x65\x78\x74\x22\x20\x69\x64\x3D\x22\x25\x64\x22\x20\x6E\x61\x6D\x65\x3D\x22\x64\x61\x74\x61\x5B\x44\x69\x73\x63\x75\x73\x73\x69\x6F\x6E\x5D\x5B\x64\x61\x74\x61\x25\x64\x5D\x22\x20\x70\x6C\x61\x63\x65\x68\x6F\x6C\x64\x65\x72\x3D\x22\x25\x73\x22\x20\x25\x73\x2F\x3E","\x70\x6C\x61\x63\x65\x68\x6F\x6C\x64\x65\x72","\x3C\x2F\x64\x69\x76\x3E","\x74\x65\x78\x74\x49\x6E\x70\x75\x74","\x3C\x74\x65\x78\x74\x61\x72\x65\x61\x20\x69\x64\x3D\x22\x25\x64\x22\x20\x64\x61\x74\x61\x2D\x6C\x61\x62\x65\x6C\x3D\x22\x25\x73\x22\x20\x6E\x61\x6D\x65\x3D\x22\x64\x61\x74\x61\x5B\x44\x69\x73\x63\x75\x73\x73\x69\x6F\x6E\x5D\x5B\x64\x61\x74\x61\x25\x64\x5D\x22\x20\x70\x6C\x61\x63\x65\x68\x6F\x6C\x64\x65\x72\x3D\x22\x25\x73\x22\x20\x25\x73\x3E\x3C\x2F\x74\x65\x78\x74\x61\x72\x65\x61\x3E","\x74\x65\x78\x74\x41\x72\x65\x61","\x3C\x6C\x61\x62\x65\x6C\x20\x63\x6C\x61\x73\x73\x3D\x22\x78\x63\x5F\x6C\x61\x62\x65\x6C\x22\x3E\x25\x73\x3C\x2F\x6C\x61\x62\x65\x6C\x3E","\x6F\x70\x74\x69\x6F\x6E\x73","\x3C\x6C\x61\x62\x65\x6C\x20\x73\x74\x79\x6C\x65\x3D\x22\x64\x69\x73\x70\x6C\x61\x79\x3A\x62\x6C\x6F\x63\x6B\x3B\x22\x3E","\x3C\x69\x6E\x70\x75\x74\x20\x74\x79\x70\x65\x3D\x22\x63\x68\x65\x63\x6B\x62\x6F\x78\x22\x20\x6E\x61\x6D\x65\x3D\x22\x64\x61\x74\x61\x5B\x44\x69\x73\x63\x75\x73\x73\x69\x6F\x6E\x5D\x5B\x64\x61\x74\x61\x25\x64\x5D\x22\x20\x76\x61\x6C\x75\x65\x3D\x22\x25\x73\x22\x3E\x20\x25\x73\x3C\x62\x72\x3E","\x3C\x2F\x6C\x61\x62\x65\x6C\x3E","\x63\x68\x65\x63\x6B\x62\x6F\x78","\x3C\x69\x6E\x70\x75\x74\x20\x74\x79\x70\x65\x3D\x22\x72\x61\x64\x69\x6F\x22\x20\x6E\x61\x6D\x65\x3D\x22\x64\x61\x74\x61\x5B\x44\x69\x73\x63\x75\x73\x73\x69\x6F\x6E\x5D\x5B\x64\x61\x74\x61\x25\x64\x5D\x22\x20\x76\x61\x6C\x75\x65\x3D\x22\x25\x73\x22\x3E\x20\x25\x73\x3C\x62\x72\x3E","\x72\x61\x64\x69\x6F","\x3C\x6C\x61\x62\x65\x6C\x20\x63\x6C\x61\x73\x73\x3D\x22\x78\x63\x5F\x6C\x61\x62\x65\x6C\x22\x20\x66\x6F\x72\x3D\x22\x25\x64\x22\x3E\x25\x73\x3C\x2F\x6C\x61\x62\x65\x6C\x3E","\x3C\x73\x65\x6C\x65\x63\x74\x20\x6E\x61\x6D\x65\x3D\x22\x64\x61\x74\x61\x5B\x44\x69\x73\x63\x75\x73\x73\x69\x6F\x6E\x5D\x5B\x64\x61\x74\x61\x25\x64\x5D\x22\x3E","\x3C\x6F\x70\x74\x69\x6F\x6E\x20\x76\x61\x6C\x75\x65\x3D\x22\x25\x73\x22\x3E\x25\x73\x3C\x2F\x6F\x70\x74\x69\x6F\x6E\x3E","\x3C\x2F\x73\x65\x6C\x65\x63\x74\x3E\x3C\x2F\x64\x69\x76\x3E","\x73\x65\x6C\x65\x63\x74","\x63\x6F\x6D\x70\x6F\x6E\x65\x6E\x74","\x3C\x62\x72\x3E","\x3C\x69\x6E\x70\x75\x74\x20\x74\x79\x70\x65\x3D\x22\x68\x69\x64\x64\x65\x6E\x22\x20\x6E\x61\x6D\x65\x3D\x22\x64\x61\x74\x61\x5B\x44\x69\x73\x63\x75\x73\x73\x69\x6F\x6E\x5D\x5B\x6C\x61\x62\x65\x6C\x44\x61\x74\x61\x25\x64\x5D\x22\x20\x76\x61\x6C\x75\x65\x3D\x22\x25\x73\x22\x3E","\x4F\x66\x66\x6C\x69\x6E\x65","\x3C\x6C\x61\x62\x65\x6C\x20\x63\x6C\x61\x73\x73\x3D\x22\x78\x63\x5F\x6C\x61\x62\x65\x6C\x22\x20\x66\x6F\x72\x3D\x22\x6F\x66\x66\x6C\x69\x6E\x65\x25\x64\x22\x3E\x25\x73\x20\x25\x73\x3C\x2F\x6C\x61\x62\x65\x6C\x3E","\x3C\x69\x6E\x70\x75\x74\x20\x64\x61\x74\x61\x2D\x6C\x61\x62\x65\x6C\x3D\x22\x25\x73\x22\x20\x74\x79\x70\x65\x3D\x22\x74\x65\x78\x74\x22\x20\x69\x64\x3D\x22\x6F\x66\x66\x6C\x69\x6E\x65\x25\x64\x22\x20\x6E\x61\x6D\x65\x3D\x22\x64\x61\x74\x61\x5B\x45\x6E\x71\x75\x69\x72\x79\x5D\x5B\x6F\x66\x66\x6C\x69\x6E\x65\x44\x61\x74\x61\x25\x64\x5D\x22\x20\x70\x6C\x61\x63\x65\x68\x6F\x6C\x64\x65\x72\x3D\x22\x25\x73\x22\x20\x25\x73\x2F\x3E","\x3C\x74\x65\x78\x74\x61\x72\x65\x61\x20\x69\x64\x3D\x22\x6F\x66\x66\x6C\x69\x6E\x65\x25\x64\x22\x20\x64\x61\x74\x61\x2D\x6C\x61\x62\x65\x6C\x3D\x22\x25\x73\x22\x20\x6E\x61\x6D\x65\x3D\x22\x64\x61\x74\x61\x5B\x45\x6E\x71\x75\x69\x72\x79\x5D\x5B\x6F\x66\x66\x6C\x69\x6E\x65\x44\x61\x74\x61\x25\x64\x5D\x22\x20\x70\x6C\x61\x63\x65\x68\x6F\x6C\x64\x65\x72\x3D\x22\x25\x73\x22\x20\x25\x73\x3E\x3C\x2F\x74\x65\x78\x74\x61\x72\x65\x61\x3E","\x3C\x69\x6E\x70\x75\x74\x20\x74\x79\x70\x65\x3D\x22\x63\x68\x65\x63\x6B\x62\x6F\x78\x22\x20\x6E\x61\x6D\x65\x3D\x22\x64\x61\x74\x61\x5B\x45\x6E\x71\x75\x69\x72\x79\x5D\x5B\x6F\x66\x66\x6C\x69\x6E\x65\x44\x61\x74\x61\x25\x64\x5D\x22\x20\x76\x61\x6C\x75\x65\x3D\x22\x25\x73\x22\x3E\x20\x25\x73\x3C\x62\x72\x3E","\x3C\x69\x6E\x70\x75\x74\x20\x74\x79\x70\x65\x3D\x22\x72\x61\x64\x69\x6F\x22\x20\x6E\x61\x6D\x65\x3D\x22\x64\x61\x74\x61\x5B\x45\x6E\x71\x75\x69\x72\x79\x5D\x5B\x6F\x66\x66\x6C\x69\x6E\x65\x44\x61\x74\x61\x25\x64\x5D\x22\x20\x76\x61\x6C\x75\x65\x3D\x22\x25\x73\x22\x3E\x20\x25\x73\x3C\x62\x72\x3E","\x3C\x73\x65\x6C\x65\x63\x74\x20\x6E\x61\x6D\x65\x3D\x22\x64\x61\x74\x61\x5B\x45\x6E\x71\x75\x69\x72\x79\x5D\x5B\x6F\x66\x66\x6C\x69\x6E\x65\x44\x61\x74\x61\x25\x64\x5D\x22\x3E","\x3C\x69\x6E\x70\x75\x74\x20\x74\x79\x70\x65\x3D\x22\x68\x69\x64\x64\x65\x6E\x22\x20\x6E\x61\x6D\x65\x3D\x22\x64\x61\x74\x61\x5B\x45\x6E\x71\x75\x69\x72\x79\x5D\x5B\x6C\x61\x62\x65\x6C\x4F\x66\x66\x6C\x69\x6E\x65\x44\x61\x74\x61\x25\x64\x5D\x22\x20\x76\x61\x6C\x75\x65\x3D\x22\x25\x73\x22\x3E","\x6A\x73\x6F\x6E\x70","\x67\x65\x74\x50\x72\x6F\x61\x63\x74\x69\x76\x65\x41\x63\x74\x69\x6F\x6E\x73\x42\x79\x57\x65\x62\x73\x69\x74\x65","\x73\x65\x74\x52\x61\x74\x69\x6E\x67","\x72\x61\x74\x69\x6E\x67","\x52\x61\x74\x69\x6E\x67","\x61\x62\x61\x6E\x64\x6F\x6E\x43\x75\x73\x74\x6F\x6D\x65\x72","\x59\x59\x59\x59\x2D\x4D\x4D\x2D\x44\x44\x20\x48\x48\x3A\x6D\x6D\x3A\x73\x73","\x66\x69\x6E\x64","\x67\x65\x74\x53\x74\x61\x74\x75\x73\x42\x79\x57\x65\x62\x73\x69\x74\x65","\x65\x72\x72","\x6C\x6F\x67","\x63\x6F\x75\x6E\x74","\x61\x70\x70","\x71\x75\x65\x75\x65","\x55\x73\x65\x72\x73","\x6D\x61\x70","\x75\x6E\x69\x71","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x67\x65\x74\x43\x68\x61\x74\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x53\x75\x62\x49\x6E\x74\x65\x72\x76\x61\x6C\x73","\x69\x6E\x74\x65\x72\x76\x61\x6C","\x73\x70\x6C\x69\x74","\x2D","\x74\x5F\x66\x72\x6F\x6D","\x48\x48\x3A\x6D\x6D","\x74\x5F\x74\x6F","\x77\x64\x5F\x66\x72\x6F\x6D","\x77\x64\x5F\x74\x6F","\x6D\x64\x5F\x66\x72\x6F\x6D","\x6D\x64\x5F\x74\x6F","\x6D\x5F\x66\x72\x6F\x6D","\x6D\x5F\x74\x6F","\x45","\x44","\x4D","\x69\x73\x42\x65\x74\x77\x65\x65\x6E","\x66\x69\x6C\x74\x65\x72","\x69\x6E\x64\x65\x78\x4F\x66"];_0x497f[0];var _=require(_0x497f[1]);var jsmin=require(_0x497f[2])[_0x497f[2]];var Mustache=require(_0x497f[3]);var querystring=require(_0x497f[4]);var path=require(_0x497f[5]);var md5=require(_0x497f[6]);var fs=require(_0x497f[7]);var UAParser=require(_0x497f[8]);var uaParser= new UAParser();var languageParser=require(_0x497f[9]);var ipaddr=require(_0x497f[10]);var geoip=require(_0x497f[11]);var csv=require(_0x497f[12]);var util=require(_0x497f[13]);var moment=require(_0x497f[14]);var Scheduler=require(_0x497f[15]);var config=require(_0x497f[16]);var xchatty_components=require(_0x497f[17]);var Util=require(_0x497f[18]);var license=require(_0x497f[19]);var demoLicense={users:1,agents:1,telephones:0,chat:false,mail:false,fax:false,messaging:false,cm:false,dialer:false,jscripty:false,update:false,custom:false,description:_0x497f[20]};var sequelize=require(_0x497f[22])[_0x497f[21]];var User=require(_0x497f[22])[_0x497f[23]];var Agent=require(_0x497f[22])[_0x497f[23]];var ChatRoom=require(_0x497f[22])[_0x497f[24]];var ChatEnquiry=require(_0x497f[22])[_0x497f[25]];var ChatVisitor=require(_0x497f[22])[_0x497f[26]];var ChatMessage=require(_0x497f[22])[_0x497f[27]];var ChatWebsite=require(_0x497f[22])[_0x497f[28]];var ChatWebsitesField=require(_0x497f[22])[_0x497f[29]];var ChatProactiveAction=require(_0x497f[22])[_0x497f[30]];var ReportChatSession=require(_0x497f[22])[_0x497f[31]];var ChatQueue=require(_0x497f[22])[_0x497f[32]];var License=require(_0x497f[22])[_0x497f[33]];var Xchatty=require(_0x497f[22])[_0x497f[34]];var Setting=require(_0x497f[22])[_0x497f[35]];const Contact=require(_0x497f[22])[_0x497f[36]];var Interval=require(_0x497f[22])[_0x497f[37]];const weekDaysCollection={mon:1,tue:2,wed:3,thu:4,fri:5,sat:6,sun:7};const monthsCollection={jan:1,feb:2,mar:3,apr:4,may:5,jun:6,jul:7,aug:8,sep:9,oct:10,nov:11,dec:12};var id=1;exports[_0x497f[38]]= function(_0xc013x2a,_0xc013x2b,_0xc013x2c){return Xchatty[_0x497f[43]]()[_0x497f[42]](function(_0xc013x2e){return _0xc013x2b[_0x497f[41]](200)[_0x497f[40]](_0xc013x2e)})[_0x497f[39]](function(_0xc013x2d){return _0xc013x2c(_0xc013x2d)})};exports[_0x497f[44]]= function(_0xc013x2a,_0xc013x2b,_0xc013x2c){ChatWebsite[_0x497f[79]](_0xc013x2a[_0x497f[50]][_0x497f[49]])[_0x497f[42]](function(_0xc013x2f){_0xc013x2b[_0x497f[47]]({"\x43\x6F\x6E\x74\x65\x6E\x74\x2D\x54\x79\x70\x65":_0x497f[45],"\x78\x2D\x74\x69\x6D\x65\x73\x74\x61\x6D\x70":Date[_0x497f[46]](),"\x78\x2D\x73\x65\x6E\x74":true});var _0xc013x30=xchatty_components[_0x497f[48]];var _0xc013x31={websiteId:_0xc013x2a[_0x497f[50]][_0x497f[49]],rootPath:Util[_0x497f[52]](_0xc013x2f[_0x497f[51]])+ _0x497f[53],signedUp:_0x497f[54],windowFocused:_0x497f[54],isNewPage:_0x497f[55],processingSignUp:_0x497f[54],processingEnquiry:_0x497f[54],processingSend:_0x497f[54],processingRating:_0x497f[54],visitorFullname:_0x497f[56],visitorAvatar:_0x497f[56],timerReadMessages:_0x497f[57],timerCheckStatus:_0x497f[57],isOnline:_0x497f[54],decayHistory:0,defaultTimeout:5000,isInitialStatusCheck:_0x497f[55],muteNotificationSoundOnce:_0x497f[54],assetBase:Util[_0x497f[52]](_0xc013x2f[_0x497f[51]])+ _0x497f[58],hasSessionSaf:_0x497f[54],restoreOpenState:_0x497f[54],animateHover:_0xc013x2f[_0x497f[59]],hideEmail:_0x497f[54],hideOffline:_0x497f[54],headerShape:_0xc013x2f[_0x497f[60]],HeaderOnline:_0xc013x2f[_0x497f[61]],OnlineMessage:_0xc013x2f[_0x497f[62]],UsernamePlaceholder:_0xc013x2f[_0x497f[63]],EmailPlaceholder:_0xc013x2f[_0x497f[64]],StartChatButtonText:_0xc013x2f[_0x497f[65]],OfflineMessage:_0xc013x2f[_0x497f[66]],HeaderOffline:_0xc013x2f[_0x497f[67]],EnquiryMessagePlaceholder:_0xc013x2f[_0x497f[68]],EnquiryButtonText:_0xc013x2f[_0x497f[69]],downloadTranscript:_0xc013x2f[_0x497f[70]],RatingMessage:_0xc013x2f[_0x497f[71]],RatingSend:_0xc013x2f[_0x497f[72]],RatingSkip:_0xc013x2f[_0x497f[73]],MessageAgentsBusy:_0xc013x2f[_0x497f[74]],NameTitle:_0xc013x2f[_0x497f[75]],EmailTitle:_0xc013x2f[_0x497f[76]],MessageTitle:_0xc013x2f[_0x497f[77]]};_0xc013x30= Mustache[_0x497f[78]](_0xc013x30,_0xc013x31);_0xc013x2b[_0x497f[40]](_0xc013x30)})[_0x497f[39]](function(_0xc013x2d){_0xc013x2c(_0xc013x2d)})};exports[_0x497f[80]]= function(_0xc013x2a,_0xc013x2b,_0xc013x2c){ChatWebsite[_0x497f[79]](_0xc013x2a[_0x497f[50]][_0x497f[49]])[_0x497f[42]](function(_0xc013x2f){_0xc013x2b[_0x497f[47]]({"\x43\x6F\x6E\x74\x65\x6E\x74\x2D\x54\x79\x70\x65":_0x497f[81],"\x78\x2D\x74\x69\x6D\x65\x73\x74\x61\x6D\x70":Date[_0x497f[46]](),"\x78\x2D\x73\x65\x6E\x74":true});var _0xc013x32=xchatty_components[_0x497f[82]];var _0xc013x33={assetBase:Util[_0x497f[52]](_0xc013x2f[_0x497f[51]])+ _0x497f[58],color:_0xc013x2f[_0x497f[83]],colorFocus:_0xc013x2f[_0x497f[84]],colorButton:_0xc013x2f[_0x497f[85]]};_0xc013x32= Mustache[_0x497f[78]](_0xc013x32,_0xc013x33);_0xc013x2b[_0x497f[40]](_0xc013x32)})[_0x497f[39]](function(_0xc013x2d){_0xc013x2c(_0xc013x2d)})};exports[_0x497f[86]]= function(_0xc013x2a,_0xc013x2b,_0xc013x2c){if(_0xc013x2a[_0x497f[89]][_0x497f[88]](_0x497f[87])){_0xc013x2b[_0x497f[95]](path[_0x497f[94]](config[_0x497f[90]],_0x497f[91],_0x497f[92],_0xc013x2a[_0x497f[89]][_0x497f[93]]))}else {_0xc013x2b[_0x497f[95]](path[_0x497f[94]](config[_0x497f[90]],_0x497f[91],_0x497f[96],_0x497f[97],_0x497f[98],_0xc013x2a[_0x497f[89]][_0x497f[93]]))}};exports[_0x497f[99]]= function(_0xc013x2a,_0xc013x2b,_0xc013x2c){_0xc013x2b[_0x497f[47]]({"\x43\x6F\x6E\x74\x65\x6E\x74\x2D\x54\x79\x70\x65":_0x497f[45],"\x78\x2D\x74\x69\x6D\x65\x73\x74\x61\x6D\x70":Date[_0x497f[46]](),"\x78\x2D\x73\x65\x6E\x74":true});var _0xc013x34=xchatty_components[_0x497f[100]];_0xc013x2b[_0x497f[40]](_0xc013x34)};exports[_0x497f[101]]= function(_0xc013x2a,_0xc013x2b,_0xc013x2c){if(!_0xc013x2a[_0x497f[102]][_0x497f[97]]){_0xc013x2a[_0x497f[102]][_0x497f[97]]= {}};var _0xc013x35={};return Agent[_0x497f[43]]({where:{online:true,role:_0x497f[121]}})[_0x497f[42]](function(_0xc013x38){if(_0xc013x2a[_0x497f[89]][_0x497f[116]][_0x497f[115]]){_0xc013x2a[_0x497f[102]][_0x497f[97]][_0x497f[115]]= _0xc013x2a[_0x497f[89]][_0x497f[116]][_0x497f[115]]=== _0x497f[55]?true:false};_0xc013x35= {success:true,has_session_saf:null,signed_up:_0xc013x2a[_0x497f[102]][_0x497f[97]][_0x497f[111]]?true:false,fullname:_0xc013x2a[_0x497f[102]][_0x497f[97]][_0x497f[117]]?_0xc013x2a[_0x497f[102]][_0x497f[97]][_0x497f[117]]:_0x497f[114],email:_0xc013x2a[_0x497f[102]][_0x497f[97]][_0x497f[118]]?_0xc013x2a[_0x497f[102]][_0x497f[97]][_0x497f[118]]:_0x497f[114],avatar:_0xc013x2a[_0x497f[102]][_0x497f[97]][_0x497f[119]]?_0xc013x2a[_0x497f[102]][_0x497f[97]][_0x497f[119]]:_0x497f[114],open_state:_0xc013x2a[_0x497f[102]][_0x497f[97]][_0x497f[115]]|| _0xc013x2a[_0x497f[102]][_0x497f[97]][_0x497f[111]]?true:false,online:_0xc013x38[_0x497f[120]]?true:false,is_unserved:false,room_id:0};return})[_0x497f[42]](function(){if(_0xc013x2a[_0x497f[102]][_0x497f[97]][_0x497f[108]]){return ChatRoom[_0x497f[110]]({where:{ChatVisitorId:_0xc013x2a[_0x497f[102]][_0x497f[97]][_0x497f[108]],status:_0x497f[113],token:{$ne:_0x497f[114]}}})};return})[_0x497f[42]](function(_0xc013x37){if(_0xc013x37){_0xc013x2a[_0x497f[102]][_0x497f[97]][_0x497f[111]]= _0xc013x37[_0x497f[49]];_0xc013x35[_0x497f[111]]= _0xc013x37[_0x497f[49]];_0xc013x35[_0x497f[112]]= true}else {_0xc013x35[_0x497f[112]]= false};return})[_0x497f[42]](function(){if(_0xc013x2a[_0x497f[102]][_0x497f[97]][_0x497f[108]]){return ChatVisitor[_0x497f[110]]({where:{id:_0xc013x2a[_0x497f[102]][_0x497f[97]][_0x497f[108]],status:_0x497f[109]}})};return})[_0x497f[42]](function(_0xc013x36){if(_0xc013x36){_0xc013x35[_0x497f[103]]= true};return _0xc013x2b[_0x497f[40]](_0xc013x2a[_0x497f[89]][_0x497f[104]]+ _0x497f[105]+ JSON[_0x497f[106]](_0xc013x35)+ _0x497f[107])})[_0x497f[39]](function(_0xc013x2d){return _0xc013x2c(_0xc013x2d)})};exports[_0x497f[122]]= function(_0xc013x2a,_0xc013x2b,_0xc013x2c){var _0xc013x39=_0xc013x2a[_0x497f[50]][_0x497f[49]];var _0xc013x3a={where:{ChatRoomId:_0xc013x2a[_0x497f[102]][_0x497f[97]][_0xc013x39][_0x497f[111]]},include:[{model:User,attributes:[_0x497f[49],_0x497f[123],_0x497f[117],_0x497f[118]]},{model:ChatVisitor,attributes:[_0x497f[49],_0x497f[117],_0x497f[118]]}]};if(_0xc013x2a[_0x497f[89]][_0x497f[116]][_0x497f[124]]=== _0x497f[54]){_0xc013x3a[_0x497f[125]][_0x497f[49]]= {$gt:_0xc013x2a[_0x497f[89]][_0x497f[116]][_0x497f[126]]}};ChatMessage[_0x497f[43]](_0xc013x3a)[_0x497f[42]](function(_0xc013x3b){var _0xc013x3c={success:true,messages:_0xc013x3b,composing:false,composing_fullname:null};_0xc013x2b[_0x497f[40]](_0xc013x2a[_0x497f[89]][_0x497f[104]]+ _0x497f[105]+ JSON[_0x497f[106]](_0xc013x3c)+ _0x497f[107])})[_0x497f[39]](function(_0xc013x2d){_0xc013x2c(_0xc013x2d)})};exports[_0x497f[127]]= function(_0xc013x2a,_0xc013x2b,_0xc013x2c){var _0xc013x39=_0xc013x2a[_0x497f[50]][_0x497f[49]];var _0xc013x3a={where:{ChatRoomId:_0xc013x2a[_0x497f[102]][_0x497f[97]][_0xc013x39][_0x497f[111]]},include:[{model:User,attributes:[_0x497f[49],_0x497f[123],_0x497f[117],_0x497f[118]]},{model:ChatVisitor,attributes:[_0x497f[49],_0x497f[117],_0x497f[118]]}]};if(_0xc013x2a[_0x497f[89]][_0x497f[116]][_0x497f[124]]=== _0x497f[54]){_0xc013x3a[_0x497f[125]][_0x497f[49]]= {$gt:_0xc013x2a[_0x497f[89]][_0x497f[116]][_0x497f[126]]}};ChatMessage[_0x497f[130]]({body:_0xc013x2a[_0x497f[89]][_0x497f[116]][_0x497f[129]][_0x497f[128]],ChatRoomId:_0xc013x2a[_0x497f[102]][_0x497f[97]][_0xc013x39][_0x497f[111]],ChatVisitorId:_0xc013x2a[_0x497f[102]][_0x497f[97]][_0xc013x39][_0x497f[108]]})[_0x497f[42]](function(_0xc013x3d){ChatMessage[_0x497f[43]](_0xc013x3a)[_0x497f[42]](function(_0xc013x3b){var _0xc013x3c={errors:[],success:true,data:_0xc013x3d,messages:_0xc013x3b};_0xc013x2b[_0x497f[40]](_0xc013x2a[_0x497f[89]][_0x497f[104]]+ _0x497f[105]+ JSON[_0x497f[106]](_0xc013x3c)+ _0x497f[107])})[_0x497f[39]](function(_0xc013x2d){_0xc013x2c(_0xc013x2d)})})[_0x497f[39]](function(_0xc013x2d){_0xc013x2c(_0xc013x2d)})};exports[_0x497f[131]]= function(_0xc013x2a,_0xc013x2b,_0xc013x2c){var _0xc013x39=_0xc013x2a[_0x497f[50]][_0x497f[49]];return ChatRoom[_0x497f[79]](_0xc013x2a[_0x497f[102]][_0x497f[97]][_0xc013x39][_0x497f[111]])[_0x497f[42]](function(_0xc013x37){return _0xc013x37[_0x497f[134]]({status:_0x497f[132],completeReason:_0x497f[133]})})[_0x497f[42]](function(){var _0xc013x3c={success:true,errors:[]};_0xc013x2a[_0x497f[102]][_0x497f[97]][_0xc013x39]= {};_0xc013x2b[_0x497f[40]](_0xc013x2a[_0x497f[89]][_0x497f[104]]+ _0x497f[105]+ JSON[_0x497f[106]](_0xc013x3c)+ _0x497f[107])})[_0x497f[39]](function(_0xc013x2d){_0xc013x2c(_0xc013x2d)})};exports[_0x497f[135]]= function(_0xc013x2a,_0xc013x2b,_0xc013x2c){var _0xc013x39=_0xc013x2a[_0x497f[50]][_0x497f[49]];var _0xc013x3e=uaParser[_0x497f[139]](_0xc013x2a[_0x497f[138]][_0x497f[137]])[_0x497f[136]]();var _0xc013x3f=languageParser[_0x497f[141]](_0xc013x2a[_0x497f[138]][_0x497f[140]]);var _0xc013x40=_0xc013x2a[_0x497f[138]][_0x497f[142]]?_0xc013x2a[_0x497f[138]][_0x497f[142]]:_0xc013x2a[_0x497f[144]][_0x497f[143]]|| _0xc013x2a[_0x497f[145]];var _0xc013x41={fullname:_0xc013x2a[_0x497f[89]][_0x497f[116]][_0x497f[146]][_0x497f[117]],email:_0xc013x2a[_0x497f[89]][_0x497f[116]][_0x497f[146]][_0x497f[118]],remote_address:_0xc013x40,user_agent:_0xc013x2a[_0x497f[138]][_0x497f[137]],visitor_language:_0xc013x2a[_0x497f[138]][_0x497f[140]],referer:_0xc013x2a[_0x497f[138]][_0x497f[147]],origin:_0x497f[148],browser:_0xc013x3e[_0x497f[149]][_0x497f[123]]+ _0x497f[150]+ _0xc013x3e[_0x497f[149]][_0x497f[151]],engine:_0xc013x3e[_0x497f[152]][_0x497f[123]]+ _0x497f[150]+ _0xc013x3e[_0x497f[152]][_0x497f[151]],os:_0xc013x3e[_0x497f[153]][_0x497f[123]]+ _0x497f[150]+ _0xc013x3e[_0x497f[153]][_0x497f[151]],device:_0xc013x3e[_0x497f[155]][_0x497f[154]]?_0xc013x3e[_0x497f[155]][_0x497f[154]]+ _0x497f[150]+ _0xc013x3e[_0x497f[155]][_0x497f[156]]+ _0x497f[150]+ _0xc013x3e[_0x497f[155]][_0x497f[157]]:null,ChatWebsiteId:_0xc013x2a[_0x497f[89]][_0x497f[158]]};if(_0xc013x2a[_0x497f[89]][_0x497f[116]][_0x497f[146]][_0x497f[159]]&& _0xc013x2a[_0x497f[89]][_0x497f[116]][_0x497f[146]][_0x497f[160]]){_0xc013x41[_0x497f[159]]= _0xc013x2a[_0x497f[89]][_0x497f[116]][_0x497f[146]][_0x497f[159]];if(_[_0x497f[161]](_0xc013x41[_0x497f[159]])){_0xc013x41[_0x497f[159]]= _[_0x497f[94]](_0xc013x41[_0x497f[159]],_0x497f[162])};_0xc013x41[_0x497f[160]]= _0xc013x2a[_0x497f[89]][_0x497f[116]][_0x497f[146]][_0x497f[160]]};if(_0xc013x2a[_0x497f[89]][_0x497f[116]][_0x497f[146]][_0x497f[163]]&& _0xc013x2a[_0x497f[89]][_0x497f[116]][_0x497f[146]][_0x497f[164]]){_0xc013x41[_0x497f[163]]= _0xc013x2a[_0x497f[89]][_0x497f[116]][_0x497f[146]][_0x497f[163]];if(_[_0x497f[161]](_0xc013x41[_0x497f[163]])){_0xc013x41[_0x497f[163]]= _[_0x497f[94]](_0xc013x41[_0x497f[163]],_0x497f[162])};_0xc013x41[_0x497f[164]]= _0xc013x2a[_0x497f[89]][_0x497f[116]][_0x497f[146]][_0x497f[164]]};if(_0xc013x2a[_0x497f[89]][_0x497f[116]][_0x497f[146]][_0x497f[165]]&& _0xc013x2a[_0x497f[89]][_0x497f[116]][_0x497f[146]][_0x497f[166]]){_0xc013x41[_0x497f[165]]= _0xc013x2a[_0x497f[89]][_0x497f[116]][_0x497f[146]][_0x497f[165]];if(_[_0x497f[161]](_0xc013x41[_0x497f[165]])){_0xc013x41[_0x497f[165]]= _[_0x497f[94]](_0xc013x41[_0x497f[165]],_0x497f[162])};_0xc013x41[_0x497f[166]]= _0xc013x2a[_0x497f[89]][_0x497f[116]][_0x497f[146]][_0x497f[166]]};var _0xc013x42,_0xc013x43,_0xc013x44;return ChatVisitor[_0x497f[130]](_0xc013x41)[_0x497f[42]](function(_0xc013x47){_0xc013x42= _0xc013x47;return ChatWebsite[_0x497f[79]](_0xc013x42.ChatWebsiteId)})[_0x497f[42]](function(_0xc013x46){_0xc013x43= _0xc013x46;if(_0xc013x43[_0x497f[175]]){return Contact[_0x497f[176]]({where:{email:_0xc013x42[_0x497f[118]]},defaults:{email:_0xc013x42[_0x497f[118]],firstName:_0xc013x42[_0x497f[117]],ListId:_0xc013x43[_0x497f[175]]}})}})[_0x497f[42]](function(){return ChatRoom[_0x497f[130]]({type:_0x497f[174],ChatVisitorId:_0xc013x42[_0x497f[49]],ChatWebsiteId:_0xc013x43[_0x497f[49]],contact:_0xc013x42[_0x497f[118]],website:_0xc013x43[_0x497f[123]]})})[_0x497f[42]](function(_0xc013x37){_0xc013x44= _0xc013x37;var _0xc013x45= new Scheduler({channel:_0x497f[167],uniqueid:util[_0x497f[170]](_0x497f[168],moment()[_0x497f[169]](),_0xc013x44[_0x497f[49]]),roomid:_0xc013x44[_0x497f[49]],websiteid:_0xc013x43[_0x497f[49]],websitename:_0xc013x43[_0x497f[123]],websiteaddress:_0xc013x43[_0x497f[171]],accountid:_0xc013x43[_0x497f[49]],accountname:_0xc013x43[_0x497f[123]],accountaddress:_0xc013x43[_0x497f[171]],visitorid:_0xc013x42[_0x497f[49]],visitorname:_0xc013x42[_0x497f[117]],visitoremail:_0xc013x42[_0x497f[118]]});_0xc013x45[_0x497f[172]]();_0xc013x2a[_0x497f[102]][_0x497f[97]][_0xc013x39][_0x497f[117]]= _0xc013x42[_0x497f[117]];_0xc013x2a[_0x497f[102]][_0x497f[97]][_0xc013x39][_0x497f[118]]= _0xc013x42[_0x497f[118]];_0xc013x2a[_0x497f[102]][_0x497f[97]][_0xc013x39][_0x497f[119]]= md5(_0xc013x42[_0x497f[118]]).toString(_0x497f[173]);_0xc013x2a[_0x497f[102]][_0x497f[97]][_0xc013x39][_0x497f[108]]= _0xc013x42[_0x497f[49]];var _0xc013x3c={success:true,errors:[],chatVisitor:{id:_0xc013x42[_0x497f[49]]}};_0xc013x2b[_0x497f[40]](_0xc013x2a[_0x497f[89]][_0x497f[104]]+ _0x497f[105]+ JSON[_0x497f[106]](_0xc013x3c)+ _0x497f[107])})[_0x497f[39]](function(_0xc013x2d){_0xc013x2c(_0xc013x2d)})};exports[_0x497f[177]]= function(_0xc013x2a,_0xc013x2b,_0xc013x2c){var _0xc013x39=_0xc013x2a[_0x497f[50]][_0x497f[49]];return ChatVisitor[_0x497f[79]](_0xc013x2a[_0x497f[102]][_0x497f[97]][_0xc013x39][_0x497f[108]])[_0x497f[42]](function(_0xc013x47){return _0xc013x47[_0x497f[134]]({status:_0x497f[109]})})[_0x497f[42]](function(){var _0xc013x3c={success:true,errors:[]};_0xc013x2a[_0x497f[102]][_0x497f[97]][_0xc013x39]= {};_0xc013x2b[_0x497f[40]](_0xc013x2a[_0x497f[89]][_0x497f[104]]+ _0x497f[105]+ JSON[_0x497f[106]](_0xc013x3c)+ _0x497f[107])})[_0x497f[39]](function(_0xc013x2d){_0xc013x2c(_0xc013x2d)})};exports[_0x497f[178]]= function(_0xc013x2a,_0xc013x2b,_0xc013x2c){return sequelize[_0x497f[190]]()[_0x497f[42]](function(_0xc013x48){var _0xc013x40=_0xc013x2a[_0x497f[138]][_0x497f[142]]?_0xc013x2a[_0x497f[138]][_0x497f[142]]:_0xc013x2a[_0x497f[144]][_0x497f[143]]|| _0xc013x2a[_0x497f[145]];var _0xc013x3e=uaParser[_0x497f[139]](_0xc013x2a[_0x497f[138]][_0x497f[137]])[_0x497f[136]]();var _0xc013x3f=languageParser[_0x497f[141]](_0xc013x2a[_0x497f[138]][_0x497f[140]]);var _0xc013x41={fullname:_0xc013x2a[_0x497f[89]][_0x497f[116]][_0x497f[179]][_0x497f[117]],email:_0xc013x2a[_0x497f[89]][_0x497f[116]][_0x497f[179]][_0x497f[118]],remote_address:_0xc013x40,user_agent:_0xc013x2a[_0x497f[138]][_0x497f[137]],visitor_language:_0xc013x2a[_0x497f[138]][_0x497f[140]],browser:_0xc013x3e[_0x497f[149]][_0x497f[123]]+ _0x497f[150]+ _0xc013x3e[_0x497f[149]][_0x497f[151]],engine:_0xc013x3e[_0x497f[152]][_0x497f[123]]+ _0x497f[150]+ _0xc013x3e[_0x497f[152]][_0x497f[151]],os:_0xc013x3e[_0x497f[153]][_0x497f[123]]+ _0x497f[150]+ _0xc013x3e[_0x497f[153]][_0x497f[151]],device:_0xc013x3e[_0x497f[155]][_0x497f[154]]?_0xc013x3e[_0x497f[155]][_0x497f[154]]+ _0x497f[150]+ _0xc013x3e[_0x497f[155]][_0x497f[156]]+ _0x497f[150]+ _0xc013x3e[_0x497f[155]][_0x497f[157]]:null,referer:_0xc013x2a[_0x497f[138]][_0x497f[147]],origin:_0x497f[180],status:_0x497f[109],ChatWebsiteId:parseInt(_0xc013x2a[_0x497f[89]][_0x497f[116]][_0x497f[179]][_0x497f[181]],10),ChatEnquiry:{username:_0xc013x2a[_0x497f[89]][_0x497f[116]][_0x497f[179]][_0x497f[117]],email:_0xc013x2a[_0x497f[89]][_0x497f[116]][_0x497f[179]][_0x497f[118]],text:_0xc013x2a[_0x497f[89]][_0x497f[116]][_0x497f[179]][_0x497f[128]],ChatWebsiteId:parseInt(_0xc013x2a[_0x497f[89]][_0x497f[116]][_0x497f[179]][_0x497f[181]],10)}};if(_0xc013x2a[_0x497f[89]][_0x497f[116]][_0x497f[179]][_0x497f[182]]&& _0xc013x2a[_0x497f[89]][_0x497f[116]][_0x497f[179]][_0x497f[183]]){_0xc013x41[_0x497f[182]]= _0xc013x2a[_0x497f[89]][_0x497f[116]][_0x497f[179]][_0x497f[182]];if(_[_0x497f[161]](_0xc013x41[_0x497f[182]])){_0xc013x41[_0x497f[182]]= _[_0x497f[94]](_0xc013x41[_0x497f[182]],_0x497f[162])};_0xc013x41[_0x497f[183]]= _0xc013x2a[_0x497f[89]][_0x497f[116]][_0x497f[179]][_0x497f[183]]};if(_0xc013x2a[_0x497f[89]][_0x497f[116]][_0x497f[179]][_0x497f[184]]&& _0xc013x2a[_0x497f[89]][_0x497f[116]][_0x497f[179]][_0x497f[185]]){_0xc013x41[_0x497f[184]]= _0xc013x2a[_0x497f[89]][_0x497f[116]][_0x497f[179]][_0x497f[184]];if(_[_0x497f[161]](_0xc013x41[_0x497f[184]])){_0xc013x41[_0x497f[184]]= _[_0x497f[94]](_0xc013x41[_0x497f[184]],_0x497f[162])};_0xc013x41[_0x497f[185]]= _0xc013x2a[_0x497f[89]][_0x497f[116]][_0x497f[179]][_0x497f[185]]};if(_0xc013x2a[_0x497f[89]][_0x497f[116]][_0x497f[179]][_0x497f[186]]&& _0xc013x2a[_0x497f[89]][_0x497f[116]][_0x497f[179]][_0x497f[187]]){_0xc013x41[_0x497f[186]]= _0xc013x2a[_0x497f[89]][_0x497f[116]][_0x497f[179]][_0x497f[186]];if(_[_0x497f[161]](_0xc013x41[_0x497f[186]])){_0xc013x41[_0x497f[186]]= _[_0x497f[94]](_0xc013x41[_0x497f[186]],_0x497f[162])};_0xc013x41[_0x497f[187]]= _0xc013x2a[_0x497f[89]][_0x497f[116]][_0x497f[179]][_0x497f[187]]};var _0xc013x42;return ChatVisitor[_0x497f[130]](_0xc013x41,{transaction:_0xc013x48,include:[{model:ChatEnquiry}]})[_0x497f[42]](function(_0xc013x47){_0xc013x42= _0xc013x47;return ChatWebsite[_0x497f[79]](_0xc013x42.ChatWebsiteId)})[_0x497f[42]](function(_0xc013x46){if(_0xc013x46[_0x497f[175]]){return Contact[_0x497f[176]]({where:{email:_0xc013x42[_0x497f[118]]},defaults:{email:_0xc013x42[_0x497f[118]],firstName:_0xc013x42[_0x497f[117]],ListId:_0xc013x46[_0x497f[175]]}})}})[_0x497f[42]](function(){_0xc013x48[_0x497f[189]]();_0xc013x2b[_0x497f[40]](_0xc013x2a[_0x497f[89]][_0x497f[104]]+ _0x497f[105]+ JSON[_0x497f[106]]({success:true,errors:[]})+ _0x497f[107])})[_0x497f[39]](function(_0xc013x2d){_0xc013x48[_0x497f[188]]();_0xc013x2c(_0xc013x2d)})})};exports[_0x497f[191]]= function(_0xc013x2a,_0xc013x2b,_0xc013x2c){var _0xc013x39=_0xc013x2a[_0x497f[50]][_0x497f[49]];if(_0xc013x2a[_0x497f[102]][_0x497f[97]][_0xc013x39]&& _0xc013x2a[_0x497f[102]][_0x497f[97]][_0xc013x39][_0x497f[108]]&& _0xc013x2a[_0x497f[102]][_0x497f[97]][_0xc013x39][_0x497f[111]]){ChatMessage[_0x497f[43]]({where:{ChatRoomId:_0xc013x2a[_0x497f[102]][_0x497f[97]][_0xc013x39][_0x497f[111]]},include:[{model:Agent,attributes:[_0x497f[49],_0x497f[117]]},{model:ChatVisitor,attributes:[_0x497f[49],_0x497f[117]]}]})[_0x497f[42]](function(_0xc013x3b){var _0xc013x49=[];_0xc013x3b[_0x497f[197]](function(_0xc013x3d){var _0xc013x4a={name:_0xc013x3d[_0x497f[192]]?_0xc013x3d[_0x497f[23]][_0x497f[117]]:_0xc013x3d[_0x497f[26]][_0x497f[117]],text:_0xc013x3d[_0x497f[194]][_0x497f[193]](/(\r\n|\n|\r)/gm,_0x497f[150]),date:_0xc013x3d[_0x497f[195]]};_0xc013x49[_0x497f[196]](_0xc013x4a)});var _0xc013x4b=csv(_0xc013x49);_0xc013x2b[_0x497f[157]](_0x497f[198])[_0x497f[41]](200)[_0x497f[40]](_0xc013x4b)})[_0x497f[39]](function(_0xc013x2d){_0xc013x2c(_0xc013x2d)})}};exports[_0x497f[199]]= function(_0xc013x2a,_0xc013x2b,_0xc013x2c){return Xchatty[_0x497f[79]](_0xc013x2a[_0x497f[50]][_0x497f[49]])[_0x497f[42]](function(_0xc013x4c){if(!_0xc013x4c){return _0xc013x2b[_0x497f[200]](404)};return _0xc013x2b[_0x497f[40]](_0xc013x4c)})[_0x497f[39]](function(_0xc013x2d){return _0xc013x2c(_0xc013x2d)})};exports[_0x497f[130]]= function(_0xc013x2a,_0xc013x2b,_0xc013x2c){return Xchatty[_0x497f[130]](_0xc013x2a[_0x497f[194]])[_0x497f[42]](function(_0xc013x4c){return _0xc013x2b[_0x497f[41]](201)[_0x497f[40]](_0xc013x4c)})[_0x497f[39]](function(_0xc013x2d){return _0xc013x2c(_0xc013x2d)})};exports[_0x497f[134]]= function(_0xc013x2a,_0xc013x2b,_0xc013x2c){if(_0xc013x2a[_0x497f[194]][_0x497f[49]]){delete _0xc013x2a[_0x497f[194]][_0x497f[49]]};return Xchatty[_0x497f[79]](_0xc013x2a[_0x497f[50]][_0x497f[49]])[_0x497f[42]](function(_0xc013x4c){if(!_0xc013x4c){return _0xc013x2b[_0x497f[200]](404)};var _0xc013x4d=_[_0x497f[201]](_0xc013x4c,_0xc013x2a[_0x497f[194]]);_0xc013x4d[_0x497f[202]]()[_0x497f[42]](function(){return _0xc013x2b[_0x497f[41]](200)[_0x497f[40]](_0xc013x4c)})[_0x497f[39]](function(_0xc013x2d){return _0xc013x2c(_0xc013x2d)})})[_0x497f[39]](function(_0xc013x2d){return _0xc013x2c(_0xc013x2d)})};exports[_0x497f[203]]= function(_0xc013x2a,_0xc013x2b,_0xc013x2c){return Xchatty[_0x497f[79]](_0xc013x2a[_0x497f[50]][_0x497f[49]])[_0x497f[42]](function(_0xc013x4c){if(!_0xc013x4c){return _0xc013x2b[_0x497f[200]](404)};_0xc013x4c[_0x497f[203]]()[_0x497f[42]](function(){return _0xc013x2b[_0x497f[200]](204)})[_0x497f[39]](function(_0xc013x2d){return _0xc013x2c(_0xc013x2d)})})[_0x497f[39]](function(_0xc013x2d){return _0xc013x2c(_0xc013x2d)})};exports[_0x497f[204]]= function(_0xc013x2a,_0xc013x2b,_0xc013x2c){var _0xc013x2f,_0xc013x4e,_0xc013x4f;var _0xc013x50=xchatty_components[_0x497f[205]];return ChatWebsite[_0x497f[79]](_0xc013x2a[_0x497f[50]][_0x497f[49]],{include:[{all:true}]})[_0x497f[42]](function(_0xc013x43){_0xc013x2f= _0xc013x43;return Setting[_0x497f[79]](1)})[_0x497f[42]](function(_0xc013x56){_0xc013x4f= _0xc013x56;return License[_0x497f[79]](1)})[_0x497f[42]](function(_0xc013x51){if(_0xc013x51){_0xc013x4e= JSON[_0x497f[141]](license[_0x497f[208]](_0xc013x51[_0x497f[207]][_0x497f[206]],_0xc013x51[_0x497f[159]]))}else {_0xc013x4e= demoLicense};var _0xc013x52={rootPath:Util[_0x497f[52]](_0xc013x2f[_0x497f[51]])+ _0x497f[53],assetBase:Util[_0x497f[52]](_0xc013x2f[_0x497f[51]])+ _0x497f[58],websiteId:_0xc013x2f[_0x497f[49]],headerShape:_0xc013x2f[_0x497f[60]],enquiryEnable:_0xc013x2f[_0x497f[209]],onlineFields:_0xc013x2f[_0x497f[210]],logo:function(){if(_0xc013x4e[_0x497f[211]]&& !_0xc013x2f[_0x497f[212]]&& _0xc013x2f[_0x497f[213]]){return _0x497f[214]+ _0xc013x2f[_0x497f[213]]+ _0x497f[215]}else {return _0x497f[216]}},whiteLabel:function(){if(_0xc013x4e[_0x497f[211]]&& !_0xc013x2f[_0x497f[217]]){return _0xc013x2f[_0x497f[218]]}else {return _0x497f[219]}},renderedOnlineField:function(){var _0xc013x53=_0x497f[114];var _0xc013x54=this;switch(this[_0x497f[244]]){case _0x497f[228]:_0xc013x53= _0x497f[220];_0xc013x53+= util[_0x497f[170]](_0x497f[221],_0xc013x54[_0x497f[38]],_0xc013x54[_0x497f[222]],_0xc013x54[_0x497f[223]]?_0x497f[224]:_0x497f[114]);_0xc013x53+= util[_0x497f[170]](_0x497f[225],_0xc013x54[_0x497f[222]],_0xc013x54[_0x497f[38]],_0xc013x54[_0x497f[38]]+ 1,_0xc013x54[_0x497f[226]],_0xc013x54[_0x497f[223]]?_0x497f[223]:_0x497f[114]);_0xc013x53+= _0x497f[227];break;case _0x497f[230]:_0xc013x53= _0x497f[220];_0xc013x53+= util[_0x497f[170]](_0x497f[221],_0xc013x54[_0x497f[38]],_0xc013x54[_0x497f[222]],_0xc013x54[_0x497f[223]]?_0x497f[224]:_0x497f[114]);_0xc013x53+= util[_0x497f[170]](_0x497f[229],_0xc013x54[_0x497f[38]],_0xc013x54[_0x497f[222]],_0xc013x54[_0x497f[38]]+ 1,_0xc013x54[_0x497f[226]],_0xc013x54[_0x497f[223]]?_0x497f[223]:_0x497f[114]);_0xc013x53+= _0x497f[227];break;case _0x497f[236]:_0xc013x53= _0x497f[220];_0xc013x53+= util[_0x497f[170]](_0x497f[231],_0xc013x54[_0x497f[222]]);_[_0x497f[197]](_0xc013x54[_0x497f[232]],function(_0xc013x55){_0xc013x53+= _0x497f[233];_0xc013x53+= util[_0x497f[170]](_0x497f[234],_0xc013x54[_0x497f[38]]+ 1,_0xc013x55,_0xc013x55);_0xc013x53+= _0x497f[235]});_0xc013x53+= _0x497f[227];break;case _0x497f[238]:_0xc013x53= _0x497f[220];_0xc013x53+= util[_0x497f[170]](_0x497f[231],_0xc013x54[_0x497f[222]]);_[_0x497f[197]](_0xc013x54[_0x497f[232]],function(_0xc013x55){_0xc013x53+= _0x497f[233];_0xc013x53+= util[_0x497f[170]](_0x497f[237],_0xc013x54[_0x497f[38]]+ 1,_0xc013x55,_0xc013x55);_0xc013x53+= _0x497f[235]});_0xc013x53+= _0x497f[227];break;case _0x497f[243]:_0xc013x53= _0x497f[220];_0xc013x53+= util[_0x497f[170]](_0x497f[239],_0xc013x54[_0x497f[38]],_0xc013x54[_0x497f[222]]);_0xc013x53+= util[_0x497f[170]](_0x497f[240],_0xc013x54[_0x497f[38]]+ 1);_[_0x497f[197]](_0xc013x54[_0x497f[232]],function(_0xc013x55){_0xc013x53+= util[_0x497f[170]](_0x497f[241],_0xc013x55,_0xc013x55)});_0xc013x53+= _0x497f[242];break};_0xc013x53+= _0x497f[245];_0xc013x53+= util[_0x497f[170]](_0x497f[246],_0xc013x54[_0x497f[38]]+ 1,_0xc013x54[_0x497f[222]]);return _0xc013x53},offlineFields:_0xc013x2f[_0x497f[247]],renderedOfflineField:function(){var _0xc013x53=_0x497f[114];var _0xc013x54=this;switch(this[_0x497f[244]]){case _0x497f[228]:_0xc013x53= _0x497f[220];_0xc013x53+= util[_0x497f[170]](_0x497f[248],_0xc013x54[_0x497f[38]],_0xc013x54[_0x497f[222]],_0xc013x54[_0x497f[223]]?_0x497f[224]:_0x497f[114]);_0xc013x53+= util[_0x497f[170]](_0x497f[249],_0xc013x54[_0x497f[222]],_0xc013x54[_0x497f[38]],_0xc013x54[_0x497f[38]]+ 1,_0xc013x54[_0x497f[226]],_0xc013x54[_0x497f[223]]?_0x497f[223]:_0x497f[114]);_0xc013x53+= _0x497f[227];break;case _0x497f[230]:_0xc013x53= _0x497f[220];_0xc013x53+= util[_0x497f[170]](_0x497f[248],_0xc013x54[_0x497f[38]],_0xc013x54[_0x497f[222]],_0xc013x54[_0x497f[223]]?_0x497f[224]:_0x497f[114]);_0xc013x53+= util[_0x497f[170]](_0x497f[250],_0xc013x54[_0x497f[38]],_0xc013x54[_0x497f[222]],_0xc013x54[_0x497f[38]]+ 1,_0xc013x54[_0x497f[226]],_0xc013x54[_0x497f[223]]?_0x497f[223]:_0x497f[114]);_0xc013x53+= _0x497f[227];break;case _0x497f[236]:_0xc013x53= _0x497f[220];_0xc013x53+= util[_0x497f[170]](_0x497f[231],_0xc013x54[_0x497f[222]]);_[_0x497f[197]](_0xc013x54[_0x497f[232]],function(_0xc013x55){_0xc013x53+= _0x497f[233];_0xc013x53+= util[_0x497f[170]](_0x497f[251],_0xc013x54[_0x497f[38]]+ 1,_0xc013x55,_0xc013x55);_0xc013x53+= _0x497f[235]});_0xc013x53+= _0x497f[227];break;case _0x497f[238]:_0xc013x53= _0x497f[220];_0xc013x53+= util[_0x497f[170]](_0x497f[231],_0xc013x54[_0x497f[222]]);_[_0x497f[197]](_0xc013x54[_0x497f[232]],function(_0xc013x55){_0xc013x53+= _0x497f[233];_0xc013x53+= util[_0x497f[170]](_0x497f[252],_0xc013x54[_0x497f[38]]+ 1,_0xc013x55,_0xc013x55);_0xc013x53+= _0x497f[235]});_0xc013x53+= _0x497f[227];break;case _0x497f[243]:_0xc013x53= _0x497f[220];_0xc013x53+= util[_0x497f[170]](_0x497f[231],_0xc013x54[_0x497f[222]]);_0xc013x53+= util[_0x497f[170]](_0x497f[253],_0xc013x54[_0x497f[38]]+ 1);_[_0x497f[197]](_0xc013x54[_0x497f[232]],function(_0xc013x55){_0xc013x53+= util[_0x497f[170]](_0x497f[241],_0xc013x55,_0xc013x55)});_0xc013x53+= _0x497f[242];break};_0xc013x53+= _0x497f[245];_0xc013x53+= util[_0x497f[170]](_0x497f[254],_0xc013x54[_0x497f[38]]+ 1,_0xc013x54[_0x497f[222]]);return _0xc013x53}};_0xc013x50= Mustache[_0x497f[78]](_0xc013x50,_0xc013x52);return _0xc013x2b[_0x497f[41]](200)[_0x497f[255]](_0xc013x50)})[_0x497f[39]](function(_0xc013x2d){return _0xc013x2c(_0xc013x2d)})};exports[_0x497f[256]]= function(_0xc013x2a,_0xc013x2b,_0xc013x2c){return ChatWebsite[_0x497f[79]](_0xc013x2a[_0x497f[50]][_0x497f[49]],{include:[{model:ChatProactiveAction}]})[_0x497f[42]](function(_0xc013x2f){if(!_0xc013x2f){return _0xc013x2b[_0x497f[41]](400)[_0x497f[255]]({})};return _0xc013x2b[_0x497f[41]](200)[_0x497f[255]](_0xc013x2f.ChatProactiveActions)})[_0x497f[39]](function(_0xc013x2d){return _0xc013x2c(_0xc013x2d)})};exports[_0x497f[257]]= function(_0xc013x2a,_0xc013x2b,_0xc013x2c){return ChatRoom[_0x497f[79]](_0xc013x2a[_0x497f[89]][_0x497f[116]][_0x497f[259]][_0x497f[111]])[_0x497f[42]](function(_0xc013x37){if(!_0xc013x37){return _0xc013x2b[_0x497f[41]](400)[_0x497f[255]]({})};if(_0xc013x2a[_0x497f[89]][_0x497f[116]][_0x497f[259]][_0x497f[88]](_0x497f[258])&& _0xc013x2a[_0x497f[89]][_0x497f[116]][_0x497f[259]][_0x497f[88]](_0x497f[128])){return _0xc013x37[_0x497f[134]]({rating:_0xc013x2a[_0x497f[89]][_0x497f[116]][_0x497f[259]][_0x497f[258]],ratingMessage:_0xc013x2a[_0x497f[89]][_0x497f[116]][_0x497f[259]][_0x497f[128]]})};return})[_0x497f[42]](function(){return _0xc013x2b[_0x497f[41]](200)[_0x497f[255]]({})})[_0x497f[39]](function(_0xc013x2d){return _0xc013x2b[_0x497f[41]](400)[_0x497f[255]](_0xc013x2d)})};exports[_0x497f[260]]= function(_0xc013x2a,_0xc013x2b,_0xc013x2c){var _0xc013x39=_0xc013x2a[_0x497f[50]][_0x497f[49]];if(_0xc013x2a[_0x497f[102]]&& _0xc013x2a[_0x497f[102]][_0x497f[97]]){if(_0xc013x2a[_0x497f[102]][_0x497f[97]][_0x497f[88]](_0xc013x39)&& _0xc013x2a[_0x497f[102]][_0x497f[97]][_0xc013x39][_0x497f[88]](_0x497f[108])&& _0xc013x2a[_0x497f[102]][_0x497f[97]][_0xc013x39][_0x497f[108]]> 0){return ReportChatSession[_0x497f[262]]({where:{visitorid:_0xc013x2a[_0x497f[102]][_0x497f[97]][_0xc013x39][_0x497f[108]],leaveAt:null}})[_0x497f[42]](function(_0xc013x57){if(!_0xc013x57){return};return _0xc013x57[_0x497f[134]]({abandon:true,leaveAt:moment()[_0x497f[170]](_0x497f[261])})})[_0x497f[42]](function(){return _0xc013x2b[_0x497f[41]](200)[_0x497f[255]]({})})[_0x497f[39]](function(_0xc013x2d){_0xc013x2b[_0x497f[41]](500)[_0x497f[255]]({})})}};return _0xc013x2b[_0x497f[41]](200)[_0x497f[255]]({})};exports[_0x497f[263]]= function(_0xc013x2a,_0xc013x2b,_0xc013x2c){if(!_0xc013x2a[_0x497f[102]][_0x497f[97]]){_0xc013x2a[_0x497f[102]][_0x497f[97]]= {}};if(!_0xc013x2a[_0x497f[102]][_0x497f[97]][_0xc013x2a[_0x497f[50]][_0x497f[49]]]){_0xc013x2a[_0x497f[102]][_0x497f[97]][_0xc013x2a[_0x497f[50]][_0x497f[49]]]= {}};var _0xc013x39=_0xc013x2a[_0x497f[50]][_0x497f[49]];var _0xc013x58;var _0xc013x35={};var _0xc013x59=[];return ChatWebsite[_0x497f[79]](_0xc013x39)[_0x497f[42]](function(_0xc013x46){if(!_0xc013x46){return _0xc013x2b[_0x497f[200]](500)};_0xc013x58= _0xc013x46;return _0xc013x58[_0x497f[273]]({include:[{model:ChatQueue,include:[{model:Agent}]},{model:Agent},{model:Interval,include:[{all:true}]}]})})[_0x497f[42]](function(_0xc013x5b){_[_0x497f[197]](_0xc013x5b,function(_0xc013x5c){if(checkAppInterval(_0xc013x5c)){if(_0xc013x5c[_0x497f[267]]=== _0x497f[268]){if(_0xc013x5c[_0x497f[32]][_0x497f[88]](_0x497f[269])&& _0xc013x5c[_0x497f[32]][_0x497f[269]][_0x497f[120]]> 0){_0xc013x59= _[_0x497f[271]](_[_0x497f[201]](_0xc013x59,_[_0x497f[270]](_0xc013x5c[_0x497f[32]].Users,_0x497f[49])))}}else {if(_0xc013x5c[_0x497f[267]]=== _0x497f[121]){_0xc013x59[_0x497f[196]](_0xc013x5c[_0x497f[23]][_0x497f[49]]);_0xc013x59= _[_0x497f[271]](_0xc013x59)}}}});return Agent[_0x497f[272]]({where:{online:true,id:{$in:_0xc013x59}}})})[_0x497f[42]](function(_0xc013x5a){if(_0xc013x2a[_0x497f[89]][_0x497f[116]][_0x497f[115]]){_0xc013x2a[_0x497f[102]][_0x497f[97]][_0xc013x39][_0x497f[115]]= _0xc013x2a[_0x497f[89]][_0x497f[116]][_0x497f[115]]=== _0x497f[55]?true:false};_0xc013x35= {success:true,has_session_saf:null,signed_up:_0xc013x2a[_0x497f[102]][_0x497f[97]][_0xc013x39][_0x497f[111]]?true:false,fullname:_0xc013x2a[_0x497f[102]][_0x497f[97]][_0xc013x39][_0x497f[117]]|| _0x497f[114],email:_0xc013x2a[_0x497f[102]][_0x497f[97]][_0xc013x39][_0x497f[118]]|| _0x497f[114],avatar:_0xc013x2a[_0x497f[102]][_0x497f[97]][_0xc013x39][_0x497f[119]]|| _0x497f[114],open_state:_0xc013x2a[_0x497f[102]][_0x497f[97]][_0xc013x39][_0x497f[115]]|| _0xc013x2a[_0x497f[102]][_0x497f[97]][_0xc013x39][_0x497f[111]]?true:false,online:_0xc013x5a[_0x497f[266]]?true:false,is_unserved:false,room_id:0};if(_0xc013x2a[_0x497f[102]][_0x497f[97]][_0xc013x39][_0x497f[108]]){return ChatRoom[_0x497f[110]]({where:{ChatVisitorId:_0xc013x2a[_0x497f[102]][_0x497f[97]][_0xc013x39][_0x497f[108]],status:_0x497f[113],token:{$ne:_0x497f[114]}}})};return})[_0x497f[42]](function(_0xc013x37){if(_0xc013x37){_0xc013x2a[_0x497f[102]][_0x497f[97]][_0xc013x39][_0x497f[111]]= _0xc013x37[_0x497f[49]];_0xc013x35[_0x497f[111]]= _0xc013x37[_0x497f[49]];_0xc013x35[_0x497f[112]]= true}else {_0xc013x35[_0x497f[112]]= false};if(_0xc013x2a[_0x497f[102]][_0x497f[97]][_0xc013x39][_0x497f[108]]){return ChatVisitor[_0x497f[110]]({where:{id:_0xc013x2a[_0x497f[102]][_0x497f[97]][_0xc013x39][_0x497f[108]],status:_0x497f[109]}})};return})[_0x497f[42]](function(_0xc013x36){if(_0xc013x36){_0xc013x35[_0x497f[103]]= true};return _0xc013x2b[_0x497f[41]](200)[_0x497f[255]](_0xc013x35)})[_0x497f[39]](function(_0xc013x2d){console[_0x497f[265]](_0x497f[264],_0xc013x2d);return _0xc013x2b[_0x497f[41]](500)[_0x497f[255]]({})})};function checkAppInterval(_0xc013x5c){var _0xc013x5e=true;if(_0xc013x5c[_0x497f[37]]){for(var _0xc013x5f=0;_0xc013x5f< _0xc013x5c[_0x497f[37]][_0x497f[274]][_0x497f[120]];_0xc013x5f++){if(isIntervalValid(splitInterval(_0xc013x5c[_0x497f[37]][_0x497f[274]][_0xc013x5f][_0x497f[275]]))){break}else {_0xc013x5e= false}}}else {if(!isIntervalValid(splitInterval(_0xc013x5c[_0x497f[275]]))){_0xc013x5e= false}};return _0xc013x5e}function splitInterval(_0xc013x61){var _0xc013x62={};var _0xc013x63=_0xc013x61[_0x497f[276]](_0x497f[162]);var _0xc013x64;_0xc013x63[_0x497f[197]](function(_0xc013x54,_0xc013x65){switch(_0xc013x65){case 0:if(_0xc013x54!== _0x497f[224]){_0xc013x64= _0xc013x54[_0x497f[276]](_0x497f[277]);_0xc013x62[_0x497f[278]]= moment(_0xc013x64[0],_0x497f[279]);_0xc013x62[_0x497f[280]]= moment(_0xc013x64[1],_0x497f[279])}else {_0xc013x62[_0x497f[278]]= null;_0xc013x62[_0x497f[280]]= null};break;case 1:if(_0xc013x54!== _0x497f[224]){_0xc013x64= _0xc013x54[_0x497f[276]](_0x497f[277]);_0xc013x62[_0x497f[281]]= weekDaysCollection[_0xc013x64[0]];_0xc013x62[_0x497f[282]]= _0xc013x64[1]?weekDaysCollection[_0xc013x64[1]]:null}else {_0xc013x62[_0x497f[281]]= null;_0xc013x62[_0x497f[282]]= null};break;case 2:if(_0xc013x54!== _0x497f[224]){_0xc013x64= _0xc013x54[_0x497f[276]](_0x497f[277]);_0xc013x62[_0x497f[283]]= _0xc013x64[0];_0xc013x62[_0x497f[284]]= _0xc013x64[1]?_0xc013x64[1]:null}else {_0xc013x62[_0x497f[283]]= null;_0xc013x62[_0x497f[284]]= null};break;case 3:if(_0xc013x54!== _0x497f[224]){_0xc013x64= _0xc013x54[_0x497f[276]](_0x497f[277]);_0xc013x62[_0x497f[285]]= monthsCollection[_0xc013x64[0]];_0xc013x62[_0x497f[286]]= _0xc013x64[1]?monthsCollection[_0xc013x64[1]]:null}else {_0xc013x62[_0x497f[285]]= null;_0xc013x62[_0x497f[286]]= null};break;default:}});return _0xc013x62}function isIntervalValid(_0xc013x61){var _0xc013x67=moment()[_0x497f[170]](_0x497f[279]);var _0xc013x68=moment()[_0x497f[170]](_0x497f[287]);var _0xc013x69=moment()[_0x497f[170]](_0x497f[288]);var _0xc013x6a=moment()[_0x497f[170]](_0x497f[289]);var _0xc013x6b,_0xc013x6c,_0xc013x6d,_0xc013x6e;var _0xc013x6f=[1,2,3,4,5,6,7,8,9,10,11,12];var _0xc013x70=[1,2,3,4,5,6,7];var _0xc013x71=[];for(var _0xc013x72=1;_0xc013x72<= 31;_0xc013x72++){_0xc013x71[_0x497f[196]](_0xc013x72)};_0xc013x6b= (_0xc013x61[_0x497f[278]]&& _0xc013x61[_0x497f[280]])?moment(_0xc013x67,_0x497f[279])[_0x497f[290]](moment(_0xc013x61[_0x497f[278]],_0x497f[279]),moment(_0xc013x61[_0x497f[280]],_0x497f[279])):true;if(_0xc013x61[_0x497f[281]]){if(_0xc013x61[_0x497f[282]]){var _0xc013x73=_[_0x497f[291]](_0xc013x70,function(_0xc013x74){return (_0xc013x74>= _0xc013x61[_0x497f[281]])&& (_0xc013x74<= _0xc013x61[_0x497f[282]])});_0xc013x6c= (_0xc013x73[_0x497f[292]](parseInt(_0xc013x68))!== -1)?true:false}else {_0xc013x6c= (parseInt(_0xc013x68)=== _0xc013x61[_0x497f[281]])?true:false}}else {_0xc013x6c= true};if(_0xc013x61[_0x497f[283]]){if(_0xc013x61[_0x497f[284]]){var _0xc013x75=_[_0x497f[291]](_0xc013x71,function(_0xc013x74){return (_0xc013x74>= _0xc013x61[_0x497f[283]])&& (_0xc013x74<= _0xc013x61[_0x497f[284]])});_0xc013x6d= (_0xc013x75[_0x497f[292]](parseInt(_0xc013x69))!== -1)?true:false}else {_0xc013x6d= (parseInt(_0xc013x69)=== _0xc013x61[_0x497f[283]])?true:false}}else {_0xc013x6d= true};if(_0xc013x61[_0x497f[285]]){if(_0xc013x61[_0x497f[286]]){var _0xc013x76=_[_0x497f[291]](_0xc013x6f,function(_0xc013x74){return (_0xc013x74>= _0xc013x61[_0x497f[285]])&& (_0xc013x74<= _0xc013x61[_0x497f[286]])});_0xc013x6e= (_0xc013x76[_0x497f[292]](parseInt(_0xc013x6a))!== -1)?true:false}else {_0xc013x6e= (parseInt(_0xc013x6a)=== _0xc013x61[_0x497f[285]])?true:false}}else {_0xc013x6e= true};return _0xc013x6b&& _0xc013x6c&& _0xc013x6d&& _0xc013x6e} \ No newline at end of file diff --git a/server/api/zendesk_account/index.js b/server/api/zendesk_account/index.js index 46ca688..7816880 100644 --- a/server/api/zendesk_account/index.js +++ b/server/api/zendesk_account/index.js @@ -1,28 +1 @@ -'use strict'; - -var express = require('express'); -var auth = require('../../auth/auth.service'); -var controller = require('./zendesk_account.controller'); - -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), auth.hasModule([19, 13], ['admin']), controller.index); -router.get('/:id', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.show); -router.get('/:id/check', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.checkAccount); -router.get('/:id/fields', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.getFields); -router.get('/:id/configurations', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.getAccountConfigurations); -router.get('/:id/configurations/:cid', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.getConfiguration); -router.post('/validate/:field', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.zendeskValidation); -router.post('/', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.create); -router.post('/:id/configurations', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.createConfiguration); -router.post('/:id/configurations/:cid/:type', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.createField); -router.put('/:id', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.update); -router.put('/:id/configurations/:cid/tags', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.addConfigurationTags); -router.put('/:id/configurations/:cid/fields/:fid', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.updateField); -router.delete('/', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.bulkDestroy); -router.delete('/:id', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.destroy); -router.delete('/:id/configurations', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.bulkDestroyConfigurations); -router.delete('/:id/configurations/:cid', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.destroyConfiguration); -router.delete('/:id/configurations/:cid/fields/:fid', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.destroyField); - -module.exports = router; +var _0x337e=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2F\x7A\x65\x6E\x64\x65\x73\x6B\x5F\x61\x63\x63\x6F\x75\x6E\x74\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x2F\x3A\x69\x64\x2F\x63\x68\x65\x63\x6B","\x63\x68\x65\x63\x6B\x41\x63\x63\x6F\x75\x6E\x74","\x2F\x3A\x69\x64\x2F\x66\x69\x65\x6C\x64\x73","\x67\x65\x74\x46\x69\x65\x6C\x64\x73","\x2F\x3A\x69\x64\x2F\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x73","\x67\x65\x74\x41\x63\x63\x6F\x75\x6E\x74\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x73","\x2F\x3A\x69\x64\x2F\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x73\x2F\x3A\x63\x69\x64","\x67\x65\x74\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E","\x2F\x76\x61\x6C\x69\x64\x61\x74\x65\x2F\x3A\x66\x69\x65\x6C\x64","\x7A\x65\x6E\x64\x65\x73\x6B\x56\x61\x6C\x69\x64\x61\x74\x69\x6F\x6E","\x70\x6F\x73\x74","\x63\x72\x65\x61\x74\x65","\x63\x72\x65\x61\x74\x65\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E","\x2F\x3A\x69\x64\x2F\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x73\x2F\x3A\x63\x69\x64\x2F\x3A\x74\x79\x70\x65","\x63\x72\x65\x61\x74\x65\x46\x69\x65\x6C\x64","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x2F\x3A\x69\x64\x2F\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x73\x2F\x3A\x63\x69\x64\x2F\x74\x61\x67\x73","\x61\x64\x64\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x54\x61\x67\x73","\x2F\x3A\x69\x64\x2F\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x73\x2F\x3A\x63\x69\x64\x2F\x66\x69\x65\x6C\x64\x73\x2F\x3A\x66\x69\x64","\x75\x70\x64\x61\x74\x65\x46\x69\x65\x6C\x64","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x73","\x64\x65\x73\x74\x72\x6F\x79\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E","\x64\x65\x73\x74\x72\x6F\x79\x46\x69\x65\x6C\x64","\x65\x78\x70\x6F\x72\x74\x73"];_0x337e[0];var express=require(_0x337e[1]);var auth=require(_0x337e[2]);var controller=require(_0x337e[3]);var router=express.Router();router[_0x337e[9]](_0x337e[4],auth[_0x337e[5]](),auth[_0x337e[7]]([19,13],[_0x337e[6]]),controller[_0x337e[8]]);router[_0x337e[9]](_0x337e[10],auth[_0x337e[5]](),auth[_0x337e[7]]([19],[_0x337e[6]]),controller[_0x337e[11]]);router[_0x337e[9]](_0x337e[12],auth[_0x337e[5]](),auth[_0x337e[7]]([19],[_0x337e[6]]),controller[_0x337e[13]]);router[_0x337e[9]](_0x337e[14],auth[_0x337e[5]](),auth[_0x337e[7]]([19],[_0x337e[6]]),controller[_0x337e[15]]);router[_0x337e[9]](_0x337e[16],auth[_0x337e[5]](),auth[_0x337e[7]]([19],[_0x337e[6]]),controller[_0x337e[17]]);router[_0x337e[9]](_0x337e[18],auth[_0x337e[5]](),auth[_0x337e[7]]([19],[_0x337e[6]]),controller[_0x337e[19]]);router[_0x337e[22]](_0x337e[20],auth[_0x337e[5]](),auth[_0x337e[7]]([19],[_0x337e[6]]),controller[_0x337e[21]]);router[_0x337e[22]](_0x337e[4],auth[_0x337e[5]](),auth[_0x337e[7]]([19],[_0x337e[6]]),controller[_0x337e[23]]);router[_0x337e[22]](_0x337e[16],auth[_0x337e[5]](),auth[_0x337e[7]]([19],[_0x337e[6]]),controller[_0x337e[24]]);router[_0x337e[22]](_0x337e[25],auth[_0x337e[5]](),auth[_0x337e[7]]([19],[_0x337e[6]]),controller[_0x337e[26]]);router[_0x337e[28]](_0x337e[10],auth[_0x337e[5]](),auth[_0x337e[7]]([19],[_0x337e[6]]),controller[_0x337e[27]]);router[_0x337e[28]](_0x337e[29],auth[_0x337e[5]](),auth[_0x337e[7]]([19],[_0x337e[6]]),controller[_0x337e[30]]);router[_0x337e[28]](_0x337e[31],auth[_0x337e[5]](),auth[_0x337e[7]]([19],[_0x337e[6]]),controller[_0x337e[32]]);router[_0x337e[34]](_0x337e[4],auth[_0x337e[5]](),auth[_0x337e[7]]([19],[_0x337e[6]]),controller[_0x337e[33]]);router[_0x337e[34]](_0x337e[10],auth[_0x337e[5]](),auth[_0x337e[7]]([19],[_0x337e[6]]),controller[_0x337e[35]]);router[_0x337e[34]](_0x337e[16],auth[_0x337e[5]](),auth[_0x337e[7]]([19],[_0x337e[6]]),controller[_0x337e[36]]);router[_0x337e[34]](_0x337e[18],auth[_0x337e[5]](),auth[_0x337e[7]]([19],[_0x337e[6]]),controller[_0x337e[37]]);router[_0x337e[34]](_0x337e[31],auth[_0x337e[5]](),auth[_0x337e[7]]([19],[_0x337e[6]]),controller[_0x337e[38]]);module[_0x337e[39]]= router \ No newline at end of file diff --git a/server/api/zendesk_account/zendesk_account.controller.js b/server/api/zendesk_account/zendesk_account.controller.js index 22ceb99..fd264bc 100644 --- a/server/api/zendesk_account/zendesk_account.controller.js +++ b/server/api/zendesk_account/zendesk_account.controller.js @@ -1,515 +1 @@ -'use strict'; - -var _ = require('lodash'); -var Util = require('../../config/util'); -var zendesk = require('node-zendesk'); - -var ZendeskAccount = require('../../models').ZendeskAccount; -var ZendeskConfiguration = require('../../models').ZendeskConfiguration; -var ZendeskField = require('../../models').ZendeskField; - -function handleError(res, statusCode) { - statusCode = statusCode || 500; - return function(err) { - res.status(statusCode).send(err); - }; -} - -function responseWithResult(res, statusCode) { - statusCode = statusCode || 200; - return function(entity) { - if (entity) { - res.status(statusCode).json(entity); - } - }; -} - -function responseWithoutResult(res, statusCode) { - statusCode = statusCode || 200; - return function() { - res.sendStatus(statusCode); - }; -} - -function handleEntityNotFound(res) { - return function(entity) { - if (!entity) { - res.status(404).end(); - return null; - } - return entity; - }; -} - -function saveUpdates(updates) { - return function(entity) { - return entity.updateAttributes(updates) - .then(function(updated) { - return updated; - }); - }; -} - -function removeEntity(res) { - return function(entity) { - if (entity) { - return entity.destroy() - .then(function() { - res.status(204).end(); - }); - } - }; -} - -// Get list of zendesk_accounts -exports.index = function(req, res, next) { - return ZendeskAccount - .scope('configurations') - .findAndCountAll(_.merge(Util.getQuery(req.query), { - distinct: true - })) - .then(responseWithResult(res)) - .catch(handleError(res)); -}; - -// Get a single zendesk_account -exports.show = function(req, res) { - return ZendeskAccount - .findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(responseWithResult(res)) - .catch(handleError(res)); -}; - -// Creates a new zendesk_account in the DB. -exports.create = function(req, res) { - return ZendeskAccount - .create(req.body) - .then(responseWithResult(res, 201)) - .catch(handleError(res)); -}; - -// Updates an existing zendesk_account in the DB. -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - return ZendeskAccount - .findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(saveUpdates(req.body)) - .then(responseWithResult(res)) - .catch(handleError(res)); -}; - -// Deletes a zendesk_account from the DB. -exports.destroy = function(req, res) { - return ZendeskAccount - .findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(removeEntity(res)) - .catch(handleError(res)); -}; - -exports.bulkDestroy = function(req, res) { - return ZendeskAccount - .destroy({ - where: { - id: req.query.ids - }, - individualHooks: true - }) - .then(responseWithResult(res, 204)) - .catch(handleError(res)); -}; - -exports.zendeskValidation = function(req, res) { - var where = {}; - where[req.params.field] = req.body.value; - return ZendeskAccount - .findAndCountAll({ - where: where - }) - .then(function(result) { - if (result.count) { - return res.status(200).send({ - isValid: false, - value: req.body.value - }); - } - return res.status(200).send({ - isValid: true, - value: req.body.value - }); - }) - .catch(handleError(res)); - -}; - -exports.checkAccount = function(req, res) { - return ZendeskAccount - .findById(req.params.id) - .then(function(account) { - var accountZendesk = { - username: account.username, - remoteUri: account.remoteUri, - // debug: true - }; - if (account.authType === 'password') { - accountZendesk.password = account.password; - } else if (account.authType === 'token') { - accountZendesk.token = account.token; - // accountZendesk.oauth = true; - } - // console.log(accountZendesk); - var client = zendesk.createClient(accountZendesk); - client.users.auth(function(err, res2, result) { - if (err) { - console.error(err); - return handleError(res, err); - } - // console.log(result); - if (!result.verified) { - return res.sendStatus(500); - } - return res.sendStatus(204); - }); - }) - .catch(handleError(res)); -}; - -exports.getFields = function(req, res) { - return ZendeskAccount - .findById(req.params.id) - .then(function(account) { - var accountZendesk = { - username: account.username, - remoteUri: account.remoteUri, - // debug: true - }; - if (account.authType === 'password') { - accountZendesk.password = account.password; - } else if (account.authType === 'token') { - accountZendesk.token = account.token; - } - var client = zendesk.createClient(accountZendesk); - client.ticketfields.list(function(err, res2, result) { - if (err) { - console.error(err); - return handleError(res, err); - } - return res.status(200).send(result); - }); - }) - .catch(handleError(res)); -} - -exports.getAccountConfigurations = function(req, res) { - return ZendeskConfiguration - .scope({ - method: ['account', req.params.id] - }) - .findAndCountAll(_.merge(Util.getQuery(req.query), { - distinct: true - })) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -exports.getConfiguration = function(req, res) { - - return ZendeskConfiguration - .scope({ - method: ['account', req.params.id] - }) - .findById(req.params.cid) - .then(handleEntityNotFound(res)) - .then(responseWithResult(res)) - .catch(handleError(res)); -} - -exports.destroyConfiguration = function(req, res) { - return ZendeskConfiguration - .scope({ - method: ['account', req.params.id] - }) - .findById(req.params.cid) - .then(handleEntityNotFound(res)) - .then(removeEntity(res)) - .catch(handleError(res)); -}; - -exports.bulkDestroyConfigurations = function(req, res) { - return ZendeskConfiguration - .destroy({ - where: { - id: req.query.ids - }, - individualHooks: true - }) - .then(responseWithResult(res, 204)) - .catch(handleError(res)); -}; - -exports.createConfiguration = function(req, res) { - req.body['AccountId'] = req.params.id; - - switch (req.body.channel) { - case 'voice': - - if (req.body.type === 'Queue') { - req.body.Subject = [{ - "type": "string", - "content": "[xCALLY Ticket]", - "variableName": null - }, { - "type": "variable", - "content": "", - "variableName": "queue" - }, { - "type": "variable", - "content": "", - "variableName": "calleridnum" - }]; - req.body.Description = [{ - "type": "string", - "content": "*** Call Info ***", - "key": null, - "keyType": null, - "variableName": null - }, { - "type": "keyValue", - "content": "", - "key": "Caller Number", - "keyType": "variable", - "variableName": "calleridnum" - }, { - "type": "keyValue", - "content": "", - "key": "Caller Name", - "keyType": "variable", - "variableName": "calleridname" - }, { - "type": "keyValue", - "content": "", - "key": "Call To", - "keyType": "variable", - "variableName": "destexten" - }, { - "type": "keyValue", - "content": "", - "key": "Queue", - "keyType": "variable", - "variableName": "queue" - }, { - "type": "keyValue", - "content": "", - "key": "UniqueId", - "keyType": "variable", - "variableName": "uniqueid" - }, { - "type": "keyValue", - "content": "", - "key": "Date", - "keyType": "variable", - "variableName": "agentcalledAt" - }, { - "type": "string", - "content": "*** Agent Info ***", - "key": null, - "keyType": null, - "variableName": null - }, { - "type": "keyValue", - "content": "", - "key": "Agent Name", - "keyType": "variable", - "variableName": "destcalleridname" - }, { - "type": "keyValue", - "content": "", - "key": "Agent Number", - "keyType": "variable", - "variableName": "destcalleridnum" - }, { - "type": "string", - "content": "*** Time Info ***", - "key": null, - "keyType": null, - "variableName": null - }, { - "type": "keyValue", - "content": "", - "key": "Agent Ring", - "keyType": "variable", - "variableName": "agentcalledAt" - }, { - "type": "keyValue", - "content": "", - "key": "Agent Connect", - "keyType": "variable", - "variableName": "agentconnectAt" - }, { - "type": "keyValue", - "content": "", - "key": "Agent Complete", - "keyType": "variable", - "variableName": "agentcompleteAt" - }, { - "type": "keyValue", - "content": "", - "key": "Hold Time", - "keyType": "variable", - "variableName": "holdtime" - }, { - "type": "keyValue", - "content": "", - "key": "Talk Time", - "keyType": "variable", - "variableName": "talktime" - }]; - } else if (req.body.type === 'Outbound') { - req.body.Subject = [{ - "type": "string", - "content": "[xCALLY Ticket]", - "variableName": null - }, { - "type": "string", - "content": "Outbound Call", - "variableName": null - }, { - "type": "variable", - "content": "", - "variableName": "destcalleridnum" - }]; - req.body.Description = [{ - "type": "string", - "content": "*** Call Info ***", - "variableName": null - }, { - "type": "keyValue", - "content": "", - "key": "Called Number", - "keyType": "variable", - "keyContent": "", - "variableName": "destcalleridnum" - }, { - "type": "keyValue", - "content": "", - "key": "Member Name", - "keyType": "variable", - "keyContent": "", - "variableName": "membername" - }, { - "type": "keyValue", - "content": "", - "key": "UniqueId", - "keyType": "variable", - "keyContent": "", - "variableName": "uniqueid" - }, { - "type": "keyValue", - "content": "", - "key": "Date", - "keyType": "variable", - "keyContent": "", - "variableName": "starttime" - }, { - "type": "string", - "content": "*** Time Info ***", - }, { - "type": "keyValue", - "content": "", - "key": "Answer Time", - "keyType": "variable", - "keyContent": "", - "variableName": "answertime" - }, { - "type": "keyValue", - "content": "", - "key": "Complete Time", - "keyType": "variable", - "keyContent": "", - "variableName": "endtime" - }]; - } - break; - default: - console.log('Channel not available:', req.body.channel); - } - - delete req.body.channel; - delete req.body.type; - - return ZendeskConfiguration - .create(req.body, { - include: [{ - model: ZendeskField, - as: 'Subject' - }, { - model: ZendeskField, - as: 'Description' - }] - }) - .then(responseWithResult(res, 201)) - .catch(handleError(res)); -}; - -exports.createField = function(req, res) { - return ZendeskConfiguration - .scope({ - method: ['account', req.params.id] - }) - .findById(req.params.cid) - .then(handleEntityNotFound(res)) - .then(function(configuration) { - switch (req.params.type) { - case 'subject': - req.body['SubjectId'] = req.params.cid; - break; - case 'description': - req.body['DescriptionId'] = req.params.cid; - break; - case 'field': - req.body['FieldId'] = req.params.cid; - break; - } - return ZendeskField.create(req.body); - }) - .then(responseWithResult(res, 201)) - .catch(handleError(res)); -}; - -exports.updateField = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - return ZendeskField - .findById(req.params.fid) - .then(handleEntityNotFound(res)) - .then(saveUpdates(req.body)) - .then(responseWithResult(res)) - .catch(handleError(res)); -}; - -exports.destroyField = function(req, res) { - return ZendeskField - .findById(req.params.fid) - .then(handleEntityNotFound(res)) - .then(removeEntity(res)) - .catch(handleError(res)); -}; - -exports.addConfigurationTags = function(req, res, next) { - return ZendeskConfiguration - .findById(req.params.cid) - .then(handleEntityNotFound(res)) - .then(function(configuration) { - return configuration.setTags(req.body); - }) - .then(responseWithoutResult(res, 200)) - .catch(function(err) { - console.error(err); - return handleError(res, err); - }); -}; +var _0xef5a=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x6E\x6F\x64\x65\x2D\x7A\x65\x6E\x64\x65\x73\x6B","\x5A\x65\x6E\x64\x65\x73\x6B\x41\x63\x63\x6F\x75\x6E\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x5A\x65\x6E\x64\x65\x73\x6B\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E","\x5A\x65\x6E\x64\x65\x73\x6B\x46\x69\x65\x6C\x64","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x6A\x73\x6F\x6E","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x65\x6E\x64","\x74\x68\x65\x6E","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x64\x65\x73\x74\x72\x6F\x79","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x6D\x65\x72\x67\x65","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x73","\x73\x63\x6F\x70\x65","\x73\x68\x6F\x77","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73","\x7A\x65\x6E\x64\x65\x73\x6B\x56\x61\x6C\x69\x64\x61\x74\x69\x6F\x6E","\x66\x69\x65\x6C\x64","\x76\x61\x6C\x75\x65","\x63\x6F\x75\x6E\x74","\x63\x68\x65\x63\x6B\x41\x63\x63\x6F\x75\x6E\x74","\x75\x73\x65\x72\x6E\x61\x6D\x65","\x72\x65\x6D\x6F\x74\x65\x55\x72\x69","\x61\x75\x74\x68\x54\x79\x70\x65","\x70\x61\x73\x73\x77\x6F\x72\x64","\x74\x6F\x6B\x65\x6E","\x63\x72\x65\x61\x74\x65\x43\x6C\x69\x65\x6E\x74","\x65\x72\x72\x6F\x72","\x76\x65\x72\x69\x66\x69\x65\x64","\x61\x75\x74\x68","\x75\x73\x65\x72\x73","\x67\x65\x74\x46\x69\x65\x6C\x64\x73","\x6C\x69\x73\x74","\x74\x69\x63\x6B\x65\x74\x66\x69\x65\x6C\x64\x73","\x67\x65\x74\x41\x63\x63\x6F\x75\x6E\x74\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x73","\x61\x63\x63\x6F\x75\x6E\x74","\x67\x65\x74\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E","\x63\x69\x64","\x64\x65\x73\x74\x72\x6F\x79\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x73","\x63\x72\x65\x61\x74\x65\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E","\x41\x63\x63\x6F\x75\x6E\x74\x49\x64","\x74\x79\x70\x65","\x51\x75\x65\x75\x65","\x53\x75\x62\x6A\x65\x63\x74","\x73\x74\x72\x69\x6E\x67","\x5B\x78\x43\x41\x4C\x4C\x59\x20\x54\x69\x63\x6B\x65\x74\x5D","\x76\x61\x72\x69\x61\x62\x6C\x65","","\x71\x75\x65\x75\x65","\x63\x61\x6C\x6C\x65\x72\x69\x64\x6E\x75\x6D","\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E","\x2A\x2A\x2A\x20\x43\x61\x6C\x6C\x20\x49\x6E\x66\x6F\x20\x2A\x2A\x2A","\x6B\x65\x79\x56\x61\x6C\x75\x65","\x43\x61\x6C\x6C\x65\x72\x20\x4E\x75\x6D\x62\x65\x72","\x43\x61\x6C\x6C\x65\x72\x20\x4E\x61\x6D\x65","\x63\x61\x6C\x6C\x65\x72\x69\x64\x6E\x61\x6D\x65","\x43\x61\x6C\x6C\x20\x54\x6F","\x64\x65\x73\x74\x65\x78\x74\x65\x6E","\x55\x6E\x69\x71\x75\x65\x49\x64","\x75\x6E\x69\x71\x75\x65\x69\x64","\x44\x61\x74\x65","\x61\x67\x65\x6E\x74\x63\x61\x6C\x6C\x65\x64\x41\x74","\x2A\x2A\x2A\x20\x41\x67\x65\x6E\x74\x20\x49\x6E\x66\x6F\x20\x2A\x2A\x2A","\x41\x67\x65\x6E\x74\x20\x4E\x61\x6D\x65","\x64\x65\x73\x74\x63\x61\x6C\x6C\x65\x72\x69\x64\x6E\x61\x6D\x65","\x41\x67\x65\x6E\x74\x20\x4E\x75\x6D\x62\x65\x72","\x64\x65\x73\x74\x63\x61\x6C\x6C\x65\x72\x69\x64\x6E\x75\x6D","\x2A\x2A\x2A\x20\x54\x69\x6D\x65\x20\x49\x6E\x66\x6F\x20\x2A\x2A\x2A","\x41\x67\x65\x6E\x74\x20\x52\x69\x6E\x67","\x41\x67\x65\x6E\x74\x20\x43\x6F\x6E\x6E\x65\x63\x74","\x61\x67\x65\x6E\x74\x63\x6F\x6E\x6E\x65\x63\x74\x41\x74","\x41\x67\x65\x6E\x74\x20\x43\x6F\x6D\x70\x6C\x65\x74\x65","\x61\x67\x65\x6E\x74\x63\x6F\x6D\x70\x6C\x65\x74\x65\x41\x74","\x48\x6F\x6C\x64\x20\x54\x69\x6D\x65","\x68\x6F\x6C\x64\x74\x69\x6D\x65","\x54\x61\x6C\x6B\x20\x54\x69\x6D\x65","\x74\x61\x6C\x6B\x74\x69\x6D\x65","\x4F\x75\x74\x62\x6F\x75\x6E\x64","\x4F\x75\x74\x62\x6F\x75\x6E\x64\x20\x43\x61\x6C\x6C","\x43\x61\x6C\x6C\x65\x64\x20\x4E\x75\x6D\x62\x65\x72","\x4D\x65\x6D\x62\x65\x72\x20\x4E\x61\x6D\x65","\x6D\x65\x6D\x62\x65\x72\x6E\x61\x6D\x65","\x73\x74\x61\x72\x74\x74\x69\x6D\x65","\x41\x6E\x73\x77\x65\x72\x20\x54\x69\x6D\x65","\x61\x6E\x73\x77\x65\x72\x74\x69\x6D\x65","\x43\x6F\x6D\x70\x6C\x65\x74\x65\x20\x54\x69\x6D\x65","\x65\x6E\x64\x74\x69\x6D\x65","\x76\x6F\x69\x63\x65","\x43\x68\x61\x6E\x6E\x65\x6C\x20\x6E\x6F\x74\x20\x61\x76\x61\x69\x6C\x61\x62\x6C\x65\x3A","\x63\x68\x61\x6E\x6E\x65\x6C","\x6C\x6F\x67","\x63\x72\x65\x61\x74\x65\x46\x69\x65\x6C\x64","\x53\x75\x62\x6A\x65\x63\x74\x49\x64","\x73\x75\x62\x6A\x65\x63\x74","\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E\x49\x64","\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E","\x46\x69\x65\x6C\x64\x49\x64","\x75\x70\x64\x61\x74\x65\x46\x69\x65\x6C\x64","\x66\x69\x64","\x64\x65\x73\x74\x72\x6F\x79\x46\x69\x65\x6C\x64","\x61\x64\x64\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x54\x61\x67\x73","\x73\x65\x74\x54\x61\x67\x73"];_0xef5a[0];var _=require(_0xef5a[1]);var Util=require(_0xef5a[2]);var zendesk=require(_0xef5a[3]);var ZendeskAccount=require(_0xef5a[5])[_0xef5a[4]];var ZendeskConfiguration=require(_0xef5a[5])[_0xef5a[6]];var ZendeskField=require(_0xef5a[5])[_0xef5a[7]];function handleError(_0x183dx8,_0x183dx9){_0x183dx9= _0x183dx9|| 500;return function(_0x183dxa){_0x183dx8[_0xef5a[9]](_0x183dx9)[_0xef5a[8]](_0x183dxa)}}function responseWithResult(_0x183dx8,_0x183dx9){_0x183dx9= _0x183dx9|| 200;return function(_0x183dxc){if(_0x183dxc){_0x183dx8[_0xef5a[9]](_0x183dx9)[_0xef5a[10]](_0x183dxc)}}}function responseWithoutResult(_0x183dx8,_0x183dx9){_0x183dx9= _0x183dx9|| 200;return function(){_0x183dx8[_0xef5a[11]](_0x183dx9)}}function handleEntityNotFound(_0x183dx8){return function(_0x183dxc){if(!_0x183dxc){_0x183dx8[_0xef5a[9]](404)[_0xef5a[12]]();return null};return _0x183dxc}}function saveUpdates(_0x183dx10){return function(_0x183dxc){return _0x183dxc[_0xef5a[14]](_0x183dx10)[_0xef5a[13]](function(_0x183dx11){return _0x183dx11})}}function removeEntity(_0x183dx8){return function(_0x183dxc){if(_0x183dxc){return _0x183dxc[_0xef5a[15]]()[_0xef5a[13]](function(){_0x183dx8[_0xef5a[9]](204)[_0xef5a[12]]()})}}}exports[_0xef5a[16]]= function(_0x183dx13,_0x183dx8,_0x183dx14){return ZendeskAccount[_0xef5a[23]](_0xef5a[22])[_0xef5a[21]](_[_0xef5a[20]](Util[_0xef5a[19]](_0x183dx13[_0xef5a[18]]),{distinct:true}))[_0xef5a[13]](responseWithResult(_0x183dx8))[_0xef5a[17]](handleError(_0x183dx8))};exports[_0xef5a[24]]= function(_0x183dx13,_0x183dx8){return ZendeskAccount[_0xef5a[27]](_0x183dx13[_0xef5a[26]][_0xef5a[25]])[_0xef5a[13]](handleEntityNotFound(_0x183dx8))[_0xef5a[13]](responseWithResult(_0x183dx8))[_0xef5a[17]](handleError(_0x183dx8))};exports[_0xef5a[28]]= function(_0x183dx13,_0x183dx8){return ZendeskAccount[_0xef5a[28]](_0x183dx13[_0xef5a[29]])[_0xef5a[13]](responseWithResult(_0x183dx8,201))[_0xef5a[17]](handleError(_0x183dx8))};exports[_0xef5a[30]]= function(_0x183dx13,_0x183dx8){if(_0x183dx13[_0xef5a[29]][_0xef5a[25]]){delete _0x183dx13[_0xef5a[29]][_0xef5a[25]]};return ZendeskAccount[_0xef5a[27]](_0x183dx13[_0xef5a[26]][_0xef5a[25]])[_0xef5a[13]](handleEntityNotFound(_0x183dx8))[_0xef5a[13]](saveUpdates(_0x183dx13[_0xef5a[29]]))[_0xef5a[13]](responseWithResult(_0x183dx8))[_0xef5a[17]](handleError(_0x183dx8))};exports[_0xef5a[15]]= function(_0x183dx13,_0x183dx8){return ZendeskAccount[_0xef5a[27]](_0x183dx13[_0xef5a[26]][_0xef5a[25]])[_0xef5a[13]](handleEntityNotFound(_0x183dx8))[_0xef5a[13]](removeEntity(_0x183dx8))[_0xef5a[17]](handleError(_0x183dx8))};exports[_0xef5a[31]]= function(_0x183dx13,_0x183dx8){return ZendeskAccount[_0xef5a[15]]({where:{id:_0x183dx13[_0xef5a[18]][_0xef5a[32]]},individualHooks:true})[_0xef5a[13]](responseWithResult(_0x183dx8,204))[_0xef5a[17]](handleError(_0x183dx8))};exports[_0xef5a[33]]= function(_0x183dx13,_0x183dx8){var _0x183dx15={};_0x183dx15[_0x183dx13[_0xef5a[26]][_0xef5a[34]]]= _0x183dx13[_0xef5a[29]][_0xef5a[35]];return ZendeskAccount[_0xef5a[21]]({where:_0x183dx15})[_0xef5a[13]](function(_0x183dx16){if(_0x183dx16[_0xef5a[36]]){return _0x183dx8[_0xef5a[9]](200)[_0xef5a[8]]({isValid:false,value:_0x183dx13[_0xef5a[29]][_0xef5a[35]]})};return _0x183dx8[_0xef5a[9]](200)[_0xef5a[8]]({isValid:true,value:_0x183dx13[_0xef5a[29]][_0xef5a[35]]})})[_0xef5a[17]](handleError(_0x183dx8))};exports[_0xef5a[37]]= function(_0x183dx13,_0x183dx8){return ZendeskAccount[_0xef5a[27]](_0x183dx13[_0xef5a[26]][_0xef5a[25]])[_0xef5a[13]](function(_0x183dx17){var _0x183dx18={username:_0x183dx17[_0xef5a[38]],remoteUri:_0x183dx17[_0xef5a[39]]};if(_0x183dx17[_0xef5a[40]]=== _0xef5a[41]){_0x183dx18[_0xef5a[41]]= _0x183dx17[_0xef5a[41]]}else {if(_0x183dx17[_0xef5a[40]]=== _0xef5a[42]){_0x183dx18[_0xef5a[42]]= _0x183dx17[_0xef5a[42]]}};var _0x183dx19=zendesk[_0xef5a[43]](_0x183dx18);_0x183dx19[_0xef5a[47]][_0xef5a[46]](function(_0x183dxa,_0x183dx1a,_0x183dx16){if(_0x183dxa){console[_0xef5a[44]](_0x183dxa);return handleError(_0x183dx8,_0x183dxa)};if(!_0x183dx16[_0xef5a[45]]){return _0x183dx8[_0xef5a[11]](500)};return _0x183dx8[_0xef5a[11]](204)})})[_0xef5a[17]](handleError(_0x183dx8))};exports[_0xef5a[48]]= function(_0x183dx13,_0x183dx8){return ZendeskAccount[_0xef5a[27]](_0x183dx13[_0xef5a[26]][_0xef5a[25]])[_0xef5a[13]](function(_0x183dx17){var _0x183dx18={username:_0x183dx17[_0xef5a[38]],remoteUri:_0x183dx17[_0xef5a[39]]};if(_0x183dx17[_0xef5a[40]]=== _0xef5a[41]){_0x183dx18[_0xef5a[41]]= _0x183dx17[_0xef5a[41]]}else {if(_0x183dx17[_0xef5a[40]]=== _0xef5a[42]){_0x183dx18[_0xef5a[42]]= _0x183dx17[_0xef5a[42]]}};var _0x183dx19=zendesk[_0xef5a[43]](_0x183dx18);_0x183dx19[_0xef5a[50]][_0xef5a[49]](function(_0x183dxa,_0x183dx1a,_0x183dx16){if(_0x183dxa){console[_0xef5a[44]](_0x183dxa);return handleError(_0x183dx8,_0x183dxa)};return _0x183dx8[_0xef5a[9]](200)[_0xef5a[8]](_0x183dx16)})})[_0xef5a[17]](handleError(_0x183dx8))};exports[_0xef5a[51]]= function(_0x183dx13,_0x183dx8){return ZendeskConfiguration[_0xef5a[23]]({method:[_0xef5a[52],_0x183dx13[_0xef5a[26]][_0xef5a[25]]]})[_0xef5a[21]](_[_0xef5a[20]](Util[_0xef5a[19]](_0x183dx13[_0xef5a[18]]),{distinct:true}))[_0xef5a[13]](responseWithResult(_0x183dx8))[_0xef5a[17]](handleError(_0x183dx8))};exports[_0xef5a[53]]= function(_0x183dx13,_0x183dx8){return ZendeskConfiguration[_0xef5a[23]]({method:[_0xef5a[52],_0x183dx13[_0xef5a[26]][_0xef5a[25]]]})[_0xef5a[27]](_0x183dx13[_0xef5a[26]][_0xef5a[54]])[_0xef5a[13]](handleEntityNotFound(_0x183dx8))[_0xef5a[13]](responseWithResult(_0x183dx8))[_0xef5a[17]](handleError(_0x183dx8))};exports[_0xef5a[55]]= function(_0x183dx13,_0x183dx8){return ZendeskConfiguration[_0xef5a[23]]({method:[_0xef5a[52],_0x183dx13[_0xef5a[26]][_0xef5a[25]]]})[_0xef5a[27]](_0x183dx13[_0xef5a[26]][_0xef5a[54]])[_0xef5a[13]](handleEntityNotFound(_0x183dx8))[_0xef5a[13]](removeEntity(_0x183dx8))[_0xef5a[17]](handleError(_0x183dx8))};exports[_0xef5a[56]]= function(_0x183dx13,_0x183dx8){return ZendeskConfiguration[_0xef5a[15]]({where:{id:_0x183dx13[_0xef5a[18]][_0xef5a[32]]},individualHooks:true})[_0xef5a[13]](responseWithResult(_0x183dx8,204))[_0xef5a[17]](handleError(_0x183dx8))};exports[_0xef5a[57]]= function(_0x183dx13,_0x183dx8){_0x183dx13[_0xef5a[29]][_0xef5a[58]]= _0x183dx13[_0xef5a[26]][_0xef5a[25]];switch(_0x183dx13[_0xef5a[29]][_0xef5a[107]]){case _0xef5a[105]:if(_0x183dx13[_0xef5a[29]][_0xef5a[59]]=== _0xef5a[60]){_0x183dx13[_0xef5a[29]][_0xef5a[61]]= [{"\x74\x79\x70\x65":_0xef5a[62],"\x63\x6F\x6E\x74\x65\x6E\x74":_0xef5a[63],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":null},{"\x74\x79\x70\x65":_0xef5a[64],"\x63\x6F\x6E\x74\x65\x6E\x74":_0xef5a[65],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0xef5a[66]},{"\x74\x79\x70\x65":_0xef5a[64],"\x63\x6F\x6E\x74\x65\x6E\x74":_0xef5a[65],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0xef5a[67]}];_0x183dx13[_0xef5a[29]][_0xef5a[68]]= [{"\x74\x79\x70\x65":_0xef5a[62],"\x63\x6F\x6E\x74\x65\x6E\x74":_0xef5a[69],"\x6B\x65\x79":null,"\x6B\x65\x79\x54\x79\x70\x65":null,"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":null},{"\x74\x79\x70\x65":_0xef5a[70],"\x63\x6F\x6E\x74\x65\x6E\x74":_0xef5a[65],"\x6B\x65\x79":_0xef5a[71],"\x6B\x65\x79\x54\x79\x70\x65":_0xef5a[64],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0xef5a[67]},{"\x74\x79\x70\x65":_0xef5a[70],"\x63\x6F\x6E\x74\x65\x6E\x74":_0xef5a[65],"\x6B\x65\x79":_0xef5a[72],"\x6B\x65\x79\x54\x79\x70\x65":_0xef5a[64],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0xef5a[73]},{"\x74\x79\x70\x65":_0xef5a[70],"\x63\x6F\x6E\x74\x65\x6E\x74":_0xef5a[65],"\x6B\x65\x79":_0xef5a[74],"\x6B\x65\x79\x54\x79\x70\x65":_0xef5a[64],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0xef5a[75]},{"\x74\x79\x70\x65":_0xef5a[70],"\x63\x6F\x6E\x74\x65\x6E\x74":_0xef5a[65],"\x6B\x65\x79":_0xef5a[60],"\x6B\x65\x79\x54\x79\x70\x65":_0xef5a[64],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0xef5a[66]},{"\x74\x79\x70\x65":_0xef5a[70],"\x63\x6F\x6E\x74\x65\x6E\x74":_0xef5a[65],"\x6B\x65\x79":_0xef5a[76],"\x6B\x65\x79\x54\x79\x70\x65":_0xef5a[64],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0xef5a[77]},{"\x74\x79\x70\x65":_0xef5a[70],"\x63\x6F\x6E\x74\x65\x6E\x74":_0xef5a[65],"\x6B\x65\x79":_0xef5a[78],"\x6B\x65\x79\x54\x79\x70\x65":_0xef5a[64],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0xef5a[79]},{"\x74\x79\x70\x65":_0xef5a[62],"\x63\x6F\x6E\x74\x65\x6E\x74":_0xef5a[80],"\x6B\x65\x79":null,"\x6B\x65\x79\x54\x79\x70\x65":null,"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":null},{"\x74\x79\x70\x65":_0xef5a[70],"\x63\x6F\x6E\x74\x65\x6E\x74":_0xef5a[65],"\x6B\x65\x79":_0xef5a[81],"\x6B\x65\x79\x54\x79\x70\x65":_0xef5a[64],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0xef5a[82]},{"\x74\x79\x70\x65":_0xef5a[70],"\x63\x6F\x6E\x74\x65\x6E\x74":_0xef5a[65],"\x6B\x65\x79":_0xef5a[83],"\x6B\x65\x79\x54\x79\x70\x65":_0xef5a[64],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0xef5a[84]},{"\x74\x79\x70\x65":_0xef5a[62],"\x63\x6F\x6E\x74\x65\x6E\x74":_0xef5a[85],"\x6B\x65\x79":null,"\x6B\x65\x79\x54\x79\x70\x65":null,"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":null},{"\x74\x79\x70\x65":_0xef5a[70],"\x63\x6F\x6E\x74\x65\x6E\x74":_0xef5a[65],"\x6B\x65\x79":_0xef5a[86],"\x6B\x65\x79\x54\x79\x70\x65":_0xef5a[64],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0xef5a[79]},{"\x74\x79\x70\x65":_0xef5a[70],"\x63\x6F\x6E\x74\x65\x6E\x74":_0xef5a[65],"\x6B\x65\x79":_0xef5a[87],"\x6B\x65\x79\x54\x79\x70\x65":_0xef5a[64],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0xef5a[88]},{"\x74\x79\x70\x65":_0xef5a[70],"\x63\x6F\x6E\x74\x65\x6E\x74":_0xef5a[65],"\x6B\x65\x79":_0xef5a[89],"\x6B\x65\x79\x54\x79\x70\x65":_0xef5a[64],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0xef5a[90]},{"\x74\x79\x70\x65":_0xef5a[70],"\x63\x6F\x6E\x74\x65\x6E\x74":_0xef5a[65],"\x6B\x65\x79":_0xef5a[91],"\x6B\x65\x79\x54\x79\x70\x65":_0xef5a[64],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0xef5a[92]},{"\x74\x79\x70\x65":_0xef5a[70],"\x63\x6F\x6E\x74\x65\x6E\x74":_0xef5a[65],"\x6B\x65\x79":_0xef5a[93],"\x6B\x65\x79\x54\x79\x70\x65":_0xef5a[64],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0xef5a[94]}]}else {if(_0x183dx13[_0xef5a[29]][_0xef5a[59]]=== _0xef5a[95]){_0x183dx13[_0xef5a[29]][_0xef5a[61]]= [{"\x74\x79\x70\x65":_0xef5a[62],"\x63\x6F\x6E\x74\x65\x6E\x74":_0xef5a[63],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":null},{"\x74\x79\x70\x65":_0xef5a[62],"\x63\x6F\x6E\x74\x65\x6E\x74":_0xef5a[96],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":null},{"\x74\x79\x70\x65":_0xef5a[64],"\x63\x6F\x6E\x74\x65\x6E\x74":_0xef5a[65],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0xef5a[84]}];_0x183dx13[_0xef5a[29]][_0xef5a[68]]= [{"\x74\x79\x70\x65":_0xef5a[62],"\x63\x6F\x6E\x74\x65\x6E\x74":_0xef5a[69],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":null},{"\x74\x79\x70\x65":_0xef5a[70],"\x63\x6F\x6E\x74\x65\x6E\x74":_0xef5a[65],"\x6B\x65\x79":_0xef5a[97],"\x6B\x65\x79\x54\x79\x70\x65":_0xef5a[64],"\x6B\x65\x79\x43\x6F\x6E\x74\x65\x6E\x74":_0xef5a[65],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0xef5a[84]},{"\x74\x79\x70\x65":_0xef5a[70],"\x63\x6F\x6E\x74\x65\x6E\x74":_0xef5a[65],"\x6B\x65\x79":_0xef5a[98],"\x6B\x65\x79\x54\x79\x70\x65":_0xef5a[64],"\x6B\x65\x79\x43\x6F\x6E\x74\x65\x6E\x74":_0xef5a[65],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0xef5a[99]},{"\x74\x79\x70\x65":_0xef5a[70],"\x63\x6F\x6E\x74\x65\x6E\x74":_0xef5a[65],"\x6B\x65\x79":_0xef5a[76],"\x6B\x65\x79\x54\x79\x70\x65":_0xef5a[64],"\x6B\x65\x79\x43\x6F\x6E\x74\x65\x6E\x74":_0xef5a[65],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0xef5a[77]},{"\x74\x79\x70\x65":_0xef5a[70],"\x63\x6F\x6E\x74\x65\x6E\x74":_0xef5a[65],"\x6B\x65\x79":_0xef5a[78],"\x6B\x65\x79\x54\x79\x70\x65":_0xef5a[64],"\x6B\x65\x79\x43\x6F\x6E\x74\x65\x6E\x74":_0xef5a[65],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0xef5a[100]},{"\x74\x79\x70\x65":_0xef5a[62],"\x63\x6F\x6E\x74\x65\x6E\x74":_0xef5a[85]},{"\x74\x79\x70\x65":_0xef5a[70],"\x63\x6F\x6E\x74\x65\x6E\x74":_0xef5a[65],"\x6B\x65\x79":_0xef5a[101],"\x6B\x65\x79\x54\x79\x70\x65":_0xef5a[64],"\x6B\x65\x79\x43\x6F\x6E\x74\x65\x6E\x74":_0xef5a[65],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0xef5a[102]},{"\x74\x79\x70\x65":_0xef5a[70],"\x63\x6F\x6E\x74\x65\x6E\x74":_0xef5a[65],"\x6B\x65\x79":_0xef5a[103],"\x6B\x65\x79\x54\x79\x70\x65":_0xef5a[64],"\x6B\x65\x79\x43\x6F\x6E\x74\x65\x6E\x74":_0xef5a[65],"\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65":_0xef5a[104]}]}};break;default:console[_0xef5a[108]](_0xef5a[106],_0x183dx13[_0xef5a[29]][_0xef5a[107]])};delete _0x183dx13[_0xef5a[29]][_0xef5a[107]];delete _0x183dx13[_0xef5a[29]][_0xef5a[59]];return ZendeskConfiguration[_0xef5a[28]](_0x183dx13[_0xef5a[29]],{include:[{model:ZendeskField,as:_0xef5a[61]},{model:ZendeskField,as:_0xef5a[68]}]})[_0xef5a[13]](responseWithResult(_0x183dx8,201))[_0xef5a[17]](handleError(_0x183dx8))};exports[_0xef5a[109]]= function(_0x183dx13,_0x183dx8){return ZendeskConfiguration[_0xef5a[23]]({method:[_0xef5a[52],_0x183dx13[_0xef5a[26]][_0xef5a[25]]]})[_0xef5a[27]](_0x183dx13[_0xef5a[26]][_0xef5a[54]])[_0xef5a[13]](handleEntityNotFound(_0x183dx8))[_0xef5a[13]](function(_0x183dx1b){switch(_0x183dx13[_0xef5a[26]][_0xef5a[59]]){case _0xef5a[111]:_0x183dx13[_0xef5a[29]][_0xef5a[110]]= _0x183dx13[_0xef5a[26]][_0xef5a[54]];break;case _0xef5a[113]:_0x183dx13[_0xef5a[29]][_0xef5a[112]]= _0x183dx13[_0xef5a[26]][_0xef5a[54]];break;case _0xef5a[34]:_0x183dx13[_0xef5a[29]][_0xef5a[114]]= _0x183dx13[_0xef5a[26]][_0xef5a[54]];break};return ZendeskField[_0xef5a[28]](_0x183dx13[_0xef5a[29]])})[_0xef5a[13]](responseWithResult(_0x183dx8,201))[_0xef5a[17]](handleError(_0x183dx8))};exports[_0xef5a[115]]= function(_0x183dx13,_0x183dx8){if(_0x183dx13[_0xef5a[29]][_0xef5a[25]]){delete _0x183dx13[_0xef5a[29]][_0xef5a[25]]};return ZendeskField[_0xef5a[27]](_0x183dx13[_0xef5a[26]][_0xef5a[116]])[_0xef5a[13]](handleEntityNotFound(_0x183dx8))[_0xef5a[13]](saveUpdates(_0x183dx13[_0xef5a[29]]))[_0xef5a[13]](responseWithResult(_0x183dx8))[_0xef5a[17]](handleError(_0x183dx8))};exports[_0xef5a[117]]= function(_0x183dx13,_0x183dx8){return ZendeskField[_0xef5a[27]](_0x183dx13[_0xef5a[26]][_0xef5a[116]])[_0xef5a[13]](handleEntityNotFound(_0x183dx8))[_0xef5a[13]](removeEntity(_0x183dx8))[_0xef5a[17]](handleError(_0x183dx8))};exports[_0xef5a[118]]= function(_0x183dx13,_0x183dx8,_0x183dx14){return ZendeskConfiguration[_0xef5a[27]](_0x183dx13[_0xef5a[26]][_0xef5a[54]])[_0xef5a[13]](handleEntityNotFound(_0x183dx8))[_0xef5a[13]](function(_0x183dx1b){return _0x183dx1b[_0xef5a[119]](_0x183dx13[_0xef5a[29]])})[_0xef5a[13]](responseWithoutResult(_0x183dx8,200))[_0xef5a[17]](function(_0x183dxa){console[_0xef5a[44]](_0x183dxa);return handleError(_0x183dx8,_0x183dxa)})} \ No newline at end of file diff --git a/server/api/zendesk_account/zendesk_account.events.js b/server/api/zendesk_account/zendesk_account.events.js index cf5855e..ad93eb3 100644 --- a/server/api/zendesk_account/zendesk_account.events.js +++ b/server/api/zendesk_account/zendesk_account.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const ZendeskAccount = require('../../models').ZendeskAccount; - -var ZendeskAccountEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -ZendeskAccountEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - ZendeskAccount.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - ZendeskAccountEvents.emit(event + ':' + doc._id, doc); - ZendeskAccountEvents.emit(event, doc); - done(null); - } -} - -module.exports = ZendeskAccountEvents; +var _0xad17=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x5A\x65\x6E\x64\x65\x73\x6B\x41\x63\x63\x6F\x75\x6E\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xad17[0];const EventEmitter=require(_0xad17[1]);const ZendeskAccount=require(_0xad17[3])[_0xad17[2]];var ZendeskAccountEvents= new EventEmitter();ZendeskAccountEvents[_0xad17[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xad17[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xad17[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xad17[6]};for(var e in events){var event=events[e];ZendeskAccount[_0xad17[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xdbe5x8,_0xdbe5x9,_0xdbe5xa){ZendeskAccountEvents[_0xad17[10]](event+ _0xad17[8]+ _0xdbe5x8[_0xad17[9]],_0xdbe5x8);ZendeskAccountEvents[_0xad17[10]](event,_0xdbe5x8);_0xdbe5xa(null)}}module[_0xad17[11]]= ZendeskAccountEvents \ No newline at end of file diff --git a/server/api/zendesk_account/zendesk_account.socket.js b/server/api/zendesk_account/zendesk_account.socket.js index c2f0be2..4bf867d 100644 --- a/server/api/zendesk_account/zendesk_account.socket.js +++ b/server/api/zendesk_account/zendesk_account.socket.js @@ -1,32 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const ZendeskAccountEvents = require('./zendesk_account.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('zendesk_account:' + event, socket); - - ZendeskAccountEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - ZendeskAccountEvents.removeListener(event, listener); - }; -} +var _0x1acc=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x7A\x65\x6E\x64\x65\x73\x6B\x5F\x61\x63\x63\x6F\x75\x6E\x74\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x7A\x65\x6E\x64\x65\x73\x6B\x5F\x61\x63\x63\x6F\x75\x6E\x74\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x1acc[0];const ZendeskAccountEvents=require(_0x1acc[1]);var events=[_0x1acc[2],_0x1acc[3]];exports[_0x1acc[4]]= function(_0xbdd5x3){for(var _0xbdd5x4=0,_0xbdd5x5=events[_0x1acc[5]];_0xbdd5x4< _0xbdd5x5;_0xbdd5x4++){var _0xbdd5x6=events[_0xbdd5x4];var _0xbdd5x7=createListener(_0x1acc[6]+ _0xbdd5x6,_0xbdd5x3);ZendeskAccountEvents[_0x1acc[7]](_0xbdd5x6,_0xbdd5x7);_0xbdd5x3[_0x1acc[7]](_0x1acc[8],removeListener(_0xbdd5x6,_0xbdd5x7))}};function createListener(_0xbdd5x6,_0xbdd5x3){return function(_0xbdd5x9){_0xbdd5x3[_0x1acc[9]](_0xbdd5x6,_0xbdd5x9)}}function removeListener(_0xbdd5x6,_0xbdd5x7){return function(){ZendeskAccountEvents[_0x1acc[10]](_0xbdd5x6,_0xbdd5x7)}} \ No newline at end of file diff --git a/server/api/zendesk_configuration/index.js b/server/api/zendesk_configuration/index.js index f91b034..ce94855 100644 --- a/server/api/zendesk_configuration/index.js +++ b/server/api/zendesk_configuration/index.js @@ -1,16 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./zendesk_configuration.controller'); -var auth = require('../../auth/auth.service'); -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.index); -router.get('/:id', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.show); -router.post('/', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.create); -router.put('/:id', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.update); -router.post('/:id/tags', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.addConfigurationTags); -router.post('/:id/:type', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.addConfigurationField); -router.delete('/:id', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.destroy); - -module.exports = router; +var _0xe608=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x7A\x65\x6E\x64\x65\x73\x6B\x5F\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x2F\x3A\x69\x64\x2F\x74\x61\x67\x73","\x61\x64\x64\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x54\x61\x67\x73","\x2F\x3A\x69\x64\x2F\x3A\x74\x79\x70\x65","\x61\x64\x64\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x46\x69\x65\x6C\x64","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0xe608[0];var express=require(_0xe608[1]);var controller=require(_0xe608[2]);var auth=require(_0xe608[3]);var router=express.Router();router[_0xe608[9]](_0xe608[4],auth[_0xe608[5]](),auth[_0xe608[7]]([19],[_0xe608[6]]),controller[_0xe608[8]]);router[_0xe608[9]](_0xe608[10],auth[_0xe608[5]](),auth[_0xe608[7]]([19],[_0xe608[6]]),controller[_0xe608[11]]);router[_0xe608[13]](_0xe608[4],auth[_0xe608[5]](),auth[_0xe608[7]]([19],[_0xe608[6]]),controller[_0xe608[12]]);router[_0xe608[15]](_0xe608[10],auth[_0xe608[5]](),auth[_0xe608[7]]([19],[_0xe608[6]]),controller[_0xe608[14]]);router[_0xe608[13]](_0xe608[16],auth[_0xe608[5]](),auth[_0xe608[7]]([19],[_0xe608[6]]),controller[_0xe608[17]]);router[_0xe608[13]](_0xe608[18],auth[_0xe608[5]](),auth[_0xe608[7]]([19],[_0xe608[6]]),controller[_0xe608[19]]);router[_0xe608[21]](_0xe608[10],auth[_0xe608[5]](),auth[_0xe608[7]]([19],[_0xe608[6]]),controller[_0xe608[20]]);module[_0xe608[22]]= router \ No newline at end of file diff --git a/server/api/zendesk_configuration/zendesk_configuration.controller.js b/server/api/zendesk_configuration/zendesk_configuration.controller.js index e299424..472e252 100644 --- a/server/api/zendesk_configuration/zendesk_configuration.controller.js +++ b/server/api/zendesk_configuration/zendesk_configuration.controller.js @@ -1,181 +1 @@ -'use strict'; - -var _ = require('lodash'); -var ZendeskConfiguration = require('../../models').ZendeskConfiguration; -var ZendeskField = require('../../models').ZendeskField; - -// Get list of zendesk_configurations -exports.index = function(req, res) { - ZendeskConfiguration - .findAll({ - where: req.query - }) - .then(function(zendesk_configurations) { - return res.status(200).send(zendesk_configurations); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get a single zendesk_configuration -exports.show = function(req, res) { - ZendeskConfiguration - .find({ - where: { - id: req.params.id - }, - include: [{ - all: true - }] - }) - .then(function(zendesk_configuration) { - if (!zendesk_configuration) { - return res.sendStatus(404); - } - return res.send(zendesk_configuration); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Creates a new zendesk_configuration in the DB. -exports.create = function(req, res) { - ZendeskConfiguration - .create(req.body) - .then(function(zendesk_configuration) { - return res.status(201).send(zendesk_configuration); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Updates an existing zendesk_configuration in the DB. -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - ZendeskConfiguration - .findById(req.params.id) - .then(function(zendesk_configuration) { - if (!zendesk_configuration) { - return res.sendStatus(404); - } - var updated = _.merge(zendesk_configuration, req.body); - updated.save() - .then(function() { - return res.status(200).send(zendesk_configuration); - }) - .catch(function(err) { - return handleError(res, err); - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes a zendesk_configuration from the DB. -exports.destroy = function(req, res) { - ZendeskConfiguration - .findById(req.params.id) - .then(function(zendesk_configuration) { - if (!zendesk_configuration) { - return res.sendStatus(404); - } - zendesk_configuration.destroy() - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -exports.addConfigurationField = function(req, res, next) { - // console.log(req.params); - ZendeskConfiguration - .findById(req.params.id) - .then(function(configuration) { - if (!configuration) { - return res.sendStatus(500); - } - ZendeskField - .create(req.body) - .then(function(field) { - switch (req.params.type) { - case 'subject': - configuration.addSubject(field) - .then(function() { - return res.status(200).send(field); - }) - .catch(function(err) { - return handleError(res, err); - }); - break; - case 'description': - configuration.addDescription(field) - .then(function() { - return res.status(200).send(field); - }) - .catch(function(err) { - return handleError(res, err); - }); - break; - case 'field': - configuration.addField(field) - .then(function() { - return res.status(200).send(field); - }) - .catch(function(err) { - return handleError(res, err); - }); - break; - } - }) - .catch(function(err) { - return handleError(res, err); - // return next(err); - }); - }) - .catch(function(err) { - // return next(err); - return handleError(res, err); - }); -}; - -exports.addConfigurationTags = function(req, res, next) { - ZendeskConfiguration - .findById(req.params.id) - .then(handleEntityNotFound(res)) - .then(function(configuration) { - return configuration.setTags(req.body); - }) - .then(function(data) { - return res.sendStatus(200); - }) - .catch(function(err) { - console.error(err); - return handleError(res, err); - }); -}; - -function handleEntityNotFound(res) { - return function(entity) { - if (!entity) { - res.status(404).end(); - return null; - } - return entity; - }; -} - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0x6033=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x5A\x65\x6E\x64\x65\x73\x6B\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x5A\x65\x6E\x64\x65\x73\x6B\x46\x69\x65\x6C\x64","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x66\x69\x6E\x64\x42\x79\x49\x64","\x64\x65\x73\x74\x72\x6F\x79","\x61\x64\x64\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x46\x69\x65\x6C\x64","\x61\x64\x64\x53\x75\x62\x6A\x65\x63\x74","\x73\x75\x62\x6A\x65\x63\x74","\x61\x64\x64\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E","\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E","\x61\x64\x64\x46\x69\x65\x6C\x64","\x66\x69\x65\x6C\x64","\x74\x79\x70\x65","\x61\x64\x64\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x54\x61\x67\x73","\x65\x72\x72\x6F\x72","\x73\x65\x74\x54\x61\x67\x73","\x65\x6E\x64"];_0x6033[0];var _=require(_0x6033[1]);var ZendeskConfiguration=require(_0x6033[3])[_0x6033[2]];var ZendeskField=require(_0x6033[3])[_0x6033[4]];exports[_0x6033[5]]= function(_0xb736x4,_0xb736x5){ZendeskConfiguration[_0x6033[11]]({where:_0xb736x4[_0x6033[10]]})[_0x6033[9]](function(_0xb736x7){return _0xb736x5[_0x6033[8]](200)[_0x6033[7]](_0xb736x7)})[_0x6033[6]](function(_0xb736x6){return handleError(_0xb736x5,_0xb736x6)})};exports[_0x6033[12]]= function(_0xb736x4,_0xb736x5){ZendeskConfiguration[_0x6033[16]]({where:{id:_0xb736x4[_0x6033[15]][_0x6033[14]]},include:[{all:true}]})[_0x6033[9]](function(_0xb736x8){if(!_0xb736x8){return _0xb736x5[_0x6033[13]](404)};return _0xb736x5[_0x6033[7]](_0xb736x8)})[_0x6033[6]](function(_0xb736x6){return handleError(_0xb736x5,_0xb736x6)})};exports[_0x6033[17]]= function(_0xb736x4,_0xb736x5){ZendeskConfiguration[_0x6033[17]](_0xb736x4[_0x6033[18]])[_0x6033[9]](function(_0xb736x8){return _0xb736x5[_0x6033[8]](201)[_0x6033[7]](_0xb736x8)})[_0x6033[6]](function(_0xb736x6){return handleError(_0xb736x5,_0xb736x6)})};exports[_0x6033[19]]= function(_0xb736x4,_0xb736x5){if(_0xb736x4[_0x6033[18]][_0x6033[14]]){delete _0xb736x4[_0x6033[18]][_0x6033[14]]};ZendeskConfiguration[_0x6033[22]](_0xb736x4[_0x6033[15]][_0x6033[14]])[_0x6033[9]](function(_0xb736x8){if(!_0xb736x8){return _0xb736x5[_0x6033[13]](404)};var _0xb736x9=_[_0x6033[20]](_0xb736x8,_0xb736x4[_0x6033[18]]);_0xb736x9[_0x6033[21]]()[_0x6033[9]](function(){return _0xb736x5[_0x6033[8]](200)[_0x6033[7]](_0xb736x8)})[_0x6033[6]](function(_0xb736x6){return handleError(_0xb736x5,_0xb736x6)})})[_0x6033[6]](function(_0xb736x6){return handleError(_0xb736x5,_0xb736x6)})};exports[_0x6033[23]]= function(_0xb736x4,_0xb736x5){ZendeskConfiguration[_0x6033[22]](_0xb736x4[_0x6033[15]][_0x6033[14]])[_0x6033[9]](function(_0xb736x8){if(!_0xb736x8){return _0xb736x5[_0x6033[13]](404)};_0xb736x8[_0x6033[23]]()[_0x6033[9]](function(){return _0xb736x5[_0x6033[13]](204)})[_0x6033[6]](function(_0xb736x6){return handleError(_0xb736x5,_0xb736x6)})})[_0x6033[6]](function(_0xb736x6){return handleError(_0xb736x5,_0xb736x6)})};exports[_0x6033[24]]= function(_0xb736x4,_0xb736x5,_0xb736xa){ZendeskConfiguration[_0x6033[22]](_0xb736x4[_0x6033[15]][_0x6033[14]])[_0x6033[9]](function(_0xb736xb){if(!_0xb736xb){return _0xb736x5[_0x6033[13]](500)};ZendeskField[_0x6033[17]](_0xb736x4[_0x6033[18]])[_0x6033[9]](function(_0xb736xc){switch(_0xb736x4[_0x6033[15]][_0x6033[31]]){case _0x6033[26]:_0xb736xb[_0x6033[25]](_0xb736xc)[_0x6033[9]](function(){return _0xb736x5[_0x6033[8]](200)[_0x6033[7]](_0xb736xc)})[_0x6033[6]](function(_0xb736x6){return handleError(_0xb736x5,_0xb736x6)});break;case _0x6033[28]:_0xb736xb[_0x6033[27]](_0xb736xc)[_0x6033[9]](function(){return _0xb736x5[_0x6033[8]](200)[_0x6033[7]](_0xb736xc)})[_0x6033[6]](function(_0xb736x6){return handleError(_0xb736x5,_0xb736x6)});break;case _0x6033[30]:_0xb736xb[_0x6033[29]](_0xb736xc)[_0x6033[9]](function(){return _0xb736x5[_0x6033[8]](200)[_0x6033[7]](_0xb736xc)})[_0x6033[6]](function(_0xb736x6){return handleError(_0xb736x5,_0xb736x6)});break}})[_0x6033[6]](function(_0xb736x6){return handleError(_0xb736x5,_0xb736x6)})})[_0x6033[6]](function(_0xb736x6){return handleError(_0xb736x5,_0xb736x6)})};exports[_0x6033[32]]= function(_0xb736x4,_0xb736x5,_0xb736xa){ZendeskConfiguration[_0x6033[22]](_0xb736x4[_0x6033[15]][_0x6033[14]])[_0x6033[9]](handleEntityNotFound(_0xb736x5))[_0x6033[9]](function(_0xb736xb){return _0xb736xb[_0x6033[34]](_0xb736x4[_0x6033[18]])})[_0x6033[9]](function(_0xb736xd){return _0xb736x5[_0x6033[13]](200)})[_0x6033[6]](function(_0xb736x6){console[_0x6033[33]](_0xb736x6);return handleError(_0xb736x5,_0xb736x6)})};function handleEntityNotFound(_0xb736x5){return function(_0xb736xf){if(!_0xb736xf){_0xb736x5[_0x6033[8]](404)[_0x6033[35]]();return null};return _0xb736xf}}function handleError(_0xb736x5,_0xb736x6){return _0xb736x5[_0x6033[8]](500)[_0x6033[7]](_0xb736x6)} \ No newline at end of file diff --git a/server/api/zendesk_configuration/zendesk_configuration.events.js b/server/api/zendesk_configuration/zendesk_configuration.events.js index f745627..d1611d9 100644 --- a/server/api/zendesk_configuration/zendesk_configuration.events.js +++ b/server/api/zendesk_configuration/zendesk_configuration.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const ZendeskConfiguration = require('../../models').ZendeskConfiguration; - -var ZendeskConfigurationEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -ZendeskConfigurationEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - ZendeskConfiguration.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - ZendeskConfigurationEvents.emit(event + ':' + doc._id, doc); - ZendeskConfigurationEvents.emit(event, doc); - done(null); - } -} - -module.exports = ZendeskConfigurationEvents; +var _0x7db7=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x5A\x65\x6E\x64\x65\x73\x6B\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x7db7[0];const EventEmitter=require(_0x7db7[1]);const ZendeskConfiguration=require(_0x7db7[3])[_0x7db7[2]];var ZendeskConfigurationEvents= new EventEmitter();ZendeskConfigurationEvents[_0x7db7[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0x7db7[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0x7db7[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0x7db7[6]};for(var e in events){var event=events[e];ZendeskConfiguration[_0x7db7[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xb55ax8,_0xb55ax9,_0xb55axa){ZendeskConfigurationEvents[_0x7db7[10]](event+ _0x7db7[8]+ _0xb55ax8[_0x7db7[9]],_0xb55ax8);ZendeskConfigurationEvents[_0x7db7[10]](event,_0xb55ax8);_0xb55axa(null)}}module[_0x7db7[11]]= ZendeskConfigurationEvents \ No newline at end of file diff --git a/server/api/zendesk_configuration/zendesk_configuration.socket.js b/server/api/zendesk_configuration/zendesk_configuration.socket.js index e6e6b68..51a60f0 100644 --- a/server/api/zendesk_configuration/zendesk_configuration.socket.js +++ b/server/api/zendesk_configuration/zendesk_configuration.socket.js @@ -1,32 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const ZendeskConfigurationEvents = require('./zendesk_configuration.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('zendesk_configuration:' + event, socket); - - ZendeskConfigurationEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - ZendeskConfigurationEvents.removeListener(event, listener); - }; -} +var _0xa83f=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x7A\x65\x6E\x64\x65\x73\x6B\x5F\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x7A\x65\x6E\x64\x65\x73\x6B\x5F\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0xa83f[0];const ZendeskConfigurationEvents=require(_0xa83f[1]);var events=[_0xa83f[2],_0xa83f[3]];exports[_0xa83f[4]]= function(_0x5925x3){for(var _0x5925x4=0,_0x5925x5=events[_0xa83f[5]];_0x5925x4< _0x5925x5;_0x5925x4++){var _0x5925x6=events[_0x5925x4];var _0x5925x7=createListener(_0xa83f[6]+ _0x5925x6,_0x5925x3);ZendeskConfigurationEvents[_0xa83f[7]](_0x5925x6,_0x5925x7);_0x5925x3[_0xa83f[7]](_0xa83f[8],removeListener(_0x5925x6,_0x5925x7))}};function createListener(_0x5925x6,_0x5925x3){return function(_0x5925x9){_0x5925x3[_0xa83f[9]](_0x5925x6,_0x5925x9)}}function removeListener(_0x5925x6,_0x5925x7){return function(){ZendeskConfigurationEvents[_0xa83f[10]](_0x5925x6,_0x5925x7)}} \ No newline at end of file diff --git a/server/api/zendesk_field/index.js b/server/api/zendesk_field/index.js index e84b58d..241f84b 100644 --- a/server/api/zendesk_field/index.js +++ b/server/api/zendesk_field/index.js @@ -1,14 +1 @@ -'use strict'; - -var express = require('express'); -var controller = require('./zendesk_field.controller'); -var auth = require('../../auth/auth.service'); -var router = express.Router(); - -router.get('/', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.index); -router.get('/:id', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.show); -router.post('/', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.create); -router.put('/:id', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.update); -router.delete('/:id', auth.isAuthenticated(), auth.hasModule([19], ['admin']), controller.destroy); - -module.exports = router; +var _0xc1f1=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x7A\x65\x6E\x64\x65\x73\x6B\x5F\x66\x69\x65\x6C\x64\x2E\x63\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x75\x74\x68\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x61\x64\x6D\x69\x6E","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x69\x6E\x64\x65\x78","\x67\x65\x74","\x2F\x3A\x69\x64","\x73\x68\x6F\x77","\x63\x72\x65\x61\x74\x65","\x70\x6F\x73\x74","\x75\x70\x64\x61\x74\x65","\x70\x75\x74","\x64\x65\x73\x74\x72\x6F\x79","\x64\x65\x6C\x65\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0xc1f1[0];var express=require(_0xc1f1[1]);var controller=require(_0xc1f1[2]);var auth=require(_0xc1f1[3]);var router=express.Router();router[_0xc1f1[9]](_0xc1f1[4],auth[_0xc1f1[5]](),auth[_0xc1f1[7]]([19],[_0xc1f1[6]]),controller[_0xc1f1[8]]);router[_0xc1f1[9]](_0xc1f1[10],auth[_0xc1f1[5]](),auth[_0xc1f1[7]]([19],[_0xc1f1[6]]),controller[_0xc1f1[11]]);router[_0xc1f1[13]](_0xc1f1[4],auth[_0xc1f1[5]](),auth[_0xc1f1[7]]([19],[_0xc1f1[6]]),controller[_0xc1f1[12]]);router[_0xc1f1[15]](_0xc1f1[10],auth[_0xc1f1[5]](),auth[_0xc1f1[7]]([19],[_0xc1f1[6]]),controller[_0xc1f1[14]]);router[_0xc1f1[17]](_0xc1f1[10],auth[_0xc1f1[5]](),auth[_0xc1f1[7]]([19],[_0xc1f1[6]]),controller[_0xc1f1[16]]);module[_0xc1f1[18]]= router \ No newline at end of file diff --git a/server/api/zendesk_field/zendesk_field.controller.js b/server/api/zendesk_field/zendesk_field.controller.js index 48d0c38..75c726f 100644 --- a/server/api/zendesk_field/zendesk_field.controller.js +++ b/server/api/zendesk_field/zendesk_field.controller.js @@ -1,93 +1 @@ -'use strict'; - -var _ = require('lodash'); -var ZendeskField = require('../../models').ZendeskField; - -// Get list of zendesk_fields -exports.index = function(req, res) { - ZendeskField - .findAll() - .then(function(zendesk_fields) { - return res.status(200).send(zendesk_fields); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Get a single zendesk_field -exports.show = function(req, res) { - ZendeskField - .findById(req.params.id) - .then(function(zendesk_field) { - if (!zendesk_field) { - return res.sendStatus(404); - } - return res.send(zendesk_field); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Creates a new zendesk_field in the DB. -exports.create = function(req, res) { - ZendeskField - .create(req.body) - .then(function(zendesk_field) { - return res.status(201).send(zendesk_field); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Updates an existing zendesk_field in the DB. -exports.update = function(req, res) { - if (req.body.id) { - delete req.body.id; - } - ZendeskField - .findById(req.params.id) - .then(function(zendesk_field) { - if (!zendesk_field) { - return res.sendStatus(404); - } - var updated = _.merge(zendesk_field, req.body); - updated.save() - .then(function() { - return res.status(200).send(zendesk_field); - }) - .catch(function(err) { - return handleError(res, err); - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -// Deletes a zendesk_field from the DB. -exports.destroy = function(req, res) { - ZendeskField - .findById(req.params.id) - .then(function(zendesk_field) { - if (!zendesk_field) { - return res.sendStatus(404); - } - zendesk_field.destroy() - .then(function() { - return res.sendStatus(204); - }) - .catch(function(err) { - return handleError(res, err); - }); - }) - .catch(function(err) { - return handleError(res, err); - }); -}; - -function handleError(res, err) { - return res.status(500).send(err); -} +var _0x4dac=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x5A\x65\x6E\x64\x65\x73\x6B\x46\x69\x65\x6C\x64","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x64\x65\x73\x74\x72\x6F\x79"];_0x4dac[0];var _=require(_0x4dac[1]);var ZendeskField=require(_0x4dac[3])[_0x4dac[2]];exports[_0x4dac[4]]= function(_0xe31dx3,_0xe31dx4){ZendeskField[_0x4dac[9]]()[_0x4dac[8]](function(_0xe31dx6){return _0xe31dx4[_0x4dac[7]](200)[_0x4dac[6]](_0xe31dx6)})[_0x4dac[5]](function(_0xe31dx5){return handleError(_0xe31dx4,_0xe31dx5)})};exports[_0x4dac[10]]= function(_0xe31dx3,_0xe31dx4){ZendeskField[_0x4dac[14]](_0xe31dx3[_0x4dac[13]][_0x4dac[12]])[_0x4dac[8]](function(_0xe31dx7){if(!_0xe31dx7){return _0xe31dx4[_0x4dac[11]](404)};return _0xe31dx4[_0x4dac[6]](_0xe31dx7)})[_0x4dac[5]](function(_0xe31dx5){return handleError(_0xe31dx4,_0xe31dx5)})};exports[_0x4dac[15]]= function(_0xe31dx3,_0xe31dx4){ZendeskField[_0x4dac[15]](_0xe31dx3[_0x4dac[16]])[_0x4dac[8]](function(_0xe31dx7){return _0xe31dx4[_0x4dac[7]](201)[_0x4dac[6]](_0xe31dx7)})[_0x4dac[5]](function(_0xe31dx5){return handleError(_0xe31dx4,_0xe31dx5)})};exports[_0x4dac[17]]= function(_0xe31dx3,_0xe31dx4){if(_0xe31dx3[_0x4dac[16]][_0x4dac[12]]){delete _0xe31dx3[_0x4dac[16]][_0x4dac[12]]};ZendeskField[_0x4dac[14]](_0xe31dx3[_0x4dac[13]][_0x4dac[12]])[_0x4dac[8]](function(_0xe31dx7){if(!_0xe31dx7){return _0xe31dx4[_0x4dac[11]](404)};var _0xe31dx8=_[_0x4dac[18]](_0xe31dx7,_0xe31dx3[_0x4dac[16]]);_0xe31dx8[_0x4dac[19]]()[_0x4dac[8]](function(){return _0xe31dx4[_0x4dac[7]](200)[_0x4dac[6]](_0xe31dx7)})[_0x4dac[5]](function(_0xe31dx5){return handleError(_0xe31dx4,_0xe31dx5)})})[_0x4dac[5]](function(_0xe31dx5){return handleError(_0xe31dx4,_0xe31dx5)})};exports[_0x4dac[20]]= function(_0xe31dx3,_0xe31dx4){ZendeskField[_0x4dac[14]](_0xe31dx3[_0x4dac[13]][_0x4dac[12]])[_0x4dac[8]](function(_0xe31dx7){if(!_0xe31dx7){return _0xe31dx4[_0x4dac[11]](404)};_0xe31dx7[_0x4dac[20]]()[_0x4dac[8]](function(){return _0xe31dx4[_0x4dac[11]](204)})[_0x4dac[5]](function(_0xe31dx5){return handleError(_0xe31dx4,_0xe31dx5)})})[_0x4dac[5]](function(_0xe31dx5){return handleError(_0xe31dx4,_0xe31dx5)})};function handleError(_0xe31dx4,_0xe31dx5){return _0xe31dx4[_0x4dac[7]](500)[_0x4dac[6]](_0xe31dx5)} \ No newline at end of file diff --git a/server/api/zendesk_field/zendesk_field.events.js b/server/api/zendesk_field/zendesk_field.events.js index 3b68978..b8ec6c7 100644 --- a/server/api/zendesk_field/zendesk_field.events.js +++ b/server/api/zendesk_field/zendesk_field.events.js @@ -1,36 +1 @@ -/** - * Thing model events - */ - -'use strict'; - -const EventEmitter = require('events'); -const ZendeskField = require('../../models').ZendeskField; - -var ZendeskFieldEvents = new EventEmitter(); - -// Set max event listeners (0 == unlimited) -ZendeskFieldEvents.setMaxListeners(0); - -// Model events -var events = { - 'afterCreate': 'save', - 'afterUpdate': 'save', - 'afterDestroy': 'remove' -}; - -// Register the event emitter to the model events -for (var e in events) { - var event = events[e]; - ZendeskField.hook(e, emitEvent(event)); -} - -function emitEvent(event) { - return function(doc, options, done) { - ZendeskFieldEvents.emit(event + ':' + doc._id, doc); - ZendeskFieldEvents.emit(event, doc); - done(null); - } -} - -module.exports = ZendeskFieldEvents; +var _0xee01=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x76\x65\x6E\x74\x73","\x5A\x65\x6E\x64\x65\x73\x6B\x46\x69\x65\x6C\x64","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x68\x6F\x6F\x6B","\x3A","\x5F\x69\x64","\x65\x6D\x69\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xee01[0];const EventEmitter=require(_0xee01[1]);const ZendeskField=require(_0xee01[3])[_0xee01[2]];var ZendeskFieldEvents= new EventEmitter();ZendeskFieldEvents[_0xee01[4]](0);var events={"\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65":_0xee01[5],"\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65":_0xee01[5],"\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79":_0xee01[6]};for(var e in events){var event=events[e];ZendeskField[_0xee01[7]](e,emitEvent(event))};function emitEvent(event){return function(_0xe239x8,_0xe239x9,_0xe239xa){ZendeskFieldEvents[_0xee01[10]](event+ _0xee01[8]+ _0xe239x8[_0xee01[9]],_0xe239x8);ZendeskFieldEvents[_0xee01[10]](event,_0xe239x8);_0xe239xa(null)}}module[_0xee01[11]]= ZendeskFieldEvents \ No newline at end of file diff --git a/server/api/zendesk_field/zendesk_field.socket.js b/server/api/zendesk_field/zendesk_field.socket.js index 891c45b..8bec0ea 100644 --- a/server/api/zendesk_field/zendesk_field.socket.js +++ b/server/api/zendesk_field/zendesk_field.socket.js @@ -1,32 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -const ZendeskFieldEvents = require('./zendesk_field.events'); - -// Model events to emit -var events = ['save', 'remove']; - -exports.register = function(socket) { - for (var i = 0, eventsLength = events.length; i < eventsLength; i++) { - var event = events[i]; - var listener = createListener('zendesk_field:' + event, socket); - - ZendeskFieldEvents.on(event, listener); - socket.on('disconnect', removeListener(event, listener)); - } -} - -function createListener(event, socket) { - return function(doc) { - socket.emit(event, doc); - }; -} - -function removeListener(event, listener) { - return function() { - ZendeskFieldEvents.removeListener(event, listener); - }; -} +var _0x9c4a=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x7A\x65\x6E\x64\x65\x73\x6B\x5F\x66\x69\x65\x6C\x64\x2E\x65\x76\x65\x6E\x74\x73","\x73\x61\x76\x65","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x67\x69\x73\x74\x65\x72","\x6C\x65\x6E\x67\x74\x68","\x7A\x65\x6E\x64\x65\x73\x6B\x5F\x66\x69\x65\x6C\x64\x3A","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x65\x6D\x69\x74","\x72\x65\x6D\x6F\x76\x65\x4C\x69\x73\x74\x65\x6E\x65\x72"];_0x9c4a[0];const ZendeskFieldEvents=require(_0x9c4a[1]);var events=[_0x9c4a[2],_0x9c4a[3]];exports[_0x9c4a[4]]= function(_0x3807x3){for(var _0x3807x4=0,_0x3807x5=events[_0x9c4a[5]];_0x3807x4< _0x3807x5;_0x3807x4++){var _0x3807x6=events[_0x3807x4];var _0x3807x7=createListener(_0x9c4a[6]+ _0x3807x6,_0x3807x3);ZendeskFieldEvents[_0x9c4a[7]](_0x3807x6,_0x3807x7);_0x3807x3[_0x9c4a[7]](_0x9c4a[8],removeListener(_0x3807x6,_0x3807x7))}};function createListener(_0x3807x6,_0x3807x3){return function(_0x3807x9){_0x3807x3[_0x9c4a[9]](_0x3807x6,_0x3807x9)}}function removeListener(_0x3807x6,_0x3807x7){return function(){ZendeskFieldEvents[_0x9c4a[10]](_0x3807x6,_0x3807x7)}} \ No newline at end of file diff --git a/server/app.js b/server/app.js index 8aa95b8..0f70487 100644 --- a/server/app.js +++ b/server/app.js @@ -1,100 +1 @@ -'use strict'; - -/** - * Main application file - */ - -// Set default node environment to development -process.env.NODE_ENV = process.env.NODE_ENV || 'development'; -process.env.NODE_TLS_REJECT_UNAUTHORIZED = 0; - -process.on('uncaughtException', function(err) { - if (typeof err === 'object') { - if (err.message) { - console.log('\nMessage: ' + err.message) - } - if (err.stack) { - console.log('\nStacktrace:') - console.log('====================') - console.log(err.stack); - } - } else { - console.log('dumpError :: argument is not an object'); - } -}); - -var os = require('os'); -var http = require('http'); -var util = require('util'); -var crypto = require('crypto'); -var cronjob = require('cron').CronJob; -var shelljs = require('shelljs/global'); -var sticky = require('sticky-session'); - -var express = require('express'); -var config = require('./config/environment'); -var models = require('./models'); - -var sio = require('socket.io'); -var sio_redis = require('socket.io-redis'); - -// Setup server -var app = express(); -var server = http.createServer(app); - -// Start server -server.listen(config.port, config.ip, function() { - console.log('Express server listening on %d, in %s mode', config.port, app.get('env')); -}); - -var io = sio(server, { - serveClient: (config.env === 'production') ? false : true, - path: '/socket.io-client' -}); - -io.adapter(sio_redis({ - host: config.ip, - port: 6379 -})); - -require('./config/express')(app); -require('./routes')(app); - -models - .sequelize - .sync() - .then(function() { - - // Populate DB Develop with sample data - if (config.seedDB) { - require('./config/seed'); - } - // Populate DB Production with sample data - if (config.seedPDB) { - require('./config/seedp'); - } - - var cpAmi = require('./config/ami'); - - require('./services/dashboard')(cpAmi) - require('./config/socketio')(io); - require('./config/automations/mail')(); - require('./config/automations/fax')(); - require('./config/automations/chat')(); - require('./config/triggers')(cpAmi); - require('./config/scheduler')(); - require('./config/imap')(); - require('./config/smtp')(); - require('./config/sms')(); - require('./config/chat')(); - require('./config/openchannel')(); - require('./config/tools')(); - require('./config/agi')(); - require('./config/license')(); - }) - .catch(function(err) { - console.error(err); - }); - -// Expose app -exports = module.exports = app; +var _0xe93c=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x4E\x4F\x44\x45\x5F\x45\x4E\x56","\x65\x6E\x76","\x64\x65\x76\x65\x6C\x6F\x70\x6D\x65\x6E\x74","\x4E\x4F\x44\x45\x5F\x54\x4C\x53\x5F\x52\x45\x4A\x45\x43\x54\x5F\x55\x4E\x41\x55\x54\x48\x4F\x52\x49\x5A\x45\x44","\x75\x6E\x63\x61\x75\x67\x68\x74\x45\x78\x63\x65\x70\x74\x69\x6F\x6E","\x6F\x62\x6A\x65\x63\x74","\x6D\x65\x73\x73\x61\x67\x65","\x0A\x4D\x65\x73\x73\x61\x67\x65\x3A\x20","\x6C\x6F\x67","\x73\x74\x61\x63\x6B","\x0A\x53\x74\x61\x63\x6B\x74\x72\x61\x63\x65\x3A","\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D","\x64\x75\x6D\x70\x45\x72\x72\x6F\x72\x20\x3A\x3A\x20\x61\x72\x67\x75\x6D\x65\x6E\x74\x20\x69\x73\x20\x6E\x6F\x74\x20\x61\x6E\x20\x6F\x62\x6A\x65\x63\x74","\x6F\x6E","\x6F\x73","\x68\x74\x74\x70","\x75\x74\x69\x6C","\x63\x72\x79\x70\x74\x6F","\x43\x72\x6F\x6E\x4A\x6F\x62","\x63\x72\x6F\x6E","\x73\x68\x65\x6C\x6C\x6A\x73\x2F\x67\x6C\x6F\x62\x61\x6C","\x73\x74\x69\x63\x6B\x79\x2D\x73\x65\x73\x73\x69\x6F\x6E","\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x6F\x63\x6B\x65\x74\x2E\x69\x6F","\x73\x6F\x63\x6B\x65\x74\x2E\x69\x6F\x2D\x72\x65\x64\x69\x73","\x63\x72\x65\x61\x74\x65\x53\x65\x72\x76\x65\x72","\x70\x6F\x72\x74","\x69\x70","\x45\x78\x70\x72\x65\x73\x73\x20\x73\x65\x72\x76\x65\x72\x20\x6C\x69\x73\x74\x65\x6E\x69\x6E\x67\x20\x6F\x6E\x20\x25\x64\x2C\x20\x69\x6E\x20\x25\x73\x20\x6D\x6F\x64\x65","\x67\x65\x74","\x6C\x69\x73\x74\x65\x6E","\x70\x72\x6F\x64\x75\x63\x74\x69\x6F\x6E","\x2F\x73\x6F\x63\x6B\x65\x74\x2E\x69\x6F\x2D\x63\x6C\x69\x65\x6E\x74","\x61\x64\x61\x70\x74\x65\x72","\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x65\x78\x70\x72\x65\x73\x73","\x2E\x2F\x72\x6F\x75\x74\x65\x73","\x65\x72\x72\x6F\x72","\x63\x61\x74\x63\x68","\x73\x65\x65\x64\x44\x42","\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x73\x65\x65\x64","\x73\x65\x65\x64\x50\x44\x42","\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x73\x65\x65\x64\x70","\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x61\x6D\x69","\x2E\x2F\x73\x65\x72\x76\x69\x63\x65\x73\x2F\x64\x61\x73\x68\x62\x6F\x61\x72\x64","\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x73\x6F\x63\x6B\x65\x74\x69\x6F","\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x61\x75\x74\x6F\x6D\x61\x74\x69\x6F\x6E\x73\x2F\x6D\x61\x69\x6C","\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x61\x75\x74\x6F\x6D\x61\x74\x69\x6F\x6E\x73\x2F\x66\x61\x78","\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x61\x75\x74\x6F\x6D\x61\x74\x69\x6F\x6E\x73\x2F\x63\x68\x61\x74","\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x74\x72\x69\x67\x67\x65\x72\x73","\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x73\x63\x68\x65\x64\x75\x6C\x65\x72","\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x69\x6D\x61\x70","\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x73\x6D\x74\x70","\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x73\x6D\x73","\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x63\x68\x61\x74","\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C","\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x74\x6F\x6F\x6C\x73","\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x61\x67\x69","\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65","\x74\x68\x65\x6E","\x73\x79\x6E\x63","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0xe93c[0];process[_0xe93c[2]][_0xe93c[1]]= process[_0xe93c[2]][_0xe93c[1]]|| _0xe93c[3];process[_0xe93c[2]][_0xe93c[4]]= 0;process[_0xe93c[14]](_0xe93c[5],function(_0xe214x1){if( typeof _0xe214x1=== _0xe93c[6]){if(_0xe214x1[_0xe93c[7]]){console[_0xe93c[9]](_0xe93c[8]+ _0xe214x1[_0xe93c[7]])};if(_0xe214x1[_0xe93c[10]]){console[_0xe93c[9]](_0xe93c[11]);console[_0xe93c[9]](_0xe93c[12]);console[_0xe93c[9]](_0xe214x1[_0xe93c[10]])}}else {console[_0xe93c[9]](_0xe93c[13])}});var os=require(_0xe93c[15]);var http=require(_0xe93c[16]);var util=require(_0xe93c[17]);var crypto=require(_0xe93c[18]);var cronjob=require(_0xe93c[20])[_0xe93c[19]];var shelljs=require(_0xe93c[21]);var sticky=require(_0xe93c[22]);var express=require(_0xe93c[23]);var config=require(_0xe93c[24]);var models=require(_0xe93c[25]);var sio=require(_0xe93c[26]);var sio_redis=require(_0xe93c[27]);var app=express();var server=http[_0xe93c[28]](app);server[_0xe93c[33]](config[_0xe93c[29]],config[_0xe93c[30]],function(){console[_0xe93c[9]](_0xe93c[31],config[_0xe93c[29]],app[_0xe93c[32]](_0xe93c[2]))});var io=sio(server,{serveClient:(config[_0xe93c[2]]=== _0xe93c[34])?false:true,path:_0xe93c[35]});io[_0xe93c[36]](sio_redis({host:config[_0xe93c[30]],port:6379}));require(_0xe93c[37])(app);require(_0xe93c[38])(app);models[_0xe93c[63]][_0xe93c[62]]()[_0xe93c[61]](function(){if(config[_0xe93c[41]]){require(_0xe93c[42])};if(config[_0xe93c[43]]){require(_0xe93c[44])};var _0xe214x11=require(_0xe93c[45]);require(_0xe93c[46])(_0xe214x11);require(_0xe93c[47])(io);require(_0xe93c[48])();require(_0xe93c[49])();require(_0xe93c[50])();require(_0xe93c[51])(_0xe214x11);require(_0xe93c[52])();require(_0xe93c[53])();require(_0xe93c[54])();require(_0xe93c[55])();require(_0xe93c[56])();require(_0xe93c[57])();require(_0xe93c[58])();require(_0xe93c[59])();require(_0xe93c[60])()})[_0xe93c[40]](function(_0xe214x1){console[_0xe93c[39]](_0xe214x1)});exports= module[_0xe93c[64]]= app \ No newline at end of file diff --git a/server/auth/auth.service.js b/server/auth/auth.service.js index e82ba59..0f276cd 100644 --- a/server/auth/auth.service.js +++ b/server/auth/auth.service.js @@ -1,150 +1 @@ -'use strict'; - -//var mongoose = require('mongoose'); -var passport = require('passport'); -var config = require('../config/environment'); -var jwt = require('jsonwebtoken'); -var expressJwt = require('express-jwt'); -var compose = require('composable-middleware'); -// var User = require('../api/user/user.model'); -var User = require('../models').User; -var List = require('../models').List; -var validateJwt = expressJwt({ - secret: config.session.secret -}); -var Promise = require('bluebird'); -var _ = require('lodash'); - -/** - * Attaches the user object to the request if authenticated - * Otherwise returns 403 - */ -function isAuthenticated() { - return compose() - // Validate jwt - .use(function(req, res, next) { - // allow access_token to be passed through query parameter as well - if (req.query && req.query.hasOwnProperty('access_token')) { - req.headers.authorization = 'Bearer ' + req.query.access_token; - } - if (req.headers && req.headers.authorization && _.startsWith(req.headers.authorization, 'Basic')) { - var arrAuth = _.split(req.headers.authorization, ' '); - var authString = new Buffer(arrAuth[1], 'base64').toString("ascii"); - var username = _.split(authString, ':')[0]; - var pwd = _.split(authString, ':')[1]; - return User.findOne({ - where: { - name: username - } - }) - .then(function(user) { - if (!user || !user.authenticate(pwd)) { - next(new Error('Wrong credentials.')); - } - req.user = { - id: user.id - }; - next(); - }) - } else { - validateJwt(req, res, next); - } - }) - // Attach user to request - .use(function(req, res, next) { - User - .findById(req.user.id, { - include: [{ - model: List - }] - }) - .then(function(user) { - if (!user) return res.sendStatus(401); - req.user = user; - return next(); - }) - .catch(function(err) { - return next(err); - }); - }); -} - -/** - * Checks if the module meets the requirements - */ -function hasModule(modules, roles) { - return compose() - .use(function(req, res, next) { - return User - .findById(req.user.id) - .then(function(user) { - var bulkModule = []; - modules.forEach(function(element) { - bulkModule.push(user.hasModule(element)); - }); - return Promise.all(bulkModule); - }) - .then(function(hasModuleArr) { - var hasModule = (_.reduce(hasModuleArr, function(total, n) { - return total || n; - })); - if (_.includes(roles, req.user.role) || hasModule) { - return next(); - } else { - res.sendStatus(403); - } - }) - .catch(function(err) { - return next(err); - }); - }); -} - -/** - * Checks if the user role meets the minimum requirements of the route - */ -function hasRole(roleRequired) { - if (!roleRequired) throw new Error('Required role needs to be set'); - - return compose() - .use(isAuthenticated()) - .use(function meetsRequirements(req, res, next) { - if (config.userRoles.indexOf(req.user.role) >= config.userRoles.indexOf(roleRequired)) { - return next(); - } else { - return res.sendStatus(403); - } - }); -} - -/** - * Returns a jwt token signed by the app secret - */ -function signToken(id, role, remember) { - var expiresIn = 60 * 24 * 365 * 5; //If remember, it expires in 5 years - if (!remember) - expiresIn = "1d"; //Expire in one day - return jwt.sign({ - id: id - }, config.session.secret, { - expiresIn: expiresIn - }); -} - -/** - * Set token cookie directly for oAuth strategies - */ -function setTokenCookie(req, res) { - if (!req.user) return res.json(404, { - message: 'Something went wrong, please try again.' - }); - var token = signToken(req.user.id, req.user.role); - res.cookie('token', JSON.stringify(token)); - res.redirect('/'); -} - -exports.isAuthenticated = isAuthenticated; -exports.hasRole = hasRole; -exports.hasModule = hasModule; -exports.signToken = signToken; -exports.setTokenCookie = setTokenCookie; +var _0xa9d6=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x70\x61\x73\x73\x70\x6F\x72\x74","\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x6A\x73\x6F\x6E\x77\x65\x62\x74\x6F\x6B\x65\x6E","\x65\x78\x70\x72\x65\x73\x73\x2D\x6A\x77\x74","\x63\x6F\x6D\x70\x6F\x73\x61\x62\x6C\x65\x2D\x6D\x69\x64\x64\x6C\x65\x77\x61\x72\x65","\x55\x73\x65\x72","\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x4C\x69\x73\x74","\x73\x65\x63\x72\x65\x74","\x73\x65\x73\x73\x69\x6F\x6E","\x62\x6C\x75\x65\x62\x69\x72\x64","\x6C\x6F\x64\x61\x73\x68","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x75\x73\x65\x72","\x74\x68\x65\x6E","\x69\x64","\x66\x69\x6E\x64\x42\x79\x49\x64","\x75\x73\x65","\x71\x75\x65\x72\x79","\x61\x63\x63\x65\x73\x73\x5F\x74\x6F\x6B\x65\x6E","\x68\x61\x73\x4F\x77\x6E\x50\x72\x6F\x70\x65\x72\x74\x79","\x61\x75\x74\x68\x6F\x72\x69\x7A\x61\x74\x69\x6F\x6E","\x68\x65\x61\x64\x65\x72\x73","\x42\x65\x61\x72\x65\x72\x20","\x42\x61\x73\x69\x63","\x73\x74\x61\x72\x74\x73\x57\x69\x74\x68","\x20","\x73\x70\x6C\x69\x74","\x61\x73\x63\x69\x69","\x62\x61\x73\x65\x36\x34","\x3A","\x61\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65","\x57\x72\x6F\x6E\x67\x20\x63\x72\x65\x64\x65\x6E\x74\x69\x61\x6C\x73\x2E","\x66\x69\x6E\x64\x4F\x6E\x65","\x72\x65\x64\x75\x63\x65","\x72\x6F\x6C\x65","\x69\x6E\x63\x6C\x75\x64\x65\x73","\x68\x61\x73\x4D\x6F\x64\x75\x6C\x65","\x70\x75\x73\x68","\x66\x6F\x72\x45\x61\x63\x68","\x61\x6C\x6C","\x52\x65\x71\x75\x69\x72\x65\x64\x20\x72\x6F\x6C\x65\x20\x6E\x65\x65\x64\x73\x20\x74\x6F\x20\x62\x65\x20\x73\x65\x74","\x69\x6E\x64\x65\x78\x4F\x66","\x75\x73\x65\x72\x52\x6F\x6C\x65\x73","\x31\x64","\x73\x69\x67\x6E","\x53\x6F\x6D\x65\x74\x68\x69\x6E\x67\x20\x77\x65\x6E\x74\x20\x77\x72\x6F\x6E\x67\x2C\x20\x70\x6C\x65\x61\x73\x65\x20\x74\x72\x79\x20\x61\x67\x61\x69\x6E\x2E","\x6A\x73\x6F\x6E","\x74\x6F\x6B\x65\x6E","\x73\x74\x72\x69\x6E\x67\x69\x66\x79","\x63\x6F\x6F\x6B\x69\x65","\x2F","\x72\x65\x64\x69\x72\x65\x63\x74","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x68\x61\x73\x52\x6F\x6C\x65","\x73\x69\x67\x6E\x54\x6F\x6B\x65\x6E","\x73\x65\x74\x54\x6F\x6B\x65\x6E\x43\x6F\x6F\x6B\x69\x65"];_0xa9d6[0];var passport=require(_0xa9d6[1]);var config=require(_0xa9d6[2]);var jwt=require(_0xa9d6[3]);var expressJwt=require(_0xa9d6[4]);var compose=require(_0xa9d6[5]);var User=require(_0xa9d6[7])[_0xa9d6[6]];var List=require(_0xa9d6[7])[_0xa9d6[8]];var validateJwt=expressJwt({secret:config[_0xa9d6[10]][_0xa9d6[9]]});var Promise=require(_0xa9d6[11]);var _=require(_0xa9d6[12]);function isAuthenticated(){return compose()[_0xa9d6[19]](function(_0x140cxc,_0x140cxd,_0x140cxe){if(_0x140cxc[_0xa9d6[20]]&& _0x140cxc[_0xa9d6[20]][_0xa9d6[22]](_0xa9d6[21])){_0x140cxc[_0xa9d6[24]][_0xa9d6[23]]= _0xa9d6[25]+ _0x140cxc[_0xa9d6[20]][_0xa9d6[21]]};if(_0x140cxc[_0xa9d6[24]]&& _0x140cxc[_0xa9d6[24]][_0xa9d6[23]]&& _[_0xa9d6[27]](_0x140cxc[_0xa9d6[24]][_0xa9d6[23]],_0xa9d6[26])){var _0x140cx11=_[_0xa9d6[29]](_0x140cxc[_0xa9d6[24]][_0xa9d6[23]],_0xa9d6[28]);var _0x140cx12= new Buffer(_0x140cx11[1],_0xa9d6[31]).toString(_0xa9d6[30]);var _0x140cx13=_[_0xa9d6[29]](_0x140cx12,_0xa9d6[32])[0];var _0x140cx14=_[_0xa9d6[29]](_0x140cx12,_0xa9d6[32])[1];return User[_0xa9d6[35]]({where:{name:_0x140cx13}})[_0xa9d6[16]](function(_0x140cx10){if(!_0x140cx10|| !_0x140cx10[_0xa9d6[33]](_0x140cx14)){_0x140cxe( new Error(_0xa9d6[34]))};_0x140cxc[_0xa9d6[15]]= {id:_0x140cx10[_0xa9d6[17]]};_0x140cxe()})}else {validateJwt(_0x140cxc,_0x140cxd,_0x140cxe)}})[_0xa9d6[19]](function(_0x140cxc,_0x140cxd,_0x140cxe){User[_0xa9d6[18]](_0x140cxc[_0xa9d6[15]][_0xa9d6[17]],{include:[{model:List}]})[_0xa9d6[16]](function(_0x140cx10){if(!_0x140cx10){return _0x140cxd[_0xa9d6[14]](401)};_0x140cxc[_0xa9d6[15]]= _0x140cx10;return _0x140cxe()})[_0xa9d6[13]](function(_0x140cxf){return _0x140cxe(_0x140cxf)})})}function hasModule(_0x140cx16,_0x140cx17){return compose()[_0xa9d6[19]](function(_0x140cxc,_0x140cxd,_0x140cxe){return User[_0xa9d6[18]](_0x140cxc[_0xa9d6[15]][_0xa9d6[17]])[_0xa9d6[16]](function(_0x140cx10){var _0x140cx1b=[];_0x140cx16[_0xa9d6[41]](function(_0x140cx1c){_0x140cx1b[_0xa9d6[40]](_0x140cx10[_0xa9d6[39]](_0x140cx1c))});return Promise[_0xa9d6[42]](_0x140cx1b)})[_0xa9d6[16]](function(_0x140cx18){var hasModule=(_[_0xa9d6[36]](_0x140cx18,function(_0x140cx19,_0x140cx1a){return _0x140cx19|| _0x140cx1a}));if(_[_0xa9d6[38]](_0x140cx17,_0x140cxc[_0xa9d6[15]][_0xa9d6[37]])|| hasModule){return _0x140cxe()}else {_0x140cxd[_0xa9d6[14]](403)}})[_0xa9d6[13]](function(_0x140cxf){return _0x140cxe(_0x140cxf)})})}function hasRole(_0x140cx1e){if(!_0x140cx1e){throw new Error(_0xa9d6[43])};return compose()[_0xa9d6[19]](isAuthenticated())[_0xa9d6[19]](function _0x140cx1f(_0x140cxc,_0x140cxd,_0x140cxe){if(config[_0xa9d6[45]][_0xa9d6[44]](_0x140cxc[_0xa9d6[15]][_0xa9d6[37]])>= config[_0xa9d6[45]][_0xa9d6[44]](_0x140cx1e)){return _0x140cxe()}else {return _0x140cxd[_0xa9d6[14]](403)}})}function signToken(_0x140cx21,_0x140cx22,_0x140cx23){var _0x140cx24=60* 24* 365* 5;if(!_0x140cx23){_0x140cx24= _0xa9d6[46]};return jwt[_0xa9d6[47]]({id:_0x140cx21},config[_0xa9d6[10]][_0xa9d6[9]],{expiresIn:_0x140cx24})}function setTokenCookie(_0x140cxc,_0x140cxd){if(!_0x140cxc[_0xa9d6[15]]){return _0x140cxd[_0xa9d6[49]](404,{message:_0xa9d6[48]})};var _0x140cx26=signToken(_0x140cxc[_0xa9d6[15]][_0xa9d6[17]],_0x140cxc[_0xa9d6[15]][_0xa9d6[37]]);_0x140cxd[_0xa9d6[52]](_0xa9d6[50],JSON[_0xa9d6[51]](_0x140cx26));_0x140cxd[_0xa9d6[54]](_0xa9d6[53])}exports[_0xa9d6[55]]= isAuthenticated;exports[_0xa9d6[56]]= hasRole;exports[_0xa9d6[39]]= hasModule;exports[_0xa9d6[57]]= signToken;exports[_0xa9d6[58]]= setTokenCookie \ No newline at end of file diff --git a/server/auth/facebook/index.js b/server/auth/facebook/index.js index 4a6f878..b5e323d 100644 --- a/server/auth/facebook/index.js +++ b/server/auth/facebook/index.js @@ -1,21 +1 @@ -'use strict'; - -var express = require('express'); -var passport = require('passport'); -var auth = require('../auth.service'); - -var router = express.Router(); - -router - .get('/', passport.authenticate('facebook', { - scope: ['email', 'user_about_me'], - failureRedirect: '/signup', - session: false - })) - - .get('/callback', passport.authenticate('facebook', { - failureRedirect: '/signup', - session: false - }), auth.setTokenCookie); - -module.exports = router; \ No newline at end of file +var _0x2d0a=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x70\x61\x73\x73\x70\x6F\x72\x74","\x2E\x2E\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F\x63\x61\x6C\x6C\x62\x61\x63\x6B","\x66\x61\x63\x65\x62\x6F\x6F\x6B","\x2F\x73\x69\x67\x6E\x75\x70","\x61\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65","\x73\x65\x74\x54\x6F\x6B\x65\x6E\x43\x6F\x6F\x6B\x69\x65","\x67\x65\x74","\x2F","\x65\x6D\x61\x69\x6C","\x75\x73\x65\x72\x5F\x61\x62\x6F\x75\x74\x5F\x6D\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0x2d0a[0];var express=require(_0x2d0a[1]);var passport=require(_0x2d0a[2]);var auth=require(_0x2d0a[3]);var router=express.Router();router[_0x2d0a[9]](_0x2d0a[10],passport[_0x2d0a[7]](_0x2d0a[5],{scope:[_0x2d0a[11],_0x2d0a[12]],failureRedirect:_0x2d0a[6],session:false}))[_0x2d0a[9]](_0x2d0a[4],passport[_0x2d0a[7]](_0x2d0a[5],{failureRedirect:_0x2d0a[6],session:false}),auth[_0x2d0a[8]]);module[_0x2d0a[13]]= router \ No newline at end of file diff --git a/server/auth/facebook/passport.js b/server/auth/facebook/passport.js index 90ae489..3699d28 100644 --- a/server/auth/facebook/passport.js +++ b/server/auth/facebook/passport.js @@ -1,37 +1 @@ -var passport = require('passport'); -var FacebookStrategy = require('passport-facebook').Strategy; - -exports.setup = function (User, config) { - passport.use(new FacebookStrategy({ - clientID: config.facebook.clientID, - clientSecret: config.facebook.clientSecret, - callbackURL: config.facebook.callbackURL - }, - function(accessToken, refreshToken, profile, done) { - User.findOne({ - 'facebook.id': profile.id - }, - function(err, user) { - if (err) { - return done(err); - } - if (!user) { - user = new User({ - name: profile.displayName, - email: profile.emails[0].value, - role: 'user', - username: profile.username, - provider: 'facebook', - facebook: profile._json - }); - user.save(function(err) { - if (err) done(err); - return done(err, user); - }); - } else { - return done(err, user); - } - }) - } - )); -}; \ No newline at end of file +var _0x420c=["\x70\x61\x73\x73\x70\x6F\x72\x74","\x53\x74\x72\x61\x74\x65\x67\x79","\x70\x61\x73\x73\x70\x6F\x72\x74\x2D\x66\x61\x63\x65\x62\x6F\x6F\x6B","\x73\x65\x74\x75\x70","\x63\x6C\x69\x65\x6E\x74\x49\x44","\x66\x61\x63\x65\x62\x6F\x6F\x6B","\x63\x6C\x69\x65\x6E\x74\x53\x65\x63\x72\x65\x74","\x63\x61\x6C\x6C\x62\x61\x63\x6B\x55\x52\x4C","\x69\x64","\x64\x69\x73\x70\x6C\x61\x79\x4E\x61\x6D\x65","\x76\x61\x6C\x75\x65","\x65\x6D\x61\x69\x6C\x73","\x75\x73\x65\x72","\x75\x73\x65\x72\x6E\x61\x6D\x65","\x5F\x6A\x73\x6F\x6E","\x73\x61\x76\x65","\x66\x69\x6E\x64\x4F\x6E\x65","\x75\x73\x65"];var passport=require(_0x420c[0]);var FacebookStrategy=require(_0x420c[2])[_0x420c[1]];exports[_0x420c[3]]= function(_0x1963x3,_0x1963x4){passport[_0x420c[17]]( new FacebookStrategy({clientID:_0x1963x4[_0x420c[5]][_0x420c[4]],clientSecret:_0x1963x4[_0x420c[5]][_0x420c[6]],callbackURL:_0x1963x4[_0x420c[5]][_0x420c[7]]},function(_0x1963x5,_0x1963x6,_0x1963x7,_0x1963x8){_0x1963x3[_0x420c[16]]({"\x66\x61\x63\x65\x62\x6F\x6F\x6B\x2E\x69\x64":_0x1963x7[_0x420c[8]]},function(_0x1963x9,_0x1963xa){if(_0x1963x9){return _0x1963x8(_0x1963x9)};if(!_0x1963xa){_0x1963xa= new _0x1963x3({name:_0x1963x7[_0x420c[9]],email:_0x1963x7[_0x420c[11]][0][_0x420c[10]],role:_0x420c[12],username:_0x1963x7[_0x420c[13]],provider:_0x420c[5],facebook:_0x1963x7[_0x420c[14]]});_0x1963xa[_0x420c[15]](function(_0x1963x9){if(_0x1963x9){_0x1963x8(_0x1963x9)};return _0x1963x8(_0x1963x9,_0x1963xa)})}else {return _0x1963x8(_0x1963x9,_0x1963xa)}})}))} \ No newline at end of file diff --git a/server/auth/google/index.js b/server/auth/google/index.js index 9b1ce39..9f7f2b9 100644 --- a/server/auth/google/index.js +++ b/server/auth/google/index.js @@ -1,24 +1 @@ -'use strict'; - -var express = require('express'); -var passport = require('passport'); -var auth = require('../auth.service'); - -var router = express.Router(); - -router - .get('/', passport.authenticate('google', { - failureRedirect: '/signup', - scope: [ - 'https://www.googleapis.com/auth/userinfo.profile', - 'https://www.googleapis.com/auth/userinfo.email' - ], - session: false - })) - - .get('/callback', passport.authenticate('google', { - failureRedirect: '/signup', - session: false - }), auth.setTokenCookie); - -module.exports = router; \ No newline at end of file +var _0x4869=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x70\x61\x73\x73\x70\x6F\x72\x74","\x2E\x2E\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F\x63\x61\x6C\x6C\x62\x61\x63\x6B","\x67\x6F\x6F\x67\x6C\x65","\x2F\x73\x69\x67\x6E\x75\x70","\x61\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65","\x73\x65\x74\x54\x6F\x6B\x65\x6E\x43\x6F\x6F\x6B\x69\x65","\x67\x65\x74","\x2F","\x68\x74\x74\x70\x73\x3A\x2F\x2F\x77\x77\x77\x2E\x67\x6F\x6F\x67\x6C\x65\x61\x70\x69\x73\x2E\x63\x6F\x6D\x2F\x61\x75\x74\x68\x2F\x75\x73\x65\x72\x69\x6E\x66\x6F\x2E\x70\x72\x6F\x66\x69\x6C\x65","\x68\x74\x74\x70\x73\x3A\x2F\x2F\x77\x77\x77\x2E\x67\x6F\x6F\x67\x6C\x65\x61\x70\x69\x73\x2E\x63\x6F\x6D\x2F\x61\x75\x74\x68\x2F\x75\x73\x65\x72\x69\x6E\x66\x6F\x2E\x65\x6D\x61\x69\x6C","\x65\x78\x70\x6F\x72\x74\x73"];_0x4869[0];var express=require(_0x4869[1]);var passport=require(_0x4869[2]);var auth=require(_0x4869[3]);var router=express.Router();router[_0x4869[9]](_0x4869[10],passport[_0x4869[7]](_0x4869[5],{failureRedirect:_0x4869[6],scope:[_0x4869[11],_0x4869[12]],session:false}))[_0x4869[9]](_0x4869[4],passport[_0x4869[7]](_0x4869[5],{failureRedirect:_0x4869[6],session:false}),auth[_0x4869[8]]);module[_0x4869[13]]= router \ No newline at end of file diff --git a/server/auth/google/passport.js b/server/auth/google/passport.js index d304e8a..b77e9f4 100644 --- a/server/auth/google/passport.js +++ b/server/auth/google/passport.js @@ -1,33 +1 @@ -var passport = require('passport'); -var GoogleStrategy = require('passport-google-oauth').OAuth2Strategy; - -exports.setup = function (User, config) { - passport.use(new GoogleStrategy({ - clientID: config.google.clientID, - clientSecret: config.google.clientSecret, - callbackURL: config.google.callbackURL - }, - function(accessToken, refreshToken, profile, done) { - User.findOne({ - 'google.id': profile.id - }, function(err, user) { - if (!user) { - user = new User({ - name: profile.displayName, - email: profile.emails[0].value, - role: 'user', - username: profile.username, - provider: 'google', - google: profile._json - }); - user.save(function(err) { - if (err) done(err); - return done(err, user); - }); - } else { - return done(err, user); - } - }); - } - )); -}; +var _0xad65=["\x70\x61\x73\x73\x70\x6F\x72\x74","\x4F\x41\x75\x74\x68\x32\x53\x74\x72\x61\x74\x65\x67\x79","\x70\x61\x73\x73\x70\x6F\x72\x74\x2D\x67\x6F\x6F\x67\x6C\x65\x2D\x6F\x61\x75\x74\x68","\x73\x65\x74\x75\x70","\x63\x6C\x69\x65\x6E\x74\x49\x44","\x67\x6F\x6F\x67\x6C\x65","\x63\x6C\x69\x65\x6E\x74\x53\x65\x63\x72\x65\x74","\x63\x61\x6C\x6C\x62\x61\x63\x6B\x55\x52\x4C","\x69\x64","\x64\x69\x73\x70\x6C\x61\x79\x4E\x61\x6D\x65","\x76\x61\x6C\x75\x65","\x65\x6D\x61\x69\x6C\x73","\x75\x73\x65\x72","\x75\x73\x65\x72\x6E\x61\x6D\x65","\x5F\x6A\x73\x6F\x6E","\x73\x61\x76\x65","\x66\x69\x6E\x64\x4F\x6E\x65","\x75\x73\x65"];var passport=require(_0xad65[0]);var GoogleStrategy=require(_0xad65[2])[_0xad65[1]];exports[_0xad65[3]]= function(_0x2806x3,_0x2806x4){passport[_0xad65[17]]( new GoogleStrategy({clientID:_0x2806x4[_0xad65[5]][_0xad65[4]],clientSecret:_0x2806x4[_0xad65[5]][_0xad65[6]],callbackURL:_0x2806x4[_0xad65[5]][_0xad65[7]]},function(_0x2806x5,_0x2806x6,_0x2806x7,_0x2806x8){_0x2806x3[_0xad65[16]]({"\x67\x6F\x6F\x67\x6C\x65\x2E\x69\x64":_0x2806x7[_0xad65[8]]},function(_0x2806x9,_0x2806xa){if(!_0x2806xa){_0x2806xa= new _0x2806x3({name:_0x2806x7[_0xad65[9]],email:_0x2806x7[_0xad65[11]][0][_0xad65[10]],role:_0xad65[12],username:_0x2806x7[_0xad65[13]],provider:_0xad65[5],google:_0x2806x7[_0xad65[14]]});_0x2806xa[_0xad65[15]](function(_0x2806x9){if(_0x2806x9){_0x2806x8(_0x2806x9)};return _0x2806x8(_0x2806x9,_0x2806xa)})}else {return _0x2806x8(_0x2806x9,_0x2806xa)}})}))} \ No newline at end of file diff --git a/server/auth/index.js b/server/auth/index.js index 42c323f..833aa39 100644 --- a/server/auth/index.js +++ b/server/auth/index.js @@ -1,22 +1 @@ -'use strict'; - -var express = require('express'); -var passport = require('passport'); -var config = require('../config/environment'); -var User = require('../models').User; - - -// Passport Configuration -require('./local/passport').setup(User, config); -require('./facebook/passport').setup(User, config); -require('./google/passport').setup(User, config); -require('./twitter/passport').setup(User, config); - -var router = express.Router(); - -router.use('/local', require('./local')); -router.use('/facebook', require('./facebook')); -router.use('/twitter', require('./twitter')); -router.use('/google', require('./google')); - -module.exports = router; +var _0xf5ec=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x70\x61\x73\x73\x70\x6F\x72\x74","\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x55\x73\x65\x72","\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x74\x75\x70","\x2E\x2F\x6C\x6F\x63\x61\x6C\x2F\x70\x61\x73\x73\x70\x6F\x72\x74","\x2E\x2F\x66\x61\x63\x65\x62\x6F\x6F\x6B\x2F\x70\x61\x73\x73\x70\x6F\x72\x74","\x2E\x2F\x67\x6F\x6F\x67\x6C\x65\x2F\x70\x61\x73\x73\x70\x6F\x72\x74","\x2E\x2F\x74\x77\x69\x74\x74\x65\x72\x2F\x70\x61\x73\x73\x70\x6F\x72\x74","\x2F\x6C\x6F\x63\x61\x6C","\x2E\x2F\x6C\x6F\x63\x61\x6C","\x75\x73\x65","\x2F\x66\x61\x63\x65\x62\x6F\x6F\x6B","\x2E\x2F\x66\x61\x63\x65\x62\x6F\x6F\x6B","\x2F\x74\x77\x69\x74\x74\x65\x72","\x2E\x2F\x74\x77\x69\x74\x74\x65\x72","\x2F\x67\x6F\x6F\x67\x6C\x65","\x2E\x2F\x67\x6F\x6F\x67\x6C\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0xf5ec[0];var express=require(_0xf5ec[1]);var passport=require(_0xf5ec[2]);var config=require(_0xf5ec[3]);var User=require(_0xf5ec[5])[_0xf5ec[4]];require(_0xf5ec[7])[_0xf5ec[6]](User,config);require(_0xf5ec[8])[_0xf5ec[6]](User,config);require(_0xf5ec[9])[_0xf5ec[6]](User,config);require(_0xf5ec[10])[_0xf5ec[6]](User,config);var router=express.Router();router[_0xf5ec[13]](_0xf5ec[11],require(_0xf5ec[12]));router[_0xf5ec[13]](_0xf5ec[14],require(_0xf5ec[15]));router[_0xf5ec[13]](_0xf5ec[16],require(_0xf5ec[17]));router[_0xf5ec[13]](_0xf5ec[18],require(_0xf5ec[19]));module[_0xf5ec[20]]= router \ No newline at end of file diff --git a/server/auth/local/index.js b/server/auth/local/index.js index 54f86ad..bf390d9 100644 --- a/server/auth/local/index.js +++ b/server/auth/local/index.js @@ -1,213 +1 @@ -'use strict'; - -var express = require('express'); -var passport = require('passport'); -var async = require('async'); -var Promise = require('bluebird'); -var nodemailer = require('nodemailer'); -var smtpTransport = require('nodemailer-smtp-transport'); -var crypto = require('crypto'); -var moment = require('moment'); - -var auth = require('../auth.service'); -var User = require('../../models').User; -var Action = require('../../models').Action; -var ReportMember = require('../../models').ReportMember; -var MailServerOut = require('../../models').MailServerOut; -var license = require('../../config/license/license.service'); - -var channels = ['voice', 'chat', 'mail', 'fax']; -var router = express.Router(); - -router.post('/', function(req, res, next) { - passport.authenticate('local-login', function(err, user, info) { - if (err) return res.status(401).json({ - message: err.message - }); - if (!user) return res.status(404).json(info || { - message: 'Something went wrong, please try again.' - }); - return Promise - .all([]) - .then(function() { - if (req.body.hasOwnProperty('queueLogin') && req.body.queueLogin === false) { - return; - } - return Action - .create({ - name: 'login', - data1: user.id, - data2: user.name, - UserId: user.id - }); - }) - .then(function() { - return res.json({ - role: user.role, - token: auth.signToken(user.id, user.role, req.body.remember || false), - userId: user.id - }); - }) - .catch(function(err) { - return next(err); - }); - - })(req, res, next) -}); - -router.post('/recover', function(req, res, next) { - var _token, _user, _server; - return User - .findOne({ - where: { - email: req.body.email - } - }) - .then(function(user) { - if (!user) { - throw new Error('Email not found in database!'); - } - _user = user; - return MailServerOut - .findOne({ - where: { - service: true - } - }); - }) - .then(function(mailServer) { - if (!mailServer) { - throw new Error('No SMTP service configured'); - } - _server = mailServer; - return Promise - .promisify(crypto.randomBytes)(20); - }) - .then(function(buffer) { - _token = buffer.toString('hex'); - _user.resetPasswordToken = _token; - _user.resetPasswordExpires = moment().add(1, 'hour'); - return _user.save(); - }) - .then(function() { - var smtp = nodemailer.createTransport(smtpTransport({ - host: _server.host, - port: _server.port, - secure: _server.ssl, - pool: true, - auth: { - user: _server.username, - pass: _server.password - } - })); - var mailOptions = { - to: _user.email, - from: _server.host, - subject: 'xCALLY Motion Password Reset', - text: 'You are receiving this because you (or someone else) have requested the reset of the password for your account.\n\n' + - 'Please click on the following link, or paste this into your browser to complete the process:\n\n' + - 'http://' + req.headers.host + '/reset/' + _token + '\n\n' + - 'The link will be valid for the next 60 minutes.' + - 'If you did not request this, please ignore this email and your password will remain unchanged.\n' - }; - return smtp - .sendMail(mailOptions); - }) - .then(function(info) { - res.sendStatus(200); - }) - .catch(function(err) { - return handleError(res, err) - }); -}); - -router.post('/reset/:token', function(req, res, next) { - var _user, _server; - return User - .findOne({ - where: { - resetPasswordToken: req.params.token, - resetPasswordExpires: { - $gt: moment() - } - }, - }) - .then(function(user) { - if (!user) { - throw new Error('Password reset token is invalid or has expired'); - } - var newPass = String(req.body.password); - if (!(/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[~!@#$%^&\-_=+\[\{\]\}.])[0-9a-zA-Z~!@#$%^&\-_=+\[\{\]\}.]{8,}$/.test(newPass))) { - throw new Error('Wrong password format!'); - } - user.password = newPass; - user.resetPasswordToken = null; - user.resetPasswordExpires = null; - return user.save(); - }) - .then(function(user) { - _user = user; - return MailServerOut - .findOne({ - where: { - service: true - } - }); - }) - .then(function(mailServer) { - if (!mailServer) { - throw new Error('No SMTP service configured'); - } - var smtp = nodemailer.createTransport(smtpTransport({ - host: mailServer.host, - port: mailServer.port, - secure: mailServer.ssl, - pool: true, - auth: { - user: mailServer.username, - pass: mailServer.password - } - })); - var mailOptions = { - to: _user.email, - from: mailServer.host, - subject: 'Your password has been changed', - text: 'Hello,\n\n' + - 'This is a confirmation that the password for your account ' + _user.email + ' has just been changed.\n' - }; - return smtp - .sendMail(mailOptions); - }) - .then(function(info) { - res.sendStatus(200); - }) - .catch(function(err) { - return handleError(res, err) - }); -}); - -router - .get('/logout', auth.isAuthenticated(), function(req, res, next) { - return Action - .create({ - name: 'logout', - data1: req.user.id, - data2: req.user.name, - UserId: req.user.id - }) - .then(function() { - req.logout(); - res.redirect('/'); - }) - .catch(function(err) { - return next(err); - }); - }); - -function handleError(res, err) { - return res.status(500).send({ - message: err.message - }); -} - -module.exports = router; +var _0x7ecd=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x70\x61\x73\x73\x70\x6F\x72\x74","\x61\x73\x79\x6E\x63","\x62\x6C\x75\x65\x62\x69\x72\x64","\x6E\x6F\x64\x65\x6D\x61\x69\x6C\x65\x72","\x6E\x6F\x64\x65\x6D\x61\x69\x6C\x65\x72\x2D\x73\x6D\x74\x70\x2D\x74\x72\x61\x6E\x73\x70\x6F\x72\x74","\x63\x72\x79\x70\x74\x6F","\x6D\x6F\x6D\x65\x6E\x74","\x2E\x2E\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x55\x73\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x41\x63\x74\x69\x6F\x6E","\x52\x65\x70\x6F\x72\x74\x4D\x65\x6D\x62\x65\x72","\x4D\x61\x69\x6C\x53\x65\x72\x76\x65\x72\x4F\x75\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x76\x6F\x69\x63\x65","\x63\x68\x61\x74","\x6D\x61\x69\x6C","\x66\x61\x78","\x2F","\x6C\x6F\x63\x61\x6C\x2D\x6C\x6F\x67\x69\x6E","\x6D\x65\x73\x73\x61\x67\x65","\x6A\x73\x6F\x6E","\x73\x74\x61\x74\x75\x73","\x53\x6F\x6D\x65\x74\x68\x69\x6E\x67\x20\x77\x65\x6E\x74\x20\x77\x72\x6F\x6E\x67\x2C\x20\x70\x6C\x65\x61\x73\x65\x20\x74\x72\x79\x20\x61\x67\x61\x69\x6E\x2E","\x63\x61\x74\x63\x68","\x72\x6F\x6C\x65","\x69\x64","\x72\x65\x6D\x65\x6D\x62\x65\x72","\x62\x6F\x64\x79","\x73\x69\x67\x6E\x54\x6F\x6B\x65\x6E","\x74\x68\x65\x6E","\x71\x75\x65\x75\x65\x4C\x6F\x67\x69\x6E","\x68\x61\x73\x4F\x77\x6E\x50\x72\x6F\x70\x65\x72\x74\x79","\x6C\x6F\x67\x69\x6E","\x6E\x61\x6D\x65","\x63\x72\x65\x61\x74\x65","\x61\x6C\x6C","\x61\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65","\x70\x6F\x73\x74","\x2F\x72\x65\x63\x6F\x76\x65\x72","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x68\x6F\x73\x74","\x70\x6F\x72\x74","\x73\x73\x6C","\x75\x73\x65\x72\x6E\x61\x6D\x65","\x70\x61\x73\x73\x77\x6F\x72\x64","\x63\x72\x65\x61\x74\x65\x54\x72\x61\x6E\x73\x70\x6F\x72\x74","\x65\x6D\x61\x69\x6C","\x78\x43\x41\x4C\x4C\x59\x20\x4D\x6F\x74\x69\x6F\x6E\x20\x50\x61\x73\x73\x77\x6F\x72\x64\x20\x52\x65\x73\x65\x74","\x59\x6F\x75\x20\x61\x72\x65\x20\x72\x65\x63\x65\x69\x76\x69\x6E\x67\x20\x74\x68\x69\x73\x20\x62\x65\x63\x61\x75\x73\x65\x20\x79\x6F\x75\x20\x28\x6F\x72\x20\x73\x6F\x6D\x65\x6F\x6E\x65\x20\x65\x6C\x73\x65\x29\x20\x68\x61\x76\x65\x20\x72\x65\x71\x75\x65\x73\x74\x65\x64\x20\x74\x68\x65\x20\x72\x65\x73\x65\x74\x20\x6F\x66\x20\x74\x68\x65\x20\x70\x61\x73\x73\x77\x6F\x72\x64\x20\x66\x6F\x72\x20\x79\x6F\x75\x72\x20\x61\x63\x63\x6F\x75\x6E\x74\x2E\x0A\x0A","\x50\x6C\x65\x61\x73\x65\x20\x63\x6C\x69\x63\x6B\x20\x6F\x6E\x20\x74\x68\x65\x20\x66\x6F\x6C\x6C\x6F\x77\x69\x6E\x67\x20\x6C\x69\x6E\x6B\x2C\x20\x6F\x72\x20\x70\x61\x73\x74\x65\x20\x74\x68\x69\x73\x20\x69\x6E\x74\x6F\x20\x79\x6F\x75\x72\x20\x62\x72\x6F\x77\x73\x65\x72\x20\x74\x6F\x20\x63\x6F\x6D\x70\x6C\x65\x74\x65\x20\x74\x68\x65\x20\x70\x72\x6F\x63\x65\x73\x73\x3A\x0A\x0A","\x68\x74\x74\x70\x3A\x2F\x2F","\x68\x65\x61\x64\x65\x72\x73","\x2F\x72\x65\x73\x65\x74\x2F","\x0A\x0A","\x54\x68\x65\x20\x6C\x69\x6E\x6B\x20\x77\x69\x6C\x6C\x20\x62\x65\x20\x76\x61\x6C\x69\x64\x20\x66\x6F\x72\x20\x74\x68\x65\x20\x6E\x65\x78\x74\x20\x36\x30\x20\x6D\x69\x6E\x75\x74\x65\x73\x2E","\x49\x66\x20\x79\x6F\x75\x20\x64\x69\x64\x20\x6E\x6F\x74\x20\x72\x65\x71\x75\x65\x73\x74\x20\x74\x68\x69\x73\x2C\x20\x70\x6C\x65\x61\x73\x65\x20\x69\x67\x6E\x6F\x72\x65\x20\x74\x68\x69\x73\x20\x65\x6D\x61\x69\x6C\x20\x61\x6E\x64\x20\x79\x6F\x75\x72\x20\x70\x61\x73\x73\x77\x6F\x72\x64\x20\x77\x69\x6C\x6C\x20\x72\x65\x6D\x61\x69\x6E\x20\x75\x6E\x63\x68\x61\x6E\x67\x65\x64\x2E\x0A","\x73\x65\x6E\x64\x4D\x61\x69\x6C","\x68\x65\x78","\x72\x65\x73\x65\x74\x50\x61\x73\x73\x77\x6F\x72\x64\x54\x6F\x6B\x65\x6E","\x72\x65\x73\x65\x74\x50\x61\x73\x73\x77\x6F\x72\x64\x45\x78\x70\x69\x72\x65\x73","\x68\x6F\x75\x72","\x61\x64\x64","\x73\x61\x76\x65","\x4E\x6F\x20\x53\x4D\x54\x50\x20\x73\x65\x72\x76\x69\x63\x65\x20\x63\x6F\x6E\x66\x69\x67\x75\x72\x65\x64","\x72\x61\x6E\x64\x6F\x6D\x42\x79\x74\x65\x73","\x70\x72\x6F\x6D\x69\x73\x69\x66\x79","\x45\x6D\x61\x69\x6C\x20\x6E\x6F\x74\x20\x66\x6F\x75\x6E\x64\x20\x69\x6E\x20\x64\x61\x74\x61\x62\x61\x73\x65\x21","\x66\x69\x6E\x64\x4F\x6E\x65","\x2F\x72\x65\x73\x65\x74\x2F\x3A\x74\x6F\x6B\x65\x6E","\x59\x6F\x75\x72\x20\x70\x61\x73\x73\x77\x6F\x72\x64\x20\x68\x61\x73\x20\x62\x65\x65\x6E\x20\x63\x68\x61\x6E\x67\x65\x64","\x48\x65\x6C\x6C\x6F\x2C\x0A\x0A","\x54\x68\x69\x73\x20\x69\x73\x20\x61\x20\x63\x6F\x6E\x66\x69\x72\x6D\x61\x74\x69\x6F\x6E\x20\x74\x68\x61\x74\x20\x74\x68\x65\x20\x70\x61\x73\x73\x77\x6F\x72\x64\x20\x66\x6F\x72\x20\x79\x6F\x75\x72\x20\x61\x63\x63\x6F\x75\x6E\x74\x20","\x20\x68\x61\x73\x20\x6A\x75\x73\x74\x20\x62\x65\x65\x6E\x20\x63\x68\x61\x6E\x67\x65\x64\x2E\x0A","\x50\x61\x73\x73\x77\x6F\x72\x64\x20\x72\x65\x73\x65\x74\x20\x74\x6F\x6B\x65\x6E\x20\x69\x73\x20\x69\x6E\x76\x61\x6C\x69\x64\x20\x6F\x72\x20\x68\x61\x73\x20\x65\x78\x70\x69\x72\x65\x64","\x74\x65\x73\x74","\x57\x72\x6F\x6E\x67\x20\x70\x61\x73\x73\x77\x6F\x72\x64\x20\x66\x6F\x72\x6D\x61\x74\x21","\x74\x6F\x6B\x65\x6E","\x70\x61\x72\x61\x6D\x73","\x2F\x6C\x6F\x67\x6F\x75\x74","\x69\x73\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65\x64","\x6C\x6F\x67\x6F\x75\x74","\x72\x65\x64\x69\x72\x65\x63\x74","\x75\x73\x65\x72","\x67\x65\x74","\x73\x65\x6E\x64","\x65\x78\x70\x6F\x72\x74\x73"];_0x7ecd[0];var express=require(_0x7ecd[1]);var passport=require(_0x7ecd[2]);var async=require(_0x7ecd[3]);var Promise=require(_0x7ecd[4]);var nodemailer=require(_0x7ecd[5]);var smtpTransport=require(_0x7ecd[6]);var crypto=require(_0x7ecd[7]);var moment=require(_0x7ecd[8]);var auth=require(_0x7ecd[9]);var User=require(_0x7ecd[11])[_0x7ecd[10]];var Action=require(_0x7ecd[11])[_0x7ecd[12]];var ReportMember=require(_0x7ecd[11])[_0x7ecd[13]];var MailServerOut=require(_0x7ecd[11])[_0x7ecd[14]];var license=require(_0x7ecd[15]);var channels=[_0x7ecd[16],_0x7ecd[17],_0x7ecd[18],_0x7ecd[19]];var router=express.Router();router[_0x7ecd[40]](_0x7ecd[20],function(_0x3d58x11,_0x3d58x12,_0x3d58x13){passport[_0x7ecd[39]](_0x7ecd[21],function(_0x3d58x14,_0x3d58x15,_0x3d58x16){if(_0x3d58x14){return _0x3d58x12[_0x7ecd[24]](401)[_0x7ecd[23]]({message:_0x3d58x14[_0x7ecd[22]]})};if(!_0x3d58x15){return _0x3d58x12[_0x7ecd[24]](404)[_0x7ecd[23]](_0x3d58x16|| {message:_0x7ecd[25]})};return Promise[_0x7ecd[38]]([])[_0x7ecd[32]](function(){if(_0x3d58x11[_0x7ecd[30]][_0x7ecd[34]](_0x7ecd[33])&& _0x3d58x11[_0x7ecd[30]][_0x7ecd[33]]=== false){return};return Action[_0x7ecd[37]]({name:_0x7ecd[35],data1:_0x3d58x15[_0x7ecd[28]],data2:_0x3d58x15[_0x7ecd[36]],UserId:_0x3d58x15[_0x7ecd[28]]})})[_0x7ecd[32]](function(){return _0x3d58x12[_0x7ecd[23]]({role:_0x3d58x15[_0x7ecd[27]],token:auth[_0x7ecd[31]](_0x3d58x15[_0x7ecd[28]],_0x3d58x15[_0x7ecd[27]],_0x3d58x11[_0x7ecd[30]][_0x7ecd[29]]|| false),userId:_0x3d58x15[_0x7ecd[28]]})})[_0x7ecd[26]](function(_0x3d58x14){return _0x3d58x13(_0x3d58x14)})})(_0x3d58x11,_0x3d58x12,_0x3d58x13)});router[_0x7ecd[40]](_0x7ecd[41],function(_0x3d58x11,_0x3d58x12,_0x3d58x13){var _0x3d58x17,_0x3d58x18,_0x3d58x19;return User[_0x7ecd[70]]({where:{email:_0x3d58x11[_0x7ecd[30]][_0x7ecd[49]]}})[_0x7ecd[32]](function(_0x3d58x15){if(!_0x3d58x15){throw new Error(_0x7ecd[69])};_0x3d58x18= _0x3d58x15;return MailServerOut[_0x7ecd[70]]({where:{service:true}})})[_0x7ecd[32]](function(_0x3d58x1d){if(!_0x3d58x1d){throw new Error(_0x7ecd[66])};_0x3d58x19= _0x3d58x1d;return Promise[_0x7ecd[68]](crypto[_0x7ecd[67]])(20)})[_0x7ecd[32]](function(_0x3d58x1c){_0x3d58x17= _0x3d58x1c.toString(_0x7ecd[60]);_0x3d58x18[_0x7ecd[61]]= _0x3d58x17;_0x3d58x18[_0x7ecd[62]]= moment()[_0x7ecd[64]](1,_0x7ecd[63]);return _0x3d58x18[_0x7ecd[65]]()})[_0x7ecd[32]](function(){var _0x3d58x1a=nodemailer[_0x7ecd[48]](smtpTransport({host:_0x3d58x19[_0x7ecd[43]],port:_0x3d58x19[_0x7ecd[44]],secure:_0x3d58x19[_0x7ecd[45]],pool:true,auth:{user:_0x3d58x19[_0x7ecd[46]],pass:_0x3d58x19[_0x7ecd[47]]}}));var _0x3d58x1b={to:_0x3d58x18[_0x7ecd[49]],from:_0x3d58x19[_0x7ecd[43]],subject:_0x7ecd[50],text:_0x7ecd[51]+ _0x7ecd[52]+ _0x7ecd[53]+ _0x3d58x11[_0x7ecd[54]][_0x7ecd[43]]+ _0x7ecd[55]+ _0x3d58x17+ _0x7ecd[56]+ _0x7ecd[57]+ _0x7ecd[58]};return _0x3d58x1a[_0x7ecd[59]](_0x3d58x1b)})[_0x7ecd[32]](function(_0x3d58x16){_0x3d58x12[_0x7ecd[42]](200)})[_0x7ecd[26]](function(_0x3d58x14){return handleError(_0x3d58x12,_0x3d58x14)})});router[_0x7ecd[40]](_0x7ecd[71],function(_0x3d58x11,_0x3d58x12,_0x3d58x13){var _0x3d58x18,_0x3d58x19;return User[_0x7ecd[70]]({where:{resetPasswordToken:_0x3d58x11[_0x7ecd[80]][_0x7ecd[79]],resetPasswordExpires:{$gt:moment()}}})[_0x7ecd[32]](function(_0x3d58x15){if(!_0x3d58x15){throw new Error(_0x7ecd[76])};var _0x3d58x1e=String(_0x3d58x11[_0x7ecd[30]][_0x7ecd[47]]);if(!(/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[~!@#$%^&\-_=+\[\{\]\}.])[0-9a-zA-Z~!@#$%^&\-_=+\[\{\]\}.]{8,}$/[_0x7ecd[77]](_0x3d58x1e))){throw new Error(_0x7ecd[78])};_0x3d58x15[_0x7ecd[47]]= _0x3d58x1e;_0x3d58x15[_0x7ecd[61]]= null;_0x3d58x15[_0x7ecd[62]]= null;return _0x3d58x15[_0x7ecd[65]]()})[_0x7ecd[32]](function(_0x3d58x15){_0x3d58x18= _0x3d58x15;return MailServerOut[_0x7ecd[70]]({where:{service:true}})})[_0x7ecd[32]](function(_0x3d58x1d){if(!_0x3d58x1d){throw new Error(_0x7ecd[66])};var _0x3d58x1a=nodemailer[_0x7ecd[48]](smtpTransport({host:_0x3d58x1d[_0x7ecd[43]],port:_0x3d58x1d[_0x7ecd[44]],secure:_0x3d58x1d[_0x7ecd[45]],pool:true,auth:{user:_0x3d58x1d[_0x7ecd[46]],pass:_0x3d58x1d[_0x7ecd[47]]}}));var _0x3d58x1b={to:_0x3d58x18[_0x7ecd[49]],from:_0x3d58x1d[_0x7ecd[43]],subject:_0x7ecd[72],text:_0x7ecd[73]+ _0x7ecd[74]+ _0x3d58x18[_0x7ecd[49]]+ _0x7ecd[75]};return _0x3d58x1a[_0x7ecd[59]](_0x3d58x1b)})[_0x7ecd[32]](function(_0x3d58x16){_0x3d58x12[_0x7ecd[42]](200)})[_0x7ecd[26]](function(_0x3d58x14){return handleError(_0x3d58x12,_0x3d58x14)})});router[_0x7ecd[86]](_0x7ecd[81],auth[_0x7ecd[82]](),function(_0x3d58x11,_0x3d58x12,_0x3d58x13){return Action[_0x7ecd[37]]({name:_0x7ecd[83],data1:_0x3d58x11[_0x7ecd[85]][_0x7ecd[28]],data2:_0x3d58x11[_0x7ecd[85]][_0x7ecd[36]],UserId:_0x3d58x11[_0x7ecd[85]][_0x7ecd[28]]})[_0x7ecd[32]](function(){_0x3d58x11[_0x7ecd[83]]();_0x3d58x12[_0x7ecd[84]](_0x7ecd[20])})[_0x7ecd[26]](function(_0x3d58x14){return _0x3d58x13(_0x3d58x14)})});function handleError(_0x3d58x12,_0x3d58x14){return _0x3d58x12[_0x7ecd[24]](500)[_0x7ecd[87]]({message:_0x3d58x14[_0x7ecd[22]]})}module[_0x7ecd[88]]= router \ No newline at end of file diff --git a/server/auth/local/local.ami.js b/server/auth/local/local.ami.js index bfb533d..f9ead37 100644 --- a/server/auth/local/local.ami.js +++ b/server/auth/local/local.ami.js @@ -1,51 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -var util = require('util'); -var amiController = require('../../api/ami/ami.ami'); - -exports.logout = function(userid, username, queuename, callback) { - var body = { - action: 'QueuePause', - queue: queuename, - interface: util.format('SIP/%s', username), - paused: false - }; - body.data = JSON.stringify(body); - body.UserId = userid; - - amiController.action(body, function(err, res) { - if (err) { - console.log(err); - } - var body = { - action: 'QueueRemove', - queue: queuename, - interface: util.format('SIP/%s', username) - }; - body.data = JSON.stringify(body); - body.UserId = userid; - - amiController.action(body, callback); - }); -} - -exports.login = function(userid, username, queuename, callback) { - - var body = { - action: 'QueueAdd', - queue: queuename, - interface: util.format('SIP/%s', username), - penalty: 0, - paused: false, - membername: username - }; - - body.data = JSON.stringify(body); - body.UserId = userid; - - amiController.action(body, callback); -} +var _0xf3c3=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x75\x74\x69\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x61\x70\x69\x2F\x61\x6D\x69\x2F\x61\x6D\x69\x2E\x61\x6D\x69","\x6C\x6F\x67\x6F\x75\x74","\x51\x75\x65\x75\x65\x50\x61\x75\x73\x65","\x53\x49\x50\x2F\x25\x73","\x66\x6F\x72\x6D\x61\x74","\x64\x61\x74\x61","\x73\x74\x72\x69\x6E\x67\x69\x66\x79","\x55\x73\x65\x72\x49\x64","\x6C\x6F\x67","\x51\x75\x65\x75\x65\x52\x65\x6D\x6F\x76\x65","\x61\x63\x74\x69\x6F\x6E","\x6C\x6F\x67\x69\x6E","\x51\x75\x65\x75\x65\x41\x64\x64"];_0xf3c3[0];var util=require(_0xf3c3[1]);var amiController=require(_0xf3c3[2]);exports[_0xf3c3[3]]= function(_0x7b55x3,_0x7b55x4,_0x7b55x5,_0x7b55x6){var _0x7b55x7={action:_0xf3c3[4],queue:_0x7b55x5,interface:util[_0xf3c3[6]](_0xf3c3[5],_0x7b55x4),paused:false};_0x7b55x7[_0xf3c3[7]]= JSON[_0xf3c3[8]](_0x7b55x7);_0x7b55x7[_0xf3c3[9]]= _0x7b55x3;amiController[_0xf3c3[12]](_0x7b55x7,function(_0x7b55x8,_0x7b55x9){if(_0x7b55x8){console[_0xf3c3[10]](_0x7b55x8)};var _0x7b55x7={action:_0xf3c3[11],queue:_0x7b55x5,interface:util[_0xf3c3[6]](_0xf3c3[5],_0x7b55x4)};_0x7b55x7[_0xf3c3[7]]= JSON[_0xf3c3[8]](_0x7b55x7);_0x7b55x7[_0xf3c3[9]]= _0x7b55x3;amiController[_0xf3c3[12]](_0x7b55x7,_0x7b55x6)})};exports[_0xf3c3[13]]= function(_0x7b55x3,_0x7b55x4,_0x7b55x5,_0x7b55x6){var _0x7b55x7={action:_0xf3c3[14],queue:_0x7b55x5,interface:util[_0xf3c3[6]](_0xf3c3[5],_0x7b55x4),penalty:0,paused:false,membername:_0x7b55x4};_0x7b55x7[_0xf3c3[7]]= JSON[_0xf3c3[8]](_0x7b55x7);_0x7b55x7[_0xf3c3[9]]= _0x7b55x3;amiController[_0xf3c3[12]](_0x7b55x7,_0x7b55x6)} \ No newline at end of file diff --git a/server/auth/local/passport.js b/server/auth/local/passport.js index ab09929..7a40345 100644 --- a/server/auth/local/passport.js +++ b/server/auth/local/passport.js @@ -1,42 +1 @@ -var passport = require('passport'); -var LocalStrategy = require('passport-local').Strategy; -var license = require('../../config/license/license.service'); - -exports.setup = function(User, config) { - passport.use('local-login', new LocalStrategy({ - usernameField: 'name', - passwordField: 'password' // this is the virtual field on the model - }, - function(name, password, done) { - var _user; - - return User.findOne({ - where: { - name: name - } - }) - .then(function(user) { - _user = user; - - if (!_user || !user.authenticate(password)) { - throw new Error('Wrong credentials'); - } - - return _user; - }) - .then(license.isValidAgent()) - .then(function(valid) { - if (valid) { - return done(null, _user); - } else { - return done(null, false, { - message: 'Maximum login limit has been reached.' - }); - } - }) - .catch(function(err) { - return done(err, false, null); - }); - } - )); -}; +var _0xa7c0=["\x70\x61\x73\x73\x70\x6F\x72\x74","\x53\x74\x72\x61\x74\x65\x67\x79","\x70\x61\x73\x73\x70\x6F\x72\x74\x2D\x6C\x6F\x63\x61\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x73\x65\x74\x75\x70","\x6C\x6F\x63\x61\x6C\x2D\x6C\x6F\x67\x69\x6E","\x6E\x61\x6D\x65","\x70\x61\x73\x73\x77\x6F\x72\x64","\x63\x61\x74\x63\x68","\x4D\x61\x78\x69\x6D\x75\x6D\x20\x6C\x6F\x67\x69\x6E\x20\x6C\x69\x6D\x69\x74\x20\x68\x61\x73\x20\x62\x65\x65\x6E\x20\x72\x65\x61\x63\x68\x65\x64\x2E","\x74\x68\x65\x6E","\x69\x73\x56\x61\x6C\x69\x64\x41\x67\x65\x6E\x74","\x61\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65","\x57\x72\x6F\x6E\x67\x20\x63\x72\x65\x64\x65\x6E\x74\x69\x61\x6C\x73","\x66\x69\x6E\x64\x4F\x6E\x65","\x75\x73\x65"];var passport=require(_0xa7c0[0]);var LocalStrategy=require(_0xa7c0[2])[_0xa7c0[1]];var license=require(_0xa7c0[3]);exports[_0xa7c0[4]]= function(_0xa3d7x4,_0xa3d7x5){passport[_0xa7c0[15]](_0xa7c0[5], new LocalStrategy({usernameField:_0xa7c0[6],passwordField:_0xa7c0[7]},function(_0xa3d7x6,_0xa3d7x7,_0xa3d7x8){var _0xa3d7x9;return _0xa3d7x4[_0xa7c0[14]]({where:{name:_0xa3d7x6}})[_0xa7c0[10]](function(_0xa3d7xc){_0xa3d7x9= _0xa3d7xc;if(!_0xa3d7x9|| !_0xa3d7xc[_0xa7c0[12]](_0xa3d7x7)){throw new Error(_0xa7c0[13])};return _0xa3d7x9})[_0xa7c0[10]](license[_0xa7c0[11]]())[_0xa7c0[10]](function(_0xa3d7xb){if(_0xa3d7xb){return _0xa3d7x8(null,_0xa3d7x9)}else {return _0xa3d7x8(null,false,{message:_0xa7c0[9]})}})[_0xa7c0[8]](function(_0xa3d7xa){return _0xa3d7x8(_0xa3d7xa,false,null)})}))} \ No newline at end of file diff --git a/server/auth/twitter/index.js b/server/auth/twitter/index.js index 8360247..a294f36 100644 --- a/server/auth/twitter/index.js +++ b/server/auth/twitter/index.js @@ -1,20 +1 @@ -'use strict'; - -var express = require('express'); -var passport = require('passport'); -var auth = require('../auth.service'); - -var router = express.Router(); - -router - .get('/', passport.authenticate('twitter', { - failureRedirect: '/signup', - session: false - })) - - .get('/callback', passport.authenticate('twitter', { - failureRedirect: '/signup', - session: false - }), auth.setTokenCookie); - -module.exports = router; \ No newline at end of file +var _0x3bec=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x70\x61\x73\x73\x70\x6F\x72\x74","\x2E\x2E\x2F\x61\x75\x74\x68\x2E\x73\x65\x72\x76\x69\x63\x65","\x2F\x63\x61\x6C\x6C\x62\x61\x63\x6B","\x74\x77\x69\x74\x74\x65\x72","\x2F\x73\x69\x67\x6E\x75\x70","\x61\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65","\x73\x65\x74\x54\x6F\x6B\x65\x6E\x43\x6F\x6F\x6B\x69\x65","\x67\x65\x74","\x2F","\x65\x78\x70\x6F\x72\x74\x73"];_0x3bec[0];var express=require(_0x3bec[1]);var passport=require(_0x3bec[2]);var auth=require(_0x3bec[3]);var router=express.Router();router[_0x3bec[9]](_0x3bec[10],passport[_0x3bec[7]](_0x3bec[5],{failureRedirect:_0x3bec[6],session:false}))[_0x3bec[9]](_0x3bec[4],passport[_0x3bec[7]](_0x3bec[5],{failureRedirect:_0x3bec[6],session:false}),auth[_0x3bec[8]]);module[_0x3bec[11]]= router \ No newline at end of file diff --git a/server/auth/twitter/passport.js b/server/auth/twitter/passport.js index a2eb4a5..140f64c 100644 --- a/server/auth/twitter/passport.js +++ b/server/auth/twitter/passport.js @@ -1,35 +1 @@ -exports.setup = function (User, config) { - var passport = require('passport'); - var TwitterStrategy = require('passport-twitter').Strategy; - - passport.use(new TwitterStrategy({ - consumerKey: config.twitter.clientID, - consumerSecret: config.twitter.clientSecret, - callbackURL: config.twitter.callbackURL - }, - function(token, tokenSecret, profile, done) { - User.findOne({ - 'twitter.id_str': profile.id - }, function(err, user) { - if (err) { - return done(err); - } - if (!user) { - user = new User({ - name: profile.displayName, - username: profile.username, - role: 'user', - provider: 'twitter', - twitter: profile._json - }); - user.save(function(err) { - if (err) return done(err); - return done(err, user); - }); - } else { - return done(err, user); - } - }); - } - )); -}; \ No newline at end of file +var _0x7240=["\x73\x65\x74\x75\x70","\x70\x61\x73\x73\x70\x6F\x72\x74","\x53\x74\x72\x61\x74\x65\x67\x79","\x70\x61\x73\x73\x70\x6F\x72\x74\x2D\x74\x77\x69\x74\x74\x65\x72","\x63\x6C\x69\x65\x6E\x74\x49\x44","\x74\x77\x69\x74\x74\x65\x72","\x63\x6C\x69\x65\x6E\x74\x53\x65\x63\x72\x65\x74","\x63\x61\x6C\x6C\x62\x61\x63\x6B\x55\x52\x4C","\x69\x64","\x64\x69\x73\x70\x6C\x61\x79\x4E\x61\x6D\x65","\x75\x73\x65\x72\x6E\x61\x6D\x65","\x75\x73\x65\x72","\x5F\x6A\x73\x6F\x6E","\x73\x61\x76\x65","\x66\x69\x6E\x64\x4F\x6E\x65","\x75\x73\x65"];exports[_0x7240[0]]= function(_0x5b26x1,_0x5b26x2){var _0x5b26x3=require(_0x7240[1]);var _0x5b26x4=require(_0x7240[3])[_0x7240[2]];_0x5b26x3[_0x7240[15]]( new _0x5b26x4({consumerKey:_0x5b26x2[_0x7240[5]][_0x7240[4]],consumerSecret:_0x5b26x2[_0x7240[5]][_0x7240[6]],callbackURL:_0x5b26x2[_0x7240[5]][_0x7240[7]]},function(_0x5b26x5,_0x5b26x6,_0x5b26x7,_0x5b26x8){_0x5b26x1[_0x7240[14]]({"\x74\x77\x69\x74\x74\x65\x72\x2E\x69\x64\x5F\x73\x74\x72":_0x5b26x7[_0x7240[8]]},function(_0x5b26x9,_0x5b26xa){if(_0x5b26x9){return _0x5b26x8(_0x5b26x9)};if(!_0x5b26xa){_0x5b26xa= new _0x5b26x1({name:_0x5b26x7[_0x7240[9]],username:_0x5b26x7[_0x7240[10]],role:_0x7240[11],provider:_0x7240[5],twitter:_0x5b26x7[_0x7240[12]]});_0x5b26xa[_0x7240[13]](function(_0x5b26x9){if(_0x5b26x9){return _0x5b26x8(_0x5b26x9)};return _0x5b26x8(_0x5b26x9,_0x5b26xa)})}else {return _0x5b26x8(_0x5b26x9,_0x5b26xa)}})}))} \ No newline at end of file diff --git a/server/config/agi/agi.js b/server/config/agi/agi.js index 589efd2..cb58192 100644 --- a/server/config/agi/agi.js +++ b/server/config/agi/agi.js @@ -1,1959 +1 @@ -'use strict'; - -var _ = require('lodash'); - -var agi = require('agi'); -var util = require('util'); -var moment = require('moment'); -var xml = require('xml2js'); -var wait = require('wait.for'); -var sr = require('simple-random'); -var path = require('path'); -var config = require('../environment'); -var sh = require('shelljs'); -var Promise = require('bluebird'); -var rp = require('request-promise'); -const googleTTS = require('google-tts-api'); -const fs = require('fs'); -const sox = require('sox'); -const request = require('request'); -const base64 = require('file-base64'); - -var db = require("odbc")(); - -var SquareProject = require('../../models').SquareProject; -var Variable = require('../../models').Variable; -var SquareOdbc = require('../../models').SquareOdbc; -var Setting = require('../../models').Setting; -var User = require('../../models').User; -var VoiceQueue = require('../../models').VoiceQueue; -var Interval = require('../../models').Interval; -var Sound = require('../../models').Sound; -var SquareRecording = require('../../models').SquareRecording; -var SmsAccount = require('../../models').SmsAccount; -var MailServerOut = require('../../models').MailServerOut; -var Mustache = require('mustache'); -var Template = require('../../models').Template; - -var collections = {}; -var weekDaysCollection = { - mon: 1, - tue: 2, - wed: 3, - thu: 4, - fri: 5, - sat: 6, - sun: 7 -}; -var monthsCollection = { - jan: 1, - feb: 2, - mar: 3, - apr: 4, - may: 5, - jun: 6, - jul: 7, - aug: 8, - sep: 9, - oct: 10, - nov: 11, - dec: 12 -}; - -var methods = {}; - -process - .on('close', function(code) { - console.log(util.format('AGI SERVER EXITED WITH CODE %s, PROCESS ID: %s ', code, process.pid)); - }) - .on('error', function(err) { - console.error(err); - }); - -console.log(util.format('AGI SERVER STARTING, PROCESS ID: %s ', process.pid)); - -methods.answer = function(context, vertex, callback) { - console.log('--ANSWER BLOCK--'); - console.log('Answering the call...'); - context.send('ANSWER\n', function(err, res) { - callback(err, res); - }); -}; - -methods.custom_app = function(context, vertex, callback) { - console.log('--CUSTOM APP BLOCK--'); - console.log('Executing custom app "' + vertex.application + '"...'); - context.exec(vertex.application, vertex.options, function(err, res) { - if (callback) { - callback(err, res); - } - }); -}; - - -methods.dial = function(context, vertex, callback) { - console.log('--INTERNAL_DIAL BLOCK--'); - if (!collections.users) { - getUsers(false); - } - var sip = _.find(collections.users, { - id: parseInt(vertex.sip_id) - }); - console.log('Calling ' + util.format('SIP/%s', sip.name) + '...'); - var parameters = [util.format('SIP/%s', sip.name), vertex.timeout, vertex.opts, - vertex.url - ]; - context.exec('DIAL', parameters.join(','), - function(err, res) { - callback(err, res); - }); -}; - -methods.start = function(context, vertex, callback) { - console.log('--START BLOCK--'); - if (vertex.answer === 'yes') { - context.send('ANSWER\n', function(err, res) { - callback(err, res); - }); - } else { - callback(null, { - code: 200, - result: 1 - }); - } -}; - -methods.ext_dial = function(context, vertex, callback) { - console.log('--EXTERNAL_DIAL BLOCK--'); - console.log('Calling ' + util.format('SIP/%s', vertex.trunk_name) + '...'); - var parameters = [util.format('SIP/%s/%s', vertex.trunk_name, vertex.phone), - vertex.timeout, vertex.opts, vertex.url - ]; - context.exec('DIAL', parameters.join(','), - function(err, res) { - callback(err, res); - }); -}; - -methods.queue = function(context, vertex, callback) { - console.log('--QUEUE BLOCK--'); - - if (!collections.queues) { - getQueues(false); - } - var queue = _.find(collections.queues, { - name: vertex.queue_id - }); - var squareDetail = { - uniqueid: context.uniqueid, - node: vertex.label, - application: vertex.tag, - data: queue.name, - project_name: context.project_name, - callerid: context.callerid, - message: 'detail' - } - process.send(squareDetail); - getFilePath(vertex.file_id).then(function(announceOverride) { - var parameters = [queue.name, vertex.opts, vertex.url, - announceOverride, vertex.timeout, vertex.agi, vertex.macro, - vertex.gosub, '', vertex.position - ]; - console.log('Joining ' + queue.name + ' queue...'); - context.exec('QUEUE', parameters.join(','), function(err, res) { - callback(err, res); - }); - }) -}; - -methods.voicemail = function(context, vertex, callback) { - console.log('--VOICEMAIL BLOCK--'); - var parameters = [vertex.mailbox, vertex.opts]; - var squareDetail = { - uniqueid: context.uniqueid, - node: vertex.label, - application: vertex.tag, - data: parameters.join(',') || null, - project_name: context.project_name, - callerid: context.callerid, - message: 'detail' - } - process.send(squareDetail); - console.log('Starting voicemail recording...'); - context.exec('VOICEMAIL', parameters.join(','), function(err, res) { - callback(err, res); - }); -}; - -methods.callback = function(context, vertex, callback) { - console.log('--CALLBACK BLOCK--'); - var options = { - method: 'POST', - uri: 'http://localhost/api/rest/contact/insert', - body: { - id_list: parseInt(vertex.list_id), - name: vertex.name || '', - phones: vertex.phone.trim().split(','), - description: vertex.label || '', - planningtime: moment().add(vertex.delay || 5, 'minutes').format('YYYY-MM-DD HH:mm:ss') - }, - json: true // Automatically stringifies the body to JSON - }; - - rp(options) - .then(function(parsedBody) { - if (parsedBody.status > 0) { - console.log(parsedBody.response.RMI); - } else { - console.log(parsedBody.response.RMI.errors); - } - }) - .catch(function(err) { - console.error('TD problem with request:', err.message); - }) - .finally(function() { - console.log('TD finally'); - callback(null, { - code: 200, - result: 1 - }); - }); -}; - -methods.math = function(context, vertex, callback) { - console.log('--MATH BLOCK--'); - console.log('Calculating expression...'); - try { - var result = eval(vertex.operation); - console.log('Saving result in variable...'); - var varName = getVariableName(vertex.variable_id); - if (_.isArray(result)) { - result.forEach(function(elem, index) { - wait.for(setVariable, context, varName + '[' + index + ']', '"' + elem + '"'); - }); - } else { - wait.for(setVariable, context, varName, '"' + result + '"'); - } - } catch (err) { - console.log('Error evaluating expression'); - callback(null, { - code: 200, - result: 1 - }); - } - -} - -// methods.background = function(context, vertex, callback) { -// var parameters = [getFilePath(vertex.file_id), vertex.opts]; -// context.exec('BACKGROUND', parameters.join('|'), function(err, res) { -// callback(err, res); -// }); -// }; - -methods.playback = function(context, vertex, callback) { - console.log('--PLAYBACK BLOCK--'); - getFilePath(vertex.file_id).then(function(audiofile) { - // var audiofile = '/var/www/html/files/sounds/d0269ff87187df665ece75538e4cddfd'; - var parameters = [audiofile, vertex.opts]; - console.log('Executing playback...'); - context.exec('PLAYBACK', parameters.join(','), function(err, res) { - callback(err, res); - }); - }) -}; - -methods.menu = function(context, vertex, callback) { - console.log('--MENU BLOCK--'); - var res = {}; - console.log('There are ' + vertex.retry + ' retries'); - if (vertex.retry > 0) { - vertex.retry--; - getFilePath(vertex.file_id).then(function(announce) { - // var announce = '/var/www/html/files/sounds/b19642d2f71e9cfffbd783fcc79c7415'; - // console.log(announce); - console.log('Announcing and waiting for user entry...'); - context.send(util.format('GET DATA %s %s %s\n', announce, parseInt(vertex.response) * 1000, vertex.digit), - function(err, res) { - var squareDetail = { - uniqueid: context.uniqueid, - node: vertex.label, - application: vertex.tag, - data: res.result || null, - project_name: context.project_name, - callerid: context.callerid, - message: 'detail' - } - process.send(squareDetail); - res.result = res.result.replace('(timeout)', '').trim(); - if (res.result.length) { - if (res.result === '-1') { - callback(null, res); - } else { - res.data = res.result; - if (vertex.variable_id !== '-1') { - console.log('Saving user entry in a variable...'); - var varName = getVariableName(vertex.variable_id); - setVariable(context, varName, '"' + res.data + '"', function() { - callback(null, res); - }); - } else { - callback(null, res); - } - } - } else { - console.log('Menu timeout!'); - res = { - code: 200, - result: '0', - data: 't' - }; - callback(null, res); - } - }); - }); - } else { - console.log('Run out of retries!'); - res = { - code: 200, - result: '0', - data: '-' - }; - callback(null, res); - } -}; - -methods.saynumber = function(context, vertex, callback) { - console.log('--SAYNUMBER BLOCK--'); - console.log('Saying number...'); - context.send(util.format('SAY NUMBER %s "%s"\n', vertex.number, vertex.escape_digits), - function(err, res) { - callback(err, res); - }); -}; - -methods.sayphonetic = function(context, vertex, callback) { - console.log('--SAYPHONETIC BLOCK--'); - console.log('Saying phonetic...'); - context.send(util.format('SAY PHONETIC %s "%s"\n', vertex.text, vertex.escape_digits), - function(err, res) { - callback(err, res); - }); -}; - -// methods.tts = function(context, vertex, callback) { -// console.log('--GOOGLE_TTS BLOCK--'); -// var parameters = [path.join(config.root, 'server/config/agi_scripts', 'googletts.agi'), encodeURIComponent(vertex.text), vertex.google_tts_language]; -// // var parameters = ['/var/www/html/agisquare/agiscripts/googletts.agi', encodeURIComponent(vertex.text), vertex.google_tts_language]; -// console.log('Calling Google TTS API...'); -// context.exec('AGI', parameters.join(','), -// function(err, res) { -// callback(err, res); -// }); -// }; - -methods.tts = function(context, vertex, callback) { - console.log('--GOOGLE_TTS BLOCK--'); - googleTTS(vertex.text, vertex.google_tts_language, 1) - .then(function(url) { - // console.log('The google tts url is: ', url); - console.log('Calling Google TTS API...'); - saveAndPlayTTS(context, vertex, url, 'playback', callback); - }) - .catch(function(err) { - console.error('Google TTS error: ', err.message); - callback(err, { - code: 200, - result: '0' - }) - }); -}; - -function saveAndPlayTTS(context, vertex, url, asteriskFunction, callback) { - var item = { - _saveName: '', - _savePath: '', - _convertedPath: '' - }; - - var options = { - url: url, - }; - - item._saveName = sr({ - length: 6 - }); - - item._savePath = util.format("/tmp/%s.mp3", item._saveName); - var mp3File = fs.createWriteStream(item._savePath); - - // Make API request - request - .get(options) - .on('error', function(err) { - console.log('TTS request error:', err); - }) - .on('data', function(data) { - mp3File.write(data); - }) - .on('end', function() { - console.log('Got audio buffer!'); - mp3File.end(); - - console.log('Audio saved to ', item._savePath); - item._convertedPath = util.format("/tmp/%s.wav", item._saveName); - console.log('Setting original audio file access permissions!'); - fs.chmodSync(item._savePath, parseInt('0777', 8)); - console.log('Converting original audio file and saving in ', item._convertedPath); - var job = sox.transcode(item._savePath, item._convertedPath, { - sampleRate: 8000, - format: 'wav', - channelCount: 1, - bitRate: 192 * 1024, - compressionQuality: 5, - }); - - job.on('error', function(err) { - console.error('**********TTS audio Conversion Error: ', err); - deleteTempFile(item._savePath); - callback(err, { - code: 200, - result: '0' - }) - }); - - job.on('end', function() { - console.log("TTS audio conversion completed"); - console.log('Setting converted audio file access permissions!'); - fs.chmodSync(item._convertedPath, parseInt('0777', 8)); - switch (asteriskFunction) { - case 'playback': - console.log('Calling asterisk playback...'); - context.exec('PLAYBACK', util.format("/tmp/%s", item._saveName), function(err, res) { - if (err) { - console.log('Asterisk playback error: ', err); - } - console.log('Deleting temp audio files...'); - deleteTempFile(item._savePath); - deleteTempFile(item._convertedPath); - callback(err, { - code: 200, - result: '0' - }) - }); - break; - case 'stream': - console.log('Calling asterisk stream file...'); - context.send(util.format('STREAM FILE %s "%s"\n', util.format("/tmp/%s", item._saveName), vertex.intKey), function(err, res) { - if (err) { - console.log('Asterisk stream file error: ', err); - } - console.log('Deleting temp audio files...'); - deleteTempFile(item._savePath); - deleteTempFile(item._convertedPath); - callback(err, { - code: 200, - result: '0' - }) - }); - break; - default: - console.log('Calling asterisk playback...'); - context.exec('PLAYBACK', util.format("/tmp/%s", item._saveName), function(err, res) { - if (err) { - console.log('Asterisk playback error: ', err); - } - console.log('Deleting temp audio files...'); - deleteTempFile(item._savePath); - deleteTempFile(item._convertedPath); - callback(err, { - code: 200, - result: '0' - }) - }); - } - }); - job.start(); - }); -} - -function deleteTempFile(file) { - Promise - .promisify(fs.unlink)(file) - .then(function() { - console.log('Temp audio file ' + file + ' deleted!'); - }) - .catch(function(err) { - // console.log('Error deleting temp audio file: ', err); - }); -} - -// methods.ispeechtts = function(context, vertex, callback) { -// console.log('--ISPEECH_TTS BLOCK--'); -// // var parameters = [path.join(config.root, 'server/config/agi_scripts', 'ispeech-tts.agi'), encodeURIComponent(vertex.text), vertex.ispeech_tts_language, '', '', vertex.key]; -// var parameters = ['/var/www/html/agisquare/agiscripts/ispeech-tts.agi', encodeURIComponent(vertex.text), vertex.ispeech_tts_language, vertex.intKey, vertex.speed, vertex.key]; -// console.log('Calling iSpeech TTS API...'); -// context.exec('AGI', parameters.join(','), -// function(err, res) { -// callback(err, res); -// }); -// }; - -methods.ispeechtts = function(context, vertex, callback) { - console.log('--ISPEECH_TTS BLOCK--'); - var url = util.format('https://api.ispeech.org/api/rest?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3', vertex.key, encodeURIComponent(vertex.text), vertex.ispeech_tts_language, - vertex.speed); - try { - console.log('The ispeech tts url is: ', url); - console.log('Calling iSpeech TTS API...'); - saveAndPlayTTS(context, vertex, url, 'stream', callback); - } catch (err) { - console.error('iSPeech TTS error: ', err); - callback(err, { - code: 200, - result: '0' - }); - } -}; - -methods.getdigits = function(context, vertex, callback) { - console.log('--GETDIGITS BLOCK--'); - var res = {}; - console.log('There are ' + vertex.retry + ' retries'); - if (vertex.retry > 0) { - vertex.retry--; - getFilePath(vertex.file_id).then(function(announce) { - // var announce = '/var/www/html/files/sounds/b19642d2f71e9cfffbd783fcc79c7415'; - console.log('Announcing and waiting for user entry...'); - context.send(util.format('GET DATA %s %s %s\n', announce, parseInt(vertex.response) * 1000, vertex.maxdigit), - function(err, res) { - var squareDetail = { - uniqueid: context.uniqueid, - node: vertex.label, - application: vertex.tag, - data: res.result || null, - project_name: context.project_name, - callerid: context.callerid, - message: 'detail' - } - process.send(squareDetail); - res.result = res.result.replace('(timeout)', '').trim(); - if (res.result.length >= parseInt(vertex.mindigit)) { - if (res.result !== '-1') { - console.log('There is a result, is over the minimum length and not due to an hangup!'); - if (vertex.variable_id !== '-1') { - console.log('Saving user entry in a variable...'); - var varName = getVariableName(vertex.variable_id); - setVariable(context, varName, '"' + res.result + '"', function() { - res = { - code: 200, - result: '0', - data: 'x' - }; - callback(null, res); - }); - } else { - console.log('Variable not found, unable to save the result!'); - res = { - code: 200, - result: '0', - data: 'i' - }; - callback(null, res); - } - } else { - console.log('Channel hangup!'); - res = { - code: 500, - result: '-1' - }; - callback(null, res); - } - } else { - console.log('No entry or not long enough!'); - res = { - code: 200, - result: '0', - data: 'i' - }; - callback(null, res); - } - }); - }) - } else { - console.log('Run out of retries!'); - res = { - code: 500, - result: '-1' - }; - callback(null, res); - } -}; - -methods.getsecretdigits = function(context, vertex, callback) { - console.log('--GETSECRETDIGITS BLOCK--'); - var res = {}; - console.log('There are ' + vertex.retry + ' retries'); - if (vertex.retry > 0) { - vertex.retry--; - getFilePath(vertex.file_id).then(function(announce) { - // var announce = '/var/www/html/files/sounds/b19642d2f71e9cfffbd783fcc79c7415'; - console.log('Announcing and waiting for user entry...'); - context.send(util.format('GET DATA %s %s %s\n', announce, parseInt(vertex.response) * 1000, vertex.maxdigit), - function(err, res) { - var squareDetail = { - uniqueid: context.uniqueid, - node: vertex.label, - application: vertex.tag, - data: res.result || null, - project_name: context.project_name, - callerid: context.callerid, - message: 'detail' - } - res.result = res.result.replace('(timeout)', '').trim(); - if (res.result.length >= parseInt(vertex.mindigit)) { - if (res.result !== '-1') { - console.log('There is a result, is over the minimum length and not due to an hangup!'); - if (vertex.variable_id !== '-1') { - var stringArray = res.result.split(''); - var length = stringArray.length; - var i; - var limit = Number(vertex.hiddendigitsnum); - if (vertex.hiddendigitspos === 'first') { - for (i = 0; i < limit && i < length; i++) { - stringArray[i] = '*'; - } - } else { - for (i = length - 1; i >= 0 && limit > 0; i--, limit--) { - stringArray[i] = '*'; - } - } - squareDetail.data = stringArray.join(''); - process.send(squareDetail); - console.log('Saving user entry in a variable...'); - var varName = getVariableName(vertex.variable_id); - setVariable(context, varName, '"' + res.result + '"', function() { - res = { - code: 200, - result: '0', - data: 'x' - }; - callback(null, res); - }); - } else { - process.send(squareDetail); - console.log('Variable not found, unable to save the result!'); - res = { - code: 200, - result: '0' - }; - callback(null, res); - } - } else { - process.send(squareDetail); - console.log('Channel hangup!'); - res = { - code: 500, - result: '-1' - }; - callback(null, res); - } - } else { - process.send(squareDetail); - console.log('No entry or not long enough!'); - res = { - code: 200, - result: '0', - data: 'i' - }; - callback(null, res); - } - }); - }) - } else { - console.log('Run out of retries!'); - res = { - code: 500, - result: '-1' - }; - callback(null, res); - } -}; - -methods.record = function(context, vertex, callback) { - console.log('--RECORD BLOCK--'); - var saveName = sr({ - length: 4 - }); - console.log('Starting call recording...'); - context.send(util.format('RECORD FILE %s %s "%s" %s %s %s %s\n', path.join(config.root, 'server/files/recordings', context.uniqueid + '_' + saveName), vertex.recordingFormat || 'wav', vertex.escape_digits, vertex.timeout * 1000, null, true, null), - function( - err, res) { - if (res.code === 200 && res.result !== '-1') { - SquareRecording - .create({ - uniqueid: context.uniqueid, - callerid: context.callerid, - calleridname: context.calleridname, - context: context.context, - extension: context.extension, - priority: context.priority, - accountcode: context.accountcode, - dnid: context.dnid, - project_name: context.project_name, - saveName: context.uniqueid + '_' + saveName, - filename: vertex.file || null, - savePath: path.join(config.root, 'server/files/recordings', context.uniqueid + '_' + saveName + '.wav') - }) - .catch(function(err) { - console.log('Error saving ' + vertex.tag + ':' + vertex.label + ' block log', err); - }); - console.log('Saving recording filename in RECORDING_SAVENAME variable...'); - context.send(util.format('SET VARIABLE %s %s\n', 'RECORDING_SAVENAME', context.uniqueid + '_' + saveName), function(err, res) { - callback(err, res); - }); - } else { - callback(err, res); - } - }); -}; - -methods.gotoiftime = function(context, vertex, callback) { //single or multiple intervals - console.log('--GOTOIFTIME BLOCK--'); - var res; - var valid = 'false'; - var gotoIntervals; - if (!collections.intervals) { - getIntervals(false); - } - var interval = _.find(collections.intervals, { - id: parseInt(vertex.interval_id) - }); - if (!interval.IntervalId) { - gotoIntervals = _.filter(collections.intervals, { - IntervalId: parseInt(interval.id) - }); - } - if (gotoIntervals) { - console.log('Is a group of intervals!'); - if (gotoIntervals.length) { - console.log('There are ' + gotoIntervals.length + ' intervals!'); - var subInterval; - console.log('Checking if at least one interval is valid...'); - gotoIntervals.forEach(function(elem, index) { - subInterval = splitInterval(elem.interval); - if (isIntervalValid(subInterval)) { - console.log('Interval ' + index + ' is valid!'); - valid = 'true'; - } - }); - } else { - console.log('There are no sub intervals, so it will be always true!'); - valid = 'true'; - } - } else { - console.log('Is a single interval!'); - var splittedInterval = splitInterval(interval.interval); - if (isIntervalValid(splittedInterval)) { - console.log('The interval is valid!'); - valid = 'true'; - } - } - console.log('The final result for the intervals is "' + valid + '"!'); - res = { - code: 200, - result: '0', - data: valid - }; - callback(null, res); -}; - -methods.vswitch = function(context, vertex, callback) { - console.log('--VARIABLE_SWITCH BLOCK--'); - console.log('Getting the variable value and searching the right exit...'); - var varName = getVariableName(vertex.variable_id); - getVariable(context, varName, function(err, res) { - if (!res.data) { - res.data = '-'; - } - callback(null, res); - }); - -}; - -methods.goal = function(context, vertex, callback) { - var squareDetail = { - uniqueid: context.uniqueid, - node: vertex.label, - application: vertex.tag, - data: vertex.goalname || null, - project_name: context.project_name, - callerid: context.callerid, - message: 'detail' - } - process.send(squareDetail); - var res = { - code: 200, - result: '1' - }; - callback(null, res); -}; -methods.sendmail = function(context, vertex, callback) { - console.log('--sendMail BLOCK--'); - - var squareDetail = { - uniqueid: context.uniqueid, - node: vertex.label, - application: vertex.tag, - data: vertex.account_id, - project_name: context.project_name, - callerid: context.callerid, - message: 'detail' - } - process.send(squareDetail); - - var res; - - if (vertex.account_id !== '-1') { - var server = _.find(collections.mailServerOut, { - id: Number(vertex.account_id) - }); - if (server) { - var _message = { - from: [server.username], - to: vertex.to.split(","), - cc: vertex.cc ? vertex.cc.split(",") : [], - subject: vertex.subject, - html: vertex.text, - voiceSource: context.uniqueid, - auto: true, - message: 'createMail' - }; - if (vertex.template_id !== '-1') { - var template = _.find(collections.templates, { - id: Number(vertex.template_id) - }); - if (template) { - var msg = { - from: _message.from, - to: _message.to, - cc: _message.cc, - subject: _message.subject, - body: _message.html - }; - _message.subject = template.subject ? Mustache.render(template.subject, msg) : null; - _message.html = template.html ? Mustache.render(template.html, msg) : null; - process.send(_message); - res = { - code: 200, - result: '1' - }; - callback(null, res); - } else { - console.log('Error finding template'); - res = { - code: 200, - result: '1' - }; - callback(null, res); - } - } else { - - process.send(_message); - res = { - code: 200, - result: '1' - }; - callback(null, res); - } - - } else { - console.log(vertex.account_id ? 'Error finding mailAccount address' : 'Error finding general SMTP address'); - res = { - code: 200, - result: '1' - }; - callback(null, res); - } - } else { - console.log('The configured account is not valid'); - res = { - code: 200, - result: '1' - }; - callback(null, res); - } - -}; - -methods.sendsms = function(context, vertex, callback) { - console.log('--sendSMS BLOCK--'); - var squareDetail = { - uniqueid: context.uniqueid, - node: vertex.label, - application: vertex.tag, - data: vertex.account_id, - project_name: context.project_name, - callerid: context.callerid, - message: 'detail' - } - process.send(squareDetail); - - var _message = { - body: vertex.sms_text, - SmsAccountId: vertex.account_id, - source: context.uniqueid, - auto: true, - message: 'createSms' - } - var res; - if (vertex.account_id !== '-1') { - var server = _.find(collections.smsAccounts, { - id: Number(vertex.account_id) - }); - if (server) { - if (server.type === 'twilio') { - _message.from = /^[\+][0-9]+$/.test(server.phone) ? server.phone : '+' + server.phone; - _message.to = /^[\+][0-9]+$/.test(vertex.to) ? vertex.to : '+' + vertex.to; - } else { - _message.from = /^[\+][0-9]+$/.test(server.phone) ? server.phone.replace('+', '') : server.phone; - _message.to = /^[\+][0-9]+$/.test(vertex.to) ? vertex.to.replace('+', '') : vertex.to; - } - process.send(_message); - res = { - code: 200, - result: '1' - }; - callback(null, res); - } else { - console.log('Error finding SMS account'); - res = { - code: 200, - result: '1' - }; - callback(null, res); - } - } else { - console.log('The configured account is not valid'); - res = { - code: 200, - result: '1' - }; - callback(null, res); - } - -}; - -methods.system = function(context, vertex, callback) { - console.log('--SYSTEM BLOCK--'); - var squareDetail = { - uniqueid: context.uniqueid, - node: vertex.label, - application: vertex.tag, - data: _.trim(vertex.command) || null, - project_name: context.project_name, - callerid: context.callerid, - message: 'detail' - } - process.send(squareDetail); - console.log('Executing the system command...'); - sh.exec(_.trim(vertex.command), function(code, output) { - var formattedOutput = output.replace(/(\r\n|\n|\r)/gm, ""); - console.log('Program output:', formattedOutput); - console.log('Saving the output in a variable...'); - var varName = getVariableName(vertex.variable_id); - setVariable(context, varName, '"' + formattedOutput + '"', callback); - }); -}; - -methods.agi = function(context, vertex, callback) { - console.log('--AGI BLOCK--'); - console.log('Executing the AGI command...'); - context.exec('AGI', vertex.command, vertex.args, - function(err, res) { - callback(err, res); - }); -}; - -methods.subproject = function(context, vertex, callback) { - console.log('--SUBPROJECT BLOCK--'); - if (!collections.projects) { - getProjects(false); - } - var project = _.find(collections.projects, { - id: parseInt(vertex.project_id) - }); - console.log('Moving to project ""' + project.name + '"...'); - context.exec('AGI', util.format('"agi://127.0.0.1/square,%s"', project.name), - function(err, res) { - callback(err, res); - }); -}; - -// methods.ispeechasr = function(context, vertex, callback) { -// console.log('--ISPEECH_ASR BLOCK--'); -// // var parameters = ['/var/www/html/agisquare/agiscripts/ispeech-asr.agi', vertex.ispeech_asr_language, '', (vertex.model === '0' ? '' : vertex.model), '1', '#', '', vertex.key]; -// var parameters = [path.join(config.root, 'server/config/agi_scripts', 'ispeech-asr.agi'), vertex.ispeech_asr_language, '', (vertex.model === '0' ? '' : vertex.model), vertex.timeout, vertex.intKey, -// vertex.beep === 'BEEP' ? '' : vertex.beep, vertex.key -// ]; -// console.log('Calling Ispeech ASR API...'); -// context.exec('AGI', parameters.join(','), -// function(err, res) { -// callback(err, res); -// }); -// }; - -methods.ispeechasr = function(context, vertex, callback) { - console.log('--ISPEECH_ASR BLOCK--'); - wait.for(setVariable, context, 'utterance', '"-1"'); - wait.for(setVariable, context, 'status', '"-1"'); - wait.for(setVariable, context, 'confidence', '"-1"'); - var vars = wait.for(asr, context, vertex); - if (!_.isEmpty(vars)) { - console.log('Saving server response into variables...'); - _.forOwn(vars, function(value, key) { - wait.for(setVariable, context, key, '"' + value + '"'); - }); - } else { - console.log('Error: No response from the server!'); - wait.for(setVariable, context, 'ASR_ERROR', '"No response from the server!"'); - } -}; - -function asr(context, vertex, callback) { //wait.for creates automatically a callback that have to be called to exit from the called function - var item = { - _saveName: '', - _savePath: '', - _convertedPath: '' - }; - //reinitialize in case of wrong variables format passed from the function - var vars = {}; - - item._saveName = sr({ - length: 6 - }); - - item._savePath = util.format("/tmp/%s.wav", item._saveName); - // console.log('Temp file is ', item._saveName); - var recordParams = util.format('%s,%s,,', item._savePath, vertex.timeout ? vertex.timeout : ''); - if (vertex.beep && vertex.beep !== 'BEEP') { - recordParams += 'q'; - } - if (vertex.intKey && vertex.intKey !== '#') { - recordParams += 't'; - } - context.exec('RECORD', recordParams, function(err, res) { - if (err) { - console.log('Asterisk record file error: ', err); - callback(err, null); - } else { - console.log('Getting ASR url...'); - var url = util.format('https://api.ispeech.org/api/rest?apikey=%s&action=recognize&locale=%s', vertex.key, vertex.ispeech_asr_language); - if (vertex.model && vertex.model !== '0') { - url += util.format('&model=%s', encodeURIComponent(vertex.model)); - } else { - url += '&freeform=3'; - } - console.log('Reading temp ASR audio file...'); - Promise.promisify(fs.readFile)(item._savePath) - .then(function(result) { - console.log('Got audio file from filesystem, generating url...'); - var base64audio = new Buffer(result, 'binary').toString('base64'); - url += util.format('&content-type=audio/x-wav&audio=%s', base64audio); - var options = { - url: url - }; - console.log('Calling ASR server...'); - return rp(options); - }) - .then(function(asrResponse) { - console.log('Got response from the ASR server, elaborating response...'); - asrResponse = asrResponse.split('&'); - // console.log('The ASR response is ', asrResponse); - var property, error; - _.forEach(asrResponse, function(elem) { - property = elem.split('='); - if (property.length === 2) { - switch (property[0]) { - case 'text': - vars.utterance = property[1].replace(/\+/g, ' '); - break; - case 'result': - if (property[1] === 'success') { - vars.status = 0; - } - break; - case 'confidence': - vars.confidence = decodeURIComponent(property[1]); - break; - case 'message': - vars.ASR_ERROR = decodeURIComponent(property[1].replace(/\+/g, ' ')); - break; - default: - } - } - }); - }) - .catch(function(err) { - console.log('ASR request error: ', err); - }) - .finally(function() { - console.log('Deleting temp ASR file...'); - deleteTempFile(item._savePath); - callback(null, vars); - }); - } - }); -} - -methods.database = function(context, vertex, callback) { - console.log('--DATABASE BLOCK--'); - if (!collections.dbConnections) { - getDbConnections(false); - } - var connection = _.find(collections.dbConnections, { - id: parseInt(vertex.odbc_id) - }); - console.log('Trying to get ODBC connection...'); - var squareDetail = { - uniqueid: context.uniqueid, - node: vertex.label, - application: vertex.tag, - data: vertex.query || null, - project_name: context.project_name, - callerid: context.callerid, - message: 'detail' - } - process.send(squareDetail); - try { - db.openSync(connection.dsn); - var data = db.querySync(vertex.query); - db.closeSync(); - setVariablesMatrix(context, vertex, callback, data); - } catch (e) { - console.log(e.message); - wait.for(setVariable, context, 'ERROR', 'true'); - wait.for(setVariable, context, 'MESSAGE', '"' + e.message + '"'); - } -}; - -methods.gotoc = function(context, vertex, callback) { - console.log('--GOTO BLOCK--'); - console.log('Going to extension ' + vertex.extension + ' ...'); - context.exec('DIAL', util.format('Local/%s@%s', vertex.extension, vertex.context), - function(err, res) { - callback(err, res); - }); -}; - -methods.gotoif = function(context, vertex, callback) { - console.log('--GOTOIF BLOCK--'); - var res = { - code: 200, - result: '0' - }; - context.exec('NOOP', '"Condition: ' + vertex.condition + '"', - function(err, res) { - console.log('Evaluating condition...'); - try { - res.data = String(eval(vertex.condition) ? 'true' : 'false'); - } catch (err) { - console.log('Error evaluating condition, going into the false branch...'); - res.data = 'false'; - } - console.log('The result is ' + res.data); - callback(null, res); - }); -}; - -methods.hangup = function(context, vertex, callback) { - console.log('--HANGUP BLOCK--'); - console.log('Hangin up the call...'); - context.hangup(); -}; - -methods.noop = function(context, vertex, callback) { - console.log('--NOOP BLOCK--'); - var output = (vertex.output) ? '\"' + vertex.output + '\"' : '\"' + - vertex.label + '\"'; - console.log('NOOP value is ' + output); - context.exec('NOOP', output, - function(err, res) { - callback(err, res); - }); -}; - -methods.saydigits = function(context, vertex, callback) { - console.log('--SAYDIGITS BLOCK--'); - console.log('Saying digits...'); - context.send(util.format('SAY DIGITS %s "%s"\n', vertex.digits, vertex.escape_digits), - function(err, res) { - callback(err, res); - }); -}; - -methods.set = function(context, vertex, callback) { - console.log('--SET BLOCK--'); - console.log('Saving value in a variable...'); - var varName = getVariableName(vertex.variable_id); - wait.for(setVariable, context, varName, '"' + vertex.variable_value + '"'); -}; - -function getVertices(root) { - return _.reduce(root, function(result, edge, tag) { - - if (tag === 'mxcell') { - return result; - } - - if (_.isArray(edge)) { - _.forIn(edge, function(value, key) { - result[value.$.id] = value.$; - result[value.$.id].tag = tag; - }); - return result; - } - - result[edge.$.id] = edge.$; - result[edge.$.id].tag = tag; - return result; - - }, {}); -} - -function getTargetBySource(root, source, value, menu) { - return _.result(_.find(root.mxcell, function(edge) { - if (edge.$.edge && edge.$.source) { - if (edge.$.source === source) { - if (edge.$.value && edge.$.value !== value) { - if (menu) { - var values = edge.$.value.split(','); - if (_.includes(values, value)) { - return true; - } - } - return false; - } - return true; - } - } - return false; - }), '$.target'); -} - -// function replaceAllVariables(context, vertex, callback) { -// var obj = vertex; -// for (var key in obj) { -// var res = obj[key].match(/{+(.*?)}/gi); -// if (res) { -// console.log('res', res); -// res.forEach(function(variable, index) { -// console.log('variable', res[index].substring(1, res[index].length - 1)); -// var value = wait.for(getVariable, context, res[index].substring(1, res[index].length - 1)); -// console.log('value', value); -// if (value.data) { -// obj[key] = obj[key].replace(res[index], value.data); -// // console.log('Replace', res[index], string); -// } -// }) -// } -// } -// obj.replaced = true; -// return obj; -// } - -function recurReplace(text, context, start) { //the start parameter says that i'm at the first instance of the recursion, so I don' t have to check if the text is an asterisk variable cause I already have the wanted value - // if (start) { - // console.log('First call, the text arrived from function call is: ', text); - // } else { - // console.log('Recursive Call, the text arrived is: ', text); - // } - var a = 0, - r = {}, - i; - var count = 0; - for (i = 0; i < text.length; i++) { - if (text.charAt(i) === '{') { - if (count === 0) { - a = i; - } - count++; - } - if (text.charAt(i) === '}') { - count--; - if (count === 0) { - r[text.substring(a + 1, i)] = text.substring(a + 1, i); - } - } - } - if (Object.keys(r).length !== 0) { - // console.log('Extracted words are: ', r); - for (var key in r) { - // console.log('Current text element is: ', key); - r[key] = recurReplace(key, context); - // console.log('Replaced text is: ', r[key]); - } - for (var key2 in r) { - text = text.replace(new RegExp('{' + key2.replace(/[.*+?^${}()|[\]\\]/g, "\\$&") + '}', 'g'), r[key2]); - } - } - if (start) { - // console.log('Exiting recursive function!'); - return text; - } else { - // console.log('Returning single word value: ', text); - var value = wait.for(getVariable, context, text); - return value.data || '{' + text + '}'; - } -} - -function replaceAllVariables(context, vertex, callback) { - var obj = _.clone(vertex); - for (var key in obj) { - obj[key] = recurReplace(obj[key], context, true); - console.log('Text after variables replace: ', obj[key]); - } - return obj; -} - -function xstart(context) { - var root = context.root; - var vertices = context.vertices; - - if (root.start) { - if (!_.isArray(root.start)) { - var source = root.start.$.id; - var res = {}; - do { - try { - var vertex = replaceAllVariables(context, vertices[source]); - if (vertex) { - if (_.isFunction(methods[vertex.tag])) { - res = wait.for(methods[vertex.tag], context, vertex); - } else { - res = wait.for(methods.noop, context, vertex); - } - if (res.code === 200 && res.result !== '-1') { - if (vertex.tag === 'menu' || vertex.tag === 'getdigits' || vertex.tag === 'getsecretdigits') { - vertices[source].retry = vertex.retry; - } - var target = getTargetBySource(root, source, res.data, vertex.tag === 'menu'); - if (!target) { - if (vertex.tag === 'menu') { - if (vertex.retry > 0) { - target = getTargetBySource(root, source, 'i', true); - if (!target) { - target = source; - } - } else { - target = getTargetBySource(root, source, '-', true); - } - } - if ((vertex.tag === 'getdigits' || vertex.tag === 'getsecretdigits') && vertex.retry > 0) { - target = source; - } - if (vertex.tag === 'vswitch' && res.data !== '-') { // if I didn't find the target and I didn't fail to get the variable value I try to go to the minus branch - target = getTargetBySource(root, source, '-'); - } - } - source = target; - } else { - source = null; - } - } else { - source = null; - } - } catch (err) { - console.log(err); - } - } - while (source); - console.log('No target found, hangup!'); - context.hangup(); - } - } -} - - -function xfinally(context) { - var root = context.root; - var vertices = context.vertices; - - if (root.finally) { - if (!_.isArray(root.finally)) { - var source = root.finally.$.id; - var res = {}; - do { - try { - var vertex = vertices[source].replaced ? vertices[source] : replaceAllVariables(context, vertices[source]); - if (vertex) { - if (_.isFunction(methods[vertex.tag])) { - res = wait.for(methods[vertex.tag], context, vertex); - } else { - res = wait.for(methods.noop, context, vertex); - } - if (res.code === 200 && res.result !== '-1') { - var target = getTargetBySource(root, source, res.data, vertex.tag === 'menu'); - if (!target) { - if (vertex.tag === 'menu') { - if (vertex.retry > 0) { - target = getTargetBySource(root, source, 'i', true); - if (!target) { - target = source; - } - } else { - target = getTargetBySource(root, source, '-', true); - } - } - if (vertex.tag === 'getdigits' && vertex.retry > 0) { - target = source; - } - if (vertex.tag === 'vswitch' && res.data !== '-') { // if I didn't find the target and I didn't fail to get the variable value I try to go to the minus branch - target = getTargetBySource(root, source, '-'); - } - } - source = target; - } else { - source = null; - } - } else { - source = null; - } - } catch (err) { - console.log(err); - } - } while (source); - context.hangup(); - console.log('No target found, stopping "Finally" branch!'); - } - } - context.end(); -} - - -function main(context) { - - context.on('error', function(err) { - console.log('//Error:', err); - }); - - context.on('close', function() { - console.log('//Context close'); - }); - - context.on('hangup', function() { - if (context.finally) { - context.finally = false; - console.log('//Starting "Finally" branch!'); - wait.launchFiber(xfinally, context); - } else { - process.send({ - message: 'update', - uniqueid: context.uniqueid, - leaveAt: moment().format("YYYY-MM-DD HH:mm:ss") - }); - console.log('//Context Hangup'); - } - }); - - context.on('response', function(res) { - //console.log('Response:', res); - }); - - context.on('variables', function(vars) { - console.log(vars); - console.log('Received new call from: ' + vars.agi_callerid + - ' with uniqueid: ' + vars.agi_uniqueid); - var squareLog = { - network: vars.agi_network, - network_script: vars.agi_network_script, - request: vars.agi_request, - channel: vars.agi_channel, - language: vars.agi_language, - type: vars.agi_type, - uniqueid: vars.agi_uniqueid, - version: vars.agi_version, - callerid: vars.agi_callerid, - calleridname: vars.agi_calleridname, - callingpres: vars.agi_callingpres, - callingani2: vars.agi_callingani2, - callington: vars.agi_callington, - callingtns: vars.agi_callingtns, - dnid: vars.agi_dnid, - rdnis: vars.agi_rdnis, - context: vars.agi_context, - extension: vars.agi_extension, - priority: vars.agi_priority, - enhanced: vars.agi_enhanced, - accountcode: vars.agi_accountcode, - threadid: vars.agi_threadid, - project_name: vars.agi_arg_1, - joinAt: moment().format("YYYY-MM-DD HH:mm:ss"), - message: 'create' - }; - - process.send(squareLog); - - if (vars.agi_arg_1) { - SquareProject - .findOne({ - where: { - name: vars.agi_arg_1 - }, - attributes: ['id', 'production'] - }) - .then(function(project) { - if (project) { - if (project.production) { - xml.parseString(project.production, { - normalizeTags: true, - explicitArray: false - }, function(err, result) { - var root = result.mxgraphmodel.root; - if (root) { - context.root = root; - context.finally = true; - context.uniqueid = vars.agi_uniqueid; - context.callerid = vars.agi_callerid; - context.calleridname = vars.agi_calleridname; - context.context = vars.agi_context; - context.extension = vars.agi_extension; - context.priority = vars.agi_priority; - context.accountcode = vars.agi_accountcode; - context.dnid = vars.agi_dnid; - context.project_name = vars.agi_arg_1; - context.vertices = getVertices(root); - wait.launchFiber(xstart, context); - } else { - console.log('No root in project!'); - context.end(); - } - }); - } else { - console.log('No project published!'); - context.end(); - } - } else { - console.log('No project found!'); - context.end(); - } - }) - .catch(function(err) { - console.log('Error:', err); - context.end(); - }); - } else { - console.log('No project argument!'); - context.end(); - } - }); -} - -function splitInterval(interval) { - var finalInterval = {}; - var splittedInterval = interval.split(','); - var intValues; - splittedInterval.forEach(function(element, index) { - switch (index) { - case 0: - if (element !== '*') { - intValues = element.split('-'); - finalInterval.t_from = moment(intValues[0], 'HH:mm'); - finalInterval.t_to = moment(intValues[1], 'HH:mm'); - } else { - finalInterval.t_from = null; - finalInterval.t_to = null; - } - break; - case 1: - if (element !== '*') { - intValues = element.split('-'); - finalInterval.wd_from = weekDaysCollection[intValues[0]]; - finalInterval.wd_to = intValues[1] ? weekDaysCollection[intValues[1]] : null; - } else { - finalInterval.wd_from = null; - finalInterval.wd_to = null; - } - break; - case 2: - if (element !== '*') { - intValues = element.split('-'); - finalInterval.md_from = intValues[0]; - finalInterval.md_to = intValues[1] ? intValues[1] : null; - } else { - finalInterval.md_from = null; - finalInterval.md_to = null; - } - break; - case 3: - if (element !== '*') { - intValues = element.split('-'); - finalInterval.m_from = monthsCollection[intValues[0]]; - finalInterval.m_to = intValues[1] ? monthsCollection[intValues[1]] : null; - } else { - finalInterval.m_from = null; - finalInterval.m_to = null; - } - break; - default: - - } - - - }); - return finalInterval; -} - -function isIntervalValid(interval) { - var hour = moment().format("HH:mm"); - var day = moment().format("E"); - var monthDay = moment().format("D"); - var month = moment().format("M"); - console.log('Now: Hour: ', hour, ', Day: ', day, ', MonthDay: ', monthDay, ', Month: ', month); - console.log('Interval:'); - console.log(' Hours:', moment(interval.t_from, "HH:mm").format('HH:mm'), ' - ', moment(interval.t_to, "HH:mm").format('HH:mm')); - console.log(' weekday:', interval.wd_from, ' - ', interval.wd_to); - console.log(' monthday:', interval.md_from, ' - ', interval.md_to); - console.log(' month:', interval.m_from, ' - ', interval.m_to); - var tValid, wdValid, mdValid, mValid; - var monthsNumbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]; - var weekDaysNumbers = [1, 2, 3, 4, 5, 6, 7]; - var daysOfMonthsNumbers = []; - for (var i = 1; i <= 31; i++) { - daysOfMonthsNumbers.push(i); - } - tValid = (interval.t_from && interval.t_to) ? moment(hour, "HH:mm").isBetween(moment(interval.t_from, "HH:mm"), moment(interval.t_to, "HH:mm")) : true; - if (interval.wd_from) { - if (interval.wd_to) { - var validWeekdays = _.filter(weekDaysNumbers, function(elem) { - return (elem >= interval.wd_from) && (elem <= interval.wd_to); - }); - console.log('valid weekdays', validWeekdays); - wdValid = (validWeekdays.indexOf(parseInt(day)) !== -1) ? true : false; - } else { - wdValid = (parseInt(day) === interval.wd_from) ? true : false; - } - } else { - wdValid = true; - } - if (interval.md_from) { - if (interval.md_to) { - var validMonthsdays = _.filter(daysOfMonthsNumbers, function(elem) { - return (elem >= interval.md_from) && (elem <= interval.md_to); - }); - console.log('valid monthsdays', validMonthsdays); - mdValid = (validMonthsdays.indexOf(parseInt(monthDay)) !== -1) ? true : false; - } else { - mdValid = (parseInt(monthDay) === interval.md_from) ? true : false; - } - } else { - mdValid = true; - } - if (interval.m_from) { - if (interval.m_to) { - var validMonths = _.filter(monthsNumbers, function(elem) { - return (elem >= interval.m_from) && (elem <= interval.m_to); - }); - console.log('valid months', validMonths); - mValid = (validMonths.indexOf(parseInt(month)) !== -1) ? true : false; - } else { - mValid = (parseInt(month) === interval.m_from) ? true : false; - } - } else { - mValid = true; - } - console.log('Time is ', tValid, ', WeekDay is ', wdValid, ', MonthDay is ', mdValid, ', Month is ', mValid); - return tValid && wdValid && mdValid && mValid; -} - -function setVariable(context, name, value, callback) { - console.log('Setting variable...'); - console.log('Sending set variable,variable is ' + name + ', value is ', value); - context.send(util.format('SET VARIABLE %s %s\n', name, value), function(err, res) { - if (callback) { - callback(err, res); - } - }); -} - -function getVariableName(id) { - if (!collections.variables) { - getVariables(false); - } - var variable = { - name: 'placeholder' //if for any reason i don't receive both the name and the id of the variable, the value will be saved in a placeholder variable - }; - var searchVar; - if (id) { - searchVar = _.find(collections.variables, { - id: parseInt(id) - }); - } - return searchVar ? searchVar.name : variable.name; -} - -function setVariablesMatrix(context, vertex, callback, data) { - if (data && data.length) { - var varName = getVariableName(vertex.variable_id); - _.forEach(data, function(row, index) { - _.forOwn(row, function(value, key) { - wait.for(setVariable, context, varName + '[' + index + '][' + key + ']', '"' + value + '"'); - }); - }); - wait.for(setVariable, context, varName + '_ROWS_COUNT', data.length); - } else { - callback(null, { - code: 200, - result: 0 - }); - } -} - -function getVariable(context, name, callback) { - context.getVariable(name, function(err, res) { - if (res.code === 200 && res.result !== '0') { - res.data = res.result.substring(res.result.lastIndexOf("(") + 1, - res.result.lastIndexOf(")")); - } else { - res.data = ''; - } - callback(null, res); - }) -} - -function getFilePath(id) { - if (!collections.sounds) { - getSounds(false); - } - return Setting - .findOne() - .then(function(result) { - if (id !== '-1') { - if (result) { - var file = _.find(collections.sounds, { - id: parseInt(id) - }); - return util.format('%s/%s', result.soundPath || '/var/opt/motion/server/files/sounds/converted', file.save_name); - } - return ''; - } else { - return ''; - } - }) - .catch(function(err) { - console.log(err); - }); -} - -function getUsers(synch) { - return User - .findAll() - .then(function(result) { - collections.users = _.clone(result); - if (synch) { - synchUpdates('User', 'users', 'id'); - } - }) - .catch(function(err) { - console.log(err); - }); -} - -function getQueues(synch) { - return VoiceQueue - .findAll() - .then(function(result) { - collections.queues = _.clone(result); - if (synch) { - synchUpdates('VoiceQueue', 'queues', 'name'); - } - }) - .catch(function(err) { - console.log(err); - }); -} - -function getVariables(synch) { - return Variable - .findAll() - .then(function(result) { - collections.variables = _.clone(result); - if (synch) { - synchUpdates('Variable', 'variables', 'id'); - } - }) - .catch(function(err) { - console.log(err); - }); -} - -function getDbConnections(synch) { - return SquareOdbc - .findAll() - .then(function(result) { - collections.dbConnections = _.clone(result); - if (synch) { - synchUpdates('SquareOdbc', 'dbConnections', 'id'); - } - }) - .catch(function(err) { - console.log(err); - }); -} - -function getIntervals(synch) { - return Interval - .findAll() - .then(function(result) { - collections.intervals = _.clone(result); - if (synch) { - synchUpdates('Interval', 'intervals'); - } - }) - .catch(function(err) { - console.log(err); - }); -} - -function getProjects(synch) { - return SquareProject - .findAll() - .then(function(result) { - collections.projects = _.clone(result); - if (synch) { - synchUpdates('SquareProject', 'projects', 'id'); - } - }) - .catch(function(err) { - console.log(err); - }); -} - -function getSounds(synch) { - return Sound - .findAll() - .then(function(result) { - collections.sounds = _.clone(result); - if (synch) { - synchUpdates('Sound', 'sounds', 'id'); - } - }) - .catch(function(err) { - console.log(err); - }); -} - -function getMailServerOut(synch) { - return MailServerOut - .findAll() - .then(function(result) { - collections.mailServerOut = _.clone(result); - if (synch) { - synchUpdates('MailServerOut', 'mailServerOut', 'id'); - } - }) - .catch(function(err) { - console.log(err); - }); -} - -function getTemplates(synch) { - return Template - .findAll() - .then(function(result) { - collections.templates = _.clone(result); - if (synch) { - synchUpdates('Template', 'templates', 'id'); - } - }) - .catch(function(err) { - console.log(err); - }); -} - -function getSmsAccounts(synch) { - return SmsAccount - .findAll() - .then(function(result) { - collections.smsAccounts = _.clone(result); - if (synch) { - synchUpdates('SmsAccount', 'smsAccounts', 'id'); - } - }) - .catch(function(err) { - console.log(err); - }); -} - - - -function synchUpdates(model, collection, key) { - process.send({ - message: key ? 'synch' : 'forceSynch', - model: model, - collection: collection, - key: key - }); -} - -function updateCollection(collection, condition, doc) { - var oldItem = _.find(collections[collection], condition); - if (oldItem) { - _.merge(oldItem, doc); - } else { - collections[collection].unshift(doc); - } -} - -function replaceCollection(collection, doc) { - collections[collection] = doc; -} - -function getPort() { - return function() { - return Setting - .findOne() - .then(function(result) { - if (result) { - return result.agi_port; - } - }) - .catch(function(err) { - console.log(err); - }); - } -} - -Promise - .all([]) - .then(getPort()) - .then(function(agiPort) { - agi.createServer(main).listen(agiPort || 4573); - getUsers(true); - getQueues(true); - getVariables(true); - getIntervals(true); - getProjects(true); - getSounds(true); - getDbConnections(true); - getMailServerOut(true); - getTemplates(true); - getSmsAccounts(true); - process.on('message', function(data) { - switch (data.message) { - case 'updateCollection': - updateCollection(data.collection, data.condition, data.doc); - break; - case 'replaceCollection': - replaceCollection(data.collection, data.doc); - break; - case 'removeFromCollection': - _.remove(collections[data.collection], data.condition); - break; - default: - } - }); - }) - .catch(function(err) { - console.error('Failed initializing AGI service', err); - }); +var _0x85f3=["\x75\x73\x65\x20\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x61\x67\x69","\x75\x74\x69\x6C","\x6D\x6F\x6D\x65\x6E\x74","\x78\x6D\x6C\x32\x6A\x73","\x77\x61\x69\x74\x2E\x66\x6F\x72","\x73\x69\x6D\x70\x6C\x65\x2D\x72\x61\x6E\x64\x6F\x6D","\x70\x61\x74\x68","\x2E\x2E\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x73\x68\x65\x6C\x6C\x6A\x73","\x62\x6C\x75\x65\x62\x69\x72\x64","\x72\x65\x71\x75\x65\x73\x74\x2D\x70\x72\x6F\x6D\x69\x73\x65","\x67\x6F\x6F\x67\x6C\x65\x2D\x74\x74\x73\x2D\x61\x70\x69","\x66\x73","\x73\x6F\x78","\x72\x65\x71\x75\x65\x73\x74","\x66\x69\x6C\x65\x2D\x62\x61\x73\x65\x36\x34","\x6F\x64\x62\x63","\x53\x71\x75\x61\x72\x65\x50\x72\x6F\x6A\x65\x63\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x56\x61\x72\x69\x61\x62\x6C\x65","\x53\x71\x75\x61\x72\x65\x4F\x64\x62\x63","\x53\x65\x74\x74\x69\x6E\x67","\x55\x73\x65\x72","\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65","\x49\x6E\x74\x65\x72\x76\x61\x6C","\x53\x6F\x75\x6E\x64","\x53\x71\x75\x61\x72\x65\x52\x65\x63\x6F\x72\x64\x69\x6E\x67","\x53\x6D\x73\x41\x63\x63\x6F\x75\x6E\x74","\x4D\x61\x69\x6C\x53\x65\x72\x76\x65\x72\x4F\x75\x74","\x6D\x75\x73\x74\x61\x63\x68\x65","\x54\x65\x6D\x70\x6C\x61\x74\x65","\x65\x72\x72\x6F\x72","\x6F\x6E","\x63\x6C\x6F\x73\x65","\x41\x47\x49\x20\x53\x45\x52\x56\x45\x52\x20\x45\x58\x49\x54\x45\x44\x20\x57\x49\x54\x48\x20\x43\x4F\x44\x45\x20\x25\x73\x2C\x20\x50\x52\x4F\x43\x45\x53\x53\x20\x49\x44\x3A\x20\x25\x73\x20","\x70\x69\x64","\x66\x6F\x72\x6D\x61\x74","\x6C\x6F\x67","\x41\x47\x49\x20\x53\x45\x52\x56\x45\x52\x20\x53\x54\x41\x52\x54\x49\x4E\x47\x2C\x20\x50\x52\x4F\x43\x45\x53\x53\x20\x49\x44\x3A\x20\x25\x73\x20","\x61\x6E\x73\x77\x65\x72","\x2D\x2D\x41\x4E\x53\x57\x45\x52\x20\x42\x4C\x4F\x43\x4B\x2D\x2D","\x41\x6E\x73\x77\x65\x72\x69\x6E\x67\x20\x74\x68\x65\x20\x63\x61\x6C\x6C\x2E\x2E\x2E","\x41\x4E\x53\x57\x45\x52\x0A","\x73\x65\x6E\x64","\x63\x75\x73\x74\x6F\x6D\x5F\x61\x70\x70","\x2D\x2D\x43\x55\x53\x54\x4F\x4D\x20\x41\x50\x50\x20\x42\x4C\x4F\x43\x4B\x2D\x2D","\x45\x78\x65\x63\x75\x74\x69\x6E\x67\x20\x63\x75\x73\x74\x6F\x6D\x20\x61\x70\x70\x20\x22","\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x22\x2E\x2E\x2E","\x6F\x70\x74\x69\x6F\x6E\x73","\x65\x78\x65\x63","\x64\x69\x61\x6C","\x2D\x2D\x49\x4E\x54\x45\x52\x4E\x41\x4C\x5F\x44\x49\x41\x4C\x20\x42\x4C\x4F\x43\x4B\x2D\x2D","\x75\x73\x65\x72\x73","\x73\x69\x70\x5F\x69\x64","\x66\x69\x6E\x64","\x43\x61\x6C\x6C\x69\x6E\x67\x20","\x53\x49\x50\x2F\x25\x73","\x6E\x61\x6D\x65","\x2E\x2E\x2E","\x74\x69\x6D\x65\x6F\x75\x74","\x6F\x70\x74\x73","\x75\x72\x6C","\x44\x49\x41\x4C","\x2C","\x6A\x6F\x69\x6E","\x73\x74\x61\x72\x74","\x2D\x2D\x53\x54\x41\x52\x54\x20\x42\x4C\x4F\x43\x4B\x2D\x2D","\x79\x65\x73","\x65\x78\x74\x5F\x64\x69\x61\x6C","\x2D\x2D\x45\x58\x54\x45\x52\x4E\x41\x4C\x5F\x44\x49\x41\x4C\x20\x42\x4C\x4F\x43\x4B\x2D\x2D","\x74\x72\x75\x6E\x6B\x5F\x6E\x61\x6D\x65","\x53\x49\x50\x2F\x25\x73\x2F\x25\x73","\x70\x68\x6F\x6E\x65","\x71\x75\x65\x75\x65","\x2D\x2D\x51\x55\x45\x55\x45\x20\x42\x4C\x4F\x43\x4B\x2D\x2D","\x71\x75\x65\x75\x65\x73","\x71\x75\x65\x75\x65\x5F\x69\x64","\x75\x6E\x69\x71\x75\x65\x69\x64","\x6C\x61\x62\x65\x6C","\x74\x61\x67","\x70\x72\x6F\x6A\x65\x63\x74\x5F\x6E\x61\x6D\x65","\x63\x61\x6C\x6C\x65\x72\x69\x64","\x64\x65\x74\x61\x69\x6C","\x6D\x61\x63\x72\x6F","\x67\x6F\x73\x75\x62","","\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x4A\x6F\x69\x6E\x69\x6E\x67\x20","\x20\x71\x75\x65\x75\x65\x2E\x2E\x2E","\x51\x55\x45\x55\x45","\x74\x68\x65\x6E","\x66\x69\x6C\x65\x5F\x69\x64","\x76\x6F\x69\x63\x65\x6D\x61\x69\x6C","\x2D\x2D\x56\x4F\x49\x43\x45\x4D\x41\x49\x4C\x20\x42\x4C\x4F\x43\x4B\x2D\x2D","\x6D\x61\x69\x6C\x62\x6F\x78","\x53\x74\x61\x72\x74\x69\x6E\x67\x20\x76\x6F\x69\x63\x65\x6D\x61\x69\x6C\x20\x72\x65\x63\x6F\x72\x64\x69\x6E\x67\x2E\x2E\x2E","\x56\x4F\x49\x43\x45\x4D\x41\x49\x4C","\x63\x61\x6C\x6C\x62\x61\x63\x6B","\x2D\x2D\x43\x41\x4C\x4C\x42\x41\x43\x4B\x20\x42\x4C\x4F\x43\x4B\x2D\x2D","\x50\x4F\x53\x54","\x68\x74\x74\x70\x3A\x2F\x2F\x6C\x6F\x63\x61\x6C\x68\x6F\x73\x74\x2F\x61\x70\x69\x2F\x72\x65\x73\x74\x2F\x63\x6F\x6E\x74\x61\x63\x74\x2F\x69\x6E\x73\x65\x72\x74","\x6C\x69\x73\x74\x5F\x69\x64","\x73\x70\x6C\x69\x74","\x74\x72\x69\x6D","\x59\x59\x59\x59\x2D\x4D\x4D\x2D\x44\x44\x20\x48\x48\x3A\x6D\x6D\x3A\x73\x73","\x64\x65\x6C\x61\x79","\x6D\x69\x6E\x75\x74\x65\x73","\x61\x64\x64","\x54\x44\x20\x66\x69\x6E\x61\x6C\x6C\x79","\x66\x69\x6E\x61\x6C\x6C\x79","\x54\x44\x20\x70\x72\x6F\x62\x6C\x65\x6D\x20\x77\x69\x74\x68\x20\x72\x65\x71\x75\x65\x73\x74\x3A","\x6D\x65\x73\x73\x61\x67\x65","\x63\x61\x74\x63\x68","\x73\x74\x61\x74\x75\x73","\x72\x65\x73\x70\x6F\x6E\x73\x65","\x65\x72\x72\x6F\x72\x73","\x52\x4D\x49","\x6D\x61\x74\x68","\x2D\x2D\x4D\x41\x54\x48\x20\x42\x4C\x4F\x43\x4B\x2D\x2D","\x43\x61\x6C\x63\x75\x6C\x61\x74\x69\x6E\x67\x20\x65\x78\x70\x72\x65\x73\x73\x69\x6F\x6E\x2E\x2E\x2E","\x6F\x70\x65\x72\x61\x74\x69\x6F\x6E","\x53\x61\x76\x69\x6E\x67\x20\x72\x65\x73\x75\x6C\x74\x20\x69\x6E\x20\x76\x61\x72\x69\x61\x62\x6C\x65\x2E\x2E\x2E","\x76\x61\x72\x69\x61\x62\x6C\x65\x5F\x69\x64","\x69\x73\x41\x72\x72\x61\x79","\x5B","\x5D","\x22","\x66\x6F\x72","\x66\x6F\x72\x45\x61\x63\x68","\x45\x72\x72\x6F\x72\x20\x65\x76\x61\x6C\x75\x61\x74\x69\x6E\x67\x20\x65\x78\x70\x72\x65\x73\x73\x69\x6F\x6E","\x70\x6C\x61\x79\x62\x61\x63\x6B","\x2D\x2D\x50\x4C\x41\x59\x42\x41\x43\x4B\x20\x42\x4C\x4F\x43\x4B\x2D\x2D","\x45\x78\x65\x63\x75\x74\x69\x6E\x67\x20\x70\x6C\x61\x79\x62\x61\x63\x6B\x2E\x2E\x2E","\x50\x4C\x41\x59\x42\x41\x43\x4B","\x6D\x65\x6E\x75","\x2D\x2D\x4D\x45\x4E\x55\x20\x42\x4C\x4F\x43\x4B\x2D\x2D","\x54\x68\x65\x72\x65\x20\x61\x72\x65\x20","\x72\x65\x74\x72\x79","\x20\x72\x65\x74\x72\x69\x65\x73","\x41\x6E\x6E\x6F\x75\x6E\x63\x69\x6E\x67\x20\x61\x6E\x64\x20\x77\x61\x69\x74\x69\x6E\x67\x20\x66\x6F\x72\x20\x75\x73\x65\x72\x20\x65\x6E\x74\x72\x79\x2E\x2E\x2E","\x47\x45\x54\x20\x44\x41\x54\x41\x20\x25\x73\x20\x25\x73\x20\x25\x73\x0A","\x64\x69\x67\x69\x74","\x72\x65\x73\x75\x6C\x74","\x28\x74\x69\x6D\x65\x6F\x75\x74\x29","\x72\x65\x70\x6C\x61\x63\x65","\x6C\x65\x6E\x67\x74\x68","\x2D\x31","\x64\x61\x74\x61","\x53\x61\x76\x69\x6E\x67\x20\x75\x73\x65\x72\x20\x65\x6E\x74\x72\x79\x20\x69\x6E\x20\x61\x20\x76\x61\x72\x69\x61\x62\x6C\x65\x2E\x2E\x2E","\x4D\x65\x6E\x75\x20\x74\x69\x6D\x65\x6F\x75\x74\x21","\x30","\x74","\x52\x75\x6E\x20\x6F\x75\x74\x20\x6F\x66\x20\x72\x65\x74\x72\x69\x65\x73\x21","\x2D","\x73\x61\x79\x6E\x75\x6D\x62\x65\x72","\x2D\x2D\x53\x41\x59\x4E\x55\x4D\x42\x45\x52\x20\x42\x4C\x4F\x43\x4B\x2D\x2D","\x53\x61\x79\x69\x6E\x67\x20\x6E\x75\x6D\x62\x65\x72\x2E\x2E\x2E","\x53\x41\x59\x20\x4E\x55\x4D\x42\x45\x52\x20\x25\x73\x20\x22\x25\x73\x22\x0A","\x6E\x75\x6D\x62\x65\x72","\x65\x73\x63\x61\x70\x65\x5F\x64\x69\x67\x69\x74\x73","\x73\x61\x79\x70\x68\x6F\x6E\x65\x74\x69\x63","\x2D\x2D\x53\x41\x59\x50\x48\x4F\x4E\x45\x54\x49\x43\x20\x42\x4C\x4F\x43\x4B\x2D\x2D","\x53\x61\x79\x69\x6E\x67\x20\x70\x68\x6F\x6E\x65\x74\x69\x63\x2E\x2E\x2E","\x53\x41\x59\x20\x50\x48\x4F\x4E\x45\x54\x49\x43\x20\x25\x73\x20\x22\x25\x73\x22\x0A","\x74\x65\x78\x74","\x74\x74\x73","\x2D\x2D\x47\x4F\x4F\x47\x4C\x45\x5F\x54\x54\x53\x20\x42\x4C\x4F\x43\x4B\x2D\x2D","\x47\x6F\x6F\x67\x6C\x65\x20\x54\x54\x53\x20\x65\x72\x72\x6F\x72\x3A\x20","\x43\x61\x6C\x6C\x69\x6E\x67\x20\x47\x6F\x6F\x67\x6C\x65\x20\x54\x54\x53\x20\x41\x50\x49\x2E\x2E\x2E","\x67\x6F\x6F\x67\x6C\x65\x5F\x74\x74\x73\x5F\x6C\x61\x6E\x67\x75\x61\x67\x65","\x5F\x73\x61\x76\x65\x4E\x61\x6D\x65","\x5F\x73\x61\x76\x65\x50\x61\x74\x68","\x2F\x74\x6D\x70\x2F\x25\x73\x2E\x6D\x70\x33","\x63\x72\x65\x61\x74\x65\x57\x72\x69\x74\x65\x53\x74\x72\x65\x61\x6D","\x65\x6E\x64","\x47\x6F\x74\x20\x61\x75\x64\x69\x6F\x20\x62\x75\x66\x66\x65\x72\x21","\x41\x75\x64\x69\x6F\x20\x73\x61\x76\x65\x64\x20\x74\x6F\x20","\x5F\x63\x6F\x6E\x76\x65\x72\x74\x65\x64\x50\x61\x74\x68","\x2F\x74\x6D\x70\x2F\x25\x73\x2E\x77\x61\x76","\x53\x65\x74\x74\x69\x6E\x67\x20\x6F\x72\x69\x67\x69\x6E\x61\x6C\x20\x61\x75\x64\x69\x6F\x20\x66\x69\x6C\x65\x20\x61\x63\x63\x65\x73\x73\x20\x70\x65\x72\x6D\x69\x73\x73\x69\x6F\x6E\x73\x21","\x30\x37\x37\x37","\x63\x68\x6D\x6F\x64\x53\x79\x6E\x63","\x43\x6F\x6E\x76\x65\x72\x74\x69\x6E\x67\x20\x6F\x72\x69\x67\x69\x6E\x61\x6C\x20\x61\x75\x64\x69\x6F\x20\x66\x69\x6C\x65\x20\x61\x6E\x64\x20\x73\x61\x76\x69\x6E\x67\x20\x69\x6E\x20","\x77\x61\x76","\x74\x72\x61\x6E\x73\x63\x6F\x64\x65","\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x54\x54\x53\x20\x61\x75\x64\x69\x6F\x20\x43\x6F\x6E\x76\x65\x72\x73\x69\x6F\x6E\x20\x45\x72\x72\x6F\x72\x3A\x20","\x54\x54\x53\x20\x61\x75\x64\x69\x6F\x20\x63\x6F\x6E\x76\x65\x72\x73\x69\x6F\x6E\x20\x63\x6F\x6D\x70\x6C\x65\x74\x65\x64","\x53\x65\x74\x74\x69\x6E\x67\x20\x63\x6F\x6E\x76\x65\x72\x74\x65\x64\x20\x61\x75\x64\x69\x6F\x20\x66\x69\x6C\x65\x20\x61\x63\x63\x65\x73\x73\x20\x70\x65\x72\x6D\x69\x73\x73\x69\x6F\x6E\x73\x21","\x43\x61\x6C\x6C\x69\x6E\x67\x20\x61\x73\x74\x65\x72\x69\x73\x6B\x20\x70\x6C\x61\x79\x62\x61\x63\x6B\x2E\x2E\x2E","\x2F\x74\x6D\x70\x2F\x25\x73","\x41\x73\x74\x65\x72\x69\x73\x6B\x20\x70\x6C\x61\x79\x62\x61\x63\x6B\x20\x65\x72\x72\x6F\x72\x3A\x20","\x44\x65\x6C\x65\x74\x69\x6E\x67\x20\x74\x65\x6D\x70\x20\x61\x75\x64\x69\x6F\x20\x66\x69\x6C\x65\x73\x2E\x2E\x2E","\x43\x61\x6C\x6C\x69\x6E\x67\x20\x61\x73\x74\x65\x72\x69\x73\x6B\x20\x73\x74\x72\x65\x61\x6D\x20\x66\x69\x6C\x65\x2E\x2E\x2E","\x53\x54\x52\x45\x41\x4D\x20\x46\x49\x4C\x45\x20\x25\x73\x20\x22\x25\x73\x22\x0A","\x69\x6E\x74\x4B\x65\x79","\x41\x73\x74\x65\x72\x69\x73\x6B\x20\x73\x74\x72\x65\x61\x6D\x20\x66\x69\x6C\x65\x20\x65\x72\x72\x6F\x72\x3A\x20","\x73\x74\x72\x65\x61\x6D","\x77\x72\x69\x74\x65","\x54\x54\x53\x20\x72\x65\x71\x75\x65\x73\x74\x20\x65\x72\x72\x6F\x72\x3A","\x67\x65\x74","\x54\x65\x6D\x70\x20\x61\x75\x64\x69\x6F\x20\x66\x69\x6C\x65\x20","\x20\x64\x65\x6C\x65\x74\x65\x64\x21","\x75\x6E\x6C\x69\x6E\x6B","\x70\x72\x6F\x6D\x69\x73\x69\x66\x79","\x69\x73\x70\x65\x65\x63\x68\x74\x74\x73","\x2D\x2D\x49\x53\x50\x45\x45\x43\x48\x5F\x54\x54\x53\x20\x42\x4C\x4F\x43\x4B\x2D\x2D","\x68\x74\x74\x70\x73\x3A\x2F\x2F\x61\x70\x69\x2E\x69\x73\x70\x65\x65\x63\x68\x2E\x6F\x72\x67\x2F\x61\x70\x69\x2F\x72\x65\x73\x74\x3F\x61\x70\x69\x6B\x65\x79\x3D\x25\x73\x26\x61\x63\x74\x69\x6F\x6E\x3D\x63\x6F\x6E\x76\x65\x72\x74\x26\x74\x65\x78\x74\x3D\x25\x73\x26\x76\x6F\x69\x63\x65\x3D\x25\x73\x26\x73\x70\x65\x65\x64\x3D\x25\x73\x26\x66\x6F\x72\x6D\x61\x74\x3D\x6D\x70\x33","\x6B\x65\x79","\x69\x73\x70\x65\x65\x63\x68\x5F\x74\x74\x73\x5F\x6C\x61\x6E\x67\x75\x61\x67\x65","\x73\x70\x65\x65\x64","\x54\x68\x65\x20\x69\x73\x70\x65\x65\x63\x68\x20\x74\x74\x73\x20\x75\x72\x6C\x20\x69\x73\x3A\x20","\x43\x61\x6C\x6C\x69\x6E\x67\x20\x69\x53\x70\x65\x65\x63\x68\x20\x54\x54\x53\x20\x41\x50\x49\x2E\x2E\x2E","\x69\x53\x50\x65\x65\x63\x68\x20\x54\x54\x53\x20\x65\x72\x72\x6F\x72\x3A\x20","\x67\x65\x74\x64\x69\x67\x69\x74\x73","\x2D\x2D\x47\x45\x54\x44\x49\x47\x49\x54\x53\x20\x42\x4C\x4F\x43\x4B\x2D\x2D","\x6D\x61\x78\x64\x69\x67\x69\x74","\x6D\x69\x6E\x64\x69\x67\x69\x74","\x54\x68\x65\x72\x65\x20\x69\x73\x20\x61\x20\x72\x65\x73\x75\x6C\x74\x2C\x20\x69\x73\x20\x6F\x76\x65\x72\x20\x74\x68\x65\x20\x6D\x69\x6E\x69\x6D\x75\x6D\x20\x6C\x65\x6E\x67\x74\x68\x20\x61\x6E\x64\x20\x6E\x6F\x74\x20\x64\x75\x65\x20\x74\x6F\x20\x61\x6E\x20\x68\x61\x6E\x67\x75\x70\x21","\x78","\x56\x61\x72\x69\x61\x62\x6C\x65\x20\x6E\x6F\x74\x20\x66\x6F\x75\x6E\x64\x2C\x20\x75\x6E\x61\x62\x6C\x65\x20\x74\x6F\x20\x73\x61\x76\x65\x20\x74\x68\x65\x20\x72\x65\x73\x75\x6C\x74\x21","\x69","\x43\x68\x61\x6E\x6E\x65\x6C\x20\x68\x61\x6E\x67\x75\x70\x21","\x4E\x6F\x20\x65\x6E\x74\x72\x79\x20\x6F\x72\x20\x6E\x6F\x74\x20\x6C\x6F\x6E\x67\x20\x65\x6E\x6F\x75\x67\x68\x21","\x67\x65\x74\x73\x65\x63\x72\x65\x74\x64\x69\x67\x69\x74\x73","\x2D\x2D\x47\x45\x54\x53\x45\x43\x52\x45\x54\x44\x49\x47\x49\x54\x53\x20\x42\x4C\x4F\x43\x4B\x2D\x2D","\x68\x69\x64\x64\x65\x6E\x64\x69\x67\x69\x74\x73\x6E\x75\x6D","\x68\x69\x64\x64\x65\x6E\x64\x69\x67\x69\x74\x73\x70\x6F\x73","\x66\x69\x72\x73\x74","\x2A","\x72\x65\x63\x6F\x72\x64","\x2D\x2D\x52\x45\x43\x4F\x52\x44\x20\x42\x4C\x4F\x43\x4B\x2D\x2D","\x53\x74\x61\x72\x74\x69\x6E\x67\x20\x63\x61\x6C\x6C\x20\x72\x65\x63\x6F\x72\x64\x69\x6E\x67\x2E\x2E\x2E","\x52\x45\x43\x4F\x52\x44\x20\x46\x49\x4C\x45\x20\x25\x73\x20\x25\x73\x20\x22\x25\x73\x22\x20\x25\x73\x20\x25\x73\x20\x25\x73\x20\x25\x73\x0A","\x72\x6F\x6F\x74","\x73\x65\x72\x76\x65\x72\x2F\x66\x69\x6C\x65\x73\x2F\x72\x65\x63\x6F\x72\x64\x69\x6E\x67\x73","\x5F","\x72\x65\x63\x6F\x72\x64\x69\x6E\x67\x46\x6F\x72\x6D\x61\x74","\x63\x6F\x64\x65","\x45\x72\x72\x6F\x72\x20\x73\x61\x76\x69\x6E\x67\x20","\x3A","\x20\x62\x6C\x6F\x63\x6B\x20\x6C\x6F\x67","\x63\x61\x6C\x6C\x65\x72\x69\x64\x6E\x61\x6D\x65","\x63\x6F\x6E\x74\x65\x78\x74","\x65\x78\x74\x65\x6E\x73\x69\x6F\x6E","\x70\x72\x69\x6F\x72\x69\x74\x79","\x61\x63\x63\x6F\x75\x6E\x74\x63\x6F\x64\x65","\x64\x6E\x69\x64","\x66\x69\x6C\x65","\x2E\x77\x61\x76","\x63\x72\x65\x61\x74\x65","\x53\x61\x76\x69\x6E\x67\x20\x72\x65\x63\x6F\x72\x64\x69\x6E\x67\x20\x66\x69\x6C\x65\x6E\x61\x6D\x65\x20\x69\x6E\x20\x52\x45\x43\x4F\x52\x44\x49\x4E\x47\x5F\x53\x41\x56\x45\x4E\x41\x4D\x45\x20\x76\x61\x72\x69\x61\x62\x6C\x65\x2E\x2E\x2E","\x53\x45\x54\x20\x56\x41\x52\x49\x41\x42\x4C\x45\x20\x25\x73\x20\x25\x73\x0A","\x52\x45\x43\x4F\x52\x44\x49\x4E\x47\x5F\x53\x41\x56\x45\x4E\x41\x4D\x45","\x67\x6F\x74\x6F\x69\x66\x74\x69\x6D\x65","\x2D\x2D\x47\x4F\x54\x4F\x49\x46\x54\x49\x4D\x45\x20\x42\x4C\x4F\x43\x4B\x2D\x2D","\x66\x61\x6C\x73\x65","\x69\x6E\x74\x65\x72\x76\x61\x6C\x73","\x69\x6E\x74\x65\x72\x76\x61\x6C\x5F\x69\x64","\x49\x6E\x74\x65\x72\x76\x61\x6C\x49\x64","\x69\x64","\x66\x69\x6C\x74\x65\x72","\x49\x73\x20\x61\x20\x67\x72\x6F\x75\x70\x20\x6F\x66\x20\x69\x6E\x74\x65\x72\x76\x61\x6C\x73\x21","\x20\x69\x6E\x74\x65\x72\x76\x61\x6C\x73\x21","\x43\x68\x65\x63\x6B\x69\x6E\x67\x20\x69\x66\x20\x61\x74\x20\x6C\x65\x61\x73\x74\x20\x6F\x6E\x65\x20\x69\x6E\x74\x65\x72\x76\x61\x6C\x20\x69\x73\x20\x76\x61\x6C\x69\x64\x2E\x2E\x2E","\x69\x6E\x74\x65\x72\x76\x61\x6C","\x49\x6E\x74\x65\x72\x76\x61\x6C\x20","\x20\x69\x73\x20\x76\x61\x6C\x69\x64\x21","\x74\x72\x75\x65","\x54\x68\x65\x72\x65\x20\x61\x72\x65\x20\x6E\x6F\x20\x73\x75\x62\x20\x69\x6E\x74\x65\x72\x76\x61\x6C\x73\x2C\x20\x73\x6F\x20\x69\x74\x20\x77\x69\x6C\x6C\x20\x62\x65\x20\x61\x6C\x77\x61\x79\x73\x20\x74\x72\x75\x65\x21","\x49\x73\x20\x61\x20\x73\x69\x6E\x67\x6C\x65\x20\x69\x6E\x74\x65\x72\x76\x61\x6C\x21","\x54\x68\x65\x20\x69\x6E\x74\x65\x72\x76\x61\x6C\x20\x69\x73\x20\x76\x61\x6C\x69\x64\x21","\x54\x68\x65\x20\x66\x69\x6E\x61\x6C\x20\x72\x65\x73\x75\x6C\x74\x20\x66\x6F\x72\x20\x74\x68\x65\x20\x69\x6E\x74\x65\x72\x76\x61\x6C\x73\x20\x69\x73\x20\x22","\x22\x21","\x76\x73\x77\x69\x74\x63\x68","\x2D\x2D\x56\x41\x52\x49\x41\x42\x4C\x45\x5F\x53\x57\x49\x54\x43\x48\x20\x42\x4C\x4F\x43\x4B\x2D\x2D","\x47\x65\x74\x74\x69\x6E\x67\x20\x74\x68\x65\x20\x76\x61\x72\x69\x61\x62\x6C\x65\x20\x76\x61\x6C\x75\x65\x20\x61\x6E\x64\x20\x73\x65\x61\x72\x63\x68\x69\x6E\x67\x20\x74\x68\x65\x20\x72\x69\x67\x68\x74\x20\x65\x78\x69\x74\x2E\x2E\x2E","\x67\x6F\x61\x6C","\x67\x6F\x61\x6C\x6E\x61\x6D\x65","\x31","\x73\x65\x6E\x64\x6D\x61\x69\x6C","\x2D\x2D\x73\x65\x6E\x64\x4D\x61\x69\x6C\x20\x42\x4C\x4F\x43\x4B\x2D\x2D","\x61\x63\x63\x6F\x75\x6E\x74\x5F\x69\x64","\x6D\x61\x69\x6C\x53\x65\x72\x76\x65\x72\x4F\x75\x74","\x75\x73\x65\x72\x6E\x61\x6D\x65","\x74\x6F","\x63\x63","\x73\x75\x62\x6A\x65\x63\x74","\x63\x72\x65\x61\x74\x65\x4D\x61\x69\x6C","\x74\x65\x6D\x70\x6C\x61\x74\x65\x5F\x69\x64","\x74\x65\x6D\x70\x6C\x61\x74\x65\x73","\x66\x72\x6F\x6D","\x68\x74\x6D\x6C","\x72\x65\x6E\x64\x65\x72","\x45\x72\x72\x6F\x72\x20\x66\x69\x6E\x64\x69\x6E\x67\x20\x74\x65\x6D\x70\x6C\x61\x74\x65","\x45\x72\x72\x6F\x72\x20\x66\x69\x6E\x64\x69\x6E\x67\x20\x6D\x61\x69\x6C\x41\x63\x63\x6F\x75\x6E\x74\x20\x61\x64\x64\x72\x65\x73\x73","\x45\x72\x72\x6F\x72\x20\x66\x69\x6E\x64\x69\x6E\x67\x20\x67\x65\x6E\x65\x72\x61\x6C\x20\x53\x4D\x54\x50\x20\x61\x64\x64\x72\x65\x73\x73","\x54\x68\x65\x20\x63\x6F\x6E\x66\x69\x67\x75\x72\x65\x64\x20\x61\x63\x63\x6F\x75\x6E\x74\x20\x69\x73\x20\x6E\x6F\x74\x20\x76\x61\x6C\x69\x64","\x73\x65\x6E\x64\x73\x6D\x73","\x2D\x2D\x73\x65\x6E\x64\x53\x4D\x53\x20\x42\x4C\x4F\x43\x4B\x2D\x2D","\x73\x6D\x73\x5F\x74\x65\x78\x74","\x63\x72\x65\x61\x74\x65\x53\x6D\x73","\x73\x6D\x73\x41\x63\x63\x6F\x75\x6E\x74\x73","\x74\x79\x70\x65","\x74\x77\x69\x6C\x69\x6F","\x74\x65\x73\x74","\x2B","\x45\x72\x72\x6F\x72\x20\x66\x69\x6E\x64\x69\x6E\x67\x20\x53\x4D\x53\x20\x61\x63\x63\x6F\x75\x6E\x74","\x73\x79\x73\x74\x65\x6D","\x2D\x2D\x53\x59\x53\x54\x45\x4D\x20\x42\x4C\x4F\x43\x4B\x2D\x2D","\x63\x6F\x6D\x6D\x61\x6E\x64","\x45\x78\x65\x63\x75\x74\x69\x6E\x67\x20\x74\x68\x65\x20\x73\x79\x73\x74\x65\x6D\x20\x63\x6F\x6D\x6D\x61\x6E\x64\x2E\x2E\x2E","\x50\x72\x6F\x67\x72\x61\x6D\x20\x6F\x75\x74\x70\x75\x74\x3A","\x53\x61\x76\x69\x6E\x67\x20\x74\x68\x65\x20\x6F\x75\x74\x70\x75\x74\x20\x69\x6E\x20\x61\x20\x76\x61\x72\x69\x61\x62\x6C\x65\x2E\x2E\x2E","\x2D\x2D\x41\x47\x49\x20\x42\x4C\x4F\x43\x4B\x2D\x2D","\x45\x78\x65\x63\x75\x74\x69\x6E\x67\x20\x74\x68\x65\x20\x41\x47\x49\x20\x63\x6F\x6D\x6D\x61\x6E\x64\x2E\x2E\x2E","\x41\x47\x49","\x61\x72\x67\x73","\x73\x75\x62\x70\x72\x6F\x6A\x65\x63\x74","\x2D\x2D\x53\x55\x42\x50\x52\x4F\x4A\x45\x43\x54\x20\x42\x4C\x4F\x43\x4B\x2D\x2D","\x70\x72\x6F\x6A\x65\x63\x74\x73","\x70\x72\x6F\x6A\x65\x63\x74\x5F\x69\x64","\x4D\x6F\x76\x69\x6E\x67\x20\x74\x6F\x20\x70\x72\x6F\x6A\x65\x63\x74\x20\x22\x22","\x22\x61\x67\x69\x3A\x2F\x2F\x31\x32\x37\x2E\x30\x2E\x30\x2E\x31\x2F\x73\x71\x75\x61\x72\x65\x2C\x25\x73\x22","\x69\x73\x70\x65\x65\x63\x68\x61\x73\x72","\x2D\x2D\x49\x53\x50\x45\x45\x43\x48\x5F\x41\x53\x52\x20\x42\x4C\x4F\x43\x4B\x2D\x2D","\x75\x74\x74\x65\x72\x61\x6E\x63\x65","\x22\x2D\x31\x22","\x63\x6F\x6E\x66\x69\x64\x65\x6E\x63\x65","\x69\x73\x45\x6D\x70\x74\x79","\x53\x61\x76\x69\x6E\x67\x20\x73\x65\x72\x76\x65\x72\x20\x72\x65\x73\x70\x6F\x6E\x73\x65\x20\x69\x6E\x74\x6F\x20\x76\x61\x72\x69\x61\x62\x6C\x65\x73\x2E\x2E\x2E","\x66\x6F\x72\x4F\x77\x6E","\x45\x72\x72\x6F\x72\x3A\x20\x4E\x6F\x20\x72\x65\x73\x70\x6F\x6E\x73\x65\x20\x66\x72\x6F\x6D\x20\x74\x68\x65\x20\x73\x65\x72\x76\x65\x72\x21","\x41\x53\x52\x5F\x45\x52\x52\x4F\x52","\x22\x4E\x6F\x20\x72\x65\x73\x70\x6F\x6E\x73\x65\x20\x66\x72\x6F\x6D\x20\x74\x68\x65\x20\x73\x65\x72\x76\x65\x72\x21\x22","\x25\x73\x2C\x25\x73\x2C\x2C","\x62\x65\x65\x70","\x42\x45\x45\x50","\x71","\x23","\x52\x45\x43\x4F\x52\x44","\x41\x73\x74\x65\x72\x69\x73\x6B\x20\x72\x65\x63\x6F\x72\x64\x20\x66\x69\x6C\x65\x20\x65\x72\x72\x6F\x72\x3A\x20","\x47\x65\x74\x74\x69\x6E\x67\x20\x41\x53\x52\x20\x75\x72\x6C\x2E\x2E\x2E","\x68\x74\x74\x70\x73\x3A\x2F\x2F\x61\x70\x69\x2E\x69\x73\x70\x65\x65\x63\x68\x2E\x6F\x72\x67\x2F\x61\x70\x69\x2F\x72\x65\x73\x74\x3F\x61\x70\x69\x6B\x65\x79\x3D\x25\x73\x26\x61\x63\x74\x69\x6F\x6E\x3D\x72\x65\x63\x6F\x67\x6E\x69\x7A\x65\x26\x6C\x6F\x63\x61\x6C\x65\x3D\x25\x73","\x69\x73\x70\x65\x65\x63\x68\x5F\x61\x73\x72\x5F\x6C\x61\x6E\x67\x75\x61\x67\x65","\x6D\x6F\x64\x65\x6C","\x26\x6D\x6F\x64\x65\x6C\x3D\x25\x73","\x26\x66\x72\x65\x65\x66\x6F\x72\x6D\x3D\x33","\x52\x65\x61\x64\x69\x6E\x67\x20\x74\x65\x6D\x70\x20\x41\x53\x52\x20\x61\x75\x64\x69\x6F\x20\x66\x69\x6C\x65\x2E\x2E\x2E","\x44\x65\x6C\x65\x74\x69\x6E\x67\x20\x74\x65\x6D\x70\x20\x41\x53\x52\x20\x66\x69\x6C\x65\x2E\x2E\x2E","\x41\x53\x52\x20\x72\x65\x71\x75\x65\x73\x74\x20\x65\x72\x72\x6F\x72\x3A\x20","\x47\x6F\x74\x20\x72\x65\x73\x70\x6F\x6E\x73\x65\x20\x66\x72\x6F\x6D\x20\x74\x68\x65\x20\x41\x53\x52\x20\x73\x65\x72\x76\x65\x72\x2C\x20\x65\x6C\x61\x62\x6F\x72\x61\x74\x69\x6E\x67\x20\x72\x65\x73\x70\x6F\x6E\x73\x65\x2E\x2E\x2E","\x26","\x3D","\x20","\x73\x75\x63\x63\x65\x73\x73","\x47\x6F\x74\x20\x61\x75\x64\x69\x6F\x20\x66\x69\x6C\x65\x20\x66\x72\x6F\x6D\x20\x66\x69\x6C\x65\x73\x79\x73\x74\x65\x6D\x2C\x20\x67\x65\x6E\x65\x72\x61\x74\x69\x6E\x67\x20\x75\x72\x6C\x2E\x2E\x2E","\x62\x61\x73\x65\x36\x34","\x62\x69\x6E\x61\x72\x79","\x26\x63\x6F\x6E\x74\x65\x6E\x74\x2D\x74\x79\x70\x65\x3D\x61\x75\x64\x69\x6F\x2F\x78\x2D\x77\x61\x76\x26\x61\x75\x64\x69\x6F\x3D\x25\x73","\x43\x61\x6C\x6C\x69\x6E\x67\x20\x41\x53\x52\x20\x73\x65\x72\x76\x65\x72\x2E\x2E\x2E","\x72\x65\x61\x64\x46\x69\x6C\x65","\x64\x61\x74\x61\x62\x61\x73\x65","\x2D\x2D\x44\x41\x54\x41\x42\x41\x53\x45\x20\x42\x4C\x4F\x43\x4B\x2D\x2D","\x64\x62\x43\x6F\x6E\x6E\x65\x63\x74\x69\x6F\x6E\x73","\x6F\x64\x62\x63\x5F\x69\x64","\x54\x72\x79\x69\x6E\x67\x20\x74\x6F\x20\x67\x65\x74\x20\x4F\x44\x42\x43\x20\x63\x6F\x6E\x6E\x65\x63\x74\x69\x6F\x6E\x2E\x2E\x2E","\x71\x75\x65\x72\x79","\x64\x73\x6E","\x6F\x70\x65\x6E\x53\x79\x6E\x63","\x71\x75\x65\x72\x79\x53\x79\x6E\x63","\x63\x6C\x6F\x73\x65\x53\x79\x6E\x63","\x45\x52\x52\x4F\x52","\x4D\x45\x53\x53\x41\x47\x45","\x67\x6F\x74\x6F\x63","\x2D\x2D\x47\x4F\x54\x4F\x20\x42\x4C\x4F\x43\x4B\x2D\x2D","\x47\x6F\x69\x6E\x67\x20\x74\x6F\x20\x65\x78\x74\x65\x6E\x73\x69\x6F\x6E\x20","\x20\x2E\x2E\x2E","\x4C\x6F\x63\x61\x6C\x2F\x25\x73\x40\x25\x73","\x67\x6F\x74\x6F\x69\x66","\x2D\x2D\x47\x4F\x54\x4F\x49\x46\x20\x42\x4C\x4F\x43\x4B\x2D\x2D","\x4E\x4F\x4F\x50","\x22\x43\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x3A\x20","\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E","\x45\x76\x61\x6C\x75\x61\x74\x69\x6E\x67\x20\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x2E\x2E\x2E","\x45\x72\x72\x6F\x72\x20\x65\x76\x61\x6C\x75\x61\x74\x69\x6E\x67\x20\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x2C\x20\x67\x6F\x69\x6E\x67\x20\x69\x6E\x74\x6F\x20\x74\x68\x65\x20\x66\x61\x6C\x73\x65\x20\x62\x72\x61\x6E\x63\x68\x2E\x2E\x2E","\x54\x68\x65\x20\x72\x65\x73\x75\x6C\x74\x20\x69\x73\x20","\x68\x61\x6E\x67\x75\x70","\x2D\x2D\x48\x41\x4E\x47\x55\x50\x20\x42\x4C\x4F\x43\x4B\x2D\x2D","\x48\x61\x6E\x67\x69\x6E\x20\x75\x70\x20\x74\x68\x65\x20\x63\x61\x6C\x6C\x2E\x2E\x2E","\x6E\x6F\x6F\x70","\x2D\x2D\x4E\x4F\x4F\x50\x20\x42\x4C\x4F\x43\x4B\x2D\x2D","\x6F\x75\x74\x70\x75\x74","\x4E\x4F\x4F\x50\x20\x76\x61\x6C\x75\x65\x20\x69\x73\x20","\x73\x61\x79\x64\x69\x67\x69\x74\x73","\x2D\x2D\x53\x41\x59\x44\x49\x47\x49\x54\x53\x20\x42\x4C\x4F\x43\x4B\x2D\x2D","\x53\x61\x79\x69\x6E\x67\x20\x64\x69\x67\x69\x74\x73\x2E\x2E\x2E","\x53\x41\x59\x20\x44\x49\x47\x49\x54\x53\x20\x25\x73\x20\x22\x25\x73\x22\x0A","\x64\x69\x67\x69\x74\x73","\x73\x65\x74","\x2D\x2D\x53\x45\x54\x20\x42\x4C\x4F\x43\x4B\x2D\x2D","\x53\x61\x76\x69\x6E\x67\x20\x76\x61\x6C\x75\x65\x20\x69\x6E\x20\x61\x20\x76\x61\x72\x69\x61\x62\x6C\x65\x2E\x2E\x2E","\x76\x61\x72\x69\x61\x62\x6C\x65\x5F\x76\x61\x6C\x75\x65","\x6D\x78\x63\x65\x6C\x6C","\x24","\x66\x6F\x72\x49\x6E","\x72\x65\x64\x75\x63\x65","\x65\x64\x67\x65","\x73\x6F\x75\x72\x63\x65","\x76\x61\x6C\x75\x65","\x69\x6E\x63\x6C\x75\x64\x65\x73","\x24\x2E\x74\x61\x72\x67\x65\x74","\x63\x68\x61\x72\x41\x74","\x7B","\x7D","\x73\x75\x62\x73\x74\x72\x69\x6E\x67","\x6B\x65\x79\x73","\x5C\x24\x26","\x67","\x63\x6C\x6F\x6E\x65","\x54\x65\x78\x74\x20\x61\x66\x74\x65\x72\x20\x76\x61\x72\x69\x61\x62\x6C\x65\x73\x20\x72\x65\x70\x6C\x61\x63\x65\x3A\x20","\x76\x65\x72\x74\x69\x63\x65\x73","\x69\x73\x46\x75\x6E\x63\x74\x69\x6F\x6E","\x4E\x6F\x20\x74\x61\x72\x67\x65\x74\x20\x66\x6F\x75\x6E\x64\x2C\x20\x68\x61\x6E\x67\x75\x70\x21","\x72\x65\x70\x6C\x61\x63\x65\x64","\x4E\x6F\x20\x74\x61\x72\x67\x65\x74\x20\x66\x6F\x75\x6E\x64\x2C\x20\x73\x74\x6F\x70\x70\x69\x6E\x67\x20\x22\x46\x69\x6E\x61\x6C\x6C\x79\x22\x20\x62\x72\x61\x6E\x63\x68\x21","\x2F\x2F\x45\x72\x72\x6F\x72\x3A","\x2F\x2F\x43\x6F\x6E\x74\x65\x78\x74\x20\x63\x6C\x6F\x73\x65","\x2F\x2F\x53\x74\x61\x72\x74\x69\x6E\x67\x20\x22\x46\x69\x6E\x61\x6C\x6C\x79\x22\x20\x62\x72\x61\x6E\x63\x68\x21","\x6C\x61\x75\x6E\x63\x68\x46\x69\x62\x65\x72","\x75\x70\x64\x61\x74\x65","\x2F\x2F\x43\x6F\x6E\x74\x65\x78\x74\x20\x48\x61\x6E\x67\x75\x70","\x76\x61\x72\x69\x61\x62\x6C\x65\x73","\x52\x65\x63\x65\x69\x76\x65\x64\x20\x6E\x65\x77\x20\x63\x61\x6C\x6C\x20\x66\x72\x6F\x6D\x3A\x20","\x61\x67\x69\x5F\x63\x61\x6C\x6C\x65\x72\x69\x64","\x20\x77\x69\x74\x68\x20\x75\x6E\x69\x71\x75\x65\x69\x64\x3A\x20","\x61\x67\x69\x5F\x75\x6E\x69\x71\x75\x65\x69\x64","\x61\x67\x69\x5F\x6E\x65\x74\x77\x6F\x72\x6B","\x61\x67\x69\x5F\x6E\x65\x74\x77\x6F\x72\x6B\x5F\x73\x63\x72\x69\x70\x74","\x61\x67\x69\x5F\x72\x65\x71\x75\x65\x73\x74","\x61\x67\x69\x5F\x63\x68\x61\x6E\x6E\x65\x6C","\x61\x67\x69\x5F\x6C\x61\x6E\x67\x75\x61\x67\x65","\x61\x67\x69\x5F\x74\x79\x70\x65","\x61\x67\x69\x5F\x76\x65\x72\x73\x69\x6F\x6E","\x61\x67\x69\x5F\x63\x61\x6C\x6C\x65\x72\x69\x64\x6E\x61\x6D\x65","\x61\x67\x69\x5F\x63\x61\x6C\x6C\x69\x6E\x67\x70\x72\x65\x73","\x61\x67\x69\x5F\x63\x61\x6C\x6C\x69\x6E\x67\x61\x6E\x69\x32","\x61\x67\x69\x5F\x63\x61\x6C\x6C\x69\x6E\x67\x74\x6F\x6E","\x61\x67\x69\x5F\x63\x61\x6C\x6C\x69\x6E\x67\x74\x6E\x73","\x61\x67\x69\x5F\x64\x6E\x69\x64","\x61\x67\x69\x5F\x72\x64\x6E\x69\x73","\x61\x67\x69\x5F\x63\x6F\x6E\x74\x65\x78\x74","\x61\x67\x69\x5F\x65\x78\x74\x65\x6E\x73\x69\x6F\x6E","\x61\x67\x69\x5F\x70\x72\x69\x6F\x72\x69\x74\x79","\x61\x67\x69\x5F\x65\x6E\x68\x61\x6E\x63\x65\x64","\x61\x67\x69\x5F\x61\x63\x63\x6F\x75\x6E\x74\x63\x6F\x64\x65","\x61\x67\x69\x5F\x74\x68\x72\x65\x61\x64\x69\x64","\x61\x67\x69\x5F\x61\x72\x67\x5F\x31","\x45\x72\x72\x6F\x72\x3A","\x70\x72\x6F\x64\x75\x63\x74\x69\x6F\x6E","\x6D\x78\x67\x72\x61\x70\x68\x6D\x6F\x64\x65\x6C","\x4E\x6F\x20\x72\x6F\x6F\x74\x20\x69\x6E\x20\x70\x72\x6F\x6A\x65\x63\x74\x21","\x70\x61\x72\x73\x65\x53\x74\x72\x69\x6E\x67","\x4E\x6F\x20\x70\x72\x6F\x6A\x65\x63\x74\x20\x70\x75\x62\x6C\x69\x73\x68\x65\x64\x21","\x4E\x6F\x20\x70\x72\x6F\x6A\x65\x63\x74\x20\x66\x6F\x75\x6E\x64\x21","\x66\x69\x6E\x64\x4F\x6E\x65","\x4E\x6F\x20\x70\x72\x6F\x6A\x65\x63\x74\x20\x61\x72\x67\x75\x6D\x65\x6E\x74\x21","\x74\x5F\x66\x72\x6F\x6D","\x48\x48\x3A\x6D\x6D","\x74\x5F\x74\x6F","\x77\x64\x5F\x66\x72\x6F\x6D","\x77\x64\x5F\x74\x6F","\x6D\x64\x5F\x66\x72\x6F\x6D","\x6D\x64\x5F\x74\x6F","\x6D\x5F\x66\x72\x6F\x6D","\x6D\x5F\x74\x6F","\x45","\x44","\x4D","\x4E\x6F\x77\x3A\x20\x48\x6F\x75\x72\x3A\x20","\x2C\x20\x44\x61\x79\x3A\x20","\x2C\x20\x4D\x6F\x6E\x74\x68\x44\x61\x79\x3A\x20","\x2C\x20\x4D\x6F\x6E\x74\x68\x3A\x20","\x49\x6E\x74\x65\x72\x76\x61\x6C\x3A","\x20\x48\x6F\x75\x72\x73\x3A","\x20\x2D\x20","\x20\x77\x65\x65\x6B\x64\x61\x79\x3A","\x20\x6D\x6F\x6E\x74\x68\x64\x61\x79\x3A","\x20\x6D\x6F\x6E\x74\x68\x3A","\x70\x75\x73\x68","\x69\x73\x42\x65\x74\x77\x65\x65\x6E","\x76\x61\x6C\x69\x64\x20\x77\x65\x65\x6B\x64\x61\x79\x73","\x69\x6E\x64\x65\x78\x4F\x66","\x76\x61\x6C\x69\x64\x20\x6D\x6F\x6E\x74\x68\x73\x64\x61\x79\x73","\x76\x61\x6C\x69\x64\x20\x6D\x6F\x6E\x74\x68\x73","\x54\x69\x6D\x65\x20\x69\x73\x20","\x2C\x20\x57\x65\x65\x6B\x44\x61\x79\x20\x69\x73\x20","\x2C\x20\x4D\x6F\x6E\x74\x68\x44\x61\x79\x20\x69\x73\x20","\x2C\x20\x4D\x6F\x6E\x74\x68\x20\x69\x73\x20","\x53\x65\x74\x74\x69\x6E\x67\x20\x76\x61\x72\x69\x61\x62\x6C\x65\x2E\x2E\x2E","\x53\x65\x6E\x64\x69\x6E\x67\x20\x73\x65\x74\x20\x76\x61\x72\x69\x61\x62\x6C\x65\x2C\x76\x61\x72\x69\x61\x62\x6C\x65\x20\x69\x73\x20","\x2C\x20\x76\x61\x6C\x75\x65\x20\x69\x73\x20","\x70\x6C\x61\x63\x65\x68\x6F\x6C\x64\x65\x72","\x5D\x5B","\x5F\x52\x4F\x57\x53\x5F\x43\x4F\x55\x4E\x54","\x28","\x6C\x61\x73\x74\x49\x6E\x64\x65\x78\x4F\x66","\x29","\x67\x65\x74\x56\x61\x72\x69\x61\x62\x6C\x65","\x73\x6F\x75\x6E\x64\x73","\x25\x73\x2F\x25\x73","\x73\x6F\x75\x6E\x64\x50\x61\x74\x68","\x2F\x76\x61\x72\x2F\x6F\x70\x74\x2F\x6D\x6F\x74\x69\x6F\x6E\x2F\x73\x65\x72\x76\x65\x72\x2F\x66\x69\x6C\x65\x73\x2F\x73\x6F\x75\x6E\x64\x73\x2F\x63\x6F\x6E\x76\x65\x72\x74\x65\x64","\x73\x61\x76\x65\x5F\x6E\x61\x6D\x65","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x79\x6E\x63\x68","\x66\x6F\x72\x63\x65\x53\x79\x6E\x63\x68","\x6D\x65\x72\x67\x65","\x75\x6E\x73\x68\x69\x66\x74","\x61\x67\x69\x5F\x70\x6F\x72\x74","\x46\x61\x69\x6C\x65\x64\x20\x69\x6E\x69\x74\x69\x61\x6C\x69\x7A\x69\x6E\x67\x20\x41\x47\x49\x20\x73\x65\x72\x76\x69\x63\x65","\x6C\x69\x73\x74\x65\x6E","\x63\x72\x65\x61\x74\x65\x53\x65\x72\x76\x65\x72","\x63\x6F\x6C\x6C\x65\x63\x74\x69\x6F\x6E","\x64\x6F\x63","\x75\x70\x64\x61\x74\x65\x43\x6F\x6C\x6C\x65\x63\x74\x69\x6F\x6E","\x72\x65\x70\x6C\x61\x63\x65\x43\x6F\x6C\x6C\x65\x63\x74\x69\x6F\x6E","\x72\x65\x6D\x6F\x76\x65","\x72\x65\x6D\x6F\x76\x65\x46\x72\x6F\x6D\x43\x6F\x6C\x6C\x65\x63\x74\x69\x6F\x6E","\x61\x6C\x6C"];_0x85f3[0];var _=require(_0x85f3[1]);var agi=require(_0x85f3[2]);var util=require(_0x85f3[3]);var moment=require(_0x85f3[4]);var xml=require(_0x85f3[5]);var wait=require(_0x85f3[6]);var sr=require(_0x85f3[7]);var path=require(_0x85f3[8]);var config=require(_0x85f3[9]);var sh=require(_0x85f3[10]);var Promise=require(_0x85f3[11]);var rp=require(_0x85f3[12]);const googleTTS=require(_0x85f3[13]);const fs=require(_0x85f3[14]);const sox=require(_0x85f3[15]);const request=require(_0x85f3[16]);const base64=require(_0x85f3[17]);var db=require(_0x85f3[18])();var SquareProject=require(_0x85f3[20])[_0x85f3[19]];var Variable=require(_0x85f3[20])[_0x85f3[21]];var SquareOdbc=require(_0x85f3[20])[_0x85f3[22]];var Setting=require(_0x85f3[20])[_0x85f3[23]];var User=require(_0x85f3[20])[_0x85f3[24]];var VoiceQueue=require(_0x85f3[20])[_0x85f3[25]];var Interval=require(_0x85f3[20])[_0x85f3[26]];var Sound=require(_0x85f3[20])[_0x85f3[27]];var SquareRecording=require(_0x85f3[20])[_0x85f3[28]];var SmsAccount=require(_0x85f3[20])[_0x85f3[29]];var MailServerOut=require(_0x85f3[20])[_0x85f3[30]];var Mustache=require(_0x85f3[31]);var Template=require(_0x85f3[20])[_0x85f3[32]];var collections={};var weekDaysCollection={mon:1,tue:2,wed:3,thu:4,fri:5,sat:6,sun:7};var monthsCollection={jan:1,feb:2,mar:3,apr:4,may:5,jun:6,jul:7,aug:8,sep:9,oct:10,nov:11,dec:12};var methods={};process[_0x85f3[34]](_0x85f3[35],function(_0x3badx25){console[_0x85f3[39]](util[_0x85f3[38]](_0x85f3[36],_0x3badx25,process[_0x85f3[37]]))})[_0x85f3[34]](_0x85f3[33],function(_0x3badx24){console[_0x85f3[33]](_0x3badx24)});console[_0x85f3[39]](util[_0x85f3[38]](_0x85f3[40],process[_0x85f3[37]]));methods[_0x85f3[41]]= function(_0x3badx26,_0x3badx27,_0x3badx28){console[_0x85f3[39]](_0x85f3[42]);console[_0x85f3[39]](_0x85f3[43]);_0x3badx26[_0x85f3[45]](_0x85f3[44],function(_0x3badx24,_0x3badx29){_0x3badx28(_0x3badx24,_0x3badx29)})};methods[_0x85f3[46]]= function(_0x3badx26,_0x3badx27,_0x3badx28){console[_0x85f3[39]](_0x85f3[47]);console[_0x85f3[39]](_0x85f3[48]+ _0x3badx27[_0x85f3[49]]+ _0x85f3[50]);_0x3badx26[_0x85f3[52]](_0x3badx27[_0x85f3[49]],_0x3badx27[_0x85f3[51]],function(_0x3badx24,_0x3badx29){if(_0x3badx28){_0x3badx28(_0x3badx24,_0x3badx29)}})};methods[_0x85f3[53]]= function(_0x3badx26,_0x3badx27,_0x3badx28){console[_0x85f3[39]](_0x85f3[54]);if(!collections[_0x85f3[55]]){getUsers(false)};var _0x3badx2a=_[_0x85f3[57]](collections[_0x85f3[55]],{id:parseInt(_0x3badx27[_0x85f3[56]])});console[_0x85f3[39]](_0x85f3[58]+ util[_0x85f3[38]](_0x85f3[59],_0x3badx2a[_0x85f3[60]])+ _0x85f3[61]);var _0x3badx2b=[util[_0x85f3[38]](_0x85f3[59],_0x3badx2a[_0x85f3[60]]),_0x3badx27[_0x85f3[62]],_0x3badx27[_0x85f3[63]],_0x3badx27[_0x85f3[64]]];_0x3badx26[_0x85f3[52]](_0x85f3[65],_0x3badx2b[_0x85f3[67]](_0x85f3[66]),function(_0x3badx24,_0x3badx29){_0x3badx28(_0x3badx24,_0x3badx29)})};methods[_0x85f3[68]]= function(_0x3badx26,_0x3badx27,_0x3badx28){console[_0x85f3[39]](_0x85f3[69]);if(_0x3badx27[_0x85f3[41]]=== _0x85f3[70]){_0x3badx26[_0x85f3[45]](_0x85f3[44],function(_0x3badx24,_0x3badx29){_0x3badx28(_0x3badx24,_0x3badx29)})}else {_0x3badx28(null,{code:200,result:1})}};methods[_0x85f3[71]]= function(_0x3badx26,_0x3badx27,_0x3badx28){console[_0x85f3[39]](_0x85f3[72]);console[_0x85f3[39]](_0x85f3[58]+ util[_0x85f3[38]](_0x85f3[59],_0x3badx27[_0x85f3[73]])+ _0x85f3[61]);var _0x3badx2b=[util[_0x85f3[38]](_0x85f3[74],_0x3badx27[_0x85f3[73]],_0x3badx27[_0x85f3[75]]),_0x3badx27[_0x85f3[62]],_0x3badx27[_0x85f3[63]],_0x3badx27[_0x85f3[64]]];_0x3badx26[_0x85f3[52]](_0x85f3[65],_0x3badx2b[_0x85f3[67]](_0x85f3[66]),function(_0x3badx24,_0x3badx29){_0x3badx28(_0x3badx24,_0x3badx29)})};methods[_0x85f3[76]]= function(_0x3badx26,_0x3badx27,_0x3badx28){console[_0x85f3[39]](_0x85f3[77]);if(!collections[_0x85f3[78]]){getQueues(false)};var _0x3badx2c=_[_0x85f3[57]](collections[_0x85f3[78]],{name:_0x3badx27[_0x85f3[79]]});var _0x3badx2d={uniqueid:_0x3badx26[_0x85f3[80]],node:_0x3badx27[_0x85f3[81]],application:_0x3badx27[_0x85f3[82]],data:_0x3badx2c[_0x85f3[60]],project_name:_0x3badx26[_0x85f3[83]],callerid:_0x3badx26[_0x85f3[84]],message:_0x85f3[85]};process[_0x85f3[45]](_0x3badx2d);getFilePath(_0x3badx27[_0x85f3[94]])[_0x85f3[93]](function(_0x3badx2e){var _0x3badx2b=[_0x3badx2c[_0x85f3[60]],_0x3badx27[_0x85f3[63]],_0x3badx27[_0x85f3[64]],_0x3badx2e,_0x3badx27[_0x85f3[62]],_0x3badx27[_0x85f3[2]],_0x3badx27[_0x85f3[86]],_0x3badx27[_0x85f3[87]],_0x85f3[88],_0x3badx27[_0x85f3[89]]];console[_0x85f3[39]](_0x85f3[90]+ _0x3badx2c[_0x85f3[60]]+ _0x85f3[91]);_0x3badx26[_0x85f3[52]](_0x85f3[92],_0x3badx2b[_0x85f3[67]](_0x85f3[66]),function(_0x3badx24,_0x3badx29){_0x3badx28(_0x3badx24,_0x3badx29)})})};methods[_0x85f3[95]]= function(_0x3badx26,_0x3badx27,_0x3badx28){console[_0x85f3[39]](_0x85f3[96]);var _0x3badx2b=[_0x3badx27[_0x85f3[97]],_0x3badx27[_0x85f3[63]]];var _0x3badx2d={uniqueid:_0x3badx26[_0x85f3[80]],node:_0x3badx27[_0x85f3[81]],application:_0x3badx27[_0x85f3[82]],data:_0x3badx2b[_0x85f3[67]](_0x85f3[66])|| null,project_name:_0x3badx26[_0x85f3[83]],callerid:_0x3badx26[_0x85f3[84]],message:_0x85f3[85]};process[_0x85f3[45]](_0x3badx2d);console[_0x85f3[39]](_0x85f3[98]);_0x3badx26[_0x85f3[52]](_0x85f3[99],_0x3badx2b[_0x85f3[67]](_0x85f3[66]),function(_0x3badx24,_0x3badx29){_0x3badx28(_0x3badx24,_0x3badx29)})};methods[_0x85f3[100]]= function(_0x3badx26,_0x3badx27,_0x3badx28){console[_0x85f3[39]](_0x85f3[101]);var _0x3badx2f={method:_0x85f3[102],uri:_0x85f3[103],body:{id_list:parseInt(_0x3badx27[_0x85f3[104]]),name:_0x3badx27[_0x85f3[60]]|| _0x85f3[88],phones:_0x3badx27[_0x85f3[75]][_0x85f3[106]]()[_0x85f3[105]](_0x85f3[66]),description:_0x3badx27[_0x85f3[81]]|| _0x85f3[88],planningtime:moment()[_0x85f3[110]](_0x3badx27[_0x85f3[108]]|| 5,_0x85f3[109])[_0x85f3[38]](_0x85f3[107])},json:true};rp(_0x3badx2f)[_0x85f3[93]](function(_0x3badx30){if(_0x3badx30[_0x85f3[116]]> 0){console[_0x85f3[39]](_0x3badx30[_0x85f3[117]].RMI)}else {console[_0x85f3[39]](_0x3badx30[_0x85f3[117]][_0x85f3[119]][_0x85f3[118]])}})[_0x85f3[115]](function(_0x3badx24){console[_0x85f3[33]](_0x85f3[113],_0x3badx24[_0x85f3[114]])})[_0x85f3[112]](function(){console[_0x85f3[39]](_0x85f3[111]);_0x3badx28(null,{code:200,result:1})})};methods[_0x85f3[120]]= function(_0x3badx26,_0x3badx27,_0x3badx28){console[_0x85f3[39]](_0x85f3[121]);console[_0x85f3[39]](_0x85f3[122]);try{var _0x3badx31=eval(_0x3badx27[_0x85f3[123]]);console[_0x85f3[39]](_0x85f3[124]);var _0x3badx32=getVariableName(_0x3badx27[_0x85f3[125]]);if(_[_0x85f3[126]](_0x3badx31)){_0x3badx31[_0x85f3[131]](function(_0x3badx33,_0x3badx34){wait[_0x85f3[130]](setVariable,_0x3badx26,_0x3badx32+ _0x85f3[127]+ _0x3badx34+ _0x85f3[128],_0x85f3[129]+ _0x3badx33+ _0x85f3[129])})}else {wait[_0x85f3[130]](setVariable,_0x3badx26,_0x3badx32,_0x85f3[129]+ _0x3badx31+ _0x85f3[129])}}catch(err){console[_0x85f3[39]](_0x85f3[132]);_0x3badx28(null,{code:200,result:1})}};methods[_0x85f3[133]]= function(_0x3badx26,_0x3badx27,_0x3badx28){console[_0x85f3[39]](_0x85f3[134]);getFilePath(_0x3badx27[_0x85f3[94]])[_0x85f3[93]](function(_0x3badx35){var _0x3badx2b=[_0x3badx35,_0x3badx27[_0x85f3[63]]];console[_0x85f3[39]](_0x85f3[135]);_0x3badx26[_0x85f3[52]](_0x85f3[136],_0x3badx2b[_0x85f3[67]](_0x85f3[66]),function(_0x3badx24,_0x3badx29){_0x3badx28(_0x3badx24,_0x3badx29)})})};methods[_0x85f3[137]]= function(_0x3badx26,_0x3badx27,_0x3badx28){console[_0x85f3[39]](_0x85f3[138]);var _0x3badx29={};console[_0x85f3[39]](_0x85f3[139]+ _0x3badx27[_0x85f3[140]]+ _0x85f3[141]);if(_0x3badx27[_0x85f3[140]]> 0){_0x3badx27[_0x85f3[140]]--;getFilePath(_0x3badx27[_0x85f3[94]])[_0x85f3[93]](function(_0x3badx36){console[_0x85f3[39]](_0x85f3[142]);_0x3badx26[_0x85f3[45]](util[_0x85f3[38]](_0x85f3[143],_0x3badx36,parseInt(_0x3badx27[_0x85f3[117]])* 1000,_0x3badx27[_0x85f3[144]]),function(_0x3badx24,_0x3badx29){var _0x3badx2d={uniqueid:_0x3badx26[_0x85f3[80]],node:_0x3badx27[_0x85f3[81]],application:_0x3badx27[_0x85f3[82]],data:_0x3badx29[_0x85f3[145]]|| null,project_name:_0x3badx26[_0x85f3[83]],callerid:_0x3badx26[_0x85f3[84]],message:_0x85f3[85]};process[_0x85f3[45]](_0x3badx2d);_0x3badx29[_0x85f3[145]]= _0x3badx29[_0x85f3[145]][_0x85f3[147]](_0x85f3[146],_0x85f3[88])[_0x85f3[106]]();if(_0x3badx29[_0x85f3[145]][_0x85f3[148]]){if(_0x3badx29[_0x85f3[145]]=== _0x85f3[149]){_0x3badx28(null,_0x3badx29)}else {_0x3badx29[_0x85f3[150]]= _0x3badx29[_0x85f3[145]];if(_0x3badx27[_0x85f3[125]]!== _0x85f3[149]){console[_0x85f3[39]](_0x85f3[151]);var _0x3badx32=getVariableName(_0x3badx27[_0x85f3[125]]);setVariable(_0x3badx26,_0x3badx32,_0x85f3[129]+ _0x3badx29[_0x85f3[150]]+ _0x85f3[129],function(){_0x3badx28(null,_0x3badx29)})}else {_0x3badx28(null,_0x3badx29)}}}else {console[_0x85f3[39]](_0x85f3[152]);_0x3badx29= {code:200,result:_0x85f3[153],data:_0x85f3[154]};_0x3badx28(null,_0x3badx29)}})})}else {console[_0x85f3[39]](_0x85f3[155]);_0x3badx29= {code:200,result:_0x85f3[153],data:_0x85f3[156]};_0x3badx28(null,_0x3badx29)}};methods[_0x85f3[157]]= function(_0x3badx26,_0x3badx27,_0x3badx28){console[_0x85f3[39]](_0x85f3[158]);console[_0x85f3[39]](_0x85f3[159]);_0x3badx26[_0x85f3[45]](util[_0x85f3[38]](_0x85f3[160],_0x3badx27[_0x85f3[161]],_0x3badx27[_0x85f3[162]]),function(_0x3badx24,_0x3badx29){_0x3badx28(_0x3badx24,_0x3badx29)})};methods[_0x85f3[163]]= function(_0x3badx26,_0x3badx27,_0x3badx28){console[_0x85f3[39]](_0x85f3[164]);console[_0x85f3[39]](_0x85f3[165]);_0x3badx26[_0x85f3[45]](util[_0x85f3[38]](_0x85f3[166],_0x3badx27[_0x85f3[167]],_0x3badx27[_0x85f3[162]]),function(_0x3badx24,_0x3badx29){_0x3badx28(_0x3badx24,_0x3badx29)})};methods[_0x85f3[168]]= function(_0x3badx26,_0x3badx27,_0x3badx28){console[_0x85f3[39]](_0x85f3[169]);googleTTS(_0x3badx27[_0x85f3[167]],_0x3badx27[_0x85f3[172]],1)[_0x85f3[93]](function(_0x3badx37){console[_0x85f3[39]](_0x85f3[171]);saveAndPlayTTS(_0x3badx26,_0x3badx27,_0x3badx37,_0x85f3[133],_0x3badx28)})[_0x85f3[115]](function(_0x3badx24){console[_0x85f3[33]](_0x85f3[170],_0x3badx24[_0x85f3[114]]);_0x3badx28(_0x3badx24,{code:200,result:_0x85f3[153]})})};function saveAndPlayTTS(_0x3badx26,_0x3badx27,_0x3badx37,_0x3badx39,_0x3badx28){var _0x3badx3a={_saveName:_0x85f3[88],_savePath:_0x85f3[88],_convertedPath:_0x85f3[88]};var _0x3badx2f={url:_0x3badx37};_0x3badx3a[_0x85f3[173]]= sr({length:6});_0x3badx3a[_0x85f3[174]]= util[_0x85f3[38]](_0x85f3[175],_0x3badx3a._saveName);var _0x3badx3b=fs[_0x85f3[176]](_0x3badx3a._savePath);request[_0x85f3[202]](_0x3badx2f)[_0x85f3[34]](_0x85f3[33],function(_0x3badx24){console[_0x85f3[39]](_0x85f3[201],_0x3badx24)})[_0x85f3[34]](_0x85f3[150],function(_0x3badx3d){_0x3badx3b[_0x85f3[200]](_0x3badx3d)})[_0x85f3[34]](_0x85f3[177],function(){console[_0x85f3[39]](_0x85f3[178]);_0x3badx3b[_0x85f3[177]]();console[_0x85f3[39]](_0x85f3[179],_0x3badx3a._savePath);_0x3badx3a[_0x85f3[180]]= util[_0x85f3[38]](_0x85f3[181],_0x3badx3a._saveName);console[_0x85f3[39]](_0x85f3[182]);fs[_0x85f3[184]](_0x3badx3a._savePath,parseInt(_0x85f3[183],8));console[_0x85f3[39]](_0x85f3[185],_0x3badx3a._convertedPath);var _0x3badx3c=sox[_0x85f3[187]](_0x3badx3a._savePath,_0x3badx3a._convertedPath,{sampleRate:8000,format:_0x85f3[186],channelCount:1,bitRate:192* 1024,compressionQuality:5});_0x3badx3c[_0x85f3[34]](_0x85f3[33],function(_0x3badx24){console[_0x85f3[33]](_0x85f3[188],_0x3badx24);deleteTempFile(_0x3badx3a._savePath);_0x3badx28(_0x3badx24,{code:200,result:_0x85f3[153]})});_0x3badx3c[_0x85f3[34]](_0x85f3[177],function(){console[_0x85f3[39]](_0x85f3[189]);console[_0x85f3[39]](_0x85f3[190]);fs[_0x85f3[184]](_0x3badx3a._convertedPath,parseInt(_0x85f3[183],8));switch(_0x3badx39){case _0x85f3[133]:console[_0x85f3[39]](_0x85f3[191]);_0x3badx26[_0x85f3[52]](_0x85f3[136],util[_0x85f3[38]](_0x85f3[192],_0x3badx3a._saveName),function(_0x3badx24,_0x3badx29){if(_0x3badx24){console[_0x85f3[39]](_0x85f3[193],_0x3badx24)};console[_0x85f3[39]](_0x85f3[194]);deleteTempFile(_0x3badx3a._savePath);deleteTempFile(_0x3badx3a._convertedPath);_0x3badx28(_0x3badx24,{code:200,result:_0x85f3[153]})});break;case _0x85f3[199]:console[_0x85f3[39]](_0x85f3[195]);_0x3badx26[_0x85f3[45]](util[_0x85f3[38]](_0x85f3[196],util[_0x85f3[38]](_0x85f3[192],_0x3badx3a._saveName),_0x3badx27[_0x85f3[197]]),function(_0x3badx24,_0x3badx29){if(_0x3badx24){console[_0x85f3[39]](_0x85f3[198],_0x3badx24)};console[_0x85f3[39]](_0x85f3[194]);deleteTempFile(_0x3badx3a._savePath);deleteTempFile(_0x3badx3a._convertedPath);_0x3badx28(_0x3badx24,{code:200,result:_0x85f3[153]})});break;default:console[_0x85f3[39]](_0x85f3[191]);_0x3badx26[_0x85f3[52]](_0x85f3[136],util[_0x85f3[38]](_0x85f3[192],_0x3badx3a._saveName),function(_0x3badx24,_0x3badx29){if(_0x3badx24){console[_0x85f3[39]](_0x85f3[193],_0x3badx24)};console[_0x85f3[39]](_0x85f3[194]);deleteTempFile(_0x3badx3a._savePath);deleteTempFile(_0x3badx3a._convertedPath);_0x3badx28(_0x3badx24,{code:200,result:_0x85f3[153]})})}});_0x3badx3c[_0x85f3[68]]()})}function deleteTempFile(_0x3badx3f){Promise[_0x85f3[206]](fs[_0x85f3[205]])(_0x3badx3f)[_0x85f3[93]](function(){console[_0x85f3[39]](_0x85f3[203]+ _0x3badx3f+ _0x85f3[204])})[_0x85f3[115]](function(_0x3badx24){})}methods[_0x85f3[207]]= function(_0x3badx26,_0x3badx27,_0x3badx28){console[_0x85f3[39]](_0x85f3[208]);var _0x3badx37=util[_0x85f3[38]](_0x85f3[209],_0x3badx27[_0x85f3[210]],encodeURIComponent(_0x3badx27[_0x85f3[167]]),_0x3badx27[_0x85f3[211]],_0x3badx27[_0x85f3[212]]);try{console[_0x85f3[39]](_0x85f3[213],_0x3badx37);console[_0x85f3[39]](_0x85f3[214]);saveAndPlayTTS(_0x3badx26,_0x3badx27,_0x3badx37,_0x85f3[199],_0x3badx28)}catch(err){console[_0x85f3[33]](_0x85f3[215],err);_0x3badx28(err,{code:200,result:_0x85f3[153]})}};methods[_0x85f3[216]]= function(_0x3badx26,_0x3badx27,_0x3badx28){console[_0x85f3[39]](_0x85f3[217]);var _0x3badx29={};console[_0x85f3[39]](_0x85f3[139]+ _0x3badx27[_0x85f3[140]]+ _0x85f3[141]);if(_0x3badx27[_0x85f3[140]]> 0){_0x3badx27[_0x85f3[140]]--;getFilePath(_0x3badx27[_0x85f3[94]])[_0x85f3[93]](function(_0x3badx36){console[_0x85f3[39]](_0x85f3[142]);_0x3badx26[_0x85f3[45]](util[_0x85f3[38]](_0x85f3[143],_0x3badx36,parseInt(_0x3badx27[_0x85f3[117]])* 1000,_0x3badx27[_0x85f3[218]]),function(_0x3badx24,_0x3badx29){var _0x3badx2d={uniqueid:_0x3badx26[_0x85f3[80]],node:_0x3badx27[_0x85f3[81]],application:_0x3badx27[_0x85f3[82]],data:_0x3badx29[_0x85f3[145]]|| null,project_name:_0x3badx26[_0x85f3[83]],callerid:_0x3badx26[_0x85f3[84]],message:_0x85f3[85]};process[_0x85f3[45]](_0x3badx2d);_0x3badx29[_0x85f3[145]]= _0x3badx29[_0x85f3[145]][_0x85f3[147]](_0x85f3[146],_0x85f3[88])[_0x85f3[106]]();if(_0x3badx29[_0x85f3[145]][_0x85f3[148]]>= parseInt(_0x3badx27[_0x85f3[219]])){if(_0x3badx29[_0x85f3[145]]!== _0x85f3[149]){console[_0x85f3[39]](_0x85f3[220]);if(_0x3badx27[_0x85f3[125]]!== _0x85f3[149]){console[_0x85f3[39]](_0x85f3[151]);var _0x3badx32=getVariableName(_0x3badx27[_0x85f3[125]]);setVariable(_0x3badx26,_0x3badx32,_0x85f3[129]+ _0x3badx29[_0x85f3[145]]+ _0x85f3[129],function(){_0x3badx29= {code:200,result:_0x85f3[153],data:_0x85f3[221]};_0x3badx28(null,_0x3badx29)})}else {console[_0x85f3[39]](_0x85f3[222]);_0x3badx29= {code:200,result:_0x85f3[153],data:_0x85f3[223]};_0x3badx28(null,_0x3badx29)}}else {console[_0x85f3[39]](_0x85f3[224]);_0x3badx29= {code:500,result:_0x85f3[149]};_0x3badx28(null,_0x3badx29)}}else {console[_0x85f3[39]](_0x85f3[225]);_0x3badx29= {code:200,result:_0x85f3[153],data:_0x85f3[223]};_0x3badx28(null,_0x3badx29)}})})}else {console[_0x85f3[39]](_0x85f3[155]);_0x3badx29= {code:500,result:_0x85f3[149]};_0x3badx28(null,_0x3badx29)}};methods[_0x85f3[226]]= function(_0x3badx26,_0x3badx27,_0x3badx28){console[_0x85f3[39]](_0x85f3[227]);var _0x3badx29={};console[_0x85f3[39]](_0x85f3[139]+ _0x3badx27[_0x85f3[140]]+ _0x85f3[141]);if(_0x3badx27[_0x85f3[140]]> 0){_0x3badx27[_0x85f3[140]]--;getFilePath(_0x3badx27[_0x85f3[94]])[_0x85f3[93]](function(_0x3badx36){console[_0x85f3[39]](_0x85f3[142]);_0x3badx26[_0x85f3[45]](util[_0x85f3[38]](_0x85f3[143],_0x3badx36,parseInt(_0x3badx27[_0x85f3[117]])* 1000,_0x3badx27[_0x85f3[218]]),function(_0x3badx24,_0x3badx29){var _0x3badx2d={uniqueid:_0x3badx26[_0x85f3[80]],node:_0x3badx27[_0x85f3[81]],application:_0x3badx27[_0x85f3[82]],data:_0x3badx29[_0x85f3[145]]|| null,project_name:_0x3badx26[_0x85f3[83]],callerid:_0x3badx26[_0x85f3[84]],message:_0x85f3[85]};_0x3badx29[_0x85f3[145]]= _0x3badx29[_0x85f3[145]][_0x85f3[147]](_0x85f3[146],_0x85f3[88])[_0x85f3[106]]();if(_0x3badx29[_0x85f3[145]][_0x85f3[148]]>= parseInt(_0x3badx27[_0x85f3[219]])){if(_0x3badx29[_0x85f3[145]]!== _0x85f3[149]){console[_0x85f3[39]](_0x85f3[220]);if(_0x3badx27[_0x85f3[125]]!== _0x85f3[149]){var _0x3badx40=_0x3badx29[_0x85f3[145]][_0x85f3[105]](_0x85f3[88]);var _0x3badx41=_0x3badx40[_0x85f3[148]];var _0x3badx42;var _0x3badx43=Number(_0x3badx27[_0x85f3[228]]);if(_0x3badx27[_0x85f3[229]]=== _0x85f3[230]){for(_0x3badx42= 0;_0x3badx42< _0x3badx43&& _0x3badx42< _0x3badx41;_0x3badx42++){_0x3badx40[_0x3badx42]= _0x85f3[231]}}else {for(_0x3badx42= _0x3badx41- 1;_0x3badx42>= 0&& _0x3badx43> 0;_0x3badx42--,_0x3badx43--){_0x3badx40[_0x3badx42]= _0x85f3[231]}};_0x3badx2d[_0x85f3[150]]= _0x3badx40[_0x85f3[67]](_0x85f3[88]);process[_0x85f3[45]](_0x3badx2d);console[_0x85f3[39]](_0x85f3[151]);var _0x3badx32=getVariableName(_0x3badx27[_0x85f3[125]]);setVariable(_0x3badx26,_0x3badx32,_0x85f3[129]+ _0x3badx29[_0x85f3[145]]+ _0x85f3[129],function(){_0x3badx29= {code:200,result:_0x85f3[153],data:_0x85f3[221]};_0x3badx28(null,_0x3badx29)})}else {process[_0x85f3[45]](_0x3badx2d);console[_0x85f3[39]](_0x85f3[222]);_0x3badx29= {code:200,result:_0x85f3[153]};_0x3badx28(null,_0x3badx29)}}else {process[_0x85f3[45]](_0x3badx2d);console[_0x85f3[39]](_0x85f3[224]);_0x3badx29= {code:500,result:_0x85f3[149]};_0x3badx28(null,_0x3badx29)}}else {process[_0x85f3[45]](_0x3badx2d);console[_0x85f3[39]](_0x85f3[225]);_0x3badx29= {code:200,result:_0x85f3[153],data:_0x85f3[223]};_0x3badx28(null,_0x3badx29)}})})}else {console[_0x85f3[39]](_0x85f3[155]);_0x3badx29= {code:500,result:_0x85f3[149]};_0x3badx28(null,_0x3badx29)}};methods[_0x85f3[232]]= function(_0x3badx26,_0x3badx27,_0x3badx28){console[_0x85f3[39]](_0x85f3[233]);var _0x3badx44=sr({length:4});console[_0x85f3[39]](_0x85f3[234]);_0x3badx26[_0x85f3[45]](util[_0x85f3[38]](_0x85f3[235],path[_0x85f3[67]](config[_0x85f3[236]],_0x85f3[237],_0x3badx26[_0x85f3[80]]+ _0x85f3[238]+ _0x3badx44),_0x3badx27[_0x85f3[239]]|| _0x85f3[186],_0x3badx27[_0x85f3[162]],_0x3badx27[_0x85f3[62]]* 1000,null,true,null),function(_0x3badx24,_0x3badx29){if(_0x3badx29[_0x85f3[240]]=== 200&& _0x3badx29[_0x85f3[145]]!== _0x85f3[149]){SquareRecording[_0x85f3[252]]({uniqueid:_0x3badx26[_0x85f3[80]],callerid:_0x3badx26[_0x85f3[84]],calleridname:_0x3badx26[_0x85f3[244]],context:_0x3badx26[_0x85f3[245]],extension:_0x3badx26[_0x85f3[246]],priority:_0x3badx26[_0x85f3[247]],accountcode:_0x3badx26[_0x85f3[248]],dnid:_0x3badx26[_0x85f3[249]],project_name:_0x3badx26[_0x85f3[83]],saveName:_0x3badx26[_0x85f3[80]]+ _0x85f3[238]+ _0x3badx44,filename:_0x3badx27[_0x85f3[250]]|| null,savePath:path[_0x85f3[67]](config[_0x85f3[236]],_0x85f3[237],_0x3badx26[_0x85f3[80]]+ _0x85f3[238]+ _0x3badx44+ _0x85f3[251])})[_0x85f3[115]](function(_0x3badx24){console[_0x85f3[39]](_0x85f3[241]+ _0x3badx27[_0x85f3[82]]+ _0x85f3[242]+ _0x3badx27[_0x85f3[81]]+ _0x85f3[243],_0x3badx24)});console[_0x85f3[39]](_0x85f3[253]);_0x3badx26[_0x85f3[45]](util[_0x85f3[38]](_0x85f3[254],_0x85f3[255],_0x3badx26[_0x85f3[80]]+ _0x85f3[238]+ _0x3badx44),function(_0x3badx24,_0x3badx29){_0x3badx28(_0x3badx24,_0x3badx29)})}else {_0x3badx28(_0x3badx24,_0x3badx29)}})};methods[_0x85f3[256]]= function(_0x3badx26,_0x3badx27,_0x3badx28){console[_0x85f3[39]](_0x85f3[257]);var _0x3badx29;var _0x3badx45=_0x85f3[258];var _0x3badx46;if(!collections[_0x85f3[259]]){getIntervals(false)};var _0x3badx47=_[_0x85f3[57]](collections[_0x85f3[259]],{id:parseInt(_0x3badx27[_0x85f3[260]])});if(!_0x3badx47[_0x85f3[261]]){_0x3badx46= _[_0x85f3[263]](collections[_0x85f3[259]],{IntervalId:parseInt(_0x3badx47[_0x85f3[262]])})};if(_0x3badx46){console[_0x85f3[39]](_0x85f3[264]);if(_0x3badx46[_0x85f3[148]]){console[_0x85f3[39]](_0x85f3[139]+ _0x3badx46[_0x85f3[148]]+ _0x85f3[265]);var _0x3badx48;console[_0x85f3[39]](_0x85f3[266]);_0x3badx46[_0x85f3[131]](function(_0x3badx33,_0x3badx34){_0x3badx48= splitInterval(_0x3badx33[_0x85f3[267]]);if(isIntervalValid(_0x3badx48)){console[_0x85f3[39]](_0x85f3[268]+ _0x3badx34+ _0x85f3[269]);_0x3badx45= _0x85f3[270]}})}else {console[_0x85f3[39]](_0x85f3[271]);_0x3badx45= _0x85f3[270]}}else {console[_0x85f3[39]](_0x85f3[272]);var _0x3badx49=splitInterval(_0x3badx47[_0x85f3[267]]);if(isIntervalValid(_0x3badx49)){console[_0x85f3[39]](_0x85f3[273]);_0x3badx45= _0x85f3[270]}};console[_0x85f3[39]](_0x85f3[274]+ _0x3badx45+ _0x85f3[275]);_0x3badx29= {code:200,result:_0x85f3[153],data:_0x3badx45};_0x3badx28(null,_0x3badx29)};methods[_0x85f3[276]]= function(_0x3badx26,_0x3badx27,_0x3badx28){console[_0x85f3[39]](_0x85f3[277]);console[_0x85f3[39]](_0x85f3[278]);var _0x3badx32=getVariableName(_0x3badx27[_0x85f3[125]]);getVariable(_0x3badx26,_0x3badx32,function(_0x3badx24,_0x3badx29){if(!_0x3badx29[_0x85f3[150]]){_0x3badx29[_0x85f3[150]]= _0x85f3[156]};_0x3badx28(null,_0x3badx29)})};methods[_0x85f3[279]]= function(_0x3badx26,_0x3badx27,_0x3badx28){var _0x3badx2d={uniqueid:_0x3badx26[_0x85f3[80]],node:_0x3badx27[_0x85f3[81]],application:_0x3badx27[_0x85f3[82]],data:_0x3badx27[_0x85f3[280]]|| null,project_name:_0x3badx26[_0x85f3[83]],callerid:_0x3badx26[_0x85f3[84]],message:_0x85f3[85]};process[_0x85f3[45]](_0x3badx2d);var _0x3badx29={code:200,result:_0x85f3[281]};_0x3badx28(null,_0x3badx29)};methods[_0x85f3[282]]= function(_0x3badx26,_0x3badx27,_0x3badx28){console[_0x85f3[39]](_0x85f3[283]);var _0x3badx2d={uniqueid:_0x3badx26[_0x85f3[80]],node:_0x3badx27[_0x85f3[81]],application:_0x3badx27[_0x85f3[82]],data:_0x3badx27[_0x85f3[284]],project_name:_0x3badx26[_0x85f3[83]],callerid:_0x3badx26[_0x85f3[84]],message:_0x85f3[85]};process[_0x85f3[45]](_0x3badx2d);var _0x3badx29;if(_0x3badx27[_0x85f3[284]]!== _0x85f3[149]){var _0x3badx4a=_[_0x85f3[57]](collections[_0x85f3[285]],{id:Number(_0x3badx27[_0x85f3[284]])});if(_0x3badx4a){var _0x3badx4b={from:[_0x3badx4a[_0x85f3[286]]],to:_0x3badx27[_0x85f3[287]][_0x85f3[105]](_0x85f3[66]),cc:_0x3badx27[_0x85f3[288]]?_0x3badx27[_0x85f3[288]][_0x85f3[105]](_0x85f3[66]):[],subject:_0x3badx27[_0x85f3[289]],html:_0x3badx27[_0x85f3[167]],voiceSource:_0x3badx26[_0x85f3[80]],auto:true,message:_0x85f3[290]};if(_0x3badx27[_0x85f3[291]]!== _0x85f3[149]){var _0x3badx4c=_[_0x85f3[57]](collections[_0x85f3[292]],{id:Number(_0x3badx27[_0x85f3[291]])});if(_0x3badx4c){var _0x3badx4d={from:_0x3badx4b[_0x85f3[293]],to:_0x3badx4b[_0x85f3[287]],cc:_0x3badx4b[_0x85f3[288]],subject:_0x3badx4b[_0x85f3[289]],body:_0x3badx4b[_0x85f3[294]]};_0x3badx4b[_0x85f3[289]]= _0x3badx4c[_0x85f3[289]]?Mustache[_0x85f3[295]](_0x3badx4c[_0x85f3[289]],_0x3badx4d):null;_0x3badx4b[_0x85f3[294]]= _0x3badx4c[_0x85f3[294]]?Mustache[_0x85f3[295]](_0x3badx4c[_0x85f3[294]],_0x3badx4d):null;process[_0x85f3[45]](_0x3badx4b);_0x3badx29= {code:200,result:_0x85f3[281]};_0x3badx28(null,_0x3badx29)}else {console[_0x85f3[39]](_0x85f3[296]);_0x3badx29= {code:200,result:_0x85f3[281]};_0x3badx28(null,_0x3badx29)}}else {process[_0x85f3[45]](_0x3badx4b);_0x3badx29= {code:200,result:_0x85f3[281]};_0x3badx28(null,_0x3badx29)}}else {console[_0x85f3[39]](_0x3badx27[_0x85f3[284]]?_0x85f3[297]:_0x85f3[298]);_0x3badx29= {code:200,result:_0x85f3[281]};_0x3badx28(null,_0x3badx29)}}else {console[_0x85f3[39]](_0x85f3[299]);_0x3badx29= {code:200,result:_0x85f3[281]};_0x3badx28(null,_0x3badx29)}};methods[_0x85f3[300]]= function(_0x3badx26,_0x3badx27,_0x3badx28){console[_0x85f3[39]](_0x85f3[301]);var _0x3badx2d={uniqueid:_0x3badx26[_0x85f3[80]],node:_0x3badx27[_0x85f3[81]],application:_0x3badx27[_0x85f3[82]],data:_0x3badx27[_0x85f3[284]],project_name:_0x3badx26[_0x85f3[83]],callerid:_0x3badx26[_0x85f3[84]],message:_0x85f3[85]};process[_0x85f3[45]](_0x3badx2d);var _0x3badx4b={body:_0x3badx27[_0x85f3[302]],SmsAccountId:_0x3badx27[_0x85f3[284]],source:_0x3badx26[_0x85f3[80]],auto:true,message:_0x85f3[303]};var _0x3badx29;if(_0x3badx27[_0x85f3[284]]!== _0x85f3[149]){var _0x3badx4a=_[_0x85f3[57]](collections[_0x85f3[304]],{id:Number(_0x3badx27[_0x85f3[284]])});if(_0x3badx4a){if(_0x3badx4a[_0x85f3[305]]=== _0x85f3[306]){_0x3badx4b[_0x85f3[293]]= /^[\+][0-9]+$/[_0x85f3[307]](_0x3badx4a[_0x85f3[75]])?_0x3badx4a[_0x85f3[75]]:_0x85f3[308]+ _0x3badx4a[_0x85f3[75]];_0x3badx4b[_0x85f3[287]]= /^[\+][0-9]+$/[_0x85f3[307]](_0x3badx27[_0x85f3[287]])?_0x3badx27[_0x85f3[287]]:_0x85f3[308]+ _0x3badx27[_0x85f3[287]]}else {_0x3badx4b[_0x85f3[293]]= /^[\+][0-9]+$/[_0x85f3[307]](_0x3badx4a[_0x85f3[75]])?_0x3badx4a[_0x85f3[75]][_0x85f3[147]](_0x85f3[308],_0x85f3[88]):_0x3badx4a[_0x85f3[75]];_0x3badx4b[_0x85f3[287]]= /^[\+][0-9]+$/[_0x85f3[307]](_0x3badx27[_0x85f3[287]])?_0x3badx27[_0x85f3[287]][_0x85f3[147]](_0x85f3[308],_0x85f3[88]):_0x3badx27[_0x85f3[287]]};process[_0x85f3[45]](_0x3badx4b);_0x3badx29= {code:200,result:_0x85f3[281]};_0x3badx28(null,_0x3badx29)}else {console[_0x85f3[39]](_0x85f3[309]);_0x3badx29= {code:200,result:_0x85f3[281]};_0x3badx28(null,_0x3badx29)}}else {console[_0x85f3[39]](_0x85f3[299]);_0x3badx29= {code:200,result:_0x85f3[281]};_0x3badx28(null,_0x3badx29)}};methods[_0x85f3[310]]= function(_0x3badx26,_0x3badx27,_0x3badx28){console[_0x85f3[39]](_0x85f3[311]);var _0x3badx2d={uniqueid:_0x3badx26[_0x85f3[80]],node:_0x3badx27[_0x85f3[81]],application:_0x3badx27[_0x85f3[82]],data:_[_0x85f3[106]](_0x3badx27[_0x85f3[312]])|| null,project_name:_0x3badx26[_0x85f3[83]],callerid:_0x3badx26[_0x85f3[84]],message:_0x85f3[85]};process[_0x85f3[45]](_0x3badx2d);console[_0x85f3[39]](_0x85f3[313]);sh[_0x85f3[52]](_[_0x85f3[106]](_0x3badx27[_0x85f3[312]]),function(_0x3badx25,_0x3badx4e){var _0x3badx4f=_0x3badx4e[_0x85f3[147]](/(\r\n|\n|\r)/gm,_0x85f3[88]);console[_0x85f3[39]](_0x85f3[314],_0x3badx4f);console[_0x85f3[39]](_0x85f3[315]);var _0x3badx32=getVariableName(_0x3badx27[_0x85f3[125]]);setVariable(_0x3badx26,_0x3badx32,_0x85f3[129]+ _0x3badx4f+ _0x85f3[129],_0x3badx28)})};methods[_0x85f3[2]]= function(_0x3badx26,_0x3badx27,_0x3badx28){console[_0x85f3[39]](_0x85f3[316]);console[_0x85f3[39]](_0x85f3[317]);_0x3badx26[_0x85f3[52]](_0x85f3[318],_0x3badx27[_0x85f3[312]],_0x3badx27[_0x85f3[319]],function(_0x3badx24,_0x3badx29){_0x3badx28(_0x3badx24,_0x3badx29)})};methods[_0x85f3[320]]= function(_0x3badx26,_0x3badx27,_0x3badx28){console[_0x85f3[39]](_0x85f3[321]);if(!collections[_0x85f3[322]]){getProjects(false)};var _0x3badx50=_[_0x85f3[57]](collections[_0x85f3[322]],{id:parseInt(_0x3badx27[_0x85f3[323]])});console[_0x85f3[39]](_0x85f3[324]+ _0x3badx50[_0x85f3[60]]+ _0x85f3[50]);_0x3badx26[_0x85f3[52]](_0x85f3[318],util[_0x85f3[38]](_0x85f3[325],_0x3badx50[_0x85f3[60]]),function(_0x3badx24,_0x3badx29){_0x3badx28(_0x3badx24,_0x3badx29)})};methods[_0x85f3[326]]= function(_0x3badx26,_0x3badx27,_0x3badx28){console[_0x85f3[39]](_0x85f3[327]);wait[_0x85f3[130]](setVariable,_0x3badx26,_0x85f3[328],_0x85f3[329]);wait[_0x85f3[130]](setVariable,_0x3badx26,_0x85f3[116],_0x85f3[329]);wait[_0x85f3[130]](setVariable,_0x3badx26,_0x85f3[330],_0x85f3[329]);var _0x3badx51=wait[_0x85f3[130]](asr,_0x3badx26,_0x3badx27);if(!_[_0x85f3[331]](_0x3badx51)){console[_0x85f3[39]](_0x85f3[332]);_[_0x85f3[333]](_0x3badx51,function(_0x3badx52,_0x3badx53){wait[_0x85f3[130]](setVariable,_0x3badx26,_0x3badx53,_0x85f3[129]+ _0x3badx52+ _0x85f3[129])})}else {console[_0x85f3[39]](_0x85f3[334]);wait[_0x85f3[130]](setVariable,_0x3badx26,_0x85f3[335],_0x85f3[336])}};function asr(_0x3badx26,_0x3badx27,_0x3badx28){var _0x3badx3a={_saveName:_0x85f3[88],_savePath:_0x85f3[88],_convertedPath:_0x85f3[88]};var _0x3badx51={};_0x3badx3a[_0x85f3[173]]= sr({length:6});_0x3badx3a[_0x85f3[174]]= util[_0x85f3[38]](_0x85f3[181],_0x3badx3a._saveName);var _0x3badx55=util[_0x85f3[38]](_0x85f3[337],_0x3badx3a._savePath,_0x3badx27[_0x85f3[62]]?_0x3badx27[_0x85f3[62]]:_0x85f3[88]);if(_0x3badx27[_0x85f3[338]]&& _0x3badx27[_0x85f3[338]]!== _0x85f3[339]){_0x3badx55+= _0x85f3[340]};if(_0x3badx27[_0x85f3[197]]&& _0x3badx27[_0x85f3[197]]!== _0x85f3[341]){_0x3badx55+= _0x85f3[154]};_0x3badx26[_0x85f3[52]](_0x85f3[342],_0x3badx55,function(_0x3badx24,_0x3badx29){if(_0x3badx24){console[_0x85f3[39]](_0x85f3[343],_0x3badx24);_0x3badx28(_0x3badx24,null)}else {console[_0x85f3[39]](_0x85f3[344]);var _0x3badx37=util[_0x85f3[38]](_0x85f3[345],_0x3badx27[_0x85f3[210]],_0x3badx27[_0x85f3[346]]);if(_0x3badx27[_0x85f3[347]]&& _0x3badx27[_0x85f3[347]]!== _0x85f3[153]){_0x3badx37+= util[_0x85f3[38]](_0x85f3[348],encodeURIComponent(_0x3badx27[_0x85f3[347]]))}else {_0x3badx37+= _0x85f3[349]};console[_0x85f3[39]](_0x85f3[350]);Promise[_0x85f3[206]](fs[_0x85f3[363]])(_0x3badx3a._savePath)[_0x85f3[93]](function(_0x3badx31){console[_0x85f3[39]](_0x85f3[358]);var _0x3badx59= new Buffer(_0x3badx31,_0x85f3[360]).toString(_0x85f3[359]);_0x3badx37+= util[_0x85f3[38]](_0x85f3[361],_0x3badx59);var _0x3badx2f={url:_0x3badx37};console[_0x85f3[39]](_0x85f3[362]);return rp(_0x3badx2f)})[_0x85f3[93]](function(_0x3badx56){console[_0x85f3[39]](_0x85f3[353]);_0x3badx56= _0x3badx56[_0x85f3[105]](_0x85f3[354]);var _0x3badx57,_0x3badx58;_[_0x85f3[131]](_0x3badx56,function(_0x3badx33){_0x3badx57= _0x3badx33[_0x85f3[105]](_0x85f3[355]);if(_0x3badx57[_0x85f3[148]]=== 2){switch(_0x3badx57[0]){case _0x85f3[167]:_0x3badx51[_0x85f3[328]]= _0x3badx57[1][_0x85f3[147]](/\+/g,_0x85f3[356]);break;case _0x85f3[145]:if(_0x3badx57[1]=== _0x85f3[357]){_0x3badx51[_0x85f3[116]]= 0};break;case _0x85f3[330]:_0x3badx51[_0x85f3[330]]= decodeURIComponent(_0x3badx57[1]);break;case _0x85f3[114]:_0x3badx51[_0x85f3[335]]= decodeURIComponent(_0x3badx57[1][_0x85f3[147]](/\+/g,_0x85f3[356]));break;default:}}})})[_0x85f3[115]](function(_0x3badx24){console[_0x85f3[39]](_0x85f3[352],_0x3badx24)})[_0x85f3[112]](function(){console[_0x85f3[39]](_0x85f3[351]);deleteTempFile(_0x3badx3a._savePath);_0x3badx28(null,_0x3badx51)})}})}methods[_0x85f3[364]]= function(_0x3badx26,_0x3badx27,_0x3badx28){console[_0x85f3[39]](_0x85f3[365]);if(!collections[_0x85f3[366]]){getDbConnections(false)};var _0x3badx5a=_[_0x85f3[57]](collections[_0x85f3[366]],{id:parseInt(_0x3badx27[_0x85f3[367]])});console[_0x85f3[39]](_0x85f3[368]);var _0x3badx2d={uniqueid:_0x3badx26[_0x85f3[80]],node:_0x3badx27[_0x85f3[81]],application:_0x3badx27[_0x85f3[82]],data:_0x3badx27[_0x85f3[369]]|| null,project_name:_0x3badx26[_0x85f3[83]],callerid:_0x3badx26[_0x85f3[84]],message:_0x85f3[85]};process[_0x85f3[45]](_0x3badx2d);try{db[_0x85f3[371]](_0x3badx5a[_0x85f3[370]]);var _0x3badx3d=db[_0x85f3[372]](_0x3badx27[_0x85f3[369]]);db[_0x85f3[373]]();setVariablesMatrix(_0x3badx26,_0x3badx27,_0x3badx28,_0x3badx3d)}catch(e){console[_0x85f3[39]](e[_0x85f3[114]]);wait[_0x85f3[130]](setVariable,_0x3badx26,_0x85f3[374],_0x85f3[270]);wait[_0x85f3[130]](setVariable,_0x3badx26,_0x85f3[375],_0x85f3[129]+ e[_0x85f3[114]]+ _0x85f3[129])}};methods[_0x85f3[376]]= function(_0x3badx26,_0x3badx27,_0x3badx28){console[_0x85f3[39]](_0x85f3[377]);console[_0x85f3[39]](_0x85f3[378]+ _0x3badx27[_0x85f3[246]]+ _0x85f3[379]);_0x3badx26[_0x85f3[52]](_0x85f3[65],util[_0x85f3[38]](_0x85f3[380],_0x3badx27[_0x85f3[246]],_0x3badx27[_0x85f3[245]]),function(_0x3badx24,_0x3badx29){_0x3badx28(_0x3badx24,_0x3badx29)})};methods[_0x85f3[381]]= function(_0x3badx26,_0x3badx27,_0x3badx28){console[_0x85f3[39]](_0x85f3[382]);var _0x3badx29={code:200,result:_0x85f3[153]};_0x3badx26[_0x85f3[52]](_0x85f3[383],_0x85f3[384]+ _0x3badx27[_0x85f3[385]]+ _0x85f3[129],function(_0x3badx24,_0x3badx29){console[_0x85f3[39]](_0x85f3[386]);try{_0x3badx29[_0x85f3[150]]= String(eval(_0x3badx27[_0x85f3[385]])?_0x85f3[270]:_0x85f3[258])}catch(_0x3badx24){console[_0x85f3[39]](_0x85f3[387]);_0x3badx29[_0x85f3[150]]= _0x85f3[258]};console[_0x85f3[39]](_0x85f3[388]+ _0x3badx29[_0x85f3[150]]);_0x3badx28(null,_0x3badx29)})};methods[_0x85f3[389]]= function(_0x3badx26,_0x3badx27,_0x3badx28){console[_0x85f3[39]](_0x85f3[390]);console[_0x85f3[39]](_0x85f3[391]);_0x3badx26[_0x85f3[389]]()};methods[_0x85f3[392]]= function(_0x3badx26,_0x3badx27,_0x3badx28){console[_0x85f3[39]](_0x85f3[393]);var _0x3badx4e=(_0x3badx27[_0x85f3[394]])?_0x85f3[129]+ _0x3badx27[_0x85f3[394]]+ _0x85f3[129]:_0x85f3[129]+ _0x3badx27[_0x85f3[81]]+ _0x85f3[129];console[_0x85f3[39]](_0x85f3[395]+ _0x3badx4e);_0x3badx26[_0x85f3[52]](_0x85f3[383],_0x3badx4e,function(_0x3badx24,_0x3badx29){_0x3badx28(_0x3badx24,_0x3badx29)})};methods[_0x85f3[396]]= function(_0x3badx26,_0x3badx27,_0x3badx28){console[_0x85f3[39]](_0x85f3[397]);console[_0x85f3[39]](_0x85f3[398]);_0x3badx26[_0x85f3[45]](util[_0x85f3[38]](_0x85f3[399],_0x3badx27[_0x85f3[400]],_0x3badx27[_0x85f3[162]]),function(_0x3badx24,_0x3badx29){_0x3badx28(_0x3badx24,_0x3badx29)})};methods[_0x85f3[401]]= function(_0x3badx26,_0x3badx27,_0x3badx28){console[_0x85f3[39]](_0x85f3[402]);console[_0x85f3[39]](_0x85f3[403]);var _0x3badx32=getVariableName(_0x3badx27[_0x85f3[125]]);wait[_0x85f3[130]](setVariable,_0x3badx26,_0x3badx32,_0x85f3[129]+ _0x3badx27[_0x85f3[404]]+ _0x85f3[129])};function getVertices(_0x3badx5c){return _[_0x85f3[408]](_0x3badx5c,function(_0x3badx31,_0x3badx5d,_0x3badx5e){if(_0x3badx5e=== _0x85f3[405]){return _0x3badx31};if(_[_0x85f3[126]](_0x3badx5d)){_[_0x85f3[407]](_0x3badx5d,function(_0x3badx52,_0x3badx53){_0x3badx31[_0x3badx52[_0x85f3[406]][_0x85f3[262]]]= _0x3badx52[_0x85f3[406]];_0x3badx31[_0x3badx52[_0x85f3[406]][_0x85f3[262]]][_0x85f3[82]]= _0x3badx5e});return _0x3badx31};_0x3badx31[_0x3badx5d[_0x85f3[406]][_0x85f3[262]]]= _0x3badx5d[_0x85f3[406]];_0x3badx31[_0x3badx5d[_0x85f3[406]][_0x85f3[262]]][_0x85f3[82]]= _0x3badx5e;return _0x3badx31},{})}function getTargetBySource(_0x3badx5c,_0x3badx60,_0x3badx52,_0x3badx61){return _[_0x85f3[145]](_[_0x85f3[57]](_0x3badx5c[_0x85f3[405]],function(_0x3badx5d){if(_0x3badx5d[_0x85f3[406]][_0x85f3[409]]&& _0x3badx5d[_0x85f3[406]][_0x85f3[410]]){if(_0x3badx5d[_0x85f3[406]][_0x85f3[410]]=== _0x3badx60){if(_0x3badx5d[_0x85f3[406]][_0x85f3[411]]&& _0x3badx5d[_0x85f3[406]][_0x85f3[411]]!== _0x3badx52){if(_0x3badx61){var _0x3badx62=_0x3badx5d[_0x85f3[406]][_0x85f3[411]][_0x85f3[105]](_0x85f3[66]);if(_[_0x85f3[412]](_0x3badx62,_0x3badx52)){return true}};return false};return true}};return false}),_0x85f3[413])}function recurReplace(_0x3badx64,_0x3badx26,_0x3badx65){var _0x3badx66=0,_0x3badx67={},_0x3badx42;var _0x3badx68=0;for(_0x3badx42= 0;_0x3badx42< _0x3badx64[_0x85f3[148]];_0x3badx42++){if(_0x3badx64[_0x85f3[414]](_0x3badx42)=== _0x85f3[415]){if(_0x3badx68=== 0){_0x3badx66= _0x3badx42};_0x3badx68++};if(_0x3badx64[_0x85f3[414]](_0x3badx42)=== _0x85f3[416]){_0x3badx68--;if(_0x3badx68=== 0){_0x3badx67[_0x3badx64[_0x85f3[417]](_0x3badx66+ 1,_0x3badx42)]= _0x3badx64[_0x85f3[417]](_0x3badx66+ 1,_0x3badx42)}}};if(Object[_0x85f3[418]](_0x3badx67)[_0x85f3[148]]!== 0){for(var _0x3badx53 in _0x3badx67){_0x3badx67[_0x3badx53]= recurReplace(_0x3badx53,_0x3badx26)};for(var _0x3badx69 in _0x3badx67){_0x3badx64= _0x3badx64[_0x85f3[147]]( new RegExp(_0x85f3[415]+ _0x3badx69[_0x85f3[147]](/[.*+?^${}()|[\]\\]/g,_0x85f3[419])+ _0x85f3[416],_0x85f3[420]),_0x3badx67[_0x3badx69])}};if(_0x3badx65){return _0x3badx64}else {var _0x3badx52=wait[_0x85f3[130]](getVariable,_0x3badx26,_0x3badx64);return _0x3badx52[_0x85f3[150]]|| _0x85f3[415]+ _0x3badx64+ _0x85f3[416]}}function replaceAllVariables(_0x3badx26,_0x3badx27,_0x3badx28){var _0x3badx6b=_[_0x85f3[421]](_0x3badx27);for(var _0x3badx53 in _0x3badx6b){_0x3badx6b[_0x3badx53]= recurReplace(_0x3badx6b[_0x3badx53],_0x3badx26,true);console[_0x85f3[39]](_0x85f3[422],_0x3badx6b[_0x3badx53])};return _0x3badx6b}function xstart(_0x3badx26){var _0x3badx5c=_0x3badx26[_0x85f3[236]];var _0x3badx6d=_0x3badx26[_0x85f3[423]];if(_0x3badx5c[_0x85f3[68]]){if(!_[_0x85f3[126]](_0x3badx5c[_0x85f3[68]])){var _0x3badx60=_0x3badx5c[_0x85f3[68]][_0x85f3[406]][_0x85f3[262]];var _0x3badx29={};do{try{var _0x3badx27=replaceAllVariables(_0x3badx26,_0x3badx6d[_0x3badx60]);if(_0x3badx27){if(_[_0x85f3[424]](methods[_0x3badx27[_0x85f3[82]]])){_0x3badx29= wait[_0x85f3[130]](methods[_0x3badx27[_0x85f3[82]]],_0x3badx26,_0x3badx27)}else {_0x3badx29= wait[_0x85f3[130]](methods[_0x85f3[392]],_0x3badx26,_0x3badx27)};if(_0x3badx29[_0x85f3[240]]=== 200&& _0x3badx29[_0x85f3[145]]!== _0x85f3[149]){if(_0x3badx27[_0x85f3[82]]=== _0x85f3[137]|| _0x3badx27[_0x85f3[82]]=== _0x85f3[216]|| _0x3badx27[_0x85f3[82]]=== _0x85f3[226]){_0x3badx6d[_0x3badx60][_0x85f3[140]]= _0x3badx27[_0x85f3[140]]};var _0x3badx6e=getTargetBySource(_0x3badx5c,_0x3badx60,_0x3badx29[_0x85f3[150]],_0x3badx27[_0x85f3[82]]=== _0x85f3[137]);if(!_0x3badx6e){if(_0x3badx27[_0x85f3[82]]=== _0x85f3[137]){if(_0x3badx27[_0x85f3[140]]> 0){_0x3badx6e= getTargetBySource(_0x3badx5c,_0x3badx60,_0x85f3[223],true);if(!_0x3badx6e){_0x3badx6e= _0x3badx60}}else {_0x3badx6e= getTargetBySource(_0x3badx5c,_0x3badx60,_0x85f3[156],true)}};if((_0x3badx27[_0x85f3[82]]=== _0x85f3[216]|| _0x3badx27[_0x85f3[82]]=== _0x85f3[226])&& _0x3badx27[_0x85f3[140]]> 0){_0x3badx6e= _0x3badx60};if(_0x3badx27[_0x85f3[82]]=== _0x85f3[276]&& _0x3badx29[_0x85f3[150]]!== _0x85f3[156]){_0x3badx6e= getTargetBySource(_0x3badx5c,_0x3badx60,_0x85f3[156])}};_0x3badx60= _0x3badx6e}else {_0x3badx60= null}}else {_0x3badx60= null}}catch(err){console[_0x85f3[39]](err)}}while(_0x3badx60);;console[_0x85f3[39]](_0x85f3[425]);_0x3badx26[_0x85f3[389]]()}}}function xfinally(_0x3badx26){var _0x3badx5c=_0x3badx26[_0x85f3[236]];var _0x3badx6d=_0x3badx26[_0x85f3[423]];if(_0x3badx5c[_0x85f3[112]]){if(!_[_0x85f3[126]](_0x3badx5c[_0x85f3[112]])){var _0x3badx60=_0x3badx5c[_0x85f3[112]][_0x85f3[406]][_0x85f3[262]];var _0x3badx29={};do{try{var _0x3badx27=_0x3badx6d[_0x3badx60][_0x85f3[426]]?_0x3badx6d[_0x3badx60]:replaceAllVariables(_0x3badx26,_0x3badx6d[_0x3badx60]);if(_0x3badx27){if(_[_0x85f3[424]](methods[_0x3badx27[_0x85f3[82]]])){_0x3badx29= wait[_0x85f3[130]](methods[_0x3badx27[_0x85f3[82]]],_0x3badx26,_0x3badx27)}else {_0x3badx29= wait[_0x85f3[130]](methods[_0x85f3[392]],_0x3badx26,_0x3badx27)};if(_0x3badx29[_0x85f3[240]]=== 200&& _0x3badx29[_0x85f3[145]]!== _0x85f3[149]){var _0x3badx6e=getTargetBySource(_0x3badx5c,_0x3badx60,_0x3badx29[_0x85f3[150]],_0x3badx27[_0x85f3[82]]=== _0x85f3[137]);if(!_0x3badx6e){if(_0x3badx27[_0x85f3[82]]=== _0x85f3[137]){if(_0x3badx27[_0x85f3[140]]> 0){_0x3badx6e= getTargetBySource(_0x3badx5c,_0x3badx60,_0x85f3[223],true);if(!_0x3badx6e){_0x3badx6e= _0x3badx60}}else {_0x3badx6e= getTargetBySource(_0x3badx5c,_0x3badx60,_0x85f3[156],true)}};if(_0x3badx27[_0x85f3[82]]=== _0x85f3[216]&& _0x3badx27[_0x85f3[140]]> 0){_0x3badx6e= _0x3badx60};if(_0x3badx27[_0x85f3[82]]=== _0x85f3[276]&& _0x3badx29[_0x85f3[150]]!== _0x85f3[156]){_0x3badx6e= getTargetBySource(_0x3badx5c,_0x3badx60,_0x85f3[156])}};_0x3badx60= _0x3badx6e}else {_0x3badx60= null}}else {_0x3badx60= null}}catch(err){console[_0x85f3[39]](err)}}while(_0x3badx60);;_0x3badx26[_0x85f3[389]]();console[_0x85f3[39]](_0x85f3[427])}};_0x3badx26[_0x85f3[177]]()}function main(_0x3badx26){_0x3badx26[_0x85f3[34]](_0x85f3[33],function(_0x3badx24){console[_0x85f3[39]](_0x85f3[428],_0x3badx24)});_0x3badx26[_0x85f3[34]](_0x85f3[35],function(){console[_0x85f3[39]](_0x85f3[429])});_0x3badx26[_0x85f3[34]](_0x85f3[389],function(){if(_0x3badx26[_0x85f3[112]]){_0x3badx26[_0x85f3[112]]= false;console[_0x85f3[39]](_0x85f3[430]);wait[_0x85f3[431]](xfinally,_0x3badx26)}else {process[_0x85f3[45]]({message:_0x85f3[432],uniqueid:_0x3badx26[_0x85f3[80]],leaveAt:moment()[_0x85f3[38]](_0x85f3[107])});console[_0x85f3[39]](_0x85f3[433])}});_0x3badx26[_0x85f3[34]](_0x85f3[117],function(_0x3badx29){});_0x3badx26[_0x85f3[34]](_0x85f3[434],function(_0x3badx51){console[_0x85f3[39]](_0x3badx51);console[_0x85f3[39]](_0x85f3[435]+ _0x3badx51[_0x85f3[436]]+ _0x85f3[437]+ _0x3badx51[_0x85f3[438]]);var _0x3badx71={network:_0x3badx51[_0x85f3[439]],network_script:_0x3badx51[_0x85f3[440]],request:_0x3badx51[_0x85f3[441]],channel:_0x3badx51[_0x85f3[442]],language:_0x3badx51[_0x85f3[443]],type:_0x3badx51[_0x85f3[444]],uniqueid:_0x3badx51[_0x85f3[438]],version:_0x3badx51[_0x85f3[445]],callerid:_0x3badx51[_0x85f3[436]],calleridname:_0x3badx51[_0x85f3[446]],callingpres:_0x3badx51[_0x85f3[447]],callingani2:_0x3badx51[_0x85f3[448]],callington:_0x3badx51[_0x85f3[449]],callingtns:_0x3badx51[_0x85f3[450]],dnid:_0x3badx51[_0x85f3[451]],rdnis:_0x3badx51[_0x85f3[452]],context:_0x3badx51[_0x85f3[453]],extension:_0x3badx51[_0x85f3[454]],priority:_0x3badx51[_0x85f3[455]],enhanced:_0x3badx51[_0x85f3[456]],accountcode:_0x3badx51[_0x85f3[457]],threadid:_0x3badx51[_0x85f3[458]],project_name:_0x3badx51[_0x85f3[459]],joinAt:moment()[_0x85f3[38]](_0x85f3[107]),message:_0x85f3[252]};process[_0x85f3[45]](_0x3badx71);if(_0x3badx51[_0x85f3[459]]){SquareProject[_0x85f3[467]]({where:{name:_0x3badx51[_0x85f3[459]]},attributes:[_0x85f3[262],_0x85f3[461]]})[_0x85f3[93]](function(_0x3badx50){if(_0x3badx50){if(_0x3badx50[_0x85f3[461]]){xml[_0x85f3[464]](_0x3badx50[_0x85f3[461]],{normalizeTags:true,explicitArray:false},function(_0x3badx24,_0x3badx31){var _0x3badx5c=_0x3badx31[_0x85f3[462]][_0x85f3[236]];if(_0x3badx5c){_0x3badx26[_0x85f3[236]]= _0x3badx5c;_0x3badx26[_0x85f3[112]]= true;_0x3badx26[_0x85f3[80]]= _0x3badx51[_0x85f3[438]];_0x3badx26[_0x85f3[84]]= _0x3badx51[_0x85f3[436]];_0x3badx26[_0x85f3[244]]= _0x3badx51[_0x85f3[446]];_0x3badx26[_0x85f3[245]]= _0x3badx51[_0x85f3[453]];_0x3badx26[_0x85f3[246]]= _0x3badx51[_0x85f3[454]];_0x3badx26[_0x85f3[247]]= _0x3badx51[_0x85f3[455]];_0x3badx26[_0x85f3[248]]= _0x3badx51[_0x85f3[457]];_0x3badx26[_0x85f3[249]]= _0x3badx51[_0x85f3[451]];_0x3badx26[_0x85f3[83]]= _0x3badx51[_0x85f3[459]];_0x3badx26[_0x85f3[423]]= getVertices(_0x3badx5c);wait[_0x85f3[431]](xstart,_0x3badx26)}else {console[_0x85f3[39]](_0x85f3[463]);_0x3badx26[_0x85f3[177]]()}})}else {console[_0x85f3[39]](_0x85f3[465]);_0x3badx26[_0x85f3[177]]()}}else {console[_0x85f3[39]](_0x85f3[466]);_0x3badx26[_0x85f3[177]]()}})[_0x85f3[115]](function(_0x3badx24){console[_0x85f3[39]](_0x85f3[460],_0x3badx24);_0x3badx26[_0x85f3[177]]()})}else {console[_0x85f3[39]](_0x85f3[468]);_0x3badx26[_0x85f3[177]]()}})}function splitInterval(_0x3badx47){var _0x3badx73={};var _0x3badx49=_0x3badx47[_0x85f3[105]](_0x85f3[66]);var _0x3badx74;_0x3badx49[_0x85f3[131]](function(_0x3badx75,_0x3badx34){switch(_0x3badx34){case 0:if(_0x3badx75!== _0x85f3[231]){_0x3badx74= _0x3badx75[_0x85f3[105]](_0x85f3[156]);_0x3badx73[_0x85f3[469]]= moment(_0x3badx74[0],_0x85f3[470]);_0x3badx73[_0x85f3[471]]= moment(_0x3badx74[1],_0x85f3[470])}else {_0x3badx73[_0x85f3[469]]= null;_0x3badx73[_0x85f3[471]]= null};break;case 1:if(_0x3badx75!== _0x85f3[231]){_0x3badx74= _0x3badx75[_0x85f3[105]](_0x85f3[156]);_0x3badx73[_0x85f3[472]]= weekDaysCollection[_0x3badx74[0]];_0x3badx73[_0x85f3[473]]= _0x3badx74[1]?weekDaysCollection[_0x3badx74[1]]:null}else {_0x3badx73[_0x85f3[472]]= null;_0x3badx73[_0x85f3[473]]= null};break;case 2:if(_0x3badx75!== _0x85f3[231]){_0x3badx74= _0x3badx75[_0x85f3[105]](_0x85f3[156]);_0x3badx73[_0x85f3[474]]= _0x3badx74[0];_0x3badx73[_0x85f3[475]]= _0x3badx74[1]?_0x3badx74[1]:null}else {_0x3badx73[_0x85f3[474]]= null;_0x3badx73[_0x85f3[475]]= null};break;case 3:if(_0x3badx75!== _0x85f3[231]){_0x3badx74= _0x3badx75[_0x85f3[105]](_0x85f3[156]);_0x3badx73[_0x85f3[476]]= monthsCollection[_0x3badx74[0]];_0x3badx73[_0x85f3[477]]= _0x3badx74[1]?monthsCollection[_0x3badx74[1]]:null}else {_0x3badx73[_0x85f3[476]]= null;_0x3badx73[_0x85f3[477]]= null};break;default:}});return _0x3badx73}function isIntervalValid(_0x3badx47){var _0x3badx77=moment()[_0x85f3[38]](_0x85f3[470]);var _0x3badx78=moment()[_0x85f3[38]](_0x85f3[478]);var _0x3badx79=moment()[_0x85f3[38]](_0x85f3[479]);var _0x3badx7a=moment()[_0x85f3[38]](_0x85f3[480]);console[_0x85f3[39]](_0x85f3[481],_0x3badx77,_0x85f3[482],_0x3badx78,_0x85f3[483],_0x3badx79,_0x85f3[484],_0x3badx7a);console[_0x85f3[39]](_0x85f3[485]);console[_0x85f3[39]](_0x85f3[486],moment(_0x3badx47[_0x85f3[469]],_0x85f3[470])[_0x85f3[38]](_0x85f3[470]),_0x85f3[487],moment(_0x3badx47[_0x85f3[471]],_0x85f3[470])[_0x85f3[38]](_0x85f3[470]));console[_0x85f3[39]](_0x85f3[488],_0x3badx47[_0x85f3[472]],_0x85f3[487],_0x3badx47[_0x85f3[473]]);console[_0x85f3[39]](_0x85f3[489],_0x3badx47[_0x85f3[474]],_0x85f3[487],_0x3badx47[_0x85f3[475]]);console[_0x85f3[39]](_0x85f3[490],_0x3badx47[_0x85f3[476]],_0x85f3[487],_0x3badx47[_0x85f3[477]]);var _0x3badx7b,_0x3badx7c,_0x3badx7d,_0x3badx7e;var _0x3badx7f=[1,2,3,4,5,6,7,8,9,10,11,12];var _0x3badx80=[1,2,3,4,5,6,7];var _0x3badx81=[];for(var _0x3badx42=1;_0x3badx42<= 31;_0x3badx42++){_0x3badx81[_0x85f3[491]](_0x3badx42)};_0x3badx7b= (_0x3badx47[_0x85f3[469]]&& _0x3badx47[_0x85f3[471]])?moment(_0x3badx77,_0x85f3[470])[_0x85f3[492]](moment(_0x3badx47[_0x85f3[469]],_0x85f3[470]),moment(_0x3badx47[_0x85f3[471]],_0x85f3[470])):true;if(_0x3badx47[_0x85f3[472]]){if(_0x3badx47[_0x85f3[473]]){var _0x3badx82=_[_0x85f3[263]](_0x3badx80,function(_0x3badx33){return (_0x3badx33>= _0x3badx47[_0x85f3[472]])&& (_0x3badx33<= _0x3badx47[_0x85f3[473]])});console[_0x85f3[39]](_0x85f3[493],_0x3badx82);_0x3badx7c= (_0x3badx82[_0x85f3[494]](parseInt(_0x3badx78))!== -1)?true:false}else {_0x3badx7c= (parseInt(_0x3badx78)=== _0x3badx47[_0x85f3[472]])?true:false}}else {_0x3badx7c= true};if(_0x3badx47[_0x85f3[474]]){if(_0x3badx47[_0x85f3[475]]){var _0x3badx83=_[_0x85f3[263]](_0x3badx81,function(_0x3badx33){return (_0x3badx33>= _0x3badx47[_0x85f3[474]])&& (_0x3badx33<= _0x3badx47[_0x85f3[475]])});console[_0x85f3[39]](_0x85f3[495],_0x3badx83);_0x3badx7d= (_0x3badx83[_0x85f3[494]](parseInt(_0x3badx79))!== -1)?true:false}else {_0x3badx7d= (parseInt(_0x3badx79)=== _0x3badx47[_0x85f3[474]])?true:false}}else {_0x3badx7d= true};if(_0x3badx47[_0x85f3[476]]){if(_0x3badx47[_0x85f3[477]]){var _0x3badx84=_[_0x85f3[263]](_0x3badx7f,function(_0x3badx33){return (_0x3badx33>= _0x3badx47[_0x85f3[476]])&& (_0x3badx33<= _0x3badx47[_0x85f3[477]])});console[_0x85f3[39]](_0x85f3[496],_0x3badx84);_0x3badx7e= (_0x3badx84[_0x85f3[494]](parseInt(_0x3badx7a))!== -1)?true:false}else {_0x3badx7e= (parseInt(_0x3badx7a)=== _0x3badx47[_0x85f3[476]])?true:false}}else {_0x3badx7e= true};console[_0x85f3[39]](_0x85f3[497],_0x3badx7b,_0x85f3[498],_0x3badx7c,_0x85f3[499],_0x3badx7d,_0x85f3[500],_0x3badx7e);return _0x3badx7b&& _0x3badx7c&& _0x3badx7d&& _0x3badx7e}function setVariable(_0x3badx26,_0x3badx86,_0x3badx52,_0x3badx28){console[_0x85f3[39]](_0x85f3[501]);console[_0x85f3[39]](_0x85f3[502]+ _0x3badx86+ _0x85f3[503],_0x3badx52);_0x3badx26[_0x85f3[45]](util[_0x85f3[38]](_0x85f3[254],_0x3badx86,_0x3badx52),function(_0x3badx24,_0x3badx29){if(_0x3badx28){_0x3badx28(_0x3badx24,_0x3badx29)}})}function getVariableName(_0x3badx88){if(!collections[_0x85f3[434]]){getVariables(false)};var _0x3badx89={name:_0x85f3[504]};var _0x3badx8a;if(_0x3badx88){_0x3badx8a= _[_0x85f3[57]](collections[_0x85f3[434]],{id:parseInt(_0x3badx88)})};return _0x3badx8a?_0x3badx8a[_0x85f3[60]]:_0x3badx89[_0x85f3[60]]}function setVariablesMatrix(_0x3badx26,_0x3badx27,_0x3badx28,_0x3badx3d){if(_0x3badx3d&& _0x3badx3d[_0x85f3[148]]){var _0x3badx32=getVariableName(_0x3badx27[_0x85f3[125]]);_[_0x85f3[131]](_0x3badx3d,function(_0x3badx8c,_0x3badx34){_[_0x85f3[333]](_0x3badx8c,function(_0x3badx52,_0x3badx53){wait[_0x85f3[130]](setVariable,_0x3badx26,_0x3badx32+ _0x85f3[127]+ _0x3badx34+ _0x85f3[505]+ _0x3badx53+ _0x85f3[128],_0x85f3[129]+ _0x3badx52+ _0x85f3[129])})});wait[_0x85f3[130]](setVariable,_0x3badx26,_0x3badx32+ _0x85f3[506],_0x3badx3d[_0x85f3[148]])}else {_0x3badx28(null,{code:200,result:0})}}function getVariable(_0x3badx26,_0x3badx86,_0x3badx28){_0x3badx26[_0x85f3[510]](_0x3badx86,function(_0x3badx24,_0x3badx29){if(_0x3badx29[_0x85f3[240]]=== 200&& _0x3badx29[_0x85f3[145]]!== _0x85f3[153]){_0x3badx29[_0x85f3[150]]= _0x3badx29[_0x85f3[145]][_0x85f3[417]](_0x3badx29[_0x85f3[145]][_0x85f3[508]](_0x85f3[507])+ 1,_0x3badx29[_0x85f3[145]][_0x85f3[508]](_0x85f3[509]))}else {_0x3badx29[_0x85f3[150]]= _0x85f3[88]};_0x3badx28(null,_0x3badx29)})}function getFilePath(_0x3badx88){if(!collections[_0x85f3[511]]){getSounds(false)};return Setting[_0x85f3[467]]()[_0x85f3[93]](function(_0x3badx31){if(_0x3badx88!== _0x85f3[149]){if(_0x3badx31){var _0x3badx3f=_[_0x85f3[57]](collections[_0x85f3[511]],{id:parseInt(_0x3badx88)});return util[_0x85f3[38]](_0x85f3[512],_0x3badx31[_0x85f3[513]]|| _0x85f3[514],_0x3badx3f[_0x85f3[515]])};return _0x85f3[88]}else {return _0x85f3[88]}})[_0x85f3[115]](function(_0x3badx24){console[_0x85f3[39]](_0x3badx24)})}function getUsers(_0x3badx90){return User[_0x85f3[516]]()[_0x85f3[93]](function(_0x3badx31){collections[_0x85f3[55]]= _[_0x85f3[421]](_0x3badx31);if(_0x3badx90){synchUpdates(_0x85f3[24],_0x85f3[55],_0x85f3[262])}})[_0x85f3[115]](function(_0x3badx24){console[_0x85f3[39]](_0x3badx24)})}function getQueues(_0x3badx90){return VoiceQueue[_0x85f3[516]]()[_0x85f3[93]](function(_0x3badx31){collections[_0x85f3[78]]= _[_0x85f3[421]](_0x3badx31);if(_0x3badx90){synchUpdates(_0x85f3[25],_0x85f3[78],_0x85f3[60])}})[_0x85f3[115]](function(_0x3badx24){console[_0x85f3[39]](_0x3badx24)})}function getVariables(_0x3badx90){return Variable[_0x85f3[516]]()[_0x85f3[93]](function(_0x3badx31){collections[_0x85f3[434]]= _[_0x85f3[421]](_0x3badx31);if(_0x3badx90){synchUpdates(_0x85f3[21],_0x85f3[434],_0x85f3[262])}})[_0x85f3[115]](function(_0x3badx24){console[_0x85f3[39]](_0x3badx24)})}function getDbConnections(_0x3badx90){return SquareOdbc[_0x85f3[516]]()[_0x85f3[93]](function(_0x3badx31){collections[_0x85f3[366]]= _[_0x85f3[421]](_0x3badx31);if(_0x3badx90){synchUpdates(_0x85f3[22],_0x85f3[366],_0x85f3[262])}})[_0x85f3[115]](function(_0x3badx24){console[_0x85f3[39]](_0x3badx24)})}function getIntervals(_0x3badx90){return Interval[_0x85f3[516]]()[_0x85f3[93]](function(_0x3badx31){collections[_0x85f3[259]]= _[_0x85f3[421]](_0x3badx31);if(_0x3badx90){synchUpdates(_0x85f3[26],_0x85f3[259])}})[_0x85f3[115]](function(_0x3badx24){console[_0x85f3[39]](_0x3badx24)})}function getProjects(_0x3badx90){return SquareProject[_0x85f3[516]]()[_0x85f3[93]](function(_0x3badx31){collections[_0x85f3[322]]= _[_0x85f3[421]](_0x3badx31);if(_0x3badx90){synchUpdates(_0x85f3[19],_0x85f3[322],_0x85f3[262])}})[_0x85f3[115]](function(_0x3badx24){console[_0x85f3[39]](_0x3badx24)})}function getSounds(_0x3badx90){return Sound[_0x85f3[516]]()[_0x85f3[93]](function(_0x3badx31){collections[_0x85f3[511]]= _[_0x85f3[421]](_0x3badx31);if(_0x3badx90){synchUpdates(_0x85f3[27],_0x85f3[511],_0x85f3[262])}})[_0x85f3[115]](function(_0x3badx24){console[_0x85f3[39]](_0x3badx24)})}function getMailServerOut(_0x3badx90){return MailServerOut[_0x85f3[516]]()[_0x85f3[93]](function(_0x3badx31){collections[_0x85f3[285]]= _[_0x85f3[421]](_0x3badx31);if(_0x3badx90){synchUpdates(_0x85f3[30],_0x85f3[285],_0x85f3[262])}})[_0x85f3[115]](function(_0x3badx24){console[_0x85f3[39]](_0x3badx24)})}function getTemplates(_0x3badx90){return Template[_0x85f3[516]]()[_0x85f3[93]](function(_0x3badx31){collections[_0x85f3[292]]= _[_0x85f3[421]](_0x3badx31);if(_0x3badx90){synchUpdates(_0x85f3[32],_0x85f3[292],_0x85f3[262])}})[_0x85f3[115]](function(_0x3badx24){console[_0x85f3[39]](_0x3badx24)})}function getSmsAccounts(_0x3badx90){return SmsAccount[_0x85f3[516]]()[_0x85f3[93]](function(_0x3badx31){collections[_0x85f3[304]]= _[_0x85f3[421]](_0x3badx31);if(_0x3badx90){synchUpdates(_0x85f3[29],_0x85f3[304],_0x85f3[262])}})[_0x85f3[115]](function(_0x3badx24){console[_0x85f3[39]](_0x3badx24)})}function synchUpdates(_0x3badx9b,_0x3badx9c,_0x3badx53){process[_0x85f3[45]]({message:_0x3badx53?_0x85f3[517]:_0x85f3[518],model:_0x3badx9b,collection:_0x3badx9c,key:_0x3badx53})}function updateCollection(_0x3badx9c,_0x3badx9e,_0x3badx9f){var _0x3badxa0=_[_0x85f3[57]](collections[_0x3badx9c],_0x3badx9e);if(_0x3badxa0){_[_0x85f3[519]](_0x3badxa0,_0x3badx9f)}else {collections[_0x3badx9c][_0x85f3[520]](_0x3badx9f)}}function replaceCollection(_0x3badx9c,_0x3badx9f){collections[_0x3badx9c]= _0x3badx9f}function getPort(){return function(){return Setting[_0x85f3[467]]()[_0x85f3[93]](function(_0x3badx31){if(_0x3badx31){return _0x3badx31[_0x85f3[521]]}})[_0x85f3[115]](function(_0x3badx24){console[_0x85f3[39]](_0x3badx24)})}}Promise[_0x85f3[531]]([])[_0x85f3[93]](getPort())[_0x85f3[93]](function(_0x3badxa3){agi[_0x85f3[524]](main)[_0x85f3[523]](_0x3badxa3|| 4573);getUsers(true);getQueues(true);getVariables(true);getIntervals(true);getProjects(true);getSounds(true);getDbConnections(true);getMailServerOut(true);getTemplates(true);getSmsAccounts(true);process[_0x85f3[34]](_0x85f3[114],function(_0x3badx3d){switch(_0x3badx3d[_0x85f3[114]]){case _0x85f3[527]:updateCollection(_0x3badx3d[_0x85f3[525]],_0x3badx3d[_0x85f3[385]],_0x3badx3d[_0x85f3[526]]);break;case _0x85f3[528]:replaceCollection(_0x3badx3d[_0x85f3[525]],_0x3badx3d[_0x85f3[526]]);break;case _0x85f3[530]:_[_0x85f3[529]](collections[_0x3badx3d[_0x85f3[525]]],_0x3badx3d[_0x85f3[385]]);break;default:}})})[_0x85f3[115]](function(_0x3badx24){console[_0x85f3[33]](_0x85f3[522],_0x3badx24)}) \ No newline at end of file diff --git a/server/config/agi/index.js b/server/config/agi/index.js index b2c8a79..a126c9c 100644 --- a/server/config/agi/index.js +++ b/server/config/agi/index.js @@ -1,127 +1 @@ -var cp = require('child_process'); -var util = require('util'); -var models = require('../../models'); - -module.exports = function() { - var child = cp - .fork(__dirname + '/agi') - .on('message', function(data) { - switch (data.message) { - case 'update': - return models.ReportSquare.update({ - leaveAt: data.leaveAt - }, { - where: { - uniqueid: data.uniqueid - }, - individualHooks: true - }) - .catch(function(err) { - console.log('Error saving exit time from IVR', err); - }); - case 'create': - delete data.message; - return models.ReportSquare - .create(data) - .catch(function(err) { - console.log('Error saving enter time for IVR', err); - }); - case 'detail': - delete data.message; - return models.ReportSquareDetail - .create(data) - .catch(function(err) { - console.log('Error saving ' + data.application + ':' + data.node + ' block log', err); - }); - case 'synch': - synchCollection(data, child); - break; - case 'forceSynch': //in case of collections with sub-collections (es: voiceextension, interval) - replaceCollection(data, child); - break; - case 'createSms': - delete data.message; - return models.SmsMessage - .create(data) - .catch(function(err) { - console.log('Error creating sms message', err); - }); - case 'createMail': - delete data.message; - return models.MailMessage - .create(data) - .catch(function(err) { - console.log('Error creating sms message', err); - }); - default: - } - }) - .on('close', function(code) { - console.log(util.format('AGI SERVER EXITED WITH CODE %s', code)); - }) - .on('error', function(err) { - console.error(err); - }); - - process.on('exit', function(code) { - child.kill(); - }); -}; - -function synchCollection(data, child) { - var condition = {}; - models[data.model].afterCreate(function(doc) { - condition[data.key] = doc[data.key]; - child.send({ - message: 'updateCollection', - collection: data.collection, - condition: condition, - doc: doc - }); - }); - models[data.model].afterUpdate(function(doc) { - condition[data.key] = doc[data.key]; - child.send({ - message: 'updateCollection', - collection: data.collection, - condition: condition, - doc: doc - }); - }); - models[data.model].afterDestroy(function(doc) { - condition[data.key] = doc[data.key]; - child.send({ - message: 'removeFromCollection', - collection: data.collection, - condition: condition - }); - }); -} - -function replaceCollection(data, child) { - var condition = {}; - models[data.model].afterCreate(function(doc) { - getCollection(data, child, doc); - }); - models[data.model].afterUpdate(function(doc) { - getCollection(data, child, doc); - }); - models[data.model].afterDestroy(function(doc) { - getCollection(data, child, doc); - }); -} - -function getCollection(data, child, doc) { - models[data.model] - .findAll() - .then(function(results) { - child.send({ - message: 'replaceCollection', - collection: data.collection, - doc: results - }); - }) - .catch(function(err) { - console.log('AGI error on replacing ', data.collection, ' collection', err); - }); -} +var _0x85d0=["\x63\x68\x69\x6C\x64\x5F\x70\x72\x6F\x63\x65\x73\x73","\x75\x74\x69\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x65\x78\x70\x6F\x72\x74\x73","\x65\x72\x72\x6F\x72","\x6F\x6E","\x63\x6C\x6F\x73\x65","\x41\x47\x49\x20\x53\x45\x52\x56\x45\x52\x20\x45\x58\x49\x54\x45\x44\x20\x57\x49\x54\x48\x20\x43\x4F\x44\x45\x20\x25\x73","\x66\x6F\x72\x6D\x61\x74","\x6C\x6F\x67","\x6D\x65\x73\x73\x61\x67\x65","\x45\x72\x72\x6F\x72\x20\x73\x61\x76\x69\x6E\x67\x20\x65\x78\x69\x74\x20\x74\x69\x6D\x65\x20\x66\x72\x6F\x6D\x20\x49\x56\x52","\x63\x61\x74\x63\x68","\x6C\x65\x61\x76\x65\x41\x74","\x75\x6E\x69\x71\x75\x65\x69\x64","\x75\x70\x64\x61\x74\x65","\x52\x65\x70\x6F\x72\x74\x53\x71\x75\x61\x72\x65","\x45\x72\x72\x6F\x72\x20\x73\x61\x76\x69\x6E\x67\x20\x65\x6E\x74\x65\x72\x20\x74\x69\x6D\x65\x20\x66\x6F\x72\x20\x49\x56\x52","\x63\x72\x65\x61\x74\x65","\x45\x72\x72\x6F\x72\x20\x73\x61\x76\x69\x6E\x67\x20","\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x3A","\x6E\x6F\x64\x65","\x20\x62\x6C\x6F\x63\x6B\x20\x6C\x6F\x67","\x52\x65\x70\x6F\x72\x74\x53\x71\x75\x61\x72\x65\x44\x65\x74\x61\x69\x6C","\x64\x65\x74\x61\x69\x6C","\x73\x79\x6E\x63\x68","\x66\x6F\x72\x63\x65\x53\x79\x6E\x63\x68","\x45\x72\x72\x6F\x72\x20\x63\x72\x65\x61\x74\x69\x6E\x67\x20\x73\x6D\x73\x20\x6D\x65\x73\x73\x61\x67\x65","\x53\x6D\x73\x4D\x65\x73\x73\x61\x67\x65","\x63\x72\x65\x61\x74\x65\x53\x6D\x73","\x4D\x61\x69\x6C\x4D\x65\x73\x73\x61\x67\x65","\x63\x72\x65\x61\x74\x65\x4D\x61\x69\x6C","\x2F\x61\x67\x69","\x66\x6F\x72\x6B","\x65\x78\x69\x74","\x6B\x69\x6C\x6C","\x6B\x65\x79","\x75\x70\x64\x61\x74\x65\x43\x6F\x6C\x6C\x65\x63\x74\x69\x6F\x6E","\x63\x6F\x6C\x6C\x65\x63\x74\x69\x6F\x6E","\x73\x65\x6E\x64","\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x6D\x6F\x64\x65\x6C","\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65\x46\x72\x6F\x6D\x43\x6F\x6C\x6C\x65\x63\x74\x69\x6F\x6E","\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79","\x41\x47\x49\x20\x65\x72\x72\x6F\x72\x20\x6F\x6E\x20\x72\x65\x70\x6C\x61\x63\x69\x6E\x67\x20","\x20\x63\x6F\x6C\x6C\x65\x63\x74\x69\x6F\x6E","\x72\x65\x70\x6C\x61\x63\x65\x43\x6F\x6C\x6C\x65\x63\x74\x69\x6F\x6E","\x74\x68\x65\x6E","\x66\x69\x6E\x64\x41\x6C\x6C"];var cp=require(_0x85d0[0]);var util=require(_0x85d0[1]);var models=require(_0x85d0[2]);module[_0x85d0[3]]= function(){var _0x84d2x4=cp[_0x85d0[34]](__dirname+ _0x85d0[33])[_0x85d0[5]](_0x85d0[10],function(_0x84d2x7){switch(_0x84d2x7[_0x85d0[10]]){case _0x85d0[15]:return models[_0x85d0[16]][_0x85d0[15]]({leaveAt:_0x84d2x7[_0x85d0[13]]},{where:{uniqueid:_0x84d2x7[_0x85d0[14]]},individualHooks:true})[_0x85d0[12]](function(_0x84d2x5){console[_0x85d0[9]](_0x85d0[11],_0x84d2x5)});case _0x85d0[18]:delete _0x84d2x7[_0x85d0[10]];return models[_0x85d0[16]][_0x85d0[18]](_0x84d2x7)[_0x85d0[12]](function(_0x84d2x5){console[_0x85d0[9]](_0x85d0[17],_0x84d2x5)});case _0x85d0[25]:delete _0x84d2x7[_0x85d0[10]];return models[_0x85d0[24]][_0x85d0[18]](_0x84d2x7)[_0x85d0[12]](function(_0x84d2x5){console[_0x85d0[9]](_0x85d0[19]+ _0x84d2x7[_0x85d0[20]]+ _0x85d0[21]+ _0x84d2x7[_0x85d0[22]]+ _0x85d0[23],_0x84d2x5)});case _0x85d0[26]:synchCollection(_0x84d2x7,_0x84d2x4);break;case _0x85d0[27]:replaceCollection(_0x84d2x7,_0x84d2x4);break;case _0x85d0[30]:delete _0x84d2x7[_0x85d0[10]];return models[_0x85d0[29]][_0x85d0[18]](_0x84d2x7)[_0x85d0[12]](function(_0x84d2x5){console[_0x85d0[9]](_0x85d0[28],_0x84d2x5)});case _0x85d0[32]:delete _0x84d2x7[_0x85d0[10]];return models[_0x85d0[31]][_0x85d0[18]](_0x84d2x7)[_0x85d0[12]](function(_0x84d2x5){console[_0x85d0[9]](_0x85d0[28],_0x84d2x5)});default:}})[_0x85d0[5]](_0x85d0[6],function(_0x84d2x6){console[_0x85d0[9]](util[_0x85d0[8]](_0x85d0[7],_0x84d2x6))})[_0x85d0[5]](_0x85d0[4],function(_0x84d2x5){console[_0x85d0[4]](_0x84d2x5)});process[_0x85d0[5]](_0x85d0[35],function(_0x84d2x6){_0x84d2x4[_0x85d0[36]]()})};function synchCollection(_0x84d2x7,_0x84d2x4){var _0x84d2x9={};models[_0x84d2x7[_0x85d0[42]]][_0x85d0[41]](function(_0x84d2xa){_0x84d2x9[_0x84d2x7[_0x85d0[37]]]= _0x84d2xa[_0x84d2x7[_0x85d0[37]]];_0x84d2x4[_0x85d0[40]]({message:_0x85d0[38],collection:_0x84d2x7[_0x85d0[39]],condition:_0x84d2x9,doc:_0x84d2xa})});models[_0x84d2x7[_0x85d0[42]]][_0x85d0[43]](function(_0x84d2xa){_0x84d2x9[_0x84d2x7[_0x85d0[37]]]= _0x84d2xa[_0x84d2x7[_0x85d0[37]]];_0x84d2x4[_0x85d0[40]]({message:_0x85d0[38],collection:_0x84d2x7[_0x85d0[39]],condition:_0x84d2x9,doc:_0x84d2xa})});models[_0x84d2x7[_0x85d0[42]]][_0x85d0[45]](function(_0x84d2xa){_0x84d2x9[_0x84d2x7[_0x85d0[37]]]= _0x84d2xa[_0x84d2x7[_0x85d0[37]]];_0x84d2x4[_0x85d0[40]]({message:_0x85d0[44],collection:_0x84d2x7[_0x85d0[39]],condition:_0x84d2x9})})}function replaceCollection(_0x84d2x7,_0x84d2x4){var _0x84d2x9={};models[_0x84d2x7[_0x85d0[42]]][_0x85d0[41]](function(_0x84d2xa){getCollection(_0x84d2x7,_0x84d2x4,_0x84d2xa)});models[_0x84d2x7[_0x85d0[42]]][_0x85d0[43]](function(_0x84d2xa){getCollection(_0x84d2x7,_0x84d2x4,_0x84d2xa)});models[_0x84d2x7[_0x85d0[42]]][_0x85d0[45]](function(_0x84d2xa){getCollection(_0x84d2x7,_0x84d2x4,_0x84d2xa)})}function getCollection(_0x84d2x7,_0x84d2x4,_0x84d2xa){models[_0x84d2x7[_0x85d0[42]]][_0x85d0[50]]()[_0x85d0[49]](function(_0x84d2xd){_0x84d2x4[_0x85d0[40]]({message:_0x85d0[48],collection:_0x84d2x7[_0x85d0[39]],doc:_0x84d2xd})})[_0x85d0[12]](function(_0x84d2x5){console[_0x85d0[9]](_0x85d0[46],_0x84d2x7[_0x85d0[39]],_0x85d0[47],_0x84d2x5)})} \ No newline at end of file diff --git a/server/config/ami/action.js b/server/config/ami/action.js index dd34f4a..4fdff0e 100644 --- a/server/config/ami/action.js +++ b/server/config/ami/action.js @@ -1,698 +1 @@ -'use strict'; - -const moment = require('moment'); -const util = require('util'); -const Promise = require('bluebird'); - -const config = require('../environment'); -const Agent = require('../../models').User; -const ActionModel = require('../../models').Action; -const Sequelize = require('../../models').sequelize; -const VoiceQueue = require('../../models').VoiceQueue; -const ReportMember = require('../../models').ReportMember; -const UserHasVoiceQueue = require('../../models').UserHasVoiceQueue; -const UserHasChatQueue = require('../../models').UserHasChatQueue; -const UserHasMailQueue = require('../../models').UserHasMailQueue; -const UserHasFaxQueue = require('../../models').UserHasFaxQueue; -const UserHasSmsQueue = require('../../models').UserHasSmsQueue; -const UserHasOpenchannelQueue = require('../../models').UserHasOpenchannelQueue; - -function Action(ami, io) { - console.log('Action Initialization...'); - var channels = ['voice', 'chat', 'mail', 'fax', 'sms', 'openchannel']; - - Agent.afterUpdate(function(doc, options) { - io.to(util.format('%s:%s', doc.role, doc.id)).emit('agent:save', doc); - io.to('users').emit('agent:save', doc); - io.to('admins').emit('agent:save', doc); - }); - - ActionModel.afterCreate(function(doc, options) { - return onSave(doc, options, ami); - }); - - process.on('message', function(data) { - switch (data.evt) { - case 'Action.afterCreate': - return onSave(data, data.options, ami); - - case 'ReportMember.beforeCreate': - return ReportMember - .findAll({ - where: { - channel: data.channel, - membername: data.membername, - interface: data.interface, - type: data.type, - exitAt: null - } - }) - .then(function(elms) { - var queries = []; - elms.forEach(function(elm) { - queries.push(elm.update({ - exitAt: moment().format("YYYY-MM-DD HH:mm:ss"), - })); - }); - - return Promise - .all(queries); - }); - - default: - } - }); - - // HANDLE PAUSE FUNCTION - function handlePause(options, action) { - return function(agent) { - return Promise - .promisify(ami.action)({ - action: 'QueuePause', - interface: util.format('%s/%s', 'SIP', agent.name), - paused: true, - reason: options.body.type || action.data1, - }) - .then(function(astData) { - return agent - .update({ - voicePause: true, - chatPause: true, - mailPause: true, - faxPause: true, - smsPause: true, - openchannelPause: true, - pauseType: options.body.type || action.data1, - lastPauseAt: moment().format("YYYY-MM-DD HH:mm:ss") - }, { - transaction: options.transaction || null - }); - }) - .then(function(agent) { - var reportMembers = []; - channels.forEach(function(channel) { - reportMembers.push({ - channel: channel, - membername: agent.name, - interface: util.format('%s/%s', 'SIP', agent.name), - type: 'PAUSE', - enterAt: moment().format("YYYY-MM-DD HH:mm:ss"), - data1: options.body.type || action.data1, - data2: action.data2, - data3: action.data3, - data4: action.data4, - role: agent.role, - internal: agent.internal - }); - }) - return ReportMember - .bulkCreate(reportMembers, { - individualHooks: true, - transaction: options.transaction || null - }); - }); - } - } - - // HANDLE UNPAUSE FUNCTION - function handleUnpause(options, action) { - return function(agent) { - if (!options.body) { - options.body = {} - } - - switch (options.body.channel) { - case 'voice': - - return Promise - .promisify(ami.action)({ - action: 'QueuePause', - interface: util.format('%s/%s', 'SIP', agent.name), - paused: false, - reason: options.body.type - }) - .then(function() { - return agent - .update({ - voicePause: false, - }, { - transaction: options.transaction || null - }); - }) - .then(function(agent) { - return ReportMember - .findOne({ - where: { - channel: options.body.channel, - membername: agent.name, - interface: util.format('%s/%s', 'SIP', agent.name), - type: 'PAUSE', - exitAt: null - } - }); - }) - .then(handleEntityNotFound({ - message: 'Already Pause Off' - })) - .then(function(reportMember) { - return reportMember - .update({ - exitAt: moment().format("YYYY-MM-DD HH:mm:ss"), - }, { - individualHooks: true, - transaction: options.transaction || null - }); - }) - .then(function() { - return agent; - }); - - case 'chat': - case 'mail': - case 'fax': - case 'sms': - case 'openchannel': - - var data = {}; - data[util.format('%s%s', options.body.channel, 'Pause')] = false; - - return agent - .update(data, { - transaction: options.transaction || null - }) - .then(function(agent) { - - return ReportMember - .findOne({ - where: { - channel: options.body.channel, - membername: agent.name, - interface: util.format('%s/%s', 'SIP', agent.name), - type: 'PAUSE', - exitAt: null - } - }); - }) - .then(handleEntityNotFound({ - message: 'Already Pause Off' - })) - .then(function(reportMember) { - return reportMember - .update({ - exitAt: moment().format("YYYY-MM-DD HH:mm:ss"), - }, { - individualHooks: true, - transaction: options.transaction || null - }); - }) - .then(function() { - return agent; - }); - - default: - var action = Promise.promisify(ami.action); - return action({ - action: 'QueuePause', - interface: util.format('%s/%s', 'SIP', agent.name), - paused: false - }) - .catch(function(err) { - console.error(err); - }) - .then(function() { - return agent - .update({ - voicePause: false, - mailPause: false, - chatPause: false, - faxPause: false, - smsPause: false, - openchannelPause: false - }, { - transaction: options.transaction || null - }); - }) - .then(function(agent) { - return ReportMember - .findAll({ - where: { - membername: agent.name, - interface: util.format('%s/%s', 'SIP', agent.name), - type: 'PAUSE', - exitAt: null - }, - }); - }) - .then(function(members) { - var promises = []; - - members.forEach(function(member) { - promises.push(member.update({ - exitAt: moment().format("YYYY-MM-DD HH:mm:ss") - })); - }); - - return Promise - .all(promises); - }) - .then(function() { - return agent; - }); - } - } - } - - // HANDLE LOGIN FUNCTION - function handleLogin(options, action) { - return function(agent) { - if (!agent.online) { - return agent - .getVoiceQueues() - .then(function(voiceQueues) { - var actions = []; - voiceQueues.forEach(function(voiceQueue) { - actions.push(ami.action({ - action: 'QueueAdd', - queue: voiceQueue.name, - interface: util.format('%s/%s', 'SIP', agent.name), - membername: agent.name - })); - }); - - if (agent.loginInPause) { - actions.push({ - action: 'QueuePause', - interface: util.format('%s/%s', 'SIP', agent.name), - paused: true, - reason: 'DEFAULT PAUSE' - }); - } - - return Promise.all(actions); - }) - .then(function(astData) { - var reportMembers = []; - channels.forEach(function(channel) { - reportMembers.push({ - channel: channel, - membername: agent.name, - interface: util.format('%s/%s', 'SIP', agent.name), - type: 'LOGIN', - enterAt: moment().format("YYYY-MM-DD HH:mm:ss"), - role: agent.role, - internal: agent.internal - }); - }); - return ReportMember - .bulkCreate(reportMembers, { - individualHooks: true - }); - }); - } - } - } - - // HANDLE LOGOUT FUNCTION - function handleLogout(options, action) { - return function(agent) { - return VoiceQueue - .findAll() - .then(function(voiceQueues) { - var actions = []; - voiceQueues.forEach(function(voiceQueue) { - actions.push(ami.action({ - action: 'QueueRemove', - queue: voiceQueue.name, - interface: util.format('%s/%s', 'SIP', agent.name) - })); - }); - return Promise - .all(actions) - .catch(function(err) { - console.error(err); - }); - }) - .then(function(astData) { - return ReportMember - .findAll({ - where: { - membername: agent.name, - interface: util.format('%s/%s', 'SIP', agent.name), - type: 'LOGIN', - exitAt: null - }, - }); - }) - .then(function(members) { - //single update - var promises = []; - - members.forEach(function(member) { - promises.push(member.update({ - exitAt: moment().format("YYYY-MM-DD HH:mm:ss") - })); - }); - - return Promise - .all(promises); - }); - } - } - - // HANDLE QUEUEADD FUNCTION - function handleQueueAdd(options, action) { - return function(agent) { - var bulkQueues = []; - switch (options.body.channel) { - case 'voice': - options.body.queues.forEach(function(queue) { - bulkQueues.push(UserHasVoiceQueue - .findOrCreate({ - where: { - UserId: agent.id, - queue: queue - }, - defaults: { - queue: queue, - location: util.format('SIP/%s', agent.name), - membername: agent.name, - UserId: agent.id, - }, - transaction: options.transaction || null, - individualHooks: true - })); - }); - return Promise - .all(bulkQueues) - .then(function() { - var actions = []; - options.body.queues.forEach(function(queue) { - actions.push(ami.action({ - action: 'QueueAdd', - queue: queue, - interface: util.format('%s/%s', 'SIP', agent.name), - membername: agent.name - })); - }); - return Promise - .all(actions); - }) - .catch(function(err) { - console.error(err); - }) - case 'chat': - options.body.queues.forEach(function(queue) { - bulkQueues.push(UserHasChatQueue - .findOrCreate({ - where: { - UserId: agent.id, - ChatQueueId: queue.id - }, - defaults: { - ChatQueueId: queue.id, - queue: queue.name, - UserId: agent.id, - }, - transaction: options.transaction || null - })); - }); - return Promise - .all(bulkQueues) - .catch(function(err) { - console.log(err); - }); - case 'mail': - options.body.queues.forEach(function(queue) { - bulkQueues.push(UserHasMailQueue - .findOrCreate({ - where: { - UserId: agent.id, - MailQueueId: queue.id - }, - defaults: { - MailQueueId: queue.id, - queue: queue.name, - UserId: agent.id, - }, - transaction: options.transaction || null - })); - }); - return Promise - .all(bulkQueues) - .catch(function(err) { - console.log(err); - }); - case 'sms': - options.body.queues.forEach(function(queue) { - bulkQueues.push(UserHasSmsQueue - .findOrCreate({ - where: { - UserId: agent.id, - SmsQueueId: queue.id - }, - defaults: { - SmsQueueId: queue.id, - queue: queue.name, - UserId: agent.id, - }, - transaction: options.transaction || null - })); - }); - return Promise - .all(bulkQueues) - .catch(function(err) { - console.log(err); - }); - case 'openchannel': - options.body.queues.forEach(function(queue) { - bulkQueues.push(UserHasOpenchannelQueue - .findOrCreate({ - where: { - UserId: agent.id, - OpenchannelQueueId: queue.id - }, - defaults: { - OpenchannelQueueId: queue.id, - queue: queue.name, - UserId: agent.id, - }, - transaction: options.transaction || null - })); - }); - return Promise - .all(bulkQueues) - .catch(function(err) { - console.log(err); - }); - case 'fax': - options.body.queues.forEach(function(queue) { - bulkQueues.push(UserHasFaxQueue - .findOrCreate({ - where: { - UserId: agent.id, - FaxQueueId: queue.id - }, - defaults: { - faxQueueId: queue.id, - queue: queue.name, - UserId: agent.id, - }, - transaction: options.transaction || null - })); - }); - return Promise - .all(bulkQueues) - .catch(function(err) { - console.log(err); - }); - default: - } - } - } - - // HANDLE QUEUEREMOVE FUNCTION - function handleQueueRemove(options, action) { - return function(agent) { - switch (options.body.channel) { - case 'voice': - return UserHasVoiceQueue - .destroy({ - where: { - UserId: agent.id, - queue: options.body.queue - }, - transaction: options.transaction || null, - individualHooks: true - }) - .then(function() { - var newAction = Promise.promisify(ami.action); - return newAction({ - action: 'QueueRemove', - queue: options.body.queue, - interface: util.format('%s/%s', 'SIP', agent.name), - }); - }) - .catch(function(err) { - console.error('queue association remove error :', err); - }); - case 'chat': - return UserHasChatQueue - .destroy({ - where: { - UserId: agent.id, - ChatQueueId: options.body.queueId - }, - transaction: options.transaction || null, - individualHooks: true - }) - .catch(function(err) { - console.error('queue association remove error :', err); - }); - case 'mail': - return UserHasMailQueue - .destroy({ - where: { - UserId: agent.id, - MailQueueId: options.body.queueId - }, - transaction: options.transaction || null, - individualHooks: true - }) - .catch(function(err) { - console.error('queue association remove error :', err); - }); - case 'sms': - return UserHasSmsQueue - .destroy({ - where: { - UserId: agent.id, - SmsQueueId: options.body.queueId - }, - transaction: options.transaction || null, - individualHooks: true - }) - .catch(function(err) { - console.error('queue association remove error :', err); - }); - case 'openchannel': - return UserHasOpenchannelQueue - .destroy({ - where: { - UserId: agent.id, - OpenchannelQueueId: options.body.queueId - }, - transaction: options.transaction || null, - individualHooks: true - }) - .catch(function(err) { - console.error('queue association remove error :', err); - }); - case 'fax': - return UserHasFaxQueue - .destroy({ - where: { - UserId: agent.id, - FaxQueueId: options.body.queueId - }, - transaction: options.transaction || null, - individualHooks: true - }) - .catch(function(err) { - console.error('queue association remove error :', err); - }); - default: - } - } - } - - // HANDLE ENTITY NOT FOUND - function handleEntityNotFound(error) { - return function(entity) { - if (!entity) { - throw error; - } - return entity; - }; - } - - function onSave(action, options, ami) { - // START ACTION STATEMENT - switch (action.name) { - case 'pause': - // START HANDLE PAUSE - return Agent - .findById(options.body.agent) - .then(handleEntityNotFound({ - message: 'Unknown Agent' - })) - .then(handlePause(options, action)); - // END HANDLE PAUSE - case 'unpause': - // START HANDLE UNPAUSE - return Agent - .findById(options.body.agent) - .then(handleEntityNotFound({ - message: 'Unknown Agent' - })) - .then(handleUnpause(options, action)); - // END HANDLE UNPAUSE - - case 'login': - // START HANDLE LOGIN - return Agent - .findById(action.data1) - .then(handleEntityNotFound({ - message: 'Unknown Agent' - })) - .then(handleLogin(options, action)) - .then(function() { - return Agent - .findById(action.data1) - }) - // END HANDLE LOGING - - case 'logout': - // START HANDLE LOGOUT - return Agent - .findById(action.data1) - .then(handleEntityNotFound({ - message: 'Unknown Agent' - })) - .then(handleUnpause(options, action)) - .then(handleLogout(options, action)); - // END HANDLE LOGOUT - case 'QueueAdd': - // START HANDLE QUEUEADD - return Agent - .findById(options.body.agent) - .then(handleEntityNotFound({ - message: 'Unknown Agent' - })) - .then(handleQueueAdd(options, action)); - // END HANDLE QUEUEADD - case 'QueueRemove': - // START HANDLE QUEUEREMOVE - return Agent - .findById(options.body.agent) - .then(handleEntityNotFound({ - message: 'Unknown Agent' - })) - .then(handleQueueRemove(options, action)); - // END HANDLE QUEUEREMOVE - - default: - throw { - message: 'Unknown Action' - }; - } - // END ACTION STATEMENT - } - - return {}; -} - -// SOCKET IO CHILD CONNETION - - - -module.exports = Action; +var _0xd4ef=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6D\x6F\x6D\x65\x6E\x74","\x75\x74\x69\x6C","\x62\x6C\x75\x65\x62\x69\x72\x64","\x2E\x2E\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x55\x73\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x41\x63\x74\x69\x6F\x6E","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65","\x52\x65\x70\x6F\x72\x74\x4D\x65\x6D\x62\x65\x72","\x55\x73\x65\x72\x48\x61\x73\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65","\x55\x73\x65\x72\x48\x61\x73\x43\x68\x61\x74\x51\x75\x65\x75\x65","\x55\x73\x65\x72\x48\x61\x73\x4D\x61\x69\x6C\x51\x75\x65\x75\x65","\x55\x73\x65\x72\x48\x61\x73\x46\x61\x78\x51\x75\x65\x75\x65","\x55\x73\x65\x72\x48\x61\x73\x53\x6D\x73\x51\x75\x65\x75\x65","\x55\x73\x65\x72\x48\x61\x73\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65","\x41\x63\x74\x69\x6F\x6E\x20\x49\x6E\x69\x74\x69\x61\x6C\x69\x7A\x61\x74\x69\x6F\x6E\x2E\x2E\x2E","\x6C\x6F\x67","\x76\x6F\x69\x63\x65","\x63\x68\x61\x74","\x6D\x61\x69\x6C","\x66\x61\x78","\x73\x6D\x73","\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C","\x61\x67\x65\x6E\x74\x3A\x73\x61\x76\x65","\x65\x6D\x69\x74","\x25\x73\x3A\x25\x73","\x72\x6F\x6C\x65","\x69\x64","\x66\x6F\x72\x6D\x61\x74","\x74\x6F","\x75\x73\x65\x72\x73","\x61\x64\x6D\x69\x6E\x73","\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x6D\x65\x73\x73\x61\x67\x65","\x6F\x70\x74\x69\x6F\x6E\x73","\x41\x63\x74\x69\x6F\x6E\x2E\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x59\x59\x59\x59\x2D\x4D\x4D\x2D\x44\x44\x20\x48\x48\x3A\x6D\x6D\x3A\x73\x73","\x75\x70\x64\x61\x74\x65","\x70\x75\x73\x68","\x66\x6F\x72\x45\x61\x63\x68","\x61\x6C\x6C","\x74\x68\x65\x6E","\x63\x68\x61\x6E\x6E\x65\x6C","\x6D\x65\x6D\x62\x65\x72\x6E\x61\x6D\x65","\x69\x6E\x74\x65\x72\x66\x61\x63\x65","\x74\x79\x70\x65","\x66\x69\x6E\x64\x41\x6C\x6C","\x52\x65\x70\x6F\x72\x74\x4D\x65\x6D\x62\x65\x72\x2E\x62\x65\x66\x6F\x72\x65\x43\x72\x65\x61\x74\x65","\x65\x76\x74","\x6F\x6E","\x6E\x61\x6D\x65","\x25\x73\x2F\x25\x73","\x53\x49\x50","\x50\x41\x55\x53\x45","\x62\x6F\x64\x79","\x64\x61\x74\x61\x31","\x64\x61\x74\x61\x32","\x64\x61\x74\x61\x33","\x64\x61\x74\x61\x34","\x69\x6E\x74\x65\x72\x6E\x61\x6C","\x74\x72\x61\x6E\x73\x61\x63\x74\x69\x6F\x6E","\x62\x75\x6C\x6B\x43\x72\x65\x61\x74\x65","\x51\x75\x65\x75\x65\x50\x61\x75\x73\x65","\x61\x63\x74\x69\x6F\x6E","\x70\x72\x6F\x6D\x69\x73\x69\x66\x79","\x41\x6C\x72\x65\x61\x64\x79\x20\x50\x61\x75\x73\x65\x20\x4F\x66\x66","\x66\x69\x6E\x64\x4F\x6E\x65","\x25\x73\x25\x73","\x50\x61\x75\x73\x65","\x65\x72\x72\x6F\x72","\x63\x61\x74\x63\x68","\x6F\x6E\x6C\x69\x6E\x65","\x4C\x4F\x47\x49\x4E","\x51\x75\x65\x75\x65\x41\x64\x64","\x6C\x6F\x67\x69\x6E\x49\x6E\x50\x61\x75\x73\x65","\x44\x45\x46\x41\x55\x4C\x54\x20\x50\x41\x55\x53\x45","\x67\x65\x74\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65\x73","\x51\x75\x65\x75\x65\x52\x65\x6D\x6F\x76\x65","\x53\x49\x50\x2F\x25\x73","\x66\x69\x6E\x64\x4F\x72\x43\x72\x65\x61\x74\x65","\x71\x75\x65\x75\x65\x73","\x71\x75\x65\x75\x65\x20\x61\x73\x73\x6F\x63\x69\x61\x74\x69\x6F\x6E\x20\x72\x65\x6D\x6F\x76\x65\x20\x65\x72\x72\x6F\x72\x20\x3A","\x71\x75\x65\x75\x65","\x64\x65\x73\x74\x72\x6F\x79","\x71\x75\x65\x75\x65\x49\x64","\x55\x6E\x6B\x6E\x6F\x77\x6E\x20\x41\x67\x65\x6E\x74","\x61\x67\x65\x6E\x74","\x66\x69\x6E\x64\x42\x79\x49\x64","\x70\x61\x75\x73\x65","\x75\x6E\x70\x61\x75\x73\x65","\x6C\x6F\x67\x69\x6E","\x6C\x6F\x67\x6F\x75\x74","\x55\x6E\x6B\x6E\x6F\x77\x6E\x20\x41\x63\x74\x69\x6F\x6E","\x65\x78\x70\x6F\x72\x74\x73"];_0xd4ef[0];const moment=require(_0xd4ef[1]);const util=require(_0xd4ef[2]);const Promise=require(_0xd4ef[3]);const config=require(_0xd4ef[4]);const Agent=require(_0xd4ef[6])[_0xd4ef[5]];const ActionModel=require(_0xd4ef[6])[_0xd4ef[7]];const Sequelize=require(_0xd4ef[6])[_0xd4ef[8]];const VoiceQueue=require(_0xd4ef[6])[_0xd4ef[9]];const ReportMember=require(_0xd4ef[6])[_0xd4ef[10]];const UserHasVoiceQueue=require(_0xd4ef[6])[_0xd4ef[11]];const UserHasChatQueue=require(_0xd4ef[6])[_0xd4ef[12]];const UserHasMailQueue=require(_0xd4ef[6])[_0xd4ef[13]];const UserHasFaxQueue=require(_0xd4ef[6])[_0xd4ef[14]];const UserHasSmsQueue=require(_0xd4ef[6])[_0xd4ef[15]];const UserHasOpenchannelQueue=require(_0xd4ef[6])[_0xd4ef[16]];function Action(_0xbe49x11,_0xbe49x12){console[_0xd4ef[18]](_0xd4ef[17]);var _0xbe49x13=[_0xd4ef[19],_0xd4ef[20],_0xd4ef[21],_0xd4ef[22],_0xd4ef[23],_0xd4ef[24]];Agent[_0xd4ef[34]](function(_0xbe49x14,_0xbe49x15){_0xbe49x12[_0xd4ef[31]](util[_0xd4ef[30]](_0xd4ef[27],_0xbe49x14[_0xd4ef[28]],_0xbe49x14[_0xd4ef[29]]))[_0xd4ef[26]](_0xd4ef[25],_0xbe49x14);_0xbe49x12[_0xd4ef[31]](_0xd4ef[32])[_0xd4ef[26]](_0xd4ef[25],_0xbe49x14);_0xbe49x12[_0xd4ef[31]](_0xd4ef[33])[_0xd4ef[26]](_0xd4ef[25],_0xbe49x14)});ActionModel[_0xd4ef[35]](function(_0xbe49x14,_0xbe49x15){return _0xbe49x33(_0xbe49x14,_0xbe49x15,_0xbe49x11)});process[_0xd4ef[52]](_0xd4ef[36],function(_0xbe49x16){switch(_0xbe49x16[_0xd4ef[51]]){case _0xd4ef[38]:return _0xbe49x33(_0xbe49x16,_0xbe49x16[_0xd4ef[37]],_0xbe49x11);case _0xd4ef[50]:return ReportMember[_0xd4ef[49]]({where:{channel:_0xbe49x16[_0xd4ef[45]],membername:_0xbe49x16[_0xd4ef[46]],interface:_0xbe49x16[_0xd4ef[47]],type:_0xbe49x16[_0xd4ef[48]],exitAt:null}})[_0xd4ef[44]](function(_0xbe49x17){var _0xbe49x18=[];_0xbe49x17[_0xd4ef[42]](function(_0xbe49x19){_0xbe49x18[_0xd4ef[41]](_0xbe49x19[_0xd4ef[40]]({exitAt:moment()[_0xd4ef[30]](_0xd4ef[39])}))});return Promise[_0xd4ef[43]](_0xbe49x18)});default:}});function _0xbe49x1a(_0xbe49x15,_0xbe49x1b){return function(_0xbe49x1c){return Promise[_0xd4ef[67]](_0xbe49x11[_0xd4ef[66]])({action:_0xd4ef[65],interface:util[_0xd4ef[30]](_0xd4ef[54],_0xd4ef[55],_0xbe49x1c[_0xd4ef[53]]),paused:true,reason:_0xbe49x15[_0xd4ef[57]][_0xd4ef[48]]|| _0xbe49x1b[_0xd4ef[58]]})[_0xd4ef[44]](function(_0xbe49x1f){return _0xbe49x1c[_0xd4ef[40]]({voicePause:true,chatPause:true,mailPause:true,faxPause:true,smsPause:true,openchannelPause:true,pauseType:_0xbe49x15[_0xd4ef[57]][_0xd4ef[48]]|| _0xbe49x1b[_0xd4ef[58]],lastPauseAt:moment()[_0xd4ef[30]](_0xd4ef[39])},{transaction:_0xbe49x15[_0xd4ef[63]]|| null})})[_0xd4ef[44]](function(_0xbe49x1c){var _0xbe49x1d=[];_0xbe49x13[_0xd4ef[42]](function(_0xbe49x1e){_0xbe49x1d[_0xd4ef[41]]({channel:_0xbe49x1e,membername:_0xbe49x1c[_0xd4ef[53]],interface:util[_0xd4ef[30]](_0xd4ef[54],_0xd4ef[55],_0xbe49x1c[_0xd4ef[53]]),type:_0xd4ef[56],enterAt:moment()[_0xd4ef[30]](_0xd4ef[39]),data1:_0xbe49x15[_0xd4ef[57]][_0xd4ef[48]]|| _0xbe49x1b[_0xd4ef[58]],data2:_0xbe49x1b[_0xd4ef[59]],data3:_0xbe49x1b[_0xd4ef[60]],data4:_0xbe49x1b[_0xd4ef[61]],role:_0xbe49x1c[_0xd4ef[28]],internal:_0xbe49x1c[_0xd4ef[62]]})});return ReportMember[_0xd4ef[64]](_0xbe49x1d,{individualHooks:true,transaction:_0xbe49x15[_0xd4ef[63]]|| null})})}}function _0xbe49x20(_0xbe49x15,_0xbe49x1b){return function(_0xbe49x1c){if(!_0xbe49x15[_0xd4ef[57]]){_0xbe49x15[_0xd4ef[57]]= {}};switch(_0xbe49x15[_0xd4ef[57]][_0xd4ef[45]]){case _0xd4ef[19]:return Promise[_0xd4ef[67]](_0xbe49x11[_0xd4ef[66]])({action:_0xd4ef[65],interface:util[_0xd4ef[30]](_0xd4ef[54],_0xd4ef[55],_0xbe49x1c[_0xd4ef[53]]),paused:false,reason:_0xbe49x15[_0xd4ef[57]][_0xd4ef[48]]})[_0xd4ef[44]](function(){return _0xbe49x1c[_0xd4ef[40]]({voicePause:false},{transaction:_0xbe49x15[_0xd4ef[63]]|| null})})[_0xd4ef[44]](function(_0xbe49x1c){return ReportMember[_0xd4ef[69]]({where:{channel:_0xbe49x15[_0xd4ef[57]][_0xd4ef[45]],membername:_0xbe49x1c[_0xd4ef[53]],interface:util[_0xd4ef[30]](_0xd4ef[54],_0xd4ef[55],_0xbe49x1c[_0xd4ef[53]]),type:_0xd4ef[56],exitAt:null}})})[_0xd4ef[44]](_0xbe49x30({message:_0xd4ef[68]}))[_0xd4ef[44]](function(_0xbe49x21){return _0xbe49x21[_0xd4ef[40]]({exitAt:moment()[_0xd4ef[30]](_0xd4ef[39])},{individualHooks:true,transaction:_0xbe49x15[_0xd4ef[63]]|| null})})[_0xd4ef[44]](function(){return _0xbe49x1c});case _0xd4ef[20]:;case _0xd4ef[21]:;case _0xd4ef[22]:;case _0xd4ef[23]:;case _0xd4ef[24]:var _0xbe49x16={};_0xbe49x16[util[_0xd4ef[30]](_0xd4ef[70],_0xbe49x15[_0xd4ef[57]][_0xd4ef[45]],_0xd4ef[71])]= false;return _0xbe49x1c[_0xd4ef[40]](_0xbe49x16,{transaction:_0xbe49x15[_0xd4ef[63]]|| null})[_0xd4ef[44]](function(_0xbe49x1c){return ReportMember[_0xd4ef[69]]({where:{channel:_0xbe49x15[_0xd4ef[57]][_0xd4ef[45]],membername:_0xbe49x1c[_0xd4ef[53]],interface:util[_0xd4ef[30]](_0xd4ef[54],_0xd4ef[55],_0xbe49x1c[_0xd4ef[53]]),type:_0xd4ef[56],exitAt:null}})})[_0xd4ef[44]](_0xbe49x30({message:_0xd4ef[68]}))[_0xd4ef[44]](function(_0xbe49x21){return _0xbe49x21[_0xd4ef[40]]({exitAt:moment()[_0xd4ef[30]](_0xd4ef[39])},{individualHooks:true,transaction:_0xbe49x15[_0xd4ef[63]]|| null})})[_0xd4ef[44]](function(){return _0xbe49x1c});default:var _0xbe49x1b=Promise[_0xd4ef[67]](_0xbe49x11[_0xd4ef[66]]);return _0xbe49x1b({action:_0xd4ef[65],interface:util[_0xd4ef[30]](_0xd4ef[54],_0xd4ef[55],_0xbe49x1c[_0xd4ef[53]]),paused:false})[_0xd4ef[73]](function(_0xbe49x25){console[_0xd4ef[72]](_0xbe49x25)})[_0xd4ef[44]](function(){return _0xbe49x1c[_0xd4ef[40]]({voicePause:false,mailPause:false,chatPause:false,faxPause:false,smsPause:false,openchannelPause:false},{transaction:_0xbe49x15[_0xd4ef[63]]|| null})})[_0xd4ef[44]](function(_0xbe49x1c){return ReportMember[_0xd4ef[49]]({where:{membername:_0xbe49x1c[_0xd4ef[53]],interface:util[_0xd4ef[30]](_0xd4ef[54],_0xd4ef[55],_0xbe49x1c[_0xd4ef[53]]),type:_0xd4ef[56],exitAt:null}})})[_0xd4ef[44]](function(_0xbe49x22){var _0xbe49x23=[];_0xbe49x22[_0xd4ef[42]](function(_0xbe49x24){_0xbe49x23[_0xd4ef[41]](_0xbe49x24[_0xd4ef[40]]({exitAt:moment()[_0xd4ef[30]](_0xd4ef[39])}))});return Promise[_0xd4ef[43]](_0xbe49x23)})[_0xd4ef[44]](function(){return _0xbe49x1c})}}}function _0xbe49x26(_0xbe49x15,_0xbe49x1b){return function(_0xbe49x1c){if(!_0xbe49x1c[_0xd4ef[74]]){return _0xbe49x1c[_0xd4ef[79]]()[_0xd4ef[44]](function(_0xbe49x27){var _0xbe49x28=[];_0xbe49x27[_0xd4ef[42]](function(_0xbe49x29){_0xbe49x28[_0xd4ef[41]](_0xbe49x11[_0xd4ef[66]]({action:_0xd4ef[76],queue:_0xbe49x29[_0xd4ef[53]],interface:util[_0xd4ef[30]](_0xd4ef[54],_0xd4ef[55],_0xbe49x1c[_0xd4ef[53]]),membername:_0xbe49x1c[_0xd4ef[53]]}))});if(_0xbe49x1c[_0xd4ef[77]]){_0xbe49x28[_0xd4ef[41]]({action:_0xd4ef[65],interface:util[_0xd4ef[30]](_0xd4ef[54],_0xd4ef[55],_0xbe49x1c[_0xd4ef[53]]),paused:true,reason:_0xd4ef[78]})};return Promise[_0xd4ef[43]](_0xbe49x28)})[_0xd4ef[44]](function(_0xbe49x1f){var _0xbe49x1d=[];_0xbe49x13[_0xd4ef[42]](function(_0xbe49x1e){_0xbe49x1d[_0xd4ef[41]]({channel:_0xbe49x1e,membername:_0xbe49x1c[_0xd4ef[53]],interface:util[_0xd4ef[30]](_0xd4ef[54],_0xd4ef[55],_0xbe49x1c[_0xd4ef[53]]),type:_0xd4ef[75],enterAt:moment()[_0xd4ef[30]](_0xd4ef[39]),role:_0xbe49x1c[_0xd4ef[28]],internal:_0xbe49x1c[_0xd4ef[62]]})});return ReportMember[_0xd4ef[64]](_0xbe49x1d,{individualHooks:true})})}}}function _0xbe49x2a(_0xbe49x15,_0xbe49x1b){return function(_0xbe49x1c){return VoiceQueue[_0xd4ef[49]]()[_0xd4ef[44]](function(_0xbe49x27){var _0xbe49x28=[];_0xbe49x27[_0xd4ef[42]](function(_0xbe49x29){_0xbe49x28[_0xd4ef[41]](_0xbe49x11[_0xd4ef[66]]({action:_0xd4ef[80],queue:_0xbe49x29[_0xd4ef[53]],interface:util[_0xd4ef[30]](_0xd4ef[54],_0xd4ef[55],_0xbe49x1c[_0xd4ef[53]])}))});return Promise[_0xd4ef[43]](_0xbe49x28)[_0xd4ef[73]](function(_0xbe49x25){console[_0xd4ef[72]](_0xbe49x25)})})[_0xd4ef[44]](function(_0xbe49x1f){return ReportMember[_0xd4ef[49]]({where:{membername:_0xbe49x1c[_0xd4ef[53]],interface:util[_0xd4ef[30]](_0xd4ef[54],_0xd4ef[55],_0xbe49x1c[_0xd4ef[53]]),type:_0xd4ef[75],exitAt:null}})})[_0xd4ef[44]](function(_0xbe49x22){var _0xbe49x23=[];_0xbe49x22[_0xd4ef[42]](function(_0xbe49x24){_0xbe49x23[_0xd4ef[41]](_0xbe49x24[_0xd4ef[40]]({exitAt:moment()[_0xd4ef[30]](_0xd4ef[39])}))});return Promise[_0xd4ef[43]](_0xbe49x23)})}}function _0xbe49x2b(_0xbe49x15,_0xbe49x1b){return function(_0xbe49x1c){var _0xbe49x2c=[];switch(_0xbe49x15[_0xd4ef[57]][_0xd4ef[45]]){case _0xd4ef[19]:_0xbe49x15[_0xd4ef[57]][_0xd4ef[83]][_0xd4ef[42]](function(_0xbe49x2d){_0xbe49x2c[_0xd4ef[41]](UserHasVoiceQueue[_0xd4ef[82]]({where:{UserId:_0xbe49x1c[_0xd4ef[29]],queue:_0xbe49x2d},defaults:{queue:_0xbe49x2d,location:util[_0xd4ef[30]](_0xd4ef[81],_0xbe49x1c[_0xd4ef[53]]),membername:_0xbe49x1c[_0xd4ef[53]],UserId:_0xbe49x1c[_0xd4ef[29]]},transaction:_0xbe49x15[_0xd4ef[63]]|| null,individualHooks:true}))});return Promise[_0xd4ef[43]](_0xbe49x2c)[_0xd4ef[44]](function(){var _0xbe49x28=[];_0xbe49x15[_0xd4ef[57]][_0xd4ef[83]][_0xd4ef[42]](function(_0xbe49x2d){_0xbe49x28[_0xd4ef[41]](_0xbe49x11[_0xd4ef[66]]({action:_0xd4ef[76],queue:_0xbe49x2d,interface:util[_0xd4ef[30]](_0xd4ef[54],_0xd4ef[55],_0xbe49x1c[_0xd4ef[53]]),membername:_0xbe49x1c[_0xd4ef[53]]}))});return Promise[_0xd4ef[43]](_0xbe49x28)})[_0xd4ef[73]](function(_0xbe49x25){console[_0xd4ef[72]](_0xbe49x25)});case _0xd4ef[20]:_0xbe49x15[_0xd4ef[57]][_0xd4ef[83]][_0xd4ef[42]](function(_0xbe49x2d){_0xbe49x2c[_0xd4ef[41]](UserHasChatQueue[_0xd4ef[82]]({where:{UserId:_0xbe49x1c[_0xd4ef[29]],ChatQueueId:_0xbe49x2d[_0xd4ef[29]]},defaults:{ChatQueueId:_0xbe49x2d[_0xd4ef[29]],queue:_0xbe49x2d[_0xd4ef[53]],UserId:_0xbe49x1c[_0xd4ef[29]]},transaction:_0xbe49x15[_0xd4ef[63]]|| null}))});return Promise[_0xd4ef[43]](_0xbe49x2c)[_0xd4ef[73]](function(_0xbe49x25){console[_0xd4ef[18]](_0xbe49x25)});case _0xd4ef[21]:_0xbe49x15[_0xd4ef[57]][_0xd4ef[83]][_0xd4ef[42]](function(_0xbe49x2d){_0xbe49x2c[_0xd4ef[41]](UserHasMailQueue[_0xd4ef[82]]({where:{UserId:_0xbe49x1c[_0xd4ef[29]],MailQueueId:_0xbe49x2d[_0xd4ef[29]]},defaults:{MailQueueId:_0xbe49x2d[_0xd4ef[29]],queue:_0xbe49x2d[_0xd4ef[53]],UserId:_0xbe49x1c[_0xd4ef[29]]},transaction:_0xbe49x15[_0xd4ef[63]]|| null}))});return Promise[_0xd4ef[43]](_0xbe49x2c)[_0xd4ef[73]](function(_0xbe49x25){console[_0xd4ef[18]](_0xbe49x25)});case _0xd4ef[23]:_0xbe49x15[_0xd4ef[57]][_0xd4ef[83]][_0xd4ef[42]](function(_0xbe49x2d){_0xbe49x2c[_0xd4ef[41]](UserHasSmsQueue[_0xd4ef[82]]({where:{UserId:_0xbe49x1c[_0xd4ef[29]],SmsQueueId:_0xbe49x2d[_0xd4ef[29]]},defaults:{SmsQueueId:_0xbe49x2d[_0xd4ef[29]],queue:_0xbe49x2d[_0xd4ef[53]],UserId:_0xbe49x1c[_0xd4ef[29]]},transaction:_0xbe49x15[_0xd4ef[63]]|| null}))});return Promise[_0xd4ef[43]](_0xbe49x2c)[_0xd4ef[73]](function(_0xbe49x25){console[_0xd4ef[18]](_0xbe49x25)});case _0xd4ef[24]:_0xbe49x15[_0xd4ef[57]][_0xd4ef[83]][_0xd4ef[42]](function(_0xbe49x2d){_0xbe49x2c[_0xd4ef[41]](UserHasOpenchannelQueue[_0xd4ef[82]]({where:{UserId:_0xbe49x1c[_0xd4ef[29]],OpenchannelQueueId:_0xbe49x2d[_0xd4ef[29]]},defaults:{OpenchannelQueueId:_0xbe49x2d[_0xd4ef[29]],queue:_0xbe49x2d[_0xd4ef[53]],UserId:_0xbe49x1c[_0xd4ef[29]]},transaction:_0xbe49x15[_0xd4ef[63]]|| null}))});return Promise[_0xd4ef[43]](_0xbe49x2c)[_0xd4ef[73]](function(_0xbe49x25){console[_0xd4ef[18]](_0xbe49x25)});case _0xd4ef[22]:_0xbe49x15[_0xd4ef[57]][_0xd4ef[83]][_0xd4ef[42]](function(_0xbe49x2d){_0xbe49x2c[_0xd4ef[41]](UserHasFaxQueue[_0xd4ef[82]]({where:{UserId:_0xbe49x1c[_0xd4ef[29]],FaxQueueId:_0xbe49x2d[_0xd4ef[29]]},defaults:{faxQueueId:_0xbe49x2d[_0xd4ef[29]],queue:_0xbe49x2d[_0xd4ef[53]],UserId:_0xbe49x1c[_0xd4ef[29]]},transaction:_0xbe49x15[_0xd4ef[63]]|| null}))});return Promise[_0xd4ef[43]](_0xbe49x2c)[_0xd4ef[73]](function(_0xbe49x25){console[_0xd4ef[18]](_0xbe49x25)});default:}}}function _0xbe49x2e(_0xbe49x15,_0xbe49x1b){return function(_0xbe49x1c){switch(_0xbe49x15[_0xd4ef[57]][_0xd4ef[45]]){case _0xd4ef[19]:return UserHasVoiceQueue[_0xd4ef[86]]({where:{UserId:_0xbe49x1c[_0xd4ef[29]],queue:_0xbe49x15[_0xd4ef[57]][_0xd4ef[85]]},transaction:_0xbe49x15[_0xd4ef[63]]|| null,individualHooks:true})[_0xd4ef[44]](function(){var _0xbe49x2f=Promise[_0xd4ef[67]](_0xbe49x11[_0xd4ef[66]]);return _0xbe49x2f({action:_0xd4ef[80],queue:_0xbe49x15[_0xd4ef[57]][_0xd4ef[85]],interface:util[_0xd4ef[30]](_0xd4ef[54],_0xd4ef[55],_0xbe49x1c[_0xd4ef[53]])})})[_0xd4ef[73]](function(_0xbe49x25){console[_0xd4ef[72]](_0xd4ef[84],_0xbe49x25)});case _0xd4ef[20]:return UserHasChatQueue[_0xd4ef[86]]({where:{UserId:_0xbe49x1c[_0xd4ef[29]],ChatQueueId:_0xbe49x15[_0xd4ef[57]][_0xd4ef[87]]},transaction:_0xbe49x15[_0xd4ef[63]]|| null,individualHooks:true})[_0xd4ef[73]](function(_0xbe49x25){console[_0xd4ef[72]](_0xd4ef[84],_0xbe49x25)});case _0xd4ef[21]:return UserHasMailQueue[_0xd4ef[86]]({where:{UserId:_0xbe49x1c[_0xd4ef[29]],MailQueueId:_0xbe49x15[_0xd4ef[57]][_0xd4ef[87]]},transaction:_0xbe49x15[_0xd4ef[63]]|| null,individualHooks:true})[_0xd4ef[73]](function(_0xbe49x25){console[_0xd4ef[72]](_0xd4ef[84],_0xbe49x25)});case _0xd4ef[23]:return UserHasSmsQueue[_0xd4ef[86]]({where:{UserId:_0xbe49x1c[_0xd4ef[29]],SmsQueueId:_0xbe49x15[_0xd4ef[57]][_0xd4ef[87]]},transaction:_0xbe49x15[_0xd4ef[63]]|| null,individualHooks:true})[_0xd4ef[73]](function(_0xbe49x25){console[_0xd4ef[72]](_0xd4ef[84],_0xbe49x25)});case _0xd4ef[24]:return UserHasOpenchannelQueue[_0xd4ef[86]]({where:{UserId:_0xbe49x1c[_0xd4ef[29]],OpenchannelQueueId:_0xbe49x15[_0xd4ef[57]][_0xd4ef[87]]},transaction:_0xbe49x15[_0xd4ef[63]]|| null,individualHooks:true})[_0xd4ef[73]](function(_0xbe49x25){console[_0xd4ef[72]](_0xd4ef[84],_0xbe49x25)});case _0xd4ef[22]:return UserHasFaxQueue[_0xd4ef[86]]({where:{UserId:_0xbe49x1c[_0xd4ef[29]],FaxQueueId:_0xbe49x15[_0xd4ef[57]][_0xd4ef[87]]},transaction:_0xbe49x15[_0xd4ef[63]]|| null,individualHooks:true})[_0xd4ef[73]](function(_0xbe49x25){console[_0xd4ef[72]](_0xd4ef[84],_0xbe49x25)});default:}}}function _0xbe49x30(_0xbe49x31){return function(_0xbe49x32){if(!_0xbe49x32){throw _0xbe49x31};return _0xbe49x32}}function _0xbe49x33(_0xbe49x1b,_0xbe49x15,_0xbe49x11){switch(_0xbe49x1b[_0xd4ef[53]]){case _0xd4ef[91]:return Agent[_0xd4ef[90]](_0xbe49x15[_0xd4ef[57]][_0xd4ef[89]])[_0xd4ef[44]](_0xbe49x30({message:_0xd4ef[88]}))[_0xd4ef[44]](_0xbe49x1a(_0xbe49x15,_0xbe49x1b));case _0xd4ef[92]:return Agent[_0xd4ef[90]](_0xbe49x15[_0xd4ef[57]][_0xd4ef[89]])[_0xd4ef[44]](_0xbe49x30({message:_0xd4ef[88]}))[_0xd4ef[44]](_0xbe49x20(_0xbe49x15,_0xbe49x1b));case _0xd4ef[93]:return Agent[_0xd4ef[90]](_0xbe49x1b[_0xd4ef[58]])[_0xd4ef[44]](_0xbe49x30({message:_0xd4ef[88]}))[_0xd4ef[44]](_0xbe49x26(_0xbe49x15,_0xbe49x1b))[_0xd4ef[44]](function(){return Agent[_0xd4ef[90]](_0xbe49x1b[_0xd4ef[58]])});case _0xd4ef[94]:return Agent[_0xd4ef[90]](_0xbe49x1b[_0xd4ef[58]])[_0xd4ef[44]](_0xbe49x30({message:_0xd4ef[88]}))[_0xd4ef[44]](_0xbe49x20(_0xbe49x15,_0xbe49x1b))[_0xd4ef[44]](_0xbe49x2a(_0xbe49x15,_0xbe49x1b));case _0xd4ef[76]:return Agent[_0xd4ef[90]](_0xbe49x15[_0xd4ef[57]][_0xd4ef[89]])[_0xd4ef[44]](_0xbe49x30({message:_0xd4ef[88]}))[_0xd4ef[44]](_0xbe49x2b(_0xbe49x15,_0xbe49x1b));case _0xd4ef[80]:return Agent[_0xd4ef[90]](_0xbe49x15[_0xd4ef[57]][_0xd4ef[89]])[_0xd4ef[44]](_0xbe49x30({message:_0xd4ef[88]}))[_0xd4ef[44]](_0xbe49x2e(_0xbe49x15,_0xbe49x1b));default:throw {message:_0xd4ef[95]}}}return {}}module[_0xd4ef[96]]= Action \ No newline at end of file diff --git a/server/config/ami/acw.js b/server/config/ami/acw.js index fbda450..444e62f 100644 --- a/server/config/ami/acw.js +++ b/server/config/ami/acw.js @@ -1,162 +1 @@ -'use strict'; - -var util = require('util'); -var moment = require('moment'); - -var _ = require('lodash'); -var VoiceQueue = require('../../models').VoiceQueue; -var Agent = require('../../models').User; -var Action = require('../../models').Action; -var ReportAgent = require('../../models').ReportAgent; -var _voiceQueues; -var _agents; -var activeAcw = {}; - -function AfterCallWork() { - console.log('ACW Initialization...'); - VoiceQueue - .findAll() - .then(function(voiceQueues) { - _voiceQueues = voiceQueues; - - synchCollection(VoiceQueue, _voiceQueues, 'name'); - return Agent - .scope('agent') - .findAll(); - }) - .then(function(agents) { - _agents = agents; - - synchCollection(Agent, _agents, 'id'); - - Action.afterCreate(function(doc, options) { - return onSave(doc, options); - }); - }) - .catch(function(err) { - console.log(err); - }); -} - -AfterCallWork.prototype.agentcomplete = function(evt) { - var queueIsAcw = _.find(_voiceQueues, { - name: evt.queue, - acw: true - }); - if (queueIsAcw) { - var agent = _.find(_agents, { - name: evt.membername - }); - Action - .create({ - name: 'pause', - data1: 'ACW', - data2: queueIsAcw.acwTimeout, - data3: evt.uniqueid, - data4: evt.queue - }, { - body: { - agent: agent.id, - type: 'ACW' - }, - raw: true - }) - .then(function() { - console.log('PAUSED BY ACW'); - activeAcw[agent.id] = { - uniqueid: evt.uniqueid, - destuniqueid: evt.destuniqueid, - acwTime: queueIsAcw.acwTimeout, - acwAt: moment(), - unpause: false - }; - - activeAcw[agent.id].timeout = setTimeout(function() { - console.log('UNPAUSED BY ACW'); - activeAcw[agent.id].unpause = true; - return Action - .create({ - name: 'unpause', - data1: 'ACW', - data2: queueIsAcw.acwTimeout, - data3: evt.uniqueid, - data4: evt.queue - }, { - body: { - agent: agent.id, - type: 'ACW' - }, - raw: true - }) - .catch(function(err) { - console.log(err); - }); - }, queueIsAcw.acwTimeout * 1000); - }) - .catch(function(err) { - console.log(err); - }); - } -} - -function onSave(doc, options) { - var acwTime; - if ((doc.name === 'pause' || doc.name === 'unpause') && activeAcw[options.body.agent]) { - if (doc.name === 'unpause' && activeAcw[options.body.agent].unpause) { - acwTime = activeAcw[options.body.agent].acwTime; - } else { - clearTimeout(activeAcw[options.body.agent].timeout); - acwTime = moment.duration(moment() - activeAcw[options.body.agent].acwAt).asSeconds(); - } - return ReportAgent - .update({ - agentacw: true, - acwtime: acwTime - }, { - where: { - uniqueid: activeAcw[options.body.agent].uniqueid, - destuniqueid: activeAcw[options.body.agent].destuniqueid - }, - // transaction: options.transaction, - individualHooks: true, - raw: true - }) - .catch(function(err) { - console.log(err); - }) - .finally(function() { - delete activeAcw[options.body.agent]; - }); - } -} - -function synchCollection(model, array, uniqueProperty) { - var condition = {}; - - model.afterCreate(function(doc, options) { - condition[uniqueProperty] = doc[uniqueProperty] - updateCollection(array, doc, condition); - }); - - model.afterUpdate(function(doc, options) { - condition[uniqueProperty] = doc[uniqueProperty] - updateCollection(array, doc, condition); - }); - - model.afterDestroy(function(doc, options) { - condition[uniqueProperty] = doc[uniqueProperty] - _.remove(array, condition); - }); -} - -function updateCollection(collection, doc, condition) { - var oldItem = _.find(collection, condition); - var index = collection.indexOf(oldItem); - if (oldItem) { - _.merge(collection[index], doc); - } else { - collection.unshift(doc); - } -} - -module.exports = AfterCallWork; +var _0xcd67=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x75\x74\x69\x6C","\x6D\x6F\x6D\x65\x6E\x74","\x6C\x6F\x64\x61\x73\x68","\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x55\x73\x65\x72","\x41\x63\x74\x69\x6F\x6E","\x52\x65\x70\x6F\x72\x74\x41\x67\x65\x6E\x74","\x41\x43\x57\x20\x49\x6E\x69\x74\x69\x61\x6C\x69\x7A\x61\x74\x69\x6F\x6E\x2E\x2E\x2E","\x6C\x6F\x67","\x63\x61\x74\x63\x68","\x69\x64","\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x74\x68\x65\x6E","\x6E\x61\x6D\x65","\x66\x69\x6E\x64\x41\x6C\x6C","\x61\x67\x65\x6E\x74","\x73\x63\x6F\x70\x65","\x61\x67\x65\x6E\x74\x63\x6F\x6D\x70\x6C\x65\x74\x65","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x71\x75\x65\x75\x65","\x66\x69\x6E\x64","\x6D\x65\x6D\x62\x65\x72\x6E\x61\x6D\x65","\x50\x41\x55\x53\x45\x44\x20\x42\x59\x20\x41\x43\x57","\x75\x6E\x69\x71\x75\x65\x69\x64","\x64\x65\x73\x74\x75\x6E\x69\x71\x75\x65\x69\x64","\x61\x63\x77\x54\x69\x6D\x65\x6F\x75\x74","\x74\x69\x6D\x65\x6F\x75\x74","\x55\x4E\x50\x41\x55\x53\x45\x44\x20\x42\x59\x20\x41\x43\x57","\x75\x6E\x70\x61\x75\x73\x65","\x41\x43\x57","\x63\x72\x65\x61\x74\x65","\x70\x61\x75\x73\x65","\x62\x6F\x64\x79","\x61\x63\x77\x54\x69\x6D\x65","\x61\x73\x53\x65\x63\x6F\x6E\x64\x73","\x61\x63\x77\x41\x74","\x64\x75\x72\x61\x74\x69\x6F\x6E","\x66\x69\x6E\x61\x6C\x6C\x79","\x75\x70\x64\x61\x74\x65","\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65","\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79","\x69\x6E\x64\x65\x78\x4F\x66","\x6D\x65\x72\x67\x65","\x75\x6E\x73\x68\x69\x66\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0xcd67[0];var util=require(_0xcd67[1]);var moment=require(_0xcd67[2]);var _=require(_0xcd67[3]);var VoiceQueue=require(_0xcd67[5])[_0xcd67[4]];var Agent=require(_0xcd67[5])[_0xcd67[6]];var Action=require(_0xcd67[5])[_0xcd67[7]];var ReportAgent=require(_0xcd67[5])[_0xcd67[8]];var _voiceQueues;var _agents;var activeAcw={};function AfterCallWork(){console[_0xcd67[10]](_0xcd67[9]);VoiceQueue[_0xcd67[16]]()[_0xcd67[14]](function(_0xdedbx10){_voiceQueues= _0xdedbx10;synchCollection(VoiceQueue,_voiceQueues,_0xcd67[15]);return Agent[_0xcd67[18]](_0xcd67[17])[_0xcd67[16]]()})[_0xcd67[14]](function(_0xdedbxd){_agents= _0xdedbxd;synchCollection(Agent,_agents,_0xcd67[12]);Action[_0xcd67[13]](function(_0xdedbxe,_0xdedbxf){return onSave(_0xdedbxe,_0xdedbxf)})})[_0xcd67[11]](function(_0xdedbxc){console[_0xcd67[10]](_0xdedbxc)})}AfterCallWork[_0xcd67[20]][_0xcd67[19]]= function(_0xdedbx11){var _0xdedbx12=_[_0xcd67[22]](_voiceQueues,{name:_0xdedbx11[_0xcd67[21]],acw:true});if(_0xdedbx12){var _0xdedbx13=_[_0xcd67[22]](_agents,{name:_0xdedbx11[_0xcd67[23]]});Action[_0xcd67[32]]({name:_0xcd67[33],data1:_0xcd67[31],data2:_0xdedbx12[_0xcd67[27]],data3:_0xdedbx11[_0xcd67[25]],data4:_0xdedbx11[_0xcd67[21]]},{body:{agent:_0xdedbx13[_0xcd67[12]],type:_0xcd67[31]},raw:true})[_0xcd67[14]](function(){console[_0xcd67[10]](_0xcd67[24]);activeAcw[_0xdedbx13[_0xcd67[12]]]= {uniqueid:_0xdedbx11[_0xcd67[25]],destuniqueid:_0xdedbx11[_0xcd67[26]],acwTime:_0xdedbx12[_0xcd67[27]],acwAt:moment(),unpause:false};activeAcw[_0xdedbx13[_0xcd67[12]]][_0xcd67[28]]= setTimeout(function(){console[_0xcd67[10]](_0xcd67[29]);activeAcw[_0xdedbx13[_0xcd67[12]]][_0xcd67[30]]= true;return Action[_0xcd67[32]]({name:_0xcd67[30],data1:_0xcd67[31],data2:_0xdedbx12[_0xcd67[27]],data3:_0xdedbx11[_0xcd67[25]],data4:_0xdedbx11[_0xcd67[21]]},{body:{agent:_0xdedbx13[_0xcd67[12]],type:_0xcd67[31]},raw:true})[_0xcd67[11]](function(_0xdedbxc){console[_0xcd67[10]](_0xdedbxc)})},_0xdedbx12[_0xcd67[27]]* 1000)})[_0xcd67[11]](function(_0xdedbxc){console[_0xcd67[10]](_0xdedbxc)})}};function onSave(_0xdedbxe,_0xdedbxf){var _0xdedbx15;if((_0xdedbxe[_0xcd67[15]]=== _0xcd67[33]|| _0xdedbxe[_0xcd67[15]]=== _0xcd67[30])&& activeAcw[_0xdedbxf[_0xcd67[34]][_0xcd67[17]]]){if(_0xdedbxe[_0xcd67[15]]=== _0xcd67[30]&& activeAcw[_0xdedbxf[_0xcd67[34]][_0xcd67[17]]][_0xcd67[30]]){_0xdedbx15= activeAcw[_0xdedbxf[_0xcd67[34]][_0xcd67[17]]][_0xcd67[35]]}else {clearTimeout(activeAcw[_0xdedbxf[_0xcd67[34]][_0xcd67[17]]][_0xcd67[28]]);_0xdedbx15= moment[_0xcd67[38]](moment()- activeAcw[_0xdedbxf[_0xcd67[34]][_0xcd67[17]]][_0xcd67[37]])[_0xcd67[36]]()};return ReportAgent[_0xcd67[40]]({agentacw:true,acwtime:_0xdedbx15},{where:{uniqueid:activeAcw[_0xdedbxf[_0xcd67[34]][_0xcd67[17]]][_0xcd67[25]],destuniqueid:activeAcw[_0xdedbxf[_0xcd67[34]][_0xcd67[17]]][_0xcd67[26]]},individualHooks:true,raw:true})[_0xcd67[11]](function(_0xdedbxc){console[_0xcd67[10]](_0xdedbxc)})[_0xcd67[39]](function(){delete activeAcw[_0xdedbxf[_0xcd67[34]][_0xcd67[17]]]})}}function synchCollection(_0xdedbx17,_0xdedbx18,_0xdedbx19){var _0xdedbx1a={};_0xdedbx17[_0xcd67[13]](function(_0xdedbxe,_0xdedbxf){_0xdedbx1a[_0xdedbx19]= _0xdedbxe[_0xdedbx19];updateCollection(_0xdedbx18,_0xdedbxe,_0xdedbx1a)});_0xdedbx17[_0xcd67[41]](function(_0xdedbxe,_0xdedbxf){_0xdedbx1a[_0xdedbx19]= _0xdedbxe[_0xdedbx19];updateCollection(_0xdedbx18,_0xdedbxe,_0xdedbx1a)});_0xdedbx17[_0xcd67[43]](function(_0xdedbxe,_0xdedbxf){_0xdedbx1a[_0xdedbx19]= _0xdedbxe[_0xdedbx19];_[_0xcd67[42]](_0xdedbx18,_0xdedbx1a)})}function updateCollection(_0xdedbx1c,_0xdedbxe,_0xdedbx1a){var _0xdedbx1d=_[_0xcd67[22]](_0xdedbx1c,_0xdedbx1a);var _0xdedbx1e=_0xdedbx1c[_0xcd67[44]](_0xdedbx1d);if(_0xdedbx1d){_[_0xcd67[45]](_0xdedbx1c[_0xdedbx1e],_0xdedbxe)}else {_0xdedbx1c[_0xcd67[46]](_0xdedbxe)}}module[_0xcd67[47]]= AfterCallWork \ No newline at end of file diff --git a/server/config/ami/agent.js b/server/config/ami/agent.js index 0f19760..320ddff 100644 --- a/server/config/ami/agent.js +++ b/server/config/ami/agent.js @@ -1,119 +1 @@ -'use strict'; - -const _ = require('lodash'); -const moment = require('moment'); -const ReportAgent = require('../../models').ReportAgent; -const util = require('util'); - -function Agent(io) { - console.log('Agent Initialization...'); - ReportAgent.afterCreate(function(doc, options) { - doc.dataValues.evt = 'ReportAgent.afterCreate'; - process.send(doc.dataValues); - io.to(util.format('agent:%s', doc.membername)).emit('report_agent:save', doc); - }); - - ReportAgent.afterUpdate(function(doc, options) { - doc.dataValues.evt = 'ReportAgent.afterUpdate'; - doc.dataValues.changed = _.keyBy(doc.changed()); - process.send(doc.dataValues); - io.to(util.format('agent:%s', doc.membername)).emit('report_agent:update', doc); - }); -} - -Agent.prototype.called = function(evt) { - evt.lastevent = 'called'; - evt.agentcalledAt = moment().format("YYYY-MM-DD HH:mm:ss"); - return createAgent(evt); -} - -Agent.prototype.connect = function(evt) { - evt.lastevent = 'connect'; - evt.agentconnectAt = moment().format("YYYY-MM-DD HH:mm:ss"); - updateAgents(evt); - updateAgents({ - agentringnoanswer: true, - agentringnoanswerAt: moment().format("YYYY-MM-DD HH:mm:ss"), - reason: 'answered_elsewhere', - lastevent: 'answered_elsewhere', - answeredelsewheredestinationuniqueid: evt.destuniqueid, - answeredelsewheremembername: evt.membername - }, { - uniqueid: evt.uniqueid, - destuniqueid: { - $ne: evt.destuniqueid - }, - reason: null - }); -} - -Agent.prototype.complete = function(evt) { - evt.lastevent = 'complete'; - evt.agentcomplete = true; - evt.agentcompleteAt = moment().format("YYYY-MM-DD HH:mm:ss"); - return updateAgents(evt); -} - -Agent.prototype.dump = function(evt) { - evt.lastevent = 'dump'; - - evt.agentdump = true; - evt.agentdumpAt = moment().format("YYYY-MM-DD HH:mm:ss"); - return updateAgents(evt); -} - -Agent.prototype.ringnoanswer = function(evt) { - evt.lastevent = 'rejected'; - evt.agentringnoanswer = true; - evt.agentringnoanswerAt = moment().format("YYYY-MM-DD HH:mm:ss"); - evt.reason = 'rejected'; - return updateAgents(evt); -} - -Agent.prototype.callerabandon = function(evt) { - evt.lastevent = 'abandoned'; - evt.agentringnoanswer = true; - evt.agentringnoanswerAt = moment().format("YYYY-MM-DD HH:mm:ss"); - evt.reason = 'abandoned'; - return updateAgents(evt, { - uniqueid: evt.uniqueid, - reason: null - }); -} - -function createAgent(evt) { - return ReportAgent - .create(evt, { - raw: true - }) - .then(function(data) { - console.log('[report] agent create'); - }) - .catch(function(err) { - console.error('[report] agent ' + err); - }); -} - -function updateAgents(evt, where) { - return ReportAgent - .findOne({ - where: where || { - uniqueid: evt.uniqueid, - destuniqueid: evt.destuniqueid - }, - }) - .then(function(reportAgent) { - if (reportAgent) { - return reportAgent - .update(evt); - } - }) - .then(function(data) { - console.log('[agent] agent update'); - }) - .catch(function(err) { - console.error('[agent] agent error: ' + err); - }); -} - -module.exports = Agent; +var _0x88f4=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x6D\x6F\x6D\x65\x6E\x74","\x52\x65\x70\x6F\x72\x74\x41\x67\x65\x6E\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x75\x74\x69\x6C","\x41\x67\x65\x6E\x74\x20\x49\x6E\x69\x74\x69\x61\x6C\x69\x7A\x61\x74\x69\x6F\x6E\x2E\x2E\x2E","\x6C\x6F\x67","\x65\x76\x74","\x64\x61\x74\x61\x56\x61\x6C\x75\x65\x73","\x52\x65\x70\x6F\x72\x74\x41\x67\x65\x6E\x74\x2E\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x73\x65\x6E\x64","\x72\x65\x70\x6F\x72\x74\x5F\x61\x67\x65\x6E\x74\x3A\x73\x61\x76\x65","\x65\x6D\x69\x74","\x61\x67\x65\x6E\x74\x3A\x25\x73","\x6D\x65\x6D\x62\x65\x72\x6E\x61\x6D\x65","\x66\x6F\x72\x6D\x61\x74","\x74\x6F","\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x52\x65\x70\x6F\x72\x74\x41\x67\x65\x6E\x74\x2E\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x63\x68\x61\x6E\x67\x65\x64","\x6B\x65\x79\x42\x79","\x72\x65\x70\x6F\x72\x74\x5F\x61\x67\x65\x6E\x74\x3A\x75\x70\x64\x61\x74\x65","\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x63\x61\x6C\x6C\x65\x64","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x6C\x61\x73\x74\x65\x76\x65\x6E\x74","\x61\x67\x65\x6E\x74\x63\x61\x6C\x6C\x65\x64\x41\x74","\x59\x59\x59\x59\x2D\x4D\x4D\x2D\x44\x44\x20\x48\x48\x3A\x6D\x6D\x3A\x73\x73","\x63\x6F\x6E\x6E\x65\x63\x74","\x61\x67\x65\x6E\x74\x63\x6F\x6E\x6E\x65\x63\x74\x41\x74","\x61\x6E\x73\x77\x65\x72\x65\x64\x5F\x65\x6C\x73\x65\x77\x68\x65\x72\x65","\x64\x65\x73\x74\x75\x6E\x69\x71\x75\x65\x69\x64","\x75\x6E\x69\x71\x75\x65\x69\x64","\x63\x6F\x6D\x70\x6C\x65\x74\x65","\x61\x67\x65\x6E\x74\x63\x6F\x6D\x70\x6C\x65\x74\x65","\x61\x67\x65\x6E\x74\x63\x6F\x6D\x70\x6C\x65\x74\x65\x41\x74","\x64\x75\x6D\x70","\x61\x67\x65\x6E\x74\x64\x75\x6D\x70","\x61\x67\x65\x6E\x74\x64\x75\x6D\x70\x41\x74","\x72\x69\x6E\x67\x6E\x6F\x61\x6E\x73\x77\x65\x72","\x72\x65\x6A\x65\x63\x74\x65\x64","\x61\x67\x65\x6E\x74\x72\x69\x6E\x67\x6E\x6F\x61\x6E\x73\x77\x65\x72","\x61\x67\x65\x6E\x74\x72\x69\x6E\x67\x6E\x6F\x61\x6E\x73\x77\x65\x72\x41\x74","\x72\x65\x61\x73\x6F\x6E","\x63\x61\x6C\x6C\x65\x72\x61\x62\x61\x6E\x64\x6F\x6E","\x61\x62\x61\x6E\x64\x6F\x6E\x65\x64","\x5B\x72\x65\x70\x6F\x72\x74\x5D\x20\x61\x67\x65\x6E\x74\x20","\x65\x72\x72\x6F\x72","\x63\x61\x74\x63\x68","\x5B\x72\x65\x70\x6F\x72\x74\x5D\x20\x61\x67\x65\x6E\x74\x20\x63\x72\x65\x61\x74\x65","\x74\x68\x65\x6E","\x63\x72\x65\x61\x74\x65","\x5B\x61\x67\x65\x6E\x74\x5D\x20\x61\x67\x65\x6E\x74\x20\x65\x72\x72\x6F\x72\x3A\x20","\x5B\x61\x67\x65\x6E\x74\x5D\x20\x61\x67\x65\x6E\x74\x20\x75\x70\x64\x61\x74\x65","\x75\x70\x64\x61\x74\x65","\x66\x69\x6E\x64\x4F\x6E\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0x88f4[0];const _=require(_0x88f4[1]);const moment=require(_0x88f4[2]);const ReportAgent=require(_0x88f4[4])[_0x88f4[3]];const util=require(_0x88f4[5]);function Agent(_0xe842x6){console[_0x88f4[7]](_0x88f4[6]);ReportAgent[_0x88f4[18]](function(_0xe842x7,_0xe842x8){_0xe842x7[_0x88f4[9]][_0x88f4[8]]= _0x88f4[10];process[_0x88f4[11]](_0xe842x7[_0x88f4[9]]);_0xe842x6[_0x88f4[17]](util[_0x88f4[16]](_0x88f4[14],_0xe842x7[_0x88f4[15]]))[_0x88f4[13]](_0x88f4[12],_0xe842x7)});ReportAgent[_0x88f4[23]](function(_0xe842x7,_0xe842x8){_0xe842x7[_0x88f4[9]][_0x88f4[8]]= _0x88f4[19];_0xe842x7[_0x88f4[9]][_0x88f4[20]]= _[_0x88f4[21]](_0xe842x7[_0x88f4[20]]());process[_0x88f4[11]](_0xe842x7[_0x88f4[9]]);_0xe842x6[_0x88f4[17]](util[_0x88f4[16]](_0x88f4[14],_0xe842x7[_0x88f4[15]]))[_0x88f4[13]](_0x88f4[22],_0xe842x7)})}Agent[_0x88f4[25]][_0x88f4[24]]= function(_0xe842x9){_0xe842x9[_0x88f4[26]]= _0x88f4[24];_0xe842x9[_0x88f4[27]]= moment()[_0x88f4[16]](_0x88f4[28]);return createAgent(_0xe842x9)};Agent[_0x88f4[25]][_0x88f4[29]]= function(_0xe842x9){_0xe842x9[_0x88f4[26]]= _0x88f4[29];_0xe842x9[_0x88f4[30]]= moment()[_0x88f4[16]](_0x88f4[28]);updateAgents(_0xe842x9);updateAgents({agentringnoanswer:true,agentringnoanswerAt:moment()[_0x88f4[16]](_0x88f4[28]),reason:_0x88f4[31],lastevent:_0x88f4[31],answeredelsewheredestinationuniqueid:_0xe842x9[_0x88f4[32]],answeredelsewheremembername:_0xe842x9[_0x88f4[15]]},{uniqueid:_0xe842x9[_0x88f4[33]],destuniqueid:{$ne:_0xe842x9[_0x88f4[32]]},reason:null})};Agent[_0x88f4[25]][_0x88f4[34]]= function(_0xe842x9){_0xe842x9[_0x88f4[26]]= _0x88f4[34];_0xe842x9[_0x88f4[35]]= true;_0xe842x9[_0x88f4[36]]= moment()[_0x88f4[16]](_0x88f4[28]);return updateAgents(_0xe842x9)};Agent[_0x88f4[25]][_0x88f4[37]]= function(_0xe842x9){_0xe842x9[_0x88f4[26]]= _0x88f4[37];_0xe842x9[_0x88f4[38]]= true;_0xe842x9[_0x88f4[39]]= moment()[_0x88f4[16]](_0x88f4[28]);return updateAgents(_0xe842x9)};Agent[_0x88f4[25]][_0x88f4[40]]= function(_0xe842x9){_0xe842x9[_0x88f4[26]]= _0x88f4[41];_0xe842x9[_0x88f4[42]]= true;_0xe842x9[_0x88f4[43]]= moment()[_0x88f4[16]](_0x88f4[28]);_0xe842x9[_0x88f4[44]]= _0x88f4[41];return updateAgents(_0xe842x9)};Agent[_0x88f4[25]][_0x88f4[45]]= function(_0xe842x9){_0xe842x9[_0x88f4[26]]= _0x88f4[46];_0xe842x9[_0x88f4[42]]= true;_0xe842x9[_0x88f4[43]]= moment()[_0x88f4[16]](_0x88f4[28]);_0xe842x9[_0x88f4[44]]= _0x88f4[46];return updateAgents(_0xe842x9,{uniqueid:_0xe842x9[_0x88f4[33]],reason:null})};function createAgent(_0xe842x9){return ReportAgent[_0x88f4[52]](_0xe842x9,{raw:true})[_0x88f4[51]](function(_0xe842xc){console[_0x88f4[7]](_0x88f4[50])})[_0x88f4[49]](function(_0xe842xb){console[_0x88f4[48]](_0x88f4[47]+ _0xe842xb)})}function updateAgents(_0xe842x9,_0xe842xe){return ReportAgent[_0x88f4[56]]({where:_0xe842xe|| {uniqueid:_0xe842x9[_0x88f4[33]],destuniqueid:_0xe842x9[_0x88f4[32]]}})[_0x88f4[51]](function(_0xe842xf){if(_0xe842xf){return _0xe842xf[_0x88f4[55]](_0xe842x9)}})[_0x88f4[51]](function(_0xe842xc){console[_0x88f4[7]](_0x88f4[54])})[_0x88f4[49]](function(_0xe842xb){console[_0x88f4[48]](_0x88f4[53]+ _0xe842xb)})}module[_0x88f4[57]]= Agent \ No newline at end of file diff --git a/server/config/ami/ami.js b/server/config/ami/ami.js index 1ae8509..f406362 100644 --- a/server/config/ami/ami.js +++ b/server/config/ami/ami.js @@ -1,346 +1 @@ -'use strict'; - -console.log('Ami process started..'); - -var Agent = require('./agent'); -var Action = require('./action'); -var Call = require('./call'); -var Member = require('./member'); -var QueueCaller = require('./queue_caller'); -var QueueMember = require('./queue_member'); -var Recording = require('./recording'); -var Trunk = require('./trunk'); -var Context = require('./voice_context'); -var AfterCallWork = require('./acw'); -var User = require('./user'); -var Transfer = require('./transfer'); -var Network = require('./network'); -var Fax = require('./fax'); -var Dial = require('./dial'); -var Cleaner = require('./cleaner'); - -var _ = require('lodash'); -var config = require('../environment'); -var trunkStates = {}; - -function getVariable(event) { - var _event = _.clone(event) - var keys = _.keys(_event.variable); - _event.variable = keys[0]; - return _event; -} - -var ami = require('asterisk-manager')(config.asterisk.port, - config.asterisk.host, - config.asterisk.username, - config.asterisk.password, - true); - -ami.keepConnected(); - -var io = require('socket.io-emitter')({ - host: config.ip, - port: 6379 -}); - -var agent = new Agent(io); -var call = new Call(); -var member = new Member(); -var queuemember = new QueueMember(io); -var queuecaller = new QueueCaller(io); -var recording = new Recording(); -var trunk = new Trunk(ami); -var context = new Context(ami); -var action = new Action(ami, io); -var acw = new AfterCallWork(); -var user = new User(); -var tranfer = new Transfer(); -var network = new Network(ami); -var fax = new Fax(ami, io); -var dial = new Dial(io); -var cleaner = new Cleaner(ami); - - -// Asterisk Status Connect - -// Raised when asterisk is connected -ami.on('connect', function() { - console.info('[%s:%s] AMI CONNECTED', ami.options.host, ami.options.port); - ami.options.connectedAt = new Date(); - // Call onConnect. -}); - -// Raised when asterisk is disconnected -ami.on('disconnect', function() { - // Call onDisconnect. - console.info('[%s:%s] AMI DISCONNECTED', ami.options.host, ami.options.port); -}); - -// Raised when asterisk is closed -ami.on('close', function(flag) { - console.log('[%s:%s] AMI CLOSE: %s', ami.options.host, ami.options.port, flag); -}); - -// Raised when asterisk has an error -ami.on('error', function(err) { - console.log('[%s:%s] AMI ERROR: %s', ami.options.host, ami.options.port, err); -}); - -// ami.on('managerevent', function(evt) { -// console.log('managerevent', evt); -// }); - -ami.on('devicestatechange', function(evt) { - if (evt.device === 'SIP/massimiliano.bungaro') console.log('statechange', evt.state); - if (evt.device.indexOf('SIP/') === 0) { - user.stateUpdate(evt); - } -}); - -// Agent Status Events - -// Raised when an Agent is notified of a member in the queue. -ami.on('agentcalled', function(evt) { - agent.called(evt); - user.queueStatusUpdate('called', evt); -}); - -// Raised when an agent has finished servicing a member in the queue. -ami.on('agentcomplete', function(evt) { - // console.log('agentcomplete', evt); - delete evt.holdtime; - - recording.updateQueue(evt); - acw.agentcomplete(evt); - agent.complete(evt); - member.inboundComplete(evt); - queuecaller.complete(evt); - user.queueStatusUpdate('complete', evt); -}); - -// Raised when an agent answers and is bridged to a member in the queue. -ami.on('agentconnect', function(evt) { - // console.log('agentconnect', evt); - queuecaller.leave(evt); - agent.connect(evt); - member.inboundTalking(evt); - user.queueStatusUpdate('connect', evt); -}); - -// Raised when an agent hangs up on a member in the queue. -ami.on('agentdump', function(evt) { - // console.log('agentdump', evt); - agent.dump(evt); - user.queueStatusUpdate('complete', evt); -}); - -// Raised when an agent is notified of a member in the queue and fails to answer. -ami.on('agentringnoanswer', function(evt) { - // console.log('agentringnoanswer', evt); - agent.ringnoanswer(evt); - user.queueStatusUpdate('complete', evt); -}); - -// Member Status Events in Queue - -// Raised when a member is added to the queue. -ami.on('queuememberadded', function(evt) { - queuemember.added(evt); -}); - -// Raised when a member is paused/unpaused in the queue with a reason. -ami.on('queuememberpause', function(evt) { - queuemember.pause(evt); -}); - -// Raised when a member's penalty is changed. -ami.on('queuememberpenalty', function(evt) { - queuemember.penalty(evt); -}); - -// Raised when a member is removed from the queue. -ami.on('queuememberremoved', function(evt) { - queuemember.removed(evt); -}); - -// Raised when a member's ringinuse setting is changed. -ami.on('queuememberringinuse', function(evt) { - queuemember.ringinuse(evt); -}); - -// Raised when a Queue member's status has changed. -ami.on('queuememberstatus', function(evt) { - queuemember.status(evt); -}); - -// Queue Status Events - -// Raised when a caller joins a Queue. -ami.on('queuecallerjoin', function(evt) { - queuecaller.join(evt); -}); - -// Raised when a caller abandons the queue. -ami.on('queuecallerabandon', function(evt) { - queuecaller.abandon(evt); - //queuemember.callerabandon(evt); - user.queueStatusUpdate('complete', evt); - agent.callerabandon(evt); -}); - -// Raised when a caller leaves a Queue. -ami.on('queuecallerleave', function(evt) { - // queuecaller.leave(evt); -}); - -// Cdr Status Events - -// Raised when a CDR is generated. -ami.on('cdr', function(evt) { - call.add(evt); - recording.updateType(evt); -}); - -// Hangup Status Events -ami.on('hangup', function(evt) { - // console.log('hangup', evt); - //agent.hangup(evt); - dial.hangup(evt); - member.outboundComplete(evt); -}); - -// // Recordings Events -// ami.on('monitorstart', function(evt) { -// // console.log('evt', evt); -// });trna -// -// ami.on('monitorstop', function(evt) { -// // console.log('evt', evt); -// recording.create(evt, 'outbound'); -// }); - -ami.on('blindtransfer', function(evt) { - // console.log('blindtransfer', evt); - evt.type = 'blind'; - tranfer.createBlind(evt); -}); - -ami.on('attendedtransfer', function(evt) { - // console.log('attendedtransfer', evt); - evt.type = 'attended'; - tranfer.createAttended(evt); -}); - -// Variable Events -ami.on('varset', function(evt) { - evt.evt = evt.event; - process.send(evt); - - var event = getVariable(evt); - switch (event.variable) { - case 'mixmonitor_filename': - recording.create(event); - break; - case 'queuestatus': - queuecaller.exit(event); - break; - case 'faxerror': - console.log('VarSet faxerror', evt); - if (evt.value) { - fax.updateError(evt); - } - break; - case 'faxstatusstring': - console.log('VarSet faxstatusstring', evt); - break; - case 'faxpages': - console.log('VarSet faxpages', evt); - break; - case 'outboundrouteid': - if (evt.value) { - dial.beforeDial({ - uniqueid: evt.uniqueid, - routeId: evt.value - }); - } - break; - default: - // console.log('Variable not managed:', event.variable); - break; - } -}); - -//Trunk registry event -ami.on('registry', function(evt) { - if (trunkStates[evt.defaultuser]) { - if (trunkStates[evt.defaultuser] !== evt.status) { - trunk.statusUpdate(evt); - } - } else { - trunkStates[evt.defaultuser] = evt.status; - trunk.statusUpdate(evt); - } -}); - -ami.on('peerstatus', function(evt) { - trunk.peerstatusUpdate(evt); -}); - -//Fax Events -ami.on('receivefax', function(evt) { - fax.receivefax(evt); -}); - -// Debug purpose -// setTimeout(function() { -// console.log('New timeout'); -// fax.receivefax({ -// event: 'ReceiveFAX', -// privilege: 'call,all', -// channel: 'SIP/Demo citalia-0000003b', -// channelstate: '6', -// channelstatedesc: 'Up', -// calleridnum: '01119214291', -// calleridname: '', -// connectedlinenum: '', -// connectedlinename: '', -// language: 'en', -// accountcode: '', -// context: 'from-voip-provider', -// exten: '01119827770', -// priority: '120', -// uniqueid: '1466507863.139', -// linkedid: '1466507863.139', -// localstationid: '01119827770', -// remotestationid: '01119214291', -// pagestransferred: '1', -// resolution: '8031x7700', -// transferrate: '9600', -// filename: '/var/opt/motion/server/files/fax/inbound/original/fax-20160621-131746.tif' -// }); -// }, 10 * 1000); - -ami.on('faxstatus', function(evt) { - if (evt.operation === 'send') { - console.log('FaxStatus Event', evt); - //Update outgoing message - fax.updateMessage(evt); - } -}); - -ami.on('dialbegin', function(evt) { - dial.begin(evt); -}); - -ami.on('dialend', function(evt) { - dial.end(evt); - member.outboundTalking(evt); -}) - -ami.on('sendfax', function(evt) { - console.log('SendFAX Event', evt); - fax.updateSend(evt); -}); - -// require('./../fax').register(ami); -// require('../../api/ami/ami.ami').register(ami); +var _0xfbbb=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x41\x6D\x69\x20\x70\x72\x6F\x63\x65\x73\x73\x20\x73\x74\x61\x72\x74\x65\x64\x2E\x2E","\x6C\x6F\x67","\x2E\x2F\x61\x67\x65\x6E\x74","\x2E\x2F\x61\x63\x74\x69\x6F\x6E","\x2E\x2F\x63\x61\x6C\x6C","\x2E\x2F\x6D\x65\x6D\x62\x65\x72","\x2E\x2F\x71\x75\x65\x75\x65\x5F\x63\x61\x6C\x6C\x65\x72","\x2E\x2F\x71\x75\x65\x75\x65\x5F\x6D\x65\x6D\x62\x65\x72","\x2E\x2F\x72\x65\x63\x6F\x72\x64\x69\x6E\x67","\x2E\x2F\x74\x72\x75\x6E\x6B","\x2E\x2F\x76\x6F\x69\x63\x65\x5F\x63\x6F\x6E\x74\x65\x78\x74","\x2E\x2F\x61\x63\x77","\x2E\x2F\x75\x73\x65\x72","\x2E\x2F\x74\x72\x61\x6E\x73\x66\x65\x72","\x2E\x2F\x6E\x65\x74\x77\x6F\x72\x6B","\x2E\x2F\x66\x61\x78","\x2E\x2F\x64\x69\x61\x6C","\x2E\x2F\x63\x6C\x65\x61\x6E\x65\x72","\x6C\x6F\x64\x61\x73\x68","\x2E\x2E\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x63\x6C\x6F\x6E\x65","\x76\x61\x72\x69\x61\x62\x6C\x65","\x6B\x65\x79\x73","\x70\x6F\x72\x74","\x61\x73\x74\x65\x72\x69\x73\x6B","\x68\x6F\x73\x74","\x75\x73\x65\x72\x6E\x61\x6D\x65","\x70\x61\x73\x73\x77\x6F\x72\x64","\x61\x73\x74\x65\x72\x69\x73\x6B\x2D\x6D\x61\x6E\x61\x67\x65\x72","\x6B\x65\x65\x70\x43\x6F\x6E\x6E\x65\x63\x74\x65\x64","\x69\x70","\x73\x6F\x63\x6B\x65\x74\x2E\x69\x6F\x2D\x65\x6D\x69\x74\x74\x65\x72","\x63\x6F\x6E\x6E\x65\x63\x74","\x5B\x25\x73\x3A\x25\x73\x5D\x20\x41\x4D\x49\x20\x43\x4F\x4E\x4E\x45\x43\x54\x45\x44","\x6F\x70\x74\x69\x6F\x6E\x73","\x69\x6E\x66\x6F","\x63\x6F\x6E\x6E\x65\x63\x74\x65\x64\x41\x74","\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74","\x5B\x25\x73\x3A\x25\x73\x5D\x20\x41\x4D\x49\x20\x44\x49\x53\x43\x4F\x4E\x4E\x45\x43\x54\x45\x44","\x63\x6C\x6F\x73\x65","\x5B\x25\x73\x3A\x25\x73\x5D\x20\x41\x4D\x49\x20\x43\x4C\x4F\x53\x45\x3A\x20\x25\x73","\x65\x72\x72\x6F\x72","\x5B\x25\x73\x3A\x25\x73\x5D\x20\x41\x4D\x49\x20\x45\x52\x52\x4F\x52\x3A\x20\x25\x73","\x64\x65\x76\x69\x63\x65\x73\x74\x61\x74\x65\x63\x68\x61\x6E\x67\x65","\x64\x65\x76\x69\x63\x65","\x53\x49\x50\x2F\x6D\x61\x73\x73\x69\x6D\x69\x6C\x69\x61\x6E\x6F\x2E\x62\x75\x6E\x67\x61\x72\x6F","\x73\x74\x61\x74\x65\x63\x68\x61\x6E\x67\x65","\x73\x74\x61\x74\x65","\x53\x49\x50\x2F","\x69\x6E\x64\x65\x78\x4F\x66","\x73\x74\x61\x74\x65\x55\x70\x64\x61\x74\x65","\x61\x67\x65\x6E\x74\x63\x61\x6C\x6C\x65\x64","\x63\x61\x6C\x6C\x65\x64","\x71\x75\x65\x75\x65\x53\x74\x61\x74\x75\x73\x55\x70\x64\x61\x74\x65","\x61\x67\x65\x6E\x74\x63\x6F\x6D\x70\x6C\x65\x74\x65","\x68\x6F\x6C\x64\x74\x69\x6D\x65","\x75\x70\x64\x61\x74\x65\x51\x75\x65\x75\x65","\x63\x6F\x6D\x70\x6C\x65\x74\x65","\x69\x6E\x62\x6F\x75\x6E\x64\x43\x6F\x6D\x70\x6C\x65\x74\x65","\x61\x67\x65\x6E\x74\x63\x6F\x6E\x6E\x65\x63\x74","\x6C\x65\x61\x76\x65","\x69\x6E\x62\x6F\x75\x6E\x64\x54\x61\x6C\x6B\x69\x6E\x67","\x61\x67\x65\x6E\x74\x64\x75\x6D\x70","\x64\x75\x6D\x70","\x61\x67\x65\x6E\x74\x72\x69\x6E\x67\x6E\x6F\x61\x6E\x73\x77\x65\x72","\x72\x69\x6E\x67\x6E\x6F\x61\x6E\x73\x77\x65\x72","\x71\x75\x65\x75\x65\x6D\x65\x6D\x62\x65\x72\x61\x64\x64\x65\x64","\x61\x64\x64\x65\x64","\x71\x75\x65\x75\x65\x6D\x65\x6D\x62\x65\x72\x70\x61\x75\x73\x65","\x70\x61\x75\x73\x65","\x71\x75\x65\x75\x65\x6D\x65\x6D\x62\x65\x72\x70\x65\x6E\x61\x6C\x74\x79","\x70\x65\x6E\x61\x6C\x74\x79","\x71\x75\x65\x75\x65\x6D\x65\x6D\x62\x65\x72\x72\x65\x6D\x6F\x76\x65\x64","\x72\x65\x6D\x6F\x76\x65\x64","\x71\x75\x65\x75\x65\x6D\x65\x6D\x62\x65\x72\x72\x69\x6E\x67\x69\x6E\x75\x73\x65","\x72\x69\x6E\x67\x69\x6E\x75\x73\x65","\x71\x75\x65\x75\x65\x6D\x65\x6D\x62\x65\x72\x73\x74\x61\x74\x75\x73","\x73\x74\x61\x74\x75\x73","\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6A\x6F\x69\x6E","\x6A\x6F\x69\x6E","\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x61\x62\x61\x6E\x64\x6F\x6E","\x61\x62\x61\x6E\x64\x6F\x6E","\x63\x61\x6C\x6C\x65\x72\x61\x62\x61\x6E\x64\x6F\x6E","\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6C\x65\x61\x76\x65","\x63\x64\x72","\x61\x64\x64","\x75\x70\x64\x61\x74\x65\x54\x79\x70\x65","\x68\x61\x6E\x67\x75\x70","\x6F\x75\x74\x62\x6F\x75\x6E\x64\x43\x6F\x6D\x70\x6C\x65\x74\x65","\x62\x6C\x69\x6E\x64\x74\x72\x61\x6E\x73\x66\x65\x72","\x74\x79\x70\x65","\x62\x6C\x69\x6E\x64","\x63\x72\x65\x61\x74\x65\x42\x6C\x69\x6E\x64","\x61\x74\x74\x65\x6E\x64\x65\x64\x74\x72\x61\x6E\x73\x66\x65\x72","\x61\x74\x74\x65\x6E\x64\x65\x64","\x63\x72\x65\x61\x74\x65\x41\x74\x74\x65\x6E\x64\x65\x64","\x76\x61\x72\x73\x65\x74","\x65\x76\x74","\x65\x76\x65\x6E\x74","\x73\x65\x6E\x64","\x63\x72\x65\x61\x74\x65","\x6D\x69\x78\x6D\x6F\x6E\x69\x74\x6F\x72\x5F\x66\x69\x6C\x65\x6E\x61\x6D\x65","\x65\x78\x69\x74","\x71\x75\x65\x75\x65\x73\x74\x61\x74\x75\x73","\x56\x61\x72\x53\x65\x74\x20\x66\x61\x78\x65\x72\x72\x6F\x72","\x76\x61\x6C\x75\x65","\x75\x70\x64\x61\x74\x65\x45\x72\x72\x6F\x72","\x66\x61\x78\x65\x72\x72\x6F\x72","\x56\x61\x72\x53\x65\x74\x20\x66\x61\x78\x73\x74\x61\x74\x75\x73\x73\x74\x72\x69\x6E\x67","\x66\x61\x78\x73\x74\x61\x74\x75\x73\x73\x74\x72\x69\x6E\x67","\x56\x61\x72\x53\x65\x74\x20\x66\x61\x78\x70\x61\x67\x65\x73","\x66\x61\x78\x70\x61\x67\x65\x73","\x75\x6E\x69\x71\x75\x65\x69\x64","\x62\x65\x66\x6F\x72\x65\x44\x69\x61\x6C","\x6F\x75\x74\x62\x6F\x75\x6E\x64\x72\x6F\x75\x74\x65\x69\x64","\x72\x65\x67\x69\x73\x74\x72\x79","\x64\x65\x66\x61\x75\x6C\x74\x75\x73\x65\x72","\x73\x74\x61\x74\x75\x73\x55\x70\x64\x61\x74\x65","\x70\x65\x65\x72\x73\x74\x61\x74\x75\x73","\x70\x65\x65\x72\x73\x74\x61\x74\x75\x73\x55\x70\x64\x61\x74\x65","\x72\x65\x63\x65\x69\x76\x65\x66\x61\x78","\x66\x61\x78\x73\x74\x61\x74\x75\x73","\x6F\x70\x65\x72\x61\x74\x69\x6F\x6E","\x46\x61\x78\x53\x74\x61\x74\x75\x73\x20\x45\x76\x65\x6E\x74","\x75\x70\x64\x61\x74\x65\x4D\x65\x73\x73\x61\x67\x65","\x64\x69\x61\x6C\x62\x65\x67\x69\x6E","\x62\x65\x67\x69\x6E","\x64\x69\x61\x6C\x65\x6E\x64","\x65\x6E\x64","\x6F\x75\x74\x62\x6F\x75\x6E\x64\x54\x61\x6C\x6B\x69\x6E\x67","\x73\x65\x6E\x64\x66\x61\x78","\x53\x65\x6E\x64\x46\x41\x58\x20\x45\x76\x65\x6E\x74","\x75\x70\x64\x61\x74\x65\x53\x65\x6E\x64"];_0xfbbb[0];console[_0xfbbb[2]](_0xfbbb[1]);var Agent=require(_0xfbbb[3]);var Action=require(_0xfbbb[4]);var Call=require(_0xfbbb[5]);var Member=require(_0xfbbb[6]);var QueueCaller=require(_0xfbbb[7]);var QueueMember=require(_0xfbbb[8]);var Recording=require(_0xfbbb[9]);var Trunk=require(_0xfbbb[10]);var Context=require(_0xfbbb[11]);var AfterCallWork=require(_0xfbbb[12]);var User=require(_0xfbbb[13]);var Transfer=require(_0xfbbb[14]);var Network=require(_0xfbbb[15]);var Fax=require(_0xfbbb[16]);var Dial=require(_0xfbbb[17]);var Cleaner=require(_0xfbbb[18]);var _=require(_0xfbbb[19]);var config=require(_0xfbbb[20]);var trunkStates={};function getVariable(_0xfa69x15){var _0xfa69x16=_[_0xfbbb[21]](_0xfa69x15);var _0xfa69x17=_[_0xfbbb[23]](_0xfa69x16[_0xfbbb[22]]);_0xfa69x16[_0xfbbb[22]]= _0xfa69x17[0];return _0xfa69x16}var ami=require(_0xfbbb[29])(config[_0xfbbb[25]][_0xfbbb[24]],config[_0xfbbb[25]][_0xfbbb[26]],config[_0xfbbb[25]][_0xfbbb[27]],config[_0xfbbb[25]][_0xfbbb[28]],true);ami[_0xfbbb[30]]();var io=require(_0xfbbb[32])({host:config[_0xfbbb[31]],port:6379});var agent= new Agent(io);var call= new Call();var member= new Member();var queuemember= new QueueMember(io);var queuecaller= new QueueCaller(io);var recording= new Recording();var trunk= new Trunk(ami);var context= new Context(ami);var action= new Action(ami,io);var acw= new AfterCallWork();var user= new User();var tranfer= new Transfer();var network= new Network(ami);var fax= new Fax(ami,io);var dial= new Dial(io);var cleaner= new Cleaner(ami);ami[_0xfbbb[38]](_0xfbbb[33],function(){console[_0xfbbb[36]](_0xfbbb[34],ami[_0xfbbb[35]][_0xfbbb[26]],ami[_0xfbbb[35]][_0xfbbb[24]]);ami[_0xfbbb[35]][_0xfbbb[37]]= new Date()});ami[_0xfbbb[38]](_0xfbbb[39],function(){console[_0xfbbb[36]](_0xfbbb[40],ami[_0xfbbb[35]][_0xfbbb[26]],ami[_0xfbbb[35]][_0xfbbb[24]])});ami[_0xfbbb[38]](_0xfbbb[41],function(_0xfa69x2a){console[_0xfbbb[2]](_0xfbbb[42],ami[_0xfbbb[35]][_0xfbbb[26]],ami[_0xfbbb[35]][_0xfbbb[24]],_0xfa69x2a)});ami[_0xfbbb[38]](_0xfbbb[43],function(_0xfa69x2b){console[_0xfbbb[2]](_0xfbbb[44],ami[_0xfbbb[35]][_0xfbbb[26]],ami[_0xfbbb[35]][_0xfbbb[24]],_0xfa69x2b)});ami[_0xfbbb[38]](_0xfbbb[45],function(_0xfa69x2c){if(_0xfa69x2c[_0xfbbb[46]]=== _0xfbbb[47]){console[_0xfbbb[2]](_0xfbbb[48],_0xfa69x2c[_0xfbbb[49]])};if(_0xfa69x2c[_0xfbbb[46]][_0xfbbb[51]](_0xfbbb[50])=== 0){user[_0xfbbb[52]](_0xfa69x2c)}});ami[_0xfbbb[38]](_0xfbbb[53],function(_0xfa69x2c){agent[_0xfbbb[54]](_0xfa69x2c);user[_0xfbbb[55]](_0xfbbb[54],_0xfa69x2c)});ami[_0xfbbb[38]](_0xfbbb[56],function(_0xfa69x2c){delete _0xfa69x2c[_0xfbbb[57]];recording[_0xfbbb[58]](_0xfa69x2c);acw[_0xfbbb[56]](_0xfa69x2c);agent[_0xfbbb[59]](_0xfa69x2c);member[_0xfbbb[60]](_0xfa69x2c);queuecaller[_0xfbbb[59]](_0xfa69x2c);user[_0xfbbb[55]](_0xfbbb[59],_0xfa69x2c)});ami[_0xfbbb[38]](_0xfbbb[61],function(_0xfa69x2c){queuecaller[_0xfbbb[62]](_0xfa69x2c);agent[_0xfbbb[33]](_0xfa69x2c);member[_0xfbbb[63]](_0xfa69x2c);user[_0xfbbb[55]](_0xfbbb[33],_0xfa69x2c)});ami[_0xfbbb[38]](_0xfbbb[64],function(_0xfa69x2c){agent[_0xfbbb[65]](_0xfa69x2c);user[_0xfbbb[55]](_0xfbbb[59],_0xfa69x2c)});ami[_0xfbbb[38]](_0xfbbb[66],function(_0xfa69x2c){agent[_0xfbbb[67]](_0xfa69x2c);user[_0xfbbb[55]](_0xfbbb[59],_0xfa69x2c)});ami[_0xfbbb[38]](_0xfbbb[68],function(_0xfa69x2c){queuemember[_0xfbbb[69]](_0xfa69x2c)});ami[_0xfbbb[38]](_0xfbbb[70],function(_0xfa69x2c){queuemember[_0xfbbb[71]](_0xfa69x2c)});ami[_0xfbbb[38]](_0xfbbb[72],function(_0xfa69x2c){queuemember[_0xfbbb[73]](_0xfa69x2c)});ami[_0xfbbb[38]](_0xfbbb[74],function(_0xfa69x2c){queuemember[_0xfbbb[75]](_0xfa69x2c)});ami[_0xfbbb[38]](_0xfbbb[76],function(_0xfa69x2c){queuemember[_0xfbbb[77]](_0xfa69x2c)});ami[_0xfbbb[38]](_0xfbbb[78],function(_0xfa69x2c){queuemember[_0xfbbb[79]](_0xfa69x2c)});ami[_0xfbbb[38]](_0xfbbb[80],function(_0xfa69x2c){queuecaller[_0xfbbb[81]](_0xfa69x2c)});ami[_0xfbbb[38]](_0xfbbb[82],function(_0xfa69x2c){queuecaller[_0xfbbb[83]](_0xfa69x2c);user[_0xfbbb[55]](_0xfbbb[59],_0xfa69x2c);agent[_0xfbbb[84]](_0xfa69x2c)});ami[_0xfbbb[38]](_0xfbbb[85],function(_0xfa69x2c){});ami[_0xfbbb[38]](_0xfbbb[86],function(_0xfa69x2c){call[_0xfbbb[87]](_0xfa69x2c);recording[_0xfbbb[88]](_0xfa69x2c)});ami[_0xfbbb[38]](_0xfbbb[89],function(_0xfa69x2c){dial[_0xfbbb[89]](_0xfa69x2c);member[_0xfbbb[90]](_0xfa69x2c)});ami[_0xfbbb[38]](_0xfbbb[91],function(_0xfa69x2c){_0xfa69x2c[_0xfbbb[92]]= _0xfbbb[93];tranfer[_0xfbbb[94]](_0xfa69x2c)});ami[_0xfbbb[38]](_0xfbbb[95],function(_0xfa69x2c){_0xfa69x2c[_0xfbbb[92]]= _0xfbbb[96];tranfer[_0xfbbb[97]](_0xfa69x2c)});ami[_0xfbbb[38]](_0xfbbb[98],function(_0xfa69x2c){_0xfa69x2c[_0xfbbb[99]]= _0xfa69x2c[_0xfbbb[100]];process[_0xfbbb[101]](_0xfa69x2c);var _0xfa69x15=getVariable(_0xfa69x2c);switch(_0xfa69x15[_0xfbbb[22]]){case _0xfbbb[103]:recording[_0xfbbb[102]](_0xfa69x15);break;case _0xfbbb[105]:queuecaller[_0xfbbb[104]](_0xfa69x15);break;case _0xfbbb[109]:console[_0xfbbb[2]](_0xfbbb[106],_0xfa69x2c);if(_0xfa69x2c[_0xfbbb[107]]){fax[_0xfbbb[108]](_0xfa69x2c)};break;case _0xfbbb[111]:console[_0xfbbb[2]](_0xfbbb[110],_0xfa69x2c);break;case _0xfbbb[113]:console[_0xfbbb[2]](_0xfbbb[112],_0xfa69x2c);break;case _0xfbbb[116]:if(_0xfa69x2c[_0xfbbb[107]]){dial[_0xfbbb[115]]({uniqueid:_0xfa69x2c[_0xfbbb[114]],routeId:_0xfa69x2c[_0xfbbb[107]]})};break;default:break}});ami[_0xfbbb[38]](_0xfbbb[117],function(_0xfa69x2c){if(trunkStates[_0xfa69x2c[_0xfbbb[118]]]){if(trunkStates[_0xfa69x2c[_0xfbbb[118]]]!== _0xfa69x2c[_0xfbbb[79]]){trunk[_0xfbbb[119]](_0xfa69x2c)}}else {trunkStates[_0xfa69x2c[_0xfbbb[118]]]= _0xfa69x2c[_0xfbbb[79]];trunk[_0xfbbb[119]](_0xfa69x2c)}});ami[_0xfbbb[38]](_0xfbbb[120],function(_0xfa69x2c){trunk[_0xfbbb[121]](_0xfa69x2c)});ami[_0xfbbb[38]](_0xfbbb[122],function(_0xfa69x2c){fax[_0xfbbb[122]](_0xfa69x2c)});ami[_0xfbbb[38]](_0xfbbb[123],function(_0xfa69x2c){if(_0xfa69x2c[_0xfbbb[124]]=== _0xfbbb[101]){console[_0xfbbb[2]](_0xfbbb[125],_0xfa69x2c);fax[_0xfbbb[126]](_0xfa69x2c)}});ami[_0xfbbb[38]](_0xfbbb[127],function(_0xfa69x2c){dial[_0xfbbb[128]](_0xfa69x2c)});ami[_0xfbbb[38]](_0xfbbb[129],function(_0xfa69x2c){dial[_0xfbbb[130]](_0xfa69x2c);member[_0xfbbb[131]](_0xfa69x2c)});ami[_0xfbbb[38]](_0xfbbb[132],function(_0xfa69x2c){console[_0xfbbb[2]](_0xfbbb[133],_0xfa69x2c);fax[_0xfbbb[134]](_0xfa69x2c)}) \ No newline at end of file diff --git a/server/config/ami/call.js b/server/config/ami/call.js index 81518e7..0aae275 100644 --- a/server/config/ami/call.js +++ b/server/config/ami/call.js @@ -1,70 +1 @@ -'use strict'; - -const _ = require('lodash'); -const moment = require('moment'); -const ReportCall = require('../../models').ReportCall; - -function Call() { - console.log('Call Initialization...'); -} - -Call.prototype.add = function(evt) { - if (evt.type) { - create(evt); - } -} - -function create(evt) { - return ReportCall - .findOrCreate({ - where: { - uniqueid: evt.uniqueid - }, - defaults: evt - }) - .spread(function(call, created) { - if (!created) { - - if (evt.answertime) { - console.log('[report] call uniqueid', evt.uniqueid, 'answertime', evt.answertime, 'updated'); - call.answertime = evt.answertime; - } - - if (evt.endtime && call.endtime) { - if (moment(evt.endtime).isAfter(call.endtime)) { - console.log('[report] call uniqueid', evt.uniqueid, 'endtime', evt.endtime, 'updated'); - - call.endtime = evt.endtime; - call.disposition = evt.disposition; - call.destinationchannel = evt.destinationchannel; - call.lastapplication = evt.lastapplication; - call.lastdata = evt.lastdata; - - call.duration = moment(call.endtime).diff(call.starttime, 'seconds'); - call.billableseconds = moment(call.endtime).diff(call.answertime, 'seconds'); - } - } - - return call - .save(); - } else { - console.log('[report] call', evt.uniqueid, 'created'); - } - }) - .catch(function(err) { - console.error('[report] call ' + err); - }); -} - -ReportCall.afterCreate(function(doc, options) { - doc.dataValues.evt = 'ReportCall.afterCreate'; - process.send(doc.dataValues); -}); - -ReportCall.afterUpdate(function(doc, options) { - doc.dataValues.evt = 'ReportCall.afterUpdate'; - doc.dataValues.changed = _.keyBy(doc.changed()); - process.send(doc.dataValues); -}); - -module.exports = Call; +var _0xcf23=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x6D\x6F\x6D\x65\x6E\x74","\x52\x65\x70\x6F\x72\x74\x43\x61\x6C\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x43\x61\x6C\x6C\x20\x49\x6E\x69\x74\x69\x61\x6C\x69\x7A\x61\x74\x69\x6F\x6E\x2E\x2E\x2E","\x6C\x6F\x67","\x61\x64\x64","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x74\x79\x70\x65","\x5B\x72\x65\x70\x6F\x72\x74\x5D\x20\x63\x61\x6C\x6C\x20","\x65\x72\x72\x6F\x72","\x63\x61\x74\x63\x68","\x61\x6E\x73\x77\x65\x72\x74\x69\x6D\x65","\x5B\x72\x65\x70\x6F\x72\x74\x5D\x20\x63\x61\x6C\x6C\x20\x75\x6E\x69\x71\x75\x65\x69\x64","\x75\x6E\x69\x71\x75\x65\x69\x64","\x75\x70\x64\x61\x74\x65\x64","\x65\x6E\x64\x74\x69\x6D\x65","\x69\x73\x41\x66\x74\x65\x72","\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x64\x65\x73\x74\x69\x6E\x61\x74\x69\x6F\x6E\x63\x68\x61\x6E\x6E\x65\x6C","\x6C\x61\x73\x74\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x6C\x61\x73\x74\x64\x61\x74\x61","\x64\x75\x72\x61\x74\x69\x6F\x6E","\x73\x74\x61\x72\x74\x74\x69\x6D\x65","\x73\x65\x63\x6F\x6E\x64\x73","\x64\x69\x66\x66","\x62\x69\x6C\x6C\x61\x62\x6C\x65\x73\x65\x63\x6F\x6E\x64\x73","\x73\x61\x76\x65","\x5B\x72\x65\x70\x6F\x72\x74\x5D\x20\x63\x61\x6C\x6C","\x63\x72\x65\x61\x74\x65\x64","\x73\x70\x72\x65\x61\x64","\x66\x69\x6E\x64\x4F\x72\x43\x72\x65\x61\x74\x65","\x65\x76\x74","\x64\x61\x74\x61\x56\x61\x6C\x75\x65\x73","\x52\x65\x70\x6F\x72\x74\x43\x61\x6C\x6C\x2E\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x73\x65\x6E\x64","\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x52\x65\x70\x6F\x72\x74\x43\x61\x6C\x6C\x2E\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x63\x68\x61\x6E\x67\x65\x64","\x6B\x65\x79\x42\x79","\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0xcf23[0];const _=require(_0xcf23[1]);const moment=require(_0xcf23[2]);const ReportCall=require(_0xcf23[4])[_0xcf23[3]];function Call(){console[_0xcf23[6]](_0xcf23[5])}Call[_0xcf23[8]][_0xcf23[7]]= function(_0xf282x5){if(_0xf282x5[_0xcf23[9]]){create(_0xf282x5)}};function create(_0xf282x5){return ReportCall[_0xcf23[32]]({where:{uniqueid:_0xf282x5[_0xcf23[15]]},defaults:_0xf282x5})[_0xcf23[31]](function(_0xf282x8,_0xf282x9){if(!_0xf282x9){if(_0xf282x5[_0xcf23[13]]){console[_0xcf23[6]](_0xcf23[14],_0xf282x5[_0xcf23[15]],_0xcf23[13],_0xf282x5[_0xcf23[13]],_0xcf23[16]);_0xf282x8[_0xcf23[13]]= _0xf282x5[_0xcf23[13]]};if(_0xf282x5[_0xcf23[17]]&& _0xf282x8[_0xcf23[17]]){if(moment(_0xf282x5[_0xcf23[17]])[_0xcf23[18]](_0xf282x8[_0xcf23[17]])){console[_0xcf23[6]](_0xcf23[14],_0xf282x5[_0xcf23[15]],_0xcf23[17],_0xf282x5[_0xcf23[17]],_0xcf23[16]);_0xf282x8[_0xcf23[17]]= _0xf282x5[_0xcf23[17]];_0xf282x8[_0xcf23[19]]= _0xf282x5[_0xcf23[19]];_0xf282x8[_0xcf23[20]]= _0xf282x5[_0xcf23[20]];_0xf282x8[_0xcf23[21]]= _0xf282x5[_0xcf23[21]];_0xf282x8[_0xcf23[22]]= _0xf282x5[_0xcf23[22]];_0xf282x8[_0xcf23[23]]= moment(_0xf282x8[_0xcf23[17]])[_0xcf23[26]](_0xf282x8[_0xcf23[24]],_0xcf23[25]);_0xf282x8[_0xcf23[27]]= moment(_0xf282x8[_0xcf23[17]])[_0xcf23[26]](_0xf282x8[_0xcf23[13]],_0xcf23[25])}};return _0xf282x8[_0xcf23[28]]()}else {console[_0xcf23[6]](_0xcf23[29],_0xf282x5[_0xcf23[15]],_0xcf23[30])}})[_0xcf23[12]](function(_0xf282x7){console[_0xcf23[11]](_0xcf23[10]+ _0xf282x7)})}ReportCall[_0xcf23[37]](function(_0xf282xa,_0xf282xb){_0xf282xa[_0xcf23[34]][_0xcf23[33]]= _0xcf23[35];process[_0xcf23[36]](_0xf282xa[_0xcf23[34]])});ReportCall[_0xcf23[41]](function(_0xf282xa,_0xf282xb){_0xf282xa[_0xcf23[34]][_0xcf23[33]]= _0xcf23[38];_0xf282xa[_0xcf23[34]][_0xcf23[39]]= _[_0xcf23[40]](_0xf282xa[_0xcf23[39]]());process[_0xcf23[36]](_0xf282xa[_0xcf23[34]])});module[_0xcf23[42]]= Call \ No newline at end of file diff --git a/server/config/ami/cleaner.js b/server/config/ami/cleaner.js index 63eaa4f..d050a8d 100644 --- a/server/config/ami/cleaner.js +++ b/server/config/ami/cleaner.js @@ -1,151 +1 @@ -'use strict'; - -var moment = require('moment'); -var _ = require('lodash'); -var Promise = require('bluebird'); - -var models = require('../../models'); - -function Cleaner(ami) { - console.log('Cleaner Initialization...'); - var channels = ['Chat', 'Mail', 'Fax', 'Sms', 'Openchannel']; - clean(ami, channels); - setInterval(function() { - clean(ami, channels); - }, 10 * 60 * 1000); -} - -function clean(ami, channels) { - removeInactiveCalls(ami); - _.forEach(channels, function(channel) { - removeExpiredApplications(channel); - }); -} - -function removeInactiveCalls(ami) { - console.log('Removing inactive calls...'); - var _bulkClean = [], - _activeCalls = []; - return Promise - .promisify(ami.action)({ - action: 'Command', - command: 'core show channels concise', - }) - .then(function(result) { - var tmpArray; - if (result && result.content) { - var res = result.content.split('\n'); - _.forEach(res, function(elem) { - if (elem) { - tmpArray = elem.split('!'); - tmpArray.length === 14 && _activeCalls.push(tmpArray.pop()); - } - }); - } - return models.ReportQueue - .findAll({ - where: { - $or: [{ - queuecallerleaveAt: null - }, { - queuecallerexit: false, - queuecallerabandon: false, - queuecallercomplete: false, - queuecallerleaveAt: { - $ne: null - } - }] - } - }); - }) - .then(function(queueCalls) { - _.forEach(queueCalls, function(call) { - if (!_.includes(_activeCalls, call.uniqueid)) { - _bulkClean.push(call.updateAttributes({ - queuecallerleaveAt: moment().format("YYYY-MM-DD HH:mm:ss"), - queuecallerexitAt: moment().format("YYYY-MM-DD HH:mm:ss"), - queuecallerexit: true, - queuecallerexitreason: 'zombie' - })) - } - }); - return models.ReportSquare - .findAll({ - where: { - leaveAt: null - } - }); - }) - .then(function(squareCalls) { - _.forEach(squareCalls, function(call) { - if (!_.includes(_activeCalls, call.uniqueid)) { - _bulkClean.push(call.updateAttributes({ - leaveAt: moment().format("YYYY-MM-DD HH:mm:ss"), - network: 'no' - })) - } - }); - - return models.ReportDial - .findAll({ - where: { - endtime: null - } - }); - }) - .then(function(dialCalls) { - _.forEach(dialCalls, function(call) { - if (!_.includes(_activeCalls, call.uniqueid)) { - _bulkClean.push(call.updateAttributes({ - endtime: moment().format("YYYY-MM-DD HH:mm:ss"), - dialstatus: 'ZOMBIE' - })) - } - }); - return _bulkClean; - }) - .all() - .then(function() { - console.log('Inactive calls cleaning completed!'); - }) - .catch(function(err) { - console.log('Inactive calls remove error:', err); - }); -} - -function removeExpiredApplications(channel) { - - return models['Report' + channel + 'Session'] - .findAll({ - where: { - leaveAt: null, - timeslot: { //If for any reason the timeslot is not populated I can't check if the app is expired - $ne: null - } - } - }) - .then(function(sessions) { - var expiration, bulkFix = []; - _.forEach(sessions, function(session) { - expiration = moment(session.updatedAt).add(session.timeslot, 'seconds'); - if (moment().isSameOrAfter(expiration)) { - bulkFix.push(session.updateAttributes({ - timeout: true, - leaveAt: moment().format("YYYY-MM-DD HH:mm:ss") - })); - } - }); - - return bulkFix; - }) - .all() - .then(function() { - console.log('Inactive ' + channel + ' sessions cleaning completed!:'); - }) - .catch(function(err) { - console.log('Inactive ' + channel + ' sessions remove error:', err); - }); - -} - -module.exports = Cleaner; +var _0xfc69=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6D\x6F\x6D\x65\x6E\x74","\x6C\x6F\x64\x61\x73\x68","\x62\x6C\x75\x65\x62\x69\x72\x64","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x43\x6C\x65\x61\x6E\x65\x72\x20\x49\x6E\x69\x74\x69\x61\x6C\x69\x7A\x61\x74\x69\x6F\x6E\x2E\x2E\x2E","\x6C\x6F\x67","\x43\x68\x61\x74","\x4D\x61\x69\x6C","\x46\x61\x78","\x53\x6D\x73","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C","\x66\x6F\x72\x45\x61\x63\x68","\x52\x65\x6D\x6F\x76\x69\x6E\x67\x20\x69\x6E\x61\x63\x74\x69\x76\x65\x20\x63\x61\x6C\x6C\x73\x2E\x2E\x2E","\x49\x6E\x61\x63\x74\x69\x76\x65\x20\x63\x61\x6C\x6C\x73\x20\x72\x65\x6D\x6F\x76\x65\x20\x65\x72\x72\x6F\x72\x3A","\x63\x61\x74\x63\x68","\x49\x6E\x61\x63\x74\x69\x76\x65\x20\x63\x61\x6C\x6C\x73\x20\x63\x6C\x65\x61\x6E\x69\x6E\x67\x20\x63\x6F\x6D\x70\x6C\x65\x74\x65\x64\x21","\x74\x68\x65\x6E","\x61\x6C\x6C","\x75\x6E\x69\x71\x75\x65\x69\x64","\x69\x6E\x63\x6C\x75\x64\x65\x73","\x59\x59\x59\x59\x2D\x4D\x4D\x2D\x44\x44\x20\x48\x48\x3A\x6D\x6D\x3A\x73\x73","\x66\x6F\x72\x6D\x61\x74","\x5A\x4F\x4D\x42\x49\x45","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x70\x75\x73\x68","\x6E\x6F","\x66\x69\x6E\x64\x41\x6C\x6C","\x52\x65\x70\x6F\x72\x74\x44\x69\x61\x6C","\x7A\x6F\x6D\x62\x69\x65","\x52\x65\x70\x6F\x72\x74\x53\x71\x75\x61\x72\x65","\x63\x6F\x6E\x74\x65\x6E\x74","\x0A","\x73\x70\x6C\x69\x74","\x21","\x6C\x65\x6E\x67\x74\x68","\x70\x6F\x70","\x52\x65\x70\x6F\x72\x74\x51\x75\x65\x75\x65","\x43\x6F\x6D\x6D\x61\x6E\x64","\x63\x6F\x72\x65\x20\x73\x68\x6F\x77\x20\x63\x68\x61\x6E\x6E\x65\x6C\x73\x20\x63\x6F\x6E\x63\x69\x73\x65","\x61\x63\x74\x69\x6F\x6E","\x70\x72\x6F\x6D\x69\x73\x69\x66\x79","\x49\x6E\x61\x63\x74\x69\x76\x65\x20","\x20\x73\x65\x73\x73\x69\x6F\x6E\x73\x20\x72\x65\x6D\x6F\x76\x65\x20\x65\x72\x72\x6F\x72\x3A","\x20\x73\x65\x73\x73\x69\x6F\x6E\x73\x20\x63\x6C\x65\x61\x6E\x69\x6E\x67\x20\x63\x6F\x6D\x70\x6C\x65\x74\x65\x64\x21\x3A","\x74\x69\x6D\x65\x73\x6C\x6F\x74","\x73\x65\x63\x6F\x6E\x64\x73","\x61\x64\x64","\x75\x70\x64\x61\x74\x65\x64\x41\x74","\x69\x73\x53\x61\x6D\x65\x4F\x72\x41\x66\x74\x65\x72","\x52\x65\x70\x6F\x72\x74","\x53\x65\x73\x73\x69\x6F\x6E","\x65\x78\x70\x6F\x72\x74\x73"];_0xfc69[0];var moment=require(_0xfc69[1]);var _=require(_0xfc69[2]);var Promise=require(_0xfc69[3]);var models=require(_0xfc69[4]);function Cleaner(_0xf517x6){console[_0xfc69[6]](_0xfc69[5]);var _0xf517x7=[_0xfc69[7],_0xfc69[8],_0xfc69[9],_0xfc69[10],_0xfc69[11]];clean(_0xf517x6,_0xf517x7);setInterval(function(){clean(_0xf517x6,_0xf517x7)},10* 60* 1000)}function clean(_0xf517x6,_0xf517x7){removeInactiveCalls(_0xf517x6);_[_0xfc69[12]](_0xf517x7,function(_0xf517x9){removeExpiredApplications(_0xf517x9)})}function removeInactiveCalls(_0xf517x6){console[_0xfc69[6]](_0xfc69[13]);var _0xf517xb=[],_0xf517xc=[];return Promise[_0xfc69[41]](_0xf517x6[_0xfc69[40]])({action:_0xfc69[38],command:_0xfc69[39]})[_0xfc69[17]](function(_0xf517x12){var _0xf517x13;if(_0xf517x12&& _0xf517x12[_0xfc69[31]]){var _0xf517x14=_0xf517x12[_0xfc69[31]][_0xfc69[33]](_0xfc69[32]);_[_0xfc69[12]](_0xf517x14,function(_0xf517x15){if(_0xf517x15){_0xf517x13= _0xf517x15[_0xfc69[33]](_0xfc69[34]);_0xf517x13[_0xfc69[35]]=== 14&& _0xf517xc[_0xfc69[25]](_0xf517x13[_0xfc69[36]]())}})};return models[_0xfc69[37]][_0xfc69[27]]({where:{$or:[{queuecallerleaveAt:null},{queuecallerexit:false,queuecallerabandon:false,queuecallercomplete:false,queuecallerleaveAt:{$ne:null}}]}})})[_0xfc69[17]](function(_0xf517x11){_[_0xfc69[12]](_0xf517x11,function(_0xf517xf){if(!_[_0xfc69[20]](_0xf517xc,_0xf517xf[_0xfc69[19]])){_0xf517xb[_0xfc69[25]](_0xf517xf[_0xfc69[24]]({queuecallerleaveAt:moment()[_0xfc69[22]](_0xfc69[21]),queuecallerexitAt:moment()[_0xfc69[22]](_0xfc69[21]),queuecallerexit:true,queuecallerexitreason:_0xfc69[29]}))}});return models[_0xfc69[30]][_0xfc69[27]]({where:{leaveAt:null}})})[_0xfc69[17]](function(_0xf517x10){_[_0xfc69[12]](_0xf517x10,function(_0xf517xf){if(!_[_0xfc69[20]](_0xf517xc,_0xf517xf[_0xfc69[19]])){_0xf517xb[_0xfc69[25]](_0xf517xf[_0xfc69[24]]({leaveAt:moment()[_0xfc69[22]](_0xfc69[21]),network:_0xfc69[26]}))}});return models[_0xfc69[28]][_0xfc69[27]]({where:{endtime:null}})})[_0xfc69[17]](function(_0xf517xe){_[_0xfc69[12]](_0xf517xe,function(_0xf517xf){if(!_[_0xfc69[20]](_0xf517xc,_0xf517xf[_0xfc69[19]])){_0xf517xb[_0xfc69[25]](_0xf517xf[_0xfc69[24]]({endtime:moment()[_0xfc69[22]](_0xfc69[21]),dialstatus:_0xfc69[23]}))}});return _0xf517xb})[_0xfc69[18]]()[_0xfc69[17]](function(){console[_0xfc69[6]](_0xfc69[16])})[_0xfc69[15]](function(_0xf517xd){console[_0xfc69[6]](_0xfc69[14],_0xf517xd)})}function removeExpiredApplications(_0xf517x9){return models[_0xfc69[50]+ _0xf517x9+ _0xfc69[51]][_0xfc69[27]]({where:{leaveAt:null,timeslot:{$ne:null}}})[_0xfc69[17]](function(_0xf517x17){var _0xf517x18,_0xf517x19=[];_[_0xfc69[12]](_0xf517x17,function(_0xf517x1a){_0xf517x18= moment(_0xf517x1a[_0xfc69[48]])[_0xfc69[47]](_0xf517x1a[_0xfc69[45]],_0xfc69[46]);if(moment()[_0xfc69[49]](_0xf517x18)){_0xf517x19[_0xfc69[25]](_0xf517x1a[_0xfc69[24]]({timeout:true,leaveAt:moment()[_0xfc69[22]](_0xfc69[21])}))}});return _0xf517x19})[_0xfc69[18]]()[_0xfc69[17]](function(){console[_0xfc69[6]](_0xfc69[42]+ _0xf517x9+ _0xfc69[44])})[_0xfc69[15]](function(_0xf517xd){console[_0xfc69[6]](_0xfc69[42]+ _0xf517x9+ _0xfc69[43],_0xf517xd)})}module[_0xfc69[52]]= Cleaner \ No newline at end of file diff --git a/server/config/ami/dial.js b/server/config/ami/dial.js index c3091ba..013aab7 100644 --- a/server/config/ami/dial.js +++ b/server/config/ami/dial.js @@ -1,106 +1 @@ -'use strict'; - -const _ = require('lodash'); -const moment = require('moment'); -const ReportDial = require('../../models').ReportDial; -const util = require('util'); - -function Dial(io) { - console.log('Agent Initialization...'); - - ReportDial.afterCreate(function(doc, options) { - doc.dataValues.evt = 'ReportDial.afterCreate'; - process.send(doc.dataValues); - io.to(util.format('agent:%s', doc.channel.split(/\/|-/)[1])).emit('report_dial:save', doc); - io.to('admins').emit('report_dial:save', doc); - io.to('users').emit('report_dial:save', doc); - }); - - ReportDial.afterUpdate(function(doc, options) { - doc.dataValues.evt = 'ReportDial.afterUpdate'; - doc.dataValues.changed = _.keyBy(doc.changed()); - process.send(doc.dataValues); - io.to(util.format('agent:%s', doc.channel.split(/\/|-/)[1])).emit('report_dial:update', doc); - io.to('admins').emit('report_dial:update', doc); - io.to('users').emit('report_dial:update', doc); - }); - -} - -Dial.prototype.beforeDial = function(evt) { - return createDial(evt); -} - -Dial.prototype.begin = function(evt) { - if (evt.dialstring) { - var dialString = evt.dialstring.split('/'); - if (dialString.length > 1 && dialString[0] !== 'SIP') { - evt.starttime = moment().format("YYYY-MM-DD HH:mm:ss"); - evt.lastevent = 'called'; - return updateDial(evt); - } - } -} - -Dial.prototype.end = function(evt) { - evt.endtime = moment().format("YYYY-MM-DD HH:mm:ss"); - if (evt.dialstatus === 'ANSWER') { - evt.lastevent = 'connect'; - evt.answertime = moment().format("YYYY-MM-DD HH:mm:ss"); - } else { - evt.lastevent = 'rejected'; - } - return updateDial(evt); -} - -Dial.prototype.hangup = function(evt) { - return ReportDial - .findOne({ - where: { - uniqueid: evt.uniqueid - }, - order: 'createdAt DESC' - }) - .then(function(dial) { - if (dial) { - evt.endtime = moment().format("YYYY-MM-DD HH:mm:ss"); - evt.lastevent = dial.answertime ? 'complete' : 'rejected'; - return updateDial(evt); - } - }) -} - -function createDial(evt) { - return ReportDial - .create(evt) - .then(function(data) { - console.log('[dial] begin'); - }) - .catch(function(err) { - console.error('[dial] dial creation error: ' + err); - }); -} - -function updateDial(evt, where) { - return ReportDial - .findOne({ - where: where || { - uniqueid: evt.uniqueid - }, - order: 'createdAt DESC' - }) - .then(function(row) { - if (row) { - return row - .update(evt); - } - }) - .then(function(data) { - console.log('[dial] update'); - }) - .catch(function(err) { - console.error('[dial] update error: ' + err); - }); -} - -module.exports = Dial; +var _0x8f27=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x6D\x6F\x6D\x65\x6E\x74","\x52\x65\x70\x6F\x72\x74\x44\x69\x61\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x75\x74\x69\x6C","\x41\x67\x65\x6E\x74\x20\x49\x6E\x69\x74\x69\x61\x6C\x69\x7A\x61\x74\x69\x6F\x6E\x2E\x2E\x2E","\x6C\x6F\x67","\x65\x76\x74","\x64\x61\x74\x61\x56\x61\x6C\x75\x65\x73","\x52\x65\x70\x6F\x72\x74\x44\x69\x61\x6C\x2E\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x73\x65\x6E\x64","\x72\x65\x70\x6F\x72\x74\x5F\x64\x69\x61\x6C\x3A\x73\x61\x76\x65","\x65\x6D\x69\x74","\x61\x67\x65\x6E\x74\x3A\x25\x73","\x73\x70\x6C\x69\x74","\x63\x68\x61\x6E\x6E\x65\x6C","\x66\x6F\x72\x6D\x61\x74","\x74\x6F","\x61\x64\x6D\x69\x6E\x73","\x75\x73\x65\x72\x73","\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x52\x65\x70\x6F\x72\x74\x44\x69\x61\x6C\x2E\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x63\x68\x61\x6E\x67\x65\x64","\x6B\x65\x79\x42\x79","\x72\x65\x70\x6F\x72\x74\x5F\x64\x69\x61\x6C\x3A\x75\x70\x64\x61\x74\x65","\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x62\x65\x66\x6F\x72\x65\x44\x69\x61\x6C","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x62\x65\x67\x69\x6E","\x64\x69\x61\x6C\x73\x74\x72\x69\x6E\x67","\x2F","\x6C\x65\x6E\x67\x74\x68","\x53\x49\x50","\x73\x74\x61\x72\x74\x74\x69\x6D\x65","\x59\x59\x59\x59\x2D\x4D\x4D\x2D\x44\x44\x20\x48\x48\x3A\x6D\x6D\x3A\x73\x73","\x6C\x61\x73\x74\x65\x76\x65\x6E\x74","\x63\x61\x6C\x6C\x65\x64","\x65\x6E\x64","\x65\x6E\x64\x74\x69\x6D\x65","\x64\x69\x61\x6C\x73\x74\x61\x74\x75\x73","\x41\x4E\x53\x57\x45\x52","\x63\x6F\x6E\x6E\x65\x63\x74","\x61\x6E\x73\x77\x65\x72\x74\x69\x6D\x65","\x72\x65\x6A\x65\x63\x74\x65\x64","\x68\x61\x6E\x67\x75\x70","\x63\x6F\x6D\x70\x6C\x65\x74\x65","\x74\x68\x65\x6E","\x75\x6E\x69\x71\x75\x65\x69\x64","\x63\x72\x65\x61\x74\x65\x64\x41\x74\x20\x44\x45\x53\x43","\x66\x69\x6E\x64\x4F\x6E\x65","\x5B\x64\x69\x61\x6C\x5D\x20\x64\x69\x61\x6C\x20\x63\x72\x65\x61\x74\x69\x6F\x6E\x20\x65\x72\x72\x6F\x72\x3A\x20","\x65\x72\x72\x6F\x72","\x63\x61\x74\x63\x68","\x5B\x64\x69\x61\x6C\x5D\x20\x62\x65\x67\x69\x6E","\x63\x72\x65\x61\x74\x65","\x5B\x64\x69\x61\x6C\x5D\x20\x75\x70\x64\x61\x74\x65\x20\x65\x72\x72\x6F\x72\x3A\x20","\x5B\x64\x69\x61\x6C\x5D\x20\x75\x70\x64\x61\x74\x65","\x75\x70\x64\x61\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0x8f27[0];const _=require(_0x8f27[1]);const moment=require(_0x8f27[2]);const ReportDial=require(_0x8f27[4])[_0x8f27[3]];const util=require(_0x8f27[5]);function Dial(_0x3977x6){console[_0x8f27[7]](_0x8f27[6]);ReportDial[_0x8f27[21]](function(_0x3977x7,_0x3977x8){_0x3977x7[_0x8f27[9]][_0x8f27[8]]= _0x8f27[10];process[_0x8f27[11]](_0x3977x7[_0x8f27[9]]);_0x3977x6[_0x8f27[18]](util[_0x8f27[17]](_0x8f27[14],_0x3977x7[_0x8f27[16]][_0x8f27[15]](/\/|-/)[1]))[_0x8f27[13]](_0x8f27[12],_0x3977x7);_0x3977x6[_0x8f27[18]](_0x8f27[19])[_0x8f27[13]](_0x8f27[12],_0x3977x7);_0x3977x6[_0x8f27[18]](_0x8f27[20])[_0x8f27[13]](_0x8f27[12],_0x3977x7)});ReportDial[_0x8f27[26]](function(_0x3977x7,_0x3977x8){_0x3977x7[_0x8f27[9]][_0x8f27[8]]= _0x8f27[22];_0x3977x7[_0x8f27[9]][_0x8f27[23]]= _[_0x8f27[24]](_0x3977x7[_0x8f27[23]]());process[_0x8f27[11]](_0x3977x7[_0x8f27[9]]);_0x3977x6[_0x8f27[18]](util[_0x8f27[17]](_0x8f27[14],_0x3977x7[_0x8f27[16]][_0x8f27[15]](/\/|-/)[1]))[_0x8f27[13]](_0x8f27[25],_0x3977x7);_0x3977x6[_0x8f27[18]](_0x8f27[19])[_0x8f27[13]](_0x8f27[25],_0x3977x7);_0x3977x6[_0x8f27[18]](_0x8f27[20])[_0x8f27[13]](_0x8f27[25],_0x3977x7)})}Dial[_0x8f27[28]][_0x8f27[27]]= function(_0x3977x9){return createDial(_0x3977x9)};Dial[_0x8f27[28]][_0x8f27[29]]= function(_0x3977x9){if(_0x3977x9[_0x8f27[30]]){var _0x3977xa=_0x3977x9[_0x8f27[30]][_0x8f27[15]](_0x8f27[31]);if(_0x3977xa[_0x8f27[32]]> 1&& _0x3977xa[0]!== _0x8f27[33]){_0x3977x9[_0x8f27[34]]= moment()[_0x8f27[17]](_0x8f27[35]);_0x3977x9[_0x8f27[36]]= _0x8f27[37];return updateDial(_0x3977x9)}}};Dial[_0x8f27[28]][_0x8f27[38]]= function(_0x3977x9){_0x3977x9[_0x8f27[39]]= moment()[_0x8f27[17]](_0x8f27[35]);if(_0x3977x9[_0x8f27[40]]=== _0x8f27[41]){_0x3977x9[_0x8f27[36]]= _0x8f27[42];_0x3977x9[_0x8f27[43]]= moment()[_0x8f27[17]](_0x8f27[35])}else {_0x3977x9[_0x8f27[36]]= _0x8f27[44]};return updateDial(_0x3977x9)};Dial[_0x8f27[28]][_0x8f27[45]]= function(_0x3977x9){return ReportDial[_0x8f27[50]]({where:{uniqueid:_0x3977x9[_0x8f27[48]]},order:_0x8f27[49]})[_0x8f27[47]](function(_0x3977xb){if(_0x3977xb){_0x3977x9[_0x8f27[39]]= moment()[_0x8f27[17]](_0x8f27[35]);_0x3977x9[_0x8f27[36]]= _0x3977xb[_0x8f27[43]]?_0x8f27[46]:_0x8f27[44];return updateDial(_0x3977x9)}})};function createDial(_0x3977x9){return ReportDial[_0x8f27[55]](_0x3977x9)[_0x8f27[47]](function(_0x3977xe){console[_0x8f27[7]](_0x8f27[54])})[_0x8f27[53]](function(_0x3977xd){console[_0x8f27[52]](_0x8f27[51]+ _0x3977xd)})}function updateDial(_0x3977x9,_0x3977x10){return ReportDial[_0x8f27[50]]({where:_0x3977x10|| {uniqueid:_0x3977x9[_0x8f27[48]]},order:_0x8f27[49]})[_0x8f27[47]](function(_0x3977x11){if(_0x3977x11){return _0x3977x11[_0x8f27[58]](_0x3977x9)}})[_0x8f27[47]](function(_0x3977xe){console[_0x8f27[7]](_0x8f27[57])})[_0x8f27[53]](function(_0x3977xd){console[_0x8f27[52]](_0x8f27[56]+ _0x3977xd)})}module[_0x8f27[59]]= Dial \ No newline at end of file diff --git a/server/config/ami/fax.js b/server/config/ami/fax.js index 7ab4722..2168da6 100644 --- a/server/config/ami/fax.js +++ b/server/config/ami/fax.js @@ -1,651 +1 @@ -'use stict'; - -var fs = require('fs'); -var util = require('util'); -var path = require('path'); -var config = require('../../config/environment'); -var _ = require('lodash'); -var Promise = require('bluebird'); - -// var tiff2pdf = Promise.promisify(require('tiff2pdf')); -var exec = require('child-process-promise').exec; -var fse = require('fs-extra'); -var moment = require('moment'); - -var FaxAccount = require('../../models').FaxAccount; -var FaxRoom = require('../../models').FaxRoom; -var FaxMessage = require('../../models').FaxMessage; -var FaxAttachment = require('../../models').FaxAttachment; -var ReportFax = require('../../models').ReportFax; -var Trunk = require('../../models').Trunk; -var User = require('../../models').User; -var Contact = require('../../models').Contact; -var Util = require('../util'); - -var Scheduler = require('../routing/scheduler'); -var faxaccounts; -var io; - -function Fax(ami, socket) { - console.log('Fax Initialization...'); - - io = socket; - - ReportFax.afterCreate(function(doc, options) { - io.emit('report_fax:save', doc); - }); - - process.on('message', function(data) { - switch (data.message) { - case 'FaxMessage.afterCreate': - sendfax(data.doc, ami, 0, data.options); - break; - case 'FaxMessage.afterUpdate': - if (_.includes(data.options.changed, 'status') && data.doc.status === 'SENDING') { - sendfax(data.doc, ami, data.doc.retry + 1, data.options); - } - break; - case 'ReportFax.afterUpdate': - var account = _.find(faxaccounts, { - id: parseInt(data.doc.accountid) - }); - if (account && _.includes(data.options.changed, 'connectid')) { - webhook(data.doc, account, 'accept'); - } - if (account && _.includes(data.options.changed, 'rejectedAt')) { - webhook(data.doc, account, 'reject'); - } - break; - case 'FaxRoom.afterUpdate': - var account1 = _.find(faxaccounts, { - id: data.doc.FaxAccountId - }); - if (account1 && _.includes(data.options.changed, 'status') && data.doc.status === 'CLOSED') { - webhook(data.doc, account1, 'close'); - } - break; - case 'FaxAccount.afterCreate': - faxaccounts.push(data.doc); - break; - case 'FaxAccount.afterUpdate': - var oldItem = _.find(faxaccounts, { - id: data.doc.id - }); - if (oldItem) { - console.log('Fax account: ' + oldItem.name + ' Update'); - _.merge(oldItem, data.doc); - } else { - faxaccounts.unshift(data.doc); - } - break; - case 'FaxAccount.afterDestroy': - _.remove(faxaccounts, { - id: data.doc.id - }); - break; - default: - } - }); - - FaxAccount - .findAll() - .then(function(accounts) { - faxaccounts = accounts; - }) - .catch(function(err) { - console.error(err); - }); -} - -function webhook(doc, account, hook) { - var _Account = account; - switch (hook) { - case 'accept': - if (_Account.acceptMethod && _Account.acceptUrl) { - console.log('Fax account <' + _Account.name + '> executing accept webhook'); - execRequest(doc.dataValues || doc, _Account.acceptMethod, _Account.acceptUrl); - } - if (_Account.actions.length) { - _.forEach(_Account.actions, function(action) { - if (action.enabled) { - Util.execAction(action, doc); - } - }) - } - break; - case 'reject': - if (_Account.rejectMethod && _Account.rejectUrl) { - console.log('Fax account <' + _Account.name + '> executing reject webhook'); - execRequest(doc.dataValues || doc, _Account.rejectMethod, _Account.rejectUrl); - } - break; - case 'close': - if (_Account.closeMethod && _Account.closeUrl) { - console.log('Fax account <' + _Account.name + '> executing close webhook'); - execRequest(doc.dataValues || doc, _Account.closeMethod, _Account.closeUrl); - } - break; - default: - console.log('Webhook not recognized'); - } -} - -function execRequest(doc, method, url) { - return Util - .sendRequest(doc, method, url) - .then(function(values) { - console.log('request successeful!'); - }) - .catch(function(err) { - console.log('request failed!'); - }) -} - -Fax.prototype.updateError = function(evt) { - return FaxMessage - .findOne({ - where: { - channel: evt.channel - } - }) - .then(function(faxMessage) { - if (!faxMessage) { - throw new Error('[Fax] Message not found'); - } - return faxMessage.updateAttributes({ - error: evt.value - }); - }) - .then(function(message) { - io.emit('fax_message:save', message); - }) - .catch(function(err) { - console.error('[Fax] Error updating error:', err); - console.error('[Fax] Message:', err.message); - console.error('[Fax] Stack:', err.stack); - }); -}; - -Fax.prototype.updateMessage = function(evt) { - return FaxMessage - .findOne({ - where: { - filename: evt.filename, - localstationid: evt.localstationid - } - }) - .then(function(faxMessage) { - if (!faxMessage) { - throw new Error('[Fax] Message not found'); - } - - return faxMessage - .updateAttributes({ - channel: evt.channel, - channelstate: evt.channelstate, - channelstatedesc: evt.channelstatedesc, - calleridnum: evt.calleridnum, - calleridname: evt.calleridname, - connectedlinenum: evt.connectedlinenum, - connectedlinename: evt.connectedlinename, - accountcode: evt.accountcode, - context: evt.context, - exten: evt.exten, - priority: evt.priority, - uniqueid: evt.uniqueid, - linkedid: evt.linkedid, - lastStatus: evt.status - }); - - }) - .then(function(message) { - io.emit('fax_message:save', message); - }) - .catch(function(err) { - console.error('[Fax] Error updating message:', err); - console.error('[Fax] Message:', err.message); - console.error('[Fax] Stack:', err.stack); - }); -} - -Fax.prototype.updateSend = function(evt) { - var _fMessage; - - return FaxMessage - .findOne({ - where: { - filename: evt.filename, - localstationid: evt.localstationid - } - }) - .then(function(faxMessage) { - if (!faxMessage) { - throw new Error('[Fax] Message not found'); - } - - _fMessage = faxMessage; - - var status = 'SENT'; - if (evt.pagestransferred == '0') { - status = 'FAILED'; - } - - return _fMessage - .updateAttributes({ - remotestationid: evt.remotestationid, - pagestransferred: evt.pagestransferred, - resolution: evt.resolution, - transferrate: evt.transferrate, - status: status - }); - - }) - .then(function(message) { - io.emit('fax_message:save', message); - console.log('[Fax] Message update for SendFax event', message.id); - return _fMessage.getFaxRoom(); - }) - .then(function(faxRoom) { - if (!faxRoom) { - throw new Error('[Fax] Room not found'); - } - return faxRoom - .updateAttributes({ - lastEvent: 'SENT' - }, { - individualHooks: true - }); - }) - .then(function(room) { - console.log('[Fax] Room update for SendFax event', room.id); - io.emit('fax_room:save', room); - }) - .catch(function(err) { - console.error('[Fax] Error updating sending message:', err); - console.error('[Fax] Message:', err.message); - console.error('[Fax] Stack:', err.stack); - }); -} - -Fax.prototype.receivefax = function(evt) { - - console.log(util.format('[Fax] New message from %s', evt.calleridnum)); - var _message = _.clone(evt); - var _account; - var _fMessage, _fRoom; - - //Get the FaxAccount based on localstationid - return FaxAccount - .findOne({ - where: { - localstationid: evt.localstationid - } - }) - .then(function(faxAccount) { - if (!faxAccount) { - throw new Error('[Fax] Account not found'); - } - console.log('[Fax] Account found:', evt.localstationid); - _account = faxAccount; - if (_account.ListId) { - return Contact - .findOrCreate({ - where: { - ListId: _account.ListId, - $or: [{ - phone: evt.calleridnum - }, { - fax: evt.calleridnum - }] - }, - defaults: { - phone: evt.calleridnum, - fax: evt.calleridnum, - firstName: evt.calleridnum, - ListId: _account.ListId - } - }); - } else { - return []; - } - }) - .spread(function(contact, created) { - if (created != undefined && !created) { - return contact.updateAttributes({ - fax: evt.calleridnum - }); - } - return; - }) - .then(function() { - return FaxRoom - .findAll({ - limit: 1, - where: { - contact: _message.calleridnum, - FaxAccountId: _account.id, - status: { - $ne: 'CLOSED' - } - }, - order: [ - ['createdAt', 'DESC'] - ] - }) - }) - .then(function(room) { - if (room.length) { - room = _.first(room); - return room - .updateAttributes({ - lastEvent: 'RECEIVED', - lastEventAt: moment().format('YYYY-MM-DD HH:mm:ss'), - status: 'OPEN', - openReason: 'system', - faxIn: ++room.faxIn - }); - } else { - return FaxRoom - .create({ - contact: _message.calleridnum, - account: _account.name, - status: 'NEW', - lastEvent: 'RECEIVED', - lastEventAt: moment().format('YYYY-MM-DD HH:mm:ss'), - FaxAccountId: _account.id, - faxIn: 1 - }); - } - }) - .then(function(room) { - if (!room) { - throw new Error('[Fax] Room not found/created'); - } - console.log('[Fax] Room:', room.id); - io.emit('fax_room:save', room); - _fRoom = room; - _message.FaxRoomId = room.id; - _message.status = 'RECEIVED'; - _message.from = _message.calleridnum; - _message.to = _message.localstationid; - return FaxMessage.create(_message); - }) - .then(function(message) { - if (!message) { - throw new Error('[Fax] Message not created'); - } - _fMessage = message; - io.emit('fax_message:save', message); - console.log('[Fax] Message:', message.id); - var _files = []; - var name = path.parse(evt.filename).name; - var namePdf = name + '.pdf'; - return FaxAttachment - .create({ - path: path.join(config.root, 'server', 'files', 'fax', 'inbound', 'converted', namePdf), - basename: namePdf, - name: name, - FaxMessageId: message.id - }); - }) - .then(function(faxAttachment) { - if (!faxAttachment) { - throw new Error('[Fax] Attachment not created'); - } - console.log('[Fax] Attachment:', faxAttachment.id); - return exec('tiff2pdf -o ' + faxAttachment.path + ' ' + evt.filename); - // return tiff2pdf(evt.filename, path.join(config.root, 'server', 'files', 'fax', 'inbound', 'converted', '/')); - }) - .then(function() { - console.log('[Fax] File correctly converted'); - var scheduler = new Scheduler({ - channel: 'fax', - uniqueid: util.format('%s.%s', moment().unix(), _fRoom.id), - messageid: _fMessage.id, - roomid: _fRoom.id, - accountid: _account.id, - accountname: _account.name, - accountphone: _account.localstationid, - from: _fMessage.from - }) - - scheduler.init(); - }) - .catch(function(err) { - console.error('[Fax] Error receiving message:', err); - console.error('[Fax] Message:', err.message); - console.error('[Fax] Stack:', err.stack); - }); - -}; - -function sendfax(message, ami, retry, opt, io) { - if (message.status === 'SENDING') { - var _fRoom; - var _fMessage = message; - var _fFrom = message.from; - var _fTo = message.to; - var _fAccount; - var _fTrunk; - var _originalFile, _convertedFile; - - return FaxAccount - .findOne({ - where: { - localstationid: _fMessage.from - } - }) - .then(function(faxAccount) { - if (!faxAccount) { - throw new Error('[Fax] Account not found'); - } - console.log('[Fax] Account found:', faxAccount.localstationid); - _fAccount = _.clone(faxAccount.dataValues); - return Trunk.findOne({ - where: { - name: _fAccount.TrunkName - }, - attributes: ['name'] - }); - }) - .then(function(trunk) { - if (!trunk) { - throw new Error('[Fax] Trunk not found'); - } - console.log('[Fax] Trunk found:', trunk.name); - _fTrunk = _.clone(trunk.dataValues); - return; - }) - .then(function() { - return [_fAccount, _fMessage]; - }) - .spread(getFaxRoom()) - .then(function(faxRoom) { - if (!faxRoom) { - throw new Error('[Fax] Room not found'); - } - console.log('[Fax] Room:', faxRoom.id); - _fRoom = faxRoom; - return _fRoom.addFaxMessage(_fMessage.id); - }) - .then(function() { - return _fRoom - .updateAttributes({ - status: 'PENDING', - lastEvent: 'SENDING', - lastEventAt: moment().format('YYYY-MM-DD HH:mm:ss'), - faxOut: ++_fRoom.faxOut - }, { - individualHooks: true, - user: opt.user - }); - }) - .then(function(data) { - console.log('[Fax] Room updated:', data.id); - io.emit('fax_room:save', data); - return _fRoom.addUser(_fMessage.UserId); - }) - .then(function() { - return User.findById(_fMessage.UserId); - }) - .then(function() { - if (_fAccount.ListId) { - return Contact - .findOrCreate({ - where: { - ListId: _fAccount.ListId, - $or: [{ - phone: _fTo - }, { - fax: _fTo - }] - }, - defaults: { - fax: _fTo, - phone: _fTo, - firstName: _fTo, - ListId: _fAccount.ListId - } - }); - } else { - return []; - } - }) - .spread(function(contact, created) { - if (created != undefined && !created) { - return contact.updateAttributes({ - fax: _fTo - }); - } - return; - }) - .then(function() { - _originalFile = _fMessage.FaxAttachments[0].path; - if (_fMessage.FaxAttachments[0].type === 'application/pdf') { - //File is PDF - _convertedFile = path.join(config.root, 'server', 'files', 'fax', 'outbound', 'converted', '/', path.parse(_originalFile).name + '.tif'); - return exec('gs -q -dNOPAUSE -dBATCH -sDEVICE=tiffg4 -sPAPERSIZE=letter -sOutputFile=' + _convertedFile + ' ' + _originalFile); - } else { - //File is TIFF: no conversation but I copy in the converted directory - _convertedFile = path.join(config.root, 'server', 'files', 'fax', 'outbound', 'converted', '/', path.parse(_originalFile).base); - fse.copySync(_originalFile, _convertedFile); - return; - } - }) - .then(function() { - fs.chmodSync(_convertedFile, 511); //511 is the decimal version of 777 - console.log('[Fax] File correctly converted and ready to use'); - return FaxMessage - .update({ - filename: _convertedFile, - localstationid: _fMessage.from, - retry: retry - }, { - where: { - id: _fMessage.id - } - }); - }) - .then(function(message) { - if (message) { - io.emit('fax_message:save', message); - } - return Promise - .promisify(ami.action)({ - action: 'originate', - channel: util.format('%s/%s/%s', _fAccount.tech, _fTrunk.name, _fTo), - exten: _fTo, - context: 'outbound-fax', - priority: 1, - callerid: util.format("\"%s\" <%s>", _fAccount.localstationid, _fAccount.localstationid), - variable: { - FAXNAME: _fAccount.name, - FAXNUMBER: _fTo, - FAXECM: _fAccount.ecm, - FAXHEADERINFO: _fAccount.headerinfo, - FAXLOCALSTATIONID: _fAccount.localstationid, - FAXMINRATE: _fAccount.minrate, - FAXMAXRATE: _fAccount.maxrate, - FAXMODEM: util.format('\"%s\"', _fAccount.modem), - FAXGATEWAY: _fAccount.gateway, - FAXT38TIMEOUT: _fAccount.t38timeout, - FAXOUTFILE: _convertedFile - }, - account: _fAccount.localstationid - }); - }) - .then(function(res) { - console.log('[Fax] Response to AMI Action Originate'); - console.log(res); - }) - .catch(function(err) { - console.error('[Fax] Error sending message:', err); - console.error('[Fax] Message:', err.message); - console.error('[Fax] Stack:', err.stack); - return FaxMessage - .update({ - status: 'FAILED' - }, { - where: { - id: _fMessage.id - } - }) - .then(function(data) { - io.emit('fax_message:save', data); - if (_fRoom) { - return _fRoom.updateAttributes({ - lastEvent: 'FAILED' - }); - } - return; - }) - .then(function(data) { - if (data) { - io.emit('fax_room:save', data); - } - }) - .catch(function(err) { - console.error('[Fax] Error updating error status:', err); - console.error('[Fax] Message:', err.message); - console.error('[Fax] Stack:', err.stack); - }); - }); - } -} - -function getFaxRoom() { - return function(account, faxMessage) { - if (faxMessage.FaxRoomId) { - return FaxRoom.findById(faxMessage.FaxRoomId); - } else { - return FaxRoom - .findAll({ - limit: 1, - where: { - contact: faxMessage.to, - FaxAccountId: account.id - }, - order: [ - ['createdAt', 'DESC'] - ] - }) - .then(function(faxrooms) { - var room = _.first(faxrooms); - if (!room || room.status === 'CLOSED') { - return FaxRoom - .create({ - contact: faxMessage.to, - account: account.name, - status: 'PENDING', - FaxAccountId: account.id, - }) - } else { - return room; - } - }) - } - - } -} - -module.exports = Fax; +var _0x7b4b=["\x75\x73\x65\x20\x73\x74\x69\x63\x74","\x66\x73","\x75\x74\x69\x6C","\x70\x61\x74\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x6C\x6F\x64\x61\x73\x68","\x62\x6C\x75\x65\x62\x69\x72\x64","\x65\x78\x65\x63","\x63\x68\x69\x6C\x64\x2D\x70\x72\x6F\x63\x65\x73\x73\x2D\x70\x72\x6F\x6D\x69\x73\x65","\x66\x73\x2D\x65\x78\x74\x72\x61","\x6D\x6F\x6D\x65\x6E\x74","\x46\x61\x78\x41\x63\x63\x6F\x75\x6E\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x46\x61\x78\x52\x6F\x6F\x6D","\x46\x61\x78\x4D\x65\x73\x73\x61\x67\x65","\x46\x61\x78\x41\x74\x74\x61\x63\x68\x6D\x65\x6E\x74","\x52\x65\x70\x6F\x72\x74\x46\x61\x78","\x54\x72\x75\x6E\x6B","\x55\x73\x65\x72","\x43\x6F\x6E\x74\x61\x63\x74","\x2E\x2E\x2F\x75\x74\x69\x6C","\x2E\x2E\x2F\x72\x6F\x75\x74\x69\x6E\x67\x2F\x73\x63\x68\x65\x64\x75\x6C\x65\x72","\x46\x61\x78\x20\x49\x6E\x69\x74\x69\x61\x6C\x69\x7A\x61\x74\x69\x6F\x6E\x2E\x2E\x2E","\x6C\x6F\x67","\x72\x65\x70\x6F\x72\x74\x5F\x66\x61\x78\x3A\x73\x61\x76\x65","\x65\x6D\x69\x74","\x61\x67\x65\x6E\x74\x3A\x25\x73","\x6D\x65\x6D\x62\x65\x72\x69\x64","\x66\x6F\x72\x6D\x61\x74","\x74\x6F","\x75\x73\x65\x72\x73","\x61\x64\x6D\x69\x6E\x73","\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x6D\x65\x73\x73\x61\x67\x65","\x64\x6F\x63","\x6F\x70\x74\x69\x6F\x6E\x73","\x46\x61\x78\x4D\x65\x73\x73\x61\x67\x65\x2E\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x63\x68\x61\x6E\x67\x65\x64","\x73\x74\x61\x74\x75\x73","\x69\x6E\x63\x6C\x75\x64\x65\x73","\x53\x45\x4E\x44\x49\x4E\x47","\x72\x65\x74\x72\x79","\x46\x61\x78\x4D\x65\x73\x73\x61\x67\x65\x2E\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x61\x63\x63\x6F\x75\x6E\x74\x69\x64","\x66\x69\x6E\x64","\x63\x6F\x6E\x6E\x65\x63\x74\x69\x64","\x61\x63\x63\x65\x70\x74","\x72\x65\x6A\x65\x63\x74\x65\x64\x41\x74","\x72\x65\x6A\x65\x63\x74","\x52\x65\x70\x6F\x72\x74\x46\x61\x78\x2E\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x46\x61\x78\x41\x63\x63\x6F\x75\x6E\x74\x49\x64","\x43\x4C\x4F\x53\x45\x44","\x63\x6C\x6F\x73\x65","\x46\x61\x78\x52\x6F\x6F\x6D\x2E\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x70\x75\x73\x68","\x46\x61\x78\x41\x63\x63\x6F\x75\x6E\x74\x2E\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x69\x64","\x46\x61\x78\x20\x61\x63\x63\x6F\x75\x6E\x74\x3A\x20","\x6E\x61\x6D\x65","\x20\x55\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x75\x6E\x73\x68\x69\x66\x74","\x46\x61\x78\x41\x63\x63\x6F\x75\x6E\x74\x2E\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x72\x65\x6D\x6F\x76\x65","\x46\x61\x78\x41\x63\x63\x6F\x75\x6E\x74\x2E\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79","\x6F\x6E","\x65\x72\x72\x6F\x72","\x63\x61\x74\x63\x68","\x74\x68\x65\x6E","\x66\x69\x6E\x64\x41\x6C\x6C","\x61\x63\x63\x65\x70\x74\x4D\x65\x74\x68\x6F\x64","\x61\x63\x63\x65\x70\x74\x55\x72\x6C","\x46\x61\x78\x20\x61\x63\x63\x6F\x75\x6E\x74\x20\x3C","\x3E\x20\x65\x78\x65\x63\x75\x74\x69\x6E\x67\x20\x61\x63\x63\x65\x70\x74\x20\x77\x65\x62\x68\x6F\x6F\x6B","\x64\x61\x74\x61\x56\x61\x6C\x75\x65\x73","\x6C\x65\x6E\x67\x74\x68","\x61\x63\x74\x69\x6F\x6E\x73","\x65\x6E\x61\x62\x6C\x65\x64","\x65\x78\x65\x63\x41\x63\x74\x69\x6F\x6E","\x66\x6F\x72\x45\x61\x63\x68","\x72\x65\x6A\x65\x63\x74\x4D\x65\x74\x68\x6F\x64","\x72\x65\x6A\x65\x63\x74\x55\x72\x6C","\x3E\x20\x65\x78\x65\x63\x75\x74\x69\x6E\x67\x20\x72\x65\x6A\x65\x63\x74\x20\x77\x65\x62\x68\x6F\x6F\x6B","\x63\x6C\x6F\x73\x65\x4D\x65\x74\x68\x6F\x64","\x63\x6C\x6F\x73\x65\x55\x72\x6C","\x3E\x20\x65\x78\x65\x63\x75\x74\x69\x6E\x67\x20\x63\x6C\x6F\x73\x65\x20\x77\x65\x62\x68\x6F\x6F\x6B","\x57\x65\x62\x68\x6F\x6F\x6B\x20\x6E\x6F\x74\x20\x72\x65\x63\x6F\x67\x6E\x69\x7A\x65\x64","\x72\x65\x71\x75\x65\x73\x74\x20\x66\x61\x69\x6C\x65\x64\x21","\x72\x65\x71\x75\x65\x73\x74\x20\x73\x75\x63\x63\x65\x73\x73\x65\x66\x75\x6C\x21","\x73\x65\x6E\x64\x52\x65\x71\x75\x65\x73\x74","\x75\x70\x64\x61\x74\x65\x45\x72\x72\x6F\x72","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x5B\x46\x61\x78\x5D\x20\x45\x72\x72\x6F\x72\x20\x75\x70\x64\x61\x74\x69\x6E\x67\x20\x65\x72\x72\x6F\x72\x3A","\x66\x61\x78\x5F\x6D\x65\x73\x73\x61\x67\x65\x3A\x73\x61\x76\x65","\x5B\x46\x61\x78\x5D\x20\x4D\x65\x73\x73\x61\x67\x65\x20\x6E\x6F\x74\x20\x66\x6F\x75\x6E\x64","\x76\x61\x6C\x75\x65","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x63\x68\x61\x6E\x6E\x65\x6C","\x66\x69\x6E\x64\x4F\x6E\x65","\x75\x70\x64\x61\x74\x65\x4D\x65\x73\x73\x61\x67\x65","\x5B\x46\x61\x78\x5D\x20\x45\x72\x72\x6F\x72\x20\x75\x70\x64\x61\x74\x69\x6E\x67\x20\x6D\x65\x73\x73\x61\x67\x65\x3A","\x5B\x46\x61\x78\x5D\x20\x4D\x65\x73\x73\x61\x67\x65\x3A","\x5B\x46\x61\x78\x5D\x20\x53\x74\x61\x63\x6B\x3A","\x73\x74\x61\x63\x6B","\x63\x68\x61\x6E\x6E\x65\x6C\x73\x74\x61\x74\x65","\x63\x68\x61\x6E\x6E\x65\x6C\x73\x74\x61\x74\x65\x64\x65\x73\x63","\x63\x61\x6C\x6C\x65\x72\x69\x64\x6E\x75\x6D","\x63\x61\x6C\x6C\x65\x72\x69\x64\x6E\x61\x6D\x65","\x63\x6F\x6E\x6E\x65\x63\x74\x65\x64\x6C\x69\x6E\x65\x6E\x75\x6D","\x63\x6F\x6E\x6E\x65\x63\x74\x65\x64\x6C\x69\x6E\x65\x6E\x61\x6D\x65","\x61\x63\x63\x6F\x75\x6E\x74\x63\x6F\x64\x65","\x63\x6F\x6E\x74\x65\x78\x74","\x65\x78\x74\x65\x6E","\x70\x72\x69\x6F\x72\x69\x74\x79","\x75\x6E\x69\x71\x75\x65\x69\x64","\x6C\x69\x6E\x6B\x65\x64\x69\x64","\x66\x69\x6C\x65\x6E\x61\x6D\x65","\x6C\x6F\x63\x61\x6C\x73\x74\x61\x74\x69\x6F\x6E\x69\x64","\x75\x70\x64\x61\x74\x65\x53\x65\x6E\x64","\x5B\x46\x61\x78\x5D\x20\x45\x72\x72\x6F\x72\x20\x75\x70\x64\x61\x74\x69\x6E\x67\x20\x73\x65\x6E\x64\x69\x6E\x67\x20\x6D\x65\x73\x73\x61\x67\x65\x3A","\x5B\x46\x61\x78\x5D\x20\x52\x6F\x6F\x6D\x20\x75\x70\x64\x61\x74\x65\x20\x66\x6F\x72\x20\x53\x65\x6E\x64\x46\x61\x78\x20\x65\x76\x65\x6E\x74","\x66\x61\x78\x5F\x72\x6F\x6F\x6D\x3A\x73\x61\x76\x65","\x5B\x46\x61\x78\x5D\x20\x52\x6F\x6F\x6D\x20\x6E\x6F\x74\x20\x66\x6F\x75\x6E\x64","\x53\x45\x4E\x54","\x5B\x46\x61\x78\x5D\x20\x4D\x65\x73\x73\x61\x67\x65\x20\x75\x70\x64\x61\x74\x65\x20\x66\x6F\x72\x20\x53\x65\x6E\x64\x46\x61\x78\x20\x65\x76\x65\x6E\x74","\x67\x65\x74\x46\x61\x78\x52\x6F\x6F\x6D","\x70\x61\x67\x65\x73\x74\x72\x61\x6E\x73\x66\x65\x72\x72\x65\x64","\x30","\x46\x41\x49\x4C\x45\x44","\x72\x65\x6D\x6F\x74\x65\x73\x74\x61\x74\x69\x6F\x6E\x69\x64","\x72\x65\x73\x6F\x6C\x75\x74\x69\x6F\x6E","\x74\x72\x61\x6E\x73\x66\x65\x72\x72\x61\x74\x65","\x72\x65\x63\x65\x69\x76\x65\x66\x61\x78","\x5B\x46\x61\x78\x5D\x20\x4E\x65\x77\x20\x6D\x65\x73\x73\x61\x67\x65\x20\x66\x72\x6F\x6D\x20\x25\x73","\x63\x6C\x6F\x6E\x65","\x5B\x46\x61\x78\x5D\x20\x45\x72\x72\x6F\x72\x20\x72\x65\x63\x65\x69\x76\x69\x6E\x67\x20\x6D\x65\x73\x73\x61\x67\x65\x3A","\x5B\x46\x61\x78\x5D\x20\x46\x69\x6C\x65\x20\x63\x6F\x72\x72\x65\x63\x74\x6C\x79\x20\x63\x6F\x6E\x76\x65\x72\x74\x65\x64","\x66\x61\x78","\x25\x73\x2E\x25\x73","\x75\x6E\x69\x78","\x66\x72\x6F\x6D","\x69\x6E\x69\x74","\x5B\x46\x61\x78\x5D\x20\x41\x74\x74\x61\x63\x68\x6D\x65\x6E\x74\x20\x6E\x6F\x74\x20\x63\x72\x65\x61\x74\x65\x64","\x5B\x46\x61\x78\x5D\x20\x41\x74\x74\x61\x63\x68\x6D\x65\x6E\x74\x3A","\x74\x69\x66\x66\x32\x70\x64\x66\x20\x2D\x6F\x20","\x20","\x5B\x46\x61\x78\x5D\x20\x4D\x65\x73\x73\x61\x67\x65\x20\x6E\x6F\x74\x20\x63\x72\x65\x61\x74\x65\x64","\x70\x61\x72\x73\x65","\x2E\x70\x64\x66","\x72\x6F\x6F\x74","\x73\x65\x72\x76\x65\x72","\x66\x69\x6C\x65\x73","\x69\x6E\x62\x6F\x75\x6E\x64","\x63\x6F\x6E\x76\x65\x72\x74\x65\x64","\x6A\x6F\x69\x6E","\x63\x72\x65\x61\x74\x65","\x5B\x46\x61\x78\x5D\x20\x52\x6F\x6F\x6D\x20\x6E\x6F\x74\x20\x66\x6F\x75\x6E\x64\x2F\x63\x72\x65\x61\x74\x65\x64","\x5B\x46\x61\x78\x5D\x20\x52\x6F\x6F\x6D\x3A","\x46\x61\x78\x52\x6F\x6F\x6D\x49\x64","\x52\x45\x43\x45\x49\x56\x45\x44","\x66\x69\x72\x73\x74","\x59\x59\x59\x59\x2D\x4D\x4D\x2D\x44\x44\x20\x48\x48\x3A\x6D\x6D\x3A\x73\x73","\x4F\x50\x45\x4E","\x73\x79\x73\x74\x65\x6D","\x66\x61\x78\x49\x6E","\x4E\x45\x57","\x63\x72\x65\x61\x74\x65\x64\x41\x74","\x44\x45\x53\x43","\x73\x70\x72\x65\x61\x64","\x5B\x46\x61\x78\x5D\x20\x41\x63\x63\x6F\x75\x6E\x74\x20\x6E\x6F\x74\x20\x66\x6F\x75\x6E\x64","\x5B\x46\x61\x78\x5D\x20\x41\x63\x63\x6F\x75\x6E\x74\x20\x66\x6F\x75\x6E\x64\x3A","\x4C\x69\x73\x74\x49\x64","\x66\x69\x6E\x64\x4F\x72\x43\x72\x65\x61\x74\x65","\x5B\x46\x61\x78\x5D\x20\x45\x72\x72\x6F\x72\x20\x73\x65\x6E\x64\x69\x6E\x67\x20\x6D\x65\x73\x73\x61\x67\x65\x3A","\x5B\x46\x61\x78\x5D\x20\x45\x72\x72\x6F\x72\x20\x75\x70\x64\x61\x74\x69\x6E\x67\x20\x65\x72\x72\x6F\x72\x20\x73\x74\x61\x74\x75\x73\x3A","\x75\x70\x64\x61\x74\x65","\x5B\x46\x61\x78\x5D\x20\x52\x65\x73\x70\x6F\x6E\x73\x65\x20\x74\x6F\x20\x41\x4D\x49\x20\x41\x63\x74\x69\x6F\x6E\x20\x4F\x72\x69\x67\x69\x6E\x61\x74\x65","\x6F\x72\x69\x67\x69\x6E\x61\x74\x65","\x25\x73\x2F\x25\x73\x2F\x25\x73","\x74\x65\x63\x68","\x6F\x75\x74\x62\x6F\x75\x6E\x64\x2D\x66\x61\x78","\x22\x25\x73\x22\x20\x3C\x25\x73\x3E","\x65\x63\x6D","\x68\x65\x61\x64\x65\x72\x69\x6E\x66\x6F","\x6D\x69\x6E\x72\x61\x74\x65","\x6D\x61\x78\x72\x61\x74\x65","\x22\x25\x73\x22","\x6D\x6F\x64\x65\x6D","\x67\x61\x74\x65\x77\x61\x79","\x74\x33\x38\x74\x69\x6D\x65\x6F\x75\x74","\x61\x63\x74\x69\x6F\x6E","\x70\x72\x6F\x6D\x69\x73\x69\x66\x79","\x63\x68\x6D\x6F\x64\x53\x79\x6E\x63","\x5B\x46\x61\x78\x5D\x20\x46\x69\x6C\x65\x20\x63\x6F\x72\x72\x65\x63\x74\x6C\x79\x20\x63\x6F\x6E\x76\x65\x72\x74\x65\x64\x20\x61\x6E\x64\x20\x72\x65\x61\x64\x79\x20\x74\x6F\x20\x75\x73\x65","\x46\x61\x78\x41\x74\x74\x61\x63\x68\x6D\x65\x6E\x74\x73","\x74\x79\x70\x65","\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2F\x70\x64\x66","\x6F\x75\x74\x62\x6F\x75\x6E\x64","\x2F","\x2E\x74\x69\x66","\x67\x73\x20\x2D\x71\x20\x2D\x64\x4E\x4F\x50\x41\x55\x53\x45\x20\x2D\x64\x42\x41\x54\x43\x48\x20\x2D\x73\x44\x45\x56\x49\x43\x45\x3D\x74\x69\x66\x66\x67\x34\x20\x2D\x73\x50\x41\x50\x45\x52\x53\x49\x5A\x45\x3D\x6C\x65\x74\x74\x65\x72\x20\x2D\x73\x4F\x75\x74\x70\x75\x74\x46\x69\x6C\x65\x3D","\x62\x61\x73\x65","\x63\x6F\x70\x79\x53\x79\x6E\x63","\x66\x69\x6E\x64\x42\x79\x49\x64","\x5B\x46\x61\x78\x5D\x20\x52\x6F\x6F\x6D\x20\x75\x70\x64\x61\x74\x65\x64\x3A","\x61\x64\x64\x55\x73\x65\x72","\x50\x45\x4E\x44\x49\x4E\x47","\x66\x61\x78\x4F\x75\x74","\x75\x73\x65\x72","\x61\x64\x64\x46\x61\x78\x4D\x65\x73\x73\x61\x67\x65","\x5B\x46\x61\x78\x5D\x20\x54\x72\x75\x6E\x6B\x20\x6E\x6F\x74\x20\x66\x6F\x75\x6E\x64","\x5B\x46\x61\x78\x5D\x20\x54\x72\x75\x6E\x6B\x20\x66\x6F\x75\x6E\x64\x3A","\x54\x72\x75\x6E\x6B\x4E\x61\x6D\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0x7b4b[0];var fs=require(_0x7b4b[1]);var util=require(_0x7b4b[2]);var path=require(_0x7b4b[3]);var config=require(_0x7b4b[4]);var _=require(_0x7b4b[5]);var Promise=require(_0x7b4b[6]);var exec=require(_0x7b4b[8])[_0x7b4b[7]];var fse=require(_0x7b4b[9]);var moment=require(_0x7b4b[10]);var FaxAccount=require(_0x7b4b[12])[_0x7b4b[11]];var FaxRoom=require(_0x7b4b[12])[_0x7b4b[13]];var FaxMessage=require(_0x7b4b[12])[_0x7b4b[14]];var FaxAttachment=require(_0x7b4b[12])[_0x7b4b[15]];var ReportFax=require(_0x7b4b[12])[_0x7b4b[16]];var Trunk=require(_0x7b4b[12])[_0x7b4b[17]];var User=require(_0x7b4b[12])[_0x7b4b[18]];var Contact=require(_0x7b4b[12])[_0x7b4b[19]];var Util=require(_0x7b4b[20]);var Scheduler=require(_0x7b4b[21]);var faxaccounts;var io;function Fax(_0x8eb4x17,_0x8eb4x18){console[_0x7b4b[23]](_0x7b4b[22]);io= _0x8eb4x18;ReportFax[_0x7b4b[32]](function(_0x8eb4x19,_0x8eb4x1a){io[_0x7b4b[29]](util[_0x7b4b[28]](_0x7b4b[26],_0x8eb4x19[_0x7b4b[27]]))[_0x7b4b[25]](_0x7b4b[24],_0x8eb4x19);io[_0x7b4b[29]](_0x7b4b[30])[_0x7b4b[25]](_0x7b4b[24],_0x8eb4x19);io[_0x7b4b[29]](_0x7b4b[31])[_0x7b4b[25]](_0x7b4b[24],_0x8eb4x19)});process[_0x7b4b[65]](_0x7b4b[33],function(_0x8eb4x1b){switch(_0x8eb4x1b[_0x7b4b[33]]){case _0x7b4b[36]:sendfax(_0x8eb4x1b[_0x7b4b[34]],_0x8eb4x17,0,_0x8eb4x1b[_0x7b4b[35]]);break;case _0x7b4b[42]:if(_[_0x7b4b[39]](_0x8eb4x1b[_0x7b4b[35]][_0x7b4b[37]],_0x7b4b[38])&& _0x8eb4x1b[_0x7b4b[34]][_0x7b4b[38]]=== _0x7b4b[40]){sendfax(_0x8eb4x1b[_0x7b4b[34]],_0x8eb4x17,_0x8eb4x1b[_0x7b4b[34]][_0x7b4b[41]]+ 1,_0x8eb4x1b[_0x7b4b[35]])};break;case _0x7b4b[49]:var _0x8eb4x1c=_[_0x7b4b[44]](faxaccounts,{id:parseInt(_0x8eb4x1b[_0x7b4b[34]][_0x7b4b[43]])});if(_0x8eb4x1c&& _[_0x7b4b[39]](_0x8eb4x1b[_0x7b4b[35]][_0x7b4b[37]],_0x7b4b[45])){webhook(_0x8eb4x1b[_0x7b4b[34]],_0x8eb4x1c,_0x7b4b[46])};if(_0x8eb4x1c&& _[_0x7b4b[39]](_0x8eb4x1b[_0x7b4b[35]][_0x7b4b[37]],_0x7b4b[47])){webhook(_0x8eb4x1b[_0x7b4b[34]],_0x8eb4x1c,_0x7b4b[48])};break;case _0x7b4b[53]:var _0x8eb4x1d=_[_0x7b4b[44]](faxaccounts,{id:_0x8eb4x1b[_0x7b4b[34]][_0x7b4b[50]]});if(_0x8eb4x1d&& _[_0x7b4b[39]](_0x8eb4x1b[_0x7b4b[35]][_0x7b4b[37]],_0x7b4b[38])&& _0x8eb4x1b[_0x7b4b[34]][_0x7b4b[38]]=== _0x7b4b[51]){webhook(_0x8eb4x1b[_0x7b4b[34]],_0x8eb4x1d,_0x7b4b[52])};break;case _0x7b4b[55]:faxaccounts[_0x7b4b[54]](_0x8eb4x1b[_0x7b4b[34]]);break;case _0x7b4b[62]:var _0x8eb4x1e=_[_0x7b4b[44]](faxaccounts,{id:_0x8eb4x1b[_0x7b4b[34]][_0x7b4b[56]]});if(_0x8eb4x1e){console[_0x7b4b[23]](_0x7b4b[57]+ _0x8eb4x1e[_0x7b4b[58]]+ _0x7b4b[59]);_[_0x7b4b[60]](_0x8eb4x1e,_0x8eb4x1b[_0x7b4b[34]])}else {faxaccounts[_0x7b4b[61]](_0x8eb4x1b[_0x7b4b[34]])};break;case _0x7b4b[64]:_[_0x7b4b[63]](faxaccounts,{id:_0x8eb4x1b[_0x7b4b[34]][_0x7b4b[56]]});break;default:}});FaxAccount[_0x7b4b[69]]()[_0x7b4b[68]](function(_0x8eb4x20){faxaccounts= _0x8eb4x20})[_0x7b4b[67]](function(_0x8eb4x1f){console[_0x7b4b[66]](_0x8eb4x1f)})}function webhook(_0x8eb4x19,_0x8eb4x1c,_0x8eb4x22){var _0x8eb4x23=_0x8eb4x1c;switch(_0x8eb4x22){case _0x7b4b[46]:if(_0x8eb4x23[_0x7b4b[70]]&& _0x8eb4x23[_0x7b4b[71]]){console[_0x7b4b[23]](_0x7b4b[72]+ _0x8eb4x23[_0x7b4b[58]]+ _0x7b4b[73]);execRequest(_0x8eb4x19[_0x7b4b[74]]|| _0x8eb4x19,_0x8eb4x23[_0x7b4b[70]],_0x8eb4x23[_0x7b4b[71]])};if(_0x8eb4x23[_0x7b4b[76]][_0x7b4b[75]]){_[_0x7b4b[79]](_0x8eb4x23[_0x7b4b[76]],function(_0x8eb4x24){if(_0x8eb4x24[_0x7b4b[77]]){Util[_0x7b4b[78]](_0x8eb4x24,_0x8eb4x19)}})};break;case _0x7b4b[48]:if(_0x8eb4x23[_0x7b4b[80]]&& _0x8eb4x23[_0x7b4b[81]]){console[_0x7b4b[23]](_0x7b4b[72]+ _0x8eb4x23[_0x7b4b[58]]+ _0x7b4b[82]);execRequest(_0x8eb4x19[_0x7b4b[74]]|| _0x8eb4x19,_0x8eb4x23[_0x7b4b[80]],_0x8eb4x23[_0x7b4b[81]])};break;case _0x7b4b[52]:if(_0x8eb4x23[_0x7b4b[83]]&& _0x8eb4x23[_0x7b4b[84]]){console[_0x7b4b[23]](_0x7b4b[72]+ _0x8eb4x23[_0x7b4b[58]]+ _0x7b4b[85]);execRequest(_0x8eb4x19[_0x7b4b[74]]|| _0x8eb4x19,_0x8eb4x23[_0x7b4b[83]],_0x8eb4x23[_0x7b4b[84]])};break;default:console[_0x7b4b[23]](_0x7b4b[86])}}function execRequest(_0x8eb4x19,_0x8eb4x26,_0x8eb4x27){return Util[_0x7b4b[89]](_0x8eb4x19,_0x8eb4x26,_0x8eb4x27)[_0x7b4b[68]](function(_0x8eb4x28){console[_0x7b4b[23]](_0x7b4b[88])})[_0x7b4b[67]](function(_0x8eb4x1f){console[_0x7b4b[23]](_0x7b4b[87])})}Fax[_0x7b4b[91]][_0x7b4b[90]]= function(_0x8eb4x29){return FaxMessage[_0x7b4b[98]]({where:{channel:_0x8eb4x29[_0x7b4b[97]]}})[_0x7b4b[68]](function(_0x8eb4x2b){if(!_0x8eb4x2b){throw new Error(_0x7b4b[94])};return _0x8eb4x2b[_0x7b4b[96]]({error:_0x8eb4x29[_0x7b4b[95]]})})[_0x7b4b[68]](function(_0x8eb4x2a){io[_0x7b4b[25]](_0x7b4b[93],_0x8eb4x2a)})[_0x7b4b[67]](function(_0x8eb4x1f){console[_0x7b4b[66]](_0x7b4b[92],_0x8eb4x1f)})};Fax[_0x7b4b[91]][_0x7b4b[99]]= function(_0x8eb4x29){return FaxMessage[_0x7b4b[98]]({where:{filename:_0x8eb4x29[_0x7b4b[116]],localstationid:_0x8eb4x29[_0x7b4b[117]]}})[_0x7b4b[68]](function(_0x8eb4x2b){if(!_0x8eb4x2b){throw new Error(_0x7b4b[94])};return _0x8eb4x2b[_0x7b4b[96]]({channel:_0x8eb4x29[_0x7b4b[97]],channelstate:_0x8eb4x29[_0x7b4b[104]],channelstatedesc:_0x8eb4x29[_0x7b4b[105]],calleridnum:_0x8eb4x29[_0x7b4b[106]],calleridname:_0x8eb4x29[_0x7b4b[107]],connectedlinenum:_0x8eb4x29[_0x7b4b[108]],connectedlinename:_0x8eb4x29[_0x7b4b[109]],accountcode:_0x8eb4x29[_0x7b4b[110]],context:_0x8eb4x29[_0x7b4b[111]],exten:_0x8eb4x29[_0x7b4b[112]],priority:_0x8eb4x29[_0x7b4b[113]],uniqueid:_0x8eb4x29[_0x7b4b[114]],linkedid:_0x8eb4x29[_0x7b4b[115]],lastStatus:_0x8eb4x29[_0x7b4b[38]]})})[_0x7b4b[68]](function(_0x8eb4x2a){io[_0x7b4b[25]](_0x7b4b[93],_0x8eb4x2a)})[_0x7b4b[67]](function(_0x8eb4x1f){console[_0x7b4b[66]](_0x7b4b[100],_0x8eb4x1f);console[_0x7b4b[66]](_0x7b4b[101],_0x8eb4x1f[_0x7b4b[33]]);console[_0x7b4b[66]](_0x7b4b[102],_0x8eb4x1f[_0x7b4b[103]])})};Fax[_0x7b4b[91]][_0x7b4b[118]]= function(_0x8eb4x29){var _0x8eb4x2c;return FaxMessage[_0x7b4b[98]]({where:{filename:_0x8eb4x29[_0x7b4b[116]],localstationid:_0x8eb4x29[_0x7b4b[117]]}})[_0x7b4b[68]](function(_0x8eb4x2b){if(!_0x8eb4x2b){throw new Error(_0x7b4b[94])};_0x8eb4x2c= _0x8eb4x2b;var _0x8eb4x2f=_0x7b4b[123];if(_0x8eb4x29[_0x7b4b[126]]== _0x7b4b[127]){_0x8eb4x2f= _0x7b4b[128]};return _0x8eb4x2c[_0x7b4b[96]]({remotestationid:_0x8eb4x29[_0x7b4b[129]],pagestransferred:_0x8eb4x29[_0x7b4b[126]],resolution:_0x8eb4x29[_0x7b4b[130]],transferrate:_0x8eb4x29[_0x7b4b[131]],status:_0x8eb4x2f})})[_0x7b4b[68]](function(_0x8eb4x2a){io[_0x7b4b[25]](_0x7b4b[93],_0x8eb4x2a);console[_0x7b4b[23]](_0x7b4b[124],_0x8eb4x2a[_0x7b4b[56]]);return _0x8eb4x2c[_0x7b4b[125]]()})[_0x7b4b[68]](function(_0x8eb4x2e){if(!_0x8eb4x2e){throw new Error(_0x7b4b[122])};return _0x8eb4x2e[_0x7b4b[96]]({lastEvent:_0x7b4b[123]},{individualHooks:true})})[_0x7b4b[68]](function(_0x8eb4x2d){console[_0x7b4b[23]](_0x7b4b[120],_0x8eb4x2d[_0x7b4b[56]]);io[_0x7b4b[25]](_0x7b4b[121],_0x8eb4x2d)})[_0x7b4b[67]](function(_0x8eb4x1f){console[_0x7b4b[66]](_0x7b4b[119],_0x8eb4x1f);console[_0x7b4b[66]](_0x7b4b[101],_0x8eb4x1f[_0x7b4b[33]]);console[_0x7b4b[66]](_0x7b4b[102],_0x8eb4x1f[_0x7b4b[103]])})};Fax[_0x7b4b[91]][_0x7b4b[132]]= function(_0x8eb4x29){console[_0x7b4b[23]](util[_0x7b4b[28]](_0x7b4b[133],_0x8eb4x29[_0x7b4b[106]]));var _0x8eb4x30=_[_0x7b4b[134]](_0x8eb4x29);var _0x8eb4x31;var _0x8eb4x2c,_0x8eb4x32;return FaxAccount[_0x7b4b[98]]({where:{localstationid:_0x8eb4x29[_0x7b4b[117]]}})[_0x7b4b[68]](function(_0x8eb4x3a){if(!_0x8eb4x3a){throw new Error(_0x7b4b[169])};console[_0x7b4b[23]](_0x7b4b[170],_0x8eb4x29[_0x7b4b[117]]);_0x8eb4x31= _0x8eb4x3a;if(_0x8eb4x31[_0x7b4b[171]]){return Contact[_0x7b4b[172]]({where:{ListId:_0x8eb4x31[_0x7b4b[171]],$or:[{phone:_0x8eb4x29[_0x7b4b[106]]},{fax:_0x8eb4x29[_0x7b4b[106]]}]},defaults:{phone:_0x8eb4x29[_0x7b4b[106]],fax:_0x8eb4x29[_0x7b4b[106]],firstName:_0x8eb4x29[_0x7b4b[106]],ListId:_0x8eb4x31[_0x7b4b[171]]}})}else {return []}})[_0x7b4b[168]](function(_0x8eb4x38,_0x8eb4x39){if(_0x8eb4x39!= undefined&& !_0x8eb4x39){return _0x8eb4x38[_0x7b4b[96]]({fax:_0x8eb4x29[_0x7b4b[106]]})};return})[_0x7b4b[68]](function(){return FaxRoom[_0x7b4b[69]]({limit:1,where:{contact:_0x8eb4x30[_0x7b4b[106]],FaxAccountId:_0x8eb4x31[_0x7b4b[56]],status:{$ne:_0x7b4b[51]}},order:[[_0x7b4b[166],_0x7b4b[167]]]})})[_0x7b4b[68]](function(_0x8eb4x2d){if(_0x8eb4x2d[_0x7b4b[75]]){_0x8eb4x2d= _[_0x7b4b[160]](_0x8eb4x2d);return _0x8eb4x2d[_0x7b4b[96]]({lastEvent:_0x7b4b[159],lastEventAt:moment()[_0x7b4b[28]](_0x7b4b[161]),status:_0x7b4b[162],openReason:_0x7b4b[163],faxIn:++_0x8eb4x2d[_0x7b4b[164]]})}else {return FaxRoom[_0x7b4b[155]]({contact:_0x8eb4x30[_0x7b4b[106]],account:_0x8eb4x31[_0x7b4b[58]],status:_0x7b4b[165],lastEvent:_0x7b4b[159],lastEventAt:moment()[_0x7b4b[28]](_0x7b4b[161]),FaxAccountId:_0x8eb4x31[_0x7b4b[56]],faxIn:1})}})[_0x7b4b[68]](function(_0x8eb4x2d){if(!_0x8eb4x2d){throw new Error(_0x7b4b[156])};console[_0x7b4b[23]](_0x7b4b[157],_0x8eb4x2d[_0x7b4b[56]]);io[_0x7b4b[25]](_0x7b4b[121],_0x8eb4x2d);_0x8eb4x32= _0x8eb4x2d;_0x8eb4x30[_0x7b4b[158]]= _0x8eb4x2d[_0x7b4b[56]];_0x8eb4x30[_0x7b4b[38]]= _0x7b4b[159];_0x8eb4x30[_0x7b4b[140]]= _0x8eb4x30[_0x7b4b[106]];_0x8eb4x30[_0x7b4b[29]]= _0x8eb4x30[_0x7b4b[117]];return FaxMessage[_0x7b4b[155]](_0x8eb4x30)})[_0x7b4b[68]](function(_0x8eb4x2a){if(!_0x8eb4x2a){throw new Error(_0x7b4b[146])};_0x8eb4x2c= _0x8eb4x2a;io[_0x7b4b[25]](_0x7b4b[93],_0x8eb4x2a);console[_0x7b4b[23]](_0x7b4b[101],_0x8eb4x2a[_0x7b4b[56]]);var _0x8eb4x35=[];var _0x8eb4x36=path[_0x7b4b[147]](_0x8eb4x29[_0x7b4b[116]])[_0x7b4b[58]];var _0x8eb4x37=_0x8eb4x36+ _0x7b4b[148];return FaxAttachment[_0x7b4b[155]]({path:path[_0x7b4b[154]](config[_0x7b4b[149]],_0x7b4b[150],_0x7b4b[151],_0x7b4b[137],_0x7b4b[152],_0x7b4b[153],_0x8eb4x37),basename:_0x8eb4x37,name:_0x8eb4x36,FaxMessageId:_0x8eb4x2a[_0x7b4b[56]]})})[_0x7b4b[68]](function(_0x8eb4x34){if(!_0x8eb4x34){throw new Error(_0x7b4b[142])};console[_0x7b4b[23]](_0x7b4b[143],_0x8eb4x34[_0x7b4b[56]]);return exec(_0x7b4b[144]+ _0x8eb4x34[_0x7b4b[3]]+ _0x7b4b[145]+ _0x8eb4x29[_0x7b4b[116]])})[_0x7b4b[68]](function(){console[_0x7b4b[23]](_0x7b4b[136]);var _0x8eb4x33= new Scheduler({channel:_0x7b4b[137],uniqueid:util[_0x7b4b[28]](_0x7b4b[138],moment()[_0x7b4b[139]](),_0x8eb4x32[_0x7b4b[56]]),messageid:_0x8eb4x2c[_0x7b4b[56]],roomid:_0x8eb4x32[_0x7b4b[56]],accountid:_0x8eb4x31[_0x7b4b[56]],accountname:_0x8eb4x31[_0x7b4b[58]],accountphone:_0x8eb4x31[_0x7b4b[117]],from:_0x8eb4x2c[_0x7b4b[140]]});_0x8eb4x33[_0x7b4b[141]]()})[_0x7b4b[67]](function(_0x8eb4x1f){console[_0x7b4b[66]](_0x7b4b[135],_0x8eb4x1f);console[_0x7b4b[66]](_0x7b4b[101],_0x8eb4x1f[_0x7b4b[33]]);console[_0x7b4b[66]](_0x7b4b[102],_0x8eb4x1f[_0x7b4b[103]])})};function sendfax(_0x8eb4x2a,_0x8eb4x17,_0x8eb4x3c,_0x8eb4x3d,io){if(_0x8eb4x2a[_0x7b4b[38]]=== _0x7b4b[40]){var _0x8eb4x32;var _0x8eb4x2c=_0x8eb4x2a;var _0x8eb4x3e=_0x8eb4x2a[_0x7b4b[140]];var _0x8eb4x3f=_0x8eb4x2a[_0x7b4b[29]];var _0x8eb4x40;var _0x8eb4x41;var _0x8eb4x42,_0x8eb4x43;return FaxAccount[_0x7b4b[98]]({where:{localstationid:_0x8eb4x2c[_0x7b4b[140]]}})[_0x7b4b[68]](function(_0x8eb4x3a){if(!_0x8eb4x3a){throw new Error(_0x7b4b[169])};console[_0x7b4b[23]](_0x7b4b[170],_0x8eb4x3a[_0x7b4b[117]]);_0x8eb4x40= _[_0x7b4b[134]](_0x8eb4x3a[_0x7b4b[74]]);return Trunk[_0x7b4b[98]]({where:{name:_0x8eb4x40[_0x7b4b[212]]},attributes:[_0x7b4b[58]]})})[_0x7b4b[68]](function(_0x8eb4x45){if(!_0x8eb4x45){throw new Error(_0x7b4b[210])};console[_0x7b4b[23]](_0x7b4b[211],_0x8eb4x45[_0x7b4b[58]]);_0x8eb4x41= _[_0x7b4b[134]](_0x8eb4x45[_0x7b4b[74]]);return})[_0x7b4b[68]](function(){return [_0x8eb4x40,_0x8eb4x2c]})[_0x7b4b[168]](getFaxRoom())[_0x7b4b[68]](function(_0x8eb4x2e){if(!_0x8eb4x2e){throw new Error(_0x7b4b[122])};console[_0x7b4b[23]](_0x7b4b[157],_0x8eb4x2e[_0x7b4b[56]]);_0x8eb4x32= _0x8eb4x2e;return _0x8eb4x32[_0x7b4b[209]](_0x8eb4x2c[_0x7b4b[56]])})[_0x7b4b[68]](function(){return _0x8eb4x32[_0x7b4b[96]]({status:_0x7b4b[206],lastEvent:_0x7b4b[40],lastEventAt:moment()[_0x7b4b[28]](_0x7b4b[161]),faxOut:++_0x8eb4x32[_0x7b4b[207]]},{individualHooks:true,user:_0x8eb4x3d[_0x7b4b[208]]})})[_0x7b4b[68]](function(_0x8eb4x1b){console[_0x7b4b[23]](_0x7b4b[204],_0x8eb4x1b[_0x7b4b[56]]);io[_0x7b4b[25]](_0x7b4b[121],_0x8eb4x1b);return _0x8eb4x32[_0x7b4b[205]](_0x8eb4x2c.UserId)})[_0x7b4b[68]](function(){return User[_0x7b4b[203]](_0x8eb4x2c.UserId)})[_0x7b4b[68]](function(){if(_0x8eb4x40[_0x7b4b[171]]){return Contact[_0x7b4b[172]]({where:{ListId:_0x8eb4x40[_0x7b4b[171]],$or:[{phone:_0x8eb4x3f},{fax:_0x8eb4x3f}]},defaults:{fax:_0x8eb4x3f,phone:_0x8eb4x3f,firstName:_0x8eb4x3f,ListId:_0x8eb4x40[_0x7b4b[171]]}})}else {return []}})[_0x7b4b[168]](function(_0x8eb4x38,_0x8eb4x39){if(_0x8eb4x39!= undefined&& !_0x8eb4x39){return _0x8eb4x38[_0x7b4b[96]]({fax:_0x8eb4x3f})};return})[_0x7b4b[68]](function(){_0x8eb4x42= _0x8eb4x2c[_0x7b4b[194]][0][_0x7b4b[3]];if(_0x8eb4x2c[_0x7b4b[194]][0][_0x7b4b[195]]=== _0x7b4b[196]){_0x8eb4x43= path[_0x7b4b[154]](config[_0x7b4b[149]],_0x7b4b[150],_0x7b4b[151],_0x7b4b[137],_0x7b4b[197],_0x7b4b[153],_0x7b4b[198],path[_0x7b4b[147]](_0x8eb4x42)[_0x7b4b[58]]+ _0x7b4b[199]);return exec(_0x7b4b[200]+ _0x8eb4x43+ _0x7b4b[145]+ _0x8eb4x42)}else {_0x8eb4x43= path[_0x7b4b[154]](config[_0x7b4b[149]],_0x7b4b[150],_0x7b4b[151],_0x7b4b[137],_0x7b4b[197],_0x7b4b[153],_0x7b4b[198],path[_0x7b4b[147]](_0x8eb4x42)[_0x7b4b[201]]);fse[_0x7b4b[202]](_0x8eb4x42,_0x8eb4x43);return}})[_0x7b4b[68]](function(){fs[_0x7b4b[192]](_0x8eb4x43,511);console[_0x7b4b[23]](_0x7b4b[193]);return FaxMessage[_0x7b4b[175]]({filename:_0x8eb4x43,localstationid:_0x8eb4x2c[_0x7b4b[140]],retry:_0x8eb4x3c},{where:{id:_0x8eb4x2c[_0x7b4b[56]]}})})[_0x7b4b[68]](function(_0x8eb4x2a){if(_0x8eb4x2a){io[_0x7b4b[25]](_0x7b4b[93],_0x8eb4x2a)};return Promise[_0x7b4b[191]](_0x8eb4x17[_0x7b4b[190]])({action:_0x7b4b[177],channel:util[_0x7b4b[28]](_0x7b4b[178],_0x8eb4x40[_0x7b4b[179]],_0x8eb4x41[_0x7b4b[58]],_0x8eb4x3f),exten:_0x8eb4x3f,context:_0x7b4b[180],priority:1,callerid:util[_0x7b4b[28]](_0x7b4b[181],_0x8eb4x40[_0x7b4b[117]],_0x8eb4x40[_0x7b4b[117]]),variable:{FAXNAME:_0x8eb4x40[_0x7b4b[58]],FAXNUMBER:_0x8eb4x3f,FAXECM:_0x8eb4x40[_0x7b4b[182]],FAXHEADERINFO:_0x8eb4x40[_0x7b4b[183]],FAXLOCALSTATIONID:_0x8eb4x40[_0x7b4b[117]],FAXMINRATE:_0x8eb4x40[_0x7b4b[184]],FAXMAXRATE:_0x8eb4x40[_0x7b4b[185]],FAXMODEM:util[_0x7b4b[28]](_0x7b4b[186],_0x8eb4x40[_0x7b4b[187]]),FAXGATEWAY:_0x8eb4x40[_0x7b4b[188]],FAXT38TIMEOUT:_0x8eb4x40[_0x7b4b[189]],FAXOUTFILE:_0x8eb4x43},account:_0x8eb4x40[_0x7b4b[117]]})})[_0x7b4b[68]](function(_0x8eb4x44){console[_0x7b4b[23]](_0x7b4b[176]);console[_0x7b4b[23]](_0x8eb4x44)})[_0x7b4b[67]](function(_0x8eb4x1f){console[_0x7b4b[66]](_0x7b4b[173],_0x8eb4x1f);console[_0x7b4b[66]](_0x7b4b[101],_0x8eb4x1f[_0x7b4b[33]]);console[_0x7b4b[66]](_0x7b4b[102],_0x8eb4x1f[_0x7b4b[103]]);return FaxMessage[_0x7b4b[175]]({status:_0x7b4b[128]},{where:{id:_0x8eb4x2c[_0x7b4b[56]]}})[_0x7b4b[68]](function(_0x8eb4x1b){io[_0x7b4b[25]](_0x7b4b[93],_0x8eb4x1b);if(_0x8eb4x32){return _0x8eb4x32[_0x7b4b[96]]({lastEvent:_0x7b4b[128]})};return})[_0x7b4b[68]](function(_0x8eb4x1b){if(_0x8eb4x1b){io[_0x7b4b[25]](_0x7b4b[121],_0x8eb4x1b)}})[_0x7b4b[67]](function(_0x8eb4x1f){console[_0x7b4b[66]](_0x7b4b[174],_0x8eb4x1f);console[_0x7b4b[66]](_0x7b4b[101],_0x8eb4x1f[_0x7b4b[33]]);console[_0x7b4b[66]](_0x7b4b[102],_0x8eb4x1f[_0x7b4b[103]])})})}}function getFaxRoom(){return function(_0x8eb4x1c,_0x8eb4x2b){if(_0x8eb4x2b[_0x7b4b[158]]){return FaxRoom[_0x7b4b[203]](_0x8eb4x2b.FaxRoomId)}else {return FaxRoom[_0x7b4b[69]]({limit:1,where:{contact:_0x8eb4x2b[_0x7b4b[29]],FaxAccountId:_0x8eb4x1c[_0x7b4b[56]]},order:[[_0x7b4b[166],_0x7b4b[167]]]})[_0x7b4b[68]](function(_0x8eb4x47){var _0x8eb4x2d=_[_0x7b4b[160]](_0x8eb4x47);if(!_0x8eb4x2d|| _0x8eb4x2d[_0x7b4b[38]]=== _0x7b4b[51]){return FaxRoom[_0x7b4b[155]]({contact:_0x8eb4x2b[_0x7b4b[29]],account:_0x8eb4x1c[_0x7b4b[58]],status:_0x7b4b[206],FaxAccountId:_0x8eb4x1c[_0x7b4b[56]]})}else {return _0x8eb4x2d}})}}}module[_0x7b4b[213]]= Fax \ No newline at end of file diff --git a/server/config/ami/index.js b/server/config/ami/index.js index 702287a..ff4d452 100644 --- a/server/config/ami/index.js +++ b/server/config/ami/index.js @@ -1,112 +1 @@ -'use strict'; - -const path = require('path'); -const cp = require('child_process'); - -const config = require('../environment'); -const User = require('../../models').User; -const Action = require('../../models').Action; -const ReportMember = require('../../models').ReportMember; -const FaxMessage = require('../../models').FaxMessage; -const ReportFax = require('../../models').ReportFax; -const FaxRoom = require('../../models').FaxRoom; -const FaxAccount = require('../../models').FaxAccount; - -var cpAmi = cp.fork(path.join(__dirname, 'ami')); - -Action.afterCreate(function(doc, options) { - doc.dataValues.evt = 'Action.afterCreate'; - doc.dataValues.options = { - body: options.body || null - }; - - cpAmi.send(doc.dataValues); -}); - -ReportMember.afterCreate(function(doc, options) { - doc.dataValues.evt = 'ReportMember.beforeCreate'; - cpAmi.send(doc.dataValues); -}); - -FaxMessage.afterCreate(function(doc, options) { - var data = { - message: 'FaxMessage.afterCreate', - doc: doc.dataValues, - options: { - user: options.user || null - } - }; - cpAmi.send(data); -}); - -FaxMessage.afterUpdate(function(doc, options) { - var data = { - message: 'FaxMessage.afterUpdate', - doc: doc.dataValues, - options: { - user: options.user || null, - changed: doc.changed() - } - }; - cpAmi.send(data); -}); - -ReportFax.afterUpdate(function(doc, options) { - var data = { - message: 'ReportFax.afterUpdate', - doc: doc.dataValues, - options: { - user: options.user || null, - changed: doc.changed() - } - }; - cpAmi.send(data); -}); - -FaxRoom.afterUpdate(function(doc, options) { - var data = { - message: 'FaxRoom.afterUpdate', - doc: doc.dataValues, - options: { - user: options.user || null, - changed: doc.changed() - } - }; - cpAmi.send(data); -}); - -FaxAccount.afterCreate(function(doc, options) { - var data = { - message: 'FaxAccount.afterCreate', - doc: doc.dataValues, - options: { - user: options.user || null - } - }; - cpAmi.send(data); -}); - -FaxAccount.afterUpdate(function(doc, options) { - var data = { - message: 'FaxAccount.afterUpdate', - doc: doc.dataValues, - options: { - user: options.user || null, - changed: doc.changed() - } - }; - cpAmi.send(data); -}); - -FaxAccount.afterDestroy(function(doc, options) { - var data = { - message: 'FaxAccount.afterDestroy', - doc: doc.dataValues, - options: { - user: options.user || null - } - }; - cpAmi.send(data); -}); - -module.exports = cpAmi; +var _0x3ccd=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x70\x61\x74\x68","\x63\x68\x69\x6C\x64\x5F\x70\x72\x6F\x63\x65\x73\x73","\x2E\x2E\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x55\x73\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x41\x63\x74\x69\x6F\x6E","\x52\x65\x70\x6F\x72\x74\x4D\x65\x6D\x62\x65\x72","\x46\x61\x78\x4D\x65\x73\x73\x61\x67\x65","\x52\x65\x70\x6F\x72\x74\x46\x61\x78","\x46\x61\x78\x52\x6F\x6F\x6D","\x46\x61\x78\x41\x63\x63\x6F\x75\x6E\x74","\x61\x6D\x69","\x6A\x6F\x69\x6E","\x66\x6F\x72\x6B","\x65\x76\x74","\x64\x61\x74\x61\x56\x61\x6C\x75\x65\x73","\x41\x63\x74\x69\x6F\x6E\x2E\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x6F\x70\x74\x69\x6F\x6E\x73","\x62\x6F\x64\x79","\x73\x65\x6E\x64","\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x52\x65\x70\x6F\x72\x74\x4D\x65\x6D\x62\x65\x72\x2E\x62\x65\x66\x6F\x72\x65\x43\x72\x65\x61\x74\x65","\x46\x61\x78\x4D\x65\x73\x73\x61\x67\x65\x2E\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x75\x73\x65\x72","\x46\x61\x78\x4D\x65\x73\x73\x61\x67\x65\x2E\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x63\x68\x61\x6E\x67\x65\x64","\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x52\x65\x70\x6F\x72\x74\x46\x61\x78\x2E\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x46\x61\x78\x52\x6F\x6F\x6D\x2E\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x46\x61\x78\x41\x63\x63\x6F\x75\x6E\x74\x2E\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x46\x61\x78\x41\x63\x63\x6F\x75\x6E\x74\x2E\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x46\x61\x78\x41\x63\x63\x6F\x75\x6E\x74\x2E\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79","\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0x3ccd[0];const path=require(_0x3ccd[1]);const cp=require(_0x3ccd[2]);const config=require(_0x3ccd[3]);const User=require(_0x3ccd[5])[_0x3ccd[4]];const Action=require(_0x3ccd[5])[_0x3ccd[6]];const ReportMember=require(_0x3ccd[5])[_0x3ccd[7]];const FaxMessage=require(_0x3ccd[5])[_0x3ccd[8]];const ReportFax=require(_0x3ccd[5])[_0x3ccd[9]];const FaxRoom=require(_0x3ccd[5])[_0x3ccd[10]];const FaxAccount=require(_0x3ccd[5])[_0x3ccd[11]];var cpAmi=cp[_0x3ccd[14]](path[_0x3ccd[13]](__dirname,_0x3ccd[12]));Action[_0x3ccd[21]](function(_0xe214xc,_0xe214xd){_0xe214xc[_0x3ccd[16]][_0x3ccd[15]]= _0x3ccd[17];_0xe214xc[_0x3ccd[16]][_0x3ccd[18]]= {body:_0xe214xd[_0x3ccd[19]]|| null};cpAmi[_0x3ccd[20]](_0xe214xc[_0x3ccd[16]])});ReportMember[_0x3ccd[21]](function(_0xe214xc,_0xe214xd){_0xe214xc[_0x3ccd[16]][_0x3ccd[15]]= _0x3ccd[22];cpAmi[_0x3ccd[20]](_0xe214xc[_0x3ccd[16]])});FaxMessage[_0x3ccd[21]](function(_0xe214xc,_0xe214xd){var _0xe214xe={message:_0x3ccd[23],doc:_0xe214xc[_0x3ccd[16]],options:{user:_0xe214xd[_0x3ccd[24]]|| null}};cpAmi[_0x3ccd[20]](_0xe214xe)});FaxMessage[_0x3ccd[27]](function(_0xe214xc,_0xe214xd){var _0xe214xe={message:_0x3ccd[25],doc:_0xe214xc[_0x3ccd[16]],options:{user:_0xe214xd[_0x3ccd[24]]|| null,changed:_0xe214xc[_0x3ccd[26]]()}};cpAmi[_0x3ccd[20]](_0xe214xe)});ReportFax[_0x3ccd[27]](function(_0xe214xc,_0xe214xd){var _0xe214xe={message:_0x3ccd[28],doc:_0xe214xc[_0x3ccd[16]],options:{user:_0xe214xd[_0x3ccd[24]]|| null,changed:_0xe214xc[_0x3ccd[26]]()}};cpAmi[_0x3ccd[20]](_0xe214xe)});FaxRoom[_0x3ccd[27]](function(_0xe214xc,_0xe214xd){var _0xe214xe={message:_0x3ccd[29],doc:_0xe214xc[_0x3ccd[16]],options:{user:_0xe214xd[_0x3ccd[24]]|| null,changed:_0xe214xc[_0x3ccd[26]]()}};cpAmi[_0x3ccd[20]](_0xe214xe)});FaxAccount[_0x3ccd[21]](function(_0xe214xc,_0xe214xd){var _0xe214xe={message:_0x3ccd[30],doc:_0xe214xc[_0x3ccd[16]],options:{user:_0xe214xd[_0x3ccd[24]]|| null}};cpAmi[_0x3ccd[20]](_0xe214xe)});FaxAccount[_0x3ccd[27]](function(_0xe214xc,_0xe214xd){var _0xe214xe={message:_0x3ccd[31],doc:_0xe214xc[_0x3ccd[16]],options:{user:_0xe214xd[_0x3ccd[24]]|| null,changed:_0xe214xc[_0x3ccd[26]]()}};cpAmi[_0x3ccd[20]](_0xe214xe)});FaxAccount[_0x3ccd[33]](function(_0xe214xc,_0xe214xd){var _0xe214xe={message:_0x3ccd[32],doc:_0xe214xc[_0x3ccd[16]],options:{user:_0xe214xd[_0x3ccd[24]]|| null}};cpAmi[_0x3ccd[20]](_0xe214xe)});module[_0x3ccd[34]]= cpAmi \ No newline at end of file diff --git a/server/config/ami/member.js b/server/config/ami/member.js index f4dfac0..a7f8a32 100644 --- a/server/config/ami/member.js +++ b/server/config/ami/member.js @@ -1,104 +1 @@ -'use strict'; - -const _ = require('lodash'); -const moment = require('moment'); -const ReportMember = require('../../models').ReportMember; - -function Member() { - console.log('Member Initialization...'); -} - -Member.prototype.inboundTalking = function(evt) { - return createMember({ - channel: 'voice', - membername: evt.membername, - interface: evt.interface, - type: 'TALKING', - enterAt: moment().format("YYYY-MM-DD HH:mm:ss"), - data1: 'inbound', - role: 'agent', - internal: evt.connectedlinenum - }); -} - -Member.prototype.inboundComplete = function(evt) { - return updateMember({ - channel: 'voice', - type: 'TALKING', - membername: evt.membername, - interface: evt.interface, - exitAt: null - }); -} - -Member.prototype.outboundTalking = function(evt) { - if (evt.dialstring) { //dialstring is present only if outbound - var dialString = evt.dialstring.split('/'); - if (evt.dialstatus === 'ANSWER' && evt.dialString.length > 1 && dialString[0] !== 'SIP') { - return createMember({ - channel: 'voice', - membername: evt.channel.split(/\/|-/)[1], - interface: evt.destchannel.split('-')[0], - type: 'TALKING', - enterAt: moment().format("YYYY-MM-DD HH:mm:ss"), - data1: 'outbound', - role: 'agent', - internal: evt.accountcode, - uniqueid: evt.destuniqueid - }); - } - } -} - -Member.prototype.outboundComplete = function(evt) { - return updateMember({ - uniqueid: evt.uniqueid - }); -} - -function createMember(evt) { - return ReportMember - .create(evt) - .then(function(data) { - console.log('[report] member talking created'); - }) - .catch(function(err) { - console.error('[report] member create ' + err); - }); -} - -function updateMember(where) { - return ReportMember - .findOne({ - where: where - }) - .then(function(member) { - if (member) { - return member - .update({ - exitAt: moment().format("YYYY-MM-DD HH:mm:ss"), - duration: moment.duration(moment() - moment(member.enterAt)).asSeconds() - }); - - } - }) - .then(function(data) { - console.error('[report] member update'); - }) - .catch(function(err) { - console.error('[report] member update ' + err); - }); -} - -ReportMember.afterCreate(function(doc, options) { - doc.dataValues.evt = 'ReportMember.afterCreate'; - process.send(doc.dataValues); -}); - -ReportMember.afterUpdate(function(doc, options) { - doc.dataValues.evt = 'ReportMember.afterUpdate'; - doc.dataValues.changed = _.keyBy(doc.changed()); - process.send(doc.dataValues); -}); - -module.exports = Member; +var _0x20ed=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x6D\x6F\x6D\x65\x6E\x74","\x52\x65\x70\x6F\x72\x74\x4D\x65\x6D\x62\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x4D\x65\x6D\x62\x65\x72\x20\x49\x6E\x69\x74\x69\x61\x6C\x69\x7A\x61\x74\x69\x6F\x6E\x2E\x2E\x2E","\x6C\x6F\x67","\x69\x6E\x62\x6F\x75\x6E\x64\x54\x61\x6C\x6B\x69\x6E\x67","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x76\x6F\x69\x63\x65","\x6D\x65\x6D\x62\x65\x72\x6E\x61\x6D\x65","\x69\x6E\x74\x65\x72\x66\x61\x63\x65","\x54\x41\x4C\x4B\x49\x4E\x47","\x59\x59\x59\x59\x2D\x4D\x4D\x2D\x44\x44\x20\x48\x48\x3A\x6D\x6D\x3A\x73\x73","\x66\x6F\x72\x6D\x61\x74","\x69\x6E\x62\x6F\x75\x6E\x64","\x61\x67\x65\x6E\x74","\x63\x6F\x6E\x6E\x65\x63\x74\x65\x64\x6C\x69\x6E\x65\x6E\x75\x6D","\x69\x6E\x62\x6F\x75\x6E\x64\x43\x6F\x6D\x70\x6C\x65\x74\x65","\x6F\x75\x74\x62\x6F\x75\x6E\x64\x54\x61\x6C\x6B\x69\x6E\x67","\x64\x69\x61\x6C\x73\x74\x72\x69\x6E\x67","\x2F","\x73\x70\x6C\x69\x74","\x64\x69\x61\x6C\x73\x74\x61\x74\x75\x73","\x41\x4E\x53\x57\x45\x52","\x6C\x65\x6E\x67\x74\x68","\x64\x69\x61\x6C\x53\x74\x72\x69\x6E\x67","\x53\x49\x50","\x63\x68\x61\x6E\x6E\x65\x6C","\x2D","\x64\x65\x73\x74\x63\x68\x61\x6E\x6E\x65\x6C","\x6F\x75\x74\x62\x6F\x75\x6E\x64","\x61\x63\x63\x6F\x75\x6E\x74\x63\x6F\x64\x65","\x64\x65\x73\x74\x75\x6E\x69\x71\x75\x65\x69\x64","\x6F\x75\x74\x62\x6F\x75\x6E\x64\x43\x6F\x6D\x70\x6C\x65\x74\x65","\x75\x6E\x69\x71\x75\x65\x69\x64","\x5B\x72\x65\x70\x6F\x72\x74\x5D\x20\x6D\x65\x6D\x62\x65\x72\x20\x63\x72\x65\x61\x74\x65\x20","\x65\x72\x72\x6F\x72","\x63\x61\x74\x63\x68","\x5B\x72\x65\x70\x6F\x72\x74\x5D\x20\x6D\x65\x6D\x62\x65\x72\x20\x74\x61\x6C\x6B\x69\x6E\x67\x20\x63\x72\x65\x61\x74\x65\x64","\x74\x68\x65\x6E","\x63\x72\x65\x61\x74\x65","\x5B\x72\x65\x70\x6F\x72\x74\x5D\x20\x6D\x65\x6D\x62\x65\x72\x20\x75\x70\x64\x61\x74\x65\x20","\x5B\x72\x65\x70\x6F\x72\x74\x5D\x20\x6D\x65\x6D\x62\x65\x72\x20\x75\x70\x64\x61\x74\x65","\x61\x73\x53\x65\x63\x6F\x6E\x64\x73","\x65\x6E\x74\x65\x72\x41\x74","\x64\x75\x72\x61\x74\x69\x6F\x6E","\x75\x70\x64\x61\x74\x65","\x66\x69\x6E\x64\x4F\x6E\x65","\x65\x76\x74","\x64\x61\x74\x61\x56\x61\x6C\x75\x65\x73","\x52\x65\x70\x6F\x72\x74\x4D\x65\x6D\x62\x65\x72\x2E\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x73\x65\x6E\x64","\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x52\x65\x70\x6F\x72\x74\x4D\x65\x6D\x62\x65\x72\x2E\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x63\x68\x61\x6E\x67\x65\x64","\x6B\x65\x79\x42\x79","\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0x20ed[0];const _=require(_0x20ed[1]);const moment=require(_0x20ed[2]);const ReportMember=require(_0x20ed[4])[_0x20ed[3]];function Member(){console[_0x20ed[6]](_0x20ed[5])}Member[_0x20ed[8]][_0x20ed[7]]= function(_0x8c9cx5){return createMember({channel:_0x20ed[9],membername:_0x8c9cx5[_0x20ed[10]],interface:_0x8c9cx5[_0x20ed[11]],type:_0x20ed[12],enterAt:moment()[_0x20ed[14]](_0x20ed[13]),data1:_0x20ed[15],role:_0x20ed[16],internal:_0x8c9cx5[_0x20ed[17]]})};Member[_0x20ed[8]][_0x20ed[18]]= function(_0x8c9cx5){return updateMember({channel:_0x20ed[9],type:_0x20ed[12],membername:_0x8c9cx5[_0x20ed[10]],interface:_0x8c9cx5[_0x20ed[11]],exitAt:null})};Member[_0x20ed[8]][_0x20ed[19]]= function(_0x8c9cx5){if(_0x8c9cx5[_0x20ed[20]]){var _0x8c9cx6=_0x8c9cx5[_0x20ed[20]][_0x20ed[22]](_0x20ed[21]);if(_0x8c9cx5[_0x20ed[23]]=== _0x20ed[24]&& _0x8c9cx5[_0x20ed[26]][_0x20ed[25]]> 1&& _0x8c9cx6[0]!== _0x20ed[27]){return createMember({channel:_0x20ed[9],membername:_0x8c9cx5[_0x20ed[28]][_0x20ed[22]](/\/|-/)[1],interface:_0x8c9cx5[_0x20ed[30]][_0x20ed[22]](_0x20ed[29])[0],type:_0x20ed[12],enterAt:moment()[_0x20ed[14]](_0x20ed[13]),data1:_0x20ed[31],role:_0x20ed[16],internal:_0x8c9cx5[_0x20ed[32]],uniqueid:_0x8c9cx5[_0x20ed[33]]})}}};Member[_0x20ed[8]][_0x20ed[34]]= function(_0x8c9cx5){return updateMember({uniqueid:_0x8c9cx5[_0x20ed[35]]})};function createMember(_0x8c9cx5){return ReportMember[_0x20ed[41]](_0x8c9cx5)[_0x20ed[40]](function(_0x8c9cx9){console[_0x20ed[6]](_0x20ed[39])})[_0x20ed[38]](function(_0x8c9cx8){console[_0x20ed[37]](_0x20ed[36]+ _0x8c9cx8)})}function updateMember(_0x8c9cxb){return ReportMember[_0x20ed[48]]({where:_0x8c9cxb})[_0x20ed[40]](function(_0x8c9cxc){if(_0x8c9cxc){return _0x8c9cxc[_0x20ed[47]]({exitAt:moment()[_0x20ed[14]](_0x20ed[13]),duration:moment[_0x20ed[46]](moment()- moment(_0x8c9cxc[_0x20ed[45]]))[_0x20ed[44]]()})}})[_0x20ed[40]](function(_0x8c9cx9){console[_0x20ed[37]](_0x20ed[43])})[_0x20ed[38]](function(_0x8c9cx8){console[_0x20ed[37]](_0x20ed[42]+ _0x8c9cx8)})}ReportMember[_0x20ed[53]](function(_0x8c9cxd,_0x8c9cxe){_0x8c9cxd[_0x20ed[50]][_0x20ed[49]]= _0x20ed[51];process[_0x20ed[52]](_0x8c9cxd[_0x20ed[50]])});ReportMember[_0x20ed[57]](function(_0x8c9cxd,_0x8c9cxe){_0x8c9cxd[_0x20ed[50]][_0x20ed[49]]= _0x20ed[54];_0x8c9cxd[_0x20ed[50]][_0x20ed[55]]= _[_0x20ed[56]](_0x8c9cxd[_0x20ed[55]]());process[_0x20ed[52]](_0x8c9cxd[_0x20ed[50]])});module[_0x20ed[58]]= Member \ No newline at end of file diff --git a/server/config/ami/network.js b/server/config/ami/network.js index dcf1246..c2d8dff 100644 --- a/server/config/ami/network.js +++ b/server/config/ami/network.js @@ -1,90 +1 @@ -'use strict'; - -const _ = require('lodash'); -const util = require('util'); -const path = require('path'); -const fs = require('fs'); - -var NetwokModel = require('../../models').Network; -var config = require('../../config/environment'); - -function Network(ami) { - console.log('Network Initialization...'); - - NetwokModel.afterCreate(function(doc) { - networkRewrite(doc, ami); - }); - - NetwokModel.afterUpdate(function(doc) { - networkRewrite(doc, ami); - }); - - NetwokModel.afterDestroy(function(doc) { - networkRewrite(doc, ami); - }); -} - -function networkRewrite(doc, ami) { - switch (doc.type) { - case 'localnet': - return NetwokModel - .scope('localnet') - .findAll() - .then(function(localnets) { - var localnetStrings = ''; - var localnetFile = 'sip_xcally_localnet.conf'; - localnets.forEach(function(localnet) { - localnetStrings += util.format('localnet = %s\n', localnet.value); - }); - fs.writeFile(path.join(config.asteriskConf, localnetFile), localnetStrings, { - flags: 'w', - mode: parseInt('0777', 8) - }, function(err) { - if (err) throw err; - reload(ami); - console.log("Localnet file saved!"); - }); - }) - .catch(function(err) { - console.log('Error writing localnet:', err); - }); - case 'externip': - return NetwokModel - .scope('externip') - .findAll() - .then(function(externips) { - var externipStrings = ''; - var externipFile = 'sip_xcally_externip.conf'; - externips.forEach(function(externip) { - externipStrings += util.format('externip = %s\n', externip.value); - }); - fs.writeFile(path.join(config.asteriskConf, externipFile), externipStrings, { - flags: 'w', - mode: parseInt('0777', 8) - }, function(err) { - if (err) throw err; - reload(ami); - console.log("Externip file saved!"); - }); - }) - .catch(function(err) { - console.log('Error writing externip:', err); - }); - default: - console.log('Type not recognized:', doc.type); - } -} - -function reload(ami) { - ami.action({ - Action: 'Reload' - }, function(err, res) { - if (err) { - console.error(err); - } else { - console.log(res); - } - }); -} - -module.exports = Network; +var _0xc521=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x75\x74\x69\x6C","\x70\x61\x74\x68","\x66\x73","\x4E\x65\x74\x77\x6F\x72\x6B","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x4E\x65\x74\x77\x6F\x72\x6B\x20\x49\x6E\x69\x74\x69\x61\x6C\x69\x7A\x61\x74\x69\x6F\x6E\x2E\x2E\x2E","\x6C\x6F\x67","\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79","\x45\x72\x72\x6F\x72\x20\x77\x72\x69\x74\x69\x6E\x67\x20\x6C\x6F\x63\x61\x6C\x6E\x65\x74\x3A","\x63\x61\x74\x63\x68","","\x73\x69\x70\x5F\x78\x63\x61\x6C\x6C\x79\x5F\x6C\x6F\x63\x61\x6C\x6E\x65\x74\x2E\x63\x6F\x6E\x66","\x6C\x6F\x63\x61\x6C\x6E\x65\x74\x20\x3D\x20\x25\x73\x0A","\x76\x61\x6C\x75\x65","\x66\x6F\x72\x6D\x61\x74","\x66\x6F\x72\x45\x61\x63\x68","\x61\x73\x74\x65\x72\x69\x73\x6B\x43\x6F\x6E\x66","\x6A\x6F\x69\x6E","\x77","\x30\x37\x37\x37","\x4C\x6F\x63\x61\x6C\x6E\x65\x74\x20\x66\x69\x6C\x65\x20\x73\x61\x76\x65\x64\x21","\x77\x72\x69\x74\x65\x46\x69\x6C\x65","\x74\x68\x65\x6E","\x66\x69\x6E\x64\x41\x6C\x6C","\x6C\x6F\x63\x61\x6C\x6E\x65\x74","\x73\x63\x6F\x70\x65","\x45\x72\x72\x6F\x72\x20\x77\x72\x69\x74\x69\x6E\x67\x20\x65\x78\x74\x65\x72\x6E\x69\x70\x3A","\x73\x69\x70\x5F\x78\x63\x61\x6C\x6C\x79\x5F\x65\x78\x74\x65\x72\x6E\x69\x70\x2E\x63\x6F\x6E\x66","\x65\x78\x74\x65\x72\x6E\x69\x70\x20\x3D\x20\x25\x73\x0A","\x45\x78\x74\x65\x72\x6E\x69\x70\x20\x66\x69\x6C\x65\x20\x73\x61\x76\x65\x64\x21","\x65\x78\x74\x65\x72\x6E\x69\x70","\x54\x79\x70\x65\x20\x6E\x6F\x74\x20\x72\x65\x63\x6F\x67\x6E\x69\x7A\x65\x64\x3A","\x74\x79\x70\x65","\x52\x65\x6C\x6F\x61\x64","\x65\x72\x72\x6F\x72","\x61\x63\x74\x69\x6F\x6E","\x65\x78\x70\x6F\x72\x74\x73"];_0xc521[0];const _=require(_0xc521[1]);const util=require(_0xc521[2]);const path=require(_0xc521[3]);const fs=require(_0xc521[4]);var NetwokModel=require(_0xc521[6])[_0xc521[5]];var config=require(_0xc521[7]);function Network(_0x4866x8){console[_0xc521[9]](_0xc521[8]);NetwokModel[_0xc521[10]](function(_0x4866x9){networkRewrite(_0x4866x9,_0x4866x8)});NetwokModel[_0xc521[11]](function(_0x4866x9){networkRewrite(_0x4866x9,_0x4866x8)});NetwokModel[_0xc521[12]](function(_0x4866x9){networkRewrite(_0x4866x9,_0x4866x8)})}function networkRewrite(_0x4866x9,_0x4866x8){switch(_0x4866x9[_0xc521[37]]){case _0xc521[29]:return NetwokModel[_0xc521[30]](_0xc521[29])[_0xc521[28]]()[_0xc521[27]](function(_0x4866xc){var _0x4866xd=_0xc521[15];var _0x4866xe=_0xc521[16];_0x4866xc[_0xc521[20]](function(_0x4866xf){_0x4866xd+= util[_0xc521[19]](_0xc521[17],_0x4866xf[_0xc521[18]])});fs[_0xc521[26]](path[_0xc521[22]](config[_0xc521[21]],_0x4866xe),_0x4866xd,{flags:_0xc521[23],mode:parseInt(_0xc521[24],8)},function(_0x4866xb){if(_0x4866xb){throw _0x4866xb};reload(_0x4866x8);console[_0xc521[9]](_0xc521[25])})})[_0xc521[14]](function(_0x4866xb){console[_0xc521[9]](_0xc521[13],_0x4866xb)});case _0xc521[35]:return NetwokModel[_0xc521[30]](_0xc521[35])[_0xc521[28]]()[_0xc521[27]](function(_0x4866x10){var _0x4866x11=_0xc521[15];var _0x4866x12=_0xc521[32];_0x4866x10[_0xc521[20]](function(_0x4866x13){_0x4866x11+= util[_0xc521[19]](_0xc521[33],_0x4866x13[_0xc521[18]])});fs[_0xc521[26]](path[_0xc521[22]](config[_0xc521[21]],_0x4866x12),_0x4866x11,{flags:_0xc521[23],mode:parseInt(_0xc521[24],8)},function(_0x4866xb){if(_0x4866xb){throw _0x4866xb};reload(_0x4866x8);console[_0xc521[9]](_0xc521[34])})})[_0xc521[14]](function(_0x4866xb){console[_0xc521[9]](_0xc521[31],_0x4866xb)});default:console[_0xc521[9]](_0xc521[36],_0x4866x9[_0xc521[37]])}}function reload(_0x4866x8){_0x4866x8[_0xc521[40]]({Action:_0xc521[38]},function(_0x4866xb,_0x4866x15){if(_0x4866xb){console[_0xc521[39]](_0x4866xb)}else {console[_0xc521[9]](_0x4866x15)}})}module[_0xc521[41]]= Network \ No newline at end of file diff --git a/server/config/ami/queue_caller.js b/server/config/ami/queue_caller.js index b034857..41288bd 100644 --- a/server/config/ami/queue_caller.js +++ b/server/config/ami/queue_caller.js @@ -1,96 +1 @@ -'use strict'; - -const _ = require('lodash'); -const moment = require('moment'); -const ReportQueue = require('../../models').ReportQueue; - -function QueueCaller(io) { - console.log('QueueCaller Initialization...'); - - ReportQueue.afterCreate(function(doc, options) { - doc.dataValues.evt = 'ReportQueue.afterCreate'; - process.send(doc.dataValues); - - io.to('admins').emit('report_queue:save', doc); - io.to('users').emit('report_queue:save', doc); - }); - - ReportQueue.afterUpdate(function(doc, options) { - doc.dataValues.evt = 'ReportQueue.afterUpdate'; - doc.dataValues.changed = _.keyBy(doc.changed()); - process.send(doc.dataValues); - - io.to('admins').emit('report_queue:update', doc); - io.to('users').emit('report_queue:update', doc); - }); -} - -QueueCaller.prototype.join = function(evt) { - evt.queuecallerjoinAt = moment().format("YYYY-MM-DD HH:mm:ss"); - return create(evt); -} - -QueueCaller.prototype.leave = function(evt) { - return findAndUpdate({ - uniqueid: evt.uniqueid, - queuecallerleaveAt: moment().format("YYYY-MM-DD HH:mm:ss") - }); -} - -QueueCaller.prototype.abandon = function(evt) { - evt.queuecallerabandon = true; - evt.queuecallerabandonAt = moment().format("YYYY-MM-DD HH:mm:ss"); - evt.queuecallerleaveAt = moment().format("YYYY-MM-DD HH:mm:ss"); - return findAndUpdate(evt); -} - -QueueCaller.prototype.complete = function(evt) { - evt.queuecallercomplete = true; - evt.queuecallercompleteAt = moment().format("YYYY-MM-DD HH:mm:ss"); - return findAndUpdate(evt); -} - -QueueCaller.prototype.exit = function(evt) { - evt.queuecallerabandon = false; - evt.queuecallerabandonAt = null; - - evt.queuecallerexit = true; - evt.queuecallerexitAt = moment().format("YYYY-MM-DD HH:mm:ss"); - evt.queuecallerexitreason = evt.value.toLowerCase(); - - return findAndUpdate(evt); -} - -function create(evt) { - return ReportQueue - .create(evt) - .then(function(data) { - console.log('[report] queue created'); - }) - .catch(function(err) { - console.error('[report] queue ' + err); - }); -} - -function findAndUpdate(evt) { - return ReportQueue - .findOne({ - where: { - uniqueid: evt.uniqueid - } - }) - .then(function(reportQueue) { - if (reportQueue) { - return reportQueue - .update(evt); - } - }) - .then(function() { - console.log('[report] queue update'); - }) - .catch(function(err) { - console.error('[queue_caller] update error: ' + err); - }); -} - -module.exports = QueueCaller; +var _0xb1b6=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x6D\x6F\x6D\x65\x6E\x74","\x52\x65\x70\x6F\x72\x74\x51\x75\x65\x75\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x51\x75\x65\x75\x65\x43\x61\x6C\x6C\x65\x72\x20\x49\x6E\x69\x74\x69\x61\x6C\x69\x7A\x61\x74\x69\x6F\x6E\x2E\x2E\x2E","\x6C\x6F\x67","\x65\x76\x74","\x64\x61\x74\x61\x56\x61\x6C\x75\x65\x73","\x52\x65\x70\x6F\x72\x74\x51\x75\x65\x75\x65\x2E\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x73\x65\x6E\x64","\x72\x65\x70\x6F\x72\x74\x5F\x71\x75\x65\x75\x65\x3A\x73\x61\x76\x65","\x65\x6D\x69\x74","\x61\x64\x6D\x69\x6E\x73","\x74\x6F","\x75\x73\x65\x72\x73","\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x52\x65\x70\x6F\x72\x74\x51\x75\x65\x75\x65\x2E\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x63\x68\x61\x6E\x67\x65\x64","\x6B\x65\x79\x42\x79","\x72\x65\x70\x6F\x72\x74\x5F\x71\x75\x65\x75\x65\x3A\x75\x70\x64\x61\x74\x65","\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x6A\x6F\x69\x6E","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6A\x6F\x69\x6E\x41\x74","\x59\x59\x59\x59\x2D\x4D\x4D\x2D\x44\x44\x20\x48\x48\x3A\x6D\x6D\x3A\x73\x73","\x66\x6F\x72\x6D\x61\x74","\x6C\x65\x61\x76\x65","\x75\x6E\x69\x71\x75\x65\x69\x64","\x61\x62\x61\x6E\x64\x6F\x6E","\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x61\x62\x61\x6E\x64\x6F\x6E","\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x61\x62\x61\x6E\x64\x6F\x6E\x41\x74","\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6C\x65\x61\x76\x65\x41\x74","\x63\x6F\x6D\x70\x6C\x65\x74\x65","\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x63\x6F\x6D\x70\x6C\x65\x74\x65","\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x63\x6F\x6D\x70\x6C\x65\x74\x65\x41\x74","\x65\x78\x69\x74","\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x65\x78\x69\x74","\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x65\x78\x69\x74\x41\x74","\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x65\x78\x69\x74\x72\x65\x61\x73\x6F\x6E","\x74\x6F\x4C\x6F\x77\x65\x72\x43\x61\x73\x65","\x76\x61\x6C\x75\x65","\x5B\x72\x65\x70\x6F\x72\x74\x5D\x20\x71\x75\x65\x75\x65\x20","\x65\x72\x72\x6F\x72","\x63\x61\x74\x63\x68","\x5B\x72\x65\x70\x6F\x72\x74\x5D\x20\x71\x75\x65\x75\x65\x20\x63\x72\x65\x61\x74\x65\x64","\x74\x68\x65\x6E","\x63\x72\x65\x61\x74\x65","\x5B\x71\x75\x65\x75\x65\x5F\x63\x61\x6C\x6C\x65\x72\x5D\x20\x75\x70\x64\x61\x74\x65\x20\x65\x72\x72\x6F\x72\x3A\x20","\x5B\x72\x65\x70\x6F\x72\x74\x5D\x20\x71\x75\x65\x75\x65\x20\x75\x70\x64\x61\x74\x65","\x75\x70\x64\x61\x74\x65","\x66\x69\x6E\x64\x4F\x6E\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0xb1b6[0];const _=require(_0xb1b6[1]);const moment=require(_0xb1b6[2]);const ReportQueue=require(_0xb1b6[4])[_0xb1b6[3]];function QueueCaller(_0xefd6x5){console[_0xb1b6[6]](_0xb1b6[5]);ReportQueue[_0xb1b6[16]](function(_0xefd6x6,_0xefd6x7){_0xefd6x6[_0xb1b6[8]][_0xb1b6[7]]= _0xb1b6[9];process[_0xb1b6[10]](_0xefd6x6[_0xb1b6[8]]);_0xefd6x5[_0xb1b6[14]](_0xb1b6[13])[_0xb1b6[12]](_0xb1b6[11],_0xefd6x6);_0xefd6x5[_0xb1b6[14]](_0xb1b6[15])[_0xb1b6[12]](_0xb1b6[11],_0xefd6x6)});ReportQueue[_0xb1b6[21]](function(_0xefd6x6,_0xefd6x7){_0xefd6x6[_0xb1b6[8]][_0xb1b6[7]]= _0xb1b6[17];_0xefd6x6[_0xb1b6[8]][_0xb1b6[18]]= _[_0xb1b6[19]](_0xefd6x6[_0xb1b6[18]]());process[_0xb1b6[10]](_0xefd6x6[_0xb1b6[8]]);_0xefd6x5[_0xb1b6[14]](_0xb1b6[13])[_0xb1b6[12]](_0xb1b6[20],_0xefd6x6);_0xefd6x5[_0xb1b6[14]](_0xb1b6[15])[_0xb1b6[12]](_0xb1b6[20],_0xefd6x6)})}QueueCaller[_0xb1b6[23]][_0xb1b6[22]]= function(_0xefd6x8){_0xefd6x8[_0xb1b6[24]]= moment()[_0xb1b6[26]](_0xb1b6[25]);return create(_0xefd6x8)};QueueCaller[_0xb1b6[23]][_0xb1b6[27]]= function(_0xefd6x8){return findAndUpdate({uniqueid:_0xefd6x8[_0xb1b6[28]],queuecallerleaveAt:moment()[_0xb1b6[26]](_0xb1b6[25])})};QueueCaller[_0xb1b6[23]][_0xb1b6[29]]= function(_0xefd6x8){_0xefd6x8[_0xb1b6[30]]= true;_0xefd6x8[_0xb1b6[31]]= moment()[_0xb1b6[26]](_0xb1b6[25]);_0xefd6x8[_0xb1b6[32]]= moment()[_0xb1b6[26]](_0xb1b6[25]);return findAndUpdate(_0xefd6x8)};QueueCaller[_0xb1b6[23]][_0xb1b6[33]]= function(_0xefd6x8){_0xefd6x8[_0xb1b6[34]]= true;_0xefd6x8[_0xb1b6[35]]= moment()[_0xb1b6[26]](_0xb1b6[25]);return findAndUpdate(_0xefd6x8)};QueueCaller[_0xb1b6[23]][_0xb1b6[36]]= function(_0xefd6x8){_0xefd6x8[_0xb1b6[30]]= false;_0xefd6x8[_0xb1b6[31]]= null;_0xefd6x8[_0xb1b6[37]]= true;_0xefd6x8[_0xb1b6[38]]= moment()[_0xb1b6[26]](_0xb1b6[25]);_0xefd6x8[_0xb1b6[39]]= _0xefd6x8[_0xb1b6[41]][_0xb1b6[40]]();return findAndUpdate(_0xefd6x8)};function create(_0xefd6x8){return ReportQueue[_0xb1b6[47]](_0xefd6x8)[_0xb1b6[46]](function(_0xefd6xb){console[_0xb1b6[6]](_0xb1b6[45])})[_0xb1b6[44]](function(_0xefd6xa){console[_0xb1b6[43]](_0xb1b6[42]+ _0xefd6xa)})}function findAndUpdate(_0xefd6x8){return ReportQueue[_0xb1b6[51]]({where:{uniqueid:_0xefd6x8[_0xb1b6[28]]}})[_0xb1b6[46]](function(_0xefd6xd){if(_0xefd6xd){return _0xefd6xd[_0xb1b6[50]](_0xefd6x8)}})[_0xb1b6[46]](function(){console[_0xb1b6[6]](_0xb1b6[49])})[_0xb1b6[44]](function(_0xefd6xa){console[_0xb1b6[43]](_0xb1b6[48]+ _0xefd6xa)})}module[_0xb1b6[52]]= QueueCaller \ No newline at end of file diff --git a/server/config/ami/queue_member.js b/server/config/ami/queue_member.js index b4b9185..346ac00 100644 --- a/server/config/ami/queue_member.js +++ b/server/config/ami/queue_member.js @@ -1,91 +1 @@ -'use strict'; - -const _ = require('lodash'); -const moment = require('moment'); -const UserHasVoiceQueue = require('../../models').UserHasVoiceQueue; - -function QueueMember(io) { - console.log('QueueMember Initialization...'); - - UserHasVoiceQueue.afterCreate(function(doc, options) { - doc.dataValues.evt = 'UserHasVoiceQueue.afterCreate'; - process.send(doc.dataValues); - - io.to('users').emit('user_has_voice_queue:save', doc); - io.to('admins').emit('user_has_voice_queue:save', doc); - }); - - UserHasVoiceQueue.afterUpdate(function(doc, options) { - doc.dataValues.evt = 'UserHasVoiceQueue.afterUpdate'; - doc.dataValues.changed = _.keyBy(doc.changed()); - process.send(doc.dataValues); - - io.to('users').emit('user_has_voice_queue:save', doc); - io.to('admins').emit('user_has_voice_queue:save', doc); - }); - - UserHasVoiceQueue.afterDestroy(function(doc, options) { - io.to('users').emit('user_has_voice_queue:remove', doc); - io.to('admins').emit('user_has_voice_queue:remove', doc); - }); - - UserHasVoiceQueue.afterBulkCreate(function(doc, options) { - doc.dataValues.evt = 'UserHasVoiceQueue.afterBulkCreate'; - process.send(doc.dataValues); - }); - - UserHasVoiceQueue.afterBulkDestroy(function(doc, options) { - doc.dataValues.evt = 'UserHasVoiceQueue.afterBulkDestroy'; - process.send(doc.dataValues); - }); -} - -QueueMember.prototype.added = function(evt) { - delete evt.lastcall; - delete evt.callstaken; - - evt.logged = true; - evt.loggedAt = moment().format('YYYY-MM-DD HH:mm:ss'); - return findAndUpdate(evt); -} - -QueueMember.prototype.pause = function(evt) { - evt.pausedAt = parseInt(evt.paused, 10) ? moment().format('YYYY-MM-DD HH:mm:ss') : null; - return findAndUpdate(evt); -} - -QueueMember.prototype.penalty = function(evt) { - return findAndUpdate(evt); -} - -QueueMember.prototype.removed = function(evt) { - return findAndUpdate(evt); -} - -QueueMember.prototype.ringinuse = function(evt) { - return findAndUpdate(evt); -} - -QueueMember.prototype.status = function(evt) { - return findAndUpdate(evt); -} - -function findAndUpdate(evt, options) { - return UserHasVoiceQueue - .update(evt, { - where: { - queue: evt.queue, - membername: evt.membername - }, - individualHooks: true, - raw: true - }) - .then(function() { - console.log('[queuemember] update member'); - }) - .catch(function(err) { - console.error('[queuemember] update member error: ' + err); - }); -} - -module.exports = QueueMember; +var _0x585c=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x6D\x6F\x6D\x65\x6E\x74","\x55\x73\x65\x72\x48\x61\x73\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x51\x75\x65\x75\x65\x4D\x65\x6D\x62\x65\x72\x20\x49\x6E\x69\x74\x69\x61\x6C\x69\x7A\x61\x74\x69\x6F\x6E\x2E\x2E\x2E","\x6C\x6F\x67","\x65\x76\x74","\x64\x61\x74\x61\x56\x61\x6C\x75\x65\x73","\x55\x73\x65\x72\x48\x61\x73\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65\x2E\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x73\x65\x6E\x64","\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x76\x6F\x69\x63\x65\x5F\x71\x75\x65\x75\x65\x3A\x73\x61\x76\x65","\x65\x6D\x69\x74","\x75\x73\x65\x72\x73","\x74\x6F","\x61\x64\x6D\x69\x6E\x73","\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x55\x73\x65\x72\x48\x61\x73\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65\x2E\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x63\x68\x61\x6E\x67\x65\x64","\x6B\x65\x79\x42\x79","\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x76\x6F\x69\x63\x65\x5F\x71\x75\x65\x75\x65\x3A\x72\x65\x6D\x6F\x76\x65","\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79","\x55\x73\x65\x72\x48\x61\x73\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65\x2E\x61\x66\x74\x65\x72\x42\x75\x6C\x6B\x43\x72\x65\x61\x74\x65","\x61\x66\x74\x65\x72\x42\x75\x6C\x6B\x43\x72\x65\x61\x74\x65","\x55\x73\x65\x72\x48\x61\x73\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65\x2E\x61\x66\x74\x65\x72\x42\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x61\x66\x74\x65\x72\x42\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x61\x64\x64\x65\x64","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x6C\x61\x73\x74\x63\x61\x6C\x6C","\x63\x61\x6C\x6C\x73\x74\x61\x6B\x65\x6E","\x6C\x6F\x67\x67\x65\x64","\x6C\x6F\x67\x67\x65\x64\x41\x74","\x59\x59\x59\x59\x2D\x4D\x4D\x2D\x44\x44\x20\x48\x48\x3A\x6D\x6D\x3A\x73\x73","\x66\x6F\x72\x6D\x61\x74","\x70\x61\x75\x73\x65","\x70\x61\x75\x73\x65\x64\x41\x74","\x70\x61\x75\x73\x65\x64","\x70\x65\x6E\x61\x6C\x74\x79","\x72\x65\x6D\x6F\x76\x65\x64","\x72\x69\x6E\x67\x69\x6E\x75\x73\x65","\x73\x74\x61\x74\x75\x73","\x5B\x71\x75\x65\x75\x65\x6D\x65\x6D\x62\x65\x72\x5D\x20\x75\x70\x64\x61\x74\x65\x20\x6D\x65\x6D\x62\x65\x72\x20\x65\x72\x72\x6F\x72\x3A\x20","\x65\x72\x72\x6F\x72","\x63\x61\x74\x63\x68","\x5B\x71\x75\x65\x75\x65\x6D\x65\x6D\x62\x65\x72\x5D\x20\x75\x70\x64\x61\x74\x65\x20\x6D\x65\x6D\x62\x65\x72","\x74\x68\x65\x6E","\x71\x75\x65\x75\x65","\x6D\x65\x6D\x62\x65\x72\x6E\x61\x6D\x65","\x75\x70\x64\x61\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0x585c[0];const _=require(_0x585c[1]);const moment=require(_0x585c[2]);const UserHasVoiceQueue=require(_0x585c[4])[_0x585c[3]];function QueueMember(_0xd047x5){console[_0x585c[6]](_0x585c[5]);UserHasVoiceQueue[_0x585c[16]](function(_0xd047x6,_0xd047x7){_0xd047x6[_0x585c[8]][_0x585c[7]]= _0x585c[9];process[_0x585c[10]](_0xd047x6[_0x585c[8]]);_0xd047x5[_0x585c[14]](_0x585c[13])[_0x585c[12]](_0x585c[11],_0xd047x6);_0xd047x5[_0x585c[14]](_0x585c[15])[_0x585c[12]](_0x585c[11],_0xd047x6)});UserHasVoiceQueue[_0x585c[20]](function(_0xd047x6,_0xd047x7){_0xd047x6[_0x585c[8]][_0x585c[7]]= _0x585c[17];_0xd047x6[_0x585c[8]][_0x585c[18]]= _[_0x585c[19]](_0xd047x6[_0x585c[18]]());process[_0x585c[10]](_0xd047x6[_0x585c[8]]);_0xd047x5[_0x585c[14]](_0x585c[13])[_0x585c[12]](_0x585c[11],_0xd047x6);_0xd047x5[_0x585c[14]](_0x585c[15])[_0x585c[12]](_0x585c[11],_0xd047x6)});UserHasVoiceQueue[_0x585c[22]](function(_0xd047x6,_0xd047x7){_0xd047x5[_0x585c[14]](_0x585c[13])[_0x585c[12]](_0x585c[21],_0xd047x6);_0xd047x5[_0x585c[14]](_0x585c[15])[_0x585c[12]](_0x585c[21],_0xd047x6)});UserHasVoiceQueue[_0x585c[24]](function(_0xd047x6,_0xd047x7){_0xd047x6[_0x585c[8]][_0x585c[7]]= _0x585c[23];process[_0x585c[10]](_0xd047x6[_0x585c[8]])});UserHasVoiceQueue[_0x585c[26]](function(_0xd047x6,_0xd047x7){_0xd047x6[_0x585c[8]][_0x585c[7]]= _0x585c[25];process[_0x585c[10]](_0xd047x6[_0x585c[8]])})}QueueMember[_0x585c[28]][_0x585c[27]]= function(_0xd047x8){delete _0xd047x8[_0x585c[29]];delete _0xd047x8[_0x585c[30]];_0xd047x8[_0x585c[31]]= true;_0xd047x8[_0x585c[32]]= moment()[_0x585c[34]](_0x585c[33]);return findAndUpdate(_0xd047x8)};QueueMember[_0x585c[28]][_0x585c[35]]= function(_0xd047x8){_0xd047x8[_0x585c[36]]= parseInt(_0xd047x8[_0x585c[37]],10)?moment()[_0x585c[34]](_0x585c[33]):null;return findAndUpdate(_0xd047x8)};QueueMember[_0x585c[28]][_0x585c[38]]= function(_0xd047x8){return findAndUpdate(_0xd047x8)};QueueMember[_0x585c[28]][_0x585c[39]]= function(_0xd047x8){return findAndUpdate(_0xd047x8)};QueueMember[_0x585c[28]][_0x585c[40]]= function(_0xd047x8){return findAndUpdate(_0xd047x8)};QueueMember[_0x585c[28]][_0x585c[41]]= function(_0xd047x8){return findAndUpdate(_0xd047x8)};function findAndUpdate(_0xd047x8,_0xd047x7){return UserHasVoiceQueue[_0x585c[49]](_0xd047x8,{where:{queue:_0xd047x8[_0x585c[47]],membername:_0xd047x8[_0x585c[48]]},individualHooks:true,raw:true})[_0x585c[46]](function(){console[_0x585c[6]](_0x585c[45])})[_0x585c[44]](function(_0xd047xa){console[_0x585c[43]](_0x585c[42]+ _0xd047xa)})}module[_0x585c[50]]= QueueMember \ No newline at end of file diff --git a/server/config/ami/recording.js b/server/config/ami/recording.js index 873d66d..44ecb89 100644 --- a/server/config/ami/recording.js +++ b/server/config/ami/recording.js @@ -1,83 +1 @@ -'use strict'; - -const _ = require('lodash'); -const VoiceRecording = require('../../models').VoiceRecording; - -function Recording() { - console.log('Recording Initialization...'); -} - -Recording.prototype.create = function(evt) { - create(evt); -} - -Recording.prototype.updateQueue = function(evt) { - updateQueue(evt); -} - -Recording.prototype.updateType = function(evt) { - updateType(evt); -} - -function create(evt) { - evt.type = 'unknown'; - evt.customerPhone = evt.calleridnum; - return VoiceRecording - .create(evt, { - raw: true - }) - .catch(function(err) { - console.error('Recording create error:', err); - }); -} - -function updateQueue(evt) { - return VoiceRecording - .update({ - queue: evt.queue, - membername: evt.membername - }, { - where: { - uniqueid: evt.uniqueid - }, - raw: true, - individualHooks: true - }) - .catch(function(err) { - console.error('Recording queue update error:', err); - }); -} - -function updateType(evt) { - return VoiceRecording - .findOne({ - where: { - uniqueid: evt.uniqueid - } - }) - .then(function(recording) { - if (recording) { - recording.type = evt.type; - recording.customerPhone = evt.type === 'outbound' ? recording.exten : recording.calleridnum; - - return recording - .save(); - } - }) - .catch(function(err) { - console.error('Recording queue update error:', err); - }); -} - -VoiceRecording.afterCreate(function(doc, options) { - doc.dataValues.evt = 'VoiceRecording.afterCreate'; - process.send(doc.dataValues); -}); - -VoiceRecording.afterUpdate(function(doc, options) { - doc.dataValues.evt = 'VoiceRecording.afterUpdate'; - doc.dataValues.changed = _.keyBy(doc.changed()); - process.send(doc.dataValues); -}); - -module.exports = Recording; +var _0x630a=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x56\x6F\x69\x63\x65\x52\x65\x63\x6F\x72\x64\x69\x6E\x67","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x52\x65\x63\x6F\x72\x64\x69\x6E\x67\x20\x49\x6E\x69\x74\x69\x61\x6C\x69\x7A\x61\x74\x69\x6F\x6E\x2E\x2E\x2E","\x6C\x6F\x67","\x63\x72\x65\x61\x74\x65","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x75\x70\x64\x61\x74\x65\x51\x75\x65\x75\x65","\x75\x70\x64\x61\x74\x65\x54\x79\x70\x65","\x74\x79\x70\x65","\x75\x6E\x6B\x6E\x6F\x77\x6E","\x63\x75\x73\x74\x6F\x6D\x65\x72\x50\x68\x6F\x6E\x65","\x63\x61\x6C\x6C\x65\x72\x69\x64\x6E\x75\x6D","\x52\x65\x63\x6F\x72\x64\x69\x6E\x67\x20\x63\x72\x65\x61\x74\x65\x20\x65\x72\x72\x6F\x72\x3A","\x65\x72\x72\x6F\x72","\x63\x61\x74\x63\x68","\x52\x65\x63\x6F\x72\x64\x69\x6E\x67\x20\x71\x75\x65\x75\x65\x20\x75\x70\x64\x61\x74\x65\x20\x65\x72\x72\x6F\x72\x3A","\x71\x75\x65\x75\x65","\x6D\x65\x6D\x62\x65\x72\x6E\x61\x6D\x65","\x75\x6E\x69\x71\x75\x65\x69\x64","\x75\x70\x64\x61\x74\x65","\x6F\x75\x74\x62\x6F\x75\x6E\x64","\x65\x78\x74\x65\x6E","\x73\x61\x76\x65","\x74\x68\x65\x6E","\x66\x69\x6E\x64\x4F\x6E\x65","\x65\x76\x74","\x64\x61\x74\x61\x56\x61\x6C\x75\x65\x73","\x56\x6F\x69\x63\x65\x52\x65\x63\x6F\x72\x64\x69\x6E\x67\x2E\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x73\x65\x6E\x64","\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x56\x6F\x69\x63\x65\x52\x65\x63\x6F\x72\x64\x69\x6E\x67\x2E\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x63\x68\x61\x6E\x67\x65\x64","\x6B\x65\x79\x42\x79","\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0x630a[0];const _=require(_0x630a[1]);const VoiceRecording=require(_0x630a[3])[_0x630a[2]];function Recording(){console[_0x630a[5]](_0x630a[4])}Recording[_0x630a[7]][_0x630a[6]]= function(_0x3017x4){create(_0x3017x4)};Recording[_0x630a[7]][_0x630a[8]]= function(_0x3017x4){updateQueue(_0x3017x4)};Recording[_0x630a[7]][_0x630a[9]]= function(_0x3017x4){updateType(_0x3017x4)};function create(_0x3017x4){_0x3017x4[_0x630a[10]]= _0x630a[11];_0x3017x4[_0x630a[12]]= _0x3017x4[_0x630a[13]];return VoiceRecording[_0x630a[6]](_0x3017x4,{raw:true})[_0x630a[16]](function(_0x3017x6){console[_0x630a[15]](_0x630a[14],_0x3017x6)})}function updateQueue(_0x3017x4){return VoiceRecording[_0x630a[21]]({queue:_0x3017x4[_0x630a[18]],membername:_0x3017x4[_0x630a[19]]},{where:{uniqueid:_0x3017x4[_0x630a[20]]},raw:true,individualHooks:true})[_0x630a[16]](function(_0x3017x6){console[_0x630a[15]](_0x630a[17],_0x3017x6)})}function updateType(_0x3017x4){return VoiceRecording[_0x630a[26]]({where:{uniqueid:_0x3017x4[_0x630a[20]]}})[_0x630a[25]](function(_0x3017x9){if(_0x3017x9){_0x3017x9[_0x630a[10]]= _0x3017x4[_0x630a[10]];_0x3017x9[_0x630a[12]]= _0x3017x4[_0x630a[10]]=== _0x630a[22]?_0x3017x9[_0x630a[23]]:_0x3017x9[_0x630a[13]];return _0x3017x9[_0x630a[24]]()}})[_0x630a[16]](function(_0x3017x6){console[_0x630a[15]](_0x630a[17],_0x3017x6)})}VoiceRecording[_0x630a[31]](function(_0x3017xa,_0x3017xb){_0x3017xa[_0x630a[28]][_0x630a[27]]= _0x630a[29];process[_0x630a[30]](_0x3017xa[_0x630a[28]])});VoiceRecording[_0x630a[35]](function(_0x3017xa,_0x3017xb){_0x3017xa[_0x630a[28]][_0x630a[27]]= _0x630a[32];_0x3017xa[_0x630a[28]][_0x630a[33]]= _[_0x630a[34]](_0x3017xa[_0x630a[33]]());process[_0x630a[30]](_0x3017xa[_0x630a[28]])});module[_0x630a[36]]= Recording \ No newline at end of file diff --git a/server/config/ami/transfer.js b/server/config/ami/transfer.js index 9e41ba4..9c7fcef 100644 --- a/server/config/ami/transfer.js +++ b/server/config/ami/transfer.js @@ -1,56 +1 @@ -var moment = require('moment'); -var ReportCallTransfer = require('../../models').ReportCallTransfer; - -function Transfer() { - console.log('Transfer Initialization...'); -} - -Transfer.prototype.createBlind = function(evt) { - return ReportCallTransfer - .create(evt, { - raw: true - }) - .then(function() { - console.log('[blind tranfer] created'); - }) - .catch(function(err) { - console.error('[blind tranfer] created error: ' + err); - }); -} - -Transfer.prototype.createAttended = function(evt) { - return ReportCallTransfer - .create({ - result: evt.result, - transfererchannel: evt.origtransfererchannel, - transferercalleridnum: evt.origtransferercalleridnum, - transferercalleridname: evt.origtransferercalleridname, - transfererconnectedlinenum: evt.secondtransfererconnectedlinenum, - transfererconnectedlinename: evt.secondtransfererconnectedlinename, - transfereraccountcode: evt.origtransfereraccountcode, - transferercontext: evt.secondtransferercontext, - transfererexten: evt.secondtransfererexten, - transfererlinkedid: evt.origtransfererlinkedid, - transfereechannel: evt.transfertargetchannel, - transfereecalleridnum: evt.transfertargetcalleridnum, - transfereecalleridname: evt.transfertargetcalleridname, - transfereeconnectedlinenum: evt.transfertargetconnectedlinenum, - transfereeconnectedlinename: evt.transfertargetconnectedlinename, - transfereeaccountcode: evt.transfertargetaccountcode, - transfereecontext: evt.transfertargetcontext, - transfereeexten: evt.transfertargetexten, - transfereelinkedid: evt.transfertargetlinkedid, - isexternal: evt.isexternal, - context: evt.origtransferercontext, - extension: evt.origtransfererexten, - type: 'attended' - }) - .then(function() { - console.log('[attended tranfer] created'); - }) - .catch(function(err) { - console.error('[attended tranfer] created error: ' + err); - }); -} - -module.exports = Transfer; +var _0x1b3b=["\x6D\x6F\x6D\x65\x6E\x74","\x52\x65\x70\x6F\x72\x74\x43\x61\x6C\x6C\x54\x72\x61\x6E\x73\x66\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x54\x72\x61\x6E\x73\x66\x65\x72\x20\x49\x6E\x69\x74\x69\x61\x6C\x69\x7A\x61\x74\x69\x6F\x6E\x2E\x2E\x2E","\x6C\x6F\x67","\x63\x72\x65\x61\x74\x65\x42\x6C\x69\x6E\x64","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x5B\x62\x6C\x69\x6E\x64\x20\x74\x72\x61\x6E\x66\x65\x72\x5D\x20\x63\x72\x65\x61\x74\x65\x64\x20\x65\x72\x72\x6F\x72\x3A\x20","\x65\x72\x72\x6F\x72","\x63\x61\x74\x63\x68","\x5B\x62\x6C\x69\x6E\x64\x20\x74\x72\x61\x6E\x66\x65\x72\x5D\x20\x63\x72\x65\x61\x74\x65\x64","\x74\x68\x65\x6E","\x63\x72\x65\x61\x74\x65","\x63\x72\x65\x61\x74\x65\x41\x74\x74\x65\x6E\x64\x65\x64","\x5B\x61\x74\x74\x65\x6E\x64\x65\x64\x20\x74\x72\x61\x6E\x66\x65\x72\x5D\x20\x63\x72\x65\x61\x74\x65\x64\x20\x65\x72\x72\x6F\x72\x3A\x20","\x5B\x61\x74\x74\x65\x6E\x64\x65\x64\x20\x74\x72\x61\x6E\x66\x65\x72\x5D\x20\x63\x72\x65\x61\x74\x65\x64","\x72\x65\x73\x75\x6C\x74","\x6F\x72\x69\x67\x74\x72\x61\x6E\x73\x66\x65\x72\x65\x72\x63\x68\x61\x6E\x6E\x65\x6C","\x6F\x72\x69\x67\x74\x72\x61\x6E\x73\x66\x65\x72\x65\x72\x63\x61\x6C\x6C\x65\x72\x69\x64\x6E\x75\x6D","\x6F\x72\x69\x67\x74\x72\x61\x6E\x73\x66\x65\x72\x65\x72\x63\x61\x6C\x6C\x65\x72\x69\x64\x6E\x61\x6D\x65","\x73\x65\x63\x6F\x6E\x64\x74\x72\x61\x6E\x73\x66\x65\x72\x65\x72\x63\x6F\x6E\x6E\x65\x63\x74\x65\x64\x6C\x69\x6E\x65\x6E\x75\x6D","\x73\x65\x63\x6F\x6E\x64\x74\x72\x61\x6E\x73\x66\x65\x72\x65\x72\x63\x6F\x6E\x6E\x65\x63\x74\x65\x64\x6C\x69\x6E\x65\x6E\x61\x6D\x65","\x6F\x72\x69\x67\x74\x72\x61\x6E\x73\x66\x65\x72\x65\x72\x61\x63\x63\x6F\x75\x6E\x74\x63\x6F\x64\x65","\x73\x65\x63\x6F\x6E\x64\x74\x72\x61\x6E\x73\x66\x65\x72\x65\x72\x63\x6F\x6E\x74\x65\x78\x74","\x73\x65\x63\x6F\x6E\x64\x74\x72\x61\x6E\x73\x66\x65\x72\x65\x72\x65\x78\x74\x65\x6E","\x6F\x72\x69\x67\x74\x72\x61\x6E\x73\x66\x65\x72\x65\x72\x6C\x69\x6E\x6B\x65\x64\x69\x64","\x74\x72\x61\x6E\x73\x66\x65\x72\x74\x61\x72\x67\x65\x74\x63\x68\x61\x6E\x6E\x65\x6C","\x74\x72\x61\x6E\x73\x66\x65\x72\x74\x61\x72\x67\x65\x74\x63\x61\x6C\x6C\x65\x72\x69\x64\x6E\x75\x6D","\x74\x72\x61\x6E\x73\x66\x65\x72\x74\x61\x72\x67\x65\x74\x63\x61\x6C\x6C\x65\x72\x69\x64\x6E\x61\x6D\x65","\x74\x72\x61\x6E\x73\x66\x65\x72\x74\x61\x72\x67\x65\x74\x63\x6F\x6E\x6E\x65\x63\x74\x65\x64\x6C\x69\x6E\x65\x6E\x75\x6D","\x74\x72\x61\x6E\x73\x66\x65\x72\x74\x61\x72\x67\x65\x74\x63\x6F\x6E\x6E\x65\x63\x74\x65\x64\x6C\x69\x6E\x65\x6E\x61\x6D\x65","\x74\x72\x61\x6E\x73\x66\x65\x72\x74\x61\x72\x67\x65\x74\x61\x63\x63\x6F\x75\x6E\x74\x63\x6F\x64\x65","\x74\x72\x61\x6E\x73\x66\x65\x72\x74\x61\x72\x67\x65\x74\x63\x6F\x6E\x74\x65\x78\x74","\x74\x72\x61\x6E\x73\x66\x65\x72\x74\x61\x72\x67\x65\x74\x65\x78\x74\x65\x6E","\x74\x72\x61\x6E\x73\x66\x65\x72\x74\x61\x72\x67\x65\x74\x6C\x69\x6E\x6B\x65\x64\x69\x64","\x69\x73\x65\x78\x74\x65\x72\x6E\x61\x6C","\x6F\x72\x69\x67\x74\x72\x61\x6E\x73\x66\x65\x72\x65\x72\x63\x6F\x6E\x74\x65\x78\x74","\x6F\x72\x69\x67\x74\x72\x61\x6E\x73\x66\x65\x72\x65\x72\x65\x78\x74\x65\x6E","\x61\x74\x74\x65\x6E\x64\x65\x64","\x65\x78\x70\x6F\x72\x74\x73"];var moment=require(_0x1b3b[0]);var ReportCallTransfer=require(_0x1b3b[2])[_0x1b3b[1]];function Transfer(){console[_0x1b3b[4]](_0x1b3b[3])}Transfer[_0x1b3b[6]][_0x1b3b[5]]= function(_0x35d4x4){return ReportCallTransfer[_0x1b3b[12]](_0x35d4x4,{raw:true})[_0x1b3b[11]](function(){console[_0x1b3b[4]](_0x1b3b[10])})[_0x1b3b[9]](function(_0x35d4x5){console[_0x1b3b[8]](_0x1b3b[7]+ _0x35d4x5)})};Transfer[_0x1b3b[6]][_0x1b3b[13]]= function(_0x35d4x4){return ReportCallTransfer[_0x1b3b[12]]({result:_0x35d4x4[_0x1b3b[16]],transfererchannel:_0x35d4x4[_0x1b3b[17]],transferercalleridnum:_0x35d4x4[_0x1b3b[18]],transferercalleridname:_0x35d4x4[_0x1b3b[19]],transfererconnectedlinenum:_0x35d4x4[_0x1b3b[20]],transfererconnectedlinename:_0x35d4x4[_0x1b3b[21]],transfereraccountcode:_0x35d4x4[_0x1b3b[22]],transferercontext:_0x35d4x4[_0x1b3b[23]],transfererexten:_0x35d4x4[_0x1b3b[24]],transfererlinkedid:_0x35d4x4[_0x1b3b[25]],transfereechannel:_0x35d4x4[_0x1b3b[26]],transfereecalleridnum:_0x35d4x4[_0x1b3b[27]],transfereecalleridname:_0x35d4x4[_0x1b3b[28]],transfereeconnectedlinenum:_0x35d4x4[_0x1b3b[29]],transfereeconnectedlinename:_0x35d4x4[_0x1b3b[30]],transfereeaccountcode:_0x35d4x4[_0x1b3b[31]],transfereecontext:_0x35d4x4[_0x1b3b[32]],transfereeexten:_0x35d4x4[_0x1b3b[33]],transfereelinkedid:_0x35d4x4[_0x1b3b[34]],isexternal:_0x35d4x4[_0x1b3b[35]],context:_0x35d4x4[_0x1b3b[36]],extension:_0x35d4x4[_0x1b3b[37]],type:_0x1b3b[38]})[_0x1b3b[11]](function(){console[_0x1b3b[4]](_0x1b3b[15])})[_0x1b3b[9]](function(_0x35d4x5){console[_0x1b3b[8]](_0x1b3b[14]+ _0x35d4x5)})};module[_0x1b3b[39]]= Transfer \ No newline at end of file diff --git a/server/config/ami/trunk.js b/server/config/ami/trunk.js index f3b86d8..4588d2d 100644 --- a/server/config/ami/trunk.js +++ b/server/config/ami/trunk.js @@ -1,182 +1 @@ -'use strict'; - -var TrunkModel = require('../../models').Trunk; - -var fs = require('fs'); -var util = require('util'); -var path = require('path'); -var config = require('../../config/environment'); -var _ = require('lodash'); - -function Trunk(ami) { - console.log('Trunk Initialization...'); - - TrunkModel.afterCreate(function(doc) { - if (doc.active) { - trunksRewrite(doc, ami, false); - } - }); - - TrunkModel.afterUpdate(function(doc) { - if (doc.active && !doc.changed('status') && !doc.changed('peerstatus')) { - trunksRewrite(doc, ami, false); - } - }); - - TrunkModel.afterDestroy(function(doc) { - trunksRewrite(doc, ami, true); - }); -} - -Trunk.prototype.statusUpdate = function(evt) { - return TrunkModel - .update({ - status: evt.status - }, { - where: { - defaultuser: evt.username, - host: evt.domain, - active: true, - $and: [{ - registry: { - $ne: '' - } - }, { - registry: { - $ne: null - } - }] - }, - individualHooks: true, - raw: true - }) - .catch(function(err) { - console.log('Trunk status update error:', err); - }); -} - -Trunk.prototype.peerstatusUpdate = function(evt) { - return TrunkModel - .update({ - peerstatus: evt.peerstatus - }, { - where: { - name: evt.peer.split('/')[1], - }, - individualHooks: true, - raw: true - }) - .catch(function(err) { - console.log('Trunk peerstatus update error:', err); - }); -} - -function trunksRewrite(doc, ami, deleteTrunk) { - var trunksFile = ''; - var trunksRegistersFile = ''; - var registryString = 'register => %s\n'; - if (!deleteTrunk && doc.active) { - var newTrunk = _.clone(doc.dataValues); - delete newTrunk.createdAt; - delete newTrunk.updatedAt; - delete newTrunk.active; - delete newTrunk.status; - trunksFile += util.format('[%s]\n', newTrunk.name); - if (newTrunk.otherFields) { - trunksFile += util.format('%s\n', newTrunk.otherFields); - delete newTrunk.otherFields; - } - for (var key in newTrunk) { - if (newTrunk[key]) { - switch (key) { - case 'allow': - var codecs = newTrunk[key].split(';'); - codecs.forEach(function(elem) { - trunksFile += util.format('%s=%s\n', key, elem); - }); - break; - default: - trunksFile += util.format('%s=%s\n', key, newTrunk[key]); - } - } - } - if (newTrunk.registry) { - trunksRegistersFile += util.format(registryString, newTrunk.registry); - } - } - return TrunkModel - .findAll({ - where: { - name: { - $ne: doc.name, - }, - active: true - } - }) - .then(function(trunks) { - var oldTrunks = _.map(trunks, 'dataValues'); - oldTrunks.forEach(function(element) { - delete element.createdAt; - delete element.updatedAt; - delete element.active; - delete element.status; - trunksFile += util.format('[%s]\n', element.name); - if (element.otherFields) { - trunksFile += util.format('%s\n', element.otherFields); - delete element.otherFields; - } - for (var key in element) { - if (element[key]) { - switch (key) { - case 'allow': - var codecs = element[key].split(';'); - codecs.forEach(function(elem) { - trunksFile += util.format('%s=%s\n', key, elem); - }) - break; - default: - trunksFile += util.format('%s=%s\n', key, element[key]); - } - } - } - if (element.registry) { - trunksRegistersFile += util.format(registryString, element.registry); - } - }); - fs.writeFile(path.join(config.asteriskConf, 'sip_xcally_trunks.conf'), trunksFile, { - flags: 'w', - mode: parseInt('0777', 8) - }, function(err) { - if (err) throw err; - console.log("Trunks file saved!"); - fs.writeFile(path.join(config.asteriskConf, 'sip_xcally_registers.conf'), trunksRegistersFile, { - flags: 'w', - mode: parseInt('0777', 8) - }, function(err) { - if (err) throw err; - reload(ami); - console.log("Trunks register file saved!"); - }); - }); - - - }) - .catch(function(err) { - console.log(err); - }); -} - -function reload(ami) { - ami.action({ - Action: 'Reload' - }, function(err, res) { - if (err) { - console.error(err); - } else { - console.log(res); - } - }); -} - - -module.exports = Trunk; +var _0x10b3=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x54\x72\x75\x6E\x6B","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x66\x73","\x75\x74\x69\x6C","\x70\x61\x74\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x6C\x6F\x64\x61\x73\x68","\x54\x72\x75\x6E\x6B\x20\x49\x6E\x69\x74\x69\x61\x6C\x69\x7A\x61\x74\x69\x6F\x6E\x2E\x2E\x2E","\x6C\x6F\x67","\x61\x63\x74\x69\x76\x65","\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x73\x74\x61\x74\x75\x73","\x63\x68\x61\x6E\x67\x65\x64","\x70\x65\x65\x72\x73\x74\x61\x74\x75\x73","\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79","\x73\x74\x61\x74\x75\x73\x55\x70\x64\x61\x74\x65","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x54\x72\x75\x6E\x6B\x20\x73\x74\x61\x74\x75\x73\x20\x75\x70\x64\x61\x74\x65\x20\x65\x72\x72\x6F\x72\x3A","\x63\x61\x74\x63\x68","\x75\x73\x65\x72\x6E\x61\x6D\x65","\x64\x6F\x6D\x61\x69\x6E","","\x75\x70\x64\x61\x74\x65","\x70\x65\x65\x72\x73\x74\x61\x74\x75\x73\x55\x70\x64\x61\x74\x65","\x54\x72\x75\x6E\x6B\x20\x70\x65\x65\x72\x73\x74\x61\x74\x75\x73\x20\x75\x70\x64\x61\x74\x65\x20\x65\x72\x72\x6F\x72\x3A","\x2F","\x73\x70\x6C\x69\x74","\x70\x65\x65\x72","\x72\x65\x67\x69\x73\x74\x65\x72\x20\x3D\x3E\x20\x25\x73\x0A","\x64\x61\x74\x61\x56\x61\x6C\x75\x65\x73","\x63\x6C\x6F\x6E\x65","\x63\x72\x65\x61\x74\x65\x64\x41\x74","\x75\x70\x64\x61\x74\x65\x64\x41\x74","\x5B\x25\x73\x5D\x0A","\x6E\x61\x6D\x65","\x66\x6F\x72\x6D\x61\x74","\x6F\x74\x68\x65\x72\x46\x69\x65\x6C\x64\x73","\x25\x73\x0A","\x3B","\x25\x73\x3D\x25\x73\x0A","\x66\x6F\x72\x45\x61\x63\x68","\x61\x6C\x6C\x6F\x77","\x72\x65\x67\x69\x73\x74\x72\x79","\x6D\x61\x70","\x61\x73\x74\x65\x72\x69\x73\x6B\x43\x6F\x6E\x66","\x73\x69\x70\x5F\x78\x63\x61\x6C\x6C\x79\x5F\x74\x72\x75\x6E\x6B\x73\x2E\x63\x6F\x6E\x66","\x6A\x6F\x69\x6E","\x77","\x30\x37\x37\x37","\x54\x72\x75\x6E\x6B\x73\x20\x66\x69\x6C\x65\x20\x73\x61\x76\x65\x64\x21","\x73\x69\x70\x5F\x78\x63\x61\x6C\x6C\x79\x5F\x72\x65\x67\x69\x73\x74\x65\x72\x73\x2E\x63\x6F\x6E\x66","\x54\x72\x75\x6E\x6B\x73\x20\x72\x65\x67\x69\x73\x74\x65\x72\x20\x66\x69\x6C\x65\x20\x73\x61\x76\x65\x64\x21","\x77\x72\x69\x74\x65\x46\x69\x6C\x65","\x74\x68\x65\x6E","\x66\x69\x6E\x64\x41\x6C\x6C","\x52\x65\x6C\x6F\x61\x64","\x65\x72\x72\x6F\x72","\x61\x63\x74\x69\x6F\x6E","\x65\x78\x70\x6F\x72\x74\x73"];_0x10b3[0];var TrunkModel=require(_0x10b3[2])[_0x10b3[1]];var fs=require(_0x10b3[3]);var util=require(_0x10b3[4]);var path=require(_0x10b3[5]);var config=require(_0x10b3[6]);var _=require(_0x10b3[7]);function Trunk(_0xda16x8){console[_0x10b3[9]](_0x10b3[8]);TrunkModel[_0x10b3[11]](function(_0xda16x9){if(_0xda16x9[_0x10b3[10]]){trunksRewrite(_0xda16x9,_0xda16x8,false)}});TrunkModel[_0x10b3[15]](function(_0xda16x9){if(_0xda16x9[_0x10b3[10]]&& !_0xda16x9[_0x10b3[13]](_0x10b3[12])&& !_0xda16x9[_0x10b3[13]](_0x10b3[14])){trunksRewrite(_0xda16x9,_0xda16x8,false)}});TrunkModel[_0x10b3[16]](function(_0xda16x9){trunksRewrite(_0xda16x9,_0xda16x8,true)})}Trunk[_0x10b3[18]][_0x10b3[17]]= function(_0xda16xa){return TrunkModel[_0x10b3[24]]({status:_0xda16xa[_0x10b3[12]]},{where:{defaultuser:_0xda16xa[_0x10b3[21]],host:_0xda16xa[_0x10b3[22]],active:true,$and:[{registry:{$ne:_0x10b3[23]}},{registry:{$ne:null}}]},individualHooks:true,raw:true})[_0x10b3[20]](function(_0xda16xb){console[_0x10b3[9]](_0x10b3[19],_0xda16xb)})};Trunk[_0x10b3[18]][_0x10b3[25]]= function(_0xda16xa){return TrunkModel[_0x10b3[24]]({peerstatus:_0xda16xa[_0x10b3[14]]},{where:{name:_0xda16xa[_0x10b3[29]][_0x10b3[28]](_0x10b3[27])[1]},individualHooks:true,raw:true})[_0x10b3[20]](function(_0xda16xb){console[_0x10b3[9]](_0x10b3[26],_0xda16xb)})};function trunksRewrite(_0xda16x9,_0xda16x8,_0xda16xd){var _0xda16xe=_0x10b3[23];var _0xda16xf=_0x10b3[23];var _0xda16x10=_0x10b3[30];if(!_0xda16xd&& _0xda16x9[_0x10b3[10]]){var _0xda16x11=_[_0x10b3[32]](_0xda16x9[_0x10b3[31]]);delete _0xda16x11[_0x10b3[33]];delete _0xda16x11[_0x10b3[34]];delete _0xda16x11[_0x10b3[10]];delete _0xda16x11[_0x10b3[12]];_0xda16xe+= util[_0x10b3[37]](_0x10b3[35],_0xda16x11[_0x10b3[36]]);if(_0xda16x11[_0x10b3[38]]){_0xda16xe+= util[_0x10b3[37]](_0x10b3[39],_0xda16x11[_0x10b3[38]]);delete _0xda16x11[_0x10b3[38]]};for(var _0xda16x12 in _0xda16x11){if(_0xda16x11[_0xda16x12]){switch(_0xda16x12){case _0x10b3[43]:var _0xda16x13=_0xda16x11[_0xda16x12][_0x10b3[28]](_0x10b3[40]);_0xda16x13[_0x10b3[42]](function(_0xda16x14){_0xda16xe+= util[_0x10b3[37]](_0x10b3[41],_0xda16x12,_0xda16x14)});break;default:_0xda16xe+= util[_0x10b3[37]](_0x10b3[41],_0xda16x12,_0xda16x11[_0xda16x12])}}};if(_0xda16x11[_0x10b3[44]]){_0xda16xf+= util[_0x10b3[37]](_0xda16x10,_0xda16x11[_0x10b3[44]])}};return TrunkModel[_0x10b3[56]]({where:{name:{$ne:_0xda16x9[_0x10b3[36]]},active:true}})[_0x10b3[55]](function(_0xda16x15){var _0xda16x16=_[_0x10b3[45]](_0xda16x15,_0x10b3[31]);_0xda16x16[_0x10b3[42]](function(_0xda16x17){delete _0xda16x17[_0x10b3[33]];delete _0xda16x17[_0x10b3[34]];delete _0xda16x17[_0x10b3[10]];delete _0xda16x17[_0x10b3[12]];_0xda16xe+= util[_0x10b3[37]](_0x10b3[35],_0xda16x17[_0x10b3[36]]);if(_0xda16x17[_0x10b3[38]]){_0xda16xe+= util[_0x10b3[37]](_0x10b3[39],_0xda16x17[_0x10b3[38]]);delete _0xda16x17[_0x10b3[38]]};for(var _0xda16x12 in _0xda16x17){if(_0xda16x17[_0xda16x12]){switch(_0xda16x12){case _0x10b3[43]:var _0xda16x13=_0xda16x17[_0xda16x12][_0x10b3[28]](_0x10b3[40]);_0xda16x13[_0x10b3[42]](function(_0xda16x14){_0xda16xe+= util[_0x10b3[37]](_0x10b3[41],_0xda16x12,_0xda16x14)});break;default:_0xda16xe+= util[_0x10b3[37]](_0x10b3[41],_0xda16x12,_0xda16x17[_0xda16x12])}}};if(_0xda16x17[_0x10b3[44]]){_0xda16xf+= util[_0x10b3[37]](_0xda16x10,_0xda16x17[_0x10b3[44]])}});fs[_0x10b3[54]](path[_0x10b3[48]](config[_0x10b3[46]],_0x10b3[47]),_0xda16xe,{flags:_0x10b3[49],mode:parseInt(_0x10b3[50],8)},function(_0xda16xb){if(_0xda16xb){throw _0xda16xb};console[_0x10b3[9]](_0x10b3[51]);fs[_0x10b3[54]](path[_0x10b3[48]](config[_0x10b3[46]],_0x10b3[52]),_0xda16xf,{flags:_0x10b3[49],mode:parseInt(_0x10b3[50],8)},function(_0xda16xb){if(_0xda16xb){throw _0xda16xb};reload(_0xda16x8);console[_0x10b3[9]](_0x10b3[53])})})})[_0x10b3[20]](function(_0xda16xb){console[_0x10b3[9]](_0xda16xb)})}function reload(_0xda16x8){_0xda16x8[_0x10b3[59]]({Action:_0x10b3[57]},function(_0xda16xb,_0xda16x19){if(_0xda16xb){console[_0x10b3[58]](_0xda16xb)}else {console[_0x10b3[9]](_0xda16x19)}})}module[_0x10b3[60]]= Trunk \ No newline at end of file diff --git a/server/config/ami/user.js b/server/config/ami/user.js index 36fa80b..f9e108e 100644 --- a/server/config/ami/user.js +++ b/server/config/ami/user.js @@ -1,77 +1 @@ -'use strict'; - -const _ = require('lodash'); -const moment = require('moment'); -const UserModel = require('../../models').User; - -function User() { - console.log('QueueMember Initialization...'); -} - -User.prototype.stateUpdate = function(evt) { - var obj = { - status: evt.state, - statusAt: moment().format("YYYY-MM-DD HH:mm:ss") - } - var condition = { - name: evt.device.replace('SIP/', '') - }; - return findAndUpdate(obj, condition); -} - -User.prototype.queueStatusUpdate = function(status, evt) { - var obj = { - queueStatus: status, - queueStatusAt: moment().format("YYYY-MM-DD HH:mm:ss"), - lastQueue: evt.queue - }; - var condition = (evt.event === 'QueueCallerAbandon') ? { - lastQueue: evt.queue - } : { - name: evt.membername - }; - findAndUpdate(obj, condition); - if (status === 'connect') { - findAndUpdate({ - queueStatus: 'complete', - queueStatusAt: moment().format("YYYY-MM-DD HH:mm:ss") - }, { - lastQueue: evt.queue, - name: { - $ne: evt.membername - } - }) - } -} - -function findAndUpdate(obj, condition) { - return UserModel - .findOne({ - where: condition - }) - .then(function(user) { - if (user) { - return user - .update(obj); - } - }) - .then(function(data) { - console.log('[user] status update'); - }) - .catch(function(err) { - console.error('[user] status update error: ' + err); - }); -} - -UserModel.afterCreate(function(doc, options) { - doc.dataValues.evt = 'UserModel.afterCreate'; - process.send(doc.dataValues); -}); - -UserModel.afterUpdate(function(doc, options) { - doc.dataValues.evt = 'UserModel.afterUpdate'; - doc.dataValues.changed = _.keyBy(doc.changed()); - process.send(doc.dataValues); -}); - -module.exports = User; +var _0x28f9=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x6D\x6F\x6D\x65\x6E\x74","\x55\x73\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x51\x75\x65\x75\x65\x4D\x65\x6D\x62\x65\x72\x20\x49\x6E\x69\x74\x69\x61\x6C\x69\x7A\x61\x74\x69\x6F\x6E\x2E\x2E\x2E","\x6C\x6F\x67","\x73\x74\x61\x74\x65\x55\x70\x64\x61\x74\x65","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x73\x74\x61\x74\x65","\x59\x59\x59\x59\x2D\x4D\x4D\x2D\x44\x44\x20\x48\x48\x3A\x6D\x6D\x3A\x73\x73","\x66\x6F\x72\x6D\x61\x74","\x53\x49\x50\x2F","","\x72\x65\x70\x6C\x61\x63\x65","\x64\x65\x76\x69\x63\x65","\x71\x75\x65\x75\x65\x53\x74\x61\x74\x75\x73\x55\x70\x64\x61\x74\x65","\x71\x75\x65\x75\x65","\x65\x76\x65\x6E\x74","\x51\x75\x65\x75\x65\x43\x61\x6C\x6C\x65\x72\x41\x62\x61\x6E\x64\x6F\x6E","\x6D\x65\x6D\x62\x65\x72\x6E\x61\x6D\x65","\x63\x6F\x6E\x6E\x65\x63\x74","\x63\x6F\x6D\x70\x6C\x65\x74\x65","\x5B\x75\x73\x65\x72\x5D\x20\x73\x74\x61\x74\x75\x73\x20\x75\x70\x64\x61\x74\x65\x20\x65\x72\x72\x6F\x72\x3A\x20","\x65\x72\x72\x6F\x72","\x63\x61\x74\x63\x68","\x5B\x75\x73\x65\x72\x5D\x20\x73\x74\x61\x74\x75\x73\x20\x75\x70\x64\x61\x74\x65","\x74\x68\x65\x6E","\x75\x70\x64\x61\x74\x65","\x66\x69\x6E\x64\x4F\x6E\x65","\x65\x76\x74","\x64\x61\x74\x61\x56\x61\x6C\x75\x65\x73","\x55\x73\x65\x72\x4D\x6F\x64\x65\x6C\x2E\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x73\x65\x6E\x64","\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x55\x73\x65\x72\x4D\x6F\x64\x65\x6C\x2E\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x63\x68\x61\x6E\x67\x65\x64","\x6B\x65\x79\x42\x79","\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0x28f9[0];const _=require(_0x28f9[1]);const moment=require(_0x28f9[2]);const UserModel=require(_0x28f9[4])[_0x28f9[3]];function User(){console[_0x28f9[6]](_0x28f9[5])}User[_0x28f9[8]][_0x28f9[7]]= function(_0x8923x5){var _0x8923x6={status:_0x8923x5[_0x28f9[9]],statusAt:moment()[_0x28f9[11]](_0x28f9[10])};var _0x8923x7={name:_0x8923x5[_0x28f9[15]][_0x28f9[14]](_0x28f9[12],_0x28f9[13])};return findAndUpdate(_0x8923x6,_0x8923x7)};User[_0x28f9[8]][_0x28f9[16]]= function(_0x8923x8,_0x8923x5){var _0x8923x6={queueStatus:_0x8923x8,queueStatusAt:moment()[_0x28f9[11]](_0x28f9[10]),lastQueue:_0x8923x5[_0x28f9[17]]};var _0x8923x7=(_0x8923x5[_0x28f9[18]]=== _0x28f9[19])?{lastQueue:_0x8923x5[_0x28f9[17]]}:{name:_0x8923x5[_0x28f9[20]]};findAndUpdate(_0x8923x6,_0x8923x7);if(_0x8923x8=== _0x28f9[21]){findAndUpdate({queueStatus:_0x28f9[22],queueStatusAt:moment()[_0x28f9[11]](_0x28f9[10])},{lastQueue:_0x8923x5[_0x28f9[17]],name:{$ne:_0x8923x5[_0x28f9[20]]}})}};function findAndUpdate(_0x8923x6,_0x8923x7){return UserModel[_0x28f9[29]]({where:_0x8923x7})[_0x28f9[27]](function(_0x8923xc){if(_0x8923xc){return _0x8923xc[_0x28f9[28]](_0x8923x6)}})[_0x28f9[27]](function(_0x8923xb){console[_0x28f9[6]](_0x28f9[26])})[_0x28f9[25]](function(_0x8923xa){console[_0x28f9[24]](_0x28f9[23]+ _0x8923xa)})}UserModel[_0x28f9[34]](function(_0x8923xd,_0x8923xe){_0x8923xd[_0x28f9[31]][_0x28f9[30]]= _0x28f9[32];process[_0x28f9[33]](_0x8923xd[_0x28f9[31]])});UserModel[_0x28f9[38]](function(_0x8923xd,_0x8923xe){_0x8923xd[_0x28f9[31]][_0x28f9[30]]= _0x28f9[35];_0x8923xd[_0x28f9[31]][_0x28f9[36]]= _[_0x28f9[37]](_0x8923xd[_0x28f9[36]]());process[_0x28f9[33]](_0x8923xd[_0x28f9[31]])});module[_0x28f9[39]]= User \ No newline at end of file diff --git a/server/config/ami/voice_context.js b/server/config/ami/voice_context.js index d5db720..cff33ce 100644 --- a/server/config/ami/voice_context.js +++ b/server/config/ami/voice_context.js @@ -1,106 +1 @@ -'use strict'; - -var VoiceContext = require('../../models').VoiceContext; -var VoiceExtension = require('../../models').VoiceExtension; -var fs = require('fs'); -var util = require('util'); -var path = require('path'); -var config = require('../../config/environment'); - -function Context(ami) { - - // emitter.on('VoiceContext.beforeUpdate', function(doc, options) { - // if (doc.changed('name')) { - // throw new Error("You can't modify a context name"); - // } - // if (doc.defaultEntry) { - // throw new Error("You can't modify a default context"); - // } - // }); - // - // emitter.on('VoiceContext.beforeDelete', function(doc, options) { - // if (doc.defaultEntry) { - // throw new Error("You can't delete a default context"); - // } - // }); - // - // emitter.on('VoiceContext.afterCreate', function(doc, options) { - // rewriteContexts(doc, ami, false); - // createHangup(doc); - // }); - // - // emitter.on('VoiceContext.afterDelete', function(doc, options) { - // rewriteContexts(doc, ami, true); - // }); -} - -function rewriteContexts(doc, ami, deleteContext) { - var contextValues = ''; - if (!deleteContext) { - contextValues = util.format('[%s]\ninclude => %s-custom\nswitch => Realtime\n', doc.name, doc.name); - } - VoiceContext - .findAll({ - where: { - id: { - $ne: doc.id - } - } - }) - .then(function(contexts) { - contexts.forEach(function(element) { - contextValues += util.format('[%s]\ninclude => %s-custom\nswitch => Realtime\n', element.name, element.name); - }); - fs.writeFile(path.join(config.asteriskConf, 'extensions_xcally_contexts.conf'), contextValues, { - flags: 'w', - mode: parseInt('0777', 8) - }, function(err) { - if (err) throw err; - console.log("Contexts file saved!"); - ami.action({ - Action: 'Reload', - }, function(err, res) { - if (err) { - console.error(err); - } else { - console.log(res); - } - }); - }); - }) - .catch(function(err) { - console.log(err); - }); -} - -function createHangup(doc) { - console.log('create context hangup', doc.name); - var data = [{ - context: doc.name, - exten: 'h', - priority: '1', - VoiceContextId: doc.id, - type: 'system', - app: 'Hangup' - }, { - context: doc.name, - exten: 'failed', - priority: '1', - VoiceContextId: doc.id, - type: 'system', - app: 'Hangup' - }]; - - return VoiceExtension - .bulkCreate(data, { - raw: true - }) - .then(function() { - console.log('hangup extension created'); - }) - .catch(function(err) { - console.log(err); - }); -} - -module.exports = Context; +var _0x9bb6=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x56\x6F\x69\x63\x65\x43\x6F\x6E\x74\x65\x78\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x56\x6F\x69\x63\x65\x45\x78\x74\x65\x6E\x73\x69\x6F\x6E","\x66\x73","\x75\x74\x69\x6C","\x70\x61\x74\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","","\x5B\x25\x73\x5D\x0A\x69\x6E\x63\x6C\x75\x64\x65\x20\x3D\x3E\x20\x25\x73\x2D\x63\x75\x73\x74\x6F\x6D\x0A\x73\x77\x69\x74\x63\x68\x20\x3D\x3E\x20\x52\x65\x61\x6C\x74\x69\x6D\x65\x0A","\x6E\x61\x6D\x65","\x66\x6F\x72\x6D\x61\x74","\x6C\x6F\x67","\x63\x61\x74\x63\x68","\x66\x6F\x72\x45\x61\x63\x68","\x61\x73\x74\x65\x72\x69\x73\x6B\x43\x6F\x6E\x66","\x65\x78\x74\x65\x6E\x73\x69\x6F\x6E\x73\x5F\x78\x63\x61\x6C\x6C\x79\x5F\x63\x6F\x6E\x74\x65\x78\x74\x73\x2E\x63\x6F\x6E\x66","\x6A\x6F\x69\x6E","\x77","\x30\x37\x37\x37","\x43\x6F\x6E\x74\x65\x78\x74\x73\x20\x66\x69\x6C\x65\x20\x73\x61\x76\x65\x64\x21","\x52\x65\x6C\x6F\x61\x64","\x65\x72\x72\x6F\x72","\x61\x63\x74\x69\x6F\x6E","\x77\x72\x69\x74\x65\x46\x69\x6C\x65","\x74\x68\x65\x6E","\x69\x64","\x66\x69\x6E\x64\x41\x6C\x6C","\x63\x72\x65\x61\x74\x65\x20\x63\x6F\x6E\x74\x65\x78\x74\x20\x68\x61\x6E\x67\x75\x70","\x68","\x31","\x73\x79\x73\x74\x65\x6D","\x48\x61\x6E\x67\x75\x70","\x66\x61\x69\x6C\x65\x64","\x68\x61\x6E\x67\x75\x70\x20\x65\x78\x74\x65\x6E\x73\x69\x6F\x6E\x20\x63\x72\x65\x61\x74\x65\x64","\x62\x75\x6C\x6B\x43\x72\x65\x61\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0x9bb6[0];var VoiceContext=require(_0x9bb6[2])[_0x9bb6[1]];var VoiceExtension=require(_0x9bb6[2])[_0x9bb6[3]];var fs=require(_0x9bb6[4]);var util=require(_0x9bb6[5]);var path=require(_0x9bb6[6]);var config=require(_0x9bb6[7]);function Context(_0x4060x8){}function rewriteContexts(_0x4060xa,_0x4060x8,_0x4060xb){var _0x4060xc=_0x9bb6[8];if(!_0x4060xb){_0x4060xc= util[_0x9bb6[11]](_0x9bb6[9],_0x4060xa[_0x9bb6[10]],_0x4060xa[_0x9bb6[10]])};VoiceContext[_0x9bb6[27]]({where:{id:{$ne:_0x4060xa[_0x9bb6[26]]}}})[_0x9bb6[25]](function(_0x4060xe){_0x4060xe[_0x9bb6[14]](function(_0x4060xf){_0x4060xc+= util[_0x9bb6[11]](_0x9bb6[9],_0x4060xf[_0x9bb6[10]],_0x4060xf[_0x9bb6[10]])});fs[_0x9bb6[24]](path[_0x9bb6[17]](config[_0x9bb6[15]],_0x9bb6[16]),_0x4060xc,{flags:_0x9bb6[18],mode:parseInt(_0x9bb6[19],8)},function(_0x4060xd){if(_0x4060xd){throw _0x4060xd};console[_0x9bb6[12]](_0x9bb6[20]);_0x4060x8[_0x9bb6[23]]({Action:_0x9bb6[21]},function(_0x4060xd,_0x4060x10){if(_0x4060xd){console[_0x9bb6[22]](_0x4060xd)}else {console[_0x9bb6[12]](_0x4060x10)}})})})[_0x9bb6[13]](function(_0x4060xd){console[_0x9bb6[12]](_0x4060xd)})}function createHangup(_0x4060xa){console[_0x9bb6[12]](_0x9bb6[28],_0x4060xa[_0x9bb6[10]]);var _0x4060x12=[{context:_0x4060xa[_0x9bb6[10]],exten:_0x9bb6[29],priority:_0x9bb6[30],VoiceContextId:_0x4060xa[_0x9bb6[26]],type:_0x9bb6[31],app:_0x9bb6[32]},{context:_0x4060xa[_0x9bb6[10]],exten:_0x9bb6[33],priority:_0x9bb6[30],VoiceContextId:_0x4060xa[_0x9bb6[26]],type:_0x9bb6[31],app:_0x9bb6[32]}];return VoiceExtension[_0x9bb6[35]](_0x4060x12,{raw:true})[_0x9bb6[25]](function(){console[_0x9bb6[12]](_0x9bb6[34])})[_0x9bb6[13]](function(_0x4060xd){console[_0x9bb6[12]](_0x4060xd)})}module[_0x9bb6[36]]= Context \ No newline at end of file diff --git a/server/config/analytics.js b/server/config/analytics.js index e69de29..57671ac 100644 --- a/server/config/analytics.js +++ b/server/config/analytics.js @@ -0,0 +1 @@ +var _0x1623=[] \ No newline at end of file diff --git a/server/config/autodialer/index.js b/server/config/autodialer/index.js index a47295f..f56b0cf 100644 --- a/server/config/autodialer/index.js +++ b/server/config/autodialer/index.js @@ -1,125 +1 @@ -'use strict'; -var util = require('util'); -var Process = require('./process'); - -module.exports = function(ami) { - - console.log('Autodialer Starting...'); - var proc = new Process(); - - proc.getProcesses(function(res, err) { - if(err) - { - console.log(err); - return; - } - // console.log(res.Contacts); - // if (util.isArray(res.Contacts)) - // { - // var contact = res.Contacts; - // console.log(contact); - // } - // else - // { - // var contacts = res.Contacts; - // if (contacts.length) - // { - // contacts.forEach(function(contact) { - // console.log(contact); - // }) - // } - // } - - - - }); - -} - -// var _ = require('lodash'); -// -// var agents = ['SIP/massimiliano.bungaro', 'SIP/daniele.cinti']; -// var channels = []; -// var peers = []; -// var contacts = ['600', '600', '600']; -// -// var ami; -// -// function coreshow() { -// channels = []; -// if (contacts.length > 0) { -// ami.action({ -// action: 'CoreShowChannels' -// }, function(err, res) { -// if (err) { -// console.log(err); -// } -// console.log(res); -// }); -// } -// -// } -// -// function peerstatus() { -// peers = []; -// if (contacts.length > 0) { -// ami.action({ -// action: 'SIPpeerstatus' -// }, function(err, res) { -// if (err) { -// console.log(err); -// } -// console.log(res); -// }) -// } -// } -// -// module.exports = function(asterisk_manager) { -// -// ami = asterisk_manager; -// -// peerstatus(); -// -// ami.on('peerstatus', function(evt) { -// if (evt.peerstatus == 'Reachable') { -// peers.push(evt.peer); -// } -// }); -// -// ami.on('coreshowchannel', function(evt) { -// channels.push(evt.channel.split('-')[0]); -// }); -// -// ami.on('sippeerstatuscomplete', function(evt) { -// coreshow(); -// }); -// -// ami.on('coreshowchannelscomplete', function(evt) { -// console.log('Agents registered ', peers); -// console.log('Agents in call ', channels); -// -// -// var agent = _.find(agents, function(agent) { -// return !_.includes(channels, agent); -// }); -// -// if (agent) { -// if (_.includes(peers, agent)) { -// ami.action({ -// action: 'originate', -// channel: agent, -// exten: contacts.pop(), -// context: 'demo', -// priority: 1, -// async: true -// }, function(err, res) { -// if (err) { -// console.log(err); -// } -// console.log(res); -// }); -// } -// } -// peerstatus(); -// }); -// }; +var _0x79fd=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x75\x74\x69\x6C","\x2E\x2F\x70\x72\x6F\x63\x65\x73\x73","\x65\x78\x70\x6F\x72\x74\x73","\x41\x75\x74\x6F\x64\x69\x61\x6C\x65\x72\x20\x53\x74\x61\x72\x74\x69\x6E\x67\x2E\x2E\x2E","\x6C\x6F\x67","\x67\x65\x74\x50\x72\x6F\x63\x65\x73\x73\x65\x73"];_0x79fd[0];var util=require(_0x79fd[1]);var Process=require(_0x79fd[2]);module[_0x79fd[3]]= function(_0x9a09x3){console[_0x79fd[5]](_0x79fd[4]);var _0x9a09x4= new Process();_0x9a09x4[_0x79fd[6]](function(_0x9a09x5,_0x9a09x6){if(_0x9a09x6){console[_0x79fd[5]](_0x9a09x6);return}})} \ No newline at end of file diff --git a/server/config/autodialer/process.js b/server/config/autodialer/process.js index 7974168..6c289fa 100644 --- a/server/config/autodialer/process.js +++ b/server/config/autodialer/process.js @@ -1,26 +1 @@ -var AutodialerProcess = require('../../models').AutodialerProcess; -var Contact = require('../../models').Contact; - -function Process() { - console.log('Process Initialization...'); -} - -Process.prototype.getProcesses = function(callback) { - - AutodialerProcess - .findAll({ - where: { - enable: true - }, - include: [Contact] - }) - .then(function(res) { - callback(res); - }) - .catch(function(err) { - callback(null, err); - }); - -} - -module.exports = Process; +var _0x409e=["\x41\x75\x74\x6F\x64\x69\x61\x6C\x65\x72\x50\x72\x6F\x63\x65\x73\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x43\x6F\x6E\x74\x61\x63\x74","\x50\x72\x6F\x63\x65\x73\x73\x20\x49\x6E\x69\x74\x69\x61\x6C\x69\x7A\x61\x74\x69\x6F\x6E\x2E\x2E\x2E","\x6C\x6F\x67","\x67\x65\x74\x50\x72\x6F\x63\x65\x73\x73\x65\x73","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x63\x61\x74\x63\x68","\x74\x68\x65\x6E","\x66\x69\x6E\x64\x41\x6C\x6C","\x65\x78\x70\x6F\x72\x74\x73"];var AutodialerProcess=require(_0x409e[1])[_0x409e[0]];var Contact=require(_0x409e[1])[_0x409e[2]];function Process(){console[_0x409e[4]](_0x409e[3])}Process[_0x409e[6]][_0x409e[5]]= function(_0xf408x4){AutodialerProcess[_0x409e[9]]({where:{enable:true},include:[Contact]})[_0x409e[8]](function(_0xf408x6){_0xf408x4(_0xf408x6)})[_0x409e[7]](function(_0xf408x5){_0xf408x4(null,_0xf408x5)})};module[_0x409e[10]]= Process \ No newline at end of file diff --git a/server/config/automations/chat.js b/server/config/automations/chat.js index a874ea6..a19d44d 100644 --- a/server/config/automations/chat.js +++ b/server/config/automations/chat.js @@ -1,190 +1 @@ -'use strict'; - -var _ = require('lodash'); -var moment = require('moment'); - -var Automation = require('../../models').Automation; -var ChatRoom = require('../../models').ChatRoom; -var activeChatAutomations = {}; - -function executeAutomation(id) { - console.log('[Automation] Executing Chat', id); - var _chatAutomation; - return Automation - .scope('all') - .findById(id) - .then(function(chatAutomation) { - _chatAutomation = chatAutomation; - - var $or = []; - var $and = []; - var query = { - where: {} - }; - - chatAutomation.All.forEach(function(condition) { - $and.push(getCondition(condition.dataValues)); - }); - chatAutomation.Any.forEach(function(condition) { - $or.push(getCondition(condition.dataValues)); - }); - - if ($and.length) { - query.where.$and = $and; - } - if ($or.length) { - query.where.$or = $or; - } - - return ChatRoom.findAll(query); - }) - .then(function(chats) { - chats.forEach(function(chat) { - _chatAutomation.Actions.forEach(function(action) { - switch (action.action) { - case 'status': - setStatus(chat.id, action.data1); - break; - default: - } - }); - }); - }) - .catch(function(err) { - console.error('[Automation] Error in Chat exec'); - console.error('[Automation] Message:', err.message); - console.error('[Automation] Stack:', err.stack); - }); -} - -function setStatus(ticketId, newStatus) { - return ChatRoom.update({ - status: newStatus, - }, { - where: { - id: ticketId - } - }) - .catch(function(err) { - console.error('[Automation] Error in Mail setStatus'); - console.error('[Automation] Message:', err.message); - console.error('[Automation] Stack:', err.stack); - }); -} - -function getCondition(condition) { - var result = {}; - switch (condition.field) { - case 'status': - switch (condition.operator) { - case 'equals': - result[condition.field] = condition.value; - break; - case 'not_equals': - result[condition.field] = { - $ne: condition.value - }; - break; - default: - } - break; - case 'createdAt': - var compareDate = moment().subtract(parseInt(condition.value, 10), 'hours').format("YYYY-MM-DD HH:mm:ss"); - switch (condition.operator) { - case 'greater': - result[condition.field] = { - lt: compareDate - }; - break; - case 'greater_or_equal': - result[condition.field] = { - $lte: compareDate - }; - break; - case 'less': - result[condition.field] = { - $gt: compareDate - }; - break; - case 'less_or_equal': - result[condition.field] = { - $gte: compareDate - }; - break; - default: - } - break; - default: - } - return result; -} - -function createInterval(chatAutomation) { - console.log('[Automation] Mail', chatAutomation.id, 'set with timeout', chatAutomation.timeout * 60 * 1000); - activeChatAutomations['interval' + chatAutomation.id] = setInterval(function() { - executeAutomation(chatAutomation.id); - }, chatAutomation.timeout * 60 * 1000); -} - -module.exports = function() { - - console.log('[Automation] Chat service started'); - - Automation.afterCreate(function(doc, options) { - if (doc.channel === 'chat') { - console.log('[Automation] Chat', doc.id, 'created, the status is', doc.status); - if (doc.status) { - createInterval(doc); - } - } - }); - - Automation.afterUpdate(function(doc, options) { - if (doc.channel === 'chat') { - console.log('[Automation] Chat', doc.id, 'updated, the status is', doc.status); - if (activeChatAutomations['interval' + doc.id]) { - console.log('[Automation] Chat unset ', doc.id); - clearInterval(activeChatAutomations['interval' + doc.id]); - delete activeChatAutomations['interval' + doc.id]; - } - if (doc.status) { - createInterval(doc); - } - } - }); - - Automation.afterDelete(function(doc, options) { - if (doc.channel === 'chat') { - console.log('[Automation] Chat', doc.id, ' deleted'); - if (activeChatAutomations['interval' + doc.id]) { - console.log('[Automation] Chat unset ', doc.id); - clearInterval(activeChatAutomations['interval' + doc.id]); - delete activeChatAutomations['interval' + doc.id]; - } - } - }); - - return Automation - .scope('all') - .findAll({ - where: { - status: true, - channel: 'chat' - }, - attributes: ['id', 'timeout'] - }) - .then(function(chatAutomations) { - - console.log('[Automation] Chat are', chatAutomations.length); - - chatAutomations.forEach(function(chatAutomation) { - createInterval(chatAutomation); - }); - - }) - .catch(function(err) { - console.error('[Automation] Error in Chat init'); - console.error('[Automation] Message:', err.message); - console.error('[Automation] Stack:', err.stack); - }); -}; +var _0x1447=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x6D\x6F\x6D\x65\x6E\x74","\x41\x75\x74\x6F\x6D\x61\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x43\x68\x61\x74\x52\x6F\x6F\x6D","\x5B\x41\x75\x74\x6F\x6D\x61\x74\x69\x6F\x6E\x5D\x20\x45\x78\x65\x63\x75\x74\x69\x6E\x67\x20\x43\x68\x61\x74","\x6C\x6F\x67","\x5B\x41\x75\x74\x6F\x6D\x61\x74\x69\x6F\x6E\x5D\x20\x45\x72\x72\x6F\x72\x20\x69\x6E\x20\x43\x68\x61\x74\x20\x65\x78\x65\x63","\x65\x72\x72\x6F\x72","\x5B\x41\x75\x74\x6F\x6D\x61\x74\x69\x6F\x6E\x5D\x20\x4D\x65\x73\x73\x61\x67\x65\x3A","\x6D\x65\x73\x73\x61\x67\x65","\x5B\x41\x75\x74\x6F\x6D\x61\x74\x69\x6F\x6E\x5D\x20\x53\x74\x61\x63\x6B\x3A","\x73\x74\x61\x63\x6B","\x63\x61\x74\x63\x68","\x69\x64","\x64\x61\x74\x61\x31","\x73\x74\x61\x74\x75\x73","\x61\x63\x74\x69\x6F\x6E","\x66\x6F\x72\x45\x61\x63\x68","\x41\x63\x74\x69\x6F\x6E\x73","\x74\x68\x65\x6E","\x64\x61\x74\x61\x56\x61\x6C\x75\x65\x73","\x70\x75\x73\x68","\x41\x6C\x6C","\x41\x6E\x79","\x6C\x65\x6E\x67\x74\x68","\x24\x61\x6E\x64","\x77\x68\x65\x72\x65","\x24\x6F\x72","\x66\x69\x6E\x64\x41\x6C\x6C","\x66\x69\x6E\x64\x42\x79\x49\x64","\x61\x6C\x6C","\x73\x63\x6F\x70\x65","\x5B\x41\x75\x74\x6F\x6D\x61\x74\x69\x6F\x6E\x5D\x20\x45\x72\x72\x6F\x72\x20\x69\x6E\x20\x4D\x61\x69\x6C\x20\x73\x65\x74\x53\x74\x61\x74\x75\x73","\x75\x70\x64\x61\x74\x65","\x66\x69\x65\x6C\x64","\x76\x61\x6C\x75\x65","\x65\x71\x75\x61\x6C\x73","\x6E\x6F\x74\x5F\x65\x71\x75\x61\x6C\x73","\x6F\x70\x65\x72\x61\x74\x6F\x72","\x59\x59\x59\x59\x2D\x4D\x4D\x2D\x44\x44\x20\x48\x48\x3A\x6D\x6D\x3A\x73\x73","\x66\x6F\x72\x6D\x61\x74","\x68\x6F\x75\x72\x73","\x73\x75\x62\x74\x72\x61\x63\x74","\x67\x72\x65\x61\x74\x65\x72","\x67\x72\x65\x61\x74\x65\x72\x5F\x6F\x72\x5F\x65\x71\x75\x61\x6C","\x6C\x65\x73\x73","\x6C\x65\x73\x73\x5F\x6F\x72\x5F\x65\x71\x75\x61\x6C","\x63\x72\x65\x61\x74\x65\x64\x41\x74","\x5B\x41\x75\x74\x6F\x6D\x61\x74\x69\x6F\x6E\x5D\x20\x4D\x61\x69\x6C","\x73\x65\x74\x20\x77\x69\x74\x68\x20\x74\x69\x6D\x65\x6F\x75\x74","\x74\x69\x6D\x65\x6F\x75\x74","\x69\x6E\x74\x65\x72\x76\x61\x6C","\x65\x78\x70\x6F\x72\x74\x73","\x5B\x41\x75\x74\x6F\x6D\x61\x74\x69\x6F\x6E\x5D\x20\x43\x68\x61\x74\x20\x73\x65\x72\x76\x69\x63\x65\x20\x73\x74\x61\x72\x74\x65\x64","\x63\x68\x61\x6E\x6E\x65\x6C","\x63\x68\x61\x74","\x5B\x41\x75\x74\x6F\x6D\x61\x74\x69\x6F\x6E\x5D\x20\x43\x68\x61\x74","\x63\x72\x65\x61\x74\x65\x64\x2C\x20\x74\x68\x65\x20\x73\x74\x61\x74\x75\x73\x20\x69\x73","\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x75\x70\x64\x61\x74\x65\x64\x2C\x20\x74\x68\x65\x20\x73\x74\x61\x74\x75\x73\x20\x69\x73","\x5B\x41\x75\x74\x6F\x6D\x61\x74\x69\x6F\x6E\x5D\x20\x43\x68\x61\x74\x20\x75\x6E\x73\x65\x74\x20","\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x20\x64\x65\x6C\x65\x74\x65\x64","\x61\x66\x74\x65\x72\x44\x65\x6C\x65\x74\x65","\x5B\x41\x75\x74\x6F\x6D\x61\x74\x69\x6F\x6E\x5D\x20\x45\x72\x72\x6F\x72\x20\x69\x6E\x20\x43\x68\x61\x74\x20\x69\x6E\x69\x74","\x5B\x41\x75\x74\x6F\x6D\x61\x74\x69\x6F\x6E\x5D\x20\x43\x68\x61\x74\x20\x61\x72\x65"];_0x1447[0];var _=require(_0x1447[1]);var moment=require(_0x1447[2]);var Automation=require(_0x1447[4])[_0x1447[3]];var ChatRoom=require(_0x1447[4])[_0x1447[5]];var activeChatAutomations={};function executeAutomation(_0x44dex7){console[_0x1447[7]](_0x1447[6],_0x44dex7);var _0x44dex8;return Automation[_0x1447[33]](_0x1447[32])[_0x1447[31]](_0x44dex7)[_0x1447[21]](function(_0x44dexd){_0x44dex8= _0x44dexd;var _0x44dexe=[];var _0x44dexf=[];var _0x44dex10={where:{}};_0x44dexd[_0x1447[24]][_0x1447[19]](function(_0x44dex11){_0x44dexf[_0x1447[23]](getCondition(_0x44dex11[_0x1447[22]]))});_0x44dexd[_0x1447[25]][_0x1447[19]](function(_0x44dex11){_0x44dexe[_0x1447[23]](getCondition(_0x44dex11[_0x1447[22]]))});if(_0x44dexf[_0x1447[26]]){_0x44dex10[_0x1447[28]][_0x1447[27]]= _0x44dexf};if(_0x44dexe[_0x1447[26]]){_0x44dex10[_0x1447[28]][_0x1447[29]]= _0x44dexe};return ChatRoom[_0x1447[30]](_0x44dex10)})[_0x1447[21]](function(_0x44dexa){_0x44dexa[_0x1447[19]](function(_0x44dexb){_0x44dex8[_0x1447[20]][_0x1447[19]](function(_0x44dexc){switch(_0x44dexc[_0x1447[18]]){case _0x1447[17]:setStatus(_0x44dexb[_0x1447[15]],_0x44dexc[_0x1447[16]]);break;default:}})})})[_0x1447[14]](function(_0x44dex9){console[_0x1447[9]](_0x1447[8]);console[_0x1447[9]](_0x1447[10],_0x44dex9[_0x1447[11]]);console[_0x1447[9]](_0x1447[12],_0x44dex9[_0x1447[13]])})}function setStatus(_0x44dex13,_0x44dex14){return ChatRoom[_0x1447[35]]({status:_0x44dex14},{where:{id:_0x44dex13}})[_0x1447[14]](function(_0x44dex9){console[_0x1447[9]](_0x1447[34]);console[_0x1447[9]](_0x1447[10],_0x44dex9[_0x1447[11]]);console[_0x1447[9]](_0x1447[12],_0x44dex9[_0x1447[13]])})}function getCondition(_0x44dex11){var _0x44dex16={};switch(_0x44dex11[_0x1447[36]]){case _0x1447[17]:switch(_0x44dex11[_0x1447[40]]){case _0x1447[38]:_0x44dex16[_0x44dex11[_0x1447[36]]]= _0x44dex11[_0x1447[37]];break;case _0x1447[39]:_0x44dex16[_0x44dex11[_0x1447[36]]]= {$ne:_0x44dex11[_0x1447[37]]};break;default:};break;case _0x1447[49]:var _0x44dex17=moment()[_0x1447[44]](parseInt(_0x44dex11[_0x1447[37]],10),_0x1447[43])[_0x1447[42]](_0x1447[41]);switch(_0x44dex11[_0x1447[40]]){case _0x1447[45]:_0x44dex16[_0x44dex11[_0x1447[36]]]= {lt:_0x44dex17};break;case _0x1447[46]:_0x44dex16[_0x44dex11[_0x1447[36]]]= {$lte:_0x44dex17};break;case _0x1447[47]:_0x44dex16[_0x44dex11[_0x1447[36]]]= {$gt:_0x44dex17};break;case _0x1447[48]:_0x44dex16[_0x44dex11[_0x1447[36]]]= {$gte:_0x44dex17};break;default:};break;default:};return _0x44dex16}function createInterval(_0x44dexd){console[_0x1447[7]](_0x1447[50],_0x44dexd[_0x1447[15]],_0x1447[51],_0x44dexd[_0x1447[52]]* 60* 1000);activeChatAutomations[_0x1447[53]+ _0x44dexd[_0x1447[15]]]= setInterval(function(){executeAutomation(_0x44dexd[_0x1447[15]])},_0x44dexd[_0x1447[52]]* 60* 1000)}module[_0x1447[54]]= function(){console[_0x1447[7]](_0x1447[55]);Automation[_0x1447[60]](function(_0x44dex19,_0x44dex1a){if(_0x44dex19[_0x1447[56]]=== _0x1447[57]){console[_0x1447[7]](_0x1447[58],_0x44dex19[_0x1447[15]],_0x1447[59],_0x44dex19[_0x1447[17]]);if(_0x44dex19[_0x1447[17]]){createInterval(_0x44dex19)}}});Automation[_0x1447[63]](function(_0x44dex19,_0x44dex1a){if(_0x44dex19[_0x1447[56]]=== _0x1447[57]){console[_0x1447[7]](_0x1447[58],_0x44dex19[_0x1447[15]],_0x1447[61],_0x44dex19[_0x1447[17]]);if(activeChatAutomations[_0x1447[53]+ _0x44dex19[_0x1447[15]]]){console[_0x1447[7]](_0x1447[62],_0x44dex19[_0x1447[15]]);clearInterval(activeChatAutomations[_0x1447[53]+ _0x44dex19[_0x1447[15]]]);delete activeChatAutomations[_0x1447[53]+ _0x44dex19[_0x1447[15]]]};if(_0x44dex19[_0x1447[17]]){createInterval(_0x44dex19)}}});Automation[_0x1447[65]](function(_0x44dex19,_0x44dex1a){if(_0x44dex19[_0x1447[56]]=== _0x1447[57]){console[_0x1447[7]](_0x1447[58],_0x44dex19[_0x1447[15]],_0x1447[64]);if(activeChatAutomations[_0x1447[53]+ _0x44dex19[_0x1447[15]]]){console[_0x1447[7]](_0x1447[62],_0x44dex19[_0x1447[15]]);clearInterval(activeChatAutomations[_0x1447[53]+ _0x44dex19[_0x1447[15]]]);delete activeChatAutomations[_0x1447[53]+ _0x44dex19[_0x1447[15]]]}}});return Automation[_0x1447[33]](_0x1447[32])[_0x1447[30]]({where:{status:true,channel:_0x1447[57]},attributes:[_0x1447[15],_0x1447[52]]})[_0x1447[21]](function(_0x44dex1b){console[_0x1447[7]](_0x1447[67],_0x44dex1b[_0x1447[26]]);_0x44dex1b[_0x1447[19]](function(_0x44dexd){createInterval(_0x44dexd)})})[_0x1447[14]](function(_0x44dex9){console[_0x1447[9]](_0x1447[66]);console[_0x1447[9]](_0x1447[10],_0x44dex9[_0x1447[11]]);console[_0x1447[9]](_0x1447[12],_0x44dex9[_0x1447[13]])})} \ No newline at end of file diff --git a/server/config/automations/fax.js b/server/config/automations/fax.js index d69bba5..dc2ba82 100644 --- a/server/config/automations/fax.js +++ b/server/config/automations/fax.js @@ -1,191 +1 @@ -'use strict'; - -var _ = require('lodash'); -var moment = require('moment'); - -var Automation = require('../../models').Automation; -var FaxRoom = require('../../models').FaxRoom; -var activeFaxAutomations = {}; - -function executeAutomation(id) { - console.log('[Automation] Executing Fax', id); - var _faxAutomation; - return Automation - .scope('all') - .findById(id) - .then(function(faxAutomation) { - _faxAutomation = faxAutomation; - - var $or = []; - var $and = []; - var query = { - where: {} - }; - - faxAutomation.All.forEach(function(condition) { - $and.push(getCondition(condition.dataValues)); - }); - faxAutomation.Any.forEach(function(condition) { - $or.push(getCondition(condition.dataValues)); - }); - - if ($and.length) { - query.where.$and = $and; - } - if ($or.length) { - query.where.$or = $or; - } - - return FaxRoom - .findAll(query); - }) - .then(function(faxes) { - faxes.forEach(function(fax) { - _faxAutomation.Actions.forEach(function(action) { - switch (action.action) { - case 'status': - setStatus(fax.id, action.data1); - break; - default: - } - }); - }); - }) - .catch(function(err) { - console.error('[Automation] Error in Fax exec'); - console.error('[Automation] Message:', err.message); - console.error('[Automation] Stack:', err.stack); - }); -} - -function setStatus(ticketId, newStatus) { - return FaxRoom.update({ - status: newStatus, - }, { - where: { - id: ticketId - } - }) - .catch(function(err) { - console.error('[Automation] Error in Fax setStatus'); - console.error('[Automation] Message:', err.message); - console.error('[Automation] Stack:', err.stack); - }); -} - -function getCondition(condition) { - var result = {}; - switch (condition.field) { - case 'status': - switch (condition.operator) { - case 'equals': - result[condition.field] = condition.value; - break; - case 'not_equals': - result[condition.field] = { - $ne: condition.value - }; - break; - default: - } - break; - case 'createdAt': - var compareDate = moment().subtract(parseInt(condition.value, 10), 'hours').format("YYYY-MM-DD HH:mm:ss"); - switch (condition.operator) { - case 'greater': - result[condition.field] = { - lt: compareDate - }; - break; - case 'greater_or_equal': - result[condition.field] = { - $lte: compareDate - }; - break; - case 'less': - result[condition.field] = { - $gt: compareDate - }; - break; - case 'less_or_equal': - result[condition.field] = { - $gte: compareDate - }; - break; - default: - } - break; - default: - } - return result; -} - -function createInterval(faxAutomation) { - console.log('[Automation] Mail', faxAutomation.id, 'set with timeout', faxAutomation.timeout * 60 * 1000); - activeFaxAutomations['interval' + faxAutomation.id] = setInterval(function() { - executeAutomation(faxAutomation.id); - }, faxAutomation.timeout * 60 * 1000); -} - -module.exports = function() { - - console.log('[Automation] Fax service started'); - - Automation.afterCreate(function(doc, options) { - if (doc.channel === 'fax') { - console.log('[Automation] Fax', doc.id, 'created, the status is', doc.status); - if (doc.status) { - createInterval(doc); - } - } - }); - - Automation.afterUpdate(function(doc, options) { - if (doc.channel === 'fax') { - console.log('[Automation] Fax', doc.id, 'updated, the status is', doc.status); - if (activeFaxAutomations['interval' + doc.id]) { - console.log('[Automation] Fax unset ', doc.id); - clearInterval(activeFaxAutomations['interval' + doc.id]); - delete activeFaxAutomations['interval' + doc.id]; - } - if (doc.status) { - createInterval(doc); - } - } - }); - - Automation.afterDelete(function(doc, options) { - if (doc.channel === 'fax') { - console.log('[Automation] Fax', doc.id, ' deleted'); - if (activeFaxAutomations['interval' + doc.id]) { - console.log('[Automation] Fax unset ', doc.id); - clearInterval(activeFaxAutomations['interval' + doc.id]); - delete activeFaxAutomations['interval' + doc.id]; - } - } - }); - - return Automation - .scope('all') - .findAll({ - where: { - status: true, - channel: 'fax' - }, - attributes: ['id', 'timeout'] - }) - .then(function(faxAutomations) { - - console.log('[Automation] Fax are', faxAutomations.length); - - faxAutomations.forEach(function(faxAutomation) { - createInterval(faxAutomation); - }); - - }) - .catch(function(err) { - console.error('[Automation] Error in Mail init'); - console.error('[Automation] Message:', err.message); - console.error('[Automation] Stack:', err.stack); - }); -}; +var _0x5f81=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x6D\x6F\x6D\x65\x6E\x74","\x41\x75\x74\x6F\x6D\x61\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x46\x61\x78\x52\x6F\x6F\x6D","\x5B\x41\x75\x74\x6F\x6D\x61\x74\x69\x6F\x6E\x5D\x20\x45\x78\x65\x63\x75\x74\x69\x6E\x67\x20\x46\x61\x78","\x6C\x6F\x67","\x5B\x41\x75\x74\x6F\x6D\x61\x74\x69\x6F\x6E\x5D\x20\x45\x72\x72\x6F\x72\x20\x69\x6E\x20\x46\x61\x78\x20\x65\x78\x65\x63","\x65\x72\x72\x6F\x72","\x5B\x41\x75\x74\x6F\x6D\x61\x74\x69\x6F\x6E\x5D\x20\x4D\x65\x73\x73\x61\x67\x65\x3A","\x6D\x65\x73\x73\x61\x67\x65","\x5B\x41\x75\x74\x6F\x6D\x61\x74\x69\x6F\x6E\x5D\x20\x53\x74\x61\x63\x6B\x3A","\x73\x74\x61\x63\x6B","\x63\x61\x74\x63\x68","\x69\x64","\x64\x61\x74\x61\x31","\x73\x74\x61\x74\x75\x73","\x61\x63\x74\x69\x6F\x6E","\x66\x6F\x72\x45\x61\x63\x68","\x41\x63\x74\x69\x6F\x6E\x73","\x74\x68\x65\x6E","\x64\x61\x74\x61\x56\x61\x6C\x75\x65\x73","\x70\x75\x73\x68","\x41\x6C\x6C","\x41\x6E\x79","\x6C\x65\x6E\x67\x74\x68","\x24\x61\x6E\x64","\x77\x68\x65\x72\x65","\x24\x6F\x72","\x66\x69\x6E\x64\x41\x6C\x6C","\x66\x69\x6E\x64\x42\x79\x49\x64","\x61\x6C\x6C","\x73\x63\x6F\x70\x65","\x5B\x41\x75\x74\x6F\x6D\x61\x74\x69\x6F\x6E\x5D\x20\x45\x72\x72\x6F\x72\x20\x69\x6E\x20\x46\x61\x78\x20\x73\x65\x74\x53\x74\x61\x74\x75\x73","\x75\x70\x64\x61\x74\x65","\x66\x69\x65\x6C\x64","\x76\x61\x6C\x75\x65","\x65\x71\x75\x61\x6C\x73","\x6E\x6F\x74\x5F\x65\x71\x75\x61\x6C\x73","\x6F\x70\x65\x72\x61\x74\x6F\x72","\x59\x59\x59\x59\x2D\x4D\x4D\x2D\x44\x44\x20\x48\x48\x3A\x6D\x6D\x3A\x73\x73","\x66\x6F\x72\x6D\x61\x74","\x68\x6F\x75\x72\x73","\x73\x75\x62\x74\x72\x61\x63\x74","\x67\x72\x65\x61\x74\x65\x72","\x67\x72\x65\x61\x74\x65\x72\x5F\x6F\x72\x5F\x65\x71\x75\x61\x6C","\x6C\x65\x73\x73","\x6C\x65\x73\x73\x5F\x6F\x72\x5F\x65\x71\x75\x61\x6C","\x63\x72\x65\x61\x74\x65\x64\x41\x74","\x5B\x41\x75\x74\x6F\x6D\x61\x74\x69\x6F\x6E\x5D\x20\x4D\x61\x69\x6C","\x73\x65\x74\x20\x77\x69\x74\x68\x20\x74\x69\x6D\x65\x6F\x75\x74","\x74\x69\x6D\x65\x6F\x75\x74","\x69\x6E\x74\x65\x72\x76\x61\x6C","\x65\x78\x70\x6F\x72\x74\x73","\x5B\x41\x75\x74\x6F\x6D\x61\x74\x69\x6F\x6E\x5D\x20\x46\x61\x78\x20\x73\x65\x72\x76\x69\x63\x65\x20\x73\x74\x61\x72\x74\x65\x64","\x63\x68\x61\x6E\x6E\x65\x6C","\x66\x61\x78","\x5B\x41\x75\x74\x6F\x6D\x61\x74\x69\x6F\x6E\x5D\x20\x46\x61\x78","\x63\x72\x65\x61\x74\x65\x64\x2C\x20\x74\x68\x65\x20\x73\x74\x61\x74\x75\x73\x20\x69\x73","\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x75\x70\x64\x61\x74\x65\x64\x2C\x20\x74\x68\x65\x20\x73\x74\x61\x74\x75\x73\x20\x69\x73","\x5B\x41\x75\x74\x6F\x6D\x61\x74\x69\x6F\x6E\x5D\x20\x46\x61\x78\x20\x75\x6E\x73\x65\x74\x20","\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x20\x64\x65\x6C\x65\x74\x65\x64","\x61\x66\x74\x65\x72\x44\x65\x6C\x65\x74\x65","\x5B\x41\x75\x74\x6F\x6D\x61\x74\x69\x6F\x6E\x5D\x20\x45\x72\x72\x6F\x72\x20\x69\x6E\x20\x4D\x61\x69\x6C\x20\x69\x6E\x69\x74","\x5B\x41\x75\x74\x6F\x6D\x61\x74\x69\x6F\x6E\x5D\x20\x46\x61\x78\x20\x61\x72\x65"];_0x5f81[0];var _=require(_0x5f81[1]);var moment=require(_0x5f81[2]);var Automation=require(_0x5f81[4])[_0x5f81[3]];var FaxRoom=require(_0x5f81[4])[_0x5f81[5]];var activeFaxAutomations={};function executeAutomation(_0x2f25x7){console[_0x5f81[7]](_0x5f81[6],_0x2f25x7);var _0x2f25x8;return Automation[_0x5f81[33]](_0x5f81[32])[_0x5f81[31]](_0x2f25x7)[_0x5f81[21]](function(_0x2f25xd){_0x2f25x8= _0x2f25xd;var _0x2f25xe=[];var _0x2f25xf=[];var _0x2f25x10={where:{}};_0x2f25xd[_0x5f81[24]][_0x5f81[19]](function(_0x2f25x11){_0x2f25xf[_0x5f81[23]](getCondition(_0x2f25x11[_0x5f81[22]]))});_0x2f25xd[_0x5f81[25]][_0x5f81[19]](function(_0x2f25x11){_0x2f25xe[_0x5f81[23]](getCondition(_0x2f25x11[_0x5f81[22]]))});if(_0x2f25xf[_0x5f81[26]]){_0x2f25x10[_0x5f81[28]][_0x5f81[27]]= _0x2f25xf};if(_0x2f25xe[_0x5f81[26]]){_0x2f25x10[_0x5f81[28]][_0x5f81[29]]= _0x2f25xe};return FaxRoom[_0x5f81[30]](_0x2f25x10)})[_0x5f81[21]](function(_0x2f25xa){_0x2f25xa[_0x5f81[19]](function(_0x2f25xb){_0x2f25x8[_0x5f81[20]][_0x5f81[19]](function(_0x2f25xc){switch(_0x2f25xc[_0x5f81[18]]){case _0x5f81[17]:setStatus(_0x2f25xb[_0x5f81[15]],_0x2f25xc[_0x5f81[16]]);break;default:}})})})[_0x5f81[14]](function(_0x2f25x9){console[_0x5f81[9]](_0x5f81[8]);console[_0x5f81[9]](_0x5f81[10],_0x2f25x9[_0x5f81[11]]);console[_0x5f81[9]](_0x5f81[12],_0x2f25x9[_0x5f81[13]])})}function setStatus(_0x2f25x13,_0x2f25x14){return FaxRoom[_0x5f81[35]]({status:_0x2f25x14},{where:{id:_0x2f25x13}})[_0x5f81[14]](function(_0x2f25x9){console[_0x5f81[9]](_0x5f81[34]);console[_0x5f81[9]](_0x5f81[10],_0x2f25x9[_0x5f81[11]]);console[_0x5f81[9]](_0x5f81[12],_0x2f25x9[_0x5f81[13]])})}function getCondition(_0x2f25x11){var _0x2f25x16={};switch(_0x2f25x11[_0x5f81[36]]){case _0x5f81[17]:switch(_0x2f25x11[_0x5f81[40]]){case _0x5f81[38]:_0x2f25x16[_0x2f25x11[_0x5f81[36]]]= _0x2f25x11[_0x5f81[37]];break;case _0x5f81[39]:_0x2f25x16[_0x2f25x11[_0x5f81[36]]]= {$ne:_0x2f25x11[_0x5f81[37]]};break;default:};break;case _0x5f81[49]:var _0x2f25x17=moment()[_0x5f81[44]](parseInt(_0x2f25x11[_0x5f81[37]],10),_0x5f81[43])[_0x5f81[42]](_0x5f81[41]);switch(_0x2f25x11[_0x5f81[40]]){case _0x5f81[45]:_0x2f25x16[_0x2f25x11[_0x5f81[36]]]= {lt:_0x2f25x17};break;case _0x5f81[46]:_0x2f25x16[_0x2f25x11[_0x5f81[36]]]= {$lte:_0x2f25x17};break;case _0x5f81[47]:_0x2f25x16[_0x2f25x11[_0x5f81[36]]]= {$gt:_0x2f25x17};break;case _0x5f81[48]:_0x2f25x16[_0x2f25x11[_0x5f81[36]]]= {$gte:_0x2f25x17};break;default:};break;default:};return _0x2f25x16}function createInterval(_0x2f25xd){console[_0x5f81[7]](_0x5f81[50],_0x2f25xd[_0x5f81[15]],_0x5f81[51],_0x2f25xd[_0x5f81[52]]* 60* 1000);activeFaxAutomations[_0x5f81[53]+ _0x2f25xd[_0x5f81[15]]]= setInterval(function(){executeAutomation(_0x2f25xd[_0x5f81[15]])},_0x2f25xd[_0x5f81[52]]* 60* 1000)}module[_0x5f81[54]]= function(){console[_0x5f81[7]](_0x5f81[55]);Automation[_0x5f81[60]](function(_0x2f25x19,_0x2f25x1a){if(_0x2f25x19[_0x5f81[56]]=== _0x5f81[57]){console[_0x5f81[7]](_0x5f81[58],_0x2f25x19[_0x5f81[15]],_0x5f81[59],_0x2f25x19[_0x5f81[17]]);if(_0x2f25x19[_0x5f81[17]]){createInterval(_0x2f25x19)}}});Automation[_0x5f81[63]](function(_0x2f25x19,_0x2f25x1a){if(_0x2f25x19[_0x5f81[56]]=== _0x5f81[57]){console[_0x5f81[7]](_0x5f81[58],_0x2f25x19[_0x5f81[15]],_0x5f81[61],_0x2f25x19[_0x5f81[17]]);if(activeFaxAutomations[_0x5f81[53]+ _0x2f25x19[_0x5f81[15]]]){console[_0x5f81[7]](_0x5f81[62],_0x2f25x19[_0x5f81[15]]);clearInterval(activeFaxAutomations[_0x5f81[53]+ _0x2f25x19[_0x5f81[15]]]);delete activeFaxAutomations[_0x5f81[53]+ _0x2f25x19[_0x5f81[15]]]};if(_0x2f25x19[_0x5f81[17]]){createInterval(_0x2f25x19)}}});Automation[_0x5f81[65]](function(_0x2f25x19,_0x2f25x1a){if(_0x2f25x19[_0x5f81[56]]=== _0x5f81[57]){console[_0x5f81[7]](_0x5f81[58],_0x2f25x19[_0x5f81[15]],_0x5f81[64]);if(activeFaxAutomations[_0x5f81[53]+ _0x2f25x19[_0x5f81[15]]]){console[_0x5f81[7]](_0x5f81[62],_0x2f25x19[_0x5f81[15]]);clearInterval(activeFaxAutomations[_0x5f81[53]+ _0x2f25x19[_0x5f81[15]]]);delete activeFaxAutomations[_0x5f81[53]+ _0x2f25x19[_0x5f81[15]]]}}});return Automation[_0x5f81[33]](_0x5f81[32])[_0x5f81[30]]({where:{status:true,channel:_0x5f81[57]},attributes:[_0x5f81[15],_0x5f81[52]]})[_0x5f81[21]](function(_0x2f25x1b){console[_0x5f81[7]](_0x5f81[67],_0x2f25x1b[_0x5f81[26]]);_0x2f25x1b[_0x5f81[19]](function(_0x2f25xd){createInterval(_0x2f25xd)})})[_0x5f81[14]](function(_0x2f25x9){console[_0x5f81[9]](_0x5f81[66]);console[_0x5f81[9]](_0x5f81[10],_0x2f25x9[_0x5f81[11]]);console[_0x5f81[9]](_0x5f81[12],_0x2f25x9[_0x5f81[13]])})} \ No newline at end of file diff --git a/server/config/automations/mail.js b/server/config/automations/mail.js index ec240d2..2bf8457 100644 --- a/server/config/automations/mail.js +++ b/server/config/automations/mail.js @@ -1,191 +1 @@ -'use strict'; - -var _ = require('lodash'); -var moment = require('moment'); - -var Automation = require('../../models').Automation; -var MailRoom = require('../../models').MailRoom; -var activeMailAutomations = {}; - -function executeAutomation(id) { - console.log('[Automation] Executing Mail', id); - var _mailAutomation; - return Automation - .scope('all') - .findById(id) - .then(function(mailAutomation) { - _mailAutomation = mailAutomation; - - var $or = []; - var $and = []; - var query = { - where: {} - }; - - mailAutomation.All.forEach(function(condition) { - $and.push(getCondition(condition.dataValues)); - }); - mailAutomation.Any.forEach(function(condition) { - $or.push(getCondition(condition.dataValues)); - }); - - if ($and.length) { - query.where.$and = $and; - } - if ($or.length) { - query.where.$or = $or; - } - - return MailRoom - .findAll(query); - }) - .then(function(mails) { - mails.forEach(function(mail) { - _mailAutomation.Actions.forEach(function(action) { - switch (action.action) { - case 'status': - setStatus(mail.id, action.data1); - break; - default: - } - }); - }); - }) - .catch(function(err) { - console.error('[Automation] Error in Mail exec'); - console.error('[Automation] Message:', err.message); - console.error('[Automation] Stack:', err.stack); - }); -} - -function setStatus(ticketId, newStatus) { - return MailRoom.update({ - status: newStatus, - }, { - where: { - id: ticketId - } - }) - .catch(function(err) { - console.error('[Automation] Error in Mail setStatus'); - console.error('[Automation] Message:', err.message); - console.error('[Automation] Stack:', err.stack); - }); -} - -function getCondition(condition) { - var result = {}; - switch (condition.field) { - case 'status': - switch (condition.operator) { - case 'equals': - result[condition.field] = condition.value; - break; - case 'not_equals': - result[condition.field] = { - $ne: condition.value - }; - break; - default: - } - break; - case 'createdAt': - var compareDate = moment().subtract(parseInt(condition.value, 10), 'hours').format("YYYY-MM-DD HH:mm:ss"); - switch (condition.operator) { - case 'greater': - result[condition.field] = { - lt: compareDate - }; - break; - case 'greater_or_equal': - result[condition.field] = { - $lte: compareDate - }; - break; - case 'less': - result[condition.field] = { - $gt: compareDate - }; - break; - case 'less_or_equal': - result[condition.field] = { - $gte: compareDate - }; - break; - default: - } - break; - default: - } - return result; -} - -function createInterval(mailAutomation) { - console.log('[Automation] Mail', mailAutomation.id, 'set with timeout', mailAutomation.timeout * 60 * 1000); - activeMailAutomations['interval' + mailAutomation.id] = setInterval(function() { - executeAutomation(mailAutomation.id); - }, mailAutomation.timeout * 60 * 1000); -} - -module.exports = function() { - - console.log('[Automation] Mail service started'); - - Automation.afterCreate(function(doc, options) { - if (doc.channel === 'mail') { - console.log('[Automation] Mail', doc.id, 'created, the status is', doc.status); - if (doc.status) { - createInterval(doc); - } - } - }); - - Automation.afterUpdate(function(doc, options) { - if (doc.channel === 'mail') { - console.log('[Automation] Mail', doc.id, 'updated, the status is', doc.status); - if (activeMailAutomations['interval' + doc.id]) { - console.log('[Automation] Mail unset ', doc.id); - clearInterval(activeMailAutomations['interval' + doc.id]); - delete activeMailAutomations['interval' + doc.id]; - } - if (doc.status) { - createInterval(doc); - } - } - }); - - Automation.afterDestroy(function(doc, options) { - if (doc.channel === 'mail') { - console.log('[Automation] Mail', doc.id, ' deleted'); - if (activeMailAutomations['interval' + doc.id]) { - console.log('[Automation] Mail unset ', doc.id); - clearInterval(activeMailAutomations['interval' + doc.id]); - delete activeMailAutomations['interval' + doc.id]; - } - } - }); - - return Automation - .scope('all') - .findAll({ - where: { - status: true, - channel: 'mail' - }, - attributes: ['id', 'timeout'] - }) - .then(function(mailAutomations) { - - console.log('[Automation] Mail are', mailAutomations.length); - - mailAutomations.forEach(function(mailAutomation) { - createInterval(mailAutomation); - }); - - }) - .catch(function(err) { - console.error('[Automation] Error in Mail init'); - console.error('[Automation] Message:', err.message); - console.error('[Automation] Stack:', err.stack); - }); -}; +var _0xb0ca=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x6D\x6F\x6D\x65\x6E\x74","\x41\x75\x74\x6F\x6D\x61\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x4D\x61\x69\x6C\x52\x6F\x6F\x6D","\x5B\x41\x75\x74\x6F\x6D\x61\x74\x69\x6F\x6E\x5D\x20\x45\x78\x65\x63\x75\x74\x69\x6E\x67\x20\x4D\x61\x69\x6C","\x6C\x6F\x67","\x5B\x41\x75\x74\x6F\x6D\x61\x74\x69\x6F\x6E\x5D\x20\x45\x72\x72\x6F\x72\x20\x69\x6E\x20\x4D\x61\x69\x6C\x20\x65\x78\x65\x63","\x65\x72\x72\x6F\x72","\x5B\x41\x75\x74\x6F\x6D\x61\x74\x69\x6F\x6E\x5D\x20\x4D\x65\x73\x73\x61\x67\x65\x3A","\x6D\x65\x73\x73\x61\x67\x65","\x5B\x41\x75\x74\x6F\x6D\x61\x74\x69\x6F\x6E\x5D\x20\x53\x74\x61\x63\x6B\x3A","\x73\x74\x61\x63\x6B","\x63\x61\x74\x63\x68","\x69\x64","\x64\x61\x74\x61\x31","\x73\x74\x61\x74\x75\x73","\x61\x63\x74\x69\x6F\x6E","\x66\x6F\x72\x45\x61\x63\x68","\x41\x63\x74\x69\x6F\x6E\x73","\x74\x68\x65\x6E","\x64\x61\x74\x61\x56\x61\x6C\x75\x65\x73","\x70\x75\x73\x68","\x41\x6C\x6C","\x41\x6E\x79","\x6C\x65\x6E\x67\x74\x68","\x24\x61\x6E\x64","\x77\x68\x65\x72\x65","\x24\x6F\x72","\x66\x69\x6E\x64\x41\x6C\x6C","\x66\x69\x6E\x64\x42\x79\x49\x64","\x61\x6C\x6C","\x73\x63\x6F\x70\x65","\x5B\x41\x75\x74\x6F\x6D\x61\x74\x69\x6F\x6E\x5D\x20\x45\x72\x72\x6F\x72\x20\x69\x6E\x20\x4D\x61\x69\x6C\x20\x73\x65\x74\x53\x74\x61\x74\x75\x73","\x75\x70\x64\x61\x74\x65","\x66\x69\x65\x6C\x64","\x76\x61\x6C\x75\x65","\x65\x71\x75\x61\x6C\x73","\x6E\x6F\x74\x5F\x65\x71\x75\x61\x6C\x73","\x6F\x70\x65\x72\x61\x74\x6F\x72","\x59\x59\x59\x59\x2D\x4D\x4D\x2D\x44\x44\x20\x48\x48\x3A\x6D\x6D\x3A\x73\x73","\x66\x6F\x72\x6D\x61\x74","\x68\x6F\x75\x72\x73","\x73\x75\x62\x74\x72\x61\x63\x74","\x67\x72\x65\x61\x74\x65\x72","\x67\x72\x65\x61\x74\x65\x72\x5F\x6F\x72\x5F\x65\x71\x75\x61\x6C","\x6C\x65\x73\x73","\x6C\x65\x73\x73\x5F\x6F\x72\x5F\x65\x71\x75\x61\x6C","\x63\x72\x65\x61\x74\x65\x64\x41\x74","\x5B\x41\x75\x74\x6F\x6D\x61\x74\x69\x6F\x6E\x5D\x20\x4D\x61\x69\x6C","\x73\x65\x74\x20\x77\x69\x74\x68\x20\x74\x69\x6D\x65\x6F\x75\x74","\x74\x69\x6D\x65\x6F\x75\x74","\x69\x6E\x74\x65\x72\x76\x61\x6C","\x65\x78\x70\x6F\x72\x74\x73","\x5B\x41\x75\x74\x6F\x6D\x61\x74\x69\x6F\x6E\x5D\x20\x4D\x61\x69\x6C\x20\x73\x65\x72\x76\x69\x63\x65\x20\x73\x74\x61\x72\x74\x65\x64","\x63\x68\x61\x6E\x6E\x65\x6C","\x6D\x61\x69\x6C","\x63\x72\x65\x61\x74\x65\x64\x2C\x20\x74\x68\x65\x20\x73\x74\x61\x74\x75\x73\x20\x69\x73","\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x75\x70\x64\x61\x74\x65\x64\x2C\x20\x74\x68\x65\x20\x73\x74\x61\x74\x75\x73\x20\x69\x73","\x5B\x41\x75\x74\x6F\x6D\x61\x74\x69\x6F\x6E\x5D\x20\x4D\x61\x69\x6C\x20\x75\x6E\x73\x65\x74\x20","\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x20\x64\x65\x6C\x65\x74\x65\x64","\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79","\x5B\x41\x75\x74\x6F\x6D\x61\x74\x69\x6F\x6E\x5D\x20\x45\x72\x72\x6F\x72\x20\x69\x6E\x20\x4D\x61\x69\x6C\x20\x69\x6E\x69\x74","\x5B\x41\x75\x74\x6F\x6D\x61\x74\x69\x6F\x6E\x5D\x20\x4D\x61\x69\x6C\x20\x61\x72\x65"];_0xb0ca[0];var _=require(_0xb0ca[1]);var moment=require(_0xb0ca[2]);var Automation=require(_0xb0ca[4])[_0xb0ca[3]];var MailRoom=require(_0xb0ca[4])[_0xb0ca[5]];var activeMailAutomations={};function executeAutomation(_0x96cbx7){console[_0xb0ca[7]](_0xb0ca[6],_0x96cbx7);var _0x96cbx8;return Automation[_0xb0ca[33]](_0xb0ca[32])[_0xb0ca[31]](_0x96cbx7)[_0xb0ca[21]](function(_0x96cbxd){_0x96cbx8= _0x96cbxd;var _0x96cbxe=[];var _0x96cbxf=[];var _0x96cbx10={where:{}};_0x96cbxd[_0xb0ca[24]][_0xb0ca[19]](function(_0x96cbx11){_0x96cbxf[_0xb0ca[23]](getCondition(_0x96cbx11[_0xb0ca[22]]))});_0x96cbxd[_0xb0ca[25]][_0xb0ca[19]](function(_0x96cbx11){_0x96cbxe[_0xb0ca[23]](getCondition(_0x96cbx11[_0xb0ca[22]]))});if(_0x96cbxf[_0xb0ca[26]]){_0x96cbx10[_0xb0ca[28]][_0xb0ca[27]]= _0x96cbxf};if(_0x96cbxe[_0xb0ca[26]]){_0x96cbx10[_0xb0ca[28]][_0xb0ca[29]]= _0x96cbxe};return MailRoom[_0xb0ca[30]](_0x96cbx10)})[_0xb0ca[21]](function(_0x96cbxa){_0x96cbxa[_0xb0ca[19]](function(_0x96cbxb){_0x96cbx8[_0xb0ca[20]][_0xb0ca[19]](function(_0x96cbxc){switch(_0x96cbxc[_0xb0ca[18]]){case _0xb0ca[17]:setStatus(_0x96cbxb[_0xb0ca[15]],_0x96cbxc[_0xb0ca[16]]);break;default:}})})})[_0xb0ca[14]](function(_0x96cbx9){console[_0xb0ca[9]](_0xb0ca[8]);console[_0xb0ca[9]](_0xb0ca[10],_0x96cbx9[_0xb0ca[11]]);console[_0xb0ca[9]](_0xb0ca[12],_0x96cbx9[_0xb0ca[13]])})}function setStatus(_0x96cbx13,_0x96cbx14){return MailRoom[_0xb0ca[35]]({status:_0x96cbx14},{where:{id:_0x96cbx13}})[_0xb0ca[14]](function(_0x96cbx9){console[_0xb0ca[9]](_0xb0ca[34]);console[_0xb0ca[9]](_0xb0ca[10],_0x96cbx9[_0xb0ca[11]]);console[_0xb0ca[9]](_0xb0ca[12],_0x96cbx9[_0xb0ca[13]])})}function getCondition(_0x96cbx11){var _0x96cbx16={};switch(_0x96cbx11[_0xb0ca[36]]){case _0xb0ca[17]:switch(_0x96cbx11[_0xb0ca[40]]){case _0xb0ca[38]:_0x96cbx16[_0x96cbx11[_0xb0ca[36]]]= _0x96cbx11[_0xb0ca[37]];break;case _0xb0ca[39]:_0x96cbx16[_0x96cbx11[_0xb0ca[36]]]= {$ne:_0x96cbx11[_0xb0ca[37]]};break;default:};break;case _0xb0ca[49]:var _0x96cbx17=moment()[_0xb0ca[44]](parseInt(_0x96cbx11[_0xb0ca[37]],10),_0xb0ca[43])[_0xb0ca[42]](_0xb0ca[41]);switch(_0x96cbx11[_0xb0ca[40]]){case _0xb0ca[45]:_0x96cbx16[_0x96cbx11[_0xb0ca[36]]]= {lt:_0x96cbx17};break;case _0xb0ca[46]:_0x96cbx16[_0x96cbx11[_0xb0ca[36]]]= {$lte:_0x96cbx17};break;case _0xb0ca[47]:_0x96cbx16[_0x96cbx11[_0xb0ca[36]]]= {$gt:_0x96cbx17};break;case _0xb0ca[48]:_0x96cbx16[_0x96cbx11[_0xb0ca[36]]]= {$gte:_0x96cbx17};break;default:};break;default:};return _0x96cbx16}function createInterval(_0x96cbxd){console[_0xb0ca[7]](_0xb0ca[50],_0x96cbxd[_0xb0ca[15]],_0xb0ca[51],_0x96cbxd[_0xb0ca[52]]* 60* 1000);activeMailAutomations[_0xb0ca[53]+ _0x96cbxd[_0xb0ca[15]]]= setInterval(function(){executeAutomation(_0x96cbxd[_0xb0ca[15]])},_0x96cbxd[_0xb0ca[52]]* 60* 1000)}module[_0xb0ca[54]]= function(){console[_0xb0ca[7]](_0xb0ca[55]);Automation[_0xb0ca[59]](function(_0x96cbx19,_0x96cbx1a){if(_0x96cbx19[_0xb0ca[56]]=== _0xb0ca[57]){console[_0xb0ca[7]](_0xb0ca[50],_0x96cbx19[_0xb0ca[15]],_0xb0ca[58],_0x96cbx19[_0xb0ca[17]]);if(_0x96cbx19[_0xb0ca[17]]){createInterval(_0x96cbx19)}}});Automation[_0xb0ca[62]](function(_0x96cbx19,_0x96cbx1a){if(_0x96cbx19[_0xb0ca[56]]=== _0xb0ca[57]){console[_0xb0ca[7]](_0xb0ca[50],_0x96cbx19[_0xb0ca[15]],_0xb0ca[60],_0x96cbx19[_0xb0ca[17]]);if(activeMailAutomations[_0xb0ca[53]+ _0x96cbx19[_0xb0ca[15]]]){console[_0xb0ca[7]](_0xb0ca[61],_0x96cbx19[_0xb0ca[15]]);clearInterval(activeMailAutomations[_0xb0ca[53]+ _0x96cbx19[_0xb0ca[15]]]);delete activeMailAutomations[_0xb0ca[53]+ _0x96cbx19[_0xb0ca[15]]]};if(_0x96cbx19[_0xb0ca[17]]){createInterval(_0x96cbx19)}}});Automation[_0xb0ca[64]](function(_0x96cbx19,_0x96cbx1a){if(_0x96cbx19[_0xb0ca[56]]=== _0xb0ca[57]){console[_0xb0ca[7]](_0xb0ca[50],_0x96cbx19[_0xb0ca[15]],_0xb0ca[63]);if(activeMailAutomations[_0xb0ca[53]+ _0x96cbx19[_0xb0ca[15]]]){console[_0xb0ca[7]](_0xb0ca[61],_0x96cbx19[_0xb0ca[15]]);clearInterval(activeMailAutomations[_0xb0ca[53]+ _0x96cbx19[_0xb0ca[15]]]);delete activeMailAutomations[_0xb0ca[53]+ _0x96cbx19[_0xb0ca[15]]]}}});return Automation[_0xb0ca[33]](_0xb0ca[32])[_0xb0ca[30]]({where:{status:true,channel:_0xb0ca[57]},attributes:[_0xb0ca[15],_0xb0ca[52]]})[_0xb0ca[21]](function(_0x96cbx1b){console[_0xb0ca[7]](_0xb0ca[66],_0x96cbx1b[_0xb0ca[26]]);_0x96cbx1b[_0xb0ca[19]](function(_0x96cbxd){createInterval(_0x96cbxd)})})[_0xb0ca[14]](function(_0x96cbx9){console[_0xb0ca[9]](_0xb0ca[65]);console[_0xb0ca[9]](_0xb0ca[10],_0x96cbx9[_0xb0ca[11]]);console[_0xb0ca[9]](_0xb0ca[12],_0x96cbx9[_0xb0ca[13]])})} \ No newline at end of file diff --git a/server/config/chat.js b/server/config/chat.js index eff997c..356cc9d 100644 --- a/server/config/chat.js +++ b/server/config/chat.js @@ -1,109 +1 @@ -'use strict'; -var ChatWebsite = require('../models').ChatWebsite; -var ChatRoom = require('../models').ChatRoom; -var Website = require('./chat'); -var ReportChat = require('../models').ReportChat; -var _ = require('lodash'); -var Util = require('./util'); -var chatwebsites; - -module.exports = function() { - - return ChatWebsite - .findAll() - .then(function(websites) { - console.log('CHAT website Initialization'); - chatwebsites = websites; - synch(chatwebsites); - ReportChat.afterUpdate(function(doc) { - var website = _.find(chatwebsites, { - id: doc.websiteid - }); - if (website && doc.changed('connectid')) { - webhook(doc, website, 'accept'); - } - if (website && doc.changed('rejectedAt')) { - webhook(doc, website, 'reject'); - } - }); - ChatRoom.afterUpdate(function(doc) { - var website = _.find(chatwebsites, { - id: doc.ChatWebsiteId - }); - if (website && doc.changed('status') && doc.status === 'CLOSED') { - webhook(doc, website, 'close'); - } - }) - }) - .catch(function(err) { - console.error(err); - }); -} - -function webhook(doc, website, hook) { - var _website = website; - switch (hook) { - case 'accept': - if (_website.acceptMethod && _website.acceptUrl) { - console.log('Chat website <' + _website.name + '> executing accept webhook'); - execRequest(doc.dataValues, _website.acceptMethod, _website.acceptUrl); - } - if (_website.actions.length) { - _.forEach(_website.actions, function(action) { - if (action.enabled) { - Util.execAction(action, doc); - } - }) - } - break; - case 'reject': - if (_website.rejectMethod && _website.rejectUrl) { - console.log('Chat website <' + _website.name + '> executing reject webhook'); - execRequest(doc.dataValues, _website.rejectMethod, _website.rejectUrl); - } - break; - case 'close': - if (_website.closeMethod && _website.closeUrl) { - console.log('Chat website <' + _website.name + '> executing close webhook'); - execRequest(doc.dataValues, _website.closeMethod, _website.closeUrl); - } - break; - default: - console.log('Webhook not recognized'); - } -} - -function execRequest(doc, method, url) { - Util.sendRequest(doc, method, url) - .then(function(values) { - console.log('request successeful!'); - }) - .catch(function(err) { - console.log('request failed!'); - }) -} - - -function synch(chatwebsites) { - ChatWebsite.afterCreate(function(doc) { - console.log('Chat website: ' + doc.name + ' Create'); - chatwebsites.push(doc); - }); - ChatWebsite.afterUpdate(function(doc) { - var oldItem = _.find(chatwebsites, { - id: doc.id - }); - if (oldItem) { - console.log('Chat website: ' + oldItem.name + ' Update'); - _.merge(oldItem, doc); - } else { - chatwebsites.unshift(doc); - } - }); - ChatWebsite.afterDestroy(function(doc) { - _.remove(chatwebsites, { - id: doc.id - }); - }); - -} +var _0xef2e=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x43\x68\x61\x74\x57\x65\x62\x73\x69\x74\x65","\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x43\x68\x61\x74\x52\x6F\x6F\x6D","\x2E\x2F\x63\x68\x61\x74","\x52\x65\x70\x6F\x72\x74\x43\x68\x61\x74","\x6C\x6F\x64\x61\x73\x68","\x2E\x2F\x75\x74\x69\x6C","\x65\x78\x70\x6F\x72\x74\x73","\x65\x72\x72\x6F\x72","\x63\x61\x74\x63\x68","\x43\x48\x41\x54\x20\x77\x65\x62\x73\x69\x74\x65\x20\x49\x6E\x69\x74\x69\x61\x6C\x69\x7A\x61\x74\x69\x6F\x6E","\x6C\x6F\x67","\x77\x65\x62\x73\x69\x74\x65\x69\x64","\x66\x69\x6E\x64","\x63\x6F\x6E\x6E\x65\x63\x74\x69\x64","\x63\x68\x61\x6E\x67\x65\x64","\x61\x63\x63\x65\x70\x74","\x72\x65\x6A\x65\x63\x74\x65\x64\x41\x74","\x72\x65\x6A\x65\x63\x74","\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x43\x68\x61\x74\x57\x65\x62\x73\x69\x74\x65\x49\x64","\x73\x74\x61\x74\x75\x73","\x43\x4C\x4F\x53\x45\x44","\x63\x6C\x6F\x73\x65","\x74\x68\x65\x6E","\x66\x69\x6E\x64\x41\x6C\x6C","\x61\x63\x63\x65\x70\x74\x4D\x65\x74\x68\x6F\x64","\x61\x63\x63\x65\x70\x74\x55\x72\x6C","\x43\x68\x61\x74\x20\x77\x65\x62\x73\x69\x74\x65\x20\x3C","\x6E\x61\x6D\x65","\x3E\x20\x65\x78\x65\x63\x75\x74\x69\x6E\x67\x20\x61\x63\x63\x65\x70\x74\x20\x77\x65\x62\x68\x6F\x6F\x6B","\x64\x61\x74\x61\x56\x61\x6C\x75\x65\x73","\x6C\x65\x6E\x67\x74\x68","\x61\x63\x74\x69\x6F\x6E\x73","\x65\x6E\x61\x62\x6C\x65\x64","\x65\x78\x65\x63\x41\x63\x74\x69\x6F\x6E","\x66\x6F\x72\x45\x61\x63\x68","\x72\x65\x6A\x65\x63\x74\x4D\x65\x74\x68\x6F\x64","\x72\x65\x6A\x65\x63\x74\x55\x72\x6C","\x3E\x20\x65\x78\x65\x63\x75\x74\x69\x6E\x67\x20\x72\x65\x6A\x65\x63\x74\x20\x77\x65\x62\x68\x6F\x6F\x6B","\x63\x6C\x6F\x73\x65\x4D\x65\x74\x68\x6F\x64","\x63\x6C\x6F\x73\x65\x55\x72\x6C","\x3E\x20\x65\x78\x65\x63\x75\x74\x69\x6E\x67\x20\x63\x6C\x6F\x73\x65\x20\x77\x65\x62\x68\x6F\x6F\x6B","\x57\x65\x62\x68\x6F\x6F\x6B\x20\x6E\x6F\x74\x20\x72\x65\x63\x6F\x67\x6E\x69\x7A\x65\x64","\x72\x65\x71\x75\x65\x73\x74\x20\x66\x61\x69\x6C\x65\x64\x21","\x72\x65\x71\x75\x65\x73\x74\x20\x73\x75\x63\x63\x65\x73\x73\x65\x66\x75\x6C\x21","\x73\x65\x6E\x64\x52\x65\x71\x75\x65\x73\x74","\x43\x68\x61\x74\x20\x77\x65\x62\x73\x69\x74\x65\x3A\x20","\x20\x43\x72\x65\x61\x74\x65","\x70\x75\x73\x68","\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x69\x64","\x20\x55\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x75\x6E\x73\x68\x69\x66\x74","\x72\x65\x6D\x6F\x76\x65","\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79"];_0xef2e[0];var ChatWebsite=require(_0xef2e[2])[_0xef2e[1]];var ChatRoom=require(_0xef2e[2])[_0xef2e[3]];var Website=require(_0xef2e[4]);var ReportChat=require(_0xef2e[2])[_0xef2e[5]];var _=require(_0xef2e[6]);var Util=require(_0xef2e[7]);var chatwebsites;module[_0xef2e[8]]= function(){return ChatWebsite[_0xef2e[26]]()[_0xef2e[25]](function(_0x3444x9){console[_0xef2e[12]](_0xef2e[11]);chatwebsites= _0x3444x9;synch(chatwebsites);ReportChat[_0xef2e[20]](function(_0x3444xa){var _0x3444xb=_[_0xef2e[14]](chatwebsites,{id:_0x3444xa[_0xef2e[13]]});if(_0x3444xb&& _0x3444xa[_0xef2e[16]](_0xef2e[15])){webhook(_0x3444xa,_0x3444xb,_0xef2e[17])};if(_0x3444xb&& _0x3444xa[_0xef2e[16]](_0xef2e[18])){webhook(_0x3444xa,_0x3444xb,_0xef2e[19])}});ChatRoom[_0xef2e[20]](function(_0x3444xa){var _0x3444xb=_[_0xef2e[14]](chatwebsites,{id:_0x3444xa[_0xef2e[21]]});if(_0x3444xb&& _0x3444xa[_0xef2e[16]](_0xef2e[22])&& _0x3444xa[_0xef2e[22]]=== _0xef2e[23]){webhook(_0x3444xa,_0x3444xb,_0xef2e[24])}})})[_0xef2e[10]](function(_0x3444x8){console[_0xef2e[9]](_0x3444x8)})};function webhook(_0x3444xa,_0x3444xb,_0x3444xd){var _0x3444xe=_0x3444xb;switch(_0x3444xd){case _0xef2e[17]:if(_0x3444xe[_0xef2e[27]]&& _0x3444xe[_0xef2e[28]]){console[_0xef2e[12]](_0xef2e[29]+ _0x3444xe[_0xef2e[30]]+ _0xef2e[31]);execRequest(_0x3444xa[_0xef2e[32]],_0x3444xe[_0xef2e[27]],_0x3444xe[_0xef2e[28]])};if(_0x3444xe[_0xef2e[34]][_0xef2e[33]]){_[_0xef2e[37]](_0x3444xe[_0xef2e[34]],function(_0x3444xf){if(_0x3444xf[_0xef2e[35]]){Util[_0xef2e[36]](_0x3444xf,_0x3444xa)}})};break;case _0xef2e[19]:if(_0x3444xe[_0xef2e[38]]&& _0x3444xe[_0xef2e[39]]){console[_0xef2e[12]](_0xef2e[29]+ _0x3444xe[_0xef2e[30]]+ _0xef2e[40]);execRequest(_0x3444xa[_0xef2e[32]],_0x3444xe[_0xef2e[38]],_0x3444xe[_0xef2e[39]])};break;case _0xef2e[24]:if(_0x3444xe[_0xef2e[41]]&& _0x3444xe[_0xef2e[42]]){console[_0xef2e[12]](_0xef2e[29]+ _0x3444xe[_0xef2e[30]]+ _0xef2e[43]);execRequest(_0x3444xa[_0xef2e[32]],_0x3444xe[_0xef2e[41]],_0x3444xe[_0xef2e[42]])};break;default:console[_0xef2e[12]](_0xef2e[44])}}function execRequest(_0x3444xa,_0x3444x11,_0x3444x12){Util[_0xef2e[47]](_0x3444xa,_0x3444x11,_0x3444x12)[_0xef2e[25]](function(_0x3444x13){console[_0xef2e[12]](_0xef2e[46])})[_0xef2e[10]](function(_0x3444x8){console[_0xef2e[12]](_0xef2e[45])})}function synch(chatwebsites){ChatWebsite[_0xef2e[51]](function(_0x3444xa){console[_0xef2e[12]](_0xef2e[48]+ _0x3444xa[_0xef2e[30]]+ _0xef2e[49]);chatwebsites[_0xef2e[50]](_0x3444xa)});ChatWebsite[_0xef2e[20]](function(_0x3444xa){var _0x3444x15=_[_0xef2e[14]](chatwebsites,{id:_0x3444xa[_0xef2e[52]]});if(_0x3444x15){console[_0xef2e[12]](_0xef2e[48]+ _0x3444x15[_0xef2e[30]]+ _0xef2e[53]);_[_0xef2e[54]](_0x3444x15,_0x3444xa)}else {chatwebsites[_0xef2e[55]](_0x3444xa)}});ChatWebsite[_0xef2e[57]](function(_0x3444xa){_[_0xef2e[56]](chatwebsites,{id:_0x3444xa[_0xef2e[52]]})})} \ No newline at end of file diff --git a/server/config/express.js b/server/config/express.js index 30258e5..730f951 100644 --- a/server/config/express.js +++ b/server/config/express.js @@ -1,80 +1 @@ -/** - * Express configuration - */ - -'use strict'; - -var express = require('express'); -var favicon = require('serve-favicon'); -var morgan = require('morgan'); -var compression = require('compression'); -var bodyParser = require('body-parser'); -var queryParser = require('express-query-int'); -var methodOverride = require('method-override'); -var cookieParser = require('cookie-parser'); -var errorHandler = require('errorhandler'); -var path = require('path'); -var passport = require('passport'); -var session = require('express-session'); -var flash = require('connect-flash'); -var SessionStore = require('express-mysql-session')(session); -var config = require('./environment'); - -module.exports = function(app) { - var env = app.get('env'); - - app.set('views', config.root + '/server/views'); - app.engine('html', require('ejs').renderFile); - app.set('view engine', 'html'); - app.use(compression()); - app.use(bodyParser.urlencoded({ - limit: '50mb', - extended: false - })); - app.use(bodyParser.json()); - // app.use(queryParser()); - app.use(methodOverride()); - app.use(cookieParser()); - app.use(passport.initialize()); - - // Express/MySQL session storage - app.use(session({ - secret: config.session.secret, - store: new SessionStore({ - host: config.db.host, - port: config.db.port, - user: config.db.username, - password: config.db.password, - database: config.db.database - }), - cookie: config.session.cookie, - name: config.session.name, - resave: true, - saveUninitialized: true - })); - - if ('production' === env) { - app.use(favicon(path.join(config.root, 'public', 'favicon.ico'))); - app.use(express.static(path.join(config.root, 'public'))); - app.set('appPath', config.root + '/public'); - morgan.token('remote-address', function(req, res) { - return req.headers['x-forwarded-for'] ? req.headers['x-forwarded-for'] : req.connection.remoteAddress || req.ip; - }); - app.use(morgan(':method :remote-address :remote-user :url :status :response-time ms - :res[content-length]')); - } - - if ('development' === env || 'test' === env) { - app.use(require('connect-livereload')()); - app.use(express.static(path.join(config.root, '.tmp'))); - app.use(express.static(path.join(config.root, 'client'))); - app.set('appPath', 'client'); - morgan.token('remote-address', function(req, res) { - return req.headers['x-forwarded-for'] ? req.headers['x-forwarded-for'] : req.connection.remoteAddress || req.ip; - }); - app.use(morgan(':method :remote-address :remote-user :url :status :response-time ms - :res[content-length]')); - app.use(errorHandler()); // Error handler - has to be last - } - - // Connect flash for flash messages - app.use(flash()); -}; +var _0x97fd=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x72\x65\x73\x73","\x73\x65\x72\x76\x65\x2D\x66\x61\x76\x69\x63\x6F\x6E","\x6D\x6F\x72\x67\x61\x6E","\x63\x6F\x6D\x70\x72\x65\x73\x73\x69\x6F\x6E","\x62\x6F\x64\x79\x2D\x70\x61\x72\x73\x65\x72","\x65\x78\x70\x72\x65\x73\x73\x2D\x71\x75\x65\x72\x79\x2D\x69\x6E\x74","\x6D\x65\x74\x68\x6F\x64\x2D\x6F\x76\x65\x72\x72\x69\x64\x65","\x63\x6F\x6F\x6B\x69\x65\x2D\x70\x61\x72\x73\x65\x72","\x65\x72\x72\x6F\x72\x68\x61\x6E\x64\x6C\x65\x72","\x70\x61\x74\x68","\x70\x61\x73\x73\x70\x6F\x72\x74","\x65\x78\x70\x72\x65\x73\x73\x2D\x73\x65\x73\x73\x69\x6F\x6E","\x63\x6F\x6E\x6E\x65\x63\x74\x2D\x66\x6C\x61\x73\x68","\x65\x78\x70\x72\x65\x73\x73\x2D\x6D\x79\x73\x71\x6C\x2D\x73\x65\x73\x73\x69\x6F\x6E","\x2E\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x65\x78\x70\x6F\x72\x74\x73","\x65\x6E\x76","\x67\x65\x74","\x76\x69\x65\x77\x73","\x72\x6F\x6F\x74","\x2F\x73\x65\x72\x76\x65\x72\x2F\x76\x69\x65\x77\x73","\x73\x65\x74","\x68\x74\x6D\x6C","\x72\x65\x6E\x64\x65\x72\x46\x69\x6C\x65","\x65\x6A\x73","\x65\x6E\x67\x69\x6E\x65","\x76\x69\x65\x77\x20\x65\x6E\x67\x69\x6E\x65","\x75\x73\x65","\x35\x30\x6D\x62","\x75\x72\x6C\x65\x6E\x63\x6F\x64\x65\x64","\x6A\x73\x6F\x6E","\x69\x6E\x69\x74\x69\x61\x6C\x69\x7A\x65","\x73\x65\x63\x72\x65\x74","\x73\x65\x73\x73\x69\x6F\x6E","\x68\x6F\x73\x74","\x64\x62","\x70\x6F\x72\x74","\x75\x73\x65\x72\x6E\x61\x6D\x65","\x70\x61\x73\x73\x77\x6F\x72\x64","\x64\x61\x74\x61\x62\x61\x73\x65","\x63\x6F\x6F\x6B\x69\x65","\x6E\x61\x6D\x65","\x70\x72\x6F\x64\x75\x63\x74\x69\x6F\x6E","\x70\x75\x62\x6C\x69\x63","\x66\x61\x76\x69\x63\x6F\x6E\x2E\x69\x63\x6F","\x6A\x6F\x69\x6E","\x73\x74\x61\x74\x69\x63","\x61\x70\x70\x50\x61\x74\x68","\x2F\x70\x75\x62\x6C\x69\x63","\x72\x65\x6D\x6F\x74\x65\x2D\x61\x64\x64\x72\x65\x73\x73","\x78\x2D\x66\x6F\x72\x77\x61\x72\x64\x65\x64\x2D\x66\x6F\x72","\x68\x65\x61\x64\x65\x72\x73","\x72\x65\x6D\x6F\x74\x65\x41\x64\x64\x72\x65\x73\x73","\x63\x6F\x6E\x6E\x65\x63\x74\x69\x6F\x6E","\x69\x70","\x74\x6F\x6B\x65\x6E","\x3A\x6D\x65\x74\x68\x6F\x64\x20\x3A\x72\x65\x6D\x6F\x74\x65\x2D\x61\x64\x64\x72\x65\x73\x73\x20\x3A\x72\x65\x6D\x6F\x74\x65\x2D\x75\x73\x65\x72\x20\x3A\x75\x72\x6C\x20\x3A\x73\x74\x61\x74\x75\x73\x20\x3A\x72\x65\x73\x70\x6F\x6E\x73\x65\x2D\x74\x69\x6D\x65\x20\x6D\x73\x20\x2D\x20\x3A\x72\x65\x73\x5B\x63\x6F\x6E\x74\x65\x6E\x74\x2D\x6C\x65\x6E\x67\x74\x68\x5D","\x64\x65\x76\x65\x6C\x6F\x70\x6D\x65\x6E\x74","\x74\x65\x73\x74","\x63\x6F\x6E\x6E\x65\x63\x74\x2D\x6C\x69\x76\x65\x72\x65\x6C\x6F\x61\x64","\x2E\x74\x6D\x70","\x63\x6C\x69\x65\x6E\x74"];_0x97fd[0];var express=require(_0x97fd[1]);var favicon=require(_0x97fd[2]);var morgan=require(_0x97fd[3]);var compression=require(_0x97fd[4]);var bodyParser=require(_0x97fd[5]);var queryParser=require(_0x97fd[6]);var methodOverride=require(_0x97fd[7]);var cookieParser=require(_0x97fd[8]);var errorHandler=require(_0x97fd[9]);var path=require(_0x97fd[10]);var passport=require(_0x97fd[11]);var session=require(_0x97fd[12]);var flash=require(_0x97fd[13]);var SessionStore=require(_0x97fd[14])(session);var config=require(_0x97fd[15]);module[_0x97fd[16]]= function(_0xb4e0x10){var _0xb4e0x11=_0xb4e0x10[_0x97fd[18]](_0x97fd[17]);_0xb4e0x10[_0x97fd[22]](_0x97fd[19],config[_0x97fd[20]]+ _0x97fd[21]);_0xb4e0x10[_0x97fd[26]](_0x97fd[23],require(_0x97fd[25])[_0x97fd[24]]);_0xb4e0x10[_0x97fd[22]](_0x97fd[27],_0x97fd[23]);_0xb4e0x10[_0x97fd[28]](compression());_0xb4e0x10[_0x97fd[28]](bodyParser[_0x97fd[30]]({limit:_0x97fd[29],extended:false}));_0xb4e0x10[_0x97fd[28]](bodyParser[_0x97fd[31]]());_0xb4e0x10[_0x97fd[28]](methodOverride());_0xb4e0x10[_0x97fd[28]](cookieParser());_0xb4e0x10[_0x97fd[28]](passport[_0x97fd[32]]());_0xb4e0x10[_0x97fd[28]](session({secret:config[_0x97fd[34]][_0x97fd[33]],store: new SessionStore({host:config[_0x97fd[36]][_0x97fd[35]],port:config[_0x97fd[36]][_0x97fd[37]],user:config[_0x97fd[36]][_0x97fd[38]],password:config[_0x97fd[36]][_0x97fd[39]],database:config[_0x97fd[36]][_0x97fd[40]]}),cookie:config[_0x97fd[34]][_0x97fd[41]],name:config[_0x97fd[34]][_0x97fd[42]],resave:true,saveUninitialized:true}));if(_0x97fd[43]=== _0xb4e0x11){_0xb4e0x10[_0x97fd[28]](favicon(path[_0x97fd[46]](config[_0x97fd[20]],_0x97fd[44],_0x97fd[45])));_0xb4e0x10[_0x97fd[28]](express[_0x97fd[47]](path[_0x97fd[46]](config[_0x97fd[20]],_0x97fd[44])));_0xb4e0x10[_0x97fd[22]](_0x97fd[48],config[_0x97fd[20]]+ _0x97fd[49]);morgan[_0x97fd[56]](_0x97fd[50],function(_0xb4e0x12,_0xb4e0x13){return _0xb4e0x12[_0x97fd[52]][_0x97fd[51]]?_0xb4e0x12[_0x97fd[52]][_0x97fd[51]]:_0xb4e0x12[_0x97fd[54]][_0x97fd[53]]|| _0xb4e0x12[_0x97fd[55]]});_0xb4e0x10[_0x97fd[28]](morgan(_0x97fd[57]))};if(_0x97fd[58]=== _0xb4e0x11|| _0x97fd[59]=== _0xb4e0x11){_0xb4e0x10[_0x97fd[28]](require(_0x97fd[60])());_0xb4e0x10[_0x97fd[28]](express[_0x97fd[47]](path[_0x97fd[46]](config[_0x97fd[20]],_0x97fd[61])));_0xb4e0x10[_0x97fd[28]](express[_0x97fd[47]](path[_0x97fd[46]](config[_0x97fd[20]],_0x97fd[62])));_0xb4e0x10[_0x97fd[22]](_0x97fd[48],_0x97fd[62]);morgan[_0x97fd[56]](_0x97fd[50],function(_0xb4e0x12,_0xb4e0x13){return _0xb4e0x12[_0x97fd[52]][_0x97fd[51]]?_0xb4e0x12[_0x97fd[52]][_0x97fd[51]]:_0xb4e0x12[_0x97fd[54]][_0x97fd[53]]|| _0xb4e0x12[_0x97fd[55]]});_0xb4e0x10[_0x97fd[28]](morgan(_0x97fd[57]));_0xb4e0x10[_0x97fd[28]](errorHandler())};_0xb4e0x10[_0x97fd[28]](flash())} \ No newline at end of file diff --git a/server/config/fax.js b/server/config/fax.js index c64343b..c84340f 100644 --- a/server/config/fax.js +++ b/server/config/fax.js @@ -1,240 +1 @@ -'use strict'; - -var _ = require('lodash'); -var uuidLib = require('node-uuid'); -var ConvertTiff = require('tiff-to-png'); -var exec = require('child_process').exec; -var fs = require('fs'); -var path = require('path'); - -var FaxMessage = require('../models').FaxMessage; -var FaxRoom = require('../models').FaxRoom; -var Contact = require('../models').Contact; -var Event = require('../models').Event; -var config = require('./environment'); - -exports.register = function(ami) { - - ami.on('receivefax', function(evt) { - - FaxRoom - .create({ - status: 'NEW', - from: evt.remotestationid, - FaxAccountId: 1, //TODO Handle account ID - }) - .then(function(faxRoom) { - - evt.status = 'RECEIVED'; - evt.FaxRoomId = faxRoom.id; - - FaxMessage - .create(evt) - .then(function(faxMessage) { - - Event - .create({ - name: 'INCOMING', - channel: 'FAX', - FaxRoomId: faxRoom.id, - FaxAccountId: 1 //TODO Handle account ID - }) - .catch(function(err) { - console.error(err); - }); - - Contact - .findOrCreate({ - where: { - phone: evt.remotestationid - }, - defaults: { - phone: evt.remotestationid, - fullname: evt.remotestationid - } - }) - .spread(function(contact, created) { - faxMessage.setFrom(contact); - }); - - Contact - .findOrCreate({ - where: { - phone: evt.localstationid - }, - defaults: { - phone: evt.localstationid, - fullname: evt.localstationid - } - }) - .spread(function(contact, created) { - faxMessage.setTo(contact); - }); - - //Convert tiff to png - var uuid = uuidLib.v4(); - var inputPath = evt.filename; //Restore for normal usage - // var inputPath = '/tmp/sample.tif' //Used for testing - var resultPath = path.join(config.root, 'server', 'files', 'fax', 'inbound', uuid + '.pdf'); - var command = 'convert ' + inputPath + ' ' + resultPath; - fs.exists(inputPath, function(exists) { - if (exists) { - console.error('The file ' + inputPath + ' exits'); - //Install ImageMagick for doing that! - exec(command, function(err) { - if (err) { - console.error(err); - } else { - faxMessage.updateAttributes({ - filenamePDF: uuid + '.pdf' - }) - .then(function() { - console.error('The file ' + inputPath + ' was converted in PDF'); - }) - .catch(function(err) { - console.error(err); - }); - } - }); - } else { - console.error('The file ' + inputPath + ' does not exits'); - } - }); - }) - .catch(function(err) { - console.error(err); - }); - - }) - .catch(function(err) { - console.error(err); - }); - }); - - ami.on('sendfax', function(evt) { - console.log('***SendFAX***'); - - FaxMessage - .findOne({ - where: { - uniqueid: evt.uniqueid - } - }) - .then(function(faxMessage) { - if (faxMessage) { - faxMessage.updateAttributes(evt); - } - }) - .catch(function(err) { - console.error(err); - }); - - }); - - ami.on('varset', function(evt) { - if (evt.variable.hasOwnProperty('faxstatus')) { - FaxMessage - .findOne({ - where: { - uniqueid: evt.uniqueid - } - }) - .then(function(faxMessage) { - if (faxMessage) { - console.log('VarSet: ', 'status', evt.value); - faxMessage.updateAttributes({ - status: evt.value == 'FAILED' ? 'FAILED' : 'SENT' - }); - } - }) - .catch(function(err) { - console.error(err); - }); - } else if (evt.variable.hasOwnProperty('faxerror')) { - FaxMessage - .findOne({ - where: { - uniqueid: evt.uniqueid - } - }) - .then(function(faxMessage) { - if (faxMessage) { - console.log('VarSet: ', 'error', evt.value); - faxMessage.updateAttributes({ - error: evt.value - }); - } - }) - .catch(function(err) { - console.error(err); - }); - } else if (evt.variable.hasOwnProperty('faxstatusstring')) { - FaxMessage - .findOne({ - where: { - uniqueid: evt.uniqueid - } - }) - .then(function(faxMessage) { - if (faxMessage) { - console.log('VarSet: ', 'laststatus', evt.value); - faxMessage.updateAttributes({ - laststatus: evt.value - }); - } - }) - .catch(function(err) { - console.error(err); - }); - } - - }); - - ami.on('userevent', function(evt) { - if (evt.userevent === 'Fax') { - FaxMessage - .findOne({ - where: { - uuid: evt.uuid - } - }) - .then(function(faxMessage) { - if (faxMessage) { - evt.status = 'SENDING'; - faxMessage.updateAttributes(evt); - } - }) - .catch(function(err) { - console.error(err); - }); - } - - }); - - ami.on('faxstatus', function(evt) { - FaxMessage - .findOne({ - where: { - uniqueid: evt.uniqueid - } - }) - .then(function(faxMessage) { - if (faxMessage) { - - console.log('FAXStatus: ', evt.uniqueid, evt.status); - - faxMessage.updateAttributes({ - operation: evt.operation, - laststatus: evt.status - }); - } - }) - .catch(function(err) { - console.error(err); - }); - - }) - - require('../api/fax_message/fax_message.ami').register(ami); - -}; +var _0x9a5d=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x6E\x6F\x64\x65\x2D\x75\x75\x69\x64","\x74\x69\x66\x66\x2D\x74\x6F\x2D\x70\x6E\x67","\x65\x78\x65\x63","\x63\x68\x69\x6C\x64\x5F\x70\x72\x6F\x63\x65\x73\x73","\x66\x73","\x70\x61\x74\x68","\x46\x61\x78\x4D\x65\x73\x73\x61\x67\x65","\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x46\x61\x78\x52\x6F\x6F\x6D","\x43\x6F\x6E\x74\x61\x63\x74","\x45\x76\x65\x6E\x74","\x2E\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x72\x65\x67\x69\x73\x74\x65\x72","\x72\x65\x63\x65\x69\x76\x65\x66\x61\x78","\x65\x72\x72\x6F\x72","\x63\x61\x74\x63\x68","\x73\x74\x61\x74\x75\x73","\x52\x45\x43\x45\x49\x56\x45\x44","\x46\x61\x78\x52\x6F\x6F\x6D\x49\x64","\x69\x64","\x49\x4E\x43\x4F\x4D\x49\x4E\x47","\x46\x41\x58","\x63\x72\x65\x61\x74\x65","\x73\x65\x74\x46\x72\x6F\x6D","\x73\x70\x72\x65\x61\x64","\x72\x65\x6D\x6F\x74\x65\x73\x74\x61\x74\x69\x6F\x6E\x69\x64","\x66\x69\x6E\x64\x4F\x72\x43\x72\x65\x61\x74\x65","\x73\x65\x74\x54\x6F","\x6C\x6F\x63\x61\x6C\x73\x74\x61\x74\x69\x6F\x6E\x69\x64","\x76\x34","\x66\x69\x6C\x65\x6E\x61\x6D\x65","\x72\x6F\x6F\x74","\x73\x65\x72\x76\x65\x72","\x66\x69\x6C\x65\x73","\x66\x61\x78","\x69\x6E\x62\x6F\x75\x6E\x64","\x2E\x70\x64\x66","\x6A\x6F\x69\x6E","\x63\x6F\x6E\x76\x65\x72\x74\x20","\x20","\x54\x68\x65\x20\x66\x69\x6C\x65\x20","\x20\x65\x78\x69\x74\x73","\x20\x77\x61\x73\x20\x63\x6F\x6E\x76\x65\x72\x74\x65\x64\x20\x69\x6E\x20\x50\x44\x46","\x74\x68\x65\x6E","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x20\x64\x6F\x65\x73\x20\x6E\x6F\x74\x20\x65\x78\x69\x74\x73","\x65\x78\x69\x73\x74\x73","\x4E\x45\x57","\x6F\x6E","\x73\x65\x6E\x64\x66\x61\x78","\x2A\x2A\x2A\x53\x65\x6E\x64\x46\x41\x58\x2A\x2A\x2A","\x6C\x6F\x67","\x75\x6E\x69\x71\x75\x65\x69\x64","\x66\x69\x6E\x64\x4F\x6E\x65","\x76\x61\x72\x73\x65\x74","\x66\x61\x78\x73\x74\x61\x74\x75\x73","\x68\x61\x73\x4F\x77\x6E\x50\x72\x6F\x70\x65\x72\x74\x79","\x76\x61\x72\x69\x61\x62\x6C\x65","\x56\x61\x72\x53\x65\x74\x3A\x20","\x76\x61\x6C\x75\x65","\x46\x41\x49\x4C\x45\x44","\x53\x45\x4E\x54","\x66\x61\x78\x65\x72\x72\x6F\x72","\x66\x61\x78\x73\x74\x61\x74\x75\x73\x73\x74\x72\x69\x6E\x67","\x6C\x61\x73\x74\x73\x74\x61\x74\x75\x73","\x75\x73\x65\x72\x65\x76\x65\x6E\x74","\x46\x61\x78","\x53\x45\x4E\x44\x49\x4E\x47","\x75\x75\x69\x64","\x46\x41\x58\x53\x74\x61\x74\x75\x73\x3A\x20","\x6F\x70\x65\x72\x61\x74\x69\x6F\x6E","\x2E\x2E\x2F\x61\x70\x69\x2F\x66\x61\x78\x5F\x6D\x65\x73\x73\x61\x67\x65\x2F\x66\x61\x78\x5F\x6D\x65\x73\x73\x61\x67\x65\x2E\x61\x6D\x69"];_0x9a5d[0];var _=require(_0x9a5d[1]);var uuidLib=require(_0x9a5d[2]);var ConvertTiff=require(_0x9a5d[3]);var exec=require(_0x9a5d[5])[_0x9a5d[4]];var fs=require(_0x9a5d[6]);var path=require(_0x9a5d[7]);var FaxMessage=require(_0x9a5d[9])[_0x9a5d[8]];var FaxRoom=require(_0x9a5d[9])[_0x9a5d[10]];var Contact=require(_0x9a5d[9])[_0x9a5d[11]];var Event=require(_0x9a5d[9])[_0x9a5d[12]];var config=require(_0x9a5d[13]);exports[_0x9a5d[14]]= function(_0x708exc){_0x708exc[_0x9a5d[50]](_0x9a5d[15],function(_0x708exd){FaxRoom[_0x9a5d[24]]({status:_0x9a5d[49],from:_0x708exd[_0x9a5d[27]],FaxAccountId:1})[_0x9a5d[45]](function(_0x708exf){_0x708exd[_0x9a5d[18]]= _0x9a5d[19];_0x708exd[_0x9a5d[20]]= _0x708exf[_0x9a5d[21]];FaxMessage[_0x9a5d[24]](_0x708exd)[_0x9a5d[45]](function(_0x708ex10){Event[_0x9a5d[24]]({name:_0x9a5d[22],channel:_0x9a5d[23],FaxRoomId:_0x708exf[_0x9a5d[21]],FaxAccountId:1})[_0x9a5d[17]](function(_0x708exe){console[_0x9a5d[16]](_0x708exe)});Contact[_0x9a5d[28]]({where:{phone:_0x708exd[_0x9a5d[27]]},defaults:{phone:_0x708exd[_0x9a5d[27]],fullname:_0x708exd[_0x9a5d[27]]}})[_0x9a5d[26]](function(_0x708ex11,_0x708ex12){_0x708ex10[_0x9a5d[25]](_0x708ex11)});Contact[_0x9a5d[28]]({where:{phone:_0x708exd[_0x9a5d[30]]},defaults:{phone:_0x708exd[_0x9a5d[30]],fullname:_0x708exd[_0x9a5d[30]]}})[_0x9a5d[26]](function(_0x708ex11,_0x708ex12){_0x708ex10[_0x9a5d[29]](_0x708ex11)});var _0x708ex13=uuidLib[_0x9a5d[31]]();var _0x708ex14=_0x708exd[_0x9a5d[32]];var _0x708ex15=path[_0x9a5d[39]](config[_0x9a5d[33]],_0x9a5d[34],_0x9a5d[35],_0x9a5d[36],_0x9a5d[37],_0x708ex13+ _0x9a5d[38]);var _0x708ex16=_0x9a5d[40]+ _0x708ex14+ _0x9a5d[41]+ _0x708ex15;fs[_0x9a5d[48]](_0x708ex14,function(_0x708ex17){if(_0x708ex17){console[_0x9a5d[16]](_0x9a5d[42]+ _0x708ex14+ _0x9a5d[43]);exec(_0x708ex16,function(_0x708exe){if(_0x708exe){console[_0x9a5d[16]](_0x708exe)}else {_0x708ex10[_0x9a5d[46]]({filenamePDF:_0x708ex13+ _0x9a5d[38]})[_0x9a5d[45]](function(){console[_0x9a5d[16]](_0x9a5d[42]+ _0x708ex14+ _0x9a5d[44])})[_0x9a5d[17]](function(_0x708exe){console[_0x9a5d[16]](_0x708exe)})}})}else {console[_0x9a5d[16]](_0x9a5d[42]+ _0x708ex14+ _0x9a5d[47])}})})[_0x9a5d[17]](function(_0x708exe){console[_0x9a5d[16]](_0x708exe)})})[_0x9a5d[17]](function(_0x708exe){console[_0x9a5d[16]](_0x708exe)})});_0x708exc[_0x9a5d[50]](_0x9a5d[51],function(_0x708exd){console[_0x9a5d[53]](_0x9a5d[52]);FaxMessage[_0x9a5d[55]]({where:{uniqueid:_0x708exd[_0x9a5d[54]]}})[_0x9a5d[45]](function(_0x708ex10){if(_0x708ex10){_0x708ex10[_0x9a5d[46]](_0x708exd)}})[_0x9a5d[17]](function(_0x708exe){console[_0x9a5d[16]](_0x708exe)})});_0x708exc[_0x9a5d[50]](_0x9a5d[56],function(_0x708exd){if(_0x708exd[_0x9a5d[59]][_0x9a5d[58]](_0x9a5d[57])){FaxMessage[_0x9a5d[55]]({where:{uniqueid:_0x708exd[_0x9a5d[54]]}})[_0x9a5d[45]](function(_0x708ex10){if(_0x708ex10){console[_0x9a5d[53]](_0x9a5d[60],_0x9a5d[18],_0x708exd[_0x9a5d[61]]);_0x708ex10[_0x9a5d[46]]({status:_0x708exd[_0x9a5d[61]]== _0x9a5d[62]?_0x9a5d[62]:_0x9a5d[63]})}})[_0x9a5d[17]](function(_0x708exe){console[_0x9a5d[16]](_0x708exe)})}else {if(_0x708exd[_0x9a5d[59]][_0x9a5d[58]](_0x9a5d[64])){FaxMessage[_0x9a5d[55]]({where:{uniqueid:_0x708exd[_0x9a5d[54]]}})[_0x9a5d[45]](function(_0x708ex10){if(_0x708ex10){console[_0x9a5d[53]](_0x9a5d[60],_0x9a5d[16],_0x708exd[_0x9a5d[61]]);_0x708ex10[_0x9a5d[46]]({error:_0x708exd[_0x9a5d[61]]})}})[_0x9a5d[17]](function(_0x708exe){console[_0x9a5d[16]](_0x708exe)})}else {if(_0x708exd[_0x9a5d[59]][_0x9a5d[58]](_0x9a5d[65])){FaxMessage[_0x9a5d[55]]({where:{uniqueid:_0x708exd[_0x9a5d[54]]}})[_0x9a5d[45]](function(_0x708ex10){if(_0x708ex10){console[_0x9a5d[53]](_0x9a5d[60],_0x9a5d[66],_0x708exd[_0x9a5d[61]]);_0x708ex10[_0x9a5d[46]]({laststatus:_0x708exd[_0x9a5d[61]]})}})[_0x9a5d[17]](function(_0x708exe){console[_0x9a5d[16]](_0x708exe)})}}}});_0x708exc[_0x9a5d[50]](_0x9a5d[67],function(_0x708exd){if(_0x708exd[_0x9a5d[67]]=== _0x9a5d[68]){FaxMessage[_0x9a5d[55]]({where:{uuid:_0x708exd[_0x9a5d[70]]}})[_0x9a5d[45]](function(_0x708ex10){if(_0x708ex10){_0x708exd[_0x9a5d[18]]= _0x9a5d[69];_0x708ex10[_0x9a5d[46]](_0x708exd)}})[_0x9a5d[17]](function(_0x708exe){console[_0x9a5d[16]](_0x708exe)})}});_0x708exc[_0x9a5d[50]](_0x9a5d[57],function(_0x708exd){FaxMessage[_0x9a5d[55]]({where:{uniqueid:_0x708exd[_0x9a5d[54]]}})[_0x9a5d[45]](function(_0x708ex10){if(_0x708ex10){console[_0x9a5d[53]](_0x9a5d[71],_0x708exd[_0x9a5d[54]],_0x708exd[_0x9a5d[18]]);_0x708ex10[_0x9a5d[46]]({operation:_0x708exd[_0x9a5d[72]],laststatus:_0x708exd[_0x9a5d[18]]})}})[_0x9a5d[17]](function(_0x708exe){console[_0x9a5d[16]](_0x708exe)})});require(_0x9a5d[73])[_0x9a5d[14]](_0x708exc)} \ No newline at end of file diff --git a/server/config/history/history.js b/server/config/history/history.js index 2e3f620..38253b4 100644 --- a/server/config/history/history.js +++ b/server/config/history/history.js @@ -1,131 +1 @@ -'use strict'; - - -var sequelize = require('../../models').sequelize; -var moment = require('moment'); -var async = require('async'); - -var ReportMove = require('./reportMove'); -var Models = require('../../models'); -var HistoryModels = require('../../models').history; -var moment = require('moment'); - -var defaultCondition = { - where: { - createdAt: { - $lte: moment().format("YYYY-MM-DD HH:mm:ss") - } - }, - raw: true -}; - -module.exports = function(CronJob) { - - // Every 1 Minute - var job = new CronJob({ - cronTime: '0 59 23 * * *', - // cronTime: '* * * * *', - onTick: function() { - console.log('Moving data into history...'); - - return Promise - .all([]) - .then(ReportMove.move(Models.ReportIntegration, HistoryModels.ReportIntegrationHistory)) - .then(ReportMove.move(Models.ReportCall, HistoryModels.ReportCallHistory)) - .then(ReportMove.move(Models.ReportSquareDetail, HistoryModels.ReportSquareDetailHistory)) - .then(ReportMove.move(Models.ReportTigerDial, HistoryModels.ReportTigerDialHistory)) - .then(ReportMove.move(Models.ReportDial, HistoryModels.ReportDialHistory)) - .then(ReportMove.move(Models.ReportCallTransfer, HistoryModels.ReportCallTransferHistory)) - .then(ReportMove.move(Models.ReportAgent, HistoryModels.ReportAgentHistory, { - reason: { - $ne: null - } - })) - .then(ReportMove.move(Models.ReportMember, HistoryModels.ReportMemberHistory, { - exitAt: { - $ne: null - } - })) - .then(ReportMove.move(Models.ReportQueue, HistoryModels.ReportQueueHistory, { - queuecallerleaveAt: { - $ne: null - } - })) - .then(ReportMove.move(Models.ReportChat, HistoryModels.ReportChatHistory, { - reason: { - $ne: null - } - })) - .then(ReportMove.move(Models.ReportChatSession, HistoryModels.ReportChatSessionHistory, { - leaveAt: { - $ne: null - } - })) - .then(ReportMove.move(Models.ReportChatRoom, HistoryModels.ReportChatRoomHistory, { - leaveAt: { - $ne: null - } - })) - .then(ReportMove.move(Models.ReportMail, HistoryModels.ReportMailHistory, { - reason: { - $ne: null - } - })) - // .then(ReportMove.move(Models.ReportMailSession, HistoryModels.ReportMailSessionHistory, { - // leaveAt: { - // $ne: null - // } - // })) - .then(ReportMove.move(Models.ReportMailRoom, HistoryModels.ReportMailRoomHistory, { - leaveAt: { - $ne: null - } - })) - .then(ReportMove.move(Models.ReportSms, HistoryModels.ReportSmsHistory, { - reason: { - $ne: null - } - })) - .then(ReportMove.move(Models.ReportSmsSession, HistoryModels.ReportSmsSessionHistory, { - leaveAt: { - $ne: null - } - })) - .then(ReportMove.move(Models.ReportSquare, HistoryModels.ReportSquareHistory, { - leaveAt: { - $ne: null - } - })) - .then(ReportMove.move(Models.ReportFax, HistoryModels.ReportFaxHistory, { - reason: { - $ne: null - } - })) - .then(ReportMove.move(Models.ReportFaxSession, HistoryModels.ReportFaxSessionHistory, { - leaveAt: { - $ne: null - } - })) - .then(ReportMove.move(Models.ReportFaxRoom, HistoryModels.ReportFaxRoomHistory, { - leaveAt: { - $ne: null - } - })) - .then(ReportMove.move(Models.ReportOpenchannel, HistoryModels.ReportOpenchannelHistory, { - reason: { - $ne: null - } - })) - .then(ReportMove.move(Models.ReportOpenchannelSession, HistoryModels.ReportOpenchannelSessionHistory, { - leaveAt: { - $ne: null - } - })) - .catch(function(err) { - console.error(err); - }); - } - }); - - job.start(); -} +var _0xa592=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x6D\x6F\x6D\x65\x6E\x74","\x61\x73\x79\x6E\x63","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x4D\x6F\x76\x65","\x68\x69\x73\x74\x6F\x72\x79","\x59\x59\x59\x59\x2D\x4D\x4D\x2D\x44\x44\x20\x48\x48\x3A\x6D\x6D\x3A\x73\x73","\x66\x6F\x72\x6D\x61\x74","\x65\x78\x70\x6F\x72\x74\x73","\x30\x20\x35\x39\x20\x32\x33\x20\x2A\x20\x2A\x20\x2A","\x4D\x6F\x76\x69\x6E\x67\x20\x64\x61\x74\x61\x20\x69\x6E\x74\x6F\x20\x68\x69\x73\x74\x6F\x72\x79\x2E\x2E\x2E","\x6C\x6F\x67","\x65\x72\x72\x6F\x72","\x63\x61\x74\x63\x68","\x6D\x6F\x76\x65","\x74\x68\x65\x6E","\x61\x6C\x6C","\x73\x74\x61\x72\x74"];_0xa592[0];var sequelize=require(_0xa592[2])[_0xa592[1]];var moment=require(_0xa592[3]);var async=require(_0xa592[4]);var ReportMove=require(_0xa592[5]);var Models=require(_0xa592[2]);var HistoryModels=require(_0xa592[2])[_0xa592[6]];var moment=require(_0xa592[3]);var defaultCondition={where:{createdAt:{$lte:moment()[_0xa592[8]](_0xa592[7])}},raw:true};module[_0xa592[9]]= function(_0x6440x8){var _0x6440x9= new _0x6440x8({cronTime:_0xa592[10],onTick:function(){console[_0xa592[12]](_0xa592[11]);return Promise[_0xa592[17]]([])[_0xa592[16]](ReportMove[_0xa592[15]](Models.ReportIntegration,HistoryModels.ReportIntegrationHistory))[_0xa592[16]](ReportMove[_0xa592[15]](Models.ReportCall,HistoryModels.ReportCallHistory))[_0xa592[16]](ReportMove[_0xa592[15]](Models.ReportSquareDetail,HistoryModels.ReportSquareDetailHistory))[_0xa592[16]](ReportMove[_0xa592[15]](Models.ReportTigerDial,HistoryModels.ReportTigerDialHistory))[_0xa592[16]](ReportMove[_0xa592[15]](Models.ReportDial,HistoryModels.ReportDialHistory))[_0xa592[16]](ReportMove[_0xa592[15]](Models.ReportCallTransfer,HistoryModels.ReportCallTransferHistory))[_0xa592[16]](ReportMove[_0xa592[15]](Models.ReportAgent,HistoryModels.ReportAgentHistory,{reason:{$ne:null}}))[_0xa592[16]](ReportMove[_0xa592[15]](Models.ReportMember,HistoryModels.ReportMemberHistory,{exitAt:{$ne:null}}))[_0xa592[16]](ReportMove[_0xa592[15]](Models.ReportQueue,HistoryModels.ReportQueueHistory,{queuecallerleaveAt:{$ne:null}}))[_0xa592[16]](ReportMove[_0xa592[15]](Models.ReportChat,HistoryModels.ReportChatHistory,{reason:{$ne:null}}))[_0xa592[16]](ReportMove[_0xa592[15]](Models.ReportChatSession,HistoryModels.ReportChatSessionHistory,{leaveAt:{$ne:null}}))[_0xa592[16]](ReportMove[_0xa592[15]](Models.ReportChatRoom,HistoryModels.ReportChatRoomHistory,{leaveAt:{$ne:null}}))[_0xa592[16]](ReportMove[_0xa592[15]](Models.ReportMail,HistoryModels.ReportMailHistory,{reason:{$ne:null}}))[_0xa592[16]](ReportMove[_0xa592[15]](Models.ReportMailRoom,HistoryModels.ReportMailRoomHistory,{leaveAt:{$ne:null}}))[_0xa592[16]](ReportMove[_0xa592[15]](Models.ReportSms,HistoryModels.ReportSmsHistory,{reason:{$ne:null}}))[_0xa592[16]](ReportMove[_0xa592[15]](Models.ReportSmsSession,HistoryModels.ReportSmsSessionHistory,{leaveAt:{$ne:null}}))[_0xa592[16]](ReportMove[_0xa592[15]](Models.ReportSquare,HistoryModels.ReportSquareHistory,{leaveAt:{$ne:null}}))[_0xa592[16]](ReportMove[_0xa592[15]](Models.ReportFax,HistoryModels.ReportFaxHistory,{reason:{$ne:null}}))[_0xa592[16]](ReportMove[_0xa592[15]](Models.ReportFaxSession,HistoryModels.ReportFaxSessionHistory,{leaveAt:{$ne:null}}))[_0xa592[16]](ReportMove[_0xa592[15]](Models.ReportFaxRoom,HistoryModels.ReportFaxRoomHistory,{leaveAt:{$ne:null}}))[_0xa592[16]](ReportMove[_0xa592[15]](Models.ReportOpenchannel,HistoryModels.ReportOpenchannelHistory,{reason:{$ne:null}}))[_0xa592[16]](ReportMove[_0xa592[15]](Models.ReportOpenchannelSession,HistoryModels.ReportOpenchannelSessionHistory,{leaveAt:{$ne:null}}))[_0xa592[14]](function(_0x6440xa){console[_0xa592[13]](_0x6440xa)})}});_0x6440x9[_0xa592[18]]()} \ No newline at end of file diff --git a/server/config/history/reportMove.js b/server/config/history/reportMove.js index de5d2c8..f572f42 100644 --- a/server/config/history/reportMove.js +++ b/server/config/history/reportMove.js @@ -1,50 +1 @@ -'use strict'; - -var _ = require('lodash'); -var moment = require('moment'); -var sequelize = require('../../models').sequelize; -var util = require('util'); - -exports.move = function(Report, ReportHistory, where) { - var _items; - var _where = { - createdAt: { - $lte: moment().format("YYYY-MM-DD HH:mm:ss") - } - }; - - return function() { - return sequelize.transaction(function(t) { - return Report - .findAll({ - where: where ? _.merge(_where, where) : _where, - raw: true - }) - .then(function(items) { - _items = items; - return ReportHistory - .bulkCreate(items, { - individualHooks: true, - transaction: t - }); - }) - .then(function() { - return Report - .destroy({ - where: { - id: _.map(_items, 'id') - } - }, { - individualHooks: true, - transaction: t - }); - }); - }) - .then(function() { - console.log(util.format('Moving %s - DONE', Report.tableName)); - }) - .catch(function(err) { - console.error(util.format('Moving %s error: %s.', Report.tableName, _.map(err.errors, 'message').join('; '))); - }); - } -} +var _0x4f55=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x6D\x6F\x6D\x65\x6E\x74","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x75\x74\x69\x6C","\x6D\x6F\x76\x65","\x59\x59\x59\x59\x2D\x4D\x4D\x2D\x44\x44\x20\x48\x48\x3A\x6D\x6D\x3A\x73\x73","\x66\x6F\x72\x6D\x61\x74","\x4D\x6F\x76\x69\x6E\x67\x20\x25\x73\x20\x65\x72\x72\x6F\x72\x3A\x20\x25\x73\x2E","\x74\x61\x62\x6C\x65\x4E\x61\x6D\x65","\x3B\x20","\x6A\x6F\x69\x6E","\x65\x72\x72\x6F\x72\x73","\x6D\x65\x73\x73\x61\x67\x65","\x6D\x61\x70","\x65\x72\x72\x6F\x72","\x63\x61\x74\x63\x68","\x4D\x6F\x76\x69\x6E\x67\x20\x25\x73\x20\x2D\x20\x44\x4F\x4E\x45","\x6C\x6F\x67","\x74\x68\x65\x6E","\x69\x64","\x64\x65\x73\x74\x72\x6F\x79","\x62\x75\x6C\x6B\x43\x72\x65\x61\x74\x65","\x6D\x65\x72\x67\x65","\x66\x69\x6E\x64\x41\x6C\x6C","\x74\x72\x61\x6E\x73\x61\x63\x74\x69\x6F\x6E"];_0x4f55[0];var _=require(_0x4f55[1]);var moment=require(_0x4f55[2]);var sequelize=require(_0x4f55[4])[_0x4f55[3]];var util=require(_0x4f55[5]);exports[_0x4f55[6]]= function(_0xb1c5x5,_0xb1c5x6,_0xb1c5x7){var _0xb1c5x8;var _0xb1c5x9={createdAt:{$lte:moment()[_0x4f55[8]](_0x4f55[7])}};return function(){return sequelize[_0x4f55[26]](function(_0xb1c5xb){return _0xb1c5x5[_0x4f55[25]]({where:_0xb1c5x7?_[_0x4f55[24]](_0xb1c5x9,_0xb1c5x7):_0xb1c5x9,raw:true})[_0x4f55[20]](function(_0xb1c5xc){_0xb1c5x8= _0xb1c5xc;return _0xb1c5x6[_0x4f55[23]](_0xb1c5xc,{individualHooks:true,transaction:_0xb1c5xb})})[_0x4f55[20]](function(){return _0xb1c5x5[_0x4f55[22]]({where:{id:_[_0x4f55[15]](_0xb1c5x8,_0x4f55[21])}},{individualHooks:true,transaction:_0xb1c5xb})})})[_0x4f55[20]](function(){console[_0x4f55[19]](util[_0x4f55[8]](_0x4f55[18],_0xb1c5x5[_0x4f55[10]]))})[_0x4f55[17]](function(_0xb1c5xa){console[_0x4f55[16]](util[_0x4f55[8]](_0x4f55[9],_0xb1c5x5[_0x4f55[10]],_[_0x4f55[15]](_0xb1c5xa[_0x4f55[13]],_0x4f55[14])[_0x4f55[12]](_0x4f55[11])))})}} \ No newline at end of file diff --git a/server/config/imap/imap.js b/server/config/imap/imap.js index 93bfa0d..4df2ac2 100644 --- a/server/config/imap/imap.js +++ b/server/config/imap/imap.js @@ -1,105 +1 @@ -'use strict'; - -var util = require('util'); -var path = require('path'); - -var _ = require('lodash'); -var Promise = require('bluebird'); -var ImapListener = require("mail-listener2"); -var writeFile = Promise.promisify(require("fs").writeFile); - -var config = require('../environment'); - -var Server = require('../../models').MailServerIn; -var Room = require('../../models').MailRoom; -var Message = require('../../models').MailMessage; -var Account = require('../../models').MailAccount; -var Attachment = require('../../models').MailAttachment; - -var imap; -var timeout; - -process - .on('close', function(code) { - console.log(util.format('IMAP SERVER %s EXITED WITH CODE %s, PROCESS ID: %s ', process.argv[3], code, process.pid)); - }) - .on('error', function(err) { - console.error(err); - }); - -console.log(util.format('IMAP SERVER %s STARTING, PROCESS ID: %s ', process.argv[3], process.pid)); - -process.send({ - type: 'state', - state: 'CONNECTING' -}); - -function onSave(server) { - imap = new ImapListener({ - username: server.username, - password: server.password, - host: server.host, - port: server.port, - tls: server.ssl, - tlsOptions: { - rejectUnauthorized: false - }, - mailbox: server.mailbox, // mailbox to monitor - searchFilter: [server.filter], // the search filter being used after an IDLE notification has been retrieved - markSeen: true, // all fetched email willbe marked as seen and not fetched next time - fetchUnreadOnStart: true, // use it only if you want to get all unread email on lib start. Default is `false`,, - connTimeout: server.connTimeout * 1000, // *1000 because there are set and get on the model - authTimeout: server.authTimeout * 1000, // *1000 because there are set and get on the model - keepalive: server.keepalive - }) - .on('server:connected', function() { - console.log(util.format('IMAP SERVER %s CONNECTED, PROCESS ID: %s ', server.username, process.pid)); - - process.send({ - type: 'state', - state: 'CONNECTED' - }); - }) - .on('server:disconnected', function(err) { - console.error(util.format('IMAP SERVER %s DISCONNECTED, PROCESS ID: %s ', server.username, process.pid), err); - - imap.stop(); - imap = null; - - process.send({ - type: 'state', - state: 'DISCONNECTED' - }); - }) - .on("error", function(err) { - console.error(util.format('IMAP SERVER %s ERRROR, PROCESS ID: %s ', server.username, process.pid), err); - - process.send({ - type: 'state', - state: 'ERROR', - source: JSON.stringify(err) - }); - }) - .on("mail", function(msg, seqno, attributes) { - console.log(util.format('IMAP SERVER %s NEW MSG FROM %s ', process.argv[3], _.map(msg.from, 'address').join(';'))); - - msg.type = 'msg'; - msg.mailServerInId = imap.mailServerInId; - msg.mailAccountId = imap.mailAccountId; - process.send(msg); - }); - - imap.mailServerInId = server.id; - imap.mailAccountId = server.MailAccountId; - - imap.start(); -} - -Server - .findById(process.argv[2]) - .then(function(server) { - onSave(server); - }) - .catch(function(err) { - console.error(err); - }); +var _0x2b95=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x75\x74\x69\x6C","\x70\x61\x74\x68","\x6C\x6F\x64\x61\x73\x68","\x62\x6C\x75\x65\x62\x69\x72\x64","\x6D\x61\x69\x6C\x2D\x6C\x69\x73\x74\x65\x6E\x65\x72\x32","\x77\x72\x69\x74\x65\x46\x69\x6C\x65","\x66\x73","\x70\x72\x6F\x6D\x69\x73\x69\x66\x79","\x2E\x2E\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x4D\x61\x69\x6C\x53\x65\x72\x76\x65\x72\x49\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x4D\x61\x69\x6C\x52\x6F\x6F\x6D","\x4D\x61\x69\x6C\x4D\x65\x73\x73\x61\x67\x65","\x4D\x61\x69\x6C\x41\x63\x63\x6F\x75\x6E\x74","\x4D\x61\x69\x6C\x41\x74\x74\x61\x63\x68\x6D\x65\x6E\x74","\x65\x72\x72\x6F\x72","\x6F\x6E","\x63\x6C\x6F\x73\x65","\x49\x4D\x41\x50\x20\x53\x45\x52\x56\x45\x52\x20\x25\x73\x20\x45\x58\x49\x54\x45\x44\x20\x57\x49\x54\x48\x20\x43\x4F\x44\x45\x20\x25\x73\x2C\x20\x50\x52\x4F\x43\x45\x53\x53\x20\x49\x44\x3A\x20\x25\x73\x20","\x61\x72\x67\x76","\x70\x69\x64","\x66\x6F\x72\x6D\x61\x74","\x6C\x6F\x67","\x49\x4D\x41\x50\x20\x53\x45\x52\x56\x45\x52\x20\x25\x73\x20\x53\x54\x41\x52\x54\x49\x4E\x47\x2C\x20\x50\x52\x4F\x43\x45\x53\x53\x20\x49\x44\x3A\x20\x25\x73\x20","\x73\x74\x61\x74\x65","\x43\x4F\x4E\x4E\x45\x43\x54\x49\x4E\x47","\x73\x65\x6E\x64","\x6D\x61\x69\x6C","\x49\x4D\x41\x50\x20\x53\x45\x52\x56\x45\x52\x20\x25\x73\x20\x4E\x45\x57\x20\x4D\x53\x47\x20\x46\x52\x4F\x4D\x20\x25\x73\x20","\x3B","\x6A\x6F\x69\x6E","\x66\x72\x6F\x6D","\x61\x64\x64\x72\x65\x73\x73","\x6D\x61\x70","\x74\x79\x70\x65","\x6D\x73\x67","\x6D\x61\x69\x6C\x53\x65\x72\x76\x65\x72\x49\x6E\x49\x64","\x6D\x61\x69\x6C\x41\x63\x63\x6F\x75\x6E\x74\x49\x64","\x49\x4D\x41\x50\x20\x53\x45\x52\x56\x45\x52\x20\x25\x73\x20\x45\x52\x52\x52\x4F\x52\x2C\x20\x50\x52\x4F\x43\x45\x53\x53\x20\x49\x44\x3A\x20\x25\x73\x20","\x75\x73\x65\x72\x6E\x61\x6D\x65","\x45\x52\x52\x4F\x52","\x73\x74\x72\x69\x6E\x67\x69\x66\x79","\x73\x65\x72\x76\x65\x72\x3A\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74\x65\x64","\x49\x4D\x41\x50\x20\x53\x45\x52\x56\x45\x52\x20\x25\x73\x20\x44\x49\x53\x43\x4F\x4E\x4E\x45\x43\x54\x45\x44\x2C\x20\x50\x52\x4F\x43\x45\x53\x53\x20\x49\x44\x3A\x20\x25\x73\x20","\x73\x74\x6F\x70","\x44\x49\x53\x43\x4F\x4E\x4E\x45\x43\x54\x45\x44","\x73\x65\x72\x76\x65\x72\x3A\x63\x6F\x6E\x6E\x65\x63\x74\x65\x64","\x49\x4D\x41\x50\x20\x53\x45\x52\x56\x45\x52\x20\x25\x73\x20\x43\x4F\x4E\x4E\x45\x43\x54\x45\x44\x2C\x20\x50\x52\x4F\x43\x45\x53\x53\x20\x49\x44\x3A\x20\x25\x73\x20","\x43\x4F\x4E\x4E\x45\x43\x54\x45\x44","\x70\x61\x73\x73\x77\x6F\x72\x64","\x68\x6F\x73\x74","\x70\x6F\x72\x74","\x73\x73\x6C","\x6D\x61\x69\x6C\x62\x6F\x78","\x66\x69\x6C\x74\x65\x72","\x63\x6F\x6E\x6E\x54\x69\x6D\x65\x6F\x75\x74","\x61\x75\x74\x68\x54\x69\x6D\x65\x6F\x75\x74","\x6B\x65\x65\x70\x61\x6C\x69\x76\x65","\x69\x64","\x4D\x61\x69\x6C\x41\x63\x63\x6F\x75\x6E\x74\x49\x64","\x73\x74\x61\x72\x74","\x63\x61\x74\x63\x68","\x74\x68\x65\x6E","\x66\x69\x6E\x64\x42\x79\x49\x64"];_0x2b95[0];var util=require(_0x2b95[1]);var path=require(_0x2b95[2]);var _=require(_0x2b95[3]);var Promise=require(_0x2b95[4]);var ImapListener=require(_0x2b95[5]);var writeFile=Promise[_0x2b95[8]](require(_0x2b95[7])[_0x2b95[6]]);var config=require(_0x2b95[9]);var Server=require(_0x2b95[11])[_0x2b95[10]];var Room=require(_0x2b95[11])[_0x2b95[12]];var Message=require(_0x2b95[11])[_0x2b95[13]];var Account=require(_0x2b95[11])[_0x2b95[14]];var Attachment=require(_0x2b95[11])[_0x2b95[15]];var imap;var timeout;process[_0x2b95[17]](_0x2b95[18],function(_0x9892x10){console[_0x2b95[23]](util[_0x2b95[22]](_0x2b95[19],process[_0x2b95[20]][3],_0x9892x10,process[_0x2b95[21]]))})[_0x2b95[17]](_0x2b95[16],function(_0x9892xf){console[_0x2b95[16]](_0x9892xf)});console[_0x2b95[23]](util[_0x2b95[22]](_0x2b95[24],process[_0x2b95[20]][3],process[_0x2b95[21]]));process[_0x2b95[27]]({type:_0x2b95[25],state:_0x2b95[26]});function onSave(_0x9892x12){imap= new ImapListener({username:_0x9892x12[_0x2b95[40]],password:_0x9892x12[_0x2b95[50]],host:_0x9892x12[_0x2b95[51]],port:_0x9892x12[_0x2b95[52]],tls:_0x9892x12[_0x2b95[53]],tlsOptions:{rejectUnauthorized:false},mailbox:_0x9892x12[_0x2b95[54]],searchFilter:[_0x9892x12[_0x2b95[55]]],markSeen:true,fetchUnreadOnStart:true,connTimeout:_0x9892x12[_0x2b95[56]]* 1000,authTimeout:_0x9892x12[_0x2b95[57]]* 1000,keepalive:_0x9892x12[_0x2b95[58]]})[_0x2b95[17]](_0x2b95[47],function(){console[_0x2b95[23]](util[_0x2b95[22]](_0x2b95[48],_0x9892x12[_0x2b95[40]],process[_0x2b95[21]]));process[_0x2b95[27]]({type:_0x2b95[25],state:_0x2b95[49]})})[_0x2b95[17]](_0x2b95[43],function(_0x9892xf){console[_0x2b95[16]](util[_0x2b95[22]](_0x2b95[44],_0x9892x12[_0x2b95[40]],process[_0x2b95[21]]),_0x9892xf);imap[_0x2b95[45]]();imap= null;process[_0x2b95[27]]({type:_0x2b95[25],state:_0x2b95[46]})})[_0x2b95[17]](_0x2b95[16],function(_0x9892xf){console[_0x2b95[16]](util[_0x2b95[22]](_0x2b95[39],_0x9892x12[_0x2b95[40]],process[_0x2b95[21]]),_0x9892xf);process[_0x2b95[27]]({type:_0x2b95[25],state:_0x2b95[41],source:JSON[_0x2b95[42]](_0x9892xf)})})[_0x2b95[17]](_0x2b95[28],function(_0x9892x13,_0x9892x14,_0x9892x15){console[_0x2b95[23]](util[_0x2b95[22]](_0x2b95[29],process[_0x2b95[20]][3],_[_0x2b95[34]](_0x9892x13[_0x2b95[32]],_0x2b95[33])[_0x2b95[31]](_0x2b95[30])));_0x9892x13[_0x2b95[35]]= _0x2b95[36];_0x9892x13[_0x2b95[37]]= imap[_0x2b95[37]];_0x9892x13[_0x2b95[38]]= imap[_0x2b95[38]];process[_0x2b95[27]](_0x9892x13)});imap[_0x2b95[37]]= _0x9892x12[_0x2b95[59]];imap[_0x2b95[38]]= _0x9892x12[_0x2b95[60]];imap[_0x2b95[61]]()}Server[_0x2b95[64]](process[_0x2b95[20]][2])[_0x2b95[63]](function(_0x9892x12){onSave(_0x9892x12)})[_0x2b95[62]](function(_0x9892xf){console[_0x2b95[16]](_0x9892xf)}) \ No newline at end of file diff --git a/server/config/imap/index.js b/server/config/imap/index.js index 053702c..df5e954 100644 --- a/server/config/imap/index.js +++ b/server/config/imap/index.js @@ -1,600 +1 @@ -'use strict'; - -const _ = require('lodash'); -const util = require('util'); -const path = require('path'); -const cp = require('child_process'); -const ms = require('../../models').MailServerIn; -const msg = require('../../models').MailMessage; -const Room = require('../../models').MailRoom; -const Status = require('../../models').MailRoomStatus; -const Message = require('../../models').MailMessage; -const Account = require('../../models').MailAccount; -const Contact = require('../../models').Contact; -const Company = require('../../models').Company; -const Attachment = require('../../models').MailAttachment; -const ReportMail = require('../../models').ReportMail; -const ReportMailRoom = require('../../models').ReportMailRoom; -const ReportMailSession = require('../../models').ReportMailSession; -const Promise = require('bluebird'); -const moment = require('moment'); -const open = Promise.promisify(require("fs").open); -const close = Promise.promisify(require("fs").close); -const write = Promise.promisify(require("fs").write); -const config = require('../environment'); -var mailaccounts; -var Scheduler = require('../routing/scheduler'); -var Util = require('../util'); - -function handleMessage(msg) { - var _mRoom; - var _mMessage; - var _mAccount; - var _mContact; - var _mCompany; - var _mFrom, _mTo, _mCc, _mBcc; - - if (msg.inReplyTo) { - return Message - .findOne({ - where: { - messageId: msg.inReplyTo[0] - } - }) - .then(function(mailMessageParent) { - if (mailMessageParent) { - return mailMessageParent - .getMailRoom() - .then(function(mailRoom) { - _mRoom = mailRoom; - if (mailRoom.status !== 'CLOSED') { - return _mRoom - .update({ - status: 'OPEN', - openReason: 'system' - }, { - individualHooks: true - }) - .then(function() { - return Account - .findById(msg.mailAccountId) - .then(function(mailAccount) { - _mAccount = mailAccount; - - if (_mAccount.ListId) { - return Company - .findOne({ - where: { - emailDomain: msg.from[0].address.split('@')[1] - } - }) - .then(function(company) { - return Contact - .findOrCreate({ - where: { - email: msg.from[0].address, - }, - defaults: { - email: msg.from[0].address, - firstName: msg.from[0].name || msg.from[0].address.split('@')[0], - ListId: _mAccount.ListId, - CompanyId: company ? company.id : null - } - }); - }); - - } else { - return []; - } - }) - .spread(function(contact) { - _mContact = contact; - }); - }) - - } else { - - return Account - .findById(msg.mailAccountId) - .then(function(mailAccount) { - _mAccount = mailAccount; - - if (_mAccount.ListId) { - return Company - .findOne({ - where: { - emailDomain: msg.from[0].address.split('@')[1] - } - }) - .then(function(company) { - return Contact - .findOrCreate({ - where: { - email: msg.from[0].address, - }, - defaults: { - email: msg.from[0].address, - firstName: msg.from[0].name || msg.from[0].address.split('@')[0], - ListId: _mAccount.ListId, - CompanyId: company ? company.id : null - } - }); - }); - - } else { - return []; - } - }) - .spread(function(contact) { - _mContact = contact; - return Room - .create({ - subject: msg.subject, - from: _.map(msg.from, 'address').join(';'), - account: _mAccount.name, - attachment: msg.attachments && msg.attachments.length, - lastEvent: 'RECEIVED', - lastEventAt: moment().format("YYYY-MM-DD HH:mm:ss"), - arrivedAt: moment().format("YYYY-MM-DD HH:mm:ss"), - MailAccountId: _mAccount.id, - ParentId: mailRoom.id - }); - }) - .then(function(mailRoom) { - _mRoom = mailRoom; - }); - } - }); - } else { - return Account - .findById(msg.mailAccountId) - .then(function(mailAccount) { - _mAccount = mailAccount; - if (_mAccount.ListId) { - return Company - .findOne({ - where: { - emailDomain: msg.from[0].address.split('@')[1] - } - }) - .then(function(company) { - return Contact - .findOrCreate({ - where: { - email: msg.from[0].address, - }, - defaults: { - email: msg.from[0].address, - firstName: msg.from[0].name || msg.from[0].address.split('@')[0], - ListId: _mAccount.ListId, - CompanyId: company ? company.id : null - } - }); - }); - - } else { - return []; - } - }) - .spread(function(contact) { - _mContact = contact; - return Room - .create({ - subject: msg.subject, - from: _.map(msg.from, 'address').join(';'), - account: _mAccount.name, - attachment: msg.attachments && msg.attachments.length, - lastEvent: 'RECEIVED', - lastEventAt: moment().format("YYYY-MM-DD HH:mm:ss"), - arrivedAt: moment().format("YYYY-MM-DD HH:mm:ss"), - MailAccountId: _mAccount.id - }); - }) - .then(function(mailRoom) { - _mRoom = mailRoom; - }) - } - }) - .then(function() { - return _mRoom - .update({ - lastEvent: 'RECEIVED', - mailIn: ++_mRoom.mailIn - }); - }) - .then(function(mailRoom) { - - return Message - .create({ - fromId: _mContact ? _mContact.id : null, - messageId: msg.messageId, - status: 'RECEIVED', - subject: msg.subject, - from: _.map(msg.from, 'address'), - to: msg.to ? _.map(msg.to, 'address') : [], - cc: msg.cc ? _.map(msg.cc, 'address') : [], - bcc: msg.bcc ? _.map(msg.bcc, 'address') : [], - text: msg.text || null, - MailRoomId: _mRoom.id, - accountName: _mAccount.name, - accountId: _mAccount.id - }); - }) - .then(function(mailMessage) { - var _attachments = []; - var _mailMessage = mailMessage; - - var scheduler = new Scheduler({ - channel: 'mail', - uniqueid: util.format('%s.%s', moment().unix(), _mRoom.id), - subject: msg.subject, - messageid: _mailMessage.id, - roomid: _mRoom.id, - accountid: _mAccount.id, - accountname: _mAccount.name, - accountaddress: _mAccount.address, - from: msg.from[0].address, - cc: msg.cc ? _.map(msg.cc, 'address') : [] - }, _mailMessage.dataValues); - scheduler.init(); - - if (msg.attachments && msg.attachments.length) { - msg.attachments.forEach(function(attachment) { - var _basename = 'download_' + Math.random(32); - var _fd; - _attachments.push( - Attachment - .create({ - name: attachment.fileName, - basename: _basename, - path: path.join(config.root, 'server', 'files', 'attachments', '/', _basename), - type: attachment.contentType, - size: attachment.length, - MailMessageId: _mailMessage.id - }) - .then(function(mailAttachment) { - return open(mailAttachment.path, 'w'); - }) - .then(function(fd) { - _fd = fd; - return write(_fd, new Buffer(attachment.content.data), 0, attachment.length); - }) - .then(function() { - return close(_fd); - }) - .then(function() { - console.log('File', attachment.fileName, 'properly saved.'); - }) - .catch(function(err) { - console.error(err); - })); - }); - } - - return Promise - .all(_attachments); - }) - .catch(function(err) { - console.error(err); - }); - - } else { - - return Account - .findById(msg.mailAccountId) - .then(function(mailAccount) { - _mAccount = mailAccount; - - if (_mAccount.ListId) { - return Company - .findOne({ - where: { - emailDomain: msg.from[0].address.split('@')[1] - } - }) - .then(function(company) { - return Contact - .findOrCreate({ - where: { - email: msg.from[0].address, - }, - defaults: { - email: msg.from[0].address, - firstName: msg.from[0].name || msg.from[0].address.split('@')[0], - ListId: _mAccount.ListId, - CompanyId: company ? company.id : null - } - }); - }); - } else { - return []; - } - }) - .spread(function(contact) { - _mContact = contact; - - return Room - .create({ - mailIn: 1, - account: _mAccount.name, - subject: msg.subject, - from: _.map(msg.from, 'address').join(';'), - status: 'NEW', - lastEvent: 'RECEIVED', - lastEventAt: moment().format("YYYY-MM-DD HH:mm:ss"), - arrivedAt: moment().format("YYYY-MM-DD HH:mm:ss"), - attachment: msg.attachments && msg.attachments.length, - MailMessages: [{ - messageId: msg.messageId, - subject: msg.subject, - from: _.map(msg.from, 'address'), - fromId: _mContact ? _mContact.id : null, - to: msg.to ? _.map(msg.to, 'address') : [], - cc: msg.cc ? _.map(msg.cc, 'address') : [], - bcc: msg.bcc ? _.map(msg.bcc, 'address') : [], - status: 'RECEIVED', - text: msg.text || null, - accountName: _mAccount.name, - accountId: _mAccount.id - }], - MailAccountId: msg.mailAccountId - }, { - include: [{ - model: Message - }] - }); - }) - .then(function(room) { - var _attachments = []; - var _room = room; - - var scheduler = new Scheduler({ - channel: 'mail', - uniqueid: util.format('%s.%s', moment().unix(), _room.id), - subject: msg.subject, - messageid: _room.MailMessages[0].id, - roomid: _room.id, - accountid: _mAccount.id, - accountname: _mAccount.name, - accountaddress: _mAccount.address, - from: msg.from[0].address, - cc: msg.cc ? _.map(msg.cc, 'address') : [] - }, _room.MailMessages[0].dataValues); - scheduler.init(); - - if (msg.attachments && msg.attachments.length) { - msg.attachments.forEach(function(attachment) { - var _basename = 'download_' + Math.random(32); - var _fd; - - _attachments.push( - Attachment - .create({ - name: attachment.fileName, - basename: _basename, - path: path.join(config.root, 'server', 'files', 'attachments', '/', _basename), - type: attachment.contentType, - size: attachment.length, - MailMessageId: _room.MailMessages[0].id - }) - .then(function(mailAttachment) { - return open(mailAttachment.path, 'w'); - }) - .then(function(fd) { - _fd = fd; - return write(_fd, new Buffer(attachment.content.data), 0, attachment.length); - }) - .then(function() { - return close(_fd); - }) - .then(function() { - console.log('File', attachment.fileName, 'properly saved.'); - }) - .catch(function(err) { - console.error(err); - })); - }); - } - - return Promise - .all(_attachments); - }) - .catch(function(err) { - console.error(err); - }); - } -} - -function handleState(id, data) { - return ms - .findById(id) - .then(function(server) { - return server - .update({ - state: data.state, - source: data.source || null - }); - }) - .catch(function(err) { - console.error(err); - }); -} - -function fork(id, username) { - return cp - .fork(__dirname + '/imap', [id, username]) - .on('message', function(data) { - switch (data.type) { - case 'msg': - handleMessage(data); - break; - - case 'state': - handleState(id, data) - break; - - default: - } - }) - .on('close', function(code) { - console.log(util.format('IMAP SERVER %s EXITED WITH CODE %s', username, code)); - }) - .on('error', function(err) { - console.error(err); - }); -} - -function execRequest(doc, method, url) { - Util.sendRequest(doc, method, url) - .then(function(res) { - console.log('request successeful!'); - - }) - .catch(function(err) { - console.log('request failed!'); - - }) -} - -function webhook(doc, account, hook) { - var _Account = account; - switch (hook) { - case 'accept': - if (_Account.acceptMethod && _Account.acceptUrl) { - console.log('Mail account <' + _Account.name + '> executing accept webhook'); - execRequest(doc.dataValues, _Account.acceptMethod, _Account.acceptUrl); - } - if (_Account.actions.length) { - _.forEach(_Account.actions, function(action) { - if (action.enabled) { - Util.execAction(action, doc); - } - }) - } - break; - case 'reject': - if (_Account.rejectMethod && _Account.rejectUrl) { - console.log('Mail account <' + _Account.name + '> executing reject webhook'); - execRequest(doc.dataValues, _Account.rejectMethod, _Account.rejectUrl); - } - break; - case 'close': - if (_Account.closeMethod && _Account.closeUrl) { - console.log('Mail account <' + _Account.name + '> executing close webhook'); - execRequest(doc.dataValues, _Account.closeMethod, _Account.closeUrl); - } - break; - default: - console.log('Webhook not recognized'); - } -} - -function synch(mailaccounts) { - Account.afterDestroy(function(doc) { - _.remove(mailaccounts, { - id: doc.id - }); - }); - Account.afterCreate(function(doc) { - console.log('Mail account: ' + doc.name + ' Create'); - mailaccounts.push(doc); - }); - Account.afterUpdate(function(doc) { - var oldItem = _.find(mailaccounts, { - id: doc.id - }); - if (oldItem) { - console.log('Mail account: ' + oldItem.name + ' Update'); - _.merge(oldItem, doc); - } else { - mailaccounts.unshift(doc); - } - }); -} - -module.exports = function() { - var childs = {}; - var timeout; - - process.on('exit', function(code) { - for (var key in childs) { - if (childs[key]) { - childs[key].kill(); - } - } - }); - Account - .findAll() - .then(function(accounts) { - mailaccounts = accounts; - synch(mailaccounts); - ReportMail.afterUpdate(function(doc) { - var account = _.find(mailaccounts, { - id: parseInt(doc.accountid) - }); - if (account && doc.changed('connectid')) { - webhook(doc, account, 'accept'); - } - if (account && doc.changed('rejectedAt')) { - webhook(doc, account, 'reject'); - } - }); - Room.afterUpdate(function(doc) { - var account = _.find(mailaccounts, { - id: doc.MailAccountId - }); - if (account && doc.changed('status') && doc.status === 'CLOSED') { - webhook(doc, account, 'close'); - } - }) - }) - .catch(function(err) { - console.error(err); - }); - ms.afterCreate(function(server) { - childs[server.id] = fork(server.id, server.username); - }); - - ms.afterUpdate(function(server) { - if (childs[server.id]) { - if (server.changed('state') || server.changed('source')) { - console.log(util.format('IMAP SERVER %s UPDATED, PROCESS ID: %s ', server.id, childs[server.id].pid)); - clearTimeout(timeout); - - switch (server.state) { - case 'DISCONNECTED': - timeout = setTimeout(function() { - childs[server.id] = fork(server.id, server.username); - }, 10000); - - break; - default: - } - - } else { - childs[server.id].kill(); - childs[server.id] = null; - childs[server.id] = fork(server.id, server.username); - } - } - }); - - ms.afterDestroy(function(server) { - if (childs[server.id]) { - console.log(util.format('IMAP SERVER %s DESTROYED, PROCESS ID: %s ', server.id, childs[server.id].pid)); - - childs[server.id].kill(); - childs[server.id] = null; - } - }); - - ms.findAll() - .then(function(servers) { - servers.forEach(function(server) { - childs[server.id] = fork(server.id, server.username); - }); - }) - .catch(function(err) { - console.error(err); - }); -}; +var _0xafe4=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x75\x74\x69\x6C","\x70\x61\x74\x68","\x63\x68\x69\x6C\x64\x5F\x70\x72\x6F\x63\x65\x73\x73","\x4D\x61\x69\x6C\x53\x65\x72\x76\x65\x72\x49\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x4D\x61\x69\x6C\x4D\x65\x73\x73\x61\x67\x65","\x4D\x61\x69\x6C\x52\x6F\x6F\x6D","\x4D\x61\x69\x6C\x52\x6F\x6F\x6D\x53\x74\x61\x74\x75\x73","\x4D\x61\x69\x6C\x41\x63\x63\x6F\x75\x6E\x74","\x43\x6F\x6E\x74\x61\x63\x74","\x43\x6F\x6D\x70\x61\x6E\x79","\x4D\x61\x69\x6C\x41\x74\x74\x61\x63\x68\x6D\x65\x6E\x74","\x52\x65\x70\x6F\x72\x74\x4D\x61\x69\x6C","\x52\x65\x70\x6F\x72\x74\x4D\x61\x69\x6C\x52\x6F\x6F\x6D","\x52\x65\x70\x6F\x72\x74\x4D\x61\x69\x6C\x53\x65\x73\x73\x69\x6F\x6E","\x62\x6C\x75\x65\x62\x69\x72\x64","\x6D\x6F\x6D\x65\x6E\x74","\x6F\x70\x65\x6E","\x66\x73","\x70\x72\x6F\x6D\x69\x73\x69\x66\x79","\x63\x6C\x6F\x73\x65","\x77\x72\x69\x74\x65","\x2E\x2E\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x2E\x2E\x2F\x72\x6F\x75\x74\x69\x6E\x67\x2F\x73\x63\x68\x65\x64\x75\x6C\x65\x72","\x2E\x2E\x2F\x75\x74\x69\x6C","\x69\x6E\x52\x65\x70\x6C\x79\x54\x6F","\x65\x72\x72\x6F\x72","\x63\x61\x74\x63\x68","\x6D\x61\x69\x6C","\x25\x73\x2E\x25\x73","\x75\x6E\x69\x78","\x69\x64","\x66\x6F\x72\x6D\x61\x74","\x73\x75\x62\x6A\x65\x63\x74","\x6E\x61\x6D\x65","\x61\x64\x64\x72\x65\x73\x73","\x66\x72\x6F\x6D","\x63\x63","\x6D\x61\x70","\x64\x61\x74\x61\x56\x61\x6C\x75\x65\x73","\x69\x6E\x69\x74","\x61\x74\x74\x61\x63\x68\x6D\x65\x6E\x74\x73","\x6C\x65\x6E\x67\x74\x68","\x64\x6F\x77\x6E\x6C\x6F\x61\x64\x5F","\x72\x61\x6E\x64\x6F\x6D","\x46\x69\x6C\x65","\x66\x69\x6C\x65\x4E\x61\x6D\x65","\x70\x72\x6F\x70\x65\x72\x6C\x79\x20\x73\x61\x76\x65\x64\x2E","\x6C\x6F\x67","\x74\x68\x65\x6E","\x64\x61\x74\x61","\x63\x6F\x6E\x74\x65\x6E\x74","\x77","\x72\x6F\x6F\x74","\x73\x65\x72\x76\x65\x72","\x66\x69\x6C\x65\x73","\x2F","\x6A\x6F\x69\x6E","\x63\x6F\x6E\x74\x65\x6E\x74\x54\x79\x70\x65","\x63\x72\x65\x61\x74\x65","\x70\x75\x73\x68","\x66\x6F\x72\x45\x61\x63\x68","\x61\x6C\x6C","\x6D\x65\x73\x73\x61\x67\x65\x49\x64","\x52\x45\x43\x45\x49\x56\x45\x44","\x74\x6F","\x62\x63\x63","\x74\x65\x78\x74","\x6D\x61\x69\x6C\x49\x6E","\x75\x70\x64\x61\x74\x65","\x73\x74\x61\x74\x75\x73","\x43\x4C\x4F\x53\x45\x44","\x73\x70\x72\x65\x61\x64","\x4C\x69\x73\x74\x49\x64","\x40","\x73\x70\x6C\x69\x74","\x66\x69\x6E\x64\x4F\x72\x43\x72\x65\x61\x74\x65","\x66\x69\x6E\x64\x4F\x6E\x65","\x6D\x61\x69\x6C\x41\x63\x63\x6F\x75\x6E\x74\x49\x64","\x66\x69\x6E\x64\x42\x79\x49\x64","\x4F\x50\x45\x4E","\x73\x79\x73\x74\x65\x6D","\x3B","\x59\x59\x59\x59\x2D\x4D\x4D\x2D\x44\x44\x20\x48\x48\x3A\x6D\x6D\x3A\x73\x73","\x67\x65\x74\x4D\x61\x69\x6C\x52\x6F\x6F\x6D","\x4D\x61\x69\x6C\x4D\x65\x73\x73\x61\x67\x65\x73","\x4E\x45\x57","\x73\x74\x61\x74\x65","\x73\x6F\x75\x72\x63\x65","\x6F\x6E","\x49\x4D\x41\x50\x20\x53\x45\x52\x56\x45\x52\x20\x25\x73\x20\x45\x58\x49\x54\x45\x44\x20\x57\x49\x54\x48\x20\x43\x4F\x44\x45\x20\x25\x73","\x6D\x65\x73\x73\x61\x67\x65","\x6D\x73\x67","\x74\x79\x70\x65","\x2F\x69\x6D\x61\x70","\x66\x6F\x72\x6B","\x72\x65\x71\x75\x65\x73\x74\x20\x66\x61\x69\x6C\x65\x64\x21","\x72\x65\x71\x75\x65\x73\x74\x20\x73\x75\x63\x63\x65\x73\x73\x65\x66\x75\x6C\x21","\x73\x65\x6E\x64\x52\x65\x71\x75\x65\x73\x74","\x61\x63\x63\x65\x70\x74\x4D\x65\x74\x68\x6F\x64","\x61\x63\x63\x65\x70\x74\x55\x72\x6C","\x4D\x61\x69\x6C\x20\x61\x63\x63\x6F\x75\x6E\x74\x20\x3C","\x3E\x20\x65\x78\x65\x63\x75\x74\x69\x6E\x67\x20\x61\x63\x63\x65\x70\x74\x20\x77\x65\x62\x68\x6F\x6F\x6B","\x61\x63\x74\x69\x6F\x6E\x73","\x65\x6E\x61\x62\x6C\x65\x64","\x65\x78\x65\x63\x41\x63\x74\x69\x6F\x6E","\x61\x63\x63\x65\x70\x74","\x72\x65\x6A\x65\x63\x74\x4D\x65\x74\x68\x6F\x64","\x72\x65\x6A\x65\x63\x74\x55\x72\x6C","\x3E\x20\x65\x78\x65\x63\x75\x74\x69\x6E\x67\x20\x72\x65\x6A\x65\x63\x74\x20\x77\x65\x62\x68\x6F\x6F\x6B","\x72\x65\x6A\x65\x63\x74","\x63\x6C\x6F\x73\x65\x4D\x65\x74\x68\x6F\x64","\x63\x6C\x6F\x73\x65\x55\x72\x6C","\x3E\x20\x65\x78\x65\x63\x75\x74\x69\x6E\x67\x20\x63\x6C\x6F\x73\x65\x20\x77\x65\x62\x68\x6F\x6F\x6B","\x57\x65\x62\x68\x6F\x6F\x6B\x20\x6E\x6F\x74\x20\x72\x65\x63\x6F\x67\x6E\x69\x7A\x65\x64","\x72\x65\x6D\x6F\x76\x65","\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79","\x4D\x61\x69\x6C\x20\x61\x63\x63\x6F\x75\x6E\x74\x3A\x20","\x20\x43\x72\x65\x61\x74\x65","\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x66\x69\x6E\x64","\x20\x55\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x75\x6E\x73\x68\x69\x66\x74","\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x65\x78\x70\x6F\x72\x74\x73","\x65\x78\x69\x74","\x6B\x69\x6C\x6C","\x61\x63\x63\x6F\x75\x6E\x74\x69\x64","\x63\x6F\x6E\x6E\x65\x63\x74\x69\x64","\x63\x68\x61\x6E\x67\x65\x64","\x72\x65\x6A\x65\x63\x74\x65\x64\x41\x74","\x4D\x61\x69\x6C\x41\x63\x63\x6F\x75\x6E\x74\x49\x64","\x66\x69\x6E\x64\x41\x6C\x6C","\x75\x73\x65\x72\x6E\x61\x6D\x65","\x49\x4D\x41\x50\x20\x53\x45\x52\x56\x45\x52\x20\x25\x73\x20\x55\x50\x44\x41\x54\x45\x44\x2C\x20\x50\x52\x4F\x43\x45\x53\x53\x20\x49\x44\x3A\x20\x25\x73\x20","\x70\x69\x64","\x44\x49\x53\x43\x4F\x4E\x4E\x45\x43\x54\x45\x44","\x49\x4D\x41\x50\x20\x53\x45\x52\x56\x45\x52\x20\x25\x73\x20\x44\x45\x53\x54\x52\x4F\x59\x45\x44\x2C\x20\x50\x52\x4F\x43\x45\x53\x53\x20\x49\x44\x3A\x20\x25\x73\x20"];_0xafe4[0];const _=require(_0xafe4[1]);const util=require(_0xafe4[2]);const path=require(_0xafe4[3]);const cp=require(_0xafe4[4]);const ms=require(_0xafe4[6])[_0xafe4[5]];const msg=require(_0xafe4[6])[_0xafe4[7]];const Room=require(_0xafe4[6])[_0xafe4[8]];const Status=require(_0xafe4[6])[_0xafe4[9]];const Message=require(_0xafe4[6])[_0xafe4[7]];const Account=require(_0xafe4[6])[_0xafe4[10]];const Contact=require(_0xafe4[6])[_0xafe4[11]];const Company=require(_0xafe4[6])[_0xafe4[12]];const Attachment=require(_0xafe4[6])[_0xafe4[13]];const ReportMail=require(_0xafe4[6])[_0xafe4[14]];const ReportMailRoom=require(_0xafe4[6])[_0xafe4[15]];const ReportMailSession=require(_0xafe4[6])[_0xafe4[16]];const Promise=require(_0xafe4[17]);const moment=require(_0xafe4[18]);const open=Promise[_0xafe4[21]](require(_0xafe4[20])[_0xafe4[19]]);const close=Promise[_0xafe4[21]](require(_0xafe4[20])[_0xafe4[22]]);const write=Promise[_0xafe4[21]](require(_0xafe4[20])[_0xafe4[23]]);const config=require(_0xafe4[24]);var mailaccounts;var Scheduler=require(_0xafe4[25]);var Util=require(_0xafe4[26]);function handleMessage(msg){var _0x3683x1b;var _0x3683x1c;var _0x3683x1d;var _0x3683x1e;var _0x3683x1f;var _0x3683x20,_0x3683x21,_0x3683x22,_0x3683x23;if(msg[_0xafe4[27]]){return Message[_0xafe4[79]]({where:{messageId:msg[_0xafe4[27]][0]}})[_0xafe4[51]](function(_0x3683x2f){if(_0x3683x2f){return _0x3683x2f[_0xafe4[86]]()[_0xafe4[51]](function(_0x3683x2e){_0x3683x1b= _0x3683x2e;if(_0x3683x2e[_0xafe4[72]]!== _0xafe4[73]){return _0x3683x1b[_0xafe4[71]]({status:_0xafe4[82],openReason:_0xafe4[83]},{individualHooks:true})[_0xafe4[51]](function(){return Account[_0xafe4[81]](msg[_0xafe4[80]])[_0xafe4[51]](function(_0x3683x31){_0x3683x1d= _0x3683x31;if(_0x3683x1d[_0xafe4[75]]){return Company[_0xafe4[79]]({where:{emailDomain:msg[_0xafe4[38]][0][_0xafe4[37]][_0xafe4[77]](_0xafe4[76])[1]}})[_0xafe4[51]](function(_0x3683x32){return Contact[_0xafe4[78]]({where:{email:msg[_0xafe4[38]][0][_0xafe4[37]]},defaults:{email:msg[_0xafe4[38]][0][_0xafe4[37]],firstName:msg[_0xafe4[38]][0][_0xafe4[36]]|| msg[_0xafe4[38]][0][_0xafe4[37]][_0xafe4[77]](_0xafe4[76])[0],ListId:_0x3683x1d[_0xafe4[75]],CompanyId:_0x3683x32?_0x3683x32[_0xafe4[33]]:null}})})}else {return []}})[_0xafe4[74]](function(_0x3683x30){_0x3683x1e= _0x3683x30})})}else {return Account[_0xafe4[81]](msg[_0xafe4[80]])[_0xafe4[51]](function(_0x3683x31){_0x3683x1d= _0x3683x31;if(_0x3683x1d[_0xafe4[75]]){return Company[_0xafe4[79]]({where:{emailDomain:msg[_0xafe4[38]][0][_0xafe4[37]][_0xafe4[77]](_0xafe4[76])[1]}})[_0xafe4[51]](function(_0x3683x32){return Contact[_0xafe4[78]]({where:{email:msg[_0xafe4[38]][0][_0xafe4[37]]},defaults:{email:msg[_0xafe4[38]][0][_0xafe4[37]],firstName:msg[_0xafe4[38]][0][_0xafe4[36]]|| msg[_0xafe4[38]][0][_0xafe4[37]][_0xafe4[77]](_0xafe4[76])[0],ListId:_0x3683x1d[_0xafe4[75]],CompanyId:_0x3683x32?_0x3683x32[_0xafe4[33]]:null}})})}else {return []}})[_0xafe4[74]](function(_0x3683x30){_0x3683x1e= _0x3683x30;return Room[_0xafe4[61]]({subject:msg[_0xafe4[35]],from:_[_0xafe4[40]](msg[_0xafe4[38]],_0xafe4[37])[_0xafe4[59]](_0xafe4[84]),account:_0x3683x1d[_0xafe4[36]],attachment:msg[_0xafe4[43]]&& msg[_0xafe4[43]][_0xafe4[44]],lastEvent:_0xafe4[66],lastEventAt:moment()[_0xafe4[34]](_0xafe4[85]),arrivedAt:moment()[_0xafe4[34]](_0xafe4[85]),MailAccountId:_0x3683x1d[_0xafe4[33]],ParentId:_0x3683x2e[_0xafe4[33]]})})[_0xafe4[51]](function(_0x3683x2e){_0x3683x1b= _0x3683x2e})}})}else {return Account[_0xafe4[81]](msg[_0xafe4[80]])[_0xafe4[51]](function(_0x3683x31){_0x3683x1d= _0x3683x31;if(_0x3683x1d[_0xafe4[75]]){return Company[_0xafe4[79]]({where:{emailDomain:msg[_0xafe4[38]][0][_0xafe4[37]][_0xafe4[77]](_0xafe4[76])[1]}})[_0xafe4[51]](function(_0x3683x32){return Contact[_0xafe4[78]]({where:{email:msg[_0xafe4[38]][0][_0xafe4[37]]},defaults:{email:msg[_0xafe4[38]][0][_0xafe4[37]],firstName:msg[_0xafe4[38]][0][_0xafe4[36]]|| msg[_0xafe4[38]][0][_0xafe4[37]][_0xafe4[77]](_0xafe4[76])[0],ListId:_0x3683x1d[_0xafe4[75]],CompanyId:_0x3683x32?_0x3683x32[_0xafe4[33]]:null}})})}else {return []}})[_0xafe4[74]](function(_0x3683x30){_0x3683x1e= _0x3683x30;return Room[_0xafe4[61]]({subject:msg[_0xafe4[35]],from:_[_0xafe4[40]](msg[_0xafe4[38]],_0xafe4[37])[_0xafe4[59]](_0xafe4[84]),account:_0x3683x1d[_0xafe4[36]],attachment:msg[_0xafe4[43]]&& msg[_0xafe4[43]][_0xafe4[44]],lastEvent:_0xafe4[66],lastEventAt:moment()[_0xafe4[34]](_0xafe4[85]),arrivedAt:moment()[_0xafe4[34]](_0xafe4[85]),MailAccountId:_0x3683x1d[_0xafe4[33]]})})[_0xafe4[51]](function(_0x3683x2e){_0x3683x1b= _0x3683x2e})}})[_0xafe4[51]](function(){return _0x3683x1b[_0xafe4[71]]({lastEvent:_0xafe4[66],mailIn:++_0x3683x1b[_0xafe4[70]]})})[_0xafe4[51]](function(_0x3683x2e){return Message[_0xafe4[61]]({fromId:_0x3683x1e?_0x3683x1e[_0xafe4[33]]:null,messageId:msg[_0xafe4[65]],status:_0xafe4[66],subject:msg[_0xafe4[35]],from:_[_0xafe4[40]](msg[_0xafe4[38]],_0xafe4[37]),to:msg[_0xafe4[67]]?_[_0xafe4[40]](msg[_0xafe4[67]],_0xafe4[37]):[],cc:msg[_0xafe4[39]]?_[_0xafe4[40]](msg[_0xafe4[39]],_0xafe4[37]):[],bcc:msg[_0xafe4[68]]?_[_0xafe4[40]](msg[_0xafe4[68]],_0xafe4[37]):[],text:msg[_0xafe4[69]]|| null,MailRoomId:_0x3683x1b[_0xafe4[33]],accountName:_0x3683x1d[_0xafe4[36]],accountId:_0x3683x1d[_0xafe4[33]]})})[_0xafe4[51]](function(_0x3683x25){var _0x3683x26=[];var _0x3683x27=_0x3683x25;var _0x3683x28= new Scheduler({channel:_0xafe4[30],uniqueid:util[_0xafe4[34]](_0xafe4[31],moment()[_0xafe4[32]](),_0x3683x1b[_0xafe4[33]]),subject:msg[_0xafe4[35]],messageid:_0x3683x27[_0xafe4[33]],roomid:_0x3683x1b[_0xafe4[33]],accountid:_0x3683x1d[_0xafe4[33]],accountname:_0x3683x1d[_0xafe4[36]],accountaddress:_0x3683x1d[_0xafe4[37]],from:msg[_0xafe4[38]][0][_0xafe4[37]],cc:msg[_0xafe4[39]]?_[_0xafe4[40]](msg[_0xafe4[39]],_0xafe4[37]):[]},_0x3683x27[_0xafe4[41]]);_0x3683x28[_0xafe4[42]]();if(msg[_0xafe4[43]]&& msg[_0xafe4[43]][_0xafe4[44]]){msg[_0xafe4[43]][_0xafe4[63]](function(_0x3683x29){var _0x3683x2a=_0xafe4[45]+ Math[_0xafe4[46]](32);var _0x3683x2b;_0x3683x26[_0xafe4[62]](Attachment[_0xafe4[61]]({name:_0x3683x29[_0xafe4[48]],basename:_0x3683x2a,path:path[_0xafe4[59]](config[_0xafe4[55]],_0xafe4[56],_0xafe4[57],_0xafe4[43],_0xafe4[58],_0x3683x2a),type:_0x3683x29[_0xafe4[60]],size:_0x3683x29[_0xafe4[44]],MailMessageId:_0x3683x27[_0xafe4[33]]})[_0xafe4[51]](function(_0x3683x2d){return open(_0x3683x2d[_0xafe4[3]],_0xafe4[54])})[_0xafe4[51]](function(_0x3683x2c){_0x3683x2b= _0x3683x2c;return write(_0x3683x2b, new Buffer(_0x3683x29[_0xafe4[53]][_0xafe4[52]]),0,_0x3683x29[_0xafe4[44]])})[_0xafe4[51]](function(){return close(_0x3683x2b)})[_0xafe4[51]](function(){console[_0xafe4[50]](_0xafe4[47],_0x3683x29[_0xafe4[48]],_0xafe4[49])})[_0xafe4[29]](function(_0x3683x24){console[_0xafe4[28]](_0x3683x24)}))})};return Promise[_0xafe4[64]](_0x3683x26)})[_0xafe4[29]](function(_0x3683x24){console[_0xafe4[28]](_0x3683x24)})}else {return Account[_0xafe4[81]](msg[_0xafe4[80]])[_0xafe4[51]](function(_0x3683x31){_0x3683x1d= _0x3683x31;if(_0x3683x1d[_0xafe4[75]]){return Company[_0xafe4[79]]({where:{emailDomain:msg[_0xafe4[38]][0][_0xafe4[37]][_0xafe4[77]](_0xafe4[76])[1]}})[_0xafe4[51]](function(_0x3683x32){return Contact[_0xafe4[78]]({where:{email:msg[_0xafe4[38]][0][_0xafe4[37]]},defaults:{email:msg[_0xafe4[38]][0][_0xafe4[37]],firstName:msg[_0xafe4[38]][0][_0xafe4[36]]|| msg[_0xafe4[38]][0][_0xafe4[37]][_0xafe4[77]](_0xafe4[76])[0],ListId:_0x3683x1d[_0xafe4[75]],CompanyId:_0x3683x32?_0x3683x32[_0xafe4[33]]:null}})})}else {return []}})[_0xafe4[74]](function(_0x3683x30){_0x3683x1e= _0x3683x30;return Room[_0xafe4[61]]({mailIn:1,account:_0x3683x1d[_0xafe4[36]],subject:msg[_0xafe4[35]],from:_[_0xafe4[40]](msg[_0xafe4[38]],_0xafe4[37])[_0xafe4[59]](_0xafe4[84]),status:_0xafe4[88],lastEvent:_0xafe4[66],lastEventAt:moment()[_0xafe4[34]](_0xafe4[85]),arrivedAt:moment()[_0xafe4[34]](_0xafe4[85]),attachment:msg[_0xafe4[43]]&& msg[_0xafe4[43]][_0xafe4[44]],MailMessages:[{messageId:msg[_0xafe4[65]],subject:msg[_0xafe4[35]],from:_[_0xafe4[40]](msg[_0xafe4[38]],_0xafe4[37]),fromId:_0x3683x1e?_0x3683x1e[_0xafe4[33]]:null,to:msg[_0xafe4[67]]?_[_0xafe4[40]](msg[_0xafe4[67]],_0xafe4[37]):[],cc:msg[_0xafe4[39]]?_[_0xafe4[40]](msg[_0xafe4[39]],_0xafe4[37]):[],bcc:msg[_0xafe4[68]]?_[_0xafe4[40]](msg[_0xafe4[68]],_0xafe4[37]):[],status:_0xafe4[66],text:msg[_0xafe4[69]]|| null,accountName:_0x3683x1d[_0xafe4[36]],accountId:_0x3683x1d[_0xafe4[33]]}],MailAccountId:msg[_0xafe4[80]]},{include:[{model:Message}]})})[_0xafe4[51]](function(_0x3683x33){var _0x3683x26=[];var _0x3683x34=_0x3683x33;var _0x3683x28= new Scheduler({channel:_0xafe4[30],uniqueid:util[_0xafe4[34]](_0xafe4[31],moment()[_0xafe4[32]](),_0x3683x34[_0xafe4[33]]),subject:msg[_0xafe4[35]],messageid:_0x3683x34[_0xafe4[87]][0][_0xafe4[33]],roomid:_0x3683x34[_0xafe4[33]],accountid:_0x3683x1d[_0xafe4[33]],accountname:_0x3683x1d[_0xafe4[36]],accountaddress:_0x3683x1d[_0xafe4[37]],from:msg[_0xafe4[38]][0][_0xafe4[37]],cc:msg[_0xafe4[39]]?_[_0xafe4[40]](msg[_0xafe4[39]],_0xafe4[37]):[]},_0x3683x34[_0xafe4[87]][0][_0xafe4[41]]);_0x3683x28[_0xafe4[42]]();if(msg[_0xafe4[43]]&& msg[_0xafe4[43]][_0xafe4[44]]){msg[_0xafe4[43]][_0xafe4[63]](function(_0x3683x29){var _0x3683x2a=_0xafe4[45]+ Math[_0xafe4[46]](32);var _0x3683x2b;_0x3683x26[_0xafe4[62]](Attachment[_0xafe4[61]]({name:_0x3683x29[_0xafe4[48]],basename:_0x3683x2a,path:path[_0xafe4[59]](config[_0xafe4[55]],_0xafe4[56],_0xafe4[57],_0xafe4[43],_0xafe4[58],_0x3683x2a),type:_0x3683x29[_0xafe4[60]],size:_0x3683x29[_0xafe4[44]],MailMessageId:_0x3683x34[_0xafe4[87]][0][_0xafe4[33]]})[_0xafe4[51]](function(_0x3683x2d){return open(_0x3683x2d[_0xafe4[3]],_0xafe4[54])})[_0xafe4[51]](function(_0x3683x2c){_0x3683x2b= _0x3683x2c;return write(_0x3683x2b, new Buffer(_0x3683x29[_0xafe4[53]][_0xafe4[52]]),0,_0x3683x29[_0xafe4[44]])})[_0xafe4[51]](function(){return close(_0x3683x2b)})[_0xafe4[51]](function(){console[_0xafe4[50]](_0xafe4[47],_0x3683x29[_0xafe4[48]],_0xafe4[49])})[_0xafe4[29]](function(_0x3683x24){console[_0xafe4[28]](_0x3683x24)}))})};return Promise[_0xafe4[64]](_0x3683x26)})[_0xafe4[29]](function(_0x3683x24){console[_0xafe4[28]](_0x3683x24)})}}function handleState(_0x3683x36,_0x3683x37){return ms[_0xafe4[81]](_0x3683x36)[_0xafe4[51]](function(_0x3683x38){return _0x3683x38[_0xafe4[71]]({state:_0x3683x37[_0xafe4[89]],source:_0x3683x37[_0xafe4[90]]|| null})})[_0xafe4[29]](function(_0x3683x24){console[_0xafe4[28]](_0x3683x24)})}function fork(_0x3683x36,_0x3683x3a){return cp[_0xafe4[97]](__dirname+ _0xafe4[96],[_0x3683x36,_0x3683x3a])[_0xafe4[91]](_0xafe4[93],function(_0x3683x37){switch(_0x3683x37[_0xafe4[95]]){case _0xafe4[94]:handleMessage(_0x3683x37);break;case _0xafe4[89]:handleState(_0x3683x36,_0x3683x37);break;default:}})[_0xafe4[91]](_0xafe4[22],function(_0x3683x3b){console[_0xafe4[50]](util[_0xafe4[34]](_0xafe4[92],_0x3683x3a,_0x3683x3b))})[_0xafe4[91]](_0xafe4[28],function(_0x3683x24){console[_0xafe4[28]](_0x3683x24)})}function execRequest(_0x3683x3d,_0x3683x3e,_0x3683x3f){Util[_0xafe4[100]](_0x3683x3d,_0x3683x3e,_0x3683x3f)[_0xafe4[51]](function(_0x3683x40){console[_0xafe4[50]](_0xafe4[99])})[_0xafe4[29]](function(_0x3683x24){console[_0xafe4[50]](_0xafe4[98])})}function webhook(_0x3683x3d,_0x3683x42,_0x3683x43){var _0x3683x44=_0x3683x42;switch(_0x3683x43){case _0xafe4[108]:if(_0x3683x44[_0xafe4[101]]&& _0x3683x44[_0xafe4[102]]){console[_0xafe4[50]](_0xafe4[103]+ _0x3683x44[_0xafe4[36]]+ _0xafe4[104]);execRequest(_0x3683x3d[_0xafe4[41]],_0x3683x44[_0xafe4[101]],_0x3683x44[_0xafe4[102]])};if(_0x3683x44[_0xafe4[105]][_0xafe4[44]]){_[_0xafe4[63]](_0x3683x44[_0xafe4[105]],function(_0x3683x45){if(_0x3683x45[_0xafe4[106]]){Util[_0xafe4[107]](_0x3683x45,_0x3683x3d)}})};break;case _0xafe4[112]:if(_0x3683x44[_0xafe4[109]]&& _0x3683x44[_0xafe4[110]]){console[_0xafe4[50]](_0xafe4[103]+ _0x3683x44[_0xafe4[36]]+ _0xafe4[111]);execRequest(_0x3683x3d[_0xafe4[41]],_0x3683x44[_0xafe4[109]],_0x3683x44[_0xafe4[110]])};break;case _0xafe4[22]:if(_0x3683x44[_0xafe4[113]]&& _0x3683x44[_0xafe4[114]]){console[_0xafe4[50]](_0xafe4[103]+ _0x3683x44[_0xafe4[36]]+ _0xafe4[115]);execRequest(_0x3683x3d[_0xafe4[41]],_0x3683x44[_0xafe4[113]],_0x3683x44[_0xafe4[114]])};break;default:console[_0xafe4[50]](_0xafe4[116])}}function synch(mailaccounts){Account[_0xafe4[118]](function(_0x3683x3d){_[_0xafe4[117]](mailaccounts,{id:_0x3683x3d[_0xafe4[33]]})});Account[_0xafe4[121]](function(_0x3683x3d){console[_0xafe4[50]](_0xafe4[119]+ _0x3683x3d[_0xafe4[36]]+ _0xafe4[120]);mailaccounts[_0xafe4[62]](_0x3683x3d)});Account[_0xafe4[126]](function(_0x3683x3d){var _0x3683x47=_[_0xafe4[122]](mailaccounts,{id:_0x3683x3d[_0xafe4[33]]});if(_0x3683x47){console[_0xafe4[50]](_0xafe4[119]+ _0x3683x47[_0xafe4[36]]+ _0xafe4[123]);_[_0xafe4[124]](_0x3683x47,_0x3683x3d)}else {mailaccounts[_0xafe4[125]](_0x3683x3d)}})}module[_0xafe4[127]]= function(){var _0x3683x48={};var _0x3683x49;process[_0xafe4[91]](_0xafe4[128],function(_0x3683x3b){for(var _0x3683x4a in _0x3683x48){if(_0x3683x48[_0x3683x4a]){_0x3683x48[_0x3683x4a][_0xafe4[129]]()}}});Account[_0xafe4[135]]()[_0xafe4[51]](function(_0x3683x4b){mailaccounts= _0x3683x4b;synch(mailaccounts);ReportMail[_0xafe4[126]](function(_0x3683x3d){var _0x3683x42=_[_0xafe4[122]](mailaccounts,{id:parseInt(_0x3683x3d[_0xafe4[130]])});if(_0x3683x42&& _0x3683x3d[_0xafe4[132]](_0xafe4[131])){webhook(_0x3683x3d,_0x3683x42,_0xafe4[108])};if(_0x3683x42&& _0x3683x3d[_0xafe4[132]](_0xafe4[133])){webhook(_0x3683x3d,_0x3683x42,_0xafe4[112])}});Room[_0xafe4[126]](function(_0x3683x3d){var _0x3683x42=_[_0xafe4[122]](mailaccounts,{id:_0x3683x3d[_0xafe4[134]]});if(_0x3683x42&& _0x3683x3d[_0xafe4[132]](_0xafe4[72])&& _0x3683x3d[_0xafe4[72]]=== _0xafe4[73]){webhook(_0x3683x3d,_0x3683x42,_0xafe4[22])}})})[_0xafe4[29]](function(_0x3683x24){console[_0xafe4[28]](_0x3683x24)});ms[_0xafe4[121]](function(_0x3683x38){_0x3683x48[_0x3683x38[_0xafe4[33]]]= fork(_0x3683x38[_0xafe4[33]],_0x3683x38[_0xafe4[136]])});ms[_0xafe4[126]](function(_0x3683x38){if(_0x3683x48[_0x3683x38[_0xafe4[33]]]){if(_0x3683x38[_0xafe4[132]](_0xafe4[89])|| _0x3683x38[_0xafe4[132]](_0xafe4[90])){console[_0xafe4[50]](util[_0xafe4[34]](_0xafe4[137],_0x3683x38[_0xafe4[33]],_0x3683x48[_0x3683x38[_0xafe4[33]]][_0xafe4[138]]));clearTimeout(_0x3683x49);switch(_0x3683x38[_0xafe4[89]]){case _0xafe4[139]:_0x3683x49= setTimeout(function(){_0x3683x48[_0x3683x38[_0xafe4[33]]]= fork(_0x3683x38[_0xafe4[33]],_0x3683x38[_0xafe4[136]])},10000);break;default:}}else {_0x3683x48[_0x3683x38[_0xafe4[33]]][_0xafe4[129]]();_0x3683x48[_0x3683x38[_0xafe4[33]]]= null;_0x3683x48[_0x3683x38[_0xafe4[33]]]= fork(_0x3683x38[_0xafe4[33]],_0x3683x38[_0xafe4[136]])}}});ms[_0xafe4[118]](function(_0x3683x38){if(_0x3683x48[_0x3683x38[_0xafe4[33]]]){console[_0xafe4[50]](util[_0xafe4[34]](_0xafe4[140],_0x3683x38[_0xafe4[33]],_0x3683x48[_0x3683x38[_0xafe4[33]]][_0xafe4[138]]));_0x3683x48[_0x3683x38[_0xafe4[33]]][_0xafe4[129]]();_0x3683x48[_0x3683x38[_0xafe4[33]]]= null}});ms[_0xafe4[135]]()[_0xafe4[51]](function(_0x3683x4c){_0x3683x4c[_0xafe4[63]](function(_0x3683x38){_0x3683x48[_0x3683x38[_0xafe4[33]]]= fork(_0x3683x38[_0xafe4[33]],_0x3683x38[_0xafe4[136]])})})[_0xafe4[29]](function(_0x3683x24){console[_0xafe4[28]](_0x3683x24)})} \ No newline at end of file diff --git a/server/config/integration.js b/server/config/integration.js index 8b87bc5..5549545 100644 --- a/server/config/integration.js +++ b/server/config/integration.js @@ -1,24 +1 @@ -'use strict'; - -var path = require('path'); -var fs = require('fs'); - -var Integration = require('../models').Integration; - -module.exports = function(io, ami) { - - Integration - .findAll() - .then(function(integrations) { - integrations.forEach(function(integration) { - var info = path.parse(integration.path); - var file = path.join(info.dir, info.name, integration.main); - if (fs.existsSync(file)) { - require(file)(io, ami); - } - }); - }) - .catch(function(err) { - console.error(err); - }); -}; +var _0x5e9b=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x70\x61\x74\x68","\x66\x73","\x49\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E","\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x65\x78\x70\x6F\x72\x74\x73","\x65\x72\x72\x6F\x72","\x63\x61\x74\x63\x68","\x70\x61\x72\x73\x65","\x64\x69\x72","\x6E\x61\x6D\x65","\x6D\x61\x69\x6E","\x6A\x6F\x69\x6E","\x65\x78\x69\x73\x74\x73\x53\x79\x6E\x63","\x66\x6F\x72\x45\x61\x63\x68","\x74\x68\x65\x6E","\x66\x69\x6E\x64\x41\x6C\x6C"];_0x5e9b[0];var path=require(_0x5e9b[1]);var fs=require(_0x5e9b[2]);var Integration=require(_0x5e9b[4])[_0x5e9b[3]];module[_0x5e9b[5]]= function(_0x8915x4,_0x8915x5){Integration[_0x5e9b[16]]()[_0x5e9b[15]](function(_0x8915x7){_0x8915x7[_0x5e9b[14]](function(_0x8915x8){var _0x8915x9=path[_0x5e9b[8]](_0x8915x8[_0x5e9b[1]]);var _0x8915xa=path[_0x5e9b[12]](_0x8915x9[_0x5e9b[9]],_0x8915x9[_0x5e9b[10]],_0x8915x8[_0x5e9b[11]]);if(fs[_0x5e9b[13]](_0x8915xa)){require(_0x8915xa)(_0x8915x4,_0x8915x5)}})})[_0x5e9b[7]](function(_0x8915x6){console[_0x5e9b[6]](_0x8915x6)})} \ No newline at end of file diff --git a/server/config/integrations/index.js b/server/config/integrations/index.js index 60ec65f..fabda17 100644 --- a/server/config/integrations/index.js +++ b/server/config/integrations/index.js @@ -1,87 +1 @@ -'use strict'; - -// Library -var _ = require('lodash'); -// Models -var IntegrationModel = require('../../models').Integration; -var Variable = require('../../models').Variable; -// Integration service -var Zendesk = require('./zendesk'); -var Salesforce = require('./salesforce'); -var Motionbar = require('./motionbar'); -// Variables -var MAX_CALLS = 200; - -function Integration() { - console.log('Trigger Integration Initialization...'); - - var zendesk = new Zendesk(); - var salesforce = new Salesforce(); - var motionbar = new Motionbar(); - - var activeIntegrations = []; - - IntegrationModel - .findAll({ - where: { - active: 1 - } - }) - .then(function(integrations) { - activeIntegrations = integrations; - synchIntegrations(activeIntegrations); - }); - - this.manageEvent = function(rule, doc, channel, subtype, variables) { - if (integrationIsActive(rule.data1, activeIntegrations)) { - switch (rule.data1) { - case 'zendesk': - zendesk.handleEvent(rule.data2, rule.data3, channel, subtype, doc, variables); - break; - case 'salesforce': - salesforce.handleEvent(rule.data2, rule.data3, channel, subtype, doc, variables); - break; - default: - console.log('Integration not recognized: ', rule.data1); - } - } - if (rule.action === 'motionbar') { - motionbar.handleEvent(rule, channel, doc, variables); - } - } -} - -function integrationIsActive(integration, active) { - var integratioNames = _.map(active, 'state'); - if (_.indexOf(integratioNames, integration) >= 0) { - return true; - } - return false; -} - -function synchIntegrations(active) { - IntegrationModel.afterUpdate(function(doc) { - if (doc.active) { - updateCollection(active, doc); - } else { - _.remove(active, { - id: doc.id - }); - } - console.log('After update, integrations are ', active.length); - }); -} - -function updateCollection(collection, doc) { - var oldItem = _.find(collection, { - id: doc.id - }); - var index = collection.indexOf(oldItem); - if (oldItem) { - _.merge(collection[index], doc); - } else { - collection.unshift(doc); - } -} - -module.exports = Integration; +var _0x3731=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x49\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x56\x61\x72\x69\x61\x62\x6C\x65","\x2E\x2F\x7A\x65\x6E\x64\x65\x73\x6B","\x2E\x2F\x73\x61\x6C\x65\x73\x66\x6F\x72\x63\x65","\x2E\x2F\x6D\x6F\x74\x69\x6F\x6E\x62\x61\x72","\x54\x72\x69\x67\x67\x65\x72\x20\x49\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x20\x49\x6E\x69\x74\x69\x61\x6C\x69\x7A\x61\x74\x69\x6F\x6E\x2E\x2E\x2E","\x6C\x6F\x67","\x74\x68\x65\x6E","\x66\x69\x6E\x64\x41\x6C\x6C","\x6D\x61\x6E\x61\x67\x65\x45\x76\x65\x6E\x74","\x64\x61\x74\x61\x31","\x64\x61\x74\x61\x32","\x64\x61\x74\x61\x33","\x68\x61\x6E\x64\x6C\x65\x45\x76\x65\x6E\x74","\x7A\x65\x6E\x64\x65\x73\x6B","\x73\x61\x6C\x65\x73\x66\x6F\x72\x63\x65","\x49\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x20\x6E\x6F\x74\x20\x72\x65\x63\x6F\x67\x6E\x69\x7A\x65\x64\x3A\x20","\x61\x63\x74\x69\x6F\x6E","\x6D\x6F\x74\x69\x6F\x6E\x62\x61\x72","\x73\x74\x61\x74\x65","\x6D\x61\x70","\x69\x6E\x64\x65\x78\x4F\x66","\x61\x63\x74\x69\x76\x65","\x69\x64","\x72\x65\x6D\x6F\x76\x65","\x41\x66\x74\x65\x72\x20\x75\x70\x64\x61\x74\x65\x2C\x20\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x73\x20\x61\x72\x65\x20","\x6C\x65\x6E\x67\x74\x68","\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x66\x69\x6E\x64","\x6D\x65\x72\x67\x65","\x75\x6E\x73\x68\x69\x66\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x3731[0];var _=require(_0x3731[1]);var IntegrationModel=require(_0x3731[3])[_0x3731[2]];var Variable=require(_0x3731[3])[_0x3731[4]];var Zendesk=require(_0x3731[5]);var Salesforce=require(_0x3731[6]);var Motionbar=require(_0x3731[7]);var MAX_CALLS=200;function Integration(){console[_0x3731[9]](_0x3731[8]);var _0xc4a8x9= new Zendesk();var _0xc4a8xa= new Salesforce();var _0xc4a8xb= new Motionbar();var _0xc4a8xc=[];IntegrationModel[_0x3731[11]]({where:{active:1}})[_0x3731[10]](function(_0xc4a8xd){_0xc4a8xc= _0xc4a8xd;synchIntegrations(_0xc4a8xc)});this[_0x3731[12]]= function(_0xc4a8xe,_0xc4a8xf,_0xc4a8x10,_0xc4a8x11,_0xc4a8x12){if(integrationIsActive(_0xc4a8xe[_0x3731[13]],_0xc4a8xc)){switch(_0xc4a8xe[_0x3731[13]]){case _0x3731[17]:_0xc4a8x9[_0x3731[16]](_0xc4a8xe[_0x3731[14]],_0xc4a8xe[_0x3731[15]],_0xc4a8x10,_0xc4a8x11,_0xc4a8xf,_0xc4a8x12);break;case _0x3731[18]:_0xc4a8xa[_0x3731[16]](_0xc4a8xe[_0x3731[14]],_0xc4a8xe[_0x3731[15]],_0xc4a8x10,_0xc4a8x11,_0xc4a8xf,_0xc4a8x12);break;default:console[_0x3731[9]](_0x3731[19],_0xc4a8xe[_0x3731[13]])}};if(_0xc4a8xe[_0x3731[20]]=== _0x3731[21]){_0xc4a8xb[_0x3731[16]](_0xc4a8xe,_0xc4a8x10,_0xc4a8xf,_0xc4a8x12)}}}function integrationIsActive(_0xc4a8x14,_0xc4a8x15){var _0xc4a8x16=_[_0x3731[23]](_0xc4a8x15,_0x3731[22]);if(_[_0x3731[24]](_0xc4a8x16,_0xc4a8x14)>= 0){return true};return false}function synchIntegrations(_0xc4a8x15){IntegrationModel[_0x3731[30]](function(_0xc4a8xf){if(_0xc4a8xf[_0x3731[25]]){updateCollection(_0xc4a8x15,_0xc4a8xf)}else {_[_0x3731[27]](_0xc4a8x15,{id:_0xc4a8xf[_0x3731[26]]})};console[_0x3731[9]](_0x3731[28],_0xc4a8x15[_0x3731[29]])})}function updateCollection(_0xc4a8x19,_0xc4a8xf){var _0xc4a8x1a=_[_0x3731[31]](_0xc4a8x19,{id:_0xc4a8xf[_0x3731[26]]});var _0xc4a8x1b=_0xc4a8x19[_0x3731[24]](_0xc4a8x1a);if(_0xc4a8x1a){_[_0x3731[32]](_0xc4a8x19[_0xc4a8x1b],_0xc4a8xf)}else {_0xc4a8x19[_0x3731[33]](_0xc4a8xf)}}module[_0x3731[34]]= Integration \ No newline at end of file diff --git a/server/config/integrations/motionbar.js b/server/config/integrations/motionbar.js index a8e6195..4f21ba9 100644 --- a/server/config/integrations/motionbar.js +++ b/server/config/integrations/motionbar.js @@ -1,101 +1 @@ -'use strict'; - -var _ = require('lodash'); -var util = require('util'); -var Mustache = require('mustache'); - -var ReportIntegration = require('../../models').ReportIntegration; -var Template = require('../../models').Template; - -function Motionbar() { - console.log('Motionbar integration initialization...'); -} - -Motionbar.prototype.handleEvent = function(rule, channel, data, variables) { - - if (!rule.data1 || !rule.data2) { - console.error('Passed parameters are not enough to manage Motionbar integration'); - return; - } - - // variables = _.reduce(variables, function(result, value, key) { - // result[value.name] = value.value; - // return result; - // }, {}); - delete data.id; - var mergedVars = _.merge(_.clone(data), variables); - - console.log('Type:', rule.data1); - - switch (rule.data1) { - case '0': - //POPUP - return Template - .findById(rule.data2) - .then(function(template) { - data.html = template.html ? Mustache.render(template.html, mergedVars) : 'Empty Template'; - data.subject = template.subject ? Mustache.render(template.subject.toString(), mergedVars) : 'No Title'; - data.integration = 'motionbar'; - data.eventChannel = channel; - data.exitStatus = 'success'; - data.integrationId = rule.data1; - return ReportIntegration.create(data); - }) - .then(function() { - console.log('[Motionbar] Popup created'); - }) - .catch(handleError(channel, data, rule.data1)); - case '1': - //URL - data.url = rule.data2 ? Mustache.render(rule.data2, mergedVars) : 'https://wiki.xcallymotion.com/'; - data.integration = 'motionbar'; - data.eventChannel = channel; - data.exitStatus = 'success'; - data.integrationId = rule.data1; - return ReportIntegration.create(data) - .then(function() { - console.log('[Motionbar] URL created'); - }) - .catch(handleError(channel, data, rule.data1)); - case '2': - //WINDOWS APPLICATION - data.app = rule.data2; - data.appdata = rule.data3 ? Mustache.render(rule.data3, mergedVars) : ''; - data.integration = 'motionbar'; - data.eventChannel = channel; - data.exitStatus = 'success'; - data.integrationId = rule.data1; - return ReportIntegration.create(data) - .then(function() { - console.log('[Motionbar] Windows Application opened'); - }) - .catch(handleError(channel, data, rule.data1)); - default: - console.log('[Motionbar] Type not recognized:', rule.data1); - } - -}; - -function handleError(channel, data, integrationId) { - return function(err) { - console.error('[Motionbar] Error in ticket creation'); - console.error('[Motionbar] Message:', err.message); - console.error('[Motionbar] Stack:', err.stack); - - data.integration = 'motionbar'; - data.eventChannel = channel; - data.exitStatus = 'failed'; - data.integrationId = integrationId; - ReportIntegration - .create(data) - .then(function() { - return; - }) - .catch(function(err) { - console.error('[Motionbar] Error in Report integration create'); - return; - }); - } -} - -module.exports = Motionbar; +var _0x241e=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x75\x74\x69\x6C","\x6D\x75\x73\x74\x61\x63\x68\x65","\x52\x65\x70\x6F\x72\x74\x49\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x54\x65\x6D\x70\x6C\x61\x74\x65","\x4D\x6F\x74\x69\x6F\x6E\x62\x61\x72\x20\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x20\x69\x6E\x69\x74\x69\x61\x6C\x69\x7A\x61\x74\x69\x6F\x6E\x2E\x2E\x2E","\x6C\x6F\x67","\x68\x61\x6E\x64\x6C\x65\x45\x76\x65\x6E\x74","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x64\x61\x74\x61\x31","\x64\x61\x74\x61\x32","\x50\x61\x73\x73\x65\x64\x20\x70\x61\x72\x61\x6D\x65\x74\x65\x72\x73\x20\x61\x72\x65\x20\x6E\x6F\x74\x20\x65\x6E\x6F\x75\x67\x68\x20\x74\x6F\x20\x6D\x61\x6E\x61\x67\x65\x20\x4D\x6F\x74\x69\x6F\x6E\x62\x61\x72\x20\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E","\x65\x72\x72\x6F\x72","\x69\x64","\x63\x6C\x6F\x6E\x65","\x6D\x65\x72\x67\x65","\x54\x79\x70\x65\x3A","\x63\x61\x74\x63\x68","\x5B\x4D\x6F\x74\x69\x6F\x6E\x62\x61\x72\x5D\x20\x50\x6F\x70\x75\x70\x20\x63\x72\x65\x61\x74\x65\x64","\x74\x68\x65\x6E","\x68\x74\x6D\x6C","\x72\x65\x6E\x64\x65\x72","\x3C\x68\x74\x6D\x6C\x3E\x3C\x62\x6F\x64\x79\x3E\x45\x6D\x70\x74\x79\x20\x54\x65\x6D\x70\x6C\x61\x74\x65\x3C\x2F\x62\x6F\x64\x79\x3E\x3C\x2F\x68\x74\x6D\x6C\x3E","\x73\x75\x62\x6A\x65\x63\x74","\x4E\x6F\x20\x54\x69\x74\x6C\x65","\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E","\x6D\x6F\x74\x69\x6F\x6E\x62\x61\x72","\x65\x76\x65\x6E\x74\x43\x68\x61\x6E\x6E\x65\x6C","\x65\x78\x69\x74\x53\x74\x61\x74\x75\x73","\x73\x75\x63\x63\x65\x73\x73","\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x49\x64","\x63\x72\x65\x61\x74\x65","\x66\x69\x6E\x64\x42\x79\x49\x64","\x30","\x75\x72\x6C","\x68\x74\x74\x70\x73\x3A\x2F\x2F\x77\x69\x6B\x69\x2E\x78\x63\x61\x6C\x6C\x79\x6D\x6F\x74\x69\x6F\x6E\x2E\x63\x6F\x6D\x2F","\x5B\x4D\x6F\x74\x69\x6F\x6E\x62\x61\x72\x5D\x20\x55\x52\x4C\x20\x63\x72\x65\x61\x74\x65\x64","\x31","\x61\x70\x70","\x61\x70\x70\x64\x61\x74\x61","\x64\x61\x74\x61\x33","","\x5B\x4D\x6F\x74\x69\x6F\x6E\x62\x61\x72\x5D\x20\x57\x69\x6E\x64\x6F\x77\x73\x20\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x20\x6F\x70\x65\x6E\x65\x64","\x32","\x5B\x4D\x6F\x74\x69\x6F\x6E\x62\x61\x72\x5D\x20\x54\x79\x70\x65\x20\x6E\x6F\x74\x20\x72\x65\x63\x6F\x67\x6E\x69\x7A\x65\x64\x3A","\x5B\x4D\x6F\x74\x69\x6F\x6E\x62\x61\x72\x5D\x20\x45\x72\x72\x6F\x72\x20\x69\x6E\x20\x74\x69\x63\x6B\x65\x74\x20\x63\x72\x65\x61\x74\x69\x6F\x6E","\x5B\x4D\x6F\x74\x69\x6F\x6E\x62\x61\x72\x5D\x20\x4D\x65\x73\x73\x61\x67\x65\x3A","\x6D\x65\x73\x73\x61\x67\x65","\x5B\x4D\x6F\x74\x69\x6F\x6E\x62\x61\x72\x5D\x20\x53\x74\x61\x63\x6B\x3A","\x73\x74\x61\x63\x6B","\x66\x61\x69\x6C\x65\x64","\x5B\x4D\x6F\x74\x69\x6F\x6E\x62\x61\x72\x5D\x20\x45\x72\x72\x6F\x72\x20\x69\x6E\x20\x52\x65\x70\x6F\x72\x74\x20\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x20\x63\x72\x65\x61\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0x241e[0];var _=require(_0x241e[1]);var util=require(_0x241e[2]);var Mustache=require(_0x241e[3]);var ReportIntegration=require(_0x241e[5])[_0x241e[4]];var Template=require(_0x241e[5])[_0x241e[6]];function Motionbar(){console[_0x241e[8]](_0x241e[7])}Motionbar[_0x241e[10]][_0x241e[9]]= function(_0x399ex7,_0x399ex8,_0x399ex9,_0x399exa){if(!_0x399ex7[_0x241e[11]]|| !_0x399ex7[_0x241e[12]]){console[_0x241e[14]](_0x241e[13]);return};delete _0x399ex9[_0x241e[15]];var _0x399exb=_[_0x241e[17]](_[_0x241e[16]](_0x399ex9),_0x399exa);console[_0x241e[8]](_0x241e[18],_0x399ex7[_0x241e[11]]);switch(_0x399ex7[_0x241e[11]]){case _0x241e[35]:return Template[_0x241e[34]](_0x399ex7[_0x241e[12]])[_0x241e[21]](function(_0x399exc){_0x399ex9[_0x241e[22]]= _0x399exc[_0x241e[22]]?Mustache[_0x241e[23]](_0x399exc[_0x241e[22]],_0x399exb):_0x241e[24];_0x399ex9[_0x241e[25]]= _0x399exc[_0x241e[25]]?Mustache[_0x241e[23]](_0x399exc[_0x241e[25]].toString(),_0x399exb):_0x241e[26];_0x399ex9[_0x241e[27]]= _0x241e[28];_0x399ex9[_0x241e[29]]= _0x399ex8;_0x399ex9[_0x241e[30]]= _0x241e[31];_0x399ex9[_0x241e[32]]= _0x399ex7[_0x241e[11]];return ReportIntegration[_0x241e[33]](_0x399ex9)})[_0x241e[21]](function(){console[_0x241e[8]](_0x241e[20])})[_0x241e[19]](handleError(_0x399ex8,_0x399ex9,_0x399ex7[_0x241e[11]]));case _0x241e[39]:_0x399ex9[_0x241e[36]]= _0x399ex7[_0x241e[12]]?Mustache[_0x241e[23]](_0x399ex7[_0x241e[12]],_0x399exb):_0x241e[37];_0x399ex9[_0x241e[27]]= _0x241e[28];_0x399ex9[_0x241e[29]]= _0x399ex8;_0x399ex9[_0x241e[30]]= _0x241e[31];_0x399ex9[_0x241e[32]]= _0x399ex7[_0x241e[11]];return ReportIntegration[_0x241e[33]](_0x399ex9)[_0x241e[21]](function(){console[_0x241e[8]](_0x241e[38])})[_0x241e[19]](handleError(_0x399ex8,_0x399ex9,_0x399ex7[_0x241e[11]]));case _0x241e[45]:_0x399ex9[_0x241e[40]]= _0x399ex7[_0x241e[12]];_0x399ex9[_0x241e[41]]= _0x399ex7[_0x241e[42]]?Mustache[_0x241e[23]](_0x399ex7[_0x241e[42]],_0x399exb):_0x241e[43];_0x399ex9[_0x241e[27]]= _0x241e[28];_0x399ex9[_0x241e[29]]= _0x399ex8;_0x399ex9[_0x241e[30]]= _0x241e[31];_0x399ex9[_0x241e[32]]= _0x399ex7[_0x241e[11]];return ReportIntegration[_0x241e[33]](_0x399ex9)[_0x241e[21]](function(){console[_0x241e[8]](_0x241e[44])})[_0x241e[19]](handleError(_0x399ex8,_0x399ex9,_0x399ex7[_0x241e[11]]));default:console[_0x241e[8]](_0x241e[46],_0x399ex7[_0x241e[11]])}};function handleError(_0x399ex8,_0x399ex9,_0x399exe){return function(_0x399exf){console[_0x241e[14]](_0x241e[47]);console[_0x241e[14]](_0x241e[48],_0x399exf[_0x241e[49]]);console[_0x241e[14]](_0x241e[50],_0x399exf[_0x241e[51]]);_0x399ex9[_0x241e[27]]= _0x241e[28];_0x399ex9[_0x241e[29]]= _0x399ex8;_0x399ex9[_0x241e[30]]= _0x241e[52];_0x399ex9[_0x241e[32]]= _0x399exe;ReportIntegration[_0x241e[33]](_0x399ex9)[_0x241e[21]](function(){return})[_0x241e[19]](function(_0x399exf){console[_0x241e[14]](_0x241e[53]);return})}}module[_0x241e[54]]= Motionbar \ No newline at end of file diff --git a/server/config/integrations/salesforce.js b/server/config/integrations/salesforce.js index a9f2292..5ce548d 100644 --- a/server/config/integrations/salesforce.js +++ b/server/config/integrations/salesforce.js @@ -1,583 +1 @@ -'use strict'; - -var _ = require('lodash'); -var util = require('util'); -var jsforce = require('jsforce'); -var moment = require('moment'); - -var SalesforceIntegration = require('../../models').SalesforceIntegration; -var SalesforceConfiguration = require('../../models').SalesforceConfiguration; -var ReportIntegration = require('../../models').ReportIntegration; -var VoiceQueue = require('../../models').VoiceQueue; -var VoiceExtension = require('../../models').VoiceExtension; - -function Salesforce() { - console.log('Salesforce integration initialization...'); -} - -Salesforce.prototype.handleEvent = function(integrationId, configurationId, channel, subtype, data, variables) { - - var salesforceData = { - connection: undefined, - configuration: undefined, - agent: undefined, - enduser: undefined, - taskId: undefined, - recordEnable: false, - serverURL: undefined - }; - - if (!integrationId || !configurationId) { - console.error('Passed parameters are not enough to create a new ticket: miss IntegrationId or ConfigurationId'); - return; - } - - SalesforceConfiguration - .find({ - where: { - id: configurationId, - AccountId: integrationId - }, - include: [{ - all: true, - include: [{ - all: true - }] - }] - }) - .then(handleEntityNotFound()) - .then(handleConnection(salesforceData)) - .then(searchQueue(data)) - .then(handleQueueRecordings(salesforceData, data)) - .then(searchRoute(data)) - .then(handleOutboundRecordings(salesforceData, data)) - .then(searchAgent(salesforceData, channel, data)) - .then(handleAgent(salesforceData, channel, data)) - .then(searchAdmin(salesforceData)) - .then(handleAdmin(salesforceData)) - .then(searchContact(salesforceData, channel, data, subtype)) - .then(handleContact(salesforceData, channel, data, subtype)) - .then(searchLead(salesforceData, channel, data, subtype)) - .then(handleLead(salesforceData, channel, data, subtype)) - .then(leadCreation(salesforceData, channel, data, subtype)) - .then(handleLeadCreation(salesforceData, channel, data, subtype)) - .then(taskCreation(salesforceData, data, variables)) - .then(handleTaskDisplay(salesforceData)) - .then(handleReportIntegration(salesforceData, channel, data, integrationId)) - .then(handleEnd(salesforceData)) - .catch(handleError(salesforceData, channel, data, integrationId)); - -}; - -function handleEntityNotFound() { - return function(entity) { - if (!entity) { - return null; - } - return entity; - }; -} - -function handleConnection(salesforceData) { - return function(configuration) { - salesforceData.connection = new jsforce.Connection({ - oauth2: { - loginUrl: configuration.SalesforceAccount.remoteUri ? configuration.SalesforceAccount.remoteUri : 'https://login.salesforce.com', - clientId: configuration.SalesforceAccount.clientId, - clientSecret: configuration.SalesforceAccount.clientSecret - } - }); - var pwd = configuration.SalesforceAccount.password.concat(configuration.SalesforceAccount.securityToken); - salesforceData.configuration = configuration; - salesforceData.serverURL = configuration.SalesforceAccount.serverUrl; - return salesforceData.connection.login(configuration.SalesforceAccount.username, pwd); - } -} - -function searchQueue(data) { - return function() { - if (data.queue) { - return VoiceQueue.findOne({ - where: { - name: data.queue - }, - attributes: ['name', 'monitor_format'] - }); - } else { - return; - } - } -} - -function handleQueueRecordings(salesforceData, data) { - return function(queue) { - if (data.queue) { - if (queue && queue.monitor_format) { - console.log('[Salesforce] Recording enabled for the Queue', queue.name); - salesforceData.recordEnable = true; - } else { - salesforceData.recordEnable = false; - console.log('[Salesforce] Queue not found or Recording not enabled'); - } - } - return; - } -} - -function searchRoute(data) { - return function() { - if (data.routeId) { - return VoiceExtension.findOne({ - where: { - id: data.routeId - }, - attributes: ['id', 'record'] - }); - } else { - return; - } - } -} - -function handleOutboundRecordings(salesforceData, data) { - return function(route) { - if (data.routeId) { - if (route && route.record) { - console.log('[Salesforce] Recording enabled for the Route Outbound', route.id); - salesforceData.recordEnable = true; - } else { - salesforceData.recordEnable = false; - console.log('[Salesforce] Route Outbound not found or Recording not enabled'); - } - } - return; - } -} - -function searchAgent(salesforceData, channel, data) { - return function() { - console.log('[Salesforce] Agent to search:', getValueFromPropertyName(data, getAgentSearchPropertyFromChannel(channel))); - return salesforceData.connection.sobject("User") - .find({ - Name: getValueFromPropertyName(data, getAgentSearchPropertyFromChannel(channel)) - }, { - Id: 1, - Username: 1, - Name: 1 - }) - .execute(); - } -} - -function getAgentSearchPropertyFromChannel(channel) { - var property = ''; - if (channel) { - switch (channel) { - case 'voice': - property = 'membername'; - break; - default: - property = 'membername'; - console.error('Channel not recognized:', channel); - } - } - return property; -} - -function getValueFromPropertyName(data, property, salesforceData) { - if (property === 'recordingURL') { - if (salesforceData && salesforceData.recordEnable && salesforceData.serverURL) { - return util.format('%s/api/voice/recordings/%s/download?type=uniqueid', stripTrailingSlash(salesforceData.serverURL), data.uniqueid); - } else { - return null; - } - } else { - return _.result(data, property); - } -} - -function handleAgent(salesforceData, channel, event) { - return function(data) { - if (data.length > 0) { - console.log('[Salesforce] Agent found:', getValueFromPropertyName(event, getAgentSearchPropertyFromChannel(channel))); - salesforceData.agent = getMatchObject(data, 'Name', getValueFromPropertyName(event, getAgentSearchPropertyFromChannel(channel))); - return salesforceData.agent; - } - return; - } -} - -function getMatchObject(collection, property, valueToSearch) { - var valueFound = _.find(collection, { - property: valueToSearch - }); - if (valueFound) { - return valueFound; - } - return _.first(collection); -} - -function searchAdmin(salesforceData) { - return function(data) { - if (data) { - return; - } - console.log('[Salesforce] Agent not found. Use the admin account'); - return salesforceData.connection.identity(); - } -} - -function handleAdmin(salesforceData) { - return function(data) { - if (!data) { - return; - } - if (data) { - console.log('[Salesforce] Admin selected'); - salesforceData.agent = { - Id: data.user_id, - Name: data.display_name, - Username: data.username - }; - } - return; - } -} - -function searchContact(salesforceData, channel, data, subtype) { - return function() { - console.log('[Salesforce] Contact to search:', getValueFromPropertyName(data, getEndUserSearchPropertyFromChannel(channel, subtype))); - var query = {}; - query[getEndUserSearchQueryFromChannel(channel)] = getValueFromPropertyName(data, getEndUserSearchPropertyFromChannel(channel, subtype)); - return salesforceData.connection - .sobject("Contact") - .find(query, { - Id: 1, - Name: 1 - }) - .execute(); - } -} - -function getEndUserSearchQueryFromChannel(channel) { - var property = ''; - if (channel) { - switch (channel) { - case 'voice': - property = 'Phone'; - break; - default: - property = 'Phone'; - console.error('Channel not recognized:', channel); - } - } - return property; -} - -function getEndUserSearchPropertyFromChannel(channel, subtype) { - var property = ''; - if (channel) { - switch (channel) { - case 'voice': - if (subtype === 'outbound') { - property = 'destcalleridnum'; - } else if (subtype === 'queue') { - property = 'calleridnum'; - } - break; - default: - property = 'calleridnum'; - console.error('Channel not recognized:', channel); - } - } - return property; -} - -function getEndUserNamePropertyFromChannel(channel, subtype) { - var property = ''; - if (channel) { - switch (channel) { - case 'voice': - if (subtype === 'outbound') { - property = 'destcalleridname'; - } else if (subtype === 'queue') { - property = 'calleridname'; - } - break; - default: - property = 'calleridname'; - console.error('Channel not recognized:', channel); - } - } - return property; -} - -function handleContact(salesforceData, channel, event, subtype) { - return function(data) { - if (data.length > 0) { - console.log('[Salesforce] Contact found:', getValueFromPropertyName(event, getEndUserSearchPropertyFromChannel(channel, subtype))); - salesforceData.enduser = data[0]; - return salesforceData.enduser; - } - console.log('[Salesforce] Contact not found:', getValueFromPropertyName(event, getEndUserSearchPropertyFromChannel(channel, subtype))); - return; - } -} - -function searchLead(salesforceData, channel, event, subtype) { - return function(data) { - if (!data) { - console.log('[Salesforce] Lead to search:', getValueFromPropertyName(event, getEndUserSearchPropertyFromChannel(channel, subtype))); - var query = {}; - query[getEndUserSearchQueryFromChannel(channel)] = getValueFromPropertyName(event, getEndUserSearchPropertyFromChannel(channel, subtype)); - return salesforceData.connection - .sobject("Lead") - .find(query, { - Id: 1, - Name: 1 - }) - .execute(); - } - return; - } -} - -function handleLead(salesforceData, channel, event, subtype) { - return function(data) { - if (data && data.length > 0) { - console.log('[Salesforce] Lead found:', getValueFromPropertyName(event, getEndUserSearchPropertyFromChannel(channel, subtype))); - salesforceData.enduser = data[0]; - return salesforceData.enduser; - } - return; - } -} - -function leadCreation(salesforceData, channel, event, subtype) { - return function(data) { - if (data || salesforceData.enduser) { - return; - } - console.log('[Salesforce] Contact/Lead not found:', getValueFromPropertyName(event, getEndUserSearchPropertyFromChannel(channel, subtype))); - return salesforceData.connection - .sobject("Lead") - .create(getJsonForEndUserCreation(channel, event, subtype)); - } -} - -function getJsonForEndUserCreation(channel, data, subtype) { - var user = { - Company: 'No Company' - }; - - switch (channel) { - case 'voice': - if (subtype === 'queue') { - if (isValidName(data.calleridname)) { - user.LastName = getValueFromPropertyName(data, getEndUserNamePropertyFromChannel(channel, subtype)); - } else { - user.LastName = util.format('Caller - %s', getValueFromPropertyName(data, getEndUserSearchPropertyFromChannel(channel, subtype))) - } - } else if (subtype === 'outbound') { - if (isValidName(data.destcalleridname)) { - user.LastName = getValueFromPropertyName(data, getEndUserNamePropertyFromChannel(channel, subtype)); - } else { - user.LastName = util.format('Caller - %s', getValueFromPropertyName(data, getEndUserSearchPropertyFromChannel(channel, subtype))) - } - } - user.Phone = getValueFromPropertyName(data, getEndUserSearchPropertyFromChannel(channel, subtype)); - break; - default: - console.error('Channel not recognized:', channel); - } - - return user; -} - -function isValidName(name) { - return name && name !== ''; -} - -function handleLeadCreation(salesforceData, channel, event, subtype) { - return function(data) { - if (!data) { - return; - } - if (data && data.success) { - console.log('[Salesforce] Lead created: ', getValueFromPropertyName(event, getEndUserSearchPropertyFromChannel(channel, subtype))); - salesforceData.enduser = { - Id: data.id - }; - } - return; - } -} - -function taskCreation(salesforceData, event, variables) { - return function() { - var taskBody = { - //Standard Field - WhoId: salesforceData.enduser.Id, - OwnerId: salesforceData.agent.Id, - ActivityDate: moment.utc(), - IsReminderSet: false, - IsRecurrence: false, - //Configurated Field - Subject: createSubjectFromConfiguration(salesforceData, event, variables), - Description: createDescriptionFromConfiguration(salesforceData, event, variables) - }; - var fields = createCustomFieldsFromConfiguration(salesforceData, event, variables); - if (fields.length > 0) { - _.forEach(fields, function(item) { - taskBody[item.id] = item.value; - }); - } - // console.log('[Salesforce] Task body:', taskBody); - return salesforceData.connection - .sobject("Task") - .create(taskBody); - } -} - -function createSubjectFromConfiguration(salesforceData, event, variables) { - var subject = ''; - var stringsArray = []; - if (salesforceData.configuration.Subject.length > 0) { - var subjectConfiguration = _.sortBy(salesforceData.configuration.Subject, ['id']); - _.forEach(subjectConfiguration, function(value) { - if (value.type === 'string') { - stringsArray.push(value.content); - } else if (value.type === 'variable' && value.variableName) { - var prop = getValueFromPropertyName(event, value.variableName, salesforceData); - if (prop) { - stringsArray.push(prop.toString()); - } - } else if (value.type === 'customVariable' && value.Variable && value.Variable.name) { - variables[value.Variable.name] && stringsArray.push(variables[value.Variable.name].toString()); - } - }); - subject = stringsArray.join(' '); - } - return subject; -} - -function createDescriptionFromConfiguration(salesforceData, event, variables) { - var description = ''; - var stringsArray = []; - if (salesforceData.configuration.Description.length > 0) { - var descriptionConfiguration = _.sortBy(salesforceData.configuration.Description, ['id']); - _.forEach(descriptionConfiguration, function(value) { - if (value.type === 'string') { - stringsArray.push(value.content); - } else if (value.type === 'keyValue') { - if (value.keyType === 'string' && value.key) { - stringsArray.push(util.format('%s: %s', value.key, value.keyContent)); - } else if (value.keyType === 'variable' && value.variableName && value.key) { - var prop = getValueFromPropertyName(event, value.variableName, salesforceData); - if (prop) { - stringsArray.push(util.format('%s: %s', value.key, prop.toString())); - } - } else if (value.keyType === 'customVariable' && value.Variable && value.Variable.name && value.key) { - variables[value.Variable.name] && stringsArray.push(util.format('%s: %s', value.key, variables[value.Variable.name])); - } - } - }); - description = stringsArray.join('\n'); - } - return description; -} - -function createCustomFieldsFromConfiguration(salesforceData, event, variables) { - var customFields = []; - var fieldArray = []; - if (salesforceData.configuration.Field.length > 0) { - customFields = salesforceData.configuration.Field; - _.forEach(customFields, function(item) { - if (item.type === 'string' && item.idField) { - fieldArray.push({ - id: item.idField, - value: item.content - }); - } else if (item.type === 'variable' && item.variableName && item.idField) { - var prop = getValueFromPropertyName(event, item.variableName, salesforceData); - if (prop) { - fieldArray.push({ - id: item.idField, - value: prop.toString() - }); - } - } else if (item.type === 'customVariable' && item.idField && item.Variable && item.Variable.name) { - variables[item.Variable.name] && fieldArray.push({ - id: item.idField, - value: variables[item.Variable.name].toString() - }); - } - }); - } - return fieldArray; -} - -function handleTaskDisplay(salesforceData) { - return function(data) { - if (data && data.success) { - console.log('[Salesforce] Task created ', data.id); - salesforceData.taskId = data.id; - return; - } - return; - } -} - -function handleReportIntegration(salesforceData, channel, data, integrationId) { - return function() { - delete data.id; - data.integration = 'salesforce'; - data.eventChannel = channel; - data.exitStatus = 'success'; - data.ticketId = salesforceData.taskId; - data.integrationId = integrationId; - data.url = util.format('%s/%s/e', salesforceData.connection.instanceUrl, salesforceData.taskId); - return ReportIntegration.create(data); - } -} - -function handleEnd(salesforceData, data, channel) { - return function() { - console.log(util.format('[Salesforce] Task %s displayed to agent %s', salesforceData.taskId, salesforceData.agent.Id)); - salesforceData = undefined; - return; - } -} - -function handleError(salesforceData, channel, data, integrationId) { - return function(err) { - console.error('[Salesforce] Error in task creation'); - console.error('[Salesforce] Message:', err.message); - console.error('[Salesforce] Stack:', err.stack); - salesforceData = undefined; - - delete data.id; - data.integration = 'salesforce'; - data.eventChannel = channel; - data.exitStatus = 'failed'; - data.integrationId = integrationId; - ReportIntegration - .create(data) - .then(function() { - return; - }) - .catch(function(err) { - console.error('[Salesforce] Error in Report integration create'); - return; - }); - } -} - -function stripTrailingSlash(str) { - if (str.substr(-1) === '/') { - return str.substr(0, str.length - 1); - } - return str; -} - -module.exports = Salesforce; +var _0x789f=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x75\x74\x69\x6C","\x6A\x73\x66\x6F\x72\x63\x65","\x6D\x6F\x6D\x65\x6E\x74","\x53\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x49\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x53\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E","\x52\x65\x70\x6F\x72\x74\x49\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E","\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65","\x56\x6F\x69\x63\x65\x45\x78\x74\x65\x6E\x73\x69\x6F\x6E","\x53\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x20\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x20\x69\x6E\x69\x74\x69\x61\x6C\x69\x7A\x61\x74\x69\x6F\x6E\x2E\x2E\x2E","\x6C\x6F\x67","\x68\x61\x6E\x64\x6C\x65\x45\x76\x65\x6E\x74","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x50\x61\x73\x73\x65\x64\x20\x70\x61\x72\x61\x6D\x65\x74\x65\x72\x73\x20\x61\x72\x65\x20\x6E\x6F\x74\x20\x65\x6E\x6F\x75\x67\x68\x20\x74\x6F\x20\x63\x72\x65\x61\x74\x65\x20\x61\x20\x6E\x65\x77\x20\x74\x69\x63\x6B\x65\x74\x3A\x20\x6D\x69\x73\x73\x20\x49\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x49\x64\x20\x6F\x72\x20\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x49\x64","\x65\x72\x72\x6F\x72","\x63\x61\x74\x63\x68","\x74\x68\x65\x6E","\x66\x69\x6E\x64","\x63\x6F\x6E\x6E\x65\x63\x74\x69\x6F\x6E","\x72\x65\x6D\x6F\x74\x65\x55\x72\x69","\x53\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x41\x63\x63\x6F\x75\x6E\x74","\x68\x74\x74\x70\x73\x3A\x2F\x2F\x6C\x6F\x67\x69\x6E\x2E\x73\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x2E\x63\x6F\x6D","\x63\x6C\x69\x65\x6E\x74\x49\x64","\x63\x6C\x69\x65\x6E\x74\x53\x65\x63\x72\x65\x74","\x73\x65\x63\x75\x72\x69\x74\x79\x54\x6F\x6B\x65\x6E","\x63\x6F\x6E\x63\x61\x74","\x70\x61\x73\x73\x77\x6F\x72\x64","\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E","\x73\x65\x72\x76\x65\x72\x55\x52\x4C","\x73\x65\x72\x76\x65\x72\x55\x72\x6C","\x75\x73\x65\x72\x6E\x61\x6D\x65","\x6C\x6F\x67\x69\x6E","\x71\x75\x65\x75\x65","\x6E\x61\x6D\x65","\x6D\x6F\x6E\x69\x74\x6F\x72\x5F\x66\x6F\x72\x6D\x61\x74","\x66\x69\x6E\x64\x4F\x6E\x65","\x5B\x53\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x5D\x20\x52\x65\x63\x6F\x72\x64\x69\x6E\x67\x20\x65\x6E\x61\x62\x6C\x65\x64\x20\x66\x6F\x72\x20\x74\x68\x65\x20\x51\x75\x65\x75\x65","\x72\x65\x63\x6F\x72\x64\x45\x6E\x61\x62\x6C\x65","\x5B\x53\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x5D\x20\x51\x75\x65\x75\x65\x20\x6E\x6F\x74\x20\x66\x6F\x75\x6E\x64\x20\x6F\x72\x20\x52\x65\x63\x6F\x72\x64\x69\x6E\x67\x20\x6E\x6F\x74\x20\x65\x6E\x61\x62\x6C\x65\x64","\x72\x6F\x75\x74\x65\x49\x64","\x69\x64","\x72\x65\x63\x6F\x72\x64","\x5B\x53\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x5D\x20\x52\x65\x63\x6F\x72\x64\x69\x6E\x67\x20\x65\x6E\x61\x62\x6C\x65\x64\x20\x66\x6F\x72\x20\x74\x68\x65\x20\x52\x6F\x75\x74\x65\x20\x4F\x75\x74\x62\x6F\x75\x6E\x64","\x5B\x53\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x5D\x20\x52\x6F\x75\x74\x65\x20\x4F\x75\x74\x62\x6F\x75\x6E\x64\x20\x6E\x6F\x74\x20\x66\x6F\x75\x6E\x64\x20\x6F\x72\x20\x52\x65\x63\x6F\x72\x64\x69\x6E\x67\x20\x6E\x6F\x74\x20\x65\x6E\x61\x62\x6C\x65\x64","\x5B\x53\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x5D\x20\x41\x67\x65\x6E\x74\x20\x74\x6F\x20\x73\x65\x61\x72\x63\x68\x3A","\x65\x78\x65\x63\x75\x74\x65","\x55\x73\x65\x72","\x73\x6F\x62\x6A\x65\x63\x74","","\x6D\x65\x6D\x62\x65\x72\x6E\x61\x6D\x65","\x76\x6F\x69\x63\x65","\x43\x68\x61\x6E\x6E\x65\x6C\x20\x6E\x6F\x74\x20\x72\x65\x63\x6F\x67\x6E\x69\x7A\x65\x64\x3A","\x72\x65\x63\x6F\x72\x64\x69\x6E\x67\x55\x52\x4C","\x25\x73\x2F\x61\x70\x69\x2F\x76\x6F\x69\x63\x65\x2F\x72\x65\x63\x6F\x72\x64\x69\x6E\x67\x73\x2F\x25\x73\x2F\x64\x6F\x77\x6E\x6C\x6F\x61\x64\x3F\x74\x79\x70\x65\x3D\x75\x6E\x69\x71\x75\x65\x69\x64","\x75\x6E\x69\x71\x75\x65\x69\x64","\x66\x6F\x72\x6D\x61\x74","\x72\x65\x73\x75\x6C\x74","\x6C\x65\x6E\x67\x74\x68","\x5B\x53\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x5D\x20\x41\x67\x65\x6E\x74\x20\x66\x6F\x75\x6E\x64\x3A","\x61\x67\x65\x6E\x74","\x4E\x61\x6D\x65","\x66\x69\x72\x73\x74","\x5B\x53\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x5D\x20\x41\x67\x65\x6E\x74\x20\x6E\x6F\x74\x20\x66\x6F\x75\x6E\x64\x2E\x20\x55\x73\x65\x20\x74\x68\x65\x20\x61\x64\x6D\x69\x6E\x20\x61\x63\x63\x6F\x75\x6E\x74","\x69\x64\x65\x6E\x74\x69\x74\x79","\x5B\x53\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x5D\x20\x41\x64\x6D\x69\x6E\x20\x73\x65\x6C\x65\x63\x74\x65\x64","\x75\x73\x65\x72\x5F\x69\x64","\x64\x69\x73\x70\x6C\x61\x79\x5F\x6E\x61\x6D\x65","\x5B\x53\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x5D\x20\x43\x6F\x6E\x74\x61\x63\x74\x20\x74\x6F\x20\x73\x65\x61\x72\x63\x68\x3A","\x43\x6F\x6E\x74\x61\x63\x74","\x50\x68\x6F\x6E\x65","\x6F\x75\x74\x62\x6F\x75\x6E\x64","\x64\x65\x73\x74\x63\x61\x6C\x6C\x65\x72\x69\x64\x6E\x75\x6D","\x63\x61\x6C\x6C\x65\x72\x69\x64\x6E\x75\x6D","\x64\x65\x73\x74\x63\x61\x6C\x6C\x65\x72\x69\x64\x6E\x61\x6D\x65","\x63\x61\x6C\x6C\x65\x72\x69\x64\x6E\x61\x6D\x65","\x5B\x53\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x5D\x20\x43\x6F\x6E\x74\x61\x63\x74\x20\x66\x6F\x75\x6E\x64\x3A","\x65\x6E\x64\x75\x73\x65\x72","\x5B\x53\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x5D\x20\x43\x6F\x6E\x74\x61\x63\x74\x20\x6E\x6F\x74\x20\x66\x6F\x75\x6E\x64\x3A","\x5B\x53\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x5D\x20\x4C\x65\x61\x64\x20\x74\x6F\x20\x73\x65\x61\x72\x63\x68\x3A","\x4C\x65\x61\x64","\x5B\x53\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x5D\x20\x4C\x65\x61\x64\x20\x66\x6F\x75\x6E\x64\x3A","\x5B\x53\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x5D\x20\x43\x6F\x6E\x74\x61\x63\x74\x2F\x4C\x65\x61\x64\x20\x6E\x6F\x74\x20\x66\x6F\x75\x6E\x64\x3A","\x63\x72\x65\x61\x74\x65","\x4E\x6F\x20\x43\x6F\x6D\x70\x61\x6E\x79","\x4C\x61\x73\x74\x4E\x61\x6D\x65","\x43\x61\x6C\x6C\x65\x72\x20\x2D\x20\x25\x73","\x3C\x75\x6E\x6B\x6E\x6F\x77\x6E\x3E","\x73\x75\x63\x63\x65\x73\x73","\x5B\x53\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x5D\x20\x4C\x65\x61\x64\x20\x63\x72\x65\x61\x74\x65\x64\x3A\x20","\x49\x64","\x75\x74\x63","\x76\x61\x6C\x75\x65","\x66\x6F\x72\x45\x61\x63\x68","\x54\x61\x73\x6B","\x53\x75\x62\x6A\x65\x63\x74","\x73\x6F\x72\x74\x42\x79","\x74\x79\x70\x65","\x73\x74\x72\x69\x6E\x67","\x63\x6F\x6E\x74\x65\x6E\x74","\x70\x75\x73\x68","\x76\x61\x72\x69\x61\x62\x6C\x65","\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65","\x63\x75\x73\x74\x6F\x6D\x56\x61\x72\x69\x61\x62\x6C\x65","\x56\x61\x72\x69\x61\x62\x6C\x65","\x20","\x6A\x6F\x69\x6E","\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E","\x6B\x65\x79\x56\x61\x6C\x75\x65","\x6B\x65\x79\x54\x79\x70\x65","\x6B\x65\x79","\x25\x73\x3A\x20\x25\x73","\x6B\x65\x79\x43\x6F\x6E\x74\x65\x6E\x74","\x0A","\x46\x69\x65\x6C\x64","\x69\x64\x46\x69\x65\x6C\x64","\x5B\x53\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x5D\x20\x54\x61\x73\x6B\x20\x63\x72\x65\x61\x74\x65\x64\x20","\x74\x61\x73\x6B\x49\x64","\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E","\x73\x61\x6C\x65\x73\x66\x6F\x72\x63\x65","\x65\x76\x65\x6E\x74\x43\x68\x61\x6E\x6E\x65\x6C","\x65\x78\x69\x74\x53\x74\x61\x74\x75\x73","\x74\x69\x63\x6B\x65\x74\x49\x64","\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x49\x64","\x75\x72\x6C","\x25\x73\x2F\x25\x73\x2F\x65","\x69\x6E\x73\x74\x61\x6E\x63\x65\x55\x72\x6C","\x5B\x53\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x5D\x20\x54\x61\x73\x6B\x20\x25\x73\x20\x64\x69\x73\x70\x6C\x61\x79\x65\x64\x20\x74\x6F\x20\x61\x67\x65\x6E\x74\x20\x25\x73","\x5B\x53\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x5D\x20\x45\x72\x72\x6F\x72\x20\x69\x6E\x20\x74\x61\x73\x6B\x20\x63\x72\x65\x61\x74\x69\x6F\x6E","\x5B\x53\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x5D\x20\x4D\x65\x73\x73\x61\x67\x65\x3A","\x6D\x65\x73\x73\x61\x67\x65","\x5B\x53\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x5D\x20\x53\x74\x61\x63\x6B\x3A","\x73\x74\x61\x63\x6B","\x66\x61\x69\x6C\x65\x64","\x5B\x53\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x5D\x20\x45\x72\x72\x6F\x72\x20\x69\x6E\x20\x52\x65\x70\x6F\x72\x74\x20\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x20\x63\x72\x65\x61\x74\x65","\x73\x75\x62\x73\x74\x72","\x2F","\x65\x78\x70\x6F\x72\x74\x73"];_0x789f[0];var _=require(_0x789f[1]);var util=require(_0x789f[2]);var jsforce=require(_0x789f[3]);var moment=require(_0x789f[4]);var SalesforceIntegration=require(_0x789f[6])[_0x789f[5]];var SalesforceConfiguration=require(_0x789f[6])[_0x789f[7]];var ReportIntegration=require(_0x789f[6])[_0x789f[8]];var VoiceQueue=require(_0x789f[6])[_0x789f[9]];var VoiceExtension=require(_0x789f[6])[_0x789f[10]];function Salesforce(){console[_0x789f[12]](_0x789f[11])}Salesforce[_0x789f[14]][_0x789f[13]]= function(_0xf1f9xb,_0xf1f9xc,_0xf1f9xd,_0xf1f9xe,_0xf1f9xf,_0xf1f9x10){var _0xf1f9x11={connection:undefined,configuration:undefined,agent:undefined,enduser:undefined,taskId:undefined,recordEnable:false,serverURL:undefined};if(!_0xf1f9xb|| !_0xf1f9xc){console[_0x789f[16]](_0x789f[15]);return};SalesforceConfiguration[_0x789f[19]]({where:{id:_0xf1f9xc,AccountId:_0xf1f9xb},include:[{all:true,include:[{all:true}]}]})[_0x789f[18]](handleEntityNotFound())[_0x789f[18]](handleConnection(_0xf1f9x11))[_0x789f[18]](searchQueue(_0xf1f9xf))[_0x789f[18]](handleQueueRecordings(_0xf1f9x11,_0xf1f9xf))[_0x789f[18]](searchRoute(_0xf1f9xf))[_0x789f[18]](handleOutboundRecordings(_0xf1f9x11,_0xf1f9xf))[_0x789f[18]](searchAgent(_0xf1f9x11,_0xf1f9xd,_0xf1f9xf))[_0x789f[18]](handleAgent(_0xf1f9x11,_0xf1f9xd,_0xf1f9xf))[_0x789f[18]](searchAdmin(_0xf1f9x11))[_0x789f[18]](handleAdmin(_0xf1f9x11))[_0x789f[18]](searchContact(_0xf1f9x11,_0xf1f9xd,_0xf1f9xf,_0xf1f9xe))[_0x789f[18]](handleContact(_0xf1f9x11,_0xf1f9xd,_0xf1f9xf,_0xf1f9xe))[_0x789f[18]](searchLead(_0xf1f9x11,_0xf1f9xd,_0xf1f9xf,_0xf1f9xe))[_0x789f[18]](handleLead(_0xf1f9x11,_0xf1f9xd,_0xf1f9xf,_0xf1f9xe))[_0x789f[18]](leadCreation(_0xf1f9x11,_0xf1f9xd,_0xf1f9xf,_0xf1f9xe))[_0x789f[18]](handleLeadCreation(_0xf1f9x11,_0xf1f9xd,_0xf1f9xf,_0xf1f9xe))[_0x789f[18]](taskCreation(_0xf1f9x11,_0xf1f9xf,_0xf1f9x10))[_0x789f[18]](handleTaskDisplay(_0xf1f9x11))[_0x789f[18]](handleReportIntegration(_0xf1f9x11,_0xf1f9xd,_0xf1f9xf,_0xf1f9xb))[_0x789f[18]](handleEnd(_0xf1f9x11))[_0x789f[17]](handleError(_0xf1f9x11,_0xf1f9xd,_0xf1f9xf,_0xf1f9xb))};function handleEntityNotFound(){return function(_0xf1f9x13){if(!_0xf1f9x13){return null};return _0xf1f9x13}}function handleConnection(_0xf1f9x11){return function(_0xf1f9x15){_0xf1f9x11[_0x789f[20]]= new jsforce.Connection({oauth2:{loginUrl:_0xf1f9x15[_0x789f[22]][_0x789f[21]]?_0xf1f9x15[_0x789f[22]][_0x789f[21]]:_0x789f[23],clientId:_0xf1f9x15[_0x789f[22]][_0x789f[24]],clientSecret:_0xf1f9x15[_0x789f[22]][_0x789f[25]]}});var _0xf1f9x16=_0xf1f9x15[_0x789f[22]][_0x789f[28]][_0x789f[27]](_0xf1f9x15[_0x789f[22]][_0x789f[26]]);_0xf1f9x11[_0x789f[29]]= _0xf1f9x15;_0xf1f9x11[_0x789f[30]]= _0xf1f9x15[_0x789f[22]][_0x789f[31]];return _0xf1f9x11[_0x789f[20]][_0x789f[33]](_0xf1f9x15[_0x789f[22]][_0x789f[32]],_0xf1f9x16)}}function searchQueue(_0xf1f9xf){return function(){if(_0xf1f9xf[_0x789f[34]]){return VoiceQueue[_0x789f[37]]({where:{name:_0xf1f9xf[_0x789f[34]]},attributes:[_0x789f[35],_0x789f[36]]})}else {return}}}function handleQueueRecordings(_0xf1f9x11,_0xf1f9xf){return function(_0xf1f9x19){if(_0xf1f9xf[_0x789f[34]]){if(_0xf1f9x19&& _0xf1f9x19[_0x789f[36]]){console[_0x789f[12]](_0x789f[38],_0xf1f9x19[_0x789f[35]]);_0xf1f9x11[_0x789f[39]]= true}else {_0xf1f9x11[_0x789f[39]]= false;console[_0x789f[12]](_0x789f[40])}};return}}function searchRoute(_0xf1f9xf){return function(){if(_0xf1f9xf[_0x789f[41]]){return VoiceExtension[_0x789f[37]]({where:{id:_0xf1f9xf[_0x789f[41]]},attributes:[_0x789f[42],_0x789f[43]]})}else {return}}}function handleOutboundRecordings(_0xf1f9x11,_0xf1f9xf){return function(_0xf1f9x1c){if(_0xf1f9xf[_0x789f[41]]){if(_0xf1f9x1c&& _0xf1f9x1c[_0x789f[43]]){console[_0x789f[12]](_0x789f[44],_0xf1f9x1c[_0x789f[42]]);_0xf1f9x11[_0x789f[39]]= true}else {_0xf1f9x11[_0x789f[39]]= false;console[_0x789f[12]](_0x789f[45])}};return}}function searchAgent(_0xf1f9x11,_0xf1f9xd,_0xf1f9xf){return function(){console[_0x789f[12]](_0x789f[46],getValueFromPropertyName(_0xf1f9xf,getAgentSearchPropertyFromChannel(_0xf1f9xd)));return _0xf1f9x11[_0x789f[20]][_0x789f[49]](_0x789f[48])[_0x789f[19]]({Name:getValueFromPropertyName(_0xf1f9xf,getAgentSearchPropertyFromChannel(_0xf1f9xd))},{Id:1,Username:1,Name:1})[_0x789f[47]]()}}function getAgentSearchPropertyFromChannel(_0xf1f9xd){var _0xf1f9x1f=_0x789f[50];if(_0xf1f9xd){switch(_0xf1f9xd){case _0x789f[52]:_0xf1f9x1f= _0x789f[51];break;default:_0xf1f9x1f= _0x789f[51];console[_0x789f[16]](_0x789f[53],_0xf1f9xd)}};return _0xf1f9x1f}function getValueFromPropertyName(_0xf1f9xf,_0xf1f9x1f,_0xf1f9x11){if(_0xf1f9x1f=== _0x789f[54]){if(_0xf1f9x11&& _0xf1f9x11[_0x789f[39]]&& _0xf1f9x11[_0x789f[30]]){return util[_0x789f[57]](_0x789f[55],stripTrailingSlash(_0xf1f9x11[_0x789f[30]]),_0xf1f9xf[_0x789f[56]])}else {return null}}else {return _[_0x789f[58]](_0xf1f9xf,_0xf1f9x1f)}}function handleAgent(_0xf1f9x11,_0xf1f9xd,_0xf1f9x22){return function(_0xf1f9xf){if(_0xf1f9xf[_0x789f[59]]> 0){console[_0x789f[12]](_0x789f[60],getValueFromPropertyName(_0xf1f9x22,getAgentSearchPropertyFromChannel(_0xf1f9xd)));_0xf1f9x11[_0x789f[61]]= getMatchObject(_0xf1f9xf,_0x789f[62],getValueFromPropertyName(_0xf1f9x22,getAgentSearchPropertyFromChannel(_0xf1f9xd)));return _0xf1f9x11[_0x789f[61]]};return}}function getMatchObject(_0xf1f9x24,_0xf1f9x1f,_0xf1f9x25){var _0xf1f9x26=_[_0x789f[19]](_0xf1f9x24,{property:_0xf1f9x25});if(_0xf1f9x26){return _0xf1f9x26};return _[_0x789f[63]](_0xf1f9x24)}function searchAdmin(_0xf1f9x11){return function(_0xf1f9xf){if(_0xf1f9xf){return};console[_0x789f[12]](_0x789f[64]);return _0xf1f9x11[_0x789f[20]][_0x789f[65]]()}}function handleAdmin(_0xf1f9x11){return function(_0xf1f9xf){if(!_0xf1f9xf){return};if(_0xf1f9xf){console[_0x789f[12]](_0x789f[66]);_0xf1f9x11[_0x789f[61]]= {Id:_0xf1f9xf[_0x789f[67]],Name:_0xf1f9xf[_0x789f[68]],Username:_0xf1f9xf[_0x789f[32]]}};return}}function searchContact(_0xf1f9x11,_0xf1f9xd,_0xf1f9xf,_0xf1f9xe){return function(){console[_0x789f[12]](_0x789f[69],getValueFromPropertyName(_0xf1f9xf,getEndUserSearchPropertyFromChannel(_0xf1f9xd,_0xf1f9xe)));var _0xf1f9x2a={};_0xf1f9x2a[getEndUserSearchQueryFromChannel(_0xf1f9xd)]= getValueFromPropertyName(_0xf1f9xf,getEndUserSearchPropertyFromChannel(_0xf1f9xd,_0xf1f9xe));return _0xf1f9x11[_0x789f[20]][_0x789f[49]](_0x789f[70])[_0x789f[19]](_0xf1f9x2a,{Id:1,Name:1})[_0x789f[47]]()}}function getEndUserSearchQueryFromChannel(_0xf1f9xd){var _0xf1f9x1f=_0x789f[50];if(_0xf1f9xd){switch(_0xf1f9xd){case _0x789f[52]:_0xf1f9x1f= _0x789f[71];break;default:_0xf1f9x1f= _0x789f[71];console[_0x789f[16]](_0x789f[53],_0xf1f9xd)}};return _0xf1f9x1f}function getEndUserSearchPropertyFromChannel(_0xf1f9xd,_0xf1f9xe){var _0xf1f9x1f=_0x789f[50];if(_0xf1f9xd){switch(_0xf1f9xd){case _0x789f[52]:if(_0xf1f9xe=== _0x789f[72]){_0xf1f9x1f= _0x789f[73]}else {if(_0xf1f9xe=== _0x789f[34]){_0xf1f9x1f= _0x789f[74]}};break;default:_0xf1f9x1f= _0x789f[74];console[_0x789f[16]](_0x789f[53],_0xf1f9xd)}};return _0xf1f9x1f}function getEndUserNamePropertyFromChannel(_0xf1f9xd,_0xf1f9xe){var _0xf1f9x1f=_0x789f[50];if(_0xf1f9xd){switch(_0xf1f9xd){case _0x789f[52]:if(_0xf1f9xe=== _0x789f[72]){_0xf1f9x1f= _0x789f[75]}else {if(_0xf1f9xe=== _0x789f[34]){_0xf1f9x1f= _0x789f[76]}};break;default:_0xf1f9x1f= _0x789f[76];console[_0x789f[16]](_0x789f[53],_0xf1f9xd)}};return _0xf1f9x1f}function handleContact(_0xf1f9x11,_0xf1f9xd,_0xf1f9x22,_0xf1f9xe){return function(_0xf1f9xf){if(_0xf1f9xf[_0x789f[59]]> 0){console[_0x789f[12]](_0x789f[77],getValueFromPropertyName(_0xf1f9x22,getEndUserSearchPropertyFromChannel(_0xf1f9xd,_0xf1f9xe)));_0xf1f9x11[_0x789f[78]]= _0xf1f9xf[0];return _0xf1f9x11[_0x789f[78]]};console[_0x789f[12]](_0x789f[79],getValueFromPropertyName(_0xf1f9x22,getEndUserSearchPropertyFromChannel(_0xf1f9xd,_0xf1f9xe)));return}}function searchLead(_0xf1f9x11,_0xf1f9xd,_0xf1f9x22,_0xf1f9xe){return function(_0xf1f9xf){if(!_0xf1f9xf){console[_0x789f[12]](_0x789f[80],getValueFromPropertyName(_0xf1f9x22,getEndUserSearchPropertyFromChannel(_0xf1f9xd,_0xf1f9xe)));var _0xf1f9x2a={};_0xf1f9x2a[getEndUserSearchQueryFromChannel(_0xf1f9xd)]= getValueFromPropertyName(_0xf1f9x22,getEndUserSearchPropertyFromChannel(_0xf1f9xd,_0xf1f9xe));return _0xf1f9x11[_0x789f[20]][_0x789f[49]](_0x789f[81])[_0x789f[19]](_0xf1f9x2a,{Id:1,Name:1})[_0x789f[47]]()};return}}function handleLead(_0xf1f9x11,_0xf1f9xd,_0xf1f9x22,_0xf1f9xe){return function(_0xf1f9xf){if(_0xf1f9xf&& _0xf1f9xf[_0x789f[59]]> 0){console[_0x789f[12]](_0x789f[82],getValueFromPropertyName(_0xf1f9x22,getEndUserSearchPropertyFromChannel(_0xf1f9xd,_0xf1f9xe)));_0xf1f9x11[_0x789f[78]]= _0xf1f9xf[0];return _0xf1f9x11[_0x789f[78]]};return}}function leadCreation(_0xf1f9x11,_0xf1f9xd,_0xf1f9x22,_0xf1f9xe){return function(_0xf1f9xf){if(_0xf1f9xf|| _0xf1f9x11[_0x789f[78]]){return};console[_0x789f[12]](_0x789f[83],getValueFromPropertyName(_0xf1f9x22,getEndUserSearchPropertyFromChannel(_0xf1f9xd,_0xf1f9xe)));return _0xf1f9x11[_0x789f[20]][_0x789f[49]](_0x789f[81])[_0x789f[84]](getJsonForEndUserCreation(_0xf1f9xd,_0xf1f9x22,_0xf1f9xe))}}function getJsonForEndUserCreation(_0xf1f9xd,_0xf1f9xf,_0xf1f9xe){var _0xf1f9x33={Company:_0x789f[85]};switch(_0xf1f9xd){case _0x789f[52]:if(_0xf1f9xe=== _0x789f[34]){if(isValidName(_0xf1f9xf[_0x789f[76]])){_0xf1f9x33[_0x789f[86]]= getValueFromPropertyName(_0xf1f9xf,getEndUserNamePropertyFromChannel(_0xf1f9xd,_0xf1f9xe))}else {_0xf1f9x33[_0x789f[86]]= util[_0x789f[57]](_0x789f[87],getValueFromPropertyName(_0xf1f9xf,getEndUserSearchPropertyFromChannel(_0xf1f9xd,_0xf1f9xe)))}}else {if(_0xf1f9xe=== _0x789f[72]){if(isValidName(_0xf1f9xf[_0x789f[75]])){_0xf1f9x33[_0x789f[86]]= getValueFromPropertyName(_0xf1f9xf,getEndUserNamePropertyFromChannel(_0xf1f9xd,_0xf1f9xe))}else {_0xf1f9x33[_0x789f[86]]= util[_0x789f[57]](_0x789f[87],getValueFromPropertyName(_0xf1f9xf,getEndUserSearchPropertyFromChannel(_0xf1f9xd,_0xf1f9xe)))}}};_0xf1f9x33[_0x789f[71]]= getValueFromPropertyName(_0xf1f9xf,getEndUserSearchPropertyFromChannel(_0xf1f9xd,_0xf1f9xe));break;default:console[_0x789f[16]](_0x789f[53],_0xf1f9xd)};return _0xf1f9x33}function isValidName(_0xf1f9x35){return _0xf1f9x35&& _0xf1f9x35!== _0x789f[88]}function handleLeadCreation(_0xf1f9x11,_0xf1f9xd,_0xf1f9x22,_0xf1f9xe){return function(_0xf1f9xf){if(!_0xf1f9xf){return};if(_0xf1f9xf&& _0xf1f9xf[_0x789f[89]]){console[_0x789f[12]](_0x789f[90],getValueFromPropertyName(_0xf1f9x22,getEndUserSearchPropertyFromChannel(_0xf1f9xd,_0xf1f9xe)));_0xf1f9x11[_0x789f[78]]= {Id:_0xf1f9xf[_0x789f[42]]}};return}}function taskCreation(_0xf1f9x11,_0xf1f9x22,_0xf1f9x10){return function(){var _0xf1f9x38={WhoId:_0xf1f9x11[_0x789f[78]][_0x789f[91]],OwnerId:_0xf1f9x11[_0x789f[61]][_0x789f[91]],ActivityDate:moment[_0x789f[92]](),IsReminderSet:false,IsRecurrence:false,Subject:createSubjectFromConfiguration(_0xf1f9x11,_0xf1f9x22,_0xf1f9x10),Description:createDescriptionFromConfiguration(_0xf1f9x11,_0xf1f9x22,_0xf1f9x10)};var _0xf1f9x39=createCustomFieldsFromConfiguration(_0xf1f9x11,_0xf1f9x22,_0xf1f9x10);if(_0xf1f9x39[_0x789f[59]]> 0){_[_0x789f[94]](_0xf1f9x39,function(_0xf1f9x3a){_0xf1f9x38[_0xf1f9x3a[_0x789f[42]]]= _0xf1f9x3a[_0x789f[93]]})};return _0xf1f9x11[_0x789f[20]][_0x789f[49]](_0x789f[95])[_0x789f[84]](_0xf1f9x38)}}function createSubjectFromConfiguration(_0xf1f9x11,_0xf1f9x22,_0xf1f9x10){var _0xf1f9x3c=_0x789f[50];var _0xf1f9x3d=[];if(_0xf1f9x11[_0x789f[29]][_0x789f[96]][_0x789f[59]]> 0){var _0xf1f9x3e=_[_0x789f[97]](_0xf1f9x11[_0x789f[29]].Subject,[_0x789f[42]]);_[_0x789f[94]](_0xf1f9x3e,function(_0xf1f9x3f){if(_0xf1f9x3f[_0x789f[98]]=== _0x789f[99]){_0xf1f9x3d[_0x789f[101]](_0xf1f9x3f[_0x789f[100]])}else {if(_0xf1f9x3f[_0x789f[98]]=== _0x789f[102]&& _0xf1f9x3f[_0x789f[103]]){var _0xf1f9x40=getValueFromPropertyName(_0xf1f9x22,_0xf1f9x3f[_0x789f[103]],_0xf1f9x11);if(_0xf1f9x40){_0xf1f9x3d[_0x789f[101]](_0xf1f9x40.toString())}}else {if(_0xf1f9x3f[_0x789f[98]]=== _0x789f[104]&& _0xf1f9x3f[_0x789f[105]]&& _0xf1f9x3f[_0x789f[105]][_0x789f[35]]){_0xf1f9x10[_0xf1f9x3f[_0x789f[105]][_0x789f[35]]]&& _0xf1f9x3d[_0x789f[101]](_0xf1f9x10[_0xf1f9x3f[_0x789f[105]][_0x789f[35]]].toString())}}}});_0xf1f9x3c= _0xf1f9x3d[_0x789f[107]](_0x789f[106])};return _0xf1f9x3c}function createDescriptionFromConfiguration(_0xf1f9x11,_0xf1f9x22,_0xf1f9x10){var _0xf1f9x42=_0x789f[50];var _0xf1f9x3d=[];if(_0xf1f9x11[_0x789f[29]][_0x789f[108]][_0x789f[59]]> 0){var _0xf1f9x43=_[_0x789f[97]](_0xf1f9x11[_0x789f[29]].Description,[_0x789f[42]]);_[_0x789f[94]](_0xf1f9x43,function(_0xf1f9x3f){if(_0xf1f9x3f[_0x789f[98]]=== _0x789f[99]){_0xf1f9x3d[_0x789f[101]](_0xf1f9x3f[_0x789f[100]])}else {if(_0xf1f9x3f[_0x789f[98]]=== _0x789f[109]){if(_0xf1f9x3f[_0x789f[110]]=== _0x789f[99]&& _0xf1f9x3f[_0x789f[111]]){_0xf1f9x3d[_0x789f[101]](util[_0x789f[57]](_0x789f[112],_0xf1f9x3f[_0x789f[111]],_0xf1f9x3f[_0x789f[113]]))}else {if(_0xf1f9x3f[_0x789f[110]]=== _0x789f[102]&& _0xf1f9x3f[_0x789f[103]]&& _0xf1f9x3f[_0x789f[111]]){var _0xf1f9x40=getValueFromPropertyName(_0xf1f9x22,_0xf1f9x3f[_0x789f[103]],_0xf1f9x11);if(_0xf1f9x40){_0xf1f9x3d[_0x789f[101]](util[_0x789f[57]](_0x789f[112],_0xf1f9x3f[_0x789f[111]],_0xf1f9x40.toString()))}}else {if(_0xf1f9x3f[_0x789f[110]]=== _0x789f[104]&& _0xf1f9x3f[_0x789f[105]]&& _0xf1f9x3f[_0x789f[105]][_0x789f[35]]&& _0xf1f9x3f[_0x789f[111]]){_0xf1f9x10[_0xf1f9x3f[_0x789f[105]][_0x789f[35]]]&& _0xf1f9x3d[_0x789f[101]](util[_0x789f[57]](_0x789f[112],_0xf1f9x3f[_0x789f[111]],_0xf1f9x10[_0xf1f9x3f[_0x789f[105]][_0x789f[35]]]))}}}}}});_0xf1f9x42= _0xf1f9x3d[_0x789f[107]](_0x789f[114])};return _0xf1f9x42}function createCustomFieldsFromConfiguration(_0xf1f9x11,_0xf1f9x22,_0xf1f9x10){var _0xf1f9x45=[];var _0xf1f9x46=[];if(_0xf1f9x11[_0x789f[29]][_0x789f[115]][_0x789f[59]]> 0){_0xf1f9x45= _0xf1f9x11[_0x789f[29]][_0x789f[115]];_[_0x789f[94]](_0xf1f9x45,function(_0xf1f9x3a){if(_0xf1f9x3a[_0x789f[98]]=== _0x789f[99]&& _0xf1f9x3a[_0x789f[116]]){_0xf1f9x46[_0x789f[101]]({id:_0xf1f9x3a[_0x789f[116]],value:_0xf1f9x3a[_0x789f[100]]})}else {if(_0xf1f9x3a[_0x789f[98]]=== _0x789f[102]&& _0xf1f9x3a[_0x789f[103]]&& _0xf1f9x3a[_0x789f[116]]){var _0xf1f9x40=getValueFromPropertyName(_0xf1f9x22,_0xf1f9x3a[_0x789f[103]],_0xf1f9x11);if(_0xf1f9x40){_0xf1f9x46[_0x789f[101]]({id:_0xf1f9x3a[_0x789f[116]],value:_0xf1f9x40.toString()})}}else {if(_0xf1f9x3a[_0x789f[98]]=== _0x789f[104]&& _0xf1f9x3a[_0x789f[116]]&& _0xf1f9x3a[_0x789f[105]]&& _0xf1f9x3a[_0x789f[105]][_0x789f[35]]){_0xf1f9x10[_0xf1f9x3a[_0x789f[105]][_0x789f[35]]]&& _0xf1f9x46[_0x789f[101]]({id:_0xf1f9x3a[_0x789f[116]],value:_0xf1f9x10[_0xf1f9x3a[_0x789f[105]][_0x789f[35]]].toString()})}}}})};return _0xf1f9x46}function handleTaskDisplay(_0xf1f9x11){return function(_0xf1f9xf){if(_0xf1f9xf&& _0xf1f9xf[_0x789f[89]]){console[_0x789f[12]](_0x789f[117],_0xf1f9xf[_0x789f[42]]);_0xf1f9x11[_0x789f[118]]= _0xf1f9xf[_0x789f[42]];return};return}}function handleReportIntegration(_0xf1f9x11,_0xf1f9xd,_0xf1f9xf,_0xf1f9xb){return function(){delete _0xf1f9xf[_0x789f[42]];_0xf1f9xf[_0x789f[119]]= _0x789f[120];_0xf1f9xf[_0x789f[121]]= _0xf1f9xd;_0xf1f9xf[_0x789f[122]]= _0x789f[89];_0xf1f9xf[_0x789f[123]]= _0xf1f9x11[_0x789f[118]];_0xf1f9xf[_0x789f[124]]= _0xf1f9xb;_0xf1f9xf[_0x789f[125]]= util[_0x789f[57]](_0x789f[126],_0xf1f9x11[_0x789f[20]][_0x789f[127]],_0xf1f9x11[_0x789f[118]]);return ReportIntegration[_0x789f[84]](_0xf1f9xf)}}function handleEnd(_0xf1f9x11,_0xf1f9xf,_0xf1f9xd){return function(){console[_0x789f[12]](util[_0x789f[57]](_0x789f[128],_0xf1f9x11[_0x789f[118]],_0xf1f9x11[_0x789f[61]].Id));_0xf1f9x11= undefined;return}}function handleError(_0xf1f9x11,_0xf1f9xd,_0xf1f9xf,_0xf1f9xb){return function(_0xf1f9x4b){console[_0x789f[16]](_0x789f[129]);console[_0x789f[16]](_0x789f[130],_0xf1f9x4b[_0x789f[131]]);console[_0x789f[16]](_0x789f[132],_0xf1f9x4b[_0x789f[133]]);_0xf1f9x11= undefined;delete _0xf1f9xf[_0x789f[42]];_0xf1f9xf[_0x789f[119]]= _0x789f[120];_0xf1f9xf[_0x789f[121]]= _0xf1f9xd;_0xf1f9xf[_0x789f[122]]= _0x789f[134];_0xf1f9xf[_0x789f[124]]= _0xf1f9xb;ReportIntegration[_0x789f[84]](_0xf1f9xf)[_0x789f[18]](function(){return})[_0x789f[17]](function(_0xf1f9x4b){console[_0x789f[16]](_0x789f[135]);return})}}function stripTrailingSlash(_0xf1f9x4d){if(_0xf1f9x4d[_0x789f[136]](-1) === _0x789f[137]){return _0xf1f9x4d[_0x789f[136]](0,_0xf1f9x4d[_0x789f[59]]- 1)};return _0xf1f9x4d}module[_0x789f[138]]= Salesforce \ No newline at end of file diff --git a/server/config/integrations/zendesk.js b/server/config/integrations/zendesk.js index b560a80..f00000c 100644 --- a/server/config/integrations/zendesk.js +++ b/server/config/integrations/zendesk.js @@ -1,637 +1 @@ -'use strict'; - -var _ = require('lodash'); -var util = require('util'); -var rp = require('request-promise'); - -var ZendeskIntegration = require('../../models').ZendeskIntegration; -var ZendeskConfiguration = require('../../models').ZendeskConfiguration; -var ReportIntegration = require('../../models').ReportIntegration; -var VoiceQueue = require('../../models').VoiceQueue; -var VoiceExtension = require('../../models').VoiceExtension; -var Agent = require('../../models').User; - -function Zendesk() { - console.log('Zendesk integration initialization...'); -} - -Zendesk.prototype.handleEvent = function(integrationId, configurationId, channel, subtype, data, variables) { - - var zendeskData = { - uri: undefined, - headers: undefined, - agent: undefined, - enduser: undefined, - ticket: undefined, - configuration: undefined, - recordEnable: false, - serverURL: undefined, - agentName: undefined - }; - - if (!integrationId || !configurationId) { - console.error('Passed parameters are not enough to create a new ticket: miss IntegrationId or ConfigurationId'); - return; - } - - ZendeskConfiguration - .find({ - where: { - id: configurationId, - AccountId: integrationId - }, - include: [{ - all: true, - include: [{ - all: true - }] - }] - }) - .then(handleEntityNotFound()) - .then(handleConnection(zendeskData)) - .then(searchMotionAgent(channel, data)) - .then(handleMotionAgent(zendeskData)) - .then(searchQueue(data)) - .then(handleQueueRecordings(zendeskData, data)) - .then(searchRoute(data)) - .then(handleOutboundRecordings(zendeskData, data)) - .then(searchAgent(zendeskData)) - .then(handleAgent(zendeskData)) - .then(searchAdmin(zendeskData)) - .then(handleAdmin(zendeskData)) - .then(searchEndUser(zendeskData, channel, data, subtype)) - .then(handleEndUser(zendeskData, channel, data, subtype)) - .then(endUserCreation(zendeskData, channel, data, subtype)) - .then(handleEndUserCreation(zendeskData, channel, data, subtype)) - .then(ticketCreation(zendeskData, data, variables)) - .then(handleTicketDisplay(zendeskData)) - .then(handleReportIntegration(zendeskData, channel, data, integrationId)) - .then(handleEnd(zendeskData)) - .catch(handleError(zendeskData, channel, data, integrationId)); - -}; - -function handleEntityNotFound() { - return function(entity) { - if (!entity) { - return null; - } - return entity; - }; -} - -function handleConnection(zendeskData) { - return function(configuration) { - var accConfiguration = getAccountConfiguration(configuration.ZendeskAccount); - zendeskData.configuration = configuration; - zendeskData.uri = accConfiguration.uri; - zendeskData.headers = accConfiguration.headers; - zendeskData.serverURL = configuration.ZendeskAccount.serverUrl; - } -} - -function searchMotionAgent(channel, data) { - return function() { - return Agent - .scope('agent') - .findOne({ - where: { - name: getValueFromPropertyName(data, getAgentSearchPropertyFromChannel(channel)) - }, - attributes: ['fullname'] - }); - } -} - -function handleMotionAgent(zendeskData) { - return function(agent) { - if (agent && agent.fullname) { - zendeskData.agentName = agent.fullname; - } - return; - } -} - -function searchQueue(data) { - return function() { - console.log('Searching Queue...'); - if (data.queue) { - return VoiceQueue.findOne({ - where: { - name: data.queue - }, - attributes: ['name', 'monitor_format'] - }); - } else { - return; - } - } -} - -function handleQueueRecordings(zendeskData, data) { - return function(queue) { - if (data.queue) { - if (queue && queue.monitor_format) { - console.log('[Zendesk] Recording enabled for the Queue', queue.name); - zendeskData.recordEnable = true; - } else { - zendeskData.recordEnable = false; - console.log('[Zendesk] Queue not found or Recording not enabled'); - } - } - return; - } -} - -function searchRoute(data) { - return function() { - if (data.routeId) { - return VoiceExtension.findOne({ - where: { - id: data.routeId - }, - attributes: ['id', 'record'] - }); - } else { - return; - } - } -} - -function handleOutboundRecordings(zendeskData, data) { - return function(route) { - if (data.routeId) { - if (route && route.record) { - console.log('[Zendesk] Recording enabled for the Route Outbound', route.id); - zendeskData.recordEnable = true; - } else { - zendeskData.recordEnable = false; - console.log('[Zendesk] Route Outbound not found or Recording not enabled'); - } - } - return; - } -} - -function getAccountConfiguration(account) { - var authJson = { - uri: stripTrailingSlash(account.remoteUri), - headers: { - 'Authorization': undefined, - 'Content-Type': 'application/json', - 'Accept': 'application/json' - } - }; - var auth = account.username; - if (account.authType === 'password') { - auth = auth + ':' + account.password; - } else if (account.authType === 'token') { - auth = auth + '/token:' + account.token; - } - authJson.headers.Authorization = 'Basic ' + new Buffer(auth).toString('base64'); - return authJson; -} - -function searchAgent(zendeskData) { - return function() { - console.log('[Zendesk] Agent to search:', zendeskData.agentName); - return rp({ - uri: zendeskData.uri + '/search.json', - qs: { - // 'query': "type:user role:agent name:Andrea Bianco" - 'query': util.format("type:user role:agent name:%s", zendeskData.agentName) - }, - headers: zendeskData.headers, - json: true - }); - } -} - -function getAgentSearchPropertyFromChannel(channel) { - var property = ''; - if (channel) { - switch (channel) { - case 'voice': - property = 'membername'; - break; - default: - property = 'membername'; - console.error('Channel not recognized:', channel); - } - } - return property; -} - -function getValueFromPropertyName(data, property, zendeskData) { - if (property === 'recordingURL') { - if (zendeskData && zendeskData.recordEnable && zendeskData.serverURL) { - return util.format('%s/api/voice/recordings/%s/download?type=uniqueid', stripTrailingSlash(zendeskData.serverURL), data.uniqueid); - } else { - return null; - } - } else { - return _.result(data, property); - } -} - -function handleAgent(zendeskData) { - return function(data) { - if (data.results.length > 0 && data.count > 0) { - console.log('[Zendesk] Agent found:', zendeskData.agentName); - zendeskData.agent = getMatchObject(data.results, 'name', zendeskData.agentName); - return zendeskData.agent; - } - return; - } -} - -function getMatchObject(collection, property, valueToSearch) { - var valueFound = _.find(collection, { - property: valueToSearch - }); - if (valueFound) { - return valueFound; - } - return _.first(collection); -} - -function searchAdmin(zendeskData) { - return function(data) { - if (data) { - return; - } - console.log('[Zendesk] Agent not found. Use the admin account'); - return rp({ - uri: zendeskData.uri + '/users/me.json', - headers: zendeskData.headers, - json: true - }); - } -} - -function handleAdmin(zendeskData) { - return function(data) { - if (!data) { - return; - } - if (data.user) { - console.log('[Zendesk] Admin selected'); - zendeskData.agent = data.user; - } - return; - } -} - -function searchEndUser(zendeskData, channel, data, subtype) { - return function() { - console.log('[Zendesk] End User to search:', getValueFromPropertyName(data, getEndUserSearchPropertyFromChannel(channel, subtype))); - return rp({ - uri: zendeskData.uri + '/search.json', - qs: { - 'query': util.format("type:user role:end-user %s:%s", getEndUserSearchQueryFromChannel(channel), getValueFromPropertyName(data, getEndUserSearchPropertyFromChannel(channel, subtype))) - }, - headers: zendeskData.headers, - json: true - }); - } -} - -function getEndUserSearchQueryFromChannel(channel) { - var property = ''; - if (channel) { - switch (channel) { - case 'voice': - property = 'phone'; - break; - default: - property = 'phone'; - console.error('Channel not recognized:', channel); - } - } - return property; -} - -function getEndUserSearchPropertyFromChannel(channel, subtype) { - var property = ''; - if (channel) { - switch (channel) { - case 'voice': - if (subtype === 'outbound') { - property = 'destcalleridnum'; - } else if (subtype === 'queue') { - property = 'calleridnum'; - } - break; - default: - property = 'calleridnum'; - console.error('Channel not recognized:', channel); - } - } - return property; -} - -function getEndUserNamePropertyFromChannel(channel, subtype) { - var property = ''; - if (channel) { - switch (channel) { - case 'voice': - if (subtype === 'outbound') { - property = 'destcalleridname'; - } else if (subtype === 'queue') { - property = 'calleridname'; - } - break; - default: - property = 'calleridname'; - console.error('Channel not recognized:', channel); - } - } - return property; -} - -function handleEndUser(zendeskData, channel, event, subtype) { - return function(data) { - if (data.results.length > 0 && data.count > 0) { - console.log('[Zendesk] End User found:', getValueFromPropertyName(event, getEndUserSearchPropertyFromChannel(channel, subtype))); - zendeskData.enduser = data.results[0]; - return zendeskData.enduser; - } - return; - } -} - -function endUserCreation(zendeskData, channel, event, subtype) { - return function(data) { - if (data) { - return; - } - console.log('[Zendesk] End User not found:', getValueFromPropertyName(event, getEndUserSearchPropertyFromChannel(channel, subtype))); - console.log(getJsonForEndUserCreation(channel, event, subtype)); - return rp({ - uri: zendeskData.uri + '/users.json', - method: 'POST', - body: { - user: getJsonForEndUserCreation(channel, event, subtype) - }, - headers: zendeskData.headers, - json: true - }); - } -} - -function getJsonForEndUserCreation(channel, data, subtype) { - var user = { - role: 'end-user' - }; - - switch (channel) { - case 'voice': - if (subtype === 'queue') { - if (isValidName(data.calleridname)) { - user.name = getValueFromPropertyName(data, getEndUserNamePropertyFromChannel(channel, subtype)); - } else { - user.name = util.format('Caller - %s', getValueFromPropertyName(data, getEndUserSearchPropertyFromChannel(channel, subtype))) - } - } else if (subtype === 'outbound') { - if (isValidName(data.destcalleridname)) { - user.name = getValueFromPropertyName(data, getEndUserNamePropertyFromChannel(channel, subtype)); - } else { - user.name = util.format('Caller - %s', getValueFromPropertyName(data, getEndUserSearchPropertyFromChannel(channel, subtype))) - } - } - user.phone = getValueFromPropertyName(data, getEndUserSearchPropertyFromChannel(channel, subtype)); - break; - default: - console.error('Channel not recognized:', channel); - } - - return user; -} - -function isValidName(name) { - return name && name !== ''; -} - -function handleEndUserCreation(zendeskData, channel, event, subtype) { - return function(data) { - if (!data) { - return; - } - if (data.user) { - console.log('[Zendesk] End User created:', getValueFromPropertyName(event, getEndUserSearchPropertyFromChannel(channel, subtype))); - zendeskData.enduser = data.user; - } - return; - } -} - -function ticketCreation(zendeskData, event, variables) { - return function() { - var ticketBody = { - //Standard Field - requester_id: zendeskData.agent.id, - submitter_id: zendeskData.enduser.id, - assignee_id: zendeskData.enduser.id, - //Tag - tags: createTagsFromConfiguration(zendeskData), - //Configurated Field - subject: createSubjectFromConfiguration(zendeskData, event, variables), - description: createDescriptionFromConfiguration(zendeskData, event, variables), - custom_fields: createCustomFieldsFromConfiguration(zendeskData, event, variables) - }; - var fields = createFieldsFromConfiguration(zendeskData); - if (fields.length > 0) { - _.forEach(fields, function(item) { - ticketBody[item.id] = item.value; - }); - } - console.log('[Zendesk] Ticket body:', ticketBody); - return rp({ - uri: zendeskData.uri + '/tickets.json', - method: 'POST', - body: { - ticket: ticketBody - }, - headers: zendeskData.headers, - json: true - }); - } -} - -function createTagsFromConfiguration(zendeskData) { - var tags = []; - if (zendeskData.configuration.Tags.length > 0) { - tags = _.map(zendeskData.configuration.Tags, 'name'); - } - return tags; -} - -function createSubjectFromConfiguration(zendeskData, event, variables) { - var subject = ''; - var stringsArray = []; - if (zendeskData.configuration.Subject.length > 0) { - var subjectConfiguration = _.sortBy(zendeskData.configuration.Subject, ['id']); - _.forEach(subjectConfiguration, function(value) { - if (value.type === 'string') { - stringsArray.push(value.content); - } else if (value.type === 'variable' && value.variableName) { - var prop = getValueFromPropertyName(event, value.variableName, zendeskData); - if (prop) { - stringsArray.push(prop.toString()); - } - } else if (value.type === 'customVariable' && value.Variable && value.Variable.name) { - variables[value.Variable.name] && stringsArray.push(variables[value.Variable.name].toString()); - } - }); - subject = stringsArray.join(' '); - } - return subject; -} - -function createDescriptionFromConfiguration(zendeskData, event, variables) { - var description = ''; - var stringsArray = []; - if (zendeskData.configuration.Description.length > 0) { - var descriptionConfiguration = _.sortBy(zendeskData.configuration.Description, ['id']); - _.forEach(descriptionConfiguration, function(value) { - if (value.type === 'string') { - stringsArray.push(value.content); - } else if (value.type === 'keyValue') { - if (value.keyType === 'string' && value.key) { - stringsArray.push(util.format('%s: %s', value.key, value.keyContent)); - } else if (value.keyType === 'variable' && value.variableName && value.key) { - var prop = getValueFromPropertyName(event, value.variableName, zendeskData); - if (prop) { - stringsArray.push(util.format('%s: %s', value.key, prop.toString())); - } - } else if (value.keyType === 'customVariable' && value.Variable && value.Variable.name && value.key) { - variables[value.Variable.name] && stringsArray.push(util.format('%s: %s', value.key, variables[value.Variable.name])); - } - } - }); - description = stringsArray.join('\n'); - } - return description; -} - -function createCustomFieldsFromConfiguration(zendeskData, event, variables) { - var customFields = []; - var fieldArray = []; - if (zendeskData.configuration.Field.length > 0) { - customFields = _.filter(zendeskData.configuration.Field, { - 'customField': true - }); - _.forEach(customFields, function(item) { - if (item.type === 'string' && item.idField) { - fieldArray.push({ - id: item.idField, - value: item.content - }); - } else if (item.type === 'variable' && item.variableName && item.idField) { - var prop = getValueFromPropertyName(event, item.variableName, zendeskData); - if (prop) { - fieldArray.push({ - id: item.idField, - value: prop.toString() - }); - } - } else if (item.type === 'customVariable' && item.Variable && item.Variable.name && item.idField) { - variables[item.Variable.name] && fieldArray.push({ - id: item.idField, - value: variables[item.Variable.name].toString() - }); - } - }); - } - return fieldArray; -} - -function createFieldsFromConfiguration(zendeskData) { - var fields = []; - var fieldArray = []; - if (zendeskData.configuration.Field.length > 0) { - fields = _.filter(zendeskData.configuration.Field, { - 'customField': false - }); - _.forEach(fields, function(item) { - if (item.type === 'string' && item.nameField) { - fieldArray.push({ - id: item.nameField, - value: item.content - }); - } - }); - } - return fieldArray; -} - -function handleTicketDisplay(zendeskData) { - return function(data) { - if (data.ticket) { - console.log('[Zendesk] Ticket created'); - zendeskData.ticket = data.ticket; - var urlDisplay = util.format('/channels/voice/agents/%d/tickets/%d/display.json', zendeskData.agent.id, zendeskData.ticket.id); - return rp({ - uri: zendeskData.uri + urlDisplay, - method: 'POST', - headers: zendeskData.headers, - json: true - }); - } - return; - } -} - -function handleReportIntegration(zendeskData, channel, data, integrationId) { - return function() { - delete data.id; - data.integration = 'zendesk'; - data.eventChannel = channel; - data.exitStatus = 'success'; - data.ticketId = zendeskData.ticket.id; - data.url = zendeskData.ticket.url; - data.integrationId = integrationId; - return ReportIntegration.create(data); - } -} - -function handleEnd(zendeskData, data, channel) { - return function() { - console.log(util.format('[Zendesk] Ticket %d displayed to agent %d', zendeskData.ticket.id, zendeskData.agent.id)); - zendeskData = undefined; - return; - } -} - -function handleError(zendeskData, channel, data, integrationId) { - return function(err) { - console.error('[Zendesk] Error in ticket creation'); - console.error('[Zendesk] Message:', err.message); - console.error('[Zendesk] Stack:', err.stack); - zendeskData = undefined; - - delete data.id; - data.integration = 'zendesk'; - data.eventChannel = channel; - data.exitStatus = 'failed'; - data.integrationId = integrationId; - ReportIntegration - .create(data) - .then(function() { - return; - }) - .catch(function(err) { - console.error('[Zendesk] Error in Report integration create'); - return; - }); - } -} - -function stripTrailingSlash(str) { - if (str.substr(-1) === '/') { - return str.substr(0, str.length - 1); - } - return str; -} - -module.exports = Zendesk; +var _0x2bc6=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x75\x74\x69\x6C","\x72\x65\x71\x75\x65\x73\x74\x2D\x70\x72\x6F\x6D\x69\x73\x65","\x5A\x65\x6E\x64\x65\x73\x6B\x49\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x5A\x65\x6E\x64\x65\x73\x6B\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E","\x52\x65\x70\x6F\x72\x74\x49\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E","\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65","\x56\x6F\x69\x63\x65\x45\x78\x74\x65\x6E\x73\x69\x6F\x6E","\x55\x73\x65\x72","\x5A\x65\x6E\x64\x65\x73\x6B\x20\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x20\x69\x6E\x69\x74\x69\x61\x6C\x69\x7A\x61\x74\x69\x6F\x6E\x2E\x2E\x2E","\x6C\x6F\x67","\x68\x61\x6E\x64\x6C\x65\x45\x76\x65\x6E\x74","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x50\x61\x73\x73\x65\x64\x20\x70\x61\x72\x61\x6D\x65\x74\x65\x72\x73\x20\x61\x72\x65\x20\x6E\x6F\x74\x20\x65\x6E\x6F\x75\x67\x68\x20\x74\x6F\x20\x63\x72\x65\x61\x74\x65\x20\x61\x20\x6E\x65\x77\x20\x74\x69\x63\x6B\x65\x74\x3A\x20\x6D\x69\x73\x73\x20\x49\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x49\x64\x20\x6F\x72\x20\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x49\x64","\x65\x72\x72\x6F\x72","\x63\x61\x74\x63\x68","\x74\x68\x65\x6E","\x66\x69\x6E\x64","\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E","\x75\x72\x69","\x68\x65\x61\x64\x65\x72\x73","\x73\x65\x72\x76\x65\x72\x55\x52\x4C","\x73\x65\x72\x76\x65\x72\x55\x72\x6C","\x5A\x65\x6E\x64\x65\x73\x6B\x41\x63\x63\x6F\x75\x6E\x74","\x66\x75\x6C\x6C\x6E\x61\x6D\x65","\x66\x69\x6E\x64\x4F\x6E\x65","\x61\x67\x65\x6E\x74","\x73\x63\x6F\x70\x65","\x61\x67\x65\x6E\x74\x4E\x61\x6D\x65","\x53\x65\x61\x72\x63\x68\x69\x6E\x67\x20\x51\x75\x65\x75\x65\x2E\x2E\x2E","\x71\x75\x65\x75\x65","\x6E\x61\x6D\x65","\x6D\x6F\x6E\x69\x74\x6F\x72\x5F\x66\x6F\x72\x6D\x61\x74","\x5B\x5A\x65\x6E\x64\x65\x73\x6B\x5D\x20\x52\x65\x63\x6F\x72\x64\x69\x6E\x67\x20\x65\x6E\x61\x62\x6C\x65\x64\x20\x66\x6F\x72\x20\x74\x68\x65\x20\x51\x75\x65\x75\x65","\x72\x65\x63\x6F\x72\x64\x45\x6E\x61\x62\x6C\x65","\x5B\x5A\x65\x6E\x64\x65\x73\x6B\x5D\x20\x51\x75\x65\x75\x65\x20\x6E\x6F\x74\x20\x66\x6F\x75\x6E\x64\x20\x6F\x72\x20\x52\x65\x63\x6F\x72\x64\x69\x6E\x67\x20\x6E\x6F\x74\x20\x65\x6E\x61\x62\x6C\x65\x64","\x72\x6F\x75\x74\x65\x49\x64","\x69\x64","\x72\x65\x63\x6F\x72\x64","\x5B\x5A\x65\x6E\x64\x65\x73\x6B\x5D\x20\x52\x65\x63\x6F\x72\x64\x69\x6E\x67\x20\x65\x6E\x61\x62\x6C\x65\x64\x20\x66\x6F\x72\x20\x74\x68\x65\x20\x52\x6F\x75\x74\x65\x20\x4F\x75\x74\x62\x6F\x75\x6E\x64","\x5B\x5A\x65\x6E\x64\x65\x73\x6B\x5D\x20\x52\x6F\x75\x74\x65\x20\x4F\x75\x74\x62\x6F\x75\x6E\x64\x20\x6E\x6F\x74\x20\x66\x6F\x75\x6E\x64\x20\x6F\x72\x20\x52\x65\x63\x6F\x72\x64\x69\x6E\x67\x20\x6E\x6F\x74\x20\x65\x6E\x61\x62\x6C\x65\x64","\x72\x65\x6D\x6F\x74\x65\x55\x72\x69","\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2F\x6A\x73\x6F\x6E","\x75\x73\x65\x72\x6E\x61\x6D\x65","\x61\x75\x74\x68\x54\x79\x70\x65","\x70\x61\x73\x73\x77\x6F\x72\x64","\x3A","\x74\x6F\x6B\x65\x6E","\x2F\x74\x6F\x6B\x65\x6E\x3A","\x41\x75\x74\x68\x6F\x72\x69\x7A\x61\x74\x69\x6F\x6E","\x42\x61\x73\x69\x63\x20","\x62\x61\x73\x65\x36\x34","\x5B\x5A\x65\x6E\x64\x65\x73\x6B\x5D\x20\x41\x67\x65\x6E\x74\x20\x74\x6F\x20\x73\x65\x61\x72\x63\x68\x3A","\x2F\x73\x65\x61\x72\x63\x68\x2E\x6A\x73\x6F\x6E","\x74\x79\x70\x65\x3A\x75\x73\x65\x72\x20\x72\x6F\x6C\x65\x3A\x61\x67\x65\x6E\x74\x20\x6E\x61\x6D\x65\x3A\x25\x73","\x66\x6F\x72\x6D\x61\x74","","\x6D\x65\x6D\x62\x65\x72\x6E\x61\x6D\x65","\x76\x6F\x69\x63\x65","\x43\x68\x61\x6E\x6E\x65\x6C\x20\x6E\x6F\x74\x20\x72\x65\x63\x6F\x67\x6E\x69\x7A\x65\x64\x3A","\x72\x65\x63\x6F\x72\x64\x69\x6E\x67\x55\x52\x4C","\x25\x73\x2F\x61\x70\x69\x2F\x76\x6F\x69\x63\x65\x2F\x72\x65\x63\x6F\x72\x64\x69\x6E\x67\x73\x2F\x25\x73\x2F\x64\x6F\x77\x6E\x6C\x6F\x61\x64\x3F\x74\x79\x70\x65\x3D\x75\x6E\x69\x71\x75\x65\x69\x64","\x75\x6E\x69\x71\x75\x65\x69\x64","\x72\x65\x73\x75\x6C\x74","\x6C\x65\x6E\x67\x74\x68","\x72\x65\x73\x75\x6C\x74\x73","\x63\x6F\x75\x6E\x74","\x5B\x5A\x65\x6E\x64\x65\x73\x6B\x5D\x20\x41\x67\x65\x6E\x74\x20\x66\x6F\x75\x6E\x64\x3A","\x66\x69\x72\x73\x74","\x5B\x5A\x65\x6E\x64\x65\x73\x6B\x5D\x20\x41\x67\x65\x6E\x74\x20\x6E\x6F\x74\x20\x66\x6F\x75\x6E\x64\x2E\x20\x55\x73\x65\x20\x74\x68\x65\x20\x61\x64\x6D\x69\x6E\x20\x61\x63\x63\x6F\x75\x6E\x74","\x2F\x75\x73\x65\x72\x73\x2F\x6D\x65\x2E\x6A\x73\x6F\x6E","\x75\x73\x65\x72","\x5B\x5A\x65\x6E\x64\x65\x73\x6B\x5D\x20\x41\x64\x6D\x69\x6E\x20\x73\x65\x6C\x65\x63\x74\x65\x64","\x5B\x5A\x65\x6E\x64\x65\x73\x6B\x5D\x20\x45\x6E\x64\x20\x55\x73\x65\x72\x20\x74\x6F\x20\x73\x65\x61\x72\x63\x68\x3A","\x74\x79\x70\x65\x3A\x75\x73\x65\x72\x20\x72\x6F\x6C\x65\x3A\x65\x6E\x64\x2D\x75\x73\x65\x72\x20\x25\x73\x3A\x25\x73","\x70\x68\x6F\x6E\x65","\x6F\x75\x74\x62\x6F\x75\x6E\x64","\x64\x65\x73\x74\x63\x61\x6C\x6C\x65\x72\x69\x64\x6E\x75\x6D","\x63\x61\x6C\x6C\x65\x72\x69\x64\x6E\x75\x6D","\x64\x65\x73\x74\x63\x61\x6C\x6C\x65\x72\x69\x64\x6E\x61\x6D\x65","\x63\x61\x6C\x6C\x65\x72\x69\x64\x6E\x61\x6D\x65","\x5B\x5A\x65\x6E\x64\x65\x73\x6B\x5D\x20\x45\x6E\x64\x20\x55\x73\x65\x72\x20\x66\x6F\x75\x6E\x64\x3A","\x65\x6E\x64\x75\x73\x65\x72","\x5B\x5A\x65\x6E\x64\x65\x73\x6B\x5D\x20\x45\x6E\x64\x20\x55\x73\x65\x72\x20\x6E\x6F\x74\x20\x66\x6F\x75\x6E\x64\x3A","\x2F\x75\x73\x65\x72\x73\x2E\x6A\x73\x6F\x6E","\x50\x4F\x53\x54","\x65\x6E\x64\x2D\x75\x73\x65\x72","\x43\x61\x6C\x6C\x65\x72\x20\x2D\x20\x25\x73","\x3C\x75\x6E\x6B\x6E\x6F\x77\x6E\x3E","\x5B\x5A\x65\x6E\x64\x65\x73\x6B\x5D\x20\x45\x6E\x64\x20\x55\x73\x65\x72\x20\x63\x72\x65\x61\x74\x65\x64\x3A","\x76\x61\x6C\x75\x65","\x66\x6F\x72\x45\x61\x63\x68","\x5B\x5A\x65\x6E\x64\x65\x73\x6B\x5D\x20\x54\x69\x63\x6B\x65\x74\x20\x62\x6F\x64\x79\x3A","\x2F\x74\x69\x63\x6B\x65\x74\x73\x2E\x6A\x73\x6F\x6E","\x54\x61\x67\x73","\x6D\x61\x70","\x53\x75\x62\x6A\x65\x63\x74","\x73\x6F\x72\x74\x42\x79","\x74\x79\x70\x65","\x73\x74\x72\x69\x6E\x67","\x63\x6F\x6E\x74\x65\x6E\x74","\x70\x75\x73\x68","\x76\x61\x72\x69\x61\x62\x6C\x65","\x76\x61\x72\x69\x61\x62\x6C\x65\x4E\x61\x6D\x65","\x63\x75\x73\x74\x6F\x6D\x56\x61\x72\x69\x61\x62\x6C\x65","\x56\x61\x72\x69\x61\x62\x6C\x65","\x20","\x6A\x6F\x69\x6E","\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E","\x6B\x65\x79\x56\x61\x6C\x75\x65","\x6B\x65\x79\x54\x79\x70\x65","\x6B\x65\x79","\x25\x73\x3A\x20\x25\x73","\x6B\x65\x79\x43\x6F\x6E\x74\x65\x6E\x74","\x0A","\x46\x69\x65\x6C\x64","\x66\x69\x6C\x74\x65\x72","\x69\x64\x46\x69\x65\x6C\x64","\x6E\x61\x6D\x65\x46\x69\x65\x6C\x64","\x74\x69\x63\x6B\x65\x74","\x5B\x5A\x65\x6E\x64\x65\x73\x6B\x5D\x20\x54\x69\x63\x6B\x65\x74\x20\x63\x72\x65\x61\x74\x65\x64","\x2F\x63\x68\x61\x6E\x6E\x65\x6C\x73\x2F\x76\x6F\x69\x63\x65\x2F\x61\x67\x65\x6E\x74\x73\x2F\x25\x64\x2F\x74\x69\x63\x6B\x65\x74\x73\x2F\x25\x64\x2F\x64\x69\x73\x70\x6C\x61\x79\x2E\x6A\x73\x6F\x6E","\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E","\x7A\x65\x6E\x64\x65\x73\x6B","\x65\x76\x65\x6E\x74\x43\x68\x61\x6E\x6E\x65\x6C","\x65\x78\x69\x74\x53\x74\x61\x74\x75\x73","\x73\x75\x63\x63\x65\x73\x73","\x74\x69\x63\x6B\x65\x74\x49\x64","\x75\x72\x6C","\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x49\x64","\x63\x72\x65\x61\x74\x65","\x5B\x5A\x65\x6E\x64\x65\x73\x6B\x5D\x20\x54\x69\x63\x6B\x65\x74\x20\x25\x64\x20\x64\x69\x73\x70\x6C\x61\x79\x65\x64\x20\x74\x6F\x20\x61\x67\x65\x6E\x74\x20\x25\x64","\x5B\x5A\x65\x6E\x64\x65\x73\x6B\x5D\x20\x45\x72\x72\x6F\x72\x20\x69\x6E\x20\x74\x69\x63\x6B\x65\x74\x20\x63\x72\x65\x61\x74\x69\x6F\x6E","\x5B\x5A\x65\x6E\x64\x65\x73\x6B\x5D\x20\x4D\x65\x73\x73\x61\x67\x65\x3A","\x6D\x65\x73\x73\x61\x67\x65","\x5B\x5A\x65\x6E\x64\x65\x73\x6B\x5D\x20\x53\x74\x61\x63\x6B\x3A","\x73\x74\x61\x63\x6B","\x66\x61\x69\x6C\x65\x64","\x5B\x5A\x65\x6E\x64\x65\x73\x6B\x5D\x20\x45\x72\x72\x6F\x72\x20\x69\x6E\x20\x52\x65\x70\x6F\x72\x74\x20\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x20\x63\x72\x65\x61\x74\x65","\x73\x75\x62\x73\x74\x72","\x2F","\x65\x78\x70\x6F\x72\x74\x73"];_0x2bc6[0];var _=require(_0x2bc6[1]);var util=require(_0x2bc6[2]);var rp=require(_0x2bc6[3]);var ZendeskIntegration=require(_0x2bc6[5])[_0x2bc6[4]];var ZendeskConfiguration=require(_0x2bc6[5])[_0x2bc6[6]];var ReportIntegration=require(_0x2bc6[5])[_0x2bc6[7]];var VoiceQueue=require(_0x2bc6[5])[_0x2bc6[8]];var VoiceExtension=require(_0x2bc6[5])[_0x2bc6[9]];var Agent=require(_0x2bc6[5])[_0x2bc6[10]];function Zendesk(){console[_0x2bc6[12]](_0x2bc6[11])}Zendesk[_0x2bc6[14]][_0x2bc6[13]]= function(_0x343dxb,_0x343dxc,_0x343dxd,_0x343dxe,_0x343dxf,_0x343dx10){var _0x343dx11={uri:undefined,headers:undefined,agent:undefined,enduser:undefined,ticket:undefined,configuration:undefined,recordEnable:false,serverURL:undefined,agentName:undefined};if(!_0x343dxb|| !_0x343dxc){console[_0x2bc6[16]](_0x2bc6[15]);return};ZendeskConfiguration[_0x2bc6[19]]({where:{id:_0x343dxc,AccountId:_0x343dxb},include:[{all:true,include:[{all:true}]}]})[_0x2bc6[18]](handleEntityNotFound())[_0x2bc6[18]](handleConnection(_0x343dx11))[_0x2bc6[18]](searchMotionAgent(_0x343dxd,_0x343dxf))[_0x2bc6[18]](handleMotionAgent(_0x343dx11))[_0x2bc6[18]](searchQueue(_0x343dxf))[_0x2bc6[18]](handleQueueRecordings(_0x343dx11,_0x343dxf))[_0x2bc6[18]](searchRoute(_0x343dxf))[_0x2bc6[18]](handleOutboundRecordings(_0x343dx11,_0x343dxf))[_0x2bc6[18]](searchAgent(_0x343dx11))[_0x2bc6[18]](handleAgent(_0x343dx11))[_0x2bc6[18]](searchAdmin(_0x343dx11))[_0x2bc6[18]](handleAdmin(_0x343dx11))[_0x2bc6[18]](searchEndUser(_0x343dx11,_0x343dxd,_0x343dxf,_0x343dxe))[_0x2bc6[18]](handleEndUser(_0x343dx11,_0x343dxd,_0x343dxf,_0x343dxe))[_0x2bc6[18]](endUserCreation(_0x343dx11,_0x343dxd,_0x343dxf,_0x343dxe))[_0x2bc6[18]](handleEndUserCreation(_0x343dx11,_0x343dxd,_0x343dxf,_0x343dxe))[_0x2bc6[18]](ticketCreation(_0x343dx11,_0x343dxf,_0x343dx10))[_0x2bc6[18]](handleTicketDisplay(_0x343dx11))[_0x2bc6[18]](handleReportIntegration(_0x343dx11,_0x343dxd,_0x343dxf,_0x343dxb))[_0x2bc6[18]](handleEnd(_0x343dx11))[_0x2bc6[17]](handleError(_0x343dx11,_0x343dxd,_0x343dxf,_0x343dxb))};function handleEntityNotFound(){return function(_0x343dx13){if(!_0x343dx13){return null};return _0x343dx13}}function handleConnection(_0x343dx11){return function(_0x343dx15){var _0x343dx16=getAccountConfiguration(_0x343dx15.ZendeskAccount);_0x343dx11[_0x2bc6[20]]= _0x343dx15;_0x343dx11[_0x2bc6[21]]= _0x343dx16[_0x2bc6[21]];_0x343dx11[_0x2bc6[22]]= _0x343dx16[_0x2bc6[22]];_0x343dx11[_0x2bc6[23]]= _0x343dx15[_0x2bc6[25]][_0x2bc6[24]]}}function searchMotionAgent(_0x343dxd,_0x343dxf){return function(){return Agent[_0x2bc6[29]](_0x2bc6[28])[_0x2bc6[27]]({where:{name:getValueFromPropertyName(_0x343dxf,getAgentSearchPropertyFromChannel(_0x343dxd))},attributes:[_0x2bc6[26]]})}}function handleMotionAgent(_0x343dx11){return function(_0x343dx19){if(_0x343dx19&& _0x343dx19[_0x2bc6[26]]){_0x343dx11[_0x2bc6[30]]= _0x343dx19[_0x2bc6[26]]};return}}function searchQueue(_0x343dxf){return function(){console[_0x2bc6[12]](_0x2bc6[31]);if(_0x343dxf[_0x2bc6[32]]){return VoiceQueue[_0x2bc6[27]]({where:{name:_0x343dxf[_0x2bc6[32]]},attributes:[_0x2bc6[33],_0x2bc6[34]]})}else {return}}}function handleQueueRecordings(_0x343dx11,_0x343dxf){return function(_0x343dx1c){if(_0x343dxf[_0x2bc6[32]]){if(_0x343dx1c&& _0x343dx1c[_0x2bc6[34]]){console[_0x2bc6[12]](_0x2bc6[35],_0x343dx1c[_0x2bc6[33]]);_0x343dx11[_0x2bc6[36]]= true}else {_0x343dx11[_0x2bc6[36]]= false;console[_0x2bc6[12]](_0x2bc6[37])}};return}}function searchRoute(_0x343dxf){return function(){if(_0x343dxf[_0x2bc6[38]]){return VoiceExtension[_0x2bc6[27]]({where:{id:_0x343dxf[_0x2bc6[38]]},attributes:[_0x2bc6[39],_0x2bc6[40]]})}else {return}}}function handleOutboundRecordings(_0x343dx11,_0x343dxf){return function(_0x343dx1f){if(_0x343dxf[_0x2bc6[38]]){if(_0x343dx1f&& _0x343dx1f[_0x2bc6[40]]){console[_0x2bc6[12]](_0x2bc6[41],_0x343dx1f[_0x2bc6[39]]);_0x343dx11[_0x2bc6[36]]= true}else {_0x343dx11[_0x2bc6[36]]= false;console[_0x2bc6[12]](_0x2bc6[42])}};return}}function getAccountConfiguration(_0x343dx21){var _0x343dx22={uri:stripTrailingSlash(_0x343dx21[_0x2bc6[43]]),headers:{"\x41\x75\x74\x68\x6F\x72\x69\x7A\x61\x74\x69\x6F\x6E":undefined,"\x43\x6F\x6E\x74\x65\x6E\x74\x2D\x54\x79\x70\x65":_0x2bc6[44],"\x41\x63\x63\x65\x70\x74":_0x2bc6[44]}};var _0x343dx23=_0x343dx21[_0x2bc6[45]];if(_0x343dx21[_0x2bc6[46]]=== _0x2bc6[47]){_0x343dx23= _0x343dx23+ _0x2bc6[48]+ _0x343dx21[_0x2bc6[47]]}else {if(_0x343dx21[_0x2bc6[46]]=== _0x2bc6[49]){_0x343dx23= _0x343dx23+ _0x2bc6[50]+ _0x343dx21[_0x2bc6[49]]}};_0x343dx22[_0x2bc6[22]][_0x2bc6[51]]= _0x2bc6[52]+ new Buffer(_0x343dx23).toString(_0x2bc6[53]);return _0x343dx22}function searchAgent(_0x343dx11){return function(){console[_0x2bc6[12]](_0x2bc6[54],_0x343dx11[_0x2bc6[30]]);return rp({uri:_0x343dx11[_0x2bc6[21]]+ _0x2bc6[55],qs:{"\x71\x75\x65\x72\x79":util[_0x2bc6[57]](_0x2bc6[56],_0x343dx11[_0x2bc6[30]])},headers:_0x343dx11[_0x2bc6[22]],json:true})}}function getAgentSearchPropertyFromChannel(_0x343dxd){var _0x343dx26=_0x2bc6[58];if(_0x343dxd){switch(_0x343dxd){case _0x2bc6[60]:_0x343dx26= _0x2bc6[59];break;default:_0x343dx26= _0x2bc6[59];console[_0x2bc6[16]](_0x2bc6[61],_0x343dxd)}};return _0x343dx26}function getValueFromPropertyName(_0x343dxf,_0x343dx26,_0x343dx11){if(_0x343dx26=== _0x2bc6[62]){if(_0x343dx11&& _0x343dx11[_0x2bc6[36]]&& _0x343dx11[_0x2bc6[23]]){return util[_0x2bc6[57]](_0x2bc6[63],stripTrailingSlash(_0x343dx11[_0x2bc6[23]]),_0x343dxf[_0x2bc6[64]])}else {return null}}else {return _[_0x2bc6[65]](_0x343dxf,_0x343dx26)}}function handleAgent(_0x343dx11){return function(_0x343dxf){if(_0x343dxf[_0x2bc6[67]][_0x2bc6[66]]> 0&& _0x343dxf[_0x2bc6[68]]> 0){console[_0x2bc6[12]](_0x2bc6[69],_0x343dx11[_0x2bc6[30]]);_0x343dx11[_0x2bc6[28]]= getMatchObject(_0x343dxf[_0x2bc6[67]],_0x2bc6[33],_0x343dx11[_0x2bc6[30]]);return _0x343dx11[_0x2bc6[28]]};return}}function getMatchObject(_0x343dx2a,_0x343dx26,_0x343dx2b){var _0x343dx2c=_[_0x2bc6[19]](_0x343dx2a,{property:_0x343dx2b});if(_0x343dx2c){return _0x343dx2c};return _[_0x2bc6[70]](_0x343dx2a)}function searchAdmin(_0x343dx11){return function(_0x343dxf){if(_0x343dxf){return};console[_0x2bc6[12]](_0x2bc6[71]);return rp({uri:_0x343dx11[_0x2bc6[21]]+ _0x2bc6[72],headers:_0x343dx11[_0x2bc6[22]],json:true})}}function handleAdmin(_0x343dx11){return function(_0x343dxf){if(!_0x343dxf){return};if(_0x343dxf[_0x2bc6[73]]){console[_0x2bc6[12]](_0x2bc6[74]);_0x343dx11[_0x2bc6[28]]= _0x343dxf[_0x2bc6[73]]};return}}function searchEndUser(_0x343dx11,_0x343dxd,_0x343dxf,_0x343dxe){return function(){console[_0x2bc6[12]](_0x2bc6[75],getValueFromPropertyName(_0x343dxf,getEndUserSearchPropertyFromChannel(_0x343dxd,_0x343dxe)));return rp({uri:_0x343dx11[_0x2bc6[21]]+ _0x2bc6[55],qs:{"\x71\x75\x65\x72\x79":util[_0x2bc6[57]](_0x2bc6[76],getEndUserSearchQueryFromChannel(_0x343dxd),getValueFromPropertyName(_0x343dxf,getEndUserSearchPropertyFromChannel(_0x343dxd,_0x343dxe)))},headers:_0x343dx11[_0x2bc6[22]],json:true})}}function getEndUserSearchQueryFromChannel(_0x343dxd){var _0x343dx26=_0x2bc6[58];if(_0x343dxd){switch(_0x343dxd){case _0x2bc6[60]:_0x343dx26= _0x2bc6[77];break;default:_0x343dx26= _0x2bc6[77];console[_0x2bc6[16]](_0x2bc6[61],_0x343dxd)}};return _0x343dx26}function getEndUserSearchPropertyFromChannel(_0x343dxd,_0x343dxe){var _0x343dx26=_0x2bc6[58];if(_0x343dxd){switch(_0x343dxd){case _0x2bc6[60]:if(_0x343dxe=== _0x2bc6[78]){_0x343dx26= _0x2bc6[79]}else {if(_0x343dxe=== _0x2bc6[32]){_0x343dx26= _0x2bc6[80]}};break;default:_0x343dx26= _0x2bc6[80];console[_0x2bc6[16]](_0x2bc6[61],_0x343dxd)}};return _0x343dx26}function getEndUserNamePropertyFromChannel(_0x343dxd,_0x343dxe){var _0x343dx26=_0x2bc6[58];if(_0x343dxd){switch(_0x343dxd){case _0x2bc6[60]:if(_0x343dxe=== _0x2bc6[78]){_0x343dx26= _0x2bc6[81]}else {if(_0x343dxe=== _0x2bc6[32]){_0x343dx26= _0x2bc6[82]}};break;default:_0x343dx26= _0x2bc6[82];console[_0x2bc6[16]](_0x2bc6[61],_0x343dxd)}};return _0x343dx26}function handleEndUser(_0x343dx11,_0x343dxd,_0x343dx34,_0x343dxe){return function(_0x343dxf){if(_0x343dxf[_0x2bc6[67]][_0x2bc6[66]]> 0&& _0x343dxf[_0x2bc6[68]]> 0){console[_0x2bc6[12]](_0x2bc6[83],getValueFromPropertyName(_0x343dx34,getEndUserSearchPropertyFromChannel(_0x343dxd,_0x343dxe)));_0x343dx11[_0x2bc6[84]]= _0x343dxf[_0x2bc6[67]][0];return _0x343dx11[_0x2bc6[84]]};return}}function endUserCreation(_0x343dx11,_0x343dxd,_0x343dx34,_0x343dxe){return function(_0x343dxf){if(_0x343dxf){return};console[_0x2bc6[12]](_0x2bc6[85],getValueFromPropertyName(_0x343dx34,getEndUserSearchPropertyFromChannel(_0x343dxd,_0x343dxe)));console[_0x2bc6[12]](getJsonForEndUserCreation(_0x343dxd,_0x343dx34,_0x343dxe));return rp({uri:_0x343dx11[_0x2bc6[21]]+ _0x2bc6[86],method:_0x2bc6[87],body:{user:getJsonForEndUserCreation(_0x343dxd,_0x343dx34,_0x343dxe)},headers:_0x343dx11[_0x2bc6[22]],json:true})}}function getJsonForEndUserCreation(_0x343dxd,_0x343dxf,_0x343dxe){var _0x343dx37={role:_0x2bc6[88]};switch(_0x343dxd){case _0x2bc6[60]:if(_0x343dxe=== _0x2bc6[32]){if(isValidName(_0x343dxf[_0x2bc6[82]])){_0x343dx37[_0x2bc6[33]]= getValueFromPropertyName(_0x343dxf,getEndUserNamePropertyFromChannel(_0x343dxd,_0x343dxe))}else {_0x343dx37[_0x2bc6[33]]= util[_0x2bc6[57]](_0x2bc6[89],getValueFromPropertyName(_0x343dxf,getEndUserSearchPropertyFromChannel(_0x343dxd,_0x343dxe)))}}else {if(_0x343dxe=== _0x2bc6[78]){if(isValidName(_0x343dxf[_0x2bc6[81]])){_0x343dx37[_0x2bc6[33]]= getValueFromPropertyName(_0x343dxf,getEndUserNamePropertyFromChannel(_0x343dxd,_0x343dxe))}else {_0x343dx37[_0x2bc6[33]]= util[_0x2bc6[57]](_0x2bc6[89],getValueFromPropertyName(_0x343dxf,getEndUserSearchPropertyFromChannel(_0x343dxd,_0x343dxe)))}}};_0x343dx37[_0x2bc6[77]]= getValueFromPropertyName(_0x343dxf,getEndUserSearchPropertyFromChannel(_0x343dxd,_0x343dxe));break;default:console[_0x2bc6[16]](_0x2bc6[61],_0x343dxd)};return _0x343dx37}function isValidName(_0x343dx39){return _0x343dx39&& _0x343dx39!== _0x2bc6[90]}function handleEndUserCreation(_0x343dx11,_0x343dxd,_0x343dx34,_0x343dxe){return function(_0x343dxf){if(!_0x343dxf){return};if(_0x343dxf[_0x2bc6[73]]){console[_0x2bc6[12]](_0x2bc6[91],getValueFromPropertyName(_0x343dx34,getEndUserSearchPropertyFromChannel(_0x343dxd,_0x343dxe)));_0x343dx11[_0x2bc6[84]]= _0x343dxf[_0x2bc6[73]]};return}}function ticketCreation(_0x343dx11,_0x343dx34,_0x343dx10){return function(){var _0x343dx3c={requester_id:_0x343dx11[_0x2bc6[28]][_0x2bc6[39]],submitter_id:_0x343dx11[_0x2bc6[84]][_0x2bc6[39]],assignee_id:_0x343dx11[_0x2bc6[84]][_0x2bc6[39]],tags:createTagsFromConfiguration(_0x343dx11),subject:createSubjectFromConfiguration(_0x343dx11,_0x343dx34,_0x343dx10),description:createDescriptionFromConfiguration(_0x343dx11,_0x343dx34,_0x343dx10),custom_fields:createCustomFieldsFromConfiguration(_0x343dx11,_0x343dx34,_0x343dx10)};var _0x343dx3d=createFieldsFromConfiguration(_0x343dx11);if(_0x343dx3d[_0x2bc6[66]]> 0){_[_0x2bc6[93]](_0x343dx3d,function(_0x343dx3e){_0x343dx3c[_0x343dx3e[_0x2bc6[39]]]= _0x343dx3e[_0x2bc6[92]]})};console[_0x2bc6[12]](_0x2bc6[94],_0x343dx3c);return rp({uri:_0x343dx11[_0x2bc6[21]]+ _0x2bc6[95],method:_0x2bc6[87],body:{ticket:_0x343dx3c},headers:_0x343dx11[_0x2bc6[22]],json:true})}}function createTagsFromConfiguration(_0x343dx11){var _0x343dx40=[];if(_0x343dx11[_0x2bc6[20]][_0x2bc6[96]][_0x2bc6[66]]> 0){_0x343dx40= _[_0x2bc6[97]](_0x343dx11[_0x2bc6[20]].Tags,_0x2bc6[33])};return _0x343dx40}function createSubjectFromConfiguration(_0x343dx11,_0x343dx34,_0x343dx10){var _0x343dx42=_0x2bc6[58];var _0x343dx43=[];if(_0x343dx11[_0x2bc6[20]][_0x2bc6[98]][_0x2bc6[66]]> 0){var _0x343dx44=_[_0x2bc6[99]](_0x343dx11[_0x2bc6[20]].Subject,[_0x2bc6[39]]);_[_0x2bc6[93]](_0x343dx44,function(_0x343dx45){if(_0x343dx45[_0x2bc6[100]]=== _0x2bc6[101]){_0x343dx43[_0x2bc6[103]](_0x343dx45[_0x2bc6[102]])}else {if(_0x343dx45[_0x2bc6[100]]=== _0x2bc6[104]&& _0x343dx45[_0x2bc6[105]]){var _0x343dx46=getValueFromPropertyName(_0x343dx34,_0x343dx45[_0x2bc6[105]],_0x343dx11);if(_0x343dx46){_0x343dx43[_0x2bc6[103]](_0x343dx46.toString())}}else {if(_0x343dx45[_0x2bc6[100]]=== _0x2bc6[106]&& _0x343dx45[_0x2bc6[107]]&& _0x343dx45[_0x2bc6[107]][_0x2bc6[33]]){_0x343dx10[_0x343dx45[_0x2bc6[107]][_0x2bc6[33]]]&& _0x343dx43[_0x2bc6[103]](_0x343dx10[_0x343dx45[_0x2bc6[107]][_0x2bc6[33]]].toString())}}}});_0x343dx42= _0x343dx43[_0x2bc6[109]](_0x2bc6[108])};return _0x343dx42}function createDescriptionFromConfiguration(_0x343dx11,_0x343dx34,_0x343dx10){var _0x343dx48=_0x2bc6[58];var _0x343dx43=[];if(_0x343dx11[_0x2bc6[20]][_0x2bc6[110]][_0x2bc6[66]]> 0){var _0x343dx49=_[_0x2bc6[99]](_0x343dx11[_0x2bc6[20]].Description,[_0x2bc6[39]]);_[_0x2bc6[93]](_0x343dx49,function(_0x343dx45){if(_0x343dx45[_0x2bc6[100]]=== _0x2bc6[101]){_0x343dx43[_0x2bc6[103]](_0x343dx45[_0x2bc6[102]])}else {if(_0x343dx45[_0x2bc6[100]]=== _0x2bc6[111]){if(_0x343dx45[_0x2bc6[112]]=== _0x2bc6[101]&& _0x343dx45[_0x2bc6[113]]){_0x343dx43[_0x2bc6[103]](util[_0x2bc6[57]](_0x2bc6[114],_0x343dx45[_0x2bc6[113]],_0x343dx45[_0x2bc6[115]]))}else {if(_0x343dx45[_0x2bc6[112]]=== _0x2bc6[104]&& _0x343dx45[_0x2bc6[105]]&& _0x343dx45[_0x2bc6[113]]){var _0x343dx46=getValueFromPropertyName(_0x343dx34,_0x343dx45[_0x2bc6[105]],_0x343dx11);if(_0x343dx46){_0x343dx43[_0x2bc6[103]](util[_0x2bc6[57]](_0x2bc6[114],_0x343dx45[_0x2bc6[113]],_0x343dx46.toString()))}}else {if(_0x343dx45[_0x2bc6[112]]=== _0x2bc6[106]&& _0x343dx45[_0x2bc6[107]]&& _0x343dx45[_0x2bc6[107]][_0x2bc6[33]]&& _0x343dx45[_0x2bc6[113]]){_0x343dx10[_0x343dx45[_0x2bc6[107]][_0x2bc6[33]]]&& _0x343dx43[_0x2bc6[103]](util[_0x2bc6[57]](_0x2bc6[114],_0x343dx45[_0x2bc6[113]],_0x343dx10[_0x343dx45[_0x2bc6[107]][_0x2bc6[33]]]))}}}}}});_0x343dx48= _0x343dx43[_0x2bc6[109]](_0x2bc6[116])};return _0x343dx48}function createCustomFieldsFromConfiguration(_0x343dx11,_0x343dx34,_0x343dx10){var _0x343dx4b=[];var _0x343dx4c=[];if(_0x343dx11[_0x2bc6[20]][_0x2bc6[117]][_0x2bc6[66]]> 0){_0x343dx4b= _[_0x2bc6[118]](_0x343dx11[_0x2bc6[20]].Field,{"\x63\x75\x73\x74\x6F\x6D\x46\x69\x65\x6C\x64":true});_[_0x2bc6[93]](_0x343dx4b,function(_0x343dx3e){if(_0x343dx3e[_0x2bc6[100]]=== _0x2bc6[101]&& _0x343dx3e[_0x2bc6[119]]){_0x343dx4c[_0x2bc6[103]]({id:_0x343dx3e[_0x2bc6[119]],value:_0x343dx3e[_0x2bc6[102]]})}else {if(_0x343dx3e[_0x2bc6[100]]=== _0x2bc6[104]&& _0x343dx3e[_0x2bc6[105]]&& _0x343dx3e[_0x2bc6[119]]){var _0x343dx46=getValueFromPropertyName(_0x343dx34,_0x343dx3e[_0x2bc6[105]],_0x343dx11);if(_0x343dx46){_0x343dx4c[_0x2bc6[103]]({id:_0x343dx3e[_0x2bc6[119]],value:_0x343dx46.toString()})}}else {if(_0x343dx3e[_0x2bc6[100]]=== _0x2bc6[106]&& _0x343dx3e[_0x2bc6[107]]&& _0x343dx3e[_0x2bc6[107]][_0x2bc6[33]]&& _0x343dx3e[_0x2bc6[119]]){_0x343dx10[_0x343dx3e[_0x2bc6[107]][_0x2bc6[33]]]&& _0x343dx4c[_0x2bc6[103]]({id:_0x343dx3e[_0x2bc6[119]],value:_0x343dx10[_0x343dx3e[_0x2bc6[107]][_0x2bc6[33]]].toString()})}}}})};return _0x343dx4c}function createFieldsFromConfiguration(_0x343dx11){var _0x343dx3d=[];var _0x343dx4c=[];if(_0x343dx11[_0x2bc6[20]][_0x2bc6[117]][_0x2bc6[66]]> 0){_0x343dx3d= _[_0x2bc6[118]](_0x343dx11[_0x2bc6[20]].Field,{"\x63\x75\x73\x74\x6F\x6D\x46\x69\x65\x6C\x64":false});_[_0x2bc6[93]](_0x343dx3d,function(_0x343dx3e){if(_0x343dx3e[_0x2bc6[100]]=== _0x2bc6[101]&& _0x343dx3e[_0x2bc6[120]]){_0x343dx4c[_0x2bc6[103]]({id:_0x343dx3e[_0x2bc6[120]],value:_0x343dx3e[_0x2bc6[102]]})}})};return _0x343dx4c}function handleTicketDisplay(_0x343dx11){return function(_0x343dxf){if(_0x343dxf[_0x2bc6[121]]){console[_0x2bc6[12]](_0x2bc6[122]);_0x343dx11[_0x2bc6[121]]= _0x343dxf[_0x2bc6[121]];var _0x343dx4f=util[_0x2bc6[57]](_0x2bc6[123],_0x343dx11[_0x2bc6[28]][_0x2bc6[39]],_0x343dx11[_0x2bc6[121]][_0x2bc6[39]]);return rp({uri:_0x343dx11[_0x2bc6[21]]+ _0x343dx4f,method:_0x2bc6[87],headers:_0x343dx11[_0x2bc6[22]],json:true})};return}}function handleReportIntegration(_0x343dx11,_0x343dxd,_0x343dxf,_0x343dxb){return function(){delete _0x343dxf[_0x2bc6[39]];_0x343dxf[_0x2bc6[124]]= _0x2bc6[125];_0x343dxf[_0x2bc6[126]]= _0x343dxd;_0x343dxf[_0x2bc6[127]]= _0x2bc6[128];_0x343dxf[_0x2bc6[129]]= _0x343dx11[_0x2bc6[121]][_0x2bc6[39]];_0x343dxf[_0x2bc6[130]]= _0x343dx11[_0x2bc6[121]][_0x2bc6[130]];_0x343dxf[_0x2bc6[131]]= _0x343dxb;return ReportIntegration[_0x2bc6[132]](_0x343dxf)}}function handleEnd(_0x343dx11,_0x343dxf,_0x343dxd){return function(){console[_0x2bc6[12]](util[_0x2bc6[57]](_0x2bc6[133],_0x343dx11[_0x2bc6[121]][_0x2bc6[39]],_0x343dx11[_0x2bc6[28]][_0x2bc6[39]]));_0x343dx11= undefined;return}}function handleError(_0x343dx11,_0x343dxd,_0x343dxf,_0x343dxb){return function(_0x343dx53){console[_0x2bc6[16]](_0x2bc6[134]);console[_0x2bc6[16]](_0x2bc6[135],_0x343dx53[_0x2bc6[136]]);console[_0x2bc6[16]](_0x2bc6[137],_0x343dx53[_0x2bc6[138]]);_0x343dx11= undefined;delete _0x343dxf[_0x2bc6[39]];_0x343dxf[_0x2bc6[124]]= _0x2bc6[125];_0x343dxf[_0x2bc6[126]]= _0x343dxd;_0x343dxf[_0x2bc6[127]]= _0x2bc6[139];_0x343dxf[_0x2bc6[131]]= _0x343dxb;ReportIntegration[_0x2bc6[132]](_0x343dxf)[_0x2bc6[18]](function(){return})[_0x2bc6[17]](function(_0x343dx53){console[_0x2bc6[16]](_0x2bc6[140]);return})}}function stripTrailingSlash(_0x343dx55){if(_0x343dx55[_0x2bc6[141]](-1) === _0x2bc6[142]){return _0x343dx55[_0x2bc6[141]](0,_0x343dx55[_0x2bc6[66]]- 1)};return _0x343dx55}module[_0x2bc6[143]]= Zendesk \ No newline at end of file diff --git a/server/config/license/hardware.js b/server/config/license/hardware.js index 57ddc35..06eb997 100644 --- a/server/config/license/hardware.js +++ b/server/config/license/hardware.js @@ -1,59 +1 @@ -'use strict'; -/** - * Imports - */ -var os = require('os'), - crypto = require('crypto'), - path = require('path'), - machineId = require('machine-uuid'), - machine = require('bimedia-machine-uuid'), - async = require('async'); - - -function getInterfaces() { - var ifaces = []; - var interfaces = os.networkInterfaces(); - for (var dev in interfaces) { - // ... and find the one that matches the criteria - var iface = interfaces[dev].filter(function(details) { - return details.family === 'IPv4' && details.internal === false; - }); - ifaces = ifaces.concat(iface); - } - - return ifaces; -} - -/** - * Retrieve unique MAC addresses - * - * @returns {string} array of MAC addresses - */ -function macAddress() { - var ifaces = getInterfaces(); - return (ifaces.length > 0) ? ifaces[0].mac : '00:00:00:00:00:00'; -} - -/** - * Retrieve unique IP addresses - * - * @returns {string} array of IP addresses - */ -function ipAddress() { - var ifaces = getInterfaces(); - return (ifaces.length > 0) ? ifaces[0].address : '127.0.0.1'; -} - -/** - * Generate the machine ID - * - * @param {Bolean} [format] true to return a formatted ID - * @returns {String} machine ID - */ -module.exports = function(format) { - var s = machine.uuid + '|' + macAddress() + '|' + ipAddress(); - var ID = crypto.createHash('md5').update(s).digest('hex'); - var FORMATTED = ID.substring(0, 8) + '-' + ID.substring(8, 12) + '-' + ID.substring(12, 16) + '-' + ID.substring(16, 20) + '-' + ID.substring(20); - - return format === true ? FORMATTED : ID; -}; +var _0x40e0=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6F\x73","\x63\x72\x79\x70\x74\x6F","\x70\x61\x74\x68","\x6D\x61\x63\x68\x69\x6E\x65\x2D\x75\x75\x69\x64","\x62\x69\x6D\x65\x64\x69\x61\x2D\x6D\x61\x63\x68\x69\x6E\x65\x2D\x75\x75\x69\x64","\x61\x73\x79\x6E\x63","\x6E\x65\x74\x77\x6F\x72\x6B\x49\x6E\x74\x65\x72\x66\x61\x63\x65\x73","\x66\x61\x6D\x69\x6C\x79","\x49\x50\x76\x34","\x69\x6E\x74\x65\x72\x6E\x61\x6C","\x66\x69\x6C\x74\x65\x72","\x63\x6F\x6E\x63\x61\x74","\x6C\x65\x6E\x67\x74\x68","\x6D\x61\x63","\x30\x30\x3A\x30\x30\x3A\x30\x30\x3A\x30\x30\x3A\x30\x30\x3A\x30\x30","\x61\x64\x64\x72\x65\x73\x73","\x31\x32\x37\x2E\x30\x2E\x30\x2E\x31","\x65\x78\x70\x6F\x72\x74\x73","\x75\x75\x69\x64","\x7C","\x68\x65\x78","\x64\x69\x67\x65\x73\x74","\x75\x70\x64\x61\x74\x65","\x6D\x64\x35","\x63\x72\x65\x61\x74\x65\x48\x61\x73\x68","\x73\x75\x62\x73\x74\x72\x69\x6E\x67","\x2D"];_0x40e0[0];var os=require(_0x40e0[1]),crypto=require(_0x40e0[2]),path=require(_0x40e0[3]),machineId=require(_0x40e0[4]),machine=require(_0x40e0[5]),async=require(_0x40e0[6]);function getInterfaces(){var _0xdb9dx8=[];var _0xdb9dx9=os[_0x40e0[7]]();for(var _0xdb9dxa in _0xdb9dx9){var _0xdb9dxb=_0xdb9dx9[_0xdb9dxa][_0x40e0[11]](function(_0xdb9dxc){return _0xdb9dxc[_0x40e0[8]]=== _0x40e0[9]&& _0xdb9dxc[_0x40e0[10]]=== false});_0xdb9dx8= _0xdb9dx8[_0x40e0[12]](_0xdb9dxb)};return _0xdb9dx8}function macAddress(){var _0xdb9dx8=getInterfaces();return (_0xdb9dx8[_0x40e0[13]]> 0)?_0xdb9dx8[0][_0x40e0[14]]:_0x40e0[15]}function ipAddress(){var _0xdb9dx8=getInterfaces();return (_0xdb9dx8[_0x40e0[13]]> 0)?_0xdb9dx8[0][_0x40e0[16]]:_0x40e0[17]}module[_0x40e0[18]]= function(_0xdb9dxf){var _0xdb9dx10=machine[_0x40e0[19]]+ _0x40e0[20]+ macAddress()+ _0x40e0[20]+ ipAddress();var _0xdb9dx11=crypto[_0x40e0[25]](_0x40e0[24])[_0x40e0[23]](_0xdb9dx10)[_0x40e0[22]](_0x40e0[21]);var _0xdb9dx12=_0xdb9dx11[_0x40e0[26]](0,8)+ _0x40e0[27]+ _0xdb9dx11[_0x40e0[26]](8,12)+ _0x40e0[27]+ _0xdb9dx11[_0x40e0[26]](12,16)+ _0x40e0[27]+ _0xdb9dx11[_0x40e0[26]](16,20)+ _0x40e0[27]+ _0xdb9dx11[_0x40e0[26]](20);return _0xdb9dxf=== true?_0xdb9dx12:_0xdb9dx11} \ No newline at end of file diff --git a/server/config/license/index.js b/server/config/license/index.js index a134cf7..bedefec 100644 --- a/server/config/license/index.js +++ b/server/config/license/index.js @@ -1,87 +1 @@ -'use strict'; - -var rp = require('request-promise'); -var util = require('util'); -var url = require('url'); -var crypto = require('crypto'); -var moment = require('moment'); -var CronJob = require('cron').CronJob; -var licenseService = require('./license.service'); -var config = require('../environment'); -var License = require('../../models').License; -var session = require('../environment').session; - -const expirationTh = 7; - -// Define the factory -function licenseManager() { - // Store the settings in a closure - var job = new CronJob({ - cronTime: '* * * * *', - onTick: function() { - - return License - .findOrCreate({ - where: { - id: 1 - } - }) - .spread(function(license) { - var data = {}; - - if (license.data2) { - var decipher = crypto.createDecipher('aes-256-ctr', session.secret); - var dec = decipher.update(license.data2, 'base64', 'utf8') - dec += decipher.final('utf8'); - - if (moment().diff(dec, 'days') > expirationTh) { - data.data1 = licenseService.getUuid(); - data.data2 = null; - } - } - - if (!license.data1) { - // No token saved - data.data1 = licenseService.getUuid(); - } else { - // Token saved - if ((data.data1 !== licenseService.getUuid()) && !license.data2) { - - var cipher = crypto.createCipher('aes-256-ctr', session.secret); - data.data2 = cipher.update(moment().format("YYYY-MM-DD HH:mm"), 'utf8', 'base64'); - // moment().format("YYYY-MM-DD HH:mm") - data.data2 += cipher.final('base64'); - } - } - - return license - .update(data) - .then(function(data) { - return rp({ - uri: config.provisioning + '/servers/' + licenseService.getUuid() + '/check', - json: true // Automatically stringifies the body to JSON - }); - }) - .then(function(data) { - if (license.data1 === data.uuid) { - return license - .update({ - license: data.license, - data2: null - }); - } - }); - }) - .catch(function(err) { - console.error(err); - }); - }, - start: true - }); - - job.start(); - - return {}; -} - -module.exports = licenseManager; +var _0x4142=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x72\x65\x71\x75\x65\x73\x74\x2D\x70\x72\x6F\x6D\x69\x73\x65","\x75\x74\x69\x6C","\x75\x72\x6C","\x63\x72\x79\x70\x74\x6F","\x6D\x6F\x6D\x65\x6E\x74","\x43\x72\x6F\x6E\x4A\x6F\x62","\x63\x72\x6F\x6E","\x2E\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x2E\x2E\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x4C\x69\x63\x65\x6E\x73\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x73\x73\x69\x6F\x6E","\x2A\x20\x2A\x20\x2A\x20\x2A\x20\x2A","\x65\x72\x72\x6F\x72","\x63\x61\x74\x63\x68","\x64\x61\x74\x61\x32","\x61\x65\x73\x2D\x32\x35\x36\x2D\x63\x74\x72","\x73\x65\x63\x72\x65\x74","\x63\x72\x65\x61\x74\x65\x44\x65\x63\x69\x70\x68\x65\x72","\x62\x61\x73\x65\x36\x34","\x75\x74\x66\x38","\x75\x70\x64\x61\x74\x65","\x66\x69\x6E\x61\x6C","\x64\x61\x79\x73","\x64\x69\x66\x66","\x64\x61\x74\x61\x31","\x67\x65\x74\x55\x75\x69\x64","\x63\x72\x65\x61\x74\x65\x43\x69\x70\x68\x65\x72","\x59\x59\x59\x59\x2D\x4D\x4D\x2D\x44\x44\x20\x48\x48\x3A\x6D\x6D","\x66\x6F\x72\x6D\x61\x74","\x75\x75\x69\x64","\x6C\x69\x63\x65\x6E\x73\x65","\x74\x68\x65\x6E","\x70\x72\x6F\x76\x69\x73\x69\x6F\x6E\x69\x6E\x67","\x2F\x73\x65\x72\x76\x65\x72\x73\x2F","\x2F\x63\x68\x65\x63\x6B","\x73\x70\x72\x65\x61\x64","\x66\x69\x6E\x64\x4F\x72\x43\x72\x65\x61\x74\x65","\x73\x74\x61\x72\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x4142[0];var rp=require(_0x4142[1]);var util=require(_0x4142[2]);var url=require(_0x4142[3]);var crypto=require(_0x4142[4]);var moment=require(_0x4142[5]);var CronJob=require(_0x4142[7])[_0x4142[6]];var licenseService=require(_0x4142[8]);var config=require(_0x4142[9]);var License=require(_0x4142[11])[_0x4142[10]];var session=require(_0x4142[9])[_0x4142[12]];const expirationTh=7;function licenseManager(){var _0x42e2xd= new CronJob({cronTime:_0x4142[13],onTick:function(){return License[_0x4142[38]]({where:{id:1}})[_0x4142[37]](function(_0x42e2xf){var _0x42e2x10={};if(_0x42e2xf[_0x4142[16]]){var _0x42e2x11=crypto[_0x4142[19]](_0x4142[17],session[_0x4142[18]]);var _0x42e2x12=_0x42e2x11[_0x4142[22]](_0x42e2xf[_0x4142[16]],_0x4142[20],_0x4142[21]);_0x42e2x12+= _0x42e2x11[_0x4142[23]](_0x4142[21]);if(moment()[_0x4142[25]](_0x42e2x12,_0x4142[24])> expirationTh){_0x42e2x10[_0x4142[26]]= licenseService[_0x4142[27]]();_0x42e2x10[_0x4142[16]]= null}};if(!_0x42e2xf[_0x4142[26]]){_0x42e2x10[_0x4142[26]]= licenseService[_0x4142[27]]()}else {if((_0x42e2x10[_0x4142[26]]!== licenseService[_0x4142[27]]())&& !_0x42e2xf[_0x4142[16]]){var _0x42e2x13=crypto[_0x4142[28]](_0x4142[17],session[_0x4142[18]]);_0x42e2x10[_0x4142[16]]= _0x42e2x13[_0x4142[22]](moment()[_0x4142[30]](_0x4142[29]),_0x4142[21],_0x4142[20]);_0x42e2x10[_0x4142[16]]+= _0x42e2x13[_0x4142[23]](_0x4142[20])}};return _0x42e2xf[_0x4142[22]](_0x42e2x10)[_0x4142[33]](function(_0x42e2x10){return rp({uri:config[_0x4142[34]]+ _0x4142[35]+ licenseService[_0x4142[27]]()+ _0x4142[36],json:true})})[_0x4142[33]](function(_0x42e2x10){if(_0x42e2xf[_0x4142[26]]=== _0x42e2x10[_0x4142[31]]){return _0x42e2xf[_0x4142[22]]({license:_0x42e2x10[_0x4142[32]],data2:null})}})})[_0x4142[15]](function(_0x42e2xe){console[_0x4142[14]](_0x42e2xe)})},start:true});_0x42e2xd[_0x4142[39]]();return {}}module[_0x4142[40]]= licenseManager \ No newline at end of file diff --git a/server/config/license/license.service.js b/server/config/license/license.service.js index 8a052d0..9127072 100644 --- a/server/config/license/license.service.js +++ b/server/config/license/license.service.js @@ -1,365 +1 @@ -'use strict'; - -var compose = require('composable-middleware'); -var moment = require('moment'); -var crypto = require('crypto'); -var util = require('util'); -var os = require('os'); -var exec = require('child_process').execSync; -var config = require('../environment'); - -var User = require('../../models').User; -var Telephone = require('../../models').Telephone; -var Setting = require('../../models').Setting; -var License = require('../../models').License; - -var demoLicense = { - users: 1, - agents: 1, - telephones: 0, - chat: false, - mail: false, - fax: false, - jscripty: false, - messaging: false, - openchannel: false, - custom: false, - cm: false, - dialer: false, - update: false, - description: 'DEMO LICENSE' -}; - -function getUuid() { - switch (os.platform()) { - case 'win32': - return exec('dmidecode --string system-uuid', { - encoding: 'utf8' - }).replace('\r\n', ''); - default: - - return require('./hardware')(true); - } -} - -/** - * Checks if the chat meets the requirements - */ - -function checkLicense(type) { - return compose() - .use(function(req, res, next) { - return License - .findOrCreate({ - where: { - id: 1 - } - }) - .spread(function(license) { - var _license = null; - var validLicense = false; - - try { - if (license.license) { - _license = decrypt(license.license, license.data1); - _license = JSON.parse(_license); - } else { - _license = demoLicense; - } - } catch (err) { - console.log('decrypt error', err); - _license = demoLicense; - } - - validLicense = _license[type]; - - if (!validLicense) return res.sendStatus(403); - return next(); - }) - .catch(function(err) { - return next(err); - }); - }); - -} - -function hasChat() { - return checkLicense('chat'); -} - -/** - * Checks if the sms meets the requirements - */ -function hasSms() { - return checkLicense('messaging'); -} - -/** - * Checks if the cm meets the requirements - */ -function hasCm() { - return checkLicense('cm'); -} - -/** - * Checks if the update meets the requirements - */ -function hasUpdate() { - return checkLicense('update'); -} - -/** - * Checks if the mail meets the requirements - */ -function hasMail() { - return checkLicense('mail'); -} - -/** - * Checks if the fax meets the requirements - */ -function hasFax() { - return checkLicense('fax'); -} - -/** - * Checks if the jscripty meets the requirements - */ -function hasJscripty() { - return checkLicense('jscripty'); -} - -function hasCustom() { - return checkLicense('custom'); -} - -/** - * Checks if the openchannel meets the requirements - */ -function hasOpenchannel() { - return checkLicense('openchannel'); -} - -/** - * Checks if the date meets the requirements - */ -function isValidDate() { - return compose() - .use(function(req, res, next) { - return License - .findOrCreate({ - where: { - id: 1 - } - }) - .spread(function(license) { - var _license = null, - date = false; - - try { - if (license.license) { - _license = decrypt(license.license, license.data1); - _license = JSON.parse(_license); - - if (moment().isSameOrBefore(_license.expiration)) { - date = true; - } - } - } catch (err) { - console.log('decrypt error', err); - } - - if (!date) return res.sendStatus(403); - return next(); - }) - .catch(function(err) { - return next(err); - }); - }); -} - -/** - * Checks if the users meets the requirements - */ -function isUsersLimit() { - return compose() - .use(function(req, res, next) { - var license; - - return License - .findOrCreate({ - where: { - id: 1 - } - }) - .spread(function(myLicense) { - license = myLicense; - - return User - .count({ - where: { - $or: [{ - role: 'admin' - }, { - role: 'user' - }] - } - }); - }) - .then(function(users) { - var _license = null, - valid = false; - try { - if (license.license) { - _license = decrypt(license.license, license.data1); - _license = JSON.parse(_license); - } else { - _license = demoLicense; - } - } catch (err) { - console.log('decrypt error', err); - _license = demoLicense; - } - - if (_license.users > users) valid = true; - - if (!valid) return res.status(403).send({ - message: 'Maximum users limit have been reached' - }); - return next(); - }) - .catch(function(err) { - return next(err); - }); - }); -} - -/** - * Checks if the telephone meets the requirements - */ -function isTelephonesLimit() { - return compose() - .use(function(req, res, next) { - var license; - - return License - .findOrCreate({ - where: { - id: 1 - } - }) - .spread(function(myLicense) { - license = myLicense; - - return User - .count({ - where: { - role: 'telephone' - } - }); - }) - .then(function(telephones) { - var _license = null, - valid = false; - try { - if (license.license) { - _license = decrypt(license.license, license.data1); - _license = JSON.parse(_license); - } else { - _license = demoLicense; - } - } catch (err) { - console.log('decrypt error', err); - _license = demoLicense; - } - - if (_license.telephones > telephones) valid = true; - - if (!valid) return res.status(403).send({ - message: 'Maximum telephones limit have been reached' - }); - return next(); - }) - .catch(function(err) { - return next(err); - }); - }); -} - -/** - * Checks if the telephone meets the requirements - */ -function isValidAgent() { - return function(user) { - var license; - var _valid = false; - - if (user.role === 'admin' || user.role === 'user' || (user.role === 'agent' && user.online)) { - _valid = true; - } - - return License - .findOrCreate({ - where: { - id: 1 - } - }) - .spread(function(myLicense) { - license = myLicense; - - return User - .count({ - where: { - role: 'agent', - online: true - } - }); - }) - .then(function(agents) { - var _license = null; - try { - if (license.license) { - _license = decrypt(license.license, license.data1); - _license = JSON.parse(_license); - } else { - _license = demoLicense; - } - } catch (err) { - console.log('decrypt error', err); - _license = demoLicense; - } - - if (_license.agents > agents) _valid = true; - - return _valid; - }); - } -} - -function decrypt(cypher, uuid) { - // var uuid = getUuid(); - var prefix = uuid.split('-')[4]; - var suffix = uuid.split('-')[0]; - - var decipher = crypto.createDecipher('aes-256-ctr', util.format('%s:%s:%s', prefix, uuid, suffix)); - var license = decipher.update(cypher, 'base64', 'utf8') - license += decipher.final('utf8'); - - return license; -} - -exports.getUuid = getUuid; -exports.isValidDate = isValidDate; -exports.isUsersLimit = isUsersLimit; -exports.isTelephonesLimit = isTelephonesLimit; -exports.hasChat = hasChat; -exports.hasMail = hasMail; -exports.hasFax = hasFax; -exports.hasOpenchannel = hasOpenchannel; -exports.hasSms = hasSms; -exports.hasJscripty = hasJscripty; -exports.hasCm = hasCm; -exports.hasUpdate = hasUpdate; -exports.isValidAgent = isValidAgent; -exports.demoLicense = demoLicense; -exports.decrypt = decrypt; +var _0x1503=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x63\x6F\x6D\x70\x6F\x73\x61\x62\x6C\x65\x2D\x6D\x69\x64\x64\x6C\x65\x77\x61\x72\x65","\x6D\x6F\x6D\x65\x6E\x74","\x63\x72\x79\x70\x74\x6F","\x75\x74\x69\x6C","\x6F\x73","\x65\x78\x65\x63\x53\x79\x6E\x63","\x63\x68\x69\x6C\x64\x5F\x70\x72\x6F\x63\x65\x73\x73","\x2E\x2E\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x55\x73\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x54\x65\x6C\x65\x70\x68\x6F\x6E\x65","\x53\x65\x74\x74\x69\x6E\x67","\x4C\x69\x63\x65\x6E\x73\x65","\x44\x45\x4D\x4F\x20\x4C\x49\x43\x45\x4E\x53\x45","\x0D\x0A","","\x72\x65\x70\x6C\x61\x63\x65","\x64\x6D\x69\x64\x65\x63\x6F\x64\x65\x20\x2D\x2D\x73\x74\x72\x69\x6E\x67\x20\x73\x79\x73\x74\x65\x6D\x2D\x75\x75\x69\x64","\x75\x74\x66\x38","\x77\x69\x6E\x33\x32","\x2E\x2F\x68\x61\x72\x64\x77\x61\x72\x65","\x70\x6C\x61\x74\x66\x6F\x72\x6D","\x63\x61\x74\x63\x68","\x6C\x69\x63\x65\x6E\x73\x65","\x64\x61\x74\x61\x31","\x70\x61\x72\x73\x65","\x64\x65\x63\x72\x79\x70\x74\x20\x65\x72\x72\x6F\x72","\x6C\x6F\x67","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x73\x70\x72\x65\x61\x64","\x66\x69\x6E\x64\x4F\x72\x43\x72\x65\x61\x74\x65","\x75\x73\x65","\x63\x68\x61\x74","\x6D\x65\x73\x73\x61\x67\x69\x6E\x67","\x63\x6D","\x75\x70\x64\x61\x74\x65","\x6D\x61\x69\x6C","\x66\x61\x78","\x6A\x73\x63\x72\x69\x70\x74\x79","\x63\x75\x73\x74\x6F\x6D","\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C","\x65\x78\x70\x69\x72\x61\x74\x69\x6F\x6E","\x69\x73\x53\x61\x6D\x65\x4F\x72\x42\x65\x66\x6F\x72\x65","\x75\x73\x65\x72\x73","\x4D\x61\x78\x69\x6D\x75\x6D\x20\x75\x73\x65\x72\x73\x20\x6C\x69\x6D\x69\x74\x20\x68\x61\x76\x65\x20\x62\x65\x65\x6E\x20\x72\x65\x61\x63\x68\x65\x64","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x61\x64\x6D\x69\x6E","\x75\x73\x65\x72","\x63\x6F\x75\x6E\x74","\x74\x65\x6C\x65\x70\x68\x6F\x6E\x65\x73","\x4D\x61\x78\x69\x6D\x75\x6D\x20\x74\x65\x6C\x65\x70\x68\x6F\x6E\x65\x73\x20\x6C\x69\x6D\x69\x74\x20\x68\x61\x76\x65\x20\x62\x65\x65\x6E\x20\x72\x65\x61\x63\x68\x65\x64","\x74\x65\x6C\x65\x70\x68\x6F\x6E\x65","\x72\x6F\x6C\x65","\x61\x67\x65\x6E\x74","\x6F\x6E\x6C\x69\x6E\x65","\x61\x67\x65\x6E\x74\x73","\x2D","\x73\x70\x6C\x69\x74","\x61\x65\x73\x2D\x32\x35\x36\x2D\x63\x74\x72","\x25\x73\x3A\x25\x73\x3A\x25\x73","\x66\x6F\x72\x6D\x61\x74","\x63\x72\x65\x61\x74\x65\x44\x65\x63\x69\x70\x68\x65\x72","\x62\x61\x73\x65\x36\x34","\x66\x69\x6E\x61\x6C","\x67\x65\x74\x55\x75\x69\x64","\x69\x73\x56\x61\x6C\x69\x64\x44\x61\x74\x65","\x69\x73\x55\x73\x65\x72\x73\x4C\x69\x6D\x69\x74","\x69\x73\x54\x65\x6C\x65\x70\x68\x6F\x6E\x65\x73\x4C\x69\x6D\x69\x74","\x68\x61\x73\x43\x68\x61\x74","\x68\x61\x73\x4D\x61\x69\x6C","\x68\x61\x73\x46\x61\x78","\x68\x61\x73\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C","\x68\x61\x73\x53\x6D\x73","\x68\x61\x73\x4A\x73\x63\x72\x69\x70\x74\x79","\x68\x61\x73\x43\x6D","\x68\x61\x73\x55\x70\x64\x61\x74\x65","\x69\x73\x56\x61\x6C\x69\x64\x41\x67\x65\x6E\x74","\x64\x65\x6D\x6F\x4C\x69\x63\x65\x6E\x73\x65","\x64\x65\x63\x72\x79\x70\x74"];_0x1503[0];var compose=require(_0x1503[1]);var moment=require(_0x1503[2]);var crypto=require(_0x1503[3]);var util=require(_0x1503[4]);var os=require(_0x1503[5]);var exec=require(_0x1503[7])[_0x1503[6]];var config=require(_0x1503[8]);var User=require(_0x1503[10])[_0x1503[9]];var Telephone=require(_0x1503[10])[_0x1503[11]];var Setting=require(_0x1503[10])[_0x1503[12]];var License=require(_0x1503[10])[_0x1503[13]];var demoLicense={users:1,agents:1,telephones:0,chat:false,mail:false,fax:false,jscripty:false,messaging:false,openchannel:false,custom:false,cm:false,dialer:false,update:false,description:_0x1503[14]};function getUuid(){switch(os[_0x1503[22]]()){case _0x1503[20]:return exec(_0x1503[18],{encoding:_0x1503[19]})[_0x1503[17]](_0x1503[15],_0x1503[16]);default:return require(_0x1503[21])(true)}}function checkLicense(_0x911dxf){return compose()[_0x1503[32]](function(_0x911dx10,_0x911dx11,_0x911dx12){return License[_0x1503[31]]({where:{id:1}})[_0x1503[30]](function(_0x911dx14){var _0x911dx15=null;var _0x911dx16=false;try{if(_0x911dx14[_0x1503[24]]){_0x911dx15= decrypt(_0x911dx14[_0x1503[24]],_0x911dx14[_0x1503[25]]);_0x911dx15= JSON[_0x1503[26]](_0x911dx15)}else {_0x911dx15= demoLicense}}catch(err){console[_0x1503[28]](_0x1503[27],err);_0x911dx15= demoLicense};_0x911dx16= _0x911dx15[_0x911dxf];if(!_0x911dx16){return _0x911dx11[_0x1503[29]](403)};return _0x911dx12()})[_0x1503[23]](function(_0x911dx13){return _0x911dx12(_0x911dx13)})})}function hasChat(){return checkLicense(_0x1503[33])}function hasSms(){return checkLicense(_0x1503[34])}function hasCm(){return checkLicense(_0x1503[35])}function hasUpdate(){return checkLicense(_0x1503[36])}function hasMail(){return checkLicense(_0x1503[37])}function hasFax(){return checkLicense(_0x1503[38])}function hasJscripty(){return checkLicense(_0x1503[39])}function hasCustom(){return checkLicense(_0x1503[40])}function hasOpenchannel(){return checkLicense(_0x1503[41])}function isValidDate(){return compose()[_0x1503[32]](function(_0x911dx10,_0x911dx11,_0x911dx12){return License[_0x1503[31]]({where:{id:1}})[_0x1503[30]](function(_0x911dx14){var _0x911dx15=null,_0x911dx21=false;try{if(_0x911dx14[_0x1503[24]]){_0x911dx15= decrypt(_0x911dx14[_0x1503[24]],_0x911dx14[_0x1503[25]]);_0x911dx15= JSON[_0x1503[26]](_0x911dx15);if(moment()[_0x1503[43]](_0x911dx15[_0x1503[42]])){_0x911dx21= true}}}catch(err){console[_0x1503[28]](_0x1503[27],err)};if(!_0x911dx21){return _0x911dx11[_0x1503[29]](403)};return _0x911dx12()})[_0x1503[23]](function(_0x911dx13){return _0x911dx12(_0x911dx13)})})}function isUsersLimit(){return compose()[_0x1503[32]](function(_0x911dx10,_0x911dx11,_0x911dx12){var _0x911dx14;return License[_0x1503[31]]({where:{id:1}})[_0x1503[30]](function(_0x911dx25){_0x911dx14= _0x911dx25;return User[_0x1503[51]]({where:{$or:[{role:_0x1503[49]},{role:_0x1503[50]}]}})})[_0x1503[48]](function(_0x911dx23){var _0x911dx15=null,_0x911dx24=false;try{if(_0x911dx14[_0x1503[24]]){_0x911dx15= decrypt(_0x911dx14[_0x1503[24]],_0x911dx14[_0x1503[25]]);_0x911dx15= JSON[_0x1503[26]](_0x911dx15)}else {_0x911dx15= demoLicense}}catch(err){console[_0x1503[28]](_0x1503[27],err);_0x911dx15= demoLicense};if(_0x911dx15[_0x1503[44]]> _0x911dx23){_0x911dx24= true};if(!_0x911dx24){return _0x911dx11[_0x1503[47]](403)[_0x1503[46]]({message:_0x1503[45]})};return _0x911dx12()})[_0x1503[23]](function(_0x911dx13){return _0x911dx12(_0x911dx13)})})}function isTelephonesLimit(){return compose()[_0x1503[32]](function(_0x911dx10,_0x911dx11,_0x911dx12){var _0x911dx14;return License[_0x1503[31]]({where:{id:1}})[_0x1503[30]](function(_0x911dx25){_0x911dx14= _0x911dx25;return User[_0x1503[51]]({where:{role:_0x1503[54]}})})[_0x1503[48]](function(_0x911dx27){var _0x911dx15=null,_0x911dx24=false;try{if(_0x911dx14[_0x1503[24]]){_0x911dx15= decrypt(_0x911dx14[_0x1503[24]],_0x911dx14[_0x1503[25]]);_0x911dx15= JSON[_0x1503[26]](_0x911dx15)}else {_0x911dx15= demoLicense}}catch(err){console[_0x1503[28]](_0x1503[27],err);_0x911dx15= demoLicense};if(_0x911dx15[_0x1503[52]]> _0x911dx27){_0x911dx24= true};if(!_0x911dx24){return _0x911dx11[_0x1503[47]](403)[_0x1503[46]]({message:_0x1503[53]})};return _0x911dx12()})[_0x1503[23]](function(_0x911dx13){return _0x911dx12(_0x911dx13)})})}function isValidAgent(){return function(_0x911dx29){var _0x911dx14;var _0x911dx2a=false;if(_0x911dx29[_0x1503[55]]=== _0x1503[49]|| _0x911dx29[_0x1503[55]]=== _0x1503[50]|| (_0x911dx29[_0x1503[55]]=== _0x1503[56]&& _0x911dx29[_0x1503[57]])){_0x911dx2a= true};return License[_0x1503[31]]({where:{id:1}})[_0x1503[30]](function(_0x911dx25){_0x911dx14= _0x911dx25;return User[_0x1503[51]]({where:{role:_0x1503[56],online:true}})})[_0x1503[48]](function(_0x911dx2b){var _0x911dx15=null;try{if(_0x911dx14[_0x1503[24]]){_0x911dx15= decrypt(_0x911dx14[_0x1503[24]],_0x911dx14[_0x1503[25]]);_0x911dx15= JSON[_0x1503[26]](_0x911dx15)}else {_0x911dx15= demoLicense}}catch(err){console[_0x1503[28]](_0x1503[27],err);_0x911dx15= demoLicense};if(_0x911dx15[_0x1503[58]]> _0x911dx2b){_0x911dx2a= true};return _0x911dx2a})}}function decrypt(_0x911dx2d,_0x911dx2e){var _0x911dx2f=_0x911dx2e[_0x1503[60]](_0x1503[59])[4];var _0x911dx30=_0x911dx2e[_0x1503[60]](_0x1503[59])[0];var _0x911dx31=crypto[_0x1503[64]](_0x1503[61],util[_0x1503[63]](_0x1503[62],_0x911dx2f,_0x911dx2e,_0x911dx30));var _0x911dx14=_0x911dx31[_0x1503[36]](_0x911dx2d,_0x1503[65],_0x1503[19]);_0x911dx14+= _0x911dx31[_0x1503[66]](_0x1503[19]);return _0x911dx14}exports[_0x1503[67]]= getUuid;exports[_0x1503[68]]= isValidDate;exports[_0x1503[69]]= isUsersLimit;exports[_0x1503[70]]= isTelephonesLimit;exports[_0x1503[71]]= hasChat;exports[_0x1503[72]]= hasMail;exports[_0x1503[73]]= hasFax;exports[_0x1503[74]]= hasOpenchannel;exports[_0x1503[75]]= hasSms;exports[_0x1503[76]]= hasJscripty;exports[_0x1503[77]]= hasCm;exports[_0x1503[78]]= hasUpdate;exports[_0x1503[79]]= isValidAgent;exports[_0x1503[80]]= demoLicense;exports[_0x1503[81]]= decrypt \ No newline at end of file diff --git a/server/config/local.env.sample.js b/server/config/local.env.sample.js index 58ae668..a569b83 100644 --- a/server/config/local.env.sample.js +++ b/server/config/local.env.sample.js @@ -1,23 +1 @@ -'use strict'; - -// Use local.env.js for environment variables that grunt will set when the server starts locally. -// Use for your api keys, secrets, etc. This file should not be tracked by git. -// -// You will need to set these on the server you deploy to. - -module.exports = { - DOMAIN: 'http://localhost:9000', - SESSION_SECRET: 'xcallyshuttle-secret', - - FACEBOOK_ID: 'app-id', - FACEBOOK_SECRET: 'secret', - - TWITTER_ID: 'app-id', - TWITTER_SECRET: 'secret', - - GOOGLE_ID: 'app-id', - GOOGLE_SECRET: 'secret', - - // Control debug level for modules using visionmedia/debug - DEBUG: '' -}; +var _0x9678=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x6F\x72\x74\x73","\x68\x74\x74\x70\x3A\x2F\x2F\x6C\x6F\x63\x61\x6C\x68\x6F\x73\x74\x3A\x39\x30\x30\x30","\x78\x63\x61\x6C\x6C\x79\x73\x68\x75\x74\x74\x6C\x65\x2D\x73\x65\x63\x72\x65\x74","\x61\x70\x70\x2D\x69\x64","\x73\x65\x63\x72\x65\x74",""];_0x9678[0];module[_0x9678[1]]= {DOMAIN:_0x9678[2],SESSION_SECRET:_0x9678[3],FACEBOOK_ID:_0x9678[4],FACEBOOK_SECRET:_0x9678[5],TWITTER_ID:_0x9678[4],TWITTER_SECRET:_0x9678[5],GOOGLE_ID:_0x9678[4],GOOGLE_SECRET:_0x9678[5],DEBUG:_0x9678[6]} \ No newline at end of file diff --git a/server/config/logger.js b/server/config/logger.js index 1542f7e..d99c29b 100644 --- a/server/config/logger.js +++ b/server/config/logger.js @@ -1,120 +1 @@ -var winston = require('winston'); -var path = require('path'); -var config = require('./environment'); - -winston.emitErrs = true; - -var debug = new winston.Logger({ - transports: [ - new winston.transports.Console({ - level: 'debug', - handleExceptions: true, - json: false, - colorize: true - }) - ] -}); - -if (config.logging.debugToFile) { - debug.add( - winston.transports.File, { - name: 'debug-file', - level: 'debug', - filename: config.logging.debug, - handleExceptions: true, - json: true, - maxsize: 5242880, //5MB - maxFiles: 5, - colorize: false - } - ); -} - -var info = new winston.Logger({ - transports: [ - new winston.transports.File({ - name: 'info-file', - level: 'info', - filename: config.logging.info, - handleExceptions: true, - json: true, - maxsize: 5242880, //5MB - maxFiles: 5, - colorize: false - }), - new winston.transports.Console({ - level: 'info', - handleExceptions: true, - json: false, - colorize: true - }) - ] -}); - -var warn = new winston.Logger({ - transports: [ - new winston.transports.File({ - name: 'warn-file', - level: 'warn', - filename: config.logging.warn, - handleExceptions: true, - json: true, - maxsize: 5242880, //5MB - maxFiles: 5, - colorize: false - }), - new winston.transports.Console({ - level: 'warn', - handleExceptions: true, - json: false, - colorize: true - }) - ] -}); - -var error = new winston.Logger({ - transports: [ - new winston.transports.File({ - name: 'error-file', - level: 'error', - filename: config.logging.error, - handleExceptions: true, - json: true, - maxsize: 5242880, //5MB - maxFiles: 5, - colorize: false - }), - new winston.transports.Console({ - level: 'error', - handleExceptions: true, - json: false, - colorize: true - }) - ] -}); - -var loggers = { - debug: function(msg, callback) { - debug.debug(msg, callback); - }, - info: function(msg, callback) { - info.info(msg, callback); - }, - warn: function(msg, callback) { - warn.warn(msg, callback); - }, - error: function(msg, callback) { - error.error(msg, callback); - }, - log: function(level, msg, callback) { - var lvl = exports[level]; - lvl(msg, callback); - } -}; - -module.exports = loggers; -module.exports.stream = { - write: function(message, encoding) { - loggers.info(message); - } -}; +var _0xf700=["\x77\x69\x6E\x73\x74\x6F\x6E","\x70\x61\x74\x68","\x2E\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x65\x6D\x69\x74\x45\x72\x72\x73","\x64\x65\x62\x75\x67","\x74\x72\x61\x6E\x73\x70\x6F\x72\x74\x73","\x64\x65\x62\x75\x67\x54\x6F\x46\x69\x6C\x65","\x6C\x6F\x67\x67\x69\x6E\x67","\x64\x65\x62\x75\x67\x2D\x66\x69\x6C\x65","\x61\x64\x64","\x69\x6E\x66\x6F\x2D\x66\x69\x6C\x65","\x69\x6E\x66\x6F","\x77\x61\x72\x6E\x2D\x66\x69\x6C\x65","\x77\x61\x72\x6E","\x65\x72\x72\x6F\x72\x2D\x66\x69\x6C\x65","\x65\x72\x72\x6F\x72","\x65\x78\x70\x6F\x72\x74\x73","\x73\x74\x72\x65\x61\x6D"];var winston=require(_0xf700[0]);var path=require(_0xf700[1]);var config=require(_0xf700[2]);winston[_0xf700[3]]= true;var debug= new winston.Logger({transports:[ new winston[_0xf700[5]].Console({level:_0xf700[4],handleExceptions:true,json:false,colorize:true})]});if(config[_0xf700[7]][_0xf700[6]]){debug[_0xf700[9]](winston[_0xf700[5]].File,{name:_0xf700[8],level:_0xf700[4],filename:config[_0xf700[7]][_0xf700[4]],handleExceptions:true,json:true,maxsize:5242880,maxFiles:5,colorize:false})};var info= new winston.Logger({transports:[ new winston[_0xf700[5]].File({name:_0xf700[10],level:_0xf700[11],filename:config[_0xf700[7]][_0xf700[11]],handleExceptions:true,json:true,maxsize:5242880,maxFiles:5,colorize:false}), new winston[_0xf700[5]].Console({level:_0xf700[11],handleExceptions:true,json:false,colorize:true})]});var warn= new winston.Logger({transports:[ new winston[_0xf700[5]].File({name:_0xf700[12],level:_0xf700[13],filename:config[_0xf700[7]][_0xf700[13]],handleExceptions:true,json:true,maxsize:5242880,maxFiles:5,colorize:false}), new winston[_0xf700[5]].Console({level:_0xf700[13],handleExceptions:true,json:false,colorize:true})]});var error= new winston.Logger({transports:[ new winston[_0xf700[5]].File({name:_0xf700[14],level:_0xf700[15],filename:config[_0xf700[7]][_0xf700[15]],handleExceptions:true,json:true,maxsize:5242880,maxFiles:5,colorize:false}), new winston[_0xf700[5]].Console({level:_0xf700[15],handleExceptions:true,json:false,colorize:true})]});var loggers={debug:function(_0xd401x9,_0xd401xa){debug[_0xf700[4]](_0xd401x9,_0xd401xa)},info:function(_0xd401x9,_0xd401xa){info[_0xf700[11]](_0xd401x9,_0xd401xa)},warn:function(_0xd401x9,_0xd401xa){warn[_0xf700[13]](_0xd401x9,_0xd401xa)},error:function(_0xd401x9,_0xd401xa){error[_0xf700[15]](_0xd401x9,_0xd401xa)},log:function(_0xd401xb,_0xd401x9,_0xd401xa){var _0xd401xc=exports[_0xd401xb];_0xd401xc(_0xd401x9,_0xd401xa)}};module[_0xf700[16]]= loggers;module[_0xf700[16]][_0xf700[17]]= {write:function(_0xd401xd,_0xd401xe){loggers[_0xf700[11]](_0xd401xd)}} \ No newline at end of file diff --git a/server/config/openchannel/custom.js b/server/config/openchannel/custom.js index ba3c589..30a8d33 100644 --- a/server/config/openchannel/custom.js +++ b/server/config/openchannel/custom.js @@ -1,274 +1 @@ -'use strict'; - -var _ = require('lodash'); -var Promise = require('bluebird'); -var Util = require('../util'); -var moment = require('moment'); -var path = require('path'); -var util = require('util'); -var fs = require('fs'); -var Agent = require('../../models').User; -var OpenchannelRoom = require('../../models').OpenchannelRoom; -var OpenchannelMessage = require('../../models').OpenchannelMessage; -var OpenchannelAccount = require('../../models').OpenchannelAccount; -var ReportOpenchannel = require('../../models').ReportOpenchannel; -var Action = require('../../models').Action; -var path = require('path'); -var fs = require('fs'); -var Contact = require('../../models').Contact; - - -var Scheduler = require('../routing/scheduler'); - -function Custom() { - console.log('open channel Initialization...'); - this.account = null; -} - -Custom.prototype.init = function(doc) { - var self = this; - console.log("Open channel - Account " + doc.name + " CREATE"); - self.account = doc; - OpenchannelAccount.afterUpdate(function(doc) { - if (self.account && doc.id === self.account.id) { - self.onUpdate(doc); - } - }); - ReportOpenchannel.afterUpdate(function(doc) { - if (self.account && doc.accountid == self.account.id) { - if (doc.changed('connectid')) { - self.webhook(doc, 'accept'); - } - if (doc.changed('rejectedAt')) { - self.webhook(doc, 'reject'); - } - } - }); - OpenchannelRoom.afterUpdate(function(doc) { - if (self.account && doc.OpenchannelAccountId == self.account.id) { - if (doc.changed('status') && doc.status === 'CLOSED') { - self.webhook(doc, 'close'); - } - } - }) - OpenchannelAccount.afterDestroy(function(doc) { - if (self.account && doc.id === self.account.id) { - self.onRemove(doc); - } - }); - OpenchannelMessage.afterCreate(function(doc, opt) { - - if (self.account && self.account.id == doc.dataValues.OpenchannelAccountId) { - - if (doc.status === 'RECEIVED') { - var scheduler = new Scheduler({ - channel: 'openchannel', - uniqueid: util.format('%s.%s', moment().unix(), doc.OpenchannelRoomId), - messageid: doc.id, - roomid: doc.OpenchannelRoomId, - accountid: self.account.id, - accountname: self.account.name, - from: doc.from - }) - - scheduler.init(); - } - - self.onSend(doc, opt); - } - }); -}; - -Custom.prototype.onUpdate = function(doc) { - if (!doc.changed('state')) { - console.log("Open channel - Account " + doc.name + " UPDATE"); - this.account = null; - this.account = doc; - } -} - -Custom.prototype.onRemove = function(doc) { - console.log("[Open channel - Account " + doc.name + " DESTROY"); - this.account = null; -} - -Custom.prototype.onSend = function(Message, opt) { - // var self = this; - var _Account = this.account; - var _mMessage = Message; - var _Room; - var _mAgent; - - if (_mMessage.status === 'SENDING') { - - return Promise - .all([]) - .then(getRoom(_mMessage)) - .then(function(Room) { - _Room = Room; - return _mMessage - .setOpenchannelRoom(Room.id); - }) - .then(function() { - return _Room - .updateAttributes({ - status: 'PENDING', - lastEvent: 'SENDING', - lastEventAt: moment().format('YYYY-MM-DD HH:mm:ss'), - openchannelOut: ++_Room.openchannelOut - }, { - individualHooks: true, - user: opt.user - }); - }) - .then(function(message) { - return Agent. - findById(_mMessage.UserId); - }) - .then(function(mAgent) { - _mAgent = mAgent; - return _Room - .addUser(_mAgent); - }) - .then(function() { - console.log("SENDING Message..."); - if (_Account.replyMethod && _Account.replyUrl) { - var message = { - from: _mMessage.from, - to: _mMessage.to, - body: _mMessage.body, - UserId: _mMessage.UserId, - OpenchannelAccountId: _mMessage.OpenchannelAccountId, - OpenchannelRoomId: _mMessage.OpenchannelRoomId - }; - return Util - .sendRequest(message, _Account.replyMethod, _Account.replyUrl) - } else { - throw { - name: "ERROR", - message: " Account HTTP Method or URL is not configured. Contact your administrator!!" - }; - - } - }) - .then(function(res) { - // console.log('response', res); - console.log(" Message SENT..."); - return _mMessage - .update({ - status: 'SENT', - res_data: JSON.stringify(res) - }) - }) - .then(function() { - return _Room - .updateAttributes({ - lastEvent: 'SENT', - lastEventAt: moment().format('YYYY-MM-DD HH:mm:ss') - }); - }) - .catch(function(err) { - console.log('err', err); - _mMessage - .update({ - status: 'FAILED', - res_data: JSON.stringify(err) - }) - .then(function() { - return _Room - .updateAttributes({ - lastEvent: 'FAILED', - lastEventAt: moment().format('YYYY-MM-DD HH:mm:ss') - }); - }) - .catch(function(err) { - console.log('Error updating error status'); - }); - - }) - } -} - -function getRoom(_mMessage) { - return function() { - if (_mMessage.OpenchannelRoomId) { - return OpenchannelRoom - .findById(_mMessage.OpenchannelRoomId) - } else { - return OpenchannelRoom - .findAll({ - limit: 1, - where: { - contact: _mMessage.to, - OpenchannelAccountId: _mMessage.OpenchannelAccountId - }, - order: [ - ['createdAt', 'DESC'] - ] - }) - .then(function(room) { - var room = room[0]; - if (!room || room.status === 'CLOSED') { - var parentID = room ? room.id : null; - return OpenchannelRoom - .create({ - contact: _mMessage.to, - OpenchannelAccountId: _mMessage.OpenchannelAccountId, - status: 'PENDING', - ParentId: parentID - }) - } - return room; - }) - } - - } -} - - -function execRequest(doc, method, url) { - Util.sendRequest(doc, method, url) - .then(function(values) { - console.log('request successeful!'); - - }) - .catch(function(err) { - console.log('request failed!'); - - }) -} -Custom.prototype.webhook = function(doc, hook) { - var _Account = this.account; - - switch (hook) { - case 'accept': - if (_Account.acceptMethod && _Account.acceptUrl) { - console.log('Openchannel account <' + _Account.name + '> executing accept webhook'); - execRequest(doc.dataValues, _Account.acceptMethod, _Account.acceptUrl); - } - if (_Account.actions.length) { - _.forEach(_Account.actions, function(action) { - if (action.enabled) { - Util.execAction(action, doc); - } - }) - } - break; - case 'reject': - if (_Account.rejectMethod && _Account.rejectUrl) { - console.log('Openchannel account <' + _Account.name + '> executing reject webhook'); - execRequest(doc.dataValues, _Account.rejectMethod, _Account.rejectUrl); - } - break; - case 'close': - if (_Account.closeMethod && _Account.closeUrl) { - console.log('Openchannel account <' + _Account.name + '> executing close webhook'); - execRequest(doc.dataValues, _Account.closeMethod, _Account.closeUrl); - } - break; - default: - console.log('Webhook not recognized'); - } -} - -module.exports = Custom; +var _0x4668=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x62\x6C\x75\x65\x62\x69\x72\x64","\x2E\x2E\x2F\x75\x74\x69\x6C","\x6D\x6F\x6D\x65\x6E\x74","\x70\x61\x74\x68","\x75\x74\x69\x6C","\x66\x73","\x55\x73\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x52\x6F\x6F\x6D","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x4D\x65\x73\x73\x61\x67\x65","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x41\x63\x63\x6F\x75\x6E\x74","\x52\x65\x70\x6F\x72\x74\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C","\x41\x63\x74\x69\x6F\x6E","\x43\x6F\x6E\x74\x61\x63\x74","\x2E\x2E\x2F\x72\x6F\x75\x74\x69\x6E\x67\x2F\x73\x63\x68\x65\x64\x75\x6C\x65\x72","\x6F\x70\x65\x6E\x20\x63\x68\x61\x6E\x6E\x65\x6C\x20\x49\x6E\x69\x74\x69\x61\x6C\x69\x7A\x61\x74\x69\x6F\x6E\x2E\x2E\x2E","\x6C\x6F\x67","\x61\x63\x63\x6F\x75\x6E\x74","\x69\x6E\x69\x74","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x4F\x70\x65\x6E\x20\x63\x68\x61\x6E\x6E\x65\x6C\x20\x2D\x20\x41\x63\x63\x6F\x75\x6E\x74\x20","\x6E\x61\x6D\x65","\x20\x43\x52\x45\x41\x54\x45","\x69\x64","\x6F\x6E\x55\x70\x64\x61\x74\x65","\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x61\x63\x63\x6F\x75\x6E\x74\x69\x64","\x63\x6F\x6E\x6E\x65\x63\x74\x69\x64","\x63\x68\x61\x6E\x67\x65\x64","\x61\x63\x63\x65\x70\x74","\x77\x65\x62\x68\x6F\x6F\x6B","\x72\x65\x6A\x65\x63\x74\x65\x64\x41\x74","\x72\x65\x6A\x65\x63\x74","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x41\x63\x63\x6F\x75\x6E\x74\x49\x64","\x73\x74\x61\x74\x75\x73","\x43\x4C\x4F\x53\x45\x44","\x63\x6C\x6F\x73\x65","\x6F\x6E\x52\x65\x6D\x6F\x76\x65","\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79","\x64\x61\x74\x61\x56\x61\x6C\x75\x65\x73","\x52\x45\x43\x45\x49\x56\x45\x44","\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C","\x25\x73\x2E\x25\x73","\x75\x6E\x69\x78","\x66\x6F\x72\x6D\x61\x74","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x52\x6F\x6F\x6D\x49\x64","\x66\x72\x6F\x6D","\x6F\x6E\x53\x65\x6E\x64","\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x73\x74\x61\x74\x65","\x20\x55\x50\x44\x41\x54\x45","\x5B\x4F\x70\x65\x6E\x20\x63\x68\x61\x6E\x6E\x65\x6C\x20\x2D\x20\x41\x63\x63\x6F\x75\x6E\x74\x20","\x20\x44\x45\x53\x54\x52\x4F\x59","\x53\x45\x4E\x44\x49\x4E\x47","\x65\x72\x72","\x45\x72\x72\x6F\x72\x20\x75\x70\x64\x61\x74\x69\x6E\x67\x20\x65\x72\x72\x6F\x72\x20\x73\x74\x61\x74\x75\x73","\x63\x61\x74\x63\x68","\x46\x41\x49\x4C\x45\x44","\x59\x59\x59\x59\x2D\x4D\x4D\x2D\x44\x44\x20\x48\x48\x3A\x6D\x6D\x3A\x73\x73","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x74\x68\x65\x6E","\x73\x74\x72\x69\x6E\x67\x69\x66\x79","\x75\x70\x64\x61\x74\x65","\x53\x45\x4E\x54","\x20\x4D\x65\x73\x73\x61\x67\x65\x20\x53\x45\x4E\x54\x2E\x2E\x2E","\x53\x45\x4E\x44\x49\x4E\x47\x20\x4D\x65\x73\x73\x61\x67\x65\x2E\x2E\x2E","\x72\x65\x70\x6C\x79\x4D\x65\x74\x68\x6F\x64","\x72\x65\x70\x6C\x79\x55\x72\x6C","\x74\x6F","\x62\x6F\x64\x79","\x55\x73\x65\x72\x49\x64","\x73\x65\x6E\x64\x52\x65\x71\x75\x65\x73\x74","\x45\x52\x52\x4F\x52","\x20\x41\x63\x63\x6F\x75\x6E\x74\x20\x48\x54\x54\x50\x20\x4D\x65\x74\x68\x6F\x64\x20\x6F\x72\x20\x55\x52\x4C\x20\x69\x73\x20\x6E\x6F\x74\x20\x63\x6F\x6E\x66\x69\x67\x75\x72\x65\x64\x2E\x20\x43\x6F\x6E\x74\x61\x63\x74\x20\x79\x6F\x75\x72\x20\x61\x64\x6D\x69\x6E\x69\x73\x74\x72\x61\x74\x6F\x72\x21\x21","\x61\x64\x64\x55\x73\x65\x72","\x66\x69\x6E\x64\x42\x79\x49\x64","\x50\x45\x4E\x44\x49\x4E\x47","\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x4F\x75\x74","\x75\x73\x65\x72","\x73\x65\x74\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x52\x6F\x6F\x6D","\x61\x6C\x6C","\x63\x72\x65\x61\x74\x65","\x63\x72\x65\x61\x74\x65\x64\x41\x74","\x44\x45\x53\x43","\x66\x69\x6E\x64\x41\x6C\x6C","\x72\x65\x71\x75\x65\x73\x74\x20\x66\x61\x69\x6C\x65\x64\x21","\x72\x65\x71\x75\x65\x73\x74\x20\x73\x75\x63\x63\x65\x73\x73\x65\x66\x75\x6C\x21","\x61\x63\x63\x65\x70\x74\x4D\x65\x74\x68\x6F\x64","\x61\x63\x63\x65\x70\x74\x55\x72\x6C","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x20\x61\x63\x63\x6F\x75\x6E\x74\x20\x3C","\x3E\x20\x65\x78\x65\x63\x75\x74\x69\x6E\x67\x20\x61\x63\x63\x65\x70\x74\x20\x77\x65\x62\x68\x6F\x6F\x6B","\x6C\x65\x6E\x67\x74\x68","\x61\x63\x74\x69\x6F\x6E\x73","\x65\x6E\x61\x62\x6C\x65\x64","\x65\x78\x65\x63\x41\x63\x74\x69\x6F\x6E","\x66\x6F\x72\x45\x61\x63\x68","\x72\x65\x6A\x65\x63\x74\x4D\x65\x74\x68\x6F\x64","\x72\x65\x6A\x65\x63\x74\x55\x72\x6C","\x3E\x20\x65\x78\x65\x63\x75\x74\x69\x6E\x67\x20\x72\x65\x6A\x65\x63\x74\x20\x77\x65\x62\x68\x6F\x6F\x6B","\x63\x6C\x6F\x73\x65\x4D\x65\x74\x68\x6F\x64","\x63\x6C\x6F\x73\x65\x55\x72\x6C","\x3E\x20\x65\x78\x65\x63\x75\x74\x69\x6E\x67\x20\x63\x6C\x6F\x73\x65\x20\x77\x65\x62\x68\x6F\x6F\x6B","\x57\x65\x62\x68\x6F\x6F\x6B\x20\x6E\x6F\x74\x20\x72\x65\x63\x6F\x67\x6E\x69\x7A\x65\x64","\x65\x78\x70\x6F\x72\x74\x73"];_0x4668[0];var _=require(_0x4668[1]);var Promise=require(_0x4668[2]);var Util=require(_0x4668[3]);var moment=require(_0x4668[4]);var path=require(_0x4668[5]);var util=require(_0x4668[6]);var fs=require(_0x4668[7]);var Agent=require(_0x4668[9])[_0x4668[8]];var OpenchannelRoom=require(_0x4668[9])[_0x4668[10]];var OpenchannelMessage=require(_0x4668[9])[_0x4668[11]];var OpenchannelAccount=require(_0x4668[9])[_0x4668[12]];var ReportOpenchannel=require(_0x4668[9])[_0x4668[13]];var Action=require(_0x4668[9])[_0x4668[14]];var path=require(_0x4668[5]);var fs=require(_0x4668[7]);var Contact=require(_0x4668[9])[_0x4668[15]];var Scheduler=require(_0x4668[16]);function Custom(){console[_0x4668[18]](_0x4668[17]);this[_0x4668[19]]= null}Custom[_0x4668[21]][_0x4668[20]]= function(_0xfc1cx11){var _0xfc1cx12=this;console[_0x4668[18]](_0x4668[22]+ _0xfc1cx11[_0x4668[23]]+ _0x4668[24]);_0xfc1cx12[_0x4668[19]]= _0xfc1cx11;OpenchannelAccount[_0x4668[27]](function(_0xfc1cx11){if(_0xfc1cx12[_0x4668[19]]&& _0xfc1cx11[_0x4668[25]]=== _0xfc1cx12[_0x4668[19]][_0x4668[25]]){_0xfc1cx12[_0x4668[26]](_0xfc1cx11)}});ReportOpenchannel[_0x4668[27]](function(_0xfc1cx11){if(_0xfc1cx12[_0x4668[19]]&& _0xfc1cx11[_0x4668[28]]== _0xfc1cx12[_0x4668[19]][_0x4668[25]]){if(_0xfc1cx11[_0x4668[30]](_0x4668[29])){_0xfc1cx12[_0x4668[32]](_0xfc1cx11,_0x4668[31])};if(_0xfc1cx11[_0x4668[30]](_0x4668[33])){_0xfc1cx12[_0x4668[32]](_0xfc1cx11,_0x4668[34])}}});OpenchannelRoom[_0x4668[27]](function(_0xfc1cx11){if(_0xfc1cx12[_0x4668[19]]&& _0xfc1cx11[_0x4668[35]]== _0xfc1cx12[_0x4668[19]][_0x4668[25]]){if(_0xfc1cx11[_0x4668[30]](_0x4668[36])&& _0xfc1cx11[_0x4668[36]]=== _0x4668[37]){_0xfc1cx12[_0x4668[32]](_0xfc1cx11,_0x4668[38])}}});OpenchannelAccount[_0x4668[40]](function(_0xfc1cx11){if(_0xfc1cx12[_0x4668[19]]&& _0xfc1cx11[_0x4668[25]]=== _0xfc1cx12[_0x4668[19]][_0x4668[25]]){_0xfc1cx12[_0x4668[39]](_0xfc1cx11)}});OpenchannelMessage[_0x4668[50]](function(_0xfc1cx11,_0xfc1cx13){if(_0xfc1cx12[_0x4668[19]]&& _0xfc1cx12[_0x4668[19]][_0x4668[25]]== _0xfc1cx11[_0x4668[41]][_0x4668[35]]){if(_0xfc1cx11[_0x4668[36]]=== _0x4668[42]){var _0xfc1cx14= new Scheduler({channel:_0x4668[43],uniqueid:util[_0x4668[46]](_0x4668[44],moment()[_0x4668[45]](),_0xfc1cx11.OpenchannelRoomId),messageid:_0xfc1cx11[_0x4668[25]],roomid:_0xfc1cx11[_0x4668[47]],accountid:_0xfc1cx12[_0x4668[19]][_0x4668[25]],accountname:_0xfc1cx12[_0x4668[19]][_0x4668[23]],from:_0xfc1cx11[_0x4668[48]]});_0xfc1cx14[_0x4668[20]]()};_0xfc1cx12[_0x4668[49]](_0xfc1cx11,_0xfc1cx13)}})};Custom[_0x4668[21]][_0x4668[26]]= function(_0xfc1cx11){if(!_0xfc1cx11[_0x4668[30]](_0x4668[51])){console[_0x4668[18]](_0x4668[22]+ _0xfc1cx11[_0x4668[23]]+ _0x4668[52]);this[_0x4668[19]]= null;this[_0x4668[19]]= _0xfc1cx11}};Custom[_0x4668[21]][_0x4668[39]]= function(_0xfc1cx11){console[_0x4668[18]](_0x4668[53]+ _0xfc1cx11[_0x4668[23]]+ _0x4668[54]);this[_0x4668[19]]= null};Custom[_0x4668[21]][_0x4668[49]]= function(_0xfc1cx15,_0xfc1cx13){var _0xfc1cx16=this[_0x4668[19]];var _0xfc1cx17=_0xfc1cx15;var _0xfc1cx18;var _0xfc1cx19;if(_0xfc1cx17[_0x4668[36]]=== _0x4668[55]){return Promise[_0x4668[82]]([])[_0x4668[62]](getRoom(_0xfc1cx17))[_0x4668[62]](function(_0xfc1cx1e){_0xfc1cx18= _0xfc1cx1e;return _0xfc1cx17[_0x4668[81]](_0xfc1cx1e[_0x4668[25]])})[_0x4668[62]](function(){return _0xfc1cx18[_0x4668[61]]({status:_0x4668[78],lastEvent:_0x4668[55],lastEventAt:moment()[_0x4668[46]](_0x4668[60]),openchannelOut:++_0xfc1cx18[_0x4668[79]]},{individualHooks:true,user:_0xfc1cx13[_0x4668[80]]})})[_0x4668[62]](function(_0xfc1cx1c){return Agent[_0x4668[77]](_0xfc1cx17.UserId)})[_0x4668[62]](function(_0xfc1cx1d){_0xfc1cx19= _0xfc1cx1d;return _0xfc1cx18[_0x4668[76]](_0xfc1cx19)})[_0x4668[62]](function(){console[_0x4668[18]](_0x4668[67]);if(_0xfc1cx16[_0x4668[68]]&& _0xfc1cx16[_0x4668[69]]){var _0xfc1cx1c={from:_0xfc1cx17[_0x4668[48]],to:_0xfc1cx17[_0x4668[70]],body:_0xfc1cx17[_0x4668[71]],UserId:_0xfc1cx17[_0x4668[72]],OpenchannelAccountId:_0xfc1cx17[_0x4668[35]],OpenchannelRoomId:_0xfc1cx17[_0x4668[47]]};return Util[_0x4668[73]](_0xfc1cx1c,_0xfc1cx16[_0x4668[68]],_0xfc1cx16[_0x4668[69]])}else {throw {name:_0x4668[74],message:_0x4668[75]}}})[_0x4668[62]](function(_0xfc1cx1b){console[_0x4668[18]](_0x4668[66]);return _0xfc1cx17[_0x4668[64]]({status:_0x4668[65],res_data:JSON[_0x4668[63]](_0xfc1cx1b)})})[_0x4668[62]](function(){return _0xfc1cx18[_0x4668[61]]({lastEvent:_0x4668[65],lastEventAt:moment()[_0x4668[46]](_0x4668[60])})})[_0x4668[58]](function(_0xfc1cx1a){console[_0x4668[18]](_0x4668[56],_0xfc1cx1a);_0xfc1cx17[_0x4668[64]]({status:_0x4668[59],res_data:JSON[_0x4668[63]](_0xfc1cx1a)})[_0x4668[62]](function(){return _0xfc1cx18[_0x4668[61]]({lastEvent:_0x4668[59],lastEventAt:moment()[_0x4668[46]](_0x4668[60])})})[_0x4668[58]](function(_0xfc1cx1a){console[_0x4668[18]](_0x4668[57])})})}};function getRoom(_0xfc1cx17){return function(){if(_0xfc1cx17[_0x4668[47]]){return OpenchannelRoom[_0x4668[77]](_0xfc1cx17.OpenchannelRoomId)}else {return OpenchannelRoom[_0x4668[86]]({limit:1,where:{contact:_0xfc1cx17[_0x4668[70]],OpenchannelAccountId:_0xfc1cx17[_0x4668[35]]},order:[[_0x4668[84],_0x4668[85]]]})[_0x4668[62]](function(_0xfc1cx20){var _0xfc1cx20=_0xfc1cx20[0];if(!_0xfc1cx20|| _0xfc1cx20[_0x4668[36]]=== _0x4668[37]){var _0xfc1cx21=_0xfc1cx20?_0xfc1cx20[_0x4668[25]]:null;return OpenchannelRoom[_0x4668[83]]({contact:_0xfc1cx17[_0x4668[70]],OpenchannelAccountId:_0xfc1cx17[_0x4668[35]],status:_0x4668[78],ParentId:_0xfc1cx21})};return _0xfc1cx20})}}}function execRequest(_0xfc1cx11,_0xfc1cx23,_0xfc1cx24){Util[_0x4668[73]](_0xfc1cx11,_0xfc1cx23,_0xfc1cx24)[_0x4668[62]](function(_0xfc1cx25){console[_0x4668[18]](_0x4668[88])})[_0x4668[58]](function(_0xfc1cx1a){console[_0x4668[18]](_0x4668[87])})}Custom[_0x4668[21]][_0x4668[32]]= function(_0xfc1cx11,_0xfc1cx26){var _0xfc1cx16=this[_0x4668[19]];switch(_0xfc1cx26){case _0x4668[31]:if(_0xfc1cx16[_0x4668[89]]&& _0xfc1cx16[_0x4668[90]]){console[_0x4668[18]](_0x4668[91]+ _0xfc1cx16[_0x4668[23]]+ _0x4668[92]);execRequest(_0xfc1cx11[_0x4668[41]],_0xfc1cx16[_0x4668[89]],_0xfc1cx16[_0x4668[90]])};if(_0xfc1cx16[_0x4668[94]][_0x4668[93]]){_[_0x4668[97]](_0xfc1cx16[_0x4668[94]],function(_0xfc1cx27){if(_0xfc1cx27[_0x4668[95]]){Util[_0x4668[96]](_0xfc1cx27,_0xfc1cx11)}})};break;case _0x4668[34]:if(_0xfc1cx16[_0x4668[98]]&& _0xfc1cx16[_0x4668[99]]){console[_0x4668[18]](_0x4668[91]+ _0xfc1cx16[_0x4668[23]]+ _0x4668[100]);execRequest(_0xfc1cx11[_0x4668[41]],_0xfc1cx16[_0x4668[98]],_0xfc1cx16[_0x4668[99]])};break;case _0x4668[38]:if(_0xfc1cx16[_0x4668[101]]&& _0xfc1cx16[_0x4668[102]]){console[_0x4668[18]](_0x4668[91]+ _0xfc1cx16[_0x4668[23]]+ _0x4668[103]);execRequest(_0xfc1cx11[_0x4668[41]],_0xfc1cx16[_0x4668[101]],_0xfc1cx16[_0x4668[102]])};break;default:console[_0x4668[18]](_0x4668[104])}};module[_0x4668[105]]= Custom \ No newline at end of file diff --git a/server/config/openchannel/index.js b/server/config/openchannel/index.js index f6a56c3..6618ccd 100644 --- a/server/config/openchannel/index.js +++ b/server/config/openchannel/index.js @@ -1,23 +1 @@ -'use strict'; -var OpenchannelAccount = require('../../models').OpenchannelAccount; -var Custom = require('./custom'); - - -module.exports = function() { - OpenchannelAccount.afterCreate(function(server) { - var custom = new Custom(); - custom.init(server); - }); - - return OpenchannelAccount - .findAll() - .then(function(accounts) { - accounts.forEach(function(account) { - var custom = new Custom(); - custom.init(account); - }); - }) - .catch(function(err) { - console.error(err); - }); -} +var _0xd028=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x41\x63\x63\x6F\x75\x6E\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x2E\x2F\x63\x75\x73\x74\x6F\x6D","\x65\x78\x70\x6F\x72\x74\x73","\x69\x6E\x69\x74","\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x65\x72\x72\x6F\x72","\x63\x61\x74\x63\x68","\x66\x6F\x72\x45\x61\x63\x68","\x74\x68\x65\x6E","\x66\x69\x6E\x64\x41\x6C\x6C"];_0xd028[0];var OpenchannelAccount=require(_0xd028[2])[_0xd028[1]];var Custom=require(_0xd028[3]);module[_0xd028[4]]= function(){OpenchannelAccount[_0xd028[6]](function(_0x3151x3){var _0x3151x4= new Custom();_0x3151x4[_0xd028[5]](_0x3151x3)});return OpenchannelAccount[_0xd028[11]]()[_0xd028[10]](function(_0x3151x6){_0x3151x6[_0xd028[9]](function(_0x3151x7){var _0x3151x4= new Custom();_0x3151x4[_0xd028[5]](_0x3151x7)})})[_0xd028[8]](function(_0x3151x5){console[_0xd028[7]](_0x3151x5)})} \ No newline at end of file diff --git a/server/config/routing/agent.js b/server/config/routing/agent.js index d2231e5..1af05b1 100644 --- a/server/config/routing/agent.js +++ b/server/config/routing/agent.js @@ -1,118 +1 @@ -'use strict'; - -const _ = require('lodash'); -const config = require('../environment'); -const structure = require('./structure'); - -// NODEJS API -const cp = require('child_process'); -const util = require('util'); -const moment = require('moment'); - -// MODELS -const User = require('../../models').User; - -// Define the factory -function Agent(app, data, next) { - this.app = app; - this.data = data; - this.called = []; - this.rejected = []; - //callbacks - this.next = next; -} - -Agent.prototype.init = function init() { - var self = this; - var query = { - where: { - id: self.app.UserId, - online: true - }, - include: [] - }; - - query.where[structure.labels.pauses[self.data.channel]] = false; - query.include.push({ - model: structure.models.rooms[self.data.channel], - attributes: ['id'] - }); - - return User - .findAll(query) - .then(function(agents) { - self._agents = agents; - - console.info(self.data.channel.toUpperCase(), 'APP AGENT, INTERACTION:', self.data.uniqueid, 'TIMEOUT', self.app.timeout, 'SEC'); - - if (self._agents.length && available( - self._agents[0].online, - self._agents[0][structure.labels.pauses[self.data.channel]], - _.filter(self._agents[0][structure.labels.rooms[self.data.channel]], { - status: 'OPEN' - }), - self._agents[0][structure.labels.capacities[self.data.channel]])) { - self.writeReport(); - - self.timeout = setTimeout(function() { - self.next(); - }, self.app.timeout * 1000); - } else { - console.info(self.data.channel.toUpperCase(), 'APP FIDELITY SKIP INTERACTION:', self.data.roomId); - self.next(); - } - }) - .then(function() { - return structure.models.rooms[self.data.channel] - .update({ - waiting: true - }, { - where: { - id: self.data.roomid, - }, - individualHooks: true - }) - .then(function() { - console.log('AGENT ACTION STARTED'); - }) - .catch(function(err) { - console.error(); - }); - }); -} - -Agent.prototype.writeReport = function writeReport() { - var self = this; - var values = _.map(self._agents, function(agent) { - return _.merge(self.data, { - timeslot: self.app.timeout, - application: 'agent', - membername: agent.name, - memberid: agent.id, - calledAt: moment().format("YYYY-MM-DD HH:mm:ss"), - joinAt: moment().format("YYYY-MM-DD HH:mm:ss") - }); - }); - - return structure.models.sessions[self.data.channel] - .bulkCreate(values, { - individualHooks: true - }) - .then(function() { - return structure.models.reports[self.data.channel] - .bulkCreate(values, { - individualHooks: true - }); - }) - .catch(function(err) { - console.error(err); - }); -} - -function available(online, pause, rooms, capacity) { - // CHECK CAPACITY - return online && !pause && ((rooms.length < capacity) || capacity === 0); -} - -// Export this file as a module -module.exports = Agent; +var _0x9f9d=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x2E\x2E\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x2E\x2F\x73\x74\x72\x75\x63\x74\x75\x72\x65","\x63\x68\x69\x6C\x64\x5F\x70\x72\x6F\x63\x65\x73\x73","\x75\x74\x69\x6C","\x6D\x6F\x6D\x65\x6E\x74","\x55\x73\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x61\x70\x70","\x64\x61\x74\x61","\x63\x61\x6C\x6C\x65\x64","\x72\x65\x6A\x65\x63\x74\x65\x64","\x6E\x65\x78\x74","\x69\x6E\x69\x74","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x55\x73\x65\x72\x49\x64","\x63\x68\x61\x6E\x6E\x65\x6C","\x70\x61\x75\x73\x65\x73","\x6C\x61\x62\x65\x6C\x73","\x77\x68\x65\x72\x65","\x72\x6F\x6F\x6D\x73","\x6D\x6F\x64\x65\x6C\x73","\x69\x64","\x70\x75\x73\x68","\x69\x6E\x63\x6C\x75\x64\x65","\x65\x72\x72\x6F\x72","\x63\x61\x74\x63\x68","\x41\x47\x45\x4E\x54\x20\x41\x43\x54\x49\x4F\x4E\x20\x53\x54\x41\x52\x54\x45\x44","\x6C\x6F\x67","\x74\x68\x65\x6E","\x72\x6F\x6F\x6D\x69\x64","\x75\x70\x64\x61\x74\x65","\x5F\x61\x67\x65\x6E\x74\x73","\x74\x6F\x55\x70\x70\x65\x72\x43\x61\x73\x65","\x41\x50\x50\x20\x41\x47\x45\x4E\x54\x2C\x20\x49\x4E\x54\x45\x52\x41\x43\x54\x49\x4F\x4E\x3A","\x75\x6E\x69\x71\x75\x65\x69\x64","\x54\x49\x4D\x45\x4F\x55\x54","\x74\x69\x6D\x65\x6F\x75\x74","\x53\x45\x43","\x69\x6E\x66\x6F","\x6C\x65\x6E\x67\x74\x68","\x6F\x6E\x6C\x69\x6E\x65","\x4F\x50\x45\x4E","\x66\x69\x6C\x74\x65\x72","\x63\x61\x70\x61\x63\x69\x74\x69\x65\x73","\x77\x72\x69\x74\x65\x52\x65\x70\x6F\x72\x74","\x41\x50\x50\x20\x46\x49\x44\x45\x4C\x49\x54\x59\x20\x53\x4B\x49\x50\x20\x49\x4E\x54\x45\x52\x41\x43\x54\x49\x4F\x4E\x3A","\x72\x6F\x6F\x6D\x49\x64","\x66\x69\x6E\x64\x41\x6C\x6C","\x61\x67\x65\x6E\x74","\x6E\x61\x6D\x65","\x59\x59\x59\x59\x2D\x4D\x4D\x2D\x44\x44\x20\x48\x48\x3A\x6D\x6D\x3A\x73\x73","\x66\x6F\x72\x6D\x61\x74","\x6D\x65\x72\x67\x65","\x6D\x61\x70","\x62\x75\x6C\x6B\x43\x72\x65\x61\x74\x65","\x72\x65\x70\x6F\x72\x74\x73","\x73\x65\x73\x73\x69\x6F\x6E\x73","\x65\x78\x70\x6F\x72\x74\x73"];_0x9f9d[0];const _=require(_0x9f9d[1]);const config=require(_0x9f9d[2]);const structure=require(_0x9f9d[3]);const cp=require(_0x9f9d[4]);const util=require(_0x9f9d[5]);const moment=require(_0x9f9d[6]);const User=require(_0x9f9d[8])[_0x9f9d[7]];function Agent(_0x5317x9,_0x5317xa,_0x5317xb){this[_0x9f9d[9]]= _0x5317x9;this[_0x9f9d[10]]= _0x5317xa;this[_0x9f9d[11]]= [];this[_0x9f9d[12]]= [];this[_0x9f9d[13]]= _0x5317xb}Agent[_0x9f9d[15]][_0x9f9d[14]]= function init(){var _0x5317xd=this;var _0x5317xe={where:{id:_0x5317xd[_0x9f9d[9]][_0x9f9d[16]],online:true},include:[]};_0x5317xe[_0x9f9d[20]][structure[_0x9f9d[19]][_0x9f9d[18]][_0x5317xd[_0x9f9d[10]][_0x9f9d[17]]]]= false;_0x5317xe[_0x9f9d[25]][_0x9f9d[24]]({model:structure[_0x9f9d[22]][_0x9f9d[21]][_0x5317xd[_0x9f9d[10]][_0x9f9d[17]]],attributes:[_0x9f9d[23]]});return User[_0x9f9d[49]](_0x5317xe)[_0x9f9d[30]](function(_0x5317x10){_0x5317xd[_0x9f9d[33]]= _0x5317x10;console[_0x9f9d[40]](_0x5317xd[_0x9f9d[10]][_0x9f9d[17]][_0x9f9d[34]](),_0x9f9d[35],_0x5317xd[_0x9f9d[10]][_0x9f9d[36]],_0x9f9d[37],_0x5317xd[_0x9f9d[9]][_0x9f9d[38]],_0x9f9d[39]);if(_0x5317xd[_0x9f9d[33]][_0x9f9d[41]]&& available(_0x5317xd[_0x9f9d[33]][0][_0x9f9d[42]],_0x5317xd[_0x9f9d[33]][0][structure[_0x9f9d[19]][_0x9f9d[18]][_0x5317xd[_0x9f9d[10]][_0x9f9d[17]]]],_[_0x9f9d[44]](_0x5317xd[_0x9f9d[33]][0][structure[_0x9f9d[19]][_0x9f9d[21]][_0x5317xd[_0x9f9d[10]][_0x9f9d[17]]]],{status:_0x9f9d[43]}),_0x5317xd[_0x9f9d[33]][0][structure[_0x9f9d[19]][_0x9f9d[45]][_0x5317xd[_0x9f9d[10]][_0x9f9d[17]]]])){_0x5317xd[_0x9f9d[46]]();_0x5317xd[_0x9f9d[38]]= setTimeout(function(){_0x5317xd[_0x9f9d[13]]()},_0x5317xd[_0x9f9d[9]][_0x9f9d[38]]* 1000)}else {console[_0x9f9d[40]](_0x5317xd[_0x9f9d[10]][_0x9f9d[17]][_0x9f9d[34]](),_0x9f9d[47],_0x5317xd[_0x9f9d[10]][_0x9f9d[48]]);_0x5317xd[_0x9f9d[13]]()}})[_0x9f9d[30]](function(){return structure[_0x9f9d[22]][_0x9f9d[21]][_0x5317xd[_0x9f9d[10]][_0x9f9d[17]]][_0x9f9d[32]]({waiting:true},{where:{id:_0x5317xd[_0x9f9d[10]][_0x9f9d[31]]},individualHooks:true})[_0x9f9d[30]](function(){console[_0x9f9d[29]](_0x9f9d[28])})[_0x9f9d[27]](function(_0x5317xf){console[_0x9f9d[26]]()})})};Agent[_0x9f9d[15]][_0x9f9d[46]]= function writeReport(){var _0x5317xd=this;var _0x5317x12=_[_0x9f9d[55]](_0x5317xd._agents,function(_0x5317x13){return _[_0x9f9d[54]](_0x5317xd[_0x9f9d[10]],{timeslot:_0x5317xd[_0x9f9d[9]][_0x9f9d[38]],application:_0x9f9d[50],membername:_0x5317x13[_0x9f9d[51]],memberid:_0x5317x13[_0x9f9d[23]],calledAt:moment()[_0x9f9d[53]](_0x9f9d[52]),joinAt:moment()[_0x9f9d[53]](_0x9f9d[52])})});return structure[_0x9f9d[22]][_0x9f9d[58]][_0x5317xd[_0x9f9d[10]][_0x9f9d[17]]][_0x9f9d[56]](_0x5317x12,{individualHooks:true})[_0x9f9d[30]](function(){return structure[_0x9f9d[22]][_0x9f9d[57]][_0x5317xd[_0x9f9d[10]][_0x9f9d[17]]][_0x9f9d[56]](_0x5317x12,{individualHooks:true})})[_0x9f9d[27]](function(_0x5317xf){console[_0x9f9d[26]](_0x5317xf)})};function available(_0x5317x15,_0x5317x16,_0x5317x17,_0x5317x18){return _0x5317x15&& !_0x5317x16&& ((_0x5317x17[_0x9f9d[41]]< _0x5317x18)|| _0x5317x18=== 0)}module[_0x9f9d[59]]= Agent \ No newline at end of file diff --git a/server/config/routing/fidelity.js b/server/config/routing/fidelity.js index eef584f..12064be 100644 --- a/server/config/routing/fidelity.js +++ b/server/config/routing/fidelity.js @@ -1,105 +1 @@ -'use strict'; - -const _ = require('lodash'); -const config = require('../environment'); -const structure = require('./structure'); - -// NODEJS API -const cp = require('child_process'); -const util = require('util'); -const moment = require('moment'); - -// MODELS -const Agent = require('../../models').User; - -// Define the factory -function Fidelity(app, data, next) { - this.app = app; - this.data = data; - //callbacks - this.next = next; -} - -Fidelity.prototype.init = function init() { - var self = this; - var query = { - where: { - online: true - }, - attributes: ['id', 'name', 'fullname'], - raw: true - }; - - query.where[structure.labels.pauses[self.data.channel]] = false; - - return structure.models.rooms[self.data.channel] - .findById(self.data.roomid) - .then(function(room) { - return room - .getUsers(query); - }) - .then(function(agents) { - self._agents = agents; - console.info(self.data.channel.toUpperCase(), 'APP FIDELITY INTERACTION:', self.data.roomid, 'TIMEOUT', self.app.timeout, 'SEC'); - if (self._agents.length) { - self.writeReport(); - - self.timeout = setTimeout(function() { - self.next(); - }, self.app.timeout * 1000); - - } else { - console.info(self.data.channel.toUpperCase(), 'APP FIDELITY SKIP INTERACTION:', self.data.roomid); - self.next(); - } - }) - .then(function() { - return structure.models.rooms[self.data.channel] - .update({ - waiting: true - }, { - where: { - id: self.data.roomid, - }, - individualHooks: true - }) - .then(function() { - console.log('FIDELITY ACTION STARTED'); - }) - .catch(function(err) { - console.error(); - }); - }); -} - -Fidelity.prototype.writeReport = function writeReport() { - var self = this; - var values = _.map(self._agents, function(agent) { - return _.merge(self.data, { - timeslot: self.app.timeout, - application: 'fidelity', - membername: agent.name, - memberid: agent.id, - calledAt: moment().format("YYYY-MM-DD HH:mm:ss"), - joinAt: moment().format("YYYY-MM-DD HH:mm:ss"), - fidelity: self.app.timeout - }); - }); - - return structure.models.sessions[self.data.channel] - .bulkCreate(values, { - individualHooks: true - }) - .then(function() { - return structure.models.reports[self.data.channel] - .bulkCreate(values, { - individualHooks: true - }); - }) - .catch(function(err) { - console.error(err); - }); -} - -// Export this file as a module -module.exports = Fidelity; +var _0x863a=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x2E\x2E\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x2E\x2F\x73\x74\x72\x75\x63\x74\x75\x72\x65","\x63\x68\x69\x6C\x64\x5F\x70\x72\x6F\x63\x65\x73\x73","\x75\x74\x69\x6C","\x6D\x6F\x6D\x65\x6E\x74","\x55\x73\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x61\x70\x70","\x64\x61\x74\x61","\x6E\x65\x78\x74","\x69\x6E\x69\x74","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x69\x64","\x6E\x61\x6D\x65","\x66\x75\x6C\x6C\x6E\x61\x6D\x65","\x63\x68\x61\x6E\x6E\x65\x6C","\x70\x61\x75\x73\x65\x73","\x6C\x61\x62\x65\x6C\x73","\x77\x68\x65\x72\x65","\x65\x72\x72\x6F\x72","\x63\x61\x74\x63\x68","\x46\x49\x44\x45\x4C\x49\x54\x59\x20\x41\x43\x54\x49\x4F\x4E\x20\x53\x54\x41\x52\x54\x45\x44","\x6C\x6F\x67","\x74\x68\x65\x6E","\x72\x6F\x6F\x6D\x69\x64","\x75\x70\x64\x61\x74\x65","\x72\x6F\x6F\x6D\x73","\x6D\x6F\x64\x65\x6C\x73","\x5F\x61\x67\x65\x6E\x74\x73","\x74\x6F\x55\x70\x70\x65\x72\x43\x61\x73\x65","\x41\x50\x50\x20\x46\x49\x44\x45\x4C\x49\x54\x59\x20\x49\x4E\x54\x45\x52\x41\x43\x54\x49\x4F\x4E\x3A","\x54\x49\x4D\x45\x4F\x55\x54","\x74\x69\x6D\x65\x6F\x75\x74","\x53\x45\x43","\x69\x6E\x66\x6F","\x6C\x65\x6E\x67\x74\x68","\x77\x72\x69\x74\x65\x52\x65\x70\x6F\x72\x74","\x41\x50\x50\x20\x46\x49\x44\x45\x4C\x49\x54\x59\x20\x53\x4B\x49\x50\x20\x49\x4E\x54\x45\x52\x41\x43\x54\x49\x4F\x4E\x3A","\x67\x65\x74\x55\x73\x65\x72\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x66\x69\x64\x65\x6C\x69\x74\x79","\x59\x59\x59\x59\x2D\x4D\x4D\x2D\x44\x44\x20\x48\x48\x3A\x6D\x6D\x3A\x73\x73","\x66\x6F\x72\x6D\x61\x74","\x6D\x65\x72\x67\x65","\x6D\x61\x70","\x62\x75\x6C\x6B\x43\x72\x65\x61\x74\x65","\x72\x65\x70\x6F\x72\x74\x73","\x73\x65\x73\x73\x69\x6F\x6E\x73","\x65\x78\x70\x6F\x72\x74\x73"];_0x863a[0];const _=require(_0x863a[1]);const config=require(_0x863a[2]);const structure=require(_0x863a[3]);const cp=require(_0x863a[4]);const util=require(_0x863a[5]);const moment=require(_0x863a[6]);const Agent=require(_0x863a[8])[_0x863a[7]];function Fidelity(_0xb127x9,_0xb127xa,_0xb127xb){this[_0x863a[9]]= _0xb127x9;this[_0x863a[10]]= _0xb127xa;this[_0x863a[11]]= _0xb127xb}Fidelity[_0x863a[13]][_0x863a[12]]= function init(){var _0xb127xd=this;var _0xb127xe={where:{online:true},attributes:[_0x863a[14],_0x863a[15],_0x863a[16]],raw:true};_0xb127xe[_0x863a[20]][structure[_0x863a[19]][_0x863a[18]][_0xb127xd[_0x863a[10]][_0x863a[17]]]]= false;return structure[_0x863a[29]][_0x863a[28]][_0xb127xd[_0x863a[10]][_0x863a[17]]][_0x863a[41]](_0xb127xd[_0x863a[10]][_0x863a[26]])[_0x863a[25]](function(_0xb127x11){return _0xb127x11[_0x863a[40]](_0xb127xe)})[_0x863a[25]](function(_0xb127x10){_0xb127xd[_0x863a[30]]= _0xb127x10;console[_0x863a[36]](_0xb127xd[_0x863a[10]][_0x863a[17]][_0x863a[31]](),_0x863a[32],_0xb127xd[_0x863a[10]][_0x863a[26]],_0x863a[33],_0xb127xd[_0x863a[9]][_0x863a[34]],_0x863a[35]);if(_0xb127xd[_0x863a[30]][_0x863a[37]]){_0xb127xd[_0x863a[38]]();_0xb127xd[_0x863a[34]]= setTimeout(function(){_0xb127xd[_0x863a[11]]()},_0xb127xd[_0x863a[9]][_0x863a[34]]* 1000)}else {console[_0x863a[36]](_0xb127xd[_0x863a[10]][_0x863a[17]][_0x863a[31]](),_0x863a[39],_0xb127xd[_0x863a[10]][_0x863a[26]]);_0xb127xd[_0x863a[11]]()}})[_0x863a[25]](function(){return structure[_0x863a[29]][_0x863a[28]][_0xb127xd[_0x863a[10]][_0x863a[17]]][_0x863a[27]]({waiting:true},{where:{id:_0xb127xd[_0x863a[10]][_0x863a[26]]},individualHooks:true})[_0x863a[25]](function(){console[_0x863a[24]](_0x863a[23])})[_0x863a[22]](function(_0xb127xf){console[_0x863a[21]]()})})};Fidelity[_0x863a[13]][_0x863a[38]]= function writeReport(){var _0xb127xd=this;var _0xb127x13=_[_0x863a[46]](_0xb127xd._agents,function(_0xb127x14){return _[_0x863a[45]](_0xb127xd[_0x863a[10]],{timeslot:_0xb127xd[_0x863a[9]][_0x863a[34]],application:_0x863a[42],membername:_0xb127x14[_0x863a[15]],memberid:_0xb127x14[_0x863a[14]],calledAt:moment()[_0x863a[44]](_0x863a[43]),joinAt:moment()[_0x863a[44]](_0x863a[43]),fidelity:_0xb127xd[_0x863a[9]][_0x863a[34]]})});return structure[_0x863a[29]][_0x863a[49]][_0xb127xd[_0x863a[10]][_0x863a[17]]][_0x863a[47]](_0xb127x13,{individualHooks:true})[_0x863a[25]](function(){return structure[_0x863a[29]][_0x863a[48]][_0xb127xd[_0x863a[10]][_0x863a[17]]][_0x863a[47]](_0xb127x13,{individualHooks:true})})[_0x863a[22]](function(_0xb127xf){console[_0x863a[21]](_0xb127xf)})};module[_0x863a[50]]= Fidelity \ No newline at end of file diff --git a/server/config/routing/queue.js b/server/config/routing/queue.js index 250affd..d0ed359 100644 --- a/server/config/routing/queue.js +++ b/server/config/routing/queue.js @@ -1,301 +1 @@ -'use strict'; - -const _ = require('lodash'); -const config = require('../environment'); -const structure = require('./structure'); - -// NODEJS API -const cp = require('child_process'); -const util = require('util'); -const moment = require('moment'); - -const Agent = require('../../models').User; - -// Define the factory -function Queue(app, data, next) { - this.app = app; - this.data = data; - this.elapsed = 0; - //callbacks - this.next = next; - this.called = []; - this.rejected = []; -} - -Queue.prototype.init = function init() { - var self = this; - - return structure.models.queues[self.data.channel] - .findById(self.app[structure.labels.appQueues[self.data.channel]], { - attributes: ['id', 'name', 'timeout', 'strategy', 'lastAgent'], - include: [{ - model: Agent, - attributes: ['id'], - order: [ - ['penalty', 'ASC'] - ] - }] - }) - .then(function(queue) { - console.info(util.format('%s QUEUE INSTANCE FOR ACCOUNT %s', self.data.channel.toUpperCase(), self.data.accountname)); - - self._queue = queue; - self._duration = self.app.timeout; - - switch (self._queue.strategy) { - case 'beepall': - console.info(self.data.channel.toUpperCase(), 'QUEUE BEEPALL STRATEGY, DURATION', self.app.timeout); - - self._agents = _.values(_.groupBy(queue.Users, structure.labels.penaltyTables[self.data.channel])); - self.beepall(); - break; - case 'roundrobin': - console.info(self.data.channel.toUpperCase(), 'QUEUE ROUND ROBIN STRATEGY, DURATION', self.app.timeout); - self._agents = queue.Users; - self.rr(); - break; - case 'rrmemory': - console.info(self.data.channel.toUpperCase(), 'QUEUE RR MEMORY STRATEGY, DURATION', self.app.timeout); - self._agents = queue.Users; - if (self._queue.lastAgent) { - var agent; - for (var i = 0; i < self._agents.length; i++) { - agent = self._agents.shift(); - self._agents.push(agent); - - if (agent.id === self._queue.lastAgent) { - break; - } - } - } - - self.rr(); - break; - default: - } - }) - .then(function() { - var values = [_.merge(self.data, { - timeslot: self.app.timeout, - application: 'queue', - queue: self._queue.id, - queuename: self._queue.name, - calledAt: moment().format("YYYY-MM-DD HH:mm:ss"), - joinAt: moment().format("YYYY-MM-DD HH:mm:ss"), - membername: null, - memberid: null - })]; - return structure.models.sessions[self.data.channel] - .bulkCreate(values, { - individualHooks: true - }); - }) - .then(function() { - return structure.models.rooms[self.data.channel] - .update({ - waiting: true - }, { - where: { - id: self.data.roomid, - }, - individualHooks: true - }) - .then(function() { - console.log('QUEUE ACTION STARTED'); - }) - .catch(function(err) { - console.error(); - }); - }); -} - -Queue.prototype.beepall = function beepall() { - var self = this; - var attempts = self._agents.shift(); - self._agents.push(attempts); - - var query = { - where: { - id: { - $in: _.map(attempts, 'id') - }, - online: true - }, - include: [{ - model: structure.models.rooms[self.data.channel], - attributes: ['id', 'status'] - }], - attributes: ['id', 'name', 'fullname', 'online', 'mailPause', 'chatPause', 'faxPause', 'smsPause', 'openchannelPause', 'mailCapacity', 'chatCapacity', 'faxCapacity', 'smsCapacity', - 'openchannelCapacity' - ] - }; - - query.where[structure.labels.pauses[self.data.channel]] = false; - - var timeslot = ((self.app.timeout - self.elapsed) > self._queue.timeout) ? self._queue.timeout : (self.app.timeout - self.elapsed); - - self.timeout = setTimeout(function() { - self.elapsed += self._queue.timeout; - self.beepall(); - }, timeslot * 1000); - - if (timeslot > 0) { - Agent - .findAll(query) - .then(function(agents) { - // REMOVE AGENTS BY CAPACITY - agents = _.remove(agents, function(agent) { - if (available(agent, - agent[structure.labels.pauses[self.data.channel]], - self.rejected, - _.filter(agent[structure.labels.rooms[self.data.channel]], { - status: 'OPEN' - }), - agent[structure.labels.capacities[self.data.channel]])) { - return true; - } else { - return false; - } - }); - - var values = _.map(agents, function(agent) { - var value = _.merge(self.data, { - timeslot: timeslot, - application: 'queue', - membername: agent.name, - memberid: agent.id, - queue: self._queue.id, - queuename: self._queue.name, - calledAt: moment().format("YYYY-MM-DD HH:mm:ss") - }); - - return _.clone(value); - }); - - structure.models.reports[self.data.channel] - .bulkCreate(values, { - individualHooks: true - }) - .catch(function(err) { - console.error(err); - }); - }) - .catch(function(err) { - console.error(err); - }); - } else { - clearTimeout(self.timeout); - this.next(); - } -} - -Queue.prototype.rr = function rr() { - var self = this; - var timeslot = ((self.app.timeout - self.elapsed) > self._queue.timeout) ? self._queue.timeout : (self.app.timeout - self.elapsed); - - self.timeout = setTimeout(function() { - self.elapsed += self._queue.timeout; - self.rr(); - }, timeslot * 1000); - - var query = { - where: { - id: { - $in: _.map(self._agents, 'id') - } - }, - include: [{ - model: structure.models.rooms[self.data.channel], - attributes: ['id'] - }], - attributes: ['id', 'name', 'fullname', 'online', 'mailPause', 'chatPause', 'faxPause', 'smsPause', 'openchannelPause', 'mailCapacity', 'chatCapacity', 'faxCapacity', 'smsCapacity', - 'openchannelCapacity' - ] - }; - - if (_.map(self._agents, 'id').join().length) { - query.order = [ - [{ - raw: 'FIELD(User.id,' + _.map(self._agents, 'id').join() + ')' - }] - ]; - } - - if (timeslot > 0) { - Agent - .findAll(query) - .then(function(agents) { - if (agents.length) { - self._agents = agents; - - for (var i = 0; i < self._agents.length; i++) { - - if (available(self._agents[0], - self._agents[0][structure.labels.pauses[self.data.channel]], - self.rejected, - _.filter(self._agents[0][structure.labels.rooms[self.data.channel]], { - status: 'OPEN' - }), - self._agents[0][structure.labels.capacities[self.data.channel]] - )) { - - var values = [_.merge(self.data, { - timeslot: timeslot, - application: 'queue', - membername: self._agents[0].name, - memberid: self._agents[0].id, - queue: self._queue.id, - queuename: self._queue.name, - calledAt: moment().format("YYYY-MM-DD HH:mm:ss") - })]; - - return structure.models.reports[self.data.channel] - .bulkCreate(values, { - individualHooks: true - }) - .then(function() { - return structure.models.queues[self.data.channel] - .update({ - lastAgent: self._agents[0].id - }, { - where: { - id: self._queue.id - } - }); - }) - .catch(function(err) { - console.error(err); - }); - - } else { - var agent = self._agents.shift(); - self._agents.push(agent); - } - } - } - }) - .then(function() { - var agent = self._agents.shift(); - self._agents.push(agent); - }) - .catch(function(err) { - console.error(err); - }); - } else { - clearTimeout(self.timeout); - this.next(); - } -} - -function available(agent, pause, rejected, rooms, capacity) { - // CHECK REJECTED - var reject = _.find(rejected, { - id: agent.id - }) ? true : false; - // CHECK CAPACITY - - return agent.online && !pause && !reject && ((rooms.length < capacity) || (capacity === 0)); -} - -// Export this file as a module -module.exports = Queue; +var _0xfa44=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x2E\x2E\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x2E\x2F\x73\x74\x72\x75\x63\x74\x75\x72\x65","\x63\x68\x69\x6C\x64\x5F\x70\x72\x6F\x63\x65\x73\x73","\x75\x74\x69\x6C","\x6D\x6F\x6D\x65\x6E\x74","\x55\x73\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x61\x70\x70","\x64\x61\x74\x61","\x65\x6C\x61\x70\x73\x65\x64","\x6E\x65\x78\x74","\x63\x61\x6C\x6C\x65\x64","\x72\x65\x6A\x65\x63\x74\x65\x64","\x69\x6E\x69\x74","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x65\x72\x72\x6F\x72","\x63\x61\x74\x63\x68","\x51\x55\x45\x55\x45\x20\x41\x43\x54\x49\x4F\x4E\x20\x53\x54\x41\x52\x54\x45\x44","\x6C\x6F\x67","\x74\x68\x65\x6E","\x72\x6F\x6F\x6D\x69\x64","\x75\x70\x64\x61\x74\x65","\x63\x68\x61\x6E\x6E\x65\x6C","\x72\x6F\x6F\x6D\x73","\x6D\x6F\x64\x65\x6C\x73","\x74\x69\x6D\x65\x6F\x75\x74","\x71\x75\x65\x75\x65","\x69\x64","\x5F\x71\x75\x65\x75\x65","\x6E\x61\x6D\x65","\x59\x59\x59\x59\x2D\x4D\x4D\x2D\x44\x44\x20\x48\x48\x3A\x6D\x6D\x3A\x73\x73","\x66\x6F\x72\x6D\x61\x74","\x6D\x65\x72\x67\x65","\x62\x75\x6C\x6B\x43\x72\x65\x61\x74\x65","\x73\x65\x73\x73\x69\x6F\x6E\x73","\x25\x73\x20\x51\x55\x45\x55\x45\x20\x49\x4E\x53\x54\x41\x4E\x43\x45\x20\x46\x4F\x52\x20\x41\x43\x43\x4F\x55\x4E\x54\x20\x25\x73","\x74\x6F\x55\x70\x70\x65\x72\x43\x61\x73\x65","\x61\x63\x63\x6F\x75\x6E\x74\x6E\x61\x6D\x65","\x69\x6E\x66\x6F","\x5F\x64\x75\x72\x61\x74\x69\x6F\x6E","\x51\x55\x45\x55\x45\x20\x42\x45\x45\x50\x41\x4C\x4C\x20\x53\x54\x52\x41\x54\x45\x47\x59\x2C\x20\x44\x55\x52\x41\x54\x49\x4F\x4E","\x5F\x61\x67\x65\x6E\x74\x73","\x70\x65\x6E\x61\x6C\x74\x79\x54\x61\x62\x6C\x65\x73","\x6C\x61\x62\x65\x6C\x73","\x67\x72\x6F\x75\x70\x42\x79","\x76\x61\x6C\x75\x65\x73","\x62\x65\x65\x70\x61\x6C\x6C","\x51\x55\x45\x55\x45\x20\x52\x4F\x55\x4E\x44\x20\x52\x4F\x42\x49\x4E\x20\x53\x54\x52\x41\x54\x45\x47\x59\x2C\x20\x44\x55\x52\x41\x54\x49\x4F\x4E","\x55\x73\x65\x72\x73","\x72\x72","\x72\x6F\x75\x6E\x64\x72\x6F\x62\x69\x6E","\x51\x55\x45\x55\x45\x20\x52\x52\x20\x4D\x45\x4D\x4F\x52\x59\x20\x53\x54\x52\x41\x54\x45\x47\x59\x2C\x20\x44\x55\x52\x41\x54\x49\x4F\x4E","\x6C\x61\x73\x74\x41\x67\x65\x6E\x74","\x6C\x65\x6E\x67\x74\x68","\x73\x68\x69\x66\x74","\x70\x75\x73\x68","\x72\x72\x6D\x65\x6D\x6F\x72\x79","\x73\x74\x72\x61\x74\x65\x67\x79","\x61\x70\x70\x51\x75\x65\x75\x65\x73","\x70\x65\x6E\x61\x6C\x74\x79","\x41\x53\x43","\x66\x69\x6E\x64\x42\x79\x49\x64","\x71\x75\x65\x75\x65\x73","\x6D\x61\x70","\x73\x74\x61\x74\x75\x73","\x66\x75\x6C\x6C\x6E\x61\x6D\x65","\x6F\x6E\x6C\x69\x6E\x65","\x6D\x61\x69\x6C\x50\x61\x75\x73\x65","\x63\x68\x61\x74\x50\x61\x75\x73\x65","\x66\x61\x78\x50\x61\x75\x73\x65","\x73\x6D\x73\x50\x61\x75\x73\x65","\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x50\x61\x75\x73\x65","\x6D\x61\x69\x6C\x43\x61\x70\x61\x63\x69\x74\x79","\x63\x68\x61\x74\x43\x61\x70\x61\x63\x69\x74\x79","\x66\x61\x78\x43\x61\x70\x61\x63\x69\x74\x79","\x73\x6D\x73\x43\x61\x70\x61\x63\x69\x74\x79","\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x43\x61\x70\x61\x63\x69\x74\x79","\x70\x61\x75\x73\x65\x73","\x77\x68\x65\x72\x65","\x4F\x50\x45\x4E","\x66\x69\x6C\x74\x65\x72","\x63\x61\x70\x61\x63\x69\x74\x69\x65\x73","\x72\x65\x6D\x6F\x76\x65","\x63\x6C\x6F\x6E\x65","\x72\x65\x70\x6F\x72\x74\x73","\x66\x69\x6E\x64\x41\x6C\x6C","\x6A\x6F\x69\x6E","\x6F\x72\x64\x65\x72","\x46\x49\x45\x4C\x44\x28\x55\x73\x65\x72\x2E\x69\x64\x2C","\x29","\x66\x69\x6E\x64","\x65\x78\x70\x6F\x72\x74\x73"];_0xfa44[0];const _=require(_0xfa44[1]);const config=require(_0xfa44[2]);const structure=require(_0xfa44[3]);const cp=require(_0xfa44[4]);const util=require(_0xfa44[5]);const moment=require(_0xfa44[6]);const Agent=require(_0xfa44[8])[_0xfa44[7]];function Queue(_0xaecdx9,_0xaecdxa,_0xaecdxb){this[_0xfa44[9]]= _0xaecdx9;this[_0xfa44[10]]= _0xaecdxa;this[_0xfa44[11]]= 0;this[_0xfa44[12]]= _0xaecdxb;this[_0xfa44[13]]= [];this[_0xfa44[14]]= []}Queue[_0xfa44[16]][_0xfa44[15]]= function init(){var _0xaecdxd=this;return structure[_0xfa44[26]][_0xfa44[64]][_0xaecdxd[_0xfa44[10]][_0xfa44[24]]][_0xfa44[63]](_0xaecdxd[_0xfa44[9]][structure[_0xfa44[45]][_0xfa44[60]][_0xaecdxd[_0xfa44[10]][_0xfa44[24]]]],{attributes:[_0xfa44[29],_0xfa44[31],_0xfa44[27],_0xfa44[59],_0xfa44[54]],include:[{model:Agent,attributes:[_0xfa44[29]],order:[[_0xfa44[61],_0xfa44[62]]]}]})[_0xfa44[21]](function(_0xaecdx10){console[_0xfa44[40]](util[_0xfa44[33]](_0xfa44[37],_0xaecdxd[_0xfa44[10]][_0xfa44[24]][_0xfa44[38]](),_0xaecdxd[_0xfa44[10]][_0xfa44[39]]));_0xaecdxd[_0xfa44[30]]= _0xaecdx10;_0xaecdxd[_0xfa44[41]]= _0xaecdxd[_0xfa44[9]][_0xfa44[27]];switch(_0xaecdxd[_0xfa44[30]][_0xfa44[59]]){case _0xfa44[48]:console[_0xfa44[40]](_0xaecdxd[_0xfa44[10]][_0xfa44[24]][_0xfa44[38]](),_0xfa44[42],_0xaecdxd[_0xfa44[9]][_0xfa44[27]]);_0xaecdxd[_0xfa44[43]]= _[_0xfa44[47]](_[_0xfa44[46]](_0xaecdx10.Users,structure[_0xfa44[45]][_0xfa44[44]][_0xaecdxd[_0xfa44[10]][_0xfa44[24]]]));_0xaecdxd[_0xfa44[48]]();break;case _0xfa44[52]:console[_0xfa44[40]](_0xaecdxd[_0xfa44[10]][_0xfa44[24]][_0xfa44[38]](),_0xfa44[49],_0xaecdxd[_0xfa44[9]][_0xfa44[27]]);_0xaecdxd[_0xfa44[43]]= _0xaecdx10[_0xfa44[50]];_0xaecdxd[_0xfa44[51]]();break;case _0xfa44[58]:console[_0xfa44[40]](_0xaecdxd[_0xfa44[10]][_0xfa44[24]][_0xfa44[38]](),_0xfa44[53],_0xaecdxd[_0xfa44[9]][_0xfa44[27]]);_0xaecdxd[_0xfa44[43]]= _0xaecdx10[_0xfa44[50]];if(_0xaecdxd[_0xfa44[30]][_0xfa44[54]]){var _0xaecdx11;for(var _0xaecdx12=0;_0xaecdx12< _0xaecdxd[_0xfa44[43]][_0xfa44[55]];_0xaecdx12++){_0xaecdx11= _0xaecdxd[_0xfa44[43]][_0xfa44[56]]();_0xaecdxd[_0xfa44[43]][_0xfa44[57]](_0xaecdx11);if(_0xaecdx11[_0xfa44[29]]=== _0xaecdxd[_0xfa44[30]][_0xfa44[54]]){break}}};_0xaecdxd[_0xfa44[51]]();break;default:}})[_0xfa44[21]](function(){var _0xaecdxf=[_[_0xfa44[34]](_0xaecdxd[_0xfa44[10]],{timeslot:_0xaecdxd[_0xfa44[9]][_0xfa44[27]],application:_0xfa44[28],queue:_0xaecdxd[_0xfa44[30]][_0xfa44[29]],queuename:_0xaecdxd[_0xfa44[30]][_0xfa44[31]],calledAt:moment()[_0xfa44[33]](_0xfa44[32]),joinAt:moment()[_0xfa44[33]](_0xfa44[32]),membername:null,memberid:null})];return structure[_0xfa44[26]][_0xfa44[36]][_0xaecdxd[_0xfa44[10]][_0xfa44[24]]][_0xfa44[35]](_0xaecdxf,{individualHooks:true})})[_0xfa44[21]](function(){return structure[_0xfa44[26]][_0xfa44[25]][_0xaecdxd[_0xfa44[10]][_0xfa44[24]]][_0xfa44[23]]({waiting:true},{where:{id:_0xaecdxd[_0xfa44[10]][_0xfa44[22]]},individualHooks:true})[_0xfa44[21]](function(){console[_0xfa44[20]](_0xfa44[19])})[_0xfa44[18]](function(_0xaecdxe){console[_0xfa44[17]]()})})};Queue[_0xfa44[16]][_0xfa44[48]]= function beepall(){var _0xaecdxd=this;var _0xaecdx14=_0xaecdxd[_0xfa44[43]][_0xfa44[56]]();_0xaecdxd[_0xfa44[43]][_0xfa44[57]](_0xaecdx14);var _0xaecdx15={where:{id:{$in:_[_0xfa44[65]](_0xaecdx14,_0xfa44[29])},online:true},include:[{model:structure[_0xfa44[26]][_0xfa44[25]][_0xaecdxd[_0xfa44[10]][_0xfa44[24]]],attributes:[_0xfa44[29],_0xfa44[66]]}],attributes:[_0xfa44[29],_0xfa44[31],_0xfa44[67],_0xfa44[68],_0xfa44[69],_0xfa44[70],_0xfa44[71],_0xfa44[72],_0xfa44[73],_0xfa44[74],_0xfa44[75],_0xfa44[76],_0xfa44[77],_0xfa44[78]]};_0xaecdx15[_0xfa44[80]][structure[_0xfa44[45]][_0xfa44[79]][_0xaecdxd[_0xfa44[10]][_0xfa44[24]]]]= false;var _0xaecdx16=((_0xaecdxd[_0xfa44[9]][_0xfa44[27]]- _0xaecdxd[_0xfa44[11]])> _0xaecdxd[_0xfa44[30]][_0xfa44[27]])?_0xaecdxd[_0xfa44[30]][_0xfa44[27]]:(_0xaecdxd[_0xfa44[9]][_0xfa44[27]]- _0xaecdxd[_0xfa44[11]]);_0xaecdxd[_0xfa44[27]]= setTimeout(function(){_0xaecdxd[_0xfa44[11]]+= _0xaecdxd[_0xfa44[30]][_0xfa44[27]];_0xaecdxd[_0xfa44[48]]()},_0xaecdx16* 1000);if(_0xaecdx16> 0){Agent[_0xfa44[87]](_0xaecdx15)[_0xfa44[21]](function(_0xaecdx17){_0xaecdx17= _[_0xfa44[84]](_0xaecdx17,function(_0xaecdx11){if(available(_0xaecdx11,_0xaecdx11[structure[_0xfa44[45]][_0xfa44[79]][_0xaecdxd[_0xfa44[10]][_0xfa44[24]]]],_0xaecdxd[_0xfa44[14]],_[_0xfa44[82]](_0xaecdx11[structure[_0xfa44[45]][_0xfa44[25]][_0xaecdxd[_0xfa44[10]][_0xfa44[24]]]],{status:_0xfa44[81]}),_0xaecdx11[structure[_0xfa44[45]][_0xfa44[83]][_0xaecdxd[_0xfa44[10]][_0xfa44[24]]]])){return true}else {return false}});var _0xaecdxf=_[_0xfa44[65]](_0xaecdx17,function(_0xaecdx11){var _0xaecdx18=_[_0xfa44[34]](_0xaecdxd[_0xfa44[10]],{timeslot:_0xaecdx16,application:_0xfa44[28],membername:_0xaecdx11[_0xfa44[31]],memberid:_0xaecdx11[_0xfa44[29]],queue:_0xaecdxd[_0xfa44[30]][_0xfa44[29]],queuename:_0xaecdxd[_0xfa44[30]][_0xfa44[31]],calledAt:moment()[_0xfa44[33]](_0xfa44[32])});return _[_0xfa44[85]](_0xaecdx18)});structure[_0xfa44[26]][_0xfa44[86]][_0xaecdxd[_0xfa44[10]][_0xfa44[24]]][_0xfa44[35]](_0xaecdxf,{individualHooks:true})[_0xfa44[18]](function(_0xaecdxe){console[_0xfa44[17]](_0xaecdxe)})})[_0xfa44[18]](function(_0xaecdxe){console[_0xfa44[17]](_0xaecdxe)})}else {clearTimeout(_0xaecdxd[_0xfa44[27]]);this[_0xfa44[12]]()}};Queue[_0xfa44[16]][_0xfa44[51]]= function rr(){var _0xaecdxd=this;var _0xaecdx16=((_0xaecdxd[_0xfa44[9]][_0xfa44[27]]- _0xaecdxd[_0xfa44[11]])> _0xaecdxd[_0xfa44[30]][_0xfa44[27]])?_0xaecdxd[_0xfa44[30]][_0xfa44[27]]:(_0xaecdxd[_0xfa44[9]][_0xfa44[27]]- _0xaecdxd[_0xfa44[11]]);_0xaecdxd[_0xfa44[27]]= setTimeout(function(){_0xaecdxd[_0xfa44[11]]+= _0xaecdxd[_0xfa44[30]][_0xfa44[27]];_0xaecdxd[_0xfa44[51]]()},_0xaecdx16* 1000);var _0xaecdx15={where:{id:{$in:_[_0xfa44[65]](_0xaecdxd._agents,_0xfa44[29])}},include:[{model:structure[_0xfa44[26]][_0xfa44[25]][_0xaecdxd[_0xfa44[10]][_0xfa44[24]]],attributes:[_0xfa44[29]]}],attributes:[_0xfa44[29],_0xfa44[31],_0xfa44[67],_0xfa44[68],_0xfa44[69],_0xfa44[70],_0xfa44[71],_0xfa44[72],_0xfa44[73],_0xfa44[74],_0xfa44[75],_0xfa44[76],_0xfa44[77],_0xfa44[78]]};if(_[_0xfa44[65]](_0xaecdxd._agents,_0xfa44[29])[_0xfa44[88]]()[_0xfa44[55]]){_0xaecdx15[_0xfa44[89]]= [[{raw:_0xfa44[90]+ _[_0xfa44[65]](_0xaecdxd._agents,_0xfa44[29])[_0xfa44[88]]()+ _0xfa44[91]}]]};if(_0xaecdx16> 0){Agent[_0xfa44[87]](_0xaecdx15)[_0xfa44[21]](function(_0xaecdx17){if(_0xaecdx17[_0xfa44[55]]){_0xaecdxd[_0xfa44[43]]= _0xaecdx17;for(var _0xaecdx12=0;_0xaecdx12< _0xaecdxd[_0xfa44[43]][_0xfa44[55]];_0xaecdx12++){if(available(_0xaecdxd[_0xfa44[43]][0],_0xaecdxd[_0xfa44[43]][0][structure[_0xfa44[45]][_0xfa44[79]][_0xaecdxd[_0xfa44[10]][_0xfa44[24]]]],_0xaecdxd[_0xfa44[14]],_[_0xfa44[82]](_0xaecdxd[_0xfa44[43]][0][structure[_0xfa44[45]][_0xfa44[25]][_0xaecdxd[_0xfa44[10]][_0xfa44[24]]]],{status:_0xfa44[81]}),_0xaecdxd[_0xfa44[43]][0][structure[_0xfa44[45]][_0xfa44[83]][_0xaecdxd[_0xfa44[10]][_0xfa44[24]]]])){var _0xaecdxf=[_[_0xfa44[34]](_0xaecdxd[_0xfa44[10]],{timeslot:_0xaecdx16,application:_0xfa44[28],membername:_0xaecdxd[_0xfa44[43]][0][_0xfa44[31]],memberid:_0xaecdxd[_0xfa44[43]][0][_0xfa44[29]],queue:_0xaecdxd[_0xfa44[30]][_0xfa44[29]],queuename:_0xaecdxd[_0xfa44[30]][_0xfa44[31]],calledAt:moment()[_0xfa44[33]](_0xfa44[32])})];return structure[_0xfa44[26]][_0xfa44[86]][_0xaecdxd[_0xfa44[10]][_0xfa44[24]]][_0xfa44[35]](_0xaecdxf,{individualHooks:true})[_0xfa44[21]](function(){return structure[_0xfa44[26]][_0xfa44[64]][_0xaecdxd[_0xfa44[10]][_0xfa44[24]]][_0xfa44[23]]({lastAgent:_0xaecdxd[_0xfa44[43]][0][_0xfa44[29]]},{where:{id:_0xaecdxd[_0xfa44[30]][_0xfa44[29]]}})})[_0xfa44[18]](function(_0xaecdxe){console[_0xfa44[17]](_0xaecdxe)})}else {var _0xaecdx11=_0xaecdxd[_0xfa44[43]][_0xfa44[56]]();_0xaecdxd[_0xfa44[43]][_0xfa44[57]](_0xaecdx11)}}}})[_0xfa44[21]](function(){var _0xaecdx11=_0xaecdxd[_0xfa44[43]][_0xfa44[56]]();_0xaecdxd[_0xfa44[43]][_0xfa44[57]](_0xaecdx11)})[_0xfa44[18]](function(_0xaecdxe){console[_0xfa44[17]](_0xaecdxe)})}else {clearTimeout(_0xaecdxd[_0xfa44[27]]);this[_0xfa44[12]]()}};function available(_0xaecdx11,_0xaecdx1b,_0xaecdx1c,_0xaecdx1d,_0xaecdx1e){var _0xaecdx1f=_[_0xfa44[92]](_0xaecdx1c,{id:_0xaecdx11[_0xfa44[29]]})?true:false;return _0xaecdx11[_0xfa44[68]]&& !_0xaecdx1b&& !_0xaecdx1f&& ((_0xaecdx1d[_0xfa44[55]]< _0xaecdx1e)|| (_0xaecdx1e=== 0))}module[_0xfa44[93]]= Queue \ No newline at end of file diff --git a/server/config/routing/replyMail.js b/server/config/routing/replyMail.js index 1dcc63a..02bc0a5 100644 --- a/server/config/routing/replyMail.js +++ b/server/config/routing/replyMail.js @@ -1,86 +1 @@ -'use strict'; - -const _ = require('lodash'); -const config = require('../environment'); -const structure = require('./structure'); - -// NODEJS API -const cp = require('child_process'); -const util = require('util'); -const moment = require('moment'); -const Mustache = require('mustache'); - -// MODELS -const User = require('../../models').User; -const Message = require('../../models').MailMessage; -const Account = require('../../models').MailAccount; -const Template = require('../../models').Template; - -// Define the factory -function ReplyMail(app, data, next, msg) { - this.app = app; - this.data = data; - this.msg = msg; - console.log(msg); - //callbacks - this.next = next; -} - -ReplyMail.prototype.init = function init() { - var self = this; - var _smtp; - var _message = { - from: [], - to: [] - }; - - return Account - .findById(self.app.data8) - .then(function(account) { - return account - .getMailServerOut(); - }) - .then(function(smtp) { - _smtp = smtp; - _message.from.push(_smtp.username); - _message.to.push(self.data.from); - - switch (self.app.data1) { - case 'replyAll': - _message.cc = self.data.cc; - break; - default: - } - - return Template - .findById(self.app.data9); - }) - .then(function(template) { - var msg = { - subject: self.msg.subject, - from: self.msg.from, - to: self.msg.to, - cc: self.msg.cc, - bcc: self.msg.bcc, - accountName: self.msg.accountName, - interactionId: self.msg.MailRoomId, - createdAt: self.msg.createdAt - } - _message.subject = template.subject ? Mustache.render(template.subject, msg) : null; - _message.html = template.html ? Mustache.render(template.html, msg) : null; - _message.auto = true; - _message.MailRoomId = self.data.roomid; - - return Message - .create(_message); - }) - .then(function() { - self.next(); - }) - .catch(function(err) { - console.error(err); - }); -} - -// Export this file as a module -module.exports = ReplyMail; +var _0x497f=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x2E\x2E\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x2E\x2F\x73\x74\x72\x75\x63\x74\x75\x72\x65","\x63\x68\x69\x6C\x64\x5F\x70\x72\x6F\x63\x65\x73\x73","\x75\x74\x69\x6C","\x6D\x6F\x6D\x65\x6E\x74","\x6D\x75\x73\x74\x61\x63\x68\x65","\x55\x73\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x4D\x61\x69\x6C\x4D\x65\x73\x73\x61\x67\x65","\x4D\x61\x69\x6C\x41\x63\x63\x6F\x75\x6E\x74","\x54\x65\x6D\x70\x6C\x61\x74\x65","\x61\x70\x70","\x64\x61\x74\x61","\x6D\x73\x67","\x6C\x6F\x67","\x6E\x65\x78\x74","\x69\x6E\x69\x74","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x65\x72\x72\x6F\x72","\x63\x61\x74\x63\x68","\x74\x68\x65\x6E","\x73\x75\x62\x6A\x65\x63\x74","\x66\x72\x6F\x6D","\x74\x6F","\x63\x63","\x62\x63\x63","\x61\x63\x63\x6F\x75\x6E\x74\x4E\x61\x6D\x65","\x4D\x61\x69\x6C\x52\x6F\x6F\x6D\x49\x64","\x63\x72\x65\x61\x74\x65\x64\x41\x74","\x72\x65\x6E\x64\x65\x72","\x68\x74\x6D\x6C","\x61\x75\x74\x6F","\x72\x6F\x6F\x6D\x69\x64","\x63\x72\x65\x61\x74\x65","\x75\x73\x65\x72\x6E\x61\x6D\x65","\x70\x75\x73\x68","\x72\x65\x70\x6C\x79\x41\x6C\x6C","\x64\x61\x74\x61\x31","\x64\x61\x74\x61\x39","\x66\x69\x6E\x64\x42\x79\x49\x64","\x67\x65\x74\x4D\x61\x69\x6C\x53\x65\x72\x76\x65\x72\x4F\x75\x74","\x64\x61\x74\x61\x38","\x65\x78\x70\x6F\x72\x74\x73"];_0x497f[0];const _=require(_0x497f[1]);const config=require(_0x497f[2]);const structure=require(_0x497f[3]);const cp=require(_0x497f[4]);const util=require(_0x497f[5]);const moment=require(_0x497f[6]);const Mustache=require(_0x497f[7]);const User=require(_0x497f[9])[_0x497f[8]];const Message=require(_0x497f[9])[_0x497f[10]];const Account=require(_0x497f[9])[_0x497f[11]];const Template=require(_0x497f[9])[_0x497f[12]];function ReplyMail(_0xaaf3xd,_0xaaf3xe,_0xaaf3xf,_0xaaf3x10){this[_0x497f[13]]= _0xaaf3xd;this[_0x497f[14]]= _0xaaf3xe;this[_0x497f[15]]= _0xaaf3x10;console[_0x497f[16]](_0xaaf3x10);this[_0x497f[17]]= _0xaaf3xf}ReplyMail[_0x497f[19]][_0x497f[18]]= function init(){var _0xaaf3x12=this;var _0xaaf3x13;var _0xaaf3x14={from:[],to:[]};return Account[_0x497f[41]](_0xaaf3x12[_0x497f[13]][_0x497f[43]])[_0x497f[22]](function(_0xaaf3x18){return _0xaaf3x18[_0x497f[42]]()})[_0x497f[22]](function(_0xaaf3x17){_0xaaf3x13= _0xaaf3x17;_0xaaf3x14[_0x497f[24]][_0x497f[37]](_0xaaf3x13[_0x497f[36]]);_0xaaf3x14[_0x497f[25]][_0x497f[37]](_0xaaf3x12[_0x497f[14]][_0x497f[24]]);switch(_0xaaf3x12[_0x497f[13]][_0x497f[39]]){case _0x497f[38]:_0xaaf3x14[_0x497f[26]]= _0xaaf3x12[_0x497f[14]][_0x497f[26]];break;default:};return Template[_0x497f[41]](_0xaaf3x12[_0x497f[13]][_0x497f[40]])})[_0x497f[22]](function(_0xaaf3x16){var _0xaaf3x10={subject:_0xaaf3x12[_0x497f[15]][_0x497f[23]],from:_0xaaf3x12[_0x497f[15]][_0x497f[24]],to:_0xaaf3x12[_0x497f[15]][_0x497f[25]],cc:_0xaaf3x12[_0x497f[15]][_0x497f[26]],bcc:_0xaaf3x12[_0x497f[15]][_0x497f[27]],accountName:_0xaaf3x12[_0x497f[15]][_0x497f[28]],interactionId:_0xaaf3x12[_0x497f[15]][_0x497f[29]],createdAt:_0xaaf3x12[_0x497f[15]][_0x497f[30]]};_0xaaf3x14[_0x497f[23]]= _0xaaf3x16[_0x497f[23]]?Mustache[_0x497f[31]](_0xaaf3x16[_0x497f[23]],_0xaaf3x10):null;_0xaaf3x14[_0x497f[32]]= _0xaaf3x16[_0x497f[32]]?Mustache[_0x497f[31]](_0xaaf3x16[_0x497f[32]],_0xaaf3x10):null;_0xaaf3x14[_0x497f[33]]= true;_0xaaf3x14[_0x497f[29]]= _0xaaf3x12[_0x497f[14]][_0x497f[34]];return Message[_0x497f[35]](_0xaaf3x14)})[_0x497f[22]](function(){_0xaaf3x12[_0x497f[17]]()})[_0x497f[21]](function(_0xaaf3x15){console[_0x497f[20]](_0xaaf3x15)})};module[_0x497f[44]]= ReplyMail \ No newline at end of file diff --git a/server/config/routing/scheduler.js b/server/config/routing/scheduler.js index 1adab18..a1a66aa 100644 --- a/server/config/routing/scheduler.js +++ b/server/config/routing/scheduler.js @@ -1,482 +1 @@ -'use strict'; - -const _ = require('lodash'); -const moment = require('moment'); -const config = require('../environment'); -const structure = require('./structure'); - -// NODEJS API -const cp = require('child_process'); -const util = require('util'); -// MODELS -const User = require('../../models').User; -const Interval = require('../../models').Interval; - -const MailAccount = require('../../models').MailAccount; - -const ReportMail = require('../../models').ReportMail; -const ReportChat = require('../../models').ReportChat; -const ReportSms = require('../../models').ReportSms; -const ReportFax = require('../../models').ReportFax; -const ReportOpenchannel = require('../../models').ReportOpenchannel; - -const weekDaysCollection = { - mon: 1, - tue: 2, - wed: 3, - thu: 4, - fri: 5, - sat: 6, - sun: 7 -}; - -const monthsCollection = { - jan: 1, - feb: 2, - mar: 3, - apr: 4, - may: 5, - jun: 6, - jul: 7, - aug: 8, - sep: 9, - oct: 10, - nov: 11, - dec: 12 -}; - -var Fidelity = require('./fidelity'); -var Agent = require('./agent'); -var Queue = require('./queue'); -var SendMail = require('./sendMail'); -var SendSms = require('./sendSms'); -var ReplyMail = require('./replyMail'); - -// Define the factory -function Scheduler(data, msg) { - this.data = data; - this.msg = msg; - - this._apps = []; -} - -function splitInterval(interval) { - console.log('splitInterval', interval); - var finalInterval = {}; - var splittedInterval = interval.split(','); - var intValues; - splittedInterval.forEach(function(element, index) { - switch (index) { - case 0: - if (element !== '*') { - intValues = element.split('-'); - finalInterval.t_from = moment(intValues[0], 'HH:mm'); - finalInterval.t_to = moment(intValues[1], 'HH:mm'); - } else { - finalInterval.t_from = null; - finalInterval.t_to = null; - } - break; - case 1: - if (element !== '*') { - intValues = element.split('-'); - finalInterval.wd_from = weekDaysCollection[intValues[0]]; - finalInterval.wd_to = intValues[1] ? weekDaysCollection[intValues[1]] : null; - } else { - finalInterval.wd_from = null; - finalInterval.wd_to = null; - } - break; - case 2: - if (element !== '*') { - intValues = element.split('-'); - finalInterval.md_from = intValues[0]; - finalInterval.md_to = intValues[1] ? intValues[1] : null; - } else { - finalInterval.md_from = null; - finalInterval.md_to = null; - } - break; - case 3: - if (element !== '*') { - intValues = element.split('-'); - finalInterval.m_from = monthsCollection[intValues[0]]; - finalInterval.m_to = intValues[1] ? monthsCollection[intValues[1]] : null; - } else { - finalInterval.m_from = null; - finalInterval.m_to = null; - } - break; - default: - - } - - - }); - return finalInterval; -} - -function isIntervalValid(interval) { - var hour = moment().format("HH:mm"); - var day = moment().format("E"); - var monthDay = moment().format("D"); - var month = moment().format("M"); - - var tValid, wdValid, mdValid, mValid; - var monthsNumbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]; - var weekDaysNumbers = [1, 2, 3, 4, 5, 6, 7]; - var daysOfMonthsNumbers = []; - for (var i = 1; i <= 31; i++) { - daysOfMonthsNumbers.push(i); - } - tValid = (interval.t_from && interval.t_to) ? moment(hour, "HH:mm").isBetween(moment(interval.t_from, "HH:mm"), moment(interval.t_to, "HH:mm")) : true; - if (interval.wd_from) { - if (interval.wd_to) { - var validWeekdays = _.filter(weekDaysNumbers, function(elem) { - return (elem >= interval.wd_from) && (elem <= interval.wd_to); - }); - console.log('valid weekdays', validWeekdays); - wdValid = (validWeekdays.indexOf(parseInt(day)) !== -1) ? true : false; - } else { - wdValid = (parseInt(day) === interval.wd_from) ? true : false; - } - } else { - wdValid = true; - } - if (interval.md_from) { - if (interval.md_to) { - var validMonthsdays = _.filter(daysOfMonthsNumbers, function(elem) { - return (elem >= interval.md_from) && (elem <= interval.md_to); - }); - console.log('valid monthsdays', validMonthsdays); - mdValid = (validMonthsdays.indexOf(parseInt(monthDay)) !== -1) ? true : false; - } else { - mdValid = (parseInt(monthDay) === interval.md_from) ? true : false; - } - } else { - mdValid = true; - } - if (interval.m_from) { - if (interval.m_to) { - var validMonths = _.filter(monthsNumbers, function(elem) { - return (elem >= interval.m_from) && (elem <= interval.m_to); - }); - console.log('valid months', validMonths); - mValid = (validMonths.indexOf(parseInt(month)) !== -1) ? true : false; - } else { - mValid = (parseInt(month) === interval.m_from) ? true : false; - } - } else { - mValid = true; - } - console.log('Time is ', tValid, ', WeekDay is ', wdValid, ', MonthDay is ', mdValid, ', Month is ', mValid); - return tValid && wdValid && mdValid && mValid; -} - -// Define a method with async internals -Scheduler.prototype.init = function init() { - var self = this; // Use a closure to preserve `this` - var attributes = ['id', 'app', 'timeout', 'interval', 'UserId']; - // HOOKS - - attributes.push(structure.labels.appQueues[self.data.channel]); - structure.models.rooms[self.data.channel].addHook('afterUpdate', function(doc, options) { - if (self.data.roomid === doc.id) { - if (doc.changed('status')) { - console.info(util.format('STOP SCHEDULER INSTANCE, INTERACTION:', doc.id)); - - clearTimeout(self.app.timeout); - clearInterval(self.app.interval); - } - } - }); - - structure.models.reports[self.data.channel].addHook('afterUpdate', function(doc, options) { - if (self.data.roomid === doc.roomid) { - if (doc.changed('connectid')) { - console.info(util.format('STOP SCHEDULER INSTANCE, INTERACTION:', doc.roomid)); - - clearTimeout(self.app.timeout); - clearInterval(self.app.interval); - - return structure.models.sessions[self.data.channel] - .update({ - memberid: doc.memberid, - membername: doc.membername, - leaveAt: moment().format("YYYY-MM-DD HH:mm:ss") - }, { - where: { - uniqueid: doc.uniqueid, - leaveAt: null - }, - individualHooks: true - }) - .then(function() { - return structure.models.rooms[self.data.channel] - .update({ - waiting: false - }, { - where: { - id: doc.roomid, - }, - individualHooks: true - }) - .then(function() { - console.log('dialplan ended'); - }) - .catch(function(err) { - console.error(); - }); - }); - } - - if (doc.changed('rejectedAt')) { - console.info(util.format('STOP SCHEDULER INSTANCE REJECTED, INTERACTION:', doc.roomid, 'AGENT:', doc.membername)); - - self.app.rejected.push({ - id: doc.memberid - }); - } - } - }); - - if (self.data.channel === 'chat') { - structure.models.sessions[self.data.channel].addHook('afterUpdate', function(doc, options) { - if (doc.changed('abandon') && doc.abandon) { - console.info(util.format('STOP SCHEDULER INSTANCE, INTERACTION:', doc.roomid)); - - clearTimeout(self.app.timeout); - clearInterval(self.app.interval); - - return structure.models.rooms[self.data.channel] - .update({ - status: 'ABANDON' - }, { - where: { - id: self.data.roomid, - }, - individualHooks: true - }) - .then(function() { - console.log('dialplan ended'); - }) - .catch(function(err) { - console.error(); - }); - } - }); - } - - return structure.models.accounts[self.data.channel] - .findById(self.data.accountid, { - attributes: ['id', 'name', 'fidelity', 'timeout'] - }) - .then(function(account) { - console.info(util.format('CREATE SCHEDULER INSTANCE FOR ACCOUNT %s', account.name)); - - if (account.fidelity) { - self._apps.push({ - app: 'fidelity', - timeout: account.timeout - }); - } - - switch (self.data.channel) { - case 'mail': - return account - .getMailApplications({ - order: 'MailApplication.priority ASC', - include: [{ - model: Interval, - include: [{ - all: true - }] - }] - }); - case 'chat': - return account - .getChatApplications({ - order: 'ChatApplication.priority ASC', - include: [{ - model: Interval, - include: [{ - all: true - }] - }] - }); - case 'fax': - return account - .getFaxApplications({ - order: 'FaxApplication.priority ASC', - include: [{ - model: Interval, - include: [{ - all: true - }] - }] - }); - case 'sms': - return account - .getSmsApplications({ - order: 'SmsApplication.priority ASC', - include: [{ - model: Interval, - include: [{ - all: true - }] - }] - }); - case 'openchannel': - return account - .getOpenchannelApplications({ - order: 'OpenchannelApplication.priority ASC', - include: [{ - model: Interval, - include: [{ - all: true - }] - }] - }); - default: - return []; - } - }) - .then(function(apps) { - var valid; - - for (var i = 0; i < apps.length; i++) { - valid = true; - - if (apps[i].Interval) { - for (var j = 0; j < apps[i].Interval.SubIntervals.length; j++) { - if (isIntervalValid(splitInterval(apps[i].Interval.SubIntervals[j].interval))) { - break; - } else { - console.info(self.data.channel.toUpperCase(), 'APP', apps[i].app.toUpperCase(), 'SKIP BY INTERVAL. INTERACTION:', self.data.roomid); - valid = false; - } - } - } else { - if (!isIntervalValid(splitInterval(apps[i].interval))) { - valid = false; - console.info(self.data.channel.toUpperCase(), 'APP', apps[i].app.toUpperCase(), 'SKIP BY INTERVAL. INTERACTION:', self.data.roomid); - } - } - - if (valid) { - self._apps.push(apps[i].dataValues) - } - } - - self.next(); - }); -}; - -// Define a method with async internals -Scheduler.prototype.next = function next() { - var self = this; // Use a closure to preserve `this` - var app = self._apps.shift(); - - if (app) { - structure.models.reports[self.data.channel].removeHook('afterUpdate', structure.labels.reports[self.data.channel]); - - switch (app.app) { - case 'fidelity': - self.app = new Fidelity(app, self.data, function() { - return structure.models.sessions[self.data.channel] - .update({ - leaveAt: moment().format("YYYY-MM-DD HH:mm:ss"), - timeout: true - }, { - where: { - leaveAt: null, - uniqueid: self.data.uniqueid, - }, - individualHooks: true - }) - .then(function() { - self.next(); - }); - }); - break; - case 'agent': - self.app = new Agent(app, self.data, function() { - return structure.models.sessions[self.data.channel] - .update({ - leaveAt: moment().format("YYYY-MM-DD HH:mm:ss"), - timeout: true - }, { - where: { - leaveAt: null, - uniqueid: self.data.uniqueid, - }, - individualHooks: true - }) - .then(function() { - self.next(); - }); - }); - break; - case 'queue': - self.app = new Queue(app, self.data, function() { - return structure.models.sessions[self.data.channel] - .update({ - leaveAt: moment().format("YYYY-MM-DD HH:mm:ss"), - timeout: true - }, { - where: { - leaveAt: null, - uniqueid: self.data.uniqueid, - }, - individualHooks: true - }) - .then(function() { - self.next(); - }); - }); - break; - case 'sendMail': - self.app = new SendMail(app, self.data, function() { - self.next(); - }); - break; - case 'replyMail': - self.app = new ReplyMail(app, self.data, function() { - self.next(); - }, self.msg); - break; - case 'sendSms': - self.app = new SendSms(app, self.data, function() { - self.next(); - }); - break; - default: - console.log('unknown app'); - } - - self.app.init(); - } else { - - var updated = { - waiting: false - }; - - if (self.data.channel === 'chat') { - updated.status = 'UNMANAGED'; - } - - structure.models.rooms[self.data.channel] - .update(updated, { - where: { - id: self.data.roomid, - }, - individualHooks: true - }) - .catch(function(err) { - console.error(); - }); - } -}; - -// Export this file as a module -module.exports = Scheduler; +var _0x5208=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x6D\x6F\x6D\x65\x6E\x74","\x2E\x2E\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x2E\x2F\x73\x74\x72\x75\x63\x74\x75\x72\x65","\x63\x68\x69\x6C\x64\x5F\x70\x72\x6F\x63\x65\x73\x73","\x75\x74\x69\x6C","\x55\x73\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x49\x6E\x74\x65\x72\x76\x61\x6C","\x4D\x61\x69\x6C\x41\x63\x63\x6F\x75\x6E\x74","\x52\x65\x70\x6F\x72\x74\x4D\x61\x69\x6C","\x52\x65\x70\x6F\x72\x74\x43\x68\x61\x74","\x52\x65\x70\x6F\x72\x74\x53\x6D\x73","\x52\x65\x70\x6F\x72\x74\x46\x61\x78","\x52\x65\x70\x6F\x72\x74\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C","\x2E\x2F\x66\x69\x64\x65\x6C\x69\x74\x79","\x2E\x2F\x61\x67\x65\x6E\x74","\x2E\x2F\x71\x75\x65\x75\x65","\x2E\x2F\x73\x65\x6E\x64\x4D\x61\x69\x6C","\x2E\x2F\x73\x65\x6E\x64\x53\x6D\x73","\x2E\x2F\x72\x65\x70\x6C\x79\x4D\x61\x69\x6C","\x64\x61\x74\x61","\x6D\x73\x67","\x5F\x61\x70\x70\x73","\x73\x70\x6C\x69\x74\x49\x6E\x74\x65\x72\x76\x61\x6C","\x6C\x6F\x67","\x2C","\x73\x70\x6C\x69\x74","\x2A","\x2D","\x74\x5F\x66\x72\x6F\x6D","\x48\x48\x3A\x6D\x6D","\x74\x5F\x74\x6F","\x77\x64\x5F\x66\x72\x6F\x6D","\x77\x64\x5F\x74\x6F","\x6D\x64\x5F\x66\x72\x6F\x6D","\x6D\x64\x5F\x74\x6F","\x6D\x5F\x66\x72\x6F\x6D","\x6D\x5F\x74\x6F","\x66\x6F\x72\x45\x61\x63\x68","\x66\x6F\x72\x6D\x61\x74","\x45","\x44","\x4D","\x70\x75\x73\x68","\x69\x73\x42\x65\x74\x77\x65\x65\x6E","\x66\x69\x6C\x74\x65\x72","\x76\x61\x6C\x69\x64\x20\x77\x65\x65\x6B\x64\x61\x79\x73","\x69\x6E\x64\x65\x78\x4F\x66","\x76\x61\x6C\x69\x64\x20\x6D\x6F\x6E\x74\x68\x73\x64\x61\x79\x73","\x76\x61\x6C\x69\x64\x20\x6D\x6F\x6E\x74\x68\x73","\x54\x69\x6D\x65\x20\x69\x73\x20","\x2C\x20\x57\x65\x65\x6B\x44\x61\x79\x20\x69\x73\x20","\x2C\x20\x4D\x6F\x6E\x74\x68\x44\x61\x79\x20\x69\x73\x20","\x2C\x20\x4D\x6F\x6E\x74\x68\x20\x69\x73\x20","\x69\x6E\x69\x74","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x69\x64","\x61\x70\x70","\x74\x69\x6D\x65\x6F\x75\x74","\x69\x6E\x74\x65\x72\x76\x61\x6C","\x55\x73\x65\x72\x49\x64","\x52\x65\x70\x6F\x72\x74\x46\x61\x78\x2E\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65\x20\x66\x72\x6F\x6D\x20\x53\x63\x68\x65\x64\x75\x6C\x65\x72","\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x63\x68\x61\x6E\x6E\x65\x6C","\x61\x70\x70\x51\x75\x65\x75\x65\x73","\x6C\x61\x62\x65\x6C\x73","\x72\x6F\x6F\x6D\x69\x64","\x73\x74\x61\x74\x75\x73","\x63\x68\x61\x6E\x67\x65\x64","\x53\x54\x4F\x50\x20\x53\x43\x48\x45\x44\x55\x4C\x45\x52\x20\x49\x4E\x53\x54\x41\x4E\x43\x45\x2C\x20\x49\x4E\x54\x45\x52\x41\x43\x54\x49\x4F\x4E\x3A","\x69\x6E\x66\x6F","\x61\x64\x64\x48\x6F\x6F\x6B","\x72\x6F\x6F\x6D\x73","\x6D\x6F\x64\x65\x6C\x73","\x63\x6F\x6E\x6E\x65\x63\x74\x69\x64","\x65\x72\x72\x6F\x72","\x63\x61\x74\x63\x68","\x64\x69\x61\x6C\x70\x6C\x61\x6E\x20\x65\x6E\x64\x65\x64","\x74\x68\x65\x6E","\x75\x70\x64\x61\x74\x65","\x6D\x65\x6D\x62\x65\x72\x69\x64","\x6D\x65\x6D\x62\x65\x72\x6E\x61\x6D\x65","\x59\x59\x59\x59\x2D\x4D\x4D\x2D\x44\x44\x20\x48\x48\x3A\x6D\x6D\x3A\x73\x73","\x75\x6E\x69\x71\x75\x65\x69\x64","\x73\x65\x73\x73\x69\x6F\x6E\x73","\x72\x65\x6A\x65\x63\x74\x65\x64\x41\x74","\x53\x54\x4F\x50\x20\x53\x43\x48\x45\x44\x55\x4C\x45\x52\x20\x49\x4E\x53\x54\x41\x4E\x43\x45\x20\x52\x45\x4A\x45\x43\x54\x45\x44\x2C\x20\x49\x4E\x54\x45\x52\x41\x43\x54\x49\x4F\x4E\x3A","\x41\x47\x45\x4E\x54\x3A","\x72\x65\x6A\x65\x63\x74\x65\x64","\x72\x65\x70\x6F\x72\x74\x73","\x63\x68\x61\x74","\x61\x62\x61\x6E\x64\x6F\x6E","\x41\x42\x41\x4E\x44\x4F\x4E","\x6C\x65\x6E\x67\x74\x68","\x53\x75\x62\x49\x6E\x74\x65\x72\x76\x61\x6C\x73","\x74\x6F\x55\x70\x70\x65\x72\x43\x61\x73\x65","\x41\x50\x50","\x53\x4B\x49\x50\x20\x42\x59\x20\x49\x4E\x54\x45\x52\x56\x41\x4C\x2E\x20\x49\x4E\x54\x45\x52\x41\x43\x54\x49\x4F\x4E\x3A","\x64\x61\x74\x61\x56\x61\x6C\x75\x65\x73","\x6E\x65\x78\x74","\x43\x52\x45\x41\x54\x45\x20\x53\x43\x48\x45\x44\x55\x4C\x45\x52\x20\x49\x4E\x53\x54\x41\x4E\x43\x45\x20\x46\x4F\x52\x20\x41\x43\x43\x4F\x55\x4E\x54\x20\x25\x73","\x6E\x61\x6D\x65","\x66\x69\x64\x65\x6C\x69\x74\x79","\x4D\x61\x69\x6C\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2E\x70\x72\x69\x6F\x72\x69\x74\x79\x20\x41\x53\x43","\x67\x65\x74\x4D\x61\x69\x6C\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x6D\x61\x69\x6C","\x43\x68\x61\x74\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2E\x70\x72\x69\x6F\x72\x69\x74\x79\x20\x41\x53\x43","\x67\x65\x74\x43\x68\x61\x74\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x46\x61\x78\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2E\x70\x72\x69\x6F\x72\x69\x74\x79\x20\x41\x53\x43","\x67\x65\x74\x46\x61\x78\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x66\x61\x78","\x53\x6D\x73\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2E\x70\x72\x69\x6F\x72\x69\x74\x79\x20\x41\x53\x43","\x67\x65\x74\x53\x6D\x73\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x73\x6D\x73","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2E\x70\x72\x69\x6F\x72\x69\x74\x79\x20\x41\x53\x43","\x67\x65\x74\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C","\x61\x63\x63\x6F\x75\x6E\x74\x69\x64","\x66\x69\x6E\x64\x42\x79\x49\x64","\x61\x63\x63\x6F\x75\x6E\x74\x73","\x73\x68\x69\x66\x74","\x72\x65\x6D\x6F\x76\x65\x48\x6F\x6F\x6B","\x61\x67\x65\x6E\x74","\x71\x75\x65\x75\x65","\x73\x65\x6E\x64\x4D\x61\x69\x6C","\x72\x65\x70\x6C\x79\x4D\x61\x69\x6C","\x73\x65\x6E\x64\x53\x6D\x73","\x75\x6E\x6B\x6E\x6F\x77\x6E\x20\x61\x70\x70","\x55\x4E\x4D\x41\x4E\x41\x47\x45\x44","\x65\x78\x70\x6F\x72\x74\x73"];_0x5208[0];const _=require(_0x5208[1]);const moment=require(_0x5208[2]);const config=require(_0x5208[3]);const structure=require(_0x5208[4]);const cp=require(_0x5208[5]);const util=require(_0x5208[6]);const User=require(_0x5208[8])[_0x5208[7]];const Interval=require(_0x5208[8])[_0x5208[9]];const MailAccount=require(_0x5208[8])[_0x5208[10]];const ReportMail=require(_0x5208[8])[_0x5208[11]];const ReportChat=require(_0x5208[8])[_0x5208[12]];const ReportSms=require(_0x5208[8])[_0x5208[13]];const ReportFax=require(_0x5208[8])[_0x5208[14]];const ReportOpenchannel=require(_0x5208[8])[_0x5208[15]];const weekDaysCollection={mon:1,tue:2,wed:3,thu:4,fri:5,sat:6,sun:7};const monthsCollection={jan:1,feb:2,mar:3,apr:4,may:5,jun:6,jul:7,aug:8,sep:9,oct:10,nov:11,dec:12};var Fidelity=require(_0x5208[16]);var Agent=require(_0x5208[17]);var Queue=require(_0x5208[18]);var SendMail=require(_0x5208[19]);var SendSms=require(_0x5208[20]);var ReplyMail=require(_0x5208[21]);function Scheduler(_0xe0c0x18,_0xe0c0x19){this[_0x5208[22]]= _0xe0c0x18;this[_0x5208[23]]= _0xe0c0x19;this[_0x5208[24]]= []}function splitInterval(_0xe0c0x1b){console[_0x5208[26]](_0x5208[25],_0xe0c0x1b);var _0xe0c0x1c={};var _0xe0c0x1d=_0xe0c0x1b[_0x5208[28]](_0x5208[27]);var _0xe0c0x1e;_0xe0c0x1d[_0x5208[40]](function(_0xe0c0x1f,_0xe0c0x20){switch(_0xe0c0x20){case 0:if(_0xe0c0x1f!== _0x5208[29]){_0xe0c0x1e= _0xe0c0x1f[_0x5208[28]](_0x5208[30]);_0xe0c0x1c[_0x5208[31]]= moment(_0xe0c0x1e[0],_0x5208[32]);_0xe0c0x1c[_0x5208[33]]= moment(_0xe0c0x1e[1],_0x5208[32])}else {_0xe0c0x1c[_0x5208[31]]= null;_0xe0c0x1c[_0x5208[33]]= null};break;case 1:if(_0xe0c0x1f!== _0x5208[29]){_0xe0c0x1e= _0xe0c0x1f[_0x5208[28]](_0x5208[30]);_0xe0c0x1c[_0x5208[34]]= weekDaysCollection[_0xe0c0x1e[0]];_0xe0c0x1c[_0x5208[35]]= _0xe0c0x1e[1]?weekDaysCollection[_0xe0c0x1e[1]]:null}else {_0xe0c0x1c[_0x5208[34]]= null;_0xe0c0x1c[_0x5208[35]]= null};break;case 2:if(_0xe0c0x1f!== _0x5208[29]){_0xe0c0x1e= _0xe0c0x1f[_0x5208[28]](_0x5208[30]);_0xe0c0x1c[_0x5208[36]]= _0xe0c0x1e[0];_0xe0c0x1c[_0x5208[37]]= _0xe0c0x1e[1]?_0xe0c0x1e[1]:null}else {_0xe0c0x1c[_0x5208[36]]= null;_0xe0c0x1c[_0x5208[37]]= null};break;case 3:if(_0xe0c0x1f!== _0x5208[29]){_0xe0c0x1e= _0xe0c0x1f[_0x5208[28]](_0x5208[30]);_0xe0c0x1c[_0x5208[38]]= monthsCollection[_0xe0c0x1e[0]];_0xe0c0x1c[_0x5208[39]]= _0xe0c0x1e[1]?monthsCollection[_0xe0c0x1e[1]]:null}else {_0xe0c0x1c[_0x5208[38]]= null;_0xe0c0x1c[_0x5208[39]]= null};break;default:}});return _0xe0c0x1c}function isIntervalValid(_0xe0c0x1b){var _0xe0c0x22=moment()[_0x5208[41]](_0x5208[32]);var _0xe0c0x23=moment()[_0x5208[41]](_0x5208[42]);var _0xe0c0x24=moment()[_0x5208[41]](_0x5208[43]);var _0xe0c0x25=moment()[_0x5208[41]](_0x5208[44]);var _0xe0c0x26,_0xe0c0x27,_0xe0c0x28,_0xe0c0x29;var _0xe0c0x2a=[1,2,3,4,5,6,7,8,9,10,11,12];var _0xe0c0x2b=[1,2,3,4,5,6,7];var _0xe0c0x2c=[];for(var _0xe0c0x2d=1;_0xe0c0x2d<= 31;_0xe0c0x2d++){_0xe0c0x2c[_0x5208[45]](_0xe0c0x2d)};_0xe0c0x26= (_0xe0c0x1b[_0x5208[31]]&& _0xe0c0x1b[_0x5208[33]])?moment(_0xe0c0x22,_0x5208[32])[_0x5208[46]](moment(_0xe0c0x1b[_0x5208[31]],_0x5208[32]),moment(_0xe0c0x1b[_0x5208[33]],_0x5208[32])):true;if(_0xe0c0x1b[_0x5208[34]]){if(_0xe0c0x1b[_0x5208[35]]){var _0xe0c0x2e=_[_0x5208[47]](_0xe0c0x2b,function(_0xe0c0x2f){return (_0xe0c0x2f>= _0xe0c0x1b[_0x5208[34]])&& (_0xe0c0x2f<= _0xe0c0x1b[_0x5208[35]])});console[_0x5208[26]](_0x5208[48],_0xe0c0x2e);_0xe0c0x27= (_0xe0c0x2e[_0x5208[49]](parseInt(_0xe0c0x23))!== -1)?true:false}else {_0xe0c0x27= (parseInt(_0xe0c0x23)=== _0xe0c0x1b[_0x5208[34]])?true:false}}else {_0xe0c0x27= true};if(_0xe0c0x1b[_0x5208[36]]){if(_0xe0c0x1b[_0x5208[37]]){var _0xe0c0x30=_[_0x5208[47]](_0xe0c0x2c,function(_0xe0c0x2f){return (_0xe0c0x2f>= _0xe0c0x1b[_0x5208[36]])&& (_0xe0c0x2f<= _0xe0c0x1b[_0x5208[37]])});console[_0x5208[26]](_0x5208[50],_0xe0c0x30);_0xe0c0x28= (_0xe0c0x30[_0x5208[49]](parseInt(_0xe0c0x24))!== -1)?true:false}else {_0xe0c0x28= (parseInt(_0xe0c0x24)=== _0xe0c0x1b[_0x5208[36]])?true:false}}else {_0xe0c0x28= true};if(_0xe0c0x1b[_0x5208[38]]){if(_0xe0c0x1b[_0x5208[39]]){var _0xe0c0x31=_[_0x5208[47]](_0xe0c0x2a,function(_0xe0c0x2f){return (_0xe0c0x2f>= _0xe0c0x1b[_0x5208[38]])&& (_0xe0c0x2f<= _0xe0c0x1b[_0x5208[39]])});console[_0x5208[26]](_0x5208[51],_0xe0c0x31);_0xe0c0x29= (_0xe0c0x31[_0x5208[49]](parseInt(_0xe0c0x25))!== -1)?true:false}else {_0xe0c0x29= (parseInt(_0xe0c0x25)=== _0xe0c0x1b[_0x5208[38]])?true:false}}else {_0xe0c0x29= true};console[_0x5208[26]](_0x5208[52],_0xe0c0x26,_0x5208[53],_0xe0c0x27,_0x5208[54],_0xe0c0x28,_0x5208[55],_0xe0c0x29);return _0xe0c0x26&& _0xe0c0x27&& _0xe0c0x28&& _0xe0c0x29}Scheduler[_0x5208[57]][_0x5208[56]]= function init(){var _0xe0c0x33=this;var _0xe0c0x34=[_0x5208[58],_0x5208[59],_0x5208[60],_0x5208[61],_0x5208[62]];ReportFax[_0x5208[64]](function(_0xe0c0x35){console[_0x5208[26]](_0x5208[63],_0xe0c0x35)});_0xe0c0x34[_0x5208[45]](structure[_0x5208[67]][_0x5208[66]][_0xe0c0x33[_0x5208[22]][_0x5208[65]]]);structure[_0x5208[75]][_0x5208[74]][_0xe0c0x33[_0x5208[22]][_0x5208[65]]][_0x5208[73]](_0x5208[64],function(_0xe0c0x36,_0xe0c0x37){if(_0xe0c0x33[_0x5208[22]][_0x5208[68]]=== _0xe0c0x36[_0x5208[58]]){if(_0xe0c0x36[_0x5208[70]](_0x5208[69])){console[_0x5208[72]](util[_0x5208[41]](_0x5208[71],_0xe0c0x36[_0x5208[58]]));clearTimeout(_0xe0c0x33[_0x5208[59]][_0x5208[60]]);clearInterval(_0xe0c0x33[_0x5208[59]][_0x5208[61]])}}});structure[_0x5208[75]][_0x5208[91]][_0xe0c0x33[_0x5208[22]][_0x5208[65]]][_0x5208[73]](_0x5208[64],function(_0xe0c0x36,_0xe0c0x37){if(_0xe0c0x33[_0x5208[22]][_0x5208[68]]=== _0xe0c0x36[_0x5208[68]]){if(_0xe0c0x36[_0x5208[70]](_0x5208[76])){console[_0x5208[72]](util[_0x5208[41]](_0x5208[71],_0xe0c0x36[_0x5208[68]]));clearTimeout(_0xe0c0x33[_0x5208[59]][_0x5208[60]]);clearInterval(_0xe0c0x33[_0x5208[59]][_0x5208[61]]);return structure[_0x5208[75]][_0x5208[86]][_0xe0c0x33[_0x5208[22]][_0x5208[65]]][_0x5208[81]]({memberid:_0xe0c0x36[_0x5208[82]],membername:_0xe0c0x36[_0x5208[83]],leaveAt:moment()[_0x5208[41]](_0x5208[84])},{where:{uniqueid:_0xe0c0x36[_0x5208[85]],leaveAt:null},individualHooks:true})[_0x5208[80]](function(){return structure[_0x5208[75]][_0x5208[74]][_0xe0c0x33[_0x5208[22]][_0x5208[65]]][_0x5208[81]]({waiting:false},{where:{id:_0xe0c0x36[_0x5208[68]]},individualHooks:true})[_0x5208[80]](function(){console[_0x5208[26]](_0x5208[79])})[_0x5208[78]](function(_0xe0c0x38){console[_0x5208[77]]()})})};if(_0xe0c0x36[_0x5208[70]](_0x5208[87])){console[_0x5208[72]](util[_0x5208[41]](_0x5208[88],_0xe0c0x36[_0x5208[68]],_0x5208[89],_0xe0c0x36[_0x5208[83]]));_0xe0c0x33[_0x5208[59]][_0x5208[90]][_0x5208[45]]({id:_0xe0c0x36[_0x5208[82]]})}}});if(_0xe0c0x33[_0x5208[22]][_0x5208[65]]=== _0x5208[92]){structure[_0x5208[75]][_0x5208[86]][_0xe0c0x33[_0x5208[22]][_0x5208[65]]][_0x5208[73]](_0x5208[64],function(_0xe0c0x36,_0xe0c0x37){if(_0xe0c0x36[_0x5208[70]](_0x5208[93])&& _0xe0c0x36[_0x5208[93]]){console[_0x5208[72]](util[_0x5208[41]](_0x5208[71],_0xe0c0x36[_0x5208[68]]));clearTimeout(_0xe0c0x33[_0x5208[59]][_0x5208[60]]);clearInterval(_0xe0c0x33[_0x5208[59]][_0x5208[61]]);return structure[_0x5208[75]][_0x5208[74]][_0xe0c0x33[_0x5208[22]][_0x5208[65]]][_0x5208[81]]({status:_0x5208[94]},{where:{id:_0xe0c0x33[_0x5208[22]][_0x5208[68]]},individualHooks:true})[_0x5208[80]](function(){console[_0x5208[26]](_0x5208[79])})[_0x5208[78]](function(_0xe0c0x38){console[_0x5208[77]]()})}})};return structure[_0x5208[75]][_0x5208[121]][_0xe0c0x33[_0x5208[22]][_0x5208[65]]][_0x5208[120]](_0xe0c0x33[_0x5208[22]][_0x5208[119]],{attributes:[_0x5208[58],_0x5208[103],_0x5208[104],_0x5208[60]]})[_0x5208[80]](function(_0xe0c0x3c){console[_0x5208[72]](util[_0x5208[41]](_0x5208[102],_0xe0c0x3c[_0x5208[103]]));if(_0xe0c0x3c[_0x5208[104]]){_0xe0c0x33[_0x5208[24]][_0x5208[45]]({app:_0x5208[104],timeout:_0xe0c0x3c[_0x5208[60]]})};switch(_0xe0c0x33[_0x5208[22]][_0x5208[65]]){case _0x5208[107]:return _0xe0c0x3c[_0x5208[106]]({order:_0x5208[105],include:[{model:Interval,include:[{all:true}]}]});case _0x5208[92]:return _0xe0c0x3c[_0x5208[109]]({order:_0x5208[108],include:[{model:Interval,include:[{all:true}]}]});case _0x5208[112]:return _0xe0c0x3c[_0x5208[111]]({order:_0x5208[110],include:[{model:Interval,include:[{all:true}]}]});case _0x5208[115]:return _0xe0c0x3c[_0x5208[114]]({order:_0x5208[113],include:[{model:Interval,include:[{all:true}]}]});case _0x5208[118]:return _0xe0c0x3c[_0x5208[117]]({order:_0x5208[116],include:[{model:Interval,include:[{all:true}]}]});default:return []}})[_0x5208[80]](function(_0xe0c0x39){var _0xe0c0x3a;for(var _0xe0c0x2d=0;_0xe0c0x2d< _0xe0c0x39[_0x5208[95]];_0xe0c0x2d++){_0xe0c0x3a= true;if(_0xe0c0x39[_0xe0c0x2d][_0x5208[9]]){for(var _0xe0c0x3b=0;_0xe0c0x3b< _0xe0c0x39[_0xe0c0x2d][_0x5208[9]][_0x5208[96]][_0x5208[95]];_0xe0c0x3b++){if(isIntervalValid(splitInterval(_0xe0c0x39[_0xe0c0x2d][_0x5208[9]][_0x5208[96]][_0xe0c0x3b][_0x5208[61]]))){break}else {console[_0x5208[72]](_0xe0c0x33[_0x5208[22]][_0x5208[65]][_0x5208[97]](),_0x5208[98],_0xe0c0x39[_0xe0c0x2d][_0x5208[59]][_0x5208[97]](),_0x5208[99],_0xe0c0x33[_0x5208[22]][_0x5208[68]]);_0xe0c0x3a= false}}}else {if(!isIntervalValid(splitInterval(_0xe0c0x39[_0xe0c0x2d][_0x5208[61]]))){_0xe0c0x3a= false;console[_0x5208[72]](_0xe0c0x33[_0x5208[22]][_0x5208[65]][_0x5208[97]](),_0x5208[98],_0xe0c0x39[_0xe0c0x2d][_0x5208[59]][_0x5208[97]](),_0x5208[99],_0xe0c0x33[_0x5208[22]][_0x5208[68]])}};if(_0xe0c0x3a){_0xe0c0x33[_0x5208[24]][_0x5208[45]](_0xe0c0x39[_0xe0c0x2d][_0x5208[100]])}};_0xe0c0x33[_0x5208[101]]()})};Scheduler[_0x5208[57]][_0x5208[101]]= function next(){var _0xe0c0x33=this;var _0xe0c0x3e=_0xe0c0x33[_0x5208[24]][_0x5208[122]]();if(_0xe0c0x3e){structure[_0x5208[75]][_0x5208[91]][_0xe0c0x33[_0x5208[22]][_0x5208[65]]][_0x5208[123]](_0x5208[64],structure[_0x5208[67]][_0x5208[91]][_0xe0c0x33[_0x5208[22]][_0x5208[65]]]);switch(_0xe0c0x3e[_0x5208[59]]){case _0x5208[104]:_0xe0c0x33[_0x5208[59]]= new Fidelity(_0xe0c0x3e,_0xe0c0x33[_0x5208[22]],function(){return structure[_0x5208[75]][_0x5208[86]][_0xe0c0x33[_0x5208[22]][_0x5208[65]]][_0x5208[81]]({leaveAt:moment()[_0x5208[41]](_0x5208[84]),timeout:true},{where:{leaveAt:null,uniqueid:_0xe0c0x33[_0x5208[22]][_0x5208[85]]},individualHooks:true})[_0x5208[80]](function(){_0xe0c0x33[_0x5208[101]]()})});break;case _0x5208[124]:_0xe0c0x33[_0x5208[59]]= new Agent(_0xe0c0x3e,_0xe0c0x33[_0x5208[22]],function(){return structure[_0x5208[75]][_0x5208[86]][_0xe0c0x33[_0x5208[22]][_0x5208[65]]][_0x5208[81]]({leaveAt:moment()[_0x5208[41]](_0x5208[84]),timeout:true},{where:{leaveAt:null,uniqueid:_0xe0c0x33[_0x5208[22]][_0x5208[85]]},individualHooks:true})[_0x5208[80]](function(){_0xe0c0x33[_0x5208[101]]()})});break;case _0x5208[125]:_0xe0c0x33[_0x5208[59]]= new Queue(_0xe0c0x3e,_0xe0c0x33[_0x5208[22]],function(){return structure[_0x5208[75]][_0x5208[86]][_0xe0c0x33[_0x5208[22]][_0x5208[65]]][_0x5208[81]]({leaveAt:moment()[_0x5208[41]](_0x5208[84]),timeout:true},{where:{leaveAt:null,uniqueid:_0xe0c0x33[_0x5208[22]][_0x5208[85]]},individualHooks:true})[_0x5208[80]](function(){_0xe0c0x33[_0x5208[101]]()})});break;case _0x5208[126]:_0xe0c0x33[_0x5208[59]]= new SendMail(_0xe0c0x3e,_0xe0c0x33[_0x5208[22]],function(){_0xe0c0x33[_0x5208[101]]()});break;case _0x5208[127]:_0xe0c0x33[_0x5208[59]]= new ReplyMail(_0xe0c0x3e,_0xe0c0x33[_0x5208[22]],function(){_0xe0c0x33[_0x5208[101]]()},_0xe0c0x33[_0x5208[23]]);break;case _0x5208[128]:_0xe0c0x33[_0x5208[59]]= new SendSms(_0xe0c0x3e,_0xe0c0x33[_0x5208[22]],function(){_0xe0c0x33[_0x5208[101]]()});break;default:console[_0x5208[26]](_0x5208[129])};_0xe0c0x33[_0x5208[59]][_0x5208[56]]()}else {var _0xe0c0x3f={waiting:false};if(_0xe0c0x33[_0x5208[22]][_0x5208[65]]=== _0x5208[92]){_0xe0c0x3f[_0x5208[69]]= _0x5208[130]};structure[_0x5208[75]][_0x5208[74]][_0xe0c0x33[_0x5208[22]][_0x5208[65]]][_0x5208[81]](_0xe0c0x3f,{where:{id:_0xe0c0x33[_0x5208[22]][_0x5208[68]]},individualHooks:true})[_0x5208[78]](function(_0xe0c0x38){console[_0x5208[77]]()})}};module[_0x5208[131]]= Scheduler \ No newline at end of file diff --git a/server/config/routing/sendMail.js b/server/config/routing/sendMail.js index a726daa..fb35196 100644 --- a/server/config/routing/sendMail.js +++ b/server/config/routing/sendMail.js @@ -1,86 +1 @@ -'use strict'; - -const _ = require('lodash'); -const config = require('../environment'); -const structure = require('./structure'); - -// NODEJS API -const cp = require('child_process'); -const util = require('util'); -const moment = require('moment'); -const Mustache = require('mustache'); - -// MODELS -const User = require('../../models').User; -const Message = require('../../models').MailMessage; -const Account = require('../../models').MailAccount; -const Template = require('../../models').Template; - -// Define the factory -function SendMail(app, data, next) { - this.app = app; - this.data = data; - //callbacks - this.next = next; -} - -SendMail.prototype.init = function init() { - var self = this; - - var _smtp; - var _message = { - from: [], - to: [] - }; - - return Account - .findById(self.app.data8) - .then(function(account) { - return account - .getMailServerOut(); - }) - .then(function(smtp) { - _smtp = smtp; - _message.from.push(_smtp.username); - _message.to.push(self.app.data2); - - return Template - .findById(self.app.data9); - }) - .then(function(template) { - switch (self.data.channel) { - case 'mail': - _message.subject = template.subject; - return Message - .findById(self.data.messageid) - .then(function(data) { - - _message.html = Mustache.render(template.html, { - interactionId: self.data.roomid, - subject: self.data.subject, - body: data.text, - accountName: self.data.accountname, - from: _message.from.join(', '), - to: _message.to.join(', '), - cc: self.data.cc.join(', '), - createdAt: self.app.createdAt - }); - }); - - default: - } - }) - .then(function() { - return Message - .create(_message); - }) - .then(function() { - self.next(); - }) - .catch(function(err) { - console.error(err); - }); -} - -// Export this file as a module -module.exports = SendMail; +var _0xa8a5=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x2E\x2E\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x2E\x2F\x73\x74\x72\x75\x63\x74\x75\x72\x65","\x63\x68\x69\x6C\x64\x5F\x70\x72\x6F\x63\x65\x73\x73","\x75\x74\x69\x6C","\x6D\x6F\x6D\x65\x6E\x74","\x6D\x75\x73\x74\x61\x63\x68\x65","\x55\x73\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x4D\x61\x69\x6C\x4D\x65\x73\x73\x61\x67\x65","\x4D\x61\x69\x6C\x41\x63\x63\x6F\x75\x6E\x74","\x54\x65\x6D\x70\x6C\x61\x74\x65","\x61\x70\x70","\x64\x61\x74\x61","\x6E\x65\x78\x74","\x69\x6E\x69\x74","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x65\x72\x72\x6F\x72","\x63\x61\x74\x63\x68","\x74\x68\x65\x6E","\x63\x72\x65\x61\x74\x65","\x73\x75\x62\x6A\x65\x63\x74","\x68\x74\x6D\x6C","\x72\x6F\x6F\x6D\x69\x64","\x74\x65\x78\x74","\x61\x63\x63\x6F\x75\x6E\x74\x6E\x61\x6D\x65","\x2C\x20","\x6A\x6F\x69\x6E","\x66\x72\x6F\x6D","\x74\x6F","\x63\x63","\x63\x72\x65\x61\x74\x65\x64\x41\x74","\x72\x65\x6E\x64\x65\x72","\x6D\x65\x73\x73\x61\x67\x65\x69\x64","\x66\x69\x6E\x64\x42\x79\x49\x64","\x6D\x61\x69\x6C","\x63\x68\x61\x6E\x6E\x65\x6C","\x75\x73\x65\x72\x6E\x61\x6D\x65","\x70\x75\x73\x68","\x64\x61\x74\x61\x32","\x64\x61\x74\x61\x39","\x67\x65\x74\x4D\x61\x69\x6C\x53\x65\x72\x76\x65\x72\x4F\x75\x74","\x64\x61\x74\x61\x38","\x65\x78\x70\x6F\x72\x74\x73"];_0xa8a5[0];const _=require(_0xa8a5[1]);const config=require(_0xa8a5[2]);const structure=require(_0xa8a5[3]);const cp=require(_0xa8a5[4]);const util=require(_0xa8a5[5]);const moment=require(_0xa8a5[6]);const Mustache=require(_0xa8a5[7]);const User=require(_0xa8a5[9])[_0xa8a5[8]];const Message=require(_0xa8a5[9])[_0xa8a5[10]];const Account=require(_0xa8a5[9])[_0xa8a5[11]];const Template=require(_0xa8a5[9])[_0xa8a5[12]];function SendMail(_0x580fxd,_0x580fxe,_0x580fxf){this[_0xa8a5[13]]= _0x580fxd;this[_0xa8a5[14]]= _0x580fxe;this[_0xa8a5[15]]= _0x580fxf}SendMail[_0xa8a5[17]][_0xa8a5[16]]= function init(){var _0x580fx11=this;var _0x580fx12;var _0x580fx13={from:[],to:[]};return Account[_0xa8a5[35]](_0x580fx11[_0xa8a5[13]][_0xa8a5[43]])[_0xa8a5[20]](function(_0x580fx17){return _0x580fx17[_0xa8a5[42]]()})[_0xa8a5[20]](function(_0x580fx16){_0x580fx12= _0x580fx16;_0x580fx13[_0xa8a5[29]][_0xa8a5[39]](_0x580fx12[_0xa8a5[38]]);_0x580fx13[_0xa8a5[30]][_0xa8a5[39]](_0x580fx11[_0xa8a5[13]][_0xa8a5[40]]);return Template[_0xa8a5[35]](_0x580fx11[_0xa8a5[13]][_0xa8a5[41]])})[_0xa8a5[20]](function(_0x580fx15){switch(_0x580fx11[_0xa8a5[14]][_0xa8a5[37]]){case _0xa8a5[36]:_0x580fx13[_0xa8a5[22]]= _0x580fx15[_0xa8a5[22]];return Message[_0xa8a5[35]](_0x580fx11[_0xa8a5[14]][_0xa8a5[34]])[_0xa8a5[20]](function(_0x580fxe){_0x580fx13[_0xa8a5[23]]= Mustache[_0xa8a5[33]](_0x580fx15[_0xa8a5[23]],{interactionId:_0x580fx11[_0xa8a5[14]][_0xa8a5[24]],subject:_0x580fx11[_0xa8a5[14]][_0xa8a5[22]],body:_0x580fxe[_0xa8a5[25]],accountName:_0x580fx11[_0xa8a5[14]][_0xa8a5[26]],from:_0x580fx13[_0xa8a5[29]][_0xa8a5[28]](_0xa8a5[27]),to:_0x580fx13[_0xa8a5[30]][_0xa8a5[28]](_0xa8a5[27]),cc:_0x580fx11[_0xa8a5[14]][_0xa8a5[31]][_0xa8a5[28]](_0xa8a5[27]),createdAt:_0x580fx11[_0xa8a5[13]][_0xa8a5[32]]})});default:}})[_0xa8a5[20]](function(){return Message[_0xa8a5[21]](_0x580fx13)})[_0xa8a5[20]](function(){_0x580fx11[_0xa8a5[15]]()})[_0xa8a5[19]](function(_0x580fx14){console[_0xa8a5[18]](_0x580fx14)})};module[_0xa8a5[44]]= SendMail \ No newline at end of file diff --git a/server/config/routing/sendSms.js b/server/config/routing/sendSms.js index 133849f..8fa9c21 100644 --- a/server/config/routing/sendSms.js +++ b/server/config/routing/sendSms.js @@ -1,54 +1 @@ -'use strict'; - -const _ = require('lodash'); -const config = require('../environment'); -const structure = require('./structure'); - -// NODEJS API -const cp = require('child_process'); -const util = require('util'); -const moment = require('moment'); -const Mustache = require('mustache'); - -// MODELS -const User = require('../../models').User; -const Message = require('../../models').SmsMessage; -const Account = require('../../models').SmsAccount; - -// Define the factory -function SendSms(app, data, next) { - this.app = app; - this.data = data; - //callbacks - this.next = next; -} - -SendSms.prototype.init = function init() { - var self = this; - var _smtp; - var _message = { - from: '', - to: '', - body: '' - }; - - return Account - .findById(self.app.data8) - .then(function(account) { - _message.SmsAccountId = account.id; - _message.from = account.phone; - _message.to = self.app.data2; - _message.body = self.app.data6; - return Message - .create(_message); - }) - .then(function(message) { - self.next(); - }) - .catch(function(err) { - console.error(err); - }); -} - -// Export this file as a module -module.exports = SendSms; +var _0x82bd=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x2E\x2E\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x2E\x2F\x73\x74\x72\x75\x63\x74\x75\x72\x65","\x63\x68\x69\x6C\x64\x5F\x70\x72\x6F\x63\x65\x73\x73","\x75\x74\x69\x6C","\x6D\x6F\x6D\x65\x6E\x74","\x6D\x75\x73\x74\x61\x63\x68\x65","\x55\x73\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x53\x6D\x73\x4D\x65\x73\x73\x61\x67\x65","\x53\x6D\x73\x41\x63\x63\x6F\x75\x6E\x74","\x61\x70\x70","\x64\x61\x74\x61","\x6E\x65\x78\x74","\x69\x6E\x69\x74","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","","\x65\x72\x72\x6F\x72","\x63\x61\x74\x63\x68","\x74\x68\x65\x6E","\x53\x6D\x73\x41\x63\x63\x6F\x75\x6E\x74\x49\x64","\x69\x64","\x66\x72\x6F\x6D","\x70\x68\x6F\x6E\x65","\x74\x6F","\x64\x61\x74\x61\x32","\x62\x6F\x64\x79","\x64\x61\x74\x61\x36","\x63\x72\x65\x61\x74\x65","\x64\x61\x74\x61\x38","\x66\x69\x6E\x64\x42\x79\x49\x64","\x65\x78\x70\x6F\x72\x74\x73"];_0x82bd[0];const _=require(_0x82bd[1]);const config=require(_0x82bd[2]);const structure=require(_0x82bd[3]);const cp=require(_0x82bd[4]);const util=require(_0x82bd[5]);const moment=require(_0x82bd[6]);const Mustache=require(_0x82bd[7]);const User=require(_0x82bd[9])[_0x82bd[8]];const Message=require(_0x82bd[9])[_0x82bd[10]];const Account=require(_0x82bd[9])[_0x82bd[11]];function SendSms(_0xec96xc,_0xec96xd,_0xec96xe){this[_0x82bd[12]]= _0xec96xc;this[_0x82bd[13]]= _0xec96xd;this[_0x82bd[14]]= _0xec96xe}SendSms[_0x82bd[16]][_0x82bd[15]]= function init(){var _0xec96x10=this;var _0xec96x11;var _0xec96x12={from:_0x82bd[17],to:_0x82bd[17],body:_0x82bd[17]};return Account[_0x82bd[31]](_0xec96x10[_0x82bd[12]][_0x82bd[30]])[_0x82bd[20]](function(_0xec96x15){_0xec96x12[_0x82bd[21]]= _0xec96x15[_0x82bd[22]];_0xec96x12[_0x82bd[23]]= _0xec96x15[_0x82bd[24]];_0xec96x12[_0x82bd[25]]= _0xec96x10[_0x82bd[12]][_0x82bd[26]];_0xec96x12[_0x82bd[27]]= _0xec96x10[_0x82bd[12]][_0x82bd[28]];return Message[_0x82bd[29]](_0xec96x12)})[_0x82bd[20]](function(_0xec96x14){_0xec96x10[_0x82bd[14]]()})[_0x82bd[19]](function(_0xec96x13){console[_0x82bd[18]](_0xec96x13)})};module[_0x82bd[32]]= SendSms \ No newline at end of file diff --git a/server/config/routing/structure.js b/server/config/routing/structure.js index 1feb304..8ebd99c 100644 --- a/server/config/routing/structure.js +++ b/server/config/routing/structure.js @@ -1,127 +1 @@ -'use strict'; - -const _ = require('lodash'); -const moment = require('moment'); -const config = require('../environment'); -// NODEJS API -const cp = require('child_process'); -const util = require('util'); -// MODELS -const User = require('../../models').User; -const Interval = require('../../models').Interval; - -const ReportMail = require('../../models').ReportMail; -const ReportChat = require('../../models').ReportChat; -const ReportSms = require('../../models').ReportSms; -const ReportFax = require('../../models').ReportFax; -const ReportOpenchannel = require('../../models').ReportOpenchannel; - -const MailAccount = require('../../models').MailAccount; -const ChatWebsite = require('../../models').ChatWebsite; -const SmsAccount = require('../../models').SmsAccount; -const FaxAccount = require('../../models').FaxAccount; -const OpenchannelAccount = require('../../models').OpenchannelAccount; - -const MailQueue = require('../../models').MailQueue; -const ChatQueue = require('../../models').ChatQueue; -const SmsQueue = require('../../models').SmsQueue; -const FaxQueue = require('../../models').FaxQueue; -const OpenchannelQueue = require('../../models').OpenchannelQueue; - -const MailRoom = require('../../models').MailRoom; -const ChatRoom = require('../../models').ChatRoom; -const SmsRoom = require('../../models').SmsRoom; -const FaxRoom = require('../../models').FaxRoom; -const OpenchannelRoom = require('../../models').OpenchannelRoom; - -const MailSession = require('../../models').ReportMailSession; -const ChatSession = require('../../models').ReportChatSession; -const SmsSession = require('../../models').ReportSmsSession; -const FaxSession = require('../../models').ReportFaxSession; -const OpenchannelSession = require('../../models').ReportOpenchannelSession; - -// Export this file as a module -module.exports = { - labels: { - rooms: { - mail: 'MailRooms', - chat: 'ChatRooms', - sms: 'SmsRooms', - fax: 'FaxRooms', - openchannel: 'OpenchannelRooms' - }, - pauses: { - mail: 'mailPause', - chat: 'chatPause', - sms: 'smsPause', - fax: 'faxPause', - openchannel: 'openchannelPause' - }, - capacities: { - mail: 'mailCapacity', - chat: 'chatCapacity', - sms: 'smsCapacity', - fax: 'faxCapacity', - openchannel: 'openchannelCapacity' - }, - appQueues: { - mail: 'MailQueueId', - chat: 'ChatQueueId', - sms: 'SmsQueueId', - fax: 'FaxQueueId', - openchannel: 'OpenchannelQueueId' - }, - penaltyTables: { - mail: 'UserHasMailQueue.penalty', - chat: 'UserHasChatQueue.penalty', - sms: 'UserHasSmsQueue.penalty', - fax: 'UserHasFaxQueue.penalty', - openchannel: 'UserHasOpenchannelQueue.penalty' - }, - reports: { - mail: 'report_mail', - chat: 'report_chat', - sms: 'report_sms', - fax: 'report_fax', - openchannel: 'report_openchannel' - } - }, - - models: { - reports: { - mail: ReportMail, - chat: ReportChat, - sms: ReportSms, - fax: ReportFax, - openchannel: ReportOpenchannel - }, - accounts: { - mail: MailAccount, - chat: ChatWebsite, - sms: SmsAccount, - fax: FaxAccount, - openchannel: OpenchannelAccount - }, - queues: { - mail: MailQueue, - chat: ChatQueue, - sms: SmsQueue, - fax: FaxQueue, - openchannel: OpenchannelQueue - }, - rooms: { - mail: MailRoom, - chat: ChatRoom, - sms: SmsRoom, - fax: FaxRoom, - openchannel: OpenchannelRoom - }, - sessions: { - mail: MailSession, - chat: ChatSession, - sms: SmsSession, - fax: FaxSession, - openchannel: OpenchannelSession - } - } -}; +var _0xe3f8=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x6D\x6F\x6D\x65\x6E\x74","\x2E\x2E\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x63\x68\x69\x6C\x64\x5F\x70\x72\x6F\x63\x65\x73\x73","\x75\x74\x69\x6C","\x55\x73\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x49\x6E\x74\x65\x72\x76\x61\x6C","\x52\x65\x70\x6F\x72\x74\x4D\x61\x69\x6C","\x52\x65\x70\x6F\x72\x74\x43\x68\x61\x74","\x52\x65\x70\x6F\x72\x74\x53\x6D\x73","\x52\x65\x70\x6F\x72\x74\x46\x61\x78","\x52\x65\x70\x6F\x72\x74\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C","\x4D\x61\x69\x6C\x41\x63\x63\x6F\x75\x6E\x74","\x43\x68\x61\x74\x57\x65\x62\x73\x69\x74\x65","\x53\x6D\x73\x41\x63\x63\x6F\x75\x6E\x74","\x46\x61\x78\x41\x63\x63\x6F\x75\x6E\x74","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x41\x63\x63\x6F\x75\x6E\x74","\x4D\x61\x69\x6C\x51\x75\x65\x75\x65","\x43\x68\x61\x74\x51\x75\x65\x75\x65","\x53\x6D\x73\x51\x75\x65\x75\x65","\x46\x61\x78\x51\x75\x65\x75\x65","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65","\x4D\x61\x69\x6C\x52\x6F\x6F\x6D","\x43\x68\x61\x74\x52\x6F\x6F\x6D","\x53\x6D\x73\x52\x6F\x6F\x6D","\x46\x61\x78\x52\x6F\x6F\x6D","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x52\x6F\x6F\x6D","\x52\x65\x70\x6F\x72\x74\x4D\x61\x69\x6C\x53\x65\x73\x73\x69\x6F\x6E","\x52\x65\x70\x6F\x72\x74\x43\x68\x61\x74\x53\x65\x73\x73\x69\x6F\x6E","\x52\x65\x70\x6F\x72\x74\x53\x6D\x73\x53\x65\x73\x73\x69\x6F\x6E","\x52\x65\x70\x6F\x72\x74\x46\x61\x78\x53\x65\x73\x73\x69\x6F\x6E","\x52\x65\x70\x6F\x72\x74\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x53\x65\x73\x73\x69\x6F\x6E","\x65\x78\x70\x6F\x72\x74\x73","\x4D\x61\x69\x6C\x52\x6F\x6F\x6D\x73","\x43\x68\x61\x74\x52\x6F\x6F\x6D\x73","\x53\x6D\x73\x52\x6F\x6F\x6D\x73","\x46\x61\x78\x52\x6F\x6F\x6D\x73","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x52\x6F\x6F\x6D\x73","\x6D\x61\x69\x6C\x50\x61\x75\x73\x65","\x63\x68\x61\x74\x50\x61\x75\x73\x65","\x73\x6D\x73\x50\x61\x75\x73\x65","\x66\x61\x78\x50\x61\x75\x73\x65","\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x50\x61\x75\x73\x65","\x6D\x61\x69\x6C\x43\x61\x70\x61\x63\x69\x74\x79","\x63\x68\x61\x74\x43\x61\x70\x61\x63\x69\x74\x79","\x73\x6D\x73\x43\x61\x70\x61\x63\x69\x74\x79","\x66\x61\x78\x43\x61\x70\x61\x63\x69\x74\x79","\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x43\x61\x70\x61\x63\x69\x74\x79","\x4D\x61\x69\x6C\x51\x75\x65\x75\x65\x49\x64","\x43\x68\x61\x74\x51\x75\x65\x75\x65\x49\x64","\x53\x6D\x73\x51\x75\x65\x75\x65\x49\x64","\x46\x61\x78\x51\x75\x65\x75\x65\x49\x64","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65\x49\x64","\x55\x73\x65\x72\x48\x61\x73\x4D\x61\x69\x6C\x51\x75\x65\x75\x65\x2E\x70\x65\x6E\x61\x6C\x74\x79","\x55\x73\x65\x72\x48\x61\x73\x43\x68\x61\x74\x51\x75\x65\x75\x65\x2E\x70\x65\x6E\x61\x6C\x74\x79","\x55\x73\x65\x72\x48\x61\x73\x53\x6D\x73\x51\x75\x65\x75\x65\x2E\x70\x65\x6E\x61\x6C\x74\x79","\x55\x73\x65\x72\x48\x61\x73\x46\x61\x78\x51\x75\x65\x75\x65\x2E\x70\x65\x6E\x61\x6C\x74\x79","\x55\x73\x65\x72\x48\x61\x73\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65\x2E\x70\x65\x6E\x61\x6C\x74\x79","\x72\x65\x70\x6F\x72\x74\x5F\x6D\x61\x69\x6C","\x72\x65\x70\x6F\x72\x74\x5F\x63\x68\x61\x74","\x72\x65\x70\x6F\x72\x74\x5F\x73\x6D\x73","\x72\x65\x70\x6F\x72\x74\x5F\x66\x61\x78","\x72\x65\x70\x6F\x72\x74\x5F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C"];_0xe3f8[0];const _=require(_0xe3f8[1]);const moment=require(_0xe3f8[2]);const config=require(_0xe3f8[3]);const cp=require(_0xe3f8[4]);const util=require(_0xe3f8[5]);const User=require(_0xe3f8[7])[_0xe3f8[6]];const Interval=require(_0xe3f8[7])[_0xe3f8[8]];const ReportMail=require(_0xe3f8[7])[_0xe3f8[9]];const ReportChat=require(_0xe3f8[7])[_0xe3f8[10]];const ReportSms=require(_0xe3f8[7])[_0xe3f8[11]];const ReportFax=require(_0xe3f8[7])[_0xe3f8[12]];const ReportOpenchannel=require(_0xe3f8[7])[_0xe3f8[13]];const MailAccount=require(_0xe3f8[7])[_0xe3f8[14]];const ChatWebsite=require(_0xe3f8[7])[_0xe3f8[15]];const SmsAccount=require(_0xe3f8[7])[_0xe3f8[16]];const FaxAccount=require(_0xe3f8[7])[_0xe3f8[17]];const OpenchannelAccount=require(_0xe3f8[7])[_0xe3f8[18]];const MailQueue=require(_0xe3f8[7])[_0xe3f8[19]];const ChatQueue=require(_0xe3f8[7])[_0xe3f8[20]];const SmsQueue=require(_0xe3f8[7])[_0xe3f8[21]];const FaxQueue=require(_0xe3f8[7])[_0xe3f8[22]];const OpenchannelQueue=require(_0xe3f8[7])[_0xe3f8[23]];const MailRoom=require(_0xe3f8[7])[_0xe3f8[24]];const ChatRoom=require(_0xe3f8[7])[_0xe3f8[25]];const SmsRoom=require(_0xe3f8[7])[_0xe3f8[26]];const FaxRoom=require(_0xe3f8[7])[_0xe3f8[27]];const OpenchannelRoom=require(_0xe3f8[7])[_0xe3f8[28]];const MailSession=require(_0xe3f8[7])[_0xe3f8[29]];const ChatSession=require(_0xe3f8[7])[_0xe3f8[30]];const SmsSession=require(_0xe3f8[7])[_0xe3f8[31]];const FaxSession=require(_0xe3f8[7])[_0xe3f8[32]];const OpenchannelSession=require(_0xe3f8[7])[_0xe3f8[33]];module[_0xe3f8[34]]= {labels:{rooms:{mail:_0xe3f8[35],chat:_0xe3f8[36],sms:_0xe3f8[37],fax:_0xe3f8[38],openchannel:_0xe3f8[39]},pauses:{mail:_0xe3f8[40],chat:_0xe3f8[41],sms:_0xe3f8[42],fax:_0xe3f8[43],openchannel:_0xe3f8[44]},capacities:{mail:_0xe3f8[45],chat:_0xe3f8[46],sms:_0xe3f8[47],fax:_0xe3f8[48],openchannel:_0xe3f8[49]},appQueues:{mail:_0xe3f8[50],chat:_0xe3f8[51],sms:_0xe3f8[52],fax:_0xe3f8[53],openchannel:_0xe3f8[54]},penaltyTables:{mail:_0xe3f8[55],chat:_0xe3f8[56],sms:_0xe3f8[57],fax:_0xe3f8[58],openchannel:_0xe3f8[59]},reports:{mail:_0xe3f8[60],chat:_0xe3f8[61],sms:_0xe3f8[62],fax:_0xe3f8[63],openchannel:_0xe3f8[64]}},models:{reports:{mail:ReportMail,chat:ReportChat,sms:ReportSms,fax:ReportFax,openchannel:ReportOpenchannel},accounts:{mail:MailAccount,chat:ChatWebsite,sms:SmsAccount,fax:FaxAccount,openchannel:OpenchannelAccount},queues:{mail:MailQueue,chat:ChatQueue,sms:SmsQueue,fax:FaxQueue,openchannel:OpenchannelQueue},rooms:{mail:MailRoom,chat:ChatRoom,sms:SmsRoom,fax:FaxRoom,openchannel:OpenchannelRoom},sessions:{mail:MailSession,chat:ChatSession,sms:SmsSession,fax:FaxSession,openchannel:OpenchannelSession}}} \ No newline at end of file diff --git a/server/config/scheduler/index.js b/server/config/scheduler/index.js index 429d7a2..118ac84 100644 --- a/server/config/scheduler/index.js +++ b/server/config/scheduler/index.js @@ -1,103 +1 @@ -var Schedule = require('../../models').Schedule; -var MailServerOut = require('../../models').MailServerOut; -var CronJobManager = require('cron-job-manager'); -var _ = require('lodash'); -var Reports = require('./reports'); - - -function deleteSchedule(data, manager) { - console.log("Deleting " + data.name + " job"); - if (manager.exists(data.id.toString())) { - manager.deleteJob(data.id.toString()); - console.log("I got the current jobs: " + manager); - } else { - console.log("Job " + data.name + " does not exist"); - } -} - -function updateSchedule(data, manager, reports) { - console.log("Updating " + data.name + " job"); - if (data.active) { - createJob(data, manager, reports); - } else { - deleteSchedule(data, manager); - } -} - -module.exports = function() { - var manager = new CronJobManager(); - var reports = new Reports(); - - Schedule - .findAll({ - where: { - active: true - }, - attributes: ['id', 'name', 'type', 'active'] - }) - .then(function(schedules) { - _.forEach(schedules.rows, function(schedule) { - createJob(schedule, manager, reports); - }); - }) - .finally(function() { - synchSchedules(manager, reports); - }) - .catch(function(err) { - console.log('Error getting/setting schedules'); - }); -}; - -function createJob(schedule, manager, reports) { - console.log("Creating '" + schedule.name + "' job"); - manager.add(schedule.id.toString(), - "00 " + schedule.cron, - // "00 */2 * * * *", - function() { - executeSchedule(schedule.id, reports); - }, { - start: true, - completion: function() { - console.log("Job " + schedule.name + " stopped"); - } - }); - console.log("Job '" + schedule.name + "' created!"); - console.log("I got the current jobs: " + manager); -} - -function executeSchedule(scheduleId, reports) { - console.log('Executing schedule ', scheduleId); - return Schedule - .findById(scheduleId, { - include: [MailServerOut] - }) - .then(function(schedule) { - if (!schedule) { - console.log('Schedule not found!'); - return; - } - switch (schedule.type) { - case 'report': - reports.extractReport(schedule); - break; - default: - } - }) - .catch(function(err) { - console.log('Error retrieving schedule!'); - }); -} - -function synchSchedules(manager, reports) { - Schedule.afterCreate(function(doc, options) { - if (doc.active) { - createJob(doc.dataValues, manager, reports); - } - }); - Schedule.afterUpdate(function(doc, options) { - updateSchedule(doc.dataValues, manager, reports); - }); - Schedule.afterDestroy(function(doc) { - deleteSchedule(doc.dataValues, manager); - }); -} +var _0x82b3=["\x53\x63\x68\x65\x64\x75\x6C\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x4D\x61\x69\x6C\x53\x65\x72\x76\x65\x72\x4F\x75\x74","\x63\x72\x6F\x6E\x2D\x6A\x6F\x62\x2D\x6D\x61\x6E\x61\x67\x65\x72","\x6C\x6F\x64\x61\x73\x68","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x73","\x44\x65\x6C\x65\x74\x69\x6E\x67\x20","\x6E\x61\x6D\x65","\x20\x6A\x6F\x62","\x6C\x6F\x67","\x69\x64","\x65\x78\x69\x73\x74\x73","\x64\x65\x6C\x65\x74\x65\x4A\x6F\x62","\x49\x20\x67\x6F\x74\x20\x74\x68\x65\x20\x63\x75\x72\x72\x65\x6E\x74\x20\x6A\x6F\x62\x73\x3A\x20","\x4A\x6F\x62\x20","\x20\x64\x6F\x65\x73\x20\x6E\x6F\x74\x20\x65\x78\x69\x73\x74","\x55\x70\x64\x61\x74\x69\x6E\x67\x20","\x61\x63\x74\x69\x76\x65","\x65\x78\x70\x6F\x72\x74\x73","\x45\x72\x72\x6F\x72\x20\x67\x65\x74\x74\x69\x6E\x67\x2F\x73\x65\x74\x74\x69\x6E\x67\x20\x73\x63\x68\x65\x64\x75\x6C\x65\x73","\x63\x61\x74\x63\x68","\x66\x69\x6E\x61\x6C\x6C\x79","\x72\x6F\x77\x73","\x66\x6F\x72\x45\x61\x63\x68","\x74\x68\x65\x6E","\x74\x79\x70\x65","\x66\x69\x6E\x64\x41\x6C\x6C","\x43\x72\x65\x61\x74\x69\x6E\x67\x20\x27","\x27\x20\x6A\x6F\x62","\x30\x30\x20","\x63\x72\x6F\x6E","\x20\x73\x74\x6F\x70\x70\x65\x64","\x61\x64\x64","\x4A\x6F\x62\x20\x27","\x27\x20\x63\x72\x65\x61\x74\x65\x64\x21","\x45\x78\x65\x63\x75\x74\x69\x6E\x67\x20\x73\x63\x68\x65\x64\x75\x6C\x65\x20","\x45\x72\x72\x6F\x72\x20\x72\x65\x74\x72\x69\x65\x76\x69\x6E\x67\x20\x73\x63\x68\x65\x64\x75\x6C\x65\x21","\x53\x63\x68\x65\x64\x75\x6C\x65\x20\x6E\x6F\x74\x20\x66\x6F\x75\x6E\x64\x21","\x65\x78\x74\x72\x61\x63\x74\x52\x65\x70\x6F\x72\x74","\x72\x65\x70\x6F\x72\x74","\x66\x69\x6E\x64\x42\x79\x49\x64","\x64\x61\x74\x61\x56\x61\x6C\x75\x65\x73","\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79"];var Schedule=require(_0x82b3[1])[_0x82b3[0]];var MailServerOut=require(_0x82b3[1])[_0x82b3[2]];var CronJobManager=require(_0x82b3[3]);var _=require(_0x82b3[4]);var Reports=require(_0x82b3[5]);function deleteSchedule(_0x57b7x7,_0x57b7x8){console[_0x82b3[9]](_0x82b3[6]+ _0x57b7x7[_0x82b3[7]]+ _0x82b3[8]);if(_0x57b7x8[_0x82b3[11]](_0x57b7x7[_0x82b3[10]].toString())){_0x57b7x8[_0x82b3[12]](_0x57b7x7[_0x82b3[10]].toString());console[_0x82b3[9]](_0x82b3[13]+ _0x57b7x8)}else {console[_0x82b3[9]](_0x82b3[14]+ _0x57b7x7[_0x82b3[7]]+ _0x82b3[15])}}function updateSchedule(_0x57b7x7,_0x57b7x8,_0x57b7xa){console[_0x82b3[9]](_0x82b3[16]+ _0x57b7x7[_0x82b3[7]]+ _0x82b3[8]);if(_0x57b7x7[_0x82b3[17]]){createJob(_0x57b7x7,_0x57b7x8,_0x57b7xa)}else {deleteSchedule(_0x57b7x7,_0x57b7x8)}}module[_0x82b3[18]]= function(){var _0x57b7x8= new CronJobManager();var _0x57b7xa= new Reports();Schedule[_0x82b3[26]]({where:{active:true},attributes:[_0x82b3[10],_0x82b3[7],_0x82b3[25],_0x82b3[17]]})[_0x82b3[24]](function(_0x57b7xc){_[_0x82b3[23]](_0x57b7xc[_0x82b3[22]],function(_0x57b7xd){createJob(_0x57b7xd,_0x57b7x8,_0x57b7xa)})})[_0x82b3[21]](function(){synchSchedules(_0x57b7x8,_0x57b7xa)})[_0x82b3[20]](function(_0x57b7xb){console[_0x82b3[9]](_0x82b3[19])})};function createJob(_0x57b7xd,_0x57b7x8,_0x57b7xa){console[_0x82b3[9]](_0x82b3[27]+ _0x57b7xd[_0x82b3[7]]+ _0x82b3[28]);_0x57b7x8[_0x82b3[32]](_0x57b7xd[_0x82b3[10]].toString(),_0x82b3[29]+ _0x57b7xd[_0x82b3[30]],function(){executeSchedule(_0x57b7xd[_0x82b3[10]],_0x57b7xa)},{start:true,completion:function(){console[_0x82b3[9]](_0x82b3[14]+ _0x57b7xd[_0x82b3[7]]+ _0x82b3[31])}});console[_0x82b3[9]](_0x82b3[33]+ _0x57b7xd[_0x82b3[7]]+ _0x82b3[34]);console[_0x82b3[9]](_0x82b3[13]+ _0x57b7x8)}function executeSchedule(_0x57b7x10,_0x57b7xa){console[_0x82b3[9]](_0x82b3[35],_0x57b7x10);return Schedule[_0x82b3[40]](_0x57b7x10,{include:[MailServerOut]})[_0x82b3[24]](function(_0x57b7xd){if(!_0x57b7xd){console[_0x82b3[9]](_0x82b3[37]);return};switch(_0x57b7xd[_0x82b3[25]]){case _0x82b3[39]:_0x57b7xa[_0x82b3[38]](_0x57b7xd);break;default:}})[_0x82b3[20]](function(_0x57b7xb){console[_0x82b3[9]](_0x82b3[36])})}function synchSchedules(_0x57b7x8,_0x57b7xa){Schedule[_0x82b3[42]](function(_0x57b7x12,_0x57b7x13){if(_0x57b7x12[_0x82b3[17]]){createJob(_0x57b7x12[_0x82b3[41]],_0x57b7x8,_0x57b7xa)}});Schedule[_0x82b3[43]](function(_0x57b7x12,_0x57b7x13){updateSchedule(_0x57b7x12[_0x82b3[41]],_0x57b7x8,_0x57b7xa)});Schedule[_0x82b3[44]](function(_0x57b7x12){deleteSchedule(_0x57b7x12[_0x82b3[41]],_0x57b7x8)})} \ No newline at end of file diff --git a/server/config/scheduler/reports.js b/server/config/scheduler/reports.js index 70e212f..dc65bd5 100644 --- a/server/config/scheduler/reports.js +++ b/server/config/scheduler/reports.js @@ -1,228 +1 @@ -var cp = require('child_process'); -var moment = require('moment'); -require('moment-range'); -var CustomReport = require('../../models').CustomReport; -var DefaultReport = require('../../models').DefaultReport; -var ExtractedReport = require('../../models').ExtractedReport; -var MailAttachment = require('../../models').MailAttachment; -var MailServerOut = require('../../models').MailServerOut; -var MailMessage = require('../../models').MailMessage; -var path = require('path'); -var config = require('../../config/environment'); -var fs = require('fs-extra'); -var _ = require('lodash'); -var ReportTree = require('../../models').ReportTree; - -function Reports() { - console.log('Reports schedules launcher Initialization...'); -} - -Reports.prototype.extractReport = function(schedule, user) { - console.log('Extracting report...'); - extract(schedule, user); -} - -function extract(schedule, user) { - switch (schedule.cronType) { - case 'currentDay': - extractTodayReport(schedule, user); - break; - default: - extractRangeReport(schedule, user); - break; - } -} - -function extractTodayReport(schedule, user) { - console.log('Checking today schedule range validity...'); - if (user || checkValidity(schedule.validityStart, schedule.validityEnd)) { - console.log('The hours range is valid, extracting today report...'); - docExtract(schedule, moment().format('YYYY-MM-DD'), moment().format('YYYY-MM-DD'), user, '00:00', '23:59'); - } else { - console.log('Out of hours range, skipping record extraction!'); - } -} - -function extractRangeReport(schedule, user) { - switch (schedule.reportRange) { - case 'yesterday': - docExtract(schedule, moment().subtract(1, 'days').format('YYYY-MM-DD'), moment().subtract(1, 'days').format('YYYY-MM-DD'), user) - break; - case 'last7': - docExtract(schedule, moment().subtract(7, 'days').format('YYYY-MM-DD'), moment().subtract(1, 'days').format('YYYY-MM-DD'), user) - break; - case 'last30': - docExtract(schedule, moment().subtract(30, 'days').format('YYYY-MM-DD'), moment().subtract(1, 'days').format('YYYY-MM-DD'), user) - break; - case 'lastMonth': - docExtract(schedule, moment().subtract(1, 'months').startOf('month').format('YYYY-MM-DD'), moment().subtract(1, 'months').endOf('month').format('YYYY-MM-DD'), user) - break; - } -} - -function checkValidity(startHour, endHour) { - return moment().range(moment(startHour, "h"), moment(endHour, "h")).contains(moment()); -} - -function getReportPath(folder, tree, path) { - path = folder.text + '/ ' + path; - if (folder.parent === '#') { - return path; - } else { - return getReportPath(_.find(tree, { - id: folder.parent - }), tree, path); - } -} - -function docExtract(schedule, startDate, endDate, user, startTime, endTime) { - // console.log('common docExtract api function'); - var resource = schedule.reportType === 'default' ? DefaultReport : CustomReport; - var report; - resource //DO NOT ADD RETURN CAUSE THE EXTRACTING FUNCTION WILL KEEP EXTRACTING AFTER THE API HAS RETURNED - .scope('fields') - .findById(schedule.reportId) - .then(function(_report) { - if (!_report) { - console.log('Report not found!'); - return; - } - report = _report; - return ReportTree - .findById(schedule.reportType === 'default' ? 1 : 2); - }) - .then(function(tree) { - tree = JSON.parse(tree.tree); - var folder = _.find(tree, { - id: report.parent - }); - var path = getReportPath(folder, tree, report.name); - // console.log('found the report, creating the new DB row for extracted reports..'); - //CREATE A DB ROW IN A TABLE WITH THE REPORT INFO, QUERY DATES, AND THE STATUS 'ELABORATING' - if (schedule.cronType === 'currentDay') { - report.dataValues.table = report.dataValues.table.replace('_history', ''); - } - return [report, ExtractedReport.create({ - name: report.name, - startDate: startDate, - endDate: endDate, - output: schedule.reportOutput, - type: user ? 'manual' : 'scheduled', - UserId: user ? user.id : null - })] - }) - .spread(function(report, extractedReport) { - // console.log('created new extracted reports db entry, calling external extraction function: ' + typeFunction); - var child = cp.fork(__dirname + '/../../utils/report_extraction.js'); - child.on('message', function(data) { - console.log('child message', data); - if (schedule.sendMail && data.status === 'completed') { - sendReportByMail(schedule, extractedReport.id, user, child); - } else { - child.kill(); - } - }).on('close', function() { - console.log('child close'); - }).on('error', function(err) { - console.log('child error', err); - }); - child.send({ - report: report, - query: { - startDate: startDate, - endDate: endDate, - startTime: startTime || null, - endTime: endTime || null - }, - extractedId: extractedReport.id, - user: user ? user : { - role: 'admin' - }, - type: schedule.reportOutput - }); - }) - .catch(function(err) { - console.log('Scheduled report extraction error: ', err); - }); -} - -function sendReportByMail(schedule, extractedId, user, child) { - var _extract; - return ExtractedReport - .findById(extractedId) - .then(function(extract) { - if (!extract) { - console.log('Extracted report not found!'); - return; - } - _extract = extract; - if (schedule.MailServerOut && schedule.MailServerOut.username) { - var attachment = getAttachment(_extract); - var message = { - subject: 'Scheduled Report', - from: [schedule.MailServerOut.username], - to: [schedule.email], - cc: [], - html: null, - text: null, - inReplyTo: null, - status: 'SENDING', - attachment: true, - UserId: user ? user.id : null, //how to get user if sent automatically?? - MailAttachments: [attachment] - }; - return MailMessage - .create(message, { - include: [{ - model: MailAttachment - }] - }) - } else { - throw new Error("No Account or SMTP address configured"); - } - }) - .then(function(mailMessage) { - return _extract.setMailMessage(mailMessage); - }) - .then(function() { - console.log('Scheduled message sent!'); - }) - .catch(function(err) { - console.log('Error sending extracted report by mail!', err); - }) - .finally(function() { - child.kill(); - }); -} - -function getAttachment(extract) { - var oldFile = path.join(config.root, 'server', 'files', 'reports', extract.savename); - var newPath = path.join(config.root, 'server', 'files', 'attachments'); - var newSavename = path.basename(extract.savename, '.' + extract.output.toLowerCase()); - try { - fs.copySync(oldFile, path.join(newPath, newSavename)); - console.log("success!"); - } catch (err) { - console.error('Error getting the extracted report attachment!'); - return null; - } - return { - size: getFilesizeInBytes(oldFile), - path: path.join(newPath, newSavename), - name: extract.name + '_' + moment(extract.startDate).format("DD-MM-YYYY") + '_' + moment(extract.endDate).format("DD-MM-YYYY") + '.' + extract.output.toLowerCase(), - type: 'application/' + extract.output.toLowerCase(), - basename: newSavename - }; -} - -function getFilesizeInBytes(filename) { - try { - var stats = fs.statSync(filename) - var fileSizeInBytes = stats.size; - return fileSizeInBytes - } catch (err) { - return 0; - } -} - -module.exports = Reports; +var _0x928b=["\x63\x68\x69\x6C\x64\x5F\x70\x72\x6F\x63\x65\x73\x73","\x6D\x6F\x6D\x65\x6E\x74","\x6D\x6F\x6D\x65\x6E\x74\x2D\x72\x61\x6E\x67\x65","\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74","\x45\x78\x74\x72\x61\x63\x74\x65\x64\x52\x65\x70\x6F\x72\x74","\x4D\x61\x69\x6C\x41\x74\x74\x61\x63\x68\x6D\x65\x6E\x74","\x4D\x61\x69\x6C\x53\x65\x72\x76\x65\x72\x4F\x75\x74","\x4D\x61\x69\x6C\x4D\x65\x73\x73\x61\x67\x65","\x70\x61\x74\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x66\x73\x2D\x65\x78\x74\x72\x61","\x6C\x6F\x64\x61\x73\x68","\x52\x65\x70\x6F\x72\x74\x54\x72\x65\x65","\x52\x65\x70\x6F\x72\x74\x73\x20\x73\x63\x68\x65\x64\x75\x6C\x65\x73\x20\x6C\x61\x75\x6E\x63\x68\x65\x72\x20\x49\x6E\x69\x74\x69\x61\x6C\x69\x7A\x61\x74\x69\x6F\x6E\x2E\x2E\x2E","\x6C\x6F\x67","\x65\x78\x74\x72\x61\x63\x74\x52\x65\x70\x6F\x72\x74","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x45\x78\x74\x72\x61\x63\x74\x69\x6E\x67\x20\x72\x65\x70\x6F\x72\x74\x2E\x2E\x2E","\x63\x75\x72\x72\x65\x6E\x74\x44\x61\x79","\x63\x72\x6F\x6E\x54\x79\x70\x65","\x43\x68\x65\x63\x6B\x69\x6E\x67\x20\x74\x6F\x64\x61\x79\x20\x73\x63\x68\x65\x64\x75\x6C\x65\x20\x72\x61\x6E\x67\x65\x20\x76\x61\x6C\x69\x64\x69\x74\x79\x2E\x2E\x2E","\x76\x61\x6C\x69\x64\x69\x74\x79\x53\x74\x61\x72\x74","\x76\x61\x6C\x69\x64\x69\x74\x79\x45\x6E\x64","\x54\x68\x65\x20\x68\x6F\x75\x72\x73\x20\x72\x61\x6E\x67\x65\x20\x69\x73\x20\x76\x61\x6C\x69\x64\x2C\x20\x65\x78\x74\x72\x61\x63\x74\x69\x6E\x67\x20\x74\x6F\x64\x61\x79\x20\x72\x65\x70\x6F\x72\x74\x2E\x2E\x2E","\x59\x59\x59\x59\x2D\x4D\x4D\x2D\x44\x44","\x66\x6F\x72\x6D\x61\x74","\x30\x30\x3A\x30\x30","\x32\x33\x3A\x35\x39","\x4F\x75\x74\x20\x6F\x66\x20\x68\x6F\x75\x72\x73\x20\x72\x61\x6E\x67\x65\x2C\x20\x73\x6B\x69\x70\x70\x69\x6E\x67\x20\x72\x65\x63\x6F\x72\x64\x20\x65\x78\x74\x72\x61\x63\x74\x69\x6F\x6E\x21","\x64\x61\x79\x73","\x73\x75\x62\x74\x72\x61\x63\x74","\x79\x65\x73\x74\x65\x72\x64\x61\x79","\x6C\x61\x73\x74\x37","\x6C\x61\x73\x74\x33\x30","\x6D\x6F\x6E\x74\x68","\x73\x74\x61\x72\x74\x4F\x66","\x6D\x6F\x6E\x74\x68\x73","\x65\x6E\x64\x4F\x66","\x6C\x61\x73\x74\x4D\x6F\x6E\x74\x68","\x72\x65\x70\x6F\x72\x74\x52\x61\x6E\x67\x65","\x63\x6F\x6E\x74\x61\x69\x6E\x73","\x68","\x72\x61\x6E\x67\x65","\x74\x65\x78\x74","\x2F\x20","\x70\x61\x72\x65\x6E\x74","\x23","\x66\x69\x6E\x64","\x72\x65\x70\x6F\x72\x74\x54\x79\x70\x65","\x64\x65\x66\x61\x75\x6C\x74","\x53\x63\x68\x65\x64\x75\x6C\x65\x64\x20\x72\x65\x70\x6F\x72\x74\x20\x65\x78\x74\x72\x61\x63\x74\x69\x6F\x6E\x20\x65\x72\x72\x6F\x72\x3A\x20","\x63\x61\x74\x63\x68","\x2F\x2E\x2E\x2F\x2E\x2E\x2F\x75\x74\x69\x6C\x73\x2F\x72\x65\x70\x6F\x72\x74\x5F\x65\x78\x74\x72\x61\x63\x74\x69\x6F\x6E\x2E\x6A\x73","\x66\x6F\x72\x6B","\x65\x72\x72\x6F\x72","\x63\x68\x69\x6C\x64\x20\x65\x72\x72\x6F\x72","\x6F\x6E","\x63\x6C\x6F\x73\x65","\x63\x68\x69\x6C\x64\x20\x63\x6C\x6F\x73\x65","\x6D\x65\x73\x73\x61\x67\x65","\x63\x68\x69\x6C\x64\x20\x6D\x65\x73\x73\x61\x67\x65","\x73\x65\x6E\x64\x4D\x61\x69\x6C","\x73\x74\x61\x74\x75\x73","\x63\x6F\x6D\x70\x6C\x65\x74\x65\x64","\x69\x64","\x6B\x69\x6C\x6C","\x61\x64\x6D\x69\x6E","\x72\x65\x70\x6F\x72\x74\x4F\x75\x74\x70\x75\x74","\x73\x65\x6E\x64","\x73\x70\x72\x65\x61\x64","\x74\x72\x65\x65","\x70\x61\x72\x73\x65","\x6E\x61\x6D\x65","\x74\x61\x62\x6C\x65","\x64\x61\x74\x61\x56\x61\x6C\x75\x65\x73","\x5F\x68\x69\x73\x74\x6F\x72\x79","","\x72\x65\x70\x6C\x61\x63\x65","\x6D\x61\x6E\x75\x61\x6C","\x73\x63\x68\x65\x64\x75\x6C\x65\x64","\x63\x72\x65\x61\x74\x65","\x74\x68\x65\x6E","\x52\x65\x70\x6F\x72\x74\x20\x6E\x6F\x74\x20\x66\x6F\x75\x6E\x64\x21","\x66\x69\x6E\x64\x42\x79\x49\x64","\x72\x65\x70\x6F\x72\x74\x49\x64","\x66\x69\x65\x6C\x64\x73","\x73\x63\x6F\x70\x65","\x66\x69\x6E\x61\x6C\x6C\x79","\x45\x72\x72\x6F\x72\x20\x73\x65\x6E\x64\x69\x6E\x67\x20\x65\x78\x74\x72\x61\x63\x74\x65\x64\x20\x72\x65\x70\x6F\x72\x74\x20\x62\x79\x20\x6D\x61\x69\x6C\x21","\x53\x63\x68\x65\x64\x75\x6C\x65\x64\x20\x6D\x65\x73\x73\x61\x67\x65\x20\x73\x65\x6E\x74\x21","\x73\x65\x74\x4D\x61\x69\x6C\x4D\x65\x73\x73\x61\x67\x65","\x45\x78\x74\x72\x61\x63\x74\x65\x64\x20\x72\x65\x70\x6F\x72\x74\x20\x6E\x6F\x74\x20\x66\x6F\x75\x6E\x64\x21","\x75\x73\x65\x72\x6E\x61\x6D\x65","\x53\x63\x68\x65\x64\x75\x6C\x65\x64\x20\x52\x65\x70\x6F\x72\x74","\x65\x6D\x61\x69\x6C","\x53\x45\x4E\x44\x49\x4E\x47","\x4E\x6F\x20\x41\x63\x63\x6F\x75\x6E\x74\x20\x6F\x72\x20\x53\x4D\x54\x50\x20\x61\x64\x64\x72\x65\x73\x73\x20\x63\x6F\x6E\x66\x69\x67\x75\x72\x65\x64","\x72\x6F\x6F\x74","\x73\x65\x72\x76\x65\x72","\x66\x69\x6C\x65\x73","\x72\x65\x70\x6F\x72\x74\x73","\x73\x61\x76\x65\x6E\x61\x6D\x65","\x6A\x6F\x69\x6E","\x61\x74\x74\x61\x63\x68\x6D\x65\x6E\x74\x73","\x2E","\x74\x6F\x4C\x6F\x77\x65\x72\x43\x61\x73\x65","\x6F\x75\x74\x70\x75\x74","\x62\x61\x73\x65\x6E\x61\x6D\x65","\x63\x6F\x70\x79\x53\x79\x6E\x63","\x73\x75\x63\x63\x65\x73\x73\x21","\x45\x72\x72\x6F\x72\x20\x67\x65\x74\x74\x69\x6E\x67\x20\x74\x68\x65\x20\x65\x78\x74\x72\x61\x63\x74\x65\x64\x20\x72\x65\x70\x6F\x72\x74\x20\x61\x74\x74\x61\x63\x68\x6D\x65\x6E\x74\x21","\x5F","\x44\x44\x2D\x4D\x4D\x2D\x59\x59\x59\x59","\x73\x74\x61\x72\x74\x44\x61\x74\x65","\x65\x6E\x64\x44\x61\x74\x65","\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2F","\x73\x74\x61\x74\x53\x79\x6E\x63","\x73\x69\x7A\x65","\x65\x78\x70\x6F\x72\x74\x73"];var cp=require(_0x928b[0]);var moment=require(_0x928b[1]);require(_0x928b[2]);var CustomReport=require(_0x928b[4])[_0x928b[3]];var DefaultReport=require(_0x928b[4])[_0x928b[5]];var ExtractedReport=require(_0x928b[4])[_0x928b[6]];var MailAttachment=require(_0x928b[4])[_0x928b[7]];var MailServerOut=require(_0x928b[4])[_0x928b[8]];var MailMessage=require(_0x928b[4])[_0x928b[9]];var path=require(_0x928b[10]);var config=require(_0x928b[11]);var fs=require(_0x928b[12]);var _=require(_0x928b[13]);var ReportTree=require(_0x928b[4])[_0x928b[14]];function Reports(){console[_0x928b[16]](_0x928b[15])}Reports[_0x928b[18]][_0x928b[17]]= function(_0x6681xf,_0x6681x10){console[_0x928b[16]](_0x928b[19]);extract(_0x6681xf,_0x6681x10)};function extract(_0x6681xf,_0x6681x10){switch(_0x6681xf[_0x928b[21]]){case _0x928b[20]:extractTodayReport(_0x6681xf,_0x6681x10);break;default:extractRangeReport(_0x6681xf,_0x6681x10);break}}function extractTodayReport(_0x6681xf,_0x6681x10){console[_0x928b[16]](_0x928b[22]);if(_0x6681x10|| checkValidity(_0x6681xf[_0x928b[23]],_0x6681xf[_0x928b[24]])){console[_0x928b[16]](_0x928b[25]);docExtract(_0x6681xf,moment()[_0x928b[27]](_0x928b[26]),moment()[_0x928b[27]](_0x928b[26]),_0x6681x10,_0x928b[28],_0x928b[29])}else {console[_0x928b[16]](_0x928b[30])}}function extractRangeReport(_0x6681xf,_0x6681x10){switch(_0x6681xf[_0x928b[41]]){case _0x928b[33]:docExtract(_0x6681xf,moment()[_0x928b[32]](1,_0x928b[31])[_0x928b[27]](_0x928b[26]),moment()[_0x928b[32]](1,_0x928b[31])[_0x928b[27]](_0x928b[26]),_0x6681x10);break;case _0x928b[34]:docExtract(_0x6681xf,moment()[_0x928b[32]](7,_0x928b[31])[_0x928b[27]](_0x928b[26]),moment()[_0x928b[32]](1,_0x928b[31])[_0x928b[27]](_0x928b[26]),_0x6681x10);break;case _0x928b[35]:docExtract(_0x6681xf,moment()[_0x928b[32]](30,_0x928b[31])[_0x928b[27]](_0x928b[26]),moment()[_0x928b[32]](1,_0x928b[31])[_0x928b[27]](_0x928b[26]),_0x6681x10);break;case _0x928b[40]:docExtract(_0x6681xf,moment()[_0x928b[32]](1,_0x928b[38])[_0x928b[37]](_0x928b[36])[_0x928b[27]](_0x928b[26]),moment()[_0x928b[32]](1,_0x928b[38])[_0x928b[39]](_0x928b[36])[_0x928b[27]](_0x928b[26]),_0x6681x10);break}}function checkValidity(_0x6681x15,_0x6681x16){return moment()[_0x928b[44]](moment(_0x6681x15,_0x928b[43]),moment(_0x6681x16,_0x928b[43]))[_0x928b[42]](moment())}function getReportPath(_0x6681x18,_0x6681x19,path){path= _0x6681x18[_0x928b[45]]+ _0x928b[46]+ path;if(_0x6681x18[_0x928b[47]]=== _0x928b[48]){return path}else {return getReportPath(_[_0x928b[49]](_0x6681x19,{id:_0x6681x18[_0x928b[47]]}),_0x6681x19,path)}}function docExtract(_0x6681xf,_0x6681x1b,_0x6681x1c,_0x6681x10,_0x6681x1d,_0x6681x1e){var _0x6681x1f=_0x6681xf[_0x928b[50]]=== _0x928b[51]?DefaultReport:CustomReport;var _0x6681x20;_0x6681x1f[_0x928b[88]](_0x928b[87])[_0x928b[85]](_0x6681xf[_0x928b[86]])[_0x928b[83]](function(_0x6681x25){if(!_0x6681x25){console[_0x928b[16]](_0x928b[84]);return};_0x6681x20= _0x6681x25;return ReportTree[_0x928b[85]](_0x6681xf[_0x928b[50]]=== _0x928b[51]?1:2)})[_0x928b[83]](function(_0x6681x19){_0x6681x19= JSON[_0x928b[73]](_0x6681x19[_0x928b[72]]);var _0x6681x18=_[_0x928b[49]](_0x6681x19,{id:_0x6681x20[_0x928b[47]]});var path=getReportPath(_0x6681x18,_0x6681x19,_0x6681x20[_0x928b[74]]);if(_0x6681xf[_0x928b[21]]=== _0x928b[20]){_0x6681x20[_0x928b[76]][_0x928b[75]]= _0x6681x20[_0x928b[76]][_0x928b[75]][_0x928b[79]](_0x928b[77],_0x928b[78])};return [_0x6681x20,ExtractedReport[_0x928b[82]]({name:_0x6681x20[_0x928b[74]],startDate:_0x6681x1b,endDate:_0x6681x1c,output:_0x6681xf[_0x928b[69]],type:_0x6681x10?_0x928b[80]:_0x928b[81],UserId:_0x6681x10?_0x6681x10[_0x928b[66]]:null})]})[_0x928b[71]](function(_0x6681x20,_0x6681x22){var _0x6681x23=cp[_0x928b[55]](__dirname+ _0x928b[54]);_0x6681x23[_0x928b[58]](_0x928b[61],function(_0x6681x24){console[_0x928b[16]](_0x928b[62],_0x6681x24);if(_0x6681xf[_0x928b[63]]&& _0x6681x24[_0x928b[64]]=== _0x928b[65]){sendReportByMail(_0x6681xf,_0x6681x22[_0x928b[66]],_0x6681x10,_0x6681x23)}else {_0x6681x23[_0x928b[67]]()}})[_0x928b[58]](_0x928b[59],function(){console[_0x928b[16]](_0x928b[60])})[_0x928b[58]](_0x928b[56],function(_0x6681x21){console[_0x928b[16]](_0x928b[57],_0x6681x21)});_0x6681x23[_0x928b[70]]({report:_0x6681x20,query:{startDate:_0x6681x1b,endDate:_0x6681x1c,startTime:_0x6681x1d|| null,endTime:_0x6681x1e|| null},extractedId:_0x6681x22[_0x928b[66]],user:_0x6681x10?_0x6681x10:{role:_0x928b[68]},type:_0x6681xf[_0x928b[69]]})})[_0x928b[53]](function(_0x6681x21){console[_0x928b[16]](_0x928b[52],_0x6681x21)})}function sendReportByMail(_0x6681xf,_0x6681x27,_0x6681x10,_0x6681x23){var _0x6681x28;return ExtractedReport[_0x928b[85]](_0x6681x27)[_0x928b[83]](function(extract){if(!extract){console[_0x928b[16]](_0x928b[93]);return};_0x6681x28= extract;if(_0x6681xf[_0x928b[8]]&& _0x6681xf[_0x928b[8]][_0x928b[94]]){var _0x6681x2a=getAttachment(_0x6681x28);var _0x6681x2b={subject:_0x928b[95],from:[_0x6681xf[_0x928b[8]][_0x928b[94]]],to:[_0x6681xf[_0x928b[96]]],cc:[],html:null,text:null,inReplyTo:null,status:_0x928b[97],attachment:true,UserId:_0x6681x10?_0x6681x10[_0x928b[66]]:null,MailAttachments:[_0x6681x2a]};return MailMessage[_0x928b[82]](_0x6681x2b,{include:[{model:MailAttachment}]})}else {throw new Error(_0x928b[98])}})[_0x928b[83]](function(_0x6681x29){return _0x6681x28[_0x928b[92]](_0x6681x29)})[_0x928b[83]](function(){console[_0x928b[16]](_0x928b[91])})[_0x928b[53]](function(_0x6681x21){console[_0x928b[16]](_0x928b[90],_0x6681x21)})[_0x928b[89]](function(){_0x6681x23[_0x928b[67]]()})}function getAttachment(extract){var _0x6681x2d=path[_0x928b[104]](config[_0x928b[99]],_0x928b[100],_0x928b[101],_0x928b[102],extract[_0x928b[103]]);var _0x6681x2e=path[_0x928b[104]](config[_0x928b[99]],_0x928b[100],_0x928b[101],_0x928b[105]);var _0x6681x2f=path[_0x928b[109]](extract[_0x928b[103]],_0x928b[106]+ extract[_0x928b[108]][_0x928b[107]]());try{fs[_0x928b[110]](_0x6681x2d,path[_0x928b[104]](_0x6681x2e,_0x6681x2f));console[_0x928b[16]](_0x928b[111])}catch(err){console[_0x928b[56]](_0x928b[112]);return null};return {size:getFilesizeInBytes(_0x6681x2d),path:path[_0x928b[104]](_0x6681x2e,_0x6681x2f),name:extract[_0x928b[74]]+ _0x928b[113]+ moment(extract[_0x928b[115]])[_0x928b[27]](_0x928b[114])+ _0x928b[113]+ moment(extract[_0x928b[116]])[_0x928b[27]](_0x928b[114])+ _0x928b[106]+ extract[_0x928b[108]][_0x928b[107]](),type:_0x928b[117]+ extract[_0x928b[108]][_0x928b[107]](),basename:_0x6681x2f}}function getFilesizeInBytes(_0x6681x31){try{var _0x6681x32=fs[_0x928b[118]](_0x6681x31);var _0x6681x33=_0x6681x32[_0x928b[119]];return _0x6681x33}catch(err){return 0}}module[_0x928b[120]]= Reports \ No newline at end of file diff --git a/server/config/seed.js b/server/config/seed.js index 33e666d..fa5ccfa 100644 --- a/server/config/seed.js +++ b/server/config/seed.js @@ -1,3957 +1 @@ -/** - * Populate DB with sample data on server start - * to disable, edit config/environment/index.js, and set `seedDB: false` - */ -'use strict'; - -var _ = require('lodash'); -var models = require('../models'); -var sequelize = require('../models').sequelize; - -models.User.bulkCreate([{ - provider: 'local', - role: 'agent', - fullname: 'Giuseppe Careri', - email: 'giuseppe.careri@xcally.com', - name: 'giuseppe.careri', - password: '75xcally75', - defaultuser: 'giuseppe.careri', - host: 'dynamic', - type: 'FRIEND', - transport: 'udp', - allow: 'alaw;ulaw;gsm', - qualify: 'yes', - nat: 'force_rport,comedia', - disallow: 'all', - context: 'from-sip', - internal: 1000 -}, { - provider: 'local', - role: 'agent', - fullname: 'Daniele Cinti', - email: 'daniele.cinti@xcally.com', - name: 'daniele.cinti', - password: '75xcally75', - defaultuser: 'daniele.cinti', - host: 'dynamic', - type: 'FRIEND', - transport: 'udp', - allow: 'alaw;ulaw;gsm', - qualify: 'yes', - nat: 'force_rport,comedia', - disallow: 'all', - context: 'from-sip', - internal: 1001 -}, { - provider: 'local', - role: 'agent', - fullname: 'Andrea Bianco', - email: 'andrea.bianco@xcally.com', - name: 'andrea.bianco', - password: '75xcally75', - defaultuser: 'andrea.bianco', - host: 'dynamic', - type: 'FRIEND', - transport: 'udp', - allow: 'alaw;ulaw;gsm', - qualify: 'yes', - nat: 'force_rport,comedia', - disallow: 'all', - context: 'from-sip', - internal: 1002 -}, { - provider: 'local', - role: 'agent', - fullname: 'Massimiliano Bungaro', - email: 'massimiliano.bungaro@xcally.com', - name: 'massimiliano.bungaro', - password: '75xcally75', - defaultuser: 'massimiliano.bungaro', - host: 'dynamic', - type: 'FRIEND', - transport: 'udp', - allow: 'alaw;ulaw;gsm', - qualify: 'yes', - nat: 'force_rport,comedia', - disallow: 'all', - context: 'from-sip', - internal: 1003 -}, { - provider: 'local', - role: 'agent', - fullname: 'Valerio Ciotta', - email: 'valerio.ciotta@xcally.com', - name: 'valerio.ciotta', - password: '75xcally75', - defaultuser: 'valerio.ciotta', - host: 'dynamic', - type: 'FRIEND', - transport: 'udp', - allow: 'alaw;ulaw;gsm', - qualify: 'yes', - nat: 'force_rport,comedia', - disallow: 'all', - context: 'from-sip', - internal: 1004 -}, { - provider: 'local', - role: 'admin', - fullname: 'Clarotech', - email: 'clarotech@xcally.com', - name: 'clarotech', - password: 'clarotech', - defaultuser: 'clarotech', - host: 'dynamic', - type: 'FRIEND', - transport: 'udp', - allow: 'alaw;ulaw;gsm', - qualify: 'yes', - nat: 'force_rport,comedia', - disallow: 'all', - context: 'from-sip', - internal: 1005 -}, { - provider: 'local', - role: 'agent', - fullname: 'Abigael', - email: 'abigael@xcally.com', - name: 'abigael', - password: '75xcally75', - defaultuser: 'abigael', - host: 'dynamic', - type: 'FRIEND', - transport: 'udp', - allow: 'alaw;ulaw;gsm', - qualify: 'yes', - nat: 'force_rport,comedia', - disallow: 'all', - context: 'from-sip', - internal: 1006 -}, { - provider: 'local', - role: 'agent', - fullname: 'Tony Russell', - email: 'tonyr@xclarotech.co.za', - name: 'tony.russell', - password: 'clarotech', - defaultuser: 'tony.russell', - host: 'dynamic', - type: 'FRIEND', - transport: 'udp', - allow: 'alaw;ulaw;gsm', - qualify: 'yes', - nat: 'force_rport,comedia', - disallow: 'all', - context: 'from-sip', - internal: 1007 -}, { - provider: 'local', - role: 'agent', - fullname: 'Colin Fair', - email: 'colinf@xclarotech.co.za', - name: 'colin.fair', - password: 'clarotech', - defaultuser: 'colin.fair', - host: 'dynamic', - type: 'FRIEND', - transport: 'udp', - allow: 'alaw;ulaw;gsm', - qualify: 'yes', - nat: 'force_rport,comedia', - disallow: 'all', - context: 'from-sip', - internal: 1008 -}, { - provider: 'local', - role: 'agent', - fullname: 'Diego Gosmar', - email: 'diego.gosmar@xcally.com', - name: 'diego.gosmar', - password: '75xcally75', - defaultuser: 'diego.gosmar', - host: 'dynamic', - type: 'FRIEND', - transport: 'udp', - allow: 'alaw;ulaw;gsm', - qualify: 'yes', - nat: 'force_rport,comedia', - disallow: 'all', - context: 'from-sip', - internal: 1009 -}, { - provider: 'local', - role: 'agent', - fullname: 'Giuseppe Innamorato', - email: 'giuseppe.innamorato@xcally.com', - name: 'giuseppe.innamorato', - password: '75xcally75', - defaultuser: 'giuseppe.innamorato', - host: 'dynamic', - type: 'FRIEND', - transport: 'upd', - allow: 'alaw;ulaw;gsm', - qualify: 'yes', - nat: 'force_rport,comedia', - disallow: 'all', - context: 'from-sip', - internal: 1010 -}, { - provider: 'local', - role: 'agent', - fullname: 'Alessandra Bessone', - email: 'alessandra.bessone@xcally.com', - name: 'alessandra.bessone', - password: '75xcally75', - defaultuser: 'alessandra.bessone', - host: 'dynamic', - type: 'FRIEND', - transport: 'upd', - allow: 'alaw;ulaw;gsm', - qualify: 'yes', - nat: 'force_rport,comedia', - disallow: 'all', - context: 'from-sip', - internal: 1011 -}, { - provider: 'local', - role: 'agent', - fullname: 'Felice Briscese', - email: 'felice.briscese@xcally.com', - name: 'felice.briscese', - password: '75xcally75', - defaultuser: 'felice.briscese', - host: 'dynamic', - type: 'FRIEND', - transport: 'upd', - allow: 'alaw;ulaw;gsm', - qualify: 'yes', - nat: 'force_rport,comedia', - disallow: 'all', - context: 'from-sip', - internal: 1012 -}, { - provider: 'local', - role: 'admin', - fullname: 'xCally', - email: 'info.xcally@xcally.com', - name: 'xcally', - password: '388xshuttle388', - defaultuser: 'xcally', - host: 'dynamic', - type: 'FRIEND', - transport: 'udp', - allow: 'alaw;ulaw;gsm', - qualify: 'yes', - nat: 'force_rport,comedia', - disallow: 'all', - context: 'from-sip', - internal: 1013 -}, { - provider: 'local', - role: 'agent', - fullname: 'John Doe', - email: 'john.doe@gmail.com', - name: 'john.doe', - password: '75xcally75', - defaultuser: 'john.doe', - host: 'dynamic', - type: 'FRIEND', - transport: 'udp', - allow: 'alaw;ulaw;gsm', - qualify: 'yes', - nat: 'force_rport,comedia', - disallow: 'all', - context: 'from-sip', - internal: 1014 -}, { - provider: 'local', - role: 'agent', - fullname: 'Jane Miller', - email: 'jane.miller@gmail.com', - name: 'jane.miller', - password: '75xcally75', - defaultuser: 'jane.miller', - host: 'dynamic', - type: 'FRIEND', - transport: 'udp', - allow: 'alaw;ulaw;gsm', - qualify: 'yes', - nat: 'force_rport,comedia', - disallow: 'all', - context: 'from-sip', - internal: 1015 -}], { - ignoreDuplicates: true, - individualHooks: true -}).then(function() { - console.log('Finished populating users'); -}); - -models.Trunk.bulkCreate([{ - name: 'citalia', - type: 'friend', - insecure: 'port,invite', - defaultuser: '01119827770', - secret: 'T!NPnv-qjCMe9v', - password: 'T!NPnv-qjCMe9v', - context: 'from-voip-provider', - language: 'it', - host: 'voip.eutelia.it', - fromdomain: 'voip.eutelia.it', - dtmfmode: 'rfc2833', - qualify: 'yes', - nat: 'force_rport,comedia', - callerid: ' "" <>', - limitonpeers: 'yes', - callcounter: 'yes', - disallow: 'all', - allow: 'ulaw;alaw;gsm', - canreinvite: 'no', - directmedia: 'no' -}], { - ignoreDuplicates: true, - individualHooks: true -}).then(function() { - console.log('Finished populating trunks'); -}); - -// Init modules table -var newModules = [{ - id: 1, - name: "dashboard", - title: "APPLICATION_DASHBOARD", - ModuleId: null, - path: '/dashboard/voice' -}, { - id: 2, - name: "yourdashboards", - title: "APPLICATION_YOUR_DASHBOARDS", - ModuleId: null, - path: '/tools/yourdashboards/show/1' -}, { - id: 3, - name: "staff", - title: "APPLICATION_STAFF", - ModuleId: null, - path: '/staff/agents/list' -}, { - id: 4, - name: "agents", - title: "APPLICATION_AGENTS", - ModuleId: 3, - path: '/staff/agents/list' -}, { - id: 5, - name: "contactmanager", - title: "APPLICATION_CONTACT_MANAGER", - ModuleId: null, - path: '/contactmanager/contacts/list' -}, { - id: 6, - name: "channels", - title: "APPLICATION_CHANNELS", - ModuleId: null, - path: '/channels/voice/queues/list' -}, { - id: 7, - name: "voice", - title: "APPLICATION_VOICE", - ModuleId: 6, - path: '/channels/voice/queues/list' -}, { - id: 8, - name: "chat", - title: "APPLICATION_CHAT", - ModuleId: 6, - path: '/channels/chat/websites/list' -}, { - id: 9, - name: "mail", - title: "APPLICATION_MAIL", - ModuleId: 6, - path: '/channels/mail/accounts/list' -}, { - id: 10, - name: "fax", - title: "APPLICATION_FAX", - ModuleId: 6, - path: '/channels/fax/accounts/list' -}, { - id: 11, - name: "sms", - title: "APPLICATION_SMS", - ModuleId: 6, - path: '/channels/sms/accounts/list' -}, { - id: 12, - name: "realtime", - title: "APPLICATION_REALTIME", - ModuleId: 6, - path: '/channels/realtime/view/agents' -}, { - id: 13, - name: "tools", - title: "APPLICATION_TOOLS", - ModuleId: null, - path: '/tools/triggers/list' -}, { - id: 14, - name: "square", - title: "APPLICATION_CALLYSQUARE", - ModuleId: null, - path: '/square/projects/list' -}, { - id: 15, - name: "jscripty", - title: "APPLICATION_JSCRIPTY", - ModuleId: null, - path: '/jscripty/projects/list' -}, { - id: 16, - name: "motiondialer", - title: "APPLICATION_MOTION_DIALER", - ModuleId: null, - path: '/motiondialer/lists/list' -}, { - id: 17, - name: "analytics", - title: "APPLICATION_ANALYTICS", - ModuleId: null, - path: '/analytics/reports/list' -}, { - id: 18, - name: "setting", - title: "APPLICATION_SETTINGS", - ModuleId: null, - path: '/setting/updates/list' -}, { - id: 19, - name: "integration", - title: "APPLICATION_INTEGRATION", - ModuleId: null, - path: '/market' -}, { - id: 20, - name: "openchannel", - title: "APPLICATION_OPEN_CHANNEL", - ModuleId: 6, - path: '/channels/openchannel/accounts/list' -}]; - -models.Module.findAll().then(function(oldModules) { - var bulkModules = []; - oldModules = _.map(oldModules, 'id'); - newModules.forEach(function(module) { - if (_.includes(oldModules, module.id)) { - bulkModules.push(models.Module.update(module, { - where: { - id: module.id - } - })); - } else { - bulkModules.push(models.Module.create(module)); - } - }); - return bulkModules; -}).all().then(function() { - console.log('Finished populating modules'); -}).catch(function(err) { - console.log('Error populating modules:', err); -}); - -models.Team.create({ - name: "T1", - description: "Default Team", - defaultEntry: true -}).then(function(team) { - models.User.findAll({ - where: { - role: 'agent' - } - }).then(function(users) { - team.addUsers(_.map(users, 'id')).then(function() { - models.ChatQueue.create({ - name: "CQ1", - description: "CQ1 Desc", - timeout: 5, - strategy: "rrmemory" - }).then(function(chatQueue) { - console.log('Finished populating chat queue 1'); - models.Team.findOne({ - where: { - name: 'T1' - }, - include: [{ - all: true - }] - }).then(function(team) { - chatQueue.addUsers(_.map(team.Users, 'id')).catch(function(err) { - // console.error(err); - }); - }).catch(function(err) { - // console.error(err); - }); - }); - models.MailQueue.create({ - name: "MQ1", - description: "MQ1 Desc", - timeout: 5, - strategy: "rrmemory" - }).then(function(mailQueue) { - console.log('Finished populating mail queue 1'); - models.Team.findOne({ - where: { - name: 'T1' - }, - include: [{ - all: true - }] - }).then(function(team) { - if (team) { - console.log('team found'); - } else { - console.log('test'); - } - mailQueue.addUsers(_.map(team.Users, 'id')).catch(function(err) { - // console.error(err); - }); - }).catch(function(err) { - // console.error(err); - }); - }); - models.FaxQueue.create({ - name: "FQ1", - description: "FQ1 Desc", - timeout: 5, - strategy: "rrmemory" - }).then(function(faxQueue) { - console.log('Finished populating fax queue 1'); - models.Team.findOne({ - where: { - name: 'T1' - }, - include: [{ - all: true - }] - }).then(function(team) { - faxQueue.addUsers(_.map(team.Users, 'id')).catch(function(err) { - // console.error(err); - }); - }).catch(function(err) { - // console.error(err); - }); - }); - }).catch(function(err) { - // console.error(err); - }); - }).catch(function(err) { - // console.error(err); - }); -}).catch(function(err) { - // console.error(err); -}); - -models.MailAccount.create({ - name: "xCally Development", - description: "xCally Development", - address: "development@xcally.com" -}).then(function(mailAccount) { - console.log('Finished populating mail account'); - models.MailServerIn.create({ - description: 'xcally', - host: 'imap.xcally.com', - username: 'development@xcally.com', - password: 'phokucloka', - port: 143, - mailbox: 'INBOX', - ssl: false, - delete: false, - filter: 'UNSEEN', - protocol: 'IMAP', - MailAccountId: mailAccount.id - }).then(function() { - console.log('Finished populating mail server in'); - models.MailServerOut.create({ - description: 'xcally', - host: 'smtp.xcally.com', - username: 'development@xcally.com', - password: 'phokucloka', - port: 587, - ssl: false, - MailAccountId: mailAccount.id - }).then(function() { - console.log('Finished populating mail server out'); - }).catch(function(err) { - // console.error(err); - }); - }).catch(function(err) { - // console.error(err); - }); -}); -// models.FaxAccount -// .create({ -// description: 'FA1 Desc', -// name: 'FA1', -// phone: '01119827770', -// ecm: true, -// faxheader: 'xCALLY', -// localid: '01119827770', -// maxrate: '9600', -// minrate: '14400', -// }) -// .then(function(faxAccount) { -// console.log('Finished populating fax account'); -// -// models.Trunk -// .findOne({ -// where: { -// name: 'citalia' -// } -// }) -// .then(function(trunk) { -// faxAccount -// .setTrunk(trunk) -// .catch(function(err) { -// // console.error(err); -// }); -// -// -// models.VoiceExtension -// .create({ -// context: 'from-voip-provider', -// exten: '01119827770', -// priority: 1, -// app: 'Goto', -// appdata: 'inbound-fax,s,1', -// type: 'inbound-fax' -// }) -// -// }) -// .catch(function(err) { -// // console.error(err); -// }); -// -// models.FaxQueue -// .findAll() -// .then(function(faxQueues) { -// models.FaxApplication -// .create({ -// app: 'queue', -// appdata: faxQueues[0].id, -// priority: 1, -// timeout: 30, -// FaxAccountId: faxAccount.id, -// FaxQueueId: faxQueues[0].id -// }) -// .then(function() { -// console.log('Finished populating chat website application 1'); -// }) -// .catch(function(err) { -// // console.error(err); -// }); -// -// models.FaxApplication -// .create({ -// app: 'queue', -// appdata: faxQueues[1].id, -// priority: 2, -// timeout: 30, -// FaxAccountId: faxAccount.id, -// FaxQueueId: faxQueues[1].id -// }) -// .then(function() { -// console.log('Finished populating chat website application 2'); -// }) -// .catch(function(err) { -// // console.error(err); -// }); -// }) -// .catch(function(err) { -// // console.error(err); -// }); -// }) -// .catch(function(err) { -// // console.error(err); -// }); -// models.FaxAccount -// .create({ -// description: 'FA1 Desc', -// name: 'FA1', -// phone: '01119827770', -// ecm: true, -// faxheader: 'xCALLY', -// localid: '01119827770', -// maxrate: '9600', -// minrate: '14400', -// }) -// .then(function (faxAccount) { -// console.log('Finished populating fax account'); -// -// models.Trunk -// .findOne({ -// where: { -// name: 'citalia' -// } -// }) -// .then(function (trunk) { -// faxAccount -// .setTrunk(trunk) -// .catch(function (err) { -// // console.error(err); -// }); -// -// -// models.VoiceExtension -// .create({ -// context: 'from-voip-provider', -// exten: '01119827770', -// priority: 1, -// app: 'Goto', -// appdata: 'inbound-fax,s,1', -// type: 'inbound-fax', -// TrunkId: trunk.name -// }) -// -// }) -// .catch(function (err) { -// // console.error(err); -// }); -// -// models.FaxQueue -// .findAll() -// .then(function (faxQueues) { -// models.FaxApplication -// .create({ -// app: 'queue', -// appdata: faxQueues[0].id, -// priority: 1, -// timeout: 30, -// FaxAccountId: faxAccount.id, -// FaxQueueId: faxQueues[0].id -// }) -// .then(function () { -// console.log('Finished populating chat website application 1'); -// }) -// .catch(function (err) { -// // console.error(err); -// }); -// -// models.FaxApplication -// .create({ -// app: 'queue', -// appdata: faxQueues[1].id, -// priority: 2, -// timeout: 30, -// FaxAccountId: faxAccount.id, -// FaxQueueId: faxQueues[1].id -// }) -// .then(function () { -// console.log('Finished populating chat website application 2'); -// }) -// .catch(function (err) { -// // console.error(err); -// }); -// }) -// .catch(function (err) { -// // console.error(err); -// }); -// }) -// .catch(function (err) { -// // console.error(err); -// }); -// models.VoiceExtension -// .bulkCreate([{ -// context: 'outbound-fax', -// exten: 's', -// priority: 1, -// app: 'NoOp', -// appdata: 'Fax UUID: ${FAXUUID}', -// type: 'outbound-fax' -// }, { -// context: 'outbound-fax', -// exten: 's', -// priority: 2, -// app: 'UserEvent', -// appdata: 'Fax,uuid: ${FAXUUID}', -// type: 'outbound-fax' -// }, { -// context: 'outbound-fax', -// exten: 's', -// priority: 3, -// app: 'Set', -// appdata: 'FAXOPT(filename):${FAXFILE}', -// type: 'outbound-fax' -// }, { -// context: 'outbound-fax', -// exten: 's', -// priority: 4, -// app: 'Set', -// appdata: 'FAXOPT(ecm):${ECM}', -// type: 'outbound-fax' -// }, { -// context: 'outbound-fax', -// exten: 's', -// priority: 5, -// app: 'Set', -// appdata: 'FAXOPT(headerinfo):${FAXHEADER}', -// type: 'outbound-fax' -// }, { -// context: 'outbound-fax', -// exten: 's', -// priority: 6, -// app: 'Set', -// appdata: 'FAXOPT(localstationid):${LOCALID}', -// type: 'outbound-fax' -// }, { -// context: 'outbound-fax', -// exten: 's', -// priority: 7, -// app: 'Set', -// appdata: 'FAXOPT(maxrate):${MAXRATE}', -// type: 'outbound-fax' -// }, { -// context: 'outbound-fax', -// exten: 's', -// priority: 8, -// app: 'Set', -// appdata: 'FAXOPT(minrate):${MINRATE}', -// type: 'outbound-fax' -// }, { -// context: 'outbound-fax', -// exten: 's', -// priority: 9, -// app: 'SendFAX', -// appdata: '${FAXFILE},d', -// type: 'outbound-fax' -// }, { -// context: 'outbound-fax', -// exten: 's', -// priority: 10, -// app: 'NoOp', -// appdata: 'ERROR "${TIMESTAMP}" "NO_STATUS" "NO_PAGES"', -// type: 'outbound-fax' -// }, { -// context: 'outbound-fax', -// exten: 'h', -// priority: 1, -// app: 'NoOp', -// appdata: 'FAXOPT(ecm) : ${FAXOPT(ecm)}', -// type: 'outbound-fax' -// }, { -// context: 'outbound-fax', -// exten: 'h', -// priority: 2, -// app: 'NoOp', -// appdata: 'FaxStatus : ${FAXSTATUS}', -// type: 'outbound-fax' -// }, { -// context: 'outbound-fax', -// exten: 'h', -// priority: 3, -// app: 'NoOp', -// appdata: 'FaxStatusString : ${FAXSTATUSSTRING}', -// type: 'outbound-fax' -// }, { -// context: 'outbound-fax', -// exten: 'h', -// priority: 4, -// app: 'NoOp', -// appdata: 'FaxError : ${FAXERROR}', -// type: 'outbound-fax' -// }, { -// context: 'outbound-fax', -// exten: 'h', -// priority: 5, -// app: 'NoOp', -// appdata: 'RemoteStationID : ${REMOTESTATIONID}', -// type: 'outbound-fax' -// }, { -// context: 'outbound-fax', -// exten: 'h', -// priority: 6, -// app: 'NoOp', -// appdata: 'FaxPages : ${FAXPAGES}', -// type: 'outbound-fax' -// }, { -// context: 'outbound-fax', -// exten: 'h', -// priority: 7, -// app: 'NoOp', -// appdata: 'FaxBitRate : ${FAXBITRATE}', -// type: 'outbound-fax' -// }, { -// context: 'outbound-fax', -// exten: 'h', -// priority: 8, -// app: 'NoOp', -// appdata: 'FaxResolution : ${FAXRESOLUTION}', -// type: 'outbound-fax' -// }, { -// context: 'outbound-fax', -// exten: 'h', -// priority: 9, -// app: 'NoOp', -// appdata: 'OK "${TIMESTAMP}" "${FAXSTATUSSTRING}" "${FAXPAGES}"', -// type: 'outbound-fax' -// }], { -// ignoreDuplicates: true -// }) -// .then(function() { -// console.log('Finished populating fax outbound voice extension'); -// }); -// -// models.VoiceExtension -// .bulkCreate([{ -// context: 'inbound-fax', -// exten: 's', -// priority: 1, -// app: 'NoOp', -// appdata: '**** FAX RECEIVED from ${CALLERID(num)} ${STRFTIME(${EPOCH},,%c)} ****', -// type: 'inbound-fax' -// }, { -// context: 'inbound-fax', -// exten: 's', -// priority: 2, -// app: 'Set', -// appdata: 'FAXOPT(ecm):yes', -// type: 'inbound-fax' -// }, { -// context: 'inbound-fax', -// exten: 's', -// priority: 3, -// app: 'Set', -// appdata: 'FILENAME:${UNIQUEID}', -// type: 'inbound-fax' -// }, { -// context: 'inbound-fax', -// exten: 's', -// priority: 4, -// app: 'Set', -// appdata: 'FAXFILE:${FILENAME}.tif', -// type: 'inbound-fax' -// }, { -// context: 'inbound-fax', -// exten: 's', -// priority: 5, -// app: 'Set', -// appdata: 'FAXOPT(headerinfo):Received by XeniaLAB ${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M)}', -// type: 'inbound-fax' -// }, { -// context: 'inbound-fax', -// exten: 's', -// priority: 6, -// app: 'Set', -// appdata: 'FAXOPT(localstationid):${LOCALID}', -// type: 'inbound-fax' -// }, { -// context: 'inbound-fax', -// exten: 's', -// priority: 7, -// app: 'Set', -// appdata: 'FAXOPT(maxrate):${MAXRATE}', -// type: 'inbound-fax' -// }, { -// context: 'inbound-fax', -// exten: 's', -// priority: 8, -// app: 'Set', -// appdata: 'FAXOPT(minrate):${MINRATE}', -// type: 'inbound-fax' -// }, { -// context: 'inbound-fax', -// exten: 's', -// priority: 9, -// app: 'NoOp', -// appdata: 'FAXOPT(ecm) : ${FAXOPT(ecm)}', -// type: 'inbound-fax' -// }, { -// context: 'inbound-fax', -// exten: 's', -// priority: 10, -// app: 'NoOp', -// appdata: 'FAXOPT(headerinfo) : ${FAXOPT(headerinfo)}', -// type: 'inbound-fax' -// }, { -// context: 'inbound-fax', -// exten: 's', -// priority: 11, -// app: 'NoOp', -// appdata: 'FAXOPT(localstationid) : ${FAXOPT(localstationid)}', -// type: 'inbound-fax' -// }, { -// context: 'inbound-fax', -// exten: 's', -// priority: 12, -// app: 'NoOp', -// appdata: 'FAXOPT(maxrate) : ${FAXOPT(maxrate)}', -// type: 'inbound-fax' -// }, { -// context: 'inbound-fax', -// exten: 's', -// priority: 13, -// app: 'NoOp', -// appdata: 'FAXOPT(minrate) : ${FAXOPT(minrate)}', -// type: 'inbound-fax' -// }, { -// context: 'inbound-fax', -// exten: 's', -// priority: 14, -// app: 'NoOp', -// appdata: '**** RECEIVING FAX : ${FAXFILE} ****', -// type: 'inbound-fax' -// }, { -// context: 'inbound-fax', -// exten: 's', -// priority: 15, -// app: 'ReceiveFax', -// appdata: '/tmp/${FAXFILE}', -// type: 'inbound-fax' -// }, { -// context: 'inbound-fax', -// exten: 's', -// priority: 16, -// app: 'Hangup', -// type: 'inbound-fax' -// }, { -// context: 'inbound-fax', -// exten: 'h', -// priority: 1, -// app: 'NoOp', -// appdata: 'FAXOPT(ecm) : ${FAXOPT(ecm)}', -// type: 'inbound-fax' -// }], { -// ignoreDuplicates: true -// }) -// .then(function() { -// console.log('Finished populating fax outbound voice extension'); -// }); - -models.SquareProject.bulkCreate([{ - name: "project1", - description: "description project" -}], { - ignoreDuplicates: true -}).then(function() { - console.log('Finished populating square projects'); -}); - -models.ChatWebsite.create({ - name: 'xCally Shop', - description: 'xCally Shop', - address: 'http://www.xcally.com/shop/', - color: '#f51111', - color_focus: '#f51111', - color_button: '#f51111', - remote: 'http://localhost:9000', - animation: true, - header_shape: 'squared', - header_online: 'We are here!', - online_message: 'Questions? Insert your name and email address to start a live-chat with our support team.', - username_placeholder: 'Your name', - email_placeholder: 'Your email address', - start_chat_button: 'Chat', - header_offline: 'Contact us', - offline_message: "We're not online.
It doesn't mean we're not there to help - leave your message below and we'll be in touch as soon as possible.'", - enquiry_message_placeholder: 'Your message...', - enquiry_button: 'Leave message', - download_transcript: true -}).then(function(chatWebsite) { - console.log('Finished populating chat website'); - models.ChatQueue.findAll().then(function(chatQueues) { - models.ChatApplication.create({ - app: 'queue', - appdata: chatQueues[0].id, - priority: 1, - timeout: 30, - ChatWebsiteId: chatWebsite.id, - ChatQueueId: chatQueues[0].id - }).then(function() { - console.log('Finished populating chat website application 1'); - }).catch(function(err) { - // console.error(err); - }); - models.ChatApplication.create({ - app: 'queue', - appdata: chatQueues[1].id, - priority: 2, - timeout: 30, - ChatWebsiteId: chatWebsite.id, - ChatQueueId: chatQueues[1].id - }).then(function() { - console.log('Finished populating chat website application 2'); - }).catch(function(err) { - // console.error(err); - }); - }).catch(function(err) { - // console.error(err); - }); -}).catch(function(err) { - // console.error(err); -}); - -models.Variable.bulkCreate([{ - name: "variable1", - description: "description project" -}], { - ignoreDuplicates: true -}).then(function() { - console.log('Finished populating variables'); -}); - -models.VoiceContext.bulkCreate([{ - name: "from-sip", - description: "Default context (DO NOT DELETE)", - defaultEntry: true -}, { - name: "from-voip-provider", - description: "Default context (DO NOT DELETE)", - defaultEntry: true -}, { - name: "inbound-fax", - description: "Default context (DO NOT DELETE)", - defaultEntry: true -}, { - name: "outbound-fax", - description: "Default context (DO NOT DELETE)", - defaultEntry: true -}, { - name: "from-voicemail", - description: "Default context (DO NOT DELETE)", - defaultEntry: true -}], { - ignoreDuplicates: true, - individualHooks: true -}).then(function() { - console.log('Finished populating context variables'); -}); - -models.VoiceMusicOnHold.bulkCreate([{ - name: "default", - mode: "files", - directory: 'var/lib/asterisk/moh', - sort: 'alpha', - format: 'wav', - defaultEntry: true -}], { - ignoreDuplicates: true, - individualHooks: true -}).then(function() { - console.log('Finished populating moh variables'); -}); - -models.Setting.bulkCreate([{ - id: 1, - min_internal: 1000, - soundPath: '/var/opt/motion/server/files/sounds/converted' -}], { - ignoreDuplicates: true, - individualHooks: true -}).then(function() { - console.log('Finished populating moh variables'); -}); - -models.Dashboard.bulkCreate([{ - id: 1, - name: 'Motion Dashboard', - model: JSON.stringify({ - title: 'Motion Dashboard', - rows: [{ - columns: [{ - styleClass: 'col-md-4', - widgets: [{ - type: 'clock', - title: 'Clock', - config: { - timePattern: 'hh:mm:ss a', - datePattern: 'dddd, MMMM Do YYYY' - } - }] - }, { - styleClass: 'col-md-8', - widgets: [{ - type: 'iframe', - title: 'Iframe', - config: { - url: 'https://demo.xcally.com/shop/' - } - }] - }] - }] - }), - defaultEntry: true, - editable: false -}], { - ignoreDuplicates: true, - individualHooks: true -}).then(function() { - console.log('Finished populating moh variables'); -}); - -var newIntegrations = [{ - name: 'Zendesk', - version: '1.0.0', - author: 'XeniaLAB s.r.l.', - logo: 'assets/images/media/zendesk2.png', - state: 'zendesk', - description: 'Start using xCALLY - Zendesk integration: Auto-Generated Tickets, fully customizable comments, Custom Fields management, Tag support and Simple Setup', - link: 'https://wiki.xcallymotion.com/display/XMD/Zendesk+integration' -}, { - name: 'Salesforce', - version: '1.0.0', - author: 'XeniaLAB s.r.l.', - logo: 'assets/images/media/salesforce2.png', - state: 'salesforce', - description: 'Start using xCALLY - Salesforce integration: Auto-Generated Tasks, fully customizable comments, Custom Fields management and OpenCTI support', - link: 'https://wiki.xcallymotion.com/display/XMD/Salesforce+integration' -}, { - name: 'iFrame', - version: '1.0.0', - author: 'XeniaLAB s.r.l.', - logo: 'assets/images/media/iframe.png', - state: 'iframe', - description: 'Start using iFrame integration: enable your agents to view external pages (like your CRM) directly from Motion GUI', - link: 'https://wiki.xcallymotion.com/display/XMD/iFrame+Integration' -}, { - name: 'Desk.com', - version: '1.0.0', - author: 'XeniaLAB s.r.l.', - logo: 'assets/images/media/desk2.png', - state: 'desk', - description: 'Description for Desk.com asdnvlsdbjv saeklbvqwoVBQ' -}, { - name: 'Freshdesk', - version: '1.0.0', - author: 'XeniaLAB s.r.l.', - logo: 'assets/images/media/freshdesk.png', - state: 'freshdesk', - description: 'Description for Freshdesk' -}, { - name: 'SugarCRM', - version: '1.0.0', - author: 'XeniaLAB s.r.l.', - logo: 'assets/images/media/sugarcrm2.png', - state: 'sugarcrm', - description: 'Description for SugarCRM' -}]; - -models.Integration - .findAll() - .then(function(oldIntegrations) { - var bulkIntegrations = []; - oldIntegrations = _.map(oldIntegrations, 'state'); - newIntegrations.forEach(function(integration) { - if (_.includes(oldIntegrations, integration.state)) { - bulkIntegrations.push(models.Integration.update(integration, { - where: { - state: integration.state - } - })); - } else { - bulkIntegrations.push(models.Integration.create(integration)); - } - }); - return bulkIntegrations; - }) - .all() - .then(function() { - console.log('Finished populating integrations'); - }) - .catch(function(err) { - console.log('Error populating integrations:', err); - }); - -var newDefaulReports = [{ - "id": 1, - "name": "Queue - Details", - "description": null, - "parent": "j4_3", - "table": "report_queue_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[]}}" -}, { - "id": 2, - "name": "Details", - "description": "Calls details (cdr)", - "parent": "j20_1", - "table": "report_call_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[]}}" -}, { - "id": 3, - "name": "Outbound", - "description": "Manual outbound calls detail", - "parent": "j20_1", - "table": "report_call_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[{\"condition\":\"=\",\"field\":\"type\",\"value\":\"outbound\"}]}}" -}, { - "id": 4, - "name": "Calls by Queue", - "description": null, - "parent": "j4_7", - "table": "report_queue_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[]}}" -}, { - "id": 5, - "name": "Details", - "description": null, - "parent": "j4_5", - "table": "report_agent_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[{\"condition\":\"=\",\"field\":\"agentcomplete\",\"value\":\"1\"}]}}" -}, { - "id": 6, - "name": "Calls by Agent", - "description": null, - "parent": "j4_5", - "table": "report_agent_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[]}}" -}, { - "id": 7, - "name": "Calls by Queue", - "description": null, - "parent": "j4_5", - "table": "report_agent_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[{\"condition\":\"=\",\"field\":\"agentcomplete\",\"value\":\"1\"}]}}" -}, { - "id": 8, - "name": "Answer Time by Queue", - "description": null, - "parent": "j4_5", - "table": "report_agent_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[{\"condition\":\"=\",\"field\":\"agentcomplete\",\"value\":\"1\"}]}}" -}, { - "id": 9, - "name": "Disconnection Cause", - "description": null, - "parent": "j4_5", - "table": "report_agent_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[{\"condition\":\"=\",\"field\":\"agentcomplete\",\"value\":\"1\"}]}}" -}, { - "id": 10, - "name": "Details", - "description": null, - "parent": "j4_6", - "table": "report_queue_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[{\"condition\":\"=\",\"field\":\"queuecallercomplete\",\"value\":\"0\"}]}}" -}, { - "id": 11, - "name": "Unanswered by Queue", - "description": null, - "parent": "j4_6", - "table": "report_queue_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[{\"condition\":\"=\",\"field\":\"queuecallercomplete\",\"value\":\"0\"}]}}" -}, { - "id": 12, - "name": "Exit Cause", - "description": null, - "parent": "j4_6", - "table": "report_queue_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[{\"condition\":\"=\",\"field\":\"queuecallerexit\",\"value\":\"1\"}]}}" -}, { - "id": 13, - "name": "Abandon Time by Queue", - "description": null, - "parent": "j4_6", - "table": "report_queue_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[{\"condition\":\"=\",\"field\":\"queuecallerabandon\",\"value\":\"1\"}]}}" -}, { - "id": 14, - "name": "Calls by Date", - "description": null, - "parent": "j4_7", - "table": "report_queue_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[]}}" -}, { - "id": 15, - "name": "Calls by Hour", - "description": null, - "parent": "j4_7", - "table": "report_queue_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[]}}" -}, { - "id": 16, - "name": "Calls by Day", - "description": null, - "parent": "j4_7", - "table": "report_queue_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[]}}" -}, { - "id": 17, - "name": "Calls by Type", - "description": null, - "parent": "j20_1", - "table": "report_call_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[]}}" -}, { - "id": 18, - "name": "Outbound Calls Disposition", - "description": "Outbound calls grouped by disposition", - "parent": "j20_1", - "table": "report_call_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[{\"condition\":\"=\",\"field\":\"type\",\"value\":\"outbound\"}]}}" -}, { - "id": 19, - "name": "Pause Time", - "description": null, - "parent": "j4_4", - "table": "report_member_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[{\"condition\":\"=\",\"field\":\"type\",\"value\":\"PAUSE\"},{\"condition\":\"=\",\"field\":\"channel\",\"value\":\"voice\"}]}}" -}, { - "id": 20, - "name": "Login Time", - "description": null, - "parent": "j4_4", - "table": "report_member_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[{\"condition\":\"=\",\"field\":\"type\",\"value\":\"LOGIN\"},{\"condition\":\"=\",\"field\":\"channel\",\"value\":\"voice\"}]}}" -}, { - "id": 21, - "name": "Website Summary", - "description": null, - "parent": "j4_1", - "table": "report_chat_session_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[]}}" -}, { - "id": 22, - "name": "Session Detail", - "description": null, - "parent": "j4_1", - "table": "report_chat_session_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[]}}", -}, { - "id": 23, - "name": "Chat by Agent", - "description": null, - "parent": "j4_1", - "table": "report_chat_session_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[{\"condition\":\"=\",\"field\":\"complete\",\"value\":\"1\"}]}}" -}, { - "id": 24, - "name": "Chat by Queue", - "description": null, - "parent": "j4_1", - "table": "report_chat_session_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[{\"condition\":\"=\",\"field\":\"application\",\"value\":\"queue\"}]}}" -}, { - "id": 25, - "name": "Details", - "description": "Agents status details", - "parent": "j4_4", - "table": "report_member_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[{\"condition\":\"=\",\"field\":\"channel\",\"value\":\"voice\"}]}}" -}, { - "id": 26, - "name": "Summary", - "description": "CallySquare Summary", - "parent": "j112_1", - "table": "report_square_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[]}}" -}, { - "id": 27, - "name": "Blocks", - "description": "CallySquare Blocks", - "parent": "j112_1", - "table": "report_square_details_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[]}}" -}, { - "id": 28, - "name": "Login Details", - "description": "Agents status details", - "parent": "j24_1", - "table": "report_member_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[{\"condition\":\"=\",\"field\":\"channel\",\"value\":\"voice\"},{\"condition\":\"=\",\"field\":\"type\",\"value\":\"LOGIN\"}]}}" -}, { - "id": 29, - "name": "Pause Time by Channel", - "description": "", - "parent": "j24_1", - "table": "report_member_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[{\"condition\":\"=\",\"field\":\"type\",\"value\":\"PAUSE\"}]}}" -}, { - "id": 30, - "name": "Pause Details", - "description": "Agents status details", - "parent": "j4_4", - "table": "report_member_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[{\"condition\":\"=\",\"field\":\"channel\",\"value\":\"voice\"},{\"condition\":\"=\",\"field\":\"type\",\"value\":\"PAUSE\"}]}}" -}, { - "id": 31, - "name": "Rating by Agent", - "description": null, - "parent": "j20_3", - "table": "voice_recordings", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[]}}" -}, { - "id": 32, - "name": "Rating by Queue", - "description": null, - "parent": "j20_3", - "table": "voice_recordings", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[{\"condition\":\"IS NOT EMPTY\",\"field\":\"queue\",\"value\":\"\",\"required\":false}]}}" -}, { - "id": 33, - "name": "Queue - Calls", - "description": null, - "parent": "j4_3", - "table": "report_queue_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[]}}" -}, { - "id": 34, - "name": "Answer Time by Hour", - "description": null, - "parent": "j4_5", - "table": "report_agent_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[{\"condition\":\"=\",\"field\":\"agentcomplete\",\"value\":\"1\"}]}}" -}, { - "id": 35, - "name": "Received emails by account", - "description": "Summary of the emails accepted by application for each account", - "parent": "j4_2", - "table": "report_mail_session_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[]}}" -}, { - "id": 36, - "name": "Received emails by queue", - "description": "Summary of received email by queue", - "parent": "j4_2", - "table": "report_mail_session_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[{\"condition\":\"=\",\"field\":\"application\",\"value\":\"queue\",\"required\":true}]}}" -}, { - "id": 37, - "name": "Accepted emails by agent", - "description": "Summary of accepted email by agent", - "parent": "j4_2", - "table": "report_mail_session_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[{\"condition\":\"=\",\"field\":\"timeout\",\"value\":\"0\",\"required\":true}]}}" -}, { - "id": 38, - "name": "Messages Summary by Date", - "description": "Global messages summary by date", - "parent": "j4_2", - "table": "mail_messages", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[{\"condition\":\"=\",\"field\":\"auto\",\"value\":false}]}}" -}, { - "id": 39, - "name": "Interactions detail", - "description": "Detailed report about the interactions", - "parent": "j4_2", - "table": "mail_rooms", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[]}}" -}, { - "id": 40, - "name": "Disposition Summary", - "description": "Closed interactions by disposition (filtered by disposition not null)", - "parent": "j4_2", - "table": "mail_rooms", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[{\"condition\":\"IS NOT NULL\",\"field\":\"disposition\",\"value\":\"\",\"required\":false}]}}" -}, { - "id": 41, - "name": "Closed interactions by date", - "description": "Summary of closed interactions grouped by date + average handle time (from when the first email arrived to when the interaction has been closed)", - "parent": "j4_2", - "table": "mail_rooms", - "conditions": "{\"group\":{\"operator\":\"OR\",\"rules\":[{\"condition\":\"=\",\"field\":\"status\",\"value\":\"'CLOSED'\",\"required\":true}]}}" -}]; - -var newDefaultMetrics = [{ - "id": 1, - "name": "Queue - TalkTime", - "table": "report_queue_history", - "metric": "UNIX_TIMESTAMP(queuecallercompleteAt)-UNIX_TIMESTAMP(queuecallerleaveAt)" -}, { - "id": 2, - "name": "Queue - Abandon Time", - "table": "report_queue_history", - "metric": "UNIX_TIMESTAMP(queuecallerAbandonAt)-UNIX_TIMESTAMP(queuecallerjoinAt)" -}, { - "id": 3, - "name": "Abandoned <10s", - "table": "report_queue_history", - "metric": "COUNT(IF(UNIX_TIMESTAMP(queuecallerAbandonAt)-UNIX_TIMESTAMP(queuecallerjoinAt) <10,1,NULL))", - "description": "Count of abandoned calls within 10 seconds (Short Calls)" -}, { - "id": 4, - "name": "Queue - AnswerTime", - "table": "report_queue_history", - "metric": "IF(queuecallercomplete=1,holdtime,null)" -}, { - "id": 5, - "name": "Answered < 10s", - "table": "report_agent_history", - "metric": "COUNT(IF(holdtime<10,1,NULL))", - "description": "Count of answered calls within 10 seconds" -}, { - "id": 6, - "name": "Answered 10-20s", - "table": "report_agent_history", - "metric": "COUNT(IF(holdtime >=10 AND holdtime <20,1,NULL))", - "description": "Count of answered calls between 10 and 20 seconds" -}, { - "id": 7, - "name": "Answered 20-30s", - "table": "report_agent_history", - "metric": "COUNT(IF(holdtime >=20 AND holdtime <30,1,NULL))", - "description": "Count of answered calls between 20 and 30 seconds" -}, { - "id": 8, - "name": "Answered >30s", - "table": "report_agent_history", - "metric": "COUNT(IF(holdtime >=30,1,NULL))", - "description": "Count of answered calls over 30 seconds" -}, { - "id": 9, - "name": "Queue - Exit Time", - "table": "report_queue_history", - "metric": "UNIX_TIMESTAMP(queuecallerExitAt)-UNIX_TIMESTAMP(queuecallerjoinAt)" -}, { - "id": 10, - "name": "Abandoned 10-60s", - "table": "report_queue_history", - "metric": "COUNT(IF(UNIX_TIMESTAMP(queuecallerAbandonAt)-UNIX_TIMESTAMP(queuecallerjoinAt) >=10 AND UNIX_TIMESTAMP(queuecallerAbandonAt)-UNIX_TIMESTAMP(queuecallerjoinAt) <60,1,NULL))", - "description": "Count of abandoned calls between 10 and 60 seconds" -}, { - "id": 11, - "name": "Abandoned 60-120s", - "table": "report_queue_history", - "metric": "COUNT(IF(UNIX_TIMESTAMP(queuecallerAbandonAt)-UNIX_TIMESTAMP(queuecallerjoinAt) >=60 AND UNIX_TIMESTAMP(queuecallerAbandonAt)-UNIX_TIMESTAMP(queuecallerjoinAt) <120,1,NULL))", - "description": "Count of abandoned calls between 60 and 120 seconds" -}, { - "id": 12, - "name": "Queue - Abandoned >120s", - "table": "report_queue_history", - "metric": "COUNT(IF(UNIX_TIMESTAMP(queuecallerAbandonAt)-UNIX_TIMESTAMP(queuecallerjoinAt) >=120,1,NULL))", - "description": "Count of abandoned calls over 120 seconds" -}, { - "id": 13, - "name": "Queue - JoinDate", - "table": "report_queue_history", - "metric": "DATE(queuecallerjoinat)", - "description": "Extract the date of the join queue" -}, { - "id": 14, - "name": "Queue - JoinHour", - "table": "report_queue_history", - "metric": "HOUR(queuecallerjoinat)", - "description": "Extract the hour of the join queue" -}, { - "id": 15, - "name": "Queue - JoinDay", - "table": "report_queue_history", - "metric": "DAY(queuecallerjoinat)", - "description": "Extract the day of the join queue" -}, { - "id": 16, - "name": "Member - Event Duration", - "table": "report_member_history", - "metric": "UNIX_TIMESTAMP(exitAt)-UNIX_TIMESTAMP(enterAt)", - "description": "Member event duration in seconds" -}, { - "id": 17, - "name": "Member - Total Event Duration", - "table": "report_member_history", - "metric": "SEC_TO_TIME(SUM(UNIX_TIMESTAMP(exitAt)-UNIX_TIMESTAMP(enterAt)))", - "description": "Total event duration" -}, { - "id": 18, - "name": "Chat - Session Time", - "table": "report_chat_session_history", - "metric": "UNIX_TIMESTAMP(completeAt)-UNIX_TIMESTAMP(leaveAt)", - "description": "Session Time", -}, { - "id": 19, - "name": "Chat - Queue", - "table": "report_chat_session_history", - "metric": "COUNT(IF(application=\"queue\",1,NULL))", - "description": "Chat queue application count", -}, { - "id": 20, - "name": "Chat - Agent", - "table": "report_chat_session_history", - "metric": "COUNT(IF(application=\"agent\",1,NULL))", - "description": "Chat agent application count", -}, { - "id": 21, - "name": "Chat - Avg Session Time", - "table": "report_chat_session_history", - "metric": "ROUND(AVG(UNIX_TIMESTAMP(completeAt)-UNIX_TIMESTAMP(leaveAt)))", - "description": "Average session time" -}, { - "id": 22, - "name": "Member - Event Duration (HH:mm:ss)", - "table": "report_member_history", - "metric": "SEC_TO_TIME(UNIX_TIMESTAMP(exitAt)-UNIX_TIMESTAMP(enterAt))", - "description": "Member events duration in time format" -}, { - "id": 23, - "name": "Square - Duration", - "table": "report_square_history", - "metric": "UNIX_TIMESTAMP(leaveAt)-UNIX_TIMESTAMP(joinAt)", - "description": "IVR Duration" -}, { - "id": 24, - "name": "Queue - EndTime Call", - "table": "report_queue_history", - "metric": "CASE WHEN queuecallercomplete=1 THEN queuecallercompleteAt ELSE queuecallerLeaveAt END", - "description": null -}, { - "id": 25, - "name": "Queue - Calls Result", - "table": "report_queue_history", - "metric": "CASE WHEN queuecallercomplete=1 THEN \"YES\" ELSE \"NO\" END", - "description": "Show if a call is answered or not" -}]; - -models.ReportTree.destroy({ - where: { - id: 1 - } - }) - .then(function() { - return models.ReportTree.create({ - id: 1, - tree: '[{"id":"1","parent":"#","text":"Motion Reports","icon":"icon-rocket","state":{"selected":true,"opened":true}},{"id":"2","text":"Voice","icon":true,"li_attr":{"id":"2"},"a_attr":{"href":"#","id":"2_anchor"},"state":{"loaded":true,"opened":true,"selected":false,"disabled":false},"data":{},"parent":"1"},{"id":"j4_3","text":"Queues","icon":true,"li_attr":{"id":"j4_3"},"a_attr":{"href":"#","id":"j4_3_anchor"},"state":{"loaded":true,"opened":true,"selected":false,"disabled":false},"data":{},"parent":"2"},{"id":"j4_5","text":"Answered","icon":true,"li_attr":{"id":"j4_5"},"a_attr":{"href":"#","id":"j4_5_anchor"},"state":{"loaded":true,"opened":false,"selected":false,"disabled":false},"data":{},"parent":"j4_3"},{"id":"j4_6","text":"Unanswered","icon":true,"li_attr":{"id":"j4_6"},"a_attr":{"href":"#","id":"j4_6_anchor"},"state":{"loaded":true,"opened":false,"selected":false,"disabled":false},"data":{},"parent":"j4_3"},{"id":"j4_7","text":"Distribution","icon":true,"li_attr":{"id":"j4_7"},"a_attr":{"href":"#","id":"j4_7_anchor"},"state":{"loaded":true,"opened":false,"selected":false,"disabled":false},"data":{},"parent":"j4_3"},{"id":"j20_1","text":"Calls","icon":true,"li_attr":{"id":"j20_1"},"a_attr":{"href":"#","id":"j20_1_anchor"},"state":{"loaded":true,"opened":false,"selected":false,"disabled":false},"data":{},"parent":"2"},{"id":"j4_4","text":"Agents","icon":true,"li_attr":{"id":"j4_4"},"a_attr":{"href":"#","id":"j4_4_anchor"},"state":{"loaded":true,"opened":false,"selected":false,"disabled":false},"data":{},"parent":"2"},{"id":"j112_1","text":"CallySquare","icon":true,"li_attr":{"id":"j112_1"},"a_attr":{"href":"#","id":"j112_1_anchor"},"state":{"loaded":true,"opened":false,"selected":false,"disabled":false},"data":{},"parent":"2"},{"id":"j20_2","text":"Integration","icon":true,"li_attr":{"id":"j20_2"},"a_attr":{"href":"#","id":"j20_2_anchor"},"state":{"loaded":true,"opened":false,"selected":true,"disabled":false},"data":{},"parent":"2"},{"id":"j20_3","text":"Recordings","icon":true,"li_attr":{"id":"j20_3"},"a_attr":{"href":"#","id":"j20_3_anchor"},"state":{"loaded":true,"opened":false,"selected":true,"disabled":false},"data":{},"parent":"2"},{"id":"j4_1","text":"Chat","icon":true,"li_attr":{"id":"j4_1"},"a_attr":{"href":"#","id":"j4_1_anchor"},"state":{"loaded":true,"opened":false,"selected":false,"disabled":false},"data":{},"parent":"1"},{"id":"j4_2","text":"Mail","icon":true,"li_attr":{"id":"j4_2"},"a_attr":{"href":"#","id":"j4_2_anchor"},"state":{"loaded":true,"opened":false,"selected":false,"disabled":false},"data":{},"parent":"1"},{"id":"j24_1","text":"Agents","icon":true,"li_attr":{"id":"j24_1"},"a_attr":{"href":"#","id":"j24_1_anchor"},"state":{"loaded":true,"opened":false,"selected":false,"disabled":false},"data":{},"parent":"1"}]', - }) - }) - .then(function() { - return models.ReportTree.findOrCreate({ - where: { - id: 2 - }, - defaults: { - id: 2, - tree: '[{"id":"1","text":"Custom Reports","icon":"icon-book-open","li_attr":{"id":"1"},"a_attr":{"href":"#","id":"1_anchor"},"state":{"loaded":true,"opened":true,"selected":false,"disabled":false},"data":{},"parent":"#"},{"id":"2","text":"Basic Node","icon":true,"li_attr":{"id":"2"},"a_attr":{"href":"#","id":"2_anchor"},"state":{"loaded":true,"opened":true,"selected":false,"disabled":false},"data":{},"parent":"1"}]' - } - }) - }) - .then(function() { - return models.DefaultMetric.findAll(); - }) - .then(function(oldDefaultMetrics) { - var bulkDefaultMetrics = []; - oldDefaultMetrics = _.map(oldDefaultMetrics, 'id'); - newDefaultMetrics.forEach(function(defaultMet) { - if (_.includes(oldDefaultMetrics, defaultMet.id)) { - bulkDefaultMetrics.push(models.DefaultMetric.update(defaultMet, { - where: { - id: defaultMet.id - } - })); - } else { - bulkDefaultMetrics.push(models.DefaultMetric.create(defaultMet)); - } - }); - return bulkDefaultMetrics; - }) - .all() - .then(function() { - return models.DefaultReport.findAll() - }) - .then(function(oldDefaultReports) { - var bulkDefaultReports = []; - oldDefaultReports = _.map(oldDefaultReports, 'id'); - newDefaulReports.forEach(function(defaultRep) { - if (_.includes(oldDefaultReports, defaultRep.id)) { - bulkDefaultReports.push(models.DefaultReport.update(defaultRep, { - where: { - id: defaultRep.id - } - })); - } else { - bulkDefaultReports.push(models.DefaultReport.create(defaultRep)); - } - }); - return bulkDefaultReports; - }) - .all() - .then(function() { - return models.ReportField.destroy({ - where: { - DefaultReportId: { - $gt: 0 - } - } - }) - }) - .then(function() { - return models.ReportField.bulkCreate([{ - "field": "uniqueid", - "alias": "UniqueId", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 1 - }, { - "field": "calleridnum", - "alias": "CallerIdNum", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 1 - }, { - "field": "calleridname", - "alias": "CallerIdName", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 1 - }, { - "field": "queue", - "alias": "Queue", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 1 - }, { - "field": "queuecallerjoinAt", - "alias": "QueueJoinAt", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 1 - }, { - "field": "queuecallerleaveAt", - "alias": "QueueLeaveAt", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 1 - }, { - "field": "queuecallerabandon", - "alias": "QueueAbandon", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 1 - }, { - "field": "queuecallerabandonAt", - "alias": "QueueAbandonAt", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 1 - }, { - "field": "queuecallercomplete", - "alias": "Complete", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 1 - }, { - "field": "queuecallercompleteAt", - "alias": "CompleteAt", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 1 - }, { - "field": "queuecallerexit", - "alias": "QueueExit", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 1 - }, { - "field": "queuecallerexitAt", - "alias": "QueueExitAt", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 1 - }, { - "field": "queuecallerexitreason", - "alias": "QueueExitReason", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 1 - }, { - "field": "exten", - "alias": "DID", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 1 - }, { - "field": "UNIX_TIMESTAMP(queuecallercompleteAt)-UNIX_TIMESTAMP(queuecallerleaveAt)", - "alias": "TalkTime", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultMetricId": 1, - "DefaultReportId": 1 - }, { - "field": "IF(queuecallercomplete=1,holdtime,null)", - "alias": "AnswerTime", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultMetricId": 4, - "DefaultReportId": 1 - }, { - "field": "UNIX_TIMESTAMP(queuecallerAbandonAt)-UNIX_TIMESTAMP(queuecallerjoinAt)", - "alias": "AbandonTime", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultMetricId": 2, - "DefaultReportId": 1 - }, { - "field": "uniqueid", - "alias": "UniqueID", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 2 - }, { - "field": "type", - "alias": "Type", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 2 - }, { - "field": "tag", - "alias": "Tag", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 2 - }, { - "field": "source", - "alias": "Source", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 2 - }, { - "field": "destination", - "alias": "Destination", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 2 - }, { - "field": "callerid", - "alias": "CallerID", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 2 - }, { - "field": "destinationchannel", - "alias": "DestChannel", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 2 - }, { - "field": "lastapplication", - "alias": "LastApp", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 2 - }, { - "field": "lastdata", - "alias": "LastData", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 2 - }, { - "field": "starttime", - "alias": "StartTime", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 2 - }, { - "field": "answertime", - "alias": "AnswerTime", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 2 - }, { - "field": "endtime", - "alias": "EndTime", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 2 - }, { - "field": "duration", - "alias": "Duration", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 2 - }, { - "field": "disposition", - "alias": "Disposition", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 2 - }, { - "field": "uniqueid", - "alias": "UniqueID", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 3 - }, { - "field": "accountcode", - "alias": "AgentExtension", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 3 - }, { - "field": "source", - "alias": "Source", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 3 - }, { - "field": "destination", - "alias": "Destination", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 3 - }, { - "field": "callerid", - "alias": "CallerId", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 3 - }, { - "field": "starttime", - "alias": "StartTime", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 3 - }, { - "field": "answertime", - "alias": "AnswerTime", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 3 - }, { - "field": "endtime", - "alias": "EndTIme", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 3 - }, { - "field": "duration", - "alias": "Duration", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 3 - }, { - "field": "billableseconds", - "alias": "Billsec", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 3 - }, { - "field": "disposition", - "alias": "Disposition", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 3 - }, { - "field": "tag", - "alias": "Tag", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 3 - }, { - "field": "queue", - "alias": "Queue", - "function": null, - "groupBy": 1, - "orderBy": null, - "DefaultReportId": 4 - }, { - "field": "uniqueid", - "alias": "Offered", - "function": "COUNT", - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 4 - }, { - "field": "queuecallercomplete", - "alias": "Completed", - "function": "SUM", - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 4 - }, { - "field": "queuecallerabandon", - "alias": "Abandoned", - "function": "SUM", - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 4 - }, { - "field": "queuecallerexit", - "alias": "Unmanaged", - "function": "SUM", - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 4 - }, { - "field": "UNIX_TIMESTAMP(queuecallercompleteAt)-UNIX_TIMESTAMP(queuecallerleaveAt)", - "alias": "AvgTalkTime", - "function": "AVG", - "groupBy": 0, - "orderBy": null, - "DefaultMetricId": 1, - "DefaultReportId": 4 - }, { - "field": "UNIX_TIMESTAMP(queuecallerAbandonAt)-UNIX_TIMESTAMP(queuecallerjoinAt)", - "alias": "AvgAbandonTime", - "function": "AVG", - "groupBy": 0, - "orderBy": null, - "DefaultMetricId": 1, - "DefaultReportId": 4 - }, { - "field": "IF(queuecallercomplete=1,holdtime,null)", - "alias": "AvgAnswerTime", - "function": "AVG", - "groupBy": 0, - "orderBy": null, - "DefaultMetricId": 4, - "DefaultReportId": 4 - }, { - "field": "uniqueid", - "alias": "UniqueId", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 5 - }, { - "field": "calleridnum", - "alias": "CallerIdNum", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 5 - }, { - "field": "calleridname", - "alias": "CallerIdName", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 5 - }, { - "field": "queue", - "alias": "Queue", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 5 - }, { - "field": "membername", - "alias": "Agent", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 5 - }, { - "field": "agentcalledAt", - "alias": "AgentCalledAt", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 5 - }, { - "field": "agentconnectAt", - "alias": "AgentConnectAt", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 5 - }, { - "field": "agentcompleteAt", - "alias": "AgentCompleteAt", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 5 - }, { - "field": "holdtime", - "alias": "AnswerTime", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 5 - }, { - "field": "talktime", - "alias": "TalkTime", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 5 - }, { - "field": "agentacw", - "alias": "AgentACW", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 5 - }, { - "field": "acwtime", - "alias": "AgentACWTime", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 5 - }, { - "field": "agentcomplete", - "alias": "AgentComplete", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 5 - }, { - "field": "reason", - "alias": "HangupReason", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 5 - }, { - "field": "lastevent", - "alias": "LastEvent", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 5 - }, { - "field": "exten", - "alias": "DID", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 5 - }, { - "field": "membername", - "alias": "Agent", - "function": null, - "groupBy": 1, - "orderBy": null, - "DefaultReportId": 6 - }, { - "field": "agentcomplete", - "alias": "Completed", - "function": "SUM", - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 6 - }, { - "field": "agentringnoanswer", - "alias": "RingNoAnswer", - "function": "SUM", - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 6 - }, { - "field": "talktime", - "alias": "TotTalkTime", - "function": "SUM", - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 6 - }, { - "field": "acwtime", - "alias": "TotACWTime", - "function": "SUM", - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 6 - }, { - "field": "talktime", - "alias": "AvgTalkTime", - "function": "AVG", - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 6 - }, { - "field": "acwtime", - "alias": "AvgACWTime", - "function": "AVG", - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 6 - }, { - "field": "queue", - "alias": "Queue", - "function": null, - "groupBy": 1, - "orderBy": null, - "DefaultReportId": 7 - }, { - "field": "agentcomplete", - "alias": "Completed", - "function": "SUM", - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 7 - }, { - "field": "talktime", - "alias": "Tot TalkTime", - "function": "SUM", - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 7 - }, { - "field": "talktime", - "alias": "Avg TalkTime", - "function": "AVG", - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 7 - }, { - "field": "holdtime", - "alias": "Tot HoldTime", - "function": "SUM", - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 7 - }, { - "field": "holdtime", - "alias": "Avg HoldTime", - "function": "AVG", - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 7 - }, { - "field": "acwtime", - "alias": "Tot ACWTime", - "function": "SUM", - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 7 - }, { - "field": "acwtime", - "alias": "Avg ACWTime", - "function": "AVG", - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 7 - }, { - "field": "queue", - "alias": "Queue", - "function": null, - "groupBy": 1, - "orderBy": null, - "DefaultReportId": 8 - }, { - "field": "agentcomplete", - "alias": "Tot Answered", - "function": "SUM", - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 8 - }, { - "field": "COUNT(IF(holdtime<10,1,NULL))", - "alias": "Answered <10s", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultMetricId": 5, - "DefaultReportId": 8 - }, { - "field": "COUNT(IF(holdtime >=10 AND holdtime <20,1,NULL))", - "alias": "Answered 10-20s", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultMetricId": 6, - "DefaultReportId": 8 - }, { - "field": "COUNT(IF(holdtime >=20 AND holdtime <30,1,NULL))", - "alias": "Answered 20-30s", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultMetricId": 7, - "DefaultReportId": 8 - }, { - "field": "COUNT(IF(holdtime >=30,1,NULL))", - "alias": "Answered >30s", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultMetricId": 8, - "DefaultReportId": 8 - }, { - "field": "reason", - "alias": "Reason", - "function": null, - "groupBy": 1, - "orderBy": null, - "DefaultReportId": 9 - }, { - "field": "uniqueid", - "alias": "Calls", - "function": "COUNT", - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 9 - }, { - "field": "uniqueid", - "alias": "UniqueId", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 10 - }, { - "field": "calleridnum", - "alias": "CallerIdNum", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 10 - }, { - "field": "queue", - "alias": "Queue", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 10 - }, { - "field": "queuecallerjoinAt", - "alias": "QueueJoinAt", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 10 - }, { - "field": "queuecallerleaveAt", - "alias": "QueueLeaveAt", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 10 - }, { - "field": "queuecallerabandon", - "alias": "QueueAbandon", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 10 - }, { - "field": "queuecallerabandonAt", - "alias": "QueueAbandonAt", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 10 - }, { - "field": "UNIX_TIMESTAMP(queuecallerAbandonAt)-UNIX_TIMESTAMP(queuecallerjoinAt)", - "alias": "Abandon Time", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultMetricId": 2, - "DefaultReportId": 10 - }, { - "field": "queuecallerexit", - "alias": "QueueExit", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 10 - }, { - "field": "queuecallerexitAt", - "alias": "QueueExitAt", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 10 - }, { - "field": "queuecallerexitreason", - "alias": "QueueExitReason", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 10 - }, { - "field": "UNIX_TIMESTAMP(queuecallerExitAt)-UNIX_TIMESTAMP(queuecallerjoinAt)", - "alias": "Exit Time", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultMetricId": 9, - "DefaultReportId": 10 - }, { - "field": "position", - "alias": "QueuePosition", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 10 - }, { - "field": "exten", - "alias": "DID", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 10 - }, { - "field": "queue", - "alias": "Queue", - "function": null, - "groupBy": 1, - "orderBy": null, - "DefaultReportId": 11 - }, { - "field": "queuecallerabandon", - "alias": "Abandoned", - "function": "SUM", - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 11 - }, { - "field": "UNIX_TIMESTAMP(queuecallerAbandonAt)-UNIX_TIMESTAMP(queuecallerjoinAt)", - "alias": "AvgAbandonTime", - "function": "AVG", - "groupBy": 0, - "orderBy": null, - "DefaultMetricId": 2, - "DefaultReportId": 11 - }, { - "field": "UNIX_TIMESTAMP(queuecallerAbandonAt)-UNIX_TIMESTAMP(queuecallerjoinAt)", - "alias": "Tot AbandonTime", - "function": "SUM", - "groupBy": 0, - "orderBy": null, - "DefaultMetricId": 2, - "DefaultReportId": 11 - }, { - "field": "queuecallerexit", - "alias": "Exited", - "function": "SUM", - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 11 - }, { - "field": "UNIX_TIMESTAMP(queuecallerExitAt)-UNIX_TIMESTAMP(queuecallerjoinAt)", - "alias": "Avg ExitedTIme", - "function": "AVG", - "groupBy": 0, - "orderBy": null, - "DefaultMetricId": 9, - "DefaultReportId": 11 - }, { - "field": "UNIX_TIMESTAMP(queuecallerExitAt)-UNIX_TIMESTAMP(queuecallerjoinAt)", - "alias": "Tot ExitedTime", - "function": "SUM", - "groupBy": 0, - "orderBy": null, - "DefaultMetricId": 9, - "DefaultReportId": 11 - }, { - "field": "queuecallerexitreason", - "alias": "Reason", - "function": null, - "groupBy": 1, - "orderBy": null, - "DefaultReportId": 12 - }, { - "field": "queuecallerexit", - "alias": "Calls", - "function": "SUM", - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 12 - }, { - "field": "UNIX_TIMESTAMP(queuecallerExitAt)-UNIX_TIMESTAMP(queuecallerjoinAt)", - "alias": "Tot ExitTime", - "function": "SUM", - "groupBy": 0, - "orderBy": null, - "DefaultMetricId": 9, - "DefaultReportId": 12 - }, { - "field": "queue", - "alias": "Queue", - "function": null, - "groupBy": 1, - "orderBy": null, - "DefaultReportId": 13 - }, { - "field": "queuecallerabandon", - "alias": "Tot Abandoned", - "function": "SUM", - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 13 - }, { - "field": "COUNT(IF(UNIX_TIMESTAMP(queuecallerAbandonAt)-UNIX_TIMESTAMP(queuecallerjoinAt) <10,1,NULL))", - "alias": "Abandoned<10s", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultMetricId": 3, - "DefaultReportId": 13 - }, { - "field": "COUNT(IF(UNIX_TIMESTAMP(queuecallerAbandonAt)-UNIX_TIMESTAMP(queuecallerjoinAt) >=10 AND UNIX_TIMESTAMP(queuecallerAbandonAt)-UNIX_TIMESTAMP(queuecallerjoinAt) <60,1,NULL))", - "alias": "Abandoned 10-60s", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultMetricId": 10, - "DefaultReportId": 13 - }, { - "field": "COUNT(IF(UNIX_TIMESTAMP(queuecallerAbandonAt)-UNIX_TIMESTAMP(queuecallerjoinAt) >=60 AND UNIX_TIMESTAMP(queuecallerAbandonAt)-UNIX_TIMESTAMP(queuecallerjoinAt) <120,1,NULL))", - "alias": "Abandoned 60-120s", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultMetricId": 11, - "DefaultReportId": 13 - }, { - "field": "COUNT(IF(UNIX_TIMESTAMP(queuecallerAbandonAt)-UNIX_TIMESTAMP(queuecallerjoinAt) >=120,1,NULL))", - "alias": "Abandoned>120s", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultMetricId": 12, - "DefaultReportId": 13 - }, { - "field": "DATE(queuecallerjoinat)", - "alias": "Date", - "function": null, - "groupBy": 1, - "orderBy": null, - "DefaultMetricId": 13, - "DefaultReportId": 14 - }, { - "field": "uniqueid", - "alias": "Offered", - "function": "COUNT", - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 14 - }, { - "field": "queuecallercomplete", - "alias": "Completed", - "function": "SUM", - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 14 - }, { - "field": "queuecallerabandon", - "alias": "Abandoned", - "function": "SUM", - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 14 - }, { - "field": "queuecallerexit", - "alias": "Unmanaged", - "function": "SUM", - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 14 - }, { - "field": "UNIX_TIMESTAMP(queuecallercompleteAt)-UNIX_TIMESTAMP(queuecallerleaveAt)", - "alias": "AvgTalkTime", - "function": "AVG", - "groupBy": 0, - "orderBy": null, - "DefaultMetricId": 1, - "DefaultReportId": 14 - }, { - "field": "UNIX_TIMESTAMP(queuecallerAbandonAt)-UNIX_TIMESTAMP(queuecallerjoinAt)", - "alias": "AvgAbandonTime", - "function": "AVG", - "groupBy": 0, - "orderBy": null, - "DefaultMetricId": 2, - "DefaultReportId": 14 - }, { - "field": "IF(queuecallercomplete=1,holdtime,null)", - "alias": "AvgAnswerTime", - "function": "AVG", - "groupBy": 0, - "orderBy": null, - "DefaultMetricId": 4, - "DefaultReportId": 14 - }, { - "field": "HOUR(queuecallerjoinat)", - "alias": "Hour", - "function": null, - "groupBy": 1, - "orderBy": null, - "DefaultMetricId": 14, - "DefaultReportId": 15 - }, { - "field": "uniqueid", - "alias": "Offered", - "function": "COUNT", - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 15 - }, { - "field": "queuecallercomplete", - "alias": "Completed", - "function": "SUM", - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 15 - }, { - "field": "queuecallerabandon", - "alias": "Abandoned", - "function": "SUM", - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 15 - }, { - "field": "queuecallerexit", - "alias": "Unmanaged", - "function": "SUM", - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 15 - }, { - "field": "UNIX_TIMESTAMP(queuecallercompleteAt)-UNIX_TIMESTAMP(queuecallerleaveAt)", - "alias": "AvgTalkTime", - "function": "AVG", - "groupBy": 0, - "orderBy": null, - "DefaultMetricId": 1, - "DefaultReportId": 15 - }, { - "field": "UNIX_TIMESTAMP(queuecallerAbandonAt)-UNIX_TIMESTAMP(queuecallerjoinAt)", - "alias": "AvgAbandonTime", - "function": "AVG", - "groupBy": 0, - "orderBy": null, - "DefaultMetricId": 2, - "DefaultReportId": 15 - }, { - "field": "IF(queuecallercomplete=1,holdtime,null)", - "alias": "AvgAnswerTime", - "function": "AVG", - "groupBy": 0, - "orderBy": null, - "DefaultMetricId": 4, - "DefaultReportId": 15 - }, { - "field": "DAY(queuecallerjoinat)", - "alias": "Day", - "function": null, - "groupBy": 1, - "orderBy": null, - "DefaultMetricId": 15, - "DefaultReportId": 16 - }, { - "field": "uniqueid", - "alias": "Offered", - "function": "COUNT", - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 16 - }, { - "field": "queuecallercomplete", - "alias": "Completed", - "function": "SUM", - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 16 - }, { - "field": "queuecallerabandon", - "alias": "Abandoned", - "function": "SUM", - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 16 - }, { - "field": "queuecallerexit", - "alias": "Unmanaged", - "function": "SUM", - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 16 - }, { - "field": "UNIX_TIMESTAMP(queuecallercompleteAt)-UNIX_TIMESTAMP(queuecallerleaveAt)", - "alias": "AvgTalkTime", - "function": "AVG", - "groupBy": 0, - "orderBy": null, - "DefaultMetricId": 1, - "DefaultReportId": 16 - }, { - "field": "UNIX_TIMESTAMP(queuecallerAbandonAt)-UNIX_TIMESTAMP(queuecallerjoinAt)", - "alias": "AvgAbandonTime", - "function": "AVG", - "groupBy": 0, - "orderBy": null, - "DefaultMetricId": 2, - "DefaultReportId": 16 - }, { - "field": "IF(queuecallercomplete=1,holdtime,null)", - "alias": "AvgAnswerTime", - "function": "AVG", - "groupBy": 0, - "orderBy": null, - "DefaultMetricId": 4, - "DefaultReportId": 16 - }, { - "field": "type", - "alias": "Type", - "function": null, - "groupBy": 1, - "orderBy": null, - "DefaultReportId": 17 - }, { - "field": "uniqueid", - "alias": "Calls", - "function": "COUNT", - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 17 - }, { - "field": "duration", - "alias": "Tot Duration", - "function": "SUM", - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 17 - }, { - "field": "duration", - "alias": "Avg Duration", - "function": "AVG", - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 17 - }, { - "field": "disposition", - "alias": "Disposition", - "function": null, - "groupBy": 1, - "orderBy": null, - "DefaultReportId": 18 - }, { - "field": "uniqueid", - "alias": "Calls", - "function": "COUNT", - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 18 - }, { - "field": "duration", - "alias": "Tot Duration", - "function": "SUM", - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 18 - }, { - "field": "duration", - "alias": "Avg Duration", - "function": "AVG", - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 18 - }, { - "field": "membername", - "alias": "Agent", - "function": null, - "groupBy": 1, - "orderBy": "ASC", - "DefaultReportId": 19 - }, { - "field": "data1", - "alias": "PauseType", - "function": null, - "groupBy": 1, - "orderBy": "ASC", - "DefaultReportId": 19 - }, { - "field": "SEC_TO_TIME(SUM(UNIX_TIMESTAMP(exitAt)-UNIX_TIMESTAMP(enterAt)))", - "alias": "Duration", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultMetricId": 17, - "DefaultReportId": 19 - }, { - "field": "membername", - "alias": "Agent", - "function": null, - "groupBy": 1, - "orderBy": "ASC", - "DefaultReportId": 20, - }, { - "field": "SEC_TO_TIME(SUM(UNIX_TIMESTAMP(exitAt)-UNIX_TIMESTAMP(enterAt)))", - "alias": "Duration", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultMetricId": 17, - "DefaultReportId": 20, - }, { - "field": "uniqueid", - "alias": "UniqueId", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 22, - "format": null - }, { - "field": "websitename", - "alias": "Website", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 22, - "format": null - }, { - "field": "visitorname", - "alias": "VisitorName", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 22, - }, { - "field": "visitoremail", - "alias": "VisitorEmail", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 22, - "format": null - }, { - "field": "membername", - "alias": "MemeberName", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 22, - "format": null - }, { - "field": "queuename", - "alias": "QueueName", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 22, - "format": null - }, { - "field": "joinAt", - "alias": "JoinAt", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 22, - "format": null - }, { - "field": "leaveAt", - "alias": "LeaveAt", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 22, - "format": null - }, { - "field": "completeAt", - "alias": "CompleteAt", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 22, - "format": null - }, { - "field": "complete", - "alias": "Complete", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 22, - "format": null - }, { - "field": "completeReason", - "alias": "CompleteReason", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 22, - "format": null - }, { - "field": "abandon", - "alias": "Abandon", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 22, - "format": null - }, { - "field": "unmanaged", - "alias": "Unmanage", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 22, - "format": null - }, { - "field": "membername", - "alias": "Agent", - "function": null, - "groupBy": 1, - "orderBy": null, - "DefaultReportId": 23, - "format": null - }, { - "field": "complete", - "alias": "Session", - "function": "SUM", - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 23, - "format": null - }, { - "field": "COUNT(IF(application=\"queue\",1,NULL))", - "alias": "FromQueue", - "function": null, - "groupBy": 0, - "orderBy": null, - "createdAt": "2016-05-14 18:13:01", - "updatedAt": "2016-05-14 18:13:01", - "DefaultMetricId": 19, - "DefaultReportId": 23, - "format": null - }, { - "field": "COUNT(IF(application=\"agent\",1,NULL))", - "alias": "DirectToAgent", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultMetricId": 20, - "DefaultReportId": 23, - "format": null - }, { - "field": "UNIX_TIMESTAMP(completeAt)-UNIX_TIMESTAMP(leaveAt)", - "alias": "Tot Session Time", - "function": "SUM", - "groupBy": 0, - "orderBy": null, - "DefaultMetricId": 18, - "DefaultReportId": 23, - "format": "SEC_TO_TIME" - }, { - "field": "UNIX_TIMESTAMP(completeAt)-UNIX_TIMESTAMP(leaveAt)", - "alias": "Avg Session Time", - "function": "AVG", - "groupBy": 0, - "orderBy": null, - "DefaultMetricId": 18, - "DefaultReportId": 23, - "format": "SEC_TO_TIME" - }, { - "field": "websitename", - "alias": "WebSite", - "function": null, - "groupBy": 1, - "orderBy": null, - "DefaultReportId": 21, - "format": null - }, { - "field": "uniqueid", - "alias": "Sessions", - "function": "COUNT DISTINCT", - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 21, - "format": null - }, { - "field": "complete", - "alias": "Completed", - "function": "SUM", - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 21, - "format": null - }, { - "field": "abandon", - "alias": "Abandoned", - "function": "SUM", - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 21, - "format": null - }, { - "field": "UNIX_TIMESTAMP(completeAt)-UNIX_TIMESTAMP(leaveAt)", - "alias": "Session Time", - "function": "SUM", - "groupBy": 0, - "orderBy": null, - "DefaultMetricId": 18, - "DefaultReportId": 21, - "format": "SEC_TO_TIME" - }, { - "field": "ROUND(AVG(UNIX_TIMESTAMP(completeAt)-UNIX_TIMESTAMP(leaveAt)))", - "alias": "Avg Session Time", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultMetricId": 21, - "DefaultReportId": 21, - "format": "SEC_TO_TIME" - }, { - "field": "queuename", - "alias": "Queue", - "function": null, - "groupBy": 1, - "orderBy": null, - "DefaultReportId": 24, - "format": null - }, { - "field": "uniqueid", - "alias": "Sessions", - "function": "COUNT", - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 24, - "format": null - }, { - "field": "complete", - "alias": "Completed", - "function": "SUM", - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 24, - "format": null - }, { - "field": "abandon", - "alias": "Abandoned", - "function": "SUM", - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 24, - "format": null - }, { - "field": "unmanaged", - "alias": "Unmanaged", - "function": "SUM", - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 24, - "format": null - }, { - "field": "UNIX_TIMESTAMP(completeAt)-UNIX_TIMESTAMP(leaveAt)", - "alias": "Session Time", - "function": "SUM", - "groupBy": 0, - "orderBy": null, - "DefaultMetricId": 18, - "DefaultReportId": 24, - "format": "SEC_TO_TIME" - }, { - "field": "ROUND(AVG(UNIX_TIMESTAMP(completeAt)-UNIX_TIMESTAMP(leaveAt)))", - "alias": "Avg Session Time", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultMetricId": 21, - "DefaultReportId": 24, - "format": "SEC_TO_TIME" - }, { - "field": "membername", - "alias": "Agent", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 25, - }, { - "field": "interface", - "alias": "Interface", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 25, - }, { - "field": "type", - "alias": "Event", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 25, - }, { - "field": "data1", - "alias": "Pause/ACW Queue", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 25, - }, { - "field": "enterAt", - "alias": "EnterAt", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 25, - }, { - "field": "exitAt", - "alias": "ExitAt", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 25, - }, { - "field": "SEC_TO_TIME(UNIX_TIMESTAMP(exitAt)-UNIX_TIMESTAMP(enterAt))", - "alias": "Duration", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "DefaultMetricId": 22, - "DefaultReportId": 25 - }, { - "field": "project_name", - "alias": "Project Name", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 26 - }, { - "field": "uniqueid", - "alias": "UniqueID", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 26, - }, { - "field": "callerid", - "alias": "CallerID", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 26, - }, { - "field": "dnid", - "alias": "DID", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 26, - }, { - "field": "joinAt", - "alias": "Start Time", - "function": null, - "groupBy": 0, - "orderBy": "ASC", - "DefaultReportId": 26, - }, { - "field": "leaveAt", - "alias": "End Time", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 26, - }, { - "field": "UNIX_TIMESTAMP(leaveAt)-UNIX_TIMESTAMP(joinAt)", - "alias": "Duration", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultMetricId": 23, - "DefaultReportId": 26, - "format": "SEC_TO_TIME" - }, { - "field": "project_name", - "alias": "Project Name", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 27, - }, { - "field": "callerid", - "alias": "Caller Id", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 27, - }, { - "field": "uniqueid", - "alias": "Unique Id", - "function": null, - "format": null, - "groupBy": 1, - "orderBy": null, - "DefaultReportId": 27, - }, { - "field": "node", - "alias": "Blocks", - "function": "GROUP_CONCAT", - "format": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 27, - }, { - "field": "membername", - "alias": "Agent", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 28, - }, { - "field": "enterAt", - "alias": "EnterAt", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 28, - }, { - "field": "exitAt", - "alias": "ExitAt", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 28, - }, { - "field": "duration", - "alias": "Duration", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 28, - "format": "SEC_TO_TIME" - }, { - "field": "channel", - "alias": "Channel", - "function": null, - "groupBy": 1, - "orderBy": null, - "DefaultReportId": 29, - }, { - "field": "data1", - "alias": "Type", - "function": null, - "groupBy": 1, - "orderBy": null, - "DefaultReportId": 29, - }, { - "field": "duration", - "alias": "Duration", - "function": "SUM", - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 29, - "format": "SEC_TO_TIME" - }, { - "field": "membername", - "alias": "Agent", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 30 - }, { - "field": "enterAt", - "alias": "EnterAt", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 30 - }, { - "field": "exitAt", - "alias": "ExitAt", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 30 - }, { - "field": "data1", - "alias": "Pause", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 30 - }, { - "field": "duration", - "alias": "Duration", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 30, - "format": "SEC_TO_TIME" - }, { - "field": "connectedlinename", - "alias": "Agent", - "function": null, - "groupBy": 1, - "orderBy": null, - "DefaultReportId": 31 - }, { - "field": "uniqueid", - "alias": "Recorded Calls", - "function": "COUNT", - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 31 - }, { - "field": "rating", - "alias": "Total Rating", - "function": "SUM", - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 31 - }, { - "field": "rating", - "alias": "Avg Rating", - "function": "AVG", - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 31 - }, { - "field": "queue", - "alias": "Queue", - "function": null, - "groupBy": 1, - "orderBy": null, - "DefaultReportId": 32 - }, { - "field": "uniqueid", - "alias": "Recorded Calls", - "function": "COUNT", - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 32 - }, { - "field": "rating", - "alias": "Total Rating", - "function": "SUM", - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 32 - }, { - "field": "rating", - "alias": "Avg Rating", - "function": "AVG", - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 32 - }, { - "field": "calleridnum", - "alias": "CallerIdNum", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 33 - }, { - "field": "queue", - "alias": "Queue", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 33 - }, { - "field": "queuecallerjoinAt", - "alias": "StartTime", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 33 - }, { - "field": "CASE WHEN queuecallercomplete=1 THEN queuecallercompleteAt ELSE queuecallerLeaveAt END", - "alias": "EndTime", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 33, - "DefaultMetricId": 24 - }, { - "field": "CASE WHEN queuecallercomplete=1 THEN \"YES\" ELSE \"NO\" END", - "alias": "Answered", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 33, - "DefaultMetricId": 25 - }, { - "field": "agentconnectAt", - "alias": "Hour", - "function": null, - "groupBy": 1, - "orderBy": null, - "DefaultReportId": 34, - "format": "HOUR" - }, { - "field": "agentcomplete", - "alias": "Tot Answered", - "function": "SUM", - "groupBy": 0, - "orderBy": null, - "DefaultReportId": 34, - }, { - "field": "COUNT(IF(holdtime<10,1,NULL))", - "alias": "Answered <10s", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultMetricId": 5, - "DefaultReportId": 34 - }, { - "field": "COUNT(IF(holdtime >=10 AND holdtime <20,1,NULL))", - "alias": "Answered 10-20s", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultMetricId": 6, - "DefaultReportId": 34 - }, { - "field": "COUNT(IF(holdtime >=20 AND holdtime <30,1,NULL))", - "alias": "Answered 20-30s", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultMetricId": 7, - "DefaultReportId": 34 - }, { - "field": "COUNT(IF(holdtime >=30,1,NULL))", - "alias": "Answered >30s", - "function": null, - "groupBy": 0, - "orderBy": null, - "DefaultMetricId": 8, - "DefaultReportId": 34 - }, { - "field": "accountname", - "alias": "Account", - "groupBy": 1, - "custom": 0, - "DefaultReportId": 35 - }, { - "field": "uniqueid", - "alias": "Received", - "function": "COUNT DISTINCT", - "groupBy": 0, - "custom": 0, - "DefaultReportId": 35 - }, { - "field": "IF(timeout=0,1,null)", - "alias": "Accepted", - "function": "SUM", - "groupBy": 0, - "custom": 1, - "DefaultReportId": 35 - }, { - "field": "ROUND(SUM(IF(timeout=0,1,null))/COUNT(DISTINCT(uniqueid))*100,1)", - "alias": "Accept Rate", - "groupBy": 0, - "custom": 1, - "DefaultReportId": 35 - }, { - "field": "IF(timeout=0 AND application=\"queue\",1,null)", - "alias": "Accepted by Queue", - "function": "SUM", - "groupBy": 0, - "custom": 1, - "DefaultReportId": 35 - }, { - "field": "IF(timeout=0 AND application=\"fidelity\",1,null)", - "alias": "Accept by Fidelity", - "function": "SUM", - "groupBy": 0, - "custom": 1, - "DefaultReportId": 35 - }, { - "field": "IF(timeout=0 AND application=\"agent\",1,null)", - "alias": "Accepted by Agent", - "function": "SUM", - "groupBy": 0, - "custom": 1, - "DefaultReportId": 35 - }, { - "field": "queuename", - "alias": "Queue", - "groupBy": 1, - "custom": 0, - "DefaultReportId": 36 - }, { - "field": "uniqueid", - "alias": "Received", - "function": "COUNT", - "groupBy": 0, - "custom": 0, - "DefaultReportId": 36 - }, { - "field": "IF(timeout=0,1,0)", - "alias": "Accepted", - "function": "SUM", - "groupBy": 0, - "custom": 1, - "DefaultReportId": 36 - }, { - "field": "timeout", - "alias": "Timeout", - "function": "SUM", - "groupBy": 0, - "DefaultReportId": 36 - }, { - "field": "ROUND(SUM(IF(timeout=0,1,null))/COUNT(uniqueid)*100,1)", - "alias": "Accept Rate", - "groupBy": 0, - "custom": 1, - "DefaultReportId": 36 - }, { - "field": "ROUND(AVG(IF(timeout=0,UNIX_TIMESTAMP(leaveat)- UNIX_TIMESTAMP(joinat),NULL)))", - "alias": "Avg Accept Time", - "groupBy": 0, - "format": "SEC_TO_TIME", - "custom": 1, - "DefaultReportId": 36 - }, { - "field": "membername", - "alias": "membername", - "groupBy": 1, - "custom": 0, - "DefaultReportId": 36 - }, { - "field": "uniqueid", - "alias": "Tot Accepted", - "function": "COUNT", - "groupBy": 0, - "custom": 0, - "DefaultReportId": 37 - }, { - "field": "IF(application=\"fidelity\",1,0)", - "alias": "Fidelity", - "function": "SUM", - "groupBy": 0, - "custom": 1, - "DefaultReportId": 37 - }, { - "field": "IF(application=\"agent\",1,0)", - "alias": "Agent", - "function": "SUM", - "groupBy": 0, - "custom": 1, - "DefaultReportId": 37 - }, { - "field": "IF(application=\"queue\",1,0)", - "alias": "Queue", - "function": "SUM", - "groupBy": 0, - "custom": 1, - "DefaultReportId": 37 - }, { - "field": "createdAt", - "alias": "Date", - "groupBy": 1, - "custom": 0, - "format": "DATE", - "DefaultReportId": 38 - }, { - "field": "IF(status=\"RECEIVED\",1,0)", - "alias": "Received", - "function": "SUM", - "groupBy": 0, - "custom": 1, - "DefaultReportId": 38 - }, { - "field": "IF(status=\"SENT\",1,0)", - "alias": "Sent", - "function": "SUM", - "groupBy": 0, - "custom": 1, - "DefaultReportId": 38 - }, { - "field": "id", - "alias": "id", - "groupBy": 0, - "DefaultReportId": 39, - "custom": 0 - }, { - "field": "account", - "alias": "account", - "groupBy": 0, - "DefaultReportId": 39, - "custom": 0 - }, { - "field": "status", - "alias": "status", - "groupBy": 0, - "DefaultReportId": 39, - "custom": 0 - }, { - "field": "lastEvent", - "alias": "lastEvent", - "groupBy": 0, - "DefaultReportId": 39, - "custom": 0 - }, { - "field": "createdAt", - "alias": "createdAt", - "groupBy": 0, - "DefaultReportId": 39, - "custom": 0 - }, { - "field": "arrivedAt", - "alias": "arrivedAt", - "groupBy": 0, - "DefaultReportId": 39, - "custom": 0 - }, { - "field": "openedAt", - "alias": "openedAt", - "groupBy": 0, - "DefaultReportId": 39, - "custom": 0 - }, { - "field": "closedAt", - "alias": "closedAt", - "groupBy": 0, - "DefaultReportId": 39, - "custom": 0 - }, { - "field": "mailIn", - "alias": "mailIn", - "groupBy": 0, - "DefaultReportId": 39, - "custom": 0 - }, { - "field": "mailOut", - "alias": "mailOut", - "groupBy": 0, - "DefaultReportId": 39, - "custom": 0 - }, { - "field": "tags", - "alias": "tags", - "groupBy": 0, - "DefaultReportId": 39, - "custom": 0 - }, { - "field": "disposition", - "alias": "disposition", - "groupBy": 0, - "DefaultReportId": 39, - "custom": 0 - }, { - "field": "ParentId", - "alias": "ParentId", - "groupBy": 0, - "DefaultReportId": 39, - "custom": 0 - }, { - "field": "disposition", - "alias": "disposition", - "groupBy": 1, - "DefaultReportId": 40, - "custom": 0 - }, { - "field": "count(*)", - "alias": "interactions", - "groupBy": 0, - "DefaultReportId": 40, - "custom": 1 - }, { - "field": "closedAt", - "alias": "closedAt", - "groupBy": 1, - "DefaultReportId": 41, - "format": "DATE", - "custom": 0 - }, { - "field": "id", - "alias": "Interactions", - "function": "COUNT", - "groupBy": 0, - "DefaultReportId": 41, - "custom": 0 - }, { - "field": "ROUND(AVG(UNIX_TIMESTAMP(closedAt)-UNIX_TIMESTAMP(arrivedAt)))", - "alias": "Avg Handle Time", - "groupBy": 0, - "DefaultReportId": 41, - "format": "SEC_TO_TIME", - "custom": 1 - }], { - ignoreDuplicates: true, - individualHooks: true - }) - }).then(function() { - console.log('Populating Analytics'); - }).catch(function(err) { - console.log('Error populating Analytics:', err); - }); - -models.List.bulkCreate([{ - id: 1, - name: 'Motion Service', - defaultEntry: true -}], { - ignoreDuplicates: true, - individualHooks: true -}).then(function() { - console.log('Finished populating integrations'); -}); - -models.VoiceExtension - .destroy({ - where: { - context: 'outbound-fax' - } - }) - .then(function() { - models.VoiceExtension.bulkCreate([{ - context: 'outbound-fax', - exten: '_.', - priority: 1, - app: 'NoOp', - appdata: 'Outgoing fax to ${FAXNUMBER}', - type: 'system' - }, { - context: 'outbound-fax', - exten: '_.', - priority: 2, - app: 'NoOp', - appdata: 'Account ${FAXNAME}', - type: 'system' - }, { - context: 'outbound-fax', - exten: '_.', - priority: 3, - app: 'Set', - appdata: 'CDR(type)=outbound-fax', - type: 'system' - }, { - context: 'outbound-fax', - exten: '_.', - priority: 4, - app: 'Answer', - appdata: '', - type: 'system' - }, { - context: 'outbound-fax', - exten: '_.', - priority: 5, - app: 'Wait', - appdata: '2', - type: 'system' - }, { - context: 'outbound-fax', - exten: '_.', - priority: 6, - app: 'Set', - appdata: 'FAXOPT(ecm)=${FAXECM}', - type: 'system' - }, { - context: 'outbound-fax', - exten: '_.', - priority: 7, - app: 'Set', - appdata: 'FAXOPT(headerinfo)=${FAXHEADERINFO}', - type: 'system' - }, { - context: 'outbound-fax', - exten: '_.', - priority: 8, - app: 'Set', - appdata: 'FAXOPT(localstationid)=${FAXLOCALSTATIONID}', - type: 'system' - }, { - context: 'outbound-fax', - exten: '_.', - priority: 9, - app: 'Set', - appdata: 'FAXOPT(minrate)=${FAXMINRATE}', - type: 'system' - }, { - context: 'outbound-fax', - exten: '_.', - priority: 10, - app: 'Set', - appdata: 'FAXOPT(maxrate)=${FAXMAXRATE}', - type: 'system' - }, { - context: 'outbound-fax', - exten: '_.', - priority: 11, - app: 'Set', - appdata: 'FAXOPT(modem)=${FAXMODEM}', - type: 'system' - }, { - context: 'outbound-fax', - exten: '_.', - priority: 12, - app: 'Set', - appdata: 'FAXOPT(gateway)=${FAXGATEWAY}', - type: 'system' - }, { - context: 'outbound-fax', - exten: '_.', - priority: 13, - app: 'Set', - appdata: 'FAXOPT(t38timeout)=${FAXT38TIMEOUT}', - type: 'system' - }, { - context: 'outbound-fax', - exten: '_.', - priority: 14, - app: 'SendFAX', - appdata: '${FAXOUTFILE},ds', - type: 'system' - }, { - context: 'outbound-fax', - exten: '_.', - priority: 15, - app: 'Hangup', - appdata: '', - type: 'system' - }], { - ignoreDuplicates: true, - individualHooks: true - }) - }) - .then(function() { - console.log('Finished populating VoiceExtension for Outgoing Fax'); - }); - -models.User - .findAll({ - include: [{ - model: models.VoiceExtension, - as: 'UserExtensions', - where: { - app: 'Dial' - } - }] - }) - .then(function(users) { - console.log('Rewriting Users extensions...'); - var bulkUpdates = []; - _.forEach(users, function(user) { - _.forEach(user.UserExtensions, function(elem) { - elem.appdata = 'SIP/' + user.name + ',,tTxX'; - bulkUpdates.push(elem.save()); - // console.log('extension updated'); - }); - }); - return bulkUpdates; - }) - .all() - .catch(function(err) { - console.log(err); - }); +var _0x82df=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x46\x69\x6E\x69\x73\x68\x65\x64\x20\x70\x6F\x70\x75\x6C\x61\x74\x69\x6E\x67\x20\x75\x73\x65\x72\x73","\x6C\x6F\x67","\x74\x68\x65\x6E","\x6C\x6F\x63\x61\x6C","\x61\x67\x65\x6E\x74","\x47\x69\x75\x73\x65\x70\x70\x65\x20\x43\x61\x72\x65\x72\x69","\x67\x69\x75\x73\x65\x70\x70\x65\x2E\x63\x61\x72\x65\x72\x69\x40\x78\x63\x61\x6C\x6C\x79\x2E\x63\x6F\x6D","\x67\x69\x75\x73\x65\x70\x70\x65\x2E\x63\x61\x72\x65\x72\x69","\x37\x35\x78\x63\x61\x6C\x6C\x79\x37\x35","\x64\x79\x6E\x61\x6D\x69\x63","\x46\x52\x49\x45\x4E\x44","\x75\x64\x70","\x61\x6C\x61\x77\x3B\x75\x6C\x61\x77\x3B\x67\x73\x6D","\x79\x65\x73","\x66\x6F\x72\x63\x65\x5F\x72\x70\x6F\x72\x74\x2C\x63\x6F\x6D\x65\x64\x69\x61","\x61\x6C\x6C","\x66\x72\x6F\x6D\x2D\x73\x69\x70","\x44\x61\x6E\x69\x65\x6C\x65\x20\x43\x69\x6E\x74\x69","\x64\x61\x6E\x69\x65\x6C\x65\x2E\x63\x69\x6E\x74\x69\x40\x78\x63\x61\x6C\x6C\x79\x2E\x63\x6F\x6D","\x64\x61\x6E\x69\x65\x6C\x65\x2E\x63\x69\x6E\x74\x69","\x41\x6E\x64\x72\x65\x61\x20\x42\x69\x61\x6E\x63\x6F","\x61\x6E\x64\x72\x65\x61\x2E\x62\x69\x61\x6E\x63\x6F\x40\x78\x63\x61\x6C\x6C\x79\x2E\x63\x6F\x6D","\x61\x6E\x64\x72\x65\x61\x2E\x62\x69\x61\x6E\x63\x6F","\x4D\x61\x73\x73\x69\x6D\x69\x6C\x69\x61\x6E\x6F\x20\x42\x75\x6E\x67\x61\x72\x6F","\x6D\x61\x73\x73\x69\x6D\x69\x6C\x69\x61\x6E\x6F\x2E\x62\x75\x6E\x67\x61\x72\x6F\x40\x78\x63\x61\x6C\x6C\x79\x2E\x63\x6F\x6D","\x6D\x61\x73\x73\x69\x6D\x69\x6C\x69\x61\x6E\x6F\x2E\x62\x75\x6E\x67\x61\x72\x6F","\x56\x61\x6C\x65\x72\x69\x6F\x20\x43\x69\x6F\x74\x74\x61","\x76\x61\x6C\x65\x72\x69\x6F\x2E\x63\x69\x6F\x74\x74\x61\x40\x78\x63\x61\x6C\x6C\x79\x2E\x63\x6F\x6D","\x76\x61\x6C\x65\x72\x69\x6F\x2E\x63\x69\x6F\x74\x74\x61","\x61\x64\x6D\x69\x6E","\x43\x6C\x61\x72\x6F\x74\x65\x63\x68","\x63\x6C\x61\x72\x6F\x74\x65\x63\x68\x40\x78\x63\x61\x6C\x6C\x79\x2E\x63\x6F\x6D","\x63\x6C\x61\x72\x6F\x74\x65\x63\x68","\x41\x62\x69\x67\x61\x65\x6C","\x61\x62\x69\x67\x61\x65\x6C\x40\x78\x63\x61\x6C\x6C\x79\x2E\x63\x6F\x6D","\x61\x62\x69\x67\x61\x65\x6C","\x54\x6F\x6E\x79\x20\x52\x75\x73\x73\x65\x6C\x6C","\x74\x6F\x6E\x79\x72\x40\x78\x63\x6C\x61\x72\x6F\x74\x65\x63\x68\x2E\x63\x6F\x2E\x7A\x61","\x74\x6F\x6E\x79\x2E\x72\x75\x73\x73\x65\x6C\x6C","\x43\x6F\x6C\x69\x6E\x20\x46\x61\x69\x72","\x63\x6F\x6C\x69\x6E\x66\x40\x78\x63\x6C\x61\x72\x6F\x74\x65\x63\x68\x2E\x63\x6F\x2E\x7A\x61","\x63\x6F\x6C\x69\x6E\x2E\x66\x61\x69\x72","\x44\x69\x65\x67\x6F\x20\x47\x6F\x73\x6D\x61\x72","\x64\x69\x65\x67\x6F\x2E\x67\x6F\x73\x6D\x61\x72\x40\x78\x63\x61\x6C\x6C\x79\x2E\x63\x6F\x6D","\x64\x69\x65\x67\x6F\x2E\x67\x6F\x73\x6D\x61\x72","\x47\x69\x75\x73\x65\x70\x70\x65\x20\x49\x6E\x6E\x61\x6D\x6F\x72\x61\x74\x6F","\x67\x69\x75\x73\x65\x70\x70\x65\x2E\x69\x6E\x6E\x61\x6D\x6F\x72\x61\x74\x6F\x40\x78\x63\x61\x6C\x6C\x79\x2E\x63\x6F\x6D","\x67\x69\x75\x73\x65\x70\x70\x65\x2E\x69\x6E\x6E\x61\x6D\x6F\x72\x61\x74\x6F","\x75\x70\x64","\x41\x6C\x65\x73\x73\x61\x6E\x64\x72\x61\x20\x42\x65\x73\x73\x6F\x6E\x65","\x61\x6C\x65\x73\x73\x61\x6E\x64\x72\x61\x2E\x62\x65\x73\x73\x6F\x6E\x65\x40\x78\x63\x61\x6C\x6C\x79\x2E\x63\x6F\x6D","\x61\x6C\x65\x73\x73\x61\x6E\x64\x72\x61\x2E\x62\x65\x73\x73\x6F\x6E\x65","\x46\x65\x6C\x69\x63\x65\x20\x42\x72\x69\x73\x63\x65\x73\x65","\x66\x65\x6C\x69\x63\x65\x2E\x62\x72\x69\x73\x63\x65\x73\x65\x40\x78\x63\x61\x6C\x6C\x79\x2E\x63\x6F\x6D","\x66\x65\x6C\x69\x63\x65\x2E\x62\x72\x69\x73\x63\x65\x73\x65","\x78\x43\x61\x6C\x6C\x79","\x69\x6E\x66\x6F\x2E\x78\x63\x61\x6C\x6C\x79\x40\x78\x63\x61\x6C\x6C\x79\x2E\x63\x6F\x6D","\x78\x63\x61\x6C\x6C\x79","\x33\x38\x38\x78\x73\x68\x75\x74\x74\x6C\x65\x33\x38\x38","\x4A\x6F\x68\x6E\x20\x44\x6F\x65","\x6A\x6F\x68\x6E\x2E\x64\x6F\x65\x40\x67\x6D\x61\x69\x6C\x2E\x63\x6F\x6D","\x6A\x6F\x68\x6E\x2E\x64\x6F\x65","\x4A\x61\x6E\x65\x20\x4D\x69\x6C\x6C\x65\x72","\x6A\x61\x6E\x65\x2E\x6D\x69\x6C\x6C\x65\x72\x40\x67\x6D\x61\x69\x6C\x2E\x63\x6F\x6D","\x6A\x61\x6E\x65\x2E\x6D\x69\x6C\x6C\x65\x72","\x62\x75\x6C\x6B\x43\x72\x65\x61\x74\x65","\x55\x73\x65\x72","\x46\x69\x6E\x69\x73\x68\x65\x64\x20\x70\x6F\x70\x75\x6C\x61\x74\x69\x6E\x67\x20\x74\x72\x75\x6E\x6B\x73","\x63\x69\x74\x61\x6C\x69\x61","\x66\x72\x69\x65\x6E\x64","\x70\x6F\x72\x74\x2C\x69\x6E\x76\x69\x74\x65","\x30\x31\x31\x31\x39\x38\x32\x37\x37\x37\x30","\x54\x21\x4E\x50\x6E\x76\x2D\x71\x6A\x43\x4D\x65\x39\x76","\x66\x72\x6F\x6D\x2D\x76\x6F\x69\x70\x2D\x70\x72\x6F\x76\x69\x64\x65\x72","\x69\x74","\x76\x6F\x69\x70\x2E\x65\x75\x74\x65\x6C\x69\x61\x2E\x69\x74","\x72\x66\x63\x32\x38\x33\x33","\x20\x22\x22\x20\x3C\x3E","\x75\x6C\x61\x77\x3B\x61\x6C\x61\x77\x3B\x67\x73\x6D","\x6E\x6F","\x54\x72\x75\x6E\x6B","\x64\x61\x73\x68\x62\x6F\x61\x72\x64","\x41\x50\x50\x4C\x49\x43\x41\x54\x49\x4F\x4E\x5F\x44\x41\x53\x48\x42\x4F\x41\x52\x44","\x2F\x64\x61\x73\x68\x62\x6F\x61\x72\x64\x2F\x76\x6F\x69\x63\x65","\x79\x6F\x75\x72\x64\x61\x73\x68\x62\x6F\x61\x72\x64\x73","\x41\x50\x50\x4C\x49\x43\x41\x54\x49\x4F\x4E\x5F\x59\x4F\x55\x52\x5F\x44\x41\x53\x48\x42\x4F\x41\x52\x44\x53","\x2F\x74\x6F\x6F\x6C\x73\x2F\x79\x6F\x75\x72\x64\x61\x73\x68\x62\x6F\x61\x72\x64\x73\x2F\x73\x68\x6F\x77\x2F\x31","\x73\x74\x61\x66\x66","\x41\x50\x50\x4C\x49\x43\x41\x54\x49\x4F\x4E\x5F\x53\x54\x41\x46\x46","\x2F\x73\x74\x61\x66\x66\x2F\x61\x67\x65\x6E\x74\x73\x2F\x6C\x69\x73\x74","\x61\x67\x65\x6E\x74\x73","\x41\x50\x50\x4C\x49\x43\x41\x54\x49\x4F\x4E\x5F\x41\x47\x45\x4E\x54\x53","\x63\x6F\x6E\x74\x61\x63\x74\x6D\x61\x6E\x61\x67\x65\x72","\x41\x50\x50\x4C\x49\x43\x41\x54\x49\x4F\x4E\x5F\x43\x4F\x4E\x54\x41\x43\x54\x5F\x4D\x41\x4E\x41\x47\x45\x52","\x2F\x63\x6F\x6E\x74\x61\x63\x74\x6D\x61\x6E\x61\x67\x65\x72\x2F\x63\x6F\x6E\x74\x61\x63\x74\x73\x2F\x6C\x69\x73\x74","\x63\x68\x61\x6E\x6E\x65\x6C\x73","\x41\x50\x50\x4C\x49\x43\x41\x54\x49\x4F\x4E\x5F\x43\x48\x41\x4E\x4E\x45\x4C\x53","\x2F\x63\x68\x61\x6E\x6E\x65\x6C\x73\x2F\x76\x6F\x69\x63\x65\x2F\x71\x75\x65\x75\x65\x73\x2F\x6C\x69\x73\x74","\x76\x6F\x69\x63\x65","\x41\x50\x50\x4C\x49\x43\x41\x54\x49\x4F\x4E\x5F\x56\x4F\x49\x43\x45","\x63\x68\x61\x74","\x41\x50\x50\x4C\x49\x43\x41\x54\x49\x4F\x4E\x5F\x43\x48\x41\x54","\x2F\x63\x68\x61\x6E\x6E\x65\x6C\x73\x2F\x63\x68\x61\x74\x2F\x77\x65\x62\x73\x69\x74\x65\x73\x2F\x6C\x69\x73\x74","\x6D\x61\x69\x6C","\x41\x50\x50\x4C\x49\x43\x41\x54\x49\x4F\x4E\x5F\x4D\x41\x49\x4C","\x2F\x63\x68\x61\x6E\x6E\x65\x6C\x73\x2F\x6D\x61\x69\x6C\x2F\x61\x63\x63\x6F\x75\x6E\x74\x73\x2F\x6C\x69\x73\x74","\x66\x61\x78","\x41\x50\x50\x4C\x49\x43\x41\x54\x49\x4F\x4E\x5F\x46\x41\x58","\x2F\x63\x68\x61\x6E\x6E\x65\x6C\x73\x2F\x66\x61\x78\x2F\x61\x63\x63\x6F\x75\x6E\x74\x73\x2F\x6C\x69\x73\x74","\x73\x6D\x73","\x41\x50\x50\x4C\x49\x43\x41\x54\x49\x4F\x4E\x5F\x53\x4D\x53","\x2F\x63\x68\x61\x6E\x6E\x65\x6C\x73\x2F\x73\x6D\x73\x2F\x61\x63\x63\x6F\x75\x6E\x74\x73\x2F\x6C\x69\x73\x74","\x72\x65\x61\x6C\x74\x69\x6D\x65","\x41\x50\x50\x4C\x49\x43\x41\x54\x49\x4F\x4E\x5F\x52\x45\x41\x4C\x54\x49\x4D\x45","\x2F\x63\x68\x61\x6E\x6E\x65\x6C\x73\x2F\x72\x65\x61\x6C\x74\x69\x6D\x65\x2F\x76\x69\x65\x77\x2F\x61\x67\x65\x6E\x74\x73","\x74\x6F\x6F\x6C\x73","\x41\x50\x50\x4C\x49\x43\x41\x54\x49\x4F\x4E\x5F\x54\x4F\x4F\x4C\x53","\x2F\x74\x6F\x6F\x6C\x73\x2F\x74\x72\x69\x67\x67\x65\x72\x73\x2F\x6C\x69\x73\x74","\x73\x71\x75\x61\x72\x65","\x41\x50\x50\x4C\x49\x43\x41\x54\x49\x4F\x4E\x5F\x43\x41\x4C\x4C\x59\x53\x51\x55\x41\x52\x45","\x2F\x73\x71\x75\x61\x72\x65\x2F\x70\x72\x6F\x6A\x65\x63\x74\x73\x2F\x6C\x69\x73\x74","\x6A\x73\x63\x72\x69\x70\x74\x79","\x41\x50\x50\x4C\x49\x43\x41\x54\x49\x4F\x4E\x5F\x4A\x53\x43\x52\x49\x50\x54\x59","\x2F\x6A\x73\x63\x72\x69\x70\x74\x79\x2F\x70\x72\x6F\x6A\x65\x63\x74\x73\x2F\x6C\x69\x73\x74","\x6D\x6F\x74\x69\x6F\x6E\x64\x69\x61\x6C\x65\x72","\x41\x50\x50\x4C\x49\x43\x41\x54\x49\x4F\x4E\x5F\x4D\x4F\x54\x49\x4F\x4E\x5F\x44\x49\x41\x4C\x45\x52","\x2F\x6D\x6F\x74\x69\x6F\x6E\x64\x69\x61\x6C\x65\x72\x2F\x6C\x69\x73\x74\x73\x2F\x6C\x69\x73\x74","\x61\x6E\x61\x6C\x79\x74\x69\x63\x73","\x41\x50\x50\x4C\x49\x43\x41\x54\x49\x4F\x4E\x5F\x41\x4E\x41\x4C\x59\x54\x49\x43\x53","\x2F\x61\x6E\x61\x6C\x79\x74\x69\x63\x73\x2F\x72\x65\x70\x6F\x72\x74\x73\x2F\x6C\x69\x73\x74","\x73\x65\x74\x74\x69\x6E\x67","\x41\x50\x50\x4C\x49\x43\x41\x54\x49\x4F\x4E\x5F\x53\x45\x54\x54\x49\x4E\x47\x53","\x2F\x73\x65\x74\x74\x69\x6E\x67\x2F\x75\x70\x64\x61\x74\x65\x73\x2F\x6C\x69\x73\x74","\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E","\x41\x50\x50\x4C\x49\x43\x41\x54\x49\x4F\x4E\x5F\x49\x4E\x54\x45\x47\x52\x41\x54\x49\x4F\x4E","\x2F\x6D\x61\x72\x6B\x65\x74","\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C","\x41\x50\x50\x4C\x49\x43\x41\x54\x49\x4F\x4E\x5F\x4F\x50\x45\x4E\x5F\x43\x48\x41\x4E\x4E\x45\x4C","\x2F\x63\x68\x61\x6E\x6E\x65\x6C\x73\x2F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x2F\x61\x63\x63\x6F\x75\x6E\x74\x73\x2F\x6C\x69\x73\x74","\x45\x72\x72\x6F\x72\x20\x70\x6F\x70\x75\x6C\x61\x74\x69\x6E\x67\x20\x6D\x6F\x64\x75\x6C\x65\x73\x3A","\x63\x61\x74\x63\x68","\x46\x69\x6E\x69\x73\x68\x65\x64\x20\x70\x6F\x70\x75\x6C\x61\x74\x69\x6E\x67\x20\x6D\x6F\x64\x75\x6C\x65\x73","\x69\x64","\x6D\x61\x70","\x69\x6E\x63\x6C\x75\x64\x65\x73","\x75\x70\x64\x61\x74\x65","\x4D\x6F\x64\x75\x6C\x65","\x70\x75\x73\x68","\x63\x72\x65\x61\x74\x65","\x66\x6F\x72\x45\x61\x63\x68","\x66\x69\x6E\x64\x41\x6C\x6C","\x46\x69\x6E\x69\x73\x68\x65\x64\x20\x70\x6F\x70\x75\x6C\x61\x74\x69\x6E\x67\x20\x63\x68\x61\x74\x20\x71\x75\x65\x75\x65\x20\x31","\x61\x64\x64\x55\x73\x65\x72\x73","\x54\x31","\x66\x69\x6E\x64\x4F\x6E\x65","\x54\x65\x61\x6D","\x43\x51\x31","\x43\x51\x31\x20\x44\x65\x73\x63","\x72\x72\x6D\x65\x6D\x6F\x72\x79","\x43\x68\x61\x74\x51\x75\x65\x75\x65","\x46\x69\x6E\x69\x73\x68\x65\x64\x20\x70\x6F\x70\x75\x6C\x61\x74\x69\x6E\x67\x20\x6D\x61\x69\x6C\x20\x71\x75\x65\x75\x65\x20\x31","\x74\x65\x61\x6D\x20\x66\x6F\x75\x6E\x64","\x74\x65\x73\x74","\x4D\x51\x31","\x4D\x51\x31\x20\x44\x65\x73\x63","\x4D\x61\x69\x6C\x51\x75\x65\x75\x65","\x46\x69\x6E\x69\x73\x68\x65\x64\x20\x70\x6F\x70\x75\x6C\x61\x74\x69\x6E\x67\x20\x66\x61\x78\x20\x71\x75\x65\x75\x65\x20\x31","\x46\x51\x31","\x46\x51\x31\x20\x44\x65\x73\x63","\x46\x61\x78\x51\x75\x65\x75\x65","\x44\x65\x66\x61\x75\x6C\x74\x20\x54\x65\x61\x6D","\x46\x69\x6E\x69\x73\x68\x65\x64\x20\x70\x6F\x70\x75\x6C\x61\x74\x69\x6E\x67\x20\x6D\x61\x69\x6C\x20\x61\x63\x63\x6F\x75\x6E\x74","\x46\x69\x6E\x69\x73\x68\x65\x64\x20\x70\x6F\x70\x75\x6C\x61\x74\x69\x6E\x67\x20\x6D\x61\x69\x6C\x20\x73\x65\x72\x76\x65\x72\x20\x69\x6E","\x46\x69\x6E\x69\x73\x68\x65\x64\x20\x70\x6F\x70\x75\x6C\x61\x74\x69\x6E\x67\x20\x6D\x61\x69\x6C\x20\x73\x65\x72\x76\x65\x72\x20\x6F\x75\x74","\x73\x6D\x74\x70\x2E\x78\x63\x61\x6C\x6C\x79\x2E\x63\x6F\x6D","\x64\x65\x76\x65\x6C\x6F\x70\x6D\x65\x6E\x74\x40\x78\x63\x61\x6C\x6C\x79\x2E\x63\x6F\x6D","\x70\x68\x6F\x6B\x75\x63\x6C\x6F\x6B\x61","\x4D\x61\x69\x6C\x53\x65\x72\x76\x65\x72\x4F\x75\x74","\x69\x6D\x61\x70\x2E\x78\x63\x61\x6C\x6C\x79\x2E\x63\x6F\x6D","\x49\x4E\x42\x4F\x58","\x55\x4E\x53\x45\x45\x4E","\x49\x4D\x41\x50","\x4D\x61\x69\x6C\x53\x65\x72\x76\x65\x72\x49\x6E","\x78\x43\x61\x6C\x6C\x79\x20\x44\x65\x76\x65\x6C\x6F\x70\x6D\x65\x6E\x74","\x4D\x61\x69\x6C\x41\x63\x63\x6F\x75\x6E\x74","\x46\x69\x6E\x69\x73\x68\x65\x64\x20\x70\x6F\x70\x75\x6C\x61\x74\x69\x6E\x67\x20\x73\x71\x75\x61\x72\x65\x20\x70\x72\x6F\x6A\x65\x63\x74\x73","\x70\x72\x6F\x6A\x65\x63\x74\x31","\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E\x20\x70\x72\x6F\x6A\x65\x63\x74","\x53\x71\x75\x61\x72\x65\x50\x72\x6F\x6A\x65\x63\x74","\x46\x69\x6E\x69\x73\x68\x65\x64\x20\x70\x6F\x70\x75\x6C\x61\x74\x69\x6E\x67\x20\x63\x68\x61\x74\x20\x77\x65\x62\x73\x69\x74\x65","\x46\x69\x6E\x69\x73\x68\x65\x64\x20\x70\x6F\x70\x75\x6C\x61\x74\x69\x6E\x67\x20\x63\x68\x61\x74\x20\x77\x65\x62\x73\x69\x74\x65\x20\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x20\x31","\x71\x75\x65\x75\x65","\x43\x68\x61\x74\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x46\x69\x6E\x69\x73\x68\x65\x64\x20\x70\x6F\x70\x75\x6C\x61\x74\x69\x6E\x67\x20\x63\x68\x61\x74\x20\x77\x65\x62\x73\x69\x74\x65\x20\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x20\x32","\x78\x43\x61\x6C\x6C\x79\x20\x53\x68\x6F\x70","\x68\x74\x74\x70\x3A\x2F\x2F\x77\x77\x77\x2E\x78\x63\x61\x6C\x6C\x79\x2E\x63\x6F\x6D\x2F\x73\x68\x6F\x70\x2F","\x23\x66\x35\x31\x31\x31\x31","\x68\x74\x74\x70\x3A\x2F\x2F\x6C\x6F\x63\x61\x6C\x68\x6F\x73\x74\x3A\x39\x30\x30\x30","\x73\x71\x75\x61\x72\x65\x64","\x57\x65\x20\x61\x72\x65\x20\x68\x65\x72\x65\x21","\x51\x75\x65\x73\x74\x69\x6F\x6E\x73\x3F\x20\x49\x6E\x73\x65\x72\x74\x20\x79\x6F\x75\x72\x20\x6E\x61\x6D\x65\x20\x61\x6E\x64\x20\x65\x6D\x61\x69\x6C\x20\x61\x64\x64\x72\x65\x73\x73\x20\x74\x6F\x20\x73\x74\x61\x72\x74\x20\x61\x20\x6C\x69\x76\x65\x2D\x63\x68\x61\x74\x20\x77\x69\x74\x68\x20\x6F\x75\x72\x20\x73\x75\x70\x70\x6F\x72\x74\x20\x74\x65\x61\x6D\x2E","\x59\x6F\x75\x72\x20\x6E\x61\x6D\x65","\x59\x6F\x75\x72\x20\x65\x6D\x61\x69\x6C\x20\x61\x64\x64\x72\x65\x73\x73","\x43\x68\x61\x74","\x43\x6F\x6E\x74\x61\x63\x74\x20\x75\x73","\x3C\x73\x74\x72\x6F\x6E\x67\x3E\x57\x65\x27\x72\x65\x20\x6E\x6F\x74\x20\x6F\x6E\x6C\x69\x6E\x65\x2E\x3C\x2F\x73\x74\x72\x6F\x6E\x67\x3E\x3C\x62\x72\x20\x2F\x3E\x49\x74\x20\x64\x6F\x65\x73\x6E\x27\x74\x20\x6D\x65\x61\x6E\x20\x77\x65\x27\x72\x65\x20\x6E\x6F\x74\x20\x74\x68\x65\x72\x65\x20\x74\x6F\x20\x68\x65\x6C\x70\x20\x2D\x20\x6C\x65\x61\x76\x65\x20\x79\x6F\x75\x72\x20\x6D\x65\x73\x73\x61\x67\x65\x20\x62\x65\x6C\x6F\x77\x20\x61\x6E\x64\x20\x77\x65\x27\x6C\x6C\x20\x62\x65\x20\x69\x6E\x20\x74\x6F\x75\x63\x68\x20\x61\x73\x20\x73\x6F\x6F\x6E\x20\x61\x73\x20\x70\x6F\x73\x73\x69\x62\x6C\x65\x2E\x27","\x59\x6F\x75\x72\x20\x6D\x65\x73\x73\x61\x67\x65\x2E\x2E\x2E","\x4C\x65\x61\x76\x65\x20\x6D\x65\x73\x73\x61\x67\x65","\x43\x68\x61\x74\x57\x65\x62\x73\x69\x74\x65","\x46\x69\x6E\x69\x73\x68\x65\x64\x20\x70\x6F\x70\x75\x6C\x61\x74\x69\x6E\x67\x20\x76\x61\x72\x69\x61\x62\x6C\x65\x73","\x76\x61\x72\x69\x61\x62\x6C\x65\x31","\x56\x61\x72\x69\x61\x62\x6C\x65","\x46\x69\x6E\x69\x73\x68\x65\x64\x20\x70\x6F\x70\x75\x6C\x61\x74\x69\x6E\x67\x20\x63\x6F\x6E\x74\x65\x78\x74\x20\x76\x61\x72\x69\x61\x62\x6C\x65\x73","\x44\x65\x66\x61\x75\x6C\x74\x20\x63\x6F\x6E\x74\x65\x78\x74\x20\x28\x44\x4F\x20\x4E\x4F\x54\x20\x44\x45\x4C\x45\x54\x45\x29","\x69\x6E\x62\x6F\x75\x6E\x64\x2D\x66\x61\x78","\x6F\x75\x74\x62\x6F\x75\x6E\x64\x2D\x66\x61\x78","\x66\x72\x6F\x6D\x2D\x76\x6F\x69\x63\x65\x6D\x61\x69\x6C","\x56\x6F\x69\x63\x65\x43\x6F\x6E\x74\x65\x78\x74","\x46\x69\x6E\x69\x73\x68\x65\x64\x20\x70\x6F\x70\x75\x6C\x61\x74\x69\x6E\x67\x20\x6D\x6F\x68\x20\x76\x61\x72\x69\x61\x62\x6C\x65\x73","\x64\x65\x66\x61\x75\x6C\x74","\x66\x69\x6C\x65\x73","\x76\x61\x72\x2F\x6C\x69\x62\x2F\x61\x73\x74\x65\x72\x69\x73\x6B\x2F\x6D\x6F\x68","\x61\x6C\x70\x68\x61","\x77\x61\x76","\x56\x6F\x69\x63\x65\x4D\x75\x73\x69\x63\x4F\x6E\x48\x6F\x6C\x64","\x2F\x76\x61\x72\x2F\x6F\x70\x74\x2F\x6D\x6F\x74\x69\x6F\x6E\x2F\x73\x65\x72\x76\x65\x72\x2F\x66\x69\x6C\x65\x73\x2F\x73\x6F\x75\x6E\x64\x73\x2F\x63\x6F\x6E\x76\x65\x72\x74\x65\x64","\x53\x65\x74\x74\x69\x6E\x67","\x4D\x6F\x74\x69\x6F\x6E\x20\x44\x61\x73\x68\x62\x6F\x61\x72\x64","\x63\x6F\x6C\x2D\x6D\x64\x2D\x34","\x63\x6C\x6F\x63\x6B","\x43\x6C\x6F\x63\x6B","\x68\x68\x3A\x6D\x6D\x3A\x73\x73\x20\x61","\x64\x64\x64\x64\x2C\x20\x4D\x4D\x4D\x4D\x20\x44\x6F\x20\x59\x59\x59\x59","\x63\x6F\x6C\x2D\x6D\x64\x2D\x38","\x69\x66\x72\x61\x6D\x65","\x49\x66\x72\x61\x6D\x65","\x68\x74\x74\x70\x73\x3A\x2F\x2F\x64\x65\x6D\x6F\x2E\x78\x63\x61\x6C\x6C\x79\x2E\x63\x6F\x6D\x2F\x73\x68\x6F\x70\x2F","\x73\x74\x72\x69\x6E\x67\x69\x66\x79","\x44\x61\x73\x68\x62\x6F\x61\x72\x64","\x5A\x65\x6E\x64\x65\x73\x6B","\x31\x2E\x30\x2E\x30","\x58\x65\x6E\x69\x61\x4C\x41\x42\x20\x73\x2E\x72\x2E\x6C\x2E","\x61\x73\x73\x65\x74\x73\x2F\x69\x6D\x61\x67\x65\x73\x2F\x6D\x65\x64\x69\x61\x2F\x7A\x65\x6E\x64\x65\x73\x6B\x32\x2E\x70\x6E\x67","\x7A\x65\x6E\x64\x65\x73\x6B","\x53\x74\x61\x72\x74\x20\x75\x73\x69\x6E\x67\x20\x78\x43\x41\x4C\x4C\x59\x20\x2D\x20\x5A\x65\x6E\x64\x65\x73\x6B\x20\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x3A\x20\x41\x75\x74\x6F\x2D\x47\x65\x6E\x65\x72\x61\x74\x65\x64\x20\x54\x69\x63\x6B\x65\x74\x73\x2C\x20\x66\x75\x6C\x6C\x79\x20\x63\x75\x73\x74\x6F\x6D\x69\x7A\x61\x62\x6C\x65\x20\x63\x6F\x6D\x6D\x65\x6E\x74\x73\x2C\x20\x43\x75\x73\x74\x6F\x6D\x20\x46\x69\x65\x6C\x64\x73\x20\x6D\x61\x6E\x61\x67\x65\x6D\x65\x6E\x74\x2C\x20\x54\x61\x67\x20\x73\x75\x70\x70\x6F\x72\x74\x20\x61\x6E\x64\x20\x53\x69\x6D\x70\x6C\x65\x20\x53\x65\x74\x75\x70","\x68\x74\x74\x70\x73\x3A\x2F\x2F\x77\x69\x6B\x69\x2E\x78\x63\x61\x6C\x6C\x79\x6D\x6F\x74\x69\x6F\x6E\x2E\x63\x6F\x6D\x2F\x64\x69\x73\x70\x6C\x61\x79\x2F\x58\x4D\x44\x2F\x5A\x65\x6E\x64\x65\x73\x6B\x2B\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E","\x53\x61\x6C\x65\x73\x66\x6F\x72\x63\x65","\x61\x73\x73\x65\x74\x73\x2F\x69\x6D\x61\x67\x65\x73\x2F\x6D\x65\x64\x69\x61\x2F\x73\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x32\x2E\x70\x6E\x67","\x73\x61\x6C\x65\x73\x66\x6F\x72\x63\x65","\x53\x74\x61\x72\x74\x20\x75\x73\x69\x6E\x67\x20\x78\x43\x41\x4C\x4C\x59\x20\x2D\x20\x53\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x20\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x3A\x20\x41\x75\x74\x6F\x2D\x47\x65\x6E\x65\x72\x61\x74\x65\x64\x20\x54\x61\x73\x6B\x73\x2C\x20\x66\x75\x6C\x6C\x79\x20\x63\x75\x73\x74\x6F\x6D\x69\x7A\x61\x62\x6C\x65\x20\x63\x6F\x6D\x6D\x65\x6E\x74\x73\x2C\x20\x43\x75\x73\x74\x6F\x6D\x20\x46\x69\x65\x6C\x64\x73\x20\x6D\x61\x6E\x61\x67\x65\x6D\x65\x6E\x74\x20\x61\x6E\x64\x20\x4F\x70\x65\x6E\x43\x54\x49\x20\x73\x75\x70\x70\x6F\x72\x74","\x68\x74\x74\x70\x73\x3A\x2F\x2F\x77\x69\x6B\x69\x2E\x78\x63\x61\x6C\x6C\x79\x6D\x6F\x74\x69\x6F\x6E\x2E\x63\x6F\x6D\x2F\x64\x69\x73\x70\x6C\x61\x79\x2F\x58\x4D\x44\x2F\x53\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x2B\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E","\x69\x46\x72\x61\x6D\x65","\x61\x73\x73\x65\x74\x73\x2F\x69\x6D\x61\x67\x65\x73\x2F\x6D\x65\x64\x69\x61\x2F\x69\x66\x72\x61\x6D\x65\x2E\x70\x6E\x67","\x53\x74\x61\x72\x74\x20\x75\x73\x69\x6E\x67\x20\x69\x46\x72\x61\x6D\x65\x20\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x3A\x20\x65\x6E\x61\x62\x6C\x65\x20\x79\x6F\x75\x72\x20\x61\x67\x65\x6E\x74\x73\x20\x74\x6F\x20\x76\x69\x65\x77\x20\x65\x78\x74\x65\x72\x6E\x61\x6C\x20\x70\x61\x67\x65\x73\x20\x28\x6C\x69\x6B\x65\x20\x79\x6F\x75\x72\x20\x43\x52\x4D\x29\x20\x64\x69\x72\x65\x63\x74\x6C\x79\x20\x66\x72\x6F\x6D\x20\x4D\x6F\x74\x69\x6F\x6E\x20\x47\x55\x49","\x68\x74\x74\x70\x73\x3A\x2F\x2F\x77\x69\x6B\x69\x2E\x78\x63\x61\x6C\x6C\x79\x6D\x6F\x74\x69\x6F\x6E\x2E\x63\x6F\x6D\x2F\x64\x69\x73\x70\x6C\x61\x79\x2F\x58\x4D\x44\x2F\x69\x46\x72\x61\x6D\x65\x2B\x49\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E","\x44\x65\x73\x6B\x2E\x63\x6F\x6D","\x61\x73\x73\x65\x74\x73\x2F\x69\x6D\x61\x67\x65\x73\x2F\x6D\x65\x64\x69\x61\x2F\x64\x65\x73\x6B\x32\x2E\x70\x6E\x67","\x64\x65\x73\x6B","\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E\x20\x66\x6F\x72\x20\x44\x65\x73\x6B\x2E\x63\x6F\x6D\x20\x61\x73\x64\x6E\x76\x6C\x73\x64\x62\x6A\x76\x20\x73\x61\x65\x6B\x6C\x62\x76\x71\x77\x6F\x56\x42\x51","\x46\x72\x65\x73\x68\x64\x65\x73\x6B","\x61\x73\x73\x65\x74\x73\x2F\x69\x6D\x61\x67\x65\x73\x2F\x6D\x65\x64\x69\x61\x2F\x66\x72\x65\x73\x68\x64\x65\x73\x6B\x2E\x70\x6E\x67","\x66\x72\x65\x73\x68\x64\x65\x73\x6B","\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E\x20\x66\x6F\x72\x20\x46\x72\x65\x73\x68\x64\x65\x73\x6B","\x53\x75\x67\x61\x72\x43\x52\x4D","\x61\x73\x73\x65\x74\x73\x2F\x69\x6D\x61\x67\x65\x73\x2F\x6D\x65\x64\x69\x61\x2F\x73\x75\x67\x61\x72\x63\x72\x6D\x32\x2E\x70\x6E\x67","\x73\x75\x67\x61\x72\x63\x72\x6D","\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E\x20\x66\x6F\x72\x20\x53\x75\x67\x61\x72\x43\x52\x4D","\x45\x72\x72\x6F\x72\x20\x70\x6F\x70\x75\x6C\x61\x74\x69\x6E\x67\x20\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x73\x3A","\x46\x69\x6E\x69\x73\x68\x65\x64\x20\x70\x6F\x70\x75\x6C\x61\x74\x69\x6E\x67\x20\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x73","\x73\x74\x61\x74\x65","\x49\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E","\x51\x75\x65\x75\x65\x20\x2D\x20\x44\x65\x74\x61\x69\x6C\x73","\x6A\x34\x5F\x33","\x72\x65\x70\x6F\x72\x74\x5F\x71\x75\x65\x75\x65\x5F\x68\x69\x73\x74\x6F\x72\x79","\x7B\x22\x67\x72\x6F\x75\x70\x22\x3A\x7B\x22\x6F\x70\x65\x72\x61\x74\x6F\x72\x22\x3A\x22\x41\x4E\x44\x22\x2C\x22\x72\x75\x6C\x65\x73\x22\x3A\x5B\x5D\x7D\x7D","\x44\x65\x74\x61\x69\x6C\x73","\x43\x61\x6C\x6C\x73\x20\x64\x65\x74\x61\x69\x6C\x73\x20\x28\x63\x64\x72\x29","\x6A\x32\x30\x5F\x31","\x72\x65\x70\x6F\x72\x74\x5F\x63\x61\x6C\x6C\x5F\x68\x69\x73\x74\x6F\x72\x79","\x4F\x75\x74\x62\x6F\x75\x6E\x64","\x4D\x61\x6E\x75\x61\x6C\x20\x6F\x75\x74\x62\x6F\x75\x6E\x64\x20\x63\x61\x6C\x6C\x73\x20\x64\x65\x74\x61\x69\x6C","\x7B\x22\x67\x72\x6F\x75\x70\x22\x3A\x7B\x22\x6F\x70\x65\x72\x61\x74\x6F\x72\x22\x3A\x22\x41\x4E\x44\x22\x2C\x22\x72\x75\x6C\x65\x73\x22\x3A\x5B\x7B\x22\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x22\x3A\x22\x3D\x22\x2C\x22\x66\x69\x65\x6C\x64\x22\x3A\x22\x74\x79\x70\x65\x22\x2C\x22\x76\x61\x6C\x75\x65\x22\x3A\x22\x6F\x75\x74\x62\x6F\x75\x6E\x64\x22\x7D\x5D\x7D\x7D","\x43\x61\x6C\x6C\x73\x20\x62\x79\x20\x51\x75\x65\x75\x65","\x6A\x34\x5F\x37","\x6A\x34\x5F\x35","\x72\x65\x70\x6F\x72\x74\x5F\x61\x67\x65\x6E\x74\x5F\x68\x69\x73\x74\x6F\x72\x79","\x7B\x22\x67\x72\x6F\x75\x70\x22\x3A\x7B\x22\x6F\x70\x65\x72\x61\x74\x6F\x72\x22\x3A\x22\x41\x4E\x44\x22\x2C\x22\x72\x75\x6C\x65\x73\x22\x3A\x5B\x7B\x22\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x22\x3A\x22\x3D\x22\x2C\x22\x66\x69\x65\x6C\x64\x22\x3A\x22\x61\x67\x65\x6E\x74\x63\x6F\x6D\x70\x6C\x65\x74\x65\x22\x2C\x22\x76\x61\x6C\x75\x65\x22\x3A\x22\x31\x22\x7D\x5D\x7D\x7D","\x43\x61\x6C\x6C\x73\x20\x62\x79\x20\x41\x67\x65\x6E\x74","\x41\x6E\x73\x77\x65\x72\x20\x54\x69\x6D\x65\x20\x62\x79\x20\x51\x75\x65\x75\x65","\x44\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74\x69\x6F\x6E\x20\x43\x61\x75\x73\x65","\x6A\x34\x5F\x36","\x7B\x22\x67\x72\x6F\x75\x70\x22\x3A\x7B\x22\x6F\x70\x65\x72\x61\x74\x6F\x72\x22\x3A\x22\x41\x4E\x44\x22\x2C\x22\x72\x75\x6C\x65\x73\x22\x3A\x5B\x7B\x22\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x22\x3A\x22\x3D\x22\x2C\x22\x66\x69\x65\x6C\x64\x22\x3A\x22\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x63\x6F\x6D\x70\x6C\x65\x74\x65\x22\x2C\x22\x76\x61\x6C\x75\x65\x22\x3A\x22\x30\x22\x7D\x5D\x7D\x7D","\x55\x6E\x61\x6E\x73\x77\x65\x72\x65\x64\x20\x62\x79\x20\x51\x75\x65\x75\x65","\x45\x78\x69\x74\x20\x43\x61\x75\x73\x65","\x7B\x22\x67\x72\x6F\x75\x70\x22\x3A\x7B\x22\x6F\x70\x65\x72\x61\x74\x6F\x72\x22\x3A\x22\x41\x4E\x44\x22\x2C\x22\x72\x75\x6C\x65\x73\x22\x3A\x5B\x7B\x22\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x22\x3A\x22\x3D\x22\x2C\x22\x66\x69\x65\x6C\x64\x22\x3A\x22\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x65\x78\x69\x74\x22\x2C\x22\x76\x61\x6C\x75\x65\x22\x3A\x22\x31\x22\x7D\x5D\x7D\x7D","\x41\x62\x61\x6E\x64\x6F\x6E\x20\x54\x69\x6D\x65\x20\x62\x79\x20\x51\x75\x65\x75\x65","\x7B\x22\x67\x72\x6F\x75\x70\x22\x3A\x7B\x22\x6F\x70\x65\x72\x61\x74\x6F\x72\x22\x3A\x22\x41\x4E\x44\x22\x2C\x22\x72\x75\x6C\x65\x73\x22\x3A\x5B\x7B\x22\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x22\x3A\x22\x3D\x22\x2C\x22\x66\x69\x65\x6C\x64\x22\x3A\x22\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x61\x62\x61\x6E\x64\x6F\x6E\x22\x2C\x22\x76\x61\x6C\x75\x65\x22\x3A\x22\x31\x22\x7D\x5D\x7D\x7D","\x43\x61\x6C\x6C\x73\x20\x62\x79\x20\x44\x61\x74\x65","\x43\x61\x6C\x6C\x73\x20\x62\x79\x20\x48\x6F\x75\x72","\x43\x61\x6C\x6C\x73\x20\x62\x79\x20\x44\x61\x79","\x43\x61\x6C\x6C\x73\x20\x62\x79\x20\x54\x79\x70\x65","\x4F\x75\x74\x62\x6F\x75\x6E\x64\x20\x43\x61\x6C\x6C\x73\x20\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x4F\x75\x74\x62\x6F\x75\x6E\x64\x20\x63\x61\x6C\x6C\x73\x20\x67\x72\x6F\x75\x70\x65\x64\x20\x62\x79\x20\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x50\x61\x75\x73\x65\x20\x54\x69\x6D\x65","\x6A\x34\x5F\x34","\x72\x65\x70\x6F\x72\x74\x5F\x6D\x65\x6D\x62\x65\x72\x5F\x68\x69\x73\x74\x6F\x72\x79","\x7B\x22\x67\x72\x6F\x75\x70\x22\x3A\x7B\x22\x6F\x70\x65\x72\x61\x74\x6F\x72\x22\x3A\x22\x41\x4E\x44\x22\x2C\x22\x72\x75\x6C\x65\x73\x22\x3A\x5B\x7B\x22\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x22\x3A\x22\x3D\x22\x2C\x22\x66\x69\x65\x6C\x64\x22\x3A\x22\x74\x79\x70\x65\x22\x2C\x22\x76\x61\x6C\x75\x65\x22\x3A\x22\x50\x41\x55\x53\x45\x22\x7D\x2C\x7B\x22\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x22\x3A\x22\x3D\x22\x2C\x22\x66\x69\x65\x6C\x64\x22\x3A\x22\x63\x68\x61\x6E\x6E\x65\x6C\x22\x2C\x22\x76\x61\x6C\x75\x65\x22\x3A\x22\x76\x6F\x69\x63\x65\x22\x7D\x5D\x7D\x7D","\x4C\x6F\x67\x69\x6E\x20\x54\x69\x6D\x65","\x7B\x22\x67\x72\x6F\x75\x70\x22\x3A\x7B\x22\x6F\x70\x65\x72\x61\x74\x6F\x72\x22\x3A\x22\x41\x4E\x44\x22\x2C\x22\x72\x75\x6C\x65\x73\x22\x3A\x5B\x7B\x22\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x22\x3A\x22\x3D\x22\x2C\x22\x66\x69\x65\x6C\x64\x22\x3A\x22\x74\x79\x70\x65\x22\x2C\x22\x76\x61\x6C\x75\x65\x22\x3A\x22\x4C\x4F\x47\x49\x4E\x22\x7D\x2C\x7B\x22\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x22\x3A\x22\x3D\x22\x2C\x22\x66\x69\x65\x6C\x64\x22\x3A\x22\x63\x68\x61\x6E\x6E\x65\x6C\x22\x2C\x22\x76\x61\x6C\x75\x65\x22\x3A\x22\x76\x6F\x69\x63\x65\x22\x7D\x5D\x7D\x7D","\x57\x65\x62\x73\x69\x74\x65\x20\x53\x75\x6D\x6D\x61\x72\x79","\x6A\x34\x5F\x31","\x72\x65\x70\x6F\x72\x74\x5F\x63\x68\x61\x74\x5F\x73\x65\x73\x73\x69\x6F\x6E\x5F\x68\x69\x73\x74\x6F\x72\x79","\x53\x65\x73\x73\x69\x6F\x6E\x20\x44\x65\x74\x61\x69\x6C","\x43\x68\x61\x74\x20\x62\x79\x20\x41\x67\x65\x6E\x74","\x7B\x22\x67\x72\x6F\x75\x70\x22\x3A\x7B\x22\x6F\x70\x65\x72\x61\x74\x6F\x72\x22\x3A\x22\x41\x4E\x44\x22\x2C\x22\x72\x75\x6C\x65\x73\x22\x3A\x5B\x7B\x22\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x22\x3A\x22\x3D\x22\x2C\x22\x66\x69\x65\x6C\x64\x22\x3A\x22\x63\x6F\x6D\x70\x6C\x65\x74\x65\x22\x2C\x22\x76\x61\x6C\x75\x65\x22\x3A\x22\x31\x22\x7D\x5D\x7D\x7D","\x43\x68\x61\x74\x20\x62\x79\x20\x51\x75\x65\x75\x65","\x7B\x22\x67\x72\x6F\x75\x70\x22\x3A\x7B\x22\x6F\x70\x65\x72\x61\x74\x6F\x72\x22\x3A\x22\x41\x4E\x44\x22\x2C\x22\x72\x75\x6C\x65\x73\x22\x3A\x5B\x7B\x22\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x22\x3A\x22\x3D\x22\x2C\x22\x66\x69\x65\x6C\x64\x22\x3A\x22\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x22\x2C\x22\x76\x61\x6C\x75\x65\x22\x3A\x22\x71\x75\x65\x75\x65\x22\x7D\x5D\x7D\x7D","\x41\x67\x65\x6E\x74\x73\x20\x73\x74\x61\x74\x75\x73\x20\x64\x65\x74\x61\x69\x6C\x73","\x7B\x22\x67\x72\x6F\x75\x70\x22\x3A\x7B\x22\x6F\x70\x65\x72\x61\x74\x6F\x72\x22\x3A\x22\x41\x4E\x44\x22\x2C\x22\x72\x75\x6C\x65\x73\x22\x3A\x5B\x7B\x22\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x22\x3A\x22\x3D\x22\x2C\x22\x66\x69\x65\x6C\x64\x22\x3A\x22\x63\x68\x61\x6E\x6E\x65\x6C\x22\x2C\x22\x76\x61\x6C\x75\x65\x22\x3A\x22\x76\x6F\x69\x63\x65\x22\x7D\x5D\x7D\x7D","\x53\x75\x6D\x6D\x61\x72\x79","\x43\x61\x6C\x6C\x79\x53\x71\x75\x61\x72\x65\x20\x53\x75\x6D\x6D\x61\x72\x79","\x6A\x31\x31\x32\x5F\x31","\x72\x65\x70\x6F\x72\x74\x5F\x73\x71\x75\x61\x72\x65\x5F\x68\x69\x73\x74\x6F\x72\x79","\x42\x6C\x6F\x63\x6B\x73","\x43\x61\x6C\x6C\x79\x53\x71\x75\x61\x72\x65\x20\x42\x6C\x6F\x63\x6B\x73","\x72\x65\x70\x6F\x72\x74\x5F\x73\x71\x75\x61\x72\x65\x5F\x64\x65\x74\x61\x69\x6C\x73\x5F\x68\x69\x73\x74\x6F\x72\x79","\x4C\x6F\x67\x69\x6E\x20\x44\x65\x74\x61\x69\x6C\x73","\x6A\x32\x34\x5F\x31","\x7B\x22\x67\x72\x6F\x75\x70\x22\x3A\x7B\x22\x6F\x70\x65\x72\x61\x74\x6F\x72\x22\x3A\x22\x41\x4E\x44\x22\x2C\x22\x72\x75\x6C\x65\x73\x22\x3A\x5B\x7B\x22\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x22\x3A\x22\x3D\x22\x2C\x22\x66\x69\x65\x6C\x64\x22\x3A\x22\x63\x68\x61\x6E\x6E\x65\x6C\x22\x2C\x22\x76\x61\x6C\x75\x65\x22\x3A\x22\x76\x6F\x69\x63\x65\x22\x7D\x2C\x7B\x22\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x22\x3A\x22\x3D\x22\x2C\x22\x66\x69\x65\x6C\x64\x22\x3A\x22\x74\x79\x70\x65\x22\x2C\x22\x76\x61\x6C\x75\x65\x22\x3A\x22\x4C\x4F\x47\x49\x4E\x22\x7D\x5D\x7D\x7D","\x50\x61\x75\x73\x65\x20\x54\x69\x6D\x65\x20\x62\x79\x20\x43\x68\x61\x6E\x6E\x65\x6C","","\x7B\x22\x67\x72\x6F\x75\x70\x22\x3A\x7B\x22\x6F\x70\x65\x72\x61\x74\x6F\x72\x22\x3A\x22\x41\x4E\x44\x22\x2C\x22\x72\x75\x6C\x65\x73\x22\x3A\x5B\x7B\x22\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x22\x3A\x22\x3D\x22\x2C\x22\x66\x69\x65\x6C\x64\x22\x3A\x22\x74\x79\x70\x65\x22\x2C\x22\x76\x61\x6C\x75\x65\x22\x3A\x22\x50\x41\x55\x53\x45\x22\x7D\x5D\x7D\x7D","\x50\x61\x75\x73\x65\x20\x44\x65\x74\x61\x69\x6C\x73","\x7B\x22\x67\x72\x6F\x75\x70\x22\x3A\x7B\x22\x6F\x70\x65\x72\x61\x74\x6F\x72\x22\x3A\x22\x41\x4E\x44\x22\x2C\x22\x72\x75\x6C\x65\x73\x22\x3A\x5B\x7B\x22\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x22\x3A\x22\x3D\x22\x2C\x22\x66\x69\x65\x6C\x64\x22\x3A\x22\x63\x68\x61\x6E\x6E\x65\x6C\x22\x2C\x22\x76\x61\x6C\x75\x65\x22\x3A\x22\x76\x6F\x69\x63\x65\x22\x7D\x2C\x7B\x22\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x22\x3A\x22\x3D\x22\x2C\x22\x66\x69\x65\x6C\x64\x22\x3A\x22\x74\x79\x70\x65\x22\x2C\x22\x76\x61\x6C\x75\x65\x22\x3A\x22\x50\x41\x55\x53\x45\x22\x7D\x5D\x7D\x7D","\x52\x61\x74\x69\x6E\x67\x20\x62\x79\x20\x41\x67\x65\x6E\x74","\x6A\x32\x30\x5F\x33","\x76\x6F\x69\x63\x65\x5F\x72\x65\x63\x6F\x72\x64\x69\x6E\x67\x73","\x52\x61\x74\x69\x6E\x67\x20\x62\x79\x20\x51\x75\x65\x75\x65","\x7B\x22\x67\x72\x6F\x75\x70\x22\x3A\x7B\x22\x6F\x70\x65\x72\x61\x74\x6F\x72\x22\x3A\x22\x41\x4E\x44\x22\x2C\x22\x72\x75\x6C\x65\x73\x22\x3A\x5B\x7B\x22\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x22\x3A\x22\x49\x53\x20\x4E\x4F\x54\x20\x45\x4D\x50\x54\x59\x22\x2C\x22\x66\x69\x65\x6C\x64\x22\x3A\x22\x71\x75\x65\x75\x65\x22\x2C\x22\x76\x61\x6C\x75\x65\x22\x3A\x22\x22\x2C\x22\x72\x65\x71\x75\x69\x72\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x7D\x5D\x7D\x7D","\x51\x75\x65\x75\x65\x20\x2D\x20\x43\x61\x6C\x6C\x73","\x41\x6E\x73\x77\x65\x72\x20\x54\x69\x6D\x65\x20\x62\x79\x20\x48\x6F\x75\x72","\x52\x65\x63\x65\x69\x76\x65\x64\x20\x65\x6D\x61\x69\x6C\x73\x20\x62\x79\x20\x61\x63\x63\x6F\x75\x6E\x74","\x53\x75\x6D\x6D\x61\x72\x79\x20\x6F\x66\x20\x74\x68\x65\x20\x65\x6D\x61\x69\x6C\x73\x20\x61\x63\x63\x65\x70\x74\x65\x64\x20\x62\x79\x20\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x20\x66\x6F\x72\x20\x65\x61\x63\x68\x20\x61\x63\x63\x6F\x75\x6E\x74","\x6A\x34\x5F\x32","\x72\x65\x70\x6F\x72\x74\x5F\x6D\x61\x69\x6C\x5F\x73\x65\x73\x73\x69\x6F\x6E\x5F\x68\x69\x73\x74\x6F\x72\x79","\x52\x65\x63\x65\x69\x76\x65\x64\x20\x65\x6D\x61\x69\x6C\x73\x20\x62\x79\x20\x71\x75\x65\x75\x65","\x53\x75\x6D\x6D\x61\x72\x79\x20\x6F\x66\x20\x72\x65\x63\x65\x69\x76\x65\x64\x20\x65\x6D\x61\x69\x6C\x20\x62\x79\x20\x71\x75\x65\x75\x65","\x7B\x22\x67\x72\x6F\x75\x70\x22\x3A\x7B\x22\x6F\x70\x65\x72\x61\x74\x6F\x72\x22\x3A\x22\x41\x4E\x44\x22\x2C\x22\x72\x75\x6C\x65\x73\x22\x3A\x5B\x7B\x22\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x22\x3A\x22\x3D\x22\x2C\x22\x66\x69\x65\x6C\x64\x22\x3A\x22\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x22\x2C\x22\x76\x61\x6C\x75\x65\x22\x3A\x22\x71\x75\x65\x75\x65\x22\x2C\x22\x72\x65\x71\x75\x69\x72\x65\x64\x22\x3A\x74\x72\x75\x65\x7D\x5D\x7D\x7D","\x41\x63\x63\x65\x70\x74\x65\x64\x20\x65\x6D\x61\x69\x6C\x73\x20\x62\x79\x20\x61\x67\x65\x6E\x74","\x53\x75\x6D\x6D\x61\x72\x79\x20\x6F\x66\x20\x61\x63\x63\x65\x70\x74\x65\x64\x20\x65\x6D\x61\x69\x6C\x20\x62\x79\x20\x61\x67\x65\x6E\x74","\x7B\x22\x67\x72\x6F\x75\x70\x22\x3A\x7B\x22\x6F\x70\x65\x72\x61\x74\x6F\x72\x22\x3A\x22\x41\x4E\x44\x22\x2C\x22\x72\x75\x6C\x65\x73\x22\x3A\x5B\x7B\x22\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x22\x3A\x22\x3D\x22\x2C\x22\x66\x69\x65\x6C\x64\x22\x3A\x22\x74\x69\x6D\x65\x6F\x75\x74\x22\x2C\x22\x76\x61\x6C\x75\x65\x22\x3A\x22\x30\x22\x2C\x22\x72\x65\x71\x75\x69\x72\x65\x64\x22\x3A\x74\x72\x75\x65\x7D\x5D\x7D\x7D","\x4D\x65\x73\x73\x61\x67\x65\x73\x20\x53\x75\x6D\x6D\x61\x72\x79\x20\x62\x79\x20\x44\x61\x74\x65","\x47\x6C\x6F\x62\x61\x6C\x20\x6D\x65\x73\x73\x61\x67\x65\x73\x20\x73\x75\x6D\x6D\x61\x72\x79\x20\x62\x79\x20\x64\x61\x74\x65","\x6D\x61\x69\x6C\x5F\x6D\x65\x73\x73\x61\x67\x65\x73","\x7B\x22\x67\x72\x6F\x75\x70\x22\x3A\x7B\x22\x6F\x70\x65\x72\x61\x74\x6F\x72\x22\x3A\x22\x41\x4E\x44\x22\x2C\x22\x72\x75\x6C\x65\x73\x22\x3A\x5B\x7B\x22\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x22\x3A\x22\x3D\x22\x2C\x22\x66\x69\x65\x6C\x64\x22\x3A\x22\x61\x75\x74\x6F\x22\x2C\x22\x76\x61\x6C\x75\x65\x22\x3A\x66\x61\x6C\x73\x65\x7D\x5D\x7D\x7D","\x49\x6E\x74\x65\x72\x61\x63\x74\x69\x6F\x6E\x73\x20\x64\x65\x74\x61\x69\x6C","\x44\x65\x74\x61\x69\x6C\x65\x64\x20\x72\x65\x70\x6F\x72\x74\x20\x61\x62\x6F\x75\x74\x20\x74\x68\x65\x20\x69\x6E\x74\x65\x72\x61\x63\x74\x69\x6F\x6E\x73","\x6D\x61\x69\x6C\x5F\x72\x6F\x6F\x6D\x73","\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x20\x53\x75\x6D\x6D\x61\x72\x79","\x43\x6C\x6F\x73\x65\x64\x20\x69\x6E\x74\x65\x72\x61\x63\x74\x69\x6F\x6E\x73\x20\x62\x79\x20\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x20\x28\x66\x69\x6C\x74\x65\x72\x65\x64\x20\x62\x79\x20\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x20\x6E\x6F\x74\x20\x6E\x75\x6C\x6C\x29","\x7B\x22\x67\x72\x6F\x75\x70\x22\x3A\x7B\x22\x6F\x70\x65\x72\x61\x74\x6F\x72\x22\x3A\x22\x41\x4E\x44\x22\x2C\x22\x72\x75\x6C\x65\x73\x22\x3A\x5B\x7B\x22\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x22\x3A\x22\x49\x53\x20\x4E\x4F\x54\x20\x4E\x55\x4C\x4C\x22\x2C\x22\x66\x69\x65\x6C\x64\x22\x3A\x22\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x22\x2C\x22\x76\x61\x6C\x75\x65\x22\x3A\x22\x22\x2C\x22\x72\x65\x71\x75\x69\x72\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x7D\x5D\x7D\x7D","\x43\x6C\x6F\x73\x65\x64\x20\x69\x6E\x74\x65\x72\x61\x63\x74\x69\x6F\x6E\x73\x20\x62\x79\x20\x64\x61\x74\x65","\x53\x75\x6D\x6D\x61\x72\x79\x20\x6F\x66\x20\x63\x6C\x6F\x73\x65\x64\x20\x69\x6E\x74\x65\x72\x61\x63\x74\x69\x6F\x6E\x73\x20\x67\x72\x6F\x75\x70\x65\x64\x20\x62\x79\x20\x64\x61\x74\x65\x20\x2B\x20\x61\x76\x65\x72\x61\x67\x65\x20\x68\x61\x6E\x64\x6C\x65\x20\x74\x69\x6D\x65\x20\x28\x66\x72\x6F\x6D\x20\x77\x68\x65\x6E\x20\x74\x68\x65\x20\x66\x69\x72\x73\x74\x20\x65\x6D\x61\x69\x6C\x20\x61\x72\x72\x69\x76\x65\x64\x20\x74\x6F\x20\x77\x68\x65\x6E\x20\x74\x68\x65\x20\x69\x6E\x74\x65\x72\x61\x63\x74\x69\x6F\x6E\x20\x68\x61\x73\x20\x62\x65\x65\x6E\x20\x63\x6C\x6F\x73\x65\x64\x29","\x7B\x22\x67\x72\x6F\x75\x70\x22\x3A\x7B\x22\x6F\x70\x65\x72\x61\x74\x6F\x72\x22\x3A\x22\x4F\x52\x22\x2C\x22\x72\x75\x6C\x65\x73\x22\x3A\x5B\x7B\x22\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x22\x3A\x22\x3D\x22\x2C\x22\x66\x69\x65\x6C\x64\x22\x3A\x22\x73\x74\x61\x74\x75\x73\x22\x2C\x22\x76\x61\x6C\x75\x65\x22\x3A\x22\x27\x43\x4C\x4F\x53\x45\x44\x27\x22\x2C\x22\x72\x65\x71\x75\x69\x72\x65\x64\x22\x3A\x74\x72\x75\x65\x7D\x5D\x7D\x7D","\x51\x75\x65\x75\x65\x20\x2D\x20\x54\x61\x6C\x6B\x54\x69\x6D\x65","\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x63\x6F\x6D\x70\x6C\x65\x74\x65\x41\x74\x29\x2D\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6C\x65\x61\x76\x65\x41\x74\x29","\x51\x75\x65\x75\x65\x20\x2D\x20\x41\x62\x61\x6E\x64\x6F\x6E\x20\x54\x69\x6D\x65","\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x41\x62\x61\x6E\x64\x6F\x6E\x41\x74\x29\x2D\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6A\x6F\x69\x6E\x41\x74\x29","\x41\x62\x61\x6E\x64\x6F\x6E\x65\x64\x20\x3C\x31\x30\x73","\x43\x4F\x55\x4E\x54\x28\x49\x46\x28\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x41\x62\x61\x6E\x64\x6F\x6E\x41\x74\x29\x2D\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6A\x6F\x69\x6E\x41\x74\x29\x20\x3C\x31\x30\x2C\x31\x2C\x4E\x55\x4C\x4C\x29\x29","\x43\x6F\x75\x6E\x74\x20\x6F\x66\x20\x61\x62\x61\x6E\x64\x6F\x6E\x65\x64\x20\x63\x61\x6C\x6C\x73\x20\x77\x69\x74\x68\x69\x6E\x20\x31\x30\x20\x73\x65\x63\x6F\x6E\x64\x73\x20\x28\x53\x68\x6F\x72\x74\x20\x43\x61\x6C\x6C\x73\x29","\x51\x75\x65\x75\x65\x20\x2D\x20\x41\x6E\x73\x77\x65\x72\x54\x69\x6D\x65","\x49\x46\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x63\x6F\x6D\x70\x6C\x65\x74\x65\x3D\x31\x2C\x68\x6F\x6C\x64\x74\x69\x6D\x65\x2C\x6E\x75\x6C\x6C\x29","\x41\x6E\x73\x77\x65\x72\x65\x64\x20\x3C\x20\x31\x30\x73","\x43\x4F\x55\x4E\x54\x28\x49\x46\x28\x68\x6F\x6C\x64\x74\x69\x6D\x65\x3C\x31\x30\x2C\x31\x2C\x4E\x55\x4C\x4C\x29\x29","\x43\x6F\x75\x6E\x74\x20\x6F\x66\x20\x61\x6E\x73\x77\x65\x72\x65\x64\x20\x63\x61\x6C\x6C\x73\x20\x77\x69\x74\x68\x69\x6E\x20\x31\x30\x20\x73\x65\x63\x6F\x6E\x64\x73","\x41\x6E\x73\x77\x65\x72\x65\x64\x20\x31\x30\x2D\x32\x30\x73","\x43\x4F\x55\x4E\x54\x28\x49\x46\x28\x68\x6F\x6C\x64\x74\x69\x6D\x65\x20\x3E\x3D\x31\x30\x20\x41\x4E\x44\x20\x68\x6F\x6C\x64\x74\x69\x6D\x65\x20\x3C\x32\x30\x2C\x31\x2C\x4E\x55\x4C\x4C\x29\x29","\x43\x6F\x75\x6E\x74\x20\x6F\x66\x20\x61\x6E\x73\x77\x65\x72\x65\x64\x20\x63\x61\x6C\x6C\x73\x20\x62\x65\x74\x77\x65\x65\x6E\x20\x31\x30\x20\x61\x6E\x64\x20\x32\x30\x20\x73\x65\x63\x6F\x6E\x64\x73","\x41\x6E\x73\x77\x65\x72\x65\x64\x20\x32\x30\x2D\x33\x30\x73","\x43\x4F\x55\x4E\x54\x28\x49\x46\x28\x68\x6F\x6C\x64\x74\x69\x6D\x65\x20\x3E\x3D\x32\x30\x20\x41\x4E\x44\x20\x68\x6F\x6C\x64\x74\x69\x6D\x65\x20\x3C\x33\x30\x2C\x31\x2C\x4E\x55\x4C\x4C\x29\x29","\x43\x6F\x75\x6E\x74\x20\x6F\x66\x20\x61\x6E\x73\x77\x65\x72\x65\x64\x20\x63\x61\x6C\x6C\x73\x20\x62\x65\x74\x77\x65\x65\x6E\x20\x32\x30\x20\x61\x6E\x64\x20\x33\x30\x20\x73\x65\x63\x6F\x6E\x64\x73","\x41\x6E\x73\x77\x65\x72\x65\x64\x20\x3E\x33\x30\x73","\x43\x4F\x55\x4E\x54\x28\x49\x46\x28\x68\x6F\x6C\x64\x74\x69\x6D\x65\x20\x3E\x3D\x33\x30\x2C\x31\x2C\x4E\x55\x4C\x4C\x29\x29","\x43\x6F\x75\x6E\x74\x20\x6F\x66\x20\x61\x6E\x73\x77\x65\x72\x65\x64\x20\x63\x61\x6C\x6C\x73\x20\x6F\x76\x65\x72\x20\x33\x30\x20\x73\x65\x63\x6F\x6E\x64\x73","\x51\x75\x65\x75\x65\x20\x2D\x20\x45\x78\x69\x74\x20\x54\x69\x6D\x65","\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x45\x78\x69\x74\x41\x74\x29\x2D\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6A\x6F\x69\x6E\x41\x74\x29","\x41\x62\x61\x6E\x64\x6F\x6E\x65\x64\x20\x31\x30\x2D\x36\x30\x73","\x43\x4F\x55\x4E\x54\x28\x49\x46\x28\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x41\x62\x61\x6E\x64\x6F\x6E\x41\x74\x29\x2D\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6A\x6F\x69\x6E\x41\x74\x29\x20\x3E\x3D\x31\x30\x20\x41\x4E\x44\x20\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x41\x62\x61\x6E\x64\x6F\x6E\x41\x74\x29\x2D\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6A\x6F\x69\x6E\x41\x74\x29\x20\x3C\x36\x30\x2C\x31\x2C\x4E\x55\x4C\x4C\x29\x29","\x43\x6F\x75\x6E\x74\x20\x6F\x66\x20\x61\x62\x61\x6E\x64\x6F\x6E\x65\x64\x20\x63\x61\x6C\x6C\x73\x20\x62\x65\x74\x77\x65\x65\x6E\x20\x31\x30\x20\x61\x6E\x64\x20\x36\x30\x20\x73\x65\x63\x6F\x6E\x64\x73","\x41\x62\x61\x6E\x64\x6F\x6E\x65\x64\x20\x36\x30\x2D\x31\x32\x30\x73","\x43\x4F\x55\x4E\x54\x28\x49\x46\x28\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x41\x62\x61\x6E\x64\x6F\x6E\x41\x74\x29\x2D\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6A\x6F\x69\x6E\x41\x74\x29\x20\x3E\x3D\x36\x30\x20\x41\x4E\x44\x20\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x41\x62\x61\x6E\x64\x6F\x6E\x41\x74\x29\x2D\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6A\x6F\x69\x6E\x41\x74\x29\x20\x3C\x31\x32\x30\x2C\x31\x2C\x4E\x55\x4C\x4C\x29\x29","\x43\x6F\x75\x6E\x74\x20\x6F\x66\x20\x61\x62\x61\x6E\x64\x6F\x6E\x65\x64\x20\x63\x61\x6C\x6C\x73\x20\x62\x65\x74\x77\x65\x65\x6E\x20\x36\x30\x20\x61\x6E\x64\x20\x31\x32\x30\x20\x73\x65\x63\x6F\x6E\x64\x73","\x51\x75\x65\x75\x65\x20\x2D\x20\x41\x62\x61\x6E\x64\x6F\x6E\x65\x64\x20\x3E\x31\x32\x30\x73","\x43\x4F\x55\x4E\x54\x28\x49\x46\x28\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x41\x62\x61\x6E\x64\x6F\x6E\x41\x74\x29\x2D\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6A\x6F\x69\x6E\x41\x74\x29\x20\x3E\x3D\x31\x32\x30\x2C\x31\x2C\x4E\x55\x4C\x4C\x29\x29","\x43\x6F\x75\x6E\x74\x20\x6F\x66\x20\x61\x62\x61\x6E\x64\x6F\x6E\x65\x64\x20\x63\x61\x6C\x6C\x73\x20\x6F\x76\x65\x72\x20\x31\x32\x30\x20\x73\x65\x63\x6F\x6E\x64\x73","\x51\x75\x65\x75\x65\x20\x2D\x20\x4A\x6F\x69\x6E\x44\x61\x74\x65","\x44\x41\x54\x45\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6A\x6F\x69\x6E\x61\x74\x29","\x45\x78\x74\x72\x61\x63\x74\x20\x74\x68\x65\x20\x64\x61\x74\x65\x20\x6F\x66\x20\x74\x68\x65\x20\x6A\x6F\x69\x6E\x20\x71\x75\x65\x75\x65","\x51\x75\x65\x75\x65\x20\x2D\x20\x4A\x6F\x69\x6E\x48\x6F\x75\x72","\x48\x4F\x55\x52\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6A\x6F\x69\x6E\x61\x74\x29","\x45\x78\x74\x72\x61\x63\x74\x20\x74\x68\x65\x20\x68\x6F\x75\x72\x20\x6F\x66\x20\x74\x68\x65\x20\x6A\x6F\x69\x6E\x20\x71\x75\x65\x75\x65","\x51\x75\x65\x75\x65\x20\x2D\x20\x4A\x6F\x69\x6E\x44\x61\x79","\x44\x41\x59\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6A\x6F\x69\x6E\x61\x74\x29","\x45\x78\x74\x72\x61\x63\x74\x20\x74\x68\x65\x20\x64\x61\x79\x20\x6F\x66\x20\x74\x68\x65\x20\x6A\x6F\x69\x6E\x20\x71\x75\x65\x75\x65","\x4D\x65\x6D\x62\x65\x72\x20\x2D\x20\x45\x76\x65\x6E\x74\x20\x44\x75\x72\x61\x74\x69\x6F\x6E","\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x65\x78\x69\x74\x41\x74\x29\x2D\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x65\x6E\x74\x65\x72\x41\x74\x29","\x4D\x65\x6D\x62\x65\x72\x20\x65\x76\x65\x6E\x74\x20\x64\x75\x72\x61\x74\x69\x6F\x6E\x20\x69\x6E\x20\x73\x65\x63\x6F\x6E\x64\x73","\x4D\x65\x6D\x62\x65\x72\x20\x2D\x20\x54\x6F\x74\x61\x6C\x20\x45\x76\x65\x6E\x74\x20\x44\x75\x72\x61\x74\x69\x6F\x6E","\x53\x45\x43\x5F\x54\x4F\x5F\x54\x49\x4D\x45\x28\x53\x55\x4D\x28\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x65\x78\x69\x74\x41\x74\x29\x2D\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x65\x6E\x74\x65\x72\x41\x74\x29\x29\x29","\x54\x6F\x74\x61\x6C\x20\x65\x76\x65\x6E\x74\x20\x64\x75\x72\x61\x74\x69\x6F\x6E","\x43\x68\x61\x74\x20\x2D\x20\x53\x65\x73\x73\x69\x6F\x6E\x20\x54\x69\x6D\x65","\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x63\x6F\x6D\x70\x6C\x65\x74\x65\x41\x74\x29\x2D\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x6C\x65\x61\x76\x65\x41\x74\x29","\x53\x65\x73\x73\x69\x6F\x6E\x20\x54\x69\x6D\x65","\x43\x68\x61\x74\x20\x2D\x20\x51\x75\x65\x75\x65","\x43\x4F\x55\x4E\x54\x28\x49\x46\x28\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x3D\x22\x71\x75\x65\x75\x65\x22\x2C\x31\x2C\x4E\x55\x4C\x4C\x29\x29","\x43\x68\x61\x74\x20\x71\x75\x65\x75\x65\x20\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x20\x63\x6F\x75\x6E\x74","\x43\x68\x61\x74\x20\x2D\x20\x41\x67\x65\x6E\x74","\x43\x4F\x55\x4E\x54\x28\x49\x46\x28\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x3D\x22\x61\x67\x65\x6E\x74\x22\x2C\x31\x2C\x4E\x55\x4C\x4C\x29\x29","\x43\x68\x61\x74\x20\x61\x67\x65\x6E\x74\x20\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x20\x63\x6F\x75\x6E\x74","\x43\x68\x61\x74\x20\x2D\x20\x41\x76\x67\x20\x53\x65\x73\x73\x69\x6F\x6E\x20\x54\x69\x6D\x65","\x52\x4F\x55\x4E\x44\x28\x41\x56\x47\x28\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x63\x6F\x6D\x70\x6C\x65\x74\x65\x41\x74\x29\x2D\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x6C\x65\x61\x76\x65\x41\x74\x29\x29\x29","\x41\x76\x65\x72\x61\x67\x65\x20\x73\x65\x73\x73\x69\x6F\x6E\x20\x74\x69\x6D\x65","\x4D\x65\x6D\x62\x65\x72\x20\x2D\x20\x45\x76\x65\x6E\x74\x20\x44\x75\x72\x61\x74\x69\x6F\x6E\x20\x28\x48\x48\x3A\x6D\x6D\x3A\x73\x73\x29","\x53\x45\x43\x5F\x54\x4F\x5F\x54\x49\x4D\x45\x28\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x65\x78\x69\x74\x41\x74\x29\x2D\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x65\x6E\x74\x65\x72\x41\x74\x29\x29","\x4D\x65\x6D\x62\x65\x72\x20\x65\x76\x65\x6E\x74\x73\x20\x64\x75\x72\x61\x74\x69\x6F\x6E\x20\x69\x6E\x20\x74\x69\x6D\x65\x20\x66\x6F\x72\x6D\x61\x74","\x53\x71\x75\x61\x72\x65\x20\x2D\x20\x44\x75\x72\x61\x74\x69\x6F\x6E","\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x6C\x65\x61\x76\x65\x41\x74\x29\x2D\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x6A\x6F\x69\x6E\x41\x74\x29","\x49\x56\x52\x20\x44\x75\x72\x61\x74\x69\x6F\x6E","\x51\x75\x65\x75\x65\x20\x2D\x20\x45\x6E\x64\x54\x69\x6D\x65\x20\x43\x61\x6C\x6C","\x43\x41\x53\x45\x20\x57\x48\x45\x4E\x20\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x63\x6F\x6D\x70\x6C\x65\x74\x65\x3D\x31\x20\x54\x48\x45\x4E\x20\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x63\x6F\x6D\x70\x6C\x65\x74\x65\x41\x74\x20\x45\x4C\x53\x45\x20\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x4C\x65\x61\x76\x65\x41\x74\x20\x45\x4E\x44","\x51\x75\x65\x75\x65\x20\x2D\x20\x43\x61\x6C\x6C\x73\x20\x52\x65\x73\x75\x6C\x74","\x43\x41\x53\x45\x20\x57\x48\x45\x4E\x20\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x63\x6F\x6D\x70\x6C\x65\x74\x65\x3D\x31\x20\x54\x48\x45\x4E\x20\x22\x59\x45\x53\x22\x20\x45\x4C\x53\x45\x20\x22\x4E\x4F\x22\x20\x45\x4E\x44","\x53\x68\x6F\x77\x20\x69\x66\x20\x61\x20\x63\x61\x6C\x6C\x20\x69\x73\x20\x61\x6E\x73\x77\x65\x72\x65\x64\x20\x6F\x72\x20\x6E\x6F\x74","\x45\x72\x72\x6F\x72\x20\x70\x6F\x70\x75\x6C\x61\x74\x69\x6E\x67\x20\x41\x6E\x61\x6C\x79\x74\x69\x63\x73\x3A","\x50\x6F\x70\x75\x6C\x61\x74\x69\x6E\x67\x20\x41\x6E\x61\x6C\x79\x74\x69\x63\x73","\x75\x6E\x69\x71\x75\x65\x69\x64","\x55\x6E\x69\x71\x75\x65\x49\x64","\x63\x61\x6C\x6C\x65\x72\x69\x64\x6E\x75\x6D","\x43\x61\x6C\x6C\x65\x72\x49\x64\x4E\x75\x6D","\x63\x61\x6C\x6C\x65\x72\x69\x64\x6E\x61\x6D\x65","\x43\x61\x6C\x6C\x65\x72\x49\x64\x4E\x61\x6D\x65","\x51\x75\x65\x75\x65","\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6A\x6F\x69\x6E\x41\x74","\x51\x75\x65\x75\x65\x4A\x6F\x69\x6E\x41\x74","\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6C\x65\x61\x76\x65\x41\x74","\x51\x75\x65\x75\x65\x4C\x65\x61\x76\x65\x41\x74","\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x61\x62\x61\x6E\x64\x6F\x6E","\x51\x75\x65\x75\x65\x41\x62\x61\x6E\x64\x6F\x6E","\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x61\x62\x61\x6E\x64\x6F\x6E\x41\x74","\x51\x75\x65\x75\x65\x41\x62\x61\x6E\x64\x6F\x6E\x41\x74","\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x63\x6F\x6D\x70\x6C\x65\x74\x65","\x43\x6F\x6D\x70\x6C\x65\x74\x65","\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x63\x6F\x6D\x70\x6C\x65\x74\x65\x41\x74","\x43\x6F\x6D\x70\x6C\x65\x74\x65\x41\x74","\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x65\x78\x69\x74","\x51\x75\x65\x75\x65\x45\x78\x69\x74","\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x65\x78\x69\x74\x41\x74","\x51\x75\x65\x75\x65\x45\x78\x69\x74\x41\x74","\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x65\x78\x69\x74\x72\x65\x61\x73\x6F\x6E","\x51\x75\x65\x75\x65\x45\x78\x69\x74\x52\x65\x61\x73\x6F\x6E","\x65\x78\x74\x65\x6E","\x44\x49\x44","\x54\x61\x6C\x6B\x54\x69\x6D\x65","\x41\x6E\x73\x77\x65\x72\x54\x69\x6D\x65","\x41\x62\x61\x6E\x64\x6F\x6E\x54\x69\x6D\x65","\x55\x6E\x69\x71\x75\x65\x49\x44","\x74\x79\x70\x65","\x54\x79\x70\x65","\x74\x61\x67","\x54\x61\x67","\x73\x6F\x75\x72\x63\x65","\x53\x6F\x75\x72\x63\x65","\x64\x65\x73\x74\x69\x6E\x61\x74\x69\x6F\x6E","\x44\x65\x73\x74\x69\x6E\x61\x74\x69\x6F\x6E","\x63\x61\x6C\x6C\x65\x72\x69\x64","\x43\x61\x6C\x6C\x65\x72\x49\x44","\x64\x65\x73\x74\x69\x6E\x61\x74\x69\x6F\x6E\x63\x68\x61\x6E\x6E\x65\x6C","\x44\x65\x73\x74\x43\x68\x61\x6E\x6E\x65\x6C","\x6C\x61\x73\x74\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x4C\x61\x73\x74\x41\x70\x70","\x6C\x61\x73\x74\x64\x61\x74\x61","\x4C\x61\x73\x74\x44\x61\x74\x61","\x73\x74\x61\x72\x74\x74\x69\x6D\x65","\x53\x74\x61\x72\x74\x54\x69\x6D\x65","\x61\x6E\x73\x77\x65\x72\x74\x69\x6D\x65","\x65\x6E\x64\x74\x69\x6D\x65","\x45\x6E\x64\x54\x69\x6D\x65","\x64\x75\x72\x61\x74\x69\x6F\x6E","\x44\x75\x72\x61\x74\x69\x6F\x6E","\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x61\x63\x63\x6F\x75\x6E\x74\x63\x6F\x64\x65","\x41\x67\x65\x6E\x74\x45\x78\x74\x65\x6E\x73\x69\x6F\x6E","\x43\x61\x6C\x6C\x65\x72\x49\x64","\x45\x6E\x64\x54\x49\x6D\x65","\x62\x69\x6C\x6C\x61\x62\x6C\x65\x73\x65\x63\x6F\x6E\x64\x73","\x42\x69\x6C\x6C\x73\x65\x63","\x4F\x66\x66\x65\x72\x65\x64","\x43\x4F\x55\x4E\x54","\x43\x6F\x6D\x70\x6C\x65\x74\x65\x64","\x53\x55\x4D","\x41\x62\x61\x6E\x64\x6F\x6E\x65\x64","\x55\x6E\x6D\x61\x6E\x61\x67\x65\x64","\x41\x76\x67\x54\x61\x6C\x6B\x54\x69\x6D\x65","\x41\x56\x47","\x41\x76\x67\x41\x62\x61\x6E\x64\x6F\x6E\x54\x69\x6D\x65","\x41\x76\x67\x41\x6E\x73\x77\x65\x72\x54\x69\x6D\x65","\x6D\x65\x6D\x62\x65\x72\x6E\x61\x6D\x65","\x41\x67\x65\x6E\x74","\x61\x67\x65\x6E\x74\x63\x61\x6C\x6C\x65\x64\x41\x74","\x41\x67\x65\x6E\x74\x43\x61\x6C\x6C\x65\x64\x41\x74","\x61\x67\x65\x6E\x74\x63\x6F\x6E\x6E\x65\x63\x74\x41\x74","\x41\x67\x65\x6E\x74\x43\x6F\x6E\x6E\x65\x63\x74\x41\x74","\x61\x67\x65\x6E\x74\x63\x6F\x6D\x70\x6C\x65\x74\x65\x41\x74","\x41\x67\x65\x6E\x74\x43\x6F\x6D\x70\x6C\x65\x74\x65\x41\x74","\x68\x6F\x6C\x64\x74\x69\x6D\x65","\x74\x61\x6C\x6B\x74\x69\x6D\x65","\x61\x67\x65\x6E\x74\x61\x63\x77","\x41\x67\x65\x6E\x74\x41\x43\x57","\x61\x63\x77\x74\x69\x6D\x65","\x41\x67\x65\x6E\x74\x41\x43\x57\x54\x69\x6D\x65","\x61\x67\x65\x6E\x74\x63\x6F\x6D\x70\x6C\x65\x74\x65","\x41\x67\x65\x6E\x74\x43\x6F\x6D\x70\x6C\x65\x74\x65","\x72\x65\x61\x73\x6F\x6E","\x48\x61\x6E\x67\x75\x70\x52\x65\x61\x73\x6F\x6E","\x6C\x61\x73\x74\x65\x76\x65\x6E\x74","\x4C\x61\x73\x74\x45\x76\x65\x6E\x74","\x61\x67\x65\x6E\x74\x72\x69\x6E\x67\x6E\x6F\x61\x6E\x73\x77\x65\x72","\x52\x69\x6E\x67\x4E\x6F\x41\x6E\x73\x77\x65\x72","\x54\x6F\x74\x54\x61\x6C\x6B\x54\x69\x6D\x65","\x54\x6F\x74\x41\x43\x57\x54\x69\x6D\x65","\x41\x76\x67\x41\x43\x57\x54\x69\x6D\x65","\x54\x6F\x74\x20\x54\x61\x6C\x6B\x54\x69\x6D\x65","\x41\x76\x67\x20\x54\x61\x6C\x6B\x54\x69\x6D\x65","\x54\x6F\x74\x20\x48\x6F\x6C\x64\x54\x69\x6D\x65","\x41\x76\x67\x20\x48\x6F\x6C\x64\x54\x69\x6D\x65","\x54\x6F\x74\x20\x41\x43\x57\x54\x69\x6D\x65","\x41\x76\x67\x20\x41\x43\x57\x54\x69\x6D\x65","\x54\x6F\x74\x20\x41\x6E\x73\x77\x65\x72\x65\x64","\x41\x6E\x73\x77\x65\x72\x65\x64\x20\x3C\x31\x30\x73","\x52\x65\x61\x73\x6F\x6E","\x43\x61\x6C\x6C\x73","\x41\x62\x61\x6E\x64\x6F\x6E\x20\x54\x69\x6D\x65","\x45\x78\x69\x74\x20\x54\x69\x6D\x65","\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x51\x75\x65\x75\x65\x50\x6F\x73\x69\x74\x69\x6F\x6E","\x54\x6F\x74\x20\x41\x62\x61\x6E\x64\x6F\x6E\x54\x69\x6D\x65","\x45\x78\x69\x74\x65\x64","\x41\x76\x67\x20\x45\x78\x69\x74\x65\x64\x54\x49\x6D\x65","\x54\x6F\x74\x20\x45\x78\x69\x74\x65\x64\x54\x69\x6D\x65","\x54\x6F\x74\x20\x45\x78\x69\x74\x54\x69\x6D\x65","\x54\x6F\x74\x20\x41\x62\x61\x6E\x64\x6F\x6E\x65\x64","\x41\x62\x61\x6E\x64\x6F\x6E\x65\x64\x3C\x31\x30\x73","\x41\x62\x61\x6E\x64\x6F\x6E\x65\x64\x3E\x31\x32\x30\x73","\x44\x61\x74\x65","\x48\x6F\x75\x72","\x44\x61\x79","\x54\x6F\x74\x20\x44\x75\x72\x61\x74\x69\x6F\x6E","\x41\x76\x67\x20\x44\x75\x72\x61\x74\x69\x6F\x6E","\x41\x53\x43","\x64\x61\x74\x61\x31","\x50\x61\x75\x73\x65\x54\x79\x70\x65","\x77\x65\x62\x73\x69\x74\x65\x6E\x61\x6D\x65","\x57\x65\x62\x73\x69\x74\x65","\x76\x69\x73\x69\x74\x6F\x72\x6E\x61\x6D\x65","\x56\x69\x73\x69\x74\x6F\x72\x4E\x61\x6D\x65","\x76\x69\x73\x69\x74\x6F\x72\x65\x6D\x61\x69\x6C","\x56\x69\x73\x69\x74\x6F\x72\x45\x6D\x61\x69\x6C","\x4D\x65\x6D\x65\x62\x65\x72\x4E\x61\x6D\x65","\x71\x75\x65\x75\x65\x6E\x61\x6D\x65","\x51\x75\x65\x75\x65\x4E\x61\x6D\x65","\x6A\x6F\x69\x6E\x41\x74","\x4A\x6F\x69\x6E\x41\x74","\x6C\x65\x61\x76\x65\x41\x74","\x4C\x65\x61\x76\x65\x41\x74","\x63\x6F\x6D\x70\x6C\x65\x74\x65\x41\x74","\x63\x6F\x6D\x70\x6C\x65\x74\x65","\x63\x6F\x6D\x70\x6C\x65\x74\x65\x52\x65\x61\x73\x6F\x6E","\x43\x6F\x6D\x70\x6C\x65\x74\x65\x52\x65\x61\x73\x6F\x6E","\x61\x62\x61\x6E\x64\x6F\x6E","\x41\x62\x61\x6E\x64\x6F\x6E","\x75\x6E\x6D\x61\x6E\x61\x67\x65\x64","\x55\x6E\x6D\x61\x6E\x61\x67\x65","\x53\x65\x73\x73\x69\x6F\x6E","\x46\x72\x6F\x6D\x51\x75\x65\x75\x65","\x32\x30\x31\x36\x2D\x30\x35\x2D\x31\x34\x20\x31\x38\x3A\x31\x33\x3A\x30\x31","\x44\x69\x72\x65\x63\x74\x54\x6F\x41\x67\x65\x6E\x74","\x54\x6F\x74\x20\x53\x65\x73\x73\x69\x6F\x6E\x20\x54\x69\x6D\x65","\x53\x45\x43\x5F\x54\x4F\x5F\x54\x49\x4D\x45","\x41\x76\x67\x20\x53\x65\x73\x73\x69\x6F\x6E\x20\x54\x69\x6D\x65","\x57\x65\x62\x53\x69\x74\x65","\x53\x65\x73\x73\x69\x6F\x6E\x73","\x43\x4F\x55\x4E\x54\x20\x44\x49\x53\x54\x49\x4E\x43\x54","\x69\x6E\x74\x65\x72\x66\x61\x63\x65","\x49\x6E\x74\x65\x72\x66\x61\x63\x65","\x45\x76\x65\x6E\x74","\x50\x61\x75\x73\x65\x2F\x41\x43\x57\x20\x51\x75\x65\x75\x65","\x65\x6E\x74\x65\x72\x41\x74","\x45\x6E\x74\x65\x72\x41\x74","\x65\x78\x69\x74\x41\x74","\x45\x78\x69\x74\x41\x74","\x70\x72\x6F\x6A\x65\x63\x74\x5F\x6E\x61\x6D\x65","\x50\x72\x6F\x6A\x65\x63\x74\x20\x4E\x61\x6D\x65","\x64\x6E\x69\x64","\x53\x74\x61\x72\x74\x20\x54\x69\x6D\x65","\x45\x6E\x64\x20\x54\x69\x6D\x65","\x43\x61\x6C\x6C\x65\x72\x20\x49\x64","\x55\x6E\x69\x71\x75\x65\x20\x49\x64","\x6E\x6F\x64\x65","\x47\x52\x4F\x55\x50\x5F\x43\x4F\x4E\x43\x41\x54","\x63\x68\x61\x6E\x6E\x65\x6C","\x43\x68\x61\x6E\x6E\x65\x6C","\x50\x61\x75\x73\x65","\x63\x6F\x6E\x6E\x65\x63\x74\x65\x64\x6C\x69\x6E\x65\x6E\x61\x6D\x65","\x52\x65\x63\x6F\x72\x64\x65\x64\x20\x43\x61\x6C\x6C\x73","\x72\x61\x74\x69\x6E\x67","\x54\x6F\x74\x61\x6C\x20\x52\x61\x74\x69\x6E\x67","\x41\x76\x67\x20\x52\x61\x74\x69\x6E\x67","\x41\x6E\x73\x77\x65\x72\x65\x64","\x48\x4F\x55\x52","\x61\x63\x63\x6F\x75\x6E\x74\x6E\x61\x6D\x65","\x41\x63\x63\x6F\x75\x6E\x74","\x52\x65\x63\x65\x69\x76\x65\x64","\x49\x46\x28\x74\x69\x6D\x65\x6F\x75\x74\x3D\x30\x2C\x31\x2C\x6E\x75\x6C\x6C\x29","\x41\x63\x63\x65\x70\x74\x65\x64","\x52\x4F\x55\x4E\x44\x28\x53\x55\x4D\x28\x49\x46\x28\x74\x69\x6D\x65\x6F\x75\x74\x3D\x30\x2C\x31\x2C\x6E\x75\x6C\x6C\x29\x29\x2F\x43\x4F\x55\x4E\x54\x28\x44\x49\x53\x54\x49\x4E\x43\x54\x28\x75\x6E\x69\x71\x75\x65\x69\x64\x29\x29\x2A\x31\x30\x30\x2C\x31\x29","\x41\x63\x63\x65\x70\x74\x20\x52\x61\x74\x65","\x49\x46\x28\x74\x69\x6D\x65\x6F\x75\x74\x3D\x30\x20\x41\x4E\x44\x20\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x3D\x22\x71\x75\x65\x75\x65\x22\x2C\x31\x2C\x6E\x75\x6C\x6C\x29","\x41\x63\x63\x65\x70\x74\x65\x64\x20\x62\x79\x20\x51\x75\x65\x75\x65","\x49\x46\x28\x74\x69\x6D\x65\x6F\x75\x74\x3D\x30\x20\x41\x4E\x44\x20\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x3D\x22\x66\x69\x64\x65\x6C\x69\x74\x79\x22\x2C\x31\x2C\x6E\x75\x6C\x6C\x29","\x41\x63\x63\x65\x70\x74\x20\x62\x79\x20\x46\x69\x64\x65\x6C\x69\x74\x79","\x49\x46\x28\x74\x69\x6D\x65\x6F\x75\x74\x3D\x30\x20\x41\x4E\x44\x20\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x3D\x22\x61\x67\x65\x6E\x74\x22\x2C\x31\x2C\x6E\x75\x6C\x6C\x29","\x41\x63\x63\x65\x70\x74\x65\x64\x20\x62\x79\x20\x41\x67\x65\x6E\x74","\x49\x46\x28\x74\x69\x6D\x65\x6F\x75\x74\x3D\x30\x2C\x31\x2C\x30\x29","\x74\x69\x6D\x65\x6F\x75\x74","\x54\x69\x6D\x65\x6F\x75\x74","\x52\x4F\x55\x4E\x44\x28\x53\x55\x4D\x28\x49\x46\x28\x74\x69\x6D\x65\x6F\x75\x74\x3D\x30\x2C\x31\x2C\x6E\x75\x6C\x6C\x29\x29\x2F\x43\x4F\x55\x4E\x54\x28\x75\x6E\x69\x71\x75\x65\x69\x64\x29\x2A\x31\x30\x30\x2C\x31\x29","\x52\x4F\x55\x4E\x44\x28\x41\x56\x47\x28\x49\x46\x28\x74\x69\x6D\x65\x6F\x75\x74\x3D\x30\x2C\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x6C\x65\x61\x76\x65\x61\x74\x29\x2D\x20\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x6A\x6F\x69\x6E\x61\x74\x29\x2C\x4E\x55\x4C\x4C\x29\x29\x29","\x41\x76\x67\x20\x41\x63\x63\x65\x70\x74\x20\x54\x69\x6D\x65","\x54\x6F\x74\x20\x41\x63\x63\x65\x70\x74\x65\x64","\x49\x46\x28\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x3D\x22\x66\x69\x64\x65\x6C\x69\x74\x79\x22\x2C\x31\x2C\x30\x29","\x46\x69\x64\x65\x6C\x69\x74\x79","\x49\x46\x28\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x3D\x22\x61\x67\x65\x6E\x74\x22\x2C\x31\x2C\x30\x29","\x49\x46\x28\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x3D\x22\x71\x75\x65\x75\x65\x22\x2C\x31\x2C\x30\x29","\x63\x72\x65\x61\x74\x65\x64\x41\x74","\x44\x41\x54\x45","\x49\x46\x28\x73\x74\x61\x74\x75\x73\x3D\x22\x52\x45\x43\x45\x49\x56\x45\x44\x22\x2C\x31\x2C\x30\x29","\x49\x46\x28\x73\x74\x61\x74\x75\x73\x3D\x22\x53\x45\x4E\x54\x22\x2C\x31\x2C\x30\x29","\x53\x65\x6E\x74","\x61\x63\x63\x6F\x75\x6E\x74","\x73\x74\x61\x74\x75\x73","\x6C\x61\x73\x74\x45\x76\x65\x6E\x74","\x61\x72\x72\x69\x76\x65\x64\x41\x74","\x6F\x70\x65\x6E\x65\x64\x41\x74","\x63\x6C\x6F\x73\x65\x64\x41\x74","\x6D\x61\x69\x6C\x49\x6E","\x6D\x61\x69\x6C\x4F\x75\x74","\x74\x61\x67\x73","\x50\x61\x72\x65\x6E\x74\x49\x64","\x63\x6F\x75\x6E\x74\x28\x2A\x29","\x69\x6E\x74\x65\x72\x61\x63\x74\x69\x6F\x6E\x73","\x49\x6E\x74\x65\x72\x61\x63\x74\x69\x6F\x6E\x73","\x52\x4F\x55\x4E\x44\x28\x41\x56\x47\x28\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x63\x6C\x6F\x73\x65\x64\x41\x74\x29\x2D\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x61\x72\x72\x69\x76\x65\x64\x41\x74\x29\x29\x29","\x41\x76\x67\x20\x48\x61\x6E\x64\x6C\x65\x20\x54\x69\x6D\x65","\x52\x65\x70\x6F\x72\x74\x46\x69\x65\x6C\x64","\x64\x65\x73\x74\x72\x6F\x79","\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74","\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63","\x5B\x7B\x22\x69\x64\x22\x3A\x22\x31\x22\x2C\x22\x74\x65\x78\x74\x22\x3A\x22\x43\x75\x73\x74\x6F\x6D\x20\x52\x65\x70\x6F\x72\x74\x73\x22\x2C\x22\x69\x63\x6F\x6E\x22\x3A\x22\x69\x63\x6F\x6E\x2D\x62\x6F\x6F\x6B\x2D\x6F\x70\x65\x6E\x22\x2C\x22\x6C\x69\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x69\x64\x22\x3A\x22\x31\x22\x7D\x2C\x22\x61\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x68\x72\x65\x66\x22\x3A\x22\x23\x22\x2C\x22\x69\x64\x22\x3A\x22\x31\x5F\x61\x6E\x63\x68\x6F\x72\x22\x7D\x2C\x22\x73\x74\x61\x74\x65\x22\x3A\x7B\x22\x6C\x6F\x61\x64\x65\x64\x22\x3A\x74\x72\x75\x65\x2C\x22\x6F\x70\x65\x6E\x65\x64\x22\x3A\x74\x72\x75\x65\x2C\x22\x73\x65\x6C\x65\x63\x74\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x2C\x22\x64\x69\x73\x61\x62\x6C\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x7D\x2C\x22\x64\x61\x74\x61\x22\x3A\x7B\x7D\x2C\x22\x70\x61\x72\x65\x6E\x74\x22\x3A\x22\x23\x22\x7D\x2C\x7B\x22\x69\x64\x22\x3A\x22\x32\x22\x2C\x22\x74\x65\x78\x74\x22\x3A\x22\x42\x61\x73\x69\x63\x20\x4E\x6F\x64\x65\x22\x2C\x22\x69\x63\x6F\x6E\x22\x3A\x74\x72\x75\x65\x2C\x22\x6C\x69\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x69\x64\x22\x3A\x22\x32\x22\x7D\x2C\x22\x61\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x68\x72\x65\x66\x22\x3A\x22\x23\x22\x2C\x22\x69\x64\x22\x3A\x22\x32\x5F\x61\x6E\x63\x68\x6F\x72\x22\x7D\x2C\x22\x73\x74\x61\x74\x65\x22\x3A\x7B\x22\x6C\x6F\x61\x64\x65\x64\x22\x3A\x74\x72\x75\x65\x2C\x22\x6F\x70\x65\x6E\x65\x64\x22\x3A\x74\x72\x75\x65\x2C\x22\x73\x65\x6C\x65\x63\x74\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x2C\x22\x64\x69\x73\x61\x62\x6C\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x7D\x2C\x22\x64\x61\x74\x61\x22\x3A\x7B\x7D\x2C\x22\x70\x61\x72\x65\x6E\x74\x22\x3A\x22\x31\x22\x7D\x5D","\x66\x69\x6E\x64\x4F\x72\x43\x72\x65\x61\x74\x65","\x52\x65\x70\x6F\x72\x74\x54\x72\x65\x65","\x5B\x7B\x22\x69\x64\x22\x3A\x22\x31\x22\x2C\x22\x70\x61\x72\x65\x6E\x74\x22\x3A\x22\x23\x22\x2C\x22\x74\x65\x78\x74\x22\x3A\x22\x4D\x6F\x74\x69\x6F\x6E\x20\x52\x65\x70\x6F\x72\x74\x73\x22\x2C\x22\x69\x63\x6F\x6E\x22\x3A\x22\x69\x63\x6F\x6E\x2D\x72\x6F\x63\x6B\x65\x74\x22\x2C\x22\x73\x74\x61\x74\x65\x22\x3A\x7B\x22\x73\x65\x6C\x65\x63\x74\x65\x64\x22\x3A\x74\x72\x75\x65\x2C\x22\x6F\x70\x65\x6E\x65\x64\x22\x3A\x74\x72\x75\x65\x7D\x7D\x2C\x7B\x22\x69\x64\x22\x3A\x22\x32\x22\x2C\x22\x74\x65\x78\x74\x22\x3A\x22\x56\x6F\x69\x63\x65\x22\x2C\x22\x69\x63\x6F\x6E\x22\x3A\x74\x72\x75\x65\x2C\x22\x6C\x69\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x69\x64\x22\x3A\x22\x32\x22\x7D\x2C\x22\x61\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x68\x72\x65\x66\x22\x3A\x22\x23\x22\x2C\x22\x69\x64\x22\x3A\x22\x32\x5F\x61\x6E\x63\x68\x6F\x72\x22\x7D\x2C\x22\x73\x74\x61\x74\x65\x22\x3A\x7B\x22\x6C\x6F\x61\x64\x65\x64\x22\x3A\x74\x72\x75\x65\x2C\x22\x6F\x70\x65\x6E\x65\x64\x22\x3A\x74\x72\x75\x65\x2C\x22\x73\x65\x6C\x65\x63\x74\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x2C\x22\x64\x69\x73\x61\x62\x6C\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x7D\x2C\x22\x64\x61\x74\x61\x22\x3A\x7B\x7D\x2C\x22\x70\x61\x72\x65\x6E\x74\x22\x3A\x22\x31\x22\x7D\x2C\x7B\x22\x69\x64\x22\x3A\x22\x6A\x34\x5F\x33\x22\x2C\x22\x74\x65\x78\x74\x22\x3A\x22\x51\x75\x65\x75\x65\x73\x22\x2C\x22\x69\x63\x6F\x6E\x22\x3A\x74\x72\x75\x65\x2C\x22\x6C\x69\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x69\x64\x22\x3A\x22\x6A\x34\x5F\x33\x22\x7D\x2C\x22\x61\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x68\x72\x65\x66\x22\x3A\x22\x23\x22\x2C\x22\x69\x64\x22\x3A\x22\x6A\x34\x5F\x33\x5F\x61\x6E\x63\x68\x6F\x72\x22\x7D\x2C\x22\x73\x74\x61\x74\x65\x22\x3A\x7B\x22\x6C\x6F\x61\x64\x65\x64\x22\x3A\x74\x72\x75\x65\x2C\x22\x6F\x70\x65\x6E\x65\x64\x22\x3A\x74\x72\x75\x65\x2C\x22\x73\x65\x6C\x65\x63\x74\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x2C\x22\x64\x69\x73\x61\x62\x6C\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x7D\x2C\x22\x64\x61\x74\x61\x22\x3A\x7B\x7D\x2C\x22\x70\x61\x72\x65\x6E\x74\x22\x3A\x22\x32\x22\x7D\x2C\x7B\x22\x69\x64\x22\x3A\x22\x6A\x34\x5F\x35\x22\x2C\x22\x74\x65\x78\x74\x22\x3A\x22\x41\x6E\x73\x77\x65\x72\x65\x64\x22\x2C\x22\x69\x63\x6F\x6E\x22\x3A\x74\x72\x75\x65\x2C\x22\x6C\x69\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x69\x64\x22\x3A\x22\x6A\x34\x5F\x35\x22\x7D\x2C\x22\x61\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x68\x72\x65\x66\x22\x3A\x22\x23\x22\x2C\x22\x69\x64\x22\x3A\x22\x6A\x34\x5F\x35\x5F\x61\x6E\x63\x68\x6F\x72\x22\x7D\x2C\x22\x73\x74\x61\x74\x65\x22\x3A\x7B\x22\x6C\x6F\x61\x64\x65\x64\x22\x3A\x74\x72\x75\x65\x2C\x22\x6F\x70\x65\x6E\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x2C\x22\x73\x65\x6C\x65\x63\x74\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x2C\x22\x64\x69\x73\x61\x62\x6C\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x7D\x2C\x22\x64\x61\x74\x61\x22\x3A\x7B\x7D\x2C\x22\x70\x61\x72\x65\x6E\x74\x22\x3A\x22\x6A\x34\x5F\x33\x22\x7D\x2C\x7B\x22\x69\x64\x22\x3A\x22\x6A\x34\x5F\x36\x22\x2C\x22\x74\x65\x78\x74\x22\x3A\x22\x55\x6E\x61\x6E\x73\x77\x65\x72\x65\x64\x22\x2C\x22\x69\x63\x6F\x6E\x22\x3A\x74\x72\x75\x65\x2C\x22\x6C\x69\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x69\x64\x22\x3A\x22\x6A\x34\x5F\x36\x22\x7D\x2C\x22\x61\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x68\x72\x65\x66\x22\x3A\x22\x23\x22\x2C\x22\x69\x64\x22\x3A\x22\x6A\x34\x5F\x36\x5F\x61\x6E\x63\x68\x6F\x72\x22\x7D\x2C\x22\x73\x74\x61\x74\x65\x22\x3A\x7B\x22\x6C\x6F\x61\x64\x65\x64\x22\x3A\x74\x72\x75\x65\x2C\x22\x6F\x70\x65\x6E\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x2C\x22\x73\x65\x6C\x65\x63\x74\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x2C\x22\x64\x69\x73\x61\x62\x6C\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x7D\x2C\x22\x64\x61\x74\x61\x22\x3A\x7B\x7D\x2C\x22\x70\x61\x72\x65\x6E\x74\x22\x3A\x22\x6A\x34\x5F\x33\x22\x7D\x2C\x7B\x22\x69\x64\x22\x3A\x22\x6A\x34\x5F\x37\x22\x2C\x22\x74\x65\x78\x74\x22\x3A\x22\x44\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6F\x6E\x22\x2C\x22\x69\x63\x6F\x6E\x22\x3A\x74\x72\x75\x65\x2C\x22\x6C\x69\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x69\x64\x22\x3A\x22\x6A\x34\x5F\x37\x22\x7D\x2C\x22\x61\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x68\x72\x65\x66\x22\x3A\x22\x23\x22\x2C\x22\x69\x64\x22\x3A\x22\x6A\x34\x5F\x37\x5F\x61\x6E\x63\x68\x6F\x72\x22\x7D\x2C\x22\x73\x74\x61\x74\x65\x22\x3A\x7B\x22\x6C\x6F\x61\x64\x65\x64\x22\x3A\x74\x72\x75\x65\x2C\x22\x6F\x70\x65\x6E\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x2C\x22\x73\x65\x6C\x65\x63\x74\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x2C\x22\x64\x69\x73\x61\x62\x6C\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x7D\x2C\x22\x64\x61\x74\x61\x22\x3A\x7B\x7D\x2C\x22\x70\x61\x72\x65\x6E\x74\x22\x3A\x22\x6A\x34\x5F\x33\x22\x7D\x2C\x7B\x22\x69\x64\x22\x3A\x22\x6A\x32\x30\x5F\x31\x22\x2C\x22\x74\x65\x78\x74\x22\x3A\x22\x43\x61\x6C\x6C\x73\x22\x2C\x22\x69\x63\x6F\x6E\x22\x3A\x74\x72\x75\x65\x2C\x22\x6C\x69\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x69\x64\x22\x3A\x22\x6A\x32\x30\x5F\x31\x22\x7D\x2C\x22\x61\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x68\x72\x65\x66\x22\x3A\x22\x23\x22\x2C\x22\x69\x64\x22\x3A\x22\x6A\x32\x30\x5F\x31\x5F\x61\x6E\x63\x68\x6F\x72\x22\x7D\x2C\x22\x73\x74\x61\x74\x65\x22\x3A\x7B\x22\x6C\x6F\x61\x64\x65\x64\x22\x3A\x74\x72\x75\x65\x2C\x22\x6F\x70\x65\x6E\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x2C\x22\x73\x65\x6C\x65\x63\x74\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x2C\x22\x64\x69\x73\x61\x62\x6C\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x7D\x2C\x22\x64\x61\x74\x61\x22\x3A\x7B\x7D\x2C\x22\x70\x61\x72\x65\x6E\x74\x22\x3A\x22\x32\x22\x7D\x2C\x7B\x22\x69\x64\x22\x3A\x22\x6A\x34\x5F\x34\x22\x2C\x22\x74\x65\x78\x74\x22\x3A\x22\x41\x67\x65\x6E\x74\x73\x22\x2C\x22\x69\x63\x6F\x6E\x22\x3A\x74\x72\x75\x65\x2C\x22\x6C\x69\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x69\x64\x22\x3A\x22\x6A\x34\x5F\x34\x22\x7D\x2C\x22\x61\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x68\x72\x65\x66\x22\x3A\x22\x23\x22\x2C\x22\x69\x64\x22\x3A\x22\x6A\x34\x5F\x34\x5F\x61\x6E\x63\x68\x6F\x72\x22\x7D\x2C\x22\x73\x74\x61\x74\x65\x22\x3A\x7B\x22\x6C\x6F\x61\x64\x65\x64\x22\x3A\x74\x72\x75\x65\x2C\x22\x6F\x70\x65\x6E\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x2C\x22\x73\x65\x6C\x65\x63\x74\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x2C\x22\x64\x69\x73\x61\x62\x6C\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x7D\x2C\x22\x64\x61\x74\x61\x22\x3A\x7B\x7D\x2C\x22\x70\x61\x72\x65\x6E\x74\x22\x3A\x22\x32\x22\x7D\x2C\x7B\x22\x69\x64\x22\x3A\x22\x6A\x31\x31\x32\x5F\x31\x22\x2C\x22\x74\x65\x78\x74\x22\x3A\x22\x43\x61\x6C\x6C\x79\x53\x71\x75\x61\x72\x65\x22\x2C\x22\x69\x63\x6F\x6E\x22\x3A\x74\x72\x75\x65\x2C\x22\x6C\x69\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x69\x64\x22\x3A\x22\x6A\x31\x31\x32\x5F\x31\x22\x7D\x2C\x22\x61\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x68\x72\x65\x66\x22\x3A\x22\x23\x22\x2C\x22\x69\x64\x22\x3A\x22\x6A\x31\x31\x32\x5F\x31\x5F\x61\x6E\x63\x68\x6F\x72\x22\x7D\x2C\x22\x73\x74\x61\x74\x65\x22\x3A\x7B\x22\x6C\x6F\x61\x64\x65\x64\x22\x3A\x74\x72\x75\x65\x2C\x22\x6F\x70\x65\x6E\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x2C\x22\x73\x65\x6C\x65\x63\x74\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x2C\x22\x64\x69\x73\x61\x62\x6C\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x7D\x2C\x22\x64\x61\x74\x61\x22\x3A\x7B\x7D\x2C\x22\x70\x61\x72\x65\x6E\x74\x22\x3A\x22\x32\x22\x7D\x2C\x7B\x22\x69\x64\x22\x3A\x22\x6A\x32\x30\x5F\x32\x22\x2C\x22\x74\x65\x78\x74\x22\x3A\x22\x49\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x22\x2C\x22\x69\x63\x6F\x6E\x22\x3A\x74\x72\x75\x65\x2C\x22\x6C\x69\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x69\x64\x22\x3A\x22\x6A\x32\x30\x5F\x32\x22\x7D\x2C\x22\x61\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x68\x72\x65\x66\x22\x3A\x22\x23\x22\x2C\x22\x69\x64\x22\x3A\x22\x6A\x32\x30\x5F\x32\x5F\x61\x6E\x63\x68\x6F\x72\x22\x7D\x2C\x22\x73\x74\x61\x74\x65\x22\x3A\x7B\x22\x6C\x6F\x61\x64\x65\x64\x22\x3A\x74\x72\x75\x65\x2C\x22\x6F\x70\x65\x6E\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x2C\x22\x73\x65\x6C\x65\x63\x74\x65\x64\x22\x3A\x74\x72\x75\x65\x2C\x22\x64\x69\x73\x61\x62\x6C\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x7D\x2C\x22\x64\x61\x74\x61\x22\x3A\x7B\x7D\x2C\x22\x70\x61\x72\x65\x6E\x74\x22\x3A\x22\x32\x22\x7D\x2C\x7B\x22\x69\x64\x22\x3A\x22\x6A\x32\x30\x5F\x33\x22\x2C\x22\x74\x65\x78\x74\x22\x3A\x22\x52\x65\x63\x6F\x72\x64\x69\x6E\x67\x73\x22\x2C\x22\x69\x63\x6F\x6E\x22\x3A\x74\x72\x75\x65\x2C\x22\x6C\x69\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x69\x64\x22\x3A\x22\x6A\x32\x30\x5F\x33\x22\x7D\x2C\x22\x61\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x68\x72\x65\x66\x22\x3A\x22\x23\x22\x2C\x22\x69\x64\x22\x3A\x22\x6A\x32\x30\x5F\x33\x5F\x61\x6E\x63\x68\x6F\x72\x22\x7D\x2C\x22\x73\x74\x61\x74\x65\x22\x3A\x7B\x22\x6C\x6F\x61\x64\x65\x64\x22\x3A\x74\x72\x75\x65\x2C\x22\x6F\x70\x65\x6E\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x2C\x22\x73\x65\x6C\x65\x63\x74\x65\x64\x22\x3A\x74\x72\x75\x65\x2C\x22\x64\x69\x73\x61\x62\x6C\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x7D\x2C\x22\x64\x61\x74\x61\x22\x3A\x7B\x7D\x2C\x22\x70\x61\x72\x65\x6E\x74\x22\x3A\x22\x32\x22\x7D\x2C\x7B\x22\x69\x64\x22\x3A\x22\x6A\x34\x5F\x31\x22\x2C\x22\x74\x65\x78\x74\x22\x3A\x22\x43\x68\x61\x74\x22\x2C\x22\x69\x63\x6F\x6E\x22\x3A\x74\x72\x75\x65\x2C\x22\x6C\x69\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x69\x64\x22\x3A\x22\x6A\x34\x5F\x31\x22\x7D\x2C\x22\x61\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x68\x72\x65\x66\x22\x3A\x22\x23\x22\x2C\x22\x69\x64\x22\x3A\x22\x6A\x34\x5F\x31\x5F\x61\x6E\x63\x68\x6F\x72\x22\x7D\x2C\x22\x73\x74\x61\x74\x65\x22\x3A\x7B\x22\x6C\x6F\x61\x64\x65\x64\x22\x3A\x74\x72\x75\x65\x2C\x22\x6F\x70\x65\x6E\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x2C\x22\x73\x65\x6C\x65\x63\x74\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x2C\x22\x64\x69\x73\x61\x62\x6C\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x7D\x2C\x22\x64\x61\x74\x61\x22\x3A\x7B\x7D\x2C\x22\x70\x61\x72\x65\x6E\x74\x22\x3A\x22\x31\x22\x7D\x2C\x7B\x22\x69\x64\x22\x3A\x22\x6A\x34\x5F\x32\x22\x2C\x22\x74\x65\x78\x74\x22\x3A\x22\x4D\x61\x69\x6C\x22\x2C\x22\x69\x63\x6F\x6E\x22\x3A\x74\x72\x75\x65\x2C\x22\x6C\x69\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x69\x64\x22\x3A\x22\x6A\x34\x5F\x32\x22\x7D\x2C\x22\x61\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x68\x72\x65\x66\x22\x3A\x22\x23\x22\x2C\x22\x69\x64\x22\x3A\x22\x6A\x34\x5F\x32\x5F\x61\x6E\x63\x68\x6F\x72\x22\x7D\x2C\x22\x73\x74\x61\x74\x65\x22\x3A\x7B\x22\x6C\x6F\x61\x64\x65\x64\x22\x3A\x74\x72\x75\x65\x2C\x22\x6F\x70\x65\x6E\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x2C\x22\x73\x65\x6C\x65\x63\x74\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x2C\x22\x64\x69\x73\x61\x62\x6C\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x7D\x2C\x22\x64\x61\x74\x61\x22\x3A\x7B\x7D\x2C\x22\x70\x61\x72\x65\x6E\x74\x22\x3A\x22\x31\x22\x7D\x2C\x7B\x22\x69\x64\x22\x3A\x22\x6A\x32\x34\x5F\x31\x22\x2C\x22\x74\x65\x78\x74\x22\x3A\x22\x41\x67\x65\x6E\x74\x73\x22\x2C\x22\x69\x63\x6F\x6E\x22\x3A\x74\x72\x75\x65\x2C\x22\x6C\x69\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x69\x64\x22\x3A\x22\x6A\x32\x34\x5F\x31\x22\x7D\x2C\x22\x61\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x68\x72\x65\x66\x22\x3A\x22\x23\x22\x2C\x22\x69\x64\x22\x3A\x22\x6A\x32\x34\x5F\x31\x5F\x61\x6E\x63\x68\x6F\x72\x22\x7D\x2C\x22\x73\x74\x61\x74\x65\x22\x3A\x7B\x22\x6C\x6F\x61\x64\x65\x64\x22\x3A\x74\x72\x75\x65\x2C\x22\x6F\x70\x65\x6E\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x2C\x22\x73\x65\x6C\x65\x63\x74\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x2C\x22\x64\x69\x73\x61\x62\x6C\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x7D\x2C\x22\x64\x61\x74\x61\x22\x3A\x7B\x7D\x2C\x22\x70\x61\x72\x65\x6E\x74\x22\x3A\x22\x31\x22\x7D\x5D","\x4D\x6F\x74\x69\x6F\x6E\x20\x53\x65\x72\x76\x69\x63\x65","\x4C\x69\x73\x74","\x46\x69\x6E\x69\x73\x68\x65\x64\x20\x70\x6F\x70\x75\x6C\x61\x74\x69\x6E\x67\x20\x56\x6F\x69\x63\x65\x45\x78\x74\x65\x6E\x73\x69\x6F\x6E\x20\x66\x6F\x72\x20\x4F\x75\x74\x67\x6F\x69\x6E\x67\x20\x46\x61\x78","\x5F\x2E","\x4E\x6F\x4F\x70","\x4F\x75\x74\x67\x6F\x69\x6E\x67\x20\x66\x61\x78\x20\x74\x6F\x20\x24\x7B\x46\x41\x58\x4E\x55\x4D\x42\x45\x52\x7D","\x73\x79\x73\x74\x65\x6D","\x41\x63\x63\x6F\x75\x6E\x74\x20\x24\x7B\x46\x41\x58\x4E\x41\x4D\x45\x7D","\x53\x65\x74","\x43\x44\x52\x28\x74\x79\x70\x65\x29\x3D\x6F\x75\x74\x62\x6F\x75\x6E\x64\x2D\x66\x61\x78","\x41\x6E\x73\x77\x65\x72","\x57\x61\x69\x74","\x32","\x46\x41\x58\x4F\x50\x54\x28\x65\x63\x6D\x29\x3D\x24\x7B\x46\x41\x58\x45\x43\x4D\x7D","\x46\x41\x58\x4F\x50\x54\x28\x68\x65\x61\x64\x65\x72\x69\x6E\x66\x6F\x29\x3D\x24\x7B\x46\x41\x58\x48\x45\x41\x44\x45\x52\x49\x4E\x46\x4F\x7D","\x46\x41\x58\x4F\x50\x54\x28\x6C\x6F\x63\x61\x6C\x73\x74\x61\x74\x69\x6F\x6E\x69\x64\x29\x3D\x24\x7B\x46\x41\x58\x4C\x4F\x43\x41\x4C\x53\x54\x41\x54\x49\x4F\x4E\x49\x44\x7D","\x46\x41\x58\x4F\x50\x54\x28\x6D\x69\x6E\x72\x61\x74\x65\x29\x3D\x24\x7B\x46\x41\x58\x4D\x49\x4E\x52\x41\x54\x45\x7D","\x46\x41\x58\x4F\x50\x54\x28\x6D\x61\x78\x72\x61\x74\x65\x29\x3D\x24\x7B\x46\x41\x58\x4D\x41\x58\x52\x41\x54\x45\x7D","\x46\x41\x58\x4F\x50\x54\x28\x6D\x6F\x64\x65\x6D\x29\x3D\x24\x7B\x46\x41\x58\x4D\x4F\x44\x45\x4D\x7D","\x46\x41\x58\x4F\x50\x54\x28\x67\x61\x74\x65\x77\x61\x79\x29\x3D\x24\x7B\x46\x41\x58\x47\x41\x54\x45\x57\x41\x59\x7D","\x46\x41\x58\x4F\x50\x54\x28\x74\x33\x38\x74\x69\x6D\x65\x6F\x75\x74\x29\x3D\x24\x7B\x46\x41\x58\x54\x33\x38\x54\x49\x4D\x45\x4F\x55\x54\x7D","\x53\x65\x6E\x64\x46\x41\x58","\x24\x7B\x46\x41\x58\x4F\x55\x54\x46\x49\x4C\x45\x7D\x2C\x64\x73","\x48\x61\x6E\x67\x75\x70","\x56\x6F\x69\x63\x65\x45\x78\x74\x65\x6E\x73\x69\x6F\x6E","\x52\x65\x77\x72\x69\x74\x69\x6E\x67\x20\x55\x73\x65\x72\x73\x20\x65\x78\x74\x65\x6E\x73\x69\x6F\x6E\x73\x2E\x2E\x2E","\x61\x70\x70\x64\x61\x74\x61","\x53\x49\x50\x2F","\x6E\x61\x6D\x65","\x2C\x2C\x74\x54\x78\x58","\x73\x61\x76\x65","\x55\x73\x65\x72\x45\x78\x74\x65\x6E\x73\x69\x6F\x6E\x73","\x44\x69\x61\x6C"];_0x82df[0];var _=require(_0x82df[1]);var models=require(_0x82df[2]);var sequelize=require(_0x82df[2])[_0x82df[3]];models[_0x82df[70]][_0x82df[69]]([{provider:_0x82df[7],role:_0x82df[8],fullname:_0x82df[9],email:_0x82df[10],name:_0x82df[11],password:_0x82df[12],defaultuser:_0x82df[11],host:_0x82df[13],type:_0x82df[14],transport:_0x82df[15],allow:_0x82df[16],qualify:_0x82df[17],nat:_0x82df[18],disallow:_0x82df[19],context:_0x82df[20],internal:1000},{provider:_0x82df[7],role:_0x82df[8],fullname:_0x82df[21],email:_0x82df[22],name:_0x82df[23],password:_0x82df[12],defaultuser:_0x82df[23],host:_0x82df[13],type:_0x82df[14],transport:_0x82df[15],allow:_0x82df[16],qualify:_0x82df[17],nat:_0x82df[18],disallow:_0x82df[19],context:_0x82df[20],internal:1001},{provider:_0x82df[7],role:_0x82df[8],fullname:_0x82df[24],email:_0x82df[25],name:_0x82df[26],password:_0x82df[12],defaultuser:_0x82df[26],host:_0x82df[13],type:_0x82df[14],transport:_0x82df[15],allow:_0x82df[16],qualify:_0x82df[17],nat:_0x82df[18],disallow:_0x82df[19],context:_0x82df[20],internal:1002},{provider:_0x82df[7],role:_0x82df[8],fullname:_0x82df[27],email:_0x82df[28],name:_0x82df[29],password:_0x82df[12],defaultuser:_0x82df[29],host:_0x82df[13],type:_0x82df[14],transport:_0x82df[15],allow:_0x82df[16],qualify:_0x82df[17],nat:_0x82df[18],disallow:_0x82df[19],context:_0x82df[20],internal:1003},{provider:_0x82df[7],role:_0x82df[8],fullname:_0x82df[30],email:_0x82df[31],name:_0x82df[32],password:_0x82df[12],defaultuser:_0x82df[32],host:_0x82df[13],type:_0x82df[14],transport:_0x82df[15],allow:_0x82df[16],qualify:_0x82df[17],nat:_0x82df[18],disallow:_0x82df[19],context:_0x82df[20],internal:1004},{provider:_0x82df[7],role:_0x82df[33],fullname:_0x82df[34],email:_0x82df[35],name:_0x82df[36],password:_0x82df[36],defaultuser:_0x82df[36],host:_0x82df[13],type:_0x82df[14],transport:_0x82df[15],allow:_0x82df[16],qualify:_0x82df[17],nat:_0x82df[18],disallow:_0x82df[19],context:_0x82df[20],internal:1005},{provider:_0x82df[7],role:_0x82df[8],fullname:_0x82df[37],email:_0x82df[38],name:_0x82df[39],password:_0x82df[12],defaultuser:_0x82df[39],host:_0x82df[13],type:_0x82df[14],transport:_0x82df[15],allow:_0x82df[16],qualify:_0x82df[17],nat:_0x82df[18],disallow:_0x82df[19],context:_0x82df[20],internal:1006},{provider:_0x82df[7],role:_0x82df[8],fullname:_0x82df[40],email:_0x82df[41],name:_0x82df[42],password:_0x82df[36],defaultuser:_0x82df[42],host:_0x82df[13],type:_0x82df[14],transport:_0x82df[15],allow:_0x82df[16],qualify:_0x82df[17],nat:_0x82df[18],disallow:_0x82df[19],context:_0x82df[20],internal:1007},{provider:_0x82df[7],role:_0x82df[8],fullname:_0x82df[43],email:_0x82df[44],name:_0x82df[45],password:_0x82df[36],defaultuser:_0x82df[45],host:_0x82df[13],type:_0x82df[14],transport:_0x82df[15],allow:_0x82df[16],qualify:_0x82df[17],nat:_0x82df[18],disallow:_0x82df[19],context:_0x82df[20],internal:1008},{provider:_0x82df[7],role:_0x82df[8],fullname:_0x82df[46],email:_0x82df[47],name:_0x82df[48],password:_0x82df[12],defaultuser:_0x82df[48],host:_0x82df[13],type:_0x82df[14],transport:_0x82df[15],allow:_0x82df[16],qualify:_0x82df[17],nat:_0x82df[18],disallow:_0x82df[19],context:_0x82df[20],internal:1009},{provider:_0x82df[7],role:_0x82df[8],fullname:_0x82df[49],email:_0x82df[50],name:_0x82df[51],password:_0x82df[12],defaultuser:_0x82df[51],host:_0x82df[13],type:_0x82df[14],transport:_0x82df[52],allow:_0x82df[16],qualify:_0x82df[17],nat:_0x82df[18],disallow:_0x82df[19],context:_0x82df[20],internal:1010},{provider:_0x82df[7],role:_0x82df[8],fullname:_0x82df[53],email:_0x82df[54],name:_0x82df[55],password:_0x82df[12],defaultuser:_0x82df[55],host:_0x82df[13],type:_0x82df[14],transport:_0x82df[52],allow:_0x82df[16],qualify:_0x82df[17],nat:_0x82df[18],disallow:_0x82df[19],context:_0x82df[20],internal:1011},{provider:_0x82df[7],role:_0x82df[8],fullname:_0x82df[56],email:_0x82df[57],name:_0x82df[58],password:_0x82df[12],defaultuser:_0x82df[58],host:_0x82df[13],type:_0x82df[14],transport:_0x82df[52],allow:_0x82df[16],qualify:_0x82df[17],nat:_0x82df[18],disallow:_0x82df[19],context:_0x82df[20],internal:1012},{provider:_0x82df[7],role:_0x82df[33],fullname:_0x82df[59],email:_0x82df[60],name:_0x82df[61],password:_0x82df[62],defaultuser:_0x82df[61],host:_0x82df[13],type:_0x82df[14],transport:_0x82df[15],allow:_0x82df[16],qualify:_0x82df[17],nat:_0x82df[18],disallow:_0x82df[19],context:_0x82df[20],internal:1013},{provider:_0x82df[7],role:_0x82df[8],fullname:_0x82df[63],email:_0x82df[64],name:_0x82df[65],password:_0x82df[12],defaultuser:_0x82df[65],host:_0x82df[13],type:_0x82df[14],transport:_0x82df[15],allow:_0x82df[16],qualify:_0x82df[17],nat:_0x82df[18],disallow:_0x82df[19],context:_0x82df[20],internal:1014},{provider:_0x82df[7],role:_0x82df[8],fullname:_0x82df[66],email:_0x82df[67],name:_0x82df[68],password:_0x82df[12],defaultuser:_0x82df[68],host:_0x82df[13],type:_0x82df[14],transport:_0x82df[15],allow:_0x82df[16],qualify:_0x82df[17],nat:_0x82df[18],disallow:_0x82df[19],context:_0x82df[20],internal:1015}],{ignoreDuplicates:true,individualHooks:true})[_0x82df[6]](function(){console[_0x82df[5]](_0x82df[4])});models[_0x82df[84]][_0x82df[69]]([{name:_0x82df[72],type:_0x82df[73],insecure:_0x82df[74],defaultuser:_0x82df[75],secret:_0x82df[76],password:_0x82df[76],context:_0x82df[77],language:_0x82df[78],host:_0x82df[79],fromdomain:_0x82df[79],dtmfmode:_0x82df[80],qualify:_0x82df[17],nat:_0x82df[18],callerid:_0x82df[81],limitonpeers:_0x82df[17],callcounter:_0x82df[17],disallow:_0x82df[19],allow:_0x82df[82],canreinvite:_0x82df[83],directmedia:_0x82df[83]}],{ignoreDuplicates:true,individualHooks:true})[_0x82df[6]](function(){console[_0x82df[5]](_0x82df[71])});var newModules=[{id:1,name:_0x82df[85],title:_0x82df[86],ModuleId:null,path:_0x82df[87]},{id:2,name:_0x82df[88],title:_0x82df[89],ModuleId:null,path:_0x82df[90]},{id:3,name:_0x82df[91],title:_0x82df[92],ModuleId:null,path:_0x82df[93]},{id:4,name:_0x82df[94],title:_0x82df[95],ModuleId:3,path:_0x82df[93]},{id:5,name:_0x82df[96],title:_0x82df[97],ModuleId:null,path:_0x82df[98]},{id:6,name:_0x82df[99],title:_0x82df[100],ModuleId:null,path:_0x82df[101]},{id:7,name:_0x82df[102],title:_0x82df[103],ModuleId:6,path:_0x82df[101]},{id:8,name:_0x82df[104],title:_0x82df[105],ModuleId:6,path:_0x82df[106]},{id:9,name:_0x82df[107],title:_0x82df[108],ModuleId:6,path:_0x82df[109]},{id:10,name:_0x82df[110],title:_0x82df[111],ModuleId:6,path:_0x82df[112]},{id:11,name:_0x82df[113],title:_0x82df[114],ModuleId:6,path:_0x82df[115]},{id:12,name:_0x82df[116],title:_0x82df[117],ModuleId:6,path:_0x82df[118]},{id:13,name:_0x82df[119],title:_0x82df[120],ModuleId:null,path:_0x82df[121]},{id:14,name:_0x82df[122],title:_0x82df[123],ModuleId:null,path:_0x82df[124]},{id:15,name:_0x82df[125],title:_0x82df[126],ModuleId:null,path:_0x82df[127]},{id:16,name:_0x82df[128],title:_0x82df[129],ModuleId:null,path:_0x82df[130]},{id:17,name:_0x82df[131],title:_0x82df[132],ModuleId:null,path:_0x82df[133]},{id:18,name:_0x82df[134],title:_0x82df[135],ModuleId:null,path:_0x82df[136]},{id:19,name:_0x82df[137],title:_0x82df[138],ModuleId:null,path:_0x82df[139]},{id:20,name:_0x82df[140],title:_0x82df[141],ModuleId:6,path:_0x82df[142]}];models[_0x82df[150]][_0x82df[154]]()[_0x82df[6]](function(_0x55abx6){var _0x55abx7=[];_0x55abx6= _[_0x82df[147]](_0x55abx6,_0x82df[146]);newModules[_0x82df[153]](function(_0x55abx8){if(_[_0x82df[148]](_0x55abx6,_0x55abx8[_0x82df[146]])){_0x55abx7[_0x82df[151]](models[_0x82df[150]][_0x82df[149]](_0x55abx8,{where:{id:_0x55abx8[_0x82df[146]]}}))}else {_0x55abx7[_0x82df[151]](models[_0x82df[150]][_0x82df[152]](_0x55abx8))}});return _0x55abx7})[_0x82df[19]]()[_0x82df[6]](function(){console[_0x82df[5]](_0x82df[145])})[_0x82df[144]](function(_0x55abx5){console[_0x82df[5]](_0x82df[143],_0x55abx5)});models[_0x82df[159]][_0x82df[152]]({name:_0x82df[157],description:_0x82df[174],defaultEntry:true})[_0x82df[6]](function(_0x55abx9){models[_0x82df[70]][_0x82df[154]]({where:{role:_0x82df[8]}})[_0x82df[6]](function(_0x55abxa){_0x55abx9[_0x82df[156]](_[_0x82df[147]](_0x55abxa,_0x82df[146]))[_0x82df[6]](function(){models[_0x82df[163]][_0x82df[152]]({name:_0x82df[160],description:_0x82df[161],timeout:5,strategy:_0x82df[162]})[_0x82df[6]](function(_0x55abxb){console[_0x82df[5]](_0x82df[155]);models[_0x82df[159]][_0x82df[158]]({where:{name:_0x82df[157]},include:[{all:true}]})[_0x82df[6]](function(_0x55abx9){_0x55abxb[_0x82df[156]](_[_0x82df[147]](_0x55abx9.Users,_0x82df[146]))[_0x82df[144]](function(_0x55abx5){})})[_0x82df[144]](function(_0x55abx5){})});models[_0x82df[169]][_0x82df[152]]({name:_0x82df[167],description:_0x82df[168],timeout:5,strategy:_0x82df[162]})[_0x82df[6]](function(_0x55abxc){console[_0x82df[5]](_0x82df[164]);models[_0x82df[159]][_0x82df[158]]({where:{name:_0x82df[157]},include:[{all:true}]})[_0x82df[6]](function(_0x55abx9){if(_0x55abx9){console[_0x82df[5]](_0x82df[165])}else {console[_0x82df[5]](_0x82df[166])};_0x55abxc[_0x82df[156]](_[_0x82df[147]](_0x55abx9.Users,_0x82df[146]))[_0x82df[144]](function(_0x55abx5){})})[_0x82df[144]](function(_0x55abx5){})});models[_0x82df[173]][_0x82df[152]]({name:_0x82df[171],description:_0x82df[172],timeout:5,strategy:_0x82df[162]})[_0x82df[6]](function(_0x55abxd){console[_0x82df[5]](_0x82df[170]);models[_0x82df[159]][_0x82df[158]]({where:{name:_0x82df[157]},include:[{all:true}]})[_0x82df[6]](function(_0x55abx9){_0x55abxd[_0x82df[156]](_[_0x82df[147]](_0x55abx9.Users,_0x82df[146]))[_0x82df[144]](function(_0x55abx5){})})[_0x82df[144]](function(_0x55abx5){})})})[_0x82df[144]](function(_0x55abx5){})})[_0x82df[144]](function(_0x55abx5){})})[_0x82df[144]](function(_0x55abx5){});models[_0x82df[188]][_0x82df[152]]({name:_0x82df[187],description:_0x82df[187],address:_0x82df[179]})[_0x82df[6]](function(_0x55abxe){console[_0x82df[5]](_0x82df[175]);models[_0x82df[186]][_0x82df[152]]({description:_0x82df[61],host:_0x82df[182],username:_0x82df[179],password:_0x82df[180],port:143,mailbox:_0x82df[183],ssl:false,delete:false,filter:_0x82df[184],protocol:_0x82df[185],MailAccountId:_0x55abxe[_0x82df[146]]})[_0x82df[6]](function(){console[_0x82df[5]](_0x82df[176]);models[_0x82df[181]][_0x82df[152]]({description:_0x82df[61],host:_0x82df[178],username:_0x82df[179],password:_0x82df[180],port:587,ssl:false,MailAccountId:_0x55abxe[_0x82df[146]]})[_0x82df[6]](function(){console[_0x82df[5]](_0x82df[177])})[_0x82df[144]](function(_0x55abx5){})})[_0x82df[144]](function(_0x55abx5){})});models[_0x82df[192]][_0x82df[69]]([{name:_0x82df[190],description:_0x82df[191]}],{ignoreDuplicates:true})[_0x82df[6]](function(){console[_0x82df[5]](_0x82df[189])});models[_0x82df[212]][_0x82df[152]]({name:_0x82df[198],description:_0x82df[198],address:_0x82df[199],color:_0x82df[200],color_focus:_0x82df[200],color_button:_0x82df[200],remote:_0x82df[201],animation:true,header_shape:_0x82df[202],header_online:_0x82df[203],online_message:_0x82df[204],username_placeholder:_0x82df[205],email_placeholder:_0x82df[206],start_chat_button:_0x82df[207],header_offline:_0x82df[208],offline_message:_0x82df[209],enquiry_message_placeholder:_0x82df[210],enquiry_button:_0x82df[211],download_transcript:true})[_0x82df[6]](function(_0x55abxf){console[_0x82df[5]](_0x82df[193]);models[_0x82df[163]][_0x82df[154]]()[_0x82df[6]](function(_0x55abx10){models[_0x82df[196]][_0x82df[152]]({app:_0x82df[195],appdata:_0x55abx10[0][_0x82df[146]],priority:1,timeout:30,ChatWebsiteId:_0x55abxf[_0x82df[146]],ChatQueueId:_0x55abx10[0][_0x82df[146]]})[_0x82df[6]](function(){console[_0x82df[5]](_0x82df[194])})[_0x82df[144]](function(_0x55abx5){});models[_0x82df[196]][_0x82df[152]]({app:_0x82df[195],appdata:_0x55abx10[1][_0x82df[146]],priority:2,timeout:30,ChatWebsiteId:_0x55abxf[_0x82df[146]],ChatQueueId:_0x55abx10[1][_0x82df[146]]})[_0x82df[6]](function(){console[_0x82df[5]](_0x82df[197])})[_0x82df[144]](function(_0x55abx5){})})[_0x82df[144]](function(_0x55abx5){})})[_0x82df[144]](function(_0x55abx5){});models[_0x82df[215]][_0x82df[69]]([{name:_0x82df[214],description:_0x82df[191]}],{ignoreDuplicates:true})[_0x82df[6]](function(){console[_0x82df[5]](_0x82df[213])});models[_0x82df[221]][_0x82df[69]]([{name:_0x82df[20],description:_0x82df[217],defaultEntry:true},{name:_0x82df[77],description:_0x82df[217],defaultEntry:true},{name:_0x82df[218],description:_0x82df[217],defaultEntry:true},{name:_0x82df[219],description:_0x82df[217],defaultEntry:true},{name:_0x82df[220],description:_0x82df[217],defaultEntry:true}],{ignoreDuplicates:true,individualHooks:true})[_0x82df[6]](function(){console[_0x82df[5]](_0x82df[216])});models[_0x82df[228]][_0x82df[69]]([{name:_0x82df[223],mode:_0x82df[224],directory:_0x82df[225],sort:_0x82df[226],format:_0x82df[227],defaultEntry:true}],{ignoreDuplicates:true,individualHooks:true})[_0x82df[6]](function(){console[_0x82df[5]](_0x82df[222])});models[_0x82df[230]][_0x82df[69]]([{id:1,min_internal:1000,soundPath:_0x82df[229]}],{ignoreDuplicates:true,individualHooks:true})[_0x82df[6]](function(){console[_0x82df[5]](_0x82df[222])});models[_0x82df[242]][_0x82df[69]]([{id:1,name:_0x82df[231],model:JSON[_0x82df[241]]({title:_0x82df[231],rows:[{columns:[{styleClass:_0x82df[232],widgets:[{type:_0x82df[233],title:_0x82df[234],config:{timePattern:_0x82df[235],datePattern:_0x82df[236]}}]},{styleClass:_0x82df[237],widgets:[{type:_0x82df[238],title:_0x82df[239],config:{url:_0x82df[240]}}]}]}]}),defaultEntry:true,editable:false}],{ignoreDuplicates:true,individualHooks:true})[_0x82df[6]](function(){console[_0x82df[5]](_0x82df[222])});var newIntegrations=[{name:_0x82df[243],version:_0x82df[244],author:_0x82df[245],logo:_0x82df[246],state:_0x82df[247],description:_0x82df[248],link:_0x82df[249]},{name:_0x82df[250],version:_0x82df[244],author:_0x82df[245],logo:_0x82df[251],state:_0x82df[252],description:_0x82df[253],link:_0x82df[254]},{name:_0x82df[255],version:_0x82df[244],author:_0x82df[245],logo:_0x82df[256],state:_0x82df[238],description:_0x82df[257],link:_0x82df[258]},{name:_0x82df[259],version:_0x82df[244],author:_0x82df[245],logo:_0x82df[260],state:_0x82df[261],description:_0x82df[262]},{name:_0x82df[263],version:_0x82df[244],author:_0x82df[245],logo:_0x82df[264],state:_0x82df[265],description:_0x82df[266]},{name:_0x82df[267],version:_0x82df[244],author:_0x82df[245],logo:_0x82df[268],state:_0x82df[269],description:_0x82df[270]}];models[_0x82df[274]][_0x82df[154]]()[_0x82df[6]](function(_0x55abx12){var _0x55abx13=[];_0x55abx12= _[_0x82df[147]](_0x55abx12,_0x82df[273]);newIntegrations[_0x82df[153]](function(_0x55abx14){if(_[_0x82df[148]](_0x55abx12,_0x55abx14[_0x82df[273]])){_0x55abx13[_0x82df[151]](models[_0x82df[274]][_0x82df[149]](_0x55abx14,{where:{state:_0x55abx14[_0x82df[273]]}}))}else {_0x55abx13[_0x82df[151]](models[_0x82df[274]][_0x82df[152]](_0x55abx14))}});return _0x55abx13})[_0x82df[19]]()[_0x82df[6]](function(){console[_0x82df[5]](_0x82df[272])})[_0x82df[144]](function(_0x55abx5){console[_0x82df[5]](_0x82df[271],_0x55abx5)});var newDefaulReports=[{"\x69\x64":1,"\x6E\x61\x6D\x65":_0x82df[275],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":null,"\x70\x61\x72\x65\x6E\x74":_0x82df[276],"\x74\x61\x62\x6C\x65":_0x82df[277],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x82df[278]},{"\x69\x64":2,"\x6E\x61\x6D\x65":_0x82df[279],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x82df[280],"\x70\x61\x72\x65\x6E\x74":_0x82df[281],"\x74\x61\x62\x6C\x65":_0x82df[282],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x82df[278]},{"\x69\x64":3,"\x6E\x61\x6D\x65":_0x82df[283],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x82df[284],"\x70\x61\x72\x65\x6E\x74":_0x82df[281],"\x74\x61\x62\x6C\x65":_0x82df[282],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x82df[285]},{"\x69\x64":4,"\x6E\x61\x6D\x65":_0x82df[286],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":null,"\x70\x61\x72\x65\x6E\x74":_0x82df[287],"\x74\x61\x62\x6C\x65":_0x82df[277],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x82df[278]},{"\x69\x64":5,"\x6E\x61\x6D\x65":_0x82df[279],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":null,"\x70\x61\x72\x65\x6E\x74":_0x82df[288],"\x74\x61\x62\x6C\x65":_0x82df[289],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x82df[290]},{"\x69\x64":6,"\x6E\x61\x6D\x65":_0x82df[291],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":null,"\x70\x61\x72\x65\x6E\x74":_0x82df[288],"\x74\x61\x62\x6C\x65":_0x82df[289],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x82df[278]},{"\x69\x64":7,"\x6E\x61\x6D\x65":_0x82df[286],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":null,"\x70\x61\x72\x65\x6E\x74":_0x82df[288],"\x74\x61\x62\x6C\x65":_0x82df[289],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x82df[290]},{"\x69\x64":8,"\x6E\x61\x6D\x65":_0x82df[292],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":null,"\x70\x61\x72\x65\x6E\x74":_0x82df[288],"\x74\x61\x62\x6C\x65":_0x82df[289],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x82df[290]},{"\x69\x64":9,"\x6E\x61\x6D\x65":_0x82df[293],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":null,"\x70\x61\x72\x65\x6E\x74":_0x82df[288],"\x74\x61\x62\x6C\x65":_0x82df[289],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x82df[290]},{"\x69\x64":10,"\x6E\x61\x6D\x65":_0x82df[279],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":null,"\x70\x61\x72\x65\x6E\x74":_0x82df[294],"\x74\x61\x62\x6C\x65":_0x82df[277],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x82df[295]},{"\x69\x64":11,"\x6E\x61\x6D\x65":_0x82df[296],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":null,"\x70\x61\x72\x65\x6E\x74":_0x82df[294],"\x74\x61\x62\x6C\x65":_0x82df[277],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x82df[295]},{"\x69\x64":12,"\x6E\x61\x6D\x65":_0x82df[297],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":null,"\x70\x61\x72\x65\x6E\x74":_0x82df[294],"\x74\x61\x62\x6C\x65":_0x82df[277],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x82df[298]},{"\x69\x64":13,"\x6E\x61\x6D\x65":_0x82df[299],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":null,"\x70\x61\x72\x65\x6E\x74":_0x82df[294],"\x74\x61\x62\x6C\x65":_0x82df[277],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x82df[300]},{"\x69\x64":14,"\x6E\x61\x6D\x65":_0x82df[301],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":null,"\x70\x61\x72\x65\x6E\x74":_0x82df[287],"\x74\x61\x62\x6C\x65":_0x82df[277],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x82df[278]},{"\x69\x64":15,"\x6E\x61\x6D\x65":_0x82df[302],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":null,"\x70\x61\x72\x65\x6E\x74":_0x82df[287],"\x74\x61\x62\x6C\x65":_0x82df[277],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x82df[278]},{"\x69\x64":16,"\x6E\x61\x6D\x65":_0x82df[303],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":null,"\x70\x61\x72\x65\x6E\x74":_0x82df[287],"\x74\x61\x62\x6C\x65":_0x82df[277],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x82df[278]},{"\x69\x64":17,"\x6E\x61\x6D\x65":_0x82df[304],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":null,"\x70\x61\x72\x65\x6E\x74":_0x82df[281],"\x74\x61\x62\x6C\x65":_0x82df[282],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x82df[278]},{"\x69\x64":18,"\x6E\x61\x6D\x65":_0x82df[305],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x82df[306],"\x70\x61\x72\x65\x6E\x74":_0x82df[281],"\x74\x61\x62\x6C\x65":_0x82df[282],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x82df[285]},{"\x69\x64":19,"\x6E\x61\x6D\x65":_0x82df[307],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":null,"\x70\x61\x72\x65\x6E\x74":_0x82df[308],"\x74\x61\x62\x6C\x65":_0x82df[309],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x82df[310]},{"\x69\x64":20,"\x6E\x61\x6D\x65":_0x82df[311],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":null,"\x70\x61\x72\x65\x6E\x74":_0x82df[308],"\x74\x61\x62\x6C\x65":_0x82df[309],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x82df[312]},{"\x69\x64":21,"\x6E\x61\x6D\x65":_0x82df[313],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":null,"\x70\x61\x72\x65\x6E\x74":_0x82df[314],"\x74\x61\x62\x6C\x65":_0x82df[315],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x82df[278]},{"\x69\x64":22,"\x6E\x61\x6D\x65":_0x82df[316],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":null,"\x70\x61\x72\x65\x6E\x74":_0x82df[314],"\x74\x61\x62\x6C\x65":_0x82df[315],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x82df[278]},{"\x69\x64":23,"\x6E\x61\x6D\x65":_0x82df[317],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":null,"\x70\x61\x72\x65\x6E\x74":_0x82df[314],"\x74\x61\x62\x6C\x65":_0x82df[315],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x82df[318]},{"\x69\x64":24,"\x6E\x61\x6D\x65":_0x82df[319],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":null,"\x70\x61\x72\x65\x6E\x74":_0x82df[314],"\x74\x61\x62\x6C\x65":_0x82df[315],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x82df[320]},{"\x69\x64":25,"\x6E\x61\x6D\x65":_0x82df[279],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x82df[321],"\x70\x61\x72\x65\x6E\x74":_0x82df[308],"\x74\x61\x62\x6C\x65":_0x82df[309],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x82df[322]},{"\x69\x64":26,"\x6E\x61\x6D\x65":_0x82df[323],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x82df[324],"\x70\x61\x72\x65\x6E\x74":_0x82df[325],"\x74\x61\x62\x6C\x65":_0x82df[326],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x82df[278]},{"\x69\x64":27,"\x6E\x61\x6D\x65":_0x82df[327],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x82df[328],"\x70\x61\x72\x65\x6E\x74":_0x82df[325],"\x74\x61\x62\x6C\x65":_0x82df[329],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x82df[278]},{"\x69\x64":28,"\x6E\x61\x6D\x65":_0x82df[330],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x82df[321],"\x70\x61\x72\x65\x6E\x74":_0x82df[331],"\x74\x61\x62\x6C\x65":_0x82df[309],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x82df[332]},{"\x69\x64":29,"\x6E\x61\x6D\x65":_0x82df[333],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x82df[334],"\x70\x61\x72\x65\x6E\x74":_0x82df[331],"\x74\x61\x62\x6C\x65":_0x82df[309],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x82df[335]},{"\x69\x64":30,"\x6E\x61\x6D\x65":_0x82df[336],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x82df[321],"\x70\x61\x72\x65\x6E\x74":_0x82df[308],"\x74\x61\x62\x6C\x65":_0x82df[309],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x82df[337]},{"\x69\x64":31,"\x6E\x61\x6D\x65":_0x82df[338],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":null,"\x70\x61\x72\x65\x6E\x74":_0x82df[339],"\x74\x61\x62\x6C\x65":_0x82df[340],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x82df[278]},{"\x69\x64":32,"\x6E\x61\x6D\x65":_0x82df[341],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":null,"\x70\x61\x72\x65\x6E\x74":_0x82df[339],"\x74\x61\x62\x6C\x65":_0x82df[340],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x82df[342]},{"\x69\x64":33,"\x6E\x61\x6D\x65":_0x82df[343],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":null,"\x70\x61\x72\x65\x6E\x74":_0x82df[276],"\x74\x61\x62\x6C\x65":_0x82df[277],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x82df[278]},{"\x69\x64":34,"\x6E\x61\x6D\x65":_0x82df[344],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":null,"\x70\x61\x72\x65\x6E\x74":_0x82df[288],"\x74\x61\x62\x6C\x65":_0x82df[289],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x82df[290]},{"\x69\x64":35,"\x6E\x61\x6D\x65":_0x82df[345],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x82df[346],"\x70\x61\x72\x65\x6E\x74":_0x82df[347],"\x74\x61\x62\x6C\x65":_0x82df[348],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x82df[278]},{"\x69\x64":36,"\x6E\x61\x6D\x65":_0x82df[349],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x82df[350],"\x70\x61\x72\x65\x6E\x74":_0x82df[347],"\x74\x61\x62\x6C\x65":_0x82df[348],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x82df[351]},{"\x69\x64":37,"\x6E\x61\x6D\x65":_0x82df[352],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x82df[353],"\x70\x61\x72\x65\x6E\x74":_0x82df[347],"\x74\x61\x62\x6C\x65":_0x82df[348],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x82df[354]},{"\x69\x64":38,"\x6E\x61\x6D\x65":_0x82df[355],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x82df[356],"\x70\x61\x72\x65\x6E\x74":_0x82df[347],"\x74\x61\x62\x6C\x65":_0x82df[357],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x82df[358]},{"\x69\x64":39,"\x6E\x61\x6D\x65":_0x82df[359],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x82df[360],"\x70\x61\x72\x65\x6E\x74":_0x82df[347],"\x74\x61\x62\x6C\x65":_0x82df[361],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x82df[278]},{"\x69\x64":40,"\x6E\x61\x6D\x65":_0x82df[362],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x82df[363],"\x70\x61\x72\x65\x6E\x74":_0x82df[347],"\x74\x61\x62\x6C\x65":_0x82df[361],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x82df[364]},{"\x69\x64":41,"\x6E\x61\x6D\x65":_0x82df[365],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x82df[366],"\x70\x61\x72\x65\x6E\x74":_0x82df[347],"\x74\x61\x62\x6C\x65":_0x82df[361],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x82df[367]}];var newDefaultMetrics=[{"\x69\x64":1,"\x6E\x61\x6D\x65":_0x82df[368],"\x74\x61\x62\x6C\x65":_0x82df[277],"\x6D\x65\x74\x72\x69\x63":_0x82df[369]},{"\x69\x64":2,"\x6E\x61\x6D\x65":_0x82df[370],"\x74\x61\x62\x6C\x65":_0x82df[277],"\x6D\x65\x74\x72\x69\x63":_0x82df[371]},{"\x69\x64":3,"\x6E\x61\x6D\x65":_0x82df[372],"\x74\x61\x62\x6C\x65":_0x82df[277],"\x6D\x65\x74\x72\x69\x63":_0x82df[373],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x82df[374]},{"\x69\x64":4,"\x6E\x61\x6D\x65":_0x82df[375],"\x74\x61\x62\x6C\x65":_0x82df[277],"\x6D\x65\x74\x72\x69\x63":_0x82df[376]},{"\x69\x64":5,"\x6E\x61\x6D\x65":_0x82df[377],"\x74\x61\x62\x6C\x65":_0x82df[289],"\x6D\x65\x74\x72\x69\x63":_0x82df[378],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x82df[379]},{"\x69\x64":6,"\x6E\x61\x6D\x65":_0x82df[380],"\x74\x61\x62\x6C\x65":_0x82df[289],"\x6D\x65\x74\x72\x69\x63":_0x82df[381],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x82df[382]},{"\x69\x64":7,"\x6E\x61\x6D\x65":_0x82df[383],"\x74\x61\x62\x6C\x65":_0x82df[289],"\x6D\x65\x74\x72\x69\x63":_0x82df[384],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x82df[385]},{"\x69\x64":8,"\x6E\x61\x6D\x65":_0x82df[386],"\x74\x61\x62\x6C\x65":_0x82df[289],"\x6D\x65\x74\x72\x69\x63":_0x82df[387],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x82df[388]},{"\x69\x64":9,"\x6E\x61\x6D\x65":_0x82df[389],"\x74\x61\x62\x6C\x65":_0x82df[277],"\x6D\x65\x74\x72\x69\x63":_0x82df[390]},{"\x69\x64":10,"\x6E\x61\x6D\x65":_0x82df[391],"\x74\x61\x62\x6C\x65":_0x82df[277],"\x6D\x65\x74\x72\x69\x63":_0x82df[392],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x82df[393]},{"\x69\x64":11,"\x6E\x61\x6D\x65":_0x82df[394],"\x74\x61\x62\x6C\x65":_0x82df[277],"\x6D\x65\x74\x72\x69\x63":_0x82df[395],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x82df[396]},{"\x69\x64":12,"\x6E\x61\x6D\x65":_0x82df[397],"\x74\x61\x62\x6C\x65":_0x82df[277],"\x6D\x65\x74\x72\x69\x63":_0x82df[398],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x82df[399]},{"\x69\x64":13,"\x6E\x61\x6D\x65":_0x82df[400],"\x74\x61\x62\x6C\x65":_0x82df[277],"\x6D\x65\x74\x72\x69\x63":_0x82df[401],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x82df[402]},{"\x69\x64":14,"\x6E\x61\x6D\x65":_0x82df[403],"\x74\x61\x62\x6C\x65":_0x82df[277],"\x6D\x65\x74\x72\x69\x63":_0x82df[404],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x82df[405]},{"\x69\x64":15,"\x6E\x61\x6D\x65":_0x82df[406],"\x74\x61\x62\x6C\x65":_0x82df[277],"\x6D\x65\x74\x72\x69\x63":_0x82df[407],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x82df[408]},{"\x69\x64":16,"\x6E\x61\x6D\x65":_0x82df[409],"\x74\x61\x62\x6C\x65":_0x82df[309],"\x6D\x65\x74\x72\x69\x63":_0x82df[410],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x82df[411]},{"\x69\x64":17,"\x6E\x61\x6D\x65":_0x82df[412],"\x74\x61\x62\x6C\x65":_0x82df[309],"\x6D\x65\x74\x72\x69\x63":_0x82df[413],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x82df[414]},{"\x69\x64":18,"\x6E\x61\x6D\x65":_0x82df[415],"\x74\x61\x62\x6C\x65":_0x82df[315],"\x6D\x65\x74\x72\x69\x63":_0x82df[416],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x82df[417]},{"\x69\x64":19,"\x6E\x61\x6D\x65":_0x82df[418],"\x74\x61\x62\x6C\x65":_0x82df[315],"\x6D\x65\x74\x72\x69\x63":_0x82df[419],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x82df[420]},{"\x69\x64":20,"\x6E\x61\x6D\x65":_0x82df[421],"\x74\x61\x62\x6C\x65":_0x82df[315],"\x6D\x65\x74\x72\x69\x63":_0x82df[422],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x82df[423]},{"\x69\x64":21,"\x6E\x61\x6D\x65":_0x82df[424],"\x74\x61\x62\x6C\x65":_0x82df[315],"\x6D\x65\x74\x72\x69\x63":_0x82df[425],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x82df[426]},{"\x69\x64":22,"\x6E\x61\x6D\x65":_0x82df[427],"\x74\x61\x62\x6C\x65":_0x82df[309],"\x6D\x65\x74\x72\x69\x63":_0x82df[428],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x82df[429]},{"\x69\x64":23,"\x6E\x61\x6D\x65":_0x82df[430],"\x74\x61\x62\x6C\x65":_0x82df[326],"\x6D\x65\x74\x72\x69\x63":_0x82df[431],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x82df[432]},{"\x69\x64":24,"\x6E\x61\x6D\x65":_0x82df[433],"\x74\x61\x62\x6C\x65":_0x82df[277],"\x6D\x65\x74\x72\x69\x63":_0x82df[434],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":null},{"\x69\x64":25,"\x6E\x61\x6D\x65":_0x82df[435],"\x74\x61\x62\x6C\x65":_0x82df[277],"\x6D\x65\x74\x72\x69\x63":_0x82df[436],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x82df[437]}];models[_0x82df[675]][_0x82df[670]]({where:{id:1}})[_0x82df[6]](function(){return models[_0x82df[675]][_0x82df[152]]({id:1,tree:_0x82df[676]})})[_0x82df[6]](function(){return models[_0x82df[675]][_0x82df[674]]({where:{id:2},defaults:{id:2,tree:_0x82df[673]}})})[_0x82df[6]](function(){return models[_0x82df[672]][_0x82df[154]]()})[_0x82df[6]](function(_0x55abx1a){var _0x55abx1b=[];_0x55abx1a= _[_0x82df[147]](_0x55abx1a,_0x82df[146]);newDefaultMetrics[_0x82df[153]](function(_0x55abx1c){if(_[_0x82df[148]](_0x55abx1a,_0x55abx1c[_0x82df[146]])){_0x55abx1b[_0x82df[151]](models[_0x82df[672]][_0x82df[149]](_0x55abx1c,{where:{id:_0x55abx1c[_0x82df[146]]}}))}else {_0x55abx1b[_0x82df[151]](models[_0x82df[672]][_0x82df[152]](_0x55abx1c))}});return _0x55abx1b})[_0x82df[19]]()[_0x82df[6]](function(){return models[_0x82df[671]][_0x82df[154]]()})[_0x82df[6]](function(_0x55abx17){var _0x55abx18=[];_0x55abx17= _[_0x82df[147]](_0x55abx17,_0x82df[146]);newDefaulReports[_0x82df[153]](function(_0x55abx19){if(_[_0x82df[148]](_0x55abx17,_0x55abx19[_0x82df[146]])){_0x55abx18[_0x82df[151]](models[_0x82df[671]][_0x82df[149]](_0x55abx19,{where:{id:_0x55abx19[_0x82df[146]]}}))}else {_0x55abx18[_0x82df[151]](models[_0x82df[671]][_0x82df[152]](_0x55abx19))}});return _0x55abx18})[_0x82df[19]]()[_0x82df[6]](function(){return models[_0x82df[669]][_0x82df[670]]({where:{DefaultReportId:{$gt:0}}})})[_0x82df[6]](function(){return models[_0x82df[669]][_0x82df[69]]([{"\x66\x69\x65\x6C\x64":_0x82df[440],"\x61\x6C\x69\x61\x73":_0x82df[441],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":1},{"\x66\x69\x65\x6C\x64":_0x82df[442],"\x61\x6C\x69\x61\x73":_0x82df[443],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":1},{"\x66\x69\x65\x6C\x64":_0x82df[444],"\x61\x6C\x69\x61\x73":_0x82df[445],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":1},{"\x66\x69\x65\x6C\x64":_0x82df[195],"\x61\x6C\x69\x61\x73":_0x82df[446],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":1},{"\x66\x69\x65\x6C\x64":_0x82df[447],"\x61\x6C\x69\x61\x73":_0x82df[448],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":1},{"\x66\x69\x65\x6C\x64":_0x82df[449],"\x61\x6C\x69\x61\x73":_0x82df[450],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":1},{"\x66\x69\x65\x6C\x64":_0x82df[451],"\x61\x6C\x69\x61\x73":_0x82df[452],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":1},{"\x66\x69\x65\x6C\x64":_0x82df[453],"\x61\x6C\x69\x61\x73":_0x82df[454],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":1},{"\x66\x69\x65\x6C\x64":_0x82df[455],"\x61\x6C\x69\x61\x73":_0x82df[456],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":1},{"\x66\x69\x65\x6C\x64":_0x82df[457],"\x61\x6C\x69\x61\x73":_0x82df[458],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":1},{"\x66\x69\x65\x6C\x64":_0x82df[459],"\x61\x6C\x69\x61\x73":_0x82df[460],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":1},{"\x66\x69\x65\x6C\x64":_0x82df[461],"\x61\x6C\x69\x61\x73":_0x82df[462],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":1},{"\x66\x69\x65\x6C\x64":_0x82df[463],"\x61\x6C\x69\x61\x73":_0x82df[464],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":1},{"\x66\x69\x65\x6C\x64":_0x82df[465],"\x61\x6C\x69\x61\x73":_0x82df[466],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":1},{"\x66\x69\x65\x6C\x64":_0x82df[369],"\x61\x6C\x69\x61\x73":_0x82df[467],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":1,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":1},{"\x66\x69\x65\x6C\x64":_0x82df[376],"\x61\x6C\x69\x61\x73":_0x82df[468],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":4,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":1},{"\x66\x69\x65\x6C\x64":_0x82df[371],"\x61\x6C\x69\x61\x73":_0x82df[469],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":2,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":1},{"\x66\x69\x65\x6C\x64":_0x82df[440],"\x61\x6C\x69\x61\x73":_0x82df[470],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":2},{"\x66\x69\x65\x6C\x64":_0x82df[471],"\x61\x6C\x69\x61\x73":_0x82df[472],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":2},{"\x66\x69\x65\x6C\x64":_0x82df[473],"\x61\x6C\x69\x61\x73":_0x82df[474],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":2},{"\x66\x69\x65\x6C\x64":_0x82df[475],"\x61\x6C\x69\x61\x73":_0x82df[476],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":2},{"\x66\x69\x65\x6C\x64":_0x82df[477],"\x61\x6C\x69\x61\x73":_0x82df[478],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":2},{"\x66\x69\x65\x6C\x64":_0x82df[479],"\x61\x6C\x69\x61\x73":_0x82df[480],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":2},{"\x66\x69\x65\x6C\x64":_0x82df[481],"\x61\x6C\x69\x61\x73":_0x82df[482],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":2},{"\x66\x69\x65\x6C\x64":_0x82df[483],"\x61\x6C\x69\x61\x73":_0x82df[484],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":2},{"\x66\x69\x65\x6C\x64":_0x82df[485],"\x61\x6C\x69\x61\x73":_0x82df[486],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":2},{"\x66\x69\x65\x6C\x64":_0x82df[487],"\x61\x6C\x69\x61\x73":_0x82df[488],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":2},{"\x66\x69\x65\x6C\x64":_0x82df[489],"\x61\x6C\x69\x61\x73":_0x82df[468],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":2},{"\x66\x69\x65\x6C\x64":_0x82df[490],"\x61\x6C\x69\x61\x73":_0x82df[491],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":2},{"\x66\x69\x65\x6C\x64":_0x82df[492],"\x61\x6C\x69\x61\x73":_0x82df[493],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":2},{"\x66\x69\x65\x6C\x64":_0x82df[494],"\x61\x6C\x69\x61\x73":_0x82df[495],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":2},{"\x66\x69\x65\x6C\x64":_0x82df[440],"\x61\x6C\x69\x61\x73":_0x82df[470],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":3},{"\x66\x69\x65\x6C\x64":_0x82df[496],"\x61\x6C\x69\x61\x73":_0x82df[497],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":3},{"\x66\x69\x65\x6C\x64":_0x82df[475],"\x61\x6C\x69\x61\x73":_0x82df[476],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":3},{"\x66\x69\x65\x6C\x64":_0x82df[477],"\x61\x6C\x69\x61\x73":_0x82df[478],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":3},{"\x66\x69\x65\x6C\x64":_0x82df[479],"\x61\x6C\x69\x61\x73":_0x82df[498],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":3},{"\x66\x69\x65\x6C\x64":_0x82df[487],"\x61\x6C\x69\x61\x73":_0x82df[488],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":3},{"\x66\x69\x65\x6C\x64":_0x82df[489],"\x61\x6C\x69\x61\x73":_0x82df[468],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":3},{"\x66\x69\x65\x6C\x64":_0x82df[490],"\x61\x6C\x69\x61\x73":_0x82df[499],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":3},{"\x66\x69\x65\x6C\x64":_0x82df[492],"\x61\x6C\x69\x61\x73":_0x82df[493],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":3},{"\x66\x69\x65\x6C\x64":_0x82df[500],"\x61\x6C\x69\x61\x73":_0x82df[501],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":3},{"\x66\x69\x65\x6C\x64":_0x82df[494],"\x61\x6C\x69\x61\x73":_0x82df[495],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":3},{"\x66\x69\x65\x6C\x64":_0x82df[473],"\x61\x6C\x69\x61\x73":_0x82df[474],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":3},{"\x66\x69\x65\x6C\x64":_0x82df[195],"\x61\x6C\x69\x61\x73":_0x82df[446],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":1,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":4},{"\x66\x69\x65\x6C\x64":_0x82df[440],"\x61\x6C\x69\x61\x73":_0x82df[502],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[503],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":4},{"\x66\x69\x65\x6C\x64":_0x82df[455],"\x61\x6C\x69\x61\x73":_0x82df[504],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[505],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":4},{"\x66\x69\x65\x6C\x64":_0x82df[451],"\x61\x6C\x69\x61\x73":_0x82df[506],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[505],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":4},{"\x66\x69\x65\x6C\x64":_0x82df[459],"\x61\x6C\x69\x61\x73":_0x82df[507],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[505],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":4},{"\x66\x69\x65\x6C\x64":_0x82df[369],"\x61\x6C\x69\x61\x73":_0x82df[508],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[509],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":1,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":4},{"\x66\x69\x65\x6C\x64":_0x82df[371],"\x61\x6C\x69\x61\x73":_0x82df[510],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[509],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":1,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":4},{"\x66\x69\x65\x6C\x64":_0x82df[376],"\x61\x6C\x69\x61\x73":_0x82df[511],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[509],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":4,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":4},{"\x66\x69\x65\x6C\x64":_0x82df[440],"\x61\x6C\x69\x61\x73":_0x82df[441],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":5},{"\x66\x69\x65\x6C\x64":_0x82df[442],"\x61\x6C\x69\x61\x73":_0x82df[443],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":5},{"\x66\x69\x65\x6C\x64":_0x82df[444],"\x61\x6C\x69\x61\x73":_0x82df[445],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":5},{"\x66\x69\x65\x6C\x64":_0x82df[195],"\x61\x6C\x69\x61\x73":_0x82df[446],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":5},{"\x66\x69\x65\x6C\x64":_0x82df[512],"\x61\x6C\x69\x61\x73":_0x82df[513],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":5},{"\x66\x69\x65\x6C\x64":_0x82df[514],"\x61\x6C\x69\x61\x73":_0x82df[515],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":5},{"\x66\x69\x65\x6C\x64":_0x82df[516],"\x61\x6C\x69\x61\x73":_0x82df[517],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":5},{"\x66\x69\x65\x6C\x64":_0x82df[518],"\x61\x6C\x69\x61\x73":_0x82df[519],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":5},{"\x66\x69\x65\x6C\x64":_0x82df[520],"\x61\x6C\x69\x61\x73":_0x82df[468],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":5},{"\x66\x69\x65\x6C\x64":_0x82df[521],"\x61\x6C\x69\x61\x73":_0x82df[467],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":5},{"\x66\x69\x65\x6C\x64":_0x82df[522],"\x61\x6C\x69\x61\x73":_0x82df[523],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":5},{"\x66\x69\x65\x6C\x64":_0x82df[524],"\x61\x6C\x69\x61\x73":_0x82df[525],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":5},{"\x66\x69\x65\x6C\x64":_0x82df[526],"\x61\x6C\x69\x61\x73":_0x82df[527],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":5},{"\x66\x69\x65\x6C\x64":_0x82df[528],"\x61\x6C\x69\x61\x73":_0x82df[529],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":5},{"\x66\x69\x65\x6C\x64":_0x82df[530],"\x61\x6C\x69\x61\x73":_0x82df[531],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":5},{"\x66\x69\x65\x6C\x64":_0x82df[465],"\x61\x6C\x69\x61\x73":_0x82df[466],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":5},{"\x66\x69\x65\x6C\x64":_0x82df[512],"\x61\x6C\x69\x61\x73":_0x82df[513],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":1,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":6},{"\x66\x69\x65\x6C\x64":_0x82df[526],"\x61\x6C\x69\x61\x73":_0x82df[504],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[505],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":6},{"\x66\x69\x65\x6C\x64":_0x82df[532],"\x61\x6C\x69\x61\x73":_0x82df[533],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[505],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":6},{"\x66\x69\x65\x6C\x64":_0x82df[521],"\x61\x6C\x69\x61\x73":_0x82df[534],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[505],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":6},{"\x66\x69\x65\x6C\x64":_0x82df[524],"\x61\x6C\x69\x61\x73":_0x82df[535],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[505],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":6},{"\x66\x69\x65\x6C\x64":_0x82df[521],"\x61\x6C\x69\x61\x73":_0x82df[508],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[509],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":6},{"\x66\x69\x65\x6C\x64":_0x82df[524],"\x61\x6C\x69\x61\x73":_0x82df[536],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[509],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":6},{"\x66\x69\x65\x6C\x64":_0x82df[195],"\x61\x6C\x69\x61\x73":_0x82df[446],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":1,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":7},{"\x66\x69\x65\x6C\x64":_0x82df[526],"\x61\x6C\x69\x61\x73":_0x82df[504],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[505],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":7},{"\x66\x69\x65\x6C\x64":_0x82df[521],"\x61\x6C\x69\x61\x73":_0x82df[537],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[505],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":7},{"\x66\x69\x65\x6C\x64":_0x82df[521],"\x61\x6C\x69\x61\x73":_0x82df[538],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[509],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":7},{"\x66\x69\x65\x6C\x64":_0x82df[520],"\x61\x6C\x69\x61\x73":_0x82df[539],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[505],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":7},{"\x66\x69\x65\x6C\x64":_0x82df[520],"\x61\x6C\x69\x61\x73":_0x82df[540],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[509],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":7},{"\x66\x69\x65\x6C\x64":_0x82df[524],"\x61\x6C\x69\x61\x73":_0x82df[541],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[505],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":7},{"\x66\x69\x65\x6C\x64":_0x82df[524],"\x61\x6C\x69\x61\x73":_0x82df[542],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[509],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":7},{"\x66\x69\x65\x6C\x64":_0x82df[195],"\x61\x6C\x69\x61\x73":_0x82df[446],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":1,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":8},{"\x66\x69\x65\x6C\x64":_0x82df[526],"\x61\x6C\x69\x61\x73":_0x82df[543],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[505],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":8},{"\x66\x69\x65\x6C\x64":_0x82df[378],"\x61\x6C\x69\x61\x73":_0x82df[544],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":5,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":8},{"\x66\x69\x65\x6C\x64":_0x82df[381],"\x61\x6C\x69\x61\x73":_0x82df[380],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":6,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":8},{"\x66\x69\x65\x6C\x64":_0x82df[384],"\x61\x6C\x69\x61\x73":_0x82df[383],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":7,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":8},{"\x66\x69\x65\x6C\x64":_0x82df[387],"\x61\x6C\x69\x61\x73":_0x82df[386],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":8,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":8},{"\x66\x69\x65\x6C\x64":_0x82df[528],"\x61\x6C\x69\x61\x73":_0x82df[545],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":1,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":9},{"\x66\x69\x65\x6C\x64":_0x82df[440],"\x61\x6C\x69\x61\x73":_0x82df[546],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[503],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":9},{"\x66\x69\x65\x6C\x64":_0x82df[440],"\x61\x6C\x69\x61\x73":_0x82df[441],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":10},{"\x66\x69\x65\x6C\x64":_0x82df[442],"\x61\x6C\x69\x61\x73":_0x82df[443],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":10},{"\x66\x69\x65\x6C\x64":_0x82df[195],"\x61\x6C\x69\x61\x73":_0x82df[446],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":10},{"\x66\x69\x65\x6C\x64":_0x82df[447],"\x61\x6C\x69\x61\x73":_0x82df[448],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":10},{"\x66\x69\x65\x6C\x64":_0x82df[449],"\x61\x6C\x69\x61\x73":_0x82df[450],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":10},{"\x66\x69\x65\x6C\x64":_0x82df[451],"\x61\x6C\x69\x61\x73":_0x82df[452],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":10},{"\x66\x69\x65\x6C\x64":_0x82df[453],"\x61\x6C\x69\x61\x73":_0x82df[454],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":10},{"\x66\x69\x65\x6C\x64":_0x82df[371],"\x61\x6C\x69\x61\x73":_0x82df[547],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":2,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":10},{"\x66\x69\x65\x6C\x64":_0x82df[459],"\x61\x6C\x69\x61\x73":_0x82df[460],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":10},{"\x66\x69\x65\x6C\x64":_0x82df[461],"\x61\x6C\x69\x61\x73":_0x82df[462],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":10},{"\x66\x69\x65\x6C\x64":_0x82df[463],"\x61\x6C\x69\x61\x73":_0x82df[464],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":10},{"\x66\x69\x65\x6C\x64":_0x82df[390],"\x61\x6C\x69\x61\x73":_0x82df[548],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":9,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":10},{"\x66\x69\x65\x6C\x64":_0x82df[549],"\x61\x6C\x69\x61\x73":_0x82df[550],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":10},{"\x66\x69\x65\x6C\x64":_0x82df[465],"\x61\x6C\x69\x61\x73":_0x82df[466],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":10},{"\x66\x69\x65\x6C\x64":_0x82df[195],"\x61\x6C\x69\x61\x73":_0x82df[446],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":1,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":11},{"\x66\x69\x65\x6C\x64":_0x82df[451],"\x61\x6C\x69\x61\x73":_0x82df[506],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[505],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":11},{"\x66\x69\x65\x6C\x64":_0x82df[371],"\x61\x6C\x69\x61\x73":_0x82df[510],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[509],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":2,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":11},{"\x66\x69\x65\x6C\x64":_0x82df[371],"\x61\x6C\x69\x61\x73":_0x82df[551],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[505],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":2,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":11},{"\x66\x69\x65\x6C\x64":_0x82df[459],"\x61\x6C\x69\x61\x73":_0x82df[552],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[505],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":11},{"\x66\x69\x65\x6C\x64":_0x82df[390],"\x61\x6C\x69\x61\x73":_0x82df[553],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[509],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":9,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":11},{"\x66\x69\x65\x6C\x64":_0x82df[390],"\x61\x6C\x69\x61\x73":_0x82df[554],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[505],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":9,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":11},{"\x66\x69\x65\x6C\x64":_0x82df[463],"\x61\x6C\x69\x61\x73":_0x82df[545],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":1,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":12},{"\x66\x69\x65\x6C\x64":_0x82df[459],"\x61\x6C\x69\x61\x73":_0x82df[546],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[505],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":12},{"\x66\x69\x65\x6C\x64":_0x82df[390],"\x61\x6C\x69\x61\x73":_0x82df[555],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[505],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":9,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":12},{"\x66\x69\x65\x6C\x64":_0x82df[195],"\x61\x6C\x69\x61\x73":_0x82df[446],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":1,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":13},{"\x66\x69\x65\x6C\x64":_0x82df[451],"\x61\x6C\x69\x61\x73":_0x82df[556],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[505],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":13},{"\x66\x69\x65\x6C\x64":_0x82df[373],"\x61\x6C\x69\x61\x73":_0x82df[557],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":3,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":13},{"\x66\x69\x65\x6C\x64":_0x82df[392],"\x61\x6C\x69\x61\x73":_0x82df[391],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":10,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":13},{"\x66\x69\x65\x6C\x64":_0x82df[395],"\x61\x6C\x69\x61\x73":_0x82df[394],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":11,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":13},{"\x66\x69\x65\x6C\x64":_0x82df[398],"\x61\x6C\x69\x61\x73":_0x82df[558],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":12,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":13},{"\x66\x69\x65\x6C\x64":_0x82df[401],"\x61\x6C\x69\x61\x73":_0x82df[559],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":1,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":13,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":14},{"\x66\x69\x65\x6C\x64":_0x82df[440],"\x61\x6C\x69\x61\x73":_0x82df[502],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[503],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":14},{"\x66\x69\x65\x6C\x64":_0x82df[455],"\x61\x6C\x69\x61\x73":_0x82df[504],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[505],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":14},{"\x66\x69\x65\x6C\x64":_0x82df[451],"\x61\x6C\x69\x61\x73":_0x82df[506],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[505],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":14},{"\x66\x69\x65\x6C\x64":_0x82df[459],"\x61\x6C\x69\x61\x73":_0x82df[507],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[505],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":14},{"\x66\x69\x65\x6C\x64":_0x82df[369],"\x61\x6C\x69\x61\x73":_0x82df[508],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[509],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":1,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":14},{"\x66\x69\x65\x6C\x64":_0x82df[371],"\x61\x6C\x69\x61\x73":_0x82df[510],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[509],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":2,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":14},{"\x66\x69\x65\x6C\x64":_0x82df[376],"\x61\x6C\x69\x61\x73":_0x82df[511],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[509],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":4,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":14},{"\x66\x69\x65\x6C\x64":_0x82df[404],"\x61\x6C\x69\x61\x73":_0x82df[560],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":1,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":14,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":15},{"\x66\x69\x65\x6C\x64":_0x82df[440],"\x61\x6C\x69\x61\x73":_0x82df[502],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[503],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":15},{"\x66\x69\x65\x6C\x64":_0x82df[455],"\x61\x6C\x69\x61\x73":_0x82df[504],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[505],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":15},{"\x66\x69\x65\x6C\x64":_0x82df[451],"\x61\x6C\x69\x61\x73":_0x82df[506],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[505],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":15},{"\x66\x69\x65\x6C\x64":_0x82df[459],"\x61\x6C\x69\x61\x73":_0x82df[507],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[505],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":15},{"\x66\x69\x65\x6C\x64":_0x82df[369],"\x61\x6C\x69\x61\x73":_0x82df[508],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[509],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":1,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":15},{"\x66\x69\x65\x6C\x64":_0x82df[371],"\x61\x6C\x69\x61\x73":_0x82df[510],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[509],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":2,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":15},{"\x66\x69\x65\x6C\x64":_0x82df[376],"\x61\x6C\x69\x61\x73":_0x82df[511],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[509],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":4,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":15},{"\x66\x69\x65\x6C\x64":_0x82df[407],"\x61\x6C\x69\x61\x73":_0x82df[561],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":1,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":15,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":16},{"\x66\x69\x65\x6C\x64":_0x82df[440],"\x61\x6C\x69\x61\x73":_0x82df[502],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[503],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":16},{"\x66\x69\x65\x6C\x64":_0x82df[455],"\x61\x6C\x69\x61\x73":_0x82df[504],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[505],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":16},{"\x66\x69\x65\x6C\x64":_0x82df[451],"\x61\x6C\x69\x61\x73":_0x82df[506],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[505],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":16},{"\x66\x69\x65\x6C\x64":_0x82df[459],"\x61\x6C\x69\x61\x73":_0x82df[507],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[505],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":16},{"\x66\x69\x65\x6C\x64":_0x82df[369],"\x61\x6C\x69\x61\x73":_0x82df[508],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[509],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":1,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":16},{"\x66\x69\x65\x6C\x64":_0x82df[371],"\x61\x6C\x69\x61\x73":_0x82df[510],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[509],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":2,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":16},{"\x66\x69\x65\x6C\x64":_0x82df[376],"\x61\x6C\x69\x61\x73":_0x82df[511],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[509],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":4,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":16},{"\x66\x69\x65\x6C\x64":_0x82df[471],"\x61\x6C\x69\x61\x73":_0x82df[472],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":1,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":17},{"\x66\x69\x65\x6C\x64":_0x82df[440],"\x61\x6C\x69\x61\x73":_0x82df[546],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[503],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":17},{"\x66\x69\x65\x6C\x64":_0x82df[492],"\x61\x6C\x69\x61\x73":_0x82df[562],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[505],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":17},{"\x66\x69\x65\x6C\x64":_0x82df[492],"\x61\x6C\x69\x61\x73":_0x82df[563],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[509],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":17},{"\x66\x69\x65\x6C\x64":_0x82df[494],"\x61\x6C\x69\x61\x73":_0x82df[495],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":1,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":18},{"\x66\x69\x65\x6C\x64":_0x82df[440],"\x61\x6C\x69\x61\x73":_0x82df[546],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[503],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":18},{"\x66\x69\x65\x6C\x64":_0x82df[492],"\x61\x6C\x69\x61\x73":_0x82df[562],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[505],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":18},{"\x66\x69\x65\x6C\x64":_0x82df[492],"\x61\x6C\x69\x61\x73":_0x82df[563],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[509],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":18},{"\x66\x69\x65\x6C\x64":_0x82df[512],"\x61\x6C\x69\x61\x73":_0x82df[513],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":1,"\x6F\x72\x64\x65\x72\x42\x79":_0x82df[564],"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":19},{"\x66\x69\x65\x6C\x64":_0x82df[565],"\x61\x6C\x69\x61\x73":_0x82df[566],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":1,"\x6F\x72\x64\x65\x72\x42\x79":_0x82df[564],"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":19},{"\x66\x69\x65\x6C\x64":_0x82df[413],"\x61\x6C\x69\x61\x73":_0x82df[493],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":17,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":19},{"\x66\x69\x65\x6C\x64":_0x82df[512],"\x61\x6C\x69\x61\x73":_0x82df[513],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":1,"\x6F\x72\x64\x65\x72\x42\x79":_0x82df[564],"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":20},{"\x66\x69\x65\x6C\x64":_0x82df[413],"\x61\x6C\x69\x61\x73":_0x82df[493],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":17,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":20},{"\x66\x69\x65\x6C\x64":_0x82df[440],"\x61\x6C\x69\x61\x73":_0x82df[441],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":22,"\x66\x6F\x72\x6D\x61\x74":null},{"\x66\x69\x65\x6C\x64":_0x82df[567],"\x61\x6C\x69\x61\x73":_0x82df[568],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":22,"\x66\x6F\x72\x6D\x61\x74":null},{"\x66\x69\x65\x6C\x64":_0x82df[569],"\x61\x6C\x69\x61\x73":_0x82df[570],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":22},{"\x66\x69\x65\x6C\x64":_0x82df[571],"\x61\x6C\x69\x61\x73":_0x82df[572],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":22,"\x66\x6F\x72\x6D\x61\x74":null},{"\x66\x69\x65\x6C\x64":_0x82df[512],"\x61\x6C\x69\x61\x73":_0x82df[573],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":22,"\x66\x6F\x72\x6D\x61\x74":null},{"\x66\x69\x65\x6C\x64":_0x82df[574],"\x61\x6C\x69\x61\x73":_0x82df[575],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":22,"\x66\x6F\x72\x6D\x61\x74":null},{"\x66\x69\x65\x6C\x64":_0x82df[576],"\x61\x6C\x69\x61\x73":_0x82df[577],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":22,"\x66\x6F\x72\x6D\x61\x74":null},{"\x66\x69\x65\x6C\x64":_0x82df[578],"\x61\x6C\x69\x61\x73":_0x82df[579],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":22,"\x66\x6F\x72\x6D\x61\x74":null},{"\x66\x69\x65\x6C\x64":_0x82df[580],"\x61\x6C\x69\x61\x73":_0x82df[458],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":22,"\x66\x6F\x72\x6D\x61\x74":null},{"\x66\x69\x65\x6C\x64":_0x82df[581],"\x61\x6C\x69\x61\x73":_0x82df[456],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":22,"\x66\x6F\x72\x6D\x61\x74":null},{"\x66\x69\x65\x6C\x64":_0x82df[582],"\x61\x6C\x69\x61\x73":_0x82df[583],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":22,"\x66\x6F\x72\x6D\x61\x74":null},{"\x66\x69\x65\x6C\x64":_0x82df[584],"\x61\x6C\x69\x61\x73":_0x82df[585],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":22,"\x66\x6F\x72\x6D\x61\x74":null},{"\x66\x69\x65\x6C\x64":_0x82df[586],"\x61\x6C\x69\x61\x73":_0x82df[587],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":22,"\x66\x6F\x72\x6D\x61\x74":null},{"\x66\x69\x65\x6C\x64":_0x82df[512],"\x61\x6C\x69\x61\x73":_0x82df[513],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":1,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":23,"\x66\x6F\x72\x6D\x61\x74":null},{"\x66\x69\x65\x6C\x64":_0x82df[581],"\x61\x6C\x69\x61\x73":_0x82df[588],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[505],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":23,"\x66\x6F\x72\x6D\x61\x74":null},{"\x66\x69\x65\x6C\x64":_0x82df[419],"\x61\x6C\x69\x61\x73":_0x82df[589],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x63\x72\x65\x61\x74\x65\x64\x41\x74":_0x82df[590],"\x75\x70\x64\x61\x74\x65\x64\x41\x74":_0x82df[590],"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":19,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":23,"\x66\x6F\x72\x6D\x61\x74":null},{"\x66\x69\x65\x6C\x64":_0x82df[422],"\x61\x6C\x69\x61\x73":_0x82df[591],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":20,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":23,"\x66\x6F\x72\x6D\x61\x74":null},{"\x66\x69\x65\x6C\x64":_0x82df[416],"\x61\x6C\x69\x61\x73":_0x82df[592],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[505],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":18,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":23,"\x66\x6F\x72\x6D\x61\x74":_0x82df[593]},{"\x66\x69\x65\x6C\x64":_0x82df[416],"\x61\x6C\x69\x61\x73":_0x82df[594],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[509],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":18,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":23,"\x66\x6F\x72\x6D\x61\x74":_0x82df[593]},{"\x66\x69\x65\x6C\x64":_0x82df[567],"\x61\x6C\x69\x61\x73":_0x82df[595],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":1,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":21,"\x66\x6F\x72\x6D\x61\x74":null},{"\x66\x69\x65\x6C\x64":_0x82df[440],"\x61\x6C\x69\x61\x73":_0x82df[596],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[597],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":21,"\x66\x6F\x72\x6D\x61\x74":null},{"\x66\x69\x65\x6C\x64":_0x82df[581],"\x61\x6C\x69\x61\x73":_0x82df[504],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[505],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":21,"\x66\x6F\x72\x6D\x61\x74":null},{"\x66\x69\x65\x6C\x64":_0x82df[584],"\x61\x6C\x69\x61\x73":_0x82df[506],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[505],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":21,"\x66\x6F\x72\x6D\x61\x74":null},{"\x66\x69\x65\x6C\x64":_0x82df[416],"\x61\x6C\x69\x61\x73":_0x82df[417],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[505],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":18,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":21,"\x66\x6F\x72\x6D\x61\x74":_0x82df[593]},{"\x66\x69\x65\x6C\x64":_0x82df[425],"\x61\x6C\x69\x61\x73":_0x82df[594],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":21,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":21,"\x66\x6F\x72\x6D\x61\x74":_0x82df[593]},{"\x66\x69\x65\x6C\x64":_0x82df[574],"\x61\x6C\x69\x61\x73":_0x82df[446],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":1,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":24,"\x66\x6F\x72\x6D\x61\x74":null},{"\x66\x69\x65\x6C\x64":_0x82df[440],"\x61\x6C\x69\x61\x73":_0x82df[596],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[503],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":24,"\x66\x6F\x72\x6D\x61\x74":null},{"\x66\x69\x65\x6C\x64":_0x82df[581],"\x61\x6C\x69\x61\x73":_0x82df[504],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[505],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":24,"\x66\x6F\x72\x6D\x61\x74":null},{"\x66\x69\x65\x6C\x64":_0x82df[584],"\x61\x6C\x69\x61\x73":_0x82df[506],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[505],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":24,"\x66\x6F\x72\x6D\x61\x74":null},{"\x66\x69\x65\x6C\x64":_0x82df[586],"\x61\x6C\x69\x61\x73":_0x82df[507],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[505],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":24,"\x66\x6F\x72\x6D\x61\x74":null},{"\x66\x69\x65\x6C\x64":_0x82df[416],"\x61\x6C\x69\x61\x73":_0x82df[417],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[505],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":18,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":24,"\x66\x6F\x72\x6D\x61\x74":_0x82df[593]},{"\x66\x69\x65\x6C\x64":_0x82df[425],"\x61\x6C\x69\x61\x73":_0x82df[594],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":21,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":24,"\x66\x6F\x72\x6D\x61\x74":_0x82df[593]},{"\x66\x69\x65\x6C\x64":_0x82df[512],"\x61\x6C\x69\x61\x73":_0x82df[513],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":25},{"\x66\x69\x65\x6C\x64":_0x82df[598],"\x61\x6C\x69\x61\x73":_0x82df[599],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":25},{"\x66\x69\x65\x6C\x64":_0x82df[471],"\x61\x6C\x69\x61\x73":_0x82df[600],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":25},{"\x66\x69\x65\x6C\x64":_0x82df[565],"\x61\x6C\x69\x61\x73":_0x82df[601],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":25},{"\x66\x69\x65\x6C\x64":_0x82df[602],"\x61\x6C\x69\x61\x73":_0x82df[603],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":25},{"\x66\x69\x65\x6C\x64":_0x82df[604],"\x61\x6C\x69\x61\x73":_0x82df[605],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":25},{"\x66\x69\x65\x6C\x64":_0x82df[428],"\x61\x6C\x69\x61\x73":_0x82df[493],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":22,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":25},{"\x66\x69\x65\x6C\x64":_0x82df[606],"\x61\x6C\x69\x61\x73":_0x82df[607],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":26},{"\x66\x69\x65\x6C\x64":_0x82df[440],"\x61\x6C\x69\x61\x73":_0x82df[470],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":26},{"\x66\x69\x65\x6C\x64":_0x82df[479],"\x61\x6C\x69\x61\x73":_0x82df[480],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":26},{"\x66\x69\x65\x6C\x64":_0x82df[608],"\x61\x6C\x69\x61\x73":_0x82df[466],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":26},{"\x66\x69\x65\x6C\x64":_0x82df[576],"\x61\x6C\x69\x61\x73":_0x82df[609],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":_0x82df[564],"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":26},{"\x66\x69\x65\x6C\x64":_0x82df[578],"\x61\x6C\x69\x61\x73":_0x82df[610],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":26},{"\x66\x69\x65\x6C\x64":_0x82df[431],"\x61\x6C\x69\x61\x73":_0x82df[493],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":23,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":26,"\x66\x6F\x72\x6D\x61\x74":_0x82df[593]},{"\x66\x69\x65\x6C\x64":_0x82df[606],"\x61\x6C\x69\x61\x73":_0x82df[607],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":27},{"\x66\x69\x65\x6C\x64":_0x82df[479],"\x61\x6C\x69\x61\x73":_0x82df[611],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":27},{"\x66\x69\x65\x6C\x64":_0x82df[440],"\x61\x6C\x69\x61\x73":_0x82df[612],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":1,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":27},{"\x66\x69\x65\x6C\x64":_0x82df[613],"\x61\x6C\x69\x61\x73":_0x82df[327],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[614],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":27},{"\x66\x69\x65\x6C\x64":_0x82df[512],"\x61\x6C\x69\x61\x73":_0x82df[513],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":28},{"\x66\x69\x65\x6C\x64":_0x82df[602],"\x61\x6C\x69\x61\x73":_0x82df[603],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":28},{"\x66\x69\x65\x6C\x64":_0x82df[604],"\x61\x6C\x69\x61\x73":_0x82df[605],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":28},{"\x66\x69\x65\x6C\x64":_0x82df[492],"\x61\x6C\x69\x61\x73":_0x82df[493],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":28,"\x66\x6F\x72\x6D\x61\x74":_0x82df[593]},{"\x66\x69\x65\x6C\x64":_0x82df[615],"\x61\x6C\x69\x61\x73":_0x82df[616],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":1,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":29},{"\x66\x69\x65\x6C\x64":_0x82df[565],"\x61\x6C\x69\x61\x73":_0x82df[472],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":1,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":29},{"\x66\x69\x65\x6C\x64":_0x82df[492],"\x61\x6C\x69\x61\x73":_0x82df[493],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[505],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":29,"\x66\x6F\x72\x6D\x61\x74":_0x82df[593]},{"\x66\x69\x65\x6C\x64":_0x82df[512],"\x61\x6C\x69\x61\x73":_0x82df[513],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":30},{"\x66\x69\x65\x6C\x64":_0x82df[602],"\x61\x6C\x69\x61\x73":_0x82df[603],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":30},{"\x66\x69\x65\x6C\x64":_0x82df[604],"\x61\x6C\x69\x61\x73":_0x82df[605],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":30},{"\x66\x69\x65\x6C\x64":_0x82df[565],"\x61\x6C\x69\x61\x73":_0x82df[617],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":30},{"\x66\x69\x65\x6C\x64":_0x82df[492],"\x61\x6C\x69\x61\x73":_0x82df[493],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":30,"\x66\x6F\x72\x6D\x61\x74":_0x82df[593]},{"\x66\x69\x65\x6C\x64":_0x82df[618],"\x61\x6C\x69\x61\x73":_0x82df[513],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":1,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":31},{"\x66\x69\x65\x6C\x64":_0x82df[440],"\x61\x6C\x69\x61\x73":_0x82df[619],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[503],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":31},{"\x66\x69\x65\x6C\x64":_0x82df[620],"\x61\x6C\x69\x61\x73":_0x82df[621],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[505],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":31},{"\x66\x69\x65\x6C\x64":_0x82df[620],"\x61\x6C\x69\x61\x73":_0x82df[622],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[509],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":31},{"\x66\x69\x65\x6C\x64":_0x82df[195],"\x61\x6C\x69\x61\x73":_0x82df[446],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":1,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":32},{"\x66\x69\x65\x6C\x64":_0x82df[440],"\x61\x6C\x69\x61\x73":_0x82df[619],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[503],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":32},{"\x66\x69\x65\x6C\x64":_0x82df[620],"\x61\x6C\x69\x61\x73":_0x82df[621],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[505],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":32},{"\x66\x69\x65\x6C\x64":_0x82df[620],"\x61\x6C\x69\x61\x73":_0x82df[622],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[509],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":32},{"\x66\x69\x65\x6C\x64":_0x82df[442],"\x61\x6C\x69\x61\x73":_0x82df[443],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":33},{"\x66\x69\x65\x6C\x64":_0x82df[195],"\x61\x6C\x69\x61\x73":_0x82df[446],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":33},{"\x66\x69\x65\x6C\x64":_0x82df[447],"\x61\x6C\x69\x61\x73":_0x82df[488],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":33},{"\x66\x69\x65\x6C\x64":_0x82df[434],"\x61\x6C\x69\x61\x73":_0x82df[491],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":33,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":24},{"\x66\x69\x65\x6C\x64":_0x82df[436],"\x61\x6C\x69\x61\x73":_0x82df[623],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":33,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":25},{"\x66\x69\x65\x6C\x64":_0x82df[516],"\x61\x6C\x69\x61\x73":_0x82df[560],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":1,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":34,"\x66\x6F\x72\x6D\x61\x74":_0x82df[624]},{"\x66\x69\x65\x6C\x64":_0x82df[526],"\x61\x6C\x69\x61\x73":_0x82df[543],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[505],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":34},{"\x66\x69\x65\x6C\x64":_0x82df[378],"\x61\x6C\x69\x61\x73":_0x82df[544],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":5,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":34},{"\x66\x69\x65\x6C\x64":_0x82df[381],"\x61\x6C\x69\x61\x73":_0x82df[380],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":6,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":34},{"\x66\x69\x65\x6C\x64":_0x82df[384],"\x61\x6C\x69\x61\x73":_0x82df[383],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":7,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":34},{"\x66\x69\x65\x6C\x64":_0x82df[387],"\x61\x6C\x69\x61\x73":_0x82df[386],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":8,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":34},{"\x66\x69\x65\x6C\x64":_0x82df[625],"\x61\x6C\x69\x61\x73":_0x82df[626],"\x67\x72\x6F\x75\x70\x42\x79":1,"\x63\x75\x73\x74\x6F\x6D":0,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":35},{"\x66\x69\x65\x6C\x64":_0x82df[440],"\x61\x6C\x69\x61\x73":_0x82df[627],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[597],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x63\x75\x73\x74\x6F\x6D":0,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":35},{"\x66\x69\x65\x6C\x64":_0x82df[628],"\x61\x6C\x69\x61\x73":_0x82df[629],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[505],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x63\x75\x73\x74\x6F\x6D":1,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":35},{"\x66\x69\x65\x6C\x64":_0x82df[630],"\x61\x6C\x69\x61\x73":_0x82df[631],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x63\x75\x73\x74\x6F\x6D":1,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":35},{"\x66\x69\x65\x6C\x64":_0x82df[632],"\x61\x6C\x69\x61\x73":_0x82df[633],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[505],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x63\x75\x73\x74\x6F\x6D":1,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":35},{"\x66\x69\x65\x6C\x64":_0x82df[634],"\x61\x6C\x69\x61\x73":_0x82df[635],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[505],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x63\x75\x73\x74\x6F\x6D":1,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":35},{"\x66\x69\x65\x6C\x64":_0x82df[636],"\x61\x6C\x69\x61\x73":_0x82df[637],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[505],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x63\x75\x73\x74\x6F\x6D":1,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":35},{"\x66\x69\x65\x6C\x64":_0x82df[574],"\x61\x6C\x69\x61\x73":_0x82df[446],"\x67\x72\x6F\x75\x70\x42\x79":1,"\x63\x75\x73\x74\x6F\x6D":0,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":36},{"\x66\x69\x65\x6C\x64":_0x82df[440],"\x61\x6C\x69\x61\x73":_0x82df[627],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[503],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x63\x75\x73\x74\x6F\x6D":0,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":36},{"\x66\x69\x65\x6C\x64":_0x82df[638],"\x61\x6C\x69\x61\x73":_0x82df[629],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[505],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x63\x75\x73\x74\x6F\x6D":1,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":36},{"\x66\x69\x65\x6C\x64":_0x82df[639],"\x61\x6C\x69\x61\x73":_0x82df[640],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[505],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":36},{"\x66\x69\x65\x6C\x64":_0x82df[641],"\x61\x6C\x69\x61\x73":_0x82df[631],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x63\x75\x73\x74\x6F\x6D":1,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":36},{"\x66\x69\x65\x6C\x64":_0x82df[642],"\x61\x6C\x69\x61\x73":_0x82df[643],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x66\x6F\x72\x6D\x61\x74":_0x82df[593],"\x63\x75\x73\x74\x6F\x6D":1,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":36},{"\x66\x69\x65\x6C\x64":_0x82df[512],"\x61\x6C\x69\x61\x73":_0x82df[512],"\x67\x72\x6F\x75\x70\x42\x79":1,"\x63\x75\x73\x74\x6F\x6D":0,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":36},{"\x66\x69\x65\x6C\x64":_0x82df[440],"\x61\x6C\x69\x61\x73":_0x82df[644],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[503],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x63\x75\x73\x74\x6F\x6D":0,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":37},{"\x66\x69\x65\x6C\x64":_0x82df[645],"\x61\x6C\x69\x61\x73":_0x82df[646],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[505],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x63\x75\x73\x74\x6F\x6D":1,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":37},{"\x66\x69\x65\x6C\x64":_0x82df[647],"\x61\x6C\x69\x61\x73":_0x82df[513],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[505],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x63\x75\x73\x74\x6F\x6D":1,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":37},{"\x66\x69\x65\x6C\x64":_0x82df[648],"\x61\x6C\x69\x61\x73":_0x82df[446],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[505],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x63\x75\x73\x74\x6F\x6D":1,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":37},{"\x66\x69\x65\x6C\x64":_0x82df[649],"\x61\x6C\x69\x61\x73":_0x82df[559],"\x67\x72\x6F\x75\x70\x42\x79":1,"\x63\x75\x73\x74\x6F\x6D":0,"\x66\x6F\x72\x6D\x61\x74":_0x82df[650],"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":38},{"\x66\x69\x65\x6C\x64":_0x82df[651],"\x61\x6C\x69\x61\x73":_0x82df[627],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[505],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x63\x75\x73\x74\x6F\x6D":1,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":38},{"\x66\x69\x65\x6C\x64":_0x82df[652],"\x61\x6C\x69\x61\x73":_0x82df[653],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[505],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x63\x75\x73\x74\x6F\x6D":1,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":38},{"\x66\x69\x65\x6C\x64":_0x82df[146],"\x61\x6C\x69\x61\x73":_0x82df[146],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":39,"\x63\x75\x73\x74\x6F\x6D":0},{"\x66\x69\x65\x6C\x64":_0x82df[654],"\x61\x6C\x69\x61\x73":_0x82df[654],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":39,"\x63\x75\x73\x74\x6F\x6D":0},{"\x66\x69\x65\x6C\x64":_0x82df[655],"\x61\x6C\x69\x61\x73":_0x82df[655],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":39,"\x63\x75\x73\x74\x6F\x6D":0},{"\x66\x69\x65\x6C\x64":_0x82df[656],"\x61\x6C\x69\x61\x73":_0x82df[656],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":39,"\x63\x75\x73\x74\x6F\x6D":0},{"\x66\x69\x65\x6C\x64":_0x82df[649],"\x61\x6C\x69\x61\x73":_0x82df[649],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":39,"\x63\x75\x73\x74\x6F\x6D":0},{"\x66\x69\x65\x6C\x64":_0x82df[657],"\x61\x6C\x69\x61\x73":_0x82df[657],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":39,"\x63\x75\x73\x74\x6F\x6D":0},{"\x66\x69\x65\x6C\x64":_0x82df[658],"\x61\x6C\x69\x61\x73":_0x82df[658],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":39,"\x63\x75\x73\x74\x6F\x6D":0},{"\x66\x69\x65\x6C\x64":_0x82df[659],"\x61\x6C\x69\x61\x73":_0x82df[659],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":39,"\x63\x75\x73\x74\x6F\x6D":0},{"\x66\x69\x65\x6C\x64":_0x82df[660],"\x61\x6C\x69\x61\x73":_0x82df[660],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":39,"\x63\x75\x73\x74\x6F\x6D":0},{"\x66\x69\x65\x6C\x64":_0x82df[661],"\x61\x6C\x69\x61\x73":_0x82df[661],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":39,"\x63\x75\x73\x74\x6F\x6D":0},{"\x66\x69\x65\x6C\x64":_0x82df[662],"\x61\x6C\x69\x61\x73":_0x82df[662],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":39,"\x63\x75\x73\x74\x6F\x6D":0},{"\x66\x69\x65\x6C\x64":_0x82df[494],"\x61\x6C\x69\x61\x73":_0x82df[494],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":39,"\x63\x75\x73\x74\x6F\x6D":0},{"\x66\x69\x65\x6C\x64":_0x82df[663],"\x61\x6C\x69\x61\x73":_0x82df[663],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":39,"\x63\x75\x73\x74\x6F\x6D":0},{"\x66\x69\x65\x6C\x64":_0x82df[494],"\x61\x6C\x69\x61\x73":_0x82df[494],"\x67\x72\x6F\x75\x70\x42\x79":1,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":40,"\x63\x75\x73\x74\x6F\x6D":0},{"\x66\x69\x65\x6C\x64":_0x82df[664],"\x61\x6C\x69\x61\x73":_0x82df[665],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":40,"\x63\x75\x73\x74\x6F\x6D":1},{"\x66\x69\x65\x6C\x64":_0x82df[659],"\x61\x6C\x69\x61\x73":_0x82df[659],"\x67\x72\x6F\x75\x70\x42\x79":1,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":41,"\x66\x6F\x72\x6D\x61\x74":_0x82df[650],"\x63\x75\x73\x74\x6F\x6D":0},{"\x66\x69\x65\x6C\x64":_0x82df[146],"\x61\x6C\x69\x61\x73":_0x82df[666],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x82df[503],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":41,"\x63\x75\x73\x74\x6F\x6D":0},{"\x66\x69\x65\x6C\x64":_0x82df[667],"\x61\x6C\x69\x61\x73":_0x82df[668],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":41,"\x66\x6F\x72\x6D\x61\x74":_0x82df[593],"\x63\x75\x73\x74\x6F\x6D":1}],{ignoreDuplicates:true,individualHooks:true})})[_0x82df[6]](function(){console[_0x82df[5]](_0x82df[439])})[_0x82df[144]](function(_0x55abx5){console[_0x82df[5]](_0x82df[438],_0x55abx5)});models[_0x82df[678]][_0x82df[69]]([{id:1,name:_0x82df[677],defaultEntry:true}],{ignoreDuplicates:true,individualHooks:true})[_0x82df[6]](function(){console[_0x82df[5]](_0x82df[272])});models[_0x82df[701]][_0x82df[670]]({where:{context:_0x82df[219]}})[_0x82df[6]](function(){models[_0x82df[701]][_0x82df[69]]([{context:_0x82df[219],exten:_0x82df[680],priority:1,app:_0x82df[681],appdata:_0x82df[682],type:_0x82df[683]},{context:_0x82df[219],exten:_0x82df[680],priority:2,app:_0x82df[681],appdata:_0x82df[684],type:_0x82df[683]},{context:_0x82df[219],exten:_0x82df[680],priority:3,app:_0x82df[685],appdata:_0x82df[686],type:_0x82df[683]},{context:_0x82df[219],exten:_0x82df[680],priority:4,app:_0x82df[687],appdata:_0x82df[334],type:_0x82df[683]},{context:_0x82df[219],exten:_0x82df[680],priority:5,app:_0x82df[688],appdata:_0x82df[689],type:_0x82df[683]},{context:_0x82df[219],exten:_0x82df[680],priority:6,app:_0x82df[685],appdata:_0x82df[690],type:_0x82df[683]},{context:_0x82df[219],exten:_0x82df[680],priority:7,app:_0x82df[685],appdata:_0x82df[691],type:_0x82df[683]},{context:_0x82df[219],exten:_0x82df[680],priority:8,app:_0x82df[685],appdata:_0x82df[692],type:_0x82df[683]},{context:_0x82df[219],exten:_0x82df[680],priority:9,app:_0x82df[685],appdata:_0x82df[693],type:_0x82df[683]},{context:_0x82df[219],exten:_0x82df[680],priority:10,app:_0x82df[685],appdata:_0x82df[694],type:_0x82df[683]},{context:_0x82df[219],exten:_0x82df[680],priority:11,app:_0x82df[685],appdata:_0x82df[695],type:_0x82df[683]},{context:_0x82df[219],exten:_0x82df[680],priority:12,app:_0x82df[685],appdata:_0x82df[696],type:_0x82df[683]},{context:_0x82df[219],exten:_0x82df[680],priority:13,app:_0x82df[685],appdata:_0x82df[697],type:_0x82df[683]},{context:_0x82df[219],exten:_0x82df[680],priority:14,app:_0x82df[698],appdata:_0x82df[699],type:_0x82df[683]},{context:_0x82df[219],exten:_0x82df[680],priority:15,app:_0x82df[700],appdata:_0x82df[334],type:_0x82df[683]}],{ignoreDuplicates:true,individualHooks:true})})[_0x82df[6]](function(){console[_0x82df[5]](_0x82df[679])});models[_0x82df[70]][_0x82df[154]]({include:[{model:models[_0x82df[701]],as:_0x82df[708],where:{app:_0x82df[709]}}]})[_0x82df[6]](function(_0x55abxa){console[_0x82df[5]](_0x82df[702]);var _0x55abx1d=[];_[_0x82df[153]](_0x55abxa,function(_0x55abx1e){_[_0x82df[153]](_0x55abx1e.UserExtensions,function(_0x55abx1f){_0x55abx1f[_0x82df[703]]= _0x82df[704]+ _0x55abx1e[_0x82df[705]]+ _0x82df[706];_0x55abx1d[_0x82df[151]](_0x55abx1f[_0x82df[707]]())})});return _0x55abx1d})[_0x82df[19]]()[_0x82df[144]](function(_0x55abx5){console[_0x82df[5]](_0x55abx5)}) \ No newline at end of file diff --git a/server/config/seedp.js b/server/config/seedp.js index fcfab6f..e9cec97 100644 --- a/server/config/seedp.js +++ b/server/config/seedp.js @@ -1,8105 +1 @@ -/** - * Populate DB with sample data on server start - * to disable, edit config/environment/index.js, and set `seedDB: false` - */ - -'use strict'; - -var _ = require('lodash'); -var util = require('util'); - -var models = require('../models'); -var sequelize = require('../models').sequelize; - -var _agents = []; -var _voiceQueues = []; -var _mailQueues = []; -var _chatQueues = []; -var _miller, _doe; -var _setting; - - -return models.Setting - .findOrCreate({ - where: { - id: 1 - }, - defaults: { - id: 1, - min_internal: 1000, - min_mailbox: 1000, - agi_port: 4573, - automation_timeout: 3600, - soundPath: '/var/opt/motion/server/files/sounds/converted' - } - }) - .spread(function(setting) { - console.log(util.format('Populating Setting - DONE ')); - return setting; - }) - .then(function(setting) { - _setting = setting - if (_setting.firstSetup) { - models.User - .bulkCreate([{ - role: 'admin', - fullname: 'Administrator', - email: 'admin@admin.com', - name: 'admin', - password: 'password', - defaultuser: 'admin', - internal: 1000 - }], { - ignoreDuplicates: true, - individualHooks: true - }) - .then(function(users) { - console.log(util.format('Populating Users: %s - DONE ', _.map(users, 'name').join())); - return models.Team - .create({ - name: "Default Team", - description: "Default Team", - defaultEntry: true, - Users: [{ - role: 'agent', - fullname: 'John Doe', - email: 'john.doe@xcally.com', - name: 'john.doe', - password: 'shuttle55', - defaultuser: 'john.doe', - internal: 1001 - }, { - role: 'agent', - fullname: 'Jane Miller', - email: 'jane.miller@xcally.com', - name: 'jane.miller', - password: 'shuttle55', - defaultuser: 'jane.miller', - internal: 1002 - }] - }, { - include: [{ - model: models.User - }] - }); - }) - .then(function(team) { - _agents = team.Users; - - console.log(util.format('Populating Agents: %s - DONE ', _.map(team.Users, 'name').join())); - console.log(util.format('Populating Teams: %s - DONE ', team.name)); - - return models.VoiceQueue - .bulkCreate([{ - name: 'Sales', - musiconhold: 'default', - strategy: 'rrmemory' - }, { - name: 'Support', - musiconhold: 'default', - strategy: 'ringall' - }], { - ignoreDuplicates: true, - individualHooks: true - }); - }) - .then(function(voiceQueues) { - console.log(util.format('Populating Voice Queues: %s - DONE ', _.map(voiceQueues, 'name').join())); - _voiceQueues = voiceQueues; - - _miller = _.find(_agents, { - name: 'jane.miller' - }); - _doe = _.find(_agents, { - name: 'john.doe' - }); - - return _voiceQueues[0] - .addUser(_miller.id); - }) - .then(function() { - return _voiceQueues[1] - .addUsers([_miller.id, _doe.id]); - }) - .then(function() { - return models.MailQueue - .bulkCreate([{ - name: 'Sales', - timeout: 5, - strategy: 'rrmemory' - }, { - name: 'Support', - timeout: 5, - strategy: 'beepall' - }], { - ignoreDuplicates: true, - individualHooks: true - }); - }) - .then(function(mailQueues) { - console.log(util.format('Populating Mail Queues: %s - DONE ', _.map(mailQueues, 'name').join())); - _mailQueues = mailQueues; - - return _mailQueues[0] - .addUser(_miller.id); - }) - .then(function() { - return _mailQueues[1] - .addUsers([_miller.id, _doe.id]); - }) - .then(function() { - return models.ChatQueue - .bulkCreate([{ - name: 'Sales', - timeout: 5, - strategy: 'rrmemory' - }, { - name: 'Support', - timeout: 5, - strategy: 'beepall' - }], { - ignoreDuplicates: true, - individualHooks: true - }); - }) - .then(function(chatQueues) { - console.log(util.format('Populating Mail Queues: %s - DONE ', _.map(chatQueues, 'name').join())); - _chatQueues = chatQueues; - - return _chatQueues[0] - .addUser(_miller.id); - }) - .then(function() { - return _chatQueues[1] - .addUsers([_miller.id, _doe.id]); - }) - .catch(function(err) { - console.log(err); - }); - - models.ChanSpy - .bulkCreate([{ - name: 'ChanSpy1', - prefix: 'spy1', - description: 'The supervisor can listen and talk to the agent. The customer will not listen to the supervisor voice.', - options: 'bw' - }, { - name: 'ChanSpy2', - prefix: 'spy2', - description: 'The supervisor can only listen the agent channel (neither the agent nor the customer will listen to the supervisor voice.', - options: 'bo' - }, { - name: 'ChanSpy3', - prefix: 'spy3', - description: 'The supervisor can listen and talk both to the agent and to the customer, like a pure 3 way conference room.', - options: 'bW' - }], { - ignoreDuplicates: true, - individualHooks: true - }) - .then(function(chanSpys) { - console.log(util.format('Populating ChanSpy: %s - DONE ', _.map(chanSpys, 'name').join())); - }); - - models.List - .create({ - name: 'System List', - description: 'Default List', - defaultEntry: true - }) - .then(function(list) { - console.log(util.format('Populating CM List: %s - DONE ', list.name)); - }); - - models.VoiceMusicOnHold - .create({ - name: 'default', - directory: '/var/lib/asterisk/moh/', - mode: 'files', - sort: 'random', - format: 'wav', - defaultEntry: true - }) - .then(function(voiceMusicOnHold) { - console.log(util.format('Populating Voice Music On Hold: %s - DONE ', voiceMusicOnHold.name)); - }); - - models.Variable - .bulkCreate([{ - name: 'CHOICE' - }, { - description: 'Order number', - name: 'ORDERNUM' - }, { - description: 'Data Base Query Result', - name: 'DBRESULT' - }, { - name: 'RATE' - }], { - ignoreDuplicates: true, - individualHooks: true - }) - .then(function(variables) { - console.log(util.format('Populating Variables: %s - DONE ', _.map(variables, 'name').join())); - }); - - models.Pause - .bulkCreate([{ - name: 'BACKOFFICE' - }, { - name: 'AFTERCALL' - }], { - ignoreDuplicates: true, - individualHooks: true - }) - .then(function(pauses) { - console.log(util.format('Populating Pauses: %s - DONE ', _.map(pauses, 'name').join())); - }); - - models.Trunk - .create({ - name: 'DemoTrunk', - context: 'from-voip-provider', - callingpres: 'ALLOWED_NOT_SCREENED', - deny: '0.0.0.0/0.0.0.0', - permit: '0.0.0.0/0.0.0.0', - secret: '55xcally55' - }) - .then(function(trunk) { - console.log(util.format('Populating Trunk: %s - DONE ', trunk.name)); - }); - - models.VoiceContext - .bulkCreate([{ - name: 'from-sip', - description: 'Default context (DO NOT DELETE)' - }, { - name: 'from-voip-provider', - description: 'Default context (DO NOT DELETE)' - }, { - name: 'inbound-fax', - description: 'Default context (DO NOT DELETE)' - }, { - name: 'outbound-fax', - description: 'Default context (DO NOT DELETE)' - }, { - name: 'from-voicemail', - description: 'Default context (DO NOT DELETE)' - }], { - ignoreDuplicates: true, - individualHooks: true - }) - .then(function(pauses) { - console.log(util.format('Populating Contexts: %s - DONE ', _.map(pauses, 'name').join())); - }); - - models.VoiceExtension - .create({ - context: 'from-sip', - exten: '_600', - priority: '1', - app: 'NoOp', - appdata: 'Internal Call', - type: 'internal', - description: 'Echo Test', - Applications: [{ - context: 'from-sip', - exten: '_600', - priority: '2', - app: 'Set', - appdata: 'CDR(type)=internal', - type: 'internal' - }, { - context: 'from-sip', - exten: '_600', - priority: '3', - app: 'GotoIfTime', - appdata: '*,*,*,*?from-sip,${EXTEN},4:from-sip,${EXTEN},9', - type: 'internal' - }, { - context: 'from-sip', - exten: '_600', - priority: '4', - app: 'NoOP', - appdata: 'Skipped CallerID Set', - type: 'internal' - }, { - context: 'from-sip', - exten: '_600', - priority: '5', - app: 'NoOP', - appdata: 'Skipped MixMonitor', - type: 'internal' - }, { - context: 'from-sip', - exten: '_600', - priority: '6', - app: 'NoOP', - appdata: 'Skipped Progress', - type: 'internal' - }, { - context: 'from-sip', - exten: '_600', - priority: '7', - app: 'Playback', - appdata: 'demo-echotest', - type: 'internal', - interval: '*,*,*,*', - isApp: true - }, { - context: 'from-sip', - exten: '_600', - priority: '8', - app: 'NoOP', - appdata: 'Skipped StopMixMonitor', - type: 'internal' - }, { - context: 'from-sip', - exten: '_600', - priority: '9', - app: 'NoOP', - appdata: 'Playback Application End', - type: 'internal' - }, { - context: 'from-sip', - exten: '_600', - priority: '10', - app: 'GotoIfTime', - appdata: '*,*,*,*?from-sip,${EXTEN},11:from-sip,${EXTEN},16', - type: 'internal' - }, { - context: 'from-sip', - exten: '_600', - priority: '11', - app: 'NoOP', - appdata: 'Skipped CallerID Set', - type: 'internal' - }, { - context: 'from-sip', - exten: '_600', - priority: '12', - app: 'NoOP', - appdata: 'Skipped MixMonitor', - type: 'internal' - }, { - context: 'from-sip', - exten: '_600', - priority: '13', - app: 'NoOP', - appdata: 'Skipped Progress', - type: 'internal' - }, { - context: 'from-sip', - exten: '_600', - priority: '14', - app: 'Echo', - appdata: '', - type: 'internal', - interval: '*,*,*,*', - isApp: true - }, { - context: 'from-sip', - exten: '_600', - priority: '15', - app: 'NoOP', - appdata: 'Skipped StopMixMonitor', - type: 'internal' - }, { - context: 'from-sip', - exten: '_600', - priority: '16', - app: 'NoOP', - appdata: 'Echo Application End', - type: 'internal' - }, { - context: 'from-sip', - exten: '_600', - priority: '17', - app: 'GotoIfTime', - appdata: '*,*,*,*?from-sip,${EXTEN},18:from-sip,${EXTEN},23', - type: 'internal' - }, { - context: 'from-sip', - exten: '_600', - priority: '18', - app: 'NoOP', - appdata: 'Skipped CallerID Set', - type: 'internal' - }, { - context: 'from-sip', - exten: '_600', - priority: '19', - app: 'NoOP', - appdata: 'Skipped MixMonitor', - type: 'internal' - }, { - context: 'from-sip', - exten: '_600', - priority: '20', - app: 'NoOP', - appdata: 'Skipped Progress', - type: 'internal' - }, { - context: 'from-sip', - exten: '_600', - priority: '21', - app: 'Playback', - appdata: 'demo-echotest', - type: 'internal', - interval: '*,*,*,*', - isApp: true - }, { - context: 'from-sip', - exten: '_600', - priority: '22', - app: 'NoOP', - appdata: 'Skipped StopMixMonitor', - type: 'internal' - }, { - context: 'from-sip', - exten: '_600', - priority: '23', - app: 'NoOP', - appdata: 'Playback Application End', - type: 'internal' - }] - }, { - include: [{ - model: models.VoiceExtension, - as: 'Applications' - }] - }) - .then(function(voiceExtension) { - console.log(util.format('Populating Voice Extension: %s %s - DONE ', voiceExtension.context, voiceExtension.exten)); - }); - - models.VoiceExtension - .create({ - context: 'from-sip', - exten: '_6000', - priority: '1', - app: 'NoOp', - appdata: 'Internal Call', - type: 'internal', - description: 'Support Queue', - Applications: [{ - context: 'from-sip', - exten: '_6000', - priority: '2', - app: 'Set', - appdata: 'CDR(type)=internal', - type: 'internal' - }, { - context: 'from-sip', - exten: '_6000', - priority: '3', - app: 'GotoIfTime', - appdata: '*,*,*,*?from-sip,${EXTEN},4:from-sip,${EXTEN},9', - type: 'internal' - }, { - context: 'from-sip', - exten: '_6000', - priority: '4', - app: 'NoOP', - appdata: 'Skipped CallerID Set', - type: 'internal' - }, { - context: 'from-sip', - exten: '_6000', - priority: '5', - app: 'NoOP', - appdata: 'Skipped MixMonitor', - type: 'internal' - }, { - context: 'from-sip', - exten: '_6000', - priority: '6', - app: 'Progress', - type: 'internal' - }, { - context: 'from-sip', - exten: '_6000', - priority: '7', - app: 'Queue', - appdata: 'Support,,,,', - type: 'internal', - interval: '*,*,*,*', - isApp: true - }, { - context: 'from-sip', - exten: '_6000', - priority: '8', - app: 'NoOP', - appdata: 'Skipped StopMixMonitor', - type: 'internal' - }, { - context: 'from-sip', - exten: '_6000', - priority: '9', - app: 'NoOP', - appdata: 'Queue Application End', - type: 'internal' - }] - }, { - include: [{ - model: models.VoiceExtension, - as: 'Applications' - }] - }) - .then(function(voiceExtension) { - console.log(util.format('Populating Voice Extension: %s %s - DONE ', voiceExtension.context, voiceExtension.exten)); - }); - - models.VoiceExtension - .create({ - context: 'from-sip', - exten: '_6666', - priority: '1', - app: 'NoOp', - appdata: 'Internal Call', - type: 'internal', - description: 'Support Queue', - Applications: [{ - context: 'from-sip', - exten: '_6666', - priority: '2', - app: 'Set', - appdata: 'CDR(type)=internal', - type: 'internal' - }, { - context: 'from-sip', - exten: '_6666', - priority: '3', - app: 'GotoIfTime', - appdata: '*,*,*,*?from-sip,${EXTEN},4:from-sip,${EXTEN},9', - type: 'internal' - }, { - context: 'from-sip', - exten: '_6666', - priority: '4', - app: 'NoOP', - appdata: 'Skipped CallerID Set', - type: 'internal' - }, { - context: 'from-sip', - exten: '_6666', - priority: '5', - app: 'NoOP', - appdata: 'Skipped MixMonitor', - type: 'internal' - }, { - context: 'from-sip', - exten: '_6666', - priority: '6', - app: 'NoOP', - appdata: 'Skipped Progress', - type: 'internal' - }, { - context: 'from-sip', - exten: '_6666', - priority: '7', - app: 'AGI', - appdata: 'agi://127.0.0.1/square,Auto Attendant', - type: 'internal', - interval: '*,*,*,*', - isApp: true - }, { - context: 'from-sip', - exten: '_6666', - priority: '8', - app: 'NoOP', - appdata: 'Skipped StopMixMonitor', - type: 'internal' - }, { - context: 'from-sip', - exten: '_6666', - priority: '9', - app: 'NoOP', - appdata: 'AGI Application End', - type: 'internal' - }] - }, { - include: [{ - model: models.VoiceExtension, - as: 'Applications' - }] - }) - .then(function(voiceExtension) { - console.log(util.format('Populating Voice Extension: %s %s - DONE ', voiceExtension.context, voiceExtension.exten)); - }); - - models.VoiceExtension - .create({ - context: 'from-sip', - exten: '_6667', - priority: '1', - app: 'NoOp', - appdata: 'Internal Call', - type: 'internal', - description: 'Support Queue', - Applications: [{ - context: 'from-sip', - exten: '_6667', - priority: '2', - app: 'Set', - appdata: 'CDR(type)=internal', - type: 'internal' - }, { - context: 'from-sip', - exten: '_6667', - priority: '3', - app: 'GotoIfTime', - appdata: '*,*,*,*?from-sip,${EXTEN},4:from-sip,${EXTEN},9', - type: 'internal' - }, { - context: 'from-sip', - exten: '_6667', - priority: '4', - app: 'NoOP', - appdata: 'Skipped CallerID Set', - type: 'internal' - }, { - context: 'from-sip', - exten: '_6667', - priority: '5', - app: 'NoOP', - appdata: 'Skipped MixMonitor', - type: 'internal' - }, { - context: 'from-sip', - exten: '_6667', - priority: '6', - app: 'NoOP', - appdata: 'Skipped Progress', - type: 'internal' - }, { - context: 'from-sip', - exten: '_6667', - priority: '7', - app: 'AGI', - appdata: 'agi://127.0.0.1/square,Orders', - type: 'internal', - interval: '*,*,*,*', - isApp: true - }, { - context: 'from-sip', - exten: '_6667', - priority: '8', - app: 'NoOP', - appdata: 'Skipped StopMixMonitor', - type: 'internal' - }, { - context: 'from-sip', - exten: '_6667', - priority: '9', - app: 'NoOP', - appdata: 'AGI Application End', - type: 'internal' - }] - }, { - include: [{ - model: models.VoiceExtension, - as: 'Applications' - }] - }) - .then(function(voiceExtension) { - console.log(util.format('Populating Voice Extension: %s %s - DONE ', voiceExtension.context, voiceExtension.exten)); - }); - - models.VoiceExtension - .create({ - context: 'from-sip', - exten: '_6668', - priority: '1', - app: 'NoOp', - appdata: 'Internal Call', - type: 'internal', - description: 'Support Queue', - Applications: [{ - context: 'from-sip', - exten: '_6668', - priority: '2', - app: 'Set', - appdata: 'CDR(type)=internal', - type: 'internal' - }, { - context: 'from-sip', - exten: '_6668', - priority: '3', - app: 'GotoIfTime', - appdata: '*,*,*,*?from-sip,${EXTEN},4:from-sip,${EXTEN},9', - type: 'internal' - }, { - context: 'from-sip', - exten: '_6668', - priority: '4', - app: 'NoOP', - appdata: 'Skipped CallerID Set', - type: 'internal' - }, { - context: 'from-sip', - exten: '_6668', - priority: '5', - app: 'NoOP', - appdata: 'Skipped MixMonitor', - type: 'internal' - }, { - context: 'from-sip', - exten: '_6668', - priority: '6', - app: 'NoOP', - appdata: 'Skipped Progress', - type: 'internal' - }, { - context: 'from-sip', - exten: '_6668', - priority: '7', - app: 'AGI', - appdata: 'agi://127.0.0.1/square,CSI', - type: 'internal', - interval: '*,*,*,*', - isApp: true - }, { - context: 'from-sip', - exten: '_6668', - priority: '8', - app: 'NoOP', - appdata: 'Skipped StopMixMonitor', - type: 'internal' - }, { - context: 'from-sip', - exten: '_6668', - priority: '9', - app: 'NoOP', - appdata: 'AGI Application End', - type: 'internal' - }] - }, { - include: [{ - model: models.VoiceExtension, - as: 'Applications' - }] - }) - .then(function(voiceExtension) { - console.log(util.format('Populating Voice Extension: %s %s - DONE ', voiceExtension.context, voiceExtension.exten)); - }); - - models.VoiceExtension - .create({ - context: 'from-sip', - exten: '_X.', - priority: '1', - app: 'NoOp', - appdata: 'Outbound Call', - type: 'outbound', - description: 'Support Queue', - Applications: [{ - context: 'from-sip', - exten: '_X.', - priority: '2', - app: 'Set', - appdata: 'CDR(type)=outbound', - type: 'outbound' - }, { - context: 'from-sip', - exten: '_X.', - priority: '3', - app: 'Set', - appdata: 'CDR(tag)=--', - type: 'outbound' - }, { - context: 'from-sip', - exten: '_X.', - priority: '4', - app: 'GotoIfTime', - appdata: '*,*,*,*?from-sip,${EXTEN},5:from-sip,${EXTEN},10', - type: 'outbound' - }, { - context: 'from-sip', - exten: '_X.', - priority: '5', - app: 'NoOP', - appdata: 'Skipped CallerID Set', - type: 'outbound' - }, { - context: 'from-sip', - exten: '_X.', - priority: '6', - app: 'NoOP', - appdata: 'Skipped MixMonitor', - type: 'outbound' - }, { - context: 'from-sip', - exten: '_X.', - priority: '7', - app: 'NoOP', - appdata: 'Skipped Progress', - type: 'outbound' - }, { - context: 'from-sip', - exten: '_X.', - priority: '8', - app: 'Dial', - appdata: 'SIP/Demo Trunk/${EXTEN:0}', - type: 'outbound', - interval: '*,*,*,*', - isApp: true - }, { - context: 'from-sip', - exten: '_X.', - priority: '9', - app: 'NoOP', - appdata: 'Skipped StopMixMonitor', - type: 'outbound' - }, { - context: 'from-sip', - exten: '_X.', - priority: '10', - app: 'NoOP', - appdata: 'Dial Application End', - type: 'outbound' - }] - }, { - include: [{ - model: models.VoiceExtension, - as: 'Applications' - }] - }) - .then(function(voiceExtension) { - console.log(util.format('Populating Voice Extension: %s %s - DONE ', voiceExtension.context, voiceExtension.exten)); - }); - - models.VoiceExtension - .create({ - context: 'from-sip', - exten: '_6001', - priority: '1', - app: 'NoOp', - appdata: 'Internal Call', - type: 'internal', - description: 'Sales Queue', - Applications: [{ - context: 'from-sip', - exten: '_6001', - priority: '2', - app: 'Set', - appdata: 'CDR(type)=internal', - type: 'internal' - }, { - context: 'from-sip', - exten: '_6001', - priority: '3', - app: 'GotoIfTime', - appdata: '*,*,*,*?from-sip,${EXTEN},4:from-sip,${EXTEN},9', - type: 'internal' - }, { - context: 'from-sip', - exten: '_6001', - priority: '4', - app: 'NoOP', - appdata: 'Skipped CallerID Set', - type: 'internal' - }, { - context: 'from-sip', - exten: '_6001', - priority: '5', - app: 'NoOP', - appdata: 'Skipped MixMonitor', - type: 'internal' - }, { - context: 'from-sip', - exten: '_6001', - priority: '6', - app: 'Progress', - type: 'internal' - }, { - context: 'from-sip', - exten: '_6001', - priority: '7', - app: 'Queue', - appdata: 'Sales,,,,', - type: 'internal', - interval: '*,*,*,*', - isApp: true - }, { - context: 'from-sip', - exten: '_6001', - priority: '8', - app: 'NoOP', - appdata: 'Skipped StopMixMonitor', - type: 'internal' - }, { - context: 'from-sip', - exten: '_6001', - priority: '9', - app: 'NoOP', - appdata: 'Queue Application End', - type: 'internal' - }] - }, { - include: [{ - model: models.VoiceExtension, - as: 'Applications' - }] - }) - .then(function(voiceExtension) { - console.log(util.format('Populating Voice Extension: %s %s - DONE ', voiceExtension.context, voiceExtension.exten)); - }); - - models.SquareProject - .bulkCreate([{ - name: 'Auto Attendant', - description: 'IVR SAMPLE 1', - preproduction: '\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n', - production: '\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n' - }, { - name: 'CSI', - description: 'Customer Satisfaction Index example', - preproduction: '\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n', - production: '\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n' - }, { - name: 'Orders', - description: 'Order DB IVR Sample', - preproduction: '\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n', - production: '\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n' - }, { - name: 'Survey', - description: 'Survey IVR example', - preproduction: '\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n', - production: '\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n' - }]) - .then(function(projects) { - console.log(util.format('Populating Square Project: %s - DONE ', _.map(projects, 'name').join())); - }); - - models.SquareOdbc - .create({ - name: 'xcally', - dsn: 'DRIVER=MySQL;SERVER=127.0.0.1;UID=xcall;PWD=xC@LL1234;DATABASE=motion' - }) - .then(function(squareOdbc) { - console.log(util.format('Populating Square ODBC: %s - DONE ', squareOdbc.name)); - }); - - var newIntegrations = [{ - name: 'Zendesk', - version: '1.0.0', - author: 'XeniaLAB s.r.l.', - logo: 'assets/images/media/zendesk2.png', - state: 'zendesk', - description: 'Start using xCALLY - Zendesk integration: Auto-Generated Tickets, fully customizable comments, Custom Fields management, Tag support and Simple Setup', - link: 'https://wiki.xcallymotion.com/display/XMD/Zendesk+integration' - }, { - name: 'Salesforce', - version: '1.0.0', - author: 'XeniaLAB s.r.l.', - logo: 'assets/images/media/salesforce2.png', - state: 'salesforce', - description: 'Start using xCALLY - Salesforce integration: Auto-Generated Tasks, fully customizable comments, Custom Fields management and OpenCTI support', - link: 'https://wiki.xcallymotion.com/display/XMD/Salesforce+integration' - }, { - name: 'iFrame', - version: '1.0.0', - author: 'XeniaLAB s.r.l.', - logo: 'assets/images/media/iframe.png', - state: 'iframe', - description: 'Start using iFrame integration: enable your agents to view external pages (like your CRM) directly from Motion GUI', - link: 'https://wiki.xcallymotion.com/display/XMD/iFrame+Integration' - }]; - - models.Integration - .findAll() - .then(function(oldIntegrations) { - var bulkIntegrations = []; - oldIntegrations = _.map(oldIntegrations, 'state'); - newIntegrations.forEach(function(integration) { - if (_.includes(oldIntegrations, integration.state)) { - bulkIntegrations.push(models.Integration.update(integration, { - where: { - state: integration.state - } - })); - } else { - bulkIntegrations.push(models.Integration.create(integration)); - } - }); - return bulkIntegrations; - }) - .all() - .then(function() { - console.log('Finished populating integrations'); - }) - .catch(function(err) { - console.log('Error populating integrations:', err); - }); - - models.Company - .bulkCreate([{ - name: 'Acme', - type: 'ltd', - street: 'Acme Sreet', - }, { - name: 'Xenialab', - type: 'srl', - street: 'C.so Vittorio Emanuele II, 111', - postalCode: '10128', - country: 'Italy', - city: 'Turin', - vat: '09668910012', - website: 'http://www.xenialab.com/', - phone: '+39 011.19886500', - fax: '+39 011.0960070', - email: 'info@xcally.com' - }]) - .then(function(companies) { - console.log(util.format('Populating Companies: %s - DONE ', _.map(companies, 'name').join())); - }); - - models.Dashboard - .destroy({ - where: { - defaultEntry: true - } - }) - .then(function() { - return models.Dashboard - .bulkCreate([{ - name: 'Inbound Calls', - model: JSON.stringify({ - "title": "Voice Inbound", - "rows": [{ - "columns": [{ - "styleClass": "col-md-3", - "widgets": [{ - "type": "counter", - "config": { - "timeout": 5, - "color": "blue-madison", - "icon": "fa-comments", - "link": "#", - "linkText": "VIEW MORE", - "reportTables": [{ - "name": "Agents", - "value": "report_agent" - }, { - "name": "Calls", - "value": "report_call" - }, { - "name": "Dials", - "value": "report_dial" - }, { - "name": "Queues", - "value": "report_queue" - }, { - "name": "Users", - "value": "users" - }, { - "name": "Chat Sessions", - "value": "report_chat_session" - }, { - "name": "Mail Sessions", - "value": "report_mail_session" - }], - "colors": [{ - "name": "Blue", - "value": "blue-madison" - }, { - "name": "Red", - "value": "red-intense" - }, { - "name": "Green", - "value": "green-haze" - }, { - "name": "Purple", - "value": "purple-plum" - }, { - "name": "Orange", - "value": "yellow-casablanca" - }, { - "name": "Yellow", - "value": "yellow-crusta" - }], - "icons": [{ - "name": "Talk bubbles", - "value": "fa-comments" - }, { - "name": "Bar Chart", - "value": "fa-bar-chart" - }, { - "name": "Shopping Cart", - "value": "fa-shopping-cart" - }, { - "name": "Globe", - "value": "fa-globe" - }], - "report": "report_queue_history", - "condition": "queuecallerabandon=0 AND queuecallercomplete=0 AND queuecallerexit=0 AND queuecallerleaveAt is not null", - "details": "Active Calls", - "select": "COUNT(*)" - }, - "title": "CALLS", - "titleTemplateUrl": "../src/templates/widget-title.html", - "wid": "1454772532346-10" - }, { - "type": "counter", - "config": { - "timeout": 5, - "color": "blue-madison", - "icon": "fa-comments", - "link": "#", - "linkText": "VIEW MORE", - "reportTables": [{ - "name": "Agents", - "value": "report_agent" - }, { - "name": "Calls", - "value": "report_call" - }, { - "name": "Dials", - "value": "report_dial" - }, { - "name": "Queues", - "value": "report_queue" - }, { - "name": "Users", - "value": "users" - }, { - "name": "Chat Sessions", - "value": "report_chat_session" - }, { - "name": "Mail Sessions", - "value": "report_mail_session" - }], - "colors": [{ - "name": "Blue", - "value": "blue-madison" - }, { - "name": "Red", - "value": "red-intense" - }, { - "name": "Green", - "value": "green-haze" - }, { - "name": "Purple", - "value": "purple-plum" - }, { - "name": "Orange", - "value": "yellow-casablanca" - }, { - "name": "Yellow", - "value": "yellow-crusta" - }], - "icons": [{ - "name": "Talk bubbles", - "value": "fa-comments" - }, { - "name": "Bar Chart", - "value": "fa-bar-chart" - }, { - "name": "Shopping Cart", - "value": "fa-shopping-cart" - }, { - "name": "Globe", - "value": "fa-globe" - }], - "report": "report_queue_history", - "condition": "queuecallercomplete=1", - "details": "Total Answered", - "select": "COUNT(*)" - }, - "title": "CALLS", - "titleTemplateUrl": "../src/templates/widget-title.html", - "wid": "1456841031111-8" - }, { - "type": "counter", - "config": { - "timeout": 5, - "color": "blue-madison", - "icon": "fa-comments", - "link": "#", - "linkText": "VIEW MORE", - "reportTables": [{ - "name": "Agents", - "value": "report_agent" - }, { - "name": "Calls", - "value": "report_call" - }, { - "name": "Dials", - "value": "report_dial" - }, { - "name": "Queues", - "value": "report_queue" - }, { - "name": "Users", - "value": "users" - }, { - "name": "Chat Sessions", - "value": "report_chat_session" - }, { - "name": "Mail Sessions", - "value": "report_mail_session" - }], - "colors": [{ - "name": "Blue", - "value": "blue-madison" - }, { - "name": "Red", - "value": "red-intense" - }, { - "name": "Green", - "value": "green-haze" - }, { - "name": "Purple", - "value": "purple-plum" - }, { - "name": "Orange", - "value": "yellow-casablanca" - }, { - "name": "Yellow", - "value": "yellow-crusta" - }], - "icons": [{ - "name": "Talk bubbles", - "value": "fa-comments" - }, { - "name": "Bar Chart", - "value": "fa-bar-chart" - }, { - "name": "Shopping Cart", - "value": "fa-shopping-cart" - }, { - "name": "Globe", - "value": "fa-globe" - }], - "select": "ROUND(SUM(queuecallercomplete) / (SUM(queuecallercomplete)+SUM(queuecallerabandon)) *100,1)", - "report": "report_queue_history", - "condition": "1", - "details": "Answer Rate(%)" - }, - "title": "CALLS", - "titleTemplateUrl": "../src/templates/widget-title.html", - "wid": "1457270124802-4" - }, { - "type": "counter", - "config": { - "timeout": 5, - "color": "blue-madison", - "icon": "fa-comments", - "link": "#", - "linkText": "VIEW MORE", - "reportTables": [{ - "name": "Agents", - "value": "report_agent" - }, { - "name": "Calls", - "value": "report_call" - }, { - "name": "Dials", - "value": "report_dial" - }, { - "name": "Queues", - "value": "report_queue" - }, { - "name": "Users", - "value": "users" - }, { - "name": "Chat Sessions", - "value": "report_chat_session" - }, { - "name": "Mail Sessions", - "value": "report_mail_session" - }], - "colors": [{ - "name": "Blue", - "value": "blue-madison" - }, { - "name": "Red", - "value": "red-intense" - }, { - "name": "Green", - "value": "green-haze" - }, { - "name": "Purple", - "value": "purple-plum" - }, { - "name": "Orange", - "value": "yellow-casablanca" - }, { - "name": "Yellow", - "value": "yellow-crusta" - }], - "icons": [{ - "name": "Talk bubbles", - "value": "fa-comments" - }, { - "name": "Bar Chart", - "value": "fa-bar-chart" - }, { - "name": "Shopping Cart", - "value": "fa-shopping-cart" - }, { - "name": "Globe", - "value": "fa-globe" - }], - "select": "SEC_TO_TIME(ROUND(AVG(talktime),0))", - "report": "report_agent_history", - "condition": "agentcomplete=1", - "details": "Avg Talk Time" - }, - "title": "CALLS", - "titleTemplateUrl": "../src/templates/widget-title.html", - "wid": "1457270214766-5" - }, { - "type": "counter", - "config": { - "timeout": 5, - "color": "green-haze", - "icon": "fa-comments", - "link": "#", - "linkText": "VIEW MORE", - "reportTables": [{ - "name": "Agents", - "value": "report_agent" - }, { - "name": "Calls", - "value": "report_call" - }, { - "name": "Dials", - "value": "report_dial" - }, { - "name": "Queues", - "value": "report_queue" - }, { - "name": "Users", - "value": "users" - }, { - "name": "Chat Sessions", - "value": "report_chat_session" - }, { - "name": "Mail Sessions", - "value": "report_mail_session" - }], - "colors": [{ - "name": "Blue", - "value": "blue-madison" - }, { - "name": "Red", - "value": "red-intense" - }, { - "name": "Green", - "value": "green-haze" - }, { - "name": "Purple", - "value": "purple-plum" - }, { - "name": "Orange", - "value": "yellow-casablanca" - }, { - "name": "Yellow", - "value": "yellow-crusta" - }], - "icons": [{ - "name": "Talk bubbles", - "value": "fa-comments" - }, { - "name": "Bar Chart", - "value": "fa-bar-chart" - }, { - "name": "Shopping Cart", - "value": "fa-shopping-cart" - }, { - "name": "Globe", - "value": "fa-globe" - }], - "select": "ROUND(SUM(CASE WHEN queuecallercomplete=1 AND (UNIX_TIMESTAMP(queuecallerleaveAt)-UNIX_TIMESTAMP(queuecallerjoinAt) < 10) THEN 1 ELSE 0 END)/(SUM(queuecallercomplete) + SUM(CASE WHEN queuecallerabandon=1 AND (UNIX_TIMESTAMP(queuecallerleaveAt)-UNIX_TIMESTAMP(queuecallerjoinAt) > 10) THEN 1 ELSE 0 END)) *100,1)", - "report": "report_queue_history", - "condition": "1", - "details": "Service Level 10 (%)" - }, - "title": "SERVICE LEVEL", - "titleTemplateUrl": "../src/templates/widget-title.html", - "wid": "1457366965794-3" - }], - "cid": "1456841191661-21" - }, { - "styleClass": "col-md-3", - "widgets": [{ - "type": "counter", - "config": { - "timeout": 5, - "color": "red-intense", - "icon": "fa-comments", - "link": "#", - "linkText": "VIEW MORE", - "reportTables": [{ - "name": "Agents", - "value": "report_agent" - }, { - "name": "Calls", - "value": "report_call" - }, { - "name": "Dials", - "value": "report_dial" - }, { - "name": "Queues", - "value": "report_queue" - }, { - "name": "Users", - "value": "users" - }, { - "name": "Chat Sessions", - "value": "report_chat_session" - }, { - "name": "Mail Sessions", - "value": "report_mail_session" - }], - "colors": [{ - "name": "Blue", - "value": "blue-madison" - }, { - "name": "Red", - "value": "red-intense" - }, { - "name": "Green", - "value": "green-haze" - }, { - "name": "Purple", - "value": "purple-plum" - }, { - "name": "Orange", - "value": "yellow-casablanca" - }, { - "name": "Yellow", - "value": "yellow-crusta" - }], - "icons": [{ - "name": "Talk bubbles", - "value": "fa-comments" - }, { - "name": "Bar Chart", - "value": "fa-bar-chart" - }, { - "name": "Shopping Cart", - "value": "fa-shopping-cart" - }, { - "name": "Globe", - "value": "fa-globe" - }], - "report": "report_queue_history", - "condition": "queuecallerleaveAt IS NULL", - "details": "Waiting Calls", - "select": "COUNT(*)" - }, - "title": "CALLS", - "titleTemplateUrl": "../src/templates/widget-title.html", - "wid": "1456839870449-5" - }, { - "type": "counter", - "config": { - "timeout": 5, - "color": "red-intense", - "icon": "fa-comments", - "link": "#", - "linkText": "VIEW MORE", - "reportTables": [{ - "name": "Agents", - "value": "report_agent" - }, { - "name": "Calls", - "value": "report_call" - }, { - "name": "Dials", - "value": "report_dial" - }, { - "name": "Queues", - "value": "report_queue" - }, { - "name": "Users", - "value": "users" - }, { - "name": "Chat Sessions", - "value": "report_chat_session" - }, { - "name": "Mail Sessions", - "value": "report_mail_session" - }], - "colors": [{ - "name": "Blue", - "value": "blue-madison" - }, { - "name": "Red", - "value": "red-intense" - }, { - "name": "Green", - "value": "green-haze" - }, { - "name": "Purple", - "value": "purple-plum" - }, { - "name": "Orange", - "value": "yellow-casablanca" - }, { - "name": "Yellow", - "value": "yellow-crusta" - }], - "icons": [{ - "name": "Talk bubbles", - "value": "fa-comments" - }, { - "name": "Bar Chart", - "value": "fa-bar-chart" - }, { - "name": "Shopping Cart", - "value": "fa-shopping-cart" - }, { - "name": "Globe", - "value": "fa-globe" - }], - "report": "report_queue_history", - "condition": "queuecallerabandon=1", - "details": "Total Abandoned", - "select": "COUNT(*)" - }, - "title": "CALLS", - "titleTemplateUrl": "../src/templates/widget-title.html", - "wid": "1456841244931-27" - }, { - "type": "counter", - "config": { - "timeout": 5, - "color": "red-intense", - "icon": "fa-comments", - "link": "#", - "linkText": "VIEW MORE", - "reportTables": [{ - "name": "Agents", - "value": "report_agent" - }, { - "name": "Calls", - "value": "report_call" - }, { - "name": "Dials", - "value": "report_dial" - }, { - "name": "Queues", - "value": "report_queue" - }, { - "name": "Users", - "value": "users" - }, { - "name": "Chat Sessions", - "value": "report_chat_session" - }, { - "name": "Mail Sessions", - "value": "report_mail_session" - }], - "colors": [{ - "name": "Blue", - "value": "blue-madison" - }, { - "name": "Red", - "value": "red-intense" - }, { - "name": "Green", - "value": "green-haze" - }, { - "name": "Purple", - "value": "purple-plum" - }, { - "name": "Orange", - "value": "yellow-casablanca" - }, { - "name": "Yellow", - "value": "yellow-crusta" - }], - "icons": [{ - "name": "Talk bubbles", - "value": "fa-comments" - }, { - "name": "Bar Chart", - "value": "fa-bar-chart" - }, { - "name": "Shopping Cart", - "value": "fa-shopping-cart" - }, { - "name": "Globe", - "value": "fa-globe" - }], - "select": "ROUND(SUM(queuecallerabandon) / (SUM(queuecallercomplete)+SUM(queuecallerabandon)) *100,1)", - "report": "report_queue_history", - "condition": "1", - "details": "Abandon Rate (%)" - }, - "title": "CALLS", - "titleTemplateUrl": "../src/templates/widget-title.html", - "wid": "1457269033923-3" - }, { - "type": "counter", - "config": { - "timeout": 5, - "color": "yellow-casablanca", - "icon": "fa-comments", - "link": "#", - "linkText": "VIEW MORE", - "reportTables": [{ - "name": "Agents", - "value": "report_agent" - }, { - "name": "Calls", - "value": "report_call" - }, { - "name": "Dials", - "value": "report_dial" - }, { - "name": "Queues", - "value": "report_queue" - }, { - "name": "Users", - "value": "users" - }, { - "name": "Chat Sessions", - "value": "report_chat_session" - }, { - "name": "Mail Sessions", - "value": "report_mail_session" - }], - "colors": [{ - "name": "Blue", - "value": "blue-madison" - }, { - "name": "Red", - "value": "red-intense" - }, { - "name": "Green", - "value": "green-haze" - }, { - "name": "Purple", - "value": "purple-plum" - }, { - "name": "Orange", - "value": "yellow-casablanca" - }, { - "name": "Yellow", - "value": "yellow-crusta" - }], - "icons": [{ - "name": "Talk bubbles", - "value": "fa-comments" - }, { - "name": "Bar Chart", - "value": "fa-bar-chart" - }, { - "name": "Shopping Cart", - "value": "fa-shopping-cart" - }, { - "name": "Globe", - "value": "fa-globe" - }], - "select": "SEC_TO_TIME(ROUND(AVG(holdtime),0))", - "report": "report_agent_history", - "condition": "agentcomplete=1", - "details": "Avg Answer Time" - }, - "title": "CALLS", - "titleTemplateUrl": "../src/templates/widget-title.html", - "wid": "1457270230324-8" - }, { - "type": "counter", - "config": { - "timeout": 5, - "condition": "1", - "color": "green-haze", - "icon": "fa-comments", - "link": "#", - "linkText": "VIEW MORE", - "reportTables": [{ - "name": "Agents", - "value": "report_agent" - }, { - "name": "Calls", - "value": "report_call" - }, { - "name": "Dials", - "value": "report_dial" - }, { - "name": "Queues", - "value": "report_queue" - }, { - "name": "Users", - "value": "users" - }, { - "name": "Chat Sessions", - "value": "report_chat_session" - }, { - "name": "Mail Sessions", - "value": "report_mail_session" - }], - "colors": [{ - "name": "Blue", - "value": "blue-madison" - }, { - "name": "Red", - "value": "red-intense" - }, { - "name": "Green", - "value": "green-haze" - }, { - "name": "Purple", - "value": "purple-plum" - }, { - "name": "Orange", - "value": "yellow-casablanca" - }, { - "name": "Yellow", - "value": "yellow-crusta" - }], - "icons": [{ - "name": "Talk bubbles", - "value": "fa-comments" - }, { - "name": "Bar Chart", - "value": "fa-bar-chart" - }, { - "name": "Shopping Cart", - "value": "fa-shopping-cart" - }, { - "name": "Globe", - "value": "fa-globe" - }], - "select": "ROUND(SUM(CASE WHEN queuecallercomplete=1 AND (UNIX_TIMESTAMP(queuecallerleaveAt)-UNIX_TIMESTAMP(queuecallerjoinAt) < 15) THEN 1 ELSE 0 END)/(SUM(queuecallercomplete) + SUM(CASE WHEN queuecallerabandon=1 AND (UNIX_TIMESTAMP(queuecallerleaveAt)-UNIX_TIMESTAMP(queuecallerjoinAt) > 15) THEN 1 ELSE 0 END)) *100,1)", - "report": "report_queue_history", - "details": "Service Level 15 (%)" - }, - "title": "SERVICE LEVEL 15", - "titleTemplateUrl": "../src/templates/widget-title.html", - "wid": "1457952734590-1" - }], - "cid": "1456841191662-22" - }, { - "styleClass": "col-md-3", - "widgets": [{ - "type": "counter", - "config": { - "timeout": 5, - "color": "blue-madison", - "icon": "fa-comments", - "link": "#", - "linkText": "VIEW MORE", - "reportTables": [{ - "name": "Agents", - "value": "report_agent" - }, { - "name": "Calls", - "value": "report_call" - }, { - "name": "Dials", - "value": "report_dial" - }, { - "name": "Queues", - "value": "report_queue" - }, { - "name": "Users", - "value": "users" - }, { - "name": "Chat Sessions", - "value": "report_chat_session" - }, { - "name": "Mail Sessions", - "value": "report_mail_session" - }], - "colors": [{ - "name": "Blue", - "value": "blue-madison" - }, { - "name": "Red", - "value": "red-intense" - }, { - "name": "Green", - "value": "green-haze" - }, { - "name": "Purple", - "value": "purple-plum" - }, { - "name": "Orange", - "value": "yellow-casablanca" - }, { - "name": "Yellow", - "value": "yellow-crusta" - }], - "icons": [{ - "name": "Talk bubbles", - "value": "fa-comments" - }, { - "name": "Bar Chart", - "value": "fa-bar-chart" - }, { - "name": "Shopping Cart", - "value": "fa-shopping-cart" - }, { - "name": "Globe", - "value": "fa-globe" - }], - "select": "SEC_TO_TIME(MAX(UNIX_TIMESTAMP()-UNIX_TIMESTAMP(queuecallerleaveAt)))", - "report": "report_queue_history", - "condition": "queuecallerabandon=0 AND queuecallercomplete=0 AND queuecallerexit=0 AND queuecallerleaveAt is not null", - "details": "Longest Active Call" - }, - "title": "CALLS", - "titleTemplateUrl": "../src/templates/widget-title.html", - "wid": "1457275258494-11" - }, { - "type": "counter", - "config": { - "timeout": 5, - "color": "yellow-casablanca", - "icon": "fa-bar-chart", - "link": "#", - "linkText": "VIEW MORE", - "reportTables": [{ - "name": "Agents", - "value": "report_agent" - }, { - "name": "Calls", - "value": "report_call" - }, { - "name": "Dials", - "value": "report_dial" - }, { - "name": "Queues", - "value": "report_queue" - }, { - "name": "Users", - "value": "users" - }, { - "name": "Chat Sessions", - "value": "report_chat_session" - }, { - "name": "Mail Sessions", - "value": "report_mail_session" - }], - "colors": [{ - "name": "Blue", - "value": "blue-madison" - }, { - "name": "Red", - "value": "red-intense" - }, { - "name": "Green", - "value": "green-haze" - }, { - "name": "Purple", - "value": "purple-plum" - }, { - "name": "Orange", - "value": "yellow-casablanca" - }, { - "name": "Yellow", - "value": "yellow-crusta" - }], - "icons": [{ - "name": "Talk bubbles", - "value": "fa-comments" - }, { - "name": "Bar Chart", - "value": "fa-bar-chart" - }, { - "name": "Shopping Cart", - "value": "fa-shopping-cart" - }, { - "name": "Globe", - "value": "fa-globe" - }], - "select": "COUNT(distinct uniqueid)", - "report": "report_queue_history", - "details": "Total Offered", - "condition": "1" - }, - "title": "CALLS", - "titleTemplateUrl": "../src/templates/widget-title.html", - "wid": "1457269010616-1" - }, { - "type": "counter", - "config": { - "timeout": 5, - "color": "yellow-casablanca", - "icon": "fa-bar-chart", - "link": "#", - "linkText": "VIEW MORE", - "reportTables": [{ - "name": "Agents", - "value": "report_agent" - }, { - "name": "Calls", - "value": "report_call" - }, { - "name": "Dials", - "value": "report_dial" - }, { - "name": "Queues", - "value": "report_queue" - }, { - "name": "Users", - "value": "users" - }, { - "name": "Chat Sessions", - "value": "report_chat_session" - }, { - "name": "Mail Sessions", - "value": "report_mail_session" - }], - "colors": [{ - "name": "Blue", - "value": "blue-madison" - }, { - "name": "Red", - "value": "red-intense" - }, { - "name": "Green", - "value": "green-haze" - }, { - "name": "Purple", - "value": "purple-plum" - }, { - "name": "Orange", - "value": "yellow-casablanca" - }, { - "name": "Yellow", - "value": "yellow-crusta" - }], - "icons": [{ - "name": "Talk bubbles", - "value": "fa-comments" - }, { - "name": "Bar Chart", - "value": "fa-bar-chart" - }, { - "name": "Shopping Cart", - "value": "fa-shopping-cart" - }, { - "name": "Globe", - "value": "fa-globe" - }], - "select": "ROUND(COUNT(DISTINCT uniqueid)/HOUR(CURRENT_TIMESTAMP()),1)", - "report": "report_queue_history", - "condition": "1", - "details": "Avg Offered Per Hour" - }, - "title": "CALLS", - "titleTemplateUrl": "../src/templates/widget-title.html", - "wid": "1457275263022-12" - }, { - "type": "counter", - "config": { - "timeout": 5, - "color": "red-intense", - "icon": "fa-comments", - "link": "#", - "linkText": "VIEW MORE", - "reportTables": [{ - "name": "Agents", - "value": "report_agent" - }, { - "name": "Calls", - "value": "report_call" - }, { - "name": "Dials", - "value": "report_dial" - }, { - "name": "Queues", - "value": "report_queue" - }, { - "name": "Users", - "value": "users" - }, { - "name": "Chat Sessions", - "value": "report_chat_session" - }, { - "name": "Mail Sessions", - "value": "report_mail_session" - }], - "colors": [{ - "name": "Blue", - "value": "blue-madison" - }, { - "name": "Red", - "value": "red-intense" - }, { - "name": "Green", - "value": "green-haze" - }, { - "name": "Purple", - "value": "purple-plum" - }, { - "name": "Orange", - "value": "yellow-casablanca" - }, { - "name": "Yellow", - "value": "yellow-crusta" - }], - "icons": [{ - "name": "Talk bubbles", - "value": "fa-comments" - }, { - "name": "Bar Chart", - "value": "fa-bar-chart" - }, { - "name": "Shopping Cart", - "value": "fa-shopping-cart" - }, { - "name": "Globe", - "value": "fa-globe" - }], - "select": "SEC_TO_TIME(ROUND(AVG(UNIX_TIMESTAMP(queuecallerabandonAt)- UNIX_TIMESTAMP(queuecallerJoinAt)),0))", - "report": "report_queue_history", - "condition": "queuecallerabandon=1", - "details": "Avg Abandon Time" - }, - "title": "CALLS", - "titleTemplateUrl": "../src/templates/widget-title.html", - "wid": "1457270223870-7" - }, { - "type": "counter", - "config": { - "timeout": 5, - "condition": "1", - "color": "green-haze", - "icon": "fa-comments", - "link": "#", - "linkText": "VIEW MORE", - "reportTables": [{ - "name": "Agents", - "value": "report_agent" - }, { - "name": "Calls", - "value": "report_call" - }, { - "name": "Dials", - "value": "report_dial" - }, { - "name": "Queues", - "value": "report_queue" - }, { - "name": "Users", - "value": "users" - }, { - "name": "Chat Sessions", - "value": "report_chat_session" - }, { - "name": "Mail Sessions", - "value": "report_mail_session" - }], - "colors": [{ - "name": "Blue", - "value": "blue-madison" - }, { - "name": "Red", - "value": "red-intense" - }, { - "name": "Green", - "value": "green-haze" - }, { - "name": "Purple", - "value": "purple-plum" - }, { - "name": "Orange", - "value": "yellow-casablanca" - }, { - "name": "Yellow", - "value": "yellow-crusta" - }], - "icons": [{ - "name": "Talk bubbles", - "value": "fa-comments" - }, { - "name": "Bar Chart", - "value": "fa-bar-chart" - }, { - "name": "Shopping Cart", - "value": "fa-shopping-cart" - }, { - "name": "Globe", - "value": "fa-globe" - }], - "select": "ROUND(SUM(CASE WHEN queuecallercomplete=1 AND (UNIX_TIMESTAMP(queuecallerleaveAt)-UNIX_TIMESTAMP(queuecallerjoinAt) < 20) THEN 1 ELSE 0 END)/(SUM(queuecallercomplete) + SUM(CASE WHEN queuecallerabandon=1 AND (UNIX_TIMESTAMP(queuecallerleaveAt)-UNIX_TIMESTAMP(queuecallerjoinAt) > 20) THEN 1 ELSE 0 END)) *100,1)", - "report": "report_queue_history", - "details": "Service Level 20 (%)" - }, - "title": "SERVICE LEVEL 20", - "titleTemplateUrl": "../src/templates/widget-title.html", - "wid": "1457952751605-2" - }], - "cid": "1456841191663-23" - }, { - "styleClass": "col-md-3", - "widgets": [{ - "type": "counter", - "config": { - "timeout": 5, - "color": "red-intense", - "icon": "fa-comments", - "link": "#", - "linkText": "VIEW MORE", - "reportTables": [{ - "name": "Agents", - "value": "report_agent" - }, { - "name": "Calls", - "value": "report_call" - }, { - "name": "Dials", - "value": "report_dial" - }, { - "name": "Queues", - "value": "report_queue" - }, { - "name": "Users", - "value": "users" - }, { - "name": "Chat Sessions", - "value": "report_chat_session" - }, { - "name": "Mail Sessions", - "value": "report_mail_session" - }], - "colors": [{ - "name": "Blue", - "value": "blue-madison" - }, { - "name": "Red", - "value": "red-intense" - }, { - "name": "Green", - "value": "green-haze" - }, { - "name": "Purple", - "value": "purple-plum" - }, { - "name": "Orange", - "value": "yellow-casablanca" - }, { - "name": "Yellow", - "value": "yellow-crusta" - }], - "icons": [{ - "name": "Talk bubbles", - "value": "fa-comments" - }, { - "name": "Bar Chart", - "value": "fa-bar-chart" - }, { - "name": "Shopping Cart", - "value": "fa-shopping-cart" - }, { - "name": "Globe", - "value": "fa-globe" - }], - "select": "SEC_TO_TIME(MAX(UNIX_TIMESTAMP()-UNIX_TIMESTAMP(queuecallerjoinAt)))", - "report": "report_queue_history", - "condition": "queuecallerleaveAt IS NULL", - "details": "Oldest Waiting Call" - }, - "title": "CALLS", - "titleTemplateUrl": "../src/templates/widget-title.html", - "wid": "1457275254061-10" - }, { - "type": "counter", - "config": { - "timeout": 5, - "color": "red-intense", - "icon": "fa-comments", - "link": "#", - "linkText": "VIEW MORE", - "reportTables": [{ - "name": "Agents", - "value": "report_agent" - }, { - "name": "Calls", - "value": "report_call" - }, { - "name": "Dials", - "value": "report_dial" - }, { - "name": "Queues", - "value": "report_queue" - }, { - "name": "Users", - "value": "users" - }, { - "name": "Chat Sessions", - "value": "report_chat_session" - }, { - "name": "Mail Sessions", - "value": "report_mail_session" - }], - "colors": [{ - "name": "Blue", - "value": "blue-madison" - }, { - "name": "Red", - "value": "red-intense" - }, { - "name": "Green", - "value": "green-haze" - }, { - "name": "Purple", - "value": "purple-plum" - }, { - "name": "Orange", - "value": "yellow-casablanca" - }, { - "name": "Yellow", - "value": "yellow-crusta" - }], - "icons": [{ - "name": "Talk bubbles", - "value": "fa-comments" - }, { - "name": "Bar Chart", - "value": "fa-bar-chart" - }, { - "name": "Shopping Cart", - "value": "fa-shopping-cart" - }, { - "name": "Globe", - "value": "fa-globe" - }], - "select": "COUNT(*)", - "condition": "queuecallerexit=1", - "report": "report_queue_history", - "details": "Unmanaged" - }, - "title": "CALLS", - "titleTemplateUrl": "../src/templates/widget-title.html", - "wid": "1457269022062-2" - }, { - "type": "counter", - "config": { - "timeout": 5, - "color": "yellow-crusta", - "icon": "fa-comments", - "link": "#", - "linkText": "VIEW MORE", - "reportTables": [{ - "name": "Agents", - "value": "report_agent" - }, { - "name": "Calls", - "value": "report_call" - }, { - "name": "Dials", - "value": "report_dial" - }, { - "name": "Queues", - "value": "report_queue" - }, { - "name": "Users", - "value": "users" - }, { - "name": "Chat Sessions", - "value": "report_chat_session" - }, { - "name": "Mail Sessions", - "value": "report_mail_session" - }], - "colors": [{ - "name": "Blue", - "value": "blue-madison" - }, { - "name": "Red", - "value": "red-intense" - }, { - "name": "Green", - "value": "green-haze" - }, { - "name": "Purple", - "value": "purple-plum" - }, { - "name": "Orange", - "value": "yellow-casablanca" - }, { - "name": "Yellow", - "value": "yellow-crusta" - }], - "icons": [{ - "name": "Talk bubbles", - "value": "fa-comments" - }, { - "name": "Bar Chart", - "value": "fa-bar-chart" - }, { - "name": "Shopping Cart", - "value": "fa-shopping-cart" - }, { - "name": "Globe", - "value": "fa-globe" - }], - "select": "SEC_TO_TIME(ROUND(AVG(acwtime),0))", - "report": "report_agent_history", - "condition": "agentcomplete=1", - "details": "Avg ACW Time" - }, - "title": "CALLS", - "titleTemplateUrl": "../src/templates/widget-title.html", - "wid": "1457270219355-6" - }], - "cid": "1456841191664-24" - }] - }], - "titleTemplateUrl": "../src/templates/dashboard-title.html", - "structure": "3-3-3-3" - }), - defaultEntry: true, - editable: true - }, { - name: 'Outbound Calls', - model: JSON.stringify({ - "title": "Outbound Calls", - "rows": [{ - "columns": [{ - "styleClass": "col-md-3", - "widgets": [{ - "type": "counter", - "config": { - "timeout": 5, - "color": "purple-plum", - "icon": "fa-globe", - "link": "#", - "linkText": "VIEW MORE", - "reportTables": [{ - "name": "Agents", - "value": "report_agent" - }, { - "name": "Calls", - "value": "report_call" - }, { - "name": "Dials", - "value": "report_dial" - }, { - "name": "Queues", - "value": "report_queue" - }, { - "name": "Users", - "value": "users" - }, { - "name": "Chat Sessions", - "value": "report_chat_session" - }, { - "name": "Mail Sessions", - "value": "report_mail_session" - }], - "colors": [{ - "name": "Blue", - "value": "blue-madison" - }, { - "name": "Red", - "value": "red-intense" - }, { - "name": "Green", - "value": "green-haze" - }, { - "name": "Purple", - "value": "purple-plum" - }, { - "name": "Orange", - "value": "yellow-casablanca" - }, { - "name": "Yellow", - "value": "yellow-crusta" - }], - "icons": [{ - "name": "Talk bubbles", - "value": "fa-comments" - }, { - "name": "Bar Chart", - "value": "fa-bar-chart" - }, { - "name": "Shopping Cart", - "value": "fa-shopping-cart" - }, { - "name": "Globe", - "value": "fa-globe" - }], - "select": "COUNT(*)", - "report": "report_call_history", - "condition": "type=\"outbound\"", - "details": "Manual Outbound" - }, - "title": "CALLS", - "titleTemplateUrl": "../src/templates/widget-title.html", - "wid": "1457276458424-14" - }, { - "type": "counter", - "config": { - "timeout": 5, - "condition": "type=\"outbound\" AND disposition=\"ANSWERED\"", - "color": "green-haze", - "icon": "fa-globe", - "link": "#", - "linkText": "VIEW MORE", - "reportTables": [{ - "name": "Agents", - "value": "report_agent" - }, { - "name": "Calls", - "value": "report_call" - }, { - "name": "Dials", - "value": "report_dial" - }, { - "name": "Queues", - "value": "report_queue" - }, { - "name": "Users", - "value": "users" - }, { - "name": "Chat Sessions", - "value": "report_chat_session" - }, { - "name": "Mail Sessions", - "value": "report_mail_session" - }], - "colors": [{ - "name": "Blue", - "value": "blue-madison" - }, { - "name": "Red", - "value": "red-intense" - }, { - "name": "Green", - "value": "green-haze" - }, { - "name": "Purple", - "value": "purple-plum" - }, { - "name": "Orange", - "value": "yellow-casablanca" - }, { - "name": "Yellow", - "value": "yellow-crusta" - }], - "icons": [{ - "name": "Talk bubbles", - "value": "fa-comments" - }, { - "name": "Bar Chart", - "value": "fa-bar-chart" - }, { - "name": "Shopping Cart", - "value": "fa-shopping-cart" - }, { - "name": "Globe", - "value": "fa-globe" - }], - "select": "COUNT(*)", - "report": "report_call_history", - "details": "Answered" - }, - "title": "CALLS", - "titleTemplateUrl": "../src/templates/widget-title.html", - "wid": "1457718579522-2" - }], - "cid": "1456841191661-21" - }, { - "styleClass": "col-md-3", - "widgets": [{ - "type": "counter", - "config": { - "timeout": 5, - "color": "purple-plum", - "icon": "fa-globe", - "link": "#", - "linkText": "VIEW MORE", - "reportTables": [{ - "name": "Agents", - "value": "report_agent" - }, { - "name": "Calls", - "value": "report_call" - }, { - "name": "Dials", - "value": "report_dial" - }, { - "name": "Queues", - "value": "report_queue" - }, { - "name": "Users", - "value": "users" - }, { - "name": "Chat Sessions", - "value": "report_chat_session" - }, { - "name": "Mail Sessions", - "value": "report_mail_session" - }], - "colors": [{ - "name": "Blue", - "value": "blue-madison" - }, { - "name": "Red", - "value": "red-intense" - }, { - "name": "Green", - "value": "green-haze" - }, { - "name": "Purple", - "value": "purple-plum" - }, { - "name": "Orange", - "value": "yellow-casablanca" - }, { - "name": "Yellow", - "value": "yellow-crusta" - }], - "icons": [{ - "name": "Talk bubbles", - "value": "fa-comments" - }, { - "name": "Bar Chart", - "value": "fa-bar-chart" - }, { - "name": "Shopping Cart", - "value": "fa-shopping-cart" - }, { - "name": "Globe", - "value": "fa-globe" - }], - "select": "SEC_TO_TIME(SUM(duration))", - "report": "report_call_history", - "condition": "type=\"outbound\"", - "details": "Global Duration" - }, - "title": "CALLS", - "titleTemplateUrl": "../src/templates/widget-title.html", - "wid": "1457276453465-13" - }, { - "type": "counter", - "config": { - "timeout": 5, - "condition": "type=\"outbound\"", - "color": "yellow-casablanca", - "icon": "fa-comments", - "link": "#", - "linkText": "VIEW MORE", - "reportTables": [{ - "name": "Agents", - "value": "report_agent" - }, { - "name": "Calls", - "value": "report_call" - }, { - "name": "Dials", - "value": "report_dial" - }, { - "name": "Queues", - "value": "report_queue" - }, { - "name": "Users", - "value": "users" - }, { - "name": "Chat Sessions", - "value": "report_chat_session" - }, { - "name": "Mail Sessions", - "value": "report_mail_session" - }], - "colors": [{ - "name": "Blue", - "value": "blue-madison" - }, { - "name": "Red", - "value": "red-intense" - }, { - "name": "Green", - "value": "green-haze" - }, { - "name": "Purple", - "value": "purple-plum" - }, { - "name": "Orange", - "value": "yellow-casablanca" - }, { - "name": "Yellow", - "value": "yellow-crusta" - }], - "icons": [{ - "name": "Talk bubbles", - "value": "fa-comments" - }, { - "name": "Bar Chart", - "value": "fa-bar-chart" - }, { - "name": "Shopping Cart", - "value": "fa-shopping-cart" - }, { - "name": "Globe", - "value": "fa-globe" - }], - "select": "ROUND(SUM(IF(disposition=\"ANSWERED\",1,0))/COUNT(*)*100,1)", - "report": "report_call_history", - "details": "Answer Rate (%)" - }, - "title": "CALLS", - "titleTemplateUrl": "../src/templates/widget-title.html", - "wid": "1457718591243-3" - }], - "cid": "1456841191662-22" - }, { - "styleClass": "col-md-3", - "widgets": [{ - "type": "counter", - "config": { - "timeout": 5, - "condition": "type=\"outbound\"", - "color": "blue-madison", - "icon": "fa-comments", - "link": "#", - "linkText": "VIEW MORE", - "reportTables": [{ - "name": "Agents", - "value": "report_agent" - }, { - "name": "Calls", - "value": "report_call" - }, { - "name": "Dials", - "value": "report_dial" - }, { - "name": "Queues", - "value": "report_queue" - }, { - "name": "Users", - "value": "users" - }, { - "name": "Chat Sessions", - "value": "report_chat_session" - }, { - "name": "Mail Sessions", - "value": "report_mail_session" - }], - "colors": [{ - "name": "Blue", - "value": "blue-madison" - }, { - "name": "Red", - "value": "red-intense" - }, { - "name": "Green", - "value": "green-haze" - }, { - "name": "Purple", - "value": "purple-plum" - }, { - "name": "Orange", - "value": "yellow-casablanca" - }, { - "name": "Yellow", - "value": "yellow-crusta" - }], - "icons": [{ - "name": "Talk bubbles", - "value": "fa-comments" - }, { - "name": "Bar Chart", - "value": "fa-bar-chart" - }, { - "name": "Shopping Cart", - "value": "fa-shopping-cart" - }, { - "name": "Globe", - "value": "fa-globe" - }], - "select": "SEC_TO_TIME(ROUND(AVG(duration),0))", - "report": "report_call_history", - "details": "Avg Duration" - }, - "title": "CALLS", - "titleTemplateUrl": "../src/templates/widget-title.html", - "wid": "1457718482396-1" - }], - "cid": "1456841191663-23" - }, { - "styleClass": "col-md-3", - "widgets": [], - "cid": "1456841191664-24" - }] - }], - "titleTemplateUrl": "../src/templates/dashboard-title.html", - "structure": "3-3-3-3" - }), - defaultEntry: true, - editable: true - }, { - name: 'Agents Status', - model: JSON.stringify({ - "title": "Agents Status", - "rows": [{ - "columns": [{ - "styleClass": "col-md-3", - "widgets": [{ - "type": "counter", - "config": { - "timeout": 5, - "color": "purple-plum", - "icon": "fa-globe", - "link": "#", - "linkText": "VIEW MORE", - "reportTables": [{ - "name": "Agents", - "value": "report_agent" - }, { - "name": "Calls", - "value": "report_call" - }, { - "name": "Dials", - "value": "report_dial" - }, { - "name": "Queues", - "value": "report_queue" - }, { - "name": "Users", - "value": "users" - }, { - "name": "Chat Sessions", - "value": "report_chat_session" - }, { - "name": "Mail Sessions", - "value": "report_mail_session" - }], - "colors": [{ - "name": "Blue", - "value": "blue-madison" - }, { - "name": "Red", - "value": "red-intense" - }, { - "name": "Green", - "value": "green-haze" - }, { - "name": "Purple", - "value": "purple-plum" - }, { - "name": "Orange", - "value": "yellow-casablanca" - }, { - "name": "Yellow", - "value": "yellow-crusta" - }], - "icons": [{ - "name": "Talk bubbles", - "value": "fa-comments" - }, { - "name": "Bar Chart", - "value": "fa-bar-chart" - }, { - "name": "Shopping Cart", - "value": "fa-shopping-cart" - }, { - "name": "Globe", - "value": "fa-globe" - }], - "select": "COUNT(*)", - "report": "users", - "condition": "online=1 AND role=\"agent\"", - "details": "Logged" - }, - "title": "AGENTS", - "titleTemplateUrl": "../src/templates/widget-title.html", - "wid": "1457275248521-9" - }], - "cid": "1456841191661-21" - }, { - "styleClass": "col-md-3", - "widgets": [{ - "type": "counter", - "config": { - "timeout": 5, - "color": "yellow-crusta", - "icon": "fa-globe", - "link": "#", - "linkText": "VIEW MORE", - "reportTables": [{ - "name": "Agents", - "value": "report_agent" - }, { - "name": "Calls", - "value": "report_call" - }, { - "name": "Dials", - "value": "report_dial" - }, { - "name": "Queues", - "value": "report_queue" - }, { - "name": "Users", - "value": "users" - }, { - "name": "Chat Sessions", - "value": "report_chat_session" - }, { - "name": "Mail Sessions", - "value": "report_mail_session" - }], - "colors": [{ - "name": "Blue", - "value": "blue-madison" - }, { - "name": "Red", - "value": "red-intense" - }, { - "name": "Green", - "value": "green-haze" - }, { - "name": "Purple", - "value": "purple-plum" - }, { - "name": "Orange", - "value": "yellow-casablanca" - }, { - "name": "Yellow", - "value": "yellow-crusta" - }], - "icons": [{ - "name": "Talk bubbles", - "value": "fa-comments" - }, { - "name": "Bar Chart", - "value": "fa-bar-chart" - }, { - "name": "Shopping Cart", - "value": "fa-shopping-cart" - }, { - "name": "Globe", - "value": "fa-globe" - }], - "select": "COUNT(*)", - "report": "users", - "condition": "online=1 AND role=\"agent\" AND (voicePause=1 OR chatPause=1 OR mailPause=1 OR faxPAuse=1) and pauseType !=\"ACW\"", - "details": "Paused" - }, - "title": "AGENTS", - "titleTemplateUrl": "../src/templates/widget-title.html", - "wid": "1457276462846-15" - }], - "cid": "1456841191662-22" - }, { - "styleClass": "col-md-3", - "widgets": [{ - "type": "counter", - "config": { - "timeout": 5, - "color": "yellow-casablanca", - "icon": "fa-comments", - "link": "#", - "linkText": "VIEW MORE", - "reportTables": [{ - "name": "Agents", - "value": "report_agent" - }, { - "name": "Calls", - "value": "report_call" - }, { - "name": "Dials", - "value": "report_dial" - }, { - "name": "Queues", - "value": "report_queue" - }, { - "name": "Users", - "value": "users" - }, { - "name": "Chat Sessions", - "value": "report_chat_session" - }, { - "name": "Mail Sessions", - "value": "report_mail_session" - }], - "colors": [{ - "name": "Blue", - "value": "blue-madison" - }, { - "name": "Red", - "value": "red-intense" - }, { - "name": "Green", - "value": "green-haze" - }, { - "name": "Purple", - "value": "purple-plum" - }, { - "name": "Orange", - "value": "yellow-casablanca" - }, { - "name": "Yellow", - "value": "yellow-crusta" - }], - "icons": [{ - "name": "Talk bubbles", - "value": "fa-comments" - }, { - "name": "Bar Chart", - "value": "fa-bar-chart" - }, { - "name": "Shopping Cart", - "value": "fa-shopping-cart" - }, { - "name": "Globe", - "value": "fa-globe" - }], - "select": "COUNT(*)", - "report": "users", - "condition": "voicePause=1 and pauseType=\"ACW\"", - "details": "ACW" - }, - "title": "AGENTS", - "titleTemplateUrl": "../src/templates/widget-title.html", - "wid": "1457360464208-1" - }], - "cid": "1456841191663-23" - }, { - "styleClass": "col-md-3", - "widgets": [], - "cid": "1456841191664-24" - }] - }], - "titleTemplateUrl": "../src/templates/dashboard-title.html", - "structure": "3-3-3-3" - }), - defaultEntry: true, - editable: true - }], { - ignoreDuplicates: true, - individualHooks: true - }); - }) - .then(function(dashboards) { - console.log(util.format('Populating Dashboards: %s - DONE ', _.map(dashboards, 'name').join())); - }); - - // Init modules table - - models.VoiceExtension.destroy({ - where: { - context: 'outbound-fax' - } - }) - .then(function() { - models.VoiceExtension.bulkCreate([{ - context: 'outbound-fax', - exten: '_.', - priority: 1, - app: 'NoOp', - appdata: 'Outgoing fax to ${FAXNUMBER}', - type: 'system' - }, { - context: 'outbound-fax', - exten: '_.', - priority: 2, - app: 'NoOp', - appdata: 'Account ${FAXNAME}', - type: 'system' - }, { - context: 'outbound-fax', - exten: '_.', - priority: 3, - app: 'Set', - appdata: 'CDR(type)=outbound-fax', - type: 'system' - }, { - context: 'outbound-fax', - exten: '_.', - priority: 4, - app: 'Answer', - appdata: '', - type: 'system' - }, { - context: 'outbound-fax', - exten: '_.', - priority: 5, - app: 'Wait', - appdata: '2', - type: 'system' - }, { - context: 'outbound-fax', - exten: '_.', - priority: 6, - app: 'Set', - appdata: 'FAXOPT(ecm)=${FAXECM}', - type: 'system' - }, { - context: 'outbound-fax', - exten: '_.', - priority: 7, - app: 'Set', - appdata: 'FAXOPT(headerinfo)=${FAXHEADERINFO}', - type: 'system' - }, { - context: 'outbound-fax', - exten: '_.', - priority: 8, - app: 'Set', - appdata: 'FAXOPT(localstationid)=${FAXLOCALSTATIONID}', - type: 'system' - }, { - context: 'outbound-fax', - exten: '_.', - priority: 9, - app: 'Set', - appdata: 'FAXOPT(minrate)=${FAXMINRATE}', - type: 'system' - }, { - context: 'outbound-fax', - exten: '_.', - priority: 10, - app: 'Set', - appdata: 'FAXOPT(maxrate)=${FAXMAXRATE}', - type: 'system' - }, { - context: 'outbound-fax', - exten: '_.', - priority: 11, - app: 'Set', - appdata: 'FAXOPT(modem)=${FAXMODEM}', - type: 'system' - }, { - context: 'outbound-fax', - exten: '_.', - priority: 12, - app: 'Set', - appdata: 'FAXOPT(gateway)=${FAXGATEWAY}', - type: 'system' - }, { - context: 'outbound-fax', - exten: '_.', - priority: 13, - app: 'Set', - appdata: 'FAXOPT(t38timeout)=${FAXT38TIMEOUT}', - type: 'system' - }, { - context: 'outbound-fax', - exten: '_.', - priority: 14, - app: 'SendFAX', - appdata: '${FAXOUTFILE},ds', - type: 'system' - }, { - context: 'outbound-fax', - exten: '_.', - priority: 15, - app: 'Hangup', - appdata: '', - type: 'system' - }], { - ignoreDuplicates: true, - individualHooks: true - }) - }) - .then(function() { - console.log('Finished populating VoiceExtension for Outgoing Fax'); - }); - - models.User - .findAll({ - include: [{ - model: models.VoiceExtension, - as: 'UserExtensions', - where: { - app: 'Dial' - } - }] - }) - .then(function(users) { - console.log('Rewriting Users extensions...'); - var bulkUpdates = []; - _.forEach(users, function(user) { - _.forEach(user.UserExtensions, function(elem) { - elem.appdata = 'SIP/' + user.name + ',,tTxX'; - bulkUpdates.push(elem.save()); - // console.log('extension updated'); - }); - }); - return bulkUpdates; - }) - .all() - .catch(function(err) { - console.log(err); - }); - - _setting - .update({ - firstSetup: false - }); - } - - var newModules = [{ - id: 1, - name: "dashboard", - title: "APPLICATION_DASHBOARD", - ModuleId: null, - path: '/dashboard/voice' - }, { - id: 2, - name: "yourdashboards", - title: "APPLICATION_YOUR_DASHBOARDS", - ModuleId: null, - path: '/tools/yourdashboards/show/1' - }, { - id: 3, - name: "staff", - title: "APPLICATION_STAFF", - ModuleId: null, - path: '/staff/agents/list' - }, { - id: 4, - name: "agents", - title: "APPLICATION_AGENTS", - ModuleId: 3, - path: '/staff/agents/list' - }, { - id: 5, - name: "contactmanager", - title: "APPLICATION_CONTACT_MANAGER", - ModuleId: null, - path: '/contactmanager/contacts/list' - }, { - id: 6, - name: "channels", - title: "APPLICATION_CHANNELS", - ModuleId: null, - path: null - }, { - id: 7, - name: "voice", - title: "APPLICATION_VOICE", - ModuleId: 6, - path: '/channels/voice/queues/list' - }, { - id: 8, - name: "chat", - title: "APPLICATION_CHAT", - ModuleId: 6, - path: '/channels/chat/websites/list' - }, { - id: 9, - name: "mail", - title: "APPLICATION_MAIL", - ModuleId: 6, - path: '/channels/mail/accounts/list' - }, { - id: 10, - name: "fax", - title: "APPLICATION_FAX", - ModuleId: 6, - path: '/channels/fax/accounts/list' - }, { - id: 11, - name: "sms", - title: "APPLICATION_SMS", - ModuleId: 6, - path: '/channels/sms/accounts/list' - }, { - id: 12, - name: "realtime", - title: "APPLICATION_REALTIME", - ModuleId: 6, - path: '/channels/realtime/view/agents' - }, { - id: 13, - name: "tools", - title: "APPLICATION_TOOLS", - ModuleId: null, - path: '/tools/triggers/list' - }, { - id: 14, - name: "square", - title: "APPLICATION_CALLYSQUARE", - ModuleId: null, - path: '/square/projects/list' - }, { - id: 15, - name: "jscripty", - title: "APPLICATION_JSCRIPTY", - ModuleId: null, - path: '/jscripty/projects/list' - }, { - id: 16, - name: "motiondialer", - title: "APPLICATION_MOTION_DIALER", - ModuleId: null, - path: '/motiondialer/lists/list' - }, { - id: 17, - name: "analytics", - title: "APPLICATION_ANALYTICS", - ModuleId: null, - path: '/analytics/reports/list' - }, { - id: 18, - name: "setting", - title: "APPLICATION_SETTINGS", - ModuleId: null, - path: '/setting/updates/list' - }, { - id: 19, - name: "integration", - title: "APPLICATION_INTEGRATION", - ModuleId: null, - path: '/integrations/list' - }, { - id: 20, - name: "openchannel", - title: "APPLICATION_OPEN_CHANNEL", - ModuleId: 6, - path: '/channels/openchannel/accounts/list' - }]; - - - models.Module - .findAll() - .then(function(oldModules) { - var bulkModules = []; - oldModules = _.map(oldModules, 'id'); - newModules.forEach(function(module) { - if (_.includes(oldModules, module.id)) { - bulkModules.push(models.Module.update(module, { - where: { - id: module.id - } - })); - } else { - bulkModules.push(models.Module.create(module)); - } - }); - return bulkModules; - }) - .all() - .then(function() { - console.log('Finished populating modules'); - }) - .catch(function(err) { - console.log('Error populating modules:', err); - }); - - var newDefaultReports = [{ - "id": 25, - "name": "Details", - "description": "Detailed queues report", - "parent": "j12_7", - "table": "report_queue_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[]}}" - }, { - "id": 26, - "name": "Calls Result", - "description": "Simple queue calls overview", - "parent": "j12_7", - "table": "report_queue_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[]}}" - }, { - "id": 28, - "name": "Details", - "description": "Detailed report about answered queue calls", - "parent": "j60_1", - "table": "report_agent_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[{\"condition\":\"=\",\"field\":\"agentcomplete\",\"value\":\"1\",\"required\":true}]}}" - }, { - "id": 29, - "name": "Calls by Agent", - "description": "Agent calls timer Handle time= talk time + ACW time", - "parent": "j60_1", - "table": "report_agent_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[{\"condition\":\"=\",\"field\":\"agentcomplete\",\"value\":\"1\",\"required\":true}]}}" - }, { - "id": 30, - "name": "Calls by Queue", - "description": "Queue timer Handle Time= Talk Time + AVG TIme", - "parent": "j60_1", - "table": "report_agent_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[{\"condition\":\"=\",\"field\":\"agentcomplete\",\"value\":\"1\",\"required\":true}]}}" - }, { - "id": 31, - "name": "Answer Time by Queue", - "description": "Queues answer time performance", - "parent": "j60_1", - "table": "report_agent_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[{\"condition\":\"=\",\"field\":\"agentcomplete\",\"value\":\"1\",\"required\":true}]}}" - }, { - "id": 32, - "name": "Disconnection Cause", - "description": "Summary of the calls cdisconnection causes", - "parent": "j60_1", - "table": "report_agent_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[{\"condition\":\"=\",\"field\":\"agentcomplete\",\"value\":\"1\",\"required\":true}]}}" - }, { - "id": 34, - "name": "Answer Time by Hour", - "description": "Answer time by hour", - "parent": "j60_1", - "table": "report_agent_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[{\"condition\":\"=\",\"field\":\"agentcomplete\",\"value\":\"1\",\"required\":true}]}}" - }, { - "id": 35, - "name": "Details", - "description": "Detailed report about the unanswered calls", - "parent": "j60_2", - "table": "report_queue_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[{\"condition\":\"=\",\"field\":\"queuecallercomplete\",\"value\":\"0\",\"required\":true}]}}" - }, { - "id": 36, - "name": "Unanswered by Queue", - "description": "Unanswered calls summary by queue", - "parent": "j60_2", - "table": "report_queue_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[{\"condition\":\"=\",\"field\":\"queuecallercomplete\",\"value\":\"0\",\"required\":true}]}}" - }, { - "id": 37, - "name": "Unmanaged calls", - "description": "Unmanaged calls summary", - "parent": "j60_2", - "table": "report_queue_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[{\"condition\":\"=\",\"field\":\"queuecallerexit\",\"value\":\"1\",\"required\":true}]}}" - }, { - "id": 38, - "name": "Abandon Time by Queue", - "description": "Abandon time performance by queue", - "parent": "j60_2", - "table": "report_queue_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[{\"condition\":\"=\",\"field\":\"queuecallerabandon\",\"value\":\"1\",\"required\":true}]}}" - }, { - "id": 40, - "name": "Calls by Date", - "description": "Queue calls summary by date", - "parent": "j60_3", - "table": "report_queue_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[]}}" - }, { - "id": 41, - "name": "Calls by Hour", - "description": "Calls distribution by hour", - "parent": "j60_3", - "table": "report_queue_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[]}}" - }, { - "id": 46, - "name": "Calls by Day", - "description": "Calls distribution by day of the month", - "parent": "j60_3", - "table": "report_queue_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[]}}" - }, { - "id": 47, - "name": "Calls by Weekday", - "description": "Calls distribution by day of the week", - "parent": "j60_3", - "table": "report_queue_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[]}}" - }, { - "id": 49, - "name": "Summary", - "description": "Calls distribution by queue", - "parent": "j12_7", - "table": "report_queue_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[]}}" - }, { - "id": 50, - "name": "Details", - "description": "Calls detail (cdr)", - "parent": "j51_1", - "table": "report_call_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[]}}" - }, { - "id": 51, - "name": "Outbound", - "description": "Manual outbound calls detailed report", - "parent": "j51_1", - "table": "report_call_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[{\"condition\":\"=\",\"field\":\"type\",\"value\":\"'outbound'\",\"required\":true}]}}" - }, { - "id": 52, - "name": "Calls by Type", - "description": "Summary report of the calls type", - "parent": "j51_1", - "table": "report_call_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[]}}" - }, { - "id": 53, - "name": "Outbound Calls Disposition", - "description": "Outbound calls grouped by disposition", - "parent": "j51_1", - "table": "report_call_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[{\"condition\":\"=\",\"field\":\"type\",\"value\":\"'outbound'\",\"required\":true}]}}" - }, { - "id": 54, - "name": "Outbound Calls by Agent", - "description": "Summary of outbound calls grouped by agent", - "parent": "j51_1", - "table": "report_call_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[{\"condition\":\"=\",\"field\":\"type\",\"value\":\"'outbound'\",\"required\":true}]}}" - }, { - "id": 55, - "name": "Outbound Calls by Date", - "description": "Summary of outbound calls grouped by date", - "parent": "j51_1", - "table": "report_call_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[{\"condition\":\"=\",\"field\":\"type\",\"value\":\"'outbound'\",\"required\":true}]}}" - }, { - "id": 57, - "name": "Login Time", - "description": "Agent's login time", - "parent": "j12_5", - "table": "report_member_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[{\"condition\":\"=\",\"field\":\"type\",\"value\":\"'LOGIN'\",\"required\":true},{\"condition\":\"=\",\"field\":\"channel\",\"value\":\"'voice'\",\"required\":true}]}}" - }, { - "id": 61, - "name": "Activities Summary", - "description": "Agent's activities report", - "parent": "j87_1", - "table": "report_member_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[{\"condition\":\"=\",\"field\":\"channel\",\"value\":\"'voice'\",\"required\":true}]}}" - }, { - "id": 62, - "name": "Pause Details", - "description": "Agents status details", - "parent": "j87_1", - "table": "report_member_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[{\"condition\":\"=\",\"field\":\"channel\",\"value\":\"'voice'\",\"required\":true},{\"condition\":\"=\",\"field\":\"type\",\"value\":\"'PAUSE'\",\"required\":true}]}}" - }, { - "id": 63, - "name": "Details", - "description": "Agent's status detail", - "parent": "j87_1", - "table": "report_member_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[{\"condition\":\"=\",\"field\":\"channel\",\"value\":\"'voice'\",\"required\":true}]}}" - }, { - "id": 64, - "name": "Pause Time", - "description": "Agent's pause time", - "parent": "j87_1", - "table": "report_member_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[{\"condition\":\"=\",\"field\":\"type\",\"value\":\"'PAUSE'\",\"required\":true},{\"condition\":\"=\",\"field\":\"channel\",\"value\":\"'voice'\",\"required\":true}]}}" - }, { - "id": 65, - "name": "Summary", - "description": "CallySquare Summary", - "parent": "j87_2", - "table": "report_square_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[]}}" - }, { - "id": 67, - "name": "Blocks", - "description": "CallySquare Blocks Detail", - "parent": "j87_2", - "table": "report_square_details_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[]}}" - }, { - "id": 68, - "name": "Received emails by account", - "description": "Summary of the emails accepted by application for each account", - "parent": "j12_4", - "table": "report_mail_session_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[]}}" - }, { - "id": 69, - "name": "Rating by Agent", - "description": "Records rating by agent", - "parent": "j110_1", - "table": "voice_recordings", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[{\"condition\":\">\",\"field\":\"rating\",\"value\":\"0\",\"required\":true}]}}" - }, { - "id": 70, - "name": "Rating by Queue", - "description": "Records rating by queue", - "parent": "j110_1", - "table": "voice_recordings", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[{\"condition\":\"IS NOT NULL\",\"field\":\"queue\",\"value\":\"\",\"required\":false},{\"condition\":\">\",\"field\":\"rating\",\"value\":\"0\",\"required\":true}]}}" - }, { - "id": 72, - "name": "Website Summary", - "description": "Chat session information by website", - "parent": "j12_3", - "table": "report_chat_session_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[]}}" - }, { - "id": 73, - "name": "Session Detail", - "description": "Detailed report about chat session", - "parent": "j12_3", - "table": "report_chat_session_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[]}}" - }, { - "id": 74, - "name": "Chat by Agent", - "description": "Session chat by agent", - "parent": "j12_3", - "table": "report_chat_session_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[{\"condition\":\"=\",\"field\":\"complete\",\"value\":\"1\",\"required\":true}]}}" - }, { - "id": 75, - "name": "Chat by Queue", - "description": "Chat sessions by queue", - "parent": "j12_3", - "table": "report_chat_session_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[{\"condition\":\"=\",\"field\":\"application\",\"value\":\"'queue'\",\"required\":true}]}}" - }, { - "id": 76, - "name": "Chat by Date", - "description": "Session chat by date", - "parent": "j12_3", - "table": "report_chat_session_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[]}}" - }, { - "id": 77, - "name": "Received emails by queue", - "description": "Summary of received email by queue", - "parent": "j12_4", - "table": "report_mail_session_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[{\"condition\":\"=\",\"field\":\"application\",\"value\":\"'queue'\",\"required\":true}]}}" - }, { - "id": 79, - "name": "Accepted emails by agent", - "description": "Summary of accepted email by agent", - "parent": "j12_4", - "table": "report_mail_session_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[{\"condition\":\"=\",\"field\":\"timeout\",\"value\":\"0\",\"required\":true}]}}" - }, { - "id": 81, - "name": "Messages Summary by Date", - "description": "Global messages summary by date", - "parent": "j12_4", - "table": "mail_messages", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[]}}" - }, { - "id": 82, - "name": "Interactions detail", - "description": "Detailed report about the interactions", - "parent": "j12_4", - "table": "mail_rooms", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[]}}" - }, { - "id": 83, - "name": "Disposition Summary", - "description": "Closed interactions by disposition (filtered by disposition not null)", - "parent": "j12_4", - "table": "mail_rooms", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[{\"condition\":\"IS NOT NULL\",\"field\":\"disposition\",\"value\":\"\",\"required\":false}]}}" - }, { - "id": 84, - "name": "Closed interactions by date", - "description": "Summary of closed interactions grouped by date + average handle time (from when the first email arrived to when the interaction has been closed)", - "parent": "j12_4", - "table": "mail_rooms", - "conditions": "{\"group\":{\"operator\":\"OR\",\"rules\":[{\"condition\":\"=\",\"field\":\"status\",\"value\":\"'CLOSED'\",\"required\":true}]}}" - }, { - "id": 85, - "name": "Details", - "description": null, - "parent": "j12_6", - "table": "sms_messages", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[]}}" - }, { - "id": 90, - "name": "Details", - "description": null, - "parent": "j4_10", - "table": "report_integration_history", - "conditions": "{\"group\":{\"operator\":\"AND\",\"rules\":[]}}" - }]; - - var newDefaulReportsFields = [{ - "id": 10128, - "field": "uniqueid", - "alias": "UniqueId", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 25, - "MetricId": null, - "custom": 0 - }, { - "id": 10129, - "field": "calleridnum", - "alias": "CallerIdNum", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 25, - "MetricId": null, - "custom": 0 - }, { - "id": 10130, - "field": "calleridname", - "alias": "CallerIdName", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 25, - "MetricId": null, - "custom": 0 - }, { - "id": 10131, - "field": "queue", - "alias": "Queue", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 25, - "MetricId": null, - "custom": 0 - }, { - "id": 10132, - "field": "queuecallerjoinAt", - "alias": "QueueJoinAt", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 25, - "MetricId": null, - "custom": 0 - }, { - "id": 10133, - "field": "queuecallerleaveAt", - "alias": "QueueLeaveAt", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 25, - "MetricId": null, - "custom": 0 - }, { - "id": 10134, - "field": "queuecallerabandon", - "alias": "QueueAbandon", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 25, - "MetricId": null, - "custom": 0 - }, { - "id": 10135, - "field": "queuecallerabandonAt", - "alias": "QueueAbandonAt", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 25, - "MetricId": null, - "custom": 0 - }, { - "id": 10136, - "field": "queuecallercomplete", - "alias": "Complete", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 25, - "MetricId": null, - "custom": 0 - }, { - "id": 10137, - "field": "queuecallercompleteAt", - "alias": "CompleteAt", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 25, - "MetricId": null, - "custom": 0 - }, { - "id": 10138, - "field": "queuecallerexit", - "alias": "QueueExit", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 25, - "MetricId": null, - "custom": 0 - }, { - "id": 10139, - "field": "queuecallerexitAt", - "alias": "QueueExitAt", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 25, - "MetricId": null, - "custom": 0 - }, { - "id": 10140, - "field": "queuecallerexitreason", - "alias": "QueueExitReason", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 25, - "MetricId": null, - "custom": 0 - }, { - "id": 10141, - "field": "exten", - "alias": "DID", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 25, - "MetricId": null, - "custom": 0 - }, { - "id": 10142, - "field": "UNIX_TIMESTAMP(queuecallercompleteAt)-UNIX_TIMESTAMP(queuecallerleaveAt)", - "alias": "TalkTime", - "function": null, - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 25, - "MetricId": null, - "custom": 1 - }, { - "id": 10143, - "field": "UNIX_TIMESTAMP(queuecallerAbandonAt)-UNIX_TIMESTAMP(queuecallerjoinAt)", - "alias": "AbandonTime", - "function": null, - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 25, - "MetricId": null, - "custom": 1 - }, { - "id": 10144, - "field": "IF(queuecallercomplete=1,holdtime,null)", - "alias": "AnswerTime", - "function": null, - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 25, - "MetricId": null, - "custom": 1 - }, { - "id": 10188, - "field": "calleridnum", - "alias": "CallerID", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 26, - "MetricId": null, - "custom": 0 - }, { - "id": 10189, - "field": "queue", - "alias": "Queue", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 26, - "MetricId": null, - "custom": 0 - }, { - "id": 10190, - "field": "queuecallerjoinAt", - "alias": "StartTime", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 26, - "MetricId": null, - "custom": 0 - }, { - "id": 10191, - "field": "CASE WHEN queuecallercomplete=1 THEN queuecallercompleteAt ELSE queuecallerLeaveAt END", - "alias": "EndTime", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 26, - "MetricId": null, - "custom": 1 - }, { - "id": 10192, - "field": "holdtime", - "alias": "HoldTime", - "function": null, - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 26, - "MetricId": null, - "custom": 0 - }, { - "id": 10193, - "field": "CASE WHEN queuecallercomplete=1 THEN \"YES\" ELSE \"NO\" END", - "alias": "Answered", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 26, - "MetricId": null, - "custom": 1 - }, { - "id": 20820, - "field": "uniqueid", - "alias": "UniqueId", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 28, - "MetricId": null, - "custom": 0 - }, { - "id": 20821, - "field": "calleridnum", - "alias": "CallerIdNum", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 28, - "MetricId": null, - "custom": 0 - }, { - "id": 20822, - "field": "calleridname", - "alias": "CallerIdName", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 28, - "MetricId": null, - "custom": 0 - }, { - "id": 20823, - "field": "queue", - "alias": "Queue", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 28, - "MetricId": null, - "custom": 0 - }, { - "id": 20824, - "field": "membername", - "alias": "Agent", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 28, - "MetricId": null, - "custom": 0 - }, { - "id": 20825, - "field": "agentcalledAt", - "alias": "AgentCalledAt", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 28, - "MetricId": null, - "custom": 0 - }, { - "id": 20826, - "field": "agentconnectAt", - "alias": "AgentConnectAt", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 28, - "MetricId": null, - "custom": 0 - }, { - "id": 20827, - "field": "agentcompleteAt", - "alias": "AgentCompleteAt", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 28, - "MetricId": null, - "custom": 0 - }, { - "id": 20828, - "field": "holdtime", - "alias": "AnswerTime", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 28, - "MetricId": null, - "custom": 0 - }, { - "id": 20829, - "field": "talktime", - "alias": "TalkTime", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 28, - "MetricId": null, - "custom": 0 - }, { - "id": 20830, - "field": "agentacw", - "alias": "AgentACW", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 28, - "MetricId": null, - "custom": 0 - }, { - "id": 20831, - "field": "acwtime", - "alias": "AgentACWTime", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 28, - "MetricId": null, - "custom": 0 - }, { - "id": 20832, - "field": "agentcomplete", - "alias": "AgentComplete", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 28, - "MetricId": null, - "custom": 0 - }, { - "id": 20833, - "field": "reason", - "alias": "HangupReason", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 28, - "MetricId": null, - "custom": 0 - }, { - "id": 20834, - "field": "lastevent", - "alias": "LastEvent", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 28, - "MetricId": null, - "custom": 0 - }, { - "id": 20835, - "field": "exten", - "alias": "DID", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 28, - "MetricId": null, - "custom": 0 - }, { - "id": 25504, - "field": "membername", - "alias": "Agent", - "function": null, - "format": null, - "groupBy": 1, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 29, - "MetricId": null, - "custom": 0 - }, { - "id": 25505, - "field": "agentcomplete", - "alias": "Completed", - "function": "SUM", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 29, - "MetricId": null, - "custom": 0 - }, { - "id": 25506, - "field": "talktime", - "alias": "TotTalkTime", - "function": "SUM", - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 29, - "MetricId": null, - "custom": 0 - }, { - "id": 25507, - "field": "acwtime", - "alias": "TotACWTime", - "function": "SUM", - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 29, - "MetricId": null, - "custom": 0 - }, { - "id": 25508, - "field": "talktime + acwtime", - "alias": "TotHandleTime", - "function": "SUM", - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 29, - "MetricId": null, - "custom": 1 - }, { - "id": 25509, - "field": "ROUND(AVG(talktime))", - "alias": "AvgTalkTime", - "function": null, - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 29, - "MetricId": null, - "custom": 1 - }, { - "id": 25510, - "field": "ROUND(AVG(acwtime))", - "alias": "AvgACWTime", - "function": null, - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 29, - "MetricId": null, - "custom": 1 - }, { - "id": 25511, - "field": "ROUND(SUM(talktime + acwtime)/COUNT(agentcomplete))", - "alias": "AvgHandleTime", - "function": null, - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 29, - "MetricId": null, - "custom": 1 - }, { - "id": 10470, - "field": "queue", - "alias": "Queue", - "function": null, - "format": null, - "groupBy": 1, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 30, - "MetricId": null, - "custom": 0 - }, { - "id": 10471, - "field": "agentcomplete", - "alias": "Completed", - "function": "SUM", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 30, - "MetricId": null, - "custom": 0 - }, { - "id": 10472, - "field": "talktime", - "alias": "Tot TalkTime", - "function": "SUM", - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 30, - "MetricId": null, - "custom": 0 - }, { - "id": 10473, - "field": "holdtime", - "alias": "Tot HoldTime", - "function": "SUM", - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 30, - "MetricId": null, - "custom": 0 - }, { - "id": 10474, - "field": "acwtime", - "alias": "Tot ACWTime", - "function": "SUM", - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 30, - "MetricId": null, - "custom": 0 - }, { - "id": 10475, - "field": "talktime + acwtime", - "alias": "Tot Handle Time", - "function": "SUM", - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 30, - "MetricId": null, - "custom": 1 - }, { - "id": 10476, - "field": "ROUND(AVG(talktime))", - "alias": "Avg TalkTime", - "function": null, - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 30, - "MetricId": null, - "custom": 1 - }, { - "id": 10477, - "field": "ROUND(AVG(holdtime))", - "alias": "Avg HoldTime", - "function": null, - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 30, - "MetricId": null, - "custom": 1 - }, { - "id": 10478, - "field": "ROUND(AVG(acwtime))", - "alias": "Avg ACWTime", - "function": null, - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 30, - "MetricId": null, - "custom": 1 - }, { - "id": 10479, - "field": "ROUND(SUM(talktime + acwtime)/COUNT(agentcomplete))", - "alias": "Avg Handle Time", - "function": null, - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 30, - "MetricId": null, - "custom": 1 - }, { - "id": 10517, - "field": "queue", - "alias": "Queue", - "function": null, - "format": null, - "groupBy": 1, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 31, - "MetricId": null, - "custom": 0 - }, { - "id": 10518, - "field": "agentcomplete", - "alias": "Tot Answered", - "function": "SUM", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 31, - "MetricId": null, - "custom": 0 - }, { - "id": 10519, - "field": "COUNT(IF(holdtime<10,1,NULL))", - "alias": "Answered <10s", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 31, - "MetricId": null, - "custom": 1 - }, { - "id": 10520, - "field": "ROUND(COUNT(IF(holdtime<10,1,NULL)) / SUM(agentcomplete) *100,1)", - "alias": "Answer Rate <10s", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 31, - "MetricId": null, - "custom": 1 - }, { - "id": 10521, - "field": "COUNT(IF(holdtime >=10 AND holdtime <20,1,NULL))", - "alias": "Answered 10-20s", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 31, - "MetricId": null, - "custom": 1 - }, { - "id": 10522, - "field": "ROUND(COUNT(IF(holdtime >=10 AND holdtime <20,1,NULL)) / SUM(agentcomplete) *100,1)", - "alias": "Answer Rate 10-20s", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 31, - "MetricId": null, - "custom": 1 - }, { - "id": 10523, - "field": "COUNT(IF(holdtime >=20 AND holdtime <30,1,NULL))", - "alias": "Answered 20-30s", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 31, - "MetricId": null, - "custom": 1 - }, { - "id": 10524, - "field": "ROUND(COUNT(IF(holdtime >=20 AND holdtime <30,1,NULL)) / SUM(agentcomplete) *100,1)", - "alias": "Answer Rate 20-30s", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 31, - "MetricId": null, - "custom": 1 - }, { - "id": 10525, - "field": "COUNT(IF(holdtime >=30,1,NULL))", - "alias": "Answered >30s", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 31, - "MetricId": null, - "custom": 1 - }, { - "id": 10526, - "field": "ROUND(COUNT(IF(holdtime >=30,1,NULL)) / SUM(agentcomplete) *100,1)", - "alias": "Answer Rate >30s", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 31, - "MetricId": null, - "custom": 1 - }, { - "id": 10765, - "field": "reason", - "alias": "Reason", - "function": null, - "format": null, - "groupBy": 1, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 32, - "MetricId": null, - "custom": 0 - }, { - "id": 10766, - "field": "uniqueid", - "alias": "Calls", - "function": "COUNT", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 32, - "MetricId": null, - "custom": 0 - }, { - "id": 10813, - "field": "agentconnectAt", - "alias": "Hour", - "function": null, - "format": "HOUR", - "groupBy": 1, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 34, - "MetricId": null, - "custom": 0 - }, { - "id": 10814, - "field": "agentcomplete", - "alias": "Tot Answered", - "function": "SUM", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 34, - "MetricId": null, - "custom": 0 - }, { - "id": 10815, - "field": "COUNT(IF(holdtime<10,1,NULL))", - "alias": "Answered <10s", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 34, - "MetricId": null, - "custom": 1 - }, { - "id": 10816, - "field": "COUNT(IF(holdtime >=10 AND holdtime <20,1,NULL))", - "alias": "Answered 10-20s", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 34, - "MetricId": null, - "custom": 1 - }, { - "id": 10817, - "field": "COUNT(IF(holdtime >=20 AND holdtime <30,1,NULL))", - "alias": "Answered 20-30s", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 34, - "MetricId": null, - "custom": 1 - }, { - "id": 10818, - "field": "COUNT(IF(holdtime >=30,1,NULL))", - "alias": "Answered >30s", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 34, - "MetricId": null, - "custom": 1 - }, { - "id": 10905, - "field": "uniqueid", - "alias": "UniqueId", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 35, - "MetricId": null, - "custom": 0 - }, { - "id": 10906, - "field": "calleridnum", - "alias": "CallerIdNum", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 35, - "MetricId": null, - "custom": 0 - }, { - "id": 10907, - "field": "queue", - "alias": "Queue", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 35, - "MetricId": null, - "custom": 0 - }, { - "id": 10908, - "field": "queuecallerjoinAt", - "alias": "JoinAt", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 35, - "MetricId": null, - "custom": 0 - }, { - "id": 10909, - "field": "queuecallerleaveAt", - "alias": "LeaveAt", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 35, - "MetricId": null, - "custom": 0 - }, { - "id": 10910, - "field": "queuecallerabandon", - "alias": "Abandon", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 35, - "MetricId": null, - "custom": 0 - }, { - "id": 10911, - "field": "queuecallerabandonAt", - "alias": "AbandonAt", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 35, - "MetricId": null, - "custom": 0 - }, { - "id": 10912, - "field": "queuecallerexit", - "alias": "Unmanaged", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 35, - "MetricId": null, - "custom": 0 - }, { - "id": 10913, - "field": "queuecallerexitAt", - "alias": "UnmanagedAt", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 35, - "MetricId": null, - "custom": 0 - }, { - "id": 10914, - "field": "queuecallerexitreason", - "alias": "UnmanagedReason", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 35, - "MetricId": null, - "custom": 0 - }, { - "id": 10915, - "field": "position", - "alias": "QueuePosition", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 35, - "MetricId": null, - "custom": 0 - }, { - "id": 10916, - "field": "exten", - "alias": "DID", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 35, - "MetricId": null, - "custom": 0 - }, { - "id": 10917, - "field": "UNIX_TIMESTAMP(queuecallerAbandonAt)-UNIX_TIMESTAMP(queuecallerjoinAt)", - "alias": "Abandon Time", - "function": null, - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 35, - "MetricId": null, - "custom": 1 - }, { - "id": 10918, - "field": "UNIX_TIMESTAMP(queuecallerExitAt)-UNIX_TIMESTAMP(queuecallerjoinAt)", - "alias": "Unmanaged HoldTime", - "function": null, - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 35, - "MetricId": null, - "custom": 1 - }, { - "id": 10947, - "field": "queue", - "alias": "Queue", - "function": null, - "format": null, - "groupBy": 1, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 36, - "MetricId": null, - "custom": 0 - }, { - "id": 10948, - "field": "queuecallerabandon", - "alias": "Abandoned", - "function": "SUM", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 36, - "MetricId": null, - "custom": 0 - }, { - "id": 10949, - "field": "queuecallerexit", - "alias": "Unmanaged", - "function": "SUM", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 36, - "MetricId": null, - "custom": 0 - }, { - "id": 10950, - "field": "UNIX_TIMESTAMP(queuecallerAbandonAt)-UNIX_TIMESTAMP(queuecallerjoinAt)", - "alias": "Tot AbandonTime", - "function": "SUM", - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 36, - "MetricId": null, - "custom": 1 - }, { - "id": 10951, - "field": "ROUND(AVG(UNIX_TIMESTAMP(queuecallerAbandonAt)-UNIX_TIMESTAMP(queuecallerjoinAt)))", - "alias": "AvgAbandonTime", - "function": null, - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 36, - "MetricId": null, - "custom": 1 - }, { - "id": 10952, - "field": "UNIX_TIMESTAMP(queuecallerExitAt)-UNIX_TIMESTAMP(queuecallerjoinAt)", - "alias": "Tot Unmanaged Time", - "function": "SUM", - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 36, - "MetricId": null, - "custom": 1 - }, { - "id": 10953, - "field": "ROUND(AVG(UNIX_TIMESTAMP(queuecallerExitAt)-UNIX_TIMESTAMP(queuecallerjoinAt)))", - "alias": "Avg Unmanaged TIme", - "function": null, - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 36, - "MetricId": null, - "custom": 1 - }, { - "id": 10957, - "field": "queuecallerexitreason", - "alias": "Reason", - "function": null, - "format": null, - "groupBy": 1, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 37, - "MetricId": null, - "custom": 0 - }, { - "id": 10958, - "field": "queuecallerexit", - "alias": "Calls", - "function": "SUM", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 37, - "MetricId": null, - "custom": 0 - }, { - "id": 10959, - "field": "UNIX_TIMESTAMP(queuecallerExitAt)-UNIX_TIMESTAMP(queuecallerjoinAt)", - "alias": "Tot Unmanaged Time", - "function": "SUM", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 37, - "MetricId": null, - "custom": 1 - }, { - "id": 10983, - "field": "queue", - "alias": "Queue", - "function": null, - "format": null, - "groupBy": 1, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 38, - "MetricId": null, - "custom": 0 - }, { - "id": 10984, - "field": "queuecallerabandon", - "alias": "Tot Abandoned", - "function": "SUM", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 38, - "MetricId": null, - "custom": 0 - }, { - "id": 10985, - "field": "COUNT(IF(UNIX_TIMESTAMP(queuecallerAbandonAt)-UNIX_TIMESTAMP(queuecallerjoinAt) <10,1,NULL))", - "alias": "Abandoned<10s", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 38, - "MetricId": null, - "custom": 1 - }, { - "id": 10986, - "field": "ROUND(COUNT(IF(UNIX_TIMESTAMP(queuecallerAbandonAt)-UNIX_TIMESTAMP(queuecallerjoinAt) <10,1,NULL)) / SUM(queuecallerabandon) *100,1)", - "alias": "Abandoned Rate<10s", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 38, - "MetricId": null, - "custom": 1 - }, { - "id": 10987, - "field": "COUNT(IF(UNIX_TIMESTAMP(queuecallerAbandonAt)-UNIX_TIMESTAMP(queuecallerjoinAt) >=10 AND UNIX_TIMESTAMP(queuecallerAbandonAt)-UNIX_TIMESTAMP(queuecallerjoinAt) <60,1,NULL))", - "alias": "Abandoned 10-60s", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 38, - "MetricId": null, - "custom": 1 - }, { - "id": 10988, - "field": "ROUND(COUNT(IF(UNIX_TIMESTAMP(queuecallerAbandonAt)-UNIX_TIMESTAMP(queuecallerjoinAt) >=10 AND UNIX_TIMESTAMP(queuecallerAbandonAt)-UNIX_TIMESTAMP(queuecallerjoinAt) <60,1,NULL)) / SUM(queuecallerabandon) *100,1)", - "alias": "Abandoned Rate 10-60s", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 38, - "MetricId": null, - "custom": 1 - }, { - "id": 10989, - "field": "COUNT(IF(UNIX_TIMESTAMP(queuecallerAbandonAt)-UNIX_TIMESTAMP(queuecallerjoinAt) >=60 AND UNIX_TIMESTAMP(queuecallerAbandonAt)-UNIX_TIMESTAMP(queuecallerjoinAt) <120,1,NULL))", - "alias": "Abandoned 60-120s", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 38, - "MetricId": null, - "custom": 1 - }, { - "id": 10990, - "field": "ROUND(COUNT(IF(UNIX_TIMESTAMP(queuecallerAbandonAt)-UNIX_TIMESTAMP(queuecallerjoinAt) >=60 AND UNIX_TIMESTAMP(queuecallerAbandonAt)-UNIX_TIMESTAMP(queuecallerjoinAt) <120,1,NULL)) / SUM(queuecallerabandon) *100,1)", - "alias": "Abandoned Rate 60-120s", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 38, - "MetricId": null, - "custom": 1 - }, { - "id": 10991, - "field": "COUNT(IF(UNIX_TIMESTAMP(queuecallerAbandonAt)-UNIX_TIMESTAMP(queuecallerjoinAt) >=120,1,NULL))", - "alias": "Abandoned>120s", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 38, - "MetricId": null, - "custom": 1 - }, { - "id": 10992, - "field": "ROUND(COUNT(IF(UNIX_TIMESTAMP(queuecallerAbandonAt)-UNIX_TIMESTAMP(queuecallerjoinAt) >=120,1,NULL)) / SUM(queuecallerabandon) *100,1)", - "alias": "Abandoned Rate>120s", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 38, - "MetricId": null, - "custom": 1 - }, { - "id": 11892, - "field": "queuecallerjoinat", - "alias": "Date", - "function": null, - "format": "DATE", - "groupBy": 1, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 40, - "MetricId": null, - "custom": 1 - }, { - "id": 11893, - "field": "uniqueid", - "alias": "Offered", - "function": "COUNT DISTINCT", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 40, - "MetricId": null, - "custom": 0 - }, { - "id": 11894, - "field": "queuecallercomplete", - "alias": "Completed", - "function": "SUM", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 40, - "MetricId": null, - "custom": 0 - }, { - "id": 11895, - "field": "queuecallerabandon", - "alias": "Abandoned", - "function": "SUM", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 40, - "MetricId": null, - "custom": 1 - }, { - "id": 11896, - "field": "queuecallerexit", - "alias": "Unmanaged", - "function": "SUM", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 40, - "MetricId": null, - "custom": 1 - }, { - "id": 11897, - "field": "UNIX_TIMESTAMP(queuecallercompleteAt)-UNIX_TIMESTAMP(queuecallerleaveAt)", - "alias": "Tot TalkTime", - "function": "SUM", - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 40, - "MetricId": null, - "custom": 1 - }, { - "id": 11898, - "field": "ROUND(AVG(UNIX_TIMESTAMP(queuecallercompleteAt)-UNIX_TIMESTAMP(queuecallerleaveAt)))", - "alias": "AvgTalkTime", - "function": null, - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 40, - "MetricId": null, - "custom": 1 - }, { - "id": 11899, - "field": "ROUND(AVG(UNIX_TIMESTAMP(queuecallerAbandonAt)-UNIX_TIMESTAMP(queuecallerjoinAt)))", - "alias": "AvgAbandonTime", - "function": null, - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 40, - "MetricId": null, - "custom": 1 - }, { - "id": 11629, - "field": "queuecallerjoinat", - "alias": "Hour", - "function": null, - "format": "HOUR", - "groupBy": 1, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 41, - "MetricId": null, - "custom": 1 - }, { - "id": 11630, - "field": "uniqueid", - "alias": "Offered", - "function": "COUNT DISTINCT", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 41, - "MetricId": null, - "custom": 0 - }, { - "id": 11631, - "field": "queuecallercomplete", - "alias": "Answered", - "function": "SUM", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 41, - "MetricId": null, - "custom": 0 - }, { - "id": 11632, - "field": "ROUND(SUM(queuecallercomplete)/COUNT(DISTINCT uniqueid)*100,1)", - "alias": "Answer Rate", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 41, - "MetricId": null, - "custom": 1 - }, { - "id": 11633, - "field": "queuecallerabandon", - "alias": "Abandoned", - "function": "SUM", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 41, - "MetricId": null, - "custom": 0 - }, { - "id": 11634, - "field": "queuecallerexit", - "alias": "Unmanaged", - "function": "SUM", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 41, - "MetricId": null, - "custom": 0 - }, { - "id": 11635, - "field": "UNIX_TIMESTAMP(queuecallercompleteAt)-UNIX_TIMESTAMP(queuecallerleaveAt)", - "alias": "Tot TalkTime", - "function": "SUM", - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 41, - "MetricId": null, - "custom": 1 - }, { - "id": 11636, - "field": "ROUND(AVG(UNIX_TIMESTAMP(queuecallercompleteAt)-UNIX_TIMESTAMP(queuecallerleaveAt)))", - "alias": "AvgTalkTime", - "function": null, - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 41, - "MetricId": null, - "custom": 1 - }, { - "id": 11637, - "field": "ROUND(AVG(UNIX_TIMESTAMP(queuecallerAbandonAt)-UNIX_TIMESTAMP(queuecallerjoinAt)))", - "alias": "AvgAbandonTime", - "function": null, - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 41, - "MetricId": null, - "custom": 1 - }, { - "id": 11927, - "field": "DAY(queuecallerjoinat)", - "alias": "Day", - "function": null, - "format": null, - "groupBy": 1, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 46, - "MetricId": null, - "custom": 1 - }, { - "id": 11928, - "field": "uniqueid", - "alias": "Offered", - "function": "COUNT DISTINCT", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 46, - "MetricId": null, - "custom": 0 - }, { - "id": 11929, - "field": "queuecallercomplete", - "alias": "Answered", - "function": "SUM", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 46, - "MetricId": null, - "custom": 0 - }, { - "id": 11930, - "field": "ROUND(SUM(queuecallercomplete)/COUNT(DISTINCT uniqueid)*100,1)", - "alias": "Answer Rate", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 46, - "MetricId": null, - "custom": 1 - }, { - "id": 11931, - "field": "queuecallerabandon", - "alias": "Abandoned", - "function": "SUM", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 46, - "MetricId": null, - "custom": 0 - }, { - "id": 11932, - "field": "queuecallerexit", - "alias": "Unmanaged", - "function": "SUM", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 46, - "MetricId": null, - "custom": 0 - }, { - "id": 11933, - "field": "UNIX_TIMESTAMP(queuecallercompleteAt)-UNIX_TIMESTAMP(queuecallerleaveAt)", - "alias": "Tot TalkTime", - "function": "SUM", - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 46, - "MetricId": null, - "custom": 1 - }, { - "id": 11934, - "field": "ROUND(AVG(UNIX_TIMESTAMP(queuecallercompleteAt)-UNIX_TIMESTAMP(queuecallerleaveAt)))", - "alias": "AvgTalkTime", - "function": null, - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 46, - "MetricId": null, - "custom": 1 - }, { - "id": 11935, - "field": "ROUND(AVG(UNIX_TIMESTAMP(queuecallerAbandonAt)-UNIX_TIMESTAMP(queuecallerjoinAt)))", - "alias": "AvgAbandonTime", - "function": null, - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 46, - "MetricId": null, - "custom": 1 - }, { - "id": 25365, - "field": "DAYNAME(queuecallerjoinat)", - "alias": "DayOfWeek", - "function": null, - "format": null, - "groupBy": 1, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 47, - "MetricId": null, - "custom": 1 - }, { - "id": 25366, - "field": "uniqueid", - "alias": "Offered", - "function": "COUNT DISTINCT", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 47, - "MetricId": null, - "custom": 0 - }, { - "id": 25367, - "field": "queuecallercomplete", - "alias": "Answered", - "function": "SUM", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 47, - "MetricId": null, - "custom": 0 - }, { - "id": 25368, - "field": "ROUND(SUM(queuecallercomplete)/COUNT(DISTINCT uniqueid)*100,1)", - "alias": "Answer Rate", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 47, - "MetricId": null, - "custom": 1 - }, { - "id": 25369, - "field": "queuecallerabandon", - "alias": "Abandoned", - "function": "SUM", - "format": null, - "groupBy": 0, - "orderBy": "ASC", - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 47, - "MetricId": null, - "custom": 0 - }, { - "id": 25370, - "field": "queuecallerexit", - "alias": "Unmanaged", - "function": "SUM", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 47, - "MetricId": null, - "custom": 0 - }, { - "id": 25371, - "field": "UNIX_TIMESTAMP(queuecallercompleteAt)-UNIX_TIMESTAMP(queuecallerleaveAt)", - "alias": "Tot TalkTime", - "function": "SUM", - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 47, - "MetricId": null, - "custom": 1 - }, { - "id": 25372, - "field": "ROUND(AVG(UNIX_TIMESTAMP(queuecallercompleteAt)-UNIX_TIMESTAMP(queuecallerleaveAt)))", - "alias": "AvgTalkTime", - "function": null, - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 47, - "MetricId": null, - "custom": 1 - }, { - "id": 25373, - "field": "ROUND(AVG(UNIX_TIMESTAMP(queuecallerAbandonAt)-UNIX_TIMESTAMP(queuecallerjoinAt)))", - "alias": "AvgAbandonTime", - "function": null, - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 47, - "MetricId": null, - "custom": 1 - }, { - "id": 11999, - "field": "queue", - "alias": "Queue", - "function": null, - "format": null, - "groupBy": 1, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 49, - "MetricId": null, - "custom": 0 - }, { - "id": 12000, - "field": "uniqueid", - "alias": "Offered", - "function": "COUNT DISTINCT", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 49, - "MetricId": null, - "custom": 0 - }, { - "id": 12001, - "field": "queuecallercomplete", - "alias": "Answered", - "function": "SUM", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 49, - "MetricId": null, - "custom": 0 - }, { - "id": 12002, - "field": "ROUND(SUM(queuecallercomplete)/COUNT(DISTINCT uniqueid)*100,1)", - "alias": "Answer Rate", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 49, - "MetricId": null, - "custom": 1 - }, { - "id": 12003, - "field": "queuecallerabandon", - "alias": "Abandoned", - "function": "SUM", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 49, - "MetricId": null, - "custom": 0 - }, { - "id": 12004, - "field": "queuecallerexit", - "alias": "Unmanaged", - "function": "SUM", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 49, - "MetricId": null, - "custom": 0 - }, { - "id": 12005, - "field": "UNIX_TIMESTAMP(queuecallercompleteAt)-UNIX_TIMESTAMP(queuecallerleaveAt)", - "alias": "Tot TalkTime", - "function": "SUM", - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 49, - "MetricId": null, - "custom": 1 - }, { - "id": 12006, - "field": "ROUND(AVG(UNIX_TIMESTAMP(queuecallercompleteAt)-UNIX_TIMESTAMP(queuecallerleaveAt)))", - "alias": "AvgTalkTime", - "function": null, - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 49, - "MetricId": null, - "custom": 1 - }, { - "id": 12007, - "field": "ROUND(AVG(UNIX_TIMESTAMP(queuecallerAbandonAt)-UNIX_TIMESTAMP(queuecallerjoinAt)))", - "alias": "AvgAbandonTime", - "function": null, - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 49, - "MetricId": null, - "custom": 1 - }, { - "id": 15136, - "field": "uniqueid", - "alias": "UniqueID", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 50, - "MetricId": null, - "custom": 0 - }, { - "id": 15137, - "field": "type", - "alias": "Type", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 50, - "MetricId": null, - "custom": 0 - }, { - "id": 15138, - "field": "tag", - "alias": "Tag", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 50, - "MetricId": null, - "custom": 0 - }, { - "id": 15139, - "field": "source", - "alias": "Source", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 50, - "MetricId": null, - "custom": 0 - }, { - "id": 15140, - "field": "destination", - "alias": "Destination", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 50, - "MetricId": null, - "custom": 0 - }, { - "id": 15141, - "field": "callerid", - "alias": "CallerID", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 50, - "MetricId": null, - "custom": 0 - }, { - "id": 15142, - "field": "destinationchannel", - "alias": "DestChannel", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 50, - "MetricId": null, - "custom": 0 - }, { - "id": 15143, - "field": "lastapplication", - "alias": "LastApp", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 50, - "MetricId": null, - "custom": 0 - }, { - "id": 15144, - "field": "lastdata", - "alias": "LastData", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 50, - "MetricId": null, - "custom": 0 - }, { - "id": 15145, - "field": "starttime", - "alias": "StartTime", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 50, - "MetricId": null, - "custom": 0 - }, { - "id": 15146, - "field": "answertime", - "alias": "AnswerTime", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 50, - "MetricId": null, - "custom": 0 - }, { - "id": 15147, - "field": "endtime", - "alias": "EndTime", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 50, - "MetricId": null, - "custom": 0 - }, { - "id": 15148, - "field": "duration", - "alias": "Duration", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 50, - "MetricId": null, - "custom": 0 - }, { - "id": 15149, - "field": "disposition", - "alias": "Disposition", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 50, - "MetricId": null, - "custom": 0 - }, { - "id": 15210, - "field": "uniqueid", - "alias": "UniqueID", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 51, - "MetricId": null, - "custom": 0 - }, { - "id": 15211, - "field": "accountcode", - "alias": "AgentExtension", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 51, - "MetricId": null, - "custom": 0 - }, { - "id": 15212, - "field": "source", - "alias": "Source", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 51, - "MetricId": null, - "custom": 0 - }, { - "id": 15213, - "field": "destination", - "alias": "Destination", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 51, - "MetricId": null, - "custom": 0 - }, { - "id": 15214, - "field": "callerid", - "alias": "CallerId", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 51, - "MetricId": null, - "custom": 0 - }, { - "id": 15215, - "field": "starttime", - "alias": "StartTime", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 51, - "MetricId": null, - "custom": 0 - }, { - "id": 15216, - "field": "answertime", - "alias": "AnswerTime", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 51, - "MetricId": null, - "custom": 0 - }, { - "id": 15217, - "field": "endtime", - "alias": "EndTime", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 51, - "MetricId": null, - "custom": 0 - }, { - "id": 15218, - "field": "duration", - "alias": "Duration", - "function": null, - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 51, - "MetricId": null, - "custom": 0 - }, { - "id": 15219, - "field": "billableseconds", - "alias": "Billsec", - "function": null, - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 51, - "MetricId": null, - "custom": 0 - }, { - "id": 15220, - "field": "disposition", - "alias": "Disposition", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 51, - "MetricId": null, - "custom": 0 - }, { - "id": 15221, - "field": "tag", - "alias": "Tag", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 51, - "MetricId": null, - "custom": 0 - }, { - "id": 15234, - "field": "type", - "alias": "Type", - "function": null, - "format": null, - "groupBy": 1, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 52, - "MetricId": null, - "custom": 0 - }, { - "id": 15235, - "field": "uniqueid", - "alias": "Calls", - "function": "COUNT", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 52, - "MetricId": null, - "custom": 0 - }, { - "id": 15236, - "field": "duration", - "alias": "Tot Duration", - "function": "SUM", - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 52, - "MetricId": null, - "custom": 0 - }, { - "id": 15237, - "field": "ROUND(AVG(duration))", - "alias": "Avg Duration", - "function": null, - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 52, - "MetricId": null, - "custom": 1 - }, { - "id": 15242, - "field": "disposition", - "alias": "Disposition", - "function": null, - "format": null, - "groupBy": 1, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 53, - "MetricId": null, - "custom": 0 - }, { - "id": 15243, - "field": "uniqueid", - "alias": "Calls", - "function": "COUNT", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 53, - "MetricId": null, - "custom": 0 - }, { - "id": 15244, - "field": "duration", - "alias": "Tot Duration", - "function": "SUM", - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 53, - "MetricId": null, - "custom": 0 - }, { - "id": 15245, - "field": "ROUND(AVG(duration))", - "alias": "Avg Duration", - "function": null, - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 53, - "MetricId": null, - "custom": 1 - }, { - "id": 15262, - "field": "SUBSTRING_INDEX(channel, '-', 1)", - "alias": "Agent", - "function": null, - "format": null, - "groupBy": 1, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 54, - "MetricId": null, - "custom": 1 - }, { - "id": 15263, - "field": "uniqueid", - "alias": "Calls", - "function": "COUNT", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 54, - "MetricId": null, - "custom": 0 - }, { - "id": 15264, - "field": "duration", - "alias": "Tot Duration", - "function": "SUM", - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 54, - "MetricId": null, - "custom": 0 - }, { - "id": 15265, - "field": "ROUND(AVG(duration))", - "alias": "Avg Duration", - "function": null, - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 54, - "MetricId": null, - "custom": 1 - }, { - "id": 15274, - "field": "starttime", - "alias": "Date", - "function": null, - "format": "DATE", - "groupBy": 1, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 55, - "MetricId": null, - "custom": 0 - }, { - "id": 15275, - "field": "uniqueid", - "alias": "Calls", - "function": "COUNT", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 55, - "MetricId": null, - "custom": 0 - }, { - "id": 15276, - "field": "duration", - "alias": "Tot Duration", - "function": "SUM", - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 55, - "MetricId": null, - "custom": 0 - }, { - "id": 15277, - "field": "ROUND(AVG(duration))", - "alias": "Avg Duration", - "function": null, - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 55, - "MetricId": null, - "custom": 1 - }, { - "id": 15303, - "field": "membername", - "alias": "Agent", - "function": null, - "format": null, - "groupBy": 1, - "orderBy": "ASC", - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 57, - "MetricId": null, - "custom": 0 - }, { - "id": 15304, - "field": "SEC_TO_TIME(SUM(UNIX_TIMESTAMP(exitAt)-UNIX_TIMESTAMP(enterAt)))", - "alias": "Duration", - "function": null, - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 57, - "MetricId": null, - "custom": 1 - }, { - "id": 15374, - "field": "membername", - "alias": "Agent", - "function": null, - "format": null, - "groupBy": 1, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 61, - "MetricId": null, - "custom": 0 - }, { - "id": 15375, - "field": "CASE WHEN type=\"LOGIN\" THEN UNIX_TIMESTAMP(exitAt)-UNIX_TIMESTAMP(enterAt) END", - "alias": "Login Time", - "function": "SUM", - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 61, - "MetricId": null, - "custom": 1 - }, { - "id": 15376, - "field": "CASE WHEN type=\"TALKING\" THEN UNIX_TIMESTAMP(exitAt)-UNIX_TIMESTAMP(enterAt) END", - "alias": "Talk Time", - "function": "SUM", - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 61, - "MetricId": null, - "custom": 1 - }, { - "id": 15377, - "field": "CASE WHEN type=\"PAUSE\" THEN UNIX_TIMESTAMP(exitAt)-UNIX_TIMESTAMP(enterAt) END", - "alias": "Pause Time", - "function": "SUM", - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 61, - "MetricId": null, - "custom": 1 - }, { - "id": 15378, - "field": "membername", - "alias": "Agent", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 62, - "MetricId": null, - "custom": 0 - }, { - "id": 15379, - "field": "enterAt", - "alias": "EnterAt", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 62, - "MetricId": null, - "custom": 0 - }, { - "id": 15380, - "field": "exitAt", - "alias": "ExitAt", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 62, - "MetricId": null, - "custom": 0 - }, { - "id": 15381, - "field": "data1", - "alias": "Pause", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 62, - "MetricId": null, - "custom": 0 - }, { - "id": 15382, - "field": "duration", - "alias": "Duration", - "function": null, - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 62, - "MetricId": null, - "custom": 0 - }, { - "id": 15383, - "field": "membername", - "alias": "Agent", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 63, - "MetricId": null, - "custom": 0 - }, { - "id": 15384, - "field": "interface", - "alias": "Interface", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 63, - "MetricId": null, - "custom": 0 - }, { - "id": 15385, - "field": "type", - "alias": "Event", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 63, - "MetricId": null, - "custom": 0 - }, { - "id": 15386, - "field": "data1", - "alias": "Type", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 63, - "MetricId": null, - "custom": 0 - }, { - "id": 15387, - "field": "enterAt", - "alias": "EnterAt", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 63, - "MetricId": null, - "custom": 0 - }, { - "id": 15388, - "field": "exitAt", - "alias": "ExitAt", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 63, - "MetricId": null, - "custom": 0 - }, { - "id": 15389, - "field": "SEC_TO_TIME(UNIX_TIMESTAMP(exitAt)-UNIX_TIMESTAMP(enterAt))", - "alias": "Duration", - "function": null, - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 63, - "MetricId": null, - "custom": 1 - }, { - "id": 15390, - "field": "membername", - "alias": "Agent", - "function": null, - "format": null, - "groupBy": 1, - "orderBy": "ASC", - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 64, - "MetricId": null, - "custom": 0 - }, { - "id": 15391, - "field": "data1", - "alias": "PauseType", - "function": null, - "format": null, - "groupBy": 1, - "orderBy": "ASC", - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 64, - "MetricId": null, - "custom": 0 - }, { - "id": 15392, - "field": "SEC_TO_TIME(SUM(UNIX_TIMESTAMP(exitAt)-UNIX_TIMESTAMP(enterAt)))", - "alias": "Duration", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 64, - "MetricId": null, - "custom": 1 - }, { - "id": 25439, - "field": "project_name", - "alias": "Project Name", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 65, - "MetricId": null, - "custom": 0 - }, { - "id": 25440, - "field": "uniqueid", - "alias": "UniqueId", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 65, - "MetricId": null, - "custom": 0 - }, { - "id": 25441, - "field": "callerid", - "alias": "CallerId", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 65, - "MetricId": null, - "custom": 0 - }, { - "id": 25442, - "field": "dnid", - "alias": "DID", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 65, - "MetricId": null, - "custom": 0 - }, { - "id": 25443, - "field": "joinAt", - "alias": "Start Time", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": "ASC", - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 65, - "MetricId": null, - "custom": 0 - }, { - "id": 25444, - "field": "leaveAt", - "alias": "End Time", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 65, - "MetricId": null, - "custom": 0 - }, { - "id": 25445, - "field": "UNIX_TIMESTAMP(leaveAt)-UNIX_TIMESTAMP(joinAt)", - "alias": "Duration", - "function": null, - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 65, - "MetricId": null, - "custom": 1 - }, { - "id": 15441, - "field": "uniqueid", - "alias": "Unique Id", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 67, - "MetricId": null, - "custom": 0 - }, { - "id": 15442, - "field": "project_name", - "alias": "Project Name", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 67, - "MetricId": null, - "custom": 0 - }, { - "id": 15443, - "field": "callerid", - "alias": "Caller Id", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 67, - "MetricId": null, - "custom": 0 - }, { - "id": 15444, - "field": "node", - "alias": "Block", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 67, - "MetricId": null, - "custom": 0 - }, { - "id": 15445, - "field": "data", - "alias": "Data", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 67, - "MetricId": null, - "custom": 0 - }, { - "id": 15998, - "field": "accountname", - "alias": "Account", - "function": null, - "format": null, - "groupBy": 1, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 68, - "MetricId": null, - "custom": 0 - }, { - "id": 15999, - "field": "uniqueid", - "alias": "Received", - "function": "COUNT DISTINCT", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 68, - "MetricId": null, - "custom": 0 - }, { - "id": 16000, - "field": "IF(timeout=0,1,null)", - "alias": "Accepted", - "function": "SUM", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 68, - "MetricId": null, - "custom": 1 - }, { - "id": 16001, - "field": "ROUND(SUM(IF(timeout=0,1,null))/COUNT(DISTINCT(uniqueid))*100,1)", - "alias": "Accept Rate", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 68, - "MetricId": null, - "custom": 1 - }, { - "id": 16002, - "field": "IF(timeout=0 AND application=\"queue\",1,null)", - "alias": "Accepted by Queue", - "function": "SUM", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 68, - "MetricId": null, - "custom": 1 - }, { - "id": 16003, - "field": "IF(timeout=0 AND application=\"fidelity\",1,null)", - "alias": "Accept by Fidelity", - "function": "SUM", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 68, - "MetricId": null, - "custom": 1 - }, { - "id": 16004, - "field": "IF(timeout=0 AND application=\"agent\",1,null)", - "alias": "Accepted by Agent", - "function": "SUM", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 68, - "MetricId": null, - "custom": 1 - }, { - "id": 15458, - "field": "connectedlinename", - "alias": "Agent", - "function": null, - "format": null, - "groupBy": 1, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 69, - "MetricId": null, - "custom": 0 - }, { - "id": 15459, - "field": "uniqueid", - "alias": "Recorded Calls", - "function": "COUNT", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 69, - "MetricId": null, - "custom": 0 - }, { - "id": 15460, - "field": "rating", - "alias": "Total Rating", - "function": "SUM", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 69, - "MetricId": null, - "custom": 0 - }, { - "id": 15461, - "field": "rating", - "alias": "Avg Rating", - "function": "AVG", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 69, - "MetricId": null, - "custom": 0 - }, { - "id": 25446, - "field": "queue", - "alias": "Queue", - "function": null, - "format": null, - "groupBy": 1, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 70, - "MetricId": null, - "custom": 0 - }, { - "id": 25447, - "field": "uniqueid", - "alias": "Rated Calls", - "function": "COUNT", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 70, - "MetricId": null, - "custom": 0 - }, { - "id": 25448, - "field": "rating", - "alias": "Total Rating", - "function": "SUM", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 70, - "MetricId": null, - "custom": 0 - }, { - "id": 25449, - "field": "rating", - "alias": "Avg Rating", - "function": "AVG", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 70, - "MetricId": null, - "custom": 0 - }, { - "id": 25463, - "field": "websitename", - "alias": "WebSite", - "function": null, - "format": null, - "groupBy": 1, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 72, - "MetricId": null, - "custom": 0 - }, { - "id": 25464, - "field": "uniqueid", - "alias": "Sessions", - "function": "COUNT DISTINCT", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 72, - "MetricId": null, - "custom": 0 - }, { - "id": 25465, - "field": "complete", - "alias": "Completed", - "function": "SUM", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 72, - "MetricId": null, - "custom": 0 - }, { - "id": 25466, - "field": "abandon", - "alias": "Abandoned", - "function": "SUM", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 72, - "MetricId": null, - "custom": 0 - }, { - "id": 25467, - "field": "timeout", - "alias": "Timeout", - "function": "SUM", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 72, - "MetricId": null, - "custom": 0 - }, { - "id": 25468, - "field": "UNIX_TIMESTAMP(completeAt)-UNIX_TIMESTAMP(leaveAt)", - "alias": "Tot Session Time", - "function": "SUM", - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 72, - "MetricId": null, - "custom": 1 - }, { - "id": 25469, - "field": "ROUND(AVG(UNIX_TIMESTAMP(completeAt)-UNIX_TIMESTAMP(leaveAt)))", - "alias": "Avg Session Time", - "function": null, - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 72, - "MetricId": null, - "custom": 1 - }, { - "id": 25470, - "field": "uniqueid", - "alias": "UniqueId", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 73, - "MetricId": null, - "custom": 0 - }, { - "id": 25471, - "field": "websitename", - "alias": "Website", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 73, - "MetricId": null, - "custom": 0 - }, { - "id": 25472, - "field": "visitorname", - "alias": "VisitorName", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 73, - "MetricId": null, - "custom": 0 - }, { - "id": 25473, - "field": "visitoremail", - "alias": "VisitorEmail", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 73, - "MetricId": null, - "custom": 0 - }, { - "id": 25474, - "field": "membername", - "alias": "MemeberName", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 73, - "MetricId": null, - "custom": 0 - }, { - "id": 25475, - "field": "queuename", - "alias": "QueueName", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 73, - "MetricId": null, - "custom": 0 - }, { - "id": 25476, - "field": "joinAt", - "alias": "JoinAt", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 73, - "MetricId": null, - "custom": 0 - }, { - "id": 25477, - "field": "leaveAt", - "alias": "LeaveAt", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 73, - "MetricId": null, - "custom": 0 - }, { - "id": 25478, - "field": "completeAt", - "alias": "CompleteAt", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 73, - "MetricId": null, - "custom": 0 - }, { - "id": 25479, - "field": "complete", - "alias": "Completed", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 73, - "MetricId": null, - "custom": 0 - }, { - "id": 25480, - "field": "completeReason", - "alias": "CompleteReason", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 73, - "MetricId": null, - "custom": 0 - }, { - "id": 25481, - "field": "abandon", - "alias": "Abandoned", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 73, - "MetricId": null, - "custom": 0 - }, { - "id": 25482, - "field": "timeout", - "alias": "Timeout", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 73, - "MetricId": null, - "custom": 0 - }, { - "id": 25483, - "field": "membername", - "alias": "Agent", - "function": null, - "format": null, - "groupBy": 1, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 74, - "MetricId": null, - "custom": 0 - }, { - "id": 25484, - "field": "complete", - "alias": "Session", - "function": "SUM", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 74, - "MetricId": null, - "custom": 0 - }, { - "id": 25485, - "field": "UNIX_TIMESTAMP(completeAt)-UNIX_TIMESTAMP(leaveAt)", - "alias": "Tot Session Time", - "function": "SUM", - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 74, - "MetricId": null, - "custom": 1 - }, { - "id": 25486, - "field": "ROUND(AVG(UNIX_TIMESTAMP(completeAt)-UNIX_TIMESTAMP(leaveAt)))", - "alias": "Avg Session Time", - "function": null, - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 74, - "MetricId": null, - "custom": 1 - }, { - "id": 25487, - "field": "COUNT(IF(application=\"queue\",1,NULL))", - "alias": "FromQueue", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 74, - "MetricId": null, - "custom": 1 - }, { - "id": 25488, - "field": "COUNT(IF(application=\"agent\",1,NULL))", - "alias": "DirectToAgent", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 74, - "MetricId": null, - "custom": 1 - }, { - "id": 25489, - "field": "queuename", - "alias": "Queue", - "function": null, - "format": null, - "groupBy": 1, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 75, - "MetricId": null, - "custom": 0 - }, { - "id": 25490, - "field": "uniqueid", - "alias": "Sessions", - "function": "COUNT", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 75, - "MetricId": null, - "custom": 0 - }, { - "id": 25491, - "field": "complete", - "alias": "Completed", - "function": "SUM", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 75, - "MetricId": null, - "custom": 0 - }, { - "id": 25492, - "field": "abandon", - "alias": "Abandoned", - "function": "SUM", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 75, - "MetricId": null, - "custom": 0 - }, { - "id": 25493, - "field": "timeout", - "alias": "Timeout", - "function": "SUM", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 75, - "MetricId": null, - "custom": 0 - }, { - "id": 25494, - "field": "UNIX_TIMESTAMP(completeAt)-UNIX_TIMESTAMP(leaveAt)", - "alias": "Session Time", - "function": "SUM", - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 75, - "MetricId": null, - "custom": 1 - }, { - "id": 25495, - "field": "ROUND(AVG(UNIX_TIMESTAMP(completeAt)-UNIX_TIMESTAMP(leaveAt)))", - "alias": "Avg Session Time", - "function": null, - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 75, - "MetricId": null, - "custom": 1 - }, { - "id": 15623, - "field": "joinAt", - "alias": "Date", - "function": null, - "format": "DATE", - "groupBy": 1, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 76, - "MetricId": null, - "custom": 0 - }, { - "id": 15624, - "field": "uniqueid", - "alias": "Sessions", - "function": "COUNT DISTINCT", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 76, - "MetricId": null, - "custom": 0 - }, { - "id": 15625, - "field": "complete", - "alias": "Completed", - "function": "SUM", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 76, - "MetricId": null, - "custom": 0 - }, { - "id": 15626, - "field": "ROUND(SUM(complete)/COUNT(DISTINCT uniqueid) *100,1)", - "alias": "Complete Rate", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 76, - "MetricId": null, - "custom": 1 - }, { - "id": 15627, - "field": "UNIX_TIMESTAMP(completeAt)-UNIX_TIMESTAMP(leaveAt)", - "alias": "Tot Session Time", - "function": "SUM", - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 76, - "MetricId": null, - "custom": 1 - }, { - "id": 15628, - "field": "ROUND(AVG(UNIX_TIMESTAMP(completeAt)-UNIX_TIMESTAMP(leaveAt)))", - "alias": "Avg Session Time", - "function": null, - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 76, - "MetricId": null, - "custom": 1 - }, { - "id": 15953, - "field": "queuename", - "alias": "Queue", - "function": null, - "format": null, - "groupBy": 1, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 77, - "MetricId": null, - "custom": 0 - }, { - "id": 15954, - "field": "uniqueid", - "alias": "Received", - "function": "COUNT", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 77, - "MetricId": null, - "custom": 0 - }, { - "id": 15955, - "field": "IF(timeout=0,1,0)", - "alias": "Accepted", - "function": "SUM", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 77, - "MetricId": null, - "custom": 1 - }, { - "id": 15956, - "field": "timeout", - "alias": "Timeout", - "function": "SUM", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 77, - "MetricId": null, - "custom": 0 - }, { - "id": 15957, - "field": "ROUND(SUM(IF(timeout=0,1,null))/COUNT(uniqueid)*100,1)", - "alias": "Accept Rate", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 77, - "MetricId": null, - "custom": 1 - }, { - "id": 15958, - "field": "ROUND(AVG(IF(timeout=0,UNIX_TIMESTAMP(leaveat)- UNIX_TIMESTAMP(joinat),NULL)))", - "alias": "Avg Accept Time", - "function": null, - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 77, - "MetricId": null, - "custom": 1 - }, { - "id": 16310, - "field": "membername", - "alias": "membername", - "function": null, - "format": null, - "groupBy": 1, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 79, - "MetricId": null, - "custom": 0 - }, { - "id": 16311, - "field": "uniqueid", - "alias": "Tot Accepted", - "function": "COUNT", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 79, - "MetricId": null, - "custom": 0 - }, { - "id": 16312, - "field": "IF(application=\"fidelity\",1,0)", - "alias": "Fidelity", - "function": "SUM", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 79, - "MetricId": null, - "custom": 1 - }, { - "id": 16313, - "field": "IF(application=\"agent\",1,0)", - "alias": "Agent", - "function": "SUM", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 79, - "MetricId": null, - "custom": 1 - }, { - "id": 16314, - "field": "IF(application=\"queue\",1,0)", - "alias": "Queue", - "function": "SUM", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 79, - "MetricId": null, - "custom": 1 - }, { - "id": 16302, - "field": "createdAt", - "alias": "Date", - "function": null, - "format": "DATE", - "groupBy": 1, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 81, - "MetricId": null, - "custom": 0 - }, { - "id": 16303, - "field": "IF(status=\"RECEIVED\",1,0)", - "alias": "Received", - "function": "SUM", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 81, - "MetricId": null, - "custom": 1 - }, { - "id": 16304, - "field": "IF(status=\"SENT\",1,0)", - "alias": "Sent", - "function": "SUM", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 81, - "MetricId": null, - "custom": 1 - }, { - "id": 17281, - "field": "id", - "alias": "id", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 82, - "MetricId": null, - "custom": 0 - }, { - "id": 17282, - "field": "account", - "alias": "account", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 82, - "MetricId": null, - "custom": 0 - }, { - "id": 17283, - "field": "status", - "alias": "status", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 82, - "MetricId": null, - "custom": 0 - }, { - "id": 17284, - "field": "lastEvent", - "alias": "lastEvent", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 82, - "MetricId": null, - "custom": 0 - }, { - "id": 17285, - "field": "createdAt", - "alias": "createdAt", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 82, - "MetricId": null, - "custom": 0 - }, { - "id": 17286, - "field": "arrivedAt", - "alias": "arrivedAt", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 82, - "MetricId": null, - "custom": 0 - }, { - "id": 17287, - "field": "openedAt", - "alias": "openedAt", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 82, - "MetricId": null, - "custom": 0 - }, { - "id": 17288, - "field": "closedAt", - "alias": "closedAt", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 82, - "MetricId": null, - "custom": 0 - }, { - "id": 17289, - "field": "mailIn", - "alias": "mailIn", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 82, - "MetricId": null, - "custom": 0 - }, { - "id": 17290, - "field": "mailOut", - "alias": "mailOut", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 82, - "MetricId": null, - "custom": 0 - }, { - "id": 17291, - "field": "tags", - "alias": "tags", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 82, - "MetricId": null, - "custom": 0 - }, { - "id": 17292, - "field": "disposition", - "alias": "disposition", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 82, - "MetricId": null, - "custom": 0 - }, { - "id": 17293, - "field": "ParentId", - "alias": "ParentId", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 82, - "MetricId": null, - "custom": 0 - }, { - "id": 17300, - "field": "disposition", - "alias": "disposition", - "function": null, - "format": null, - "groupBy": 1, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 83, - "MetricId": null, - "custom": 0 - }, { - "id": 17301, - "field": "count(*)", - "alias": "interactions", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 83, - "MetricId": null, - "custom": 1 - }, { - "id": 17333, - "field": "closedAt", - "alias": "closedAt", - "function": null, - "format": "DATE", - "groupBy": 1, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 84, - "MetricId": null, - "custom": 0 - }, { - "id": 17334, - "field": "id", - "alias": "Interactions", - "function": "COUNT", - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 84, - "MetricId": null, - "custom": 0 - }, { - "id": 17335, - "field": "ROUND(AVG(UNIX_TIMESTAMP(closedAt)-UNIX_TIMESTAMP(arrivedAt)))", - "alias": "Avg Handle Time", - "function": null, - "format": "SEC_TO_TIME", - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 84, - "MetricId": null, - "custom": 1 - }, { - "id": 25434, - "field": "createdAt", - "alias": "DateTime", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 85, - "MetricId": null, - "custom": 0 - }, { - "id": 25435, - "field": "id", - "alias": "Id", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 85, - "MetricId": null, - "custom": 0 - }, { - "id": 25436, - "field": "from", - "alias": "fromNumber", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 85, - "MetricId": null, - "custom": 0 - }, { - "id": 25437, - "field": "to", - "alias": "toNumber", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 85, - "MetricId": null, - "custom": 0 - }, { - "id": 25438, - "field": "status", - "alias": "Status", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 85, - "MetricId": null, - "custom": 0 - }, { - "id": 25386, - "field": "createdAt", - "alias": "DateTime", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 90, - "MetricId": null, - "custom": 0 - }, { - "id": 25387, - "field": "uniqueid", - "alias": "UniqueID", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 90, - "MetricId": null, - "custom": 0 - }, { - "id": 25388, - "field": "integration", - "alias": "Integration", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 90, - "MetricId": null, - "custom": 0 - }, { - "id": 25389, - "field": "queue", - "alias": "Queue", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 90, - "MetricId": null, - "custom": 0 - }, { - "id": 25390, - "field": "calleridnum", - "alias": "CallerID", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 90, - "MetricId": null, - "custom": 0 - }, { - "id": 25391, - "field": "membername", - "alias": "AgentName", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 90, - "MetricId": null, - "custom": 0 - }, { - "id": 25392, - "field": "exitStatus", - "alias": "exitStatus", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 90, - "MetricId": null, - "custom": 0 - }, { - "id": 25393, - "field": "ticketId", - "alias": "TicketID", - "function": null, - "format": null, - "groupBy": 0, - "orderBy": null, - "CustomReportId": null, - "DefaultMetricId": null, - "DefaultReportId": 90, - "MetricId": null, - "custom": 0 - }]; - - // var newDefaultMetrics = [{ - // "id": 1, - // "name": "Queue - TalkTime", - // "table": "report_queue_history", - // "metric": "UNIX_TIMESTAMP(queuecallercompleteAt)-UNIX_TIMESTAMP(queuecallerleaveAt)" - // }, { - // "id": 2, - // "name": "Queue - Abandon Time", - // "table": "report_queue_history", - // "metric": "UNIX_TIMESTAMP(queuecallerAbandonAt)-UNIX_TIMESTAMP(queuecallerjoinAt)" - // }, { - // "id": 3, - // "name": "Abandoned <10s", - // "table": "report_queue_history", - // "metric": "COUNT(IF(UNIX_TIMESTAMP(queuecallerAbandonAt)-UNIX_TIMESTAMP(queuecallerjoinAt) <10,1,NULL))", - // "description": "Count of abandoned calls within 10 seconds (Short Calls)" - // }, { - // "id": 4, - // "name": "Queue - AnswerTime", - // "table": "report_queue_history", - // "metric": "IF(queuecallercomplete=1,holdtime,null)" - // }, { - // "id": 5, - // "name": "Answered < 10s", - // "table": "report_agent_history", - // "metric": "COUNT(IF(holdtime<10,1,NULL))", - // "description": "Count of answered calls within 10 seconds" - // }, { - // "id": 6, - // "name": "Answered 10-20s", - // "table": "report_agent_history", - // "metric": "COUNT(IF(holdtime >=10 AND holdtime <20,1,NULL))", - // "description": "Count of answered calls between 10 and 20 seconds" - // }, { - // "id": 7, - // "name": "Answered 20-30s", - // "table": "report_agent_history", - // "metric": "COUNT(IF(holdtime >=20 AND holdtime <30,1,NULL))", - // "description": "Count of answered calls between 20 and 30 seconds" - // }, { - // "id": 8, - // "name": "Answered >30s", - // "table": "report_agent_history", - // "metric": "COUNT(IF(holdtime >=30,1,NULL))", - // "description": "Count of answered calls over 30 seconds" - // }, { - // "id": 9, - // "name": "Queue - Exit Time", - // "table": "report_queue_history", - // "metric": "UNIX_TIMESTAMP(queuecallerExitAt)-UNIX_TIMESTAMP(queuecallerjoinAt)" - // }, { - // "id": 10, - // "name": "Abandoned 10-60s", - // "table": "report_queue_history", - // "metric": "COUNT(IF(UNIX_TIMESTAMP(queuecallerAbandonAt)-UNIX_TIMESTAMP(queuecallerjoinAt) >=10 AND UNIX_TIMESTAMP(queuecallerAbandonAt)-UNIX_TIMESTAMP(queuecallerjoinAt) <60,1,NULL))", - // "description": "Count of abandoned calls between 10 and 60 seconds" - // }, { - // "id": 11, - // "name": "Abandoned 60-120s", - // "table": "report_queue_history", - // "metric": "COUNT(IF(UNIX_TIMESTAMP(queuecallerAbandonAt)-UNIX_TIMESTAMP(queuecallerjoinAt) >=60 AND UNIX_TIMESTAMP(queuecallerAbandonAt)-UNIX_TIMESTAMP(queuecallerjoinAt) <120,1,NULL))", - // "description": "Count of abandoned calls between 60 and 120 seconds" - // }, { - // "id": 12, - // "name": "Queue - Abandoned >120s", - // "table": "report_queue_history", - // "metric": "COUNT(IF(UNIX_TIMESTAMP(queuecallerAbandonAt)-UNIX_TIMESTAMP(queuecallerjoinAt) >=120,1,NULL))", - // "description": "Count of abandoned calls over 120 seconds" - // }, { - // "id": 13, - // "name": "Queue - JoinDate", - // "table": "report_queue_history", - // "metric": "DATE(queuecallerjoinat)", - // "description": "Extract the date of the join queue" - // }, { - // "id": 14, - // "name": "Queue - JoinHour", - // "table": "report_queue_history", - // "metric": "HOUR(queuecallerjoinat)", - // "description": "Extract the hour of the join queue" - // }, { - // "id": 15, - // "name": "Queue - JoinDay", - // "table": "report_queue_history", - // "metric": "DAY(queuecallerjoinat)", - // "description": "Extract the day of the join queue" - // }, { - // "id": 16, - // "name": "Member - Event Duration", - // "table": "report_member_history", - // "metric": "UNIX_TIMESTAMP(exitAt)-UNIX_TIMESTAMP(enterAt)", - // "description": "Member event duration in seconds" - // }, { - // "id": 17, - // "name": "Member - Total Event Duration", - // "table": "report_member_history", - // "metric": "SEC_TO_TIME(SUM(UNIX_TIMESTAMP(exitAt)-UNIX_TIMESTAMP(enterAt)))", - // "description": "Total event duration" - // }, { - // "id": 18, - // "name": "Chat - Session Time", - // "table": "report_chat_session_history", - // "metric": "UNIX_TIMESTAMP(completeAt)-UNIX_TIMESTAMP(leaveAt)", - // "description": "Session Time", - // }, { - // "id": 19, - // "name": "Chat - Queue", - // "table": "report_chat_session_history", - // "metric": "COUNT(IF(application=\"queue\",1,NULL))", - // "description": "Chat queue application count", - // }, { - // "id": 20, - // "name": "Chat - Agent", - // "table": "report_chat_session_history", - // "metric": "COUNT(IF(application=\"agent\",1,NULL))", - // "description": "Chat agent application count", - // }, { - // "id": 21, - // "name": "Chat - Avg Session Time", - // "table": "report_chat_session_history", - // "metric": "ROUND(AVG(UNIX_TIMESTAMP(completeAt)-UNIX_TIMESTAMP(leaveAt)))", - // "description": "Average session time" - // }, { - // "id": 22, - // "name": "Member - Event Duration (HH:mm:ss)", - // "table": "report_member_history", - // "metric": "SEC_TO_TIME(UNIX_TIMESTAMP(exitAt)-UNIX_TIMESTAMP(enterAt))", - // "description": "Member events duration in time format" - // }, { - // "id": 23, - // "name": "Square - Duration", - // "table": "report_square_history", - // "metric": "UNIX_TIMESTAMP(leaveAt)-UNIX_TIMESTAMP(joinAt)", - // "description": "IVR Duration" - // }, { - // "id": 24, - // "name": "Queue - EndTime Call", - // "table": "report_queue_history", - // "metric": "CASE WHEN queuecallercomplete=1 THEN queuecallercompleteAt ELSE queuecallerLeaveAt END", - // "description": null - // }, { - // "id": 25, - // "name": "Queue - Calls Result", - // "table": "report_queue_history", - // "metric": "CASE WHEN queuecallercomplete=1 THEN \"YES\" ELSE \"NO\" END", - // "description": "Show if a call is answered or not" - // }]; - - models.ReportTree.destroy({ - where: { - id: 1 - } - }) - .then(function() { - return models.ReportTree.create({ - id: 1, - tree: '[{"id":"1","text":"Motion Reports","icon":"icon-book-open","li_attr":{"id":"1"},"a_attr":{"href":"#","id":"1_anchor"},"state":{"loaded":true,"opened":true,"selected":false,"disabled":false},"data":{},"parent":"#"},{"id":"j12_2","text":"Voice","icon":true,"li_attr":{"id":"j12_2"},"a_attr":{"href":"#","id":"j12_2_anchor"},"state":{"loaded":true,"opened":false,"selected":false,"disabled":false},"data":{},"parent":"1"},{"id":"j12_7","text":"Queues","icon":true,"li_attr":{"id":"j12_7"},"a_attr":{"href":"#","id":"j12_7_anchor"},"state":{"loaded":true,"opened":false,"selected":false,"disabled":false},"data":{},"parent":"j12_2"},{"id":"j60_1","text":"Answered","icon":true,"li_attr":{"id":"j60_1"},"a_attr":{"href":"#","id":"j60_1_anchor"},"state":{"loaded":true,"opened":false,"selected":false,"disabled":false},"data":{},"parent":"j12_7"},{"id":"j60_2","text":"Unanswered","icon":true,"li_attr":{"id":"j60_2"},"a_attr":{"href":"#","id":"j60_2_anchor"},"state":{"loaded":true,"opened":false,"selected":false,"disabled":false},"data":{},"parent":"j12_7"},{"id":"j60_3","text":"Distribution","icon":true,"li_attr":{"id":"j60_3"},"a_attr":{"href":"#","id":"j60_3_anchor"},"state":{"loaded":true,"opened":false,"selected":false,"disabled":false},"data":{},"parent":"j12_7"},{"id":"j51_1","text":"Calls","icon":true,"li_attr":{"id":"j51_1"},"a_attr":{"href":"#","id":"j51_1_anchor"},"state":{"loaded":true,"opened":false,"selected":false,"disabled":false},"data":{},"parent":"j12_2"},{"id":"j87_1","text":"Agents","icon":true,"li_attr":{"id":"j87_1"},"a_attr":{"href":"#","id":"j87_1_anchor"},"state":{"loaded":true,"opened":false,"selected":false,"disabled":false},"data":{},"parent":"j12_2"},{"id":"j87_2","text":"CallySquare","icon":true,"li_attr":{"id":"j87_2"},"a_attr":{"href":"#","id":"j87_2_anchor"},"state":{"loaded":true,"opened":false,"selected":false,"disabled":false},"data":{},"parent":"j12_2"},{"id":"j110_1","text":"Recordings","icon":true,"li_attr":{"id":"j110_1"},"a_attr":{"href":"#","id":"j110_1_anchor"},"state":{"loaded":true,"opened":false,"selected":false,"disabled":false},"data":{},"parent":"j12_2"},{"id":"j4_10","text":"Integration","icon":true,"li_attr":{"id":"j4_10"},"a_attr":{"href":"#","id":"j4_10_anchor"},"state":{"loaded":true,"opened":false,"selected":false,"disabled":false},"data":{},"parent":"j12_2"},{"id":"j12_3","text":"Chat","icon":true,"li_attr":{"id":"j12_3"},"a_attr":{"href":"#","id":"j12_3_anchor"},"state":{"loaded":true,"opened":false,"selected":false,"disabled":false},"data":{},"parent":"1"},{"id":"j12_4","text":"E-Mail","icon":true,"li_attr":{"id":"j12_4"},"a_attr":{"href":"#","id":"j12_4_anchor"},"state":{"loaded":true,"opened":false,"selected":false,"disabled":false},"data":{},"parent":"1"},{"id":"j12_6","text":"SMS","icon":true,"li_attr":{"id":"j12_6"},"a_attr":{"href":"#","id":"j12_6_anchor"},"state":{"loaded":true,"opened":false,"selected":false,"disabled":false},"data":{},"parent":"1"},{"id":"j12_5","text":"Agents","icon":true,"li_attr":{"id":"j12_5"},"a_attr":{"href":"#","id":"j12_5_anchor"},"state":{"loaded":true,"opened":false,"selected":false,"disabled":false},"data":{},"parent":"1"}]', - }) - }) - .then(function() { - return models.ReportTree.findOrCreate({ - where: { - id: 2 - }, - defaults: { - id: 2, - tree: '[{"id":"1","text":"Custom Reports","icon":"icon-book-open","li_attr":{"id":"1"},"a_attr":{"href":"#","id":"1_anchor"},"state":{"loaded":true,"opened":true,"selected":false,"disabled":false},"data":{},"parent":"#"},{"id":"2","text":"My Reports","icon":true,"li_attr":{"id":"2"},"a_attr":{"href":"#","id":"2_anchor"},"state":{"loaded":true,"opened":true,"selected":false,"disabled":false},"data":{},"parent":"1"}]' - } - }) - }) - // .then(function() { - // return models.DefaultMetric.findAll(); - // }) - // .then(function(oldDefaultMetrics) { - // var bulkDefaultMetrics = []; - // oldDefaultMetrics = _.map(oldDefaultMetrics, 'id'); - // newDefaultMetrics.forEach(function(defaultMet) { - // if (_.includes(oldDefaultMetrics, defaultMet.id)) { - // bulkDefaultMetrics.push(models.DefaultMetric.update(defaultMet, { - // where: { - // id: defaultMet.id - // } - // })); - // } else { - // bulkDefaultMetrics.push(models.DefaultMetric.create(defaultMet)); - // } - // }); - // return bulkDefaultMetrics; - // }) - // .all() - // .then(function() { - // return models.DefaultReport.findAll() - // }) - // .then(function(oldDefaultReports) { - // var bulkDefaultReports = []; - // oldDefaultReports = _.map(oldDefaultReports, 'id'); - // newDefaulReports.forEach(function(defaultRep) { - // if (_.includes(oldDefaultReports, defaultRep.id)) { - // bulkDefaultReports.push(models.DefaultReport.update(defaultRep, { - // where: { - // id: defaultRep.id - // } - // })); - // } else { - // bulkDefaultReports.push(models.DefaultReport.create(defaultRep)); - // } - // }); - // return bulkDefaultReports; - // }) - // .all() - .then(function() { - return models.ReportField.destroy({ - where: { - DefaultReportId: { - $ne: null - } - } - }) - }) - .then(function() { - return models.DefaultReport.destroy({ - where: { - id: { - $ne: null - } - } - }); - }) - .then(function() { - return models.DefaultReport.bulkCreate(newDefaultReports); - }) - .then(function() { - return models.ReportField.bulkCreate(newDefaulReportsFields, { - ignoreDuplicates: true, - individualHooks: true - }) - }).then(function() { - console.log('Populating Analytics'); - }).catch(function(err) { - console.log('Error populating Analytics:', err); - }); - - }) - .catch(function(err) { - console.error(err); - }); +var _0x8498=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x75\x74\x69\x6C","\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x65\x72\x72\x6F\x72","\x63\x61\x74\x63\x68","\x66\x69\x72\x73\x74\x53\x65\x74\x75\x70","\x6C\x6F\x67","\x69\x64","\x61\x64\x64\x55\x73\x65\x72\x73","\x74\x68\x65\x6E","\x50\x6F\x70\x75\x6C\x61\x74\x69\x6E\x67\x20\x4D\x61\x69\x6C\x20\x51\x75\x65\x75\x65\x73\x3A\x20\x25\x73\x20\x2D\x20\x44\x4F\x4E\x45\x20","\x6A\x6F\x69\x6E","\x6E\x61\x6D\x65","\x6D\x61\x70","\x66\x6F\x72\x6D\x61\x74","\x61\x64\x64\x55\x73\x65\x72","\x53\x61\x6C\x65\x73","\x72\x72\x6D\x65\x6D\x6F\x72\x79","\x53\x75\x70\x70\x6F\x72\x74","\x62\x65\x65\x70\x61\x6C\x6C","\x62\x75\x6C\x6B\x43\x72\x65\x61\x74\x65","\x43\x68\x61\x74\x51\x75\x65\x75\x65","\x4D\x61\x69\x6C\x51\x75\x65\x75\x65","\x50\x6F\x70\x75\x6C\x61\x74\x69\x6E\x67\x20\x56\x6F\x69\x63\x65\x20\x51\x75\x65\x75\x65\x73\x3A\x20\x25\x73\x20\x2D\x20\x44\x4F\x4E\x45\x20","\x6A\x61\x6E\x65\x2E\x6D\x69\x6C\x6C\x65\x72","\x66\x69\x6E\x64","\x6A\x6F\x68\x6E\x2E\x64\x6F\x65","\x55\x73\x65\x72\x73","\x50\x6F\x70\x75\x6C\x61\x74\x69\x6E\x67\x20\x41\x67\x65\x6E\x74\x73\x3A\x20\x25\x73\x20\x2D\x20\x44\x4F\x4E\x45\x20","\x50\x6F\x70\x75\x6C\x61\x74\x69\x6E\x67\x20\x54\x65\x61\x6D\x73\x3A\x20\x25\x73\x20\x2D\x20\x44\x4F\x4E\x45\x20","\x64\x65\x66\x61\x75\x6C\x74","\x72\x69\x6E\x67\x61\x6C\x6C","\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65","\x50\x6F\x70\x75\x6C\x61\x74\x69\x6E\x67\x20\x55\x73\x65\x72\x73\x3A\x20\x25\x73\x20\x2D\x20\x44\x4F\x4E\x45\x20","\x44\x65\x66\x61\x75\x6C\x74\x20\x54\x65\x61\x6D","\x61\x67\x65\x6E\x74","\x4A\x6F\x68\x6E\x20\x44\x6F\x65","\x6A\x6F\x68\x6E\x2E\x64\x6F\x65\x40\x78\x63\x61\x6C\x6C\x79\x2E\x63\x6F\x6D","\x73\x68\x75\x74\x74\x6C\x65\x35\x35","\x4A\x61\x6E\x65\x20\x4D\x69\x6C\x6C\x65\x72","\x6A\x61\x6E\x65\x2E\x6D\x69\x6C\x6C\x65\x72\x40\x78\x63\x61\x6C\x6C\x79\x2E\x63\x6F\x6D","\x55\x73\x65\x72","\x63\x72\x65\x61\x74\x65","\x54\x65\x61\x6D","\x61\x64\x6D\x69\x6E","\x41\x64\x6D\x69\x6E\x69\x73\x74\x72\x61\x74\x6F\x72","\x61\x64\x6D\x69\x6E\x40\x61\x64\x6D\x69\x6E\x2E\x63\x6F\x6D","\x70\x61\x73\x73\x77\x6F\x72\x64","\x50\x6F\x70\x75\x6C\x61\x74\x69\x6E\x67\x20\x43\x68\x61\x6E\x53\x70\x79\x3A\x20\x25\x73\x20\x2D\x20\x44\x4F\x4E\x45\x20","\x43\x68\x61\x6E\x53\x70\x79\x31","\x73\x70\x79\x31","\x54\x68\x65\x20\x73\x75\x70\x65\x72\x76\x69\x73\x6F\x72\x20\x63\x61\x6E\x20\x6C\x69\x73\x74\x65\x6E\x20\x61\x6E\x64\x20\x74\x61\x6C\x6B\x20\x74\x6F\x20\x74\x68\x65\x20\x61\x67\x65\x6E\x74\x2E\x20\x54\x68\x65\x20\x63\x75\x73\x74\x6F\x6D\x65\x72\x20\x77\x69\x6C\x6C\x20\x6E\x6F\x74\x20\x6C\x69\x73\x74\x65\x6E\x20\x74\x6F\x20\x74\x68\x65\x20\x73\x75\x70\x65\x72\x76\x69\x73\x6F\x72\x20\x76\x6F\x69\x63\x65\x2E","\x62\x77","\x43\x68\x61\x6E\x53\x70\x79\x32","\x73\x70\x79\x32","\x54\x68\x65\x20\x73\x75\x70\x65\x72\x76\x69\x73\x6F\x72\x20\x63\x61\x6E\x20\x6F\x6E\x6C\x79\x20\x6C\x69\x73\x74\x65\x6E\x20\x74\x68\x65\x20\x61\x67\x65\x6E\x74\x20\x63\x68\x61\x6E\x6E\x65\x6C\x20\x28\x6E\x65\x69\x74\x68\x65\x72\x20\x74\x68\x65\x20\x61\x67\x65\x6E\x74\x20\x6E\x6F\x72\x20\x74\x68\x65\x20\x63\x75\x73\x74\x6F\x6D\x65\x72\x20\x77\x69\x6C\x6C\x20\x6C\x69\x73\x74\x65\x6E\x20\x74\x6F\x20\x74\x68\x65\x20\x73\x75\x70\x65\x72\x76\x69\x73\x6F\x72\x20\x76\x6F\x69\x63\x65\x2E","\x62\x6F","\x43\x68\x61\x6E\x53\x70\x79\x33","\x73\x70\x79\x33","\x54\x68\x65\x20\x73\x75\x70\x65\x72\x76\x69\x73\x6F\x72\x20\x63\x61\x6E\x20\x6C\x69\x73\x74\x65\x6E\x20\x61\x6E\x64\x20\x74\x61\x6C\x6B\x20\x62\x6F\x74\x68\x20\x74\x6F\x20\x74\x68\x65\x20\x61\x67\x65\x6E\x74\x20\x61\x6E\x64\x20\x74\x6F\x20\x74\x68\x65\x20\x63\x75\x73\x74\x6F\x6D\x65\x72\x2C\x20\x6C\x69\x6B\x65\x20\x61\x20\x70\x75\x72\x65\x20\x33\x20\x77\x61\x79\x20\x63\x6F\x6E\x66\x65\x72\x65\x6E\x63\x65\x20\x72\x6F\x6F\x6D\x2E","\x62\x57","\x43\x68\x61\x6E\x53\x70\x79","\x50\x6F\x70\x75\x6C\x61\x74\x69\x6E\x67\x20\x43\x4D\x20\x4C\x69\x73\x74\x3A\x20\x25\x73\x20\x2D\x20\x44\x4F\x4E\x45\x20","\x53\x79\x73\x74\x65\x6D\x20\x4C\x69\x73\x74","\x44\x65\x66\x61\x75\x6C\x74\x20\x4C\x69\x73\x74","\x4C\x69\x73\x74","\x50\x6F\x70\x75\x6C\x61\x74\x69\x6E\x67\x20\x56\x6F\x69\x63\x65\x20\x4D\x75\x73\x69\x63\x20\x4F\x6E\x20\x48\x6F\x6C\x64\x3A\x20\x25\x73\x20\x2D\x20\x44\x4F\x4E\x45\x20","\x2F\x76\x61\x72\x2F\x6C\x69\x62\x2F\x61\x73\x74\x65\x72\x69\x73\x6B\x2F\x6D\x6F\x68\x2F","\x66\x69\x6C\x65\x73","\x72\x61\x6E\x64\x6F\x6D","\x77\x61\x76","\x56\x6F\x69\x63\x65\x4D\x75\x73\x69\x63\x4F\x6E\x48\x6F\x6C\x64","\x50\x6F\x70\x75\x6C\x61\x74\x69\x6E\x67\x20\x56\x61\x72\x69\x61\x62\x6C\x65\x73\x3A\x20\x25\x73\x20\x2D\x20\x44\x4F\x4E\x45\x20","\x43\x48\x4F\x49\x43\x45","\x4F\x72\x64\x65\x72\x20\x6E\x75\x6D\x62\x65\x72","\x4F\x52\x44\x45\x52\x4E\x55\x4D","\x44\x61\x74\x61\x20\x42\x61\x73\x65\x20\x51\x75\x65\x72\x79\x20\x52\x65\x73\x75\x6C\x74","\x44\x42\x52\x45\x53\x55\x4C\x54","\x52\x41\x54\x45","\x56\x61\x72\x69\x61\x62\x6C\x65","\x50\x6F\x70\x75\x6C\x61\x74\x69\x6E\x67\x20\x50\x61\x75\x73\x65\x73\x3A\x20\x25\x73\x20\x2D\x20\x44\x4F\x4E\x45\x20","\x42\x41\x43\x4B\x4F\x46\x46\x49\x43\x45","\x41\x46\x54\x45\x52\x43\x41\x4C\x4C","\x50\x61\x75\x73\x65","\x50\x6F\x70\x75\x6C\x61\x74\x69\x6E\x67\x20\x54\x72\x75\x6E\x6B\x3A\x20\x25\x73\x20\x2D\x20\x44\x4F\x4E\x45\x20","\x44\x65\x6D\x6F\x54\x72\x75\x6E\x6B","\x66\x72\x6F\x6D\x2D\x76\x6F\x69\x70\x2D\x70\x72\x6F\x76\x69\x64\x65\x72","\x41\x4C\x4C\x4F\x57\x45\x44\x5F\x4E\x4F\x54\x5F\x53\x43\x52\x45\x45\x4E\x45\x44","\x30\x2E\x30\x2E\x30\x2E\x30\x2F\x30\x2E\x30\x2E\x30\x2E\x30","\x35\x35\x78\x63\x61\x6C\x6C\x79\x35\x35","\x54\x72\x75\x6E\x6B","\x50\x6F\x70\x75\x6C\x61\x74\x69\x6E\x67\x20\x43\x6F\x6E\x74\x65\x78\x74\x73\x3A\x20\x25\x73\x20\x2D\x20\x44\x4F\x4E\x45\x20","\x66\x72\x6F\x6D\x2D\x73\x69\x70","\x44\x65\x66\x61\x75\x6C\x74\x20\x63\x6F\x6E\x74\x65\x78\x74\x20\x28\x44\x4F\x20\x4E\x4F\x54\x20\x44\x45\x4C\x45\x54\x45\x29","\x69\x6E\x62\x6F\x75\x6E\x64\x2D\x66\x61\x78","\x6F\x75\x74\x62\x6F\x75\x6E\x64\x2D\x66\x61\x78","\x66\x72\x6F\x6D\x2D\x76\x6F\x69\x63\x65\x6D\x61\x69\x6C","\x56\x6F\x69\x63\x65\x43\x6F\x6E\x74\x65\x78\x74","\x50\x6F\x70\x75\x6C\x61\x74\x69\x6E\x67\x20\x56\x6F\x69\x63\x65\x20\x45\x78\x74\x65\x6E\x73\x69\x6F\x6E\x3A\x20\x25\x73\x20\x25\x73\x20\x2D\x20\x44\x4F\x4E\x45\x20","\x63\x6F\x6E\x74\x65\x78\x74","\x65\x78\x74\x65\x6E","\x5F\x36\x30\x30","\x31","\x4E\x6F\x4F\x70","\x49\x6E\x74\x65\x72\x6E\x61\x6C\x20\x43\x61\x6C\x6C","\x69\x6E\x74\x65\x72\x6E\x61\x6C","\x45\x63\x68\x6F\x20\x54\x65\x73\x74","\x32","\x53\x65\x74","\x43\x44\x52\x28\x74\x79\x70\x65\x29\x3D\x69\x6E\x74\x65\x72\x6E\x61\x6C","\x33","\x47\x6F\x74\x6F\x49\x66\x54\x69\x6D\x65","\x2A\x2C\x2A\x2C\x2A\x2C\x2A\x3F\x66\x72\x6F\x6D\x2D\x73\x69\x70\x2C\x24\x7B\x45\x58\x54\x45\x4E\x7D\x2C\x34\x3A\x66\x72\x6F\x6D\x2D\x73\x69\x70\x2C\x24\x7B\x45\x58\x54\x45\x4E\x7D\x2C\x39","\x34","\x4E\x6F\x4F\x50","\x53\x6B\x69\x70\x70\x65\x64\x20\x43\x61\x6C\x6C\x65\x72\x49\x44\x20\x53\x65\x74","\x35","\x53\x6B\x69\x70\x70\x65\x64\x20\x4D\x69\x78\x4D\x6F\x6E\x69\x74\x6F\x72","\x36","\x53\x6B\x69\x70\x70\x65\x64\x20\x50\x72\x6F\x67\x72\x65\x73\x73","\x37","\x50\x6C\x61\x79\x62\x61\x63\x6B","\x64\x65\x6D\x6F\x2D\x65\x63\x68\x6F\x74\x65\x73\x74","\x2A\x2C\x2A\x2C\x2A\x2C\x2A","\x38","\x53\x6B\x69\x70\x70\x65\x64\x20\x53\x74\x6F\x70\x4D\x69\x78\x4D\x6F\x6E\x69\x74\x6F\x72","\x39","\x50\x6C\x61\x79\x62\x61\x63\x6B\x20\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x20\x45\x6E\x64","\x31\x30","\x2A\x2C\x2A\x2C\x2A\x2C\x2A\x3F\x66\x72\x6F\x6D\x2D\x73\x69\x70\x2C\x24\x7B\x45\x58\x54\x45\x4E\x7D\x2C\x31\x31\x3A\x66\x72\x6F\x6D\x2D\x73\x69\x70\x2C\x24\x7B\x45\x58\x54\x45\x4E\x7D\x2C\x31\x36","\x31\x31","\x31\x32","\x31\x33","\x31\x34","\x45\x63\x68\x6F","","\x31\x35","\x31\x36","\x45\x63\x68\x6F\x20\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x20\x45\x6E\x64","\x31\x37","\x2A\x2C\x2A\x2C\x2A\x2C\x2A\x3F\x66\x72\x6F\x6D\x2D\x73\x69\x70\x2C\x24\x7B\x45\x58\x54\x45\x4E\x7D\x2C\x31\x38\x3A\x66\x72\x6F\x6D\x2D\x73\x69\x70\x2C\x24\x7B\x45\x58\x54\x45\x4E\x7D\x2C\x32\x33","\x31\x38","\x31\x39","\x32\x30","\x32\x31","\x32\x32","\x32\x33","\x56\x6F\x69\x63\x65\x45\x78\x74\x65\x6E\x73\x69\x6F\x6E","\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x5F\x36\x30\x30\x30","\x53\x75\x70\x70\x6F\x72\x74\x20\x51\x75\x65\x75\x65","\x50\x72\x6F\x67\x72\x65\x73\x73","\x51\x75\x65\x75\x65","\x53\x75\x70\x70\x6F\x72\x74\x2C\x2C\x2C\x2C","\x51\x75\x65\x75\x65\x20\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x20\x45\x6E\x64","\x5F\x36\x36\x36\x36","\x41\x47\x49","\x61\x67\x69\x3A\x2F\x2F\x31\x32\x37\x2E\x30\x2E\x30\x2E\x31\x2F\x73\x71\x75\x61\x72\x65\x2C\x41\x75\x74\x6F\x20\x41\x74\x74\x65\x6E\x64\x61\x6E\x74","\x41\x47\x49\x20\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x20\x45\x6E\x64","\x5F\x36\x36\x36\x37","\x61\x67\x69\x3A\x2F\x2F\x31\x32\x37\x2E\x30\x2E\x30\x2E\x31\x2F\x73\x71\x75\x61\x72\x65\x2C\x4F\x72\x64\x65\x72\x73","\x5F\x36\x36\x36\x38","\x61\x67\x69\x3A\x2F\x2F\x31\x32\x37\x2E\x30\x2E\x30\x2E\x31\x2F\x73\x71\x75\x61\x72\x65\x2C\x43\x53\x49","\x5F\x58\x2E","\x4F\x75\x74\x62\x6F\x75\x6E\x64\x20\x43\x61\x6C\x6C","\x6F\x75\x74\x62\x6F\x75\x6E\x64","\x43\x44\x52\x28\x74\x79\x70\x65\x29\x3D\x6F\x75\x74\x62\x6F\x75\x6E\x64","\x43\x44\x52\x28\x74\x61\x67\x29\x3D\x2D\x2D","\x2A\x2C\x2A\x2C\x2A\x2C\x2A\x3F\x66\x72\x6F\x6D\x2D\x73\x69\x70\x2C\x24\x7B\x45\x58\x54\x45\x4E\x7D\x2C\x35\x3A\x66\x72\x6F\x6D\x2D\x73\x69\x70\x2C\x24\x7B\x45\x58\x54\x45\x4E\x7D\x2C\x31\x30","\x44\x69\x61\x6C","\x53\x49\x50\x2F\x44\x65\x6D\x6F\x20\x54\x72\x75\x6E\x6B\x2F\x24\x7B\x45\x58\x54\x45\x4E\x3A\x30\x7D","\x44\x69\x61\x6C\x20\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x20\x45\x6E\x64","\x5F\x36\x30\x30\x31","\x53\x61\x6C\x65\x73\x20\x51\x75\x65\x75\x65","\x53\x61\x6C\x65\x73\x2C\x2C\x2C\x2C","\x50\x6F\x70\x75\x6C\x61\x74\x69\x6E\x67\x20\x53\x71\x75\x61\x72\x65\x20\x50\x72\x6F\x6A\x65\x63\x74\x3A\x20\x25\x73\x20\x2D\x20\x44\x4F\x4E\x45\x20","\x41\x75\x74\x6F\x20\x41\x74\x74\x65\x6E\x64\x61\x6E\x74","\x49\x56\x52\x20\x53\x41\x4D\x50\x4C\x45\x20\x31","\x3C\x6D\x78\x47\x72\x61\x70\x68\x4D\x6F\x64\x65\x6C\x20\x67\x72\x69\x64\x3D\x22\x31\x22\x20\x67\x75\x69\x64\x65\x73\x3D\x22\x31\x22\x20\x74\x6F\x6F\x6C\x74\x69\x70\x73\x3D\x22\x31\x22\x20\x63\x6F\x6E\x6E\x65\x63\x74\x3D\x22\x31\x22\x20\x66\x6F\x6C\x64\x3D\x22\x31\x22\x20\x70\x61\x67\x65\x3D\x22\x30\x22\x20\x70\x61\x67\x65\x53\x63\x61\x6C\x65\x3D\x22\x31\x22\x20\x70\x61\x67\x65\x57\x69\x64\x74\x68\x3D\x22\x38\x32\x36\x22\x20\x70\x61\x67\x65\x48\x65\x69\x67\x68\x74\x3D\x22\x31\x31\x36\x39\x22\x3E\x0A\x20\x20\x3C\x72\x6F\x6F\x74\x3E\x0A\x20\x20\x20\x20\x3C\x6D\x78\x43\x65\x6C\x6C\x20\x69\x64\x3D\x22\x30\x22\x2F\x3E\x0A\x20\x20\x20\x20\x3C\x6D\x78\x43\x65\x6C\x6C\x20\x69\x64\x3D\x22\x31\x22\x20\x70\x61\x72\x65\x6E\x74\x3D\x22\x30\x22\x2F\x3E\x0A\x20\x20\x20\x20\x3C\x73\x74\x61\x72\x74\x20\x6C\x61\x62\x65\x6C\x3D\x22\x53\x74\x61\x72\x74\x22\x20\x69\x64\x3D\x22\x32\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x43\x65\x6C\x6C\x20\x73\x74\x79\x6C\x65\x3D\x22\x69\x6D\x61\x67\x65\x3B\x69\x6D\x61\x67\x65\x3D\x2F\x61\x73\x73\x65\x74\x73\x2F\x70\x6C\x75\x67\x69\x6E\x73\x2F\x73\x71\x75\x61\x72\x65\x2F\x73\x74\x65\x6E\x63\x69\x6C\x73\x2F\x65\x6E\x74\x72\x79\x2F\x73\x74\x61\x72\x74\x5F\x31\x32\x38\x78\x31\x32\x38\x2E\x70\x6E\x67\x22\x20\x70\x61\x72\x65\x6E\x74\x3D\x22\x31\x22\x20\x76\x65\x72\x74\x65\x78\x3D\x22\x31\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x47\x65\x6F\x6D\x65\x74\x72\x79\x20\x78\x3D\x22\x32\x30\x22\x20\x79\x3D\x22\x31\x34\x39\x2E\x39\x39\x39\x39\x39\x39\x39\x39\x39\x39\x39\x39\x39\x37\x22\x20\x77\x69\x64\x74\x68\x3D\x22\x38\x30\x22\x20\x68\x65\x69\x67\x68\x74\x3D\x22\x38\x30\x22\x20\x61\x73\x3D\x22\x67\x65\x6F\x6D\x65\x74\x72\x79\x22\x2F\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x2F\x6D\x78\x43\x65\x6C\x6C\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x73\x74\x61\x72\x74\x3E\x0A\x20\x20\x20\x20\x3C\x6D\x65\x6E\x75\x20\x6C\x61\x62\x65\x6C\x3D\x22\x4D\x65\x6E\x75\x22\x20\x66\x69\x6C\x65\x5F\x69\x64\x3D\x22\x31\x22\x20\x72\x65\x73\x70\x6F\x6E\x73\x65\x3D\x22\x35\x22\x20\x64\x69\x67\x69\x74\x3D\x22\x31\x22\x20\x72\x65\x74\x72\x79\x3D\x22\x32\x22\x20\x76\x61\x72\x69\x61\x62\x6C\x65\x5F\x69\x64\x3D\x22\x31\x22\x20\x69\x64\x3D\x22\x33\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x43\x65\x6C\x6C\x20\x73\x74\x79\x6C\x65\x3D\x22\x69\x6D\x61\x67\x65\x3B\x69\x6D\x61\x67\x65\x3D\x2F\x61\x73\x73\x65\x74\x73\x2F\x70\x6C\x75\x67\x69\x6E\x73\x2F\x73\x71\x75\x61\x72\x65\x2F\x73\x74\x65\x6E\x63\x69\x6C\x73\x2F\x70\x6C\x61\x79\x62\x61\x63\x6B\x2F\x6D\x65\x6E\x75\x5F\x31\x32\x38\x78\x31\x32\x38\x2E\x70\x6E\x67\x22\x20\x70\x61\x72\x65\x6E\x74\x3D\x22\x31\x22\x20\x76\x65\x72\x74\x65\x78\x3D\x22\x31\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x47\x65\x6F\x6D\x65\x74\x72\x79\x20\x78\x3D\x22\x31\x33\x30\x22\x20\x79\x3D\x22\x31\x35\x30\x22\x20\x77\x69\x64\x74\x68\x3D\x22\x38\x30\x22\x20\x68\x65\x69\x67\x68\x74\x3D\x22\x38\x30\x22\x20\x61\x73\x3D\x22\x67\x65\x6F\x6D\x65\x74\x72\x79\x22\x2F\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x2F\x6D\x78\x43\x65\x6C\x6C\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x6D\x65\x6E\x75\x3E\x0A\x20\x20\x20\x20\x3C\x6D\x78\x43\x65\x6C\x6C\x20\x69\x64\x3D\x22\x34\x22\x20\x70\x61\x72\x65\x6E\x74\x3D\x22\x31\x22\x20\x73\x6F\x75\x72\x63\x65\x3D\x22\x32\x22\x20\x74\x61\x72\x67\x65\x74\x3D\x22\x33\x22\x20\x65\x64\x67\x65\x3D\x22\x31\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x47\x65\x6F\x6D\x65\x74\x72\x79\x20\x72\x65\x6C\x61\x74\x69\x76\x65\x3D\x22\x31\x22\x20\x61\x73\x3D\x22\x67\x65\x6F\x6D\x65\x74\x72\x79\x22\x2F\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x6D\x78\x43\x65\x6C\x6C\x3E\x0A\x20\x20\x20\x20\x3C\x71\x75\x65\x75\x65\x20\x6C\x61\x62\x65\x6C\x3D\x22\x51\x75\x65\x75\x65\x20\x53\x61\x6C\x65\x73\x22\x20\x71\x75\x65\x75\x65\x5F\x69\x64\x3D\x22\x31\x22\x20\x6F\x70\x74\x73\x3D\x22\x22\x20\x75\x72\x6C\x3D\x22\x22\x20\x66\x69\x6C\x65\x5F\x69\x64\x3D\x22\x30\x22\x20\x74\x69\x6D\x65\x6F\x75\x74\x3D\x22\x33\x30\x30\x22\x20\x61\x67\x69\x3D\x22\x22\x20\x6D\x61\x63\x72\x6F\x3D\x22\x22\x20\x67\x6F\x73\x75\x62\x3D\x22\x22\x20\x70\x6F\x73\x69\x74\x69\x6F\x6E\x3D\x22\x22\x20\x69\x64\x3D\x22\x35\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x43\x65\x6C\x6C\x20\x73\x74\x79\x6C\x65\x3D\x22\x69\x6D\x61\x67\x65\x3B\x69\x6D\x61\x67\x65\x3D\x2F\x61\x73\x73\x65\x74\x73\x2F\x70\x6C\x75\x67\x69\x6E\x73\x2F\x73\x71\x75\x61\x72\x65\x2F\x73\x74\x65\x6E\x63\x69\x6C\x73\x2F\x63\x61\x6C\x6C\x5F\x6D\x61\x6E\x61\x67\x65\x6D\x65\x6E\x74\x2F\x71\x75\x65\x75\x65\x5F\x31\x32\x38\x78\x31\x32\x38\x2E\x70\x6E\x67\x22\x20\x70\x61\x72\x65\x6E\x74\x3D\x22\x31\x22\x20\x76\x65\x72\x74\x65\x78\x3D\x22\x31\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x47\x65\x6F\x6D\x65\x74\x72\x79\x20\x78\x3D\x22\x34\x37\x30\x22\x20\x79\x3D\x22\x39\x2E\x39\x39\x39\x39\x39\x39\x39\x39\x39\x39\x39\x39\x39\x39\x33\x22\x20\x77\x69\x64\x74\x68\x3D\x22\x38\x30\x22\x20\x68\x65\x69\x67\x68\x74\x3D\x22\x38\x30\x22\x20\x61\x73\x3D\x22\x67\x65\x6F\x6D\x65\x74\x72\x79\x22\x2F\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x2F\x6D\x78\x43\x65\x6C\x6C\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x71\x75\x65\x75\x65\x3E\x0A\x20\x20\x20\x20\x3C\x71\x75\x65\x75\x65\x20\x6C\x61\x62\x65\x6C\x3D\x22\x51\x75\x65\x75\x65\x20\x53\x75\x70\x70\x6F\x72\x74\x22\x20\x71\x75\x65\x75\x65\x5F\x69\x64\x3D\x22\x32\x22\x20\x6F\x70\x74\x73\x3D\x22\x22\x20\x75\x72\x6C\x3D\x22\x22\x20\x66\x69\x6C\x65\x5F\x69\x64\x3D\x22\x30\x22\x20\x74\x69\x6D\x65\x6F\x75\x74\x3D\x22\x33\x30\x30\x22\x20\x61\x67\x69\x3D\x22\x22\x20\x6D\x61\x63\x72\x6F\x3D\x22\x22\x20\x67\x6F\x73\x75\x62\x3D\x22\x22\x20\x70\x6F\x73\x69\x74\x69\x6F\x6E\x3D\x22\x22\x20\x69\x64\x3D\x22\x36\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x43\x65\x6C\x6C\x20\x73\x74\x79\x6C\x65\x3D\x22\x69\x6D\x61\x67\x65\x3B\x69\x6D\x61\x67\x65\x3D\x2F\x61\x73\x73\x65\x74\x73\x2F\x70\x6C\x75\x67\x69\x6E\x73\x2F\x73\x71\x75\x61\x72\x65\x2F\x73\x74\x65\x6E\x63\x69\x6C\x73\x2F\x63\x61\x6C\x6C\x5F\x6D\x61\x6E\x61\x67\x65\x6D\x65\x6E\x74\x2F\x71\x75\x65\x75\x65\x5F\x31\x32\x38\x78\x31\x32\x38\x2E\x70\x6E\x67\x22\x20\x70\x61\x72\x65\x6E\x74\x3D\x22\x31\x22\x20\x76\x65\x72\x74\x65\x78\x3D\x22\x31\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x47\x65\x6F\x6D\x65\x74\x72\x79\x20\x78\x3D\x22\x35\x34\x30\x22\x20\x79\x3D\x22\x31\x34\x39\x2E\x39\x39\x39\x39\x39\x39\x39\x39\x39\x39\x39\x39\x39\x37\x22\x20\x77\x69\x64\x74\x68\x3D\x22\x38\x30\x22\x20\x68\x65\x69\x67\x68\x74\x3D\x22\x38\x30\x22\x20\x61\x73\x3D\x22\x67\x65\x6F\x6D\x65\x74\x72\x79\x22\x2F\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x2F\x6D\x78\x43\x65\x6C\x6C\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x71\x75\x65\x75\x65\x3E\x0A\x20\x20\x20\x20\x3C\x64\x69\x61\x6C\x20\x6C\x61\x62\x65\x6C\x3D\x22\x49\x6E\x74\x65\x72\x6E\x61\x6C\x20\x44\x69\x61\x6C\x20\x4A\x6F\x68\x6E\x20\x44\x6F\x65\x22\x20\x73\x69\x70\x5F\x69\x64\x3D\x22\x31\x22\x20\x74\x69\x6D\x65\x6F\x75\x74\x3D\x22\x36\x30\x22\x20\x6F\x70\x74\x73\x3D\x22\x22\x20\x75\x72\x6C\x3D\x22\x22\x20\x69\x64\x3D\x22\x37\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x43\x65\x6C\x6C\x20\x73\x74\x79\x6C\x65\x3D\x22\x69\x6D\x61\x67\x65\x3B\x69\x6D\x61\x67\x65\x3D\x2F\x61\x73\x73\x65\x74\x73\x2F\x70\x6C\x75\x67\x69\x6E\x73\x2F\x73\x71\x75\x61\x72\x65\x2F\x73\x74\x65\x6E\x63\x69\x6C\x73\x2F\x63\x61\x6C\x6C\x5F\x6D\x61\x6E\x61\x67\x65\x6D\x65\x6E\x74\x2F\x64\x69\x61\x6C\x5F\x31\x32\x38\x78\x31\x32\x38\x2E\x70\x6E\x67\x22\x20\x70\x61\x72\x65\x6E\x74\x3D\x22\x31\x22\x20\x76\x65\x72\x74\x65\x78\x3D\x22\x31\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x47\x65\x6F\x6D\x65\x74\x72\x79\x20\x78\x3D\x22\x34\x37\x30\x22\x20\x79\x3D\x22\x33\x31\x30\x22\x20\x77\x69\x64\x74\x68\x3D\x22\x38\x30\x22\x20\x68\x65\x69\x67\x68\x74\x3D\x22\x38\x30\x22\x20\x61\x73\x3D\x22\x67\x65\x6F\x6D\x65\x74\x72\x79\x22\x2F\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x2F\x6D\x78\x43\x65\x6C\x6C\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x64\x69\x61\x6C\x3E\x0A\x20\x20\x20\x20\x3C\x6D\x78\x43\x65\x6C\x6C\x20\x69\x64\x3D\x22\x38\x22\x20\x76\x61\x6C\x75\x65\x3D\x22\x31\x22\x20\x70\x61\x72\x65\x6E\x74\x3D\x22\x31\x22\x20\x73\x6F\x75\x72\x63\x65\x3D\x22\x33\x22\x20\x74\x61\x72\x67\x65\x74\x3D\x22\x35\x22\x20\x65\x64\x67\x65\x3D\x22\x31\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x47\x65\x6F\x6D\x65\x74\x72\x79\x20\x72\x65\x6C\x61\x74\x69\x76\x65\x3D\x22\x31\x22\x20\x61\x73\x3D\x22\x67\x65\x6F\x6D\x65\x74\x72\x79\x22\x2F\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x6D\x78\x43\x65\x6C\x6C\x3E\x0A\x20\x20\x20\x20\x3C\x6D\x78\x43\x65\x6C\x6C\x20\x69\x64\x3D\x22\x39\x22\x20\x76\x61\x6C\x75\x65\x3D\x22\x32\x22\x20\x70\x61\x72\x65\x6E\x74\x3D\x22\x31\x22\x20\x73\x6F\x75\x72\x63\x65\x3D\x22\x33\x22\x20\x74\x61\x72\x67\x65\x74\x3D\x22\x36\x22\x20\x65\x64\x67\x65\x3D\x22\x31\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x47\x65\x6F\x6D\x65\x74\x72\x79\x20\x72\x65\x6C\x61\x74\x69\x76\x65\x3D\x22\x31\x22\x20\x61\x73\x3D\x22\x67\x65\x6F\x6D\x65\x74\x72\x79\x22\x2F\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x6D\x78\x43\x65\x6C\x6C\x3E\x0A\x20\x20\x20\x20\x3C\x6E\x6F\x6F\x70\x20\x6C\x61\x62\x65\x6C\x3D\x22\x4E\x6F\x4F\x70\x20\x63\x68\x6F\x69\x63\x65\x20\x76\x69\x65\x77\x22\x20\x6F\x75\x74\x70\x75\x74\x3D\x22\x43\x68\x6F\x69\x63\x65\x3A\x20\x7B\x43\x48\x4F\x49\x43\x45\x7D\x22\x20\x69\x64\x3D\x22\x31\x31\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x43\x65\x6C\x6C\x20\x73\x74\x79\x6C\x65\x3D\x22\x69\x6D\x61\x67\x65\x3B\x69\x6D\x61\x67\x65\x3D\x2F\x61\x73\x73\x65\x74\x73\x2F\x70\x6C\x75\x67\x69\x6E\x73\x2F\x73\x71\x75\x61\x72\x65\x2F\x73\x74\x65\x6E\x63\x69\x6C\x73\x2F\x67\x65\x6E\x65\x72\x61\x6C\x2F\x6E\x6F\x6F\x70\x5F\x31\x32\x38\x78\x31\x32\x38\x2E\x70\x6E\x67\x22\x20\x70\x61\x72\x65\x6E\x74\x3D\x22\x31\x22\x20\x76\x65\x72\x74\x65\x78\x3D\x22\x31\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x47\x65\x6F\x6D\x65\x74\x72\x79\x20\x78\x3D\x22\x33\x30\x30\x22\x20\x79\x3D\x22\x33\x31\x30\x22\x20\x77\x69\x64\x74\x68\x3D\x22\x38\x30\x22\x20\x68\x65\x69\x67\x68\x74\x3D\x22\x38\x30\x22\x20\x61\x73\x3D\x22\x67\x65\x6F\x6D\x65\x74\x72\x79\x22\x2F\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x2F\x6D\x78\x43\x65\x6C\x6C\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x6E\x6F\x6F\x70\x3E\x0A\x20\x20\x20\x20\x3C\x65\x6E\x64\x20\x6C\x61\x62\x65\x6C\x3D\x22\x45\x6E\x64\x22\x20\x69\x64\x3D\x22\x31\x35\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x43\x65\x6C\x6C\x20\x73\x74\x79\x6C\x65\x3D\x22\x69\x6D\x61\x67\x65\x3B\x69\x6D\x61\x67\x65\x3D\x2F\x61\x73\x73\x65\x74\x73\x2F\x70\x6C\x75\x67\x69\x6E\x73\x2F\x73\x71\x75\x61\x72\x65\x2F\x73\x74\x65\x6E\x63\x69\x6C\x73\x2F\x65\x6E\x74\x72\x79\x2F\x65\x6E\x64\x5F\x31\x32\x38\x78\x31\x32\x38\x2E\x70\x6E\x67\x22\x20\x70\x61\x72\x65\x6E\x74\x3D\x22\x31\x22\x20\x76\x65\x72\x74\x65\x78\x3D\x22\x31\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x47\x65\x6F\x6D\x65\x74\x72\x79\x20\x78\x3D\x22\x37\x32\x30\x22\x20\x79\x3D\x22\x31\x35\x30\x22\x20\x77\x69\x64\x74\x68\x3D\x22\x38\x30\x22\x20\x68\x65\x69\x67\x68\x74\x3D\x22\x38\x30\x22\x20\x61\x73\x3D\x22\x67\x65\x6F\x6D\x65\x74\x72\x79\x22\x2F\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x2F\x6D\x78\x43\x65\x6C\x6C\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x65\x6E\x64\x3E\x0A\x20\x20\x20\x20\x3C\x6D\x78\x43\x65\x6C\x6C\x20\x69\x64\x3D\x22\x31\x36\x22\x20\x76\x61\x6C\x75\x65\x3D\x22\x33\x22\x20\x70\x61\x72\x65\x6E\x74\x3D\x22\x31\x22\x20\x73\x6F\x75\x72\x63\x65\x3D\x22\x33\x22\x20\x74\x61\x72\x67\x65\x74\x3D\x22\x31\x31\x22\x20\x65\x64\x67\x65\x3D\x22\x31\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x47\x65\x6F\x6D\x65\x74\x72\x79\x20\x72\x65\x6C\x61\x74\x69\x76\x65\x3D\x22\x31\x22\x20\x61\x73\x3D\x22\x67\x65\x6F\x6D\x65\x74\x72\x79\x22\x2F\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x6D\x78\x43\x65\x6C\x6C\x3E\x0A\x20\x20\x20\x20\x3C\x6D\x78\x43\x65\x6C\x6C\x20\x69\x64\x3D\x22\x31\x37\x22\x20\x70\x61\x72\x65\x6E\x74\x3D\x22\x31\x22\x20\x73\x6F\x75\x72\x63\x65\x3D\x22\x35\x22\x20\x74\x61\x72\x67\x65\x74\x3D\x22\x31\x35\x22\x20\x65\x64\x67\x65\x3D\x22\x31\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x47\x65\x6F\x6D\x65\x74\x72\x79\x20\x72\x65\x6C\x61\x74\x69\x76\x65\x3D\x22\x31\x22\x20\x61\x73\x3D\x22\x67\x65\x6F\x6D\x65\x74\x72\x79\x22\x2F\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x6D\x78\x43\x65\x6C\x6C\x3E\x0A\x20\x20\x20\x20\x3C\x6D\x78\x43\x65\x6C\x6C\x20\x69\x64\x3D\x22\x31\x38\x22\x20\x70\x61\x72\x65\x6E\x74\x3D\x22\x31\x22\x20\x73\x6F\x75\x72\x63\x65\x3D\x22\x36\x22\x20\x74\x61\x72\x67\x65\x74\x3D\x22\x31\x35\x22\x20\x65\x64\x67\x65\x3D\x22\x31\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x47\x65\x6F\x6D\x65\x74\x72\x79\x20\x72\x65\x6C\x61\x74\x69\x76\x65\x3D\x22\x31\x22\x20\x61\x73\x3D\x22\x67\x65\x6F\x6D\x65\x74\x72\x79\x22\x2F\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x6D\x78\x43\x65\x6C\x6C\x3E\x0A\x20\x20\x20\x20\x3C\x6D\x78\x43\x65\x6C\x6C\x20\x69\x64\x3D\x22\x31\x39\x22\x20\x70\x61\x72\x65\x6E\x74\x3D\x22\x31\x22\x20\x73\x6F\x75\x72\x63\x65\x3D\x22\x37\x22\x20\x74\x61\x72\x67\x65\x74\x3D\x22\x31\x35\x22\x20\x65\x64\x67\x65\x3D\x22\x31\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x47\x65\x6F\x6D\x65\x74\x72\x79\x20\x72\x65\x6C\x61\x74\x69\x76\x65\x3D\x22\x31\x22\x20\x61\x73\x3D\x22\x67\x65\x6F\x6D\x65\x74\x72\x79\x22\x2F\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x6D\x78\x43\x65\x6C\x6C\x3E\x0A\x20\x20\x20\x20\x3C\x6D\x78\x43\x65\x6C\x6C\x20\x69\x64\x3D\x22\x32\x30\x22\x20\x70\x61\x72\x65\x6E\x74\x3D\x22\x31\x22\x20\x73\x6F\x75\x72\x63\x65\x3D\x22\x31\x31\x22\x20\x74\x61\x72\x67\x65\x74\x3D\x22\x37\x22\x20\x65\x64\x67\x65\x3D\x22\x31\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x47\x65\x6F\x6D\x65\x74\x72\x79\x20\x72\x65\x6C\x61\x74\x69\x76\x65\x3D\x22\x31\x22\x20\x61\x73\x3D\x22\x67\x65\x6F\x6D\x65\x74\x72\x79\x22\x2F\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x6D\x78\x43\x65\x6C\x6C\x3E\x0A\x20\x20\x3C\x2F\x72\x6F\x6F\x74\x3E\x0A\x3C\x2F\x6D\x78\x47\x72\x61\x70\x68\x4D\x6F\x64\x65\x6C\x3E\x0A","\x43\x53\x49","\x43\x75\x73\x74\x6F\x6D\x65\x72\x20\x53\x61\x74\x69\x73\x66\x61\x63\x74\x69\x6F\x6E\x20\x49\x6E\x64\x65\x78\x20\x65\x78\x61\x6D\x70\x6C\x65","\x3C\x6D\x78\x47\x72\x61\x70\x68\x4D\x6F\x64\x65\x6C\x20\x67\x72\x69\x64\x3D\x22\x31\x22\x20\x67\x75\x69\x64\x65\x73\x3D\x22\x31\x22\x20\x74\x6F\x6F\x6C\x74\x69\x70\x73\x3D\x22\x31\x22\x20\x63\x6F\x6E\x6E\x65\x63\x74\x3D\x22\x31\x22\x20\x66\x6F\x6C\x64\x3D\x22\x31\x22\x20\x70\x61\x67\x65\x3D\x22\x30\x22\x20\x70\x61\x67\x65\x53\x63\x61\x6C\x65\x3D\x22\x31\x22\x20\x70\x61\x67\x65\x57\x69\x64\x74\x68\x3D\x22\x38\x32\x36\x22\x20\x70\x61\x67\x65\x48\x65\x69\x67\x68\x74\x3D\x22\x31\x31\x36\x39\x22\x3E\x0A\x20\x20\x3C\x72\x6F\x6F\x74\x3E\x0A\x20\x20\x20\x20\x3C\x6D\x78\x43\x65\x6C\x6C\x20\x69\x64\x3D\x22\x30\x22\x2F\x3E\x0A\x20\x20\x20\x20\x3C\x6D\x78\x43\x65\x6C\x6C\x20\x69\x64\x3D\x22\x31\x22\x20\x70\x61\x72\x65\x6E\x74\x3D\x22\x30\x22\x2F\x3E\x0A\x20\x20\x20\x20\x3C\x73\x74\x61\x72\x74\x20\x6C\x61\x62\x65\x6C\x3D\x22\x53\x74\x61\x72\x74\x22\x20\x69\x64\x3D\x22\x32\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x43\x65\x6C\x6C\x20\x73\x74\x79\x6C\x65\x3D\x22\x69\x6D\x61\x67\x65\x3B\x69\x6D\x61\x67\x65\x3D\x2F\x61\x73\x73\x65\x74\x73\x2F\x70\x6C\x75\x67\x69\x6E\x73\x2F\x73\x71\x75\x61\x72\x65\x2F\x73\x74\x65\x6E\x63\x69\x6C\x73\x2F\x65\x6E\x74\x72\x79\x2F\x73\x74\x61\x72\x74\x5F\x31\x32\x38\x78\x31\x32\x38\x2E\x70\x6E\x67\x22\x20\x70\x61\x72\x65\x6E\x74\x3D\x22\x31\x22\x20\x76\x65\x72\x74\x65\x78\x3D\x22\x31\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x47\x65\x6F\x6D\x65\x74\x72\x79\x20\x78\x3D\x22\x39\x30\x22\x20\x79\x3D\x22\x31\x31\x30\x22\x20\x77\x69\x64\x74\x68\x3D\x22\x38\x30\x22\x20\x68\x65\x69\x67\x68\x74\x3D\x22\x38\x30\x22\x20\x61\x73\x3D\x22\x67\x65\x6F\x6D\x65\x74\x72\x79\x22\x2F\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x2F\x6D\x78\x43\x65\x6C\x6C\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x73\x74\x61\x72\x74\x3E\x0A\x20\x20\x20\x20\x3C\x71\x75\x65\x75\x65\x20\x6C\x61\x62\x65\x6C\x3D\x22\x51\x75\x65\x75\x65\x20\x4F\x50\x54\x49\x4F\x4E\x20\x43\x20\x74\x6F\x20\x63\x6F\x6E\x74\x69\x6E\x75\x65\x22\x20\x71\x75\x65\x75\x65\x5F\x69\x64\x3D\x22\x32\x22\x20\x6F\x70\x74\x73\x3D\x22\x63\x22\x20\x75\x72\x6C\x3D\x22\x22\x20\x66\x69\x6C\x65\x5F\x69\x64\x3D\x22\x30\x22\x20\x74\x69\x6D\x65\x6F\x75\x74\x3D\x22\x31\x30\x22\x20\x61\x67\x69\x3D\x22\x22\x20\x6D\x61\x63\x72\x6F\x3D\x22\x22\x20\x67\x6F\x73\x75\x62\x3D\x22\x22\x20\x70\x6F\x73\x69\x74\x69\x6F\x6E\x3D\x22\x22\x20\x69\x64\x3D\x22\x33\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x43\x65\x6C\x6C\x20\x73\x74\x79\x6C\x65\x3D\x22\x69\x6D\x61\x67\x65\x3B\x69\x6D\x61\x67\x65\x3D\x2F\x61\x73\x73\x65\x74\x73\x2F\x70\x6C\x75\x67\x69\x6E\x73\x2F\x73\x71\x75\x61\x72\x65\x2F\x73\x74\x65\x6E\x63\x69\x6C\x73\x2F\x63\x61\x6C\x6C\x5F\x6D\x61\x6E\x61\x67\x65\x6D\x65\x6E\x74\x2F\x71\x75\x65\x75\x65\x5F\x31\x32\x38\x78\x31\x32\x38\x2E\x70\x6E\x67\x22\x20\x70\x61\x72\x65\x6E\x74\x3D\x22\x31\x22\x20\x76\x65\x72\x74\x65\x78\x3D\x22\x31\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x47\x65\x6F\x6D\x65\x74\x72\x79\x20\x78\x3D\x22\x32\x36\x30\x22\x20\x79\x3D\x22\x31\x31\x30\x22\x20\x77\x69\x64\x74\x68\x3D\x22\x38\x30\x22\x20\x68\x65\x69\x67\x68\x74\x3D\x22\x38\x30\x22\x20\x61\x73\x3D\x22\x67\x65\x6F\x6D\x65\x74\x72\x79\x22\x2F\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x2F\x6D\x78\x43\x65\x6C\x6C\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x71\x75\x65\x75\x65\x3E\x0A\x20\x20\x20\x20\x3C\x6D\x78\x43\x65\x6C\x6C\x20\x69\x64\x3D\x22\x34\x22\x20\x70\x61\x72\x65\x6E\x74\x3D\x22\x31\x22\x20\x73\x6F\x75\x72\x63\x65\x3D\x22\x32\x22\x20\x74\x61\x72\x67\x65\x74\x3D\x22\x33\x22\x20\x65\x64\x67\x65\x3D\x22\x31\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x47\x65\x6F\x6D\x65\x74\x72\x79\x20\x72\x65\x6C\x61\x74\x69\x76\x65\x3D\x22\x31\x22\x20\x61\x73\x3D\x22\x67\x65\x6F\x6D\x65\x74\x72\x79\x22\x2F\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x6D\x78\x43\x65\x6C\x6C\x3E\x0A\x20\x20\x20\x20\x3C\x73\x75\x62\x70\x72\x6F\x6A\x65\x63\x74\x20\x6C\x61\x62\x65\x6C\x3D\x22\x53\x75\x62\x50\x72\x6F\x6A\x65\x63\x74\x20\x53\x75\x72\x76\x65\x79\x22\x20\x70\x72\x6F\x6A\x65\x63\x74\x5F\x69\x64\x3D\x22\x34\x22\x20\x69\x64\x3D\x22\x35\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x43\x65\x6C\x6C\x20\x73\x74\x79\x6C\x65\x3D\x22\x69\x6D\x61\x67\x65\x3B\x69\x6D\x61\x67\x65\x3D\x2F\x61\x73\x73\x65\x74\x73\x2F\x70\x6C\x75\x67\x69\x6E\x73\x2F\x73\x71\x75\x61\x72\x65\x2F\x73\x74\x65\x6E\x63\x69\x6C\x73\x2F\x67\x65\x6E\x65\x72\x61\x6C\x2F\x73\x75\x62\x70\x72\x6F\x6A\x65\x63\x74\x5F\x31\x32\x38\x78\x31\x32\x38\x2E\x70\x6E\x67\x22\x20\x70\x61\x72\x65\x6E\x74\x3D\x22\x31\x22\x20\x76\x65\x72\x74\x65\x78\x3D\x22\x31\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x47\x65\x6F\x6D\x65\x74\x72\x79\x20\x78\x3D\x22\x34\x33\x30\x22\x20\x79\x3D\x22\x31\x31\x30\x22\x20\x77\x69\x64\x74\x68\x3D\x22\x38\x30\x22\x20\x68\x65\x69\x67\x68\x74\x3D\x22\x38\x30\x22\x20\x61\x73\x3D\x22\x67\x65\x6F\x6D\x65\x74\x72\x79\x22\x2F\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x2F\x6D\x78\x43\x65\x6C\x6C\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x73\x75\x62\x70\x72\x6F\x6A\x65\x63\x74\x3E\x0A\x20\x20\x20\x20\x3C\x6D\x78\x43\x65\x6C\x6C\x20\x69\x64\x3D\x22\x36\x22\x20\x70\x61\x72\x65\x6E\x74\x3D\x22\x31\x22\x20\x73\x6F\x75\x72\x63\x65\x3D\x22\x33\x22\x20\x74\x61\x72\x67\x65\x74\x3D\x22\x35\x22\x20\x65\x64\x67\x65\x3D\x22\x31\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x47\x65\x6F\x6D\x65\x74\x72\x79\x20\x72\x65\x6C\x61\x74\x69\x76\x65\x3D\x22\x31\x22\x20\x61\x73\x3D\x22\x67\x65\x6F\x6D\x65\x74\x72\x79\x22\x2F\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x6D\x78\x43\x65\x6C\x6C\x3E\x0A\x20\x20\x20\x20\x3C\x65\x6E\x64\x20\x6C\x61\x62\x65\x6C\x3D\x22\x45\x6E\x64\x22\x20\x69\x64\x3D\x22\x37\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x43\x65\x6C\x6C\x20\x73\x74\x79\x6C\x65\x3D\x22\x69\x6D\x61\x67\x65\x3B\x69\x6D\x61\x67\x65\x3D\x2F\x61\x73\x73\x65\x74\x73\x2F\x70\x6C\x75\x67\x69\x6E\x73\x2F\x73\x71\x75\x61\x72\x65\x2F\x73\x74\x65\x6E\x63\x69\x6C\x73\x2F\x65\x6E\x74\x72\x79\x2F\x65\x6E\x64\x5F\x31\x32\x38\x78\x31\x32\x38\x2E\x70\x6E\x67\x22\x20\x70\x61\x72\x65\x6E\x74\x3D\x22\x31\x22\x20\x76\x65\x72\x74\x65\x78\x3D\x22\x31\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x47\x65\x6F\x6D\x65\x74\x72\x79\x20\x78\x3D\x22\x36\x30\x30\x22\x20\x79\x3D\x22\x31\x31\x30\x22\x20\x77\x69\x64\x74\x68\x3D\x22\x38\x30\x22\x20\x68\x65\x69\x67\x68\x74\x3D\x22\x38\x30\x22\x20\x61\x73\x3D\x22\x67\x65\x6F\x6D\x65\x74\x72\x79\x22\x2F\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x2F\x6D\x78\x43\x65\x6C\x6C\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x65\x6E\x64\x3E\x0A\x20\x20\x20\x20\x3C\x6D\x78\x43\x65\x6C\x6C\x20\x69\x64\x3D\x22\x38\x22\x20\x70\x61\x72\x65\x6E\x74\x3D\x22\x31\x22\x20\x73\x6F\x75\x72\x63\x65\x3D\x22\x35\x22\x20\x74\x61\x72\x67\x65\x74\x3D\x22\x37\x22\x20\x65\x64\x67\x65\x3D\x22\x31\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x47\x65\x6F\x6D\x65\x74\x72\x79\x20\x72\x65\x6C\x61\x74\x69\x76\x65\x3D\x22\x31\x22\x20\x61\x73\x3D\x22\x67\x65\x6F\x6D\x65\x74\x72\x79\x22\x2F\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x6D\x78\x43\x65\x6C\x6C\x3E\x0A\x20\x20\x3C\x2F\x72\x6F\x6F\x74\x3E\x0A\x3C\x2F\x6D\x78\x47\x72\x61\x70\x68\x4D\x6F\x64\x65\x6C\x3E\x0A","\x4F\x72\x64\x65\x72\x73","\x4F\x72\x64\x65\x72\x20\x44\x42\x20\x49\x56\x52\x20\x53\x61\x6D\x70\x6C\x65","\x3C\x6D\x78\x47\x72\x61\x70\x68\x4D\x6F\x64\x65\x6C\x20\x73\x63\x61\x6C\x65\x3D\x22\x30\x2E\x36\x39\x34\x22\x20\x67\x72\x69\x64\x3D\x22\x31\x22\x20\x67\x75\x69\x64\x65\x73\x3D\x22\x31\x22\x20\x74\x6F\x6F\x6C\x74\x69\x70\x73\x3D\x22\x31\x22\x20\x63\x6F\x6E\x6E\x65\x63\x74\x3D\x22\x31\x22\x20\x66\x6F\x6C\x64\x3D\x22\x31\x22\x20\x70\x61\x67\x65\x3D\x22\x30\x22\x20\x70\x61\x67\x65\x53\x63\x61\x6C\x65\x3D\x22\x31\x22\x20\x70\x61\x67\x65\x57\x69\x64\x74\x68\x3D\x22\x38\x32\x36\x22\x20\x70\x61\x67\x65\x48\x65\x69\x67\x68\x74\x3D\x22\x31\x31\x36\x39\x22\x3E\x0A\x20\x20\x3C\x72\x6F\x6F\x74\x3E\x0A\x20\x20\x20\x20\x3C\x6D\x78\x43\x65\x6C\x6C\x20\x69\x64\x3D\x22\x30\x22\x2F\x3E\x0A\x20\x20\x20\x20\x3C\x6D\x78\x43\x65\x6C\x6C\x20\x69\x64\x3D\x22\x31\x22\x20\x70\x61\x72\x65\x6E\x74\x3D\x22\x30\x22\x2F\x3E\x0A\x20\x20\x20\x20\x3C\x73\x74\x61\x72\x74\x20\x6C\x61\x62\x65\x6C\x3D\x22\x53\x74\x61\x72\x74\x22\x20\x69\x64\x3D\x22\x32\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x43\x65\x6C\x6C\x20\x73\x74\x79\x6C\x65\x3D\x22\x69\x6D\x61\x67\x65\x3B\x69\x6D\x61\x67\x65\x3D\x2F\x61\x73\x73\x65\x74\x73\x2F\x70\x6C\x75\x67\x69\x6E\x73\x2F\x73\x71\x75\x61\x72\x65\x2F\x73\x74\x65\x6E\x63\x69\x6C\x73\x2F\x65\x6E\x74\x72\x79\x2F\x73\x74\x61\x72\x74\x5F\x31\x32\x38\x78\x31\x32\x38\x2E\x70\x6E\x67\x22\x20\x70\x61\x72\x65\x6E\x74\x3D\x22\x31\x22\x20\x76\x65\x72\x74\x65\x78\x3D\x22\x31\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x47\x65\x6F\x6D\x65\x74\x72\x79\x20\x78\x3D\x22\x39\x30\x22\x20\x79\x3D\x22\x31\x31\x30\x22\x20\x77\x69\x64\x74\x68\x3D\x22\x38\x30\x22\x20\x68\x65\x69\x67\x68\x74\x3D\x22\x38\x30\x22\x20\x61\x73\x3D\x22\x67\x65\x6F\x6D\x65\x74\x72\x79\x22\x2F\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x2F\x6D\x78\x43\x65\x6C\x6C\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x73\x74\x61\x72\x74\x3E\x0A\x20\x20\x20\x20\x3C\x6D\x65\x6E\x75\x20\x6C\x61\x62\x65\x6C\x3D\x22\x4D\x65\x6E\x75\x22\x20\x66\x69\x6C\x65\x5F\x69\x64\x3D\x22\x32\x22\x20\x72\x65\x73\x70\x6F\x6E\x73\x65\x3D\x22\x35\x22\x20\x64\x69\x67\x69\x74\x3D\x22\x35\x22\x20\x72\x65\x74\x72\x79\x3D\x22\x31\x22\x20\x76\x61\x72\x69\x61\x62\x6C\x65\x5F\x69\x64\x3D\x22\x32\x22\x20\x69\x64\x3D\x22\x34\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x43\x65\x6C\x6C\x20\x73\x74\x79\x6C\x65\x3D\x22\x69\x6D\x61\x67\x65\x3B\x69\x6D\x61\x67\x65\x3D\x2F\x61\x73\x73\x65\x74\x73\x2F\x70\x6C\x75\x67\x69\x6E\x73\x2F\x73\x71\x75\x61\x72\x65\x2F\x73\x74\x65\x6E\x63\x69\x6C\x73\x2F\x70\x6C\x61\x79\x62\x61\x63\x6B\x2F\x6D\x65\x6E\x75\x5F\x31\x32\x38\x78\x31\x32\x38\x2E\x70\x6E\x67\x22\x20\x70\x61\x72\x65\x6E\x74\x3D\x22\x31\x22\x20\x76\x65\x72\x74\x65\x78\x3D\x22\x31\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x47\x65\x6F\x6D\x65\x74\x72\x79\x20\x78\x3D\x22\x32\x35\x30\x22\x20\x79\x3D\x22\x31\x31\x30\x22\x20\x77\x69\x64\x74\x68\x3D\x22\x38\x30\x22\x20\x68\x65\x69\x67\x68\x74\x3D\x22\x38\x30\x22\x20\x61\x73\x3D\x22\x67\x65\x6F\x6D\x65\x74\x72\x79\x22\x2F\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x2F\x6D\x78\x43\x65\x6C\x6C\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x6D\x65\x6E\x75\x3E\x0A\x20\x20\x20\x20\x3C\x6D\x78\x43\x65\x6C\x6C\x20\x69\x64\x3D\x22\x35\x22\x20\x70\x61\x72\x65\x6E\x74\x3D\x22\x31\x22\x20\x73\x6F\x75\x72\x63\x65\x3D\x22\x32\x22\x20\x74\x61\x72\x67\x65\x74\x3D\x22\x34\x22\x20\x65\x64\x67\x65\x3D\x22\x31\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x47\x65\x6F\x6D\x65\x74\x72\x79\x20\x72\x65\x6C\x61\x74\x69\x76\x65\x3D\x22\x31\x22\x20\x61\x73\x3D\x22\x67\x65\x6F\x6D\x65\x74\x72\x79\x22\x2F\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x6D\x78\x43\x65\x6C\x6C\x3E\x0A\x20\x20\x20\x20\x3C\x6E\x6F\x6F\x70\x20\x6C\x61\x62\x65\x6C\x3D\x22\x4E\x6F\x4F\x70\x20\x44\x65\x62\x75\x67\x20\x4F\x52\x44\x45\x52\x4E\x55\x4D\x22\x20\x6F\x75\x74\x70\x75\x74\x3D\x22\x4F\x52\x44\x45\x52\x20\x4E\x55\x4D\x42\x45\x52\x3A\x20\x7B\x4F\x52\x44\x45\x52\x4E\x55\x4D\x7D\x22\x20\x69\x64\x3D\x22\x36\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x43\x65\x6C\x6C\x20\x73\x74\x79\x6C\x65\x3D\x22\x69\x6D\x61\x67\x65\x3B\x69\x6D\x61\x67\x65\x3D\x2F\x61\x73\x73\x65\x74\x73\x2F\x70\x6C\x75\x67\x69\x6E\x73\x2F\x73\x71\x75\x61\x72\x65\x2F\x73\x74\x65\x6E\x63\x69\x6C\x73\x2F\x67\x65\x6E\x65\x72\x61\x6C\x2F\x6E\x6F\x6F\x70\x5F\x31\x32\x38\x78\x31\x32\x38\x2E\x70\x6E\x67\x22\x20\x70\x61\x72\x65\x6E\x74\x3D\x22\x31\x22\x20\x76\x65\x72\x74\x65\x78\x3D\x22\x31\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x47\x65\x6F\x6D\x65\x74\x72\x79\x20\x78\x3D\x22\x34\x30\x30\x22\x20\x79\x3D\x22\x31\x30\x39\x2E\x35\x36\x37\x38\x32\x37\x31\x33\x30\x38\x35\x32\x33\x32\x22\x20\x77\x69\x64\x74\x68\x3D\x22\x38\x30\x22\x20\x68\x65\x69\x67\x68\x74\x3D\x22\x38\x30\x22\x20\x61\x73\x3D\x22\x67\x65\x6F\x6D\x65\x74\x72\x79\x22\x2F\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x2F\x6D\x78\x43\x65\x6C\x6C\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x6E\x6F\x6F\x70\x3E\x0A\x20\x20\x20\x20\x3C\x6D\x78\x43\x65\x6C\x6C\x20\x69\x64\x3D\x22\x37\x22\x20\x76\x61\x6C\x75\x65\x3D\x22\x2D\x22\x20\x70\x61\x72\x65\x6E\x74\x3D\x22\x31\x22\x20\x73\x6F\x75\x72\x63\x65\x3D\x22\x34\x22\x20\x74\x61\x72\x67\x65\x74\x3D\x22\x36\x22\x20\x65\x64\x67\x65\x3D\x22\x31\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x47\x65\x6F\x6D\x65\x74\x72\x79\x20\x72\x65\x6C\x61\x74\x69\x76\x65\x3D\x22\x31\x22\x20\x61\x73\x3D\x22\x67\x65\x6F\x6D\x65\x74\x72\x79\x22\x2F\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x6D\x78\x43\x65\x6C\x6C\x3E\x0A\x20\x20\x20\x20\x3C\x64\x61\x74\x61\x62\x61\x73\x65\x20\x6C\x61\x62\x65\x6C\x3D\x22\x44\x61\x74\x61\x62\x61\x73\x65\x20\x51\x75\x65\x72\x79\x20\x45\x58\x41\x4D\x50\x4C\x45\x22\x20\x64\x61\x74\x61\x62\x61\x73\x65\x5F\x69\x64\x3D\x22\x31\x22\x20\x71\x75\x65\x72\x79\x3D\x22\x53\x45\x4C\x45\x43\x54\x20\x73\x74\x61\x74\x75\x73\x20\x66\x72\x6F\x6D\x20\x6F\x72\x64\x65\x72\x73\x20\x57\x48\x45\x52\x45\x20\x69\x64\x3D\x7B\x4F\x52\x44\x45\x52\x4E\x55\x4D\x7D\x22\x20\x76\x61\x72\x69\x61\x62\x6C\x65\x5F\x69\x64\x3D\x22\x33\x22\x20\x69\x64\x3D\x22\x38\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x43\x65\x6C\x6C\x20\x73\x74\x79\x6C\x65\x3D\x22\x69\x6D\x61\x67\x65\x3B\x69\x6D\x61\x67\x65\x3D\x2F\x61\x73\x73\x65\x74\x73\x2F\x70\x6C\x75\x67\x69\x6E\x73\x2F\x73\x71\x75\x61\x72\x65\x2F\x73\x74\x65\x6E\x63\x69\x6C\x73\x2F\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x5F\x73\x65\x72\x76\x65\x72\x2F\x64\x61\x74\x61\x62\x61\x73\x65\x5F\x31\x32\x38\x78\x31\x32\x38\x2E\x70\x6E\x67\x22\x20\x70\x61\x72\x65\x6E\x74\x3D\x22\x31\x22\x20\x76\x65\x72\x74\x65\x78\x3D\x22\x31\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x47\x65\x6F\x6D\x65\x74\x72\x79\x20\x78\x3D\x22\x35\x36\x30\x22\x20\x79\x3D\x22\x31\x31\x30\x22\x20\x77\x69\x64\x74\x68\x3D\x22\x38\x30\x22\x20\x68\x65\x69\x67\x68\x74\x3D\x22\x38\x30\x22\x20\x61\x73\x3D\x22\x67\x65\x6F\x6D\x65\x74\x72\x79\x22\x2F\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x2F\x6D\x78\x43\x65\x6C\x6C\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x64\x61\x74\x61\x62\x61\x73\x65\x3E\x0A\x20\x20\x20\x20\x3C\x6D\x78\x43\x65\x6C\x6C\x20\x69\x64\x3D\x22\x39\x22\x20\x70\x61\x72\x65\x6E\x74\x3D\x22\x31\x22\x20\x73\x6F\x75\x72\x63\x65\x3D\x22\x36\x22\x20\x74\x61\x72\x67\x65\x74\x3D\x22\x38\x22\x20\x65\x64\x67\x65\x3D\x22\x31\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x47\x65\x6F\x6D\x65\x74\x72\x79\x20\x72\x65\x6C\x61\x74\x69\x76\x65\x3D\x22\x31\x22\x20\x61\x73\x3D\x22\x67\x65\x6F\x6D\x65\x74\x72\x79\x22\x2F\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x6D\x78\x43\x65\x6C\x6C\x3E\x0A\x20\x20\x20\x20\x3C\x67\x6F\x74\x6F\x69\x66\x20\x6C\x61\x62\x65\x6C\x3D\x22\x47\x6F\x74\x6F\x49\x66\x22\x20\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x3D\x22\x7B\x44\x42\x52\x45\x53\x55\x4C\x54\x7D\x20\x3D\x3D\x20\x31\x22\x20\x69\x64\x3D\x22\x31\x30\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x43\x65\x6C\x6C\x20\x73\x74\x79\x6C\x65\x3D\x22\x69\x6D\x61\x67\x65\x3B\x69\x6D\x61\x67\x65\x3D\x2F\x61\x73\x73\x65\x74\x73\x2F\x70\x6C\x75\x67\x69\x6E\x73\x2F\x73\x71\x75\x61\x72\x65\x2F\x73\x74\x65\x6E\x63\x69\x6C\x73\x2F\x63\x61\x6C\x6C\x66\x6C\x6F\x77\x2F\x67\x6F\x74\x6F\x69\x66\x5F\x31\x32\x38\x78\x31\x32\x38\x2E\x70\x6E\x67\x22\x20\x70\x61\x72\x65\x6E\x74\x3D\x22\x31\x22\x20\x76\x65\x72\x74\x65\x78\x3D\x22\x31\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x47\x65\x6F\x6D\x65\x74\x72\x79\x20\x78\x3D\x22\x37\x33\x30\x22\x20\x79\x3D\x22\x31\x30\x39\x2E\x35\x36\x37\x38\x32\x37\x31\x33\x30\x38\x35\x32\x33\x31\x22\x20\x77\x69\x64\x74\x68\x3D\x22\x38\x30\x22\x20\x68\x65\x69\x67\x68\x74\x3D\x22\x38\x30\x22\x20\x61\x73\x3D\x22\x67\x65\x6F\x6D\x65\x74\x72\x79\x22\x2F\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x2F\x6D\x78\x43\x65\x6C\x6C\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x67\x6F\x74\x6F\x69\x66\x3E\x0A\x20\x20\x20\x20\x3C\x6D\x78\x43\x65\x6C\x6C\x20\x69\x64\x3D\x22\x31\x31\x22\x20\x70\x61\x72\x65\x6E\x74\x3D\x22\x31\x22\x20\x73\x6F\x75\x72\x63\x65\x3D\x22\x38\x22\x20\x74\x61\x72\x67\x65\x74\x3D\x22\x31\x30\x22\x20\x65\x64\x67\x65\x3D\x22\x31\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x47\x65\x6F\x6D\x65\x74\x72\x79\x20\x72\x65\x6C\x61\x74\x69\x76\x65\x3D\x22\x31\x22\x20\x61\x73\x3D\x22\x67\x65\x6F\x6D\x65\x74\x72\x79\x22\x2F\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x6D\x78\x43\x65\x6C\x6C\x3E\x0A\x20\x20\x20\x20\x3C\x70\x6C\x61\x79\x62\x61\x63\x6B\x20\x6C\x61\x62\x65\x6C\x3D\x22\x50\x6C\x61\x79\x62\x61\x63\x6B\x20\x4F\x72\x64\x65\x72\x20\x73\x68\x69\x70\x70\x65\x64\x22\x20\x66\x69\x6C\x65\x5F\x69\x64\x3D\x22\x33\x22\x20\x73\x6B\x69\x70\x3D\x22\x30\x22\x20\x6E\x6F\x61\x6E\x73\x77\x65\x72\x3D\x22\x30\x22\x20\x69\x64\x3D\x22\x31\x32\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x43\x65\x6C\x6C\x20\x73\x74\x79\x6C\x65\x3D\x22\x69\x6D\x61\x67\x65\x3B\x69\x6D\x61\x67\x65\x3D\x2F\x61\x73\x73\x65\x74\x73\x2F\x70\x6C\x75\x67\x69\x6E\x73\x2F\x73\x71\x75\x61\x72\x65\x2F\x73\x74\x65\x6E\x63\x69\x6C\x73\x2F\x70\x6C\x61\x79\x62\x61\x63\x6B\x2F\x70\x6C\x61\x79\x62\x61\x63\x6B\x5F\x31\x32\x38\x78\x31\x32\x38\x2E\x70\x6E\x67\x22\x20\x70\x61\x72\x65\x6E\x74\x3D\x22\x31\x22\x20\x76\x65\x72\x74\x65\x78\x3D\x22\x31\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x47\x65\x6F\x6D\x65\x74\x72\x79\x20\x78\x3D\x22\x31\x30\x31\x30\x22\x20\x79\x3D\x22\x35\x30\x22\x20\x77\x69\x64\x74\x68\x3D\x22\x38\x30\x22\x20\x68\x65\x69\x67\x68\x74\x3D\x22\x38\x30\x22\x20\x61\x73\x3D\x22\x67\x65\x6F\x6D\x65\x74\x72\x79\x22\x2F\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x2F\x6D\x78\x43\x65\x6C\x6C\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x70\x6C\x61\x79\x62\x61\x63\x6B\x3E\x0A\x20\x20\x20\x20\x3C\x6D\x78\x43\x65\x6C\x6C\x20\x69\x64\x3D\x22\x31\x33\x22\x20\x76\x61\x6C\x75\x65\x3D\x22\x74\x72\x75\x65\x22\x20\x70\x61\x72\x65\x6E\x74\x3D\x22\x31\x22\x20\x73\x6F\x75\x72\x63\x65\x3D\x22\x31\x30\x22\x20\x74\x61\x72\x67\x65\x74\x3D\x22\x31\x32\x22\x20\x65\x64\x67\x65\x3D\x22\x31\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x47\x65\x6F\x6D\x65\x74\x72\x79\x20\x72\x65\x6C\x61\x74\x69\x76\x65\x3D\x22\x31\x22\x20\x61\x73\x3D\x22\x67\x65\x6F\x6D\x65\x74\x72\x79\x22\x2F\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x6D\x78\x43\x65\x6C\x6C\x3E\x0A\x20\x20\x20\x20\x3C\x70\x6C\x61\x79\x62\x61\x63\x6B\x20\x6C\x61\x62\x65\x6C\x3D\x22\x50\x6C\x61\x79\x62\x61\x63\x6B\x20\x4F\x72\x64\x65\x72\x20\x6F\x6E\x20\x65\x6C\x61\x62\x6F\x72\x61\x74\x69\x6F\x6E\x22\x20\x66\x69\x6C\x65\x5F\x69\x64\x3D\x22\x34\x22\x20\x73\x6B\x69\x70\x3D\x22\x30\x22\x20\x6E\x6F\x61\x6E\x73\x77\x65\x72\x3D\x22\x30\x22\x20\x69\x64\x3D\x22\x31\x34\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x43\x65\x6C\x6C\x20\x73\x74\x79\x6C\x65\x3D\x22\x69\x6D\x61\x67\x65\x3B\x69\x6D\x61\x67\x65\x3D\x2F\x61\x73\x73\x65\x74\x73\x2F\x70\x6C\x75\x67\x69\x6E\x73\x2F\x73\x71\x75\x61\x72\x65\x2F\x73\x74\x65\x6E\x63\x69\x6C\x73\x2F\x70\x6C\x61\x79\x62\x61\x63\x6B\x2F\x70\x6C\x61\x79\x62\x61\x63\x6B\x5F\x31\x32\x38\x78\x31\x32\x38\x2E\x70\x6E\x67\x22\x20\x70\x61\x72\x65\x6E\x74\x3D\x22\x31\x22\x20\x76\x65\x72\x74\x65\x78\x3D\x22\x31\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x47\x65\x6F\x6D\x65\x74\x72\x79\x20\x78\x3D\x22\x31\x30\x31\x30\x22\x20\x79\x3D\x22\x31\x38\x39\x2E\x35\x36\x37\x38\x32\x37\x31\x33\x30\x38\x35\x32\x33\x32\x22\x20\x77\x69\x64\x74\x68\x3D\x22\x38\x30\x22\x20\x68\x65\x69\x67\x68\x74\x3D\x22\x38\x30\x22\x20\x61\x73\x3D\x22\x67\x65\x6F\x6D\x65\x74\x72\x79\x22\x2F\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x2F\x6D\x78\x43\x65\x6C\x6C\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x70\x6C\x61\x79\x62\x61\x63\x6B\x3E\x0A\x20\x20\x20\x20\x3C\x6D\x78\x43\x65\x6C\x6C\x20\x69\x64\x3D\x22\x31\x35\x22\x20\x76\x61\x6C\x75\x65\x3D\x22\x66\x61\x6C\x73\x65\x22\x20\x70\x61\x72\x65\x6E\x74\x3D\x22\x31\x22\x20\x73\x6F\x75\x72\x63\x65\x3D\x22\x31\x30\x22\x20\x74\x61\x72\x67\x65\x74\x3D\x22\x31\x34\x22\x20\x65\x64\x67\x65\x3D\x22\x31\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x47\x65\x6F\x6D\x65\x74\x72\x79\x20\x72\x65\x6C\x61\x74\x69\x76\x65\x3D\x22\x31\x22\x20\x61\x73\x3D\x22\x67\x65\x6F\x6D\x65\x74\x72\x79\x22\x2F\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x6D\x78\x43\x65\x6C\x6C\x3E\x0A\x20\x20\x20\x20\x3C\x68\x61\x6E\x67\x75\x70\x20\x6C\x61\x62\x65\x6C\x3D\x22\x48\x61\x6E\x67\x75\x70\x22\x20\x69\x64\x3D\x22\x31\x36\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x43\x65\x6C\x6C\x20\x73\x74\x79\x6C\x65\x3D\x22\x69\x6D\x61\x67\x65\x3B\x69\x6D\x61\x67\x65\x3D\x2F\x61\x73\x73\x65\x74\x73\x2F\x70\x6C\x75\x67\x69\x6E\x73\x2F\x73\x71\x75\x61\x72\x65\x2F\x73\x74\x65\x6E\x63\x69\x6C\x73\x2F\x63\x61\x6C\x6C\x5F\x6D\x61\x6E\x61\x67\x65\x6D\x65\x6E\x74\x2F\x68\x61\x6E\x67\x75\x70\x5F\x31\x32\x38\x78\x31\x32\x38\x2E\x70\x6E\x67\x22\x20\x70\x61\x72\x65\x6E\x74\x3D\x22\x31\x22\x20\x76\x65\x72\x74\x65\x78\x3D\x22\x31\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x47\x65\x6F\x6D\x65\x74\x72\x79\x20\x78\x3D\x22\x31\x31\x38\x30\x22\x20\x79\x3D\x22\x31\x30\x39\x2E\x35\x36\x37\x38\x32\x37\x31\x33\x30\x38\x35\x32\x33\x22\x20\x77\x69\x64\x74\x68\x3D\x22\x38\x30\x22\x20\x68\x65\x69\x67\x68\x74\x3D\x22\x38\x30\x22\x20\x61\x73\x3D\x22\x67\x65\x6F\x6D\x65\x74\x72\x79\x22\x2F\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x2F\x6D\x78\x43\x65\x6C\x6C\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x68\x61\x6E\x67\x75\x70\x3E\x0A\x20\x20\x20\x20\x3C\x6D\x78\x43\x65\x6C\x6C\x20\x69\x64\x3D\x22\x31\x37\x22\x20\x70\x61\x72\x65\x6E\x74\x3D\x22\x31\x22\x20\x73\x6F\x75\x72\x63\x65\x3D\x22\x31\x32\x22\x20\x74\x61\x72\x67\x65\x74\x3D\x22\x31\x36\x22\x20\x65\x64\x67\x65\x3D\x22\x31\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x47\x65\x6F\x6D\x65\x74\x72\x79\x20\x72\x65\x6C\x61\x74\x69\x76\x65\x3D\x22\x31\x22\x20\x61\x73\x3D\x22\x67\x65\x6F\x6D\x65\x74\x72\x79\x22\x2F\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x6D\x78\x43\x65\x6C\x6C\x3E\x0A\x20\x20\x20\x20\x3C\x6D\x78\x43\x65\x6C\x6C\x20\x69\x64\x3D\x22\x31\x38\x22\x20\x70\x61\x72\x65\x6E\x74\x3D\x22\x31\x22\x20\x73\x6F\x75\x72\x63\x65\x3D\x22\x31\x34\x22\x20\x74\x61\x72\x67\x65\x74\x3D\x22\x31\x36\x22\x20\x65\x64\x67\x65\x3D\x22\x31\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x47\x65\x6F\x6D\x65\x74\x72\x79\x20\x72\x65\x6C\x61\x74\x69\x76\x65\x3D\x22\x31\x22\x20\x61\x73\x3D\x22\x67\x65\x6F\x6D\x65\x74\x72\x79\x22\x2F\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x6D\x78\x43\x65\x6C\x6C\x3E\x0A\x20\x20\x3C\x2F\x72\x6F\x6F\x74\x3E\x0A\x3C\x2F\x6D\x78\x47\x72\x61\x70\x68\x4D\x6F\x64\x65\x6C\x3E\x0A","\x53\x75\x72\x76\x65\x79","\x53\x75\x72\x76\x65\x79\x20\x49\x56\x52\x20\x65\x78\x61\x6D\x70\x6C\x65","\x3C\x6D\x78\x47\x72\x61\x70\x68\x4D\x6F\x64\x65\x6C\x20\x73\x63\x61\x6C\x65\x3D\x22\x30\x2E\x38\x33\x33\x22\x20\x67\x72\x69\x64\x3D\x22\x31\x22\x20\x67\x75\x69\x64\x65\x73\x3D\x22\x31\x22\x20\x74\x6F\x6F\x6C\x74\x69\x70\x73\x3D\x22\x31\x22\x20\x63\x6F\x6E\x6E\x65\x63\x74\x3D\x22\x31\x22\x20\x66\x6F\x6C\x64\x3D\x22\x31\x22\x20\x70\x61\x67\x65\x3D\x22\x30\x22\x20\x70\x61\x67\x65\x53\x63\x61\x6C\x65\x3D\x22\x31\x22\x20\x70\x61\x67\x65\x57\x69\x64\x74\x68\x3D\x22\x38\x32\x36\x22\x20\x70\x61\x67\x65\x48\x65\x69\x67\x68\x74\x3D\x22\x31\x31\x36\x39\x22\x3E\x0A\x20\x20\x3C\x72\x6F\x6F\x74\x3E\x0A\x20\x20\x20\x20\x3C\x6D\x78\x43\x65\x6C\x6C\x20\x69\x64\x3D\x22\x30\x22\x2F\x3E\x0A\x20\x20\x20\x20\x3C\x6D\x78\x43\x65\x6C\x6C\x20\x69\x64\x3D\x22\x31\x22\x20\x70\x61\x72\x65\x6E\x74\x3D\x22\x30\x22\x2F\x3E\x0A\x20\x20\x20\x20\x3C\x73\x74\x61\x72\x74\x20\x6C\x61\x62\x65\x6C\x3D\x22\x53\x74\x61\x72\x74\x22\x20\x69\x64\x3D\x22\x32\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x43\x65\x6C\x6C\x20\x73\x74\x79\x6C\x65\x3D\x22\x69\x6D\x61\x67\x65\x3B\x69\x6D\x61\x67\x65\x3D\x2F\x61\x73\x73\x65\x74\x73\x2F\x70\x6C\x75\x67\x69\x6E\x73\x2F\x73\x71\x75\x61\x72\x65\x2F\x73\x74\x65\x6E\x63\x69\x6C\x73\x2F\x65\x6E\x74\x72\x79\x2F\x73\x74\x61\x72\x74\x5F\x31\x32\x38\x78\x31\x32\x38\x2E\x70\x6E\x67\x22\x20\x70\x61\x72\x65\x6E\x74\x3D\x22\x31\x22\x20\x76\x65\x72\x74\x65\x78\x3D\x22\x31\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x47\x65\x6F\x6D\x65\x74\x72\x79\x20\x78\x3D\x22\x37\x30\x22\x20\x79\x3D\x22\x31\x31\x30\x22\x20\x77\x69\x64\x74\x68\x3D\x22\x38\x30\x22\x20\x68\x65\x69\x67\x68\x74\x3D\x22\x38\x30\x22\x20\x61\x73\x3D\x22\x67\x65\x6F\x6D\x65\x74\x72\x79\x22\x2F\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x2F\x6D\x78\x43\x65\x6C\x6C\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x73\x74\x61\x72\x74\x3E\x0A\x20\x20\x20\x20\x3C\x6D\x65\x6E\x75\x20\x6C\x61\x62\x65\x6C\x3D\x22\x4D\x65\x6E\x75\x22\x20\x66\x69\x6C\x65\x5F\x69\x64\x3D\x22\x35\x22\x20\x72\x65\x73\x70\x6F\x6E\x73\x65\x3D\x22\x35\x22\x20\x64\x69\x67\x69\x74\x3D\x22\x31\x22\x20\x72\x65\x74\x72\x79\x3D\x22\x31\x22\x20\x76\x61\x72\x69\x61\x62\x6C\x65\x5F\x69\x64\x3D\x22\x34\x22\x20\x69\x64\x3D\x22\x33\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x43\x65\x6C\x6C\x20\x73\x74\x79\x6C\x65\x3D\x22\x69\x6D\x61\x67\x65\x3B\x69\x6D\x61\x67\x65\x3D\x2F\x61\x73\x73\x65\x74\x73\x2F\x70\x6C\x75\x67\x69\x6E\x73\x2F\x73\x71\x75\x61\x72\x65\x2F\x73\x74\x65\x6E\x63\x69\x6C\x73\x2F\x70\x6C\x61\x79\x62\x61\x63\x6B\x2F\x6D\x65\x6E\x75\x5F\x31\x32\x38\x78\x31\x32\x38\x2E\x70\x6E\x67\x22\x20\x70\x61\x72\x65\x6E\x74\x3D\x22\x31\x22\x20\x76\x65\x72\x74\x65\x78\x3D\x22\x31\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x47\x65\x6F\x6D\x65\x74\x72\x79\x20\x78\x3D\x22\x32\x32\x32\x22\x20\x79\x3D\x22\x31\x31\x30\x22\x20\x77\x69\x64\x74\x68\x3D\x22\x38\x30\x22\x20\x68\x65\x69\x67\x68\x74\x3D\x22\x38\x30\x22\x20\x61\x73\x3D\x22\x67\x65\x6F\x6D\x65\x74\x72\x79\x22\x2F\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x2F\x6D\x78\x43\x65\x6C\x6C\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x6D\x65\x6E\x75\x3E\x0A\x20\x20\x20\x20\x3C\x6D\x78\x43\x65\x6C\x6C\x20\x69\x64\x3D\x22\x34\x22\x20\x70\x61\x72\x65\x6E\x74\x3D\x22\x31\x22\x20\x73\x6F\x75\x72\x63\x65\x3D\x22\x32\x22\x20\x74\x61\x72\x67\x65\x74\x3D\x22\x33\x22\x20\x65\x64\x67\x65\x3D\x22\x31\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x47\x65\x6F\x6D\x65\x74\x72\x79\x20\x72\x65\x6C\x61\x74\x69\x76\x65\x3D\x22\x31\x22\x20\x61\x73\x3D\x22\x67\x65\x6F\x6D\x65\x74\x72\x79\x22\x2F\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x6D\x78\x43\x65\x6C\x6C\x3E\x0A\x20\x20\x20\x20\x3C\x6E\x6F\x6F\x70\x20\x6C\x61\x62\x65\x6C\x3D\x22\x4E\x6F\x4F\x70\x22\x20\x6F\x75\x74\x70\x75\x74\x3D\x22\x22\x20\x69\x64\x3D\x22\x35\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x43\x65\x6C\x6C\x20\x73\x74\x79\x6C\x65\x3D\x22\x69\x6D\x61\x67\x65\x3B\x69\x6D\x61\x67\x65\x3D\x2F\x61\x73\x73\x65\x74\x73\x2F\x70\x6C\x75\x67\x69\x6E\x73\x2F\x73\x71\x75\x61\x72\x65\x2F\x73\x74\x65\x6E\x63\x69\x6C\x73\x2F\x67\x65\x6E\x65\x72\x61\x6C\x2F\x6E\x6F\x6F\x70\x5F\x31\x32\x38\x78\x31\x32\x38\x2E\x70\x6E\x67\x22\x20\x70\x61\x72\x65\x6E\x74\x3D\x22\x31\x22\x20\x76\x65\x72\x74\x65\x78\x3D\x22\x31\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x47\x65\x6F\x6D\x65\x74\x72\x79\x20\x78\x3D\x22\x33\x37\x38\x2E\x39\x39\x39\x39\x39\x39\x39\x39\x39\x39\x39\x39\x39\x34\x22\x20\x79\x3D\x22\x31\x31\x30\x2E\x31\x33\x35\x36\x35\x34\x32\x36\x31\x37\x30\x34\x36\x34\x22\x20\x77\x69\x64\x74\x68\x3D\x22\x38\x30\x22\x20\x68\x65\x69\x67\x68\x74\x3D\x22\x38\x30\x22\x20\x61\x73\x3D\x22\x67\x65\x6F\x6D\x65\x74\x72\x79\x22\x2F\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x2F\x6D\x78\x43\x65\x6C\x6C\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x6E\x6F\x6F\x70\x3E\x0A\x20\x20\x20\x20\x3C\x6D\x78\x43\x65\x6C\x6C\x20\x69\x64\x3D\x22\x36\x22\x20\x76\x61\x6C\x75\x65\x3D\x22\x31\x2C\x32\x2C\x33\x2C\x34\x2C\x35\x22\x20\x70\x61\x72\x65\x6E\x74\x3D\x22\x31\x22\x20\x73\x6F\x75\x72\x63\x65\x3D\x22\x33\x22\x20\x74\x61\x72\x67\x65\x74\x3D\x22\x35\x22\x20\x65\x64\x67\x65\x3D\x22\x31\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x47\x65\x6F\x6D\x65\x74\x72\x79\x20\x72\x65\x6C\x61\x74\x69\x76\x65\x3D\x22\x31\x22\x20\x61\x73\x3D\x22\x67\x65\x6F\x6D\x65\x74\x72\x79\x22\x2F\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x6D\x78\x43\x65\x6C\x6C\x3E\x0A\x20\x20\x20\x20\x3C\x64\x61\x74\x61\x62\x61\x73\x65\x20\x6C\x61\x62\x65\x6C\x3D\x22\x44\x61\x74\x61\x62\x61\x73\x65\x22\x20\x64\x61\x74\x61\x62\x61\x73\x65\x5F\x69\x64\x3D\x22\x32\x22\x20\x71\x75\x65\x72\x79\x3D\x22\x49\x4E\x53\x45\x52\x54\x20\x49\x4E\x54\x4F\x20\x73\x75\x72\x76\x65\x79\x20\x28\x61\x67\x65\x6E\x74\x2C\x20\x71\x75\x65\x75\x65\x2C\x20\x72\x65\x73\x75\x6C\x74\x29\x26\x23\x78\x61\x3B\x56\x41\x4C\x55\x45\x53\x20\x28\x7B\x4D\x45\x4D\x42\x45\x52\x49\x4E\x54\x45\x52\x46\x41\x43\x45\x7D\x2C\x20\x7B\x51\x55\x45\x55\x45\x4E\x41\x4D\x45\x7D\x2C\x20\x7B\x52\x41\x54\x45\x7D\x29\x22\x20\x76\x61\x72\x69\x61\x62\x6C\x65\x5F\x69\x64\x3D\x22\x34\x22\x20\x69\x64\x3D\x22\x37\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x43\x65\x6C\x6C\x20\x73\x74\x79\x6C\x65\x3D\x22\x69\x6D\x61\x67\x65\x3B\x69\x6D\x61\x67\x65\x3D\x2F\x61\x73\x73\x65\x74\x73\x2F\x70\x6C\x75\x67\x69\x6E\x73\x2F\x73\x71\x75\x61\x72\x65\x2F\x73\x74\x65\x6E\x63\x69\x6C\x73\x2F\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x5F\x73\x65\x72\x76\x65\x72\x2F\x64\x61\x74\x61\x62\x61\x73\x65\x5F\x31\x32\x38\x78\x31\x32\x38\x2E\x70\x6E\x67\x22\x20\x70\x61\x72\x65\x6E\x74\x3D\x22\x31\x22\x20\x76\x65\x72\x74\x65\x78\x3D\x22\x31\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x47\x65\x6F\x6D\x65\x74\x72\x79\x20\x78\x3D\x22\x36\x37\x30\x22\x20\x79\x3D\x22\x31\x31\x30\x2E\x31\x33\x35\x36\x35\x34\x32\x36\x31\x37\x30\x34\x36\x34\x22\x20\x77\x69\x64\x74\x68\x3D\x22\x38\x30\x22\x20\x68\x65\x69\x67\x68\x74\x3D\x22\x38\x30\x22\x20\x61\x73\x3D\x22\x67\x65\x6F\x6D\x65\x74\x72\x79\x22\x2F\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x2F\x6D\x78\x43\x65\x6C\x6C\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x64\x61\x74\x61\x62\x61\x73\x65\x3E\x0A\x20\x20\x20\x20\x3C\x68\x61\x6E\x67\x75\x70\x20\x6C\x61\x62\x65\x6C\x3D\x22\x48\x61\x6E\x67\x75\x70\x22\x20\x69\x64\x3D\x22\x31\x30\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x43\x65\x6C\x6C\x20\x73\x74\x79\x6C\x65\x3D\x22\x69\x6D\x61\x67\x65\x3B\x69\x6D\x61\x67\x65\x3D\x2F\x61\x73\x73\x65\x74\x73\x2F\x70\x6C\x75\x67\x69\x6E\x73\x2F\x73\x71\x75\x61\x72\x65\x2F\x73\x74\x65\x6E\x63\x69\x6C\x73\x2F\x63\x61\x6C\x6C\x5F\x6D\x61\x6E\x61\x67\x65\x6D\x65\x6E\x74\x2F\x68\x61\x6E\x67\x75\x70\x5F\x31\x32\x38\x78\x31\x32\x38\x2E\x70\x6E\x67\x22\x20\x70\x61\x72\x65\x6E\x74\x3D\x22\x31\x22\x20\x76\x65\x72\x74\x65\x78\x3D\x22\x31\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x47\x65\x6F\x6D\x65\x74\x72\x79\x20\x78\x3D\x22\x38\x33\x38\x22\x20\x79\x3D\x22\x31\x31\x30\x2E\x31\x33\x35\x36\x35\x34\x32\x36\x31\x37\x30\x34\x36\x34\x22\x20\x77\x69\x64\x74\x68\x3D\x22\x38\x30\x22\x20\x68\x65\x69\x67\x68\x74\x3D\x22\x38\x30\x22\x20\x61\x73\x3D\x22\x67\x65\x6F\x6D\x65\x74\x72\x79\x22\x2F\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x2F\x6D\x78\x43\x65\x6C\x6C\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x68\x61\x6E\x67\x75\x70\x3E\x0A\x20\x20\x20\x20\x3C\x6D\x78\x43\x65\x6C\x6C\x20\x69\x64\x3D\x22\x31\x32\x22\x20\x70\x61\x72\x65\x6E\x74\x3D\x22\x31\x22\x20\x73\x6F\x75\x72\x63\x65\x3D\x22\x37\x22\x20\x74\x61\x72\x67\x65\x74\x3D\x22\x31\x30\x22\x20\x65\x64\x67\x65\x3D\x22\x31\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x47\x65\x6F\x6D\x65\x74\x72\x79\x20\x72\x65\x6C\x61\x74\x69\x76\x65\x3D\x22\x31\x22\x20\x61\x73\x3D\x22\x67\x65\x6F\x6D\x65\x74\x72\x79\x22\x2F\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x6D\x78\x43\x65\x6C\x6C\x3E\x0A\x20\x20\x20\x20\x3C\x70\x6C\x61\x79\x62\x61\x63\x6B\x20\x6C\x61\x62\x65\x6C\x3D\x22\x50\x6C\x61\x79\x62\x61\x63\x6B\x20\x54\x68\x61\x6E\x6B\x20\x79\x6F\x75\x22\x20\x66\x69\x6C\x65\x5F\x69\x64\x3D\x22\x36\x22\x20\x73\x6B\x69\x70\x3D\x22\x30\x22\x20\x6E\x6F\x61\x6E\x73\x77\x65\x72\x3D\x22\x30\x22\x20\x69\x64\x3D\x22\x31\x33\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x43\x65\x6C\x6C\x20\x73\x74\x79\x6C\x65\x3D\x22\x69\x6D\x61\x67\x65\x3B\x69\x6D\x61\x67\x65\x3D\x2F\x61\x73\x73\x65\x74\x73\x2F\x70\x6C\x75\x67\x69\x6E\x73\x2F\x73\x71\x75\x61\x72\x65\x2F\x73\x74\x65\x6E\x63\x69\x6C\x73\x2F\x70\x6C\x61\x79\x62\x61\x63\x6B\x2F\x70\x6C\x61\x79\x62\x61\x63\x6B\x5F\x31\x32\x38\x78\x31\x32\x38\x2E\x70\x6E\x67\x22\x20\x70\x61\x72\x65\x6E\x74\x3D\x22\x31\x22\x20\x76\x65\x72\x74\x65\x78\x3D\x22\x31\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x47\x65\x6F\x6D\x65\x74\x72\x79\x20\x78\x3D\x22\x35\x32\x30\x22\x20\x79\x3D\x22\x31\x31\x30\x2E\x31\x33\x35\x36\x35\x34\x32\x36\x31\x37\x30\x34\x36\x34\x22\x20\x77\x69\x64\x74\x68\x3D\x22\x38\x30\x22\x20\x68\x65\x69\x67\x68\x74\x3D\x22\x38\x30\x22\x20\x61\x73\x3D\x22\x67\x65\x6F\x6D\x65\x74\x72\x79\x22\x2F\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x2F\x6D\x78\x43\x65\x6C\x6C\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x70\x6C\x61\x79\x62\x61\x63\x6B\x3E\x0A\x20\x20\x20\x20\x3C\x6D\x78\x43\x65\x6C\x6C\x20\x69\x64\x3D\x22\x31\x34\x22\x20\x70\x61\x72\x65\x6E\x74\x3D\x22\x31\x22\x20\x73\x6F\x75\x72\x63\x65\x3D\x22\x35\x22\x20\x74\x61\x72\x67\x65\x74\x3D\x22\x31\x33\x22\x20\x65\x64\x67\x65\x3D\x22\x31\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x47\x65\x6F\x6D\x65\x74\x72\x79\x20\x72\x65\x6C\x61\x74\x69\x76\x65\x3D\x22\x31\x22\x20\x61\x73\x3D\x22\x67\x65\x6F\x6D\x65\x74\x72\x79\x22\x2F\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x6D\x78\x43\x65\x6C\x6C\x3E\x0A\x20\x20\x20\x20\x3C\x6D\x78\x43\x65\x6C\x6C\x20\x69\x64\x3D\x22\x31\x35\x22\x20\x70\x61\x72\x65\x6E\x74\x3D\x22\x31\x22\x20\x73\x6F\x75\x72\x63\x65\x3D\x22\x31\x33\x22\x20\x74\x61\x72\x67\x65\x74\x3D\x22\x37\x22\x20\x65\x64\x67\x65\x3D\x22\x31\x22\x3E\x0A\x20\x20\x20\x20\x20\x20\x3C\x6D\x78\x47\x65\x6F\x6D\x65\x74\x72\x79\x20\x72\x65\x6C\x61\x74\x69\x76\x65\x3D\x22\x31\x22\x20\x61\x73\x3D\x22\x67\x65\x6F\x6D\x65\x74\x72\x79\x22\x2F\x3E\x0A\x20\x20\x20\x20\x3C\x2F\x6D\x78\x43\x65\x6C\x6C\x3E\x0A\x20\x20\x3C\x2F\x72\x6F\x6F\x74\x3E\x0A\x3C\x2F\x6D\x78\x47\x72\x61\x70\x68\x4D\x6F\x64\x65\x6C\x3E\x0A","\x53\x71\x75\x61\x72\x65\x50\x72\x6F\x6A\x65\x63\x74","\x50\x6F\x70\x75\x6C\x61\x74\x69\x6E\x67\x20\x53\x71\x75\x61\x72\x65\x20\x4F\x44\x42\x43\x3A\x20\x25\x73\x20\x2D\x20\x44\x4F\x4E\x45\x20","\x78\x63\x61\x6C\x6C\x79","\x44\x52\x49\x56\x45\x52\x3D\x4D\x79\x53\x51\x4C\x3B\x53\x45\x52\x56\x45\x52\x3D\x31\x32\x37\x2E\x30\x2E\x30\x2E\x31\x3B\x55\x49\x44\x3D\x78\x63\x61\x6C\x6C\x3B\x50\x57\x44\x3D\x78\x43\x40\x4C\x4C\x31\x32\x33\x34\x3B\x44\x41\x54\x41\x42\x41\x53\x45\x3D\x6D\x6F\x74\x69\x6F\x6E","\x53\x71\x75\x61\x72\x65\x4F\x64\x62\x63","\x5A\x65\x6E\x64\x65\x73\x6B","\x31\x2E\x30\x2E\x30","\x58\x65\x6E\x69\x61\x4C\x41\x42\x20\x73\x2E\x72\x2E\x6C\x2E","\x61\x73\x73\x65\x74\x73\x2F\x69\x6D\x61\x67\x65\x73\x2F\x6D\x65\x64\x69\x61\x2F\x7A\x65\x6E\x64\x65\x73\x6B\x32\x2E\x70\x6E\x67","\x7A\x65\x6E\x64\x65\x73\x6B","\x53\x74\x61\x72\x74\x20\x75\x73\x69\x6E\x67\x20\x78\x43\x41\x4C\x4C\x59\x20\x2D\x20\x5A\x65\x6E\x64\x65\x73\x6B\x20\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x3A\x20\x41\x75\x74\x6F\x2D\x47\x65\x6E\x65\x72\x61\x74\x65\x64\x20\x54\x69\x63\x6B\x65\x74\x73\x2C\x20\x66\x75\x6C\x6C\x79\x20\x63\x75\x73\x74\x6F\x6D\x69\x7A\x61\x62\x6C\x65\x20\x63\x6F\x6D\x6D\x65\x6E\x74\x73\x2C\x20\x43\x75\x73\x74\x6F\x6D\x20\x46\x69\x65\x6C\x64\x73\x20\x6D\x61\x6E\x61\x67\x65\x6D\x65\x6E\x74\x2C\x20\x54\x61\x67\x20\x73\x75\x70\x70\x6F\x72\x74\x20\x61\x6E\x64\x20\x53\x69\x6D\x70\x6C\x65\x20\x53\x65\x74\x75\x70","\x68\x74\x74\x70\x73\x3A\x2F\x2F\x77\x69\x6B\x69\x2E\x78\x63\x61\x6C\x6C\x79\x6D\x6F\x74\x69\x6F\x6E\x2E\x63\x6F\x6D\x2F\x64\x69\x73\x70\x6C\x61\x79\x2F\x58\x4D\x44\x2F\x5A\x65\x6E\x64\x65\x73\x6B\x2B\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E","\x53\x61\x6C\x65\x73\x66\x6F\x72\x63\x65","\x61\x73\x73\x65\x74\x73\x2F\x69\x6D\x61\x67\x65\x73\x2F\x6D\x65\x64\x69\x61\x2F\x73\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x32\x2E\x70\x6E\x67","\x73\x61\x6C\x65\x73\x66\x6F\x72\x63\x65","\x53\x74\x61\x72\x74\x20\x75\x73\x69\x6E\x67\x20\x78\x43\x41\x4C\x4C\x59\x20\x2D\x20\x53\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x20\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x3A\x20\x41\x75\x74\x6F\x2D\x47\x65\x6E\x65\x72\x61\x74\x65\x64\x20\x54\x61\x73\x6B\x73\x2C\x20\x66\x75\x6C\x6C\x79\x20\x63\x75\x73\x74\x6F\x6D\x69\x7A\x61\x62\x6C\x65\x20\x63\x6F\x6D\x6D\x65\x6E\x74\x73\x2C\x20\x43\x75\x73\x74\x6F\x6D\x20\x46\x69\x65\x6C\x64\x73\x20\x6D\x61\x6E\x61\x67\x65\x6D\x65\x6E\x74\x20\x61\x6E\x64\x20\x4F\x70\x65\x6E\x43\x54\x49\x20\x73\x75\x70\x70\x6F\x72\x74","\x68\x74\x74\x70\x73\x3A\x2F\x2F\x77\x69\x6B\x69\x2E\x78\x63\x61\x6C\x6C\x79\x6D\x6F\x74\x69\x6F\x6E\x2E\x63\x6F\x6D\x2F\x64\x69\x73\x70\x6C\x61\x79\x2F\x58\x4D\x44\x2F\x53\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x2B\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E","\x69\x46\x72\x61\x6D\x65","\x61\x73\x73\x65\x74\x73\x2F\x69\x6D\x61\x67\x65\x73\x2F\x6D\x65\x64\x69\x61\x2F\x69\x66\x72\x61\x6D\x65\x2E\x70\x6E\x67","\x69\x66\x72\x61\x6D\x65","\x53\x74\x61\x72\x74\x20\x75\x73\x69\x6E\x67\x20\x69\x46\x72\x61\x6D\x65\x20\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x3A\x20\x65\x6E\x61\x62\x6C\x65\x20\x79\x6F\x75\x72\x20\x61\x67\x65\x6E\x74\x73\x20\x74\x6F\x20\x76\x69\x65\x77\x20\x65\x78\x74\x65\x72\x6E\x61\x6C\x20\x70\x61\x67\x65\x73\x20\x28\x6C\x69\x6B\x65\x20\x79\x6F\x75\x72\x20\x43\x52\x4D\x29\x20\x64\x69\x72\x65\x63\x74\x6C\x79\x20\x66\x72\x6F\x6D\x20\x4D\x6F\x74\x69\x6F\x6E\x20\x47\x55\x49","\x68\x74\x74\x70\x73\x3A\x2F\x2F\x77\x69\x6B\x69\x2E\x78\x63\x61\x6C\x6C\x79\x6D\x6F\x74\x69\x6F\x6E\x2E\x63\x6F\x6D\x2F\x64\x69\x73\x70\x6C\x61\x79\x2F\x58\x4D\x44\x2F\x69\x46\x72\x61\x6D\x65\x2B\x49\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E","\x45\x72\x72\x6F\x72\x20\x70\x6F\x70\x75\x6C\x61\x74\x69\x6E\x67\x20\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x73\x3A","\x46\x69\x6E\x69\x73\x68\x65\x64\x20\x70\x6F\x70\x75\x6C\x61\x74\x69\x6E\x67\x20\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x73","\x61\x6C\x6C","\x73\x74\x61\x74\x65","\x69\x6E\x63\x6C\x75\x64\x65\x73","\x75\x70\x64\x61\x74\x65","\x49\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E","\x70\x75\x73\x68","\x66\x6F\x72\x45\x61\x63\x68","\x66\x69\x6E\x64\x41\x6C\x6C","\x50\x6F\x70\x75\x6C\x61\x74\x69\x6E\x67\x20\x43\x6F\x6D\x70\x61\x6E\x69\x65\x73\x3A\x20\x25\x73\x20\x2D\x20\x44\x4F\x4E\x45\x20","\x41\x63\x6D\x65","\x6C\x74\x64","\x41\x63\x6D\x65\x20\x53\x72\x65\x65\x74","\x58\x65\x6E\x69\x61\x6C\x61\x62","\x73\x72\x6C","\x43\x2E\x73\x6F\x20\x56\x69\x74\x74\x6F\x72\x69\x6F\x20\x45\x6D\x61\x6E\x75\x65\x6C\x65\x20\x49\x49\x2C\x20\x31\x31\x31","\x31\x30\x31\x32\x38","\x49\x74\x61\x6C\x79","\x54\x75\x72\x69\x6E","\x30\x39\x36\x36\x38\x39\x31\x30\x30\x31\x32","\x68\x74\x74\x70\x3A\x2F\x2F\x77\x77\x77\x2E\x78\x65\x6E\x69\x61\x6C\x61\x62\x2E\x63\x6F\x6D\x2F","\x2B\x33\x39\x20\x30\x31\x31\x2E\x31\x39\x38\x38\x36\x35\x30\x30","\x2B\x33\x39\x20\x30\x31\x31\x2E\x30\x39\x36\x30\x30\x37\x30","\x69\x6E\x66\x6F\x40\x78\x63\x61\x6C\x6C\x79\x2E\x63\x6F\x6D","\x43\x6F\x6D\x70\x61\x6E\x79","\x50\x6F\x70\x75\x6C\x61\x74\x69\x6E\x67\x20\x44\x61\x73\x68\x62\x6F\x61\x72\x64\x73\x3A\x20\x25\x73\x20\x2D\x20\x44\x4F\x4E\x45\x20","\x49\x6E\x62\x6F\x75\x6E\x64\x20\x43\x61\x6C\x6C\x73","\x56\x6F\x69\x63\x65\x20\x49\x6E\x62\x6F\x75\x6E\x64","\x63\x6F\x6C\x2D\x6D\x64\x2D\x33","\x63\x6F\x75\x6E\x74\x65\x72","\x62\x6C\x75\x65\x2D\x6D\x61\x64\x69\x73\x6F\x6E","\x66\x61\x2D\x63\x6F\x6D\x6D\x65\x6E\x74\x73","\x23","\x56\x49\x45\x57\x20\x4D\x4F\x52\x45","\x41\x67\x65\x6E\x74\x73","\x72\x65\x70\x6F\x72\x74\x5F\x61\x67\x65\x6E\x74","\x43\x61\x6C\x6C\x73","\x72\x65\x70\x6F\x72\x74\x5F\x63\x61\x6C\x6C","\x44\x69\x61\x6C\x73","\x72\x65\x70\x6F\x72\x74\x5F\x64\x69\x61\x6C","\x51\x75\x65\x75\x65\x73","\x72\x65\x70\x6F\x72\x74\x5F\x71\x75\x65\x75\x65","\x75\x73\x65\x72\x73","\x43\x68\x61\x74\x20\x53\x65\x73\x73\x69\x6F\x6E\x73","\x72\x65\x70\x6F\x72\x74\x5F\x63\x68\x61\x74\x5F\x73\x65\x73\x73\x69\x6F\x6E","\x4D\x61\x69\x6C\x20\x53\x65\x73\x73\x69\x6F\x6E\x73","\x72\x65\x70\x6F\x72\x74\x5F\x6D\x61\x69\x6C\x5F\x73\x65\x73\x73\x69\x6F\x6E","\x42\x6C\x75\x65","\x52\x65\x64","\x72\x65\x64\x2D\x69\x6E\x74\x65\x6E\x73\x65","\x47\x72\x65\x65\x6E","\x67\x72\x65\x65\x6E\x2D\x68\x61\x7A\x65","\x50\x75\x72\x70\x6C\x65","\x70\x75\x72\x70\x6C\x65\x2D\x70\x6C\x75\x6D","\x4F\x72\x61\x6E\x67\x65","\x79\x65\x6C\x6C\x6F\x77\x2D\x63\x61\x73\x61\x62\x6C\x61\x6E\x63\x61","\x59\x65\x6C\x6C\x6F\x77","\x79\x65\x6C\x6C\x6F\x77\x2D\x63\x72\x75\x73\x74\x61","\x54\x61\x6C\x6B\x20\x62\x75\x62\x62\x6C\x65\x73","\x42\x61\x72\x20\x43\x68\x61\x72\x74","\x66\x61\x2D\x62\x61\x72\x2D\x63\x68\x61\x72\x74","\x53\x68\x6F\x70\x70\x69\x6E\x67\x20\x43\x61\x72\x74","\x66\x61\x2D\x73\x68\x6F\x70\x70\x69\x6E\x67\x2D\x63\x61\x72\x74","\x47\x6C\x6F\x62\x65","\x66\x61\x2D\x67\x6C\x6F\x62\x65","\x72\x65\x70\x6F\x72\x74\x5F\x71\x75\x65\x75\x65\x5F\x68\x69\x73\x74\x6F\x72\x79","\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x61\x62\x61\x6E\x64\x6F\x6E\x3D\x30\x20\x41\x4E\x44\x20\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x63\x6F\x6D\x70\x6C\x65\x74\x65\x3D\x30\x20\x41\x4E\x44\x20\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x65\x78\x69\x74\x3D\x30\x20\x41\x4E\x44\x20\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6C\x65\x61\x76\x65\x41\x74\x20\x69\x73\x20\x6E\x6F\x74\x20\x6E\x75\x6C\x6C","\x41\x63\x74\x69\x76\x65\x20\x43\x61\x6C\x6C\x73","\x43\x4F\x55\x4E\x54\x28\x2A\x29","\x43\x41\x4C\x4C\x53","\x2E\x2E\x2F\x73\x72\x63\x2F\x74\x65\x6D\x70\x6C\x61\x74\x65\x73\x2F\x77\x69\x64\x67\x65\x74\x2D\x74\x69\x74\x6C\x65\x2E\x68\x74\x6D\x6C","\x31\x34\x35\x34\x37\x37\x32\x35\x33\x32\x33\x34\x36\x2D\x31\x30","\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x63\x6F\x6D\x70\x6C\x65\x74\x65\x3D\x31","\x54\x6F\x74\x61\x6C\x20\x41\x6E\x73\x77\x65\x72\x65\x64","\x31\x34\x35\x36\x38\x34\x31\x30\x33\x31\x31\x31\x31\x2D\x38","\x52\x4F\x55\x4E\x44\x28\x53\x55\x4D\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x63\x6F\x6D\x70\x6C\x65\x74\x65\x29\x20\x2F\x20\x28\x53\x55\x4D\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x63\x6F\x6D\x70\x6C\x65\x74\x65\x29\x2B\x53\x55\x4D\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x61\x62\x61\x6E\x64\x6F\x6E\x29\x29\x20\x2A\x31\x30\x30\x2C\x31\x29","\x41\x6E\x73\x77\x65\x72\x20\x52\x61\x74\x65\x28\x25\x29","\x31\x34\x35\x37\x32\x37\x30\x31\x32\x34\x38\x30\x32\x2D\x34","\x53\x45\x43\x5F\x54\x4F\x5F\x54\x49\x4D\x45\x28\x52\x4F\x55\x4E\x44\x28\x41\x56\x47\x28\x74\x61\x6C\x6B\x74\x69\x6D\x65\x29\x2C\x30\x29\x29","\x72\x65\x70\x6F\x72\x74\x5F\x61\x67\x65\x6E\x74\x5F\x68\x69\x73\x74\x6F\x72\x79","\x61\x67\x65\x6E\x74\x63\x6F\x6D\x70\x6C\x65\x74\x65\x3D\x31","\x41\x76\x67\x20\x54\x61\x6C\x6B\x20\x54\x69\x6D\x65","\x31\x34\x35\x37\x32\x37\x30\x32\x31\x34\x37\x36\x36\x2D\x35","\x52\x4F\x55\x4E\x44\x28\x53\x55\x4D\x28\x43\x41\x53\x45\x20\x57\x48\x45\x4E\x20\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x63\x6F\x6D\x70\x6C\x65\x74\x65\x3D\x31\x20\x41\x4E\x44\x20\x28\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6C\x65\x61\x76\x65\x41\x74\x29\x2D\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6A\x6F\x69\x6E\x41\x74\x29\x20\x3C\x20\x31\x30\x29\x20\x54\x48\x45\x4E\x20\x31\x20\x45\x4C\x53\x45\x20\x30\x20\x45\x4E\x44\x29\x2F\x28\x53\x55\x4D\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x63\x6F\x6D\x70\x6C\x65\x74\x65\x29\x20\x2B\x20\x53\x55\x4D\x28\x43\x41\x53\x45\x20\x57\x48\x45\x4E\x20\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x61\x62\x61\x6E\x64\x6F\x6E\x3D\x31\x20\x41\x4E\x44\x20\x28\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6C\x65\x61\x76\x65\x41\x74\x29\x2D\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6A\x6F\x69\x6E\x41\x74\x29\x20\x3E\x20\x31\x30\x29\x20\x54\x48\x45\x4E\x20\x31\x20\x45\x4C\x53\x45\x20\x30\x20\x45\x4E\x44\x29\x29\x20\x2A\x31\x30\x30\x2C\x31\x29","\x53\x65\x72\x76\x69\x63\x65\x20\x4C\x65\x76\x65\x6C\x20\x31\x30\x20\x28\x25\x29","\x53\x45\x52\x56\x49\x43\x45\x20\x4C\x45\x56\x45\x4C","\x31\x34\x35\x37\x33\x36\x36\x39\x36\x35\x37\x39\x34\x2D\x33","\x31\x34\x35\x36\x38\x34\x31\x31\x39\x31\x36\x36\x31\x2D\x32\x31","\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6C\x65\x61\x76\x65\x41\x74\x20\x49\x53\x20\x4E\x55\x4C\x4C","\x57\x61\x69\x74\x69\x6E\x67\x20\x43\x61\x6C\x6C\x73","\x31\x34\x35\x36\x38\x33\x39\x38\x37\x30\x34\x34\x39\x2D\x35","\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x61\x62\x61\x6E\x64\x6F\x6E\x3D\x31","\x54\x6F\x74\x61\x6C\x20\x41\x62\x61\x6E\x64\x6F\x6E\x65\x64","\x31\x34\x35\x36\x38\x34\x31\x32\x34\x34\x39\x33\x31\x2D\x32\x37","\x52\x4F\x55\x4E\x44\x28\x53\x55\x4D\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x61\x62\x61\x6E\x64\x6F\x6E\x29\x20\x2F\x20\x28\x53\x55\x4D\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x63\x6F\x6D\x70\x6C\x65\x74\x65\x29\x2B\x53\x55\x4D\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x61\x62\x61\x6E\x64\x6F\x6E\x29\x29\x20\x2A\x31\x30\x30\x2C\x31\x29","\x41\x62\x61\x6E\x64\x6F\x6E\x20\x52\x61\x74\x65\x20\x28\x25\x29","\x31\x34\x35\x37\x32\x36\x39\x30\x33\x33\x39\x32\x33\x2D\x33","\x53\x45\x43\x5F\x54\x4F\x5F\x54\x49\x4D\x45\x28\x52\x4F\x55\x4E\x44\x28\x41\x56\x47\x28\x68\x6F\x6C\x64\x74\x69\x6D\x65\x29\x2C\x30\x29\x29","\x41\x76\x67\x20\x41\x6E\x73\x77\x65\x72\x20\x54\x69\x6D\x65","\x31\x34\x35\x37\x32\x37\x30\x32\x33\x30\x33\x32\x34\x2D\x38","\x52\x4F\x55\x4E\x44\x28\x53\x55\x4D\x28\x43\x41\x53\x45\x20\x57\x48\x45\x4E\x20\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x63\x6F\x6D\x70\x6C\x65\x74\x65\x3D\x31\x20\x41\x4E\x44\x20\x28\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6C\x65\x61\x76\x65\x41\x74\x29\x2D\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6A\x6F\x69\x6E\x41\x74\x29\x20\x3C\x20\x31\x35\x29\x20\x54\x48\x45\x4E\x20\x31\x20\x45\x4C\x53\x45\x20\x30\x20\x45\x4E\x44\x29\x2F\x28\x53\x55\x4D\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x63\x6F\x6D\x70\x6C\x65\x74\x65\x29\x20\x2B\x20\x53\x55\x4D\x28\x43\x41\x53\x45\x20\x57\x48\x45\x4E\x20\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x61\x62\x61\x6E\x64\x6F\x6E\x3D\x31\x20\x41\x4E\x44\x20\x28\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6C\x65\x61\x76\x65\x41\x74\x29\x2D\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6A\x6F\x69\x6E\x41\x74\x29\x20\x3E\x20\x31\x35\x29\x20\x54\x48\x45\x4E\x20\x31\x20\x45\x4C\x53\x45\x20\x30\x20\x45\x4E\x44\x29\x29\x20\x2A\x31\x30\x30\x2C\x31\x29","\x53\x65\x72\x76\x69\x63\x65\x20\x4C\x65\x76\x65\x6C\x20\x31\x35\x20\x28\x25\x29","\x53\x45\x52\x56\x49\x43\x45\x20\x4C\x45\x56\x45\x4C\x20\x31\x35","\x31\x34\x35\x37\x39\x35\x32\x37\x33\x34\x35\x39\x30\x2D\x31","\x31\x34\x35\x36\x38\x34\x31\x31\x39\x31\x36\x36\x32\x2D\x32\x32","\x53\x45\x43\x5F\x54\x4F\x5F\x54\x49\x4D\x45\x28\x4D\x41\x58\x28\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x29\x2D\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6C\x65\x61\x76\x65\x41\x74\x29\x29\x29","\x4C\x6F\x6E\x67\x65\x73\x74\x20\x41\x63\x74\x69\x76\x65\x20\x43\x61\x6C\x6C","\x31\x34\x35\x37\x32\x37\x35\x32\x35\x38\x34\x39\x34\x2D\x31\x31","\x43\x4F\x55\x4E\x54\x28\x64\x69\x73\x74\x69\x6E\x63\x74\x20\x75\x6E\x69\x71\x75\x65\x69\x64\x29","\x54\x6F\x74\x61\x6C\x20\x4F\x66\x66\x65\x72\x65\x64","\x31\x34\x35\x37\x32\x36\x39\x30\x31\x30\x36\x31\x36\x2D\x31","\x52\x4F\x55\x4E\x44\x28\x43\x4F\x55\x4E\x54\x28\x44\x49\x53\x54\x49\x4E\x43\x54\x20\x75\x6E\x69\x71\x75\x65\x69\x64\x29\x2F\x48\x4F\x55\x52\x28\x43\x55\x52\x52\x45\x4E\x54\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x29\x29\x2C\x31\x29","\x41\x76\x67\x20\x4F\x66\x66\x65\x72\x65\x64\x20\x50\x65\x72\x20\x48\x6F\x75\x72","\x31\x34\x35\x37\x32\x37\x35\x32\x36\x33\x30\x32\x32\x2D\x31\x32","\x53\x45\x43\x5F\x54\x4F\x5F\x54\x49\x4D\x45\x28\x52\x4F\x55\x4E\x44\x28\x41\x56\x47\x28\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x61\x62\x61\x6E\x64\x6F\x6E\x41\x74\x29\x2D\x20\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x4A\x6F\x69\x6E\x41\x74\x29\x29\x2C\x30\x29\x29","\x41\x76\x67\x20\x41\x62\x61\x6E\x64\x6F\x6E\x20\x54\x69\x6D\x65","\x31\x34\x35\x37\x32\x37\x30\x32\x32\x33\x38\x37\x30\x2D\x37","\x52\x4F\x55\x4E\x44\x28\x53\x55\x4D\x28\x43\x41\x53\x45\x20\x57\x48\x45\x4E\x20\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x63\x6F\x6D\x70\x6C\x65\x74\x65\x3D\x31\x20\x41\x4E\x44\x20\x28\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6C\x65\x61\x76\x65\x41\x74\x29\x2D\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6A\x6F\x69\x6E\x41\x74\x29\x20\x3C\x20\x32\x30\x29\x20\x54\x48\x45\x4E\x20\x31\x20\x45\x4C\x53\x45\x20\x30\x20\x45\x4E\x44\x29\x2F\x28\x53\x55\x4D\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x63\x6F\x6D\x70\x6C\x65\x74\x65\x29\x20\x2B\x20\x53\x55\x4D\x28\x43\x41\x53\x45\x20\x57\x48\x45\x4E\x20\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x61\x62\x61\x6E\x64\x6F\x6E\x3D\x31\x20\x41\x4E\x44\x20\x28\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6C\x65\x61\x76\x65\x41\x74\x29\x2D\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6A\x6F\x69\x6E\x41\x74\x29\x20\x3E\x20\x32\x30\x29\x20\x54\x48\x45\x4E\x20\x31\x20\x45\x4C\x53\x45\x20\x30\x20\x45\x4E\x44\x29\x29\x20\x2A\x31\x30\x30\x2C\x31\x29","\x53\x65\x72\x76\x69\x63\x65\x20\x4C\x65\x76\x65\x6C\x20\x32\x30\x20\x28\x25\x29","\x53\x45\x52\x56\x49\x43\x45\x20\x4C\x45\x56\x45\x4C\x20\x32\x30","\x31\x34\x35\x37\x39\x35\x32\x37\x35\x31\x36\x30\x35\x2D\x32","\x31\x34\x35\x36\x38\x34\x31\x31\x39\x31\x36\x36\x33\x2D\x32\x33","\x53\x45\x43\x5F\x54\x4F\x5F\x54\x49\x4D\x45\x28\x4D\x41\x58\x28\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x29\x2D\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6A\x6F\x69\x6E\x41\x74\x29\x29\x29","\x4F\x6C\x64\x65\x73\x74\x20\x57\x61\x69\x74\x69\x6E\x67\x20\x43\x61\x6C\x6C","\x31\x34\x35\x37\x32\x37\x35\x32\x35\x34\x30\x36\x31\x2D\x31\x30","\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x65\x78\x69\x74\x3D\x31","\x55\x6E\x6D\x61\x6E\x61\x67\x65\x64","\x31\x34\x35\x37\x32\x36\x39\x30\x32\x32\x30\x36\x32\x2D\x32","\x53\x45\x43\x5F\x54\x4F\x5F\x54\x49\x4D\x45\x28\x52\x4F\x55\x4E\x44\x28\x41\x56\x47\x28\x61\x63\x77\x74\x69\x6D\x65\x29\x2C\x30\x29\x29","\x41\x76\x67\x20\x41\x43\x57\x20\x54\x69\x6D\x65","\x31\x34\x35\x37\x32\x37\x30\x32\x31\x39\x33\x35\x35\x2D\x36","\x31\x34\x35\x36\x38\x34\x31\x31\x39\x31\x36\x36\x34\x2D\x32\x34","\x2E\x2E\x2F\x73\x72\x63\x2F\x74\x65\x6D\x70\x6C\x61\x74\x65\x73\x2F\x64\x61\x73\x68\x62\x6F\x61\x72\x64\x2D\x74\x69\x74\x6C\x65\x2E\x68\x74\x6D\x6C","\x33\x2D\x33\x2D\x33\x2D\x33","\x73\x74\x72\x69\x6E\x67\x69\x66\x79","\x4F\x75\x74\x62\x6F\x75\x6E\x64\x20\x43\x61\x6C\x6C\x73","\x72\x65\x70\x6F\x72\x74\x5F\x63\x61\x6C\x6C\x5F\x68\x69\x73\x74\x6F\x72\x79","\x74\x79\x70\x65\x3D\x22\x6F\x75\x74\x62\x6F\x75\x6E\x64\x22","\x4D\x61\x6E\x75\x61\x6C\x20\x4F\x75\x74\x62\x6F\x75\x6E\x64","\x31\x34\x35\x37\x32\x37\x36\x34\x35\x38\x34\x32\x34\x2D\x31\x34","\x74\x79\x70\x65\x3D\x22\x6F\x75\x74\x62\x6F\x75\x6E\x64\x22\x20\x41\x4E\x44\x20\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x3D\x22\x41\x4E\x53\x57\x45\x52\x45\x44\x22","\x41\x6E\x73\x77\x65\x72\x65\x64","\x31\x34\x35\x37\x37\x31\x38\x35\x37\x39\x35\x32\x32\x2D\x32","\x53\x45\x43\x5F\x54\x4F\x5F\x54\x49\x4D\x45\x28\x53\x55\x4D\x28\x64\x75\x72\x61\x74\x69\x6F\x6E\x29\x29","\x47\x6C\x6F\x62\x61\x6C\x20\x44\x75\x72\x61\x74\x69\x6F\x6E","\x31\x34\x35\x37\x32\x37\x36\x34\x35\x33\x34\x36\x35\x2D\x31\x33","\x52\x4F\x55\x4E\x44\x28\x53\x55\x4D\x28\x49\x46\x28\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x3D\x22\x41\x4E\x53\x57\x45\x52\x45\x44\x22\x2C\x31\x2C\x30\x29\x29\x2F\x43\x4F\x55\x4E\x54\x28\x2A\x29\x2A\x31\x30\x30\x2C\x31\x29","\x41\x6E\x73\x77\x65\x72\x20\x52\x61\x74\x65\x20\x28\x25\x29","\x31\x34\x35\x37\x37\x31\x38\x35\x39\x31\x32\x34\x33\x2D\x33","\x53\x45\x43\x5F\x54\x4F\x5F\x54\x49\x4D\x45\x28\x52\x4F\x55\x4E\x44\x28\x41\x56\x47\x28\x64\x75\x72\x61\x74\x69\x6F\x6E\x29\x2C\x30\x29\x29","\x41\x76\x67\x20\x44\x75\x72\x61\x74\x69\x6F\x6E","\x31\x34\x35\x37\x37\x31\x38\x34\x38\x32\x33\x39\x36\x2D\x31","\x41\x67\x65\x6E\x74\x73\x20\x53\x74\x61\x74\x75\x73","\x6F\x6E\x6C\x69\x6E\x65\x3D\x31\x20\x41\x4E\x44\x20\x72\x6F\x6C\x65\x3D\x22\x61\x67\x65\x6E\x74\x22","\x4C\x6F\x67\x67\x65\x64","\x41\x47\x45\x4E\x54\x53","\x31\x34\x35\x37\x32\x37\x35\x32\x34\x38\x35\x32\x31\x2D\x39","\x6F\x6E\x6C\x69\x6E\x65\x3D\x31\x20\x41\x4E\x44\x20\x72\x6F\x6C\x65\x3D\x22\x61\x67\x65\x6E\x74\x22\x20\x41\x4E\x44\x20\x28\x76\x6F\x69\x63\x65\x50\x61\x75\x73\x65\x3D\x31\x20\x4F\x52\x20\x63\x68\x61\x74\x50\x61\x75\x73\x65\x3D\x31\x20\x4F\x52\x20\x6D\x61\x69\x6C\x50\x61\x75\x73\x65\x3D\x31\x20\x4F\x52\x20\x66\x61\x78\x50\x41\x75\x73\x65\x3D\x31\x29\x20\x61\x6E\x64\x20\x70\x61\x75\x73\x65\x54\x79\x70\x65\x20\x21\x3D\x22\x41\x43\x57\x22","\x50\x61\x75\x73\x65\x64","\x31\x34\x35\x37\x32\x37\x36\x34\x36\x32\x38\x34\x36\x2D\x31\x35","\x76\x6F\x69\x63\x65\x50\x61\x75\x73\x65\x3D\x31\x20\x61\x6E\x64\x20\x70\x61\x75\x73\x65\x54\x79\x70\x65\x3D\x22\x41\x43\x57\x22","\x41\x43\x57","\x31\x34\x35\x37\x33\x36\x30\x34\x36\x34\x32\x30\x38\x2D\x31","\x44\x61\x73\x68\x62\x6F\x61\x72\x64","\x64\x65\x73\x74\x72\x6F\x79","\x46\x69\x6E\x69\x73\x68\x65\x64\x20\x70\x6F\x70\x75\x6C\x61\x74\x69\x6E\x67\x20\x56\x6F\x69\x63\x65\x45\x78\x74\x65\x6E\x73\x69\x6F\x6E\x20\x66\x6F\x72\x20\x4F\x75\x74\x67\x6F\x69\x6E\x67\x20\x46\x61\x78","\x5F\x2E","\x4F\x75\x74\x67\x6F\x69\x6E\x67\x20\x66\x61\x78\x20\x74\x6F\x20\x24\x7B\x46\x41\x58\x4E\x55\x4D\x42\x45\x52\x7D","\x73\x79\x73\x74\x65\x6D","\x41\x63\x63\x6F\x75\x6E\x74\x20\x24\x7B\x46\x41\x58\x4E\x41\x4D\x45\x7D","\x43\x44\x52\x28\x74\x79\x70\x65\x29\x3D\x6F\x75\x74\x62\x6F\x75\x6E\x64\x2D\x66\x61\x78","\x41\x6E\x73\x77\x65\x72","\x57\x61\x69\x74","\x46\x41\x58\x4F\x50\x54\x28\x65\x63\x6D\x29\x3D\x24\x7B\x46\x41\x58\x45\x43\x4D\x7D","\x46\x41\x58\x4F\x50\x54\x28\x68\x65\x61\x64\x65\x72\x69\x6E\x66\x6F\x29\x3D\x24\x7B\x46\x41\x58\x48\x45\x41\x44\x45\x52\x49\x4E\x46\x4F\x7D","\x46\x41\x58\x4F\x50\x54\x28\x6C\x6F\x63\x61\x6C\x73\x74\x61\x74\x69\x6F\x6E\x69\x64\x29\x3D\x24\x7B\x46\x41\x58\x4C\x4F\x43\x41\x4C\x53\x54\x41\x54\x49\x4F\x4E\x49\x44\x7D","\x46\x41\x58\x4F\x50\x54\x28\x6D\x69\x6E\x72\x61\x74\x65\x29\x3D\x24\x7B\x46\x41\x58\x4D\x49\x4E\x52\x41\x54\x45\x7D","\x46\x41\x58\x4F\x50\x54\x28\x6D\x61\x78\x72\x61\x74\x65\x29\x3D\x24\x7B\x46\x41\x58\x4D\x41\x58\x52\x41\x54\x45\x7D","\x46\x41\x58\x4F\x50\x54\x28\x6D\x6F\x64\x65\x6D\x29\x3D\x24\x7B\x46\x41\x58\x4D\x4F\x44\x45\x4D\x7D","\x46\x41\x58\x4F\x50\x54\x28\x67\x61\x74\x65\x77\x61\x79\x29\x3D\x24\x7B\x46\x41\x58\x47\x41\x54\x45\x57\x41\x59\x7D","\x46\x41\x58\x4F\x50\x54\x28\x74\x33\x38\x74\x69\x6D\x65\x6F\x75\x74\x29\x3D\x24\x7B\x46\x41\x58\x54\x33\x38\x54\x49\x4D\x45\x4F\x55\x54\x7D","\x53\x65\x6E\x64\x46\x41\x58","\x24\x7B\x46\x41\x58\x4F\x55\x54\x46\x49\x4C\x45\x7D\x2C\x64\x73","\x48\x61\x6E\x67\x75\x70","\x52\x65\x77\x72\x69\x74\x69\x6E\x67\x20\x55\x73\x65\x72\x73\x20\x65\x78\x74\x65\x6E\x73\x69\x6F\x6E\x73\x2E\x2E\x2E","\x61\x70\x70\x64\x61\x74\x61","\x53\x49\x50\x2F","\x2C\x2C\x74\x54\x78\x58","\x73\x61\x76\x65","\x55\x73\x65\x72\x45\x78\x74\x65\x6E\x73\x69\x6F\x6E\x73","\x64\x61\x73\x68\x62\x6F\x61\x72\x64","\x41\x50\x50\x4C\x49\x43\x41\x54\x49\x4F\x4E\x5F\x44\x41\x53\x48\x42\x4F\x41\x52\x44","\x2F\x64\x61\x73\x68\x62\x6F\x61\x72\x64\x2F\x76\x6F\x69\x63\x65","\x79\x6F\x75\x72\x64\x61\x73\x68\x62\x6F\x61\x72\x64\x73","\x41\x50\x50\x4C\x49\x43\x41\x54\x49\x4F\x4E\x5F\x59\x4F\x55\x52\x5F\x44\x41\x53\x48\x42\x4F\x41\x52\x44\x53","\x2F\x74\x6F\x6F\x6C\x73\x2F\x79\x6F\x75\x72\x64\x61\x73\x68\x62\x6F\x61\x72\x64\x73\x2F\x73\x68\x6F\x77\x2F\x31","\x73\x74\x61\x66\x66","\x41\x50\x50\x4C\x49\x43\x41\x54\x49\x4F\x4E\x5F\x53\x54\x41\x46\x46","\x2F\x73\x74\x61\x66\x66\x2F\x61\x67\x65\x6E\x74\x73\x2F\x6C\x69\x73\x74","\x61\x67\x65\x6E\x74\x73","\x41\x50\x50\x4C\x49\x43\x41\x54\x49\x4F\x4E\x5F\x41\x47\x45\x4E\x54\x53","\x63\x6F\x6E\x74\x61\x63\x74\x6D\x61\x6E\x61\x67\x65\x72","\x41\x50\x50\x4C\x49\x43\x41\x54\x49\x4F\x4E\x5F\x43\x4F\x4E\x54\x41\x43\x54\x5F\x4D\x41\x4E\x41\x47\x45\x52","\x2F\x63\x6F\x6E\x74\x61\x63\x74\x6D\x61\x6E\x61\x67\x65\x72\x2F\x63\x6F\x6E\x74\x61\x63\x74\x73\x2F\x6C\x69\x73\x74","\x63\x68\x61\x6E\x6E\x65\x6C\x73","\x41\x50\x50\x4C\x49\x43\x41\x54\x49\x4F\x4E\x5F\x43\x48\x41\x4E\x4E\x45\x4C\x53","\x76\x6F\x69\x63\x65","\x41\x50\x50\x4C\x49\x43\x41\x54\x49\x4F\x4E\x5F\x56\x4F\x49\x43\x45","\x2F\x63\x68\x61\x6E\x6E\x65\x6C\x73\x2F\x76\x6F\x69\x63\x65\x2F\x71\x75\x65\x75\x65\x73\x2F\x6C\x69\x73\x74","\x63\x68\x61\x74","\x41\x50\x50\x4C\x49\x43\x41\x54\x49\x4F\x4E\x5F\x43\x48\x41\x54","\x2F\x63\x68\x61\x6E\x6E\x65\x6C\x73\x2F\x63\x68\x61\x74\x2F\x77\x65\x62\x73\x69\x74\x65\x73\x2F\x6C\x69\x73\x74","\x6D\x61\x69\x6C","\x41\x50\x50\x4C\x49\x43\x41\x54\x49\x4F\x4E\x5F\x4D\x41\x49\x4C","\x2F\x63\x68\x61\x6E\x6E\x65\x6C\x73\x2F\x6D\x61\x69\x6C\x2F\x61\x63\x63\x6F\x75\x6E\x74\x73\x2F\x6C\x69\x73\x74","\x66\x61\x78","\x41\x50\x50\x4C\x49\x43\x41\x54\x49\x4F\x4E\x5F\x46\x41\x58","\x2F\x63\x68\x61\x6E\x6E\x65\x6C\x73\x2F\x66\x61\x78\x2F\x61\x63\x63\x6F\x75\x6E\x74\x73\x2F\x6C\x69\x73\x74","\x73\x6D\x73","\x41\x50\x50\x4C\x49\x43\x41\x54\x49\x4F\x4E\x5F\x53\x4D\x53","\x2F\x63\x68\x61\x6E\x6E\x65\x6C\x73\x2F\x73\x6D\x73\x2F\x61\x63\x63\x6F\x75\x6E\x74\x73\x2F\x6C\x69\x73\x74","\x72\x65\x61\x6C\x74\x69\x6D\x65","\x41\x50\x50\x4C\x49\x43\x41\x54\x49\x4F\x4E\x5F\x52\x45\x41\x4C\x54\x49\x4D\x45","\x2F\x63\x68\x61\x6E\x6E\x65\x6C\x73\x2F\x72\x65\x61\x6C\x74\x69\x6D\x65\x2F\x76\x69\x65\x77\x2F\x61\x67\x65\x6E\x74\x73","\x74\x6F\x6F\x6C\x73","\x41\x50\x50\x4C\x49\x43\x41\x54\x49\x4F\x4E\x5F\x54\x4F\x4F\x4C\x53","\x2F\x74\x6F\x6F\x6C\x73\x2F\x74\x72\x69\x67\x67\x65\x72\x73\x2F\x6C\x69\x73\x74","\x73\x71\x75\x61\x72\x65","\x41\x50\x50\x4C\x49\x43\x41\x54\x49\x4F\x4E\x5F\x43\x41\x4C\x4C\x59\x53\x51\x55\x41\x52\x45","\x2F\x73\x71\x75\x61\x72\x65\x2F\x70\x72\x6F\x6A\x65\x63\x74\x73\x2F\x6C\x69\x73\x74","\x6A\x73\x63\x72\x69\x70\x74\x79","\x41\x50\x50\x4C\x49\x43\x41\x54\x49\x4F\x4E\x5F\x4A\x53\x43\x52\x49\x50\x54\x59","\x2F\x6A\x73\x63\x72\x69\x70\x74\x79\x2F\x70\x72\x6F\x6A\x65\x63\x74\x73\x2F\x6C\x69\x73\x74","\x6D\x6F\x74\x69\x6F\x6E\x64\x69\x61\x6C\x65\x72","\x41\x50\x50\x4C\x49\x43\x41\x54\x49\x4F\x4E\x5F\x4D\x4F\x54\x49\x4F\x4E\x5F\x44\x49\x41\x4C\x45\x52","\x2F\x6D\x6F\x74\x69\x6F\x6E\x64\x69\x61\x6C\x65\x72\x2F\x6C\x69\x73\x74\x73\x2F\x6C\x69\x73\x74","\x61\x6E\x61\x6C\x79\x74\x69\x63\x73","\x41\x50\x50\x4C\x49\x43\x41\x54\x49\x4F\x4E\x5F\x41\x4E\x41\x4C\x59\x54\x49\x43\x53","\x2F\x61\x6E\x61\x6C\x79\x74\x69\x63\x73\x2F\x72\x65\x70\x6F\x72\x74\x73\x2F\x6C\x69\x73\x74","\x73\x65\x74\x74\x69\x6E\x67","\x41\x50\x50\x4C\x49\x43\x41\x54\x49\x4F\x4E\x5F\x53\x45\x54\x54\x49\x4E\x47\x53","\x2F\x73\x65\x74\x74\x69\x6E\x67\x2F\x75\x70\x64\x61\x74\x65\x73\x2F\x6C\x69\x73\x74","\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E","\x41\x50\x50\x4C\x49\x43\x41\x54\x49\x4F\x4E\x5F\x49\x4E\x54\x45\x47\x52\x41\x54\x49\x4F\x4E","\x2F\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x73\x2F\x6C\x69\x73\x74","\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C","\x41\x50\x50\x4C\x49\x43\x41\x54\x49\x4F\x4E\x5F\x4F\x50\x45\x4E\x5F\x43\x48\x41\x4E\x4E\x45\x4C","\x2F\x63\x68\x61\x6E\x6E\x65\x6C\x73\x2F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x2F\x61\x63\x63\x6F\x75\x6E\x74\x73\x2F\x6C\x69\x73\x74","\x45\x72\x72\x6F\x72\x20\x70\x6F\x70\x75\x6C\x61\x74\x69\x6E\x67\x20\x6D\x6F\x64\x75\x6C\x65\x73\x3A","\x46\x69\x6E\x69\x73\x68\x65\x64\x20\x70\x6F\x70\x75\x6C\x61\x74\x69\x6E\x67\x20\x6D\x6F\x64\x75\x6C\x65\x73","\x4D\x6F\x64\x75\x6C\x65","\x44\x65\x74\x61\x69\x6C\x73","\x44\x65\x74\x61\x69\x6C\x65\x64\x20\x71\x75\x65\x75\x65\x73\x20\x72\x65\x70\x6F\x72\x74","\x6A\x31\x32\x5F\x37","\x7B\x22\x67\x72\x6F\x75\x70\x22\x3A\x7B\x22\x6F\x70\x65\x72\x61\x74\x6F\x72\x22\x3A\x22\x41\x4E\x44\x22\x2C\x22\x72\x75\x6C\x65\x73\x22\x3A\x5B\x5D\x7D\x7D","\x43\x61\x6C\x6C\x73\x20\x52\x65\x73\x75\x6C\x74","\x53\x69\x6D\x70\x6C\x65\x20\x71\x75\x65\x75\x65\x20\x63\x61\x6C\x6C\x73\x20\x6F\x76\x65\x72\x76\x69\x65\x77","\x44\x65\x74\x61\x69\x6C\x65\x64\x20\x72\x65\x70\x6F\x72\x74\x20\x61\x62\x6F\x75\x74\x20\x61\x6E\x73\x77\x65\x72\x65\x64\x20\x71\x75\x65\x75\x65\x20\x63\x61\x6C\x6C\x73","\x6A\x36\x30\x5F\x31","\x7B\x22\x67\x72\x6F\x75\x70\x22\x3A\x7B\x22\x6F\x70\x65\x72\x61\x74\x6F\x72\x22\x3A\x22\x41\x4E\x44\x22\x2C\x22\x72\x75\x6C\x65\x73\x22\x3A\x5B\x7B\x22\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x22\x3A\x22\x3D\x22\x2C\x22\x66\x69\x65\x6C\x64\x22\x3A\x22\x61\x67\x65\x6E\x74\x63\x6F\x6D\x70\x6C\x65\x74\x65\x22\x2C\x22\x76\x61\x6C\x75\x65\x22\x3A\x22\x31\x22\x2C\x22\x72\x65\x71\x75\x69\x72\x65\x64\x22\x3A\x74\x72\x75\x65\x7D\x5D\x7D\x7D","\x43\x61\x6C\x6C\x73\x20\x62\x79\x20\x41\x67\x65\x6E\x74","\x41\x67\x65\x6E\x74\x20\x63\x61\x6C\x6C\x73\x20\x74\x69\x6D\x65\x72\x20\x48\x61\x6E\x64\x6C\x65\x20\x74\x69\x6D\x65\x3D\x20\x74\x61\x6C\x6B\x20\x74\x69\x6D\x65\x20\x2B\x20\x41\x43\x57\x20\x74\x69\x6D\x65","\x43\x61\x6C\x6C\x73\x20\x62\x79\x20\x51\x75\x65\x75\x65","\x51\x75\x65\x75\x65\x20\x74\x69\x6D\x65\x72\x20\x48\x61\x6E\x64\x6C\x65\x20\x54\x69\x6D\x65\x3D\x20\x54\x61\x6C\x6B\x20\x54\x69\x6D\x65\x20\x2B\x20\x41\x56\x47\x20\x54\x49\x6D\x65","\x41\x6E\x73\x77\x65\x72\x20\x54\x69\x6D\x65\x20\x62\x79\x20\x51\x75\x65\x75\x65","\x51\x75\x65\x75\x65\x73\x20\x61\x6E\x73\x77\x65\x72\x20\x74\x69\x6D\x65\x20\x70\x65\x72\x66\x6F\x72\x6D\x61\x6E\x63\x65","\x44\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74\x69\x6F\x6E\x20\x43\x61\x75\x73\x65","\x53\x75\x6D\x6D\x61\x72\x79\x20\x6F\x66\x20\x74\x68\x65\x20\x63\x61\x6C\x6C\x73\x20\x63\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74\x69\x6F\x6E\x20\x63\x61\x75\x73\x65\x73","\x41\x6E\x73\x77\x65\x72\x20\x54\x69\x6D\x65\x20\x62\x79\x20\x48\x6F\x75\x72","\x41\x6E\x73\x77\x65\x72\x20\x74\x69\x6D\x65\x20\x20\x62\x79\x20\x68\x6F\x75\x72","\x44\x65\x74\x61\x69\x6C\x65\x64\x20\x72\x65\x70\x6F\x72\x74\x20\x61\x62\x6F\x75\x74\x20\x74\x68\x65\x20\x75\x6E\x61\x6E\x73\x77\x65\x72\x65\x64\x20\x63\x61\x6C\x6C\x73","\x6A\x36\x30\x5F\x32","\x7B\x22\x67\x72\x6F\x75\x70\x22\x3A\x7B\x22\x6F\x70\x65\x72\x61\x74\x6F\x72\x22\x3A\x22\x41\x4E\x44\x22\x2C\x22\x72\x75\x6C\x65\x73\x22\x3A\x5B\x7B\x22\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x22\x3A\x22\x3D\x22\x2C\x22\x66\x69\x65\x6C\x64\x22\x3A\x22\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x63\x6F\x6D\x70\x6C\x65\x74\x65\x22\x2C\x22\x76\x61\x6C\x75\x65\x22\x3A\x22\x30\x22\x2C\x22\x72\x65\x71\x75\x69\x72\x65\x64\x22\x3A\x74\x72\x75\x65\x7D\x5D\x7D\x7D","\x55\x6E\x61\x6E\x73\x77\x65\x72\x65\x64\x20\x62\x79\x20\x51\x75\x65\x75\x65","\x55\x6E\x61\x6E\x73\x77\x65\x72\x65\x64\x20\x63\x61\x6C\x6C\x73\x20\x73\x75\x6D\x6D\x61\x72\x79\x20\x62\x79\x20\x71\x75\x65\x75\x65","\x55\x6E\x6D\x61\x6E\x61\x67\x65\x64\x20\x63\x61\x6C\x6C\x73","\x55\x6E\x6D\x61\x6E\x61\x67\x65\x64\x20\x63\x61\x6C\x6C\x73\x20\x73\x75\x6D\x6D\x61\x72\x79","\x7B\x22\x67\x72\x6F\x75\x70\x22\x3A\x7B\x22\x6F\x70\x65\x72\x61\x74\x6F\x72\x22\x3A\x22\x41\x4E\x44\x22\x2C\x22\x72\x75\x6C\x65\x73\x22\x3A\x5B\x7B\x22\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x22\x3A\x22\x3D\x22\x2C\x22\x66\x69\x65\x6C\x64\x22\x3A\x22\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x65\x78\x69\x74\x22\x2C\x22\x76\x61\x6C\x75\x65\x22\x3A\x22\x31\x22\x2C\x22\x72\x65\x71\x75\x69\x72\x65\x64\x22\x3A\x74\x72\x75\x65\x7D\x5D\x7D\x7D","\x41\x62\x61\x6E\x64\x6F\x6E\x20\x54\x69\x6D\x65\x20\x62\x79\x20\x51\x75\x65\x75\x65","\x41\x62\x61\x6E\x64\x6F\x6E\x20\x74\x69\x6D\x65\x20\x70\x65\x72\x66\x6F\x72\x6D\x61\x6E\x63\x65\x20\x62\x79\x20\x71\x75\x65\x75\x65","\x7B\x22\x67\x72\x6F\x75\x70\x22\x3A\x7B\x22\x6F\x70\x65\x72\x61\x74\x6F\x72\x22\x3A\x22\x41\x4E\x44\x22\x2C\x22\x72\x75\x6C\x65\x73\x22\x3A\x5B\x7B\x22\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x22\x3A\x22\x3D\x22\x2C\x22\x66\x69\x65\x6C\x64\x22\x3A\x22\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x61\x62\x61\x6E\x64\x6F\x6E\x22\x2C\x22\x76\x61\x6C\x75\x65\x22\x3A\x22\x31\x22\x2C\x22\x72\x65\x71\x75\x69\x72\x65\x64\x22\x3A\x74\x72\x75\x65\x7D\x5D\x7D\x7D","\x43\x61\x6C\x6C\x73\x20\x62\x79\x20\x44\x61\x74\x65","\x51\x75\x65\x75\x65\x20\x63\x61\x6C\x6C\x73\x20\x73\x75\x6D\x6D\x61\x72\x79\x20\x62\x79\x20\x64\x61\x74\x65","\x6A\x36\x30\x5F\x33","\x43\x61\x6C\x6C\x73\x20\x62\x79\x20\x48\x6F\x75\x72","\x43\x61\x6C\x6C\x73\x20\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6F\x6E\x20\x62\x79\x20\x68\x6F\x75\x72","\x43\x61\x6C\x6C\x73\x20\x62\x79\x20\x44\x61\x79","\x43\x61\x6C\x6C\x73\x20\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6F\x6E\x20\x62\x79\x20\x64\x61\x79\x20\x6F\x66\x20\x74\x68\x65\x20\x6D\x6F\x6E\x74\x68","\x43\x61\x6C\x6C\x73\x20\x62\x79\x20\x57\x65\x65\x6B\x64\x61\x79","\x43\x61\x6C\x6C\x73\x20\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6F\x6E\x20\x62\x79\x20\x64\x61\x79\x20\x6F\x66\x20\x74\x68\x65\x20\x77\x65\x65\x6B","\x53\x75\x6D\x6D\x61\x72\x79","\x43\x61\x6C\x6C\x73\x20\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6F\x6E\x20\x62\x79\x20\x71\x75\x65\x75\x65","\x43\x61\x6C\x6C\x73\x20\x64\x65\x74\x61\x69\x6C\x20\x28\x63\x64\x72\x29","\x6A\x35\x31\x5F\x31","\x4F\x75\x74\x62\x6F\x75\x6E\x64","\x4D\x61\x6E\x75\x61\x6C\x20\x6F\x75\x74\x62\x6F\x75\x6E\x64\x20\x63\x61\x6C\x6C\x73\x20\x64\x65\x74\x61\x69\x6C\x65\x64\x20\x72\x65\x70\x6F\x72\x74","\x7B\x22\x67\x72\x6F\x75\x70\x22\x3A\x7B\x22\x6F\x70\x65\x72\x61\x74\x6F\x72\x22\x3A\x22\x41\x4E\x44\x22\x2C\x22\x72\x75\x6C\x65\x73\x22\x3A\x5B\x7B\x22\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x22\x3A\x22\x3D\x22\x2C\x22\x66\x69\x65\x6C\x64\x22\x3A\x22\x74\x79\x70\x65\x22\x2C\x22\x76\x61\x6C\x75\x65\x22\x3A\x22\x27\x6F\x75\x74\x62\x6F\x75\x6E\x64\x27\x22\x2C\x22\x72\x65\x71\x75\x69\x72\x65\x64\x22\x3A\x74\x72\x75\x65\x7D\x5D\x7D\x7D","\x43\x61\x6C\x6C\x73\x20\x62\x79\x20\x54\x79\x70\x65","\x53\x75\x6D\x6D\x61\x72\x79\x20\x72\x65\x70\x6F\x72\x74\x20\x6F\x66\x20\x74\x68\x65\x20\x63\x61\x6C\x6C\x73\x20\x74\x79\x70\x65","\x4F\x75\x74\x62\x6F\x75\x6E\x64\x20\x43\x61\x6C\x6C\x73\x20\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x4F\x75\x74\x62\x6F\x75\x6E\x64\x20\x63\x61\x6C\x6C\x73\x20\x67\x72\x6F\x75\x70\x65\x64\x20\x62\x79\x20\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x4F\x75\x74\x62\x6F\x75\x6E\x64\x20\x43\x61\x6C\x6C\x73\x20\x62\x79\x20\x41\x67\x65\x6E\x74","\x53\x75\x6D\x6D\x61\x72\x79\x20\x6F\x66\x20\x6F\x75\x74\x62\x6F\x75\x6E\x64\x20\x63\x61\x6C\x6C\x73\x20\x67\x72\x6F\x75\x70\x65\x64\x20\x62\x79\x20\x61\x67\x65\x6E\x74","\x4F\x75\x74\x62\x6F\x75\x6E\x64\x20\x43\x61\x6C\x6C\x73\x20\x62\x79\x20\x44\x61\x74\x65","\x53\x75\x6D\x6D\x61\x72\x79\x20\x6F\x66\x20\x6F\x75\x74\x62\x6F\x75\x6E\x64\x20\x63\x61\x6C\x6C\x73\x20\x67\x72\x6F\x75\x70\x65\x64\x20\x62\x79\x20\x64\x61\x74\x65","\x4C\x6F\x67\x69\x6E\x20\x54\x69\x6D\x65","\x41\x67\x65\x6E\x74\x27\x73\x20\x6C\x6F\x67\x69\x6E\x20\x74\x69\x6D\x65","\x6A\x31\x32\x5F\x35","\x72\x65\x70\x6F\x72\x74\x5F\x6D\x65\x6D\x62\x65\x72\x5F\x68\x69\x73\x74\x6F\x72\x79","\x7B\x22\x67\x72\x6F\x75\x70\x22\x3A\x7B\x22\x6F\x70\x65\x72\x61\x74\x6F\x72\x22\x3A\x22\x41\x4E\x44\x22\x2C\x22\x72\x75\x6C\x65\x73\x22\x3A\x5B\x7B\x22\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x22\x3A\x22\x3D\x22\x2C\x22\x66\x69\x65\x6C\x64\x22\x3A\x22\x74\x79\x70\x65\x22\x2C\x22\x76\x61\x6C\x75\x65\x22\x3A\x22\x27\x4C\x4F\x47\x49\x4E\x27\x22\x2C\x22\x72\x65\x71\x75\x69\x72\x65\x64\x22\x3A\x74\x72\x75\x65\x7D\x2C\x7B\x22\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x22\x3A\x22\x3D\x22\x2C\x22\x66\x69\x65\x6C\x64\x22\x3A\x22\x63\x68\x61\x6E\x6E\x65\x6C\x22\x2C\x22\x76\x61\x6C\x75\x65\x22\x3A\x22\x27\x76\x6F\x69\x63\x65\x27\x22\x2C\x22\x72\x65\x71\x75\x69\x72\x65\x64\x22\x3A\x74\x72\x75\x65\x7D\x5D\x7D\x7D","\x41\x63\x74\x69\x76\x69\x74\x69\x65\x73\x20\x53\x75\x6D\x6D\x61\x72\x79","\x41\x67\x65\x6E\x74\x27\x73\x20\x61\x63\x74\x69\x76\x69\x74\x69\x65\x73\x20\x72\x65\x70\x6F\x72\x74","\x6A\x38\x37\x5F\x31","\x7B\x22\x67\x72\x6F\x75\x70\x22\x3A\x7B\x22\x6F\x70\x65\x72\x61\x74\x6F\x72\x22\x3A\x22\x41\x4E\x44\x22\x2C\x22\x72\x75\x6C\x65\x73\x22\x3A\x5B\x7B\x22\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x22\x3A\x22\x3D\x22\x2C\x22\x66\x69\x65\x6C\x64\x22\x3A\x22\x63\x68\x61\x6E\x6E\x65\x6C\x22\x2C\x22\x76\x61\x6C\x75\x65\x22\x3A\x22\x27\x76\x6F\x69\x63\x65\x27\x22\x2C\x22\x72\x65\x71\x75\x69\x72\x65\x64\x22\x3A\x74\x72\x75\x65\x7D\x5D\x7D\x7D","\x50\x61\x75\x73\x65\x20\x44\x65\x74\x61\x69\x6C\x73","\x41\x67\x65\x6E\x74\x73\x20\x73\x74\x61\x74\x75\x73\x20\x64\x65\x74\x61\x69\x6C\x73","\x7B\x22\x67\x72\x6F\x75\x70\x22\x3A\x7B\x22\x6F\x70\x65\x72\x61\x74\x6F\x72\x22\x3A\x22\x41\x4E\x44\x22\x2C\x22\x72\x75\x6C\x65\x73\x22\x3A\x5B\x7B\x22\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x22\x3A\x22\x3D\x22\x2C\x22\x66\x69\x65\x6C\x64\x22\x3A\x22\x63\x68\x61\x6E\x6E\x65\x6C\x22\x2C\x22\x76\x61\x6C\x75\x65\x22\x3A\x22\x27\x76\x6F\x69\x63\x65\x27\x22\x2C\x22\x72\x65\x71\x75\x69\x72\x65\x64\x22\x3A\x74\x72\x75\x65\x7D\x2C\x7B\x22\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x22\x3A\x22\x3D\x22\x2C\x22\x66\x69\x65\x6C\x64\x22\x3A\x22\x74\x79\x70\x65\x22\x2C\x22\x76\x61\x6C\x75\x65\x22\x3A\x22\x27\x50\x41\x55\x53\x45\x27\x22\x2C\x22\x72\x65\x71\x75\x69\x72\x65\x64\x22\x3A\x74\x72\x75\x65\x7D\x5D\x7D\x7D","\x41\x67\x65\x6E\x74\x27\x73\x20\x73\x74\x61\x74\x75\x73\x20\x64\x65\x74\x61\x69\x6C","\x50\x61\x75\x73\x65\x20\x54\x69\x6D\x65","\x41\x67\x65\x6E\x74\x27\x73\x20\x70\x61\x75\x73\x65\x20\x74\x69\x6D\x65","\x7B\x22\x67\x72\x6F\x75\x70\x22\x3A\x7B\x22\x6F\x70\x65\x72\x61\x74\x6F\x72\x22\x3A\x22\x41\x4E\x44\x22\x2C\x22\x72\x75\x6C\x65\x73\x22\x3A\x5B\x7B\x22\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x22\x3A\x22\x3D\x22\x2C\x22\x66\x69\x65\x6C\x64\x22\x3A\x22\x74\x79\x70\x65\x22\x2C\x22\x76\x61\x6C\x75\x65\x22\x3A\x22\x27\x50\x41\x55\x53\x45\x27\x22\x2C\x22\x72\x65\x71\x75\x69\x72\x65\x64\x22\x3A\x74\x72\x75\x65\x7D\x2C\x7B\x22\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x22\x3A\x22\x3D\x22\x2C\x22\x66\x69\x65\x6C\x64\x22\x3A\x22\x63\x68\x61\x6E\x6E\x65\x6C\x22\x2C\x22\x76\x61\x6C\x75\x65\x22\x3A\x22\x27\x76\x6F\x69\x63\x65\x27\x22\x2C\x22\x72\x65\x71\x75\x69\x72\x65\x64\x22\x3A\x74\x72\x75\x65\x7D\x5D\x7D\x7D","\x43\x61\x6C\x6C\x79\x53\x71\x75\x61\x72\x65\x20\x53\x75\x6D\x6D\x61\x72\x79","\x6A\x38\x37\x5F\x32","\x72\x65\x70\x6F\x72\x74\x5F\x73\x71\x75\x61\x72\x65\x5F\x68\x69\x73\x74\x6F\x72\x79","\x42\x6C\x6F\x63\x6B\x73","\x43\x61\x6C\x6C\x79\x53\x71\x75\x61\x72\x65\x20\x42\x6C\x6F\x63\x6B\x73\x20\x44\x65\x74\x61\x69\x6C","\x72\x65\x70\x6F\x72\x74\x5F\x73\x71\x75\x61\x72\x65\x5F\x64\x65\x74\x61\x69\x6C\x73\x5F\x68\x69\x73\x74\x6F\x72\x79","\x52\x65\x63\x65\x69\x76\x65\x64\x20\x65\x6D\x61\x69\x6C\x73\x20\x62\x79\x20\x61\x63\x63\x6F\x75\x6E\x74","\x53\x75\x6D\x6D\x61\x72\x79\x20\x6F\x66\x20\x74\x68\x65\x20\x65\x6D\x61\x69\x6C\x73\x20\x61\x63\x63\x65\x70\x74\x65\x64\x20\x62\x79\x20\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x20\x66\x6F\x72\x20\x65\x61\x63\x68\x20\x61\x63\x63\x6F\x75\x6E\x74","\x6A\x31\x32\x5F\x34","\x72\x65\x70\x6F\x72\x74\x5F\x6D\x61\x69\x6C\x5F\x73\x65\x73\x73\x69\x6F\x6E\x5F\x68\x69\x73\x74\x6F\x72\x79","\x52\x61\x74\x69\x6E\x67\x20\x62\x79\x20\x41\x67\x65\x6E\x74","\x52\x65\x63\x6F\x72\x64\x73\x20\x72\x61\x74\x69\x6E\x67\x20\x62\x79\x20\x61\x67\x65\x6E\x74","\x6A\x31\x31\x30\x5F\x31","\x76\x6F\x69\x63\x65\x5F\x72\x65\x63\x6F\x72\x64\x69\x6E\x67\x73","\x7B\x22\x67\x72\x6F\x75\x70\x22\x3A\x7B\x22\x6F\x70\x65\x72\x61\x74\x6F\x72\x22\x3A\x22\x41\x4E\x44\x22\x2C\x22\x72\x75\x6C\x65\x73\x22\x3A\x5B\x7B\x22\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x22\x3A\x22\x26\x67\x74\x3B\x22\x2C\x22\x66\x69\x65\x6C\x64\x22\x3A\x22\x72\x61\x74\x69\x6E\x67\x22\x2C\x22\x76\x61\x6C\x75\x65\x22\x3A\x22\x30\x22\x2C\x22\x72\x65\x71\x75\x69\x72\x65\x64\x22\x3A\x74\x72\x75\x65\x7D\x5D\x7D\x7D","\x52\x61\x74\x69\x6E\x67\x20\x62\x79\x20\x51\x75\x65\x75\x65","\x52\x65\x63\x6F\x72\x64\x73\x20\x72\x61\x74\x69\x6E\x67\x20\x62\x79\x20\x71\x75\x65\x75\x65","\x7B\x22\x67\x72\x6F\x75\x70\x22\x3A\x7B\x22\x6F\x70\x65\x72\x61\x74\x6F\x72\x22\x3A\x22\x41\x4E\x44\x22\x2C\x22\x72\x75\x6C\x65\x73\x22\x3A\x5B\x7B\x22\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x22\x3A\x22\x49\x53\x20\x4E\x4F\x54\x20\x4E\x55\x4C\x4C\x22\x2C\x22\x66\x69\x65\x6C\x64\x22\x3A\x22\x71\x75\x65\x75\x65\x22\x2C\x22\x76\x61\x6C\x75\x65\x22\x3A\x22\x22\x2C\x22\x72\x65\x71\x75\x69\x72\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x7D\x2C\x7B\x22\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x22\x3A\x22\x26\x67\x74\x3B\x22\x2C\x22\x66\x69\x65\x6C\x64\x22\x3A\x22\x72\x61\x74\x69\x6E\x67\x22\x2C\x22\x76\x61\x6C\x75\x65\x22\x3A\x22\x30\x22\x2C\x22\x72\x65\x71\x75\x69\x72\x65\x64\x22\x3A\x74\x72\x75\x65\x7D\x5D\x7D\x7D","\x57\x65\x62\x73\x69\x74\x65\x20\x53\x75\x6D\x6D\x61\x72\x79","\x43\x68\x61\x74\x20\x73\x65\x73\x73\x69\x6F\x6E\x20\x69\x6E\x66\x6F\x72\x6D\x61\x74\x69\x6F\x6E\x20\x62\x79\x20\x77\x65\x62\x73\x69\x74\x65","\x6A\x31\x32\x5F\x33","\x72\x65\x70\x6F\x72\x74\x5F\x63\x68\x61\x74\x5F\x73\x65\x73\x73\x69\x6F\x6E\x5F\x68\x69\x73\x74\x6F\x72\x79","\x53\x65\x73\x73\x69\x6F\x6E\x20\x44\x65\x74\x61\x69\x6C","\x44\x65\x74\x61\x69\x6C\x65\x64\x20\x72\x65\x70\x6F\x72\x74\x20\x61\x62\x6F\x75\x74\x20\x63\x68\x61\x74\x20\x73\x65\x73\x73\x69\x6F\x6E","\x43\x68\x61\x74\x20\x62\x79\x20\x41\x67\x65\x6E\x74","\x53\x65\x73\x73\x69\x6F\x6E\x20\x63\x68\x61\x74\x20\x62\x79\x20\x61\x67\x65\x6E\x74","\x7B\x22\x67\x72\x6F\x75\x70\x22\x3A\x7B\x22\x6F\x70\x65\x72\x61\x74\x6F\x72\x22\x3A\x22\x41\x4E\x44\x22\x2C\x22\x72\x75\x6C\x65\x73\x22\x3A\x5B\x7B\x22\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x22\x3A\x22\x3D\x22\x2C\x22\x66\x69\x65\x6C\x64\x22\x3A\x22\x63\x6F\x6D\x70\x6C\x65\x74\x65\x22\x2C\x22\x76\x61\x6C\x75\x65\x22\x3A\x22\x31\x22\x2C\x22\x72\x65\x71\x75\x69\x72\x65\x64\x22\x3A\x74\x72\x75\x65\x7D\x5D\x7D\x7D","\x43\x68\x61\x74\x20\x62\x79\x20\x51\x75\x65\x75\x65","\x43\x68\x61\x74\x20\x73\x65\x73\x73\x69\x6F\x6E\x73\x20\x62\x79\x20\x71\x75\x65\x75\x65","\x7B\x22\x67\x72\x6F\x75\x70\x22\x3A\x7B\x22\x6F\x70\x65\x72\x61\x74\x6F\x72\x22\x3A\x22\x41\x4E\x44\x22\x2C\x22\x72\x75\x6C\x65\x73\x22\x3A\x5B\x7B\x22\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x22\x3A\x22\x3D\x22\x2C\x22\x66\x69\x65\x6C\x64\x22\x3A\x22\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x22\x2C\x22\x76\x61\x6C\x75\x65\x22\x3A\x22\x27\x71\x75\x65\x75\x65\x27\x22\x2C\x22\x72\x65\x71\x75\x69\x72\x65\x64\x22\x3A\x74\x72\x75\x65\x7D\x5D\x7D\x7D","\x43\x68\x61\x74\x20\x62\x79\x20\x44\x61\x74\x65","\x53\x65\x73\x73\x69\x6F\x6E\x20\x63\x68\x61\x74\x20\x62\x79\x20\x64\x61\x74\x65","\x52\x65\x63\x65\x69\x76\x65\x64\x20\x65\x6D\x61\x69\x6C\x73\x20\x62\x79\x20\x71\x75\x65\x75\x65","\x53\x75\x6D\x6D\x61\x72\x79\x20\x6F\x66\x20\x72\x65\x63\x65\x69\x76\x65\x64\x20\x65\x6D\x61\x69\x6C\x20\x62\x79\x20\x71\x75\x65\x75\x65","\x41\x63\x63\x65\x70\x74\x65\x64\x20\x65\x6D\x61\x69\x6C\x73\x20\x62\x79\x20\x61\x67\x65\x6E\x74","\x53\x75\x6D\x6D\x61\x72\x79\x20\x6F\x66\x20\x61\x63\x63\x65\x70\x74\x65\x64\x20\x65\x6D\x61\x69\x6C\x20\x62\x79\x20\x61\x67\x65\x6E\x74","\x7B\x22\x67\x72\x6F\x75\x70\x22\x3A\x7B\x22\x6F\x70\x65\x72\x61\x74\x6F\x72\x22\x3A\x22\x41\x4E\x44\x22\x2C\x22\x72\x75\x6C\x65\x73\x22\x3A\x5B\x7B\x22\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x22\x3A\x22\x3D\x22\x2C\x22\x66\x69\x65\x6C\x64\x22\x3A\x22\x74\x69\x6D\x65\x6F\x75\x74\x22\x2C\x22\x76\x61\x6C\x75\x65\x22\x3A\x22\x30\x22\x2C\x22\x72\x65\x71\x75\x69\x72\x65\x64\x22\x3A\x74\x72\x75\x65\x7D\x5D\x7D\x7D","\x4D\x65\x73\x73\x61\x67\x65\x73\x20\x53\x75\x6D\x6D\x61\x72\x79\x20\x62\x79\x20\x44\x61\x74\x65","\x47\x6C\x6F\x62\x61\x6C\x20\x6D\x65\x73\x73\x61\x67\x65\x73\x20\x73\x75\x6D\x6D\x61\x72\x79\x20\x62\x79\x20\x64\x61\x74\x65","\x6D\x61\x69\x6C\x5F\x6D\x65\x73\x73\x61\x67\x65\x73","\x49\x6E\x74\x65\x72\x61\x63\x74\x69\x6F\x6E\x73\x20\x64\x65\x74\x61\x69\x6C","\x44\x65\x74\x61\x69\x6C\x65\x64\x20\x72\x65\x70\x6F\x72\x74\x20\x61\x62\x6F\x75\x74\x20\x74\x68\x65\x20\x69\x6E\x74\x65\x72\x61\x63\x74\x69\x6F\x6E\x73","\x6D\x61\x69\x6C\x5F\x72\x6F\x6F\x6D\x73","\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x20\x53\x75\x6D\x6D\x61\x72\x79","\x43\x6C\x6F\x73\x65\x64\x20\x69\x6E\x74\x65\x72\x61\x63\x74\x69\x6F\x6E\x73\x20\x62\x79\x20\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x20\x28\x66\x69\x6C\x74\x65\x72\x65\x64\x20\x62\x79\x20\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x20\x6E\x6F\x74\x20\x6E\x75\x6C\x6C\x29","\x7B\x22\x67\x72\x6F\x75\x70\x22\x3A\x7B\x22\x6F\x70\x65\x72\x61\x74\x6F\x72\x22\x3A\x22\x41\x4E\x44\x22\x2C\x22\x72\x75\x6C\x65\x73\x22\x3A\x5B\x7B\x22\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x22\x3A\x22\x49\x53\x20\x4E\x4F\x54\x20\x4E\x55\x4C\x4C\x22\x2C\x22\x66\x69\x65\x6C\x64\x22\x3A\x22\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x22\x2C\x22\x76\x61\x6C\x75\x65\x22\x3A\x22\x22\x2C\x22\x72\x65\x71\x75\x69\x72\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x7D\x5D\x7D\x7D","\x43\x6C\x6F\x73\x65\x64\x20\x69\x6E\x74\x65\x72\x61\x63\x74\x69\x6F\x6E\x73\x20\x62\x79\x20\x64\x61\x74\x65","\x53\x75\x6D\x6D\x61\x72\x79\x20\x6F\x66\x20\x63\x6C\x6F\x73\x65\x64\x20\x69\x6E\x74\x65\x72\x61\x63\x74\x69\x6F\x6E\x73\x20\x67\x72\x6F\x75\x70\x65\x64\x20\x62\x79\x20\x64\x61\x74\x65\x20\x2B\x20\x61\x76\x65\x72\x61\x67\x65\x20\x68\x61\x6E\x64\x6C\x65\x20\x74\x69\x6D\x65\x20\x28\x66\x72\x6F\x6D\x20\x77\x68\x65\x6E\x20\x74\x68\x65\x20\x66\x69\x72\x73\x74\x20\x65\x6D\x61\x69\x6C\x20\x61\x72\x72\x69\x76\x65\x64\x20\x74\x6F\x20\x77\x68\x65\x6E\x20\x74\x68\x65\x20\x69\x6E\x74\x65\x72\x61\x63\x74\x69\x6F\x6E\x20\x68\x61\x73\x20\x62\x65\x65\x6E\x20\x63\x6C\x6F\x73\x65\x64\x29","\x7B\x22\x67\x72\x6F\x75\x70\x22\x3A\x7B\x22\x6F\x70\x65\x72\x61\x74\x6F\x72\x22\x3A\x22\x4F\x52\x22\x2C\x22\x72\x75\x6C\x65\x73\x22\x3A\x5B\x7B\x22\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x22\x3A\x22\x3D\x22\x2C\x22\x66\x69\x65\x6C\x64\x22\x3A\x22\x73\x74\x61\x74\x75\x73\x22\x2C\x22\x76\x61\x6C\x75\x65\x22\x3A\x22\x27\x43\x4C\x4F\x53\x45\x44\x27\x22\x2C\x22\x72\x65\x71\x75\x69\x72\x65\x64\x22\x3A\x74\x72\x75\x65\x7D\x5D\x7D\x7D","\x6A\x31\x32\x5F\x36","\x73\x6D\x73\x5F\x6D\x65\x73\x73\x61\x67\x65\x73","\x6A\x34\x5F\x31\x30","\x72\x65\x70\x6F\x72\x74\x5F\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x5F\x68\x69\x73\x74\x6F\x72\x79","\x75\x6E\x69\x71\x75\x65\x69\x64","\x55\x6E\x69\x71\x75\x65\x49\x64","\x63\x61\x6C\x6C\x65\x72\x69\x64\x6E\x75\x6D","\x43\x61\x6C\x6C\x65\x72\x49\x64\x4E\x75\x6D","\x63\x61\x6C\x6C\x65\x72\x69\x64\x6E\x61\x6D\x65","\x43\x61\x6C\x6C\x65\x72\x49\x64\x4E\x61\x6D\x65","\x71\x75\x65\x75\x65","\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6A\x6F\x69\x6E\x41\x74","\x51\x75\x65\x75\x65\x4A\x6F\x69\x6E\x41\x74","\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6C\x65\x61\x76\x65\x41\x74","\x51\x75\x65\x75\x65\x4C\x65\x61\x76\x65\x41\x74","\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x61\x62\x61\x6E\x64\x6F\x6E","\x51\x75\x65\x75\x65\x41\x62\x61\x6E\x64\x6F\x6E","\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x61\x62\x61\x6E\x64\x6F\x6E\x41\x74","\x51\x75\x65\x75\x65\x41\x62\x61\x6E\x64\x6F\x6E\x41\x74","\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x63\x6F\x6D\x70\x6C\x65\x74\x65","\x43\x6F\x6D\x70\x6C\x65\x74\x65","\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x63\x6F\x6D\x70\x6C\x65\x74\x65\x41\x74","\x43\x6F\x6D\x70\x6C\x65\x74\x65\x41\x74","\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x65\x78\x69\x74","\x51\x75\x65\x75\x65\x45\x78\x69\x74","\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x65\x78\x69\x74\x41\x74","\x51\x75\x65\x75\x65\x45\x78\x69\x74\x41\x74","\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x65\x78\x69\x74\x72\x65\x61\x73\x6F\x6E","\x51\x75\x65\x75\x65\x45\x78\x69\x74\x52\x65\x61\x73\x6F\x6E","\x44\x49\x44","\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x63\x6F\x6D\x70\x6C\x65\x74\x65\x41\x74\x29\x2D\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6C\x65\x61\x76\x65\x41\x74\x29","\x54\x61\x6C\x6B\x54\x69\x6D\x65","\x53\x45\x43\x5F\x54\x4F\x5F\x54\x49\x4D\x45","\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x41\x62\x61\x6E\x64\x6F\x6E\x41\x74\x29\x2D\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6A\x6F\x69\x6E\x41\x74\x29","\x41\x62\x61\x6E\x64\x6F\x6E\x54\x69\x6D\x65","\x49\x46\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x63\x6F\x6D\x70\x6C\x65\x74\x65\x3D\x31\x2C\x68\x6F\x6C\x64\x74\x69\x6D\x65\x2C\x6E\x75\x6C\x6C\x29","\x41\x6E\x73\x77\x65\x72\x54\x69\x6D\x65","\x43\x61\x6C\x6C\x65\x72\x49\x44","\x53\x74\x61\x72\x74\x54\x69\x6D\x65","\x43\x41\x53\x45\x20\x57\x48\x45\x4E\x20\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x63\x6F\x6D\x70\x6C\x65\x74\x65\x3D\x31\x20\x54\x48\x45\x4E\x20\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x63\x6F\x6D\x70\x6C\x65\x74\x65\x41\x74\x20\x45\x4C\x53\x45\x20\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x4C\x65\x61\x76\x65\x41\x74\x20\x45\x4E\x44","\x45\x6E\x64\x54\x69\x6D\x65","\x68\x6F\x6C\x64\x74\x69\x6D\x65","\x48\x6F\x6C\x64\x54\x69\x6D\x65","\x43\x41\x53\x45\x20\x57\x48\x45\x4E\x20\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x63\x6F\x6D\x70\x6C\x65\x74\x65\x3D\x31\x20\x54\x48\x45\x4E\x20\x22\x59\x45\x53\x22\x20\x45\x4C\x53\x45\x20\x22\x4E\x4F\x22\x20\x45\x4E\x44","\x6D\x65\x6D\x62\x65\x72\x6E\x61\x6D\x65","\x41\x67\x65\x6E\x74","\x61\x67\x65\x6E\x74\x63\x61\x6C\x6C\x65\x64\x41\x74","\x41\x67\x65\x6E\x74\x43\x61\x6C\x6C\x65\x64\x41\x74","\x61\x67\x65\x6E\x74\x63\x6F\x6E\x6E\x65\x63\x74\x41\x74","\x41\x67\x65\x6E\x74\x43\x6F\x6E\x6E\x65\x63\x74\x41\x74","\x61\x67\x65\x6E\x74\x63\x6F\x6D\x70\x6C\x65\x74\x65\x41\x74","\x41\x67\x65\x6E\x74\x43\x6F\x6D\x70\x6C\x65\x74\x65\x41\x74","\x74\x61\x6C\x6B\x74\x69\x6D\x65","\x61\x67\x65\x6E\x74\x61\x63\x77","\x41\x67\x65\x6E\x74\x41\x43\x57","\x61\x63\x77\x74\x69\x6D\x65","\x41\x67\x65\x6E\x74\x41\x43\x57\x54\x69\x6D\x65","\x61\x67\x65\x6E\x74\x63\x6F\x6D\x70\x6C\x65\x74\x65","\x41\x67\x65\x6E\x74\x43\x6F\x6D\x70\x6C\x65\x74\x65","\x72\x65\x61\x73\x6F\x6E","\x48\x61\x6E\x67\x75\x70\x52\x65\x61\x73\x6F\x6E","\x6C\x61\x73\x74\x65\x76\x65\x6E\x74","\x4C\x61\x73\x74\x45\x76\x65\x6E\x74","\x43\x6F\x6D\x70\x6C\x65\x74\x65\x64","\x53\x55\x4D","\x54\x6F\x74\x54\x61\x6C\x6B\x54\x69\x6D\x65","\x54\x6F\x74\x41\x43\x57\x54\x69\x6D\x65","\x74\x61\x6C\x6B\x74\x69\x6D\x65\x20\x2B\x20\x61\x63\x77\x74\x69\x6D\x65","\x54\x6F\x74\x48\x61\x6E\x64\x6C\x65\x54\x69\x6D\x65","\x52\x4F\x55\x4E\x44\x28\x41\x56\x47\x28\x74\x61\x6C\x6B\x74\x69\x6D\x65\x29\x29","\x41\x76\x67\x54\x61\x6C\x6B\x54\x69\x6D\x65","\x52\x4F\x55\x4E\x44\x28\x41\x56\x47\x28\x61\x63\x77\x74\x69\x6D\x65\x29\x29","\x41\x76\x67\x41\x43\x57\x54\x69\x6D\x65","\x52\x4F\x55\x4E\x44\x28\x53\x55\x4D\x28\x74\x61\x6C\x6B\x74\x69\x6D\x65\x20\x2B\x20\x61\x63\x77\x74\x69\x6D\x65\x29\x2F\x43\x4F\x55\x4E\x54\x28\x61\x67\x65\x6E\x74\x63\x6F\x6D\x70\x6C\x65\x74\x65\x29\x29","\x41\x76\x67\x48\x61\x6E\x64\x6C\x65\x54\x69\x6D\x65","\x54\x6F\x74\x20\x54\x61\x6C\x6B\x54\x69\x6D\x65","\x54\x6F\x74\x20\x48\x6F\x6C\x64\x54\x69\x6D\x65","\x54\x6F\x74\x20\x41\x43\x57\x54\x69\x6D\x65","\x54\x6F\x74\x20\x48\x61\x6E\x64\x6C\x65\x20\x54\x69\x6D\x65","\x41\x76\x67\x20\x54\x61\x6C\x6B\x54\x69\x6D\x65","\x52\x4F\x55\x4E\x44\x28\x41\x56\x47\x28\x68\x6F\x6C\x64\x74\x69\x6D\x65\x29\x29","\x41\x76\x67\x20\x48\x6F\x6C\x64\x54\x69\x6D\x65","\x41\x76\x67\x20\x41\x43\x57\x54\x69\x6D\x65","\x41\x76\x67\x20\x48\x61\x6E\x64\x6C\x65\x20\x54\x69\x6D\x65","\x54\x6F\x74\x20\x41\x6E\x73\x77\x65\x72\x65\x64","\x43\x4F\x55\x4E\x54\x28\x49\x46\x28\x68\x6F\x6C\x64\x74\x69\x6D\x65\x26\x6C\x74\x3B\x31\x30\x2C\x31\x2C\x4E\x55\x4C\x4C\x29\x29","\x41\x6E\x73\x77\x65\x72\x65\x64\x20\x26\x6C\x74\x3B\x31\x30\x73","\x52\x4F\x55\x4E\x44\x28\x43\x4F\x55\x4E\x54\x28\x49\x46\x28\x68\x6F\x6C\x64\x74\x69\x6D\x65\x26\x6C\x74\x3B\x31\x30\x2C\x31\x2C\x4E\x55\x4C\x4C\x29\x29\x20\x2F\x20\x53\x55\x4D\x28\x61\x67\x65\x6E\x74\x63\x6F\x6D\x70\x6C\x65\x74\x65\x29\x20\x2A\x31\x30\x30\x2C\x31\x29","\x41\x6E\x73\x77\x65\x72\x20\x52\x61\x74\x65\x20\x26\x6C\x74\x3B\x31\x30\x73","\x43\x4F\x55\x4E\x54\x28\x49\x46\x28\x68\x6F\x6C\x64\x74\x69\x6D\x65\x20\x26\x67\x74\x3B\x3D\x31\x30\x20\x41\x4E\x44\x20\x68\x6F\x6C\x64\x74\x69\x6D\x65\x20\x26\x6C\x74\x3B\x32\x30\x2C\x31\x2C\x4E\x55\x4C\x4C\x29\x29","\x41\x6E\x73\x77\x65\x72\x65\x64\x20\x31\x30\x2D\x32\x30\x73","\x52\x4F\x55\x4E\x44\x28\x43\x4F\x55\x4E\x54\x28\x49\x46\x28\x68\x6F\x6C\x64\x74\x69\x6D\x65\x20\x26\x67\x74\x3B\x3D\x31\x30\x20\x41\x4E\x44\x20\x68\x6F\x6C\x64\x74\x69\x6D\x65\x20\x26\x6C\x74\x3B\x32\x30\x2C\x31\x2C\x4E\x55\x4C\x4C\x29\x29\x20\x2F\x20\x53\x55\x4D\x28\x61\x67\x65\x6E\x74\x63\x6F\x6D\x70\x6C\x65\x74\x65\x29\x20\x2A\x31\x30\x30\x2C\x31\x29","\x41\x6E\x73\x77\x65\x72\x20\x52\x61\x74\x65\x20\x31\x30\x2D\x32\x30\x73","\x43\x4F\x55\x4E\x54\x28\x49\x46\x28\x68\x6F\x6C\x64\x74\x69\x6D\x65\x20\x26\x67\x74\x3B\x3D\x32\x30\x20\x41\x4E\x44\x20\x68\x6F\x6C\x64\x74\x69\x6D\x65\x20\x26\x6C\x74\x3B\x33\x30\x2C\x31\x2C\x4E\x55\x4C\x4C\x29\x29","\x41\x6E\x73\x77\x65\x72\x65\x64\x20\x32\x30\x2D\x33\x30\x73","\x52\x4F\x55\x4E\x44\x28\x43\x4F\x55\x4E\x54\x28\x49\x46\x28\x68\x6F\x6C\x64\x74\x69\x6D\x65\x20\x26\x67\x74\x3B\x3D\x32\x30\x20\x41\x4E\x44\x20\x68\x6F\x6C\x64\x74\x69\x6D\x65\x20\x26\x6C\x74\x3B\x33\x30\x2C\x31\x2C\x4E\x55\x4C\x4C\x29\x29\x20\x2F\x20\x53\x55\x4D\x28\x61\x67\x65\x6E\x74\x63\x6F\x6D\x70\x6C\x65\x74\x65\x29\x20\x2A\x31\x30\x30\x2C\x31\x29","\x41\x6E\x73\x77\x65\x72\x20\x52\x61\x74\x65\x20\x32\x30\x2D\x33\x30\x73","\x43\x4F\x55\x4E\x54\x28\x49\x46\x28\x68\x6F\x6C\x64\x74\x69\x6D\x65\x20\x26\x67\x74\x3B\x3D\x33\x30\x2C\x31\x2C\x4E\x55\x4C\x4C\x29\x29","\x41\x6E\x73\x77\x65\x72\x65\x64\x20\x26\x67\x74\x3B\x33\x30\x73","\x52\x4F\x55\x4E\x44\x28\x43\x4F\x55\x4E\x54\x28\x49\x46\x28\x68\x6F\x6C\x64\x74\x69\x6D\x65\x20\x26\x67\x74\x3B\x3D\x33\x30\x2C\x31\x2C\x4E\x55\x4C\x4C\x29\x29\x20\x2F\x20\x53\x55\x4D\x28\x61\x67\x65\x6E\x74\x63\x6F\x6D\x70\x6C\x65\x74\x65\x29\x20\x2A\x31\x30\x30\x2C\x31\x29","\x41\x6E\x73\x77\x65\x72\x20\x52\x61\x74\x65\x20\x26\x67\x74\x3B\x33\x30\x73","\x52\x65\x61\x73\x6F\x6E","\x43\x4F\x55\x4E\x54","\x48\x6F\x75\x72","\x48\x4F\x55\x52","\x4A\x6F\x69\x6E\x41\x74","\x4C\x65\x61\x76\x65\x41\x74","\x41\x62\x61\x6E\x64\x6F\x6E","\x41\x62\x61\x6E\x64\x6F\x6E\x41\x74","\x55\x6E\x6D\x61\x6E\x61\x67\x65\x64\x41\x74","\x55\x6E\x6D\x61\x6E\x61\x67\x65\x64\x52\x65\x61\x73\x6F\x6E","\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x51\x75\x65\x75\x65\x50\x6F\x73\x69\x74\x69\x6F\x6E","\x41\x62\x61\x6E\x64\x6F\x6E\x20\x54\x69\x6D\x65","\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x45\x78\x69\x74\x41\x74\x29\x2D\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6A\x6F\x69\x6E\x41\x74\x29","\x55\x6E\x6D\x61\x6E\x61\x67\x65\x64\x20\x48\x6F\x6C\x64\x54\x69\x6D\x65","\x41\x62\x61\x6E\x64\x6F\x6E\x65\x64","\x54\x6F\x74\x20\x41\x62\x61\x6E\x64\x6F\x6E\x54\x69\x6D\x65","\x52\x4F\x55\x4E\x44\x28\x41\x56\x47\x28\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x41\x62\x61\x6E\x64\x6F\x6E\x41\x74\x29\x2D\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6A\x6F\x69\x6E\x41\x74\x29\x29\x29","\x41\x76\x67\x41\x62\x61\x6E\x64\x6F\x6E\x54\x69\x6D\x65","\x54\x6F\x74\x20\x55\x6E\x6D\x61\x6E\x61\x67\x65\x64\x20\x54\x69\x6D\x65","\x52\x4F\x55\x4E\x44\x28\x41\x56\x47\x28\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x45\x78\x69\x74\x41\x74\x29\x2D\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6A\x6F\x69\x6E\x41\x74\x29\x29\x29","\x41\x76\x67\x20\x55\x6E\x6D\x61\x6E\x61\x67\x65\x64\x20\x54\x49\x6D\x65","\x54\x6F\x74\x20\x41\x62\x61\x6E\x64\x6F\x6E\x65\x64","\x43\x4F\x55\x4E\x54\x28\x49\x46\x28\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x41\x62\x61\x6E\x64\x6F\x6E\x41\x74\x29\x2D\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6A\x6F\x69\x6E\x41\x74\x29\x20\x26\x6C\x74\x3B\x31\x30\x2C\x31\x2C\x4E\x55\x4C\x4C\x29\x29","\x41\x62\x61\x6E\x64\x6F\x6E\x65\x64\x26\x6C\x74\x3B\x31\x30\x73","\x52\x4F\x55\x4E\x44\x28\x43\x4F\x55\x4E\x54\x28\x49\x46\x28\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x41\x62\x61\x6E\x64\x6F\x6E\x41\x74\x29\x2D\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6A\x6F\x69\x6E\x41\x74\x29\x20\x26\x6C\x74\x3B\x31\x30\x2C\x31\x2C\x4E\x55\x4C\x4C\x29\x29\x20\x2F\x20\x53\x55\x4D\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x61\x62\x61\x6E\x64\x6F\x6E\x29\x20\x2A\x31\x30\x30\x2C\x31\x29","\x41\x62\x61\x6E\x64\x6F\x6E\x65\x64\x20\x52\x61\x74\x65\x26\x6C\x74\x3B\x31\x30\x73","\x43\x4F\x55\x4E\x54\x28\x49\x46\x28\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x41\x62\x61\x6E\x64\x6F\x6E\x41\x74\x29\x2D\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6A\x6F\x69\x6E\x41\x74\x29\x20\x26\x67\x74\x3B\x3D\x31\x30\x20\x41\x4E\x44\x20\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x41\x62\x61\x6E\x64\x6F\x6E\x41\x74\x29\x2D\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6A\x6F\x69\x6E\x41\x74\x29\x20\x26\x6C\x74\x3B\x36\x30\x2C\x31\x2C\x4E\x55\x4C\x4C\x29\x29","\x41\x62\x61\x6E\x64\x6F\x6E\x65\x64\x20\x31\x30\x2D\x36\x30\x73","\x52\x4F\x55\x4E\x44\x28\x43\x4F\x55\x4E\x54\x28\x49\x46\x28\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x41\x62\x61\x6E\x64\x6F\x6E\x41\x74\x29\x2D\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6A\x6F\x69\x6E\x41\x74\x29\x20\x26\x67\x74\x3B\x3D\x31\x30\x20\x41\x4E\x44\x20\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x41\x62\x61\x6E\x64\x6F\x6E\x41\x74\x29\x2D\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6A\x6F\x69\x6E\x41\x74\x29\x20\x26\x6C\x74\x3B\x36\x30\x2C\x31\x2C\x4E\x55\x4C\x4C\x29\x29\x20\x20\x2F\x20\x53\x55\x4D\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x61\x62\x61\x6E\x64\x6F\x6E\x29\x20\x2A\x31\x30\x30\x2C\x31\x29","\x41\x62\x61\x6E\x64\x6F\x6E\x65\x64\x20\x52\x61\x74\x65\x20\x31\x30\x2D\x36\x30\x73","\x43\x4F\x55\x4E\x54\x28\x49\x46\x28\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x41\x62\x61\x6E\x64\x6F\x6E\x41\x74\x29\x2D\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6A\x6F\x69\x6E\x41\x74\x29\x20\x26\x67\x74\x3B\x3D\x36\x30\x20\x41\x4E\x44\x20\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x41\x62\x61\x6E\x64\x6F\x6E\x41\x74\x29\x2D\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6A\x6F\x69\x6E\x41\x74\x29\x20\x26\x6C\x74\x3B\x31\x32\x30\x2C\x31\x2C\x4E\x55\x4C\x4C\x29\x29","\x41\x62\x61\x6E\x64\x6F\x6E\x65\x64\x20\x36\x30\x2D\x31\x32\x30\x73","\x52\x4F\x55\x4E\x44\x28\x43\x4F\x55\x4E\x54\x28\x49\x46\x28\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x41\x62\x61\x6E\x64\x6F\x6E\x41\x74\x29\x2D\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6A\x6F\x69\x6E\x41\x74\x29\x20\x26\x67\x74\x3B\x3D\x36\x30\x20\x41\x4E\x44\x20\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x41\x62\x61\x6E\x64\x6F\x6E\x41\x74\x29\x2D\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6A\x6F\x69\x6E\x41\x74\x29\x20\x26\x6C\x74\x3B\x31\x32\x30\x2C\x31\x2C\x4E\x55\x4C\x4C\x29\x29\x20\x20\x20\x2F\x20\x53\x55\x4D\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x61\x62\x61\x6E\x64\x6F\x6E\x29\x20\x2A\x31\x30\x30\x2C\x31\x29","\x41\x62\x61\x6E\x64\x6F\x6E\x65\x64\x20\x52\x61\x74\x65\x20\x36\x30\x2D\x31\x32\x30\x73","\x43\x4F\x55\x4E\x54\x28\x49\x46\x28\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x41\x62\x61\x6E\x64\x6F\x6E\x41\x74\x29\x2D\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6A\x6F\x69\x6E\x41\x74\x29\x20\x26\x67\x74\x3B\x3D\x31\x32\x30\x2C\x31\x2C\x4E\x55\x4C\x4C\x29\x29","\x41\x62\x61\x6E\x64\x6F\x6E\x65\x64\x26\x67\x74\x3B\x31\x32\x30\x73","\x52\x4F\x55\x4E\x44\x28\x43\x4F\x55\x4E\x54\x28\x49\x46\x28\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x41\x62\x61\x6E\x64\x6F\x6E\x41\x74\x29\x2D\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6A\x6F\x69\x6E\x41\x74\x29\x20\x26\x67\x74\x3B\x3D\x31\x32\x30\x2C\x31\x2C\x4E\x55\x4C\x4C\x29\x29\x20\x20\x2F\x20\x53\x55\x4D\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x61\x62\x61\x6E\x64\x6F\x6E\x29\x20\x2A\x31\x30\x30\x2C\x31\x29","\x41\x62\x61\x6E\x64\x6F\x6E\x65\x64\x20\x52\x61\x74\x65\x26\x67\x74\x3B\x31\x32\x30\x73","\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6A\x6F\x69\x6E\x61\x74","\x44\x61\x74\x65","\x44\x41\x54\x45","\x4F\x66\x66\x65\x72\x65\x64","\x43\x4F\x55\x4E\x54\x20\x44\x49\x53\x54\x49\x4E\x43\x54","\x52\x4F\x55\x4E\x44\x28\x41\x56\x47\x28\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x63\x6F\x6D\x70\x6C\x65\x74\x65\x41\x74\x29\x2D\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6C\x65\x61\x76\x65\x41\x74\x29\x29\x29","\x52\x4F\x55\x4E\x44\x28\x53\x55\x4D\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x63\x6F\x6D\x70\x6C\x65\x74\x65\x29\x2F\x43\x4F\x55\x4E\x54\x28\x44\x49\x53\x54\x49\x4E\x43\x54\x20\x75\x6E\x69\x71\x75\x65\x69\x64\x29\x2A\x31\x30\x30\x2C\x31\x29","\x41\x6E\x73\x77\x65\x72\x20\x52\x61\x74\x65","\x44\x41\x59\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6A\x6F\x69\x6E\x61\x74\x29","\x44\x61\x79","\x44\x41\x59\x4E\x41\x4D\x45\x28\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6A\x6F\x69\x6E\x61\x74\x29","\x44\x61\x79\x4F\x66\x57\x65\x65\x6B","\x41\x53\x43","\x55\x6E\x69\x71\x75\x65\x49\x44","\x74\x79\x70\x65","\x54\x79\x70\x65","\x74\x61\x67","\x54\x61\x67","\x73\x6F\x75\x72\x63\x65","\x53\x6F\x75\x72\x63\x65","\x64\x65\x73\x74\x69\x6E\x61\x74\x69\x6F\x6E","\x44\x65\x73\x74\x69\x6E\x61\x74\x69\x6F\x6E","\x63\x61\x6C\x6C\x65\x72\x69\x64","\x64\x65\x73\x74\x69\x6E\x61\x74\x69\x6F\x6E\x63\x68\x61\x6E\x6E\x65\x6C","\x44\x65\x73\x74\x43\x68\x61\x6E\x6E\x65\x6C","\x6C\x61\x73\x74\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x4C\x61\x73\x74\x41\x70\x70","\x6C\x61\x73\x74\x64\x61\x74\x61","\x4C\x61\x73\x74\x44\x61\x74\x61","\x73\x74\x61\x72\x74\x74\x69\x6D\x65","\x61\x6E\x73\x77\x65\x72\x74\x69\x6D\x65","\x65\x6E\x64\x74\x69\x6D\x65","\x64\x75\x72\x61\x74\x69\x6F\x6E","\x44\x75\x72\x61\x74\x69\x6F\x6E","\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x44\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x61\x63\x63\x6F\x75\x6E\x74\x63\x6F\x64\x65","\x41\x67\x65\x6E\x74\x45\x78\x74\x65\x6E\x73\x69\x6F\x6E","\x43\x61\x6C\x6C\x65\x72\x49\x64","\x62\x69\x6C\x6C\x61\x62\x6C\x65\x73\x65\x63\x6F\x6E\x64\x73","\x42\x69\x6C\x6C\x73\x65\x63","\x54\x6F\x74\x20\x44\x75\x72\x61\x74\x69\x6F\x6E","\x52\x4F\x55\x4E\x44\x28\x41\x56\x47\x28\x64\x75\x72\x61\x74\x69\x6F\x6E\x29\x29","\x53\x55\x42\x53\x54\x52\x49\x4E\x47\x5F\x49\x4E\x44\x45\x58\x28\x63\x68\x61\x6E\x6E\x65\x6C\x2C\x20\x27\x2D\x27\x2C\x20\x31\x29","\x53\x45\x43\x5F\x54\x4F\x5F\x54\x49\x4D\x45\x28\x53\x55\x4D\x28\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x65\x78\x69\x74\x41\x74\x29\x2D\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x65\x6E\x74\x65\x72\x41\x74\x29\x29\x29","\x43\x41\x53\x45\x20\x57\x48\x45\x4E\x20\x74\x79\x70\x65\x3D\x22\x4C\x4F\x47\x49\x4E\x22\x20\x54\x48\x45\x4E\x20\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x65\x78\x69\x74\x41\x74\x29\x2D\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x65\x6E\x74\x65\x72\x41\x74\x29\x20\x45\x4E\x44","\x43\x41\x53\x45\x20\x57\x48\x45\x4E\x20\x74\x79\x70\x65\x3D\x22\x54\x41\x4C\x4B\x49\x4E\x47\x22\x20\x54\x48\x45\x4E\x20\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x65\x78\x69\x74\x41\x74\x29\x2D\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x65\x6E\x74\x65\x72\x41\x74\x29\x20\x45\x4E\x44","\x54\x61\x6C\x6B\x20\x54\x69\x6D\x65","\x43\x41\x53\x45\x20\x57\x48\x45\x4E\x20\x74\x79\x70\x65\x3D\x22\x50\x41\x55\x53\x45\x22\x20\x54\x48\x45\x4E\x20\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x65\x78\x69\x74\x41\x74\x29\x2D\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x65\x6E\x74\x65\x72\x41\x74\x29\x20\x45\x4E\x44","\x65\x6E\x74\x65\x72\x41\x74","\x45\x6E\x74\x65\x72\x41\x74","\x65\x78\x69\x74\x41\x74","\x45\x78\x69\x74\x41\x74","\x64\x61\x74\x61\x31","\x69\x6E\x74\x65\x72\x66\x61\x63\x65","\x49\x6E\x74\x65\x72\x66\x61\x63\x65","\x45\x76\x65\x6E\x74","\x53\x45\x43\x5F\x54\x4F\x5F\x54\x49\x4D\x45\x28\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x65\x78\x69\x74\x41\x74\x29\x2D\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x65\x6E\x74\x65\x72\x41\x74\x29\x29","\x50\x61\x75\x73\x65\x54\x79\x70\x65","\x70\x72\x6F\x6A\x65\x63\x74\x5F\x6E\x61\x6D\x65","\x50\x72\x6F\x6A\x65\x63\x74\x20\x4E\x61\x6D\x65","\x64\x6E\x69\x64","\x6A\x6F\x69\x6E\x41\x74","\x53\x74\x61\x72\x74\x20\x54\x69\x6D\x65","\x6C\x65\x61\x76\x65\x41\x74","\x45\x6E\x64\x20\x54\x69\x6D\x65","\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x6C\x65\x61\x76\x65\x41\x74\x29\x2D\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x6A\x6F\x69\x6E\x41\x74\x29","\x55\x6E\x69\x71\x75\x65\x20\x49\x64","\x43\x61\x6C\x6C\x65\x72\x20\x49\x64","\x6E\x6F\x64\x65","\x42\x6C\x6F\x63\x6B","\x64\x61\x74\x61","\x44\x61\x74\x61","\x61\x63\x63\x6F\x75\x6E\x74\x6E\x61\x6D\x65","\x41\x63\x63\x6F\x75\x6E\x74","\x52\x65\x63\x65\x69\x76\x65\x64","\x49\x46\x28\x74\x69\x6D\x65\x6F\x75\x74\x3D\x30\x2C\x31\x2C\x6E\x75\x6C\x6C\x29","\x41\x63\x63\x65\x70\x74\x65\x64","\x52\x4F\x55\x4E\x44\x28\x53\x55\x4D\x28\x49\x46\x28\x74\x69\x6D\x65\x6F\x75\x74\x3D\x30\x2C\x31\x2C\x6E\x75\x6C\x6C\x29\x29\x2F\x43\x4F\x55\x4E\x54\x28\x44\x49\x53\x54\x49\x4E\x43\x54\x28\x75\x6E\x69\x71\x75\x65\x69\x64\x29\x29\x2A\x31\x30\x30\x2C\x31\x29","\x41\x63\x63\x65\x70\x74\x20\x52\x61\x74\x65","\x49\x46\x28\x74\x69\x6D\x65\x6F\x75\x74\x3D\x30\x20\x41\x4E\x44\x20\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x3D\x22\x71\x75\x65\x75\x65\x22\x2C\x31\x2C\x6E\x75\x6C\x6C\x29","\x41\x63\x63\x65\x70\x74\x65\x64\x20\x62\x79\x20\x51\x75\x65\x75\x65","\x49\x46\x28\x74\x69\x6D\x65\x6F\x75\x74\x3D\x30\x20\x41\x4E\x44\x20\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x3D\x22\x66\x69\x64\x65\x6C\x69\x74\x79\x22\x2C\x31\x2C\x6E\x75\x6C\x6C\x29","\x41\x63\x63\x65\x70\x74\x20\x62\x79\x20\x46\x69\x64\x65\x6C\x69\x74\x79","\x49\x46\x28\x74\x69\x6D\x65\x6F\x75\x74\x3D\x30\x20\x41\x4E\x44\x20\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x3D\x22\x61\x67\x65\x6E\x74\x22\x2C\x31\x2C\x6E\x75\x6C\x6C\x29","\x41\x63\x63\x65\x70\x74\x65\x64\x20\x62\x79\x20\x41\x67\x65\x6E\x74","\x63\x6F\x6E\x6E\x65\x63\x74\x65\x64\x6C\x69\x6E\x65\x6E\x61\x6D\x65","\x52\x65\x63\x6F\x72\x64\x65\x64\x20\x43\x61\x6C\x6C\x73","\x72\x61\x74\x69\x6E\x67","\x54\x6F\x74\x61\x6C\x20\x52\x61\x74\x69\x6E\x67","\x41\x76\x67\x20\x52\x61\x74\x69\x6E\x67","\x41\x56\x47","\x52\x61\x74\x65\x64\x20\x43\x61\x6C\x6C\x73","\x77\x65\x62\x73\x69\x74\x65\x6E\x61\x6D\x65","\x57\x65\x62\x53\x69\x74\x65","\x53\x65\x73\x73\x69\x6F\x6E\x73","\x63\x6F\x6D\x70\x6C\x65\x74\x65","\x61\x62\x61\x6E\x64\x6F\x6E","\x74\x69\x6D\x65\x6F\x75\x74","\x54\x69\x6D\x65\x6F\x75\x74","\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x63\x6F\x6D\x70\x6C\x65\x74\x65\x41\x74\x29\x2D\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x6C\x65\x61\x76\x65\x41\x74\x29","\x54\x6F\x74\x20\x53\x65\x73\x73\x69\x6F\x6E\x20\x54\x69\x6D\x65","\x52\x4F\x55\x4E\x44\x28\x41\x56\x47\x28\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x63\x6F\x6D\x70\x6C\x65\x74\x65\x41\x74\x29\x2D\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x6C\x65\x61\x76\x65\x41\x74\x29\x29\x29","\x41\x76\x67\x20\x53\x65\x73\x73\x69\x6F\x6E\x20\x54\x69\x6D\x65","\x57\x65\x62\x73\x69\x74\x65","\x76\x69\x73\x69\x74\x6F\x72\x6E\x61\x6D\x65","\x56\x69\x73\x69\x74\x6F\x72\x4E\x61\x6D\x65","\x76\x69\x73\x69\x74\x6F\x72\x65\x6D\x61\x69\x6C","\x56\x69\x73\x69\x74\x6F\x72\x45\x6D\x61\x69\x6C","\x4D\x65\x6D\x65\x62\x65\x72\x4E\x61\x6D\x65","\x71\x75\x65\x75\x65\x6E\x61\x6D\x65","\x51\x75\x65\x75\x65\x4E\x61\x6D\x65","\x63\x6F\x6D\x70\x6C\x65\x74\x65\x41\x74","\x63\x6F\x6D\x70\x6C\x65\x74\x65\x52\x65\x61\x73\x6F\x6E","\x43\x6F\x6D\x70\x6C\x65\x74\x65\x52\x65\x61\x73\x6F\x6E","\x53\x65\x73\x73\x69\x6F\x6E","\x43\x4F\x55\x4E\x54\x28\x49\x46\x28\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x3D\x22\x71\x75\x65\x75\x65\x22\x2C\x31\x2C\x4E\x55\x4C\x4C\x29\x29","\x46\x72\x6F\x6D\x51\x75\x65\x75\x65","\x43\x4F\x55\x4E\x54\x28\x49\x46\x28\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x3D\x22\x61\x67\x65\x6E\x74\x22\x2C\x31\x2C\x4E\x55\x4C\x4C\x29\x29","\x44\x69\x72\x65\x63\x74\x54\x6F\x41\x67\x65\x6E\x74","\x53\x65\x73\x73\x69\x6F\x6E\x20\x54\x69\x6D\x65","\x52\x4F\x55\x4E\x44\x28\x53\x55\x4D\x28\x63\x6F\x6D\x70\x6C\x65\x74\x65\x29\x2F\x43\x4F\x55\x4E\x54\x28\x44\x49\x53\x54\x49\x4E\x43\x54\x20\x75\x6E\x69\x71\x75\x65\x69\x64\x29\x20\x2A\x31\x30\x30\x2C\x31\x29","\x43\x6F\x6D\x70\x6C\x65\x74\x65\x20\x52\x61\x74\x65","\x49\x46\x28\x74\x69\x6D\x65\x6F\x75\x74\x3D\x30\x2C\x31\x2C\x30\x29","\x52\x4F\x55\x4E\x44\x28\x53\x55\x4D\x28\x49\x46\x28\x74\x69\x6D\x65\x6F\x75\x74\x3D\x30\x2C\x31\x2C\x6E\x75\x6C\x6C\x29\x29\x2F\x43\x4F\x55\x4E\x54\x28\x75\x6E\x69\x71\x75\x65\x69\x64\x29\x2A\x31\x30\x30\x2C\x31\x29","\x52\x4F\x55\x4E\x44\x28\x41\x56\x47\x28\x49\x46\x28\x74\x69\x6D\x65\x6F\x75\x74\x3D\x30\x2C\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x6C\x65\x61\x76\x65\x61\x74\x29\x2D\x20\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x6A\x6F\x69\x6E\x61\x74\x29\x2C\x4E\x55\x4C\x4C\x29\x29\x29","\x41\x76\x67\x20\x41\x63\x63\x65\x70\x74\x20\x54\x69\x6D\x65","\x54\x6F\x74\x20\x41\x63\x63\x65\x70\x74\x65\x64","\x49\x46\x28\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x3D\x22\x66\x69\x64\x65\x6C\x69\x74\x79\x22\x2C\x31\x2C\x30\x29","\x46\x69\x64\x65\x6C\x69\x74\x79","\x49\x46\x28\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x3D\x22\x61\x67\x65\x6E\x74\x22\x2C\x31\x2C\x30\x29","\x49\x46\x28\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x3D\x22\x71\x75\x65\x75\x65\x22\x2C\x31\x2C\x30\x29","\x63\x72\x65\x61\x74\x65\x64\x41\x74","\x49\x46\x28\x73\x74\x61\x74\x75\x73\x3D\x22\x52\x45\x43\x45\x49\x56\x45\x44\x22\x2C\x31\x2C\x30\x29","\x49\x46\x28\x73\x74\x61\x74\x75\x73\x3D\x22\x53\x45\x4E\x54\x22\x2C\x31\x2C\x30\x29","\x53\x65\x6E\x74","\x61\x63\x63\x6F\x75\x6E\x74","\x73\x74\x61\x74\x75\x73","\x6C\x61\x73\x74\x45\x76\x65\x6E\x74","\x61\x72\x72\x69\x76\x65\x64\x41\x74","\x6F\x70\x65\x6E\x65\x64\x41\x74","\x63\x6C\x6F\x73\x65\x64\x41\x74","\x6D\x61\x69\x6C\x49\x6E","\x6D\x61\x69\x6C\x4F\x75\x74","\x74\x61\x67\x73","\x50\x61\x72\x65\x6E\x74\x49\x64","\x63\x6F\x75\x6E\x74\x28\x2A\x29","\x69\x6E\x74\x65\x72\x61\x63\x74\x69\x6F\x6E\x73","\x49\x6E\x74\x65\x72\x61\x63\x74\x69\x6F\x6E\x73","\x52\x4F\x55\x4E\x44\x28\x41\x56\x47\x28\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x63\x6C\x6F\x73\x65\x64\x41\x74\x29\x2D\x55\x4E\x49\x58\x5F\x54\x49\x4D\x45\x53\x54\x41\x4D\x50\x28\x61\x72\x72\x69\x76\x65\x64\x41\x74\x29\x29\x29","\x44\x61\x74\x65\x54\x69\x6D\x65","\x49\x64","\x66\x72\x6F\x6D","\x66\x72\x6F\x6D\x4E\x75\x6D\x62\x65\x72","\x74\x6F","\x74\x6F\x4E\x75\x6D\x62\x65\x72","\x53\x74\x61\x74\x75\x73","\x41\x67\x65\x6E\x74\x4E\x61\x6D\x65","\x65\x78\x69\x74\x53\x74\x61\x74\x75\x73","\x74\x69\x63\x6B\x65\x74\x49\x64","\x54\x69\x63\x6B\x65\x74\x49\x44","\x45\x72\x72\x6F\x72\x20\x70\x6F\x70\x75\x6C\x61\x74\x69\x6E\x67\x20\x41\x6E\x61\x6C\x79\x74\x69\x63\x73\x3A","\x50\x6F\x70\x75\x6C\x61\x74\x69\x6E\x67\x20\x41\x6E\x61\x6C\x79\x74\x69\x63\x73","\x52\x65\x70\x6F\x72\x74\x46\x69\x65\x6C\x64","\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74","\x5B\x7B\x22\x69\x64\x22\x3A\x22\x31\x22\x2C\x22\x74\x65\x78\x74\x22\x3A\x22\x43\x75\x73\x74\x6F\x6D\x20\x52\x65\x70\x6F\x72\x74\x73\x22\x2C\x22\x69\x63\x6F\x6E\x22\x3A\x22\x69\x63\x6F\x6E\x2D\x62\x6F\x6F\x6B\x2D\x6F\x70\x65\x6E\x22\x2C\x22\x6C\x69\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x69\x64\x22\x3A\x22\x31\x22\x7D\x2C\x22\x61\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x68\x72\x65\x66\x22\x3A\x22\x23\x22\x2C\x22\x69\x64\x22\x3A\x22\x31\x5F\x61\x6E\x63\x68\x6F\x72\x22\x7D\x2C\x22\x73\x74\x61\x74\x65\x22\x3A\x7B\x22\x6C\x6F\x61\x64\x65\x64\x22\x3A\x74\x72\x75\x65\x2C\x22\x6F\x70\x65\x6E\x65\x64\x22\x3A\x74\x72\x75\x65\x2C\x22\x73\x65\x6C\x65\x63\x74\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x2C\x22\x64\x69\x73\x61\x62\x6C\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x7D\x2C\x22\x64\x61\x74\x61\x22\x3A\x7B\x7D\x2C\x22\x70\x61\x72\x65\x6E\x74\x22\x3A\x22\x23\x22\x7D\x2C\x7B\x22\x69\x64\x22\x3A\x22\x32\x22\x2C\x22\x74\x65\x78\x74\x22\x3A\x22\x4D\x79\x20\x52\x65\x70\x6F\x72\x74\x73\x22\x2C\x22\x69\x63\x6F\x6E\x22\x3A\x74\x72\x75\x65\x2C\x22\x6C\x69\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x69\x64\x22\x3A\x22\x32\x22\x7D\x2C\x22\x61\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x68\x72\x65\x66\x22\x3A\x22\x23\x22\x2C\x22\x69\x64\x22\x3A\x22\x32\x5F\x61\x6E\x63\x68\x6F\x72\x22\x7D\x2C\x22\x73\x74\x61\x74\x65\x22\x3A\x7B\x22\x6C\x6F\x61\x64\x65\x64\x22\x3A\x74\x72\x75\x65\x2C\x22\x6F\x70\x65\x6E\x65\x64\x22\x3A\x74\x72\x75\x65\x2C\x22\x73\x65\x6C\x65\x63\x74\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x2C\x22\x64\x69\x73\x61\x62\x6C\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x7D\x2C\x22\x64\x61\x74\x61\x22\x3A\x7B\x7D\x2C\x22\x70\x61\x72\x65\x6E\x74\x22\x3A\x22\x31\x22\x7D\x5D","\x66\x69\x6E\x64\x4F\x72\x43\x72\x65\x61\x74\x65","\x52\x65\x70\x6F\x72\x74\x54\x72\x65\x65","\x5B\x7B\x22\x69\x64\x22\x3A\x22\x31\x22\x2C\x22\x74\x65\x78\x74\x22\x3A\x22\x4D\x6F\x74\x69\x6F\x6E\x20\x52\x65\x70\x6F\x72\x74\x73\x22\x2C\x22\x69\x63\x6F\x6E\x22\x3A\x22\x69\x63\x6F\x6E\x2D\x62\x6F\x6F\x6B\x2D\x6F\x70\x65\x6E\x22\x2C\x22\x6C\x69\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x69\x64\x22\x3A\x22\x31\x22\x7D\x2C\x22\x61\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x68\x72\x65\x66\x22\x3A\x22\x23\x22\x2C\x22\x69\x64\x22\x3A\x22\x31\x5F\x61\x6E\x63\x68\x6F\x72\x22\x7D\x2C\x22\x73\x74\x61\x74\x65\x22\x3A\x7B\x22\x6C\x6F\x61\x64\x65\x64\x22\x3A\x74\x72\x75\x65\x2C\x22\x6F\x70\x65\x6E\x65\x64\x22\x3A\x74\x72\x75\x65\x2C\x22\x73\x65\x6C\x65\x63\x74\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x2C\x22\x64\x69\x73\x61\x62\x6C\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x7D\x2C\x22\x64\x61\x74\x61\x22\x3A\x7B\x7D\x2C\x22\x70\x61\x72\x65\x6E\x74\x22\x3A\x22\x23\x22\x7D\x2C\x7B\x22\x69\x64\x22\x3A\x22\x6A\x31\x32\x5F\x32\x22\x2C\x22\x74\x65\x78\x74\x22\x3A\x22\x56\x6F\x69\x63\x65\x22\x2C\x22\x69\x63\x6F\x6E\x22\x3A\x74\x72\x75\x65\x2C\x22\x6C\x69\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x69\x64\x22\x3A\x22\x6A\x31\x32\x5F\x32\x22\x7D\x2C\x22\x61\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x68\x72\x65\x66\x22\x3A\x22\x23\x22\x2C\x22\x69\x64\x22\x3A\x22\x6A\x31\x32\x5F\x32\x5F\x61\x6E\x63\x68\x6F\x72\x22\x7D\x2C\x22\x73\x74\x61\x74\x65\x22\x3A\x7B\x22\x6C\x6F\x61\x64\x65\x64\x22\x3A\x74\x72\x75\x65\x2C\x22\x6F\x70\x65\x6E\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x2C\x22\x73\x65\x6C\x65\x63\x74\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x2C\x22\x64\x69\x73\x61\x62\x6C\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x7D\x2C\x22\x64\x61\x74\x61\x22\x3A\x7B\x7D\x2C\x22\x70\x61\x72\x65\x6E\x74\x22\x3A\x22\x31\x22\x7D\x2C\x7B\x22\x69\x64\x22\x3A\x22\x6A\x31\x32\x5F\x37\x22\x2C\x22\x74\x65\x78\x74\x22\x3A\x22\x51\x75\x65\x75\x65\x73\x22\x2C\x22\x69\x63\x6F\x6E\x22\x3A\x74\x72\x75\x65\x2C\x22\x6C\x69\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x69\x64\x22\x3A\x22\x6A\x31\x32\x5F\x37\x22\x7D\x2C\x22\x61\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x68\x72\x65\x66\x22\x3A\x22\x23\x22\x2C\x22\x69\x64\x22\x3A\x22\x6A\x31\x32\x5F\x37\x5F\x61\x6E\x63\x68\x6F\x72\x22\x7D\x2C\x22\x73\x74\x61\x74\x65\x22\x3A\x7B\x22\x6C\x6F\x61\x64\x65\x64\x22\x3A\x74\x72\x75\x65\x2C\x22\x6F\x70\x65\x6E\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x2C\x22\x73\x65\x6C\x65\x63\x74\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x2C\x22\x64\x69\x73\x61\x62\x6C\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x7D\x2C\x22\x64\x61\x74\x61\x22\x3A\x7B\x7D\x2C\x22\x70\x61\x72\x65\x6E\x74\x22\x3A\x22\x6A\x31\x32\x5F\x32\x22\x7D\x2C\x7B\x22\x69\x64\x22\x3A\x22\x6A\x36\x30\x5F\x31\x22\x2C\x22\x74\x65\x78\x74\x22\x3A\x22\x41\x6E\x73\x77\x65\x72\x65\x64\x22\x2C\x22\x69\x63\x6F\x6E\x22\x3A\x74\x72\x75\x65\x2C\x22\x6C\x69\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x69\x64\x22\x3A\x22\x6A\x36\x30\x5F\x31\x22\x7D\x2C\x22\x61\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x68\x72\x65\x66\x22\x3A\x22\x23\x22\x2C\x22\x69\x64\x22\x3A\x22\x6A\x36\x30\x5F\x31\x5F\x61\x6E\x63\x68\x6F\x72\x22\x7D\x2C\x22\x73\x74\x61\x74\x65\x22\x3A\x7B\x22\x6C\x6F\x61\x64\x65\x64\x22\x3A\x74\x72\x75\x65\x2C\x22\x6F\x70\x65\x6E\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x2C\x22\x73\x65\x6C\x65\x63\x74\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x2C\x22\x64\x69\x73\x61\x62\x6C\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x7D\x2C\x22\x64\x61\x74\x61\x22\x3A\x7B\x7D\x2C\x22\x70\x61\x72\x65\x6E\x74\x22\x3A\x22\x6A\x31\x32\x5F\x37\x22\x7D\x2C\x7B\x22\x69\x64\x22\x3A\x22\x6A\x36\x30\x5F\x32\x22\x2C\x22\x74\x65\x78\x74\x22\x3A\x22\x55\x6E\x61\x6E\x73\x77\x65\x72\x65\x64\x22\x2C\x22\x69\x63\x6F\x6E\x22\x3A\x74\x72\x75\x65\x2C\x22\x6C\x69\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x69\x64\x22\x3A\x22\x6A\x36\x30\x5F\x32\x22\x7D\x2C\x22\x61\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x68\x72\x65\x66\x22\x3A\x22\x23\x22\x2C\x22\x69\x64\x22\x3A\x22\x6A\x36\x30\x5F\x32\x5F\x61\x6E\x63\x68\x6F\x72\x22\x7D\x2C\x22\x73\x74\x61\x74\x65\x22\x3A\x7B\x22\x6C\x6F\x61\x64\x65\x64\x22\x3A\x74\x72\x75\x65\x2C\x22\x6F\x70\x65\x6E\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x2C\x22\x73\x65\x6C\x65\x63\x74\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x2C\x22\x64\x69\x73\x61\x62\x6C\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x7D\x2C\x22\x64\x61\x74\x61\x22\x3A\x7B\x7D\x2C\x22\x70\x61\x72\x65\x6E\x74\x22\x3A\x22\x6A\x31\x32\x5F\x37\x22\x7D\x2C\x7B\x22\x69\x64\x22\x3A\x22\x6A\x36\x30\x5F\x33\x22\x2C\x22\x74\x65\x78\x74\x22\x3A\x22\x44\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6F\x6E\x22\x2C\x22\x69\x63\x6F\x6E\x22\x3A\x74\x72\x75\x65\x2C\x22\x6C\x69\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x69\x64\x22\x3A\x22\x6A\x36\x30\x5F\x33\x22\x7D\x2C\x22\x61\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x68\x72\x65\x66\x22\x3A\x22\x23\x22\x2C\x22\x69\x64\x22\x3A\x22\x6A\x36\x30\x5F\x33\x5F\x61\x6E\x63\x68\x6F\x72\x22\x7D\x2C\x22\x73\x74\x61\x74\x65\x22\x3A\x7B\x22\x6C\x6F\x61\x64\x65\x64\x22\x3A\x74\x72\x75\x65\x2C\x22\x6F\x70\x65\x6E\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x2C\x22\x73\x65\x6C\x65\x63\x74\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x2C\x22\x64\x69\x73\x61\x62\x6C\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x7D\x2C\x22\x64\x61\x74\x61\x22\x3A\x7B\x7D\x2C\x22\x70\x61\x72\x65\x6E\x74\x22\x3A\x22\x6A\x31\x32\x5F\x37\x22\x7D\x2C\x7B\x22\x69\x64\x22\x3A\x22\x6A\x35\x31\x5F\x31\x22\x2C\x22\x74\x65\x78\x74\x22\x3A\x22\x43\x61\x6C\x6C\x73\x22\x2C\x22\x69\x63\x6F\x6E\x22\x3A\x74\x72\x75\x65\x2C\x22\x6C\x69\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x69\x64\x22\x3A\x22\x6A\x35\x31\x5F\x31\x22\x7D\x2C\x22\x61\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x68\x72\x65\x66\x22\x3A\x22\x23\x22\x2C\x22\x69\x64\x22\x3A\x22\x6A\x35\x31\x5F\x31\x5F\x61\x6E\x63\x68\x6F\x72\x22\x7D\x2C\x22\x73\x74\x61\x74\x65\x22\x3A\x7B\x22\x6C\x6F\x61\x64\x65\x64\x22\x3A\x74\x72\x75\x65\x2C\x22\x6F\x70\x65\x6E\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x2C\x22\x73\x65\x6C\x65\x63\x74\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x2C\x22\x64\x69\x73\x61\x62\x6C\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x7D\x2C\x22\x64\x61\x74\x61\x22\x3A\x7B\x7D\x2C\x22\x70\x61\x72\x65\x6E\x74\x22\x3A\x22\x6A\x31\x32\x5F\x32\x22\x7D\x2C\x7B\x22\x69\x64\x22\x3A\x22\x6A\x38\x37\x5F\x31\x22\x2C\x22\x74\x65\x78\x74\x22\x3A\x22\x41\x67\x65\x6E\x74\x73\x22\x2C\x22\x69\x63\x6F\x6E\x22\x3A\x74\x72\x75\x65\x2C\x22\x6C\x69\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x69\x64\x22\x3A\x22\x6A\x38\x37\x5F\x31\x22\x7D\x2C\x22\x61\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x68\x72\x65\x66\x22\x3A\x22\x23\x22\x2C\x22\x69\x64\x22\x3A\x22\x6A\x38\x37\x5F\x31\x5F\x61\x6E\x63\x68\x6F\x72\x22\x7D\x2C\x22\x73\x74\x61\x74\x65\x22\x3A\x7B\x22\x6C\x6F\x61\x64\x65\x64\x22\x3A\x74\x72\x75\x65\x2C\x22\x6F\x70\x65\x6E\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x2C\x22\x73\x65\x6C\x65\x63\x74\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x2C\x22\x64\x69\x73\x61\x62\x6C\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x7D\x2C\x22\x64\x61\x74\x61\x22\x3A\x7B\x7D\x2C\x22\x70\x61\x72\x65\x6E\x74\x22\x3A\x22\x6A\x31\x32\x5F\x32\x22\x7D\x2C\x7B\x22\x69\x64\x22\x3A\x22\x6A\x38\x37\x5F\x32\x22\x2C\x22\x74\x65\x78\x74\x22\x3A\x22\x43\x61\x6C\x6C\x79\x53\x71\x75\x61\x72\x65\x22\x2C\x22\x69\x63\x6F\x6E\x22\x3A\x74\x72\x75\x65\x2C\x22\x6C\x69\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x69\x64\x22\x3A\x22\x6A\x38\x37\x5F\x32\x22\x7D\x2C\x22\x61\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x68\x72\x65\x66\x22\x3A\x22\x23\x22\x2C\x22\x69\x64\x22\x3A\x22\x6A\x38\x37\x5F\x32\x5F\x61\x6E\x63\x68\x6F\x72\x22\x7D\x2C\x22\x73\x74\x61\x74\x65\x22\x3A\x7B\x22\x6C\x6F\x61\x64\x65\x64\x22\x3A\x74\x72\x75\x65\x2C\x22\x6F\x70\x65\x6E\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x2C\x22\x73\x65\x6C\x65\x63\x74\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x2C\x22\x64\x69\x73\x61\x62\x6C\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x7D\x2C\x22\x64\x61\x74\x61\x22\x3A\x7B\x7D\x2C\x22\x70\x61\x72\x65\x6E\x74\x22\x3A\x22\x6A\x31\x32\x5F\x32\x22\x7D\x2C\x7B\x22\x69\x64\x22\x3A\x22\x6A\x31\x31\x30\x5F\x31\x22\x2C\x22\x74\x65\x78\x74\x22\x3A\x22\x52\x65\x63\x6F\x72\x64\x69\x6E\x67\x73\x22\x2C\x22\x69\x63\x6F\x6E\x22\x3A\x74\x72\x75\x65\x2C\x22\x6C\x69\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x69\x64\x22\x3A\x22\x6A\x31\x31\x30\x5F\x31\x22\x7D\x2C\x22\x61\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x68\x72\x65\x66\x22\x3A\x22\x23\x22\x2C\x22\x69\x64\x22\x3A\x22\x6A\x31\x31\x30\x5F\x31\x5F\x61\x6E\x63\x68\x6F\x72\x22\x7D\x2C\x22\x73\x74\x61\x74\x65\x22\x3A\x7B\x22\x6C\x6F\x61\x64\x65\x64\x22\x3A\x74\x72\x75\x65\x2C\x22\x6F\x70\x65\x6E\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x2C\x22\x73\x65\x6C\x65\x63\x74\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x2C\x22\x64\x69\x73\x61\x62\x6C\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x7D\x2C\x22\x64\x61\x74\x61\x22\x3A\x7B\x7D\x2C\x22\x70\x61\x72\x65\x6E\x74\x22\x3A\x22\x6A\x31\x32\x5F\x32\x22\x7D\x2C\x7B\x22\x69\x64\x22\x3A\x22\x6A\x34\x5F\x31\x30\x22\x2C\x22\x74\x65\x78\x74\x22\x3A\x22\x49\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x22\x2C\x22\x69\x63\x6F\x6E\x22\x3A\x74\x72\x75\x65\x2C\x22\x6C\x69\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x69\x64\x22\x3A\x22\x6A\x34\x5F\x31\x30\x22\x7D\x2C\x22\x61\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x68\x72\x65\x66\x22\x3A\x22\x23\x22\x2C\x22\x69\x64\x22\x3A\x22\x6A\x34\x5F\x31\x30\x5F\x61\x6E\x63\x68\x6F\x72\x22\x7D\x2C\x22\x73\x74\x61\x74\x65\x22\x3A\x7B\x22\x6C\x6F\x61\x64\x65\x64\x22\x3A\x74\x72\x75\x65\x2C\x22\x6F\x70\x65\x6E\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x2C\x22\x73\x65\x6C\x65\x63\x74\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x2C\x22\x64\x69\x73\x61\x62\x6C\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x7D\x2C\x22\x64\x61\x74\x61\x22\x3A\x7B\x7D\x2C\x22\x70\x61\x72\x65\x6E\x74\x22\x3A\x22\x6A\x31\x32\x5F\x32\x22\x7D\x2C\x7B\x22\x69\x64\x22\x3A\x22\x6A\x31\x32\x5F\x33\x22\x2C\x22\x74\x65\x78\x74\x22\x3A\x22\x43\x68\x61\x74\x22\x2C\x22\x69\x63\x6F\x6E\x22\x3A\x74\x72\x75\x65\x2C\x22\x6C\x69\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x69\x64\x22\x3A\x22\x6A\x31\x32\x5F\x33\x22\x7D\x2C\x22\x61\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x68\x72\x65\x66\x22\x3A\x22\x23\x22\x2C\x22\x69\x64\x22\x3A\x22\x6A\x31\x32\x5F\x33\x5F\x61\x6E\x63\x68\x6F\x72\x22\x7D\x2C\x22\x73\x74\x61\x74\x65\x22\x3A\x7B\x22\x6C\x6F\x61\x64\x65\x64\x22\x3A\x74\x72\x75\x65\x2C\x22\x6F\x70\x65\x6E\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x2C\x22\x73\x65\x6C\x65\x63\x74\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x2C\x22\x64\x69\x73\x61\x62\x6C\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x7D\x2C\x22\x64\x61\x74\x61\x22\x3A\x7B\x7D\x2C\x22\x70\x61\x72\x65\x6E\x74\x22\x3A\x22\x31\x22\x7D\x2C\x7B\x22\x69\x64\x22\x3A\x22\x6A\x31\x32\x5F\x34\x22\x2C\x22\x74\x65\x78\x74\x22\x3A\x22\x45\x2D\x4D\x61\x69\x6C\x22\x2C\x22\x69\x63\x6F\x6E\x22\x3A\x74\x72\x75\x65\x2C\x22\x6C\x69\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x69\x64\x22\x3A\x22\x6A\x31\x32\x5F\x34\x22\x7D\x2C\x22\x61\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x68\x72\x65\x66\x22\x3A\x22\x23\x22\x2C\x22\x69\x64\x22\x3A\x22\x6A\x31\x32\x5F\x34\x5F\x61\x6E\x63\x68\x6F\x72\x22\x7D\x2C\x22\x73\x74\x61\x74\x65\x22\x3A\x7B\x22\x6C\x6F\x61\x64\x65\x64\x22\x3A\x74\x72\x75\x65\x2C\x22\x6F\x70\x65\x6E\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x2C\x22\x73\x65\x6C\x65\x63\x74\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x2C\x22\x64\x69\x73\x61\x62\x6C\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x7D\x2C\x22\x64\x61\x74\x61\x22\x3A\x7B\x7D\x2C\x22\x70\x61\x72\x65\x6E\x74\x22\x3A\x22\x31\x22\x7D\x2C\x7B\x22\x69\x64\x22\x3A\x22\x6A\x31\x32\x5F\x36\x22\x2C\x22\x74\x65\x78\x74\x22\x3A\x22\x53\x4D\x53\x22\x2C\x22\x69\x63\x6F\x6E\x22\x3A\x74\x72\x75\x65\x2C\x22\x6C\x69\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x69\x64\x22\x3A\x22\x6A\x31\x32\x5F\x36\x22\x7D\x2C\x22\x61\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x68\x72\x65\x66\x22\x3A\x22\x23\x22\x2C\x22\x69\x64\x22\x3A\x22\x6A\x31\x32\x5F\x36\x5F\x61\x6E\x63\x68\x6F\x72\x22\x7D\x2C\x22\x73\x74\x61\x74\x65\x22\x3A\x7B\x22\x6C\x6F\x61\x64\x65\x64\x22\x3A\x74\x72\x75\x65\x2C\x22\x6F\x70\x65\x6E\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x2C\x22\x73\x65\x6C\x65\x63\x74\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x2C\x22\x64\x69\x73\x61\x62\x6C\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x7D\x2C\x22\x64\x61\x74\x61\x22\x3A\x7B\x7D\x2C\x22\x70\x61\x72\x65\x6E\x74\x22\x3A\x22\x31\x22\x7D\x2C\x7B\x22\x69\x64\x22\x3A\x22\x6A\x31\x32\x5F\x35\x22\x2C\x22\x74\x65\x78\x74\x22\x3A\x22\x41\x67\x65\x6E\x74\x73\x22\x2C\x22\x69\x63\x6F\x6E\x22\x3A\x74\x72\x75\x65\x2C\x22\x6C\x69\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x69\x64\x22\x3A\x22\x6A\x31\x32\x5F\x35\x22\x7D\x2C\x22\x61\x5F\x61\x74\x74\x72\x22\x3A\x7B\x22\x68\x72\x65\x66\x22\x3A\x22\x23\x22\x2C\x22\x69\x64\x22\x3A\x22\x6A\x31\x32\x5F\x35\x5F\x61\x6E\x63\x68\x6F\x72\x22\x7D\x2C\x22\x73\x74\x61\x74\x65\x22\x3A\x7B\x22\x6C\x6F\x61\x64\x65\x64\x22\x3A\x74\x72\x75\x65\x2C\x22\x6F\x70\x65\x6E\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x2C\x22\x73\x65\x6C\x65\x63\x74\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x2C\x22\x64\x69\x73\x61\x62\x6C\x65\x64\x22\x3A\x66\x61\x6C\x73\x65\x7D\x2C\x22\x64\x61\x74\x61\x22\x3A\x7B\x7D\x2C\x22\x70\x61\x72\x65\x6E\x74\x22\x3A\x22\x31\x22\x7D\x5D","\x50\x6F\x70\x75\x6C\x61\x74\x69\x6E\x67\x20\x53\x65\x74\x74\x69\x6E\x67\x20\x2D\x20\x44\x4F\x4E\x45\x20","\x73\x70\x72\x65\x61\x64","\x2F\x76\x61\x72\x2F\x6F\x70\x74\x2F\x6D\x6F\x74\x69\x6F\x6E\x2F\x73\x65\x72\x76\x65\x72\x2F\x66\x69\x6C\x65\x73\x2F\x73\x6F\x75\x6E\x64\x73\x2F\x63\x6F\x6E\x76\x65\x72\x74\x65\x64","\x53\x65\x74\x74\x69\x6E\x67"];_0x8498[0];var _=require(_0x8498[1]);var util=require(_0x8498[2]);var models=require(_0x8498[3]);var sequelize=require(_0x8498[3])[_0x8498[4]];var _agents=[];var _voiceQueues=[];var _mailQueues=[];var _chatQueues=[];var _miller,_doe;var _setting;return models[_0x8498[895]][_0x8498[889]]({where:{id:1},defaults:{id:1,min_internal:1000,min_mailbox:1000,agi_port:4573,automation_timeout:3600,soundPath:_0x8498[894]}})[_0x8498[893]](function(_0x669cxd){console[_0x8498[8]](util[_0x8498[16]](_0x8498[892]));return _0x669cxd})[_0x8498[11]](function(_0x669cxd){_setting= _0x669cxd;if(_setting[_0x8498[7]]){models[_0x8498[43]][_0x8498[22]]([{role:_0x8498[46],fullname:_0x8498[47],email:_0x8498[48],name:_0x8498[46],password:_0x8498[49],defaultuser:_0x8498[46],internal:1000}],{ignoreDuplicates:true,individualHooks:true})[_0x8498[11]](function(_0x669cx12){console[_0x8498[8]](util[_0x8498[16]](_0x8498[35],_[_0x8498[15]](_0x669cx12,_0x8498[14])[_0x8498[13]]()));return models[_0x8498[45]][_0x8498[44]]({name:_0x8498[36],description:_0x8498[36],defaultEntry:true,Users:[{role:_0x8498[37],fullname:_0x8498[38],email:_0x8498[39],name:_0x8498[28],password:_0x8498[40],defaultuser:_0x8498[28],internal:1001},{role:_0x8498[37],fullname:_0x8498[41],email:_0x8498[42],name:_0x8498[26],password:_0x8498[40],defaultuser:_0x8498[26],internal:1002}]},{include:[{model:models[_0x8498[43]]}]})})[_0x8498[11]](function(_0x669cx11){_agents= _0x669cx11[_0x8498[29]];console[_0x8498[8]](util[_0x8498[16]](_0x8498[30],_[_0x8498[15]](_0x669cx11.Users,_0x8498[14])[_0x8498[13]]()));console[_0x8498[8]](util[_0x8498[16]](_0x8498[31],_0x669cx11[_0x8498[14]]));return models[_0x8498[34]][_0x8498[22]]([{name:_0x8498[18],musiconhold:_0x8498[32],strategy:_0x8498[19]},{name:_0x8498[20],musiconhold:_0x8498[32],strategy:_0x8498[33]}],{ignoreDuplicates:true,individualHooks:true})})[_0x8498[11]](function(_0x669cx10){console[_0x8498[8]](util[_0x8498[16]](_0x8498[25],_[_0x8498[15]](_0x669cx10,_0x8498[14])[_0x8498[13]]()));_voiceQueues= _0x669cx10;_miller= _[_0x8498[27]](_agents,{name:_0x8498[26]});_doe= _[_0x8498[27]](_agents,{name:_0x8498[28]});return _voiceQueues[0][_0x8498[17]](_miller[_0x8498[9]])})[_0x8498[11]](function(){return _voiceQueues[1][_0x8498[10]]([_miller[_0x8498[9]],_doe[_0x8498[9]]])})[_0x8498[11]](function(){return models[_0x8498[24]][_0x8498[22]]([{name:_0x8498[18],timeout:5,strategy:_0x8498[19]},{name:_0x8498[20],timeout:5,strategy:_0x8498[21]}],{ignoreDuplicates:true,individualHooks:true})})[_0x8498[11]](function(_0x669cxf){console[_0x8498[8]](util[_0x8498[16]](_0x8498[12],_[_0x8498[15]](_0x669cxf,_0x8498[14])[_0x8498[13]]()));_mailQueues= _0x669cxf;return _mailQueues[0][_0x8498[17]](_miller[_0x8498[9]])})[_0x8498[11]](function(){return _mailQueues[1][_0x8498[10]]([_miller[_0x8498[9]],_doe[_0x8498[9]]])})[_0x8498[11]](function(){return models[_0x8498[23]][_0x8498[22]]([{name:_0x8498[18],timeout:5,strategy:_0x8498[19]},{name:_0x8498[20],timeout:5,strategy:_0x8498[21]}],{ignoreDuplicates:true,individualHooks:true})})[_0x8498[11]](function(_0x669cxe){console[_0x8498[8]](util[_0x8498[16]](_0x8498[12],_[_0x8498[15]](_0x669cxe,_0x8498[14])[_0x8498[13]]()));_chatQueues= _0x669cxe;return _chatQueues[0][_0x8498[17]](_miller[_0x8498[9]])})[_0x8498[11]](function(){return _chatQueues[1][_0x8498[10]]([_miller[_0x8498[9]],_doe[_0x8498[9]]])})[_0x8498[6]](function(_0x669cxc){console[_0x8498[8]](_0x669cxc)});models[_0x8498[63]][_0x8498[22]]([{name:_0x8498[51],prefix:_0x8498[52],description:_0x8498[53],options:_0x8498[54]},{name:_0x8498[55],prefix:_0x8498[56],description:_0x8498[57],options:_0x8498[58]},{name:_0x8498[59],prefix:_0x8498[60],description:_0x8498[61],options:_0x8498[62]}],{ignoreDuplicates:true,individualHooks:true})[_0x8498[11]](function(_0x669cx13){console[_0x8498[8]](util[_0x8498[16]](_0x8498[50],_[_0x8498[15]](_0x669cx13,_0x8498[14])[_0x8498[13]]()))});models[_0x8498[67]][_0x8498[44]]({name:_0x8498[65],description:_0x8498[66],defaultEntry:true})[_0x8498[11]](function(_0x669cx14){console[_0x8498[8]](util[_0x8498[16]](_0x8498[64],_0x669cx14[_0x8498[14]]))});models[_0x8498[73]][_0x8498[44]]({name:_0x8498[32],directory:_0x8498[69],mode:_0x8498[70],sort:_0x8498[71],format:_0x8498[72],defaultEntry:true})[_0x8498[11]](function(_0x669cx15){console[_0x8498[8]](util[_0x8498[16]](_0x8498[68],_0x669cx15[_0x8498[14]]))});models[_0x8498[81]][_0x8498[22]]([{name:_0x8498[75]},{description:_0x8498[76],name:_0x8498[77]},{description:_0x8498[78],name:_0x8498[79]},{name:_0x8498[80]}],{ignoreDuplicates:true,individualHooks:true})[_0x8498[11]](function(_0x669cx16){console[_0x8498[8]](util[_0x8498[16]](_0x8498[74],_[_0x8498[15]](_0x669cx16,_0x8498[14])[_0x8498[13]]()))});models[_0x8498[85]][_0x8498[22]]([{name:_0x8498[83]},{name:_0x8498[84]}],{ignoreDuplicates:true,individualHooks:true})[_0x8498[11]](function(_0x669cx17){console[_0x8498[8]](util[_0x8498[16]](_0x8498[82],_[_0x8498[15]](_0x669cx17,_0x8498[14])[_0x8498[13]]()))});models[_0x8498[92]][_0x8498[44]]({name:_0x8498[87],context:_0x8498[88],callingpres:_0x8498[89],deny:_0x8498[90],permit:_0x8498[90],secret:_0x8498[91]})[_0x8498[11]](function(_0x669cx18){console[_0x8498[8]](util[_0x8498[16]](_0x8498[86],_0x669cx18[_0x8498[14]]))});models[_0x8498[99]][_0x8498[22]]([{name:_0x8498[94],description:_0x8498[95]},{name:_0x8498[88],description:_0x8498[95]},{name:_0x8498[96],description:_0x8498[95]},{name:_0x8498[97],description:_0x8498[95]},{name:_0x8498[98],description:_0x8498[95]}],{ignoreDuplicates:true,individualHooks:true})[_0x8498[11]](function(_0x669cx17){console[_0x8498[8]](util[_0x8498[16]](_0x8498[93],_[_0x8498[15]](_0x669cx17,_0x8498[14])[_0x8498[13]]()))});models[_0x8498[149]][_0x8498[44]]({context:_0x8498[94],exten:_0x8498[103],priority:_0x8498[104],app:_0x8498[105],appdata:_0x8498[106],type:_0x8498[107],description:_0x8498[108],Applications:[{context:_0x8498[94],exten:_0x8498[103],priority:_0x8498[109],app:_0x8498[110],appdata:_0x8498[111],type:_0x8498[107]},{context:_0x8498[94],exten:_0x8498[103],priority:_0x8498[112],app:_0x8498[113],appdata:_0x8498[114],type:_0x8498[107]},{context:_0x8498[94],exten:_0x8498[103],priority:_0x8498[115],app:_0x8498[116],appdata:_0x8498[117],type:_0x8498[107]},{context:_0x8498[94],exten:_0x8498[103],priority:_0x8498[118],app:_0x8498[116],appdata:_0x8498[119],type:_0x8498[107]},{context:_0x8498[94],exten:_0x8498[103],priority:_0x8498[120],app:_0x8498[116],appdata:_0x8498[121],type:_0x8498[107]},{context:_0x8498[94],exten:_0x8498[103],priority:_0x8498[122],app:_0x8498[123],appdata:_0x8498[124],type:_0x8498[107],interval:_0x8498[125],isApp:true},{context:_0x8498[94],exten:_0x8498[103],priority:_0x8498[126],app:_0x8498[116],appdata:_0x8498[127],type:_0x8498[107]},{context:_0x8498[94],exten:_0x8498[103],priority:_0x8498[128],app:_0x8498[116],appdata:_0x8498[129],type:_0x8498[107]},{context:_0x8498[94],exten:_0x8498[103],priority:_0x8498[130],app:_0x8498[113],appdata:_0x8498[131],type:_0x8498[107]},{context:_0x8498[94],exten:_0x8498[103],priority:_0x8498[132],app:_0x8498[116],appdata:_0x8498[117],type:_0x8498[107]},{context:_0x8498[94],exten:_0x8498[103],priority:_0x8498[133],app:_0x8498[116],appdata:_0x8498[119],type:_0x8498[107]},{context:_0x8498[94],exten:_0x8498[103],priority:_0x8498[134],app:_0x8498[116],appdata:_0x8498[121],type:_0x8498[107]},{context:_0x8498[94],exten:_0x8498[103],priority:_0x8498[135],app:_0x8498[136],appdata:_0x8498[137],type:_0x8498[107],interval:_0x8498[125],isApp:true},{context:_0x8498[94],exten:_0x8498[103],priority:_0x8498[138],app:_0x8498[116],appdata:_0x8498[127],type:_0x8498[107]},{context:_0x8498[94],exten:_0x8498[103],priority:_0x8498[139],app:_0x8498[116],appdata:_0x8498[140],type:_0x8498[107]},{context:_0x8498[94],exten:_0x8498[103],priority:_0x8498[141],app:_0x8498[113],appdata:_0x8498[142],type:_0x8498[107]},{context:_0x8498[94],exten:_0x8498[103],priority:_0x8498[143],app:_0x8498[116],appdata:_0x8498[117],type:_0x8498[107]},{context:_0x8498[94],exten:_0x8498[103],priority:_0x8498[144],app:_0x8498[116],appdata:_0x8498[119],type:_0x8498[107]},{context:_0x8498[94],exten:_0x8498[103],priority:_0x8498[145],app:_0x8498[116],appdata:_0x8498[121],type:_0x8498[107]},{context:_0x8498[94],exten:_0x8498[103],priority:_0x8498[146],app:_0x8498[123],appdata:_0x8498[124],type:_0x8498[107],interval:_0x8498[125],isApp:true},{context:_0x8498[94],exten:_0x8498[103],priority:_0x8498[147],app:_0x8498[116],appdata:_0x8498[127],type:_0x8498[107]},{context:_0x8498[94],exten:_0x8498[103],priority:_0x8498[148],app:_0x8498[116],appdata:_0x8498[129],type:_0x8498[107]}]},{include:[{model:models[_0x8498[149]],as:_0x8498[150]}]})[_0x8498[11]](function(_0x669cx19){console[_0x8498[8]](util[_0x8498[16]](_0x8498[100],_0x669cx19[_0x8498[101]],_0x669cx19[_0x8498[102]]))});models[_0x8498[149]][_0x8498[44]]({context:_0x8498[94],exten:_0x8498[151],priority:_0x8498[104],app:_0x8498[105],appdata:_0x8498[106],type:_0x8498[107],description:_0x8498[152],Applications:[{context:_0x8498[94],exten:_0x8498[151],priority:_0x8498[109],app:_0x8498[110],appdata:_0x8498[111],type:_0x8498[107]},{context:_0x8498[94],exten:_0x8498[151],priority:_0x8498[112],app:_0x8498[113],appdata:_0x8498[114],type:_0x8498[107]},{context:_0x8498[94],exten:_0x8498[151],priority:_0x8498[115],app:_0x8498[116],appdata:_0x8498[117],type:_0x8498[107]},{context:_0x8498[94],exten:_0x8498[151],priority:_0x8498[118],app:_0x8498[116],appdata:_0x8498[119],type:_0x8498[107]},{context:_0x8498[94],exten:_0x8498[151],priority:_0x8498[120],app:_0x8498[153],type:_0x8498[107]},{context:_0x8498[94],exten:_0x8498[151],priority:_0x8498[122],app:_0x8498[154],appdata:_0x8498[155],type:_0x8498[107],interval:_0x8498[125],isApp:true},{context:_0x8498[94],exten:_0x8498[151],priority:_0x8498[126],app:_0x8498[116],appdata:_0x8498[127],type:_0x8498[107]},{context:_0x8498[94],exten:_0x8498[151],priority:_0x8498[128],app:_0x8498[116],appdata:_0x8498[156],type:_0x8498[107]}]},{include:[{model:models[_0x8498[149]],as:_0x8498[150]}]})[_0x8498[11]](function(_0x669cx19){console[_0x8498[8]](util[_0x8498[16]](_0x8498[100],_0x669cx19[_0x8498[101]],_0x669cx19[_0x8498[102]]))});models[_0x8498[149]][_0x8498[44]]({context:_0x8498[94],exten:_0x8498[157],priority:_0x8498[104],app:_0x8498[105],appdata:_0x8498[106],type:_0x8498[107],description:_0x8498[152],Applications:[{context:_0x8498[94],exten:_0x8498[157],priority:_0x8498[109],app:_0x8498[110],appdata:_0x8498[111],type:_0x8498[107]},{context:_0x8498[94],exten:_0x8498[157],priority:_0x8498[112],app:_0x8498[113],appdata:_0x8498[114],type:_0x8498[107]},{context:_0x8498[94],exten:_0x8498[157],priority:_0x8498[115],app:_0x8498[116],appdata:_0x8498[117],type:_0x8498[107]},{context:_0x8498[94],exten:_0x8498[157],priority:_0x8498[118],app:_0x8498[116],appdata:_0x8498[119],type:_0x8498[107]},{context:_0x8498[94],exten:_0x8498[157],priority:_0x8498[120],app:_0x8498[116],appdata:_0x8498[121],type:_0x8498[107]},{context:_0x8498[94],exten:_0x8498[157],priority:_0x8498[122],app:_0x8498[158],appdata:_0x8498[159],type:_0x8498[107],interval:_0x8498[125],isApp:true},{context:_0x8498[94],exten:_0x8498[157],priority:_0x8498[126],app:_0x8498[116],appdata:_0x8498[127],type:_0x8498[107]},{context:_0x8498[94],exten:_0x8498[157],priority:_0x8498[128],app:_0x8498[116],appdata:_0x8498[160],type:_0x8498[107]}]},{include:[{model:models[_0x8498[149]],as:_0x8498[150]}]})[_0x8498[11]](function(_0x669cx19){console[_0x8498[8]](util[_0x8498[16]](_0x8498[100],_0x669cx19[_0x8498[101]],_0x669cx19[_0x8498[102]]))});models[_0x8498[149]][_0x8498[44]]({context:_0x8498[94],exten:_0x8498[161],priority:_0x8498[104],app:_0x8498[105],appdata:_0x8498[106],type:_0x8498[107],description:_0x8498[152],Applications:[{context:_0x8498[94],exten:_0x8498[161],priority:_0x8498[109],app:_0x8498[110],appdata:_0x8498[111],type:_0x8498[107]},{context:_0x8498[94],exten:_0x8498[161],priority:_0x8498[112],app:_0x8498[113],appdata:_0x8498[114],type:_0x8498[107]},{context:_0x8498[94],exten:_0x8498[161],priority:_0x8498[115],app:_0x8498[116],appdata:_0x8498[117],type:_0x8498[107]},{context:_0x8498[94],exten:_0x8498[161],priority:_0x8498[118],app:_0x8498[116],appdata:_0x8498[119],type:_0x8498[107]},{context:_0x8498[94],exten:_0x8498[161],priority:_0x8498[120],app:_0x8498[116],appdata:_0x8498[121],type:_0x8498[107]},{context:_0x8498[94],exten:_0x8498[161],priority:_0x8498[122],app:_0x8498[158],appdata:_0x8498[162],type:_0x8498[107],interval:_0x8498[125],isApp:true},{context:_0x8498[94],exten:_0x8498[161],priority:_0x8498[126],app:_0x8498[116],appdata:_0x8498[127],type:_0x8498[107]},{context:_0x8498[94],exten:_0x8498[161],priority:_0x8498[128],app:_0x8498[116],appdata:_0x8498[160],type:_0x8498[107]}]},{include:[{model:models[_0x8498[149]],as:_0x8498[150]}]})[_0x8498[11]](function(_0x669cx19){console[_0x8498[8]](util[_0x8498[16]](_0x8498[100],_0x669cx19[_0x8498[101]],_0x669cx19[_0x8498[102]]))});models[_0x8498[149]][_0x8498[44]]({context:_0x8498[94],exten:_0x8498[163],priority:_0x8498[104],app:_0x8498[105],appdata:_0x8498[106],type:_0x8498[107],description:_0x8498[152],Applications:[{context:_0x8498[94],exten:_0x8498[163],priority:_0x8498[109],app:_0x8498[110],appdata:_0x8498[111],type:_0x8498[107]},{context:_0x8498[94],exten:_0x8498[163],priority:_0x8498[112],app:_0x8498[113],appdata:_0x8498[114],type:_0x8498[107]},{context:_0x8498[94],exten:_0x8498[163],priority:_0x8498[115],app:_0x8498[116],appdata:_0x8498[117],type:_0x8498[107]},{context:_0x8498[94],exten:_0x8498[163],priority:_0x8498[118],app:_0x8498[116],appdata:_0x8498[119],type:_0x8498[107]},{context:_0x8498[94],exten:_0x8498[163],priority:_0x8498[120],app:_0x8498[116],appdata:_0x8498[121],type:_0x8498[107]},{context:_0x8498[94],exten:_0x8498[163],priority:_0x8498[122],app:_0x8498[158],appdata:_0x8498[164],type:_0x8498[107],interval:_0x8498[125],isApp:true},{context:_0x8498[94],exten:_0x8498[163],priority:_0x8498[126],app:_0x8498[116],appdata:_0x8498[127],type:_0x8498[107]},{context:_0x8498[94],exten:_0x8498[163],priority:_0x8498[128],app:_0x8498[116],appdata:_0x8498[160],type:_0x8498[107]}]},{include:[{model:models[_0x8498[149]],as:_0x8498[150]}]})[_0x8498[11]](function(_0x669cx19){console[_0x8498[8]](util[_0x8498[16]](_0x8498[100],_0x669cx19[_0x8498[101]],_0x669cx19[_0x8498[102]]))});models[_0x8498[149]][_0x8498[44]]({context:_0x8498[94],exten:_0x8498[165],priority:_0x8498[104],app:_0x8498[105],appdata:_0x8498[166],type:_0x8498[167],description:_0x8498[152],Applications:[{context:_0x8498[94],exten:_0x8498[165],priority:_0x8498[109],app:_0x8498[110],appdata:_0x8498[168],type:_0x8498[167]},{context:_0x8498[94],exten:_0x8498[165],priority:_0x8498[112],app:_0x8498[110],appdata:_0x8498[169],type:_0x8498[167]},{context:_0x8498[94],exten:_0x8498[165],priority:_0x8498[115],app:_0x8498[113],appdata:_0x8498[170],type:_0x8498[167]},{context:_0x8498[94],exten:_0x8498[165],priority:_0x8498[118],app:_0x8498[116],appdata:_0x8498[117],type:_0x8498[167]},{context:_0x8498[94],exten:_0x8498[165],priority:_0x8498[120],app:_0x8498[116],appdata:_0x8498[119],type:_0x8498[167]},{context:_0x8498[94],exten:_0x8498[165],priority:_0x8498[122],app:_0x8498[116],appdata:_0x8498[121],type:_0x8498[167]},{context:_0x8498[94],exten:_0x8498[165],priority:_0x8498[126],app:_0x8498[171],appdata:_0x8498[172],type:_0x8498[167],interval:_0x8498[125],isApp:true},{context:_0x8498[94],exten:_0x8498[165],priority:_0x8498[128],app:_0x8498[116],appdata:_0x8498[127],type:_0x8498[167]},{context:_0x8498[94],exten:_0x8498[165],priority:_0x8498[130],app:_0x8498[116],appdata:_0x8498[173],type:_0x8498[167]}]},{include:[{model:models[_0x8498[149]],as:_0x8498[150]}]})[_0x8498[11]](function(_0x669cx19){console[_0x8498[8]](util[_0x8498[16]](_0x8498[100],_0x669cx19[_0x8498[101]],_0x669cx19[_0x8498[102]]))});models[_0x8498[149]][_0x8498[44]]({context:_0x8498[94],exten:_0x8498[174],priority:_0x8498[104],app:_0x8498[105],appdata:_0x8498[106],type:_0x8498[107],description:_0x8498[175],Applications:[{context:_0x8498[94],exten:_0x8498[174],priority:_0x8498[109],app:_0x8498[110],appdata:_0x8498[111],type:_0x8498[107]},{context:_0x8498[94],exten:_0x8498[174],priority:_0x8498[112],app:_0x8498[113],appdata:_0x8498[114],type:_0x8498[107]},{context:_0x8498[94],exten:_0x8498[174],priority:_0x8498[115],app:_0x8498[116],appdata:_0x8498[117],type:_0x8498[107]},{context:_0x8498[94],exten:_0x8498[174],priority:_0x8498[118],app:_0x8498[116],appdata:_0x8498[119],type:_0x8498[107]},{context:_0x8498[94],exten:_0x8498[174],priority:_0x8498[120],app:_0x8498[153],type:_0x8498[107]},{context:_0x8498[94],exten:_0x8498[174],priority:_0x8498[122],app:_0x8498[154],appdata:_0x8498[176],type:_0x8498[107],interval:_0x8498[125],isApp:true},{context:_0x8498[94],exten:_0x8498[174],priority:_0x8498[126],app:_0x8498[116],appdata:_0x8498[127],type:_0x8498[107]},{context:_0x8498[94],exten:_0x8498[174],priority:_0x8498[128],app:_0x8498[116],appdata:_0x8498[156],type:_0x8498[107]}]},{include:[{model:models[_0x8498[149]],as:_0x8498[150]}]})[_0x8498[11]](function(_0x669cx19){console[_0x8498[8]](util[_0x8498[16]](_0x8498[100],_0x669cx19[_0x8498[101]],_0x669cx19[_0x8498[102]]))});models[_0x8498[190]][_0x8498[22]]([{name:_0x8498[178],description:_0x8498[179],preproduction:_0x8498[180],production:_0x8498[180]},{name:_0x8498[181],description:_0x8498[182],preproduction:_0x8498[183],production:_0x8498[183]},{name:_0x8498[184],description:_0x8498[185],preproduction:_0x8498[186],production:_0x8498[186]},{name:_0x8498[187],description:_0x8498[188],preproduction:_0x8498[189],production:_0x8498[189]}])[_0x8498[11]](function(_0x669cx1a){console[_0x8498[8]](util[_0x8498[16]](_0x8498[177],_[_0x8498[15]](_0x669cx1a,_0x8498[14])[_0x8498[13]]()))});models[_0x8498[194]][_0x8498[44]]({name:_0x8498[192],dsn:_0x8498[193]})[_0x8498[11]](function(_0x669cx1b){console[_0x8498[8]](util[_0x8498[16]](_0x8498[191],_0x669cx1b[_0x8498[14]]))});var _0x669cx1c=[{name:_0x8498[195],version:_0x8498[196],author:_0x8498[197],logo:_0x8498[198],state:_0x8498[199],description:_0x8498[200],link:_0x8498[201]},{name:_0x8498[202],version:_0x8498[196],author:_0x8498[197],logo:_0x8498[203],state:_0x8498[204],description:_0x8498[205],link:_0x8498[206]},{name:_0x8498[207],version:_0x8498[196],author:_0x8498[197],logo:_0x8498[208],state:_0x8498[209],description:_0x8498[210],link:_0x8498[211]}];models[_0x8498[218]][_0x8498[221]]()[_0x8498[11]](function(_0x669cx1d){var _0x669cx1e=[];_0x669cx1d= _[_0x8498[15]](_0x669cx1d,_0x8498[215]);_0x669cx1c[_0x8498[220]](function(_0x669cx1f){if(_[_0x8498[216]](_0x669cx1d,_0x669cx1f[_0x8498[215]])){_0x669cx1e[_0x8498[219]](models[_0x8498[218]][_0x8498[217]](_0x669cx1f,{where:{state:_0x669cx1f[_0x8498[215]]}}))}else {_0x669cx1e[_0x8498[219]](models[_0x8498[218]][_0x8498[44]](_0x669cx1f))}});return _0x669cx1e})[_0x8498[214]]()[_0x8498[11]](function(){console[_0x8498[8]](_0x8498[213])})[_0x8498[6]](function(_0x669cxc){console[_0x8498[8]](_0x8498[212],_0x669cxc)});models[_0x8498[237]][_0x8498[22]]([{name:_0x8498[223],type:_0x8498[224],street:_0x8498[225]},{name:_0x8498[226],type:_0x8498[227],street:_0x8498[228],postalCode:_0x8498[229],country:_0x8498[230],city:_0x8498[231],vat:_0x8498[232],website:_0x8498[233],phone:_0x8498[234],fax:_0x8498[235],email:_0x8498[236]}])[_0x8498[11]](function(_0x669cx20){console[_0x8498[8]](util[_0x8498[16]](_0x8498[222],_[_0x8498[15]](_0x669cx20,_0x8498[14])[_0x8498[13]]()))});models[_0x8498[376]][_0x8498[377]]({where:{defaultEntry:true}})[_0x8498[11]](function(){return models[_0x8498[376]][_0x8498[22]]([{name:_0x8498[239],model:JSON[_0x8498[347]]({"\x74\x69\x74\x6C\x65":_0x8498[240],"\x72\x6F\x77\x73":[{"\x63\x6F\x6C\x75\x6D\x6E\x73":[{"\x73\x74\x79\x6C\x65\x43\x6C\x61\x73\x73":_0x8498[241],"\x77\x69\x64\x67\x65\x74\x73":[{"\x74\x79\x70\x65":_0x8498[242],"\x63\x6F\x6E\x66\x69\x67":{"\x74\x69\x6D\x65\x6F\x75\x74":5,"\x63\x6F\x6C\x6F\x72":_0x8498[243],"\x69\x63\x6F\x6E":_0x8498[244],"\x6C\x69\x6E\x6B":_0x8498[245],"\x6C\x69\x6E\x6B\x54\x65\x78\x74":_0x8498[246],"\x72\x65\x70\x6F\x72\x74\x54\x61\x62\x6C\x65\x73":[{"\x6E\x61\x6D\x65":_0x8498[247],"\x76\x61\x6C\x75\x65":_0x8498[248]},{"\x6E\x61\x6D\x65":_0x8498[249],"\x76\x61\x6C\x75\x65":_0x8498[250]},{"\x6E\x61\x6D\x65":_0x8498[251],"\x76\x61\x6C\x75\x65":_0x8498[252]},{"\x6E\x61\x6D\x65":_0x8498[253],"\x76\x61\x6C\x75\x65":_0x8498[254]},{"\x6E\x61\x6D\x65":_0x8498[29],"\x76\x61\x6C\x75\x65":_0x8498[255]},{"\x6E\x61\x6D\x65":_0x8498[256],"\x76\x61\x6C\x75\x65":_0x8498[257]},{"\x6E\x61\x6D\x65":_0x8498[258],"\x76\x61\x6C\x75\x65":_0x8498[259]}],"\x63\x6F\x6C\x6F\x72\x73":[{"\x6E\x61\x6D\x65":_0x8498[260],"\x76\x61\x6C\x75\x65":_0x8498[243]},{"\x6E\x61\x6D\x65":_0x8498[261],"\x76\x61\x6C\x75\x65":_0x8498[262]},{"\x6E\x61\x6D\x65":_0x8498[263],"\x76\x61\x6C\x75\x65":_0x8498[264]},{"\x6E\x61\x6D\x65":_0x8498[265],"\x76\x61\x6C\x75\x65":_0x8498[266]},{"\x6E\x61\x6D\x65":_0x8498[267],"\x76\x61\x6C\x75\x65":_0x8498[268]},{"\x6E\x61\x6D\x65":_0x8498[269],"\x76\x61\x6C\x75\x65":_0x8498[270]}],"\x69\x63\x6F\x6E\x73":[{"\x6E\x61\x6D\x65":_0x8498[271],"\x76\x61\x6C\x75\x65":_0x8498[244]},{"\x6E\x61\x6D\x65":_0x8498[272],"\x76\x61\x6C\x75\x65":_0x8498[273]},{"\x6E\x61\x6D\x65":_0x8498[274],"\x76\x61\x6C\x75\x65":_0x8498[275]},{"\x6E\x61\x6D\x65":_0x8498[276],"\x76\x61\x6C\x75\x65":_0x8498[277]}],"\x72\x65\x70\x6F\x72\x74":_0x8498[278],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E":_0x8498[279],"\x64\x65\x74\x61\x69\x6C\x73":_0x8498[280],"\x73\x65\x6C\x65\x63\x74":_0x8498[281]},"\x74\x69\x74\x6C\x65":_0x8498[282],"\x74\x69\x74\x6C\x65\x54\x65\x6D\x70\x6C\x61\x74\x65\x55\x72\x6C":_0x8498[283],"\x77\x69\x64":_0x8498[284]},{"\x74\x79\x70\x65":_0x8498[242],"\x63\x6F\x6E\x66\x69\x67":{"\x74\x69\x6D\x65\x6F\x75\x74":5,"\x63\x6F\x6C\x6F\x72":_0x8498[243],"\x69\x63\x6F\x6E":_0x8498[244],"\x6C\x69\x6E\x6B":_0x8498[245],"\x6C\x69\x6E\x6B\x54\x65\x78\x74":_0x8498[246],"\x72\x65\x70\x6F\x72\x74\x54\x61\x62\x6C\x65\x73":[{"\x6E\x61\x6D\x65":_0x8498[247],"\x76\x61\x6C\x75\x65":_0x8498[248]},{"\x6E\x61\x6D\x65":_0x8498[249],"\x76\x61\x6C\x75\x65":_0x8498[250]},{"\x6E\x61\x6D\x65":_0x8498[251],"\x76\x61\x6C\x75\x65":_0x8498[252]},{"\x6E\x61\x6D\x65":_0x8498[253],"\x76\x61\x6C\x75\x65":_0x8498[254]},{"\x6E\x61\x6D\x65":_0x8498[29],"\x76\x61\x6C\x75\x65":_0x8498[255]},{"\x6E\x61\x6D\x65":_0x8498[256],"\x76\x61\x6C\x75\x65":_0x8498[257]},{"\x6E\x61\x6D\x65":_0x8498[258],"\x76\x61\x6C\x75\x65":_0x8498[259]}],"\x63\x6F\x6C\x6F\x72\x73":[{"\x6E\x61\x6D\x65":_0x8498[260],"\x76\x61\x6C\x75\x65":_0x8498[243]},{"\x6E\x61\x6D\x65":_0x8498[261],"\x76\x61\x6C\x75\x65":_0x8498[262]},{"\x6E\x61\x6D\x65":_0x8498[263],"\x76\x61\x6C\x75\x65":_0x8498[264]},{"\x6E\x61\x6D\x65":_0x8498[265],"\x76\x61\x6C\x75\x65":_0x8498[266]},{"\x6E\x61\x6D\x65":_0x8498[267],"\x76\x61\x6C\x75\x65":_0x8498[268]},{"\x6E\x61\x6D\x65":_0x8498[269],"\x76\x61\x6C\x75\x65":_0x8498[270]}],"\x69\x63\x6F\x6E\x73":[{"\x6E\x61\x6D\x65":_0x8498[271],"\x76\x61\x6C\x75\x65":_0x8498[244]},{"\x6E\x61\x6D\x65":_0x8498[272],"\x76\x61\x6C\x75\x65":_0x8498[273]},{"\x6E\x61\x6D\x65":_0x8498[274],"\x76\x61\x6C\x75\x65":_0x8498[275]},{"\x6E\x61\x6D\x65":_0x8498[276],"\x76\x61\x6C\x75\x65":_0x8498[277]}],"\x72\x65\x70\x6F\x72\x74":_0x8498[278],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E":_0x8498[285],"\x64\x65\x74\x61\x69\x6C\x73":_0x8498[286],"\x73\x65\x6C\x65\x63\x74":_0x8498[281]},"\x74\x69\x74\x6C\x65":_0x8498[282],"\x74\x69\x74\x6C\x65\x54\x65\x6D\x70\x6C\x61\x74\x65\x55\x72\x6C":_0x8498[283],"\x77\x69\x64":_0x8498[287]},{"\x74\x79\x70\x65":_0x8498[242],"\x63\x6F\x6E\x66\x69\x67":{"\x74\x69\x6D\x65\x6F\x75\x74":5,"\x63\x6F\x6C\x6F\x72":_0x8498[243],"\x69\x63\x6F\x6E":_0x8498[244],"\x6C\x69\x6E\x6B":_0x8498[245],"\x6C\x69\x6E\x6B\x54\x65\x78\x74":_0x8498[246],"\x72\x65\x70\x6F\x72\x74\x54\x61\x62\x6C\x65\x73":[{"\x6E\x61\x6D\x65":_0x8498[247],"\x76\x61\x6C\x75\x65":_0x8498[248]},{"\x6E\x61\x6D\x65":_0x8498[249],"\x76\x61\x6C\x75\x65":_0x8498[250]},{"\x6E\x61\x6D\x65":_0x8498[251],"\x76\x61\x6C\x75\x65":_0x8498[252]},{"\x6E\x61\x6D\x65":_0x8498[253],"\x76\x61\x6C\x75\x65":_0x8498[254]},{"\x6E\x61\x6D\x65":_0x8498[29],"\x76\x61\x6C\x75\x65":_0x8498[255]},{"\x6E\x61\x6D\x65":_0x8498[256],"\x76\x61\x6C\x75\x65":_0x8498[257]},{"\x6E\x61\x6D\x65":_0x8498[258],"\x76\x61\x6C\x75\x65":_0x8498[259]}],"\x63\x6F\x6C\x6F\x72\x73":[{"\x6E\x61\x6D\x65":_0x8498[260],"\x76\x61\x6C\x75\x65":_0x8498[243]},{"\x6E\x61\x6D\x65":_0x8498[261],"\x76\x61\x6C\x75\x65":_0x8498[262]},{"\x6E\x61\x6D\x65":_0x8498[263],"\x76\x61\x6C\x75\x65":_0x8498[264]},{"\x6E\x61\x6D\x65":_0x8498[265],"\x76\x61\x6C\x75\x65":_0x8498[266]},{"\x6E\x61\x6D\x65":_0x8498[267],"\x76\x61\x6C\x75\x65":_0x8498[268]},{"\x6E\x61\x6D\x65":_0x8498[269],"\x76\x61\x6C\x75\x65":_0x8498[270]}],"\x69\x63\x6F\x6E\x73":[{"\x6E\x61\x6D\x65":_0x8498[271],"\x76\x61\x6C\x75\x65":_0x8498[244]},{"\x6E\x61\x6D\x65":_0x8498[272],"\x76\x61\x6C\x75\x65":_0x8498[273]},{"\x6E\x61\x6D\x65":_0x8498[274],"\x76\x61\x6C\x75\x65":_0x8498[275]},{"\x6E\x61\x6D\x65":_0x8498[276],"\x76\x61\x6C\x75\x65":_0x8498[277]}],"\x73\x65\x6C\x65\x63\x74":_0x8498[288],"\x72\x65\x70\x6F\x72\x74":_0x8498[278],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E":_0x8498[104],"\x64\x65\x74\x61\x69\x6C\x73":_0x8498[289]},"\x74\x69\x74\x6C\x65":_0x8498[282],"\x74\x69\x74\x6C\x65\x54\x65\x6D\x70\x6C\x61\x74\x65\x55\x72\x6C":_0x8498[283],"\x77\x69\x64":_0x8498[290]},{"\x74\x79\x70\x65":_0x8498[242],"\x63\x6F\x6E\x66\x69\x67":{"\x74\x69\x6D\x65\x6F\x75\x74":5,"\x63\x6F\x6C\x6F\x72":_0x8498[243],"\x69\x63\x6F\x6E":_0x8498[244],"\x6C\x69\x6E\x6B":_0x8498[245],"\x6C\x69\x6E\x6B\x54\x65\x78\x74":_0x8498[246],"\x72\x65\x70\x6F\x72\x74\x54\x61\x62\x6C\x65\x73":[{"\x6E\x61\x6D\x65":_0x8498[247],"\x76\x61\x6C\x75\x65":_0x8498[248]},{"\x6E\x61\x6D\x65":_0x8498[249],"\x76\x61\x6C\x75\x65":_0x8498[250]},{"\x6E\x61\x6D\x65":_0x8498[251],"\x76\x61\x6C\x75\x65":_0x8498[252]},{"\x6E\x61\x6D\x65":_0x8498[253],"\x76\x61\x6C\x75\x65":_0x8498[254]},{"\x6E\x61\x6D\x65":_0x8498[29],"\x76\x61\x6C\x75\x65":_0x8498[255]},{"\x6E\x61\x6D\x65":_0x8498[256],"\x76\x61\x6C\x75\x65":_0x8498[257]},{"\x6E\x61\x6D\x65":_0x8498[258],"\x76\x61\x6C\x75\x65":_0x8498[259]}],"\x63\x6F\x6C\x6F\x72\x73":[{"\x6E\x61\x6D\x65":_0x8498[260],"\x76\x61\x6C\x75\x65":_0x8498[243]},{"\x6E\x61\x6D\x65":_0x8498[261],"\x76\x61\x6C\x75\x65":_0x8498[262]},{"\x6E\x61\x6D\x65":_0x8498[263],"\x76\x61\x6C\x75\x65":_0x8498[264]},{"\x6E\x61\x6D\x65":_0x8498[265],"\x76\x61\x6C\x75\x65":_0x8498[266]},{"\x6E\x61\x6D\x65":_0x8498[267],"\x76\x61\x6C\x75\x65":_0x8498[268]},{"\x6E\x61\x6D\x65":_0x8498[269],"\x76\x61\x6C\x75\x65":_0x8498[270]}],"\x69\x63\x6F\x6E\x73":[{"\x6E\x61\x6D\x65":_0x8498[271],"\x76\x61\x6C\x75\x65":_0x8498[244]},{"\x6E\x61\x6D\x65":_0x8498[272],"\x76\x61\x6C\x75\x65":_0x8498[273]},{"\x6E\x61\x6D\x65":_0x8498[274],"\x76\x61\x6C\x75\x65":_0x8498[275]},{"\x6E\x61\x6D\x65":_0x8498[276],"\x76\x61\x6C\x75\x65":_0x8498[277]}],"\x73\x65\x6C\x65\x63\x74":_0x8498[291],"\x72\x65\x70\x6F\x72\x74":_0x8498[292],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E":_0x8498[293],"\x64\x65\x74\x61\x69\x6C\x73":_0x8498[294]},"\x74\x69\x74\x6C\x65":_0x8498[282],"\x74\x69\x74\x6C\x65\x54\x65\x6D\x70\x6C\x61\x74\x65\x55\x72\x6C":_0x8498[283],"\x77\x69\x64":_0x8498[295]},{"\x74\x79\x70\x65":_0x8498[242],"\x63\x6F\x6E\x66\x69\x67":{"\x74\x69\x6D\x65\x6F\x75\x74":5,"\x63\x6F\x6C\x6F\x72":_0x8498[264],"\x69\x63\x6F\x6E":_0x8498[244],"\x6C\x69\x6E\x6B":_0x8498[245],"\x6C\x69\x6E\x6B\x54\x65\x78\x74":_0x8498[246],"\x72\x65\x70\x6F\x72\x74\x54\x61\x62\x6C\x65\x73":[{"\x6E\x61\x6D\x65":_0x8498[247],"\x76\x61\x6C\x75\x65":_0x8498[248]},{"\x6E\x61\x6D\x65":_0x8498[249],"\x76\x61\x6C\x75\x65":_0x8498[250]},{"\x6E\x61\x6D\x65":_0x8498[251],"\x76\x61\x6C\x75\x65":_0x8498[252]},{"\x6E\x61\x6D\x65":_0x8498[253],"\x76\x61\x6C\x75\x65":_0x8498[254]},{"\x6E\x61\x6D\x65":_0x8498[29],"\x76\x61\x6C\x75\x65":_0x8498[255]},{"\x6E\x61\x6D\x65":_0x8498[256],"\x76\x61\x6C\x75\x65":_0x8498[257]},{"\x6E\x61\x6D\x65":_0x8498[258],"\x76\x61\x6C\x75\x65":_0x8498[259]}],"\x63\x6F\x6C\x6F\x72\x73":[{"\x6E\x61\x6D\x65":_0x8498[260],"\x76\x61\x6C\x75\x65":_0x8498[243]},{"\x6E\x61\x6D\x65":_0x8498[261],"\x76\x61\x6C\x75\x65":_0x8498[262]},{"\x6E\x61\x6D\x65":_0x8498[263],"\x76\x61\x6C\x75\x65":_0x8498[264]},{"\x6E\x61\x6D\x65":_0x8498[265],"\x76\x61\x6C\x75\x65":_0x8498[266]},{"\x6E\x61\x6D\x65":_0x8498[267],"\x76\x61\x6C\x75\x65":_0x8498[268]},{"\x6E\x61\x6D\x65":_0x8498[269],"\x76\x61\x6C\x75\x65":_0x8498[270]}],"\x69\x63\x6F\x6E\x73":[{"\x6E\x61\x6D\x65":_0x8498[271],"\x76\x61\x6C\x75\x65":_0x8498[244]},{"\x6E\x61\x6D\x65":_0x8498[272],"\x76\x61\x6C\x75\x65":_0x8498[273]},{"\x6E\x61\x6D\x65":_0x8498[274],"\x76\x61\x6C\x75\x65":_0x8498[275]},{"\x6E\x61\x6D\x65":_0x8498[276],"\x76\x61\x6C\x75\x65":_0x8498[277]}],"\x73\x65\x6C\x65\x63\x74":_0x8498[296],"\x72\x65\x70\x6F\x72\x74":_0x8498[278],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E":_0x8498[104],"\x64\x65\x74\x61\x69\x6C\x73":_0x8498[297]},"\x74\x69\x74\x6C\x65":_0x8498[298],"\x74\x69\x74\x6C\x65\x54\x65\x6D\x70\x6C\x61\x74\x65\x55\x72\x6C":_0x8498[283],"\x77\x69\x64":_0x8498[299]}],"\x63\x69\x64":_0x8498[300]},{"\x73\x74\x79\x6C\x65\x43\x6C\x61\x73\x73":_0x8498[241],"\x77\x69\x64\x67\x65\x74\x73":[{"\x74\x79\x70\x65":_0x8498[242],"\x63\x6F\x6E\x66\x69\x67":{"\x74\x69\x6D\x65\x6F\x75\x74":5,"\x63\x6F\x6C\x6F\x72":_0x8498[262],"\x69\x63\x6F\x6E":_0x8498[244],"\x6C\x69\x6E\x6B":_0x8498[245],"\x6C\x69\x6E\x6B\x54\x65\x78\x74":_0x8498[246],"\x72\x65\x70\x6F\x72\x74\x54\x61\x62\x6C\x65\x73":[{"\x6E\x61\x6D\x65":_0x8498[247],"\x76\x61\x6C\x75\x65":_0x8498[248]},{"\x6E\x61\x6D\x65":_0x8498[249],"\x76\x61\x6C\x75\x65":_0x8498[250]},{"\x6E\x61\x6D\x65":_0x8498[251],"\x76\x61\x6C\x75\x65":_0x8498[252]},{"\x6E\x61\x6D\x65":_0x8498[253],"\x76\x61\x6C\x75\x65":_0x8498[254]},{"\x6E\x61\x6D\x65":_0x8498[29],"\x76\x61\x6C\x75\x65":_0x8498[255]},{"\x6E\x61\x6D\x65":_0x8498[256],"\x76\x61\x6C\x75\x65":_0x8498[257]},{"\x6E\x61\x6D\x65":_0x8498[258],"\x76\x61\x6C\x75\x65":_0x8498[259]}],"\x63\x6F\x6C\x6F\x72\x73":[{"\x6E\x61\x6D\x65":_0x8498[260],"\x76\x61\x6C\x75\x65":_0x8498[243]},{"\x6E\x61\x6D\x65":_0x8498[261],"\x76\x61\x6C\x75\x65":_0x8498[262]},{"\x6E\x61\x6D\x65":_0x8498[263],"\x76\x61\x6C\x75\x65":_0x8498[264]},{"\x6E\x61\x6D\x65":_0x8498[265],"\x76\x61\x6C\x75\x65":_0x8498[266]},{"\x6E\x61\x6D\x65":_0x8498[267],"\x76\x61\x6C\x75\x65":_0x8498[268]},{"\x6E\x61\x6D\x65":_0x8498[269],"\x76\x61\x6C\x75\x65":_0x8498[270]}],"\x69\x63\x6F\x6E\x73":[{"\x6E\x61\x6D\x65":_0x8498[271],"\x76\x61\x6C\x75\x65":_0x8498[244]},{"\x6E\x61\x6D\x65":_0x8498[272],"\x76\x61\x6C\x75\x65":_0x8498[273]},{"\x6E\x61\x6D\x65":_0x8498[274],"\x76\x61\x6C\x75\x65":_0x8498[275]},{"\x6E\x61\x6D\x65":_0x8498[276],"\x76\x61\x6C\x75\x65":_0x8498[277]}],"\x72\x65\x70\x6F\x72\x74":_0x8498[278],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E":_0x8498[301],"\x64\x65\x74\x61\x69\x6C\x73":_0x8498[302],"\x73\x65\x6C\x65\x63\x74":_0x8498[281]},"\x74\x69\x74\x6C\x65":_0x8498[282],"\x74\x69\x74\x6C\x65\x54\x65\x6D\x70\x6C\x61\x74\x65\x55\x72\x6C":_0x8498[283],"\x77\x69\x64":_0x8498[303]},{"\x74\x79\x70\x65":_0x8498[242],"\x63\x6F\x6E\x66\x69\x67":{"\x74\x69\x6D\x65\x6F\x75\x74":5,"\x63\x6F\x6C\x6F\x72":_0x8498[262],"\x69\x63\x6F\x6E":_0x8498[244],"\x6C\x69\x6E\x6B":_0x8498[245],"\x6C\x69\x6E\x6B\x54\x65\x78\x74":_0x8498[246],"\x72\x65\x70\x6F\x72\x74\x54\x61\x62\x6C\x65\x73":[{"\x6E\x61\x6D\x65":_0x8498[247],"\x76\x61\x6C\x75\x65":_0x8498[248]},{"\x6E\x61\x6D\x65":_0x8498[249],"\x76\x61\x6C\x75\x65":_0x8498[250]},{"\x6E\x61\x6D\x65":_0x8498[251],"\x76\x61\x6C\x75\x65":_0x8498[252]},{"\x6E\x61\x6D\x65":_0x8498[253],"\x76\x61\x6C\x75\x65":_0x8498[254]},{"\x6E\x61\x6D\x65":_0x8498[29],"\x76\x61\x6C\x75\x65":_0x8498[255]},{"\x6E\x61\x6D\x65":_0x8498[256],"\x76\x61\x6C\x75\x65":_0x8498[257]},{"\x6E\x61\x6D\x65":_0x8498[258],"\x76\x61\x6C\x75\x65":_0x8498[259]}],"\x63\x6F\x6C\x6F\x72\x73":[{"\x6E\x61\x6D\x65":_0x8498[260],"\x76\x61\x6C\x75\x65":_0x8498[243]},{"\x6E\x61\x6D\x65":_0x8498[261],"\x76\x61\x6C\x75\x65":_0x8498[262]},{"\x6E\x61\x6D\x65":_0x8498[263],"\x76\x61\x6C\x75\x65":_0x8498[264]},{"\x6E\x61\x6D\x65":_0x8498[265],"\x76\x61\x6C\x75\x65":_0x8498[266]},{"\x6E\x61\x6D\x65":_0x8498[267],"\x76\x61\x6C\x75\x65":_0x8498[268]},{"\x6E\x61\x6D\x65":_0x8498[269],"\x76\x61\x6C\x75\x65":_0x8498[270]}],"\x69\x63\x6F\x6E\x73":[{"\x6E\x61\x6D\x65":_0x8498[271],"\x76\x61\x6C\x75\x65":_0x8498[244]},{"\x6E\x61\x6D\x65":_0x8498[272],"\x76\x61\x6C\x75\x65":_0x8498[273]},{"\x6E\x61\x6D\x65":_0x8498[274],"\x76\x61\x6C\x75\x65":_0x8498[275]},{"\x6E\x61\x6D\x65":_0x8498[276],"\x76\x61\x6C\x75\x65":_0x8498[277]}],"\x72\x65\x70\x6F\x72\x74":_0x8498[278],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E":_0x8498[304],"\x64\x65\x74\x61\x69\x6C\x73":_0x8498[305],"\x73\x65\x6C\x65\x63\x74":_0x8498[281]},"\x74\x69\x74\x6C\x65":_0x8498[282],"\x74\x69\x74\x6C\x65\x54\x65\x6D\x70\x6C\x61\x74\x65\x55\x72\x6C":_0x8498[283],"\x77\x69\x64":_0x8498[306]},{"\x74\x79\x70\x65":_0x8498[242],"\x63\x6F\x6E\x66\x69\x67":{"\x74\x69\x6D\x65\x6F\x75\x74":5,"\x63\x6F\x6C\x6F\x72":_0x8498[262],"\x69\x63\x6F\x6E":_0x8498[244],"\x6C\x69\x6E\x6B":_0x8498[245],"\x6C\x69\x6E\x6B\x54\x65\x78\x74":_0x8498[246],"\x72\x65\x70\x6F\x72\x74\x54\x61\x62\x6C\x65\x73":[{"\x6E\x61\x6D\x65":_0x8498[247],"\x76\x61\x6C\x75\x65":_0x8498[248]},{"\x6E\x61\x6D\x65":_0x8498[249],"\x76\x61\x6C\x75\x65":_0x8498[250]},{"\x6E\x61\x6D\x65":_0x8498[251],"\x76\x61\x6C\x75\x65":_0x8498[252]},{"\x6E\x61\x6D\x65":_0x8498[253],"\x76\x61\x6C\x75\x65":_0x8498[254]},{"\x6E\x61\x6D\x65":_0x8498[29],"\x76\x61\x6C\x75\x65":_0x8498[255]},{"\x6E\x61\x6D\x65":_0x8498[256],"\x76\x61\x6C\x75\x65":_0x8498[257]},{"\x6E\x61\x6D\x65":_0x8498[258],"\x76\x61\x6C\x75\x65":_0x8498[259]}],"\x63\x6F\x6C\x6F\x72\x73":[{"\x6E\x61\x6D\x65":_0x8498[260],"\x76\x61\x6C\x75\x65":_0x8498[243]},{"\x6E\x61\x6D\x65":_0x8498[261],"\x76\x61\x6C\x75\x65":_0x8498[262]},{"\x6E\x61\x6D\x65":_0x8498[263],"\x76\x61\x6C\x75\x65":_0x8498[264]},{"\x6E\x61\x6D\x65":_0x8498[265],"\x76\x61\x6C\x75\x65":_0x8498[266]},{"\x6E\x61\x6D\x65":_0x8498[267],"\x76\x61\x6C\x75\x65":_0x8498[268]},{"\x6E\x61\x6D\x65":_0x8498[269],"\x76\x61\x6C\x75\x65":_0x8498[270]}],"\x69\x63\x6F\x6E\x73":[{"\x6E\x61\x6D\x65":_0x8498[271],"\x76\x61\x6C\x75\x65":_0x8498[244]},{"\x6E\x61\x6D\x65":_0x8498[272],"\x76\x61\x6C\x75\x65":_0x8498[273]},{"\x6E\x61\x6D\x65":_0x8498[274],"\x76\x61\x6C\x75\x65":_0x8498[275]},{"\x6E\x61\x6D\x65":_0x8498[276],"\x76\x61\x6C\x75\x65":_0x8498[277]}],"\x73\x65\x6C\x65\x63\x74":_0x8498[307],"\x72\x65\x70\x6F\x72\x74":_0x8498[278],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E":_0x8498[104],"\x64\x65\x74\x61\x69\x6C\x73":_0x8498[308]},"\x74\x69\x74\x6C\x65":_0x8498[282],"\x74\x69\x74\x6C\x65\x54\x65\x6D\x70\x6C\x61\x74\x65\x55\x72\x6C":_0x8498[283],"\x77\x69\x64":_0x8498[309]},{"\x74\x79\x70\x65":_0x8498[242],"\x63\x6F\x6E\x66\x69\x67":{"\x74\x69\x6D\x65\x6F\x75\x74":5,"\x63\x6F\x6C\x6F\x72":_0x8498[268],"\x69\x63\x6F\x6E":_0x8498[244],"\x6C\x69\x6E\x6B":_0x8498[245],"\x6C\x69\x6E\x6B\x54\x65\x78\x74":_0x8498[246],"\x72\x65\x70\x6F\x72\x74\x54\x61\x62\x6C\x65\x73":[{"\x6E\x61\x6D\x65":_0x8498[247],"\x76\x61\x6C\x75\x65":_0x8498[248]},{"\x6E\x61\x6D\x65":_0x8498[249],"\x76\x61\x6C\x75\x65":_0x8498[250]},{"\x6E\x61\x6D\x65":_0x8498[251],"\x76\x61\x6C\x75\x65":_0x8498[252]},{"\x6E\x61\x6D\x65":_0x8498[253],"\x76\x61\x6C\x75\x65":_0x8498[254]},{"\x6E\x61\x6D\x65":_0x8498[29],"\x76\x61\x6C\x75\x65":_0x8498[255]},{"\x6E\x61\x6D\x65":_0x8498[256],"\x76\x61\x6C\x75\x65":_0x8498[257]},{"\x6E\x61\x6D\x65":_0x8498[258],"\x76\x61\x6C\x75\x65":_0x8498[259]}],"\x63\x6F\x6C\x6F\x72\x73":[{"\x6E\x61\x6D\x65":_0x8498[260],"\x76\x61\x6C\x75\x65":_0x8498[243]},{"\x6E\x61\x6D\x65":_0x8498[261],"\x76\x61\x6C\x75\x65":_0x8498[262]},{"\x6E\x61\x6D\x65":_0x8498[263],"\x76\x61\x6C\x75\x65":_0x8498[264]},{"\x6E\x61\x6D\x65":_0x8498[265],"\x76\x61\x6C\x75\x65":_0x8498[266]},{"\x6E\x61\x6D\x65":_0x8498[267],"\x76\x61\x6C\x75\x65":_0x8498[268]},{"\x6E\x61\x6D\x65":_0x8498[269],"\x76\x61\x6C\x75\x65":_0x8498[270]}],"\x69\x63\x6F\x6E\x73":[{"\x6E\x61\x6D\x65":_0x8498[271],"\x76\x61\x6C\x75\x65":_0x8498[244]},{"\x6E\x61\x6D\x65":_0x8498[272],"\x76\x61\x6C\x75\x65":_0x8498[273]},{"\x6E\x61\x6D\x65":_0x8498[274],"\x76\x61\x6C\x75\x65":_0x8498[275]},{"\x6E\x61\x6D\x65":_0x8498[276],"\x76\x61\x6C\x75\x65":_0x8498[277]}],"\x73\x65\x6C\x65\x63\x74":_0x8498[310],"\x72\x65\x70\x6F\x72\x74":_0x8498[292],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E":_0x8498[293],"\x64\x65\x74\x61\x69\x6C\x73":_0x8498[311]},"\x74\x69\x74\x6C\x65":_0x8498[282],"\x74\x69\x74\x6C\x65\x54\x65\x6D\x70\x6C\x61\x74\x65\x55\x72\x6C":_0x8498[283],"\x77\x69\x64":_0x8498[312]},{"\x74\x79\x70\x65":_0x8498[242],"\x63\x6F\x6E\x66\x69\x67":{"\x74\x69\x6D\x65\x6F\x75\x74":5,"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E":_0x8498[104],"\x63\x6F\x6C\x6F\x72":_0x8498[264],"\x69\x63\x6F\x6E":_0x8498[244],"\x6C\x69\x6E\x6B":_0x8498[245],"\x6C\x69\x6E\x6B\x54\x65\x78\x74":_0x8498[246],"\x72\x65\x70\x6F\x72\x74\x54\x61\x62\x6C\x65\x73":[{"\x6E\x61\x6D\x65":_0x8498[247],"\x76\x61\x6C\x75\x65":_0x8498[248]},{"\x6E\x61\x6D\x65":_0x8498[249],"\x76\x61\x6C\x75\x65":_0x8498[250]},{"\x6E\x61\x6D\x65":_0x8498[251],"\x76\x61\x6C\x75\x65":_0x8498[252]},{"\x6E\x61\x6D\x65":_0x8498[253],"\x76\x61\x6C\x75\x65":_0x8498[254]},{"\x6E\x61\x6D\x65":_0x8498[29],"\x76\x61\x6C\x75\x65":_0x8498[255]},{"\x6E\x61\x6D\x65":_0x8498[256],"\x76\x61\x6C\x75\x65":_0x8498[257]},{"\x6E\x61\x6D\x65":_0x8498[258],"\x76\x61\x6C\x75\x65":_0x8498[259]}],"\x63\x6F\x6C\x6F\x72\x73":[{"\x6E\x61\x6D\x65":_0x8498[260],"\x76\x61\x6C\x75\x65":_0x8498[243]},{"\x6E\x61\x6D\x65":_0x8498[261],"\x76\x61\x6C\x75\x65":_0x8498[262]},{"\x6E\x61\x6D\x65":_0x8498[263],"\x76\x61\x6C\x75\x65":_0x8498[264]},{"\x6E\x61\x6D\x65":_0x8498[265],"\x76\x61\x6C\x75\x65":_0x8498[266]},{"\x6E\x61\x6D\x65":_0x8498[267],"\x76\x61\x6C\x75\x65":_0x8498[268]},{"\x6E\x61\x6D\x65":_0x8498[269],"\x76\x61\x6C\x75\x65":_0x8498[270]}],"\x69\x63\x6F\x6E\x73":[{"\x6E\x61\x6D\x65":_0x8498[271],"\x76\x61\x6C\x75\x65":_0x8498[244]},{"\x6E\x61\x6D\x65":_0x8498[272],"\x76\x61\x6C\x75\x65":_0x8498[273]},{"\x6E\x61\x6D\x65":_0x8498[274],"\x76\x61\x6C\x75\x65":_0x8498[275]},{"\x6E\x61\x6D\x65":_0x8498[276],"\x76\x61\x6C\x75\x65":_0x8498[277]}],"\x73\x65\x6C\x65\x63\x74":_0x8498[313],"\x72\x65\x70\x6F\x72\x74":_0x8498[278],"\x64\x65\x74\x61\x69\x6C\x73":_0x8498[314]},"\x74\x69\x74\x6C\x65":_0x8498[315],"\x74\x69\x74\x6C\x65\x54\x65\x6D\x70\x6C\x61\x74\x65\x55\x72\x6C":_0x8498[283],"\x77\x69\x64":_0x8498[316]}],"\x63\x69\x64":_0x8498[317]},{"\x73\x74\x79\x6C\x65\x43\x6C\x61\x73\x73":_0x8498[241],"\x77\x69\x64\x67\x65\x74\x73":[{"\x74\x79\x70\x65":_0x8498[242],"\x63\x6F\x6E\x66\x69\x67":{"\x74\x69\x6D\x65\x6F\x75\x74":5,"\x63\x6F\x6C\x6F\x72":_0x8498[243],"\x69\x63\x6F\x6E":_0x8498[244],"\x6C\x69\x6E\x6B":_0x8498[245],"\x6C\x69\x6E\x6B\x54\x65\x78\x74":_0x8498[246],"\x72\x65\x70\x6F\x72\x74\x54\x61\x62\x6C\x65\x73":[{"\x6E\x61\x6D\x65":_0x8498[247],"\x76\x61\x6C\x75\x65":_0x8498[248]},{"\x6E\x61\x6D\x65":_0x8498[249],"\x76\x61\x6C\x75\x65":_0x8498[250]},{"\x6E\x61\x6D\x65":_0x8498[251],"\x76\x61\x6C\x75\x65":_0x8498[252]},{"\x6E\x61\x6D\x65":_0x8498[253],"\x76\x61\x6C\x75\x65":_0x8498[254]},{"\x6E\x61\x6D\x65":_0x8498[29],"\x76\x61\x6C\x75\x65":_0x8498[255]},{"\x6E\x61\x6D\x65":_0x8498[256],"\x76\x61\x6C\x75\x65":_0x8498[257]},{"\x6E\x61\x6D\x65":_0x8498[258],"\x76\x61\x6C\x75\x65":_0x8498[259]}],"\x63\x6F\x6C\x6F\x72\x73":[{"\x6E\x61\x6D\x65":_0x8498[260],"\x76\x61\x6C\x75\x65":_0x8498[243]},{"\x6E\x61\x6D\x65":_0x8498[261],"\x76\x61\x6C\x75\x65":_0x8498[262]},{"\x6E\x61\x6D\x65":_0x8498[263],"\x76\x61\x6C\x75\x65":_0x8498[264]},{"\x6E\x61\x6D\x65":_0x8498[265],"\x76\x61\x6C\x75\x65":_0x8498[266]},{"\x6E\x61\x6D\x65":_0x8498[267],"\x76\x61\x6C\x75\x65":_0x8498[268]},{"\x6E\x61\x6D\x65":_0x8498[269],"\x76\x61\x6C\x75\x65":_0x8498[270]}],"\x69\x63\x6F\x6E\x73":[{"\x6E\x61\x6D\x65":_0x8498[271],"\x76\x61\x6C\x75\x65":_0x8498[244]},{"\x6E\x61\x6D\x65":_0x8498[272],"\x76\x61\x6C\x75\x65":_0x8498[273]},{"\x6E\x61\x6D\x65":_0x8498[274],"\x76\x61\x6C\x75\x65":_0x8498[275]},{"\x6E\x61\x6D\x65":_0x8498[276],"\x76\x61\x6C\x75\x65":_0x8498[277]}],"\x73\x65\x6C\x65\x63\x74":_0x8498[318],"\x72\x65\x70\x6F\x72\x74":_0x8498[278],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E":_0x8498[279],"\x64\x65\x74\x61\x69\x6C\x73":_0x8498[319]},"\x74\x69\x74\x6C\x65":_0x8498[282],"\x74\x69\x74\x6C\x65\x54\x65\x6D\x70\x6C\x61\x74\x65\x55\x72\x6C":_0x8498[283],"\x77\x69\x64":_0x8498[320]},{"\x74\x79\x70\x65":_0x8498[242],"\x63\x6F\x6E\x66\x69\x67":{"\x74\x69\x6D\x65\x6F\x75\x74":5,"\x63\x6F\x6C\x6F\x72":_0x8498[268],"\x69\x63\x6F\x6E":_0x8498[273],"\x6C\x69\x6E\x6B":_0x8498[245],"\x6C\x69\x6E\x6B\x54\x65\x78\x74":_0x8498[246],"\x72\x65\x70\x6F\x72\x74\x54\x61\x62\x6C\x65\x73":[{"\x6E\x61\x6D\x65":_0x8498[247],"\x76\x61\x6C\x75\x65":_0x8498[248]},{"\x6E\x61\x6D\x65":_0x8498[249],"\x76\x61\x6C\x75\x65":_0x8498[250]},{"\x6E\x61\x6D\x65":_0x8498[251],"\x76\x61\x6C\x75\x65":_0x8498[252]},{"\x6E\x61\x6D\x65":_0x8498[253],"\x76\x61\x6C\x75\x65":_0x8498[254]},{"\x6E\x61\x6D\x65":_0x8498[29],"\x76\x61\x6C\x75\x65":_0x8498[255]},{"\x6E\x61\x6D\x65":_0x8498[256],"\x76\x61\x6C\x75\x65":_0x8498[257]},{"\x6E\x61\x6D\x65":_0x8498[258],"\x76\x61\x6C\x75\x65":_0x8498[259]}],"\x63\x6F\x6C\x6F\x72\x73":[{"\x6E\x61\x6D\x65":_0x8498[260],"\x76\x61\x6C\x75\x65":_0x8498[243]},{"\x6E\x61\x6D\x65":_0x8498[261],"\x76\x61\x6C\x75\x65":_0x8498[262]},{"\x6E\x61\x6D\x65":_0x8498[263],"\x76\x61\x6C\x75\x65":_0x8498[264]},{"\x6E\x61\x6D\x65":_0x8498[265],"\x76\x61\x6C\x75\x65":_0x8498[266]},{"\x6E\x61\x6D\x65":_0x8498[267],"\x76\x61\x6C\x75\x65":_0x8498[268]},{"\x6E\x61\x6D\x65":_0x8498[269],"\x76\x61\x6C\x75\x65":_0x8498[270]}],"\x69\x63\x6F\x6E\x73":[{"\x6E\x61\x6D\x65":_0x8498[271],"\x76\x61\x6C\x75\x65":_0x8498[244]},{"\x6E\x61\x6D\x65":_0x8498[272],"\x76\x61\x6C\x75\x65":_0x8498[273]},{"\x6E\x61\x6D\x65":_0x8498[274],"\x76\x61\x6C\x75\x65":_0x8498[275]},{"\x6E\x61\x6D\x65":_0x8498[276],"\x76\x61\x6C\x75\x65":_0x8498[277]}],"\x73\x65\x6C\x65\x63\x74":_0x8498[321],"\x72\x65\x70\x6F\x72\x74":_0x8498[278],"\x64\x65\x74\x61\x69\x6C\x73":_0x8498[322],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E":_0x8498[104]},"\x74\x69\x74\x6C\x65":_0x8498[282],"\x74\x69\x74\x6C\x65\x54\x65\x6D\x70\x6C\x61\x74\x65\x55\x72\x6C":_0x8498[283],"\x77\x69\x64":_0x8498[323]},{"\x74\x79\x70\x65":_0x8498[242],"\x63\x6F\x6E\x66\x69\x67":{"\x74\x69\x6D\x65\x6F\x75\x74":5,"\x63\x6F\x6C\x6F\x72":_0x8498[268],"\x69\x63\x6F\x6E":_0x8498[273],"\x6C\x69\x6E\x6B":_0x8498[245],"\x6C\x69\x6E\x6B\x54\x65\x78\x74":_0x8498[246],"\x72\x65\x70\x6F\x72\x74\x54\x61\x62\x6C\x65\x73":[{"\x6E\x61\x6D\x65":_0x8498[247],"\x76\x61\x6C\x75\x65":_0x8498[248]},{"\x6E\x61\x6D\x65":_0x8498[249],"\x76\x61\x6C\x75\x65":_0x8498[250]},{"\x6E\x61\x6D\x65":_0x8498[251],"\x76\x61\x6C\x75\x65":_0x8498[252]},{"\x6E\x61\x6D\x65":_0x8498[253],"\x76\x61\x6C\x75\x65":_0x8498[254]},{"\x6E\x61\x6D\x65":_0x8498[29],"\x76\x61\x6C\x75\x65":_0x8498[255]},{"\x6E\x61\x6D\x65":_0x8498[256],"\x76\x61\x6C\x75\x65":_0x8498[257]},{"\x6E\x61\x6D\x65":_0x8498[258],"\x76\x61\x6C\x75\x65":_0x8498[259]}],"\x63\x6F\x6C\x6F\x72\x73":[{"\x6E\x61\x6D\x65":_0x8498[260],"\x76\x61\x6C\x75\x65":_0x8498[243]},{"\x6E\x61\x6D\x65":_0x8498[261],"\x76\x61\x6C\x75\x65":_0x8498[262]},{"\x6E\x61\x6D\x65":_0x8498[263],"\x76\x61\x6C\x75\x65":_0x8498[264]},{"\x6E\x61\x6D\x65":_0x8498[265],"\x76\x61\x6C\x75\x65":_0x8498[266]},{"\x6E\x61\x6D\x65":_0x8498[267],"\x76\x61\x6C\x75\x65":_0x8498[268]},{"\x6E\x61\x6D\x65":_0x8498[269],"\x76\x61\x6C\x75\x65":_0x8498[270]}],"\x69\x63\x6F\x6E\x73":[{"\x6E\x61\x6D\x65":_0x8498[271],"\x76\x61\x6C\x75\x65":_0x8498[244]},{"\x6E\x61\x6D\x65":_0x8498[272],"\x76\x61\x6C\x75\x65":_0x8498[273]},{"\x6E\x61\x6D\x65":_0x8498[274],"\x76\x61\x6C\x75\x65":_0x8498[275]},{"\x6E\x61\x6D\x65":_0x8498[276],"\x76\x61\x6C\x75\x65":_0x8498[277]}],"\x73\x65\x6C\x65\x63\x74":_0x8498[324],"\x72\x65\x70\x6F\x72\x74":_0x8498[278],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E":_0x8498[104],"\x64\x65\x74\x61\x69\x6C\x73":_0x8498[325]},"\x74\x69\x74\x6C\x65":_0x8498[282],"\x74\x69\x74\x6C\x65\x54\x65\x6D\x70\x6C\x61\x74\x65\x55\x72\x6C":_0x8498[283],"\x77\x69\x64":_0x8498[326]},{"\x74\x79\x70\x65":_0x8498[242],"\x63\x6F\x6E\x66\x69\x67":{"\x74\x69\x6D\x65\x6F\x75\x74":5,"\x63\x6F\x6C\x6F\x72":_0x8498[262],"\x69\x63\x6F\x6E":_0x8498[244],"\x6C\x69\x6E\x6B":_0x8498[245],"\x6C\x69\x6E\x6B\x54\x65\x78\x74":_0x8498[246],"\x72\x65\x70\x6F\x72\x74\x54\x61\x62\x6C\x65\x73":[{"\x6E\x61\x6D\x65":_0x8498[247],"\x76\x61\x6C\x75\x65":_0x8498[248]},{"\x6E\x61\x6D\x65":_0x8498[249],"\x76\x61\x6C\x75\x65":_0x8498[250]},{"\x6E\x61\x6D\x65":_0x8498[251],"\x76\x61\x6C\x75\x65":_0x8498[252]},{"\x6E\x61\x6D\x65":_0x8498[253],"\x76\x61\x6C\x75\x65":_0x8498[254]},{"\x6E\x61\x6D\x65":_0x8498[29],"\x76\x61\x6C\x75\x65":_0x8498[255]},{"\x6E\x61\x6D\x65":_0x8498[256],"\x76\x61\x6C\x75\x65":_0x8498[257]},{"\x6E\x61\x6D\x65":_0x8498[258],"\x76\x61\x6C\x75\x65":_0x8498[259]}],"\x63\x6F\x6C\x6F\x72\x73":[{"\x6E\x61\x6D\x65":_0x8498[260],"\x76\x61\x6C\x75\x65":_0x8498[243]},{"\x6E\x61\x6D\x65":_0x8498[261],"\x76\x61\x6C\x75\x65":_0x8498[262]},{"\x6E\x61\x6D\x65":_0x8498[263],"\x76\x61\x6C\x75\x65":_0x8498[264]},{"\x6E\x61\x6D\x65":_0x8498[265],"\x76\x61\x6C\x75\x65":_0x8498[266]},{"\x6E\x61\x6D\x65":_0x8498[267],"\x76\x61\x6C\x75\x65":_0x8498[268]},{"\x6E\x61\x6D\x65":_0x8498[269],"\x76\x61\x6C\x75\x65":_0x8498[270]}],"\x69\x63\x6F\x6E\x73":[{"\x6E\x61\x6D\x65":_0x8498[271],"\x76\x61\x6C\x75\x65":_0x8498[244]},{"\x6E\x61\x6D\x65":_0x8498[272],"\x76\x61\x6C\x75\x65":_0x8498[273]},{"\x6E\x61\x6D\x65":_0x8498[274],"\x76\x61\x6C\x75\x65":_0x8498[275]},{"\x6E\x61\x6D\x65":_0x8498[276],"\x76\x61\x6C\x75\x65":_0x8498[277]}],"\x73\x65\x6C\x65\x63\x74":_0x8498[327],"\x72\x65\x70\x6F\x72\x74":_0x8498[278],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E":_0x8498[304],"\x64\x65\x74\x61\x69\x6C\x73":_0x8498[328]},"\x74\x69\x74\x6C\x65":_0x8498[282],"\x74\x69\x74\x6C\x65\x54\x65\x6D\x70\x6C\x61\x74\x65\x55\x72\x6C":_0x8498[283],"\x77\x69\x64":_0x8498[329]},{"\x74\x79\x70\x65":_0x8498[242],"\x63\x6F\x6E\x66\x69\x67":{"\x74\x69\x6D\x65\x6F\x75\x74":5,"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E":_0x8498[104],"\x63\x6F\x6C\x6F\x72":_0x8498[264],"\x69\x63\x6F\x6E":_0x8498[244],"\x6C\x69\x6E\x6B":_0x8498[245],"\x6C\x69\x6E\x6B\x54\x65\x78\x74":_0x8498[246],"\x72\x65\x70\x6F\x72\x74\x54\x61\x62\x6C\x65\x73":[{"\x6E\x61\x6D\x65":_0x8498[247],"\x76\x61\x6C\x75\x65":_0x8498[248]},{"\x6E\x61\x6D\x65":_0x8498[249],"\x76\x61\x6C\x75\x65":_0x8498[250]},{"\x6E\x61\x6D\x65":_0x8498[251],"\x76\x61\x6C\x75\x65":_0x8498[252]},{"\x6E\x61\x6D\x65":_0x8498[253],"\x76\x61\x6C\x75\x65":_0x8498[254]},{"\x6E\x61\x6D\x65":_0x8498[29],"\x76\x61\x6C\x75\x65":_0x8498[255]},{"\x6E\x61\x6D\x65":_0x8498[256],"\x76\x61\x6C\x75\x65":_0x8498[257]},{"\x6E\x61\x6D\x65":_0x8498[258],"\x76\x61\x6C\x75\x65":_0x8498[259]}],"\x63\x6F\x6C\x6F\x72\x73":[{"\x6E\x61\x6D\x65":_0x8498[260],"\x76\x61\x6C\x75\x65":_0x8498[243]},{"\x6E\x61\x6D\x65":_0x8498[261],"\x76\x61\x6C\x75\x65":_0x8498[262]},{"\x6E\x61\x6D\x65":_0x8498[263],"\x76\x61\x6C\x75\x65":_0x8498[264]},{"\x6E\x61\x6D\x65":_0x8498[265],"\x76\x61\x6C\x75\x65":_0x8498[266]},{"\x6E\x61\x6D\x65":_0x8498[267],"\x76\x61\x6C\x75\x65":_0x8498[268]},{"\x6E\x61\x6D\x65":_0x8498[269],"\x76\x61\x6C\x75\x65":_0x8498[270]}],"\x69\x63\x6F\x6E\x73":[{"\x6E\x61\x6D\x65":_0x8498[271],"\x76\x61\x6C\x75\x65":_0x8498[244]},{"\x6E\x61\x6D\x65":_0x8498[272],"\x76\x61\x6C\x75\x65":_0x8498[273]},{"\x6E\x61\x6D\x65":_0x8498[274],"\x76\x61\x6C\x75\x65":_0x8498[275]},{"\x6E\x61\x6D\x65":_0x8498[276],"\x76\x61\x6C\x75\x65":_0x8498[277]}],"\x73\x65\x6C\x65\x63\x74":_0x8498[330],"\x72\x65\x70\x6F\x72\x74":_0x8498[278],"\x64\x65\x74\x61\x69\x6C\x73":_0x8498[331]},"\x74\x69\x74\x6C\x65":_0x8498[332],"\x74\x69\x74\x6C\x65\x54\x65\x6D\x70\x6C\x61\x74\x65\x55\x72\x6C":_0x8498[283],"\x77\x69\x64":_0x8498[333]}],"\x63\x69\x64":_0x8498[334]},{"\x73\x74\x79\x6C\x65\x43\x6C\x61\x73\x73":_0x8498[241],"\x77\x69\x64\x67\x65\x74\x73":[{"\x74\x79\x70\x65":_0x8498[242],"\x63\x6F\x6E\x66\x69\x67":{"\x74\x69\x6D\x65\x6F\x75\x74":5,"\x63\x6F\x6C\x6F\x72":_0x8498[262],"\x69\x63\x6F\x6E":_0x8498[244],"\x6C\x69\x6E\x6B":_0x8498[245],"\x6C\x69\x6E\x6B\x54\x65\x78\x74":_0x8498[246],"\x72\x65\x70\x6F\x72\x74\x54\x61\x62\x6C\x65\x73":[{"\x6E\x61\x6D\x65":_0x8498[247],"\x76\x61\x6C\x75\x65":_0x8498[248]},{"\x6E\x61\x6D\x65":_0x8498[249],"\x76\x61\x6C\x75\x65":_0x8498[250]},{"\x6E\x61\x6D\x65":_0x8498[251],"\x76\x61\x6C\x75\x65":_0x8498[252]},{"\x6E\x61\x6D\x65":_0x8498[253],"\x76\x61\x6C\x75\x65":_0x8498[254]},{"\x6E\x61\x6D\x65":_0x8498[29],"\x76\x61\x6C\x75\x65":_0x8498[255]},{"\x6E\x61\x6D\x65":_0x8498[256],"\x76\x61\x6C\x75\x65":_0x8498[257]},{"\x6E\x61\x6D\x65":_0x8498[258],"\x76\x61\x6C\x75\x65":_0x8498[259]}],"\x63\x6F\x6C\x6F\x72\x73":[{"\x6E\x61\x6D\x65":_0x8498[260],"\x76\x61\x6C\x75\x65":_0x8498[243]},{"\x6E\x61\x6D\x65":_0x8498[261],"\x76\x61\x6C\x75\x65":_0x8498[262]},{"\x6E\x61\x6D\x65":_0x8498[263],"\x76\x61\x6C\x75\x65":_0x8498[264]},{"\x6E\x61\x6D\x65":_0x8498[265],"\x76\x61\x6C\x75\x65":_0x8498[266]},{"\x6E\x61\x6D\x65":_0x8498[267],"\x76\x61\x6C\x75\x65":_0x8498[268]},{"\x6E\x61\x6D\x65":_0x8498[269],"\x76\x61\x6C\x75\x65":_0x8498[270]}],"\x69\x63\x6F\x6E\x73":[{"\x6E\x61\x6D\x65":_0x8498[271],"\x76\x61\x6C\x75\x65":_0x8498[244]},{"\x6E\x61\x6D\x65":_0x8498[272],"\x76\x61\x6C\x75\x65":_0x8498[273]},{"\x6E\x61\x6D\x65":_0x8498[274],"\x76\x61\x6C\x75\x65":_0x8498[275]},{"\x6E\x61\x6D\x65":_0x8498[276],"\x76\x61\x6C\x75\x65":_0x8498[277]}],"\x73\x65\x6C\x65\x63\x74":_0x8498[335],"\x72\x65\x70\x6F\x72\x74":_0x8498[278],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E":_0x8498[301],"\x64\x65\x74\x61\x69\x6C\x73":_0x8498[336]},"\x74\x69\x74\x6C\x65":_0x8498[282],"\x74\x69\x74\x6C\x65\x54\x65\x6D\x70\x6C\x61\x74\x65\x55\x72\x6C":_0x8498[283],"\x77\x69\x64":_0x8498[337]},{"\x74\x79\x70\x65":_0x8498[242],"\x63\x6F\x6E\x66\x69\x67":{"\x74\x69\x6D\x65\x6F\x75\x74":5,"\x63\x6F\x6C\x6F\x72":_0x8498[262],"\x69\x63\x6F\x6E":_0x8498[244],"\x6C\x69\x6E\x6B":_0x8498[245],"\x6C\x69\x6E\x6B\x54\x65\x78\x74":_0x8498[246],"\x72\x65\x70\x6F\x72\x74\x54\x61\x62\x6C\x65\x73":[{"\x6E\x61\x6D\x65":_0x8498[247],"\x76\x61\x6C\x75\x65":_0x8498[248]},{"\x6E\x61\x6D\x65":_0x8498[249],"\x76\x61\x6C\x75\x65":_0x8498[250]},{"\x6E\x61\x6D\x65":_0x8498[251],"\x76\x61\x6C\x75\x65":_0x8498[252]},{"\x6E\x61\x6D\x65":_0x8498[253],"\x76\x61\x6C\x75\x65":_0x8498[254]},{"\x6E\x61\x6D\x65":_0x8498[29],"\x76\x61\x6C\x75\x65":_0x8498[255]},{"\x6E\x61\x6D\x65":_0x8498[256],"\x76\x61\x6C\x75\x65":_0x8498[257]},{"\x6E\x61\x6D\x65":_0x8498[258],"\x76\x61\x6C\x75\x65":_0x8498[259]}],"\x63\x6F\x6C\x6F\x72\x73":[{"\x6E\x61\x6D\x65":_0x8498[260],"\x76\x61\x6C\x75\x65":_0x8498[243]},{"\x6E\x61\x6D\x65":_0x8498[261],"\x76\x61\x6C\x75\x65":_0x8498[262]},{"\x6E\x61\x6D\x65":_0x8498[263],"\x76\x61\x6C\x75\x65":_0x8498[264]},{"\x6E\x61\x6D\x65":_0x8498[265],"\x76\x61\x6C\x75\x65":_0x8498[266]},{"\x6E\x61\x6D\x65":_0x8498[267],"\x76\x61\x6C\x75\x65":_0x8498[268]},{"\x6E\x61\x6D\x65":_0x8498[269],"\x76\x61\x6C\x75\x65":_0x8498[270]}],"\x69\x63\x6F\x6E\x73":[{"\x6E\x61\x6D\x65":_0x8498[271],"\x76\x61\x6C\x75\x65":_0x8498[244]},{"\x6E\x61\x6D\x65":_0x8498[272],"\x76\x61\x6C\x75\x65":_0x8498[273]},{"\x6E\x61\x6D\x65":_0x8498[274],"\x76\x61\x6C\x75\x65":_0x8498[275]},{"\x6E\x61\x6D\x65":_0x8498[276],"\x76\x61\x6C\x75\x65":_0x8498[277]}],"\x73\x65\x6C\x65\x63\x74":_0x8498[281],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E":_0x8498[338],"\x72\x65\x70\x6F\x72\x74":_0x8498[278],"\x64\x65\x74\x61\x69\x6C\x73":_0x8498[339]},"\x74\x69\x74\x6C\x65":_0x8498[282],"\x74\x69\x74\x6C\x65\x54\x65\x6D\x70\x6C\x61\x74\x65\x55\x72\x6C":_0x8498[283],"\x77\x69\x64":_0x8498[340]},{"\x74\x79\x70\x65":_0x8498[242],"\x63\x6F\x6E\x66\x69\x67":{"\x74\x69\x6D\x65\x6F\x75\x74":5,"\x63\x6F\x6C\x6F\x72":_0x8498[270],"\x69\x63\x6F\x6E":_0x8498[244],"\x6C\x69\x6E\x6B":_0x8498[245],"\x6C\x69\x6E\x6B\x54\x65\x78\x74":_0x8498[246],"\x72\x65\x70\x6F\x72\x74\x54\x61\x62\x6C\x65\x73":[{"\x6E\x61\x6D\x65":_0x8498[247],"\x76\x61\x6C\x75\x65":_0x8498[248]},{"\x6E\x61\x6D\x65":_0x8498[249],"\x76\x61\x6C\x75\x65":_0x8498[250]},{"\x6E\x61\x6D\x65":_0x8498[251],"\x76\x61\x6C\x75\x65":_0x8498[252]},{"\x6E\x61\x6D\x65":_0x8498[253],"\x76\x61\x6C\x75\x65":_0x8498[254]},{"\x6E\x61\x6D\x65":_0x8498[29],"\x76\x61\x6C\x75\x65":_0x8498[255]},{"\x6E\x61\x6D\x65":_0x8498[256],"\x76\x61\x6C\x75\x65":_0x8498[257]},{"\x6E\x61\x6D\x65":_0x8498[258],"\x76\x61\x6C\x75\x65":_0x8498[259]}],"\x63\x6F\x6C\x6F\x72\x73":[{"\x6E\x61\x6D\x65":_0x8498[260],"\x76\x61\x6C\x75\x65":_0x8498[243]},{"\x6E\x61\x6D\x65":_0x8498[261],"\x76\x61\x6C\x75\x65":_0x8498[262]},{"\x6E\x61\x6D\x65":_0x8498[263],"\x76\x61\x6C\x75\x65":_0x8498[264]},{"\x6E\x61\x6D\x65":_0x8498[265],"\x76\x61\x6C\x75\x65":_0x8498[266]},{"\x6E\x61\x6D\x65":_0x8498[267],"\x76\x61\x6C\x75\x65":_0x8498[268]},{"\x6E\x61\x6D\x65":_0x8498[269],"\x76\x61\x6C\x75\x65":_0x8498[270]}],"\x69\x63\x6F\x6E\x73":[{"\x6E\x61\x6D\x65":_0x8498[271],"\x76\x61\x6C\x75\x65":_0x8498[244]},{"\x6E\x61\x6D\x65":_0x8498[272],"\x76\x61\x6C\x75\x65":_0x8498[273]},{"\x6E\x61\x6D\x65":_0x8498[274],"\x76\x61\x6C\x75\x65":_0x8498[275]},{"\x6E\x61\x6D\x65":_0x8498[276],"\x76\x61\x6C\x75\x65":_0x8498[277]}],"\x73\x65\x6C\x65\x63\x74":_0x8498[341],"\x72\x65\x70\x6F\x72\x74":_0x8498[292],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E":_0x8498[293],"\x64\x65\x74\x61\x69\x6C\x73":_0x8498[342]},"\x74\x69\x74\x6C\x65":_0x8498[282],"\x74\x69\x74\x6C\x65\x54\x65\x6D\x70\x6C\x61\x74\x65\x55\x72\x6C":_0x8498[283],"\x77\x69\x64":_0x8498[343]}],"\x63\x69\x64":_0x8498[344]}]}],"\x74\x69\x74\x6C\x65\x54\x65\x6D\x70\x6C\x61\x74\x65\x55\x72\x6C":_0x8498[345],"\x73\x74\x72\x75\x63\x74\x75\x72\x65":_0x8498[346]}),defaultEntry:true,editable:true},{name:_0x8498[348],model:JSON[_0x8498[347]]({"\x74\x69\x74\x6C\x65":_0x8498[348],"\x72\x6F\x77\x73":[{"\x63\x6F\x6C\x75\x6D\x6E\x73":[{"\x73\x74\x79\x6C\x65\x43\x6C\x61\x73\x73":_0x8498[241],"\x77\x69\x64\x67\x65\x74\x73":[{"\x74\x79\x70\x65":_0x8498[242],"\x63\x6F\x6E\x66\x69\x67":{"\x74\x69\x6D\x65\x6F\x75\x74":5,"\x63\x6F\x6C\x6F\x72":_0x8498[266],"\x69\x63\x6F\x6E":_0x8498[277],"\x6C\x69\x6E\x6B":_0x8498[245],"\x6C\x69\x6E\x6B\x54\x65\x78\x74":_0x8498[246],"\x72\x65\x70\x6F\x72\x74\x54\x61\x62\x6C\x65\x73":[{"\x6E\x61\x6D\x65":_0x8498[247],"\x76\x61\x6C\x75\x65":_0x8498[248]},{"\x6E\x61\x6D\x65":_0x8498[249],"\x76\x61\x6C\x75\x65":_0x8498[250]},{"\x6E\x61\x6D\x65":_0x8498[251],"\x76\x61\x6C\x75\x65":_0x8498[252]},{"\x6E\x61\x6D\x65":_0x8498[253],"\x76\x61\x6C\x75\x65":_0x8498[254]},{"\x6E\x61\x6D\x65":_0x8498[29],"\x76\x61\x6C\x75\x65":_0x8498[255]},{"\x6E\x61\x6D\x65":_0x8498[256],"\x76\x61\x6C\x75\x65":_0x8498[257]},{"\x6E\x61\x6D\x65":_0x8498[258],"\x76\x61\x6C\x75\x65":_0x8498[259]}],"\x63\x6F\x6C\x6F\x72\x73":[{"\x6E\x61\x6D\x65":_0x8498[260],"\x76\x61\x6C\x75\x65":_0x8498[243]},{"\x6E\x61\x6D\x65":_0x8498[261],"\x76\x61\x6C\x75\x65":_0x8498[262]},{"\x6E\x61\x6D\x65":_0x8498[263],"\x76\x61\x6C\x75\x65":_0x8498[264]},{"\x6E\x61\x6D\x65":_0x8498[265],"\x76\x61\x6C\x75\x65":_0x8498[266]},{"\x6E\x61\x6D\x65":_0x8498[267],"\x76\x61\x6C\x75\x65":_0x8498[268]},{"\x6E\x61\x6D\x65":_0x8498[269],"\x76\x61\x6C\x75\x65":_0x8498[270]}],"\x69\x63\x6F\x6E\x73":[{"\x6E\x61\x6D\x65":_0x8498[271],"\x76\x61\x6C\x75\x65":_0x8498[244]},{"\x6E\x61\x6D\x65":_0x8498[272],"\x76\x61\x6C\x75\x65":_0x8498[273]},{"\x6E\x61\x6D\x65":_0x8498[274],"\x76\x61\x6C\x75\x65":_0x8498[275]},{"\x6E\x61\x6D\x65":_0x8498[276],"\x76\x61\x6C\x75\x65":_0x8498[277]}],"\x73\x65\x6C\x65\x63\x74":_0x8498[281],"\x72\x65\x70\x6F\x72\x74":_0x8498[349],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E":_0x8498[350],"\x64\x65\x74\x61\x69\x6C\x73":_0x8498[351]},"\x74\x69\x74\x6C\x65":_0x8498[282],"\x74\x69\x74\x6C\x65\x54\x65\x6D\x70\x6C\x61\x74\x65\x55\x72\x6C":_0x8498[283],"\x77\x69\x64":_0x8498[352]},{"\x74\x79\x70\x65":_0x8498[242],"\x63\x6F\x6E\x66\x69\x67":{"\x74\x69\x6D\x65\x6F\x75\x74":5,"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E":_0x8498[353],"\x63\x6F\x6C\x6F\x72":_0x8498[264],"\x69\x63\x6F\x6E":_0x8498[277],"\x6C\x69\x6E\x6B":_0x8498[245],"\x6C\x69\x6E\x6B\x54\x65\x78\x74":_0x8498[246],"\x72\x65\x70\x6F\x72\x74\x54\x61\x62\x6C\x65\x73":[{"\x6E\x61\x6D\x65":_0x8498[247],"\x76\x61\x6C\x75\x65":_0x8498[248]},{"\x6E\x61\x6D\x65":_0x8498[249],"\x76\x61\x6C\x75\x65":_0x8498[250]},{"\x6E\x61\x6D\x65":_0x8498[251],"\x76\x61\x6C\x75\x65":_0x8498[252]},{"\x6E\x61\x6D\x65":_0x8498[253],"\x76\x61\x6C\x75\x65":_0x8498[254]},{"\x6E\x61\x6D\x65":_0x8498[29],"\x76\x61\x6C\x75\x65":_0x8498[255]},{"\x6E\x61\x6D\x65":_0x8498[256],"\x76\x61\x6C\x75\x65":_0x8498[257]},{"\x6E\x61\x6D\x65":_0x8498[258],"\x76\x61\x6C\x75\x65":_0x8498[259]}],"\x63\x6F\x6C\x6F\x72\x73":[{"\x6E\x61\x6D\x65":_0x8498[260],"\x76\x61\x6C\x75\x65":_0x8498[243]},{"\x6E\x61\x6D\x65":_0x8498[261],"\x76\x61\x6C\x75\x65":_0x8498[262]},{"\x6E\x61\x6D\x65":_0x8498[263],"\x76\x61\x6C\x75\x65":_0x8498[264]},{"\x6E\x61\x6D\x65":_0x8498[265],"\x76\x61\x6C\x75\x65":_0x8498[266]},{"\x6E\x61\x6D\x65":_0x8498[267],"\x76\x61\x6C\x75\x65":_0x8498[268]},{"\x6E\x61\x6D\x65":_0x8498[269],"\x76\x61\x6C\x75\x65":_0x8498[270]}],"\x69\x63\x6F\x6E\x73":[{"\x6E\x61\x6D\x65":_0x8498[271],"\x76\x61\x6C\x75\x65":_0x8498[244]},{"\x6E\x61\x6D\x65":_0x8498[272],"\x76\x61\x6C\x75\x65":_0x8498[273]},{"\x6E\x61\x6D\x65":_0x8498[274],"\x76\x61\x6C\x75\x65":_0x8498[275]},{"\x6E\x61\x6D\x65":_0x8498[276],"\x76\x61\x6C\x75\x65":_0x8498[277]}],"\x73\x65\x6C\x65\x63\x74":_0x8498[281],"\x72\x65\x70\x6F\x72\x74":_0x8498[349],"\x64\x65\x74\x61\x69\x6C\x73":_0x8498[354]},"\x74\x69\x74\x6C\x65":_0x8498[282],"\x74\x69\x74\x6C\x65\x54\x65\x6D\x70\x6C\x61\x74\x65\x55\x72\x6C":_0x8498[283],"\x77\x69\x64":_0x8498[355]}],"\x63\x69\x64":_0x8498[300]},{"\x73\x74\x79\x6C\x65\x43\x6C\x61\x73\x73":_0x8498[241],"\x77\x69\x64\x67\x65\x74\x73":[{"\x74\x79\x70\x65":_0x8498[242],"\x63\x6F\x6E\x66\x69\x67":{"\x74\x69\x6D\x65\x6F\x75\x74":5,"\x63\x6F\x6C\x6F\x72":_0x8498[266],"\x69\x63\x6F\x6E":_0x8498[277],"\x6C\x69\x6E\x6B":_0x8498[245],"\x6C\x69\x6E\x6B\x54\x65\x78\x74":_0x8498[246],"\x72\x65\x70\x6F\x72\x74\x54\x61\x62\x6C\x65\x73":[{"\x6E\x61\x6D\x65":_0x8498[247],"\x76\x61\x6C\x75\x65":_0x8498[248]},{"\x6E\x61\x6D\x65":_0x8498[249],"\x76\x61\x6C\x75\x65":_0x8498[250]},{"\x6E\x61\x6D\x65":_0x8498[251],"\x76\x61\x6C\x75\x65":_0x8498[252]},{"\x6E\x61\x6D\x65":_0x8498[253],"\x76\x61\x6C\x75\x65":_0x8498[254]},{"\x6E\x61\x6D\x65":_0x8498[29],"\x76\x61\x6C\x75\x65":_0x8498[255]},{"\x6E\x61\x6D\x65":_0x8498[256],"\x76\x61\x6C\x75\x65":_0x8498[257]},{"\x6E\x61\x6D\x65":_0x8498[258],"\x76\x61\x6C\x75\x65":_0x8498[259]}],"\x63\x6F\x6C\x6F\x72\x73":[{"\x6E\x61\x6D\x65":_0x8498[260],"\x76\x61\x6C\x75\x65":_0x8498[243]},{"\x6E\x61\x6D\x65":_0x8498[261],"\x76\x61\x6C\x75\x65":_0x8498[262]},{"\x6E\x61\x6D\x65":_0x8498[263],"\x76\x61\x6C\x75\x65":_0x8498[264]},{"\x6E\x61\x6D\x65":_0x8498[265],"\x76\x61\x6C\x75\x65":_0x8498[266]},{"\x6E\x61\x6D\x65":_0x8498[267],"\x76\x61\x6C\x75\x65":_0x8498[268]},{"\x6E\x61\x6D\x65":_0x8498[269],"\x76\x61\x6C\x75\x65":_0x8498[270]}],"\x69\x63\x6F\x6E\x73":[{"\x6E\x61\x6D\x65":_0x8498[271],"\x76\x61\x6C\x75\x65":_0x8498[244]},{"\x6E\x61\x6D\x65":_0x8498[272],"\x76\x61\x6C\x75\x65":_0x8498[273]},{"\x6E\x61\x6D\x65":_0x8498[274],"\x76\x61\x6C\x75\x65":_0x8498[275]},{"\x6E\x61\x6D\x65":_0x8498[276],"\x76\x61\x6C\x75\x65":_0x8498[277]}],"\x73\x65\x6C\x65\x63\x74":_0x8498[356],"\x72\x65\x70\x6F\x72\x74":_0x8498[349],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E":_0x8498[350],"\x64\x65\x74\x61\x69\x6C\x73":_0x8498[357]},"\x74\x69\x74\x6C\x65":_0x8498[282],"\x74\x69\x74\x6C\x65\x54\x65\x6D\x70\x6C\x61\x74\x65\x55\x72\x6C":_0x8498[283],"\x77\x69\x64":_0x8498[358]},{"\x74\x79\x70\x65":_0x8498[242],"\x63\x6F\x6E\x66\x69\x67":{"\x74\x69\x6D\x65\x6F\x75\x74":5,"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E":_0x8498[350],"\x63\x6F\x6C\x6F\x72":_0x8498[268],"\x69\x63\x6F\x6E":_0x8498[244],"\x6C\x69\x6E\x6B":_0x8498[245],"\x6C\x69\x6E\x6B\x54\x65\x78\x74":_0x8498[246],"\x72\x65\x70\x6F\x72\x74\x54\x61\x62\x6C\x65\x73":[{"\x6E\x61\x6D\x65":_0x8498[247],"\x76\x61\x6C\x75\x65":_0x8498[248]},{"\x6E\x61\x6D\x65":_0x8498[249],"\x76\x61\x6C\x75\x65":_0x8498[250]},{"\x6E\x61\x6D\x65":_0x8498[251],"\x76\x61\x6C\x75\x65":_0x8498[252]},{"\x6E\x61\x6D\x65":_0x8498[253],"\x76\x61\x6C\x75\x65":_0x8498[254]},{"\x6E\x61\x6D\x65":_0x8498[29],"\x76\x61\x6C\x75\x65":_0x8498[255]},{"\x6E\x61\x6D\x65":_0x8498[256],"\x76\x61\x6C\x75\x65":_0x8498[257]},{"\x6E\x61\x6D\x65":_0x8498[258],"\x76\x61\x6C\x75\x65":_0x8498[259]}],"\x63\x6F\x6C\x6F\x72\x73":[{"\x6E\x61\x6D\x65":_0x8498[260],"\x76\x61\x6C\x75\x65":_0x8498[243]},{"\x6E\x61\x6D\x65":_0x8498[261],"\x76\x61\x6C\x75\x65":_0x8498[262]},{"\x6E\x61\x6D\x65":_0x8498[263],"\x76\x61\x6C\x75\x65":_0x8498[264]},{"\x6E\x61\x6D\x65":_0x8498[265],"\x76\x61\x6C\x75\x65":_0x8498[266]},{"\x6E\x61\x6D\x65":_0x8498[267],"\x76\x61\x6C\x75\x65":_0x8498[268]},{"\x6E\x61\x6D\x65":_0x8498[269],"\x76\x61\x6C\x75\x65":_0x8498[270]}],"\x69\x63\x6F\x6E\x73":[{"\x6E\x61\x6D\x65":_0x8498[271],"\x76\x61\x6C\x75\x65":_0x8498[244]},{"\x6E\x61\x6D\x65":_0x8498[272],"\x76\x61\x6C\x75\x65":_0x8498[273]},{"\x6E\x61\x6D\x65":_0x8498[274],"\x76\x61\x6C\x75\x65":_0x8498[275]},{"\x6E\x61\x6D\x65":_0x8498[276],"\x76\x61\x6C\x75\x65":_0x8498[277]}],"\x73\x65\x6C\x65\x63\x74":_0x8498[359],"\x72\x65\x70\x6F\x72\x74":_0x8498[349],"\x64\x65\x74\x61\x69\x6C\x73":_0x8498[360]},"\x74\x69\x74\x6C\x65":_0x8498[282],"\x74\x69\x74\x6C\x65\x54\x65\x6D\x70\x6C\x61\x74\x65\x55\x72\x6C":_0x8498[283],"\x77\x69\x64":_0x8498[361]}],"\x63\x69\x64":_0x8498[317]},{"\x73\x74\x79\x6C\x65\x43\x6C\x61\x73\x73":_0x8498[241],"\x77\x69\x64\x67\x65\x74\x73":[{"\x74\x79\x70\x65":_0x8498[242],"\x63\x6F\x6E\x66\x69\x67":{"\x74\x69\x6D\x65\x6F\x75\x74":5,"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E":_0x8498[350],"\x63\x6F\x6C\x6F\x72":_0x8498[243],"\x69\x63\x6F\x6E":_0x8498[244],"\x6C\x69\x6E\x6B":_0x8498[245],"\x6C\x69\x6E\x6B\x54\x65\x78\x74":_0x8498[246],"\x72\x65\x70\x6F\x72\x74\x54\x61\x62\x6C\x65\x73":[{"\x6E\x61\x6D\x65":_0x8498[247],"\x76\x61\x6C\x75\x65":_0x8498[248]},{"\x6E\x61\x6D\x65":_0x8498[249],"\x76\x61\x6C\x75\x65":_0x8498[250]},{"\x6E\x61\x6D\x65":_0x8498[251],"\x76\x61\x6C\x75\x65":_0x8498[252]},{"\x6E\x61\x6D\x65":_0x8498[253],"\x76\x61\x6C\x75\x65":_0x8498[254]},{"\x6E\x61\x6D\x65":_0x8498[29],"\x76\x61\x6C\x75\x65":_0x8498[255]},{"\x6E\x61\x6D\x65":_0x8498[256],"\x76\x61\x6C\x75\x65":_0x8498[257]},{"\x6E\x61\x6D\x65":_0x8498[258],"\x76\x61\x6C\x75\x65":_0x8498[259]}],"\x63\x6F\x6C\x6F\x72\x73":[{"\x6E\x61\x6D\x65":_0x8498[260],"\x76\x61\x6C\x75\x65":_0x8498[243]},{"\x6E\x61\x6D\x65":_0x8498[261],"\x76\x61\x6C\x75\x65":_0x8498[262]},{"\x6E\x61\x6D\x65":_0x8498[263],"\x76\x61\x6C\x75\x65":_0x8498[264]},{"\x6E\x61\x6D\x65":_0x8498[265],"\x76\x61\x6C\x75\x65":_0x8498[266]},{"\x6E\x61\x6D\x65":_0x8498[267],"\x76\x61\x6C\x75\x65":_0x8498[268]},{"\x6E\x61\x6D\x65":_0x8498[269],"\x76\x61\x6C\x75\x65":_0x8498[270]}],"\x69\x63\x6F\x6E\x73":[{"\x6E\x61\x6D\x65":_0x8498[271],"\x76\x61\x6C\x75\x65":_0x8498[244]},{"\x6E\x61\x6D\x65":_0x8498[272],"\x76\x61\x6C\x75\x65":_0x8498[273]},{"\x6E\x61\x6D\x65":_0x8498[274],"\x76\x61\x6C\x75\x65":_0x8498[275]},{"\x6E\x61\x6D\x65":_0x8498[276],"\x76\x61\x6C\x75\x65":_0x8498[277]}],"\x73\x65\x6C\x65\x63\x74":_0x8498[362],"\x72\x65\x70\x6F\x72\x74":_0x8498[349],"\x64\x65\x74\x61\x69\x6C\x73":_0x8498[363]},"\x74\x69\x74\x6C\x65":_0x8498[282],"\x74\x69\x74\x6C\x65\x54\x65\x6D\x70\x6C\x61\x74\x65\x55\x72\x6C":_0x8498[283],"\x77\x69\x64":_0x8498[364]}],"\x63\x69\x64":_0x8498[334]},{"\x73\x74\x79\x6C\x65\x43\x6C\x61\x73\x73":_0x8498[241],"\x77\x69\x64\x67\x65\x74\x73":[],"\x63\x69\x64":_0x8498[344]}]}],"\x74\x69\x74\x6C\x65\x54\x65\x6D\x70\x6C\x61\x74\x65\x55\x72\x6C":_0x8498[345],"\x73\x74\x72\x75\x63\x74\x75\x72\x65":_0x8498[346]}),defaultEntry:true,editable:true},{name:_0x8498[365],model:JSON[_0x8498[347]]({"\x74\x69\x74\x6C\x65":_0x8498[365],"\x72\x6F\x77\x73":[{"\x63\x6F\x6C\x75\x6D\x6E\x73":[{"\x73\x74\x79\x6C\x65\x43\x6C\x61\x73\x73":_0x8498[241],"\x77\x69\x64\x67\x65\x74\x73":[{"\x74\x79\x70\x65":_0x8498[242],"\x63\x6F\x6E\x66\x69\x67":{"\x74\x69\x6D\x65\x6F\x75\x74":5,"\x63\x6F\x6C\x6F\x72":_0x8498[266],"\x69\x63\x6F\x6E":_0x8498[277],"\x6C\x69\x6E\x6B":_0x8498[245],"\x6C\x69\x6E\x6B\x54\x65\x78\x74":_0x8498[246],"\x72\x65\x70\x6F\x72\x74\x54\x61\x62\x6C\x65\x73":[{"\x6E\x61\x6D\x65":_0x8498[247],"\x76\x61\x6C\x75\x65":_0x8498[248]},{"\x6E\x61\x6D\x65":_0x8498[249],"\x76\x61\x6C\x75\x65":_0x8498[250]},{"\x6E\x61\x6D\x65":_0x8498[251],"\x76\x61\x6C\x75\x65":_0x8498[252]},{"\x6E\x61\x6D\x65":_0x8498[253],"\x76\x61\x6C\x75\x65":_0x8498[254]},{"\x6E\x61\x6D\x65":_0x8498[29],"\x76\x61\x6C\x75\x65":_0x8498[255]},{"\x6E\x61\x6D\x65":_0x8498[256],"\x76\x61\x6C\x75\x65":_0x8498[257]},{"\x6E\x61\x6D\x65":_0x8498[258],"\x76\x61\x6C\x75\x65":_0x8498[259]}],"\x63\x6F\x6C\x6F\x72\x73":[{"\x6E\x61\x6D\x65":_0x8498[260],"\x76\x61\x6C\x75\x65":_0x8498[243]},{"\x6E\x61\x6D\x65":_0x8498[261],"\x76\x61\x6C\x75\x65":_0x8498[262]},{"\x6E\x61\x6D\x65":_0x8498[263],"\x76\x61\x6C\x75\x65":_0x8498[264]},{"\x6E\x61\x6D\x65":_0x8498[265],"\x76\x61\x6C\x75\x65":_0x8498[266]},{"\x6E\x61\x6D\x65":_0x8498[267],"\x76\x61\x6C\x75\x65":_0x8498[268]},{"\x6E\x61\x6D\x65":_0x8498[269],"\x76\x61\x6C\x75\x65":_0x8498[270]}],"\x69\x63\x6F\x6E\x73":[{"\x6E\x61\x6D\x65":_0x8498[271],"\x76\x61\x6C\x75\x65":_0x8498[244]},{"\x6E\x61\x6D\x65":_0x8498[272],"\x76\x61\x6C\x75\x65":_0x8498[273]},{"\x6E\x61\x6D\x65":_0x8498[274],"\x76\x61\x6C\x75\x65":_0x8498[275]},{"\x6E\x61\x6D\x65":_0x8498[276],"\x76\x61\x6C\x75\x65":_0x8498[277]}],"\x73\x65\x6C\x65\x63\x74":_0x8498[281],"\x72\x65\x70\x6F\x72\x74":_0x8498[255],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E":_0x8498[366],"\x64\x65\x74\x61\x69\x6C\x73":_0x8498[367]},"\x74\x69\x74\x6C\x65":_0x8498[368],"\x74\x69\x74\x6C\x65\x54\x65\x6D\x70\x6C\x61\x74\x65\x55\x72\x6C":_0x8498[283],"\x77\x69\x64":_0x8498[369]}],"\x63\x69\x64":_0x8498[300]},{"\x73\x74\x79\x6C\x65\x43\x6C\x61\x73\x73":_0x8498[241],"\x77\x69\x64\x67\x65\x74\x73":[{"\x74\x79\x70\x65":_0x8498[242],"\x63\x6F\x6E\x66\x69\x67":{"\x74\x69\x6D\x65\x6F\x75\x74":5,"\x63\x6F\x6C\x6F\x72":_0x8498[270],"\x69\x63\x6F\x6E":_0x8498[277],"\x6C\x69\x6E\x6B":_0x8498[245],"\x6C\x69\x6E\x6B\x54\x65\x78\x74":_0x8498[246],"\x72\x65\x70\x6F\x72\x74\x54\x61\x62\x6C\x65\x73":[{"\x6E\x61\x6D\x65":_0x8498[247],"\x76\x61\x6C\x75\x65":_0x8498[248]},{"\x6E\x61\x6D\x65":_0x8498[249],"\x76\x61\x6C\x75\x65":_0x8498[250]},{"\x6E\x61\x6D\x65":_0x8498[251],"\x76\x61\x6C\x75\x65":_0x8498[252]},{"\x6E\x61\x6D\x65":_0x8498[253],"\x76\x61\x6C\x75\x65":_0x8498[254]},{"\x6E\x61\x6D\x65":_0x8498[29],"\x76\x61\x6C\x75\x65":_0x8498[255]},{"\x6E\x61\x6D\x65":_0x8498[256],"\x76\x61\x6C\x75\x65":_0x8498[257]},{"\x6E\x61\x6D\x65":_0x8498[258],"\x76\x61\x6C\x75\x65":_0x8498[259]}],"\x63\x6F\x6C\x6F\x72\x73":[{"\x6E\x61\x6D\x65":_0x8498[260],"\x76\x61\x6C\x75\x65":_0x8498[243]},{"\x6E\x61\x6D\x65":_0x8498[261],"\x76\x61\x6C\x75\x65":_0x8498[262]},{"\x6E\x61\x6D\x65":_0x8498[263],"\x76\x61\x6C\x75\x65":_0x8498[264]},{"\x6E\x61\x6D\x65":_0x8498[265],"\x76\x61\x6C\x75\x65":_0x8498[266]},{"\x6E\x61\x6D\x65":_0x8498[267],"\x76\x61\x6C\x75\x65":_0x8498[268]},{"\x6E\x61\x6D\x65":_0x8498[269],"\x76\x61\x6C\x75\x65":_0x8498[270]}],"\x69\x63\x6F\x6E\x73":[{"\x6E\x61\x6D\x65":_0x8498[271],"\x76\x61\x6C\x75\x65":_0x8498[244]},{"\x6E\x61\x6D\x65":_0x8498[272],"\x76\x61\x6C\x75\x65":_0x8498[273]},{"\x6E\x61\x6D\x65":_0x8498[274],"\x76\x61\x6C\x75\x65":_0x8498[275]},{"\x6E\x61\x6D\x65":_0x8498[276],"\x76\x61\x6C\x75\x65":_0x8498[277]}],"\x73\x65\x6C\x65\x63\x74":_0x8498[281],"\x72\x65\x70\x6F\x72\x74":_0x8498[255],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E":_0x8498[370],"\x64\x65\x74\x61\x69\x6C\x73":_0x8498[371]},"\x74\x69\x74\x6C\x65":_0x8498[368],"\x74\x69\x74\x6C\x65\x54\x65\x6D\x70\x6C\x61\x74\x65\x55\x72\x6C":_0x8498[283],"\x77\x69\x64":_0x8498[372]}],"\x63\x69\x64":_0x8498[317]},{"\x73\x74\x79\x6C\x65\x43\x6C\x61\x73\x73":_0x8498[241],"\x77\x69\x64\x67\x65\x74\x73":[{"\x74\x79\x70\x65":_0x8498[242],"\x63\x6F\x6E\x66\x69\x67":{"\x74\x69\x6D\x65\x6F\x75\x74":5,"\x63\x6F\x6C\x6F\x72":_0x8498[268],"\x69\x63\x6F\x6E":_0x8498[244],"\x6C\x69\x6E\x6B":_0x8498[245],"\x6C\x69\x6E\x6B\x54\x65\x78\x74":_0x8498[246],"\x72\x65\x70\x6F\x72\x74\x54\x61\x62\x6C\x65\x73":[{"\x6E\x61\x6D\x65":_0x8498[247],"\x76\x61\x6C\x75\x65":_0x8498[248]},{"\x6E\x61\x6D\x65":_0x8498[249],"\x76\x61\x6C\x75\x65":_0x8498[250]},{"\x6E\x61\x6D\x65":_0x8498[251],"\x76\x61\x6C\x75\x65":_0x8498[252]},{"\x6E\x61\x6D\x65":_0x8498[253],"\x76\x61\x6C\x75\x65":_0x8498[254]},{"\x6E\x61\x6D\x65":_0x8498[29],"\x76\x61\x6C\x75\x65":_0x8498[255]},{"\x6E\x61\x6D\x65":_0x8498[256],"\x76\x61\x6C\x75\x65":_0x8498[257]},{"\x6E\x61\x6D\x65":_0x8498[258],"\x76\x61\x6C\x75\x65":_0x8498[259]}],"\x63\x6F\x6C\x6F\x72\x73":[{"\x6E\x61\x6D\x65":_0x8498[260],"\x76\x61\x6C\x75\x65":_0x8498[243]},{"\x6E\x61\x6D\x65":_0x8498[261],"\x76\x61\x6C\x75\x65":_0x8498[262]},{"\x6E\x61\x6D\x65":_0x8498[263],"\x76\x61\x6C\x75\x65":_0x8498[264]},{"\x6E\x61\x6D\x65":_0x8498[265],"\x76\x61\x6C\x75\x65":_0x8498[266]},{"\x6E\x61\x6D\x65":_0x8498[267],"\x76\x61\x6C\x75\x65":_0x8498[268]},{"\x6E\x61\x6D\x65":_0x8498[269],"\x76\x61\x6C\x75\x65":_0x8498[270]}],"\x69\x63\x6F\x6E\x73":[{"\x6E\x61\x6D\x65":_0x8498[271],"\x76\x61\x6C\x75\x65":_0x8498[244]},{"\x6E\x61\x6D\x65":_0x8498[272],"\x76\x61\x6C\x75\x65":_0x8498[273]},{"\x6E\x61\x6D\x65":_0x8498[274],"\x76\x61\x6C\x75\x65":_0x8498[275]},{"\x6E\x61\x6D\x65":_0x8498[276],"\x76\x61\x6C\x75\x65":_0x8498[277]}],"\x73\x65\x6C\x65\x63\x74":_0x8498[281],"\x72\x65\x70\x6F\x72\x74":_0x8498[255],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E":_0x8498[373],"\x64\x65\x74\x61\x69\x6C\x73":_0x8498[374]},"\x74\x69\x74\x6C\x65":_0x8498[368],"\x74\x69\x74\x6C\x65\x54\x65\x6D\x70\x6C\x61\x74\x65\x55\x72\x6C":_0x8498[283],"\x77\x69\x64":_0x8498[375]}],"\x63\x69\x64":_0x8498[334]},{"\x73\x74\x79\x6C\x65\x43\x6C\x61\x73\x73":_0x8498[241],"\x77\x69\x64\x67\x65\x74\x73":[],"\x63\x69\x64":_0x8498[344]}]}],"\x74\x69\x74\x6C\x65\x54\x65\x6D\x70\x6C\x61\x74\x65\x55\x72\x6C":_0x8498[345],"\x73\x74\x72\x75\x63\x74\x75\x72\x65":_0x8498[346]}),defaultEntry:true,editable:true}],{ignoreDuplicates:true,individualHooks:true})})[_0x8498[11]](function(_0x669cx21){console[_0x8498[8]](util[_0x8498[16]](_0x8498[238],_[_0x8498[15]](_0x669cx21,_0x8498[14])[_0x8498[13]]()))});models[_0x8498[149]][_0x8498[377]]({where:{context:_0x8498[97]}})[_0x8498[11]](function(){models[_0x8498[149]][_0x8498[22]]([{context:_0x8498[97],exten:_0x8498[379],priority:1,app:_0x8498[105],appdata:_0x8498[380],type:_0x8498[381]},{context:_0x8498[97],exten:_0x8498[379],priority:2,app:_0x8498[105],appdata:_0x8498[382],type:_0x8498[381]},{context:_0x8498[97],exten:_0x8498[379],priority:3,app:_0x8498[110],appdata:_0x8498[383],type:_0x8498[381]},{context:_0x8498[97],exten:_0x8498[379],priority:4,app:_0x8498[384],appdata:_0x8498[137],type:_0x8498[381]},{context:_0x8498[97],exten:_0x8498[379],priority:5,app:_0x8498[385],appdata:_0x8498[109],type:_0x8498[381]},{context:_0x8498[97],exten:_0x8498[379],priority:6,app:_0x8498[110],appdata:_0x8498[386],type:_0x8498[381]},{context:_0x8498[97],exten:_0x8498[379],priority:7,app:_0x8498[110],appdata:_0x8498[387],type:_0x8498[381]},{context:_0x8498[97],exten:_0x8498[379],priority:8,app:_0x8498[110],appdata:_0x8498[388],type:_0x8498[381]},{context:_0x8498[97],exten:_0x8498[379],priority:9,app:_0x8498[110],appdata:_0x8498[389],type:_0x8498[381]},{context:_0x8498[97],exten:_0x8498[379],priority:10,app:_0x8498[110],appdata:_0x8498[390],type:_0x8498[381]},{context:_0x8498[97],exten:_0x8498[379],priority:11,app:_0x8498[110],appdata:_0x8498[391],type:_0x8498[381]},{context:_0x8498[97],exten:_0x8498[379],priority:12,app:_0x8498[110],appdata:_0x8498[392],type:_0x8498[381]},{context:_0x8498[97],exten:_0x8498[379],priority:13,app:_0x8498[110],appdata:_0x8498[393],type:_0x8498[381]},{context:_0x8498[97],exten:_0x8498[379],priority:14,app:_0x8498[394],appdata:_0x8498[395],type:_0x8498[381]},{context:_0x8498[97],exten:_0x8498[379],priority:15,app:_0x8498[396],appdata:_0x8498[137],type:_0x8498[381]}],{ignoreDuplicates:true,individualHooks:true})})[_0x8498[11]](function(){console[_0x8498[8]](_0x8498[378])});models[_0x8498[43]][_0x8498[221]]({include:[{model:models[_0x8498[149]],as:_0x8498[402],where:{app:_0x8498[171]}}]})[_0x8498[11]](function(_0x669cx12){console[_0x8498[8]](_0x8498[397]);var _0x669cx22=[];_[_0x8498[220]](_0x669cx12,function(_0x669cx23){_[_0x8498[220]](_0x669cx23.UserExtensions,function(_0x669cx24){_0x669cx24[_0x8498[398]]= _0x8498[399]+ _0x669cx23[_0x8498[14]]+ _0x8498[400];_0x669cx22[_0x8498[219]](_0x669cx24[_0x8498[401]]())})});return _0x669cx22})[_0x8498[214]]()[_0x8498[6]](function(_0x669cxc){console[_0x8498[8]](_0x669cxc)});_setting[_0x8498[217]]({firstSetup:false})};var _0x669cx25=[{id:1,name:_0x8498[403],title:_0x8498[404],ModuleId:null,path:_0x8498[405]},{id:2,name:_0x8498[406],title:_0x8498[407],ModuleId:null,path:_0x8498[408]},{id:3,name:_0x8498[409],title:_0x8498[410],ModuleId:null,path:_0x8498[411]},{id:4,name:_0x8498[412],title:_0x8498[413],ModuleId:3,path:_0x8498[411]},{id:5,name:_0x8498[414],title:_0x8498[415],ModuleId:null,path:_0x8498[416]},{id:6,name:_0x8498[417],title:_0x8498[418],ModuleId:null,path:null},{id:7,name:_0x8498[419],title:_0x8498[420],ModuleId:6,path:_0x8498[421]},{id:8,name:_0x8498[422],title:_0x8498[423],ModuleId:6,path:_0x8498[424]},{id:9,name:_0x8498[425],title:_0x8498[426],ModuleId:6,path:_0x8498[427]},{id:10,name:_0x8498[428],title:_0x8498[429],ModuleId:6,path:_0x8498[430]},{id:11,name:_0x8498[431],title:_0x8498[432],ModuleId:6,path:_0x8498[433]},{id:12,name:_0x8498[434],title:_0x8498[435],ModuleId:6,path:_0x8498[436]},{id:13,name:_0x8498[437],title:_0x8498[438],ModuleId:null,path:_0x8498[439]},{id:14,name:_0x8498[440],title:_0x8498[441],ModuleId:null,path:_0x8498[442]},{id:15,name:_0x8498[443],title:_0x8498[444],ModuleId:null,path:_0x8498[445]},{id:16,name:_0x8498[446],title:_0x8498[447],ModuleId:null,path:_0x8498[448]},{id:17,name:_0x8498[449],title:_0x8498[450],ModuleId:null,path:_0x8498[451]},{id:18,name:_0x8498[452],title:_0x8498[453],ModuleId:null,path:_0x8498[454]},{id:19,name:_0x8498[455],title:_0x8498[456],ModuleId:null,path:_0x8498[457]},{id:20,name:_0x8498[458],title:_0x8498[459],ModuleId:6,path:_0x8498[460]}];models[_0x8498[463]][_0x8498[221]]()[_0x8498[11]](function(_0x669cx26){var _0x669cx27=[];_0x669cx26= _[_0x8498[15]](_0x669cx26,_0x8498[9]);_0x669cx25[_0x8498[220]](function(_0x669cx28){if(_[_0x8498[216]](_0x669cx26,_0x669cx28[_0x8498[9]])){_0x669cx27[_0x8498[219]](models[_0x8498[463]][_0x8498[217]](_0x669cx28,{where:{id:_0x669cx28[_0x8498[9]]}}))}else {_0x669cx27[_0x8498[219]](models[_0x8498[463]][_0x8498[44]](_0x669cx28))}});return _0x669cx27})[_0x8498[214]]()[_0x8498[11]](function(){console[_0x8498[8]](_0x8498[462])})[_0x8498[6]](function(_0x669cxc){console[_0x8498[8]](_0x8498[461],_0x669cxc)});var _0x669cx29=[{"\x69\x64":25,"\x6E\x61\x6D\x65":_0x8498[464],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x8498[465],"\x70\x61\x72\x65\x6E\x74":_0x8498[466],"\x74\x61\x62\x6C\x65":_0x8498[278],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x8498[467]},{"\x69\x64":26,"\x6E\x61\x6D\x65":_0x8498[468],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x8498[469],"\x70\x61\x72\x65\x6E\x74":_0x8498[466],"\x74\x61\x62\x6C\x65":_0x8498[278],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x8498[467]},{"\x69\x64":28,"\x6E\x61\x6D\x65":_0x8498[464],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x8498[470],"\x70\x61\x72\x65\x6E\x74":_0x8498[471],"\x74\x61\x62\x6C\x65":_0x8498[292],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x8498[472]},{"\x69\x64":29,"\x6E\x61\x6D\x65":_0x8498[473],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x8498[474],"\x70\x61\x72\x65\x6E\x74":_0x8498[471],"\x74\x61\x62\x6C\x65":_0x8498[292],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x8498[472]},{"\x69\x64":30,"\x6E\x61\x6D\x65":_0x8498[475],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x8498[476],"\x70\x61\x72\x65\x6E\x74":_0x8498[471],"\x74\x61\x62\x6C\x65":_0x8498[292],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x8498[472]},{"\x69\x64":31,"\x6E\x61\x6D\x65":_0x8498[477],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x8498[478],"\x70\x61\x72\x65\x6E\x74":_0x8498[471],"\x74\x61\x62\x6C\x65":_0x8498[292],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x8498[472]},{"\x69\x64":32,"\x6E\x61\x6D\x65":_0x8498[479],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x8498[480],"\x70\x61\x72\x65\x6E\x74":_0x8498[471],"\x74\x61\x62\x6C\x65":_0x8498[292],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x8498[472]},{"\x69\x64":34,"\x6E\x61\x6D\x65":_0x8498[481],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x8498[482],"\x70\x61\x72\x65\x6E\x74":_0x8498[471],"\x74\x61\x62\x6C\x65":_0x8498[292],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x8498[472]},{"\x69\x64":35,"\x6E\x61\x6D\x65":_0x8498[464],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x8498[483],"\x70\x61\x72\x65\x6E\x74":_0x8498[484],"\x74\x61\x62\x6C\x65":_0x8498[278],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x8498[485]},{"\x69\x64":36,"\x6E\x61\x6D\x65":_0x8498[486],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x8498[487],"\x70\x61\x72\x65\x6E\x74":_0x8498[484],"\x74\x61\x62\x6C\x65":_0x8498[278],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x8498[485]},{"\x69\x64":37,"\x6E\x61\x6D\x65":_0x8498[488],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x8498[489],"\x70\x61\x72\x65\x6E\x74":_0x8498[484],"\x74\x61\x62\x6C\x65":_0x8498[278],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x8498[490]},{"\x69\x64":38,"\x6E\x61\x6D\x65":_0x8498[491],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x8498[492],"\x70\x61\x72\x65\x6E\x74":_0x8498[484],"\x74\x61\x62\x6C\x65":_0x8498[278],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x8498[493]},{"\x69\x64":40,"\x6E\x61\x6D\x65":_0x8498[494],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x8498[495],"\x70\x61\x72\x65\x6E\x74":_0x8498[496],"\x74\x61\x62\x6C\x65":_0x8498[278],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x8498[467]},{"\x69\x64":41,"\x6E\x61\x6D\x65":_0x8498[497],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x8498[498],"\x70\x61\x72\x65\x6E\x74":_0x8498[496],"\x74\x61\x62\x6C\x65":_0x8498[278],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x8498[467]},{"\x69\x64":46,"\x6E\x61\x6D\x65":_0x8498[499],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x8498[500],"\x70\x61\x72\x65\x6E\x74":_0x8498[496],"\x74\x61\x62\x6C\x65":_0x8498[278],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x8498[467]},{"\x69\x64":47,"\x6E\x61\x6D\x65":_0x8498[501],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x8498[502],"\x70\x61\x72\x65\x6E\x74":_0x8498[496],"\x74\x61\x62\x6C\x65":_0x8498[278],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x8498[467]},{"\x69\x64":49,"\x6E\x61\x6D\x65":_0x8498[503],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x8498[504],"\x70\x61\x72\x65\x6E\x74":_0x8498[466],"\x74\x61\x62\x6C\x65":_0x8498[278],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x8498[467]},{"\x69\x64":50,"\x6E\x61\x6D\x65":_0x8498[464],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x8498[505],"\x70\x61\x72\x65\x6E\x74":_0x8498[506],"\x74\x61\x62\x6C\x65":_0x8498[349],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x8498[467]},{"\x69\x64":51,"\x6E\x61\x6D\x65":_0x8498[507],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x8498[508],"\x70\x61\x72\x65\x6E\x74":_0x8498[506],"\x74\x61\x62\x6C\x65":_0x8498[349],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x8498[509]},{"\x69\x64":52,"\x6E\x61\x6D\x65":_0x8498[510],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x8498[511],"\x70\x61\x72\x65\x6E\x74":_0x8498[506],"\x74\x61\x62\x6C\x65":_0x8498[349],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x8498[467]},{"\x69\x64":53,"\x6E\x61\x6D\x65":_0x8498[512],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x8498[513],"\x70\x61\x72\x65\x6E\x74":_0x8498[506],"\x74\x61\x62\x6C\x65":_0x8498[349],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x8498[509]},{"\x69\x64":54,"\x6E\x61\x6D\x65":_0x8498[514],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x8498[515],"\x70\x61\x72\x65\x6E\x74":_0x8498[506],"\x74\x61\x62\x6C\x65":_0x8498[349],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x8498[509]},{"\x69\x64":55,"\x6E\x61\x6D\x65":_0x8498[516],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x8498[517],"\x70\x61\x72\x65\x6E\x74":_0x8498[506],"\x74\x61\x62\x6C\x65":_0x8498[349],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x8498[509]},{"\x69\x64":57,"\x6E\x61\x6D\x65":_0x8498[518],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x8498[519],"\x70\x61\x72\x65\x6E\x74":_0x8498[520],"\x74\x61\x62\x6C\x65":_0x8498[521],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x8498[522]},{"\x69\x64":61,"\x6E\x61\x6D\x65":_0x8498[523],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x8498[524],"\x70\x61\x72\x65\x6E\x74":_0x8498[525],"\x74\x61\x62\x6C\x65":_0x8498[521],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x8498[526]},{"\x69\x64":62,"\x6E\x61\x6D\x65":_0x8498[527],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x8498[528],"\x70\x61\x72\x65\x6E\x74":_0x8498[525],"\x74\x61\x62\x6C\x65":_0x8498[521],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x8498[529]},{"\x69\x64":63,"\x6E\x61\x6D\x65":_0x8498[464],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x8498[530],"\x70\x61\x72\x65\x6E\x74":_0x8498[525],"\x74\x61\x62\x6C\x65":_0x8498[521],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x8498[526]},{"\x69\x64":64,"\x6E\x61\x6D\x65":_0x8498[531],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x8498[532],"\x70\x61\x72\x65\x6E\x74":_0x8498[525],"\x74\x61\x62\x6C\x65":_0x8498[521],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x8498[533]},{"\x69\x64":65,"\x6E\x61\x6D\x65":_0x8498[503],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x8498[534],"\x70\x61\x72\x65\x6E\x74":_0x8498[535],"\x74\x61\x62\x6C\x65":_0x8498[536],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x8498[467]},{"\x69\x64":67,"\x6E\x61\x6D\x65":_0x8498[537],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x8498[538],"\x70\x61\x72\x65\x6E\x74":_0x8498[535],"\x74\x61\x62\x6C\x65":_0x8498[539],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x8498[467]},{"\x69\x64":68,"\x6E\x61\x6D\x65":_0x8498[540],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x8498[541],"\x70\x61\x72\x65\x6E\x74":_0x8498[542],"\x74\x61\x62\x6C\x65":_0x8498[543],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x8498[467]},{"\x69\x64":69,"\x6E\x61\x6D\x65":_0x8498[544],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x8498[545],"\x70\x61\x72\x65\x6E\x74":_0x8498[546],"\x74\x61\x62\x6C\x65":_0x8498[547],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x8498[548]},{"\x69\x64":70,"\x6E\x61\x6D\x65":_0x8498[549],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x8498[550],"\x70\x61\x72\x65\x6E\x74":_0x8498[546],"\x74\x61\x62\x6C\x65":_0x8498[547],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x8498[551]},{"\x69\x64":72,"\x6E\x61\x6D\x65":_0x8498[552],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x8498[553],"\x70\x61\x72\x65\x6E\x74":_0x8498[554],"\x74\x61\x62\x6C\x65":_0x8498[555],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x8498[467]},{"\x69\x64":73,"\x6E\x61\x6D\x65":_0x8498[556],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x8498[557],"\x70\x61\x72\x65\x6E\x74":_0x8498[554],"\x74\x61\x62\x6C\x65":_0x8498[555],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x8498[467]},{"\x69\x64":74,"\x6E\x61\x6D\x65":_0x8498[558],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x8498[559],"\x70\x61\x72\x65\x6E\x74":_0x8498[554],"\x74\x61\x62\x6C\x65":_0x8498[555],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x8498[560]},{"\x69\x64":75,"\x6E\x61\x6D\x65":_0x8498[561],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x8498[562],"\x70\x61\x72\x65\x6E\x74":_0x8498[554],"\x74\x61\x62\x6C\x65":_0x8498[555],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x8498[563]},{"\x69\x64":76,"\x6E\x61\x6D\x65":_0x8498[564],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x8498[565],"\x70\x61\x72\x65\x6E\x74":_0x8498[554],"\x74\x61\x62\x6C\x65":_0x8498[555],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x8498[467]},{"\x69\x64":77,"\x6E\x61\x6D\x65":_0x8498[566],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x8498[567],"\x70\x61\x72\x65\x6E\x74":_0x8498[542],"\x74\x61\x62\x6C\x65":_0x8498[543],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x8498[563]},{"\x69\x64":79,"\x6E\x61\x6D\x65":_0x8498[568],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x8498[569],"\x70\x61\x72\x65\x6E\x74":_0x8498[542],"\x74\x61\x62\x6C\x65":_0x8498[543],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x8498[570]},{"\x69\x64":81,"\x6E\x61\x6D\x65":_0x8498[571],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x8498[572],"\x70\x61\x72\x65\x6E\x74":_0x8498[542],"\x74\x61\x62\x6C\x65":_0x8498[573],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x8498[467]},{"\x69\x64":82,"\x6E\x61\x6D\x65":_0x8498[574],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x8498[575],"\x70\x61\x72\x65\x6E\x74":_0x8498[542],"\x74\x61\x62\x6C\x65":_0x8498[576],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x8498[467]},{"\x69\x64":83,"\x6E\x61\x6D\x65":_0x8498[577],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x8498[578],"\x70\x61\x72\x65\x6E\x74":_0x8498[542],"\x74\x61\x62\x6C\x65":_0x8498[576],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x8498[579]},{"\x69\x64":84,"\x6E\x61\x6D\x65":_0x8498[580],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x8498[581],"\x70\x61\x72\x65\x6E\x74":_0x8498[542],"\x74\x61\x62\x6C\x65":_0x8498[576],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x8498[582]},{"\x69\x64":85,"\x6E\x61\x6D\x65":_0x8498[464],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":null,"\x70\x61\x72\x65\x6E\x74":_0x8498[583],"\x74\x61\x62\x6C\x65":_0x8498[584],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x8498[467]},{"\x69\x64":90,"\x6E\x61\x6D\x65":_0x8498[464],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":null,"\x70\x61\x72\x65\x6E\x74":_0x8498[585],"\x74\x61\x62\x6C\x65":_0x8498[586],"\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73":_0x8498[467]}];var _0x669cx2a=[{"\x69\x64":10128,"\x66\x69\x65\x6C\x64":_0x8498[587],"\x61\x6C\x69\x61\x73":_0x8498[588],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":25,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":10129,"\x66\x69\x65\x6C\x64":_0x8498[589],"\x61\x6C\x69\x61\x73":_0x8498[590],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":25,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":10130,"\x66\x69\x65\x6C\x64":_0x8498[591],"\x61\x6C\x69\x61\x73":_0x8498[592],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":25,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":10131,"\x66\x69\x65\x6C\x64":_0x8498[593],"\x61\x6C\x69\x61\x73":_0x8498[154],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":25,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":10132,"\x66\x69\x65\x6C\x64":_0x8498[594],"\x61\x6C\x69\x61\x73":_0x8498[595],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":25,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":10133,"\x66\x69\x65\x6C\x64":_0x8498[596],"\x61\x6C\x69\x61\x73":_0x8498[597],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":25,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":10134,"\x66\x69\x65\x6C\x64":_0x8498[598],"\x61\x6C\x69\x61\x73":_0x8498[599],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":25,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":10135,"\x66\x69\x65\x6C\x64":_0x8498[600],"\x61\x6C\x69\x61\x73":_0x8498[601],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":25,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":10136,"\x66\x69\x65\x6C\x64":_0x8498[602],"\x61\x6C\x69\x61\x73":_0x8498[603],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":25,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":10137,"\x66\x69\x65\x6C\x64":_0x8498[604],"\x61\x6C\x69\x61\x73":_0x8498[605],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":25,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":10138,"\x66\x69\x65\x6C\x64":_0x8498[606],"\x61\x6C\x69\x61\x73":_0x8498[607],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":25,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":10139,"\x66\x69\x65\x6C\x64":_0x8498[608],"\x61\x6C\x69\x61\x73":_0x8498[609],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":25,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":10140,"\x66\x69\x65\x6C\x64":_0x8498[610],"\x61\x6C\x69\x61\x73":_0x8498[611],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":25,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":10141,"\x66\x69\x65\x6C\x64":_0x8498[102],"\x61\x6C\x69\x61\x73":_0x8498[612],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":25,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":10142,"\x66\x69\x65\x6C\x64":_0x8498[613],"\x61\x6C\x69\x61\x73":_0x8498[614],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":25,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":10143,"\x66\x69\x65\x6C\x64":_0x8498[616],"\x61\x6C\x69\x61\x73":_0x8498[617],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":25,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":10144,"\x66\x69\x65\x6C\x64":_0x8498[618],"\x61\x6C\x69\x61\x73":_0x8498[619],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":25,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":10188,"\x66\x69\x65\x6C\x64":_0x8498[589],"\x61\x6C\x69\x61\x73":_0x8498[620],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":26,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":10189,"\x66\x69\x65\x6C\x64":_0x8498[593],"\x61\x6C\x69\x61\x73":_0x8498[154],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":26,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":10190,"\x66\x69\x65\x6C\x64":_0x8498[594],"\x61\x6C\x69\x61\x73":_0x8498[621],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":26,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":10191,"\x66\x69\x65\x6C\x64":_0x8498[622],"\x61\x6C\x69\x61\x73":_0x8498[623],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":26,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":10192,"\x66\x69\x65\x6C\x64":_0x8498[624],"\x61\x6C\x69\x61\x73":_0x8498[625],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":26,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":10193,"\x66\x69\x65\x6C\x64":_0x8498[626],"\x61\x6C\x69\x61\x73":_0x8498[354],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":26,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":20820,"\x66\x69\x65\x6C\x64":_0x8498[587],"\x61\x6C\x69\x61\x73":_0x8498[588],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":28,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":20821,"\x66\x69\x65\x6C\x64":_0x8498[589],"\x61\x6C\x69\x61\x73":_0x8498[590],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":28,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":20822,"\x66\x69\x65\x6C\x64":_0x8498[591],"\x61\x6C\x69\x61\x73":_0x8498[592],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":28,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":20823,"\x66\x69\x65\x6C\x64":_0x8498[593],"\x61\x6C\x69\x61\x73":_0x8498[154],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":28,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":20824,"\x66\x69\x65\x6C\x64":_0x8498[627],"\x61\x6C\x69\x61\x73":_0x8498[628],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":28,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":20825,"\x66\x69\x65\x6C\x64":_0x8498[629],"\x61\x6C\x69\x61\x73":_0x8498[630],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":28,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":20826,"\x66\x69\x65\x6C\x64":_0x8498[631],"\x61\x6C\x69\x61\x73":_0x8498[632],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":28,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":20827,"\x66\x69\x65\x6C\x64":_0x8498[633],"\x61\x6C\x69\x61\x73":_0x8498[634],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":28,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":20828,"\x66\x69\x65\x6C\x64":_0x8498[624],"\x61\x6C\x69\x61\x73":_0x8498[619],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":28,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":20829,"\x66\x69\x65\x6C\x64":_0x8498[635],"\x61\x6C\x69\x61\x73":_0x8498[614],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":28,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":20830,"\x66\x69\x65\x6C\x64":_0x8498[636],"\x61\x6C\x69\x61\x73":_0x8498[637],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":28,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":20831,"\x66\x69\x65\x6C\x64":_0x8498[638],"\x61\x6C\x69\x61\x73":_0x8498[639],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":28,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":20832,"\x66\x69\x65\x6C\x64":_0x8498[640],"\x61\x6C\x69\x61\x73":_0x8498[641],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":28,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":20833,"\x66\x69\x65\x6C\x64":_0x8498[642],"\x61\x6C\x69\x61\x73":_0x8498[643],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":28,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":20834,"\x66\x69\x65\x6C\x64":_0x8498[644],"\x61\x6C\x69\x61\x73":_0x8498[645],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":28,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":20835,"\x66\x69\x65\x6C\x64":_0x8498[102],"\x61\x6C\x69\x61\x73":_0x8498[612],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":28,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":25504,"\x66\x69\x65\x6C\x64":_0x8498[627],"\x61\x6C\x69\x61\x73":_0x8498[628],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":1,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":29,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":25505,"\x66\x69\x65\x6C\x64":_0x8498[640],"\x61\x6C\x69\x61\x73":_0x8498[646],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":29,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":25506,"\x66\x69\x65\x6C\x64":_0x8498[635],"\x61\x6C\x69\x61\x73":_0x8498[648],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":29,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":25507,"\x66\x69\x65\x6C\x64":_0x8498[638],"\x61\x6C\x69\x61\x73":_0x8498[649],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":29,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":25508,"\x66\x69\x65\x6C\x64":_0x8498[650],"\x61\x6C\x69\x61\x73":_0x8498[651],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":29,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":25509,"\x66\x69\x65\x6C\x64":_0x8498[652],"\x61\x6C\x69\x61\x73":_0x8498[653],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":29,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":25510,"\x66\x69\x65\x6C\x64":_0x8498[654],"\x61\x6C\x69\x61\x73":_0x8498[655],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":29,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":25511,"\x66\x69\x65\x6C\x64":_0x8498[656],"\x61\x6C\x69\x61\x73":_0x8498[657],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":29,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":10470,"\x66\x69\x65\x6C\x64":_0x8498[593],"\x61\x6C\x69\x61\x73":_0x8498[154],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":1,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":30,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":10471,"\x66\x69\x65\x6C\x64":_0x8498[640],"\x61\x6C\x69\x61\x73":_0x8498[646],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":30,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":10472,"\x66\x69\x65\x6C\x64":_0x8498[635],"\x61\x6C\x69\x61\x73":_0x8498[658],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":30,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":10473,"\x66\x69\x65\x6C\x64":_0x8498[624],"\x61\x6C\x69\x61\x73":_0x8498[659],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":30,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":10474,"\x66\x69\x65\x6C\x64":_0x8498[638],"\x61\x6C\x69\x61\x73":_0x8498[660],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":30,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":10475,"\x66\x69\x65\x6C\x64":_0x8498[650],"\x61\x6C\x69\x61\x73":_0x8498[661],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":30,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":10476,"\x66\x69\x65\x6C\x64":_0x8498[652],"\x61\x6C\x69\x61\x73":_0x8498[662],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":30,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":10477,"\x66\x69\x65\x6C\x64":_0x8498[663],"\x61\x6C\x69\x61\x73":_0x8498[664],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":30,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":10478,"\x66\x69\x65\x6C\x64":_0x8498[654],"\x61\x6C\x69\x61\x73":_0x8498[665],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":30,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":10479,"\x66\x69\x65\x6C\x64":_0x8498[656],"\x61\x6C\x69\x61\x73":_0x8498[666],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":30,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":10517,"\x66\x69\x65\x6C\x64":_0x8498[593],"\x61\x6C\x69\x61\x73":_0x8498[154],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":1,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":31,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":10518,"\x66\x69\x65\x6C\x64":_0x8498[640],"\x61\x6C\x69\x61\x73":_0x8498[667],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":31,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":10519,"\x66\x69\x65\x6C\x64":_0x8498[668],"\x61\x6C\x69\x61\x73":_0x8498[669],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":31,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":10520,"\x66\x69\x65\x6C\x64":_0x8498[670],"\x61\x6C\x69\x61\x73":_0x8498[671],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":31,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":10521,"\x66\x69\x65\x6C\x64":_0x8498[672],"\x61\x6C\x69\x61\x73":_0x8498[673],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":31,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":10522,"\x66\x69\x65\x6C\x64":_0x8498[674],"\x61\x6C\x69\x61\x73":_0x8498[675],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":31,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":10523,"\x66\x69\x65\x6C\x64":_0x8498[676],"\x61\x6C\x69\x61\x73":_0x8498[677],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":31,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":10524,"\x66\x69\x65\x6C\x64":_0x8498[678],"\x61\x6C\x69\x61\x73":_0x8498[679],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":31,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":10525,"\x66\x69\x65\x6C\x64":_0x8498[680],"\x61\x6C\x69\x61\x73":_0x8498[681],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":31,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":10526,"\x66\x69\x65\x6C\x64":_0x8498[682],"\x61\x6C\x69\x61\x73":_0x8498[683],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":31,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":10765,"\x66\x69\x65\x6C\x64":_0x8498[642],"\x61\x6C\x69\x61\x73":_0x8498[684],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":1,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":32,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":10766,"\x66\x69\x65\x6C\x64":_0x8498[587],"\x61\x6C\x69\x61\x73":_0x8498[249],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[685],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":32,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":10813,"\x66\x69\x65\x6C\x64":_0x8498[631],"\x61\x6C\x69\x61\x73":_0x8498[686],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":_0x8498[687],"\x67\x72\x6F\x75\x70\x42\x79":1,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":34,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":10814,"\x66\x69\x65\x6C\x64":_0x8498[640],"\x61\x6C\x69\x61\x73":_0x8498[667],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":34,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":10815,"\x66\x69\x65\x6C\x64":_0x8498[668],"\x61\x6C\x69\x61\x73":_0x8498[669],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":34,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":10816,"\x66\x69\x65\x6C\x64":_0x8498[672],"\x61\x6C\x69\x61\x73":_0x8498[673],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":34,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":10817,"\x66\x69\x65\x6C\x64":_0x8498[676],"\x61\x6C\x69\x61\x73":_0x8498[677],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":34,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":10818,"\x66\x69\x65\x6C\x64":_0x8498[680],"\x61\x6C\x69\x61\x73":_0x8498[681],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":34,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":10905,"\x66\x69\x65\x6C\x64":_0x8498[587],"\x61\x6C\x69\x61\x73":_0x8498[588],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":35,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":10906,"\x66\x69\x65\x6C\x64":_0x8498[589],"\x61\x6C\x69\x61\x73":_0x8498[590],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":35,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":10907,"\x66\x69\x65\x6C\x64":_0x8498[593],"\x61\x6C\x69\x61\x73":_0x8498[154],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":35,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":10908,"\x66\x69\x65\x6C\x64":_0x8498[594],"\x61\x6C\x69\x61\x73":_0x8498[688],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":35,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":10909,"\x66\x69\x65\x6C\x64":_0x8498[596],"\x61\x6C\x69\x61\x73":_0x8498[689],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":35,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":10910,"\x66\x69\x65\x6C\x64":_0x8498[598],"\x61\x6C\x69\x61\x73":_0x8498[690],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":35,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":10911,"\x66\x69\x65\x6C\x64":_0x8498[600],"\x61\x6C\x69\x61\x73":_0x8498[691],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":35,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":10912,"\x66\x69\x65\x6C\x64":_0x8498[606],"\x61\x6C\x69\x61\x73":_0x8498[339],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":35,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":10913,"\x66\x69\x65\x6C\x64":_0x8498[608],"\x61\x6C\x69\x61\x73":_0x8498[692],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":35,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":10914,"\x66\x69\x65\x6C\x64":_0x8498[610],"\x61\x6C\x69\x61\x73":_0x8498[693],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":35,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":10915,"\x66\x69\x65\x6C\x64":_0x8498[694],"\x61\x6C\x69\x61\x73":_0x8498[695],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":35,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":10916,"\x66\x69\x65\x6C\x64":_0x8498[102],"\x61\x6C\x69\x61\x73":_0x8498[612],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":35,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":10917,"\x66\x69\x65\x6C\x64":_0x8498[616],"\x61\x6C\x69\x61\x73":_0x8498[696],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":35,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":10918,"\x66\x69\x65\x6C\x64":_0x8498[697],"\x61\x6C\x69\x61\x73":_0x8498[698],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":35,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":10947,"\x66\x69\x65\x6C\x64":_0x8498[593],"\x61\x6C\x69\x61\x73":_0x8498[154],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":1,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":36,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":10948,"\x66\x69\x65\x6C\x64":_0x8498[598],"\x61\x6C\x69\x61\x73":_0x8498[699],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":36,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":10949,"\x66\x69\x65\x6C\x64":_0x8498[606],"\x61\x6C\x69\x61\x73":_0x8498[339],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":36,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":10950,"\x66\x69\x65\x6C\x64":_0x8498[616],"\x61\x6C\x69\x61\x73":_0x8498[700],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":36,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":10951,"\x66\x69\x65\x6C\x64":_0x8498[701],"\x61\x6C\x69\x61\x73":_0x8498[702],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":36,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":10952,"\x66\x69\x65\x6C\x64":_0x8498[697],"\x61\x6C\x69\x61\x73":_0x8498[703],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":36,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":10953,"\x66\x69\x65\x6C\x64":_0x8498[704],"\x61\x6C\x69\x61\x73":_0x8498[705],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":36,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":10957,"\x66\x69\x65\x6C\x64":_0x8498[610],"\x61\x6C\x69\x61\x73":_0x8498[684],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":1,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":37,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":10958,"\x66\x69\x65\x6C\x64":_0x8498[606],"\x61\x6C\x69\x61\x73":_0x8498[249],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":37,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":10959,"\x66\x69\x65\x6C\x64":_0x8498[697],"\x61\x6C\x69\x61\x73":_0x8498[703],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":37,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":10983,"\x66\x69\x65\x6C\x64":_0x8498[593],"\x61\x6C\x69\x61\x73":_0x8498[154],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":1,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":38,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":10984,"\x66\x69\x65\x6C\x64":_0x8498[598],"\x61\x6C\x69\x61\x73":_0x8498[706],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":38,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":10985,"\x66\x69\x65\x6C\x64":_0x8498[707],"\x61\x6C\x69\x61\x73":_0x8498[708],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":38,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":10986,"\x66\x69\x65\x6C\x64":_0x8498[709],"\x61\x6C\x69\x61\x73":_0x8498[710],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":38,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":10987,"\x66\x69\x65\x6C\x64":_0x8498[711],"\x61\x6C\x69\x61\x73":_0x8498[712],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":38,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":10988,"\x66\x69\x65\x6C\x64":_0x8498[713],"\x61\x6C\x69\x61\x73":_0x8498[714],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":38,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":10989,"\x66\x69\x65\x6C\x64":_0x8498[715],"\x61\x6C\x69\x61\x73":_0x8498[716],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":38,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":10990,"\x66\x69\x65\x6C\x64":_0x8498[717],"\x61\x6C\x69\x61\x73":_0x8498[718],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":38,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":10991,"\x66\x69\x65\x6C\x64":_0x8498[719],"\x61\x6C\x69\x61\x73":_0x8498[720],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":38,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":10992,"\x66\x69\x65\x6C\x64":_0x8498[721],"\x61\x6C\x69\x61\x73":_0x8498[722],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":38,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":11892,"\x66\x69\x65\x6C\x64":_0x8498[723],"\x61\x6C\x69\x61\x73":_0x8498[724],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":_0x8498[725],"\x67\x72\x6F\x75\x70\x42\x79":1,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":40,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":11893,"\x66\x69\x65\x6C\x64":_0x8498[587],"\x61\x6C\x69\x61\x73":_0x8498[726],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[727],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":40,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":11894,"\x66\x69\x65\x6C\x64":_0x8498[602],"\x61\x6C\x69\x61\x73":_0x8498[646],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":40,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":11895,"\x66\x69\x65\x6C\x64":_0x8498[598],"\x61\x6C\x69\x61\x73":_0x8498[699],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":40,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":11896,"\x66\x69\x65\x6C\x64":_0x8498[606],"\x61\x6C\x69\x61\x73":_0x8498[339],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":40,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":11897,"\x66\x69\x65\x6C\x64":_0x8498[613],"\x61\x6C\x69\x61\x73":_0x8498[658],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":40,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":11898,"\x66\x69\x65\x6C\x64":_0x8498[728],"\x61\x6C\x69\x61\x73":_0x8498[653],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":40,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":11899,"\x66\x69\x65\x6C\x64":_0x8498[701],"\x61\x6C\x69\x61\x73":_0x8498[702],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":40,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":11629,"\x66\x69\x65\x6C\x64":_0x8498[723],"\x61\x6C\x69\x61\x73":_0x8498[686],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":_0x8498[687],"\x67\x72\x6F\x75\x70\x42\x79":1,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":41,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":11630,"\x66\x69\x65\x6C\x64":_0x8498[587],"\x61\x6C\x69\x61\x73":_0x8498[726],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[727],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":41,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":11631,"\x66\x69\x65\x6C\x64":_0x8498[602],"\x61\x6C\x69\x61\x73":_0x8498[354],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":41,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":11632,"\x66\x69\x65\x6C\x64":_0x8498[729],"\x61\x6C\x69\x61\x73":_0x8498[730],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":41,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":11633,"\x66\x69\x65\x6C\x64":_0x8498[598],"\x61\x6C\x69\x61\x73":_0x8498[699],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":41,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":11634,"\x66\x69\x65\x6C\x64":_0x8498[606],"\x61\x6C\x69\x61\x73":_0x8498[339],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":41,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":11635,"\x66\x69\x65\x6C\x64":_0x8498[613],"\x61\x6C\x69\x61\x73":_0x8498[658],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":41,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":11636,"\x66\x69\x65\x6C\x64":_0x8498[728],"\x61\x6C\x69\x61\x73":_0x8498[653],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":41,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":11637,"\x66\x69\x65\x6C\x64":_0x8498[701],"\x61\x6C\x69\x61\x73":_0x8498[702],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":41,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":11927,"\x66\x69\x65\x6C\x64":_0x8498[731],"\x61\x6C\x69\x61\x73":_0x8498[732],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":1,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":46,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":11928,"\x66\x69\x65\x6C\x64":_0x8498[587],"\x61\x6C\x69\x61\x73":_0x8498[726],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[727],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":46,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":11929,"\x66\x69\x65\x6C\x64":_0x8498[602],"\x61\x6C\x69\x61\x73":_0x8498[354],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":46,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":11930,"\x66\x69\x65\x6C\x64":_0x8498[729],"\x61\x6C\x69\x61\x73":_0x8498[730],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":46,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":11931,"\x66\x69\x65\x6C\x64":_0x8498[598],"\x61\x6C\x69\x61\x73":_0x8498[699],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":46,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":11932,"\x66\x69\x65\x6C\x64":_0x8498[606],"\x61\x6C\x69\x61\x73":_0x8498[339],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":46,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":11933,"\x66\x69\x65\x6C\x64":_0x8498[613],"\x61\x6C\x69\x61\x73":_0x8498[658],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":46,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":11934,"\x66\x69\x65\x6C\x64":_0x8498[728],"\x61\x6C\x69\x61\x73":_0x8498[653],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":46,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":11935,"\x66\x69\x65\x6C\x64":_0x8498[701],"\x61\x6C\x69\x61\x73":_0x8498[702],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":46,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":25365,"\x66\x69\x65\x6C\x64":_0x8498[733],"\x61\x6C\x69\x61\x73":_0x8498[734],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":1,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":47,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":25366,"\x66\x69\x65\x6C\x64":_0x8498[587],"\x61\x6C\x69\x61\x73":_0x8498[726],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[727],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":47,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":25367,"\x66\x69\x65\x6C\x64":_0x8498[602],"\x61\x6C\x69\x61\x73":_0x8498[354],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":47,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":25368,"\x66\x69\x65\x6C\x64":_0x8498[729],"\x61\x6C\x69\x61\x73":_0x8498[730],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":47,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":25369,"\x66\x69\x65\x6C\x64":_0x8498[598],"\x61\x6C\x69\x61\x73":_0x8498[699],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":_0x8498[735],"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":47,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":25370,"\x66\x69\x65\x6C\x64":_0x8498[606],"\x61\x6C\x69\x61\x73":_0x8498[339],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":47,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":25371,"\x66\x69\x65\x6C\x64":_0x8498[613],"\x61\x6C\x69\x61\x73":_0x8498[658],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":47,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":25372,"\x66\x69\x65\x6C\x64":_0x8498[728],"\x61\x6C\x69\x61\x73":_0x8498[653],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":47,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":25373,"\x66\x69\x65\x6C\x64":_0x8498[701],"\x61\x6C\x69\x61\x73":_0x8498[702],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":47,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":11999,"\x66\x69\x65\x6C\x64":_0x8498[593],"\x61\x6C\x69\x61\x73":_0x8498[154],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":1,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":49,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":12000,"\x66\x69\x65\x6C\x64":_0x8498[587],"\x61\x6C\x69\x61\x73":_0x8498[726],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[727],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":49,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":12001,"\x66\x69\x65\x6C\x64":_0x8498[602],"\x61\x6C\x69\x61\x73":_0x8498[354],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":49,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":12002,"\x66\x69\x65\x6C\x64":_0x8498[729],"\x61\x6C\x69\x61\x73":_0x8498[730],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":49,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":12003,"\x66\x69\x65\x6C\x64":_0x8498[598],"\x61\x6C\x69\x61\x73":_0x8498[699],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":49,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":12004,"\x66\x69\x65\x6C\x64":_0x8498[606],"\x61\x6C\x69\x61\x73":_0x8498[339],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":49,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":12005,"\x66\x69\x65\x6C\x64":_0x8498[613],"\x61\x6C\x69\x61\x73":_0x8498[658],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":49,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":12006,"\x66\x69\x65\x6C\x64":_0x8498[728],"\x61\x6C\x69\x61\x73":_0x8498[653],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":49,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":12007,"\x66\x69\x65\x6C\x64":_0x8498[701],"\x61\x6C\x69\x61\x73":_0x8498[702],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":49,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":15136,"\x66\x69\x65\x6C\x64":_0x8498[587],"\x61\x6C\x69\x61\x73":_0x8498[736],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":50,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15137,"\x66\x69\x65\x6C\x64":_0x8498[737],"\x61\x6C\x69\x61\x73":_0x8498[738],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":50,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15138,"\x66\x69\x65\x6C\x64":_0x8498[739],"\x61\x6C\x69\x61\x73":_0x8498[740],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":50,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15139,"\x66\x69\x65\x6C\x64":_0x8498[741],"\x61\x6C\x69\x61\x73":_0x8498[742],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":50,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15140,"\x66\x69\x65\x6C\x64":_0x8498[743],"\x61\x6C\x69\x61\x73":_0x8498[744],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":50,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15141,"\x66\x69\x65\x6C\x64":_0x8498[745],"\x61\x6C\x69\x61\x73":_0x8498[620],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":50,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15142,"\x66\x69\x65\x6C\x64":_0x8498[746],"\x61\x6C\x69\x61\x73":_0x8498[747],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":50,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15143,"\x66\x69\x65\x6C\x64":_0x8498[748],"\x61\x6C\x69\x61\x73":_0x8498[749],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":50,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15144,"\x66\x69\x65\x6C\x64":_0x8498[750],"\x61\x6C\x69\x61\x73":_0x8498[751],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":50,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15145,"\x66\x69\x65\x6C\x64":_0x8498[752],"\x61\x6C\x69\x61\x73":_0x8498[621],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":50,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15146,"\x66\x69\x65\x6C\x64":_0x8498[753],"\x61\x6C\x69\x61\x73":_0x8498[619],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":50,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15147,"\x66\x69\x65\x6C\x64":_0x8498[754],"\x61\x6C\x69\x61\x73":_0x8498[623],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":50,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15148,"\x66\x69\x65\x6C\x64":_0x8498[755],"\x61\x6C\x69\x61\x73":_0x8498[756],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":50,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15149,"\x66\x69\x65\x6C\x64":_0x8498[757],"\x61\x6C\x69\x61\x73":_0x8498[758],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":50,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15210,"\x66\x69\x65\x6C\x64":_0x8498[587],"\x61\x6C\x69\x61\x73":_0x8498[736],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":51,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15211,"\x66\x69\x65\x6C\x64":_0x8498[759],"\x61\x6C\x69\x61\x73":_0x8498[760],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":51,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15212,"\x66\x69\x65\x6C\x64":_0x8498[741],"\x61\x6C\x69\x61\x73":_0x8498[742],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":51,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15213,"\x66\x69\x65\x6C\x64":_0x8498[743],"\x61\x6C\x69\x61\x73":_0x8498[744],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":51,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15214,"\x66\x69\x65\x6C\x64":_0x8498[745],"\x61\x6C\x69\x61\x73":_0x8498[761],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":51,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15215,"\x66\x69\x65\x6C\x64":_0x8498[752],"\x61\x6C\x69\x61\x73":_0x8498[621],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":51,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15216,"\x66\x69\x65\x6C\x64":_0x8498[753],"\x61\x6C\x69\x61\x73":_0x8498[619],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":51,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15217,"\x66\x69\x65\x6C\x64":_0x8498[754],"\x61\x6C\x69\x61\x73":_0x8498[623],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":51,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15218,"\x66\x69\x65\x6C\x64":_0x8498[755],"\x61\x6C\x69\x61\x73":_0x8498[756],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":51,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15219,"\x66\x69\x65\x6C\x64":_0x8498[762],"\x61\x6C\x69\x61\x73":_0x8498[763],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":51,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15220,"\x66\x69\x65\x6C\x64":_0x8498[757],"\x61\x6C\x69\x61\x73":_0x8498[758],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":51,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15221,"\x66\x69\x65\x6C\x64":_0x8498[739],"\x61\x6C\x69\x61\x73":_0x8498[740],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":51,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15234,"\x66\x69\x65\x6C\x64":_0x8498[737],"\x61\x6C\x69\x61\x73":_0x8498[738],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":1,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":52,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15235,"\x66\x69\x65\x6C\x64":_0x8498[587],"\x61\x6C\x69\x61\x73":_0x8498[249],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[685],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":52,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15236,"\x66\x69\x65\x6C\x64":_0x8498[755],"\x61\x6C\x69\x61\x73":_0x8498[764],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":52,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15237,"\x66\x69\x65\x6C\x64":_0x8498[765],"\x61\x6C\x69\x61\x73":_0x8498[363],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":52,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":15242,"\x66\x69\x65\x6C\x64":_0x8498[757],"\x61\x6C\x69\x61\x73":_0x8498[758],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":1,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":53,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15243,"\x66\x69\x65\x6C\x64":_0x8498[587],"\x61\x6C\x69\x61\x73":_0x8498[249],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[685],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":53,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15244,"\x66\x69\x65\x6C\x64":_0x8498[755],"\x61\x6C\x69\x61\x73":_0x8498[764],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":53,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15245,"\x66\x69\x65\x6C\x64":_0x8498[765],"\x61\x6C\x69\x61\x73":_0x8498[363],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":53,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":15262,"\x66\x69\x65\x6C\x64":_0x8498[766],"\x61\x6C\x69\x61\x73":_0x8498[628],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":1,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":54,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":15263,"\x66\x69\x65\x6C\x64":_0x8498[587],"\x61\x6C\x69\x61\x73":_0x8498[249],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[685],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":54,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15264,"\x66\x69\x65\x6C\x64":_0x8498[755],"\x61\x6C\x69\x61\x73":_0x8498[764],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":54,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15265,"\x66\x69\x65\x6C\x64":_0x8498[765],"\x61\x6C\x69\x61\x73":_0x8498[363],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":54,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":15274,"\x66\x69\x65\x6C\x64":_0x8498[752],"\x61\x6C\x69\x61\x73":_0x8498[724],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":_0x8498[725],"\x67\x72\x6F\x75\x70\x42\x79":1,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":55,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15275,"\x66\x69\x65\x6C\x64":_0x8498[587],"\x61\x6C\x69\x61\x73":_0x8498[249],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[685],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":55,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15276,"\x66\x69\x65\x6C\x64":_0x8498[755],"\x61\x6C\x69\x61\x73":_0x8498[764],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":55,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15277,"\x66\x69\x65\x6C\x64":_0x8498[765],"\x61\x6C\x69\x61\x73":_0x8498[363],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":55,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":15303,"\x66\x69\x65\x6C\x64":_0x8498[627],"\x61\x6C\x69\x61\x73":_0x8498[628],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":1,"\x6F\x72\x64\x65\x72\x42\x79":_0x8498[735],"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":57,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15304,"\x66\x69\x65\x6C\x64":_0x8498[767],"\x61\x6C\x69\x61\x73":_0x8498[756],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":57,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":15374,"\x66\x69\x65\x6C\x64":_0x8498[627],"\x61\x6C\x69\x61\x73":_0x8498[628],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":1,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":61,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15375,"\x66\x69\x65\x6C\x64":_0x8498[768],"\x61\x6C\x69\x61\x73":_0x8498[518],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":61,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":15376,"\x66\x69\x65\x6C\x64":_0x8498[769],"\x61\x6C\x69\x61\x73":_0x8498[770],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":61,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":15377,"\x66\x69\x65\x6C\x64":_0x8498[771],"\x61\x6C\x69\x61\x73":_0x8498[531],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":61,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":15378,"\x66\x69\x65\x6C\x64":_0x8498[627],"\x61\x6C\x69\x61\x73":_0x8498[628],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":62,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15379,"\x66\x69\x65\x6C\x64":_0x8498[772],"\x61\x6C\x69\x61\x73":_0x8498[773],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":62,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15380,"\x66\x69\x65\x6C\x64":_0x8498[774],"\x61\x6C\x69\x61\x73":_0x8498[775],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":62,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15381,"\x66\x69\x65\x6C\x64":_0x8498[776],"\x61\x6C\x69\x61\x73":_0x8498[85],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":62,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15382,"\x66\x69\x65\x6C\x64":_0x8498[755],"\x61\x6C\x69\x61\x73":_0x8498[756],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":62,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15383,"\x66\x69\x65\x6C\x64":_0x8498[627],"\x61\x6C\x69\x61\x73":_0x8498[628],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":63,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15384,"\x66\x69\x65\x6C\x64":_0x8498[777],"\x61\x6C\x69\x61\x73":_0x8498[778],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":63,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15385,"\x66\x69\x65\x6C\x64":_0x8498[737],"\x61\x6C\x69\x61\x73":_0x8498[779],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":63,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15386,"\x66\x69\x65\x6C\x64":_0x8498[776],"\x61\x6C\x69\x61\x73":_0x8498[738],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":63,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15387,"\x66\x69\x65\x6C\x64":_0x8498[772],"\x61\x6C\x69\x61\x73":_0x8498[773],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":63,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15388,"\x66\x69\x65\x6C\x64":_0x8498[774],"\x61\x6C\x69\x61\x73":_0x8498[775],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":63,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15389,"\x66\x69\x65\x6C\x64":_0x8498[780],"\x61\x6C\x69\x61\x73":_0x8498[756],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":63,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":15390,"\x66\x69\x65\x6C\x64":_0x8498[627],"\x61\x6C\x69\x61\x73":_0x8498[628],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":1,"\x6F\x72\x64\x65\x72\x42\x79":_0x8498[735],"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":64,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15391,"\x66\x69\x65\x6C\x64":_0x8498[776],"\x61\x6C\x69\x61\x73":_0x8498[781],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":1,"\x6F\x72\x64\x65\x72\x42\x79":_0x8498[735],"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":64,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15392,"\x66\x69\x65\x6C\x64":_0x8498[767],"\x61\x6C\x69\x61\x73":_0x8498[756],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":64,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":25439,"\x66\x69\x65\x6C\x64":_0x8498[782],"\x61\x6C\x69\x61\x73":_0x8498[783],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":65,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":25440,"\x66\x69\x65\x6C\x64":_0x8498[587],"\x61\x6C\x69\x61\x73":_0x8498[588],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":65,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":25441,"\x66\x69\x65\x6C\x64":_0x8498[745],"\x61\x6C\x69\x61\x73":_0x8498[761],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":65,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":25442,"\x66\x69\x65\x6C\x64":_0x8498[784],"\x61\x6C\x69\x61\x73":_0x8498[612],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":65,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":25443,"\x66\x69\x65\x6C\x64":_0x8498[785],"\x61\x6C\x69\x61\x73":_0x8498[786],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":_0x8498[735],"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":65,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":25444,"\x66\x69\x65\x6C\x64":_0x8498[787],"\x61\x6C\x69\x61\x73":_0x8498[788],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":65,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":25445,"\x66\x69\x65\x6C\x64":_0x8498[789],"\x61\x6C\x69\x61\x73":_0x8498[756],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":65,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":15441,"\x66\x69\x65\x6C\x64":_0x8498[587],"\x61\x6C\x69\x61\x73":_0x8498[790],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":67,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15442,"\x66\x69\x65\x6C\x64":_0x8498[782],"\x61\x6C\x69\x61\x73":_0x8498[783],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":67,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15443,"\x66\x69\x65\x6C\x64":_0x8498[745],"\x61\x6C\x69\x61\x73":_0x8498[791],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":67,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15444,"\x66\x69\x65\x6C\x64":_0x8498[792],"\x61\x6C\x69\x61\x73":_0x8498[793],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":67,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15445,"\x66\x69\x65\x6C\x64":_0x8498[794],"\x61\x6C\x69\x61\x73":_0x8498[795],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":67,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15998,"\x66\x69\x65\x6C\x64":_0x8498[796],"\x61\x6C\x69\x61\x73":_0x8498[797],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":1,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":68,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15999,"\x66\x69\x65\x6C\x64":_0x8498[587],"\x61\x6C\x69\x61\x73":_0x8498[798],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[727],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":68,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":16000,"\x66\x69\x65\x6C\x64":_0x8498[799],"\x61\x6C\x69\x61\x73":_0x8498[800],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":68,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":16001,"\x66\x69\x65\x6C\x64":_0x8498[801],"\x61\x6C\x69\x61\x73":_0x8498[802],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":68,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":16002,"\x66\x69\x65\x6C\x64":_0x8498[803],"\x61\x6C\x69\x61\x73":_0x8498[804],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":68,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":16003,"\x66\x69\x65\x6C\x64":_0x8498[805],"\x61\x6C\x69\x61\x73":_0x8498[806],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":68,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":16004,"\x66\x69\x65\x6C\x64":_0x8498[807],"\x61\x6C\x69\x61\x73":_0x8498[808],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":68,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":15458,"\x66\x69\x65\x6C\x64":_0x8498[809],"\x61\x6C\x69\x61\x73":_0x8498[628],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":1,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":69,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15459,"\x66\x69\x65\x6C\x64":_0x8498[587],"\x61\x6C\x69\x61\x73":_0x8498[810],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[685],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":69,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15460,"\x66\x69\x65\x6C\x64":_0x8498[811],"\x61\x6C\x69\x61\x73":_0x8498[812],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":69,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15461,"\x66\x69\x65\x6C\x64":_0x8498[811],"\x61\x6C\x69\x61\x73":_0x8498[813],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[814],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":69,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":25446,"\x66\x69\x65\x6C\x64":_0x8498[593],"\x61\x6C\x69\x61\x73":_0x8498[154],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":1,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":70,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":25447,"\x66\x69\x65\x6C\x64":_0x8498[587],"\x61\x6C\x69\x61\x73":_0x8498[815],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[685],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":70,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":25448,"\x66\x69\x65\x6C\x64":_0x8498[811],"\x61\x6C\x69\x61\x73":_0x8498[812],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":70,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":25449,"\x66\x69\x65\x6C\x64":_0x8498[811],"\x61\x6C\x69\x61\x73":_0x8498[813],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[814],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":70,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":25463,"\x66\x69\x65\x6C\x64":_0x8498[816],"\x61\x6C\x69\x61\x73":_0x8498[817],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":1,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":72,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":25464,"\x66\x69\x65\x6C\x64":_0x8498[587],"\x61\x6C\x69\x61\x73":_0x8498[818],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[727],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":72,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":25465,"\x66\x69\x65\x6C\x64":_0x8498[819],"\x61\x6C\x69\x61\x73":_0x8498[646],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":72,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":25466,"\x66\x69\x65\x6C\x64":_0x8498[820],"\x61\x6C\x69\x61\x73":_0x8498[699],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":72,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":25467,"\x66\x69\x65\x6C\x64":_0x8498[821],"\x61\x6C\x69\x61\x73":_0x8498[822],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":72,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":25468,"\x66\x69\x65\x6C\x64":_0x8498[823],"\x61\x6C\x69\x61\x73":_0x8498[824],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":72,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":25469,"\x66\x69\x65\x6C\x64":_0x8498[825],"\x61\x6C\x69\x61\x73":_0x8498[826],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":72,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":25470,"\x66\x69\x65\x6C\x64":_0x8498[587],"\x61\x6C\x69\x61\x73":_0x8498[588],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":73,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":25471,"\x66\x69\x65\x6C\x64":_0x8498[816],"\x61\x6C\x69\x61\x73":_0x8498[827],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":73,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":25472,"\x66\x69\x65\x6C\x64":_0x8498[828],"\x61\x6C\x69\x61\x73":_0x8498[829],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":73,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":25473,"\x66\x69\x65\x6C\x64":_0x8498[830],"\x61\x6C\x69\x61\x73":_0x8498[831],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":73,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":25474,"\x66\x69\x65\x6C\x64":_0x8498[627],"\x61\x6C\x69\x61\x73":_0x8498[832],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":73,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":25475,"\x66\x69\x65\x6C\x64":_0x8498[833],"\x61\x6C\x69\x61\x73":_0x8498[834],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":73,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":25476,"\x66\x69\x65\x6C\x64":_0x8498[785],"\x61\x6C\x69\x61\x73":_0x8498[688],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":73,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":25477,"\x66\x69\x65\x6C\x64":_0x8498[787],"\x61\x6C\x69\x61\x73":_0x8498[689],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":73,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":25478,"\x66\x69\x65\x6C\x64":_0x8498[835],"\x61\x6C\x69\x61\x73":_0x8498[605],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":73,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":25479,"\x66\x69\x65\x6C\x64":_0x8498[819],"\x61\x6C\x69\x61\x73":_0x8498[646],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":73,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":25480,"\x66\x69\x65\x6C\x64":_0x8498[836],"\x61\x6C\x69\x61\x73":_0x8498[837],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":73,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":25481,"\x66\x69\x65\x6C\x64":_0x8498[820],"\x61\x6C\x69\x61\x73":_0x8498[699],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":73,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":25482,"\x66\x69\x65\x6C\x64":_0x8498[821],"\x61\x6C\x69\x61\x73":_0x8498[822],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":73,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":25483,"\x66\x69\x65\x6C\x64":_0x8498[627],"\x61\x6C\x69\x61\x73":_0x8498[628],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":1,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":74,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":25484,"\x66\x69\x65\x6C\x64":_0x8498[819],"\x61\x6C\x69\x61\x73":_0x8498[838],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":74,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":25485,"\x66\x69\x65\x6C\x64":_0x8498[823],"\x61\x6C\x69\x61\x73":_0x8498[824],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":74,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":25486,"\x66\x69\x65\x6C\x64":_0x8498[825],"\x61\x6C\x69\x61\x73":_0x8498[826],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":74,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":25487,"\x66\x69\x65\x6C\x64":_0x8498[839],"\x61\x6C\x69\x61\x73":_0x8498[840],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":74,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":25488,"\x66\x69\x65\x6C\x64":_0x8498[841],"\x61\x6C\x69\x61\x73":_0x8498[842],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":74,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":25489,"\x66\x69\x65\x6C\x64":_0x8498[833],"\x61\x6C\x69\x61\x73":_0x8498[154],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":1,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":75,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":25490,"\x66\x69\x65\x6C\x64":_0x8498[587],"\x61\x6C\x69\x61\x73":_0x8498[818],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[685],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":75,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":25491,"\x66\x69\x65\x6C\x64":_0x8498[819],"\x61\x6C\x69\x61\x73":_0x8498[646],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":75,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":25492,"\x66\x69\x65\x6C\x64":_0x8498[820],"\x61\x6C\x69\x61\x73":_0x8498[699],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":75,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":25493,"\x66\x69\x65\x6C\x64":_0x8498[821],"\x61\x6C\x69\x61\x73":_0x8498[822],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":75,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":25494,"\x66\x69\x65\x6C\x64":_0x8498[823],"\x61\x6C\x69\x61\x73":_0x8498[843],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":75,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":25495,"\x66\x69\x65\x6C\x64":_0x8498[825],"\x61\x6C\x69\x61\x73":_0x8498[826],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":75,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":15623,"\x66\x69\x65\x6C\x64":_0x8498[785],"\x61\x6C\x69\x61\x73":_0x8498[724],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":_0x8498[725],"\x67\x72\x6F\x75\x70\x42\x79":1,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":76,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15624,"\x66\x69\x65\x6C\x64":_0x8498[587],"\x61\x6C\x69\x61\x73":_0x8498[818],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[727],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":76,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15625,"\x66\x69\x65\x6C\x64":_0x8498[819],"\x61\x6C\x69\x61\x73":_0x8498[646],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":76,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15626,"\x66\x69\x65\x6C\x64":_0x8498[844],"\x61\x6C\x69\x61\x73":_0x8498[845],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":76,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":15627,"\x66\x69\x65\x6C\x64":_0x8498[823],"\x61\x6C\x69\x61\x73":_0x8498[824],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":76,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":15628,"\x66\x69\x65\x6C\x64":_0x8498[825],"\x61\x6C\x69\x61\x73":_0x8498[826],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":76,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":15953,"\x66\x69\x65\x6C\x64":_0x8498[833],"\x61\x6C\x69\x61\x73":_0x8498[154],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":1,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":77,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15954,"\x66\x69\x65\x6C\x64":_0x8498[587],"\x61\x6C\x69\x61\x73":_0x8498[798],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[685],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":77,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15955,"\x66\x69\x65\x6C\x64":_0x8498[846],"\x61\x6C\x69\x61\x73":_0x8498[800],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":77,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":15956,"\x66\x69\x65\x6C\x64":_0x8498[821],"\x61\x6C\x69\x61\x73":_0x8498[822],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":77,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":15957,"\x66\x69\x65\x6C\x64":_0x8498[847],"\x61\x6C\x69\x61\x73":_0x8498[802],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":77,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":15958,"\x66\x69\x65\x6C\x64":_0x8498[848],"\x61\x6C\x69\x61\x73":_0x8498[849],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":77,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":16310,"\x66\x69\x65\x6C\x64":_0x8498[627],"\x61\x6C\x69\x61\x73":_0x8498[627],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":1,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":79,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":16311,"\x66\x69\x65\x6C\x64":_0x8498[587],"\x61\x6C\x69\x61\x73":_0x8498[850],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[685],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":79,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":16312,"\x66\x69\x65\x6C\x64":_0x8498[851],"\x61\x6C\x69\x61\x73":_0x8498[852],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":79,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":16313,"\x66\x69\x65\x6C\x64":_0x8498[853],"\x61\x6C\x69\x61\x73":_0x8498[628],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":79,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":16314,"\x66\x69\x65\x6C\x64":_0x8498[854],"\x61\x6C\x69\x61\x73":_0x8498[154],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":79,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":16302,"\x66\x69\x65\x6C\x64":_0x8498[855],"\x61\x6C\x69\x61\x73":_0x8498[724],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":_0x8498[725],"\x67\x72\x6F\x75\x70\x42\x79":1,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":81,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":16303,"\x66\x69\x65\x6C\x64":_0x8498[856],"\x61\x6C\x69\x61\x73":_0x8498[798],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":81,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":16304,"\x66\x69\x65\x6C\x64":_0x8498[857],"\x61\x6C\x69\x61\x73":_0x8498[858],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[647],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":81,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":17281,"\x66\x69\x65\x6C\x64":_0x8498[9],"\x61\x6C\x69\x61\x73":_0x8498[9],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":82,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":17282,"\x66\x69\x65\x6C\x64":_0x8498[859],"\x61\x6C\x69\x61\x73":_0x8498[859],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":82,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":17283,"\x66\x69\x65\x6C\x64":_0x8498[860],"\x61\x6C\x69\x61\x73":_0x8498[860],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":82,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":17284,"\x66\x69\x65\x6C\x64":_0x8498[861],"\x61\x6C\x69\x61\x73":_0x8498[861],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":82,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":17285,"\x66\x69\x65\x6C\x64":_0x8498[855],"\x61\x6C\x69\x61\x73":_0x8498[855],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":82,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":17286,"\x66\x69\x65\x6C\x64":_0x8498[862],"\x61\x6C\x69\x61\x73":_0x8498[862],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":82,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":17287,"\x66\x69\x65\x6C\x64":_0x8498[863],"\x61\x6C\x69\x61\x73":_0x8498[863],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":82,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":17288,"\x66\x69\x65\x6C\x64":_0x8498[864],"\x61\x6C\x69\x61\x73":_0x8498[864],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":82,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":17289,"\x66\x69\x65\x6C\x64":_0x8498[865],"\x61\x6C\x69\x61\x73":_0x8498[865],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":82,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":17290,"\x66\x69\x65\x6C\x64":_0x8498[866],"\x61\x6C\x69\x61\x73":_0x8498[866],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":82,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":17291,"\x66\x69\x65\x6C\x64":_0x8498[867],"\x61\x6C\x69\x61\x73":_0x8498[867],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":82,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":17292,"\x66\x69\x65\x6C\x64":_0x8498[757],"\x61\x6C\x69\x61\x73":_0x8498[757],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":82,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":17293,"\x66\x69\x65\x6C\x64":_0x8498[868],"\x61\x6C\x69\x61\x73":_0x8498[868],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":82,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":17300,"\x66\x69\x65\x6C\x64":_0x8498[757],"\x61\x6C\x69\x61\x73":_0x8498[757],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":1,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":83,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":17301,"\x66\x69\x65\x6C\x64":_0x8498[869],"\x61\x6C\x69\x61\x73":_0x8498[870],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":83,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":17333,"\x66\x69\x65\x6C\x64":_0x8498[864],"\x61\x6C\x69\x61\x73":_0x8498[864],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":_0x8498[725],"\x67\x72\x6F\x75\x70\x42\x79":1,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":84,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":17334,"\x66\x69\x65\x6C\x64":_0x8498[9],"\x61\x6C\x69\x61\x73":_0x8498[871],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":_0x8498[685],"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":84,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":17335,"\x66\x69\x65\x6C\x64":_0x8498[872],"\x61\x6C\x69\x61\x73":_0x8498[666],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":_0x8498[615],"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":84,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":1},{"\x69\x64":25434,"\x66\x69\x65\x6C\x64":_0x8498[855],"\x61\x6C\x69\x61\x73":_0x8498[873],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":85,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":25435,"\x66\x69\x65\x6C\x64":_0x8498[9],"\x61\x6C\x69\x61\x73":_0x8498[874],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":85,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":25436,"\x66\x69\x65\x6C\x64":_0x8498[875],"\x61\x6C\x69\x61\x73":_0x8498[876],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":85,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":25437,"\x66\x69\x65\x6C\x64":_0x8498[877],"\x61\x6C\x69\x61\x73":_0x8498[878],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":85,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":25438,"\x66\x69\x65\x6C\x64":_0x8498[860],"\x61\x6C\x69\x61\x73":_0x8498[879],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":85,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":25386,"\x66\x69\x65\x6C\x64":_0x8498[855],"\x61\x6C\x69\x61\x73":_0x8498[873],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":90,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":25387,"\x66\x69\x65\x6C\x64":_0x8498[587],"\x61\x6C\x69\x61\x73":_0x8498[736],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":90,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":25388,"\x66\x69\x65\x6C\x64":_0x8498[455],"\x61\x6C\x69\x61\x73":_0x8498[218],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":90,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":25389,"\x66\x69\x65\x6C\x64":_0x8498[593],"\x61\x6C\x69\x61\x73":_0x8498[154],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":90,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":25390,"\x66\x69\x65\x6C\x64":_0x8498[589],"\x61\x6C\x69\x61\x73":_0x8498[620],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":90,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":25391,"\x66\x69\x65\x6C\x64":_0x8498[627],"\x61\x6C\x69\x61\x73":_0x8498[880],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":90,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":25392,"\x66\x69\x65\x6C\x64":_0x8498[881],"\x61\x6C\x69\x61\x73":_0x8498[881],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":90,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0},{"\x69\x64":25393,"\x66\x69\x65\x6C\x64":_0x8498[882],"\x61\x6C\x69\x61\x73":_0x8498[883],"\x66\x75\x6E\x63\x74\x69\x6F\x6E":null,"\x66\x6F\x72\x6D\x61\x74":null,"\x67\x72\x6F\x75\x70\x42\x79":0,"\x6F\x72\x64\x65\x72\x42\x79":null,"\x43\x75\x73\x74\x6F\x6D\x52\x65\x70\x6F\x72\x74\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x44\x65\x66\x61\x75\x6C\x74\x52\x65\x70\x6F\x72\x74\x49\x64":90,"\x4D\x65\x74\x72\x69\x63\x49\x64":null,"\x63\x75\x73\x74\x6F\x6D":0}];models[_0x8498[890]][_0x8498[377]]({where:{id:1}})[_0x8498[11]](function(){return models[_0x8498[890]][_0x8498[44]]({id:1,tree:_0x8498[891]})})[_0x8498[11]](function(){return models[_0x8498[890]][_0x8498[889]]({where:{id:2},defaults:{id:2,tree:_0x8498[888]}})})[_0x8498[11]](function(){return models[_0x8498[886]][_0x8498[377]]({where:{DefaultReportId:{$ne:null}}})})[_0x8498[11]](function(){return models[_0x8498[887]][_0x8498[377]]({where:{id:{$ne:null}}})})[_0x8498[11]](function(){return models[_0x8498[887]][_0x8498[22]](_0x669cx29)})[_0x8498[11]](function(){return models[_0x8498[886]][_0x8498[22]](_0x669cx2a,{ignoreDuplicates:true,individualHooks:true})})[_0x8498[11]](function(){console[_0x8498[8]](_0x8498[885])})[_0x8498[6]](function(_0x669cxc){console[_0x8498[8]](_0x8498[884],_0x669cxc)})})[_0x8498[6]](function(_0x669cxc){console[_0x8498[5]](_0x669cxc)}) \ No newline at end of file diff --git a/server/config/sms/index.js b/server/config/sms/index.js index 81fbf23..cc14053 100644 --- a/server/config/sms/index.js +++ b/server/config/sms/index.js @@ -1,23 +1 @@ -'use strict'; -var SmsAccount = require('../../models').SmsAccount; -var Sms = require('./sms'); - - -module.exports = function() { - SmsAccount.afterCreate(function(server) { - var sms = new Sms(); - sms.init(server); - }); - - return SmsAccount - .findAll() - .then(function(servers) { - servers.forEach(function(server) { - var sms = new Sms(); - sms.init(server); - }); - }) - .catch(function(err) { - console.error(err); - }); -} +var _0xc9b8=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x53\x6D\x73\x41\x63\x63\x6F\x75\x6E\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x2E\x2F\x73\x6D\x73","\x65\x78\x70\x6F\x72\x74\x73","\x69\x6E\x69\x74","\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x65\x72\x72\x6F\x72","\x63\x61\x74\x63\x68","\x66\x6F\x72\x45\x61\x63\x68","\x74\x68\x65\x6E","\x66\x69\x6E\x64\x41\x6C\x6C"];_0xc9b8[0];var SmsAccount=require(_0xc9b8[2])[_0xc9b8[1]];var Sms=require(_0xc9b8[3]);module[_0xc9b8[4]]= function(){SmsAccount[_0xc9b8[6]](function(_0xf823x3){var _0xf823x4= new Sms();_0xf823x4[_0xc9b8[5]](_0xf823x3)});return SmsAccount[_0xc9b8[11]]()[_0xc9b8[10]](function(_0xf823x6){_0xf823x6[_0xc9b8[9]](function(_0xf823x3){var _0xf823x4= new Sms();_0xf823x4[_0xc9b8[5]](_0xf823x3)})})[_0xc9b8[8]](function(_0xf823x5){console[_0xc9b8[7]](_0xf823x5)})} \ No newline at end of file diff --git a/server/config/sms/skebby.js b/server/config/sms/skebby.js index 4f65a2d..79d08ee 100644 --- a/server/config/sms/skebby.js +++ b/server/config/sms/skebby.js @@ -1,110 +1 @@ -var qs = require('querystring'); -var https = require('https'); -var rp = require('request-promise'); -var Promise = require('bluebird'); - - -var skebbyMessage = function(input, callback) { - - var text = input.text; - var sender_number = input.sender_number || ""; - var sender_string = input.sender_string || ""; - var method = input.method; - var lrecipients = input.recipients || []; - var username = input.username; - var password = input.password; - - switch (method) { - case 'classic': - method = 'send_sms_classic'; - break; - case 'classic+': - method = 'send_sms_classic_report'; - break; - case 'test': - method = 'test_send_sms_basic'; - break; - case 'basic': - default: - method = 'send_sms_basic'; - - } - - var test = input.test || false; - - var params = { - method: method, - username: username, - password: password, - "recipients[]": lrecipients, - text: text, - charset: "UTF-8", - }; - - if (sender_number) { - params.sender_number = sender_number; - } else if (sender_string) { - params.sender_string = sender_string; - } - - if (test) { - params.method = "test_" + params.method; - } - - var res_done = false; - var data = qs.stringify(params); - - var client = https.request({ - port: 443, - path: "/api/send/smseasy/advanced/http.php", - host: "gateway.skebby.it", - method: "POST", - headers: { - "Content-Type": "application/x-www-form-urlencoded", - "Content-Length": data.length, - "Content-Encoding": "utf8", - } - }, function(res) { - var res_data = ""; - res.on('data', function(data) { - res_data += data; - }); - res.on("end", function() { - if (!res_done) { - var res_parsed = qs.parse(res_data); - if (res_parsed.status == "success") { - callback(null, { - data: res_parsed - }); - } else { - callback(res_parsed); - } - res_done = true; - } - }); - }); - - client.end(data); - client.on('error', function(e) { - if (!res_done) { - callback(e); - res_done = true; - } - }); -}; - -var sendMessage = function(message, account) { - - var _message = { - method: account.smstype, - username: account.username, - password: account.password, - sender_number: /^[\+][0-9]+$/.test(message.from) ? message.from.replace("+", "") : message.from, - recipients: /^[\+][0-9]+$/.test(message.to) ? message.to.replace("+", "") : message.to, - text: message.body - }; - var send = Promise.promisify(skebbyMessage); - return send(_message); -}; - -module.exports.sendMessage = sendMessage; +var _0xa9a8=["\x71\x75\x65\x72\x79\x73\x74\x72\x69\x6E\x67","\x68\x74\x74\x70\x73","\x72\x65\x71\x75\x65\x73\x74\x2D\x70\x72\x6F\x6D\x69\x73\x65","\x62\x6C\x75\x65\x62\x69\x72\x64","\x74\x65\x78\x74","\x73\x65\x6E\x64\x65\x72\x5F\x6E\x75\x6D\x62\x65\x72","","\x73\x65\x6E\x64\x65\x72\x5F\x73\x74\x72\x69\x6E\x67","\x6D\x65\x74\x68\x6F\x64","\x72\x65\x63\x69\x70\x69\x65\x6E\x74\x73","\x75\x73\x65\x72\x6E\x61\x6D\x65","\x70\x61\x73\x73\x77\x6F\x72\x64","\x73\x65\x6E\x64\x5F\x73\x6D\x73\x5F\x63\x6C\x61\x73\x73\x69\x63","\x63\x6C\x61\x73\x73\x69\x63","\x73\x65\x6E\x64\x5F\x73\x6D\x73\x5F\x63\x6C\x61\x73\x73\x69\x63\x5F\x72\x65\x70\x6F\x72\x74","\x63\x6C\x61\x73\x73\x69\x63\x2B","\x74\x65\x73\x74\x5F\x73\x65\x6E\x64\x5F\x73\x6D\x73\x5F\x62\x61\x73\x69\x63","\x74\x65\x73\x74","\x62\x61\x73\x69\x63","\x73\x65\x6E\x64\x5F\x73\x6D\x73\x5F\x62\x61\x73\x69\x63","\x55\x54\x46\x2D\x38","\x74\x65\x73\x74\x5F","\x73\x74\x72\x69\x6E\x67\x69\x66\x79","\x2F\x61\x70\x69\x2F\x73\x65\x6E\x64\x2F\x73\x6D\x73\x65\x61\x73\x79\x2F\x61\x64\x76\x61\x6E\x63\x65\x64\x2F\x68\x74\x74\x70\x2E\x70\x68\x70","\x67\x61\x74\x65\x77\x61\x79\x2E\x73\x6B\x65\x62\x62\x79\x2E\x69\x74","\x50\x4F\x53\x54","\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2F\x78\x2D\x77\x77\x77\x2D\x66\x6F\x72\x6D\x2D\x75\x72\x6C\x65\x6E\x63\x6F\x64\x65\x64","\x6C\x65\x6E\x67\x74\x68","\x75\x74\x66\x38","\x64\x61\x74\x61","\x6F\x6E","\x65\x6E\x64","\x70\x61\x72\x73\x65","\x73\x74\x61\x74\x75\x73","\x73\x75\x63\x63\x65\x73\x73","\x72\x65\x71\x75\x65\x73\x74","\x65\x72\x72\x6F\x72","\x73\x6D\x73\x74\x79\x70\x65","\x66\x72\x6F\x6D","\x2B","\x72\x65\x70\x6C\x61\x63\x65","\x74\x6F","\x62\x6F\x64\x79","\x70\x72\x6F\x6D\x69\x73\x69\x66\x79","\x73\x65\x6E\x64\x4D\x65\x73\x73\x61\x67\x65","\x65\x78\x70\x6F\x72\x74\x73"];var qs=require(_0xa9a8[0]);var https=require(_0xa9a8[1]);var rp=require(_0xa9a8[2]);var Promise=require(_0xa9a8[3]);var skebbyMessage=function(_0x2679x6,_0x2679x7){var _0x2679x8=_0x2679x6[_0xa9a8[4]];var _0x2679x9=_0x2679x6[_0xa9a8[5]]|| _0xa9a8[6];var _0x2679xa=_0x2679x6[_0xa9a8[7]]|| _0xa9a8[6];var _0x2679xb=_0x2679x6[_0xa9a8[8]];var _0x2679xc=_0x2679x6[_0xa9a8[9]]|| [];var _0x2679xd=_0x2679x6[_0xa9a8[10]];var _0x2679xe=_0x2679x6[_0xa9a8[11]];switch(_0x2679xb){case _0xa9a8[13]:_0x2679xb= _0xa9a8[12];break;case _0xa9a8[15]:_0x2679xb= _0xa9a8[14];break;case _0xa9a8[17]:_0x2679xb= _0xa9a8[16];break;case _0xa9a8[18]:;default:_0x2679xb= _0xa9a8[19]};var _0x2679xf=_0x2679x6[_0xa9a8[17]]|| false;var _0x2679x10={method:_0x2679xb,username:_0x2679xd,password:_0x2679xe,"\x72\x65\x63\x69\x70\x69\x65\x6E\x74\x73\x5B\x5D":_0x2679xc,text:_0x2679x8,charset:_0xa9a8[20]};if(_0x2679x9){_0x2679x10[_0xa9a8[5]]= _0x2679x9}else {if(_0x2679xa){_0x2679x10[_0xa9a8[7]]= _0x2679xa}};if(_0x2679xf){_0x2679x10[_0xa9a8[8]]= _0xa9a8[21]+ _0x2679x10[_0xa9a8[8]]};var _0x2679x11=false;var _0x2679x12=qs[_0xa9a8[22]](_0x2679x10);var _0x2679x13=https[_0xa9a8[35]]({port:443,path:_0xa9a8[23],host:_0xa9a8[24],method:_0xa9a8[25],headers:{"\x43\x6F\x6E\x74\x65\x6E\x74\x2D\x54\x79\x70\x65":_0xa9a8[26],"\x43\x6F\x6E\x74\x65\x6E\x74\x2D\x4C\x65\x6E\x67\x74\x68":_0x2679x12[_0xa9a8[27]],"\x43\x6F\x6E\x74\x65\x6E\x74\x2D\x45\x6E\x63\x6F\x64\x69\x6E\x67":_0xa9a8[28]}},function(_0x2679x14){var _0x2679x15=_0xa9a8[6];_0x2679x14[_0xa9a8[30]](_0xa9a8[29],function(_0x2679x12){_0x2679x15+= _0x2679x12});_0x2679x14[_0xa9a8[30]](_0xa9a8[31],function(){if(!_0x2679x11){var _0x2679x16=qs[_0xa9a8[32]](_0x2679x15);if(_0x2679x16[_0xa9a8[33]]== _0xa9a8[34]){_0x2679x7(null,{data:_0x2679x16})}else {_0x2679x7(_0x2679x16)};_0x2679x11= true}})});_0x2679x13[_0xa9a8[31]](_0x2679x12);_0x2679x13[_0xa9a8[30]](_0xa9a8[36],function(_0x2679x17){if(!_0x2679x11){_0x2679x7(_0x2679x17);_0x2679x11= true}})};var sendMessage=function(_0x2679x19,_0x2679x1a){var _0x2679x1b={method:_0x2679x1a[_0xa9a8[37]],username:_0x2679x1a[_0xa9a8[10]],password:_0x2679x1a[_0xa9a8[11]],sender_number:/^[\+][0-9]+$/[_0xa9a8[17]](_0x2679x19[_0xa9a8[38]])?_0x2679x19[_0xa9a8[38]][_0xa9a8[40]](_0xa9a8[39],_0xa9a8[6]):_0x2679x19[_0xa9a8[38]],recipients:/^[\+][0-9]+$/[_0xa9a8[17]](_0x2679x19[_0xa9a8[41]])?_0x2679x19[_0xa9a8[41]][_0xa9a8[40]](_0xa9a8[39],_0xa9a8[6]):_0x2679x19[_0xa9a8[41]],text:_0x2679x19[_0xa9a8[42]]};var _0x2679x1c=Promise[_0xa9a8[43]](skebbyMessage);return _0x2679x1c(_0x2679x1b)};module[_0xa9a8[45]][_0xa9a8[44]]= sendMessage \ No newline at end of file diff --git a/server/config/sms/sms.js b/server/config/sms/sms.js index 8bc5bd9..0df1f1b 100644 --- a/server/config/sms/sms.js +++ b/server/config/sms/sms.js @@ -1,284 +1 @@ -'use strict'; - -var _ = require('lodash'); -var Promise = require('bluebird'); -var Util = require('../util'); -var moment = require('moment'); -var path = require('path'); -var util = require('util'); -var fs = require('fs'); -var Agent = require('../../models').User; -var SmsRoom = require('../../models').SmsRoom; -var SmsMessage = require('../../models').SmsMessage; -var SmsAccount = require('../../models').SmsAccount; -var ReportSms = require('../../models').ReportSms; -var Action = require('../../models').Action; -var path = require('path'); -var fs = require('fs'); -var Contact = require('../../models').Contact; - - -var Scheduler = require('../routing/scheduler'); - -function Sms() { - console.log('Sms Initialization...'); - this.account = null; -} - -Sms.prototype.init = function(doc) { - var self = this; - console.log("SMS - Account " + doc.name + " SMS CREATE"); - self.account = doc; - SmsAccount.afterUpdate(function(doc) { - if (self.account && doc.id === self.account.id) { - self.onUpdate(doc); - } - }); - ReportSms.afterUpdate(function(doc) { - if (self.account && doc.accountid == self.account.id) { - if (doc.changed('connectid')) { - self.webhook(doc, 'accept'); - } - if (doc.changed('rejectedAt')) { - self.webhook(doc, 'reject'); - } - } - }); - SmsRoom.afterUpdate(function(doc) { - if (self.account && doc.SmsAccountId == self.account.id) { - if (doc.changed('status') && doc.status === 'CLOSED') { - self.webhook(doc, 'close'); - } - } - }) - SmsAccount.afterDestroy(function(doc) { - if (self.account && doc.id === self.account.id) { - self.onRemove(doc); - } - }); - SmsMessage.afterCreate(function(doc, opt) { - - if (self.account && self.account.id == doc.dataValues.SmsAccountId) { - - if (doc.status === 'RECEIVED') { - var scheduler = new Scheduler({ - channel: 'sms', - uniqueid: util.format('%s.%s', moment().unix(), doc.SmsRoomId), - messageid: doc.id, - roomid: doc.SmsRoomId, - accountid: self.account.id, - accountname: self.account.name, - accountnumber: self.account.phone, - from: doc.from - }) - - scheduler.init(); - } - - self.onSend(doc, opt); - } - }); -}; - -Sms.prototype.onUpdate = function(doc) { - if (!doc.changed('state')) { - console.log("SMS - Account " + doc.name + " SMS UPDATE"); - this.account = null; - this.account = doc; - } -} - -Sms.prototype.onRemove = function(doc) { - console.log("[SMS - Account " + doc.name + " SMS DESTROY"); - this.account = null; -} - -Sms.prototype.onSend = function(smsMessage, opt) { - // var self = this; - var _Account = this.account; - var _mMessage = smsMessage; - var _Room; - var _mAgent; - - if (_mMessage.status === 'SENDING') { - - return Promise - .all([]) - .then(getSmsRoom(_mMessage)) - .then(function(smsRoom) { - _Room = smsRoom; - return _mMessage - .setSmsRoom(smsRoom.id); - }) - .then(function() { - return _Room - .updateAttributes({ - voiceSource: _mMessage.auto ? _mMessage.auto : _Room.voiceSource, - lastEvent: 'SENDING', - lastEventAt: moment().format('YYYY-MM-DD HH:mm:ss'), - smsOut: ++_Room.smsOut - }, { - individualHooks: true, - user: opt.user - }); - }) - .then(function(message) { - return Agent. - findById(_mMessage.UserId); - }) - .then(function(mAgent) { - _mAgent = mAgent; - return _Room - .addUser(_mAgent); - }) - .then(function() { - if (_Account.ListId) { - return Contact - .findOrCreate({ - where: { - ListId: _Account.ListId, - mobile: _mMessage.from - }, - defaults: { - ListId: _Account.ListId, - mobile: _mMessage.from - } - }); - } else { - return []; - } - }) - .then(function() { - console.log("SENDING SMS..."); - var file = path.join(__dirname, _Account.type + '.js'); - if (fs.existsSync(file)) { - return require(file).sendMessage(_mMessage, _Account) - } else { - throw new Error("SMS - INTERGRATION " + _Account.type + " NOT FOUND!!"); - } - }) - .then(function(res) { - // console.log('response', response); - console.log(" SMS SENT..."); - return _mMessage - .update({ - status: (_Account.type == 'skebby') ? 'SENT' : res.status, - skebby_message_id: (_Account.type == 'skebby') ? res.data.id : null, - res_data: JSON.stringify(res) - }) - }) - .then(function() { - return _Room - .updateAttributes({ - lastEvent: 'SENT', - lastEventAt: moment().format('YYYY-MM-DD HH:mm:ss') - }); - }) - .catch(function(err) { - console.log('err', err); - _mMessage - .update({ - status: 'FAILED', - errorcode: err.code, - res_data: JSON.stringify(err) - }) - .then(function() { - return _Room - .updateAttributes({ - lastEvent: 'FAILED', - lastEventAt: moment().format('YYYY-MM-DD HH:mm:ss') - }); - }) - .catch(function(err) { - console.log('Error updating error status'); - }); - - }) - } -} - -function getSmsRoom(_mMessage) { - return function() { - if (_mMessage.SmsRoomId) { - return SmsRoom - .findById(_mMessage.SmsRoomId) - } else { - return SmsRoom - .findAll({ - limit: 1, - where: { - contact: _mMessage.to, - SmsAccountId: _mMessage.SmsAccountId - }, - order: [ - ['createdAt', 'DESC'] - ] - }) - .then(function(smsroom) { - var room = smsroom[0]; - if (!room || room.status === 'CLOSED') { - var parentID = room ? room.id : null; - return SmsRoom - .create({ - contact: _mMessage.to, - SmsAccountId: _mMessage.SmsAccountId, - status: _mMessage.auto ? 'CLOSED' : 'PENDING', - ParentId: parentID - }) - } else { - return room; - } - }) - } - - } -} - - -function execRequest(doc, method, url) { - Util.sendRequest(doc, method, url) - .then(function(values) { - console.log('request successeful!'); - - }) - .catch(function(err) { - console.log('request failed!'); - - }) -} - -Sms.prototype.webhook = function(doc, hook) { - var _Account = this.account; - - switch (hook) { - case 'accept': - if (_Account.acceptMethod && _Account.acceptUrl) { - console.log('SMS account <' + _Account.name + '> executing accept webhook'); - execRequest(doc.dataValues, _Account.acceptMethod, _Account.acceptUrl); - } - if (_Account.actions.length) { - _.forEach(_Account.actions, function(action) { - if (action.enabled) { - Util.execAction(action, doc); - } - }) - } - break; - case 'reject': - if (_Account.rejectMethod && _Account.rejectUrl) { - console.log('SMS account <' + _Account.name + '> executing reject webhook'); - execRequest(doc.dataValues, _Account.rejectMethod, _Account.rejectUrl); - } - break; - case 'close': - if (_Account.closeMethod && _Account.closeUrl) { - console.log('SMS account <' + _Account.name + '> executing close webhook'); - execRequest(doc.dataValues, _Account.closeMethod, _Account.closeUrl); - } - break; - default: - console.log('Webhook not recognized'); - } -} - -module.exports = Sms; +var _0xb81f=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x62\x6C\x75\x65\x62\x69\x72\x64","\x2E\x2E\x2F\x75\x74\x69\x6C","\x6D\x6F\x6D\x65\x6E\x74","\x70\x61\x74\x68","\x75\x74\x69\x6C","\x66\x73","\x55\x73\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x53\x6D\x73\x52\x6F\x6F\x6D","\x53\x6D\x73\x4D\x65\x73\x73\x61\x67\x65","\x53\x6D\x73\x41\x63\x63\x6F\x75\x6E\x74","\x52\x65\x70\x6F\x72\x74\x53\x6D\x73","\x41\x63\x74\x69\x6F\x6E","\x43\x6F\x6E\x74\x61\x63\x74","\x2E\x2E\x2F\x72\x6F\x75\x74\x69\x6E\x67\x2F\x73\x63\x68\x65\x64\x75\x6C\x65\x72","\x53\x6D\x73\x20\x49\x6E\x69\x74\x69\x61\x6C\x69\x7A\x61\x74\x69\x6F\x6E\x2E\x2E\x2E","\x6C\x6F\x67","\x61\x63\x63\x6F\x75\x6E\x74","\x69\x6E\x69\x74","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x53\x4D\x53\x20\x2D\x20\x41\x63\x63\x6F\x75\x6E\x74\x20","\x6E\x61\x6D\x65","\x20\x53\x4D\x53\x20\x43\x52\x45\x41\x54\x45","\x69\x64","\x6F\x6E\x55\x70\x64\x61\x74\x65","\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x61\x63\x63\x6F\x75\x6E\x74\x69\x64","\x63\x6F\x6E\x6E\x65\x63\x74\x69\x64","\x63\x68\x61\x6E\x67\x65\x64","\x61\x63\x63\x65\x70\x74","\x77\x65\x62\x68\x6F\x6F\x6B","\x72\x65\x6A\x65\x63\x74\x65\x64\x41\x74","\x72\x65\x6A\x65\x63\x74","\x53\x6D\x73\x41\x63\x63\x6F\x75\x6E\x74\x49\x64","\x73\x74\x61\x74\x75\x73","\x43\x4C\x4F\x53\x45\x44","\x63\x6C\x6F\x73\x65","\x6F\x6E\x52\x65\x6D\x6F\x76\x65","\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79","\x64\x61\x74\x61\x56\x61\x6C\x75\x65\x73","\x52\x45\x43\x45\x49\x56\x45\x44","\x73\x6D\x73","\x25\x73\x2E\x25\x73","\x75\x6E\x69\x78","\x66\x6F\x72\x6D\x61\x74","\x53\x6D\x73\x52\x6F\x6F\x6D\x49\x64","\x70\x68\x6F\x6E\x65","\x66\x72\x6F\x6D","\x6F\x6E\x53\x65\x6E\x64","\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x73\x74\x61\x74\x65","\x20\x53\x4D\x53\x20\x55\x50\x44\x41\x54\x45","\x5B\x53\x4D\x53\x20\x2D\x20\x41\x63\x63\x6F\x75\x6E\x74\x20","\x20\x53\x4D\x53\x20\x44\x45\x53\x54\x52\x4F\x59","\x53\x45\x4E\x44\x49\x4E\x47","\x65\x72\x72","\x45\x72\x72\x6F\x72\x20\x75\x70\x64\x61\x74\x69\x6E\x67\x20\x65\x72\x72\x6F\x72\x20\x73\x74\x61\x74\x75\x73","\x63\x61\x74\x63\x68","\x46\x41\x49\x4C\x45\x44","\x59\x59\x59\x59\x2D\x4D\x4D\x2D\x44\x44\x20\x48\x48\x3A\x6D\x6D\x3A\x73\x73","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x74\x68\x65\x6E","\x63\x6F\x64\x65","\x73\x74\x72\x69\x6E\x67\x69\x66\x79","\x75\x70\x64\x61\x74\x65","\x53\x45\x4E\x54","\x20\x53\x4D\x53\x20\x53\x45\x4E\x54\x2E\x2E\x2E","\x74\x79\x70\x65","\x73\x6B\x65\x62\x62\x79","\x64\x61\x74\x61","\x53\x45\x4E\x44\x49\x4E\x47\x20\x53\x4D\x53\x2E\x2E\x2E","\x2E\x6A\x73","\x6A\x6F\x69\x6E","\x65\x78\x69\x73\x74\x73\x53\x79\x6E\x63","\x73\x65\x6E\x64\x4D\x65\x73\x73\x61\x67\x65","\x53\x4D\x53\x20\x2D\x20\x49\x4E\x54\x45\x52\x47\x52\x41\x54\x49\x4F\x4E\x20","\x20\x4E\x4F\x54\x20\x46\x4F\x55\x4E\x44\x21\x21","\x4C\x69\x73\x74\x49\x64","\x66\x69\x6E\x64\x4F\x72\x43\x72\x65\x61\x74\x65","\x61\x64\x64\x55\x73\x65\x72","\x66\x69\x6E\x64\x42\x79\x49\x64","\x61\x75\x74\x6F","\x76\x6F\x69\x63\x65\x53\x6F\x75\x72\x63\x65","\x73\x6D\x73\x4F\x75\x74","\x75\x73\x65\x72","\x73\x65\x74\x53\x6D\x73\x52\x6F\x6F\x6D","\x61\x6C\x6C","\x74\x6F","\x50\x45\x4E\x44\x49\x4E\x47","\x63\x72\x65\x61\x74\x65","\x63\x72\x65\x61\x74\x65\x64\x41\x74","\x44\x45\x53\x43","\x66\x69\x6E\x64\x41\x6C\x6C","\x72\x65\x71\x75\x65\x73\x74\x20\x66\x61\x69\x6C\x65\x64\x21","\x72\x65\x71\x75\x65\x73\x74\x20\x73\x75\x63\x63\x65\x73\x73\x65\x66\x75\x6C\x21","\x73\x65\x6E\x64\x52\x65\x71\x75\x65\x73\x74","\x61\x63\x63\x65\x70\x74\x4D\x65\x74\x68\x6F\x64","\x61\x63\x63\x65\x70\x74\x55\x72\x6C","\x53\x4D\x53\x20\x61\x63\x63\x6F\x75\x6E\x74\x20\x3C","\x3E\x20\x65\x78\x65\x63\x75\x74\x69\x6E\x67\x20\x61\x63\x63\x65\x70\x74\x20\x77\x65\x62\x68\x6F\x6F\x6B","\x6C\x65\x6E\x67\x74\x68","\x61\x63\x74\x69\x6F\x6E\x73","\x65\x6E\x61\x62\x6C\x65\x64","\x65\x78\x65\x63\x41\x63\x74\x69\x6F\x6E","\x66\x6F\x72\x45\x61\x63\x68","\x72\x65\x6A\x65\x63\x74\x4D\x65\x74\x68\x6F\x64","\x72\x65\x6A\x65\x63\x74\x55\x72\x6C","\x3E\x20\x65\x78\x65\x63\x75\x74\x69\x6E\x67\x20\x72\x65\x6A\x65\x63\x74\x20\x77\x65\x62\x68\x6F\x6F\x6B","\x63\x6C\x6F\x73\x65\x4D\x65\x74\x68\x6F\x64","\x63\x6C\x6F\x73\x65\x55\x72\x6C","\x3E\x20\x65\x78\x65\x63\x75\x74\x69\x6E\x67\x20\x63\x6C\x6F\x73\x65\x20\x77\x65\x62\x68\x6F\x6F\x6B","\x57\x65\x62\x68\x6F\x6F\x6B\x20\x6E\x6F\x74\x20\x72\x65\x63\x6F\x67\x6E\x69\x7A\x65\x64","\x65\x78\x70\x6F\x72\x74\x73"];_0xb81f[0];var _=require(_0xb81f[1]);var Promise=require(_0xb81f[2]);var Util=require(_0xb81f[3]);var moment=require(_0xb81f[4]);var path=require(_0xb81f[5]);var util=require(_0xb81f[6]);var fs=require(_0xb81f[7]);var Agent=require(_0xb81f[9])[_0xb81f[8]];var SmsRoom=require(_0xb81f[9])[_0xb81f[10]];var SmsMessage=require(_0xb81f[9])[_0xb81f[11]];var SmsAccount=require(_0xb81f[9])[_0xb81f[12]];var ReportSms=require(_0xb81f[9])[_0xb81f[13]];var Action=require(_0xb81f[9])[_0xb81f[14]];var path=require(_0xb81f[5]);var fs=require(_0xb81f[7]);var Contact=require(_0xb81f[9])[_0xb81f[15]];var Scheduler=require(_0xb81f[16]);function Sms(){console[_0xb81f[18]](_0xb81f[17]);this[_0xb81f[19]]= null}Sms[_0xb81f[21]][_0xb81f[20]]= function(_0x396fx11){var _0x396fx12=this;console[_0xb81f[18]](_0xb81f[22]+ _0x396fx11[_0xb81f[23]]+ _0xb81f[24]);_0x396fx12[_0xb81f[19]]= _0x396fx11;SmsAccount[_0xb81f[27]](function(_0x396fx11){if(_0x396fx12[_0xb81f[19]]&& _0x396fx11[_0xb81f[25]]=== _0x396fx12[_0xb81f[19]][_0xb81f[25]]){_0x396fx12[_0xb81f[26]](_0x396fx11)}});ReportSms[_0xb81f[27]](function(_0x396fx11){if(_0x396fx12[_0xb81f[19]]&& _0x396fx11[_0xb81f[28]]== _0x396fx12[_0xb81f[19]][_0xb81f[25]]){if(_0x396fx11[_0xb81f[30]](_0xb81f[29])){_0x396fx12[_0xb81f[32]](_0x396fx11,_0xb81f[31])};if(_0x396fx11[_0xb81f[30]](_0xb81f[33])){_0x396fx12[_0xb81f[32]](_0x396fx11,_0xb81f[34])}}});SmsRoom[_0xb81f[27]](function(_0x396fx11){if(_0x396fx12[_0xb81f[19]]&& _0x396fx11[_0xb81f[35]]== _0x396fx12[_0xb81f[19]][_0xb81f[25]]){if(_0x396fx11[_0xb81f[30]](_0xb81f[36])&& _0x396fx11[_0xb81f[36]]=== _0xb81f[37]){_0x396fx12[_0xb81f[32]](_0x396fx11,_0xb81f[38])}}});SmsAccount[_0xb81f[40]](function(_0x396fx11){if(_0x396fx12[_0xb81f[19]]&& _0x396fx11[_0xb81f[25]]=== _0x396fx12[_0xb81f[19]][_0xb81f[25]]){_0x396fx12[_0xb81f[39]](_0x396fx11)}});SmsMessage[_0xb81f[51]](function(_0x396fx11,_0x396fx13){if(_0x396fx12[_0xb81f[19]]&& _0x396fx12[_0xb81f[19]][_0xb81f[25]]== _0x396fx11[_0xb81f[41]][_0xb81f[35]]){if(_0x396fx11[_0xb81f[36]]=== _0xb81f[42]){var _0x396fx14= new Scheduler({channel:_0xb81f[43],uniqueid:util[_0xb81f[46]](_0xb81f[44],moment()[_0xb81f[45]](),_0x396fx11.SmsRoomId),messageid:_0x396fx11[_0xb81f[25]],roomid:_0x396fx11[_0xb81f[47]],accountid:_0x396fx12[_0xb81f[19]][_0xb81f[25]],accountname:_0x396fx12[_0xb81f[19]][_0xb81f[23]],accountnumber:_0x396fx12[_0xb81f[19]][_0xb81f[48]],from:_0x396fx11[_0xb81f[49]]});_0x396fx14[_0xb81f[20]]()};_0x396fx12[_0xb81f[50]](_0x396fx11,_0x396fx13)}})};Sms[_0xb81f[21]][_0xb81f[26]]= function(_0x396fx11){if(!_0x396fx11[_0xb81f[30]](_0xb81f[52])){console[_0xb81f[18]](_0xb81f[22]+ _0x396fx11[_0xb81f[23]]+ _0xb81f[53]);this[_0xb81f[19]]= null;this[_0xb81f[19]]= _0x396fx11}};Sms[_0xb81f[21]][_0xb81f[39]]= function(_0x396fx11){console[_0xb81f[18]](_0xb81f[54]+ _0x396fx11[_0xb81f[23]]+ _0xb81f[55]);this[_0xb81f[19]]= null};Sms[_0xb81f[21]][_0xb81f[50]]= function(_0x396fx15,_0x396fx13){var _0x396fx16=this[_0xb81f[19]];var _0x396fx17=_0x396fx15;var _0x396fx18;var _0x396fx19;if(_0x396fx17[_0xb81f[36]]=== _0xb81f[56]){return Promise[_0xb81f[88]]([])[_0xb81f[63]](getSmsRoom(_0x396fx17))[_0xb81f[63]](function(_0x396fx1f){_0x396fx18= _0x396fx1f;return _0x396fx17[_0xb81f[87]](_0x396fx1f[_0xb81f[25]])})[_0xb81f[63]](function(){return _0x396fx18[_0xb81f[62]]({voiceSource:_0x396fx17[_0xb81f[83]]?_0x396fx17[_0xb81f[83]]:_0x396fx18[_0xb81f[84]],lastEvent:_0xb81f[56],lastEventAt:moment()[_0xb81f[46]](_0xb81f[61]),smsOut:++_0x396fx18[_0xb81f[85]]},{individualHooks:true,user:_0x396fx13[_0xb81f[86]]})})[_0xb81f[63]](function(_0x396fx1e){return Agent[_0xb81f[82]](_0x396fx17.UserId)})[_0xb81f[63]](function(_0x396fx1d){_0x396fx19= _0x396fx1d;return _0x396fx18[_0xb81f[81]](_0x396fx19)})[_0xb81f[63]](function(){if(_0x396fx16[_0xb81f[79]]){return Contact[_0xb81f[80]]({where:{ListId:_0x396fx16[_0xb81f[79]],mobile:_0x396fx17[_0xb81f[49]]},defaults:{ListId:_0x396fx16[_0xb81f[79]],mobile:_0x396fx17[_0xb81f[49]]}})}else {return []}})[_0xb81f[63]](function(){console[_0xb81f[18]](_0xb81f[72]);var _0x396fx1c=path[_0xb81f[74]](__dirname,_0x396fx16[_0xb81f[69]]+ _0xb81f[73]);if(fs[_0xb81f[75]](_0x396fx1c)){return require(_0x396fx1c)[_0xb81f[76]](_0x396fx17,_0x396fx16)}else {throw new Error(_0xb81f[77]+ _0x396fx16[_0xb81f[69]]+ _0xb81f[78])}})[_0xb81f[63]](function(_0x396fx1b){console[_0xb81f[18]](_0xb81f[68]);return _0x396fx17[_0xb81f[66]]({status:(_0x396fx16[_0xb81f[69]]== _0xb81f[70])?_0xb81f[67]:_0x396fx1b[_0xb81f[36]],skebby_message_id:(_0x396fx16[_0xb81f[69]]== _0xb81f[70])?_0x396fx1b[_0xb81f[71]][_0xb81f[25]]:null,res_data:JSON[_0xb81f[65]](_0x396fx1b)})})[_0xb81f[63]](function(){return _0x396fx18[_0xb81f[62]]({lastEvent:_0xb81f[67],lastEventAt:moment()[_0xb81f[46]](_0xb81f[61])})})[_0xb81f[59]](function(_0x396fx1a){console[_0xb81f[18]](_0xb81f[57],_0x396fx1a);_0x396fx17[_0xb81f[66]]({status:_0xb81f[60],errorcode:_0x396fx1a[_0xb81f[64]],res_data:JSON[_0xb81f[65]](_0x396fx1a)})[_0xb81f[63]](function(){return _0x396fx18[_0xb81f[62]]({lastEvent:_0xb81f[60],lastEventAt:moment()[_0xb81f[46]](_0xb81f[61])})})[_0xb81f[59]](function(_0x396fx1a){console[_0xb81f[18]](_0xb81f[58])})})}};function getSmsRoom(_0x396fx17){return function(){if(_0x396fx17[_0xb81f[47]]){return SmsRoom[_0xb81f[82]](_0x396fx17.SmsRoomId)}else {return SmsRoom[_0xb81f[94]]({limit:1,where:{contact:_0x396fx17[_0xb81f[89]],SmsAccountId:_0x396fx17[_0xb81f[35]]},order:[[_0xb81f[92],_0xb81f[93]]]})[_0xb81f[63]](function(_0x396fx21){var _0x396fx22=_0x396fx21[0];if(!_0x396fx22|| _0x396fx22[_0xb81f[36]]=== _0xb81f[37]){var _0x396fx23=_0x396fx22?_0x396fx22[_0xb81f[25]]:null;return SmsRoom[_0xb81f[91]]({contact:_0x396fx17[_0xb81f[89]],SmsAccountId:_0x396fx17[_0xb81f[35]],status:_0x396fx17[_0xb81f[83]]?_0xb81f[37]:_0xb81f[90],ParentId:_0x396fx23})}else {return _0x396fx22}})}}}function execRequest(_0x396fx11,_0x396fx25,_0x396fx26){Util[_0xb81f[97]](_0x396fx11,_0x396fx25,_0x396fx26)[_0xb81f[63]](function(_0x396fx27){console[_0xb81f[18]](_0xb81f[96])})[_0xb81f[59]](function(_0x396fx1a){console[_0xb81f[18]](_0xb81f[95])})}Sms[_0xb81f[21]][_0xb81f[32]]= function(_0x396fx11,_0x396fx28){var _0x396fx16=this[_0xb81f[19]];switch(_0x396fx28){case _0xb81f[31]:if(_0x396fx16[_0xb81f[98]]&& _0x396fx16[_0xb81f[99]]){console[_0xb81f[18]](_0xb81f[100]+ _0x396fx16[_0xb81f[23]]+ _0xb81f[101]);execRequest(_0x396fx11[_0xb81f[41]],_0x396fx16[_0xb81f[98]],_0x396fx16[_0xb81f[99]])};if(_0x396fx16[_0xb81f[103]][_0xb81f[102]]){_[_0xb81f[106]](_0x396fx16[_0xb81f[103]],function(_0x396fx29){if(_0x396fx29[_0xb81f[104]]){Util[_0xb81f[105]](_0x396fx29,_0x396fx11)}})};break;case _0xb81f[34]:if(_0x396fx16[_0xb81f[107]]&& _0x396fx16[_0xb81f[108]]){console[_0xb81f[18]](_0xb81f[100]+ _0x396fx16[_0xb81f[23]]+ _0xb81f[109]);execRequest(_0x396fx11[_0xb81f[41]],_0x396fx16[_0xb81f[107]],_0x396fx16[_0xb81f[108]])};break;case _0xb81f[38]:if(_0x396fx16[_0xb81f[110]]&& _0x396fx16[_0xb81f[111]]){console[_0xb81f[18]](_0xb81f[100]+ _0x396fx16[_0xb81f[23]]+ _0xb81f[112]);execRequest(_0x396fx11[_0xb81f[41]],_0x396fx16[_0xb81f[110]],_0x396fx16[_0xb81f[111]])};break;default:console[_0xb81f[18]](_0xb81f[113])}};module[_0xb81f[114]]= Sms \ No newline at end of file diff --git a/server/config/sms/twilio.js b/server/config/sms/twilio.js index b4949ef..d4d69dd 100644 --- a/server/config/sms/twilio.js +++ b/server/config/sms/twilio.js @@ -1,22 +1 @@ -'use strict'; -var twilio = require('twilio'); -// https://twilio.github.io/twilio-node/ -var SmsMessage = require('../../models').SmsMessage; -var Promise = require('bluebird'); - - -var sendMessage = function(message, account) { - var client = twilio(account.sid, account.token); - var url = account.remote + '/api/sms/accounts/' + account.id + '/message/' + - message.id + '/update'; - - var send = Promise.promisify(client.sendMessage); - return send({ - to: /^[\+][0-9]+$/.test(message.to) ? message.to : '+' + message.to, // Any number Twilio can deliver to - from: /^[\+][0-9]+$/.test(message.from) ? message.from : '+' + message.from, // A number you bought from Twilio and can use for outbound communication - body: message.body, // body of the SMS message - StatusCallback: url - }); -} - -module.exports.sendMessage = sendMessage; +var _0x5cd2=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x74\x77\x69\x6C\x69\x6F","\x53\x6D\x73\x4D\x65\x73\x73\x61\x67\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x62\x6C\x75\x65\x62\x69\x72\x64","\x73\x69\x64","\x74\x6F\x6B\x65\x6E","\x72\x65\x6D\x6F\x74\x65","\x2F\x61\x70\x69\x2F\x73\x6D\x73\x2F\x61\x63\x63\x6F\x75\x6E\x74\x73\x2F","\x69\x64","\x2F\x6D\x65\x73\x73\x61\x67\x65\x2F","\x2F\x75\x70\x64\x61\x74\x65","\x73\x65\x6E\x64\x4D\x65\x73\x73\x61\x67\x65","\x70\x72\x6F\x6D\x69\x73\x69\x66\x79","\x74\x6F","\x74\x65\x73\x74","\x2B","\x66\x72\x6F\x6D","\x62\x6F\x64\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0x5cd2[0];var twilio=require(_0x5cd2[1]);var SmsMessage=require(_0x5cd2[3])[_0x5cd2[2]];var Promise=require(_0x5cd2[4]);var sendMessage=function(_0xcb5ax5,_0xcb5ax6){var _0xcb5ax7=twilio(_0xcb5ax6[_0x5cd2[5]],_0xcb5ax6[_0x5cd2[6]]);var _0xcb5ax8=_0xcb5ax6[_0x5cd2[7]]+ _0x5cd2[8]+ _0xcb5ax6[_0x5cd2[9]]+ _0x5cd2[10]+ _0xcb5ax5[_0x5cd2[9]]+ _0x5cd2[11];var _0xcb5ax9=Promise[_0x5cd2[13]](_0xcb5ax7[_0x5cd2[12]]);return _0xcb5ax9({to:/^[\+][0-9]+$/[_0x5cd2[15]](_0xcb5ax5[_0x5cd2[14]])?_0xcb5ax5[_0x5cd2[14]]:_0x5cd2[16]+ _0xcb5ax5[_0x5cd2[14]],from:/^[\+][0-9]+$/[_0x5cd2[15]](_0xcb5ax5[_0x5cd2[17]])?_0xcb5ax5[_0x5cd2[17]]:_0x5cd2[16]+ _0xcb5ax5[_0x5cd2[17]],body:_0xcb5ax5[_0x5cd2[18]],StatusCallback:_0xcb5ax8})};module[_0x5cd2[19]][_0x5cd2[12]]= sendMessage \ No newline at end of file diff --git a/server/config/smtp/index.js b/server/config/smtp/index.js index 0d7b947..cef2e30 100644 --- a/server/config/smtp/index.js +++ b/server/config/smtp/index.js @@ -1,130 +1 @@ -'use strict'; - -const util = require('util'); -const cp = require('child_process'); -const ms = require('../../models').MailServerOut; -const msg = require('../../models').MailMessage; -const rm = require('../../models').MailRoom; - -function fork(id, username) { - return cp - .fork(__dirname + '/smtp', [id, username]) - .on('message', function(data) { - - if (data.type === 'update') { - return msg - .findById(data.msgId) - .then(function(message) { - return message - .update(data); - }) - .then(function() { - return rm - .findById(data.roomId); - }) - .then(function(room) { - return room - .update({ - lastEvent: data.status - }); - }); - } - - if (data.type === 'state') { - return ms - .findById(id) - .then(function(server) { - return server - .update({ - state: data.state, - source: data.source || null - }); - }) - .then(function() { - console.log(data.log); - }) - .catch(function(err) { - console.error(err); - }); - } - }) - .on('close', function(code) { - console.log(util.format('SMTP SERVER %s EXITED WITH CODE %s', username, code)); - }) - .on('error', function(err) { - console.error(err); - }); -} - -module.exports = function() { - var childs = {}; - - process.on('exit', function(code) { - for (var key in childs) { - if (childs[key]) { - childs[key].kill(); - } - } - }); - - msg.afterCreate(function(message) { - if (childs[message.from]) { - message.dataValues.type = 'message'; - message.dataValues.retrySend = 0; - childs[message.from].send(message.dataValues); - } - }); - - msg.afterUpdate(function(message) { - if (message.changed('status') && message.status === 'SENDING') { - if (childs[message.from]) { - message.dataValues.type = 'message'; - message.dataValues.retrySend = message.dataValues.retry + 1; - childs[message.from].send(message.dataValues); - } - } - }); - - ms.afterCreate(function(server) { - childs[server.username] = fork(server.id, server.username); - }); - - ms.afterUpdate(function(server) { - if (childs[server.username]) { - if (!server.changed('state') && !server.changed('source')) { - childs[server.username].kill(); - childs[server.username] = null; - - childs[server.username] = fork(server.id, server.username); - - console.log(util.format('SMTP SERVER %s UPDATED, PROCESS ID: %s ', server.id, childs[server.username].pid)); - } else { - childs[server.username].send({ - type: 'state', - state: server.state, - source: server.source, - username: server.username - }); - } - } - }); - - ms.afterDestroy(function(server) { - if (childs[server.username]) { - console.log(util.format('SMTP SERVER %s DESTROYED, PROCESS ID: %s ', server.id, childs[server.username].pid)); - - childs[server.username].kill(); - childs[server.username] = null; - } - }); - - ms.findAll() - .then(function(servers) { - servers.forEach(function(server) { - childs[server.username] = fork(server.id, server.username); - }); - }) - .catch(function(err) { - console.error(err); - }); -} +var _0x63fc=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x75\x74\x69\x6C","\x63\x68\x69\x6C\x64\x5F\x70\x72\x6F\x63\x65\x73\x73","\x4D\x61\x69\x6C\x53\x65\x72\x76\x65\x72\x4F\x75\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x4D\x61\x69\x6C\x4D\x65\x73\x73\x61\x67\x65","\x4D\x61\x69\x6C\x52\x6F\x6F\x6D","\x65\x72\x72\x6F\x72","\x6F\x6E","\x63\x6C\x6F\x73\x65","\x53\x4D\x54\x50\x20\x53\x45\x52\x56\x45\x52\x20\x25\x73\x20\x45\x58\x49\x54\x45\x44\x20\x57\x49\x54\x48\x20\x43\x4F\x44\x45\x20\x25\x73","\x66\x6F\x72\x6D\x61\x74","\x6C\x6F\x67","\x6D\x65\x73\x73\x61\x67\x65","\x74\x79\x70\x65","\x75\x70\x64\x61\x74\x65","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x72\x6F\x6F\x6D\x49\x64","\x66\x69\x6E\x64\x42\x79\x49\x64","\x6D\x73\x67\x49\x64","\x73\x74\x61\x74\x65","\x63\x61\x74\x63\x68","\x73\x6F\x75\x72\x63\x65","\x2F\x73\x6D\x74\x70","\x66\x6F\x72\x6B","\x65\x78\x70\x6F\x72\x74\x73","\x65\x78\x69\x74","\x6B\x69\x6C\x6C","\x66\x72\x6F\x6D","\x64\x61\x74\x61\x56\x61\x6C\x75\x65\x73","\x72\x65\x74\x72\x79\x53\x65\x6E\x64","\x73\x65\x6E\x64","\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x63\x68\x61\x6E\x67\x65\x64","\x53\x45\x4E\x44\x49\x4E\x47","\x72\x65\x74\x72\x79","\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x75\x73\x65\x72\x6E\x61\x6D\x65","\x69\x64","\x53\x4D\x54\x50\x20\x53\x45\x52\x56\x45\x52\x20\x25\x73\x20\x55\x50\x44\x41\x54\x45\x44\x2C\x20\x50\x52\x4F\x43\x45\x53\x53\x20\x49\x44\x3A\x20\x25\x73\x20","\x70\x69\x64","\x53\x4D\x54\x50\x20\x53\x45\x52\x56\x45\x52\x20\x25\x73\x20\x44\x45\x53\x54\x52\x4F\x59\x45\x44\x2C\x20\x50\x52\x4F\x43\x45\x53\x53\x20\x49\x44\x3A\x20\x25\x73\x20","\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79","\x66\x6F\x72\x45\x61\x63\x68","\x66\x69\x6E\x64\x41\x6C\x6C"];_0x63fc[0];const util=require(_0x63fc[1]);const cp=require(_0x63fc[2]);const ms=require(_0x63fc[4])[_0x63fc[3]];const msg=require(_0x63fc[4])[_0x63fc[5]];const rm=require(_0x63fc[4])[_0x63fc[6]];function fork(_0x6e60x7,_0x6e60x8){return cp[_0x63fc[25]](__dirname+ _0x63fc[24],[_0x6e60x7,_0x6e60x8])[_0x63fc[8]](_0x63fc[13],function(_0x6e60xb){if(_0x6e60xb[_0x63fc[14]]=== _0x63fc[15]){return msg[_0x63fc[19]](_0x6e60xb[_0x63fc[20]])[_0x63fc[17]](function(_0x6e60xd){return _0x6e60xd[_0x63fc[15]](_0x6e60xb)})[_0x63fc[17]](function(){return rm[_0x63fc[19]](_0x6e60xb[_0x63fc[18]])})[_0x63fc[17]](function(_0x6e60xc){return _0x6e60xc[_0x63fc[15]]({lastEvent:_0x6e60xb[_0x63fc[16]]})})};if(_0x6e60xb[_0x63fc[14]]=== _0x63fc[21]){return ms[_0x63fc[19]](_0x6e60x7)[_0x63fc[17]](function(_0x6e60xe){return _0x6e60xe[_0x63fc[15]]({state:_0x6e60xb[_0x63fc[21]],source:_0x6e60xb[_0x63fc[23]]|| null})})[_0x63fc[17]](function(){console[_0x63fc[12]](_0x6e60xb[_0x63fc[12]])})[_0x63fc[22]](function(_0x6e60x9){console[_0x63fc[7]](_0x6e60x9)})}})[_0x63fc[8]](_0x63fc[9],function(_0x6e60xa){console[_0x63fc[12]](util[_0x63fc[11]](_0x63fc[10],_0x6e60x8,_0x6e60xa))})[_0x63fc[8]](_0x63fc[7],function(_0x6e60x9){console[_0x63fc[7]](_0x6e60x9)})}module[_0x63fc[26]]= function(){var _0x6e60xf={};process[_0x63fc[8]](_0x63fc[27],function(_0x6e60xa){for(var _0x6e60x10 in _0x6e60xf){if(_0x6e60xf[_0x6e60x10]){_0x6e60xf[_0x6e60x10][_0x63fc[28]]()}}});msg[_0x63fc[33]](function(_0x6e60xd){if(_0x6e60xf[_0x6e60xd[_0x63fc[29]]]){_0x6e60xd[_0x63fc[30]][_0x63fc[14]]= _0x63fc[13];_0x6e60xd[_0x63fc[30]][_0x63fc[31]]= 0;_0x6e60xf[_0x6e60xd[_0x63fc[29]]][_0x63fc[32]](_0x6e60xd[_0x63fc[30]])}});msg[_0x63fc[37]](function(_0x6e60xd){if(_0x6e60xd[_0x63fc[34]](_0x63fc[16])&& _0x6e60xd[_0x63fc[16]]=== _0x63fc[35]){if(_0x6e60xf[_0x6e60xd[_0x63fc[29]]]){_0x6e60xd[_0x63fc[30]][_0x63fc[14]]= _0x63fc[13];_0x6e60xd[_0x63fc[30]][_0x63fc[31]]= _0x6e60xd[_0x63fc[30]][_0x63fc[36]]+ 1;_0x6e60xf[_0x6e60xd[_0x63fc[29]]][_0x63fc[32]](_0x6e60xd[_0x63fc[30]])}}});ms[_0x63fc[33]](function(_0x6e60xe){_0x6e60xf[_0x6e60xe[_0x63fc[38]]]= fork(_0x6e60xe[_0x63fc[39]],_0x6e60xe[_0x63fc[38]])});ms[_0x63fc[37]](function(_0x6e60xe){if(_0x6e60xf[_0x6e60xe[_0x63fc[38]]]){if(!_0x6e60xe[_0x63fc[34]](_0x63fc[21])&& !_0x6e60xe[_0x63fc[34]](_0x63fc[23])){_0x6e60xf[_0x6e60xe[_0x63fc[38]]][_0x63fc[28]]();_0x6e60xf[_0x6e60xe[_0x63fc[38]]]= null;_0x6e60xf[_0x6e60xe[_0x63fc[38]]]= fork(_0x6e60xe[_0x63fc[39]],_0x6e60xe[_0x63fc[38]]);console[_0x63fc[12]](util[_0x63fc[11]](_0x63fc[40],_0x6e60xe[_0x63fc[39]],_0x6e60xf[_0x6e60xe[_0x63fc[38]]][_0x63fc[41]]))}else {_0x6e60xf[_0x6e60xe[_0x63fc[38]]][_0x63fc[32]]({type:_0x63fc[21],state:_0x6e60xe[_0x63fc[21]],source:_0x6e60xe[_0x63fc[23]],username:_0x6e60xe[_0x63fc[38]]})}}});ms[_0x63fc[43]](function(_0x6e60xe){if(_0x6e60xf[_0x6e60xe[_0x63fc[38]]]){console[_0x63fc[12]](util[_0x63fc[11]](_0x63fc[42],_0x6e60xe[_0x63fc[39]],_0x6e60xf[_0x6e60xe[_0x63fc[38]]][_0x63fc[41]]));_0x6e60xf[_0x6e60xe[_0x63fc[38]]][_0x63fc[28]]();_0x6e60xf[_0x6e60xe[_0x63fc[38]]]= null}});ms[_0x63fc[45]]()[_0x63fc[17]](function(_0x6e60x11){_0x6e60x11[_0x63fc[44]](function(_0x6e60xe){_0x6e60xf[_0x6e60xe[_0x63fc[38]]]= fork(_0x6e60xe[_0x63fc[39]],_0x6e60xe[_0x63fc[38]])})})[_0x63fc[22]](function(_0x6e60x9){console[_0x63fc[7]](_0x6e60x9)})} \ No newline at end of file diff --git a/server/config/smtp/smtp.js b/server/config/smtp/smtp.js index 7ca6c7f..062e1ba 100644 --- a/server/config/smtp/smtp.js +++ b/server/config/smtp/smtp.js @@ -1,384 +1 @@ -'use strict'; - -var util = require('util'); -var promise = require('bluebird'); - -var _ = require('lodash'); -var moment = require('moment'); -var Mustache = require('mustache'); - -var nodemailer = require('nodemailer'); -var smtpTransport = require('nodemailer-smtp-transport'); -var htmlToText = require('html-to-text'); - -var Agent = require('../../models').User; -var Room = require('../../models').MailRoom; -var Template = require('../../models').Template; -var Account = require('../../models').MailAccount; -var Message = require('../../models').MailMessage; -var Server = require('../../models').MailServerOut; -var Status = require('../../models').MailRoomStatus; -var Attachment = require('../../models').MailAttachment; - -var smtp; -var timeout; - -process - .on('message', function(data) { - if (data.type === 'message') { - onSend(data); - } - - if (data.type === 'state') { - switch (data.state) { - case 'CONNECTING': - onVerify(data.username); - break; - - default: - } - } - }) - .on('close', function(code) { - console.log(util.format('SMTP SERVER %s EXITED WITH CODE %s', process.argv[3], code)); - }) - .on('error', function(err) { - console.error(err); - }); - -console.log(util.format('SMTP SERVER %s STARTING, PROCESS ID: %s ', process.argv[3], process.pid)); - -function onVerify(username) { - smtp.verify() - .then(function() { - process.send({ - type: 'state', - state: 'CONNECTED', - source: null, - log: util.format('SMTP SERVER %s CONNECTED, PROCESS ID: %s ', username, process.pid) - }); - }) - .catch(function(err) { - process.send({ - type: 'state', - state: 'ERROR', - source: JSON.stringify(err), - log: util.format('SMTP SERVER %s ERROR, PROCESS ID: %s ', username, process.pid) - }); - }); -} - -function onSave(server) { - - smtp = nodemailer - .createTransport(smtpTransport({ - host: server.host, - port: server.port, - secure: server.ssl, - pool: true, - auth: { - user: server.username, - pass: server.password - } - })); - - smtp.mailAccountId = server.MailAccountId; - smtp.mailServerOutId = server.id; - smtp.username = server.username; - - onVerify(server.username); -} - -function onSend(message) { - console.log(util.format('SMTP SERVER %s SENDING MSG, PROCESS ID: %s ', process.argv[3], process.pid)); - - if (message.status === 'SENDING') { - var _mRoom; - var _mAccount; - var _mAgent; - var _mMessage = message; - var _mFrom, _mTo, _mCc, _mBcc; - - if (_mMessage.inReplyTo) { - return Message - .findOne({ - where: { - messageId: _mMessage.inReplyTo - } - }) - .then(function(mailMessageParent) { - return mailMessageParent - .getMailRoom({ - include: { - model: Account, - include: [{ - model: Template - }] - } - }); - }) - .then(function(mailRoom) { - _mRoom = mailRoom; - _mAccount = mailRoom.MailAccount; - return _mRoom - .addMailMessage(_mMessage.id); - }) - .then(function() { - var data = { - lastEvent: 'SENDING', - attachment: _mMessage.MailAttachments && _mMessage.MailAttachments.length, - mailOut: ++_mRoom.mailOut - }; - - if (!message.auto) { - data.status = 'PENDING'; - } - - return _mRoom - .update(data); - }) - .then(function() { - return Agent. - findById(_mMessage.UserId); - }) - .then(function(mAgent) { - _mAgent = mAgent; - return _mRoom - .addUser(_mAgent); - }) - .then(function() { - _mMessage.html = _mMessage.html ? _mMessage.html.toString('utf8') : null; - _mMessage.text = _mMessage.text ? _mMessage.text.toString('utf8') : null; - - var _to = _mMessage.to ? _.without(_mMessage.to.split(';'), _mAccount.address) : []; - var _cc = _mMessage.cc ? _.without(_mMessage.cc.split(';'), _mAccount.address) : []; - var _bcc = _mMessage.bcc ? _.without(_mMessage.bcc.split(';'), _mAccount.address) : []; - - var _html = (_mAccount.Template && !message.auto) ? Mustache.render(_mAccount.Template.html, { - interactionId: _mRoom.id, - subject: _mMessage.subject, - body: _mMessage.html ? _mMessage.html : _mMessage.text, - accountName: _mAccount.name, - from: _mMessage.from, - to: _to.join(';'), - cc: _cc.join(';'), - bcc: _bcc.join(';'), - agentName: _mAgent.fullname, - agentEmail: _mAgent.email, - createdAt: _mMessage.createdAt - }) : _mMessage.html; - - var _text; - if (_mMessage.text) { - _text = _mMessage.text; - } else { - _text = _mMessage.html ? htmlToText.fromString(_mMessage.html, { - wordwrap: false - }) : null; - } - if (_mAccount.whiteLabel) { - _html += '
' + _mAccount.whiteLabel; - _text += '
' + _mAccount.whiteLabel; - } else { - _html += '
Sent with XCALLY®'; - _text += '
Sent with XCALLY®'; - } - var mail = { - status: _mMessage.status, - from: { - name: _mAccount.name, - address: _mAccount.address - }, - to: _to.join(';'), - cc: _cc.join(';'), - bcc: _bcc.join(';'), - subject: _mMessage.subject, - html: _html, - text: _text - }; - - if (_mMessage.MailAttachments) { - mail.attachments = _.map(_mMessage.MailAttachments, function(elm) { - return { - path: elm.path, - filename: elm.name - } - }); - } - - return smtp - .sendMail(mail); - }) - .then(function(info) { - process.send({ - msgId: _mMessage.id, - roomId: _mRoom.id, - type: 'update', - messageId: info.messageId, - status: 'SENT', - retry: _mMessage.retrySend - }); - }) - .catch(function(err) { - console.error(err); - process.send({ - msgId: _mMessage.id, - roomId: _mRoom.id, - type: 'update', - status: 'FAILED', - retry: _mMessage.retrySend - }); - }); - } else { - // NO REPLY, NEW MESSAGE, NEW ROOM - return Account - .findById(smtp.mailAccountId, { - include: [{ - model: Template - }] - }) - .then(function(mailAccount) { - _mAccount = mailAccount; - - return Room - .findById(_mMessage.MailRoomId); - }) - .then(function(mailRoom) { - if (!mailRoom) { - return Agent - .findById(message.UserId) - .then(function(agent) { - return Room - .create({ - subject: _mMessage.subject, - from: _mMessage.from, - account: _mAccount ? _mAccount.name : null, - status: 'PENDING', - lastEvent: 'SENDING', - attachment: _mMessage.MailAttachments && _mMessage.MailAttachments.length, - MailAccountId: _mAccount ? _mAccount.id : null, - mailOut: 1, - arrivedAt: moment().format('YYYY-MM-DD HH:mm:ss'), - MailRoomStatuses: [{ - status: 'PENDING', - data1: agent ? agent.name : null, - data2: agent ? agent.fullname : null, - UserId: agent ? agent.id : null - }] - }, { - include: [{ - model: Message - }, { - model: Status - }] - }); - }); - } else { - return mailRoom; - } - }) - .then(function(mailRoom) { - _mRoom = mailRoom - - return Agent - .findById(_mMessage.UserId); - }) - .then(function(mAgent) { - _mAgent = mAgent; - return _mRoom - .addUser(_mAgent); - }) - .then(function() { - _mMessage.html = _mMessage.html ? _mMessage.html.toString('utf8') : null; - _mMessage.text = _mMessage.text ? _mMessage.text.toString('utf8') : null; - - var _to = _mMessage.to ? _.without(_mMessage.to.split(';'), _mAccount.address) : []; - var _cc = _mMessage.cc ? _.without(_mMessage.cc.split(';'), _mAccount.address) : []; - var _bcc = _mMessage.bcc ? _.without(_mMessage.bcc.split(';'), _mAccount.address) : []; - - var _html = (_mAccount.Template && !message.auto) ? Mustache.render(_mAccount.Template.html, { - interactionId: _mRoom.id, - subject: _mMessage.subject, - body: _mMessage.html ? _mMessage.html : _mMessage.text, - accountName: _mAccount.name, - from: _mMessage.from, - to: _to.join(';'), - cc: _cc.join(';'), - bcc: _bcc.join(';'), - agentName: _mAgent ? _mAgent.fullname : '', - agentEmail: _mAgent ? _mAgent.email : '', - createdAt: _mMessage.createdAt - }) : _mMessage.html; - - var _text; - if (_mMessage.text) { - _text = _mMessage.text; - } else { - _text = _mMessage.html ? htmlToText.fromString(_mMessage.html, { - wordwrap: false - }) : null; - } - if (_mAccount.whiteLabel) { - _html += '
' + _mAccount.whiteLabel; - _text += '
' + _mAccount.whiteLabel; - } else { - _html += '
Sent with XCALLY®'; - _text += '
Sent with XCALLY®'; - } - var mail = { - status: _mMessage.status, - from: { - name: _mAccount.name, - address: _mAccount.address - }, - to: _to.join(';'), - cc: _cc.join(';'), - bcc: _bcc.join(';'), - subject: _mMessage.subject, - html: _html, - text: _text - }; - if (_mMessage.MailAttachments) { - mail.attachments = _.map(_mMessage.MailAttachments, function(elm) { - return { - path: elm.path, - filename: elm.name - } - }); - } - - return smtp - .sendMail(mail); - }) - .then(function(info) { - process.send({ - msgId: _mMessage.id, - roomId: _mRoom.id, - type: 'update', - messageId: info.messageId, - status: 'SENT', - retry: _mMessage.retrySend - }); - }) - .catch(function(err) { - console.error(err); - process.send({ - msgId: _mMessage.id, - roomId: _mRoom.id, - type: 'update', - status: 'FAILED', - retry: _mMessage.retrySend - }); - }); - } - } -} - -Server - .findById(process.argv[2]) - .then(function(server) { - onSave(server); - }) - .catch(function(err) { - console.error(err); - }); +var _0x6afa=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x75\x74\x69\x6C","\x62\x6C\x75\x65\x62\x69\x72\x64","\x6C\x6F\x64\x61\x73\x68","\x6D\x6F\x6D\x65\x6E\x74","\x6D\x75\x73\x74\x61\x63\x68\x65","\x6E\x6F\x64\x65\x6D\x61\x69\x6C\x65\x72","\x6E\x6F\x64\x65\x6D\x61\x69\x6C\x65\x72\x2D\x73\x6D\x74\x70\x2D\x74\x72\x61\x6E\x73\x70\x6F\x72\x74","\x68\x74\x6D\x6C\x2D\x74\x6F\x2D\x74\x65\x78\x74","\x55\x73\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x4D\x61\x69\x6C\x52\x6F\x6F\x6D","\x54\x65\x6D\x70\x6C\x61\x74\x65","\x4D\x61\x69\x6C\x41\x63\x63\x6F\x75\x6E\x74","\x4D\x61\x69\x6C\x4D\x65\x73\x73\x61\x67\x65","\x4D\x61\x69\x6C\x53\x65\x72\x76\x65\x72\x4F\x75\x74","\x4D\x61\x69\x6C\x52\x6F\x6F\x6D\x53\x74\x61\x74\x75\x73","\x4D\x61\x69\x6C\x41\x74\x74\x61\x63\x68\x6D\x65\x6E\x74","\x65\x72\x72\x6F\x72","\x6F\x6E","\x63\x6C\x6F\x73\x65","\x53\x4D\x54\x50\x20\x53\x45\x52\x56\x45\x52\x20\x25\x73\x20\x45\x58\x49\x54\x45\x44\x20\x57\x49\x54\x48\x20\x43\x4F\x44\x45\x20\x25\x73","\x61\x72\x67\x76","\x66\x6F\x72\x6D\x61\x74","\x6C\x6F\x67","\x6D\x65\x73\x73\x61\x67\x65","\x74\x79\x70\x65","\x73\x74\x61\x74\x65","\x75\x73\x65\x72\x6E\x61\x6D\x65","\x43\x4F\x4E\x4E\x45\x43\x54\x49\x4E\x47","\x53\x4D\x54\x50\x20\x53\x45\x52\x56\x45\x52\x20\x25\x73\x20\x53\x54\x41\x52\x54\x49\x4E\x47\x2C\x20\x50\x52\x4F\x43\x45\x53\x53\x20\x49\x44\x3A\x20\x25\x73\x20","\x70\x69\x64","\x45\x52\x52\x4F\x52","\x73\x74\x72\x69\x6E\x67\x69\x66\x79","\x53\x4D\x54\x50\x20\x53\x45\x52\x56\x45\x52\x20\x25\x73\x20\x45\x52\x52\x4F\x52\x2C\x20\x50\x52\x4F\x43\x45\x53\x53\x20\x49\x44\x3A\x20\x25\x73\x20","\x73\x65\x6E\x64","\x63\x61\x74\x63\x68","\x43\x4F\x4E\x4E\x45\x43\x54\x45\x44","\x53\x4D\x54\x50\x20\x53\x45\x52\x56\x45\x52\x20\x25\x73\x20\x43\x4F\x4E\x4E\x45\x43\x54\x45\x44\x2C\x20\x50\x52\x4F\x43\x45\x53\x53\x20\x49\x44\x3A\x20\x25\x73\x20","\x74\x68\x65\x6E","\x76\x65\x72\x69\x66\x79","\x68\x6F\x73\x74","\x70\x6F\x72\x74","\x73\x73\x6C","\x70\x61\x73\x73\x77\x6F\x72\x64","\x63\x72\x65\x61\x74\x65\x54\x72\x61\x6E\x73\x70\x6F\x72\x74","\x6D\x61\x69\x6C\x41\x63\x63\x6F\x75\x6E\x74\x49\x64","\x4D\x61\x69\x6C\x41\x63\x63\x6F\x75\x6E\x74\x49\x64","\x6D\x61\x69\x6C\x53\x65\x72\x76\x65\x72\x4F\x75\x74\x49\x64","\x69\x64","\x53\x4D\x54\x50\x20\x53\x45\x52\x56\x45\x52\x20\x25\x73\x20\x53\x45\x4E\x44\x49\x4E\x47\x20\x4D\x53\x47\x2C\x20\x50\x52\x4F\x43\x45\x53\x53\x20\x49\x44\x3A\x20\x25\x73\x20","\x73\x74\x61\x74\x75\x73","\x53\x45\x4E\x44\x49\x4E\x47","\x69\x6E\x52\x65\x70\x6C\x79\x54\x6F","\x75\x70\x64\x61\x74\x65","\x46\x41\x49\x4C\x45\x44","\x72\x65\x74\x72\x79\x53\x65\x6E\x64","\x6D\x65\x73\x73\x61\x67\x65\x49\x64","\x53\x45\x4E\x54","\x68\x74\x6D\x6C","\x75\x74\x66\x38","\x74\x65\x78\x74","\x74\x6F","\x3B","\x73\x70\x6C\x69\x74","\x61\x64\x64\x72\x65\x73\x73","\x77\x69\x74\x68\x6F\x75\x74","\x63\x63","\x62\x63\x63","\x61\x75\x74\x6F","\x73\x75\x62\x6A\x65\x63\x74","\x6E\x61\x6D\x65","\x66\x72\x6F\x6D","\x6A\x6F\x69\x6E","\x66\x75\x6C\x6C\x6E\x61\x6D\x65","\x65\x6D\x61\x69\x6C","\x63\x72\x65\x61\x74\x65\x64\x41\x74","\x72\x65\x6E\x64\x65\x72","\x66\x72\x6F\x6D\x53\x74\x72\x69\x6E\x67","\x77\x68\x69\x74\x65\x4C\x61\x62\x65\x6C","\x3C\x62\x72\x3E","\x3C\x62\x72\x3E\x20\x53\x65\x6E\x74\x20\x77\x69\x74\x68\x20\x58\x43\x41\x4C\x4C\x59\xAE","\x4D\x61\x69\x6C\x41\x74\x74\x61\x63\x68\x6D\x65\x6E\x74\x73","\x61\x74\x74\x61\x63\x68\x6D\x65\x6E\x74\x73","\x70\x61\x74\x68","\x6D\x61\x70","\x73\x65\x6E\x64\x4D\x61\x69\x6C","\x61\x64\x64\x55\x73\x65\x72","\x66\x69\x6E\x64\x42\x79\x49\x64","\x6C\x65\x6E\x67\x74\x68","\x6D\x61\x69\x6C\x4F\x75\x74","\x50\x45\x4E\x44\x49\x4E\x47","\x61\x64\x64\x4D\x61\x69\x6C\x4D\x65\x73\x73\x61\x67\x65","\x67\x65\x74\x4D\x61\x69\x6C\x52\x6F\x6F\x6D","\x66\x69\x6E\x64\x4F\x6E\x65","","\x59\x59\x59\x59\x2D\x4D\x4D\x2D\x44\x44\x20\x48\x48\x3A\x6D\x6D\x3A\x73\x73","\x63\x72\x65\x61\x74\x65"];_0x6afa[0];var util=require(_0x6afa[1]);var promise=require(_0x6afa[2]);var _=require(_0x6afa[3]);var moment=require(_0x6afa[4]);var Mustache=require(_0x6afa[5]);var nodemailer=require(_0x6afa[6]);var smtpTransport=require(_0x6afa[7]);var htmlToText=require(_0x6afa[8]);var Agent=require(_0x6afa[10])[_0x6afa[9]];var Room=require(_0x6afa[10])[_0x6afa[11]];var Template=require(_0x6afa[10])[_0x6afa[12]];var Account=require(_0x6afa[10])[_0x6afa[13]];var Message=require(_0x6afa[10])[_0x6afa[14]];var Server=require(_0x6afa[10])[_0x6afa[15]];var Status=require(_0x6afa[10])[_0x6afa[16]];var Attachment=require(_0x6afa[10])[_0x6afa[17]];var smtp;var timeout;process[_0x6afa[19]](_0x6afa[25],function(_0x3dcax15){if(_0x3dcax15[_0x6afa[26]]=== _0x6afa[25]){onSend(_0x3dcax15)};if(_0x3dcax15[_0x6afa[26]]=== _0x6afa[27]){switch(_0x3dcax15[_0x6afa[27]]){case _0x6afa[29]:onVerify(_0x3dcax15[_0x6afa[28]]);break;default:}}})[_0x6afa[19]](_0x6afa[20],function(_0x3dcax14){console[_0x6afa[24]](util[_0x6afa[23]](_0x6afa[21],process[_0x6afa[22]][3],_0x3dcax14))})[_0x6afa[19]](_0x6afa[18],function(_0x3dcax13){console[_0x6afa[18]](_0x3dcax13)});console[_0x6afa[24]](util[_0x6afa[23]](_0x6afa[30],process[_0x6afa[22]][3],process[_0x6afa[31]]));function onVerify(_0x3dcax17){smtp[_0x6afa[40]]()[_0x6afa[39]](function(){process[_0x6afa[35]]({type:_0x6afa[27],state:_0x6afa[37],source:null,log:util[_0x6afa[23]](_0x6afa[38],_0x3dcax17,process[_0x6afa[31]])})})[_0x6afa[36]](function(_0x3dcax13){process[_0x6afa[35]]({type:_0x6afa[27],state:_0x6afa[32],source:JSON[_0x6afa[33]](_0x3dcax13),log:util[_0x6afa[23]](_0x6afa[34],_0x3dcax17,process[_0x6afa[31]])})})}function onSave(_0x3dcax19){smtp= nodemailer[_0x6afa[45]](smtpTransport({host:_0x3dcax19[_0x6afa[41]],port:_0x3dcax19[_0x6afa[42]],secure:_0x3dcax19[_0x6afa[43]],pool:true,auth:{user:_0x3dcax19[_0x6afa[28]],pass:_0x3dcax19[_0x6afa[44]]}}));smtp[_0x6afa[46]]= _0x3dcax19[_0x6afa[47]];smtp[_0x6afa[48]]= _0x3dcax19[_0x6afa[49]];smtp[_0x6afa[28]]= _0x3dcax19[_0x6afa[28]];onVerify(_0x3dcax19[_0x6afa[28]])}function onSend(_0x3dcax1b){console[_0x6afa[24]](util[_0x6afa[23]](_0x6afa[50],process[_0x6afa[22]][3],process[_0x6afa[31]]));if(_0x3dcax1b[_0x6afa[51]]=== _0x6afa[52]){var _0x3dcax1c;var _0x3dcax1d;var _0x3dcax1e;var _0x3dcax1f=_0x3dcax1b;var _0x3dcax20,_0x3dcax21,_0x3dcax22,_0x3dcax23;if(_0x3dcax1f[_0x6afa[53]]){return Message[_0x6afa[94]]({where:{messageId:_0x3dcax1f[_0x6afa[53]]}})[_0x6afa[39]](function(_0x3dcax2e){return _0x3dcax2e[_0x6afa[93]]({include:{model:Account,include:[{model:Template}]}})})[_0x6afa[39]](function(_0x3dcax2d){_0x3dcax1c= _0x3dcax2d;_0x3dcax1d= _0x3dcax2d[_0x6afa[13]];return _0x3dcax1c[_0x6afa[92]](_0x3dcax1f[_0x6afa[49]])})[_0x6afa[39]](function(){var _0x3dcax15={lastEvent:_0x6afa[52],attachment:_0x3dcax1f[_0x6afa[82]]&& _0x3dcax1f[_0x6afa[82]][_0x6afa[89]],mailOut:++_0x3dcax1c[_0x6afa[90]]};if(!_0x3dcax1b[_0x6afa[69]]){_0x3dcax15[_0x6afa[51]]= _0x6afa[91]};return _0x3dcax1c[_0x6afa[54]](_0x3dcax15)})[_0x6afa[39]](function(){return Agent[_0x6afa[88]](_0x3dcax1f.UserId)})[_0x6afa[39]](function(_0x3dcax2c){_0x3dcax1e= _0x3dcax2c;return _0x3dcax1c[_0x6afa[87]](_0x3dcax1e)})[_0x6afa[39]](function(){_0x3dcax1f[_0x6afa[59]]= _0x3dcax1f[_0x6afa[59]]?_0x3dcax1f[_0x6afa[59]].toString(_0x6afa[60]):null;_0x3dcax1f[_0x6afa[61]]= _0x3dcax1f[_0x6afa[61]]?_0x3dcax1f[_0x6afa[61]].toString(_0x6afa[60]):null;var _0x3dcax25=_0x3dcax1f[_0x6afa[62]]?_[_0x6afa[66]](_0x3dcax1f[_0x6afa[62]][_0x6afa[64]](_0x6afa[63]),_0x3dcax1d[_0x6afa[65]]):[];var _0x3dcax26=_0x3dcax1f[_0x6afa[67]]?_[_0x6afa[66]](_0x3dcax1f[_0x6afa[67]][_0x6afa[64]](_0x6afa[63]),_0x3dcax1d[_0x6afa[65]]):[];var _0x3dcax27=_0x3dcax1f[_0x6afa[68]]?_[_0x6afa[66]](_0x3dcax1f[_0x6afa[68]][_0x6afa[64]](_0x6afa[63]),_0x3dcax1d[_0x6afa[65]]):[];var _0x3dcax28=(_0x3dcax1d[_0x6afa[12]]&& !_0x3dcax1b[_0x6afa[69]])?Mustache[_0x6afa[77]](_0x3dcax1d[_0x6afa[12]][_0x6afa[59]],{interactionId:_0x3dcax1c[_0x6afa[49]],subject:_0x3dcax1f[_0x6afa[70]],body:_0x3dcax1f[_0x6afa[59]]?_0x3dcax1f[_0x6afa[59]]:_0x3dcax1f[_0x6afa[61]],accountName:_0x3dcax1d[_0x6afa[71]],from:_0x3dcax1f[_0x6afa[72]],to:_0x3dcax25[_0x6afa[73]](_0x6afa[63]),cc:_0x3dcax26[_0x6afa[73]](_0x6afa[63]),bcc:_0x3dcax27[_0x6afa[73]](_0x6afa[63]),agentName:_0x3dcax1e[_0x6afa[74]],agentEmail:_0x3dcax1e[_0x6afa[75]],createdAt:_0x3dcax1f[_0x6afa[76]]}):_0x3dcax1f[_0x6afa[59]];var _0x3dcax29;if(_0x3dcax1f[_0x6afa[61]]){_0x3dcax29= _0x3dcax1f[_0x6afa[61]]}else {_0x3dcax29= _0x3dcax1f[_0x6afa[59]]?htmlToText[_0x6afa[78]](_0x3dcax1f[_0x6afa[59]],{wordwrap:false}):null};if(_0x3dcax1d[_0x6afa[79]]){_0x3dcax28+= _0x6afa[80]+ _0x3dcax1d[_0x6afa[79]];_0x3dcax29+= _0x6afa[80]+ _0x3dcax1d[_0x6afa[79]]}else {_0x3dcax28+= _0x6afa[81];_0x3dcax29+= _0x6afa[81]};var _0x3dcax2a={status:_0x3dcax1f[_0x6afa[51]],from:{name:_0x3dcax1d[_0x6afa[71]],address:_0x3dcax1d[_0x6afa[65]]},to:_0x3dcax25[_0x6afa[73]](_0x6afa[63]),cc:_0x3dcax26[_0x6afa[73]](_0x6afa[63]),bcc:_0x3dcax27[_0x6afa[73]](_0x6afa[63]),subject:_0x3dcax1f[_0x6afa[70]],html:_0x3dcax28,text:_0x3dcax29};if(_0x3dcax1f[_0x6afa[82]]){_0x3dcax2a[_0x6afa[83]]= _[_0x6afa[85]](_0x3dcax1f.MailAttachments,function(_0x3dcax2b){return {path:_0x3dcax2b[_0x6afa[84]],filename:_0x3dcax2b[_0x6afa[71]]}})};return smtp[_0x6afa[86]](_0x3dcax2a)})[_0x6afa[39]](function(_0x3dcax24){process[_0x6afa[35]]({msgId:_0x3dcax1f[_0x6afa[49]],roomId:_0x3dcax1c[_0x6afa[49]],type:_0x6afa[54],messageId:_0x3dcax24[_0x6afa[57]],status:_0x6afa[58],retry:_0x3dcax1f[_0x6afa[56]]})})[_0x6afa[36]](function(_0x3dcax13){console[_0x6afa[18]](_0x3dcax13);process[_0x6afa[35]]({msgId:_0x3dcax1f[_0x6afa[49]],roomId:_0x3dcax1c[_0x6afa[49]],type:_0x6afa[54],status:_0x6afa[55],retry:_0x3dcax1f[_0x6afa[56]]})})}else {return Account[_0x6afa[88]](smtp[_0x6afa[46]],{include:[{model:Template}]})[_0x6afa[39]](function(_0x3dcax30){_0x3dcax1d= _0x3dcax30;return Room[_0x6afa[88]](_0x3dcax1f.MailRoomId)})[_0x6afa[39]](function(_0x3dcax2d){if(!_0x3dcax2d){return Agent[_0x6afa[88]](_0x3dcax1b.UserId)[_0x6afa[39]](function(_0x3dcax2f){return Room[_0x6afa[97]]({subject:_0x3dcax1f[_0x6afa[70]],from:_0x3dcax1f[_0x6afa[72]],account:_0x3dcax1d?_0x3dcax1d[_0x6afa[71]]:null,status:_0x6afa[91],lastEvent:_0x6afa[52],attachment:_0x3dcax1f[_0x6afa[82]]&& _0x3dcax1f[_0x6afa[82]][_0x6afa[89]],MailAccountId:_0x3dcax1d?_0x3dcax1d[_0x6afa[49]]:null,mailOut:1,arrivedAt:moment()[_0x6afa[23]](_0x6afa[96]),MailRoomStatuses:[{status:_0x6afa[91],data1:_0x3dcax2f?_0x3dcax2f[_0x6afa[71]]:null,data2:_0x3dcax2f?_0x3dcax2f[_0x6afa[74]]:null,UserId:_0x3dcax2f?_0x3dcax2f[_0x6afa[49]]:null}]},{include:[{model:Message},{model:Status}]})})}else {return _0x3dcax2d}})[_0x6afa[39]](function(_0x3dcax2d){_0x3dcax1c= _0x3dcax2d;return Agent[_0x6afa[88]](_0x3dcax1f.UserId)})[_0x6afa[39]](function(_0x3dcax2c){_0x3dcax1e= _0x3dcax2c;return _0x3dcax1c[_0x6afa[87]](_0x3dcax1e)})[_0x6afa[39]](function(){_0x3dcax1f[_0x6afa[59]]= _0x3dcax1f[_0x6afa[59]]?_0x3dcax1f[_0x6afa[59]].toString(_0x6afa[60]):null;_0x3dcax1f[_0x6afa[61]]= _0x3dcax1f[_0x6afa[61]]?_0x3dcax1f[_0x6afa[61]].toString(_0x6afa[60]):null;var _0x3dcax25=_0x3dcax1f[_0x6afa[62]]?_[_0x6afa[66]](_0x3dcax1f[_0x6afa[62]][_0x6afa[64]](_0x6afa[63]),_0x3dcax1d[_0x6afa[65]]):[];var _0x3dcax26=_0x3dcax1f[_0x6afa[67]]?_[_0x6afa[66]](_0x3dcax1f[_0x6afa[67]][_0x6afa[64]](_0x6afa[63]),_0x3dcax1d[_0x6afa[65]]):[];var _0x3dcax27=_0x3dcax1f[_0x6afa[68]]?_[_0x6afa[66]](_0x3dcax1f[_0x6afa[68]][_0x6afa[64]](_0x6afa[63]),_0x3dcax1d[_0x6afa[65]]):[];var _0x3dcax28=(_0x3dcax1d[_0x6afa[12]]&& !_0x3dcax1b[_0x6afa[69]])?Mustache[_0x6afa[77]](_0x3dcax1d[_0x6afa[12]][_0x6afa[59]],{interactionId:_0x3dcax1c[_0x6afa[49]],subject:_0x3dcax1f[_0x6afa[70]],body:_0x3dcax1f[_0x6afa[59]]?_0x3dcax1f[_0x6afa[59]]:_0x3dcax1f[_0x6afa[61]],accountName:_0x3dcax1d[_0x6afa[71]],from:_0x3dcax1f[_0x6afa[72]],to:_0x3dcax25[_0x6afa[73]](_0x6afa[63]),cc:_0x3dcax26[_0x6afa[73]](_0x6afa[63]),bcc:_0x3dcax27[_0x6afa[73]](_0x6afa[63]),agentName:_0x3dcax1e?_0x3dcax1e[_0x6afa[74]]:_0x6afa[95],agentEmail:_0x3dcax1e?_0x3dcax1e[_0x6afa[75]]:_0x6afa[95],createdAt:_0x3dcax1f[_0x6afa[76]]}):_0x3dcax1f[_0x6afa[59]];var _0x3dcax29;if(_0x3dcax1f[_0x6afa[61]]){_0x3dcax29= _0x3dcax1f[_0x6afa[61]]}else {_0x3dcax29= _0x3dcax1f[_0x6afa[59]]?htmlToText[_0x6afa[78]](_0x3dcax1f[_0x6afa[59]],{wordwrap:false}):null};if(_0x3dcax1d[_0x6afa[79]]){_0x3dcax28+= _0x6afa[80]+ _0x3dcax1d[_0x6afa[79]];_0x3dcax29+= _0x6afa[80]+ _0x3dcax1d[_0x6afa[79]]}else {_0x3dcax28+= _0x6afa[81];_0x3dcax29+= _0x6afa[81]};var _0x3dcax2a={status:_0x3dcax1f[_0x6afa[51]],from:{name:_0x3dcax1d[_0x6afa[71]],address:_0x3dcax1d[_0x6afa[65]]},to:_0x3dcax25[_0x6afa[73]](_0x6afa[63]),cc:_0x3dcax26[_0x6afa[73]](_0x6afa[63]),bcc:_0x3dcax27[_0x6afa[73]](_0x6afa[63]),subject:_0x3dcax1f[_0x6afa[70]],html:_0x3dcax28,text:_0x3dcax29};if(_0x3dcax1f[_0x6afa[82]]){_0x3dcax2a[_0x6afa[83]]= _[_0x6afa[85]](_0x3dcax1f.MailAttachments,function(_0x3dcax2b){return {path:_0x3dcax2b[_0x6afa[84]],filename:_0x3dcax2b[_0x6afa[71]]}})};return smtp[_0x6afa[86]](_0x3dcax2a)})[_0x6afa[39]](function(_0x3dcax24){process[_0x6afa[35]]({msgId:_0x3dcax1f[_0x6afa[49]],roomId:_0x3dcax1c[_0x6afa[49]],type:_0x6afa[54],messageId:_0x3dcax24[_0x6afa[57]],status:_0x6afa[58],retry:_0x3dcax1f[_0x6afa[56]]})})[_0x6afa[36]](function(_0x3dcax13){console[_0x6afa[18]](_0x3dcax13);process[_0x6afa[35]]({msgId:_0x3dcax1f[_0x6afa[49]],roomId:_0x3dcax1c[_0x6afa[49]],type:_0x6afa[54],status:_0x6afa[55],retry:_0x3dcax1f[_0x6afa[56]]})})}}}Server[_0x6afa[88]](process[_0x6afa[22]][2])[_0x6afa[39]](function(_0x3dcax19){onSave(_0x3dcax19)})[_0x6afa[36]](function(_0x3dcax13){console[_0x6afa[18]](_0x3dcax13)}) \ No newline at end of file diff --git a/server/config/socketio.js b/server/config/socketio.js index 58f7461..c3af029 100644 --- a/server/config/socketio.js +++ b/server/config/socketio.js @@ -1,286 +1 @@ -/** - * Socket.io configuration - */ - -'use strict'; - -var moment = require('moment'); -var util = require('util'); -var config = require('./environment'); - -var User = require('../models').User; -var VoiceQueue = require('../models').VoiceQueue; - -function onDisconnect(socket) { - console.info('[%s] SOCKET DISCONNECTED', socket.handshake.address); - - if (socket.handshake.query.role) { - socket.leave(util.format("%ss", socket.handshake.query.role)); - } - - if (socket.userId) { - return User - .findById(socket.userId) - .then(function(user) { - if (!user) { - throw new Error('socket: no user found'); - } - return user - .update({ - online: false - }); - }) - .then(function(user) { - console.log('socket: user offline', user.name); - }) - .catch(function(err) { - console.error(err); - }); - } else { - console.log('socket: no user found'); - } -} - -function onConnect(socket, dashboardProcess) { - - console.info('[%s] SOCKET CONNECTED', socket.handshake.address); - - socket.setMaxListeners(0); - socket.address = socket.handshake.address !== null ? socket.handshake.address.address + ':' + socket.handshake.address.port : process.env.DOMAIN; - socket.userId = socket.handshake.query.userId; - socket.role = socket.handshake.query.role; - socket.name = socket.handshake.query.name; - socket.source = socket.handshake.query.source; - socket.connectedAt = new Date(); - - if (socket.handshake.query.role) { - socket.join(util.format("%ss", socket.handshake.query.role)); - } - - if (socket.userId) { - return User - .findById(socket.userId, { - attributes: ['id', 'name', 'role'], - include: [{ - model: VoiceQueue, - as: 'PVoiceQueues', - attributes: ['name'], - }], - }) - .then(function(user) { - if (!user) { - throw new Error('socket: no user found'); - } - - return user - .update({ - online: true, - lastLoginAt: moment().format("YYYY-MM-DD HH:mm:ss") - }) - }) - .then(function(user) { - - if (user.role !== 'agent') { - require('./tools/dashboard').register(socket); - } - - // ADD USER TO THE QUEUE ROOM - socket.join(util.format('%s:%s', user.role, user.name)); - socket.join(util.format('%s:%s', user.role, user.id)); - socket.join(util.format('%s', user.name)); - - switch (user.role) { - case 'admin': - VoiceQueue - .findAll({ - attributes: ['name'] - }) - .then(function(PVoiceQueues) { - PVoiceQueues.forEach(function(queue) { - socket.join(queue.name); - }); - }) - .catch(function(err) { - console.error(err); - }); - break; - - case 'user': - user.PVoiceQueues.forEach(function(queue) { - socket.join(queue.name); - }); - break; - default: - } - - console.log('socket: user online', user.name); - // Insert sockets below - require('../api/report_openchannel_session/report_openchannel_session.socket').register(socket); - require('../api/report_openchannel/report_openchannel.socket').register(socket); - require('../api/user_has_openchannel_queue/user_has_openchannel_queue.socket').register(socket); - require('../api/openchannel_disposition/openchannel_disposition.socket').register(socket); - require('../api/openchannel_application/openchannel_application.socket').register(socket); - require('../api/openchannel_queue/openchannel_queue.socket').register(socket); - require('../api/openchannel_room/openchannel_room.socket').register(socket); - require('../api/openchannel_message/openchannel_message.socket').register(socket); - require('../api/openchannel_account/openchannel_account.socket').register(socket); - require('../api/fax_disposition/fax_disposition.socket').register(socket); - require('../api/sms_disposition/sms_disposition.socket').register(socket); - require('../api/mail_disposition/mail_disposition.socket').register(socket); - require('../api/chat_disposition/chat_disposition.socket').register(socket); - require('../api/voice_disposition/voice_disposition.socket').register(socket); - require('../api/fax_attachment/fax_attachment.socket').register(socket); - require('../api/report_fax_session/report_fax_session.socket').register(socket); - require('../api/report_fax/report_fax.socket').register(socket); - require('../api/network_externip/network_externip.socket').register(socket); - require('../api/network_localnet/network_localnet.socket').register(socket); - - //Ordered alphabetically - require('../api/agent/agent.socket').register(socket); - require('../api/ami/ami.socket').register(socket); - require('../api/automation/automation.socket').register(socket); - require('../api/scheduler/scheduler.socket').register(socket); - require('../api/canned_answer/canned_answer.socket').register(socket); - require('../api/chanspy/chanspy.socket').register(socket); - require('../api/chat_application/chat_application.socket').register(socket); - require('../api/chat_enquiry/enquiry.socket').register(socket); - require('../api/chat_message/chat_message.socket').register(socket); - require('../api/chat_proactive_action/chat_proactive_action.socket').register(socket); - require('../api/chat_queue/chat_queue.socket').register(socket); - require('../api/chat_room/chat_room.socket').register(socket); - require('../api/chat_visitor/chat_visitor.socket').register(socket); - require('../api/chat_website/chat_website.socket').register(socket); - require('../api/chat_websites_field/chat_websites_field.socket').register(socket); - require('../api/company/company.socket').register(socket); - require('../api/contact_manager/contact_manager.socket').register(socket); - require('../api/custom_report/custom_report.socket').register(socket); - require('../api/dashboard/dashboard.socket').register(socket); - require('../api/default_report/default_report.socket').register(socket); - require('../api/desk_account/desk_account.socket').register(socket); - require('../api/desk_configuration/desk_configuration.socket').register(socket); - require('../api/desk_field/desk_field.socket').register(socket); - require('../api/extracted_report/extracted_report.socket').register(socket); - require('../api/fax_account/fax_account.socket').register(socket); - require('../api/fax_application/fax_application.socket').register(socket); - require('../api/fax_message/fax_message.socket').register(socket); - require('../api/fax_queue/fax_queue.socket').register(socket); - require('../api/fax_room/fax_room.socket').register(socket); - require('../api/freshdesk_account/freshdesk_account.socket').register(socket); - require('../api/freshdesk_configuration/freshdesk_configuration.socket').register(socket); - require('../api/freshdesk_field/freshdesk_field.socket').register(socket); - require('../api/integration/integration.socket').register(socket); - require('../api/interval/interval.socket').register(socket); - require('../api/jscripty_project/jscripty_project.socket').register(socket); - require('../api/list/list.socket').register(socket); - require('../api/mail_account/mail_account.socket').register(socket); - require('../api/mail_application/mail_application.socket').register(socket); - require('../api/mail_attachment/mail_attachment.socket').register(socket); - require('../api/mail_message/mail_message.socket').register(socket); - require('../api/mail_queue/mail_queue.socket').register(socket); - require('../api/mail_room/mail_room.socket').register(socket); - require('../api/mail_server_in/mail_server_in.socket').register(socket); - require('../api/mail_server_out/mail_server_out.socket').register(socket); - require('../api/template/template.socket').register(socket); - require('../api/metric/metric.socket').register(socket); - require('../api/module/module.socket').register(socket); - require('../api/motionbar/motionbar.socket').register(socket); - require('../api/report_agent/report_agent.socket').register(socket); - require('../api/report_member/report_member.socket').register(socket); - require('../api/report_call/report_call.socket').register(socket); - require('../api/report_dial/report_dial.socket').register(socket); - require('../api/report_chat/report_chat.socket').register(socket); - require('../api/report_chat_session/report_chat_session.socket').register(socket); - require('../api/report_integration/report_integration.socket').register(socket); - require('../api/report_sms/report_sms.socket').register(socket); - require('../api/report_mail/report_mail.socket').register(socket); - require('../api/report_mail_session/report_mail_session.socket').register(socket); - require('../api/report_sms_session/report_sms_session.socket').register(socket); - require('../api/report_queue/report_queue.socket').register(socket); - require('../api/report_square/report_square.socket').register(socket); - require('../api/report_square_detail/report_square_detail.socket').register(socket); - require('../api/report_tree/report_tree.socket').register(socket); - require('../api/salesforce_account/salesforce_account.socket').register(socket); - require('../api/salesforce_configuration/salesforce_configuration.socket').register(socket); - require('../api/salesforce_field/salesforce_field.socket').register(socket); - require('../api/setting/setting.socket').register(socket); - require('../api/sms_account/sms_account.socket').register(socket); - require('../api/sms_application/sms_application.socket').register(socket); - require('../api/sms_message/sms_message.socket').register(socket); - require('../api/sms_queue/sms_queue.socket').register(socket); - require('../api/sms_room/sms_room.socket').register(socket); - require('../api/square_odbc/square_odbc.socket').register(socket); - require('../api/square_project/square_project.socket').register(socket); - require('../api/square_recording/square_recording.socket').register(socket); - require('../api/sugarcrm_account/sugarcrm_account.socket').register(socket); - require('../api/sugarcrm_configuration/sugarcrm_configuration.socket').register(socket); - require('../api/sugarcrm_field/sugarcrm_field.socket').register(socket); - require('../api/tag/tag.socket').register(socket); - require('../api/team/team.socket').register(socket); - require('../api/trigger/trigger.socket').register(socket); - require('../api/trunk/trunk.socket').register(socket); - require('../api/user/user.socket').register(socket); - require('../api/sound/sound.socket').register(socket); - require('../api/user_has_chat_queue/user_has_chat_queue.socket').register(socket); - require('../api/user_has_chat_queue/user_has_chat_queue_permit.socket').register(socket); - require('../api/user_has_sms_queue/user_has_sms_queue.socket').register(socket); - require('../api/user_has_sms_queue/user_has_sms_queue_permit.socket').register(socket); - require('../api/user_has_chat_room/user_has_chat_room.socket').register(socket); - require('../api/user_has_fax_queue/user_has_fax_queue.socket').register(socket); - require('../api/user_has_fax_queue/user_has_fax_queue_permit.socket').register(socket); - require('../api/user_has_mail_queue/user_has_mail_queue.socket').register(socket); - require('../api/user_has_mail_queue/user_has_mail_queue_permit.socket').register(socket); - require('../api/user_has_team/user_has_team.socket').register(socket); - require('../api/user_has_voice_queue/user_has_voice_queue.socket').register(socket); - require('../api/user_has_voice_queue/user_has_voice_queue_permit.socket').register(socket); - require('../api/user_has_list/user_has_list.socket').register(socket); - require('../api/variable/variable.socket').register(socket); - require('../api/voice_context/voice_context.socket').register(socket); - require('../api/voice_extension/voice_extension.socket').register(socket); - require('../api/voice_musiconhold/voice_musiconhold.socket').register(socket); - require('../api/voice_queue/voice_queue.socket').register(socket); - require('../api/voice_recording/voice_recording.socket').register(socket); - require('../api/voice_voicemail/voice_voicemail.socket').register(socket); - require('../api/voice_voicemail_messages/voice_voicemail_messages.socket').register(socket); - require('../api/zendesk_account/zendesk_account.socket').register(socket); - require('../api/zendesk_configuration/zendesk_configuration.socket').register(socket); - require('../api/zendesk_field/zendesk_field.socket').register(socket); - }) - .catch(function(err) { - console.error(err); - }); - } else { - console.log('socket: no user found'); - } - - socket.on('info', function(data) { - console.info('[%s] %s', socket.address, JSON.stringify(data, null, 2)); - }); -} - -module.exports = function(socketio, dashboardProcess) { - // socket.io (v1.x.x) is powered by debug. - // In order to see all the debug output, set DEBUG (in server/config/local.env.js) to including the desired scope. - // - // ex: DEBUG: "http*,socket.io:socket" - - // We can authenticate socket.io users and access their token through socket.handshake.decoded_token - // - // 1. You will need to send the token in `client/components/socket/socket.service.js` - // - // 2. Require authentication here: - - socketio.use(require('socketio-jwt').authorize({ - secret: config.session.secret, - handshake: true - })); - - socketio.on('connection', function(socket) { - // Call onDisconnect. - socket.on('disconnect', function() { - onDisconnect(socket); - }); - - // Call onConnect. - onConnect(socket, dashboardProcess); - }); -}; +var _0x5a79=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6D\x6F\x6D\x65\x6E\x74","\x75\x74\x69\x6C","\x2E\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x55\x73\x65\x72","\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65","\x5B\x25\x73\x5D\x20\x53\x4F\x43\x4B\x45\x54\x20\x44\x49\x53\x43\x4F\x4E\x4E\x45\x43\x54\x45\x44","\x61\x64\x64\x72\x65\x73\x73","\x68\x61\x6E\x64\x73\x68\x61\x6B\x65","\x69\x6E\x66\x6F","\x72\x6F\x6C\x65","\x71\x75\x65\x72\x79","\x25\x73\x73","\x66\x6F\x72\x6D\x61\x74","\x6C\x65\x61\x76\x65","\x75\x73\x65\x72\x49\x64","\x65\x72\x72\x6F\x72","\x63\x61\x74\x63\x68","\x73\x6F\x63\x6B\x65\x74\x3A\x20\x75\x73\x65\x72\x20\x6F\x66\x66\x6C\x69\x6E\x65","\x6E\x61\x6D\x65","\x6C\x6F\x67","\x74\x68\x65\x6E","\x73\x6F\x63\x6B\x65\x74\x3A\x20\x6E\x6F\x20\x75\x73\x65\x72\x20\x66\x6F\x75\x6E\x64","\x75\x70\x64\x61\x74\x65","\x66\x69\x6E\x64\x42\x79\x49\x64","\x5B\x25\x73\x5D\x20\x53\x4F\x43\x4B\x45\x54\x20\x43\x4F\x4E\x4E\x45\x43\x54\x45\x44","\x73\x65\x74\x4D\x61\x78\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x3A","\x70\x6F\x72\x74","\x44\x4F\x4D\x41\x49\x4E","\x65\x6E\x76","\x73\x6F\x75\x72\x63\x65","\x63\x6F\x6E\x6E\x65\x63\x74\x65\x64\x41\x74","\x6A\x6F\x69\x6E","\x61\x67\x65\x6E\x74","\x72\x65\x67\x69\x73\x74\x65\x72","\x2E\x2F\x74\x6F\x6F\x6C\x73\x2F\x64\x61\x73\x68\x62\x6F\x61\x72\x64","\x25\x73\x3A\x25\x73","\x69\x64","\x25\x73","\x66\x6F\x72\x45\x61\x63\x68","\x66\x69\x6E\x64\x41\x6C\x6C","\x61\x64\x6D\x69\x6E","\x50\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65\x73","\x75\x73\x65\x72","\x73\x6F\x63\x6B\x65\x74\x3A\x20\x75\x73\x65\x72\x20\x6F\x6E\x6C\x69\x6E\x65","\x2E\x2E\x2F\x61\x70\x69\x2F\x72\x65\x70\x6F\x72\x74\x5F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x73\x65\x73\x73\x69\x6F\x6E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x73\x65\x73\x73\x69\x6F\x6E\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x72\x65\x70\x6F\x72\x74\x5F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x2F\x72\x65\x70\x6F\x72\x74\x5F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x71\x75\x65\x75\x65\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x71\x75\x65\x75\x65\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x2F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x71\x75\x65\x75\x65\x2F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x71\x75\x65\x75\x65\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x72\x6F\x6F\x6D\x2F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x72\x6F\x6F\x6D\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x6D\x65\x73\x73\x61\x67\x65\x2F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x6D\x65\x73\x73\x61\x67\x65\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x61\x63\x63\x6F\x75\x6E\x74\x2F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x61\x63\x63\x6F\x75\x6E\x74\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x66\x61\x78\x5F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x2F\x66\x61\x78\x5F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x73\x6D\x73\x5F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x2F\x73\x6D\x73\x5F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x6D\x61\x69\x6C\x5F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x2F\x6D\x61\x69\x6C\x5F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x63\x68\x61\x74\x5F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x2F\x63\x68\x61\x74\x5F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x76\x6F\x69\x63\x65\x5F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x2F\x76\x6F\x69\x63\x65\x5F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x66\x61\x78\x5F\x61\x74\x74\x61\x63\x68\x6D\x65\x6E\x74\x2F\x66\x61\x78\x5F\x61\x74\x74\x61\x63\x68\x6D\x65\x6E\x74\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x72\x65\x70\x6F\x72\x74\x5F\x66\x61\x78\x5F\x73\x65\x73\x73\x69\x6F\x6E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x66\x61\x78\x5F\x73\x65\x73\x73\x69\x6F\x6E\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x72\x65\x70\x6F\x72\x74\x5F\x66\x61\x78\x2F\x72\x65\x70\x6F\x72\x74\x5F\x66\x61\x78\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x6E\x65\x74\x77\x6F\x72\x6B\x5F\x65\x78\x74\x65\x72\x6E\x69\x70\x2F\x6E\x65\x74\x77\x6F\x72\x6B\x5F\x65\x78\x74\x65\x72\x6E\x69\x70\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x6E\x65\x74\x77\x6F\x72\x6B\x5F\x6C\x6F\x63\x61\x6C\x6E\x65\x74\x2F\x6E\x65\x74\x77\x6F\x72\x6B\x5F\x6C\x6F\x63\x61\x6C\x6E\x65\x74\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x61\x67\x65\x6E\x74\x2F\x61\x67\x65\x6E\x74\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x61\x6D\x69\x2F\x61\x6D\x69\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x61\x75\x74\x6F\x6D\x61\x74\x69\x6F\x6E\x2F\x61\x75\x74\x6F\x6D\x61\x74\x69\x6F\x6E\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x73\x63\x68\x65\x64\x75\x6C\x65\x72\x2F\x73\x63\x68\x65\x64\x75\x6C\x65\x72\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x63\x61\x6E\x6E\x65\x64\x5F\x61\x6E\x73\x77\x65\x72\x2F\x63\x61\x6E\x6E\x65\x64\x5F\x61\x6E\x73\x77\x65\x72\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x63\x68\x61\x6E\x73\x70\x79\x2F\x63\x68\x61\x6E\x73\x70\x79\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x63\x68\x61\x74\x5F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2F\x63\x68\x61\x74\x5F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x63\x68\x61\x74\x5F\x65\x6E\x71\x75\x69\x72\x79\x2F\x65\x6E\x71\x75\x69\x72\x79\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x63\x68\x61\x74\x5F\x6D\x65\x73\x73\x61\x67\x65\x2F\x63\x68\x61\x74\x5F\x6D\x65\x73\x73\x61\x67\x65\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x63\x68\x61\x74\x5F\x70\x72\x6F\x61\x63\x74\x69\x76\x65\x5F\x61\x63\x74\x69\x6F\x6E\x2F\x63\x68\x61\x74\x5F\x70\x72\x6F\x61\x63\x74\x69\x76\x65\x5F\x61\x63\x74\x69\x6F\x6E\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x63\x68\x61\x74\x5F\x71\x75\x65\x75\x65\x2F\x63\x68\x61\x74\x5F\x71\x75\x65\x75\x65\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x63\x68\x61\x74\x5F\x72\x6F\x6F\x6D\x2F\x63\x68\x61\x74\x5F\x72\x6F\x6F\x6D\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x63\x68\x61\x74\x5F\x76\x69\x73\x69\x74\x6F\x72\x2F\x63\x68\x61\x74\x5F\x76\x69\x73\x69\x74\x6F\x72\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x63\x68\x61\x74\x5F\x77\x65\x62\x73\x69\x74\x65\x2F\x63\x68\x61\x74\x5F\x77\x65\x62\x73\x69\x74\x65\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x63\x68\x61\x74\x5F\x77\x65\x62\x73\x69\x74\x65\x73\x5F\x66\x69\x65\x6C\x64\x2F\x63\x68\x61\x74\x5F\x77\x65\x62\x73\x69\x74\x65\x73\x5F\x66\x69\x65\x6C\x64\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x63\x6F\x6D\x70\x61\x6E\x79\x2F\x63\x6F\x6D\x70\x61\x6E\x79\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x63\x6F\x6E\x74\x61\x63\x74\x5F\x6D\x61\x6E\x61\x67\x65\x72\x2F\x63\x6F\x6E\x74\x61\x63\x74\x5F\x6D\x61\x6E\x61\x67\x65\x72\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x63\x75\x73\x74\x6F\x6D\x5F\x72\x65\x70\x6F\x72\x74\x2F\x63\x75\x73\x74\x6F\x6D\x5F\x72\x65\x70\x6F\x72\x74\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x64\x61\x73\x68\x62\x6F\x61\x72\x64\x2F\x64\x61\x73\x68\x62\x6F\x61\x72\x64\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x64\x65\x66\x61\x75\x6C\x74\x5F\x72\x65\x70\x6F\x72\x74\x2F\x64\x65\x66\x61\x75\x6C\x74\x5F\x72\x65\x70\x6F\x72\x74\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x64\x65\x73\x6B\x5F\x61\x63\x63\x6F\x75\x6E\x74\x2F\x64\x65\x73\x6B\x5F\x61\x63\x63\x6F\x75\x6E\x74\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x64\x65\x73\x6B\x5F\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x2F\x64\x65\x73\x6B\x5F\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x64\x65\x73\x6B\x5F\x66\x69\x65\x6C\x64\x2F\x64\x65\x73\x6B\x5F\x66\x69\x65\x6C\x64\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x65\x78\x74\x72\x61\x63\x74\x65\x64\x5F\x72\x65\x70\x6F\x72\x74\x2F\x65\x78\x74\x72\x61\x63\x74\x65\x64\x5F\x72\x65\x70\x6F\x72\x74\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x66\x61\x78\x5F\x61\x63\x63\x6F\x75\x6E\x74\x2F\x66\x61\x78\x5F\x61\x63\x63\x6F\x75\x6E\x74\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x66\x61\x78\x5F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2F\x66\x61\x78\x5F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x66\x61\x78\x5F\x6D\x65\x73\x73\x61\x67\x65\x2F\x66\x61\x78\x5F\x6D\x65\x73\x73\x61\x67\x65\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x66\x61\x78\x5F\x71\x75\x65\x75\x65\x2F\x66\x61\x78\x5F\x71\x75\x65\x75\x65\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x66\x61\x78\x5F\x72\x6F\x6F\x6D\x2F\x66\x61\x78\x5F\x72\x6F\x6F\x6D\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x66\x72\x65\x73\x68\x64\x65\x73\x6B\x5F\x61\x63\x63\x6F\x75\x6E\x74\x2F\x66\x72\x65\x73\x68\x64\x65\x73\x6B\x5F\x61\x63\x63\x6F\x75\x6E\x74\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x66\x72\x65\x73\x68\x64\x65\x73\x6B\x5F\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x2F\x66\x72\x65\x73\x68\x64\x65\x73\x6B\x5F\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x66\x72\x65\x73\x68\x64\x65\x73\x6B\x5F\x66\x69\x65\x6C\x64\x2F\x66\x72\x65\x73\x68\x64\x65\x73\x6B\x5F\x66\x69\x65\x6C\x64\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x2F\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x69\x6E\x74\x65\x72\x76\x61\x6C\x2F\x69\x6E\x74\x65\x72\x76\x61\x6C\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x6A\x73\x63\x72\x69\x70\x74\x79\x5F\x70\x72\x6F\x6A\x65\x63\x74\x2F\x6A\x73\x63\x72\x69\x70\x74\x79\x5F\x70\x72\x6F\x6A\x65\x63\x74\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x6C\x69\x73\x74\x2F\x6C\x69\x73\x74\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x6D\x61\x69\x6C\x5F\x61\x63\x63\x6F\x75\x6E\x74\x2F\x6D\x61\x69\x6C\x5F\x61\x63\x63\x6F\x75\x6E\x74\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x6D\x61\x69\x6C\x5F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2F\x6D\x61\x69\x6C\x5F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x6D\x61\x69\x6C\x5F\x61\x74\x74\x61\x63\x68\x6D\x65\x6E\x74\x2F\x6D\x61\x69\x6C\x5F\x61\x74\x74\x61\x63\x68\x6D\x65\x6E\x74\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x6D\x61\x69\x6C\x5F\x6D\x65\x73\x73\x61\x67\x65\x2F\x6D\x61\x69\x6C\x5F\x6D\x65\x73\x73\x61\x67\x65\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x6D\x61\x69\x6C\x5F\x71\x75\x65\x75\x65\x2F\x6D\x61\x69\x6C\x5F\x71\x75\x65\x75\x65\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x6D\x61\x69\x6C\x5F\x72\x6F\x6F\x6D\x2F\x6D\x61\x69\x6C\x5F\x72\x6F\x6F\x6D\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x6D\x61\x69\x6C\x5F\x73\x65\x72\x76\x65\x72\x5F\x69\x6E\x2F\x6D\x61\x69\x6C\x5F\x73\x65\x72\x76\x65\x72\x5F\x69\x6E\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x6D\x61\x69\x6C\x5F\x73\x65\x72\x76\x65\x72\x5F\x6F\x75\x74\x2F\x6D\x61\x69\x6C\x5F\x73\x65\x72\x76\x65\x72\x5F\x6F\x75\x74\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x74\x65\x6D\x70\x6C\x61\x74\x65\x2F\x74\x65\x6D\x70\x6C\x61\x74\x65\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x6D\x65\x74\x72\x69\x63\x2F\x6D\x65\x74\x72\x69\x63\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x6D\x6F\x64\x75\x6C\x65\x2F\x6D\x6F\x64\x75\x6C\x65\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x6D\x6F\x74\x69\x6F\x6E\x62\x61\x72\x2F\x6D\x6F\x74\x69\x6F\x6E\x62\x61\x72\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x72\x65\x70\x6F\x72\x74\x5F\x61\x67\x65\x6E\x74\x2F\x72\x65\x70\x6F\x72\x74\x5F\x61\x67\x65\x6E\x74\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x72\x65\x70\x6F\x72\x74\x5F\x6D\x65\x6D\x62\x65\x72\x2F\x72\x65\x70\x6F\x72\x74\x5F\x6D\x65\x6D\x62\x65\x72\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x72\x65\x70\x6F\x72\x74\x5F\x63\x61\x6C\x6C\x2F\x72\x65\x70\x6F\x72\x74\x5F\x63\x61\x6C\x6C\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x72\x65\x70\x6F\x72\x74\x5F\x64\x69\x61\x6C\x2F\x72\x65\x70\x6F\x72\x74\x5F\x64\x69\x61\x6C\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x72\x65\x70\x6F\x72\x74\x5F\x63\x68\x61\x74\x2F\x72\x65\x70\x6F\x72\x74\x5F\x63\x68\x61\x74\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x72\x65\x70\x6F\x72\x74\x5F\x63\x68\x61\x74\x5F\x73\x65\x73\x73\x69\x6F\x6E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x63\x68\x61\x74\x5F\x73\x65\x73\x73\x69\x6F\x6E\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x72\x65\x70\x6F\x72\x74\x5F\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x72\x65\x70\x6F\x72\x74\x5F\x73\x6D\x73\x2F\x72\x65\x70\x6F\x72\x74\x5F\x73\x6D\x73\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x72\x65\x70\x6F\x72\x74\x5F\x6D\x61\x69\x6C\x2F\x72\x65\x70\x6F\x72\x74\x5F\x6D\x61\x69\x6C\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x72\x65\x70\x6F\x72\x74\x5F\x6D\x61\x69\x6C\x5F\x73\x65\x73\x73\x69\x6F\x6E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x6D\x61\x69\x6C\x5F\x73\x65\x73\x73\x69\x6F\x6E\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x72\x65\x70\x6F\x72\x74\x5F\x73\x6D\x73\x5F\x73\x65\x73\x73\x69\x6F\x6E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x73\x6D\x73\x5F\x73\x65\x73\x73\x69\x6F\x6E\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x72\x65\x70\x6F\x72\x74\x5F\x71\x75\x65\x75\x65\x2F\x72\x65\x70\x6F\x72\x74\x5F\x71\x75\x65\x75\x65\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x72\x65\x70\x6F\x72\x74\x5F\x73\x71\x75\x61\x72\x65\x2F\x72\x65\x70\x6F\x72\x74\x5F\x73\x71\x75\x61\x72\x65\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x72\x65\x70\x6F\x72\x74\x5F\x73\x71\x75\x61\x72\x65\x5F\x64\x65\x74\x61\x69\x6C\x2F\x72\x65\x70\x6F\x72\x74\x5F\x73\x71\x75\x61\x72\x65\x5F\x64\x65\x74\x61\x69\x6C\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x72\x65\x70\x6F\x72\x74\x5F\x74\x72\x65\x65\x2F\x72\x65\x70\x6F\x72\x74\x5F\x74\x72\x65\x65\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x73\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x5F\x61\x63\x63\x6F\x75\x6E\x74\x2F\x73\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x5F\x61\x63\x63\x6F\x75\x6E\x74\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x73\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x5F\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x2F\x73\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x5F\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x73\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x5F\x66\x69\x65\x6C\x64\x2F\x73\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x5F\x66\x69\x65\x6C\x64\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x73\x65\x74\x74\x69\x6E\x67\x2F\x73\x65\x74\x74\x69\x6E\x67\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x73\x6D\x73\x5F\x61\x63\x63\x6F\x75\x6E\x74\x2F\x73\x6D\x73\x5F\x61\x63\x63\x6F\x75\x6E\x74\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x73\x6D\x73\x5F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2F\x73\x6D\x73\x5F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x73\x6D\x73\x5F\x6D\x65\x73\x73\x61\x67\x65\x2F\x73\x6D\x73\x5F\x6D\x65\x73\x73\x61\x67\x65\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x73\x6D\x73\x5F\x71\x75\x65\x75\x65\x2F\x73\x6D\x73\x5F\x71\x75\x65\x75\x65\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x73\x6D\x73\x5F\x72\x6F\x6F\x6D\x2F\x73\x6D\x73\x5F\x72\x6F\x6F\x6D\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x73\x71\x75\x61\x72\x65\x5F\x6F\x64\x62\x63\x2F\x73\x71\x75\x61\x72\x65\x5F\x6F\x64\x62\x63\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x73\x71\x75\x61\x72\x65\x5F\x70\x72\x6F\x6A\x65\x63\x74\x2F\x73\x71\x75\x61\x72\x65\x5F\x70\x72\x6F\x6A\x65\x63\x74\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x73\x71\x75\x61\x72\x65\x5F\x72\x65\x63\x6F\x72\x64\x69\x6E\x67\x2F\x73\x71\x75\x61\x72\x65\x5F\x72\x65\x63\x6F\x72\x64\x69\x6E\x67\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x73\x75\x67\x61\x72\x63\x72\x6D\x5F\x61\x63\x63\x6F\x75\x6E\x74\x2F\x73\x75\x67\x61\x72\x63\x72\x6D\x5F\x61\x63\x63\x6F\x75\x6E\x74\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x73\x75\x67\x61\x72\x63\x72\x6D\x5F\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x2F\x73\x75\x67\x61\x72\x63\x72\x6D\x5F\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x73\x75\x67\x61\x72\x63\x72\x6D\x5F\x66\x69\x65\x6C\x64\x2F\x73\x75\x67\x61\x72\x63\x72\x6D\x5F\x66\x69\x65\x6C\x64\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x74\x61\x67\x2F\x74\x61\x67\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x74\x65\x61\x6D\x2F\x74\x65\x61\x6D\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x74\x72\x69\x67\x67\x65\x72\x2F\x74\x72\x69\x67\x67\x65\x72\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x74\x72\x75\x6E\x6B\x2F\x74\x72\x75\x6E\x6B\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x75\x73\x65\x72\x2F\x75\x73\x65\x72\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x73\x6F\x75\x6E\x64\x2F\x73\x6F\x75\x6E\x64\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x63\x68\x61\x74\x5F\x71\x75\x65\x75\x65\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x63\x68\x61\x74\x5F\x71\x75\x65\x75\x65\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x63\x68\x61\x74\x5F\x71\x75\x65\x75\x65\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x63\x68\x61\x74\x5F\x71\x75\x65\x75\x65\x5F\x70\x65\x72\x6D\x69\x74\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x73\x6D\x73\x5F\x71\x75\x65\x75\x65\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x73\x6D\x73\x5F\x71\x75\x65\x75\x65\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x73\x6D\x73\x5F\x71\x75\x65\x75\x65\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x73\x6D\x73\x5F\x71\x75\x65\x75\x65\x5F\x70\x65\x72\x6D\x69\x74\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x63\x68\x61\x74\x5F\x72\x6F\x6F\x6D\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x63\x68\x61\x74\x5F\x72\x6F\x6F\x6D\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x66\x61\x78\x5F\x71\x75\x65\x75\x65\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x66\x61\x78\x5F\x71\x75\x65\x75\x65\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x66\x61\x78\x5F\x71\x75\x65\x75\x65\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x66\x61\x78\x5F\x71\x75\x65\x75\x65\x5F\x70\x65\x72\x6D\x69\x74\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x6D\x61\x69\x6C\x5F\x71\x75\x65\x75\x65\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x6D\x61\x69\x6C\x5F\x71\x75\x65\x75\x65\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x6D\x61\x69\x6C\x5F\x71\x75\x65\x75\x65\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x6D\x61\x69\x6C\x5F\x71\x75\x65\x75\x65\x5F\x70\x65\x72\x6D\x69\x74\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x74\x65\x61\x6D\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x74\x65\x61\x6D\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x76\x6F\x69\x63\x65\x5F\x71\x75\x65\x75\x65\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x76\x6F\x69\x63\x65\x5F\x71\x75\x65\x75\x65\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x76\x6F\x69\x63\x65\x5F\x71\x75\x65\x75\x65\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x76\x6F\x69\x63\x65\x5F\x71\x75\x65\x75\x65\x5F\x70\x65\x72\x6D\x69\x74\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x6C\x69\x73\x74\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x6C\x69\x73\x74\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x76\x61\x72\x69\x61\x62\x6C\x65\x2F\x76\x61\x72\x69\x61\x62\x6C\x65\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x76\x6F\x69\x63\x65\x5F\x63\x6F\x6E\x74\x65\x78\x74\x2F\x76\x6F\x69\x63\x65\x5F\x63\x6F\x6E\x74\x65\x78\x74\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x76\x6F\x69\x63\x65\x5F\x65\x78\x74\x65\x6E\x73\x69\x6F\x6E\x2F\x76\x6F\x69\x63\x65\x5F\x65\x78\x74\x65\x6E\x73\x69\x6F\x6E\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x76\x6F\x69\x63\x65\x5F\x6D\x75\x73\x69\x63\x6F\x6E\x68\x6F\x6C\x64\x2F\x76\x6F\x69\x63\x65\x5F\x6D\x75\x73\x69\x63\x6F\x6E\x68\x6F\x6C\x64\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x76\x6F\x69\x63\x65\x5F\x71\x75\x65\x75\x65\x2F\x76\x6F\x69\x63\x65\x5F\x71\x75\x65\x75\x65\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x76\x6F\x69\x63\x65\x5F\x72\x65\x63\x6F\x72\x64\x69\x6E\x67\x2F\x76\x6F\x69\x63\x65\x5F\x72\x65\x63\x6F\x72\x64\x69\x6E\x67\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x76\x6F\x69\x63\x65\x5F\x76\x6F\x69\x63\x65\x6D\x61\x69\x6C\x2F\x76\x6F\x69\x63\x65\x5F\x76\x6F\x69\x63\x65\x6D\x61\x69\x6C\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x76\x6F\x69\x63\x65\x5F\x76\x6F\x69\x63\x65\x6D\x61\x69\x6C\x5F\x6D\x65\x73\x73\x61\x67\x65\x73\x2F\x76\x6F\x69\x63\x65\x5F\x76\x6F\x69\x63\x65\x6D\x61\x69\x6C\x5F\x6D\x65\x73\x73\x61\x67\x65\x73\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x7A\x65\x6E\x64\x65\x73\x6B\x5F\x61\x63\x63\x6F\x75\x6E\x74\x2F\x7A\x65\x6E\x64\x65\x73\x6B\x5F\x61\x63\x63\x6F\x75\x6E\x74\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x7A\x65\x6E\x64\x65\x73\x6B\x5F\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x2F\x7A\x65\x6E\x64\x65\x73\x6B\x5F\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x2E\x73\x6F\x63\x6B\x65\x74","\x2E\x2E\x2F\x61\x70\x69\x2F\x7A\x65\x6E\x64\x65\x73\x6B\x5F\x66\x69\x65\x6C\x64\x2F\x7A\x65\x6E\x64\x65\x73\x6B\x5F\x66\x69\x65\x6C\x64\x2E\x73\x6F\x63\x6B\x65\x74","\x59\x59\x59\x59\x2D\x4D\x4D\x2D\x44\x44\x20\x48\x48\x3A\x6D\x6D\x3A\x73\x73","\x5B\x25\x73\x5D\x20\x25\x73","\x73\x74\x72\x69\x6E\x67\x69\x66\x79","\x6F\x6E","\x65\x78\x70\x6F\x72\x74\x73","\x73\x65\x63\x72\x65\x74","\x73\x65\x73\x73\x69\x6F\x6E","\x61\x75\x74\x68\x6F\x72\x69\x7A\x65","\x73\x6F\x63\x6B\x65\x74\x69\x6F\x2D\x6A\x77\x74","\x75\x73\x65","\x63\x6F\x6E\x6E\x65\x63\x74\x69\x6F\x6E","\x64\x69\x73\x63\x6F\x6E\x6E\x65\x63\x74"];_0x5a79[0];var moment=require(_0x5a79[1]);var util=require(_0x5a79[2]);var config=require(_0x5a79[3]);var User=require(_0x5a79[5])[_0x5a79[4]];var VoiceQueue=require(_0x5a79[5])[_0x5a79[6]];function onDisconnect(_0x35d4x7){console[_0x5a79[10]](_0x5a79[7],_0x35d4x7[_0x5a79[9]][_0x5a79[8]]);if(_0x35d4x7[_0x5a79[9]][_0x5a79[12]][_0x5a79[11]]){_0x35d4x7[_0x5a79[15]](util[_0x5a79[14]](_0x5a79[13],_0x35d4x7[_0x5a79[9]][_0x5a79[12]][_0x5a79[11]]))};if(_0x35d4x7[_0x5a79[16]]){return User[_0x5a79[25]](_0x35d4x7[_0x5a79[16]])[_0x5a79[22]](function(_0x35d4x9){if(!_0x35d4x9){throw new Error(_0x5a79[23])};return _0x35d4x9[_0x5a79[24]]({online:false})})[_0x5a79[22]](function(_0x35d4x9){console[_0x5a79[21]](_0x5a79[19],_0x35d4x9[_0x5a79[20]])})[_0x5a79[18]](function(_0x35d4x8){console[_0x5a79[17]](_0x35d4x8)})}else {console[_0x5a79[21]](_0x5a79[23])}}function onConnect(_0x35d4x7,_0x35d4xb){console[_0x5a79[10]](_0x5a79[26],_0x35d4x7[_0x5a79[9]][_0x5a79[8]]);_0x35d4x7[_0x5a79[27]](0);_0x35d4x7[_0x5a79[8]]= _0x35d4x7[_0x5a79[9]][_0x5a79[8]]!== null?_0x35d4x7[_0x5a79[9]][_0x5a79[8]][_0x5a79[8]]+ _0x5a79[28]+ _0x35d4x7[_0x5a79[9]][_0x5a79[8]][_0x5a79[29]]:process[_0x5a79[31]][_0x5a79[30]];_0x35d4x7[_0x5a79[16]]= _0x35d4x7[_0x5a79[9]][_0x5a79[12]][_0x5a79[16]];_0x35d4x7[_0x5a79[11]]= _0x35d4x7[_0x5a79[9]][_0x5a79[12]][_0x5a79[11]];_0x35d4x7[_0x5a79[20]]= _0x35d4x7[_0x5a79[9]][_0x5a79[12]][_0x5a79[20]];_0x35d4x7[_0x5a79[32]]= _0x35d4x7[_0x5a79[9]][_0x5a79[12]][_0x5a79[32]];_0x35d4x7[_0x5a79[33]]= new Date();if(_0x35d4x7[_0x5a79[9]][_0x5a79[12]][_0x5a79[11]]){_0x35d4x7[_0x5a79[34]](util[_0x5a79[14]](_0x5a79[13],_0x35d4x7[_0x5a79[9]][_0x5a79[12]][_0x5a79[11]]))};if(_0x35d4x7[_0x5a79[16]]){return User[_0x5a79[25]](_0x35d4x7[_0x5a79[16]],{attributes:[_0x5a79[39],_0x5a79[20],_0x5a79[11]],include:[{model:VoiceQueue,as:_0x5a79[44],attributes:[_0x5a79[20]]}]})[_0x5a79[22]](function(_0x35d4x9){if(!_0x35d4x9){throw new Error(_0x5a79[23])};return _0x35d4x9[_0x5a79[24]]({online:true,lastLoginAt:moment()[_0x5a79[14]](_0x5a79[174])})})[_0x5a79[22]](function(_0x35d4x9){if(_0x35d4x9[_0x5a79[11]]!== _0x5a79[35]){require(_0x5a79[37])[_0x5a79[36]](_0x35d4x7)};_0x35d4x7[_0x5a79[34]](util[_0x5a79[14]](_0x5a79[38],_0x35d4x9[_0x5a79[11]],_0x35d4x9[_0x5a79[20]]));_0x35d4x7[_0x5a79[34]](util[_0x5a79[14]](_0x5a79[38],_0x35d4x9[_0x5a79[11]],_0x35d4x9[_0x5a79[39]]));_0x35d4x7[_0x5a79[34]](util[_0x5a79[14]](_0x5a79[40],_0x35d4x9[_0x5a79[20]]));switch(_0x35d4x9[_0x5a79[11]]){case _0x5a79[43]:VoiceQueue[_0x5a79[42]]({attributes:[_0x5a79[20]]})[_0x5a79[22]](function(_0x35d4xc){_0x35d4xc[_0x5a79[41]](function(_0x35d4xd){_0x35d4x7[_0x5a79[34]](_0x35d4xd[_0x5a79[20]])})})[_0x5a79[18]](function(_0x35d4x8){console[_0x5a79[17]](_0x35d4x8)});break;case _0x5a79[45]:_0x35d4x9[_0x5a79[44]][_0x5a79[41]](function(_0x35d4xd){_0x35d4x7[_0x5a79[34]](_0x35d4xd[_0x5a79[20]])});break;default:};console[_0x5a79[21]](_0x5a79[46],_0x35d4x9[_0x5a79[20]]);require(_0x5a79[47])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[48])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[49])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[50])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[51])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[52])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[53])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[54])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[55])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[56])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[57])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[58])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[59])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[60])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[61])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[62])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[63])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[64])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[65])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[66])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[67])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[68])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[69])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[70])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[71])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[72])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[73])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[74])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[75])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[76])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[77])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[78])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[79])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[80])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[81])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[82])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[83])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[84])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[85])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[86])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[87])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[88])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[89])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[90])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[91])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[92])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[93])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[94])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[95])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[96])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[97])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[98])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[99])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[100])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[101])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[102])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[103])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[104])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[105])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[106])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[107])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[108])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[109])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[110])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[111])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[112])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[113])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[114])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[115])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[116])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[117])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[118])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[119])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[120])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[121])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[122])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[123])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[124])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[125])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[126])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[127])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[128])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[129])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[130])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[131])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[132])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[133])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[134])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[135])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[136])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[137])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[138])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[139])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[140])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[141])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[142])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[143])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[144])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[145])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[146])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[147])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[148])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[149])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[150])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[151])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[152])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[153])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[154])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[155])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[156])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[157])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[158])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[159])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[160])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[161])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[162])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[163])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[164])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[165])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[166])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[167])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[168])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[169])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[170])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[171])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[172])[_0x5a79[36]](_0x35d4x7);require(_0x5a79[173])[_0x5a79[36]](_0x35d4x7)})[_0x5a79[18]](function(_0x35d4x8){console[_0x5a79[17]](_0x35d4x8)})}else {console[_0x5a79[21]](_0x5a79[23])};_0x35d4x7[_0x5a79[177]](_0x5a79[10],function(_0x35d4xe){console[_0x5a79[10]](_0x5a79[175],_0x35d4x7[_0x5a79[8]],JSON[_0x5a79[176]](_0x35d4xe,null,2))})}module[_0x5a79[178]]= function(_0x35d4xf,_0x35d4xb){_0x35d4xf[_0x5a79[183]](require(_0x5a79[182])[_0x5a79[181]]({secret:config[_0x5a79[180]][_0x5a79[179]],handshake:true}));_0x35d4xf[_0x5a79[177]](_0x5a79[184],function(_0x35d4x7){_0x35d4x7[_0x5a79[177]](_0x5a79[185],function(){onDisconnect(_0x35d4x7)});onConnect(_0x35d4x7,_0x35d4xb)})} \ No newline at end of file diff --git a/server/config/tools/channelSpy.js b/server/config/tools/channelSpy.js index d46a052..60d7e94 100644 --- a/server/config/tools/channelSpy.js +++ b/server/config/tools/channelSpy.js @@ -1,109 +1 @@ -'use strict'; - -var fs = require('fs'); -var util = require('util'); -var path = require('path'); -var config = require('../../config/environment'); -var ChanSpyModel = require('../../models').ChanSpy; -var User = require('../../models').User; -var VoiceExtension = require('../../models').VoiceExtension; -var sequelize = require('../../models').sequelize; -var Promise = require('bluebird'); - -function ChanSpy() { - ChanSpyModel.afterCreate(function(doc, options) { - return Promise - .all([]) - .then(createSpyExtensions(doc, options)); - }) - ChanSpyModel.afterUpdate(function(doc, options) { - return Promise - .all([]) - .then(deleteSpyExtensions(doc, options)) - .then(createSpyExtensions(doc, options)); - }) - ChanSpyModel.afterDelete(function(doc, options) { - return deleteSpyExtensions(doc, options); - }) -} - -function deleteSpyExtensions(doc, options) { - return VoiceExtension - .destroy({ - where: { - ChanSpyId: doc.id - }, - transaction: options.transaction - }); -} - -function createSpyExtensions(doc, options) { - return User - .scope('agent') - .findAll({ - where: { - chanspy: true - } - }) - .then(function(agents) { - var bulkSpies = []; - agents.forEach(function(elem) { - var spies = []; - var priority = 1; - if (doc.auth) { - spies.push({ - context: 'from-sip', - exten: util.format('%s%s', doc.prefix, elem.name), - priority: priority, - app: 'Authenticate', - appdata: doc.password, - UserId: elem.id, - ChanSpyId: doc.id, - type: 'system' - }); - priority++; - } - spies.push({ - context: 'from-sip', - exten: util.format('%s%s', doc.prefix, elem.name), - priority: priority, - app: 'ChanSpy', - appdata: util.format('SIP/%s,%s', elem.name, doc.options), - UserId: elem.id, - ChanSpyId: doc.id, - type: 'system' - }); - priority = 1; - if (doc.auth) { - spies.push({ - context: 'from-sip', - exten: util.format('%s%s', doc.prefix, elem.internal), - priority: priority, - app: 'Authenticate', - appdata: doc.password, - UserId: elem.id, - ChanSpyId: doc.id, - type: 'system' - }); - priority++; - } - spies.push({ - context: 'from-sip', - exten: util.format('%s%s', doc.prefix, elem.internal), - priority: priority, - app: 'ChanSpy', - appdata: util.format('SIP/%s,%s', elem.name, doc.options), - UserId: elem.id, - ChanSpyId: doc.id, - type: 'system' - }); - bulkSpies.push(VoiceExtension.bulkCreate(spies, { - transaction: options.transaction - })); - }); - return bulkSpies; - }) - .all(); -} - -module.exports = ChanSpy; +var _0x80ec=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x66\x73","\x75\x74\x69\x6C","\x70\x61\x74\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x43\x68\x61\x6E\x53\x70\x79","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x55\x73\x65\x72","\x56\x6F\x69\x63\x65\x45\x78\x74\x65\x6E\x73\x69\x6F\x6E","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x62\x6C\x75\x65\x62\x69\x72\x64","\x74\x68\x65\x6E","\x61\x6C\x6C","\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x61\x66\x74\x65\x72\x44\x65\x6C\x65\x74\x65","\x69\x64","\x74\x72\x61\x6E\x73\x61\x63\x74\x69\x6F\x6E","\x64\x65\x73\x74\x72\x6F\x79","\x61\x75\x74\x68","\x66\x72\x6F\x6D\x2D\x73\x69\x70","\x25\x73\x25\x73","\x70\x72\x65\x66\x69\x78","\x6E\x61\x6D\x65","\x66\x6F\x72\x6D\x61\x74","\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65","\x70\x61\x73\x73\x77\x6F\x72\x64","\x73\x79\x73\x74\x65\x6D","\x70\x75\x73\x68","\x53\x49\x50\x2F\x25\x73\x2C\x25\x73","\x6F\x70\x74\x69\x6F\x6E\x73","\x69\x6E\x74\x65\x72\x6E\x61\x6C","\x62\x75\x6C\x6B\x43\x72\x65\x61\x74\x65","\x66\x6F\x72\x45\x61\x63\x68","\x66\x69\x6E\x64\x41\x6C\x6C","\x61\x67\x65\x6E\x74","\x73\x63\x6F\x70\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0x80ec[0];var fs=require(_0x80ec[1]);var util=require(_0x80ec[2]);var path=require(_0x80ec[3]);var config=require(_0x80ec[4]);var ChanSpyModel=require(_0x80ec[6])[_0x80ec[5]];var User=require(_0x80ec[6])[_0x80ec[7]];var VoiceExtension=require(_0x80ec[6])[_0x80ec[8]];var sequelize=require(_0x80ec[6])[_0x80ec[9]];var Promise=require(_0x80ec[10]);function ChanSpy(){ChanSpyModel[_0x80ec[13]](function(_0xc07dxb,_0xc07dxc){return Promise[_0x80ec[12]]([])[_0x80ec[11]](createSpyExtensions(_0xc07dxb,_0xc07dxc))});ChanSpyModel[_0x80ec[14]](function(_0xc07dxb,_0xc07dxc){return Promise[_0x80ec[12]]([])[_0x80ec[11]](deleteSpyExtensions(_0xc07dxb,_0xc07dxc))[_0x80ec[11]](createSpyExtensions(_0xc07dxb,_0xc07dxc))});ChanSpyModel[_0x80ec[15]](function(_0xc07dxb,_0xc07dxc){return deleteSpyExtensions(_0xc07dxb,_0xc07dxc)})}function deleteSpyExtensions(_0xc07dxb,_0xc07dxc){return VoiceExtension[_0x80ec[18]]({where:{ChanSpyId:_0xc07dxb[_0x80ec[16]]},transaction:_0xc07dxc[_0x80ec[17]]})}function createSpyExtensions(_0xc07dxb,_0xc07dxc){return User[_0x80ec[36]](_0x80ec[35])[_0x80ec[34]]({where:{chanspy:true}})[_0x80ec[11]](function(_0xc07dxf){var _0xc07dx10=[];_0xc07dxf[_0x80ec[33]](function(_0xc07dx11){var _0xc07dx12=[];var _0xc07dx13=1;if(_0xc07dxb[_0x80ec[19]]){_0xc07dx12[_0x80ec[28]]({context:_0x80ec[20],exten:util[_0x80ec[24]](_0x80ec[21],_0xc07dxb[_0x80ec[22]],_0xc07dx11[_0x80ec[23]]),priority:_0xc07dx13,app:_0x80ec[25],appdata:_0xc07dxb[_0x80ec[26]],UserId:_0xc07dx11[_0x80ec[16]],ChanSpyId:_0xc07dxb[_0x80ec[16]],type:_0x80ec[27]});_0xc07dx13++};_0xc07dx12[_0x80ec[28]]({context:_0x80ec[20],exten:util[_0x80ec[24]](_0x80ec[21],_0xc07dxb[_0x80ec[22]],_0xc07dx11[_0x80ec[23]]),priority:_0xc07dx13,app:_0x80ec[5],appdata:util[_0x80ec[24]](_0x80ec[29],_0xc07dx11[_0x80ec[23]],_0xc07dxb[_0x80ec[30]]),UserId:_0xc07dx11[_0x80ec[16]],ChanSpyId:_0xc07dxb[_0x80ec[16]],type:_0x80ec[27]});_0xc07dx13= 1;if(_0xc07dxb[_0x80ec[19]]){_0xc07dx12[_0x80ec[28]]({context:_0x80ec[20],exten:util[_0x80ec[24]](_0x80ec[21],_0xc07dxb[_0x80ec[22]],_0xc07dx11[_0x80ec[31]]),priority:_0xc07dx13,app:_0x80ec[25],appdata:_0xc07dxb[_0x80ec[26]],UserId:_0xc07dx11[_0x80ec[16]],ChanSpyId:_0xc07dxb[_0x80ec[16]],type:_0x80ec[27]});_0xc07dx13++};_0xc07dx12[_0x80ec[28]]({context:_0x80ec[20],exten:util[_0x80ec[24]](_0x80ec[21],_0xc07dxb[_0x80ec[22]],_0xc07dx11[_0x80ec[31]]),priority:_0xc07dx13,app:_0x80ec[5],appdata:util[_0x80ec[24]](_0x80ec[29],_0xc07dx11[_0x80ec[23]],_0xc07dxb[_0x80ec[30]]),UserId:_0xc07dx11[_0x80ec[16]],ChanSpyId:_0xc07dxb[_0x80ec[16]],type:_0x80ec[27]});_0xc07dx10[_0x80ec[28]](VoiceExtension[_0x80ec[32]](_0xc07dx12,{transaction:_0xc07dxc[_0x80ec[17]]}))});return _0xc07dx10})[_0x80ec[12]]()}module[_0x80ec[37]]= ChanSpy \ No newline at end of file diff --git a/server/config/tools/chatRoom.js b/server/config/tools/chatRoom.js index 69714fe..0afbdfe 100644 --- a/server/config/tools/chatRoom.js +++ b/server/config/tools/chatRoom.js @@ -1,104 +1 @@ -'use strict'; - -var _ = require('lodash'); -var moment = require('moment'); - -var ChatRoomModel = require('../../models').ChatRoom; -var ChatVisitorModel = require('../../models').ChatVisitor; -var ReportChatSessionModel = require('../../models').ReportChatSession; -var ReportChatRoomModel = require('../../models').ReportChatRoom; - -function ChatRoom() { - ChatRoomModel.afterUpdate(function(doc) { - if (doc.changed('status') && doc.status === 'CLOSED') { - if (doc.ChatVisitorId) { - return ChatVisitorModel - .findById(doc.ChatVisitorId) - .then(function(chatVisitor) { - if (chatVisitor) { - var updated = _.merge(chatVisitor, { - status: 'served' - }); - return updated.save(); - } - }) - .then(function() { - return ReportChatSessionModel - .update({ - complete: true, - completeReason: doc.completeReason, - completeAt: moment().format("YYYY-MM-DD HH:mm:ss") - }, { - where: { - roomid: doc.id, - complete: false, - abandon: false, - timeout: false - }, - individualHooks: true - }); - }) - .catch(function(err) { - console.log('Error:', err); - }); - } - } - - if (doc.changed('status') && doc.status === 'UNMANAGED') { - if (doc.ChatVisitorId) { - return ChatVisitorModel - .findById(doc.ChatVisitorId) - .then(function(chatVisitor) { - if (chatVisitor) { - return chatVisitor - .update({ - status: 'unserved' - }); - } - }) - .catch(function(err) { - console.log('Error:', err); - }); - } - } - - if (doc.changed('status') && doc.status === 'ABANDON') { - if (doc.ChatVisitorId) { - return ChatVisitorModel - .findById(doc.ChatVisitorId) - .then(function(chatVisitor) { - if (chatVisitor) { - return chatVisitor - .update({ - status: 'abandon' - }); - } - }) - .catch(function(err) { - console.log('Error:', err); - }); - } - } - - if (doc.changed('rating')) { - if (doc.id) { - return ReportChatRoomModel - .update({ - crating: doc.rating, - cratingMessage: doc.ratingMessage - }, { - where: { - roomid: doc.id - }, - individualHooks: true - }) - .catch(function(err) { - console.log('Error:', err); - }); - } - } - - }) -} - -module.exports = ChatRoom; +var _0x9ffb=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x6D\x6F\x6D\x65\x6E\x74","\x43\x68\x61\x74\x52\x6F\x6F\x6D","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x43\x68\x61\x74\x56\x69\x73\x69\x74\x6F\x72","\x52\x65\x70\x6F\x72\x74\x43\x68\x61\x74\x53\x65\x73\x73\x69\x6F\x6E","\x52\x65\x70\x6F\x72\x74\x43\x68\x61\x74\x52\x6F\x6F\x6D","\x73\x74\x61\x74\x75\x73","\x63\x68\x61\x6E\x67\x65\x64","\x43\x4C\x4F\x53\x45\x44","\x43\x68\x61\x74\x56\x69\x73\x69\x74\x6F\x72\x49\x64","\x45\x72\x72\x6F\x72\x3A","\x6C\x6F\x67","\x63\x61\x74\x63\x68","\x63\x6F\x6D\x70\x6C\x65\x74\x65\x52\x65\x61\x73\x6F\x6E","\x59\x59\x59\x59\x2D\x4D\x4D\x2D\x44\x44\x20\x48\x48\x3A\x6D\x6D\x3A\x73\x73","\x66\x6F\x72\x6D\x61\x74","\x69\x64","\x75\x70\x64\x61\x74\x65","\x74\x68\x65\x6E","\x73\x65\x72\x76\x65\x64","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x66\x69\x6E\x64\x42\x79\x49\x64","\x55\x4E\x4D\x41\x4E\x41\x47\x45\x44","\x75\x6E\x73\x65\x72\x76\x65\x64","\x41\x42\x41\x4E\x44\x4F\x4E","\x61\x62\x61\x6E\x64\x6F\x6E","\x72\x61\x74\x69\x6E\x67","\x72\x61\x74\x69\x6E\x67\x4D\x65\x73\x73\x61\x67\x65","\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0x9ffb[0];var _=require(_0x9ffb[1]);var moment=require(_0x9ffb[2]);var ChatRoomModel=require(_0x9ffb[4])[_0x9ffb[3]];var ChatVisitorModel=require(_0x9ffb[4])[_0x9ffb[5]];var ReportChatSessionModel=require(_0x9ffb[4])[_0x9ffb[6]];var ReportChatRoomModel=require(_0x9ffb[4])[_0x9ffb[7]];function ChatRoom(){ChatRoomModel[_0x9ffb[31]](function(_0xd56dx8){if(_0xd56dx8[_0x9ffb[9]](_0x9ffb[8])&& _0xd56dx8[_0x9ffb[8]]=== _0x9ffb[10]){if(_0xd56dx8[_0x9ffb[11]]){return ChatVisitorModel[_0x9ffb[24]](_0xd56dx8.ChatVisitorId)[_0x9ffb[20]](function(_0xd56dxa){if(_0xd56dxa){var _0xd56dxb=_[_0x9ffb[22]](_0xd56dxa,{status:_0x9ffb[21]});return _0xd56dxb[_0x9ffb[23]]()}})[_0x9ffb[20]](function(){return ReportChatSessionModel[_0x9ffb[19]]({complete:true,completeReason:_0xd56dx8[_0x9ffb[15]],completeAt:moment()[_0x9ffb[17]](_0x9ffb[16])},{where:{roomid:_0xd56dx8[_0x9ffb[18]],complete:false,abandon:false,timeout:false},individualHooks:true})})[_0x9ffb[14]](function(_0xd56dx9){console[_0x9ffb[13]](_0x9ffb[12],_0xd56dx9)})}};if(_0xd56dx8[_0x9ffb[9]](_0x9ffb[8])&& _0xd56dx8[_0x9ffb[8]]=== _0x9ffb[25]){if(_0xd56dx8[_0x9ffb[11]]){return ChatVisitorModel[_0x9ffb[24]](_0xd56dx8.ChatVisitorId)[_0x9ffb[20]](function(_0xd56dxa){if(_0xd56dxa){return _0xd56dxa[_0x9ffb[19]]({status:_0x9ffb[26]})}})[_0x9ffb[14]](function(_0xd56dx9){console[_0x9ffb[13]](_0x9ffb[12],_0xd56dx9)})}};if(_0xd56dx8[_0x9ffb[9]](_0x9ffb[8])&& _0xd56dx8[_0x9ffb[8]]=== _0x9ffb[27]){if(_0xd56dx8[_0x9ffb[11]]){return ChatVisitorModel[_0x9ffb[24]](_0xd56dx8.ChatVisitorId)[_0x9ffb[20]](function(_0xd56dxa){if(_0xd56dxa){return _0xd56dxa[_0x9ffb[19]]({status:_0x9ffb[28]})}})[_0x9ffb[14]](function(_0xd56dx9){console[_0x9ffb[13]](_0x9ffb[12],_0xd56dx9)})}};if(_0xd56dx8[_0x9ffb[9]](_0x9ffb[29])){if(_0xd56dx8[_0x9ffb[18]]){return ReportChatRoomModel[_0x9ffb[19]]({crating:_0xd56dx8[_0x9ffb[29]],cratingMessage:_0xd56dx8[_0x9ffb[30]]},{where:{roomid:_0xd56dx8[_0x9ffb[18]]},individualHooks:true})[_0x9ffb[14]](function(_0xd56dx9){console[_0x9ffb[13]](_0x9ffb[12],_0xd56dx9)})}}})}module[_0x9ffb[32]]= ChatRoom \ No newline at end of file diff --git a/server/config/tools/dashboard.js b/server/config/tools/dashboard.js index 849d844..fcc5a76 100644 --- a/server/config/tools/dashboard.js +++ b/server/config/tools/dashboard.js @@ -1,1248 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -var sequelize = require('../../models').sequelize; -var models = require('../../models'); -var Util = require('../../config/util'); -var _ = require('lodash'); -var moment = require('moment'); -var Promise = require('bluebird'); - -exports.register = function(socket) { - - models.ReportMailSession.afterCreate(function(doc) { - updateMail(doc); - }); - - models.ReportMailSession.afterUpdate(function(doc) { - updateMail(doc); - }); - - models.MailRoom.afterCreate(function(doc) { - updateMail(doc); - }); - - models.MailRoom.afterUpdate(function(doc) { - updateMail(doc); - }); - - function updateMail(doc) { - onNewMail(socket, doc); - onOpenMail(socket, doc); - onClosedMail(socket, doc); - onTimeoutMail(socket, doc); - onPendingMail(socket, doc); - onWaitingMail(socket, doc); - } - - models.ReportChatSession.afterCreate(function(doc) { - updateChat(doc); - }); - - models.ReportChatSession.afterUpdate(function(doc) { - updateChat(doc); - }); - - models.ChatRoom.afterCreate(function(doc) { - updateChat(doc); - }); - - models.ChatRoom.afterUpdate(function(doc) { - updateChat(doc); - }); - - function updateChat(doc) { - onNewChat(socket, doc); - onOpenChat(socket, doc); - onClosedChat(socket, doc); - onTimeoutChat(socket, doc); - onAbandonedChat(socket, doc); - onUnmanagedChat(socket, doc); - } - - models.ReportFaxSession.afterCreate(function(doc) { - updateFax(doc); - }); - - models.ReportFaxSession.afterUpdate(function(doc) { - updateFax(doc); - }); - - models.FaxRoom.afterCreate(function(doc) { - updateFax(doc); - }); - - models.FaxRoom.afterUpdate(function(doc) { - updateFax(doc); - }); - - function updateFax(doc) { - onNewFax(socket, doc); - onOpenFax(socket, doc); - onClosedFax(socket, doc); - onTimeoutFax(socket, doc); - onPendingFax(socket, doc); - onWaitingFax(socket, doc); - } - - models.ReportSmsSession.afterCreate(function(doc) { - updateSms(doc); - }); - - models.ReportSmsSession.afterUpdate(function(doc) { - updateSms(doc); - }); - - models.SmsRoom.afterCreate(function(doc) { - updateSms(doc); - }); - - models.SmsRoom.afterUpdate(function(doc) { - updateSms(doc); - }); - - function updateSms(doc) { - onNewSms(socket, doc); - onOpenSms(socket, doc); - onClosedSms(socket, doc); - onTimeoutSms(socket, doc); - onPendingSms(socket, doc); - onWaitingSms(socket, doc); - } - - models.ReportOpenchannelSession.afterCreate(function(doc) { - updateOpenchannel(doc); - }); - - models.ReportOpenchannelSession.afterUpdate(function(doc) { - updateOpenchannel(doc); - }); - - models.OpenchannelRoom.afterCreate(function(doc) { - updateOpenchannel(doc); - }); - - models.OpenchannelRoom.afterUpdate(function(doc) { - updateOpenchannel(doc); - }); - - function updateOpenchannel(doc) { - onNewOpenchannel(socket, doc); - onOpenOpenchannel(socket, doc); - onClosedOpenchannel(socket, doc); - onTimeoutOpenchannel(socket, doc); - onPendingOpenchannel(socket, doc); - onWaitingOpenchannel(socket, doc); - } -} - -function getMailQueues(user, room) { - return function() { - switch (user.role) { - case 'user': - return models.User - .findById(user.id, { - attributes: ['id'] - }) - .then(Util.getMailQueuesIdByUser({}, { - attributes: ['id'], - include: [{ - raw: true, - model: models.User, - attributes: ['id'] - }] - })) - .then(function(userQueues) { - if (room) { - return { - include: { - model: models.MailAccount, - include: { - model: models.MailApplication, - include: { - model: models.MailQueue, - where: { - id: _.map(userQueues, 'id') - } - } - } - } - }; - } else { - var users = []; - userQueues.rows.forEach(function(queue) { - users = _.union(users, _.map(queue.Users, 'id')); - }); - return { - where: { - $or: { - queue: _.map(userQueues.rows, 'id'), - memberid: users - } - } - }; - } - }); - case 'agent': - return models.User - .findById(user.id, { - attributes: ['id'] - }) - .then(function(agent) { - return agent - .getMailQueues({ - attributes: ['id'] - }); - }) - .then(function(userQueues) { - return { - where: { - $or: { - queue: _.map(userQueues, 'id'), - memberid: user.id - } - } - }; - }); - default: - return {}; - } - } -} - -function getChatQueues(user, room) { - return function() { - switch (user.role) { - case 'user': - return models.User - .findById(user.id, { - attributes: ['id'] - }) - .then(Util.getChatQueuesIdByUser({}, { - attributes: ['id'], - include: [{ - raw: true, - model: models.User, - attributes: ['id'] - }] - })) - .then(function(userQueues) { - if (room) { - return { - include: { - model: models.ChatWebsite, - include: { - model: models.ChatApplication, - include: { - model: models.ChatQueue, - where: { - id: _.map(userQueues, 'id') - } - } - } - } - }; - } else { - var users = []; - userQueues.rows.forEach(function(queue) { - users = _.union(users, _.map(queue.Users, 'id')); - }); - return { - where: { - $or: { - queue: _.map(userQueues.rows, 'id'), - memberid: users - } - } - }; - } - }); - case 'agent': - return models.User - .findById(user.id, { - attributes: ['id'] - }) - .then(function(agent) { - return agent - .getChatQueues({ - attributes: ['id'] - }); - }) - .then(function(userQueues) { - return { - where: { - $or: { - queue: _.map(userQueues, 'id'), - memberid: user.id - } - } - }; - }); - default: - return {}; - } - } -} - -function getFaxQueues(user, room) { - return function() { - switch (user.role) { - case 'user': - return models.User - .findById(user.id, { - attributes: ['id'] - }) - .then(Util.getFaxQueuesIdByUser({}, { - attributes: ['id'], - include: [{ - raw: true, - model: models.User, - attributes: ['id'] - }] - })) - .then(function(userQueues) { - if (room) { - return { - include: { - model: models.FaxAccount, - include: { - model: models.FaxApplication, - include: { - model: models.FaxQueue, - where: { - id: _.map(userQueues, 'id') - } - } - } - } - }; - } else { - var users = []; - userQueues.rows.forEach(function(queue) { - users = _.union(users, _.map(queue.Users, 'id')); - }); - return { - where: { - $or: { - queue: _.map(userQueues.rows, 'id'), - memberid: users - } - } - }; - } - }); - case 'agent': - return models.User - .findById(user.id, { - attributes: ['id'] - }) - .then(function(agent) { - return agent - .getFaxQueues({ - attributes: ['id'] - }); - }) - .then(function(userQueues) { - return { - where: { - $or: { - queue: _.map(userQueues, 'id'), - memberid: user.id - } - } - }; - }); - default: - return {}; - } - } -} - -function getSmsQueues(user, room) { - return function() { - switch (user.role) { - case 'user': - return models.User - .findById(user.id, { - attributes: ['id'] - }) - .then(Util.getSmsQueuesIdByUser({}, { - attributes: ['id'], - include: [{ - raw: true, - model: models.User, - attributes: ['id'] - }] - })) - .then(function(userQueues) { - if (room) { - return { - include: { - model: models.SmsAccount, - include: { - model: models.SmsApplication, - include: { - model: models.SmsQueue, - where: { - id: _.map(userQueues, 'id') - } - } - } - } - }; - } else { - var users = []; - userQueues.rows.forEach(function(queue) { - users = _.union(users, _.map(queue.Users, 'id')); - }); - return { - where: { - $or: { - queue: _.map(userQueues.rows, 'id'), - memberid: users - } - } - }; - } - }); - case 'agent': - return models.User - .findById(user.id, { - attributes: ['id'] - }) - .then(function(agent) { - return agent - .getSmsQueues({ - attributes: ['id'] - }); - }) - .then(function(userQueues) { - return { - where: { - $or: { - queue: _.map(userQueues, 'id'), - memberid: user.id - } - } - }; - }); - default: - return {}; - } - } -} - -function getOpenchannelQueues(user, room) { - return function() { - switch (user.role) { - case 'user': - return models.User - .findById(user.id, { - attributes: ['id'] - }) - .then(Util.getOpenchannelQueuesIdByUser({}, { - attributes: ['id'], - include: [{ - raw: true, - model: models.User, - attributes: ['id'] - }] - })) - .then(function(userQueues) { - if (room) { - return { - include: { - model: models.OpenchannelAccount, - include: { - model: models.OpenchannelApplication, - include: { - model: models.OpenchannelQueue, - where: { - id: _.map(userQueues, 'id') - } - } - } - } - }; - } else { - var users = []; - userQueues.rows.forEach(function(queue) { - users = _.union(users, _.map(queue.Users, 'id')); - }); - return { - where: { - $or: { - queue: _.map(userQueues.rows, 'id'), - memberid: users - } - } - }; - } - }); - case 'agent': - return models.User - .findById(user.id, { - attributes: ['id'] - }) - .then(function(agent) { - return agent - .getOpenchannelQueues({ - attributes: ['id'] - }); - }) - .then(function(userQueues) { - return { - where: { - $or: { - queue: _.map(userQueues, 'id'), - memberid: user.id - } - } - }; - }); - default: - return {}; - } - } -} - - -// Get Open mails -function onOpenMail(socket, doc) { - return Promise - .all([]) - .then(getMailQueues(socket, true)) - .then(function(condition) { - return models.MailRoom - .count(_.merge({ - where: { - status: 'OPEN', - updatedAt: { - $gte: moment().startOf('day') - } - } - }, condition)); - }) - .then(function(data) { - socket.emit('report_mail_dashboard:open', { - value: data - }); - }) - .catch(function(err) { - console.error(err); - }); -} - -// Get closed mails -function onClosedMail(socket, doc) { - return Promise - .all([]) - .then(getMailQueues(socket, true)) - .then(function(condition) { - return models.MailRoom - .count(_.merge({ - where: { - status: 'CLOSED', - updatedAt: { - $gte: moment().startOf('day') - } - } - }, condition)); - }) - .then(function(data) { - socket.emit('report_mail_dashboard:closed', { - value: data - }); - }) - .catch(function(err) { - console.error(err); - }); -} - -// Get new mails -function onNewMail(socket, doc) { - return Promise - .all([]) - .then(getMailQueues(socket, true)) - .then(function(condition) { - return models.MailRoom - .count(_.merge({ - where: { - status: 'NEW', - updatedAt: { - $gte: moment().startOf('day') - } - } - }, condition)); - }) - .then(function(data) { - socket.emit('report_mail_dashboard:new', { - value: data - }); - }) - .catch(function(err) { - console.error(err); - }); -} - -// Get new mails -function onWaitingMail(socket, doc) { - return Promise - .all([]) - .then(getMailQueues(socket)) - .then(function(condition) { - return models.ReportMailSession - .count(_.merge({ - where: { - leaveAt: null - } - }, condition)); - }) - .then(function(data) { - socket.emit('report_mail_dashboard:waiting', { - value: data - }); - }) - .catch(function(err) { - console.error(err); - }); -} - -// Get timeout mails -function onTimeoutMail(socket, doc) { - return Promise - .all([]) - .then(getMailQueues(socket)) - .then(function(condition) { - return models.ReportMailSession - .count(_.merge({ - where: { - timeout: true - } - }, condition)); - }) - .then(function(data) { - socket.emit('report_mail_dashboard:timeout', { - value: data - }); - }) - .catch(function(err) { - console.error(err); - }); -} - -function onPendingMail(socket, doc) { - return Promise - .all([]) - .then(getMailQueues(socket, true)) - .then(function(condition) { - return models.MailRoom - .count(_.merge({ - where: { - status: 'PENDING', - updatedAt: { - $gte: moment().startOf('day') - } - } - }, condition)); - }) - .then(function(data) { - socket.emit('report_mail_dashboard:pending', { - value: data - }); - }) - .catch(function(err) { - console.error(err); - }); -} - -// Get Open chat -function onOpenChat(socket, doc) { - return Promise - .all([]) - .then(getChatQueues(socket, true)) - .then(function(condition) { - return models.ReportChatSession - .count(_.merge({ - where: { - leaveAt: { - $ne: null - }, - complete: null, - timeout: null - } - }, condition)); - }) - .then(function(data) { - socket.emit('report_chat_dashboard:open', { - value: data - }); - }) - .catch(function(err) { - console.error(err); - }); -} - -// Get closed chat -function onClosedChat(socket, doc) { - return Promise - .all([]) - .then(getChatQueues(socket)) - .then(function(condition) { - return models.ReportChatSession - .count(_.merge({ - where: { - complete: true - } - }, condition)); - }) - .then(function(data) { - socket.emit('report_chat_dashboard:closed', { - value: data - }); - }) - .catch(function(err) { - console.error(err); - }); -} - -// Get new chat -function onNewChat(socket, doc) { - return Promise - .all([]) - .then(getChatQueues(socket)) - .then(function(condition) { - return models.ReportChatSession - .count(_.merge({ - where: { - leaveAt: null - } - }, condition)); - }) - .then(function(data) { - socket.emit('report_chat_dashboard:new', { - value: data - }); - }) - .catch(function(err) { - console.error(err); - }); -} - -// Get timeout chat -function onTimeoutChat(socket, doc) { - return Promise - .all([]) - .then(getChatQueues(socket)) - .then(function(condition) { - return models.ReportChatSession - .count(_.merge({ - where: { - timeout: true - } - }, condition)); - }) - .then(function(data) { - socket.emit('report_chat_dashboard:timeout', { - value: data - }); - }) - .catch(function(err) { - console.error(err); - }); -} - -// Get abandoned chat -function onAbandonedChat(socket, doc) { - return Promise - .all([]) - .then(getChatQueues(socket)) - .then(function(condition) { - return models.ReportChatSession - .count(_.merge({ - where: { - abandon: true - } - }, condition)); - }) - .then(function(data) { - socket.emit('report_chat_dashboard:abandoned', { - value: data - }); - }) - .catch(function(err) { - console.error(err); - }); -} - -function onUnmanagedChat(socket, doc) { - return Promise - .all([]) - .then(getChatQueues(socket, true)) - .then(function(condition) { - return models.ChatRoom - .count(_.merge({ - where: { - status: 'UNMANAGED', - updatedAt: { - $gte: moment().startOf('day') - } - } - }, condition)); - }) - .then(function(data) { - socket.emit('report_chat_dashboard:unmanaged', { - value: data - }); - }) - .catch(function(err) { - console.error(err); - }); -} - -// Get Open fax -function onOpenFax(socket, doc) { - return Promise - .all([]) - .then(getFaxQueues(socket, true)) - .then(function(condition) { - return models.FaxRoom - .count(_.merge({ - where: { - status: 'OPEN', - updatedAt: { - $gte: moment().startOf('day') - } - } - }, condition)); - }) - .then(function(data) { - socket.emit('report_fax_dashboard:open', { - value: data - }); - }) - .catch(function(err) { - console.error(err); - }); -} - -// Get closed fax -function onClosedFax(socket, doc) { - return Promise - .all([]) - .then(getFaxQueues(socket, true)) - .then(function(condition) { - return models.FaxRoom - .count(_.merge({ - where: { - status: 'CLOSED', - updatedAt: { - $gte: moment().startOf('day') - } - } - }, condition)); - }) - .then(function(data) { - socket.emit('report_fax_dashboard:closed', { - value: data - }); - }) - .catch(function(err) { - console.error(err); - }); -} - -// Get new fax -function onNewFax(socket, doc) { - return Promise - .all([]) - .then(getFaxQueues(socket, true)) - .then(function(condition) { - return models.FaxRoom - .count(_.merge({ - where: { - status: 'NEW', - updatedAt: { - $gte: moment().startOf('day') - } - } - }, condition)); - }) - .then(function(data) { - socket.emit('report_fax_dashboard:new', { - value: data - }); - }) - .catch(function(err) { - console.error(err); - }); -} - -// Get timeout fax -function onTimeoutFax(socket, doc) { - return Promise - .all([]) - .then(getFaxQueues(socket)) - .then(function(condition) { - return models.ReportFaxSession - .count(_.merge({ - where: { - timeout: true - } - }, condition)); - }) - .then(function(data) { - socket.emit('report_fax_dashboard:timeout', { - value: data - }); - }) - .catch(function(err) { - console.error(err); - }); -} - -function onPendingFax(socket, doc) { - return Promise - .all([]) - .then(getFaxQueues(socket, true)) - .then(function(condition) { - return models.FaxRoom - .count(_.merge({ - where: { - status: 'PENDING', - updatedAt: { - $gte: moment().startOf('day') - } - } - }, condition)); - }) - .then(function(data) { - socket.emit('report_fax_dashboard:pending', { - value: data - }); - }) - .catch(function(err) { - console.error(err); - }); -} - -function onWaitingFax(socket, doc) { - return Promise - .all([]) - .then(getFaxQueues(socket, true)) - .then(function(condition) { - return models.ReportFaxSession - .count(_.merge({ - where: { - leaveAt: true - } - }, condition)); - }) - .then(function(data) { - socket.emit('report_fax_dashboard:waiting', { - value: data - }); - }) - .catch(function(err) { - console.error(err); - }); -} - -// Get Open sms -function onOpenSms(socket, doc) { - return Promise - .all([]) - .then(getSmsQueues(socket, true)) - .then(function(condition) { - return models.SmsRoom - .count(_.merge({ - where: { - status: 'OPEN', - updatedAt: { - $gte: moment().startOf('day') - } - } - }, condition)); - }) - .then(function(data) { - socket.emit('report_sms_dashboard:open', { - value: data - }); - }) - .catch(function(err) { - console.error(err); - }); -} - -// Get closed sms -function onClosedSms(socket, doc) { - return Promise - .all([]) - .then(getSmsQueues(socket, true)) - .then(function(condition) { - return models.SmsRoom - .count(_.merge({ - where: { - status: 'CLOSED', - updatedAt: { - $gte: moment().startOf('day') - } - } - }, condition)); - }) - .then(function(data) { - socket.emit('report_sms_dashboard:closed', { - value: data - }); - }) - .catch(function(err) { - console.error(err); - }); -} - -// Get new sms -function onNewSms(socket, doc) { - return Promise - .all([]) - .then(getSmsQueues(socket, true)) - .then(function(condition) { - return models.SmsRoom - .count(_.merge({ - where: { - status: 'NEW', - updatedAt: { - $gte: moment().startOf('day') - } - } - }, condition)); - }) - .then(function(data) { - socket.emit('report_sms_dashboard:new', { - value: data - }); - }) - .catch(function(err) { - console.error(err); - }); -} - -// Get timeout sms -function onTimeoutSms(socket, doc) { - return Promise - .all([]) - .then(getSmsQueues(socket)) - .then(function(condition) { - return models.ReportSmsSession - .count(_.merge({ - where: { - timeout: true - } - }, condition)); - }) - .then(function(data) { - socket.emit('report_sms_dashboard:timeout', { - value: data - }); - }) - .catch(function(err) { - console.error(err); - }); -} - -function onPendingSms(socket, doc) { - return Promise - .all([]) - .then(getSmsQueues(socket, true)) - .then(function(condition) { - return models.SmsRoom - .count(_.merge({ - where: { - status: 'PENDING', - updatedAt: { - $gte: moment().startOf('day') - } - } - }, condition)); - }) - .then(function(data) { - socket.emit('report_sms_dashboard:pending', { - value: data - }); - }) - .catch(function(err) { - console.error(err); - }); -} - -function onWaitingSms(socket, doc) { - return Promise - .all([]) - .then(getSmsQueues(socket)) - .then(function(condition) { - return models.ReportSmsSession - .count(_.merge({ - where: { - leaveAt: null - } - }, condition)); - }) - .then(function(data) { - socket.emit('report_sms_dashboard:pending', { - value: data - }); - }) - .catch(function(err) { - console.error(err); - }); -} - -// Get Open openchannel -function onOpenOpenchannel(socket, doc) { - return Promise - .all([]) - .then(getOpenchannelQueues(socket, true)) - .then(function(condition) { - return models.OpenchannelRoom - .count(_.merge({ - where: { - status: 'OPEN', - updatedAt: { - $gte: moment().startOf('day') - } - } - }, condition)); - }) - .then(function(data) { - socket.emit('report_openchannel_dashboard:open', { - value: data - }); - }) - .catch(function(err) { - console.error(err); - }); -} - -// Get closed openchannel -function onClosedOpenchannel(socket, doc) { - return Promise - .all([]) - .then(getOpenchannelQueues(socket, true)) - .then(function(condition) { - return models.OpenchannelRoom - .count(_.merge({ - where: { - status: 'CLOSED', - updatedAt: { - $gte: moment().startOf('day') - } - } - }, condition)); - }) - .then(function(data) { - socket.emit('report_openchannel_dashboard:closed', { - value: data - }); - }) - .catch(function(err) { - console.error(err); - }); -} - -// Get new openchannel -function onNewOpenchannel(socket, doc) { - return Promise - .all([]) - .then(getOpenchannelQueues(socket, true)) - .then(function(condition) { - return models.OpenchannelRoom - .count(_.merge({ - where: { - status: 'NEW', - updatedAt: { - $gte: moment().startOf('day') - } - } - }, condition)); - }) - .then(function(data) { - socket.emit('report_openchannel_dashboard:new', { - value: data - }); - }) - .catch(function(err) { - console.error(err); - }); -} - -// Get timeout openchannel -function onTimeoutOpenchannel(socket, doc) { - return Promise - .all([]) - .then(getOpenchannelQueues(socket)) - .then(function(condition) { - return models.ReportOpenchannelSession - .count(_.merge({ - where: { - timeout: true - } - }, condition)); - }) - .then(function(data) { - socket.emit('report_openchannel_dashboard:timeout', { - value: data - }); - }) - .catch(function(err) { - console.error(err); - }); -} - -function onPendingOpenchannel(socket, doc) { - return Promise - .all([]) - .then(getOpenchannelQueues(socket, true)) - .then(function(condition) { - return models.OpenchannelRoom - .count(_.merge({ - where: { - status: 'PENDING', - updatedAt: { - $gte: moment().startOf('day') - } - } - }, condition)); - }) - .then(function(data) { - socket.emit('report_openchannel_dashboard:pending', { - value: data - }); - }) - .catch(function(err) { - console.error(err); - }); -} - -function onWaitingOpenchannel(socket, doc) { - return Promise - .all([]) - .then(getOpenchannelQueues(socket)) - .then(function(condition) { - return models.ReportOpenchannelSession - .count(_.merge({ - where: { - leaveAt: null - } - }, condition)); - }) - .then(function(data) { - socket.emit('report_openchannel_dashboard:pending', { - value: data - }); - }) - .catch(function(err) { - console.error(err); - }); -} +var _0x5669=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x6C\x6F\x64\x61\x73\x68","\x6D\x6F\x6D\x65\x6E\x74","\x62\x6C\x75\x65\x62\x69\x72\x64","\x72\x65\x67\x69\x73\x74\x65\x72","\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x52\x65\x70\x6F\x72\x74\x4D\x61\x69\x6C\x53\x65\x73\x73\x69\x6F\x6E","\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x4D\x61\x69\x6C\x52\x6F\x6F\x6D","\x52\x65\x70\x6F\x72\x74\x43\x68\x61\x74\x53\x65\x73\x73\x69\x6F\x6E","\x43\x68\x61\x74\x52\x6F\x6F\x6D","\x52\x65\x70\x6F\x72\x74\x46\x61\x78\x53\x65\x73\x73\x69\x6F\x6E","\x46\x61\x78\x52\x6F\x6F\x6D","\x52\x65\x70\x6F\x72\x74\x53\x6D\x73\x53\x65\x73\x73\x69\x6F\x6E","\x53\x6D\x73\x52\x6F\x6F\x6D","\x52\x65\x70\x6F\x72\x74\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x53\x65\x73\x73\x69\x6F\x6E","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x52\x6F\x6F\x6D","\x4D\x61\x69\x6C\x41\x63\x63\x6F\x75\x6E\x74","\x4D\x61\x69\x6C\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x4D\x61\x69\x6C\x51\x75\x65\x75\x65","\x69\x64","\x6D\x61\x70","\x75\x6E\x69\x6F\x6E","\x66\x6F\x72\x45\x61\x63\x68","\x72\x6F\x77\x73","\x74\x68\x65\x6E","\x55\x73\x65\x72","\x67\x65\x74\x4D\x61\x69\x6C\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x66\x69\x6E\x64\x42\x79\x49\x64","\x75\x73\x65\x72","\x67\x65\x74\x4D\x61\x69\x6C\x51\x75\x65\x75\x65\x73","\x61\x67\x65\x6E\x74","\x72\x6F\x6C\x65","\x43\x68\x61\x74\x57\x65\x62\x73\x69\x74\x65","\x43\x68\x61\x74\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x43\x68\x61\x74\x51\x75\x65\x75\x65","\x67\x65\x74\x43\x68\x61\x74\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x67\x65\x74\x43\x68\x61\x74\x51\x75\x65\x75\x65\x73","\x46\x61\x78\x41\x63\x63\x6F\x75\x6E\x74","\x46\x61\x78\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x46\x61\x78\x51\x75\x65\x75\x65","\x67\x65\x74\x46\x61\x78\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x67\x65\x74\x46\x61\x78\x51\x75\x65\x75\x65\x73","\x53\x6D\x73\x41\x63\x63\x6F\x75\x6E\x74","\x53\x6D\x73\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x53\x6D\x73\x51\x75\x65\x75\x65","\x67\x65\x74\x53\x6D\x73\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x67\x65\x74\x53\x6D\x73\x51\x75\x65\x75\x65\x73","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x41\x63\x63\x6F\x75\x6E\x74","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65","\x67\x65\x74\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x67\x65\x74\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65\x73","\x65\x72\x72\x6F\x72","\x63\x61\x74\x63\x68","\x72\x65\x70\x6F\x72\x74\x5F\x6D\x61\x69\x6C\x5F\x64\x61\x73\x68\x62\x6F\x61\x72\x64\x3A\x6F\x70\x65\x6E","\x65\x6D\x69\x74","\x4F\x50\x45\x4E","\x64\x61\x79","\x73\x74\x61\x72\x74\x4F\x66","\x6D\x65\x72\x67\x65","\x63\x6F\x75\x6E\x74","\x61\x6C\x6C","\x72\x65\x70\x6F\x72\x74\x5F\x6D\x61\x69\x6C\x5F\x64\x61\x73\x68\x62\x6F\x61\x72\x64\x3A\x63\x6C\x6F\x73\x65\x64","\x43\x4C\x4F\x53\x45\x44","\x72\x65\x70\x6F\x72\x74\x5F\x6D\x61\x69\x6C\x5F\x64\x61\x73\x68\x62\x6F\x61\x72\x64\x3A\x6E\x65\x77","\x4E\x45\x57","\x72\x65\x70\x6F\x72\x74\x5F\x6D\x61\x69\x6C\x5F\x64\x61\x73\x68\x62\x6F\x61\x72\x64\x3A\x77\x61\x69\x74\x69\x6E\x67","\x72\x65\x70\x6F\x72\x74\x5F\x6D\x61\x69\x6C\x5F\x64\x61\x73\x68\x62\x6F\x61\x72\x64\x3A\x74\x69\x6D\x65\x6F\x75\x74","\x72\x65\x70\x6F\x72\x74\x5F\x6D\x61\x69\x6C\x5F\x64\x61\x73\x68\x62\x6F\x61\x72\x64\x3A\x70\x65\x6E\x64\x69\x6E\x67","\x50\x45\x4E\x44\x49\x4E\x47","\x72\x65\x70\x6F\x72\x74\x5F\x63\x68\x61\x74\x5F\x64\x61\x73\x68\x62\x6F\x61\x72\x64\x3A\x6F\x70\x65\x6E","\x72\x65\x70\x6F\x72\x74\x5F\x63\x68\x61\x74\x5F\x64\x61\x73\x68\x62\x6F\x61\x72\x64\x3A\x63\x6C\x6F\x73\x65\x64","\x72\x65\x70\x6F\x72\x74\x5F\x63\x68\x61\x74\x5F\x64\x61\x73\x68\x62\x6F\x61\x72\x64\x3A\x6E\x65\x77","\x72\x65\x70\x6F\x72\x74\x5F\x63\x68\x61\x74\x5F\x64\x61\x73\x68\x62\x6F\x61\x72\x64\x3A\x74\x69\x6D\x65\x6F\x75\x74","\x72\x65\x70\x6F\x72\x74\x5F\x63\x68\x61\x74\x5F\x64\x61\x73\x68\x62\x6F\x61\x72\x64\x3A\x61\x62\x61\x6E\x64\x6F\x6E\x65\x64","\x72\x65\x70\x6F\x72\x74\x5F\x63\x68\x61\x74\x5F\x64\x61\x73\x68\x62\x6F\x61\x72\x64\x3A\x75\x6E\x6D\x61\x6E\x61\x67\x65\x64","\x55\x4E\x4D\x41\x4E\x41\x47\x45\x44","\x72\x65\x70\x6F\x72\x74\x5F\x66\x61\x78\x5F\x64\x61\x73\x68\x62\x6F\x61\x72\x64\x3A\x6F\x70\x65\x6E","\x72\x65\x70\x6F\x72\x74\x5F\x66\x61\x78\x5F\x64\x61\x73\x68\x62\x6F\x61\x72\x64\x3A\x63\x6C\x6F\x73\x65\x64","\x72\x65\x70\x6F\x72\x74\x5F\x66\x61\x78\x5F\x64\x61\x73\x68\x62\x6F\x61\x72\x64\x3A\x6E\x65\x77","\x72\x65\x70\x6F\x72\x74\x5F\x66\x61\x78\x5F\x64\x61\x73\x68\x62\x6F\x61\x72\x64\x3A\x74\x69\x6D\x65\x6F\x75\x74","\x72\x65\x70\x6F\x72\x74\x5F\x66\x61\x78\x5F\x64\x61\x73\x68\x62\x6F\x61\x72\x64\x3A\x70\x65\x6E\x64\x69\x6E\x67","\x72\x65\x70\x6F\x72\x74\x5F\x66\x61\x78\x5F\x64\x61\x73\x68\x62\x6F\x61\x72\x64\x3A\x77\x61\x69\x74\x69\x6E\x67","\x72\x65\x70\x6F\x72\x74\x5F\x73\x6D\x73\x5F\x64\x61\x73\x68\x62\x6F\x61\x72\x64\x3A\x6F\x70\x65\x6E","\x72\x65\x70\x6F\x72\x74\x5F\x73\x6D\x73\x5F\x64\x61\x73\x68\x62\x6F\x61\x72\x64\x3A\x63\x6C\x6F\x73\x65\x64","\x72\x65\x70\x6F\x72\x74\x5F\x73\x6D\x73\x5F\x64\x61\x73\x68\x62\x6F\x61\x72\x64\x3A\x6E\x65\x77","\x72\x65\x70\x6F\x72\x74\x5F\x73\x6D\x73\x5F\x64\x61\x73\x68\x62\x6F\x61\x72\x64\x3A\x74\x69\x6D\x65\x6F\x75\x74","\x72\x65\x70\x6F\x72\x74\x5F\x73\x6D\x73\x5F\x64\x61\x73\x68\x62\x6F\x61\x72\x64\x3A\x70\x65\x6E\x64\x69\x6E\x67","\x72\x65\x70\x6F\x72\x74\x5F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x64\x61\x73\x68\x62\x6F\x61\x72\x64\x3A\x6F\x70\x65\x6E","\x72\x65\x70\x6F\x72\x74\x5F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x64\x61\x73\x68\x62\x6F\x61\x72\x64\x3A\x63\x6C\x6F\x73\x65\x64","\x72\x65\x70\x6F\x72\x74\x5F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x64\x61\x73\x68\x62\x6F\x61\x72\x64\x3A\x6E\x65\x77","\x72\x65\x70\x6F\x72\x74\x5F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x64\x61\x73\x68\x62\x6F\x61\x72\x64\x3A\x74\x69\x6D\x65\x6F\x75\x74","\x72\x65\x70\x6F\x72\x74\x5F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x64\x61\x73\x68\x62\x6F\x61\x72\x64\x3A\x70\x65\x6E\x64\x69\x6E\x67"];_0x5669[0];var sequelize=require(_0x5669[2])[_0x5669[1]];var models=require(_0x5669[2]);var Util=require(_0x5669[3]);var _=require(_0x5669[4]);var moment=require(_0x5669[5]);var Promise=require(_0x5669[6]);exports[_0x5669[7]]= function(_0xe31dx7){models[_0x5669[9]][_0x5669[8]](function(_0xe31dx8){_0xe31dx9(_0xe31dx8)});models[_0x5669[9]][_0x5669[10]](function(_0xe31dx8){_0xe31dx9(_0xe31dx8)});models[_0x5669[11]][_0x5669[8]](function(_0xe31dx8){_0xe31dx9(_0xe31dx8)});models[_0x5669[11]][_0x5669[10]](function(_0xe31dx8){_0xe31dx9(_0xe31dx8)});function _0xe31dx9(_0xe31dx8){onNewMail(_0xe31dx7,_0xe31dx8);onOpenMail(_0xe31dx7,_0xe31dx8);onClosedMail(_0xe31dx7,_0xe31dx8);onTimeoutMail(_0xe31dx7,_0xe31dx8);onPendingMail(_0xe31dx7,_0xe31dx8);onWaitingMail(_0xe31dx7,_0xe31dx8)}models[_0x5669[12]][_0x5669[8]](function(_0xe31dx8){_0xe31dxa(_0xe31dx8)});models[_0x5669[12]][_0x5669[10]](function(_0xe31dx8){_0xe31dxa(_0xe31dx8)});models[_0x5669[13]][_0x5669[8]](function(_0xe31dx8){_0xe31dxa(_0xe31dx8)});models[_0x5669[13]][_0x5669[10]](function(_0xe31dx8){_0xe31dxa(_0xe31dx8)});function _0xe31dxa(_0xe31dx8){onNewChat(_0xe31dx7,_0xe31dx8);onOpenChat(_0xe31dx7,_0xe31dx8);onClosedChat(_0xe31dx7,_0xe31dx8);onTimeoutChat(_0xe31dx7,_0xe31dx8);onAbandonedChat(_0xe31dx7,_0xe31dx8);onUnmanagedChat(_0xe31dx7,_0xe31dx8)}models[_0x5669[14]][_0x5669[8]](function(_0xe31dx8){_0xe31dxb(_0xe31dx8)});models[_0x5669[14]][_0x5669[10]](function(_0xe31dx8){_0xe31dxb(_0xe31dx8)});models[_0x5669[15]][_0x5669[8]](function(_0xe31dx8){_0xe31dxb(_0xe31dx8)});models[_0x5669[15]][_0x5669[10]](function(_0xe31dx8){_0xe31dxb(_0xe31dx8)});function _0xe31dxb(_0xe31dx8){onNewFax(_0xe31dx7,_0xe31dx8);onOpenFax(_0xe31dx7,_0xe31dx8);onClosedFax(_0xe31dx7,_0xe31dx8);onTimeoutFax(_0xe31dx7,_0xe31dx8);onPendingFax(_0xe31dx7,_0xe31dx8);onWaitingFax(_0xe31dx7,_0xe31dx8)}models[_0x5669[16]][_0x5669[8]](function(_0xe31dx8){_0xe31dxc(_0xe31dx8)});models[_0x5669[16]][_0x5669[10]](function(_0xe31dx8){_0xe31dxc(_0xe31dx8)});models[_0x5669[17]][_0x5669[8]](function(_0xe31dx8){_0xe31dxc(_0xe31dx8)});models[_0x5669[17]][_0x5669[10]](function(_0xe31dx8){_0xe31dxc(_0xe31dx8)});function _0xe31dxc(_0xe31dx8){onNewSms(_0xe31dx7,_0xe31dx8);onOpenSms(_0xe31dx7,_0xe31dx8);onClosedSms(_0xe31dx7,_0xe31dx8);onTimeoutSms(_0xe31dx7,_0xe31dx8);onPendingSms(_0xe31dx7,_0xe31dx8);onWaitingSms(_0xe31dx7,_0xe31dx8)}models[_0x5669[18]][_0x5669[8]](function(_0xe31dx8){_0xe31dxd(_0xe31dx8)});models[_0x5669[18]][_0x5669[10]](function(_0xe31dx8){_0xe31dxd(_0xe31dx8)});models[_0x5669[19]][_0x5669[8]](function(_0xe31dx8){_0xe31dxd(_0xe31dx8)});models[_0x5669[19]][_0x5669[10]](function(_0xe31dx8){_0xe31dxd(_0xe31dx8)});function _0xe31dxd(_0xe31dx8){onNewOpenchannel(_0xe31dx7,_0xe31dx8);onOpenOpenchannel(_0xe31dx7,_0xe31dx8);onClosedOpenchannel(_0xe31dx7,_0xe31dx8);onTimeoutOpenchannel(_0xe31dx7,_0xe31dx8);onPendingOpenchannel(_0xe31dx7,_0xe31dx8);onWaitingOpenchannel(_0xe31dx7,_0xe31dx8)}};function getMailQueues(_0xe31dxf,_0xe31dx10){return function(){switch(_0xe31dxf[_0x5669[35]]){case _0x5669[32]:return models[_0x5669[29]][_0x5669[31]](_0xe31dxf[_0x5669[23]],{attributes:[_0x5669[23]]})[_0x5669[28]](Util[_0x5669[30]]({},{attributes:[_0x5669[23]],include:[{raw:true,model:models[_0x5669[29]],attributes:[_0x5669[23]]}]}))[_0x5669[28]](function(_0xe31dx11){if(_0xe31dx10){return {include:{model:models[_0x5669[20]],include:{model:models[_0x5669[21]],include:{model:models[_0x5669[22]],where:{id:_[_0x5669[24]](_0xe31dx11,_0x5669[23])}}}}}}else {var _0xe31dx12=[];_0xe31dx11[_0x5669[27]][_0x5669[26]](function(_0xe31dx13){_0xe31dx12= _[_0x5669[25]](_0xe31dx12,_[_0x5669[24]](_0xe31dx13.Users,_0x5669[23]))});return {where:{$or:{queue:_[_0x5669[24]](_0xe31dx11[_0x5669[27]],_0x5669[23]),memberid:_0xe31dx12}}}}});case _0x5669[34]:return models[_0x5669[29]][_0x5669[31]](_0xe31dxf[_0x5669[23]],{attributes:[_0x5669[23]]})[_0x5669[28]](function(_0xe31dx14){return _0xe31dx14[_0x5669[33]]({attributes:[_0x5669[23]]})})[_0x5669[28]](function(_0xe31dx11){return {where:{$or:{queue:_[_0x5669[24]](_0xe31dx11,_0x5669[23]),memberid:_0xe31dxf[_0x5669[23]]}}}});default:return {}}}}function getChatQueues(_0xe31dxf,_0xe31dx10){return function(){switch(_0xe31dxf[_0x5669[35]]){case _0x5669[32]:return models[_0x5669[29]][_0x5669[31]](_0xe31dxf[_0x5669[23]],{attributes:[_0x5669[23]]})[_0x5669[28]](Util[_0x5669[39]]({},{attributes:[_0x5669[23]],include:[{raw:true,model:models[_0x5669[29]],attributes:[_0x5669[23]]}]}))[_0x5669[28]](function(_0xe31dx11){if(_0xe31dx10){return {include:{model:models[_0x5669[36]],include:{model:models[_0x5669[37]],include:{model:models[_0x5669[38]],where:{id:_[_0x5669[24]](_0xe31dx11,_0x5669[23])}}}}}}else {var _0xe31dx12=[];_0xe31dx11[_0x5669[27]][_0x5669[26]](function(_0xe31dx13){_0xe31dx12= _[_0x5669[25]](_0xe31dx12,_[_0x5669[24]](_0xe31dx13.Users,_0x5669[23]))});return {where:{$or:{queue:_[_0x5669[24]](_0xe31dx11[_0x5669[27]],_0x5669[23]),memberid:_0xe31dx12}}}}});case _0x5669[34]:return models[_0x5669[29]][_0x5669[31]](_0xe31dxf[_0x5669[23]],{attributes:[_0x5669[23]]})[_0x5669[28]](function(_0xe31dx14){return _0xe31dx14[_0x5669[40]]({attributes:[_0x5669[23]]})})[_0x5669[28]](function(_0xe31dx11){return {where:{$or:{queue:_[_0x5669[24]](_0xe31dx11,_0x5669[23]),memberid:_0xe31dxf[_0x5669[23]]}}}});default:return {}}}}function getFaxQueues(_0xe31dxf,_0xe31dx10){return function(){switch(_0xe31dxf[_0x5669[35]]){case _0x5669[32]:return models[_0x5669[29]][_0x5669[31]](_0xe31dxf[_0x5669[23]],{attributes:[_0x5669[23]]})[_0x5669[28]](Util[_0x5669[44]]({},{attributes:[_0x5669[23]],include:[{raw:true,model:models[_0x5669[29]],attributes:[_0x5669[23]]}]}))[_0x5669[28]](function(_0xe31dx11){if(_0xe31dx10){return {include:{model:models[_0x5669[41]],include:{model:models[_0x5669[42]],include:{model:models[_0x5669[43]],where:{id:_[_0x5669[24]](_0xe31dx11,_0x5669[23])}}}}}}else {var _0xe31dx12=[];_0xe31dx11[_0x5669[27]][_0x5669[26]](function(_0xe31dx13){_0xe31dx12= _[_0x5669[25]](_0xe31dx12,_[_0x5669[24]](_0xe31dx13.Users,_0x5669[23]))});return {where:{$or:{queue:_[_0x5669[24]](_0xe31dx11[_0x5669[27]],_0x5669[23]),memberid:_0xe31dx12}}}}});case _0x5669[34]:return models[_0x5669[29]][_0x5669[31]](_0xe31dxf[_0x5669[23]],{attributes:[_0x5669[23]]})[_0x5669[28]](function(_0xe31dx14){return _0xe31dx14[_0x5669[45]]({attributes:[_0x5669[23]]})})[_0x5669[28]](function(_0xe31dx11){return {where:{$or:{queue:_[_0x5669[24]](_0xe31dx11,_0x5669[23]),memberid:_0xe31dxf[_0x5669[23]]}}}});default:return {}}}}function getSmsQueues(_0xe31dxf,_0xe31dx10){return function(){switch(_0xe31dxf[_0x5669[35]]){case _0x5669[32]:return models[_0x5669[29]][_0x5669[31]](_0xe31dxf[_0x5669[23]],{attributes:[_0x5669[23]]})[_0x5669[28]](Util[_0x5669[49]]({},{attributes:[_0x5669[23]],include:[{raw:true,model:models[_0x5669[29]],attributes:[_0x5669[23]]}]}))[_0x5669[28]](function(_0xe31dx11){if(_0xe31dx10){return {include:{model:models[_0x5669[46]],include:{model:models[_0x5669[47]],include:{model:models[_0x5669[48]],where:{id:_[_0x5669[24]](_0xe31dx11,_0x5669[23])}}}}}}else {var _0xe31dx12=[];_0xe31dx11[_0x5669[27]][_0x5669[26]](function(_0xe31dx13){_0xe31dx12= _[_0x5669[25]](_0xe31dx12,_[_0x5669[24]](_0xe31dx13.Users,_0x5669[23]))});return {where:{$or:{queue:_[_0x5669[24]](_0xe31dx11[_0x5669[27]],_0x5669[23]),memberid:_0xe31dx12}}}}});case _0x5669[34]:return models[_0x5669[29]][_0x5669[31]](_0xe31dxf[_0x5669[23]],{attributes:[_0x5669[23]]})[_0x5669[28]](function(_0xe31dx14){return _0xe31dx14[_0x5669[50]]({attributes:[_0x5669[23]]})})[_0x5669[28]](function(_0xe31dx11){return {where:{$or:{queue:_[_0x5669[24]](_0xe31dx11,_0x5669[23]),memberid:_0xe31dxf[_0x5669[23]]}}}});default:return {}}}}function getOpenchannelQueues(_0xe31dxf,_0xe31dx10){return function(){switch(_0xe31dxf[_0x5669[35]]){case _0x5669[32]:return models[_0x5669[29]][_0x5669[31]](_0xe31dxf[_0x5669[23]],{attributes:[_0x5669[23]]})[_0x5669[28]](Util[_0x5669[54]]({},{attributes:[_0x5669[23]],include:[{raw:true,model:models[_0x5669[29]],attributes:[_0x5669[23]]}]}))[_0x5669[28]](function(_0xe31dx11){if(_0xe31dx10){return {include:{model:models[_0x5669[51]],include:{model:models[_0x5669[52]],include:{model:models[_0x5669[53]],where:{id:_[_0x5669[24]](_0xe31dx11,_0x5669[23])}}}}}}else {var _0xe31dx12=[];_0xe31dx11[_0x5669[27]][_0x5669[26]](function(_0xe31dx13){_0xe31dx12= _[_0x5669[25]](_0xe31dx12,_[_0x5669[24]](_0xe31dx13.Users,_0x5669[23]))});return {where:{$or:{queue:_[_0x5669[24]](_0xe31dx11[_0x5669[27]],_0x5669[23]),memberid:_0xe31dx12}}}}});case _0x5669[34]:return models[_0x5669[29]][_0x5669[31]](_0xe31dxf[_0x5669[23]],{attributes:[_0x5669[23]]})[_0x5669[28]](function(_0xe31dx14){return _0xe31dx14[_0x5669[55]]({attributes:[_0x5669[23]]})})[_0x5669[28]](function(_0xe31dx11){return {where:{$or:{queue:_[_0x5669[24]](_0xe31dx11,_0x5669[23]),memberid:_0xe31dxf[_0x5669[23]]}}}});default:return {}}}}function onOpenMail(_0xe31dx7,_0xe31dx8){return Promise[_0x5669[65]]([])[_0x5669[28]](getMailQueues(_0xe31dx7,true))[_0x5669[28]](function(_0xe31dx1c){return models[_0x5669[11]][_0x5669[64]](_[_0x5669[63]]({where:{status:_0x5669[60],updatedAt:{$gte:moment()[_0x5669[62]](_0x5669[61])}}},_0xe31dx1c))})[_0x5669[28]](function(_0xe31dx1b){_0xe31dx7[_0x5669[59]](_0x5669[58],{value:_0xe31dx1b})})[_0x5669[57]](function(_0xe31dx1a){console[_0x5669[56]](_0xe31dx1a)})}function onClosedMail(_0xe31dx7,_0xe31dx8){return Promise[_0x5669[65]]([])[_0x5669[28]](getMailQueues(_0xe31dx7,true))[_0x5669[28]](function(_0xe31dx1c){return models[_0x5669[11]][_0x5669[64]](_[_0x5669[63]]({where:{status:_0x5669[67],updatedAt:{$gte:moment()[_0x5669[62]](_0x5669[61])}}},_0xe31dx1c))})[_0x5669[28]](function(_0xe31dx1b){_0xe31dx7[_0x5669[59]](_0x5669[66],{value:_0xe31dx1b})})[_0x5669[57]](function(_0xe31dx1a){console[_0x5669[56]](_0xe31dx1a)})}function onNewMail(_0xe31dx7,_0xe31dx8){return Promise[_0x5669[65]]([])[_0x5669[28]](getMailQueues(_0xe31dx7,true))[_0x5669[28]](function(_0xe31dx1c){return models[_0x5669[11]][_0x5669[64]](_[_0x5669[63]]({where:{status:_0x5669[69],updatedAt:{$gte:moment()[_0x5669[62]](_0x5669[61])}}},_0xe31dx1c))})[_0x5669[28]](function(_0xe31dx1b){_0xe31dx7[_0x5669[59]](_0x5669[68],{value:_0xe31dx1b})})[_0x5669[57]](function(_0xe31dx1a){console[_0x5669[56]](_0xe31dx1a)})}function onWaitingMail(_0xe31dx7,_0xe31dx8){return Promise[_0x5669[65]]([])[_0x5669[28]](getMailQueues(_0xe31dx7))[_0x5669[28]](function(_0xe31dx1c){return models[_0x5669[9]][_0x5669[64]](_[_0x5669[63]]({where:{leaveAt:null}},_0xe31dx1c))})[_0x5669[28]](function(_0xe31dx1b){_0xe31dx7[_0x5669[59]](_0x5669[70],{value:_0xe31dx1b})})[_0x5669[57]](function(_0xe31dx1a){console[_0x5669[56]](_0xe31dx1a)})}function onTimeoutMail(_0xe31dx7,_0xe31dx8){return Promise[_0x5669[65]]([])[_0x5669[28]](getMailQueues(_0xe31dx7))[_0x5669[28]](function(_0xe31dx1c){return models[_0x5669[9]][_0x5669[64]](_[_0x5669[63]]({where:{timeout:true}},_0xe31dx1c))})[_0x5669[28]](function(_0xe31dx1b){_0xe31dx7[_0x5669[59]](_0x5669[71],{value:_0xe31dx1b})})[_0x5669[57]](function(_0xe31dx1a){console[_0x5669[56]](_0xe31dx1a)})}function onPendingMail(_0xe31dx7,_0xe31dx8){return Promise[_0x5669[65]]([])[_0x5669[28]](getMailQueues(_0xe31dx7,true))[_0x5669[28]](function(_0xe31dx1c){return models[_0x5669[11]][_0x5669[64]](_[_0x5669[63]]({where:{status:_0x5669[73],updatedAt:{$gte:moment()[_0x5669[62]](_0x5669[61])}}},_0xe31dx1c))})[_0x5669[28]](function(_0xe31dx1b){_0xe31dx7[_0x5669[59]](_0x5669[72],{value:_0xe31dx1b})})[_0x5669[57]](function(_0xe31dx1a){console[_0x5669[56]](_0xe31dx1a)})}function onOpenChat(_0xe31dx7,_0xe31dx8){return Promise[_0x5669[65]]([])[_0x5669[28]](getChatQueues(_0xe31dx7,true))[_0x5669[28]](function(_0xe31dx1c){return models[_0x5669[12]][_0x5669[64]](_[_0x5669[63]]({where:{leaveAt:{$ne:null},complete:null,timeout:null}},_0xe31dx1c))})[_0x5669[28]](function(_0xe31dx1b){_0xe31dx7[_0x5669[59]](_0x5669[74],{value:_0xe31dx1b})})[_0x5669[57]](function(_0xe31dx1a){console[_0x5669[56]](_0xe31dx1a)})}function onClosedChat(_0xe31dx7,_0xe31dx8){return Promise[_0x5669[65]]([])[_0x5669[28]](getChatQueues(_0xe31dx7))[_0x5669[28]](function(_0xe31dx1c){return models[_0x5669[12]][_0x5669[64]](_[_0x5669[63]]({where:{complete:true}},_0xe31dx1c))})[_0x5669[28]](function(_0xe31dx1b){_0xe31dx7[_0x5669[59]](_0x5669[75],{value:_0xe31dx1b})})[_0x5669[57]](function(_0xe31dx1a){console[_0x5669[56]](_0xe31dx1a)})}function onNewChat(_0xe31dx7,_0xe31dx8){return Promise[_0x5669[65]]([])[_0x5669[28]](getChatQueues(_0xe31dx7))[_0x5669[28]](function(_0xe31dx1c){return models[_0x5669[12]][_0x5669[64]](_[_0x5669[63]]({where:{leaveAt:null}},_0xe31dx1c))})[_0x5669[28]](function(_0xe31dx1b){_0xe31dx7[_0x5669[59]](_0x5669[76],{value:_0xe31dx1b})})[_0x5669[57]](function(_0xe31dx1a){console[_0x5669[56]](_0xe31dx1a)})}function onTimeoutChat(_0xe31dx7,_0xe31dx8){return Promise[_0x5669[65]]([])[_0x5669[28]](getChatQueues(_0xe31dx7))[_0x5669[28]](function(_0xe31dx1c){return models[_0x5669[12]][_0x5669[64]](_[_0x5669[63]]({where:{timeout:true}},_0xe31dx1c))})[_0x5669[28]](function(_0xe31dx1b){_0xe31dx7[_0x5669[59]](_0x5669[77],{value:_0xe31dx1b})})[_0x5669[57]](function(_0xe31dx1a){console[_0x5669[56]](_0xe31dx1a)})}function onAbandonedChat(_0xe31dx7,_0xe31dx8){return Promise[_0x5669[65]]([])[_0x5669[28]](getChatQueues(_0xe31dx7))[_0x5669[28]](function(_0xe31dx1c){return models[_0x5669[12]][_0x5669[64]](_[_0x5669[63]]({where:{abandon:true}},_0xe31dx1c))})[_0x5669[28]](function(_0xe31dx1b){_0xe31dx7[_0x5669[59]](_0x5669[78],{value:_0xe31dx1b})})[_0x5669[57]](function(_0xe31dx1a){console[_0x5669[56]](_0xe31dx1a)})}function onUnmanagedChat(_0xe31dx7,_0xe31dx8){return Promise[_0x5669[65]]([])[_0x5669[28]](getChatQueues(_0xe31dx7,true))[_0x5669[28]](function(_0xe31dx1c){return models[_0x5669[13]][_0x5669[64]](_[_0x5669[63]]({where:{status:_0x5669[80],updatedAt:{$gte:moment()[_0x5669[62]](_0x5669[61])}}},_0xe31dx1c))})[_0x5669[28]](function(_0xe31dx1b){_0xe31dx7[_0x5669[59]](_0x5669[79],{value:_0xe31dx1b})})[_0x5669[57]](function(_0xe31dx1a){console[_0x5669[56]](_0xe31dx1a)})}function onOpenFax(_0xe31dx7,_0xe31dx8){return Promise[_0x5669[65]]([])[_0x5669[28]](getFaxQueues(_0xe31dx7,true))[_0x5669[28]](function(_0xe31dx1c){return models[_0x5669[15]][_0x5669[64]](_[_0x5669[63]]({where:{status:_0x5669[60],updatedAt:{$gte:moment()[_0x5669[62]](_0x5669[61])}}},_0xe31dx1c))})[_0x5669[28]](function(_0xe31dx1b){_0xe31dx7[_0x5669[59]](_0x5669[81],{value:_0xe31dx1b})})[_0x5669[57]](function(_0xe31dx1a){console[_0x5669[56]](_0xe31dx1a)})}function onClosedFax(_0xe31dx7,_0xe31dx8){return Promise[_0x5669[65]]([])[_0x5669[28]](getFaxQueues(_0xe31dx7,true))[_0x5669[28]](function(_0xe31dx1c){return models[_0x5669[15]][_0x5669[64]](_[_0x5669[63]]({where:{status:_0x5669[67],updatedAt:{$gte:moment()[_0x5669[62]](_0x5669[61])}}},_0xe31dx1c))})[_0x5669[28]](function(_0xe31dx1b){_0xe31dx7[_0x5669[59]](_0x5669[82],{value:_0xe31dx1b})})[_0x5669[57]](function(_0xe31dx1a){console[_0x5669[56]](_0xe31dx1a)})}function onNewFax(_0xe31dx7,_0xe31dx8){return Promise[_0x5669[65]]([])[_0x5669[28]](getFaxQueues(_0xe31dx7,true))[_0x5669[28]](function(_0xe31dx1c){return models[_0x5669[15]][_0x5669[64]](_[_0x5669[63]]({where:{status:_0x5669[69],updatedAt:{$gte:moment()[_0x5669[62]](_0x5669[61])}}},_0xe31dx1c))})[_0x5669[28]](function(_0xe31dx1b){_0xe31dx7[_0x5669[59]](_0x5669[83],{value:_0xe31dx1b})})[_0x5669[57]](function(_0xe31dx1a){console[_0x5669[56]](_0xe31dx1a)})}function onTimeoutFax(_0xe31dx7,_0xe31dx8){return Promise[_0x5669[65]]([])[_0x5669[28]](getFaxQueues(_0xe31dx7))[_0x5669[28]](function(_0xe31dx1c){return models[_0x5669[14]][_0x5669[64]](_[_0x5669[63]]({where:{timeout:true}},_0xe31dx1c))})[_0x5669[28]](function(_0xe31dx1b){_0xe31dx7[_0x5669[59]](_0x5669[84],{value:_0xe31dx1b})})[_0x5669[57]](function(_0xe31dx1a){console[_0x5669[56]](_0xe31dx1a)})}function onPendingFax(_0xe31dx7,_0xe31dx8){return Promise[_0x5669[65]]([])[_0x5669[28]](getFaxQueues(_0xe31dx7,true))[_0x5669[28]](function(_0xe31dx1c){return models[_0x5669[15]][_0x5669[64]](_[_0x5669[63]]({where:{status:_0x5669[73],updatedAt:{$gte:moment()[_0x5669[62]](_0x5669[61])}}},_0xe31dx1c))})[_0x5669[28]](function(_0xe31dx1b){_0xe31dx7[_0x5669[59]](_0x5669[85],{value:_0xe31dx1b})})[_0x5669[57]](function(_0xe31dx1a){console[_0x5669[56]](_0xe31dx1a)})}function onWaitingFax(_0xe31dx7,_0xe31dx8){return Promise[_0x5669[65]]([])[_0x5669[28]](getFaxQueues(_0xe31dx7,true))[_0x5669[28]](function(_0xe31dx1c){return models[_0x5669[14]][_0x5669[64]](_[_0x5669[63]]({where:{leaveAt:true}},_0xe31dx1c))})[_0x5669[28]](function(_0xe31dx1b){_0xe31dx7[_0x5669[59]](_0x5669[86],{value:_0xe31dx1b})})[_0x5669[57]](function(_0xe31dx1a){console[_0x5669[56]](_0xe31dx1a)})}function onOpenSms(_0xe31dx7,_0xe31dx8){return Promise[_0x5669[65]]([])[_0x5669[28]](getSmsQueues(_0xe31dx7,true))[_0x5669[28]](function(_0xe31dx1c){return models[_0x5669[17]][_0x5669[64]](_[_0x5669[63]]({where:{status:_0x5669[60],updatedAt:{$gte:moment()[_0x5669[62]](_0x5669[61])}}},_0xe31dx1c))})[_0x5669[28]](function(_0xe31dx1b){_0xe31dx7[_0x5669[59]](_0x5669[87],{value:_0xe31dx1b})})[_0x5669[57]](function(_0xe31dx1a){console[_0x5669[56]](_0xe31dx1a)})}function onClosedSms(_0xe31dx7,_0xe31dx8){return Promise[_0x5669[65]]([])[_0x5669[28]](getSmsQueues(_0xe31dx7,true))[_0x5669[28]](function(_0xe31dx1c){return models[_0x5669[17]][_0x5669[64]](_[_0x5669[63]]({where:{status:_0x5669[67],updatedAt:{$gte:moment()[_0x5669[62]](_0x5669[61])}}},_0xe31dx1c))})[_0x5669[28]](function(_0xe31dx1b){_0xe31dx7[_0x5669[59]](_0x5669[88],{value:_0xe31dx1b})})[_0x5669[57]](function(_0xe31dx1a){console[_0x5669[56]](_0xe31dx1a)})}function onNewSms(_0xe31dx7,_0xe31dx8){return Promise[_0x5669[65]]([])[_0x5669[28]](getSmsQueues(_0xe31dx7,true))[_0x5669[28]](function(_0xe31dx1c){return models[_0x5669[17]][_0x5669[64]](_[_0x5669[63]]({where:{status:_0x5669[69],updatedAt:{$gte:moment()[_0x5669[62]](_0x5669[61])}}},_0xe31dx1c))})[_0x5669[28]](function(_0xe31dx1b){_0xe31dx7[_0x5669[59]](_0x5669[89],{value:_0xe31dx1b})})[_0x5669[57]](function(_0xe31dx1a){console[_0x5669[56]](_0xe31dx1a)})}function onTimeoutSms(_0xe31dx7,_0xe31dx8){return Promise[_0x5669[65]]([])[_0x5669[28]](getSmsQueues(_0xe31dx7))[_0x5669[28]](function(_0xe31dx1c){return models[_0x5669[16]][_0x5669[64]](_[_0x5669[63]]({where:{timeout:true}},_0xe31dx1c))})[_0x5669[28]](function(_0xe31dx1b){_0xe31dx7[_0x5669[59]](_0x5669[90],{value:_0xe31dx1b})})[_0x5669[57]](function(_0xe31dx1a){console[_0x5669[56]](_0xe31dx1a)})}function onPendingSms(_0xe31dx7,_0xe31dx8){return Promise[_0x5669[65]]([])[_0x5669[28]](getSmsQueues(_0xe31dx7,true))[_0x5669[28]](function(_0xe31dx1c){return models[_0x5669[17]][_0x5669[64]](_[_0x5669[63]]({where:{status:_0x5669[73],updatedAt:{$gte:moment()[_0x5669[62]](_0x5669[61])}}},_0xe31dx1c))})[_0x5669[28]](function(_0xe31dx1b){_0xe31dx7[_0x5669[59]](_0x5669[91],{value:_0xe31dx1b})})[_0x5669[57]](function(_0xe31dx1a){console[_0x5669[56]](_0xe31dx1a)})}function onWaitingSms(_0xe31dx7,_0xe31dx8){return Promise[_0x5669[65]]([])[_0x5669[28]](getSmsQueues(_0xe31dx7))[_0x5669[28]](function(_0xe31dx1c){return models[_0x5669[16]][_0x5669[64]](_[_0x5669[63]]({where:{leaveAt:null}},_0xe31dx1c))})[_0x5669[28]](function(_0xe31dx1b){_0xe31dx7[_0x5669[59]](_0x5669[91],{value:_0xe31dx1b})})[_0x5669[57]](function(_0xe31dx1a){console[_0x5669[56]](_0xe31dx1a)})}function onOpenOpenchannel(_0xe31dx7,_0xe31dx8){return Promise[_0x5669[65]]([])[_0x5669[28]](getOpenchannelQueues(_0xe31dx7,true))[_0x5669[28]](function(_0xe31dx1c){return models[_0x5669[19]][_0x5669[64]](_[_0x5669[63]]({where:{status:_0x5669[60],updatedAt:{$gte:moment()[_0x5669[62]](_0x5669[61])}}},_0xe31dx1c))})[_0x5669[28]](function(_0xe31dx1b){_0xe31dx7[_0x5669[59]](_0x5669[92],{value:_0xe31dx1b})})[_0x5669[57]](function(_0xe31dx1a){console[_0x5669[56]](_0xe31dx1a)})}function onClosedOpenchannel(_0xe31dx7,_0xe31dx8){return Promise[_0x5669[65]]([])[_0x5669[28]](getOpenchannelQueues(_0xe31dx7,true))[_0x5669[28]](function(_0xe31dx1c){return models[_0x5669[19]][_0x5669[64]](_[_0x5669[63]]({where:{status:_0x5669[67],updatedAt:{$gte:moment()[_0x5669[62]](_0x5669[61])}}},_0xe31dx1c))})[_0x5669[28]](function(_0xe31dx1b){_0xe31dx7[_0x5669[59]](_0x5669[93],{value:_0xe31dx1b})})[_0x5669[57]](function(_0xe31dx1a){console[_0x5669[56]](_0xe31dx1a)})}function onNewOpenchannel(_0xe31dx7,_0xe31dx8){return Promise[_0x5669[65]]([])[_0x5669[28]](getOpenchannelQueues(_0xe31dx7,true))[_0x5669[28]](function(_0xe31dx1c){return models[_0x5669[19]][_0x5669[64]](_[_0x5669[63]]({where:{status:_0x5669[69],updatedAt:{$gte:moment()[_0x5669[62]](_0x5669[61])}}},_0xe31dx1c))})[_0x5669[28]](function(_0xe31dx1b){_0xe31dx7[_0x5669[59]](_0x5669[94],{value:_0xe31dx1b})})[_0x5669[57]](function(_0xe31dx1a){console[_0x5669[56]](_0xe31dx1a)})}function onTimeoutOpenchannel(_0xe31dx7,_0xe31dx8){return Promise[_0x5669[65]]([])[_0x5669[28]](getOpenchannelQueues(_0xe31dx7))[_0x5669[28]](function(_0xe31dx1c){return models[_0x5669[18]][_0x5669[64]](_[_0x5669[63]]({where:{timeout:true}},_0xe31dx1c))})[_0x5669[28]](function(_0xe31dx1b){_0xe31dx7[_0x5669[59]](_0x5669[95],{value:_0xe31dx1b})})[_0x5669[57]](function(_0xe31dx1a){console[_0x5669[56]](_0xe31dx1a)})}function onPendingOpenchannel(_0xe31dx7,_0xe31dx8){return Promise[_0x5669[65]]([])[_0x5669[28]](getOpenchannelQueues(_0xe31dx7,true))[_0x5669[28]](function(_0xe31dx1c){return models[_0x5669[19]][_0x5669[64]](_[_0x5669[63]]({where:{status:_0x5669[73],updatedAt:{$gte:moment()[_0x5669[62]](_0x5669[61])}}},_0xe31dx1c))})[_0x5669[28]](function(_0xe31dx1b){_0xe31dx7[_0x5669[59]](_0x5669[96],{value:_0xe31dx1b})})[_0x5669[57]](function(_0xe31dx1a){console[_0x5669[56]](_0xe31dx1a)})}function onWaitingOpenchannel(_0xe31dx7,_0xe31dx8){return Promise[_0x5669[65]]([])[_0x5669[28]](getOpenchannelQueues(_0xe31dx7))[_0x5669[28]](function(_0xe31dx1c){return models[_0x5669[18]][_0x5669[64]](_[_0x5669[63]]({where:{leaveAt:null}},_0xe31dx1c))})[_0x5669[28]](function(_0xe31dx1b){_0xe31dx7[_0x5669[59]](_0x5669[96],{value:_0xe31dx1b})})[_0x5669[57]](function(_0xe31dx1a){console[_0x5669[56]](_0xe31dx1a)})} \ No newline at end of file diff --git a/server/config/tools/faxAccount.js b/server/config/tools/faxAccount.js index ccc342d..06401a9 100644 --- a/server/config/tools/faxAccount.js +++ b/server/config/tools/faxAccount.js @@ -1,257 +1 @@ -'use strict'; - -var util = require('util'); - -var VoiceExtension = require('../../models').VoiceExtension; -var FaxAccountModel = require('../../models').FaxAccount; -var sequelize = require('../../models').sequelize; -var veUtil = require('../../utils/voice_extension'); -var Promise = require('bluebird'); - -function FaxAccount() { - - FaxAccountModel.afterCreate(function(doc, options) { - var _exten = util.format('_%s', doc.localstationid); - var _accountId = doc.id; - var _description = util.format("Generated by Fax Channel - Account: %s", doc.name); - - var body = generateExtensionArray(doc); - var _route; - - return VoiceExtension - .create(body, { - transaction: options.transaction - }) - .then(function(route) { - _route = route; - return route; - }) - .then(veUtil.createApps(body.Applications, options.transaction)); - }); - - FaxAccountModel.afterUpdate(function(doc, options) { - var _exten = util.format('_%s', doc.localstationid); - var _accountId = doc.id; - var _description = util.format("Generated by Fax Channel - Account: %s", doc.name); - - return VoiceExtension - .findOne({ - where: { - FaxAccountId: doc.id - } - }) - .then(function(voiceExtension) { - if (!voiceExtension) { - return; - } - var req = { - params: { - id: voiceExtension.id - }, - body: generateExtensionArray(doc) - }; - return veUtil.routeUpdate(req, options.transaction); - }); - - }); - - FaxAccountModel.afterDelete(function(doc, options) { - return deleteVoiceExtensions(doc, options); - }); - -} - -function generateExtensionArray(doc) { - var _exten = util.format('_%s', doc.localstationid); - var _accountId = doc.id; - var _description = util.format("Generated by Fax Channel - Account: %s", doc.name); - - return { - "appdata": "Inbound Call", - "context": "from-voip-provider", - "exten": _exten, - "priority": "1", - "tag": "--", - "app": "NoOp", - "type": "inbound", - "description": _description, - "interval": null, - "IntervalId": null, - "isApp": false, - "record": false, - "FaxAccountId": _accountId, - "Applications": [{ - "appdata": [ - "Incoming fax from ${CALLERID(num)}" - ], - "app": "NoOp", - "interval": "*,*,*,*", - "IntervalId": null, - "callerID": null, - "type": "inbound", - "appType": "custom" - }, { - "appdata": [ - util.format('Account %s', doc.name) - ], - "app": "NoOp", - "interval": "*,*,*,*", - "IntervalId": null, - "callerID": null, - "type": "inbound", - "appType": "custom" - }, { - "appdata": [ - "CDR(type)=inbound-fax" - ], - "app": "Set", - "interval": "*,*,*,*", - "IntervalId": null, - "callerID": null, - "type": "inbound", - "appType": null - }, { - "appdata": [ - "" - ], - "app": "Answer", - "interval": "*,*,*,*", - "IntervalId": null, - "callerID": null, - "type": "inbound", - "appType": "custom" - }, { - "appdata": [ - "2" - ], - "app": "Wait", - "interval": "*,*,*,*", - "IntervalId": null, - "callerID": null, - "type": "inbound", - "appType": "custom" - }, { - "appdata": [ - util.format('FAXOPT(ecm)=%s', doc.ecm) - ], - "app": "Set", - "interval": "*,*,*,*", - "IntervalId": null, - "callerID": null, - "type": "inbound", - "appType": null - }, { - "appdata": [ - util.format('FAXOPT(headerinfo)=%s', doc.headerinfo) - ], - "app": "Set", - "interval": "*,*,*,*", - "IntervalId": null, - "callerID": null, - "type": "inbound", - "appType": null - }, { - "appdata": [ - util.format('FAXOPT(localstationid)=%s', doc.localstationid) - ], - "app": "Set", - "interval": "*,*,*,*", - "IntervalId": null, - "callerID": null, - "type": "inbound", - "appType": null - }, { - "appdata": [ - util.format('FAXOPT(minrate)=%s', doc.minrate) - ], - "app": "Set", - "interval": "*,*,*,*", - "IntervalId": null, - "callerID": null, - "type": "inbound", - "appType": null - }, { - "appdata": [ - util.format('FAXOPT(maxrate)=%s', doc.maxrate) - ], - "app": "Set", - "interval": "*,*,*,*", - "IntervalId": null, - "callerID": null, - "type": "inbound", - "appType": null - }, { - "appdata": [ - util.format('FAXOPT(modem)=%s', doc.modem) - ], - "app": "Set", - "interval": "*,*,*,*", - "IntervalId": null, - "callerID": null, - "type": "inbound", - "appType": null - }, { - "appdata": [ - util.format('FAXOPT(gateway)=%s', doc.gateway) - ], - "app": "Set", - "interval": "*,*,*,*", - "IntervalId": null, - "callerID": null, - "type": "inbound", - "appType": null - }, { - "appdata": [ - util.format('FAXOPT(t38timeout)=%s', doc.t38timeout) - ], - "app": "Set", - "interval": "*,*,*,*", - "IntervalId": null, - "callerID": null, - "type": "inbound", - "appType": null - }, { - "appdata": [ - util.format('FAXOPT(faxdetect)=%s', doc.faxdetect) - ], - "app": "Set", - "interval": "*,*,*,*", - "IntervalId": null, - "callerID": null, - "type": "inbound", - "appType": null - }, { - "appdata": [ - '/var/opt/motion/server/files/fax/inbound/original/fax-${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}.tif' - ], - "app": "ReceiveFAX", - "interval": "*,*,*,*", - "IntervalId": null, - "callerID": null, - "type": "inbound", - "appType": "custom" - }, { - "appdata": [ - "" - ], - "app": "Hangup", - "interval": "*,*,*,*", - "IntervalId": null, - "callerID": null, - "type": "inbound", - "appType": null - }] - }; -} - -function deleteVoiceExtensions(doc, options) { - return VoiceExtension - .destroy({ - where: { - FaxAccountId: doc.id - }, - transaction: options.transaction - }); -} - -module.exports = FaxAccount; +var _0xe0d3=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x75\x74\x69\x6C","\x56\x6F\x69\x63\x65\x45\x78\x74\x65\x6E\x73\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x46\x61\x78\x41\x63\x63\x6F\x75\x6E\x74","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x75\x74\x69\x6C\x73\x2F\x76\x6F\x69\x63\x65\x5F\x65\x78\x74\x65\x6E\x73\x69\x6F\x6E","\x62\x6C\x75\x65\x62\x69\x72\x64","\x5F\x25\x73","\x6C\x6F\x63\x61\x6C\x73\x74\x61\x74\x69\x6F\x6E\x69\x64","\x66\x6F\x72\x6D\x61\x74","\x69\x64","\x47\x65\x6E\x65\x72\x61\x74\x65\x64\x20\x62\x79\x20\x46\x61\x78\x20\x43\x68\x61\x6E\x6E\x65\x6C\x20\x2D\x20\x41\x63\x63\x6F\x75\x6E\x74\x3A\x20\x25\x73","\x6E\x61\x6D\x65","\x74\x72\x61\x6E\x73\x61\x63\x74\x69\x6F\x6E","\x63\x72\x65\x61\x74\x65\x41\x70\x70\x73","\x74\x68\x65\x6E","\x63\x72\x65\x61\x74\x65","\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x72\x6F\x75\x74\x65\x55\x70\x64\x61\x74\x65","\x66\x69\x6E\x64\x4F\x6E\x65","\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x61\x66\x74\x65\x72\x44\x65\x6C\x65\x74\x65","\x49\x6E\x62\x6F\x75\x6E\x64\x20\x43\x61\x6C\x6C","\x66\x72\x6F\x6D\x2D\x76\x6F\x69\x70\x2D\x70\x72\x6F\x76\x69\x64\x65\x72","\x31","\x2D\x2D","\x4E\x6F\x4F\x70","\x69\x6E\x62\x6F\x75\x6E\x64","\x49\x6E\x63\x6F\x6D\x69\x6E\x67\x20\x66\x61\x78\x20\x66\x72\x6F\x6D\x20\x24\x7B\x43\x41\x4C\x4C\x45\x52\x49\x44\x28\x6E\x75\x6D\x29\x7D","\x2A\x2C\x2A\x2C\x2A\x2C\x2A","\x63\x75\x73\x74\x6F\x6D","\x41\x63\x63\x6F\x75\x6E\x74\x20\x25\x73","\x43\x44\x52\x28\x74\x79\x70\x65\x29\x3D\x69\x6E\x62\x6F\x75\x6E\x64\x2D\x66\x61\x78","\x53\x65\x74","","\x41\x6E\x73\x77\x65\x72","\x32","\x57\x61\x69\x74","\x46\x41\x58\x4F\x50\x54\x28\x65\x63\x6D\x29\x3D\x25\x73","\x65\x63\x6D","\x46\x41\x58\x4F\x50\x54\x28\x68\x65\x61\x64\x65\x72\x69\x6E\x66\x6F\x29\x3D\x25\x73","\x68\x65\x61\x64\x65\x72\x69\x6E\x66\x6F","\x46\x41\x58\x4F\x50\x54\x28\x6C\x6F\x63\x61\x6C\x73\x74\x61\x74\x69\x6F\x6E\x69\x64\x29\x3D\x25\x73","\x46\x41\x58\x4F\x50\x54\x28\x6D\x69\x6E\x72\x61\x74\x65\x29\x3D\x25\x73","\x6D\x69\x6E\x72\x61\x74\x65","\x46\x41\x58\x4F\x50\x54\x28\x6D\x61\x78\x72\x61\x74\x65\x29\x3D\x25\x73","\x6D\x61\x78\x72\x61\x74\x65","\x46\x41\x58\x4F\x50\x54\x28\x6D\x6F\x64\x65\x6D\x29\x3D\x25\x73","\x6D\x6F\x64\x65\x6D","\x46\x41\x58\x4F\x50\x54\x28\x67\x61\x74\x65\x77\x61\x79\x29\x3D\x25\x73","\x67\x61\x74\x65\x77\x61\x79","\x46\x41\x58\x4F\x50\x54\x28\x74\x33\x38\x74\x69\x6D\x65\x6F\x75\x74\x29\x3D\x25\x73","\x74\x33\x38\x74\x69\x6D\x65\x6F\x75\x74","\x46\x41\x58\x4F\x50\x54\x28\x66\x61\x78\x64\x65\x74\x65\x63\x74\x29\x3D\x25\x73","\x66\x61\x78\x64\x65\x74\x65\x63\x74","\x2F\x76\x61\x72\x2F\x6F\x70\x74\x2F\x6D\x6F\x74\x69\x6F\x6E\x2F\x73\x65\x72\x76\x65\x72\x2F\x66\x69\x6C\x65\x73\x2F\x66\x61\x78\x2F\x69\x6E\x62\x6F\x75\x6E\x64\x2F\x6F\x72\x69\x67\x69\x6E\x61\x6C\x2F\x66\x61\x78\x2D\x24\x7B\x53\x54\x52\x46\x54\x49\x4D\x45\x28\x24\x7B\x45\x50\x4F\x43\x48\x7D\x2C\x2C\x25\x59\x25\x6D\x25\x64\x2D\x25\x48\x25\x4D\x25\x53\x29\x7D\x2E\x74\x69\x66","\x52\x65\x63\x65\x69\x76\x65\x46\x41\x58","\x48\x61\x6E\x67\x75\x70","\x64\x65\x73\x74\x72\x6F\x79","\x65\x78\x70\x6F\x72\x74\x73"];_0xe0d3[0];var util=require(_0xe0d3[1]);var VoiceExtension=require(_0xe0d3[3])[_0xe0d3[2]];var FaxAccountModel=require(_0xe0d3[3])[_0xe0d3[4]];var sequelize=require(_0xe0d3[3])[_0xe0d3[5]];var veUtil=require(_0xe0d3[6]);var Promise=require(_0xe0d3[7]);function FaxAccount(){FaxAccountModel[_0xe0d3[18]](function(_0x9fd2x8,_0x9fd2x9){var _0x9fd2xa=util[_0xe0d3[10]](_0xe0d3[8],_0x9fd2x8[_0xe0d3[9]]);var _0x9fd2xb=_0x9fd2x8[_0xe0d3[11]];var _0x9fd2xc=util[_0xe0d3[10]](_0xe0d3[12],_0x9fd2x8[_0xe0d3[13]]);var _0x9fd2xd=generateExtensionArray(_0x9fd2x8);var _0x9fd2xe;return VoiceExtension[_0xe0d3[17]](_0x9fd2xd,{transaction:_0x9fd2x9[_0xe0d3[14]]})[_0xe0d3[16]](function(_0x9fd2xf){_0x9fd2xe= _0x9fd2xf;return _0x9fd2xf})[_0xe0d3[16]](veUtil[_0xe0d3[15]](_0x9fd2xd.Applications,_0x9fd2x9[_0xe0d3[14]]))});FaxAccountModel[_0xe0d3[21]](function(_0x9fd2x8,_0x9fd2x9){var _0x9fd2xa=util[_0xe0d3[10]](_0xe0d3[8],_0x9fd2x8[_0xe0d3[9]]);var _0x9fd2xb=_0x9fd2x8[_0xe0d3[11]];var _0x9fd2xc=util[_0xe0d3[10]](_0xe0d3[12],_0x9fd2x8[_0xe0d3[13]]);return VoiceExtension[_0xe0d3[20]]({where:{FaxAccountId:_0x9fd2x8[_0xe0d3[11]]}})[_0xe0d3[16]](function(_0x9fd2x10){if(!_0x9fd2x10){return};var _0x9fd2x11={params:{id:_0x9fd2x10[_0xe0d3[11]]},body:generateExtensionArray(_0x9fd2x8)};return veUtil[_0xe0d3[19]](_0x9fd2x11,_0x9fd2x9[_0xe0d3[14]])})});FaxAccountModel[_0xe0d3[22]](function(_0x9fd2x8,_0x9fd2x9){return deleteVoiceExtensions(_0x9fd2x8,_0x9fd2x9)})}function generateExtensionArray(_0x9fd2x8){var _0x9fd2xa=util[_0xe0d3[10]](_0xe0d3[8],_0x9fd2x8[_0xe0d3[9]]);var _0x9fd2xb=_0x9fd2x8[_0xe0d3[11]];var _0x9fd2xc=util[_0xe0d3[10]](_0xe0d3[12],_0x9fd2x8[_0xe0d3[13]]);return {"\x61\x70\x70\x64\x61\x74\x61":_0xe0d3[23],"\x63\x6F\x6E\x74\x65\x78\x74":_0xe0d3[24],"\x65\x78\x74\x65\x6E":_0x9fd2xa,"\x70\x72\x69\x6F\x72\x69\x74\x79":_0xe0d3[25],"\x74\x61\x67":_0xe0d3[26],"\x61\x70\x70":_0xe0d3[27],"\x74\x79\x70\x65":_0xe0d3[28],"\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E":_0x9fd2xc,"\x69\x6E\x74\x65\x72\x76\x61\x6C":null,"\x49\x6E\x74\x65\x72\x76\x61\x6C\x49\x64":null,"\x69\x73\x41\x70\x70":false,"\x72\x65\x63\x6F\x72\x64":false,"\x46\x61\x78\x41\x63\x63\x6F\x75\x6E\x74\x49\x64":_0x9fd2xb,"\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73":[{"\x61\x70\x70\x64\x61\x74\x61":[_0xe0d3[29]],"\x61\x70\x70":_0xe0d3[27],"\x69\x6E\x74\x65\x72\x76\x61\x6C":_0xe0d3[30],"\x49\x6E\x74\x65\x72\x76\x61\x6C\x49\x64":null,"\x63\x61\x6C\x6C\x65\x72\x49\x44":null,"\x74\x79\x70\x65":_0xe0d3[28],"\x61\x70\x70\x54\x79\x70\x65":_0xe0d3[31]},{"\x61\x70\x70\x64\x61\x74\x61":[util[_0xe0d3[10]](_0xe0d3[32],_0x9fd2x8[_0xe0d3[13]])],"\x61\x70\x70":_0xe0d3[27],"\x69\x6E\x74\x65\x72\x76\x61\x6C":_0xe0d3[30],"\x49\x6E\x74\x65\x72\x76\x61\x6C\x49\x64":null,"\x63\x61\x6C\x6C\x65\x72\x49\x44":null,"\x74\x79\x70\x65":_0xe0d3[28],"\x61\x70\x70\x54\x79\x70\x65":_0xe0d3[31]},{"\x61\x70\x70\x64\x61\x74\x61":[_0xe0d3[33]],"\x61\x70\x70":_0xe0d3[34],"\x69\x6E\x74\x65\x72\x76\x61\x6C":_0xe0d3[30],"\x49\x6E\x74\x65\x72\x76\x61\x6C\x49\x64":null,"\x63\x61\x6C\x6C\x65\x72\x49\x44":null,"\x74\x79\x70\x65":_0xe0d3[28],"\x61\x70\x70\x54\x79\x70\x65":null},{"\x61\x70\x70\x64\x61\x74\x61":[_0xe0d3[35]],"\x61\x70\x70":_0xe0d3[36],"\x69\x6E\x74\x65\x72\x76\x61\x6C":_0xe0d3[30],"\x49\x6E\x74\x65\x72\x76\x61\x6C\x49\x64":null,"\x63\x61\x6C\x6C\x65\x72\x49\x44":null,"\x74\x79\x70\x65":_0xe0d3[28],"\x61\x70\x70\x54\x79\x70\x65":_0xe0d3[31]},{"\x61\x70\x70\x64\x61\x74\x61":[_0xe0d3[37]],"\x61\x70\x70":_0xe0d3[38],"\x69\x6E\x74\x65\x72\x76\x61\x6C":_0xe0d3[30],"\x49\x6E\x74\x65\x72\x76\x61\x6C\x49\x64":null,"\x63\x61\x6C\x6C\x65\x72\x49\x44":null,"\x74\x79\x70\x65":_0xe0d3[28],"\x61\x70\x70\x54\x79\x70\x65":_0xe0d3[31]},{"\x61\x70\x70\x64\x61\x74\x61":[util[_0xe0d3[10]](_0xe0d3[39],_0x9fd2x8[_0xe0d3[40]])],"\x61\x70\x70":_0xe0d3[34],"\x69\x6E\x74\x65\x72\x76\x61\x6C":_0xe0d3[30],"\x49\x6E\x74\x65\x72\x76\x61\x6C\x49\x64":null,"\x63\x61\x6C\x6C\x65\x72\x49\x44":null,"\x74\x79\x70\x65":_0xe0d3[28],"\x61\x70\x70\x54\x79\x70\x65":null},{"\x61\x70\x70\x64\x61\x74\x61":[util[_0xe0d3[10]](_0xe0d3[41],_0x9fd2x8[_0xe0d3[42]])],"\x61\x70\x70":_0xe0d3[34],"\x69\x6E\x74\x65\x72\x76\x61\x6C":_0xe0d3[30],"\x49\x6E\x74\x65\x72\x76\x61\x6C\x49\x64":null,"\x63\x61\x6C\x6C\x65\x72\x49\x44":null,"\x74\x79\x70\x65":_0xe0d3[28],"\x61\x70\x70\x54\x79\x70\x65":null},{"\x61\x70\x70\x64\x61\x74\x61":[util[_0xe0d3[10]](_0xe0d3[43],_0x9fd2x8[_0xe0d3[9]])],"\x61\x70\x70":_0xe0d3[34],"\x69\x6E\x74\x65\x72\x76\x61\x6C":_0xe0d3[30],"\x49\x6E\x74\x65\x72\x76\x61\x6C\x49\x64":null,"\x63\x61\x6C\x6C\x65\x72\x49\x44":null,"\x74\x79\x70\x65":_0xe0d3[28],"\x61\x70\x70\x54\x79\x70\x65":null},{"\x61\x70\x70\x64\x61\x74\x61":[util[_0xe0d3[10]](_0xe0d3[44],_0x9fd2x8[_0xe0d3[45]])],"\x61\x70\x70":_0xe0d3[34],"\x69\x6E\x74\x65\x72\x76\x61\x6C":_0xe0d3[30],"\x49\x6E\x74\x65\x72\x76\x61\x6C\x49\x64":null,"\x63\x61\x6C\x6C\x65\x72\x49\x44":null,"\x74\x79\x70\x65":_0xe0d3[28],"\x61\x70\x70\x54\x79\x70\x65":null},{"\x61\x70\x70\x64\x61\x74\x61":[util[_0xe0d3[10]](_0xe0d3[46],_0x9fd2x8[_0xe0d3[47]])],"\x61\x70\x70":_0xe0d3[34],"\x69\x6E\x74\x65\x72\x76\x61\x6C":_0xe0d3[30],"\x49\x6E\x74\x65\x72\x76\x61\x6C\x49\x64":null,"\x63\x61\x6C\x6C\x65\x72\x49\x44":null,"\x74\x79\x70\x65":_0xe0d3[28],"\x61\x70\x70\x54\x79\x70\x65":null},{"\x61\x70\x70\x64\x61\x74\x61":[util[_0xe0d3[10]](_0xe0d3[48],_0x9fd2x8[_0xe0d3[49]])],"\x61\x70\x70":_0xe0d3[34],"\x69\x6E\x74\x65\x72\x76\x61\x6C":_0xe0d3[30],"\x49\x6E\x74\x65\x72\x76\x61\x6C\x49\x64":null,"\x63\x61\x6C\x6C\x65\x72\x49\x44":null,"\x74\x79\x70\x65":_0xe0d3[28],"\x61\x70\x70\x54\x79\x70\x65":null},{"\x61\x70\x70\x64\x61\x74\x61":[util[_0xe0d3[10]](_0xe0d3[50],_0x9fd2x8[_0xe0d3[51]])],"\x61\x70\x70":_0xe0d3[34],"\x69\x6E\x74\x65\x72\x76\x61\x6C":_0xe0d3[30],"\x49\x6E\x74\x65\x72\x76\x61\x6C\x49\x64":null,"\x63\x61\x6C\x6C\x65\x72\x49\x44":null,"\x74\x79\x70\x65":_0xe0d3[28],"\x61\x70\x70\x54\x79\x70\x65":null},{"\x61\x70\x70\x64\x61\x74\x61":[util[_0xe0d3[10]](_0xe0d3[52],_0x9fd2x8[_0xe0d3[53]])],"\x61\x70\x70":_0xe0d3[34],"\x69\x6E\x74\x65\x72\x76\x61\x6C":_0xe0d3[30],"\x49\x6E\x74\x65\x72\x76\x61\x6C\x49\x64":null,"\x63\x61\x6C\x6C\x65\x72\x49\x44":null,"\x74\x79\x70\x65":_0xe0d3[28],"\x61\x70\x70\x54\x79\x70\x65":null},{"\x61\x70\x70\x64\x61\x74\x61":[util[_0xe0d3[10]](_0xe0d3[54],_0x9fd2x8[_0xe0d3[55]])],"\x61\x70\x70":_0xe0d3[34],"\x69\x6E\x74\x65\x72\x76\x61\x6C":_0xe0d3[30],"\x49\x6E\x74\x65\x72\x76\x61\x6C\x49\x64":null,"\x63\x61\x6C\x6C\x65\x72\x49\x44":null,"\x74\x79\x70\x65":_0xe0d3[28],"\x61\x70\x70\x54\x79\x70\x65":null},{"\x61\x70\x70\x64\x61\x74\x61":[_0xe0d3[56]],"\x61\x70\x70":_0xe0d3[57],"\x69\x6E\x74\x65\x72\x76\x61\x6C":_0xe0d3[30],"\x49\x6E\x74\x65\x72\x76\x61\x6C\x49\x64":null,"\x63\x61\x6C\x6C\x65\x72\x49\x44":null,"\x74\x79\x70\x65":_0xe0d3[28],"\x61\x70\x70\x54\x79\x70\x65":_0xe0d3[31]},{"\x61\x70\x70\x64\x61\x74\x61":[_0xe0d3[35]],"\x61\x70\x70":_0xe0d3[58],"\x69\x6E\x74\x65\x72\x76\x61\x6C":_0xe0d3[30],"\x49\x6E\x74\x65\x72\x76\x61\x6C\x49\x64":null,"\x63\x61\x6C\x6C\x65\x72\x49\x44":null,"\x74\x79\x70\x65":_0xe0d3[28],"\x61\x70\x70\x54\x79\x70\x65":null}]}}function deleteVoiceExtensions(_0x9fd2x8,_0x9fd2x9){return VoiceExtension[_0xe0d3[59]]({where:{FaxAccountId:_0x9fd2x8[_0xe0d3[11]]},transaction:_0x9fd2x9[_0xe0d3[14]]})}module[_0xe0d3[60]]= FaxAccount \ No newline at end of file diff --git a/server/config/tools/faxRoom.js b/server/config/tools/faxRoom.js index 3c52a65..0efe7a9 100644 --- a/server/config/tools/faxRoom.js +++ b/server/config/tools/faxRoom.js @@ -1,35 +1 @@ -'use strict'; - -const _ = require('lodash'); -const moment = require('moment'); - -const Room = require('../../models').FaxRoom; -const Status = require('../../models').FaxRoomStatus; - -function FaxRoom() { - Room.afterCreate(function(doc, opt) { - return Status - .create({ - status: doc.status, - data1: opt.user ? opt.user.name : null, - data2: opt.user ? opt.user.fullname : null, - FaxRoomId: doc.id, - UserId: opt.user ? opt.user.id : null - }); - }); - - Room.afterUpdate(function(doc, opt) { - if (doc.changed('status') || doc.changed('openReason')) { - return Status - .create({ - status: doc.status, - data1: opt.user ? opt.user.name : null, - data2: opt.user ? opt.user.fullname : null, - FaxRoomId: doc.id, - UserId: opt.user ? opt.user.id : null - }); - } - }); -} - -module.exports = FaxRoom; +var _0x40c1=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x6D\x6F\x6D\x65\x6E\x74","\x46\x61\x78\x52\x6F\x6F\x6D","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x46\x61\x78\x52\x6F\x6F\x6D\x53\x74\x61\x74\x75\x73","\x73\x74\x61\x74\x75\x73","\x75\x73\x65\x72","\x6E\x61\x6D\x65","\x66\x75\x6C\x6C\x6E\x61\x6D\x65","\x69\x64","\x63\x72\x65\x61\x74\x65","\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x63\x68\x61\x6E\x67\x65\x64","\x6F\x70\x65\x6E\x52\x65\x61\x73\x6F\x6E","\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0x40c1[0];const _=require(_0x40c1[1]);const moment=require(_0x40c1[2]);const Room=require(_0x40c1[4])[_0x40c1[3]];const Status=require(_0x40c1[4])[_0x40c1[5]];function FaxRoom(){Room[_0x40c1[12]](function(_0xf7a5x6,_0xf7a5x7){return Status[_0x40c1[11]]({status:_0xf7a5x6[_0x40c1[6]],data1:_0xf7a5x7[_0x40c1[7]]?_0xf7a5x7[_0x40c1[7]][_0x40c1[8]]:null,data2:_0xf7a5x7[_0x40c1[7]]?_0xf7a5x7[_0x40c1[7]][_0x40c1[9]]:null,FaxRoomId:_0xf7a5x6[_0x40c1[10]],UserId:_0xf7a5x7[_0x40c1[7]]?_0xf7a5x7[_0x40c1[7]][_0x40c1[10]]:null})});Room[_0x40c1[15]](function(_0xf7a5x6,_0xf7a5x7){if(_0xf7a5x6[_0x40c1[13]](_0x40c1[6])|| _0xf7a5x6[_0x40c1[13]](_0x40c1[14])){return Status[_0x40c1[11]]({status:_0xf7a5x6[_0x40c1[6]],data1:_0xf7a5x7[_0x40c1[7]]?_0xf7a5x7[_0x40c1[7]][_0x40c1[8]]:null,data2:_0xf7a5x7[_0x40c1[7]]?_0xf7a5x7[_0x40c1[7]][_0x40c1[9]]:null,FaxRoomId:_0xf7a5x6[_0x40c1[10]],UserId:_0xf7a5x7[_0x40c1[7]]?_0xf7a5x7[_0x40c1[7]][_0x40c1[10]]:null})}})}module[_0x40c1[16]]= FaxRoom \ No newline at end of file diff --git a/server/config/tools/index.js b/server/config/tools/index.js index f9c1659..73a595a 100644 --- a/server/config/tools/index.js +++ b/server/config/tools/index.js @@ -1,26 +1 @@ -'use strict'; - -var Interval = require('./interval'); -var User = require('./user'); -var ChanSpy = require('./channelSpy'); -var MailRoom = require('./mailRoom'); -var MailAccount = require('./mailAccount'); -var ChatRoom = require('./chatRoom'); -var FaxRoom = require('./faxRoom'); -var SmsRoom = require('./smsRoom'); -var OpenchannelRoom = require('./openchannelRoom'); -var FaxAccount = require('./faxAccount'); - -module.exports = function() { - // Tools Mangament - new Interval(); - new User(); - new ChanSpy(); - new MailRoom(); - new MailAccount(); - new ChatRoom(); - new FaxRoom(); - new SmsRoom(); - new FaxAccount(); - new OpenchannelRoom(); -} +var _0x7066=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x69\x6E\x74\x65\x72\x76\x61\x6C","\x2E\x2F\x75\x73\x65\x72","\x2E\x2F\x63\x68\x61\x6E\x6E\x65\x6C\x53\x70\x79","\x2E\x2F\x6D\x61\x69\x6C\x52\x6F\x6F\x6D","\x2E\x2F\x6D\x61\x69\x6C\x41\x63\x63\x6F\x75\x6E\x74","\x2E\x2F\x63\x68\x61\x74\x52\x6F\x6F\x6D","\x2E\x2F\x66\x61\x78\x52\x6F\x6F\x6D","\x2E\x2F\x73\x6D\x73\x52\x6F\x6F\x6D","\x2E\x2F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x52\x6F\x6F\x6D","\x2E\x2F\x66\x61\x78\x41\x63\x63\x6F\x75\x6E\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x7066[0];var Interval=require(_0x7066[1]);var User=require(_0x7066[2]);var ChanSpy=require(_0x7066[3]);var MailRoom=require(_0x7066[4]);var MailAccount=require(_0x7066[5]);var ChatRoom=require(_0x7066[6]);var FaxRoom=require(_0x7066[7]);var SmsRoom=require(_0x7066[8]);var OpenchannelRoom=require(_0x7066[9]);var FaxAccount=require(_0x7066[10]);module[_0x7066[11]]= function(){ new Interval(); new User(); new ChanSpy(); new MailRoom(); new MailAccount(); new ChatRoom(); new FaxRoom(); new SmsRoom(); new FaxAccount(); new OpenchannelRoom()} \ No newline at end of file diff --git a/server/config/tools/interval.js b/server/config/tools/interval.js index 223b7bf..8c6d8de 100644 --- a/server/config/tools/interval.js +++ b/server/config/tools/interval.js @@ -1,74 +1 @@ -'use strict'; - -var _ = require('lodash'); -var util = require('util'); -var IntervalModel = require('../../models').Interval; -var VoiceExtension = require('../../models').VoiceExtension; -var veUtil = require('../../utils/voice_extension'); -var sequelize = require('../../models').sequelize; -var Applications = veUtil.Applications; - -function Interval() { - console.log('Interval Initialization..'); - IntervalModel.afterUpdate(function(interval) { - updatevoiceExtension(interval); - }) - - IntervalModel.beforeDestroy(function(interval) { - if (interval.IntervalId !== null) { - updatevoiceExtension(interval); - } - }) - - IntervalModel.afterCreate(function(interval) { - if (interval.IntervalId !== null) { - updatevoiceExtension(interval); - } - }) -} - -function updatevoiceExtension(interval) { - var IntervalId = interval.IntervalId === null ? interval.id : interval.IntervalId; - return VoiceExtension - .findAll({ - where: { - VoiceExtensionId: null - }, - include: [{ - model: VoiceExtension, - as: 'Applications', - where: { - IntervalId: IntervalId - }, - attributes: ['app', 'interval', 'IntervalId', 'callerID', 'appdata', 'type'] - }] - }) - .then(function(voiceExtensions) { - voiceExtensions.forEach(function(elem) { - return sequelize.transaction(function(t) { - return veUtil.routeUpdate({ - body: elem.dataValues, - params: { - id: elem.id - } - }, t); - }) - .catch(sequelize.UniqueConstraintError, function(err) { - if (err.fields.PRIMARY) { - err.message = 'Extension/context combination already exist'; - err.translatedMessage = 'MESSAGE_EXIST_ROUTE' - } - console.log(err); - }) - .catch(function(err) { - console.log(err); - }); - }); - }) - .catch(function(err) { - console.log(err); - }); -} - - -module.exports = Interval; +var _0xb579=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x75\x74\x69\x6C","\x49\x6E\x74\x65\x72\x76\x61\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x56\x6F\x69\x63\x65\x45\x78\x74\x65\x6E\x73\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x75\x74\x69\x6C\x73\x2F\x76\x6F\x69\x63\x65\x5F\x65\x78\x74\x65\x6E\x73\x69\x6F\x6E","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x49\x6E\x74\x65\x72\x76\x61\x6C\x20\x49\x6E\x69\x74\x69\x61\x6C\x69\x7A\x61\x74\x69\x6F\x6E\x2E\x2E","\x6C\x6F\x67","\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x49\x6E\x74\x65\x72\x76\x61\x6C\x49\x64","\x62\x65\x66\x6F\x72\x65\x44\x65\x73\x74\x72\x6F\x79","\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x69\x64","\x63\x61\x74\x63\x68","\x50\x52\x49\x4D\x41\x52\x59","\x66\x69\x65\x6C\x64\x73","\x6D\x65\x73\x73\x61\x67\x65","\x45\x78\x74\x65\x6E\x73\x69\x6F\x6E\x2F\x63\x6F\x6E\x74\x65\x78\x74\x20\x63\x6F\x6D\x62\x69\x6E\x61\x74\x69\x6F\x6E\x20\x61\x6C\x72\x65\x61\x64\x79\x20\x65\x78\x69\x73\x74","\x74\x72\x61\x6E\x73\x6C\x61\x74\x65\x64\x4D\x65\x73\x73\x61\x67\x65","\x4D\x45\x53\x53\x41\x47\x45\x5F\x45\x58\x49\x53\x54\x5F\x52\x4F\x55\x54\x45","\x64\x61\x74\x61\x56\x61\x6C\x75\x65\x73","\x72\x6F\x75\x74\x65\x55\x70\x64\x61\x74\x65","\x74\x72\x61\x6E\x73\x61\x63\x74\x69\x6F\x6E","\x66\x6F\x72\x45\x61\x63\x68","\x74\x68\x65\x6E","\x61\x70\x70","\x69\x6E\x74\x65\x72\x76\x61\x6C","\x63\x61\x6C\x6C\x65\x72\x49\x44","\x61\x70\x70\x64\x61\x74\x61","\x74\x79\x70\x65","\x66\x69\x6E\x64\x41\x6C\x6C","\x65\x78\x70\x6F\x72\x74\x73"];_0xb579[0];var _=require(_0xb579[1]);var util=require(_0xb579[2]);var IntervalModel=require(_0xb579[4])[_0xb579[3]];var VoiceExtension=require(_0xb579[4])[_0xb579[5]];var veUtil=require(_0xb579[6]);var sequelize=require(_0xb579[4])[_0xb579[7]];var Applications=veUtil[_0xb579[8]];function Interval(){console[_0xb579[10]](_0xb579[9]);IntervalModel[_0xb579[11]](function(_0x4f7cx9){updatevoiceExtension(_0x4f7cx9)});IntervalModel[_0xb579[13]](function(_0x4f7cx9){if(_0x4f7cx9[_0xb579[12]]!== null){updatevoiceExtension(_0x4f7cx9)}});IntervalModel[_0xb579[14]](function(_0x4f7cx9){if(_0x4f7cx9[_0xb579[12]]!== null){updatevoiceExtension(_0x4f7cx9)}})}function updatevoiceExtension(_0x4f7cx9){var _0x4f7cxb=_0x4f7cx9[_0xb579[12]]=== null?_0x4f7cx9[_0xb579[15]]:_0x4f7cx9[_0xb579[12]];return VoiceExtension[_0xb579[33]]({where:{VoiceExtensionId:null},include:[{model:VoiceExtension,as:_0xb579[8],where:{IntervalId:_0x4f7cxb},attributes:[_0xb579[28],_0xb579[29],_0xb579[12],_0xb579[30],_0xb579[31],_0xb579[32]]}]})[_0xb579[27]](function(_0x4f7cxd){_0x4f7cxd[_0xb579[26]](function(_0x4f7cxe){return sequelize[_0xb579[25]](function(_0x4f7cxf){return veUtil[_0xb579[24]]({body:_0x4f7cxe[_0xb579[23]],params:{id:_0x4f7cxe[_0xb579[15]]}},_0x4f7cxf)})[_0xb579[16]](sequelize.UniqueConstraintError,function(_0x4f7cxc){if(_0x4f7cxc[_0xb579[18]][_0xb579[17]]){_0x4f7cxc[_0xb579[19]]= _0xb579[20];_0x4f7cxc[_0xb579[21]]= _0xb579[22]};console[_0xb579[10]](_0x4f7cxc)})[_0xb579[16]](function(_0x4f7cxc){console[_0xb579[10]](_0x4f7cxc)})})})[_0xb579[16]](function(_0x4f7cxc){console[_0xb579[10]](_0x4f7cxc)})}module[_0xb579[34]]= Interval \ No newline at end of file diff --git a/server/config/tools/mailAccount.js b/server/config/tools/mailAccount.js index e2da0c5..30305e7 100644 --- a/server/config/tools/mailAccount.js +++ b/server/config/tools/mailAccount.js @@ -1,40 +1 @@ -'use strict'; - -const _ = require('lodash'); -const moment = require('moment'); - -const Account = require('../../models').MailAccount; - -function MailAccount() { - Account.afterCreate(function(doc, opt) { - if (doc.service) { - return Account - .update({ - service: false - }, { - where: { - id: { - $ne: doc.id - } - } - }); - } - }); - - Account.afterUpdate(function(doc, opt) { - if (doc.changed('service') && doc.service) { - return Account - .update({ - service: false - }, { - where: { - id: { - $ne: doc.id - } - } - }); - } - }); -} - -module.exports = MailAccount; +var _0xfc52=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x6D\x6F\x6D\x65\x6E\x74","\x4D\x61\x69\x6C\x41\x63\x63\x6F\x75\x6E\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x72\x76\x69\x63\x65","\x69\x64","\x75\x70\x64\x61\x74\x65","\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x63\x68\x61\x6E\x67\x65\x64","\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0xfc52[0];const _=require(_0xfc52[1]);const moment=require(_0xfc52[2]);const Account=require(_0xfc52[4])[_0xfc52[3]];function MailAccount(){Account[_0xfc52[8]](function(_0x3343x5,_0x3343x6){if(_0x3343x5[_0xfc52[5]]){return Account[_0xfc52[7]]({service:false},{where:{id:{$ne:_0x3343x5[_0xfc52[6]]}}})}});Account[_0xfc52[10]](function(_0x3343x5,_0x3343x6){if(_0x3343x5[_0xfc52[9]](_0xfc52[5])&& _0x3343x5[_0xfc52[5]]){return Account[_0xfc52[7]]({service:false},{where:{id:{$ne:_0x3343x5[_0xfc52[6]]}}})}})}module[_0xfc52[11]]= MailAccount \ No newline at end of file diff --git a/server/config/tools/mailRoom.js b/server/config/tools/mailRoom.js index 697cbbb..e4c72bd 100644 --- a/server/config/tools/mailRoom.js +++ b/server/config/tools/mailRoom.js @@ -1,35 +1 @@ -'use strict'; - -const _ = require('lodash'); -const moment = require('moment'); - -const Room = require('../../models').MailRoom; -const Status = require('../../models').MailRoomStatus; - -function MailRoom() { - Room.afterCreate(function(doc, opt) { - return Status - .create({ - status: doc.status, - data1: opt.user ? opt.user.name : null, - data2: opt.user ? opt.user.fullname : null, - MailRoomId: doc.id, - UserId: opt.user ? opt.user.id : null - }); - }); - - Room.afterUpdate(function(doc, opt) { - if (doc.changed('status') || doc.changed('openReason')) { - return Status - .create({ - status: doc.status, - data1: opt.user ? opt.user.name : null, - data2: opt.user ? opt.user.fullname : null, - MailRoomId: doc.id, - UserId: opt.user ? opt.user.id : null - }); - } - }); -} - -module.exports = MailRoom; +var _0xf05d=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x6D\x6F\x6D\x65\x6E\x74","\x4D\x61\x69\x6C\x52\x6F\x6F\x6D","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x4D\x61\x69\x6C\x52\x6F\x6F\x6D\x53\x74\x61\x74\x75\x73","\x73\x74\x61\x74\x75\x73","\x75\x73\x65\x72","\x6E\x61\x6D\x65","\x66\x75\x6C\x6C\x6E\x61\x6D\x65","\x69\x64","\x63\x72\x65\x61\x74\x65","\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x63\x68\x61\x6E\x67\x65\x64","\x6F\x70\x65\x6E\x52\x65\x61\x73\x6F\x6E","\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0xf05d[0];const _=require(_0xf05d[1]);const moment=require(_0xf05d[2]);const Room=require(_0xf05d[4])[_0xf05d[3]];const Status=require(_0xf05d[4])[_0xf05d[5]];function MailRoom(){Room[_0xf05d[12]](function(_0xf7a2x6,_0xf7a2x7){return Status[_0xf05d[11]]({status:_0xf7a2x6[_0xf05d[6]],data1:_0xf7a2x7[_0xf05d[7]]?_0xf7a2x7[_0xf05d[7]][_0xf05d[8]]:null,data2:_0xf7a2x7[_0xf05d[7]]?_0xf7a2x7[_0xf05d[7]][_0xf05d[9]]:null,MailRoomId:_0xf7a2x6[_0xf05d[10]],UserId:_0xf7a2x7[_0xf05d[7]]?_0xf7a2x7[_0xf05d[7]][_0xf05d[10]]:null})});Room[_0xf05d[15]](function(_0xf7a2x6,_0xf7a2x7){if(_0xf7a2x6[_0xf05d[13]](_0xf05d[6])|| _0xf7a2x6[_0xf05d[13]](_0xf05d[14])){return Status[_0xf05d[11]]({status:_0xf7a2x6[_0xf05d[6]],data1:_0xf7a2x7[_0xf05d[7]]?_0xf7a2x7[_0xf05d[7]][_0xf05d[8]]:null,data2:_0xf7a2x7[_0xf05d[7]]?_0xf7a2x7[_0xf05d[7]][_0xf05d[9]]:null,MailRoomId:_0xf7a2x6[_0xf05d[10]],UserId:_0xf7a2x7[_0xf05d[7]]?_0xf7a2x7[_0xf05d[7]][_0xf05d[10]]:null})}})}module[_0xf05d[16]]= MailRoom \ No newline at end of file diff --git a/server/config/tools/openchannelRoom.js b/server/config/tools/openchannelRoom.js index 6cd41af..b77d8c7 100644 --- a/server/config/tools/openchannelRoom.js +++ b/server/config/tools/openchannelRoom.js @@ -1,26 +1 @@ -'use strict'; - -const _ = require('lodash'); -const moment = require('moment'); - -const Room = require('../../models').OpenchannelRoom; -const Status = require('../../models').OpenchannelRoomStatus; - -function OpenchannelRoom() { - Room.afterCreate(function(doc, opt) {}); - - Room.afterUpdate(function(doc, opt) { - if (doc.changed('status') || doc.changed('openReason')) { - return Status - .create({ - status: doc.status, - data1: opt.user ? opt.user.name : null, - data2: opt.user ? opt.user.fullname : null, - OpenchannelRoomId: doc.id, - UserId: opt.user ? opt.user.id : null - }); - } - }); -} - -module.exports = OpenchannelRoom; +var _0x2e9e=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x6D\x6F\x6D\x65\x6E\x74","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x52\x6F\x6F\x6D","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x52\x6F\x6F\x6D\x53\x74\x61\x74\x75\x73","\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x73\x74\x61\x74\x75\x73","\x63\x68\x61\x6E\x67\x65\x64","\x6F\x70\x65\x6E\x52\x65\x61\x73\x6F\x6E","\x75\x73\x65\x72","\x6E\x61\x6D\x65","\x66\x75\x6C\x6C\x6E\x61\x6D\x65","\x69\x64","\x63\x72\x65\x61\x74\x65","\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0x2e9e[0];const _=require(_0x2e9e[1]);const moment=require(_0x2e9e[2]);const Room=require(_0x2e9e[4])[_0x2e9e[3]];const Status=require(_0x2e9e[4])[_0x2e9e[5]];function OpenchannelRoom(){Room[_0x2e9e[6]](function(_0x9ce0x6,_0x9ce0x7){});Room[_0x2e9e[15]](function(_0x9ce0x6,_0x9ce0x7){if(_0x9ce0x6[_0x2e9e[8]](_0x2e9e[7])|| _0x9ce0x6[_0x2e9e[8]](_0x2e9e[9])){return Status[_0x2e9e[14]]({status:_0x9ce0x6[_0x2e9e[7]],data1:_0x9ce0x7[_0x2e9e[10]]?_0x9ce0x7[_0x2e9e[10]][_0x2e9e[11]]:null,data2:_0x9ce0x7[_0x2e9e[10]]?_0x9ce0x7[_0x2e9e[10]][_0x2e9e[12]]:null,OpenchannelRoomId:_0x9ce0x6[_0x2e9e[13]],UserId:_0x9ce0x7[_0x2e9e[10]]?_0x9ce0x7[_0x2e9e[10]][_0x2e9e[13]]:null})}})}module[_0x2e9e[16]]= OpenchannelRoom \ No newline at end of file diff --git a/server/config/tools/queueParameters.js b/server/config/tools/queueParameters.js index 81ea345..223d22f 100644 --- a/server/config/tools/queueParameters.js +++ b/server/config/tools/queueParameters.js @@ -1,384 +1 @@ -/** - * Broadcast updates to client when the model changes - */ - -'use strict'; - -var sequelize = require('../../models').sequelize; -var models = require('../../models'); -var Util = require('../../config/util'); -var Promise = require('bluebird'); -var _ = require('lodash'); -var util = require('util'); - -exports.register = function(socket) { - // Inbound Events - models.ReportQueue.afterCreate(function(doc) { - onWaiting(socket, doc); - }); - models.ReportQueue.afterUpdate(function(doc) { - if (doc.changed('queuecallerleaveAt')) { - onWaiting(socket, doc); - onActive(socket, doc); - } - }); - models.ReportQueue.afterUpdate(function(doc) { - if (doc.changed('queuecallerabandon') || doc.changed('queuecallercomplete')) { - onAbandon(socket, doc); - onComplete(socket, doc); - onActive(socket, doc); - onAvgAnswerTime(socket, doc); - onAvgTalkTime(socket, doc); - onTotalOffered(socket, doc); - onUnmanaged(socket, doc); - } - }); -} - -function getQueues(id, role) { - return function() { - switch (role) { - case 'user': - return models.User - .findById(id, { - attributes: ['id'] - }) - .then(Util.getVoiceQueuesIdByUser()); - default: - return models.VoiceQueue - .findAll() - .then(function(queues) { - return { - rows: queues - }; - }); - } - } -} - -function onWaiting(socket, doc) { - return Promise - .all([]) - .then(getQueues(socket.userId, socket.role)) - .then(function(userQueues) { - if (userQueues.rows.length) { - return models - .ReportQueue - .findAll({ - where: { - queuecallerleaveAt: null, - queue: _.find(userQueues.rows, { - name: doc.queue - }) ? doc.queue : [] - }, - group: 'queue', - attributes: [ - ['queue', 'name'], - [sequelize.fn('COUNT', sequelize.col('id')), 'waiting'] - ] - }); - } - return null; - }) - .then(function(waiting) { - if (waiting) { - var _parameters; - if (waiting.length) { - _parameters = waiting[0].dataValues; - } else { - _parameters = { - name: doc.queue, - waiting: 0 - }; - } - socket.emit('report_queue:parameters', _parameters); - } - }) - .catch(function(err) { - console.error('WAITING ERROR', err); - }); -} - -function onActive(socket, doc) { - return Promise - .all([]) - .then(getQueues(socket.userId, socket.role)) - .then(function(userQueues) { - if (userQueues.rows.length) { - return models - .ReportQueue - .findAll({ - where: { - queuecallerexit: false, - queuecallerabandon: false, - queuecallercomplete: false, - queuecallerleaveAt: { - $ne: null - }, - queue: _.find(userQueues.rows, { - name: doc.queue - }) ? doc.queue : [] - }, - group: 'queue', - attributes: [ - ['queue', 'name'], - [sequelize.fn('COUNT', sequelize.col('id')), 'active'] - ] - }); - } - return null; - }) - .then(function(active) { - if (active) { - var _parameters; - if (active.length) { - _parameters = active[0].dataValues; - } else { - _parameters = { - name: doc.queue, - active: 0 - }; - } - socket.emit('report_queue:parameters', _parameters); - } - }) - .catch(function(err) { - console.error('ACTIVE ERROR', err); - }); -} - -function onAbandon(socket, doc) { - return Promise - .all([]) - .then(getQueues(socket.userId, socket.role)) - .then(function(userQueues) { - if (userQueues.rows.length) { - return models - .ReportQueue - .findAll({ - where: { - queuecallerabandon: true, - queue: _.find(userQueues.rows, { - name: doc.queue - }) ? doc.queue : [] - }, - group: 'queue', - attributes: [ - ['queue', 'name'], - [sequelize.fn('COUNT', sequelize.col('id')), 'abandoned'] - ] - }); - } - return null; - }) - .then(function(abandoned) { - if (abandoned) { - var _parameters; - if (abandoned.length) { - _parameters = abandoned[0].dataValues; - } else { - _parameters = { - name: doc.queue, - abandoned: 0 - }; - } - socket.emit('report_queue:parameters', _parameters); - } - }) - .catch(function(err) { - console.error('ABANDONED ERROR', err); - }); -} - -function onComplete(socket, doc) { - return Promise - .all([]) - .then(getQueues(socket.userId, socket.role)) - .then(function(userQueues) { - if (userQueues.rows.length) { - return models - .ReportQueue - .findAll({ - where: { - queuecallercomplete: true, - queue: _.find(userQueues.rows, { - name: doc.queue - }) ? doc.queue : [] - }, - group: 'queue', - attributes: [ - ['queue', 'name'], - [sequelize.fn('COUNT', sequelize.col('id')), 'answered'] - ] - }); - } - return null; - }) - .then(function(answered) { - if (answered) { - var _parameters; - if (answered.length) { - _parameters = answered[0].dataValues; - } else { - _parameters = { - name: doc.queue, - answered: 0 - }; - } - socket.emit('report_queue:parameters', _parameters); - } - }) - .catch(function(err) { - console.error('ANSWERED ERROR', err); - }); -} - -function onAvgAnswerTime(socket, doc) { - return Promise - .all([]) - .then(getQueues(socket.userId, socket.role)) - .then(function(userQueues) { - if (userQueues.rows.length) { - var queue = _.find(userQueues.rows, { - name: doc.queue - }) ? doc.queue : ''; - var query = util.format('SELECT queue AS \'name\',SEC_TO_TIME(ROUND(AVG(holdtime), 0)) as holdtime FROM report_agent WHERE agentcomplete = 1 AND queue =\'%s\' GROUP BY queue', queue); - return sequelize - .query(query, { - type: sequelize.QueryTypes.SELECT - }); - } - return null; - }) - .then(function(holdtime) { - if (holdtime) { - var _parameters; - if (holdtime.length) { - _parameters = holdtime[0]; - } else { - _parameters = { - name: doc.queue, - holdtime: '00:00:00' - }; - } - socket.emit('report_queue:parameters', _parameters); - } - }) - .catch(function(err) { - console.error('HOLDTIME ERROR', err); - }); -} - -function onAvgTalkTime(socket, doc) { - return Promise - .all([]) - .then(getQueues(socket.userId, socket.role)) - .then(function(userQueues) { - if (userQueues.rows.length) { - var queue = _.find(userQueues.rows, { - name: doc.queue - }) ? doc.queue : ''; - return sequelize - .query(util.format('SELECT queue AS \'name\',SEC_TO_TIME(ROUND(AVG(talktime), 0)) as talktime FROM report_agent WHERE agentcomplete = 1 AND queue =\'%s\' GROUP BY queue', queue), { - type: sequelize.QueryTypes.SELECT - }); - } - return null; - }) - .then(function(talktime) { - if (talktime) { - var _parameters; - if (talktime.length) { - _parameters = talktime[0]; - } else { - _parameters = { - name: doc.queue, - talktime: '00:00:00' - }; - } - socket.emit('report_queue:parameters', _parameters); - } - }) - .catch(function(err) { - console.error('TALKTIME ERROR', err); - }); -} - - -function onTotalOffered(socket, doc) { - return Promise - .all([]) - .then(getQueues(socket.userId, socket.role)) - .then(function(userQueues) { - if (userQueues.rows.length) { - var queue = _.find(userQueues.rows, { - name: doc.queue - }) ? doc.queue : ''; - return sequelize - .query(util.format('SELECT queue AS \'name\',COUNT(distinct uniqueid) as totalcalls FROM report_queue WHERE queue =\'%s\' GROUP BY queue', queue), { - type: sequelize.QueryTypes.SELECT - }); - } - return null; - }) - .then(function(totalcalls) { - if (totalcalls) { - var _parameters; - if (totalcalls.length) { - _parameters = totalcalls[0]; - } else { - _parameters = { - name: doc.queue, - totalcalls: 0 - }; - } - socket.emit('report_queue:parameters', _parameters); - } - }) - .catch(function(err) { - console.error('TOTALCALLS ERROR', err); - }); -} - -function onUnmanaged(socket, doc) { - return Promise - .all([]) - .then(getQueues(socket.userId, socket.role)) - .then(function(userQueues) { - if (userQueues.rows.length) { - return models - .ReportQueue - .findAll({ - where: { - queuecallerexit: true, - queue: _.find(userQueues.rows, { - name: doc.queue - }) ? doc.queue : [] - }, - group: 'queue', - attributes: [ - ['queue', 'name'], - [sequelize.fn('COUNT', sequelize.col('id')), 'unmanaged'] - ] - }); - } - return null; - }) - .then(function(unmanaged) { - if (unmanaged) { - var _parameters; - if (unmanaged.length) { - _parameters = unmanaged[0].dataValues; - } else { - _parameters = { - name: doc.queue, - _parameters: 0 - }; - } - socket.emit('report_queue:parameters', _parameters); - } - }) - .catch(function(err) { - console.error('UNMANAGED ERROR', err); - }); -} +var _0x14fb=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x62\x6C\x75\x65\x62\x69\x72\x64","\x6C\x6F\x64\x61\x73\x68","\x75\x74\x69\x6C","\x72\x65\x67\x69\x73\x74\x65\x72","\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x52\x65\x70\x6F\x72\x74\x51\x75\x65\x75\x65","\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6C\x65\x61\x76\x65\x41\x74","\x63\x68\x61\x6E\x67\x65\x64","\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x61\x62\x61\x6E\x64\x6F\x6E","\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x63\x6F\x6D\x70\x6C\x65\x74\x65","\x67\x65\x74\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x74\x68\x65\x6E","\x69\x64","\x66\x69\x6E\x64\x42\x79\x49\x64","\x55\x73\x65\x72","\x75\x73\x65\x72","\x66\x69\x6E\x64\x41\x6C\x6C","\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65","\x57\x41\x49\x54\x49\x4E\x47\x20\x45\x52\x52\x4F\x52","\x65\x72\x72\x6F\x72","\x63\x61\x74\x63\x68","\x6C\x65\x6E\x67\x74\x68","\x64\x61\x74\x61\x56\x61\x6C\x75\x65\x73","\x71\x75\x65\x75\x65","\x72\x65\x70\x6F\x72\x74\x5F\x71\x75\x65\x75\x65\x3A\x70\x61\x72\x61\x6D\x65\x74\x65\x72\x73","\x65\x6D\x69\x74","\x72\x6F\x77\x73","\x66\x69\x6E\x64","\x6E\x61\x6D\x65","\x43\x4F\x55\x4E\x54","\x63\x6F\x6C","\x66\x6E","\x77\x61\x69\x74\x69\x6E\x67","\x75\x73\x65\x72\x49\x64","\x72\x6F\x6C\x65","\x61\x6C\x6C","\x41\x43\x54\x49\x56\x45\x20\x45\x52\x52\x4F\x52","\x61\x63\x74\x69\x76\x65","\x41\x42\x41\x4E\x44\x4F\x4E\x45\x44\x20\x45\x52\x52\x4F\x52","\x61\x62\x61\x6E\x64\x6F\x6E\x65\x64","\x41\x4E\x53\x57\x45\x52\x45\x44\x20\x45\x52\x52\x4F\x52","\x61\x6E\x73\x77\x65\x72\x65\x64","\x48\x4F\x4C\x44\x54\x49\x4D\x45\x20\x45\x52\x52\x4F\x52","\x30\x30\x3A\x30\x30\x3A\x30\x30","","\x53\x45\x4C\x45\x43\x54\x20\x71\x75\x65\x75\x65\x20\x41\x53\x20\x27\x6E\x61\x6D\x65\x27\x2C\x53\x45\x43\x5F\x54\x4F\x5F\x54\x49\x4D\x45\x28\x52\x4F\x55\x4E\x44\x28\x41\x56\x47\x28\x68\x6F\x6C\x64\x74\x69\x6D\x65\x29\x2C\x20\x30\x29\x29\x20\x61\x73\x20\x68\x6F\x6C\x64\x74\x69\x6D\x65\x20\x46\x52\x4F\x4D\x20\x72\x65\x70\x6F\x72\x74\x5F\x61\x67\x65\x6E\x74\x20\x57\x48\x45\x52\x45\x20\x61\x67\x65\x6E\x74\x63\x6F\x6D\x70\x6C\x65\x74\x65\x20\x3D\x20\x31\x20\x41\x4E\x44\x20\x71\x75\x65\x75\x65\x20\x3D\x27\x25\x73\x27\x20\x47\x52\x4F\x55\x50\x20\x42\x59\x20\x71\x75\x65\x75\x65","\x66\x6F\x72\x6D\x61\x74","\x53\x45\x4C\x45\x43\x54","\x51\x75\x65\x72\x79\x54\x79\x70\x65\x73","\x71\x75\x65\x72\x79","\x54\x41\x4C\x4B\x54\x49\x4D\x45\x20\x45\x52\x52\x4F\x52","\x53\x45\x4C\x45\x43\x54\x20\x71\x75\x65\x75\x65\x20\x41\x53\x20\x27\x6E\x61\x6D\x65\x27\x2C\x53\x45\x43\x5F\x54\x4F\x5F\x54\x49\x4D\x45\x28\x52\x4F\x55\x4E\x44\x28\x41\x56\x47\x28\x74\x61\x6C\x6B\x74\x69\x6D\x65\x29\x2C\x20\x30\x29\x29\x20\x61\x73\x20\x74\x61\x6C\x6B\x74\x69\x6D\x65\x20\x46\x52\x4F\x4D\x20\x72\x65\x70\x6F\x72\x74\x5F\x61\x67\x65\x6E\x74\x20\x57\x48\x45\x52\x45\x20\x61\x67\x65\x6E\x74\x63\x6F\x6D\x70\x6C\x65\x74\x65\x20\x3D\x20\x31\x20\x41\x4E\x44\x20\x71\x75\x65\x75\x65\x20\x3D\x27\x25\x73\x27\x20\x47\x52\x4F\x55\x50\x20\x42\x59\x20\x71\x75\x65\x75\x65","\x54\x4F\x54\x41\x4C\x43\x41\x4C\x4C\x53\x20\x45\x52\x52\x4F\x52","\x53\x45\x4C\x45\x43\x54\x20\x71\x75\x65\x75\x65\x20\x41\x53\x20\x27\x6E\x61\x6D\x65\x27\x2C\x43\x4F\x55\x4E\x54\x28\x64\x69\x73\x74\x69\x6E\x63\x74\x20\x75\x6E\x69\x71\x75\x65\x69\x64\x29\x20\x61\x73\x20\x74\x6F\x74\x61\x6C\x63\x61\x6C\x6C\x73\x20\x46\x52\x4F\x4D\x20\x72\x65\x70\x6F\x72\x74\x5F\x71\x75\x65\x75\x65\x20\x57\x48\x45\x52\x45\x20\x71\x75\x65\x75\x65\x20\x3D\x27\x25\x73\x27\x20\x47\x52\x4F\x55\x50\x20\x42\x59\x20\x71\x75\x65\x75\x65","\x55\x4E\x4D\x41\x4E\x41\x47\x45\x44\x20\x45\x52\x52\x4F\x52","\x75\x6E\x6D\x61\x6E\x61\x67\x65\x64"];_0x14fb[0];var sequelize=require(_0x14fb[2])[_0x14fb[1]];var models=require(_0x14fb[2]);var Util=require(_0x14fb[3]);var Promise=require(_0x14fb[4]);var _=require(_0x14fb[5]);var util=require(_0x14fb[6]);exports[_0x14fb[7]]= function(_0x2d01x7){models[_0x14fb[9]][_0x14fb[8]](function(_0x2d01x8){onWaiting(_0x2d01x7,_0x2d01x8)});models[_0x14fb[9]][_0x14fb[12]](function(_0x2d01x8){if(_0x2d01x8[_0x14fb[11]](_0x14fb[10])){onWaiting(_0x2d01x7,_0x2d01x8);onActive(_0x2d01x7,_0x2d01x8)}});models[_0x14fb[9]][_0x14fb[12]](function(_0x2d01x8){if(_0x2d01x8[_0x14fb[11]](_0x14fb[13])|| _0x2d01x8[_0x14fb[11]](_0x14fb[14])){onAbandon(_0x2d01x7,_0x2d01x8);onComplete(_0x2d01x7,_0x2d01x8);onActive(_0x2d01x7,_0x2d01x8);onAvgAnswerTime(_0x2d01x7,_0x2d01x8);onAvgTalkTime(_0x2d01x7,_0x2d01x8);onTotalOffered(_0x2d01x7,_0x2d01x8);onUnmanaged(_0x2d01x7,_0x2d01x8)}})};function getQueues(_0x2d01xa,_0x2d01xb){return function(){switch(_0x2d01xb){case _0x14fb[20]:return models[_0x14fb[19]][_0x14fb[18]](_0x2d01xa,{attributes:[_0x14fb[17]]})[_0x14fb[16]](Util[_0x14fb[15]]());default:return models[_0x14fb[22]][_0x14fb[21]]()[_0x14fb[16]](function(_0x2d01xc){return {rows:_0x2d01xc}})}}}function onWaiting(_0x2d01x7,_0x2d01x8){return Promise[_0x14fb[40]]([])[_0x14fb[16]](getQueues(_0x2d01x7[_0x14fb[38]],_0x2d01x7[_0x14fb[39]]))[_0x14fb[16]](function(_0x2d01x11){if(_0x2d01x11[_0x14fb[31]][_0x14fb[26]]){return models[_0x14fb[9]][_0x14fb[21]]({where:{queuecallerleaveAt:null,queue:_[_0x14fb[32]](_0x2d01x11[_0x14fb[31]],{name:_0x2d01x8[_0x14fb[28]]})?_0x2d01x8[_0x14fb[28]]:[]},group:_0x14fb[28],attributes:[[_0x14fb[28],_0x14fb[33]],[sequelize[_0x14fb[36]](_0x14fb[34],sequelize[_0x14fb[35]](_0x14fb[17])),_0x14fb[37]]]})};return null})[_0x14fb[16]](function(_0x2d01xf){if(_0x2d01xf){var _0x2d01x10;if(_0x2d01xf[_0x14fb[26]]){_0x2d01x10= _0x2d01xf[0][_0x14fb[27]]}else {_0x2d01x10= {name:_0x2d01x8[_0x14fb[28]],waiting:0}};_0x2d01x7[_0x14fb[30]](_0x14fb[29],_0x2d01x10)}})[_0x14fb[25]](function(_0x2d01xe){console[_0x14fb[24]](_0x14fb[23],_0x2d01xe)})}function onActive(_0x2d01x7,_0x2d01x8){return Promise[_0x14fb[40]]([])[_0x14fb[16]](getQueues(_0x2d01x7[_0x14fb[38]],_0x2d01x7[_0x14fb[39]]))[_0x14fb[16]](function(_0x2d01x11){if(_0x2d01x11[_0x14fb[31]][_0x14fb[26]]){return models[_0x14fb[9]][_0x14fb[21]]({where:{queuecallerexit:false,queuecallerabandon:false,queuecallercomplete:false,queuecallerleaveAt:{$ne:null},queue:_[_0x14fb[32]](_0x2d01x11[_0x14fb[31]],{name:_0x2d01x8[_0x14fb[28]]})?_0x2d01x8[_0x14fb[28]]:[]},group:_0x14fb[28],attributes:[[_0x14fb[28],_0x14fb[33]],[sequelize[_0x14fb[36]](_0x14fb[34],sequelize[_0x14fb[35]](_0x14fb[17])),_0x14fb[42]]]})};return null})[_0x14fb[16]](function(_0x2d01x13){if(_0x2d01x13){var _0x2d01x10;if(_0x2d01x13[_0x14fb[26]]){_0x2d01x10= _0x2d01x13[0][_0x14fb[27]]}else {_0x2d01x10= {name:_0x2d01x8[_0x14fb[28]],active:0}};_0x2d01x7[_0x14fb[30]](_0x14fb[29],_0x2d01x10)}})[_0x14fb[25]](function(_0x2d01xe){console[_0x14fb[24]](_0x14fb[41],_0x2d01xe)})}function onAbandon(_0x2d01x7,_0x2d01x8){return Promise[_0x14fb[40]]([])[_0x14fb[16]](getQueues(_0x2d01x7[_0x14fb[38]],_0x2d01x7[_0x14fb[39]]))[_0x14fb[16]](function(_0x2d01x11){if(_0x2d01x11[_0x14fb[31]][_0x14fb[26]]){return models[_0x14fb[9]][_0x14fb[21]]({where:{queuecallerabandon:true,queue:_[_0x14fb[32]](_0x2d01x11[_0x14fb[31]],{name:_0x2d01x8[_0x14fb[28]]})?_0x2d01x8[_0x14fb[28]]:[]},group:_0x14fb[28],attributes:[[_0x14fb[28],_0x14fb[33]],[sequelize[_0x14fb[36]](_0x14fb[34],sequelize[_0x14fb[35]](_0x14fb[17])),_0x14fb[44]]]})};return null})[_0x14fb[16]](function(_0x2d01x15){if(_0x2d01x15){var _0x2d01x10;if(_0x2d01x15[_0x14fb[26]]){_0x2d01x10= _0x2d01x15[0][_0x14fb[27]]}else {_0x2d01x10= {name:_0x2d01x8[_0x14fb[28]],abandoned:0}};_0x2d01x7[_0x14fb[30]](_0x14fb[29],_0x2d01x10)}})[_0x14fb[25]](function(_0x2d01xe){console[_0x14fb[24]](_0x14fb[43],_0x2d01xe)})}function onComplete(_0x2d01x7,_0x2d01x8){return Promise[_0x14fb[40]]([])[_0x14fb[16]](getQueues(_0x2d01x7[_0x14fb[38]],_0x2d01x7[_0x14fb[39]]))[_0x14fb[16]](function(_0x2d01x11){if(_0x2d01x11[_0x14fb[31]][_0x14fb[26]]){return models[_0x14fb[9]][_0x14fb[21]]({where:{queuecallercomplete:true,queue:_[_0x14fb[32]](_0x2d01x11[_0x14fb[31]],{name:_0x2d01x8[_0x14fb[28]]})?_0x2d01x8[_0x14fb[28]]:[]},group:_0x14fb[28],attributes:[[_0x14fb[28],_0x14fb[33]],[sequelize[_0x14fb[36]](_0x14fb[34],sequelize[_0x14fb[35]](_0x14fb[17])),_0x14fb[46]]]})};return null})[_0x14fb[16]](function(_0x2d01x17){if(_0x2d01x17){var _0x2d01x10;if(_0x2d01x17[_0x14fb[26]]){_0x2d01x10= _0x2d01x17[0][_0x14fb[27]]}else {_0x2d01x10= {name:_0x2d01x8[_0x14fb[28]],answered:0}};_0x2d01x7[_0x14fb[30]](_0x14fb[29],_0x2d01x10)}})[_0x14fb[25]](function(_0x2d01xe){console[_0x14fb[24]](_0x14fb[45],_0x2d01xe)})}function onAvgAnswerTime(_0x2d01x7,_0x2d01x8){return Promise[_0x14fb[40]]([])[_0x14fb[16]](getQueues(_0x2d01x7[_0x14fb[38]],_0x2d01x7[_0x14fb[39]]))[_0x14fb[16]](function(_0x2d01x11){if(_0x2d01x11[_0x14fb[31]][_0x14fb[26]]){var _0x2d01x1a=_[_0x14fb[32]](_0x2d01x11[_0x14fb[31]],{name:_0x2d01x8[_0x14fb[28]]})?_0x2d01x8[_0x14fb[28]]:_0x14fb[49];var _0x2d01x1b=util[_0x14fb[51]](_0x14fb[50],_0x2d01x1a);return sequelize[_0x14fb[54]](_0x2d01x1b,{type:sequelize[_0x14fb[53]][_0x14fb[52]]})};return null})[_0x14fb[16]](function(_0x2d01x19){if(_0x2d01x19){var _0x2d01x10;if(_0x2d01x19[_0x14fb[26]]){_0x2d01x10= _0x2d01x19[0]}else {_0x2d01x10= {name:_0x2d01x8[_0x14fb[28]],holdtime:_0x14fb[48]}};_0x2d01x7[_0x14fb[30]](_0x14fb[29],_0x2d01x10)}})[_0x14fb[25]](function(_0x2d01xe){console[_0x14fb[24]](_0x14fb[47],_0x2d01xe)})}function onAvgTalkTime(_0x2d01x7,_0x2d01x8){return Promise[_0x14fb[40]]([])[_0x14fb[16]](getQueues(_0x2d01x7[_0x14fb[38]],_0x2d01x7[_0x14fb[39]]))[_0x14fb[16]](function(_0x2d01x11){if(_0x2d01x11[_0x14fb[31]][_0x14fb[26]]){var _0x2d01x1a=_[_0x14fb[32]](_0x2d01x11[_0x14fb[31]],{name:_0x2d01x8[_0x14fb[28]]})?_0x2d01x8[_0x14fb[28]]:_0x14fb[49];return sequelize[_0x14fb[54]](util[_0x14fb[51]](_0x14fb[56],_0x2d01x1a),{type:sequelize[_0x14fb[53]][_0x14fb[52]]})};return null})[_0x14fb[16]](function(_0x2d01x1d){if(_0x2d01x1d){var _0x2d01x10;if(_0x2d01x1d[_0x14fb[26]]){_0x2d01x10= _0x2d01x1d[0]}else {_0x2d01x10= {name:_0x2d01x8[_0x14fb[28]],talktime:_0x14fb[48]}};_0x2d01x7[_0x14fb[30]](_0x14fb[29],_0x2d01x10)}})[_0x14fb[25]](function(_0x2d01xe){console[_0x14fb[24]](_0x14fb[55],_0x2d01xe)})}function onTotalOffered(_0x2d01x7,_0x2d01x8){return Promise[_0x14fb[40]]([])[_0x14fb[16]](getQueues(_0x2d01x7[_0x14fb[38]],_0x2d01x7[_0x14fb[39]]))[_0x14fb[16]](function(_0x2d01x11){if(_0x2d01x11[_0x14fb[31]][_0x14fb[26]]){var _0x2d01x1a=_[_0x14fb[32]](_0x2d01x11[_0x14fb[31]],{name:_0x2d01x8[_0x14fb[28]]})?_0x2d01x8[_0x14fb[28]]:_0x14fb[49];return sequelize[_0x14fb[54]](util[_0x14fb[51]](_0x14fb[58],_0x2d01x1a),{type:sequelize[_0x14fb[53]][_0x14fb[52]]})};return null})[_0x14fb[16]](function(_0x2d01x1f){if(_0x2d01x1f){var _0x2d01x10;if(_0x2d01x1f[_0x14fb[26]]){_0x2d01x10= _0x2d01x1f[0]}else {_0x2d01x10= {name:_0x2d01x8[_0x14fb[28]],totalcalls:0}};_0x2d01x7[_0x14fb[30]](_0x14fb[29],_0x2d01x10)}})[_0x14fb[25]](function(_0x2d01xe){console[_0x14fb[24]](_0x14fb[57],_0x2d01xe)})}function onUnmanaged(_0x2d01x7,_0x2d01x8){return Promise[_0x14fb[40]]([])[_0x14fb[16]](getQueues(_0x2d01x7[_0x14fb[38]],_0x2d01x7[_0x14fb[39]]))[_0x14fb[16]](function(_0x2d01x11){if(_0x2d01x11[_0x14fb[31]][_0x14fb[26]]){return models[_0x14fb[9]][_0x14fb[21]]({where:{queuecallerexit:true,queue:_[_0x14fb[32]](_0x2d01x11[_0x14fb[31]],{name:_0x2d01x8[_0x14fb[28]]})?_0x2d01x8[_0x14fb[28]]:[]},group:_0x14fb[28],attributes:[[_0x14fb[28],_0x14fb[33]],[sequelize[_0x14fb[36]](_0x14fb[34],sequelize[_0x14fb[35]](_0x14fb[17])),_0x14fb[60]]]})};return null})[_0x14fb[16]](function(_0x2d01x21){if(_0x2d01x21){var _0x2d01x10;if(_0x2d01x21[_0x14fb[26]]){_0x2d01x10= _0x2d01x21[0][_0x14fb[27]]}else {_0x2d01x10= {name:_0x2d01x8[_0x14fb[28]],_parameters:0}};_0x2d01x7[_0x14fb[30]](_0x14fb[29],_0x2d01x10)}})[_0x14fb[25]](function(_0x2d01xe){console[_0x14fb[24]](_0x14fb[59],_0x2d01xe)})} \ No newline at end of file diff --git a/server/config/tools/smsRoom.js b/server/config/tools/smsRoom.js index 632af77..49b2b13 100644 --- a/server/config/tools/smsRoom.js +++ b/server/config/tools/smsRoom.js @@ -1,26 +1 @@ -'use strict'; - -const _ = require('lodash'); -const moment = require('moment'); - -const Room = require('../../models').SmsRoom; -const Status = require('../../models').SmsRoomStatus; - -function SmsRoom() { - Room.afterCreate(function(doc, opt) {}); - - Room.afterUpdate(function(doc, opt) { - if (doc.changed('status') || doc.changed('openReason')) { - return Status - .create({ - status: doc.status, - data1: opt.user ? opt.user.name : null, - data2: opt.user ? opt.user.fullname : null, - SmsRoomId: doc.id, - UserId: opt.user ? opt.user.id : null - }); - } - }); -} - -module.exports = SmsRoom; +var _0xc655=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x6D\x6F\x6D\x65\x6E\x74","\x53\x6D\x73\x52\x6F\x6F\x6D","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x53\x6D\x73\x52\x6F\x6F\x6D\x53\x74\x61\x74\x75\x73","\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x73\x74\x61\x74\x75\x73","\x63\x68\x61\x6E\x67\x65\x64","\x6F\x70\x65\x6E\x52\x65\x61\x73\x6F\x6E","\x75\x73\x65\x72","\x6E\x61\x6D\x65","\x66\x75\x6C\x6C\x6E\x61\x6D\x65","\x69\x64","\x63\x72\x65\x61\x74\x65","\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];_0xc655[0];const _=require(_0xc655[1]);const moment=require(_0xc655[2]);const Room=require(_0xc655[4])[_0xc655[3]];const Status=require(_0xc655[4])[_0xc655[5]];function SmsRoom(){Room[_0xc655[6]](function(_0x28f6x6,_0x28f6x7){});Room[_0xc655[15]](function(_0x28f6x6,_0x28f6x7){if(_0x28f6x6[_0xc655[8]](_0xc655[7])|| _0x28f6x6[_0xc655[8]](_0xc655[9])){return Status[_0xc655[14]]({status:_0x28f6x6[_0xc655[7]],data1:_0x28f6x7[_0xc655[10]]?_0x28f6x7[_0xc655[10]][_0xc655[11]]:null,data2:_0x28f6x7[_0xc655[10]]?_0x28f6x7[_0xc655[10]][_0xc655[12]]:null,SmsRoomId:_0x28f6x6[_0xc655[13]],UserId:_0x28f6x7[_0xc655[10]]?_0x28f6x7[_0xc655[10]][_0xc655[13]]:null})}})}module[_0xc655[16]]= SmsRoom \ No newline at end of file diff --git a/server/config/tools/system.js b/server/config/tools/system.js index ee4b3d3..d94f352 100644 --- a/server/config/tools/system.js +++ b/server/config/tools/system.js @@ -1,60 +1 @@ -'use strict'; - -var Promise = require('bluebird'), - _ = require('lodash'), - pidStat = Promise.promisify(require('pidusage').stat), - os = require('os'), - df = Promise.promisify(require('node-df')); - -exports.checkStatus = function() { - return function() { - var stats = {}; - return pidStat(process.pid) - .then(function(stat) { - stats.cpu = { - motion: stat.cpu - }; - var motionMem = stat.memory / 1024; - stats.memory = { - Total: os.totalmem() / 1024, - details: {} - }; - stats.memory.details.Free = os.freemem() / 1024; - stats.memory.details.Other = stats.memory.Total - motionMem - stats.memory.details.Free; - stats.memory.details.Motion = motionMem; - stats.cpu.cores = oscpu(); - return df(); - }) - .then(function(disks) { - stats.disks = []; - _.forEach(disks, function(disk) { - stats.disks.push({ - mount: disk.mount, - size: disk.size, - details: { - Used: disk.used, - Available: disk.available - } - }); - }); - return stats; - }); - } -} - -function oscpu() { - var cpus = os.cpus(); - var data = [], - _cpu, total; - - _.forEach(cpus, function(cpu) { - _cpu = {}; - total = _.sum(_.values(cpu.times)); - _.forOwn(cpu.times, function(time, key) { - _cpu[key] = Math.round(100 * time / total); - }); - data.push(_cpu); - }); - - return data; -} +var _0xe980=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x62\x6C\x75\x65\x62\x69\x72\x64","\x6C\x6F\x64\x61\x73\x68","\x73\x74\x61\x74","\x70\x69\x64\x75\x73\x61\x67\x65","\x70\x72\x6F\x6D\x69\x73\x69\x66\x79","\x6F\x73","\x6E\x6F\x64\x65\x2D\x64\x66","\x63\x68\x65\x63\x6B\x53\x74\x61\x74\x75\x73","\x64\x69\x73\x6B\x73","\x6D\x6F\x75\x6E\x74","\x73\x69\x7A\x65","\x75\x73\x65\x64","\x61\x76\x61\x69\x6C\x61\x62\x6C\x65","\x70\x75\x73\x68","\x66\x6F\x72\x45\x61\x63\x68","\x74\x68\x65\x6E","\x63\x70\x75","\x6D\x65\x6D\x6F\x72\x79","\x74\x6F\x74\x61\x6C\x6D\x65\x6D","\x46\x72\x65\x65","\x64\x65\x74\x61\x69\x6C\x73","\x66\x72\x65\x65\x6D\x65\x6D","\x4F\x74\x68\x65\x72","\x54\x6F\x74\x61\x6C","\x4D\x6F\x74\x69\x6F\x6E","\x63\x6F\x72\x65\x73","\x70\x69\x64","\x63\x70\x75\x73","\x74\x69\x6D\x65\x73","\x76\x61\x6C\x75\x65\x73","\x73\x75\x6D","\x72\x6F\x75\x6E\x64","\x66\x6F\x72\x4F\x77\x6E"];_0xe980[0];var Promise=require(_0xe980[1]),_=require(_0xe980[2]),pidStat=Promise[_0xe980[5]](require(_0xe980[4])[_0xe980[3]]),os=require(_0xe980[6]),df=Promise[_0xe980[5]](require(_0xe980[7]));exports[_0xe980[8]]= function(){return function(){var _0xaaf2x6={};return pidStat(process[_0xe980[27]])[_0xe980[16]](function(_0xaaf2x9){_0xaaf2x6[_0xe980[17]]= {motion:_0xaaf2x9[_0xe980[17]]};var _0xaaf2xa=_0xaaf2x9[_0xe980[18]]/ 1024;_0xaaf2x6[_0xe980[18]]= {Total:os[_0xe980[19]]()/ 1024,details:{}};_0xaaf2x6[_0xe980[18]][_0xe980[21]][_0xe980[20]]= os[_0xe980[22]]()/ 1024;_0xaaf2x6[_0xe980[18]][_0xe980[21]][_0xe980[23]]= _0xaaf2x6[_0xe980[18]][_0xe980[24]]- _0xaaf2xa- _0xaaf2x6[_0xe980[18]][_0xe980[21]][_0xe980[20]];_0xaaf2x6[_0xe980[18]][_0xe980[21]][_0xe980[25]]= _0xaaf2xa;_0xaaf2x6[_0xe980[17]][_0xe980[26]]= oscpu();return df()})[_0xe980[16]](function(_0xaaf2x7){_0xaaf2x6[_0xe980[9]]= [];_[_0xe980[15]](_0xaaf2x7,function(_0xaaf2x8){_0xaaf2x6[_0xe980[9]][_0xe980[14]]({mount:_0xaaf2x8[_0xe980[10]],size:_0xaaf2x8[_0xe980[11]],details:{Used:_0xaaf2x8[_0xe980[12]],Available:_0xaaf2x8[_0xe980[13]]}})});return _0xaaf2x6})}};function oscpu(){var _0xaaf2xc=os[_0xe980[28]]();var _0xaaf2xd=[],_0xaaf2xe,_0xaaf2xf;_[_0xe980[15]](_0xaaf2xc,function(_0xaaf2x10){_0xaaf2xe= {};_0xaaf2xf= _[_0xe980[31]](_[_0xe980[30]](_0xaaf2x10[_0xe980[29]]));_[_0xe980[33]](_0xaaf2x10[_0xe980[29]],function(_0xaaf2x11,_0xaaf2x12){_0xaaf2xe[_0xaaf2x12]= Math[_0xe980[32]](100* _0xaaf2x11/ _0xaaf2xf)});_0xaaf2xd[_0xe980[14]](_0xaaf2xe)});return _0xaaf2xd} \ No newline at end of file diff --git a/server/config/tools/user.js b/server/config/tools/user.js index 50b0908..de37673 100644 --- a/server/config/tools/user.js +++ b/server/config/tools/user.js @@ -1,219 +1 @@ -'use strict'; - -var fs = require('fs'); -var util = require('util'); -var path = require('path'); -var config = require('../../config/environment'); -var UserModel = require('../../models').User; -var VoiceExtension = require('../../models').VoiceExtension; -var ChanSpy = require('../../models').ChanSpy; -var sequelize = require('../../models').sequelize; -var Promise = require('bluebird'); - -function User() { - UserModel.afterCreate(function(doc, options) { - delete doc._changed.internal; - return Promise - .all([]) - .then(createCallerID(doc, options)) - .then(createExtension(doc, options)) - .then(function() { - if (doc.chanspy) { - createChanspy(doc, options); - } - }) - }) - - UserModel.beforeUpdate(function(doc, options) { - if (doc.changed('internal')) { - throw new sequelize.Error("You can't modify the internal of a User/Agent/Telephone"); - } - }) - - UserModel.afterUpdate(function(doc, options) { - // console.log('Users updated', doc._changed); - // console.log(doc._changed, doc.name, doc.status); - if (!doc.changed('status') && !doc.changed('queueStatus') && !doc.changed('callerid') && !doc.changed('lastLoginAt') && !doc.changed('online')) { - return Promise - .all([]) - .then(createCallerID(doc, options)) - .then(function() { - if ((doc.chanspy && doc.changed('chanspy'))) { - return createChanspy(doc, options); - } - }) - .then(function() { - if (doc.chanspy && !doc.changed('chanspy') && doc.changed('name')) { - return deleteChanSpy(doc, options); - } - }) - .then(function() { - if (doc.chanspy && !doc.changed('chanspy') && doc.changed('name')) { - return createChanspy(doc, options); - } - }) - .then(function() { - if (!doc.chanspy && doc.changed('chanspy')) { - return deleteChanSpy(doc, options); - } - }) - } - }) -} - -function createChanspy(doc, options) { - console.log('Creating chanspy...'); - return ChanSpy - .findAll() - .then(function(chanspy) { - var bulkSpies = []; - chanspy.forEach(function(elem) { - var spies = []; - var priority = 1; - if (elem.auth) { - spies.push({ - context: 'from-sip', - exten: util.format('%s%s', elem.prefix, doc.name), - priority: priority, - app: 'Authenticate', - appdata: elem.password, - UserId: doc.id, - ChanSpyId: elem.id, - type: 'system' - }); - priority++; - } - spies.push({ - context: 'from-sip', - exten: util.format('%s%s', elem.prefix, doc.name), - priority: priority, - app: 'ChanSpy', - appdata: util.format('SIP/%s,%s', doc.name, elem.options), - UserId: doc.id, - ChanSpyId: elem.id, - type: 'system' - }); - priority = 1; - if (elem.auth) { - spies.push({ - context: 'from-sip', - exten: util.format('%s%s', elem.prefix, doc.internal), - priority: priority, - app: 'Authenticate', - appdata: elem.password, - UserId: doc.id, - ChanSpyId: elem.id, - type: 'system' - }); - priority++; - } - spies.push({ - context: 'from-sip', - exten: util.format('%s%s', elem.prefix, doc.internal), - priority: priority, - app: 'ChanSpy', - appdata: util.format('SIP/%s,%s', doc.name, elem.options), - UserId: doc.id, - ChanSpyId: elem.id, - type: 'system' - }); - bulkSpies.push(VoiceExtension.bulkCreate(spies, { - transaction: options.transaction - })); - }); - return bulkSpies; - }) - .all(); -} - -function deleteChanSpy(doc, options) { - console.log('Deleting chanspy...'); - return VoiceExtension - .destroy({ - where: { - UserId: doc.id, - ChanSpyId: { - $ne: null - } - }, - transaction: options.transaction - }); -} - -function createCallerID(doc, options) { - return function() { - // devo aspettare che ci siano entrambi i campi - if (doc.fullname && doc.internal && doc.changed('fullname')) { - console.log('Creating callerID...'); - doc.callerid = util.format('"%s" <%s>', doc.fullname, doc.internal); - return doc.save({ - transaction: options.transaction - }); - // console.log('callerid created'); - } - - return; - } -} - -function createExtension(doc, options) { - console.log('Creating extension...'); - return function() { - var userDials = [{ - context: 'from-sip', - exten: '_' + doc.internal, - priority: 1, - app: 'Set', - appdata: 'CDR(type)=internal', - UserId: doc.id, - type: 'system' - }, { - context: 'from-sip', - exten: '_' + doc.internal, - priority: 2, - app: 'Dial', - appdata: 'SIP/' + doc.name + ',,tTxX', - UserId: doc.id, - type: 'system' - }, { - context: 'from-sip', - exten: '_' + doc.internal, - priority: 3, - app: 'Hangup', - appdata: '', - UserId: doc.id, - type: 'system' - }, { - context: 'from-sip', - exten: doc.name, - priority: 1, - app: 'Set', - appdata: 'CDR(type)=internal', - UserId: doc.id, - type: 'system' - }, { - context: 'from-sip', - exten: doc.name, - priority: 2, - app: 'Dial', - appdata: 'SIP/' + doc.name + ',,tTxX', - UserId: doc.id, - type: 'system' - }, { - context: 'from-sip', - exten: doc.name, - priority: 3, - app: 'Hangup', - appdata: '', - UserId: doc.id, - type: 'system' - }]; - - return VoiceExtension - .bulkCreate(userDials, { - transaction: options.transaction - }) - } -} - -module.exports = User; +var _0x2221=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x66\x73","\x75\x74\x69\x6C","\x70\x61\x74\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x55\x73\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x56\x6F\x69\x63\x65\x45\x78\x74\x65\x6E\x73\x69\x6F\x6E","\x43\x68\x61\x6E\x53\x70\x79","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x62\x6C\x75\x65\x62\x69\x72\x64","\x69\x6E\x74\x65\x72\x6E\x61\x6C","\x5F\x63\x68\x61\x6E\x67\x65\x64","\x63\x68\x61\x6E\x73\x70\x79","\x74\x68\x65\x6E","\x61\x6C\x6C","\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x63\x68\x61\x6E\x67\x65\x64","\x59\x6F\x75\x20\x63\x61\x6E\x27\x74\x20\x6D\x6F\x64\x69\x66\x79\x20\x74\x68\x65\x20\x69\x6E\x74\x65\x72\x6E\x61\x6C\x20\x6F\x66\x20\x61\x20\x55\x73\x65\x72\x2F\x41\x67\x65\x6E\x74\x2F\x54\x65\x6C\x65\x70\x68\x6F\x6E\x65","\x62\x65\x66\x6F\x72\x65\x55\x70\x64\x61\x74\x65","\x73\x74\x61\x74\x75\x73","\x71\x75\x65\x75\x65\x53\x74\x61\x74\x75\x73","\x63\x61\x6C\x6C\x65\x72\x69\x64","\x6C\x61\x73\x74\x4C\x6F\x67\x69\x6E\x41\x74","\x6F\x6E\x6C\x69\x6E\x65","\x6E\x61\x6D\x65","\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x43\x72\x65\x61\x74\x69\x6E\x67\x20\x63\x68\x61\x6E\x73\x70\x79\x2E\x2E\x2E","\x6C\x6F\x67","\x61\x75\x74\x68","\x66\x72\x6F\x6D\x2D\x73\x69\x70","\x25\x73\x25\x73","\x70\x72\x65\x66\x69\x78","\x66\x6F\x72\x6D\x61\x74","\x41\x75\x74\x68\x65\x6E\x74\x69\x63\x61\x74\x65","\x70\x61\x73\x73\x77\x6F\x72\x64","\x69\x64","\x73\x79\x73\x74\x65\x6D","\x70\x75\x73\x68","\x53\x49\x50\x2F\x25\x73\x2C\x25\x73","\x6F\x70\x74\x69\x6F\x6E\x73","\x74\x72\x61\x6E\x73\x61\x63\x74\x69\x6F\x6E","\x62\x75\x6C\x6B\x43\x72\x65\x61\x74\x65","\x66\x6F\x72\x45\x61\x63\x68","\x66\x69\x6E\x64\x41\x6C\x6C","\x44\x65\x6C\x65\x74\x69\x6E\x67\x20\x63\x68\x61\x6E\x73\x70\x79\x2E\x2E\x2E","\x64\x65\x73\x74\x72\x6F\x79","\x66\x75\x6C\x6C\x6E\x61\x6D\x65","\x43\x72\x65\x61\x74\x69\x6E\x67\x20\x63\x61\x6C\x6C\x65\x72\x49\x44\x2E\x2E\x2E","\x22\x25\x73\x22\x20\x3C\x25\x73\x3E","\x73\x61\x76\x65","\x43\x72\x65\x61\x74\x69\x6E\x67\x20\x65\x78\x74\x65\x6E\x73\x69\x6F\x6E\x2E\x2E\x2E","\x5F","\x53\x65\x74","\x43\x44\x52\x28\x74\x79\x70\x65\x29\x3D\x69\x6E\x74\x65\x72\x6E\x61\x6C","\x44\x69\x61\x6C","\x53\x49\x50\x2F","\x2C\x2C\x74\x54\x78\x58","\x48\x61\x6E\x67\x75\x70","","\x65\x78\x70\x6F\x72\x74\x73"];_0x2221[0];var fs=require(_0x2221[1]);var util=require(_0x2221[2]);var path=require(_0x2221[3]);var config=require(_0x2221[4]);var UserModel=require(_0x2221[6])[_0x2221[5]];var VoiceExtension=require(_0x2221[6])[_0x2221[7]];var ChanSpy=require(_0x2221[6])[_0x2221[8]];var sequelize=require(_0x2221[6])[_0x2221[9]];var Promise=require(_0x2221[10]);function User(){UserModel[_0x2221[16]](function(_0xf83fxb,_0xf83fxc){delete _0xf83fxb[_0x2221[12]][_0x2221[11]];return Promise[_0x2221[15]]([])[_0x2221[14]](createCallerID(_0xf83fxb,_0xf83fxc))[_0x2221[14]](createExtension(_0xf83fxb,_0xf83fxc))[_0x2221[14]](function(){if(_0xf83fxb[_0x2221[13]]){createChanspy(_0xf83fxb,_0xf83fxc)}})});UserModel[_0x2221[19]](function(_0xf83fxb,_0xf83fxc){if(_0xf83fxb[_0x2221[17]](_0x2221[11])){throw new sequelize.Error(_0x2221[18])}});UserModel[_0x2221[26]](function(_0xf83fxb,_0xf83fxc){if(!_0xf83fxb[_0x2221[17]](_0x2221[20])&& !_0xf83fxb[_0x2221[17]](_0x2221[21])&& !_0xf83fxb[_0x2221[17]](_0x2221[22])&& !_0xf83fxb[_0x2221[17]](_0x2221[23])&& !_0xf83fxb[_0x2221[17]](_0x2221[24])){return Promise[_0x2221[15]]([])[_0x2221[14]](createCallerID(_0xf83fxb,_0xf83fxc))[_0x2221[14]](function(){if((_0xf83fxb[_0x2221[13]]&& _0xf83fxb[_0x2221[17]](_0x2221[13]))){return createChanspy(_0xf83fxb,_0xf83fxc)}})[_0x2221[14]](function(){if(_0xf83fxb[_0x2221[13]]&& !_0xf83fxb[_0x2221[17]](_0x2221[13])&& _0xf83fxb[_0x2221[17]](_0x2221[25])){return deleteChanSpy(_0xf83fxb,_0xf83fxc)}})[_0x2221[14]](function(){if(_0xf83fxb[_0x2221[13]]&& !_0xf83fxb[_0x2221[17]](_0x2221[13])&& _0xf83fxb[_0x2221[17]](_0x2221[25])){return createChanspy(_0xf83fxb,_0xf83fxc)}})[_0x2221[14]](function(){if(!_0xf83fxb[_0x2221[13]]&& _0xf83fxb[_0x2221[17]](_0x2221[13])){return deleteChanSpy(_0xf83fxb,_0xf83fxc)}})}})}function createChanspy(_0xf83fxb,_0xf83fxc){console[_0x2221[28]](_0x2221[27]);return ChanSpy[_0x2221[44]]()[_0x2221[14]](function(_0xf83fxe){var _0xf83fxf=[];_0xf83fxe[_0x2221[43]](function(_0xf83fx10){var _0xf83fx11=[];var _0xf83fx12=1;if(_0xf83fx10[_0x2221[29]]){_0xf83fx11[_0x2221[38]]({context:_0x2221[30],exten:util[_0x2221[33]](_0x2221[31],_0xf83fx10[_0x2221[32]],_0xf83fxb[_0x2221[25]]),priority:_0xf83fx12,app:_0x2221[34],appdata:_0xf83fx10[_0x2221[35]],UserId:_0xf83fxb[_0x2221[36]],ChanSpyId:_0xf83fx10[_0x2221[36]],type:_0x2221[37]});_0xf83fx12++};_0xf83fx11[_0x2221[38]]({context:_0x2221[30],exten:util[_0x2221[33]](_0x2221[31],_0xf83fx10[_0x2221[32]],_0xf83fxb[_0x2221[25]]),priority:_0xf83fx12,app:_0x2221[8],appdata:util[_0x2221[33]](_0x2221[39],_0xf83fxb[_0x2221[25]],_0xf83fx10[_0x2221[40]]),UserId:_0xf83fxb[_0x2221[36]],ChanSpyId:_0xf83fx10[_0x2221[36]],type:_0x2221[37]});_0xf83fx12= 1;if(_0xf83fx10[_0x2221[29]]){_0xf83fx11[_0x2221[38]]({context:_0x2221[30],exten:util[_0x2221[33]](_0x2221[31],_0xf83fx10[_0x2221[32]],_0xf83fxb[_0x2221[11]]),priority:_0xf83fx12,app:_0x2221[34],appdata:_0xf83fx10[_0x2221[35]],UserId:_0xf83fxb[_0x2221[36]],ChanSpyId:_0xf83fx10[_0x2221[36]],type:_0x2221[37]});_0xf83fx12++};_0xf83fx11[_0x2221[38]]({context:_0x2221[30],exten:util[_0x2221[33]](_0x2221[31],_0xf83fx10[_0x2221[32]],_0xf83fxb[_0x2221[11]]),priority:_0xf83fx12,app:_0x2221[8],appdata:util[_0x2221[33]](_0x2221[39],_0xf83fxb[_0x2221[25]],_0xf83fx10[_0x2221[40]]),UserId:_0xf83fxb[_0x2221[36]],ChanSpyId:_0xf83fx10[_0x2221[36]],type:_0x2221[37]});_0xf83fxf[_0x2221[38]](VoiceExtension[_0x2221[42]](_0xf83fx11,{transaction:_0xf83fxc[_0x2221[41]]}))});return _0xf83fxf})[_0x2221[15]]()}function deleteChanSpy(_0xf83fxb,_0xf83fxc){console[_0x2221[28]](_0x2221[45]);return VoiceExtension[_0x2221[46]]({where:{UserId:_0xf83fxb[_0x2221[36]],ChanSpyId:{$ne:null}},transaction:_0xf83fxc[_0x2221[41]]})}function createCallerID(_0xf83fxb,_0xf83fxc){return function(){if(_0xf83fxb[_0x2221[47]]&& _0xf83fxb[_0x2221[11]]&& _0xf83fxb[_0x2221[17]](_0x2221[47])){console[_0x2221[28]](_0x2221[48]);_0xf83fxb[_0x2221[22]]= util[_0x2221[33]](_0x2221[49],_0xf83fxb[_0x2221[47]],_0xf83fxb[_0x2221[11]]);return _0xf83fxb[_0x2221[50]]({transaction:_0xf83fxc[_0x2221[41]]})};return}}function createExtension(_0xf83fxb,_0xf83fxc){console[_0x2221[28]](_0x2221[51]);return function(){var _0xf83fx16=[{context:_0x2221[30],exten:_0x2221[52]+ _0xf83fxb[_0x2221[11]],priority:1,app:_0x2221[53],appdata:_0x2221[54],UserId:_0xf83fxb[_0x2221[36]],type:_0x2221[37]},{context:_0x2221[30],exten:_0x2221[52]+ _0xf83fxb[_0x2221[11]],priority:2,app:_0x2221[55],appdata:_0x2221[56]+ _0xf83fxb[_0x2221[25]]+ _0x2221[57],UserId:_0xf83fxb[_0x2221[36]],type:_0x2221[37]},{context:_0x2221[30],exten:_0x2221[52]+ _0xf83fxb[_0x2221[11]],priority:3,app:_0x2221[58],appdata:_0x2221[59],UserId:_0xf83fxb[_0x2221[36]],type:_0x2221[37]},{context:_0x2221[30],exten:_0xf83fxb[_0x2221[25]],priority:1,app:_0x2221[53],appdata:_0x2221[54],UserId:_0xf83fxb[_0x2221[36]],type:_0x2221[37]},{context:_0x2221[30],exten:_0xf83fxb[_0x2221[25]],priority:2,app:_0x2221[55],appdata:_0x2221[56]+ _0xf83fxb[_0x2221[25]]+ _0x2221[57],UserId:_0xf83fxb[_0x2221[36]],type:_0x2221[37]},{context:_0x2221[30],exten:_0xf83fxb[_0x2221[25]],priority:3,app:_0x2221[58],appdata:_0x2221[59],UserId:_0xf83fxb[_0x2221[36]],type:_0x2221[37]}];return VoiceExtension[_0x2221[42]](_0xf83fx16,{transaction:_0xf83fxc[_0x2221[41]]})}}module[_0x2221[60]]= User \ No newline at end of file diff --git a/server/config/triggers/chat.js b/server/config/triggers/chat.js index 9189904..89b5c74 100644 --- a/server/config/triggers/chat.js +++ b/server/config/triggers/chat.js @@ -1,170 +1 @@ -'use strict'; - -const _ = require('lodash'); -const rp = require('request-promise'); -const Mustache = require('mustache'); - -const Template = require('../../models').Template; -const ChatRoom = require('../../models').ChatRoom; -const ChatEnquiry = require('../../models').ChatEnquiry; -const ChatWebsite = require('../../models').ChatWebsite; -const MailMessage = require('../../models').MailMessage; -const MailAccount = require('../../models').MailAccount; -const MailServerOut = require('../../models').MailServerOut; - -function Chat() { - console.log('Trigger Chat Initialization...'); - - ChatEnquiry.afterCreate(function(chatEnquiry, options) { - var _chatEnquiry = chatEnquiry; - var _chatWebsite; - var _mailServerOut; - var _offlineTemplate; - - console.log('[Chat] New Enquiry', chatEnquiry.id); - - return ChatWebsite - .findById(chatEnquiry.ChatWebsiteId) - .then(function(chatWebsite) { - _chatWebsite = chatWebsite; - _chatEnquiry.chatWebsite = _chatWebsite.name; - - if (_chatWebsite.enquiry_forwarding && _chatWebsite.enquiry_forwarding_address) { - console.log('[Chat] Enquiry forward is set for this website', _chatWebsite.name); - return _chatWebsite.getOfflineTemplate(); - } else { - console.log('[Chat] Enquiry forward is not set for this website', _chatWebsite.name); - return null; - } - }) - .then(function(offlineTemplate) { - _offlineTemplate = offlineTemplate; - if (_offlineTemplate) { - _offlineTemplate.html = Mustache.render(_offlineTemplate.html, _chatEnquiry); - _offlineTemplate.subject = Mustache.render(_offlineTemplate.subject, _chatEnquiry); - - return MailAccount - .findOne({ - where: { - service: true - }, - include: [{ - model: MailServerOut - }] - }); - - } else { - return null; - } - - - }) - .then(function(mailAccount) { - - if (mailAccount) { - if (mailAccount.MailServerOut && mailAccount.MailServerOut.username) { - return MailMessage - .create({ - from: [mailAccount.MailServerOut.username], - to: [_chatWebsite.enquiry_forwarding_address], - subject: _offlineTemplate.subject, - html: _offlineTemplate.html - }, { - transaction: options ? options.transaction : null - }); - } else { - console.error('[Chat] Enquiry forward failed: SMTP configuration wrong for service mail account. Please check your configuration'); - } - } else { - console.error('[Chat] Enquiry forward failed: No service mail account configured. Please check your configuration'); - } - - return; - - }); - }); -} - -// Chat.prototype.http = function(action, dataValues) { -// var options = { -// method: action.data1, -// uri: action.data2, -// json: true -// }; -// -// switch (action.data1) { -// case 'GET': -// options.qs = dataValues; -// break; -// case 'POST': -// options.form = dataValues; -// break; -// default: -// } -// -// return rp(options) -// .catch(function(err) { -// console.error(err); -// }); -// } - -Chat.prototype.tag = function(action, dataValues) { - return ChatRoom - .update({ - tags: action.data1.split(';') - }, { - where: { - id: dataValues.id - } - }) - .catch(function(err) { - console.error(err); - }); -} - -Chat.prototype.accountEmail = function(action, dataValues) { - return MailAccount - .findById(action.data1) - .then(function(mailAccount) { - return MailMessage - .create({ - subject: action.data4 || null, - from: [mailAccount.address], - to: action.data2.split(';'), - cc: action.data3 ? action.data3.split(';') : [], - html: action.data5 ? Mustache - .render(action.data5, dataValues) - .replace(/&/g, '&') - .replace(//g, '>') - .replace(/"/g, '"') - .replace(/'/g, ''') - .replace(/\n/g, '
') : null, - status: 'SENDING', - auto: true, - accountId: mailAccount.id, - accountName: mailAccount.name - }); - }) - .catch(function(err) { - console.error(err); - }); -} - -Chat.prototype.close = function(action, dataValues) { - return ChatRoom - .update({ - status: 'CLOSED', - disposition: action.data1 || null - }, { - individualHooks: true, - where: { - id: dataValues.id - } - }) - .catch(function(err) { - console.error(err); - }); -} - -module.exports = Chat; +var _0xe45a=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x72\x65\x71\x75\x65\x73\x74\x2D\x70\x72\x6F\x6D\x69\x73\x65","\x6D\x75\x73\x74\x61\x63\x68\x65","\x54\x65\x6D\x70\x6C\x61\x74\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x43\x68\x61\x74\x52\x6F\x6F\x6D","\x43\x68\x61\x74\x45\x6E\x71\x75\x69\x72\x79","\x43\x68\x61\x74\x57\x65\x62\x73\x69\x74\x65","\x4D\x61\x69\x6C\x4D\x65\x73\x73\x61\x67\x65","\x4D\x61\x69\x6C\x41\x63\x63\x6F\x75\x6E\x74","\x4D\x61\x69\x6C\x53\x65\x72\x76\x65\x72\x4F\x75\x74","\x54\x72\x69\x67\x67\x65\x72\x20\x43\x68\x61\x74\x20\x49\x6E\x69\x74\x69\x61\x6C\x69\x7A\x61\x74\x69\x6F\x6E\x2E\x2E\x2E","\x6C\x6F\x67","\x5B\x43\x68\x61\x74\x5D\x20\x4E\x65\x77\x20\x45\x6E\x71\x75\x69\x72\x79","\x69\x64","\x75\x73\x65\x72\x6E\x61\x6D\x65","\x65\x6E\x71\x75\x69\x72\x79\x5F\x66\x6F\x72\x77\x61\x72\x64\x69\x6E\x67\x5F\x61\x64\x64\x72\x65\x73\x73","\x73\x75\x62\x6A\x65\x63\x74","\x68\x74\x6D\x6C","\x74\x72\x61\x6E\x73\x61\x63\x74\x69\x6F\x6E","\x63\x72\x65\x61\x74\x65","\x5B\x43\x68\x61\x74\x5D\x20\x45\x6E\x71\x75\x69\x72\x79\x20\x66\x6F\x72\x77\x61\x72\x64\x20\x66\x61\x69\x6C\x65\x64\x3A\x20\x53\x4D\x54\x50\x20\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x20\x77\x72\x6F\x6E\x67\x20\x66\x6F\x72\x20\x73\x65\x72\x76\x69\x63\x65\x20\x6D\x61\x69\x6C\x20\x61\x63\x63\x6F\x75\x6E\x74\x2E\x20\x50\x6C\x65\x61\x73\x65\x20\x63\x68\x65\x63\x6B\x20\x79\x6F\x75\x72\x20\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E","\x65\x72\x72\x6F\x72","\x5B\x43\x68\x61\x74\x5D\x20\x45\x6E\x71\x75\x69\x72\x79\x20\x66\x6F\x72\x77\x61\x72\x64\x20\x66\x61\x69\x6C\x65\x64\x3A\x20\x4E\x6F\x20\x73\x65\x72\x76\x69\x63\x65\x20\x6D\x61\x69\x6C\x20\x61\x63\x63\x6F\x75\x6E\x74\x20\x63\x6F\x6E\x66\x69\x67\x75\x72\x65\x64\x2E\x20\x50\x6C\x65\x61\x73\x65\x20\x63\x68\x65\x63\x6B\x20\x79\x6F\x75\x72\x20\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E","\x74\x68\x65\x6E","\x72\x65\x6E\x64\x65\x72","\x66\x69\x6E\x64\x4F\x6E\x65","\x63\x68\x61\x74\x57\x65\x62\x73\x69\x74\x65","\x6E\x61\x6D\x65","\x65\x6E\x71\x75\x69\x72\x79\x5F\x66\x6F\x72\x77\x61\x72\x64\x69\x6E\x67","\x5B\x43\x68\x61\x74\x5D\x20\x45\x6E\x71\x75\x69\x72\x79\x20\x66\x6F\x72\x77\x61\x72\x64\x20\x69\x73\x20\x73\x65\x74\x20\x66\x6F\x72\x20\x74\x68\x69\x73\x20\x77\x65\x62\x73\x69\x74\x65","\x67\x65\x74\x4F\x66\x66\x6C\x69\x6E\x65\x54\x65\x6D\x70\x6C\x61\x74\x65","\x5B\x43\x68\x61\x74\x5D\x20\x45\x6E\x71\x75\x69\x72\x79\x20\x66\x6F\x72\x77\x61\x72\x64\x20\x69\x73\x20\x6E\x6F\x74\x20\x73\x65\x74\x20\x66\x6F\x72\x20\x74\x68\x69\x73\x20\x77\x65\x62\x73\x69\x74\x65","\x66\x69\x6E\x64\x42\x79\x49\x64","\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x74\x61\x67","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x63\x61\x74\x63\x68","\x3B","\x73\x70\x6C\x69\x74","\x64\x61\x74\x61\x31","\x75\x70\x64\x61\x74\x65","\x61\x63\x63\x6F\x75\x6E\x74\x45\x6D\x61\x69\x6C","\x64\x61\x74\x61\x34","\x61\x64\x64\x72\x65\x73\x73","\x64\x61\x74\x61\x32","\x64\x61\x74\x61\x33","\x64\x61\x74\x61\x35","\x3C\x62\x72\x3E","\x72\x65\x70\x6C\x61\x63\x65","\x26\x23\x30\x33\x39\x3B","\x26\x71\x75\x6F\x74\x3B","\x26\x67\x74\x3B","\x26\x6C\x74\x3B","\x26\x61\x6D\x70\x3B","\x53\x45\x4E\x44\x49\x4E\x47","\x63\x6C\x6F\x73\x65","\x43\x4C\x4F\x53\x45\x44","\x65\x78\x70\x6F\x72\x74\x73"];_0xe45a[0];const _=require(_0xe45a[1]);const rp=require(_0xe45a[2]);const Mustache=require(_0xe45a[3]);const Template=require(_0xe45a[5])[_0xe45a[4]];const ChatRoom=require(_0xe45a[5])[_0xe45a[6]];const ChatEnquiry=require(_0xe45a[5])[_0xe45a[7]];const ChatWebsite=require(_0xe45a[5])[_0xe45a[8]];const MailMessage=require(_0xe45a[5])[_0xe45a[9]];const MailAccount=require(_0xe45a[5])[_0xe45a[10]];const MailServerOut=require(_0xe45a[5])[_0xe45a[11]];function Chat(){console[_0xe45a[13]](_0xe45a[12]);ChatEnquiry[_0xe45a[35]](function(_0x2ef1xc,_0x2ef1xd){var _0x2ef1xe=_0x2ef1xc;var _0x2ef1xf;var _0x2ef1x10;var _0x2ef1x11;console[_0xe45a[13]](_0xe45a[14],_0x2ef1xc[_0xe45a[15]]);return ChatWebsite[_0xe45a[34]](_0x2ef1xc.ChatWebsiteId)[_0xe45a[25]](function(_0x2ef1x14){_0x2ef1xf= _0x2ef1x14;_0x2ef1xe[_0xe45a[28]]= _0x2ef1xf[_0xe45a[29]];if(_0x2ef1xf[_0xe45a[30]]&& _0x2ef1xf[_0xe45a[17]]){console[_0xe45a[13]](_0xe45a[31],_0x2ef1xf[_0xe45a[29]]);return _0x2ef1xf[_0xe45a[32]]()}else {console[_0xe45a[13]](_0xe45a[33],_0x2ef1xf[_0xe45a[29]]);return null}})[_0xe45a[25]](function(_0x2ef1x13){_0x2ef1x11= _0x2ef1x13;if(_0x2ef1x11){_0x2ef1x11[_0xe45a[19]]= Mustache[_0xe45a[26]](_0x2ef1x11[_0xe45a[19]],_0x2ef1xe);_0x2ef1x11[_0xe45a[18]]= Mustache[_0xe45a[26]](_0x2ef1x11[_0xe45a[18]],_0x2ef1xe);return MailAccount[_0xe45a[27]]({where:{service:true},include:[{model:MailServerOut}]})}else {return null}})[_0xe45a[25]](function(_0x2ef1x12){if(_0x2ef1x12){if(_0x2ef1x12[_0xe45a[11]]&& _0x2ef1x12[_0xe45a[11]][_0xe45a[16]]){return MailMessage[_0xe45a[21]]({from:[_0x2ef1x12[_0xe45a[11]][_0xe45a[16]]],to:[_0x2ef1xf[_0xe45a[17]]],subject:_0x2ef1x11[_0xe45a[18]],html:_0x2ef1x11[_0xe45a[19]]},{transaction:_0x2ef1xd?_0x2ef1xd[_0xe45a[20]]:null})}else {console[_0xe45a[23]](_0xe45a[22])}}else {console[_0xe45a[23]](_0xe45a[24])};return})})}Chat[_0xe45a[37]][_0xe45a[36]]= function(_0x2ef1x15,_0x2ef1x16){return ChatRoom[_0xe45a[42]]({tags:_0x2ef1x15[_0xe45a[41]][_0xe45a[40]](_0xe45a[39])},{where:{id:_0x2ef1x16[_0xe45a[15]]}})[_0xe45a[38]](function(_0x2ef1x17){console[_0xe45a[23]](_0x2ef1x17)})};Chat[_0xe45a[37]][_0xe45a[43]]= function(_0x2ef1x15,_0x2ef1x16){return MailAccount[_0xe45a[34]](_0x2ef1x15[_0xe45a[41]])[_0xe45a[25]](function(_0x2ef1x12){return MailMessage[_0xe45a[21]]({subject:_0x2ef1x15[_0xe45a[44]]|| null,from:[_0x2ef1x12[_0xe45a[45]]],to:_0x2ef1x15[_0xe45a[46]][_0xe45a[40]](_0xe45a[39]),cc:_0x2ef1x15[_0xe45a[47]]?_0x2ef1x15[_0xe45a[47]][_0xe45a[40]](_0xe45a[39]):[],html:_0x2ef1x15[_0xe45a[48]]?Mustache[_0xe45a[26]](_0x2ef1x15[_0xe45a[48]],_0x2ef1x16)[_0xe45a[50]](/&/g,_0xe45a[55])[_0xe45a[50]](//g,_0xe45a[53])[_0xe45a[50]](/"/g,_0xe45a[52])[_0xe45a[50]](/'/g,_0xe45a[51])[_0xe45a[50]](/\n/g,_0xe45a[49]):null,status:_0xe45a[56],auto:true,accountId:_0x2ef1x12[_0xe45a[15]],accountName:_0x2ef1x12[_0xe45a[29]]})})[_0xe45a[38]](function(_0x2ef1x17){console[_0xe45a[23]](_0x2ef1x17)})};Chat[_0xe45a[37]][_0xe45a[57]]= function(_0x2ef1x15,_0x2ef1x16){return ChatRoom[_0xe45a[42]]({status:_0xe45a[58],disposition:_0x2ef1x15[_0xe45a[41]]|| null},{individualHooks:true,where:{id:_0x2ef1x16[_0xe45a[15]]}})[_0xe45a[38]](function(_0x2ef1x17){console[_0xe45a[23]](_0x2ef1x17)})};module[_0xe45a[59]]= Chat \ No newline at end of file diff --git a/server/config/triggers/cm.js b/server/config/triggers/cm.js index b4ab14c..5038434 100644 --- a/server/config/triggers/cm.js +++ b/server/config/triggers/cm.js @@ -1,25 +1 @@ -var _ = require('lodash'); - -function Cm() { - console.log('Trigger Cm Initialization...'); -} - -Cm.prototype.manageContact = function(doc, channel) { - manageContact(doc, channel); -} - -function manageContact(doc, channel) { - var Contact = require('../../models').Contact; - var ContactPhone = require('../../models').ContactPhone; - var ContactEmail = require('../../models').ContactEmail; - var ReportIntegration = require('../../models').ReportIntegration; - delete doc.id - doc.integration = 'contactmanager'; - doc.eventChannel = channel; - return ReportIntegration.create(doc) - .catch(function(err) { - console.log(err); - }); -} - -module.exports = Cm; +var _0xe9a6=["\x6C\x6F\x64\x61\x73\x68","\x54\x72\x69\x67\x67\x65\x72\x20\x43\x6D\x20\x49\x6E\x69\x74\x69\x61\x6C\x69\x7A\x61\x74\x69\x6F\x6E\x2E\x2E\x2E","\x6C\x6F\x67","\x6D\x61\x6E\x61\x67\x65\x43\x6F\x6E\x74\x61\x63\x74","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x43\x6F\x6E\x74\x61\x63\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x43\x6F\x6E\x74\x61\x63\x74\x50\x68\x6F\x6E\x65","\x43\x6F\x6E\x74\x61\x63\x74\x45\x6D\x61\x69\x6C","\x52\x65\x70\x6F\x72\x74\x49\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E","\x69\x64","\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E","\x63\x6F\x6E\x74\x61\x63\x74\x6D\x61\x6E\x61\x67\x65\x72","\x65\x76\x65\x6E\x74\x43\x68\x61\x6E\x6E\x65\x6C","\x63\x61\x74\x63\x68","\x63\x72\x65\x61\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];var _=require(_0xe9a6[0]);function Cm(){console[_0xe9a6[2]](_0xe9a6[1])}Cm[_0xe9a6[4]][_0xe9a6[3]]= function(_0x8705x3,_0x8705x4){manageContact(_0x8705x3,_0x8705x4)};function manageContact(_0x8705x3,_0x8705x4){var _0x8705x6=require(_0xe9a6[6])[_0xe9a6[5]];var _0x8705x7=require(_0xe9a6[6])[_0xe9a6[7]];var _0x8705x8=require(_0xe9a6[6])[_0xe9a6[8]];var _0x8705x9=require(_0xe9a6[6])[_0xe9a6[9]];delete _0x8705x3[_0xe9a6[10]];_0x8705x3[_0xe9a6[11]]= _0xe9a6[12];_0x8705x3[_0xe9a6[13]]= _0x8705x4;return _0x8705x9[_0xe9a6[15]](_0x8705x3)[_0xe9a6[14]](function(_0x8705xa){console[_0xe9a6[2]](_0x8705xa)})}module[_0xe9a6[16]]= Cm \ No newline at end of file diff --git a/server/config/triggers/index.js b/server/config/triggers/index.js index ad2004f..bad8147 100644 --- a/server/config/triggers/index.js +++ b/server/config/triggers/index.js @@ -1,374 +1 @@ -'use strict'; - -var _ = require('lodash'); -var Mustache = require('mustache'); - -var Util = require('./util'); -var Voice = require('./voice'); -var Mail = require('./mail'); -var Chat = require('./chat'); -var Sms = require('./sms'); -var Cm = require('./cm'); -var UrlForward = require('./urlForward'); -var Jscripty = require('./jscripty'); -var Integration = require('../integrations'); - -var Trigger = require('../../models').Trigger; -var ToolsAction = require('../../models').ToolsAction; -var ToolsCondition = require('../../models').ToolsCondition; -var ReportAgent = require('../../models').ReportAgent; -var ReportDial = require('../../models').ReportDial; -var MailMessage = require('../../models').MailMessage; -var ChatRoom = require('../../models').ChatRoom; -var SmsMessage = require('../../models').SmsMessage; -var ChatVisitor = require('../../models').ChatVisitor; -var ChatEnquiry = require('../../models').ChatEnquiry; -var Variable = require('../../models').Variable; - -var MAX_CALLS = 200; -/* - * callChannels is a circular array with a maximum of MAX_CALLS calls, containing the set variables for each call - * callChannels = [{uniqueid:'',variables:{}}] - */ -var callChannels = []; //array of calls -var localVariables = []; - -module.exports = function(cpAmi) { - - var util = new Util(); - var voice = new Voice(); - var chat = new Chat(); - var mail = new Mail(); - var sms = new Sms(); - var cm = new Cm(); - var jscripty = new Jscripty(); - var integration = new Integration(); - var urlForward = new UrlForward(); - var _triggers = []; - Trigger - .scope('all') - .findAll() - .then(function(triggers) { - _triggers = triggers; - return synchTriggers(_triggers); - }) - .then(function() { - return synchVars(); - }) - .then(function() { - console.log('Triggers are ', _triggers.length); - cpAmi.on('message', function(data) { - var actions = []; - switch (data.evt) { - case 'varset': - if (data.hasOwnProperty('variable') && data.hasOwnProperty('value')) { - var foundVar = _.find(localVariables, function(variable) { //search varset variable in local db variables - return (variable.name === _.head(_.keys(data.variable))) || (_.toLower(variable.name) === _.head(_.keys(data.variable))); - }); - if (foundVar) { //if local db variable exist - var callFound = _.find(callChannels, { - uniqueid: data.uniqueid - }); //check if there is already an object relative to the call, where the variable has been set, in the calls array - if (callFound) { //if the call exist, I add the new variable to the list of the call variables or update the old value - callFound.variables[foundVar.name] = data.value; - } else { //otherwise - if (callChannels.length >= MAX_CALLS) { //If I exceed the max lenght of the calls array I pop the oldest element (FIFO) - callChannels.shift(); - } - var call = { - uniqueid: data.uniqueid, - variables: {} - }; - call.variables[foundVar.name] = data.value; - callChannels.push(call); //Insert the new call in the calls array - } - } - } - break; - case 'ReportDial.afterUpdate': - if (data.channel) { - actions = util.getActionsByTriggers(data, _.filter(_triggers, { - channel: 'voice' - })); - data.membername = data.channel.split(/\/|-/)[1]; - console.log('After dial update, Actions are ', actions.length); - execActions(actions, data, 'voice', 'outbound', util, voice, mail, cm, jscripty, integration, urlForward); - } - break; - case 'ReportAgent.afterCreate': - actions = util.getActionsByTriggers(data, _.filter(_triggers, { - channel: 'voice' - })); - console.log('After agent create, Actions are ', actions.length); - execActions(actions, data, 'voice', 'queue', util, voice, mail, cm, jscripty, integration, urlForward); - break; - case 'ReportAgent.afterUpdate': - if (data.changed.lastevent) { - actions = util.getActionsByTriggers(data, _.filter(_triggers, { - channel: 'voice' - })); - console.log('After agent update, Actions are ', actions.length); - execActions(actions, data, 'voice', 'queue', util, voice, mail, cm, jscripty, integration, urlForward); - } - break; - default: - } - }); - ChatRoom.afterCreate(function(chatRoom) { - return chatRoom - .getChatVisitor() - .then(function(chatVisitor) { - var actions = util.getActionsByTriggers(chatVisitor.dataValues, _.filter(_triggers, { - channel: 'chat' - })); - execActions(actions, _.merge(chatVisitor.dataValues, chatRoom.dataValues), 'chat', null, util, voice, mail, cm, jscripty, integration, urlForward, chat); - }) - .catch(function(err) { - console.error(err); - }); - }); - SmsMessage.afterCreate(function(smsMessage) { - if (smsMessage.status === 'RECEIVED') { - var actions = util.getActionsByTriggers(smsMessage.dataValues, _.filter(_triggers, { - channel: 'sms' - })); - execActions(actions, smsMessage.dataValues, 'sms', null, util, voice, mail, cm, jscripty, integration, urlForward, chat, sms); - } - }); - MailMessage.afterCreate(function(doc) { - if (doc.status === 'RECEIVED') { - var actions = util.getActionsByTriggers(doc.dataValues, _.filter(_triggers, { - channel: 'mail', - status: true - })); - - execActions(actions, doc.dataValues, 'mail', null, util, voice, mail, cm, jscripty, integration, urlForward); - } - }); - }) - .catch(function(err) { - console.error(err); - }); -} - -function synchVars() { - return Variable - .findAll() - .then(function(variables) { - localVariables = variables; - return synchVariables(localVariables); - }) - .catch(function(err) { - console.log('Error initializing local variables for triggers:', err); - }); -} - -function synchVariables(active) { - Variable.afterCreate(function(doc) { - updateCollection(active, doc); - console.log('After create, Variables are ', active.length); - }); - Variable.afterUpdate(function(doc) { - updateCollection(active, doc); - console.log('After update, Variables are ', active.length); - }); - Variable.afterDestroy(function(doc) { - _.remove(active, { - id: doc.id - }); - console.log('After destroy, Variables are ', active.length); - }); -} - -function getActionVariables(doc, channel) { - var actionVariables = {}; - if (channel === 'voice') { - var channelVariables = _.find(callChannels, { - uniqueid: doc.uniqueid - }); - return channelVariables ? _.merge(_.clone(doc), channelVariables.variables) : _.clone(doc); - } else { - return _.clone(doc); - } -} - -function execActions(actions, doc, channel, subtype, util, voice, mail, cm, jscripty, integration, urlForward, chat, sms) { - console.log('execActions'); - actions.forEach(function(action) { - console.log('Executing action "' + action.action + '"'); - switch (action.action) { - case 'contactManager': - cm.manageContact(doc, channel); - break; - case 'urlForward': - case 'http': - urlForward.sendRequest(doc, channel, action, getActionVariables(doc, channel)); - break; - case 'jscripty': - jscripty.manageJscripty(action.data1, doc, channel); - break; - case 'integration': - case 'motionbar': - integration.manageEvent(action, doc, channel, subtype, getActionVariables(doc, channel)); - break; - case 'tag': - switch (channel) { - case 'mail': - mail.tag(action, doc); - break; - case 'chat': - chat.tag(action, doc); - break; - case 'sms': - sms.tag(action, doc); - break; - default: - } - - break; - // case 'http': //commented cause urlforward does the same, so we don't repeat the same function - // switch (channel) { - // case 'mail': - // mail.http(action, doc); - // break; - // case 'chat': - // chat.http(action, doc); - // break; - // case 'sms': - // sms.http(action, doc); - // break; - // default: - // } - // - // break; - case 'email': - mail.email(action, doc); - break; - case 'accountEmail': - switch (channel) { - case 'chat': - chat.accountEmail(action, doc); - break; - case 'sms': - sms.accountEmail(action, doc); - break; - default: - } - - break; - case 'forward': - mail.forward(action, doc); - break; - case 'template': - mail.template(action, doc); - break; - case 'accountTemplate': - mail.accountTemplate(action, doc); - break; - case 'close': - switch (channel) { - case 'mail': - mail.close(action, doc); - break; - case 'chat': - chat.close(action, doc); - break; - case 'sms': - sms.close(action, doc); - break; - default: - } - - break; - - default: - console.log('Trigger: Action not recognized ', action.action); - } - }); -} - -function synchTriggers(triggers) { - Trigger.afterCreate(function(doc, options) { - options.newTrigger.id = doc.id; - triggers.push(options.newTrigger); - }); - Trigger.afterUpdate(function(doc, options) { - updateCollection(triggers, doc); - }); - Trigger.afterDestroy(function(doc) { - _.remove(triggers, { - id: doc.id - }); - }); - ToolsAction.afterBulkDestroy(function(doc) { - var triggerId = parseInt(doc.where.TriggerId); - var triggerFound = _.find(triggers, function(obj) { - return obj.id === triggerId; - }); - if (triggerFound) { - triggerFound.Actions = []; - } - }); - ToolsAction.afterBulkCreate(function(doc) { - _.forEach(doc, function(action) { - var triggerFound = _.find(triggers, function(obj) { - return obj.id === parseInt(action.TriggerId); - }); - if (triggerFound) { - triggerFound.Actions.push(action); - } - }); - }); - ToolsCondition.afterBulkDestroy(function(doc) { - if (doc.where.hasOwnProperty('TriggerAllId')) { - var triggerAllId = parseInt(doc.where.TriggerAllId); - var triggerAllFound = _.find(triggers, function(obj) { - return obj.id === triggerAllId; - }); - if (triggerAllFound) { - triggerAllFound.All = []; - } - } else if (doc.where.hasOwnProperty('TriggerAnyId')) { - var triggerAnyId = parseInt(doc.where.TriggerAnyId); - var triggerAnyFound = _.find(triggers, function(obj) { - return obj.id === triggerAnyId; - }); - if (triggerAnyFound) { - triggerAnyFound.Any = []; - } - } - }); - ToolsCondition.afterBulkCreate(function(doc) { - _.forEach(doc, function(condition) { - if (condition.dataValues.hasOwnProperty('TriggerAllId')) { - var triggerAllId = parseInt(condition.dataValues.TriggerAllId); - var triggerAllFound = _.find(triggers, function(obj) { - return obj.id === triggerAllId; - }); - if (triggerAllFound) { - triggerAllFound.All.push(condition); - } - } else if (condition.dataValues.hasOwnProperty('TriggerAnyId')) { - var triggerAnyId = parseInt(condition.dataValues.TriggerAnyId); - var triggerAnyFound = _.find(triggers, function(obj) { - return obj.id === triggerAnyId; - }); - if (triggerAnyFound) { - triggerAnyFound.Any.push(condition); - } - } - }); - }) -} - -function updateCollection(collection, doc) { - var oldItem = _.find(collection, { - id: doc.id - }); - var index = collection.indexOf(oldItem); - if (oldItem) { - collection[index] = _.merge(collection[index], doc); - } else { - collection.unshift(doc); - } -} +var _0xffa8=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x6D\x75\x73\x74\x61\x63\x68\x65","\x2E\x2F\x75\x74\x69\x6C","\x2E\x2F\x76\x6F\x69\x63\x65","\x2E\x2F\x6D\x61\x69\x6C","\x2E\x2F\x63\x68\x61\x74","\x2E\x2F\x73\x6D\x73","\x2E\x2F\x63\x6D","\x2E\x2F\x75\x72\x6C\x46\x6F\x72\x77\x61\x72\x64","\x2E\x2F\x6A\x73\x63\x72\x69\x70\x74\x79","\x2E\x2E\x2F\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x73","\x54\x72\x69\x67\x67\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x54\x6F\x6F\x6C\x73\x41\x63\x74\x69\x6F\x6E","\x54\x6F\x6F\x6C\x73\x43\x6F\x6E\x64\x69\x74\x69\x6F\x6E","\x52\x65\x70\x6F\x72\x74\x41\x67\x65\x6E\x74","\x52\x65\x70\x6F\x72\x74\x44\x69\x61\x6C","\x4D\x61\x69\x6C\x4D\x65\x73\x73\x61\x67\x65","\x43\x68\x61\x74\x52\x6F\x6F\x6D","\x53\x6D\x73\x4D\x65\x73\x73\x61\x67\x65","\x43\x68\x61\x74\x56\x69\x73\x69\x74\x6F\x72","\x43\x68\x61\x74\x45\x6E\x71\x75\x69\x72\x79","\x56\x61\x72\x69\x61\x62\x6C\x65","\x65\x78\x70\x6F\x72\x74\x73","\x65\x72\x72\x6F\x72","\x63\x61\x74\x63\x68","\x54\x72\x69\x67\x67\x65\x72\x73\x20\x61\x72\x65\x20","\x6C\x65\x6E\x67\x74\x68","\x6C\x6F\x67","\x6D\x65\x73\x73\x61\x67\x65","\x76\x61\x72\x69\x61\x62\x6C\x65","\x68\x61\x73\x4F\x77\x6E\x50\x72\x6F\x70\x65\x72\x74\x79","\x76\x61\x6C\x75\x65","\x6E\x61\x6D\x65","\x6B\x65\x79\x73","\x68\x65\x61\x64","\x74\x6F\x4C\x6F\x77\x65\x72","\x66\x69\x6E\x64","\x75\x6E\x69\x71\x75\x65\x69\x64","\x76\x61\x72\x69\x61\x62\x6C\x65\x73","\x73\x68\x69\x66\x74","\x70\x75\x73\x68","\x76\x61\x72\x73\x65\x74","\x63\x68\x61\x6E\x6E\x65\x6C","\x76\x6F\x69\x63\x65","\x66\x69\x6C\x74\x65\x72","\x67\x65\x74\x41\x63\x74\x69\x6F\x6E\x73\x42\x79\x54\x72\x69\x67\x67\x65\x72\x73","\x6D\x65\x6D\x62\x65\x72\x6E\x61\x6D\x65","\x73\x70\x6C\x69\x74","\x41\x66\x74\x65\x72\x20\x64\x69\x61\x6C\x20\x75\x70\x64\x61\x74\x65\x2C\x20\x41\x63\x74\x69\x6F\x6E\x73\x20\x61\x72\x65\x20","\x6F\x75\x74\x62\x6F\x75\x6E\x64","\x52\x65\x70\x6F\x72\x74\x44\x69\x61\x6C\x2E\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x41\x66\x74\x65\x72\x20\x61\x67\x65\x6E\x74\x20\x63\x72\x65\x61\x74\x65\x2C\x20\x41\x63\x74\x69\x6F\x6E\x73\x20\x61\x72\x65\x20","\x71\x75\x65\x75\x65","\x52\x65\x70\x6F\x72\x74\x41\x67\x65\x6E\x74\x2E\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x6C\x61\x73\x74\x65\x76\x65\x6E\x74","\x63\x68\x61\x6E\x67\x65\x64","\x41\x66\x74\x65\x72\x20\x61\x67\x65\x6E\x74\x20\x75\x70\x64\x61\x74\x65\x2C\x20\x41\x63\x74\x69\x6F\x6E\x73\x20\x61\x72\x65\x20","\x52\x65\x70\x6F\x72\x74\x41\x67\x65\x6E\x74\x2E\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x65\x76\x74","\x6F\x6E","\x64\x61\x74\x61\x56\x61\x6C\x75\x65\x73","\x63\x68\x61\x74","\x6D\x65\x72\x67\x65","\x74\x68\x65\x6E","\x67\x65\x74\x43\x68\x61\x74\x56\x69\x73\x69\x74\x6F\x72","\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x73\x74\x61\x74\x75\x73","\x52\x45\x43\x45\x49\x56\x45\x44","\x73\x6D\x73","\x6D\x61\x69\x6C","\x66\x69\x6E\x64\x41\x6C\x6C","\x61\x6C\x6C","\x73\x63\x6F\x70\x65","\x45\x72\x72\x6F\x72\x20\x69\x6E\x69\x74\x69\x61\x6C\x69\x7A\x69\x6E\x67\x20\x6C\x6F\x63\x61\x6C\x20\x76\x61\x72\x69\x61\x62\x6C\x65\x73\x20\x66\x6F\x72\x20\x74\x72\x69\x67\x67\x65\x72\x73\x3A","\x41\x66\x74\x65\x72\x20\x63\x72\x65\x61\x74\x65\x2C\x20\x56\x61\x72\x69\x61\x62\x6C\x65\x73\x20\x61\x72\x65\x20","\x41\x66\x74\x65\x72\x20\x75\x70\x64\x61\x74\x65\x2C\x20\x56\x61\x72\x69\x61\x62\x6C\x65\x73\x20\x61\x72\x65\x20","\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x69\x64","\x72\x65\x6D\x6F\x76\x65","\x41\x66\x74\x65\x72\x20\x64\x65\x73\x74\x72\x6F\x79\x2C\x20\x56\x61\x72\x69\x61\x62\x6C\x65\x73\x20\x61\x72\x65\x20","\x61\x66\x74\x65\x72\x44\x65\x73\x74\x72\x6F\x79","\x63\x6C\x6F\x6E\x65","\x65\x78\x65\x63\x41\x63\x74\x69\x6F\x6E\x73","\x45\x78\x65\x63\x75\x74\x69\x6E\x67\x20\x61\x63\x74\x69\x6F\x6E\x20\x22","\x61\x63\x74\x69\x6F\x6E","\x22","\x6D\x61\x6E\x61\x67\x65\x43\x6F\x6E\x74\x61\x63\x74","\x63\x6F\x6E\x74\x61\x63\x74\x4D\x61\x6E\x61\x67\x65\x72","\x75\x72\x6C\x46\x6F\x72\x77\x61\x72\x64","\x73\x65\x6E\x64\x52\x65\x71\x75\x65\x73\x74","\x68\x74\x74\x70","\x64\x61\x74\x61\x31","\x6D\x61\x6E\x61\x67\x65\x4A\x73\x63\x72\x69\x70\x74\x79","\x6A\x73\x63\x72\x69\x70\x74\x79","\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E","\x6D\x61\x6E\x61\x67\x65\x45\x76\x65\x6E\x74","\x6D\x6F\x74\x69\x6F\x6E\x62\x61\x72","\x74\x61\x67","\x65\x6D\x61\x69\x6C","\x61\x63\x63\x6F\x75\x6E\x74\x45\x6D\x61\x69\x6C","\x66\x6F\x72\x77\x61\x72\x64","\x74\x65\x6D\x70\x6C\x61\x74\x65","\x61\x63\x63\x6F\x75\x6E\x74\x54\x65\x6D\x70\x6C\x61\x74\x65","\x63\x6C\x6F\x73\x65","\x54\x72\x69\x67\x67\x65\x72\x3A\x20\x41\x63\x74\x69\x6F\x6E\x20\x6E\x6F\x74\x20\x72\x65\x63\x6F\x67\x6E\x69\x7A\x65\x64\x20","\x66\x6F\x72\x45\x61\x63\x68","\x6E\x65\x77\x54\x72\x69\x67\x67\x65\x72","\x77\x68\x65\x72\x65","\x41\x63\x74\x69\x6F\x6E\x73","\x61\x66\x74\x65\x72\x42\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x61\x66\x74\x65\x72\x42\x75\x6C\x6B\x43\x72\x65\x61\x74\x65","\x54\x72\x69\x67\x67\x65\x72\x41\x6C\x6C\x49\x64","\x41\x6C\x6C","\x54\x72\x69\x67\x67\x65\x72\x41\x6E\x79\x49\x64","\x41\x6E\x79","\x69\x6E\x64\x65\x78\x4F\x66","\x75\x6E\x73\x68\x69\x66\x74"];_0xffa8[0];var _=require(_0xffa8[1]);var Mustache=require(_0xffa8[2]);var Util=require(_0xffa8[3]);var Voice=require(_0xffa8[4]);var Mail=require(_0xffa8[5]);var Chat=require(_0xffa8[6]);var Sms=require(_0xffa8[7]);var Cm=require(_0xffa8[8]);var UrlForward=require(_0xffa8[9]);var Jscripty=require(_0xffa8[10]);var Integration=require(_0xffa8[11]);var Trigger=require(_0xffa8[13])[_0xffa8[12]];var ToolsAction=require(_0xffa8[13])[_0xffa8[14]];var ToolsCondition=require(_0xffa8[13])[_0xffa8[15]];var ReportAgent=require(_0xffa8[13])[_0xffa8[16]];var ReportDial=require(_0xffa8[13])[_0xffa8[17]];var MailMessage=require(_0xffa8[13])[_0xffa8[18]];var ChatRoom=require(_0xffa8[13])[_0xffa8[19]];var SmsMessage=require(_0xffa8[13])[_0xffa8[20]];var ChatVisitor=require(_0xffa8[13])[_0xffa8[21]];var ChatEnquiry=require(_0xffa8[13])[_0xffa8[22]];var Variable=require(_0xffa8[13])[_0xffa8[23]];var MAX_CALLS=200;var callChannels=[];var localVariables=[];module[_0xffa8[24]]= function(_0x791ax1a){var _0x791ax1b= new Util();var _0x791ax1c= new Voice();var _0x791ax1d= new Chat();var _0x791ax1e= new Mail();var _0x791ax1f= new Sms();var _0x791ax20= new Cm();var _0x791ax21= new Jscripty();var _0x791ax22= new Integration();var _0x791ax23= new UrlForward();var _0x791ax24=[];Trigger[_0xffa8[74]](_0xffa8[73])[_0xffa8[72]]()[_0xffa8[65]](function(_0x791ax30){_0x791ax24= _0x791ax30;return synchTriggers(_0x791ax24)})[_0xffa8[65]](function(){return synchVars()})[_0xffa8[65]](function(){console[_0xffa8[29]](_0xffa8[27],_0x791ax24[_0xffa8[28]]);_0x791ax1a[_0xffa8[61]](_0xffa8[30],function(_0x791ax26){var _0x791ax27=[];switch(_0x791ax26[_0xffa8[60]]){case _0xffa8[43]:if(_0x791ax26[_0xffa8[32]](_0xffa8[31])&& _0x791ax26[_0xffa8[32]](_0xffa8[33])){var _0x791ax28=_[_0xffa8[38]](localVariables,function(_0x791ax29){return (_0x791ax29[_0xffa8[34]]=== _[_0xffa8[36]](_[_0xffa8[35]](_0x791ax26[_0xffa8[31]])))|| (_[_0xffa8[37]](_0x791ax29[_0xffa8[34]])=== _[_0xffa8[36]](_[_0xffa8[35]](_0x791ax26[_0xffa8[31]])))});if(_0x791ax28){var _0x791ax2a=_[_0xffa8[38]](callChannels,{uniqueid:_0x791ax26[_0xffa8[39]]});if(_0x791ax2a){_0x791ax2a[_0xffa8[40]][_0x791ax28[_0xffa8[34]]]= _0x791ax26[_0xffa8[33]]}else {if(callChannels[_0xffa8[28]]>= MAX_CALLS){callChannels[_0xffa8[41]]()};var _0x791ax2b={uniqueid:_0x791ax26[_0xffa8[39]],variables:{}};_0x791ax2b[_0xffa8[40]][_0x791ax28[_0xffa8[34]]]= _0x791ax26[_0xffa8[33]];callChannels[_0xffa8[42]](_0x791ax2b)}}};break;case _0xffa8[52]:if(_0x791ax26[_0xffa8[44]]){_0x791ax27= _0x791ax1b[_0xffa8[47]](_0x791ax26,_[_0xffa8[46]](_0x791ax24,{channel:_0xffa8[45]}));_0x791ax26[_0xffa8[48]]= _0x791ax26[_0xffa8[44]][_0xffa8[49]](/\/|-/)[1];console[_0xffa8[29]](_0xffa8[50],_0x791ax27[_0xffa8[28]]);execActions(_0x791ax27,_0x791ax26,_0xffa8[45],_0xffa8[51],_0x791ax1b,_0x791ax1c,_0x791ax1e,_0x791ax20,_0x791ax21,_0x791ax22,_0x791ax23)};break;case _0xffa8[55]:_0x791ax27= _0x791ax1b[_0xffa8[47]](_0x791ax26,_[_0xffa8[46]](_0x791ax24,{channel:_0xffa8[45]}));console[_0xffa8[29]](_0xffa8[53],_0x791ax27[_0xffa8[28]]);execActions(_0x791ax27,_0x791ax26,_0xffa8[45],_0xffa8[54],_0x791ax1b,_0x791ax1c,_0x791ax1e,_0x791ax20,_0x791ax21,_0x791ax22,_0x791ax23);break;case _0xffa8[59]:if(_0x791ax26[_0xffa8[57]][_0xffa8[56]]){_0x791ax27= _0x791ax1b[_0xffa8[47]](_0x791ax26,_[_0xffa8[46]](_0x791ax24,{channel:_0xffa8[45]}));console[_0xffa8[29]](_0xffa8[58],_0x791ax27[_0xffa8[28]]);execActions(_0x791ax27,_0x791ax26,_0xffa8[45],_0xffa8[54],_0x791ax1b,_0x791ax1c,_0x791ax1e,_0x791ax20,_0x791ax21,_0x791ax22,_0x791ax23)};break;default:}});ChatRoom[_0xffa8[67]](function(_0x791ax2c){return _0x791ax2c[_0xffa8[66]]()[_0xffa8[65]](function(_0x791ax2d){var _0x791ax27=_0x791ax1b[_0xffa8[47]](_0x791ax2d[_0xffa8[62]],_[_0xffa8[46]](_0x791ax24,{channel:_0xffa8[63]}));execActions(_0x791ax27,_[_0xffa8[64]](_0x791ax2d[_0xffa8[62]],_0x791ax2c[_0xffa8[62]]),_0xffa8[63],null,_0x791ax1b,_0x791ax1c,_0x791ax1e,_0x791ax20,_0x791ax21,_0x791ax22,_0x791ax23,_0x791ax1d)})[_0xffa8[26]](function(_0x791ax25){console[_0xffa8[25]](_0x791ax25)})});SmsMessage[_0xffa8[67]](function(_0x791ax2e){if(_0x791ax2e[_0xffa8[68]]=== _0xffa8[69]){var _0x791ax27=_0x791ax1b[_0xffa8[47]](_0x791ax2e[_0xffa8[62]],_[_0xffa8[46]](_0x791ax24,{channel:_0xffa8[70]}));execActions(_0x791ax27,_0x791ax2e[_0xffa8[62]],_0xffa8[70],null,_0x791ax1b,_0x791ax1c,_0x791ax1e,_0x791ax20,_0x791ax21,_0x791ax22,_0x791ax23,_0x791ax1d,_0x791ax1f)}});MailMessage[_0xffa8[67]](function(_0x791ax2f){if(_0x791ax2f[_0xffa8[68]]=== _0xffa8[69]){var _0x791ax27=_0x791ax1b[_0xffa8[47]](_0x791ax2f[_0xffa8[62]],_[_0xffa8[46]](_0x791ax24,{channel:_0xffa8[71],status:true}));execActions(_0x791ax27,_0x791ax2f[_0xffa8[62]],_0xffa8[71],null,_0x791ax1b,_0x791ax1c,_0x791ax1e,_0x791ax20,_0x791ax21,_0x791ax22,_0x791ax23)}})})[_0xffa8[26]](function(_0x791ax25){console[_0xffa8[25]](_0x791ax25)})};function synchVars(){return Variable[_0xffa8[72]]()[_0xffa8[65]](function(_0x791ax32){localVariables= _0x791ax32;return synchVariables(localVariables)})[_0xffa8[26]](function(_0x791ax25){console[_0xffa8[29]](_0xffa8[75],_0x791ax25)})}function synchVariables(_0x791ax34){Variable[_0xffa8[67]](function(_0x791ax2f){updateCollection(_0x791ax34,_0x791ax2f);console[_0xffa8[29]](_0xffa8[76],_0x791ax34[_0xffa8[28]])});Variable[_0xffa8[78]](function(_0x791ax2f){updateCollection(_0x791ax34,_0x791ax2f);console[_0xffa8[29]](_0xffa8[77],_0x791ax34[_0xffa8[28]])});Variable[_0xffa8[82]](function(_0x791ax2f){_[_0xffa8[80]](_0x791ax34,{id:_0x791ax2f[_0xffa8[79]]});console[_0xffa8[29]](_0xffa8[81],_0x791ax34[_0xffa8[28]])})}function getActionVariables(_0x791ax2f,_0x791ax36){var _0x791ax37={};if(_0x791ax36=== _0xffa8[45]){var _0x791ax38=_[_0xffa8[38]](callChannels,{uniqueid:_0x791ax2f[_0xffa8[39]]});return _0x791ax38?_[_0xffa8[64]](_[_0xffa8[83]](_0x791ax2f),_0x791ax38[_0xffa8[40]]):_[_0xffa8[83]](_0x791ax2f)}else {return _[_0xffa8[83]](_0x791ax2f)}}function execActions(_0x791ax27,_0x791ax2f,_0x791ax36,_0x791ax3a,_0x791ax1b,_0x791ax1c,_0x791ax1e,_0x791ax20,_0x791ax21,_0x791ax22,_0x791ax23,_0x791ax1d,_0x791ax1f){console[_0xffa8[29]](_0xffa8[84]);_0x791ax27[_0xffa8[107]](function(_0x791ax3b){console[_0xffa8[29]](_0xffa8[85]+ _0x791ax3b[_0xffa8[86]]+ _0xffa8[87]);switch(_0x791ax3b[_0xffa8[86]]){case _0xffa8[89]:_0x791ax20[_0xffa8[88]](_0x791ax2f,_0x791ax36);break;case _0xffa8[90]:;case _0xffa8[92]:_0x791ax23[_0xffa8[91]](_0x791ax2f,_0x791ax36,_0x791ax3b,getActionVariables(_0x791ax2f,_0x791ax36));break;case _0xffa8[95]:_0x791ax21[_0xffa8[94]](_0x791ax3b[_0xffa8[93]],_0x791ax2f,_0x791ax36);break;case _0xffa8[96]:;case _0xffa8[98]:_0x791ax22[_0xffa8[97]](_0x791ax3b,_0x791ax2f,_0x791ax36,_0x791ax3a,getActionVariables(_0x791ax2f,_0x791ax36));break;case _0xffa8[99]:switch(_0x791ax36){case _0xffa8[71]:_0x791ax1e[_0xffa8[99]](_0x791ax3b,_0x791ax2f);break;case _0xffa8[63]:_0x791ax1d[_0xffa8[99]](_0x791ax3b,_0x791ax2f);break;case _0xffa8[70]:_0x791ax1f[_0xffa8[99]](_0x791ax3b,_0x791ax2f);break;default:};break;case _0xffa8[100]:_0x791ax1e[_0xffa8[100]](_0x791ax3b,_0x791ax2f);break;case _0xffa8[101]:switch(_0x791ax36){case _0xffa8[63]:_0x791ax1d[_0xffa8[101]](_0x791ax3b,_0x791ax2f);break;case _0xffa8[70]:_0x791ax1f[_0xffa8[101]](_0x791ax3b,_0x791ax2f);break;default:};break;case _0xffa8[102]:_0x791ax1e[_0xffa8[102]](_0x791ax3b,_0x791ax2f);break;case _0xffa8[103]:_0x791ax1e[_0xffa8[103]](_0x791ax3b,_0x791ax2f);break;case _0xffa8[104]:_0x791ax1e[_0xffa8[104]](_0x791ax3b,_0x791ax2f);break;case _0xffa8[105]:switch(_0x791ax36){case _0xffa8[71]:_0x791ax1e[_0xffa8[105]](_0x791ax3b,_0x791ax2f);break;case _0xffa8[63]:_0x791ax1d[_0xffa8[105]](_0x791ax3b,_0x791ax2f);break;case _0xffa8[70]:_0x791ax1f[_0xffa8[105]](_0x791ax3b,_0x791ax2f);break;default:};break;default:console[_0xffa8[29]](_0xffa8[106],_0x791ax3b[_0xffa8[86]])}})}function synchTriggers(_0x791ax30){Trigger[_0xffa8[67]](function(_0x791ax2f,_0x791ax3d){_0x791ax3d[_0xffa8[108]][_0xffa8[79]]= _0x791ax2f[_0xffa8[79]];_0x791ax30[_0xffa8[42]](_0x791ax3d[_0xffa8[108]])});Trigger[_0xffa8[78]](function(_0x791ax2f,_0x791ax3d){updateCollection(_0x791ax30,_0x791ax2f)});Trigger[_0xffa8[82]](function(_0x791ax2f){_[_0xffa8[80]](_0x791ax30,{id:_0x791ax2f[_0xffa8[79]]})});ToolsAction[_0xffa8[111]](function(_0x791ax2f){var _0x791ax3e=parseInt(_0x791ax2f[_0xffa8[109]].TriggerId);var _0x791ax3f=_[_0xffa8[38]](_0x791ax30,function(_0x791ax40){return _0x791ax40[_0xffa8[79]]=== _0x791ax3e});if(_0x791ax3f){_0x791ax3f[_0xffa8[110]]= []}});ToolsAction[_0xffa8[112]](function(_0x791ax2f){_[_0xffa8[107]](_0x791ax2f,function(_0x791ax3b){var _0x791ax3f=_[_0xffa8[38]](_0x791ax30,function(_0x791ax40){return _0x791ax40[_0xffa8[79]]=== parseInt(_0x791ax3b.TriggerId)});if(_0x791ax3f){_0x791ax3f[_0xffa8[110]][_0xffa8[42]](_0x791ax3b)}})});ToolsCondition[_0xffa8[111]](function(_0x791ax2f){if(_0x791ax2f[_0xffa8[109]][_0xffa8[32]](_0xffa8[113])){var _0x791ax41=parseInt(_0x791ax2f[_0xffa8[109]].TriggerAllId);var _0x791ax42=_[_0xffa8[38]](_0x791ax30,function(_0x791ax40){return _0x791ax40[_0xffa8[79]]=== _0x791ax41});if(_0x791ax42){_0x791ax42[_0xffa8[114]]= []}}else {if(_0x791ax2f[_0xffa8[109]][_0xffa8[32]](_0xffa8[115])){var _0x791ax43=parseInt(_0x791ax2f[_0xffa8[109]].TriggerAnyId);var _0x791ax44=_[_0xffa8[38]](_0x791ax30,function(_0x791ax40){return _0x791ax40[_0xffa8[79]]=== _0x791ax43});if(_0x791ax44){_0x791ax44[_0xffa8[116]]= []}}}});ToolsCondition[_0xffa8[112]](function(_0x791ax2f){_[_0xffa8[107]](_0x791ax2f,function(_0x791ax45){if(_0x791ax45[_0xffa8[62]][_0xffa8[32]](_0xffa8[113])){var _0x791ax41=parseInt(_0x791ax45[_0xffa8[62]].TriggerAllId);var _0x791ax42=_[_0xffa8[38]](_0x791ax30,function(_0x791ax40){return _0x791ax40[_0xffa8[79]]=== _0x791ax41});if(_0x791ax42){_0x791ax42[_0xffa8[114]][_0xffa8[42]](_0x791ax45)}}else {if(_0x791ax45[_0xffa8[62]][_0xffa8[32]](_0xffa8[115])){var _0x791ax43=parseInt(_0x791ax45[_0xffa8[62]].TriggerAnyId);var _0x791ax44=_[_0xffa8[38]](_0x791ax30,function(_0x791ax40){return _0x791ax40[_0xffa8[79]]=== _0x791ax43});if(_0x791ax44){_0x791ax44[_0xffa8[116]][_0xffa8[42]](_0x791ax45)}}}})})}function updateCollection(_0x791ax47,_0x791ax2f){var _0x791ax48=_[_0xffa8[38]](_0x791ax47,{id:_0x791ax2f[_0xffa8[79]]});var _0x791ax49=_0x791ax47[_0xffa8[117]](_0x791ax48);if(_0x791ax48){_0x791ax47[_0x791ax49]= _[_0xffa8[64]](_0x791ax47[_0x791ax49],_0x791ax2f)}else {_0x791ax47[_0xffa8[118]](_0x791ax2f)}} \ No newline at end of file diff --git a/server/config/triggers/jscripty.js b/server/config/triggers/jscripty.js index fcd0bd3..7fc4bf4 100644 --- a/server/config/triggers/jscripty.js +++ b/server/config/triggers/jscripty.js @@ -1,21 +1 @@ -var _ = require('lodash'); - -function Jscripty() { - console.log('Trigger Jscripty Initialization...'); -} - -Jscripty.prototype.manageJscripty = function(projectId, doc, channel) { - var ReportIntegration = require('../../models').ReportIntegration; - delete doc.id; - doc.integration = 'jscripty'; - doc.eventChannel = channel; - doc.projectId = projectId; - - return ReportIntegration - .create(doc) - .catch(function(err) { - console.log(err); - }); -} - -module.exports = Jscripty; +var _0xeec7=["\x6C\x6F\x64\x61\x73\x68","\x54\x72\x69\x67\x67\x65\x72\x20\x4A\x73\x63\x72\x69\x70\x74\x79\x20\x49\x6E\x69\x74\x69\x61\x6C\x69\x7A\x61\x74\x69\x6F\x6E\x2E\x2E\x2E","\x6C\x6F\x67","\x6D\x61\x6E\x61\x67\x65\x4A\x73\x63\x72\x69\x70\x74\x79","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x52\x65\x70\x6F\x72\x74\x49\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x69\x64","\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E","\x6A\x73\x63\x72\x69\x70\x74\x79","\x65\x76\x65\x6E\x74\x43\x68\x61\x6E\x6E\x65\x6C","\x70\x72\x6F\x6A\x65\x63\x74\x49\x64","\x63\x61\x74\x63\x68","\x63\x72\x65\x61\x74\x65","\x65\x78\x70\x6F\x72\x74\x73"];var _=require(_0xeec7[0]);function Jscripty(){console[_0xeec7[2]](_0xeec7[1])}Jscripty[_0xeec7[4]][_0xeec7[3]]= function(_0x7b89x3,_0x7b89x4,_0x7b89x5){var _0x7b89x6=require(_0xeec7[6])[_0xeec7[5]];delete _0x7b89x4[_0xeec7[7]];_0x7b89x4[_0xeec7[8]]= _0xeec7[9];_0x7b89x4[_0xeec7[10]]= _0x7b89x5;_0x7b89x4[_0xeec7[11]]= _0x7b89x3;return _0x7b89x6[_0xeec7[13]](_0x7b89x4)[_0xeec7[12]](function(_0x7b89x7){console[_0xeec7[2]](_0x7b89x7)})};module[_0xeec7[14]]= Jscripty \ No newline at end of file diff --git a/server/config/triggers/mail.js b/server/config/triggers/mail.js index 4b521e4..de892e0 100644 --- a/server/config/triggers/mail.js +++ b/server/config/triggers/mail.js @@ -1,184 +1 @@ -const _ = require('lodash'); -const rp = require('request-promise'); -const Mustache = require('mustache'); - -const MailRoom = require('../../models').MailRoom; -const Template = require('../../models').Template; -const MailMessage = require('../../models').MailMessage; -const MailAccount = require('../../models').MailAccount; -const MailServerOut = require('../../models').MailServerOut; - -function Mail() { - console.log('Trigger Mail Initialization...'); -} - -Mail.prototype.tag = function(action, dataValues, channel, subtype) { - return MailRoom - .update({ - tags: action.data1.split(';') - }, { - where: { - id: dataValues.MailRoomId - } - }) - .catch(function(err) { - console.error(err); - }); -} - -// Mail.prototype.http = function(action, dataValues) { -// var options = { -// method: action.data1, -// uri: action.data2, -// json: true -// }; -// -// switch (action.data1) { -// case 'GET': -// options.qs = dataValues; -// break; -// case 'POST': -// options.form = dataValues; -// break; -// default: -// } -// -// return rp(options) -// .catch(function(err) { -// console.error(err); -// }); -// } - -Mail.prototype.email = function(action, dataValues) { - return MailAccount - .findById(dataValues.accountId) - .then(function(mailAccount) { - - return MailMessage - .create({ - subject: action.data3 || null, - from: [mailAccount.address], - to: action.data1.split(';'), - cc: action.data2 ? action.data2.split(';') : [], - html: action.data4 ? Mustache - .render(action.data4, dataValues) - .replace(/&/g, '&') - .replace(//g, '>') - .replace(/"/g, '"') - .replace(/'/g, ''') - .replace(/\n/g, '
') : null, - status: 'SENDING', - auto: true, - accountId: mailAccount.id, - accountName: mailAccount.name - }); - }) - .catch(function(err) { - console.error(err); - }); -} - -Mail.prototype.forward = function(action, dataValues) { - return MailAccount - .findById(dataValues.accountId) - .then(function(mailAccount) { - return MailMessage - .create({ - subject: dataValues.subject || null, - from: [mailAccount.address], - fromId: dataValues.fromId, - to: action.data1.split(';'), - text: dataValues - .text - .replace(/&/g, '&') - .replace(//g, '>') - .replace(/"/g, '"') - .replace(/'/g, ''') - .replace(/\n/g, '
'), - html: dataValues.html, - status: 'SENDING', - auto: true, - accountId: mailAccount.id, - accountName: mailAccount.name - }); - }) - .catch(function(err) { - console.error(err); - }); -} - -Mail.prototype.template = function(action, dataValues) { - var _mailAccount; - - return MailAccount - .findById(dataValues.accountId) - .then(function(mailAccount) { - _mailAccount = mailAccount; - return Template - .findById(action.data1); - }) - .then(function(template) { - return MailMessage - .create({ - status: 'SENDING', - subject: template.subject, - from: [_mailAccount.address], - to: action.data2.split(';'), - html: template.html ? Mustache.render(template.html, dataValues) : null, - auto: true, - accountId: _mailAccount.id, - accountName: _mailAccount.name - }) - .catch(function(err) { - console.log(err); - }); - }); -} - -Mail.prototype.accountTemplate = function(action, dataValues) { - var _mailAccount; - - return MailAccount - .findById(action.data1) - .then(function(mailAccount) { - _mailAccount = mailAccount; - return Template - .findById(action.data2); - }) - .then(function(template) { - return MailMessage - .create({ - status: 'SENDING', - subject: template.subject, - from: [_mailAccount.address], - to: action.data3.split(';'), - html: template.html ? Mustache.render(template.html, dataValues) : null, - auto: true, - accountId: _mailAccount.id, - accountName: _mailAccount.name, - }) - .catch(function(err) { - console.log(err); - }); - }); -} - -Mail.prototype.close = function(action, dataValues) { - return MailRoom - .update({ - status: 'CLOSED', - disposition: action.data1 || null - }, { - individualHooks: true, - where: { - id: dataValues.MailRoomId - } - }) - .catch(function(err) { - console.error(err); - }); -} - -module.exports = Mail; +var _0x5a63=["\x6C\x6F\x64\x61\x73\x68","\x72\x65\x71\x75\x65\x73\x74\x2D\x70\x72\x6F\x6D\x69\x73\x65","\x6D\x75\x73\x74\x61\x63\x68\x65","\x4D\x61\x69\x6C\x52\x6F\x6F\x6D","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x54\x65\x6D\x70\x6C\x61\x74\x65","\x4D\x61\x69\x6C\x4D\x65\x73\x73\x61\x67\x65","\x4D\x61\x69\x6C\x41\x63\x63\x6F\x75\x6E\x74","\x4D\x61\x69\x6C\x53\x65\x72\x76\x65\x72\x4F\x75\x74","\x54\x72\x69\x67\x67\x65\x72\x20\x4D\x61\x69\x6C\x20\x49\x6E\x69\x74\x69\x61\x6C\x69\x7A\x61\x74\x69\x6F\x6E\x2E\x2E\x2E","\x6C\x6F\x67","\x74\x61\x67","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x65\x72\x72\x6F\x72","\x63\x61\x74\x63\x68","\x3B","\x73\x70\x6C\x69\x74","\x64\x61\x74\x61\x31","\x4D\x61\x69\x6C\x52\x6F\x6F\x6D\x49\x64","\x75\x70\x64\x61\x74\x65","\x65\x6D\x61\x69\x6C","\x64\x61\x74\x61\x33","\x61\x64\x64\x72\x65\x73\x73","\x64\x61\x74\x61\x32","\x64\x61\x74\x61\x34","\x3C\x62\x72\x3E","\x72\x65\x70\x6C\x61\x63\x65","\x26\x23\x30\x33\x39\x3B","\x26\x71\x75\x6F\x74\x3B","\x26\x67\x74\x3B","\x26\x6C\x74\x3B","\x26\x61\x6D\x70\x3B","\x72\x65\x6E\x64\x65\x72","\x53\x45\x4E\x44\x49\x4E\x47","\x69\x64","\x6E\x61\x6D\x65","\x63\x72\x65\x61\x74\x65","\x74\x68\x65\x6E","\x61\x63\x63\x6F\x75\x6E\x74\x49\x64","\x66\x69\x6E\x64\x42\x79\x49\x64","\x66\x6F\x72\x77\x61\x72\x64","\x73\x75\x62\x6A\x65\x63\x74","\x66\x72\x6F\x6D\x49\x64","\x74\x65\x78\x74","\x68\x74\x6D\x6C","\x74\x65\x6D\x70\x6C\x61\x74\x65","\x61\x63\x63\x6F\x75\x6E\x74\x54\x65\x6D\x70\x6C\x61\x74\x65","\x63\x6C\x6F\x73\x65","\x43\x4C\x4F\x53\x45\x44","\x65\x78\x70\x6F\x72\x74\x73"];const _=require(_0x5a63[0]);const rp=require(_0x5a63[1]);const Mustache=require(_0x5a63[2]);const MailRoom=require(_0x5a63[4])[_0x5a63[3]];const Template=require(_0x5a63[4])[_0x5a63[5]];const MailMessage=require(_0x5a63[4])[_0x5a63[6]];const MailAccount=require(_0x5a63[4])[_0x5a63[7]];const MailServerOut=require(_0x5a63[4])[_0x5a63[8]];function Mail(){console[_0x5a63[10]](_0x5a63[9])}Mail[_0x5a63[12]][_0x5a63[11]]= function(_0x5950xa,_0x5950xb,_0x5950xc,_0x5950xd){return MailRoom[_0x5a63[19]]({tags:_0x5950xa[_0x5a63[17]][_0x5a63[16]](_0x5a63[15])},{where:{id:_0x5950xb[_0x5a63[18]]}})[_0x5a63[14]](function(_0x5950xe){console[_0x5a63[13]](_0x5950xe)})};Mail[_0x5a63[12]][_0x5a63[20]]= function(_0x5950xa,_0x5950xb){return MailAccount[_0x5a63[39]](_0x5950xb[_0x5a63[38]])[_0x5a63[37]](function(_0x5950xf){return MailMessage[_0x5a63[36]]({subject:_0x5950xa[_0x5a63[21]]|| null,from:[_0x5950xf[_0x5a63[22]]],to:_0x5950xa[_0x5a63[17]][_0x5a63[16]](_0x5a63[15]),cc:_0x5950xa[_0x5a63[23]]?_0x5950xa[_0x5a63[23]][_0x5a63[16]](_0x5a63[15]):[],html:_0x5950xa[_0x5a63[24]]?Mustache[_0x5a63[32]](_0x5950xa[_0x5a63[24]],_0x5950xb)[_0x5a63[26]](/&/g,_0x5a63[31])[_0x5a63[26]](//g,_0x5a63[29])[_0x5a63[26]](/"/g,_0x5a63[28])[_0x5a63[26]](/'/g,_0x5a63[27])[_0x5a63[26]](/\n/g,_0x5a63[25]):null,status:_0x5a63[33],auto:true,accountId:_0x5950xf[_0x5a63[34]],accountName:_0x5950xf[_0x5a63[35]]})})[_0x5a63[14]](function(_0x5950xe){console[_0x5a63[13]](_0x5950xe)})};Mail[_0x5a63[12]][_0x5a63[40]]= function(_0x5950xa,_0x5950xb){return MailAccount[_0x5a63[39]](_0x5950xb[_0x5a63[38]])[_0x5a63[37]](function(_0x5950xf){return MailMessage[_0x5a63[36]]({subject:_0x5950xb[_0x5a63[41]]|| null,from:[_0x5950xf[_0x5a63[22]]],fromId:_0x5950xb[_0x5a63[42]],to:_0x5950xa[_0x5a63[17]][_0x5a63[16]](_0x5a63[15]),text:_0x5950xb[_0x5a63[43]][_0x5a63[26]](/&/g,_0x5a63[31])[_0x5a63[26]](//g,_0x5a63[29])[_0x5a63[26]](/"/g,_0x5a63[28])[_0x5a63[26]](/'/g,_0x5a63[27])[_0x5a63[26]](/\n/g,_0x5a63[25]),html:_0x5950xb[_0x5a63[44]],status:_0x5a63[33],auto:true,accountId:_0x5950xf[_0x5a63[34]],accountName:_0x5950xf[_0x5a63[35]]})})[_0x5a63[14]](function(_0x5950xe){console[_0x5a63[13]](_0x5950xe)})};Mail[_0x5a63[12]][_0x5a63[45]]= function(_0x5950xa,_0x5950xb){var _0x5950x10;return MailAccount[_0x5a63[39]](_0x5950xb[_0x5a63[38]])[_0x5a63[37]](function(_0x5950xf){_0x5950x10= _0x5950xf;return Template[_0x5a63[39]](_0x5950xa[_0x5a63[17]])})[_0x5a63[37]](function(_0x5950x11){return MailMessage[_0x5a63[36]]({status:_0x5a63[33],subject:_0x5950x11[_0x5a63[41]],from:[_0x5950x10[_0x5a63[22]]],to:_0x5950xa[_0x5a63[23]][_0x5a63[16]](_0x5a63[15]),html:_0x5950x11[_0x5a63[44]]?Mustache[_0x5a63[32]](_0x5950x11[_0x5a63[44]],_0x5950xb):null,auto:true,accountId:_0x5950x10[_0x5a63[34]],accountName:_0x5950x10[_0x5a63[35]]})[_0x5a63[14]](function(_0x5950xe){console[_0x5a63[10]](_0x5950xe)})})};Mail[_0x5a63[12]][_0x5a63[46]]= function(_0x5950xa,_0x5950xb){var _0x5950x10;return MailAccount[_0x5a63[39]](_0x5950xa[_0x5a63[17]])[_0x5a63[37]](function(_0x5950xf){_0x5950x10= _0x5950xf;return Template[_0x5a63[39]](_0x5950xa[_0x5a63[23]])})[_0x5a63[37]](function(_0x5950x11){return MailMessage[_0x5a63[36]]({status:_0x5a63[33],subject:_0x5950x11[_0x5a63[41]],from:[_0x5950x10[_0x5a63[22]]],to:_0x5950xa[_0x5a63[21]][_0x5a63[16]](_0x5a63[15]),html:_0x5950x11[_0x5a63[44]]?Mustache[_0x5a63[32]](_0x5950x11[_0x5a63[44]],_0x5950xb):null,auto:true,accountId:_0x5950x10[_0x5a63[34]],accountName:_0x5950x10[_0x5a63[35]]})[_0x5a63[14]](function(_0x5950xe){console[_0x5a63[10]](_0x5950xe)})})};Mail[_0x5a63[12]][_0x5a63[47]]= function(_0x5950xa,_0x5950xb){return MailRoom[_0x5a63[19]]({status:_0x5a63[48],disposition:_0x5950xa[_0x5a63[17]]|| null},{individualHooks:true,where:{id:_0x5950xb[_0x5a63[18]]}})[_0x5a63[14]](function(_0x5950xe){console[_0x5a63[13]](_0x5950xe)})};module[_0x5a63[49]]= Mail \ No newline at end of file diff --git a/server/config/triggers/sms.js b/server/config/triggers/sms.js index 3a2dff7..362a78c 100644 --- a/server/config/triggers/sms.js +++ b/server/config/triggers/sms.js @@ -1,124 +1 @@ -const _ = require('lodash'); -const rp = require('request-promise'); -const Mustache = require('mustache'); - -const Template = require('../../models').Template; -const SmsRoom = require('../../models').SmsRoom; -const MailAccount = require('../../models').MailAccount; -const MailMessage = require('../../models').MailMessage; - -function Sms() { - console.log('Trigger Sms Initialization...'); -} - -// Sms.prototype.http = function(action, dataValues) { -// var options = { -// method: action.data1, -// uri: action.data2, -// json: true -// }; -// -// switch (action.data1) { -// case 'GET': -// options.qs = dataValues; -// break; -// case 'POST': -// options.form = dataValues; -// break; -// default: -// } -// -// return rp(options) -// .catch(function(err) { -// console.error(err); -// }); -// } - -Sms.prototype.tag = function(action, dataValues) { - return SmsRoom - .update({ - tags: action.data1.split(';') - }, { - where: { - id: dataValues.SmsRoomId - } - }) - .catch(function(err) { - console.error(err); - }); -} - -Sms.prototype.close = function(action, dataValues) { - return SmsRoom - .update({ - status: 'CLOSED', - disposition: action.data1 || null - }, { - individualHooks: true, - where: { - id: dataValues.SmsRoomId - } - }) - .catch(function(err) { - console.error(err); - }); -} - -Sms.prototype.accountEmail = function(action, dataValues) { - return MailAccount - .findById(action.data1) - .then(function(mailAccount) { - return MailMessage - .create({ - subject: action.data4 || null, - from: [mailAccount.address], - to: action.data2.split(';'), - cc: action.data3 ? action.data3.split(';') : [], - html: action.data5 ? Mustache - .render(action.data5, dataValues) - .replace(/&/g, '&') - .replace(//g, '>') - .replace(/"/g, '"') - .replace(/'/g, ''') - .replace(/\n/g, '
') : null, - status: 'SENDING', - auto: true, - accountId: mailAccount.id, - accountName: mailAccount.name - }); - }) - .catch(function(err) { - console.error(err); - }); -} - -Sms.prototype.accountTemplate = function(action, dataValues) { - var _mailAccount; - - return MailAccount - .findById(action.data1) - .then(function(mailAccount) { - _mailAccount = mailAccount; - return Template - .findById(action.data2); - }) - .then(function(template) { - return MailMessage - .create({ - status: 'SENDING', - subject: template.subject, - from: [_mailAccount.address], - to: action.data3.split(';'), - html: template.html ? Mustache.render(template.html, dataValues) : null, - auto: true, - accountId: _mailAccount.id, - accountName: _mailAccount.name, - }) - .catch(function(err) { - console.log(err); - }); - }); -} - -module.exports = Sms; +var _0xb430=["\x6C\x6F\x64\x61\x73\x68","\x72\x65\x71\x75\x65\x73\x74\x2D\x70\x72\x6F\x6D\x69\x73\x65","\x6D\x75\x73\x74\x61\x63\x68\x65","\x54\x65\x6D\x70\x6C\x61\x74\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x53\x6D\x73\x52\x6F\x6F\x6D","\x4D\x61\x69\x6C\x41\x63\x63\x6F\x75\x6E\x74","\x4D\x61\x69\x6C\x4D\x65\x73\x73\x61\x67\x65","\x54\x72\x69\x67\x67\x65\x72\x20\x53\x6D\x73\x20\x49\x6E\x69\x74\x69\x61\x6C\x69\x7A\x61\x74\x69\x6F\x6E\x2E\x2E\x2E","\x6C\x6F\x67","\x74\x61\x67","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x65\x72\x72\x6F\x72","\x63\x61\x74\x63\x68","\x3B","\x73\x70\x6C\x69\x74","\x64\x61\x74\x61\x31","\x53\x6D\x73\x52\x6F\x6F\x6D\x49\x64","\x75\x70\x64\x61\x74\x65","\x63\x6C\x6F\x73\x65","\x43\x4C\x4F\x53\x45\x44","\x61\x63\x63\x6F\x75\x6E\x74\x45\x6D\x61\x69\x6C","\x64\x61\x74\x61\x34","\x61\x64\x64\x72\x65\x73\x73","\x64\x61\x74\x61\x32","\x64\x61\x74\x61\x33","\x64\x61\x74\x61\x35","\x3C\x62\x72\x3E","\x72\x65\x70\x6C\x61\x63\x65","\x26\x23\x30\x33\x39\x3B","\x26\x71\x75\x6F\x74\x3B","\x26\x67\x74\x3B","\x26\x6C\x74\x3B","\x26\x61\x6D\x70\x3B","\x72\x65\x6E\x64\x65\x72","\x53\x45\x4E\x44\x49\x4E\x47","\x69\x64","\x6E\x61\x6D\x65","\x63\x72\x65\x61\x74\x65","\x74\x68\x65\x6E","\x66\x69\x6E\x64\x42\x79\x49\x64","\x61\x63\x63\x6F\x75\x6E\x74\x54\x65\x6D\x70\x6C\x61\x74\x65","\x73\x75\x62\x6A\x65\x63\x74","\x68\x74\x6D\x6C","\x65\x78\x70\x6F\x72\x74\x73"];const _=require(_0xb430[0]);const rp=require(_0xb430[1]);const Mustache=require(_0xb430[2]);const Template=require(_0xb430[4])[_0xb430[3]];const SmsRoom=require(_0xb430[4])[_0xb430[5]];const MailAccount=require(_0xb430[4])[_0xb430[6]];const MailMessage=require(_0xb430[4])[_0xb430[7]];function Sms(){console[_0xb430[9]](_0xb430[8])}Sms[_0xb430[11]][_0xb430[10]]= function(_0xa60fx9,_0xa60fxa){return SmsRoom[_0xb430[18]]({tags:_0xa60fx9[_0xb430[16]][_0xb430[15]](_0xb430[14])},{where:{id:_0xa60fxa[_0xb430[17]]}})[_0xb430[13]](function(_0xa60fxb){console[_0xb430[12]](_0xa60fxb)})};Sms[_0xb430[11]][_0xb430[19]]= function(_0xa60fx9,_0xa60fxa){return SmsRoom[_0xb430[18]]({status:_0xb430[20],disposition:_0xa60fx9[_0xb430[16]]|| null},{individualHooks:true,where:{id:_0xa60fxa[_0xb430[17]]}})[_0xb430[13]](function(_0xa60fxb){console[_0xb430[12]](_0xa60fxb)})};Sms[_0xb430[11]][_0xb430[21]]= function(_0xa60fx9,_0xa60fxa){return MailAccount[_0xb430[40]](_0xa60fx9[_0xb430[16]])[_0xb430[39]](function(_0xa60fxc){return MailMessage[_0xb430[38]]({subject:_0xa60fx9[_0xb430[22]]|| null,from:[_0xa60fxc[_0xb430[23]]],to:_0xa60fx9[_0xb430[24]][_0xb430[15]](_0xb430[14]),cc:_0xa60fx9[_0xb430[25]]?_0xa60fx9[_0xb430[25]][_0xb430[15]](_0xb430[14]):[],html:_0xa60fx9[_0xb430[26]]?Mustache[_0xb430[34]](_0xa60fx9[_0xb430[26]],_0xa60fxa)[_0xb430[28]](/&/g,_0xb430[33])[_0xb430[28]](//g,_0xb430[31])[_0xb430[28]](/"/g,_0xb430[30])[_0xb430[28]](/'/g,_0xb430[29])[_0xb430[28]](/\n/g,_0xb430[27]):null,status:_0xb430[35],auto:true,accountId:_0xa60fxc[_0xb430[36]],accountName:_0xa60fxc[_0xb430[37]]})})[_0xb430[13]](function(_0xa60fxb){console[_0xb430[12]](_0xa60fxb)})};Sms[_0xb430[11]][_0xb430[41]]= function(_0xa60fx9,_0xa60fxa){var _0xa60fxd;return MailAccount[_0xb430[40]](_0xa60fx9[_0xb430[16]])[_0xb430[39]](function(_0xa60fxc){_0xa60fxd= _0xa60fxc;return Template[_0xb430[40]](_0xa60fx9[_0xb430[24]])})[_0xb430[39]](function(_0xa60fxe){return MailMessage[_0xb430[38]]({status:_0xb430[35],subject:_0xa60fxe[_0xb430[42]],from:[_0xa60fxd[_0xb430[23]]],to:_0xa60fx9[_0xb430[25]][_0xb430[15]](_0xb430[14]),html:_0xa60fxe[_0xb430[43]]?Mustache[_0xb430[34]](_0xa60fxe[_0xb430[43]],_0xa60fxa):null,auto:true,accountId:_0xa60fxd[_0xb430[36]],accountName:_0xa60fxd[_0xb430[37]]})[_0xb430[13]](function(_0xa60fxb){console[_0xb430[9]](_0xa60fxb)})})};module[_0xb430[44]]= Sms \ No newline at end of file diff --git a/server/config/triggers/urlForward.js b/server/config/triggers/urlForward.js index 5852a31..57fc87c 100644 --- a/server/config/triggers/urlForward.js +++ b/server/config/triggers/urlForward.js @@ -1,48 +1 @@ -var _ = require('lodash'); -var rp = require('request-promise'); -var Mustache = require('mustache'); - -function UrlForward() { - console.log('Trigger URL Forward Initialization...'); -} - -UrlForward.prototype.sendRequest = function(doc, channel, action, variables) { - switch (action.data1) { - case 'GET': - case 'POST': - httpRequest(doc, channel, action.data1, Mustache.render(action.data2, variables)); - break; - default: - } -} - -function httpRequest(doc, channel, method, uri) { - var ReportIntegration = require('../../models').ReportIntegration; - var options = { - method: method, - uri: uri, - body: doc, - json: true // Automatically stringifies the body to JSON - }; - - rp(options) - .then(function(parsedBody) { - console.log('URL Forward successful!'); - doc.exitStatus = "success"; - }) - .catch(function(err) { - console.error('URL Forward failed!'); //error to be written on log files - doc.exitStatus = "failed"; - }) - .finally(function() { - delete doc.id - doc.integration = 'urlForward'; - doc.eventChannel = channel; - return ReportIntegration.create(doc) - .catch(function(err) { - console.log(err); - }); - }); -} - -module.exports = UrlForward; +var _0xcce4=["\x6C\x6F\x64\x61\x73\x68","\x72\x65\x71\x75\x65\x73\x74\x2D\x70\x72\x6F\x6D\x69\x73\x65","\x6D\x75\x73\x74\x61\x63\x68\x65","\x54\x72\x69\x67\x67\x65\x72\x20\x55\x52\x4C\x20\x46\x6F\x72\x77\x61\x72\x64\x20\x49\x6E\x69\x74\x69\x61\x6C\x69\x7A\x61\x74\x69\x6F\x6E\x2E\x2E\x2E","\x6C\x6F\x67","\x73\x65\x6E\x64\x52\x65\x71\x75\x65\x73\x74","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x47\x45\x54","\x64\x61\x74\x61\x31","\x64\x61\x74\x61\x32","\x72\x65\x6E\x64\x65\x72","\x50\x4F\x53\x54","\x52\x65\x70\x6F\x72\x74\x49\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x69\x64","\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E","\x75\x72\x6C\x46\x6F\x72\x77\x61\x72\x64","\x65\x76\x65\x6E\x74\x43\x68\x61\x6E\x6E\x65\x6C","\x63\x61\x74\x63\x68","\x63\x72\x65\x61\x74\x65","\x66\x69\x6E\x61\x6C\x6C\x79","\x55\x52\x4C\x20\x46\x6F\x72\x77\x61\x72\x64\x20\x66\x61\x69\x6C\x65\x64\x21","\x65\x72\x72\x6F\x72","\x65\x78\x69\x74\x53\x74\x61\x74\x75\x73","\x66\x61\x69\x6C\x65\x64","\x55\x52\x4C\x20\x46\x6F\x72\x77\x61\x72\x64\x20\x73\x75\x63\x63\x65\x73\x73\x66\x75\x6C\x21","\x73\x75\x63\x63\x65\x73\x73","\x74\x68\x65\x6E","\x65\x78\x70\x6F\x72\x74\x73"];var _=require(_0xcce4[0]);var rp=require(_0xcce4[1]);var Mustache=require(_0xcce4[2]);function UrlForward(){console[_0xcce4[4]](_0xcce4[3])}UrlForward[_0xcce4[6]][_0xcce4[5]]= function(_0xa37ax5,_0xa37ax6,_0xa37ax7,_0xa37ax8){switch(_0xa37ax7[_0xcce4[8]]){case _0xcce4[7]:;case _0xcce4[11]:httpRequest(_0xa37ax5,_0xa37ax6,_0xa37ax7[_0xcce4[8]],Mustache[_0xcce4[10]](_0xa37ax7[_0xcce4[9]],_0xa37ax8));break;default:}};function httpRequest(_0xa37ax5,_0xa37ax6,_0xa37axa,_0xa37axb){var _0xa37axc=require(_0xcce4[13])[_0xcce4[12]];var _0xa37axd={method:_0xa37axa,uri:_0xa37axb,body:_0xa37ax5,json:true};rp(_0xa37axd)[_0xcce4[27]](function(_0xa37axf){console[_0xcce4[4]](_0xcce4[25]);_0xa37ax5[_0xcce4[23]]= _0xcce4[26]})[_0xcce4[18]](function(_0xa37axe){console[_0xcce4[22]](_0xcce4[21]);_0xa37ax5[_0xcce4[23]]= _0xcce4[24]})[_0xcce4[20]](function(){delete _0xa37ax5[_0xcce4[14]];_0xa37ax5[_0xcce4[15]]= _0xcce4[16];_0xa37ax5[_0xcce4[17]]= _0xa37ax6;return _0xa37axc[_0xcce4[19]](_0xa37ax5)[_0xcce4[18]](function(_0xa37axe){console[_0xcce4[4]](_0xa37axe)})})}module[_0xcce4[28]]= UrlForward \ No newline at end of file diff --git a/server/config/triggers/util.js b/server/config/triggers/util.js index 1bff931..3efe1d6 100644 --- a/server/config/triggers/util.js +++ b/server/config/triggers/util.js @@ -1,118 +1 @@ -'use strict'; - -var _ = require('lodash'); - -function Util() { - console.log('Trigger Utils Initialization...'); -} - -Util.prototype.getActionsByTriggers = function(doc, triggers) { - var actions = []; - doc = doc.datavalues || doc; //in case I forgot something - doc.from = doc.from ? doc.from.split(';') : []; - doc.cc = doc.cc ? doc.cc.split(';') : []; - doc.to = doc.to ? doc.to.split(';') : []; - triggers.forEach(function(trigger) { - if (trigger.status) { - var All = []; - var Any = []; - trigger.All.forEach(function(condition) { - All.push(checkCondition(condition || condition, doc)); - }); - trigger.Any.forEach(function(condition) { - Any.push(checkCondition(condition || condition, doc)); - }); - - var allResult = [], - anyResult = []; - allResult.push(_.reduce(All.length ? All : [true], function(total, n) { - return total && n; - })); - anyResult.push(_.reduce(Any.length ? Any : [true], function(total, n) { - return total || n; - })); - var lastResults = allResult.concat(anyResult); - var finalResult = _.reduce(lastResults.length ? lastResults : [true], function(total, n) { - return total && n; - }) - // console.log('final result is', finalResult); - - if (finalResult) { - //push rules into array to return - actions = actions.concat(trigger.Actions); - } - } - }); - doc.from = doc.from.join(';'); - doc.cc = doc.cc.join(';'); - doc.to = doc.to.join(';'); - //return actions array - return actions; -} - -function checkCondition(condition, doc) { - - // console.log('CONDITION', condition); - // console.log('DOC FIELD', doc[condition.field]); - // console.log('trigger value ', trigger[rule.field.value]); - // console.log('rule data ', rule.data); - var result = false; - var i = 0; - - if (doc[condition.field]) { - switch (condition.operator) { - case 'equals': - result = (doc[condition.field] == condition.value); - break; - case 'not_equals': - result = (doc[condition.field] != condition.value); - break; - case 'contains': - result = false; - - if (_.isArray(doc[condition.field])) { - for (i = 0; i < doc[condition.field].length; i++) { - if (doc[condition.field][i].includes(condition.value)) { - result = true; - break; - } - } - } else { - result = doc[condition.field].includes(condition.value); - } - - break; - case 'not_contains': - result = true; - - if (_.isArray(doc[condition.field])) { - for (i = 0; i < doc[condition.field].length; i++) { - if (doc[condition.field][i].includes(condition.value)) { - result = false; - break; - } - } - } else { - result = !(doc[condition.field].includes(condition.value)); - } - - break; - case 'greater_or_equal': - result = (doc[condition.field] >= Number(condition.value)); - break; - case 'less_or_equal': - result = (doc[condition.field] <= Number(condition.value)); - break; - case 'greater': - result = (doc[condition.field] > Number(condition.value)); - break; - case 'less': - result = (doc[condition.field] < Number(condition.value)); - break; - default: - } - } - return result; -} - -module.exports = Util; +var _0x9968=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x54\x72\x69\x67\x67\x65\x72\x20\x55\x74\x69\x6C\x73\x20\x49\x6E\x69\x74\x69\x61\x6C\x69\x7A\x61\x74\x69\x6F\x6E\x2E\x2E\x2E","\x6C\x6F\x67","\x67\x65\x74\x41\x63\x74\x69\x6F\x6E\x73\x42\x79\x54\x72\x69\x67\x67\x65\x72\x73","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x64\x61\x74\x61\x76\x61\x6C\x75\x65\x73","\x66\x72\x6F\x6D","\x3B","\x73\x70\x6C\x69\x74","\x63\x63","\x74\x6F","\x73\x74\x61\x74\x75\x73","\x70\x75\x73\x68","\x66\x6F\x72\x45\x61\x63\x68","\x41\x6C\x6C","\x41\x6E\x79","\x6C\x65\x6E\x67\x74\x68","\x72\x65\x64\x75\x63\x65","\x63\x6F\x6E\x63\x61\x74","\x6A\x6F\x69\x6E","\x66\x69\x65\x6C\x64","\x76\x61\x6C\x75\x65","\x65\x71\x75\x61\x6C\x73","\x6E\x6F\x74\x5F\x65\x71\x75\x61\x6C\x73","\x69\x73\x41\x72\x72\x61\x79","\x69\x6E\x63\x6C\x75\x64\x65\x73","\x63\x6F\x6E\x74\x61\x69\x6E\x73","\x6E\x6F\x74\x5F\x63\x6F\x6E\x74\x61\x69\x6E\x73","\x67\x72\x65\x61\x74\x65\x72\x5F\x6F\x72\x5F\x65\x71\x75\x61\x6C","\x6C\x65\x73\x73\x5F\x6F\x72\x5F\x65\x71\x75\x61\x6C","\x67\x72\x65\x61\x74\x65\x72","\x6C\x65\x73\x73","\x6F\x70\x65\x72\x61\x74\x6F\x72","\x65\x78\x70\x6F\x72\x74\x73"];_0x9968[0];var _=require(_0x9968[1]);function Util(){console[_0x9968[3]](_0x9968[2])}Util[_0x9968[5]][_0x9968[4]]= function(_0xfbfcx3,_0xfbfcx4){var _0xfbfcx5=[];_0xfbfcx3= _0xfbfcx3[_0x9968[6]]|| _0xfbfcx3;_0xfbfcx3[_0x9968[7]]= _0xfbfcx3[_0x9968[7]]?_0xfbfcx3[_0x9968[7]][_0x9968[9]](_0x9968[8]):[];_0xfbfcx3[_0x9968[10]]= _0xfbfcx3[_0x9968[10]]?_0xfbfcx3[_0x9968[10]][_0x9968[9]](_0x9968[8]):[];_0xfbfcx3[_0x9968[11]]= _0xfbfcx3[_0x9968[11]]?_0xfbfcx3[_0x9968[11]][_0x9968[9]](_0x9968[8]):[];_0xfbfcx4[_0x9968[14]](function(_0xfbfcx6){if(_0xfbfcx6[_0x9968[12]]){var _0xfbfcx7=[];var _0xfbfcx8=[];_0xfbfcx6[_0x9968[15]][_0x9968[14]](function(_0xfbfcx9){_0xfbfcx7[_0x9968[13]](checkCondition(_0xfbfcx9|| _0xfbfcx9,_0xfbfcx3))});_0xfbfcx6[_0x9968[16]][_0x9968[14]](function(_0xfbfcx9){_0xfbfcx8[_0x9968[13]](checkCondition(_0xfbfcx9|| _0xfbfcx9,_0xfbfcx3))});var _0xfbfcxa=[],_0xfbfcxb=[];_0xfbfcxa[_0x9968[13]](_[_0x9968[18]](_0xfbfcx7[_0x9968[17]]?_0xfbfcx7:[true],function(_0xfbfcxc,_0xfbfcxd){return _0xfbfcxc&& _0xfbfcxd}));_0xfbfcxb[_0x9968[13]](_[_0x9968[18]](_0xfbfcx8[_0x9968[17]]?_0xfbfcx8:[true],function(_0xfbfcxc,_0xfbfcxd){return _0xfbfcxc|| _0xfbfcxd}));var _0xfbfcxe=_0xfbfcxa[_0x9968[19]](_0xfbfcxb);var _0xfbfcxf=_[_0x9968[18]](_0xfbfcxe[_0x9968[17]]?_0xfbfcxe:[true],function(_0xfbfcxc,_0xfbfcxd){return _0xfbfcxc&& _0xfbfcxd});if(_0xfbfcxf){_0xfbfcx5= _0xfbfcx5[_0x9968[19]](_0xfbfcx6.Actions)}}});_0xfbfcx3[_0x9968[7]]= _0xfbfcx3[_0x9968[7]][_0x9968[20]](_0x9968[8]);_0xfbfcx3[_0x9968[10]]= _0xfbfcx3[_0x9968[10]][_0x9968[20]](_0x9968[8]);_0xfbfcx3[_0x9968[11]]= _0xfbfcx3[_0x9968[11]][_0x9968[20]](_0x9968[8]);return _0xfbfcx5};function checkCondition(_0xfbfcx9,_0xfbfcx3){var _0xfbfcx11=false;var _0xfbfcx12=0;if(_0xfbfcx3[_0xfbfcx9[_0x9968[21]]]){switch(_0xfbfcx9[_0x9968[33]]){case _0x9968[23]:_0xfbfcx11= (_0xfbfcx3[_0xfbfcx9[_0x9968[21]]]== _0xfbfcx9[_0x9968[22]]);break;case _0x9968[24]:_0xfbfcx11= (_0xfbfcx3[_0xfbfcx9[_0x9968[21]]]!= _0xfbfcx9[_0x9968[22]]);break;case _0x9968[27]:_0xfbfcx11= false;if(_[_0x9968[25]](_0xfbfcx3[_0xfbfcx9[_0x9968[21]]])){for(_0xfbfcx12= 0;_0xfbfcx12< _0xfbfcx3[_0xfbfcx9[_0x9968[21]]][_0x9968[17]];_0xfbfcx12++){if(_0xfbfcx3[_0xfbfcx9[_0x9968[21]]][_0xfbfcx12][_0x9968[26]](_0xfbfcx9[_0x9968[22]])){_0xfbfcx11= true;break}}}else {_0xfbfcx11= _0xfbfcx3[_0xfbfcx9[_0x9968[21]]][_0x9968[26]](_0xfbfcx9[_0x9968[22]])};break;case _0x9968[28]:_0xfbfcx11= true;if(_[_0x9968[25]](_0xfbfcx3[_0xfbfcx9[_0x9968[21]]])){for(_0xfbfcx12= 0;_0xfbfcx12< _0xfbfcx3[_0xfbfcx9[_0x9968[21]]][_0x9968[17]];_0xfbfcx12++){if(_0xfbfcx3[_0xfbfcx9[_0x9968[21]]][_0xfbfcx12][_0x9968[26]](_0xfbfcx9[_0x9968[22]])){_0xfbfcx11= false;break}}}else {_0xfbfcx11= !(_0xfbfcx3[_0xfbfcx9[_0x9968[21]]][_0x9968[26]](_0xfbfcx9[_0x9968[22]]))};break;case _0x9968[29]:_0xfbfcx11= (_0xfbfcx3[_0xfbfcx9[_0x9968[21]]]>= Number(_0xfbfcx9[_0x9968[22]]));break;case _0x9968[30]:_0xfbfcx11= (_0xfbfcx3[_0xfbfcx9[_0x9968[21]]]<= Number(_0xfbfcx9[_0x9968[22]]));break;case _0x9968[31]:_0xfbfcx11= (_0xfbfcx3[_0xfbfcx9[_0x9968[21]]]> Number(_0xfbfcx9[_0x9968[22]]));break;case _0x9968[32]:_0xfbfcx11= (_0xfbfcx3[_0xfbfcx9[_0x9968[21]]]< Number(_0xfbfcx9[_0x9968[22]]));break;default:}};return _0xfbfcx11}module[_0x9968[34]]= Util \ No newline at end of file diff --git a/server/config/triggers/voice.js b/server/config/triggers/voice.js index 2465c50..582b9d1 100644 --- a/server/config/triggers/voice.js +++ b/server/config/triggers/voice.js @@ -1,7 +1 @@ -var _ = require('lodash'); - -function Voice() { - console.log('Trigger Voice Initialization...'); -} - -module.exports = Voice; +var _0xfb4d=["\x6C\x6F\x64\x61\x73\x68","\x54\x72\x69\x67\x67\x65\x72\x20\x56\x6F\x69\x63\x65\x20\x49\x6E\x69\x74\x69\x61\x6C\x69\x7A\x61\x74\x69\x6F\x6E\x2E\x2E\x2E","\x6C\x6F\x67","\x65\x78\x70\x6F\x72\x74\x73"];var _=require(_0xfb4d[0]);function Voice(){console[_0xfb4d[2]](_0xfb4d[1])}module[_0xfb4d[3]]= Voice \ No newline at end of file diff --git a/server/config/util/error.js b/server/config/util/error.js index e265f76..e4f06ce 100644 --- a/server/config/util/error.js +++ b/server/config/util/error.js @@ -1,24 +1 @@ -'use strict'; - -var util = require('util'); - -module.exports = { - handleUniqueConstraintError: function(res, err) { - var paths = []; - - err.errors.forEach(function(error) { - switch (error.path) { - default: paths.push(error.path); - } - }); - - paths.push(' must be unique'); - err.message = paths.join(); - - return res.status(500).send(err); - }, - handleForeignKeyConstraintError: function(res, app, name, err) { - err.message = util.format('Impossible to remove %s %s because of an existing association', app, name); - return res.status(500).send(err); - } -}; +var _0x678a=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x75\x74\x69\x6C","\x65\x78\x70\x6F\x72\x74\x73","\x70\x61\x74\x68","\x70\x75\x73\x68","\x66\x6F\x72\x45\x61\x63\x68","\x65\x72\x72\x6F\x72\x73","\x20\x6D\x75\x73\x74\x20\x62\x65\x20\x75\x6E\x69\x71\x75\x65","\x6D\x65\x73\x73\x61\x67\x65","\x6A\x6F\x69\x6E","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x49\x6D\x70\x6F\x73\x73\x69\x62\x6C\x65\x20\x74\x6F\x20\x72\x65\x6D\x6F\x76\x65\x20\x25\x73\x20\x25\x73\x20\x62\x65\x63\x61\x75\x73\x65\x20\x6F\x66\x20\x61\x6E\x20\x65\x78\x69\x73\x74\x69\x6E\x67\x20\x61\x73\x73\x6F\x63\x69\x61\x74\x69\x6F\x6E","\x66\x6F\x72\x6D\x61\x74"];_0x678a[0];var util=require(_0x678a[1]);module[_0x678a[2]]= {handleUniqueConstraintError:function(_0xe8bax2,_0xe8bax3){var _0xe8bax4=[];_0xe8bax3[_0x678a[6]][_0x678a[5]](function(_0xe8bax5){switch(_0xe8bax5[_0x678a[3]]){default:_0xe8bax4[_0x678a[4]](_0xe8bax5[_0x678a[3]])}});_0xe8bax4[_0x678a[4]](_0x678a[7]);_0xe8bax3[_0x678a[8]]= _0xe8bax4[_0x678a[9]]();return _0xe8bax2[_0x678a[11]](500)[_0x678a[10]](_0xe8bax3)},handleForeignKeyConstraintError:function(_0xe8bax2,_0xe8bax6,_0xe8bax7,_0xe8bax3){_0xe8bax3[_0x678a[8]]= util[_0x678a[13]](_0x678a[12],_0xe8bax6,_0xe8bax7);return _0xe8bax2[_0x678a[11]](500)[_0x678a[10]](_0xe8bax3)}} \ No newline at end of file diff --git a/server/config/util/index.js b/server/config/util/index.js index 5a2ccc7..359e77c 100644 --- a/server/config/util/index.js +++ b/server/config/util/index.js @@ -1,621 +1 @@ -'use strict'; - -var _ = require('lodash'); -var moment = require('moment'); -var request = require('request-promise'); - -var User = require('../../models').User; -var VoiceQueue = require('../../models').VoiceQueue; -var ChatQueue = require('../../models').ChatQueue; -var MailQueue = require('../../models').MailQueue; -var FaxQueue = require('../../models').FaxQueue; -var SmsQueue = require('../../models').SmsQueue; -var OpenchannelQueue = require('../../models').OpenchannelQueue; -var Action = require('../../models').Action; - -var checkInterval = function(interval) { - - var daysOfWeek = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat']; - var daysOfMonth = [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]; - var months = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec']; - var i, shift; - - var tRange = interval.split(',')[0]; - var dwRange = interval.split(',')[1]; - var dmRange = interval.split(',')[2]; - var mRange = interval.split(',')[3]; - // TIME RANGE CHECKING - if (tRange !== '*') { - var time = moment().format("HH:mm"); - var tFrom = tRange.split('-')[0]; - var tTo = tRange.split('-')[1]; - - if ((time < tFrom) || (time > tTo)) { - console.log('TRANGE KO'); - return false; - } - } - // DAYS OF WEEK RANGE CHECKING - if (dwRange !== '*') { - var cWeekDay = daysOfWeek[moment().day()]; - var dwFrom = _.indexOf(daysOfWeek, dwRange.split('-')[0]); - var dwTo = _.indexOf(daysOfWeek, dwRange.split('-')[1]); - - for (i = 0; i < dwFrom; i++) { - shift = daysOfWeek.shift(); - daysOfWeek.push(shift); - } - - dwFrom = _.indexOf(daysOfWeek, dwRange.split('-')[0]); - dwTo = _.indexOf(daysOfWeek, dwRange.split('-')[1]) + 1; - - daysOfWeek = daysOfWeek.slice(dwFrom, dwTo); - - if (!_.includes(daysOfWeek, cWeekDay)) { - console.log('DWRANGE KO'); - return false; - } - } - // DAYS OF MONTH RANGE CHECKING - if (dmRange !== '*') { - var cMonthDay = moment().date(); - var dmFrom = _.indexOf(daysOfMonth, parseInt(dmRange.split('-')[0], 10)); - var dmTo = _.indexOf(daysOfMonth, parseInt(dmRange.split('-')[1])); - - for (i = 0; i < dmFrom; i++) { - shift = daysOfMonth.shift(); - daysOfMonth.push(shift); - } - - dmFrom = _.indexOf(daysOfMonth, parseInt(dmRange.split('-')[0], 10)); - dmTo = _.indexOf(daysOfMonth, parseInt(dmRange.split('-')[1]), 10) + 1; - - daysOfMonth = daysOfMonth.slice(dmFrom, dmTo); - - if (!_.includes(daysOfMonth, cMonthDay)) { - console.log('DMRANGE KO'); - return false; - } - } - // MONTHS RANGE CHECKING - if (mRange !== '*') { - var cMonth = months[moment().month()]; - var mFrom = _.indexOf(months, mRange.split('-')[0]); - var mTo = _.indexOf(months, mRange.split('-')[1]); - - for (i = 0; i < mFrom; i++) { - shift = months.shift(); - months.push(shift); - } - - mFrom = _.indexOf(months, mRange.split('-')[0]); - mTo = _.indexOf(months, mRange.split('-')[1]) + 1; - - months = months.slice(mFrom, mTo); - - if (!_.includes(months, cMonth)) { - console.log('MRANGE KO'); - return false; - } - } - - console.log('INTERVAL OK'); - - return true; -} - -var isValidInterval = function(interval) { - if (_.isObject(interval)) { - for (var i = 0; i < interval.SubIntervals.length; i++) { - if (!checkInterval(interval.SubIntervals[i].interval)) { - return false; - } - } - return true; - } else { - return checkInterval(interval); - } -} - -var getDate = function(dateString, when) { - var dateTimeFormat = 'YYYY-MM-DD HH:mm'; - if (moment(dateString, dateTimeFormat, true).isValid()) { - return moment(dateString); - } else { - switch (when) { - case 'dayStart': - return moment(dateString).startOf('day'); - case 'dayEnd': - return moment(dateString).endOf('day'); - default: - return moment(dateString); - } - } -} - -var getQuery = function(query, extraWhere) { - var _query = { - where: {} - }; - - if (query) { - var realKey, condition = {}; - for (var key in query) { //DO NOT change with lodash forEach, or the properties will not be removed from the query object! - if (_.includes(key, '_uiFrom')) { - realKey = key.replace('_uiFrom', ''); - if (query[realKey + '_uiTo']) { - _query.where.$and = _query.where.$and || []; - condition = {}; - condition[realKey] = { - $gte: getDate(query[key], 'dayStart') - }; - _query.where.$and.push(condition); - condition = {}; - condition[realKey] = { - $lte: getDate(query[realKey + '_uiTo'], 'dayEnd') - }; - _query.where.$and.push(condition); - delete query[realKey + '_uiTo']; - } else { - _query.where[key.replace('_uiFrom', '')] = { - $gte: getDate(query[key], 'dayStart') - }; - } - delete query[key]; - } else if (_.includes(key, '_uiTo')) { - realKey = key.replace('_uiTo', ''); - if (query[realKey + '_uiFrom']) { - _query.where.$and = _query.where.$and || []; - condition = {}; - condition[realKey] = { - $lte: getDate(query[key], 'dayEnd') - }; - _query.where.$and.push(condition); - condition[realKey] = { - $gte: getDate(query[realKey + '_uiFrom'], 'dayStart') - }; - _query.where.$and.push(condition); - delete query[realKey + '_uiFrom']; - } else { - _query.where[key.replace('_uiTo', '')] = { - $lte: getDate(query[key], 'dayEnd') - }; - } - delete query[key]; - } - } - - _.forEach(query, function(value, key) { - switch (key) { - case 'offset': - case 'limit': - _query[key] = Number(value); - break; - case 'order': - _query[key] = value; - break; - case 'type': - case 'parent': - _query.where[key] = value; - break; - default: - _query.where[key] = { - $like: '%' + value + '%' - }; - } - }); - } - - - - if (extraWhere) { - _.merge(_query.where, extraWhere); - } - - return _query; -} - -var getVoiceQueuesIdByUser = function(query, extraQuery) { //differently from the extraWhere, this will be merged with all the query options, not just the where. Useful for inclusions and other query options - return function(user) { - var _queues = []; - var _user = user; - var _query = query || {}; - var _extraQuery = extraQuery || {}; - - return _user - .getPVoiceQueues({ - attributes: ['name'] - }) - .then(function(queues) { - _queues = _.map(queues, 'name'); - }) - .then(function() { - return VoiceQueue - .findAndCountAll(_.merge(getQuery(query, { - name: { - $in: _queues - } - }), _extraQuery)); - }); - }; -} - -var getChatQueuesIdByUser = function(query, extraQuery) { - return function(user) { - var _queues = []; - var _user = user; - var _query = query || {}; - var _extraQuery = _.merge(extraQuery || {}, { - distinct: true - }); - - return _user - .getPChatQueues({ - attributes: ['id'] - }) - .then(function(queues) { - _queues = _.map(queues, 'id'); - }) - .then(function() { - return ChatQueue - .scope('default') - .findAndCountAll(_.merge(getQuery(_query, { - id: { - $in: _queues - } - }), _extraQuery)); - }); - }; -} - -var getMailQueuesIdByUser = function(query, extraQuery) { - return function(user) { - var _queues = []; - var _user = user; - var _query = query || {}; - var _extraQuery = _.merge(extraQuery || {}, { - distinct: true - }); - - return _user - .getPMailQueues({ - attributes: ['id'] - }) - .then(function(queues) { - _queues = _.map(queues, 'id'); - }) - .then(function() { - return MailQueue - .scope('default') - .findAndCountAll(_.merge(getQuery(_query, { - id: { - $in: _queues - } - }), _extraQuery)); - }); - }; -} -var getSmsQueuesIdByUser = function(query, extraQuery) { - return function(user) { - var _queues = []; - var _user = user; - var _query = query || {}; - var _extraQuery = _.merge(extraQuery || {}, { - distinct: true - }); - - return _user - .getPSmsQueues({ - attributes: ['id'] - }) - .then(function(queues) { - _queues = _.map(queues, 'id'); - }) - .then(function() { - return SmsQueue - .scope('default') - .findAndCountAll(_.merge(getQuery(_query, { - id: { - $in: _queues - } - }), _extraQuery)); - }); - }; -} - -var getFaxQueuesIdByUser = function(query, extraQuery) { - return function(user) { - var _queues = []; - var _user = user; - var _query = query || {}; - var _extraQuery = _.merge(extraQuery || {}, { - distinct: true - }); - - return _user - .getPFaxQueues({ - attributes: ['id'] - }) - .then(function(queues) { - _queues = _.map(queues, 'id'); - }) - .then(function() { - return FaxQueue - .scope('default') - .findAndCountAll(_.merge(getQuery(_query, { - id: { - $in: _queues - } - }), _extraQuery)); - }); - }; -} -var getOpenchannelQueuesIdByUser = function(query, extraQuery) { - return function(user) { - var _queues = []; - var _user = user; - var _query = query || {}; - var _extraQuery = _.merge(extraQuery || {}, { - distinct: true - }); - - return _user - .getPOpenchannelQueues({ - attributes: ['id'] - }) - .then(function(queues) { - _queues = _.map(queues, 'id'); - }) - .then(function() { - return OpenchannelQueue - .scope('default') - .findAndCountAll(_.merge(getQuery(_query, { - id: { - $in: _queues - } - }), _extraQuery)); - }); - }; -} -var getAgentsIdByUser = function(query) { - return function(user) { - var _users = []; - var _user = user; - var _query = query || {}; - var _voiceQueues = [], - _chatQueues = [], - _mailQueues = [], - _faxQueues = [], - _openchannelQueues = [], - _smsQueues = []; - - return _user - .getPVoiceQueues({ - attributes: ['name'], - include: [{ - raw: true, - model: User, - attributes: ['id'] - }] - }) - .then(function(queues) { - _voiceQueues = _.map(queues, 'name'); - queues.forEach(function(queue) { - _users = _.union(_users, _.map(queue.Users, 'id')); - }); - }) - .then(function() { - return _user - .getPChatQueues({ - attributes: ['id'], - include: [{ - raw: true, - model: User, - attributes: ['id'] - }] - }); - }) - .then(function(queues) { - _chatQueues = _.map(queues, 'id'); - queues.forEach(function(queue) { - _users = _.union(_users, _.map(queue.Users, 'id')); - }); - }) - .then(function() { - return _user - .getPMailQueues({ - attributes: ['id'], - include: [{ - raw: true, - model: User, - attributes: ['id'] - }] - }); - }) - .then(function(queues) { - _mailQueues = _.map(queues, 'id'); - queues.forEach(function(queue) { - _users = _.union(_users, _.map(queue.Users, 'id')); - }); - }) - .then(function() { - return _user - .getPFaxQueues({ - attributes: ['id'], - include: [{ - raw: true, - model: User, - attributes: ['id'] - }] - }); - }) - .then(function(queues) { - _faxQueues = _.map(queues, 'id'); - queues.forEach(function(queue) { - _users = _.union(_users, _.map(queue.Users, 'id')); - }); - }) - .then(function() { - return _user - .getPSmsQueues({ - attributes: ['id'], - include: [{ - raw: true, - model: User, - attributes: ['id'] - }] - }); - }) - .then(function(queues) { - _smsQueues = _.map(queues, 'id'); - queues.forEach(function(queue) { - _users = _.union(_users, _.map(queue.Users, 'id')); - }); - }) - .then(function() { - return _user - .getPOpenchannelQueues({ - attributes: ['id'], - include: [{ - raw: true, - model: User, - attributes: ['id'] - }] - }); - }) - .then(function(queues) { - _openchannelQueues = _.map(queues, 'id'); - queues.forEach(function(queue) { - _users = _.union(_users, _.map(queue.Users, 'id')); - }); - }) - .then(function() { - return User - .scope('agent', { - method: ['checkPauseStatus', _query] - }, { - method: ['checkQueueStatus', _query] - }, { - method: ['checkOnlineStatus', _query] - }, { - method: ['checkSipStatus', _query] - }) - .findAndCountAll(_.merge(getQuery(_query, { - id: { - $in: _users - } - }), { - include: [{ - model: VoiceQueue, - where: { - name: { - $in: _voiceQueues - } - }, - required: false - }, { - model: ChatQueue, - where: { - id: { - $in: _chatQueues - } - }, - required: false - }, { - model: MailQueue, - where: { - id: { - $in: _mailQueues - } - }, - required: false - }, { - model: FaxQueue, - where: { - id: { - $in: _faxQueues - } - }, - required: false - }, { - model: SmsQueue, - where: { - id: { - $in: _smsQueues - } - }, - required: false - }, { - model: OpenchannelQueue, - where: { - id: { - $in: _openchannelQueues - } - }, - required: false - }] - })); - }) - }; -} - -var stripTrailingSlash = function(str) { - if (str.substr(-1) === '/') { - return str.substr(0, str.length - 1); - } - return str; -} -var sendRequest = function(data, method, uri) { - if (method == 'GET' || method == 'POST') { - var options = { - method: method, - uri: uri, - body: data, - json: true // Automatically stringifies the body to JSON - }; - return request(options); - } else { - console.log('Unknown Method'); - } - } - // HANDLE action -var execAction = function(action, data) { - switch (action.action) { - case 'pause': - Action - .create({ - name: action.action, - data4: action.type || 'DEFAULT PAUSE' //to track the pause type in the actions table - }, { - body: { - name: action.action, - agent: data.memberid, - type: action.type || 'DEFAULT PAUSE', // to set the pauseType in the user record - } - }) - .then(function() { - console.log('Action Successful'); - }) - .catch(function(err) { - console.log('Action Failed', err); - }); - break; - default: - console.log('Unknown Action'); - } -} -module.exports = { - getQuery: getQuery, - getVoiceQueuesIdByUser: getVoiceQueuesIdByUser, - getChatQueuesIdByUser: getChatQueuesIdByUser, - getMailQueuesIdByUser: getMailQueuesIdByUser, - getFaxQueuesIdByUser: getFaxQueuesIdByUser, - getSmsQueuesIdByUser: getSmsQueuesIdByUser, - getOpenchannelQueuesIdByUser: getOpenchannelQueuesIdByUser, - getAgentsIdByUser: getAgentsIdByUser, - stripTrailingSlash: stripTrailingSlash, - isValidInterval: isValidInterval, - sendRequest: sendRequest, - execAction: execAction, - errorManager: require('./error') -}; +var _0xba3a=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x6D\x6F\x6D\x65\x6E\x74","\x72\x65\x71\x75\x65\x73\x74\x2D\x70\x72\x6F\x6D\x69\x73\x65","\x55\x73\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65","\x43\x68\x61\x74\x51\x75\x65\x75\x65","\x4D\x61\x69\x6C\x51\x75\x65\x75\x65","\x46\x61\x78\x51\x75\x65\x75\x65","\x53\x6D\x73\x51\x75\x65\x75\x65","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65","\x41\x63\x74\x69\x6F\x6E","\x73\x75\x6E","\x6D\x6F\x6E","\x74\x75\x65","\x77\x65\x64","\x74\x68\x75","\x66\x72\x69","\x73\x61\x74","\x6A\x61\x6E","\x66\x65\x62","\x6D\x61\x72","\x61\x70\x72","\x6D\x61\x79","\x6A\x75\x6E","\x6A\x75\x6C","\x61\x75\x67","\x73\x65\x70","\x6F\x63\x74","\x6E\x6F\x76","\x64\x65\x63","\x2C","\x73\x70\x6C\x69\x74","\x2A","\x48\x48\x3A\x6D\x6D","\x66\x6F\x72\x6D\x61\x74","\x2D","\x54\x52\x41\x4E\x47\x45\x20\x4B\x4F","\x6C\x6F\x67","\x64\x61\x79","\x69\x6E\x64\x65\x78\x4F\x66","\x73\x68\x69\x66\x74","\x70\x75\x73\x68","\x73\x6C\x69\x63\x65","\x69\x6E\x63\x6C\x75\x64\x65\x73","\x44\x57\x52\x41\x4E\x47\x45\x20\x4B\x4F","\x64\x61\x74\x65","\x44\x4D\x52\x41\x4E\x47\x45\x20\x4B\x4F","\x6D\x6F\x6E\x74\x68","\x4D\x52\x41\x4E\x47\x45\x20\x4B\x4F","\x49\x4E\x54\x45\x52\x56\x41\x4C\x20\x4F\x4B","\x69\x73\x4F\x62\x6A\x65\x63\x74","\x6C\x65\x6E\x67\x74\x68","\x53\x75\x62\x49\x6E\x74\x65\x72\x76\x61\x6C\x73","\x69\x6E\x74\x65\x72\x76\x61\x6C","\x59\x59\x59\x59\x2D\x4D\x4D\x2D\x44\x44\x20\x48\x48\x3A\x6D\x6D","\x69\x73\x56\x61\x6C\x69\x64","\x73\x74\x61\x72\x74\x4F\x66","\x64\x61\x79\x53\x74\x61\x72\x74","\x65\x6E\x64\x4F\x66","\x64\x61\x79\x45\x6E\x64","\x5F\x75\x69\x46\x72\x6F\x6D","","\x72\x65\x70\x6C\x61\x63\x65","\x5F\x75\x69\x54\x6F","\x24\x61\x6E\x64","\x77\x68\x65\x72\x65","\x6F\x66\x66\x73\x65\x74","\x6C\x69\x6D\x69\x74","\x6F\x72\x64\x65\x72","\x74\x79\x70\x65","\x70\x61\x72\x65\x6E\x74","\x25","\x66\x6F\x72\x45\x61\x63\x68","\x6D\x65\x72\x67\x65","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x74\x68\x65\x6E","\x6E\x61\x6D\x65","\x6D\x61\x70","\x67\x65\x74\x50\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65\x73","\x64\x65\x66\x61\x75\x6C\x74","\x73\x63\x6F\x70\x65","\x69\x64","\x67\x65\x74\x50\x43\x68\x61\x74\x51\x75\x65\x75\x65\x73","\x67\x65\x74\x50\x4D\x61\x69\x6C\x51\x75\x65\x75\x65\x73","\x67\x65\x74\x50\x53\x6D\x73\x51\x75\x65\x75\x65\x73","\x67\x65\x74\x50\x46\x61\x78\x51\x75\x65\x75\x65\x73","\x67\x65\x74\x50\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65\x73","\x61\x67\x65\x6E\x74","\x63\x68\x65\x63\x6B\x50\x61\x75\x73\x65\x53\x74\x61\x74\x75\x73","\x63\x68\x65\x63\x6B\x51\x75\x65\x75\x65\x53\x74\x61\x74\x75\x73","\x63\x68\x65\x63\x6B\x4F\x6E\x6C\x69\x6E\x65\x53\x74\x61\x74\x75\x73","\x63\x68\x65\x63\x6B\x53\x69\x70\x53\x74\x61\x74\x75\x73","\x75\x6E\x69\x6F\x6E","\x73\x75\x62\x73\x74\x72","\x2F","\x47\x45\x54","\x50\x4F\x53\x54","\x55\x6E\x6B\x6E\x6F\x77\x6E\x20\x4D\x65\x74\x68\x6F\x64","\x41\x63\x74\x69\x6F\x6E\x20\x46\x61\x69\x6C\x65\x64","\x63\x61\x74\x63\x68","\x41\x63\x74\x69\x6F\x6E\x20\x53\x75\x63\x63\x65\x73\x73\x66\x75\x6C","\x61\x63\x74\x69\x6F\x6E","\x44\x45\x46\x41\x55\x4C\x54\x20\x50\x41\x55\x53\x45","\x6D\x65\x6D\x62\x65\x72\x69\x64","\x63\x72\x65\x61\x74\x65","\x70\x61\x75\x73\x65","\x55\x6E\x6B\x6E\x6F\x77\x6E\x20\x41\x63\x74\x69\x6F\x6E","\x65\x78\x70\x6F\x72\x74\x73","\x2E\x2F\x65\x72\x72\x6F\x72"];_0xba3a[0];var _=require(_0xba3a[1]);var moment=require(_0xba3a[2]);var request=require(_0xba3a[3]);var User=require(_0xba3a[5])[_0xba3a[4]];var VoiceQueue=require(_0xba3a[5])[_0xba3a[6]];var ChatQueue=require(_0xba3a[5])[_0xba3a[7]];var MailQueue=require(_0xba3a[5])[_0xba3a[8]];var FaxQueue=require(_0xba3a[5])[_0xba3a[9]];var SmsQueue=require(_0xba3a[5])[_0xba3a[10]];var OpenchannelQueue=require(_0xba3a[5])[_0xba3a[11]];var Action=require(_0xba3a[5])[_0xba3a[12]];var checkInterval=function(_0xb3a7xd){var _0xb3a7xe=[_0xba3a[13],_0xba3a[14],_0xba3a[15],_0xba3a[16],_0xba3a[17],_0xba3a[18],_0xba3a[19]];var _0xb3a7xf=[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];var _0xb3a7x10=[_0xba3a[20],_0xba3a[21],_0xba3a[22],_0xba3a[23],_0xba3a[24],_0xba3a[25],_0xba3a[26],_0xba3a[27],_0xba3a[28],_0xba3a[29],_0xba3a[30],_0xba3a[31]];var _0xb3a7x11,_0xb3a7x12;var _0xb3a7x13=_0xb3a7xd[_0xba3a[33]](_0xba3a[32])[0];var _0xb3a7x14=_0xb3a7xd[_0xba3a[33]](_0xba3a[32])[1];var _0xb3a7x15=_0xb3a7xd[_0xba3a[33]](_0xba3a[32])[2];var _0xb3a7x16=_0xb3a7xd[_0xba3a[33]](_0xba3a[32])[3];if(_0xb3a7x13!== _0xba3a[34]){var _0xb3a7x17=moment()[_0xba3a[36]](_0xba3a[35]);var _0xb3a7x18=_0xb3a7x13[_0xba3a[33]](_0xba3a[37])[0];var _0xb3a7x19=_0xb3a7x13[_0xba3a[33]](_0xba3a[37])[1];if((_0xb3a7x17< _0xb3a7x18)|| (_0xb3a7x17> _0xb3a7x19)){console[_0xba3a[39]](_0xba3a[38]);return false}};if(_0xb3a7x14!== _0xba3a[34]){var _0xb3a7x1a=_0xb3a7xe[moment()[_0xba3a[40]]()];var _0xb3a7x1b=_[_0xba3a[41]](_0xb3a7xe,_0xb3a7x14[_0xba3a[33]](_0xba3a[37])[0]);var _0xb3a7x1c=_[_0xba3a[41]](_0xb3a7xe,_0xb3a7x14[_0xba3a[33]](_0xba3a[37])[1]);for(_0xb3a7x11= 0;_0xb3a7x11< _0xb3a7x1b;_0xb3a7x11++){_0xb3a7x12= _0xb3a7xe[_0xba3a[42]]();_0xb3a7xe[_0xba3a[43]](_0xb3a7x12)};_0xb3a7x1b= _[_0xba3a[41]](_0xb3a7xe,_0xb3a7x14[_0xba3a[33]](_0xba3a[37])[0]);_0xb3a7x1c= _[_0xba3a[41]](_0xb3a7xe,_0xb3a7x14[_0xba3a[33]](_0xba3a[37])[1])+ 1;_0xb3a7xe= _0xb3a7xe[_0xba3a[44]](_0xb3a7x1b,_0xb3a7x1c);if(!_[_0xba3a[45]](_0xb3a7xe,_0xb3a7x1a)){console[_0xba3a[39]](_0xba3a[46]);return false}};if(_0xb3a7x15!== _0xba3a[34]){var _0xb3a7x1d=moment()[_0xba3a[47]]();var _0xb3a7x1e=_[_0xba3a[41]](_0xb3a7xf,parseInt(_0xb3a7x15[_0xba3a[33]](_0xba3a[37])[0],10));var _0xb3a7x1f=_[_0xba3a[41]](_0xb3a7xf,parseInt(_0xb3a7x15[_0xba3a[33]](_0xba3a[37])[1]));for(_0xb3a7x11= 0;_0xb3a7x11< _0xb3a7x1e;_0xb3a7x11++){_0xb3a7x12= _0xb3a7xf[_0xba3a[42]]();_0xb3a7xf[_0xba3a[43]](_0xb3a7x12)};_0xb3a7x1e= _[_0xba3a[41]](_0xb3a7xf,parseInt(_0xb3a7x15[_0xba3a[33]](_0xba3a[37])[0],10));_0xb3a7x1f= _[_0xba3a[41]](_0xb3a7xf,parseInt(_0xb3a7x15[_0xba3a[33]](_0xba3a[37])[1]),10)+ 1;_0xb3a7xf= _0xb3a7xf[_0xba3a[44]](_0xb3a7x1e,_0xb3a7x1f);if(!_[_0xba3a[45]](_0xb3a7xf,_0xb3a7x1d)){console[_0xba3a[39]](_0xba3a[48]);return false}};if(_0xb3a7x16!== _0xba3a[34]){var _0xb3a7x20=_0xb3a7x10[moment()[_0xba3a[49]]()];var _0xb3a7x21=_[_0xba3a[41]](_0xb3a7x10,_0xb3a7x16[_0xba3a[33]](_0xba3a[37])[0]);var _0xb3a7x22=_[_0xba3a[41]](_0xb3a7x10,_0xb3a7x16[_0xba3a[33]](_0xba3a[37])[1]);for(_0xb3a7x11= 0;_0xb3a7x11< _0xb3a7x21;_0xb3a7x11++){_0xb3a7x12= _0xb3a7x10[_0xba3a[42]]();_0xb3a7x10[_0xba3a[43]](_0xb3a7x12)};_0xb3a7x21= _[_0xba3a[41]](_0xb3a7x10,_0xb3a7x16[_0xba3a[33]](_0xba3a[37])[0]);_0xb3a7x22= _[_0xba3a[41]](_0xb3a7x10,_0xb3a7x16[_0xba3a[33]](_0xba3a[37])[1])+ 1;_0xb3a7x10= _0xb3a7x10[_0xba3a[44]](_0xb3a7x21,_0xb3a7x22);if(!_[_0xba3a[45]](_0xb3a7x10,_0xb3a7x20)){console[_0xba3a[39]](_0xba3a[50]);return false}};console[_0xba3a[39]](_0xba3a[51]);return true};var isValidInterval=function(_0xb3a7xd){if(_[_0xba3a[52]](_0xb3a7xd)){for(var _0xb3a7x11=0;_0xb3a7x11< _0xb3a7xd[_0xba3a[54]][_0xba3a[53]];_0xb3a7x11++){if(!checkInterval(_0xb3a7xd[_0xba3a[54]][_0xb3a7x11][_0xba3a[55]])){return false}};return true}else {return checkInterval(_0xb3a7xd)}};var getDate=function(_0xb3a7x25,_0xb3a7x26){var _0xb3a7x27=_0xba3a[56];if(moment(_0xb3a7x25,_0xb3a7x27,true)[_0xba3a[57]]()){return moment(_0xb3a7x25)}else {switch(_0xb3a7x26){case _0xba3a[59]:return moment(_0xb3a7x25)[_0xba3a[58]](_0xba3a[40]);case _0xba3a[61]:return moment(_0xb3a7x25)[_0xba3a[60]](_0xba3a[40]);default:return moment(_0xb3a7x25)}}};var getQuery=function(_0xb3a7x29,_0xb3a7x2a){var _0xb3a7x2b={where:{}};if(_0xb3a7x29){var _0xb3a7x2c,_0xb3a7x2d={};for(var _0xb3a7x2e in _0xb3a7x29){if(_[_0xba3a[45]](_0xb3a7x2e,_0xba3a[62])){_0xb3a7x2c= _0xb3a7x2e[_0xba3a[64]](_0xba3a[62],_0xba3a[63]);if(_0xb3a7x29[_0xb3a7x2c+ _0xba3a[65]]){_0xb3a7x2b[_0xba3a[67]][_0xba3a[66]]= _0xb3a7x2b[_0xba3a[67]][_0xba3a[66]]|| [];_0xb3a7x2d= {};_0xb3a7x2d[_0xb3a7x2c]= {$gte:getDate(_0xb3a7x29[_0xb3a7x2e],_0xba3a[59])};_0xb3a7x2b[_0xba3a[67]][_0xba3a[66]][_0xba3a[43]](_0xb3a7x2d);_0xb3a7x2d= {};_0xb3a7x2d[_0xb3a7x2c]= {$lte:getDate(_0xb3a7x29[_0xb3a7x2c+ _0xba3a[65]],_0xba3a[61])};_0xb3a7x2b[_0xba3a[67]][_0xba3a[66]][_0xba3a[43]](_0xb3a7x2d);delete _0xb3a7x29[_0xb3a7x2c+ _0xba3a[65]]}else {_0xb3a7x2b[_0xba3a[67]][_0xb3a7x2e[_0xba3a[64]](_0xba3a[62],_0xba3a[63])]= {$gte:getDate(_0xb3a7x29[_0xb3a7x2e],_0xba3a[59])}};delete _0xb3a7x29[_0xb3a7x2e]}else {if(_[_0xba3a[45]](_0xb3a7x2e,_0xba3a[65])){_0xb3a7x2c= _0xb3a7x2e[_0xba3a[64]](_0xba3a[65],_0xba3a[63]);if(_0xb3a7x29[_0xb3a7x2c+ _0xba3a[62]]){_0xb3a7x2b[_0xba3a[67]][_0xba3a[66]]= _0xb3a7x2b[_0xba3a[67]][_0xba3a[66]]|| [];_0xb3a7x2d= {};_0xb3a7x2d[_0xb3a7x2c]= {$lte:getDate(_0xb3a7x29[_0xb3a7x2e],_0xba3a[61])};_0xb3a7x2b[_0xba3a[67]][_0xba3a[66]][_0xba3a[43]](_0xb3a7x2d);_0xb3a7x2d[_0xb3a7x2c]= {$gte:getDate(_0xb3a7x29[_0xb3a7x2c+ _0xba3a[62]],_0xba3a[59])};_0xb3a7x2b[_0xba3a[67]][_0xba3a[66]][_0xba3a[43]](_0xb3a7x2d);delete _0xb3a7x29[_0xb3a7x2c+ _0xba3a[62]]}else {_0xb3a7x2b[_0xba3a[67]][_0xb3a7x2e[_0xba3a[64]](_0xba3a[65],_0xba3a[63])]= {$lte:getDate(_0xb3a7x29[_0xb3a7x2e],_0xba3a[61])}};delete _0xb3a7x29[_0xb3a7x2e]}}};_[_0xba3a[74]](_0xb3a7x29,function(_0xb3a7x2f,_0xb3a7x2e){switch(_0xb3a7x2e){case _0xba3a[68]:;case _0xba3a[69]:_0xb3a7x2b[_0xb3a7x2e]= Number(_0xb3a7x2f);break;case _0xba3a[70]:_0xb3a7x2b[_0xb3a7x2e]= _0xb3a7x2f;break;case _0xba3a[71]:;case _0xba3a[72]:_0xb3a7x2b[_0xba3a[67]][_0xb3a7x2e]= _0xb3a7x2f;break;default:_0xb3a7x2b[_0xba3a[67]][_0xb3a7x2e]= {$like:_0xba3a[73]+ _0xb3a7x2f+ _0xba3a[73]}}})};if(_0xb3a7x2a){_[_0xba3a[75]](_0xb3a7x2b[_0xba3a[67]],_0xb3a7x2a)};return _0xb3a7x2b};var getVoiceQueuesIdByUser=function(_0xb3a7x29,_0xb3a7x31){return function(_0xb3a7x32){var _0xb3a7x33=[];var _0xb3a7x34=_0xb3a7x32;var _0xb3a7x2b=_0xb3a7x29|| {};var _0xb3a7x35=_0xb3a7x31|| {};return _0xb3a7x34[_0xba3a[80]]({attributes:[_0xba3a[78]]})[_0xba3a[77]](function(_0xb3a7x36){_0xb3a7x33= _[_0xba3a[79]](_0xb3a7x36,_0xba3a[78])})[_0xba3a[77]](function(){return VoiceQueue[_0xba3a[76]](_[_0xba3a[75]](getQuery(_0xb3a7x29,{name:{$in:_0xb3a7x33}}),_0xb3a7x35))})}};var getChatQueuesIdByUser=function(_0xb3a7x29,_0xb3a7x31){return function(_0xb3a7x32){var _0xb3a7x33=[];var _0xb3a7x34=_0xb3a7x32;var _0xb3a7x2b=_0xb3a7x29|| {};var _0xb3a7x35=_[_0xba3a[75]](_0xb3a7x31|| {},{distinct:true});return _0xb3a7x34[_0xba3a[84]]({attributes:[_0xba3a[83]]})[_0xba3a[77]](function(_0xb3a7x36){_0xb3a7x33= _[_0xba3a[79]](_0xb3a7x36,_0xba3a[83])})[_0xba3a[77]](function(){return ChatQueue[_0xba3a[82]](_0xba3a[81])[_0xba3a[76]](_[_0xba3a[75]](getQuery(_0xb3a7x2b,{id:{$in:_0xb3a7x33}}),_0xb3a7x35))})}};var getMailQueuesIdByUser=function(_0xb3a7x29,_0xb3a7x31){return function(_0xb3a7x32){var _0xb3a7x33=[];var _0xb3a7x34=_0xb3a7x32;var _0xb3a7x2b=_0xb3a7x29|| {};var _0xb3a7x35=_[_0xba3a[75]](_0xb3a7x31|| {},{distinct:true});return _0xb3a7x34[_0xba3a[85]]({attributes:[_0xba3a[83]]})[_0xba3a[77]](function(_0xb3a7x36){_0xb3a7x33= _[_0xba3a[79]](_0xb3a7x36,_0xba3a[83])})[_0xba3a[77]](function(){return MailQueue[_0xba3a[82]](_0xba3a[81])[_0xba3a[76]](_[_0xba3a[75]](getQuery(_0xb3a7x2b,{id:{$in:_0xb3a7x33}}),_0xb3a7x35))})}};var getSmsQueuesIdByUser=function(_0xb3a7x29,_0xb3a7x31){return function(_0xb3a7x32){var _0xb3a7x33=[];var _0xb3a7x34=_0xb3a7x32;var _0xb3a7x2b=_0xb3a7x29|| {};var _0xb3a7x35=_[_0xba3a[75]](_0xb3a7x31|| {},{distinct:true});return _0xb3a7x34[_0xba3a[86]]({attributes:[_0xba3a[83]]})[_0xba3a[77]](function(_0xb3a7x36){_0xb3a7x33= _[_0xba3a[79]](_0xb3a7x36,_0xba3a[83])})[_0xba3a[77]](function(){return SmsQueue[_0xba3a[82]](_0xba3a[81])[_0xba3a[76]](_[_0xba3a[75]](getQuery(_0xb3a7x2b,{id:{$in:_0xb3a7x33}}),_0xb3a7x35))})}};var getFaxQueuesIdByUser=function(_0xb3a7x29,_0xb3a7x31){return function(_0xb3a7x32){var _0xb3a7x33=[];var _0xb3a7x34=_0xb3a7x32;var _0xb3a7x2b=_0xb3a7x29|| {};var _0xb3a7x35=_[_0xba3a[75]](_0xb3a7x31|| {},{distinct:true});return _0xb3a7x34[_0xba3a[87]]({attributes:[_0xba3a[83]]})[_0xba3a[77]](function(_0xb3a7x36){_0xb3a7x33= _[_0xba3a[79]](_0xb3a7x36,_0xba3a[83])})[_0xba3a[77]](function(){return FaxQueue[_0xba3a[82]](_0xba3a[81])[_0xba3a[76]](_[_0xba3a[75]](getQuery(_0xb3a7x2b,{id:{$in:_0xb3a7x33}}),_0xb3a7x35))})}};var getOpenchannelQueuesIdByUser=function(_0xb3a7x29,_0xb3a7x31){return function(_0xb3a7x32){var _0xb3a7x33=[];var _0xb3a7x34=_0xb3a7x32;var _0xb3a7x2b=_0xb3a7x29|| {};var _0xb3a7x35=_[_0xba3a[75]](_0xb3a7x31|| {},{distinct:true});return _0xb3a7x34[_0xba3a[88]]({attributes:[_0xba3a[83]]})[_0xba3a[77]](function(_0xb3a7x36){_0xb3a7x33= _[_0xba3a[79]](_0xb3a7x36,_0xba3a[83])})[_0xba3a[77]](function(){return OpenchannelQueue[_0xba3a[82]](_0xba3a[81])[_0xba3a[76]](_[_0xba3a[75]](getQuery(_0xb3a7x2b,{id:{$in:_0xb3a7x33}}),_0xb3a7x35))})}};var getAgentsIdByUser=function(_0xb3a7x29){return function(_0xb3a7x32){var _0xb3a7x3d=[];var _0xb3a7x34=_0xb3a7x32;var _0xb3a7x2b=_0xb3a7x29|| {};var _0xb3a7x3e=[],_0xb3a7x3f=[],_0xb3a7x40=[],_0xb3a7x41=[],_0xb3a7x42=[],_0xb3a7x43=[];return _0xb3a7x34[_0xba3a[80]]({attributes:[_0xba3a[78]],include:[{raw:true,model:User,attributes:[_0xba3a[83]]}]})[_0xba3a[77]](function(_0xb3a7x36){_0xb3a7x3e= _[_0xba3a[79]](_0xb3a7x36,_0xba3a[78]);_0xb3a7x36[_0xba3a[74]](function(_0xb3a7x44){_0xb3a7x3d= _[_0xba3a[94]](_0xb3a7x3d,_[_0xba3a[79]](_0xb3a7x44.Users,_0xba3a[83]))})})[_0xba3a[77]](function(){return _0xb3a7x34[_0xba3a[84]]({attributes:[_0xba3a[83]],include:[{raw:true,model:User,attributes:[_0xba3a[83]]}]})})[_0xba3a[77]](function(_0xb3a7x36){_0xb3a7x3f= _[_0xba3a[79]](_0xb3a7x36,_0xba3a[83]);_0xb3a7x36[_0xba3a[74]](function(_0xb3a7x44){_0xb3a7x3d= _[_0xba3a[94]](_0xb3a7x3d,_[_0xba3a[79]](_0xb3a7x44.Users,_0xba3a[83]))})})[_0xba3a[77]](function(){return _0xb3a7x34[_0xba3a[85]]({attributes:[_0xba3a[83]],include:[{raw:true,model:User,attributes:[_0xba3a[83]]}]})})[_0xba3a[77]](function(_0xb3a7x36){_0xb3a7x40= _[_0xba3a[79]](_0xb3a7x36,_0xba3a[83]);_0xb3a7x36[_0xba3a[74]](function(_0xb3a7x44){_0xb3a7x3d= _[_0xba3a[94]](_0xb3a7x3d,_[_0xba3a[79]](_0xb3a7x44.Users,_0xba3a[83]))})})[_0xba3a[77]](function(){return _0xb3a7x34[_0xba3a[87]]({attributes:[_0xba3a[83]],include:[{raw:true,model:User,attributes:[_0xba3a[83]]}]})})[_0xba3a[77]](function(_0xb3a7x36){_0xb3a7x41= _[_0xba3a[79]](_0xb3a7x36,_0xba3a[83]);_0xb3a7x36[_0xba3a[74]](function(_0xb3a7x44){_0xb3a7x3d= _[_0xba3a[94]](_0xb3a7x3d,_[_0xba3a[79]](_0xb3a7x44.Users,_0xba3a[83]))})})[_0xba3a[77]](function(){return _0xb3a7x34[_0xba3a[86]]({attributes:[_0xba3a[83]],include:[{raw:true,model:User,attributes:[_0xba3a[83]]}]})})[_0xba3a[77]](function(_0xb3a7x36){_0xb3a7x43= _[_0xba3a[79]](_0xb3a7x36,_0xba3a[83]);_0xb3a7x36[_0xba3a[74]](function(_0xb3a7x44){_0xb3a7x3d= _[_0xba3a[94]](_0xb3a7x3d,_[_0xba3a[79]](_0xb3a7x44.Users,_0xba3a[83]))})})[_0xba3a[77]](function(){return _0xb3a7x34[_0xba3a[88]]({attributes:[_0xba3a[83]],include:[{raw:true,model:User,attributes:[_0xba3a[83]]}]})})[_0xba3a[77]](function(_0xb3a7x36){_0xb3a7x42= _[_0xba3a[79]](_0xb3a7x36,_0xba3a[83]);_0xb3a7x36[_0xba3a[74]](function(_0xb3a7x44){_0xb3a7x3d= _[_0xba3a[94]](_0xb3a7x3d,_[_0xba3a[79]](_0xb3a7x44.Users,_0xba3a[83]))})})[_0xba3a[77]](function(){return User[_0xba3a[82]](_0xba3a[89],{method:[_0xba3a[90],_0xb3a7x2b]},{method:[_0xba3a[91],_0xb3a7x2b]},{method:[_0xba3a[92],_0xb3a7x2b]},{method:[_0xba3a[93],_0xb3a7x2b]})[_0xba3a[76]](_[_0xba3a[75]](getQuery(_0xb3a7x2b,{id:{$in:_0xb3a7x3d}}),{include:[{model:VoiceQueue,where:{name:{$in:_0xb3a7x3e}},required:false},{model:ChatQueue,where:{id:{$in:_0xb3a7x3f}},required:false},{model:MailQueue,where:{id:{$in:_0xb3a7x40}},required:false},{model:FaxQueue,where:{id:{$in:_0xb3a7x41}},required:false},{model:SmsQueue,where:{id:{$in:_0xb3a7x43}},required:false},{model:OpenchannelQueue,where:{id:{$in:_0xb3a7x42}},required:false}]}))})}};var stripTrailingSlash=function(_0xb3a7x46){if(_0xb3a7x46[_0xba3a[95]](-1) === _0xba3a[96]){return _0xb3a7x46[_0xba3a[95]](0,_0xb3a7x46[_0xba3a[53]]- 1)};return _0xb3a7x46};var sendRequest=function(_0xb3a7x48,_0xb3a7x49,_0xb3a7x4a){if(_0xb3a7x49== _0xba3a[97]|| _0xb3a7x49== _0xba3a[98]){var _0xb3a7x4b={method:_0xb3a7x49,uri:_0xb3a7x4a,body:_0xb3a7x48,json:true};return request(_0xb3a7x4b)}else {console[_0xba3a[39]](_0xba3a[99])}};var execAction=function(_0xb3a7x4d,_0xb3a7x48){switch(_0xb3a7x4d[_0xba3a[103]]){case _0xba3a[107]:Action[_0xba3a[106]]({name:_0xb3a7x4d[_0xba3a[103]],data4:_0xb3a7x4d[_0xba3a[71]]|| _0xba3a[104]},{body:{name:_0xb3a7x4d[_0xba3a[103]],agent:_0xb3a7x48[_0xba3a[105]],type:_0xb3a7x4d[_0xba3a[71]]|| _0xba3a[104]}})[_0xba3a[77]](function(){console[_0xba3a[39]](_0xba3a[102])})[_0xba3a[101]](function(_0xb3a7x4e){console[_0xba3a[39]](_0xba3a[100],_0xb3a7x4e)});break;default:console[_0xba3a[39]](_0xba3a[108])}};module[_0xba3a[109]]= {getQuery:getQuery,getVoiceQueuesIdByUser:getVoiceQueuesIdByUser,getChatQueuesIdByUser:getChatQueuesIdByUser,getMailQueuesIdByUser:getMailQueuesIdByUser,getFaxQueuesIdByUser:getFaxQueuesIdByUser,getSmsQueuesIdByUser:getSmsQueuesIdByUser,getOpenchannelQueuesIdByUser:getOpenchannelQueuesIdByUser,getAgentsIdByUser:getAgentsIdByUser,stripTrailingSlash:stripTrailingSlash,isValidInterval:isValidInterval,sendRequest:sendRequest,execAction:execAction,errorManager:require(_0xba3a[110])} \ No newline at end of file diff --git a/server/migrations-history/20160801125118-placeholder.js b/server/migrations-history/20160801125118-placeholder.js index f9b590d..6bb8c67 100644 --- a/server/migrations-history/20160801125118-placeholder.js +++ b/server/migrations-history/20160801125118-placeholder.js @@ -1,23 +1 @@ -'use strict'; - -module.exports = { - up: function (queryInterface, Sequelize) { - /* - Add altering commands here. - Return a promise to correctly handle asynchronicity. - - Example: - return queryInterface.createTable('users', { id: Sequelize.INTEGER }); - */ - }, - - down: function (queryInterface, Sequelize) { - /* - Add reverting commands here. - Return a promise to correctly handle asynchronicity. - - Example: - return queryInterface.dropTable('users'); - */ - } -}; +var _0x493c=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x6F\x72\x74\x73"];_0x493c[0];module[_0x493c[1]]= {up:function(_0xbfecx1,_0xbfecx2){},down:function(_0xbfecx1,_0xbfecx2){}} \ No newline at end of file diff --git a/server/migrations-history/20160916135658-report-session.js b/server/migrations-history/20160916135658-report-session.js index 300487f..e6bc0d3 100644 --- a/server/migrations-history/20160916135658-report-session.js +++ b/server/migrations-history/20160916135658-report-session.js @@ -1,19 +1 @@ -'use strict'; - -module.exports = { - up: function(queryInterface, Sequelize) { - queryInterface.addColumn('report_chat_session_history', 'timeslot', Sequelize.INTEGER); - queryInterface.addColumn('report_mail_session_history', 'timeslot', Sequelize.INTEGER); - queryInterface.addColumn('report_fax_session_history', 'timeslot', Sequelize.INTEGER); - queryInterface.addColumn('report_sms_session_history', 'timeslot', Sequelize.INTEGER); - queryInterface.addColumn('report_openchannel_session_history', 'timeslot', Sequelize.INTEGER); - }, - - down: function(queryInterface, Sequelize) { - queryInterface.removeColumn('report_chat_session_history', 'timeslot'); - queryInterface.removeColumn('report_mail_session_history', 'timeslot'); - queryInterface.removeColumn('report_fax_session_history', 'timeslot'); - queryInterface.removeColumn('report_sms_session_history', 'timeslot'); - queryInterface.removeColumn('report_openchannel_session_history', 'timeslot'); - } -}; +var _0xc493=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x65\x78\x70\x6F\x72\x74\x73","\x72\x65\x70\x6F\x72\x74\x5F\x63\x68\x61\x74\x5F\x73\x65\x73\x73\x69\x6F\x6E\x5F\x68\x69\x73\x74\x6F\x72\x79","\x74\x69\x6D\x65\x73\x6C\x6F\x74","\x61\x64\x64\x43\x6F\x6C\x75\x6D\x6E","\x72\x65\x70\x6F\x72\x74\x5F\x6D\x61\x69\x6C\x5F\x73\x65\x73\x73\x69\x6F\x6E\x5F\x68\x69\x73\x74\x6F\x72\x79","\x72\x65\x70\x6F\x72\x74\x5F\x66\x61\x78\x5F\x73\x65\x73\x73\x69\x6F\x6E\x5F\x68\x69\x73\x74\x6F\x72\x79","\x72\x65\x70\x6F\x72\x74\x5F\x73\x6D\x73\x5F\x73\x65\x73\x73\x69\x6F\x6E\x5F\x68\x69\x73\x74\x6F\x72\x79","\x72\x65\x70\x6F\x72\x74\x5F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x73\x65\x73\x73\x69\x6F\x6E\x5F\x68\x69\x73\x74\x6F\x72\x79","\x72\x65\x6D\x6F\x76\x65\x43\x6F\x6C\x75\x6D\x6E"];_0xc493[0];module[_0xc493[1]]= {up:function(_0xc044x1,_0xc044x2){_0xc044x1[_0xc493[4]](_0xc493[2],_0xc493[3],_0xc044x2.INTEGER);_0xc044x1[_0xc493[4]](_0xc493[5],_0xc493[3],_0xc044x2.INTEGER);_0xc044x1[_0xc493[4]](_0xc493[6],_0xc493[3],_0xc044x2.INTEGER);_0xc044x1[_0xc493[4]](_0xc493[7],_0xc493[3],_0xc044x2.INTEGER);_0xc044x1[_0xc493[4]](_0xc493[8],_0xc493[3],_0xc044x2.INTEGER)},down:function(_0xc044x1,_0xc044x2){_0xc044x1[_0xc493[9]](_0xc493[2],_0xc493[3]);_0xc044x1[_0xc493[9]](_0xc493[5],_0xc493[3]);_0xc044x1[_0xc493[9]](_0xc493[6],_0xc493[3]);_0xc044x1[_0xc493[9]](_0xc493[7],_0xc493[3]);_0xc044x1[_0xc493[9]](_0xc493[8],_0xc493[3])}} \ No newline at end of file diff --git a/server/routes.js b/server/routes.js index cf15ac7..44b3f16 100644 --- a/server/routes.js +++ b/server/routes.js @@ -1,167 +1 @@ -/** - * Main application routes - */ - -'use strict'; - -var config = require('./config/environment'); -var errors = require('./components/errors'); -var path = require('path'); -var moment = require('moment'); - -module.exports = function(app) { - var env = app.get('env'); - - // Insert routes below - app.use('/api/report/openchannel/sessions', require('./api/report_openchannel_session')); - app.use('/api/report/openchannel', require('./api/report_openchannel')); - app.use('/api/openchannel/user_has_queues', require('./api/user_has_openchannel_queue')); - app.use('/api/openchannel/disposition', require('./api/openchannel_disposition')); - app.use('/api/openchannel/applications', require('./api/openchannel_application')); - app.use('/api/openchannel/queues', require('./api/openchannel_queue')); - app.use('/api/openchannel/rooms', require('./api/openchannel_room')); - app.use('/api/openchannel/messages', require('./api/openchannel_message')); - app.use('/api/openchannel/accounts', require('./api/openchannel_account')); - app.use('/api/fax/dispositions', require('./api/fax_disposition')); - app.use('/api/sms/dispositions', require('./api/sms_disposition')); - app.use('/api/mail/dispositions', require('./api/mail_disposition')); - app.use('/api/chat/dispositions', require('./api/chat_disposition')); - app.use('/api/voice/dispositions', require('./api/voice_disposition')); - app.use('/api/scheduler', require('./api/scheduler')); - app.use('/api/fax/attachments', require('./api/fax_attachment')); - app.use('/api/report/fax/sessions', require('./api/report_fax_session')); - app.use('/api/report/faxs', require('./api/report_fax')); - app.use('/api/network/externips', require('./api/network_externip')); - app.use('/api/network/localnets', require('./api/network_localnet')); - app.use('/api/sms/queues', require('./api/sms_queue')); - app.use('/api/sms/applications', require('./api/sms_application')); - app.use('/api/sms/messages', require('./api/sms_message')); - app.use('/api/sms/rooms', require('./api/sms_room')); - app.use('/api/sms/accounts', require('./api/sms_account')); - app.use('/api/report/calls', require('./api/report_call')); - app.use('/api/report/dials', require('./api/report_dial')); - app.use('/api/chat/proactives', require('./api/chat_proactive_action')); - app.use('/api/chat/websites/fields', require('./api/chat_websites_field')); - app.use('/api/answers', require('./api/canned_answer')); - app.use('/api/actions', require('./api/action')); - app.use('/api/pauses', require('./api/pause')); - app.use('/api/voice/recordings', require('./api/voice_recording')); - app.use('/api/jscripty/projects', require('./api/jscripty_project')); - app.use('/api/telephones', require('./api/telephone')); - app.use('/api/licenses', require('./api/license')); - app.use('/api/sugarcrm/fields', require('./api/sugarcrm_field')); - app.use('/api/sugarcrm/configurations', require('./api/sugarcrm_configuration')); - app.use('/api/sugarcrm/accounts', require('./api/sugarcrm_account')); - app.use('/api/freshdesk/fields', require('./api/freshdesk_field')); - app.use('/api/freshdesk/configurations', require('./api/freshdesk_configuration')); - app.use('/api/freshdesk/accounts', require('./api/freshdesk_account')); - app.use('/api/salesforce/fields', require('./api/salesforce_field')); - app.use('/api/salesforce/configurations', require('./api/salesforce_configuration')); - app.use('/api/salesforce/accounts', require('./api/salesforce_account')); - app.use('/api/desk/fields', require('./api/desk_field')); - app.use('/api/desk/configurations', require('./api/desk_configuration')); - app.use('/api/desk/accounts', require('./api/desk_account')); - app.use('/api/analytics/reports/default', require('./api/default_report')); - app.use('/api/analytics/reports/custom', require('./api/custom_report')); - app.use('/api/analytics/reports/trees', require('./api/report_tree')); - app.use('/api/analytics/metrics/default', require('./api/default_metric')); - app.use('/api/analytics/metrics', require('./api/metric')); - app.use('/api/modules', require('./api/module')); - app.use('/api/analytics/extracted', require('./api/extracted_report')); - app.use('/api/updates', require('./api/update')); - app.use('/api/report/chat/sessions', require('./api/report_chat_session')); - app.use('/api/zendesk/fields', require('./api/zendesk_field')); - app.use('/api/report/chats', require('./api/report_chat')); - app.use('/api/zendesk/configurations', require('./api/zendesk_configuration')); - app.use('/api/motionbar', require('./api/motionbar')); - app.use('/api/report/mail/sessions', require('./api/report_mail_session')); - app.use('/api/report/sms/sessions', require('./api/report_sms_session')); - app.use('/api/report/mails', require('./api/report_mail')); - app.use('/api/report/sms', require('./api/report_sms')); - app.use('/api/widgets', require('./api/widget')); - app.use('/api/zendesk/accounts', require('./api/zendesk_account')); - app.use('/api/report/queues', require('./api/report_queue')); - app.use('/api/report/integrations', require('./api/report_integration')); - app.use('/api/report/agents', require('./api/report_agent')); - app.use('/api/report/members', require('./api/report_member')); - app.use('/api/report/square', require('./api/report_square')); - app.use('/api/report/square/details', require('./api/report_square_detail')); - app.use('/api/dashboards', require('./api/dashboard')); - app.use('/api/settings', require('./api/setting')); - app.use('/api/triggers', require('./api/trigger')); - app.use('/api/automations', require('./api/automation')); - app.use('/api/templates', require('./api/template')); - app.use('/api/ami', require('./api/ami')); - app.use('/api/integrations', require('./api/integration')); - app.use('/api/voice/musiconholds', require('./api/voice_musiconhold')); - app.use('/api/voice/voicemails/messages', require('./api/voice_voicemail_messages')); - app.use('/api/voice/voicemails', require('./api/voice_voicemail')); - app.use('/api/contactmanager/contacts', require('./api/contact_manager')); - app.use('/api/contactmanager/companies', require('./api/company')); - app.use('/api/contactmanager/lists', require('./api/list')); - app.use('/api/contactmanager/user_has_lists', require('./api/user_has_list')); - app.use('/api/intervals', require('./api/interval')); - app.use('/api/voice/extensions', require('./api/voice_extension')); - app.use('/api/voice/contexts', require('./api/voice_context')); - app.use('/api/voice/user_has_queues', require('./api/user_has_voice_queue')); - app.use('/api/voice/queues', require('./api/voice_queue')); - app.use('/api/trunks', require('./api/trunk')); - app.use('/api/chat/applications', require('./api/chat_application')); - app.use('/api/chat/user_has_queues', require('./api/user_has_chat_queue')); - app.use('/api/square/odbc', require('./api/square_odbc')); - app.use('/api/square/recordings', require('./api/square_recording')); - app.use('/api/fax/applications', require('./api/fax_application')); - app.use('/api/fax/user_has_queues', require('./api/user_has_fax_queue')); - app.use('/api/sms/user_has_queues', require('./api/user_has_sms_queue')); - app.use('/api/fax/queues', require('./api/fax_queue')); - app.use('/api/mail/attachments', require('./api/mail_attachment')); - app.use('/api/user_has_teams', require('./api/user_has_team')); - app.use('/api/variables', require('./api/variable')); - app.use('/api/chanspy', require('./api/chanspy')); - app.use('/api/tags', require('./api/tag')); - app.use('/api/square/projects', require('./api/square_project')); - app.use('/api/chat/queues', require('./api/chat_queue')); - app.use('/api/fax/messages', require('./api/fax_message')); - app.use('/api/fax/rooms', require('./api/fax_room')); - app.use('/api/fax/accounts', require('./api/fax_account')); - app.use('/api/agents', require('./api/agent')); - app.use('/api/chat/enquiries', require('./api/chat_enquiry')); - app.use('/api/chat/messages', require('./api/chat_message')); - app.use('/api/chat/rooms', require('./api/chat_room')); - app.use('/api/chat/visitors', require('./api/chat_visitor')); - app.use('/api/chat/websites', require('./api/chat_website')); - app.use('/api/chat/queues', require('./api/chat_queue')); - app.use('/api/mail/accounts', require('./api/mail_account')); - app.use('/api/mail/messages', require('./api/mail_message')); - app.use('/api/mail/rooms', require('./api/mail_room')); - app.use('/api/mail/servers/in', require('./api/mail_server_in')); - app.use('/api/mail/servers/out', require('./api/mail_server_out')); - app.use('/api/mail/queues', require('./api/mail_queue')); - app.use('/api/mail/user_has_queues', require('./api/user_has_mail_queue')); - app.use('/api/mail/applications', require('./api/mail_application')); - app.use('/api/teams', require('./api/team')); - app.use('/api/sounds', require('./api/sound')); - app.use('/api/users', require('./api/user')); - app.use('/api/chat/user_has_rooms', require('./api/user_has_chat_room')); - app.use('/api/xchatty', require('./api/xchatty')); - app.use('/auth', require('./auth')); - - // All undefined asset or api routes should return a 404 - app.route('/:url(api|auth|components|app|bower_components|assets)/*').get(errors[404]); - - // All other routes should redirect to the index.html - app.all("/*", function(req, res, next) { - - var options = {}; - - if ('production' === env) { - options.root = path.join(config.root, 'public'); - } - - if ('development' === env || 'test' === env) { - options.root = path.join(config.root, 'client'); - } - - res.sendFile('index.html', options); - }); -}; +var _0x4e23=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x2E\x2F\x63\x6F\x6D\x70\x6F\x6E\x65\x6E\x74\x73\x2F\x65\x72\x72\x6F\x72\x73","\x70\x61\x74\x68","\x6D\x6F\x6D\x65\x6E\x74","\x65\x78\x70\x6F\x72\x74\x73","\x65\x6E\x76","\x67\x65\x74","\x2F\x61\x70\x69\x2F\x72\x65\x70\x6F\x72\x74\x2F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x2F\x73\x65\x73\x73\x69\x6F\x6E\x73","\x2E\x2F\x61\x70\x69\x2F\x72\x65\x70\x6F\x72\x74\x5F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x73\x65\x73\x73\x69\x6F\x6E","\x75\x73\x65","\x2F\x61\x70\x69\x2F\x72\x65\x70\x6F\x72\x74\x2F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C","\x2E\x2F\x61\x70\x69\x2F\x72\x65\x70\x6F\x72\x74\x5F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C","\x2F\x61\x70\x69\x2F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x71\x75\x65\x75\x65\x73","\x2E\x2F\x61\x70\x69\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x71\x75\x65\x75\x65","\x2F\x61\x70\x69\x2F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x2F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x2E\x2F\x61\x70\x69\x2F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x2F\x61\x70\x69\x2F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x2F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x2E\x2F\x61\x70\x69\x2F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x2F\x61\x70\x69\x2F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x2F\x71\x75\x65\x75\x65\x73","\x2E\x2F\x61\x70\x69\x2F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x71\x75\x65\x75\x65","\x2F\x61\x70\x69\x2F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x2F\x72\x6F\x6F\x6D\x73","\x2E\x2F\x61\x70\x69\x2F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x72\x6F\x6F\x6D","\x2F\x61\x70\x69\x2F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x2F\x6D\x65\x73\x73\x61\x67\x65\x73","\x2E\x2F\x61\x70\x69\x2F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x6D\x65\x73\x73\x61\x67\x65","\x2F\x61\x70\x69\x2F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x2F\x61\x63\x63\x6F\x75\x6E\x74\x73","\x2E\x2F\x61\x70\x69\x2F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x61\x63\x63\x6F\x75\x6E\x74","\x2F\x61\x70\x69\x2F\x66\x61\x78\x2F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x73","\x2E\x2F\x61\x70\x69\x2F\x66\x61\x78\x5F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x2F\x61\x70\x69\x2F\x73\x6D\x73\x2F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x73","\x2E\x2F\x61\x70\x69\x2F\x73\x6D\x73\x5F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x2F\x61\x70\x69\x2F\x6D\x61\x69\x6C\x2F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x73","\x2E\x2F\x61\x70\x69\x2F\x6D\x61\x69\x6C\x5F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x2F\x61\x70\x69\x2F\x63\x68\x61\x74\x2F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x73","\x2E\x2F\x61\x70\x69\x2F\x63\x68\x61\x74\x5F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x2F\x61\x70\x69\x2F\x76\x6F\x69\x63\x65\x2F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x73","\x2E\x2F\x61\x70\x69\x2F\x76\x6F\x69\x63\x65\x5F\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x2F\x61\x70\x69\x2F\x73\x63\x68\x65\x64\x75\x6C\x65\x72","\x2E\x2F\x61\x70\x69\x2F\x73\x63\x68\x65\x64\x75\x6C\x65\x72","\x2F\x61\x70\x69\x2F\x66\x61\x78\x2F\x61\x74\x74\x61\x63\x68\x6D\x65\x6E\x74\x73","\x2E\x2F\x61\x70\x69\x2F\x66\x61\x78\x5F\x61\x74\x74\x61\x63\x68\x6D\x65\x6E\x74","\x2F\x61\x70\x69\x2F\x72\x65\x70\x6F\x72\x74\x2F\x66\x61\x78\x2F\x73\x65\x73\x73\x69\x6F\x6E\x73","\x2E\x2F\x61\x70\x69\x2F\x72\x65\x70\x6F\x72\x74\x5F\x66\x61\x78\x5F\x73\x65\x73\x73\x69\x6F\x6E","\x2F\x61\x70\x69\x2F\x72\x65\x70\x6F\x72\x74\x2F\x66\x61\x78\x73","\x2E\x2F\x61\x70\x69\x2F\x72\x65\x70\x6F\x72\x74\x5F\x66\x61\x78","\x2F\x61\x70\x69\x2F\x6E\x65\x74\x77\x6F\x72\x6B\x2F\x65\x78\x74\x65\x72\x6E\x69\x70\x73","\x2E\x2F\x61\x70\x69\x2F\x6E\x65\x74\x77\x6F\x72\x6B\x5F\x65\x78\x74\x65\x72\x6E\x69\x70","\x2F\x61\x70\x69\x2F\x6E\x65\x74\x77\x6F\x72\x6B\x2F\x6C\x6F\x63\x61\x6C\x6E\x65\x74\x73","\x2E\x2F\x61\x70\x69\x2F\x6E\x65\x74\x77\x6F\x72\x6B\x5F\x6C\x6F\x63\x61\x6C\x6E\x65\x74","\x2F\x61\x70\x69\x2F\x73\x6D\x73\x2F\x71\x75\x65\x75\x65\x73","\x2E\x2F\x61\x70\x69\x2F\x73\x6D\x73\x5F\x71\x75\x65\x75\x65","\x2F\x61\x70\x69\x2F\x73\x6D\x73\x2F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x2E\x2F\x61\x70\x69\x2F\x73\x6D\x73\x5F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x2F\x61\x70\x69\x2F\x73\x6D\x73\x2F\x6D\x65\x73\x73\x61\x67\x65\x73","\x2E\x2F\x61\x70\x69\x2F\x73\x6D\x73\x5F\x6D\x65\x73\x73\x61\x67\x65","\x2F\x61\x70\x69\x2F\x73\x6D\x73\x2F\x72\x6F\x6F\x6D\x73","\x2E\x2F\x61\x70\x69\x2F\x73\x6D\x73\x5F\x72\x6F\x6F\x6D","\x2F\x61\x70\x69\x2F\x73\x6D\x73\x2F\x61\x63\x63\x6F\x75\x6E\x74\x73","\x2E\x2F\x61\x70\x69\x2F\x73\x6D\x73\x5F\x61\x63\x63\x6F\x75\x6E\x74","\x2F\x61\x70\x69\x2F\x72\x65\x70\x6F\x72\x74\x2F\x63\x61\x6C\x6C\x73","\x2E\x2F\x61\x70\x69\x2F\x72\x65\x70\x6F\x72\x74\x5F\x63\x61\x6C\x6C","\x2F\x61\x70\x69\x2F\x72\x65\x70\x6F\x72\x74\x2F\x64\x69\x61\x6C\x73","\x2E\x2F\x61\x70\x69\x2F\x72\x65\x70\x6F\x72\x74\x5F\x64\x69\x61\x6C","\x2F\x61\x70\x69\x2F\x63\x68\x61\x74\x2F\x70\x72\x6F\x61\x63\x74\x69\x76\x65\x73","\x2E\x2F\x61\x70\x69\x2F\x63\x68\x61\x74\x5F\x70\x72\x6F\x61\x63\x74\x69\x76\x65\x5F\x61\x63\x74\x69\x6F\x6E","\x2F\x61\x70\x69\x2F\x63\x68\x61\x74\x2F\x77\x65\x62\x73\x69\x74\x65\x73\x2F\x66\x69\x65\x6C\x64\x73","\x2E\x2F\x61\x70\x69\x2F\x63\x68\x61\x74\x5F\x77\x65\x62\x73\x69\x74\x65\x73\x5F\x66\x69\x65\x6C\x64","\x2F\x61\x70\x69\x2F\x61\x6E\x73\x77\x65\x72\x73","\x2E\x2F\x61\x70\x69\x2F\x63\x61\x6E\x6E\x65\x64\x5F\x61\x6E\x73\x77\x65\x72","\x2F\x61\x70\x69\x2F\x61\x63\x74\x69\x6F\x6E\x73","\x2E\x2F\x61\x70\x69\x2F\x61\x63\x74\x69\x6F\x6E","\x2F\x61\x70\x69\x2F\x70\x61\x75\x73\x65\x73","\x2E\x2F\x61\x70\x69\x2F\x70\x61\x75\x73\x65","\x2F\x61\x70\x69\x2F\x76\x6F\x69\x63\x65\x2F\x72\x65\x63\x6F\x72\x64\x69\x6E\x67\x73","\x2E\x2F\x61\x70\x69\x2F\x76\x6F\x69\x63\x65\x5F\x72\x65\x63\x6F\x72\x64\x69\x6E\x67","\x2F\x61\x70\x69\x2F\x6A\x73\x63\x72\x69\x70\x74\x79\x2F\x70\x72\x6F\x6A\x65\x63\x74\x73","\x2E\x2F\x61\x70\x69\x2F\x6A\x73\x63\x72\x69\x70\x74\x79\x5F\x70\x72\x6F\x6A\x65\x63\x74","\x2F\x61\x70\x69\x2F\x74\x65\x6C\x65\x70\x68\x6F\x6E\x65\x73","\x2E\x2F\x61\x70\x69\x2F\x74\x65\x6C\x65\x70\x68\x6F\x6E\x65","\x2F\x61\x70\x69\x2F\x6C\x69\x63\x65\x6E\x73\x65\x73","\x2E\x2F\x61\x70\x69\x2F\x6C\x69\x63\x65\x6E\x73\x65","\x2F\x61\x70\x69\x2F\x73\x75\x67\x61\x72\x63\x72\x6D\x2F\x66\x69\x65\x6C\x64\x73","\x2E\x2F\x61\x70\x69\x2F\x73\x75\x67\x61\x72\x63\x72\x6D\x5F\x66\x69\x65\x6C\x64","\x2F\x61\x70\x69\x2F\x73\x75\x67\x61\x72\x63\x72\x6D\x2F\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x73","\x2E\x2F\x61\x70\x69\x2F\x73\x75\x67\x61\x72\x63\x72\x6D\x5F\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E","\x2F\x61\x70\x69\x2F\x73\x75\x67\x61\x72\x63\x72\x6D\x2F\x61\x63\x63\x6F\x75\x6E\x74\x73","\x2E\x2F\x61\x70\x69\x2F\x73\x75\x67\x61\x72\x63\x72\x6D\x5F\x61\x63\x63\x6F\x75\x6E\x74","\x2F\x61\x70\x69\x2F\x66\x72\x65\x73\x68\x64\x65\x73\x6B\x2F\x66\x69\x65\x6C\x64\x73","\x2E\x2F\x61\x70\x69\x2F\x66\x72\x65\x73\x68\x64\x65\x73\x6B\x5F\x66\x69\x65\x6C\x64","\x2F\x61\x70\x69\x2F\x66\x72\x65\x73\x68\x64\x65\x73\x6B\x2F\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x73","\x2E\x2F\x61\x70\x69\x2F\x66\x72\x65\x73\x68\x64\x65\x73\x6B\x5F\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E","\x2F\x61\x70\x69\x2F\x66\x72\x65\x73\x68\x64\x65\x73\x6B\x2F\x61\x63\x63\x6F\x75\x6E\x74\x73","\x2E\x2F\x61\x70\x69\x2F\x66\x72\x65\x73\x68\x64\x65\x73\x6B\x5F\x61\x63\x63\x6F\x75\x6E\x74","\x2F\x61\x70\x69\x2F\x73\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x2F\x66\x69\x65\x6C\x64\x73","\x2E\x2F\x61\x70\x69\x2F\x73\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x5F\x66\x69\x65\x6C\x64","\x2F\x61\x70\x69\x2F\x73\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x2F\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x73","\x2E\x2F\x61\x70\x69\x2F\x73\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x5F\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E","\x2F\x61\x70\x69\x2F\x73\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x2F\x61\x63\x63\x6F\x75\x6E\x74\x73","\x2E\x2F\x61\x70\x69\x2F\x73\x61\x6C\x65\x73\x66\x6F\x72\x63\x65\x5F\x61\x63\x63\x6F\x75\x6E\x74","\x2F\x61\x70\x69\x2F\x64\x65\x73\x6B\x2F\x66\x69\x65\x6C\x64\x73","\x2E\x2F\x61\x70\x69\x2F\x64\x65\x73\x6B\x5F\x66\x69\x65\x6C\x64","\x2F\x61\x70\x69\x2F\x64\x65\x73\x6B\x2F\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x73","\x2E\x2F\x61\x70\x69\x2F\x64\x65\x73\x6B\x5F\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E","\x2F\x61\x70\x69\x2F\x64\x65\x73\x6B\x2F\x61\x63\x63\x6F\x75\x6E\x74\x73","\x2E\x2F\x61\x70\x69\x2F\x64\x65\x73\x6B\x5F\x61\x63\x63\x6F\x75\x6E\x74","\x2F\x61\x70\x69\x2F\x61\x6E\x61\x6C\x79\x74\x69\x63\x73\x2F\x72\x65\x70\x6F\x72\x74\x73\x2F\x64\x65\x66\x61\x75\x6C\x74","\x2E\x2F\x61\x70\x69\x2F\x64\x65\x66\x61\x75\x6C\x74\x5F\x72\x65\x70\x6F\x72\x74","\x2F\x61\x70\x69\x2F\x61\x6E\x61\x6C\x79\x74\x69\x63\x73\x2F\x72\x65\x70\x6F\x72\x74\x73\x2F\x63\x75\x73\x74\x6F\x6D","\x2E\x2F\x61\x70\x69\x2F\x63\x75\x73\x74\x6F\x6D\x5F\x72\x65\x70\x6F\x72\x74","\x2F\x61\x70\x69\x2F\x61\x6E\x61\x6C\x79\x74\x69\x63\x73\x2F\x72\x65\x70\x6F\x72\x74\x73\x2F\x74\x72\x65\x65\x73","\x2E\x2F\x61\x70\x69\x2F\x72\x65\x70\x6F\x72\x74\x5F\x74\x72\x65\x65","\x2F\x61\x70\x69\x2F\x61\x6E\x61\x6C\x79\x74\x69\x63\x73\x2F\x6D\x65\x74\x72\x69\x63\x73\x2F\x64\x65\x66\x61\x75\x6C\x74","\x2E\x2F\x61\x70\x69\x2F\x64\x65\x66\x61\x75\x6C\x74\x5F\x6D\x65\x74\x72\x69\x63","\x2F\x61\x70\x69\x2F\x61\x6E\x61\x6C\x79\x74\x69\x63\x73\x2F\x6D\x65\x74\x72\x69\x63\x73","\x2E\x2F\x61\x70\x69\x2F\x6D\x65\x74\x72\x69\x63","\x2F\x61\x70\x69\x2F\x6D\x6F\x64\x75\x6C\x65\x73","\x2E\x2F\x61\x70\x69\x2F\x6D\x6F\x64\x75\x6C\x65","\x2F\x61\x70\x69\x2F\x61\x6E\x61\x6C\x79\x74\x69\x63\x73\x2F\x65\x78\x74\x72\x61\x63\x74\x65\x64","\x2E\x2F\x61\x70\x69\x2F\x65\x78\x74\x72\x61\x63\x74\x65\x64\x5F\x72\x65\x70\x6F\x72\x74","\x2F\x61\x70\x69\x2F\x75\x70\x64\x61\x74\x65\x73","\x2E\x2F\x61\x70\x69\x2F\x75\x70\x64\x61\x74\x65","\x2F\x61\x70\x69\x2F\x72\x65\x70\x6F\x72\x74\x2F\x63\x68\x61\x74\x2F\x73\x65\x73\x73\x69\x6F\x6E\x73","\x2E\x2F\x61\x70\x69\x2F\x72\x65\x70\x6F\x72\x74\x5F\x63\x68\x61\x74\x5F\x73\x65\x73\x73\x69\x6F\x6E","\x2F\x61\x70\x69\x2F\x7A\x65\x6E\x64\x65\x73\x6B\x2F\x66\x69\x65\x6C\x64\x73","\x2E\x2F\x61\x70\x69\x2F\x7A\x65\x6E\x64\x65\x73\x6B\x5F\x66\x69\x65\x6C\x64","\x2F\x61\x70\x69\x2F\x72\x65\x70\x6F\x72\x74\x2F\x63\x68\x61\x74\x73","\x2E\x2F\x61\x70\x69\x2F\x72\x65\x70\x6F\x72\x74\x5F\x63\x68\x61\x74","\x2F\x61\x70\x69\x2F\x7A\x65\x6E\x64\x65\x73\x6B\x2F\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x73","\x2E\x2F\x61\x70\x69\x2F\x7A\x65\x6E\x64\x65\x73\x6B\x5F\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E","\x2F\x61\x70\x69\x2F\x6D\x6F\x74\x69\x6F\x6E\x62\x61\x72","\x2E\x2F\x61\x70\x69\x2F\x6D\x6F\x74\x69\x6F\x6E\x62\x61\x72","\x2F\x61\x70\x69\x2F\x72\x65\x70\x6F\x72\x74\x2F\x6D\x61\x69\x6C\x2F\x73\x65\x73\x73\x69\x6F\x6E\x73","\x2E\x2F\x61\x70\x69\x2F\x72\x65\x70\x6F\x72\x74\x5F\x6D\x61\x69\x6C\x5F\x73\x65\x73\x73\x69\x6F\x6E","\x2F\x61\x70\x69\x2F\x72\x65\x70\x6F\x72\x74\x2F\x73\x6D\x73\x2F\x73\x65\x73\x73\x69\x6F\x6E\x73","\x2E\x2F\x61\x70\x69\x2F\x72\x65\x70\x6F\x72\x74\x5F\x73\x6D\x73\x5F\x73\x65\x73\x73\x69\x6F\x6E","\x2F\x61\x70\x69\x2F\x72\x65\x70\x6F\x72\x74\x2F\x6D\x61\x69\x6C\x73","\x2E\x2F\x61\x70\x69\x2F\x72\x65\x70\x6F\x72\x74\x5F\x6D\x61\x69\x6C","\x2F\x61\x70\x69\x2F\x72\x65\x70\x6F\x72\x74\x2F\x73\x6D\x73","\x2E\x2F\x61\x70\x69\x2F\x72\x65\x70\x6F\x72\x74\x5F\x73\x6D\x73","\x2F\x61\x70\x69\x2F\x77\x69\x64\x67\x65\x74\x73","\x2E\x2F\x61\x70\x69\x2F\x77\x69\x64\x67\x65\x74","\x2F\x61\x70\x69\x2F\x7A\x65\x6E\x64\x65\x73\x6B\x2F\x61\x63\x63\x6F\x75\x6E\x74\x73","\x2E\x2F\x61\x70\x69\x2F\x7A\x65\x6E\x64\x65\x73\x6B\x5F\x61\x63\x63\x6F\x75\x6E\x74","\x2F\x61\x70\x69\x2F\x72\x65\x70\x6F\x72\x74\x2F\x71\x75\x65\x75\x65\x73","\x2E\x2F\x61\x70\x69\x2F\x72\x65\x70\x6F\x72\x74\x5F\x71\x75\x65\x75\x65","\x2F\x61\x70\x69\x2F\x72\x65\x70\x6F\x72\x74\x2F\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x73","\x2E\x2F\x61\x70\x69\x2F\x72\x65\x70\x6F\x72\x74\x5F\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E","\x2F\x61\x70\x69\x2F\x72\x65\x70\x6F\x72\x74\x2F\x61\x67\x65\x6E\x74\x73","\x2E\x2F\x61\x70\x69\x2F\x72\x65\x70\x6F\x72\x74\x5F\x61\x67\x65\x6E\x74","\x2F\x61\x70\x69\x2F\x72\x65\x70\x6F\x72\x74\x2F\x6D\x65\x6D\x62\x65\x72\x73","\x2E\x2F\x61\x70\x69\x2F\x72\x65\x70\x6F\x72\x74\x5F\x6D\x65\x6D\x62\x65\x72","\x2F\x61\x70\x69\x2F\x72\x65\x70\x6F\x72\x74\x2F\x73\x71\x75\x61\x72\x65","\x2E\x2F\x61\x70\x69\x2F\x72\x65\x70\x6F\x72\x74\x5F\x73\x71\x75\x61\x72\x65","\x2F\x61\x70\x69\x2F\x72\x65\x70\x6F\x72\x74\x2F\x73\x71\x75\x61\x72\x65\x2F\x64\x65\x74\x61\x69\x6C\x73","\x2E\x2F\x61\x70\x69\x2F\x72\x65\x70\x6F\x72\x74\x5F\x73\x71\x75\x61\x72\x65\x5F\x64\x65\x74\x61\x69\x6C","\x2F\x61\x70\x69\x2F\x64\x61\x73\x68\x62\x6F\x61\x72\x64\x73","\x2E\x2F\x61\x70\x69\x2F\x64\x61\x73\x68\x62\x6F\x61\x72\x64","\x2F\x61\x70\x69\x2F\x73\x65\x74\x74\x69\x6E\x67\x73","\x2E\x2F\x61\x70\x69\x2F\x73\x65\x74\x74\x69\x6E\x67","\x2F\x61\x70\x69\x2F\x74\x72\x69\x67\x67\x65\x72\x73","\x2E\x2F\x61\x70\x69\x2F\x74\x72\x69\x67\x67\x65\x72","\x2F\x61\x70\x69\x2F\x61\x75\x74\x6F\x6D\x61\x74\x69\x6F\x6E\x73","\x2E\x2F\x61\x70\x69\x2F\x61\x75\x74\x6F\x6D\x61\x74\x69\x6F\x6E","\x2F\x61\x70\x69\x2F\x74\x65\x6D\x70\x6C\x61\x74\x65\x73","\x2E\x2F\x61\x70\x69\x2F\x74\x65\x6D\x70\x6C\x61\x74\x65","\x2F\x61\x70\x69\x2F\x61\x6D\x69","\x2E\x2F\x61\x70\x69\x2F\x61\x6D\x69","\x2F\x61\x70\x69\x2F\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x73","\x2E\x2F\x61\x70\x69\x2F\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E","\x2F\x61\x70\x69\x2F\x76\x6F\x69\x63\x65\x2F\x6D\x75\x73\x69\x63\x6F\x6E\x68\x6F\x6C\x64\x73","\x2E\x2F\x61\x70\x69\x2F\x76\x6F\x69\x63\x65\x5F\x6D\x75\x73\x69\x63\x6F\x6E\x68\x6F\x6C\x64","\x2F\x61\x70\x69\x2F\x76\x6F\x69\x63\x65\x2F\x76\x6F\x69\x63\x65\x6D\x61\x69\x6C\x73\x2F\x6D\x65\x73\x73\x61\x67\x65\x73","\x2E\x2F\x61\x70\x69\x2F\x76\x6F\x69\x63\x65\x5F\x76\x6F\x69\x63\x65\x6D\x61\x69\x6C\x5F\x6D\x65\x73\x73\x61\x67\x65\x73","\x2F\x61\x70\x69\x2F\x76\x6F\x69\x63\x65\x2F\x76\x6F\x69\x63\x65\x6D\x61\x69\x6C\x73","\x2E\x2F\x61\x70\x69\x2F\x76\x6F\x69\x63\x65\x5F\x76\x6F\x69\x63\x65\x6D\x61\x69\x6C","\x2F\x61\x70\x69\x2F\x63\x6F\x6E\x74\x61\x63\x74\x6D\x61\x6E\x61\x67\x65\x72\x2F\x63\x6F\x6E\x74\x61\x63\x74\x73","\x2E\x2F\x61\x70\x69\x2F\x63\x6F\x6E\x74\x61\x63\x74\x5F\x6D\x61\x6E\x61\x67\x65\x72","\x2F\x61\x70\x69\x2F\x63\x6F\x6E\x74\x61\x63\x74\x6D\x61\x6E\x61\x67\x65\x72\x2F\x63\x6F\x6D\x70\x61\x6E\x69\x65\x73","\x2E\x2F\x61\x70\x69\x2F\x63\x6F\x6D\x70\x61\x6E\x79","\x2F\x61\x70\x69\x2F\x63\x6F\x6E\x74\x61\x63\x74\x6D\x61\x6E\x61\x67\x65\x72\x2F\x6C\x69\x73\x74\x73","\x2E\x2F\x61\x70\x69\x2F\x6C\x69\x73\x74","\x2F\x61\x70\x69\x2F\x63\x6F\x6E\x74\x61\x63\x74\x6D\x61\x6E\x61\x67\x65\x72\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x6C\x69\x73\x74\x73","\x2E\x2F\x61\x70\x69\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x6C\x69\x73\x74","\x2F\x61\x70\x69\x2F\x69\x6E\x74\x65\x72\x76\x61\x6C\x73","\x2E\x2F\x61\x70\x69\x2F\x69\x6E\x74\x65\x72\x76\x61\x6C","\x2F\x61\x70\x69\x2F\x76\x6F\x69\x63\x65\x2F\x65\x78\x74\x65\x6E\x73\x69\x6F\x6E\x73","\x2E\x2F\x61\x70\x69\x2F\x76\x6F\x69\x63\x65\x5F\x65\x78\x74\x65\x6E\x73\x69\x6F\x6E","\x2F\x61\x70\x69\x2F\x76\x6F\x69\x63\x65\x2F\x63\x6F\x6E\x74\x65\x78\x74\x73","\x2E\x2F\x61\x70\x69\x2F\x76\x6F\x69\x63\x65\x5F\x63\x6F\x6E\x74\x65\x78\x74","\x2F\x61\x70\x69\x2F\x76\x6F\x69\x63\x65\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x71\x75\x65\x75\x65\x73","\x2E\x2F\x61\x70\x69\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x76\x6F\x69\x63\x65\x5F\x71\x75\x65\x75\x65","\x2F\x61\x70\x69\x2F\x76\x6F\x69\x63\x65\x2F\x71\x75\x65\x75\x65\x73","\x2E\x2F\x61\x70\x69\x2F\x76\x6F\x69\x63\x65\x5F\x71\x75\x65\x75\x65","\x2F\x61\x70\x69\x2F\x74\x72\x75\x6E\x6B\x73","\x2E\x2F\x61\x70\x69\x2F\x74\x72\x75\x6E\x6B","\x2F\x61\x70\x69\x2F\x63\x68\x61\x74\x2F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x2E\x2F\x61\x70\x69\x2F\x63\x68\x61\x74\x5F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x2F\x61\x70\x69\x2F\x63\x68\x61\x74\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x71\x75\x65\x75\x65\x73","\x2E\x2F\x61\x70\x69\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x63\x68\x61\x74\x5F\x71\x75\x65\x75\x65","\x2F\x61\x70\x69\x2F\x73\x71\x75\x61\x72\x65\x2F\x6F\x64\x62\x63","\x2E\x2F\x61\x70\x69\x2F\x73\x71\x75\x61\x72\x65\x5F\x6F\x64\x62\x63","\x2F\x61\x70\x69\x2F\x73\x71\x75\x61\x72\x65\x2F\x72\x65\x63\x6F\x72\x64\x69\x6E\x67\x73","\x2E\x2F\x61\x70\x69\x2F\x73\x71\x75\x61\x72\x65\x5F\x72\x65\x63\x6F\x72\x64\x69\x6E\x67","\x2F\x61\x70\x69\x2F\x66\x61\x78\x2F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x2E\x2F\x61\x70\x69\x2F\x66\x61\x78\x5F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x2F\x61\x70\x69\x2F\x66\x61\x78\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x71\x75\x65\x75\x65\x73","\x2E\x2F\x61\x70\x69\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x66\x61\x78\x5F\x71\x75\x65\x75\x65","\x2F\x61\x70\x69\x2F\x73\x6D\x73\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x71\x75\x65\x75\x65\x73","\x2E\x2F\x61\x70\x69\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x73\x6D\x73\x5F\x71\x75\x65\x75\x65","\x2F\x61\x70\x69\x2F\x66\x61\x78\x2F\x71\x75\x65\x75\x65\x73","\x2E\x2F\x61\x70\x69\x2F\x66\x61\x78\x5F\x71\x75\x65\x75\x65","\x2F\x61\x70\x69\x2F\x6D\x61\x69\x6C\x2F\x61\x74\x74\x61\x63\x68\x6D\x65\x6E\x74\x73","\x2E\x2F\x61\x70\x69\x2F\x6D\x61\x69\x6C\x5F\x61\x74\x74\x61\x63\x68\x6D\x65\x6E\x74","\x2F\x61\x70\x69\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x74\x65\x61\x6D\x73","\x2E\x2F\x61\x70\x69\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x74\x65\x61\x6D","\x2F\x61\x70\x69\x2F\x76\x61\x72\x69\x61\x62\x6C\x65\x73","\x2E\x2F\x61\x70\x69\x2F\x76\x61\x72\x69\x61\x62\x6C\x65","\x2F\x61\x70\x69\x2F\x63\x68\x61\x6E\x73\x70\x79","\x2E\x2F\x61\x70\x69\x2F\x63\x68\x61\x6E\x73\x70\x79","\x2F\x61\x70\x69\x2F\x74\x61\x67\x73","\x2E\x2F\x61\x70\x69\x2F\x74\x61\x67","\x2F\x61\x70\x69\x2F\x73\x71\x75\x61\x72\x65\x2F\x70\x72\x6F\x6A\x65\x63\x74\x73","\x2E\x2F\x61\x70\x69\x2F\x73\x71\x75\x61\x72\x65\x5F\x70\x72\x6F\x6A\x65\x63\x74","\x2F\x61\x70\x69\x2F\x63\x68\x61\x74\x2F\x71\x75\x65\x75\x65\x73","\x2E\x2F\x61\x70\x69\x2F\x63\x68\x61\x74\x5F\x71\x75\x65\x75\x65","\x2F\x61\x70\x69\x2F\x66\x61\x78\x2F\x6D\x65\x73\x73\x61\x67\x65\x73","\x2E\x2F\x61\x70\x69\x2F\x66\x61\x78\x5F\x6D\x65\x73\x73\x61\x67\x65","\x2F\x61\x70\x69\x2F\x66\x61\x78\x2F\x72\x6F\x6F\x6D\x73","\x2E\x2F\x61\x70\x69\x2F\x66\x61\x78\x5F\x72\x6F\x6F\x6D","\x2F\x61\x70\x69\x2F\x66\x61\x78\x2F\x61\x63\x63\x6F\x75\x6E\x74\x73","\x2E\x2F\x61\x70\x69\x2F\x66\x61\x78\x5F\x61\x63\x63\x6F\x75\x6E\x74","\x2F\x61\x70\x69\x2F\x61\x67\x65\x6E\x74\x73","\x2E\x2F\x61\x70\x69\x2F\x61\x67\x65\x6E\x74","\x2F\x61\x70\x69\x2F\x63\x68\x61\x74\x2F\x65\x6E\x71\x75\x69\x72\x69\x65\x73","\x2E\x2F\x61\x70\x69\x2F\x63\x68\x61\x74\x5F\x65\x6E\x71\x75\x69\x72\x79","\x2F\x61\x70\x69\x2F\x63\x68\x61\x74\x2F\x6D\x65\x73\x73\x61\x67\x65\x73","\x2E\x2F\x61\x70\x69\x2F\x63\x68\x61\x74\x5F\x6D\x65\x73\x73\x61\x67\x65","\x2F\x61\x70\x69\x2F\x63\x68\x61\x74\x2F\x72\x6F\x6F\x6D\x73","\x2E\x2F\x61\x70\x69\x2F\x63\x68\x61\x74\x5F\x72\x6F\x6F\x6D","\x2F\x61\x70\x69\x2F\x63\x68\x61\x74\x2F\x76\x69\x73\x69\x74\x6F\x72\x73","\x2E\x2F\x61\x70\x69\x2F\x63\x68\x61\x74\x5F\x76\x69\x73\x69\x74\x6F\x72","\x2F\x61\x70\x69\x2F\x63\x68\x61\x74\x2F\x77\x65\x62\x73\x69\x74\x65\x73","\x2E\x2F\x61\x70\x69\x2F\x63\x68\x61\x74\x5F\x77\x65\x62\x73\x69\x74\x65","\x2F\x61\x70\x69\x2F\x6D\x61\x69\x6C\x2F\x61\x63\x63\x6F\x75\x6E\x74\x73","\x2E\x2F\x61\x70\x69\x2F\x6D\x61\x69\x6C\x5F\x61\x63\x63\x6F\x75\x6E\x74","\x2F\x61\x70\x69\x2F\x6D\x61\x69\x6C\x2F\x6D\x65\x73\x73\x61\x67\x65\x73","\x2E\x2F\x61\x70\x69\x2F\x6D\x61\x69\x6C\x5F\x6D\x65\x73\x73\x61\x67\x65","\x2F\x61\x70\x69\x2F\x6D\x61\x69\x6C\x2F\x72\x6F\x6F\x6D\x73","\x2E\x2F\x61\x70\x69\x2F\x6D\x61\x69\x6C\x5F\x72\x6F\x6F\x6D","\x2F\x61\x70\x69\x2F\x6D\x61\x69\x6C\x2F\x73\x65\x72\x76\x65\x72\x73\x2F\x69\x6E","\x2E\x2F\x61\x70\x69\x2F\x6D\x61\x69\x6C\x5F\x73\x65\x72\x76\x65\x72\x5F\x69\x6E","\x2F\x61\x70\x69\x2F\x6D\x61\x69\x6C\x2F\x73\x65\x72\x76\x65\x72\x73\x2F\x6F\x75\x74","\x2E\x2F\x61\x70\x69\x2F\x6D\x61\x69\x6C\x5F\x73\x65\x72\x76\x65\x72\x5F\x6F\x75\x74","\x2F\x61\x70\x69\x2F\x6D\x61\x69\x6C\x2F\x71\x75\x65\x75\x65\x73","\x2E\x2F\x61\x70\x69\x2F\x6D\x61\x69\x6C\x5F\x71\x75\x65\x75\x65","\x2F\x61\x70\x69\x2F\x6D\x61\x69\x6C\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x71\x75\x65\x75\x65\x73","\x2E\x2F\x61\x70\x69\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x6D\x61\x69\x6C\x5F\x71\x75\x65\x75\x65","\x2F\x61\x70\x69\x2F\x6D\x61\x69\x6C\x2F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x2E\x2F\x61\x70\x69\x2F\x6D\x61\x69\x6C\x5F\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x2F\x61\x70\x69\x2F\x74\x65\x61\x6D\x73","\x2E\x2F\x61\x70\x69\x2F\x74\x65\x61\x6D","\x2F\x61\x70\x69\x2F\x73\x6F\x75\x6E\x64\x73","\x2E\x2F\x61\x70\x69\x2F\x73\x6F\x75\x6E\x64","\x2F\x61\x70\x69\x2F\x75\x73\x65\x72\x73","\x2E\x2F\x61\x70\x69\x2F\x75\x73\x65\x72","\x2F\x61\x70\x69\x2F\x63\x68\x61\x74\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x72\x6F\x6F\x6D\x73","\x2E\x2F\x61\x70\x69\x2F\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x63\x68\x61\x74\x5F\x72\x6F\x6F\x6D","\x2F\x61\x70\x69\x2F\x78\x63\x68\x61\x74\x74\x79","\x2E\x2F\x61\x70\x69\x2F\x78\x63\x68\x61\x74\x74\x79","\x2F\x61\x75\x74\x68","\x2E\x2F\x61\x75\x74\x68","\x2F\x3A\x75\x72\x6C\x28\x61\x70\x69\x7C\x61\x75\x74\x68\x7C\x63\x6F\x6D\x70\x6F\x6E\x65\x6E\x74\x73\x7C\x61\x70\x70\x7C\x62\x6F\x77\x65\x72\x5F\x63\x6F\x6D\x70\x6F\x6E\x65\x6E\x74\x73\x7C\x61\x73\x73\x65\x74\x73\x29\x2F\x2A","\x72\x6F\x75\x74\x65","\x2F\x2A","\x70\x72\x6F\x64\x75\x63\x74\x69\x6F\x6E","\x72\x6F\x6F\x74","\x70\x75\x62\x6C\x69\x63","\x6A\x6F\x69\x6E","\x64\x65\x76\x65\x6C\x6F\x70\x6D\x65\x6E\x74","\x74\x65\x73\x74","\x63\x6C\x69\x65\x6E\x74","\x69\x6E\x64\x65\x78\x2E\x68\x74\x6D\x6C","\x73\x65\x6E\x64\x46\x69\x6C\x65","\x61\x6C\x6C"];_0x4e23[0];var config=require(_0x4e23[1]);var errors=require(_0x4e23[2]);var path=require(_0x4e23[3]);var moment=require(_0x4e23[4]);module[_0x4e23[5]]= function(_0xffb3x5){var _0xffb3x6=_0xffb3x5[_0x4e23[7]](_0x4e23[6]);_0xffb3x5[_0x4e23[10]](_0x4e23[8],require(_0x4e23[9]));_0xffb3x5[_0x4e23[10]](_0x4e23[11],require(_0x4e23[12]));_0xffb3x5[_0x4e23[10]](_0x4e23[13],require(_0x4e23[14]));_0xffb3x5[_0x4e23[10]](_0x4e23[15],require(_0x4e23[16]));_0xffb3x5[_0x4e23[10]](_0x4e23[17],require(_0x4e23[18]));_0xffb3x5[_0x4e23[10]](_0x4e23[19],require(_0x4e23[20]));_0xffb3x5[_0x4e23[10]](_0x4e23[21],require(_0x4e23[22]));_0xffb3x5[_0x4e23[10]](_0x4e23[23],require(_0x4e23[24]));_0xffb3x5[_0x4e23[10]](_0x4e23[25],require(_0x4e23[26]));_0xffb3x5[_0x4e23[10]](_0x4e23[27],require(_0x4e23[28]));_0xffb3x5[_0x4e23[10]](_0x4e23[29],require(_0x4e23[30]));_0xffb3x5[_0x4e23[10]](_0x4e23[31],require(_0x4e23[32]));_0xffb3x5[_0x4e23[10]](_0x4e23[33],require(_0x4e23[34]));_0xffb3x5[_0x4e23[10]](_0x4e23[35],require(_0x4e23[36]));_0xffb3x5[_0x4e23[10]](_0x4e23[37],require(_0x4e23[38]));_0xffb3x5[_0x4e23[10]](_0x4e23[39],require(_0x4e23[40]));_0xffb3x5[_0x4e23[10]](_0x4e23[41],require(_0x4e23[42]));_0xffb3x5[_0x4e23[10]](_0x4e23[43],require(_0x4e23[44]));_0xffb3x5[_0x4e23[10]](_0x4e23[45],require(_0x4e23[46]));_0xffb3x5[_0x4e23[10]](_0x4e23[47],require(_0x4e23[48]));_0xffb3x5[_0x4e23[10]](_0x4e23[49],require(_0x4e23[50]));_0xffb3x5[_0x4e23[10]](_0x4e23[51],require(_0x4e23[52]));_0xffb3x5[_0x4e23[10]](_0x4e23[53],require(_0x4e23[54]));_0xffb3x5[_0x4e23[10]](_0x4e23[55],require(_0x4e23[56]));_0xffb3x5[_0x4e23[10]](_0x4e23[57],require(_0x4e23[58]));_0xffb3x5[_0x4e23[10]](_0x4e23[59],require(_0x4e23[60]));_0xffb3x5[_0x4e23[10]](_0x4e23[61],require(_0x4e23[62]));_0xffb3x5[_0x4e23[10]](_0x4e23[63],require(_0x4e23[64]));_0xffb3x5[_0x4e23[10]](_0x4e23[65],require(_0x4e23[66]));_0xffb3x5[_0x4e23[10]](_0x4e23[67],require(_0x4e23[68]));_0xffb3x5[_0x4e23[10]](_0x4e23[69],require(_0x4e23[70]));_0xffb3x5[_0x4e23[10]](_0x4e23[71],require(_0x4e23[72]));_0xffb3x5[_0x4e23[10]](_0x4e23[73],require(_0x4e23[74]));_0xffb3x5[_0x4e23[10]](_0x4e23[75],require(_0x4e23[76]));_0xffb3x5[_0x4e23[10]](_0x4e23[77],require(_0x4e23[78]));_0xffb3x5[_0x4e23[10]](_0x4e23[79],require(_0x4e23[80]));_0xffb3x5[_0x4e23[10]](_0x4e23[81],require(_0x4e23[82]));_0xffb3x5[_0x4e23[10]](_0x4e23[83],require(_0x4e23[84]));_0xffb3x5[_0x4e23[10]](_0x4e23[85],require(_0x4e23[86]));_0xffb3x5[_0x4e23[10]](_0x4e23[87],require(_0x4e23[88]));_0xffb3x5[_0x4e23[10]](_0x4e23[89],require(_0x4e23[90]));_0xffb3x5[_0x4e23[10]](_0x4e23[91],require(_0x4e23[92]));_0xffb3x5[_0x4e23[10]](_0x4e23[93],require(_0x4e23[94]));_0xffb3x5[_0x4e23[10]](_0x4e23[95],require(_0x4e23[96]));_0xffb3x5[_0x4e23[10]](_0x4e23[97],require(_0x4e23[98]));_0xffb3x5[_0x4e23[10]](_0x4e23[99],require(_0x4e23[100]));_0xffb3x5[_0x4e23[10]](_0x4e23[101],require(_0x4e23[102]));_0xffb3x5[_0x4e23[10]](_0x4e23[103],require(_0x4e23[104]));_0xffb3x5[_0x4e23[10]](_0x4e23[105],require(_0x4e23[106]));_0xffb3x5[_0x4e23[10]](_0x4e23[107],require(_0x4e23[108]));_0xffb3x5[_0x4e23[10]](_0x4e23[109],require(_0x4e23[110]));_0xffb3x5[_0x4e23[10]](_0x4e23[111],require(_0x4e23[112]));_0xffb3x5[_0x4e23[10]](_0x4e23[113],require(_0x4e23[114]));_0xffb3x5[_0x4e23[10]](_0x4e23[115],require(_0x4e23[116]));_0xffb3x5[_0x4e23[10]](_0x4e23[117],require(_0x4e23[118]));_0xffb3x5[_0x4e23[10]](_0x4e23[119],require(_0x4e23[120]));_0xffb3x5[_0x4e23[10]](_0x4e23[121],require(_0x4e23[122]));_0xffb3x5[_0x4e23[10]](_0x4e23[123],require(_0x4e23[124]));_0xffb3x5[_0x4e23[10]](_0x4e23[125],require(_0x4e23[126]));_0xffb3x5[_0x4e23[10]](_0x4e23[127],require(_0x4e23[128]));_0xffb3x5[_0x4e23[10]](_0x4e23[129],require(_0x4e23[130]));_0xffb3x5[_0x4e23[10]](_0x4e23[131],require(_0x4e23[132]));_0xffb3x5[_0x4e23[10]](_0x4e23[133],require(_0x4e23[134]));_0xffb3x5[_0x4e23[10]](_0x4e23[135],require(_0x4e23[136]));_0xffb3x5[_0x4e23[10]](_0x4e23[137],require(_0x4e23[138]));_0xffb3x5[_0x4e23[10]](_0x4e23[139],require(_0x4e23[140]));_0xffb3x5[_0x4e23[10]](_0x4e23[141],require(_0x4e23[142]));_0xffb3x5[_0x4e23[10]](_0x4e23[143],require(_0x4e23[144]));_0xffb3x5[_0x4e23[10]](_0x4e23[145],require(_0x4e23[146]));_0xffb3x5[_0x4e23[10]](_0x4e23[147],require(_0x4e23[148]));_0xffb3x5[_0x4e23[10]](_0x4e23[149],require(_0x4e23[150]));_0xffb3x5[_0x4e23[10]](_0x4e23[151],require(_0x4e23[152]));_0xffb3x5[_0x4e23[10]](_0x4e23[153],require(_0x4e23[154]));_0xffb3x5[_0x4e23[10]](_0x4e23[155],require(_0x4e23[156]));_0xffb3x5[_0x4e23[10]](_0x4e23[157],require(_0x4e23[158]));_0xffb3x5[_0x4e23[10]](_0x4e23[159],require(_0x4e23[160]));_0xffb3x5[_0x4e23[10]](_0x4e23[161],require(_0x4e23[162]));_0xffb3x5[_0x4e23[10]](_0x4e23[163],require(_0x4e23[164]));_0xffb3x5[_0x4e23[10]](_0x4e23[165],require(_0x4e23[166]));_0xffb3x5[_0x4e23[10]](_0x4e23[167],require(_0x4e23[168]));_0xffb3x5[_0x4e23[10]](_0x4e23[169],require(_0x4e23[170]));_0xffb3x5[_0x4e23[10]](_0x4e23[171],require(_0x4e23[172]));_0xffb3x5[_0x4e23[10]](_0x4e23[173],require(_0x4e23[174]));_0xffb3x5[_0x4e23[10]](_0x4e23[175],require(_0x4e23[176]));_0xffb3x5[_0x4e23[10]](_0x4e23[177],require(_0x4e23[178]));_0xffb3x5[_0x4e23[10]](_0x4e23[179],require(_0x4e23[180]));_0xffb3x5[_0x4e23[10]](_0x4e23[181],require(_0x4e23[182]));_0xffb3x5[_0x4e23[10]](_0x4e23[183],require(_0x4e23[184]));_0xffb3x5[_0x4e23[10]](_0x4e23[185],require(_0x4e23[186]));_0xffb3x5[_0x4e23[10]](_0x4e23[187],require(_0x4e23[188]));_0xffb3x5[_0x4e23[10]](_0x4e23[189],require(_0x4e23[190]));_0xffb3x5[_0x4e23[10]](_0x4e23[191],require(_0x4e23[192]));_0xffb3x5[_0x4e23[10]](_0x4e23[193],require(_0x4e23[194]));_0xffb3x5[_0x4e23[10]](_0x4e23[195],require(_0x4e23[196]));_0xffb3x5[_0x4e23[10]](_0x4e23[197],require(_0x4e23[198]));_0xffb3x5[_0x4e23[10]](_0x4e23[199],require(_0x4e23[200]));_0xffb3x5[_0x4e23[10]](_0x4e23[201],require(_0x4e23[202]));_0xffb3x5[_0x4e23[10]](_0x4e23[203],require(_0x4e23[204]));_0xffb3x5[_0x4e23[10]](_0x4e23[205],require(_0x4e23[206]));_0xffb3x5[_0x4e23[10]](_0x4e23[207],require(_0x4e23[208]));_0xffb3x5[_0x4e23[10]](_0x4e23[209],require(_0x4e23[210]));_0xffb3x5[_0x4e23[10]](_0x4e23[211],require(_0x4e23[212]));_0xffb3x5[_0x4e23[10]](_0x4e23[213],require(_0x4e23[214]));_0xffb3x5[_0x4e23[10]](_0x4e23[215],require(_0x4e23[216]));_0xffb3x5[_0x4e23[10]](_0x4e23[217],require(_0x4e23[218]));_0xffb3x5[_0x4e23[10]](_0x4e23[219],require(_0x4e23[220]));_0xffb3x5[_0x4e23[10]](_0x4e23[221],require(_0x4e23[222]));_0xffb3x5[_0x4e23[10]](_0x4e23[223],require(_0x4e23[224]));_0xffb3x5[_0x4e23[10]](_0x4e23[225],require(_0x4e23[226]));_0xffb3x5[_0x4e23[10]](_0x4e23[227],require(_0x4e23[228]));_0xffb3x5[_0x4e23[10]](_0x4e23[229],require(_0x4e23[230]));_0xffb3x5[_0x4e23[10]](_0x4e23[231],require(_0x4e23[232]));_0xffb3x5[_0x4e23[10]](_0x4e23[233],require(_0x4e23[234]));_0xffb3x5[_0x4e23[10]](_0x4e23[235],require(_0x4e23[236]));_0xffb3x5[_0x4e23[10]](_0x4e23[237],require(_0x4e23[238]));_0xffb3x5[_0x4e23[10]](_0x4e23[239],require(_0x4e23[240]));_0xffb3x5[_0x4e23[10]](_0x4e23[241],require(_0x4e23[242]));_0xffb3x5[_0x4e23[10]](_0x4e23[223],require(_0x4e23[224]));_0xffb3x5[_0x4e23[10]](_0x4e23[243],require(_0x4e23[244]));_0xffb3x5[_0x4e23[10]](_0x4e23[245],require(_0x4e23[246]));_0xffb3x5[_0x4e23[10]](_0x4e23[247],require(_0x4e23[248]));_0xffb3x5[_0x4e23[10]](_0x4e23[249],require(_0x4e23[250]));_0xffb3x5[_0x4e23[10]](_0x4e23[251],require(_0x4e23[252]));_0xffb3x5[_0x4e23[10]](_0x4e23[253],require(_0x4e23[254]));_0xffb3x5[_0x4e23[10]](_0x4e23[255],require(_0x4e23[256]));_0xffb3x5[_0x4e23[10]](_0x4e23[257],require(_0x4e23[258]));_0xffb3x5[_0x4e23[10]](_0x4e23[259],require(_0x4e23[260]));_0xffb3x5[_0x4e23[10]](_0x4e23[261],require(_0x4e23[262]));_0xffb3x5[_0x4e23[10]](_0x4e23[263],require(_0x4e23[264]));_0xffb3x5[_0x4e23[10]](_0x4e23[265],require(_0x4e23[266]));_0xffb3x5[_0x4e23[10]](_0x4e23[267],require(_0x4e23[268]));_0xffb3x5[_0x4e23[10]](_0x4e23[269],require(_0x4e23[270]));_0xffb3x5[_0x4e23[272]](_0x4e23[271])[_0x4e23[7]](errors[404]);_0xffb3x5[_0x4e23[283]](_0x4e23[273],function(_0xffb3x7,_0xffb3x8,_0xffb3x9){var _0xffb3xa={};if(_0x4e23[274]=== _0xffb3x6){_0xffb3xa[_0x4e23[275]]= path[_0x4e23[277]](config[_0x4e23[275]],_0x4e23[276])};if(_0x4e23[278]=== _0xffb3x6|| _0x4e23[279]=== _0xffb3x6){_0xffb3xa[_0x4e23[275]]= path[_0x4e23[277]](config[_0x4e23[275]],_0x4e23[280])};_0xffb3x8[_0x4e23[282]](_0x4e23[281],_0xffb3xa)})} \ No newline at end of file diff --git a/server/services/dashboard/hooks/index.js b/server/services/dashboard/hooks/index.js index b5011ab..547d63e 100644 --- a/server/services/dashboard/hooks/index.js +++ b/server/services/dashboard/hooks/index.js @@ -1,12 +1 @@ -'use strict'; - -const User = require('../../../models').User; -const VoiceQueue = require('../../../models').VoiceQueue; - -const _ = require('lodash'); - -module.exports = function(n, cpAmi) { - console.log('services/dashboard/hooks'); - - require('./voice')(n, cpAmi); -}; +var _0x210f=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x55\x73\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65","\x6C\x6F\x64\x61\x73\x68","\x65\x78\x70\x6F\x72\x74\x73","\x73\x65\x72\x76\x69\x63\x65\x73\x2F\x64\x61\x73\x68\x62\x6F\x61\x72\x64\x2F\x68\x6F\x6F\x6B\x73","\x6C\x6F\x67","\x2E\x2F\x76\x6F\x69\x63\x65"];_0x210f[0];const User=require(_0x210f[2])[_0x210f[1]];const VoiceQueue=require(_0x210f[2])[_0x210f[3]];const _=require(_0x210f[4]);module[_0x210f[5]]= function(_0x8ee8x4,_0x8ee8x5){console[_0x210f[7]](_0x210f[6]);require(_0x210f[8])(_0x8ee8x4,_0x8ee8x5)} \ No newline at end of file diff --git a/server/services/dashboard/hooks/voice.js b/server/services/dashboard/hooks/voice.js index 851df1c..084afa7 100644 --- a/server/services/dashboard/hooks/voice.js +++ b/server/services/dashboard/hooks/voice.js @@ -1,99 +1 @@ -'use strict'; - -const UserHasVoiceQueue = require('../../../models').UserHasVoiceQueue; - -const ReportAgent = require('../../../models').ReportAgent; -const ReportQueue = require('../../../models').ReportQueue; -const ReportCall = require('../../../models').ReportCall; -const VoiceQueue = require('../../../models').VoiceQueue; -const sequelize = require('../../../models').sequelize; - -const _ = require('lodash'); - -function onSend(process, type, doc) { - doc.type = type; - process.send(doc); -} - -module.exports = function(n, cpAmi) { - - cpAmi.on('message', function(doc) { - switch (doc.evt) { - case 'ReportAgent.afterUpdate': - if (doc.changed.holdtime) { - onSend(n, 'holdtime', doc); // OK - } - - if (doc.changed.talktime) { - onSend(n, 'talktime', doc); - } - break; - - case 'ReportQueue.afterCreate': // OK - onSend(n, 'waiting:up', doc); - break; - - case 'ReportQueue.afterUpdate': // OK - if (doc.changed.queuecallerexit) { - onSend(n, 'unmanaged:up', doc) - } - - if (doc.changed.queuecallerleaveAt) { - onSend(n, 'waiting:down', doc) - - if (!doc.queuecallercomplete && !doc.queuecallerabandon && !doc.queuecallerexit && doc.queuecallerleaveAt) { - if (!doc.changed.queuecallerabandon) { - onSend(n, 'active:up', doc); - } - } - } - - if (doc.changed.queuecallercomplete && doc.queuecallercomplete) { - onSend(n, 'active:down', doc); - onSend(n, 'complete:up', doc); - } - - if (doc.changed.queuecallerabandon && doc.queuecallerabandon) { - onSend(n, 'abandon:up', doc); - } - break; - - case 'ReportCall.afterCreate': - if (doc.type === 'outbound') { - onSend(n, 'outbound:up', doc); - } - break; - - case 'ReportCall.afterCreate': - if (doc.type === 'outbound') { - onSend(n, 'outbound:up', doc); - } - break; - - case 'UserHasVoiceQueue.afterBulkCreate': - doc.forEach(function(elm) { - onSend(n, 'agent:join', elm); - }); - break; - - case 'UserHasVoiceQueue.afterBulkDestroy': - doc.where.queue.forEach(function(elm) { - onSend(n, 'agent:leave', { - dataValues: { - UserId: doc.where.UserId, - queue: elm - } - }); - }); - break; - - case 'UserHasVoiceQueue.afterUpdate': - if (doc.changed.lastcall) { - onSend(n, 'lastcall', doc); - } - break; - - default: - } - }); -}; +var _0xf254=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x55\x73\x65\x72\x48\x61\x73\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x52\x65\x70\x6F\x72\x74\x41\x67\x65\x6E\x74","\x52\x65\x70\x6F\x72\x74\x51\x75\x65\x75\x65","\x52\x65\x70\x6F\x72\x74\x43\x61\x6C\x6C","\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x6C\x6F\x64\x61\x73\x68","\x74\x79\x70\x65","\x73\x65\x6E\x64","\x65\x78\x70\x6F\x72\x74\x73","\x6D\x65\x73\x73\x61\x67\x65","\x68\x6F\x6C\x64\x74\x69\x6D\x65","\x63\x68\x61\x6E\x67\x65\x64","\x74\x61\x6C\x6B\x74\x69\x6D\x65","\x52\x65\x70\x6F\x72\x74\x41\x67\x65\x6E\x74\x2E\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x77\x61\x69\x74\x69\x6E\x67\x3A\x75\x70","\x52\x65\x70\x6F\x72\x74\x51\x75\x65\x75\x65\x2E\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x65\x78\x69\x74","\x75\x6E\x6D\x61\x6E\x61\x67\x65\x64\x3A\x75\x70","\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6C\x65\x61\x76\x65\x41\x74","\x77\x61\x69\x74\x69\x6E\x67\x3A\x64\x6F\x77\x6E","\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x63\x6F\x6D\x70\x6C\x65\x74\x65","\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x61\x62\x61\x6E\x64\x6F\x6E","\x61\x63\x74\x69\x76\x65\x3A\x75\x70","\x61\x63\x74\x69\x76\x65\x3A\x64\x6F\x77\x6E","\x63\x6F\x6D\x70\x6C\x65\x74\x65\x3A\x75\x70","\x61\x62\x61\x6E\x64\x6F\x6E\x3A\x75\x70","\x52\x65\x70\x6F\x72\x74\x51\x75\x65\x75\x65\x2E\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x6F\x75\x74\x62\x6F\x75\x6E\x64","\x6F\x75\x74\x62\x6F\x75\x6E\x64\x3A\x75\x70","\x52\x65\x70\x6F\x72\x74\x43\x61\x6C\x6C\x2E\x61\x66\x74\x65\x72\x43\x72\x65\x61\x74\x65","\x61\x67\x65\x6E\x74\x3A\x6A\x6F\x69\x6E","\x66\x6F\x72\x45\x61\x63\x68","\x55\x73\x65\x72\x48\x61\x73\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65\x2E\x61\x66\x74\x65\x72\x42\x75\x6C\x6B\x43\x72\x65\x61\x74\x65","\x61\x67\x65\x6E\x74\x3A\x6C\x65\x61\x76\x65","\x55\x73\x65\x72\x49\x64","\x77\x68\x65\x72\x65","\x71\x75\x65\x75\x65","\x55\x73\x65\x72\x48\x61\x73\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65\x2E\x61\x66\x74\x65\x72\x42\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x6C\x61\x73\x74\x63\x61\x6C\x6C","\x55\x73\x65\x72\x48\x61\x73\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65\x2E\x61\x66\x74\x65\x72\x55\x70\x64\x61\x74\x65","\x65\x76\x74","\x6F\x6E"];_0xf254[0];const UserHasVoiceQueue=require(_0xf254[2])[_0xf254[1]];const ReportAgent=require(_0xf254[2])[_0xf254[3]];const ReportQueue=require(_0xf254[2])[_0xf254[4]];const ReportCall=require(_0xf254[2])[_0xf254[5]];const VoiceQueue=require(_0xf254[2])[_0xf254[6]];const sequelize=require(_0xf254[2])[_0xf254[7]];const _=require(_0xf254[8]);function onSend(_0x8a3bx9,_0x8a3bxa,_0x8a3bxb){_0x8a3bxb[_0xf254[9]]= _0x8a3bxa;_0x8a3bx9[_0xf254[10]](_0x8a3bxb)}module[_0xf254[11]]= function(_0x8a3bxc,_0x8a3bxd){_0x8a3bxd[_0xf254[44]](_0xf254[12],function(_0x8a3bxb){switch(_0x8a3bxb[_0xf254[43]]){case _0xf254[16]:if(_0x8a3bxb[_0xf254[14]][_0xf254[13]]){onSend(_0x8a3bxc,_0xf254[13],_0x8a3bxb)};if(_0x8a3bxb[_0xf254[14]][_0xf254[15]]){onSend(_0x8a3bxc,_0xf254[15],_0x8a3bxb)};break;case _0xf254[18]:onSend(_0x8a3bxc,_0xf254[17],_0x8a3bxb);break;case _0xf254[29]:if(_0x8a3bxb[_0xf254[14]][_0xf254[19]]){onSend(_0x8a3bxc,_0xf254[20],_0x8a3bxb)};if(_0x8a3bxb[_0xf254[14]][_0xf254[21]]){onSend(_0x8a3bxc,_0xf254[22],_0x8a3bxb);if(!_0x8a3bxb[_0xf254[23]]&& !_0x8a3bxb[_0xf254[24]]&& !_0x8a3bxb[_0xf254[19]]&& _0x8a3bxb[_0xf254[21]]){if(!_0x8a3bxb[_0xf254[14]][_0xf254[24]]){onSend(_0x8a3bxc,_0xf254[25],_0x8a3bxb)}}};if(_0x8a3bxb[_0xf254[14]][_0xf254[23]]&& _0x8a3bxb[_0xf254[23]]){onSend(_0x8a3bxc,_0xf254[26],_0x8a3bxb);onSend(_0x8a3bxc,_0xf254[27],_0x8a3bxb)};if(_0x8a3bxb[_0xf254[14]][_0xf254[24]]&& _0x8a3bxb[_0xf254[24]]){onSend(_0x8a3bxc,_0xf254[28],_0x8a3bxb)};break;case _0xf254[32]:if(_0x8a3bxb[_0xf254[9]]=== _0xf254[30]){onSend(_0x8a3bxc,_0xf254[31],_0x8a3bxb)};break;case _0xf254[32]:if(_0x8a3bxb[_0xf254[9]]=== _0xf254[30]){onSend(_0x8a3bxc,_0xf254[31],_0x8a3bxb)};break;case _0xf254[35]:_0x8a3bxb[_0xf254[34]](function(_0x8a3bxe){onSend(_0x8a3bxc,_0xf254[33],_0x8a3bxe)});break;case _0xf254[40]:_0x8a3bxb[_0xf254[38]][_0xf254[39]][_0xf254[34]](function(_0x8a3bxe){onSend(_0x8a3bxc,_0xf254[36],{dataValues:{UserId:_0x8a3bxb[_0xf254[38]][_0xf254[37]],queue:_0x8a3bxe}})});break;case _0xf254[42]:if(_0x8a3bxb[_0xf254[14]][_0xf254[41]]){onSend(_0x8a3bxc,_0xf254[41],_0x8a3bxb)};break;default:}})} \ No newline at end of file diff --git a/server/services/dashboard/index.js b/server/services/dashboard/index.js index 9807e6a..fa00264 100644 --- a/server/services/dashboard/index.js +++ b/server/services/dashboard/index.js @@ -1,19 +1 @@ -'use strict'; - -const util = require('util'); -const cp = require('child_process'); - -module.exports = function(cpAmi) { - const n = cp - .fork(__dirname + '/workers') - .on('message', function(data) { - console.log('child process message', data); - }) - .on('error', function(err) { - console.error(err); - }); - - require('./hooks')(n, cpAmi); - - return n; -}; +var _0x9156=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x75\x74\x69\x6C","\x63\x68\x69\x6C\x64\x5F\x70\x72\x6F\x63\x65\x73\x73","\x65\x78\x70\x6F\x72\x74\x73","\x65\x72\x72\x6F\x72","\x6F\x6E","\x6D\x65\x73\x73\x61\x67\x65","\x63\x68\x69\x6C\x64\x20\x70\x72\x6F\x63\x65\x73\x73\x20\x6D\x65\x73\x73\x61\x67\x65","\x6C\x6F\x67","\x2F\x77\x6F\x72\x6B\x65\x72\x73","\x66\x6F\x72\x6B","\x2E\x2F\x68\x6F\x6F\x6B\x73"];_0x9156[0];const util=require(_0x9156[1]);const cp=require(_0x9156[2]);module[_0x9156[3]]= function(_0x7492x3){const _0x7492x4=cp[_0x9156[10]](__dirname+ _0x9156[9])[_0x9156[5]](_0x9156[6],function(_0x7492x6){console[_0x9156[8]](_0x9156[7],_0x7492x6)})[_0x9156[5]](_0x9156[4],function(_0x7492x5){console[_0x9156[4]](_0x7492x5)});require(_0x9156[11])(_0x7492x4,_0x7492x3);return _0x7492x4} \ No newline at end of file diff --git a/server/services/dashboard/workers/index.js b/server/services/dashboard/workers/index.js index 9048c74..8f4073a 100644 --- a/server/services/dashboard/workers/index.js +++ b/server/services/dashboard/workers/index.js @@ -1,188 +1 @@ -'use strict'; - -/*jshint multistr:true */ - -const _ = require('lodash'); - -const config = require('../../../config/environment'); -const sequelize = require('../../../models').sequelize; - -const VoiceQueue = require('../../../models').VoiceQueue; -const ReportQueue = require('../../../models').ReportQueue; - -// SOCKET IO CHILD CONNETION -var io = require('socket.io-emitter')({ - host: config.ip, - port: 6379 -}); - -// QUEUE SET -var queues = {}; -var outbound = {}; - -VoiceQueue - .findAll({ - attributes: ['name'], - raw: true - }) - .then(function(data) { - queues = _.keyBy(data, 'name'); - - return sequelize - .query('SELECT queue, count(*) as waiting \ - FROM report_queue \ - WHERE queuecallerleaveAt IS NULL \ - GROUP BY queue;', { - type: sequelize.QueryTypes.SELECT - }); - }) - .then(function(data) { - data.forEach(function(elm) { - if (queues[elm.queue]) { - queues[elm.queue].waiting = elm.waiting; - } - }); - - return sequelize - .query( - 'SELECT queue, count(*) as active \ - FROM report_queue \ - WHERE queuecallerexit = 0 \ - AND queuecallerabandon = 0 \ - AND queuecallercomplete = 0 \ - AND queuecallerleaveAt IS NOT NULL \ - GROUP BY queue;', { - type: sequelize.QueryTypes.SELECT - }); - }) - .then(function(data) { - data.forEach(function(elm) { - if (queues[elm.queue]) { - queues[elm.queue].active = elm.active; - } - }); - - return sequelize - .query( - 'SELECT queue, count(*) as abandon \ - FROM report_queue \ - WHERE queuecallerabandon = 1 \ - GROUP BY queue;', { - type: sequelize.QueryTypes.SELECT - }); - }) - .then(function(data) { - data.forEach(function(elm) { - if (queues[elm.queue]) { - queues[elm.queue].abandon = elm.abandon; - } - }); - - return sequelize - .query( - 'SELECT queue, count(*) as complete \ - FROM report_queue \ - WHERE queuecallercomplete = 1 \ - GROUP BY queue;', { - type: sequelize.QueryTypes.SELECT - }); - }) - .then(function(data) { - data.forEach(function(elm) { - if (queues[elm.queue]) { - queues[elm.queue].complete = elm.complete; - } - }); - - return sequelize - .query('SELECT queue, count(*) as calls, SUM(holdtime) as holdtime \ - FROM report_agent \ - WHERE agentcomplete = 1 \ - GROUP BY queue;', { - type: sequelize.QueryTypes.SELECT - }); - }) - .then(function(data) { - data.forEach(function(elm) { - if (queues[elm.queue]) { - queues[elm.queue].holdtime = elm.holdtime; - } - }); - - return sequelize - .query('SELECT queue, count(*) as calls, SUM(talktime) as talktime \ - FROM report_agent \ - WHERE agentcomplete = 1 \ - GROUP BY queue;', { - type: sequelize.QueryTypes.SELECT - }); - }) - .then(function(data) { - data.forEach(function(elm) { - if (queues[elm.queue]) { - queues[elm.queue].talktime = elm.talktime; - } - }); - - return sequelize - .query('SELECT queue, count(*) as unmanaged \ - FROM report_queue \ - WHERE queuecallerexit = 1 \ - GROUP BY queue;', { - type: sequelize.QueryTypes.SELECT - }); - }) - .then(function(data) { - data.forEach(function(elm) { - if (queues[elm.queue]) { - queues[elm.queue].unmanaged = elm.unmanaged; - } - }); - - return sequelize - .query('SELECT count(*) as answered \ - FROM report_call \ - WHERE disposition = \'ANSWERED\' \ - AND type = \'outbound\';', { - type: sequelize.QueryTypes.SELECT - }); - }) - .then(function(data) { - outbound.answered = data[0].answered; - - return sequelize - .query('SELECT count(*) as manualOutbound \ - FROM report_call \ - WHERE type = \'outbound\';', { - type: sequelize.QueryTypes.SELECT - }); - }) - .then(function(data) { - outbound.manualOutbound = data[0].manualOutbound; - - return sequelize - .query('SELECT SUM(duration) as globalDuration \ - FROM report_call \ - WHERE type = \'outbound\';', { - type: sequelize.QueryTypes.SELECT - }); - }) - .then(function(data) { - outbound.globalDuration = data[0].globalDuration || 0; - - return sequelize - .query('SELECT AVG(duration) as avgDuration \ - FROM report_call \ - WHERE type=\'outbound\';', { - type: sequelize.QueryTypes.SELECT - }); - }) - .then(function(data) { - outbound.avgDuration = data[0].avgDuration || 0; - outbound.answerRate = outbound.avgDuration ? ((outbound.answered / outbound.globalDuration) * 100) : 0; - - require('./voice')(queues, outbound, io); - }) - .catch(function(err) { - console.error(err); - }); +var _0x9045=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x2E\x2E\x2F\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65","\x52\x65\x70\x6F\x72\x74\x51\x75\x65\x75\x65","\x69\x70","\x73\x6F\x63\x6B\x65\x74\x2E\x69\x6F\x2D\x65\x6D\x69\x74\x74\x65\x72","\x65\x72\x72\x6F\x72","\x63\x61\x74\x63\x68","\x61\x76\x67\x44\x75\x72\x61\x74\x69\x6F\x6E","\x61\x6E\x73\x77\x65\x72\x52\x61\x74\x65","\x61\x6E\x73\x77\x65\x72\x65\x64","\x67\x6C\x6F\x62\x61\x6C\x44\x75\x72\x61\x74\x69\x6F\x6E","\x2E\x2F\x76\x6F\x69\x63\x65","\x74\x68\x65\x6E","\x53\x45\x4C\x45\x43\x54\x20\x41\x56\x47\x28\x64\x75\x72\x61\x74\x69\x6F\x6E\x29\x20\x61\x73\x20\x61\x76\x67\x44\x75\x72\x61\x74\x69\x6F\x6E\x20\x0A\x20\x20\x20\x20\x46\x52\x4F\x4D\x20\x72\x65\x70\x6F\x72\x74\x5F\x63\x61\x6C\x6C\x20\x0A\x20\x20\x20\x20\x57\x48\x45\x52\x45\x20\x74\x79\x70\x65\x3D\x27\x6F\x75\x74\x62\x6F\x75\x6E\x64\x27\x3B","\x53\x45\x4C\x45\x43\x54","\x51\x75\x65\x72\x79\x54\x79\x70\x65\x73","\x71\x75\x65\x72\x79","\x6D\x61\x6E\x75\x61\x6C\x4F\x75\x74\x62\x6F\x75\x6E\x64","\x53\x45\x4C\x45\x43\x54\x20\x53\x55\x4D\x28\x64\x75\x72\x61\x74\x69\x6F\x6E\x29\x20\x61\x73\x20\x67\x6C\x6F\x62\x61\x6C\x44\x75\x72\x61\x74\x69\x6F\x6E\x20\x0A\x20\x20\x20\x20\x20\x20\x46\x52\x4F\x4D\x20\x72\x65\x70\x6F\x72\x74\x5F\x63\x61\x6C\x6C\x20\x0A\x20\x20\x20\x20\x20\x20\x57\x48\x45\x52\x45\x20\x74\x79\x70\x65\x20\x3D\x20\x27\x6F\x75\x74\x62\x6F\x75\x6E\x64\x27\x3B","\x53\x45\x4C\x45\x43\x54\x20\x63\x6F\x75\x6E\x74\x28\x2A\x29\x20\x61\x73\x20\x6D\x61\x6E\x75\x61\x6C\x4F\x75\x74\x62\x6F\x75\x6E\x64\x20\x0A\x20\x20\x20\x20\x20\x20\x46\x52\x4F\x4D\x20\x72\x65\x70\x6F\x72\x74\x5F\x63\x61\x6C\x6C\x20\x0A\x20\x20\x20\x20\x20\x20\x57\x48\x45\x52\x45\x20\x74\x79\x70\x65\x20\x3D\x20\x27\x6F\x75\x74\x62\x6F\x75\x6E\x64\x27\x3B","\x71\x75\x65\x75\x65","\x75\x6E\x6D\x61\x6E\x61\x67\x65\x64","\x66\x6F\x72\x45\x61\x63\x68","\x53\x45\x4C\x45\x43\x54\x20\x63\x6F\x75\x6E\x74\x28\x2A\x29\x20\x61\x73\x20\x61\x6E\x73\x77\x65\x72\x65\x64\x20\x0A\x20\x20\x20\x20\x20\x20\x46\x52\x4F\x4D\x20\x72\x65\x70\x6F\x72\x74\x5F\x63\x61\x6C\x6C\x20\x0A\x20\x20\x20\x20\x20\x20\x57\x48\x45\x52\x45\x20\x64\x69\x73\x70\x6F\x73\x69\x74\x69\x6F\x6E\x20\x3D\x20\x27\x41\x4E\x53\x57\x45\x52\x45\x44\x27\x20\x0A\x20\x20\x20\x20\x20\x20\x41\x4E\x44\x20\x74\x79\x70\x65\x20\x3D\x20\x27\x6F\x75\x74\x62\x6F\x75\x6E\x64\x27\x3B","\x74\x61\x6C\x6B\x74\x69\x6D\x65","\x53\x45\x4C\x45\x43\x54\x20\x71\x75\x65\x75\x65\x2C\x20\x63\x6F\x75\x6E\x74\x28\x2A\x29\x20\x61\x73\x20\x75\x6E\x6D\x61\x6E\x61\x67\x65\x64\x20\x0A\x20\x20\x20\x20\x20\x20\x46\x52\x4F\x4D\x20\x72\x65\x70\x6F\x72\x74\x5F\x71\x75\x65\x75\x65\x20\x0A\x20\x20\x20\x20\x20\x20\x57\x48\x45\x52\x45\x20\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x65\x78\x69\x74\x20\x3D\x20\x31\x20\x0A\x20\x20\x20\x20\x20\x20\x47\x52\x4F\x55\x50\x20\x42\x59\x20\x71\x75\x65\x75\x65\x3B","\x68\x6F\x6C\x64\x74\x69\x6D\x65","\x53\x45\x4C\x45\x43\x54\x20\x71\x75\x65\x75\x65\x2C\x20\x63\x6F\x75\x6E\x74\x28\x2A\x29\x20\x61\x73\x20\x63\x61\x6C\x6C\x73\x2C\x20\x53\x55\x4D\x28\x74\x61\x6C\x6B\x74\x69\x6D\x65\x29\x20\x61\x73\x20\x74\x61\x6C\x6B\x74\x69\x6D\x65\x20\x0A\x20\x20\x20\x20\x20\x20\x46\x52\x4F\x4D\x20\x72\x65\x70\x6F\x72\x74\x5F\x61\x67\x65\x6E\x74\x20\x0A\x20\x20\x20\x20\x20\x20\x57\x48\x45\x52\x45\x20\x61\x67\x65\x6E\x74\x63\x6F\x6D\x70\x6C\x65\x74\x65\x20\x3D\x20\x31\x20\x0A\x20\x20\x20\x20\x20\x20\x47\x52\x4F\x55\x50\x20\x42\x59\x20\x71\x75\x65\x75\x65\x3B","\x63\x6F\x6D\x70\x6C\x65\x74\x65","\x53\x45\x4C\x45\x43\x54\x20\x71\x75\x65\x75\x65\x2C\x20\x63\x6F\x75\x6E\x74\x28\x2A\x29\x20\x61\x73\x20\x63\x61\x6C\x6C\x73\x2C\x20\x53\x55\x4D\x28\x68\x6F\x6C\x64\x74\x69\x6D\x65\x29\x20\x61\x73\x20\x68\x6F\x6C\x64\x74\x69\x6D\x65\x20\x0A\x20\x20\x20\x20\x20\x20\x46\x52\x4F\x4D\x20\x72\x65\x70\x6F\x72\x74\x5F\x61\x67\x65\x6E\x74\x20\x0A\x20\x20\x20\x20\x20\x20\x57\x48\x45\x52\x45\x20\x61\x67\x65\x6E\x74\x63\x6F\x6D\x70\x6C\x65\x74\x65\x20\x3D\x20\x31\x20\x0A\x20\x20\x20\x20\x20\x20\x47\x52\x4F\x55\x50\x20\x42\x59\x20\x71\x75\x65\x75\x65\x3B","\x61\x62\x61\x6E\x64\x6F\x6E","\x53\x45\x4C\x45\x43\x54\x20\x71\x75\x65\x75\x65\x2C\x20\x63\x6F\x75\x6E\x74\x28\x2A\x29\x20\x61\x73\x20\x63\x6F\x6D\x70\x6C\x65\x74\x65\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x46\x52\x4F\x4D\x20\x72\x65\x70\x6F\x72\x74\x5F\x71\x75\x65\x75\x65\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x57\x48\x45\x52\x45\x20\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x63\x6F\x6D\x70\x6C\x65\x74\x65\x20\x3D\x20\x31\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x47\x52\x4F\x55\x50\x20\x42\x59\x20\x71\x75\x65\x75\x65\x3B","\x61\x63\x74\x69\x76\x65","\x53\x45\x4C\x45\x43\x54\x20\x71\x75\x65\x75\x65\x2C\x20\x63\x6F\x75\x6E\x74\x28\x2A\x29\x20\x61\x73\x20\x61\x62\x61\x6E\x64\x6F\x6E\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x46\x52\x4F\x4D\x20\x72\x65\x70\x6F\x72\x74\x5F\x71\x75\x65\x75\x65\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x57\x48\x45\x52\x45\x20\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x61\x62\x61\x6E\x64\x6F\x6E\x20\x3D\x20\x31\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x47\x52\x4F\x55\x50\x20\x42\x59\x20\x71\x75\x65\x75\x65\x3B","\x77\x61\x69\x74\x69\x6E\x67","\x53\x45\x4C\x45\x43\x54\x20\x71\x75\x65\x75\x65\x2C\x20\x63\x6F\x75\x6E\x74\x28\x2A\x29\x20\x61\x73\x20\x61\x63\x74\x69\x76\x65\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x46\x52\x4F\x4D\x20\x72\x65\x70\x6F\x72\x74\x5F\x71\x75\x65\x75\x65\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x57\x48\x45\x52\x45\x20\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x65\x78\x69\x74\x20\x3D\x20\x30\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x41\x4E\x44\x20\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x61\x62\x61\x6E\x64\x6F\x6E\x20\x3D\x20\x30\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x41\x4E\x44\x20\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x63\x6F\x6D\x70\x6C\x65\x74\x65\x20\x3D\x20\x30\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x41\x4E\x44\x20\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6C\x65\x61\x76\x65\x41\x74\x20\x49\x53\x20\x4E\x4F\x54\x20\x4E\x55\x4C\x4C\x20\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x47\x52\x4F\x55\x50\x20\x42\x59\x20\x71\x75\x65\x75\x65\x3B","\x6E\x61\x6D\x65","\x6B\x65\x79\x42\x79","\x53\x45\x4C\x45\x43\x54\x20\x71\x75\x65\x75\x65\x2C\x20\x63\x6F\x75\x6E\x74\x28\x2A\x29\x20\x61\x73\x20\x77\x61\x69\x74\x69\x6E\x67\x20\x0A\x20\x20\x20\x20\x20\x20\x46\x52\x4F\x4D\x20\x72\x65\x70\x6F\x72\x74\x5F\x71\x75\x65\x75\x65\x20\x0A\x20\x20\x20\x20\x20\x20\x57\x48\x45\x52\x45\x20\x71\x75\x65\x75\x65\x63\x61\x6C\x6C\x65\x72\x6C\x65\x61\x76\x65\x41\x74\x20\x49\x53\x20\x4E\x55\x4C\x4C\x20\x0A\x20\x20\x20\x20\x20\x20\x47\x52\x4F\x55\x50\x20\x42\x59\x20\x71\x75\x65\x75\x65\x3B","\x66\x69\x6E\x64\x41\x6C\x6C"];_0x9045[0];const _=require(_0x9045[1]);const config=require(_0x9045[2]);const sequelize=require(_0x9045[4])[_0x9045[3]];const VoiceQueue=require(_0x9045[4])[_0x9045[5]];const ReportQueue=require(_0x9045[4])[_0x9045[6]];var io=require(_0x9045[8])({host:config[_0x9045[7]],port:6379});var queues={};var outbound={};VoiceQueue[_0x9045[43]]({attributes:[_0x9045[40]],raw:true})[_0x9045[16]](function(_0xb5e2xa){queues= _[_0x9045[41]](_0xb5e2xa,_0x9045[40]);return sequelize[_0x9045[20]](_0x9045[42],{type:sequelize[_0x9045[19]][_0x9045[18]]})})[_0x9045[16]](function(_0xb5e2xa){_0xb5e2xa[_0x9045[26]](function(_0xb5e2xb){if(queues[_0xb5e2xb[_0x9045[24]]]){queues[_0xb5e2xb[_0x9045[24]]][_0x9045[38]]= _0xb5e2xb[_0x9045[38]]}});return sequelize[_0x9045[20]](_0x9045[39],{type:sequelize[_0x9045[19]][_0x9045[18]]})})[_0x9045[16]](function(_0xb5e2xa){_0xb5e2xa[_0x9045[26]](function(_0xb5e2xb){if(queues[_0xb5e2xb[_0x9045[24]]]){queues[_0xb5e2xb[_0x9045[24]]][_0x9045[36]]= _0xb5e2xb[_0x9045[36]]}});return sequelize[_0x9045[20]](_0x9045[37],{type:sequelize[_0x9045[19]][_0x9045[18]]})})[_0x9045[16]](function(_0xb5e2xa){_0xb5e2xa[_0x9045[26]](function(_0xb5e2xb){if(queues[_0xb5e2xb[_0x9045[24]]]){queues[_0xb5e2xb[_0x9045[24]]][_0x9045[34]]= _0xb5e2xb[_0x9045[34]]}});return sequelize[_0x9045[20]](_0x9045[35],{type:sequelize[_0x9045[19]][_0x9045[18]]})})[_0x9045[16]](function(_0xb5e2xa){_0xb5e2xa[_0x9045[26]](function(_0xb5e2xb){if(queues[_0xb5e2xb[_0x9045[24]]]){queues[_0xb5e2xb[_0x9045[24]]][_0x9045[32]]= _0xb5e2xb[_0x9045[32]]}});return sequelize[_0x9045[20]](_0x9045[33],{type:sequelize[_0x9045[19]][_0x9045[18]]})})[_0x9045[16]](function(_0xb5e2xa){_0xb5e2xa[_0x9045[26]](function(_0xb5e2xb){if(queues[_0xb5e2xb[_0x9045[24]]]){queues[_0xb5e2xb[_0x9045[24]]][_0x9045[30]]= _0xb5e2xb[_0x9045[30]]}});return sequelize[_0x9045[20]](_0x9045[31],{type:sequelize[_0x9045[19]][_0x9045[18]]})})[_0x9045[16]](function(_0xb5e2xa){_0xb5e2xa[_0x9045[26]](function(_0xb5e2xb){if(queues[_0xb5e2xb[_0x9045[24]]]){queues[_0xb5e2xb[_0x9045[24]]][_0x9045[28]]= _0xb5e2xb[_0x9045[28]]}});return sequelize[_0x9045[20]](_0x9045[29],{type:sequelize[_0x9045[19]][_0x9045[18]]})})[_0x9045[16]](function(_0xb5e2xa){_0xb5e2xa[_0x9045[26]](function(_0xb5e2xb){if(queues[_0xb5e2xb[_0x9045[24]]]){queues[_0xb5e2xb[_0x9045[24]]][_0x9045[25]]= _0xb5e2xb[_0x9045[25]]}});return sequelize[_0x9045[20]](_0x9045[27],{type:sequelize[_0x9045[19]][_0x9045[18]]})})[_0x9045[16]](function(_0xb5e2xa){outbound[_0x9045[13]]= _0xb5e2xa[0][_0x9045[13]];return sequelize[_0x9045[20]](_0x9045[23],{type:sequelize[_0x9045[19]][_0x9045[18]]})})[_0x9045[16]](function(_0xb5e2xa){outbound[_0x9045[21]]= _0xb5e2xa[0][_0x9045[21]];return sequelize[_0x9045[20]](_0x9045[22],{type:sequelize[_0x9045[19]][_0x9045[18]]})})[_0x9045[16]](function(_0xb5e2xa){outbound[_0x9045[14]]= _0xb5e2xa[0][_0x9045[14]]|| 0;return sequelize[_0x9045[20]](_0x9045[17],{type:sequelize[_0x9045[19]][_0x9045[18]]})})[_0x9045[16]](function(_0xb5e2xa){outbound[_0x9045[11]]= _0xb5e2xa[0][_0x9045[11]]|| 0;outbound[_0x9045[12]]= outbound[_0x9045[11]]?((outbound[_0x9045[13]]/ outbound[_0x9045[14]])* 100):0;require(_0x9045[15])(queues,outbound,io)})[_0x9045[10]](function(_0xb5e2x9){console[_0x9045[9]](_0xb5e2x9)}) \ No newline at end of file diff --git a/server/services/dashboard/workers/voice.js b/server/services/dashboard/workers/voice.js index 5f8efaf..c3da004 100644 --- a/server/services/dashboard/workers/voice.js +++ b/server/services/dashboard/workers/voice.js @@ -1,226 +1 @@ -'use strict'; - -/*jshint multistr:true */ - -const _ = require('lodash'); -const util = require('util'); - -const config = require('../../../config/environment'); -const User = require('../../../models').User; -const sequelize = require('../../../models').sequelize; - -const VoiceQueue = require('../../../models').VoiceQueue; -const ReportQueue = require('../../../models').ReportQueue; - -module.exports = function(queues, outbound, io) { - function onVoiceWaitingUp(data) { - if (queues[data.queue]) { - if (!queues[data.queue].waiting) { - queues[data.queue].waiting = 0; - } - } else { - queues[data.queue] = {}; - queues[data.queue].waiting = 0; - } - - queues[data.queue].waiting++; - io.to(data.queue).emit('dashboard:voice:waiting', queues[data.queue]); - } - - function onVoiceWaitingDown(data) { - if (queues[data.queue]) { - if (!queues[data.queue].waiting) { - queues[data.queue].waiting = 0; - } else { - queues[data.queue].waiting--; - } - } else { - queues[data.queue] = {}; - queues[data.queue].waiting = 0; - } - - io.to(data.queue).emit('dashboard:voice:waiting', queues[data.queue]); - } - - function onVoiceActiveUp(data) { - if (queues[data.queue]) { - if (!queues[data.queue].active) { - queues[data.queue].active = 0; - } - } else { - queues[data.queue] = {}; - queues[data.queue].active = 0; - } - - queues[data.queue].active++; - io.to(data.queue).emit('dashboard:voice:active', queues[data.queue]); - } - - function onVoiceActiveDown(data) { - if (queues[data.queue]) { - if (!queues[data.queue].active) { - queues[data.queue].active = 0; - } else { - queues[data.queue].active--; - } - } else { - queues[data.queue] = {}; - queues[data.queue].active = 0; - } - - io.to(data.queue).emit('dashboard:voice:active', queues[data.queue]); - } - - function onVoiceAbandonUp(data) { - if (queues[data.queue]) { - if (!queues[data.queue].abandon) { - queues[data.queue].abandon = 0; - } - } else { - queues[data.queue] = {}; - queues[data.queue].abandon = 0; - } - - queues[data.queue].abandon++; - io.to(data.queue).emit('dashboard:voice:abandon', queues[data.queue]); - } - - function onVoiceCompleteUp(data) { - if (queues[data.queue]) { - if (!queues[data.queue].complete) { - queues[data.queue].complete = 0; - } - } else { - queues[data.queue] = {}; - queues[data.queue].complete = 0; - } - - queues[data.queue].complete++; - io.to(data.queue).emit('dashboard:voice:complete', queues[data.queue]); - } - - function onVoiceUnmanagedUp(data) { - if (queues[data.queue]) { - if (!queues[data.queue].unmanaged) { - queues[data.queue].unmanaged = 0; - } - } else { - queues[data.queue] = {}; - queues[data.queue].unmanaged = 0; - } - - queues[data.queue].unmanaged++; - io.to(data.queue).emit('dashboard:voice:unmanaged', queues[data.queue]); - } - - function onHoldtime(data) { - if (queues[data.queue]) { - if (!queues[data.queue].holdtime) { - queues[data.queue].holdtime = 0; - } - } else { - queues[data.queue] = {}; - queues[data.queue].holdtime = 0; - } - - queues[data.queue].holdtime += Number(data.holdtime); - - io.to(data.queue).emit('dashboard:voice:holdtime', queues[data.queue]); - } - - function onTalktime(data) { - if (queues[data.queue]) { - if (!queues[data.queue].talktime) { - queues[data.queue].talktime = 0; - } - } else { - queues[data.queue] = {}; - queues[data.queue].talktime = 0; - } - - queues[data.queue].talktime += Number(data.talktime); - - io.to(data.queue).emit('dashboard:voice:talktime', queues[data.queue]); - } - - function onOutboundUp(data) { - outbound.manualOutbound++; - if (data.answertime) { - outbound.answered++; - } - outbound.globalDuration += Number(data.duration); - outbound.avgDuration = Number(outbound.globalDuration) / Number(outbound.manualOutbound); - outbound.answerRate = (outbound.answered / outbound.manualOutbound) * 100; - - io.to('users').emit('dashboard:voice:outbound', outbound); - io.to('admins').emit('dashboard:voice:outbound', outbound); - } - - function onUpdateQueue(data) { - io.to(data.membername).emit('voice:queue:update', { - queue: data.queue, - lastcall: data.lastcall, - callstaken: data.callstaken, - loggedAt: data.loggedAt - }); - } - - function onAgentJoin(data) { - io.to(util.format('agent:%s', data.UserId)).emit('voice:queue:agent:join', { - agent: data.UserId, - queue: data.queue - }); - } - - function onAgentLeave(data) { - io.to(util.format('agent:%s', data.UserId)).emit('voice:queue:agent:leave', { - agent: data.UserId, - queue: data.queue - }); - } - - process.on('message', function(data) { - switch (data.type) { - case 'waiting:up': - onVoiceWaitingUp(data); - break; - case 'waiting:down': - onVoiceWaitingDown(data); - break; - case 'active:up': - onVoiceActiveUp(data); - break; - case 'active:down': - onVoiceActiveDown(data); - break; - case 'abandon:up': - onVoiceAbandonUp(data); - break; - case 'complete:up': - onVoiceCompleteUp(data); - break; - case 'unmanaged:up': - onVoiceUnmanagedUp(data); - break; - case 'holdtime': - onHoldtime(data); - break; - case 'talktime': - onTalktime(data); - break; - case 'outbound:up': - onOutboundUp(data); - break; - case 'lastcall': - onUpdateQueue(data); - break; - case 'agent:join': - onAgentJoin(data); - break; - case 'agent:leave': - onAgentLeave(data); - break; - default: - } - }); -}; +var _0x886d=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x75\x74\x69\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x55\x73\x65\x72","\x2E\x2E\x2F\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65","\x52\x65\x70\x6F\x72\x74\x51\x75\x65\x75\x65","\x65\x78\x70\x6F\x72\x74\x73","\x71\x75\x65\x75\x65","\x77\x61\x69\x74\x69\x6E\x67","\x64\x61\x73\x68\x62\x6F\x61\x72\x64\x3A\x76\x6F\x69\x63\x65\x3A\x77\x61\x69\x74\x69\x6E\x67","\x65\x6D\x69\x74","\x74\x6F","\x61\x63\x74\x69\x76\x65","\x64\x61\x73\x68\x62\x6F\x61\x72\x64\x3A\x76\x6F\x69\x63\x65\x3A\x61\x63\x74\x69\x76\x65","\x61\x62\x61\x6E\x64\x6F\x6E","\x64\x61\x73\x68\x62\x6F\x61\x72\x64\x3A\x76\x6F\x69\x63\x65\x3A\x61\x62\x61\x6E\x64\x6F\x6E","\x63\x6F\x6D\x70\x6C\x65\x74\x65","\x64\x61\x73\x68\x62\x6F\x61\x72\x64\x3A\x76\x6F\x69\x63\x65\x3A\x63\x6F\x6D\x70\x6C\x65\x74\x65","\x75\x6E\x6D\x61\x6E\x61\x67\x65\x64","\x64\x61\x73\x68\x62\x6F\x61\x72\x64\x3A\x76\x6F\x69\x63\x65\x3A\x75\x6E\x6D\x61\x6E\x61\x67\x65\x64","\x68\x6F\x6C\x64\x74\x69\x6D\x65","\x64\x61\x73\x68\x62\x6F\x61\x72\x64\x3A\x76\x6F\x69\x63\x65\x3A\x68\x6F\x6C\x64\x74\x69\x6D\x65","\x74\x61\x6C\x6B\x74\x69\x6D\x65","\x64\x61\x73\x68\x62\x6F\x61\x72\x64\x3A\x76\x6F\x69\x63\x65\x3A\x74\x61\x6C\x6B\x74\x69\x6D\x65","\x6D\x61\x6E\x75\x61\x6C\x4F\x75\x74\x62\x6F\x75\x6E\x64","\x61\x6E\x73\x77\x65\x72\x74\x69\x6D\x65","\x61\x6E\x73\x77\x65\x72\x65\x64","\x67\x6C\x6F\x62\x61\x6C\x44\x75\x72\x61\x74\x69\x6F\x6E","\x64\x75\x72\x61\x74\x69\x6F\x6E","\x61\x76\x67\x44\x75\x72\x61\x74\x69\x6F\x6E","\x61\x6E\x73\x77\x65\x72\x52\x61\x74\x65","\x64\x61\x73\x68\x62\x6F\x61\x72\x64\x3A\x76\x6F\x69\x63\x65\x3A\x6F\x75\x74\x62\x6F\x75\x6E\x64","\x75\x73\x65\x72\x73","\x61\x64\x6D\x69\x6E\x73","\x76\x6F\x69\x63\x65\x3A\x71\x75\x65\x75\x65\x3A\x75\x70\x64\x61\x74\x65","\x6C\x61\x73\x74\x63\x61\x6C\x6C","\x63\x61\x6C\x6C\x73\x74\x61\x6B\x65\x6E","\x6C\x6F\x67\x67\x65\x64\x41\x74","\x6D\x65\x6D\x62\x65\x72\x6E\x61\x6D\x65","\x76\x6F\x69\x63\x65\x3A\x71\x75\x65\x75\x65\x3A\x61\x67\x65\x6E\x74\x3A\x6A\x6F\x69\x6E","\x55\x73\x65\x72\x49\x64","\x61\x67\x65\x6E\x74\x3A\x25\x73","\x66\x6F\x72\x6D\x61\x74","\x76\x6F\x69\x63\x65\x3A\x71\x75\x65\x75\x65\x3A\x61\x67\x65\x6E\x74\x3A\x6C\x65\x61\x76\x65","\x6D\x65\x73\x73\x61\x67\x65","\x77\x61\x69\x74\x69\x6E\x67\x3A\x75\x70","\x77\x61\x69\x74\x69\x6E\x67\x3A\x64\x6F\x77\x6E","\x61\x63\x74\x69\x76\x65\x3A\x75\x70","\x61\x63\x74\x69\x76\x65\x3A\x64\x6F\x77\x6E","\x61\x62\x61\x6E\x64\x6F\x6E\x3A\x75\x70","\x63\x6F\x6D\x70\x6C\x65\x74\x65\x3A\x75\x70","\x75\x6E\x6D\x61\x6E\x61\x67\x65\x64\x3A\x75\x70","\x6F\x75\x74\x62\x6F\x75\x6E\x64\x3A\x75\x70","\x61\x67\x65\x6E\x74\x3A\x6A\x6F\x69\x6E","\x61\x67\x65\x6E\x74\x3A\x6C\x65\x61\x76\x65","\x74\x79\x70\x65","\x6F\x6E"];_0x886d[0];const _=require(_0x886d[1]);const util=require(_0x886d[2]);const config=require(_0x886d[3]);const User=require(_0x886d[5])[_0x886d[4]];const sequelize=require(_0x886d[5])[_0x886d[6]];const VoiceQueue=require(_0x886d[5])[_0x886d[7]];const ReportQueue=require(_0x886d[5])[_0x886d[8]];module[_0x886d[9]]= function(_0xf2a9x8,_0xf2a9x9,_0xf2a9xa){function _0xf2a9xb(_0xf2a9xc){if(_0xf2a9x8[_0xf2a9xc[_0x886d[10]]]){if(!_0xf2a9x8[_0xf2a9xc[_0x886d[10]]][_0x886d[11]]){_0xf2a9x8[_0xf2a9xc[_0x886d[10]]][_0x886d[11]]= 0}}else {_0xf2a9x8[_0xf2a9xc[_0x886d[10]]]= {};_0xf2a9x8[_0xf2a9xc[_0x886d[10]]][_0x886d[11]]= 0};_0xf2a9x8[_0xf2a9xc[_0x886d[10]]][_0x886d[11]]++;_0xf2a9xa[_0x886d[14]](_0xf2a9xc[_0x886d[10]])[_0x886d[13]](_0x886d[12],_0xf2a9x8[_0xf2a9xc[_0x886d[10]]])}function _0xf2a9xd(_0xf2a9xc){if(_0xf2a9x8[_0xf2a9xc[_0x886d[10]]]){if(!_0xf2a9x8[_0xf2a9xc[_0x886d[10]]][_0x886d[11]]){_0xf2a9x8[_0xf2a9xc[_0x886d[10]]][_0x886d[11]]= 0}else {_0xf2a9x8[_0xf2a9xc[_0x886d[10]]][_0x886d[11]]--}}else {_0xf2a9x8[_0xf2a9xc[_0x886d[10]]]= {};_0xf2a9x8[_0xf2a9xc[_0x886d[10]]][_0x886d[11]]= 0};_0xf2a9xa[_0x886d[14]](_0xf2a9xc[_0x886d[10]])[_0x886d[13]](_0x886d[12],_0xf2a9x8[_0xf2a9xc[_0x886d[10]]])}function _0xf2a9xe(_0xf2a9xc){if(_0xf2a9x8[_0xf2a9xc[_0x886d[10]]]){if(!_0xf2a9x8[_0xf2a9xc[_0x886d[10]]][_0x886d[15]]){_0xf2a9x8[_0xf2a9xc[_0x886d[10]]][_0x886d[15]]= 0}}else {_0xf2a9x8[_0xf2a9xc[_0x886d[10]]]= {};_0xf2a9x8[_0xf2a9xc[_0x886d[10]]][_0x886d[15]]= 0};_0xf2a9x8[_0xf2a9xc[_0x886d[10]]][_0x886d[15]]++;_0xf2a9xa[_0x886d[14]](_0xf2a9xc[_0x886d[10]])[_0x886d[13]](_0x886d[16],_0xf2a9x8[_0xf2a9xc[_0x886d[10]]])}function _0xf2a9xf(_0xf2a9xc){if(_0xf2a9x8[_0xf2a9xc[_0x886d[10]]]){if(!_0xf2a9x8[_0xf2a9xc[_0x886d[10]]][_0x886d[15]]){_0xf2a9x8[_0xf2a9xc[_0x886d[10]]][_0x886d[15]]= 0}else {_0xf2a9x8[_0xf2a9xc[_0x886d[10]]][_0x886d[15]]--}}else {_0xf2a9x8[_0xf2a9xc[_0x886d[10]]]= {};_0xf2a9x8[_0xf2a9xc[_0x886d[10]]][_0x886d[15]]= 0};_0xf2a9xa[_0x886d[14]](_0xf2a9xc[_0x886d[10]])[_0x886d[13]](_0x886d[16],_0xf2a9x8[_0xf2a9xc[_0x886d[10]]])}function _0xf2a9x10(_0xf2a9xc){if(_0xf2a9x8[_0xf2a9xc[_0x886d[10]]]){if(!_0xf2a9x8[_0xf2a9xc[_0x886d[10]]][_0x886d[17]]){_0xf2a9x8[_0xf2a9xc[_0x886d[10]]][_0x886d[17]]= 0}}else {_0xf2a9x8[_0xf2a9xc[_0x886d[10]]]= {};_0xf2a9x8[_0xf2a9xc[_0x886d[10]]][_0x886d[17]]= 0};_0xf2a9x8[_0xf2a9xc[_0x886d[10]]][_0x886d[17]]++;_0xf2a9xa[_0x886d[14]](_0xf2a9xc[_0x886d[10]])[_0x886d[13]](_0x886d[18],_0xf2a9x8[_0xf2a9xc[_0x886d[10]]])}function _0xf2a9x11(_0xf2a9xc){if(_0xf2a9x8[_0xf2a9xc[_0x886d[10]]]){if(!_0xf2a9x8[_0xf2a9xc[_0x886d[10]]][_0x886d[19]]){_0xf2a9x8[_0xf2a9xc[_0x886d[10]]][_0x886d[19]]= 0}}else {_0xf2a9x8[_0xf2a9xc[_0x886d[10]]]= {};_0xf2a9x8[_0xf2a9xc[_0x886d[10]]][_0x886d[19]]= 0};_0xf2a9x8[_0xf2a9xc[_0x886d[10]]][_0x886d[19]]++;_0xf2a9xa[_0x886d[14]](_0xf2a9xc[_0x886d[10]])[_0x886d[13]](_0x886d[20],_0xf2a9x8[_0xf2a9xc[_0x886d[10]]])}function _0xf2a9x12(_0xf2a9xc){if(_0xf2a9x8[_0xf2a9xc[_0x886d[10]]]){if(!_0xf2a9x8[_0xf2a9xc[_0x886d[10]]][_0x886d[21]]){_0xf2a9x8[_0xf2a9xc[_0x886d[10]]][_0x886d[21]]= 0}}else {_0xf2a9x8[_0xf2a9xc[_0x886d[10]]]= {};_0xf2a9x8[_0xf2a9xc[_0x886d[10]]][_0x886d[21]]= 0};_0xf2a9x8[_0xf2a9xc[_0x886d[10]]][_0x886d[21]]++;_0xf2a9xa[_0x886d[14]](_0xf2a9xc[_0x886d[10]])[_0x886d[13]](_0x886d[22],_0xf2a9x8[_0xf2a9xc[_0x886d[10]]])}function _0xf2a9x13(_0xf2a9xc){if(_0xf2a9x8[_0xf2a9xc[_0x886d[10]]]){if(!_0xf2a9x8[_0xf2a9xc[_0x886d[10]]][_0x886d[23]]){_0xf2a9x8[_0xf2a9xc[_0x886d[10]]][_0x886d[23]]= 0}}else {_0xf2a9x8[_0xf2a9xc[_0x886d[10]]]= {};_0xf2a9x8[_0xf2a9xc[_0x886d[10]]][_0x886d[23]]= 0};_0xf2a9x8[_0xf2a9xc[_0x886d[10]]][_0x886d[23]]+= Number(_0xf2a9xc[_0x886d[23]]);_0xf2a9xa[_0x886d[14]](_0xf2a9xc[_0x886d[10]])[_0x886d[13]](_0x886d[24],_0xf2a9x8[_0xf2a9xc[_0x886d[10]]])}function _0xf2a9x14(_0xf2a9xc){if(_0xf2a9x8[_0xf2a9xc[_0x886d[10]]]){if(!_0xf2a9x8[_0xf2a9xc[_0x886d[10]]][_0x886d[25]]){_0xf2a9x8[_0xf2a9xc[_0x886d[10]]][_0x886d[25]]= 0}}else {_0xf2a9x8[_0xf2a9xc[_0x886d[10]]]= {};_0xf2a9x8[_0xf2a9xc[_0x886d[10]]][_0x886d[25]]= 0};_0xf2a9x8[_0xf2a9xc[_0x886d[10]]][_0x886d[25]]+= Number(_0xf2a9xc[_0x886d[25]]);_0xf2a9xa[_0x886d[14]](_0xf2a9xc[_0x886d[10]])[_0x886d[13]](_0x886d[26],_0xf2a9x8[_0xf2a9xc[_0x886d[10]]])}function _0xf2a9x15(_0xf2a9xc){_0xf2a9x9[_0x886d[27]]++;if(_0xf2a9xc[_0x886d[28]]){_0xf2a9x9[_0x886d[29]]++};_0xf2a9x9[_0x886d[30]]+= Number(_0xf2a9xc[_0x886d[31]]);_0xf2a9x9[_0x886d[32]]= Number(_0xf2a9x9[_0x886d[30]])/ Number(_0xf2a9x9[_0x886d[27]]);_0xf2a9x9[_0x886d[33]]= (_0xf2a9x9[_0x886d[29]]/ _0xf2a9x9[_0x886d[27]])* 100;_0xf2a9xa[_0x886d[14]](_0x886d[35])[_0x886d[13]](_0x886d[34],_0xf2a9x9);_0xf2a9xa[_0x886d[14]](_0x886d[36])[_0x886d[13]](_0x886d[34],_0xf2a9x9)}function _0xf2a9x16(_0xf2a9xc){_0xf2a9xa[_0x886d[14]](_0xf2a9xc[_0x886d[41]])[_0x886d[13]](_0x886d[37],{queue:_0xf2a9xc[_0x886d[10]],lastcall:_0xf2a9xc[_0x886d[38]],callstaken:_0xf2a9xc[_0x886d[39]],loggedAt:_0xf2a9xc[_0x886d[40]]})}function _0xf2a9x17(_0xf2a9xc){_0xf2a9xa[_0x886d[14]](util[_0x886d[45]](_0x886d[44],_0xf2a9xc.UserId))[_0x886d[13]](_0x886d[42],{agent:_0xf2a9xc[_0x886d[43]],queue:_0xf2a9xc[_0x886d[10]]})}function _0xf2a9x18(_0xf2a9xc){_0xf2a9xa[_0x886d[14]](util[_0x886d[45]](_0x886d[44],_0xf2a9xc.UserId))[_0x886d[13]](_0x886d[46],{agent:_0xf2a9xc[_0x886d[43]],queue:_0xf2a9xc[_0x886d[10]]})}process[_0x886d[59]](_0x886d[47],function(_0xf2a9xc){switch(_0xf2a9xc[_0x886d[58]]){case _0x886d[48]:_0xf2a9xb(_0xf2a9xc);break;case _0x886d[49]:_0xf2a9xd(_0xf2a9xc);break;case _0x886d[50]:_0xf2a9xe(_0xf2a9xc);break;case _0x886d[51]:_0xf2a9xf(_0xf2a9xc);break;case _0x886d[52]:_0xf2a9x10(_0xf2a9xc);break;case _0x886d[53]:_0xf2a9x11(_0xf2a9xc);break;case _0x886d[54]:_0xf2a9x12(_0xf2a9xc);break;case _0x886d[23]:_0xf2a9x13(_0xf2a9xc);break;case _0x886d[25]:_0xf2a9x14(_0xf2a9xc);break;case _0x886d[55]:_0xf2a9x15(_0xf2a9xc);break;case _0x886d[38]:_0xf2a9x16(_0xf2a9xc);break;case _0x886d[56]:_0xf2a9x17(_0xf2a9xc);break;case _0x886d[57]:_0xf2a9x18(_0xf2a9xc);break;default:}})} \ No newline at end of file diff --git a/server/utils/report_build.js b/server/utils/report_build.js index e53c3c3..911d0fa 100644 --- a/server/utils/report_build.js +++ b/server/utils/report_build.js @@ -1,539 +1 @@ -'use strict'; - -var _ = require('lodash'); -var util = require('util'); -var User = require('../models').User; -var Promise = require('bluebird'); -var Util = require('../config/util'); -var sequelize = require('../models').sequelize; - -function getTable(table) { - var tableModel; - switch (table) { - case 'report_agent_history': - case 'report_agent_history': - tableModel = require('../models').history.ReportAgentHistory; - break; - case 'report_mail_session': - case 'report_mail_session_history': - tableModel = require('../models').ReportMailSession; - break; - case 'report_queue': - case 'report_queue_history': - tableModel = require('../models').history.ReportQueueHistory; - break; - case 'report_chat_session': - case 'report_chat_session_history': - tableModel = require('../models').history.ReportChatSessionHistory; - break; - case 'report_call': - case 'report_call_history': - tableModel = require('../models').history.ReportCallHistory; - break; - case 'report_member': - case 'report_member_history': - tableModel = require('../models').history.ReportMemberHistory; - break; - case 'report_integration': - case 'report_integration_history': - tableModel = require('../models').history.ReportIntegrationHistory; - break; - case 'report_sms_session': - case 'report_sms_session_history': - tableModel = require('../models').history.ReportSmsSessionHistory; - break; - case 'cm_contacts': - tableModel = require('../models').Contact; - break; - case 'voice_recordings': - tableModel = require('../models').VoiceRecording; - break; - case 'report_square': - case 'report_square_history': - tableModel = require('../models').history.ReportSquareHistory; - break; - case 'report_square_details': - case 'report_square_details_history': - tableModel = require('../models').history.ReportSquareDetailHistory; - break; - case 'users': - tableModel = require('../models').User; - break; - case 'report_fax_session': - case 'report_fax_session_history': - tableModel = require('../models').history.ReportFaxSessionHistory; - break; - case 'mail_rooms': - tableModel = require('../models').MailRoom; - break; - case 'mail_messages': - tableModel = require('../models').MailMessage; - break; - case 'fax_rooms': - tableModel = require('../models').FaxRoom; - break; - case 'fax_messages': - tableModel = require('../models').FaxMessage; - break; - case 'chat_rooms': - tableModel = require('../models').ChatRoom; - break; - case 'chat_messages': - tableModel = require('../models').ChatMessage; - break; - case 'sms_rooms': - tableModel = require('../models').SmsRoom; - break; - case 'sms_messages': - tableModel = require('../models').SmsMessage; - break; - case 'openchannel_rooms': - tableModel = require('../models').OpenchannelRoom; - break; - case 'openchannel_messages': - tableModel = require('../models').OpenchannelMessage; - break; - default: - } - return tableModel; -} - -exports.getTable = getTable; - -exports.buildFilter = function(reqUser) { - return function(table) { - switch (reqUser.role) { - case 'user': - var filter = ''; - var checkTable = table.replace('_history', ''); - - switch (checkTable) { - case 'report_mail_session': - var _mailQueues; - return User - .findById(reqUser.id, { - attributes: ['id'] - }) - .then(Util.getMailQueuesIdByUser({}, { - attributes: ['id'], - include: [{ - raw: true, - model: User, - attributes: ['id'] - }] - })) - .then(function(queues) { - var users = []; - _mailQueues = _.map(queues.rows, 'id'); - queues.rows.forEach(function(queue) { - users = _.union(users, _.map(queue.Users, 'id')); - }); - return users; - }) - .then(function(agents) { - if (_mailQueues.length && agents.length) { - filter = '(queue IN (' + _mailQueues.join(",") + ')'; - filter += ' OR memberid IN (\'' + agents.join("','") + '\'))'; - } else if (_mailQueues.length) { - filter = 'queue IN (' + _mailQueues.join(",") + ')'; - } else { - filter = 'empty'; - } - console.log('==== USER FILTER ====', filter); - return filter; - }) - case 'report_member': - var _voiceQueues; - return User - .findById(reqUser.id, { - attributes: ['id'] - }) - .then(Util.getVoiceQueuesIdByUser({}, { - attributes: ['name'], - include: [{ - raw: true, - model: User, - attributes: ['name'] - }] - })) - .then(function(queues) { - var users = []; - queues.rows.forEach(function(queue) { - users = _.union(users, _.map(queue.Users, 'name')); - }); - return users; - }) - .then(function(agents) { - if (agents.length) { - filter = 'membername IN (\'' + agents.join("','") + '\')'; - } else { - filter = 'empty'; - } - console.log('==== USER FILTER ====', filter); - return filter; - }) - case 'report_agent': - case 'report_queue': - return User - .findById(reqUser.id, { - attributes: ['id'] - }) - .then(Util.getVoiceQueuesIdByUser()) - .then(function(voiceQueues) { - if (voiceQueues.rows.length) { - voiceQueues = _.map(voiceQueues.rows, 'name'); - filter = 'queue IN (\'' + voiceQueues.join("','") + '\')'; - } else { - filter = 'empty'; - } - console.log('==== USER FILTER ====', filter); - return filter; - }) - case 'report_chat_session': - var _chatQueues; - return User - .findById(reqUser.id, { - attributes: ['id'] - }) - .then(Util.getChatQueuesIdByUser({}, { - attributes: ['id'], - include: [{ - raw: true, - model: User, - attributes: ['id'] - }] - })) - .then(function(queues) { - var users = []; - _chatQueues = _.map(queues.rows, 'id'); - queues.rows.forEach(function(queue) { - users = _.union(users, _.map(queue.Users, 'id')); - }); - return users; - }) - .then(function(agents) { - if (_chatQueues.length && agents.length) { - filter = '(queue IN (' + _chatQueues.join(",") + ')'; - filter += ' OR memberid IN (\'' + agents.join("','") + '\'))'; - } else if (_chatQueues.length) { - filter = 'queue IN (' + _chatQueues.join(",") + ')'; - } else { - filter = 'empty'; - } - console.log('==== USER FILTER ====', filter); - return filter; - }) - case 'report_fax_session': - var _faxQueues; - return User - .findById(reqUser.id, { - attributes: ['id'] - }) - .then(Util.getFaxQueuesIdByUser({}, { - attributes: ['id'], - include: [{ - raw: true, - model: User, - attributes: ['id'] - }] - })) - .then(function(queues) { - var users = []; - _faxQueues = _.map(queues.rows, 'id'); - queues.rows.forEach(function(queue) { - users = _.union(users, _.map(queue.Users, 'id')); - }); - return users; - }) - .then(function(agents) { - if (_faxQueues.length && agents.length) { - filter = '(queue IN (' + _faxQueues.join(",") + ')'; - filter += ' OR memberid IN (\'' + agents.join("','") + '\'))'; - } else if (_faxQueues.length) { - filter = 'queue IN (' + _faxQueues.join(",") + ')'; - } else { - filter = 'empty'; - } - console.log('==== USER FILTER ====', filter); - return filter; - }) - case 'report_sms_session': - var _smsQueues; - return User - .findById(reqUser.id, { - attributes: ['id'] - }) - .then(Util.getSmsQueuesIdByUser({}, { - attributes: ['id'], - include: [{ - raw: true, - model: User, - attributes: ['id'] - }] - })) - .then(function(queues) { - var users = []; - _smsQueues = _.map(queues.rows, 'id'); - queues.rows.forEach(function(queue) { - users = _.union(users, _.map(queue.Users, 'id')); - }); - return users; - }) - .then(function(agents) { - if (_smsQueues.length && agents.length) { - filter = '(queue IN (' + _smsQueues.join(",") + ')'; - filter += ' OR memberid IN (\'' + agents.join("','") + '\'))'; - } else if (_smsQueues.length) { - filter = 'queue IN (' + _smsQueues.join(",") + ')'; - } else { - filter = 'empty'; - } - console.log('==== USER FILTER ====', filter); - return filter; - }) - case 'report_openchannel_session': - var _openchannelQueues; - return User - .findById(reqUser.id, { - attributes: ['id'] - }) - .then(Util.getOpenchannelQueuesIdByUser({}, { - attributes: ['id'], - include: [{ - raw: true, - model: User, - attributes: ['id'] - }] - })) - .then(function(queues) { - var users = []; - _openchannelQueues = _.map(queues.rows, 'id'); - queues.rows.forEach(function(queue) { - users = _.union(users, _.map(queue.Users, 'id')); - }); - return users; - }) - .then(function(agents) { - if (_openchannelQueues.length && agents.length) { - filter = '(queue IN (' + _openchannelQueues.join(",") + ')'; - filter += ' OR memberid IN (\'' + agents.join("','") + '\'))'; - } else if (_openchannelQueues.length) { - filter = 'queue IN (' + _openchannelQueues.join(",") + ')'; - } else { - filter = 'empty'; - } - console.log('==== USER FILTER ====', filter); - return filter; - }) - case 'report_integration': - case 'report_call': - return Promise - .all([]) - .then(function() { - return null; - }) - default: - return Promise - .all([]) - .then(function() { - return null; - }) - } - break; - default: - return Promise - .all([]) - .then(function() { - return null; - }) - } - } -} - -exports.buildQuery = function(query) { - return function(userFilter, report) { - var tableModel = getTable(report.table); - return tableModel - .describe() - .then(function(tableFields) { - var _tableFields = _.keys(tableFields); - var fields = [], - groupBy = [], - orderBy = []; - _.forEach(report.Fields, function(elem) { - if (!elem.MetricId && !elem.custom) { - elem.field = '`' + elem.field + '`'; - } - var field = ''; - if (elem.function) { - switch (elem.function) { - case 'COUNT DISTINCT': - field = util.format('COUNT(DISTINCT %s)', elem.field); - break; - case 'GROUP_CONCAT ASC': - field = util.format('GROUP_CONCAT(%s ORDER BY %s ASC)', elem.field, elem.field); - break; - case 'GROUP_CONCAT DESC': - field = util.format('GROUP_CONCAT(%s ORDER BY %s DESC)', elem.field, elem.field); - break; - default: - field = util.format('%s(%s)', elem.function, elem.field); - } - } else { - field = elem.field; - } - if (field.indexOf('DATE(') === 0) { - field = util.format('CAST(%s AS char)', field); //same cast as the previous switch in case of custom field with DATE function - } - if (elem.format) { - switch (elem.format) { - case 'DATE': - field = util.format('CAST(%s(%s) AS char)', elem.format, field); //CAST return the date as string instead of as a Date object, so the latter processing will not convert it in the standard choosen format - break; - default: - field = util.format('%s(%s)', elem.format, field); - } - - } - fields.push(util.format('%s AS \'%s\'', field, elem.alias)); - if (elem.groupBy) { - groupBy.push(field); - } - if (elem.orderBy) { - orderBy.push(util.format('%s %s', field, elem.orderBy)); - } - }); - - var conditions = report.conditions ? getConditions(JSON.parse(report.conditions).group, _tableFields) : '()'; - var resultQuery = 'SELECT'; - // query += fields.length ? ' ' + fields.join(',') : ' *';//right if you want to select all fields also - resultQuery += ' ' + fields.join(','); //generate a wrong query if there isn' t any field - switch (report.table) { - case 'report_mail_session_history': - report.table = report.table.replace('_history', ''); - break; - default: - } - resultQuery += ' FROM ' + report.table; - resultQuery += conditions !== '()' ? ' WHERE ' + conditions : ''; - var startDate, endDate, startTime, endTime; - var otherConditions = []; - if (query) { - _.forOwn(query, function(value, key) { - switch (key) { - case 'startDate': - startDate = value; - break; - case 'endDate': - endDate = value; - break; - case 'startTime': - startTime = value; - break; - case 'endTime': - endTime = value; - break; - case 'offset': - case 'limit': - break; - default: - var column = _.find(report.Fields, { - alias: key - }); - if (column) { - otherConditions.push(column.field + ' LIKE \'%' + value + '%\''); - } else { - otherConditions.push(key + ' LIKE \'%' + value + '%\''); - } - } - }); - } - var fieldFormat = 'DATE_FORMAT(createdAt,\'%Y-%m-%d %H:%i\')'; - console.log(startDate, endDate, startTime, endTime); - if (startDate && endDate) { - if (startDate === endDate) { - if (startTime || endTime) { - console.log(startDate, endDate, startTime, endTime); - otherConditions.push(util.format(' (%s BETWEEN \'%s\' AND \'%s\')', fieldFormat, startDate + (startTime ? ' ' + startTime : ' 00:00'), endDate + (endTime ? ' ' + endTime : - ' 23:59'))); - } else { - otherConditions.push(util.format(' %s = \'%s\'', fieldFormat, startDate)); - } - } else { - otherConditions.push(util.format(' (%s BETWEEN \'%s\' AND \'%s\')', fieldFormat, startDate + (startTime ? ' ' + startTime : ' 00:00'), endDate + (endTime ? ' ' + endTime : ' 23:59'))); - } - } else if (startDate) { - otherConditions.push(util.format(' %s >= \'%s\')', fieldFormat, startDate + (startTime ? ' ' + startTime : ' 00:00'))); - } else if (endDate) { - otherConditions.push(util.format(' %s <= \'%s\')', fieldFormat, endDate + (endTime ? ' ' + endTime : ' 23:59'))); - } - if (otherConditions.length) { - resultQuery += ((conditions !== '()') ? ' AND ' : ' WHERE ') + otherConditions.join(' AND '); - } - - - if (userFilter) { - if (userFilter === 'empty') { - console.log(' ==== RESULTING QUERY ===='); - console.log('NO SUFFICIENT PERMISSIONS'); - console.log(' ========================='); - return 'permission'; - } - resultQuery += ((conditions !== '()' || otherConditions.length) ? ' AND ' : ' WHERE ') + userFilter; - } - resultQuery += groupBy.length ? ' GROUP BY ' + groupBy.join(',') : ''; - resultQuery += orderBy.length ? ' ORDER BY ' + orderBy.join(',') : ''; - - console.log(' ==== RESULTING QUERY ===='); - console.log(resultQuery); - console.log(' ========================='); - return resultQuery; - }) - } -} - -exports.checkQuery = function() { - return function(query) { - if (query) { - var result = ''; - switch (query) { - case 'permission': - result = 'No sufficient queue permissions for the user'; - break; - default: - result = sequelize.query(query, { - type: sequelize.QueryTypes.SELECT - }); - } - return result; - } - return query; - } -} - -function getConditions(group, tableFields) { - if (!group) return '()'; - for (var str = '(', i = 0; i < group.rules.length; i++) { - i > 0 && (str += ' ' + group.operator + ' '); - if (group.rules[i].group) { - str += getConditions(group.rules[i].group, tableFields); - } else { - str += _.includes(tableFields, group.rules[i].field) ? '`' + group.rules[i].field + '`' : group.rules[i].field; - switch (group.rules[i].condition) { - case 'IS NULL': - case 'IS NOT NULL': - str += " " + group.rules[i].condition; - break; - case 'IS EMPTY': - str += " = ''"; - break; - case 'IS NOT EMPTY': - str += " != ''"; - break; - default: - str += " " + group.rules[i].condition + " " + group.rules[i].value + ""; - } - } - } - return str + ')'; -} +var _0x36af=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x75\x74\x69\x6C","\x55\x73\x65\x72","\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x62\x6C\x75\x65\x62\x69\x72\x64","\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x72\x65\x70\x6F\x72\x74\x5F\x61\x67\x65\x6E\x74\x5F\x68\x69\x73\x74\x6F\x72\x79","\x52\x65\x70\x6F\x72\x74\x41\x67\x65\x6E\x74\x48\x69\x73\x74\x6F\x72\x79","\x68\x69\x73\x74\x6F\x72\x79","\x72\x65\x70\x6F\x72\x74\x5F\x6D\x61\x69\x6C\x5F\x73\x65\x73\x73\x69\x6F\x6E","\x52\x65\x70\x6F\x72\x74\x4D\x61\x69\x6C\x53\x65\x73\x73\x69\x6F\x6E","\x72\x65\x70\x6F\x72\x74\x5F\x6D\x61\x69\x6C\x5F\x73\x65\x73\x73\x69\x6F\x6E\x5F\x68\x69\x73\x74\x6F\x72\x79","\x72\x65\x70\x6F\x72\x74\x5F\x71\x75\x65\x75\x65","\x52\x65\x70\x6F\x72\x74\x51\x75\x65\x75\x65\x48\x69\x73\x74\x6F\x72\x79","\x72\x65\x70\x6F\x72\x74\x5F\x71\x75\x65\x75\x65\x5F\x68\x69\x73\x74\x6F\x72\x79","\x72\x65\x70\x6F\x72\x74\x5F\x63\x68\x61\x74\x5F\x73\x65\x73\x73\x69\x6F\x6E","\x52\x65\x70\x6F\x72\x74\x43\x68\x61\x74\x53\x65\x73\x73\x69\x6F\x6E\x48\x69\x73\x74\x6F\x72\x79","\x72\x65\x70\x6F\x72\x74\x5F\x63\x68\x61\x74\x5F\x73\x65\x73\x73\x69\x6F\x6E\x5F\x68\x69\x73\x74\x6F\x72\x79","\x72\x65\x70\x6F\x72\x74\x5F\x63\x61\x6C\x6C","\x52\x65\x70\x6F\x72\x74\x43\x61\x6C\x6C\x48\x69\x73\x74\x6F\x72\x79","\x72\x65\x70\x6F\x72\x74\x5F\x63\x61\x6C\x6C\x5F\x68\x69\x73\x74\x6F\x72\x79","\x72\x65\x70\x6F\x72\x74\x5F\x6D\x65\x6D\x62\x65\x72","\x52\x65\x70\x6F\x72\x74\x4D\x65\x6D\x62\x65\x72\x48\x69\x73\x74\x6F\x72\x79","\x72\x65\x70\x6F\x72\x74\x5F\x6D\x65\x6D\x62\x65\x72\x5F\x68\x69\x73\x74\x6F\x72\x79","\x72\x65\x70\x6F\x72\x74\x5F\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E","\x52\x65\x70\x6F\x72\x74\x49\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x48\x69\x73\x74\x6F\x72\x79","\x72\x65\x70\x6F\x72\x74\x5F\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x5F\x68\x69\x73\x74\x6F\x72\x79","\x72\x65\x70\x6F\x72\x74\x5F\x73\x6D\x73\x5F\x73\x65\x73\x73\x69\x6F\x6E","\x52\x65\x70\x6F\x72\x74\x53\x6D\x73\x53\x65\x73\x73\x69\x6F\x6E\x48\x69\x73\x74\x6F\x72\x79","\x72\x65\x70\x6F\x72\x74\x5F\x73\x6D\x73\x5F\x73\x65\x73\x73\x69\x6F\x6E\x5F\x68\x69\x73\x74\x6F\x72\x79","\x43\x6F\x6E\x74\x61\x63\x74","\x63\x6D\x5F\x63\x6F\x6E\x74\x61\x63\x74\x73","\x56\x6F\x69\x63\x65\x52\x65\x63\x6F\x72\x64\x69\x6E\x67","\x76\x6F\x69\x63\x65\x5F\x72\x65\x63\x6F\x72\x64\x69\x6E\x67\x73","\x72\x65\x70\x6F\x72\x74\x5F\x73\x71\x75\x61\x72\x65","\x52\x65\x70\x6F\x72\x74\x53\x71\x75\x61\x72\x65\x48\x69\x73\x74\x6F\x72\x79","\x72\x65\x70\x6F\x72\x74\x5F\x73\x71\x75\x61\x72\x65\x5F\x68\x69\x73\x74\x6F\x72\x79","\x72\x65\x70\x6F\x72\x74\x5F\x73\x71\x75\x61\x72\x65\x5F\x64\x65\x74\x61\x69\x6C\x73","\x52\x65\x70\x6F\x72\x74\x53\x71\x75\x61\x72\x65\x44\x65\x74\x61\x69\x6C\x48\x69\x73\x74\x6F\x72\x79","\x72\x65\x70\x6F\x72\x74\x5F\x73\x71\x75\x61\x72\x65\x5F\x64\x65\x74\x61\x69\x6C\x73\x5F\x68\x69\x73\x74\x6F\x72\x79","\x75\x73\x65\x72\x73","\x72\x65\x70\x6F\x72\x74\x5F\x66\x61\x78\x5F\x73\x65\x73\x73\x69\x6F\x6E","\x52\x65\x70\x6F\x72\x74\x46\x61\x78\x53\x65\x73\x73\x69\x6F\x6E\x48\x69\x73\x74\x6F\x72\x79","\x72\x65\x70\x6F\x72\x74\x5F\x66\x61\x78\x5F\x73\x65\x73\x73\x69\x6F\x6E\x5F\x68\x69\x73\x74\x6F\x72\x79","\x4D\x61\x69\x6C\x52\x6F\x6F\x6D","\x6D\x61\x69\x6C\x5F\x72\x6F\x6F\x6D\x73","\x4D\x61\x69\x6C\x4D\x65\x73\x73\x61\x67\x65","\x6D\x61\x69\x6C\x5F\x6D\x65\x73\x73\x61\x67\x65\x73","\x46\x61\x78\x52\x6F\x6F\x6D","\x66\x61\x78\x5F\x72\x6F\x6F\x6D\x73","\x46\x61\x78\x4D\x65\x73\x73\x61\x67\x65","\x66\x61\x78\x5F\x6D\x65\x73\x73\x61\x67\x65\x73","\x43\x68\x61\x74\x52\x6F\x6F\x6D","\x63\x68\x61\x74\x5F\x72\x6F\x6F\x6D\x73","\x43\x68\x61\x74\x4D\x65\x73\x73\x61\x67\x65","\x63\x68\x61\x74\x5F\x6D\x65\x73\x73\x61\x67\x65\x73","\x53\x6D\x73\x52\x6F\x6F\x6D","\x73\x6D\x73\x5F\x72\x6F\x6F\x6D\x73","\x53\x6D\x73\x4D\x65\x73\x73\x61\x67\x65","\x73\x6D\x73\x5F\x6D\x65\x73\x73\x61\x67\x65\x73","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x52\x6F\x6F\x6D","\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x72\x6F\x6F\x6D\x73","\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x4D\x65\x73\x73\x61\x67\x65","\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x6D\x65\x73\x73\x61\x67\x65\x73","\x67\x65\x74\x54\x61\x62\x6C\x65","\x62\x75\x69\x6C\x64\x46\x69\x6C\x74\x65\x72","","\x5F\x68\x69\x73\x74\x6F\x72\x79","\x72\x65\x70\x6C\x61\x63\x65","\x6C\x65\x6E\x67\x74\x68","\x28\x71\x75\x65\x75\x65\x20\x49\x4E\x20\x28","\x2C","\x6A\x6F\x69\x6E","\x29","\x20\x4F\x52\x20\x6D\x65\x6D\x62\x65\x72\x69\x64\x20\x49\x4E\x20\x28\x27","\x27\x2C\x27","\x27\x29\x29","\x71\x75\x65\x75\x65\x20\x49\x4E\x20\x28","\x65\x6D\x70\x74\x79","\x3D\x3D\x3D\x3D\x20\x55\x53\x45\x52\x20\x46\x49\x4C\x54\x45\x52\x20\x3D\x3D\x3D\x3D","\x6C\x6F\x67","\x74\x68\x65\x6E","\x72\x6F\x77\x73","\x69\x64","\x6D\x61\x70","\x75\x6E\x69\x6F\x6E","\x66\x6F\x72\x45\x61\x63\x68","\x67\x65\x74\x4D\x61\x69\x6C\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x66\x69\x6E\x64\x42\x79\x49\x64","\x6D\x65\x6D\x62\x65\x72\x6E\x61\x6D\x65\x20\x49\x4E\x20\x28\x27","\x27\x29","\x6E\x61\x6D\x65","\x67\x65\x74\x56\x6F\x69\x63\x65\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x72\x65\x70\x6F\x72\x74\x5F\x61\x67\x65\x6E\x74","\x71\x75\x65\x75\x65\x20\x49\x4E\x20\x28\x27","\x67\x65\x74\x43\x68\x61\x74\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x67\x65\x74\x46\x61\x78\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x67\x65\x74\x53\x6D\x73\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x67\x65\x74\x4F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x51\x75\x65\x75\x65\x73\x49\x64\x42\x79\x55\x73\x65\x72","\x72\x65\x70\x6F\x72\x74\x5F\x6F\x70\x65\x6E\x63\x68\x61\x6E\x6E\x65\x6C\x5F\x73\x65\x73\x73\x69\x6F\x6E","\x61\x6C\x6C","\x75\x73\x65\x72","\x72\x6F\x6C\x65","\x62\x75\x69\x6C\x64\x51\x75\x65\x72\x79","\x74\x61\x62\x6C\x65","\x6B\x65\x79\x73","\x4D\x65\x74\x72\x69\x63\x49\x64","\x63\x75\x73\x74\x6F\x6D","\x66\x69\x65\x6C\x64","\x60","\x66\x75\x6E\x63\x74\x69\x6F\x6E","\x43\x4F\x55\x4E\x54\x28\x44\x49\x53\x54\x49\x4E\x43\x54\x20\x25\x73\x29","\x66\x6F\x72\x6D\x61\x74","\x43\x4F\x55\x4E\x54\x20\x44\x49\x53\x54\x49\x4E\x43\x54","\x47\x52\x4F\x55\x50\x5F\x43\x4F\x4E\x43\x41\x54\x28\x25\x73\x20\x4F\x52\x44\x45\x52\x20\x42\x59\x20\x25\x73\x20\x41\x53\x43\x29","\x47\x52\x4F\x55\x50\x5F\x43\x4F\x4E\x43\x41\x54\x20\x41\x53\x43","\x47\x52\x4F\x55\x50\x5F\x43\x4F\x4E\x43\x41\x54\x28\x25\x73\x20\x4F\x52\x44\x45\x52\x20\x42\x59\x20\x25\x73\x20\x44\x45\x53\x43\x29","\x47\x52\x4F\x55\x50\x5F\x43\x4F\x4E\x43\x41\x54\x20\x44\x45\x53\x43","\x25\x73\x28\x25\x73\x29","\x44\x41\x54\x45\x28","\x69\x6E\x64\x65\x78\x4F\x66","\x43\x41\x53\x54\x28\x25\x73\x20\x41\x53\x20\x63\x68\x61\x72\x29","\x43\x41\x53\x54\x28\x25\x73\x28\x25\x73\x29\x20\x41\x53\x20\x63\x68\x61\x72\x29","\x44\x41\x54\x45","\x25\x73\x20\x41\x53\x20\x27\x25\x73\x27","\x61\x6C\x69\x61\x73","\x70\x75\x73\x68","\x67\x72\x6F\x75\x70\x42\x79","\x6F\x72\x64\x65\x72\x42\x79","\x25\x73\x20\x25\x73","\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x73","\x67\x72\x6F\x75\x70","\x70\x61\x72\x73\x65","\x28\x29","\x53\x45\x4C\x45\x43\x54","\x20","\x20\x46\x52\x4F\x4D\x20","\x20\x57\x48\x45\x52\x45\x20","\x73\x74\x61\x72\x74\x44\x61\x74\x65","\x65\x6E\x64\x44\x61\x74\x65","\x73\x74\x61\x72\x74\x54\x69\x6D\x65","\x65\x6E\x64\x54\x69\x6D\x65","\x6F\x66\x66\x73\x65\x74","\x6C\x69\x6D\x69\x74","\x66\x69\x6E\x64","\x20\x4C\x49\x4B\x45\x20\x27\x25","\x25\x27","\x66\x6F\x72\x4F\x77\x6E","\x44\x41\x54\x45\x5F\x46\x4F\x52\x4D\x41\x54\x28\x63\x72\x65\x61\x74\x65\x64\x41\x74\x2C\x27\x25\x59\x2D\x25\x6D\x2D\x25\x64\x20\x25\x48\x3A\x25\x69\x27\x29","\x20\x28\x25\x73\x20\x42\x45\x54\x57\x45\x45\x4E\x20\x27\x25\x73\x27\x20\x41\x4E\x44\x20\x27\x25\x73\x27\x29","\x20\x30\x30\x3A\x30\x30","\x20\x32\x33\x3A\x35\x39","\x20\x25\x73\x20\x3D\x20\x27\x25\x73\x27","\x20\x25\x73\x20\x3E\x3D\x20\x27\x25\x73\x27\x29","\x20\x25\x73\x20\x3C\x3D\x20\x27\x25\x73\x27\x29","\x20\x41\x4E\x44\x20","\x20\x3D\x3D\x3D\x3D\x20\x52\x45\x53\x55\x4C\x54\x49\x4E\x47\x20\x51\x55\x45\x52\x59\x20\x3D\x3D\x3D\x3D","\x4E\x4F\x20\x53\x55\x46\x46\x49\x43\x49\x45\x4E\x54\x20\x50\x45\x52\x4D\x49\x53\x53\x49\x4F\x4E\x53","\x20\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D\x3D","\x70\x65\x72\x6D\x69\x73\x73\x69\x6F\x6E","\x20\x47\x52\x4F\x55\x50\x20\x42\x59\x20","\x20\x4F\x52\x44\x45\x52\x20\x42\x59\x20","\x64\x65\x73\x63\x72\x69\x62\x65","\x63\x68\x65\x63\x6B\x51\x75\x65\x72\x79","\x4E\x6F\x20\x73\x75\x66\x66\x69\x63\x69\x65\x6E\x74\x20\x71\x75\x65\x75\x65\x20\x70\x65\x72\x6D\x69\x73\x73\x69\x6F\x6E\x73\x20\x66\x6F\x72\x20\x74\x68\x65\x20\x75\x73\x65\x72","\x51\x75\x65\x72\x79\x54\x79\x70\x65\x73","\x71\x75\x65\x72\x79","\x28","\x72\x75\x6C\x65\x73","\x6F\x70\x65\x72\x61\x74\x6F\x72","\x69\x6E\x63\x6C\x75\x64\x65\x73","\x49\x53\x20\x4E\x55\x4C\x4C","\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E","\x49\x53\x20\x4E\x4F\x54\x20\x4E\x55\x4C\x4C","\x20\x3D\x20\x27\x27","\x49\x53\x20\x45\x4D\x50\x54\x59","\x20\x21\x3D\x20\x27\x27","\x49\x53\x20\x4E\x4F\x54\x20\x45\x4D\x50\x54\x59","\x76\x61\x6C\x75\x65"];_0x36af[0];var _=require(_0x36af[1]);var util=require(_0x36af[2]);var User=require(_0x36af[4])[_0x36af[3]];var Promise=require(_0x36af[5]);var Util=require(_0x36af[6]);var sequelize=require(_0x36af[4])[_0x36af[7]];function getTable(_0xcc5bx8){var _0xcc5bx9;switch(_0xcc5bx8){case _0x36af[8]:;case _0x36af[8]:_0xcc5bx9= require(_0x36af[4])[_0x36af[10]][_0x36af[9]];break;case _0x36af[11]:;case _0x36af[13]:_0xcc5bx9= require(_0x36af[4])[_0x36af[12]];break;case _0x36af[14]:;case _0x36af[16]:_0xcc5bx9= require(_0x36af[4])[_0x36af[10]][_0x36af[15]];break;case _0x36af[17]:;case _0x36af[19]:_0xcc5bx9= require(_0x36af[4])[_0x36af[10]][_0x36af[18]];break;case _0x36af[20]:;case _0x36af[22]:_0xcc5bx9= require(_0x36af[4])[_0x36af[10]][_0x36af[21]];break;case _0x36af[23]:;case _0x36af[25]:_0xcc5bx9= require(_0x36af[4])[_0x36af[10]][_0x36af[24]];break;case _0x36af[26]:;case _0x36af[28]:_0xcc5bx9= require(_0x36af[4])[_0x36af[10]][_0x36af[27]];break;case _0x36af[29]:;case _0x36af[31]:_0xcc5bx9= require(_0x36af[4])[_0x36af[10]][_0x36af[30]];break;case _0x36af[33]:_0xcc5bx9= require(_0x36af[4])[_0x36af[32]];break;case _0x36af[35]:_0xcc5bx9= require(_0x36af[4])[_0x36af[34]];break;case _0x36af[36]:;case _0x36af[38]:_0xcc5bx9= require(_0x36af[4])[_0x36af[10]][_0x36af[37]];break;case _0x36af[39]:;case _0x36af[41]:_0xcc5bx9= require(_0x36af[4])[_0x36af[10]][_0x36af[40]];break;case _0x36af[42]:_0xcc5bx9= require(_0x36af[4])[_0x36af[3]];break;case _0x36af[43]:;case _0x36af[45]:_0xcc5bx9= require(_0x36af[4])[_0x36af[10]][_0x36af[44]];break;case _0x36af[47]:_0xcc5bx9= require(_0x36af[4])[_0x36af[46]];break;case _0x36af[49]:_0xcc5bx9= require(_0x36af[4])[_0x36af[48]];break;case _0x36af[51]:_0xcc5bx9= require(_0x36af[4])[_0x36af[50]];break;case _0x36af[53]:_0xcc5bx9= require(_0x36af[4])[_0x36af[52]];break;case _0x36af[55]:_0xcc5bx9= require(_0x36af[4])[_0x36af[54]];break;case _0x36af[57]:_0xcc5bx9= require(_0x36af[4])[_0x36af[56]];break;case _0x36af[59]:_0xcc5bx9= require(_0x36af[4])[_0x36af[58]];break;case _0x36af[61]:_0xcc5bx9= require(_0x36af[4])[_0x36af[60]];break;case _0x36af[63]:_0xcc5bx9= require(_0x36af[4])[_0x36af[62]];break;case _0x36af[65]:_0xcc5bx9= require(_0x36af[4])[_0x36af[64]];break;default:};return _0xcc5bx9}exports[_0x36af[66]]= getTable;exports[_0x36af[67]]= function(_0xcc5bxa){return function(_0xcc5bx8){switch(_0xcc5bxa[_0x36af[104]]){case _0x36af[103]:var _0xcc5bxb=_0x36af[68];var _0xcc5bxc=_0xcc5bx8[_0x36af[70]](_0x36af[69],_0x36af[68]);switch(_0xcc5bxc){case _0x36af[11]:var _0xcc5bxd;return User[_0x36af[90]](_0xcc5bxa[_0x36af[85]],{attributes:[_0x36af[85]]})[_0x36af[83]](Util[_0x36af[89]]({},{attributes:[_0x36af[85]],include:[{raw:true,model:User,attributes:[_0x36af[85]]}]}))[_0x36af[83]](function(_0xcc5bxf){var _0xcc5bx10=[];_0xcc5bxd= _[_0x36af[86]](_0xcc5bxf[_0x36af[84]],_0x36af[85]);_0xcc5bxf[_0x36af[84]][_0x36af[88]](function(_0xcc5bx11){_0xcc5bx10= _[_0x36af[87]](_0xcc5bx10,_[_0x36af[86]](_0xcc5bx11.Users,_0x36af[85]))});return _0xcc5bx10})[_0x36af[83]](function(_0xcc5bxe){if(_0xcc5bxd[_0x36af[71]]&& _0xcc5bxe[_0x36af[71]]){_0xcc5bxb= _0x36af[72]+ _0xcc5bxd[_0x36af[74]](_0x36af[73])+ _0x36af[75];_0xcc5bxb+= _0x36af[76]+ _0xcc5bxe[_0x36af[74]](_0x36af[77])+ _0x36af[78]}else {if(_0xcc5bxd[_0x36af[71]]){_0xcc5bxb= _0x36af[79]+ _0xcc5bxd[_0x36af[74]](_0x36af[73])+ _0x36af[75]}else {_0xcc5bxb= _0x36af[80]}};console[_0x36af[82]](_0x36af[81],_0xcc5bxb);return _0xcc5bxb});case _0x36af[23]:var _0xcc5bx12;return User[_0x36af[90]](_0xcc5bxa[_0x36af[85]],{attributes:[_0x36af[85]]})[_0x36af[83]](Util[_0x36af[94]]({},{attributes:[_0x36af[93]],include:[{raw:true,model:User,attributes:[_0x36af[93]]}]}))[_0x36af[83]](function(_0xcc5bxf){var _0xcc5bx10=[];_0xcc5bxf[_0x36af[84]][_0x36af[88]](function(_0xcc5bx11){_0xcc5bx10= _[_0x36af[87]](_0xcc5bx10,_[_0x36af[86]](_0xcc5bx11.Users,_0x36af[93]))});return _0xcc5bx10})[_0x36af[83]](function(_0xcc5bxe){if(_0xcc5bxe[_0x36af[71]]){_0xcc5bxb= _0x36af[91]+ _0xcc5bxe[_0x36af[74]](_0x36af[77])+ _0x36af[92]}else {_0xcc5bxb= _0x36af[80]};console[_0x36af[82]](_0x36af[81],_0xcc5bxb);return _0xcc5bxb});case _0x36af[95]:;case _0x36af[14]:return User[_0x36af[90]](_0xcc5bxa[_0x36af[85]],{attributes:[_0x36af[85]]})[_0x36af[83]](Util[_0x36af[94]]())[_0x36af[83]](function(_0xcc5bx13){if(_0xcc5bx13[_0x36af[84]][_0x36af[71]]){_0xcc5bx13= _[_0x36af[86]](_0xcc5bx13[_0x36af[84]],_0x36af[93]);_0xcc5bxb= _0x36af[96]+ _0xcc5bx13[_0x36af[74]](_0x36af[77])+ _0x36af[92]}else {_0xcc5bxb= _0x36af[80]};console[_0x36af[82]](_0x36af[81],_0xcc5bxb);return _0xcc5bxb});case _0x36af[17]:var _0xcc5bx14;return User[_0x36af[90]](_0xcc5bxa[_0x36af[85]],{attributes:[_0x36af[85]]})[_0x36af[83]](Util[_0x36af[97]]({},{attributes:[_0x36af[85]],include:[{raw:true,model:User,attributes:[_0x36af[85]]}]}))[_0x36af[83]](function(_0xcc5bxf){var _0xcc5bx10=[];_0xcc5bx14= _[_0x36af[86]](_0xcc5bxf[_0x36af[84]],_0x36af[85]);_0xcc5bxf[_0x36af[84]][_0x36af[88]](function(_0xcc5bx11){_0xcc5bx10= _[_0x36af[87]](_0xcc5bx10,_[_0x36af[86]](_0xcc5bx11.Users,_0x36af[85]))});return _0xcc5bx10})[_0x36af[83]](function(_0xcc5bxe){if(_0xcc5bx14[_0x36af[71]]&& _0xcc5bxe[_0x36af[71]]){_0xcc5bxb= _0x36af[72]+ _0xcc5bx14[_0x36af[74]](_0x36af[73])+ _0x36af[75];_0xcc5bxb+= _0x36af[76]+ _0xcc5bxe[_0x36af[74]](_0x36af[77])+ _0x36af[78]}else {if(_0xcc5bx14[_0x36af[71]]){_0xcc5bxb= _0x36af[79]+ _0xcc5bx14[_0x36af[74]](_0x36af[73])+ _0x36af[75]}else {_0xcc5bxb= _0x36af[80]}};console[_0x36af[82]](_0x36af[81],_0xcc5bxb);return _0xcc5bxb});case _0x36af[43]:var _0xcc5bx15;return User[_0x36af[90]](_0xcc5bxa[_0x36af[85]],{attributes:[_0x36af[85]]})[_0x36af[83]](Util[_0x36af[98]]({},{attributes:[_0x36af[85]],include:[{raw:true,model:User,attributes:[_0x36af[85]]}]}))[_0x36af[83]](function(_0xcc5bxf){var _0xcc5bx10=[];_0xcc5bx15= _[_0x36af[86]](_0xcc5bxf[_0x36af[84]],_0x36af[85]);_0xcc5bxf[_0x36af[84]][_0x36af[88]](function(_0xcc5bx11){_0xcc5bx10= _[_0x36af[87]](_0xcc5bx10,_[_0x36af[86]](_0xcc5bx11.Users,_0x36af[85]))});return _0xcc5bx10})[_0x36af[83]](function(_0xcc5bxe){if(_0xcc5bx15[_0x36af[71]]&& _0xcc5bxe[_0x36af[71]]){_0xcc5bxb= _0x36af[72]+ _0xcc5bx15[_0x36af[74]](_0x36af[73])+ _0x36af[75];_0xcc5bxb+= _0x36af[76]+ _0xcc5bxe[_0x36af[74]](_0x36af[77])+ _0x36af[78]}else {if(_0xcc5bx15[_0x36af[71]]){_0xcc5bxb= _0x36af[79]+ _0xcc5bx15[_0x36af[74]](_0x36af[73])+ _0x36af[75]}else {_0xcc5bxb= _0x36af[80]}};console[_0x36af[82]](_0x36af[81],_0xcc5bxb);return _0xcc5bxb});case _0x36af[29]:var _0xcc5bx16;return User[_0x36af[90]](_0xcc5bxa[_0x36af[85]],{attributes:[_0x36af[85]]})[_0x36af[83]](Util[_0x36af[99]]({},{attributes:[_0x36af[85]],include:[{raw:true,model:User,attributes:[_0x36af[85]]}]}))[_0x36af[83]](function(_0xcc5bxf){var _0xcc5bx10=[];_0xcc5bx16= _[_0x36af[86]](_0xcc5bxf[_0x36af[84]],_0x36af[85]);_0xcc5bxf[_0x36af[84]][_0x36af[88]](function(_0xcc5bx11){_0xcc5bx10= _[_0x36af[87]](_0xcc5bx10,_[_0x36af[86]](_0xcc5bx11.Users,_0x36af[85]))});return _0xcc5bx10})[_0x36af[83]](function(_0xcc5bxe){if(_0xcc5bx16[_0x36af[71]]&& _0xcc5bxe[_0x36af[71]]){_0xcc5bxb= _0x36af[72]+ _0xcc5bx16[_0x36af[74]](_0x36af[73])+ _0x36af[75];_0xcc5bxb+= _0x36af[76]+ _0xcc5bxe[_0x36af[74]](_0x36af[77])+ _0x36af[78]}else {if(_0xcc5bx16[_0x36af[71]]){_0xcc5bxb= _0x36af[79]+ _0xcc5bx16[_0x36af[74]](_0x36af[73])+ _0x36af[75]}else {_0xcc5bxb= _0x36af[80]}};console[_0x36af[82]](_0x36af[81],_0xcc5bxb);return _0xcc5bxb});case _0x36af[101]:var _0xcc5bx17;return User[_0x36af[90]](_0xcc5bxa[_0x36af[85]],{attributes:[_0x36af[85]]})[_0x36af[83]](Util[_0x36af[100]]({},{attributes:[_0x36af[85]],include:[{raw:true,model:User,attributes:[_0x36af[85]]}]}))[_0x36af[83]](function(_0xcc5bxf){var _0xcc5bx10=[];_0xcc5bx17= _[_0x36af[86]](_0xcc5bxf[_0x36af[84]],_0x36af[85]);_0xcc5bxf[_0x36af[84]][_0x36af[88]](function(_0xcc5bx11){_0xcc5bx10= _[_0x36af[87]](_0xcc5bx10,_[_0x36af[86]](_0xcc5bx11.Users,_0x36af[85]))});return _0xcc5bx10})[_0x36af[83]](function(_0xcc5bxe){if(_0xcc5bx17[_0x36af[71]]&& _0xcc5bxe[_0x36af[71]]){_0xcc5bxb= _0x36af[72]+ _0xcc5bx17[_0x36af[74]](_0x36af[73])+ _0x36af[75];_0xcc5bxb+= _0x36af[76]+ _0xcc5bxe[_0x36af[74]](_0x36af[77])+ _0x36af[78]}else {if(_0xcc5bx17[_0x36af[71]]){_0xcc5bxb= _0x36af[79]+ _0xcc5bx17[_0x36af[74]](_0x36af[73])+ _0x36af[75]}else {_0xcc5bxb= _0x36af[80]}};console[_0x36af[82]](_0x36af[81],_0xcc5bxb);return _0xcc5bxb});case _0x36af[26]:;case _0x36af[20]:return Promise[_0x36af[102]]([])[_0x36af[83]](function(){return null});default:return Promise[_0x36af[102]]([])[_0x36af[83]](function(){return null})};break;default:return Promise[_0x36af[102]]([])[_0x36af[83]](function(){return null})}}};exports[_0x36af[105]]= function(_0xcc5bx18){return function(_0xcc5bx19,_0xcc5bx1a){var _0xcc5bx9=getTable(_0xcc5bx1a[_0x36af[106]]);return _0xcc5bx9[_0x36af[164]]()[_0x36af[83]](function(_0xcc5bx1b){var _0xcc5bx1c=_[_0x36af[107]](_0xcc5bx1b);var _0xcc5bx1d=[],_0xcc5bx1e=[],_0xcc5bx1f=[];_[_0x36af[88]](_0xcc5bx1a.Fields,function(_0xcc5bx20){if(!_0xcc5bx20[_0x36af[108]]&& !_0xcc5bx20[_0x36af[109]]){_0xcc5bx20[_0x36af[110]]= _0x36af[111]+ _0xcc5bx20[_0x36af[110]]+ _0x36af[111]};var _0xcc5bx21=_0x36af[68];if(_0xcc5bx20[_0x36af[112]]){switch(_0xcc5bx20[_0x36af[112]]){case _0x36af[115]:_0xcc5bx21= util[_0x36af[114]](_0x36af[113],_0xcc5bx20[_0x36af[110]]);break;case _0x36af[117]:_0xcc5bx21= util[_0x36af[114]](_0x36af[116],_0xcc5bx20[_0x36af[110]],_0xcc5bx20[_0x36af[110]]);break;case _0x36af[119]:_0xcc5bx21= util[_0x36af[114]](_0x36af[118],_0xcc5bx20[_0x36af[110]],_0xcc5bx20[_0x36af[110]]);break;default:_0xcc5bx21= util[_0x36af[114]](_0x36af[120],_0xcc5bx20[_0x36af[112]],_0xcc5bx20[_0x36af[110]])}}else {_0xcc5bx21= _0xcc5bx20[_0x36af[110]]};if(_0xcc5bx21[_0x36af[122]](_0x36af[121])=== 0){_0xcc5bx21= util[_0x36af[114]](_0x36af[123],_0xcc5bx21)};if(_0xcc5bx20[_0x36af[114]]){switch(_0xcc5bx20[_0x36af[114]]){case _0x36af[125]:_0xcc5bx21= util[_0x36af[114]](_0x36af[124],_0xcc5bx20[_0x36af[114]],_0xcc5bx21);break;default:_0xcc5bx21= util[_0x36af[114]](_0x36af[120],_0xcc5bx20[_0x36af[114]],_0xcc5bx21)}};_0xcc5bx1d[_0x36af[128]](util[_0x36af[114]](_0x36af[126],_0xcc5bx21,_0xcc5bx20[_0x36af[127]]));if(_0xcc5bx20[_0x36af[129]]){_0xcc5bx1e[_0x36af[128]](_0xcc5bx21)};if(_0xcc5bx20[_0x36af[130]]){_0xcc5bx1f[_0x36af[128]](util[_0x36af[114]](_0x36af[131],_0xcc5bx21,_0xcc5bx20[_0x36af[130]]))}});var _0xcc5bx22=_0xcc5bx1a[_0x36af[132]]?getConditions(JSON[_0x36af[134]](_0xcc5bx1a[_0x36af[132]])[_0x36af[133]],_0xcc5bx1c):_0x36af[135];var _0xcc5bx23=_0x36af[136];_0xcc5bx23+= _0x36af[137]+ _0xcc5bx1d[_0x36af[74]](_0x36af[73]);switch(_0xcc5bx1a[_0x36af[106]]){case _0x36af[13]:_0xcc5bx1a[_0x36af[106]]= _0xcc5bx1a[_0x36af[106]][_0x36af[70]](_0x36af[69],_0x36af[68]);break;default:};_0xcc5bx23+= _0x36af[138]+ _0xcc5bx1a[_0x36af[106]];_0xcc5bx23+= _0xcc5bx22!== _0x36af[135]?_0x36af[139]+ _0xcc5bx22:_0x36af[68];var _0xcc5bx24,_0xcc5bx25,_0xcc5bx26,_0xcc5bx27;var _0xcc5bx28=[];if(_0xcc5bx18){_[_0x36af[149]](_0xcc5bx18,function(_0xcc5bx29,_0xcc5bx2a){switch(_0xcc5bx2a){case _0x36af[140]:_0xcc5bx24= _0xcc5bx29;break;case _0x36af[141]:_0xcc5bx25= _0xcc5bx29;break;case _0x36af[142]:_0xcc5bx26= _0xcc5bx29;break;case _0x36af[143]:_0xcc5bx27= _0xcc5bx29;break;case _0x36af[144]:;case _0x36af[145]:break;default:var _0xcc5bx2b=_[_0x36af[146]](_0xcc5bx1a.Fields,{alias:_0xcc5bx2a});if(_0xcc5bx2b){_0xcc5bx28[_0x36af[128]](_0xcc5bx2b[_0x36af[110]]+ _0x36af[147]+ _0xcc5bx29+ _0x36af[148])}else {_0xcc5bx28[_0x36af[128]](_0xcc5bx2a+ _0x36af[147]+ _0xcc5bx29+ _0x36af[148])}}})};var _0xcc5bx2c=_0x36af[150];console[_0x36af[82]](_0xcc5bx24,_0xcc5bx25,_0xcc5bx26,_0xcc5bx27);if(_0xcc5bx24&& _0xcc5bx25){if(_0xcc5bx24=== _0xcc5bx25){if(_0xcc5bx26|| _0xcc5bx27){console[_0x36af[82]](_0xcc5bx24,_0xcc5bx25,_0xcc5bx26,_0xcc5bx27);_0xcc5bx28[_0x36af[128]](util[_0x36af[114]](_0x36af[151],_0xcc5bx2c,_0xcc5bx24+ (_0xcc5bx26?_0x36af[137]+ _0xcc5bx26:_0x36af[152]),_0xcc5bx25+ (_0xcc5bx27?_0x36af[137]+ _0xcc5bx27:_0x36af[153])))}else {_0xcc5bx28[_0x36af[128]](util[_0x36af[114]](_0x36af[154],_0xcc5bx2c,_0xcc5bx24))}}else {_0xcc5bx28[_0x36af[128]](util[_0x36af[114]](_0x36af[151],_0xcc5bx2c,_0xcc5bx24+ (_0xcc5bx26?_0x36af[137]+ _0xcc5bx26:_0x36af[152]),_0xcc5bx25+ (_0xcc5bx27?_0x36af[137]+ _0xcc5bx27:_0x36af[153])))}}else {if(_0xcc5bx24){_0xcc5bx28[_0x36af[128]](util[_0x36af[114]](_0x36af[155],_0xcc5bx2c,_0xcc5bx24+ (_0xcc5bx26?_0x36af[137]+ _0xcc5bx26:_0x36af[152])))}else {if(_0xcc5bx25){_0xcc5bx28[_0x36af[128]](util[_0x36af[114]](_0x36af[156],_0xcc5bx2c,_0xcc5bx25+ (_0xcc5bx27?_0x36af[137]+ _0xcc5bx27:_0x36af[153])))}}};if(_0xcc5bx28[_0x36af[71]]){_0xcc5bx23+= ((_0xcc5bx22!== _0x36af[135])?_0x36af[157]:_0x36af[139])+ _0xcc5bx28[_0x36af[74]](_0x36af[157])};if(_0xcc5bx19){if(_0xcc5bx19=== _0x36af[80]){console[_0x36af[82]](_0x36af[158]);console[_0x36af[82]](_0x36af[159]);console[_0x36af[82]](_0x36af[160]);return _0x36af[161]};_0xcc5bx23+= ((_0xcc5bx22!== _0x36af[135]|| _0xcc5bx28[_0x36af[71]])?_0x36af[157]:_0x36af[139])+ _0xcc5bx19};_0xcc5bx23+= _0xcc5bx1e[_0x36af[71]]?_0x36af[162]+ _0xcc5bx1e[_0x36af[74]](_0x36af[73]):_0x36af[68];_0xcc5bx23+= _0xcc5bx1f[_0x36af[71]]?_0x36af[163]+ _0xcc5bx1f[_0x36af[74]](_0x36af[73]):_0x36af[68];console[_0x36af[82]](_0x36af[158]);console[_0x36af[82]](_0xcc5bx23);console[_0x36af[82]](_0x36af[160]);return _0xcc5bx23})}};exports[_0x36af[165]]= function(){return function(_0xcc5bx18){if(_0xcc5bx18){var _0xcc5bx2d=_0x36af[68];switch(_0xcc5bx18){case _0x36af[161]:_0xcc5bx2d= _0x36af[166];break;default:_0xcc5bx2d= sequelize[_0x36af[168]](_0xcc5bx18,{type:sequelize[_0x36af[167]][_0x36af[136]]})};return _0xcc5bx2d};return _0xcc5bx18}};function getConditions(_0xcc5bx2f,_0xcc5bx1b){if(!_0xcc5bx2f){return _0x36af[135]};for(var _0xcc5bx30=_0x36af[169],_0xcc5bx31=0;_0xcc5bx31< _0xcc5bx2f[_0x36af[170]][_0x36af[71]];_0xcc5bx31++){_0xcc5bx31> 0&& (_0xcc5bx30+= _0x36af[137]+ _0xcc5bx2f[_0x36af[171]]+ _0x36af[137]);if(_0xcc5bx2f[_0x36af[170]][_0xcc5bx31][_0x36af[133]]){_0xcc5bx30+= getConditions(_0xcc5bx2f[_0x36af[170]][_0xcc5bx31][_0x36af[133]],_0xcc5bx1b)}else {_0xcc5bx30+= _[_0x36af[172]](_0xcc5bx1b,_0xcc5bx2f[_0x36af[170]][_0xcc5bx31][_0x36af[110]])?_0x36af[111]+ _0xcc5bx2f[_0x36af[170]][_0xcc5bx31][_0x36af[110]]+ _0x36af[111]:_0xcc5bx2f[_0x36af[170]][_0xcc5bx31][_0x36af[110]];switch(_0xcc5bx2f[_0x36af[170]][_0xcc5bx31][_0x36af[174]]){case _0x36af[173]:;case _0x36af[175]:_0xcc5bx30+= _0x36af[137]+ _0xcc5bx2f[_0x36af[170]][_0xcc5bx31][_0x36af[174]];break;case _0x36af[177]:_0xcc5bx30+= _0x36af[176];break;case _0x36af[179]:_0xcc5bx30+= _0x36af[178];break;default:_0xcc5bx30+= _0x36af[137]+ _0xcc5bx2f[_0x36af[170]][_0xcc5bx31][_0x36af[174]]+ _0x36af[137]+ _0xcc5bx2f[_0x36af[170]][_0xcc5bx31][_0x36af[180]]+ _0x36af[68]}}};return _0xcc5bx30+ _0x36af[75]} \ No newline at end of file diff --git a/server/utils/report_extraction.js b/server/utils/report_extraction.js index 0f3a172..fd88f99 100644 --- a/server/utils/report_extraction.js +++ b/server/utils/report_extraction.js @@ -1,299 +1 @@ -'use strict'; - -var csv = require('to-csv'); -var PdfMake = require('pdfmake'); -var _ = require('lodash'); -var util = require('util'); -var ExtractedReport = require('../models').ExtractedReport; -var License = require('../models').License; -var Setting = require('../models').Setting; -var sequelize = require('../models').sequelize; -var fs = require('fs'); -var moment = require('moment'); -var Promise = require('bluebird'); -var base64 = Promise.promisify(require('file-base64').encode); -var sr = require('simple-random'); -var path = require('path'); -var config = require('../config/environment'); -var reportBuildUtils = require('./report_build'); -var license = require('../config/license/license.service'); - -var fonts = { - Roboto: { - normal: path.join(config.fonts, 'Roboto-Regular.ttf'), - bold: path.join(config.fonts, 'Roboto-Medium.ttf'), - italics: path.join(config.fonts, 'Roboto-Italic.ttf'), - bolditalics: path.join(config.fonts, 'Roboto-Italic.ttf') - } -}; - -process.on('message', function(data) { - if (data !== 'sticky:balance') { - general(data.report, data.query, data.extractedId, data.type.toLowerCase(), data.user) - } -}); - -function general(report, query, extractedId, type, user) { - // console.log('--general function, calling extract function...'); - extract(report, query, extractedId, type, user); -} - -function extract(report, dataQuery, extractedId, type, user) { - // console.log('--extract function, building query...'); - var _license, _settings; - return License - .findById(1) - .then(function(myLicense) { - _license = myLicense; - return Setting - .findById(1); - }) - .then(function(settings) { - _settings = settings; - return report.table; - }) - .then(reportBuildUtils.buildFilter(user)) - .then(function(filter) { - return [filter, report]; - }) - .spread(reportBuildUtils.buildQuery(dataQuery)) - .then(reportBuildUtils.checkQuery()) - .then(function(res) { - if (res) { - if (_.isArray(res)) { - if (res.length) { - _.forEach(res, function(row) { - _.forOwn(row, function(property, key) { - if (property instanceof Date) { - row[key] = moment(property).format("YYYY-MM-DD HH:mm:ss").toString(); - } - }); - }); - // console.log('--report extracted, creating output as: ' + type); - switch (type) { - case 'pdf': - var myLicense = _license ? JSON.parse(license.decrypt(_license.license, _settings.data1)) : null; - var imagePath = (_settings && !_settings.defaultLoginLogo && _settings.loginLogo && myLicense && myLicense.custom) ? path.join(config.root, 'server', 'files', 'images', _settings.loginLogo) : - path.join(config.root, 'server', 'files', 'images', 'default', 'logo-big-pdf.png') - return base64(imagePath) - .then(function(base64String) { - var extension = imagePath.split('.').pop(); - return createPdf(res, report, dataQuery, extractedId, base64String, extension); - }) - case 'csv': - return createCsv(res, report, dataQuery, extractedId); - default: - return createCsv(res, report, dataQuery, extractedId); - } - } else { - return updateExtracted(extractedId, null, 'empty'); - } - } else { - return updateExtracted(extractedId, null, res); - } - } else { - // console.log('--error executing the report query'); - return updateExtracted(extractedId, null, 'query extraction error'); - - } - }) - .catch(function(err) { - console.log(err); - return updateExtracted(extractedId, null, 'query error'); - }); -} - -function createPdf(res, report, dataQuery, id, logo, extension) { - switch (extension) { - case 'jpg': - extension = 'jpeg'; - break; - default: - } - // console.log('--pdf function, creating pdf output...'); - var filename = sr({ - length: 20, - prefix: "report_" + report.name + '_', - suffix: ".pdf" - }); - var tableHeader = []; - // width = 100 / report.Fields.length, - // widths = []; - _.forEach(report.Fields, function(elem) { - tableHeader.push({ - text: String(elem.alias), - style: 'tableHeader' - }); - // widths.push(width + '%'); - }); - // console.log(widths); - var tableBody = [tableHeader]; - _.forEach(res, function(elem) { - var row = []; - _.forOwn(elem, function(value, key) { - row.push(value ? String(value) : ''); - }); - tableBody.push(row); - }); - - var headerColumns = [{ - text: report.name, - style: 'header', - }]; - if (report.description) { - headerColumns.push({ - text: report.description || '', - color: '#828682', - margin: [0, 0, 0, 5] - }); - } - if (dataQuery.startDate) { - headerColumns.push({ - text: [{ - text: 'From: ', - style: 'label' - }, - moment(dataQuery.startDate).startOf('day').format("YYYY-MM-DD HH:mm").toString(), { - text: ' To: ', - style: 'label' - }, - moment(dataQuery.endDate || dataQuery.startDate).endOf('day').format("YYYY-MM-DD HH:mm").toString() - ] - }); - } - var content = []; - content.push({ - style: 'tableExample', - table: { - headerRows: 1, - dontBreakRows: true, - // widths: widths, - // keepWithHeaderRows: 1, - // dontBreakRows: true, - body: tableBody, - - } - }); - var pdfContent = { - pageOrientation: 'landscape', - pageMargins: [15, 90, 15, 25], - header: function() { - return { - margin: [15, 15, 0, 0], - columns: [{ - table: { - widths: [100, '*'], - body: [ - [{ - image: 'data:image/' + extension + ';base64,' + logo, - fit: [100, 60] - }, - headerColumns - ] - ] - }, - layout: 'noBorders' - }] - }; - }, - content: content, - footer: function(currentPage, pageCount) { - return { - columns: [{ - text: currentPage.toString() + ' of ' + pageCount, - alignment: 'center' - }] - } - }, - styles: { - header: { - fontSize: 18, - bold: true, - margin: [0, 0, 0, 5] - }, - tableExample: { - margin: [0, 0, 0, 5], - fontSize: 8, - }, - tableHeader: { - bold: true, - fontSize: 8, - color: 'black', - wordWrap: 'break-word' - }, - label: { - bold: true, - color: 'black' - } - } - }; - var printer = new PdfMake(fonts); - var pdfDoc = printer.createPdfKitDocument(pdfContent); - if (pdfDoc) { - // pdfDoc is a stream so you can pipe it to the file system - var writeStream = fs.createWriteStream(config.reports + filename); - writeStream.on('error', function() { - // console.log('--pdf write error'); - return updateExtracted(id, null, 'pdf write error') - }); - writeStream.on('finish', function() { - // console.log('--pdf write finished'); - return updateExtracted(id, filename, 'completed') - }); - pdfDoc.pipe(writeStream); - pdfDoc.end(); - } else { - // console.log('--pdf creation error'); - return updateExtracted(id, null, 'pdf creation error') - } -} - -function createCsv(res, report, dataQuery, id) { - // console.log(res); - // console.log('--csv function, creating pdf output...'); - var filename = sr({ - length: 20, - prefix: "report_" + report.name + '_', - suffix: ".csv" - }); - var csv_report = csv(res); - if (csv_report) { - fs.writeFile(config.reports + filename, csv_report, function(err) { - if (err) { - // console.log('--csv write error'); - console.log(err); - return updateExtracted(id, null, 'csv write error') - } else { - // console.log('--csv write completed'); - return updateExtracted(id, filename, 'completed') - } - }); - } else { - // console.log('--csv creation error'); - return updateExtracted(id, null, 'csv creation error') - } -} - -function updateExtracted(id, filename, status) { - // console.log('--updating the extracted report db row..'); - return ExtractedReport.update({ - status: status, - savename: filename - }, { - where: { - id: id - } - }) - .then(function() { - console.log('--Finished extracting report'); - }) - .catch(function(err) { - console.log('--Finished extracting report with error : ' + err); - }) - .finally(function() { - process.send({ - message: 'finished', - status: status - }); - }); -} +var _0x85ae=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x74\x6F\x2D\x63\x73\x76","\x70\x64\x66\x6D\x61\x6B\x65","\x6C\x6F\x64\x61\x73\x68","\x75\x74\x69\x6C","\x45\x78\x74\x72\x61\x63\x74\x65\x64\x52\x65\x70\x6F\x72\x74","\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x4C\x69\x63\x65\x6E\x73\x65","\x53\x65\x74\x74\x69\x6E\x67","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x66\x73","\x6D\x6F\x6D\x65\x6E\x74","\x62\x6C\x75\x65\x62\x69\x72\x64","\x65\x6E\x63\x6F\x64\x65","\x66\x69\x6C\x65\x2D\x62\x61\x73\x65\x36\x34","\x70\x72\x6F\x6D\x69\x73\x69\x66\x79","\x73\x69\x6D\x70\x6C\x65\x2D\x72\x61\x6E\x64\x6F\x6D","\x70\x61\x74\x68","\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x2E\x2F\x72\x65\x70\x6F\x72\x74\x5F\x62\x75\x69\x6C\x64","\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2F\x6C\x69\x63\x65\x6E\x73\x65\x2E\x73\x65\x72\x76\x69\x63\x65","\x66\x6F\x6E\x74\x73","\x52\x6F\x62\x6F\x74\x6F\x2D\x52\x65\x67\x75\x6C\x61\x72\x2E\x74\x74\x66","\x6A\x6F\x69\x6E","\x52\x6F\x62\x6F\x74\x6F\x2D\x4D\x65\x64\x69\x75\x6D\x2E\x74\x74\x66","\x52\x6F\x62\x6F\x74\x6F\x2D\x49\x74\x61\x6C\x69\x63\x2E\x74\x74\x66","\x6D\x65\x73\x73\x61\x67\x65","\x73\x74\x69\x63\x6B\x79\x3A\x62\x61\x6C\x61\x6E\x63\x65","\x72\x65\x70\x6F\x72\x74","\x71\x75\x65\x72\x79","\x65\x78\x74\x72\x61\x63\x74\x65\x64\x49\x64","\x74\x6F\x4C\x6F\x77\x65\x72\x43\x61\x73\x65","\x74\x79\x70\x65","\x75\x73\x65\x72","\x6F\x6E","\x6C\x6F\x67","\x71\x75\x65\x72\x79\x20\x65\x72\x72\x6F\x72","\x63\x61\x74\x63\x68","\x69\x73\x41\x72\x72\x61\x79","\x6C\x65\x6E\x67\x74\x68","\x59\x59\x59\x59\x2D\x4D\x4D\x2D\x44\x44\x20\x48\x48\x3A\x6D\x6D\x3A\x73\x73","\x66\x6F\x72\x6D\x61\x74","\x66\x6F\x72\x4F\x77\x6E","\x66\x6F\x72\x45\x61\x63\x68","\x6C\x69\x63\x65\x6E\x73\x65","\x64\x61\x74\x61\x31","\x64\x65\x63\x72\x79\x70\x74","\x70\x61\x72\x73\x65","\x64\x65\x66\x61\x75\x6C\x74\x4C\x6F\x67\x69\x6E\x4C\x6F\x67\x6F","\x6C\x6F\x67\x69\x6E\x4C\x6F\x67\x6F","\x63\x75\x73\x74\x6F\x6D","\x72\x6F\x6F\x74","\x73\x65\x72\x76\x65\x72","\x66\x69\x6C\x65\x73","\x69\x6D\x61\x67\x65\x73","\x64\x65\x66\x61\x75\x6C\x74","\x6C\x6F\x67\x6F\x2D\x62\x69\x67\x2D\x70\x64\x66\x2E\x70\x6E\x67","\x70\x6F\x70","\x2E","\x73\x70\x6C\x69\x74","\x74\x68\x65\x6E","\x70\x64\x66","\x63\x73\x76","\x65\x6D\x70\x74\x79","\x71\x75\x65\x72\x79\x20\x65\x78\x74\x72\x61\x63\x74\x69\x6F\x6E\x20\x65\x72\x72\x6F\x72","\x63\x68\x65\x63\x6B\x51\x75\x65\x72\x79","\x62\x75\x69\x6C\x64\x51\x75\x65\x72\x79","\x73\x70\x72\x65\x61\x64","\x62\x75\x69\x6C\x64\x46\x69\x6C\x74\x65\x72","\x74\x61\x62\x6C\x65","\x66\x69\x6E\x64\x42\x79\x49\x64","\x6A\x70\x65\x67","\x6A\x70\x67","\x72\x65\x70\x6F\x72\x74\x5F","\x6E\x61\x6D\x65","\x5F","\x2E\x70\x64\x66","\x61\x6C\x69\x61\x73","\x74\x61\x62\x6C\x65\x48\x65\x61\x64\x65\x72","\x70\x75\x73\x68","","\x68\x65\x61\x64\x65\x72","\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E","\x23\x38\x32\x38\x36\x38\x32","\x73\x74\x61\x72\x74\x44\x61\x74\x65","\x46\x72\x6F\x6D\x3A\x20","\x6C\x61\x62\x65\x6C","\x59\x59\x59\x59\x2D\x4D\x4D\x2D\x44\x44\x20\x48\x48\x3A\x6D\x6D","\x64\x61\x79","\x73\x74\x61\x72\x74\x4F\x66","\x20\x20\x54\x6F\x3A\x20","\x65\x6E\x64\x4F\x66","\x65\x6E\x64\x44\x61\x74\x65","\x74\x61\x62\x6C\x65\x45\x78\x61\x6D\x70\x6C\x65","\x6C\x61\x6E\x64\x73\x63\x61\x70\x65","\x2A","\x64\x61\x74\x61\x3A\x69\x6D\x61\x67\x65\x2F","\x3B\x62\x61\x73\x65\x36\x34\x2C","\x6E\x6F\x42\x6F\x72\x64\x65\x72\x73","\x20\x6F\x66\x20","\x63\x65\x6E\x74\x65\x72","\x62\x6C\x61\x63\x6B","\x62\x72\x65\x61\x6B\x2D\x77\x6F\x72\x64","\x63\x72\x65\x61\x74\x65\x50\x64\x66\x4B\x69\x74\x44\x6F\x63\x75\x6D\x65\x6E\x74","\x72\x65\x70\x6F\x72\x74\x73","\x63\x72\x65\x61\x74\x65\x57\x72\x69\x74\x65\x53\x74\x72\x65\x61\x6D","\x65\x72\x72\x6F\x72","\x70\x64\x66\x20\x77\x72\x69\x74\x65\x20\x65\x72\x72\x6F\x72","\x66\x69\x6E\x69\x73\x68","\x63\x6F\x6D\x70\x6C\x65\x74\x65\x64","\x70\x69\x70\x65","\x65\x6E\x64","\x70\x64\x66\x20\x63\x72\x65\x61\x74\x69\x6F\x6E\x20\x65\x72\x72\x6F\x72","\x2E\x63\x73\x76","\x63\x73\x76\x20\x77\x72\x69\x74\x65\x20\x65\x72\x72\x6F\x72","\x77\x72\x69\x74\x65\x46\x69\x6C\x65","\x63\x73\x76\x20\x63\x72\x65\x61\x74\x69\x6F\x6E\x20\x65\x72\x72\x6F\x72","\x66\x69\x6E\x69\x73\x68\x65\x64","\x73\x65\x6E\x64","\x66\x69\x6E\x61\x6C\x6C\x79","\x2D\x2D\x46\x69\x6E\x69\x73\x68\x65\x64\x20\x65\x78\x74\x72\x61\x63\x74\x69\x6E\x67\x20\x72\x65\x70\x6F\x72\x74\x20\x77\x69\x74\x68\x20\x65\x72\x72\x6F\x72\x20\x3A\x20","\x2D\x2D\x46\x69\x6E\x69\x73\x68\x65\x64\x20\x65\x78\x74\x72\x61\x63\x74\x69\x6E\x67\x20\x72\x65\x70\x6F\x72\x74","\x75\x70\x64\x61\x74\x65"];_0x85ae[0];var csv=require(_0x85ae[1]);var PdfMake=require(_0x85ae[2]);var _=require(_0x85ae[3]);var util=require(_0x85ae[4]);var ExtractedReport=require(_0x85ae[6])[_0x85ae[5]];var License=require(_0x85ae[6])[_0x85ae[7]];var Setting=require(_0x85ae[6])[_0x85ae[8]];var sequelize=require(_0x85ae[6])[_0x85ae[9]];var fs=require(_0x85ae[10]);var moment=require(_0x85ae[11]);var Promise=require(_0x85ae[12]);var base64=Promise[_0x85ae[15]](require(_0x85ae[14])[_0x85ae[13]]);var sr=require(_0x85ae[16]);var path=require(_0x85ae[17]);var config=require(_0x85ae[18]);var reportBuildUtils=require(_0x85ae[19]);var license=require(_0x85ae[20]);var fonts={Roboto:{normal:path[_0x85ae[23]](config[_0x85ae[21]],_0x85ae[22]),bold:path[_0x85ae[23]](config[_0x85ae[21]],_0x85ae[24]),italics:path[_0x85ae[23]](config[_0x85ae[21]],_0x85ae[25]),bolditalics:path[_0x85ae[23]](config[_0x85ae[21]],_0x85ae[25])}};process[_0x85ae[34]](_0x85ae[26],function(_0xeb2fx13){if(_0xeb2fx13!== _0x85ae[27]){general(_0xeb2fx13[_0x85ae[28]],_0xeb2fx13[_0x85ae[29]],_0xeb2fx13[_0x85ae[30]],_0xeb2fx13[_0x85ae[32]][_0x85ae[31]](),_0xeb2fx13[_0x85ae[33]])}});function general(_0xeb2fx15,_0xeb2fx16,_0xeb2fx17,_0xeb2fx18,_0xeb2fx19){extract(_0xeb2fx15,_0xeb2fx16,_0xeb2fx17,_0xeb2fx18,_0xeb2fx19)}function extract(_0xeb2fx15,_0xeb2fx1b,_0xeb2fx17,_0xeb2fx18,_0xeb2fx19){var _0xeb2fx1c,_0xeb2fx1d;return License[_0x85ae[70]](1)[_0x85ae[60]](function(_0xeb2fx23){_0xeb2fx1c= _0xeb2fx23;return Setting[_0x85ae[70]](1)})[_0x85ae[60]](function(_0xeb2fx28){_0xeb2fx1d= _0xeb2fx28;return _0xeb2fx15[_0x85ae[69]]})[_0x85ae[60]](reportBuildUtils[_0x85ae[68]](_0xeb2fx19))[_0x85ae[60]](function(_0xeb2fx27){return [_0xeb2fx27,_0xeb2fx15]})[_0x85ae[67]](reportBuildUtils[_0x85ae[66]](_0xeb2fx1b))[_0x85ae[60]](reportBuildUtils[_0x85ae[65]]())[_0x85ae[60]](function(_0xeb2fx1f){if(_0xeb2fx1f){if(_[_0x85ae[38]](_0xeb2fx1f)){if(_0xeb2fx1f[_0x85ae[39]]){_[_0x85ae[43]](_0xeb2fx1f,function(_0xeb2fx20){_[_0x85ae[42]](_0xeb2fx20,function(_0xeb2fx21,_0xeb2fx22){if(_0xeb2fx21 instanceof Date){_0xeb2fx20[_0xeb2fx22]= moment(_0xeb2fx21)[_0x85ae[41]](_0x85ae[40]).toString()}})});switch(_0xeb2fx18){case _0x85ae[61]:var _0xeb2fx23=_0xeb2fx1c?JSON[_0x85ae[47]](license[_0x85ae[46]](_0xeb2fx1c[_0x85ae[44]],_0xeb2fx1d[_0x85ae[45]])):null;var _0xeb2fx24=(_0xeb2fx1d&& !_0xeb2fx1d[_0x85ae[48]]&& _0xeb2fx1d[_0x85ae[49]]&& _0xeb2fx23&& _0xeb2fx23[_0x85ae[50]])?path[_0x85ae[23]](config[_0x85ae[51]],_0x85ae[52],_0x85ae[53],_0x85ae[54],_0xeb2fx1d[_0x85ae[49]]):path[_0x85ae[23]](config[_0x85ae[51]],_0x85ae[52],_0x85ae[53],_0x85ae[54],_0x85ae[55],_0x85ae[56]);return base64(_0xeb2fx24)[_0x85ae[60]](function(_0xeb2fx25){var _0xeb2fx26=_0xeb2fx24[_0x85ae[59]](_0x85ae[58])[_0x85ae[57]]();return createPdf(_0xeb2fx1f,_0xeb2fx15,_0xeb2fx1b,_0xeb2fx17,_0xeb2fx25,_0xeb2fx26)});case _0x85ae[62]:return createCsv(_0xeb2fx1f,_0xeb2fx15,_0xeb2fx1b,_0xeb2fx17);default:return createCsv(_0xeb2fx1f,_0xeb2fx15,_0xeb2fx1b,_0xeb2fx17)}}else {return updateExtracted(_0xeb2fx17,null,_0x85ae[63])}}else {return updateExtracted(_0xeb2fx17,null,_0xeb2fx1f)}}else {return updateExtracted(_0xeb2fx17,null,_0x85ae[64])}})[_0x85ae[37]](function(_0xeb2fx1e){console[_0x85ae[35]](_0xeb2fx1e);return updateExtracted(_0xeb2fx17,null,_0x85ae[36])})}function createPdf(_0xeb2fx1f,_0xeb2fx15,_0xeb2fx1b,_0xeb2fx2a,_0xeb2fx2b,_0xeb2fx26){switch(_0xeb2fx26){case _0x85ae[72]:_0xeb2fx26= _0x85ae[71];break;default:};var _0xeb2fx2c=sr({length:20,prefix:_0x85ae[73]+ _0xeb2fx15[_0x85ae[74]]+ _0x85ae[75],suffix:_0x85ae[76]});var _0xeb2fx2d=[];_[_0x85ae[43]](_0xeb2fx15.Fields,function(_0xeb2fx2e){_0xeb2fx2d[_0x85ae[79]]({text:String(_0xeb2fx2e[_0x85ae[77]]),style:_0x85ae[78]})});var _0xeb2fx2f=[_0xeb2fx2d];_[_0x85ae[43]](_0xeb2fx1f,function(_0xeb2fx2e){var _0xeb2fx20=[];_[_0x85ae[42]](_0xeb2fx2e,function(_0xeb2fx30,_0xeb2fx22){_0xeb2fx20[_0x85ae[79]](_0xeb2fx30?String(_0xeb2fx30):_0x85ae[80])});_0xeb2fx2f[_0x85ae[79]](_0xeb2fx20)});var _0xeb2fx31=[{text:_0xeb2fx15[_0x85ae[74]],style:_0x85ae[81]}];if(_0xeb2fx15[_0x85ae[82]]){_0xeb2fx31[_0x85ae[79]]({text:_0xeb2fx15[_0x85ae[82]]|| _0x85ae[80],color:_0x85ae[83],margin:[0,0,0,5]})};if(_0xeb2fx1b[_0x85ae[84]]){_0xeb2fx31[_0x85ae[79]]({text:[{text:_0x85ae[85],style:_0x85ae[86]},moment(_0xeb2fx1b[_0x85ae[84]])[_0x85ae[89]](_0x85ae[88])[_0x85ae[41]](_0x85ae[87]).toString(),{text:_0x85ae[90],style:_0x85ae[86]},moment(_0xeb2fx1b[_0x85ae[92]]|| _0xeb2fx1b[_0x85ae[84]])[_0x85ae[91]](_0x85ae[88])[_0x85ae[41]](_0x85ae[87]).toString()]})};var _0xeb2fx32=[];_0xeb2fx32[_0x85ae[79]]({style:_0x85ae[93],table:{headerRows:1,dontBreakRows:true,body:_0xeb2fx2f}});var _0xeb2fx33={pageOrientation:_0x85ae[94],pageMargins:[15,90,15,25],header:function(){return {margin:[15,15,0,0],columns:[{table:{widths:[100,_0x85ae[95]],body:[[{image:_0x85ae[96]+ _0xeb2fx26+ _0x85ae[97]+ _0xeb2fx2b,fit:[100,60]},_0xeb2fx31]]},layout:_0x85ae[98]}]}},content:_0xeb2fx32,footer:function(_0xeb2fx34,_0xeb2fx35){return {columns:[{text:_0xeb2fx34.toString()+ _0x85ae[99]+ _0xeb2fx35,alignment:_0x85ae[100]}]}},styles:{header:{fontSize:18,bold:true,margin:[0,0,0,5]},tableExample:{margin:[0,0,0,5],fontSize:8},tableHeader:{bold:true,fontSize:8,color:_0x85ae[101],wordWrap:_0x85ae[102]},label:{bold:true,color:_0x85ae[101]}}};var _0xeb2fx36= new PdfMake(fonts);var _0xeb2fx37=_0xeb2fx36[_0x85ae[103]](_0xeb2fx33);if(_0xeb2fx37){var _0xeb2fx38=fs[_0x85ae[105]](config[_0x85ae[104]]+ _0xeb2fx2c);_0xeb2fx38[_0x85ae[34]](_0x85ae[106],function(){return updateExtracted(_0xeb2fx2a,null,_0x85ae[107])});_0xeb2fx38[_0x85ae[34]](_0x85ae[108],function(){return updateExtracted(_0xeb2fx2a,_0xeb2fx2c,_0x85ae[109])});_0xeb2fx37[_0x85ae[110]](_0xeb2fx38);_0xeb2fx37[_0x85ae[111]]()}else {return updateExtracted(_0xeb2fx2a,null,_0x85ae[112])}}function createCsv(_0xeb2fx1f,_0xeb2fx15,_0xeb2fx1b,_0xeb2fx2a){var _0xeb2fx2c=sr({length:20,prefix:_0x85ae[73]+ _0xeb2fx15[_0x85ae[74]]+ _0x85ae[75],suffix:_0x85ae[113]});var _0xeb2fx3a=csv(_0xeb2fx1f);if(_0xeb2fx3a){fs[_0x85ae[115]](config[_0x85ae[104]]+ _0xeb2fx2c,_0xeb2fx3a,function(_0xeb2fx1e){if(_0xeb2fx1e){console[_0x85ae[35]](_0xeb2fx1e);return updateExtracted(_0xeb2fx2a,null,_0x85ae[114])}else {return updateExtracted(_0xeb2fx2a,_0xeb2fx2c,_0x85ae[109])}})}else {return updateExtracted(_0xeb2fx2a,null,_0x85ae[116])}}function updateExtracted(_0xeb2fx2a,_0xeb2fx2c,_0xeb2fx3c){return ExtractedReport[_0x85ae[122]]({status:_0xeb2fx3c,savename:_0xeb2fx2c},{where:{id:_0xeb2fx2a}})[_0x85ae[60]](function(){console[_0x85ae[35]](_0x85ae[121])})[_0x85ae[37]](function(_0xeb2fx1e){console[_0x85ae[35]](_0x85ae[120]+ _0xeb2fx1e)})[_0x85ae[119]](function(){process[_0x85ae[118]]({message:_0x85ae[117],status:_0xeb2fx3c})})} \ No newline at end of file diff --git a/server/utils/voice_extension.js b/server/utils/voice_extension.js index e027fce..36604b7 100644 --- a/server/utils/voice_extension.js +++ b/server/utils/voice_extension.js @@ -1,292 +1 @@ -'use strict'; - -var _ = require('lodash'); -var util = require('util'); -var Interval = require('../models').Interval; -var sequelize = require('../models').sequelize; -var VoiceExtension = require('../models').VoiceExtension; - -exports.createApps = createApplications; - -exports.routeUpdate = function(req, t) { - var sequelize = require('../models').sequelize; - var VoiceExtension = require('../models').VoiceExtension; - if (req.body.id) { - delete req.body.id; - } - return VoiceExtension - .update(req.body, { - where: { - id: req.params.id - }, - transaction: t - }) - .then(function(route) { - if (req.body.Applications) { - req.body.id = req.params.id; - return VoiceExtension - .destroy({ - where: { - VoiceExtensionId: req.params.id - }, - transaction: t - }); - } - }) - .then(function() { - if (req.body.Applications && Array.isArray(req.body.Applications) && req.body.Applications.length) { - return req.body; - } - }) - .then(createApplications(req.body.Applications, t)); -} - - -function createApplications(applications, t) { - var Interval = require('../models').Interval; - var VoiceExtension = require('../models').VoiceExtension; - return function(route) { - if (route) { - return Interval - .findAll() //find all existing intervals - .then(function(intervals) { - var priority = 2; - var routeDefault = { - exten: route.exten, - type: route.type, - context: route.context, - VoiceExtensionId: route.id - }; - var bulkApps = []; - var applicationLength = 7; //update in case of adding other rows in the extension - var firstRows = [], - lastRows = []; - firstRows.push(_.merge({ - app: 'Set', - appdata: util.format('CDR(type)=%s', route.type), - priority: priority - }, - routeDefault)); - priority++; - if (route.type === 'outbound') { - firstRows.push(_.merge({ - app: 'Set', - appdata: util.format('CDR(tag)=%s', route.tag || '--'), - priority: priority - }, - routeDefault)); - priority++; - } - bulkApps.push(VoiceExtension.bulkCreate(firstRows, { - transaction: t - })); - applications.forEach(function(application) { - var appIntervals = []; - var extension = []; - if (application.IntervalId) { //if the interval for the app is chosen by a list we search for the subintervals - var foundIntervals = _.filter(intervals, { - IntervalId: application.IntervalId - }); - appIntervals = foundIntervals.length ? _.map(foundIntervals, 'interval') : ['*,*,*,*']; //if the interval list has no subintervals the interval is always - var parentInterval = _.find(intervals, { - id: application.IntervalId - }); - application.interval = parentInterval ? parentInterval.name : '*,*,*,*'; - } else { //otherwise i will have the interval directly from the app, i still use an array to keep the creation logic the same - appIntervals = [application.interval]; - } - extension.push(_.merge({ - app: 'NoOP', - appdata: application.app + ' Application Start', - priority: priority - }, - routeDefault)); - priority++; - var intLength = appIntervals.length; - appIntervals.forEach(function(elem, index) { - extension.push(_.merge({ - app: 'GotoIfTime', - appdata: util.format('%s?%s,${EXTEN},%s:%s,${EXTEN},%s', elem, route.context, priority + (intLength - index), route.context, ((index + 1) < intLength) ? priority + - 1 : priority + - applicationLength), - priority: priority - }, - routeDefault)); - priority++; - }); - if (application.app.toLowerCase() === 'dial' && route.type === 'outbound' && application.appdata[1]) { - extension.push(_.merge({ - app: 'Set', - appdata: util.format('CALLERID(all)=%s', application.appdata[1]), - priority: priority - }, - routeDefault)); - } else { - extension.push(_.merge({ - app: 'NoOP', - appdata: 'Skipped CallerID Set', - priority: priority - }, - routeDefault)); - } - priority++; - if (application.app.toLowerCase() === 'dial' && route.record && route.type === 'outbound') { - extension.push(_.merge({ - app: 'MixMonitor', - appdata: '${UNIQUEID}.' + (route.recordingFormat || 'wav') + ',ab', - priority: priority - }, - routeDefault)); - } else { - extension.push(_.merge({ - app: 'NoOP', - appdata: 'Skipped MixMonitor', - priority: priority - }, - routeDefault)); - } - priority++; - if (application.app.toLowerCase() === 'queue' && application.appType !== 'custom') { - extension.push(_.merge({ - app: 'Progress', - appdata: '', - priority: priority - }, - routeDefault)); - } else { - extension.push(_.merge({ - app: 'NoOP', - appdata: 'Skipped Progress', - priority: priority - }, - routeDefault)); - } - priority++; - if (application.app.toLowerCase() === 'dial' && route.type === 'outbound') { - extension.push(_.merge({ - app: 'Set', - appdata: util.format('outboundrouteid=%d', route.id || ''), - priority: priority - }, - routeDefault)); - } else { - extension.push(_.merge({ - app: 'NoOP', - appdata: 'Skipped Outound Route Id Set', - priority: priority - }, - routeDefault)); - } - priority++; - if (application.app.toLowerCase() === 'dial' && application.appType === 'outboundDial') { - application.appdata[4] = application.appdata[4] || ''; - application.appdata[4] += (_.includes(application.appdata[4], 'x') ? '' : 'x') + (_.includes(application.appdata[4], 'X') ? '' : 'X'); - extension.push(_.merge({ - app: application.app, - appdata: util.format('SIP/%s/%s${EXTEN:%s},%s,%s,%s', application.appdata[0], application.appdata[2] || '', route.cutdigits || 0, application.appdata[3] || '', - application.appdata[4] || '', application.appdata[5] || ''), - priority: priority, - IntervalId: application.IntervalId || null, - interval: application.interval || '*,*,*,*', - isApp: true, - callerID: application.appdata[1] || null, - appType: application.appType - }, - routeDefault)); - } else if (application.app.toLowerCase() === 'dial' && application.appType === 'externalDial') { - application.appdata[3] = application.appdata[3] || ''; - application.appdata[3] += (_.includes(application.appdata[3], 'x') ? '' : 'x') + (_.includes(application.appdata[3], 'X') ? '' : 'X'); - extension.push(_.merge({ - app: application.app, - appdata: util.format('SIP/%s/%s,%s,%s,%s', application.appdata[0], application.appdata[1], application.appdata[2] || '', application.appdata[3] || '', application.appdata[ - 4] || ''), - priority: priority, - IntervalId: application.IntervalId || null, - interval: application.interval || '*,*,*,*', - isApp: true, - appType: application.appType - }, - routeDefault)); - } else if (application.app.toLowerCase() === 'dial' && application.appType === 'internalDial') { - application.appdata[2] = application.appdata[2] || ''; - application.appdata[2] += (_.includes(application.appdata[2], 'x') ? '' : 'x') + (_.includes(application.appdata[2], 'X') ? '' : 'X'); - extension.push(_.merge({ - app: application.app, - appdata: util.format('SIP/%s,%s,%s,%s', application.appdata[0], application.appdata[1] || '', application.appdata[2] || '', application.appdata[3] || ''), - priority: priority, - IntervalId: application.IntervalId || null, - interval: application.interval || '*,*,*,*', - isApp: true, - appType: application.appType - }, - routeDefault)); - } else { - if ((application.app.toLowerCase() === 'dial' || application.app.toLowerCase() === 'queue') && application.appType !== 'custom') { - var appdataIndex = application.app.toLowerCase() === 'dial' ? 2 : 1; - application.appdata[appdataIndex] = application.appdata[appdataIndex] || ''; - application.appdata[appdataIndex] += (_.includes(application.appdata[appdataIndex], 'x') ? '' : 'x') + (_.includes(application.appdata[appdataIndex], 'X') ? '' : 'X'); - } - extension.push(_.merge({ - app: application.app, - appdata: application.appdata.join(','), - priority: priority, - IntervalId: application.IntervalId, - interval: application.interval || '*,*,*,*', - isApp: true, - appType: application.appType || null - }, - routeDefault)); - } - priority++; - if (application.app.toLowerCase() === 'dial' && route.record && route.type === 'outbound') { - extension.push(_.merge({ - app: 'StopMixMonitor', - appdata: '', - priority: priority - }, - routeDefault)); - } else { - extension.push(_.merge({ - app: 'NoOP', - appdata: 'Skipped StopMixMonitor', - priority: priority - }, - routeDefault)); - } - priority++; - extension.push(_.merge({ - app: 'NoOP', - appdata: application.app + ' Application End', - priority: priority - }, - routeDefault)); - priority++; - bulkApps.push(VoiceExtension.bulkCreate(extension, { - transaction: t - })); - }); - lastRows.push(_.merge({ - app: 'NoOP', - appdata: route.type + ' call end', - priority: priority - }, - routeDefault)); - priority++; - if (route.type === 'internal' || route.type === 'outbound') { - lastRows.push(_.merge({ - app: 'Hangup', - appdata: '', - priority: priority - }, - routeDefault)); - priority++; - } - bulkApps.push(VoiceExtension.bulkCreate(lastRows, { - transaction: t - })); - return bulkApps; - }) - .all(); - } - } -} +var _0x3225=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x75\x74\x69\x6C","\x49\x6E\x74\x65\x72\x76\x61\x6C","\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x56\x6F\x69\x63\x65\x45\x78\x74\x65\x6E\x73\x69\x6F\x6E","\x63\x72\x65\x61\x74\x65\x41\x70\x70\x73","\x72\x6F\x75\x74\x65\x55\x70\x64\x61\x74\x65","\x69\x64","\x62\x6F\x64\x79","\x74\x68\x65\x6E","\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x69\x73\x41\x72\x72\x61\x79","\x6C\x65\x6E\x67\x74\x68","\x70\x61\x72\x61\x6D\x73","\x64\x65\x73\x74\x72\x6F\x79","\x75\x70\x64\x61\x74\x65","\x61\x6C\x6C","\x65\x78\x74\x65\x6E","\x74\x79\x70\x65","\x63\x6F\x6E\x74\x65\x78\x74","\x53\x65\x74","\x43\x44\x52\x28\x74\x79\x70\x65\x29\x3D\x25\x73","\x66\x6F\x72\x6D\x61\x74","\x6D\x65\x72\x67\x65","\x70\x75\x73\x68","\x6F\x75\x74\x62\x6F\x75\x6E\x64","\x43\x44\x52\x28\x74\x61\x67\x29\x3D\x25\x73","\x74\x61\x67","\x2D\x2D","\x62\x75\x6C\x6B\x43\x72\x65\x61\x74\x65","\x49\x6E\x74\x65\x72\x76\x61\x6C\x49\x64","\x66\x69\x6C\x74\x65\x72","\x69\x6E\x74\x65\x72\x76\x61\x6C","\x6D\x61\x70","\x2A\x2C\x2A\x2C\x2A\x2C\x2A","\x66\x69\x6E\x64","\x6E\x61\x6D\x65","\x4E\x6F\x4F\x50","\x61\x70\x70","\x20\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x20\x53\x74\x61\x72\x74","\x47\x6F\x74\x6F\x49\x66\x54\x69\x6D\x65","\x25\x73\x3F\x25\x73\x2C\x24\x7B\x45\x58\x54\x45\x4E\x7D\x2C\x25\x73\x3A\x25\x73\x2C\x24\x7B\x45\x58\x54\x45\x4E\x7D\x2C\x25\x73","\x66\x6F\x72\x45\x61\x63\x68","\x74\x6F\x4C\x6F\x77\x65\x72\x43\x61\x73\x65","\x64\x69\x61\x6C","\x61\x70\x70\x64\x61\x74\x61","\x43\x41\x4C\x4C\x45\x52\x49\x44\x28\x61\x6C\x6C\x29\x3D\x25\x73","\x53\x6B\x69\x70\x70\x65\x64\x20\x43\x61\x6C\x6C\x65\x72\x49\x44\x20\x53\x65\x74","\x72\x65\x63\x6F\x72\x64","\x4D\x69\x78\x4D\x6F\x6E\x69\x74\x6F\x72","\x24\x7B\x55\x4E\x49\x51\x55\x45\x49\x44\x7D\x2E","\x72\x65\x63\x6F\x72\x64\x69\x6E\x67\x46\x6F\x72\x6D\x61\x74","\x77\x61\x76","\x2C\x61\x62","\x53\x6B\x69\x70\x70\x65\x64\x20\x4D\x69\x78\x4D\x6F\x6E\x69\x74\x6F\x72","\x71\x75\x65\x75\x65","\x61\x70\x70\x54\x79\x70\x65","\x63\x75\x73\x74\x6F\x6D","\x50\x72\x6F\x67\x72\x65\x73\x73","","\x53\x6B\x69\x70\x70\x65\x64\x20\x50\x72\x6F\x67\x72\x65\x73\x73","\x6F\x75\x74\x62\x6F\x75\x6E\x64\x72\x6F\x75\x74\x65\x69\x64\x3D\x25\x64","\x53\x6B\x69\x70\x70\x65\x64\x20\x4F\x75\x74\x6F\x75\x6E\x64\x20\x52\x6F\x75\x74\x65\x20\x49\x64\x20\x53\x65\x74","\x6F\x75\x74\x62\x6F\x75\x6E\x64\x44\x69\x61\x6C","\x78","\x69\x6E\x63\x6C\x75\x64\x65\x73","\x58","\x53\x49\x50\x2F\x25\x73\x2F\x25\x73\x24\x7B\x45\x58\x54\x45\x4E\x3A\x25\x73\x7D\x2C\x25\x73\x2C\x25\x73\x2C\x25\x73","\x63\x75\x74\x64\x69\x67\x69\x74\x73","\x65\x78\x74\x65\x72\x6E\x61\x6C\x44\x69\x61\x6C","\x53\x49\x50\x2F\x25\x73\x2F\x25\x73\x2C\x25\x73\x2C\x25\x73\x2C\x25\x73","\x69\x6E\x74\x65\x72\x6E\x61\x6C\x44\x69\x61\x6C","\x53\x49\x50\x2F\x25\x73\x2C\x25\x73\x2C\x25\x73\x2C\x25\x73","\x2C","\x6A\x6F\x69\x6E","\x53\x74\x6F\x70\x4D\x69\x78\x4D\x6F\x6E\x69\x74\x6F\x72","\x53\x6B\x69\x70\x70\x65\x64\x20\x53\x74\x6F\x70\x4D\x69\x78\x4D\x6F\x6E\x69\x74\x6F\x72","\x20\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x20\x45\x6E\x64","\x20\x63\x61\x6C\x6C\x20\x65\x6E\x64","\x69\x6E\x74\x65\x72\x6E\x61\x6C","\x48\x61\x6E\x67\x75\x70","\x66\x69\x6E\x64\x41\x6C\x6C"];_0x3225[0];var _=require(_0x3225[1]);var util=require(_0x3225[2]);var Interval=require(_0x3225[4])[_0x3225[3]];var sequelize=require(_0x3225[4])[_0x3225[5]];var VoiceExtension=require(_0x3225[4])[_0x3225[6]];exports[_0x3225[7]]= createApplications;exports[_0x3225[8]]= function(_0x96bdx6,_0x96bdx7){var sequelize=require(_0x3225[4])[_0x3225[5]];var VoiceExtension=require(_0x3225[4])[_0x3225[6]];if(_0x96bdx6[_0x3225[10]][_0x3225[9]]){delete _0x96bdx6[_0x3225[10]][_0x3225[9]]};return VoiceExtension[_0x3225[17]](_0x96bdx6[_0x3225[10]],{where:{id:_0x96bdx6[_0x3225[15]][_0x3225[9]]},transaction:_0x96bdx7})[_0x3225[11]](function(_0x96bdx8){if(_0x96bdx6[_0x3225[10]][_0x3225[12]]){_0x96bdx6[_0x3225[10]][_0x3225[9]]= _0x96bdx6[_0x3225[15]][_0x3225[9]];return VoiceExtension[_0x3225[16]]({where:{VoiceExtensionId:_0x96bdx6[_0x3225[15]][_0x3225[9]]},transaction:_0x96bdx7})}})[_0x3225[11]](function(){if(_0x96bdx6[_0x3225[10]][_0x3225[12]]&& Array[_0x3225[13]](_0x96bdx6[_0x3225[10]].Applications)&& _0x96bdx6[_0x3225[10]][_0x3225[12]][_0x3225[14]]){return _0x96bdx6[_0x3225[10]]}})[_0x3225[11]](createApplications(_0x96bdx6[_0x3225[10]].Applications,_0x96bdx7))};function createApplications(_0x96bdxa,_0x96bdx7){var Interval=require(_0x3225[4])[_0x3225[3]];var VoiceExtension=require(_0x3225[4])[_0x3225[6]];return function(_0x96bdx8){if(_0x96bdx8){return Interval[_0x3225[83]]()[_0x3225[11]](function(_0x96bdxb){var _0x96bdxc=2;var _0x96bdxd={exten:_0x96bdx8[_0x3225[19]],type:_0x96bdx8[_0x3225[20]],context:_0x96bdx8[_0x3225[21]],VoiceExtensionId:_0x96bdx8[_0x3225[9]]};var _0x96bdxe=[];var _0x96bdxf=7;var _0x96bdx10=[],_0x96bdx11=[];_0x96bdx10[_0x3225[26]](_[_0x3225[25]]({app:_0x3225[22],appdata:util[_0x3225[24]](_0x3225[23],_0x96bdx8[_0x3225[20]]),priority:_0x96bdxc},_0x96bdxd));_0x96bdxc++;if(_0x96bdx8[_0x3225[20]]=== _0x3225[27]){_0x96bdx10[_0x3225[26]](_[_0x3225[25]]({app:_0x3225[22],appdata:util[_0x3225[24]](_0x3225[28],_0x96bdx8[_0x3225[29]]|| _0x3225[30]),priority:_0x96bdxc},_0x96bdxd));_0x96bdxc++};_0x96bdxe[_0x3225[26]](VoiceExtension[_0x3225[31]](_0x96bdx10,{transaction:_0x96bdx7}));_0x96bdxa[_0x3225[44]](function(_0x96bdx12){var _0x96bdx13=[];var _0x96bdx14=[];if(_0x96bdx12[_0x3225[32]]){var _0x96bdx15=_[_0x3225[33]](_0x96bdxb,{IntervalId:_0x96bdx12[_0x3225[32]]});_0x96bdx13= _0x96bdx15[_0x3225[14]]?_[_0x3225[35]](_0x96bdx15,_0x3225[34]):[_0x3225[36]];var _0x96bdx16=_[_0x3225[37]](_0x96bdxb,{id:_0x96bdx12[_0x3225[32]]});_0x96bdx12[_0x3225[34]]= _0x96bdx16?_0x96bdx16[_0x3225[38]]:_0x3225[36]}else {_0x96bdx13= [_0x96bdx12[_0x3225[34]]]};_0x96bdx14[_0x3225[26]](_[_0x3225[25]]({app:_0x3225[39],appdata:_0x96bdx12[_0x3225[40]]+ _0x3225[41],priority:_0x96bdxc},_0x96bdxd));_0x96bdxc++;var _0x96bdx17=_0x96bdx13[_0x3225[14]];_0x96bdx13[_0x3225[44]](function(_0x96bdx18,_0x96bdx19){_0x96bdx14[_0x3225[26]](_[_0x3225[25]]({app:_0x3225[42],appdata:util[_0x3225[24]](_0x3225[43],_0x96bdx18,_0x96bdx8[_0x3225[21]],_0x96bdxc+ (_0x96bdx17- _0x96bdx19),_0x96bdx8[_0x3225[21]],((_0x96bdx19+ 1)< _0x96bdx17)?_0x96bdxc+ 1:_0x96bdxc+ _0x96bdxf),priority:_0x96bdxc},_0x96bdxd));_0x96bdxc++});if(_0x96bdx12[_0x3225[40]][_0x3225[45]]()=== _0x3225[46]&& _0x96bdx8[_0x3225[20]]=== _0x3225[27]&& _0x96bdx12[_0x3225[47]][1]){_0x96bdx14[_0x3225[26]](_[_0x3225[25]]({app:_0x3225[22],appdata:util[_0x3225[24]](_0x3225[48],_0x96bdx12[_0x3225[47]][1]),priority:_0x96bdxc},_0x96bdxd))}else {_0x96bdx14[_0x3225[26]](_[_0x3225[25]]({app:_0x3225[39],appdata:_0x3225[49],priority:_0x96bdxc},_0x96bdxd))};_0x96bdxc++;if(_0x96bdx12[_0x3225[40]][_0x3225[45]]()=== _0x3225[46]&& _0x96bdx8[_0x3225[50]]&& _0x96bdx8[_0x3225[20]]=== _0x3225[27]){_0x96bdx14[_0x3225[26]](_[_0x3225[25]]({app:_0x3225[51],appdata:_0x3225[52]+ (_0x96bdx8[_0x3225[53]]|| _0x3225[54])+ _0x3225[55],priority:_0x96bdxc},_0x96bdxd))}else {_0x96bdx14[_0x3225[26]](_[_0x3225[25]]({app:_0x3225[39],appdata:_0x3225[56],priority:_0x96bdxc},_0x96bdxd))};_0x96bdxc++;if(_0x96bdx12[_0x3225[40]][_0x3225[45]]()=== _0x3225[57]&& _0x96bdx12[_0x3225[58]]!== _0x3225[59]){_0x96bdx14[_0x3225[26]](_[_0x3225[25]]({app:_0x3225[60],appdata:_0x3225[61],priority:_0x96bdxc},_0x96bdxd))}else {_0x96bdx14[_0x3225[26]](_[_0x3225[25]]({app:_0x3225[39],appdata:_0x3225[62],priority:_0x96bdxc},_0x96bdxd))};_0x96bdxc++;if(_0x96bdx12[_0x3225[40]][_0x3225[45]]()=== _0x3225[46]&& _0x96bdx8[_0x3225[20]]=== _0x3225[27]){_0x96bdx14[_0x3225[26]](_[_0x3225[25]]({app:_0x3225[22],appdata:util[_0x3225[24]](_0x3225[63],_0x96bdx8[_0x3225[9]]|| _0x3225[61]),priority:_0x96bdxc},_0x96bdxd))}else {_0x96bdx14[_0x3225[26]](_[_0x3225[25]]({app:_0x3225[39],appdata:_0x3225[64],priority:_0x96bdxc},_0x96bdxd))};_0x96bdxc++;if(_0x96bdx12[_0x3225[40]][_0x3225[45]]()=== _0x3225[46]&& _0x96bdx12[_0x3225[58]]=== _0x3225[65]){_0x96bdx12[_0x3225[47]][4]= _0x96bdx12[_0x3225[47]][4]|| _0x3225[61];_0x96bdx12[_0x3225[47]][4]+= (_[_0x3225[67]](_0x96bdx12[_0x3225[47]][4],_0x3225[66])?_0x3225[61]:_0x3225[66])+ (_[_0x3225[67]](_0x96bdx12[_0x3225[47]][4],_0x3225[68])?_0x3225[61]:_0x3225[68]);_0x96bdx14[_0x3225[26]](_[_0x3225[25]]({app:_0x96bdx12[_0x3225[40]],appdata:util[_0x3225[24]](_0x3225[69],_0x96bdx12[_0x3225[47]][0],_0x96bdx12[_0x3225[47]][2]|| _0x3225[61],_0x96bdx8[_0x3225[70]]|| 0,_0x96bdx12[_0x3225[47]][3]|| _0x3225[61],_0x96bdx12[_0x3225[47]][4]|| _0x3225[61],_0x96bdx12[_0x3225[47]][5]|| _0x3225[61]),priority:_0x96bdxc,IntervalId:_0x96bdx12[_0x3225[32]]|| null,interval:_0x96bdx12[_0x3225[34]]|| _0x3225[36],isApp:true,callerID:_0x96bdx12[_0x3225[47]][1]|| null,appType:_0x96bdx12[_0x3225[58]]},_0x96bdxd))}else {if(_0x96bdx12[_0x3225[40]][_0x3225[45]]()=== _0x3225[46]&& _0x96bdx12[_0x3225[58]]=== _0x3225[71]){_0x96bdx12[_0x3225[47]][3]= _0x96bdx12[_0x3225[47]][3]|| _0x3225[61];_0x96bdx12[_0x3225[47]][3]+= (_[_0x3225[67]](_0x96bdx12[_0x3225[47]][3],_0x3225[66])?_0x3225[61]:_0x3225[66])+ (_[_0x3225[67]](_0x96bdx12[_0x3225[47]][3],_0x3225[68])?_0x3225[61]:_0x3225[68]);_0x96bdx14[_0x3225[26]](_[_0x3225[25]]({app:_0x96bdx12[_0x3225[40]],appdata:util[_0x3225[24]](_0x3225[72],_0x96bdx12[_0x3225[47]][0],_0x96bdx12[_0x3225[47]][1],_0x96bdx12[_0x3225[47]][2]|| _0x3225[61],_0x96bdx12[_0x3225[47]][3]|| _0x3225[61],_0x96bdx12[_0x3225[47]][4]|| _0x3225[61]),priority:_0x96bdxc,IntervalId:_0x96bdx12[_0x3225[32]]|| null,interval:_0x96bdx12[_0x3225[34]]|| _0x3225[36],isApp:true,appType:_0x96bdx12[_0x3225[58]]},_0x96bdxd))}else {if(_0x96bdx12[_0x3225[40]][_0x3225[45]]()=== _0x3225[46]&& _0x96bdx12[_0x3225[58]]=== _0x3225[73]){_0x96bdx12[_0x3225[47]][2]= _0x96bdx12[_0x3225[47]][2]|| _0x3225[61];_0x96bdx12[_0x3225[47]][2]+= (_[_0x3225[67]](_0x96bdx12[_0x3225[47]][2],_0x3225[66])?_0x3225[61]:_0x3225[66])+ (_[_0x3225[67]](_0x96bdx12[_0x3225[47]][2],_0x3225[68])?_0x3225[61]:_0x3225[68]);_0x96bdx14[_0x3225[26]](_[_0x3225[25]]({app:_0x96bdx12[_0x3225[40]],appdata:util[_0x3225[24]](_0x3225[74],_0x96bdx12[_0x3225[47]][0],_0x96bdx12[_0x3225[47]][1]|| _0x3225[61],_0x96bdx12[_0x3225[47]][2]|| _0x3225[61],_0x96bdx12[_0x3225[47]][3]|| _0x3225[61]),priority:_0x96bdxc,IntervalId:_0x96bdx12[_0x3225[32]]|| null,interval:_0x96bdx12[_0x3225[34]]|| _0x3225[36],isApp:true,appType:_0x96bdx12[_0x3225[58]]},_0x96bdxd))}else {if((_0x96bdx12[_0x3225[40]][_0x3225[45]]()=== _0x3225[46]|| _0x96bdx12[_0x3225[40]][_0x3225[45]]()=== _0x3225[57])&& _0x96bdx12[_0x3225[58]]!== _0x3225[59]){var _0x96bdx1a=_0x96bdx12[_0x3225[40]][_0x3225[45]]()=== _0x3225[46]?2:1;_0x96bdx12[_0x3225[47]][_0x96bdx1a]= _0x96bdx12[_0x3225[47]][_0x96bdx1a]|| _0x3225[61];_0x96bdx12[_0x3225[47]][_0x96bdx1a]+= (_[_0x3225[67]](_0x96bdx12[_0x3225[47]][_0x96bdx1a],_0x3225[66])?_0x3225[61]:_0x3225[66])+ (_[_0x3225[67]](_0x96bdx12[_0x3225[47]][_0x96bdx1a],_0x3225[68])?_0x3225[61]:_0x3225[68])};_0x96bdx14[_0x3225[26]](_[_0x3225[25]]({app:_0x96bdx12[_0x3225[40]],appdata:_0x96bdx12[_0x3225[47]][_0x3225[76]](_0x3225[75]),priority:_0x96bdxc,IntervalId:_0x96bdx12[_0x3225[32]],interval:_0x96bdx12[_0x3225[34]]|| _0x3225[36],isApp:true,appType:_0x96bdx12[_0x3225[58]]|| null},_0x96bdxd))}}};_0x96bdxc++;if(_0x96bdx12[_0x3225[40]][_0x3225[45]]()=== _0x3225[46]&& _0x96bdx8[_0x3225[50]]&& _0x96bdx8[_0x3225[20]]=== _0x3225[27]){_0x96bdx14[_0x3225[26]](_[_0x3225[25]]({app:_0x3225[77],appdata:_0x3225[61],priority:_0x96bdxc},_0x96bdxd))}else {_0x96bdx14[_0x3225[26]](_[_0x3225[25]]({app:_0x3225[39],appdata:_0x3225[78],priority:_0x96bdxc},_0x96bdxd))};_0x96bdxc++;_0x96bdx14[_0x3225[26]](_[_0x3225[25]]({app:_0x3225[39],appdata:_0x96bdx12[_0x3225[40]]+ _0x3225[79],priority:_0x96bdxc},_0x96bdxd));_0x96bdxc++;_0x96bdxe[_0x3225[26]](VoiceExtension[_0x3225[31]](_0x96bdx14,{transaction:_0x96bdx7}))});_0x96bdx11[_0x3225[26]](_[_0x3225[25]]({app:_0x3225[39],appdata:_0x96bdx8[_0x3225[20]]+ _0x3225[80],priority:_0x96bdxc},_0x96bdxd));_0x96bdxc++;if(_0x96bdx8[_0x3225[20]]=== _0x3225[81]|| _0x96bdx8[_0x3225[20]]=== _0x3225[27]){_0x96bdx11[_0x3225[26]](_[_0x3225[25]]({app:_0x3225[82],appdata:_0x3225[61],priority:_0x96bdxc},_0x96bdxd));_0x96bdxc++};_0x96bdxe[_0x3225[26]](VoiceExtension[_0x3225[31]](_0x96bdx11,{transaction:_0x96bdx7}));return _0x96bdxe})[_0x3225[18]]()}}} \ No newline at end of file