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

Rubens Valente

Bolsonaro reagiu contra fiscalização do Ibama 7 dias antes de exonerações

Mensagem enviada por Bolsonaro a Sérgio Moro em 22/04 reclama de ação do Ibama - Reprodução/Inquérito do STF
Mensagem enviada por Bolsonaro a Sérgio Moro em 22/04 reclama de ação do Ibama Imagem: Reprodução/Inquérito do STF

Colunista do UOL

24/05/2020 14h04

Mensagem enviada por Jair Bolsonaro ao então ministro da Justiça, Sérgio Moro, mostra a reação negativa do presidente a uma ação de fiscalização do Ibama no combate a crimes ambientais. Ao reenviar a Moro um vídeo, o presidente prometeu: "Força Nacional, Ibama e Funai... As coisas chegam para mim por terceiros... Eu não vou me omitir..." Sete dias depois dessa mensagem, dois dos mais importantes servidores do Ibama na área de fiscalização foram exonerados pelo ministro Ricardo Salles (Meio Ambiente) e pelo presidente do Ibama, Eduardo Bim.

A mensagem integra o inquérito do STF que apura as denúncias de Moro de suposta interferência do presidente na Polícia Federal.

Não foi possível à coluna ter o ao conteúdo do vídeo, mas se tratava de destruição de equipamentos, prática utilizada pelos fiscais do Ibama, pois Moro na sequência do diálogo explicou que os dois órgãos sob o guarda-chuva do seu ministério mencionados por Bolsonaro, Funai e Força Nacional, não tinham "autorização para destruir equipamentos". É uma referência às ações de queima de material usado em crimes ambientais. A destruição é autorizada por um decreto de 2008 e executada em campo pelos fiscais do Ibama.

Minutos depois, o então ministro explicou a Bolsonaro: "Informação preliminar colhida é a de que FN e Funai não têm relação com quebra de maquinário e que este seria um procedimento do Ibama somente. Mas ainda checando". Logo depois, Moro confirmou a informação.

O então ministro foi além, sugerindo que poderia ser feita uma "alteração da norma", ou seja, do decreto de 2008. "Mas isso não impediria o MPF de baixar alguma recomendação para destruição do maquinário."

Uma semana depois da mensagem de Bolsonaro, os dois principais chefes responsáveis pela fiscalização do Ibama e autorização para destruição de equipamentos usados em crimes ambientais foram exonerados de suas funções. As portarias foram publicadas no Diário Oficial em 30 de abril. A mensagem na qual Bolsonaro diz que "não se omitirá" foi enviada no dia 22 de abril.

No dia 30 o Diário Oficial publicou as exonerações de Renê Luiz de Oliveira, coordenador-geral de fiscalização ambiental, e Hugo Ferreira Netto Loss, coordenador de operações de fiscalização, ambos servidores concursados do órgão. No cargo de Renê foi nomeado o coronel da reserva da PM de São Paulo Walter Mendes Magalhães Júnior, trazido por decisão de Salles no ano ado ao Ibama, onde foi superintendente no Pará.

Na época das exonerações, o Ibama atribuiu o ato a uma decisão do novo diretor de proteção ambiental do Ibama, também um coronel da PM ligado a Salles, que havia assumido o cargo poucos dias antes, após uma reportagem da TV Globo ter divulgado uma operação do órgão no Pará.