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

Governo rejeita qualquer forma de totalitarismo, diz AGU ao Supremo

José Levi Mello do Amaral Júnior - AGU/Divulgação
José Levi Mello do Amaral Júnior Imagem: AGU/Divulgação

Felipe Amorrim e Marcelo Oliveira

Do UOL, em Brasília e em São Paulo

19/08/2020 17h06Atualizada em 19/08/2020 17h09

O advogado-geral da União, JoséLevi, afirmou hoje que o governo federal e o Ministério da Justiça rejeitam "toda e qualquer forma de totalitarismo".

A declaração foi dada durante julgamento pelo STF (Supremo Tribunal Federal) do dossiê produzido pelo governo federal com os nomes de servidores identificados como integrantes do "movimento antifascismo", cuja existência foi revelada pelo UOL, em julho.

"A União, aí incluído o Ministério da Justiça, rejeita toda e qualquer forma de autoritarismo ou de totalitarismo, incluindo o fascismo. Nosso país é uma democracia, uma democracia vibrante, plural", afirmou o ministro.

No julgamento, a AGU representa o governo do presidente Jair Bolsonaro (sem partido).

Rede diz que dossiê criminaliza movimento antifascista

Ao defender no plenário do STF a suspensão da produção de relatório de inteligência pelo Ministério da Justiça contra servidores públicos e professores antifascistas, o partido Rede Sustentabilidade, autor da ação contra o documento, disse que o dossiê é um "desvio de finalidade, sem interesse público e com caráter apenas de constranger cidadãos".

Segundo o advogado Bruno Lunardi, que representou o partido na sessão, os servidores públicos mencionados no dossiê já vem sofrendo retaliação nas instituições em que trabalham, o que demonstra "descomo" com as alegações do Ministério da Justiça, que afirmou que as informações do "relatório não são íveis de embasar sindicâncias ou medidas istrativas".

Para o partido, o Ministério da Justiça também procurou abafar o caso, classificado pelo partido como uma "violação massiva a direitos".

Em sua manifestação, Levi também afirmou que o relatório em questão não foi utilizado para fins de investigação criminal e reuniu informações com o objetivo de antecipar possíveis "riscos".

O que é o dossiê de antifascistas

Reportagem do UOL revelou a produção pelo Ministério da Justiça de um relatório sigiloso sobre um de 579 servidores federais e estaduais de segurança identificados como integrantes do "movimento antifascismo" e também três professores universitários.

O documento foi produzido pela Seopi (Secretaria de Operações Integradas), unidade da pasta subordinada ao ministro André Mendonça.

Na segunda-feira (17), o dossiê foi entregue aos ministros do STF e a relatora do caso, ministra Cármen Lúcia, determinou sigilo sobre a documentação.

O que é uma ADPF?

A ação proposta pela Rede é uma ADPF (arguição de descumprimento de preceito fundamental). As ADPFs são ações que visam evitar ou corrigir lesões à Constituição, causadas por ação ou omissão do Poder Público, como é o caso do dossiê, segundo o partido autor da ação. A ADPF também pode ser proposta sobre normas municipais e estaduais ou para analisar se uma lei anterior à Constituição de 1988 é compatível com a atual lei máxima do país.

As decisões em ADPFs têm efeito vinculante, ou seja, valem para casos semelhantes pelo país. Esse tipo de ação pode ser proposto pelo presidente da República, Câmara dos Deputados, Senado Federal, assembleias legislativas, PGR, governadores, Conselho Federal da OAB, partidos políticos com representação no Congresso e centrais sindicais.