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

Chico Alves

OPINIÃO

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

Bolsonaro joga fora das quatro linhas faz tempo

10.mar.2021 - Presidente Jair Bolsonaro (sem partido) - Ueslei Marcelino/Reuters
10.mar.2021 - Presidente Jair Bolsonaro (sem partido) Imagem: Ueslei Marcelino/Reuters

Colunista do UOL

14/08/2021 13h23

O futebol tem sido tema recorrente no paupérrimo cardápio de metáforas de Jair Bolsonaro. Para confrontar ministros do Supremo Tribunal Federal (STF), o presidente ameaçou várias vezes jogar "fora das quatro linhas" da Constituição. Bolsonaro é como o perna-de-pau que entra em uma jogada dividida com a sola da chuteira no peito do adversário e reclama do árbitro que marcou falta, fingindo que foi ele a vítima.

É preciso restabelecer a verdade para a torcida: o presidente joga fora das quatro linhas há muito tempo.

Ou alguém pode dizer que um mandatário que faz campanha de sabotagem contra o processo eleitoral do próprio país, repetindo denúncias de fraude sem provas, está agindo de acordo com a lei?

Será que Bolsonaro segue as regras legais ao desestimular o uso de máscaras em meio à pandemia e divulgar a mentira de que aqueles que tiveram covid-19 estão automaticamente imunizados?

É legal o presidente de uma nação usar o cargo para propagandear e indicar o uso de um medicamento, seja qual for? Ainda mais sendo um remédio de comprovada ineficácia, como é a cloroquina para casos de covid?

Está na lei a previsão de que o ocupante do Palácio do Planalto pode falar que vai "ter que sair na porrada" com um senador da República, como disse sobre Randolfe Rodrigues? Ou que pode chamar de "idiota" e "imbecil" o presidente do Tribunal Superior Eleitoral?

Isso apenas para citar uns poucos delitos individuais do presidente, sem falar em possíveis ilegalidades na gestão federal ou dos crimes das milícias digitais, que para apoiá-lo espalham mentiras nas redes sociais.

Como o jogador cabeça-de-bagre do início do texto, Bolsonaro desfere todas essas botinadas contra o regulamento e ainda tenta colocar os torcedores contra o juiz. Joga, portanto, fora das quatro linhas.

É nessa lógica que ele anuncia que vai ao Senado para pedir abertura de ação contra os ministros Alexandre de Moraes e Luis Roberto Barroso.

O presidente quer melar o jogo.

Sabe que não vai conseguir ganhar no tapetão, mas provoca confusão e incita sua torcida organizada a invadir o gramado para mudar o resultado.

Se quiser evitar o pior, está na hora de o juiz ser mais enérgico. Recomenda-se que pare de relevar as faltas que Bolsonaro comete a toda hora e mostre cartão amarelo na próxima jogada desleal.

Aos jogadores botinudos, que insistem em tentar compensar a falta de talento com entradas violentas, é necessário sempre lembrar que existe o cartão vermelho.