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

Filho de Bolsonaro ironiza pergunta sobre Coaf: "Prazer, sou Eduardo"

Janaina Garcia

Do UOL, em São Paulo

18/12/2018 12h16Atualizada em 18/12/2018 17h25

O deputado federal reeleito Eduardo Bolsonaro (PSL) reagiu de forma irônica, nesta terça-feira (18), ao ser perguntado sobre as investigações de irregularidades envolvendo ex-assessores de seu pai, o presidente eleito Jair Bolsonaro, e seu irmão, o senador eleito Flávio Bolsonaro, ambos do PSL.

Indagado sobre a ex-assessora Nathalia de Melo Queiroz, que era personal trainer e assessora de Bolsonaro, e sobre pai dela e o motorista Flávio Queiroz, ex-assessor de Flávio, o deputado federal respondeu: "Prazer, sou Eduardo Bolsonaro, deputado federal eleito por São Paulo. Essas questões do Flávio e do Jair devem ser tratadas com eles", disse.

Reportagem do UOL mostrou que Nathalia acumulava cargo na Alerj (Assembleia Legislativa do Rio), emprego CLT e faculdade entre os anos de 2011 e 2012. Funcionária legislativa ligada a Flávio Bolsonaro desde 2007, ela trabalhou como recepcionista em uma rede de academias no Rio no mesmo período em que aparecia na folha de pagamentos da Alerj. Na ocasião, ela foi nomeada assessora direta do filho do presidente eleito, Jair Bolsonaro (PSL).

Em seguida, Eduardo argumentou sobre a dificuldade de se gerir subordinados. "Difícil falar [sobre os apontamentos de movimentação atípica], porque é coisa de assessor. Vocês sabem o que o estagiário de vocês está fazendo?", afirmou. Indagado se políticos como o pai e o irmão não deveriam saber, insistiu: "Você sabe o que o seu estagiário está fazendo? Acho que a questão não é minha."

O parlamentar participa da solenidade de diplomação dos políticos eleitos por São Paulo na Sala São Paulo, centro da capital paulista.

"Acho que assessor tem a vida dele particular, impossível dizer o que entrou e saiu na conta dele, é complicado. Nossa parte é não atrapalhar a investigação. Quem vai dizer o que é certo e errado são os órgãos de investigação", continuou. "Não vamos fazer vaquinha ou eata dizendo que é perseguição política. Temos que ter dissentimento e responsabilidade de arcar com as responsabilidades, mas não podemos nos precipitar."

No evento de diplomação dos eleitos no Rio, o senador eleito Flávio Bolsonaro também declarou que não lhe cabe dar explicações sobre as transações financeiras de seu ex-assessor Fabrício Queiroz, que segundo relatório do Coaf (Conselho de Controle de Atividades Financeiras) fez movimentações atípicas da ordem de R$ 1,2 milhão no período de um ano.

"Quem tem que dar explicação é o ex-assessor, não sou eu", afirmou ele ao chegar ao prédio do TJ-RJ (Tribunal de Justiça do Estado do Rio de Janeiro). "A movimentação atípica é na conta dele. No [meu] gabinete todo mundo trabalha", completou.