Built motion from commit 0900f080.|2.5.45
[motion2.git] / server / api / intZohoAccount / intZohoAccount.controller.js
index f7d5ed1..9330a44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0842=['Wrong\x20credentials','html-pdf','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','jayson/promise','client','Sequelize','ValidationError','The\x20password\x20must\x20be\x20at\x20least\x208\x20characters\x20long\x20and\x20have\x201\x20lowercase\x20character,\x201\x20uppercase\x20character,\x201\x20number\x20and\x201\x20special\x20character\x20~!@#$%^&-_=+[{]}.','request','then','info','ZohoAccount,\x20%s,\x20%s','debug','ZohoAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','catch','sendStatus','status','end','json','count','offset','set','apply','reject','update','destroy','stack','name','send','map','ZohoAccount','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','show','params','find','create','body','getConfigurations','findOne','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','ZohoField','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.com.cn','/oauth/v2/token','refreshToken','access_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','getFields','host','clientId','serverUrl','code','com','slice','substring','GET','format','https://www.zohoapis.%s/crm/v2/settings/fields','Calls','response','Owner','Subject','Call_Duration','Call_Result','Call_Start_Time','Call_Type','remove','api_name','system_mandatory','display_label','custom_field','picklist','pick_list_values','statusCode','getFields,\x20%s,\x20%s,\x20%s'];(function(_0x513736,_0x1eccd9){var _0x3efdd3=function(_0xc8c869){while(--_0xc8c869){_0x513736['push'](_0x513736['shift']());}};_0x3efdd3(++_0x1eccd9);}(_0x0842,0x8a));var _0x2084=function(_0x824088,_0x3a40c3){_0x824088=_0x824088-0x0;var _0x5d1d3d=_0x0842[_0x824088];return _0x5d1d3d;};'use strict';var pdf=require(_0x2084('0x0'));var emlformat=require(_0x2084('0x1'));var rimraf=require(_0x2084('0x2'));var zipdir=require(_0x2084('0x3'));var jsonpatch=require('fast-json-patch');var rp=require(_0x2084('0x4'));var moment=require(_0x2084('0x5'));var BPromise=require(_0x2084('0x6'));var Mustache=require(_0x2084('0x7'));var util=require(_0x2084('0x8'));var path=require('path');var sox=require(_0x2084('0x9'));var csv=require(_0x2084('0xa'));var ejs=require(_0x2084('0xb'));var fs=require('fs');var _=require(_0x2084('0xc'));var squel=require(_0x2084('0xd'));var crypto=require(_0x2084('0xe'));var jsforce=require(_0x2084('0xf'));var deskjs=require(_0x2084('0x10'));var toCsv=require(_0x2084('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x2084('0x11'));var authService=require(_0x2084('0x12'));var qs=require(_0x2084('0x13'));var as=require(_0x2084('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2084('0x15'))(_0x2084('0x16'));var utils=require(_0x2084('0x17'));var config=require(_0x2084('0x18'));var db=require(_0x2084('0x19'))['db'];var integrations=require('../../components/integrations/configuration');var jayson=require(_0x2084('0x1a'));var client=jayson[_0x2084('0x1b')]['http']({'port':0x232a});function checkPasswordPattern(_0x4ce184,_0x2c6974,_0x10b814){if(_0x10b814){var _0x33b930=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(_0x33b930['test'](_0x2c6974)){return _0x4ce184;}else{throw new db[(_0x2084('0x1c'))][(_0x2084('0x1d'))](_0x2084('0x1e'));}}else{return _0x4ce184;}}function respondWithRpcPromise(_0x178cd2,_0x26df00,_0x53a55d,_0x811ad1){return new BPromise(function(_0x30869d,_0x1cd694){var _0x153583=_0x811ad1||client;return _0x153583[_0x2084('0x1f')](_0x178cd2,_0x53a55d)[_0x2084('0x20')](function(_0xe0185e){logger[_0x2084('0x21')](_0x2084('0x22'),_0x26df00,'request\x20sent');logger[_0x2084('0x23')](_0x2084('0x24'),_0x26df00,_0x2084('0x25'),JSON[_0x2084('0x26')](_0xe0185e));if(_0xe0185e['error']){if(_0xe0185e[_0x2084('0x27')]['code']===0x1f4){logger[_0x2084('0x27')](_0x2084('0x22'),_0x26df00,_0xe0185e[_0x2084('0x27')][_0x2084('0x28')]);return _0x1cd694(_0xe0185e['error'][_0x2084('0x28')]);}logger['error'](_0x2084('0x22'),_0x26df00,_0xe0185e['error'][_0x2084('0x28')]);return _0x30869d(_0xe0185e['error'][_0x2084('0x28')]);}else{logger['info'](_0x2084('0x22'),_0x26df00,'request\x20sent');_0x30869d(_0xe0185e['result'][_0x2084('0x28')]);}})[_0x2084('0x29')](function(_0x2b7bb5){logger['error']('ZohoAccount,\x20%s,\x20%s',_0x26df00,_0x2b7bb5);_0x1cd694(_0x2b7bb5);});});}function respondWithStatusCode(_0x32c4d3,_0x39aa31){_0x39aa31=_0x39aa31||0xcc;return function(_0x384459){if(_0x384459){return _0x32c4d3[_0x2084('0x2a')](_0x39aa31);}return _0x32c4d3[_0x2084('0x2b')](_0x39aa31)[_0x2084('0x2c')]();};}function respondWithResult(_0xe1e5c7,_0x10d20d){_0x10d20d=_0x10d20d||0xc8;return function(_0xacf721){if(_0xacf721){return _0xe1e5c7[_0x2084('0x2b')](_0x10d20d)[_0x2084('0x2d')](_0xacf721);}};}function respondWithFilteredResult(_0x14692f,_0x2f7486){return function(_0x3b10d0){if(_0x3b10d0){var _0x2dc0e1=_0x3b10d0[_0x2084('0x2e')],_0x1dd1a0=_0x2f7486['offset'],_0x3f40b1=_0x2f7486[_0x2084('0x2f')]+_0x2f7486['limit'],_0x33c7da;if(_0x3f40b1>=_0x2dc0e1){_0x3f40b1=_0x2dc0e1;_0x33c7da=0xc8;}else{_0x33c7da=0xce;}_0x14692f[_0x2084('0x2b')](_0x33c7da);return _0x14692f[_0x2084('0x30')]('Content-Range',_0x1dd1a0+'-'+_0x3f40b1+'/'+_0x2dc0e1)[_0x2084('0x2d')](_0x3b10d0);}return null;};}function patchUpdates(_0x51dc98){return function(_0x321b3c){try{jsonpatch[_0x2084('0x31')](_0x321b3c,_0x51dc98,!![]);}catch(_0xca51f1){return BPromise[_0x2084('0x32')](_0xca51f1);}return _0x321b3c['save']();};}function saveUpdates(_0x3c2525,_0x4a7afe){return function(_0x336e1d){if(_0x336e1d){return _0x336e1d[_0x2084('0x33')](_0x3c2525)[_0x2084('0x20')](function(_0x548946){return _0x548946;});}return null;};}function removeEntity(_0x5ab603,_0x3eb447){return function(_0xba4148){if(_0xba4148){return _0xba4148[_0x2084('0x34')]()[_0x2084('0x20')](function(){_0x5ab603[_0x2084('0x2b')](0xcc)[_0x2084('0x2c')]();});}};}function handleEntityNotFound(_0x18c1c9,_0xf96f5e){return function(_0x1d25ac){if(!_0x1d25ac){_0x18c1c9['sendStatus'](0x194);}return _0x1d25ac;};}function handleError(_0x185e00,_0x38b23e){_0x38b23e=_0x38b23e||0x1f4;return function(_0x2e1454){logger[_0x2084('0x27')](_0x2e1454[_0x2084('0x35')]);if(_0x2e1454[_0x2084('0x36')]){delete _0x2e1454['name'];}_0x185e00[_0x2084('0x2b')](_0x38b23e)[_0x2084('0x37')](_0x2e1454);};}exports['index']=function(_0x5ea65c,_0x4f1e89){var _0x336908={},_0x31ebce={},_0x40f286={'count':0x0,'rows':[]};var _0x20c715=_[_0x2084('0x38')](db[_0x2084('0x39')][_0x2084('0x3a')],function(_0x5a3cda){return{'name':_0x5a3cda[_0x2084('0x3b')],'type':_0x5a3cda[_0x2084('0x3c')][_0x2084('0x3d')]};});_0x31ebce[_0x2084('0x3e')]=_['map'](_0x20c715,_0x2084('0x36'));_0x31ebce[_0x2084('0x3f')]=_[_0x2084('0x40')](_0x5ea65c[_0x2084('0x3f')]);_0x31ebce[_0x2084('0x41')]=_['intersection'](_0x31ebce[_0x2084('0x3e')],_0x31ebce['query']);_0x336908[_0x2084('0x42')]=_[_0x2084('0x43')](_0x31ebce['model'],qs['fields'](_0x5ea65c[_0x2084('0x3f')][_0x2084('0x44')]));_0x336908[_0x2084('0x42')]=_0x336908[_0x2084('0x42')][_0x2084('0x45')]?_0x336908[_0x2084('0x42')]:_0x31ebce[_0x2084('0x3e')];if(!_0x5ea65c[_0x2084('0x3f')][_0x2084('0x46')](_0x2084('0x47'))){_0x336908[_0x2084('0x48')]=qs[_0x2084('0x48')](_0x5ea65c['query']['limit']);_0x336908['offset']=qs[_0x2084('0x2f')](_0x5ea65c['query']['offset']);}_0x336908[_0x2084('0x49')]=qs[_0x2084('0x4a')](_0x5ea65c['query'][_0x2084('0x4a')]);_0x336908[_0x2084('0x4b')]=qs[_0x2084('0x41')](_[_0x2084('0x4c')](_0x5ea65c[_0x2084('0x3f')],_0x31ebce[_0x2084('0x41')]),_0x20c715);if(_0x5ea65c[_0x2084('0x3f')]['filter']){_0x336908['where']=_[_0x2084('0x4d')](_0x336908[_0x2084('0x4b')],{'$or':_[_0x2084('0x38')](_0x20c715,function(_0x36ff63){if(_0x36ff63[_0x2084('0x3c')]!==_0x2084('0x4e')){var _0x3dedad={};_0x3dedad[_0x36ff63[_0x2084('0x36')]]={'$like':'%'+_0x5ea65c['query'][_0x2084('0x4f')]+'%'};return _0x3dedad;}})});}_0x336908=_[_0x2084('0x4d')]({},_0x336908,_0x5ea65c[_0x2084('0x50')]);var _0x25a8be={'where':_0x336908[_0x2084('0x4b')]};return db[_0x2084('0x39')]['count'](_0x25a8be)[_0x2084('0x20')](function(_0x33ab39){_0x40f286[_0x2084('0x2e')]=_0x33ab39;if(_0x5ea65c[_0x2084('0x3f')][_0x2084('0x51')]){_0x336908[_0x2084('0x52')]=[{'all':!![]}];}return db[_0x2084('0x39')][_0x2084('0x53')](_0x336908);})[_0x2084('0x20')](function(_0x3e60f9){_0x40f286['rows']=_0x3e60f9;return _0x40f286;})['then'](respondWithFilteredResult(_0x4f1e89,_0x336908))[_0x2084('0x29')](handleError(_0x4f1e89,null));};exports[_0x2084('0x54')]=function(_0xd3c262,_0xa58cc){var _0x599a58={'raw':![],'where':{'id':_0xd3c262[_0x2084('0x55')]['id']}},_0x19809f={};_0x19809f[_0x2084('0x3e')]=_[_0x2084('0x40')](db[_0x2084('0x39')][_0x2084('0x3a')]);_0x19809f[_0x2084('0x3f')]=_['keys'](_0xd3c262[_0x2084('0x3f')]);_0x19809f[_0x2084('0x41')]=_[_0x2084('0x43')](_0x19809f[_0x2084('0x3e')],_0x19809f['query']);_0x599a58[_0x2084('0x42')]=_['intersection'](_0x19809f['model'],qs['fields'](_0xd3c262[_0x2084('0x3f')]['fields']));_0x599a58[_0x2084('0x42')]=_0x599a58[_0x2084('0x42')][_0x2084('0x45')]?_0x599a58[_0x2084('0x42')]:_0x19809f[_0x2084('0x3e')];if(_0xd3c262[_0x2084('0x3f')][_0x2084('0x51')]){_0x599a58[_0x2084('0x52')]=[{'all':!![]}];}_0x599a58=_[_0x2084('0x4d')]({},_0x599a58,_0xd3c262['options']);return db[_0x2084('0x39')][_0x2084('0x56')](_0x599a58)[_0x2084('0x20')](handleEntityNotFound(_0xa58cc,null))[_0x2084('0x20')](respondWithResult(_0xa58cc,null))[_0x2084('0x29')](handleError(_0xa58cc,null));};exports[_0x2084('0x57')]=function(_0x59b1c4,_0x2f79aa){return db[_0x2084('0x39')][_0x2084('0x57')](_0x59b1c4['body'],{})[_0x2084('0x20')](respondWithResult(_0x2f79aa,0xc9))['catch'](handleError(_0x2f79aa,null));};exports[_0x2084('0x33')]=function(_0x53eb95,_0x47af77){if(_0x53eb95[_0x2084('0x58')]['id']){delete _0x53eb95[_0x2084('0x58')]['id'];}return db[_0x2084('0x39')][_0x2084('0x56')]({'where':{'id':_0x53eb95[_0x2084('0x55')]['id']}})[_0x2084('0x20')](handleEntityNotFound(_0x47af77,null))[_0x2084('0x20')](saveUpdates(_0x53eb95['body'],null))[_0x2084('0x20')](respondWithResult(_0x47af77,null))[_0x2084('0x29')](handleError(_0x47af77,null));};exports['destroy']=function(_0x5a7aed,_0x28c88d){return db['ZohoAccount'][_0x2084('0x56')]({'where':{'id':_0x5a7aed[_0x2084('0x55')]['id']}})['then'](handleEntityNotFound(_0x28c88d,null))[_0x2084('0x20')](removeEntity(_0x28c88d,null))[_0x2084('0x29')](handleError(_0x28c88d,null));};exports[_0x2084('0x59')]=function(_0x4473c8,_0x38c7e5,_0xd24228){var _0x5b38ec={};var _0x2721fa={};var _0x1e3fed;var _0x2283e3;return db['ZohoAccount'][_0x2084('0x5a')]({'where':{'id':_0x4473c8[_0x2084('0x55')]['id']}})[_0x2084('0x20')](handleEntityNotFound(_0x38c7e5,null))[_0x2084('0x20')](function(_0x2f249d){if(_0x2f249d){_0x1e3fed=_0x2f249d;_0x2721fa[_0x2084('0x3e')]=_['keys'](db['ZohoConfiguration'][_0x2084('0x3a')]);_0x2721fa[_0x2084('0x3f')]=_[_0x2084('0x40')](_0x4473c8[_0x2084('0x3f')]);_0x2721fa[_0x2084('0x41')]=_[_0x2084('0x43')](_0x2721fa[_0x2084('0x3e')],_0x2721fa['query']);_0x5b38ec['attributes']=_[_0x2084('0x43')](_0x2721fa[_0x2084('0x3e')],qs['fields'](_0x4473c8[_0x2084('0x3f')][_0x2084('0x44')]));_0x5b38ec['attributes']=_0x5b38ec[_0x2084('0x42')][_0x2084('0x45')]?_0x5b38ec['attributes']:_0x2721fa[_0x2084('0x3e')];_0x5b38ec['order']=qs[_0x2084('0x4a')](_0x4473c8[_0x2084('0x3f')][_0x2084('0x4a')]);_0x5b38ec[_0x2084('0x4b')]=qs[_0x2084('0x41')](_[_0x2084('0x4c')](_0x4473c8['query'],_0x2721fa['filters']));if(_0x4473c8[_0x2084('0x3f')]['filter']){_0x5b38ec['where']=_[_0x2084('0x4d')](_0x5b38ec[_0x2084('0x4b')],{'$or':_['map'](_0x5b38ec['attributes'],function(_0x1543d9){var _0x57c0db={};_0x57c0db[_0x1543d9]={'$like':'%'+_0x4473c8['query'][_0x2084('0x4f')]+'%'};return _0x57c0db;})});}_0x5b38ec=_[_0x2084('0x4d')]({},_0x5b38ec,_0x4473c8[_0x2084('0x50')]);return _0x1e3fed[_0x2084('0x59')](_0x5b38ec);}})['then'](function(_0xb3504d){if(_0xb3504d){_0x2283e3=_0xb3504d[_0x2084('0x45')];if(!_0x4473c8[_0x2084('0x3f')]['hasOwnProperty'](_0x2084('0x47'))){_0x5b38ec[_0x2084('0x48')]=qs['limit'](_0x4473c8['query'][_0x2084('0x48')]);_0x5b38ec[_0x2084('0x2f')]=qs['offset'](_0x4473c8[_0x2084('0x3f')][_0x2084('0x2f')]);}return _0x1e3fed[_0x2084('0x59')](_0x5b38ec);}})['then'](function(_0x1cad6a){if(_0x1cad6a){return _0x1cad6a?{'count':_0x2283e3,'rows':_0x1cad6a}:null;}})[_0x2084('0x20')](respondWithResult(_0x38c7e5,null))[_0x2084('0x29')](handleError(_0x38c7e5,null));};exports[_0x2084('0x5b')]=function(_0x5d90ee,_0x54e649,_0x5b07ad){if(_0x5d90ee[_0x2084('0x58')]['id']){delete _0x5d90ee[_0x2084('0x58')]['id'];}return db[_0x2084('0x39')]['findOne']({'where':{'id':_0x5d90ee['params']['id']}})[_0x2084('0x20')](handleEntityNotFound(_0x54e649,null))[_0x2084('0x20')](function(_0x362417){if(_0x362417){_0x5d90ee[_0x2084('0x58')][_0x2084('0x5c')]=_0x362417['id'];_0x5d90ee[_0x2084('0x58')][_0x2084('0x5d')]=integrations[_0x2084('0x5e')](_0x5d90ee[_0x2084('0x58')][_0x2084('0x5f')],_0x5d90ee[_0x2084('0x58')][_0x2084('0x3c')]);_0x5d90ee[_0x2084('0x58')][_0x2084('0x60')]=integrations[_0x2084('0x61')](_0x5d90ee[_0x2084('0x58')][_0x2084('0x5f')],_0x5d90ee[_0x2084('0x58')]['type']);return db['ZohoConfiguration'][_0x2084('0x57')](_0x5d90ee[_0x2084('0x58')],{'include':[{'model':db[_0x2084('0x62')],'as':_0x2084('0x5d')},{'model':db[_0x2084('0x62')],'as':'Descriptions'}]});}return null;})[_0x2084('0x20')](respondWithResult(_0x54e649,null))['catch'](handleError(_0x54e649,null));};function getAccessToken(_0x5e7ae0){return new Promise(function(_0x59f27d,_0x3a2a03){var _0x33f541;switch(_0x5e7ae0[_0x2084('0x63')]){case'US':_0x33f541=_0x2084('0x64');break;case'AU':_0x33f541=_0x2084('0x65');break;case'EU':_0x33f541=_0x2084('0x66');break;case'IN':_0x33f541='https://accounts.zoho.in';break;case'CN':_0x33f541=_0x2084('0x67');break;default:_0x33f541=_0x2084('0x66');break;}var _0x324bcb={'method':'POST','uri':_0x33f541+_0x2084('0x68'),'qs':{'refresh_token':_0x5e7ae0[_0x2084('0x69')],'client_id':_0x5e7ae0['clientId'],'client_secret':_0x5e7ae0['clientSecret'],'grant_type':'refresh_token'},'json':!![]};return rp(_0x324bcb)[_0x2084('0x20')](function(_0x750afd){if(_0x750afd[_0x2084('0x6a')]){_0x59f27d(_0x750afd[_0x2084('0x6a')]);}else{_0x3a2a03(_0x2084('0x6b'));}})['catch'](function(_0x5bc9e4){_0x3a2a03(_0x5bc9e4);});});}exports[_0x2084('0x6c')]=function(_0x5afeea,_0x3dc792,_0x2b4c6d){var _0x320884,_0x477db0,_0x1ce72c,_0x3a76ed,_0x117488;return db[_0x2084('0x39')]['findOne']({'where':{'id':_0x5afeea[_0x2084('0x55')]['id']},'attributes':['id',_0x2084('0x6d'),'zone',_0x2084('0x6e'),'clientSecret',_0x2084('0x6f'),_0x2084('0x70'),'refreshToken']})[_0x2084('0x20')](handleEntityNotFound(_0x3dc792,null))[_0x2084('0x20')](function(_0x39ec94){_0x117488=_0x39ec94;_0x320884=_0x117488[_0x2084('0x6d')];_0x477db0=_0x320884==='zoho.eu'?'eu':_0x2084('0x71');_0x1ce72c=_0x117488[_0x2084('0x6f')];var _0x1253d1=_0x1ce72c[_0x2084('0x72')](-0x1);if(_0x1253d1==='/'||_0x1253d1==='\x5c'||_0x1253d1===':'){_0x1ce72c=_0x1ce72c[_0x2084('0x73')](0x0,_0x1ce72c['lastIndexOf'](_0x1253d1));}if(!_0x117488[_0x2084('0x69')]){throw new Error('Refresh\x20Token\x20not\x20available\x20for\x20the\x20account');}return getAccessToken(_0x117488);})[_0x2084('0x20')](function(_0x1917ef){if(_0x1917ef){return rp({'method':_0x2084('0x74'),'uri':util[_0x2084('0x75')](_0x2084('0x76'),_0x477db0),'qs':{'module':_0x2084('0x77')},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x1917ef},'json':!![]});}})[_0x2084('0x20')](function(_0x232f76){if(_0x232f76){if(_0x232f76['response']&&_0x232f76[_0x2084('0x78')][_0x2084('0x27')]){throw new Error(_0x232f76[_0x2084('0x78')][_0x2084('0x27')][_0x2084('0x28')]);}var _0x48a26a=[];var _0xc6b001=[];var _0x4b3596=[_0x2084('0x79'),_0x2084('0x7a'),'Description','WhoId',_0x2084('0x7b'),_0x2084('0x7c'),_0x2084('0x7d'),_0x2084('0x7e')];_0xc6b001=_[_0x2084('0x7f')](_0x232f76[_0x2084('0x44')],function(_0x318cd5){return _0x4b3596['includes'](_0x318cd5[_0x2084('0x80')]);});for(var _0x1c5a59=0x0;_0x1c5a59<_0xc6b001[_0x2084('0x45')];_0x1c5a59++){if(_0xc6b001[_0x1c5a59][_0x2084('0x81')]===![]){_0x48a26a['push']({'id':_0xc6b001[_0x1c5a59]['id'],'name':_0xc6b001[_0x1c5a59][_0x2084('0x82')],'custom':_0xc6b001[_0x1c5a59][_0x2084('0x83')],'options':_0xc6b001[_0x1c5a59]['data_type']===_0x2084('0x84')&&_0xc6b001[_0x1c5a59][_0x2084('0x85')][_0x2084('0x45')]>-0x1?_[_0x2084('0x38')](_0xc6b001[_0x1c5a59][_0x2084('0x85')],function(_0x3f61b1){return{'name':_0x3f61b1,'value':_0x3f61b1};}):[]});}}return{'count':_0x48a26a[_0x2084('0x45')],'rows':_0x48a26a};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithResult(_0x3dc792,null))[_0x2084('0x29')](function(_0x49cd9f){var _0x235186=_0x5afeea['query']['test']?0x1f4:_0x49cd9f[_0x2084('0x86')]||0x1f4;logger[_0x2084('0x27')](_0x2084('0x87'),'getFields',_0x235186,JSON[_0x2084('0x26')](_0x49cd9f));delete _0x49cd9f['name'];if(_0x235186===0x191){_0x235186=0x190;}_0x3dc792[_0x2084('0x2b')](_0x235186)[_0x2084('0x37')](_0x5afeea[_0x2084('0x3f')]['test']?{'message':_0x2084('0x88'),'statusCode':_0x49cd9f[_0x2084('0x86')]}:_0x49cd9f);});};
\ No newline at end of file
+var _0xd128=['options','includeAll','findAll','catch','show','keys','rawAttributes','find','create','body','params','ZohoConfiguration','order','pick','getConfigurations','hasOwnProperty','findOne','AccountId','Subjects','getSubjects','Descriptions','channel','ZohoField','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.com.cn','POST','/oauth/v2/token','refreshToken','clientId','clientSecret','access_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','host','serverUrl','code','com','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','GET','format','https://www.zohoapis.%s/crm/v2/settings/fields','Calls','Zoho-oauthtoken\x20','response','message','Owner','Subject','Description','WhoId','Call_Duration','Call_Result','Call_Start_Time','Call_Type','api_name','push','display_label','custom_field','data_type','pick_list_values','statusCode','getFields,\x20%s,\x20%s,\x20%s','test','Wrong\x20credentials','eml-format','rimraf','fast-json-patch','request-promise','bluebird','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','json','offset','undefined','count','limit','set','save','update','destroy','then','end','error','name','send','index','map','ZohoAccount','fieldName','type','model','query','filters','intersection','attributes','fields','length','sort','where','filter','merge','VIRTUAL'];(function(_0x1d9aa0,_0x272488){var _0x226868=function(_0x17127c){while(--_0x17127c){_0x1d9aa0['push'](_0x1d9aa0['shift']());}};_0x226868(++_0x272488);}(_0xd128,0x1b2));var _0x8d12=function(_0x5b7a2c,_0x1fee8b){_0x5b7a2c=_0x5b7a2c-0x0;var _0x1179fc=_0xd128[_0x5b7a2c];return _0x1179fc;};'use strict';var emlformat=require(_0x8d12('0x0'));var rimraf=require(_0x8d12('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x8d12('0x2'));var rp=require(_0x8d12('0x3'));var moment=require('moment');var BPromise=require(_0x8d12('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x8d12('0x5'));var sox=require(_0x8d12('0x6'));var csv=require(_0x8d12('0x7'));var ejs=require(_0x8d12('0x8'));var fs=require('fs');var fs_extra=require(_0x8d12('0x9'));var _=require('lodash');var squel=require(_0x8d12('0xa'));var crypto=require(_0x8d12('0xb'));var jsforce=require(_0x8d12('0xc'));var deskjs=require(_0x8d12('0xd'));var toCsv=require('to-csv');var querystring=require(_0x8d12('0xe'));var Papa=require(_0x8d12('0xf'));var Redis=require('ioredis');var authService=require(_0x8d12('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x8d12('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8d12('0x12'))(_0x8d12('0x13'));var utils=require(_0x8d12('0x14'));var config=require(_0x8d12('0x15'));var licenseUtil=require(_0x8d12('0x16'));var db=require(_0x8d12('0x17'))['db'];var integrations=require(_0x8d12('0x18'));function respondWithStatusCode(_0x32a611,_0x26f7e8){_0x26f7e8=_0x26f7e8||0xcc;return function(_0x3b7b9b){if(_0x3b7b9b){return _0x32a611[_0x8d12('0x19')](_0x26f7e8);}return _0x32a611[_0x8d12('0x1a')](_0x26f7e8)['end']();};}function respondWithResult(_0x4e5fe2,_0x19141e){_0x19141e=_0x19141e||0xc8;return function(_0x270423){if(_0x270423){return _0x4e5fe2['status'](_0x19141e)[_0x8d12('0x1b')](_0x270423);}};}function respondWithFilteredResult(_0x366961,_0x1a694e){return function(_0x3a5b44){if(_0x3a5b44){var _0x3c2a7c=typeof _0x1a694e[_0x8d12('0x1c')]===_0x8d12('0x1d')&&typeof _0x1a694e['limit']==='undefined';var _0x433199=_0x3a5b44[_0x8d12('0x1e')];var _0x4e0143=_0x3c2a7c?0x0:_0x1a694e['offset'];var _0x2dcf07=_0x3c2a7c?_0x3a5b44['count']:_0x1a694e[_0x8d12('0x1c')]+_0x1a694e[_0x8d12('0x1f')];var _0xa241c;if(_0x2dcf07>=_0x433199){_0x2dcf07=_0x433199;_0xa241c=0xc8;}else{_0xa241c=0xce;}_0x366961['status'](_0xa241c);return _0x366961[_0x8d12('0x20')]('Content-Range',_0x4e0143+'-'+_0x2dcf07+'/'+_0x433199)[_0x8d12('0x1b')](_0x3a5b44);}return null;};}function patchUpdates(_0x40fa9a){return function(_0x51b977){try{jsonpatch['apply'](_0x51b977,_0x40fa9a,!![]);}catch(_0x2a19b8){return BPromise['reject'](_0x2a19b8);}return _0x51b977[_0x8d12('0x21')]();};}function saveUpdates(_0x57cc6b,_0x3b4c97){return function(_0x1fd3ed){if(_0x1fd3ed){return _0x1fd3ed[_0x8d12('0x22')](_0x57cc6b)['then'](function(_0x3e3256){return _0x3e3256;});}return null;};}function removeEntity(_0x2c761,_0x1f6099){return function(_0x3428a3){if(_0x3428a3){return _0x3428a3[_0x8d12('0x23')]()[_0x8d12('0x24')](function(){_0x2c761['status'](0xcc)[_0x8d12('0x25')]();});}};}function handleEntityNotFound(_0x5a8e36,_0x311abf){return function(_0x4a7790){if(!_0x4a7790){_0x5a8e36[_0x8d12('0x19')](0x194);}return _0x4a7790;};}function handleError(_0x24221c,_0x44a31e){_0x44a31e=_0x44a31e||0x1f4;return function(_0x5ef0d0){logger[_0x8d12('0x26')](_0x5ef0d0['stack']);if(_0x5ef0d0[_0x8d12('0x27')]){delete _0x5ef0d0[_0x8d12('0x27')];}_0x24221c['status'](_0x44a31e)[_0x8d12('0x28')](_0x5ef0d0);};}exports[_0x8d12('0x29')]=function(_0x1a0fc,_0x35d0e5){var _0x39d18a={},_0x11e25f={},_0x244bb5={'count':0x0,'rows':[]};var _0x2faa72=_[_0x8d12('0x2a')](db[_0x8d12('0x2b')]['rawAttributes'],function(_0x2850d6){return{'name':_0x2850d6[_0x8d12('0x2c')],'type':_0x2850d6[_0x8d12('0x2d')]['key']};});_0x11e25f[_0x8d12('0x2e')]=_[_0x8d12('0x2a')](_0x2faa72,_0x8d12('0x27'));_0x11e25f[_0x8d12('0x2f')]=_['keys'](_0x1a0fc['query']);_0x11e25f[_0x8d12('0x30')]=_[_0x8d12('0x31')](_0x11e25f[_0x8d12('0x2e')],_0x11e25f['query']);_0x39d18a[_0x8d12('0x32')]=_[_0x8d12('0x31')](_0x11e25f[_0x8d12('0x2e')],qs[_0x8d12('0x33')](_0x1a0fc[_0x8d12('0x2f')][_0x8d12('0x33')]));_0x39d18a[_0x8d12('0x32')]=_0x39d18a[_0x8d12('0x32')][_0x8d12('0x34')]?_0x39d18a[_0x8d12('0x32')]:_0x11e25f[_0x8d12('0x2e')];if(!_0x1a0fc[_0x8d12('0x2f')]['hasOwnProperty']('nolimit')){_0x39d18a['limit']=qs[_0x8d12('0x1f')](_0x1a0fc[_0x8d12('0x2f')][_0x8d12('0x1f')]);_0x39d18a['offset']=qs[_0x8d12('0x1c')](_0x1a0fc[_0x8d12('0x2f')][_0x8d12('0x1c')]);}_0x39d18a['order']=qs['sort'](_0x1a0fc[_0x8d12('0x2f')][_0x8d12('0x35')]);_0x39d18a[_0x8d12('0x36')]=qs[_0x8d12('0x30')](_['pick'](_0x1a0fc[_0x8d12('0x2f')],_0x11e25f[_0x8d12('0x30')]),_0x2faa72);if(_0x1a0fc[_0x8d12('0x2f')][_0x8d12('0x37')]){_0x39d18a[_0x8d12('0x36')]=_[_0x8d12('0x38')](_0x39d18a[_0x8d12('0x36')],{'$or':_[_0x8d12('0x2a')](_0x2faa72,function(_0x215ddd){if(_0x215ddd[_0x8d12('0x2d')]!==_0x8d12('0x39')){var _0x4580e8={};_0x4580e8[_0x215ddd[_0x8d12('0x27')]]={'$like':'%'+_0x1a0fc[_0x8d12('0x2f')][_0x8d12('0x37')]+'%'};return _0x4580e8;}})});}_0x39d18a=_[_0x8d12('0x38')]({},_0x39d18a,_0x1a0fc[_0x8d12('0x3a')]);var _0xe74244={'where':_0x39d18a[_0x8d12('0x36')]};return db[_0x8d12('0x2b')][_0x8d12('0x1e')](_0xe74244)['then'](function(_0x284db6){_0x244bb5[_0x8d12('0x1e')]=_0x284db6;if(_0x1a0fc[_0x8d12('0x2f')][_0x8d12('0x3b')]){_0x39d18a['include']=[{'all':!![]}];}return db[_0x8d12('0x2b')][_0x8d12('0x3c')](_0x39d18a);})[_0x8d12('0x24')](function(_0x101f93){_0x244bb5['rows']=_0x101f93;return _0x244bb5;})[_0x8d12('0x24')](respondWithFilteredResult(_0x35d0e5,_0x39d18a))[_0x8d12('0x3d')](handleError(_0x35d0e5,null));};exports[_0x8d12('0x3e')]=function(_0x4b3998,_0x138399){var _0x35b1f1={'raw':![],'where':{'id':_0x4b3998['params']['id']}},_0x703917={};_0x703917[_0x8d12('0x2e')]=_[_0x8d12('0x3f')](db['ZohoAccount'][_0x8d12('0x40')]);_0x703917[_0x8d12('0x2f')]=_[_0x8d12('0x3f')](_0x4b3998[_0x8d12('0x2f')]);_0x703917[_0x8d12('0x30')]=_[_0x8d12('0x31')](_0x703917[_0x8d12('0x2e')],_0x703917[_0x8d12('0x2f')]);_0x35b1f1[_0x8d12('0x32')]=_['intersection'](_0x703917[_0x8d12('0x2e')],qs['fields'](_0x4b3998['query'][_0x8d12('0x33')]));_0x35b1f1[_0x8d12('0x32')]=_0x35b1f1['attributes']['length']?_0x35b1f1[_0x8d12('0x32')]:_0x703917[_0x8d12('0x2e')];if(_0x4b3998[_0x8d12('0x2f')]['includeAll']){_0x35b1f1['include']=[{'all':!![]}];}_0x35b1f1=_[_0x8d12('0x38')]({},_0x35b1f1,_0x4b3998[_0x8d12('0x3a')]);return db[_0x8d12('0x2b')][_0x8d12('0x41')](_0x35b1f1)[_0x8d12('0x24')](handleEntityNotFound(_0x138399,null))[_0x8d12('0x24')](respondWithResult(_0x138399,null))[_0x8d12('0x3d')](handleError(_0x138399,null));};exports[_0x8d12('0x42')]=function(_0x55a4c5,_0x448022){return db[_0x8d12('0x2b')][_0x8d12('0x42')](_0x55a4c5[_0x8d12('0x43')],{})[_0x8d12('0x24')](respondWithResult(_0x448022,0xc9))['catch'](handleError(_0x448022,null));};exports[_0x8d12('0x22')]=function(_0x3d4b8a,_0x3be296){if(_0x3d4b8a[_0x8d12('0x43')]['id']){delete _0x3d4b8a[_0x8d12('0x43')]['id'];}return db[_0x8d12('0x2b')][_0x8d12('0x41')]({'where':{'id':_0x3d4b8a[_0x8d12('0x44')]['id']}})[_0x8d12('0x24')](handleEntityNotFound(_0x3be296,null))[_0x8d12('0x24')](saveUpdates(_0x3d4b8a[_0x8d12('0x43')],null))[_0x8d12('0x24')](respondWithResult(_0x3be296,null))[_0x8d12('0x3d')](handleError(_0x3be296,null));};exports[_0x8d12('0x23')]=function(_0x39d8cc,_0x3a471e){return db[_0x8d12('0x2b')]['find']({'where':{'id':_0x39d8cc[_0x8d12('0x44')]['id']}})[_0x8d12('0x24')](handleEntityNotFound(_0x3a471e,null))['then'](removeEntity(_0x3a471e,null))[_0x8d12('0x3d')](handleError(_0x3a471e,null));};exports['getConfigurations']=function(_0x429cd1,_0x1e1200,_0x14dd05){var _0xccf96c={};var _0x39e16d={};var _0x552a9e;var _0x2b3954;return db[_0x8d12('0x2b')]['findOne']({'where':{'id':_0x429cd1[_0x8d12('0x44')]['id']}})['then'](handleEntityNotFound(_0x1e1200,null))['then'](function(_0x12341f){if(_0x12341f){_0x552a9e=_0x12341f;_0x39e16d[_0x8d12('0x2e')]=_[_0x8d12('0x3f')](db[_0x8d12('0x45')][_0x8d12('0x40')]);_0x39e16d[_0x8d12('0x2f')]=_[_0x8d12('0x3f')](_0x429cd1['query']);_0x39e16d[_0x8d12('0x30')]=_['intersection'](_0x39e16d[_0x8d12('0x2e')],_0x39e16d[_0x8d12('0x2f')]);_0xccf96c[_0x8d12('0x32')]=_[_0x8d12('0x31')](_0x39e16d[_0x8d12('0x2e')],qs[_0x8d12('0x33')](_0x429cd1[_0x8d12('0x2f')]['fields']));_0xccf96c[_0x8d12('0x32')]=_0xccf96c[_0x8d12('0x32')][_0x8d12('0x34')]?_0xccf96c['attributes']:_0x39e16d[_0x8d12('0x2e')];_0xccf96c[_0x8d12('0x46')]=qs[_0x8d12('0x35')](_0x429cd1['query']['sort']);_0xccf96c['where']=qs[_0x8d12('0x30')](_[_0x8d12('0x47')](_0x429cd1[_0x8d12('0x2f')],_0x39e16d[_0x8d12('0x30')]));if(_0x429cd1[_0x8d12('0x2f')][_0x8d12('0x37')]){_0xccf96c[_0x8d12('0x36')]=_[_0x8d12('0x38')](_0xccf96c[_0x8d12('0x36')],{'$or':_[_0x8d12('0x2a')](_0xccf96c[_0x8d12('0x32')],function(_0x46b43a){var _0x27760a={};_0x27760a[_0x46b43a]={'$like':'%'+_0x429cd1[_0x8d12('0x2f')]['filter']+'%'};return _0x27760a;})});}_0xccf96c=_['merge']({},_0xccf96c,_0x429cd1['options']);return _0x552a9e[_0x8d12('0x48')](_0xccf96c);}})[_0x8d12('0x24')](function(_0x10f368){if(_0x10f368){_0x2b3954=_0x10f368[_0x8d12('0x34')];if(!_0x429cd1[_0x8d12('0x2f')][_0x8d12('0x49')]('nolimit')){_0xccf96c[_0x8d12('0x1f')]=qs['limit'](_0x429cd1[_0x8d12('0x2f')][_0x8d12('0x1f')]);_0xccf96c['offset']=qs['offset'](_0x429cd1[_0x8d12('0x2f')]['offset']);}return _0x552a9e[_0x8d12('0x48')](_0xccf96c);}})['then'](function(_0x5f4bb7){if(_0x5f4bb7){return _0x5f4bb7?{'count':_0x2b3954,'rows':_0x5f4bb7}:null;}})[_0x8d12('0x24')](respondWithResult(_0x1e1200,null))[_0x8d12('0x3d')](handleError(_0x1e1200,null));};exports['addConfiguration']=function(_0xd5e771,_0x48014e,_0x54ee1e){if(_0xd5e771[_0x8d12('0x43')]['id']){delete _0xd5e771[_0x8d12('0x43')]['id'];}return db[_0x8d12('0x2b')][_0x8d12('0x4a')]({'where':{'id':_0xd5e771[_0x8d12('0x44')]['id']}})['then'](handleEntityNotFound(_0x48014e,null))[_0x8d12('0x24')](function(_0x2c3e45){if(_0x2c3e45){_0xd5e771[_0x8d12('0x43')][_0x8d12('0x4b')]=_0x2c3e45['id'];_0xd5e771[_0x8d12('0x43')][_0x8d12('0x4c')]=integrations[_0x8d12('0x4d')](_0xd5e771[_0x8d12('0x43')]['channel'],_0xd5e771['body'][_0x8d12('0x2d')]);_0xd5e771[_0x8d12('0x43')][_0x8d12('0x4e')]=integrations['getDescriptions'](_0xd5e771['body'][_0x8d12('0x4f')],_0xd5e771[_0x8d12('0x43')][_0x8d12('0x2d')]);return db[_0x8d12('0x45')]['create'](_0xd5e771[_0x8d12('0x43')],{'include':[{'model':db[_0x8d12('0x50')],'as':'Subjects'},{'model':db[_0x8d12('0x50')],'as':_0x8d12('0x4e')}]});}return null;})[_0x8d12('0x24')](respondWithResult(_0x48014e,null))[_0x8d12('0x3d')](handleError(_0x48014e,null));};function getAccessToken(_0x125ea4){return new Promise(function(_0x26c348,_0x223d58){var _0x5ef8fb;switch(_0x125ea4[_0x8d12('0x51')]){case'US':_0x5ef8fb=_0x8d12('0x52');break;case'AU':_0x5ef8fb=_0x8d12('0x53');break;case'EU':_0x5ef8fb=_0x8d12('0x54');break;case'IN':_0x5ef8fb='https://accounts.zoho.in';break;case'CN':_0x5ef8fb=_0x8d12('0x55');break;default:_0x5ef8fb='https://accounts.zoho.eu';break;}var _0x36cf44={'method':_0x8d12('0x56'),'uri':_0x5ef8fb+_0x8d12('0x57'),'qs':{'refresh_token':_0x125ea4[_0x8d12('0x58')],'client_id':_0x125ea4[_0x8d12('0x59')],'client_secret':_0x125ea4[_0x8d12('0x5a')],'grant_type':'refresh_token'},'json':!![]};return rp(_0x36cf44)['then'](function(_0x5908dc){if(_0x5908dc[_0x8d12('0x5b')]){_0x26c348(_0x5908dc[_0x8d12('0x5b')]);}else{_0x223d58(_0x8d12('0x5c'));}})[_0x8d12('0x3d')](function(_0x59c25f){_0x223d58(_0x59c25f);});});}exports['getFields']=function(_0x4bcbe0,_0x71c817,_0x4117f8){var _0x318ea2,_0x28295d,_0x2282cc,_0x181aec,_0x69c7bc;return db[_0x8d12('0x2b')][_0x8d12('0x4a')]({'where':{'id':_0x4bcbe0[_0x8d12('0x44')]['id']},'attributes':['id',_0x8d12('0x5d'),_0x8d12('0x51'),_0x8d12('0x59'),_0x8d12('0x5a'),_0x8d12('0x5e'),_0x8d12('0x5f'),'refreshToken']})['then'](handleEntityNotFound(_0x71c817,null))[_0x8d12('0x24')](function(_0x41e417){_0x69c7bc=_0x41e417;_0x318ea2=_0x69c7bc[_0x8d12('0x5d')];_0x28295d=_0x318ea2==='zoho.eu'?'eu':_0x8d12('0x60');_0x2282cc=_0x69c7bc['serverUrl'];var _0x1f4ad6=_0x2282cc['slice'](-0x1);if(_0x1f4ad6==='/'||_0x1f4ad6==='\x5c'||_0x1f4ad6===':'){_0x2282cc=_0x2282cc['substring'](0x0,_0x2282cc['lastIndexOf'](_0x1f4ad6));}if(!_0x69c7bc[_0x8d12('0x58')]){throw new Error(_0x8d12('0x61'));}return getAccessToken(_0x69c7bc);})[_0x8d12('0x24')](function(_0x418a2c){if(_0x418a2c){return rp({'method':_0x8d12('0x62'),'uri':util[_0x8d12('0x63')](_0x8d12('0x64'),_0x28295d),'qs':{'module':_0x8d12('0x65')},'headers':{'Authorization':_0x8d12('0x66')+_0x418a2c},'json':!![]});}})[_0x8d12('0x24')](function(_0x3986b6){if(_0x3986b6){if(_0x3986b6['response']&&_0x3986b6[_0x8d12('0x67')][_0x8d12('0x26')]){throw new Error(_0x3986b6[_0x8d12('0x67')][_0x8d12('0x26')][_0x8d12('0x68')]);}var _0x463a7c=[];var _0x37c930=[];var _0x4a6b84=[_0x8d12('0x69'),_0x8d12('0x6a'),_0x8d12('0x6b'),_0x8d12('0x6c'),_0x8d12('0x6d'),_0x8d12('0x6e'),_0x8d12('0x6f'),_0x8d12('0x70')];_0x37c930=_['remove'](_0x3986b6[_0x8d12('0x33')],function(_0x4060fc){return _0x4a6b84['includes'](_0x4060fc[_0x8d12('0x71')]);});for(var _0x5ecc38=0x0;_0x5ecc38<_0x37c930[_0x8d12('0x34')];_0x5ecc38++){if(_0x37c930[_0x5ecc38]['system_mandatory']===![]){_0x463a7c[_0x8d12('0x72')]({'id':_0x37c930[_0x5ecc38]['id'],'name':_0x37c930[_0x5ecc38][_0x8d12('0x73')],'custom':_0x37c930[_0x5ecc38][_0x8d12('0x74')],'options':_0x37c930[_0x5ecc38][_0x8d12('0x75')]==='picklist'&&_0x37c930[_0x5ecc38][_0x8d12('0x76')][_0x8d12('0x34')]>-0x1?_['map'](_0x37c930[_0x5ecc38][_0x8d12('0x76')],function(_0x560886){return{'name':_0x560886,'value':_0x560886};}):[]});}}return{'count':_0x463a7c[_0x8d12('0x34')],'rows':_0x463a7c};}else{return{'count':0x0,'rows':[]};}})[_0x8d12('0x24')](respondWithResult(_0x71c817,null))[_0x8d12('0x3d')](function(_0x2bdfaf){var _0x391ade=_0x4bcbe0[_0x8d12('0x2f')]['test']?0x1f4:_0x2bdfaf[_0x8d12('0x77')]||0x1f4;logger[_0x8d12('0x26')](_0x8d12('0x78'),'getFields',_0x391ade,JSON['stringify'](_0x2bdfaf));delete _0x2bdfaf[_0x8d12('0x27')];if(_0x391ade===0x191){_0x391ade=0x190;}_0x71c817['status'](_0x391ade)['send'](_0x4bcbe0[_0x8d12('0x2f')][_0x8d12('0x79')]?{'message':_0x8d12('0x7a'),'statusCode':_0x2bdfaf['statusCode']}:_0x2bdfaf);});};
\ No newline at end of file