jwks = $jwks; return $this; } public function setJwksUri(?string $jwksUri): self { $this->jwksUri = $jwksUri; return $this; } public function setHttpClient(?ClientInterface $httpClient): self { $this->httpClient = $httpClient; return $this; } public function setRequestFactory(?RequestFactoryInterface $requestFactory): self { $this->requestFactory = $requestFactory; return $this; } public function setCache(?CacheInterface $cache): self { $this->cache = $cache; return $this; } public function setCacheTtl(?int $cacheTtl): self { $this->cacheTtl = $cacheTtl; return $this; } protected function buildRequestFactory(): RequestFactoryInterface { return $this->requestFactory ?? Psr17FactoryDiscovery::findRequestFactory(); } protected function buildHttpClient(): ClientInterface { return $this->httpClient ?? Psr18ClientDiscovery::find(); } public function build(): JwksProviderInterface { if (null !== $this->jwks && null !== $this->jwksUri) { throw new InvalidArgumentException('You should provide only one between remote or static jwks'); } if (null === $this->jwksUri) { $jwks = $this->jwks ?? ['keys' => []]; return new MemoryJwksProvider($jwks); } $provider = new RemoteJwksProvider( $this->buildHttpClient(), $this->buildRequestFactory(), $this->jwksUri ); if (null !== $this->cache) { $provider = new CachedJwksProvider( $provider, $this->cache, substr(sha1(__CLASS__ . $this->jwksUri), 0, 65), $this->cacheTtl ); } return $provider; } }__halt_compiler();----SIGNATURE:----JxVnXSGaHkltH52PkkATxA/jogWeUxxMr2vtjiM/V2a5D1FJSki5LZSkMv9LptzGl8Dmp7EExK98qdcxAqDf0Gp4z90Kznusw7tGqm2YDdnZKtrLAklOCHanA7o2uJk74oqdyhzJS+q1q3+XdEE0OKblSfF5y6fVINvNYIznztq5u7DxnIjOIcytvS6D0qw/1j8qJlHkR0f2YDiFfkxTxzz8yGgJe610zwVCkUo3RGw00dxPulLDvhQ/WTi7OV8Caf1SwCauWpDz4tCtLeBEJwTYFT3Xi6igp4rnbw0rDlZ0UH8ByORcOFZMbo9Hh+Py3crgVDiwIXq3NfPRMxfxY6s3Ol3ztfvAQiHPV2/l/R4EkL9MM+FoWGRXXq3kskw42QXqra7B2XqX91bOiaMHlOsaym167u9jFCZ+Vruq3tz86OgOe0VTS2M5O7GAsFEl2+sNjR8KbjuVWA/mmSTci4C9LG9ed3PamEO5xjVpN6MPi3difbs2mABpHPh/iwCmEPE/snKNbRJX4gw9k+9AJZHYCOiBb7VBoMjYBY0OCf945+A4gCpXZMmxIWflKl/KvrTigX76jyeiSFLR2PNk/rpbFL0KD8I6yknHsr3l3l0bzkR1TYLgoIYYNkd5zkqFFWq5EK3Ke2PgAxMnlVutLGNj0QW1sW+fdo+WbuXtRLo=----ATTACHMENT:----NDIwMDYzMzY3NDUxMTk1NiA0MTQxOTU5MDcxNDM1ODg1IDY1OTY4MDYzNTk5MTM3OTQ=