Built motion from commit 25580385.|2.6.2
[motion2.git] / server / api / intFreshdeskField / intFreshdeskField.controller.js
index be430cf..aab1523 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3eea=['FreshdeskField','includeAll','include','findAll','rows','catch','show','params','rawAttributes','fields','find','create','body','update','html-pdf','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','squel','jsforce','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','end','json','count','offset','limit','status','set','Content-Range','apply','reject','save','then','destroy','error','stack','name','send','index','type','key','model','map','query','keys','filters','intersection','attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options'];(function(_0x50a267,_0x6fa593){var _0x105525=function(_0x423187){while(--_0x423187){_0x50a267['push'](_0x50a267['shift']());}};_0x105525(++_0x6fa593);}(_0x3eea,0x1ca));var _0xa3ee=function(_0x5efba9,_0x5e5921){_0x5efba9=_0x5efba9-0x0;var _0x14d9c5=_0x3eea[_0x5efba9];return _0x14d9c5;};'use strict';var pdf=require(_0xa3ee('0x0'));var emlformat=require('eml-format');var rimraf=require(_0xa3ee('0x1'));var zipdir=require(_0xa3ee('0x2'));var jsonpatch=require(_0xa3ee('0x3'));var rp=require(_0xa3ee('0x4'));var moment=require(_0xa3ee('0x5'));var BPromise=require(_0xa3ee('0x6'));var Mustache=require(_0xa3ee('0x7'));var util=require(_0xa3ee('0x8'));var path=require(_0xa3ee('0x9'));var sox=require(_0xa3ee('0xa'));var csv=require(_0xa3ee('0xb'));var ejs=require('ejs');var fs=require('fs');var _=require('lodash');var squel=require(_0xa3ee('0xc'));var crypto=require('crypto');var jsforce=require(_0xa3ee('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xa3ee('0xb'));var querystring=require('querystring');var Papa=require(_0xa3ee('0xe'));var Redis=require('ioredis');var authService=require(_0xa3ee('0xf'));var qs=require(_0xa3ee('0x10'));var as=require(_0xa3ee('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa3ee('0x12'))(_0xa3ee('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xa3ee('0x14'));var db=require(_0xa3ee('0x15'))['db'];function respondWithStatusCode(_0x403518,_0x4363d1){_0x4363d1=_0x4363d1||0xcc;return function(_0x594c88){if(_0x594c88){return _0x403518[_0xa3ee('0x16')](_0x4363d1);}return _0x403518['status'](_0x4363d1)[_0xa3ee('0x17')]();};}function respondWithResult(_0x20535f,_0x2c34cf){_0x2c34cf=_0x2c34cf||0xc8;return function(_0x150e20){if(_0x150e20){return _0x20535f['status'](_0x2c34cf)[_0xa3ee('0x18')](_0x150e20);}};}function respondWithFilteredResult(_0x23df7d,_0x5da681){return function(_0x5358aa){if(_0x5358aa){var _0x4b2c66=_0x5358aa[_0xa3ee('0x19')],_0x40decb=_0x5da681['offset'],_0x7277cd=_0x5da681[_0xa3ee('0x1a')]+_0x5da681[_0xa3ee('0x1b')],_0x354dd5;if(_0x7277cd>=_0x4b2c66){_0x7277cd=_0x4b2c66;_0x354dd5=0xc8;}else{_0x354dd5=0xce;}_0x23df7d[_0xa3ee('0x1c')](_0x354dd5);return _0x23df7d[_0xa3ee('0x1d')](_0xa3ee('0x1e'),_0x40decb+'-'+_0x7277cd+'/'+_0x4b2c66)['json'](_0x5358aa);}return null;};}function patchUpdates(_0x377b9d){return function(_0x18b738){try{jsonpatch[_0xa3ee('0x1f')](_0x18b738,_0x377b9d,!![]);}catch(_0xad8187){return BPromise[_0xa3ee('0x20')](_0xad8187);}return _0x18b738[_0xa3ee('0x21')]();};}function saveUpdates(_0x4f8c56,_0x3f5d70){return function(_0x446971){if(_0x446971){return _0x446971['update'](_0x4f8c56)[_0xa3ee('0x22')](function(_0x4e7f32){return _0x4e7f32;});}return null;};}function removeEntity(_0x2fab5,_0x29df43){return function(_0x1d3022){if(_0x1d3022){return _0x1d3022[_0xa3ee('0x23')]()[_0xa3ee('0x22')](function(){_0x2fab5[_0xa3ee('0x1c')](0xcc)[_0xa3ee('0x17')]();});}};}function handleEntityNotFound(_0x12108e,_0x5ae0a1){return function(_0x3aa81d){if(!_0x3aa81d){_0x12108e['sendStatus'](0x194);}return _0x3aa81d;};}function handleError(_0x1998b9,_0x1dca29){_0x1dca29=_0x1dca29||0x1f4;return function(_0x157071){logger[_0xa3ee('0x24')](_0x157071[_0xa3ee('0x25')]);if(_0x157071['name']){delete _0x157071[_0xa3ee('0x26')];}_0x1998b9[_0xa3ee('0x1c')](_0x1dca29)[_0xa3ee('0x27')](_0x157071);};}exports[_0xa3ee('0x28')]=function(_0x42e97c,_0xa9e4d6){var _0x443507={},_0x30b12b={},_0xea54fe={'count':0x0,'rows':[]};var _0x298cb4=_['map'](db['FreshdeskField']['rawAttributes'],function(_0x78e581){return{'name':_0x78e581['fieldName'],'type':_0x78e581[_0xa3ee('0x29')][_0xa3ee('0x2a')]};});_0x30b12b[_0xa3ee('0x2b')]=_[_0xa3ee('0x2c')](_0x298cb4,_0xa3ee('0x26'));_0x30b12b[_0xa3ee('0x2d')]=_[_0xa3ee('0x2e')](_0x42e97c[_0xa3ee('0x2d')]);_0x30b12b[_0xa3ee('0x2f')]=_[_0xa3ee('0x30')](_0x30b12b['model'],_0x30b12b[_0xa3ee('0x2d')]);_0x443507['attributes']=_[_0xa3ee('0x30')](_0x30b12b[_0xa3ee('0x2b')],qs['fields'](_0x42e97c[_0xa3ee('0x2d')]['fields']));_0x443507[_0xa3ee('0x31')]=_0x443507['attributes'][_0xa3ee('0x32')]?_0x443507[_0xa3ee('0x31')]:_0x30b12b[_0xa3ee('0x2b')];if(!_0x42e97c[_0xa3ee('0x2d')][_0xa3ee('0x33')]('nolimit')){_0x443507[_0xa3ee('0x1b')]=qs[_0xa3ee('0x1b')](_0x42e97c[_0xa3ee('0x2d')]['limit']);_0x443507[_0xa3ee('0x1a')]=qs['offset'](_0x42e97c[_0xa3ee('0x2d')]['offset']);}_0x443507[_0xa3ee('0x34')]=qs['sort'](_0x42e97c[_0xa3ee('0x2d')][_0xa3ee('0x35')]);_0x443507[_0xa3ee('0x36')]=qs[_0xa3ee('0x2f')](_[_0xa3ee('0x37')](_0x42e97c[_0xa3ee('0x2d')],_0x30b12b[_0xa3ee('0x2f')]),_0x298cb4);if(_0x42e97c[_0xa3ee('0x2d')][_0xa3ee('0x38')]){_0x443507[_0xa3ee('0x36')]=_[_0xa3ee('0x39')](_0x443507[_0xa3ee('0x36')],{'$or':_[_0xa3ee('0x2c')](_0x298cb4,function(_0x595b55){if(_0x595b55[_0xa3ee('0x29')]!==_0xa3ee('0x3a')){var _0x2aec25={};_0x2aec25[_0x595b55[_0xa3ee('0x26')]]={'$like':'%'+_0x42e97c['query'][_0xa3ee('0x38')]+'%'};return _0x2aec25;}})});}_0x443507=_[_0xa3ee('0x39')]({},_0x443507,_0x42e97c[_0xa3ee('0x3b')]);var _0x5b95e3={'where':_0x443507[_0xa3ee('0x36')]};return db[_0xa3ee('0x3c')]['count'](_0x5b95e3)[_0xa3ee('0x22')](function(_0x3ecbe6){_0xea54fe['count']=_0x3ecbe6;if(_0x42e97c[_0xa3ee('0x2d')][_0xa3ee('0x3d')]){_0x443507[_0xa3ee('0x3e')]=[{'all':!![]}];}return db[_0xa3ee('0x3c')][_0xa3ee('0x3f')](_0x443507);})[_0xa3ee('0x22')](function(_0x2ca04f){_0xea54fe[_0xa3ee('0x40')]=_0x2ca04f;return _0xea54fe;})[_0xa3ee('0x22')](respondWithFilteredResult(_0xa9e4d6,_0x443507))[_0xa3ee('0x41')](handleError(_0xa9e4d6,null));};exports[_0xa3ee('0x42')]=function(_0x549d74,_0x5aa4b3){var _0x548534={'raw':!![],'where':{'id':_0x549d74[_0xa3ee('0x43')]['id']}},_0x45aeec={};_0x45aeec['model']=_[_0xa3ee('0x2e')](db[_0xa3ee('0x3c')][_0xa3ee('0x44')]);_0x45aeec['query']=_[_0xa3ee('0x2e')](_0x549d74['query']);_0x45aeec[_0xa3ee('0x2f')]=_[_0xa3ee('0x30')](_0x45aeec[_0xa3ee('0x2b')],_0x45aeec[_0xa3ee('0x2d')]);_0x548534[_0xa3ee('0x31')]=_[_0xa3ee('0x30')](_0x45aeec[_0xa3ee('0x2b')],qs[_0xa3ee('0x45')](_0x549d74[_0xa3ee('0x2d')][_0xa3ee('0x45')]));_0x548534[_0xa3ee('0x31')]=_0x548534[_0xa3ee('0x31')][_0xa3ee('0x32')]?_0x548534[_0xa3ee('0x31')]:_0x45aeec[_0xa3ee('0x2b')];if(_0x549d74[_0xa3ee('0x2d')][_0xa3ee('0x3d')]){_0x548534[_0xa3ee('0x3e')]=[{'all':!![]}];}_0x548534=_['merge']({},_0x548534,_0x549d74[_0xa3ee('0x3b')]);return db[_0xa3ee('0x3c')][_0xa3ee('0x46')](_0x548534)[_0xa3ee('0x22')](handleEntityNotFound(_0x5aa4b3,null))['then'](respondWithResult(_0x5aa4b3,null))[_0xa3ee('0x41')](handleError(_0x5aa4b3,null));};exports['create']=function(_0x3d6512,_0x3679b5){return db[_0xa3ee('0x3c')][_0xa3ee('0x47')](_0x3d6512[_0xa3ee('0x48')],{})[_0xa3ee('0x22')](respondWithResult(_0x3679b5,0xc9))[_0xa3ee('0x41')](handleError(_0x3679b5,null));};exports[_0xa3ee('0x49')]=function(_0x3c3677,_0xd6160e){if(_0x3c3677['body']['id']){delete _0x3c3677[_0xa3ee('0x48')]['id'];}return db['FreshdeskField']['find']({'where':{'id':_0x3c3677[_0xa3ee('0x43')]['id']}})[_0xa3ee('0x22')](handleEntityNotFound(_0xd6160e,null))[_0xa3ee('0x22')](saveUpdates(_0x3c3677[_0xa3ee('0x48')],null))[_0xa3ee('0x22')](respondWithResult(_0xd6160e,null))[_0xa3ee('0x41')](handleError(_0xd6160e,null));};exports[_0xa3ee('0x23')]=function(_0x501dad,_0x2d67f7){return db[_0xa3ee('0x3c')]['find']({'where':{'id':_0x501dad[_0xa3ee('0x43')]['id']}})[_0xa3ee('0x22')](handleEntityNotFound(_0x2d67f7,null))[_0xa3ee('0x22')](removeEntity(_0x2d67f7,null))['catch'](handleError(_0x2d67f7,null));};
\ No newline at end of file
+var _0x3667=['../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy','stack','name','index','map','FreshdeskField','rawAttributes','fieldName','type','query','keys','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','pick','where','merge','options','includeAll','findAll','catch','params','include','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x90ad39,_0x1b90f1){var _0x316910=function(_0x48205d){while(--_0x48205d){_0x90ad39['push'](_0x90ad39['shift']());}};_0x316910(++_0x1b90f1);}(_0x3667,0xcd));var _0x7366=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3667[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x7366('0x0'));var rimraf=require(_0x7366('0x1'));var zipdir=require(_0x7366('0x2'));var jsonpatch=require(_0x7366('0x3'));var rp=require(_0x7366('0x4'));var moment=require('moment');var BPromise=require(_0x7366('0x5'));var Mustache=require(_0x7366('0x6'));var util=require('util');var path=require(_0x7366('0x7'));var sox=require(_0x7366('0x8'));var csv=require(_0x7366('0x9'));var ejs=require(_0x7366('0xa'));var fs=require('fs');var fs_extra=require(_0x7366('0xb'));var _=require('lodash');var squel=require(_0x7366('0xc'));var crypto=require(_0x7366('0xd'));var jsforce=require(_0x7366('0xe'));var deskjs=require(_0x7366('0xf'));var toCsv=require(_0x7366('0x9'));var querystring=require(_0x7366('0x10'));var Papa=require(_0x7366('0x11'));var Redis=require(_0x7366('0x12'));var authService=require(_0x7366('0x13'));var qs=require(_0x7366('0x14'));var as=require(_0x7366('0x15'));var hardwareService=require(_0x7366('0x16'));var logger=require(_0x7366('0x17'))(_0x7366('0x18'));var utils=require(_0x7366('0x19'));var config=require(_0x7366('0x1a'));var licenseUtil=require(_0x7366('0x1b'));var db=require(_0x7366('0x1c'))['db'];function respondWithStatusCode(_0xd5bac8,_0x3e3a73){_0x3e3a73=_0x3e3a73||0xcc;return function(_0x262659){if(_0x262659){return _0xd5bac8[_0x7366('0x1d')](_0x3e3a73);}return _0xd5bac8[_0x7366('0x1e')](_0x3e3a73)[_0x7366('0x1f')]();};}function respondWithResult(_0x308253,_0x27500c){_0x27500c=_0x27500c||0xc8;return function(_0x22562f){if(_0x22562f){return _0x308253[_0x7366('0x1e')](_0x27500c)['json'](_0x22562f);}};}function respondWithFilteredResult(_0x23e763,_0x308752){return function(_0x338719){if(_0x338719){var _0x2c0422=typeof _0x308752[_0x7366('0x20')]===_0x7366('0x21')&&typeof _0x308752[_0x7366('0x22')]===_0x7366('0x21');var _0x83e5d5=_0x338719[_0x7366('0x23')];var _0x1a71f5=_0x2c0422?0x0:_0x308752['offset'];var _0x208ac8=_0x2c0422?_0x338719['count']:_0x308752[_0x7366('0x20')]+_0x308752[_0x7366('0x22')];var _0x3f23cd;if(_0x208ac8>=_0x83e5d5){_0x208ac8=_0x83e5d5;_0x3f23cd=0xc8;}else{_0x3f23cd=0xce;}_0x23e763['status'](_0x3f23cd);return _0x23e763[_0x7366('0x24')](_0x7366('0x25'),_0x1a71f5+'-'+_0x208ac8+'/'+_0x83e5d5)[_0x7366('0x26')](_0x338719);}return null;};}function patchUpdates(_0x532ce2){return function(_0x16e038){try{jsonpatch[_0x7366('0x27')](_0x16e038,_0x532ce2,!![]);}catch(_0x482946){return BPromise[_0x7366('0x28')](_0x482946);}return _0x16e038[_0x7366('0x29')]();};}function saveUpdates(_0xaab659,_0x1a12d2){return function(_0x3c30a2){if(_0x3c30a2){return _0x3c30a2[_0x7366('0x2a')](_0xaab659)[_0x7366('0x2b')](function(_0x22ed7e){return _0x22ed7e;});}return null;};}function removeEntity(_0x2095a1,_0x301220){return function(_0x12aed6){if(_0x12aed6){return _0x12aed6[_0x7366('0x2c')]()[_0x7366('0x2b')](function(){_0x2095a1['status'](0xcc)[_0x7366('0x1f')]();});}};}function handleEntityNotFound(_0x4fe7cf,_0x379146){return function(_0x4ab987){if(!_0x4ab987){_0x4fe7cf['sendStatus'](0x194);}return _0x4ab987;};}function handleError(_0x383055,_0x4d4cb5){_0x4d4cb5=_0x4d4cb5||0x1f4;return function(_0x254374){logger['error'](_0x254374[_0x7366('0x2d')]);if(_0x254374[_0x7366('0x2e')]){delete _0x254374['name'];}_0x383055[_0x7366('0x1e')](_0x4d4cb5)['send'](_0x254374);};}exports[_0x7366('0x2f')]=function(_0x2b61af,_0x4a4e67){var _0x3cef4a={},_0x507baf={},_0xc58ac7={'count':0x0,'rows':[]};var _0x46f80f=_[_0x7366('0x30')](db[_0x7366('0x31')][_0x7366('0x32')],function(_0x5e075c){return{'name':_0x5e075c[_0x7366('0x33')],'type':_0x5e075c[_0x7366('0x34')]['key']};});_0x507baf['model']=_['map'](_0x46f80f,'name');_0x507baf[_0x7366('0x35')]=_[_0x7366('0x36')](_0x2b61af[_0x7366('0x35')]);_0x507baf[_0x7366('0x37')]=_['intersection'](_0x507baf[_0x7366('0x38')],_0x507baf[_0x7366('0x35')]);_0x3cef4a[_0x7366('0x39')]=_[_0x7366('0x3a')](_0x507baf['model'],qs[_0x7366('0x3b')](_0x2b61af[_0x7366('0x35')]['fields']));_0x3cef4a[_0x7366('0x39')]=_0x3cef4a[_0x7366('0x39')][_0x7366('0x3c')]?_0x3cef4a[_0x7366('0x39')]:_0x507baf[_0x7366('0x38')];if(!_0x2b61af[_0x7366('0x35')][_0x7366('0x3d')](_0x7366('0x3e'))){_0x3cef4a[_0x7366('0x22')]=qs['limit'](_0x2b61af[_0x7366('0x35')][_0x7366('0x22')]);_0x3cef4a['offset']=qs[_0x7366('0x20')](_0x2b61af[_0x7366('0x35')][_0x7366('0x20')]);}_0x3cef4a['order']=qs[_0x7366('0x3f')](_0x2b61af['query'][_0x7366('0x3f')]);_0x3cef4a['where']=qs['filters'](_[_0x7366('0x40')](_0x2b61af['query'],_0x507baf[_0x7366('0x37')]),_0x46f80f);if(_0x2b61af[_0x7366('0x35')]['filter']){_0x3cef4a[_0x7366('0x41')]=_['merge'](_0x3cef4a[_0x7366('0x41')],{'$or':_[_0x7366('0x30')](_0x46f80f,function(_0x5e58c5){if(_0x5e58c5[_0x7366('0x34')]!=='VIRTUAL'){var _0x8ed827={};_0x8ed827[_0x5e58c5[_0x7366('0x2e')]]={'$like':'%'+_0x2b61af[_0x7366('0x35')]['filter']+'%'};return _0x8ed827;}})});}_0x3cef4a=_[_0x7366('0x42')]({},_0x3cef4a,_0x2b61af[_0x7366('0x43')]);var _0x14ec01={'where':_0x3cef4a[_0x7366('0x41')]};return db[_0x7366('0x31')][_0x7366('0x23')](_0x14ec01)[_0x7366('0x2b')](function(_0x4d45dd){_0xc58ac7['count']=_0x4d45dd;if(_0x2b61af[_0x7366('0x35')][_0x7366('0x44')]){_0x3cef4a['include']=[{'all':!![]}];}return db[_0x7366('0x31')][_0x7366('0x45')](_0x3cef4a);})['then'](function(_0x432f79){_0xc58ac7['rows']=_0x432f79;return _0xc58ac7;})[_0x7366('0x2b')](respondWithFilteredResult(_0x4a4e67,_0x3cef4a))[_0x7366('0x46')](handleError(_0x4a4e67,null));};exports['show']=function(_0x5b5a95,_0x3bc879){var _0xedc3c7={'raw':!![],'where':{'id':_0x5b5a95[_0x7366('0x47')]['id']}},_0x2ac2e6={};_0x2ac2e6['model']=_[_0x7366('0x36')](db[_0x7366('0x31')][_0x7366('0x32')]);_0x2ac2e6[_0x7366('0x35')]=_[_0x7366('0x36')](_0x5b5a95[_0x7366('0x35')]);_0x2ac2e6[_0x7366('0x37')]=_['intersection'](_0x2ac2e6[_0x7366('0x38')],_0x2ac2e6[_0x7366('0x35')]);_0xedc3c7[_0x7366('0x39')]=_['intersection'](_0x2ac2e6[_0x7366('0x38')],qs[_0x7366('0x3b')](_0x5b5a95['query'][_0x7366('0x3b')]));_0xedc3c7[_0x7366('0x39')]=_0xedc3c7[_0x7366('0x39')]['length']?_0xedc3c7[_0x7366('0x39')]:_0x2ac2e6[_0x7366('0x38')];if(_0x5b5a95[_0x7366('0x35')]['includeAll']){_0xedc3c7[_0x7366('0x48')]=[{'all':!![]}];}_0xedc3c7=_[_0x7366('0x42')]({},_0xedc3c7,_0x5b5a95[_0x7366('0x43')]);return db['FreshdeskField'][_0x7366('0x49')](_0xedc3c7)[_0x7366('0x2b')](handleEntityNotFound(_0x3bc879,null))[_0x7366('0x2b')](respondWithResult(_0x3bc879,null))[_0x7366('0x46')](handleError(_0x3bc879,null));};exports['create']=function(_0x3725aa,_0x2d1c52){return db[_0x7366('0x31')][_0x7366('0x4a')](_0x3725aa[_0x7366('0x4b')],{})[_0x7366('0x2b')](respondWithResult(_0x2d1c52,0xc9))[_0x7366('0x46')](handleError(_0x2d1c52,null));};exports[_0x7366('0x2a')]=function(_0x2ad8bf,_0x59f078){if(_0x2ad8bf[_0x7366('0x4b')]['id']){delete _0x2ad8bf[_0x7366('0x4b')]['id'];}return db['FreshdeskField'][_0x7366('0x49')]({'where':{'id':_0x2ad8bf[_0x7366('0x47')]['id']}})['then'](handleEntityNotFound(_0x59f078,null))[_0x7366('0x2b')](saveUpdates(_0x2ad8bf['body'],null))[_0x7366('0x2b')](respondWithResult(_0x59f078,null))[_0x7366('0x46')](handleError(_0x59f078,null));};exports[_0x7366('0x2c')]=function(_0x22026a,_0x588b31){return db[_0x7366('0x31')][_0x7366('0x49')]({'where':{'id':_0x22026a[_0x7366('0x47')]['id']}})[_0x7366('0x2b')](handleEntityNotFound(_0x588b31,null))[_0x7366('0x2b')](removeEntity(_0x588b31,null))[_0x7366('0x46')](handleError(_0x588b31,null));};
\ No newline at end of file