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

Fluminense

De onde vem o dinheiro do Fluminense para investir no mercado

Técnico Abel Braga e Mário Bittencourt, presidente do Fluminense - Daniel Perpetuo/FFC
Técnico Abel Braga e Mário Bittencourt, presidente do Fluminense Imagem: Daniel Perpetuo/FFC

Do UOL, no Rio de Janeiro (RJ)

30/12/2021 04h00

Após algumas temporadas com gastos mais modestos, o Fluminense foi ao mercado da bola neste final de 2021 e prepara mudanças no elenco para o próximo ano. Dentre as várias negociações realizadas, alguns jogadores mais experientes e com currículo vencedor, como o volante Felipe Melo e o atacante Willian Bigode.

Mas de onde vem o poder de investimento para o Tricolor concretizar tais contratações? Em recente entrevista à FluTV, o presidente Mário Bittencourt afirmou que as movimentações não estão fora da realidade financeira do clube.

Segundo o mandatário, houve um aumento na receita por conta das participações da Libertadores desse ano e na do ano que vem — o time das Laranjeiras entrará na segunda fase. Além disso, o dirigente lembrou que, com as saídas de alguns jogadores ao fim da temporada, haverá uma folga na folha salarial, que também será usada nesta busca por reforços.

"Todo movimento que tem sido feito é pensado, olhando para o lado financeiro. Não estamos explodindo as contas do clube, não estamos aumentando a folha de forma que não podemos pagar. Vai haver um aumento gradual, sim, mas é previsto pelo aumento de receita que tivemos com a Libertadores desse ano e do ano que vem. A saída de alguns jogadores, por término de contrato, também abre um espaço na folha, e é esse espaço que estamos utilizando", disse, à FluTV.

Bittencourt apontou ainda que conversa com a Betano, patrocinadora master do futebol tricolor, por um lastro financeiro maior para acertos.

"Estamos avaliando isso com a comissão técnica, mas diria que, neste momento, até por questões financeiras, seria um ou outro [Goulart e Cano], mas estamos tentando buscar um aporte maior do nosso patrocinador master para 2022. Estamos em negociação e estou tentando ver se eles fazem um aporte adicional para a gente trazer mais um jogador. Se a gente conseguir, pode ser que sejam os dois", revelou.

Até o momento, o Fluminense contratou o técnico Abel Braga, o volante Felipe Melo e o atacante Willian Bigode. Há um acerto com o lateral-esquerdo Mario Pineida, do Barcelona de Guayaquil, do Equador, e a diretoria aguarda o zagueiro David Duarte, que estava no Goiás, em janeiro, após alinhar um pré-acordo com o jogador.

O clube negocia ainda a compra dos direitos do lateral-esquerdo Cristiano, brasileiro que atua no Sheriff, da Moldávia. Além disso, aguarda resposta do centroavante Germán Cano. Houve interesse no lateral Rodinei, mas o Flamengo não demonstrou intenção em realizar negociação sem que fosse pela venda dos direitos, molde que afastou o Tricolor das tratativas. O negócio com Ricardo Goulart não foi adiante.

Por outro lado, há nomes do elenco que estão em final de contrato e devem se despedir. Abel Hernández e Egídio estão fora dos planos. Hudson vai renovar contrato apenas até o término da recuperação da operação que fez no joelho direito. Bobadilla também tem o vínculo próximo do fim, e a situação é analisada pela comissão técnica.

Fluminense