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

Esse conteúdo é antigo

Abin volta a negar produção de relatórios para ajudar Flávio Bolsonaro

O senador Flávio Bolsonaro (Republicanos-RJ), em foto de arquivo (15/10/2019) - Gabriela Biló/Estadão Conteúdo
O senador Flávio Bolsonaro (Republicanos-RJ), em foto de arquivo (15/10/2019) Imagem: Gabriela Biló/Estadão Conteúdo

Do UOL, em São Paulo

18/12/2020 16h17Atualizada em 18/12/2020 16h57

A Abin (Agência Brasileira de Inteligência) voltou a negar que tenha produzido relatórios em ajuda ao senador Flávio Bolsonaro (Republicanos), no caso Queiroz, investigação para saber se houve um esquema de "rachadinha" na Alerj (Assembleia Legislativa do Rio de Janeiro), enquanto o filho do presidente Jair Bolsonaro (sem partido) era deputado.

Em nota, a agência reconhece o papel fundamental da imprensa perante a sociedade, mas diz que as "matérias jornalísticas acusam a existência de relatórios da ABIN ou do Diretor-Geral" com supostas instruções de defesa de parlamentar federal "faltam com a verdade".

"Nenhum relatório foi produzido com tema, assunto, texto ou o título exposto, tampouco a forma e o conteúdo dispostos correspondem a relatórios confeccionados por servidores em atividade na ABIN". A negativa foi dada após a publicação de reportagens nas revistas Época e Crusoé sobre o caso.

A Abin disse ainda que nenhum documento ou informe de defesa em processo criminal foi transmitido por qualquer meio para Flávio Bolsonaro ou para os advogados de defesa do senador por meio do diretor-geral, coordenadores ou assessores da agência.

"A imputação por qualquer pessoa de vinculação dos supostos relatórios à ABIN ou ao Diretor-Geral é equivocada ou deliberadamente realizada com objetivo de desacreditar uma instituição de Estado e os servidores que compõem seus quadros", diz outro trecho da nota.

GSI também nega produção de relatório

O GSI (Gabinete de Segurança Institucional), comandado pelo ministro-chefe Augusto Heleno, negou mais de uma vez que a Abin tivesse produzido relatórios em favor de Flávio. A manifestação do GSI foi encaminhada na última terça-feira (15) ao STF (Supremo Tribunal Federal), atendendo a uma determinação da ministra Cármen Lúcia.

Reportagem revela 'Abin paralela'

A nota divulgada pela Abin acontece no mesmo dia em que a revista Época publicou uma entrevista com a advogada Luciana Pires, que representa Flávio Bolsonaro.

Na reportagem, ela afirma que recebeu da Abin recomendações na tentativa de anular um inquérito no qual o parlamentar é investigado por supostamente ter desviado dinheiro do salário de assessores quando era deputado estadual no Rio de Janeiro. À revista, Luciana disse que não seguiu os conselhos, por estarem fora de seu alcance.

Também hoje, a revista Crusoé publicou uma reportagem sobre o suposto auxílio da Abin. O texto diz que mensagens comprovam que foi Ramagem que encaminhou os relatórios com recomendações para Flávio, e que os textos foram preparados por uma unidade interna da Agência que atua paralelamente e é comandada por Marcelo Bormevet, segundo a revista amigo do vereador Carlos Bolsonaro (Republicanos-RJ) e ex-integrante da equipe de segurança Jair Bolsonaro na campanha presidencial de 2018.