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

Mãe e coach milionária: quem é a atriz pornô que ouviu 'chamado de Deus'

A ex-educadora e estrela do OnlyFans Courtney Tillia - Reprodução / Instagram
A ex-educadora e estrela do OnlyFans Courtney Tillia Imagem: Reprodução / Instagram

Colaboração para Splash

27/04/2023 14h09

A ex-professora Courtney Tillia, 35, viu sua vida mudar ao se tornar modelo no OnlyFans e disse que apenas atendeu ao "chamado de Deus" de que ela se tornasse "uma estrela pornô".

Desde que deixou a docência, ela disse ter ficado milionária. Só com a venda de fotos íntimas na plataforma de conteúdo adulto, seriam R$ 5 milhões de faturamento.

Mais sobre Courtney Tillia:

Dava aula em uma escola em Phoenix, no Arizona (EUA). No entanto, sentiu que estava começando a odiar o trabalho e sentiu o reflexo disso em outras áreas da vida pessoal.

Pediu demissão em 2016 e contou com o apoio do marido, Nick, para seguir a carreira de fisiculturista e modelo fitness. Com o tempo, recebeu um convite para um ensaio fotográfico sensual e ou a produzir conteúdo para a plataforma.

Casada e mãe de quatro filhos. Courtney já disse em entrevistas não se preocupar com o que as crianças podem pensar sobre sua profissão, já que os ensina a ter uma mente aberta.

Mudança de cidade e viagens. Depois de largar a antiga profissão, Courtney deixou o Arizona e foi morar com o marido e os filhos em Los Angeles, na Califórnia (EUA). Segundo o TMZ, ela também fez algumas viagens para o Havaí, Colômbia e Jamaica.

Na época em que eu era professora, minha família tinha muitas dificuldades financeiras. O OnlyFans me permite liberdade financeira. Posso fornecer tudo o que minha família precisa e muito mais.
Courtney Tillia em entrevista ao New York Post

Diferentes fontes de renda

Milionária em três anos. No ano ado, a estrela contou ter somado mais de US$ 1 milhão (cerca de R$ 5 milhões) em aproximadamente três anos.

Fotos não são a única fonte de renda de Courtney. Ela mantém três contas no OnlyFans: uma gratuita, outra VIP e uma para a venda de produtos.

A modelo também oferece coaching individual e programas em grupo. Um deles, chamado "Bold Femininity" ("Feminilidade Ousada", na tradução livre), promete se aprofundar em temas como fundamentos da feminilidade, relacionamentos, sexo, sensualidade, entre outros.

Eu estava cansada de ver mulheres tão estressadas e exaustas, tão desconectadas de si mesmas, que nem sabiam quais eram seus desejos.
Courtney Tillia em depoimento em seu site

Ensinando a produzir conteúdo adulto. Courtney vende o "Onlyfans Training", treinamento que custa US$ 29,99 (R$ 150) e promete ensinar como criar um "conteúdo que envolve e vende", além de lidar com "medos e inseguranças" na rede.

Como ter o corpo de Courtney? Além do coaching e do treinamento para o OnlyFans, a ex-professora também vende um pacote com o que diz serem seus próprios treinos de ginástica com foco no bumbum. O valor: US$ 45 (R$ 226).