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

Caso Marielle

Polícia Civil perdeu imagens dos assassinos de Marielle no dia do atentado

Élcio Vieira de Queiroz e Ronnie Lessa são acusados do duplo homicídio de Marielle Franco e Anderson Gomes. Eles negam - André Toma/UOL
Élcio Vieira de Queiroz e Ronnie Lessa são acusados do duplo homicídio de Marielle Franco e Anderson Gomes. Eles negam Imagem: André Toma/UOL

Flávio Costa e Marina Lang

Do UOL, no Rio, e colaboração para o UOL, no Rio

13/10/2019 04h00

Resumo da notícia

  • Imagens gravadas pela câmera de um estabelecimento da Tijuca possibilitariam a identificação dos assassinos
  • Policiais recolheram as imagens e depois voltaram ao local sob alegação de que perderam o material
  • Em depoimento à Justiça, delegado caso itiu erros na busca por imagens do trajeto percorrido pelos suspeitos
  • Marielle Franco e Anderson Gomes foram assassinados em 14 de março de 2018

Policiais da DH da Capital (Delegacia de Homicídios do Rio) perderam "imagens relevantes" que possibilitariam a identificação dos assassinos da vereadora Marielle Franco (PSOL) e do motorista Anderson Gomes, registradas cerca de três horas antes do atentado ocorrido em 14 de março de 2018.

A informação foi confirmada por fontes ligadas à investigação conduzida pelo órgão da Polícia Civil do Rio.

De acordo com denúncia do MP-RJ (Ministério Público de Rio de Janeiro) aceita pela Justiça, o policial militar reformado Ronnie Lessa e o ex-PM Élcio Vieira de Queiroz usaram um Cobalt prata com placa clonada para cometer o duplo homicídio no bairro de Estácio, no centro do Rio. Contudo, ainda não há nenhuma prova contundente de que os dois estavam no veículo. As defesas dos réus negam que eles tenham cometido o crime.

No relatório produzido pela DH da Capital, a respeito do trajeto percorrido pelas vítimas e os assassinos, a primeira imagem obtida do carro com placa clonada é registrada às 17h34 daquele dia, na localidade conhecida como Quebra-Mar, na Barra da Tijuca, zona oeste do Rio.

Cerca de 40 minutos depois, às 18h16, as câmeras de um estabelecimento comercial flagraram o mesmo carro na Tijuca, bairro da zona norte do Rio, onde Marielle residia com a companheira Mônica Benício. A próxima imagem do veículo surge às 18h44, já nas proximidades da rua dos Inválidos, na Lapa, onde a vereadora participou de um debate antes de ser assassinada.

O UOL apurou que os agentes da DH da Capital obtiveram outras "imagens relevantes" gravadas neste intervalo de 28 minutos e que foram registradas pelas câmeras desse estabelecimento na Tijuca. O material possibilitaria a identificação dos ocupantes do Cobalt prata.

Os policiais foram ao local logo após o atentado, salvaram as imagens em um pendrive e retornaram cerca de 15 dias depois sob alegação de que tinham perdido o material. Porém, nesta ocasião não foi possível recuperar as imagens.

Marielle e Anderson foram assassinados pouco depois das 21h, no cruzamento entre as ruas João Paulo I e Joaquim Palhares, no bairro do Estácio, centro do Rio.

Marielle Franco - Renan Olaz/CMRJ - Renan Olaz/CMRJ
A vereadora Marielle Franco foi assassinada a tiros em 14 de março de 2018
Imagem: Renan Olaz/CMRJ

Delegado itiu que houve erros

Há uma semana, o UOL revelou que, em depoimento à Justiça, o delegado Giniton Lages, primeiro a chefiar as investigações sobre o duplo homicídio, itiu que houve falhas na busca pelas imagens do trajeto percorrido pelos assassinos no dia do atentado.

Um dos erros relatados pelo delegado consistiu na obtenção do material: os agentes pegavam as imagens de casas comerciais instaladas no trajeto e salvavam em pendrives. Porém, ao chegar no setor da DH responsável por analisar as imagens, o arquivo não podia ser ado, pois fora salvo em "formato errado". Os agentes voltavam aos locais, mas nem sempre conseguiram recuperar as imagens. Foi exatamente o que ocorreu no caso da loja da Tijuca.

"Os erros e acertos observados na investigação estão contextualizados e, em toda investigação, representam oportunidades de afirmação ou revisão de protocolos estabelecidos pela Polícia Civil para investigações complexas", afirmou ao UOL, sem comentar o teor de seu depoimento.

Procurada, a Polícia Civil do Rio afirmou apenas que o "caso está sob sigilo".

Quem mandou matar Marielle? E mais perguntas sem respostas

UOL Notícias

Caso Marielle