Built motion from commit a679711e.|2.6.15
[motion2.git] / server / api / intVtigerField / intVtigerField.controller.js
index c6dbf39..9645a0d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d15=['end','status','offset','undefined','set','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','VtigerField','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','VIRTUAL','merge','options','count','includeAll','include','findAll','rows','catch','rawAttributes','create','body','find','params','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus'];(function(_0x4a3898,_0x4c9853){var _0x25ceb0=function(_0x528b6d){while(--_0x528b6d){_0x4a3898['push'](_0x4a3898['shift']());}};_0x25ceb0(++_0x4c9853);}(_0x4d15,0x111));var _0x54d1=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x4d15[_0x4565bf];return _0x5610ba;};'use strict';var emlformat=require(_0x54d1('0x0'));var rimraf=require(_0x54d1('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x54d1('0x2'));var rp=require(_0x54d1('0x3'));var moment=require(_0x54d1('0x4'));var BPromise=require(_0x54d1('0x5'));var Mustache=require(_0x54d1('0x6'));var util=require('util');var path=require(_0x54d1('0x7'));var sox=require('sox');var csv=require(_0x54d1('0x8'));var ejs=require(_0x54d1('0x9'));var fs=require('fs');var fs_extra=require(_0x54d1('0xa'));var _=require('lodash');var squel=require(_0x54d1('0xb'));var crypto=require(_0x54d1('0xc'));var jsforce=require(_0x54d1('0xd'));var deskjs=require(_0x54d1('0xe'));var toCsv=require(_0x54d1('0x8'));var querystring=require('querystring');var Papa=require(_0x54d1('0xf'));var Redis=require(_0x54d1('0x10'));var authService=require(_0x54d1('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x54d1('0x12'));var hardwareService=require(_0x54d1('0x13'));var logger=require(_0x54d1('0x14'))(_0x54d1('0x15'));var utils=require(_0x54d1('0x16'));var config=require(_0x54d1('0x17'));var licenseUtil=require(_0x54d1('0x18'));var db=require(_0x54d1('0x19'))['db'];function respondWithStatusCode(_0xd0d154,_0x1edd0c){_0x1edd0c=_0x1edd0c||0xcc;return function(_0x529e5e){if(_0x529e5e){return _0xd0d154[_0x54d1('0x1a')](_0x1edd0c);}return _0xd0d154['status'](_0x1edd0c)[_0x54d1('0x1b')]();};}function respondWithResult(_0x218300,_0x529332){_0x529332=_0x529332||0xc8;return function(_0x4521ab){if(_0x4521ab){return _0x218300[_0x54d1('0x1c')](_0x529332)['json'](_0x4521ab);}};}function respondWithFilteredResult(_0xc44531,_0x3667d4){return function(_0x11ee86){if(_0x11ee86){var _0x525701=typeof _0x3667d4[_0x54d1('0x1d')]===_0x54d1('0x1e')&&typeof _0x3667d4['limit']===_0x54d1('0x1e');var _0xc6e072=_0x11ee86['count'];var _0x588ff5=_0x525701?0x0:_0x3667d4[_0x54d1('0x1d')];var _0x863c60=_0x525701?_0x11ee86['count']:_0x3667d4[_0x54d1('0x1d')]+_0x3667d4['limit'];var _0x1be053;if(_0x863c60>=_0xc6e072){_0x863c60=_0xc6e072;_0x1be053=0xc8;}else{_0x1be053=0xce;}_0xc44531[_0x54d1('0x1c')](_0x1be053);return _0xc44531[_0x54d1('0x1f')]('Content-Range',_0x588ff5+'-'+_0x863c60+'/'+_0xc6e072)['json'](_0x11ee86);}return null;};}function patchUpdates(_0x41ecf8){return function(_0x25efb8){try{jsonpatch[_0x54d1('0x20')](_0x25efb8,_0x41ecf8,!![]);}catch(_0x3e0901){return BPromise[_0x54d1('0x21')](_0x3e0901);}return _0x25efb8[_0x54d1('0x22')]();};}function saveUpdates(_0x39bf80,_0x1a4845){return function(_0x154d20){if(_0x154d20){return _0x154d20[_0x54d1('0x23')](_0x39bf80)[_0x54d1('0x24')](function(_0x5b3098){return _0x5b3098;});}return null;};}function removeEntity(_0x5afaaa,_0xa1c6ea){return function(_0xd4dda0){if(_0xd4dda0){return _0xd4dda0[_0x54d1('0x25')]()[_0x54d1('0x24')](function(){_0x5afaaa[_0x54d1('0x1c')](0xcc)[_0x54d1('0x1b')]();});}};}function handleEntityNotFound(_0x511d53,_0x1932b6){return function(_0x60b94d){if(!_0x60b94d){_0x511d53[_0x54d1('0x1a')](0x194);}return _0x60b94d;};}function handleError(_0x15b40e,_0x29fe87){_0x29fe87=_0x29fe87||0x1f4;return function(_0x1f6e70){logger[_0x54d1('0x26')](_0x1f6e70[_0x54d1('0x27')]);if(_0x1f6e70[_0x54d1('0x28')]){delete _0x1f6e70[_0x54d1('0x28')];}_0x15b40e['status'](_0x29fe87)[_0x54d1('0x29')](_0x1f6e70);};}exports[_0x54d1('0x2a')]=function(_0x4a83e5,_0x2f9d8d){var _0x2c2cc7={},_0x364e7c={},_0x3bb740={'count':0x0,'rows':[]};var _0x22ba7f=_[_0x54d1('0x2b')](db[_0x54d1('0x2c')]['rawAttributes'],function(_0x358f27){return{'name':_0x358f27[_0x54d1('0x2d')],'type':_0x358f27['type'][_0x54d1('0x2e')]};});_0x364e7c[_0x54d1('0x2f')]=_[_0x54d1('0x2b')](_0x22ba7f,_0x54d1('0x28'));_0x364e7c[_0x54d1('0x30')]=_[_0x54d1('0x31')](_0x4a83e5[_0x54d1('0x30')]);_0x364e7c[_0x54d1('0x32')]=_[_0x54d1('0x33')](_0x364e7c[_0x54d1('0x2f')],_0x364e7c['query']);_0x2c2cc7[_0x54d1('0x34')]=_[_0x54d1('0x33')](_0x364e7c[_0x54d1('0x2f')],qs[_0x54d1('0x35')](_0x4a83e5['query'][_0x54d1('0x35')]));_0x2c2cc7['attributes']=_0x2c2cc7[_0x54d1('0x34')][_0x54d1('0x36')]?_0x2c2cc7[_0x54d1('0x34')]:_0x364e7c[_0x54d1('0x2f')];if(!_0x4a83e5['query'][_0x54d1('0x37')](_0x54d1('0x38'))){_0x2c2cc7[_0x54d1('0x39')]=qs[_0x54d1('0x39')](_0x4a83e5['query'][_0x54d1('0x39')]);_0x2c2cc7['offset']=qs['offset'](_0x4a83e5[_0x54d1('0x30')][_0x54d1('0x1d')]);}_0x2c2cc7[_0x54d1('0x3a')]=qs[_0x54d1('0x3b')](_0x4a83e5[_0x54d1('0x30')]['sort']);_0x2c2cc7[_0x54d1('0x3c')]=qs['filters'](_['pick'](_0x4a83e5[_0x54d1('0x30')],_0x364e7c[_0x54d1('0x32')]),_0x22ba7f);if(_0x4a83e5[_0x54d1('0x30')]['filter']){_0x2c2cc7['where']=_['merge'](_0x2c2cc7['where'],{'$or':_[_0x54d1('0x2b')](_0x22ba7f,function(_0xcdd7c4){if(_0xcdd7c4['type']!==_0x54d1('0x3d')){var _0x412766={};_0x412766[_0xcdd7c4[_0x54d1('0x28')]]={'$like':'%'+_0x4a83e5[_0x54d1('0x30')]['filter']+'%'};return _0x412766;}})});}_0x2c2cc7=_[_0x54d1('0x3e')]({},_0x2c2cc7,_0x4a83e5[_0x54d1('0x3f')]);var _0x1e1712={'where':_0x2c2cc7[_0x54d1('0x3c')]};return db[_0x54d1('0x2c')][_0x54d1('0x40')](_0x1e1712)[_0x54d1('0x24')](function(_0x552e17){_0x3bb740[_0x54d1('0x40')]=_0x552e17;if(_0x4a83e5['query'][_0x54d1('0x41')]){_0x2c2cc7[_0x54d1('0x42')]=[{'all':!![]}];}return db[_0x54d1('0x2c')][_0x54d1('0x43')](_0x2c2cc7);})[_0x54d1('0x24')](function(_0x76d911){_0x3bb740[_0x54d1('0x44')]=_0x76d911;return _0x3bb740;})[_0x54d1('0x24')](respondWithFilteredResult(_0x2f9d8d,_0x2c2cc7))[_0x54d1('0x45')](handleError(_0x2f9d8d,null));};exports['show']=function(_0x469790,_0x9a0a9b){var _0x46fad7={'raw':!![],'where':{'id':_0x469790['params']['id']}},_0x2a1f0b={};_0x2a1f0b[_0x54d1('0x2f')]=_[_0x54d1('0x31')](db['VtigerField'][_0x54d1('0x46')]);_0x2a1f0b[_0x54d1('0x30')]=_['keys'](_0x469790[_0x54d1('0x30')]);_0x2a1f0b[_0x54d1('0x32')]=_[_0x54d1('0x33')](_0x2a1f0b[_0x54d1('0x2f')],_0x2a1f0b[_0x54d1('0x30')]);_0x46fad7[_0x54d1('0x34')]=_[_0x54d1('0x33')](_0x2a1f0b['model'],qs[_0x54d1('0x35')](_0x469790['query'][_0x54d1('0x35')]));_0x46fad7['attributes']=_0x46fad7[_0x54d1('0x34')]['length']?_0x46fad7['attributes']:_0x2a1f0b[_0x54d1('0x2f')];if(_0x469790[_0x54d1('0x30')][_0x54d1('0x41')]){_0x46fad7['include']=[{'all':!![]}];}_0x46fad7=_[_0x54d1('0x3e')]({},_0x46fad7,_0x469790['options']);return db[_0x54d1('0x2c')]['find'](_0x46fad7)[_0x54d1('0x24')](handleEntityNotFound(_0x9a0a9b,null))[_0x54d1('0x24')](respondWithResult(_0x9a0a9b,null))['catch'](handleError(_0x9a0a9b,null));};exports['create']=function(_0x108ee2,_0x2d6e86){return db[_0x54d1('0x2c')][_0x54d1('0x47')](_0x108ee2[_0x54d1('0x48')],{})['then'](respondWithResult(_0x2d6e86,0xc9))['catch'](handleError(_0x2d6e86,null));};exports['update']=function(_0x5db5b8,_0x589ef6){if(_0x5db5b8[_0x54d1('0x48')]['id']){delete _0x5db5b8[_0x54d1('0x48')]['id'];}return db[_0x54d1('0x2c')][_0x54d1('0x49')]({'where':{'id':_0x5db5b8[_0x54d1('0x4a')]['id']}})[_0x54d1('0x24')](handleEntityNotFound(_0x589ef6,null))[_0x54d1('0x24')](saveUpdates(_0x5db5b8[_0x54d1('0x48')],null))['then'](respondWithResult(_0x589ef6,null))[_0x54d1('0x45')](handleError(_0x589ef6,null));};exports[_0x54d1('0x25')]=function(_0x2e1d9a,_0x26b87a){return db['VtigerField'][_0x54d1('0x49')]({'where':{'id':_0x2e1d9a[_0x54d1('0x4a')]['id']}})[_0x54d1('0x24')](handleEntityNotFound(_0x26b87a,null))[_0x54d1('0x24')](removeEntity(_0x26b87a,null))[_0x54d1('0x45')](handleError(_0x26b87a,null));};
\ No newline at end of file
+var _0x77a4=['sendStatus','status','json','offset','limit','undefined','count','set','apply','save','then','end','error','name','send','index','map','VtigerField','rawAttributes','fieldName','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','find','create','body','update','destroy','eml-format','rimraf','zip-dir','moment','util','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb'];(function(_0x4fd7ba,_0x2f5e2e){var _0x484da9=function(_0x3e920d){while(--_0x3e920d){_0x4fd7ba['push'](_0x4fd7ba['shift']());}};_0x484da9(++_0x2f5e2e);}(_0x77a4,0x155));var _0x477a=function(_0x4d7379,_0x4b4e63){_0x4d7379=_0x4d7379-0x0;var _0x46d7cf=_0x77a4[_0x4d7379];return _0x46d7cf;};'use strict';var emlformat=require(_0x477a('0x0'));var rimraf=require(_0x477a('0x1'));var zipdir=require(_0x477a('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x477a('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x477a('0x4'));var path=require(_0x477a('0x5'));var sox=require('sox');var csv=require(_0x477a('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x477a('0x7'));var _=require(_0x477a('0x8'));var squel=require(_0x477a('0x9'));var crypto=require(_0x477a('0xa'));var jsforce=require(_0x477a('0xb'));var deskjs=require(_0x477a('0xc'));var toCsv=require(_0x477a('0x6'));var querystring=require(_0x477a('0xd'));var Papa=require('papaparse');var Redis=require(_0x477a('0xe'));var authService=require(_0x477a('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x477a('0x10'));var hardwareService=require(_0x477a('0x11'));var logger=require(_0x477a('0x12'))(_0x477a('0x13'));var utils=require(_0x477a('0x14'));var config=require(_0x477a('0x15'));var licenseUtil=require(_0x477a('0x16'));var db=require(_0x477a('0x17'))['db'];function respondWithStatusCode(_0x1d43da,_0x9f501c){_0x9f501c=_0x9f501c||0xcc;return function(_0x5eaa0c){if(_0x5eaa0c){return _0x1d43da[_0x477a('0x18')](_0x9f501c);}return _0x1d43da[_0x477a('0x19')](_0x9f501c)['end']();};}function respondWithResult(_0x55db6e,_0x2eac09){_0x2eac09=_0x2eac09||0xc8;return function(_0x1975fc){if(_0x1975fc){return _0x55db6e[_0x477a('0x19')](_0x2eac09)[_0x477a('0x1a')](_0x1975fc);}};}function respondWithFilteredResult(_0xb713e6,_0x203aa1){return function(_0x747289){if(_0x747289){var _0x213f7f=typeof _0x203aa1[_0x477a('0x1b')]==='undefined'&&typeof _0x203aa1[_0x477a('0x1c')]===_0x477a('0x1d');var _0x592182=_0x747289[_0x477a('0x1e')];var _0x49fe97=_0x213f7f?0x0:_0x203aa1['offset'];var _0x4de171=_0x213f7f?_0x747289[_0x477a('0x1e')]:_0x203aa1[_0x477a('0x1b')]+_0x203aa1[_0x477a('0x1c')];var _0xbd0525;if(_0x4de171>=_0x592182){_0x4de171=_0x592182;_0xbd0525=0xc8;}else{_0xbd0525=0xce;}_0xb713e6[_0x477a('0x19')](_0xbd0525);return _0xb713e6[_0x477a('0x1f')]('Content-Range',_0x49fe97+'-'+_0x4de171+'/'+_0x592182)[_0x477a('0x1a')](_0x747289);}return null;};}function patchUpdates(_0x29490c){return function(_0x152184){try{jsonpatch[_0x477a('0x20')](_0x152184,_0x29490c,!![]);}catch(_0x5487dc){return BPromise['reject'](_0x5487dc);}return _0x152184[_0x477a('0x21')]();};}function saveUpdates(_0x15c71c,_0x489d6b){return function(_0x2ec562){if(_0x2ec562){return _0x2ec562['update'](_0x15c71c)[_0x477a('0x22')](function(_0x5800c8){return _0x5800c8;});}return null;};}function removeEntity(_0x8de66f,_0x35765b){return function(_0x5c8d2d){if(_0x5c8d2d){return _0x5c8d2d['destroy']()[_0x477a('0x22')](function(){_0x8de66f['status'](0xcc)[_0x477a('0x23')]();});}};}function handleEntityNotFound(_0x221195,_0x17a8f8){return function(_0x4176ba){if(!_0x4176ba){_0x221195[_0x477a('0x18')](0x194);}return _0x4176ba;};}function handleError(_0x26fe40,_0x6e9655){_0x6e9655=_0x6e9655||0x1f4;return function(_0x33e441){logger[_0x477a('0x24')](_0x33e441['stack']);if(_0x33e441[_0x477a('0x25')]){delete _0x33e441[_0x477a('0x25')];}_0x26fe40[_0x477a('0x19')](_0x6e9655)[_0x477a('0x26')](_0x33e441);};}exports[_0x477a('0x27')]=function(_0x4c0749,_0x4b192e){var _0xd04f72={},_0x1ec3c1={},_0x2d2940={'count':0x0,'rows':[]};var _0x477c3c=_[_0x477a('0x28')](db[_0x477a('0x29')][_0x477a('0x2a')],function(_0x1a72de){return{'name':_0x1a72de[_0x477a('0x2b')],'type':_0x1a72de['type'][_0x477a('0x2c')]};});_0x1ec3c1[_0x477a('0x2d')]=_[_0x477a('0x28')](_0x477c3c,'name');_0x1ec3c1[_0x477a('0x2e')]=_[_0x477a('0x2f')](_0x4c0749[_0x477a('0x2e')]);_0x1ec3c1[_0x477a('0x30')]=_[_0x477a('0x31')](_0x1ec3c1[_0x477a('0x2d')],_0x1ec3c1[_0x477a('0x2e')]);_0xd04f72['attributes']=_[_0x477a('0x31')](_0x1ec3c1[_0x477a('0x2d')],qs[_0x477a('0x32')](_0x4c0749[_0x477a('0x2e')][_0x477a('0x32')]));_0xd04f72[_0x477a('0x33')]=_0xd04f72['attributes'][_0x477a('0x34')]?_0xd04f72[_0x477a('0x33')]:_0x1ec3c1[_0x477a('0x2d')];if(!_0x4c0749[_0x477a('0x2e')][_0x477a('0x35')](_0x477a('0x36'))){_0xd04f72[_0x477a('0x1c')]=qs[_0x477a('0x1c')](_0x4c0749[_0x477a('0x2e')][_0x477a('0x1c')]);_0xd04f72[_0x477a('0x1b')]=qs[_0x477a('0x1b')](_0x4c0749[_0x477a('0x2e')]['offset']);}_0xd04f72[_0x477a('0x37')]=qs['sort'](_0x4c0749[_0x477a('0x2e')][_0x477a('0x38')]);_0xd04f72[_0x477a('0x39')]=qs['filters'](_['pick'](_0x4c0749['query'],_0x1ec3c1[_0x477a('0x30')]),_0x477c3c);if(_0x4c0749[_0x477a('0x2e')][_0x477a('0x3a')]){_0xd04f72[_0x477a('0x39')]=_[_0x477a('0x3b')](_0xd04f72[_0x477a('0x39')],{'$or':_[_0x477a('0x28')](_0x477c3c,function(_0x1e0e83){if(_0x1e0e83['type']!==_0x477a('0x3c')){var _0x4b637c={};_0x4b637c[_0x1e0e83[_0x477a('0x25')]]={'$like':'%'+_0x4c0749[_0x477a('0x2e')]['filter']+'%'};return _0x4b637c;}})});}_0xd04f72=_['merge']({},_0xd04f72,_0x4c0749[_0x477a('0x3d')]);var _0x28b2f9={'where':_0xd04f72[_0x477a('0x39')]};return db['VtigerField'][_0x477a('0x1e')](_0x28b2f9)[_0x477a('0x22')](function(_0x13f121){_0x2d2940[_0x477a('0x1e')]=_0x13f121;if(_0x4c0749['query'][_0x477a('0x3e')]){_0xd04f72[_0x477a('0x3f')]=[{'all':!![]}];}return db['VtigerField']['findAll'](_0xd04f72);})[_0x477a('0x22')](function(_0x2cbb16){_0x2d2940[_0x477a('0x40')]=_0x2cbb16;return _0x2d2940;})['then'](respondWithFilteredResult(_0x4b192e,_0xd04f72))[_0x477a('0x41')](handleError(_0x4b192e,null));};exports[_0x477a('0x42')]=function(_0x342d06,_0x34b42c){var _0x4247e3={'raw':!![],'where':{'id':_0x342d06[_0x477a('0x43')]['id']}},_0x4c67e4={};_0x4c67e4[_0x477a('0x2d')]=_[_0x477a('0x2f')](db[_0x477a('0x29')][_0x477a('0x2a')]);_0x4c67e4['query']=_['keys'](_0x342d06[_0x477a('0x2e')]);_0x4c67e4[_0x477a('0x30')]=_[_0x477a('0x31')](_0x4c67e4['model'],_0x4c67e4[_0x477a('0x2e')]);_0x4247e3[_0x477a('0x33')]=_[_0x477a('0x31')](_0x4c67e4['model'],qs[_0x477a('0x32')](_0x342d06[_0x477a('0x2e')][_0x477a('0x32')]));_0x4247e3['attributes']=_0x4247e3['attributes'][_0x477a('0x34')]?_0x4247e3[_0x477a('0x33')]:_0x4c67e4[_0x477a('0x2d')];if(_0x342d06['query']['includeAll']){_0x4247e3['include']=[{'all':!![]}];}_0x4247e3=_['merge']({},_0x4247e3,_0x342d06[_0x477a('0x3d')]);return db['VtigerField'][_0x477a('0x44')](_0x4247e3)[_0x477a('0x22')](handleEntityNotFound(_0x34b42c,null))[_0x477a('0x22')](respondWithResult(_0x34b42c,null))[_0x477a('0x41')](handleError(_0x34b42c,null));};exports['create']=function(_0x2745b9,_0x42c687){return db[_0x477a('0x29')][_0x477a('0x45')](_0x2745b9[_0x477a('0x46')],{})[_0x477a('0x22')](respondWithResult(_0x42c687,0xc9))[_0x477a('0x41')](handleError(_0x42c687,null));};exports[_0x477a('0x47')]=function(_0x5aa721,_0x35213d){if(_0x5aa721[_0x477a('0x46')]['id']){delete _0x5aa721[_0x477a('0x46')]['id'];}return db['VtigerField'][_0x477a('0x44')]({'where':{'id':_0x5aa721[_0x477a('0x43')]['id']}})[_0x477a('0x22')](handleEntityNotFound(_0x35213d,null))[_0x477a('0x22')](saveUpdates(_0x5aa721[_0x477a('0x46')],null))[_0x477a('0x22')](respondWithResult(_0x35213d,null))[_0x477a('0x41')](handleError(_0x35213d,null));};exports[_0x477a('0x48')]=function(_0x3b8022,_0x187da4){return db[_0x477a('0x29')][_0x477a('0x44')]({'where':{'id':_0x3b8022[_0x477a('0x43')]['id']}})[_0x477a('0x22')](handleEntityNotFound(_0x187da4,null))[_0x477a('0x22')](removeEntity(_0x187da4,null))[_0x477a('0x41')](handleError(_0x187da4,null));};
\ No newline at end of file