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

Vazamentos da Lava Jato

Gilmar Mendes usa voto no STF sobre Vaza Jato para constranger Sergio Moro

Natália Lázaro e Luis Adorno

Colaboração para o UOL, em Brasília, e do UOL, em São Paulo

09/02/2021 19h06Atualizada em 09/02/2021 21h28

O presidente da Segunda Turma do STF (Supremo Tribunal Federal), Gilmar Mendes, criticou por diversas vezes as dúvidas sobre a veracidade das mensagens obtidas na Operação Spoofing, que divulgou diálogos entre membros da força-tarefa da Lava Jato. A maioria dos ministros, Gilmar inclusive, decidiu liberar o compartilhamento das mensagens com a defesa do ex-presidente Lula (PT), réu na operação.

Para ele, é "chocante" e "constrangedor" que procuradores e a defesa do ex-juiz Sergio Moro questionem a autenticidade dos textos.

"Será obra de ficção isso? Foi adulterado em que ponto? Vamos itir que seja uma obra de ficção. Então que se prove que esses diálogos nunca existiram", argumentou durante seu voto.

Esses hackers de Araraquara são uns notáveis ficcionistas, já que eles escreveram tudo isso. Então vejam os senhores o tamanho do constrangimento.
Gilmar Mendes, ministro do STF

Na fala, ele ressaltou que não foi considerada no julgamento de hoje a autenticidade dos fatos, apenas o uso dos dados pela defesa. "Isso significa que a questão do uso material que carrega consigo invariavelmente a pergunta pela origem ilícita ou não da prova devem ser deixadas para momento e espaço oportunos, a serem identificados nos próprios processos ou procedimentos que a defesa venha apresentar."

O ministro leu muitas mensagens vazadas pelos hackers e constrangeu Moro com citações à Rússia. Moro era chamado pelo apelido de Russo pelos procuradores da força-tarefa. "O Russo, que é o Moro, criou seu próprio código de processo penal da Rússia", leu.

Ou os hackers merecem o Nobel de Literatura, ou as mensagens são verdadeiras.
Gilmar Mendes

"Portanto, eles estavam fazendo um Código de Processo Penal. E não era de Curitiba: era da Rússia", afirmou o ministro. "Isso envergonha os sistemas totalitários. É disso que nós estamos a falar. A não ser que se prove que isso não existiu, que é obra de um ficcionista", complementou.

Gilmar continuou: "Eu quero que alguém diga honestamente que isso encontra abrigo na Constituição". "É chocante. É constrangedor."

Esses hackers de Araraquara são o novo Gabriel García Márquez ou estamos diante de fatos de gravidade.
Gilmar Mendes

Alfinetando a Lava Jato, Gilmar também disse que "esse modelo de Estado totalitário teve a complacência da mídia". "Agora já não é o julgamento de um caso. Nós fomos cúmplices. Tortura feita por esta gente bonita de Curitiba. Os fatos são tão graves que estão repercutindo mundo afora."

O ministro disse, também, que o Brasil replicou a história da Stasi, a principal organização de polícia secreta e inteligência da Alemanha Oriental. "Sabem que estudei na Alemanha, estudei a Stasi, nós replicamos a história da Stasi! A Receita Federal virou um braço da Stasi brasileira", afirmou.

Vazamentos da Lava Jato