Built motion from commit 85328c08.|2.5.50
[motion2.git] / server / api / mailSubstatus / mailSubstatus.controller.js
index e0a2875..364ebb1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x569c=['status','end','json','offset','undefined','limit','count','set','update','then','destroy','error','stack','index','map','MailSubstatus','key','model','name','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','show','params','keys','rawAttributes','include','find','catch','create','body','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','squel','desk.js','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x569c,0x75));var _0xc569=function(_0x59b6eb,_0x23d705){_0x59b6eb=_0x59b6eb-0x0;var _0x10f85c=_0x569c[_0x59b6eb];return _0x10f85c;};'use strict';var emlformat=require(_0xc569('0x0'));var rimraf=require(_0xc569('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xc569('0x2'));var rp=require(_0xc569('0x3'));var moment=require(_0xc569('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xc569('0x5'));var util=require(_0xc569('0x6'));var path=require(_0xc569('0x7'));var sox=require(_0xc569('0x8'));var csv=require(_0xc569('0x9'));var ejs=require(_0xc569('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xc569('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xc569('0xc'));var toCsv=require(_0xc569('0x9'));var querystring=require('querystring');var Papa=require(_0xc569('0xd'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xc569('0xe'));var as=require(_0xc569('0xf'));var hardwareService=require(_0xc569('0x10'));var logger=require(_0xc569('0x11'))(_0xc569('0x12'));var utils=require(_0xc569('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0xc569('0x14'));var db=require(_0xc569('0x15'))['db'];function respondWithStatusCode(_0x1c8ed4,_0x52f0f6){_0x52f0f6=_0x52f0f6||0xcc;return function(_0x15f1f7){if(_0x15f1f7){return _0x1c8ed4[_0xc569('0x16')](_0x52f0f6);}return _0x1c8ed4[_0xc569('0x17')](_0x52f0f6)[_0xc569('0x18')]();};}function respondWithResult(_0x3c511d,_0x1db334){_0x1db334=_0x1db334||0xc8;return function(_0x1558ee){if(_0x1558ee){return _0x3c511d[_0xc569('0x17')](_0x1db334)[_0xc569('0x19')](_0x1558ee);}};}function respondWithFilteredResult(_0xb6ce15,_0x1e8d9a){return function(_0x5881c9){if(_0x5881c9){var _0x5baa89=typeof _0x1e8d9a[_0xc569('0x1a')]===_0xc569('0x1b')&&typeof _0x1e8d9a[_0xc569('0x1c')]===_0xc569('0x1b');var _0x1e8e09=_0x5881c9[_0xc569('0x1d')];var _0xda5bcf=_0x5baa89?0x0:_0x1e8d9a['offset'];var _0x443242=_0x5baa89?_0x5881c9[_0xc569('0x1d')]:_0x1e8d9a[_0xc569('0x1a')]+_0x1e8d9a['limit'];var _0x1f92af;if(_0x443242>=_0x1e8e09){_0x443242=_0x1e8e09;_0x1f92af=0xc8;}else{_0x1f92af=0xce;}_0xb6ce15[_0xc569('0x17')](_0x1f92af);return _0xb6ce15[_0xc569('0x1e')]('Content-Range',_0xda5bcf+'-'+_0x443242+'/'+_0x1e8e09)[_0xc569('0x19')](_0x5881c9);}return null;};}function patchUpdates(_0x32e61d){return function(_0xb2ce38){try{jsonpatch['apply'](_0xb2ce38,_0x32e61d,!![]);}catch(_0x2cdd49){return BPromise['reject'](_0x2cdd49);}return _0xb2ce38['save']();};}function saveUpdates(_0x34fd08,_0x1eb574){return function(_0x27f4bc){if(_0x27f4bc){return _0x27f4bc[_0xc569('0x1f')](_0x34fd08)[_0xc569('0x20')](function(_0xbca8e6){return _0xbca8e6;});}return null;};}function removeEntity(_0x191116,_0xfc9095){return function(_0x126841){if(_0x126841){return _0x126841[_0xc569('0x21')]()[_0xc569('0x20')](function(){_0x191116['status'](0xcc)[_0xc569('0x18')]();});}};}function handleEntityNotFound(_0x3da2ed,_0x118771){return function(_0x27865b){if(!_0x27865b){_0x3da2ed[_0xc569('0x16')](0x194);}return _0x27865b;};}function handleError(_0x35bd14,_0x95320){_0x95320=_0x95320||0x1f4;return function(_0x2b01c9){logger[_0xc569('0x22')](_0x2b01c9[_0xc569('0x23')]);if(_0x2b01c9['name']){delete _0x2b01c9['name'];}_0x35bd14[_0xc569('0x17')](_0x95320)['send'](_0x2b01c9);};}exports[_0xc569('0x24')]=function(_0x59ce65,_0x1a86c4){var _0x11ece4={},_0x13bf28={},_0x155006={'count':0x0,'rows':[]};var _0x243cc1=_[_0xc569('0x25')](db[_0xc569('0x26')]['rawAttributes'],function(_0x95dadf){return{'name':_0x95dadf['fieldName'],'type':_0x95dadf['type'][_0xc569('0x27')]};});_0x13bf28[_0xc569('0x28')]=_[_0xc569('0x25')](_0x243cc1,_0xc569('0x29'));_0x13bf28[_0xc569('0x2a')]=_['keys'](_0x59ce65[_0xc569('0x2a')]);_0x13bf28[_0xc569('0x2b')]=_[_0xc569('0x2c')](_0x13bf28[_0xc569('0x28')],_0x13bf28[_0xc569('0x2a')]);_0x11ece4[_0xc569('0x2d')]=_[_0xc569('0x2c')](_0x13bf28['model'],qs[_0xc569('0x2e')](_0x59ce65[_0xc569('0x2a')]['fields']));_0x11ece4[_0xc569('0x2d')]=_0x11ece4[_0xc569('0x2d')][_0xc569('0x2f')]?_0x11ece4[_0xc569('0x2d')]:_0x13bf28[_0xc569('0x28')];if(!_0x59ce65[_0xc569('0x2a')][_0xc569('0x30')]('nolimit')){_0x11ece4[_0xc569('0x1c')]=qs[_0xc569('0x1c')](_0x59ce65[_0xc569('0x2a')][_0xc569('0x1c')]);_0x11ece4['offset']=qs[_0xc569('0x1a')](_0x59ce65['query'][_0xc569('0x1a')]);}_0x11ece4[_0xc569('0x31')]=qs[_0xc569('0x32')](_0x59ce65[_0xc569('0x2a')][_0xc569('0x32')]);_0x11ece4[_0xc569('0x33')]=qs['filters'](_[_0xc569('0x34')](_0x59ce65['query'],_0x13bf28[_0xc569('0x2b')]),_0x243cc1);if(_0x59ce65['query'][_0xc569('0x35')]){_0x11ece4['where']=_[_0xc569('0x36')](_0x11ece4[_0xc569('0x33')],{'$or':_[_0xc569('0x25')](_0x243cc1,function(_0xc5065b){if(_0xc5065b['type']!==_0xc569('0x37')){var _0x2132c5={};_0x2132c5[_0xc5065b[_0xc569('0x29')]]={'$like':'%'+_0x59ce65[_0xc569('0x2a')][_0xc569('0x35')]+'%'};return _0x2132c5;}})});}_0x11ece4=_['merge']({},_0x11ece4,_0x59ce65[_0xc569('0x38')]);var _0x51ce9b={'where':_0x11ece4['where']};return db[_0xc569('0x26')]['count'](_0x51ce9b)[_0xc569('0x20')](function(_0x395680){_0x155006[_0xc569('0x1d')]=_0x395680;if(_0x59ce65['query'][_0xc569('0x39')]){_0x11ece4['include']=[{'all':!![]}];}return db['MailSubstatus'][_0xc569('0x3a')](_0x11ece4);})[_0xc569('0x20')](function(_0x321f43){_0x155006[_0xc569('0x3b')]=_0x321f43;return _0x155006;})[_0xc569('0x20')](respondWithFilteredResult(_0x1a86c4,_0x11ece4))['catch'](handleError(_0x1a86c4,null));};exports[_0xc569('0x3c')]=function(_0x42d34f,_0x3b1ead){var _0x558899={'raw':!![],'where':{'id':_0x42d34f[_0xc569('0x3d')]['id']}},_0x1d0536={};_0x1d0536['model']=_[_0xc569('0x3e')](db[_0xc569('0x26')][_0xc569('0x3f')]);_0x1d0536[_0xc569('0x2a')]=_['keys'](_0x42d34f['query']);_0x1d0536[_0xc569('0x2b')]=_['intersection'](_0x1d0536[_0xc569('0x28')],_0x1d0536[_0xc569('0x2a')]);_0x558899['attributes']=_[_0xc569('0x2c')](_0x1d0536[_0xc569('0x28')],qs[_0xc569('0x2e')](_0x42d34f[_0xc569('0x2a')]['fields']));_0x558899[_0xc569('0x2d')]=_0x558899[_0xc569('0x2d')][_0xc569('0x2f')]?_0x558899[_0xc569('0x2d')]:_0x1d0536[_0xc569('0x28')];if(_0x42d34f[_0xc569('0x2a')][_0xc569('0x39')]){_0x558899[_0xc569('0x40')]=[{'all':!![]}];}_0x558899=_[_0xc569('0x36')]({},_0x558899,_0x42d34f['options']);return db[_0xc569('0x26')][_0xc569('0x41')](_0x558899)[_0xc569('0x20')](handleEntityNotFound(_0x3b1ead,null))[_0xc569('0x20')](respondWithResult(_0x3b1ead,null))[_0xc569('0x42')](handleError(_0x3b1ead,null));};exports['create']=function(_0x32c5bd,_0x68b48c){return db[_0xc569('0x26')][_0xc569('0x43')](_0x32c5bd['body'],{})[_0xc569('0x20')](respondWithResult(_0x68b48c,0xc9))[_0xc569('0x42')](handleError(_0x68b48c,null));};exports[_0xc569('0x1f')]=function(_0x12d62b,_0x518c2a){if(_0x12d62b[_0xc569('0x44')]['id']){delete _0x12d62b[_0xc569('0x44')]['id'];}return db[_0xc569('0x26')][_0xc569('0x41')]({'where':{'id':_0x12d62b[_0xc569('0x3d')]['id']}})['then'](handleEntityNotFound(_0x518c2a,null))['then'](saveUpdates(_0x12d62b[_0xc569('0x44')],null))['then'](respondWithResult(_0x518c2a,null))[_0xc569('0x42')](handleError(_0x518c2a,null));};exports['destroy']=function(_0x1cb03d,_0x40bf1d){return db[_0xc569('0x26')][_0xc569('0x41')]({'where':{'id':_0x1cb03d[_0xc569('0x3d')]['id']}})[_0xc569('0x20')](handleEntityNotFound(_0x40bf1d,null))['then'](removeEntity(_0x40bf1d,null))['catch'](handleError(_0x40bf1d,null));};exports[_0xc569('0x45')]=function(_0x5e2b5f,_0x19a008){return db['MailSubstatus'][_0xc569('0x45')]()[_0xc569('0x20')](respondWithResult(_0x19a008,null))[_0xc569('0x42')](handleError(_0x19a008,null));};
\ No newline at end of file
+var _0x29a7=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','update','then','destroy','error','stack','name','send','map','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','options','MailSubstatus','findAll','rows','show','params','rawAttributes','keys','include','catch','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service'];(function(_0x3695df,_0x22c52b){var _0x4d0f16=function(_0x3f15dd){while(--_0x3f15dd){_0x3695df['push'](_0x3695df['shift']());}};_0x4d0f16(++_0x22c52b);}(_0x29a7,0x1af));var _0x729a=function(_0x239e78,_0x2e5e3){_0x239e78=_0x239e78-0x0;var _0x46d5e4=_0x29a7[_0x239e78];return _0x46d5e4;};'use strict';var emlformat=require(_0x729a('0x0'));var rimraf=require(_0x729a('0x1'));var zipdir=require(_0x729a('0x2'));var jsonpatch=require(_0x729a('0x3'));var rp=require(_0x729a('0x4'));var moment=require(_0x729a('0x5'));var BPromise=require(_0x729a('0x6'));var Mustache=require(_0x729a('0x7'));var util=require(_0x729a('0x8'));var path=require('path');var sox=require('sox');var csv=require(_0x729a('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x729a('0xa'));var _=require(_0x729a('0xb'));var squel=require(_0x729a('0xc'));var crypto=require(_0x729a('0xd'));var jsforce=require(_0x729a('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x729a('0x9'));var querystring=require(_0x729a('0xf'));var Papa=require(_0x729a('0x10'));var Redis=require(_0x729a('0x11'));var authService=require(_0x729a('0x12'));var qs=require(_0x729a('0x13'));var as=require(_0x729a('0x14'));var hardwareService=require(_0x729a('0x15'));var logger=require(_0x729a('0x16'))('api');var utils=require(_0x729a('0x17'));var config=require(_0x729a('0x18'));var licenseUtil=require(_0x729a('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xa2a0d4,_0x1f96d0){_0x1f96d0=_0x1f96d0||0xcc;return function(_0x41958c){if(_0x41958c){return _0xa2a0d4[_0x729a('0x1a')](_0x1f96d0);}return _0xa2a0d4['status'](_0x1f96d0)['end']();};}function respondWithResult(_0x259442,_0x511cc9){_0x511cc9=_0x511cc9||0xc8;return function(_0x3aa2a7){if(_0x3aa2a7){return _0x259442[_0x729a('0x1b')](_0x511cc9)[_0x729a('0x1c')](_0x3aa2a7);}};}function respondWithFilteredResult(_0x531c42,_0x237b13){return function(_0x55e735){if(_0x55e735){var _0x3783c2=typeof _0x237b13['offset']===_0x729a('0x1d')&&typeof _0x237b13[_0x729a('0x1e')]===_0x729a('0x1d');var _0x121a82=_0x55e735[_0x729a('0x1f')];var _0x5de22e=_0x3783c2?0x0:_0x237b13[_0x729a('0x20')];var _0x369c97=_0x3783c2?_0x55e735[_0x729a('0x1f')]:_0x237b13[_0x729a('0x20')]+_0x237b13[_0x729a('0x1e')];var _0x229622;if(_0x369c97>=_0x121a82){_0x369c97=_0x121a82;_0x229622=0xc8;}else{_0x229622=0xce;}_0x531c42[_0x729a('0x1b')](_0x229622);return _0x531c42[_0x729a('0x21')](_0x729a('0x22'),_0x5de22e+'-'+_0x369c97+'/'+_0x121a82)[_0x729a('0x1c')](_0x55e735);}return null;};}function patchUpdates(_0x372727){return function(_0x16fb93){try{jsonpatch[_0x729a('0x23')](_0x16fb93,_0x372727,!![]);}catch(_0x2262b1){return BPromise[_0x729a('0x24')](_0x2262b1);}return _0x16fb93['save']();};}function saveUpdates(_0x5e09cc,_0x3a28db){return function(_0x248294){if(_0x248294){return _0x248294[_0x729a('0x25')](_0x5e09cc)[_0x729a('0x26')](function(_0x137241){return _0x137241;});}return null;};}function removeEntity(_0x145b9a,_0x46a2c2){return function(_0xc8a8d1){if(_0xc8a8d1){return _0xc8a8d1[_0x729a('0x27')]()['then'](function(){_0x145b9a['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x373cb0,_0x20407c){return function(_0x5ea2a6){if(!_0x5ea2a6){_0x373cb0[_0x729a('0x1a')](0x194);}return _0x5ea2a6;};}function handleError(_0x5889e4,_0x41ceb0){_0x41ceb0=_0x41ceb0||0x1f4;return function(_0x2bdd91){logger[_0x729a('0x28')](_0x2bdd91[_0x729a('0x29')]);if(_0x2bdd91['name']){delete _0x2bdd91[_0x729a('0x2a')];}_0x5889e4[_0x729a('0x1b')](_0x41ceb0)[_0x729a('0x2b')](_0x2bdd91);};}exports['index']=function(_0x6a1e4d,_0x46a53f){var _0x4bf151={},_0x5dd096={},_0xa240d2={'count':0x0,'rows':[]};var _0x3b10cc=_[_0x729a('0x2c')](db['MailSubstatus']['rawAttributes'],function(_0x35d82c){return{'name':_0x35d82c[_0x729a('0x2d')],'type':_0x35d82c[_0x729a('0x2e')][_0x729a('0x2f')]};});_0x5dd096[_0x729a('0x30')]=_[_0x729a('0x2c')](_0x3b10cc,_0x729a('0x2a'));_0x5dd096[_0x729a('0x31')]=_['keys'](_0x6a1e4d[_0x729a('0x31')]);_0x5dd096[_0x729a('0x32')]=_[_0x729a('0x33')](_0x5dd096[_0x729a('0x30')],_0x5dd096[_0x729a('0x31')]);_0x4bf151[_0x729a('0x34')]=_[_0x729a('0x33')](_0x5dd096[_0x729a('0x30')],qs[_0x729a('0x35')](_0x6a1e4d[_0x729a('0x31')][_0x729a('0x35')]));_0x4bf151[_0x729a('0x34')]=_0x4bf151[_0x729a('0x34')][_0x729a('0x36')]?_0x4bf151['attributes']:_0x5dd096[_0x729a('0x30')];if(!_0x6a1e4d['query']['hasOwnProperty'](_0x729a('0x37'))){_0x4bf151['limit']=qs[_0x729a('0x1e')](_0x6a1e4d[_0x729a('0x31')][_0x729a('0x1e')]);_0x4bf151[_0x729a('0x20')]=qs[_0x729a('0x20')](_0x6a1e4d[_0x729a('0x31')]['offset']);}_0x4bf151[_0x729a('0x38')]=qs[_0x729a('0x39')](_0x6a1e4d[_0x729a('0x31')][_0x729a('0x39')]);_0x4bf151[_0x729a('0x3a')]=qs[_0x729a('0x32')](_[_0x729a('0x3b')](_0x6a1e4d[_0x729a('0x31')],_0x5dd096['filters']),_0x3b10cc);if(_0x6a1e4d[_0x729a('0x31')]['filter']){_0x4bf151['where']=_['merge'](_0x4bf151[_0x729a('0x3a')],{'$or':_[_0x729a('0x2c')](_0x3b10cc,function(_0xfa2b43){if(_0xfa2b43[_0x729a('0x2e')]!=='VIRTUAL'){var _0xc27947={};_0xc27947[_0xfa2b43[_0x729a('0x2a')]]={'$like':'%'+_0x6a1e4d[_0x729a('0x31')][_0x729a('0x3c')]+'%'};return _0xc27947;}})});}_0x4bf151=_[_0x729a('0x3d')]({},_0x4bf151,_0x6a1e4d[_0x729a('0x3e')]);var _0xb6dd16={'where':_0x4bf151[_0x729a('0x3a')]};return db[_0x729a('0x3f')][_0x729a('0x1f')](_0xb6dd16)[_0x729a('0x26')](function(_0x20e767){_0xa240d2[_0x729a('0x1f')]=_0x20e767;if(_0x6a1e4d['query']['includeAll']){_0x4bf151['include']=[{'all':!![]}];}return db[_0x729a('0x3f')][_0x729a('0x40')](_0x4bf151);})['then'](function(_0xa18d8d){_0xa240d2[_0x729a('0x41')]=_0xa18d8d;return _0xa240d2;})['then'](respondWithFilteredResult(_0x46a53f,_0x4bf151))['catch'](handleError(_0x46a53f,null));};exports[_0x729a('0x42')]=function(_0x2d4b4e,_0x1f1188){var _0x108b17={'raw':!![],'where':{'id':_0x2d4b4e[_0x729a('0x43')]['id']}},_0x2066af={};_0x2066af[_0x729a('0x30')]=_['keys'](db['MailSubstatus'][_0x729a('0x44')]);_0x2066af[_0x729a('0x31')]=_[_0x729a('0x45')](_0x2d4b4e[_0x729a('0x31')]);_0x2066af[_0x729a('0x32')]=_[_0x729a('0x33')](_0x2066af[_0x729a('0x30')],_0x2066af[_0x729a('0x31')]);_0x108b17[_0x729a('0x34')]=_[_0x729a('0x33')](_0x2066af['model'],qs['fields'](_0x2d4b4e[_0x729a('0x31')][_0x729a('0x35')]));_0x108b17['attributes']=_0x108b17[_0x729a('0x34')]['length']?_0x108b17[_0x729a('0x34')]:_0x2066af[_0x729a('0x30')];if(_0x2d4b4e['query']['includeAll']){_0x108b17[_0x729a('0x46')]=[{'all':!![]}];}_0x108b17=_['merge']({},_0x108b17,_0x2d4b4e[_0x729a('0x3e')]);return db[_0x729a('0x3f')]['find'](_0x108b17)[_0x729a('0x26')](handleEntityNotFound(_0x1f1188,null))[_0x729a('0x26')](respondWithResult(_0x1f1188,null))[_0x729a('0x47')](handleError(_0x1f1188,null));};exports[_0x729a('0x48')]=function(_0x46a926,_0x1b9b26){return db[_0x729a('0x3f')][_0x729a('0x48')](_0x46a926[_0x729a('0x49')],{})[_0x729a('0x26')](respondWithResult(_0x1b9b26,0xc9))[_0x729a('0x47')](handleError(_0x1b9b26,null));};exports[_0x729a('0x25')]=function(_0x4c9d09,_0x4ada1d){if(_0x4c9d09[_0x729a('0x49')]['id']){delete _0x4c9d09[_0x729a('0x49')]['id'];}return db[_0x729a('0x3f')]['find']({'where':{'id':_0x4c9d09['params']['id']}})[_0x729a('0x26')](handleEntityNotFound(_0x4ada1d,null))[_0x729a('0x26')](saveUpdates(_0x4c9d09[_0x729a('0x49')],null))['then'](respondWithResult(_0x4ada1d,null))['catch'](handleError(_0x4ada1d,null));};exports[_0x729a('0x27')]=function(_0x677646,_0x5d3c58){return db[_0x729a('0x3f')]['find']({'where':{'id':_0x677646[_0x729a('0x43')]['id']}})[_0x729a('0x26')](handleEntityNotFound(_0x5d3c58,null))[_0x729a('0x26')](removeEntity(_0x5d3c58,null))[_0x729a('0x47')](handleError(_0x5d3c58,null));};exports[_0x729a('0x4a')]=function(_0x8702ed,_0x34ad6a){return db['MailSubstatus'][_0x729a('0x4a')]()['then'](respondWithResult(_0x34ad6a,null))[_0x729a('0x47')](handleError(_0x34ad6a,null));};
\ No newline at end of file