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

Bolsonaro defende Francischini por ataque às urnas: 'Opinião igual à minha'

Rafael Neves

Do UOL, em Brasília

07/06/2022 14h49Atualizada em 07/06/2022 18h05

O presidente Jair Bolsonaro (PL) saiu hoje em defesa do deputado estadual Fernando Francischini (União-PR), que está com um processo de cassação em julgamento no STF (Supremo Tribunal Federal). Em entrevista ao SBT, o presidente acusou a Justiça Eleitoral de "perseguição" contra o parlamentar, que foi condenado por ter afirmado que as urnas foram fraudadas para impedir o voto em Bolsonaro em 2018.

"E digo mais: a opinião dele é exatamente igual à minha. Igual à minha. Tá? Porque vários vídeos chegavam para mim, chegou para ele também, de pessoas que iam votar e, quando apertavam o número 1, já dava por encerrada a votação e aparecia a foto do candidato 13, o Haddad, ali do lado", disse o presidente sobre a eleição de 2018, da qual ele saiu vitorioso.

A declaração de Bolsonaro sobre as urnas é falsa. Uma checagem feita pelo Projeto Comprova, na ocasião, apontou que vários eleitores não encontraram Bolsonaro nas urnas porque digitavam o número 17 ao votarem para governador, e não presidente. Isso também foi esclarecido pelo TRE-MT. Já os vídeos em que o nome de Haddad aparece quando se digita o número de Bolsonaro são montagens, conforme publicado pelo UOL também na ocasião

Em outubro do ano ado, o TSE (Tribunal Superior Eleitoral) decidiu, por 6 votos a 1, condenar Francischini à perda do mandato. No dia da eleição em 2018, a 10 minutos do fim do horário de votação, o parlamentar fez uma transmissão ao vivo e afirmou que "fizeram algum cambalacho pro Jair Bolsonaro não ganhar essa eleição no primeiro turno", algo que o presidente já sustentou em várias oportunidades.

Com a condenação, Francischini se tornou o primeiro político do país a ser cassado por divulgar informações falsas sobre o sistema eleitoral. A decisão, no entanto, acabou revertida pelo ministro Nunes Marques, na última quinta, com o argumento de que ainda não havia, em 2018, regras claras que proibissem a conduta do deputado.

Assista à íntegra da entrevista no site do SBT

Reviravolta

No último sábado, o presidente do STF, Luiz Fux, agendou um julgamento virtual, com todo o plenário, para julgar um recurso movido contra a decisão de Nunes Marques. O ministro, todavia, atropelou Fux e pautou uma análise sobre o mesmo caso para a Segunda Turma, presidida por ele, que é composta de apenas cinco ministros.

A sessão virtual foi aberta hoje à meia-noite, mas acabou interrompida logo à 0h01 por um pedido de vista do ministro André Mendonça, o outro indicado de Bolsonaro à Corte. Ao paralisar o julgamento, Mendonça justificou que uma decisão da Segunda Turma poderia entrar em conflito com o plenário virtual.

A decisão a ser tomada pelo STF envolve não apenas Francischini, mas também outros três deputados estaduais do antigo PSL no Paraná. Em 2018, estes parlamentares haviam sido eleitos pela força do desempenho de Francischini, que teve 427 mil votos, e perderam os cargos com a condenação pelo TSE. Com a decisão de Nunes Marques, eles tiveram os mandatos restaurados.