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

Assessora que estava com Marielle diz que fugiu por temer novo ataque

Carro em que estavam Marielle, Anderson e Fernanda - Luis Kawaguti/UOL
Carro em que estavam Marielle, Anderson e Fernanda Imagem: Luis Kawaguti/UOL

Téo Takar

Do UOL, em São Paulo

10/03/2019 22h43

Quase um ano após a morte de Marielle Franco (PSOL) e do motorista Anderson Gomes, uma assessora que estava no mesmo veículo onde a vereadora foi morta decidiu quebrar o silêncio e concedeu entrevista ao programa Fantástico, da rede Globo.

A jornalista Fernanda Chaves afirmou que não é uma testemunha do caso, porque não conseguiu ver quase nada no momento do ataque. Ela explicou que deixou o país após a morte de Marielle e Anderson por medo de sofrer um novo atentado.

"Estou vindo aqui com a cara aberta. Se eu falasse aqui de costas, escondida em meio às sombras, poderia reforçar o entendimento de que eu sou testemunha do crime. Na verdade, eu só ouvi a rajada de metralhadora e me abaixei", disse Fernanda, que deixou o Brasil logo após o atentado e ficou três meses escondida com a família na Europa. "Fui para a delegacia abraçada com meu advogado e abaixada."

Tinha a sensação de que poderia levar outra rajada a qualquer momento. Por isso resolvi sair do país
Fernanda Chaves, assessora de Marielle Franco

"O estado do Rio de Janeiro estava sob intervenção federal, as tropas estavam nas ruas. E, mesmo nessas circunstâncias, o carro de uma vereadora foi metralhado. Você fica com sensação de que a qualquer momento o seu carro poderá ser metralhado de novo", afirmou.

Uma das hipóteses de investigação da morte de Marielle considera a possibilidade de um crime político, com envolvimento de milicianos e agentes públicos.

A proximidade de Marielle com o então deputado estadual e agora deputado federal Marcelo Freixo (PSOL) também sugere que o crime contra a vereadora, na verdade, poderia ter sido uma forma de vingança contra o deputado.

Segundo Fernanda Chaves, Marielle não tinha inimigos políticos, embora sua presença não agradasse alguns dos vereadores cariocas, e sua legislatura não mirava a atuação das milícias no Rio de Janeiro.

"Ela não tinha as milícias como alvo. O foco dela eram as questões ligadas à violência da mulher. Marielle despertava ódio nos machistas, dos racistas. Alguns vereadores não gostavam de ter uma mulher negra e lésbica como colega. Alguns se incomodavam de entrar no elevador com ela", declarou ela.

O assassinato de Marielle e Anderson completa um ano na próxima quinta-feira (14). Até hoje, ninguém foi indiciado ou preso por envolvimento direto com o crime, que é investigado sob sigilo de Justiça.