Built motion from commit da617fac.|2.6.6
[motion2.git] / server / api / squareReportDetail / squareReportDetail.controller.js
index a85905a..139abcf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ba2=['stack','send','SquareDetailsReport','rawAttributes','fieldName','key','model','name','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','map','type','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','params','keys','create','update','body','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','path','sox','to-csv','ejs','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','offset','undefined','count','limit','set','Content-Range','apply','save','then','destroy','end','error'];(function(_0x465a0c,_0x19d4d5){var _0x1e202e=function(_0x27bd8a){while(--_0x27bd8a){_0x465a0c['push'](_0x465a0c['shift']());}};_0x1e202e(++_0x19d4d5);}(_0x9ba2,0x107));var _0x29ba=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x9ba2[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require(_0x29ba('0x0'));var rimraf=require(_0x29ba('0x1'));var zipdir=require(_0x29ba('0x2'));var jsonpatch=require(_0x29ba('0x3'));var rp=require(_0x29ba('0x4'));var moment=require(_0x29ba('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0x29ba('0x6'));var sox=require(_0x29ba('0x7'));var csv=require(_0x29ba('0x8'));var ejs=require(_0x29ba('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x29ba('0xa'));var crypto=require('crypto');var jsforce=require(_0x29ba('0xb'));var deskjs=require(_0x29ba('0xc'));var toCsv=require('to-csv');var querystring=require(_0x29ba('0xd'));var Papa=require(_0x29ba('0xe'));var Redis=require(_0x29ba('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x29ba('0x10'));var as=require(_0x29ba('0x11'));var hardwareService=require(_0x29ba('0x12'));var logger=require(_0x29ba('0x13'))(_0x29ba('0x14'));var utils=require('../../config/utils');var config=require(_0x29ba('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x29ba('0x16'))['db'];function respondWithStatusCode(_0x144b18,_0x3a8da3){_0x3a8da3=_0x3a8da3||0xcc;return function(_0x504d4f){if(_0x504d4f){return _0x144b18[_0x29ba('0x17')](_0x3a8da3);}return _0x144b18[_0x29ba('0x18')](_0x3a8da3)['end']();};}function respondWithResult(_0x258657,_0x20c976){_0x20c976=_0x20c976||0xc8;return function(_0x4098fc){if(_0x4098fc){return _0x258657[_0x29ba('0x18')](_0x20c976)['json'](_0x4098fc);}};}function respondWithFilteredResult(_0x4b2114,_0x486dbd){return function(_0x4c02dd){if(_0x4c02dd){var _0x240f08=typeof _0x486dbd[_0x29ba('0x19')]===_0x29ba('0x1a')&&typeof _0x486dbd['limit']==='undefined';var _0x21546c=_0x4c02dd[_0x29ba('0x1b')];var _0x335ccc=_0x240f08?0x0:_0x486dbd[_0x29ba('0x19')];var _0x2de6d2=_0x240f08?_0x4c02dd['count']:_0x486dbd[_0x29ba('0x19')]+_0x486dbd[_0x29ba('0x1c')];var _0x3d495a;if(_0x2de6d2>=_0x21546c){_0x2de6d2=_0x21546c;_0x3d495a=0xc8;}else{_0x3d495a=0xce;}_0x4b2114['status'](_0x3d495a);return _0x4b2114[_0x29ba('0x1d')](_0x29ba('0x1e'),_0x335ccc+'-'+_0x2de6d2+'/'+_0x21546c)['json'](_0x4c02dd);}return null;};}function patchUpdates(_0x3e5044){return function(_0x1c72a5){try{jsonpatch[_0x29ba('0x1f')](_0x1c72a5,_0x3e5044,!![]);}catch(_0x3dad55){return BPromise['reject'](_0x3dad55);}return _0x1c72a5[_0x29ba('0x20')]();};}function saveUpdates(_0x288025,_0x6a26c1){return function(_0x338083){if(_0x338083){return _0x338083['update'](_0x288025)[_0x29ba('0x21')](function(_0x73a487){return _0x73a487;});}return null;};}function removeEntity(_0x4f0421,_0x288e6a){return function(_0xbc631b){if(_0xbc631b){return _0xbc631b[_0x29ba('0x22')]()[_0x29ba('0x21')](function(){_0x4f0421[_0x29ba('0x18')](0xcc)[_0x29ba('0x23')]();});}};}function handleEntityNotFound(_0x5467ff,_0x1d34ab){return function(_0x5975d5){if(!_0x5975d5){_0x5467ff[_0x29ba('0x17')](0x194);}return _0x5975d5;};}function handleError(_0x32d0b7,_0x503333){_0x503333=_0x503333||0x1f4;return function(_0x2b0a1a){logger[_0x29ba('0x24')](_0x2b0a1a[_0x29ba('0x25')]);if(_0x2b0a1a['name']){delete _0x2b0a1a['name'];}_0x32d0b7[_0x29ba('0x18')](_0x503333)[_0x29ba('0x26')](_0x2b0a1a);};}exports['index']=function(_0x257d6f,_0x270f00){var _0x2814f6={},_0x8bbb28={},_0x52d0cb={'count':0x0,'rows':[]};var _0x3e9f21=_['map'](db[_0x29ba('0x27')][_0x29ba('0x28')],function(_0x4dfc67){return{'name':_0x4dfc67[_0x29ba('0x29')],'type':_0x4dfc67['type'][_0x29ba('0x2a')]};});_0x8bbb28[_0x29ba('0x2b')]=_['map'](_0x3e9f21,_0x29ba('0x2c'));_0x8bbb28[_0x29ba('0x2d')]=_['keys'](_0x257d6f[_0x29ba('0x2d')]);_0x8bbb28[_0x29ba('0x2e')]=_[_0x29ba('0x2f')](_0x8bbb28['model'],_0x8bbb28[_0x29ba('0x2d')]);_0x2814f6[_0x29ba('0x30')]=_[_0x29ba('0x2f')](_0x8bbb28[_0x29ba('0x2b')],qs[_0x29ba('0x31')](_0x257d6f[_0x29ba('0x2d')][_0x29ba('0x31')]));_0x2814f6[_0x29ba('0x30')]=_0x2814f6[_0x29ba('0x30')][_0x29ba('0x32')]?_0x2814f6[_0x29ba('0x30')]:_0x8bbb28[_0x29ba('0x2b')];if(!_0x257d6f[_0x29ba('0x2d')][_0x29ba('0x33')](_0x29ba('0x34'))){_0x2814f6['limit']=qs[_0x29ba('0x1c')](_0x257d6f['query'][_0x29ba('0x1c')]);_0x2814f6[_0x29ba('0x19')]=qs[_0x29ba('0x19')](_0x257d6f[_0x29ba('0x2d')]['offset']);}_0x2814f6[_0x29ba('0x35')]=qs['sort'](_0x257d6f['query'][_0x29ba('0x36')]);_0x2814f6[_0x29ba('0x37')]=qs[_0x29ba('0x2e')](_[_0x29ba('0x38')](_0x257d6f[_0x29ba('0x2d')],_0x8bbb28[_0x29ba('0x2e')]),_0x3e9f21);if(_0x257d6f[_0x29ba('0x2d')][_0x29ba('0x39')]){_0x2814f6['where']=_['merge'](_0x2814f6[_0x29ba('0x37')],{'$or':_[_0x29ba('0x3a')](_0x3e9f21,function(_0x735f9){if(_0x735f9[_0x29ba('0x3b')]!==_0x29ba('0x3c')){var _0x40d8d6={};_0x40d8d6[_0x735f9[_0x29ba('0x2c')]]={'$like':'%'+_0x257d6f['query'][_0x29ba('0x39')]+'%'};return _0x40d8d6;}})});}_0x2814f6=_[_0x29ba('0x3d')]({},_0x2814f6,_0x257d6f[_0x29ba('0x3e')]);var _0x238b0d={'where':_0x2814f6[_0x29ba('0x37')]};return db[_0x29ba('0x27')][_0x29ba('0x1b')](_0x238b0d)[_0x29ba('0x21')](function(_0x40e648){_0x52d0cb[_0x29ba('0x1b')]=_0x40e648;if(_0x257d6f[_0x29ba('0x2d')][_0x29ba('0x3f')]){_0x2814f6[_0x29ba('0x40')]=[{'all':!![]}];}return db[_0x29ba('0x27')][_0x29ba('0x41')](_0x2814f6);})[_0x29ba('0x21')](function(_0x1c5922){_0x52d0cb[_0x29ba('0x42')]=_0x1c5922;return _0x52d0cb;})[_0x29ba('0x21')](respondWithFilteredResult(_0x270f00,_0x2814f6))[_0x29ba('0x43')](handleError(_0x270f00,null));};exports['show']=function(_0x4614dd,_0x5375ec){var _0x439341={'raw':!![],'where':{'id':_0x4614dd[_0x29ba('0x44')]['id']}},_0x2bb612={};_0x2bb612[_0x29ba('0x2b')]=_[_0x29ba('0x45')](db[_0x29ba('0x27')][_0x29ba('0x28')]);_0x2bb612[_0x29ba('0x2d')]=_[_0x29ba('0x45')](_0x4614dd['query']);_0x2bb612[_0x29ba('0x2e')]=_['intersection'](_0x2bb612[_0x29ba('0x2b')],_0x2bb612['query']);_0x439341['attributes']=_[_0x29ba('0x2f')](_0x2bb612['model'],qs[_0x29ba('0x31')](_0x4614dd[_0x29ba('0x2d')][_0x29ba('0x31')]));_0x439341[_0x29ba('0x30')]=_0x439341['attributes']['length']?_0x439341[_0x29ba('0x30')]:_0x2bb612[_0x29ba('0x2b')];if(_0x4614dd[_0x29ba('0x2d')][_0x29ba('0x3f')]){_0x439341[_0x29ba('0x40')]=[{'all':!![]}];}_0x439341=_['merge']({},_0x439341,_0x4614dd[_0x29ba('0x3e')]);return db['SquareDetailsReport']['find'](_0x439341)[_0x29ba('0x21')](handleEntityNotFound(_0x5375ec,null))['then'](respondWithResult(_0x5375ec,null))[_0x29ba('0x43')](handleError(_0x5375ec,null));};exports['create']=function(_0xbd5bba,_0x36eab4){return db[_0x29ba('0x27')][_0x29ba('0x46')](_0xbd5bba['body'],{})['then'](respondWithResult(_0x36eab4,0xc9))[_0x29ba('0x43')](handleError(_0x36eab4,null));};exports[_0x29ba('0x47')]=function(_0x171a6f,_0xc018f8){if(_0x171a6f[_0x29ba('0x48')]['id']){delete _0x171a6f[_0x29ba('0x48')]['id'];}return db['SquareDetailsReport']['find']({'where':{'id':_0x171a6f[_0x29ba('0x44')]['id']}})['then'](handleEntityNotFound(_0xc018f8,null))[_0x29ba('0x21')](saveUpdates(_0x171a6f[_0x29ba('0x48')],null))[_0x29ba('0x21')](respondWithResult(_0xc018f8,null))[_0x29ba('0x43')](handleError(_0xc018f8,null));};exports['destroy']=function(_0x1ec2c8,_0x3027cc){return db[_0x29ba('0x27')][_0x29ba('0x49')]({'where':{'id':_0x1ec2c8['params']['id']}})[_0x29ba('0x21')](handleEntityNotFound(_0x3027cc,null))[_0x29ba('0x21')](removeEntity(_0x3027cc,null))[_0x29ba('0x43')](handleError(_0x3027cc,null));};exports[_0x29ba('0x4a')]=function(_0x428f16,_0x44ad05){return db[_0x29ba('0x27')][_0x29ba('0x4a')]()['then'](respondWithResult(_0x44ad05,null))[_0x29ba('0x43')](handleError(_0x44ad05,null));};
\ No newline at end of file
+var _0x628a=['jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','end','json','offset','undefined','count','limit','status','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','SquareDetailsReport','rawAttributes','fieldName','type','key','model','query','keys','filters','fields','length','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','include','findAll','rows','catch','show','params','attributes','intersection','includeAll','find','body','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','squel','crypto'];(function(_0x436e1c,_0x351076){var _0x19e912=function(_0x1313b5){while(--_0x1313b5){_0x436e1c['push'](_0x436e1c['shift']());}};_0x19e912(++_0x351076);}(_0x628a,0x1bb));var _0xa628=function(_0x23d780,_0x458f78){_0x23d780=_0x23d780-0x0;var _0x335a06=_0x628a[_0x23d780];return _0x335a06;};'use strict';var emlformat=require(_0xa628('0x0'));var rimraf=require(_0xa628('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa628('0x2'));var rp=require(_0xa628('0x3'));var moment=require(_0xa628('0x4'));var BPromise=require(_0xa628('0x5'));var Mustache=require(_0xa628('0x6'));var util=require(_0xa628('0x7'));var path=require('path');var sox=require(_0xa628('0x8'));var csv=require(_0xa628('0x9'));var ejs=require(_0xa628('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xa628('0xb'));var crypto=require(_0xa628('0xc'));var jsforce=require(_0xa628('0xd'));var deskjs=require(_0xa628('0xe'));var toCsv=require(_0xa628('0x9'));var querystring=require(_0xa628('0xf'));var Papa=require(_0xa628('0x10'));var Redis=require('ioredis');var authService=require(_0xa628('0x11'));var qs=require(_0xa628('0x12'));var as=require(_0xa628('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa628('0x14'))(_0xa628('0x15'));var utils=require(_0xa628('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xa628('0x17'))['db'];function respondWithStatusCode(_0xe78f38,_0x20ecf2){_0x20ecf2=_0x20ecf2||0xcc;return function(_0x4ecc6b){if(_0x4ecc6b){return _0xe78f38[_0xa628('0x18')](_0x20ecf2);}return _0xe78f38['status'](_0x20ecf2)[_0xa628('0x19')]();};}function respondWithResult(_0x4b7a86,_0xa55921){_0xa55921=_0xa55921||0xc8;return function(_0xf0260c){if(_0xf0260c){return _0x4b7a86['status'](_0xa55921)[_0xa628('0x1a')](_0xf0260c);}};}function respondWithFilteredResult(_0x34ef6c,_0x34048c){return function(_0x46e541){if(_0x46e541){var _0x97d0f=typeof _0x34048c[_0xa628('0x1b')]===_0xa628('0x1c')&&typeof _0x34048c['limit']===_0xa628('0x1c');var _0x449552=_0x46e541[_0xa628('0x1d')];var _0x49a654=_0x97d0f?0x0:_0x34048c[_0xa628('0x1b')];var _0x6817bb=_0x97d0f?_0x46e541[_0xa628('0x1d')]:_0x34048c[_0xa628('0x1b')]+_0x34048c[_0xa628('0x1e')];var _0x213065;if(_0x6817bb>=_0x449552){_0x6817bb=_0x449552;_0x213065=0xc8;}else{_0x213065=0xce;}_0x34ef6c[_0xa628('0x1f')](_0x213065);return _0x34ef6c['set'](_0xa628('0x20'),_0x49a654+'-'+_0x6817bb+'/'+_0x449552)[_0xa628('0x1a')](_0x46e541);}return null;};}function patchUpdates(_0x540a22){return function(_0x5c4e94){try{jsonpatch[_0xa628('0x21')](_0x5c4e94,_0x540a22,!![]);}catch(_0x91c87d){return BPromise[_0xa628('0x22')](_0x91c87d);}return _0x5c4e94[_0xa628('0x23')]();};}function saveUpdates(_0x25390e,_0x489aba){return function(_0x138172){if(_0x138172){return _0x138172[_0xa628('0x24')](_0x25390e)[_0xa628('0x25')](function(_0xa70b6){return _0xa70b6;});}return null;};}function removeEntity(_0x25f680,_0x5d09b8){return function(_0xda925){if(_0xda925){return _0xda925[_0xa628('0x26')]()[_0xa628('0x25')](function(){_0x25f680[_0xa628('0x1f')](0xcc)[_0xa628('0x19')]();});}};}function handleEntityNotFound(_0x4bd4f6,_0x6f86bd){return function(_0x989e3a){if(!_0x989e3a){_0x4bd4f6[_0xa628('0x18')](0x194);}return _0x989e3a;};}function handleError(_0x380174,_0x41b4c3){_0x41b4c3=_0x41b4c3||0x1f4;return function(_0x5364f6){logger[_0xa628('0x27')](_0x5364f6[_0xa628('0x28')]);if(_0x5364f6[_0xa628('0x29')]){delete _0x5364f6['name'];}_0x380174['status'](_0x41b4c3)[_0xa628('0x2a')](_0x5364f6);};}exports[_0xa628('0x2b')]=function(_0x379951,_0x4e3272){var _0x352e81={},_0x158fef={},_0x1eb962={'count':0x0,'rows':[]};var _0x309ba0=_[_0xa628('0x2c')](db[_0xa628('0x2d')][_0xa628('0x2e')],function(_0x3857c0){return{'name':_0x3857c0[_0xa628('0x2f')],'type':_0x3857c0[_0xa628('0x30')][_0xa628('0x31')]};});_0x158fef[_0xa628('0x32')]=_[_0xa628('0x2c')](_0x309ba0,'name');_0x158fef[_0xa628('0x33')]=_[_0xa628('0x34')](_0x379951['query']);_0x158fef[_0xa628('0x35')]=_['intersection'](_0x158fef[_0xa628('0x32')],_0x158fef['query']);_0x352e81['attributes']=_['intersection'](_0x158fef[_0xa628('0x32')],qs[_0xa628('0x36')](_0x379951[_0xa628('0x33')][_0xa628('0x36')]));_0x352e81['attributes']=_0x352e81['attributes'][_0xa628('0x37')]?_0x352e81['attributes']:_0x158fef['model'];if(!_0x379951['query']['hasOwnProperty'](_0xa628('0x38'))){_0x352e81['limit']=qs['limit'](_0x379951[_0xa628('0x33')][_0xa628('0x1e')]);_0x352e81[_0xa628('0x1b')]=qs[_0xa628('0x1b')](_0x379951[_0xa628('0x33')][_0xa628('0x1b')]);}_0x352e81[_0xa628('0x39')]=qs[_0xa628('0x3a')](_0x379951[_0xa628('0x33')][_0xa628('0x3a')]);_0x352e81['where']=qs[_0xa628('0x35')](_[_0xa628('0x3b')](_0x379951[_0xa628('0x33')],_0x158fef[_0xa628('0x35')]),_0x309ba0);if(_0x379951[_0xa628('0x33')][_0xa628('0x3c')]){_0x352e81[_0xa628('0x3d')]=_[_0xa628('0x3e')](_0x352e81[_0xa628('0x3d')],{'$or':_[_0xa628('0x2c')](_0x309ba0,function(_0x3d7e72){if(_0x3d7e72[_0xa628('0x30')]!==_0xa628('0x3f')){var _0x105bac={};_0x105bac[_0x3d7e72[_0xa628('0x29')]]={'$like':'%'+_0x379951[_0xa628('0x33')][_0xa628('0x3c')]+'%'};return _0x105bac;}})});}_0x352e81=_['merge']({},_0x352e81,_0x379951[_0xa628('0x40')]);var _0x5b05ec={'where':_0x352e81['where']};return db[_0xa628('0x2d')][_0xa628('0x1d')](_0x5b05ec)['then'](function(_0x4def2b){_0x1eb962['count']=_0x4def2b;if(_0x379951[_0xa628('0x33')]['includeAll']){_0x352e81[_0xa628('0x41')]=[{'all':!![]}];}return db[_0xa628('0x2d')][_0xa628('0x42')](_0x352e81);})['then'](function(_0x402624){_0x1eb962[_0xa628('0x43')]=_0x402624;return _0x1eb962;})[_0xa628('0x25')](respondWithFilteredResult(_0x4e3272,_0x352e81))[_0xa628('0x44')](handleError(_0x4e3272,null));};exports[_0xa628('0x45')]=function(_0x5e6cd9,_0x23d2ae){var _0x48ecc8={'raw':!![],'where':{'id':_0x5e6cd9[_0xa628('0x46')]['id']}},_0x379969={};_0x379969['model']=_[_0xa628('0x34')](db[_0xa628('0x2d')][_0xa628('0x2e')]);_0x379969[_0xa628('0x33')]=_[_0xa628('0x34')](_0x5e6cd9[_0xa628('0x33')]);_0x379969[_0xa628('0x35')]=_['intersection'](_0x379969[_0xa628('0x32')],_0x379969[_0xa628('0x33')]);_0x48ecc8[_0xa628('0x47')]=_[_0xa628('0x48')](_0x379969[_0xa628('0x32')],qs[_0xa628('0x36')](_0x5e6cd9['query'][_0xa628('0x36')]));_0x48ecc8[_0xa628('0x47')]=_0x48ecc8[_0xa628('0x47')][_0xa628('0x37')]?_0x48ecc8[_0xa628('0x47')]:_0x379969['model'];if(_0x5e6cd9['query'][_0xa628('0x49')]){_0x48ecc8[_0xa628('0x41')]=[{'all':!![]}];}_0x48ecc8=_['merge']({},_0x48ecc8,_0x5e6cd9[_0xa628('0x40')]);return db['SquareDetailsReport'][_0xa628('0x4a')](_0x48ecc8)[_0xa628('0x25')](handleEntityNotFound(_0x23d2ae,null))[_0xa628('0x25')](respondWithResult(_0x23d2ae,null))['catch'](handleError(_0x23d2ae,null));};exports['create']=function(_0x3aeb81,_0x4ced29){return db[_0xa628('0x2d')]['create'](_0x3aeb81[_0xa628('0x4b')],{})[_0xa628('0x25')](respondWithResult(_0x4ced29,0xc9))[_0xa628('0x44')](handleError(_0x4ced29,null));};exports[_0xa628('0x24')]=function(_0x4753ea,_0x4fdd7f){if(_0x4753ea[_0xa628('0x4b')]['id']){delete _0x4753ea[_0xa628('0x4b')]['id'];}return db[_0xa628('0x2d')][_0xa628('0x4a')]({'where':{'id':_0x4753ea['params']['id']}})['then'](handleEntityNotFound(_0x4fdd7f,null))['then'](saveUpdates(_0x4753ea['body'],null))['then'](respondWithResult(_0x4fdd7f,null))[_0xa628('0x44')](handleError(_0x4fdd7f,null));};exports['destroy']=function(_0x17e538,_0x444782){return db['SquareDetailsReport'][_0xa628('0x4a')]({'where':{'id':_0x17e538[_0xa628('0x46')]['id']}})['then'](handleEntityNotFound(_0x444782,null))[_0xa628('0x25')](removeEntity(_0x444782,null))[_0xa628('0x44')](handleError(_0x444782,null));};exports['describe']=function(_0x19124e,_0x383fa3){return db[_0xa628('0x2d')]['describe']()[_0xa628('0x25')](respondWithResult(_0x383fa3,null))['catch'](handleError(_0x383fa3,null));};
\ No newline at end of file