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

Pan 2019

Ele se chama Keno em homenagem ao... Grand Canyon (e ganhou medalha no Pan)

Keno Marley durante treino dos Jogos Pan-Americanos de Lima - Alexandre Loureiro/COB
Keno Marley durante treino dos Jogos Pan-Americanos de Lima Imagem: Alexandre Loureiro/COB

Rubens Lisboa

Colaboração para o UOL, em São Paulo

29/07/2019 04h00

O nome de Keno Marley Machado não é comum e nem era para ser. Fã de Bob Marley, seu irmão mais velho se inspirou nos filhos do cantor jamaicano de reggae e no Grand Canyon, paisagem formada por acidente geográfico nos Estados Unidos, para escolher o do pugilista que já tem garantida, no mínimo, a medalha de bronze nos Jogos Pan-Americanos de Lima.

"Marley é porque meu irmão gostava muito do Bob Marley e tinha os filhos do Bob Marley que têm os nomes legais também. E o Keno é um nome com menção às grandes paisagens, o Grand Canyon", explica o baiano de Conceição de Almeida.

Parque Nacional Grand Canyon, no Arizona - Rhona Wise/AFP - Rhona Wise/AFP
Parque Nacional Grand Canyon, no Arizona
Imagem: Rhona Wise/AFP

Mas não é apenas o nome que chama a atenção. Aos 19 anos ele mede 1,90m e compete na categoria até 81kg. Desde cedo chamou a atenção em competições na Bahia até ser descoberto por um treinador que o recomendou a mudança para São Paulo quando ele tinha apenas 13 anos.

"Meu treinador Reinaldo conhecia outro de São Paulo, que tinha equipe de boxe. Na época não tinha muitas lutas na Bahia, e em São Paulo tinha muito mais. Ele perguntou se eu não queria fazer umas lutas em São Paulo. Eu fui e continuo até hoje", conta Keno.

"Fui sozinho. Ficava no alojamento da equipe na época. A maior dificuldade era estar longe da família. Eles me ajudavam, me apoiavam, mas era bem difícil. Era muito jovem", completa.

O evento no qual foi descoberto aconteceu na cidade de Cruz das Almas, terra de outro baiano de sucesso no boxe, Valdemir Pereira, o Sertão, campeão mundial dos pesos penas pela Federação Internacional de Boxe (IBF), em 2001.

"Conheci o Sertão em uma luta que fiz lá nessa cidade mesmo, e ele estava presente. Foi muito legal: ele me deu conselhos", lembra o jovem boxeador.

O aprendizado do boxe foi no mesmo local onde ele, na verdade, se inclinava mais na direção de Bob Marley. Keno fazia parte do movimento escoteiros no Projeto Quilombo, pelo qual também aprendeu a tocar instrumentos musicais. Um irmão mais velho começou a praticar boxe e ver as lutas, Foi quando se interessou em lutar.

"Gosto do Bob Marley, escuto bastante. No movimento escoteiro tinha a banda e eu tocava. Toquei também em filarmônica, flauta, violão... Sou apaixonado por música. Gosto bastante dos ritmos baianos", afirma.

Embora já treinasse em uma equipe de boxe em São Paulo desde 2013, Keno chamou a atenção no ano ado, quando conquistou a única medalha individual de ouro do Brasil nos Jogos Olímpicos da Juventude. Quando voltou para sua cidade, foi carregado em festa com caminhão de bombeiros.

"Foi muito expressivo, as pessoas que me ajudavam, todos torciam por mim. Vi que minha cidade torcia por mim, e isso motiva para conseguir mais feitos", declara o pugilista.

Keno Marley estreou na categoria até 81kg do boxe nos Jogos Pan-Americanos derrotando por pontos o canadense Harley David O'Reilly. A vitória o garantiu na semifinal para enfrentar nesta terça-feira (30), o mexicano Rogelio Romero Torres. Se ganhar, vai para a disputa do ouro contra o vencedor entre o cubano Julio La Cruz ou o venezuelano Nalek Korbaj. Se perder, já tem garantido o bronze.