Built motion from commit (unavailable).|2.5.29
[motion2.git] / server / api / voiceTransferReport / voiceTransferReport.controller.js
index 4639e35..0ac1d1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd1ea=['length','hasOwnProperty','nolimit','order','sort','where','pick','type','VIRTUAL','filter','merge','options','VoiceTransferReport','includeAll','include','findAll','rows','catch','show','params','find','create','body','destroy','html-pdf','eml-format','fast-json-patch','request-promise','moment','sox','to-csv','ejs','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','end','status','json','count','offset','limit','Content-Range','apply','reject','save','update','then','sendStatus','error','stack','name','send','index','map','rawAttributes','key','query','keys','filters','model','attributes','intersection','fields'];(function(_0x440806,_0x3d6805){var _0x455e93=function(_0x50cab2){while(--_0x50cab2){_0x440806['push'](_0x440806['shift']());}};_0x455e93(++_0x3d6805);}(_0xd1ea,0xa8));var _0xad1e=function(_0x620cbe,_0x193075){_0x620cbe=_0x620cbe-0x0;var _0x30ad91=_0xd1ea[_0x620cbe];return _0x30ad91;};'use strict';var pdf=require(_0xad1e('0x0'));var emlformat=require(_0xad1e('0x1'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xad1e('0x2'));var rp=require(_0xad1e('0x3'));var moment=require(_0xad1e('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0xad1e('0x5'));var csv=require(_0xad1e('0x6'));var ejs=require(_0xad1e('0x7'));var fs=require('fs');var _=require('lodash');var squel=require('squel');var crypto=require(_0xad1e('0x8'));var jsforce=require(_0xad1e('0x9'));var deskjs=require(_0xad1e('0xa'));var toCsv=require(_0xad1e('0x6'));var querystring=require(_0xad1e('0xb'));var Papa=require('papaparse');var Redis=require(_0xad1e('0xc'));var authService=require(_0xad1e('0xd'));var qs=require(_0xad1e('0xe'));var as=require(_0xad1e('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xad1e('0x10'))(_0xad1e('0x11'));var utils=require(_0xad1e('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0xad1e('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5b5edc,_0x4889c2){_0x4889c2=_0x4889c2||0xcc;return function(_0x2b4fb0){if(_0x2b4fb0){return _0x5b5edc['sendStatus'](_0x4889c2);}return _0x5b5edc['status'](_0x4889c2)[_0xad1e('0x14')]();};}function respondWithResult(_0x589903,_0x45b664){_0x45b664=_0x45b664||0xc8;return function(_0x3d1faf){if(_0x3d1faf){return _0x589903[_0xad1e('0x15')](_0x45b664)[_0xad1e('0x16')](_0x3d1faf);}};}function respondWithFilteredResult(_0x4bd05,_0x4a6f1e){return function(_0x45a30d){if(_0x45a30d){var _0x60124f=_0x45a30d[_0xad1e('0x17')],_0x11ecc0=_0x4a6f1e[_0xad1e('0x18')],_0x4af0bc=_0x4a6f1e['offset']+_0x4a6f1e[_0xad1e('0x19')],_0x410f25;if(_0x4af0bc>=_0x60124f){_0x4af0bc=_0x60124f;_0x410f25=0xc8;}else{_0x410f25=0xce;}_0x4bd05[_0xad1e('0x15')](_0x410f25);return _0x4bd05['set'](_0xad1e('0x1a'),_0x11ecc0+'-'+_0x4af0bc+'/'+_0x60124f)[_0xad1e('0x16')](_0x45a30d);}return null;};}function patchUpdates(_0x54c2a1){return function(_0x200fb1){try{jsonpatch[_0xad1e('0x1b')](_0x200fb1,_0x54c2a1,!![]);}catch(_0x316765){return BPromise[_0xad1e('0x1c')](_0x316765);}return _0x200fb1[_0xad1e('0x1d')]();};}function saveUpdates(_0x58fef8,_0x444da0){return function(_0x14c076){if(_0x14c076){return _0x14c076[_0xad1e('0x1e')](_0x58fef8)[_0xad1e('0x1f')](function(_0xd85572){return _0xd85572;});}return null;};}function removeEntity(_0x1197c4,_0xdbb82d){return function(_0x268615){if(_0x268615){return _0x268615['destroy']()[_0xad1e('0x1f')](function(){_0x1197c4[_0xad1e('0x15')](0xcc)[_0xad1e('0x14')]();});}};}function handleEntityNotFound(_0x1eaa7a,_0x4c1f40){return function(_0x521c23){if(!_0x521c23){_0x1eaa7a[_0xad1e('0x20')](0x194);}return _0x521c23;};}function handleError(_0x2f6325,_0x55170d){_0x55170d=_0x55170d||0x1f4;return function(_0x9d790b){logger[_0xad1e('0x21')](_0x9d790b[_0xad1e('0x22')]);if(_0x9d790b[_0xad1e('0x23')]){delete _0x9d790b[_0xad1e('0x23')];}_0x2f6325[_0xad1e('0x15')](_0x55170d)[_0xad1e('0x24')](_0x9d790b);};}exports[_0xad1e('0x25')]=function(_0x31a574,_0x15865e){var _0x54211b={},_0x9f1337={},_0x58e0be={'count':0x0,'rows':[]};var _0x4fa803=_[_0xad1e('0x26')](db['VoiceTransferReport'][_0xad1e('0x27')],function(_0x513b03){return{'name':_0x513b03['fieldName'],'type':_0x513b03['type'][_0xad1e('0x28')]};});_0x9f1337['model']=_['map'](_0x4fa803,_0xad1e('0x23'));_0x9f1337[_0xad1e('0x29')]=_[_0xad1e('0x2a')](_0x31a574['query']);_0x9f1337[_0xad1e('0x2b')]=_['intersection'](_0x9f1337[_0xad1e('0x2c')],_0x9f1337[_0xad1e('0x29')]);_0x54211b[_0xad1e('0x2d')]=_[_0xad1e('0x2e')](_0x9f1337[_0xad1e('0x2c')],qs[_0xad1e('0x2f')](_0x31a574[_0xad1e('0x29')][_0xad1e('0x2f')]));_0x54211b[_0xad1e('0x2d')]=_0x54211b['attributes'][_0xad1e('0x30')]?_0x54211b[_0xad1e('0x2d')]:_0x9f1337[_0xad1e('0x2c')];if(!_0x31a574[_0xad1e('0x29')][_0xad1e('0x31')](_0xad1e('0x32'))){_0x54211b[_0xad1e('0x19')]=qs[_0xad1e('0x19')](_0x31a574['query'][_0xad1e('0x19')]);_0x54211b[_0xad1e('0x18')]=qs['offset'](_0x31a574['query'][_0xad1e('0x18')]);}_0x54211b[_0xad1e('0x33')]=qs[_0xad1e('0x34')](_0x31a574[_0xad1e('0x29')]['sort']);_0x54211b[_0xad1e('0x35')]=qs[_0xad1e('0x2b')](_[_0xad1e('0x36')](_0x31a574[_0xad1e('0x29')],_0x9f1337[_0xad1e('0x2b')]),_0x4fa803);if(_0x31a574[_0xad1e('0x29')]['filter']){_0x54211b[_0xad1e('0x35')]=_['merge'](_0x54211b[_0xad1e('0x35')],{'$or':_[_0xad1e('0x26')](_0x4fa803,function(_0x48e011){if(_0x48e011[_0xad1e('0x37')]!==_0xad1e('0x38')){var _0x5ab708={};_0x5ab708[_0x48e011[_0xad1e('0x23')]]={'$like':'%'+_0x31a574[_0xad1e('0x29')][_0xad1e('0x39')]+'%'};return _0x5ab708;}})});}_0x54211b=_[_0xad1e('0x3a')]({},_0x54211b,_0x31a574[_0xad1e('0x3b')]);var _0x3389de={'where':_0x54211b[_0xad1e('0x35')]};return db[_0xad1e('0x3c')][_0xad1e('0x17')](_0x3389de)[_0xad1e('0x1f')](function(_0x46e9af){_0x58e0be[_0xad1e('0x17')]=_0x46e9af;if(_0x31a574[_0xad1e('0x29')][_0xad1e('0x3d')]){_0x54211b[_0xad1e('0x3e')]=[{'all':!![]}];}return db[_0xad1e('0x3c')][_0xad1e('0x3f')](_0x54211b);})[_0xad1e('0x1f')](function(_0x33a076){_0x58e0be[_0xad1e('0x40')]=_0x33a076;return _0x58e0be;})['then'](respondWithFilteredResult(_0x15865e,_0x54211b))[_0xad1e('0x41')](handleError(_0x15865e,null));};exports[_0xad1e('0x42')]=function(_0x3f90bc,_0x490fd7){var _0x4468={'raw':!![],'where':{'id':_0x3f90bc[_0xad1e('0x43')]['id']}},_0x2d60e6={};_0x2d60e6['model']=_[_0xad1e('0x2a')](db[_0xad1e('0x3c')][_0xad1e('0x27')]);_0x2d60e6['query']=_[_0xad1e('0x2a')](_0x3f90bc[_0xad1e('0x29')]);_0x2d60e6[_0xad1e('0x2b')]=_['intersection'](_0x2d60e6[_0xad1e('0x2c')],_0x2d60e6['query']);_0x4468['attributes']=_[_0xad1e('0x2e')](_0x2d60e6['model'],qs[_0xad1e('0x2f')](_0x3f90bc[_0xad1e('0x29')]['fields']));_0x4468['attributes']=_0x4468[_0xad1e('0x2d')][_0xad1e('0x30')]?_0x4468[_0xad1e('0x2d')]:_0x2d60e6[_0xad1e('0x2c')];if(_0x3f90bc['query'][_0xad1e('0x3d')]){_0x4468[_0xad1e('0x3e')]=[{'all':!![]}];}_0x4468=_[_0xad1e('0x3a')]({},_0x4468,_0x3f90bc['options']);return db[_0xad1e('0x3c')][_0xad1e('0x44')](_0x4468)[_0xad1e('0x1f')](handleEntityNotFound(_0x490fd7,null))[_0xad1e('0x1f')](respondWithResult(_0x490fd7,null))['catch'](handleError(_0x490fd7,null));};exports[_0xad1e('0x45')]=function(_0x5598da,_0x877bc2){return db[_0xad1e('0x3c')]['create'](_0x5598da[_0xad1e('0x46')],{})['then'](respondWithResult(_0x877bc2,0xc9))[_0xad1e('0x41')](handleError(_0x877bc2,null));};exports[_0xad1e('0x1e')]=function(_0x56a96b,_0x556639){if(_0x56a96b[_0xad1e('0x46')]['id']){delete _0x56a96b[_0xad1e('0x46')]['id'];}return db[_0xad1e('0x3c')][_0xad1e('0x44')]({'where':{'id':_0x56a96b[_0xad1e('0x43')]['id']}})[_0xad1e('0x1f')](handleEntityNotFound(_0x556639,null))[_0xad1e('0x1f')](saveUpdates(_0x56a96b['body'],null))[_0xad1e('0x1f')](respondWithResult(_0x556639,null))[_0xad1e('0x41')](handleError(_0x556639,null));};exports[_0xad1e('0x47')]=function(_0x4d08e5,_0x27accb){return db[_0xad1e('0x3c')]['find']({'where':{'id':_0x4d08e5['params']['id']}})['then'](handleEntityNotFound(_0x27accb,null))['then'](removeEntity(_0x27accb,null))['catch'](handleError(_0x27accb,null));};
\ No newline at end of file
+var _0xe706=['includeAll','rows','catch','include','find','body','params','destroy','describe','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','undefined','limit','count','offset','set','Content-Range','json','apply','save','update','then','end','name','send','index','map','VoiceTransferReport','rawAttributes','fieldName','key','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','VIRTUAL','options'];(function(_0x4bc668,_0x35a590){var _0x162186=function(_0x3aeecf){while(--_0x3aeecf){_0x4bc668['push'](_0x4bc668['shift']());}};_0x162186(++_0x35a590);}(_0xe706,0xa3));var _0x6e70=function(_0x2730ad,_0x4d247d){_0x2730ad=_0x2730ad-0x0;var _0x1d4363=_0xe706[_0x2730ad];return _0x1d4363;};'use strict';var emlformat=require(_0x6e70('0x0'));var rimraf=require(_0x6e70('0x1'));var zipdir=require(_0x6e70('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6e70('0x3'));var moment=require(_0x6e70('0x4'));var BPromise=require(_0x6e70('0x5'));var Mustache=require(_0x6e70('0x6'));var util=require(_0x6e70('0x7'));var path=require(_0x6e70('0x8'));var sox=require(_0x6e70('0x9'));var csv=require(_0x6e70('0xa'));var ejs=require(_0x6e70('0xb'));var fs=require('fs');var fs_extra=require(_0x6e70('0xc'));var _=require(_0x6e70('0xd'));var squel=require(_0x6e70('0xe'));var crypto=require(_0x6e70('0xf'));var jsforce=require(_0x6e70('0x10'));var deskjs=require(_0x6e70('0x11'));var toCsv=require(_0x6e70('0xa'));var querystring=require(_0x6e70('0x12'));var Papa=require(_0x6e70('0x13'));var Redis=require(_0x6e70('0x14'));var authService=require(_0x6e70('0x15'));var qs=require(_0x6e70('0x16'));var as=require(_0x6e70('0x17'));var hardwareService=require(_0x6e70('0x18'));var logger=require(_0x6e70('0x19'))('api');var utils=require('../../config/utils');var config=require(_0x6e70('0x1a'));var licenseUtil=require(_0x6e70('0x1b'));var db=require(_0x6e70('0x1c'))['db'];function respondWithStatusCode(_0x27dd9b,_0x3b38f3){_0x3b38f3=_0x3b38f3||0xcc;return function(_0x310eb7){if(_0x310eb7){return _0x27dd9b[_0x6e70('0x1d')](_0x3b38f3);}return _0x27dd9b[_0x6e70('0x1e')](_0x3b38f3)['end']();};}function respondWithResult(_0x52737e,_0x48bc72){_0x48bc72=_0x48bc72||0xc8;return function(_0x257e81){if(_0x257e81){return _0x52737e['status'](_0x48bc72)['json'](_0x257e81);}};}function respondWithFilteredResult(_0x304716,_0x22c50c){return function(_0x5d9263){if(_0x5d9263){var _0x24f3ac=typeof _0x22c50c['offset']===_0x6e70('0x1f')&&typeof _0x22c50c[_0x6e70('0x20')]==='undefined';var _0x49029f=_0x5d9263[_0x6e70('0x21')];var _0x5ea7a5=_0x24f3ac?0x0:_0x22c50c[_0x6e70('0x22')];var _0x173afe=_0x24f3ac?_0x5d9263['count']:_0x22c50c['offset']+_0x22c50c[_0x6e70('0x20')];var _0x208e21;if(_0x173afe>=_0x49029f){_0x173afe=_0x49029f;_0x208e21=0xc8;}else{_0x208e21=0xce;}_0x304716[_0x6e70('0x1e')](_0x208e21);return _0x304716[_0x6e70('0x23')](_0x6e70('0x24'),_0x5ea7a5+'-'+_0x173afe+'/'+_0x49029f)[_0x6e70('0x25')](_0x5d9263);}return null;};}function patchUpdates(_0x1b2453){return function(_0x44a49f){try{jsonpatch[_0x6e70('0x26')](_0x44a49f,_0x1b2453,!![]);}catch(_0xb29a2a){return BPromise['reject'](_0xb29a2a);}return _0x44a49f[_0x6e70('0x27')]();};}function saveUpdates(_0x344b65,_0x27b294){return function(_0x502b2d){if(_0x502b2d){return _0x502b2d[_0x6e70('0x28')](_0x344b65)[_0x6e70('0x29')](function(_0x3337a6){return _0x3337a6;});}return null;};}function removeEntity(_0x50da2c,_0x10fc91){return function(_0x538b9c){if(_0x538b9c){return _0x538b9c['destroy']()['then'](function(){_0x50da2c[_0x6e70('0x1e')](0xcc)[_0x6e70('0x2a')]();});}};}function handleEntityNotFound(_0x51d292,_0x3ecdf1){return function(_0x1196ed){if(!_0x1196ed){_0x51d292['sendStatus'](0x194);}return _0x1196ed;};}function handleError(_0x338ad6,_0x67fb43){_0x67fb43=_0x67fb43||0x1f4;return function(_0x2bb231){logger['error'](_0x2bb231['stack']);if(_0x2bb231[_0x6e70('0x2b')]){delete _0x2bb231[_0x6e70('0x2b')];}_0x338ad6[_0x6e70('0x1e')](_0x67fb43)[_0x6e70('0x2c')](_0x2bb231);};}exports[_0x6e70('0x2d')]=function(_0x5d772a,_0x1952ea){var _0x406f29={},_0xecf336={},_0x2864a0={'count':0x0,'rows':[]};var _0x396a67=_[_0x6e70('0x2e')](db[_0x6e70('0x2f')][_0x6e70('0x30')],function(_0x3a0821){return{'name':_0x3a0821[_0x6e70('0x31')],'type':_0x3a0821['type'][_0x6e70('0x32')]};});_0xecf336['model']=_[_0x6e70('0x2e')](_0x396a67,'name');_0xecf336[_0x6e70('0x33')]=_[_0x6e70('0x34')](_0x5d772a[_0x6e70('0x33')]);_0xecf336['filters']=_[_0x6e70('0x35')](_0xecf336[_0x6e70('0x36')],_0xecf336['query']);_0x406f29[_0x6e70('0x37')]=_[_0x6e70('0x35')](_0xecf336['model'],qs[_0x6e70('0x38')](_0x5d772a[_0x6e70('0x33')][_0x6e70('0x38')]));_0x406f29[_0x6e70('0x37')]=_0x406f29[_0x6e70('0x37')][_0x6e70('0x39')]?_0x406f29[_0x6e70('0x37')]:_0xecf336[_0x6e70('0x36')];if(!_0x5d772a[_0x6e70('0x33')][_0x6e70('0x3a')]('nolimit')){_0x406f29[_0x6e70('0x20')]=qs['limit'](_0x5d772a[_0x6e70('0x33')][_0x6e70('0x20')]);_0x406f29[_0x6e70('0x22')]=qs[_0x6e70('0x22')](_0x5d772a[_0x6e70('0x33')][_0x6e70('0x22')]);}_0x406f29[_0x6e70('0x3b')]=qs[_0x6e70('0x3c')](_0x5d772a[_0x6e70('0x33')][_0x6e70('0x3c')]);_0x406f29[_0x6e70('0x3d')]=qs[_0x6e70('0x3e')](_[_0x6e70('0x3f')](_0x5d772a['query'],_0xecf336['filters']),_0x396a67);if(_0x5d772a['query'][_0x6e70('0x40')]){_0x406f29[_0x6e70('0x3d')]=_[_0x6e70('0x41')](_0x406f29[_0x6e70('0x3d')],{'$or':_[_0x6e70('0x2e')](_0x396a67,function(_0x3bdd87){if(_0x3bdd87['type']!==_0x6e70('0x42')){var _0x9e7ad2={};_0x9e7ad2[_0x3bdd87[_0x6e70('0x2b')]]={'$like':'%'+_0x5d772a[_0x6e70('0x33')][_0x6e70('0x40')]+'%'};return _0x9e7ad2;}})});}_0x406f29=_[_0x6e70('0x41')]({},_0x406f29,_0x5d772a[_0x6e70('0x43')]);var _0x16fc7d={'where':_0x406f29['where']};return db[_0x6e70('0x2f')][_0x6e70('0x21')](_0x16fc7d)[_0x6e70('0x29')](function(_0x31cad2){_0x2864a0[_0x6e70('0x21')]=_0x31cad2;if(_0x5d772a[_0x6e70('0x33')][_0x6e70('0x44')]){_0x406f29['include']=[{'all':!![]}];}return db['VoiceTransferReport']['findAll'](_0x406f29);})[_0x6e70('0x29')](function(_0x2b63cc){_0x2864a0[_0x6e70('0x45')]=_0x2b63cc;return _0x2864a0;})[_0x6e70('0x29')](respondWithFilteredResult(_0x1952ea,_0x406f29))[_0x6e70('0x46')](handleError(_0x1952ea,null));};exports['show']=function(_0x225d44,_0x2a58d7){var _0x2a2aca={'raw':!![],'where':{'id':_0x225d44['params']['id']}},_0x52b197={};_0x52b197['model']=_[_0x6e70('0x34')](db['VoiceTransferReport'][_0x6e70('0x30')]);_0x52b197[_0x6e70('0x33')]=_[_0x6e70('0x34')](_0x225d44[_0x6e70('0x33')]);_0x52b197['filters']=_[_0x6e70('0x35')](_0x52b197['model'],_0x52b197[_0x6e70('0x33')]);_0x2a2aca[_0x6e70('0x37')]=_[_0x6e70('0x35')](_0x52b197[_0x6e70('0x36')],qs['fields'](_0x225d44[_0x6e70('0x33')][_0x6e70('0x38')]));_0x2a2aca[_0x6e70('0x37')]=_0x2a2aca[_0x6e70('0x37')][_0x6e70('0x39')]?_0x2a2aca[_0x6e70('0x37')]:_0x52b197[_0x6e70('0x36')];if(_0x225d44['query'][_0x6e70('0x44')]){_0x2a2aca[_0x6e70('0x47')]=[{'all':!![]}];}_0x2a2aca=_[_0x6e70('0x41')]({},_0x2a2aca,_0x225d44[_0x6e70('0x43')]);return db[_0x6e70('0x2f')][_0x6e70('0x48')](_0x2a2aca)[_0x6e70('0x29')](handleEntityNotFound(_0x2a58d7,null))['then'](respondWithResult(_0x2a58d7,null))[_0x6e70('0x46')](handleError(_0x2a58d7,null));};exports['create']=function(_0x11794e,_0x3836e4){return db['VoiceTransferReport']['create'](_0x11794e[_0x6e70('0x49')],{})[_0x6e70('0x29')](respondWithResult(_0x3836e4,0xc9))[_0x6e70('0x46')](handleError(_0x3836e4,null));};exports['update']=function(_0x4af9b1,_0x238ebb){if(_0x4af9b1[_0x6e70('0x49')]['id']){delete _0x4af9b1[_0x6e70('0x49')]['id'];}return db[_0x6e70('0x2f')][_0x6e70('0x48')]({'where':{'id':_0x4af9b1[_0x6e70('0x4a')]['id']}})['then'](handleEntityNotFound(_0x238ebb,null))[_0x6e70('0x29')](saveUpdates(_0x4af9b1[_0x6e70('0x49')],null))[_0x6e70('0x29')](respondWithResult(_0x238ebb,null))[_0x6e70('0x46')](handleError(_0x238ebb,null));};exports[_0x6e70('0x4b')]=function(_0x4b354e,_0x4ae901){return db[_0x6e70('0x2f')][_0x6e70('0x48')]({'where':{'id':_0x4b354e[_0x6e70('0x4a')]['id']}})[_0x6e70('0x29')](handleEntityNotFound(_0x4ae901,null))[_0x6e70('0x29')](removeEntity(_0x4ae901,null))['catch'](handleError(_0x4ae901,null));};exports[_0x6e70('0x4c')]=function(_0x232366,_0x1fa320){return db[_0x6e70('0x2f')][_0x6e70('0x4c')]()['then'](respondWithResult(_0x1fa320,null))[_0x6e70('0x46')](handleError(_0x1fa320,null));};
\ No newline at end of file