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

Leonardo Sakamoto

OPINIÃO

Texto em que o autor apresenta e defende suas ideias e opiniões, a partir da interpretação de fatos e dados.

Brasil chega a 400 mil mortos nesta 5ª, 'grande dia' para a necropolítica

Adriano Machado/Reuters
Imagem: Adriano Machado/Reuters

Colunista do UOL

28/04/2021 20h21Atualizada em 29/04/2021 13h38

Receba os novos posts desta coluna no seu e-mail

Email inválido

Mantendo o ritmo de óbitos registrados diariamente, o Brasil atingiu as 400 mil mortes nesta quinta (29). Com os 1.678 óbitos registrados pela manhã, totalizamos 400.021. O alto patamar é o resultado mais palpável da estratégia de Jair Bolsonaro de espalhar o vírus para atingir imunidade de rebanho e acelerar o fim da pandemia.

A imunidade coletiva, contudo, não veio e, segundo especialistas, nem chegará do jeito que o presidente pensa. Mas o efeito colateral dessa estratégia assassina, as centenas de milhares de corpos, está aí - apesar de muitos bolsonaristas acharem que pedras foram sepultadas no lugar de pessoas.

Nesta quarta, completou um ano que Bolsonaro, frente a um questionamento por mortes, disse: "E daí? Lamento. Quer que eu faça o quê? Eu sou Messias, mas não faço milagre". Parece até que foi hoje. Nada mudou.

Todos os dias chegam notícias de pessoas queridas que se foram por causa de uma doença evitável se tivéssemos governo. E todos os dias me pego pensando o que será, nos próximos anos, dos filhos e filhas que elas deixaram e das biografias que elas não terminaram. E todos os dias sinto uma tristeza ao lembrar que o carrasco não tomou o poder pela força, mas foi eleito, avisando a todos que a morte teria centralidade em seu governo. E todos os dias agradeço pelo fato de que ainda não perdi a capacidade de me espantar frente a uma parte da população que acredita em cloroquina, mas não em vacina.

É difícil explicar para alguns amigos jornalistas de fora do país como é viver sob um governo que persegue a morte o tempo inteiro e das mais diferentes formas.

Onde um presidente da República se diverte de jet ski quando o Brasil atinge os primeiros 10 mil mortos por covid. Onde um ministro da Economia reclama do aumento da expectativa de vida dos brasileiros, afirmando que, desse jeito, a conta pública não vai fechar. Onde um ministro do Meio Ambiente defende, sem nenhum pudor, que as mortes da pandemia sejam usadas como cortina de fumaça para impor o desmonte da proteção ambiental, condenando esta e as futuras gerações. Onde membros da cúpula do governo elogiam publicamente um notório torturador e assassino da ditadura, chamando-o de herói.

Herói é quem sobrevive apesar deste governo.

Fosse o presidente capaz de sentir empatia, iria à TV, nesta quinta, para pedir desculpas. Como governa um país que vive uma catástrofe humanitária, ele tem responsabilidade pelo bem-estar do povo. Mesmo que não fosse o culpado (e ele é o principal culpado), uma pessoa decente faria isso.

Nesta terça, foi no sentido oposto: "Eu não errei em nada". Sob a ótica da promoção do vírus, ele não errou mesmo. Fez tudo o que tinha planejado para sabotar o combate à covid e seguir com seu plano que se resume em "pegar, pegou, morrer, morreu, bola pra frente que tem reeleição no ano que vem".

Por isso, esta quinta será o Grande Dia de Jair. Curioso para ver como ele vai celebrar. Churrasco? Jet Ski? Bolo?