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

Mayra Cardi desabafa sobre volta com Arthur Aguiar: 'Darei meu melhor'

Mayra Cardi e Arthur Aguiar - Reprodução/Instagram
Mayra Cardi e Arthur Aguiar Imagem: Reprodução/Instagram

De Splash, em São Paulo

24/10/2021 15h48

Mayra Cardi publicou um vídeo em clima de família em seu Instagram, e nas legendas escreveu um extenso desabafo sobre a sua relação familiar e os históricos envolvendo seu pai e seu avô.

No vídeo, Cardi aparece ao lado de Arthur Aguiar e também junto à filha mais nova, Sophia, e ao filho mais velho, Lucas.

Ela relata:

Arthur Aguiar e Mayra Cardi - Reprodução/Instagram - Reprodução/Instagram
Arthur Aguiar e Mayra Cardi
Imagem: Reprodução/Instagram

"Eu sempre tive uma família 'quebrada'. Infelizmente nunca tive a oportunidade de assistir o amor dos meus pais, também não tive oportunidade de assistir o amor dos meus avós! Meu avó fez uma segunda família ainda casado com minha avó, meu pai se apaixonou por outra mulher ainda casado com minha mãe! Assisti as duas chorarem, se arrastarem, perderem a compostura, perderem a família, a esperança?. Os sonhos?. Assisti os dois mentirem. Assisti TODOS maridos, filhos e netos sofrerem as consequências de suas atitudes! Assisti eles mesmos sofrerem as consequências de suas atitudes! Os dois não estão mais vivos, os dois tiveram um fim muito triste, todos foram perdoados e TODOS se entenderam no último dia em uma cama de hospital?"

Na última quarta-feira (20), a coach havia publicado um vídeo em que aparecia aos beijos com Arthur, o que havia levantado rumores de uma nova reconciliação. O casal havia anunciado o término em abril deste ano, oito dias depois de comunicarem que estavam juntos novamente.

No desabafo, a empresária relata que sentia falta de ter uma relação melhor com figuras masculinas paternas dentro da família, e conta que "escolheu viver o novo" e "fazer diferente" de tudo o que aprendeu.

Foi difícil vir na internet mostrar minhas feridas e gritar EU QUERO E VOU FAZER DIFERENTE! Eu não tenho como prever o amanhã, assim como ninguém tem!! Mas eu agora tenho Deus e ESCOLHO viver o novo, viver o RENOVO e fazer diferente de tudo que aprendi, de tudo que nunca tive! Por mim por meus filhos e por minha família! Antes eu acreditava em mim e por isso vocês viam uma mulher forte! Hoje, acredito em Deus, quem acredita nele verá milagre, quem não acredita vai sempre torcer para que a família se acabe! Eu entendo vocês! Afinal até pouco tempo eu era a mulher que tinha a certeza que nenhum homem prestava! Hoje eu tenho a certeza que o homem que não presta ainda não tem Deus? Eu não sei o que será do amanhã, só sei que darei meu melhor SEMPRE!

Idas e vindas

Em junho, Cardi havia confessado que ainda nutria sentimentos pelo então ex-marido, que já chegou a chamar de "abusador". Respondendo a uma seguidora, ela afirmou: "Nunca falei que deixei de amar no auge da minha dor e descobertas de traições, ainda assim eu dizia que o amava. Agora que estou leve, plena e que conheço a Deus, sigo amando."