Built motion from commit 9d0783e6.|2.6.13
[motion2.git] / server / api / intSalesforceField / intSalesforceField.controller.js
index d16242d..72d7351 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d40=['attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','findAll','rows','catch','params','fields','include','find','create','update','body','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','json','count','offset','limit','Content-Range','reject','save','then','destroy','error','stack','name','send','index','map','SalesforceField','rawAttributes','type','key','model','query','keys','filters','intersection'];(function(_0x285765,_0x213239){var _0x125f5d=function(_0x2fd111){while(--_0x2fd111){_0x285765['push'](_0x285765['shift']());}};_0x125f5d(++_0x213239);}(_0x7d40,0xa7));var _0x07d4=function(_0x9f9816,_0x579b0e){_0x9f9816=_0x9f9816-0x0;var _0x40a913=_0x7d40[_0x9f9816];return _0x40a913;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0x07d4('0x0'));var rimraf=require(_0x07d4('0x1'));var zipdir=require(_0x07d4('0x2'));var jsonpatch=require(_0x07d4('0x3'));var rp=require('request-promise');var moment=require(_0x07d4('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x07d4('0x5'));var util=require(_0x07d4('0x6'));var path=require(_0x07d4('0x7'));var sox=require(_0x07d4('0x8'));var csv=require(_0x07d4('0x9'));var ejs=require('ejs');var fs=require('fs');var _=require('lodash');var squel=require(_0x07d4('0xa'));var crypto=require(_0x07d4('0xb'));var jsforce=require(_0x07d4('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x07d4('0x9'));var querystring=require(_0x07d4('0xd'));var Papa=require(_0x07d4('0xe'));var Redis=require(_0x07d4('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x07d4('0x10'));var as=require(_0x07d4('0x11'));var hardwareService=require(_0x07d4('0x12'));var logger=require(_0x07d4('0x13'))(_0x07d4('0x14'));var utils=require('../../config/utils');var config=require(_0x07d4('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x07d4('0x16'))['db'];function respondWithStatusCode(_0xdf447f,_0x397e7d){_0x397e7d=_0x397e7d||0xcc;return function(_0x198b94){if(_0x198b94){return _0xdf447f[_0x07d4('0x17')](_0x397e7d);}return _0xdf447f[_0x07d4('0x18')](_0x397e7d)['end']();};}function respondWithResult(_0x535945,_0xc8f23e){_0xc8f23e=_0xc8f23e||0xc8;return function(_0x15803b){if(_0x15803b){return _0x535945['status'](_0xc8f23e)[_0x07d4('0x19')](_0x15803b);}};}function respondWithFilteredResult(_0xdc8936,_0x434361){return function(_0x43b853){if(_0x43b853){var _0x4daf2c=_0x43b853[_0x07d4('0x1a')],_0x2c8e87=_0x434361[_0x07d4('0x1b')],_0x236457=_0x434361['offset']+_0x434361[_0x07d4('0x1c')],_0xc08bfa;if(_0x236457>=_0x4daf2c){_0x236457=_0x4daf2c;_0xc08bfa=0xc8;}else{_0xc08bfa=0xce;}_0xdc8936[_0x07d4('0x18')](_0xc08bfa);return _0xdc8936['set'](_0x07d4('0x1d'),_0x2c8e87+'-'+_0x236457+'/'+_0x4daf2c)[_0x07d4('0x19')](_0x43b853);}return null;};}function patchUpdates(_0x2fd0ea){return function(_0x24144b){try{jsonpatch['apply'](_0x24144b,_0x2fd0ea,!![]);}catch(_0x42693c){return BPromise[_0x07d4('0x1e')](_0x42693c);}return _0x24144b[_0x07d4('0x1f')]();};}function saveUpdates(_0x2f3e84,_0x354e2a){return function(_0x272ff8){if(_0x272ff8){return _0x272ff8['update'](_0x2f3e84)[_0x07d4('0x20')](function(_0x503580){return _0x503580;});}return null;};}function removeEntity(_0x6d5a55,_0x2a32e6){return function(_0x54fdef){if(_0x54fdef){return _0x54fdef[_0x07d4('0x21')]()[_0x07d4('0x20')](function(){_0x6d5a55[_0x07d4('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1f3a45,_0x3f2262){return function(_0x1143b4){if(!_0x1143b4){_0x1f3a45[_0x07d4('0x17')](0x194);}return _0x1143b4;};}function handleError(_0x494a32,_0x27c172){_0x27c172=_0x27c172||0x1f4;return function(_0x52c2c1){logger[_0x07d4('0x22')](_0x52c2c1[_0x07d4('0x23')]);if(_0x52c2c1[_0x07d4('0x24')]){delete _0x52c2c1['name'];}_0x494a32[_0x07d4('0x18')](_0x27c172)[_0x07d4('0x25')](_0x52c2c1);};}exports[_0x07d4('0x26')]=function(_0x4eaeb2,_0xe6a53b){var _0x1da359={},_0x1679a6={},_0xddad4b={'count':0x0,'rows':[]};var _0x42b92c=_[_0x07d4('0x27')](db[_0x07d4('0x28')][_0x07d4('0x29')],function(_0x3048c9){return{'name':_0x3048c9['fieldName'],'type':_0x3048c9[_0x07d4('0x2a')][_0x07d4('0x2b')]};});_0x1679a6[_0x07d4('0x2c')]=_[_0x07d4('0x27')](_0x42b92c,_0x07d4('0x24'));_0x1679a6[_0x07d4('0x2d')]=_[_0x07d4('0x2e')](_0x4eaeb2[_0x07d4('0x2d')]);_0x1679a6[_0x07d4('0x2f')]=_[_0x07d4('0x30')](_0x1679a6[_0x07d4('0x2c')],_0x1679a6[_0x07d4('0x2d')]);_0x1da359[_0x07d4('0x31')]=_[_0x07d4('0x30')](_0x1679a6[_0x07d4('0x2c')],qs['fields'](_0x4eaeb2['query']['fields']));_0x1da359[_0x07d4('0x31')]=_0x1da359[_0x07d4('0x31')][_0x07d4('0x32')]?_0x1da359[_0x07d4('0x31')]:_0x1679a6[_0x07d4('0x2c')];if(!_0x4eaeb2[_0x07d4('0x2d')][_0x07d4('0x33')](_0x07d4('0x34'))){_0x1da359[_0x07d4('0x1c')]=qs[_0x07d4('0x1c')](_0x4eaeb2['query']['limit']);_0x1da359[_0x07d4('0x1b')]=qs['offset'](_0x4eaeb2[_0x07d4('0x2d')][_0x07d4('0x1b')]);}_0x1da359[_0x07d4('0x35')]=qs[_0x07d4('0x36')](_0x4eaeb2[_0x07d4('0x2d')][_0x07d4('0x36')]);_0x1da359[_0x07d4('0x37')]=qs[_0x07d4('0x2f')](_[_0x07d4('0x38')](_0x4eaeb2[_0x07d4('0x2d')],_0x1679a6[_0x07d4('0x2f')]),_0x42b92c);if(_0x4eaeb2[_0x07d4('0x2d')][_0x07d4('0x39')]){_0x1da359[_0x07d4('0x37')]=_['merge'](_0x1da359[_0x07d4('0x37')],{'$or':_[_0x07d4('0x27')](_0x42b92c,function(_0x287501){if(_0x287501[_0x07d4('0x2a')]!==_0x07d4('0x3a')){var _0x544157={};_0x544157[_0x287501[_0x07d4('0x24')]]={'$like':'%'+_0x4eaeb2['query']['filter']+'%'};return _0x544157;}})});}_0x1da359=_[_0x07d4('0x3b')]({},_0x1da359,_0x4eaeb2[_0x07d4('0x3c')]);var _0x36ae63={'where':_0x1da359[_0x07d4('0x37')]};return db[_0x07d4('0x28')]['count'](_0x36ae63)[_0x07d4('0x20')](function(_0x3df1ea){_0xddad4b['count']=_0x3df1ea;if(_0x4eaeb2['query'][_0x07d4('0x3d')]){_0x1da359['include']=[{'all':!![]}];}return db['SalesforceField'][_0x07d4('0x3e')](_0x1da359);})[_0x07d4('0x20')](function(_0x196705){_0xddad4b[_0x07d4('0x3f')]=_0x196705;return _0xddad4b;})[_0x07d4('0x20')](respondWithFilteredResult(_0xe6a53b,_0x1da359))[_0x07d4('0x40')](handleError(_0xe6a53b,null));};exports['show']=function(_0x70e10f,_0x27f128){var _0x706205={'raw':!![],'where':{'id':_0x70e10f[_0x07d4('0x41')]['id']}},_0x2dca16={};_0x2dca16[_0x07d4('0x2c')]=_[_0x07d4('0x2e')](db[_0x07d4('0x28')]['rawAttributes']);_0x2dca16[_0x07d4('0x2d')]=_[_0x07d4('0x2e')](_0x70e10f[_0x07d4('0x2d')]);_0x2dca16[_0x07d4('0x2f')]=_[_0x07d4('0x30')](_0x2dca16[_0x07d4('0x2c')],_0x2dca16[_0x07d4('0x2d')]);_0x706205[_0x07d4('0x31')]=_['intersection'](_0x2dca16['model'],qs[_0x07d4('0x42')](_0x70e10f[_0x07d4('0x2d')][_0x07d4('0x42')]));_0x706205['attributes']=_0x706205[_0x07d4('0x31')][_0x07d4('0x32')]?_0x706205[_0x07d4('0x31')]:_0x2dca16[_0x07d4('0x2c')];if(_0x70e10f[_0x07d4('0x2d')][_0x07d4('0x3d')]){_0x706205[_0x07d4('0x43')]=[{'all':!![]}];}_0x706205=_[_0x07d4('0x3b')]({},_0x706205,_0x70e10f[_0x07d4('0x3c')]);return db[_0x07d4('0x28')][_0x07d4('0x44')](_0x706205)[_0x07d4('0x20')](handleEntityNotFound(_0x27f128,null))[_0x07d4('0x20')](respondWithResult(_0x27f128,null))[_0x07d4('0x40')](handleError(_0x27f128,null));};exports[_0x07d4('0x45')]=function(_0x2eb438,_0x302554){return db[_0x07d4('0x28')][_0x07d4('0x45')](_0x2eb438['body'],{})[_0x07d4('0x20')](respondWithResult(_0x302554,0xc9))[_0x07d4('0x40')](handleError(_0x302554,null));};exports[_0x07d4('0x46')]=function(_0x307e12,_0x44469e){if(_0x307e12[_0x07d4('0x47')]['id']){delete _0x307e12[_0x07d4('0x47')]['id'];}return db[_0x07d4('0x28')][_0x07d4('0x44')]({'where':{'id':_0x307e12[_0x07d4('0x41')]['id']}})[_0x07d4('0x20')](handleEntityNotFound(_0x44469e,null))[_0x07d4('0x20')](saveUpdates(_0x307e12[_0x07d4('0x47')],null))[_0x07d4('0x20')](respondWithResult(_0x44469e,null))['catch'](handleError(_0x44469e,null));};exports[_0x07d4('0x21')]=function(_0x207ce6,_0x1f73f1){return db[_0x07d4('0x28')][_0x07d4('0x44')]({'where':{'id':_0x207ce6[_0x07d4('0x41')]['id']}})[_0x07d4('0x20')](handleEntityNotFound(_0x1f73f1,null))[_0x07d4('0x20')](removeEntity(_0x1f73f1,null))['catch'](handleError(_0x1f73f1,null));};
\ No newline at end of file
+var _0xc154=['find','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','count','limit','set','Content-Range','json','apply','save','update','destroy','error','send','index','map','fieldName','type','name','keys','query','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','merge','VIRTUAL','filter','SalesforceField','then','includeAll','rows','catch','show','length','include','options','create','body','params'];(function(_0x3135f7,_0x13571d){var _0x22294a=function(_0x338155){while(--_0x338155){_0x3135f7['push'](_0x3135f7['shift']());}};_0x22294a(++_0x13571d);}(_0xc154,0x1cf));var _0x4c15=function(_0x2bda85,_0x5466b1){_0x2bda85=_0x2bda85-0x0;var _0xbff55f=_0xc154[_0x2bda85];return _0xbff55f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4c15('0x0'));var zipdir=require(_0x4c15('0x1'));var jsonpatch=require(_0x4c15('0x2'));var rp=require(_0x4c15('0x3'));var moment=require(_0x4c15('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x4c15('0x5'));var util=require('util');var path=require('path');var sox=require(_0x4c15('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4c15('0x7'));var _=require(_0x4c15('0x8'));var squel=require(_0x4c15('0x9'));var crypto=require(_0x4c15('0xa'));var jsforce=require(_0x4c15('0xb'));var deskjs=require(_0x4c15('0xc'));var toCsv=require(_0x4c15('0xd'));var querystring=require(_0x4c15('0xe'));var Papa=require(_0x4c15('0xf'));var Redis=require(_0x4c15('0x10'));var authService=require(_0x4c15('0x11'));var qs=require(_0x4c15('0x12'));var as=require(_0x4c15('0x13'));var hardwareService=require(_0x4c15('0x14'));var logger=require(_0x4c15('0x15'))(_0x4c15('0x16'));var utils=require(_0x4c15('0x17'));var config=require(_0x4c15('0x18'));var licenseUtil=require(_0x4c15('0x19'));var db=require(_0x4c15('0x1a'))['db'];function respondWithStatusCode(_0x713855,_0xdc15dc){_0xdc15dc=_0xdc15dc||0xcc;return function(_0x1b8568){if(_0x1b8568){return _0x713855[_0x4c15('0x1b')](_0xdc15dc);}return _0x713855[_0x4c15('0x1c')](_0xdc15dc)[_0x4c15('0x1d')]();};}function respondWithResult(_0x5cd5f8,_0x23acb6){_0x23acb6=_0x23acb6||0xc8;return function(_0x2a0419){if(_0x2a0419){return _0x5cd5f8[_0x4c15('0x1c')](_0x23acb6)['json'](_0x2a0419);}};}function respondWithFilteredResult(_0x5ad2f4,_0x366705){return function(_0xcdacdd){if(_0xcdacdd){var _0x536041=typeof _0x366705[_0x4c15('0x1e')]===_0x4c15('0x1f')&&typeof _0x366705['limit']===_0x4c15('0x1f');var _0x3d49b8=_0xcdacdd[_0x4c15('0x20')];var _0x59b3e6=_0x536041?0x0:_0x366705[_0x4c15('0x1e')];var _0x2880d0=_0x536041?_0xcdacdd[_0x4c15('0x20')]:_0x366705['offset']+_0x366705[_0x4c15('0x21')];var _0x519f49;if(_0x2880d0>=_0x3d49b8){_0x2880d0=_0x3d49b8;_0x519f49=0xc8;}else{_0x519f49=0xce;}_0x5ad2f4[_0x4c15('0x1c')](_0x519f49);return _0x5ad2f4[_0x4c15('0x22')](_0x4c15('0x23'),_0x59b3e6+'-'+_0x2880d0+'/'+_0x3d49b8)[_0x4c15('0x24')](_0xcdacdd);}return null;};}function patchUpdates(_0x801196){return function(_0x5d2a4c){try{jsonpatch[_0x4c15('0x25')](_0x5d2a4c,_0x801196,!![]);}catch(_0x1864ec){return BPromise['reject'](_0x1864ec);}return _0x5d2a4c[_0x4c15('0x26')]();};}function saveUpdates(_0x1daa64,_0x381895){return function(_0x5679ca){if(_0x5679ca){return _0x5679ca[_0x4c15('0x27')](_0x1daa64)['then'](function(_0x357211){return _0x357211;});}return null;};}function removeEntity(_0x4a6d93,_0x4c4ae8){return function(_0x187419){if(_0x187419){return _0x187419[_0x4c15('0x28')]()['then'](function(){_0x4a6d93[_0x4c15('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x184365,_0x9b2757){return function(_0x4a081c){if(!_0x4a081c){_0x184365['sendStatus'](0x194);}return _0x4a081c;};}function handleError(_0x22206f,_0x2901b1){_0x2901b1=_0x2901b1||0x1f4;return function(_0x369ef1){logger[_0x4c15('0x29')](_0x369ef1['stack']);if(_0x369ef1['name']){delete _0x369ef1['name'];}_0x22206f[_0x4c15('0x1c')](_0x2901b1)[_0x4c15('0x2a')](_0x369ef1);};}exports[_0x4c15('0x2b')]=function(_0x2b9b08,_0x33ddad){var _0x32c8e4={},_0x3029b2={},_0x2b3bb6={'count':0x0,'rows':[]};var _0x2e56fa=_[_0x4c15('0x2c')](db['SalesforceField']['rawAttributes'],function(_0x73fe3b){return{'name':_0x73fe3b[_0x4c15('0x2d')],'type':_0x73fe3b[_0x4c15('0x2e')]['key']};});_0x3029b2['model']=_[_0x4c15('0x2c')](_0x2e56fa,_0x4c15('0x2f'));_0x3029b2['query']=_[_0x4c15('0x30')](_0x2b9b08[_0x4c15('0x31')]);_0x3029b2['filters']=_[_0x4c15('0x32')](_0x3029b2[_0x4c15('0x33')],_0x3029b2[_0x4c15('0x31')]);_0x32c8e4[_0x4c15('0x34')]=_['intersection'](_0x3029b2[_0x4c15('0x33')],qs[_0x4c15('0x35')](_0x2b9b08['query']['fields']));_0x32c8e4[_0x4c15('0x34')]=_0x32c8e4['attributes']['length']?_0x32c8e4[_0x4c15('0x34')]:_0x3029b2[_0x4c15('0x33')];if(!_0x2b9b08[_0x4c15('0x31')][_0x4c15('0x36')](_0x4c15('0x37'))){_0x32c8e4[_0x4c15('0x21')]=qs[_0x4c15('0x21')](_0x2b9b08[_0x4c15('0x31')][_0x4c15('0x21')]);_0x32c8e4[_0x4c15('0x1e')]=qs[_0x4c15('0x1e')](_0x2b9b08[_0x4c15('0x31')][_0x4c15('0x1e')]);}_0x32c8e4[_0x4c15('0x38')]=qs['sort'](_0x2b9b08[_0x4c15('0x31')][_0x4c15('0x39')]);_0x32c8e4[_0x4c15('0x3a')]=qs[_0x4c15('0x3b')](_[_0x4c15('0x3c')](_0x2b9b08['query'],_0x3029b2[_0x4c15('0x3b')]),_0x2e56fa);if(_0x2b9b08[_0x4c15('0x31')]['filter']){_0x32c8e4['where']=_[_0x4c15('0x3d')](_0x32c8e4[_0x4c15('0x3a')],{'$or':_[_0x4c15('0x2c')](_0x2e56fa,function(_0x30f553){if(_0x30f553[_0x4c15('0x2e')]!==_0x4c15('0x3e')){var _0x504afe={};_0x504afe[_0x30f553[_0x4c15('0x2f')]]={'$like':'%'+_0x2b9b08[_0x4c15('0x31')][_0x4c15('0x3f')]+'%'};return _0x504afe;}})});}_0x32c8e4=_[_0x4c15('0x3d')]({},_0x32c8e4,_0x2b9b08['options']);var _0x21ab1f={'where':_0x32c8e4['where']};return db[_0x4c15('0x40')][_0x4c15('0x20')](_0x21ab1f)[_0x4c15('0x41')](function(_0x224f50){_0x2b3bb6['count']=_0x224f50;if(_0x2b9b08[_0x4c15('0x31')][_0x4c15('0x42')]){_0x32c8e4['include']=[{'all':!![]}];}return db[_0x4c15('0x40')]['findAll'](_0x32c8e4);})[_0x4c15('0x41')](function(_0x60edc4){_0x2b3bb6[_0x4c15('0x43')]=_0x60edc4;return _0x2b3bb6;})[_0x4c15('0x41')](respondWithFilteredResult(_0x33ddad,_0x32c8e4))[_0x4c15('0x44')](handleError(_0x33ddad,null));};exports[_0x4c15('0x45')]=function(_0x26e471,_0x3990fa){var _0xc77a58={'raw':!![],'where':{'id':_0x26e471['params']['id']}},_0x11e8c2={};_0x11e8c2[_0x4c15('0x33')]=_[_0x4c15('0x30')](db[_0x4c15('0x40')]['rawAttributes']);_0x11e8c2[_0x4c15('0x31')]=_[_0x4c15('0x30')](_0x26e471['query']);_0x11e8c2[_0x4c15('0x3b')]=_['intersection'](_0x11e8c2['model'],_0x11e8c2['query']);_0xc77a58['attributes']=_[_0x4c15('0x32')](_0x11e8c2['model'],qs[_0x4c15('0x35')](_0x26e471[_0x4c15('0x31')][_0x4c15('0x35')]));_0xc77a58[_0x4c15('0x34')]=_0xc77a58[_0x4c15('0x34')][_0x4c15('0x46')]?_0xc77a58[_0x4c15('0x34')]:_0x11e8c2[_0x4c15('0x33')];if(_0x26e471[_0x4c15('0x31')][_0x4c15('0x42')]){_0xc77a58[_0x4c15('0x47')]=[{'all':!![]}];}_0xc77a58=_[_0x4c15('0x3d')]({},_0xc77a58,_0x26e471[_0x4c15('0x48')]);return db[_0x4c15('0x40')]['find'](_0xc77a58)['then'](handleEntityNotFound(_0x3990fa,null))['then'](respondWithResult(_0x3990fa,null))[_0x4c15('0x44')](handleError(_0x3990fa,null));};exports[_0x4c15('0x49')]=function(_0x5cf422,_0x74eb4c){return db[_0x4c15('0x40')][_0x4c15('0x49')](_0x5cf422[_0x4c15('0x4a')],{})[_0x4c15('0x41')](respondWithResult(_0x74eb4c,0xc9))[_0x4c15('0x44')](handleError(_0x74eb4c,null));};exports[_0x4c15('0x27')]=function(_0xe41e9d,_0x34dae1){if(_0xe41e9d[_0x4c15('0x4a')]['id']){delete _0xe41e9d['body']['id'];}return db[_0x4c15('0x40')]['find']({'where':{'id':_0xe41e9d[_0x4c15('0x4b')]['id']}})[_0x4c15('0x41')](handleEntityNotFound(_0x34dae1,null))[_0x4c15('0x41')](saveUpdates(_0xe41e9d[_0x4c15('0x4a')],null))[_0x4c15('0x41')](respondWithResult(_0x34dae1,null))['catch'](handleError(_0x34dae1,null));};exports[_0x4c15('0x28')]=function(_0x25fb48,_0x2b6caa){return db[_0x4c15('0x40')][_0x4c15('0x4c')]({'where':{'id':_0x25fb48[_0x4c15('0x4b')]['id']}})[_0x4c15('0x41')](handleEntityNotFound(_0x2b6caa,null))[_0x4c15('0x41')](removeEntity(_0x2b6caa,null))[_0x4c15('0x44')](handleError(_0x2b6caa,null));};
\ No newline at end of file