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:----uhu7soh5Tc3/5TbUASvhfd35heVD6+QF5ITBsWPkB1vpcup2TJI/EPbdTuCRDmobRN6xTBL/mJ1mJNt4wvy1oteKpiiOukWDcaNcwWkCepH6sO05XOFnStmqfJ1D4oapjId2CxROCoQwwPA55LED3q8531oVDDL+s1DqBAnY+rw8M/dAXRwC5RTbcF4ZSLP8TUl0ySZn1Q6/y+GQBVDZiNW2+6oBkliauAt+ES8vVErNPUpuo1Gg0NSPIw07kTk7dmYb+uzLo+IV+I97vHUTyjGUS0y+nlds9KoVrJ+AJ+hp8rz3nd2HPhRoQu3by7ejr3bXN6r/K1TrOuT09KWWfrNRxtYVjdgk0HITgJxFmXWkK6urTzLP5QQB3rOO06IQb3dgk0oCWMN6UyEUeOiNRbIgPxWnxQBXcQ/pqJ8r0+M/gErIcacDuhc8Yjkv+NAF5xMPHBhTnLuoiMtPM0ShUosVJHGUM2MWi5ay8Cfhf/+IRDiWFzbYM/G69PQ6G8+bjVZqTIuLZP3XoReSpEIu7ggM4AJbRQ1hc4YWZWdYqi+F11ASqnLVHBQDClTLpH+x0eCMT+kdu3hwoSrXcuBrGPCq959EgM3tiyw2oVfTdjHYh/QqoFC6DaBtXFpAd9sr2mpNKN2tRhMdNRxzM+IHu2YaB0VlnZTElR7kBKTbqpM=----ATTACHMENT:----MTE3NzU4MzI4MzAyNzg5OSA1MTk2NTI3NjM0Mzg5MDQyIDk3NDkwNzEzMzkwMzkwODg=