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

Copa do Brasil - 2022

Goiás vence Bragantino nos pênaltis e vai às oitavas da Copa do Brasil

Matheus Sales, do Goiás, comemora gol sobre o Red Bull Bragantino - LUCAS ALMEIDA/MYPHOTO PRESS/ESTADÃO CONTEÚDO
Matheus Sales, do Goiás, comemora gol sobre o Red Bull Bragantino Imagem: LUCAS ALMEIDA/MYPHOTO PRESS/ESTADÃO CONTEÚDO

[email protected] (Redação)

31/05/2022 23h49

O Goiás é o último classificado para as oitavas de final da Copa do Brasil. Após vitória por 1 a 0 no tempo normal, o time goiano assegurou um dramático triunfo por 9 a 8 nas penalidades e fez a festa no estádio Nabi Abi Chedid.

Matheus Sales foi o autor do único gol do jogo, que levou a partida aos pênaltis. Isso porque, na ida, o time de Bragança Paulista venceu por 2 a 1.

Agora, a equipe espera o sorteio para saber quem será o adversário nas oitavas de final da competição. A definição acontece na próxima terça-feira, às 15h (de Brasília).

A equipe de Maurício Barbieri volta a campo neste domingo para enfrentar o Internacional, às 19 horas, pela nona rodada do Brasileirão, também no Nabi Abi Chedid. Já o Goiás enfrenta o Botafogo, na segunda-feira, às 20 horas.

Primeiro tempo

O Bragantino começou melhor a partida e incomodou logo no primeiro minuto. Hurtado invadiu a área e finalizou ao gol, mas foi bloqueado pela defesa alviverde. Na sequência, Luan Cândido mandou para fora. Já aos 14, Artur cobrou falta com perigo e viu Tadeu defender para manter o zero no placar.

Apesar de melhor na partida, o Bragantino não conseguiu aproveitar as oportunidades criadas e sofreu o gol aos 43 na primeira grande chegada do Goiás ao ataque. Nicolas recebeu na área e cruzou para Matheus Sales que finalizou no canto de Cleiton para abrir o placar.

Segundo tempo

Aos 12 minutos, Ytalo levou perigo, mas cabeceou para fora. O duelo seguiu brigado, mas sem chances claras para nenhum dos lados. Contudo, a equipe de Bragança Paulista quase deixou tudo igual por volta dos 30 minutos, quando Helinho arriscou de fora da área e viu Tadeu fazer a defesa. Na reta final da segunda etapa, o Massa Bruta pressionou, no entanto, o goleiro esmeraldino salvou a equipe com mais uma ótima defesa.

Nos acréscimos, o Bragantino chegou a marcar com Jan Hurtado, mas o árbitro marcou falta do jogador no lance e anulou o que seria o empate dos paulistas.

Pênaltis

Dando início às cobranças, Felipe Bastos parou na defesa de Cleiton. Na sequência, Tadeu pegou o chute de Artur. Depois, Nicolas também viu o goleiro da equipe paulista defender a cobrança. Já Lucas Evangelista abriu a contagem para o Bragantino. Matheus Sales também fez o primeiro do Goiás. Hurtado cobrou no alto e voltou a colocar o Massa Bruta na frente.

Danilo Barcelos também fez para o Esmeraldino, enquanto Luan Cândido cobrou no ângulo e marcou para o Bragantino. Matheusinho marcou o terceiro do Goiás. Já Alerrandro cobrou e viu Tadeu fazer mais uma defesa. Na sequência, Cleiton defendeu a de Caetano e Tadeu, a de Aderlan. Depois, Tadeu cobrou forte e marcou. Cleiton também fez para os paulistas. Sidimar também fez, assim como Natan.

Dando continuidade, Reynaldo cobrou e marcou; Jadsom também. Auremir fez para o Goiás e Bruno Tubarão para o Massa Bruta. Maguinho também mandou no ângulo. Kevin converteu para os paulistas, e Cleiton defendeu a de Danilo Barcelos. Em seguida, Tadeu defendeu mais uma de Artur e Felipe Bastos fez. Por fim, Aderlan desperdiçou e o Bragantino acabou eliminado.