Built motion from commit c116dc8b.|2.6.30
[motion2.git] / server / api / faxTransferReport / faxTransferReport.controller.js
index a03ccee..95eafda 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2675=['count','offset','limit','set','json','apply','reject','save','then','error','stack','name','send','index','map','FaxTransferReport','rawAttributes','type','key','model','query','keys','attributes','intersection','fields','length','nolimit','order','sort','where','filters','filter','merge','VIRTUAL','options','include','findAll','rows','params','includeAll','create','body','catch','find','destroy','describe','html-pdf','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end'];(function(_0xe86218,_0x563933){var _0x451d87=function(_0x1330dc){while(--_0x1330dc){_0xe86218['push'](_0xe86218['shift']());}};_0x451d87(++_0x563933);}(_0x2675,0x75));var _0x5267=function(_0x1f12af,_0x12d3a3){_0x1f12af=_0x1f12af-0x0;var _0x4b75ce=_0x2675[_0x1f12af];return _0x4b75ce;};'use strict';var pdf=require(_0x5267('0x0'));var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x5267('0x1'));var rp=require(_0x5267('0x2'));var moment=require('moment');var BPromise=require(_0x5267('0x3'));var Mustache=require(_0x5267('0x4'));var util=require('util');var path=require(_0x5267('0x5'));var sox=require(_0x5267('0x6'));var csv=require(_0x5267('0x7'));var ejs=require(_0x5267('0x8'));var fs=require('fs');var _=require(_0x5267('0x9'));var squel=require(_0x5267('0xa'));var crypto=require('crypto');var jsforce=require(_0x5267('0xb'));var deskjs=require(_0x5267('0xc'));var toCsv=require('to-csv');var querystring=require(_0x5267('0xd'));var Papa=require('papaparse');var Redis=require(_0x5267('0xe'));var authService=require(_0x5267('0xf'));var qs=require(_0x5267('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5267('0x11'));var logger=require('../../config/logger')(_0x5267('0x12'));var utils=require('../../config/utils');var config=require(_0x5267('0x13'));var licenseUtil=require(_0x5267('0x14'));var db=require(_0x5267('0x15'))['db'];function respondWithStatusCode(_0x1f9be3,_0x1d7090){_0x1d7090=_0x1d7090||0xcc;return function(_0x1171b9){if(_0x1171b9){return _0x1f9be3[_0x5267('0x16')](_0x1d7090);}return _0x1f9be3[_0x5267('0x17')](_0x1d7090)[_0x5267('0x18')]();};}function respondWithResult(_0x1e2d3b,_0x16e5a7){_0x16e5a7=_0x16e5a7||0xc8;return function(_0x29349a){if(_0x29349a){return _0x1e2d3b[_0x5267('0x17')](_0x16e5a7)['json'](_0x29349a);}};}function respondWithFilteredResult(_0x52e24e,_0xa593fb){return function(_0x40d897){if(_0x40d897){var _0x38a147=_0x40d897[_0x5267('0x19')],_0x3f5344=_0xa593fb[_0x5267('0x1a')],_0x46b2c2=_0xa593fb[_0x5267('0x1a')]+_0xa593fb[_0x5267('0x1b')],_0x27e5c6;if(_0x46b2c2>=_0x38a147){_0x46b2c2=_0x38a147;_0x27e5c6=0xc8;}else{_0x27e5c6=0xce;}_0x52e24e[_0x5267('0x17')](_0x27e5c6);return _0x52e24e[_0x5267('0x1c')]('Content-Range',_0x3f5344+'-'+_0x46b2c2+'/'+_0x38a147)[_0x5267('0x1d')](_0x40d897);}return null;};}function patchUpdates(_0x2afd38){return function(_0x5069e8){try{jsonpatch[_0x5267('0x1e')](_0x5069e8,_0x2afd38,!![]);}catch(_0x56733e){return BPromise[_0x5267('0x1f')](_0x56733e);}return _0x5069e8[_0x5267('0x20')]();};}function saveUpdates(_0x39c0c3,_0x2a9f99){return function(_0x5ca9c6){if(_0x5ca9c6){return _0x5ca9c6['update'](_0x39c0c3)[_0x5267('0x21')](function(_0x5aebdd){return _0x5aebdd;});}return null;};}function removeEntity(_0xa32663,_0x420fb8){return function(_0x3b53ac){if(_0x3b53ac){return _0x3b53ac['destroy']()['then'](function(){_0xa32663['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5ea6a6,_0x26c7f8){return function(_0x399e64){if(!_0x399e64){_0x5ea6a6[_0x5267('0x16')](0x194);}return _0x399e64;};}function handleError(_0x279377,_0x11c8ea){_0x11c8ea=_0x11c8ea||0x1f4;return function(_0x40d1be){logger[_0x5267('0x22')](_0x40d1be[_0x5267('0x23')]);if(_0x40d1be[_0x5267('0x24')]){delete _0x40d1be['name'];}_0x279377['status'](_0x11c8ea)[_0x5267('0x25')](_0x40d1be);};}exports[_0x5267('0x26')]=function(_0x5abf95,_0x45373e){var _0x52504e={},_0x4d7c2a={},_0x43e7e7={'count':0x0,'rows':[]};var _0x273769=_[_0x5267('0x27')](db[_0x5267('0x28')][_0x5267('0x29')],function(_0x4f3d4d){return{'name':_0x4f3d4d['fieldName'],'type':_0x4f3d4d[_0x5267('0x2a')][_0x5267('0x2b')]};});_0x4d7c2a[_0x5267('0x2c')]=_['map'](_0x273769,'name');_0x4d7c2a[_0x5267('0x2d')]=_[_0x5267('0x2e')](_0x5abf95[_0x5267('0x2d')]);_0x4d7c2a['filters']=_['intersection'](_0x4d7c2a[_0x5267('0x2c')],_0x4d7c2a[_0x5267('0x2d')]);_0x52504e[_0x5267('0x2f')]=_[_0x5267('0x30')](_0x4d7c2a['model'],qs[_0x5267('0x31')](_0x5abf95[_0x5267('0x2d')][_0x5267('0x31')]));_0x52504e[_0x5267('0x2f')]=_0x52504e[_0x5267('0x2f')][_0x5267('0x32')]?_0x52504e[_0x5267('0x2f')]:_0x4d7c2a[_0x5267('0x2c')];if(!_0x5abf95['query']['hasOwnProperty'](_0x5267('0x33'))){_0x52504e['limit']=qs[_0x5267('0x1b')](_0x5abf95[_0x5267('0x2d')][_0x5267('0x1b')]);_0x52504e[_0x5267('0x1a')]=qs['offset'](_0x5abf95[_0x5267('0x2d')][_0x5267('0x1a')]);}_0x52504e[_0x5267('0x34')]=qs[_0x5267('0x35')](_0x5abf95[_0x5267('0x2d')][_0x5267('0x35')]);_0x52504e[_0x5267('0x36')]=qs[_0x5267('0x37')](_['pick'](_0x5abf95[_0x5267('0x2d')],_0x4d7c2a['filters']),_0x273769);if(_0x5abf95[_0x5267('0x2d')][_0x5267('0x38')]){_0x52504e[_0x5267('0x36')]=_[_0x5267('0x39')](_0x52504e[_0x5267('0x36')],{'$or':_[_0x5267('0x27')](_0x273769,function(_0x465ad9){if(_0x465ad9['type']!==_0x5267('0x3a')){var _0x3a2e07={};_0x3a2e07[_0x465ad9[_0x5267('0x24')]]={'$like':'%'+_0x5abf95[_0x5267('0x2d')][_0x5267('0x38')]+'%'};return _0x3a2e07;}})});}_0x52504e=_[_0x5267('0x39')]({},_0x52504e,_0x5abf95[_0x5267('0x3b')]);var _0x487dfc={'where':_0x52504e[_0x5267('0x36')]};return db['FaxTransferReport'][_0x5267('0x19')](_0x487dfc)['then'](function(_0x4dee66){_0x43e7e7['count']=_0x4dee66;if(_0x5abf95[_0x5267('0x2d')]['includeAll']){_0x52504e[_0x5267('0x3c')]=[{'all':!![]}];}return db[_0x5267('0x28')][_0x5267('0x3d')](_0x52504e);})[_0x5267('0x21')](function(_0x552b81){_0x43e7e7[_0x5267('0x3e')]=_0x552b81;return _0x43e7e7;})[_0x5267('0x21')](respondWithFilteredResult(_0x45373e,_0x52504e))['catch'](handleError(_0x45373e,null));};exports['show']=function(_0x3e1483,_0x560cdf){var _0x12df83={'raw':!![],'where':{'id':_0x3e1483[_0x5267('0x3f')]['id']}},_0x1cf94a={};_0x1cf94a[_0x5267('0x2c')]=_[_0x5267('0x2e')](db[_0x5267('0x28')][_0x5267('0x29')]);_0x1cf94a['query']=_['keys'](_0x3e1483[_0x5267('0x2d')]);_0x1cf94a['filters']=_[_0x5267('0x30')](_0x1cf94a[_0x5267('0x2c')],_0x1cf94a['query']);_0x12df83[_0x5267('0x2f')]=_[_0x5267('0x30')](_0x1cf94a[_0x5267('0x2c')],qs[_0x5267('0x31')](_0x3e1483[_0x5267('0x2d')][_0x5267('0x31')]));_0x12df83[_0x5267('0x2f')]=_0x12df83[_0x5267('0x2f')][_0x5267('0x32')]?_0x12df83['attributes']:_0x1cf94a[_0x5267('0x2c')];if(_0x3e1483[_0x5267('0x2d')][_0x5267('0x40')]){_0x12df83[_0x5267('0x3c')]=[{'all':!![]}];}_0x12df83=_[_0x5267('0x39')]({},_0x12df83,_0x3e1483['options']);return db[_0x5267('0x28')]['find'](_0x12df83)[_0x5267('0x21')](handleEntityNotFound(_0x560cdf,null))['then'](respondWithResult(_0x560cdf,null))['catch'](handleError(_0x560cdf,null));};exports[_0x5267('0x41')]=function(_0x56d33f,_0x3f2609){return db[_0x5267('0x28')][_0x5267('0x41')](_0x56d33f[_0x5267('0x42')],{})['then'](respondWithResult(_0x3f2609,0xc9))[_0x5267('0x43')](handleError(_0x3f2609,null));};exports['update']=function(_0x4b8db5,_0x2c7e31){if(_0x4b8db5[_0x5267('0x42')]['id']){delete _0x4b8db5['body']['id'];}return db['FaxTransferReport'][_0x5267('0x44')]({'where':{'id':_0x4b8db5[_0x5267('0x3f')]['id']}})[_0x5267('0x21')](handleEntityNotFound(_0x2c7e31,null))[_0x5267('0x21')](saveUpdates(_0x4b8db5[_0x5267('0x42')],null))[_0x5267('0x21')](respondWithResult(_0x2c7e31,null))[_0x5267('0x43')](handleError(_0x2c7e31,null));};exports[_0x5267('0x45')]=function(_0x4332c7,_0x2cfe09){return db[_0x5267('0x28')][_0x5267('0x44')]({'where':{'id':_0x4332c7[_0x5267('0x3f')]['id']}})[_0x5267('0x21')](handleEntityNotFound(_0x2cfe09,null))['then'](removeEntity(_0x2cfe09,null))[_0x5267('0x43')](handleError(_0x2cfe09,null));};exports[_0x5267('0x46')]=function(_0x371486,_0x4f0148){return db[_0x5267('0x28')][_0x5267('0x46')]()[_0x5267('0x21')](respondWithResult(_0x4f0148,null))[_0x5267('0x43')](handleError(_0x4f0148,null));};
\ No newline at end of file
+var _0x5893=['body','describe','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','sendStatus','end','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','name','index','map','FaxTransferReport','rawAttributes','fieldName','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','filter','merge','type','VIRTUAL','options','includeAll','findAll','catch','show','params','include','find','create'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5893,0x1b8));var _0x3589=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x5893[_0x122ef9];return _0x42fba0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3589('0x0'));var zipdir=require(_0x3589('0x1'));var jsonpatch=require(_0x3589('0x2'));var rp=require(_0x3589('0x3'));var moment=require('moment');var BPromise=require(_0x3589('0x4'));var Mustache=require(_0x3589('0x5'));var util=require(_0x3589('0x6'));var path=require(_0x3589('0x7'));var sox=require(_0x3589('0x8'));var csv=require(_0x3589('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3589('0xa'));var _=require(_0x3589('0xb'));var squel=require(_0x3589('0xc'));var crypto=require(_0x3589('0xd'));var jsforce=require(_0x3589('0xe'));var deskjs=require(_0x3589('0xf'));var toCsv=require('to-csv');var querystring=require(_0x3589('0x10'));var Papa=require(_0x3589('0x11'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x3589('0x12'));var as=require(_0x3589('0x13'));var hardwareService=require(_0x3589('0x14'));var logger=require('../../config/logger')(_0x3589('0x15'));var utils=require(_0x3589('0x16'));var config=require(_0x3589('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x20cd2,_0x1ddaa3){_0x1ddaa3=_0x1ddaa3||0xcc;return function(_0x4f5eac){if(_0x4f5eac){return _0x20cd2[_0x3589('0x18')](_0x1ddaa3);}return _0x20cd2['status'](_0x1ddaa3)[_0x3589('0x19')]();};}function respondWithResult(_0xa6986f,_0x4a2cc7){_0x4a2cc7=_0x4a2cc7||0xc8;return function(_0xa9ec26){if(_0xa9ec26){return _0xa6986f[_0x3589('0x1a')](_0x4a2cc7)[_0x3589('0x1b')](_0xa9ec26);}};}function respondWithFilteredResult(_0x1afdb3,_0x3b0dd0){return function(_0x54d963){if(_0x54d963){var _0x232fa3=typeof _0x3b0dd0['offset']===_0x3589('0x1c')&&typeof _0x3b0dd0[_0x3589('0x1d')]==='undefined';var _0x48dfa5=_0x54d963['count'];var _0x472795=_0x232fa3?0x0:_0x3b0dd0['offset'];var _0x40f4ca=_0x232fa3?_0x54d963[_0x3589('0x1e')]:_0x3b0dd0[_0x3589('0x1f')]+_0x3b0dd0[_0x3589('0x1d')];var _0x4388b0;if(_0x40f4ca>=_0x48dfa5){_0x40f4ca=_0x48dfa5;_0x4388b0=0xc8;}else{_0x4388b0=0xce;}_0x1afdb3[_0x3589('0x1a')](_0x4388b0);return _0x1afdb3[_0x3589('0x20')](_0x3589('0x21'),_0x472795+'-'+_0x40f4ca+'/'+_0x48dfa5)[_0x3589('0x1b')](_0x54d963);}return null;};}function patchUpdates(_0x3a4963){return function(_0x391256){try{jsonpatch[_0x3589('0x22')](_0x391256,_0x3a4963,!![]);}catch(_0x18406a){return BPromise[_0x3589('0x23')](_0x18406a);}return _0x391256[_0x3589('0x24')]();};}function saveUpdates(_0x176cbc,_0x2cf678){return function(_0x36cf63){if(_0x36cf63){return _0x36cf63[_0x3589('0x25')](_0x176cbc)[_0x3589('0x26')](function(_0xe5dffa){return _0xe5dffa;});}return null;};}function removeEntity(_0x45e1c5,_0x2356bb){return function(_0x3349a0){if(_0x3349a0){return _0x3349a0[_0x3589('0x27')]()[_0x3589('0x26')](function(){_0x45e1c5['status'](0xcc)[_0x3589('0x19')]();});}};}function handleEntityNotFound(_0x2c1112,_0xe12b10){return function(_0x4ebd6e){if(!_0x4ebd6e){_0x2c1112[_0x3589('0x18')](0x194);}return _0x4ebd6e;};}function handleError(_0x896909,_0x8556ba){_0x8556ba=_0x8556ba||0x1f4;return function(_0x2482c2){logger['error'](_0x2482c2['stack']);if(_0x2482c2[_0x3589('0x28')]){delete _0x2482c2[_0x3589('0x28')];}_0x896909[_0x3589('0x1a')](_0x8556ba)['send'](_0x2482c2);};}exports[_0x3589('0x29')]=function(_0x41ef1,_0x5b133a){var _0x58f2e2={},_0x437def={},_0x88f37d={'count':0x0,'rows':[]};var _0x496a27=_[_0x3589('0x2a')](db[_0x3589('0x2b')][_0x3589('0x2c')],function(_0x116e7f){return{'name':_0x116e7f[_0x3589('0x2d')],'type':_0x116e7f['type']['key']};});_0x437def[_0x3589('0x2e')]=_[_0x3589('0x2a')](_0x496a27,_0x3589('0x28'));_0x437def[_0x3589('0x2f')]=_[_0x3589('0x30')](_0x41ef1[_0x3589('0x2f')]);_0x437def[_0x3589('0x31')]=_[_0x3589('0x32')](_0x437def[_0x3589('0x2e')],_0x437def[_0x3589('0x2f')]);_0x58f2e2['attributes']=_[_0x3589('0x32')](_0x437def[_0x3589('0x2e')],qs[_0x3589('0x33')](_0x41ef1[_0x3589('0x2f')][_0x3589('0x33')]));_0x58f2e2[_0x3589('0x34')]=_0x58f2e2[_0x3589('0x34')][_0x3589('0x35')]?_0x58f2e2[_0x3589('0x34')]:_0x437def[_0x3589('0x2e')];if(!_0x41ef1['query'][_0x3589('0x36')]('nolimit')){_0x58f2e2[_0x3589('0x1d')]=qs[_0x3589('0x1d')](_0x41ef1['query'][_0x3589('0x1d')]);_0x58f2e2[_0x3589('0x1f')]=qs[_0x3589('0x1f')](_0x41ef1[_0x3589('0x2f')]['offset']);}_0x58f2e2[_0x3589('0x37')]=qs[_0x3589('0x38')](_0x41ef1[_0x3589('0x2f')]['sort']);_0x58f2e2[_0x3589('0x39')]=qs[_0x3589('0x31')](_['pick'](_0x41ef1[_0x3589('0x2f')],_0x437def[_0x3589('0x31')]),_0x496a27);if(_0x41ef1['query'][_0x3589('0x3a')]){_0x58f2e2[_0x3589('0x39')]=_[_0x3589('0x3b')](_0x58f2e2['where'],{'$or':_['map'](_0x496a27,function(_0x5c9f3b){if(_0x5c9f3b[_0x3589('0x3c')]!==_0x3589('0x3d')){var _0x290ae4={};_0x290ae4[_0x5c9f3b[_0x3589('0x28')]]={'$like':'%'+_0x41ef1[_0x3589('0x2f')][_0x3589('0x3a')]+'%'};return _0x290ae4;}})});}_0x58f2e2=_[_0x3589('0x3b')]({},_0x58f2e2,_0x41ef1[_0x3589('0x3e')]);var _0x9332f7={'where':_0x58f2e2[_0x3589('0x39')]};return db[_0x3589('0x2b')]['count'](_0x9332f7)[_0x3589('0x26')](function(_0x3a7419){_0x88f37d[_0x3589('0x1e')]=_0x3a7419;if(_0x41ef1[_0x3589('0x2f')][_0x3589('0x3f')]){_0x58f2e2['include']=[{'all':!![]}];}return db[_0x3589('0x2b')][_0x3589('0x40')](_0x58f2e2);})[_0x3589('0x26')](function(_0x27dc44){_0x88f37d['rows']=_0x27dc44;return _0x88f37d;})[_0x3589('0x26')](respondWithFilteredResult(_0x5b133a,_0x58f2e2))[_0x3589('0x41')](handleError(_0x5b133a,null));};exports[_0x3589('0x42')]=function(_0x51fd2a,_0x4ddbfb){var _0x294ad7={'raw':!![],'where':{'id':_0x51fd2a[_0x3589('0x43')]['id']}},_0x5ea3a={};_0x5ea3a[_0x3589('0x2e')]=_[_0x3589('0x30')](db[_0x3589('0x2b')][_0x3589('0x2c')]);_0x5ea3a[_0x3589('0x2f')]=_[_0x3589('0x30')](_0x51fd2a[_0x3589('0x2f')]);_0x5ea3a[_0x3589('0x31')]=_[_0x3589('0x32')](_0x5ea3a[_0x3589('0x2e')],_0x5ea3a['query']);_0x294ad7[_0x3589('0x34')]=_[_0x3589('0x32')](_0x5ea3a[_0x3589('0x2e')],qs['fields'](_0x51fd2a[_0x3589('0x2f')][_0x3589('0x33')]));_0x294ad7[_0x3589('0x34')]=_0x294ad7[_0x3589('0x34')][_0x3589('0x35')]?_0x294ad7[_0x3589('0x34')]:_0x5ea3a[_0x3589('0x2e')];if(_0x51fd2a[_0x3589('0x2f')][_0x3589('0x3f')]){_0x294ad7[_0x3589('0x44')]=[{'all':!![]}];}_0x294ad7=_[_0x3589('0x3b')]({},_0x294ad7,_0x51fd2a[_0x3589('0x3e')]);return db[_0x3589('0x2b')][_0x3589('0x45')](_0x294ad7)['then'](handleEntityNotFound(_0x4ddbfb,null))[_0x3589('0x26')](respondWithResult(_0x4ddbfb,null))['catch'](handleError(_0x4ddbfb,null));};exports[_0x3589('0x46')]=function(_0x4ada06,_0x217b7c){return db[_0x3589('0x2b')][_0x3589('0x46')](_0x4ada06['body'],{})[_0x3589('0x26')](respondWithResult(_0x217b7c,0xc9))[_0x3589('0x41')](handleError(_0x217b7c,null));};exports[_0x3589('0x25')]=function(_0x5b8102,_0x576a7c){if(_0x5b8102['body']['id']){delete _0x5b8102[_0x3589('0x47')]['id'];}return db[_0x3589('0x2b')][_0x3589('0x45')]({'where':{'id':_0x5b8102[_0x3589('0x43')]['id']}})[_0x3589('0x26')](handleEntityNotFound(_0x576a7c,null))['then'](saveUpdates(_0x5b8102['body'],null))['then'](respondWithResult(_0x576a7c,null))[_0x3589('0x41')](handleError(_0x576a7c,null));};exports[_0x3589('0x27')]=function(_0x430ea9,_0x13a10a){return db[_0x3589('0x2b')][_0x3589('0x45')]({'where':{'id':_0x430ea9[_0x3589('0x43')]['id']}})[_0x3589('0x26')](handleEntityNotFound(_0x13a10a,null))['then'](removeEntity(_0x13a10a,null))[_0x3589('0x41')](handleError(_0x13a10a,null));};exports['describe']=function(_0x4432c4,_0x43a8ae){return db[_0x3589('0x2b')][_0x3589('0x48')]()[_0x3589('0x26')](respondWithResult(_0x43a8ae,null))['catch'](handleError(_0x43a8ae,null));};
\ No newline at end of file