)]}'
{
  "log": [
    {
      "commit": "fb6b3fa671153ad3378d60be5a67620f408557d4",
      "tree": "ac99ca8d1f1dfcf9774db22ff554fa28e125b63b",
      "parents": [
        "2d02e607ed0c00557cc6ad7b45d98b05ce9330a1"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Thu Apr 23 20:23:28 2026 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Tue Apr 28 01:21:25 2026 -0700"
      },
      "message": "Bazel: switch oauth BUILD to native ext_deps support\n\nUse native `ext_deps` support in `gerrit_plugin()` and\n`gerrit_plugin_tests()` in the oauth plugin BUILD file.\n\nDeclare external dependencies as Maven coordinates instead of generated\nBazel labels, and share common test dependencies through `EXT_DEPS`.\n\nThis removes repeated `@oauth_plugin_deps//...` labels, avoids explicit\ntest target naming and manual `:oauth__plugin` wiring, and drops the\nseparate call to `gerrit_plugin_dependency_tests()`.\n\nChange-Id: Ib076fc310be6b0b75b17dff7d80e25defdd2b728\n"
    },
    {
      "commit": "2d02e607ed0c00557cc6ad7b45d98b05ce9330a1",
      "tree": "727829865e6d6e42f708e65d0568a6cfcd102674",
      "parents": [
        "7eb61bb2e58358771b602f4d0da169c602ad5615",
        "eb885641b41e533b908ff9743ccb0676938e5b7b"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Thu Apr 23 14:51:07 2026 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Thu Apr 23 14:51:07 2026 +0200"
      },
      "message": "Merge branch \u0027stable-3.14\u0027\n\n* stable-3.14:\n  Discovery OAuth: Validate discovery config and add tests\n  Discovery OAuth: support generic OAuth via well-known discovery URL\n  Bump scribejava to 8.3.3 and jackson to 2.21.1\n\nChange-Id: I9f8bed23c9ad1e6507a167c74d7d982575c328bc\n"
    },
    {
      "commit": "eb885641b41e533b908ff9743ccb0676938e5b7b",
      "tree": "11f7639708fcb0f4514578ec4482fa8a5052dac6",
      "parents": [
        "3b1b501f90181a0b84bf625d91f2235177c21907"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Sun Mar 22 10:08:12 2026 +0100"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Tue Apr 21 10:22:34 2026 +0200"
      },
      "message": "Discovery OAuth: Validate discovery config and add tests\n\nRefactor the DiscoveryOAuthService to improve robustness and\nmaintainability.\n\n* Validation:\n  - Add validateRootUrl to ensure the configured root-url is valid and\n    uses http/https.\n  - Add validateDiscoveryDocument to verify that the provider\u0027s\n    response contains all required OIDC endpoints (issuer, auth,\n    token, and userinfo) and that they are absolute URLs.\n  - Automatically trim trailing slashes from the root-url to prevent\n    double-slashes in the final discovery path.\n  - Add null-safety checks in DiscoveryApi.\n\n* Performance:\n  - Use Guava\u0027s CharStreams for more efficient stream-to-string\n    conversion, replacing manual BufferedReader loops.\n\n* Testing:\n  - Add DiscoveryApiTest for unit testing the ScribeJava API bridge.\n  - Add DiscoveryOAuthServiceTest with high coverage, including\n    mocking the discovery process and testing various failure modes\n    (malformed URLs, missing JSON fields, and HTTP errors).\n\nFeature: https://github.com/davido/gerrit-oauth-provider/issues/134\nChange-Id: I961c0a0e13511c4134e24a98c36e83aa12ea5c3c\n"
    },
    {
      "commit": "3b1b501f90181a0b84bf625d91f2235177c21907",
      "tree": "02bb5d49e3c54b7d10b8ab43b06e87c5a07a5efd",
      "parents": [
        "c3a06e3f5b8d42d78625cdd2983b725c90e10b2b"
      ],
      "author": {
        "name": "Kai Liu",
        "email": "kraml.liu@gmail.com",
        "time": "Sat Mar 21 11:49:38 2026 +0800"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Tue Apr 21 10:22:10 2026 +0200"
      },
      "message": "Discovery OAuth: support generic OAuth via well-known discovery URL\n\nThis is ported from https://github.com/davido/gerrit-oauth-provider/pull/179,\nwith below changes:\n\n  - Adapt to the latest master branch.\n  - Formatted by GJF to follow the project style.\n  - Add doc.\n  - Translated Chinese code comments to English.\n\nCredit goes to the origin author @Philogag.\n\nFeature: https://github.com/davido/gerrit-oauth-provider/issues/134\nChange-Id: I2145a365cc9ddc21972a7c66d87aabd4cb1c1eb8\nSigned-off-by: Kai Liu \u003ckraml.liu@gmail.com\u003e\n"
    },
    {
      "commit": "c3a06e3f5b8d42d78625cdd2983b725c90e10b2b",
      "tree": "52eda54a83b86779107bc433a038fe03007f37b9",
      "parents": [
        "e53ff8dd02d0c818df6ec1a5944b340005e2c194"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Sun Jul 14 16:04:57 2024 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Tue Apr 21 10:22:00 2026 +0200"
      },
      "message": "Bump scribejava to 8.3.3 and jackson to 2.21.1\n\nUpdate ScribeJava and Jackson Databind to newer versions.\n\nWith ScribeJava 8.x, Java 8 specific functionality has been moved to a\nseparate \u0027scribejava-java8\u0027 module. Since this is now a transitive\ndependency of scribejava-apis, we update the dependency lockfile and\ninclude it in our third-party runtime JARs allowlist to ensure it is\ncorrectly bundled into the plugin artifact.\n\nThe Jackson bump ensures compatibility with the newer ScribeJava release\nand addresses potential security vulnerabilities in the older 2.10.x\nline.\n\nChange-Id: I27a4a1946b3f3e0eecf6dfd045d854cdd80dcb76\n"
    },
    {
      "commit": "7eb61bb2e58358771b602f4d0da169c602ad5615",
      "tree": "727829865e6d6e42f708e65d0568a6cfcd102674",
      "parents": [
        "38eaa22d3d238942ff176a06e740ffd7f349f643"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Thu Apr 16 04:48:53 2026 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Thu Apr 16 04:48:53 2026 +0200"
      },
      "message": "Reduce boilerplate code by using gerrit_plugin_dependency_tests\n\nChange-Id: Id46b6ab88450c6dbf8850e7f3ba8f9f8efbddfa1\n"
    },
    {
      "commit": "38eaa22d3d238942ff176a06e740ffd7f349f643",
      "tree": "99b964dae231a4b2f079833acd92596cdbc750e6",
      "parents": [
        "1ee68cbd415aa4082d0808b6883189f65d1632ed"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Sat Mar 21 13:53:39 2026 +0800"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Thu Apr 16 04:42:23 2026 +0200"
      },
      "message": "Discovery OAuth: Add optional PKCE support\n\nAdd support for Proof Key for Code Exchange (PKCE) in the Discovery\nOAuth provider to improve security of the authorization code flow.\n\nWhen `enable-pkce \u003d true`:\n- Generate a PKCE code verifier/challenge during authorization\n- Return verifier alongside the authorization URL\n- Include verifier when exchanging the authorization code for a token\n\nThis is disabled by default to preserve backward compatibility with\nproviders that do not support PKCE.\n\nNOTE: This change depends on a Gerrit core update that extends the\nOAuthServiceProvider API (OAuthAuthorizationInfo and PKCE-aware\ngetAccessToken). The plugin will not work with older Gerrit versions.\n\nAlso:\n- Update configuration and documentation\n- Add unit tests covering PKCE authorization and token exchange flows\n\nContributed-By: Kai Liu \u003ckraml.liu@gmail.com\u003e\nChange-Id: I56fa0f4d50333a2c568d95c31c78f2de3afed661\n"
    },
    {
      "commit": "1ee68cbd415aa4082d0808b6883189f65d1632ed",
      "tree": "902b794748a6ccece43131aa3d2075f1a7d02a7a",
      "parents": [
        "775e886efab693987170bead272f86159ea3fd1a",
        "f255dcc44146a48eb9121133a46dd14cf1b1aeb9"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david.ostrovsky@gmail.com",
        "time": "Tue Apr 14 03:06:20 2026 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 14 03:06:20 2026 -0700"
      },
      "message": "Merge \"[SAP IAS] Fix thread-safety race condition in PKCE handling\""
    },
    {
      "commit": "775e886efab693987170bead272f86159ea3fd1a",
      "tree": "11f7639708fcb0f4514578ec4482fa8a5052dac6",
      "parents": [
        "42bd33146977e837e0a33aa08dc759e0ef72fae1"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Sun Mar 22 10:08:12 2026 +0100"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Mon Mar 23 09:01:17 2026 +0100"
      },
      "message": "Discovery OAuth: Validate discovery config and add tests\n\nRefactor the DiscoveryOAuthService to improve robustness and\nmaintainability.\n\n* Validation:\n  - Add validateRootUrl to ensure the configured root-url is valid and\n    uses http/https.\n  - Add validateDiscoveryDocument to verify that the provider\u0027s\n    response contains all required OIDC endpoints (issuer, auth,\n    token, and userinfo) and that they are absolute URLs.\n  - Automatically trim trailing slashes from the root-url to prevent\n    double-slashes in the final discovery path.\n  - Add null-safety checks in DiscoveryApi.\n\n* Performance:\n  - Use Guava\u0027s CharStreams for more efficient stream-to-string\n    conversion, replacing manual BufferedReader loops.\n\n* Testing:\n  - Add DiscoveryApiTest for unit testing the ScribeJava API bridge.\n  - Add DiscoveryOAuthServiceTest with high coverage, including\n    mocking the discovery process and testing various failure modes\n    (malformed URLs, missing JSON fields, and HTTP errors).\n\nFeature: https://github.com/davido/gerrit-oauth-provider/issues/134\nChange-Id: I961c0a0e13511c4134e24a98c36e83aa12ea5c3c\n"
    },
    {
      "commit": "42bd33146977e837e0a33aa08dc759e0ef72fae1",
      "tree": "02bb5d49e3c54b7d10b8ab43b06e87c5a07a5efd",
      "parents": [
        "a9a4be6afcbc1910372031bed43287edd3aae6e1"
      ],
      "author": {
        "name": "Kai Liu",
        "email": "kraml.liu@gmail.com",
        "time": "Sat Mar 21 11:49:38 2026 +0800"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Mon Mar 23 08:55:32 2026 +0100"
      },
      "message": "Discovery OAuth: support generic OAuth via well-known discovery URL\n\nThis is ported from https://github.com/davido/gerrit-oauth-provider/pull/179,\nwith below changes:\n\n  - Adapt to the latest master branch.\n  - Formatted by GJF to follow the project style.\n  - Add doc.\n  - Translated Chinese code comments to English.\n\nCredit goes to the origin author @Philogag.\n\nFeature: https://github.com/davido/gerrit-oauth-provider/issues/134\nChange-Id: I2145a365cc9ddc21972a7c66d87aabd4cb1c1eb8\nSigned-off-by: Kai Liu \u003ckraml.liu@gmail.com\u003e\n"
    },
    {
      "commit": "a9a4be6afcbc1910372031bed43287edd3aae6e1",
      "tree": "52eda54a83b86779107bc433a038fe03007f37b9",
      "parents": [
        "e53ff8dd02d0c818df6ec1a5944b340005e2c194"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Sun Jul 14 16:04:57 2024 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Sun Mar 22 21:25:50 2026 +0100"
      },
      "message": "Bump scribejava to 8.3.3 and jackson to 2.21.1\n\nUpdate ScribeJava and Jackson Databind to newer versions.\n\nWith ScribeJava 8.x, Java 8 specific functionality has been moved to a\nseparate \u0027scribejava-java8\u0027 module. Since this is now a transitive\ndependency of scribejava-apis, we update the dependency lockfile and\ninclude it in our third-party runtime JARs allowlist to ensure it is\ncorrectly bundled into the plugin artifact.\n\nThe Jackson bump ensures compatibility with the newer ScribeJava release\nand addresses potential security vulnerabilities in the older 2.10.x\nline.\n\nChange-Id: I27a4a1946b3f3e0eecf6dfd045d854cdd80dcb76\n"
    },
    {
      "commit": "f255dcc44146a48eb9121133a46dd14cf1b1aeb9",
      "tree": "e0a2cad3e67f0e9e24a0a51cf2b72d1d0f1a0380",
      "parents": [
        "e53ff8dd02d0c818df6ec1a5944b340005e2c194"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Sun Mar 22 19:45:41 2026 +0100"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Sun Mar 22 21:01:09 2026 +0100"
      },
      "message": "[SAP IAS] Fix thread-safety race condition in PKCE handling\n\nThe previous implementation used a shared AuthorizationUrlBuilder field\nin the SAPIasOAuthService singleton. Calling initPKCE() on this shared\nbuilder meant that concurrent login requests from different users would\noverwrite the code_verifier, leading to intermittent authentication\nfailures.\n\nUse the new OAuthAuthorizationInfo extension point to generate and\nreturn a per-request code_verifier. This allows Gerrit to store the\nverifier in the user\u0027s session and pass it back to the\ngetAccessToken(OAuthVerifier, String) method, ensuring the verifier\nmatches the original challenge for each specific login flow.\n\nThe single-argument getAccessToken(OAuthVerifier) and\ngetAuthorizationUrl() methods are removed as they are now provided by\ndefault implementations in the OAuthServiceProvider interface.\n\nAdd SAPIasOAuthServiceTest to verify the PKCE flow and ensure that the\ncode verifier is correctly extracted from the session and passed to the\nunderlying ScribeJava service.\n\nDepends-On: https://gerrit-review.googlesource.com/c/gerrit/+/564343\nChange-Id: I718ec9d72da1c13ca4ac405563a8d4c4a5636b8e\n"
    },
    {
      "commit": "e53ff8dd02d0c818df6ec1a5944b340005e2c194",
      "tree": "a8b7d1a3d6504910220adc95ddb1698d59aa3779",
      "parents": [
        "9ecc49bc156a395ed06b65a854860145511ed332"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Sun Feb 15 10:21:02 2026 +0100"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Sat Mar 21 03:26:54 2026 -0700"
      },
      "message": "Bazel: compare runtime overlap against headless Gerrit WAR\n\nAdd a guardrail that fails if the oauth plugin bundles third-party\nruntime jars that are already provided by Gerrit.\n\nUse //:headless.war.jars.txt as the comparison manifest instead of\n//:release.war.jars.txt.\n\nThe release WAR is not the right boundary for this check because it also\nincludes the packaged core plugins via //plugins:core. Comparing against\nthat manifest would make this test depend on the full set of core plugin\nsubmodules being present during Bazel analysis.\n\nIn CI/CD the plugin is built inside a partial Gerrit clone without\nfetching the core plugin submodules. Using the release WAR manifest\nwould therefore fail analysis before the test can run.\n\nThe headless WAR already provides the correct comparison scope for this\nguardrail: jars shipped by Gerrit itself, but not jars contributed by\nthe packaged core plugins. This keeps the overlap check focused on\nlibraries provided by Gerrit runtime, while avoiding an unnecessary\ndependency on core plugin submodules.\n\nThe test remains Gerrit-tree-only and is gated via:\n\n  target_compatible_with \u003d in_gerrit_tree_enabled()\n\nso standalone plugin builds continue to report it as SKIPPED.\n\nChange-Id: I4abd5646b9a92f3ab619c74c72bf4c47bbcdc07f\n"
    },
    {
      "commit": "9ecc49bc156a395ed06b65a854860145511ed332",
      "tree": "c4fc23f9a930bed2fcd32de138c499d0884e1212",
      "parents": [
        "2134c3482c1382f85d05c38f010310de4e944cc3"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Sat Feb 14 14:45:10 2026 +0100"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Sat Mar 21 03:26:19 2026 -0700"
      },
      "message": "Add allowlist test for packaged runtime JARs\n\nTrack the set of third-party runtime dependencies that are bundled into\nthe oauth plugin by generating a deterministic manifest for\n:oauth__plugin and diffing it against an allowlist in CI.\n\nThis prevents accidental changes to the packaged dependency set and\nensures that libraries already provided by Gerrit are not bundled into\nthe plugin.\n\nExclude org.slf4j:slf4j-api from the Maven dependencies since Gerrit\nships it, avoiding duplicate classes and potential version skew in the\nplugin classloader.\n\nChange-Id: I625bd7f0d4a29ff68996b295562b5349ef4b7c55\n"
    },
    {
      "commit": "2134c3482c1382f85d05c38f010310de4e944cc3",
      "tree": "ed72c9503a79fc6ce62572119604865dfa2d6344",
      "parents": [
        "5c230cddbac5ac7c83b102c0e4b83237b0d37a1b"
      ],
      "author": {
        "name": "Thomas Dräbing",
        "email": "thomas.draebing@sap.com",
        "time": "Wed Nov 12 09:19:59 2025 +0100"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Sat Mar 21 03:25:50 2026 -0700"
      },
      "message": "Adapt to Gerrit\u0027s use of bazel modules\n\nTurn off strict_visibility in the rules_jvm_external maven_install used\nfor @external_plugin_deps.\n\nWith strict_visibility enabled, transitively resolved Maven artifacts\nare generated with //visibility:private and cannot be referenced\ndirectly from plugin BUILD targets. This conflicts with Bazel strict-\ndeps, which requires direct dependencies to be listed when their types\nare used at compile time.\n\nFor example, scribejava-apis depends transitively on scribejava-core,\nbut plugin sources extending DefaultApi20 must add\n@external_plugin_deps//:com_github_scribejava_scribejava_core as a\ndirect dependency to satisfy strict-deps. With strict_visibility enabled\nthis fails due to visibility restrictions.\n\nDisabling strict_visibility allows depending on such transitively\nresolved artifacts directly, while still keeping strict-deps enabled to\nenforce explicit compile-time dependencies.\n\nTo support both standalone and in-tree build modes, split the Maven\nrepositories into:\n\n  * a shared \"external_plugin_deps\" repository that contains only\n    Gerrit-provided APIs (gerrit-plugin-api and acceptance framework)\n    and does not define a lock file\n\n  * a plugin-specific repository (\"oauth_plugin_deps\") that contains\n    the plugin\u0027s bundled runtime dependencies and owns its lock file\n\nThis allows:\n\n  - bazlets to continue referencing @external_plugin_deps for\n    Gerrit API dependencies in standalone mode without bundling\n    them into the plugin\n\n  - plugin runtime dependencies to remain reproducible via\n    lock files\n\n  - multiple plugins to coexist in an in-tree build without\n    contributing conflicting lock files for the same repository\n\nProvide a MODULE.bazel fragment that can be linked into Gerrit\u0027s\n`plugins/external_plugin_deps.MODULE.bazel` when the plugin is built\ninside the Gerrit source tree.\n\nThis allows the plugin to be built in-tree without modifying Gerrit\u0027s\nmain module configuration beyond including this fragment.\n\nUpdate the build documentation to describe how to link the fragment\nand run plugin tests in this configuration.\n\nChange-Id: Ib3e8ee4012c8180131b26622dfacc29e31834646\n"
    },
    {
      "commit": "5c230cddbac5ac7c83b102c0e4b83237b0d37a1b",
      "tree": "dca9b59622b7d6b3988001d3be1775e3f8e28cff",
      "parents": [
        "649112608cfead3910381058e00615def3be9677"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Tue Mar 17 14:59:53 2026 +0100"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Tue Mar 17 15:03:28 2026 +0100"
      },
      "message": "Bazel: Remove unused commons-codec dependency\n\nCommit I033936936b removed the usage of commons-codec, but the Bazel\ndefinition in external_plugin_deps.bzl was left behind.\n\nRemove the stale maven_jar and the omit_commons_codec flag.\n\nChange-Id: I94ab423bd0ffe2b7d3cb9d3ad1c119c309368aa6\n"
    },
    {
      "commit": "649112608cfead3910381058e00615def3be9677",
      "tree": "a1a395629018fd72af85f702c75b04092e466dc7",
      "parents": [
        "b49e40ad37864423bad97584692b032922e2f040"
      ],
      "author": {
        "name": "Thomas Dräbing",
        "email": "thomas.draebing@sap.com",
        "time": "Mon Sep 29 13:31:57 2025 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Tue Mar 17 13:44:50 2026 +0100"
      },
      "message": "Reduce duplicated code to build OAuth20Service\n\nChange-Id: I0e70cbe305ca5bc48c77c1c17aeb58026cd902b9\n"
    },
    {
      "commit": "b49e40ad37864423bad97584692b032922e2f040",
      "tree": "132b940371da0078332a982e2ad42e868ef27ae5",
      "parents": [
        "62e16441ea3b73c1fe17a70f2f1eb89f0e0b5088"
      ],
      "author": {
        "name": "Thomas Dräbing",
        "email": "thomas.draebing@sap.com",
        "time": "Sat Jan 17 11:25:49 2026 +0100"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Tue Mar 17 13:43:07 2026 +0100"
      },
      "message": "Remove deprecated legacy naming of Azure AD (Office365)\n\nThis change removes support for the legacy \"office365\" OAuth provider\nnaming and configuration, which has been deprecated in 2021: I52e8834f5c\nin favor of the canonical \"azure\" provider.\n\nThe OAuth plugin now only exposes the Azure AD provider under the\n\"azure\" name. Configuration using the legacy \"office365\" provider name\nis no longer recognized.\n\nFor backward compatibility, linking of existing user identities is still\nsupported: when enabled, existing Gerrit accounts that were previously\ncreated using the \"office365\" external ID scheme can be linked to the\nnew \"azure\" external ID scheme during authentication. No new accounts\nare created using the deprecated scheme.\n\nAdministrators of sites that previously relied on the legacy Office365\nnaming should have had sufficient time to migrate their configuration to\nthe \"azure\" provider and, if necessary, enable identity linking to\npreserve existing user accounts.\n\nChange-Id: Ibf29c03f312bc2a3f978c824b8c79cbc81b84c65\n"
    },
    {
      "commit": "62e16441ea3b73c1fe17a70f2f1eb89f0e0b5088",
      "tree": "5378898cad2b43d653c7e32f222505102e5fe042",
      "parents": [
        "2807ae01c3c0b4886b2990e9e2b4d133f7fc5695"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Fri Feb 13 12:06:58 2026 +0100"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Fri Feb 13 13:43:46 2026 +0100"
      },
      "message": "Replace commons-codec Base64 with JDK Base64 for JWT decoding\n\nJWT tokens encode their header and payload using Base64URL as defined by\nRFC 7515/7519. The current implementation decodes JWT payloads using\neither org.apache.commons.codec.binary.Base64 or the standard Base64\ndecoder, neither of which implements the URL-safe Base64 variant required\nby the JWT specification. This may silently accept malformed input or\nfail for URL-safe payloads.\n\nReplace existing decoding logic with java.util.Base64.getUrlDecoder(),\nwhich correctly implements Base64URL, and apply the same decoding to\nSAP IAS JWT parsing, which previously used the standard Base64 decoder.\n\nAs part of this change:\n  * Decode JWT payloads using Base64.getUrlDecoder()\n  * Remove reliance on UnsupportedEncodingException by using\n    StandardCharsets.UTF_8 directly\n  * Maintain existing failure semantics for malformed JWT structure,\n    while treating invalid Base64URL payloads as IO failures.\n\nMalformed tokens that were previously accepted due to permissive\ndecoding will now be rejected.\n\nRemove the commons-codec dependency from the oauth plugin entirely.\n\nChange-Id: I033936936bdf88713e9eab604923215b0b57d4a7\n"
    },
    {
      "commit": "2807ae01c3c0b4886b2990e9e2b4d133f7fc5695",
      "tree": "50b7d61414b4b0e84758ac9092d161c983bd5ae7",
      "parents": [
        "b2fa29e18378779c335076fd99b6df3a5fc324cd",
        "ab0eb8c0e5dc58c4f21fca3e8ed3b28f0d7eca43"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david.ostrovsky@gmail.com",
        "time": "Thu Jan 15 08:58:22 2026 -0800"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jan 15 08:58:22 2026 -0800"
      },
      "message": "Merge \"Remove unnecessary whitespaces before ? during init\""
    },
    {
      "commit": "ab0eb8c0e5dc58c4f21fca3e8ed3b28f0d7eca43",
      "tree": "72a2c5dfbf6c41e9d5a7a8a305046429a3ce8931",
      "parents": [
        "527b52384aaaf4f971a7826dc51be19cf9081eed"
      ],
      "author": {
        "name": "Thomas Dräbing",
        "email": "thomas.draebing@sap.com",
        "time": "Mon Sep 29 13:34:10 2025 +0200"
      },
      "committer": {
        "name": "Thomas Dräbing",
        "email": "thomas.draebing@sap.com",
        "time": "Thu Nov 27 05:07:48 2025 -0800"
      },
      "message": "Remove unnecessary whitespaces before ? during init\n\nChange-Id: I6cc4acc63d4baade4acb77b4c15760233d8f2f17\n"
    },
    {
      "commit": "b2fa29e18378779c335076fd99b6df3a5fc324cd",
      "tree": "1e44be833b8df4663553dd29b2dfb711fb10d120",
      "parents": [
        "527b52384aaaf4f971a7826dc51be19cf9081eed"
      ],
      "author": {
        "name": "Thomas Dräbing",
        "email": "thomas.draebing@sap.com",
        "time": "Thu May 22 09:52:24 2025 +0200"
      },
      "committer": {
        "name": "Thomas Dräbing",
        "email": "thomas.draebing@sap.com",
        "time": "Wed Oct 15 04:03:36 2025 -0700"
      },
      "message": "[SAP IAS] Validate SAP IAS token during login with token\n\nThis change uses the official validation tools provided by SAP IAS\nto verify that the token is valid for the requested application.\n\nChange-Id: I56a5044566741539d8b0d236ea18d868568cf09c\n"
    },
    {
      "commit": "527b52384aaaf4f971a7826dc51be19cf9081eed",
      "tree": "556fdff7d281a195f01295f5e1965c6c4b7a79a1",
      "parents": [
        "74475759a21c1a47c7b4339de358b7894756ac1d"
      ],
      "author": {
        "name": "Thomas Dräbing",
        "email": "thomas.draebing@sap.com",
        "time": "Mon Jan 27 12:18:41 2025 +0100"
      },
      "committer": {
        "name": "Thomas Dräbing",
        "email": "thomas.draebing@sap.com",
        "time": "Tue Sep 30 11:24:42 2025 +0200"
      },
      "message": "[SAP IAS] Optionally allow the Resource Owner Password Flow\n\nChange-Id: If8a57ac4d487fece946b76a49fddeba3d63bc192\n"
    },
    {
      "commit": "74475759a21c1a47c7b4339de358b7894756ac1d",
      "tree": "6b4e76170dead29f81830b609cc5aef257fa8d45",
      "parents": [
        "e4ebdd73ac27b671764743dd3c051b100d8da7a2"
      ],
      "author": {
        "name": "Thomas Dräbing",
        "email": "thomas.draebing@sap.com",
        "time": "Fri Jan 24 14:30:47 2025 +0100"
      },
      "committer": {
        "name": "Thomas Dräbing",
        "email": "thomas.draebing@sap.com",
        "time": "Tue Sep 30 11:24:42 2025 +0200"
      },
      "message": "[SAP IAS] Add basic OAuth support for GitOverHttp\n\nThis allows to login with an OAuth token sent as a password.\n\nChange-Id: Iaec21b0e23b061601bc3e78aad72fca003be7672\n"
    },
    {
      "commit": "e4ebdd73ac27b671764743dd3c051b100d8da7a2",
      "tree": "8d197d27419647344a5d2e75a03643d727fdaeca",
      "parents": [
        "bd2bf69f93f68a1c20fbad27e0af5bdea5918ef4"
      ],
      "author": {
        "name": "Thomas Dräbing",
        "email": "thomas.draebing@sap.com",
        "time": "Fri Jan 24 15:36:07 2025 +0100"
      },
      "committer": {
        "name": "Thomas Dräbing",
        "email": "thomas.draebing@sap.com",
        "time": "Tue Sep 30 11:24:42 2025 +0200"
      },
      "message": "[SAP IAS] Add optional support for PKCE\n\nChange-Id: I3fcaedd58266fb7bf7aeef5274e14e16c8cffe25\n"
    },
    {
      "commit": "bd2bf69f93f68a1c20fbad27e0af5bdea5918ef4",
      "tree": "3109b41454c65677cd89418ecb495ff9fd7e323f",
      "parents": [
        "a175500df1b206f6736f99f7994f49f95af9f638"
      ],
      "author": {
        "name": "Christian Mathis",
        "email": "christian.mathis@sap.com",
        "time": "Fri Jan 17 21:06:13 2025 +0100"
      },
      "committer": {
        "name": "Thomas Dräbing",
        "email": "thomas.draebing@sap.com",
        "time": "Tue Sep 30 11:24:42 2025 +0200"
      },
      "message": "[SAP IAS] Add SAP Cloud Identity Services (IAS) oauth provider\n\nSee https://help.sap.com/docs/cloud-identity-services/cloud-identity-services/openid-connect\n\nChange-Id: Ibb637f51148ef20f2d79b8c88519be38ebc1da11\n"
    },
    {
      "commit": "a175500df1b206f6736f99f7994f49f95af9f638",
      "tree": "6f0dfdc6b465f41313320f9862005fda05139023",
      "parents": [
        "d946a36c162a6d746ecbcad0769043761454e389"
      ],
      "author": {
        "name": "Thomas Dräbing",
        "email": "thomas.draebing@sap.com",
        "time": "Wed Apr 23 16:14:32 2025 +0200"
      },
      "committer": {
        "name": "Thomas Dräbing",
        "email": "thomas.draebing@sap.com",
        "time": "Tue Sep 30 11:24:42 2025 +0200"
      },
      "message": "Set OAuth external ID on CreateAccount call\n\nTo create an account you either have to login via the UI or an admin has to\ncreate it via REST API. The former worked without issue, since OAuth is\ndirectly involved in account creation, i.e. the data returned by the\nidentity provider is being used to set up the account. However, it was not\npossible to create an account via REST API and then log into it via OAuth.\nThe reason was that the account created via REST API didn\u0027t get an external\nID on creation that linked it to the IDP. On authentication Gerrit would\nthus complain that the account exists and that the provided secret didn\u0027t\nmatch the stored password instead of contacting the OAuth server.\n\nGerrit provides an extension point where plugins can provide additional\nexternal IDs on account creation. This extension point is being implemented\nby this change.\n\nChange-Id: Ie643503f4e1c2247afd1674036aeaf3b33ca7665\n"
    },
    {
      "commit": "d946a36c162a6d746ecbcad0769043761454e389",
      "tree": "e272c4d4d5af29a4d01603b6a0f1e44535859f32",
      "parents": [
        "7b4248dd6d58d41728897836b2b0f809a9b2c05b"
      ],
      "author": {
        "name": "Thomas Dräbing",
        "email": "thomas.draebing@sap.com",
        "time": "Tue Apr 22 13:35:59 2025 +0200"
      },
      "committer": {
        "name": "Thomas Dräbing",
        "email": "thomas.draebing@sap.com",
        "time": "Tue Sep 30 11:24:40 2025 +0200"
      },
      "message": "Make more use of Guice to reduce boiler plate code\n\nThis also enforces a stricter adherence to naming conventions used by\nalmost all implemented OAuth providers.\n\nChange-Id: I5e394c2e0062507b0e14a07cf67e216c18d3355a\n"
    },
    {
      "commit": "7b4248dd6d58d41728897836b2b0f809a9b2c05b",
      "tree": "d76ed25c9bc7129be6b178815567c94b74e11b7d",
      "parents": [
        "29057163d504b604e098e6ad23c6c84d7148c6ff"
      ],
      "author": {
        "name": "Thomas Dräbing",
        "email": "thomas.draebing@sap.com",
        "time": "Wed May 28 10:40:14 2025 +0200"
      },
      "committer": {
        "name": "Thomas Dräbing",
        "email": "thomas.draebing@sap.com",
        "time": "Wed Sep 10 10:25:40 2025 +0200"
      },
      "message": "Sort OAuth implementations into packages\n\nChange-Id: I3ad158173adb11df6bf313df0dc1e08906d5f1d9\n"
    },
    {
      "commit": "29057163d504b604e098e6ad23c6c84d7148c6ff",
      "tree": "7bb5e75b55db25fe1c509c207904f9074a0796fd",
      "parents": [
        "f7d640c33c04af6294c0e53c7434bc11670b35fa"
      ],
      "author": {
        "name": "Thomas Dräbing",
        "email": "thomas.draebing@sap.com",
        "time": "Wed Sep 10 10:24:14 2025 +0200"
      },
      "committer": {
        "name": "Thomas Dräbing",
        "email": "thomas.draebing@sap.com",
        "time": "Wed Sep 10 10:24:41 2025 +0200"
      },
      "message": "Format with GJF 1.24.0\n\nChange-Id: I54b8a9e88f8b4f366475c347069bc96d2ae6d256\n"
    },
    {
      "commit": "f7d640c33c04af6294c0e53c7434bc11670b35fa",
      "tree": "d6e9b603079ae651659d4ad324b4861ac3bb9cd0",
      "parents": [
        "a8f67c80b446760cf080e0d0e0467ba629147ac6"
      ],
      "author": {
        "name": "Ishan Badgainya",
        "email": "ishan2796@gmail.com",
        "time": "Sun Apr 13 14:31:21 2025 +0530"
      },
      "committer": {
        "name": "ishan",
        "email": "ishan2796@gmail.com",
        "time": "Wed Jul 16 06:18:03 2025 -0700"
      },
      "message": "[Cognito OAuth]Support for link-to-existing-gerrit-accounts\n\nThis adds support for link-to-existing-gerrit-accounts to Cognito\nservice in OAuth plugin.\n\nThis adds a configuration option named link-to-existing-gerrit-accounts\nthat can be set to true to migrate to this provider from existing\nLDAP accounts by linking them with externalIDs instead of trying\nto create new accounts.\n\nChange-Id: I9724cf13efe7026f6959b5e585b9c465063cdf82\n"
    },
    {
      "commit": "a8f67c80b446760cf080e0d0e0467ba629147ac6",
      "tree": "02748efa11d73e03bc1f87da03f24be0f045c3d4",
      "parents": [
        "98231604d60788bb43490f1a301d792817ac8008"
      ],
      "author": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Fri Jan 24 16:54:02 2025 +0100"
      },
      "committer": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Wed Jan 29 12:15:42 2025 +0100"
      },
      "message": "Factor out some wide spread boilerplate code\n\nChange-Id: I9cf7e674d6499a09f8a15a3d8f55ec55157b5695\n"
    },
    {
      "commit": "98231604d60788bb43490f1a301d792817ac8008",
      "tree": "81a20219fa4bbf60f8996cb46d46ebc5ea0c11ee",
      "parents": [
        "f45c596896cd6cebf011e3a971a00e8a72188b9e"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Thu Jun 06 04:48:51 2024 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Thu Jun 06 04:50:37 2024 +0200"
      },
      "message": "Bazel: Disable bzlmod explicitly in .bazelrc\n\nIn Bazel 7.x release line, the bzlmod feature is activated per default,\nso that we need to disable it. See this issue for more details: [1].\n\n[1] https://github.com/bazelbuild/bazel/issues/18958\n\nChange-Id: Id81a1f40392b740146e344d01d96a37f7eabf7e7\n"
    },
    {
      "commit": "f45c596896cd6cebf011e3a971a00e8a72188b9e",
      "tree": "b43f38d5c6572ad8cb08a3f9fc4c7e6ce147ed7e",
      "parents": [
        "2e4362bfd000147eb090354bd2defff0945dcd5e"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Thu Jun 06 04:08:31 2024 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Thu Jun 06 04:50:06 2024 +0200"
      },
      "message": "Bazel: Fix standalone build\n\nUpdate Bazel to the latest release 7.2.0rc3, and update bazlets to the\nlatest version.\n\nAlso upgrade python interpreter to python3.\n\nChange-Id: I228aa6e760fe2b9a9f0af4a340eda9d36befedd4\n"
    },
    {
      "commit": "2e4362bfd000147eb090354bd2defff0945dcd5e",
      "tree": "f51dacefce9d604671740ee4af6d78cd6d9566d2",
      "parents": [
        "b27cf3ea820eec2ddd22d217fc839261692ccdb0"
      ],
      "author": {
        "name": "Ivan Nikolchev",
        "email": "ivan.nikolchev@bonial.com",
        "time": "Sun Apr 14 18:07:43 2024 +0200"
      },
      "committer": {
        "name": "Ivan Nikolchev",
        "email": "ivan.nikolchev@bonial.com",
        "time": "Thu May 23 01:33:08 2024 +0200"
      },
      "message": "Add Cognito OAuth provider\n\nThis adds OAuth provider for AWS Cognito[1].\nThis was tested against a Cognito instance and authentication worked as\nexpected.\n\n1. https://aws.amazon.com/cognito/\n\nChange-Id: Ieb1d014d5d2c40910641c8080a020ab980d997b4\n"
    },
    {
      "commit": "b27cf3ea820eec2ddd22d217fc839261692ccdb0",
      "tree": "80704fcc0368c0f125bffef04fe810af14b4cf85",
      "parents": [
        "1b3cc407cb2571d08601ab852e6e01f82d27160f"
      ],
      "author": {
        "name": "Tobias Urdin",
        "email": "tobias.urdin@gmail.com",
        "time": "Fri Sep 29 08:40:08 2023 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Fri Sep 29 14:46:03 2023 +0200"
      },
      "message": "Add Authentik OAuth provider\n\nThis adds a OAuth provider for Authentik [1].\n\nThis adds a configuration option named link-to-existing-gerrit-accounts\nthat can be set to true to migrate to this provider from existing\nLDAP accounts by linking them with externalIDs instead of trying\nto create new accounts.\n\n[1] https://goauthentik.io\n\nChange-Id: Ic5c46320267fc6cc5416370382c7387666ce8466\n"
    },
    {
      "commit": "1b3cc407cb2571d08601ab852e6e01f82d27160f",
      "tree": "86e60732bc6c4b770776a1dde285b76698f6d4e7",
      "parents": [
        "8d467e99457466c71eb0ca9e661dd433f03a0123"
      ],
      "author": {
        "name": "Joakim Plate",
        "email": "joakim.plate@rt-labs.com",
        "time": "Wed Jun 21 16:33:41 2023 +0200"
      },
      "committer": {
        "name": "Joakim Plate",
        "email": "joakim.plate@rt-labs.com",
        "time": "Wed Jun 21 18:20:42 2023 +0200"
      },
      "message": "Add support for Auth0 OAuth2/OIDC provider\n\nhttps://auth0.com/docs/authenticate/protocols/oauth\n\nChange-Id: I1549abda1e94fba82b2d81713ae37b8cdf264643\n"
    },
    {
      "commit": "8d467e99457466c71eb0ca9e661dd433f03a0123",
      "tree": "5cc339dd797854a4cd86ba22173174338ec34f18",
      "parents": [
        "4bae1d7acc87f7dc1deca3813638bbc07ed5747f"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Sun Apr 30 11:04:29 2023 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david.ostrovsky@gmail.com",
        "time": "Sun May 07 07:56:22 2023 +0000"
      },
      "message": "Keycloak OAuth2 provider: adapt endpoint URL to Quarkus runtime\n\nStarting from Keycloak release v17, the runtime was migrated to Quarkus.\nAs the consequence, the \"/auth\" prefix was removed from the default\ncontext path. Romove the \"/auth\" prefix from endpoint URLs and mention\nin the documentation how to restore previous behaviour for backwards\ncompatibility with legacy Keycloak releases.\n\n[1]: https://www.keycloak.org/migration/migrating-to-quarkus\n\nChange-Id: I8eef636b8104b6112b44692061621968f9ce6b15\n"
    },
    {
      "commit": "4bae1d7acc87f7dc1deca3813638bbc07ed5747f",
      "tree": "90a3a3039fc24806f48a56c97919860bbc20d259",
      "parents": [
        "024c1d9e625b783b2d2cde6c2882188aeda68736"
      ],
      "author": {
        "name": "Thomas Gerbet",
        "email": "thomas.gerbet@enalean.com",
        "time": "Thu Mar 30 14:30:37 2023 +0200"
      },
      "committer": {
        "name": "Thomas Gerbet",
        "email": "thomas.gerbet@enalean.com",
        "time": "Tue May 02 18:50:47 2023 +0200"
      },
      "message": "Add support for Tuleap OAuth2/OIDC provider\n\nTuleap instances can provide an OIDC server: https://docs.tuleap.org/user-guide/oauth2.html\n\nChange-Id: I1625b4cfa5b885257743ac2447fb795a478d86d0\n"
    },
    {
      "commit": "024c1d9e625b783b2d2cde6c2882188aeda68736",
      "tree": "8fe8373801b27edb689e17850c9abfd6cd107eeb",
      "parents": [
        "f9bef7476bc99f7b1dc3fe2d52ec95cd7ac571dc"
      ],
      "author": {
        "name": "Joe Shannon",
        "email": "joe.shannon@diamond.ac.uk",
        "time": "Wed Sep 14 16:50:51 2022 +0100"
      },
      "committer": {
        "name": "Joe Shannon",
        "email": "joe.shannon@diamond.ac.uk",
        "time": "Fri Sep 16 15:28:36 2022 +0100"
      },
      "message": "Allow JSON token extractor to be used with CAS\n\nAdd config boolean to use JSON token extraction rather than the regex\nbased extractor for plain text responses.\n\nSupport for JSON token responses was added in CAS v6.1.0:\n\n https://github.com/apereo/cas/pull/1645\n\nSupport for plain text seems to have been removed in the same release\nby this commit:\n\n https://github.com/apereo/cas/commit/c9b555386f7e165d98d6616b4294\n\nDefault behaviour unchanged to continue to support CAS v5 users.\n\nBug: Issue 16232\nChange-Id: I15f195001e5ee823f3832388b23c6b2f2dbb3cd4\n"
    },
    {
      "commit": "f9bef7476bc99f7b1dc3fe2d52ec95cd7ac571dc",
      "tree": "82dbfbe731109ea0edf5736cd035a73ef72fb928",
      "parents": [
        "d349594bb485cf456e8262061998b81f680c4019"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Sat Jan 15 11:44:28 2022 +0100"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Mon Jan 17 19:23:05 2022 +0100"
      },
      "message": "GoogleOAuthService: Use StringBuilder\n\nChange-Id: I0f5dedf2daea8858b23837719fe0d3965d020db5\n"
    },
    {
      "commit": "d349594bb485cf456e8262061998b81f680c4019",
      "tree": "e27b3cdd4991312e7742973a0dec38249a048deb",
      "parents": [
        "f5f87e04bef4d5dfd1748c7161663b17338fec29"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Sat Jan 15 11:40:06 2022 +0100"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Mon Jan 17 19:22:57 2022 +0100"
      },
      "message": "CasOAuthService: Format using google-java-format\n\nChange-Id: I951032dfc9f868f15bba9c52a38c8b57214f7e9b\n"
    },
    {
      "commit": "f5f87e04bef4d5dfd1748c7161663b17338fec29",
      "tree": "5cacb0ba6e312c0f0831288e1de3b118c3c63208",
      "parents": [
        "d4f5dad024d8278c59848cc0a54d86f8bae9baac",
        "fb2124225e6621c0c177f26a6d583948291d3ed1"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david.ostrovsky@gmail.com",
        "time": "Mon Jan 17 18:22:27 2022 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jan 17 18:22:27 2022 +0000"
      },
      "message": "Merge changes I3724521d,I9c2faeab\n\n* changes:\n  Upgrade bazlets to latest version to build with 3.5.0.1 API\n  Bump Bazel version to 4.2.0\n"
    },
    {
      "commit": "d4f5dad024d8278c59848cc0a54d86f8bae9baac",
      "tree": "deaa11264b9de915514dcf2abc17e50e572f4f4e",
      "parents": [
        "a681283d9f05d041a00f3c9b6a7136ab3e6242ef",
        "0ba53fd4ea93654d8c41213b7a39749e8fc61668"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david.ostrovsky@gmail.com",
        "time": "Mon Jan 17 18:03:19 2022 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jan 17 18:03:19 2022 +0000"
      },
      "message": "Merge \"Make preferred_username optional for Keycloak\""
    },
    {
      "commit": "0ba53fd4ea93654d8c41213b7a39749e8fc61668",
      "tree": "4f71fd10c77824b2db20d80795eca47089e83681",
      "parents": [
        "4aa7322db5ec221b2419e12a9ec7af5b8c66659c"
      ],
      "author": {
        "name": "Andy Botting",
        "email": "andy.botting@ardc.edu.au",
        "time": "Wed Jun 23 20:24:47 2021 +1000"
      },
      "committer": {
        "name": "Andy Botting",
        "email": "andy.botting@ardc.edu.au",
        "time": "Mon Jan 17 15:39:32 2022 +1100"
      },
      "message": "Make preferred_username optional for Keycloak\n\nThis commit adds a new config option \u0027use-preferred-username\u0027 which\ncan be used with the Keycloak provider to make it optional to use\nthe preferred_username delivered by Keycloak.\n\nThis is useful in situations where the preferred_username is set\nas an email address, which don\u0027t work as a gerrit username.\n\nLeaving the username unset also allows the user to choose their\nown username.\n\nChange-Id: Iff114537527c672190c6a1a41726d2c32bb97810\n"
    },
    {
      "commit": "fb2124225e6621c0c177f26a6d583948291d3ed1",
      "tree": "c6660b3da9571e33ae2f48a407528178bfb3cb85",
      "parents": [
        "03d6e905a7b52dd2c71559c4758e4193dd847106"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Sat Jan 15 10:03:26 2022 +0100"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Sat Jan 15 10:03:26 2022 +0100"
      },
      "message": "Upgrade bazlets to latest version to build with 3.5.0.1 API\n\nChange-Id: I3724521d763aeae31cfed458b15a4b5884b3c31e\n"
    },
    {
      "commit": "03d6e905a7b52dd2c71559c4758e4193dd847106",
      "tree": "da8f495e366c36166f3b74299554c7d26ed7d694",
      "parents": [
        "a681283d9f05d041a00f3c9b6a7136ab3e6242ef"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Sat Jan 15 09:51:53 2022 +0100"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Sat Jan 15 09:51:53 2022 +0100"
      },
      "message": "Bump Bazel version to 4.2.0\n\nChange-Id: I9c2faeab5f897579fa445b870641bf113dbf66a8\n"
    },
    {
      "commit": "a681283d9f05d041a00f3c9b6a7136ab3e6242ef",
      "tree": "222bd5d6569c0f5512040a79a74e7861f970bebb",
      "parents": [
        "533b86c85d55cafa53ded66973902979aa6653cc"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Tue Jan 11 09:23:01 2022 +0100"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Tue Jan 11 09:28:43 2022 +0100"
      },
      "message": "AzureActiveDirectoryService: Use UrlDecoder for base64 decoding\n\nBug: https://github.com/davido/gerrit-oauth-provider/issues/161\nChange-Id: I6a803d30d4272dfbd1a70402a1dff23302317adb\n"
    },
    {
      "commit": "533b86c85d55cafa53ded66973902979aa6653cc",
      "tree": "399d821a6adee78539ee4aca7bd62521082ecc32",
      "parents": [
        "4aa7322db5ec221b2419e12a9ec7af5b8c66659c"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Dec 08 18:58:16 2021 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Dec 08 18:59:22 2021 +0000"
      },
      "message": "Include jackson-core explicitly\n\njackson-core is not included anymore as part of Gerrit from\nv3.5 onwards, therefore the OAuth plugin needs to explicitily\nrequire its version and include it in the plugin\u0027s jar.\n\nChange-Id: Iad4caa37402a38bbc36043a8a8dcfdf75260a84b\n"
    },
    {
      "commit": "4aa7322db5ec221b2419e12a9ec7af5b8c66659c",
      "tree": "3607bafd8a3adca8632549fcff453372165ddd16",
      "parents": [
        "c0b24d802a918433bc842127a3d7e817137707f8",
        "9ebbdfff2af74842f678ea543f3325323e02ab92"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david.ostrovsky@gmail.com",
        "time": "Fri Jan 15 19:34:00 2021 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 15 19:34:00 2021 +0000"
      },
      "message": "Merge \"GoogleOAuthService: Decode JWTs as UTF-8\""
    },
    {
      "commit": "c0b24d802a918433bc842127a3d7e817137707f8",
      "tree": "d8fae7b92bf2c2952851b4f8d8efde063204a384",
      "parents": [
        "8a30e89bb5a972a96e703e4e0f9e3278a1bf6883",
        "f2f261e3c2357ce90488ed1ec2aaf632e888b3f5"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david.ostrovsky@gmail.com",
        "time": "Fri Jan 15 19:33:54 2021 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 15 19:33:54 2021 +0000"
      },
      "message": "Merge \"DexOAuthService: Decode JWTs as UTF-8\""
    },
    {
      "commit": "8a30e89bb5a972a96e703e4e0f9e3278a1bf6883",
      "tree": "8592aec93c8cb3b30e6e91156c26e4e1af932713",
      "parents": [
        "31d9b6472c7f29b36cb26f6056cd07d9ba92c282",
        "ead0207533523d1765de330d524164f7ff92d5fe"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david.ostrovsky@gmail.com",
        "time": "Fri Jan 15 19:33:48 2021 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 15 19:33:48 2021 +0000"
      },
      "message": "Merge \"Decode Keycloak JWTs as UTF-8\""
    },
    {
      "commit": "31d9b6472c7f29b36cb26f6056cd07d9ba92c282",
      "tree": "32be4c079abbb1a9d614a9f825fb30fa55d6be10",
      "parents": [
        "92eb31eee83ee52ba8ec84b950aa5f72b933a1bf"
      ],
      "author": {
        "name": "Dag Bertelsen",
        "email": "dag.lennart.bertelsen@storebrand.no",
        "time": "Fri Nov 20 14:31:14 2020 +0100"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david.ostrovsky@gmail.com",
        "time": "Fri Jan 08 19:22:09 2021 +0000"
      },
      "message": "Rename Office365AuthService to AzureActiveDirectoryService\n\n* Running plugin init step will check for previously installed\n  Office365 oauth and if it is found it will ask the user y/n\n  based on the Office365 naming.\n  If no configuration for Office365 where found it will ask to install\n  Azure oauth instead.\n\n* Added link-to-existing-office365-accounts to support automatic linking\n  of any old Office365 accounts.\n\nChange-Id: I52e8834f5c9bac0c62f5f9b19523341f0e94c874\n"
    },
    {
      "commit": "92eb31eee83ee52ba8ec84b950aa5f72b933a1bf",
      "tree": "df2657f1da186e3fcfd39d9fc9f453f96dfc93db",
      "parents": [
        "32a93b1ae3c990d6b4a4c86c4012d3d13ac5332a"
      ],
      "author": {
        "name": "Dag Bertelsen",
        "email": "dag.lennart.bertelsen@storebrand.no",
        "time": "Tue Nov 17 11:30:33 2020 +0100"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Fri Jan 08 20:21:14 2021 +0100"
      },
      "message": "Using MicrosoftAzureActiveDirectory20Api from scribejava-apis\n\n* Using MicrosoftAzureActiveDirectory20Api from scribejava-apis, this is\n  intended to be used with Microsoft Azure oauth v2.\n\n* If Google OAuth plugin is set to use a tenant other than common,\n  organizations or consumers the token will be validated that they are\n  originating from the same tenant that is configured in the Gerrit\n  OAuth plugin.\n\nChange-Id: Id293be463281fc8fa34af5edf61e774b207dcc21\n"
    },
    {
      "commit": "32a93b1ae3c990d6b4a4c86c4012d3d13ac5332a",
      "tree": "d4428cefa60a539436c2f91a1f32055ae69f3f4c",
      "parents": [
        "ae0a0a1f27a1e546145c519504fc2dbed56d17af"
      ],
      "author": {
        "name": "Dag Bertelsen",
        "email": "dag.lennart.bertelsen@storebrand.no",
        "time": "Tue Nov 17 07:21:52 2020 +0100"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Fri Jan 08 20:19:21 2021 +0100"
      },
      "message": "Validate the tokens issued from Azure\n\n* If a non-default tenant is used office 365 will now verify the token\n  is issued by the tenant we are set to use.\n\n* All incoming tokens will be validated that they have set the same\n  client_id that gerrit is set to use.\n\nChange-Id: I81e242c50ffd62e739e75a8c3a93d331049934a2\n"
    },
    {
      "commit": "ae0a0a1f27a1e546145c519504fc2dbed56d17af",
      "tree": "18732b181f230874986896ac728cff52f2c4b63c",
      "parents": [
        "204a1494301b27cb77edb6c8dd68452a22fd7719"
      ],
      "author": {
        "name": "Dag Bertelsen",
        "email": "dag.lennart.bertelsen@storebrand.no",
        "time": "Tue Nov 17 07:01:02 2020 +0100"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Fri Jan 08 18:52:52 2021 +0100"
      },
      "message": "Office365 OAuth: Add support for specifying a tenant\n\n* Added new InitOauth parameter \u0027tenant\u0027.\n\n* If the parameter \u0027tenant\u0027 is not set it will default to the tenant\n  \u0027organizations\u0027.\n\n* If the parameter \u0027tenant\u0027 is set it will use a specific AD to\n  authenticate the users.\n\nChange-Id: Id4c9e659b238dda2ad417901ddf6462f82324da0\n"
    },
    {
      "commit": "9ebbdfff2af74842f678ea543f3325323e02ab92",
      "tree": "f7502245e8548a95abc0dd342a1ffe755bda635e",
      "parents": [
        "f2f261e3c2357ce90488ed1ec2aaf632e888b3f5"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Fri Jan 08 18:31:53 2021 +0100"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Fri Jan 08 18:33:05 2021 +0100"
      },
      "message": "GoogleOAuthService: Decode JWTs as UTF-8\n\nChange-Id: I7430de510f3883715ec0654fca615e52d5cbdb40\n"
    },
    {
      "commit": "f2f261e3c2357ce90488ed1ec2aaf632e888b3f5",
      "tree": "8d608978224498212c465d3c9715ff8f13bb1c6d",
      "parents": [
        "ead0207533523d1765de330d524164f7ff92d5fe"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Fri Jan 08 18:31:32 2021 +0100"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Fri Jan 08 18:33:03 2021 +0100"
      },
      "message": "DexOAuthService: Decode JWTs as UTF-8\n\nChange-Id: I9d90be456d9fb187c8d65b19fb4169608229cd05\n"
    },
    {
      "commit": "ead0207533523d1765de330d524164f7ff92d5fe",
      "tree": "30780a80d7d0c6580afa580857e97a847ebecbd0",
      "parents": [
        "204a1494301b27cb77edb6c8dd68452a22fd7719"
      ],
      "author": {
        "name": "Addie Morrison",
        "email": "0xADD1E@gmail.com",
        "time": "Sun Dec 13 21:06:35 2020 -0600"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Fri Jan 08 18:29:27 2021 +0100"
      },
      "message": "Decode Keycloak JWTs as UTF-8\n\nPrior to this, JWTs from Keycloak was decoded using the platform default\nencoding. At least in the Docker container, this is set to a non UTF-8\nencoding, which messes with names and potentially more.\n\nRFC 7519 specifies in 7.1 section that the message is \"the UTF-8\nrepresentation of the JWT Claims Set\", so it seems rather silly to not\ntreat it as such.\n\nChange-Id: I2dceaa48360024eef42b5467e2cec7e57c094267\n"
    },
    {
      "commit": "204a1494301b27cb77edb6c8dd68452a22fd7719",
      "tree": "3467b8fbaa9a0be52ab91e4ebc1e82211b9b2765",
      "parents": [
        "001a33ecbc57b7e7b74fbe6cc2eb54e06480697f",
        "3da46da327f54cbbcb121e039fe4621219b4c227"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Thu Nov 26 11:35:52 2020 -0500"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Thu Nov 26 11:35:52 2020 -0500"
      },
      "message": "Merge branch \u0027stable-3.1\u0027 into master\n\n* stable-3.1:\n  Upgrade bazlets to latest stable-3.1 to build with 3.1.10 API\n\nChange-Id: I3ea050e71dc1b9799edadf20d536ab59c13524ed\n"
    },
    {
      "commit": "3da46da327f54cbbcb121e039fe4621219b4c227",
      "tree": "cca63207584f8ef6875c89e934c53cec0b10e5c9",
      "parents": [
        "6543b4325ca678e62d583ae4b59acd5e56b723a7"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Tue Nov 24 16:27:53 2020 -0500"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Tue Nov 24 16:27:53 2020 -0500"
      },
      "message": "Upgrade bazlets to latest stable-3.1 to build with 3.1.10 API\n\nChange-Id: I70940e6e4a0cd80dc86f916e6d5e07bcb1ba1ec7\n"
    },
    {
      "commit": "001a33ecbc57b7e7b74fbe6cc2eb54e06480697f",
      "tree": "3467b8fbaa9a0be52ab91e4ebc1e82211b9b2765",
      "parents": [
        "ee2d6af619348a083220d2f87961675b300c1d10",
        "6543b4325ca678e62d583ae4b59acd5e56b723a7"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Tue Nov 03 17:22:45 2020 -0500"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Tue Nov 03 17:22:45 2020 -0500"
      },
      "message": "Merge branch \u0027stable-3.1\u0027 into master\n\n* stable-3.1:\n  Bump Bazel version to 3.7.0\n  Upgrade bazlets to latest stable-3.0 to build with 3.0.13 API\n\nChange-Id: I3b4e96a07e7adba1c35b3da6ce96a24e6722b6b0\n"
    },
    {
      "commit": "6543b4325ca678e62d583ae4b59acd5e56b723a7",
      "tree": "2f200bc57ca282b36ba2de322d5e7bdfa4f5ea7a",
      "parents": [
        "3c63a635de9de6d5653142ed635249fff3e2cc22",
        "a6e2e3e4b4f639712c47f1afaf410aa713ee93fb"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Thu Oct 29 11:57:52 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Thu Oct 29 11:57:52 2020 -0400"
      },
      "message": "Merge branch \u0027stable-3.0\u0027 into stable-3.1\n\n* stable-3.0:\n  Bump Bazel version to 3.7.0\n  Upgrade bazlets to latest stable-3.0 to build with 3.0.13 API\n\nChange-Id: I9c8fe09e1fe6df4b766d15d7171329808878f61c\n"
    },
    {
      "commit": "a6e2e3e4b4f639712c47f1afaf410aa713ee93fb",
      "tree": "7d6ffd9d7a0b082da85dcb55faf15c983ff29bd9",
      "parents": [
        "832ee9009db36ec71dc09eff103a49a9841441bc"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Tue Oct 27 16:12:57 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Tue Oct 27 16:12:57 2020 -0400"
      },
      "message": "Bump Bazel version to 3.7.0\n\nChange-Id: I3cb6b8f2824f9b2c87a29b825d369e2761d2f949\n"
    },
    {
      "commit": "832ee9009db36ec71dc09eff103a49a9841441bc",
      "tree": "220ff729af58154993eb2f6bf1c35312cf43b1ac",
      "parents": [
        "2d04826811820e3ce3c5fbe4d4ea7038051db4d4"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Tue Oct 20 15:59:23 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Tue Oct 20 15:59:23 2020 -0400"
      },
      "message": "Upgrade bazlets to latest stable-3.0 to build with 3.0.13 API\n\nChange-Id: I479fff5fd58d544947462fe26813c6af38bf3f30\n"
    },
    {
      "commit": "ee2d6af619348a083220d2f87961675b300c1d10",
      "tree": "cd00b73ab0c98b646e8a036daebc606111682e24",
      "parents": [
        "d3540f05bfe719afd1fe1f51cd8e3bcbcf931b23",
        "3c63a635de9de6d5653142ed635249fff3e2cc22"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Fri Sep 11 14:57:41 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Fri Sep 11 14:57:49 2020 -0400"
      },
      "message": "Merge branch \u0027stable-3.1\u0027\n\n* stable-3.1:\n  Bump Bazel version to 3.5.0\n\nChange-Id: I36897b632cbeaa557f6623e2797b48f6122b9add\n"
    },
    {
      "commit": "d3540f05bfe719afd1fe1f51cd8e3bcbcf931b23",
      "tree": "be244164913bb0a2df5efb23c7f003bc6160e1db",
      "parents": [
        "22f2be2ea87638892f38d88fe9c676e74af9237d"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Fri Sep 11 14:48:23 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Fri Sep 11 14:54:33 2020 -0400"
      },
      "message": "GithubApiUrlTest: Adapt to PluginConfig update change in master\n\nSwitch to the snapshot api for that matter.\n\nChange-Id: I2ca0d8d885ea1ef8d39d65ca6ae504bafbdf5bf2\n"
    },
    {
      "commit": "3c63a635de9de6d5653142ed635249fff3e2cc22",
      "tree": "ba49f748e46b907c99eb30210b5881bf67c7f4b2",
      "parents": [
        "c604671773a908592cbf4895b5fa9ffe8f2592a8",
        "2d04826811820e3ce3c5fbe4d4ea7038051db4d4"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Tue Sep 08 15:34:23 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Tue Sep 08 15:35:44 2020 -0400"
      },
      "message": "Merge branch \u0027stable-3.0\u0027 into stable-3.1\n\n* stable-3.0:\n  Bump Bazel version to 3.5.0\n\nChange-Id: Ie8926ea59fb586fdc4f6ab2547500281a3913dbd\n"
    },
    {
      "commit": "2d04826811820e3ce3c5fbe4d4ea7038051db4d4",
      "tree": "ce8b226742d72f73e48e24c322b7a46677a7fd7d",
      "parents": [
        "b232d4d84a0713413badb4435ecc1ebd88f7e23d"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Thu Sep 03 15:11:19 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Thu Sep 03 15:11:19 2020 -0400"
      },
      "message": "Bump Bazel version to 3.5.0\n\nChange-Id: Ibff06183b2d10e1b9df5fb9c86ca582ff6711f8f\n"
    },
    {
      "commit": "22f2be2ea87638892f38d88fe9c676e74af9237d",
      "tree": "6db5377e33609c057a8b826c10e31b1cb34f3517",
      "parents": [
        "44285a439d72378c097b45d3c73d9db773569fe1"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Thu Jul 30 11:29:50 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Thu Jul 30 11:29:50 2020 -0400"
      },
      "message": "Upgrade bazlets to latest master to build with 3.2.3 API\n\nChange-Id: I7fe44d70270d1d993a13942656207f9b26a035f6\n"
    },
    {
      "commit": "44285a439d72378c097b45d3c73d9db773569fe1",
      "tree": "8c2a53473d710a8a8ece871f89f3e4f007c3f41f",
      "parents": [
        "35e8f027b699e2808e4ab393cc28f4ad843b4d4a",
        "c604671773a908592cbf4895b5fa9ffe8f2592a8"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Thu Jul 30 11:26:39 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Thu Jul 30 11:26:39 2020 -0400"
      },
      "message": "Merge branch \u0027stable-3.1\u0027\n\n* stable-3.1:\n  Upgrade bazlets to latest stable-3.1 to build with 3.1.8 API\n  Upgrade bazlets to latest stable-3.0 to build with 3.0.12 API\n  Upgrade bazlets to latest stable-2.16 to build with 2.16.22 API\n\nChange-Id: Ida9c1680173e38eb5b95f04b356a831af21a159c\n"
    },
    {
      "commit": "c604671773a908592cbf4895b5fa9ffe8f2592a8",
      "tree": "a8ea19db20a34582908ddbf3b94148a798293bac",
      "parents": [
        "c70109d377dbb7370cbbb91c035888f5767c1392"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Tue Jul 28 14:59:07 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Tue Jul 28 14:59:07 2020 -0400"
      },
      "message": "Upgrade bazlets to latest stable-3.1 to build with 3.1.8 API\n\nChange-Id: If92b7036996cce13e8da4bc40edb8582e012c989\n"
    },
    {
      "commit": "c70109d377dbb7370cbbb91c035888f5767c1392",
      "tree": "2b71ff6e8b2c4c1c3fa64856a6fb2e303c91d5c2",
      "parents": [
        "be8bd3283a4994a68507fb46bae32b64010e07a8",
        "b232d4d84a0713413badb4435ecc1ebd88f7e23d"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Tue Jul 28 14:42:24 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Tue Jul 28 14:42:24 2020 -0400"
      },
      "message": "Merge branch \u0027stable-3.0\u0027 into stable-3.1\n\n* stable-3.0:\n  Upgrade bazlets to latest stable-3.0 to build with 3.0.12 API\n  Upgrade bazlets to latest stable-2.16 to build with 2.16.22 API\n\nChange-Id: Ie8bbffa719d066f5f3cd276d84c9e36793b75d95\n"
    },
    {
      "commit": "b232d4d84a0713413badb4435ecc1ebd88f7e23d",
      "tree": "0ad57fe13086cb48b15844e59e4aa6bdd9a2a826",
      "parents": [
        "0f8cb9d79ca3404a75640d1a5e53757f2be192e5"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Mon Jul 27 16:23:06 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Mon Jul 27 16:23:06 2020 -0400"
      },
      "message": "Upgrade bazlets to latest stable-3.0 to build with 3.0.12 API\n\nChange-Id: I11a7c1341c7296541a55d85cf5e79eb2fdf36b75\n"
    },
    {
      "commit": "0f8cb9d79ca3404a75640d1a5e53757f2be192e5",
      "tree": "d474e5694dba982ffc2fe211de5a2d9ecfd7dde1",
      "parents": [
        "d81756357fe3d1f0b31081ead9094e0bae4f547e",
        "68517f6b904d1a587ffc9368465198c6e1dc67d8"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Mon Jul 27 16:22:32 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Mon Jul 27 16:22:32 2020 -0400"
      },
      "message": "Merge branch \u0027stable-2.16\u0027 into stable-3.0\n\n* stable-2.16:\n  Upgrade bazlets to latest stable-2.16 to build with 2.16.22 API\n\nChange-Id: Ie5d4de2fd8f588baea7fc99347dc9f4056146e56\n"
    },
    {
      "commit": "68517f6b904d1a587ffc9368465198c6e1dc67d8",
      "tree": "600d2aed1955eedd001629a25621b22f9ab06485",
      "parents": [
        "fd6f75c980b34a8c6f569e4ee1c19b3cd9eebf14"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Mon Jul 27 12:20:05 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Mon Jul 27 12:20:05 2020 -0400"
      },
      "message": "Upgrade bazlets to latest stable-2.16 to build with 2.16.22 API\n\nChange-Id: I812290a7ecb1742765c59b42439ae1c0391fc23f\n"
    },
    {
      "commit": "35e8f027b699e2808e4ab393cc28f4ad843b4d4a",
      "tree": "8c2a53473d710a8a8ece871f89f3e4f007c3f41f",
      "parents": [
        "52317290ad5d7d7f0eca028cbaf360464b96de6c"
      ],
      "author": {
        "name": "avm99963",
        "email": "me@avm99963.com",
        "time": "Sun Jun 28 23:17:16 2020 +0200"
      },
      "committer": {
        "name": "avm99963",
        "email": "me@avm99963.com",
        "time": "Mon Jul 20 22:56:20 2020 +0200"
      },
      "message": "Add support for Phabricator OAuth provider\n\nPhabricator instances implement an OAuth 2.0 server, as documented in\nhttps://secure.phabricator.com/book/phabcontrib/article/using_oauthserver/.\n\nChange-Id: Id0cab0593c5c83937c895ad4cdfab5b5c23885a6\n"
    },
    {
      "commit": "52317290ad5d7d7f0eca028cbaf360464b96de6c",
      "tree": "404fa4547e34459965c19792934beead5caae317",
      "parents": [
        "9deaf50a8df4e4099c8e018b07eb9825ae84e6c6",
        "be8bd3283a4994a68507fb46bae32b64010e07a8"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Fri Jul 17 12:00:42 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Fri Jul 17 12:00:42 2020 -0400"
      },
      "message": "Merge branch \u0027stable-3.1\u0027\n\n* stable-3.1:\n  Bump Bazel version to 3.4.1\n\nChange-Id: I2e32113cd2bdf6a8ee06e79378450d9d18d2cd9d\n"
    },
    {
      "commit": "be8bd3283a4994a68507fb46bae32b64010e07a8",
      "tree": "2b71ff6e8b2c4c1c3fa64856a6fb2e303c91d5c2",
      "parents": [
        "95b22376757d5b51470fe44b65a5edaa54c636c1",
        "d81756357fe3d1f0b31081ead9094e0bae4f547e"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Fri Jul 17 10:04:14 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Fri Jul 17 10:04:14 2020 -0400"
      },
      "message": "Merge branch \u0027stable-3.0\u0027 into stable-3.1\n\n* stable-3.0:\n  Bump Bazel version to 3.4.1\n\nChange-Id: I48b1b7d6e178d2a0e32a0a814b69856edcfe4927\n"
    },
    {
      "commit": "d81756357fe3d1f0b31081ead9094e0bae4f547e",
      "tree": "d474e5694dba982ffc2fe211de5a2d9ecfd7dde1",
      "parents": [
        "7b218688cf83d3488db17b4ae1a1fa501e921152"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Thu Jul 16 13:36:58 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Thu Jul 16 13:36:58 2020 -0400"
      },
      "message": "Bump Bazel version to 3.4.1\n\nChange-Id: I6e4830d9efb1ab1a7a41958eda161ce6e85d85d5\n"
    },
    {
      "commit": "9deaf50a8df4e4099c8e018b07eb9825ae84e6c6",
      "tree": "6a480d9033bc894fe6e23cea3bd05183b5aaf52f",
      "parents": [
        "62b8393f88b4f5c00dbf2271ab18bce158db77a9",
        "95b22376757d5b51470fe44b65a5edaa54c636c1"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Sun Jul 05 17:12:43 2020 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Sun Jul 05 17:12:43 2020 +0200"
      },
      "message": "Merge branch \u0027stable-3.1\u0027\n\n* stable-3.1:\n  LemonLDAP::NG: Remove getBearerSignature() override\n  LemonLDAP::NG: Fix default scope name\n  LemonLDAP::NG: Set username claim name in accordance with specs\n\nChange-Id: I04446c560f68a53b68921c6b7e8d9e697b57071d\n"
    },
    {
      "commit": "95b22376757d5b51470fe44b65a5edaa54c636c1",
      "tree": "e4b3038c90780e6f5daede469c35c5331694b8d1",
      "parents": [
        "ee1d38e6d6531db29e6293cac85438740a111a87"
      ],
      "author": {
        "name": "Guilhem Moulin",
        "email": "guilhem@libreoffice.org",
        "time": "Thu Jun 25 16:40:31 2020 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Sun Jul 05 17:03:21 2020 +0200"
      },
      "message": "LemonLDAP::NG: Remove getBearerSignature() override\n\nBearer Authorization Tokens appear to be supported by v2.0:\nhttps://lemonldap-ng.org/documentation/2.0/oauth2handler.\n\nChange-Id: I58d55d9e00f7881ad7143214d929df0327268011\n"
    },
    {
      "commit": "ee1d38e6d6531db29e6293cac85438740a111a87",
      "tree": "370f34b2120fbcba593bdee22fd4b9dea9649d93",
      "parents": [
        "e49fb98f51e7fe061b195824d0b8cac7acdba85b"
      ],
      "author": {
        "name": "Guilhem Moulin",
        "email": "guilhem@libreoffice.org",
        "time": "Thu Jun 25 16:21:19 2020 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Sun Jul 05 16:48:10 2020 +0200"
      },
      "message": "LemonLDAP::NG: Fix default scope name\n\n“Multiple scope values MAY be used by creating a space-delimited,\ncase-sensitive list of ASCII scope values.”\n— https://openid.net/specs/openid-connect-basic-1_0.html#Scopes\n\nChange-Id: I48a07a6a379480821a2c3d0626573c3b746f6d09\n"
    },
    {
      "commit": "e49fb98f51e7fe061b195824d0b8cac7acdba85b",
      "tree": "2529186be53e2ee92d61716e482dd7c0cc3d6fe6",
      "parents": [
        "48e314533fdea8f6f191516847fc4008f5baaa1f"
      ],
      "author": {
        "name": "Guilhem Moulin",
        "email": "guilhem@libreoffice.org",
        "time": "Thu Jun 25 15:59:51 2020 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Sun Jul 05 16:48:01 2020 +0200"
      },
      "message": "LemonLDAP::NG: Set username claim name in accordance with specs\n\nSpec: https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims\nChange-Id: I86831e83878261f8c364f43c3d3bce576453562e\n"
    },
    {
      "commit": "62b8393f88b4f5c00dbf2271ab18bce158db77a9",
      "tree": "920d4d7df6b66f24c096184b37a75bf350a46e5a",
      "parents": [
        "41e558599a965f09a90923dab4c898103e790f17",
        "48e314533fdea8f6f191516847fc4008f5baaa1f"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Thu Jul 02 09:13:59 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Thu Jul 02 09:13:59 2020 -0400"
      },
      "message": "Merge branch \u0027stable-3.1\u0027\n\n* stable-3.1:\n  Office365OAuthService: Restore Accept header in user info request\n  Upgrade bazlets to latest stable-2.16\n\nChange-Id: I02ab844c30a7b22caa5036e7aefd9a2992baedba\n"
    },
    {
      "commit": "48e314533fdea8f6f191516847fc4008f5baaa1f",
      "tree": "0d5eb7b30b135d43caf7464375bb4b38dab69640",
      "parents": [
        "0e69d90f9e7035f2a5f88cc167998b08449e9200",
        "7b218688cf83d3488db17b4ae1a1fa501e921152"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Wed Jul 01 20:29:48 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Wed Jul 01 20:29:48 2020 -0400"
      },
      "message": "Merge branch \u0027stable-3.0\u0027 into stable-3.1\n\n* stable-3.0:\n  Office365OAuthService: Restore Accept header in user info request\n  Upgrade bazlets to latest stable-2.16\n\nChange-Id: Idfe4c098c23512e416ba2534e754c562eae6f8d0\n"
    },
    {
      "commit": "7b218688cf83d3488db17b4ae1a1fa501e921152",
      "tree": "582194bd238757d8accff651e8dca8d7ec82a19e",
      "parents": [
        "27cc24bf577154c7aa63ac02a129c417fb405c1d",
        "fd6f75c980b34a8c6f569e4ee1c19b3cd9eebf14"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Wed Jul 01 13:20:43 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Wed Jul 01 13:20:43 2020 -0400"
      },
      "message": "Merge branch \u0027stable-2.16\u0027 into stable-3.0\n\n* stable-2.16:\n  Office365OAuthService: Restore Accept header in user info request\n  Upgrade bazlets to latest stable-2.16\n\nChange-Id: I1ad838dd83c60c8a513a999c5b72968087001c46\n"
    },
    {
      "commit": "fd6f75c980b34a8c6f569e4ee1c19b3cd9eebf14",
      "tree": "3e502514cd3f30071ca6e61317c5102149a21cb8",
      "parents": [
        "a34aff962ad1455d763b80d0da019a63cd4fb315"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Sun Jun 28 06:37:10 2020 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david.ostrovsky@gmail.com",
        "time": "Tue Jun 30 05:28:12 2020 +0000"
      },
      "message": "Office365OAuthService: Restore Accept header in user info request\n\nIn update of scribe version change: I68717ebb988 Accept header was\ninadvertently removed. Restore the setting of Accept header to \"*/*\":\n\n  request.addHeader(\"Accept\", \"*/*\");\n\nBug: Issue https://github.com/davido/gerrit-oauth-provider/issues/144\nChange-Id: I224f798c7fb37e24be7f4fecfc29e11932c51286\n"
    },
    {
      "commit": "41e558599a965f09a90923dab4c898103e790f17",
      "tree": "c75a2550cd3d8640fb6137e2db6cece77a40da64",
      "parents": [
        "95a8c58c7a05f008dd671d316640e9a6b10e62ef"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Fri Jun 19 09:11:57 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Fri Jun 19 09:11:57 2020 -0400"
      },
      "message": "Upgrade bazlets to latest master to build with 3.2.2 API\n\nChange-Id: I2e712d1b73500f1bf2437a5c1ca3d057d6027efc\n"
    },
    {
      "commit": "95a8c58c7a05f008dd671d316640e9a6b10e62ef",
      "tree": "70424cb353c10f36c95778cd1f90f1790c91c2a1",
      "parents": [
        "4b9818f02e0d4da2f295116377c5aa1d8d73f09d",
        "0e69d90f9e7035f2a5f88cc167998b08449e9200"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Fri Jun 19 09:08:05 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Fri Jun 19 09:08:05 2020 -0400"
      },
      "message": "Merge branch \u0027stable-3.1\u0027\n\n* stable-3.1:\n  Upgrade bazlets to latest stable-3.1 to build with 3.1.7 API\n  Upgrade bazlets to latest stable-3.0 to build with 3.0.11 API\n  Remove the commented-out snapshot plugin api lines\n  Adapt SNAPSHOT plugin api example to the 3.1 version\n  Upgrade bazlets to latest stable-3.1\n  Prepare for new gerrit_api snapshot version usage\n  Upgrade bazlets to latest stable-3.0\n  Upgrade bazlets to latest stable-3.0\n\nChange-Id: Ifa01708aedb1b0a0374c4c3e6eb445b2db33f3b3\n"
    },
    {
      "commit": "0e69d90f9e7035f2a5f88cc167998b08449e9200",
      "tree": "33c08f582c1f8e113a0dc4d40679dcf519a25594",
      "parents": [
        "e5c63d2aad7c492859fcfa15c12f38f2573c6fd6"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Thu Jun 18 14:42:47 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Thu Jun 18 14:42:47 2020 -0400"
      },
      "message": "Upgrade bazlets to latest stable-3.1 to build with 3.1.7 API\n\nChange-Id: Ie698aed37516dd1e922e7592527929fe0860bef8\n"
    },
    {
      "commit": "e5c63d2aad7c492859fcfa15c12f38f2573c6fd6",
      "tree": "3b9963572953f48c1275a13c39025519166ef2bc",
      "parents": [
        "903a5789c161de60d5094d79d68fcefed5a665c7",
        "27cc24bf577154c7aa63ac02a129c417fb405c1d"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Thu Jun 18 14:39:10 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Thu Jun 18 14:39:10 2020 -0400"
      },
      "message": "Merge branch \u0027stable-3.0\u0027 into stable-3.1\n\n* stable-3.0:\n  Upgrade bazlets to latest stable-3.0 to build with 3.0.11 API\n  Remove the commented-out snapshot plugin api lines\n\nChange-Id: I7a7f6a47fa838fe699c80049ad87ec95a68d0333\n"
    },
    {
      "commit": "27cc24bf577154c7aa63ac02a129c417fb405c1d",
      "tree": "0ac98c207d53164b416e05a0e763c7e937ed5141",
      "parents": [
        "7cba86575d76bde366ae0f72398c8db835328084"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Wed Jun 17 14:41:45 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Wed Jun 17 14:41:45 2020 -0400"
      },
      "message": "Upgrade bazlets to latest stable-3.0 to build with 3.0.11 API\n\nChange-Id: I98a29519ab160b5408dca7c7cf36222918d05bc3\n"
    },
    {
      "commit": "7cba86575d76bde366ae0f72398c8db835328084",
      "tree": "fce0cbfd705416517b76c680d965a9531d7fd228",
      "parents": [
        "c08f2dfd2f55ec7e0392afccac1f7a3604e8aa93"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Wed Jun 17 14:35:34 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Wed Jun 17 14:39:29 2020 -0400"
      },
      "message": "Remove the commented-out snapshot plugin api lines\n\nRely on bazlets README documentation for how to use a SNAPSHOT version.\n\nChange-Id: Ia94489be05f7e186c77844076626f3af495df10b\n"
    },
    {
      "commit": "903a5789c161de60d5094d79d68fcefed5a665c7",
      "tree": "c49a3ccdd3433543cc4f039749955b6031274eb7",
      "parents": [
        "da2274fc83c521d39f8411c5f781131a8ad81d7f"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Tue Jun 16 13:46:14 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Tue Jun 16 13:46:14 2020 -0400"
      },
      "message": "Adapt SNAPSHOT plugin api example to the 3.1 version\n\nChange-Id: I663bc4b46c3f61842292a8fd4025f9f79be2b8b8\n"
    },
    {
      "commit": "da2274fc83c521d39f8411c5f781131a8ad81d7f",
      "tree": "b0a5586854217ef811a4d613ae59d7b8ae5c29fc",
      "parents": [
        "4edcc9dc1abc5fb549377cf3fa7b7e70b849e587"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Tue Jun 16 12:34:32 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Tue Jun 16 12:34:32 2020 -0400"
      },
      "message": "Upgrade bazlets to latest stable-3.1\n\nChange-Id: If8cb174fbb811938ba5c381b9843162c4e713e87\n"
    },
    {
      "commit": "4edcc9dc1abc5fb549377cf3fa7b7e70b849e587",
      "tree": "35401c5e6145651884d8bf152f36afa98facaf0d",
      "parents": [
        "5f3d57c91576a27d0a7be4aeb3d56e9a68cd10e7",
        "c08f2dfd2f55ec7e0392afccac1f7a3604e8aa93"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Tue Jun 16 12:33:17 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Tue Jun 16 12:33:17 2020 -0400"
      },
      "message": "Merge branch \u0027stable-3.0\u0027 into stable-3.1\n\n* stable-3.0:\n  Prepare for new gerrit_api snapshot version usage\n  Upgrade bazlets to latest stable-3.0\n  Upgrade bazlets to latest stable-3.0\n\nChange-Id: Ib82f1ca76249286763d52ff85eca095eb312d4f0\n"
    },
    {
      "commit": "c08f2dfd2f55ec7e0392afccac1f7a3604e8aa93",
      "tree": "5f3f389a5f2e6ec64f1d3f3055ad69d573a46d89",
      "parents": [
        "ca917b0bc93ab7e77c10481f5490a2437e733472"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Mon Jun 15 10:30:07 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Mon Jun 15 10:30:07 2020 -0400"
      },
      "message": "Prepare for new gerrit_api snapshot version usage\n\nChange-Id: Id8eb9f282cfee7d1bf4f03650c5dd43dbc657b3d\n"
    },
    {
      "commit": "ca917b0bc93ab7e77c10481f5490a2437e733472",
      "tree": "d66e748bb7165cd5f987f93bdf1b25c5392ca5ef",
      "parents": [
        "a7d378bbf5ece8282d9953ab7c00bccc5392945a"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Mon Jun 15 09:25:47 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Mon Jun 15 09:25:47 2020 -0400"
      },
      "message": "Upgrade bazlets to latest stable-3.0\n\nChange-Id: I4ad42f4277041bff55099cddf58dcdc1e4f67fc6\n"
    },
    {
      "commit": "a7d378bbf5ece8282d9953ab7c00bccc5392945a",
      "tree": "581bd4214f616613f725619db6ea33a245d2e031",
      "parents": [
        "48178665cf578932f7c4783d9623bea76544fa3d"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "dpursehouse@digital.ai",
        "time": "Fri Jun 12 15:53:18 2020 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "dpursehouse@digital.ai",
        "time": "Fri Jun 12 15:53:46 2020 +0900"
      },
      "message": "Upgrade bazlets to latest stable-3.0\n\n- Set snapshot version to 3.0.11-SNAPSHOT\n- Add repository rule to provide gerrit api version\n\nChange-Id: I57515a908e7c31b01165a829ed8f427a85ee12de\n"
    }
  ],
  "next": "a34aff962ad1455d763b80d0da019a63cd4fb315"
}
