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

Esse conteúdo é antigo

Randolfe diz que vai convidar Weintraub para falar sobre entrega do FNDE

Randolfe Rodrigues - Geraldo Magela/Agência Senado
Randolfe Rodrigues Imagem: Geraldo Magela/Agência Senado

Colaboração para o UOL*

13/04/2022 20h44Atualizada em 13/04/2022 20h51

O senador Randolfe Rodrigues (Rede-AP) disse, por meio das redes sociais hoje, que apresentaria um requerimento à Comissão de Educação do Senado para convidar o ex-ministro da Educação Abraham Weintraub para explicar sobre a "entrega" do FNDE (Fundo Nacional de Desenvolvimento da Educação) ao Centrão.

Weintraub afirmou que, quando estava no cargo, recebeu ordem direta do presidente Jair Bolsonaro para dar o controle do FNDE ao Centrão. Em entrevista à CNN Brasil, o ex-ministro disse que tentou protelar a entrega, mas teve que ceder.

O FNDE está no epicentro das denúncias de cobrança de propina por pastores, realização de licitação de ônibus escolares com indicação de preços inflados e destinação de recursos para 'escolas fakes'.

"Meu chefe, ele falou: 'você vai ter que entregar o FNDE para o Centrão'. Falei: 'presidente, não faça isso'", disse o ex-ministro na entrevista. Em resposta, Weintraub disse que Bolsonaro justificou: "Preciso". O presidente do FNDE, Marcelo Ponte, foi chefe de gabinete do atual ministro da Casa Civil, Ciro Nogueira, um dos líderes no Centrão.

Governo autoriza 52 'escolas fake' de Ciro Nogueira no Piauí

Controlado pelo ministro da Casa Civil, Ciro Nogueira, o FNDE autorizou a construção de 52 "escolas fake" no Piauí, abandonando 99 obras de colégios, creches e quadras poliesportivas que estavam em andamento no Estado. A maior parte dos contratos para as obras foi fechada com prefeituras piauienses comandadas pelo Progressistas, partido do qual o ministro é presidente nacional licenciado. Os números mostram que Nogueira usa dinheiro da educação para turbinar a campanha eleitoral de aliados no seu reduto eleitoral. Entre as candidaturas está a da sua ex-mulher Iracema Portella.

O Estadão revelou que o esquema é operado no FNDE, presidido por Marcelo Ponte, ex-chefe de gabinete do ministro. Apesar de haver 3,5 mil obras paradas, o governo preferiu dar prioridade à construção de 2 mil novas escolas, mas reando recursos insuficientes para sua execução. A estratégia garante a deputados aliados alardear em suas bases a conquista de obras que, na prática, não serão executadas por falta de previsão orçamentária.

O Ministério Público junto ao Tribunal de Contas da União (TCU) pediu na segunda-feira (11) abertura de uma investigação sobre o descumprimento às leis orçamentárias apontado na reportagem e solicitou uma liminar para que o Ministério da Educação "se abstenha de realizar novos empenhos para construção de novas escolas, devendo priorizar as obras já em andamento e inacabadas, diante dos indícios do esquema das 'escolas fake' noticiado no bojo dessa representação".

*Com informações do jornal O Estado de S.Paulo