Built motion from commit (unavailable).|2.5.24
[motion2.git] / server / api / squareReport / squareReport.controller.js
index 1766811..cbf40c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa7ee=['mustache','path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','set','save','then','destroy','error','name','send','index','map','SquareReport','fieldName','type','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','limit','order','sort','where','pick','filter','merge','options','count','includeAll','findAll','rows','catch','show','params','keys','rawAttributes','include','find','body','update','describe','html-pdf','rimraf','zip-dir','fast-json-patch','request-promise'];(function(_0x315924,_0x29a05a){var _0x54622c=function(_0x2b5061){while(--_0x2b5061){_0x315924['push'](_0x315924['shift']());}};_0x54622c(++_0x29a05a);}(_0xa7ee,0x159));var _0xea7e=function(_0x25b4a4,_0x2e081b){_0x25b4a4=_0x25b4a4-0x0;var _0x707267=_0xa7ee[_0x25b4a4];return _0x707267;};'use strict';var pdf=require(_0xea7e('0x0'));var emlformat=require('eml-format');var rimraf=require(_0xea7e('0x1'));var zipdir=require(_0xea7e('0x2'));var jsonpatch=require(_0xea7e('0x3'));var rp=require(_0xea7e('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xea7e('0x5'));var util=require('util');var path=require(_0xea7e('0x6'));var sox=require(_0xea7e('0x7'));var csv=require(_0xea7e('0x8'));var ejs=require(_0xea7e('0x9'));var fs=require('fs');var _=require('lodash');var squel=require(_0xea7e('0xa'));var crypto=require(_0xea7e('0xb'));var jsforce=require(_0xea7e('0xc'));var deskjs=require(_0xea7e('0xd'));var toCsv=require(_0xea7e('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xea7e('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xea7e('0xf'));var as=require(_0xea7e('0x10'));var hardwareService=require(_0xea7e('0x11'));var logger=require(_0xea7e('0x12'))('api');var utils=require(_0xea7e('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0xea7e('0x14'));var db=require(_0xea7e('0x15'))['db'];function respondWithStatusCode(_0x138555,_0x1d2702){_0x1d2702=_0x1d2702||0xcc;return function(_0x97ec09){if(_0x97ec09){return _0x138555[_0xea7e('0x16')](_0x1d2702);}return _0x138555[_0xea7e('0x17')](_0x1d2702)[_0xea7e('0x18')]();};}function respondWithResult(_0x4c5137,_0x25317c){_0x25317c=_0x25317c||0xc8;return function(_0x3ef916){if(_0x3ef916){return _0x4c5137[_0xea7e('0x17')](_0x25317c)[_0xea7e('0x19')](_0x3ef916);}};}function respondWithFilteredResult(_0x57d27e,_0x18f7f0){return function(_0x4d3796){if(_0x4d3796){var _0x5c7466=_0x4d3796['count'],_0x3cd795=_0x18f7f0['offset'],_0x2d5794=_0x18f7f0[_0xea7e('0x1a')]+_0x18f7f0['limit'],_0x162c47;if(_0x2d5794>=_0x5c7466){_0x2d5794=_0x5c7466;_0x162c47=0xc8;}else{_0x162c47=0xce;}_0x57d27e[_0xea7e('0x17')](_0x162c47);return _0x57d27e[_0xea7e('0x1b')]('Content-Range',_0x3cd795+'-'+_0x2d5794+'/'+_0x5c7466)['json'](_0x4d3796);}return null;};}function patchUpdates(_0x408887){return function(_0x59e8d8){try{jsonpatch['apply'](_0x59e8d8,_0x408887,!![]);}catch(_0x406aff){return BPromise['reject'](_0x406aff);}return _0x59e8d8[_0xea7e('0x1c')]();};}function saveUpdates(_0x1def2a,_0x5c8d42){return function(_0x37c489){if(_0x37c489){return _0x37c489['update'](_0x1def2a)[_0xea7e('0x1d')](function(_0x387bc8){return _0x387bc8;});}return null;};}function removeEntity(_0xf779ad,_0xd441f8){return function(_0x372b9d){if(_0x372b9d){return _0x372b9d[_0xea7e('0x1e')]()['then'](function(){_0xf779ad[_0xea7e('0x17')](0xcc)[_0xea7e('0x18')]();});}};}function handleEntityNotFound(_0x4e8b96,_0xb8149f){return function(_0x344ec6){if(!_0x344ec6){_0x4e8b96[_0xea7e('0x16')](0x194);}return _0x344ec6;};}function handleError(_0x542a9b,_0x296b2a){_0x296b2a=_0x296b2a||0x1f4;return function(_0x400125){logger[_0xea7e('0x1f')](_0x400125['stack']);if(_0x400125[_0xea7e('0x20')]){delete _0x400125[_0xea7e('0x20')];}_0x542a9b[_0xea7e('0x17')](_0x296b2a)[_0xea7e('0x21')](_0x400125);};}exports[_0xea7e('0x22')]=function(_0x789f9e,_0x31871e){var _0x25b5a4={},_0x1067cd={},_0x10bbc1={'count':0x0,'rows':[]};var _0x4a23a9=_[_0xea7e('0x23')](db[_0xea7e('0x24')]['rawAttributes'],function(_0x2a1753){return{'name':_0x2a1753[_0xea7e('0x25')],'type':_0x2a1753[_0xea7e('0x26')][_0xea7e('0x27')]};});_0x1067cd[_0xea7e('0x28')]=_['map'](_0x4a23a9,_0xea7e('0x20'));_0x1067cd[_0xea7e('0x29')]=_['keys'](_0x789f9e[_0xea7e('0x29')]);_0x1067cd[_0xea7e('0x2a')]=_['intersection'](_0x1067cd[_0xea7e('0x28')],_0x1067cd['query']);_0x25b5a4[_0xea7e('0x2b')]=_[_0xea7e('0x2c')](_0x1067cd[_0xea7e('0x28')],qs[_0xea7e('0x2d')](_0x789f9e[_0xea7e('0x29')][_0xea7e('0x2d')]));_0x25b5a4['attributes']=_0x25b5a4[_0xea7e('0x2b')][_0xea7e('0x2e')]?_0x25b5a4[_0xea7e('0x2b')]:_0x1067cd[_0xea7e('0x28')];if(!_0x789f9e[_0xea7e('0x29')][_0xea7e('0x2f')]('nolimit')){_0x25b5a4['limit']=qs[_0xea7e('0x30')](_0x789f9e[_0xea7e('0x29')][_0xea7e('0x30')]);_0x25b5a4['offset']=qs[_0xea7e('0x1a')](_0x789f9e[_0xea7e('0x29')][_0xea7e('0x1a')]);}_0x25b5a4[_0xea7e('0x31')]=qs[_0xea7e('0x32')](_0x789f9e[_0xea7e('0x29')][_0xea7e('0x32')]);_0x25b5a4[_0xea7e('0x33')]=qs[_0xea7e('0x2a')](_[_0xea7e('0x34')](_0x789f9e[_0xea7e('0x29')],_0x1067cd[_0xea7e('0x2a')]),_0x4a23a9);if(_0x789f9e[_0xea7e('0x29')][_0xea7e('0x35')]){_0x25b5a4[_0xea7e('0x33')]=_['merge'](_0x25b5a4[_0xea7e('0x33')],{'$or':_[_0xea7e('0x23')](_0x4a23a9,function(_0x3f3b2f){if(_0x3f3b2f[_0xea7e('0x26')]!=='VIRTUAL'){var _0x165024={};_0x165024[_0x3f3b2f['name']]={'$like':'%'+_0x789f9e[_0xea7e('0x29')]['filter']+'%'};return _0x165024;}})});}_0x25b5a4=_[_0xea7e('0x36')]({},_0x25b5a4,_0x789f9e[_0xea7e('0x37')]);var _0x468606={'where':_0x25b5a4[_0xea7e('0x33')]};return db[_0xea7e('0x24')][_0xea7e('0x38')](_0x468606)['then'](function(_0x100f9a){_0x10bbc1[_0xea7e('0x38')]=_0x100f9a;if(_0x789f9e['query'][_0xea7e('0x39')]){_0x25b5a4['include']=[{'all':!![]}];}return db[_0xea7e('0x24')][_0xea7e('0x3a')](_0x25b5a4);})['then'](function(_0x232b0b){_0x10bbc1[_0xea7e('0x3b')]=_0x232b0b;return _0x10bbc1;})[_0xea7e('0x1d')](respondWithFilteredResult(_0x31871e,_0x25b5a4))[_0xea7e('0x3c')](handleError(_0x31871e,null));};exports[_0xea7e('0x3d')]=function(_0x14e4d3,_0x2db099){var _0x673162={'raw':!![],'where':{'id':_0x14e4d3[_0xea7e('0x3e')]['id']}},_0x2238b3={};_0x2238b3[_0xea7e('0x28')]=_[_0xea7e('0x3f')](db[_0xea7e('0x24')][_0xea7e('0x40')]);_0x2238b3['query']=_['keys'](_0x14e4d3['query']);_0x2238b3['filters']=_['intersection'](_0x2238b3['model'],_0x2238b3[_0xea7e('0x29')]);_0x673162['attributes']=_[_0xea7e('0x2c')](_0x2238b3[_0xea7e('0x28')],qs['fields'](_0x14e4d3['query'][_0xea7e('0x2d')]));_0x673162[_0xea7e('0x2b')]=_0x673162[_0xea7e('0x2b')][_0xea7e('0x2e')]?_0x673162['attributes']:_0x2238b3['model'];if(_0x14e4d3[_0xea7e('0x29')]['includeAll']){_0x673162[_0xea7e('0x41')]=[{'all':!![]}];}_0x673162=_[_0xea7e('0x36')]({},_0x673162,_0x14e4d3['options']);return db[_0xea7e('0x24')][_0xea7e('0x42')](_0x673162)['then'](handleEntityNotFound(_0x2db099,null))[_0xea7e('0x1d')](respondWithResult(_0x2db099,null))[_0xea7e('0x3c')](handleError(_0x2db099,null));};exports['create']=function(_0x5111a6,_0x231e67){return db[_0xea7e('0x24')]['create'](_0x5111a6[_0xea7e('0x43')],{})[_0xea7e('0x1d')](respondWithResult(_0x231e67,0xc9))['catch'](handleError(_0x231e67,null));};exports[_0xea7e('0x44')]=function(_0x1675ff,_0x42446c){if(_0x1675ff[_0xea7e('0x43')]['id']){delete _0x1675ff[_0xea7e('0x43')]['id'];}return db[_0xea7e('0x24')][_0xea7e('0x42')]({'where':{'id':_0x1675ff['params']['id']}})[_0xea7e('0x1d')](handleEntityNotFound(_0x42446c,null))[_0xea7e('0x1d')](saveUpdates(_0x1675ff[_0xea7e('0x43')],null))[_0xea7e('0x1d')](respondWithResult(_0x42446c,null))[_0xea7e('0x3c')](handleError(_0x42446c,null));};exports[_0xea7e('0x1e')]=function(_0x5d4528,_0x4404e5){return db[_0xea7e('0x24')][_0xea7e('0x42')]({'where':{'id':_0x5d4528[_0xea7e('0x3e')]['id']}})[_0xea7e('0x1d')](handleEntityNotFound(_0x4404e5,null))[_0xea7e('0x1d')](removeEntity(_0x4404e5,null))['catch'](handleError(_0x4404e5,null));};exports[_0xea7e('0x45')]=function(_0x44beca,_0x3e7264){return db['SquareReport'][_0xea7e('0x45')]()[_0xea7e('0x1d')](respondWithResult(_0x3e7264,null))['catch'](handleError(_0x3e7264,null));};
\ No newline at end of file
+var _0xd4ad=['rows','catch','params','keys','find','create','body','update','describe','html-pdf','eml-format','rimraf','zip-dir','request-promise','moment','util','path','to-csv','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','status','count','offset','set','json','apply','reject','save','destroy','then','sendStatus','stack','send','index','SquareReport','fieldName','type','key','map','name','query','intersection','model','fields','attributes','hasOwnProperty','nolimit','limit','order','sort','filters','pick','where','VIRTUAL','options','includeAll','include'];(function(_0xb16879,_0x5d6f57){var _0xb6c126=function(_0x442b26){while(--_0x442b26){_0xb16879['push'](_0xb16879['shift']());}};_0xb6c126(++_0x5d6f57);}(_0xd4ad,0x158));var _0xdd4a=function(_0x3136ef,_0x374200){_0x3136ef=_0x3136ef-0x0;var _0xf05ae8=_0xd4ad[_0x3136ef];return _0xf05ae8;};'use strict';var pdf=require(_0xdd4a('0x0'));var emlformat=require(_0xdd4a('0x1'));var rimraf=require(_0xdd4a('0x2'));var zipdir=require(_0xdd4a('0x3'));var jsonpatch=require('fast-json-patch');var rp=require(_0xdd4a('0x4'));var moment=require(_0xdd4a('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xdd4a('0x6'));var path=require(_0xdd4a('0x7'));var sox=require('sox');var csv=require(_0xdd4a('0x8'));var ejs=require('ejs');var fs=require('fs');var _=require(_0xdd4a('0x9'));var squel=require(_0xdd4a('0xa'));var crypto=require('crypto');var jsforce=require(_0xdd4a('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xdd4a('0x8'));var querystring=require(_0xdd4a('0xc'));var Papa=require(_0xdd4a('0xd'));var Redis=require(_0xdd4a('0xe'));var authService=require(_0xdd4a('0xf'));var qs=require(_0xdd4a('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xdd4a('0x11'))('api');var utils=require(_0xdd4a('0x12'));var config=require(_0xdd4a('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0xdd4a('0x14'))['db'];function respondWithStatusCode(_0x28d34a,_0x5dbd15){_0x5dbd15=_0x5dbd15||0xcc;return function(_0x470d57){if(_0x470d57){return _0x28d34a['sendStatus'](_0x5dbd15);}return _0x28d34a[_0xdd4a('0x15')](_0x5dbd15)['end']();};}function respondWithResult(_0xdf80d0,_0x5bdf76){_0x5bdf76=_0x5bdf76||0xc8;return function(_0x4d4e47){if(_0x4d4e47){return _0xdf80d0[_0xdd4a('0x15')](_0x5bdf76)['json'](_0x4d4e47);}};}function respondWithFilteredResult(_0x4bf24d,_0x5e89c7){return function(_0x2971b6){if(_0x2971b6){var _0x898d87=_0x2971b6[_0xdd4a('0x16')],_0xe41bc0=_0x5e89c7[_0xdd4a('0x17')],_0x2bdd14=_0x5e89c7[_0xdd4a('0x17')]+_0x5e89c7['limit'],_0x37d755;if(_0x2bdd14>=_0x898d87){_0x2bdd14=_0x898d87;_0x37d755=0xc8;}else{_0x37d755=0xce;}_0x4bf24d[_0xdd4a('0x15')](_0x37d755);return _0x4bf24d[_0xdd4a('0x18')]('Content-Range',_0xe41bc0+'-'+_0x2bdd14+'/'+_0x898d87)[_0xdd4a('0x19')](_0x2971b6);}return null;};}function patchUpdates(_0x44215f){return function(_0x571224){try{jsonpatch[_0xdd4a('0x1a')](_0x571224,_0x44215f,!![]);}catch(_0x2d690a){return BPromise[_0xdd4a('0x1b')](_0x2d690a);}return _0x571224[_0xdd4a('0x1c')]();};}function saveUpdates(_0x46a9ba,_0xf15ea){return function(_0x1ecbec){if(_0x1ecbec){return _0x1ecbec['update'](_0x46a9ba)['then'](function(_0x590023){return _0x590023;});}return null;};}function removeEntity(_0x55e2ac,_0x3585b7){return function(_0x3ae056){if(_0x3ae056){return _0x3ae056[_0xdd4a('0x1d')]()[_0xdd4a('0x1e')](function(){_0x55e2ac[_0xdd4a('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x166fc6,_0x1b3840){return function(_0x46cb1e){if(!_0x46cb1e){_0x166fc6[_0xdd4a('0x1f')](0x194);}return _0x46cb1e;};}function handleError(_0x574050,_0x57ad5d){_0x57ad5d=_0x57ad5d||0x1f4;return function(_0x5301ee){logger['error'](_0x5301ee[_0xdd4a('0x20')]);if(_0x5301ee['name']){delete _0x5301ee['name'];}_0x574050[_0xdd4a('0x15')](_0x57ad5d)[_0xdd4a('0x21')](_0x5301ee);};}exports[_0xdd4a('0x22')]=function(_0xc29ce4,_0x6eaea3){var _0x28e499={},_0x4d2b89={},_0x29ca5c={'count':0x0,'rows':[]};var _0x3baba8=_['map'](db[_0xdd4a('0x23')]['rawAttributes'],function(_0x5f1a9e){return{'name':_0x5f1a9e[_0xdd4a('0x24')],'type':_0x5f1a9e[_0xdd4a('0x25')][_0xdd4a('0x26')]};});_0x4d2b89['model']=_[_0xdd4a('0x27')](_0x3baba8,_0xdd4a('0x28'));_0x4d2b89[_0xdd4a('0x29')]=_['keys'](_0xc29ce4[_0xdd4a('0x29')]);_0x4d2b89['filters']=_[_0xdd4a('0x2a')](_0x4d2b89[_0xdd4a('0x2b')],_0x4d2b89[_0xdd4a('0x29')]);_0x28e499['attributes']=_[_0xdd4a('0x2a')](_0x4d2b89[_0xdd4a('0x2b')],qs['fields'](_0xc29ce4[_0xdd4a('0x29')][_0xdd4a('0x2c')]));_0x28e499['attributes']=_0x28e499[_0xdd4a('0x2d')]['length']?_0x28e499[_0xdd4a('0x2d')]:_0x4d2b89[_0xdd4a('0x2b')];if(!_0xc29ce4[_0xdd4a('0x29')][_0xdd4a('0x2e')](_0xdd4a('0x2f'))){_0x28e499['limit']=qs[_0xdd4a('0x30')](_0xc29ce4[_0xdd4a('0x29')][_0xdd4a('0x30')]);_0x28e499[_0xdd4a('0x17')]=qs[_0xdd4a('0x17')](_0xc29ce4['query']['offset']);}_0x28e499[_0xdd4a('0x31')]=qs[_0xdd4a('0x32')](_0xc29ce4['query'][_0xdd4a('0x32')]);_0x28e499['where']=qs[_0xdd4a('0x33')](_[_0xdd4a('0x34')](_0xc29ce4['query'],_0x4d2b89[_0xdd4a('0x33')]),_0x3baba8);if(_0xc29ce4[_0xdd4a('0x29')]['filter']){_0x28e499[_0xdd4a('0x35')]=_['merge'](_0x28e499['where'],{'$or':_[_0xdd4a('0x27')](_0x3baba8,function(_0x26cb9e){if(_0x26cb9e[_0xdd4a('0x25')]!==_0xdd4a('0x36')){var _0x2b2cc6={};_0x2b2cc6[_0x26cb9e[_0xdd4a('0x28')]]={'$like':'%'+_0xc29ce4[_0xdd4a('0x29')]['filter']+'%'};return _0x2b2cc6;}})});}_0x28e499=_['merge']({},_0x28e499,_0xc29ce4[_0xdd4a('0x37')]);var _0x2f4417={'where':_0x28e499['where']};return db[_0xdd4a('0x23')][_0xdd4a('0x16')](_0x2f4417)[_0xdd4a('0x1e')](function(_0x3be38e){_0x29ca5c['count']=_0x3be38e;if(_0xc29ce4['query'][_0xdd4a('0x38')]){_0x28e499[_0xdd4a('0x39')]=[{'all':!![]}];}return db[_0xdd4a('0x23')]['findAll'](_0x28e499);})[_0xdd4a('0x1e')](function(_0x37ecdb){_0x29ca5c[_0xdd4a('0x3a')]=_0x37ecdb;return _0x29ca5c;})[_0xdd4a('0x1e')](respondWithFilteredResult(_0x6eaea3,_0x28e499))[_0xdd4a('0x3b')](handleError(_0x6eaea3,null));};exports['show']=function(_0x2f079d,_0x36aaa0){var _0x281011={'raw':!![],'where':{'id':_0x2f079d[_0xdd4a('0x3c')]['id']}},_0x18186b={};_0x18186b['model']=_[_0xdd4a('0x3d')](db[_0xdd4a('0x23')]['rawAttributes']);_0x18186b[_0xdd4a('0x29')]=_[_0xdd4a('0x3d')](_0x2f079d[_0xdd4a('0x29')]);_0x18186b[_0xdd4a('0x33')]=_['intersection'](_0x18186b['model'],_0x18186b[_0xdd4a('0x29')]);_0x281011['attributes']=_[_0xdd4a('0x2a')](_0x18186b[_0xdd4a('0x2b')],qs[_0xdd4a('0x2c')](_0x2f079d[_0xdd4a('0x29')][_0xdd4a('0x2c')]));_0x281011[_0xdd4a('0x2d')]=_0x281011[_0xdd4a('0x2d')]['length']?_0x281011[_0xdd4a('0x2d')]:_0x18186b[_0xdd4a('0x2b')];if(_0x2f079d[_0xdd4a('0x29')][_0xdd4a('0x38')]){_0x281011[_0xdd4a('0x39')]=[{'all':!![]}];}_0x281011=_['merge']({},_0x281011,_0x2f079d[_0xdd4a('0x37')]);return db[_0xdd4a('0x23')][_0xdd4a('0x3e')](_0x281011)[_0xdd4a('0x1e')](handleEntityNotFound(_0x36aaa0,null))[_0xdd4a('0x1e')](respondWithResult(_0x36aaa0,null))[_0xdd4a('0x3b')](handleError(_0x36aaa0,null));};exports[_0xdd4a('0x3f')]=function(_0x19264b,_0x23f844){return db[_0xdd4a('0x23')][_0xdd4a('0x3f')](_0x19264b[_0xdd4a('0x40')],{})[_0xdd4a('0x1e')](respondWithResult(_0x23f844,0xc9))[_0xdd4a('0x3b')](handleError(_0x23f844,null));};exports[_0xdd4a('0x41')]=function(_0x1a8bca,_0x583cfb){if(_0x1a8bca[_0xdd4a('0x40')]['id']){delete _0x1a8bca['body']['id'];}return db[_0xdd4a('0x23')][_0xdd4a('0x3e')]({'where':{'id':_0x1a8bca[_0xdd4a('0x3c')]['id']}})[_0xdd4a('0x1e')](handleEntityNotFound(_0x583cfb,null))[_0xdd4a('0x1e')](saveUpdates(_0x1a8bca['body'],null))[_0xdd4a('0x1e')](respondWithResult(_0x583cfb,null))['catch'](handleError(_0x583cfb,null));};exports['destroy']=function(_0x38a452,_0x24da0c){return db[_0xdd4a('0x23')][_0xdd4a('0x3e')]({'where':{'id':_0x38a452[_0xdd4a('0x3c')]['id']}})[_0xdd4a('0x1e')](handleEntityNotFound(_0x24da0c,null))['then'](removeEntity(_0x24da0c,null))[_0xdd4a('0x3b')](handleError(_0x24da0c,null));};exports[_0xdd4a('0x42')]=function(_0x4ef2ad,_0x978700){return db[_0xdd4a('0x23')]['describe']()[_0xdd4a('0x1e')](respondWithResult(_0x978700,null))[_0xdd4a('0x3b')](handleError(_0x978700,null));};
\ No newline at end of file