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

Gisele Bündchen e Tom Brady anunciam fim do casamento após 13 anos

De Splash, em São Paulo

28/10/2022 11h06Atualizada em 28/10/2022 15h00

Após 13 anos, o casamento de Gisele Bündchen, 42 anos, e Tom Brady, 45, chegou ao fim. Os dois anunciaram o divórcio em seu Instagram:

"É com muita gratidão pelo nosso tempo juntos que Tom e eu assinamos nosso divórcio de forma amigável. Minha prioridade sempre foi e continuará sendo nossos filhos, que amo com todo o meu coração", escreveu a modelo.

"Vamos continuar colaborando para dar a eles o amor, o carinho e a atenção que eles tanto merecem. A decisão de terminar um casamento nunca é fácil, mas nos distanciamos e, ao mesmo tempo em que obviamente é difícil ar por isso, me sinto abençoada pelo tempo que amos juntos e sempre desejo apenas o melhor ao Tom."

"Peço gentilmente que nossa privacidade seja respeitada neste momento sensível", concluiu Gisele.

Tom Brady também se pronunciou: "Nos últimos dias, minha esposa e eu finalizamos o nosso divórcio após 13 anos de casamento. Chegamos a essa decisão de forma amigável, e com gratidão pelo tempo que amos juntos. Fomos abençoados com filhos maravilhosos que vão continuar sendo o centro do nosso mundo. Vamos continuar trabalhando juntos como pais para garantir que eles recebam o amor e atenção que merecem".

"Chegamos à decisão de terminar o casamento após muita consideração. É claro que fazer isso é dolorido e difícil, como é para muitas pessoas que am por isso todos os dias ao redor do mundo. Mas desejamos o melhor um ao outro enquanto seguimos os novos capítulos de nossas vidas que ainda serão escritos."

Segundo o site norte-americano TMZ, os dois estão negociando os termos do divórcio desde o início de setembro, e já entraram num acordo sobre a separação de bens e a guarda compartilhada dos filhos.

Gisele e Tom Brady se conheceram em dezembro de 2006, e se casaram três anos depois. Eles são pais de Benjamin, 12 anos, e Vivian, 9.

O site afirma que, durante a negociação do divórcio, a modelo ou a maior parte de seu tempo em Miami, com um curandeiro espiritual. Já Tom Brady tem focado no trabalho — que é, dizem rumores, o principal motivo do término.

"Gisele disse a Tom que ou ele deixa o futebol para ar um tempo com a família ou ela se vai para sempre. Ela não quer que ele continue se machucando e não possa aproveitar a vida no futuro. Ela está fazendo isso por sua família", disse uma fonte ao jornal Us Weekly.

No início deste ano, Tom Brady anunciou sua aposentadoria dos campos de futebol americano. Um mês depois, no entanto, voltou atrás. A decisão teria abalado o relacionamento com a supermodelo, que está fora das arelas desde 2015.

"Ela ficou abalada com isso por muito tempo e ainda é difícil, mas ela sente que precisa seguir em frente. Ela não acredita que o casamento possa ser recuperado", disse uma fonte à revista People.

À mesma revista, uma pessoa próxima a Tom Brady afirmou: "Ela é quem está conduzindo o divórcio. Ela está jogando no ataque, e ele na defesa. Ele quer proteger a si mesmo e a seus interesses, mas ele só começou a tomar medidas legais para se defender dela. Ele não quer que isso fique feio, não quer brigar. Se o divórcio está acontecendo — e parece que está —, ele quer que seja o mais tranquilo possível".