PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB` data = [ 'css' => 0, ]; } private function __clone() { } /** * @return self */ public static function instance() { if (is_null(self::$instance)) { self::$instance = new self(); self::$instance->clean(); } return self::$instance; } /** * Filter the output buffer contents. * * @param string $buffer Contents of the output buffer. * * @return string */ public function startOutputBuffering($buffer) { if (empty($buffer)) { $this->empty_buffer_occurred++; return $buffer; } $this->scanForBlockingCss($buffer); return $buffer; } /** * Flush the output buffer. * * @return void */ public function stopOutputBuffering() { if (ob_get_contents()) { ob_end_flush(); } } /** * Looks for blocking CSS resources in given HTML code. * * The number of found resources is added to a local counter. * * @param string $html * * @return void */ private function scanForBlockingCss($html) { $parser = new CssResourceParser(); $parser->parse($html); $this->css_resource_count += $parser->getCount(); } /** * @return array */ public function getData() { $value = $this->css_resource_count; if (0 === $value && $this->empty_buffer_occurred > 0) { $value = $this->empty_buffer_occurred * -1; } return [ 'css' => $value, ]; } /** * {@inheritDoc} */ public function getXrayData() { return $this->getData(); } /** * {@inheritDoc} */ public function clean() { $this->css_resource_count = 0; $this->empty_buffer_occurred = 0; $this->data = []; return $this; } } }