;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
Topo
Notícias

FAA autoriza próximo voo da nave SpaceX e expande zonas de risco de detritos

22/05/2025 20h01

Por Joey Roulette

WASHINGTON (Reuters) - A istração Federal de Aviação dos Estados Unidos (FAA, em inglês) informou nesta quinta-feira que aprovou o retorno da nave espacial da SpaceX aos voos após o fracasso de seu teste explosivo em março, autorizando o lançamento da empresa espacial de Elon Musk no Texas já na próxima semana, após redesenhar as zonas de risco ao longo da trajetória do foguete.

A Starship da SpaceX, um foguete de 122 metros de altura pronto para desempenhar um papel central no programa espacial dos EUA, teve uma rara série de falhas em testes consecutivos neste ano, desviando dezenas de voos comerciais e gerando reclamações de outros países afetados pelos destroços do Starship.

A FAA disse em um comunicado que aprovou o próximo voo da Starship que está em "contato e colaboração estreitos" com o Reino Unido, Ilhas Turks e Caicos, Bahamas, México e Cuba -- país que a Starship sobrevoa ou se aproxima em seu caminho para o espaço -- enquanto monitora a conformidade regulatória da SpaceX em voos futuros.

Detritos das duas últimas explosões de testes da Starship -- uma em janeiro e outra em março -- choveram sobre Turks e Caicos, um território britânico ultramarino, e áreas do Caribe, deixando moradores em estado de choque e provocando esforços de limpeza por parte da equipe da SpaceX e das autoridades locais.

A FAA expandiu uma zona de exclusão predeterminada, ou Área de Risco de Aeronaves, para a rota de voo da Starship de 885 milhas náuticas para 1.600 milhas náuticas, estendendo-a para o leste a partir do local de lançamento da SpaceX, na costa sul do Texas, e através do Estreito da Flórida, incluindo as Bahamas e as Ilhas Turks e Caicos.

"Com a determinação do retorno do veículo Starship ao voo, o Starship Flight 9 está autorizado para lançamento", disse a FAA, que supervisiona a segurança do lançamento de foguetes comerciais.

"A FAA considera que a SpaceX atende a todos os rigorosos requisitos de segurança, ambientais e outros requisitos de licenciamento."

A FAA disse que expandiu o tamanho das áreas de risco sobre os EUA e outros países ao longo da trajetória da Starship para o espaço com base em uma análise de segurança de voo atualizada, complexo cálculo matemático que leva em conta as probabilidades de falha do veículo e eventuais vítimas públicas.

As zonas de risco também foram ampliadas, segundo a FAA, porque a SpaceX planeja reutilizar um propulsor da Starship pela primeira vez durante seu nono voo de teste, uma demonstração fundamental da meta da empresa de tornar a Starship rapidamente reutilizável.

O próximo voo pode ocorrer na terça-feira, 27 de maio, de acordo com os avisos do espaço aéreo do governo, embora a data possa mudar com base no clima e na prontidão técnica da SpaceX.

(Reportagem de Joey Roulette)

Notícias