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

Alvo da PF, Codevasf deixou obras de irrigação após virar feudo do centrão

Cassio Moreira/Codevasf - Sede da Codevasf, em Brasília
Cassio Moreira/Codevasf Imagem: Sede da Codevasf, em Brasília

Do UOL, em Brasília

20/07/2022 15h41

Alvo de operação da PF (Polícia Federal), a Codevasf (Companhia de Desenvolvimento dos Vales do São Francisco e do Parnaíba) deixou de lado sua função histórica de entregar obras de irrigação no semiárido após virar feudo de caciques do centrão — grupo de partidos que dá e ao governo federal no Congresso.

O comando da estatal foi entregue a aliados do presidente Jair Bolsonaro (PL) em troca de apoio político e teve o orçamento turbinado com bilhões de emendas parlamentares, conhecidas como orçamento secreto. Desde então, a Codevasf ou a priorizar obras de pavimentação e a entregar máquinas a municípios.

Segundo o jornal Folha de S.Paulo, entre 2018 e 2021, o valor reservado no orçamento para a estatal aumentou de R$ 1,3 bilhão para R$ 3,4 bilhões.

Nesta manhã, a PF deflagrou a "Operação Odoacro" que investiga supostas fraudes em licitação e desvio de verbas públicas em um, segundo a corporação, "engenhoso esquema de lavagem de dinheiro, perpetrado a partir do desvio do dinheiro público proveniente de procedimentos licitatórios fraudados".

Foram expedidos, no total, 16 mandados de busca e apreensão e já foram apreendidos cerca de R$ 1,3 milhão em cédulas de dinheiro, além de itens de luxo, como relógios importados e moto aquática. A operação foi realizada nas cidades de São Luís, Dom Pedro, Codó, Santo Antônio dos Lopes e Barreirinhas.

O sócio oculto da empresa foi preso nesta manhã. Ele é apontado como líder de uma quadrilha que tem como um dos focos desviar recursos públicos.

De acordo com a investigação, o grupo criminoso tinha contas bancárias vinculadas a Fs falsos para realizar as fraudes e dificultar a atuação de órgãos de controle.

Alterações legais

A Codevasf foi "vitaminada" pelo governo Bolsonaro por meio de alterações legais, ando a ter jurisdição sobre cerca de 36,5% do território nacional, com 2.600 municípios — no começo do atual mandato presidencial, a companhia cobria 27% do país. Quando foi criada, em 1974, ela respondia por 7% do território nacional.

No ano ado, a diretoria da estatal mandou liberar pagamentos que estavam retidos de dois consórcios de empresas responsáveis por manutenção da infraestrutura da transposição do rio São Francisco, contrariando decisões de servidores responsáveis pela fiscalização dos contratos.

Os fiscais da Codevasf tinham determinado a retenção — conhecida tecnicamente como "glosa" — de pagamentos solicitados pelas empreiteiras de 2020 a 2021. Esses servidores detectaram uma diferença entre os valores dos salários registrados pelas empresas na folha de pessoal e o que estava previsto nos contratos.