Built motion from commit 1fa89557.|2.6.10
[motion2.git] / server / api / intFreshsalesField / intFreshsalesField.controller.js
index 469cd1b..d1612a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd4e=['../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','apply','reject','save','update','destroy','then','error','stack','name','send','index','map','FreshsalesField','rawAttributes','type','key','model','query','keys','filters','attributes','fields','length','nolimit','order','sort','where','filter','VIRTUAL','merge','options','count','includeAll','include','rows','catch','show','params','intersection','find','create','body','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils'];(function(_0x110c3d,_0x12ee06){var _0x226d67=function(_0x1fb6e1){while(--_0x1fb6e1){_0x110c3d['push'](_0x110c3d['shift']());}};_0x226d67(++_0x12ee06);}(_0xfd4e,0x165));var _0xefd4=function(_0xecda73,_0x47027c){_0xecda73=_0xecda73-0x0;var _0x4dff0d=_0xfd4e[_0xecda73];return _0x4dff0d;};'use strict';var emlformat=require(_0xefd4('0x0'));var rimraf=require(_0xefd4('0x1'));var zipdir=require(_0xefd4('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xefd4('0x3'));var moment=require(_0xefd4('0x4'));var BPromise=require(_0xefd4('0x5'));var Mustache=require(_0xefd4('0x6'));var util=require(_0xefd4('0x7'));var path=require(_0xefd4('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xefd4('0x9'));var fs=require('fs');var fs_extra=require(_0xefd4('0xa'));var _=require('lodash');var squel=require(_0xefd4('0xb'));var crypto=require(_0xefd4('0xc'));var jsforce=require(_0xefd4('0xd'));var deskjs=require(_0xefd4('0xe'));var toCsv=require(_0xefd4('0xf'));var querystring=require(_0xefd4('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xefd4('0x11'));var qs=require(_0xefd4('0x12'));var as=require(_0xefd4('0x13'));var hardwareService=require(_0xefd4('0x14'));var logger=require(_0xefd4('0x15'))('api');var utils=require(_0xefd4('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xefd4('0x17'));var db=require(_0xefd4('0x18'))['db'];function respondWithStatusCode(_0x7ee7dd,_0x5c2b8d){_0x5c2b8d=_0x5c2b8d||0xcc;return function(_0x334db2){if(_0x334db2){return _0x7ee7dd[_0xefd4('0x19')](_0x5c2b8d);}return _0x7ee7dd[_0xefd4('0x1a')](_0x5c2b8d)[_0xefd4('0x1b')]();};}function respondWithResult(_0x370f7e,_0x1cb6c8){_0x1cb6c8=_0x1cb6c8||0xc8;return function(_0x1ee250){if(_0x1ee250){return _0x370f7e[_0xefd4('0x1a')](_0x1cb6c8)[_0xefd4('0x1c')](_0x1ee250);}};}function respondWithFilteredResult(_0x21d958,_0xa87a0f){return function(_0x5f5985){if(_0x5f5985){var _0x5dfffe=typeof _0xa87a0f[_0xefd4('0x1d')]==='undefined'&&typeof _0xa87a0f['limit']===_0xefd4('0x1e');var _0x3fd645=_0x5f5985['count'];var _0x17944e=_0x5dfffe?0x0:_0xa87a0f['offset'];var _0x492e76=_0x5dfffe?_0x5f5985['count']:_0xa87a0f[_0xefd4('0x1d')]+_0xa87a0f[_0xefd4('0x1f')];var _0x4465b4;if(_0x492e76>=_0x3fd645){_0x492e76=_0x3fd645;_0x4465b4=0xc8;}else{_0x4465b4=0xce;}_0x21d958['status'](_0x4465b4);return _0x21d958[_0xefd4('0x20')](_0xefd4('0x21'),_0x17944e+'-'+_0x492e76+'/'+_0x3fd645)[_0xefd4('0x1c')](_0x5f5985);}return null;};}function patchUpdates(_0x2305f5){return function(_0x2dd865){try{jsonpatch[_0xefd4('0x22')](_0x2dd865,_0x2305f5,!![]);}catch(_0x132e31){return BPromise[_0xefd4('0x23')](_0x132e31);}return _0x2dd865[_0xefd4('0x24')]();};}function saveUpdates(_0x22c5a1,_0x34ea1f){return function(_0x5bfce7){if(_0x5bfce7){return _0x5bfce7[_0xefd4('0x25')](_0x22c5a1)['then'](function(_0x5cb101){return _0x5cb101;});}return null;};}function removeEntity(_0x46b190,_0x3c66cd){return function(_0x10f6cf){if(_0x10f6cf){return _0x10f6cf[_0xefd4('0x26')]()[_0xefd4('0x27')](function(){_0x46b190[_0xefd4('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5c6cda,_0x3c9664){return function(_0x50154b){if(!_0x50154b){_0x5c6cda[_0xefd4('0x19')](0x194);}return _0x50154b;};}function handleError(_0x430934,_0x4184d4){_0x4184d4=_0x4184d4||0x1f4;return function(_0x4af407){logger[_0xefd4('0x28')](_0x4af407[_0xefd4('0x29')]);if(_0x4af407[_0xefd4('0x2a')]){delete _0x4af407[_0xefd4('0x2a')];}_0x430934[_0xefd4('0x1a')](_0x4184d4)[_0xefd4('0x2b')](_0x4af407);};}exports[_0xefd4('0x2c')]=function(_0x215ddf,_0x3709f7){var _0x878db0={},_0x7febd3={},_0x44cde4={'count':0x0,'rows':[]};var _0x168903=_[_0xefd4('0x2d')](db[_0xefd4('0x2e')][_0xefd4('0x2f')],function(_0x4ad212){return{'name':_0x4ad212['fieldName'],'type':_0x4ad212[_0xefd4('0x30')][_0xefd4('0x31')]};});_0x7febd3[_0xefd4('0x32')]=_[_0xefd4('0x2d')](_0x168903,'name');_0x7febd3[_0xefd4('0x33')]=_[_0xefd4('0x34')](_0x215ddf['query']);_0x7febd3[_0xefd4('0x35')]=_['intersection'](_0x7febd3[_0xefd4('0x32')],_0x7febd3[_0xefd4('0x33')]);_0x878db0[_0xefd4('0x36')]=_['intersection'](_0x7febd3[_0xefd4('0x32')],qs[_0xefd4('0x37')](_0x215ddf[_0xefd4('0x33')][_0xefd4('0x37')]));_0x878db0[_0xefd4('0x36')]=_0x878db0[_0xefd4('0x36')][_0xefd4('0x38')]?_0x878db0[_0xefd4('0x36')]:_0x7febd3[_0xefd4('0x32')];if(!_0x215ddf[_0xefd4('0x33')]['hasOwnProperty'](_0xefd4('0x39'))){_0x878db0['limit']=qs[_0xefd4('0x1f')](_0x215ddf['query']['limit']);_0x878db0['offset']=qs['offset'](_0x215ddf['query']['offset']);}_0x878db0[_0xefd4('0x3a')]=qs[_0xefd4('0x3b')](_0x215ddf[_0xefd4('0x33')]['sort']);_0x878db0[_0xefd4('0x3c')]=qs['filters'](_['pick'](_0x215ddf[_0xefd4('0x33')],_0x7febd3[_0xefd4('0x35')]),_0x168903);if(_0x215ddf[_0xefd4('0x33')][_0xefd4('0x3d')]){_0x878db0[_0xefd4('0x3c')]=_['merge'](_0x878db0['where'],{'$or':_['map'](_0x168903,function(_0x3744c1){if(_0x3744c1[_0xefd4('0x30')]!==_0xefd4('0x3e')){var _0x451426={};_0x451426[_0x3744c1[_0xefd4('0x2a')]]={'$like':'%'+_0x215ddf[_0xefd4('0x33')][_0xefd4('0x3d')]+'%'};return _0x451426;}})});}_0x878db0=_[_0xefd4('0x3f')]({},_0x878db0,_0x215ddf[_0xefd4('0x40')]);var _0x23a157={'where':_0x878db0['where']};return db[_0xefd4('0x2e')][_0xefd4('0x41')](_0x23a157)[_0xefd4('0x27')](function(_0x4dab8e){_0x44cde4[_0xefd4('0x41')]=_0x4dab8e;if(_0x215ddf[_0xefd4('0x33')][_0xefd4('0x42')]){_0x878db0[_0xefd4('0x43')]=[{'all':!![]}];}return db[_0xefd4('0x2e')]['findAll'](_0x878db0);})[_0xefd4('0x27')](function(_0x2ffab4){_0x44cde4[_0xefd4('0x44')]=_0x2ffab4;return _0x44cde4;})[_0xefd4('0x27')](respondWithFilteredResult(_0x3709f7,_0x878db0))[_0xefd4('0x45')](handleError(_0x3709f7,null));};exports[_0xefd4('0x46')]=function(_0x16a991,_0x98692f){var _0x10c1d1={'raw':!![],'where':{'id':_0x16a991[_0xefd4('0x47')]['id']}},_0x4c82af={};_0x4c82af[_0xefd4('0x32')]=_[_0xefd4('0x34')](db[_0xefd4('0x2e')][_0xefd4('0x2f')]);_0x4c82af[_0xefd4('0x33')]=_[_0xefd4('0x34')](_0x16a991['query']);_0x4c82af[_0xefd4('0x35')]=_[_0xefd4('0x48')](_0x4c82af[_0xefd4('0x32')],_0x4c82af['query']);_0x10c1d1[_0xefd4('0x36')]=_[_0xefd4('0x48')](_0x4c82af['model'],qs[_0xefd4('0x37')](_0x16a991[_0xefd4('0x33')][_0xefd4('0x37')]));_0x10c1d1[_0xefd4('0x36')]=_0x10c1d1['attributes']['length']?_0x10c1d1[_0xefd4('0x36')]:_0x4c82af[_0xefd4('0x32')];if(_0x16a991[_0xefd4('0x33')][_0xefd4('0x42')]){_0x10c1d1[_0xefd4('0x43')]=[{'all':!![]}];}_0x10c1d1=_['merge']({},_0x10c1d1,_0x16a991[_0xefd4('0x40')]);return db['FreshsalesField'][_0xefd4('0x49')](_0x10c1d1)['then'](handleEntityNotFound(_0x98692f,null))['then'](respondWithResult(_0x98692f,null))['catch'](handleError(_0x98692f,null));};exports[_0xefd4('0x4a')]=function(_0x4a8c43,_0x136d7e){return db[_0xefd4('0x2e')][_0xefd4('0x4a')](_0x4a8c43[_0xefd4('0x4b')],{})[_0xefd4('0x27')](respondWithResult(_0x136d7e,0xc9))[_0xefd4('0x45')](handleError(_0x136d7e,null));};exports[_0xefd4('0x25')]=function(_0x2a0b73,_0x57edb5){if(_0x2a0b73[_0xefd4('0x4b')]['id']){delete _0x2a0b73[_0xefd4('0x4b')]['id'];}return db['FreshsalesField'][_0xefd4('0x49')]({'where':{'id':_0x2a0b73[_0xefd4('0x47')]['id']}})[_0xefd4('0x27')](handleEntityNotFound(_0x57edb5,null))[_0xefd4('0x27')](saveUpdates(_0x2a0b73[_0xefd4('0x4b')],null))['then'](respondWithResult(_0x57edb5,null))[_0xefd4('0x45')](handleError(_0x57edb5,null));};exports[_0xefd4('0x26')]=function(_0x1d2f2a,_0x1ff9d0){return db[_0xefd4('0x2e')][_0xefd4('0x49')]({'where':{'id':_0x1d2f2a[_0xefd4('0x47')]['id']}})['then'](handleEntityNotFound(_0x1ff9d0,null))[_0xefd4('0x27')](removeEntity(_0x1ff9d0,null))[_0xefd4('0x45')](handleError(_0x1ff9d0,null));};
\ No newline at end of file
+var _0xc082=['order','sort','where','filters','type','VIRTUAL','options','count','includeAll','include','findAll','catch','show','params','intersection','merge','find','update','body','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../mysqldb','status','json','limit','undefined','offset','set','Content-Range','apply','save','then','end','sendStatus','error','stack','name','send','map','FreshsalesField','rawAttributes','fieldName','key','model','query','keys','attributes','fields','length','hasOwnProperty'];(function(_0x2fb7ae,_0x4a5e65){var _0x11e133=function(_0x10b4c2){while(--_0x10b4c2){_0x2fb7ae['push'](_0x2fb7ae['shift']());}};_0x11e133(++_0x4a5e65);}(_0xc082,0x138));var _0x2c08=function(_0x89ed92,_0x2f05df){_0x89ed92=_0x89ed92-0x0;var _0xf3d65f=_0xc082[_0x89ed92];return _0xf3d65f;};'use strict';var emlformat=require(_0x2c08('0x0'));var rimraf=require(_0x2c08('0x1'));var zipdir=require(_0x2c08('0x2'));var jsonpatch=require(_0x2c08('0x3'));var rp=require(_0x2c08('0x4'));var moment=require(_0x2c08('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x2c08('0x6'));var util=require(_0x2c08('0x7'));var path=require(_0x2c08('0x8'));var sox=require('sox');var csv=require(_0x2c08('0x9'));var ejs=require(_0x2c08('0xa'));var fs=require('fs');var fs_extra=require(_0x2c08('0xb'));var _=require(_0x2c08('0xc'));var squel=require(_0x2c08('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x2c08('0xe'));var toCsv=require(_0x2c08('0x9'));var querystring=require(_0x2c08('0xf'));var Papa=require(_0x2c08('0x10'));var Redis=require(_0x2c08('0x11'));var authService=require(_0x2c08('0x12'));var qs=require(_0x2c08('0x13'));var as=require(_0x2c08('0x14'));var hardwareService=require(_0x2c08('0x15'));var logger=require(_0x2c08('0x16'))(_0x2c08('0x17'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x2c08('0x18'))['db'];function respondWithStatusCode(_0x1f6682,_0x27c4e4){_0x27c4e4=_0x27c4e4||0xcc;return function(_0x4911ba){if(_0x4911ba){return _0x1f6682['sendStatus'](_0x27c4e4);}return _0x1f6682[_0x2c08('0x19')](_0x27c4e4)['end']();};}function respondWithResult(_0xe1f497,_0x3198e2){_0x3198e2=_0x3198e2||0xc8;return function(_0x2df973){if(_0x2df973){return _0xe1f497['status'](_0x3198e2)[_0x2c08('0x1a')](_0x2df973);}};}function respondWithFilteredResult(_0x1732e9,_0x1479be){return function(_0x133a3e){if(_0x133a3e){var _0x307c4a=typeof _0x1479be['offset']==='undefined'&&typeof _0x1479be[_0x2c08('0x1b')]===_0x2c08('0x1c');var _0x285d94=_0x133a3e['count'];var _0x2c955d=_0x307c4a?0x0:_0x1479be[_0x2c08('0x1d')];var _0x181270=_0x307c4a?_0x133a3e['count']:_0x1479be[_0x2c08('0x1d')]+_0x1479be[_0x2c08('0x1b')];var _0x2de6de;if(_0x181270>=_0x285d94){_0x181270=_0x285d94;_0x2de6de=0xc8;}else{_0x2de6de=0xce;}_0x1732e9[_0x2c08('0x19')](_0x2de6de);return _0x1732e9[_0x2c08('0x1e')](_0x2c08('0x1f'),_0x2c955d+'-'+_0x181270+'/'+_0x285d94)[_0x2c08('0x1a')](_0x133a3e);}return null;};}function patchUpdates(_0x3fb8ac){return function(_0x3e1a86){try{jsonpatch[_0x2c08('0x20')](_0x3e1a86,_0x3fb8ac,!![]);}catch(_0x515d26){return BPromise['reject'](_0x515d26);}return _0x3e1a86[_0x2c08('0x21')]();};}function saveUpdates(_0x4260e8,_0x56e04e){return function(_0x1e6fa1){if(_0x1e6fa1){return _0x1e6fa1['update'](_0x4260e8)[_0x2c08('0x22')](function(_0x1d0ee6){return _0x1d0ee6;});}return null;};}function removeEntity(_0x3e8129,_0x2f9bed){return function(_0x3dfcc5){if(_0x3dfcc5){return _0x3dfcc5['destroy']()[_0x2c08('0x22')](function(){_0x3e8129[_0x2c08('0x19')](0xcc)[_0x2c08('0x23')]();});}};}function handleEntityNotFound(_0x43722b,_0x3de18a){return function(_0x55aa6b){if(!_0x55aa6b){_0x43722b[_0x2c08('0x24')](0x194);}return _0x55aa6b;};}function handleError(_0xedc350,_0x11cbb9){_0x11cbb9=_0x11cbb9||0x1f4;return function(_0xf8849b){logger[_0x2c08('0x25')](_0xf8849b[_0x2c08('0x26')]);if(_0xf8849b[_0x2c08('0x27')]){delete _0xf8849b[_0x2c08('0x27')];}_0xedc350[_0x2c08('0x19')](_0x11cbb9)[_0x2c08('0x28')](_0xf8849b);};}exports['index']=function(_0x255c54,_0x24aae9){var _0x5ec911={},_0x358741={},_0x67a459={'count':0x0,'rows':[]};var _0x286820=_[_0x2c08('0x29')](db[_0x2c08('0x2a')][_0x2c08('0x2b')],function(_0x1738cc){return{'name':_0x1738cc[_0x2c08('0x2c')],'type':_0x1738cc['type'][_0x2c08('0x2d')]};});_0x358741[_0x2c08('0x2e')]=_['map'](_0x286820,_0x2c08('0x27'));_0x358741[_0x2c08('0x2f')]=_[_0x2c08('0x30')](_0x255c54[_0x2c08('0x2f')]);_0x358741['filters']=_['intersection'](_0x358741[_0x2c08('0x2e')],_0x358741[_0x2c08('0x2f')]);_0x5ec911[_0x2c08('0x31')]=_['intersection'](_0x358741['model'],qs[_0x2c08('0x32')](_0x255c54[_0x2c08('0x2f')]['fields']));_0x5ec911[_0x2c08('0x31')]=_0x5ec911[_0x2c08('0x31')][_0x2c08('0x33')]?_0x5ec911['attributes']:_0x358741['model'];if(!_0x255c54['query'][_0x2c08('0x34')]('nolimit')){_0x5ec911[_0x2c08('0x1b')]=qs['limit'](_0x255c54[_0x2c08('0x2f')]['limit']);_0x5ec911[_0x2c08('0x1d')]=qs[_0x2c08('0x1d')](_0x255c54['query']['offset']);}_0x5ec911[_0x2c08('0x35')]=qs['sort'](_0x255c54[_0x2c08('0x2f')][_0x2c08('0x36')]);_0x5ec911[_0x2c08('0x37')]=qs[_0x2c08('0x38')](_['pick'](_0x255c54['query'],_0x358741[_0x2c08('0x38')]),_0x286820);if(_0x255c54[_0x2c08('0x2f')]['filter']){_0x5ec911['where']=_['merge'](_0x5ec911['where'],{'$or':_[_0x2c08('0x29')](_0x286820,function(_0x4c9f18){if(_0x4c9f18[_0x2c08('0x39')]!==_0x2c08('0x3a')){var _0xf8e367={};_0xf8e367[_0x4c9f18['name']]={'$like':'%'+_0x255c54[_0x2c08('0x2f')]['filter']+'%'};return _0xf8e367;}})});}_0x5ec911=_['merge']({},_0x5ec911,_0x255c54[_0x2c08('0x3b')]);var _0x51e77e={'where':_0x5ec911[_0x2c08('0x37')]};return db[_0x2c08('0x2a')][_0x2c08('0x3c')](_0x51e77e)[_0x2c08('0x22')](function(_0x290fed){_0x67a459['count']=_0x290fed;if(_0x255c54[_0x2c08('0x2f')][_0x2c08('0x3d')]){_0x5ec911[_0x2c08('0x3e')]=[{'all':!![]}];}return db['FreshsalesField'][_0x2c08('0x3f')](_0x5ec911);})[_0x2c08('0x22')](function(_0x4c3cdb){_0x67a459['rows']=_0x4c3cdb;return _0x67a459;})[_0x2c08('0x22')](respondWithFilteredResult(_0x24aae9,_0x5ec911))[_0x2c08('0x40')](handleError(_0x24aae9,null));};exports[_0x2c08('0x41')]=function(_0x5a370a,_0x9111f0){var _0xdf2259={'raw':!![],'where':{'id':_0x5a370a[_0x2c08('0x42')]['id']}},_0x51d217={};_0x51d217[_0x2c08('0x2e')]=_[_0x2c08('0x30')](db[_0x2c08('0x2a')][_0x2c08('0x2b')]);_0x51d217['query']=_[_0x2c08('0x30')](_0x5a370a[_0x2c08('0x2f')]);_0x51d217['filters']=_[_0x2c08('0x43')](_0x51d217[_0x2c08('0x2e')],_0x51d217[_0x2c08('0x2f')]);_0xdf2259[_0x2c08('0x31')]=_['intersection'](_0x51d217['model'],qs[_0x2c08('0x32')](_0x5a370a['query'][_0x2c08('0x32')]));_0xdf2259[_0x2c08('0x31')]=_0xdf2259[_0x2c08('0x31')][_0x2c08('0x33')]?_0xdf2259[_0x2c08('0x31')]:_0x51d217[_0x2c08('0x2e')];if(_0x5a370a[_0x2c08('0x2f')]['includeAll']){_0xdf2259[_0x2c08('0x3e')]=[{'all':!![]}];}_0xdf2259=_[_0x2c08('0x44')]({},_0xdf2259,_0x5a370a[_0x2c08('0x3b')]);return db[_0x2c08('0x2a')][_0x2c08('0x45')](_0xdf2259)[_0x2c08('0x22')](handleEntityNotFound(_0x9111f0,null))['then'](respondWithResult(_0x9111f0,null))[_0x2c08('0x40')](handleError(_0x9111f0,null));};exports['create']=function(_0x4a8c7e,_0x3f1430){return db[_0x2c08('0x2a')]['create'](_0x4a8c7e['body'],{})[_0x2c08('0x22')](respondWithResult(_0x3f1430,0xc9))[_0x2c08('0x40')](handleError(_0x3f1430,null));};exports[_0x2c08('0x46')]=function(_0x296506,_0x51ecb5){if(_0x296506['body']['id']){delete _0x296506[_0x2c08('0x47')]['id'];}return db['FreshsalesField'][_0x2c08('0x45')]({'where':{'id':_0x296506[_0x2c08('0x42')]['id']}})[_0x2c08('0x22')](handleEntityNotFound(_0x51ecb5,null))[_0x2c08('0x22')](saveUpdates(_0x296506['body'],null))[_0x2c08('0x22')](respondWithResult(_0x51ecb5,null))[_0x2c08('0x40')](handleError(_0x51ecb5,null));};exports[_0x2c08('0x48')]=function(_0xc2caec,_0x5934ce){return db[_0x2c08('0x2a')][_0x2c08('0x45')]({'where':{'id':_0xc2caec[_0x2c08('0x42')]['id']}})[_0x2c08('0x22')](handleEntityNotFound(_0x5934ce,null))[_0x2c08('0x22')](removeEntity(_0x5934ce,null))[_0x2c08('0x40')](handleError(_0x5934ce,null));};
\ No newline at end of file