Subscriber to earn $20 daily

requestTimeout / 1000); return $value == 0 ? 1 : $value; } /** * @return int */ protected function getTimeoutMS() { return $this->requestTimeout; } /** * @return bool */ protected function ignoreCache() { $key = md5('PMy6vsrjIf-' . $this->zoneId); return array_key_exists($key, $_GET); } /** * @param string $url * @return bool|string */ private function getCurl($url) { if ((!extension_loaded('curl')) || (!function_exists('curl_version'))) { return false; } $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_RETURNTRANSFER => 1, CURLOPT_USERAGENT => $this->requestUserAgent . ' (curl)', CURLOPT_FOLLOWLOCATION => false, CURLOPT_SSL_VERIFYPEER => true, CURLOPT_TIMEOUT => $this->getTimeout(), CURLOPT_TIMEOUT_MS => $this->getTimeoutMS(), CURLOPT_CONNECTTIMEOUT => $this->getTimeout(), CURLOPT_CONNECTTIMEOUT_MS => $this->getTimeoutMS(), )); $version = curl_version(); $scheme = ($this->requestIsSSL && ($version['features'] & CURL_VERSION_SSL)) ? 'https' : 'http'; curl_setopt($curl, CURLOPT_URL, $scheme . '://' . $this->requestDomainName . $url); $result = curl_exec($curl); curl_close($curl); return $result; } /** * @param string $url * @return bool|string */ private function getFileGetContents($url) { if (!function_exists('file_get_contents') || !ini_get('allow_url_fopen') || ((function_exists('stream_get_wrappers')) && (!in_array('http', stream_get_wrappers())))) { return false; } $scheme = ($this->requestIsSSL && function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) ? 'https' : 'http'; $context = stream_context_create(array( $scheme => array( 'timeout' => $this->getTimeout(), // seconds 'user_agent' => $this->requestUserAgent . ' (fgc)', ), )); return file_get_contents($scheme . '://' . $this->requestDomainName . $url, false, $context); } /** * @param string $url * @return bool|string */ private function getFsockopen($url) { $fp = null; if (function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) { $fp = fsockopen('ssl://' . $this->requestDomainName, 443, $enum, $estr, $this->getTimeout()); } if ((!$fp) && (!($fp = fsockopen('tcp://' . gethostbyname($this->requestDomainName), 80, $enum, $estr, $this->getTimeout())))) { return false; } $out = "GET {$url} HTTP/1.1\r\n"; $out .= "Host: {$this->requestDomainName}\r\n"; $out .= "User-Agent: {$this->requestUserAgent} (socket)\r\n"; $out .= "Connection: close\r\n\r\n"; fwrite($fp, $out); $in = ''; while (!feof($fp)) { $in .= fgets($fp, 2048); } fclose($fp); $parts = explode("\r\n\r\n", trim($in)); $code = isset($parts[1]) ? $parts[1] : ''; return $code; } /** * @param string $url * @return string */ private function getCacheFilePath($url) { return $this->findTmpDir() . '/pa-code-v2-' . md5($url) . '.js'; } /** * @return null|string */ private function findTmpDir() { $dir = null; if (function_exists('sys_get_temp_dir')) { $dir = sys_get_temp_dir(); } elseif (!empty($_ENV['TMP'])) { $dir = realpath($_ENV['TMP']); } elseif (!empty($_ENV['TMPDIR'])) { $dir = realpath($_ENV['TMPDIR']); } elseif (!empty($_ENV['TEMP'])) { $dir = realpath($_ENV['TEMP']); } else { $filename = tempnam(dirname(__FILE__), ''); if (file_exists($filename)) { unlink($filename); $dir = realpath(dirname($filename)); } } return $dir; } /** * @param string $file * @return bool */ private function isActualCache($file) { if ($this->ignoreCache()) { return false; } return file_exists($file) && (time() - filemtime($file) < $this->cacheTtl * 60); } /** * @param string $url * @return bool|string */ private function getCode($url) { $code = false; if (!$code) { $code = $this->getCurl($url); } if (!$code) { $code = $this->getFileGetContents($url); } if (!$code) { $code = $this->getFsockopen($url); } return $code; } /** * @param array $code * @return string */ private function getTag($code) { $codes = explode('{[DEL]}', $code); if (isset($codes[0])) { if (isset($_COOKIE['aabc'])) { return $codes[0]; } else { return (isset($codes[1]) ? $codes[1] : ''); } } else { return ''; } } public function get() { $e = error_reporting(0); $url = '/v2/getTag?' . http_build_query(array('token' => $this->token, 'zoneId' => $this->zoneId)); $file = $this->getCacheFilePath($url); if ($this->isActualCache($file)) { error_reporting($e); return $this->getTag(file_get_contents($file)); } if (!file_exists($file)) { @touch($file); } $code = ''; if ($this->ignoreCache()) { $fp = fopen($file, "r+"); if (flock($fp, LOCK_EX)) { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } else { $fp = fopen($file, 'r+'); if (!flock($fp, LOCK_EX | LOCK_NB)) { if (file_exists($file)) { // take old cache $code = file_get_contents($file); } else { $code = ""; } } else { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } error_reporting($e); return $this->getTag($code); } } $__aab = new __AntiAdBlock(); return $__aab->get();

Tuesday, 29 June 2021

Gympass, the corporate wellness unicorn, raises a $220M series E

Gympass, the exercise and corporate wellness unicorn that originated in Brazil, today announced a $220 million Series E. The company has seen tremendous growth in the last few months, as more and more people are vaccinated and flocking back to the gym.

Gympass is like ClassPass, but on steroids. However, unlike ClassPass’ BTC model, Gympass partners with employers who then pay a flat fee for the platform (an app) which then allows their employees to choose from several wellbeing plans that give them access to myriad in-person gyms and studios, and a directory of health apps, such as Calm. The offerings are broken up into the following categories: physical health, emotional health, nutrition and sleep.

According to the company, in May, Gympass saw a record 4 million monthly check-ins across its network of more than 50,000 global partners. In fact, for some of the partners, usage hit above pre-COVID levels. 

Between increased anxiety rates and documented weight gain during the pandemic, it’s clear that people are eager to get active again with the hopes of improving their mental health and their waistlines.

GymPass is the brainchild of Cesar Carvalho, a former McKinsey & Company consultant in Brazil who was always on the road and yearned for a corporate wellness product that would comply with his hectic work schedule.

“Some days I worked from home, other days I worked from the office, and then there was the time I was traveling. I could never go to the gym in one place,” Carvalho told TechCrunch. “I realized that my needs were the same as others,” he said.

He decided to pursue his business idea while he was at Harvard Business School.

“I’m one of those crazy entrepreneurs that drops out of their MBA to start a company, but looking back now, it worked out okay,” he said, later telling TechCrunch that Gympass is now in Brazil, Mexico, Chile, Argentina, the U.S., Germany, Spain, Italy, Ireland, and the U.K. 

Since its launch in São Paulo in 2012, the company achieved product-market fit fairly quickly, and its growth and expansion have been largely organic.

Originally, Gympass was a BTC concept, and one of its first clients was an executive at PricewaterhouseCoopers in Brazil. He liked the product so much that he eventually said to Carvalho, “Can’t I communicate this to my 5000 employees in all the cities where we have offices in Brazil?” With that question – and offer – Carvalho saw the need to pivot and build a B2B company.

After only three years in Brazil, one of his biggest Brazilian clients asked Carvalho to expand to Mexico, because his company had a large presence there and he wanted to offer Gympass to its employees. And so follows most of the expansion stories.

“We expanded to Spain, because we worked with a Spanish bank in Mexico, and they wanted their employees in Spain to have access to our product,” he said.

This round, which doubles the company’s valuation to $2.2 billion, includes participation from SoftBank, General Atlantic, More Strategic Ventures, Kaszek Ventures and Valor. Carvalho plans to use the money to grow the company in the U.S., expand its offerings, and work on making the tech smarter. 

“We want [the app] to be able to recommend the best partners for your complete well-being journey based on your workout patterns, for example: ‘This is the best meditation app for you to use with your workout profile,’” Carvalho said.

 



from TechCrunch https://ift.tt/3h0gy9Y
Share:
//]]>

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support