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

Queiroz tem habeas corpus pautado no Rio, mas defesa desiste da ação

O senador Flávio Bolsonaro e o ex-assessor Fabrício Queiroz - Reprodução
O senador Flávio Bolsonaro e o ex-assessor Fabrício Queiroz Imagem: Reprodução

Caio Sartori

No Rio

24/09/2019 16h28

A Justiça do Rio marcou para terça-feira da semana que vem, dia 1º de outubro, o julgamento do habeas corpus apresentado pela defesa de Fabrício Queiroz. O caso seria analisado pelos cinco desembargadores da 3ª Câmara Criminal do Tribunal de Justiça, com relatoria do desembargador Antonio Carlos Nascimento Amado. No entanto, a defesa do policial militar desistiu da ação, já que o caso está suspenso provisoriamente por decisão do ministro Dias Toffoli, do Supremo Tribunal Federal (STF), a pedido do senador Flávio Bolsonaro (PSL-RJ).

A votação da matéria pelo plenário da Corte está marcada para novembro, mas Toffoli já itiu que pode antecipar.

Procurada pela reportagem para explicar a desistência, a defesa de Queiroz, representada pelo advogado Paulo Klein, disse que "em razão da suspensão das investigações determinada pelo STF não mais tem interesse no julgamento do seu Habeas Corpus, ao menos neste momento, razão porque manifestou sua desistência."

No final de maio, o desembargador que relata o habeas de Queiroz negou, em liminar, o pedido feito pela defesa. Os advogados alegavam, no texto, que o caso foi afetado por uma série de ilegalidades e vazamentos que contaminaram a investigação. Pedia, assim, a suspensão da quebra dos sigilos bancário e fiscal do policial militar.

Queiroz é apontado como o operador de Flávio Bolsonaro no esquema que apura suposta prática dos crimes de peculato, lavagem de dinheiro e organização criminosa no antigo gabinete de Flávio na Assembleia Legislativa do Rio (Alerj).

Revelado pelo jornal O Estado de S. Paulo em dezembro do ano ado, o caso teve início com um relatório de inteligência financeira fornecido pelo Conselho de Controle de Atividades Financeiras (Coaf) ao Ministério Público do Rio. Queiroz movimentou R$ 1,2 milhão no período de 1 ano, valor considerado atípico para seus rendimentos como policial e assessor parlamentar.

A suspensão das investigações por decisão de Toffoli tem como base justamente os dados do Coaf: o ministro mandou paralisar todos os inquéritos que tenham usado dados de órgãos de controle sem autorização judicial prévia. O julgamento no plenário do Supremo está marcado para novembro, mas Toffoli já itiu que pode antecipar.

Além do pedido de Queiroz, outros dois habeas corpus apresentados pela defesa de Flávio Bolsonaro devem ser analisados em breve pelos desembargadores da 3ª Câmara. Um deles, parecido com o do ex-assessor, pede a suspensão da quebra de sigilo; o outro solicita que o senador tenha direito a ser julgado pela segunda instância do Rio, já que os supostos crimes teriam sido praticados quando ele era deputado estadual.