Built motion from commit 449495f6.|2.6.27
[motion2.git] / server / api / openchannelQueueReport / openchannelQueueReport.controller.js
index 416982f..3b2eef8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x48ac=['options','count','includeAll','include','findAll','rows','catch','show','find','create','body','update','params','describe','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','status','end','offset','limit','set','Content-Range','json','reject','then','destroy','error','name','send','map','OpenchannelQueueReport','rawAttributes','key','keys','query','filters','model','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','type'];(function(_0x29f81a,_0x423080){var _0x4fee1d=function(_0x3d2a8d){while(--_0x3d2a8d){_0x29f81a['push'](_0x29f81a['shift']());}};_0x4fee1d(++_0x423080);}(_0x48ac,0xe0));var _0xc48a=function(_0x100bf3,_0x4a82fd){_0x100bf3=_0x100bf3-0x0;var _0x4e78e7=_0x48ac[_0x100bf3];return _0x4e78e7;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0xc48a('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc48a('0x1'));var jsonpatch=require(_0xc48a('0x2'));var rp=require(_0xc48a('0x3'));var moment=require('moment');var BPromise=require(_0xc48a('0x4'));var Mustache=require(_0xc48a('0x5'));var util=require(_0xc48a('0x6'));var path=require(_0xc48a('0x7'));var sox=require(_0xc48a('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var _=require('lodash');var squel=require('squel');var crypto=require(_0xc48a('0x9'));var jsforce=require(_0xc48a('0xa'));var deskjs=require(_0xc48a('0xb'));var toCsv=require('to-csv');var querystring=require(_0xc48a('0xc'));var Papa=require(_0xc48a('0xd'));var Redis=require(_0xc48a('0xe'));var authService=require(_0xc48a('0xf'));var qs=require(_0xc48a('0x10'));var as=require(_0xc48a('0x11'));var hardwareService=require(_0xc48a('0x12'));var logger=require(_0xc48a('0x13'))(_0xc48a('0x14'));var utils=require(_0xc48a('0x15'));var config=require(_0xc48a('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4312a8,_0x161274){_0x161274=_0x161274||0xcc;return function(_0x202ba9){if(_0x202ba9){return _0x4312a8['sendStatus'](_0x161274);}return _0x4312a8[_0xc48a('0x17')](_0x161274)[_0xc48a('0x18')]();};}function respondWithResult(_0x52a541,_0x2852b0){_0x2852b0=_0x2852b0||0xc8;return function(_0x250d63){if(_0x250d63){return _0x52a541[_0xc48a('0x17')](_0x2852b0)['json'](_0x250d63);}};}function respondWithFilteredResult(_0x2e2bb0,_0x70c92f){return function(_0x37d5d2){if(_0x37d5d2){var _0x50f232=_0x37d5d2['count'],_0x38abb3=_0x70c92f[_0xc48a('0x19')],_0x2172f5=_0x70c92f['offset']+_0x70c92f[_0xc48a('0x1a')],_0x53bfc3;if(_0x2172f5>=_0x50f232){_0x2172f5=_0x50f232;_0x53bfc3=0xc8;}else{_0x53bfc3=0xce;}_0x2e2bb0[_0xc48a('0x17')](_0x53bfc3);return _0x2e2bb0[_0xc48a('0x1b')](_0xc48a('0x1c'),_0x38abb3+'-'+_0x2172f5+'/'+_0x50f232)[_0xc48a('0x1d')](_0x37d5d2);}return null;};}function patchUpdates(_0x2deee6){return function(_0x16676a){try{jsonpatch['apply'](_0x16676a,_0x2deee6,!![]);}catch(_0x308703){return BPromise[_0xc48a('0x1e')](_0x308703);}return _0x16676a['save']();};}function saveUpdates(_0x259bc2,_0x4e6e15){return function(_0x2b7dfa){if(_0x2b7dfa){return _0x2b7dfa['update'](_0x259bc2)[_0xc48a('0x1f')](function(_0x382f69){return _0x382f69;});}return null;};}function removeEntity(_0x241aac,_0x4f5a55){return function(_0x2a3380){if(_0x2a3380){return _0x2a3380[_0xc48a('0x20')]()[_0xc48a('0x1f')](function(){_0x241aac[_0xc48a('0x17')](0xcc)[_0xc48a('0x18')]();});}};}function handleEntityNotFound(_0x3201bc,_0x112874){return function(_0x4bc55b){if(!_0x4bc55b){_0x3201bc['sendStatus'](0x194);}return _0x4bc55b;};}function handleError(_0x351b72,_0x16d41a){_0x16d41a=_0x16d41a||0x1f4;return function(_0x428344){logger[_0xc48a('0x21')](_0x428344['stack']);if(_0x428344['name']){delete _0x428344[_0xc48a('0x22')];}_0x351b72[_0xc48a('0x17')](_0x16d41a)[_0xc48a('0x23')](_0x428344);};}exports['index']=function(_0x11c94a,_0x4077f7){var _0x23aa60={},_0x281100={},_0x2516f3={'count':0x0,'rows':[]};var _0x163205=_[_0xc48a('0x24')](db[_0xc48a('0x25')][_0xc48a('0x26')],function(_0x45747f){return{'name':_0x45747f['fieldName'],'type':_0x45747f['type'][_0xc48a('0x27')]};});_0x281100['model']=_[_0xc48a('0x24')](_0x163205,_0xc48a('0x22'));_0x281100['query']=_[_0xc48a('0x28')](_0x11c94a[_0xc48a('0x29')]);_0x281100[_0xc48a('0x2a')]=_['intersection'](_0x281100[_0xc48a('0x2b')],_0x281100[_0xc48a('0x29')]);_0x23aa60['attributes']=_[_0xc48a('0x2c')](_0x281100[_0xc48a('0x2b')],qs[_0xc48a('0x2d')](_0x11c94a[_0xc48a('0x29')][_0xc48a('0x2d')]));_0x23aa60['attributes']=_0x23aa60[_0xc48a('0x2e')][_0xc48a('0x2f')]?_0x23aa60[_0xc48a('0x2e')]:_0x281100[_0xc48a('0x2b')];if(!_0x11c94a[_0xc48a('0x29')][_0xc48a('0x30')](_0xc48a('0x31'))){_0x23aa60[_0xc48a('0x1a')]=qs['limit'](_0x11c94a[_0xc48a('0x29')][_0xc48a('0x1a')]);_0x23aa60[_0xc48a('0x19')]=qs[_0xc48a('0x19')](_0x11c94a[_0xc48a('0x29')][_0xc48a('0x19')]);}_0x23aa60[_0xc48a('0x32')]=qs['sort'](_0x11c94a[_0xc48a('0x29')][_0xc48a('0x33')]);_0x23aa60[_0xc48a('0x34')]=qs[_0xc48a('0x2a')](_['pick'](_0x11c94a[_0xc48a('0x29')],_0x281100[_0xc48a('0x2a')]),_0x163205);if(_0x11c94a['query'][_0xc48a('0x35')]){_0x23aa60['where']=_[_0xc48a('0x36')](_0x23aa60['where'],{'$or':_['map'](_0x163205,function(_0x84ec08){if(_0x84ec08[_0xc48a('0x37')]!=='VIRTUAL'){var _0x35ac57={};_0x35ac57[_0x84ec08[_0xc48a('0x22')]]={'$like':'%'+_0x11c94a[_0xc48a('0x29')][_0xc48a('0x35')]+'%'};return _0x35ac57;}})});}_0x23aa60=_['merge']({},_0x23aa60,_0x11c94a[_0xc48a('0x38')]);var _0x3e747a={'where':_0x23aa60[_0xc48a('0x34')]};return db[_0xc48a('0x25')]['count'](_0x3e747a)[_0xc48a('0x1f')](function(_0x5ebf3a){_0x2516f3[_0xc48a('0x39')]=_0x5ebf3a;if(_0x11c94a[_0xc48a('0x29')][_0xc48a('0x3a')]){_0x23aa60[_0xc48a('0x3b')]=[{'all':!![]}];}return db[_0xc48a('0x25')][_0xc48a('0x3c')](_0x23aa60);})['then'](function(_0x2a7e42){_0x2516f3[_0xc48a('0x3d')]=_0x2a7e42;return _0x2516f3;})[_0xc48a('0x1f')](respondWithFilteredResult(_0x4077f7,_0x23aa60))[_0xc48a('0x3e')](handleError(_0x4077f7,null));};exports[_0xc48a('0x3f')]=function(_0x4f9dbe,_0x2efe70){var _0x2f0282={'raw':!![],'where':{'id':_0x4f9dbe['params']['id']}},_0xd4a0b6={};_0xd4a0b6[_0xc48a('0x2b')]=_['keys'](db['OpenchannelQueueReport'][_0xc48a('0x26')]);_0xd4a0b6[_0xc48a('0x29')]=_[_0xc48a('0x28')](_0x4f9dbe[_0xc48a('0x29')]);_0xd4a0b6[_0xc48a('0x2a')]=_[_0xc48a('0x2c')](_0xd4a0b6[_0xc48a('0x2b')],_0xd4a0b6['query']);_0x2f0282['attributes']=_['intersection'](_0xd4a0b6[_0xc48a('0x2b')],qs[_0xc48a('0x2d')](_0x4f9dbe[_0xc48a('0x29')][_0xc48a('0x2d')]));_0x2f0282[_0xc48a('0x2e')]=_0x2f0282[_0xc48a('0x2e')][_0xc48a('0x2f')]?_0x2f0282[_0xc48a('0x2e')]:_0xd4a0b6[_0xc48a('0x2b')];if(_0x4f9dbe[_0xc48a('0x29')][_0xc48a('0x3a')]){_0x2f0282['include']=[{'all':!![]}];}_0x2f0282=_[_0xc48a('0x36')]({},_0x2f0282,_0x4f9dbe[_0xc48a('0x38')]);return db[_0xc48a('0x25')][_0xc48a('0x40')](_0x2f0282)[_0xc48a('0x1f')](handleEntityNotFound(_0x2efe70,null))[_0xc48a('0x1f')](respondWithResult(_0x2efe70,null))[_0xc48a('0x3e')](handleError(_0x2efe70,null));};exports[_0xc48a('0x41')]=function(_0x38fee1,_0x5eeba9){return db[_0xc48a('0x25')][_0xc48a('0x41')](_0x38fee1[_0xc48a('0x42')],{})[_0xc48a('0x1f')](respondWithResult(_0x5eeba9,0xc9))['catch'](handleError(_0x5eeba9,null));};exports[_0xc48a('0x43')]=function(_0x3610d6,_0x5e4a30){if(_0x3610d6[_0xc48a('0x42')]['id']){delete _0x3610d6[_0xc48a('0x42')]['id'];}return db[_0xc48a('0x25')][_0xc48a('0x40')]({'where':{'id':_0x3610d6['params']['id']}})[_0xc48a('0x1f')](handleEntityNotFound(_0x5e4a30,null))[_0xc48a('0x1f')](saveUpdates(_0x3610d6[_0xc48a('0x42')],null))[_0xc48a('0x1f')](respondWithResult(_0x5e4a30,null))['catch'](handleError(_0x5e4a30,null));};exports['destroy']=function(_0x4f16e9,_0xf47f5){return db[_0xc48a('0x25')]['find']({'where':{'id':_0x4f16e9[_0xc48a('0x44')]['id']}})['then'](handleEntityNotFound(_0xf47f5,null))[_0xc48a('0x1f')](removeEntity(_0xf47f5,null))[_0xc48a('0x3e')](handleError(_0xf47f5,null));};exports[_0xc48a('0x45')]=function(_0x1a96d9,_0x3a0097){return db[_0xc48a('0x25')][_0xc48a('0x45')]()[_0xc48a('0x1f')](respondWithResult(_0x3a0097,null))[_0xc48a('0x3e')](handleError(_0x3a0097,null));};
\ No newline at end of file
+var _0x805c=['offset','undefined','limit','count','set','Content-Range','apply','update','then','destroy','error','stack','name','map','rawAttributes','fieldName','key','keys','filters','intersection','model','query','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filter','merge','type','VIRTUAL','includeAll','OpenchannelQueueReport','findAll','rows','catch','show','params','length','include','options','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','sox','to-csv','ejs','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x805c,0x1df));var _0xc805=function(_0x43862b,_0x52c6e6){_0x43862b=_0x43862b-0x0;var _0x37f62f=_0x805c[_0x43862b];return _0x37f62f;};'use strict';var emlformat=require(_0xc805('0x0'));var rimraf=require(_0xc805('0x1'));var zipdir=require(_0xc805('0x2'));var jsonpatch=require(_0xc805('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0xc805('0x4'));var csv=require(_0xc805('0x5'));var ejs=require(_0xc805('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xc805('0x7'));var crypto=require('crypto');var jsforce=require(_0xc805('0x8'));var deskjs=require(_0xc805('0x9'));var toCsv=require(_0xc805('0x5'));var querystring=require(_0xc805('0xa'));var Papa=require(_0xc805('0xb'));var Redis=require(_0xc805('0xc'));var authService=require(_0xc805('0xd'));var qs=require('../../components/parsers/qs');var as=require(_0xc805('0xe'));var hardwareService=require(_0xc805('0xf'));var logger=require('../../config/logger')(_0xc805('0x10'));var utils=require(_0xc805('0x11'));var config=require(_0xc805('0x12'));var licenseUtil=require(_0xc805('0x13'));var db=require(_0xc805('0x14'))['db'];function respondWithStatusCode(_0x700ffd,_0x4ef948){_0x4ef948=_0x4ef948||0xcc;return function(_0x39811c){if(_0x39811c){return _0x700ffd[_0xc805('0x15')](_0x4ef948);}return _0x700ffd[_0xc805('0x16')](_0x4ef948)[_0xc805('0x17')]();};}function respondWithResult(_0x4cca93,_0x5bee39){_0x5bee39=_0x5bee39||0xc8;return function(_0x3b3e05){if(_0x3b3e05){return _0x4cca93['status'](_0x5bee39)[_0xc805('0x18')](_0x3b3e05);}};}function respondWithFilteredResult(_0x3bc135,_0x279654){return function(_0x255651){if(_0x255651){var _0x18a629=typeof _0x279654[_0xc805('0x19')]===_0xc805('0x1a')&&typeof _0x279654[_0xc805('0x1b')]===_0xc805('0x1a');var _0x315325=_0x255651['count'];var _0x1f9c48=_0x18a629?0x0:_0x279654[_0xc805('0x19')];var _0x5b907b=_0x18a629?_0x255651[_0xc805('0x1c')]:_0x279654['offset']+_0x279654[_0xc805('0x1b')];var _0x1de937;if(_0x5b907b>=_0x315325){_0x5b907b=_0x315325;_0x1de937=0xc8;}else{_0x1de937=0xce;}_0x3bc135[_0xc805('0x16')](_0x1de937);return _0x3bc135[_0xc805('0x1d')](_0xc805('0x1e'),_0x1f9c48+'-'+_0x5b907b+'/'+_0x315325)[_0xc805('0x18')](_0x255651);}return null;};}function patchUpdates(_0x5b1351){return function(_0x5e3bc0){try{jsonpatch[_0xc805('0x1f')](_0x5e3bc0,_0x5b1351,!![]);}catch(_0x45fc33){return BPromise['reject'](_0x45fc33);}return _0x5e3bc0['save']();};}function saveUpdates(_0x4841bd,_0x3b3cbe){return function(_0x330b74){if(_0x330b74){return _0x330b74[_0xc805('0x20')](_0x4841bd)[_0xc805('0x21')](function(_0x3e5af9){return _0x3e5af9;});}return null;};}function removeEntity(_0x2e7dcd,_0x47e4c9){return function(_0xd090fe){if(_0xd090fe){return _0xd090fe[_0xc805('0x22')]()[_0xc805('0x21')](function(){_0x2e7dcd[_0xc805('0x16')](0xcc)[_0xc805('0x17')]();});}};}function handleEntityNotFound(_0xfaae85,_0x51720a){return function(_0x55c69a){if(!_0x55c69a){_0xfaae85[_0xc805('0x15')](0x194);}return _0x55c69a;};}function handleError(_0x13d813,_0x23db32){_0x23db32=_0x23db32||0x1f4;return function(_0x40ba7d){logger[_0xc805('0x23')](_0x40ba7d[_0xc805('0x24')]);if(_0x40ba7d[_0xc805('0x25')]){delete _0x40ba7d['name'];}_0x13d813[_0xc805('0x16')](_0x23db32)['send'](_0x40ba7d);};}exports['index']=function(_0x26e2a8,_0x1cb301){var _0x235d00={},_0x4598df={},_0x5ed052={'count':0x0,'rows':[]};var _0x1a4c7a=_[_0xc805('0x26')](db['OpenchannelQueueReport'][_0xc805('0x27')],function(_0x3ac8ac){return{'name':_0x3ac8ac[_0xc805('0x28')],'type':_0x3ac8ac['type'][_0xc805('0x29')]};});_0x4598df['model']=_[_0xc805('0x26')](_0x1a4c7a,_0xc805('0x25'));_0x4598df['query']=_[_0xc805('0x2a')](_0x26e2a8['query']);_0x4598df[_0xc805('0x2b')]=_[_0xc805('0x2c')](_0x4598df[_0xc805('0x2d')],_0x4598df[_0xc805('0x2e')]);_0x235d00[_0xc805('0x2f')]=_[_0xc805('0x2c')](_0x4598df['model'],qs[_0xc805('0x30')](_0x26e2a8['query'][_0xc805('0x30')]));_0x235d00[_0xc805('0x2f')]=_0x235d00['attributes']['length']?_0x235d00[_0xc805('0x2f')]:_0x4598df[_0xc805('0x2d')];if(!_0x26e2a8[_0xc805('0x2e')][_0xc805('0x31')](_0xc805('0x32'))){_0x235d00[_0xc805('0x1b')]=qs[_0xc805('0x1b')](_0x26e2a8['query'][_0xc805('0x1b')]);_0x235d00[_0xc805('0x19')]=qs[_0xc805('0x19')](_0x26e2a8[_0xc805('0x2e')]['offset']);}_0x235d00['order']=qs[_0xc805('0x33')](_0x26e2a8[_0xc805('0x2e')]['sort']);_0x235d00[_0xc805('0x34')]=qs[_0xc805('0x2b')](_[_0xc805('0x35')](_0x26e2a8[_0xc805('0x2e')],_0x4598df[_0xc805('0x2b')]),_0x1a4c7a);if(_0x26e2a8['query'][_0xc805('0x36')]){_0x235d00['where']=_[_0xc805('0x37')](_0x235d00['where'],{'$or':_[_0xc805('0x26')](_0x1a4c7a,function(_0x10520a){if(_0x10520a[_0xc805('0x38')]!==_0xc805('0x39')){var _0x1bdb06={};_0x1bdb06[_0x10520a[_0xc805('0x25')]]={'$like':'%'+_0x26e2a8[_0xc805('0x2e')]['filter']+'%'};return _0x1bdb06;}})});}_0x235d00=_[_0xc805('0x37')]({},_0x235d00,_0x26e2a8['options']);var _0x2f0328={'where':_0x235d00[_0xc805('0x34')]};return db['OpenchannelQueueReport'][_0xc805('0x1c')](_0x2f0328)[_0xc805('0x21')](function(_0x20d47c){_0x5ed052[_0xc805('0x1c')]=_0x20d47c;if(_0x26e2a8[_0xc805('0x2e')][_0xc805('0x3a')]){_0x235d00['include']=[{'all':!![]}];}return db[_0xc805('0x3b')][_0xc805('0x3c')](_0x235d00);})[_0xc805('0x21')](function(_0x239d83){_0x5ed052[_0xc805('0x3d')]=_0x239d83;return _0x5ed052;})['then'](respondWithFilteredResult(_0x1cb301,_0x235d00))[_0xc805('0x3e')](handleError(_0x1cb301,null));};exports[_0xc805('0x3f')]=function(_0x30f4e1,_0x4d6f28){var _0x25bbed={'raw':!![],'where':{'id':_0x30f4e1[_0xc805('0x40')]['id']}},_0x29433a={};_0x29433a['model']=_[_0xc805('0x2a')](db[_0xc805('0x3b')][_0xc805('0x27')]);_0x29433a[_0xc805('0x2e')]=_['keys'](_0x30f4e1['query']);_0x29433a[_0xc805('0x2b')]=_[_0xc805('0x2c')](_0x29433a[_0xc805('0x2d')],_0x29433a[_0xc805('0x2e')]);_0x25bbed[_0xc805('0x2f')]=_[_0xc805('0x2c')](_0x29433a[_0xc805('0x2d')],qs[_0xc805('0x30')](_0x30f4e1[_0xc805('0x2e')][_0xc805('0x30')]));_0x25bbed[_0xc805('0x2f')]=_0x25bbed[_0xc805('0x2f')][_0xc805('0x41')]?_0x25bbed[_0xc805('0x2f')]:_0x29433a[_0xc805('0x2d')];if(_0x30f4e1['query']['includeAll']){_0x25bbed[_0xc805('0x42')]=[{'all':!![]}];}_0x25bbed=_[_0xc805('0x37')]({},_0x25bbed,_0x30f4e1[_0xc805('0x43')]);return db[_0xc805('0x3b')][_0xc805('0x44')](_0x25bbed)[_0xc805('0x21')](handleEntityNotFound(_0x4d6f28,null))[_0xc805('0x21')](respondWithResult(_0x4d6f28,null))[_0xc805('0x3e')](handleError(_0x4d6f28,null));};exports['create']=function(_0x2e8237,_0x561cf2){return db['OpenchannelQueueReport'][_0xc805('0x45')](_0x2e8237[_0xc805('0x46')],{})[_0xc805('0x21')](respondWithResult(_0x561cf2,0xc9))[_0xc805('0x3e')](handleError(_0x561cf2,null));};exports['update']=function(_0x56b99a,_0x2cec5d){if(_0x56b99a['body']['id']){delete _0x56b99a[_0xc805('0x46')]['id'];}return db[_0xc805('0x3b')][_0xc805('0x44')]({'where':{'id':_0x56b99a[_0xc805('0x40')]['id']}})[_0xc805('0x21')](handleEntityNotFound(_0x2cec5d,null))[_0xc805('0x21')](saveUpdates(_0x56b99a[_0xc805('0x46')],null))[_0xc805('0x21')](respondWithResult(_0x2cec5d,null))[_0xc805('0x3e')](handleError(_0x2cec5d,null));};exports['destroy']=function(_0x14c264,_0x5617d2){return db['OpenchannelQueueReport']['find']({'where':{'id':_0x14c264[_0xc805('0x40')]['id']}})[_0xc805('0x21')](handleEntityNotFound(_0x5617d2,null))[_0xc805('0x21')](removeEntity(_0x5617d2,null))[_0xc805('0x3e')](handleError(_0x5617d2,null));};exports[_0xc805('0x47')]=function(_0x2d376c,_0x2a3315){return db[_0xc805('0x3b')][_0xc805('0x47')]()['then'](respondWithResult(_0x2a3315,null))[_0xc805('0x3e')](handleError(_0x2a3315,null));};
\ No newline at end of file