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

Shakira se pronuncia pela primeira vez após música que alfineta ex; veja

Shakira alfinetou ex-marido em de música produzira por BZRP - Reprodução/YouTube
Shakira alfinetou ex-marido em de música produzira por BZRP Imagem: Reprodução/YouTube

De Splash, em São Paulo

14/01/2023 13h52Atualizada em 14/01/2023 13h52

A cantora Shakira se manifestou pela primeira vez nas redes sociais após lançar um novo single com o produtor argentino BZRP. A canção, que fala sobre um término de relacionamento, foi interpretada como uma indireta para o ex-marido dela, o jogador de futebol Gerard Piqué. Os dois se divorciaram no ano ado após 11 anos de relacionamento.

Em uma publicação nos stories do Instagram, Shakira compartilhou trechos de um editorial do jornal colombiano El Heraldo, sem entrar em muitos detalhes. O texto afirma que a "proclamação autobiográfica" é "desconfortável" e tece uma série de elogios à artista.

"Piqué danificou o lobo que agora uiva contra ele. Esta diva implacável quebra o molde sobre os silêncios convenientes em torno das separações de casais famosos e ricos, ensina outras mulheres sobre como se fortalecer depois de ser desprezada e exibe publicamente seu coração partido em mil pedaços com extraordinária dignidade", diz o trecho.

"Nada mais épico do que se vingar com fúria talentosa depois de amar sem limites e ser traída. Fim da história."

No Twitter, a cantora comemorou o sucesso da música, que entrou para o Top 50 Global do Spotify. "Isso vai para todas as mulheres que me ensinaram que quando a vida te joga limões amargos, não há outra escolha a não ser fazer uma limonada", escreveu ela.

Entenda a polêmica

A canção, lançada na quinta-feira (12), é a 53ª sessão de música do produtor BZRP. Na letra, Shakira diz que não deve voltar para alguém que "se mostra tanto como um campeão", mas quando ela mais precisou dele, "mostrou sua pior versão".

A letra ainda faz uma série de trocadilhos com o nome de Piqué e Clara, apontada como pivô da separação e atual namorada do jogador. Em determinado momento, a colombiana diz: "Ela tem o nome de uma boa pessoa. Claramente, não é o que parece."

Shakira também faz comparações com a atual namorada do ex-marido dizendo que ele "trocou uma Ferrari por um Twingo, um Rolex por um Casio".

A frase chamou das redes sociais ontem, quando Piqué, presidente da Kings League, anunciou que a Casio é a nova patrocinadora da competição de futebol.

Na transmissão, ele apontou para o relógio ao anunciar a novidade e arrancou risada de todos no estúdio. "A Casio nos deu relógios. Temos um acordo com a Casio. A Kings League chegou a um acordo com a Casio", disse Piqué.

Shakira e Piqué ficaram juntos por 11 anos e tiveram dois filhos, Milan, 9, e Sasha, 7. O divórcio veio em junho do ano ado, após a cantora descobrir que era traída. Em entrevista a Elle, ela definiu 2022 como "um ano que dificilmente poderá esquecer" e disse ter vivido o momento "mais sombrio de sua vida".