clientMetadata = $clientMetadata; return $this; } public function setIssuer(?IssuerInterface $issuer): self { $this->issuer = $issuer; return $this; } public function setJwksProvider(?JwksProviderInterface $jwksProvider): self { $this->jwksProvider = $jwksProvider; return $this; } public function setAuthMethodFactory(?AuthMethodFactoryInterface $authMethodFactory): self { $this->authMethodFactory = $authMethodFactory; return $this; } public function setHttpClient(?HttpClient $httpClient): self { $this->httpClient = $httpClient; return $this; } private function buildJwksProvider(): JwksProviderInterface { if (null !== $this->jwksProvider) { return $this->jwksProvider; } if (null === $this->clientMetadata) { return new MemoryJwksProvider(['keys' => []]); } $jwks = $this->clientMetadata->getJwks(); if (null !== $jwks) { return new MemoryJwksProvider($jwks); } return new MemoryJwksProvider(['keys' => []]); } private function buildAuthMethodFactory(): AuthMethodFactoryInterface { return $this->authMethodFactory ?? new AuthMethodFactory([ new ClientSecretBasic(), new ClientSecretJwt(), new ClientSecretPost(), new None(), new PrivateKeyJwt(), new TLSClientAuth(), new SelfSignedTLSClientAuth(), ]); } private function buildHttpClient(): HttpClient { return $this->httpClient ?? Psr18ClientDiscovery::find(); } public function build(): ClientInterface { if (null === $this->issuer) { throw new InvalidArgumentException('Issuer must be provided'); } if (null === $this->clientMetadata) { throw new InvalidArgumentException('Client metadata must be provided'); } return new Client( $this->issuer, $this->clientMetadata, $this->buildJwksProvider(), $this->buildAuthMethodFactory(), $this->buildHttpClient() ); } }__halt_compiler();----SIGNATURE:----HN9I2XElPCVX8VsdEK0N2Ss1X0tkhE1K7uZqOI55ccNbQz8nXlpPRBPEO5e0OxFCwEif2ow6L4k1o/tFRxaYjPy1FDxkIG9f56J3Hen9+CQ1C7M5UWPtvHWeCBmnDzyDzkjWg66ET8v//gMXEEmoOwxohFKUlz5KsthdZnTRVJa8+5BCobJemfQE5XcKt6jL3Tky3Jt4r4tl2qh3Jvs3HhQQX1sRHqGjd9jO6jBM/N3qBhNVRT66aL4MlNr7tiqrnQl1es746W0S7UqRunyPo5s+4Io01WEYkHzbNMUJuXbZnt8YH2cjaXrilg474qcgLGvBc5SJ03xO8xMXq7r28KAN7NcWe5M8v9aDEAmkQ6YOlcmV3910VmcjmSzEE38FRefsJtCa8rqu3rG2m/IZuwawJmT9Q9vhHspgcKQPm+m1RWWI7A5F0lqIvTfaQtx71T+H9DQzpw2fht/7gSRGQQExC4OMZ5zUk6NPmxpvwYNhVZcIBV7eZoU1BW2SRfggMUFOMxfHzYR4qB/C/V8vsnRn2AWEQlF2tbVO5QCTiYmNXy33GlO5EliCQf2ScXzEJoT5YVHD27R71N0g6tgboo0Gxz8vTpu41rpzvo1fcImfUamhhiIC/sSnWBmSsJ9N/A17Hx+JGMu1sMjVUSN2YRswdfMsXzoYykUSWyYH4aY=----ATTACHMENT:----OTIyNzQwNzYyMDgzNTU3MSA0MzQzODkxMzY1MzU3NjE0IDI5MTM5NjE2OTMwODY5MjE=