f4e266c2b21e50eaa6d285bd29b5d1a5a0dcf2cc
[motion2.git] / server / services / agi / scripts / index.js
1 // *************************************************************************
2 // *                                                                       *
3 // * xCALLY Motion -  The Omnichannel Contact Center                       *
4 // * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
5 // *                                                                       *
6 // *************************************************************************
7 // *                                                                       *
8 // * Email: info@xcally.com                                                *
9 // * Website: https://www.xcally.com                                       *
10 // *                                                                       *
11 // *************************************************************************
12 // *                                                                       *
13 // * The SOFTWARE PRODUCT is protected by copyright laws and international *
14 // * copyright treaties, as well as other intellectual property laws and   *
15 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                         *
16 // *                                                                       *
17 // *************************************************************************
18 var _0x5e4d=['./sestek','../../../config/logger','protocol','https:','statusCode','error','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusMessage','createWriteStream','finish','info','finish\x20download\x20file','unlink','download\x20error','pipe','end','host','WHAT_EVER','get','data','wav','error\x20convert','finish\x20to\x20convert','start','resolve','tmp','generate','.wav','writeFileSync','base64','then','777','readFileSync','googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','input','voice','MP3','text:synthesize','POST','from','audioContent','writeFile','chmodSync','googleCloudTTS\x20path','split','utf8','application/x-www-form-urlencoded','stringify','jQ1olc','generic','slice','parse\x20response\x20failed:\x0a','lang\x20\x22','\x22\x20might\x20not\x20exist','.mp3','goggleTTS\x20path','googleASR','asr','uri','results','alternatives','transcript','join','map','confidence','googleASR\x20transcription','googleASR\x20confidence','[%s]\x20%s:%s','name','result','source','action','actionIncomplete','fulfillment','speech','code','metadata','endConversation','isFallbackIntent','googleDialogflowV2','replace','sessionPath','detectIntent','queryResult','diagnosticInfo','fields','end_conversation','boolValue','intent','displayName','languageCode','queryText','responseId','fulfillmentText','tildeASR','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','awsPolly','polly','awsLex','lex','ispeechTTS','format','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','ispeechASR','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','model=%s','freeform=3','sestekNDA','nda','text','channelData','CustomActionData','AudioFromTts','audiofile','dirName','apiai-promise','md5','path','request-promise','sox','google-tts-api','parse','util','./aws','./google'];(function(_0xabc018,_0x481ed6){var _0x2a85cc=function(_0x1e6bed){while(--_0x1e6bed){_0xabc018['push'](_0xabc018['shift']());}};_0x2a85cc(++_0x481ed6);}(_0x5e4d,0xf8));var _0xd5e4=function(_0x2d5f72,_0xff8b83){_0x2d5f72=_0x2d5f72-0x0;var _0x1dfbca=_0x5e4d[_0x2d5f72];return _0x1dfbca;};'use strict';var apiai=require(_0xd5e4('0x0'));var BPromise=require('bluebird');var dialogflow=require('dialogflow');var fs=require('fs');var http=require('http');var https=require('https');var md5=require(_0xd5e4('0x1'));var path=require(_0xd5e4('0x2'));var querystring=require('querystring');var rp=require(_0xd5e4('0x3'));var rs=require('randomstring');var sox=require(_0xd5e4('0x4'));var tts=require(_0xd5e4('0x5'));var urlParse=require('url')[_0xd5e4('0x6')];var util=require(_0xd5e4('0x7'));var aws=require(_0xd5e4('0x8'));var google=require(_0xd5e4('0x9'));var sestek=require(_0xd5e4('0xa'));var tilde=require('./tilde');var logger=require(_0xd5e4('0xb'))('agi');var ISPEECH_API='https://api.ispeech.org/api/rest';function downloadFile(_0x418892,_0x54925a){return new BPromise(function(_0x2366e1,_0x5e400f){var _0xf23d28=urlParse(_0x418892);var _0x3b8503=_0xf23d28[_0xd5e4('0xc')]===_0xd5e4('0xd')?https:http;var _0x28fe1a={'host':_0xf23d28['host'],'path':_0xf23d28[_0xd5e4('0x2')],'headers':{'user-agent':'WHAT_EVER'}};_0x3b8503['get'](_0x28fe1a,function(_0x96c642){if(_0x96c642[_0xd5e4('0xe')]!==0xc8){logger[_0xd5e4('0xf')](_0xd5e4('0x10')+_0x418892+_0xd5e4('0x11')+_0x96c642['statusCode']+'\x20('+_0x96c642[_0xd5e4('0x12')]+')');_0x5e400f(new Error(_0xd5e4('0x10')+_0x418892+'\x20failed,\x20status\x20code\x20=\x20'+_0x96c642[_0xd5e4('0xe')]+'\x20('+_0x96c642['statusMessage']+')'));return;}var _0x3e5ff4=fs[_0xd5e4('0x13')](_0x54925a);_0x3e5ff4['on'](_0xd5e4('0x14'),function(){logger[_0xd5e4('0x15')](_0xd5e4('0x16'));_0x3e5ff4['close'](_0x2366e1);});_0x3e5ff4['on']('error',function(_0x272a20){fs[_0xd5e4('0x17')](_0x54925a);logger[_0xd5e4('0xf')](_0xd5e4('0x18'),_0x272a20);_0x5e400f(_0x272a20);});_0x96c642[_0xd5e4('0x19')](_0x3e5ff4);})['on']('error',function(_0x21a902){logger['error'](_0x21a902);_0x5e400f(_0x21a902);})[_0xd5e4('0x1a')]();});}function uploadFile(_0x5ec0c7){return new BPromise(function(_0x430acd,_0x5dc183){var _0x4da02f=urlParse(_0x5ec0c7);var _0x48a35a=_0x4da02f[_0xd5e4('0xc')]===_0xd5e4('0xd')?https:http;var _0x5763c1={'host':_0x4da02f[_0xd5e4('0x1b')],'path':_0x4da02f[_0xd5e4('0x2')],'headers':{'user-agent':_0xd5e4('0x1c')}};_0x48a35a[_0xd5e4('0x1d')](_0x5763c1,function(_0x1256fa){if(_0x1256fa['statusCode']!==0xc8){_0x5dc183(new Error(_0xd5e4('0x10')+_0x5ec0c7+_0xd5e4('0x11')+_0x1256fa[_0xd5e4('0xe')]+'\x20('+_0x1256fa[_0xd5e4('0x12')]+')'));return;}var _0x3e33e4='';_0x1256fa['on'](_0xd5e4('0x1e'),function(_0x5e303b){_0x3e33e4+=_0x5e303b;});_0x1256fa['on'](_0xd5e4('0x1a'),function(){_0x430acd(_0x3e33e4);});})['on'](_0xd5e4('0xf'),function(_0x5ab782){_0x5dc183(_0x5ab782);})[_0xd5e4('0x1a')]();});}function convertFile(_0x387760,_0x40da77){return new BPromise(function(_0x2a8a9f,_0x5c3856){var _0x401e7e=sox['transcode'](_0x387760,_0x40da77,{'sampleRate':0x1f40,'format':_0xd5e4('0x1f'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x401e7e['on']('error',function(_0x538358){logger['error'](_0xd5e4('0x20'),_0x538358);_0x5c3856(_0x538358);});_0x401e7e['on']('end',function(){logger[_0xd5e4('0x15')](_0xd5e4('0x21'));_0x2a8a9f();});_0x401e7e[_0xd5e4('0x22')]();});}function base64Decode(_0x3b89b3,_0x55a67b){var _0x1ee1db=path[_0xd5e4('0x23')](__dirname,_0xd5e4('0x24'),rs[_0xd5e4('0x25')](0x4)+_0xd5e4('0x26'));fs[_0xd5e4('0x27')](_0x1ee1db,_0x3b89b3,_0xd5e4('0x28'));return convertFile(_0x1ee1db,_0x55a67b)[_0xd5e4('0x29')](function(){try{fs[_0xd5e4('0x17')](_0x1ee1db);fs['chmodSync'](_0x55a67b,_0xd5e4('0x2a'));}catch(_0x4f7350){logger[_0xd5e4('0xf')](_0x4f7350);}return _0x55a67b['split']('.')[0x0];});}function base64Encode(_0x40f29e){var _0x259d4d=fs[_0xd5e4('0x2b')](_0x40f29e);return new Buffer(_0x259d4d)['toString'](_0xd5e4('0x28'));}exports[_0xd5e4('0x2c')]=function(_0x1da469,_0x928f81,_0x58f028,_0x22c97b,_0x52a60b,_0x27f243){var _0x1c33d4,_0x506aee;var _0x538cef=_0xd5e4('0x2d');var _0x59421c=_0xd5e4('0x2e')+_0x1da469;var _0x59858f={};if(_0x928f81==='ssml'){_0x59858f['input']={'ssml':_0x58f028};}else{_0x59858f[_0xd5e4('0x2f')]={'text':_0x58f028};};_0x59858f[_0xd5e4('0x30')]={'languageCode':_0x22c97b,'ssmlGender':_0x52a60b};_0x59858f['audioConfig']={'audioEncoding':_0xd5e4('0x31'),'sampleRateHertz':0x1f40};var _0x224400={'url':_0x538cef+_0xd5e4('0x32')+_0x59421c,'method':_0xd5e4('0x33'),'json':!![],'body':_0x59858f};return rp(_0x224400)['then'](function(_0x483628){return new BPromise(function(_0x4edd65,_0x1143ec){_0x1c33d4=path[_0xd5e4('0x23')](__dirname,_0xd5e4('0x24'),rs[_0xd5e4('0x25')](0x4)+'.mp3');var _0x5a0121=Buffer[_0xd5e4('0x34')](_0x483628[_0xd5e4('0x35')],'base64');return fs[_0xd5e4('0x36')](_0x1c33d4,_0x5a0121,function(_0x2662da){_0x1143ec(_0x2662da);},function(_0x5cf94c){fs[_0xd5e4('0x37')](_0x1c33d4,_0xd5e4('0x2a'));_0x4edd65(_0x5cf94c);});});})[_0xd5e4('0x29')](function(_0x5c3e49){_0x506aee=path['resolve'](__dirname,_0xd5e4('0x24'),rs[_0xd5e4('0x25')](0x4)+_0xd5e4('0x26'));return convertFile(_0x1c33d4,_0x506aee);})[_0xd5e4('0x29')](function(){try{fs[_0xd5e4('0x17')](_0x1c33d4);fs[_0xd5e4('0x37')](_0x506aee,'777');}catch(_0x3f0966){logger['error'](_0x3f0966);}logger[_0xd5e4('0x15')](_0xd5e4('0x38'),_0x506aee[_0xd5e4('0x39')]('.')[0x0]);return _0x506aee['split']('.')[0x0];});};exports['googleTTS']=function(_0x9b0313,_0x2eac93){var _0x277e67='https://translate.google.com/_/TranslateWebserverUi/data/batchexecute';var _0x24f498,_0x1a0ef5;var _0x268ceb;var _0x2ca59b={'encoding':_0xd5e4('0x3a'),'method':_0xd5e4('0x33'),'timeout':0x2710,'url':_0x277e67,'headers':{'Content-Type':_0xd5e4('0x3b')},'body':'f.req='+encodeURIComponent(JSON[_0xd5e4('0x3c')]([[[_0xd5e4('0x3d'),JSON['stringify']([_0x9b0313,_0x2eac93||'en',![],'null']),null,_0xd5e4('0x3e')]]]))};return rp(_0x2ca59b)['then'](function(_0x2fd47f){try{_0x268ceb=eval(_0x2fd47f[_0xd5e4('0x3f')](0x5))[0x0][0x2];}catch(_0x1b4b98){throw new Error(_0xd5e4('0x40')+_0x2fd47f['data']);}if(!_0x268ceb){if(_0x9b0313['length']>0xc8){throw new Error('text\x20length\x20limit\x20reached');}else{throw new Error(_0xd5e4('0x41')+_0x2eac93+_0xd5e4('0x42'));}}try{_0x268ceb=eval(_0x268ceb)[0x0];}catch(_0xd63811){throw new Error(_0xd5e4('0x40')+res[_0xd5e4('0x1e')]);}const _0x4c804c=_0x268ceb;_0x24f498=path[_0xd5e4('0x23')](__dirname,'tmp',rs[_0xd5e4('0x25')](0x4)+_0xd5e4('0x43'));fs[_0xd5e4('0x27')](_0x24f498,_0x268ceb,{'encoding':_0xd5e4('0x28')});_0x1a0ef5=path[_0xd5e4('0x23')](__dirname,_0xd5e4('0x24'),rs[_0xd5e4('0x25')](0x4)+_0xd5e4('0x26'));return convertFile(_0x24f498,_0x1a0ef5);})['then'](function(){try{fs[_0xd5e4('0x17')](_0x24f498);fs[_0xd5e4('0x37')](_0x1a0ef5,'777');}catch(_0x46d3bf){logger['error'](_0x46d3bf);}logger[_0xd5e4('0x15')](_0xd5e4('0x44'),_0x1a0ef5[_0xd5e4('0x39')]('.')[0x0]);return _0x1a0ef5[_0xd5e4('0x39')]('.')[0x0];});};exports[_0xd5e4('0x45')]=function(_0x1da5e9,_0x173765,_0x56ae8e){return google[_0xd5e4('0x46')](_0x1da5e9,_0x173765,_0x56ae8e)['then'](function(_0x353605){logger['info'](_0x353605[_0xd5e4('0x47')]);return rp(_0x353605);})[_0xd5e4('0x29')](function(_0x2828c4){var _0x2f9a84='';var _0x23de87=0x0;try{fs[_0xd5e4('0x17')](_0x1da5e9);}catch(_0x1e97e7){logger[_0xd5e4('0xf')](_0x1e97e7);}if(_0x2828c4&&_0x2828c4[_0xd5e4('0x48')]){_0x2f9a84=_0x2828c4['results']['map'](function(_0x56ab3b){return _0x56ab3b&&_0x56ab3b['alternatives'][0x0]&&_0x56ab3b['alternatives'][0x0]['transcript']?_0x56ab3b[_0xd5e4('0x49')][0x0][_0xd5e4('0x4a')]:'';})[_0xd5e4('0x4b')]('\x0a');_0x23de87=_0x2828c4[_0xd5e4('0x48')][_0xd5e4('0x4c')](function(_0x48ad3c){return _0x48ad3c&&_0x48ad3c[_0xd5e4('0x49')][0x0]&&_0x48ad3c['alternatives'][0x0]['confidence']?_0x48ad3c['alternatives'][0x0][_0xd5e4('0x4d')]:0x0;})[_0xd5e4('0x4b')]('\x0a');}logger[_0xd5e4('0x15')](_0xd5e4('0x4e'),_0x2f9a84);logger[_0xd5e4('0x15')](_0xd5e4('0x4f'),_0x23de87);return{'transcript':_0x2f9a84,'confidence':_0x23de87};})['catch'](function(_0x219b59){logger['error'](_0xd5e4('0x50'),_0x219b59[_0xd5e4('0xe')],_0x219b59[_0xd5e4('0x51')],_0x219b59['message']);});};exports['googleDialogflow']=function(_0x330be0,_0x2edbe0,_0x5b64cd,_0x474425){var _0x312318=apiai(_0x2edbe0,{'language':_0x474425||'en'});return _0x312318['textRequest'](_0x5b64cd,{'sessionId':md5(_0x330be0)})[_0xd5e4('0x29')](function(_0x18d719){logger[_0xd5e4('0x15')](JSON[_0xd5e4('0x3c')](_0x18d719));return{'source':_0x18d719[_0xd5e4('0x52')][_0xd5e4('0x53')],'resolvedQuery':_0x18d719[_0xd5e4('0x52')]['resolvedQuery'],'action':_0x18d719['result'][_0xd5e4('0x54')],'actionIncomplete':_0x18d719[_0xd5e4('0x52')][_0xd5e4('0x55')],'speech':_0x18d719[_0xd5e4('0x52')][_0xd5e4('0x56')][_0xd5e4('0x57')],'score':_0x18d719[_0xd5e4('0x52')]['score'],'statusCode':_0x18d719['status'][_0xd5e4('0x58')],'endConversation':_0x18d719[_0xd5e4('0x52')][_0xd5e4('0x59')][_0xd5e4('0x5a')]||![],'isFallbackIntent':_0x18d719[_0xd5e4('0x52')][_0xd5e4('0x59')][_0xd5e4('0x5b')]};});};exports[_0xd5e4('0x5c')]=function(_0x16a4fe,_0x2be975,_0x3464ae,_0x12d16c,_0x195be9,_0x5cfc46){var _0x31fe02=_0x12d16c[_0xd5e4('0x5d')](/\\n/g,'\x0a');var _0x313fdd={'credentials':{'private_key':_0x31fe02,'client_email':_0x3464ae}};var _0x4c013a=new dialogflow['SessionsClient'](_0x313fdd);var _0x5ed739=_0x4c013a[_0xd5e4('0x5e')](_0x2be975,md5(_0x16a4fe));var _0x6e9716={'session':_0x5ed739,'queryInput':{'text':{'text':_0x195be9,'languageCode':_0x5cfc46}}};return _0x4c013a[_0xd5e4('0x5f')](_0x6e9716)['then'](function(_0x92a998){if(_0x92a998&&_0x92a998['length']){logger[_0xd5e4('0x15')]('Dialogflow\x20V2\x20response:',JSON[_0xd5e4('0x3c')](_0x92a998));var _0x58f047=_0x92a998[0x0];if(_0x58f047){var _0x57a2c9={'action':_0x58f047[_0xd5e4('0x60')][_0xd5e4('0x54')],'allRequiredParamsPresent':_0x58f047[_0xd5e4('0x60')]['allRequiredParamsPresent'],'endConversation':_0x58f047['queryResult']['diagnosticInfo']&&_0x58f047['queryResult'][_0xd5e4('0x61')]['fields']?_0x58f047[_0xd5e4('0x60')][_0xd5e4('0x61')][_0xd5e4('0x62')][_0xd5e4('0x63')][_0xd5e4('0x64')]:![],'fulfillmentText':_0x58f047['queryResult']['fulfillmentText'],'intentName':_0x58f047[_0xd5e4('0x60')]['intent'][_0xd5e4('0x51')],'intentDisplayName':_0x58f047[_0xd5e4('0x60')][_0xd5e4('0x65')][_0xd5e4('0x66')],'isFallbackIntent':_0x58f047[_0xd5e4('0x60')][_0xd5e4('0x65')]['isFallback'],'languageCode':_0x58f047['queryResult'][_0xd5e4('0x67')],'queryText':_0x58f047[_0xd5e4('0x60')][_0xd5e4('0x68')],'responseId':_0x58f047[_0xd5e4('0x69')],'score':_0x58f047['queryResult']['intentDetectionConfidence'],'speech':_0x58f047['queryResult'][_0xd5e4('0x6a')],'providerResponse':JSON[_0xd5e4('0x3c')](_0x92a998)};return _0x57a2c9;}}});};exports[_0xd5e4('0x6b')]=function(_0x10e11d,_0x9efe32,_0x445faa,_0xe26c4f){return tilde[_0xd5e4('0x46')](_0x10e11d,_0x9efe32,_0x445faa,_0xe26c4f)[_0xd5e4('0x29')](function(_0x463844){try{fs[_0xd5e4('0x17')](_0x10e11d);}catch(_0x26ca89){logger['error'](_0x26ca89);}logger[_0xd5e4('0x15')](_0xd5e4('0x6c'),_0x463844[_0xd5e4('0x4a')]);logger['info'](_0xd5e4('0x6d'),_0x463844[_0xd5e4('0x4d')]);return _0x463844;});};exports[_0xd5e4('0x6e')]=function(_0x286ba2,_0xa995c0,_0x27dc02,_0x444801,_0x11be51,_0x13263f){var _0x421972=path[_0xd5e4('0x23')](__dirname,_0xd5e4('0x24'),rs[_0xd5e4('0x25')](0x4)+_0xd5e4('0x43'));var _0x17579a;return aws[_0xd5e4('0x6f')](_0x286ba2,_0xa995c0,_0x27dc02,_0x444801,_0x11be51,_0x13263f,_0x421972)[_0xd5e4('0x29')](function(){_0x17579a=path[_0xd5e4('0x23')](__dirname,_0xd5e4('0x24'),rs[_0xd5e4('0x25')](0x4)+_0xd5e4('0x26'));return convertFile(_0x421972,_0x17579a);})[_0xd5e4('0x29')](function(){try{fs[_0xd5e4('0x17')](_0x421972);fs['chmodSync'](_0x17579a,_0xd5e4('0x2a'));}catch(_0x4797d4){logger['error'](_0x4797d4);}return _0x17579a[_0xd5e4('0x39')]('.')[0x0];});};exports[_0xd5e4('0x70')]=function(_0x2a7692,_0x46f780,_0x5ebf1d,_0x3c958f,_0x4aa79b,_0x4e795d){return aws[_0xd5e4('0x71')](_0x2a7692,_0x46f780,_0x5ebf1d,_0x3c958f,_0x4aa79b,_0x4e795d)[_0xd5e4('0x29')](function(_0x27ebfe){logger[_0xd5e4('0x15')](JSON[_0xd5e4('0x3c')](_0x27ebfe));return _0x27ebfe;});};exports[_0xd5e4('0x72')]=function(_0x72adc2,_0x1658db,_0x3ea33d,_0x1f2b26){var _0x5f01fa=util[_0xd5e4('0x73')](_0xd5e4('0x74'),ISPEECH_API,_0x72adc2,encodeURIComponent(_0x1658db),_0x3ea33d,_0x1f2b26);var _0x53796c=path[_0xd5e4('0x23')](__dirname,_0xd5e4('0x24'),rs[_0xd5e4('0x25')](0x4)+_0xd5e4('0x43'));var _0x2bb04a;return downloadFile(_0x5f01fa,_0x53796c)['then'](function(){_0x2bb04a=path[_0xd5e4('0x23')](__dirname,_0xd5e4('0x24'),rs['generate'](0x4)+'.wav');return convertFile(_0x53796c,_0x2bb04a);})[_0xd5e4('0x29')](function(){try{fs[_0xd5e4('0x17')](_0x53796c);fs[_0xd5e4('0x37')](_0x2bb04a,_0xd5e4('0x2a'));}catch(_0x244801){logger[_0xd5e4('0xf')](_0x244801);}return _0x2bb04a[_0xd5e4('0x39')]('.')[0x0];});};exports[_0xd5e4('0x75')]=function(_0x14debe,_0x24c4b0,_0x4c2736,_0x4e399b){var _0x392269=util[_0xd5e4('0x73')](_0xd5e4('0x76'),ISPEECH_API,_0x24c4b0,_0x4c2736,base64Encode(_0x14debe),_0x4e399b?util[_0xd5e4('0x73')](_0xd5e4('0x77'),encodeURIComponent(_0x4e399b)):_0xd5e4('0x78'));return uploadFile(_0x392269)[_0xd5e4('0x29')](function(_0x171b7e){return querystring['parse'](_0x171b7e);});};exports[_0xd5e4('0x79')]=function(_0x337ad9,_0x42efce){return sestek[_0xd5e4('0x7a')](_0x337ad9,_0x42efce)['then'](function(_0x295fb9){logger['info'](JSON[_0xd5e4('0x3c')](_0x295fb9));var _0x3690b0={'speech':_0x295fb9[_0xd5e4('0x7b')],'action':_0x295fb9[_0xd5e4('0x7c')]?_0x295fb9['channelData']['CustomAction']:undefined,'actiondata':_0x295fb9[_0xd5e4('0x7c')]?_0x295fb9['channelData'][_0xd5e4('0x7d')]:undefined};if(_0x295fb9[_0xd5e4('0x7c')]&&_0x295fb9[_0xd5e4('0x7c')][_0xd5e4('0x7e')]){return base64Decode(_0x295fb9[_0xd5e4('0x7c')]['AudioFromTts']['Data'],path[_0xd5e4('0x23')](__dirname,_0xd5e4('0x24'),rs[_0xd5e4('0x25')](0x4)+_0xd5e4('0x26')))[_0xd5e4('0x29')](function(_0x3fccf9){_0x3690b0[_0xd5e4('0x7f')]=_0x3fccf9;return _0x3690b0;});}return _0x3690b0;});};exports[_0xd5e4('0x80')]=function(){return __dirname;};