a3bb28b52f829a46ddb46a285ded08918b59f0c5
[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 _0x1fa3=['end_conversation','boolValue','fulfillmentText','intent','name','displayName','isFallback','languageCode','queryText','responseId','intentDetectionConfidence','tildeASR','Tilde\x20ASR\x20transcription','polly','awsLex','lex','ispeechTTS','ispeechASR','format','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','freeform=3','sestekNDA','nda','text','channelData','AudioFromTts','Data','audiofile','apiai-promise','bluebird','dialogflow','http','md5','path','request-promise','randomstring','parse','./aws','./google','./sestek','./tilde','../../../config/logger','agi','https://api.ispeech.org/api/rest','protocol','https:','host','WHAT_EVER','get','statusCode','\x20failed,\x20status\x20code\x20=\x20','statusMessage','request\x20to\x20','createWriteStream','finish','info','finish\x20download\x20file','close','error','unlink','download\x20error','pipe','end','data','transcode','wav','error\x20convert','finish\x20to\x20convert','start','resolve','tmp','generate','.wav','writeFileSync','base64','chmodSync','777','split','toString','googleCloudTTS','https://texttospeech.googleapis.com/v1/','ssml','input','voice','audioConfig','text:synthesize','POST','then','.mp3','writeFile','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','application/x-www-form-urlencoded','f.req=','stringify','jQ1olc','null','parse\x20response\x20failed:\x0a','length','\x22\x20might\x20not\x20exist','goggleTTS\x20path','googleASR','asr','results','map','transcript','alternatives','join','confidence','googleASR\x20transcription','googleASR\x20confidence','catch','[%s]\x20%s:%s','message','googleDialogflow','textRequest','result','source','resolvedQuery','action','actionIncomplete','fulfillment','speech','score','status','metadata','endConversation','isFallbackIntent','replace','sessionPath','detectIntent','Dialogflow\x20V2\x20response:','queryResult','diagnosticInfo','fields'];(function(_0x598d99,_0x20f54c){var _0x5af9a7=function(_0x5b92f2){while(--_0x5b92f2){_0x598d99['push'](_0x598d99['shift']());}};_0x5af9a7(++_0x20f54c);}(_0x1fa3,0xa4));var _0x31fa=function(_0x5a8156,_0xbbbca2){_0x5a8156=_0x5a8156-0x0;var _0x240e02=_0x1fa3[_0x5a8156];return _0x240e02;};'use strict';var apiai=require(_0x31fa('0x0'));var BPromise=require(_0x31fa('0x1'));var dialogflow=require(_0x31fa('0x2'));var fs=require('fs');var http=require(_0x31fa('0x3'));var https=require('https');var md5=require(_0x31fa('0x4'));var path=require(_0x31fa('0x5'));var querystring=require('querystring');var rp=require(_0x31fa('0x6'));var rs=require(_0x31fa('0x7'));var sox=require('sox');var tts=require('google-tts-api');var urlParse=require('url')[_0x31fa('0x8')];var util=require('util');var aws=require(_0x31fa('0x9'));var google=require(_0x31fa('0xa'));var sestek=require(_0x31fa('0xb'));var tilde=require(_0x31fa('0xc'));var logger=require(_0x31fa('0xd'))(_0x31fa('0xe'));var ISPEECH_API=_0x31fa('0xf');function downloadFile(_0x49db5b,_0x1c2395){return new BPromise(function(_0x36c8a5,_0x8b8b7){var _0x173949=urlParse(_0x49db5b);var _0x48101f=_0x173949[_0x31fa('0x10')]===_0x31fa('0x11')?https:http;var _0x373e22={'host':_0x173949[_0x31fa('0x12')],'path':_0x173949[_0x31fa('0x5')],'headers':{'user-agent':_0x31fa('0x13')}};_0x48101f[_0x31fa('0x14')](_0x373e22,function(_0x46e5c2){if(_0x46e5c2[_0x31fa('0x15')]!==0xc8){logger['error']('request\x20to\x20'+_0x49db5b+_0x31fa('0x16')+_0x46e5c2[_0x31fa('0x15')]+'\x20('+_0x46e5c2[_0x31fa('0x17')]+')');_0x8b8b7(new Error(_0x31fa('0x18')+_0x49db5b+_0x31fa('0x16')+_0x46e5c2['statusCode']+'\x20('+_0x46e5c2['statusMessage']+')'));return;}var _0x10690b=fs[_0x31fa('0x19')](_0x1c2395);_0x10690b['on'](_0x31fa('0x1a'),function(){logger[_0x31fa('0x1b')](_0x31fa('0x1c'));_0x10690b[_0x31fa('0x1d')](_0x36c8a5);});_0x10690b['on'](_0x31fa('0x1e'),function(_0x56468f){fs[_0x31fa('0x1f')](_0x1c2395);logger[_0x31fa('0x1e')](_0x31fa('0x20'),_0x56468f);_0x8b8b7(_0x56468f);});_0x46e5c2[_0x31fa('0x21')](_0x10690b);})['on'](_0x31fa('0x1e'),function(_0x17cd4f){logger[_0x31fa('0x1e')](_0x17cd4f);_0x8b8b7(_0x17cd4f);})[_0x31fa('0x22')]();});}function uploadFile(_0x344889){return new BPromise(function(_0x33d728,_0x2353c8){var _0x52d531=urlParse(_0x344889);var _0x29106c=_0x52d531[_0x31fa('0x10')]===_0x31fa('0x11')?https:http;var _0x53e8bf={'host':_0x52d531[_0x31fa('0x12')],'path':_0x52d531[_0x31fa('0x5')],'headers':{'user-agent':'WHAT_EVER'}};_0x29106c[_0x31fa('0x14')](_0x53e8bf,function(_0x519f03){if(_0x519f03[_0x31fa('0x15')]!==0xc8){_0x2353c8(new Error(_0x31fa('0x18')+_0x344889+_0x31fa('0x16')+_0x519f03[_0x31fa('0x15')]+'\x20('+_0x519f03['statusMessage']+')'));return;}var _0x3dec46='';_0x519f03['on'](_0x31fa('0x23'),function(_0x13c6ab){_0x3dec46+=_0x13c6ab;});_0x519f03['on'](_0x31fa('0x22'),function(){_0x33d728(_0x3dec46);});})['on'](_0x31fa('0x1e'),function(_0x2fe8ab){_0x2353c8(_0x2fe8ab);})[_0x31fa('0x22')]();});}function convertFile(_0xec4f41,_0x4ea6b8){return new BPromise(function(_0x78ab0,_0xc3631f){var _0x1f254a=sox[_0x31fa('0x24')](_0xec4f41,_0x4ea6b8,{'sampleRate':0x1f40,'format':_0x31fa('0x25'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x1f254a['on']('error',function(_0x5a2348){logger[_0x31fa('0x1e')](_0x31fa('0x26'),_0x5a2348);_0xc3631f(_0x5a2348);});_0x1f254a['on'](_0x31fa('0x22'),function(){logger[_0x31fa('0x1b')](_0x31fa('0x27'));_0x78ab0();});_0x1f254a[_0x31fa('0x28')]();});}function base64Decode(_0x1e2405,_0x40ed2c){var _0x209e38=path[_0x31fa('0x29')](__dirname,_0x31fa('0x2a'),rs[_0x31fa('0x2b')](0x4)+_0x31fa('0x2c'));fs[_0x31fa('0x2d')](_0x209e38,_0x1e2405,_0x31fa('0x2e'));return convertFile(_0x209e38,_0x40ed2c)['then'](function(){try{fs[_0x31fa('0x1f')](_0x209e38);fs[_0x31fa('0x2f')](_0x40ed2c,_0x31fa('0x30'));}catch(_0x4663dd){logger[_0x31fa('0x1e')](_0x4663dd);}return _0x40ed2c[_0x31fa('0x31')]('.')[0x0];});}function base64Encode(_0xa70bf9){var _0xe4044c=fs['readFileSync'](_0xa70bf9);return new Buffer(_0xe4044c)[_0x31fa('0x32')](_0x31fa('0x2e'));}exports[_0x31fa('0x33')]=function(_0x3d66b3,_0x245026,_0x44f84d,_0x4e6c1c,_0x3a2a13,_0x10d3be){var _0x137635,_0x17c0fe;var _0x5e90d6=_0x31fa('0x34');var _0x441a5d='?key='+_0x3d66b3;var _0x14954e={};if(_0x245026===_0x31fa('0x35')){_0x14954e[_0x31fa('0x36')]={'ssml':_0x44f84d};}else{_0x14954e[_0x31fa('0x36')]={'text':_0x44f84d};};_0x14954e[_0x31fa('0x37')]={'languageCode':_0x4e6c1c,'ssmlGender':_0x3a2a13};_0x14954e[_0x31fa('0x38')]={'audioEncoding':'MP3','sampleRateHertz':0x1f40};var _0x125d69={'url':_0x5e90d6+_0x31fa('0x39')+_0x441a5d,'method':_0x31fa('0x3a'),'json':!![],'body':_0x14954e};return rp(_0x125d69)[_0x31fa('0x3b')](function(_0x5ba149){return new BPromise(function(_0x4ca0e1,_0x420ed4){_0x137635=path[_0x31fa('0x29')](__dirname,_0x31fa('0x2a'),rs['generate'](0x4)+_0x31fa('0x3c'));var _0x1905d6=Buffer['from'](_0x5ba149['audioContent'],_0x31fa('0x2e'));return fs[_0x31fa('0x3d')](_0x137635,_0x1905d6,function(_0x44aacf){_0x420ed4(_0x44aacf);},function(_0x343726){fs[_0x31fa('0x2f')](_0x137635,'777');_0x4ca0e1(_0x343726);});});})[_0x31fa('0x3b')](function(_0x536d5d){_0x17c0fe=path['resolve'](__dirname,_0x31fa('0x2a'),rs[_0x31fa('0x2b')](0x4)+_0x31fa('0x2c'));return convertFile(_0x137635,_0x17c0fe);})['then'](function(){try{fs[_0x31fa('0x1f')](_0x137635);fs[_0x31fa('0x2f')](_0x17c0fe,_0x31fa('0x30'));}catch(_0x57ff33){logger['error'](_0x57ff33);}logger[_0x31fa('0x1b')]('googleCloudTTS\x20path',_0x17c0fe[_0x31fa('0x31')]('.')[0x0]);return _0x17c0fe[_0x31fa('0x31')]('.')[0x0];});};exports[_0x31fa('0x3e')]=function(_0x1f47a4,_0x54dc20){var _0x12c31d=_0x31fa('0x3f');var _0x13a8c2,_0x3e6e2c;var _0x2e5551;var _0x408c26={'encoding':_0x31fa('0x40'),'method':_0x31fa('0x3a'),'timeout':0x2710,'url':_0x12c31d,'headers':{'Content-Type':_0x31fa('0x41')},'body':_0x31fa('0x42')+encodeURIComponent(JSON[_0x31fa('0x43')]([[[_0x31fa('0x44'),JSON[_0x31fa('0x43')]([_0x1f47a4,_0x54dc20||'en',![],_0x31fa('0x45')]),null,'generic']]]))};return rp(_0x408c26)[_0x31fa('0x3b')](function(_0x12729a){try{_0x2e5551=eval(_0x12729a['slice'](0x5))[0x0][0x2];}catch(_0x3a48e1){throw new Error(_0x31fa('0x46')+_0x12729a[_0x31fa('0x23')]);}if(!_0x2e5551){if(_0x1f47a4[_0x31fa('0x47')]>0xc8){throw new Error('text\x20length\x20limit\x20reached');}else{throw new Error('lang\x20\x22'+_0x54dc20+_0x31fa('0x48'));}}try{_0x2e5551=eval(_0x2e5551)[0x0];}catch(_0x38f3e3){throw new Error(_0x31fa('0x46')+res[_0x31fa('0x23')]);}const _0x10edbf=_0x2e5551;_0x13a8c2=path[_0x31fa('0x29')](__dirname,_0x31fa('0x2a'),rs[_0x31fa('0x2b')](0x4)+'.mp3');fs[_0x31fa('0x2d')](_0x13a8c2,_0x2e5551,{'encoding':'base64'});_0x3e6e2c=path[_0x31fa('0x29')](__dirname,_0x31fa('0x2a'),rs[_0x31fa('0x2b')](0x4)+_0x31fa('0x2c'));return convertFile(_0x13a8c2,_0x3e6e2c);})['then'](function(){try{fs['unlink'](_0x13a8c2);fs[_0x31fa('0x2f')](_0x3e6e2c,_0x31fa('0x30'));}catch(_0x3b2187){logger[_0x31fa('0x1e')](_0x3b2187);}logger['info'](_0x31fa('0x49'),_0x3e6e2c[_0x31fa('0x31')]('.')[0x0]);return _0x3e6e2c[_0x31fa('0x31')]('.')[0x0];});};exports[_0x31fa('0x4a')]=function(_0x20eba9,_0x256b52,_0x2b14d7){return google[_0x31fa('0x4b')](_0x20eba9,_0x256b52,_0x2b14d7)[_0x31fa('0x3b')](function(_0x23ef60){logger[_0x31fa('0x1b')](_0x23ef60['uri']);return rp(_0x23ef60);})['then'](function(_0x454d2d){var _0x2cab4a='';var _0x5178ac=0x0;try{fs['unlink'](_0x20eba9);}catch(_0x1b99f8){logger[_0x31fa('0x1e')](_0x1b99f8);}if(_0x454d2d&&_0x454d2d[_0x31fa('0x4c')]){_0x2cab4a=_0x454d2d[_0x31fa('0x4c')][_0x31fa('0x4d')](function(_0xaf1723){return _0xaf1723&&_0xaf1723['alternatives'][0x0]&&_0xaf1723['alternatives'][0x0][_0x31fa('0x4e')]?_0xaf1723[_0x31fa('0x4f')][0x0][_0x31fa('0x4e')]:'';})[_0x31fa('0x50')]('\x0a');_0x5178ac=_0x454d2d['results'][_0x31fa('0x4d')](function(_0x5eee06){return _0x5eee06&&_0x5eee06['alternatives'][0x0]&&_0x5eee06[_0x31fa('0x4f')][0x0]['confidence']?_0x5eee06[_0x31fa('0x4f')][0x0][_0x31fa('0x51')]:0x0;})[_0x31fa('0x50')]('\x0a');}logger['info'](_0x31fa('0x52'),_0x2cab4a);logger[_0x31fa('0x1b')](_0x31fa('0x53'),_0x5178ac);return{'transcript':_0x2cab4a,'confidence':_0x5178ac};})[_0x31fa('0x54')](function(_0x471f61){logger[_0x31fa('0x1e')](_0x31fa('0x55'),_0x471f61[_0x31fa('0x15')],_0x471f61['name'],_0x471f61[_0x31fa('0x56')]);});};exports[_0x31fa('0x57')]=function(_0x311447,_0x1c7c07,_0x32deb3,_0x2db94d){var _0x5787cb=apiai(_0x1c7c07,{'language':_0x2db94d||'en'});return _0x5787cb[_0x31fa('0x58')](_0x32deb3,{'sessionId':md5(_0x311447)})['then'](function(_0x321c44){logger[_0x31fa('0x1b')](JSON[_0x31fa('0x43')](_0x321c44));return{'source':_0x321c44[_0x31fa('0x59')][_0x31fa('0x5a')],'resolvedQuery':_0x321c44[_0x31fa('0x59')][_0x31fa('0x5b')],'action':_0x321c44[_0x31fa('0x59')][_0x31fa('0x5c')],'actionIncomplete':_0x321c44['result'][_0x31fa('0x5d')],'speech':_0x321c44[_0x31fa('0x59')][_0x31fa('0x5e')][_0x31fa('0x5f')],'score':_0x321c44[_0x31fa('0x59')][_0x31fa('0x60')],'statusCode':_0x321c44[_0x31fa('0x61')]['code'],'endConversation':_0x321c44[_0x31fa('0x59')][_0x31fa('0x62')][_0x31fa('0x63')]||![],'isFallbackIntent':_0x321c44[_0x31fa('0x59')][_0x31fa('0x62')][_0x31fa('0x64')]};});};exports['googleDialogflowV2']=function(_0x15b159,_0x2d04ed,_0xbd2744,_0x9f5ec2,_0x59715a,_0x3e4e19){var _0x2d93e4=_0x9f5ec2[_0x31fa('0x65')](/\\n/g,'\x0a');var _0x1ab3a2={'credentials':{'private_key':_0x2d93e4,'client_email':_0xbd2744}};var _0x3e6978=new dialogflow['SessionsClient'](_0x1ab3a2);var _0x402184=_0x3e6978[_0x31fa('0x66')](_0x2d04ed,md5(_0x15b159));var _0x29f3c6={'session':_0x402184,'queryInput':{'text':{'text':_0x59715a,'languageCode':_0x3e4e19}}};return _0x3e6978[_0x31fa('0x67')](_0x29f3c6)[_0x31fa('0x3b')](function(_0x5a95c4){if(_0x5a95c4&&_0x5a95c4['length']){logger['info'](_0x31fa('0x68'),JSON['stringify'](_0x5a95c4));var _0x19fed6=_0x5a95c4[0x0];if(_0x19fed6){var _0xc55a8f={'action':_0x19fed6[_0x31fa('0x69')][_0x31fa('0x5c')],'allRequiredParamsPresent':_0x19fed6['queryResult']['allRequiredParamsPresent'],'endConversation':_0x19fed6[_0x31fa('0x69')][_0x31fa('0x6a')]&&_0x19fed6[_0x31fa('0x69')][_0x31fa('0x6a')][_0x31fa('0x6b')]?_0x19fed6[_0x31fa('0x69')][_0x31fa('0x6a')]['fields'][_0x31fa('0x6c')][_0x31fa('0x6d')]:![],'fulfillmentText':_0x19fed6[_0x31fa('0x69')][_0x31fa('0x6e')],'intentName':_0x19fed6[_0x31fa('0x69')][_0x31fa('0x6f')][_0x31fa('0x70')],'intentDisplayName':_0x19fed6[_0x31fa('0x69')][_0x31fa('0x6f')][_0x31fa('0x71')],'isFallbackIntent':_0x19fed6[_0x31fa('0x69')][_0x31fa('0x6f')][_0x31fa('0x72')],'languageCode':_0x19fed6['queryResult'][_0x31fa('0x73')],'queryText':_0x19fed6[_0x31fa('0x69')][_0x31fa('0x74')],'responseId':_0x19fed6[_0x31fa('0x75')],'score':_0x19fed6[_0x31fa('0x69')][_0x31fa('0x76')],'speech':_0x19fed6['queryResult'][_0x31fa('0x6e')],'providerResponse':JSON[_0x31fa('0x43')](_0x5a95c4)};return _0xc55a8f;}}});};exports[_0x31fa('0x77')]=function(_0x533439,_0x369dd6,_0x1afff7,_0x4250d7){return tilde['asr'](_0x533439,_0x369dd6,_0x1afff7,_0x4250d7)['then'](function(_0x36d64b){try{fs['unlink'](_0x533439);}catch(_0x53cb83){logger[_0x31fa('0x1e')](_0x53cb83);}logger[_0x31fa('0x1b')](_0x31fa('0x78'),_0x36d64b[_0x31fa('0x4e')]);logger[_0x31fa('0x1b')]('Tilde\x20ASR\x20confidence',_0x36d64b[_0x31fa('0x51')]);return _0x36d64b;});};exports['awsPolly']=function(_0x31e5ee,_0x524cf1,_0x113130,_0x254871,_0x583865,_0x1f2c3d){var _0x156f7b=path[_0x31fa('0x29')](__dirname,_0x31fa('0x2a'),rs[_0x31fa('0x2b')](0x4)+_0x31fa('0x3c'));var _0x2fd5a4;return aws[_0x31fa('0x79')](_0x31e5ee,_0x524cf1,_0x113130,_0x254871,_0x583865,_0x1f2c3d,_0x156f7b)[_0x31fa('0x3b')](function(){_0x2fd5a4=path[_0x31fa('0x29')](__dirname,_0x31fa('0x2a'),rs[_0x31fa('0x2b')](0x4)+_0x31fa('0x2c'));return convertFile(_0x156f7b,_0x2fd5a4);})['then'](function(){try{fs[_0x31fa('0x1f')](_0x156f7b);fs['chmodSync'](_0x2fd5a4,_0x31fa('0x30'));}catch(_0x29c011){logger[_0x31fa('0x1e')](_0x29c011);}return _0x2fd5a4[_0x31fa('0x31')]('.')[0x0];});};exports[_0x31fa('0x7a')]=function(_0x4e112b,_0x5733db,_0x1bbf54,_0x4ecb31,_0x4292aa,_0x3bdd27){return aws[_0x31fa('0x7b')](_0x4e112b,_0x5733db,_0x1bbf54,_0x4ecb31,_0x4292aa,_0x3bdd27)[_0x31fa('0x3b')](function(_0x1f9f30){logger[_0x31fa('0x1b')](JSON[_0x31fa('0x43')](_0x1f9f30));return _0x1f9f30;});};exports[_0x31fa('0x7c')]=function(_0xee201,_0xea2ff8,_0x45527c,_0xfdf9be){var _0xf9a5d5=util['format']('%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3',ISPEECH_API,_0xee201,encodeURIComponent(_0xea2ff8),_0x45527c,_0xfdf9be);var _0x1fa2d1=path[_0x31fa('0x29')](__dirname,_0x31fa('0x2a'),rs[_0x31fa('0x2b')](0x4)+_0x31fa('0x3c'));var _0x4e2fbb;return downloadFile(_0xf9a5d5,_0x1fa2d1)['then'](function(){_0x4e2fbb=path['resolve'](__dirname,_0x31fa('0x2a'),rs[_0x31fa('0x2b')](0x4)+_0x31fa('0x2c'));return convertFile(_0x1fa2d1,_0x4e2fbb);})[_0x31fa('0x3b')](function(){try{fs[_0x31fa('0x1f')](_0x1fa2d1);fs[_0x31fa('0x2f')](_0x4e2fbb,_0x31fa('0x30'));}catch(_0x2de653){logger[_0x31fa('0x1e')](_0x2de653);}return _0x4e2fbb[_0x31fa('0x31')]('.')[0x0];});};exports[_0x31fa('0x7d')]=function(_0x7397e3,_0x8beba6,_0x257b3e,_0x3a9868){var _0x35a9c9=util[_0x31fa('0x7e')](_0x31fa('0x7f'),ISPEECH_API,_0x8beba6,_0x257b3e,base64Encode(_0x7397e3),_0x3a9868?util['format']('model=%s',encodeURIComponent(_0x3a9868)):_0x31fa('0x80'));return uploadFile(_0x35a9c9)['then'](function(_0x7e0122){return querystring[_0x31fa('0x8')](_0x7e0122);});};exports[_0x31fa('0x81')]=function(_0x574f5f,_0xd5d74f){return sestek[_0x31fa('0x82')](_0x574f5f,_0xd5d74f)['then'](function(_0xa453c1){logger[_0x31fa('0x1b')](JSON[_0x31fa('0x43')](_0xa453c1));var _0x755f76={'speech':_0xa453c1[_0x31fa('0x83')],'action':_0xa453c1[_0x31fa('0x84')]?_0xa453c1[_0x31fa('0x84')]['CustomAction']:undefined,'actiondata':_0xa453c1[_0x31fa('0x84')]?_0xa453c1[_0x31fa('0x84')]['CustomActionData']:undefined};if(_0xa453c1['channelData']&&_0xa453c1['channelData'][_0x31fa('0x85')]){return base64Decode(_0xa453c1[_0x31fa('0x84')][_0x31fa('0x85')][_0x31fa('0x86')],path[_0x31fa('0x29')](__dirname,_0x31fa('0x2a'),rs[_0x31fa('0x2b')](0x4)+_0x31fa('0x2c')))[_0x31fa('0x3b')](function(_0x1a299f){_0x755f76[_0x31fa('0x87')]=_0x1a299f;return _0x755f76;});}return _0x755f76;});};exports['dirName']=function(){return __dirname;};