Built motion from commit (unavailable).|2.5.19
[motion2.git] / server / api / cmHopperFinal / cmHopperFinal.controller.js
index f4de3ed..cdc6e8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd1ca=['where','filters','pick','filter','merge','count','includeAll','include','catch','show','params','keys','options','find','describe','body','uniqueid','findAll','sequelize','COUNT','noSuchContacts','literal','`state`\x20=\x203,\x201,\x20null','noAnswerContacts','`state`\x20=\x205,\x201,\x20null','`state`\x20=\x208,\x201,\x20null','congestionContacts','`state`\x20=\x2010\x20,\x201,\x20null','dropContacts','`state`\x20=\x2011\x20,\x201,\x20null','abandonedContacts','`state`\x20=\x2022,\x201,\x20null','`state`\x20=\x2019,\x201,\x20null','countContactsIvrCampaignHopperFinal','`state`\x20=\x200,\x201,\x20null','busyContacts','reCallContacts','answeringMachine','VoiceQueue','insert','into','cm_hopper','fromQuery','phone','scheduledAt','ContactId','ListId','VoiceQueueId','createdAt','updatedAt','select','field','ANY_VALUE(calleridnum)','NOW()','from','cm_hopper_final','state\x20=\x20?','toString','calleridnum\x20NOT\x20IN\x20(?)','VoiceQueueId\x20=\x20?','state\x20=\x204','group','moveContactsIvrCampaignHopperFinal','Campaign','ANY_VALUE(ListId)','ANY_VALUE(CampaignId)','CampaignId','state','calleridnum\x20IS\x20NOT\x20NULL','checkContactHopper','CmHopper','findOne','html-pdf','eml-format','request-promise','moment','bluebird','util','to-csv','ejs','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','sendStatus','status','end','json','offset','limit','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','CmHopperFinal','fieldName','type','query','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort'];(function(_0xd0a839,_0x46e8de){var _0x3fc69f=function(_0x4b2f9d){while(--_0x4b2f9d){_0xd0a839['push'](_0xd0a839['shift']());}};_0x3fc69f(++_0x46e8de);}(_0xd1ca,0x140));var _0xad1c=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0xd1ca[_0x3ab51d];return _0x29a04e;};'use strict';var pdf=require(_0xad1c('0x0'));var emlformat=require(_0xad1c('0x1'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xad1c('0x2'));var moment=require(_0xad1c('0x3'));var BPromise=require(_0xad1c('0x4'));var Mustache=require('mustache');var util=require(_0xad1c('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0xad1c('0x6'));var ejs=require(_0xad1c('0x7'));var fs=require('fs');var _=require(_0xad1c('0x8'));var squel=require('squel');var crypto=require(_0xad1c('0x9'));var jsforce=require('jsforce');var deskjs=require(_0xad1c('0xa'));var toCsv=require(_0xad1c('0x6'));var querystring=require(_0xad1c('0xb'));var Papa=require(_0xad1c('0xc'));var Redis=require(_0xad1c('0xd'));var authService=require(_0xad1c('0xe'));var qs=require(_0xad1c('0xf'));var as=require(_0xad1c('0x10'));var hardwareService=require(_0xad1c('0x11'));var logger=require(_0xad1c('0x12'))('api');var utils=require(_0xad1c('0x13'));var config=require(_0xad1c('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4615a4,_0x7494c3){_0x7494c3=_0x7494c3||0xcc;return function(_0xd5bdd7){if(_0xd5bdd7){return _0x4615a4[_0xad1c('0x15')](_0x7494c3);}return _0x4615a4[_0xad1c('0x16')](_0x7494c3)[_0xad1c('0x17')]();};}function respondWithResult(_0xeebfde,_0x4ce86e){_0x4ce86e=_0x4ce86e||0xc8;return function(_0x324030){if(_0x324030){return _0xeebfde[_0xad1c('0x16')](_0x4ce86e)[_0xad1c('0x18')](_0x324030);}};}function respondWithFilteredResult(_0x5b6015,_0x210eba){return function(_0x494b59){if(_0x494b59){var _0x4194c0=_0x494b59['count'],_0x48c651=_0x210eba[_0xad1c('0x19')],_0x2173e5=_0x210eba['offset']+_0x210eba[_0xad1c('0x1a')],_0x8420de;if(_0x2173e5>=_0x4194c0){_0x2173e5=_0x4194c0;_0x8420de=0xc8;}else{_0x8420de=0xce;}_0x5b6015[_0xad1c('0x16')](_0x8420de);return _0x5b6015['set']('Content-Range',_0x48c651+'-'+_0x2173e5+'/'+_0x4194c0)[_0xad1c('0x18')](_0x494b59);}return null;};}function patchUpdates(_0xa353d8){return function(_0x20850d){try{jsonpatch[_0xad1c('0x1b')](_0x20850d,_0xa353d8,!![]);}catch(_0x519d1b){return BPromise[_0xad1c('0x1c')](_0x519d1b);}return _0x20850d[_0xad1c('0x1d')]();};}function saveUpdates(_0xa80469,_0x51d25c){return function(_0x5e2d17){if(_0x5e2d17){return _0x5e2d17[_0xad1c('0x1e')](_0xa80469)[_0xad1c('0x1f')](function(_0x328b63){return _0x328b63;});}return null;};}function removeEntity(_0x2b23eb,_0x1008c3){return function(_0x16f940){if(_0x16f940){return _0x16f940[_0xad1c('0x20')]()['then'](function(){_0x2b23eb[_0xad1c('0x16')](0xcc)[_0xad1c('0x17')]();});}};}function handleEntityNotFound(_0x2b33ab,_0x509c13){return function(_0x42e527){if(!_0x42e527){_0x2b33ab[_0xad1c('0x15')](0x194);}return _0x42e527;};}function handleError(_0x518a14,_0x3b3bf3){_0x3b3bf3=_0x3b3bf3||0x1f4;return function(_0x58b727){logger[_0xad1c('0x21')](_0x58b727[_0xad1c('0x22')]);if(_0x58b727[_0xad1c('0x23')]){delete _0x58b727[_0xad1c('0x23')];}_0x518a14['status'](_0x3b3bf3)[_0xad1c('0x24')](_0x58b727);};}exports[_0xad1c('0x25')]=function(_0x44a938,_0x345174){var _0x30abaa={},_0x5c1203={},_0x2a26c0={'count':0x0,'rows':[]};var _0x5518e0=_[_0xad1c('0x26')](db[_0xad1c('0x27')]['rawAttributes'],function(_0x35406d){return{'name':_0x35406d[_0xad1c('0x28')],'type':_0x35406d[_0xad1c('0x29')]['key']};});_0x5c1203['model']=_[_0xad1c('0x26')](_0x5518e0,'name');_0x5c1203[_0xad1c('0x2a')]=_['keys'](_0x44a938[_0xad1c('0x2a')]);_0x5c1203['filters']=_[_0xad1c('0x2b')](_0x5c1203[_0xad1c('0x2c')],_0x5c1203[_0xad1c('0x2a')]);_0x30abaa[_0xad1c('0x2d')]=_[_0xad1c('0x2b')](_0x5c1203[_0xad1c('0x2c')],qs[_0xad1c('0x2e')](_0x44a938[_0xad1c('0x2a')][_0xad1c('0x2e')]));_0x30abaa[_0xad1c('0x2d')]=_0x30abaa['attributes'][_0xad1c('0x2f')]?_0x30abaa[_0xad1c('0x2d')]:_0x5c1203['model'];if(!_0x44a938[_0xad1c('0x2a')][_0xad1c('0x30')](_0xad1c('0x31'))){_0x30abaa['limit']=qs['limit'](_0x44a938[_0xad1c('0x2a')]['limit']);_0x30abaa[_0xad1c('0x19')]=qs[_0xad1c('0x19')](_0x44a938[_0xad1c('0x2a')][_0xad1c('0x19')]);}_0x30abaa[_0xad1c('0x32')]=qs['sort'](_0x44a938[_0xad1c('0x2a')][_0xad1c('0x33')]);_0x30abaa[_0xad1c('0x34')]=qs[_0xad1c('0x35')](_[_0xad1c('0x36')](_0x44a938['query'],_0x5c1203[_0xad1c('0x35')]),_0x5518e0);if(_0x44a938[_0xad1c('0x2a')][_0xad1c('0x37')]){_0x30abaa[_0xad1c('0x34')]=_[_0xad1c('0x38')](_0x30abaa[_0xad1c('0x34')],{'$or':_[_0xad1c('0x26')](_0x5518e0,function(_0x28c80e){if(_0x28c80e[_0xad1c('0x29')]!=='VIRTUAL'){var _0x1c44c7={};_0x1c44c7[_0x28c80e[_0xad1c('0x23')]]={'$like':'%'+_0x44a938[_0xad1c('0x2a')]['filter']+'%'};return _0x1c44c7;}})});}_0x30abaa=_[_0xad1c('0x38')]({},_0x30abaa,_0x44a938['options']);var _0x562ceb={'where':_0x30abaa[_0xad1c('0x34')]};return db[_0xad1c('0x27')][_0xad1c('0x39')](_0x562ceb)[_0xad1c('0x1f')](function(_0x36f821){_0x2a26c0[_0xad1c('0x39')]=_0x36f821;if(_0x44a938['query'][_0xad1c('0x3a')]){_0x30abaa[_0xad1c('0x3b')]=[{'all':!![]}];}return db[_0xad1c('0x27')]['findAll'](_0x30abaa);})['then'](function(_0xaf9013){_0x2a26c0['rows']=_0xaf9013;return _0x2a26c0;})[_0xad1c('0x1f')](respondWithFilteredResult(_0x345174,_0x30abaa))[_0xad1c('0x3c')](handleError(_0x345174,null));};exports[_0xad1c('0x3d')]=function(_0x6ad690,_0x5a2301){var _0x1b5a1a={'raw':!![],'where':{'id':_0x6ad690[_0xad1c('0x3e')]['id']}},_0x1f91d4={};_0x1f91d4[_0xad1c('0x2c')]=_[_0xad1c('0x3f')](db['CmHopperFinal']['rawAttributes']);_0x1f91d4['query']=_[_0xad1c('0x3f')](_0x6ad690[_0xad1c('0x2a')]);_0x1f91d4[_0xad1c('0x35')]=_[_0xad1c('0x2b')](_0x1f91d4[_0xad1c('0x2c')],_0x1f91d4[_0xad1c('0x2a')]);_0x1b5a1a[_0xad1c('0x2d')]=_[_0xad1c('0x2b')](_0x1f91d4[_0xad1c('0x2c')],qs[_0xad1c('0x2e')](_0x6ad690[_0xad1c('0x2a')][_0xad1c('0x2e')]));_0x1b5a1a[_0xad1c('0x2d')]=_0x1b5a1a[_0xad1c('0x2d')][_0xad1c('0x2f')]?_0x1b5a1a['attributes']:_0x1f91d4[_0xad1c('0x2c')];if(_0x6ad690['query'][_0xad1c('0x3a')]){_0x1b5a1a[_0xad1c('0x3b')]=[{'all':!![]}];}_0x1b5a1a=_[_0xad1c('0x38')]({},_0x1b5a1a,_0x6ad690[_0xad1c('0x40')]);return db[_0xad1c('0x27')][_0xad1c('0x41')](_0x1b5a1a)[_0xad1c('0x1f')](handleEntityNotFound(_0x5a2301,null))['then'](respondWithResult(_0x5a2301,null))['catch'](handleError(_0x5a2301,null));};exports[_0xad1c('0x42')]=function(_0x233a1b,_0x2d97af){return db['CmHopperFinal'][_0xad1c('0x42')]()['then'](respondWithResult(_0x2d97af,null))['catch'](handleError(_0x2d97af,null));};exports[_0xad1c('0x1e')]=function(_0x1d4e86,_0x39d597){if(_0x1d4e86[_0xad1c('0x43')][_0xad1c('0x44')]){delete _0x1d4e86[_0xad1c('0x43')][_0xad1c('0x44')];}return db['CmHopperFinal']['find']({'where':{'uniqueid':_0x1d4e86[_0xad1c('0x3e')]['id']}})[_0xad1c('0x1f')](handleEntityNotFound(_0x39d597,null))[_0xad1c('0x1f')](saveUpdates(_0x1d4e86[_0xad1c('0x43')],null))[_0xad1c('0x1f')](respondWithResult(_0x39d597,null))[_0xad1c('0x3c')](handleError(_0x39d597,null));};exports['countContactsQueueCampaignHopperFinal']=function(_0x19cd6f,_0x357c21,_0x222049){return db[_0xad1c('0x27')][_0xad1c('0x45')]({'raw':![],'where':{'VoiceQueueId':_0x19cd6f[_0xad1c('0x3e')]['id']},'attributes':[[db[_0xad1c('0x46')]['fn'](_0xad1c('0x47'),db['sequelize']['fn']('IF',db[_0xad1c('0x46')]['literal']('`state`\x20=\x200,\x201,\x20null'))),_0xad1c('0x48')],[db['sequelize']['fn'](_0xad1c('0x47'),db[_0xad1c('0x46')]['fn']('IF',db[_0xad1c('0x46')][_0xad1c('0x49')](_0xad1c('0x4a')))),_0xad1c('0x4b')],[db[_0xad1c('0x46')]['fn'](_0xad1c('0x47'),db[_0xad1c('0x46')]['fn']('IF',db[_0xad1c('0x46')][_0xad1c('0x49')](_0xad1c('0x4c')))),'busyContacts'],[db['sequelize']['fn'](_0xad1c('0x47'),db[_0xad1c('0x46')]['fn']('IF',db[_0xad1c('0x46')][_0xad1c('0x49')](_0xad1c('0x4d')))),_0xad1c('0x4e')],[db[_0xad1c('0x46')]['fn'](_0xad1c('0x47'),db[_0xad1c('0x46')]['fn']('IF',db[_0xad1c('0x46')]['literal'](_0xad1c('0x4f')))),_0xad1c('0x50')],[db['sequelize']['fn'](_0xad1c('0x47'),db[_0xad1c('0x46')]['fn']('IF',db['sequelize'][_0xad1c('0x49')](_0xad1c('0x51')))),_0xad1c('0x52')],[db[_0xad1c('0x46')]['fn']('COUNT',db[_0xad1c('0x46')]['fn']('IF',db[_0xad1c('0x46')][_0xad1c('0x49')](_0xad1c('0x53')))),'reCallContacts'],[db[_0xad1c('0x46')]['fn'](_0xad1c('0x47'),db[_0xad1c('0x46')]['fn']('IF',db[_0xad1c('0x46')][_0xad1c('0x49')](_0xad1c('0x54')))),'answeringMachine']]})['then'](handleEntityNotFound(_0x357c21,null))[_0xad1c('0x1f')](respondWithResult(_0x357c21,null))[_0xad1c('0x3c')](handleError(_0x357c21,null));};exports[_0xad1c('0x55')]=function(_0xb12705,_0x3b98f7,_0x19c879){return db[_0xad1c('0x27')]['findAll']({'raw':![],'where':{'CampaignId':_0xb12705['params']['id']},'attributes':[[db['sequelize']['fn'](_0xad1c('0x47'),db[_0xad1c('0x46')]['fn']('IF',db['sequelize']['literal'](_0xad1c('0x56')))),_0xad1c('0x48')],[db[_0xad1c('0x46')]['fn']('COUNT',db[_0xad1c('0x46')]['fn']('IF',db[_0xad1c('0x46')][_0xad1c('0x49')](_0xad1c('0x4a')))),_0xad1c('0x4b')],[db[_0xad1c('0x46')]['fn'](_0xad1c('0x47'),db[_0xad1c('0x46')]['fn']('IF',db[_0xad1c('0x46')][_0xad1c('0x49')](_0xad1c('0x4c')))),_0xad1c('0x57')],[db[_0xad1c('0x46')]['fn'](_0xad1c('0x47'),db[_0xad1c('0x46')]['fn']('IF',db['sequelize'][_0xad1c('0x49')](_0xad1c('0x4d')))),_0xad1c('0x4e')],[db['sequelize']['fn']('COUNT',db[_0xad1c('0x46')]['fn']('IF',db[_0xad1c('0x46')]['literal']('`state`\x20=\x2010\x20,\x201,\x20null'))),_0xad1c('0x50')],[db[_0xad1c('0x46')]['fn'](_0xad1c('0x47'),db['sequelize']['fn']('IF',db[_0xad1c('0x46')][_0xad1c('0x49')](_0xad1c('0x51')))),_0xad1c('0x52')],[db[_0xad1c('0x46')]['fn']('COUNT',db[_0xad1c('0x46')]['fn']('IF',db[_0xad1c('0x46')][_0xad1c('0x49')](_0xad1c('0x53')))),_0xad1c('0x58')],[db[_0xad1c('0x46')]['fn'](_0xad1c('0x47'),db[_0xad1c('0x46')]['fn']('IF',db[_0xad1c('0x46')]['literal'](_0xad1c('0x54')))),_0xad1c('0x59')]]})[_0xad1c('0x1f')](handleEntityNotFound(_0x3b98f7,null))[_0xad1c('0x1f')](respondWithResult(_0x3b98f7,null))['catch'](handleError(_0x3b98f7,null));};exports['moveContactsQueueCampaignHopperFinal']=function(_0x2dd27a,_0x2940af,_0x5df53a){return db[_0xad1c('0x5a')]['find']({'where':{'id':_0x2dd27a[_0xad1c('0x3e')]['id']}})[_0xad1c('0x1f')](handleEntityNotFound(_0x2940af,null))[_0xad1c('0x1f')](function(_0x1eea0f){var _0x46a365;if(_0x1eea0f){_0x46a365=squel[_0xad1c('0x5b')]()[_0xad1c('0x5c')](_0xad1c('0x5d'))[_0xad1c('0x5e')]([_0xad1c('0x5f'),_0xad1c('0x60'),_0xad1c('0x61'),_0xad1c('0x62'),_0xad1c('0x63'),_0xad1c('0x64'),_0xad1c('0x65')],squel[_0xad1c('0x66')]()[_0xad1c('0x67')](_0xad1c('0x68'),_0xad1c('0x5f'))[_0xad1c('0x67')]('NOW()',_0xad1c('0x60'))['field']('ANY_VALUE(ContactId)',_0xad1c('0x61'))[_0xad1c('0x67')]('ANY_VALUE(ListId)',_0xad1c('0x62'))[_0xad1c('0x67')]('ANY_VALUE(VoiceQueueId)',_0xad1c('0x63'))['field']('NOW()',_0xad1c('0x64'))['field'](_0xad1c('0x69'),_0xad1c('0x65'))[_0xad1c('0x6a')](_0xad1c('0x6b'))[_0xad1c('0x34')]('VoiceQueueId\x20=\x20?',_0x2dd27a['params']['id']['toString']())[_0xad1c('0x34')](_0xad1c('0x6c'),_0x2dd27a['body']['state'][_0xad1c('0x6d')]())[_0xad1c('0x34')]('calleridnum\x20IS\x20NOT\x20NULL')[_0xad1c('0x34')](_0xad1c('0x6e'),squel[_0xad1c('0x66')]()[_0xad1c('0x67')](_0xad1c('0x5f'))[_0xad1c('0x6a')](_0xad1c('0x5d'))[_0xad1c('0x34')](_0xad1c('0x6f'),_0x2dd27a[_0xad1c('0x3e')]['id']['toString']()))[_0xad1c('0x34')]('calleridnum\x20NOT\x20IN\x20(?)',squel['select']()['field']('calleridnum')[_0xad1c('0x6a')](_0xad1c('0x6b'))[_0xad1c('0x34')](_0xad1c('0x6f'),_0x2dd27a['params']['id'][_0xad1c('0x6d')]())[_0xad1c('0x34')](_0xad1c('0x70')))[_0xad1c('0x71')]('ContactId'))['toString']();return db[_0xad1c('0x46')][_0xad1c('0x2a')](_0x46a365);}return[];})['then'](respondWithResult(_0x2940af,null))[_0xad1c('0x3c')](handleError(_0x2940af,null));};exports[_0xad1c('0x72')]=function(_0x2db5c8,_0x7b7f7b,_0xf5f219){return db[_0xad1c('0x73')][_0xad1c('0x41')]({'where':{'id':_0x2db5c8[_0xad1c('0x3e')]['id']}})[_0xad1c('0x1f')](handleEntityNotFound(_0x7b7f7b,null))[_0xad1c('0x1f')](function(_0x565a15){var _0x39911f;if(_0x565a15){_0x39911f=squel[_0xad1c('0x5b')]()[_0xad1c('0x5c')]('cm_hopper')['fromQuery']([_0xad1c('0x5f'),'scheduledAt',_0xad1c('0x61'),_0xad1c('0x62'),'CampaignId',_0xad1c('0x64'),_0xad1c('0x65')],squel[_0xad1c('0x66')]()[_0xad1c('0x67')]('ANY_VALUE(calleridnum)',_0xad1c('0x5f'))[_0xad1c('0x67')](_0xad1c('0x69'),_0xad1c('0x60'))[_0xad1c('0x67')]('ANY_VALUE(ContactId)',_0xad1c('0x61'))[_0xad1c('0x67')](_0xad1c('0x74'),_0xad1c('0x62'))['field'](_0xad1c('0x75'),_0xad1c('0x76'))['field']('NOW()',_0xad1c('0x64'))['field'](_0xad1c('0x69'),_0xad1c('0x65'))[_0xad1c('0x6a')](_0xad1c('0x6b'))[_0xad1c('0x34')]('CampaignId\x20=\x20?',_0x2db5c8[_0xad1c('0x3e')]['id'][_0xad1c('0x6d')]())['where']('state\x20=\x20?',_0x2db5c8['body'][_0xad1c('0x77')][_0xad1c('0x6d')]())[_0xad1c('0x34')](_0xad1c('0x78'))[_0xad1c('0x34')](_0xad1c('0x6e'),squel[_0xad1c('0x66')]()[_0xad1c('0x67')](_0xad1c('0x5f'))['from'](_0xad1c('0x5d'))[_0xad1c('0x34')]('CampaignId\x20=\x20?',_0x2db5c8['params']['id'][_0xad1c('0x6d')]()))[_0xad1c('0x34')](_0xad1c('0x6e'),squel[_0xad1c('0x66')]()['field']('calleridnum')[_0xad1c('0x6a')](_0xad1c('0x6b'))[_0xad1c('0x34')]('CampaignId\x20=\x20?',_0x2db5c8[_0xad1c('0x3e')]['id'][_0xad1c('0x6d')]())[_0xad1c('0x34')]('state\x20=\x204'))[_0xad1c('0x71')]('ContactId'))['toString']();return db['sequelize']['query'](_0x39911f);}return[];})[_0xad1c('0x1f')](respondWithResult(_0x7b7f7b,null))[_0xad1c('0x3c')](handleError(_0x7b7f7b,null));};exports[_0xad1c('0x79')]=function(_0x1203d2,_0x1df7e9,_0x32e3b4){return db[_0xad1c('0x7a')][_0xad1c('0x7b')]({'where':{'VoiceQueueId':_0x1203d2[_0xad1c('0x43')][_0xad1c('0x63')],'CampaignId':_0x1203d2[_0xad1c('0x43')][_0xad1c('0x76')],'ContactId':_0x1203d2[_0xad1c('0x43')][_0xad1c('0x61')]}})['then'](handleEntityNotFound(_0x1df7e9,null))[_0xad1c('0x1f')](function(_0x3c8941){if(_0x3c8941){return _0x3c8941;}return null;})[_0xad1c('0x1f')](respondWithResult(_0x1df7e9,null))[_0xad1c('0x3c')](handleError(_0x1df7e9,null));};
\ No newline at end of file
+var _0xa9e0=['dropContacts','reCallContacts','moveContactsQueueCampaignHopperFinal','VoiceQueue','insert','into','cm_hopper','fromQuery','phone','VoiceQueueId','createdAt','updatedAt','select','field','ANY_VALUE(calleridnum)','scheduledAt','ANY_VALUE(ContactId)','ListId','NOW()','from','cm_hopper_final','VoiceQueueId\x20=\x20?','toString','state','calleridnum\x20IS\x20NOT\x20NULL','calleridnum\x20NOT\x20IN\x20(?)','calleridnum','state\x20=\x204','ContactId','moveContactsIvrCampaignHopperFinal','ANY_VALUE(ListId)','ANY_VALUE(CampaignId)','CampaignId','CampaignId\x20=\x20?','state\x20=\x20?','group','checkContactHopper','CmHopper','findOne','html-pdf','eml-format','rimraf','request-promise','bluebird','mustache','util','path','sox','ejs','lodash','squel','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','limit','set','Content-Range','apply','reject','save','update','destroy','then','name','send','map','CmHopperFinal','rawAttributes','fieldName','type','model','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','filter','VIRTUAL','merge','count','includeAll','include','findAll','rows','show','params','keys','options','find','catch','describe','uniqueid','body','countContactsQueueCampaignHopperFinal','sequelize','COUNT','`state`\x20=\x200,\x201,\x20null','noSuchContacts','literal','`state`\x20=\x203,\x201,\x20null','busyContacts','`state`\x20=\x208,\x201,\x20null','`state`\x20=\x2010\x20,\x201,\x20null','abandonedContacts','`state`\x20=\x2022,\x201,\x20null','`state`\x20=\x2019,\x201,\x20null','answeringMachine','countContactsIvrCampaignHopperFinal','noAnswerContacts','`state`\x20=\x205,\x201,\x20null'];(function(_0x4d6986,_0x22c08a){var _0x5344ee=function(_0x2d1cfa){while(--_0x2d1cfa){_0x4d6986['push'](_0x4d6986['shift']());}};_0x5344ee(++_0x22c08a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x43d11d,_0xccff91){_0x43d11d=_0x43d11d-0x0;var _0x38cd08=_0xa9e0[_0x43d11d];return _0x38cd08;};'use strict';var pdf=require(_0x0a9e('0x0'));var emlformat=require(_0x0a9e('0x1'));var rimraf=require(_0x0a9e('0x2'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x0a9e('0x3'));var moment=require('moment');var BPromise=require(_0x0a9e('0x4'));var Mustache=require(_0x0a9e('0x5'));var util=require(_0x0a9e('0x6'));var path=require(_0x0a9e('0x7'));var sox=require(_0x0a9e('0x8'));var csv=require('to-csv');var ejs=require(_0x0a9e('0x9'));var fs=require('fs');var _=require(_0x0a9e('0xa'));var squel=require(_0x0a9e('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x0a9e('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x0a9e('0xd'));var Redis=require(_0x0a9e('0xe'));var authService=require(_0x0a9e('0xf'));var qs=require(_0x0a9e('0x10'));var as=require(_0x0a9e('0x11'));var hardwareService=require(_0x0a9e('0x12'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x0a9e('0x13'));var db=require(_0x0a9e('0x14'))['db'];function respondWithStatusCode(_0xd5b662,_0x26d672){_0x26d672=_0x26d672||0xcc;return function(_0x32d742){if(_0x32d742){return _0xd5b662[_0x0a9e('0x15')](_0x26d672);}return _0xd5b662['status'](_0x26d672)[_0x0a9e('0x16')]();};}function respondWithResult(_0x239b12,_0x2b4227){_0x2b4227=_0x2b4227||0xc8;return function(_0x281129){if(_0x281129){return _0x239b12[_0x0a9e('0x17')](_0x2b4227)[_0x0a9e('0x18')](_0x281129);}};}function respondWithFilteredResult(_0x52a03d,_0x22dccb){return function(_0x5d0880){if(_0x5d0880){var _0x1985b6=_0x5d0880['count'],_0x519dfd=_0x22dccb[_0x0a9e('0x19')],_0x16033c=_0x22dccb['offset']+_0x22dccb[_0x0a9e('0x1a')],_0x12066b;if(_0x16033c>=_0x1985b6){_0x16033c=_0x1985b6;_0x12066b=0xc8;}else{_0x12066b=0xce;}_0x52a03d[_0x0a9e('0x17')](_0x12066b);return _0x52a03d[_0x0a9e('0x1b')](_0x0a9e('0x1c'),_0x519dfd+'-'+_0x16033c+'/'+_0x1985b6)[_0x0a9e('0x18')](_0x5d0880);}return null;};}function patchUpdates(_0x2eb11f){return function(_0x530eb7){try{jsonpatch[_0x0a9e('0x1d')](_0x530eb7,_0x2eb11f,!![]);}catch(_0x1314ae){return BPromise[_0x0a9e('0x1e')](_0x1314ae);}return _0x530eb7[_0x0a9e('0x1f')]();};}function saveUpdates(_0x105080,_0x4bb1e3){return function(_0x2c3407){if(_0x2c3407){return _0x2c3407[_0x0a9e('0x20')](_0x105080)['then'](function(_0x20f109){return _0x20f109;});}return null;};}function removeEntity(_0x5a09ef,_0x588269){return function(_0x3a02e1){if(_0x3a02e1){return _0x3a02e1[_0x0a9e('0x21')]()[_0x0a9e('0x22')](function(){_0x5a09ef[_0x0a9e('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0xfb6e48,_0x2fb0e4){return function(_0x3b45bc){if(!_0x3b45bc){_0xfb6e48[_0x0a9e('0x15')](0x194);}return _0x3b45bc;};}function handleError(_0x370d86,_0x42ac8f){_0x42ac8f=_0x42ac8f||0x1f4;return function(_0x16b1ca){logger['error'](_0x16b1ca['stack']);if(_0x16b1ca[_0x0a9e('0x23')]){delete _0x16b1ca[_0x0a9e('0x23')];}_0x370d86[_0x0a9e('0x17')](_0x42ac8f)[_0x0a9e('0x24')](_0x16b1ca);};}exports['index']=function(_0x384319,_0x479bc4){var _0x45a1e7={},_0x5bfb33={},_0x1dc186={'count':0x0,'rows':[]};var _0x34dc65=_[_0x0a9e('0x25')](db[_0x0a9e('0x26')][_0x0a9e('0x27')],function(_0x1538a4){return{'name':_0x1538a4[_0x0a9e('0x28')],'type':_0x1538a4[_0x0a9e('0x29')]['key']};});_0x5bfb33[_0x0a9e('0x2a')]=_[_0x0a9e('0x25')](_0x34dc65,_0x0a9e('0x23'));_0x5bfb33[_0x0a9e('0x2b')]=_['keys'](_0x384319[_0x0a9e('0x2b')]);_0x5bfb33[_0x0a9e('0x2c')]=_[_0x0a9e('0x2d')](_0x5bfb33[_0x0a9e('0x2a')],_0x5bfb33[_0x0a9e('0x2b')]);_0x45a1e7[_0x0a9e('0x2e')]=_[_0x0a9e('0x2d')](_0x5bfb33[_0x0a9e('0x2a')],qs[_0x0a9e('0x2f')](_0x384319['query'][_0x0a9e('0x2f')]));_0x45a1e7['attributes']=_0x45a1e7[_0x0a9e('0x2e')][_0x0a9e('0x30')]?_0x45a1e7[_0x0a9e('0x2e')]:_0x5bfb33[_0x0a9e('0x2a')];if(!_0x384319[_0x0a9e('0x2b')]['hasOwnProperty'](_0x0a9e('0x31'))){_0x45a1e7[_0x0a9e('0x1a')]=qs[_0x0a9e('0x1a')](_0x384319[_0x0a9e('0x2b')][_0x0a9e('0x1a')]);_0x45a1e7[_0x0a9e('0x19')]=qs[_0x0a9e('0x19')](_0x384319[_0x0a9e('0x2b')]['offset']);}_0x45a1e7[_0x0a9e('0x32')]=qs['sort'](_0x384319[_0x0a9e('0x2b')][_0x0a9e('0x33')]);_0x45a1e7[_0x0a9e('0x34')]=qs[_0x0a9e('0x2c')](_['pick'](_0x384319[_0x0a9e('0x2b')],_0x5bfb33[_0x0a9e('0x2c')]),_0x34dc65);if(_0x384319[_0x0a9e('0x2b')][_0x0a9e('0x35')]){_0x45a1e7['where']=_['merge'](_0x45a1e7[_0x0a9e('0x34')],{'$or':_['map'](_0x34dc65,function(_0x24936a){if(_0x24936a[_0x0a9e('0x29')]!==_0x0a9e('0x36')){var _0x1ef87a={};_0x1ef87a[_0x24936a['name']]={'$like':'%'+_0x384319[_0x0a9e('0x2b')][_0x0a9e('0x35')]+'%'};return _0x1ef87a;}})});}_0x45a1e7=_[_0x0a9e('0x37')]({},_0x45a1e7,_0x384319['options']);var _0x1dbf74={'where':_0x45a1e7[_0x0a9e('0x34')]};return db[_0x0a9e('0x26')]['count'](_0x1dbf74)['then'](function(_0x11b61d){_0x1dc186[_0x0a9e('0x38')]=_0x11b61d;if(_0x384319['query'][_0x0a9e('0x39')]){_0x45a1e7[_0x0a9e('0x3a')]=[{'all':!![]}];}return db[_0x0a9e('0x26')][_0x0a9e('0x3b')](_0x45a1e7);})['then'](function(_0x5a594b){_0x1dc186[_0x0a9e('0x3c')]=_0x5a594b;return _0x1dc186;})[_0x0a9e('0x22')](respondWithFilteredResult(_0x479bc4,_0x45a1e7))['catch'](handleError(_0x479bc4,null));};exports[_0x0a9e('0x3d')]=function(_0x1dec2e,_0x1459bb){var _0x5b4f5e={'raw':!![],'where':{'id':_0x1dec2e[_0x0a9e('0x3e')]['id']}},_0x316c8f={};_0x316c8f[_0x0a9e('0x2a')]=_[_0x0a9e('0x3f')](db[_0x0a9e('0x26')][_0x0a9e('0x27')]);_0x316c8f[_0x0a9e('0x2b')]=_[_0x0a9e('0x3f')](_0x1dec2e[_0x0a9e('0x2b')]);_0x316c8f[_0x0a9e('0x2c')]=_[_0x0a9e('0x2d')](_0x316c8f[_0x0a9e('0x2a')],_0x316c8f[_0x0a9e('0x2b')]);_0x5b4f5e[_0x0a9e('0x2e')]=_[_0x0a9e('0x2d')](_0x316c8f['model'],qs['fields'](_0x1dec2e[_0x0a9e('0x2b')][_0x0a9e('0x2f')]));_0x5b4f5e[_0x0a9e('0x2e')]=_0x5b4f5e[_0x0a9e('0x2e')][_0x0a9e('0x30')]?_0x5b4f5e[_0x0a9e('0x2e')]:_0x316c8f[_0x0a9e('0x2a')];if(_0x1dec2e[_0x0a9e('0x2b')][_0x0a9e('0x39')]){_0x5b4f5e[_0x0a9e('0x3a')]=[{'all':!![]}];}_0x5b4f5e=_[_0x0a9e('0x37')]({},_0x5b4f5e,_0x1dec2e[_0x0a9e('0x40')]);return db['CmHopperFinal'][_0x0a9e('0x41')](_0x5b4f5e)[_0x0a9e('0x22')](handleEntityNotFound(_0x1459bb,null))[_0x0a9e('0x22')](respondWithResult(_0x1459bb,null))[_0x0a9e('0x42')](handleError(_0x1459bb,null));};exports[_0x0a9e('0x43')]=function(_0xbe9d19,_0x21eb86){return db[_0x0a9e('0x26')]['describe']()[_0x0a9e('0x22')](respondWithResult(_0x21eb86,null))['catch'](handleError(_0x21eb86,null));};exports[_0x0a9e('0x20')]=function(_0x476688,_0x8d6dd1){if(_0x476688['body'][_0x0a9e('0x44')]){delete _0x476688[_0x0a9e('0x45')][_0x0a9e('0x44')];}return db[_0x0a9e('0x26')][_0x0a9e('0x41')]({'where':{'uniqueid':_0x476688[_0x0a9e('0x3e')]['id']}})[_0x0a9e('0x22')](handleEntityNotFound(_0x8d6dd1,null))['then'](saveUpdates(_0x476688[_0x0a9e('0x45')],null))[_0x0a9e('0x22')](respondWithResult(_0x8d6dd1,null))[_0x0a9e('0x42')](handleError(_0x8d6dd1,null));};exports[_0x0a9e('0x46')]=function(_0x409789,_0x992c77,_0x6054ee){return db[_0x0a9e('0x26')][_0x0a9e('0x3b')]({'raw':![],'where':{'VoiceQueueId':_0x409789['params']['id']},'attributes':[[db[_0x0a9e('0x47')]['fn'](_0x0a9e('0x48'),db['sequelize']['fn']('IF',db['sequelize']['literal'](_0x0a9e('0x49')))),_0x0a9e('0x4a')],[db[_0x0a9e('0x47')]['fn'](_0x0a9e('0x48'),db[_0x0a9e('0x47')]['fn']('IF',db[_0x0a9e('0x47')][_0x0a9e('0x4b')](_0x0a9e('0x4c')))),'noAnswerContacts'],[db['sequelize']['fn']('COUNT',db[_0x0a9e('0x47')]['fn']('IF',db[_0x0a9e('0x47')][_0x0a9e('0x4b')]('`state`\x20=\x205,\x201,\x20null'))),_0x0a9e('0x4d')],[db[_0x0a9e('0x47')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x0a9e('0x47')]['literal'](_0x0a9e('0x4e')))),'congestionContacts'],[db[_0x0a9e('0x47')]['fn'](_0x0a9e('0x48'),db[_0x0a9e('0x47')]['fn']('IF',db['sequelize'][_0x0a9e('0x4b')](_0x0a9e('0x4f')))),'dropContacts'],[db['sequelize']['fn'](_0x0a9e('0x48'),db[_0x0a9e('0x47')]['fn']('IF',db['sequelize'][_0x0a9e('0x4b')]('`state`\x20=\x2011\x20,\x201,\x20null'))),_0x0a9e('0x50')],[db['sequelize']['fn'](_0x0a9e('0x48'),db['sequelize']['fn']('IF',db['sequelize']['literal'](_0x0a9e('0x51')))),'reCallContacts'],[db[_0x0a9e('0x47')]['fn'](_0x0a9e('0x48'),db[_0x0a9e('0x47')]['fn']('IF',db[_0x0a9e('0x47')][_0x0a9e('0x4b')](_0x0a9e('0x52')))),_0x0a9e('0x53')]]})[_0x0a9e('0x22')](handleEntityNotFound(_0x992c77,null))['then'](respondWithResult(_0x992c77,null))[_0x0a9e('0x42')](handleError(_0x992c77,null));};exports[_0x0a9e('0x54')]=function(_0x2642bb,_0x30c491,_0xb83dfd){return db[_0x0a9e('0x26')]['findAll']({'raw':![],'where':{'CampaignId':_0x2642bb[_0x0a9e('0x3e')]['id']},'attributes':[[db[_0x0a9e('0x47')]['fn']('COUNT',db[_0x0a9e('0x47')]['fn']('IF',db['sequelize'][_0x0a9e('0x4b')]('`state`\x20=\x200,\x201,\x20null'))),'noSuchContacts'],[db['sequelize']['fn'](_0x0a9e('0x48'),db['sequelize']['fn']('IF',db[_0x0a9e('0x47')][_0x0a9e('0x4b')](_0x0a9e('0x4c')))),_0x0a9e('0x55')],[db[_0x0a9e('0x47')]['fn'](_0x0a9e('0x48'),db['sequelize']['fn']('IF',db[_0x0a9e('0x47')]['literal'](_0x0a9e('0x56')))),_0x0a9e('0x4d')],[db[_0x0a9e('0x47')]['fn']('COUNT',db[_0x0a9e('0x47')]['fn']('IF',db[_0x0a9e('0x47')][_0x0a9e('0x4b')](_0x0a9e('0x4e')))),'congestionContacts'],[db[_0x0a9e('0x47')]['fn'](_0x0a9e('0x48'),db['sequelize']['fn']('IF',db[_0x0a9e('0x47')][_0x0a9e('0x4b')](_0x0a9e('0x4f')))),_0x0a9e('0x57')],[db[_0x0a9e('0x47')]['fn']('COUNT',db[_0x0a9e('0x47')]['fn']('IF',db[_0x0a9e('0x47')][_0x0a9e('0x4b')]('`state`\x20=\x2011\x20,\x201,\x20null'))),_0x0a9e('0x50')],[db['sequelize']['fn']('COUNT',db[_0x0a9e('0x47')]['fn']('IF',db[_0x0a9e('0x47')][_0x0a9e('0x4b')](_0x0a9e('0x51')))),_0x0a9e('0x58')],[db[_0x0a9e('0x47')]['fn'](_0x0a9e('0x48'),db[_0x0a9e('0x47')]['fn']('IF',db[_0x0a9e('0x47')][_0x0a9e('0x4b')](_0x0a9e('0x52')))),_0x0a9e('0x53')]]})[_0x0a9e('0x22')](handleEntityNotFound(_0x30c491,null))[_0x0a9e('0x22')](respondWithResult(_0x30c491,null))[_0x0a9e('0x42')](handleError(_0x30c491,null));};exports[_0x0a9e('0x59')]=function(_0x2a28c0,_0x4257c9,_0x5150a4){return db[_0x0a9e('0x5a')][_0x0a9e('0x41')]({'where':{'id':_0x2a28c0[_0x0a9e('0x3e')]['id']}})['then'](handleEntityNotFound(_0x4257c9,null))[_0x0a9e('0x22')](function(_0x30944e){var _0x4b341d;if(_0x30944e){_0x4b341d=squel[_0x0a9e('0x5b')]()[_0x0a9e('0x5c')](_0x0a9e('0x5d'))[_0x0a9e('0x5e')]([_0x0a9e('0x5f'),'scheduledAt','ContactId','ListId',_0x0a9e('0x60'),_0x0a9e('0x61'),_0x0a9e('0x62')],squel[_0x0a9e('0x63')]()[_0x0a9e('0x64')](_0x0a9e('0x65'),_0x0a9e('0x5f'))[_0x0a9e('0x64')]('NOW()',_0x0a9e('0x66'))[_0x0a9e('0x64')](_0x0a9e('0x67'),'ContactId')[_0x0a9e('0x64')]('ANY_VALUE(ListId)',_0x0a9e('0x68'))[_0x0a9e('0x64')]('ANY_VALUE(VoiceQueueId)',_0x0a9e('0x60'))[_0x0a9e('0x64')](_0x0a9e('0x69'),_0x0a9e('0x61'))['field'](_0x0a9e('0x69'),_0x0a9e('0x62'))[_0x0a9e('0x6a')](_0x0a9e('0x6b'))['where'](_0x0a9e('0x6c'),_0x2a28c0[_0x0a9e('0x3e')]['id'][_0x0a9e('0x6d')]())[_0x0a9e('0x34')]('state\x20=\x20?',_0x2a28c0[_0x0a9e('0x45')][_0x0a9e('0x6e')][_0x0a9e('0x6d')]())[_0x0a9e('0x34')](_0x0a9e('0x6f'))[_0x0a9e('0x34')](_0x0a9e('0x70'),squel[_0x0a9e('0x63')]()[_0x0a9e('0x64')](_0x0a9e('0x5f'))[_0x0a9e('0x6a')](_0x0a9e('0x5d'))[_0x0a9e('0x34')](_0x0a9e('0x6c'),_0x2a28c0['params']['id'][_0x0a9e('0x6d')]()))[_0x0a9e('0x34')](_0x0a9e('0x70'),squel['select']()[_0x0a9e('0x64')](_0x0a9e('0x71'))[_0x0a9e('0x6a')](_0x0a9e('0x6b'))['where']('VoiceQueueId\x20=\x20?',_0x2a28c0[_0x0a9e('0x3e')]['id'][_0x0a9e('0x6d')]())['where'](_0x0a9e('0x72')))['group'](_0x0a9e('0x73')))[_0x0a9e('0x6d')]();return db['sequelize'][_0x0a9e('0x2b')](_0x4b341d);}return[];})[_0x0a9e('0x22')](respondWithResult(_0x4257c9,null))[_0x0a9e('0x42')](handleError(_0x4257c9,null));};exports[_0x0a9e('0x74')]=function(_0x3755fe,_0x1f42a0,_0x444f1f){return db['Campaign'][_0x0a9e('0x41')]({'where':{'id':_0x3755fe[_0x0a9e('0x3e')]['id']}})[_0x0a9e('0x22')](handleEntityNotFound(_0x1f42a0,null))[_0x0a9e('0x22')](function(_0x492543){var _0xf51744;if(_0x492543){_0xf51744=squel[_0x0a9e('0x5b')]()['into'](_0x0a9e('0x5d'))['fromQuery']([_0x0a9e('0x5f'),_0x0a9e('0x66'),_0x0a9e('0x73'),_0x0a9e('0x68'),'CampaignId','createdAt',_0x0a9e('0x62')],squel[_0x0a9e('0x63')]()[_0x0a9e('0x64')]('ANY_VALUE(calleridnum)',_0x0a9e('0x5f'))[_0x0a9e('0x64')]('NOW()','scheduledAt')[_0x0a9e('0x64')]('ANY_VALUE(ContactId)','ContactId')['field'](_0x0a9e('0x75'),_0x0a9e('0x68'))[_0x0a9e('0x64')](_0x0a9e('0x76'),_0x0a9e('0x77'))[_0x0a9e('0x64')]('NOW()',_0x0a9e('0x61'))['field'](_0x0a9e('0x69'),_0x0a9e('0x62'))[_0x0a9e('0x6a')](_0x0a9e('0x6b'))['where'](_0x0a9e('0x78'),_0x3755fe[_0x0a9e('0x3e')]['id'][_0x0a9e('0x6d')]())['where'](_0x0a9e('0x79'),_0x3755fe[_0x0a9e('0x45')][_0x0a9e('0x6e')][_0x0a9e('0x6d')]())[_0x0a9e('0x34')](_0x0a9e('0x6f'))[_0x0a9e('0x34')](_0x0a9e('0x70'),squel['select']()[_0x0a9e('0x64')](_0x0a9e('0x5f'))['from'](_0x0a9e('0x5d'))[_0x0a9e('0x34')](_0x0a9e('0x78'),_0x3755fe['params']['id'][_0x0a9e('0x6d')]()))['where'](_0x0a9e('0x70'),squel[_0x0a9e('0x63')]()[_0x0a9e('0x64')](_0x0a9e('0x71'))[_0x0a9e('0x6a')](_0x0a9e('0x6b'))[_0x0a9e('0x34')](_0x0a9e('0x78'),_0x3755fe['params']['id'][_0x0a9e('0x6d')]())[_0x0a9e('0x34')](_0x0a9e('0x72')))[_0x0a9e('0x7a')](_0x0a9e('0x73')))[_0x0a9e('0x6d')]();return db[_0x0a9e('0x47')][_0x0a9e('0x2b')](_0xf51744);}return[];})[_0x0a9e('0x22')](respondWithResult(_0x1f42a0,null))[_0x0a9e('0x42')](handleError(_0x1f42a0,null));};exports[_0x0a9e('0x7b')]=function(_0x3754e2,_0x18273f,_0x4989f9){return db[_0x0a9e('0x7c')][_0x0a9e('0x7d')]({'where':{'VoiceQueueId':_0x3754e2[_0x0a9e('0x45')][_0x0a9e('0x60')],'CampaignId':_0x3754e2[_0x0a9e('0x45')]['CampaignId'],'ContactId':_0x3754e2[_0x0a9e('0x45')][_0x0a9e('0x73')]}})['then'](handleEntityNotFound(_0x18273f,null))[_0x0a9e('0x22')](function(_0x5e725e){if(_0x5e725e){return _0x5e725e;}return null;})[_0x0a9e('0x22')](respondWithResult(_0x18273f,null))[_0x0a9e('0x42')](handleError(_0x18273f,null));};
\ No newline at end of file