Built motion from commit bab6f49e.|2.6.17
[motion2.git] / server / api / squareReport / squareReport.controller.js
index 0b4e433..988a33b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['end','status','json','offset','limit','set','apply','update','destroy','then','sendStatus','error','name','send','index','map','SquareReport','rawAttributes','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','merge','include','findAll','params','includeAll','find','catch','create','body','describe','html-pdf','eml-format','rimraf','request-promise','moment','bluebird','mustache','path','to-csv','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb'];(function(_0x582f72,_0x886d8){var _0x4cd5fe=function(_0x4ac1c7){while(--_0x4ac1c7){_0x582f72['push'](_0x582f72['shift']());}};_0x4cd5fe(++_0x886d8);}(_0x70e0,0x17b));var _0x070e=function(_0x536d46,_0x15a3ea){_0x536d46=_0x536d46-0x0;var _0x4ea65c=_0x70e0[_0x536d46];return _0x4ea65c;};'use strict';var pdf=require(_0x070e('0x0'));var emlformat=require(_0x070e('0x1'));var rimraf=require(_0x070e('0x2'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x070e('0x3'));var moment=require(_0x070e('0x4'));var BPromise=require(_0x070e('0x5'));var Mustache=require(_0x070e('0x6'));var util=require('util');var path=require(_0x070e('0x7'));var sox=require('sox');var csv=require(_0x070e('0x8'));var ejs=require('ejs');var fs=require('fs');var _=require('lodash');var squel=require('squel');var crypto=require(_0x070e('0x9'));var jsforce=require(_0x070e('0xa'));var deskjs=require(_0x070e('0xb'));var toCsv=require(_0x070e('0x8'));var querystring=require(_0x070e('0xc'));var Papa=require(_0x070e('0xd'));var Redis=require(_0x070e('0xe'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x070e('0xf'));var hardwareService=require(_0x070e('0x10'));var logger=require(_0x070e('0x11'))(_0x070e('0x12'));var utils=require(_0x070e('0x13'));var config=require(_0x070e('0x14'));var licenseUtil=require(_0x070e('0x15'));var db=require(_0x070e('0x16'))['db'];function respondWithStatusCode(_0x39d2b9,_0x5bf079){_0x5bf079=_0x5bf079||0xcc;return function(_0x2930b8){if(_0x2930b8){return _0x39d2b9['sendStatus'](_0x5bf079);}return _0x39d2b9['status'](_0x5bf079)[_0x070e('0x17')]();};}function respondWithResult(_0x56c7ba,_0x4a33d2){_0x4a33d2=_0x4a33d2||0xc8;return function(_0x5bae0f){if(_0x5bae0f){return _0x56c7ba[_0x070e('0x18')](_0x4a33d2)[_0x070e('0x19')](_0x5bae0f);}};}function respondWithFilteredResult(_0x51d14d,_0x5d3a38){return function(_0x373d86){if(_0x373d86){var _0xeae1a5=_0x373d86['count'],_0x180897=_0x5d3a38[_0x070e('0x1a')],_0x19d9da=_0x5d3a38[_0x070e('0x1a')]+_0x5d3a38[_0x070e('0x1b')],_0x5bc71e;if(_0x19d9da>=_0xeae1a5){_0x19d9da=_0xeae1a5;_0x5bc71e=0xc8;}else{_0x5bc71e=0xce;}_0x51d14d[_0x070e('0x18')](_0x5bc71e);return _0x51d14d[_0x070e('0x1c')]('Content-Range',_0x180897+'-'+_0x19d9da+'/'+_0xeae1a5)[_0x070e('0x19')](_0x373d86);}return null;};}function patchUpdates(_0x168dc6){return function(_0x1ad3de){try{jsonpatch[_0x070e('0x1d')](_0x1ad3de,_0x168dc6,!![]);}catch(_0x259893){return BPromise['reject'](_0x259893);}return _0x1ad3de['save']();};}function saveUpdates(_0x4e958f,_0x9907cf){return function(_0x3004f0){if(_0x3004f0){return _0x3004f0[_0x070e('0x1e')](_0x4e958f)['then'](function(_0x5b184){return _0x5b184;});}return null;};}function removeEntity(_0x5dc5d2,_0xf8dd5d){return function(_0x3f6985){if(_0x3f6985){return _0x3f6985[_0x070e('0x1f')]()[_0x070e('0x20')](function(){_0x5dc5d2[_0x070e('0x18')](0xcc)[_0x070e('0x17')]();});}};}function handleEntityNotFound(_0xe405e,_0x164cdf){return function(_0x595c7e){if(!_0x595c7e){_0xe405e[_0x070e('0x21')](0x194);}return _0x595c7e;};}function handleError(_0x270061,_0x4790eb){_0x4790eb=_0x4790eb||0x1f4;return function(_0x503f4d){logger[_0x070e('0x22')](_0x503f4d['stack']);if(_0x503f4d['name']){delete _0x503f4d[_0x070e('0x23')];}_0x270061[_0x070e('0x18')](_0x4790eb)[_0x070e('0x24')](_0x503f4d);};}exports[_0x070e('0x25')]=function(_0x4763c6,_0x497f58){var _0x374c54={},_0x219e48={},_0x1d72d6={'count':0x0,'rows':[]};var _0x1d2a34=_[_0x070e('0x26')](db[_0x070e('0x27')][_0x070e('0x28')],function(_0x26373b){return{'name':_0x26373b['fieldName'],'type':_0x26373b[_0x070e('0x29')][_0x070e('0x2a')]};});_0x219e48[_0x070e('0x2b')]=_['map'](_0x1d2a34,'name');_0x219e48[_0x070e('0x2c')]=_[_0x070e('0x2d')](_0x4763c6[_0x070e('0x2c')]);_0x219e48['filters']=_[_0x070e('0x2e')](_0x219e48[_0x070e('0x2b')],_0x219e48[_0x070e('0x2c')]);_0x374c54[_0x070e('0x2f')]=_['intersection'](_0x219e48['model'],qs['fields'](_0x4763c6['query'][_0x070e('0x30')]));_0x374c54['attributes']=_0x374c54[_0x070e('0x2f')][_0x070e('0x31')]?_0x374c54['attributes']:_0x219e48['model'];if(!_0x4763c6[_0x070e('0x2c')][_0x070e('0x32')]('nolimit')){_0x374c54['limit']=qs[_0x070e('0x1b')](_0x4763c6[_0x070e('0x2c')][_0x070e('0x1b')]);_0x374c54[_0x070e('0x1a')]=qs[_0x070e('0x1a')](_0x4763c6['query']['offset']);}_0x374c54[_0x070e('0x33')]=qs[_0x070e('0x34')](_0x4763c6[_0x070e('0x2c')][_0x070e('0x34')]);_0x374c54[_0x070e('0x35')]=qs['filters'](_[_0x070e('0x36')](_0x4763c6[_0x070e('0x2c')],_0x219e48['filters']),_0x1d2a34);if(_0x4763c6[_0x070e('0x2c')][_0x070e('0x37')]){_0x374c54['where']=_['merge'](_0x374c54['where'],{'$or':_[_0x070e('0x26')](_0x1d2a34,function(_0x3dfbf7){if(_0x3dfbf7[_0x070e('0x29')]!==_0x070e('0x38')){var _0x33c5f8={};_0x33c5f8[_0x3dfbf7['name']]={'$like':'%'+_0x4763c6[_0x070e('0x2c')][_0x070e('0x37')]+'%'};return _0x33c5f8;}})});}_0x374c54=_[_0x070e('0x39')]({},_0x374c54,_0x4763c6['options']);var _0x268c5d={'where':_0x374c54[_0x070e('0x35')]};return db[_0x070e('0x27')]['count'](_0x268c5d)[_0x070e('0x20')](function(_0x348092){_0x1d72d6['count']=_0x348092;if(_0x4763c6[_0x070e('0x2c')]['includeAll']){_0x374c54[_0x070e('0x3a')]=[{'all':!![]}];}return db[_0x070e('0x27')][_0x070e('0x3b')](_0x374c54);})[_0x070e('0x20')](function(_0xd03404){_0x1d72d6['rows']=_0xd03404;return _0x1d72d6;})[_0x070e('0x20')](respondWithFilteredResult(_0x497f58,_0x374c54))['catch'](handleError(_0x497f58,null));};exports['show']=function(_0x398168,_0x42c448){var _0x38879f={'raw':!![],'where':{'id':_0x398168[_0x070e('0x3c')]['id']}},_0x4d52ff={};_0x4d52ff[_0x070e('0x2b')]=_[_0x070e('0x2d')](db[_0x070e('0x27')]['rawAttributes']);_0x4d52ff[_0x070e('0x2c')]=_['keys'](_0x398168['query']);_0x4d52ff['filters']=_[_0x070e('0x2e')](_0x4d52ff[_0x070e('0x2b')],_0x4d52ff[_0x070e('0x2c')]);_0x38879f[_0x070e('0x2f')]=_[_0x070e('0x2e')](_0x4d52ff['model'],qs[_0x070e('0x30')](_0x398168['query'][_0x070e('0x30')]));_0x38879f[_0x070e('0x2f')]=_0x38879f[_0x070e('0x2f')]['length']?_0x38879f['attributes']:_0x4d52ff[_0x070e('0x2b')];if(_0x398168['query'][_0x070e('0x3d')]){_0x38879f[_0x070e('0x3a')]=[{'all':!![]}];}_0x38879f=_[_0x070e('0x39')]({},_0x38879f,_0x398168['options']);return db[_0x070e('0x27')][_0x070e('0x3e')](_0x38879f)['then'](handleEntityNotFound(_0x42c448,null))['then'](respondWithResult(_0x42c448,null))[_0x070e('0x3f')](handleError(_0x42c448,null));};exports[_0x070e('0x40')]=function(_0x2d43ce,_0x1fc7c4){return db[_0x070e('0x27')]['create'](_0x2d43ce[_0x070e('0x41')],{})[_0x070e('0x20')](respondWithResult(_0x1fc7c4,0xc9))[_0x070e('0x3f')](handleError(_0x1fc7c4,null));};exports[_0x070e('0x1e')]=function(_0x79eaa0,_0xcd1c61){if(_0x79eaa0[_0x070e('0x41')]['id']){delete _0x79eaa0[_0x070e('0x41')]['id'];}return db[_0x070e('0x27')][_0x070e('0x3e')]({'where':{'id':_0x79eaa0[_0x070e('0x3c')]['id']}})[_0x070e('0x20')](handleEntityNotFound(_0xcd1c61,null))[_0x070e('0x20')](saveUpdates(_0x79eaa0[_0x070e('0x41')],null))[_0x070e('0x20')](respondWithResult(_0xcd1c61,null))['catch'](handleError(_0xcd1c61,null));};exports[_0x070e('0x1f')]=function(_0xa7a41b,_0x40298a){return db[_0x070e('0x27')][_0x070e('0x3e')]({'where':{'id':_0xa7a41b[_0x070e('0x3c')]['id']}})[_0x070e('0x20')](handleEntityNotFound(_0x40298a,null))[_0x070e('0x20')](removeEntity(_0x40298a,null))[_0x070e('0x3f')](handleError(_0x40298a,null));};exports['describe']=function(_0x251696,_0x4c22da){return db[_0x070e('0x27')][_0x070e('0x42')]()['then'](respondWithResult(_0x4c22da,null))[_0x070e('0x3f')](handleError(_0x4c22da,null));};
\ No newline at end of file
+var _0xc9bf=['params','rawAttributes','create','body','find','describe','eml-format','rimraf','request-promise','bluebird','mustache','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','count','limit','reject','save','update','then','destroy','end','stack','name','send','index','fieldName','key','model','map','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','VIRTUAL','merge','options','includeAll','include','SquareReport','findAll','rows','catch','show'];(function(_0x2c3869,_0x21269c){var _0xf7ef10=function(_0x165435){while(--_0x165435){_0x2c3869['push'](_0x2c3869['shift']());}};_0xf7ef10(++_0x21269c);}(_0xc9bf,0x94));var _0xfc9b=function(_0x16597d,_0x570f93){_0x16597d=_0x16597d-0x0;var _0x1c79bb=_0xc9bf[_0x16597d];return _0x1c79bb;};'use strict';var emlformat=require(_0xfc9b('0x0'));var rimraf=require(_0xfc9b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xfc9b('0x2'));var moment=require('moment');var BPromise=require(_0xfc9b('0x3'));var Mustache=require(_0xfc9b('0x4'));var util=require('util');var path=require('path');var sox=require(_0xfc9b('0x5'));var csv=require(_0xfc9b('0x6'));var ejs=require(_0xfc9b('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xfc9b('0x8'));var squel=require(_0xfc9b('0x9'));var crypto=require(_0xfc9b('0xa'));var jsforce=require(_0xfc9b('0xb'));var deskjs=require(_0xfc9b('0xc'));var toCsv=require(_0xfc9b('0x6'));var querystring=require(_0xfc9b('0xd'));var Papa=require(_0xfc9b('0xe'));var Redis=require('ioredis');var authService=require(_0xfc9b('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xfc9b('0x10'))(_0xfc9b('0x11'));var utils=require(_0xfc9b('0x12'));var config=require(_0xfc9b('0x13'));var licenseUtil=require(_0xfc9b('0x14'));var db=require(_0xfc9b('0x15'))['db'];function respondWithStatusCode(_0x34d524,_0x577ffb){_0x577ffb=_0x577ffb||0xcc;return function(_0x213cb8){if(_0x213cb8){return _0x34d524['sendStatus'](_0x577ffb);}return _0x34d524[_0xfc9b('0x16')](_0x577ffb)['end']();};}function respondWithResult(_0x140290,_0xa444ec){_0xa444ec=_0xa444ec||0xc8;return function(_0xedb28f){if(_0xedb28f){return _0x140290[_0xfc9b('0x16')](_0xa444ec)[_0xfc9b('0x17')](_0xedb28f);}};}function respondWithFilteredResult(_0x243e84,_0x4bcbeb){return function(_0x5cccbe){if(_0x5cccbe){var _0x47221b=typeof _0x4bcbeb[_0xfc9b('0x18')]===_0xfc9b('0x19')&&typeof _0x4bcbeb['limit']===_0xfc9b('0x19');var _0x1a8747=_0x5cccbe[_0xfc9b('0x1a')];var _0x1a541f=_0x47221b?0x0:_0x4bcbeb[_0xfc9b('0x18')];var _0x5e19da=_0x47221b?_0x5cccbe[_0xfc9b('0x1a')]:_0x4bcbeb[_0xfc9b('0x18')]+_0x4bcbeb[_0xfc9b('0x1b')];var _0x15ff11;if(_0x5e19da>=_0x1a8747){_0x5e19da=_0x1a8747;_0x15ff11=0xc8;}else{_0x15ff11=0xce;}_0x243e84[_0xfc9b('0x16')](_0x15ff11);return _0x243e84['set']('Content-Range',_0x1a541f+'-'+_0x5e19da+'/'+_0x1a8747)[_0xfc9b('0x17')](_0x5cccbe);}return null;};}function patchUpdates(_0x2fe33b){return function(_0x59a8db){try{jsonpatch['apply'](_0x59a8db,_0x2fe33b,!![]);}catch(_0x5698a0){return BPromise[_0xfc9b('0x1c')](_0x5698a0);}return _0x59a8db[_0xfc9b('0x1d')]();};}function saveUpdates(_0x401f93,_0x5bc148){return function(_0x552ad9){if(_0x552ad9){return _0x552ad9[_0xfc9b('0x1e')](_0x401f93)[_0xfc9b('0x1f')](function(_0x4979ab){return _0x4979ab;});}return null;};}function removeEntity(_0x25aa81,_0x3191fd){return function(_0x17d64a){if(_0x17d64a){return _0x17d64a[_0xfc9b('0x20')]()[_0xfc9b('0x1f')](function(){_0x25aa81[_0xfc9b('0x16')](0xcc)[_0xfc9b('0x21')]();});}};}function handleEntityNotFound(_0x567557,_0x58b125){return function(_0x406359){if(!_0x406359){_0x567557['sendStatus'](0x194);}return _0x406359;};}function handleError(_0x2093e4,_0x1d86e9){_0x1d86e9=_0x1d86e9||0x1f4;return function(_0x1bb846){logger['error'](_0x1bb846[_0xfc9b('0x22')]);if(_0x1bb846[_0xfc9b('0x23')]){delete _0x1bb846[_0xfc9b('0x23')];}_0x2093e4[_0xfc9b('0x16')](_0x1d86e9)[_0xfc9b('0x24')](_0x1bb846);};}exports[_0xfc9b('0x25')]=function(_0x3175fb,_0x103bb3){var _0x4d905f={},_0x1e652c={},_0x4e6a39={'count':0x0,'rows':[]};var _0x405dfd=_['map'](db['SquareReport']['rawAttributes'],function(_0x841329){return{'name':_0x841329[_0xfc9b('0x26')],'type':_0x841329['type'][_0xfc9b('0x27')]};});_0x1e652c[_0xfc9b('0x28')]=_[_0xfc9b('0x29')](_0x405dfd,_0xfc9b('0x23'));_0x1e652c[_0xfc9b('0x2a')]=_[_0xfc9b('0x2b')](_0x3175fb[_0xfc9b('0x2a')]);_0x1e652c['filters']=_[_0xfc9b('0x2c')](_0x1e652c[_0xfc9b('0x28')],_0x1e652c[_0xfc9b('0x2a')]);_0x4d905f[_0xfc9b('0x2d')]=_[_0xfc9b('0x2c')](_0x1e652c['model'],qs[_0xfc9b('0x2e')](_0x3175fb[_0xfc9b('0x2a')][_0xfc9b('0x2e')]));_0x4d905f[_0xfc9b('0x2d')]=_0x4d905f[_0xfc9b('0x2d')][_0xfc9b('0x2f')]?_0x4d905f['attributes']:_0x1e652c[_0xfc9b('0x28')];if(!_0x3175fb[_0xfc9b('0x2a')][_0xfc9b('0x30')](_0xfc9b('0x31'))){_0x4d905f[_0xfc9b('0x1b')]=qs[_0xfc9b('0x1b')](_0x3175fb[_0xfc9b('0x2a')]['limit']);_0x4d905f['offset']=qs[_0xfc9b('0x18')](_0x3175fb[_0xfc9b('0x2a')][_0xfc9b('0x18')]);}_0x4d905f['order']=qs[_0xfc9b('0x32')](_0x3175fb['query']['sort']);_0x4d905f[_0xfc9b('0x33')]=qs[_0xfc9b('0x34')](_[_0xfc9b('0x35')](_0x3175fb['query'],_0x1e652c[_0xfc9b('0x34')]),_0x405dfd);if(_0x3175fb[_0xfc9b('0x2a')][_0xfc9b('0x36')]){_0x4d905f[_0xfc9b('0x33')]=_['merge'](_0x4d905f['where'],{'$or':_[_0xfc9b('0x29')](_0x405dfd,function(_0x1e89a6){if(_0x1e89a6['type']!==_0xfc9b('0x37')){var _0x1b4610={};_0x1b4610[_0x1e89a6[_0xfc9b('0x23')]]={'$like':'%'+_0x3175fb[_0xfc9b('0x2a')][_0xfc9b('0x36')]+'%'};return _0x1b4610;}})});}_0x4d905f=_[_0xfc9b('0x38')]({},_0x4d905f,_0x3175fb[_0xfc9b('0x39')]);var _0x5ccaec={'where':_0x4d905f['where']};return db['SquareReport'][_0xfc9b('0x1a')](_0x5ccaec)[_0xfc9b('0x1f')](function(_0x5e343f){_0x4e6a39[_0xfc9b('0x1a')]=_0x5e343f;if(_0x3175fb[_0xfc9b('0x2a')][_0xfc9b('0x3a')]){_0x4d905f[_0xfc9b('0x3b')]=[{'all':!![]}];}return db[_0xfc9b('0x3c')][_0xfc9b('0x3d')](_0x4d905f);})['then'](function(_0x898c55){_0x4e6a39[_0xfc9b('0x3e')]=_0x898c55;return _0x4e6a39;})['then'](respondWithFilteredResult(_0x103bb3,_0x4d905f))[_0xfc9b('0x3f')](handleError(_0x103bb3,null));};exports[_0xfc9b('0x40')]=function(_0x1e6508,_0x4c1755){var _0x985866={'raw':!![],'where':{'id':_0x1e6508[_0xfc9b('0x41')]['id']}},_0x551466={};_0x551466[_0xfc9b('0x28')]=_['keys'](db[_0xfc9b('0x3c')][_0xfc9b('0x42')]);_0x551466['query']=_[_0xfc9b('0x2b')](_0x1e6508[_0xfc9b('0x2a')]);_0x551466[_0xfc9b('0x34')]=_[_0xfc9b('0x2c')](_0x551466['model'],_0x551466[_0xfc9b('0x2a')]);_0x985866[_0xfc9b('0x2d')]=_[_0xfc9b('0x2c')](_0x551466[_0xfc9b('0x28')],qs['fields'](_0x1e6508[_0xfc9b('0x2a')][_0xfc9b('0x2e')]));_0x985866[_0xfc9b('0x2d')]=_0x985866[_0xfc9b('0x2d')]['length']?_0x985866[_0xfc9b('0x2d')]:_0x551466[_0xfc9b('0x28')];if(_0x1e6508['query']['includeAll']){_0x985866[_0xfc9b('0x3b')]=[{'all':!![]}];}_0x985866=_[_0xfc9b('0x38')]({},_0x985866,_0x1e6508[_0xfc9b('0x39')]);return db['SquareReport']['find'](_0x985866)[_0xfc9b('0x1f')](handleEntityNotFound(_0x4c1755,null))[_0xfc9b('0x1f')](respondWithResult(_0x4c1755,null))[_0xfc9b('0x3f')](handleError(_0x4c1755,null));};exports['create']=function(_0x1bc567,_0x549d9d){return db['SquareReport'][_0xfc9b('0x43')](_0x1bc567[_0xfc9b('0x44')],{})['then'](respondWithResult(_0x549d9d,0xc9))['catch'](handleError(_0x549d9d,null));};exports[_0xfc9b('0x1e')]=function(_0x5a84b5,_0x3d843d){if(_0x5a84b5[_0xfc9b('0x44')]['id']){delete _0x5a84b5['body']['id'];}return db[_0xfc9b('0x3c')][_0xfc9b('0x45')]({'where':{'id':_0x5a84b5[_0xfc9b('0x41')]['id']}})[_0xfc9b('0x1f')](handleEntityNotFound(_0x3d843d,null))[_0xfc9b('0x1f')](saveUpdates(_0x5a84b5['body'],null))['then'](respondWithResult(_0x3d843d,null))['catch'](handleError(_0x3d843d,null));};exports[_0xfc9b('0x20')]=function(_0x4d9d67,_0x47ae55){return db[_0xfc9b('0x3c')][_0xfc9b('0x45')]({'where':{'id':_0x4d9d67[_0xfc9b('0x41')]['id']}})['then'](handleEntityNotFound(_0x47ae55,null))[_0xfc9b('0x1f')](removeEntity(_0x47ae55,null))[_0xfc9b('0x3f')](handleError(_0x47ae55,null));};exports[_0xfc9b('0x46')]=function(_0x4e0466,_0x3bcead){return db[_0xfc9b('0x3c')]['describe']()[_0xfc9b('0x1f')](respondWithResult(_0x3bcead,null))[_0xfc9b('0x3f')](handleError(_0x3bcead,null));};
\ No newline at end of file