;(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

Kennedy Alencar

ANÁLISE

Texto baseado no relato de acontecimentos, mas contextualizado a partir do conhecimento do jornalista sobre o tema; pode incluir interpretações do jornalista sobre os fatos.

Bolsonaro mente de novo em evento internacional e promete o que não entrega

Colunista do UOL

22/04/2021 11h20

Receba os novos posts desta coluna no seu e-mail

Email inválido

A exemplo do que fez na ONU em setembro ado, o presidente Jair Bolsonaro voltou a mentir num palco internacional, como dizer hoje no primeiro dia da Cúpula dos Líderes sobre o Clima, que determinou "o fortalecimento dos órgãos ambientais". Ele também fez promessas que não serão levadas a sério diante do histórico de destruição do Meio Ambiente patrocinado por seu governo.

Trocando em miúdos, as verdades ditas por Bolsonaro, como lembrar avanços do Brasil na preservação ambiental "nos últimos 15 anos" e mencionar o programa de biocombustíveis, são méritos de governos anteriores (istrações petistas, basicamente). As mentiras, como afirmar que o governo está na "vanguarda global" da proteção ao Meio Ambiente quando o desmatamento da Amazônia bate recordes, são obras de Bolsonaro.

Isolado no mundo e sinal de sua falta de prestígio, Bolsonaro ficou no fim da fila na ordem dos discursos dos presidentes no encontro patrocinado pelo colega americano, Joe Biden. A fala defensiva e mentirosa foi um recibo de que ele sentiu o peso do isolamento internacional construído por um governo de destruição da política externa, do meio ambiente, da saúde pública, dos direitos humanos e por aí vai.

Como levar a sério a promessa de Bolsonaro de que se empenhará para acabar com o desmatamento até 2030 se ele e o ministro Ricardo Salles (Meio Ambiente) fazem exatamente o contrário?

Bolsonaro e Salles destruíram as áreas de fiscalização do ICMBio (Instituto Chico Mendes de Conservação da Biodiversidade) e do Ibama (Instituto Brasileiro do Meio Ambiente e dos Recursos Naturais). O ministro do Meio Ambiente prometeu ar a boiada faz um ano e não aconteceu nada para impedir a meta de destruição ambiental assumida numa reunião ministerial.

Como sempre acontece, haverá análises de que Bolsonaro mudou o tom, suavizou, pode mudar de rumo, talvez haja um ponto de inflexão porque prometeu aqui e acolá, talvez possa mudar agora que a pressão aumentou etc. Já se viu o que ele fez na pandemia, não?

Não só o Brasil, mas o mundo inteiro está careca de saber que Bolsonaro é pura conversa fiada. Ele dizer que vai proteger o meio ambiente é tão verdadeiro quanto uma nota de três reais. Biden, por exemplo, decidiu sair da conferência na hora do discurso do presidente brasileiro, um gesto de desprezo para dar recado globalmente.

Mas vamos ser justos. No meio ambiente, Bolsonaro prometeu o que está entregando: terra arrasada e porteira aberta para criminosos ambientais.

A melhor maneira de voltar a preservar o meio ambiente no Brasil é tirar Bolsonaro e Salles do poder. Devido à omissão das autoridades que podem contribuir para isso, a tarefa vai ficar mesmo a cargo do eleitor no ano que vem.