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

Neto de Muhammad Ali se compara a 'Creed' e usou shorts de avô em nocaute

Nico Ali Walsh, neto de Muhammad Ali - AFP
Nico Ali Walsh, neto de Muhammad Ali Imagem: AFP

Do UOL, em São Paulo

26/10/2021 04h00

Um nome chamou a atenção no mundo do boxe no último fim de semana: Nico Ali Walsh, de 21 anos. Não se trata de um lutador qualquer. Ele é neto de ninguém menos que Muhammad Ali, pugilista três vezes campeão mundial dos pesos-pesados e referência na modalidade.

Além do nome, a performance no ringue também merece destaque. Em sua segunda luta profissional, no domingo (24), Ali Walsh venceu James Westley II por nocaute. Antes, havia superado Jordan Weeks, também por nocaute.

O início promissor conta com uma inspiração interessante: Adonis Creed, personagem dos filmes "Creed: Nascido para Lutar" e "Creed 2", que dão continuidade à famosa saga "Rocky" nos cinemas. Assim como o lutador interpretado por Michael B. Jordan nas telas, Ali Walsh tenta dar continuidade ao legado da família.

"Para mim, o sucesso é um legado", disse em entrevista ao jornal The New York Times, em agosto deste ano. "Isso pode ser feito sem títulos. Isso pode ser feito sem nenhuma riqueza. Eu saberei quando tiver feito isso. Assim que me sentir orgulhoso e bem-sucedido, saberei."

adonis creed - Reprodução/IMDB - Reprodução/IMDB
Michael B. Jordan em cena de 'Creed II'
Imagem: Reprodução/IMDB

Parte do legado de Muhammad Ali, inclusive, esteve no ringue com Ali Walsh em sua estreia, em agosto. Ele usou um shorts que ganhou de presente do avô, que morreu em junho de 2016 aos 74 anos.

"Isso me deu muita energia extra (...) Eu realmente sinto que ele [Muhammad Ali] estava vivo naquela noite", disse Ali Walsh na ocasião.

"Ele estava vivo e foi através de mim, foi através dos shorts e foi uma bênção a noite toda foi. Eu não poderia ter sonhado com uma noite melhor", completou, em entrevista à CNN.

Uma curiosidade: no primeiro "Creed", Adonis veste um calção que havia sido usado por seu pai, Apollo Creed (Carl Weathers).

Mas o ainda recente sucesso de Ali Walsh não é por causa apenas de seu nome ou vestimentas. Ele é treinado por SugarHill Steward, que também é técnico do campeão mundial Tyson Fury. Além disso, sua carreira é istrada por Bob Arum, que promoveu 27 lutas de Muhammad Ali ao longo dos anos.

Apesar dos holofotes, Ali Walsh evita a empolgação em sua ainda curta carreira profissional. "Meu maior objetivo é lutar uma luta de cada vez e ser o melhor Nico que posso ser, e porque tenho uma expectativa tão grande por mim e, obviamente, todo o público tem uma grande expectativa sobre mim também. Esse é um ótimo objetivo para ter, ser o melhor que posso ser."