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

Zé Roberto lembra do neto e chora após classificação do Brasil para final

Beatriz Cesarini

Do UOL, em Tóquio

06/08/2021 10h54

Nem mesmo a experiência de ser tricampeão olímpico fez José Roberto Guimarães segurar a emoção após a vitória do Brasil por 3 a 0 sobre a Coréia do Sul que garantiu a vaga na final das Olimpíadas de Tóquio contra os Estados Unidos.

O treinador da equipe feminina chorou copiosamente abraçado a gerente de seleções da Confederação Brasileira de Voleibol (CBV), Julia Silva. Em conversa com os jornalistas, o comandante explicou o motivo de tanta emoção.

"Quando eu sentei naquele banco, me bateu aquela imagem (do neto), e não sei explicar o por que, do Rio. Do meu neto. Pensei a primeira coisa nele. Eu tinha prometido que a gente ia treinar mais para tentar ganhar mais das outras equipes. E olhei do lado e falei: 'Felipe, acho que deu certo'. Era um avô que estava orgulho de ter cumprido a promessa até um certo ponto, porque não terminamos ainda", disse

Neto chora no colo de Zé Roberto após eliminação do Brasil - André Durão/Nopp - André Durão/Nopp
Neto chora no colo de Zé Roberto após eliminação do Brasil nos Jogos de 2016
Imagem: André Durão/Nopp

A cena que Zé Roberto lembrou foi da eliminação da seleção feminina nas quartas de final dos Jogos Olímpicos do Rio. Na época, elas perderam para a China e deixaram a competição. Uma das cenas mais emocionantes foi o neto de José Roberto, Felipe, correndo pela quadra aos prantos até encontrar o colo do avô.

"E depois vendo a alegria não só do time como da comissão técnica, euforia, agradecimento, essa gratidão que a gente tem por tudo que recebemos do COB, CBV, todo mundo que está do Brasil torcendo. É um motivo de muito orgulho. Então é o que falo sempre: lutamos por uma causa, e nossa causa é o esporte, nosso país. Estamos aqui pensando em tudo que temos que viver e melhorar. E quando temos essa oportunidade, para nós é a glória. Eu sonhava em vestir a camisa do meu país. Vocês não imaginam como era para mim representar o meu país. Eu não sei quando isso tudo acabar o que vai ser. Acho que vou sentir um vazio enorme, mas pelo menos, quando parar, vou dizer: eu corri e caminhei um bom caminho", concluiu Zé.

Na véspera da semifinal, o time brasileiro precisou superar o corte da importante jogadora Tandara, que foi flagrada num exame antidoping realizado antes da viagem para Tóquio. Ela tentará recorrer da decisão, mas já está retornando ao Brasil.

Antes deste episódio, o grupo conviveu com a entorse no tornozelo da levantadora Macris. O departamento médico, porém, agiu rápido e conseguiu recuperá-la já para a partida das quartas de final, contra o Comitê Olímpico Russo.

Aos 67 anos, José Roberto Guimarães tem a chance de aumentar ainda mais suas marcas pessoais. Além dele ser o único técnico no mundo campeão olímpico com seleções de ambos os sexos, é também o único tricampeão olímpico.