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

Negra Li celebra 24 anos de carreira: 'Podemos, sim, mudar nossa realidade'

Negra Li lança hoje "Era Uma Vez Liliane", a primeira música de seu novo álbum - Divulgação
Negra Li lança hoje 'Era Uma Vez Liliane', a primeira música de seu novo álbum Imagem: Divulgação

Luiza Missi

De Splash, em São Paulo

14/04/2022 09h53

Às 21h de hoje, Negra Li lança "Era Uma Vez Liliane", música em que reflete sobre sua trajetória, suas conquistas e os desafios que precisou enfrentar em 24 anos de carreira. Recém-eliminada do "The Masked Singer Brasil", ela reflete em entrevista a Splash:

"Com essa canção, além de celebrar a minha ascensão artística e social, eu quero inspirar as pessoas a acreditar em si mesmas e mostrar que elas também podem dar certo na vida. Basta manter o pensamento positivo e ir à luta. Nós podemos, sim, mudar nossa realidade."

O clipe da música será lançado amanhã e tem a participação de seu filho Noah, de quatro anos. Na letra, ela comemora o fato de que pode proporcionar a seus filhos uma infância diferente da sua: "Virei o jogo, de Brasilândia à Nova Zelândia. Brinquei na rua, mas meus filhos brincam na Disneylândia".

"'Era Uma Vez Liliane' a a limpo minha trajetória, mostrando que é possível sonhar e realizar, mesmo que você venha de um lugar humilde, onde as pessoas não têm muita perspectiva de futuro. E não tem como falar da minha história sem falar em racismo, resistência e empoderamento", reflete a cantora.

E completa: "A vida sempre exigiu de mim força, coragem e, embora tenha encontrado muitas pessoas generosas pelo caminho, as minhas conquistas sempre dependeram muito de mim".

Confira a letra de "Era Uma Vez Liliane":

Era uma vez Liliane
Filha de professora,
Matéria da vida
Dona Neuza
Eu tô na corrida, lembro escola
Tinha bolsa
Nada no bolso
Vivia sempre no calabouço
No meio da perifa
Queria mais que aquilo
Não virar alvo de tiro
Melhor lugar pros meus filhos
Corri pra buscar
Deus que deu meu brilho
Não saí do trilho
Não olhei pro lado
E olha que era difícil não comparar
Minha vida
Com quem tinha até demais
De sobra
Tipo que não ouve não
E não era só eu
Até hoje as minas como eu

Não tão acostumadas se ver na televisão
E sonhar com um mundo um pouco melhor
Espalhar
Mais sorriso por aqui
Olhar pro espelho saber que o tempo ou correndo e que hoje a Liliane lá do bairro virou Negra Li

Nunca foi fácil ser mulher de aço
Mas tive que ser
Hoje posso ser
Tudo o que eu quiser

Eu vim de baixo mas aqui do alto
Sei o que é viver
Não é sobreviver
É sobre viver

Lenda viva, preta diva
Negra Li 4-2 contrariando a estatística
Eis-me aqui
Virei o jogo de Brasilândia à Nova Zelândia
Brinquei na rua mas meus filhos brincam na Disneylândia
Os hit os feats Dina Di, Charlie Brown, Akon
A mãe também on
Quer mais açúcar ou tá bom?
Relembro a trajetória do conforto do edredom
É bom lembrar vim de um lugar onde rap é o som
Hoje eu sou tudo o que eu queria
Saí da periferia mas a periferia não saiu de mim
Aprendi com RZO com o saudoso sabotah
Eu nunca fui de sabotar quem correu por mim
Sempre soube que não ia ser fácil o caminho de uma mulher preta
No meio de vários MC
Dona Márcia me jogou pra cima me deu esperança de chegar mais longe
Hoje eu tô aqui!

Nunca foi fácil ser mulher de aço
Mas tive que ser
Hoje posso ser
Tudo o que eu quiser

Eu vim de baixo mas aqui do alto
Sei o que é viver
Não é sobreviver
É sobre viver