Built motion from commit da24aabd.|2.6.20
[motion2.git] / server / api / mailServerOut / mailServerOut.controller.js
index 11d4f2f..70dfd3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4c2=['api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','count','offset','limit','set','Content-Range','reject','update','then','stack','name','send','index','map','MailServerOut','rawAttributes','fieldName','type','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','show','params','options','find','catch','create','body','destroy','eml-format','rimraf','fast-json-patch','request-promise','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x7033ad,_0x4f191a){var _0x4117fb=function(_0x537976){while(--_0x537976){_0x7033ad['push'](_0x7033ad['shift']());}};_0x4117fb(++_0x4f191a);}(_0xc4c2,0x155));var _0x2c4c=function(_0xf71120,_0x25b7f9){_0xf71120=_0xf71120-0x0;var _0xbe2fd3=_0xc4c2[_0xf71120];return _0xbe2fd3;};'use strict';var emlformat=require(_0x2c4c('0x0'));var rimraf=require(_0x2c4c('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x2c4c('0x2'));var rp=require(_0x2c4c('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0x2c4c('0x4'));var sox=require(_0x2c4c('0x5'));var csv=require(_0x2c4c('0x6'));var ejs=require(_0x2c4c('0x7'));var fs=require('fs');var fs_extra=require(_0x2c4c('0x8'));var _=require(_0x2c4c('0x9'));var squel=require(_0x2c4c('0xa'));var crypto=require(_0x2c4c('0xb'));var jsforce=require(_0x2c4c('0xc'));var deskjs=require(_0x2c4c('0xd'));var toCsv=require(_0x2c4c('0x6'));var querystring=require('querystring');var Papa=require(_0x2c4c('0xe'));var Redis=require('ioredis');var authService=require(_0x2c4c('0xf'));var qs=require(_0x2c4c('0x10'));var as=require(_0x2c4c('0x11'));var hardwareService=require(_0x2c4c('0x12'));var logger=require('../../config/logger')(_0x2c4c('0x13'));var utils=require('../../config/utils');var config=require(_0x2c4c('0x14'));var licenseUtil=require(_0x2c4c('0x15'));var db=require(_0x2c4c('0x16'))['db'];function respondWithStatusCode(_0x3fe0ea,_0x56bce7){_0x56bce7=_0x56bce7||0xcc;return function(_0x3374b1){if(_0x3374b1){return _0x3fe0ea[_0x2c4c('0x17')](_0x56bce7);}return _0x3fe0ea[_0x2c4c('0x18')](_0x56bce7)[_0x2c4c('0x19')]();};}function respondWithResult(_0x596e6a,_0x1aaf1e){_0x1aaf1e=_0x1aaf1e||0xc8;return function(_0x4a1568){if(_0x4a1568){return _0x596e6a['status'](_0x1aaf1e)[_0x2c4c('0x1a')](_0x4a1568);}};}function respondWithFilteredResult(_0x15d252,_0x35384c){return function(_0x2588e5){if(_0x2588e5){var _0xbbd57d=_0x2588e5[_0x2c4c('0x1b')],_0x46f8d6=_0x35384c[_0x2c4c('0x1c')],_0x34b9b2=_0x35384c['offset']+_0x35384c[_0x2c4c('0x1d')],_0x431f32;if(_0x34b9b2>=_0xbbd57d){_0x34b9b2=_0xbbd57d;_0x431f32=0xc8;}else{_0x431f32=0xce;}_0x15d252[_0x2c4c('0x18')](_0x431f32);return _0x15d252[_0x2c4c('0x1e')](_0x2c4c('0x1f'),_0x46f8d6+'-'+_0x34b9b2+'/'+_0xbbd57d)[_0x2c4c('0x1a')](_0x2588e5);}return null;};}function patchUpdates(_0x301d19){return function(_0x1c58fb){try{jsonpatch['apply'](_0x1c58fb,_0x301d19,!![]);}catch(_0x56c9de){return BPromise[_0x2c4c('0x20')](_0x56c9de);}return _0x1c58fb['save']();};}function saveUpdates(_0x24f993,_0x5e37b2){return function(_0x5c6eae){if(_0x5c6eae){return _0x5c6eae[_0x2c4c('0x21')](_0x24f993)[_0x2c4c('0x22')](function(_0x4c1e53){return _0x4c1e53;});}return null;};}function removeEntity(_0x49cf97,_0x55c507){return function(_0xb4dde7){if(_0xb4dde7){return _0xb4dde7['destroy']()[_0x2c4c('0x22')](function(){_0x49cf97[_0x2c4c('0x18')](0xcc)[_0x2c4c('0x19')]();});}};}function handleEntityNotFound(_0x5d8a6a,_0x27b639){return function(_0x38c7eb){if(!_0x38c7eb){_0x5d8a6a[_0x2c4c('0x17')](0x194);}return _0x38c7eb;};}function handleError(_0x217bcd,_0x46cb19){_0x46cb19=_0x46cb19||0x1f4;return function(_0x5a592e){logger['error'](_0x5a592e[_0x2c4c('0x23')]);if(_0x5a592e[_0x2c4c('0x24')]){delete _0x5a592e['name'];}_0x217bcd['status'](_0x46cb19)[_0x2c4c('0x25')](_0x5a592e);};}exports[_0x2c4c('0x26')]=function(_0x590039,_0x4e1de7){var _0x1c6645={},_0x3ce633={},_0x259925={'count':0x0,'rows':[]};var _0x20f6b8=_[_0x2c4c('0x27')](db[_0x2c4c('0x28')][_0x2c4c('0x29')],function(_0x50005c){return{'name':_0x50005c[_0x2c4c('0x2a')],'type':_0x50005c[_0x2c4c('0x2b')]['key']};});_0x3ce633[_0x2c4c('0x2c')]=_['map'](_0x20f6b8,_0x2c4c('0x24'));_0x3ce633[_0x2c4c('0x2d')]=_[_0x2c4c('0x2e')](_0x590039[_0x2c4c('0x2d')]);_0x3ce633[_0x2c4c('0x2f')]=_[_0x2c4c('0x30')](_0x3ce633[_0x2c4c('0x2c')],_0x3ce633[_0x2c4c('0x2d')]);_0x1c6645['attributes']=_[_0x2c4c('0x30')](_0x3ce633[_0x2c4c('0x2c')],qs[_0x2c4c('0x31')](_0x590039[_0x2c4c('0x2d')]['fields']));_0x1c6645[_0x2c4c('0x32')]=_0x1c6645['attributes'][_0x2c4c('0x33')]?_0x1c6645[_0x2c4c('0x32')]:_0x3ce633[_0x2c4c('0x2c')];if(!_0x590039[_0x2c4c('0x2d')][_0x2c4c('0x34')](_0x2c4c('0x35'))){_0x1c6645[_0x2c4c('0x1d')]=qs['limit'](_0x590039[_0x2c4c('0x2d')][_0x2c4c('0x1d')]);_0x1c6645[_0x2c4c('0x1c')]=qs[_0x2c4c('0x1c')](_0x590039['query']['offset']);}_0x1c6645[_0x2c4c('0x36')]=qs['sort'](_0x590039[_0x2c4c('0x2d')][_0x2c4c('0x37')]);_0x1c6645[_0x2c4c('0x38')]=qs[_0x2c4c('0x2f')](_[_0x2c4c('0x39')](_0x590039[_0x2c4c('0x2d')],_0x3ce633[_0x2c4c('0x2f')]),_0x20f6b8);if(_0x590039[_0x2c4c('0x2d')][_0x2c4c('0x3a')]){_0x1c6645['where']=_[_0x2c4c('0x3b')](_0x1c6645[_0x2c4c('0x38')],{'$or':_['map'](_0x20f6b8,function(_0x2189f0){if(_0x2189f0[_0x2c4c('0x2b')]!==_0x2c4c('0x3c')){var _0x48d462={};_0x48d462[_0x2189f0[_0x2c4c('0x24')]]={'$like':'%'+_0x590039[_0x2c4c('0x2d')][_0x2c4c('0x3a')]+'%'};return _0x48d462;}})});}_0x1c6645=_[_0x2c4c('0x3b')]({},_0x1c6645,_0x590039['options']);var _0x255a0d={'where':_0x1c6645[_0x2c4c('0x38')]};return db['MailServerOut'][_0x2c4c('0x1b')](_0x255a0d)[_0x2c4c('0x22')](function(_0xd3a5a6){_0x259925[_0x2c4c('0x1b')]=_0xd3a5a6;if(_0x590039[_0x2c4c('0x2d')][_0x2c4c('0x3d')]){_0x1c6645[_0x2c4c('0x3e')]=[{'all':!![]}];}return db[_0x2c4c('0x28')][_0x2c4c('0x3f')](_0x1c6645);})[_0x2c4c('0x22')](function(_0x76fb85){_0x259925['rows']=_0x76fb85;return _0x259925;})[_0x2c4c('0x22')](respondWithFilteredResult(_0x4e1de7,_0x1c6645))['catch'](handleError(_0x4e1de7,null));};exports[_0x2c4c('0x40')]=function(_0x528120,_0x33ae5c){var _0x350ef3={'raw':!![],'where':{'id':_0x528120[_0x2c4c('0x41')]['id']}},_0x110a07={};_0x110a07['model']=_[_0x2c4c('0x2e')](db[_0x2c4c('0x28')][_0x2c4c('0x29')]);_0x110a07[_0x2c4c('0x2d')]=_[_0x2c4c('0x2e')](_0x528120['query']);_0x110a07[_0x2c4c('0x2f')]=_['intersection'](_0x110a07[_0x2c4c('0x2c')],_0x110a07['query']);_0x350ef3[_0x2c4c('0x32')]=_[_0x2c4c('0x30')](_0x110a07['model'],qs[_0x2c4c('0x31')](_0x528120[_0x2c4c('0x2d')][_0x2c4c('0x31')]));_0x350ef3[_0x2c4c('0x32')]=_0x350ef3[_0x2c4c('0x32')]['length']?_0x350ef3['attributes']:_0x110a07[_0x2c4c('0x2c')];if(_0x528120['query'][_0x2c4c('0x3d')]){_0x350ef3[_0x2c4c('0x3e')]=[{'all':!![]}];}_0x350ef3=_[_0x2c4c('0x3b')]({},_0x350ef3,_0x528120[_0x2c4c('0x42')]);return db['MailServerOut'][_0x2c4c('0x43')](_0x350ef3)[_0x2c4c('0x22')](handleEntityNotFound(_0x33ae5c,null))[_0x2c4c('0x22')](respondWithResult(_0x33ae5c,null))[_0x2c4c('0x44')](handleError(_0x33ae5c,null));};exports[_0x2c4c('0x45')]=function(_0x2108bf,_0x5321c3){return db[_0x2c4c('0x28')][_0x2c4c('0x45')](_0x2108bf['body'],{})[_0x2c4c('0x22')](respondWithResult(_0x5321c3,0xc9))['catch'](handleError(_0x5321c3,null));};exports['update']=function(_0xf56dab,_0x659658){if(_0xf56dab['body']['id']){delete _0xf56dab[_0x2c4c('0x46')]['id'];}return db['MailServerOut']['find']({'where':{'id':_0xf56dab['params']['id']}})[_0x2c4c('0x22')](handleEntityNotFound(_0x659658,null))['then'](saveUpdates(_0xf56dab['body'],null))[_0x2c4c('0x22')](respondWithResult(_0x659658,null))[_0x2c4c('0x44')](handleError(_0x659658,null));};exports[_0x2c4c('0x47')]=function(_0x114cea,_0x21bb58){return db['MailServerOut'][_0x2c4c('0x43')]({'where':{'id':_0x114cea[_0x2c4c('0x41')]['id']}})[_0x2c4c('0x22')](handleEntityNotFound(_0x21bb58,null))[_0x2c4c('0x22')](removeEntity(_0x21bb58,null))[_0x2c4c('0x44')](handleError(_0x21bb58,null));};
\ No newline at end of file
+var _0xcedd=['moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','name','send','index','map','rawAttributes','type','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','merge','VIRTUAL','options','MailServerOut','includeAll','include','findAll','show','find','catch','body','params','destroy','rimraf','zip-dir','fast-json-patch','request-promise'];(function(_0x4cf98e,_0xba4b79){var _0x1623ac=function(_0x459bc0){while(--_0x459bc0){_0x4cf98e['push'](_0x4cf98e['shift']());}};_0x1623ac(++_0xba4b79);}(_0xcedd,0x1be));var _0xdced=function(_0x1034ee,_0x12998c){_0x1034ee=_0x1034ee-0x0;var _0x2922af=_0xcedd[_0x1034ee];return _0x2922af;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xdced('0x0'));var zipdir=require(_0xdced('0x1'));var jsonpatch=require(_0xdced('0x2'));var rp=require(_0xdced('0x3'));var moment=require(_0xdced('0x4'));var BPromise=require(_0xdced('0x5'));var Mustache=require(_0xdced('0x6'));var util=require('util');var path=require(_0xdced('0x7'));var sox=require(_0xdced('0x8'));var csv=require(_0xdced('0x9'));var ejs=require(_0xdced('0xa'));var fs=require('fs');var fs_extra=require(_0xdced('0xb'));var _=require(_0xdced('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xdced('0xd'));var deskjs=require(_0xdced('0xe'));var toCsv=require(_0xdced('0x9'));var querystring=require(_0xdced('0xf'));var Papa=require(_0xdced('0x10'));var Redis=require(_0xdced('0x11'));var authService=require(_0xdced('0x12'));var qs=require(_0xdced('0x13'));var as=require(_0xdced('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xdced('0x15'))('api');var utils=require(_0xdced('0x16'));var config=require(_0xdced('0x17'));var licenseUtil=require(_0xdced('0x18'));var db=require(_0xdced('0x19'))['db'];function respondWithStatusCode(_0x2a6d89,_0x5dd82d){_0x5dd82d=_0x5dd82d||0xcc;return function(_0x4729f2){if(_0x4729f2){return _0x2a6d89[_0xdced('0x1a')](_0x5dd82d);}return _0x2a6d89[_0xdced('0x1b')](_0x5dd82d)[_0xdced('0x1c')]();};}function respondWithResult(_0x42f80a,_0x3e8a36){_0x3e8a36=_0x3e8a36||0xc8;return function(_0x272228){if(_0x272228){return _0x42f80a[_0xdced('0x1b')](_0x3e8a36)[_0xdced('0x1d')](_0x272228);}};}function respondWithFilteredResult(_0x41879d,_0x5196df){return function(_0x5b5f17){if(_0x5b5f17){var _0x4fb227=typeof _0x5196df[_0xdced('0x1e')]===_0xdced('0x1f')&&typeof _0x5196df[_0xdced('0x20')]==='undefined';var _0x5af208=_0x5b5f17[_0xdced('0x21')];var _0x3ba94d=_0x4fb227?0x0:_0x5196df[_0xdced('0x1e')];var _0x26505f=_0x4fb227?_0x5b5f17[_0xdced('0x21')]:_0x5196df[_0xdced('0x1e')]+_0x5196df['limit'];var _0x39b050;if(_0x26505f>=_0x5af208){_0x26505f=_0x5af208;_0x39b050=0xc8;}else{_0x39b050=0xce;}_0x41879d[_0xdced('0x1b')](_0x39b050);return _0x41879d[_0xdced('0x22')](_0xdced('0x23'),_0x3ba94d+'-'+_0x26505f+'/'+_0x5af208)[_0xdced('0x1d')](_0x5b5f17);}return null;};}function patchUpdates(_0x23a8d7){return function(_0x4ba2dd){try{jsonpatch[_0xdced('0x24')](_0x4ba2dd,_0x23a8d7,!![]);}catch(_0x18422d){return BPromise[_0xdced('0x25')](_0x18422d);}return _0x4ba2dd[_0xdced('0x26')]();};}function saveUpdates(_0x3eab57,_0x593c07){return function(_0x19e7c8){if(_0x19e7c8){return _0x19e7c8[_0xdced('0x27')](_0x3eab57)[_0xdced('0x28')](function(_0x15412c){return _0x15412c;});}return null;};}function removeEntity(_0x384ca0,_0x53d075){return function(_0x4ff5ba){if(_0x4ff5ba){return _0x4ff5ba['destroy']()[_0xdced('0x28')](function(){_0x384ca0[_0xdced('0x1b')](0xcc)[_0xdced('0x1c')]();});}};}function handleEntityNotFound(_0x1c8a7f,_0x42833f){return function(_0xe342b7){if(!_0xe342b7){_0x1c8a7f[_0xdced('0x1a')](0x194);}return _0xe342b7;};}function handleError(_0x52e1d5,_0x44d77c){_0x44d77c=_0x44d77c||0x1f4;return function(_0x2a7b7f){logger['error'](_0x2a7b7f['stack']);if(_0x2a7b7f[_0xdced('0x29')]){delete _0x2a7b7f[_0xdced('0x29')];}_0x52e1d5[_0xdced('0x1b')](_0x44d77c)[_0xdced('0x2a')](_0x2a7b7f);};}exports[_0xdced('0x2b')]=function(_0x42d9a9,_0xd5bcca){var _0x398c38={},_0x475b14={},_0x17cef2={'count':0x0,'rows':[]};var _0x5e5e97=_[_0xdced('0x2c')](db['MailServerOut'][_0xdced('0x2d')],function(_0x2fdb4a){return{'name':_0x2fdb4a['fieldName'],'type':_0x2fdb4a[_0xdced('0x2e')]['key']};});_0x475b14[_0xdced('0x2f')]=_['map'](_0x5e5e97,_0xdced('0x29'));_0x475b14[_0xdced('0x30')]=_[_0xdced('0x31')](_0x42d9a9[_0xdced('0x30')]);_0x475b14['filters']=_[_0xdced('0x32')](_0x475b14[_0xdced('0x2f')],_0x475b14[_0xdced('0x30')]);_0x398c38[_0xdced('0x33')]=_['intersection'](_0x475b14[_0xdced('0x2f')],qs[_0xdced('0x34')](_0x42d9a9['query'][_0xdced('0x34')]));_0x398c38[_0xdced('0x33')]=_0x398c38[_0xdced('0x33')][_0xdced('0x35')]?_0x398c38['attributes']:_0x475b14[_0xdced('0x2f')];if(!_0x42d9a9[_0xdced('0x30')][_0xdced('0x36')](_0xdced('0x37'))){_0x398c38[_0xdced('0x20')]=qs['limit'](_0x42d9a9[_0xdced('0x30')][_0xdced('0x20')]);_0x398c38[_0xdced('0x1e')]=qs[_0xdced('0x1e')](_0x42d9a9[_0xdced('0x30')][_0xdced('0x1e')]);}_0x398c38[_0xdced('0x38')]=qs[_0xdced('0x39')](_0x42d9a9[_0xdced('0x30')][_0xdced('0x39')]);_0x398c38['where']=qs[_0xdced('0x3a')](_[_0xdced('0x3b')](_0x42d9a9['query'],_0x475b14['filters']),_0x5e5e97);if(_0x42d9a9['query'][_0xdced('0x3c')]){_0x398c38[_0xdced('0x3d')]=_[_0xdced('0x3e')](_0x398c38[_0xdced('0x3d')],{'$or':_['map'](_0x5e5e97,function(_0x27670f){if(_0x27670f[_0xdced('0x2e')]!==_0xdced('0x3f')){var _0x147649={};_0x147649[_0x27670f[_0xdced('0x29')]]={'$like':'%'+_0x42d9a9[_0xdced('0x30')][_0xdced('0x3c')]+'%'};return _0x147649;}})});}_0x398c38=_['merge']({},_0x398c38,_0x42d9a9[_0xdced('0x40')]);var _0x4ce13f={'where':_0x398c38[_0xdced('0x3d')]};return db[_0xdced('0x41')][_0xdced('0x21')](_0x4ce13f)[_0xdced('0x28')](function(_0x4d425e){_0x17cef2[_0xdced('0x21')]=_0x4d425e;if(_0x42d9a9[_0xdced('0x30')][_0xdced('0x42')]){_0x398c38[_0xdced('0x43')]=[{'all':!![]}];}return db['MailServerOut'][_0xdced('0x44')](_0x398c38);})[_0xdced('0x28')](function(_0x3c351c){_0x17cef2['rows']=_0x3c351c;return _0x17cef2;})[_0xdced('0x28')](respondWithFilteredResult(_0xd5bcca,_0x398c38))['catch'](handleError(_0xd5bcca,null));};exports[_0xdced('0x45')]=function(_0x4dc762,_0x56d1fd){var _0x135bfe={'raw':!![],'where':{'id':_0x4dc762['params']['id']}},_0x24e647={};_0x24e647['model']=_[_0xdced('0x31')](db[_0xdced('0x41')][_0xdced('0x2d')]);_0x24e647[_0xdced('0x30')]=_[_0xdced('0x31')](_0x4dc762[_0xdced('0x30')]);_0x24e647[_0xdced('0x3a')]=_[_0xdced('0x32')](_0x24e647[_0xdced('0x2f')],_0x24e647[_0xdced('0x30')]);_0x135bfe['attributes']=_[_0xdced('0x32')](_0x24e647[_0xdced('0x2f')],qs[_0xdced('0x34')](_0x4dc762[_0xdced('0x30')][_0xdced('0x34')]));_0x135bfe[_0xdced('0x33')]=_0x135bfe[_0xdced('0x33')][_0xdced('0x35')]?_0x135bfe[_0xdced('0x33')]:_0x24e647['model'];if(_0x4dc762[_0xdced('0x30')]['includeAll']){_0x135bfe[_0xdced('0x43')]=[{'all':!![]}];}_0x135bfe=_[_0xdced('0x3e')]({},_0x135bfe,_0x4dc762[_0xdced('0x40')]);return db[_0xdced('0x41')][_0xdced('0x46')](_0x135bfe)['then'](handleEntityNotFound(_0x56d1fd,null))[_0xdced('0x28')](respondWithResult(_0x56d1fd,null))[_0xdced('0x47')](handleError(_0x56d1fd,null));};exports['create']=function(_0x2b5257,_0x1dc43f){return db[_0xdced('0x41')]['create'](_0x2b5257['body'],{})[_0xdced('0x28')](respondWithResult(_0x1dc43f,0xc9))[_0xdced('0x47')](handleError(_0x1dc43f,null));};exports[_0xdced('0x27')]=function(_0x1aa9ea,_0x3d4e2e){if(_0x1aa9ea['body']['id']){delete _0x1aa9ea[_0xdced('0x48')]['id'];}return db[_0xdced('0x41')]['find']({'where':{'id':_0x1aa9ea[_0xdced('0x49')]['id']}})[_0xdced('0x28')](handleEntityNotFound(_0x3d4e2e,null))['then'](saveUpdates(_0x1aa9ea[_0xdced('0x48')],null))[_0xdced('0x28')](respondWithResult(_0x3d4e2e,null))[_0xdced('0x47')](handleError(_0x3d4e2e,null));};exports[_0xdced('0x4a')]=function(_0xe45a46,_0x17acf9){return db['MailServerOut'][_0xdced('0x46')]({'where':{'id':_0xe45a46['params']['id']}})[_0xdced('0x28')](handleEntityNotFound(_0x17acf9,null))[_0xdced('0x28')](removeEntity(_0x17acf9,null))['catch'](handleError(_0x17acf9,null));};
\ No newline at end of file