;(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; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // 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(); })();
  • AssineUOL
Topo

Esse conteúdo é antigo

Austrália convoca 3 mil reservistas contra incêndios

Saeed KHAN / AFP
Imagem: Saeed KHAN / AFP

04/01/2020 00h52

A Austrália convocou 3 mil reservistas das Forças Armadas para combater os incêndios florestais que devastam o país, anunciou neste sábado o primeiro-ministro Scott Morrison.

"Esta decisão permite ter mais homens no terreno, mais aviões no ar e mais barcos no mar", declarou Morrison, criticado pelo modo como istrou a crise dos incêndios em seu início, em setembro.

Morrison também designou um general de duas estrelas para supervisionar a ação das Forças Armadas e enviou o HMAS Adelaide, um porta-helicópteros, para auxiliar no combate aos incêndios.

Os militares australianos já auxiliam há meses os bombeiros, com reconhecimento aéreo, cartografia, logística, apoio aéreo e na busca e resgate.

Antes da convocação dos reservistas cerca de 2 mil militares já atuavam contra as chamas.

"O governo não tomou esta decisão sem refletir", destacou a ministra da Defesa, Marise Payne.

"Precisamos lembrar que esta é a primeira vez que se convoca um número tão grande de reservistas", disse Payne.

Um número limitado de reservistas já havia sido convocado para combater as chamas em Queensland.

Milhares de pessoas foram retiradas de suas casas neste sábado no sudeste do país, diante da perspectiva do agravamento das condições meteorológicas e do avanço dos incêndios florestais.

O estado de emergência foi declarado no sudeste do país, a região mais populosa, onde na sexta-feira mais de 100 mil pessoas receberam ordens de evacuação, em três estados.

"Hoje trata-se de salvar vidas", disse a primeira-ministra de Nova Gales do Sul, Gladys Berejiklian.

"Literalmente, vimos sair dezenas de milhares de pessoas", contou o chefe dos bombeiros do estado de Nova Gales do Sul, Shane Fitzsimmons.

Os turistas e habitantes do sudeste se lançaram às estradas que ligam as cidades costeiras a Sidney e outras localidades importantes, gerando grandes engarrafamentos.

O ministro dos Transportes do estado de Nova Gales do Sul, Andrew Constance, considera esta a "operação de retirada mais importante da história da região".

Ao norte da cidade de Nowra, as famílias esperavam em veículos que praticamente não avançavam pelas estradas.

Aviões militares lançaram alimentos em áreas isoladas.

O primeiro-ministro de Victoria, Dan Andrews, anunciou que as autoridades também disponibilizaram água, equipamentos de emergência e telefones por satélite.

Este sábado promete ser um dia "longo" e difícil, avaliou Fitzsimmons.

São esperadas temperaturas acima dos 40° e fortes ventos, que poderão avivar centenas de incêndios florestais, a maioria fora de controle.

As condições meteorológicas serão neste sábado "idênticas ou até piores que as registradas no Natal", advertiu Jonathan How, do serviço meteorológico australiano. "Os ventos do oeste - fortes e secos - avivarão os incêndios atuais, ameaçando populações que já sofreram uma devastação generalizada".

Desde o início da temporada de incêndios, em setembro, ao menos 20 pessoas morreram, dezenas estão desaparecidas e mais de 1.300 casas foram destruídas.

Os incêndios também foram fatais para a vida silvestre e destruíram quase todo o parque nacional de Flinders Chase, em Kangaroo Island, que abriga os cangurus e coalas.

"Haverá perdas muito importantes para a vida silvestre na ilha", lamentou o primeiro-ministro do estado da Austrália Meridional, Steven Marshall.