From a032544ee969d91ce229b627534168702645f4dc Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 1 May 2024 12:36:22 +0000
Subject: [PATCH] Bump github.com/getkin/kin-openapi from 0.123.0 to 0.124.0

Bumps [github.com/getkin/kin-openapi](https://github.com/getkin/kin-openapi) from 0.123.0 to 0.124.0.
- [Release notes](https://github.com/getkin/kin-openapi/releases)
- [Commits](https://github.com/getkin/kin-openapi/compare/v0.123.0...v0.124.0)

---
updated-dependencies:
- dependency-name: github.com/getkin/kin-openapi
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
---
 go.mod                                        |    5 +-
 go.sum                                        |   11 -
 vendor/github.com/getkin/kin-openapi/LICENSE  |   21 -
 .../getkin/kin-openapi/openapi3/callback.go   |   54 -
 .../getkin/kin-openapi/openapi3/components.go |  361 ---
 .../getkin/kin-openapi/openapi3/contact.go    |   59 -
 .../getkin/kin-openapi/openapi3/content.go    |  124 -
 .../kin-openapi/openapi3/discriminator.go     |   52 -
 .../getkin/kin-openapi/openapi3/doc.go        |    4 -
 .../getkin/kin-openapi/openapi3/encoding.go   |  139 --
 .../getkin/kin-openapi/openapi3/errors.go     |   59 -
 .../getkin/kin-openapi/openapi3/example.go    |   76 -
 .../openapi3/example_validation.go            |   16 -
 .../getkin/kin-openapi/openapi3/extension.go  |   32 -
 .../kin-openapi/openapi3/external_docs.go     |   64 -
 .../getkin/kin-openapi/openapi3/header.go     |   96 -
 .../getkin/kin-openapi/openapi3/helpers.go    |   41 -
 .../getkin/kin-openapi/openapi3/info.go       |   91 -
 .../kin-openapi/openapi3/internalize_refs.go  |  443 ----
 .../getkin/kin-openapi/openapi3/license.go    |   57 -
 .../getkin/kin-openapi/openapi3/link.go       |   85 -
 .../getkin/kin-openapi/openapi3/loader.go     | 1109 ---------
 .../kin-openapi/openapi3/loader_uri_reader.go |  116 -
 .../getkin/kin-openapi/openapi3/maplike.go    |  345 ---
 .../getkin/kin-openapi/openapi3/marsh.go      |   26 -
 .../getkin/kin-openapi/openapi3/media_type.go |  170 --
 .../getkin/kin-openapi/openapi3/openapi3.go   |  191 --
 .../getkin/kin-openapi/openapi3/operation.go  |  213 --
 .../getkin/kin-openapi/openapi3/parameter.go  |  407 ----
 .../getkin/kin-openapi/openapi3/path_item.go  |  239 --
 .../getkin/kin-openapi/openapi3/paths.go      |  268 ---
 .../getkin/kin-openapi/openapi3/ref.go        |    7 -
 .../getkin/kin-openapi/openapi3/refs.go       |  713 ------
 .../kin-openapi/openapi3/request_body.go      |  129 -
 .../getkin/kin-openapi/openapi3/response.go   |  218 --
 .../getkin/kin-openapi/openapi3/schema.go     | 2139 -----------------
 .../kin-openapi/openapi3/schema_formats.go    |  106 -
 .../kin-openapi/openapi3/schema_pattern.go    |   29 -
 .../openapi3/schema_validation_settings.go    |   79 -
 .../openapi3/security_requirements.go         |   51 -
 .../kin-openapi/openapi3/security_scheme.go   |  402 ----
 .../openapi3/serialization_method.go          |   17 -
 .../getkin/kin-openapi/openapi3/server.go     |  284 ---
 .../getkin/kin-openapi/openapi3/tag.go        |   90 -
 .../openapi3/testdata/circularRef/base.yml    |   16 -
 .../openapi3/testdata/circularRef/other.yml   |   10 -
 .../testdata/recursiveRef/components/Bar.yml  |    2 -
 .../testdata/recursiveRef/components/Cat.yml  |    4 -
 .../testdata/recursiveRef/components/Foo.yml  |    4 -
 .../recursiveRef/components/Foo/Foo2.yml      |    4 -
 .../recursiveRef/components/models/error.yaml |    2 -
 .../testdata/recursiveRef/issue615.yml        |   60 -
 .../testdata/recursiveRef/openapi.yml         |   33 -
 .../recursiveRef/openapi.yml.internalized.yml |  110 -
 .../recursiveRef/parameters/number.yml        |    4 -
 .../testdata/recursiveRef/paths/foo.yml       |   15 -
 .../openapi3/validation_options.go            |  112 -
 .../getkin/kin-openapi/openapi3/visited.go    |   41 -
 .../getkin/kin-openapi/openapi3/xml.go        |   69 -
 vendor/github.com/invopop/yaml/.gitignore     |   20 -
 vendor/github.com/invopop/yaml/.golangci.toml |   15 -
 vendor/github.com/invopop/yaml/LICENSE        |   50 -
 vendor/github.com/invopop/yaml/README.md      |  128 -
 vendor/github.com/invopop/yaml/fields.go      |  498 ----
 vendor/github.com/invopop/yaml/yaml.go        |  314 ---
 vendor/github.com/mohae/deepcopy/.gitignore   |   26 -
 vendor/github.com/mohae/deepcopy/.travis.yml  |   11 -
 vendor/github.com/mohae/deepcopy/LICENSE      |   21 -
 vendor/github.com/mohae/deepcopy/README.md    |    8 -
 vendor/github.com/mohae/deepcopy/deepcopy.go  |  125 -
 .../perimeterx/marshmallow/.gitignore         |    4 -
 .../perimeterx/marshmallow/CHANGELOG.md       |   49 -
 .../perimeterx/marshmallow/CODE_OF_CONDUCT.md |  133 -
 .../perimeterx/marshmallow/CONTRIBUTING.md    |   47 -
 .../github.com/perimeterx/marshmallow/LICENSE |   21 -
 .../perimeterx/marshmallow/README.md          |  205 --
 .../perimeterx/marshmallow/cache.go           |   63 -
 .../github.com/perimeterx/marshmallow/doc.go  |   10 -
 .../perimeterx/marshmallow/errors.go          |  101 -
 .../perimeterx/marshmallow/options.go         |   96 -
 .../perimeterx/marshmallow/reflection.go      |  197 --
 .../perimeterx/marshmallow/unmarshal.go       |  383 ---
 .../marshmallow/unmarshal_from_json_map.go    |  295 ---
 .../posener/complete/{readme.md => README.md} |    0
 vendor/modules.txt                            |   14 +-
 85 files changed, 3 insertions(+), 12555 deletions(-)
 delete mode 100644 vendor/github.com/getkin/kin-openapi/LICENSE
 delete mode 100644 vendor/github.com/getkin/kin-openapi/openapi3/callback.go
 delete mode 100644 vendor/github.com/getkin/kin-openapi/openapi3/components.go
 delete mode 100644 vendor/github.com/getkin/kin-openapi/openapi3/contact.go
 delete mode 100644 vendor/github.com/getkin/kin-openapi/openapi3/content.go
 delete mode 100644 vendor/github.com/getkin/kin-openapi/openapi3/discriminator.go
 delete mode 100644 vendor/github.com/getkin/kin-openapi/openapi3/doc.go
 delete mode 100644 vendor/github.com/getkin/kin-openapi/openapi3/encoding.go
 delete mode 100644 vendor/github.com/getkin/kin-openapi/openapi3/errors.go
 delete mode 100644 vendor/github.com/getkin/kin-openapi/openapi3/example.go
 delete mode 100644 vendor/github.com/getkin/kin-openapi/openapi3/example_validation.go
 delete mode 100644 vendor/github.com/getkin/kin-openapi/openapi3/extension.go
 delete mode 100644 vendor/github.com/getkin/kin-openapi/openapi3/external_docs.go
 delete mode 100644 vendor/github.com/getkin/kin-openapi/openapi3/header.go
 delete mode 100644 vendor/github.com/getkin/kin-openapi/openapi3/helpers.go
 delete mode 100644 vendor/github.com/getkin/kin-openapi/openapi3/info.go
 delete mode 100644 vendor/github.com/getkin/kin-openapi/openapi3/internalize_refs.go
 delete mode 100644 vendor/github.com/getkin/kin-openapi/openapi3/license.go
 delete mode 100644 vendor/github.com/getkin/kin-openapi/openapi3/link.go
 delete mode 100644 vendor/github.com/getkin/kin-openapi/openapi3/loader.go
 delete mode 100644 vendor/github.com/getkin/kin-openapi/openapi3/loader_uri_reader.go
 delete mode 100644 vendor/github.com/getkin/kin-openapi/openapi3/maplike.go
 delete mode 100644 vendor/github.com/getkin/kin-openapi/openapi3/marsh.go
 delete mode 100644 vendor/github.com/getkin/kin-openapi/openapi3/media_type.go
 delete mode 100644 vendor/github.com/getkin/kin-openapi/openapi3/openapi3.go
 delete mode 100644 vendor/github.com/getkin/kin-openapi/openapi3/operation.go
 delete mode 100644 vendor/github.com/getkin/kin-openapi/openapi3/parameter.go
 delete mode 100644 vendor/github.com/getkin/kin-openapi/openapi3/path_item.go
 delete mode 100644 vendor/github.com/getkin/kin-openapi/openapi3/paths.go
 delete mode 100644 vendor/github.com/getkin/kin-openapi/openapi3/ref.go
 delete mode 100644 vendor/github.com/getkin/kin-openapi/openapi3/refs.go
 delete mode 100644 vendor/github.com/getkin/kin-openapi/openapi3/request_body.go
 delete mode 100644 vendor/github.com/getkin/kin-openapi/openapi3/response.go
 delete mode 100644 vendor/github.com/getkin/kin-openapi/openapi3/schema.go
 delete mode 100644 vendor/github.com/getkin/kin-openapi/openapi3/schema_formats.go
 delete mode 100644 vendor/github.com/getkin/kin-openapi/openapi3/schema_pattern.go
 delete mode 100644 vendor/github.com/getkin/kin-openapi/openapi3/schema_validation_settings.go
 delete mode 100644 vendor/github.com/getkin/kin-openapi/openapi3/security_requirements.go
 delete mode 100644 vendor/github.com/getkin/kin-openapi/openapi3/security_scheme.go
 delete mode 100644 vendor/github.com/getkin/kin-openapi/openapi3/serialization_method.go
 delete mode 100644 vendor/github.com/getkin/kin-openapi/openapi3/server.go
 delete mode 100644 vendor/github.com/getkin/kin-openapi/openapi3/tag.go
 delete mode 100644 vendor/github.com/getkin/kin-openapi/openapi3/testdata/circularRef/base.yml
 delete mode 100644 vendor/github.com/getkin/kin-openapi/openapi3/testdata/circularRef/other.yml
 delete mode 100644 vendor/github.com/getkin/kin-openapi/openapi3/testdata/recursiveRef/components/Bar.yml
 delete mode 100644 vendor/github.com/getkin/kin-openapi/openapi3/testdata/recursiveRef/components/Cat.yml
 delete mode 100644 vendor/github.com/getkin/kin-openapi/openapi3/testdata/recursiveRef/components/Foo.yml
 delete mode 100644 vendor/github.com/getkin/kin-openapi/openapi3/testdata/recursiveRef/components/Foo/Foo2.yml
 delete mode 100644 vendor/github.com/getkin/kin-openapi/openapi3/testdata/recursiveRef/components/models/error.yaml
 delete mode 100644 vendor/github.com/getkin/kin-openapi/openapi3/testdata/recursiveRef/issue615.yml
 delete mode 100644 vendor/github.com/getkin/kin-openapi/openapi3/testdata/recursiveRef/openapi.yml
 delete mode 100644 vendor/github.com/getkin/kin-openapi/openapi3/testdata/recursiveRef/openapi.yml.internalized.yml
 delete mode 100644 vendor/github.com/getkin/kin-openapi/openapi3/testdata/recursiveRef/parameters/number.yml
 delete mode 100644 vendor/github.com/getkin/kin-openapi/openapi3/testdata/recursiveRef/paths/foo.yml
 delete mode 100644 vendor/github.com/getkin/kin-openapi/openapi3/validation_options.go
 delete mode 100644 vendor/github.com/getkin/kin-openapi/openapi3/visited.go
 delete mode 100644 vendor/github.com/getkin/kin-openapi/openapi3/xml.go
 delete mode 100644 vendor/github.com/invopop/yaml/.gitignore
 delete mode 100644 vendor/github.com/invopop/yaml/.golangci.toml
 delete mode 100644 vendor/github.com/invopop/yaml/LICENSE
 delete mode 100644 vendor/github.com/invopop/yaml/README.md
 delete mode 100644 vendor/github.com/invopop/yaml/fields.go
 delete mode 100644 vendor/github.com/invopop/yaml/yaml.go
 delete mode 100644 vendor/github.com/mohae/deepcopy/.gitignore
 delete mode 100644 vendor/github.com/mohae/deepcopy/.travis.yml
 delete mode 100644 vendor/github.com/mohae/deepcopy/LICENSE
 delete mode 100644 vendor/github.com/mohae/deepcopy/README.md
 delete mode 100644 vendor/github.com/mohae/deepcopy/deepcopy.go
 delete mode 100644 vendor/github.com/perimeterx/marshmallow/.gitignore
 delete mode 100644 vendor/github.com/perimeterx/marshmallow/CHANGELOG.md
 delete mode 100644 vendor/github.com/perimeterx/marshmallow/CODE_OF_CONDUCT.md
 delete mode 100644 vendor/github.com/perimeterx/marshmallow/CONTRIBUTING.md
 delete mode 100644 vendor/github.com/perimeterx/marshmallow/LICENSE
 delete mode 100644 vendor/github.com/perimeterx/marshmallow/README.md
 delete mode 100644 vendor/github.com/perimeterx/marshmallow/cache.go
 delete mode 100644 vendor/github.com/perimeterx/marshmallow/doc.go
 delete mode 100644 vendor/github.com/perimeterx/marshmallow/errors.go
 delete mode 100644 vendor/github.com/perimeterx/marshmallow/options.go
 delete mode 100644 vendor/github.com/perimeterx/marshmallow/reflection.go
 delete mode 100644 vendor/github.com/perimeterx/marshmallow/unmarshal.go
 delete mode 100644 vendor/github.com/perimeterx/marshmallow/unmarshal_from_json_map.go
 rename vendor/github.com/posener/complete/{readme.md => README.md} (100%)

diff --git a/go.mod b/go.mod
index 4397592f..a16ac732 100644
--- a/go.mod
+++ b/go.mod
@@ -6,7 +6,6 @@ require (
 	github.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue v1.13.6
 	github.com/aws/aws-sdk-go-v2/service/dynamodb v1.30.1
 	github.com/aws/smithy-go v1.20.1
-	github.com/getkin/kin-openapi v0.123.0
 	github.com/go-openapi/spec v0.20.14
 	github.com/go-openapi/strfmt v0.22.1
 	github.com/go-openapi/validate v0.23.0
@@ -35,6 +34,7 @@ require (
 	github.com/go-openapi/jsonreference v0.20.4 // indirect
 	github.com/go-openapi/loads v0.21.5 // indirect
 	github.com/go-openapi/swag v0.22.9 // indirect
+	github.com/go-test/deep v1.0.8 // indirect
 	github.com/golang/protobuf v1.5.3 // indirect
 	github.com/google/go-cmp v0.6.0 // indirect
 	github.com/google/uuid v1.6.0 // indirect
@@ -59,7 +59,6 @@ require (
 	github.com/hashicorp/yamux v0.1.1 // indirect
 	github.com/huandu/xstrings v1.4.0 // indirect
 	github.com/imdario/mergo v0.3.16 // indirect
-	github.com/invopop/yaml v0.2.0 // indirect
 	github.com/josharian/intern v1.0.0 // indirect
 	github.com/mailru/easyjson v0.7.7 // indirect
 	github.com/mattn/go-colorable v0.1.13 // indirect
@@ -70,10 +69,8 @@ require (
 	github.com/mitchellh/go-wordwrap v1.0.1 // indirect
 	github.com/mitchellh/mapstructure v1.5.0 // indirect
 	github.com/mitchellh/reflectwalk v1.0.2 // indirect
-	github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect
 	github.com/oklog/run v1.1.0 // indirect
 	github.com/oklog/ulid v1.3.1 // indirect
-	github.com/perimeterx/marshmallow v1.1.5 // indirect
 	github.com/posener/complete v1.2.3 // indirect
 	github.com/russross/blackfriday v1.6.0 // indirect
 	github.com/shopspring/decimal v1.3.1 // indirect
diff --git a/go.sum b/go.sum
index c9205e9b..fa0e91e4 100644
--- a/go.sum
+++ b/go.sum
@@ -50,8 +50,6 @@ github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM=
 github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE=
 github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=
 github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
-github.com/getkin/kin-openapi v0.123.0 h1:zIik0mRwFNLyvtXK274Q6ut+dPh6nlxBp0x7mNrPhs8=
-github.com/getkin/kin-openapi v0.123.0/go.mod h1:wb1aSZA/iWmorQP9KTAS/phLj/t17B5jT7+fS8ed9NM=
 github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI=
 github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic=
 github.com/go-git/go-billy/v5 v5.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+mTU=
@@ -146,8 +144,6 @@ github.com/huandu/xstrings v1.4.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq
 github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA=
 github.com/imdario/mergo v0.3.16 h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4=
 github.com/imdario/mergo v0.3.16/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY=
-github.com/invopop/yaml v0.2.0 h1:7zky/qH+O0DwAyoobXUqvVBwgBFRxKoQ/3FjcVpjTMY=
-github.com/invopop/yaml v0.2.0/go.mod h1:2XuRLgs/ouIrW3XNzuNj7J3Nvu/Dig5MXvbCEdiBN3Q=
 github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A=
 github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo=
 github.com/jhump/protoreflect v1.15.1 h1:HUMERORf3I3ZdX05WaQ6MIpd/NJ434hTp5YiKgfCL6c=
@@ -192,14 +188,10 @@ github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RR
 github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
 github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ=
 github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
-github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw=
-github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8=
 github.com/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA=
 github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU=
 github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4=
 github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U=
-github.com/perimeterx/marshmallow v1.1.5 h1:a2LALqQ1BlHM8PZblsDdidgv1mWi1DgC2UmX50IvK2s=
-github.com/perimeterx/marshmallow v1.1.5/go.mod h1:dsXbUu8CRzfYP5a87xpp0xq9S3u0Vchtcl8we9tYaXw=
 github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4=
 github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI=
 github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
@@ -227,8 +219,6 @@ github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5
 github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals=
 github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
 github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
-github.com/ugorji/go/codec v1.2.7 h1:YPXUKf7fYbp/y8xloBqZOw2qaVggbfwMlI8WM3wZUJ0=
-github.com/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY=
 github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk=
 github.com/vmihailenco/msgpack v4.0.4+incompatible h1:dSLoQfGFAo3F6OoNhwUmLwVgaUXK79GlxNBwueZn0xI=
 github.com/vmihailenco/msgpack v4.0.4+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk=
@@ -320,6 +310,5 @@ gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRN
 gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU=
 gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
-gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
 gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
diff --git a/vendor/github.com/getkin/kin-openapi/LICENSE b/vendor/github.com/getkin/kin-openapi/LICENSE
deleted file mode 100644
index 992b9831..00000000
--- a/vendor/github.com/getkin/kin-openapi/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2017-2018 the project authors.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/vendor/github.com/getkin/kin-openapi/openapi3/callback.go b/vendor/github.com/getkin/kin-openapi/openapi3/callback.go
deleted file mode 100644
index 13532b15..00000000
--- a/vendor/github.com/getkin/kin-openapi/openapi3/callback.go
+++ /dev/null
@@ -1,54 +0,0 @@
-package openapi3
-
-import (
-	"context"
-	"sort"
-)
-
-// Callback is specified by OpenAPI/Swagger standard version 3.
-// See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#callback-object
-type Callback struct {
-	Extensions map[string]interface{} `json:"-" yaml:"-"`
-
-	m map[string]*PathItem
-}
-
-// NewCallback builds a Callback object with path items in insertion order.
-func NewCallback(opts ...NewCallbackOption) *Callback {
-	Callback := NewCallbackWithCapacity(len(opts))
-	for _, opt := range opts {
-		opt(Callback)
-	}
-	return Callback
-}
-
-// NewCallbackOption describes options to NewCallback func
-type NewCallbackOption func(*Callback)
-
-// WithCallback adds Callback as an option to NewCallback
-func WithCallback(cb string, pathItem *PathItem) NewCallbackOption {
-	return func(callback *Callback) {
-		if p := pathItem; p != nil && cb != "" {
-			callback.Set(cb, p)
-		}
-	}
-}
-
-// Validate returns an error if Callback does not comply with the OpenAPI spec.
-func (callback *Callback) Validate(ctx context.Context, opts ...ValidationOption) error {
-	ctx = WithValidationOptions(ctx, opts...)
-
-	keys := make([]string, 0, callback.Len())
-	for key := range callback.Map() {
-		keys = append(keys, key)
-	}
-	sort.Strings(keys)
-	for _, key := range keys {
-		v := callback.Value(key)
-		if err := v.Validate(ctx); err != nil {
-			return err
-		}
-	}
-
-	return validateExtensions(ctx, callback.Extensions)
-}
diff --git a/vendor/github.com/getkin/kin-openapi/openapi3/components.go b/vendor/github.com/getkin/kin-openapi/openapi3/components.go
deleted file mode 100644
index 656ea193..00000000
--- a/vendor/github.com/getkin/kin-openapi/openapi3/components.go
+++ /dev/null
@@ -1,361 +0,0 @@
-package openapi3
-
-import (
-	"context"
-	"encoding/json"
-	"fmt"
-	"sort"
-
-	"github.com/go-openapi/jsonpointer"
-)
-
-type (
-	Callbacks       map[string]*CallbackRef
-	Examples        map[string]*ExampleRef
-	Headers         map[string]*HeaderRef
-	Links           map[string]*LinkRef
-	ParametersMap   map[string]*ParameterRef
-	RequestBodies   map[string]*RequestBodyRef
-	ResponseBodies  map[string]*ResponseRef
-	Schemas         map[string]*SchemaRef
-	SecuritySchemes map[string]*SecuritySchemeRef
-)
-
-// Components is specified by OpenAPI/Swagger standard version 3.
-// See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#components-object
-type Components struct {
-	Extensions map[string]interface{} `json:"-" yaml:"-"`
-
-	Schemas         Schemas         `json:"schemas,omitempty" yaml:"schemas,omitempty"`
-	Parameters      ParametersMap   `json:"parameters,omitempty" yaml:"parameters,omitempty"`
-	Headers         Headers         `json:"headers,omitempty" yaml:"headers,omitempty"`
-	RequestBodies   RequestBodies   `json:"requestBodies,omitempty" yaml:"requestBodies,omitempty"`
-	Responses       ResponseBodies  `json:"responses,omitempty" yaml:"responses,omitempty"`
-	SecuritySchemes SecuritySchemes `json:"securitySchemes,omitempty" yaml:"securitySchemes,omitempty"`
-	Examples        Examples        `json:"examples,omitempty" yaml:"examples,omitempty"`
-	Links           Links           `json:"links,omitempty" yaml:"links,omitempty"`
-	Callbacks       Callbacks       `json:"callbacks,omitempty" yaml:"callbacks,omitempty"`
-}
-
-func NewComponents() Components {
-	return Components{}
-}
-
-// MarshalJSON returns the JSON encoding of Components.
-func (components Components) MarshalJSON() ([]byte, error) {
-	m := make(map[string]interface{}, 9+len(components.Extensions))
-	for k, v := range components.Extensions {
-		m[k] = v
-	}
-	if x := components.Schemas; len(x) != 0 {
-		m["schemas"] = x
-	}
-	if x := components.Parameters; len(x) != 0 {
-		m["parameters"] = x
-	}
-	if x := components.Headers; len(x) != 0 {
-		m["headers"] = x
-	}
-	if x := components.RequestBodies; len(x) != 0 {
-		m["requestBodies"] = x
-	}
-	if x := components.Responses; len(x) != 0 {
-		m["responses"] = x
-	}
-	if x := components.SecuritySchemes; len(x) != 0 {
-		m["securitySchemes"] = x
-	}
-	if x := components.Examples; len(x) != 0 {
-		m["examples"] = x
-	}
-	if x := components.Links; len(x) != 0 {
-		m["links"] = x
-	}
-	if x := components.Callbacks; len(x) != 0 {
-		m["callbacks"] = x
-	}
-	return json.Marshal(m)
-}
-
-// UnmarshalJSON sets Components to a copy of data.
-func (components *Components) UnmarshalJSON(data []byte) error {
-	type ComponentsBis Components
-	var x ComponentsBis
-	if err := json.Unmarshal(data, &x); err != nil {
-		return unmarshalError(err)
-	}
-	_ = json.Unmarshal(data, &x.Extensions)
-	delete(x.Extensions, "schemas")
-	delete(x.Extensions, "parameters")
-	delete(x.Extensions, "headers")
-	delete(x.Extensions, "requestBodies")
-	delete(x.Extensions, "responses")
-	delete(x.Extensions, "securitySchemes")
-	delete(x.Extensions, "examples")
-	delete(x.Extensions, "links")
-	delete(x.Extensions, "callbacks")
-	if len(x.Extensions) == 0 {
-		x.Extensions = nil
-	}
-	*components = Components(x)
-	return nil
-}
-
-// Validate returns an error if Components does not comply with the OpenAPI spec.
-func (components *Components) Validate(ctx context.Context, opts ...ValidationOption) (err error) {
-	ctx = WithValidationOptions(ctx, opts...)
-
-	schemas := make([]string, 0, len(components.Schemas))
-	for name := range components.Schemas {
-		schemas = append(schemas, name)
-	}
-	sort.Strings(schemas)
-	for _, k := range schemas {
-		v := components.Schemas[k]
-		if err = ValidateIdentifier(k); err != nil {
-			return fmt.Errorf("schema %q: %w", k, err)
-		}
-		if err = v.Validate(ctx); err != nil {
-			return fmt.Errorf("schema %q: %w", k, err)
-		}
-	}
-
-	parameters := make([]string, 0, len(components.Parameters))
-	for name := range components.Parameters {
-		parameters = append(parameters, name)
-	}
-	sort.Strings(parameters)
-	for _, k := range parameters {
-		v := components.Parameters[k]
-		if err = ValidateIdentifier(k); err != nil {
-			return fmt.Errorf("parameter %q: %w", k, err)
-		}
-		if err = v.Validate(ctx); err != nil {
-			return fmt.Errorf("parameter %q: %w", k, err)
-		}
-	}
-
-	requestBodies := make([]string, 0, len(components.RequestBodies))
-	for name := range components.RequestBodies {
-		requestBodies = append(requestBodies, name)
-	}
-	sort.Strings(requestBodies)
-	for _, k := range requestBodies {
-		v := components.RequestBodies[k]
-		if err = ValidateIdentifier(k); err != nil {
-			return fmt.Errorf("request body %q: %w", k, err)
-		}
-		if err = v.Validate(ctx); err != nil {
-			return fmt.Errorf("request body %q: %w", k, err)
-		}
-	}
-
-	responses := make([]string, 0, len(components.Responses))
-	for name := range components.Responses {
-		responses = append(responses, name)
-	}
-	sort.Strings(responses)
-	for _, k := range responses {
-		if err = ValidateIdentifier(k); err != nil {
-			return fmt.Errorf("response %q: %w", k, err)
-		}
-		v := components.Responses[k]
-		if err = v.Validate(ctx); err != nil {
-			return fmt.Errorf("response %q: %w", k, err)
-		}
-	}
-
-	headers := make([]string, 0, len(components.Headers))
-	for name := range components.Headers {
-		headers = append(headers, name)
-	}
-	sort.Strings(headers)
-	for _, k := range headers {
-		v := components.Headers[k]
-		if err = ValidateIdentifier(k); err != nil {
-			return fmt.Errorf("header %q: %w", k, err)
-		}
-		if err = v.Validate(ctx); err != nil {
-			return fmt.Errorf("header %q: %w", k, err)
-		}
-	}
-
-	securitySchemes := make([]string, 0, len(components.SecuritySchemes))
-	for name := range components.SecuritySchemes {
-		securitySchemes = append(securitySchemes, name)
-	}
-	sort.Strings(securitySchemes)
-	for _, k := range securitySchemes {
-		v := components.SecuritySchemes[k]
-		if err = ValidateIdentifier(k); err != nil {
-			return fmt.Errorf("security scheme %q: %w", k, err)
-		}
-		if err = v.Validate(ctx); err != nil {
-			return fmt.Errorf("security scheme %q: %w", k, err)
-		}
-	}
-
-	examples := make([]string, 0, len(components.Examples))
-	for name := range components.Examples {
-		examples = append(examples, name)
-	}
-	sort.Strings(examples)
-	for _, k := range examples {
-		v := components.Examples[k]
-		if err = ValidateIdentifier(k); err != nil {
-			return fmt.Errorf("example %q: %w", k, err)
-		}
-		if err = v.Validate(ctx); err != nil {
-			return fmt.Errorf("example %q: %w", k, err)
-		}
-	}
-
-	links := make([]string, 0, len(components.Links))
-	for name := range components.Links {
-		links = append(links, name)
-	}
-	sort.Strings(links)
-	for _, k := range links {
-		v := components.Links[k]
-		if err = ValidateIdentifier(k); err != nil {
-			return fmt.Errorf("link %q: %w", k, err)
-		}
-		if err = v.Validate(ctx); err != nil {
-			return fmt.Errorf("link %q: %w", k, err)
-		}
-	}
-
-	callbacks := make([]string, 0, len(components.Callbacks))
-	for name := range components.Callbacks {
-		callbacks = append(callbacks, name)
-	}
-	sort.Strings(callbacks)
-	for _, k := range callbacks {
-		v := components.Callbacks[k]
-		if err = ValidateIdentifier(k); err != nil {
-			return fmt.Errorf("callback %q: %w", k, err)
-		}
-		if err = v.Validate(ctx); err != nil {
-			return fmt.Errorf("callback %q: %w", k, err)
-		}
-	}
-
-	return validateExtensions(ctx, components.Extensions)
-}
-
-var _ jsonpointer.JSONPointable = (*Schemas)(nil)
-
-// JSONLookup implements https://pkg.go.dev/github.com/go-openapi/jsonpointer#JSONPointable
-func (m Schemas) JSONLookup(token string) (interface{}, error) {
-	if v, ok := m[token]; !ok || v == nil {
-		return nil, fmt.Errorf("no schema %q", token)
-	} else if ref := v.Ref; ref != "" {
-		return &Ref{Ref: ref}, nil
-	} else {
-		return v.Value, nil
-	}
-}
-
-var _ jsonpointer.JSONPointable = (*ParametersMap)(nil)
-
-// JSONLookup implements https://pkg.go.dev/github.com/go-openapi/jsonpointer#JSONPointable
-func (m ParametersMap) JSONLookup(token string) (interface{}, error) {
-	if v, ok := m[token]; !ok || v == nil {
-		return nil, fmt.Errorf("no parameter %q", token)
-	} else if ref := v.Ref; ref != "" {
-		return &Ref{Ref: ref}, nil
-	} else {
-		return v.Value, nil
-	}
-}
-
-var _ jsonpointer.JSONPointable = (*Headers)(nil)
-
-// JSONLookup implements https://pkg.go.dev/github.com/go-openapi/jsonpointer#JSONPointable
-func (m Headers) JSONLookup(token string) (interface{}, error) {
-	if v, ok := m[token]; !ok || v == nil {
-		return nil, fmt.Errorf("no header %q", token)
-	} else if ref := v.Ref; ref != "" {
-		return &Ref{Ref: ref}, nil
-	} else {
-		return v.Value, nil
-	}
-}
-
-var _ jsonpointer.JSONPointable = (*RequestBodyRef)(nil)
-
-// JSONLookup implements https://pkg.go.dev/github.com/go-openapi/jsonpointer#JSONPointable
-func (m RequestBodies) JSONLookup(token string) (interface{}, error) {
-	if v, ok := m[token]; !ok || v == nil {
-		return nil, fmt.Errorf("no request body %q", token)
-	} else if ref := v.Ref; ref != "" {
-		return &Ref{Ref: ref}, nil
-	} else {
-		return v.Value, nil
-	}
-}
-
-var _ jsonpointer.JSONPointable = (*ResponseRef)(nil)
-
-// JSONLookup implements https://pkg.go.dev/github.com/go-openapi/jsonpointer#JSONPointable
-func (m ResponseBodies) JSONLookup(token string) (interface{}, error) {
-	if v, ok := m[token]; !ok || v == nil {
-		return nil, fmt.Errorf("no response body %q", token)
-	} else if ref := v.Ref; ref != "" {
-		return &Ref{Ref: ref}, nil
-	} else {
-		return v.Value, nil
-	}
-}
-
-var _ jsonpointer.JSONPointable = (*SecuritySchemes)(nil)
-
-// JSONLookup implements https://pkg.go.dev/github.com/go-openapi/jsonpointer#JSONPointable
-func (m SecuritySchemes) JSONLookup(token string) (interface{}, error) {
-	if v, ok := m[token]; !ok || v == nil {
-		return nil, fmt.Errorf("no security scheme body %q", token)
-	} else if ref := v.Ref; ref != "" {
-		return &Ref{Ref: ref}, nil
-	} else {
-		return v.Value, nil
-	}
-}
-
-var _ jsonpointer.JSONPointable = (*Examples)(nil)
-
-// JSONLookup implements https://pkg.go.dev/github.com/go-openapi/jsonpointer#JSONPointable
-func (m Examples) JSONLookup(token string) (interface{}, error) {
-	if v, ok := m[token]; !ok || v == nil {
-		return nil, fmt.Errorf("no example body %q", token)
-	} else if ref := v.Ref; ref != "" {
-		return &Ref{Ref: ref}, nil
-	} else {
-		return v.Value, nil
-	}
-}
-
-var _ jsonpointer.JSONPointable = (*Links)(nil)
-
-// JSONLookup implements https://pkg.go.dev/github.com/go-openapi/jsonpointer#JSONPointable
-func (m Links) JSONLookup(token string) (interface{}, error) {
-	if v, ok := m[token]; !ok || v == nil {
-		return nil, fmt.Errorf("no link body %q", token)
-	} else if ref := v.Ref; ref != "" {
-		return &Ref{Ref: ref}, nil
-	} else {
-		return v.Value, nil
-	}
-}
-
-var _ jsonpointer.JSONPointable = (*Callbacks)(nil)
-
-// JSONLookup implements https://pkg.go.dev/github.com/go-openapi/jsonpointer#JSONPointable
-func (m Callbacks) JSONLookup(token string) (interface{}, error) {
-	if v, ok := m[token]; !ok || v == nil {
-		return nil, fmt.Errorf("no callback body %q", token)
-	} else if ref := v.Ref; ref != "" {
-		return &Ref{Ref: ref}, nil
-	} else {
-		return v.Value, nil
-	}
-}
diff --git a/vendor/github.com/getkin/kin-openapi/openapi3/contact.go b/vendor/github.com/getkin/kin-openapi/openapi3/contact.go
deleted file mode 100644
index e60d2818..00000000
--- a/vendor/github.com/getkin/kin-openapi/openapi3/contact.go
+++ /dev/null
@@ -1,59 +0,0 @@
-package openapi3
-
-import (
-	"context"
-	"encoding/json"
-)
-
-// Contact is specified by OpenAPI/Swagger standard version 3.
-// See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#contact-object
-type Contact struct {
-	Extensions map[string]interface{} `json:"-" yaml:"-"`
-
-	Name  string `json:"name,omitempty" yaml:"name,omitempty"`
-	URL   string `json:"url,omitempty" yaml:"url,omitempty"`
-	Email string `json:"email,omitempty" yaml:"email,omitempty"`
-}
-
-// MarshalJSON returns the JSON encoding of Contact.
-func (contact Contact) MarshalJSON() ([]byte, error) {
-	m := make(map[string]interface{}, 3+len(contact.Extensions))
-	for k, v := range contact.Extensions {
-		m[k] = v
-	}
-	if x := contact.Name; x != "" {
-		m["name"] = x
-	}
-	if x := contact.URL; x != "" {
-		m["url"] = x
-	}
-	if x := contact.Email; x != "" {
-		m["email"] = x
-	}
-	return json.Marshal(m)
-}
-
-// UnmarshalJSON sets Contact to a copy of data.
-func (contact *Contact) UnmarshalJSON(data []byte) error {
-	type ContactBis Contact
-	var x ContactBis
-	if err := json.Unmarshal(data, &x); err != nil {
-		return unmarshalError(err)
-	}
-	_ = json.Unmarshal(data, &x.Extensions)
-	delete(x.Extensions, "name")
-	delete(x.Extensions, "url")
-	delete(x.Extensions, "email")
-	if len(x.Extensions) == 0 {
-		x.Extensions = nil
-	}
-	*contact = Contact(x)
-	return nil
-}
-
-// Validate returns an error if Contact does not comply with the OpenAPI spec.
-func (contact *Contact) Validate(ctx context.Context, opts ...ValidationOption) error {
-	ctx = WithValidationOptions(ctx, opts...)
-
-	return validateExtensions(ctx, contact.Extensions)
-}
diff --git a/vendor/github.com/getkin/kin-openapi/openapi3/content.go b/vendor/github.com/getkin/kin-openapi/openapi3/content.go
deleted file mode 100644
index 81b070ee..00000000
--- a/vendor/github.com/getkin/kin-openapi/openapi3/content.go
+++ /dev/null
@@ -1,124 +0,0 @@
-package openapi3
-
-import (
-	"context"
-	"sort"
-	"strings"
-)
-
-// Content is specified by OpenAPI/Swagger 3.0 standard.
-type Content map[string]*MediaType
-
-func NewContent() Content {
-	return make(map[string]*MediaType)
-}
-
-func NewContentWithSchema(schema *Schema, consumes []string) Content {
-	if len(consumes) == 0 {
-		return Content{
-			"*/*": NewMediaType().WithSchema(schema),
-		}
-	}
-	content := make(map[string]*MediaType, len(consumes))
-	for _, mediaType := range consumes {
-		content[mediaType] = NewMediaType().WithSchema(schema)
-	}
-	return content
-}
-
-func NewContentWithSchemaRef(schema *SchemaRef, consumes []string) Content {
-	if len(consumes) == 0 {
-		return Content{
-			"*/*": NewMediaType().WithSchemaRef(schema),
-		}
-	}
-	content := make(map[string]*MediaType, len(consumes))
-	for _, mediaType := range consumes {
-		content[mediaType] = NewMediaType().WithSchemaRef(schema)
-	}
-	return content
-}
-
-func NewContentWithJSONSchema(schema *Schema) Content {
-	return Content{
-		"application/json": NewMediaType().WithSchema(schema),
-	}
-}
-func NewContentWithJSONSchemaRef(schema *SchemaRef) Content {
-	return Content{
-		"application/json": NewMediaType().WithSchemaRef(schema),
-	}
-}
-
-func NewContentWithFormDataSchema(schema *Schema) Content {
-	return Content{
-		"multipart/form-data": NewMediaType().WithSchema(schema),
-	}
-}
-
-func NewContentWithFormDataSchemaRef(schema *SchemaRef) Content {
-	return Content{
-		"multipart/form-data": NewMediaType().WithSchemaRef(schema),
-	}
-}
-
-func (content Content) Get(mime string) *MediaType {
-	// If the mime is empty then short-circuit to the wildcard.
-	// We do this here so that we catch only the specific case of
-	// and empty mime rather than a present, but invalid, mime type.
-	if mime == "" {
-		return content["*/*"]
-	}
-	// Start by making the most specific match possible
-	// by using the mime type in full.
-	if v := content[mime]; v != nil {
-		return v
-	}
-	// If an exact match is not found then we strip all
-	// metadata from the mime type and only use the x/y
-	// portion.
-	i := strings.IndexByte(mime, ';')
-	if i < 0 {
-		// If there is no metadata then preserve the full mime type
-		// string for later wildcard searches.
-		i = len(mime)
-	}
-	mime = mime[:i]
-	if v := content[mime]; v != nil {
-		return v
-	}
-	// If the x/y pattern has no specific match then we
-	// try the x/* pattern.
-	i = strings.IndexByte(mime, '/')
-	if i < 0 {
-		// In the case that the given mime type is not valid because it is
-		// missing the subtype we return nil so that this does not accidentally
-		// resolve with the wildcard.
-		return nil
-	}
-	mime = mime[:i] + "/*"
-	if v := content[mime]; v != nil {
-		return v
-	}
-	// Finally, the most generic match of */* is returned
-	// as a catch-all.
-	return content["*/*"]
-}
-
-// Validate returns an error if Content does not comply with the OpenAPI spec.
-func (content Content) Validate(ctx context.Context, opts ...ValidationOption) error {
-	ctx = WithValidationOptions(ctx, opts...)
-
-	keys := make([]string, 0, len(content))
-	for key := range content {
-		keys = append(keys, key)
-	}
-	sort.Strings(keys)
-	for _, k := range keys {
-		v := content[k]
-		if err := v.Validate(ctx); err != nil {
-			return err
-		}
-	}
-	return nil
-}
diff --git a/vendor/github.com/getkin/kin-openapi/openapi3/discriminator.go b/vendor/github.com/getkin/kin-openapi/openapi3/discriminator.go
deleted file mode 100644
index abb48074..00000000
--- a/vendor/github.com/getkin/kin-openapi/openapi3/discriminator.go
+++ /dev/null
@@ -1,52 +0,0 @@
-package openapi3
-
-import (
-	"context"
-	"encoding/json"
-)
-
-// Discriminator is specified by OpenAPI/Swagger standard version 3.
-// See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#discriminator-object
-type Discriminator struct {
-	Extensions map[string]interface{} `json:"-" yaml:"-"`
-
-	PropertyName string            `json:"propertyName" yaml:"propertyName"` // required
-	Mapping      map[string]string `json:"mapping,omitempty" yaml:"mapping,omitempty"`
-}
-
-// MarshalJSON returns the JSON encoding of Discriminator.
-func (discriminator Discriminator) MarshalJSON() ([]byte, error) {
-	m := make(map[string]interface{}, 2+len(discriminator.Extensions))
-	for k, v := range discriminator.Extensions {
-		m[k] = v
-	}
-	m["propertyName"] = discriminator.PropertyName
-	if x := discriminator.Mapping; len(x) != 0 {
-		m["mapping"] = x
-	}
-	return json.Marshal(m)
-}
-
-// UnmarshalJSON sets Discriminator to a copy of data.
-func (discriminator *Discriminator) UnmarshalJSON(data []byte) error {
-	type DiscriminatorBis Discriminator
-	var x DiscriminatorBis
-	if err := json.Unmarshal(data, &x); err != nil {
-		return unmarshalError(err)
-	}
-	_ = json.Unmarshal(data, &x.Extensions)
-	delete(x.Extensions, "propertyName")
-	delete(x.Extensions, "mapping")
-	if len(x.Extensions) == 0 {
-		x.Extensions = nil
-	}
-	*discriminator = Discriminator(x)
-	return nil
-}
-
-// Validate returns an error if Discriminator does not comply with the OpenAPI spec.
-func (discriminator *Discriminator) Validate(ctx context.Context, opts ...ValidationOption) error {
-	ctx = WithValidationOptions(ctx, opts...)
-
-	return validateExtensions(ctx, discriminator.Extensions)
-}
diff --git a/vendor/github.com/getkin/kin-openapi/openapi3/doc.go b/vendor/github.com/getkin/kin-openapi/openapi3/doc.go
deleted file mode 100644
index 41c9965c..00000000
--- a/vendor/github.com/getkin/kin-openapi/openapi3/doc.go
+++ /dev/null
@@ -1,4 +0,0 @@
-// Package openapi3 parses and writes OpenAPI 3 specification documents.
-//
-// See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.3.md
-package openapi3
diff --git a/vendor/github.com/getkin/kin-openapi/openapi3/encoding.go b/vendor/github.com/getkin/kin-openapi/openapi3/encoding.go
deleted file mode 100644
index 8e810279..00000000
--- a/vendor/github.com/getkin/kin-openapi/openapi3/encoding.go
+++ /dev/null
@@ -1,139 +0,0 @@
-package openapi3
-
-import (
-	"context"
-	"encoding/json"
-	"fmt"
-	"sort"
-)
-
-// Encoding is specified by OpenAPI/Swagger 3.0 standard.
-// See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#encoding-object
-type Encoding struct {
-	Extensions map[string]interface{} `json:"-" yaml:"-"`
-
-	ContentType   string  `json:"contentType,omitempty" yaml:"contentType,omitempty"`
-	Headers       Headers `json:"headers,omitempty" yaml:"headers,omitempty"`
-	Style         string  `json:"style,omitempty" yaml:"style,omitempty"`
-	Explode       *bool   `json:"explode,omitempty" yaml:"explode,omitempty"`
-	AllowReserved bool    `json:"allowReserved,omitempty" yaml:"allowReserved,omitempty"`
-}
-
-func NewEncoding() *Encoding {
-	return &Encoding{}
-}
-
-func (encoding *Encoding) WithHeader(name string, header *Header) *Encoding {
-	return encoding.WithHeaderRef(name, &HeaderRef{
-		Value: header,
-	})
-}
-
-func (encoding *Encoding) WithHeaderRef(name string, ref *HeaderRef) *Encoding {
-	headers := encoding.Headers
-	if headers == nil {
-		headers = make(map[string]*HeaderRef)
-		encoding.Headers = headers
-	}
-	headers[name] = ref
-	return encoding
-}
-
-// MarshalJSON returns the JSON encoding of Encoding.
-func (encoding Encoding) MarshalJSON() ([]byte, error) {
-	m := make(map[string]interface{}, 5+len(encoding.Extensions))
-	for k, v := range encoding.Extensions {
-		m[k] = v
-	}
-	if x := encoding.ContentType; x != "" {
-		m["contentType"] = x
-	}
-	if x := encoding.Headers; len(x) != 0 {
-		m["headers"] = x
-	}
-	if x := encoding.Style; x != "" {
-		m["style"] = x
-	}
-	if x := encoding.Explode; x != nil {
-		m["explode"] = x
-	}
-	if x := encoding.AllowReserved; x {
-		m["allowReserved"] = x
-	}
-	return json.Marshal(m)
-}
-
-// UnmarshalJSON sets Encoding to a copy of data.
-func (encoding *Encoding) UnmarshalJSON(data []byte) error {
-	type EncodingBis Encoding
-	var x EncodingBis
-	if err := json.Unmarshal(data, &x); err != nil {
-		return unmarshalError(err)
-	}
-	_ = json.Unmarshal(data, &x.Extensions)
-	delete(x.Extensions, "contentType")
-	delete(x.Extensions, "headers")
-	delete(x.Extensions, "style")
-	delete(x.Extensions, "explode")
-	delete(x.Extensions, "allowReserved")
-	if len(x.Extensions) == 0 {
-		x.Extensions = nil
-	}
-	*encoding = Encoding(x)
-	return nil
-}
-
-// SerializationMethod returns a serialization method of request body.
-// When serialization method is not defined the method returns the default serialization method.
-func (encoding *Encoding) SerializationMethod() *SerializationMethod {
-	sm := &SerializationMethod{Style: SerializationForm, Explode: true}
-	if encoding != nil {
-		if encoding.Style != "" {
-			sm.Style = encoding.Style
-		}
-		if encoding.Explode != nil {
-			sm.Explode = *encoding.Explode
-		}
-	}
-	return sm
-}
-
-// Validate returns an error if Encoding does not comply with the OpenAPI spec.
-func (encoding *Encoding) Validate(ctx context.Context, opts ...ValidationOption) error {
-	ctx = WithValidationOptions(ctx, opts...)
-
-	if encoding == nil {
-		return nil
-	}
-
-	headers := make([]string, 0, len(encoding.Headers))
-	for k := range encoding.Headers {
-		headers = append(headers, k)
-	}
-	sort.Strings(headers)
-	for _, k := range headers {
-		v := encoding.Headers[k]
-		if err := ValidateIdentifier(k); err != nil {
-			return nil
-		}
-		if err := v.Validate(ctx); err != nil {
-			return nil
-		}
-	}
-
-	// Validate a media types's serialization method.
-	sm := encoding.SerializationMethod()
-	switch {
-	case sm.Style == SerializationForm && sm.Explode,
-		sm.Style == SerializationForm && !sm.Explode,
-		sm.Style == SerializationSpaceDelimited && sm.Explode,
-		sm.Style == SerializationSpaceDelimited && !sm.Explode,
-		sm.Style == SerializationPipeDelimited && sm.Explode,
-		sm.Style == SerializationPipeDelimited && !sm.Explode,
-		sm.Style == SerializationDeepObject && sm.Explode:
-	default:
-		return fmt.Errorf("serialization method with style=%q and explode=%v is not supported by media type", sm.Style, sm.Explode)
-	}
-
-	return validateExtensions(ctx, encoding.Extensions)
-}
diff --git a/vendor/github.com/getkin/kin-openapi/openapi3/errors.go b/vendor/github.com/getkin/kin-openapi/openapi3/errors.go
deleted file mode 100644
index 74baab9a..00000000
--- a/vendor/github.com/getkin/kin-openapi/openapi3/errors.go
+++ /dev/null
@@ -1,59 +0,0 @@
-package openapi3
-
-import (
-	"bytes"
-	"errors"
-)
-
-// MultiError is a collection of errors, intended for when
-// multiple issues need to be reported upstream
-type MultiError []error
-
-func (me MultiError) Error() string {
-	return spliceErr(" | ", me)
-}
-
-func spliceErr(sep string, errs []error) string {
-	buff := &bytes.Buffer{}
-	for i, e := range errs {
-		buff.WriteString(e.Error())
-		if i != len(errs)-1 {
-			buff.WriteString(sep)
-		}
-	}
-	return buff.String()
-}
-
-// Is allows you to determine if a generic error is in fact a MultiError using `errors.Is()`
-// It will also return true if any of the contained errors match target
-func (me MultiError) Is(target error) bool {
-	if _, ok := target.(MultiError); ok {
-		return true
-	}
-	for _, e := range me {
-		if errors.Is(e, target) {
-			return true
-		}
-	}
-	return false
-}
-
-// As allows you to use `errors.As()` to set target to the first error within the multi error that matches the target type
-func (me MultiError) As(target interface{}) bool {
-	for _, e := range me {
-		if errors.As(e, target) {
-			return true
-		}
-	}
-	return false
-}
-
-type multiErrorForOneOf MultiError
-
-func (meo multiErrorForOneOf) Error() string {
-	return spliceErr(" Or ", meo)
-}
-
-func (meo multiErrorForOneOf) Unwrap() error {
-	return MultiError(meo)
-}
diff --git a/vendor/github.com/getkin/kin-openapi/openapi3/example.go b/vendor/github.com/getkin/kin-openapi/openapi3/example.go
deleted file mode 100644
index 44e71d82..00000000
--- a/vendor/github.com/getkin/kin-openapi/openapi3/example.go
+++ /dev/null
@@ -1,76 +0,0 @@
-package openapi3
-
-import (
-	"context"
-	"encoding/json"
-	"errors"
-)
-
-// Example is specified by OpenAPI/Swagger 3.0 standard.
-// See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#example-object
-type Example struct {
-	Extensions map[string]interface{} `json:"-" yaml:"-"`
-
-	Summary       string      `json:"summary,omitempty" yaml:"summary,omitempty"`
-	Description   string      `json:"description,omitempty" yaml:"description,omitempty"`
-	Value         interface{} `json:"value,omitempty" yaml:"value,omitempty"`
-	ExternalValue string      `json:"externalValue,omitempty" yaml:"externalValue,omitempty"`
-}
-
-func NewExample(value interface{}) *Example {
-	return &Example{Value: value}
-}
-
-// MarshalJSON returns the JSON encoding of Example.
-func (example Example) MarshalJSON() ([]byte, error) {
-	m := make(map[string]interface{}, 4+len(example.Extensions))
-	for k, v := range example.Extensions {
-		m[k] = v
-	}
-	if x := example.Summary; x != "" {
-		m["summary"] = x
-	}
-	if x := example.Description; x != "" {
-		m["description"] = x
-	}
-	if x := example.Value; x != nil {
-		m["value"] = x
-	}
-	if x := example.ExternalValue; x != "" {
-		m["externalValue"] = x
-	}
-	return json.Marshal(m)
-}
-
-// UnmarshalJSON sets Example to a copy of data.
-func (example *Example) UnmarshalJSON(data []byte) error {
-	type ExampleBis Example
-	var x ExampleBis
-	if err := json.Unmarshal(data, &x); err != nil {
-		return unmarshalError(err)
-	}
-	_ = json.Unmarshal(data, &x.Extensions)
-	delete(x.Extensions, "summary")
-	delete(x.Extensions, "description")
-	delete(x.Extensions, "value")
-	delete(x.Extensions, "externalValue")
-	if len(x.Extensions) == 0 {
-		x.Extensions = nil
-	}
-	*example = Example(x)
-	return nil
-}
-
-// Validate returns an error if Example does not comply with the OpenAPI spec.
-func (example *Example) Validate(ctx context.Context, opts ...ValidationOption) error {
-	ctx = WithValidationOptions(ctx, opts...)
-
-	if example.Value != nil && example.ExternalValue != "" {
-		return errors.New("value and externalValue are mutually exclusive")
-	}
-	if example.Value == nil && example.ExternalValue == "" {
-		return errors.New("no value or externalValue field")
-	}
-
-	return validateExtensions(ctx, example.Extensions)
-}
diff --git a/vendor/github.com/getkin/kin-openapi/openapi3/example_validation.go b/vendor/github.com/getkin/kin-openapi/openapi3/example_validation.go
deleted file mode 100644
index fb7a1da1..00000000
--- a/vendor/github.com/getkin/kin-openapi/openapi3/example_validation.go
+++ /dev/null
@@ -1,16 +0,0 @@
-package openapi3
-
-import "context"
-
-func validateExampleValue(ctx context.Context, input interface{}, schema *Schema) error {
-	opts := make([]SchemaValidationOption, 0, 2)
-
-	if vo := getValidationOptions(ctx); vo.examplesValidationAsReq {
-		opts = append(opts, VisitAsRequest())
-	} else if vo.examplesValidationAsRes {
-		opts = append(opts, VisitAsResponse())
-	}
-	opts = append(opts, MultiErrors())
-
-	return schema.VisitJSON(input, opts...)
-}
diff --git a/vendor/github.com/getkin/kin-openapi/openapi3/extension.go b/vendor/github.com/getkin/kin-openapi/openapi3/extension.go
deleted file mode 100644
index 37f6b01e..00000000
--- a/vendor/github.com/getkin/kin-openapi/openapi3/extension.go
+++ /dev/null
@@ -1,32 +0,0 @@
-package openapi3
-
-import (
-	"context"
-	"fmt"
-	"sort"
-	"strings"
-)
-
-func validateExtensions(ctx context.Context, extensions map[string]interface{}) error { // FIXME: newtype + Validate(...)
-	allowed := getValidationOptions(ctx).extraSiblingFieldsAllowed
-
-	var unknowns []string
-	for k := range extensions {
-		if strings.HasPrefix(k, "x-") {
-			continue
-		}
-		if allowed != nil {
-			if _, ok := allowed[k]; ok {
-				continue
-			}
-		}
-		unknowns = append(unknowns, k)
-	}
-
-	if len(unknowns) != 0 {
-		sort.Strings(unknowns)
-		return fmt.Errorf("extra sibling fields: %+v", unknowns)
-	}
-
-	return nil
-}
diff --git a/vendor/github.com/getkin/kin-openapi/openapi3/external_docs.go b/vendor/github.com/getkin/kin-openapi/openapi3/external_docs.go
deleted file mode 100644
index 7190be4b..00000000
--- a/vendor/github.com/getkin/kin-openapi/openapi3/external_docs.go
+++ /dev/null
@@ -1,64 +0,0 @@
-package openapi3
-
-import (
-	"context"
-	"encoding/json"
-	"errors"
-	"fmt"
-	"net/url"
-)
-
-// ExternalDocs is specified by OpenAPI/Swagger standard version 3.
-// See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#external-documentation-object
-type ExternalDocs struct {
-	Extensions map[string]interface{} `json:"-" yaml:"-"`
-
-	Description string `json:"description,omitempty" yaml:"description,omitempty"`
-	URL         string `json:"url,omitempty" yaml:"url,omitempty"`
-}
-
-// MarshalJSON returns the JSON encoding of ExternalDocs.
-func (e ExternalDocs) MarshalJSON() ([]byte, error) {
-	m := make(map[string]interface{}, 2+len(e.Extensions))
-	for k, v := range e.Extensions {
-		m[k] = v
-	}
-	if x := e.Description; x != "" {
-		m["description"] = x
-	}
-	if x := e.URL; x != "" {
-		m["url"] = x
-	}
-	return json.Marshal(m)
-}
-
-// UnmarshalJSON sets ExternalDocs to a copy of data.
-func (e *ExternalDocs) UnmarshalJSON(data []byte) error {
-	type ExternalDocsBis ExternalDocs
-	var x ExternalDocsBis
-	if err := json.Unmarshal(data, &x); err != nil {
-		return unmarshalError(err)
-	}
-	_ = json.Unmarshal(data, &x.Extensions)
-	delete(x.Extensions, "description")
-	delete(x.Extensions, "url")
-	if len(x.Extensions) == 0 {
-		x.Extensions = nil
-	}
-	*e = ExternalDocs(x)
-	return nil
-}
-
-// Validate returns an error if ExternalDocs does not comply with the OpenAPI spec.
-func (e *ExternalDocs) Validate(ctx context.Context, opts ...ValidationOption) error {
-	ctx = WithValidationOptions(ctx, opts...)
-
-	if e.URL == "" {
-		return errors.New("url is required")
-	}
-	if _, err := url.Parse(e.URL); err != nil {
-		return fmt.Errorf("url is incorrect: %w", err)
-	}
-
-	return validateExtensions(ctx, e.Extensions)
-}
diff --git a/vendor/github.com/getkin/kin-openapi/openapi3/header.go b/vendor/github.com/getkin/kin-openapi/openapi3/header.go
deleted file mode 100644
index e5eee6cc..00000000
--- a/vendor/github.com/getkin/kin-openapi/openapi3/header.go
+++ /dev/null
@@ -1,96 +0,0 @@
-package openapi3
-
-import (
-	"context"
-	"errors"
-	"fmt"
-
-	"github.com/go-openapi/jsonpointer"
-)
-
-// Header is specified by OpenAPI/Swagger 3.0 standard.
-// See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#header-object
-type Header struct {
-	Parameter
-}
-
-var _ jsonpointer.JSONPointable = (*Header)(nil)
-
-// JSONLookup implements https://pkg.go.dev/github.com/go-openapi/jsonpointer#JSONPointable
-func (header Header) JSONLookup(token string) (interface{}, error) {
-	return header.Parameter.JSONLookup(token)
-}
-
-// MarshalJSON returns the JSON encoding of Header.
-func (header Header) MarshalJSON() ([]byte, error) {
-	return header.Parameter.MarshalJSON()
-}
-
-// UnmarshalJSON sets Header to a copy of data.
-func (header *Header) UnmarshalJSON(data []byte) error {
-	return header.Parameter.UnmarshalJSON(data)
-}
-
-// MarshalYAML returns the JSON encoding of Header.
-func (header Header) MarshalYAML() (interface{}, error) {
-	return header.Parameter, nil
-}
-
-// SerializationMethod returns a header's serialization method.
-func (header *Header) SerializationMethod() (*SerializationMethod, error) {
-	style := header.Style
-	if style == "" {
-		style = SerializationSimple
-	}
-	explode := false
-	if header.Explode != nil {
-		explode = *header.Explode
-	}
-	return &SerializationMethod{Style: style, Explode: explode}, nil
-}
-
-// Validate returns an error if Header does not comply with the OpenAPI spec.
-func (header *Header) Validate(ctx context.Context, opts ...ValidationOption) error {
-	ctx = WithValidationOptions(ctx, opts...)
-
-	if header.Name != "" {
-		return errors.New("header 'name' MUST NOT be specified, it is given in the corresponding headers map")
-	}
-	if header.In != "" {
-		return errors.New("header 'in' MUST NOT be specified, it is implicitly in header")
-	}
-
-	// Validate a parameter's serialization method.
-	sm, err := header.SerializationMethod()
-	if err != nil {
-		return err
-	}
-	if smSupported := false ||
-		sm.Style == SerializationSimple && !sm.Explode ||
-		sm.Style == SerializationSimple && sm.Explode; !smSupported {
-		e := fmt.Errorf("serialization method with style=%q and explode=%v is not supported by a header parameter", sm.Style, sm.Explode)
-		return fmt.Errorf("header schema is invalid: %w", e)
-	}
-
-	if (header.Schema == nil) == (len(header.Content) == 0) {
-		e := fmt.Errorf("parameter must contain exactly one of content and schema: %v", header)
-		return fmt.Errorf("header schema is invalid: %w", e)
-	}
-	if schema := header.Schema; schema != nil {
-		if err := schema.Validate(ctx); err != nil {
-			return fmt.Errorf("header schema is invalid: %w", err)
-		}
-	}
-
-	if content := header.Content; content != nil {
-		e := errors.New("parameter content must only contain one entry")
-		if len(content) > 1 {
-			return fmt.Errorf("header content is invalid: %w", e)
-		}
-
-		if err := content.Validate(ctx); err != nil {
-			return fmt.Errorf("header content is invalid: %w", err)
-		}
-	}
-	return nil
-}
diff --git a/vendor/github.com/getkin/kin-openapi/openapi3/helpers.go b/vendor/github.com/getkin/kin-openapi/openapi3/helpers.go
deleted file mode 100644
index d160eb1e..00000000
--- a/vendor/github.com/getkin/kin-openapi/openapi3/helpers.go
+++ /dev/null
@@ -1,41 +0,0 @@
-package openapi3
-
-import (
-	"fmt"
-	"regexp"
-)
-
-const identifierPattern = `^[a-zA-Z0-9._-]+$`
-
-// IdentifierRegExp verifies whether Component object key matches 'identifierPattern' pattern, according to OpenAPI v3.x.
-// However, to be able supporting legacy OpenAPI v2.x, there is a need to customize above pattern in order not to fail
-// converted v2-v3 validation
-var IdentifierRegExp = regexp.MustCompile(identifierPattern)
-
-// ValidateIdentifier returns an error if the given component name does not match IdentifierRegExp.
-func ValidateIdentifier(value string) error {
-	if IdentifierRegExp.MatchString(value) {
-		return nil
-	}
-	return fmt.Errorf("identifier %q is not supported by OpenAPIv3 standard (regexp: %q)", value, identifierPattern)
-}
-
-// Float64Ptr is a helper for defining OpenAPI schemas.
-func Float64Ptr(value float64) *float64 {
-	return &value
-}
-
-// BoolPtr is a helper for defining OpenAPI schemas.
-func BoolPtr(value bool) *bool {
-	return &value
-}
-
-// Int64Ptr is a helper for defining OpenAPI schemas.
-func Int64Ptr(value int64) *int64 {
-	return &value
-}
-
-// Uint64Ptr is a helper for defining OpenAPI schemas.
-func Uint64Ptr(value uint64) *uint64 {
-	return &value
-}
diff --git a/vendor/github.com/getkin/kin-openapi/openapi3/info.go b/vendor/github.com/getkin/kin-openapi/openapi3/info.go
deleted file mode 100644
index ffcd3b0e..00000000
--- a/vendor/github.com/getkin/kin-openapi/openapi3/info.go
+++ /dev/null
@@ -1,91 +0,0 @@
-package openapi3
-
-import (
-	"context"
-	"encoding/json"
-	"errors"
-)
-
-// Info is specified by OpenAPI/Swagger standard version 3.
-// See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#info-object
-type Info struct {
-	Extensions map[string]interface{} `json:"-" yaml:"-"`
-
-	Title          string   `json:"title" yaml:"title"` // Required
-	Description    string   `json:"description,omitempty" yaml:"description,omitempty"`
-	TermsOfService string   `json:"termsOfService,omitempty" yaml:"termsOfService,omitempty"`
-	Contact        *Contact `json:"contact,omitempty" yaml:"contact,omitempty"`
-	License        *License `json:"license,omitempty" yaml:"license,omitempty"`
-	Version        string   `json:"version" yaml:"version"` // Required
-}
-
-// MarshalJSON returns the JSON encoding of Info.
-func (info Info) MarshalJSON() ([]byte, error) {
-	m := make(map[string]interface{}, 6+len(info.Extensions))
-	for k, v := range info.Extensions {
-		m[k] = v
-	}
-	m["title"] = info.Title
-	if x := info.Description; x != "" {
-		m["description"] = x
-	}
-	if x := info.TermsOfService; x != "" {
-		m["termsOfService"] = x
-	}
-	if x := info.Contact; x != nil {
-		m["contact"] = x
-	}
-	if x := info.License; x != nil {
-		m["license"] = x
-	}
-	m["version"] = info.Version
-	return json.Marshal(m)
-}
-
-// UnmarshalJSON sets Info to a copy of data.
-func (info *Info) UnmarshalJSON(data []byte) error {
-	type InfoBis Info
-	var x InfoBis
-	if err := json.Unmarshal(data, &x); err != nil {
-		return unmarshalError(err)
-	}
-	_ = json.Unmarshal(data, &x.Extensions)
-	delete(x.Extensions, "title")
-	delete(x.Extensions, "description")
-	delete(x.Extensions, "termsOfService")
-	delete(x.Extensions, "contact")
-	delete(x.Extensions, "license")
-	delete(x.Extensions, "version")
-	if len(x.Extensions) == 0 {
-		x.Extensions = nil
-	}
-	*info = Info(x)
-	return nil
-}
-
-// Validate returns an error if Info does not comply with the OpenAPI spec.
-func (info *Info) Validate(ctx context.Context, opts ...ValidationOption) error {
-	ctx = WithValidationOptions(ctx, opts...)
-
-	if contact := info.Contact; contact != nil {
-		if err := contact.Validate(ctx); err != nil {
-			return err
-		}
-	}
-
-	if license := info.License; license != nil {
-		if err := license.Validate(ctx); err != nil {
-			return err
-		}
-	}
-
-	if info.Version == "" {
-		return errors.New("value of version must be a non-empty string")
-	}
-
-	if info.Title == "" {
-		return errors.New("value of title must be a non-empty string")
-	}
-
-	return validateExtensions(ctx, info.Extensions)
-}
diff --git a/vendor/github.com/getkin/kin-openapi/openapi3/internalize_refs.go b/vendor/github.com/getkin/kin-openapi/openapi3/internalize_refs.go
deleted file mode 100644
index e313e553..00000000
--- a/vendor/github.com/getkin/kin-openapi/openapi3/internalize_refs.go
+++ /dev/null
@@ -1,443 +0,0 @@
-package openapi3
-
-import (
-	"context"
-	"path/filepath"
-	"strings"
-)
-
-type RefNameResolver func(string) string
-
-// DefaultRefResolver is a default implementation of refNameResolver for the
-// InternalizeRefs function.
-//
-// If a reference points to an element inside a document, it returns the last
-// element in the reference using filepath.Base. Otherwise if the reference points
-// to a file, it returns the file name trimmed of all extensions.
-func DefaultRefNameResolver(ref string) string {
-	if ref == "" {
-		return ""
-	}
-	split := strings.SplitN(ref, "#", 2)
-	if len(split) == 2 {
-		return filepath.Base(split[1])
-	}
-	ref = split[0]
-	for ext := filepath.Ext(ref); len(ext) > 0; ext = filepath.Ext(ref) {
-		ref = strings.TrimSuffix(ref, ext)
-	}
-	return filepath.Base(ref)
-}
-
-func schemaNames(s Schemas) []string {
-	out := make([]string, 0, len(s))
-	for i := range s {
-		out = append(out, i)
-	}
-	return out
-}
-
-func parametersMapNames(s ParametersMap) []string {
-	out := make([]string, 0, len(s))
-	for i := range s {
-		out = append(out, i)
-	}
-	return out
-}
-
-func isExternalRef(ref string, parentIsExternal bool) bool {
-	return ref != "" && (!strings.HasPrefix(ref, "#/components/") || parentIsExternal)
-}
-
-func (doc *T) addSchemaToSpec(s *SchemaRef, refNameResolver RefNameResolver, parentIsExternal bool) bool {
-	if s == nil || !isExternalRef(s.Ref, parentIsExternal) {
-		return false
-	}
-
-	name := refNameResolver(s.Ref)
-	if doc.Components != nil {
-		if _, ok := doc.Components.Schemas[name]; ok {
-			s.Ref = "#/components/schemas/" + name
-			return true
-		}
-	}
-
-	if doc.Components == nil {
-		doc.Components = &Components{}
-	}
-	if doc.Components.Schemas == nil {
-		doc.Components.Schemas = make(Schemas)
-	}
-	doc.Components.Schemas[name] = s.Value.NewRef()
-	s.Ref = "#/components/schemas/" + name
-	return true
-}
-
-func (doc *T) addParameterToSpec(p *ParameterRef, refNameResolver RefNameResolver, parentIsExternal bool) bool {
-	if p == nil || !isExternalRef(p.Ref, parentIsExternal) {
-		return false
-	}
-	name := refNameResolver(p.Ref)
-	if doc.Components != nil {
-		if _, ok := doc.Components.Parameters[name]; ok {
-			p.Ref = "#/components/parameters/" + name
-			return true
-		}
-	}
-
-	if doc.Components == nil {
-		doc.Components = &Components{}
-	}
-	if doc.Components.Parameters == nil {
-		doc.Components.Parameters = make(ParametersMap)
-	}
-	doc.Components.Parameters[name] = &ParameterRef{Value: p.Value}
-	p.Ref = "#/components/parameters/" + name
-	return true
-}
-
-func (doc *T) addHeaderToSpec(h *HeaderRef, refNameResolver RefNameResolver, parentIsExternal bool) bool {
-	if h == nil || !isExternalRef(h.Ref, parentIsExternal) {
-		return false
-	}
-	name := refNameResolver(h.Ref)
-	if doc.Components != nil {
-		if _, ok := doc.Components.Headers[name]; ok {
-			h.Ref = "#/components/headers/" + name
-			return true
-		}
-	}
-
-	if doc.Components == nil {
-		doc.Components = &Components{}
-	}
-	if doc.Components.Headers == nil {
-		doc.Components.Headers = make(Headers)
-	}
-	doc.Components.Headers[name] = &HeaderRef{Value: h.Value}
-	h.Ref = "#/components/headers/" + name
-	return true
-}
-
-func (doc *T) addRequestBodyToSpec(r *RequestBodyRef, refNameResolver RefNameResolver, parentIsExternal bool) bool {
-	if r == nil || !isExternalRef(r.Ref, parentIsExternal) {
-		return false
-	}
-	name := refNameResolver(r.Ref)
-	if doc.Components != nil {
-		if _, ok := doc.Components.RequestBodies[name]; ok {
-			r.Ref = "#/components/requestBodies/" + name
-			return true
-		}
-	}
-
-	if doc.Components == nil {
-		doc.Components = &Components{}
-	}
-	if doc.Components.RequestBodies == nil {
-		doc.Components.RequestBodies = make(RequestBodies)
-	}
-	doc.Components.RequestBodies[name] = &RequestBodyRef{Value: r.Value}
-	r.Ref = "#/components/requestBodies/" + name
-	return true
-}
-
-func (doc *T) addResponseToSpec(r *ResponseRef, refNameResolver RefNameResolver, parentIsExternal bool) bool {
-	if r == nil || !isExternalRef(r.Ref, parentIsExternal) {
-		return false
-	}
-	name := refNameResolver(r.Ref)
-	if doc.Components != nil {
-		if _, ok := doc.Components.Responses[name]; ok {
-			r.Ref = "#/components/responses/" + name
-			return true
-		}
-	}
-
-	if doc.Components == nil {
-		doc.Components = &Components{}
-	}
-	if doc.Components.Responses == nil {
-		doc.Components.Responses = make(ResponseBodies)
-	}
-	doc.Components.Responses[name] = &ResponseRef{Value: r.Value}
-	r.Ref = "#/components/responses/" + name
-	return true
-}
-
-func (doc *T) addSecuritySchemeToSpec(ss *SecuritySchemeRef, refNameResolver RefNameResolver, parentIsExternal bool) {
-	if ss == nil || !isExternalRef(ss.Ref, parentIsExternal) {
-		return
-	}
-	name := refNameResolver(ss.Ref)
-	if doc.Components != nil {
-		if _, ok := doc.Components.SecuritySchemes[name]; ok {
-			ss.Ref = "#/components/securitySchemes/" + name
-			return
-		}
-	}
-
-	if doc.Components == nil {
-		doc.Components = &Components{}
-	}
-	if doc.Components.SecuritySchemes == nil {
-		doc.Components.SecuritySchemes = make(SecuritySchemes)
-	}
-	doc.Components.SecuritySchemes[name] = &SecuritySchemeRef{Value: ss.Value}
-	ss.Ref = "#/components/securitySchemes/" + name
-
-}
-
-func (doc *T) addExampleToSpec(e *ExampleRef, refNameResolver RefNameResolver, parentIsExternal bool) {
-	if e == nil || !isExternalRef(e.Ref, parentIsExternal) {
-		return
-	}
-	name := refNameResolver(e.Ref)
-	if doc.Components != nil {
-		if _, ok := doc.Components.Examples[name]; ok {
-			e.Ref = "#/components/examples/" + name
-			return
-		}
-	}
-
-	if doc.Components == nil {
-		doc.Components = &Components{}
-	}
-	if doc.Components.Examples == nil {
-		doc.Components.Examples = make(Examples)
-	}
-	doc.Components.Examples[name] = &ExampleRef{Value: e.Value}
-	e.Ref = "#/components/examples/" + name
-
-}
-
-func (doc *T) addLinkToSpec(l *LinkRef, refNameResolver RefNameResolver, parentIsExternal bool) {
-	if l == nil || !isExternalRef(l.Ref, parentIsExternal) {
-		return
-	}
-	name := refNameResolver(l.Ref)
-	if doc.Components != nil {
-		if _, ok := doc.Components.Links[name]; ok {
-			l.Ref = "#/components/links/" + name
-			return
-		}
-	}
-
-	if doc.Components == nil {
-		doc.Components = &Components{}
-	}
-	if doc.Components.Links == nil {
-		doc.Components.Links = make(Links)
-	}
-	doc.Components.Links[name] = &LinkRef{Value: l.Value}
-	l.Ref = "#/components/links/" + name
-
-}
-
-func (doc *T) addCallbackToSpec(c *CallbackRef, refNameResolver RefNameResolver, parentIsExternal bool) bool {
-	if c == nil || !isExternalRef(c.Ref, parentIsExternal) {
-		return false
-	}
-	name := refNameResolver(c.Ref)
-
-	if doc.Components == nil {
-		doc.Components = &Components{}
-	}
-	if doc.Components.Callbacks == nil {
-		doc.Components.Callbacks = make(Callbacks)
-	}
-	c.Ref = "#/components/callbacks/" + name
-	doc.Components.Callbacks[name] = &CallbackRef{Value: c.Value}
-	return true
-}
-
-func (doc *T) derefSchema(s *Schema, refNameResolver RefNameResolver, parentIsExternal bool) {
-	if s == nil || doc.isVisitedSchema(s) {
-		return
-	}
-
-	for _, list := range []SchemaRefs{s.AllOf, s.AnyOf, s.OneOf} {
-		for _, s2 := range list {
-			isExternal := doc.addSchemaToSpec(s2, refNameResolver, parentIsExternal)
-			if s2 != nil {
-				doc.derefSchema(s2.Value, refNameResolver, isExternal || parentIsExternal)
-			}
-		}
-	}
-	for _, s2 := range s.Properties {
-		isExternal := doc.addSchemaToSpec(s2, refNameResolver, parentIsExternal)
-		if s2 != nil {
-			doc.derefSchema(s2.Value, refNameResolver, isExternal || parentIsExternal)
-		}
-	}
-	for _, ref := range []*SchemaRef{s.Not, s.AdditionalProperties.Schema, s.Items} {
-		isExternal := doc.addSchemaToSpec(ref, refNameResolver, parentIsExternal)
-		if ref != nil {
-			doc.derefSchema(ref.Value, refNameResolver, isExternal || parentIsExternal)
-		}
-	}
-}
-
-func (doc *T) derefHeaders(hs Headers, refNameResolver RefNameResolver, parentIsExternal bool) {
-	for _, h := range hs {
-		isExternal := doc.addHeaderToSpec(h, refNameResolver, parentIsExternal)
-		if doc.isVisitedHeader(h.Value) {
-			continue
-		}
-		doc.derefParameter(h.Value.Parameter, refNameResolver, parentIsExternal || isExternal)
-	}
-}
-
-func (doc *T) derefExamples(es Examples, refNameResolver RefNameResolver, parentIsExternal bool) {
-	for _, e := range es {
-		doc.addExampleToSpec(e, refNameResolver, parentIsExternal)
-	}
-}
-
-func (doc *T) derefContent(c Content, refNameResolver RefNameResolver, parentIsExternal bool) {
-	for _, mediatype := range c {
-		isExternal := doc.addSchemaToSpec(mediatype.Schema, refNameResolver, parentIsExternal)
-		if mediatype.Schema != nil {
-			doc.derefSchema(mediatype.Schema.Value, refNameResolver, isExternal || parentIsExternal)
-		}
-		doc.derefExamples(mediatype.Examples, refNameResolver, parentIsExternal)
-		for _, e := range mediatype.Encoding {
-			doc.derefHeaders(e.Headers, refNameResolver, parentIsExternal)
-		}
-	}
-}
-
-func (doc *T) derefLinks(ls Links, refNameResolver RefNameResolver, parentIsExternal bool) {
-	for _, l := range ls {
-		doc.addLinkToSpec(l, refNameResolver, parentIsExternal)
-	}
-}
-
-func (doc *T) derefResponse(r *ResponseRef, refNameResolver RefNameResolver, parentIsExternal bool) {
-	isExternal := doc.addResponseToSpec(r, refNameResolver, parentIsExternal)
-	if v := r.Value; v != nil {
-		doc.derefHeaders(v.Headers, refNameResolver, isExternal || parentIsExternal)
-		doc.derefContent(v.Content, refNameResolver, isExternal || parentIsExternal)
-		doc.derefLinks(v.Links, refNameResolver, isExternal || parentIsExternal)
-	}
-}
-
-func (doc *T) derefResponses(rs *Responses, refNameResolver RefNameResolver, parentIsExternal bool) {
-	doc.derefResponseBodies(rs.Map(), refNameResolver, parentIsExternal)
-}
-
-func (doc *T) derefResponseBodies(es ResponseBodies, refNameResolver RefNameResolver, parentIsExternal bool) {
-	for _, e := range es {
-		doc.derefResponse(e, refNameResolver, parentIsExternal)
-	}
-}
-
-func (doc *T) derefParameter(p Parameter, refNameResolver RefNameResolver, parentIsExternal bool) {
-	isExternal := doc.addSchemaToSpec(p.Schema, refNameResolver, parentIsExternal)
-	doc.derefContent(p.Content, refNameResolver, parentIsExternal)
-	if p.Schema != nil {
-		doc.derefSchema(p.Schema.Value, refNameResolver, isExternal || parentIsExternal)
-	}
-}
-
-func (doc *T) derefRequestBody(r RequestBody, refNameResolver RefNameResolver, parentIsExternal bool) {
-	doc.derefContent(r.Content, refNameResolver, parentIsExternal)
-}
-
-func (doc *T) derefPaths(paths map[string]*PathItem, refNameResolver RefNameResolver, parentIsExternal bool) {
-	for _, ops := range paths {
-		pathIsExternal := isExternalRef(ops.Ref, parentIsExternal)
-		// inline full operations
-		ops.Ref = ""
-
-		for _, param := range ops.Parameters {
-			doc.addParameterToSpec(param, refNameResolver, pathIsExternal)
-		}
-
-		for _, op := range ops.Operations() {
-			isExternal := doc.addRequestBodyToSpec(op.RequestBody, refNameResolver, pathIsExternal)
-			if op.RequestBody != nil && op.RequestBody.Value != nil {
-				doc.derefRequestBody(*op.RequestBody.Value, refNameResolver, pathIsExternal || isExternal)
-			}
-			for _, cb := range op.Callbacks {
-				isExternal := doc.addCallbackToSpec(cb, refNameResolver, pathIsExternal)
-				if cb.Value != nil {
-					cbValue := (*cb.Value).Map()
-					doc.derefPaths(cbValue, refNameResolver, pathIsExternal || isExternal)
-				}
-			}
-			doc.derefResponses(op.Responses, refNameResolver, pathIsExternal)
-			for _, param := range op.Parameters {
-				isExternal := doc.addParameterToSpec(param, refNameResolver, pathIsExternal)
-				if param.Value != nil {
-					doc.derefParameter(*param.Value, refNameResolver, pathIsExternal || isExternal)
-				}
-			}
-		}
-	}
-}
-
-// InternalizeRefs removes all references to external files from the spec and moves them
-// to the components section.
-//
-// refNameResolver takes in references to returns a name to store the reference under locally.
-// It MUST return a unique name for each reference type.
-// A default implementation is provided that will suffice for most use cases. See the function
-// documentation for more details.
-//
-// Example:
-//
-//	doc.InternalizeRefs(context.Background(), nil)
-func (doc *T) InternalizeRefs(ctx context.Context, refNameResolver func(ref string) string) {
-	doc.resetVisited()
-
-	if refNameResolver == nil {
-		refNameResolver = DefaultRefNameResolver
-	}
-
-	if components := doc.Components; components != nil {
-		names := schemaNames(components.Schemas)
-		for _, name := range names {
-			schema := components.Schemas[name]
-			isExternal := doc.addSchemaToSpec(schema, refNameResolver, false)
-			if schema != nil {
-				schema.Ref = "" // always dereference the top level
-				doc.derefSchema(schema.Value, refNameResolver, isExternal)
-			}
-		}
-		names = parametersMapNames(components.Parameters)
-		for _, name := range names {
-			p := components.Parameters[name]
-			isExternal := doc.addParameterToSpec(p, refNameResolver, false)
-			if p != nil && p.Value != nil {
-				p.Ref = "" // always dereference the top level
-				doc.derefParameter(*p.Value, refNameResolver, isExternal)
-			}
-		}
-		doc.derefHeaders(components.Headers, refNameResolver, false)
-		for _, req := range components.RequestBodies {
-			isExternal := doc.addRequestBodyToSpec(req, refNameResolver, false)
-			if req != nil && req.Value != nil {
-				req.Ref = "" // always dereference the top level
-				doc.derefRequestBody(*req.Value, refNameResolver, isExternal)
-			}
-		}
-		doc.derefResponseBodies(components.Responses, refNameResolver, false)
-		for _, ss := range components.SecuritySchemes {
-			doc.addSecuritySchemeToSpec(ss, refNameResolver, false)
-		}
-		doc.derefExamples(components.Examples, refNameResolver, false)
-		doc.derefLinks(components.Links, refNameResolver, false)
-
-		for _, cb := range components.Callbacks {
-			isExternal := doc.addCallbackToSpec(cb, refNameResolver, false)
-			if cb != nil && cb.Value != nil {
-				cb.Ref = "" // always dereference the top level
-				cbValue := (*cb.Value).Map()
-				doc.derefPaths(cbValue, refNameResolver, isExternal)
-			}
-		}
-	}
-
-	doc.derefPaths(doc.Paths.Map(), refNameResolver, false)
-}
diff --git a/vendor/github.com/getkin/kin-openapi/openapi3/license.go b/vendor/github.com/getkin/kin-openapi/openapi3/license.go
deleted file mode 100644
index 3d2d2f06..00000000
--- a/vendor/github.com/getkin/kin-openapi/openapi3/license.go
+++ /dev/null
@@ -1,57 +0,0 @@
-package openapi3
-
-import (
-	"context"
-	"encoding/json"
-	"errors"
-)
-
-// License is specified by OpenAPI/Swagger standard version 3.
-// See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#license-object
-type License struct {
-	Extensions map[string]interface{} `json:"-" yaml:"-"`
-
-	Name string `json:"name" yaml:"name"` // Required
-	URL  string `json:"url,omitempty" yaml:"url,omitempty"`
-}
-
-// MarshalJSON returns the JSON encoding of License.
-func (license License) MarshalJSON() ([]byte, error) {
-	m := make(map[string]interface{}, 2+len(license.Extensions))
-	for k, v := range license.Extensions {
-		m[k] = v
-	}
-	m["name"] = license.Name
-	if x := license.URL; x != "" {
-		m["url"] = x
-	}
-	return json.Marshal(m)
-}
-
-// UnmarshalJSON sets License to a copy of data.
-func (license *License) UnmarshalJSON(data []byte) error {
-	type LicenseBis License
-	var x LicenseBis
-	if err := json.Unmarshal(data, &x); err != nil {
-		return unmarshalError(err)
-	}
-	_ = json.Unmarshal(data, &x.Extensions)
-	delete(x.Extensions, "name")
-	delete(x.Extensions, "url")
-	if len(x.Extensions) == 0 {
-		x.Extensions = nil
-	}
-	*license = License(x)
-	return nil
-}
-
-// Validate returns an error if License does not comply with the OpenAPI spec.
-func (license *License) Validate(ctx context.Context, opts ...ValidationOption) error {
-	ctx = WithValidationOptions(ctx, opts...)
-
-	if license.Name == "" {
-		return errors.New("value of license name must be a non-empty string")
-	}
-
-	return validateExtensions(ctx, license.Extensions)
-}
diff --git a/vendor/github.com/getkin/kin-openapi/openapi3/link.go b/vendor/github.com/getkin/kin-openapi/openapi3/link.go
deleted file mode 100644
index 23a8df41..00000000
--- a/vendor/github.com/getkin/kin-openapi/openapi3/link.go
+++ /dev/null
@@ -1,85 +0,0 @@
-package openapi3
-
-import (
-	"context"
-	"encoding/json"
-	"errors"
-	"fmt"
-)
-
-// Link is specified by OpenAPI/Swagger standard version 3.
-// See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#link-object
-type Link struct {
-	Extensions map[string]interface{} `json:"-" yaml:"-"`
-
-	OperationRef string                 `json:"operationRef,omitempty" yaml:"operationRef,omitempty"`
-	OperationID  string                 `json:"operationId,omitempty" yaml:"operationId,omitempty"`
-	Description  string                 `json:"description,omitempty" yaml:"description,omitempty"`
-	Parameters   map[string]interface{} `json:"parameters,omitempty" yaml:"parameters,omitempty"`
-	Server       *Server                `json:"server,omitempty" yaml:"server,omitempty"`
-	RequestBody  interface{}            `json:"requestBody,omitempty" yaml:"requestBody,omitempty"`
-}
-
-// MarshalJSON returns the JSON encoding of Link.
-func (link Link) MarshalJSON() ([]byte, error) {
-	m := make(map[string]interface{}, 6+len(link.Extensions))
-	for k, v := range link.Extensions {
-		m[k] = v
-	}
-
-	if x := link.OperationRef; x != "" {
-		m["operationRef"] = x
-	}
-	if x := link.OperationID; x != "" {
-		m["operationId"] = x
-	}
-	if x := link.Description; x != "" {
-		m["description"] = x
-	}
-	if x := link.Parameters; len(x) != 0 {
-		m["parameters"] = x
-	}
-	if x := link.Server; x != nil {
-		m["server"] = x
-	}
-	if x := link.RequestBody; x != nil {
-		m["requestBody"] = x
-	}
-
-	return json.Marshal(m)
-}
-
-// UnmarshalJSON sets Link to a copy of data.
-func (link *Link) UnmarshalJSON(data []byte) error {
-	type LinkBis Link
-	var x LinkBis
-	if err := json.Unmarshal(data, &x); err != nil {
-		return unmarshalError(err)
-	}
-	_ = json.Unmarshal(data, &x.Extensions)
-	delete(x.Extensions, "operationRef")
-	delete(x.Extensions, "operationId")
-	delete(x.Extensions, "description")
-	delete(x.Extensions, "parameters")
-	delete(x.Extensions, "server")
-	delete(x.Extensions, "requestBody")
-	if len(x.Extensions) == 0 {
-		x.Extensions = nil
-	}
-	*link = Link(x)
-	return nil
-}
-
-// Validate returns an error if Link does not comply with the OpenAPI spec.
-func (link *Link) Validate(ctx context.Context, opts ...ValidationOption) error {
-	ctx = WithValidationOptions(ctx, opts...)
-
-	if link.OperationID == "" && link.OperationRef == "" {
-		return errors.New("missing operationId or operationRef on link")
-	}
-	if link.OperationID != "" && link.OperationRef != "" {
-		return fmt.Errorf("operationId %q and operationRef %q are mutually exclusive", link.OperationID, link.OperationRef)
-	}
-
-	return validateExtensions(ctx, link.Extensions)
-}
diff --git a/vendor/github.com/getkin/kin-openapi/openapi3/loader.go b/vendor/github.com/getkin/kin-openapi/openapi3/loader.go
deleted file mode 100644
index 1128aaa7..00000000
--- a/vendor/github.com/getkin/kin-openapi/openapi3/loader.go
+++ /dev/null
@@ -1,1109 +0,0 @@
-package openapi3
-
-import (
-	"context"
-	"encoding/json"
-	"errors"
-	"fmt"
-	"io"
-	"net/url"
-	"os"
-	"path"
-	"path/filepath"
-	"reflect"
-	"sort"
-	"strconv"
-	"strings"
-)
-
-var CircularReferenceError = "kin-openapi bug found: circular schema reference not handled"
-var CircularReferenceCounter = 3
-
-func foundUnresolvedRef(ref string) error {
-	return fmt.Errorf("found unresolved ref: %q", ref)
-}
-
-func failedToResolveRefFragmentPart(value, what string) error {
-	return fmt.Errorf("failed to resolve %q in fragment in URI: %q", what, value)
-}
-
-// Loader helps deserialize an OpenAPIv3 document
-type Loader struct {
-	// IsExternalRefsAllowed enables visiting other files
-	IsExternalRefsAllowed bool
-
-	// ReadFromURIFunc allows overriding the any file/URL reading func
-	ReadFromURIFunc ReadFromURIFunc
-
-	Context context.Context
-
-	rootDir      string
-	rootLocation string
-
-	visitedPathItemRefs map[string]struct{}
-
-	visitedDocuments map[string]*T
-
-	visitedCallback       map[*Callback]struct{}
-	visitedExample        map[*Example]struct{}
-	visitedHeader         map[*Header]struct{}
-	visitedLink           map[*Link]struct{}
-	visitedParameter      map[*Parameter]struct{}
-	visitedRequestBody    map[*RequestBody]struct{}
-	visitedResponse       map[*Response]struct{}
-	visitedSchema         map[*Schema]struct{}
-	visitedSecurityScheme map[*SecurityScheme]struct{}
-}
-
-// NewLoader returns an empty Loader
-func NewLoader() *Loader {
-	return &Loader{
-		Context: context.Background(),
-	}
-}
-
-func (loader *Loader) resetVisitedPathItemRefs() {
-	loader.visitedPathItemRefs = make(map[string]struct{})
-}
-
-// LoadFromURI loads a spec from a remote URL
-func (loader *Loader) LoadFromURI(location *url.URL) (*T, error) {
-	loader.resetVisitedPathItemRefs()
-	return loader.loadFromURIInternal(location)
-}
-
-// LoadFromFile loads a spec from a local file path
-func (loader *Loader) LoadFromFile(location string) (*T, error) {
-	loader.rootDir = path.Dir(location)
-	return loader.LoadFromURI(&url.URL{Path: filepath.ToSlash(location)})
-}
-
-func (loader *Loader) loadFromURIInternal(location *url.URL) (*T, error) {
-	data, err := loader.readURL(location)
-	if err != nil {
-		return nil, err
-	}
-	return loader.loadFromDataWithPathInternal(data, location)
-}
-
-func (loader *Loader) allowsExternalRefs(ref string) (err error) {
-	if !loader.IsExternalRefsAllowed {
-		err = fmt.Errorf("encountered disallowed external reference: %q", ref)
-	}
-	return
-}
-
-func (loader *Loader) loadSingleElementFromURI(ref string, rootPath *url.URL, element interface{}) (*url.URL, error) {
-	if err := loader.allowsExternalRefs(ref); err != nil {
-		return nil, err
-	}
-
-	resolvedPath, err := resolvePathWithRef(ref, rootPath)
-	if err != nil {
-		return nil, err
-	}
-	if frag := resolvedPath.Fragment; frag != "" {
-		return nil, fmt.Errorf("unexpected ref fragment %q", frag)
-	}
-
-	data, err := loader.readURL(resolvedPath)
-	if err != nil {
-		return nil, err
-	}
-	if err := unmarshal(data, element); err != nil {
-		return nil, err
-	}
-
-	return resolvedPath, nil
-}
-
-func (loader *Loader) readURL(location *url.URL) ([]byte, error) {
-	if f := loader.ReadFromURIFunc; f != nil {
-		return f(loader, location)
-	}
-	return DefaultReadFromURI(loader, location)
-}
-
-// LoadFromStdin loads a spec from stdin
-func (loader *Loader) LoadFromStdin() (*T, error) {
-	data, err := io.ReadAll(os.Stdin)
-	if err != nil {
-		return nil, fmt.Errorf("read from stdin: %w", err)
-	}
-	return loader.LoadFromData(data)
-}
-
-// LoadFromData loads a spec from a byte array
-func (loader *Loader) LoadFromData(data []byte) (*T, error) {
-	loader.resetVisitedPathItemRefs()
-	doc := &T{}
-	if err := unmarshal(data, doc); err != nil {
-		return nil, err
-	}
-	if err := loader.ResolveRefsIn(doc, nil); err != nil {
-		return nil, err
-	}
-	return doc, nil
-}
-
-// LoadFromDataWithPath takes the OpenAPI document data in bytes and a path where the resolver can find referred
-// elements and returns a *T with all resolved data or an error if unable to load data or resolve refs.
-func (loader *Loader) LoadFromDataWithPath(data []byte, location *url.URL) (*T, error) {
-	loader.resetVisitedPathItemRefs()
-	return loader.loadFromDataWithPathInternal(data, location)
-}
-
-func (loader *Loader) loadFromDataWithPathInternal(data []byte, location *url.URL) (*T, error) {
-	if loader.visitedDocuments == nil {
-		loader.visitedDocuments = make(map[string]*T)
-		loader.rootLocation = location.Path
-	}
-	uri := location.String()
-	if doc, ok := loader.visitedDocuments[uri]; ok {
-		return doc, nil
-	}
-
-	doc := &T{}
-	loader.visitedDocuments[uri] = doc
-
-	if err := unmarshal(data, doc); err != nil {
-		return nil, err
-	}
-	if err := loader.ResolveRefsIn(doc, location); err != nil {
-		return nil, err
-	}
-
-	return doc, nil
-}
-
-// ResolveRefsIn expands references if for instance spec was just unmarshaled
-func (loader *Loader) ResolveRefsIn(doc *T, location *url.URL) (err error) {
-	if loader.Context == nil {
-		loader.Context = context.Background()
-	}
-
-	if loader.visitedPathItemRefs == nil {
-		loader.resetVisitedPathItemRefs()
-	}
-
-	if components := doc.Components; components != nil {
-		for _, component := range components.Headers {
-			if err = loader.resolveHeaderRef(doc, component, location); err != nil {
-				return
-			}
-		}
-		for _, component := range components.Parameters {
-			if err = loader.resolveParameterRef(doc, component, location); err != nil {
-				return
-			}
-		}
-		for _, component := range components.RequestBodies {
-			if err = loader.resolveRequestBodyRef(doc, component, location); err != nil {
-				return
-			}
-		}
-		for _, component := range components.Responses {
-			if err = loader.resolveResponseRef(doc, component, location); err != nil {
-				return
-			}
-		}
-		for _, component := range components.Schemas {
-			if err = loader.resolveSchemaRef(doc, component, location, []string{}); err != nil {
-				return
-			}
-		}
-		for _, component := range components.SecuritySchemes {
-			if err = loader.resolveSecuritySchemeRef(doc, component, location); err != nil {
-				return
-			}
-		}
-
-		examples := make([]string, 0, len(components.Examples))
-		for name := range components.Examples {
-			examples = append(examples, name)
-		}
-		sort.Strings(examples)
-		for _, name := range examples {
-			component := components.Examples[name]
-			if err = loader.resolveExampleRef(doc, component, location); err != nil {
-				return
-			}
-		}
-
-		for _, component := range components.Callbacks {
-			if err = loader.resolveCallbackRef(doc, component, location); err != nil {
-				return
-			}
-		}
-	}
-
-	// Visit all operations
-	for _, pathItem := range doc.Paths.Map() {
-		if pathItem == nil {
-			continue
-		}
-		if err = loader.resolvePathItemRef(doc, pathItem, location); err != nil {
-			return
-		}
-	}
-
-	return
-}
-
-func join(basePath *url.URL, relativePath *url.URL) *url.URL {
-	if basePath == nil {
-		return relativePath
-	}
-	newPath := *basePath
-	newPath.Path = path.Join(path.Dir(newPath.Path), relativePath.Path)
-	return &newPath
-}
-
-func resolvePath(basePath *url.URL, componentPath *url.URL) *url.URL {
-	if is_file(componentPath) {
-		// support absolute paths
-		if componentPath.Path[0] == '/' {
-			return componentPath
-		}
-		return join(basePath, componentPath)
-	}
-	return componentPath
-}
-
-func resolvePathWithRef(ref string, rootPath *url.URL) (*url.URL, error) {
-	parsedURL, err := url.Parse(ref)
-	if err != nil {
-		return nil, fmt.Errorf("cannot parse reference: %q: %w", ref, err)
-	}
-
-	resolvedPath := resolvePath(rootPath, parsedURL)
-	resolvedPath.Fragment = parsedURL.Fragment
-	return resolvedPath, nil
-}
-
-func isSingleRefElement(ref string) bool {
-	return !strings.Contains(ref, "#")
-}
-
-func (loader *Loader) resolveComponent(doc *T, ref string, path *url.URL, resolved interface{}) (
-	componentDoc *T,
-	componentPath *url.URL,
-	err error,
-) {
-	if componentDoc, ref, componentPath, err = loader.resolveRef(doc, ref, path); err != nil {
-		return nil, nil, err
-	}
-
-	parsedURL, err := url.Parse(ref)
-	if err != nil {
-		return nil, nil, fmt.Errorf("cannot parse reference: %q: %v", ref, parsedURL)
-	}
-	fragment := parsedURL.Fragment
-	if fragment == "" {
-		fragment = "/"
-	}
-	if fragment[0] != '/' {
-		return nil, nil, fmt.Errorf("expected fragment prefix '#/' in URI %q", ref)
-	}
-
-	drill := func(cursor interface{}) (interface{}, error) {
-		for _, pathPart := range strings.Split(fragment[1:], "/") {
-			pathPart = unescapeRefString(pathPart)
-			attempted := false
-
-			switch c := cursor.(type) {
-			// Special case of T
-			// See issue856: a ref to doc => we assume that doc is a T => things live in T.Extensions
-			case *T:
-				if pathPart == "" {
-					cursor = c.Extensions
-					attempted = true
-				}
-
-			// Special case due to multijson
-			case *SchemaRef:
-				if pathPart == "additionalProperties" {
-					if ap := c.Value.AdditionalProperties.Has; ap != nil {
-						cursor = *ap
-					} else {
-						cursor = c.Value.AdditionalProperties.Schema
-					}
-					attempted = true
-				}
-
-			case *Responses:
-				cursor = c.m // m map[string]*ResponseRef
-			case *Callback:
-				cursor = c.m // m map[string]*PathItem
-			case *Paths:
-				cursor = c.m // m map[string]*PathItem
-			}
-
-			if !attempted {
-				if cursor, err = drillIntoField(cursor, pathPart); err != nil {
-					e := failedToResolveRefFragmentPart(ref, pathPart)
-					return nil, fmt.Errorf("%s: %w", e, err)
-				}
-			}
-
-			if cursor == nil {
-				return nil, failedToResolveRefFragmentPart(ref, pathPart)
-			}
-		}
-		return cursor, nil
-	}
-	var cursor interface{}
-	if cursor, err = drill(componentDoc); err != nil {
-		if path == nil {
-			return nil, nil, err
-		}
-		var err2 error
-		data, err2 := loader.readURL(path)
-		if err2 != nil {
-			return nil, nil, err
-		}
-		if err2 = unmarshal(data, &cursor); err2 != nil {
-			return nil, nil, err
-		}
-		if cursor, err2 = drill(cursor); err2 != nil || cursor == nil {
-			return nil, nil, err
-		}
-		err = nil
-	}
-
-	switch {
-	case reflect.TypeOf(cursor) == reflect.TypeOf(resolved):
-		reflect.ValueOf(resolved).Elem().Set(reflect.ValueOf(cursor).Elem())
-		return componentDoc, componentPath, nil
-
-	case reflect.TypeOf(cursor) == reflect.TypeOf(map[string]interface{}{}):
-		codec := func(got, expect interface{}) error {
-			enc, err := json.Marshal(got)
-			if err != nil {
-				return err
-			}
-			if err = json.Unmarshal(enc, expect); err != nil {
-				return err
-			}
-			return nil
-		}
-		if err := codec(cursor, resolved); err != nil {
-			return nil, nil, fmt.Errorf("bad data in %q (expecting %s)", ref, readableType(resolved))
-		}
-		return componentDoc, componentPath, nil
-
-	default:
-		return nil, nil, fmt.Errorf("bad data in %q (expecting %s)", ref, readableType(resolved))
-	}
-}
-
-func readableType(x interface{}) string {
-	switch x.(type) {
-	case *Callback:
-		return "callback object"
-	case *CallbackRef:
-		return "ref to callback object"
-	case *ExampleRef:
-		return "ref to example object"
-	case *HeaderRef:
-		return "ref to header object"
-	case *LinkRef:
-		return "ref to link object"
-	case *ParameterRef:
-		return "ref to parameter object"
-	case *PathItem:
-		return "pathItem object"
-	case *RequestBodyRef:
-		return "ref to requestBody object"
-	case *ResponseRef:
-		return "ref to response object"
-	case *SchemaRef:
-		return "ref to schema object"
-	case *SecuritySchemeRef:
-		return "ref to securityScheme object"
-	default:
-		panic(fmt.Sprintf("unreachable %T", x))
-	}
-}
-
-func drillIntoField(cursor interface{}, fieldName string) (interface{}, error) {
-	switch val := reflect.Indirect(reflect.ValueOf(cursor)); val.Kind() {
-
-	case reflect.Map:
-		elementValue := val.MapIndex(reflect.ValueOf(fieldName))
-		if !elementValue.IsValid() {
-			return nil, fmt.Errorf("map key %q not found", fieldName)
-		}
-		return elementValue.Interface(), nil
-
-	case reflect.Slice:
-		i, err := strconv.ParseUint(fieldName, 10, 32)
-		if err != nil {
-			return nil, err
-		}
-		index := int(i)
-		if 0 > index || index >= val.Len() {
-			return nil, errors.New("slice index out of bounds")
-		}
-		return val.Index(index).Interface(), nil
-
-	case reflect.Struct:
-		hasFields := false
-		for i := 0; i < val.NumField(); i++ {
-			hasFields = true
-			if yamlTag := val.Type().Field(i).Tag.Get("yaml"); yamlTag != "-" {
-				if tagName := strings.Split(yamlTag, ",")[0]; tagName != "" {
-					if fieldName == tagName {
-						return val.Field(i).Interface(), nil
-					}
-				}
-			}
-		}
-
-		// if cursor is a "ref wrapper" struct (e.g. RequestBodyRef),
-		if _, ok := val.Type().FieldByName("Value"); ok {
-			// try digging into its Value field
-			return drillIntoField(val.FieldByName("Value").Interface(), fieldName)
-		}
-		if hasFields {
-			if ff := val.Type().Field(0); ff.PkgPath == "" && ff.Name == "Extensions" {
-				extensions := val.Field(0).Interface().(map[string]interface{})
-				if enc, ok := extensions[fieldName]; ok {
-					return enc, nil
-				}
-			}
-		}
-		return nil, fmt.Errorf("struct field %q not found", fieldName)
-
-	default:
-		return nil, errors.New("not a map, slice nor struct")
-	}
-}
-
-func (loader *Loader) resolveRef(doc *T, ref string, path *url.URL) (*T, string, *url.URL, error) {
-	if ref != "" && ref[0] == '#' {
-		return doc, ref, path, nil
-	}
-
-	if err := loader.allowsExternalRefs(ref); err != nil {
-		return nil, "", nil, err
-	}
-
-	resolvedPath, err := resolvePathWithRef(ref, path)
-	if err != nil {
-		return nil, "", nil, err
-	}
-	fragment := "#" + resolvedPath.Fragment
-	resolvedPath.Fragment = ""
-
-	if doc, err = loader.loadFromURIInternal(resolvedPath); err != nil {
-		return nil, "", nil, fmt.Errorf("error resolving reference %q: %w", ref, err)
-	}
-
-	return doc, fragment, resolvedPath, nil
-}
-
-var (
-	errMUSTCallback       = errors.New("invalid callback: value MUST be an object")
-	errMUSTExample        = errors.New("invalid example: value MUST be an object")
-	errMUSTHeader         = errors.New("invalid header: value MUST be an object")
-	errMUSTLink           = errors.New("invalid link: value MUST be an object")
-	errMUSTParameter      = errors.New("invalid parameter: value MUST be an object")
-	errMUSTPathItem       = errors.New("invalid path item: value MUST be an object")
-	errMUSTRequestBody    = errors.New("invalid requestBody: value MUST be an object")
-	errMUSTResponse       = errors.New("invalid response: value MUST be an object")
-	errMUSTSchema         = errors.New("invalid schema: value MUST be an object")
-	errMUSTSecurityScheme = errors.New("invalid securityScheme: value MUST be an object")
-)
-
-func (loader *Loader) resolveHeaderRef(doc *T, component *HeaderRef, documentPath *url.URL) (err error) {
-	if component.isEmpty() {
-		return errMUSTHeader
-	}
-
-	if component.Value != nil {
-		if loader.visitedHeader == nil {
-			loader.visitedHeader = make(map[*Header]struct{})
-		}
-		if _, ok := loader.visitedHeader[component.Value]; ok {
-			return nil
-		}
-		loader.visitedHeader[component.Value] = struct{}{}
-	}
-
-	if ref := component.Ref; ref != "" {
-		if isSingleRefElement(ref) {
-			var header Header
-			if documentPath, err = loader.loadSingleElementFromURI(ref, documentPath, &header); err != nil {
-				return err
-			}
-			component.Value = &header
-		} else {
-			var resolved HeaderRef
-			doc, componentPath, err := loader.resolveComponent(doc, ref, documentPath, &resolved)
-			if err != nil {
-				return err
-			}
-			if err := loader.resolveHeaderRef(doc, &resolved, componentPath); err != nil {
-				if err == errMUSTHeader {
-					return nil
-				}
-				return err
-			}
-			component.Value = resolved.Value
-		}
-	}
-	value := component.Value
-	if value == nil {
-		return nil
-	}
-
-	if schema := value.Schema; schema != nil {
-		if err := loader.resolveSchemaRef(doc, schema, documentPath, []string{}); err != nil {
-			return err
-		}
-	}
-	return nil
-}
-
-func (loader *Loader) resolveParameterRef(doc *T, component *ParameterRef, documentPath *url.URL) (err error) {
-	if component.isEmpty() {
-		return errMUSTParameter
-	}
-
-	if component.Value != nil {
-		if loader.visitedParameter == nil {
-			loader.visitedParameter = make(map[*Parameter]struct{})
-		}
-		if _, ok := loader.visitedParameter[component.Value]; ok {
-			return nil
-		}
-		loader.visitedParameter[component.Value] = struct{}{}
-	}
-
-	if ref := component.Ref; ref != "" {
-		if isSingleRefElement(ref) {
-			var param Parameter
-			if documentPath, err = loader.loadSingleElementFromURI(ref, documentPath, &param); err != nil {
-				return err
-			}
-			component.Value = &param
-		} else {
-			var resolved ParameterRef
-			doc, componentPath, err := loader.resolveComponent(doc, ref, documentPath, &resolved)
-			if err != nil {
-				return err
-			}
-			if err := loader.resolveParameterRef(doc, &resolved, componentPath); err != nil {
-				if err == errMUSTParameter {
-					return nil
-				}
-				return err
-			}
-			component.Value = resolved.Value
-		}
-	}
-	value := component.Value
-	if value == nil {
-		return nil
-	}
-
-	if value.Content != nil && value.Schema != nil {
-		return errors.New("cannot contain both schema and content in a parameter")
-	}
-	for _, contentType := range value.Content {
-		if schema := contentType.Schema; schema != nil {
-			if err := loader.resolveSchemaRef(doc, schema, documentPath, []string{}); err != nil {
-				return err
-			}
-		}
-	}
-	if schema := value.Schema; schema != nil {
-		if err := loader.resolveSchemaRef(doc, schema, documentPath, []string{}); err != nil {
-			return err
-		}
-	}
-	return nil
-}
-
-func (loader *Loader) resolveRequestBodyRef(doc *T, component *RequestBodyRef, documentPath *url.URL) (err error) {
-	if component.isEmpty() {
-		return errMUSTRequestBody
-	}
-
-	if component.Value != nil {
-		if loader.visitedRequestBody == nil {
-			loader.visitedRequestBody = make(map[*RequestBody]struct{})
-		}
-		if _, ok := loader.visitedRequestBody[component.Value]; ok {
-			return nil
-		}
-		loader.visitedRequestBody[component.Value] = struct{}{}
-	}
-
-	if ref := component.Ref; ref != "" {
-		if isSingleRefElement(ref) {
-			var requestBody RequestBody
-			if documentPath, err = loader.loadSingleElementFromURI(ref, documentPath, &requestBody); err != nil {
-				return err
-			}
-			component.Value = &requestBody
-		} else {
-			var resolved RequestBodyRef
-			doc, componentPath, err := loader.resolveComponent(doc, ref, documentPath, &resolved)
-			if err != nil {
-				return err
-			}
-			if err = loader.resolveRequestBodyRef(doc, &resolved, componentPath); err != nil {
-				if err == errMUSTRequestBody {
-					return nil
-				}
-				return err
-			}
-			component.Value = resolved.Value
-		}
-	}
-	value := component.Value
-	if value == nil {
-		return nil
-	}
-
-	for _, contentType := range value.Content {
-		if contentType == nil {
-			continue
-		}
-		examples := make([]string, 0, len(contentType.Examples))
-		for name := range contentType.Examples {
-			examples = append(examples, name)
-		}
-		sort.Strings(examples)
-		for _, name := range examples {
-			example := contentType.Examples[name]
-			if err := loader.resolveExampleRef(doc, example, documentPath); err != nil {
-				return err
-			}
-			contentType.Examples[name] = example
-		}
-		if schema := contentType.Schema; schema != nil {
-			if err := loader.resolveSchemaRef(doc, schema, documentPath, []string{}); err != nil {
-				return err
-			}
-		}
-	}
-	return nil
-}
-
-func (loader *Loader) resolveResponseRef(doc *T, component *ResponseRef, documentPath *url.URL) (err error) {
-	if component.isEmpty() {
-		return errMUSTResponse
-	}
-
-	if component.Value != nil {
-		if loader.visitedResponse == nil {
-			loader.visitedResponse = make(map[*Response]struct{})
-		}
-		if _, ok := loader.visitedResponse[component.Value]; ok {
-			return nil
-		}
-		loader.visitedResponse[component.Value] = struct{}{}
-	}
-
-	if ref := component.Ref; ref != "" {
-		if isSingleRefElement(ref) {
-			var resp Response
-			if documentPath, err = loader.loadSingleElementFromURI(ref, documentPath, &resp); err != nil {
-				return err
-			}
-			component.Value = &resp
-		} else {
-			var resolved ResponseRef
-			doc, componentPath, err := loader.resolveComponent(doc, ref, documentPath, &resolved)
-			if err != nil {
-				return err
-			}
-			if err := loader.resolveResponseRef(doc, &resolved, componentPath); err != nil {
-				if err == errMUSTResponse {
-					return nil
-				}
-				return err
-			}
-			component.Value = resolved.Value
-		}
-	}
-	value := component.Value
-	if value == nil {
-		return nil
-	}
-
-	for _, header := range value.Headers {
-		if err := loader.resolveHeaderRef(doc, header, documentPath); err != nil {
-			return err
-		}
-	}
-	for _, contentType := range value.Content {
-		if contentType == nil {
-			continue
-		}
-		examples := make([]string, 0, len(contentType.Examples))
-		for name := range contentType.Examples {
-			examples = append(examples, name)
-		}
-		sort.Strings(examples)
-		for _, name := range examples {
-			example := contentType.Examples[name]
-			if err := loader.resolveExampleRef(doc, example, documentPath); err != nil {
-				return err
-			}
-			contentType.Examples[name] = example
-		}
-		if schema := contentType.Schema; schema != nil {
-			if err := loader.resolveSchemaRef(doc, schema, documentPath, []string{}); err != nil {
-				return err
-			}
-			contentType.Schema = schema
-		}
-	}
-	for _, link := range value.Links {
-		if err := loader.resolveLinkRef(doc, link, documentPath); err != nil {
-			return err
-		}
-	}
-	return nil
-}
-
-func (loader *Loader) resolveSchemaRef(doc *T, component *SchemaRef, documentPath *url.URL, visited []string) (err error) {
-	if component.isEmpty() {
-		return errMUSTSchema
-	}
-
-	if component.Value != nil {
-		if loader.visitedSchema == nil {
-			loader.visitedSchema = make(map[*Schema]struct{})
-		}
-		if _, ok := loader.visitedSchema[component.Value]; ok {
-			return nil
-		}
-		loader.visitedSchema[component.Value] = struct{}{}
-	}
-
-	if ref := component.Ref; ref != "" {
-		if isSingleRefElement(ref) {
-			var schema Schema
-			if documentPath, err = loader.loadSingleElementFromURI(ref, documentPath, &schema); err != nil {
-				return err
-			}
-			component.Value = &schema
-		} else {
-			if visitedLimit(visited, ref) {
-				visited = append(visited, ref)
-				return fmt.Errorf("%s with length %d - %s", CircularReferenceError, len(visited), strings.Join(visited, " -> "))
-			}
-			visited = append(visited, ref)
-
-			var resolved SchemaRef
-			doc, componentPath, err := loader.resolveComponent(doc, ref, documentPath, &resolved)
-			if err != nil {
-				return err
-			}
-			if err := loader.resolveSchemaRef(doc, &resolved, componentPath, visited); err != nil {
-				if err == errMUSTSchema {
-					return nil
-				}
-				return err
-			}
-			component.Value = resolved.Value
-		}
-		if loader.visitedSchema == nil {
-			loader.visitedSchema = make(map[*Schema]struct{})
-		}
-		loader.visitedSchema[component.Value] = struct{}{}
-	}
-	value := component.Value
-	if value == nil {
-		return nil
-	}
-
-	// ResolveRefs referred schemas
-	if v := value.Items; v != nil {
-		if err := loader.resolveSchemaRef(doc, v, documentPath, visited); err != nil {
-			return err
-		}
-	}
-	for _, v := range value.Properties {
-		if err := loader.resolveSchemaRef(doc, v, documentPath, visited); err != nil {
-			return err
-		}
-	}
-	if v := value.AdditionalProperties.Schema; v != nil {
-		if err := loader.resolveSchemaRef(doc, v, documentPath, visited); err != nil {
-			return err
-		}
-	}
-	if v := value.Not; v != nil {
-		if err := loader.resolveSchemaRef(doc, v, documentPath, visited); err != nil {
-			return err
-		}
-	}
-	for _, v := range value.AllOf {
-		if err := loader.resolveSchemaRef(doc, v, documentPath, visited); err != nil {
-			return err
-		}
-	}
-	for _, v := range value.AnyOf {
-		if err := loader.resolveSchemaRef(doc, v, documentPath, visited); err != nil {
-			return err
-		}
-	}
-	for _, v := range value.OneOf {
-		if err := loader.resolveSchemaRef(doc, v, documentPath, visited); err != nil {
-			return err
-		}
-	}
-	return nil
-}
-
-func (loader *Loader) resolveSecuritySchemeRef(doc *T, component *SecuritySchemeRef, documentPath *url.URL) (err error) {
-	if component.isEmpty() {
-		return errMUSTSecurityScheme
-	}
-
-	if component.Value != nil {
-		if loader.visitedSecurityScheme == nil {
-			loader.visitedSecurityScheme = make(map[*SecurityScheme]struct{})
-		}
-		if _, ok := loader.visitedSecurityScheme[component.Value]; ok {
-			return nil
-		}
-		loader.visitedSecurityScheme[component.Value] = struct{}{}
-	}
-
-	if ref := component.Ref; ref != "" {
-		if isSingleRefElement(ref) {
-			var scheme SecurityScheme
-			if _, err = loader.loadSingleElementFromURI(ref, documentPath, &scheme); err != nil {
-				return err
-			}
-			component.Value = &scheme
-		} else {
-			var resolved SecuritySchemeRef
-			doc, componentPath, err := loader.resolveComponent(doc, ref, documentPath, &resolved)
-			if err != nil {
-				return err
-			}
-			if err := loader.resolveSecuritySchemeRef(doc, &resolved, componentPath); err != nil {
-				if err == errMUSTSecurityScheme {
-					return nil
-				}
-				return err
-			}
-			component.Value = resolved.Value
-		}
-	}
-	return nil
-}
-
-func (loader *Loader) resolveExampleRef(doc *T, component *ExampleRef, documentPath *url.URL) (err error) {
-	if component.isEmpty() {
-		return errMUSTExample
-	}
-
-	if component.Value != nil {
-		if loader.visitedExample == nil {
-			loader.visitedExample = make(map[*Example]struct{})
-		}
-		if _, ok := loader.visitedExample[component.Value]; ok {
-			return nil
-		}
-		loader.visitedExample[component.Value] = struct{}{}
-	}
-
-	if ref := component.Ref; ref != "" {
-		if isSingleRefElement(ref) {
-			var example Example
-			if _, err = loader.loadSingleElementFromURI(ref, documentPath, &example); err != nil {
-				return err
-			}
-			component.Value = &example
-		} else {
-			var resolved ExampleRef
-			doc, componentPath, err := loader.resolveComponent(doc, ref, documentPath, &resolved)
-			if err != nil {
-				return err
-			}
-			if err := loader.resolveExampleRef(doc, &resolved, componentPath); err != nil {
-				if err == errMUSTExample {
-					return nil
-				}
-				return err
-			}
-			component.Value = resolved.Value
-		}
-	}
-	return nil
-}
-
-func (loader *Loader) resolveCallbackRef(doc *T, component *CallbackRef, documentPath *url.URL) (err error) {
-	if component.isEmpty() {
-		return errMUSTCallback
-	}
-
-	if component.Value != nil {
-		if loader.visitedCallback == nil {
-			loader.visitedCallback = make(map[*Callback]struct{})
-		}
-		if _, ok := loader.visitedCallback[component.Value]; ok {
-			return nil
-		}
-		loader.visitedCallback[component.Value] = struct{}{}
-	}
-
-	if ref := component.Ref; ref != "" {
-		if isSingleRefElement(ref) {
-			var resolved Callback
-			if documentPath, err = loader.loadSingleElementFromURI(ref, documentPath, &resolved); err != nil {
-				return err
-			}
-			component.Value = &resolved
-		} else {
-			var resolved CallbackRef
-			doc, componentPath, err := loader.resolveComponent(doc, ref, documentPath, &resolved)
-			if err != nil {
-				return err
-			}
-			if err = loader.resolveCallbackRef(doc, &resolved, componentPath); err != nil {
-				if err == errMUSTCallback {
-					return nil
-				}
-				return err
-			}
-			component.Value = resolved.Value
-		}
-	}
-	value := component.Value
-	if value == nil {
-		return nil
-	}
-
-	for _, pathItem := range value.Map() {
-		if err = loader.resolvePathItemRef(doc, pathItem, documentPath); err != nil {
-			return err
-		}
-	}
-	return nil
-}
-
-func (loader *Loader) resolveLinkRef(doc *T, component *LinkRef, documentPath *url.URL) (err error) {
-	if component.isEmpty() {
-		return errMUSTLink
-	}
-
-	if component.Value != nil {
-		if loader.visitedLink == nil {
-			loader.visitedLink = make(map[*Link]struct{})
-		}
-		if _, ok := loader.visitedLink[component.Value]; ok {
-			return nil
-		}
-		loader.visitedLink[component.Value] = struct{}{}
-	}
-
-	if ref := component.Ref; ref != "" {
-		if isSingleRefElement(ref) {
-			var link Link
-			if _, err = loader.loadSingleElementFromURI(ref, documentPath, &link); err != nil {
-				return err
-			}
-			component.Value = &link
-		} else {
-			var resolved LinkRef
-			doc, componentPath, err := loader.resolveComponent(doc, ref, documentPath, &resolved)
-			if err != nil {
-				return err
-			}
-			if err := loader.resolveLinkRef(doc, &resolved, componentPath); err != nil {
-				if err == errMUSTLink {
-					return nil
-				}
-				return err
-			}
-			component.Value = resolved.Value
-		}
-	}
-	return nil
-}
-
-func (loader *Loader) resolvePathItemRef(doc *T, pathItem *PathItem, documentPath *url.URL) (err error) {
-	if pathItem == nil {
-		err = errMUSTPathItem
-		return
-	}
-
-	if ref := pathItem.Ref; ref != "" {
-		if !pathItem.isEmpty() {
-			return
-		}
-		if isSingleRefElement(ref) {
-			var p PathItem
-			if documentPath, err = loader.loadSingleElementFromURI(ref, documentPath, &p); err != nil {
-				return
-			}
-			*pathItem = p
-		} else {
-			var resolved PathItem
-			if doc, documentPath, err = loader.resolveComponent(doc, ref, documentPath, &resolved); err != nil {
-				if err == errMUSTPathItem {
-					return nil
-				}
-				return
-			}
-			*pathItem = resolved
-		}
-		pathItem.Ref = ref
-	}
-
-	for _, parameter := range pathItem.Parameters {
-		if err = loader.resolveParameterRef(doc, parameter, documentPath); err != nil {
-			return
-		}
-	}
-	for _, operation := range pathItem.Operations() {
-		for _, parameter := range operation.Parameters {
-			if err = loader.resolveParameterRef(doc, parameter, documentPath); err != nil {
-				return
-			}
-		}
-		if requestBody := operation.RequestBody; requestBody != nil {
-			if err = loader.resolveRequestBodyRef(doc, requestBody, documentPath); err != nil {
-				return
-			}
-		}
-		for _, response := range operation.Responses.Map() {
-			if err = loader.resolveResponseRef(doc, response, documentPath); err != nil {
-				return
-			}
-		}
-		for _, callback := range operation.Callbacks {
-			if err = loader.resolveCallbackRef(doc, callback, documentPath); err != nil {
-				return
-			}
-		}
-	}
-	return
-}
-
-func unescapeRefString(ref string) string {
-	return strings.Replace(strings.Replace(ref, "~1", "/", -1), "~0", "~", -1)
-}
-
-func visitedLimit(visited []string, ref string) bool {
-	visitedCount := 0
-	for _, v := range visited {
-		if v == ref {
-			visitedCount++
-			if visitedCount >= CircularReferenceCounter {
-				return true
-			}
-		}
-	}
-	return false
-}
diff --git a/vendor/github.com/getkin/kin-openapi/openapi3/loader_uri_reader.go b/vendor/github.com/getkin/kin-openapi/openapi3/loader_uri_reader.go
deleted file mode 100644
index ba7b5f24..00000000
--- a/vendor/github.com/getkin/kin-openapi/openapi3/loader_uri_reader.go
+++ /dev/null
@@ -1,116 +0,0 @@
-package openapi3
-
-import (
-	"errors"
-	"fmt"
-	"io"
-	"net/http"
-	"net/url"
-	"os"
-	"path/filepath"
-	"sync"
-)
-
-// ReadFromURIFunc defines a function which reads the contents of a resource
-// located at a URI.
-type ReadFromURIFunc func(loader *Loader, url *url.URL) ([]byte, error)
-
-var uriMu = &sync.RWMutex{}
-
-// ErrURINotSupported indicates the ReadFromURIFunc does not know how to handle a
-// given URI.
-var ErrURINotSupported = errors.New("unsupported URI")
-
-// ReadFromURIs returns a ReadFromURIFunc which tries to read a URI using the
-// given reader functions, in the same order. If a reader function does not
-// support the URI and returns ErrURINotSupported, the next function is checked
-// until a match is found, or the URI is not supported by any.
-func ReadFromURIs(readers ...ReadFromURIFunc) ReadFromURIFunc {
-	return func(loader *Loader, url *url.URL) ([]byte, error) {
-		for i := range readers {
-			buf, err := readers[i](loader, url)
-			if err == ErrURINotSupported {
-				continue
-			} else if err != nil {
-				return nil, err
-			}
-			return buf, nil
-		}
-		return nil, ErrURINotSupported
-	}
-}
-
-// DefaultReadFromURI returns a caching ReadFromURIFunc which can read remote
-// HTTP URIs and local file URIs.
-var DefaultReadFromURI = URIMapCache(ReadFromURIs(ReadFromHTTP(http.DefaultClient), ReadFromFile))
-
-// ReadFromHTTP returns a ReadFromURIFunc which uses the given http.Client to
-// read the contents from a remote HTTP URI. This client may be customized to
-// implement timeouts, RFC 7234 caching, etc.
-func ReadFromHTTP(cl *http.Client) ReadFromURIFunc {
-	return func(loader *Loader, location *url.URL) ([]byte, error) {
-		if location.Scheme == "" || location.Host == "" {
-			return nil, ErrURINotSupported
-		}
-		req, err := http.NewRequest("GET", location.String(), nil)
-		if err != nil {
-			return nil, err
-		}
-		resp, err := cl.Do(req)
-		if err != nil {
-			return nil, err
-		}
-		defer resp.Body.Close()
-		if resp.StatusCode > 399 {
-			return nil, fmt.Errorf("error loading %q: request returned status code %d", location.String(), resp.StatusCode)
-		}
-		return io.ReadAll(resp.Body)
-	}
-}
-
-func is_file(location *url.URL) bool {
-	return location.Path != "" &&
-		location.Host == "" &&
-		(location.Scheme == "" || location.Scheme == "file")
-}
-
-// ReadFromFile is a ReadFromURIFunc which reads local file URIs.
-func ReadFromFile(loader *Loader, location *url.URL) ([]byte, error) {
-	if !is_file(location) {
-		return nil, ErrURINotSupported
-	}
-	return os.ReadFile(location.Path)
-}
-
-// URIMapCache returns a ReadFromURIFunc that caches the contents read from URI
-// locations in a simple map. This cache implementation is suitable for
-// short-lived processes such as command-line tools which process OpenAPI
-// documents.
-func URIMapCache(reader ReadFromURIFunc) ReadFromURIFunc {
-	cache := map[string][]byte{}
-	return func(loader *Loader, location *url.URL) (buf []byte, err error) {
-		if location.Scheme == "" || location.Scheme == "file" {
-			if !filepath.IsAbs(location.Path) {
-				// Do not cache relative file paths; this can cause trouble if
-				// the current working directory changes when processing
-				// multiple top-level documents.
-				return reader(loader, location)
-			}
-		}
-		uri := location.String()
-		var ok bool
-		uriMu.RLock()
-		if buf, ok = cache[uri]; ok {
-			uriMu.RUnlock()
-			return
-		}
-		uriMu.RUnlock()
-		if buf, err = reader(loader, location); err != nil {
-			return
-		}
-		uriMu.Lock()
-		defer uriMu.Unlock()
-		cache[uri] = buf
-		return
-	}
-}
diff --git a/vendor/github.com/getkin/kin-openapi/openapi3/maplike.go b/vendor/github.com/getkin/kin-openapi/openapi3/maplike.go
deleted file mode 100644
index 1f438538..00000000
--- a/vendor/github.com/getkin/kin-openapi/openapi3/maplike.go
+++ /dev/null
@@ -1,345 +0,0 @@
-package openapi3
-
-import (
-	"encoding/json"
-	"sort"
-	"strings"
-
-	"github.com/go-openapi/jsonpointer"
-)
-
-// NewResponsesWithCapacity builds a responses object of the given capacity.
-func NewResponsesWithCapacity(cap int) *Responses {
-	if cap == 0 {
-		return &Responses{m: make(map[string]*ResponseRef)}
-	}
-	return &Responses{m: make(map[string]*ResponseRef, cap)}
-}
-
-// Value returns the responses for key or nil
-func (responses *Responses) Value(key string) *ResponseRef {
-	if responses.Len() == 0 {
-		return nil
-	}
-	return responses.m[key]
-}
-
-// Set adds or replaces key 'key' of 'responses' with 'value'.
-// Note: 'responses' MUST be non-nil
-func (responses *Responses) Set(key string, value *ResponseRef) {
-	if responses.m == nil {
-		responses.m = make(map[string]*ResponseRef)
-	}
-	responses.m[key] = value
-}
-
-// Len returns the amount of keys in responses excluding responses.Extensions.
-func (responses *Responses) Len() int {
-	if responses == nil || responses.m == nil {
-		return 0
-	}
-	return len(responses.m)
-}
-
-// Map returns responses as a 'map'.
-// Note: iteration on Go maps is not ordered.
-func (responses *Responses) Map() (m map[string]*ResponseRef) {
-	if responses == nil || len(responses.m) == 0 {
-		return make(map[string]*ResponseRef)
-	}
-	m = make(map[string]*ResponseRef, len(responses.m))
-	for k, v := range responses.m {
-		m[k] = v
-	}
-	return
-}
-
-var _ jsonpointer.JSONPointable = (*Responses)(nil)
-
-// JSONLookup implements https://github.com/go-openapi/jsonpointer#JSONPointable
-func (responses Responses) JSONLookup(token string) (interface{}, error) {
-	if v := responses.Value(token); v == nil {
-		vv, _, err := jsonpointer.GetForToken(responses.Extensions, token)
-		return vv, err
-	} else if ref := v.Ref; ref != "" {
-		return &Ref{Ref: ref}, nil
-	} else {
-		var vv *Response = v.Value
-		return vv, nil
-	}
-}
-
-// MarshalJSON returns the JSON encoding of Responses.
-func (responses *Responses) MarshalJSON() ([]byte, error) {
-	m := make(map[string]interface{}, responses.Len()+len(responses.Extensions))
-	for k, v := range responses.Extensions {
-		m[k] = v
-	}
-	for k, v := range responses.Map() {
-		m[k] = v
-	}
-	return json.Marshal(m)
-}
-
-// UnmarshalJSON sets Responses to a copy of data.
-func (responses *Responses) UnmarshalJSON(data []byte) (err error) {
-	var m map[string]interface{}
-	if err = json.Unmarshal(data, &m); err != nil {
-		return
-	}
-
-	ks := make([]string, 0, len(m))
-	for k := range m {
-		ks = append(ks, k)
-	}
-	sort.Strings(ks)
-
-	x := Responses{
-		Extensions: make(map[string]interface{}),
-		m:          make(map[string]*ResponseRef, len(m)),
-	}
-
-	for _, k := range ks {
-		v := m[k]
-		if strings.HasPrefix(k, "x-") {
-			x.Extensions[k] = v
-			continue
-		}
-
-		var data []byte
-		if data, err = json.Marshal(v); err != nil {
-			return
-		}
-		var vv ResponseRef
-		if err = vv.UnmarshalJSON(data); err != nil {
-			return
-		}
-		x.m[k] = &vv
-	}
-	*responses = x
-	return
-}
-
-// NewCallbackWithCapacity builds a callback object of the given capacity.
-func NewCallbackWithCapacity(cap int) *Callback {
-	if cap == 0 {
-		return &Callback{m: make(map[string]*PathItem)}
-	}
-	return &Callback{m: make(map[string]*PathItem, cap)}
-}
-
-// Value returns the callback for key or nil
-func (callback *Callback) Value(key string) *PathItem {
-	if callback.Len() == 0 {
-		return nil
-	}
-	return callback.m[key]
-}
-
-// Set adds or replaces key 'key' of 'callback' with 'value'.
-// Note: 'callback' MUST be non-nil
-func (callback *Callback) Set(key string, value *PathItem) {
-	if callback.m == nil {
-		callback.m = make(map[string]*PathItem)
-	}
-	callback.m[key] = value
-}
-
-// Len returns the amount of keys in callback excluding callback.Extensions.
-func (callback *Callback) Len() int {
-	if callback == nil || callback.m == nil {
-		return 0
-	}
-	return len(callback.m)
-}
-
-// Map returns callback as a 'map'.
-// Note: iteration on Go maps is not ordered.
-func (callback *Callback) Map() (m map[string]*PathItem) {
-	if callback == nil || len(callback.m) == 0 {
-		return make(map[string]*PathItem)
-	}
-	m = make(map[string]*PathItem, len(callback.m))
-	for k, v := range callback.m {
-		m[k] = v
-	}
-	return
-}
-
-var _ jsonpointer.JSONPointable = (*Callback)(nil)
-
-// JSONLookup implements https://github.com/go-openapi/jsonpointer#JSONPointable
-func (callback Callback) JSONLookup(token string) (interface{}, error) {
-	if v := callback.Value(token); v == nil {
-		vv, _, err := jsonpointer.GetForToken(callback.Extensions, token)
-		return vv, err
-	} else if ref := v.Ref; ref != "" {
-		return &Ref{Ref: ref}, nil
-	} else {
-		var vv *PathItem = v
-		return vv, nil
-	}
-}
-
-// MarshalJSON returns the JSON encoding of Callback.
-func (callback *Callback) MarshalJSON() ([]byte, error) {
-	m := make(map[string]interface{}, callback.Len()+len(callback.Extensions))
-	for k, v := range callback.Extensions {
-		m[k] = v
-	}
-	for k, v := range callback.Map() {
-		m[k] = v
-	}
-	return json.Marshal(m)
-}
-
-// UnmarshalJSON sets Callback to a copy of data.
-func (callback *Callback) UnmarshalJSON(data []byte) (err error) {
-	var m map[string]interface{}
-	if err = json.Unmarshal(data, &m); err != nil {
-		return
-	}
-
-	ks := make([]string, 0, len(m))
-	for k := range m {
-		ks = append(ks, k)
-	}
-	sort.Strings(ks)
-
-	x := Callback{
-		Extensions: make(map[string]interface{}),
-		m:          make(map[string]*PathItem, len(m)),
-	}
-
-	for _, k := range ks {
-		v := m[k]
-		if strings.HasPrefix(k, "x-") {
-			x.Extensions[k] = v
-			continue
-		}
-
-		var data []byte
-		if data, err = json.Marshal(v); err != nil {
-			return
-		}
-		var vv PathItem
-		if err = vv.UnmarshalJSON(data); err != nil {
-			return
-		}
-		x.m[k] = &vv
-	}
-	*callback = x
-	return
-}
-
-// NewPathsWithCapacity builds a paths object of the given capacity.
-func NewPathsWithCapacity(cap int) *Paths {
-	if cap == 0 {
-		return &Paths{m: make(map[string]*PathItem)}
-	}
-	return &Paths{m: make(map[string]*PathItem, cap)}
-}
-
-// Value returns the paths for key or nil
-func (paths *Paths) Value(key string) *PathItem {
-	if paths.Len() == 0 {
-		return nil
-	}
-	return paths.m[key]
-}
-
-// Set adds or replaces key 'key' of 'paths' with 'value'.
-// Note: 'paths' MUST be non-nil
-func (paths *Paths) Set(key string, value *PathItem) {
-	if paths.m == nil {
-		paths.m = make(map[string]*PathItem)
-	}
-	paths.m[key] = value
-}
-
-// Len returns the amount of keys in paths excluding paths.Extensions.
-func (paths *Paths) Len() int {
-	if paths == nil || paths.m == nil {
-		return 0
-	}
-	return len(paths.m)
-}
-
-// Map returns paths as a 'map'.
-// Note: iteration on Go maps is not ordered.
-func (paths *Paths) Map() (m map[string]*PathItem) {
-	if paths == nil || len(paths.m) == 0 {
-		return make(map[string]*PathItem)
-	}
-	m = make(map[string]*PathItem, len(paths.m))
-	for k, v := range paths.m {
-		m[k] = v
-	}
-	return
-}
-
-var _ jsonpointer.JSONPointable = (*Paths)(nil)
-
-// JSONLookup implements https://github.com/go-openapi/jsonpointer#JSONPointable
-func (paths Paths) JSONLookup(token string) (interface{}, error) {
-	if v := paths.Value(token); v == nil {
-		vv, _, err := jsonpointer.GetForToken(paths.Extensions, token)
-		return vv, err
-	} else if ref := v.Ref; ref != "" {
-		return &Ref{Ref: ref}, nil
-	} else {
-		var vv *PathItem = v
-		return vv, nil
-	}
-}
-
-// MarshalJSON returns the JSON encoding of Paths.
-func (paths *Paths) MarshalJSON() ([]byte, error) {
-	m := make(map[string]interface{}, paths.Len()+len(paths.Extensions))
-	for k, v := range paths.Extensions {
-		m[k] = v
-	}
-	for k, v := range paths.Map() {
-		m[k] = v
-	}
-	return json.Marshal(m)
-}
-
-// UnmarshalJSON sets Paths to a copy of data.
-func (paths *Paths) UnmarshalJSON(data []byte) (err error) {
-	var m map[string]interface{}
-	if err = json.Unmarshal(data, &m); err != nil {
-		return
-	}
-
-	ks := make([]string, 0, len(m))
-	for k := range m {
-		ks = append(ks, k)
-	}
-	sort.Strings(ks)
-
-	x := Paths{
-		Extensions: make(map[string]interface{}),
-		m:          make(map[string]*PathItem, len(m)),
-	}
-
-	for _, k := range ks {
-		v := m[k]
-		if strings.HasPrefix(k, "x-") {
-			x.Extensions[k] = v
-			continue
-		}
-
-		var data []byte
-		if data, err = json.Marshal(v); err != nil {
-			return
-		}
-		var vv PathItem
-		if err = vv.UnmarshalJSON(data); err != nil {
-			return
-		}
-		x.m[k] = &vv
-	}
-	*paths = x
-	return
-}
diff --git a/vendor/github.com/getkin/kin-openapi/openapi3/marsh.go b/vendor/github.com/getkin/kin-openapi/openapi3/marsh.go
deleted file mode 100644
index 18036ae7..00000000
--- a/vendor/github.com/getkin/kin-openapi/openapi3/marsh.go
+++ /dev/null
@@ -1,26 +0,0 @@
-package openapi3
-
-import (
-	"encoding/json"
-	"fmt"
-	"strings"
-
-	"github.com/invopop/yaml"
-)
-
-func unmarshalError(jsonUnmarshalErr error) error {
-	if before, after, found := strings.Cut(jsonUnmarshalErr.Error(), "Bis"); found && before != "" && after != "" {
-		before = strings.ReplaceAll(before, " Go struct ", " ")
-		return fmt.Errorf("%s%s", before, strings.ReplaceAll(after, "Bis", ""))
-	}
-	return jsonUnmarshalErr
-}
-
-func unmarshal(data []byte, v interface{}) error {
-	// See https://github.com/getkin/kin-openapi/issues/680
-	if err := json.Unmarshal(data, v); err != nil {
-		// UnmarshalStrict(data, v) TODO: investigate how ymlv3 handles duplicate map keys
-		return yaml.Unmarshal(data, v)
-	}
-	return nil
-}
diff --git a/vendor/github.com/getkin/kin-openapi/openapi3/media_type.go b/vendor/github.com/getkin/kin-openapi/openapi3/media_type.go
deleted file mode 100644
index e043a7c9..00000000
--- a/vendor/github.com/getkin/kin-openapi/openapi3/media_type.go
+++ /dev/null
@@ -1,170 +0,0 @@
-package openapi3
-
-import (
-	"context"
-	"encoding/json"
-	"errors"
-	"fmt"
-	"sort"
-
-	"github.com/go-openapi/jsonpointer"
-)
-
-// MediaType is specified by OpenAPI/Swagger 3.0 standard.
-// See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#media-type-object
-type MediaType struct {
-	Extensions map[string]interface{} `json:"-" yaml:"-"`
-
-	Schema   *SchemaRef           `json:"schema,omitempty" yaml:"schema,omitempty"`
-	Example  interface{}          `json:"example,omitempty" yaml:"example,omitempty"`
-	Examples Examples             `json:"examples,omitempty" yaml:"examples,omitempty"`
-	Encoding map[string]*Encoding `json:"encoding,omitempty" yaml:"encoding,omitempty"`
-}
-
-var _ jsonpointer.JSONPointable = (*MediaType)(nil)
-
-func NewMediaType() *MediaType {
-	return &MediaType{}
-}
-
-func (mediaType *MediaType) WithSchema(schema *Schema) *MediaType {
-	if schema == nil {
-		mediaType.Schema = nil
-	} else {
-		mediaType.Schema = &SchemaRef{Value: schema}
-	}
-	return mediaType
-}
-
-func (mediaType *MediaType) WithSchemaRef(schema *SchemaRef) *MediaType {
-	mediaType.Schema = schema
-	return mediaType
-}
-
-func (mediaType *MediaType) WithExample(name string, value interface{}) *MediaType {
-	example := mediaType.Examples
-	if example == nil {
-		example = make(map[string]*ExampleRef)
-		mediaType.Examples = example
-	}
-	example[name] = &ExampleRef{
-		Value: NewExample(value),
-	}
-	return mediaType
-}
-
-func (mediaType *MediaType) WithEncoding(name string, enc *Encoding) *MediaType {
-	encoding := mediaType.Encoding
-	if encoding == nil {
-		encoding = make(map[string]*Encoding)
-		mediaType.Encoding = encoding
-	}
-	encoding[name] = enc
-	return mediaType
-}
-
-// MarshalJSON returns the JSON encoding of MediaType.
-func (mediaType MediaType) MarshalJSON() ([]byte, error) {
-	m := make(map[string]interface{}, 4+len(mediaType.Extensions))
-	for k, v := range mediaType.Extensions {
-		m[k] = v
-	}
-	if x := mediaType.Schema; x != nil {
-		m["schema"] = x
-	}
-	if x := mediaType.Example; x != nil {
-		m["example"] = x
-	}
-	if x := mediaType.Examples; len(x) != 0 {
-		m["examples"] = x
-	}
-	if x := mediaType.Encoding; len(x) != 0 {
-		m["encoding"] = x
-	}
-	return json.Marshal(m)
-}
-
-// UnmarshalJSON sets MediaType to a copy of data.
-func (mediaType *MediaType) UnmarshalJSON(data []byte) error {
-	type MediaTypeBis MediaType
-	var x MediaTypeBis
-	if err := json.Unmarshal(data, &x); err != nil {
-		return unmarshalError(err)
-	}
-	_ = json.Unmarshal(data, &x.Extensions)
-	delete(x.Extensions, "schema")
-	delete(x.Extensions, "example")
-	delete(x.Extensions, "examples")
-	delete(x.Extensions, "encoding")
-	if len(x.Extensions) == 0 {
-		x.Extensions = nil
-	}
-	*mediaType = MediaType(x)
-	return nil
-}
-
-// Validate returns an error if MediaType does not comply with the OpenAPI spec.
-func (mediaType *MediaType) Validate(ctx context.Context, opts ...ValidationOption) error {
-	ctx = WithValidationOptions(ctx, opts...)
-
-	if mediaType == nil {
-		return nil
-	}
-	if schema := mediaType.Schema; schema != nil {
-		if err := schema.Validate(ctx); err != nil {
-			return err
-		}
-
-		if mediaType.Example != nil && mediaType.Examples != nil {
-			return errors.New("example and examples are mutually exclusive")
-		}
-
-		if vo := getValidationOptions(ctx); !vo.examplesValidationDisabled {
-			if example := mediaType.Example; example != nil {
-				if err := validateExampleValue(ctx, example, schema.Value); err != nil {
-					return fmt.Errorf("invalid example: %w", err)
-				}
-			}
-
-			if examples := mediaType.Examples; examples != nil {
-				names := make([]string, 0, len(examples))
-				for name := range examples {
-					names = append(names, name)
-				}
-				sort.Strings(names)
-				for _, k := range names {
-					v := examples[k]
-					if err := v.Validate(ctx); err != nil {
-						return fmt.Errorf("example %s: %w", k, err)
-					}
-					if err := validateExampleValue(ctx, v.Value.Value, schema.Value); err != nil {
-						return fmt.Errorf("example %s: %w", k, err)
-					}
-				}
-			}
-		}
-	}
-
-	return validateExtensions(ctx, mediaType.Extensions)
-}
-
-// JSONLookup implements https://pkg.go.dev/github.com/go-openapi/jsonpointer#JSONPointable
-func (mediaType MediaType) JSONLookup(token string) (interface{}, error) {
-	switch token {
-	case "schema":
-		if mediaType.Schema != nil {
-			if mediaType.Schema.Ref != "" {
-				return &Ref{Ref: mediaType.Schema.Ref}, nil
-			}
-			return mediaType.Schema.Value, nil
-		}
-	case "example":
-		return mediaType.Example, nil
-	case "examples":
-		return mediaType.Examples, nil
-	case "encoding":
-		return mediaType.Encoding, nil
-	}
-	v, _, err := jsonpointer.GetForToken(mediaType.Extensions, token)
-	return v, err
-}
diff --git a/vendor/github.com/getkin/kin-openapi/openapi3/openapi3.go b/vendor/github.com/getkin/kin-openapi/openapi3/openapi3.go
deleted file mode 100644
index 62e149dc..00000000
--- a/vendor/github.com/getkin/kin-openapi/openapi3/openapi3.go
+++ /dev/null
@@ -1,191 +0,0 @@
-package openapi3
-
-import (
-	"context"
-	"encoding/json"
-	"errors"
-	"fmt"
-
-	"github.com/go-openapi/jsonpointer"
-)
-
-// T is the root of an OpenAPI v3 document
-// See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#openapi-object
-type T struct {
-	Extensions map[string]interface{} `json:"-" yaml:"-"`
-
-	OpenAPI      string               `json:"openapi" yaml:"openapi"` // Required
-	Components   *Components          `json:"components,omitempty" yaml:"components,omitempty"`
-	Info         *Info                `json:"info" yaml:"info"`   // Required
-	Paths        *Paths               `json:"paths" yaml:"paths"` // Required
-	Security     SecurityRequirements `json:"security,omitempty" yaml:"security,omitempty"`
-	Servers      Servers              `json:"servers,omitempty" yaml:"servers,omitempty"`
-	Tags         Tags                 `json:"tags,omitempty" yaml:"tags,omitempty"`
-	ExternalDocs *ExternalDocs        `json:"externalDocs,omitempty" yaml:"externalDocs,omitempty"`
-
-	visited visitedComponent
-}
-
-var _ jsonpointer.JSONPointable = (*T)(nil)
-
-// JSONLookup implements https://pkg.go.dev/github.com/go-openapi/jsonpointer#JSONPointable
-func (doc *T) JSONLookup(token string) (interface{}, error) {
-	switch token {
-	case "openapi":
-		return doc.OpenAPI, nil
-	case "components":
-		return doc.Components, nil
-	case "info":
-		return doc.Info, nil
-	case "paths":
-		return doc.Paths, nil
-	case "security":
-		return doc.Security, nil
-	case "servers":
-		return doc.Servers, nil
-	case "tags":
-		return doc.Tags, nil
-	case "externalDocs":
-		return doc.ExternalDocs, nil
-	}
-
-	v, _, err := jsonpointer.GetForToken(doc.Extensions, token)
-	return v, err
-}
-
-// MarshalJSON returns the JSON encoding of T.
-func (doc T) MarshalJSON() ([]byte, error) {
-	m := make(map[string]interface{}, 4+len(doc.Extensions))
-	for k, v := range doc.Extensions {
-		m[k] = v
-	}
-	m["openapi"] = doc.OpenAPI
-	if x := doc.Components; x != nil {
-		m["components"] = x
-	}
-	m["info"] = doc.Info
-	m["paths"] = doc.Paths
-	if x := doc.Security; len(x) != 0 {
-		m["security"] = x
-	}
-	if x := doc.Servers; len(x) != 0 {
-		m["servers"] = x
-	}
-	if x := doc.Tags; len(x) != 0 {
-		m["tags"] = x
-	}
-	if x := doc.ExternalDocs; x != nil {
-		m["externalDocs"] = x
-	}
-	return json.Marshal(m)
-}
-
-// UnmarshalJSON sets T to a copy of data.
-func (doc *T) UnmarshalJSON(data []byte) error {
-	type TBis T
-	var x TBis
-	if err := json.Unmarshal(data, &x); err != nil {
-		return unmarshalError(err)
-	}
-	_ = json.Unmarshal(data, &x.Extensions)
-	delete(x.Extensions, "openapi")
-	delete(x.Extensions, "components")
-	delete(x.Extensions, "info")
-	delete(x.Extensions, "paths")
-	delete(x.Extensions, "security")
-	delete(x.Extensions, "servers")
-	delete(x.Extensions, "tags")
-	delete(x.Extensions, "externalDocs")
-	if len(x.Extensions) == 0 {
-		x.Extensions = nil
-	}
-	*doc = T(x)
-	return nil
-}
-
-func (doc *T) AddOperation(path string, method string, operation *Operation) {
-	if doc.Paths == nil {
-		doc.Paths = NewPaths()
-	}
-	pathItem := doc.Paths.Value(path)
-	if pathItem == nil {
-		pathItem = &PathItem{}
-		doc.Paths.Set(path, pathItem)
-	}
-	pathItem.SetOperation(method, operation)
-}
-
-func (doc *T) AddServer(server *Server) {
-	doc.Servers = append(doc.Servers, server)
-}
-
-func (doc *T) AddServers(servers ...*Server) {
-	doc.Servers = append(doc.Servers, servers...)
-}
-
-// Validate returns an error if T does not comply with the OpenAPI spec.
-// Validations Options can be provided to modify the validation behavior.
-func (doc *T) Validate(ctx context.Context, opts ...ValidationOption) error {
-	ctx = WithValidationOptions(ctx, opts...)
-
-	if doc.OpenAPI == "" {
-		return errors.New("value of openapi must be a non-empty string")
-	}
-
-	var wrap func(error) error
-
-	wrap = func(e error) error { return fmt.Errorf("invalid components: %w", e) }
-	if v := doc.Components; v != nil {
-		if err := v.Validate(ctx); err != nil {
-			return wrap(err)
-		}
-	}
-
-	wrap = func(e error) error { return fmt.Errorf("invalid info: %w", e) }
-	if v := doc.Info; v != nil {
-		if err := v.Validate(ctx); err != nil {
-			return wrap(err)
-		}
-	} else {
-		return wrap(errors.New("must be an object"))
-	}
-
-	wrap = func(e error) error { return fmt.Errorf("invalid paths: %w", e) }
-	if v := doc.Paths; v != nil {
-		if err := v.Validate(ctx); err != nil {
-			return wrap(err)
-		}
-	} else {
-		return wrap(errors.New("must be an object"))
-	}
-
-	wrap = func(e error) error { return fmt.Errorf("invalid security: %w", e) }
-	if v := doc.Security; v != nil {
-		if err := v.Validate(ctx); err != nil {
-			return wrap(err)
-		}
-	}
-
-	wrap = func(e error) error { return fmt.Errorf("invalid servers: %w", e) }
-	if v := doc.Servers; v != nil {
-		if err := v.Validate(ctx); err != nil {
-			return wrap(err)
-		}
-	}
-
-	wrap = func(e error) error { return fmt.Errorf("invalid tags: %w", e) }
-	if v := doc.Tags; v != nil {
-		if err := v.Validate(ctx); err != nil {
-			return wrap(err)
-		}
-	}
-
-	wrap = func(e error) error { return fmt.Errorf("invalid external docs: %w", e) }
-	if v := doc.ExternalDocs; v != nil {
-		if err := v.Validate(ctx); err != nil {
-			return wrap(err)
-		}
-	}
-
-	return validateExtensions(ctx, doc.Extensions)
-}
diff --git a/vendor/github.com/getkin/kin-openapi/openapi3/operation.go b/vendor/github.com/getkin/kin-openapi/openapi3/operation.go
deleted file mode 100644
index d859a437..00000000
--- a/vendor/github.com/getkin/kin-openapi/openapi3/operation.go
+++ /dev/null
@@ -1,213 +0,0 @@
-package openapi3
-
-import (
-	"context"
-	"encoding/json"
-	"errors"
-	"fmt"
-	"strconv"
-
-	"github.com/go-openapi/jsonpointer"
-)
-
-// Operation represents "operation" specified by" OpenAPI/Swagger 3.0 standard.
-// See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#operation-object
-type Operation struct {
-	Extensions map[string]interface{} `json:"-" yaml:"-"`
-
-	// Optional tags for documentation.
-	Tags []string `json:"tags,omitempty" yaml:"tags,omitempty"`
-
-	// Optional short summary.
-	Summary string `json:"summary,omitempty" yaml:"summary,omitempty"`
-
-	// Optional description. Should use CommonMark syntax.
-	Description string `json:"description,omitempty" yaml:"description,omitempty"`
-
-	// Optional operation ID.
-	OperationID string `json:"operationId,omitempty" yaml:"operationId,omitempty"`
-
-	// Optional parameters.
-	Parameters Parameters `json:"parameters,omitempty" yaml:"parameters,omitempty"`
-
-	// Optional body parameter.
-	RequestBody *RequestBodyRef `json:"requestBody,omitempty" yaml:"requestBody,omitempty"`
-
-	// Responses.
-	Responses *Responses `json:"responses" yaml:"responses"` // Required
-
-	// Optional callbacks
-	Callbacks Callbacks `json:"callbacks,omitempty" yaml:"callbacks,omitempty"`
-
-	Deprecated bool `json:"deprecated,omitempty" yaml:"deprecated,omitempty"`
-
-	// Optional security requirements that overrides top-level security.
-	Security *SecurityRequirements `json:"security,omitempty" yaml:"security,omitempty"`
-
-	// Optional servers that overrides top-level servers.
-	Servers *Servers `json:"servers,omitempty" yaml:"servers,omitempty"`
-
-	ExternalDocs *ExternalDocs `json:"externalDocs,omitempty" yaml:"externalDocs,omitempty"`
-}
-
-var _ jsonpointer.JSONPointable = (*Operation)(nil)
-
-func NewOperation() *Operation {
-	return &Operation{}
-}
-
-// MarshalJSON returns the JSON encoding of Operation.
-func (operation Operation) MarshalJSON() ([]byte, error) {
-	m := make(map[string]interface{}, 12+len(operation.Extensions))
-	for k, v := range operation.Extensions {
-		m[k] = v
-	}
-	if x := operation.Tags; len(x) != 0 {
-		m["tags"] = x
-	}
-	if x := operation.Summary; x != "" {
-		m["summary"] = x
-	}
-	if x := operation.Description; x != "" {
-		m["description"] = x
-	}
-	if x := operation.OperationID; x != "" {
-		m["operationId"] = x
-	}
-	if x := operation.Parameters; len(x) != 0 {
-		m["parameters"] = x
-	}
-	if x := operation.RequestBody; x != nil {
-		m["requestBody"] = x
-	}
-	m["responses"] = operation.Responses
-	if x := operation.Callbacks; len(x) != 0 {
-		m["callbacks"] = x
-	}
-	if x := operation.Deprecated; x {
-		m["deprecated"] = x
-	}
-	if x := operation.Security; x != nil {
-		m["security"] = x
-	}
-	if x := operation.Servers; x != nil {
-		m["servers"] = x
-	}
-	if x := operation.ExternalDocs; x != nil {
-		m["externalDocs"] = x
-	}
-	return json.Marshal(m)
-}
-
-// UnmarshalJSON sets Operation to a copy of data.
-func (operation *Operation) UnmarshalJSON(data []byte) error {
-	type OperationBis Operation
-	var x OperationBis
-	if err := json.Unmarshal(data, &x); err != nil {
-		return unmarshalError(err)
-	}
-	_ = json.Unmarshal(data, &x.Extensions)
-	delete(x.Extensions, "tags")
-	delete(x.Extensions, "summary")
-	delete(x.Extensions, "description")
-	delete(x.Extensions, "operationId")
-	delete(x.Extensions, "parameters")
-	delete(x.Extensions, "requestBody")
-	delete(x.Extensions, "responses")
-	delete(x.Extensions, "callbacks")
-	delete(x.Extensions, "deprecated")
-	delete(x.Extensions, "security")
-	delete(x.Extensions, "servers")
-	delete(x.Extensions, "externalDocs")
-	if len(x.Extensions) == 0 {
-		x.Extensions = nil
-	}
-	*operation = Operation(x)
-	return nil
-}
-
-// JSONLookup implements https://pkg.go.dev/github.com/go-openapi/jsonpointer#JSONPointable
-func (operation Operation) JSONLookup(token string) (interface{}, error) {
-	switch token {
-	case "requestBody":
-		if operation.RequestBody != nil {
-			if operation.RequestBody.Ref != "" {
-				return &Ref{Ref: operation.RequestBody.Ref}, nil
-			}
-			return operation.RequestBody.Value, nil
-		}
-	case "tags":
-		return operation.Tags, nil
-	case "summary":
-		return operation.Summary, nil
-	case "description":
-		return operation.Description, nil
-	case "operationID":
-		return operation.OperationID, nil
-	case "parameters":
-		return operation.Parameters, nil
-	case "responses":
-		return operation.Responses, nil
-	case "callbacks":
-		return operation.Callbacks, nil
-	case "deprecated":
-		return operation.Deprecated, nil
-	case "security":
-		return operation.Security, nil
-	case "servers":
-		return operation.Servers, nil
-	case "externalDocs":
-		return operation.ExternalDocs, nil
-	}
-
-	v, _, err := jsonpointer.GetForToken(operation.Extensions, token)
-	return v, err
-}
-
-func (operation *Operation) AddParameter(p *Parameter) {
-	operation.Parameters = append(operation.Parameters, &ParameterRef{Value: p})
-}
-
-func (operation *Operation) AddResponse(status int, response *Response) {
-	code := "default"
-	if 0 < status && status < 1000 {
-		code = strconv.FormatInt(int64(status), 10)
-	}
-	if operation.Responses == nil {
-		operation.Responses = NewResponses()
-	}
-	operation.Responses.Set(code, &ResponseRef{Value: response})
-}
-
-// Validate returns an error if Operation does not comply with the OpenAPI spec.
-func (operation *Operation) Validate(ctx context.Context, opts ...ValidationOption) error {
-	ctx = WithValidationOptions(ctx, opts...)
-
-	if v := operation.Parameters; v != nil {
-		if err := v.Validate(ctx); err != nil {
-			return err
-		}
-	}
-
-	if v := operation.RequestBody; v != nil {
-		if err := v.Validate(ctx); err != nil {
-			return err
-		}
-	}
-
-	if v := operation.Responses; v != nil {
-		if err := v.Validate(ctx); err != nil {
-			return err
-		}
-	} else {
-		return errors.New("value of responses must be an object")
-	}
-
-	if v := operation.ExternalDocs; v != nil {
-		if err := v.Validate(ctx); err != nil {
-			return fmt.Errorf("invalid external docs: %w", err)
-		}
-	}
-
-	return validateExtensions(ctx, operation.Extensions)
-}
diff --git a/vendor/github.com/getkin/kin-openapi/openapi3/parameter.go b/vendor/github.com/getkin/kin-openapi/openapi3/parameter.go
deleted file mode 100644
index f5a157de..00000000
--- a/vendor/github.com/getkin/kin-openapi/openapi3/parameter.go
+++ /dev/null
@@ -1,407 +0,0 @@
-package openapi3
-
-import (
-	"context"
-	"encoding/json"
-	"errors"
-	"fmt"
-	"sort"
-	"strconv"
-
-	"github.com/go-openapi/jsonpointer"
-)
-
-// Parameters is specified by OpenAPI/Swagger 3.0 standard.
-type Parameters []*ParameterRef
-
-var _ jsonpointer.JSONPointable = (*Parameters)(nil)
-
-// JSONLookup implements https://pkg.go.dev/github.com/go-openapi/jsonpointer#JSONPointable
-func (p Parameters) JSONLookup(token string) (interface{}, error) {
-	index, err := strconv.Atoi(token)
-	if err != nil {
-		return nil, err
-	}
-	if index < 0 || index >= len(p) {
-		return nil, fmt.Errorf("index %d out of bounds of array of length %d", index, len(p))
-	}
-
-	ref := p[index]
-	if ref != nil && ref.Ref != "" {
-		return &Ref{Ref: ref.Ref}, nil
-	}
-	return ref.Value, nil
-}
-
-func NewParameters() Parameters {
-	return make(Parameters, 0, 4)
-}
-
-func (parameters Parameters) GetByInAndName(in string, name string) *Parameter {
-	for _, item := range parameters {
-		if v := item.Value; v != nil {
-			if v.Name == name && v.In == in {
-				return v
-			}
-		}
-	}
-	return nil
-}
-
-// Validate returns an error if Parameters does not comply with the OpenAPI spec.
-func (parameters Parameters) Validate(ctx context.Context, opts ...ValidationOption) error {
-	ctx = WithValidationOptions(ctx, opts...)
-
-	dupes := make(map[string]struct{})
-	for _, parameterRef := range parameters {
-		if v := parameterRef.Value; v != nil {
-			key := v.In + ":" + v.Name
-			if _, ok := dupes[key]; ok {
-				return fmt.Errorf("more than one %q parameter has name %q", v.In, v.Name)
-			}
-			dupes[key] = struct{}{}
-		}
-
-		if err := parameterRef.Validate(ctx); err != nil {
-			return err
-		}
-	}
-	return nil
-}
-
-// Parameter is specified by OpenAPI/Swagger 3.0 standard.
-// See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#parameter-object
-type Parameter struct {
-	Extensions map[string]interface{} `json:"-" yaml:"-"`
-
-	Name            string      `json:"name,omitempty" yaml:"name,omitempty"`
-	In              string      `json:"in,omitempty" yaml:"in,omitempty"`
-	Description     string      `json:"description,omitempty" yaml:"description,omitempty"`
-	Style           string      `json:"style,omitempty" yaml:"style,omitempty"`
-	Explode         *bool       `json:"explode,omitempty" yaml:"explode,omitempty"`
-	AllowEmptyValue bool        `json:"allowEmptyValue,omitempty" yaml:"allowEmptyValue,omitempty"`
-	AllowReserved   bool        `json:"allowReserved,omitempty" yaml:"allowReserved,omitempty"`
-	Deprecated      bool        `json:"deprecated,omitempty" yaml:"deprecated,omitempty"`
-	Required        bool        `json:"required,omitempty" yaml:"required,omitempty"`
-	Schema          *SchemaRef  `json:"schema,omitempty" yaml:"schema,omitempty"`
-	Example         interface{} `json:"example,omitempty" yaml:"example,omitempty"`
-	Examples        Examples    `json:"examples,omitempty" yaml:"examples,omitempty"`
-	Content         Content     `json:"content,omitempty" yaml:"content,omitempty"`
-}
-
-var _ jsonpointer.JSONPointable = (*Parameter)(nil)
-
-const (
-	ParameterInPath   = "path"
-	ParameterInQuery  = "query"
-	ParameterInHeader = "header"
-	ParameterInCookie = "cookie"
-)
-
-func NewPathParameter(name string) *Parameter {
-	return &Parameter{
-		Name:     name,
-		In:       ParameterInPath,
-		Required: true,
-	}
-}
-
-func NewQueryParameter(name string) *Parameter {
-	return &Parameter{
-		Name: name,
-		In:   ParameterInQuery,
-	}
-}
-
-func NewHeaderParameter(name string) *Parameter {
-	return &Parameter{
-		Name: name,
-		In:   ParameterInHeader,
-	}
-}
-
-func NewCookieParameter(name string) *Parameter {
-	return &Parameter{
-		Name: name,
-		In:   ParameterInCookie,
-	}
-}
-
-func (parameter *Parameter) WithDescription(value string) *Parameter {
-	parameter.Description = value
-	return parameter
-}
-
-func (parameter *Parameter) WithRequired(value bool) *Parameter {
-	parameter.Required = value
-	return parameter
-}
-
-func (parameter *Parameter) WithSchema(value *Schema) *Parameter {
-	if value == nil {
-		parameter.Schema = nil
-	} else {
-		parameter.Schema = &SchemaRef{
-			Value: value,
-		}
-	}
-	return parameter
-}
-
-// MarshalJSON returns the JSON encoding of Parameter.
-func (parameter Parameter) MarshalJSON() ([]byte, error) {
-	m := make(map[string]interface{}, 13+len(parameter.Extensions))
-	for k, v := range parameter.Extensions {
-		m[k] = v
-	}
-
-	if x := parameter.Name; x != "" {
-		m["name"] = x
-	}
-	if x := parameter.In; x != "" {
-		m["in"] = x
-	}
-	if x := parameter.Description; x != "" {
-		m["description"] = x
-	}
-	if x := parameter.Style; x != "" {
-		m["style"] = x
-	}
-	if x := parameter.Explode; x != nil {
-		m["explode"] = x
-	}
-	if x := parameter.AllowEmptyValue; x {
-		m["allowEmptyValue"] = x
-	}
-	if x := parameter.AllowReserved; x {
-		m["allowReserved"] = x
-	}
-	if x := parameter.Deprecated; x {
-		m["deprecated"] = x
-	}
-	if x := parameter.Required; x {
-		m["required"] = x
-	}
-	if x := parameter.Schema; x != nil {
-		m["schema"] = x
-	}
-	if x := parameter.Example; x != nil {
-		m["example"] = x
-	}
-	if x := parameter.Examples; len(x) != 0 {
-		m["examples"] = x
-	}
-	if x := parameter.Content; len(x) != 0 {
-		m["content"] = x
-	}
-
-	return json.Marshal(m)
-}
-
-// UnmarshalJSON sets Parameter to a copy of data.
-func (parameter *Parameter) UnmarshalJSON(data []byte) error {
-	type ParameterBis Parameter
-	var x ParameterBis
-	if err := json.Unmarshal(data, &x); err != nil {
-		return unmarshalError(err)
-	}
-	_ = json.Unmarshal(data, &x.Extensions)
-
-	delete(x.Extensions, "name")
-	delete(x.Extensions, "in")
-	delete(x.Extensions, "description")
-	delete(x.Extensions, "style")
-	delete(x.Extensions, "explode")
-	delete(x.Extensions, "allowEmptyValue")
-	delete(x.Extensions, "allowReserved")
-	delete(x.Extensions, "deprecated")
-	delete(x.Extensions, "required")
-	delete(x.Extensions, "schema")
-	delete(x.Extensions, "example")
-	delete(x.Extensions, "examples")
-	delete(x.Extensions, "content")
-	if len(x.Extensions) == 0 {
-		x.Extensions = nil
-	}
-
-	*parameter = Parameter(x)
-	return nil
-}
-
-// JSONLookup implements https://pkg.go.dev/github.com/go-openapi/jsonpointer#JSONPointable
-func (parameter Parameter) JSONLookup(token string) (interface{}, error) {
-	switch token {
-	case "schema":
-		if parameter.Schema != nil {
-			if parameter.Schema.Ref != "" {
-				return &Ref{Ref: parameter.Schema.Ref}, nil
-			}
-			return parameter.Schema.Value, nil
-		}
-	case "name":
-		return parameter.Name, nil
-	case "in":
-		return parameter.In, nil
-	case "description":
-		return parameter.Description, nil
-	case "style":
-		return parameter.Style, nil
-	case "explode":
-		return parameter.Explode, nil
-	case "allowEmptyValue":
-		return parameter.AllowEmptyValue, nil
-	case "allowReserved":
-		return parameter.AllowReserved, nil
-	case "deprecated":
-		return parameter.Deprecated, nil
-	case "required":
-		return parameter.Required, nil
-	case "example":
-		return parameter.Example, nil
-	case "examples":
-		return parameter.Examples, nil
-	case "content":
-		return parameter.Content, nil
-	}
-
-	v, _, err := jsonpointer.GetForToken(parameter.Extensions, token)
-	return v, err
-}
-
-// SerializationMethod returns a parameter's serialization method.
-// When a parameter's serialization method is not defined the method returns
-// the default serialization method corresponding to a parameter's location.
-func (parameter *Parameter) SerializationMethod() (*SerializationMethod, error) {
-	switch parameter.In {
-	case ParameterInPath, ParameterInHeader:
-		style := parameter.Style
-		if style == "" {
-			style = SerializationSimple
-		}
-		explode := false
-		if parameter.Explode != nil {
-			explode = *parameter.Explode
-		}
-		return &SerializationMethod{Style: style, Explode: explode}, nil
-	case ParameterInQuery, ParameterInCookie:
-		style := parameter.Style
-		if style == "" {
-			style = SerializationForm
-		}
-		explode := true
-		if parameter.Explode != nil {
-			explode = *parameter.Explode
-		}
-		return &SerializationMethod{Style: style, Explode: explode}, nil
-	default:
-		return nil, fmt.Errorf("unexpected parameter's 'in': %q", parameter.In)
-	}
-}
-
-// Validate returns an error if Parameter does not comply with the OpenAPI spec.
-func (parameter *Parameter) Validate(ctx context.Context, opts ...ValidationOption) error {
-	ctx = WithValidationOptions(ctx, opts...)
-
-	if parameter.Name == "" {
-		return errors.New("parameter name can't be blank")
-	}
-	in := parameter.In
-	switch in {
-	case
-		ParameterInPath,
-		ParameterInQuery,
-		ParameterInHeader,
-		ParameterInCookie:
-	default:
-		return fmt.Errorf("parameter can't have 'in' value %q", parameter.In)
-	}
-
-	if in == ParameterInPath && !parameter.Required {
-		return fmt.Errorf("path parameter %q must be required", parameter.Name)
-	}
-
-	// Validate a parameter's serialization method.
-	sm, err := parameter.SerializationMethod()
-	if err != nil {
-		return err
-	}
-	var smSupported bool
-	switch {
-	case parameter.In == ParameterInPath && sm.Style == SerializationSimple && !sm.Explode,
-		parameter.In == ParameterInPath && sm.Style == SerializationSimple && sm.Explode,
-		parameter.In == ParameterInPath && sm.Style == SerializationLabel && !sm.Explode,
-		parameter.In == ParameterInPath && sm.Style == SerializationLabel && sm.Explode,
-		parameter.In == ParameterInPath && sm.Style == SerializationMatrix && !sm.Explode,
-		parameter.In == ParameterInPath && sm.Style == SerializationMatrix && sm.Explode,
-
-		parameter.In == ParameterInQuery && sm.Style == SerializationForm && sm.Explode,
-		parameter.In == ParameterInQuery && sm.Style == SerializationForm && !sm.Explode,
-		parameter.In == ParameterInQuery && sm.Style == SerializationSpaceDelimited && sm.Explode,
-		parameter.In == ParameterInQuery && sm.Style == SerializationSpaceDelimited && !sm.Explode,
-		parameter.In == ParameterInQuery && sm.Style == SerializationPipeDelimited && sm.Explode,
-		parameter.In == ParameterInQuery && sm.Style == SerializationPipeDelimited && !sm.Explode,
-		parameter.In == ParameterInQuery && sm.Style == SerializationDeepObject && sm.Explode,
-
-		parameter.In == ParameterInHeader && sm.Style == SerializationSimple && !sm.Explode,
-		parameter.In == ParameterInHeader && sm.Style == SerializationSimple && sm.Explode,
-
-		parameter.In == ParameterInCookie && sm.Style == SerializationForm && !sm.Explode,
-		parameter.In == ParameterInCookie && sm.Style == SerializationForm && sm.Explode:
-		smSupported = true
-	}
-	if !smSupported {
-		e := fmt.Errorf("serialization method with style=%q and explode=%v is not supported by a %s parameter", sm.Style, sm.Explode, in)
-		return fmt.Errorf("parameter %q schema is invalid: %w", parameter.Name, e)
-	}
-
-	if (parameter.Schema == nil) == (len(parameter.Content) == 0) {
-		e := errors.New("parameter must contain exactly one of content and schema")
-		return fmt.Errorf("parameter %q schema is invalid: %w", parameter.Name, e)
-	}
-
-	if content := parameter.Content; content != nil {
-		e := errors.New("parameter content must only contain one entry")
-		if len(content) > 1 {
-			return fmt.Errorf("parameter %q content is invalid: %w", parameter.Name, e)
-		}
-
-		if err := content.Validate(ctx); err != nil {
-			return fmt.Errorf("parameter %q content is invalid: %w", parameter.Name, err)
-		}
-	}
-
-	if schema := parameter.Schema; schema != nil {
-		if err := schema.Validate(ctx); err != nil {
-			return fmt.Errorf("parameter %q schema is invalid: %w", parameter.Name, err)
-		}
-		if parameter.Example != nil && parameter.Examples != nil {
-			return fmt.Errorf("parameter %q example and examples are mutually exclusive", parameter.Name)
-		}
-
-		if vo := getValidationOptions(ctx); vo.examplesValidationDisabled {
-			return nil
-		}
-		if example := parameter.Example; example != nil {
-			if err := validateExampleValue(ctx, example, schema.Value); err != nil {
-				return fmt.Errorf("invalid example: %w", err)
-			}
-		} else if examples := parameter.Examples; examples != nil {
-			names := make([]string, 0, len(examples))
-			for name := range examples {
-				names = append(names, name)
-			}
-			sort.Strings(names)
-			for _, k := range names {
-				v := examples[k]
-				if err := v.Validate(ctx); err != nil {
-					return fmt.Errorf("%s: %w", k, err)
-				}
-				if err := validateExampleValue(ctx, v.Value.Value, schema.Value); err != nil {
-					return fmt.Errorf("%s: %w", k, err)
-				}
-			}
-		}
-	}
-
-	return validateExtensions(ctx, parameter.Extensions)
-}
diff --git a/vendor/github.com/getkin/kin-openapi/openapi3/path_item.go b/vendor/github.com/getkin/kin-openapi/openapi3/path_item.go
deleted file mode 100644
index e5dd0fb6..00000000
--- a/vendor/github.com/getkin/kin-openapi/openapi3/path_item.go
+++ /dev/null
@@ -1,239 +0,0 @@
-package openapi3
-
-import (
-	"context"
-	"encoding/json"
-	"fmt"
-	"net/http"
-	"sort"
-)
-
-// PathItem is specified by OpenAPI/Swagger standard version 3.
-// See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#path-item-object
-type PathItem struct {
-	Extensions map[string]interface{} `json:"-" yaml:"-"`
-
-	Ref         string     `json:"$ref,omitempty" yaml:"$ref,omitempty"`
-	Summary     string     `json:"summary,omitempty" yaml:"summary,omitempty"`
-	Description string     `json:"description,omitempty" yaml:"description,omitempty"`
-	Connect     *Operation `json:"connect,omitempty" yaml:"connect,omitempty"`
-	Delete      *Operation `json:"delete,omitempty" yaml:"delete,omitempty"`
-	Get         *Operation `json:"get,omitempty" yaml:"get,omitempty"`
-	Head        *Operation `json:"head,omitempty" yaml:"head,omitempty"`
-	Options     *Operation `json:"options,omitempty" yaml:"options,omitempty"`
-	Patch       *Operation `json:"patch,omitempty" yaml:"patch,omitempty"`
-	Post        *Operation `json:"post,omitempty" yaml:"post,omitempty"`
-	Put         *Operation `json:"put,omitempty" yaml:"put,omitempty"`
-	Trace       *Operation `json:"trace,omitempty" yaml:"trace,omitempty"`
-	Servers     Servers    `json:"servers,omitempty" yaml:"servers,omitempty"`
-	Parameters  Parameters `json:"parameters,omitempty" yaml:"parameters,omitempty"`
-}
-
-// MarshalJSON returns the JSON encoding of PathItem.
-func (pathItem PathItem) MarshalJSON() ([]byte, error) {
-	if ref := pathItem.Ref; ref != "" {
-		return json.Marshal(Ref{Ref: ref})
-	}
-
-	m := make(map[string]interface{}, 13+len(pathItem.Extensions))
-	for k, v := range pathItem.Extensions {
-		m[k] = v
-	}
-	if x := pathItem.Summary; x != "" {
-		m["summary"] = x
-	}
-	if x := pathItem.Description; x != "" {
-		m["description"] = x
-	}
-	if x := pathItem.Connect; x != nil {
-		m["connect"] = x
-	}
-	if x := pathItem.Delete; x != nil {
-		m["delete"] = x
-	}
-	if x := pathItem.Get; x != nil {
-		m["get"] = x
-	}
-	if x := pathItem.Head; x != nil {
-		m["head"] = x
-	}
-	if x := pathItem.Options; x != nil {
-		m["options"] = x
-	}
-	if x := pathItem.Patch; x != nil {
-		m["patch"] = x
-	}
-	if x := pathItem.Post; x != nil {
-		m["post"] = x
-	}
-	if x := pathItem.Put; x != nil {
-		m["put"] = x
-	}
-	if x := pathItem.Trace; x != nil {
-		m["trace"] = x
-	}
-	if x := pathItem.Servers; len(x) != 0 {
-		m["servers"] = x
-	}
-	if x := pathItem.Parameters; len(x) != 0 {
-		m["parameters"] = x
-	}
-	return json.Marshal(m)
-}
-
-// UnmarshalJSON sets PathItem to a copy of data.
-func (pathItem *PathItem) UnmarshalJSON(data []byte) error {
-	type PathItemBis PathItem
-	var x PathItemBis
-	if err := json.Unmarshal(data, &x); err != nil {
-		return unmarshalError(err)
-	}
-	_ = json.Unmarshal(data, &x.Extensions)
-	delete(x.Extensions, "$ref")
-	delete(x.Extensions, "summary")
-	delete(x.Extensions, "description")
-	delete(x.Extensions, "connect")
-	delete(x.Extensions, "delete")
-	delete(x.Extensions, "get")
-	delete(x.Extensions, "head")
-	delete(x.Extensions, "options")
-	delete(x.Extensions, "patch")
-	delete(x.Extensions, "post")
-	delete(x.Extensions, "put")
-	delete(x.Extensions, "trace")
-	delete(x.Extensions, "servers")
-	delete(x.Extensions, "parameters")
-	if len(x.Extensions) == 0 {
-		x.Extensions = nil
-	}
-	*pathItem = PathItem(x)
-	return nil
-}
-
-func (pathItem *PathItem) Operations() map[string]*Operation {
-	operations := make(map[string]*Operation)
-	if v := pathItem.Connect; v != nil {
-		operations[http.MethodConnect] = v
-	}
-	if v := pathItem.Delete; v != nil {
-		operations[http.MethodDelete] = v
-	}
-	if v := pathItem.Get; v != nil {
-		operations[http.MethodGet] = v
-	}
-	if v := pathItem.Head; v != nil {
-		operations[http.MethodHead] = v
-	}
-	if v := pathItem.Options; v != nil {
-		operations[http.MethodOptions] = v
-	}
-	if v := pathItem.Patch; v != nil {
-		operations[http.MethodPatch] = v
-	}
-	if v := pathItem.Post; v != nil {
-		operations[http.MethodPost] = v
-	}
-	if v := pathItem.Put; v != nil {
-		operations[http.MethodPut] = v
-	}
-	if v := pathItem.Trace; v != nil {
-		operations[http.MethodTrace] = v
-	}
-	return operations
-}
-
-func (pathItem *PathItem) GetOperation(method string) *Operation {
-	switch method {
-	case http.MethodConnect:
-		return pathItem.Connect
-	case http.MethodDelete:
-		return pathItem.Delete
-	case http.MethodGet:
-		return pathItem.Get
-	case http.MethodHead:
-		return pathItem.Head
-	case http.MethodOptions:
-		return pathItem.Options
-	case http.MethodPatch:
-		return pathItem.Patch
-	case http.MethodPost:
-		return pathItem.Post
-	case http.MethodPut:
-		return pathItem.Put
-	case http.MethodTrace:
-		return pathItem.Trace
-	default:
-		panic(fmt.Errorf("unsupported HTTP method %q", method))
-	}
-}
-
-func (pathItem *PathItem) SetOperation(method string, operation *Operation) {
-	switch method {
-	case http.MethodConnect:
-		pathItem.Connect = operation
-	case http.MethodDelete:
-		pathItem.Delete = operation
-	case http.MethodGet:
-		pathItem.Get = operation
-	case http.MethodHead:
-		pathItem.Head = operation
-	case http.MethodOptions:
-		pathItem.Options = operation
-	case http.MethodPatch:
-		pathItem.Patch = operation
-	case http.MethodPost:
-		pathItem.Post = operation
-	case http.MethodPut:
-		pathItem.Put = operation
-	case http.MethodTrace:
-		pathItem.Trace = operation
-	default:
-		panic(fmt.Errorf("unsupported HTTP method %q", method))
-	}
-}
-
-// Validate returns an error if PathItem does not comply with the OpenAPI spec.
-func (pathItem *PathItem) Validate(ctx context.Context, opts ...ValidationOption) error {
-	ctx = WithValidationOptions(ctx, opts...)
-
-	operations := pathItem.Operations()
-
-	methods := make([]string, 0, len(operations))
-	for method := range operations {
-		methods = append(methods, method)
-	}
-	sort.Strings(methods)
-	for _, method := range methods {
-		operation := operations[method]
-		if err := operation.Validate(ctx); err != nil {
-			return fmt.Errorf("invalid operation %s: %v", method, err)
-		}
-	}
-
-	if v := pathItem.Parameters; v != nil {
-		if err := v.Validate(ctx); err != nil {
-			return err
-		}
-	}
-
-	return validateExtensions(ctx, pathItem.Extensions)
-}
-
-// isEmpty's introduced in 546590b1
-func (pathItem *PathItem) isEmpty() bool {
-	// NOTE: ignores pathItem.Extensions
-	// NOTE: ignores pathItem.Ref
-	return pathItem.Summary == "" &&
-		pathItem.Description == "" &&
-		pathItem.Connect == nil &&
-		pathItem.Delete == nil &&
-		pathItem.Get == nil &&
-		pathItem.Head == nil &&
-		pathItem.Options == nil &&
-		pathItem.Patch == nil &&
-		pathItem.Post == nil &&
-		pathItem.Put == nil &&
-		pathItem.Trace == nil &&
-		len(pathItem.Servers) == 0 &&
-		len(pathItem.Parameters) == 0
-}
diff --git a/vendor/github.com/getkin/kin-openapi/openapi3/paths.go b/vendor/github.com/getkin/kin-openapi/openapi3/paths.go
deleted file mode 100644
index ac4f58bb..00000000
--- a/vendor/github.com/getkin/kin-openapi/openapi3/paths.go
+++ /dev/null
@@ -1,268 +0,0 @@
-package openapi3
-
-import (
-	"context"
-	"fmt"
-	"sort"
-	"strings"
-)
-
-// Paths is specified by OpenAPI/Swagger standard version 3.
-// See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#paths-object
-type Paths struct {
-	Extensions map[string]interface{} `json:"-" yaml:"-"`
-
-	m map[string]*PathItem
-}
-
-// NewPaths builds a paths object with path items in insertion order.
-func NewPaths(opts ...NewPathsOption) *Paths {
-	paths := NewPathsWithCapacity(len(opts))
-	for _, opt := range opts {
-		opt(paths)
-	}
-	return paths
-}
-
-// NewPathsOption describes options to NewPaths func
-type NewPathsOption func(*Paths)
-
-// WithPath adds a named path item
-func WithPath(path string, pathItem *PathItem) NewPathsOption {
-	return func(paths *Paths) {
-		if p := pathItem; p != nil && path != "" {
-			paths.Set(path, p)
-		}
-	}
-}
-
-// Validate returns an error if Paths does not comply with the OpenAPI spec.
-func (paths *Paths) Validate(ctx context.Context, opts ...ValidationOption) error {
-	ctx = WithValidationOptions(ctx, opts...)
-
-	normalizedPaths := make(map[string]string, paths.Len())
-
-	keys := make([]string, 0, paths.Len())
-	for key := range paths.Map() {
-		keys = append(keys, key)
-	}
-	sort.Strings(keys)
-	for _, path := range keys {
-		pathItem := paths.Value(path)
-		if path == "" || path[0] != '/' {
-			return fmt.Errorf("path %q does not start with a forward slash (/)", path)
-		}
-
-		if pathItem == nil {
-			pathItem = &PathItem{}
-			paths.Set(path, pathItem)
-		}
-
-		normalizedPath, _, varsInPath := normalizeTemplatedPath(path)
-		if oldPath, ok := normalizedPaths[normalizedPath]; ok {
-			return fmt.Errorf("conflicting paths %q and %q", path, oldPath)
-		}
-		normalizedPaths[path] = path
-
-		var commonParams []string
-		for _, parameterRef := range pathItem.Parameters {
-			if parameterRef != nil {
-				if parameter := parameterRef.Value; parameter != nil && parameter.In == ParameterInPath {
-					commonParams = append(commonParams, parameter.Name)
-				}
-			}
-		}
-		operations := pathItem.Operations()
-		methods := make([]string, 0, len(operations))
-		for method := range operations {
-			methods = append(methods, method)
-		}
-		sort.Strings(methods)
-		for _, method := range methods {
-			operation := operations[method]
-			var setParams []string
-			for _, parameterRef := range operation.Parameters {
-				if parameterRef != nil {
-					if parameter := parameterRef.Value; parameter != nil && parameter.In == ParameterInPath {
-						setParams = append(setParams, parameter.Name)
-					}
-				}
-			}
-			if expected := len(setParams) + len(commonParams); expected != len(varsInPath) {
-				expected -= len(varsInPath)
-				if expected < 0 {
-					expected *= -1
-				}
-				missing := make(map[string]struct{}, expected)
-				definedParams := append(setParams, commonParams...)
-				for _, name := range definedParams {
-					if _, ok := varsInPath[name]; !ok {
-						missing[name] = struct{}{}
-					}
-				}
-				for name := range varsInPath {
-					got := false
-					for _, othername := range definedParams {
-						if othername == name {
-							got = true
-							break
-						}
-					}
-					if !got {
-						missing[name] = struct{}{}
-					}
-				}
-				if len(missing) != 0 {
-					missings := make([]string, 0, len(missing))
-					for name := range missing {
-						missings = append(missings, name)
-					}
-					return fmt.Errorf("operation %s %s must define exactly all path parameters (missing: %v)", method, path, missings)
-				}
-			}
-		}
-
-		if err := pathItem.Validate(ctx); err != nil {
-			return fmt.Errorf("invalid path %s: %v", path, err)
-		}
-	}
-
-	if err := paths.validateUniqueOperationIDs(); err != nil {
-		return err
-	}
-
-	return validateExtensions(ctx, paths.Extensions)
-}
-
-// InMatchingOrder returns paths in the order they are matched against URLs.
-// See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#paths-object
-// When matching URLs, concrete (non-templated) paths would be matched
-// before their templated counterparts.
-func (paths *Paths) InMatchingOrder() []string {
-	// NOTE: sorting by number of variables ASC then by descending lexicographical
-	// order seems to be a good heuristic.
-	if paths.Len() == 0 {
-		return nil
-	}
-
-	vars := make(map[int][]string)
-	max := 0
-	for path := range paths.Map() {
-		count := strings.Count(path, "}")
-		vars[count] = append(vars[count], path)
-		if count > max {
-			max = count
-		}
-	}
-
-	ordered := make([]string, 0, paths.Len())
-	for c := 0; c <= max; c++ {
-		if ps, ok := vars[c]; ok {
-			sort.Sort(sort.Reverse(sort.StringSlice(ps)))
-			ordered = append(ordered, ps...)
-		}
-	}
-	return ordered
-}
-
-// Find returns a path that matches the key.
-//
-// The method ignores differences in template variable names (except possible "*" suffix).
-//
-// For example:
-//
-//	paths := openapi3.Paths {
-//	  "/person/{personName}": &openapi3.PathItem{},
-//	}
-//	pathItem := path.Find("/person/{name}")
-//
-// would return the correct path item.
-func (paths *Paths) Find(key string) *PathItem {
-	// Try directly access the map
-	pathItem := paths.Value(key)
-	if pathItem != nil {
-		return pathItem
-	}
-
-	normalizedPath, expected, _ := normalizeTemplatedPath(key)
-	for path, pathItem := range paths.Map() {
-		pathNormalized, got, _ := normalizeTemplatedPath(path)
-		if got == expected && pathNormalized == normalizedPath {
-			return pathItem
-		}
-	}
-	return nil
-}
-
-func (paths *Paths) validateUniqueOperationIDs() error {
-	operationIDs := make(map[string]string)
-	for urlPath, pathItem := range paths.Map() {
-		if pathItem == nil {
-			continue
-		}
-		for httpMethod, operation := range pathItem.Operations() {
-			if operation == nil || operation.OperationID == "" {
-				continue
-			}
-			endpoint := httpMethod + " " + urlPath
-			if endpointDup, ok := operationIDs[operation.OperationID]; ok {
-				if endpoint > endpointDup { // For make error message a bit more deterministic. May be useful for tests.
-					endpoint, endpointDup = endpointDup, endpoint
-				}
-				return fmt.Errorf("operations %q and %q have the same operation id %q",
-					endpoint, endpointDup, operation.OperationID)
-			}
-			operationIDs[operation.OperationID] = endpoint
-		}
-	}
-	return nil
-}
-
-func normalizeTemplatedPath(path string) (string, uint, map[string]struct{}) {
-	if strings.IndexByte(path, '{') < 0 {
-		return path, 0, nil
-	}
-
-	var buffTpl strings.Builder
-	buffTpl.Grow(len(path))
-
-	var (
-		cc         rune
-		count      uint
-		isVariable bool
-		vars       = make(map[string]struct{})
-		buffVar    strings.Builder
-	)
-	for i, c := range path {
-		if isVariable {
-			if c == '}' {
-				// End path variable
-				isVariable = false
-
-				vars[buffVar.String()] = struct{}{}
-				buffVar = strings.Builder{}
-
-				// First append possible '*' before this character
-				// The character '}' will be appended
-				if i > 0 && cc == '*' {
-					buffTpl.WriteRune(cc)
-				}
-			} else {
-				buffVar.WriteRune(c)
-				continue
-			}
-
-		} else if c == '{' {
-			// Begin path variable
-			isVariable = true
-
-			// The character '{' will be appended
-			count++
-		}
-
-		// Append the character
-		buffTpl.WriteRune(c)
-		cc = c
-	}
-	return buffTpl.String(), count, vars
-}
diff --git a/vendor/github.com/getkin/kin-openapi/openapi3/ref.go b/vendor/github.com/getkin/kin-openapi/openapi3/ref.go
deleted file mode 100644
index a937de4a..00000000
--- a/vendor/github.com/getkin/kin-openapi/openapi3/ref.go
+++ /dev/null
@@ -1,7 +0,0 @@
-package openapi3
-
-// Ref is specified by OpenAPI/Swagger 3.0 standard.
-// See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#reference-object
-type Ref struct {
-	Ref string `json:"$ref" yaml:"$ref"`
-}
diff --git a/vendor/github.com/getkin/kin-openapi/openapi3/refs.go b/vendor/github.com/getkin/kin-openapi/openapi3/refs.go
deleted file mode 100644
index a7e1e368..00000000
--- a/vendor/github.com/getkin/kin-openapi/openapi3/refs.go
+++ /dev/null
@@ -1,713 +0,0 @@
-package openapi3
-
-import (
-	"context"
-	"encoding/json"
-	"fmt"
-	"sort"
-
-	"github.com/go-openapi/jsonpointer"
-	"github.com/perimeterx/marshmallow"
-)
-
-// CallbackRef represents either a Callback or a $ref to a Callback.
-// When serializing and both fields are set, Ref is preferred over Value.
-type CallbackRef struct {
-	Ref   string
-	Value *Callback
-	extra []string
-}
-
-var _ jsonpointer.JSONPointable = (*CallbackRef)(nil)
-
-func (x *CallbackRef) isEmpty() bool { return x == nil || x.Ref == "" && x.Value == nil }
-
-// MarshalYAML returns the YAML encoding of CallbackRef.
-func (x CallbackRef) MarshalYAML() (interface{}, error) {
-	if ref := x.Ref; ref != "" {
-		return &Ref{Ref: ref}, nil
-	}
-	return x.Value, nil
-}
-
-// MarshalJSON returns the JSON encoding of CallbackRef.
-func (x CallbackRef) MarshalJSON() ([]byte, error) {
-	if ref := x.Ref; ref != "" {
-		return json.Marshal(Ref{Ref: ref})
-	}
-	return json.Marshal(x.Value)
-}
-
-// UnmarshalJSON sets CallbackRef to a copy of data.
-func (x *CallbackRef) UnmarshalJSON(data []byte) error {
-	var refOnly Ref
-	if extra, err := marshmallow.Unmarshal(data, &refOnly, marshmallow.WithExcludeKnownFieldsFromMap(true)); err == nil && refOnly.Ref != "" {
-		x.Ref = refOnly.Ref
-		if len(extra) != 0 {
-			x.extra = make([]string, 0, len(extra))
-			for key := range extra {
-				x.extra = append(x.extra, key)
-			}
-			sort.Strings(x.extra)
-		}
-		return nil
-	}
-	return json.Unmarshal(data, &x.Value)
-}
-
-// Validate returns an error if CallbackRef does not comply with the OpenAPI spec.
-func (x *CallbackRef) Validate(ctx context.Context, opts ...ValidationOption) error {
-	ctx = WithValidationOptions(ctx, opts...)
-	if extra := x.extra; len(extra) != 0 {
-		extras := make([]string, 0, len(extra))
-		allowed := getValidationOptions(ctx).extraSiblingFieldsAllowed
-		for _, ex := range extra {
-			if allowed != nil {
-				if _, ok := allowed[ex]; ok {
-					continue
-				}
-			}
-			extras = append(extras, ex)
-		}
-		if len(extras) != 0 {
-			return fmt.Errorf("extra sibling fields: %+v", extras)
-		}
-	}
-	if v := x.Value; v != nil {
-		return v.Validate(ctx)
-	}
-	return foundUnresolvedRef(x.Ref)
-}
-
-// JSONLookup implements https://pkg.go.dev/github.com/go-openapi/jsonpointer#JSONPointable
-func (x *CallbackRef) JSONLookup(token string) (interface{}, error) {
-	if token == "$ref" {
-		return x.Ref, nil
-	}
-	ptr, _, err := jsonpointer.GetForToken(x.Value, token)
-	return ptr, err
-}
-
-// ExampleRef represents either a Example or a $ref to a Example.
-// When serializing and both fields are set, Ref is preferred over Value.
-type ExampleRef struct {
-	Ref   string
-	Value *Example
-	extra []string
-}
-
-var _ jsonpointer.JSONPointable = (*ExampleRef)(nil)
-
-func (x *ExampleRef) isEmpty() bool { return x == nil || x.Ref == "" && x.Value == nil }
-
-// MarshalYAML returns the YAML encoding of ExampleRef.
-func (x ExampleRef) MarshalYAML() (interface{}, error) {
-	if ref := x.Ref; ref != "" {
-		return &Ref{Ref: ref}, nil
-	}
-	return x.Value, nil
-}
-
-// MarshalJSON returns the JSON encoding of ExampleRef.
-func (x ExampleRef) MarshalJSON() ([]byte, error) {
-	if ref := x.Ref; ref != "" {
-		return json.Marshal(Ref{Ref: ref})
-	}
-	return x.Value.MarshalJSON()
-}
-
-// UnmarshalJSON sets ExampleRef to a copy of data.
-func (x *ExampleRef) UnmarshalJSON(data []byte) error {
-	var refOnly Ref
-	if extra, err := marshmallow.Unmarshal(data, &refOnly, marshmallow.WithExcludeKnownFieldsFromMap(true)); err == nil && refOnly.Ref != "" {
-		x.Ref = refOnly.Ref
-		if len(extra) != 0 {
-			x.extra = make([]string, 0, len(extra))
-			for key := range extra {
-				x.extra = append(x.extra, key)
-			}
-			sort.Strings(x.extra)
-		}
-		return nil
-	}
-	return json.Unmarshal(data, &x.Value)
-}
-
-// Validate returns an error if ExampleRef does not comply with the OpenAPI spec.
-func (x *ExampleRef) Validate(ctx context.Context, opts ...ValidationOption) error {
-	ctx = WithValidationOptions(ctx, opts...)
-	if extra := x.extra; len(extra) != 0 {
-		extras := make([]string, 0, len(extra))
-		allowed := getValidationOptions(ctx).extraSiblingFieldsAllowed
-		for _, ex := range extra {
-			if allowed != nil {
-				if _, ok := allowed[ex]; ok {
-					continue
-				}
-			}
-			extras = append(extras, ex)
-		}
-		if len(extras) != 0 {
-			return fmt.Errorf("extra sibling fields: %+v", extras)
-		}
-	}
-	if v := x.Value; v != nil {
-		return v.Validate(ctx)
-	}
-	return foundUnresolvedRef(x.Ref)
-}
-
-// JSONLookup implements https://pkg.go.dev/github.com/go-openapi/jsonpointer#JSONPointable
-func (x *ExampleRef) JSONLookup(token string) (interface{}, error) {
-	if token == "$ref" {
-		return x.Ref, nil
-	}
-	ptr, _, err := jsonpointer.GetForToken(x.Value, token)
-	return ptr, err
-}
-
-// HeaderRef represents either a Header or a $ref to a Header.
-// When serializing and both fields are set, Ref is preferred over Value.
-type HeaderRef struct {
-	Ref   string
-	Value *Header
-	extra []string
-}
-
-var _ jsonpointer.JSONPointable = (*HeaderRef)(nil)
-
-func (x *HeaderRef) isEmpty() bool { return x == nil || x.Ref == "" && x.Value == nil }
-
-// MarshalYAML returns the YAML encoding of HeaderRef.
-func (x HeaderRef) MarshalYAML() (interface{}, error) {
-	if ref := x.Ref; ref != "" {
-		return &Ref{Ref: ref}, nil
-	}
-	return x.Value, nil
-}
-
-// MarshalJSON returns the JSON encoding of HeaderRef.
-func (x HeaderRef) MarshalJSON() ([]byte, error) {
-	if ref := x.Ref; ref != "" {
-		return json.Marshal(Ref{Ref: ref})
-	}
-	return x.Value.MarshalJSON()
-}
-
-// UnmarshalJSON sets HeaderRef to a copy of data.
-func (x *HeaderRef) UnmarshalJSON(data []byte) error {
-	var refOnly Ref
-	if extra, err := marshmallow.Unmarshal(data, &refOnly, marshmallow.WithExcludeKnownFieldsFromMap(true)); err == nil && refOnly.Ref != "" {
-		x.Ref = refOnly.Ref
-		if len(extra) != 0 {
-			x.extra = make([]string, 0, len(extra))
-			for key := range extra {
-				x.extra = append(x.extra, key)
-			}
-			sort.Strings(x.extra)
-		}
-		return nil
-	}
-	return json.Unmarshal(data, &x.Value)
-}
-
-// Validate returns an error if HeaderRef does not comply with the OpenAPI spec.
-func (x *HeaderRef) Validate(ctx context.Context, opts ...ValidationOption) error {
-	ctx = WithValidationOptions(ctx, opts...)
-	if extra := x.extra; len(extra) != 0 {
-		extras := make([]string, 0, len(extra))
-		allowed := getValidationOptions(ctx).extraSiblingFieldsAllowed
-		for _, ex := range extra {
-			if allowed != nil {
-				if _, ok := allowed[ex]; ok {
-					continue
-				}
-			}
-			extras = append(extras, ex)
-		}
-		if len(extras) != 0 {
-			return fmt.Errorf("extra sibling fields: %+v", extras)
-		}
-	}
-	if v := x.Value; v != nil {
-		return v.Validate(ctx)
-	}
-	return foundUnresolvedRef(x.Ref)
-}
-
-// JSONLookup implements https://pkg.go.dev/github.com/go-openapi/jsonpointer#JSONPointable
-func (x *HeaderRef) JSONLookup(token string) (interface{}, error) {
-	if token == "$ref" {
-		return x.Ref, nil
-	}
-	ptr, _, err := jsonpointer.GetForToken(x.Value, token)
-	return ptr, err
-}
-
-// LinkRef represents either a Link or a $ref to a Link.
-// When serializing and both fields are set, Ref is preferred over Value.
-type LinkRef struct {
-	Ref   string
-	Value *Link
-	extra []string
-}
-
-var _ jsonpointer.JSONPointable = (*LinkRef)(nil)
-
-func (x *LinkRef) isEmpty() bool { return x == nil || x.Ref == "" && x.Value == nil }
-
-// MarshalYAML returns the YAML encoding of LinkRef.
-func (x LinkRef) MarshalYAML() (interface{}, error) {
-	if ref := x.Ref; ref != "" {
-		return &Ref{Ref: ref}, nil
-	}
-	return x.Value, nil
-}
-
-// MarshalJSON returns the JSON encoding of LinkRef.
-func (x LinkRef) MarshalJSON() ([]byte, error) {
-	if ref := x.Ref; ref != "" {
-		return json.Marshal(Ref{Ref: ref})
-	}
-	return x.Value.MarshalJSON()
-}
-
-// UnmarshalJSON sets LinkRef to a copy of data.
-func (x *LinkRef) UnmarshalJSON(data []byte) error {
-	var refOnly Ref
-	if extra, err := marshmallow.Unmarshal(data, &refOnly, marshmallow.WithExcludeKnownFieldsFromMap(true)); err == nil && refOnly.Ref != "" {
-		x.Ref = refOnly.Ref
-		if len(extra) != 0 {
-			x.extra = make([]string, 0, len(extra))
-			for key := range extra {
-				x.extra = append(x.extra, key)
-			}
-			sort.Strings(x.extra)
-		}
-		return nil
-	}
-	return json.Unmarshal(data, &x.Value)
-}
-
-// Validate returns an error if LinkRef does not comply with the OpenAPI spec.
-func (x *LinkRef) Validate(ctx context.Context, opts ...ValidationOption) error {
-	ctx = WithValidationOptions(ctx, opts...)
-	if extra := x.extra; len(extra) != 0 {
-		extras := make([]string, 0, len(extra))
-		allowed := getValidationOptions(ctx).extraSiblingFieldsAllowed
-		for _, ex := range extra {
-			if allowed != nil {
-				if _, ok := allowed[ex]; ok {
-					continue
-				}
-			}
-			extras = append(extras, ex)
-		}
-		if len(extras) != 0 {
-			return fmt.Errorf("extra sibling fields: %+v", extras)
-		}
-	}
-	if v := x.Value; v != nil {
-		return v.Validate(ctx)
-	}
-	return foundUnresolvedRef(x.Ref)
-}
-
-// JSONLookup implements https://pkg.go.dev/github.com/go-openapi/jsonpointer#JSONPointable
-func (x *LinkRef) JSONLookup(token string) (interface{}, error) {
-	if token == "$ref" {
-		return x.Ref, nil
-	}
-	ptr, _, err := jsonpointer.GetForToken(x.Value, token)
-	return ptr, err
-}
-
-// ParameterRef represents either a Parameter or a $ref to a Parameter.
-// When serializing and both fields are set, Ref is preferred over Value.
-type ParameterRef struct {
-	Ref   string
-	Value *Parameter
-	extra []string
-}
-
-var _ jsonpointer.JSONPointable = (*ParameterRef)(nil)
-
-func (x *ParameterRef) isEmpty() bool { return x == nil || x.Ref == "" && x.Value == nil }
-
-// MarshalYAML returns the YAML encoding of ParameterRef.
-func (x ParameterRef) MarshalYAML() (interface{}, error) {
-	if ref := x.Ref; ref != "" {
-		return &Ref{Ref: ref}, nil
-	}
-	return x.Value, nil
-}
-
-// MarshalJSON returns the JSON encoding of ParameterRef.
-func (x ParameterRef) MarshalJSON() ([]byte, error) {
-	if ref := x.Ref; ref != "" {
-		return json.Marshal(Ref{Ref: ref})
-	}
-	return x.Value.MarshalJSON()
-}
-
-// UnmarshalJSON sets ParameterRef to a copy of data.
-func (x *ParameterRef) UnmarshalJSON(data []byte) error {
-	var refOnly Ref
-	if extra, err := marshmallow.Unmarshal(data, &refOnly, marshmallow.WithExcludeKnownFieldsFromMap(true)); err == nil && refOnly.Ref != "" {
-		x.Ref = refOnly.Ref
-		if len(extra) != 0 {
-			x.extra = make([]string, 0, len(extra))
-			for key := range extra {
-				x.extra = append(x.extra, key)
-			}
-			sort.Strings(x.extra)
-		}
-		return nil
-	}
-	return json.Unmarshal(data, &x.Value)
-}
-
-// Validate returns an error if ParameterRef does not comply with the OpenAPI spec.
-func (x *ParameterRef) Validate(ctx context.Context, opts ...ValidationOption) error {
-	ctx = WithValidationOptions(ctx, opts...)
-	if extra := x.extra; len(extra) != 0 {
-		extras := make([]string, 0, len(extra))
-		allowed := getValidationOptions(ctx).extraSiblingFieldsAllowed
-		for _, ex := range extra {
-			if allowed != nil {
-				if _, ok := allowed[ex]; ok {
-					continue
-				}
-			}
-			extras = append(extras, ex)
-		}
-		if len(extras) != 0 {
-			return fmt.Errorf("extra sibling fields: %+v", extras)
-		}
-	}
-	if v := x.Value; v != nil {
-		return v.Validate(ctx)
-	}
-	return foundUnresolvedRef(x.Ref)
-}
-
-// JSONLookup implements https://pkg.go.dev/github.com/go-openapi/jsonpointer#JSONPointable
-func (x *ParameterRef) JSONLookup(token string) (interface{}, error) {
-	if token == "$ref" {
-		return x.Ref, nil
-	}
-	ptr, _, err := jsonpointer.GetForToken(x.Value, token)
-	return ptr, err
-}
-
-// RequestBodyRef represents either a RequestBody or a $ref to a RequestBody.
-// When serializing and both fields are set, Ref is preferred over Value.
-type RequestBodyRef struct {
-	Ref   string
-	Value *RequestBody
-	extra []string
-}
-
-var _ jsonpointer.JSONPointable = (*RequestBodyRef)(nil)
-
-func (x *RequestBodyRef) isEmpty() bool { return x == nil || x.Ref == "" && x.Value == nil }
-
-// MarshalYAML returns the YAML encoding of RequestBodyRef.
-func (x RequestBodyRef) MarshalYAML() (interface{}, error) {
-	if ref := x.Ref; ref != "" {
-		return &Ref{Ref: ref}, nil
-	}
-	return x.Value, nil
-}
-
-// MarshalJSON returns the JSON encoding of RequestBodyRef.
-func (x RequestBodyRef) MarshalJSON() ([]byte, error) {
-	if ref := x.Ref; ref != "" {
-		return json.Marshal(Ref{Ref: ref})
-	}
-	return x.Value.MarshalJSON()
-}
-
-// UnmarshalJSON sets RequestBodyRef to a copy of data.
-func (x *RequestBodyRef) UnmarshalJSON(data []byte) error {
-	var refOnly Ref
-	if extra, err := marshmallow.Unmarshal(data, &refOnly, marshmallow.WithExcludeKnownFieldsFromMap(true)); err == nil && refOnly.Ref != "" {
-		x.Ref = refOnly.Ref
-		if len(extra) != 0 {
-			x.extra = make([]string, 0, len(extra))
-			for key := range extra {
-				x.extra = append(x.extra, key)
-			}
-			sort.Strings(x.extra)
-		}
-		return nil
-	}
-	return json.Unmarshal(data, &x.Value)
-}
-
-// Validate returns an error if RequestBodyRef does not comply with the OpenAPI spec.
-func (x *RequestBodyRef) Validate(ctx context.Context, opts ...ValidationOption) error {
-	ctx = WithValidationOptions(ctx, opts...)
-	if extra := x.extra; len(extra) != 0 {
-		extras := make([]string, 0, len(extra))
-		allowed := getValidationOptions(ctx).extraSiblingFieldsAllowed
-		for _, ex := range extra {
-			if allowed != nil {
-				if _, ok := allowed[ex]; ok {
-					continue
-				}
-			}
-			extras = append(extras, ex)
-		}
-		if len(extras) != 0 {
-			return fmt.Errorf("extra sibling fields: %+v", extras)
-		}
-	}
-	if v := x.Value; v != nil {
-		return v.Validate(ctx)
-	}
-	return foundUnresolvedRef(x.Ref)
-}
-
-// JSONLookup implements https://pkg.go.dev/github.com/go-openapi/jsonpointer#JSONPointable
-func (x *RequestBodyRef) JSONLookup(token string) (interface{}, error) {
-	if token == "$ref" {
-		return x.Ref, nil
-	}
-	ptr, _, err := jsonpointer.GetForToken(x.Value, token)
-	return ptr, err
-}
-
-// ResponseRef represents either a Response or a $ref to a Response.
-// When serializing and both fields are set, Ref is preferred over Value.
-type ResponseRef struct {
-	Ref   string
-	Value *Response
-	extra []string
-}
-
-var _ jsonpointer.JSONPointable = (*ResponseRef)(nil)
-
-func (x *ResponseRef) isEmpty() bool { return x == nil || x.Ref == "" && x.Value == nil }
-
-// MarshalYAML returns the YAML encoding of ResponseRef.
-func (x ResponseRef) MarshalYAML() (interface{}, error) {
-	if ref := x.Ref; ref != "" {
-		return &Ref{Ref: ref}, nil
-	}
-	return x.Value, nil
-}
-
-// MarshalJSON returns the JSON encoding of ResponseRef.
-func (x ResponseRef) MarshalJSON() ([]byte, error) {
-	if ref := x.Ref; ref != "" {
-		return json.Marshal(Ref{Ref: ref})
-	}
-	return x.Value.MarshalJSON()
-}
-
-// UnmarshalJSON sets ResponseRef to a copy of data.
-func (x *ResponseRef) UnmarshalJSON(data []byte) error {
-	var refOnly Ref
-	if extra, err := marshmallow.Unmarshal(data, &refOnly, marshmallow.WithExcludeKnownFieldsFromMap(true)); err == nil && refOnly.Ref != "" {
-		x.Ref = refOnly.Ref
-		if len(extra) != 0 {
-			x.extra = make([]string, 0, len(extra))
-			for key := range extra {
-				x.extra = append(x.extra, key)
-			}
-			sort.Strings(x.extra)
-		}
-		return nil
-	}
-	return json.Unmarshal(data, &x.Value)
-}
-
-// Validate returns an error if ResponseRef does not comply with the OpenAPI spec.
-func (x *ResponseRef) Validate(ctx context.Context, opts ...ValidationOption) error {
-	ctx = WithValidationOptions(ctx, opts...)
-	if extra := x.extra; len(extra) != 0 {
-		extras := make([]string, 0, len(extra))
-		allowed := getValidationOptions(ctx).extraSiblingFieldsAllowed
-		for _, ex := range extra {
-			if allowed != nil {
-				if _, ok := allowed[ex]; ok {
-					continue
-				}
-			}
-			extras = append(extras, ex)
-		}
-		if len(extras) != 0 {
-			return fmt.Errorf("extra sibling fields: %+v", extras)
-		}
-	}
-	if v := x.Value; v != nil {
-		return v.Validate(ctx)
-	}
-	return foundUnresolvedRef(x.Ref)
-}
-
-// JSONLookup implements https://pkg.go.dev/github.com/go-openapi/jsonpointer#JSONPointable
-func (x *ResponseRef) JSONLookup(token string) (interface{}, error) {
-	if token == "$ref" {
-		return x.Ref, nil
-	}
-	ptr, _, err := jsonpointer.GetForToken(x.Value, token)
-	return ptr, err
-}
-
-// SchemaRef represents either a Schema or a $ref to a Schema.
-// When serializing and both fields are set, Ref is preferred over Value.
-type SchemaRef struct {
-	Ref   string
-	Value *Schema
-	extra []string
-}
-
-var _ jsonpointer.JSONPointable = (*SchemaRef)(nil)
-
-func (x *SchemaRef) isEmpty() bool { return x == nil || x.Ref == "" && x.Value == nil }
-
-// MarshalYAML returns the YAML encoding of SchemaRef.
-func (x SchemaRef) MarshalYAML() (interface{}, error) {
-	if ref := x.Ref; ref != "" {
-		return &Ref{Ref: ref}, nil
-	}
-	return x.Value, nil
-}
-
-// MarshalJSON returns the JSON encoding of SchemaRef.
-func (x SchemaRef) MarshalJSON() ([]byte, error) {
-	if ref := x.Ref; ref != "" {
-		return json.Marshal(Ref{Ref: ref})
-	}
-	return x.Value.MarshalJSON()
-}
-
-// UnmarshalJSON sets SchemaRef to a copy of data.
-func (x *SchemaRef) UnmarshalJSON(data []byte) error {
-	var refOnly Ref
-	if extra, err := marshmallow.Unmarshal(data, &refOnly, marshmallow.WithExcludeKnownFieldsFromMap(true)); err == nil && refOnly.Ref != "" {
-		x.Ref = refOnly.Ref
-		if len(extra) != 0 {
-			x.extra = make([]string, 0, len(extra))
-			for key := range extra {
-				x.extra = append(x.extra, key)
-			}
-			sort.Strings(x.extra)
-		}
-		return nil
-	}
-	return json.Unmarshal(data, &x.Value)
-}
-
-// Validate returns an error if SchemaRef does not comply with the OpenAPI spec.
-func (x *SchemaRef) Validate(ctx context.Context, opts ...ValidationOption) error {
-	ctx = WithValidationOptions(ctx, opts...)
-	if extra := x.extra; len(extra) != 0 {
-		extras := make([]string, 0, len(extra))
-		allowed := getValidationOptions(ctx).extraSiblingFieldsAllowed
-		for _, ex := range extra {
-			if allowed != nil {
-				if _, ok := allowed[ex]; ok {
-					continue
-				}
-			}
-			extras = append(extras, ex)
-		}
-		if len(extras) != 0 {
-			return fmt.Errorf("extra sibling fields: %+v", extras)
-		}
-	}
-	if v := x.Value; v != nil {
-		return v.Validate(ctx)
-	}
-	return foundUnresolvedRef(x.Ref)
-}
-
-// JSONLookup implements https://pkg.go.dev/github.com/go-openapi/jsonpointer#JSONPointable
-func (x *SchemaRef) JSONLookup(token string) (interface{}, error) {
-	if token == "$ref" {
-		return x.Ref, nil
-	}
-	ptr, _, err := jsonpointer.GetForToken(x.Value, token)
-	return ptr, err
-}
-
-// SecuritySchemeRef represents either a SecurityScheme or a $ref to a SecurityScheme.
-// When serializing and both fields are set, Ref is preferred over Value.
-type SecuritySchemeRef struct {
-	Ref   string
-	Value *SecurityScheme
-	extra []string
-}
-
-var _ jsonpointer.JSONPointable = (*SecuritySchemeRef)(nil)
-
-func (x *SecuritySchemeRef) isEmpty() bool { return x == nil || x.Ref == "" && x.Value == nil }
-
-// MarshalYAML returns the YAML encoding of SecuritySchemeRef.
-func (x SecuritySchemeRef) MarshalYAML() (interface{}, error) {
-	if ref := x.Ref; ref != "" {
-		return &Ref{Ref: ref}, nil
-	}
-	return x.Value, nil
-}
-
-// MarshalJSON returns the JSON encoding of SecuritySchemeRef.
-func (x SecuritySchemeRef) MarshalJSON() ([]byte, error) {
-	if ref := x.Ref; ref != "" {
-		return json.Marshal(Ref{Ref: ref})
-	}
-	return x.Value.MarshalJSON()
-}
-
-// UnmarshalJSON sets SecuritySchemeRef to a copy of data.
-func (x *SecuritySchemeRef) UnmarshalJSON(data []byte) error {
-	var refOnly Ref
-	if extra, err := marshmallow.Unmarshal(data, &refOnly, marshmallow.WithExcludeKnownFieldsFromMap(true)); err == nil && refOnly.Ref != "" {
-		x.Ref = refOnly.Ref
-		if len(extra) != 0 {
-			x.extra = make([]string, 0, len(extra))
-			for key := range extra {
-				x.extra = append(x.extra, key)
-			}
-			sort.Strings(x.extra)
-		}
-		return nil
-	}
-	return json.Unmarshal(data, &x.Value)
-}
-
-// Validate returns an error if SecuritySchemeRef does not comply with the OpenAPI spec.
-func (x *SecuritySchemeRef) Validate(ctx context.Context, opts ...ValidationOption) error {
-	ctx = WithValidationOptions(ctx, opts...)
-	if extra := x.extra; len(extra) != 0 {
-		extras := make([]string, 0, len(extra))
-		allowed := getValidationOptions(ctx).extraSiblingFieldsAllowed
-		for _, ex := range extra {
-			if allowed != nil {
-				if _, ok := allowed[ex]; ok {
-					continue
-				}
-			}
-			extras = append(extras, ex)
-		}
-		if len(extras) != 0 {
-			return fmt.Errorf("extra sibling fields: %+v", extras)
-		}
-	}
-	if v := x.Value; v != nil {
-		return v.Validate(ctx)
-	}
-	return foundUnresolvedRef(x.Ref)
-}
-
-// JSONLookup implements https://pkg.go.dev/github.com/go-openapi/jsonpointer#JSONPointable
-func (x *SecuritySchemeRef) JSONLookup(token string) (interface{}, error) {
-	if token == "$ref" {
-		return x.Ref, nil
-	}
-	ptr, _, err := jsonpointer.GetForToken(x.Value, token)
-	return ptr, err
-}
diff --git a/vendor/github.com/getkin/kin-openapi/openapi3/request_body.go b/vendor/github.com/getkin/kin-openapi/openapi3/request_body.go
deleted file mode 100644
index acd2d0e8..00000000
--- a/vendor/github.com/getkin/kin-openapi/openapi3/request_body.go
+++ /dev/null
@@ -1,129 +0,0 @@
-package openapi3
-
-import (
-	"context"
-	"encoding/json"
-	"errors"
-)
-
-// RequestBody is specified by OpenAPI/Swagger 3.0 standard.
-// See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#request-body-object
-type RequestBody struct {
-	Extensions map[string]interface{} `json:"-" yaml:"-"`
-
-	Description string  `json:"description,omitempty" yaml:"description,omitempty"`
-	Required    bool    `json:"required,omitempty" yaml:"required,omitempty"`
-	Content     Content `json:"content" yaml:"content"`
-}
-
-func NewRequestBody() *RequestBody {
-	return &RequestBody{}
-}
-
-func (requestBody *RequestBody) WithDescription(value string) *RequestBody {
-	requestBody.Description = value
-	return requestBody
-}
-
-func (requestBody *RequestBody) WithRequired(value bool) *RequestBody {
-	requestBody.Required = value
-	return requestBody
-}
-
-func (requestBody *RequestBody) WithContent(content Content) *RequestBody {
-	requestBody.Content = content
-	return requestBody
-}
-
-func (requestBody *RequestBody) WithSchemaRef(value *SchemaRef, consumes []string) *RequestBody {
-	requestBody.Content = NewContentWithSchemaRef(value, consumes)
-	return requestBody
-}
-
-func (requestBody *RequestBody) WithSchema(value *Schema, consumes []string) *RequestBody {
-	requestBody.Content = NewContentWithSchema(value, consumes)
-	return requestBody
-}
-
-func (requestBody *RequestBody) WithJSONSchemaRef(value *SchemaRef) *RequestBody {
-	requestBody.Content = NewContentWithJSONSchemaRef(value)
-	return requestBody
-}
-
-func (requestBody *RequestBody) WithJSONSchema(value *Schema) *RequestBody {
-	requestBody.Content = NewContentWithJSONSchema(value)
-	return requestBody
-}
-
-func (requestBody *RequestBody) WithFormDataSchemaRef(value *SchemaRef) *RequestBody {
-	requestBody.Content = NewContentWithFormDataSchemaRef(value)
-	return requestBody
-}
-
-func (requestBody *RequestBody) WithFormDataSchema(value *Schema) *RequestBody {
-	requestBody.Content = NewContentWithFormDataSchema(value)
-	return requestBody
-}
-
-func (requestBody *RequestBody) GetMediaType(mediaType string) *MediaType {
-	m := requestBody.Content
-	if m == nil {
-		return nil
-	}
-	return m[mediaType]
-}
-
-// MarshalJSON returns the JSON encoding of RequestBody.
-func (requestBody RequestBody) MarshalJSON() ([]byte, error) {
-	m := make(map[string]interface{}, 3+len(requestBody.Extensions))
-	for k, v := range requestBody.Extensions {
-		m[k] = v
-	}
-	if x := requestBody.Description; x != "" {
-		m["description"] = requestBody.Description
-	}
-	if x := requestBody.Required; x {
-		m["required"] = x
-	}
-	if x := requestBody.Content; true {
-		m["content"] = x
-	}
-	return json.Marshal(m)
-}
-
-// UnmarshalJSON sets RequestBody to a copy of data.
-func (requestBody *RequestBody) UnmarshalJSON(data []byte) error {
-	type RequestBodyBis RequestBody
-	var x RequestBodyBis
-	if err := json.Unmarshal(data, &x); err != nil {
-		return unmarshalError(err)
-	}
-	_ = json.Unmarshal(data, &x.Extensions)
-	delete(x.Extensions, "description")
-	delete(x.Extensions, "required")
-	delete(x.Extensions, "content")
-	if len(x.Extensions) == 0 {
-		x.Extensions = nil
-	}
-	*requestBody = RequestBody(x)
-	return nil
-}
-
-// Validate returns an error if RequestBody does not comply with the OpenAPI spec.
-func (requestBody *RequestBody) Validate(ctx context.Context, opts ...ValidationOption) error {
-	ctx = WithValidationOptions(ctx, opts...)
-
-	if requestBody.Content == nil {
-		return errors.New("content of the request body is required")
-	}
-
-	if vo := getValidationOptions(ctx); !vo.examplesValidationDisabled {
-		vo.examplesValidationAsReq, vo.examplesValidationAsRes = true, false
-	}
-
-	if err := requestBody.Content.Validate(ctx); err != nil {
-		return err
-	}
-
-	return validateExtensions(ctx, requestBody.Extensions)
-}
diff --git a/vendor/github.com/getkin/kin-openapi/openapi3/response.go b/vendor/github.com/getkin/kin-openapi/openapi3/response.go
deleted file mode 100644
index d8b04725..00000000
--- a/vendor/github.com/getkin/kin-openapi/openapi3/response.go
+++ /dev/null
@@ -1,218 +0,0 @@
-package openapi3
-
-import (
-	"context"
-	"encoding/json"
-	"errors"
-	"sort"
-	"strconv"
-)
-
-// Responses is specified by OpenAPI/Swagger 3.0 standard.
-// See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#responses-object
-type Responses struct {
-	Extensions map[string]interface{} `json:"-" yaml:"-"`
-
-	m map[string]*ResponseRef
-}
-
-// NewResponses builds a responses object with response objects in insertion order.
-// Given no arguments, NewResponses returns a valid responses object containing a default match-all reponse.
-func NewResponses(opts ...NewResponsesOption) *Responses {
-	if len(opts) == 0 {
-		return NewResponses(WithName("default", NewResponse().WithDescription("")))
-	}
-	responses := NewResponsesWithCapacity(len(opts))
-	for _, opt := range opts {
-		opt(responses)
-	}
-	return responses
-}
-
-// NewResponsesOption describes options to NewResponses func
-type NewResponsesOption func(*Responses)
-
-// WithStatus adds a status code keyed ResponseRef
-func WithStatus(status int, responseRef *ResponseRef) NewResponsesOption {
-	return func(responses *Responses) {
-		if r := responseRef; r != nil {
-			code := strconv.FormatInt(int64(status), 10)
-			responses.Set(code, r)
-		}
-	}
-}
-
-// WithName adds a name-keyed Response
-func WithName(name string, response *Response) NewResponsesOption {
-	return func(responses *Responses) {
-		if r := response; r != nil && name != "" {
-			responses.Set(name, &ResponseRef{Value: r})
-		}
-	}
-}
-
-// Default returns the default response
-func (responses *Responses) Default() *ResponseRef {
-	return responses.Value("default")
-}
-
-// Status returns a ResponseRef for the given status
-// If an exact match isn't initially found a patterned field is checked using
-// the first digit to determine the range (eg: 201 to 2XX)
-// See https://spec.openapis.org/oas/v3.0.3#patterned-fields-0
-func (responses *Responses) Status(status int) *ResponseRef {
-	st := strconv.FormatInt(int64(status), 10)
-	if rref := responses.Value(st); rref != nil {
-		return rref
-	}
-	if 99 < status && status < 600 {
-		st = string(st[0]) + "XX"
-		switch st {
-		case "1XX", "2XX", "3XX", "4XX", "5XX":
-			return responses.Value(st)
-		}
-	}
-	return nil
-}
-
-// Validate returns an error if Responses does not comply with the OpenAPI spec.
-func (responses *Responses) Validate(ctx context.Context, opts ...ValidationOption) error {
-	ctx = WithValidationOptions(ctx, opts...)
-
-	if responses.Len() == 0 {
-		return errors.New("the responses object MUST contain at least one response code")
-	}
-
-	keys := make([]string, 0, responses.Len())
-	for key := range responses.Map() {
-		keys = append(keys, key)
-	}
-	sort.Strings(keys)
-	for _, key := range keys {
-		v := responses.Value(key)
-		if err := v.Validate(ctx); err != nil {
-			return err
-		}
-	}
-
-	return validateExtensions(ctx, responses.Extensions)
-}
-
-// Response is specified by OpenAPI/Swagger 3.0 standard.
-// See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#response-object
-type Response struct {
-	Extensions map[string]interface{} `json:"-" yaml:"-"`
-
-	Description *string `json:"description,omitempty" yaml:"description,omitempty"`
-	Headers     Headers `json:"headers,omitempty" yaml:"headers,omitempty"`
-	Content     Content `json:"content,omitempty" yaml:"content,omitempty"`
-	Links       Links   `json:"links,omitempty" yaml:"links,omitempty"`
-}
-
-func NewResponse() *Response {
-	return &Response{}
-}
-
-func (response *Response) WithDescription(value string) *Response {
-	response.Description = &value
-	return response
-}
-
-func (response *Response) WithContent(content Content) *Response {
-	response.Content = content
-	return response
-}
-
-func (response *Response) WithJSONSchema(schema *Schema) *Response {
-	response.Content = NewContentWithJSONSchema(schema)
-	return response
-}
-
-func (response *Response) WithJSONSchemaRef(schema *SchemaRef) *Response {
-	response.Content = NewContentWithJSONSchemaRef(schema)
-	return response
-}
-
-// MarshalJSON returns the JSON encoding of Response.
-func (response Response) MarshalJSON() ([]byte, error) {
-	m := make(map[string]interface{}, 4+len(response.Extensions))
-	for k, v := range response.Extensions {
-		m[k] = v
-	}
-	if x := response.Description; x != nil {
-		m["description"] = x
-	}
-	if x := response.Headers; len(x) != 0 {
-		m["headers"] = x
-	}
-	if x := response.Content; len(x) != 0 {
-		m["content"] = x
-	}
-	if x := response.Links; len(x) != 0 {
-		m["links"] = x
-	}
-	return json.Marshal(m)
-}
-
-// UnmarshalJSON sets Response to a copy of data.
-func (response *Response) UnmarshalJSON(data []byte) error {
-	type ResponseBis Response
-	var x ResponseBis
-	if err := json.Unmarshal(data, &x); err != nil {
-		return unmarshalError(err)
-	}
-	_ = json.Unmarshal(data, &x.Extensions)
-	delete(x.Extensions, "description")
-	delete(x.Extensions, "headers")
-	delete(x.Extensions, "content")
-	delete(x.Extensions, "links")
-	if len(x.Extensions) == 0 {
-		x.Extensions = nil
-	}
-	*response = Response(x)
-	return nil
-}
-
-// Validate returns an error if Response does not comply with the OpenAPI spec.
-func (response *Response) Validate(ctx context.Context, opts ...ValidationOption) error {
-	ctx = WithValidationOptions(ctx, opts...)
-
-	if response.Description == nil {
-		return errors.New("a short description of the response is required")
-	}
-	if vo := getValidationOptions(ctx); !vo.examplesValidationDisabled {
-		vo.examplesValidationAsReq, vo.examplesValidationAsRes = false, true
-	}
-
-	if content := response.Content; content != nil {
-		if err := content.Validate(ctx); err != nil {
-			return err
-		}
-	}
-
-	headers := make([]string, 0, len(response.Headers))
-	for name := range response.Headers {
-		headers = append(headers, name)
-	}
-	sort.Strings(headers)
-	for _, name := range headers {
-		header := response.Headers[name]
-		if err := header.Validate(ctx); err != nil {
-			return err
-		}
-	}
-
-	links := make([]string, 0, len(response.Links))
-	for name := range response.Links {
-		links = append(links, name)
-	}
-	sort.Strings(links)
-	for _, name := range links {
-		link := response.Links[name]
-		if err := link.Validate(ctx); err != nil {
-			return err
-		}
-	}
-
-	return validateExtensions(ctx, response.Extensions)
-}
diff --git a/vendor/github.com/getkin/kin-openapi/openapi3/schema.go b/vendor/github.com/getkin/kin-openapi/openapi3/schema.go
deleted file mode 100644
index e8630b3c..00000000
--- a/vendor/github.com/getkin/kin-openapi/openapi3/schema.go
+++ /dev/null
@@ -1,2139 +0,0 @@
-package openapi3
-
-import (
-	"bytes"
-	"context"
-	"encoding/json"
-	"errors"
-	"fmt"
-	"math"
-	"math/big"
-	"reflect"
-	"regexp"
-	"sort"
-	"strconv"
-	"strings"
-	"sync"
-	"unicode/utf16"
-
-	"github.com/go-openapi/jsonpointer"
-	"github.com/mohae/deepcopy"
-)
-
-const (
-	TypeArray   = "array"
-	TypeBoolean = "boolean"
-	TypeInteger = "integer"
-	TypeNumber  = "number"
-	TypeObject  = "object"
-	TypeString  = "string"
-
-	// constants for integer formats
-	formatMinInt32 = float64(math.MinInt32)
-	formatMaxInt32 = float64(math.MaxInt32)
-	formatMinInt64 = float64(math.MinInt64)
-	formatMaxInt64 = float64(math.MaxInt64)
-)
-
-var (
-	// SchemaErrorDetailsDisabled disables printing of details about schema errors.
-	SchemaErrorDetailsDisabled = false
-
-	errSchema = errors.New("input does not match the schema")
-
-	// ErrOneOfConflict is the SchemaError Origin when data matches more than one oneOf schema
-	ErrOneOfConflict = errors.New("input matches more than one oneOf schemas")
-
-	// ErrSchemaInputNaN may be returned when validating a number
-	ErrSchemaInputNaN = errors.New("floating point NaN is not allowed")
-	// ErrSchemaInputInf may be returned when validating a number
-	ErrSchemaInputInf = errors.New("floating point Inf is not allowed")
-
-	compiledPatterns sync.Map
-)
-
-// NewSchemaRef simply builds a SchemaRef
-func NewSchemaRef(ref string, value *Schema) *SchemaRef {
-	return &SchemaRef{
-		Ref:   ref,
-		Value: value,
-	}
-}
-
-type SchemaRefs []*SchemaRef
-
-var _ jsonpointer.JSONPointable = (*SchemaRefs)(nil)
-
-// JSONLookup implements https://pkg.go.dev/github.com/go-openapi/jsonpointer#JSONPointable
-func (s SchemaRefs) JSONLookup(token string) (interface{}, error) {
-	i, err := strconv.ParseUint(token, 10, 64)
-	if err != nil {
-		return nil, err
-	}
-
-	if i >= uint64(len(s)) {
-		return nil, fmt.Errorf("index out of range: %d", i)
-	}
-
-	ref := s[i]
-
-	if ref == nil || ref.Ref != "" {
-		return &Ref{Ref: ref.Ref}, nil
-	}
-	return ref.Value, nil
-}
-
-// Schema is specified by OpenAPI/Swagger 3.0 standard.
-// See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#schema-object
-type Schema struct {
-	Extensions map[string]interface{} `json:"-" yaml:"-"`
-
-	OneOf        SchemaRefs    `json:"oneOf,omitempty" yaml:"oneOf,omitempty"`
-	AnyOf        SchemaRefs    `json:"anyOf,omitempty" yaml:"anyOf,omitempty"`
-	AllOf        SchemaRefs    `json:"allOf,omitempty" yaml:"allOf,omitempty"`
-	Not          *SchemaRef    `json:"not,omitempty" yaml:"not,omitempty"`
-	Type         string        `json:"type,omitempty" yaml:"type,omitempty"`
-	Title        string        `json:"title,omitempty" yaml:"title,omitempty"`
-	Format       string        `json:"format,omitempty" yaml:"format,omitempty"`
-	Description  string        `json:"description,omitempty" yaml:"description,omitempty"`
-	Enum         []interface{} `json:"enum,omitempty" yaml:"enum,omitempty"`
-	Default      interface{}   `json:"default,omitempty" yaml:"default,omitempty"`
-	Example      interface{}   `json:"example,omitempty" yaml:"example,omitempty"`
-	ExternalDocs *ExternalDocs `json:"externalDocs,omitempty" yaml:"externalDocs,omitempty"`
-
-	// Array-related, here for struct compactness
-	UniqueItems bool `json:"uniqueItems,omitempty" yaml:"uniqueItems,omitempty"`
-	// Number-related, here for struct compactness
-	ExclusiveMin bool `json:"exclusiveMinimum,omitempty" yaml:"exclusiveMinimum,omitempty"`
-	ExclusiveMax bool `json:"exclusiveMaximum,omitempty" yaml:"exclusiveMaximum,omitempty"`
-	// Properties
-	Nullable        bool `json:"nullable,omitempty" yaml:"nullable,omitempty"`
-	ReadOnly        bool `json:"readOnly,omitempty" yaml:"readOnly,omitempty"`
-	WriteOnly       bool `json:"writeOnly,omitempty" yaml:"writeOnly,omitempty"`
-	AllowEmptyValue bool `json:"allowEmptyValue,omitempty" yaml:"allowEmptyValue,omitempty"`
-	Deprecated      bool `json:"deprecated,omitempty" yaml:"deprecated,omitempty"`
-	XML             *XML `json:"xml,omitempty" yaml:"xml,omitempty"`
-
-	// Number
-	Min        *float64 `json:"minimum,omitempty" yaml:"minimum,omitempty"`
-	Max        *float64 `json:"maximum,omitempty" yaml:"maximum,omitempty"`
-	MultipleOf *float64 `json:"multipleOf,omitempty" yaml:"multipleOf,omitempty"`
-
-	// String
-	MinLength uint64  `json:"minLength,omitempty" yaml:"minLength,omitempty"`
-	MaxLength *uint64 `json:"maxLength,omitempty" yaml:"maxLength,omitempty"`
-	Pattern   string  `json:"pattern,omitempty" yaml:"pattern,omitempty"`
-
-	// Array
-	MinItems uint64     `json:"minItems,omitempty" yaml:"minItems,omitempty"`
-	MaxItems *uint64    `json:"maxItems,omitempty" yaml:"maxItems,omitempty"`
-	Items    *SchemaRef `json:"items,omitempty" yaml:"items,omitempty"`
-
-	// Object
-	Required             []string             `json:"required,omitempty" yaml:"required,omitempty"`
-	Properties           Schemas              `json:"properties,omitempty" yaml:"properties,omitempty"`
-	MinProps             uint64               `json:"minProperties,omitempty" yaml:"minProperties,omitempty"`
-	MaxProps             *uint64              `json:"maxProperties,omitempty" yaml:"maxProperties,omitempty"`
-	AdditionalProperties AdditionalProperties `json:"additionalProperties,omitempty" yaml:"additionalProperties,omitempty"`
-	Discriminator        *Discriminator       `json:"discriminator,omitempty" yaml:"discriminator,omitempty"`
-}
-
-type AdditionalProperties struct {
-	Has    *bool
-	Schema *SchemaRef
-}
-
-// MarshalJSON returns the JSON encoding of AdditionalProperties.
-func (addProps AdditionalProperties) MarshalJSON() ([]byte, error) {
-	if x := addProps.Has; x != nil {
-		if *x {
-			return []byte("true"), nil
-		}
-		return []byte("false"), nil
-	}
-	if x := addProps.Schema; x != nil {
-		return json.Marshal(x)
-	}
-	return nil, nil
-}
-
-// UnmarshalJSON sets AdditionalProperties to a copy of data.
-func (addProps *AdditionalProperties) UnmarshalJSON(data []byte) error {
-	var x interface{}
-	if err := json.Unmarshal(data, &x); err != nil {
-		return unmarshalError(err)
-	}
-	switch y := x.(type) {
-	case nil:
-	case bool:
-		addProps.Has = &y
-	case map[string]interface{}:
-		if len(y) == 0 {
-			addProps.Schema = &SchemaRef{Value: &Schema{}}
-		} else {
-			buf := new(bytes.Buffer)
-			json.NewEncoder(buf).Encode(y)
-			if err := json.NewDecoder(buf).Decode(&addProps.Schema); err != nil {
-				return err
-			}
-		}
-	default:
-		return errors.New("cannot unmarshal additionalProperties: value must be either a schema object or a boolean")
-	}
-	return nil
-}
-
-var _ jsonpointer.JSONPointable = (*Schema)(nil)
-
-func NewSchema() *Schema {
-	return &Schema{}
-}
-
-// MarshalJSON returns the JSON encoding of Schema.
-func (schema Schema) MarshalJSON() ([]byte, error) {
-	m := make(map[string]interface{}, 36+len(schema.Extensions))
-	for k, v := range schema.Extensions {
-		m[k] = v
-	}
-
-	if x := schema.OneOf; len(x) != 0 {
-		m["oneOf"] = x
-	}
-	if x := schema.AnyOf; len(x) != 0 {
-		m["anyOf"] = x
-	}
-	if x := schema.AllOf; len(x) != 0 {
-		m["allOf"] = x
-	}
-	if x := schema.Not; x != nil {
-		m["not"] = x
-	}
-	if x := schema.Type; len(x) != 0 {
-		m["type"] = x
-	}
-	if x := schema.Title; len(x) != 0 {
-		m["title"] = x
-	}
-	if x := schema.Format; len(x) != 0 {
-		m["format"] = x
-	}
-	if x := schema.Description; len(x) != 0 {
-		m["description"] = x
-	}
-	if x := schema.Enum; len(x) != 0 {
-		m["enum"] = x
-	}
-	if x := schema.Default; x != nil {
-		m["default"] = x
-	}
-	if x := schema.Example; x != nil {
-		m["example"] = x
-	}
-	if x := schema.ExternalDocs; x != nil {
-		m["externalDocs"] = x
-	}
-
-	// Array-related
-	if x := schema.UniqueItems; x {
-		m["uniqueItems"] = x
-	}
-	// Number-related
-	if x := schema.ExclusiveMin; x {
-		m["exclusiveMinimum"] = x
-	}
-	if x := schema.ExclusiveMax; x {
-		m["exclusiveMaximum"] = x
-	}
-	// Properties
-	if x := schema.Nullable; x {
-		m["nullable"] = x
-	}
-	if x := schema.ReadOnly; x {
-		m["readOnly"] = x
-	}
-	if x := schema.WriteOnly; x {
-		m["writeOnly"] = x
-	}
-	if x := schema.AllowEmptyValue; x {
-		m["allowEmptyValue"] = x
-	}
-	if x := schema.Deprecated; x {
-		m["deprecated"] = x
-	}
-	if x := schema.XML; x != nil {
-		m["xml"] = x
-	}
-
-	// Number
-	if x := schema.Min; x != nil {
-		m["minimum"] = x
-	}
-	if x := schema.Max; x != nil {
-		m["maximum"] = x
-	}
-	if x := schema.MultipleOf; x != nil {
-		m["multipleOf"] = x
-	}
-
-	// String
-	if x := schema.MinLength; x != 0 {
-		m["minLength"] = x
-	}
-	if x := schema.MaxLength; x != nil {
-		m["maxLength"] = x
-	}
-	if x := schema.Pattern; x != "" {
-		m["pattern"] = x
-	}
-
-	// Array
-	if x := schema.MinItems; x != 0 {
-		m["minItems"] = x
-	}
-	if x := schema.MaxItems; x != nil {
-		m["maxItems"] = x
-	}
-	if x := schema.Items; x != nil {
-		m["items"] = x
-	}
-
-	// Object
-	if x := schema.Required; len(x) != 0 {
-		m["required"] = x
-	}
-	if x := schema.Properties; len(x) != 0 {
-		m["properties"] = x
-	}
-	if x := schema.MinProps; x != 0 {
-		m["minProperties"] = x
-	}
-	if x := schema.MaxProps; x != nil {
-		m["maxProperties"] = x
-	}
-	if x := schema.AdditionalProperties; x.Has != nil || x.Schema != nil {
-		m["additionalProperties"] = &x
-	}
-	if x := schema.Discriminator; x != nil {
-		m["discriminator"] = x
-	}
-
-	return json.Marshal(m)
-}
-
-// UnmarshalJSON sets Schema to a copy of data.
-func (schema *Schema) UnmarshalJSON(data []byte) error {
-	type SchemaBis Schema
-	var x SchemaBis
-	if err := json.Unmarshal(data, &x); err != nil {
-		return unmarshalError(err)
-	}
-	_ = json.Unmarshal(data, &x.Extensions)
-
-	delete(x.Extensions, "oneOf")
-	delete(x.Extensions, "anyOf")
-	delete(x.Extensions, "allOf")
-	delete(x.Extensions, "not")
-	delete(x.Extensions, "type")
-	delete(x.Extensions, "title")
-	delete(x.Extensions, "format")
-	delete(x.Extensions, "description")
-	delete(x.Extensions, "enum")
-	delete(x.Extensions, "default")
-	delete(x.Extensions, "example")
-	delete(x.Extensions, "externalDocs")
-
-	// Array-related
-	delete(x.Extensions, "uniqueItems")
-	// Number-related
-	delete(x.Extensions, "exclusiveMinimum")
-	delete(x.Extensions, "exclusiveMaximum")
-	// Properties
-	delete(x.Extensions, "nullable")
-	delete(x.Extensions, "readOnly")
-	delete(x.Extensions, "writeOnly")
-	delete(x.Extensions, "allowEmptyValue")
-	delete(x.Extensions, "deprecated")
-	delete(x.Extensions, "xml")
-
-	// Number
-	delete(x.Extensions, "minimum")
-	delete(x.Extensions, "maximum")
-	delete(x.Extensions, "multipleOf")
-
-	// String
-	delete(x.Extensions, "minLength")
-	delete(x.Extensions, "maxLength")
-	delete(x.Extensions, "pattern")
-
-	// Array
-	delete(x.Extensions, "minItems")
-	delete(x.Extensions, "maxItems")
-	delete(x.Extensions, "items")
-
-	// Object
-	delete(x.Extensions, "required")
-	delete(x.Extensions, "properties")
-	delete(x.Extensions, "minProperties")
-	delete(x.Extensions, "maxProperties")
-	delete(x.Extensions, "additionalProperties")
-	delete(x.Extensions, "discriminator")
-
-	if len(x.Extensions) == 0 {
-		x.Extensions = nil
-	}
-
-	*schema = Schema(x)
-
-	if schema.Format == "date" {
-		// This is a fix for: https://github.com/getkin/kin-openapi/issues/697
-		if eg, ok := schema.Example.(string); ok {
-			schema.Example = strings.TrimSuffix(eg, "T00:00:00Z")
-		}
-	}
-	return nil
-}
-
-// JSONLookup implements https://pkg.go.dev/github.com/go-openapi/jsonpointer#JSONPointable
-func (schema Schema) JSONLookup(token string) (interface{}, error) {
-	switch token {
-	case "additionalProperties":
-		if addProps := schema.AdditionalProperties.Has; addProps != nil {
-			return *addProps, nil
-		}
-		if addProps := schema.AdditionalProperties.Schema; addProps != nil {
-			if addProps.Ref != "" {
-				return &Ref{Ref: addProps.Ref}, nil
-			}
-			return addProps.Value, nil
-		}
-	case "not":
-		if schema.Not != nil {
-			if schema.Not.Ref != "" {
-				return &Ref{Ref: schema.Not.Ref}, nil
-			}
-			return schema.Not.Value, nil
-		}
-	case "items":
-		if schema.Items != nil {
-			if schema.Items.Ref != "" {
-				return &Ref{Ref: schema.Items.Ref}, nil
-			}
-			return schema.Items.Value, nil
-		}
-	case "oneOf":
-		return schema.OneOf, nil
-	case "anyOf":
-		return schema.AnyOf, nil
-	case "allOf":
-		return schema.AllOf, nil
-	case "type":
-		return schema.Type, nil
-	case "title":
-		return schema.Title, nil
-	case "format":
-		return schema.Format, nil
-	case "description":
-		return schema.Description, nil
-	case "enum":
-		return schema.Enum, nil
-	case "default":
-		return schema.Default, nil
-	case "example":
-		return schema.Example, nil
-	case "externalDocs":
-		return schema.ExternalDocs, nil
-	case "uniqueItems":
-		return schema.UniqueItems, nil
-	case "exclusiveMin":
-		return schema.ExclusiveMin, nil
-	case "exclusiveMax":
-		return schema.ExclusiveMax, nil
-	case "nullable":
-		return schema.Nullable, nil
-	case "readOnly":
-		return schema.ReadOnly, nil
-	case "writeOnly":
-		return schema.WriteOnly, nil
-	case "allowEmptyValue":
-		return schema.AllowEmptyValue, nil
-	case "xml":
-		return schema.XML, nil
-	case "deprecated":
-		return schema.Deprecated, nil
-	case "min":
-		return schema.Min, nil
-	case "max":
-		return schema.Max, nil
-	case "multipleOf":
-		return schema.MultipleOf, nil
-	case "minLength":
-		return schema.MinLength, nil
-	case "maxLength":
-		return schema.MaxLength, nil
-	case "pattern":
-		return schema.Pattern, nil
-	case "minItems":
-		return schema.MinItems, nil
-	case "maxItems":
-		return schema.MaxItems, nil
-	case "required":
-		return schema.Required, nil
-	case "properties":
-		return schema.Properties, nil
-	case "minProps":
-		return schema.MinProps, nil
-	case "maxProps":
-		return schema.MaxProps, nil
-	case "discriminator":
-		return schema.Discriminator, nil
-	}
-
-	v, _, err := jsonpointer.GetForToken(schema.Extensions, token)
-	return v, err
-}
-
-func (schema *Schema) NewRef() *SchemaRef {
-	return &SchemaRef{
-		Value: schema,
-	}
-}
-
-func NewOneOfSchema(schemas ...*Schema) *Schema {
-	refs := make([]*SchemaRef, 0, len(schemas))
-	for _, schema := range schemas {
-		refs = append(refs, &SchemaRef{Value: schema})
-	}
-	return &Schema{
-		OneOf: refs,
-	}
-}
-
-func NewAnyOfSchema(schemas ...*Schema) *Schema {
-	refs := make([]*SchemaRef, 0, len(schemas))
-	for _, schema := range schemas {
-		refs = append(refs, &SchemaRef{Value: schema})
-	}
-	return &Schema{
-		AnyOf: refs,
-	}
-}
-
-func NewAllOfSchema(schemas ...*Schema) *Schema {
-	refs := make([]*SchemaRef, 0, len(schemas))
-	for _, schema := range schemas {
-		refs = append(refs, &SchemaRef{Value: schema})
-	}
-	return &Schema{
-		AllOf: refs,
-	}
-}
-
-func NewBoolSchema() *Schema {
-	return &Schema{
-		Type: TypeBoolean,
-	}
-}
-
-func NewFloat64Schema() *Schema {
-	return &Schema{
-		Type: TypeNumber,
-	}
-}
-
-func NewIntegerSchema() *Schema {
-	return &Schema{
-		Type: TypeInteger,
-	}
-}
-
-func NewInt32Schema() *Schema {
-	return &Schema{
-		Type:   TypeInteger,
-		Format: "int32",
-	}
-}
-
-func NewInt64Schema() *Schema {
-	return &Schema{
-		Type:   TypeInteger,
-		Format: "int64",
-	}
-}
-
-func NewStringSchema() *Schema {
-	return &Schema{
-		Type: TypeString,
-	}
-}
-
-func NewDateTimeSchema() *Schema {
-	return &Schema{
-		Type:   TypeString,
-		Format: "date-time",
-	}
-}
-
-func NewUUIDSchema() *Schema {
-	return &Schema{
-		Type:   TypeString,
-		Format: "uuid",
-	}
-}
-
-func NewBytesSchema() *Schema {
-	return &Schema{
-		Type:   TypeString,
-		Format: "byte",
-	}
-}
-
-func NewArraySchema() *Schema {
-	return &Schema{
-		Type: TypeArray,
-	}
-}
-
-func NewObjectSchema() *Schema {
-	return &Schema{
-		Type:       TypeObject,
-		Properties: make(Schemas),
-	}
-}
-
-func (schema *Schema) WithNullable() *Schema {
-	schema.Nullable = true
-	return schema
-}
-
-func (schema *Schema) WithMin(value float64) *Schema {
-	schema.Min = &value
-	return schema
-}
-
-func (schema *Schema) WithMax(value float64) *Schema {
-	schema.Max = &value
-	return schema
-}
-
-func (schema *Schema) WithExclusiveMin(value bool) *Schema {
-	schema.ExclusiveMin = value
-	return schema
-}
-
-func (schema *Schema) WithExclusiveMax(value bool) *Schema {
-	schema.ExclusiveMax = value
-	return schema
-}
-
-func (schema *Schema) WithEnum(values ...interface{}) *Schema {
-	schema.Enum = values
-	return schema
-}
-
-func (schema *Schema) WithDefault(defaultValue interface{}) *Schema {
-	schema.Default = defaultValue
-	return schema
-}
-
-func (schema *Schema) WithFormat(value string) *Schema {
-	schema.Format = value
-	return schema
-}
-
-func (schema *Schema) WithLength(i int64) *Schema {
-	n := uint64(i)
-	schema.MinLength = n
-	schema.MaxLength = &n
-	return schema
-}
-
-func (schema *Schema) WithMinLength(i int64) *Schema {
-	n := uint64(i)
-	schema.MinLength = n
-	return schema
-}
-
-func (schema *Schema) WithMaxLength(i int64) *Schema {
-	n := uint64(i)
-	schema.MaxLength = &n
-	return schema
-}
-
-func (schema *Schema) WithLengthDecodedBase64(i int64) *Schema {
-	n := uint64(i)
-	v := (n*8 + 5) / 6
-	schema.MinLength = v
-	schema.MaxLength = &v
-	return schema
-}
-
-func (schema *Schema) WithMinLengthDecodedBase64(i int64) *Schema {
-	n := uint64(i)
-	schema.MinLength = (n*8 + 5) / 6
-	return schema
-}
-
-func (schema *Schema) WithMaxLengthDecodedBase64(i int64) *Schema {
-	n := uint64(i)
-	schema.MinLength = (n*8 + 5) / 6
-	return schema
-}
-
-func (schema *Schema) WithPattern(pattern string) *Schema {
-	schema.Pattern = pattern
-	return schema
-}
-
-func (schema *Schema) WithItems(value *Schema) *Schema {
-	schema.Items = &SchemaRef{
-		Value: value,
-	}
-	return schema
-}
-
-func (schema *Schema) WithMinItems(i int64) *Schema {
-	n := uint64(i)
-	schema.MinItems = n
-	return schema
-}
-
-func (schema *Schema) WithMaxItems(i int64) *Schema {
-	n := uint64(i)
-	schema.MaxItems = &n
-	return schema
-}
-
-func (schema *Schema) WithUniqueItems(unique bool) *Schema {
-	schema.UniqueItems = unique
-	return schema
-}
-
-func (schema *Schema) WithProperty(name string, propertySchema *Schema) *Schema {
-	return schema.WithPropertyRef(name, &SchemaRef{
-		Value: propertySchema,
-	})
-}
-
-func (schema *Schema) WithPropertyRef(name string, ref *SchemaRef) *Schema {
-	properties := schema.Properties
-	if properties == nil {
-		properties = make(Schemas)
-		schema.Properties = properties
-	}
-	properties[name] = ref
-	return schema
-}
-
-func (schema *Schema) WithProperties(properties map[string]*Schema) *Schema {
-	result := make(Schemas, len(properties))
-	for k, v := range properties {
-		result[k] = &SchemaRef{
-			Value: v,
-		}
-	}
-	schema.Properties = result
-	return schema
-}
-
-func (schema *Schema) WithRequired(required []string) *Schema {
-	schema.Required = required
-	return schema
-}
-
-func (schema *Schema) WithMinProperties(i int64) *Schema {
-	n := uint64(i)
-	schema.MinProps = n
-	return schema
-}
-
-func (schema *Schema) WithMaxProperties(i int64) *Schema {
-	n := uint64(i)
-	schema.MaxProps = &n
-	return schema
-}
-
-func (schema *Schema) WithAnyAdditionalProperties() *Schema {
-	schema.AdditionalProperties = AdditionalProperties{Has: BoolPtr(true)}
-	return schema
-}
-
-func (schema *Schema) WithoutAdditionalProperties() *Schema {
-	schema.AdditionalProperties = AdditionalProperties{Has: BoolPtr(false)}
-	return schema
-}
-
-func (schema *Schema) WithAdditionalProperties(v *Schema) *Schema {
-	schema.AdditionalProperties = AdditionalProperties{}
-	if v != nil {
-		schema.AdditionalProperties.Schema = &SchemaRef{Value: v}
-	}
-	return schema
-}
-
-// IsEmpty tells whether schema is equivalent to the empty schema `{}`.
-func (schema *Schema) IsEmpty() bool {
-	if schema.Type != "" || schema.Format != "" || len(schema.Enum) != 0 ||
-		schema.UniqueItems || schema.ExclusiveMin || schema.ExclusiveMax ||
-		schema.Nullable || schema.ReadOnly || schema.WriteOnly || schema.AllowEmptyValue ||
-		schema.Min != nil || schema.Max != nil || schema.MultipleOf != nil ||
-		schema.MinLength != 0 || schema.MaxLength != nil || schema.Pattern != "" ||
-		schema.MinItems != 0 || schema.MaxItems != nil ||
-		len(schema.Required) != 0 ||
-		schema.MinProps != 0 || schema.MaxProps != nil {
-		return false
-	}
-	if n := schema.Not; n != nil && n.Value != nil && !n.Value.IsEmpty() {
-		return false
-	}
-	if ap := schema.AdditionalProperties.Schema; ap != nil && ap.Value != nil && !ap.Value.IsEmpty() {
-		return false
-	}
-	if apa := schema.AdditionalProperties.Has; apa != nil && !*apa {
-		return false
-	}
-	if items := schema.Items; items != nil && items.Value != nil && !items.Value.IsEmpty() {
-		return false
-	}
-	for _, s := range schema.Properties {
-		if ss := s.Value; ss != nil && !ss.IsEmpty() {
-			return false
-		}
-	}
-	for _, s := range schema.OneOf {
-		if ss := s.Value; ss != nil && !ss.IsEmpty() {
-			return false
-		}
-	}
-	for _, s := range schema.AnyOf {
-		if ss := s.Value; ss != nil && !ss.IsEmpty() {
-			return false
-		}
-	}
-	for _, s := range schema.AllOf {
-		if ss := s.Value; ss != nil && !ss.IsEmpty() {
-			return false
-		}
-	}
-	return true
-}
-
-// Validate returns an error if Schema does not comply with the OpenAPI spec.
-func (schema *Schema) Validate(ctx context.Context, opts ...ValidationOption) error {
-	ctx = WithValidationOptions(ctx, opts...)
-	_, err := schema.validate(ctx, []*Schema{})
-	return err
-}
-
-// returns the updated stack and an error if Schema does not comply with the OpenAPI spec.
-func (schema *Schema) validate(ctx context.Context, stack []*Schema) ([]*Schema, error) {
-	validationOpts := getValidationOptions(ctx)
-
-	for _, existing := range stack {
-		if existing == schema {
-			return stack, nil
-		}
-	}
-	stack = append(stack, schema)
-
-	if schema.ReadOnly && schema.WriteOnly {
-		return stack, errors.New("a property MUST NOT be marked as both readOnly and writeOnly being true")
-	}
-
-	for _, item := range schema.OneOf {
-		v := item.Value
-		if v == nil {
-			return stack, foundUnresolvedRef(item.Ref)
-		}
-
-		var err error
-		if stack, err = v.validate(ctx, stack); err != nil {
-			return stack, err
-		}
-	}
-
-	for _, item := range schema.AnyOf {
-		v := item.Value
-		if v == nil {
-			return stack, foundUnresolvedRef(item.Ref)
-		}
-
-		var err error
-		if stack, err = v.validate(ctx, stack); err != nil {
-			return stack, err
-		}
-	}
-
-	for _, item := range schema.AllOf {
-		v := item.Value
-		if v == nil {
-			return stack, foundUnresolvedRef(item.Ref)
-		}
-
-		var err error
-		if stack, err = v.validate(ctx, stack); err != nil {
-			return stack, err
-		}
-	}
-
-	if ref := schema.Not; ref != nil {
-		v := ref.Value
-		if v == nil {
-			return stack, foundUnresolvedRef(ref.Ref)
-		}
-
-		var err error
-		if stack, err = v.validate(ctx, stack); err != nil {
-			return stack, err
-		}
-	}
-
-	schemaType := schema.Type
-	switch schemaType {
-	case "":
-	case TypeBoolean:
-	case TypeNumber:
-		if format := schema.Format; len(format) > 0 {
-			switch format {
-			case "float", "double":
-			default:
-				if validationOpts.schemaFormatValidationEnabled {
-					return stack, unsupportedFormat(format)
-				}
-			}
-		}
-	case TypeInteger:
-		if format := schema.Format; len(format) > 0 {
-			switch format {
-			case "int32", "int64":
-			default:
-				if validationOpts.schemaFormatValidationEnabled {
-					return stack, unsupportedFormat(format)
-				}
-			}
-		}
-	case TypeString:
-		if format := schema.Format; len(format) > 0 {
-			switch format {
-			// Supported by OpenAPIv3.0.3:
-			// https://spec.openapis.org/oas/v3.0.3
-			case "byte", "binary", "date", "date-time", "password":
-			// In JSON Draft-07 (not validated yet though):
-			// https://json-schema.org/draft-07/json-schema-release-notes.html#formats
-			case "iri", "iri-reference", "uri-template", "idn-email", "idn-hostname":
-			case "json-pointer", "relative-json-pointer", "regex", "time":
-			// In JSON Draft 2019-09 (not validated yet though):
-			// https://json-schema.org/draft/2019-09/release-notes.html#format-vocabulary
-			case "duration", "uuid":
-			// Defined in some other specification
-			case "email", "hostname", "ipv4", "ipv6", "uri", "uri-reference":
-			default:
-				// Try to check for custom defined formats
-				if _, ok := SchemaStringFormats[format]; !ok && validationOpts.schemaFormatValidationEnabled {
-					return stack, unsupportedFormat(format)
-				}
-			}
-		}
-		if !validationOpts.schemaPatternValidationDisabled && schema.Pattern != "" {
-			if _, err := schema.compilePattern(); err != nil {
-				return stack, err
-			}
-		}
-	case TypeArray:
-		if schema.Items == nil {
-			return stack, errors.New("when schema type is 'array', schema 'items' must be non-null")
-		}
-	case TypeObject:
-	default:
-		return stack, fmt.Errorf("unsupported 'type' value %q", schemaType)
-	}
-
-	if ref := schema.Items; ref != nil {
-		v := ref.Value
-		if v == nil {
-			return stack, foundUnresolvedRef(ref.Ref)
-		}
-
-		var err error
-		if stack, err = v.validate(ctx, stack); err != nil {
-			return stack, err
-		}
-	}
-
-	properties := make([]string, 0, len(schema.Properties))
-	for name := range schema.Properties {
-		properties = append(properties, name)
-	}
-	sort.Strings(properties)
-	for _, name := range properties {
-		ref := schema.Properties[name]
-		v := ref.Value
-		if v == nil {
-			return stack, foundUnresolvedRef(ref.Ref)
-		}
-
-		var err error
-		if stack, err = v.validate(ctx, stack); err != nil {
-			return stack, err
-		}
-	}
-
-	if schema.AdditionalProperties.Has != nil && schema.AdditionalProperties.Schema != nil {
-		return stack, errors.New("additionalProperties are set to both boolean and schema")
-	}
-	if ref := schema.AdditionalProperties.Schema; ref != nil {
-		v := ref.Value
-		if v == nil {
-			return stack, foundUnresolvedRef(ref.Ref)
-		}
-
-		var err error
-		if stack, err = v.validate(ctx, stack); err != nil {
-			return stack, err
-		}
-	}
-
-	if v := schema.ExternalDocs; v != nil {
-		if err := v.Validate(ctx); err != nil {
-			return stack, fmt.Errorf("invalid external docs: %w", err)
-		}
-	}
-
-	if v := schema.Default; v != nil && !validationOpts.schemaDefaultsValidationDisabled {
-		if err := schema.VisitJSON(v); err != nil {
-			return stack, fmt.Errorf("invalid default: %w", err)
-		}
-	}
-
-	if x := schema.Example; x != nil && !validationOpts.examplesValidationDisabled {
-		if err := validateExampleValue(ctx, x, schema); err != nil {
-			return stack, fmt.Errorf("invalid example: %w", err)
-		}
-	}
-
-	return stack, validateExtensions(ctx, schema.Extensions)
-}
-
-func (schema *Schema) IsMatching(value interface{}) bool {
-	settings := newSchemaValidationSettings(FailFast())
-	return schema.visitJSON(settings, value) == nil
-}
-
-func (schema *Schema) IsMatchingJSONBoolean(value bool) bool {
-	settings := newSchemaValidationSettings(FailFast())
-	return schema.visitJSON(settings, value) == nil
-}
-
-func (schema *Schema) IsMatchingJSONNumber(value float64) bool {
-	settings := newSchemaValidationSettings(FailFast())
-	return schema.visitJSON(settings, value) == nil
-}
-
-func (schema *Schema) IsMatchingJSONString(value string) bool {
-	settings := newSchemaValidationSettings(FailFast())
-	return schema.visitJSON(settings, value) == nil
-}
-
-func (schema *Schema) IsMatchingJSONArray(value []interface{}) bool {
-	settings := newSchemaValidationSettings(FailFast())
-	return schema.visitJSON(settings, value) == nil
-}
-
-func (schema *Schema) IsMatchingJSONObject(value map[string]interface{}) bool {
-	settings := newSchemaValidationSettings(FailFast())
-	return schema.visitJSON(settings, value) == nil
-}
-
-func (schema *Schema) VisitJSON(value interface{}, opts ...SchemaValidationOption) error {
-	settings := newSchemaValidationSettings(opts...)
-	return schema.visitJSON(settings, value)
-}
-
-func (schema *Schema) visitJSON(settings *schemaValidationSettings, value interface{}) (err error) {
-	switch value := value.(type) {
-	case nil:
-		// Don't use VisitJSONNull, as we still want to reach 'visitXOFOperations', since
-		// those could allow for a nullable value even though this one doesn't
-		if schema.Nullable {
-			return
-		}
-	case float64:
-		if math.IsNaN(value) {
-			return ErrSchemaInputNaN
-		}
-		if math.IsInf(value, 0) {
-			return ErrSchemaInputInf
-		}
-	}
-
-	if schema.IsEmpty() {
-		switch value.(type) {
-		case nil:
-			return schema.visitJSONNull(settings)
-		default:
-			return
-		}
-	}
-
-	if err = schema.visitNotOperation(settings, value); err != nil {
-		return
-	}
-	var run bool
-	if err, run = schema.visitXOFOperations(settings, value); err != nil || !run {
-		return
-	}
-	if err = schema.visitEnumOperation(settings, value); err != nil {
-		return
-	}
-
-	switch value := value.(type) {
-	case nil:
-		return schema.visitJSONNull(settings)
-	case bool:
-		return schema.visitJSONBoolean(settings, value)
-	case json.Number:
-		valueFloat64, err := value.Float64()
-		if err != nil {
-			return &SchemaError{
-				Value:                 value,
-				Schema:                schema,
-				SchemaField:           "type",
-				Reason:                "cannot convert json.Number to float64",
-				customizeMessageError: settings.customizeMessageError,
-				Origin:                err,
-			}
-		}
-		return schema.visitJSONNumber(settings, valueFloat64)
-	case int:
-		return schema.visitJSONNumber(settings, float64(value))
-	case int32:
-		return schema.visitJSONNumber(settings, float64(value))
-	case int64:
-		return schema.visitJSONNumber(settings, float64(value))
-	case float64:
-		return schema.visitJSONNumber(settings, value)
-	case string:
-		return schema.visitJSONString(settings, value)
-	case []interface{}:
-		return schema.visitJSONArray(settings, value)
-	case map[string]interface{}:
-		return schema.visitJSONObject(settings, value)
-	case map[interface{}]interface{}: // for YAML cf. issue #444
-		values := make(map[string]interface{}, len(value))
-		for key, v := range value {
-			if k, ok := key.(string); ok {
-				values[k] = v
-			}
-		}
-		if len(value) == len(values) {
-			return schema.visitJSONObject(settings, values)
-		}
-	}
-
-	// Catch slice of non-empty interface type
-	if reflect.TypeOf(value).Kind() == reflect.Slice {
-		valueR := reflect.ValueOf(value)
-		newValue := make([]interface{}, 0, valueR.Len())
-		for i := 0; i < valueR.Len(); i++ {
-			newValue = append(newValue, valueR.Index(i).Interface())
-		}
-		return schema.visitJSONArray(settings, newValue)
-	}
-
-	return &SchemaError{
-		Value:                 value,
-		Schema:                schema,
-		SchemaField:           "type",
-		Reason:                fmt.Sprintf("unhandled value of type %T", value),
-		customizeMessageError: settings.customizeMessageError,
-	}
-}
-
-func (schema *Schema) visitEnumOperation(settings *schemaValidationSettings, value interface{}) (err error) {
-	if enum := schema.Enum; len(enum) != 0 {
-		for _, v := range enum {
-			switch c := value.(type) {
-			case json.Number:
-				var f float64
-				if f, err = strconv.ParseFloat(c.String(), 64); err != nil {
-					return err
-				}
-				if v == f {
-					return
-				}
-			case int64:
-				if v == float64(c) {
-					return
-				}
-			default:
-				if reflect.DeepEqual(v, value) {
-					return
-				}
-			}
-		}
-		if settings.failfast {
-			return errSchema
-		}
-		allowedValues, _ := json.Marshal(enum)
-		return &SchemaError{
-			Value:                 value,
-			Schema:                schema,
-			SchemaField:           "enum",
-			Reason:                fmt.Sprintf("value is not one of the allowed values %s", string(allowedValues)),
-			customizeMessageError: settings.customizeMessageError,
-		}
-	}
-	return
-}
-
-func (schema *Schema) visitNotOperation(settings *schemaValidationSettings, value interface{}) (err error) {
-	if ref := schema.Not; ref != nil {
-		v := ref.Value
-		if v == nil {
-			return foundUnresolvedRef(ref.Ref)
-		}
-		if err := v.visitJSON(settings, value); err == nil {
-			if settings.failfast {
-				return errSchema
-			}
-			return &SchemaError{
-				Value:                 value,
-				Schema:                schema,
-				SchemaField:           "not",
-				customizeMessageError: settings.customizeMessageError,
-			}
-		}
-	}
-	return
-}
-
-// If the XOF operations pass successfully, abort further run of validation, as they will already be satisfied (unless the schema
-// itself is badly specified
-func (schema *Schema) visitXOFOperations(settings *schemaValidationSettings, value interface{}) (err error, run bool) {
-	var visitedOneOf, visitedAnyOf, visitedAllOf bool
-	if v := schema.OneOf; len(v) > 0 {
-		var discriminatorRef string
-		if schema.Discriminator != nil {
-			pn := schema.Discriminator.PropertyName
-			if valuemap, okcheck := value.(map[string]interface{}); okcheck {
-				discriminatorVal, okcheck := valuemap[pn]
-				if !okcheck {
-					return &SchemaError{
-						Schema:      schema,
-						SchemaField: "discriminator",
-						Reason:      fmt.Sprintf("input does not contain the discriminator property %q", pn),
-					}, false
-				}
-
-				discriminatorValString, okcheck := discriminatorVal.(string)
-				if !okcheck {
-					return &SchemaError{
-						Value:       discriminatorVal,
-						Schema:      schema,
-						SchemaField: "discriminator",
-						Reason:      fmt.Sprintf("value of discriminator property %q is not a string", pn),
-					}, false
-				}
-
-				if discriminatorRef, okcheck = schema.Discriminator.Mapping[discriminatorValString]; len(schema.Discriminator.Mapping) > 0 && !okcheck {
-					return &SchemaError{
-						Value:       discriminatorVal,
-						Schema:      schema,
-						SchemaField: "discriminator",
-						Reason:      fmt.Sprintf("discriminator property %q has invalid value", pn),
-					}, false
-				}
-			}
-		}
-
-		var (
-			ok                  = 0
-			validationErrors    = multiErrorForOneOf{}
-			matchedOneOfIndices = make([]int, 0)
-			tempValue           = value
-		)
-		for idx, item := range v {
-			v := item.Value
-			if v == nil {
-				return foundUnresolvedRef(item.Ref), false
-			}
-
-			if discriminatorRef != "" && discriminatorRef != item.Ref {
-				continue
-			}
-
-			// make a deep copy to protect origin value from being injected default value that defined in mismatched oneOf schema
-			if settings.asreq || settings.asrep {
-				tempValue = deepcopy.Copy(value)
-			}
-
-			if err := v.visitJSON(settings, tempValue); err != nil {
-				validationErrors = append(validationErrors, err)
-				continue
-			}
-
-			matchedOneOfIndices = append(matchedOneOfIndices, idx)
-			ok++
-		}
-
-		if ok != 1 {
-			if settings.failfast {
-				return errSchema, false
-			}
-			e := &SchemaError{
-				Value:                 value,
-				Schema:                schema,
-				SchemaField:           "oneOf",
-				customizeMessageError: settings.customizeMessageError,
-			}
-			if ok > 1 {
-				e.Origin = ErrOneOfConflict
-				e.Reason = fmt.Sprintf(`value matches more than one schema from "oneOf" (matches schemas at indices %v)`, matchedOneOfIndices)
-			} else {
-				e.Origin = fmt.Errorf("doesn't match schema due to: %w", validationErrors)
-				e.Reason = `value doesn't match any schema from "oneOf"`
-			}
-
-			return e, false
-		}
-
-		// run again to inject default value that defined in matched oneOf schema
-		if settings.asreq || settings.asrep {
-			_ = v[matchedOneOfIndices[0]].Value.visitJSON(settings, value)
-		}
-		visitedOneOf = true
-	}
-
-	if v := schema.AnyOf; len(v) > 0 {
-		var (
-			ok              = false
-			matchedAnyOfIdx = 0
-			tempValue       = value
-		)
-		for idx, item := range v {
-			v := item.Value
-			if v == nil {
-				return foundUnresolvedRef(item.Ref), false
-			}
-			// make a deep copy to protect origin value from being injected default value that defined in mismatched anyOf schema
-			if settings.asreq || settings.asrep {
-				tempValue = deepcopy.Copy(value)
-			}
-			if err := v.visitJSON(settings, tempValue); err == nil {
-				ok = true
-				matchedAnyOfIdx = idx
-				break
-			}
-		}
-		if !ok {
-			if settings.failfast {
-				return errSchema, false
-			}
-			return &SchemaError{
-				Value:                 value,
-				Schema:                schema,
-				SchemaField:           "anyOf",
-				Reason:                `doesn't match any schema from "anyOf"`,
-				customizeMessageError: settings.customizeMessageError,
-			}, false
-		}
-
-		_ = v[matchedAnyOfIdx].Value.visitJSON(settings, value)
-		visitedAnyOf = true
-	}
-
-	for _, item := range schema.AllOf {
-		v := item.Value
-		if v == nil {
-			return foundUnresolvedRef(item.Ref), false
-		}
-		if err := v.visitJSON(settings, value); err != nil {
-			if settings.failfast {
-				return errSchema, false
-			}
-			return &SchemaError{
-				Value:                 value,
-				Schema:                schema,
-				SchemaField:           "allOf",
-				Reason:                `doesn't match all schemas from "allOf"`,
-				Origin:                err,
-				customizeMessageError: settings.customizeMessageError,
-			}, false
-		}
-		visitedAllOf = true
-	}
-
-	run = !((visitedOneOf || visitedAnyOf || visitedAllOf) && value == nil)
-	return
-}
-
-// The value is not considered in visitJSONNull because according to the spec
-// "null is not supported as a type" unless `nullable` is also set to true
-// https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#data-types
-// https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#schema-object
-func (schema *Schema) visitJSONNull(settings *schemaValidationSettings) (err error) {
-	if schema.Nullable {
-		return
-	}
-	if settings.failfast {
-		return errSchema
-	}
-	return &SchemaError{
-		Value:                 nil,
-		Schema:                schema,
-		SchemaField:           "nullable",
-		Reason:                "Value is not nullable",
-		customizeMessageError: settings.customizeMessageError,
-	}
-}
-
-func (schema *Schema) VisitJSONBoolean(value bool) error {
-	settings := newSchemaValidationSettings()
-	return schema.visitJSONBoolean(settings, value)
-}
-
-func (schema *Schema) visitJSONBoolean(settings *schemaValidationSettings, value bool) (err error) {
-	if schemaType := schema.Type; schemaType != "" && schemaType != TypeBoolean {
-		return schema.expectedType(settings, value)
-	}
-	return
-}
-
-func (schema *Schema) VisitJSONNumber(value float64) error {
-	settings := newSchemaValidationSettings()
-	return schema.visitJSONNumber(settings, value)
-}
-
-func (schema *Schema) visitJSONNumber(settings *schemaValidationSettings, value float64) error {
-	var me MultiError
-	schemaType := schema.Type
-	if schemaType == TypeInteger {
-		if bigFloat := big.NewFloat(value); !bigFloat.IsInt() {
-			if settings.failfast {
-				return errSchema
-			}
-			err := &SchemaError{
-				Value:                 value,
-				Schema:                schema,
-				SchemaField:           "type",
-				Reason:                "value must be an integer",
-				customizeMessageError: settings.customizeMessageError,
-			}
-			if !settings.multiError {
-				return err
-			}
-			me = append(me, err)
-		}
-	} else if schemaType != "" && schemaType != TypeNumber {
-		return schema.expectedType(settings, value)
-	}
-
-	// formats
-	if schemaType == TypeInteger && schema.Format != "" {
-		formatMin := float64(0)
-		formatMax := float64(0)
-		switch schema.Format {
-		case "int32":
-			formatMin = formatMinInt32
-			formatMax = formatMaxInt32
-		case "int64":
-			formatMin = formatMinInt64
-			formatMax = formatMaxInt64
-		default:
-			if settings.formatValidationEnabled {
-				return unsupportedFormat(schema.Format)
-			}
-		}
-		if formatMin != 0 && formatMax != 0 && !(formatMin <= value && value <= formatMax) {
-			if settings.failfast {
-				return errSchema
-			}
-			err := &SchemaError{
-				Value:                 value,
-				Schema:                schema,
-				SchemaField:           "format",
-				Reason:                fmt.Sprintf("number must be an %s", schema.Format),
-				customizeMessageError: settings.customizeMessageError,
-			}
-			if !settings.multiError {
-				return err
-			}
-			me = append(me, err)
-		}
-	}
-
-	// "exclusiveMinimum"
-	if v := schema.ExclusiveMin; v && !(*schema.Min < value) {
-		if settings.failfast {
-			return errSchema
-		}
-		err := &SchemaError{
-			Value:                 value,
-			Schema:                schema,
-			SchemaField:           "exclusiveMinimum",
-			Reason:                fmt.Sprintf("number must be more than %g", *schema.Min),
-			customizeMessageError: settings.customizeMessageError,
-		}
-		if !settings.multiError {
-			return err
-		}
-		me = append(me, err)
-	}
-
-	// "exclusiveMaximum"
-	if v := schema.ExclusiveMax; v && !(*schema.Max > value) {
-		if settings.failfast {
-			return errSchema
-		}
-		err := &SchemaError{
-			Value:                 value,
-			Schema:                schema,
-			SchemaField:           "exclusiveMaximum",
-			Reason:                fmt.Sprintf("number must be less than %g", *schema.Max),
-			customizeMessageError: settings.customizeMessageError,
-		}
-		if !settings.multiError {
-			return err
-		}
-		me = append(me, err)
-	}
-
-	// "minimum"
-	if v := schema.Min; v != nil && !(*v <= value) {
-		if settings.failfast {
-			return errSchema
-		}
-		err := &SchemaError{
-			Value:                 value,
-			Schema:                schema,
-			SchemaField:           "minimum",
-			Reason:                fmt.Sprintf("number must be at least %g", *v),
-			customizeMessageError: settings.customizeMessageError,
-		}
-		if !settings.multiError {
-			return err
-		}
-		me = append(me, err)
-	}
-
-	// "maximum"
-	if v := schema.Max; v != nil && !(*v >= value) {
-		if settings.failfast {
-			return errSchema
-		}
-		err := &SchemaError{
-			Value:                 value,
-			Schema:                schema,
-			SchemaField:           "maximum",
-			Reason:                fmt.Sprintf("number must be at most %g", *v),
-			customizeMessageError: settings.customizeMessageError,
-		}
-		if !settings.multiError {
-			return err
-		}
-		me = append(me, err)
-	}
-
-	// "multipleOf"
-	if v := schema.MultipleOf; v != nil {
-		// "A numeric instance is valid only if division by this keyword's
-		//    value results in an integer."
-		if bigFloat := big.NewFloat(value / *v); !bigFloat.IsInt() {
-			if settings.failfast {
-				return errSchema
-			}
-			err := &SchemaError{
-				Value:                 value,
-				Schema:                schema,
-				SchemaField:           "multipleOf",
-				Reason:                fmt.Sprintf("number must be a multiple of %g", *v),
-				customizeMessageError: settings.customizeMessageError,
-			}
-			if !settings.multiError {
-				return err
-			}
-			me = append(me, err)
-		}
-	}
-
-	if len(me) > 0 {
-		return me
-	}
-
-	return nil
-}
-
-func (schema *Schema) VisitJSONString(value string) error {
-	settings := newSchemaValidationSettings()
-	return schema.visitJSONString(settings, value)
-}
-
-func (schema *Schema) visitJSONString(settings *schemaValidationSettings, value string) error {
-	if schemaType := schema.Type; schemaType != "" && schemaType != TypeString {
-		return schema.expectedType(settings, value)
-	}
-
-	var me MultiError
-
-	// "minLength" and "maxLength"
-	minLength := schema.MinLength
-	maxLength := schema.MaxLength
-	if minLength != 0 || maxLength != nil {
-		// JSON schema string lengths are UTF-16, not UTF-8!
-		length := int64(0)
-		for _, r := range value {
-			if utf16.IsSurrogate(r) {
-				length += 2
-			} else {
-				length++
-			}
-		}
-		if minLength != 0 && length < int64(minLength) {
-			if settings.failfast {
-				return errSchema
-			}
-			err := &SchemaError{
-				Value:                 value,
-				Schema:                schema,
-				SchemaField:           "minLength",
-				Reason:                fmt.Sprintf("minimum string length is %d", minLength),
-				customizeMessageError: settings.customizeMessageError,
-			}
-			if !settings.multiError {
-				return err
-			}
-			me = append(me, err)
-		}
-		if maxLength != nil && length > int64(*maxLength) {
-			if settings.failfast {
-				return errSchema
-			}
-			err := &SchemaError{
-				Value:                 value,
-				Schema:                schema,
-				SchemaField:           "maxLength",
-				Reason:                fmt.Sprintf("maximum string length is %d", *maxLength),
-				customizeMessageError: settings.customizeMessageError,
-			}
-			if !settings.multiError {
-				return err
-			}
-			me = append(me, err)
-		}
-	}
-
-	// "pattern"
-	if !settings.patternValidationDisabled && schema.Pattern != "" {
-		cpiface, _ := compiledPatterns.Load(schema.Pattern)
-		cp, _ := cpiface.(*regexp.Regexp)
-		if cp == nil {
-			var err error
-			if cp, err = schema.compilePattern(); err != nil {
-				if !settings.multiError {
-					return err
-				}
-				me = append(me, err)
-			}
-		}
-		if !cp.MatchString(value) {
-			err := &SchemaError{
-				Value:                 value,
-				Schema:                schema,
-				SchemaField:           "pattern",
-				Reason:                fmt.Sprintf(`string doesn't match the regular expression "%s"`, schema.Pattern),
-				customizeMessageError: settings.customizeMessageError,
-			}
-			if !settings.multiError {
-				return err
-			}
-			me = append(me, err)
-		}
-	}
-
-	// "format"
-	var formatStrErr string
-	var formatErr error
-	if format := schema.Format; format != "" {
-		if f, ok := SchemaStringFormats[format]; ok {
-			switch {
-			case f.regexp != nil && f.callback == nil:
-				if cp := f.regexp; !cp.MatchString(value) {
-					formatStrErr = fmt.Sprintf(`string doesn't match the format %q (regular expression "%s")`, format, cp.String())
-				}
-			case f.regexp == nil && f.callback != nil:
-				if err := f.callback(value); err != nil {
-					var schemaErr = &SchemaError{}
-					if errors.As(err, &schemaErr) {
-						formatStrErr = fmt.Sprintf(`string doesn't match the format %q (%s)`, format, schemaErr.Reason)
-					} else {
-						formatStrErr = fmt.Sprintf(`string doesn't match the format %q (%v)`, format, err)
-					}
-					formatErr = err
-				}
-			default:
-				formatStrErr = fmt.Sprintf("corrupted entry %q in SchemaStringFormats", format)
-			}
-		}
-	}
-	if formatStrErr != "" || formatErr != nil {
-		err := &SchemaError{
-			Value:                 value,
-			Schema:                schema,
-			SchemaField:           "format",
-			Reason:                formatStrErr,
-			Origin:                formatErr,
-			customizeMessageError: settings.customizeMessageError,
-		}
-		if !settings.multiError {
-			return err
-		}
-		me = append(me, err)
-
-	}
-
-	if len(me) > 0 {
-		return me
-	}
-
-	return nil
-}
-
-func (schema *Schema) VisitJSONArray(value []interface{}) error {
-	settings := newSchemaValidationSettings()
-	return schema.visitJSONArray(settings, value)
-}
-
-func (schema *Schema) visitJSONArray(settings *schemaValidationSettings, value []interface{}) error {
-	if schemaType := schema.Type; schemaType != "" && schemaType != TypeArray {
-		return schema.expectedType(settings, value)
-	}
-
-	var me MultiError
-
-	lenValue := int64(len(value))
-
-	// "minItems"
-	if v := schema.MinItems; v != 0 && lenValue < int64(v) {
-		if settings.failfast {
-			return errSchema
-		}
-		err := &SchemaError{
-			Value:                 value,
-			Schema:                schema,
-			SchemaField:           "minItems",
-			Reason:                fmt.Sprintf("minimum number of items is %d", v),
-			customizeMessageError: settings.customizeMessageError,
-		}
-		if !settings.multiError {
-			return err
-		}
-		me = append(me, err)
-	}
-
-	// "maxItems"
-	if v := schema.MaxItems; v != nil && lenValue > int64(*v) {
-		if settings.failfast {
-			return errSchema
-		}
-		err := &SchemaError{
-			Value:                 value,
-			Schema:                schema,
-			SchemaField:           "maxItems",
-			Reason:                fmt.Sprintf("maximum number of items is %d", *v),
-			customizeMessageError: settings.customizeMessageError,
-		}
-		if !settings.multiError {
-			return err
-		}
-		me = append(me, err)
-	}
-
-	// "uniqueItems"
-	if sliceUniqueItemsChecker == nil {
-		sliceUniqueItemsChecker = isSliceOfUniqueItems
-	}
-	if v := schema.UniqueItems; v && !sliceUniqueItemsChecker(value) {
-		if settings.failfast {
-			return errSchema
-		}
-		err := &SchemaError{
-			Value:                 value,
-			Schema:                schema,
-			SchemaField:           "uniqueItems",
-			Reason:                "duplicate items found",
-			customizeMessageError: settings.customizeMessageError,
-		}
-		if !settings.multiError {
-			return err
-		}
-		me = append(me, err)
-	}
-
-	// "items"
-	if itemSchemaRef := schema.Items; itemSchemaRef != nil {
-		itemSchema := itemSchemaRef.Value
-		if itemSchema == nil {
-			return foundUnresolvedRef(itemSchemaRef.Ref)
-		}
-		for i, item := range value {
-			if err := itemSchema.visitJSON(settings, item); err != nil {
-				err = markSchemaErrorIndex(err, i)
-				if !settings.multiError {
-					return err
-				}
-				if itemMe, ok := err.(MultiError); ok {
-					me = append(me, itemMe...)
-				} else {
-					me = append(me, err)
-				}
-			}
-		}
-	}
-
-	if len(me) > 0 {
-		return me
-	}
-
-	return nil
-}
-
-func (schema *Schema) VisitJSONObject(value map[string]interface{}) error {
-	settings := newSchemaValidationSettings()
-	return schema.visitJSONObject(settings, value)
-}
-
-func (schema *Schema) visitJSONObject(settings *schemaValidationSettings, value map[string]interface{}) error {
-	if schemaType := schema.Type; schemaType != "" && schemaType != TypeObject {
-		return schema.expectedType(settings, value)
-	}
-
-	var me MultiError
-
-	if settings.asreq || settings.asrep {
-		properties := make([]string, 0, len(schema.Properties))
-		for propName := range schema.Properties {
-			properties = append(properties, propName)
-		}
-		sort.Strings(properties)
-		for _, propName := range properties {
-			propSchema := schema.Properties[propName]
-			reqRO := settings.asreq && propSchema.Value.ReadOnly && !settings.readOnlyValidationDisabled
-			repWO := settings.asrep && propSchema.Value.WriteOnly && !settings.writeOnlyValidationDisabled
-
-			if f := settings.defaultsSet; f != nil && value[propName] == nil {
-				if dflt := propSchema.Value.Default; dflt != nil && !reqRO && !repWO {
-					value[propName] = dflt
-					settings.onceSettingDefaults.Do(f)
-				}
-			}
-
-			if value[propName] != nil {
-				if reqRO {
-					me = append(me, fmt.Errorf("readOnly property %q in request", propName))
-				} else if repWO {
-					me = append(me, fmt.Errorf("writeOnly property %q in response", propName))
-				}
-			}
-		}
-	}
-
-	// "properties"
-	properties := schema.Properties
-	lenValue := int64(len(value))
-
-	// "minProperties"
-	if v := schema.MinProps; v != 0 && lenValue < int64(v) {
-		if settings.failfast {
-			return errSchema
-		}
-		err := &SchemaError{
-			Value:                 value,
-			Schema:                schema,
-			SchemaField:           "minProperties",
-			Reason:                fmt.Sprintf("there must be at least %d properties", v),
-			customizeMessageError: settings.customizeMessageError,
-		}
-		if !settings.multiError {
-			return err
-		}
-		me = append(me, err)
-	}
-
-	// "maxProperties"
-	if v := schema.MaxProps; v != nil && lenValue > int64(*v) {
-		if settings.failfast {
-			return errSchema
-		}
-		err := &SchemaError{
-			Value:                 value,
-			Schema:                schema,
-			SchemaField:           "maxProperties",
-			Reason:                fmt.Sprintf("there must be at most %d properties", *v),
-			customizeMessageError: settings.customizeMessageError,
-		}
-		if !settings.multiError {
-			return err
-		}
-		me = append(me, err)
-	}
-
-	// "additionalProperties"
-	var additionalProperties *Schema
-	if ref := schema.AdditionalProperties.Schema; ref != nil {
-		additionalProperties = ref.Value
-	}
-	keys := make([]string, 0, len(value))
-	for k := range value {
-		keys = append(keys, k)
-	}
-	sort.Strings(keys)
-	for _, k := range keys {
-		v := value[k]
-		if properties != nil {
-			propertyRef := properties[k]
-			if propertyRef != nil {
-				p := propertyRef.Value
-				if p == nil {
-					return foundUnresolvedRef(propertyRef.Ref)
-				}
-				if err := p.visitJSON(settings, v); err != nil {
-					if settings.failfast {
-						return errSchema
-					}
-					err = markSchemaErrorKey(err, k)
-					if !settings.multiError {
-						return err
-					}
-					if v, ok := err.(MultiError); ok {
-						me = append(me, v...)
-						continue
-					}
-					me = append(me, err)
-				}
-				continue
-			}
-		}
-		if allowed := schema.AdditionalProperties.Has; allowed == nil || *allowed {
-			if additionalProperties != nil {
-				if err := additionalProperties.visitJSON(settings, v); err != nil {
-					if settings.failfast {
-						return errSchema
-					}
-					err = markSchemaErrorKey(err, k)
-					if !settings.multiError {
-						return err
-					}
-					if v, ok := err.(MultiError); ok {
-						me = append(me, v...)
-						continue
-					}
-					me = append(me, err)
-				}
-			}
-			continue
-		}
-		if settings.failfast {
-			return errSchema
-		}
-		err := &SchemaError{
-			Value:                 value,
-			Schema:                schema,
-			SchemaField:           "properties",
-			Reason:                fmt.Sprintf("property %q is unsupported", k),
-			customizeMessageError: settings.customizeMessageError,
-		}
-		if !settings.multiError {
-			return err
-		}
-		me = append(me, err)
-	}
-
-	// "required"
-	for _, k := range schema.Required {
-		if _, ok := value[k]; !ok {
-			if s := schema.Properties[k]; s != nil && s.Value.ReadOnly && settings.asreq {
-				continue
-			}
-			if s := schema.Properties[k]; s != nil && s.Value.WriteOnly && settings.asrep {
-				continue
-			}
-			if settings.failfast {
-				return errSchema
-			}
-			err := markSchemaErrorKey(&SchemaError{
-				Value:                 value,
-				Schema:                schema,
-				SchemaField:           "required",
-				Reason:                fmt.Sprintf("property %q is missing", k),
-				customizeMessageError: settings.customizeMessageError,
-			}, k)
-			if !settings.multiError {
-				return err
-			}
-			me = append(me, err)
-		}
-	}
-
-	if len(me) > 0 {
-		return me
-	}
-
-	return nil
-}
-
-func (schema *Schema) expectedType(settings *schemaValidationSettings, value interface{}) error {
-	if settings.failfast {
-		return errSchema
-	}
-
-	a := "a"
-	switch schema.Type {
-	case TypeArray, TypeObject, TypeInteger:
-		a = "an"
-	}
-	return &SchemaError{
-		Value:                 value,
-		Schema:                schema,
-		SchemaField:           "type",
-		Reason:                fmt.Sprintf("value must be %s %s", a, schema.Type),
-		customizeMessageError: settings.customizeMessageError,
-	}
-}
-
-// SchemaError is an error that occurs during schema validation.
-type SchemaError struct {
-	// Value is the value that failed validation.
-	Value interface{}
-	// reversePath is the path to the value that failed validation.
-	reversePath []string
-	// Schema is the schema that failed validation.
-	Schema *Schema
-	// SchemaField is the field of the schema that failed validation.
-	SchemaField string
-	// Reason is a human-readable message describing the error.
-	// The message should never include the original value to prevent leakage of potentially sensitive inputs in error messages.
-	Reason string
-	// Origin is the original error that caused this error.
-	Origin error
-	// customizeMessageError is a function that can be used to customize the error message.
-	customizeMessageError func(err *SchemaError) string
-}
-
-var _ interface{ Unwrap() error } = SchemaError{}
-
-func markSchemaErrorKey(err error, key string) error {
-	var me multiErrorForOneOf
-
-	if errors.As(err, &me) {
-		err = me.Unwrap()
-	}
-
-	if v, ok := err.(*SchemaError); ok {
-		v.reversePath = append(v.reversePath, key)
-		return v
-	}
-	if v, ok := err.(MultiError); ok {
-		for _, e := range v {
-			_ = markSchemaErrorKey(e, key)
-		}
-		return v
-	}
-	return err
-}
-
-func markSchemaErrorIndex(err error, index int) error {
-	return markSchemaErrorKey(err, strconv.FormatInt(int64(index), 10))
-}
-
-func (err *SchemaError) JSONPointer() []string {
-	reversePath := err.reversePath
-	path := append([]string(nil), reversePath...)
-	for left, right := 0, len(path)-1; left < right; left, right = left+1, right-1 {
-		path[left], path[right] = path[right], path[left]
-	}
-	return path
-}
-
-func (err *SchemaError) Error() string {
-	if err.customizeMessageError != nil {
-		if msg := err.customizeMessageError(err); msg != "" {
-			return msg
-		}
-	}
-
-	buf := bytes.NewBuffer(make([]byte, 0, 256))
-
-	if len(err.reversePath) > 0 {
-		buf.WriteString(`Error at "`)
-		reversePath := err.reversePath
-		for i := len(reversePath) - 1; i >= 0; i-- {
-			buf.WriteByte('/')
-			buf.WriteString(reversePath[i])
-		}
-		buf.WriteString(`": `)
-	}
-
-	if err.Origin != nil {
-		buf.WriteString(err.Origin.Error())
-
-		return buf.String()
-	}
-
-	reason := err.Reason
-	if reason == "" {
-		buf.WriteString(`Doesn't match schema "`)
-		buf.WriteString(err.SchemaField)
-		buf.WriteString(`"`)
-	} else {
-		buf.WriteString(reason)
-	}
-
-	if !SchemaErrorDetailsDisabled {
-		buf.WriteString("\nSchema:\n  ")
-		encoder := json.NewEncoder(buf)
-		encoder.SetIndent("  ", "  ")
-		if err := encoder.Encode(err.Schema); err != nil {
-			panic(err)
-		}
-		buf.WriteString("\nValue:\n  ")
-		if err := encoder.Encode(err.Value); err != nil {
-			panic(err)
-		}
-	}
-
-	return buf.String()
-}
-
-func (err SchemaError) Unwrap() error {
-	return err.Origin
-}
-
-func isSliceOfUniqueItems(xs []interface{}) bool {
-	s := len(xs)
-	m := make(map[string]struct{}, s)
-	for _, x := range xs {
-		// The input slice is converted from a JSON string, there shall
-		// have no error when convert it back.
-		key, _ := json.Marshal(&x)
-		m[string(key)] = struct{}{}
-	}
-	return s == len(m)
-}
-
-// SliceUniqueItemsChecker is an function used to check if an given slice
-// have unique items.
-type SliceUniqueItemsChecker func(items []interface{}) bool
-
-// By default using predefined func isSliceOfUniqueItems which make use of
-// json.Marshal to generate a key for map used to check if a given slice
-// have unique items.
-var sliceUniqueItemsChecker SliceUniqueItemsChecker = isSliceOfUniqueItems
-
-// RegisterArrayUniqueItemsChecker is used to register a customized function
-// used to check if JSON array have unique items.
-func RegisterArrayUniqueItemsChecker(fn SliceUniqueItemsChecker) {
-	sliceUniqueItemsChecker = fn
-}
-
-func unsupportedFormat(format string) error {
-	return fmt.Errorf("unsupported 'format' value %q", format)
-}
diff --git a/vendor/github.com/getkin/kin-openapi/openapi3/schema_formats.go b/vendor/github.com/getkin/kin-openapi/openapi3/schema_formats.go
deleted file mode 100644
index ea38400c..00000000
--- a/vendor/github.com/getkin/kin-openapi/openapi3/schema_formats.go
+++ /dev/null
@@ -1,106 +0,0 @@
-package openapi3
-
-import (
-	"fmt"
-	"net"
-	"regexp"
-	"strings"
-)
-
-const (
-	// FormatOfStringForUUIDOfRFC4122 is an optional predefined format for UUID v1-v5 as specified by RFC4122
-	FormatOfStringForUUIDOfRFC4122 = `^(?:[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$`
-
-	// FormatOfStringForEmail pattern catches only some suspiciously wrong-looking email addresses.
-	// Use DefineStringFormat(...) if you need something stricter.
-	FormatOfStringForEmail = `^[^@]+@[^@<>",\s]+$`
-)
-
-// FormatCallback performs custom checks on exotic formats
-type FormatCallback func(value string) error
-
-// Format represents a format validator registered by either DefineStringFormat or DefineStringFormatCallback
-type Format struct {
-	regexp   *regexp.Regexp
-	callback FormatCallback
-}
-
-// SchemaStringFormats allows for validating string formats
-var SchemaStringFormats = make(map[string]Format, 4)
-
-// DefineStringFormat defines a new regexp pattern for a given format
-func DefineStringFormat(name string, pattern string) {
-	re, err := regexp.Compile(pattern)
-	if err != nil {
-		err := fmt.Errorf("format %q has invalid pattern %q: %w", name, pattern, err)
-		panic(err)
-	}
-	SchemaStringFormats[name] = Format{regexp: re}
-}
-
-// DefineStringFormatCallback adds a validation function for a specific schema format entry
-func DefineStringFormatCallback(name string, callback FormatCallback) {
-	SchemaStringFormats[name] = Format{callback: callback}
-}
-
-func validateIP(ip string) error {
-	parsed := net.ParseIP(ip)
-	if parsed == nil {
-		return &SchemaError{
-			Value:  ip,
-			Reason: "Not an IP address",
-		}
-	}
-	return nil
-}
-
-func validateIPv4(ip string) error {
-	if err := validateIP(ip); err != nil {
-		return err
-	}
-
-	if !(strings.Count(ip, ":") < 2) {
-		return &SchemaError{
-			Value:  ip,
-			Reason: "Not an IPv4 address (it's IPv6)",
-		}
-	}
-	return nil
-}
-
-func validateIPv6(ip string) error {
-	if err := validateIP(ip); err != nil {
-		return err
-	}
-
-	if !(strings.Count(ip, ":") >= 2) {
-		return &SchemaError{
-			Value:  ip,
-			Reason: "Not an IPv6 address (it's IPv4)",
-		}
-	}
-	return nil
-}
-
-func init() {
-	// Base64
-	// The pattern supports base64 and b./ase64url. Padding ('=') is supported.
-	DefineStringFormat("byte", `(^$|^[a-zA-Z0-9+/\-_]*=*$)`)
-
-	// date
-	DefineStringFormat("date", `^[0-9]{4}-(0[0-9]|10|11|12)-([0-2][0-9]|30|31)$`)
-
-	// date-time
-	DefineStringFormat("date-time", `^[0-9]{4}-(0[0-9]|10|11|12)-([0-2][0-9]|30|31)T[0-9]{2}:[0-9]{2}:[0-9]{2}(\.[0-9]+)?(Z|(\+|-)[0-9]{2}:[0-9]{2})?$`)
-
-}
-
-// DefineIPv4Format opts in ipv4 format validation on top of OAS 3 spec
-func DefineIPv4Format() {
-	DefineStringFormatCallback("ipv4", validateIPv4)
-}
-
-// DefineIPv6Format opts in ipv6 format validation on top of OAS 3 spec
-func DefineIPv6Format() {
-	DefineStringFormatCallback("ipv6", validateIPv6)
-}
diff --git a/vendor/github.com/getkin/kin-openapi/openapi3/schema_pattern.go b/vendor/github.com/getkin/kin-openapi/openapi3/schema_pattern.go
deleted file mode 100644
index ceb4ad15..00000000
--- a/vendor/github.com/getkin/kin-openapi/openapi3/schema_pattern.go
+++ /dev/null
@@ -1,29 +0,0 @@
-package openapi3
-
-import (
-	"fmt"
-	"regexp"
-)
-
-var patRewriteCodepoints = regexp.MustCompile(`[\][u]([0-9A-F]{4})`)
-
-// See https://pkg.go.dev/regexp/syntax
-func intoGoRegexp(re string) string {
-	return patRewriteCodepoints.ReplaceAllString(re, `x{$1}`)
-}
-
-// NOTE: racey WRT [writes to schema.Pattern] vs [reads schema.Pattern then writes to compiledPatterns]
-func (schema *Schema) compilePattern() (cp *regexp.Regexp, err error) {
-	pattern := schema.Pattern
-	if cp, err = regexp.Compile(intoGoRegexp(pattern)); err != nil {
-		err = &SchemaError{
-			Schema:      schema,
-			SchemaField: "pattern",
-			Origin:      err,
-			Reason:      fmt.Sprintf("cannot compile pattern %q: %v", pattern, err),
-		}
-		return
-	}
-	var _ bool = compiledPatterns.CompareAndSwap(pattern, nil, cp)
-	return
-}
diff --git a/vendor/github.com/getkin/kin-openapi/openapi3/schema_validation_settings.go b/vendor/github.com/getkin/kin-openapi/openapi3/schema_validation_settings.go
deleted file mode 100644
index 17aad2fa..00000000
--- a/vendor/github.com/getkin/kin-openapi/openapi3/schema_validation_settings.go
+++ /dev/null
@@ -1,79 +0,0 @@
-package openapi3
-
-import (
-	"sync"
-)
-
-// SchemaValidationOption describes options a user has when validating request / response bodies.
-type SchemaValidationOption func(*schemaValidationSettings)
-
-type schemaValidationSettings struct {
-	failfast                    bool
-	multiError                  bool
-	asreq, asrep                bool // exclusive (XOR) fields
-	formatValidationEnabled     bool
-	patternValidationDisabled   bool
-	readOnlyValidationDisabled  bool
-	writeOnlyValidationDisabled bool
-
-	onceSettingDefaults sync.Once
-	defaultsSet         func()
-
-	customizeMessageError func(err *SchemaError) string
-}
-
-// FailFast returns schema validation errors quicker.
-func FailFast() SchemaValidationOption {
-	return func(s *schemaValidationSettings) { s.failfast = true }
-}
-
-func MultiErrors() SchemaValidationOption {
-	return func(s *schemaValidationSettings) { s.multiError = true }
-}
-
-func VisitAsRequest() SchemaValidationOption {
-	return func(s *schemaValidationSettings) { s.asreq, s.asrep = true, false }
-}
-
-func VisitAsResponse() SchemaValidationOption {
-	return func(s *schemaValidationSettings) { s.asreq, s.asrep = false, true }
-}
-
-// EnableFormatValidation setting makes Validate not return an error when validating documents that mention schema formats that are not defined by the OpenAPIv3 specification.
-func EnableFormatValidation() SchemaValidationOption {
-	return func(s *schemaValidationSettings) { s.formatValidationEnabled = true }
-}
-
-// DisablePatternValidation setting makes Validate not return an error when validating patterns that are not supported by the Go regexp engine.
-func DisablePatternValidation() SchemaValidationOption {
-	return func(s *schemaValidationSettings) { s.patternValidationDisabled = true }
-}
-
-// DisableReadOnlyValidation setting makes Validate not return an error when validating properties marked as read-only
-func DisableReadOnlyValidation() SchemaValidationOption {
-	return func(s *schemaValidationSettings) { s.readOnlyValidationDisabled = true }
-}
-
-// DisableWriteOnlyValidation setting makes Validate not return an error when validating properties marked as write-only
-func DisableWriteOnlyValidation() SchemaValidationOption {
-	return func(s *schemaValidationSettings) { s.writeOnlyValidationDisabled = true }
-}
-
-// DefaultsSet executes the given callback (once) IFF schema validation set default values.
-func DefaultsSet(f func()) SchemaValidationOption {
-	return func(s *schemaValidationSettings) { s.defaultsSet = f }
-}
-
-// SetSchemaErrorMessageCustomizer allows to override the schema error message.
-// If the passed function returns an empty string, it returns to the previous Error() implementation.
-func SetSchemaErrorMessageCustomizer(f func(err *SchemaError) string) SchemaValidationOption {
-	return func(s *schemaValidationSettings) { s.customizeMessageError = f }
-}
-
-func newSchemaValidationSettings(opts ...SchemaValidationOption) *schemaValidationSettings {
-	settings := &schemaValidationSettings{}
-	for _, opt := range opts {
-		opt(settings)
-	}
-	return settings
-}
diff --git a/vendor/github.com/getkin/kin-openapi/openapi3/security_requirements.go b/vendor/github.com/getkin/kin-openapi/openapi3/security_requirements.go
deleted file mode 100644
index 87891c95..00000000
--- a/vendor/github.com/getkin/kin-openapi/openapi3/security_requirements.go
+++ /dev/null
@@ -1,51 +0,0 @@
-package openapi3
-
-import (
-	"context"
-)
-
-type SecurityRequirements []SecurityRequirement
-
-func NewSecurityRequirements() *SecurityRequirements {
-	return &SecurityRequirements{}
-}
-
-func (srs *SecurityRequirements) With(securityRequirement SecurityRequirement) *SecurityRequirements {
-	*srs = append(*srs, securityRequirement)
-	return srs
-}
-
-// Validate returns an error if SecurityRequirements does not comply with the OpenAPI spec.
-func (srs SecurityRequirements) Validate(ctx context.Context, opts ...ValidationOption) error {
-	ctx = WithValidationOptions(ctx, opts...)
-
-	for _, security := range srs {
-		if err := security.Validate(ctx); err != nil {
-			return err
-		}
-	}
-	return nil
-}
-
-// SecurityRequirement is specified by OpenAPI/Swagger standard version 3.
-// See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#security-requirement-object
-type SecurityRequirement map[string][]string
-
-func NewSecurityRequirement() SecurityRequirement {
-	return make(SecurityRequirement)
-}
-
-func (security SecurityRequirement) Authenticate(provider string, scopes ...string) SecurityRequirement {
-	if len(scopes) == 0 {
-		scopes = []string{} // Forces the variable to be encoded as an array instead of null
-	}
-	security[provider] = scopes
-	return security
-}
-
-// Validate returns an error if SecurityRequirement does not comply with the OpenAPI spec.
-func (security *SecurityRequirement) Validate(ctx context.Context, opts ...ValidationOption) error {
-	ctx = WithValidationOptions(ctx, opts...)
-
-	return nil
-}
diff --git a/vendor/github.com/getkin/kin-openapi/openapi3/security_scheme.go b/vendor/github.com/getkin/kin-openapi/openapi3/security_scheme.go
deleted file mode 100644
index c07bfb61..00000000
--- a/vendor/github.com/getkin/kin-openapi/openapi3/security_scheme.go
+++ /dev/null
@@ -1,402 +0,0 @@
-package openapi3
-
-import (
-	"context"
-	"encoding/json"
-	"errors"
-	"fmt"
-	"net/url"
-)
-
-// SecurityScheme is specified by OpenAPI/Swagger standard version 3.
-// See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#security-scheme-object
-type SecurityScheme struct {
-	Extensions map[string]interface{} `json:"-" yaml:"-"`
-
-	Type             string      `json:"type,omitempty" yaml:"type,omitempty"`
-	Description      string      `json:"description,omitempty" yaml:"description,omitempty"`
-	Name             string      `json:"name,omitempty" yaml:"name,omitempty"`
-	In               string      `json:"in,omitempty" yaml:"in,omitempty"`
-	Scheme           string      `json:"scheme,omitempty" yaml:"scheme,omitempty"`
-	BearerFormat     string      `json:"bearerFormat,omitempty" yaml:"bearerFormat,omitempty"`
-	Flows            *OAuthFlows `json:"flows,omitempty" yaml:"flows,omitempty"`
-	OpenIdConnectUrl string      `json:"openIdConnectUrl,omitempty" yaml:"openIdConnectUrl,omitempty"`
-}
-
-func NewSecurityScheme() *SecurityScheme {
-	return &SecurityScheme{}
-}
-
-func NewCSRFSecurityScheme() *SecurityScheme {
-	return &SecurityScheme{
-		Type: "apiKey",
-		In:   "header",
-		Name: "X-XSRF-TOKEN",
-	}
-}
-
-func NewOIDCSecurityScheme(oidcUrl string) *SecurityScheme {
-	return &SecurityScheme{
-		Type:             "openIdConnect",
-		OpenIdConnectUrl: oidcUrl,
-	}
-}
-
-func NewJWTSecurityScheme() *SecurityScheme {
-	return &SecurityScheme{
-		Type:         "http",
-		Scheme:       "bearer",
-		BearerFormat: "JWT",
-	}
-}
-
-// MarshalJSON returns the JSON encoding of SecurityScheme.
-func (ss SecurityScheme) MarshalJSON() ([]byte, error) {
-	m := make(map[string]interface{}, 8+len(ss.Extensions))
-	for k, v := range ss.Extensions {
-		m[k] = v
-	}
-	if x := ss.Type; x != "" {
-		m["type"] = x
-	}
-	if x := ss.Description; x != "" {
-		m["description"] = x
-	}
-	if x := ss.Name; x != "" {
-		m["name"] = x
-	}
-	if x := ss.In; x != "" {
-		m["in"] = x
-	}
-	if x := ss.Scheme; x != "" {
-		m["scheme"] = x
-	}
-	if x := ss.BearerFormat; x != "" {
-		m["bearerFormat"] = x
-	}
-	if x := ss.Flows; x != nil {
-		m["flows"] = x
-	}
-	if x := ss.OpenIdConnectUrl; x != "" {
-		m["openIdConnectUrl"] = x
-	}
-	return json.Marshal(m)
-}
-
-// UnmarshalJSON sets SecurityScheme to a copy of data.
-func (ss *SecurityScheme) UnmarshalJSON(data []byte) error {
-	type SecuritySchemeBis SecurityScheme
-	var x SecuritySchemeBis
-	if err := json.Unmarshal(data, &x); err != nil {
-		return unmarshalError(err)
-	}
-	_ = json.Unmarshal(data, &x.Extensions)
-	delete(x.Extensions, "type")
-	delete(x.Extensions, "description")
-	delete(x.Extensions, "name")
-	delete(x.Extensions, "in")
-	delete(x.Extensions, "scheme")
-	delete(x.Extensions, "bearerFormat")
-	delete(x.Extensions, "flows")
-	delete(x.Extensions, "openIdConnectUrl")
-	if len(x.Extensions) == 0 {
-		x.Extensions = nil
-	}
-	*ss = SecurityScheme(x)
-	return nil
-}
-
-func (ss *SecurityScheme) WithType(value string) *SecurityScheme {
-	ss.Type = value
-	return ss
-}
-
-func (ss *SecurityScheme) WithDescription(value string) *SecurityScheme {
-	ss.Description = value
-	return ss
-}
-
-func (ss *SecurityScheme) WithName(value string) *SecurityScheme {
-	ss.Name = value
-	return ss
-}
-
-func (ss *SecurityScheme) WithIn(value string) *SecurityScheme {
-	ss.In = value
-	return ss
-}
-
-func (ss *SecurityScheme) WithScheme(value string) *SecurityScheme {
-	ss.Scheme = value
-	return ss
-}
-
-func (ss *SecurityScheme) WithBearerFormat(value string) *SecurityScheme {
-	ss.BearerFormat = value
-	return ss
-}
-
-// Validate returns an error if SecurityScheme does not comply with the OpenAPI spec.
-func (ss *SecurityScheme) Validate(ctx context.Context, opts ...ValidationOption) error {
-	ctx = WithValidationOptions(ctx, opts...)
-
-	hasIn := false
-	hasBearerFormat := false
-	hasFlow := false
-	switch ss.Type {
-	case "apiKey":
-		hasIn = true
-	case "http":
-		scheme := ss.Scheme
-		switch scheme {
-		case "bearer":
-			hasBearerFormat = true
-		case "basic", "negotiate", "digest":
-		default:
-			return fmt.Errorf("security scheme of type 'http' has invalid 'scheme' value %q", scheme)
-		}
-	case "oauth2":
-		hasFlow = true
-	case "openIdConnect":
-		if ss.OpenIdConnectUrl == "" {
-			return fmt.Errorf("no OIDC URL found for openIdConnect security scheme %q", ss.Name)
-		}
-	default:
-		return fmt.Errorf("security scheme 'type' can't be %q", ss.Type)
-	}
-
-	// Validate "in" and "name"
-	if hasIn {
-		switch ss.In {
-		case "query", "header", "cookie":
-		default:
-			return fmt.Errorf("security scheme of type 'apiKey' should have 'in'. It can be 'query', 'header' or 'cookie', not %q", ss.In)
-		}
-		if ss.Name == "" {
-			return errors.New("security scheme of type 'apiKey' should have 'name'")
-		}
-	} else if len(ss.In) > 0 {
-		return fmt.Errorf("security scheme of type %q can't have 'in'", ss.Type)
-	} else if len(ss.Name) > 0 {
-		return fmt.Errorf("security scheme of type %q can't have 'name'", ss.Type)
-	}
-
-	// Validate "format"
-	// "bearerFormat" is an arbitrary string so we only check if the scheme supports it
-	if !hasBearerFormat && len(ss.BearerFormat) > 0 {
-		return fmt.Errorf("security scheme of type %q can't have 'bearerFormat'", ss.Type)
-	}
-
-	// Validate "flow"
-	if hasFlow {
-		flow := ss.Flows
-		if flow == nil {
-			return fmt.Errorf("security scheme of type %q should have 'flows'", ss.Type)
-		}
-		if err := flow.Validate(ctx); err != nil {
-			return fmt.Errorf("security scheme 'flow' is invalid: %w", err)
-		}
-	} else if ss.Flows != nil {
-		return fmt.Errorf("security scheme of type %q can't have 'flows'", ss.Type)
-	}
-
-	return validateExtensions(ctx, ss.Extensions)
-}
-
-// OAuthFlows is specified by OpenAPI/Swagger standard version 3.
-// See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#oauth-flows-object
-type OAuthFlows struct {
-	Extensions map[string]interface{} `json:"-" yaml:"-"`
-
-	Implicit          *OAuthFlow `json:"implicit,omitempty" yaml:"implicit,omitempty"`
-	Password          *OAuthFlow `json:"password,omitempty" yaml:"password,omitempty"`
-	ClientCredentials *OAuthFlow `json:"clientCredentials,omitempty" yaml:"clientCredentials,omitempty"`
-	AuthorizationCode *OAuthFlow `json:"authorizationCode,omitempty" yaml:"authorizationCode,omitempty"`
-}
-
-type oAuthFlowType int
-
-const (
-	oAuthFlowTypeImplicit oAuthFlowType = iota
-	oAuthFlowTypePassword
-	oAuthFlowTypeClientCredentials
-	oAuthFlowAuthorizationCode
-)
-
-// MarshalJSON returns the JSON encoding of OAuthFlows.
-func (flows OAuthFlows) MarshalJSON() ([]byte, error) {
-	m := make(map[string]interface{}, 4+len(flows.Extensions))
-	for k, v := range flows.Extensions {
-		m[k] = v
-	}
-	if x := flows.Implicit; x != nil {
-		m["implicit"] = x
-	}
-	if x := flows.Password; x != nil {
-		m["password"] = x
-	}
-	if x := flows.ClientCredentials; x != nil {
-		m["clientCredentials"] = x
-	}
-	if x := flows.AuthorizationCode; x != nil {
-		m["authorizationCode"] = x
-	}
-	return json.Marshal(m)
-}
-
-// UnmarshalJSON sets OAuthFlows to a copy of data.
-func (flows *OAuthFlows) UnmarshalJSON(data []byte) error {
-	type OAuthFlowsBis OAuthFlows
-	var x OAuthFlowsBis
-	if err := json.Unmarshal(data, &x); err != nil {
-		return unmarshalError(err)
-	}
-	_ = json.Unmarshal(data, &x.Extensions)
-	delete(x.Extensions, "implicit")
-	delete(x.Extensions, "password")
-	delete(x.Extensions, "clientCredentials")
-	delete(x.Extensions, "authorizationCode")
-	if len(x.Extensions) == 0 {
-		x.Extensions = nil
-	}
-	*flows = OAuthFlows(x)
-	return nil
-}
-
-// Validate returns an error if OAuthFlows does not comply with the OpenAPI spec.
-func (flows *OAuthFlows) Validate(ctx context.Context, opts ...ValidationOption) error {
-	ctx = WithValidationOptions(ctx, opts...)
-
-	if v := flows.Implicit; v != nil {
-		if err := v.validate(ctx, oAuthFlowTypeImplicit, opts...); err != nil {
-			return fmt.Errorf("the OAuth flow 'implicit' is invalid: %w", err)
-		}
-	}
-
-	if v := flows.Password; v != nil {
-		if err := v.validate(ctx, oAuthFlowTypePassword, opts...); err != nil {
-			return fmt.Errorf("the OAuth flow 'password' is invalid: %w", err)
-		}
-	}
-
-	if v := flows.ClientCredentials; v != nil {
-		if err := v.validate(ctx, oAuthFlowTypeClientCredentials, opts...); err != nil {
-			return fmt.Errorf("the OAuth flow 'clientCredentials' is invalid: %w", err)
-		}
-	}
-
-	if v := flows.AuthorizationCode; v != nil {
-		if err := v.validate(ctx, oAuthFlowAuthorizationCode, opts...); err != nil {
-			return fmt.Errorf("the OAuth flow 'authorizationCode' is invalid: %w", err)
-		}
-	}
-
-	return validateExtensions(ctx, flows.Extensions)
-}
-
-// OAuthFlow is specified by OpenAPI/Swagger standard version 3.
-// See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#oauth-flow-object
-type OAuthFlow struct {
-	Extensions map[string]interface{} `json:"-" yaml:"-"`
-
-	AuthorizationURL string            `json:"authorizationUrl,omitempty" yaml:"authorizationUrl,omitempty"`
-	TokenURL         string            `json:"tokenUrl,omitempty" yaml:"tokenUrl,omitempty"`
-	RefreshURL       string            `json:"refreshUrl,omitempty" yaml:"refreshUrl,omitempty"`
-	Scopes           map[string]string `json:"scopes" yaml:"scopes"` // required
-}
-
-// MarshalJSON returns the JSON encoding of OAuthFlow.
-func (flow OAuthFlow) MarshalJSON() ([]byte, error) {
-	m := make(map[string]interface{}, 4+len(flow.Extensions))
-	for k, v := range flow.Extensions {
-		m[k] = v
-	}
-	if x := flow.AuthorizationURL; x != "" {
-		m["authorizationUrl"] = x
-	}
-	if x := flow.TokenURL; x != "" {
-		m["tokenUrl"] = x
-	}
-	if x := flow.RefreshURL; x != "" {
-		m["refreshUrl"] = x
-	}
-	m["scopes"] = flow.Scopes
-	return json.Marshal(m)
-}
-
-// UnmarshalJSON sets OAuthFlow to a copy of data.
-func (flow *OAuthFlow) UnmarshalJSON(data []byte) error {
-	type OAuthFlowBis OAuthFlow
-	var x OAuthFlowBis
-	if err := json.Unmarshal(data, &x); err != nil {
-		return unmarshalError(err)
-	}
-	_ = json.Unmarshal(data, &x.Extensions)
-	delete(x.Extensions, "authorizationUrl")
-	delete(x.Extensions, "tokenUrl")
-	delete(x.Extensions, "refreshUrl")
-	delete(x.Extensions, "scopes")
-	if len(x.Extensions) == 0 {
-		x.Extensions = nil
-	}
-	*flow = OAuthFlow(x)
-	return nil
-}
-
-// Validate returns an error if OAuthFlows does not comply with the OpenAPI spec.
-func (flow *OAuthFlow) Validate(ctx context.Context, opts ...ValidationOption) error {
-	ctx = WithValidationOptions(ctx, opts...)
-
-	if v := flow.RefreshURL; v != "" {
-		if _, err := url.Parse(v); err != nil {
-			return fmt.Errorf("field 'refreshUrl' is invalid: %w", err)
-		}
-	}
-
-	if flow.Scopes == nil {
-		return errors.New("field 'scopes' is missing")
-	}
-
-	return validateExtensions(ctx, flow.Extensions)
-}
-
-func (flow *OAuthFlow) validate(ctx context.Context, typ oAuthFlowType, opts ...ValidationOption) error {
-	ctx = WithValidationOptions(ctx, opts...)
-
-	typeIn := func(types ...oAuthFlowType) bool {
-		for _, ty := range types {
-			if ty == typ {
-				return true
-			}
-		}
-		return false
-	}
-
-	if in := typeIn(oAuthFlowTypeImplicit, oAuthFlowAuthorizationCode); true {
-		switch {
-		case flow.AuthorizationURL == "" && in:
-			return errors.New("field 'authorizationUrl' is empty or missing")
-		case flow.AuthorizationURL != "" && !in:
-			return errors.New("field 'authorizationUrl' should not be set")
-		case flow.AuthorizationURL != "":
-			if _, err := url.Parse(flow.AuthorizationURL); err != nil {
-				return fmt.Errorf("field 'authorizationUrl' is invalid: %w", err)
-			}
-		}
-	}
-
-	if in := typeIn(oAuthFlowTypePassword, oAuthFlowTypeClientCredentials, oAuthFlowAuthorizationCode); true {
-		switch {
-		case flow.TokenURL == "" && in:
-			return errors.New("field 'tokenUrl' is empty or missing")
-		case flow.TokenURL != "" && !in:
-			return errors.New("field 'tokenUrl' should not be set")
-		case flow.TokenURL != "":
-			if _, err := url.Parse(flow.TokenURL); err != nil {
-				return fmt.Errorf("field 'tokenUrl' is invalid: %w", err)
-			}
-		}
-	}
-
-	return flow.Validate(ctx, opts...)
-}
diff --git a/vendor/github.com/getkin/kin-openapi/openapi3/serialization_method.go b/vendor/github.com/getkin/kin-openapi/openapi3/serialization_method.go
deleted file mode 100644
index 2ec8bd2d..00000000
--- a/vendor/github.com/getkin/kin-openapi/openapi3/serialization_method.go
+++ /dev/null
@@ -1,17 +0,0 @@
-package openapi3
-
-const (
-	SerializationSimple         = "simple"
-	SerializationLabel          = "label"
-	SerializationMatrix         = "matrix"
-	SerializationForm           = "form"
-	SerializationSpaceDelimited = "spaceDelimited"
-	SerializationPipeDelimited  = "pipeDelimited"
-	SerializationDeepObject     = "deepObject"
-)
-
-// SerializationMethod describes a serialization method of HTTP request's parameters and body.
-type SerializationMethod struct {
-	Style   string
-	Explode bool
-}
diff --git a/vendor/github.com/getkin/kin-openapi/openapi3/server.go b/vendor/github.com/getkin/kin-openapi/openapi3/server.go
deleted file mode 100644
index 04e233d5..00000000
--- a/vendor/github.com/getkin/kin-openapi/openapi3/server.go
+++ /dev/null
@@ -1,284 +0,0 @@
-package openapi3
-
-import (
-	"context"
-	"encoding/json"
-	"errors"
-	"fmt"
-	"math"
-	"net/url"
-	"sort"
-	"strings"
-)
-
-// Servers is specified by OpenAPI/Swagger standard version 3.
-type Servers []*Server
-
-// Validate returns an error if Servers does not comply with the OpenAPI spec.
-func (servers Servers) Validate(ctx context.Context, opts ...ValidationOption) error {
-	ctx = WithValidationOptions(ctx, opts...)
-
-	for _, v := range servers {
-		if err := v.Validate(ctx); err != nil {
-			return err
-		}
-	}
-	return nil
-}
-
-// BasePath returns the base path of the first server in the list, or /.
-func (servers Servers) BasePath() (string, error) {
-	for _, server := range servers {
-		return server.BasePath()
-	}
-	return "/", nil
-}
-
-func (servers Servers) MatchURL(parsedURL *url.URL) (*Server, []string, string) {
-	rawURL := parsedURL.String()
-	if i := strings.IndexByte(rawURL, '?'); i >= 0 {
-		rawURL = rawURL[:i]
-	}
-	for _, server := range servers {
-		pathParams, remaining, ok := server.MatchRawURL(rawURL)
-		if ok {
-			return server, pathParams, remaining
-		}
-	}
-	return nil, nil, ""
-}
-
-// Server is specified by OpenAPI/Swagger standard version 3.
-// See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#server-object
-type Server struct {
-	Extensions map[string]interface{} `json:"-" yaml:"-"`
-
-	URL         string                     `json:"url" yaml:"url"` // Required
-	Description string                     `json:"description,omitempty" yaml:"description,omitempty"`
-	Variables   map[string]*ServerVariable `json:"variables,omitempty" yaml:"variables,omitempty"`
-}
-
-// BasePath returns the base path extracted from the default values of variables, if any.
-// Assumes a valid struct (per Validate()).
-func (server *Server) BasePath() (string, error) {
-	if server == nil {
-		return "/", nil
-	}
-
-	uri := server.URL
-	for name, svar := range server.Variables {
-		uri = strings.ReplaceAll(uri, "{"+name+"}", svar.Default)
-	}
-
-	u, err := url.ParseRequestURI(uri)
-	if err != nil {
-		return "", err
-	}
-
-	if bp := u.Path; bp != "" {
-		return bp, nil
-	}
-
-	return "/", nil
-}
-
-// MarshalJSON returns the JSON encoding of Server.
-func (server Server) MarshalJSON() ([]byte, error) {
-	m := make(map[string]interface{}, 3+len(server.Extensions))
-	for k, v := range server.Extensions {
-		m[k] = v
-	}
-	m["url"] = server.URL
-	if x := server.Description; x != "" {
-		m["description"] = x
-	}
-	if x := server.Variables; len(x) != 0 {
-		m["variables"] = x
-	}
-	return json.Marshal(m)
-}
-
-// UnmarshalJSON sets Server to a copy of data.
-func (server *Server) UnmarshalJSON(data []byte) error {
-	type ServerBis Server
-	var x ServerBis
-	if err := json.Unmarshal(data, &x); err != nil {
-		return unmarshalError(err)
-	}
-	_ = json.Unmarshal(data, &x.Extensions)
-	delete(x.Extensions, "url")
-	delete(x.Extensions, "description")
-	delete(x.Extensions, "variables")
-	if len(x.Extensions) == 0 {
-		x.Extensions = nil
-	}
-	*server = Server(x)
-	return nil
-}
-
-func (server Server) ParameterNames() ([]string, error) {
-	pattern := server.URL
-	var params []string
-	for len(pattern) > 0 {
-		i := strings.IndexByte(pattern, '{')
-		if i < 0 {
-			break
-		}
-		pattern = pattern[i+1:]
-		i = strings.IndexByte(pattern, '}')
-		if i < 0 {
-			return nil, errors.New("missing '}'")
-		}
-		params = append(params, strings.TrimSpace(pattern[:i]))
-		pattern = pattern[i+1:]
-	}
-	return params, nil
-}
-
-func (server Server) MatchRawURL(input string) ([]string, string, bool) {
-	pattern := server.URL
-	var params []string
-	for len(pattern) > 0 {
-		c := pattern[0]
-		if len(pattern) == 1 && c == '/' {
-			break
-		}
-		if c == '{' {
-			// Find end of pattern
-			i := strings.IndexByte(pattern, '}')
-			if i < 0 {
-				return nil, "", false
-			}
-			pattern = pattern[i+1:]
-
-			// Find next matching pattern character or next '/' whichever comes first
-			np := -1
-			if len(pattern) > 0 {
-				np = strings.IndexByte(input, pattern[0])
-			}
-			ns := strings.IndexByte(input, '/')
-
-			if np < 0 {
-				i = ns
-			} else if ns < 0 {
-				i = np
-			} else {
-				i = int(math.Min(float64(np), float64(ns)))
-			}
-			if i < 0 {
-				i = len(input)
-			}
-			params = append(params, input[:i])
-			input = input[i:]
-			continue
-		}
-		if len(input) == 0 || input[0] != c {
-			return nil, "", false
-		}
-		pattern = pattern[1:]
-		input = input[1:]
-	}
-	if input == "" {
-		input = "/"
-	}
-	if input[0] != '/' {
-		return nil, "", false
-	}
-	return params, input, true
-}
-
-// Validate returns an error if Server does not comply with the OpenAPI spec.
-func (server *Server) Validate(ctx context.Context, opts ...ValidationOption) (err error) {
-	ctx = WithValidationOptions(ctx, opts...)
-
-	if server.URL == "" {
-		return errors.New("value of url must be a non-empty string")
-	}
-
-	opening, closing := strings.Count(server.URL, "{"), strings.Count(server.URL, "}")
-	if opening != closing {
-		return errors.New("server URL has mismatched { and }")
-	}
-
-	if opening != len(server.Variables) {
-		return errors.New("server has undeclared variables")
-	}
-
-	variables := make([]string, 0, len(server.Variables))
-	for name := range server.Variables {
-		variables = append(variables, name)
-	}
-	sort.Strings(variables)
-	for _, name := range variables {
-		v := server.Variables[name]
-		if !strings.Contains(server.URL, "{"+name+"}") {
-			return errors.New("server has undeclared variables")
-		}
-		if err = v.Validate(ctx); err != nil {
-			return
-		}
-	}
-
-	return validateExtensions(ctx, server.Extensions)
-}
-
-// ServerVariable is specified by OpenAPI/Swagger standard version 3.
-// See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#server-variable-object
-type ServerVariable struct {
-	Extensions map[string]interface{} `json:"-" yaml:"-"`
-
-	Enum        []string `json:"enum,omitempty" yaml:"enum,omitempty"`
-	Default     string   `json:"default,omitempty" yaml:"default,omitempty"`
-	Description string   `json:"description,omitempty" yaml:"description,omitempty"`
-}
-
-// MarshalJSON returns the JSON encoding of ServerVariable.
-func (serverVariable ServerVariable) MarshalJSON() ([]byte, error) {
-	m := make(map[string]interface{}, 4+len(serverVariable.Extensions))
-	for k, v := range serverVariable.Extensions {
-		m[k] = v
-	}
-	if x := serverVariable.Enum; len(x) != 0 {
-		m["enum"] = x
-	}
-	if x := serverVariable.Default; x != "" {
-		m["default"] = x
-	}
-	if x := serverVariable.Description; x != "" {
-		m["description"] = x
-	}
-	return json.Marshal(m)
-}
-
-// UnmarshalJSON sets ServerVariable to a copy of data.
-func (serverVariable *ServerVariable) UnmarshalJSON(data []byte) error {
-	type ServerVariableBis ServerVariable
-	var x ServerVariableBis
-	if err := json.Unmarshal(data, &x); err != nil {
-		return unmarshalError(err)
-	}
-	_ = json.Unmarshal(data, &x.Extensions)
-	delete(x.Extensions, "enum")
-	delete(x.Extensions, "default")
-	delete(x.Extensions, "description")
-	if len(x.Extensions) == 0 {
-		x.Extensions = nil
-	}
-	*serverVariable = ServerVariable(x)
-	return nil
-}
-
-// Validate returns an error if ServerVariable does not comply with the OpenAPI spec.
-func (serverVariable *ServerVariable) Validate(ctx context.Context, opts ...ValidationOption) error {
-	ctx = WithValidationOptions(ctx, opts...)
-
-	if serverVariable.Default == "" {
-		data, err := serverVariable.MarshalJSON()
-		if err != nil {
-			return err
-		}
-		return fmt.Errorf("field default is required in %s", data)
-	}
-
-	return validateExtensions(ctx, serverVariable.Extensions)
-}
diff --git a/vendor/github.com/getkin/kin-openapi/openapi3/tag.go b/vendor/github.com/getkin/kin-openapi/openapi3/tag.go
deleted file mode 100644
index eea6462f..00000000
--- a/vendor/github.com/getkin/kin-openapi/openapi3/tag.go
+++ /dev/null
@@ -1,90 +0,0 @@
-package openapi3
-
-import (
-	"context"
-	"encoding/json"
-	"fmt"
-)
-
-// Tags is specified by OpenAPI/Swagger 3.0 standard.
-type Tags []*Tag
-
-func (tags Tags) Get(name string) *Tag {
-	for _, tag := range tags {
-		if tag.Name == name {
-			return tag
-		}
-	}
-	return nil
-}
-
-// Validate returns an error if Tags does not comply with the OpenAPI spec.
-func (tags Tags) Validate(ctx context.Context, opts ...ValidationOption) error {
-	ctx = WithValidationOptions(ctx, opts...)
-
-	for _, v := range tags {
-		if err := v.Validate(ctx); err != nil {
-			return err
-		}
-	}
-	return nil
-}
-
-// Tag is specified by OpenAPI/Swagger 3.0 standard.
-// See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#tag-object
-type Tag struct {
-	Extensions map[string]interface{} `json:"-" yaml:"-"`
-
-	Name         string        `json:"name,omitempty" yaml:"name,omitempty"`
-	Description  string        `json:"description,omitempty" yaml:"description,omitempty"`
-	ExternalDocs *ExternalDocs `json:"externalDocs,omitempty" yaml:"externalDocs,omitempty"`
-}
-
-// MarshalJSON returns the JSON encoding of Tag.
-func (t Tag) MarshalJSON() ([]byte, error) {
-	m := make(map[string]interface{}, 3+len(t.Extensions))
-	for k, v := range t.Extensions {
-		m[k] = v
-	}
-	if x := t.Name; x != "" {
-		m["name"] = x
-	}
-	if x := t.Description; x != "" {
-		m["description"] = x
-	}
-	if x := t.ExternalDocs; x != nil {
-		m["externalDocs"] = x
-	}
-	return json.Marshal(m)
-}
-
-// UnmarshalJSON sets Tag to a copy of data.
-func (t *Tag) UnmarshalJSON(data []byte) error {
-	type TagBis Tag
-	var x TagBis
-	if err := json.Unmarshal(data, &x); err != nil {
-		return unmarshalError(err)
-	}
-	_ = json.Unmarshal(data, &x.Extensions)
-	delete(x.Extensions, "name")
-	delete(x.Extensions, "description")
-	delete(x.Extensions, "externalDocs")
-	if len(x.Extensions) == 0 {
-		x.Extensions = nil
-	}
-	*t = Tag(x)
-	return nil
-}
-
-// Validate returns an error if Tag does not comply with the OpenAPI spec.
-func (t *Tag) Validate(ctx context.Context, opts ...ValidationOption) error {
-	ctx = WithValidationOptions(ctx, opts...)
-
-	if v := t.ExternalDocs; v != nil {
-		if err := v.Validate(ctx); err != nil {
-			return fmt.Errorf("invalid external docs: %w", err)
-		}
-	}
-
-	return validateExtensions(ctx, t.Extensions)
-}
diff --git a/vendor/github.com/getkin/kin-openapi/openapi3/testdata/circularRef/base.yml b/vendor/github.com/getkin/kin-openapi/openapi3/testdata/circularRef/base.yml
deleted file mode 100644
index ff8240eb..00000000
--- a/vendor/github.com/getkin/kin-openapi/openapi3/testdata/circularRef/base.yml
+++ /dev/null
@@ -1,16 +0,0 @@
-openapi: "3.0.3"
-info:
-  title: Recursive cyclic refs example
-  version: "1.0"
-components:
-  schemas:
-    Foo:
-      properties:
-        foo2:
-          $ref: "other.yml#/components/schemas/Foo2"
-        bar:
-          $ref: "#/components/schemas/Bar"
-    Bar:
-      properties:
-        foo:
-          $ref: "#/components/schemas/Foo"
diff --git a/vendor/github.com/getkin/kin-openapi/openapi3/testdata/circularRef/other.yml b/vendor/github.com/getkin/kin-openapi/openapi3/testdata/circularRef/other.yml
deleted file mode 100644
index 29b72d98..00000000
--- a/vendor/github.com/getkin/kin-openapi/openapi3/testdata/circularRef/other.yml
+++ /dev/null
@@ -1,10 +0,0 @@
-openapi: "3.0.3"
-info:
-  title: Recursive cyclic refs example
-  version: "1.0"
-components:
-  schemas:
-    Foo2:
-      properties:
-        id:
-          type: string
diff --git a/vendor/github.com/getkin/kin-openapi/openapi3/testdata/recursiveRef/components/Bar.yml b/vendor/github.com/getkin/kin-openapi/openapi3/testdata/recursiveRef/components/Bar.yml
deleted file mode 100644
index cc59fc27..00000000
--- a/vendor/github.com/getkin/kin-openapi/openapi3/testdata/recursiveRef/components/Bar.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-type: string
-example: bar
diff --git a/vendor/github.com/getkin/kin-openapi/openapi3/testdata/recursiveRef/components/Cat.yml b/vendor/github.com/getkin/kin-openapi/openapi3/testdata/recursiveRef/components/Cat.yml
deleted file mode 100644
index c476aa1a..00000000
--- a/vendor/github.com/getkin/kin-openapi/openapi3/testdata/recursiveRef/components/Cat.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-type: object
-properties:
-  cat:
-    $ref: ../openapi.yml#/components/schemas/Cat
diff --git a/vendor/github.com/getkin/kin-openapi/openapi3/testdata/recursiveRef/components/Foo.yml b/vendor/github.com/getkin/kin-openapi/openapi3/testdata/recursiveRef/components/Foo.yml
deleted file mode 100644
index 53a23366..00000000
--- a/vendor/github.com/getkin/kin-openapi/openapi3/testdata/recursiveRef/components/Foo.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-type: object
-properties:
-  bar:
-    $ref: ../openapi.yml#/components/schemas/Bar
diff --git a/vendor/github.com/getkin/kin-openapi/openapi3/testdata/recursiveRef/components/Foo/Foo2.yml b/vendor/github.com/getkin/kin-openapi/openapi3/testdata/recursiveRef/components/Foo/Foo2.yml
deleted file mode 100644
index aeac81f4..00000000
--- a/vendor/github.com/getkin/kin-openapi/openapi3/testdata/recursiveRef/components/Foo/Foo2.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-type: object
-properties:
-  foo:
-    $ref: ../../openapi.yml#/components/schemas/Foo
diff --git a/vendor/github.com/getkin/kin-openapi/openapi3/testdata/recursiveRef/components/models/error.yaml b/vendor/github.com/getkin/kin-openapi/openapi3/testdata/recursiveRef/components/models/error.yaml
deleted file mode 100644
index b4d40479..00000000
--- a/vendor/github.com/getkin/kin-openapi/openapi3/testdata/recursiveRef/components/models/error.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
-type: object
-title: ErrorDetails
diff --git a/vendor/github.com/getkin/kin-openapi/openapi3/testdata/recursiveRef/issue615.yml b/vendor/github.com/getkin/kin-openapi/openapi3/testdata/recursiveRef/issue615.yml
deleted file mode 100644
index d1370e32..00000000
--- a/vendor/github.com/getkin/kin-openapi/openapi3/testdata/recursiveRef/issue615.yml
+++ /dev/null
@@ -1,60 +0,0 @@
-openapi: "3.0.3"
-info:
-  title: Deep recursive cyclic refs example
-  version: "1.0"
-paths:
-  /foo:
-    $ref: ./paths/foo.yml
-components:
-  schemas:
-    FilterColumnIncludes:
-      type: object
-      properties:
-        $includes:
-          $ref: '#/components/schemas/FilterPredicate'
-      additionalProperties: false
-      maxProperties: 1
-      minProperties: 1
-    FilterPredicate:
-      oneOf:
-        - $ref: '#/components/schemas/FilterValue'
-        - type: array
-          items:
-            $ref: '#/components/schemas/FilterPredicate'
-          minLength: 1
-        - $ref: '#/components/schemas/FilterPredicateOp'
-        - $ref: '#/components/schemas/FilterPredicateRangeOp'
-    FilterPredicateOp:
-      type: object
-      properties:
-        $any:
-          oneOf:
-            - type: array
-              items:
-                $ref: '#/components/schemas/FilterPredicate'
-        $none:
-          oneOf:
-            - $ref: '#/components/schemas/FilterPredicate'
-            - type: array
-              items:
-                $ref: '#/components/schemas/FilterPredicate'
-      additionalProperties: false
-      maxProperties: 1
-      minProperties: 1
-    FilterPredicateRangeOp:
-      type: object
-      properties:
-        $lt:
-          $ref: '#/components/schemas/FilterRangeValue'
-      additionalProperties: false
-      maxProperties: 2
-      minProperties: 2
-    FilterRangeValue:
-      oneOf:
-        - type: number
-        - type: string
-    FilterValue:
-      oneOf:
-        - type: number
-        - type: string
-        - type: boolean
\ No newline at end of file
diff --git a/vendor/github.com/getkin/kin-openapi/openapi3/testdata/recursiveRef/openapi.yml b/vendor/github.com/getkin/kin-openapi/openapi3/testdata/recursiveRef/openapi.yml
deleted file mode 100644
index 9f884c71..00000000
--- a/vendor/github.com/getkin/kin-openapi/openapi3/testdata/recursiveRef/openapi.yml
+++ /dev/null
@@ -1,33 +0,0 @@
-openapi: "3.0.3"
-info:
-  title: Recursive refs example
-  version: "1.0"
-paths:
-  /foo:
-    $ref: ./paths/foo.yml
-  /double-ref-foo:
-    get:
-      summary: Double ref response
-      description: Reference response with double reference.
-      responses:
-        "400":
-          $ref: "#/components/responses/400"
-components:
-  schemas:
-    Foo:
-      $ref: ./components/Foo.yml
-    Foo2:
-      $ref: ./components/Foo/Foo2.yml
-    Bar:
-      $ref: ./components/Bar.yml
-    Cat:
-      $ref: ./components/Cat.yml
-    Error:
-      $ref: ./components/models/error.yaml
-  responses:
-    "400":
-      description: 400 Bad Request
-      content:
-        application/json:
-          schema:
-            $ref: "#/components/schemas/Error"
diff --git a/vendor/github.com/getkin/kin-openapi/openapi3/testdata/recursiveRef/openapi.yml.internalized.yml b/vendor/github.com/getkin/kin-openapi/openapi3/testdata/recursiveRef/openapi.yml.internalized.yml
deleted file mode 100644
index 0d508527..00000000
--- a/vendor/github.com/getkin/kin-openapi/openapi3/testdata/recursiveRef/openapi.yml.internalized.yml
+++ /dev/null
@@ -1,110 +0,0 @@
-{
-  "components": {
-    "parameters": {
-      "number": {
-        "in": "query",
-        "name": "someNumber",
-        "schema": {
-          "type": "string"
-        }
-      }
-    },
-    "responses": {
-      "400": {
-        "content": {
-          "application/json": {
-            "schema": {
-              "$ref": "#/components/schemas/Error"
-            }
-          }
-        },
-        "description": "400 Bad Request"
-      }
-    },
-    "schemas": {
-      "Bar": {
-        "example": "bar",
-        "type": "string"
-      },
-      "Error":{
-        "title":"ErrorDetails",
-        "type":"object"
-      },
-      "Foo": {
-        "properties": {
-          "bar": {
-            "$ref": "#/components/schemas/Bar"
-          }
-        },
-        "type": "object"
-      },
-      "Foo2": {
-        "properties": {
-          "foo": {
-            "$ref": "#/components/schemas/Foo"
-          }
-        },
-        "type": "object"
-      },
-      "error":{
-        "title":"ErrorDetails",
-        "type":"object"
-      },
-      "Cat": {
-        "properties": {
-          "cat": {
-            "$ref": "#/components/schemas/Cat"
-          }
-        },
-        "type": "object"
-      }
-    }
-  },
-  "info": {
-    "title": "Recursive refs example",
-    "version": "1.0"
-  },
-  "openapi": "3.0.3",
-  "paths": {
-    "/double-ref-foo": {
-      "get": {
-        "description": "Reference response with double reference.",
-        "responses": {
-          "400": {
-            "$ref": "#/components/responses/400"
-          }
-        },
-        "summary": "Double ref response"
-      }
-    },
-    "/foo": {
-      "get": {
-        "responses": {
-          "200": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "properties": {
-                    "foo2": {
-                      "$ref": "#/components/schemas/Foo2"
-                    }
-                  },
-                  "type": "object"
-                }
-              }
-            },
-            "description": "OK"
-          },
-          "400": {
-            "$ref": "#/components/responses/400"
-          }
-        }
-      },
-      "parameters": [
-        {
-          "$ref": "#/components/parameters/number"
-        }
-      ]
-    }
-  }
-}
diff --git a/vendor/github.com/getkin/kin-openapi/openapi3/testdata/recursiveRef/parameters/number.yml b/vendor/github.com/getkin/kin-openapi/openapi3/testdata/recursiveRef/parameters/number.yml
deleted file mode 100644
index 29f0f264..00000000
--- a/vendor/github.com/getkin/kin-openapi/openapi3/testdata/recursiveRef/parameters/number.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-name: someNumber
-in: query
-schema:
-  type: string
diff --git a/vendor/github.com/getkin/kin-openapi/openapi3/testdata/recursiveRef/paths/foo.yml b/vendor/github.com/getkin/kin-openapi/openapi3/testdata/recursiveRef/paths/foo.yml
deleted file mode 100644
index 4c845b53..00000000
--- a/vendor/github.com/getkin/kin-openapi/openapi3/testdata/recursiveRef/paths/foo.yml
+++ /dev/null
@@ -1,15 +0,0 @@
-parameters:
-  - $ref: ../parameters/number.yml
-get:
-  responses:
-    "200":
-      description: OK
-      content:
-        application/json:
-          schema:
-            type: object
-            properties:
-              foo2:
-                $ref: ../openapi.yml#/components/schemas/Foo2
-    "400":
-      $ref: "../openapi.yml#/components/responses/400"
diff --git a/vendor/github.com/getkin/kin-openapi/openapi3/validation_options.go b/vendor/github.com/getkin/kin-openapi/openapi3/validation_options.go
deleted file mode 100644
index 8982594b..00000000
--- a/vendor/github.com/getkin/kin-openapi/openapi3/validation_options.go
+++ /dev/null
@@ -1,112 +0,0 @@
-package openapi3
-
-import "context"
-
-// ValidationOption allows the modification of how the OpenAPI document is validated.
-type ValidationOption func(options *ValidationOptions)
-
-// ValidationOptions provides configuration for validating OpenAPI documents.
-type ValidationOptions struct {
-	examplesValidationAsReq, examplesValidationAsRes bool
-	examplesValidationDisabled                       bool
-	schemaDefaultsValidationDisabled                 bool
-	schemaFormatValidationEnabled                    bool
-	schemaPatternValidationDisabled                  bool
-	extraSiblingFieldsAllowed                        map[string]struct{}
-}
-
-type validationOptionsKey struct{}
-
-// AllowExtraSiblingFields called as AllowExtraSiblingFields("description") makes Validate not return an error when said field appears next to a $ref.
-func AllowExtraSiblingFields(fields ...string) ValidationOption {
-	return func(options *ValidationOptions) {
-		if options.extraSiblingFieldsAllowed == nil && len(fields) != 0 {
-			options.extraSiblingFieldsAllowed = make(map[string]struct{}, len(fields))
-		}
-		for _, field := range fields {
-			options.extraSiblingFieldsAllowed[field] = struct{}{}
-		}
-	}
-}
-
-// EnableSchemaFormatValidation makes Validate not return an error when validating documents that mention schema formats that are not defined by the OpenAPIv3 specification.
-// By default, schema format validation is disabled.
-func EnableSchemaFormatValidation() ValidationOption {
-	return func(options *ValidationOptions) {
-		options.schemaFormatValidationEnabled = true
-	}
-}
-
-// DisableSchemaFormatValidation does the opposite of EnableSchemaFormatValidation.
-// By default, schema format validation is disabled.
-func DisableSchemaFormatValidation() ValidationOption {
-	return func(options *ValidationOptions) {
-		options.schemaFormatValidationEnabled = false
-	}
-}
-
-// EnableSchemaPatternValidation does the opposite of DisableSchemaPatternValidation.
-// By default, schema pattern validation is enabled.
-func EnableSchemaPatternValidation() ValidationOption {
-	return func(options *ValidationOptions) {
-		options.schemaPatternValidationDisabled = false
-	}
-}
-
-// DisableSchemaPatternValidation makes Validate not return an error when validating patterns that are not supported by the Go regexp engine.
-func DisableSchemaPatternValidation() ValidationOption {
-	return func(options *ValidationOptions) {
-		options.schemaPatternValidationDisabled = true
-	}
-}
-
-// EnableSchemaDefaultsValidation does the opposite of DisableSchemaDefaultsValidation.
-// By default, schema default values are validated against their schema.
-func EnableSchemaDefaultsValidation() ValidationOption {
-	return func(options *ValidationOptions) {
-		options.schemaDefaultsValidationDisabled = false
-	}
-}
-
-// DisableSchemaDefaultsValidation disables schemas' default field validation.
-// By default, schema default values are validated against their schema.
-func DisableSchemaDefaultsValidation() ValidationOption {
-	return func(options *ValidationOptions) {
-		options.schemaDefaultsValidationDisabled = true
-	}
-}
-
-// EnableExamplesValidation does the opposite of DisableExamplesValidation.
-// By default, all schema examples are validated.
-func EnableExamplesValidation() ValidationOption {
-	return func(options *ValidationOptions) {
-		options.examplesValidationDisabled = false
-	}
-}
-
-// DisableExamplesValidation disables all example schema validation.
-// By default, all schema examples are validated.
-func DisableExamplesValidation() ValidationOption {
-	return func(options *ValidationOptions) {
-		options.examplesValidationDisabled = true
-	}
-}
-
-// WithValidationOptions allows adding validation options to a context object that can be used when validating any OpenAPI type.
-func WithValidationOptions(ctx context.Context, opts ...ValidationOption) context.Context {
-	if len(opts) == 0 {
-		return ctx
-	}
-	options := &ValidationOptions{}
-	for _, opt := range opts {
-		opt(options)
-	}
-	return context.WithValue(ctx, validationOptionsKey{}, options)
-}
-
-func getValidationOptions(ctx context.Context) *ValidationOptions {
-	if options, ok := ctx.Value(validationOptionsKey{}).(*ValidationOptions); ok {
-		return options
-	}
-	return &ValidationOptions{}
-}
diff --git a/vendor/github.com/getkin/kin-openapi/openapi3/visited.go b/vendor/github.com/getkin/kin-openapi/openapi3/visited.go
deleted file mode 100644
index 67f970e3..00000000
--- a/vendor/github.com/getkin/kin-openapi/openapi3/visited.go
+++ /dev/null
@@ -1,41 +0,0 @@
-package openapi3
-
-func newVisited() visitedComponent {
-	return visitedComponent{
-		header: make(map[*Header]struct{}),
-		schema: make(map[*Schema]struct{}),
-	}
-}
-
-type visitedComponent struct {
-	header map[*Header]struct{}
-	schema map[*Schema]struct{}
-}
-
-// resetVisited clears visitedComponent map
-// should be called before recursion over doc *T
-func (doc *T) resetVisited() {
-	doc.visited = newVisited()
-}
-
-// isVisitedHeader returns `true` if the *Header pointer was already visited
-// otherwise it returns `false`
-func (doc *T) isVisitedHeader(h *Header) bool {
-	if _, ok := doc.visited.header[h]; ok {
-		return true
-	}
-
-	doc.visited.header[h] = struct{}{}
-	return false
-}
-
-// isVisitedHeader returns `true` if the *Schema pointer was already visited
-// otherwise it returns `false`
-func (doc *T) isVisitedSchema(s *Schema) bool {
-	if _, ok := doc.visited.schema[s]; ok {
-		return true
-	}
-
-	doc.visited.schema[s] = struct{}{}
-	return false
-}
diff --git a/vendor/github.com/getkin/kin-openapi/openapi3/xml.go b/vendor/github.com/getkin/kin-openapi/openapi3/xml.go
deleted file mode 100644
index 604b607d..00000000
--- a/vendor/github.com/getkin/kin-openapi/openapi3/xml.go
+++ /dev/null
@@ -1,69 +0,0 @@
-package openapi3
-
-import (
-	"context"
-	"encoding/json"
-)
-
-// XML is specified by OpenAPI/Swagger standard version 3.
-// See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#xml-object
-type XML struct {
-	Extensions map[string]interface{} `json:"-" yaml:"-"`
-
-	Name      string `json:"name,omitempty" yaml:"name,omitempty"`
-	Namespace string `json:"namespace,omitempty" yaml:"namespace,omitempty"`
-	Prefix    string `json:"prefix,omitempty" yaml:"prefix,omitempty"`
-	Attribute bool   `json:"attribute,omitempty" yaml:"attribute,omitempty"`
-	Wrapped   bool   `json:"wrapped,omitempty" yaml:"wrapped,omitempty"`
-}
-
-// MarshalJSON returns the JSON encoding of XML.
-func (xml XML) MarshalJSON() ([]byte, error) {
-	m := make(map[string]interface{}, 5+len(xml.Extensions))
-	for k, v := range xml.Extensions {
-		m[k] = v
-	}
-	if x := xml.Name; x != "" {
-		m["name"] = x
-	}
-	if x := xml.Namespace; x != "" {
-		m["namespace"] = x
-	}
-	if x := xml.Prefix; x != "" {
-		m["prefix"] = x
-	}
-	if x := xml.Attribute; x {
-		m["attribute"] = x
-	}
-	if x := xml.Wrapped; x {
-		m["wrapped"] = x
-	}
-	return json.Marshal(m)
-}
-
-// UnmarshalJSON sets XML to a copy of data.
-func (xml *XML) UnmarshalJSON(data []byte) error {
-	type XMLBis XML
-	var x XMLBis
-	if err := json.Unmarshal(data, &x); err != nil {
-		return unmarshalError(err)
-	}
-	_ = json.Unmarshal(data, &x.Extensions)
-	delete(x.Extensions, "name")
-	delete(x.Extensions, "namespace")
-	delete(x.Extensions, "prefix")
-	delete(x.Extensions, "attribute")
-	delete(x.Extensions, "wrapped")
-	if len(x.Extensions) == 0 {
-		x.Extensions = nil
-	}
-	*xml = XML(x)
-	return nil
-}
-
-// Validate returns an error if XML does not comply with the OpenAPI spec.
-func (xml *XML) Validate(ctx context.Context, opts ...ValidationOption) error {
-	ctx = WithValidationOptions(ctx, opts...)
-
-	return validateExtensions(ctx, xml.Extensions)
-}
diff --git a/vendor/github.com/invopop/yaml/.gitignore b/vendor/github.com/invopop/yaml/.gitignore
deleted file mode 100644
index e256a31e..00000000
--- a/vendor/github.com/invopop/yaml/.gitignore
+++ /dev/null
@@ -1,20 +0,0 @@
-# OSX leaves these everywhere on SMB shares
-._*
-
-# Eclipse files
-.classpath
-.project
-.settings/**
-
-# Emacs save files
-*~
-
-# Vim-related files
-[._]*.s[a-w][a-z]
-[._]s[a-w][a-z]
-*.un~
-Session.vim
-.netrwhist
-
-# Go test binaries
-*.test
diff --git a/vendor/github.com/invopop/yaml/.golangci.toml b/vendor/github.com/invopop/yaml/.golangci.toml
deleted file mode 100644
index 4a438ca2..00000000
--- a/vendor/github.com/invopop/yaml/.golangci.toml
+++ /dev/null
@@ -1,15 +0,0 @@
-[run]
-timeout = "120s"
-
-[output]
-format = "colored-line-number"
-
-[linters]
-enable = [
-    "gocyclo", "unconvert", "goimports", "unused", "varcheck",
-    "vetshadow", "misspell", "nakedret", "errcheck", "revive", "ineffassign",
-    "deadcode", "goconst", "vet", "unparam", "gofmt"
-]
-
-[issues]
-exclude-use-default = false
diff --git a/vendor/github.com/invopop/yaml/LICENSE b/vendor/github.com/invopop/yaml/LICENSE
deleted file mode 100644
index 7805d36d..00000000
--- a/vendor/github.com/invopop/yaml/LICENSE
+++ /dev/null
@@ -1,50 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2014 Sam Ghods
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
-
-Copyright (c) 2012 The Go Authors. All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-   * Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer.
-   * Redistributions in binary form must reproduce the above
-copyright notice, this list of conditions and the following disclaimer
-in the documentation and/or other materials provided with the
-distribution.
-   * Neither the name of Google Inc. nor the names of its
-contributors may be used to endorse or promote products derived from
-this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/github.com/invopop/yaml/README.md b/vendor/github.com/invopop/yaml/README.md
deleted file mode 100644
index 2c33dfe5..00000000
--- a/vendor/github.com/invopop/yaml/README.md
+++ /dev/null
@@ -1,128 +0,0 @@
-# YAML marshaling and unmarshaling support for Go
-
-[![Lint](https://github.com/invopop/yaml/actions/workflows/lint.yaml/badge.svg)](https://github.com/invopop/yaml/actions/workflows/lint.yaml)
-[![Test Go](https://github.com/invopop/yaml/actions/workflows/test.yaml/badge.svg)](https://github.com/invopop/yaml/actions/workflows/test.yaml)
-[![Go Report Card](https://goreportcard.com/badge/github.com/invopop/yaml)](https://goreportcard.com/report/github.com/invopop/yaml)
-![Latest Tag](https://img.shields.io/github/v/tag/invopop/yaml)
-
-## Introduction
-
-A wrapper around [go-yaml](https://github.com/go-yaml/yaml) designed to enable a better way of handling YAML when marshaling to and from structs.
-
-This is a fork and split of the original [ghodss/yaml](https://github.com/ghodss/yaml) repository which no longer appears to be maintained.
-
-In short, this library first converts YAML to JSON using go-yaml and then uses `json.Marshal` and `json.Unmarshal` to convert to or from the struct. This means that it effectively reuses the JSON struct tags as well as the custom JSON methods `MarshalJSON` and `UnmarshalJSON` unlike go-yaml. For a detailed overview of the rationale behind this method, [see this blog post](https://web.archive.org/web/20150812020634/http://ghodss.com/2014/the-right-way-to-handle-yaml-in-golang/).
-
-## Compatibility
-
-This package uses [go-yaml](https://github.com/go-yaml/yaml) and therefore supports [everything go-yaml supports](https://github.com/go-yaml/yaml#compatibility).
-
-Tested against Go versions 1.14 and onwards.
-
-## Caveats
-
-**Caveat #1:** When using `yaml.Marshal` and `yaml.Unmarshal`, binary data should NOT be preceded with the `!!binary` YAML tag. If you do, go-yaml will convert the binary data from base64 to native binary data, which is not compatible with JSON. You can still use binary in your YAML files though - just store them without the `!!binary` tag and decode the base64 in your code (e.g. in the custom JSON methods `MarshalJSON` and `UnmarshalJSON`). This also has the benefit that your YAML and your JSON binary data will be decoded exactly the same way. As an example:
-
-```
-BAD:
-	exampleKey: !!binary gIGC
-
-GOOD:
-	exampleKey: gIGC
-... and decode the base64 data in your code.
-```
-
-**Caveat #2:** When using `YAMLToJSON` directly, maps with keys that are maps will result in an error since this is not supported by JSON. This error will occur in `Unmarshal` as well since you can't unmarshal map keys anyways since struct fields can't be keys.
-
-## Installation and usage
-
-To install, run:
-
-```
-$ go get github.com/invopop/yaml
-```
-
-And import using:
-
-```
-import "github.com/invopop/yaml"
-```
-
-Usage is very similar to the JSON library:
-
-```go
-package main
-
-import (
-	"fmt"
-
-	"github.com/invopop/yaml"
-)
-
-type Person struct {
-	Name string `json:"name"` // Affects YAML field names too.
-	Age  int    `json:"age"`
-}
-
-func main() {
-	// Marshal a Person struct to YAML.
-	p := Person{"John", 30}
-	y, err := yaml.Marshal(p)
-	if err != nil {
-		fmt.Printf("err: %v\n", err)
-		return
-	}
-	fmt.Println(string(y))
-	/* Output:
-	age: 30
-	name: John
-	*/
-
-	// Unmarshal the YAML back into a Person struct.
-	var p2 Person
-	err = yaml.Unmarshal(y, &p2)
-	if err != nil {
-		fmt.Printf("err: %v\n", err)
-		return
-	}
-	fmt.Println(p2)
-	/* Output:
-	{John 30}
-	*/
-}
-```
-
-`yaml.YAMLToJSON` and `yaml.JSONToYAML` methods are also available:
-
-```go
-package main
-
-import (
-	"fmt"
-
-	"github.com/invopop/yaml"
-)
-
-func main() {
-	j := []byte(`{"name": "John", "age": 30}`)
-	y, err := yaml.JSONToYAML(j)
-	if err != nil {
-		fmt.Printf("err: %v\n", err)
-		return
-	}
-	fmt.Println(string(y))
-	/* Output:
-	name: John
-	age: 30
-	*/
-	j2, err := yaml.YAMLToJSON(y)
-	if err != nil {
-		fmt.Printf("err: %v\n", err)
-		return
-	}
-	fmt.Println(string(j2))
-	/* Output:
-	{"age":30,"name":"John"}
-	*/
-}
-```
diff --git a/vendor/github.com/invopop/yaml/fields.go b/vendor/github.com/invopop/yaml/fields.go
deleted file mode 100644
index 52b30c6b..00000000
--- a/vendor/github.com/invopop/yaml/fields.go
+++ /dev/null
@@ -1,498 +0,0 @@
-// Copyright 2013 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package yaml
-
-import (
-	"bytes"
-	"encoding"
-	"encoding/json"
-	"reflect"
-	"sort"
-	"strings"
-	"sync"
-	"unicode"
-	"unicode/utf8"
-)
-
-// indirect walks down v allocating pointers as needed,
-// until it gets to a non-pointer.
-// if it encounters an Unmarshaler, indirect stops and returns that.
-// if decodingNull is true, indirect stops at the last pointer so it can be set to nil.
-func indirect(v reflect.Value, decodingNull bool) (json.Unmarshaler, encoding.TextUnmarshaler, reflect.Value) {
-	// If v is a named type and is addressable,
-	// start with its address, so that if the type has pointer methods,
-	// we find them.
-	if v.Kind() != reflect.Ptr && v.Type().Name() != "" && v.CanAddr() {
-		v = v.Addr()
-	}
-	for {
-		// Load value from interface, but only if the result will be
-		// usefully addressable.
-		if v.Kind() == reflect.Interface && !v.IsNil() {
-			e := v.Elem()
-			if e.Kind() == reflect.Ptr && !e.IsNil() && (!decodingNull || e.Elem().Kind() == reflect.Ptr) {
-				v = e
-				continue
-			}
-		}
-
-		if v.Kind() != reflect.Ptr {
-			break
-		}
-
-		if v.Elem().Kind() != reflect.Ptr && decodingNull && v.CanSet() {
-			break
-		}
-		if v.IsNil() {
-			if v.CanSet() {
-				v.Set(reflect.New(v.Type().Elem()))
-			} else {
-				v = reflect.New(v.Type().Elem())
-			}
-		}
-		if v.Type().NumMethod() > 0 {
-			if u, ok := v.Interface().(json.Unmarshaler); ok {
-				return u, nil, reflect.Value{}
-			}
-			if u, ok := v.Interface().(encoding.TextUnmarshaler); ok {
-				return nil, u, reflect.Value{}
-			}
-		}
-		v = v.Elem()
-	}
-	return nil, nil, v
-}
-
-// A field represents a single field found in a struct.
-type field struct {
-	name      string
-	nameBytes []byte                 // []byte(name)
-	equalFold func(s, t []byte) bool // bytes.EqualFold or equivalent
-
-	tag       bool
-	index     []int
-	typ       reflect.Type
-	omitEmpty bool
-	quoted    bool
-}
-
-func fillField(f field) field {
-	f.nameBytes = []byte(f.name)
-	f.equalFold = foldFunc(f.nameBytes)
-	return f
-}
-
-// byName sorts field by name, breaking ties with depth,
-// then breaking ties with "name came from json tag", then
-// breaking ties with index sequence.
-type byName []field
-
-func (x byName) Len() int { return len(x) }
-
-func (x byName) Swap(i, j int) { x[i], x[j] = x[j], x[i] }
-
-func (x byName) Less(i, j int) bool {
-	if x[i].name != x[j].name {
-		return x[i].name < x[j].name
-	}
-	if len(x[i].index) != len(x[j].index) {
-		return len(x[i].index) < len(x[j].index)
-	}
-	if x[i].tag != x[j].tag {
-		return x[i].tag
-	}
-	return byIndex(x).Less(i, j)
-}
-
-// byIndex sorts field by index sequence.
-type byIndex []field
-
-func (x byIndex) Len() int { return len(x) }
-
-func (x byIndex) Swap(i, j int) { x[i], x[j] = x[j], x[i] }
-
-func (x byIndex) Less(i, j int) bool {
-	for k, xik := range x[i].index {
-		if k >= len(x[j].index) {
-			return false
-		}
-		if xik != x[j].index[k] {
-			return xik < x[j].index[k]
-		}
-	}
-	return len(x[i].index) < len(x[j].index)
-}
-
-// typeFields returns a list of fields that JSON should recognize for the given type.
-// The algorithm is breadth-first search over the set of structs to include - the top struct
-// and then any reachable anonymous structs.
-func typeFields(t reflect.Type) []field {
-	// Anonymous fields to explore at the current level and the next.
-	current := []field{}
-	next := []field{{typ: t}}
-
-	// Count of queued names for current level and the next.
-	var count, nextCount map[reflect.Type]int
-
-	// Types already visited at an earlier level.
-	visited := map[reflect.Type]bool{}
-
-	// Fields found.
-	var fields []field
-
-	for len(next) > 0 {
-		current, next = next, current[:0]
-		count, nextCount = nextCount, map[reflect.Type]int{}
-
-		for _, f := range current {
-			if visited[f.typ] {
-				continue
-			}
-			visited[f.typ] = true
-
-			// Scan f.typ for fields to include.
-			for i := 0; i < f.typ.NumField(); i++ {
-				sf := f.typ.Field(i)
-				if sf.PkgPath != "" { // unexported
-					continue
-				}
-				tag := sf.Tag.Get("json")
-				if tag == "-" {
-					continue
-				}
-				name, opts := parseTag(tag)
-				if !isValidTag(name) {
-					name = ""
-				}
-				index := make([]int, len(f.index)+1)
-				copy(index, f.index)
-				index[len(f.index)] = i
-
-				ft := sf.Type
-				if ft.Name() == "" && ft.Kind() == reflect.Ptr {
-					// Follow pointer.
-					ft = ft.Elem()
-				}
-
-				// Record found field and index sequence.
-				if name != "" || !sf.Anonymous || ft.Kind() != reflect.Struct {
-					tagged := name != ""
-					if name == "" {
-						name = sf.Name
-					}
-					fields = append(fields, fillField(field{
-						name:      name,
-						tag:       tagged,
-						index:     index,
-						typ:       ft,
-						omitEmpty: opts.Contains("omitempty"),
-						quoted:    opts.Contains("string"),
-					}))
-					if count[f.typ] > 1 {
-						// If there were multiple instances, add a second,
-						// so that the annihilation code will see a duplicate.
-						// It only cares about the distinction between 1 or 2,
-						// so don't bother generating any more copies.
-						fields = append(fields, fields[len(fields)-1])
-					}
-					continue
-				}
-
-				// Record new anonymous struct to explore in next round.
-				nextCount[ft]++
-				if nextCount[ft] == 1 {
-					next = append(next, fillField(field{name: ft.Name(), index: index, typ: ft}))
-				}
-			}
-		}
-	}
-
-	sort.Sort(byName(fields))
-
-	// Delete all fields that are hidden by the Go rules for embedded fields,
-	// except that fields with JSON tags are promoted.
-
-	// The fields are sorted in primary order of name, secondary order
-	// of field index length. Loop over names; for each name, delete
-	// hidden fields by choosing the one dominant field that survives.
-	out := fields[:0]
-	for advance, i := 0, 0; i < len(fields); i += advance {
-		// One iteration per name.
-		// Find the sequence of fields with the name of this first field.
-		fi := fields[i]
-		name := fi.name
-		for advance = 1; i+advance < len(fields); advance++ {
-			fj := fields[i+advance]
-			if fj.name != name {
-				break
-			}
-		}
-		if advance == 1 { // Only one field with this name
-			out = append(out, fi)
-			continue
-		}
-		dominant, ok := dominantField(fields[i : i+advance])
-		if ok {
-			out = append(out, dominant)
-		}
-	}
-
-	fields = out
-	sort.Sort(byIndex(fields))
-
-	return fields
-}
-
-// dominantField looks through the fields, all of which are known to
-// have the same name, to find the single field that dominates the
-// others using Go's embedding rules, modified by the presence of
-// JSON tags. If there are multiple top-level fields, the boolean
-// will be false: This condition is an error in Go and we skip all
-// the fields.
-func dominantField(fields []field) (field, bool) {
-	// The fields are sorted in increasing index-length order. The winner
-	// must therefore be one with the shortest index length. Drop all
-	// longer entries, which is easy: just truncate the slice.
-	length := len(fields[0].index)
-	tagged := -1 // Index of first tagged field.
-	for i, f := range fields {
-		if len(f.index) > length {
-			fields = fields[:i]
-			break
-		}
-		if f.tag {
-			if tagged >= 0 {
-				// Multiple tagged fields at the same level: conflict.
-				// Return no field.
-				return field{}, false
-			}
-			tagged = i
-		}
-	}
-	if tagged >= 0 {
-		return fields[tagged], true
-	}
-	// All remaining fields have the same length. If there's more than one,
-	// we have a conflict (two fields named "X" at the same level) and we
-	// return no field.
-	if len(fields) > 1 {
-		return field{}, false
-	}
-	return fields[0], true
-}
-
-var fieldCache struct {
-	sync.RWMutex
-	m map[reflect.Type][]field
-}
-
-// cachedTypeFields is like typeFields but uses a cache to avoid repeated work.
-func cachedTypeFields(t reflect.Type) []field {
-	fieldCache.RLock()
-	f := fieldCache.m[t]
-	fieldCache.RUnlock()
-	if f != nil {
-		return f
-	}
-
-	// Compute fields without lock.
-	// Might duplicate effort but won't hold other computations back.
-	f = typeFields(t)
-	if f == nil {
-		f = []field{}
-	}
-
-	fieldCache.Lock()
-	if fieldCache.m == nil {
-		fieldCache.m = map[reflect.Type][]field{}
-	}
-	fieldCache.m[t] = f
-	fieldCache.Unlock()
-	return f
-}
-
-func isValidTag(s string) bool {
-	if s == "" {
-		return false
-	}
-	for _, c := range s {
-		switch {
-		case strings.ContainsRune("!#$%&()*+-./:<=>?@[]^_{|}~ ", c):
-			// Backslash and quote chars are reserved, but
-			// otherwise any punctuation chars are allowed
-			// in a tag name.
-		default:
-			if !unicode.IsLetter(c) && !unicode.IsDigit(c) {
-				return false
-			}
-		}
-	}
-	return true
-}
-
-const (
-	caseMask     = ^byte(0x20) // Mask to ignore case in ASCII.
-	kelvin       = '\u212a'
-	smallLongEss = '\u017f'
-)
-
-// foldFunc returns one of four different case folding equivalence
-// functions, from most general (and slow) to fastest:
-//
-// 1) bytes.EqualFold, if the key s contains any non-ASCII UTF-8
-// 2) equalFoldRight, if s contains special folding ASCII ('k', 'K', 's', 'S')
-// 3) asciiEqualFold, no special, but includes non-letters (including _)
-// 4) simpleLetterEqualFold, no specials, no non-letters.
-//
-// The letters S and K are special because they map to 3 runes, not just 2:
-//  * S maps to s and to U+017F 'ſ' Latin small letter long s
-//  * k maps to K and to U+212A 'K' Kelvin sign
-// See http://play.golang.org/p/tTxjOc0OGo
-//
-// The returned function is specialized for matching against s and
-// should only be given s. It's not curried for performance reasons.
-func foldFunc(s []byte) func(s, t []byte) bool {
-	nonLetter := false
-	special := false // special letter
-	for _, b := range s {
-		if b >= utf8.RuneSelf {
-			return bytes.EqualFold
-		}
-		upper := b & caseMask
-		if upper < 'A' || upper > 'Z' {
-			nonLetter = true
-		} else if upper == 'K' || upper == 'S' {
-			// See above for why these letters are special.
-			special = true
-		}
-	}
-	if special {
-		return equalFoldRight
-	}
-	if nonLetter {
-		return asciiEqualFold
-	}
-	return simpleLetterEqualFold
-}
-
-// equalFoldRight is a specialization of bytes.EqualFold when s is
-// known to be all ASCII (including punctuation), but contains an 's',
-// 'S', 'k', or 'K', requiring a Unicode fold on the bytes in t.
-// See comments on foldFunc.
-func equalFoldRight(s, t []byte) bool {
-	for _, sb := range s {
-		if len(t) == 0 {
-			return false
-		}
-		tb := t[0]
-		if tb < utf8.RuneSelf {
-			if sb != tb {
-				sbUpper := sb & caseMask
-				if 'A' <= sbUpper && sbUpper <= 'Z' {
-					if sbUpper != tb&caseMask {
-						return false
-					}
-				} else {
-					return false
-				}
-			}
-			t = t[1:]
-			continue
-		}
-		// sb is ASCII and t is not. t must be either kelvin
-		// sign or long s; sb must be s, S, k, or K.
-		tr, size := utf8.DecodeRune(t)
-		switch sb {
-		case 's', 'S':
-			if tr != smallLongEss {
-				return false
-			}
-		case 'k', 'K':
-			if tr != kelvin {
-				return false
-			}
-		default:
-			return false
-		}
-		t = t[size:]
-
-	}
-	return len(t) <= 0
-}
-
-// asciiEqualFold is a specialization of bytes.EqualFold for use when
-// s is all ASCII (but may contain non-letters) and contains no
-// special-folding letters.
-// See comments on foldFunc.
-func asciiEqualFold(s, t []byte) bool {
-	if len(s) != len(t) {
-		return false
-	}
-	for i, sb := range s {
-		tb := t[i]
-		if sb == tb {
-			continue
-		}
-		if ('a' <= sb && sb <= 'z') || ('A' <= sb && sb <= 'Z') {
-			if sb&caseMask != tb&caseMask {
-				return false
-			}
-		} else {
-			return false
-		}
-	}
-	return true
-}
-
-// simpleLetterEqualFold is a specialization of bytes.EqualFold for
-// use when s is all ASCII letters (no underscores, etc) and also
-// doesn't contain 'k', 'K', 's', or 'S'.
-// See comments on foldFunc.
-func simpleLetterEqualFold(s, t []byte) bool {
-	if len(s) != len(t) {
-		return false
-	}
-	for i, b := range s {
-		if b&caseMask != t[i]&caseMask {
-			return false
-		}
-	}
-	return true
-}
-
-// tagOptions is the string following a comma in a struct field's "json"
-// tag, or the empty string. It does not include the leading comma.
-type tagOptions string
-
-// parseTag splits a struct field's json tag into its name and
-// comma-separated options.
-func parseTag(tag string) (string, tagOptions) {
-	if idx := strings.Index(tag, ","); idx != -1 {
-		return tag[:idx], tagOptions(tag[idx+1:])
-	}
-	return tag, tagOptions("")
-}
-
-// Contains reports whether a comma-separated list of options
-// contains a particular substr flag. substr must be surrounded by a
-// string boundary or commas.
-func (o tagOptions) Contains(optionName string) bool {
-	if len(o) == 0 {
-		return false
-	}
-	s := string(o)
-	for s != "" {
-		var next string
-		i := strings.Index(s, ",")
-		if i >= 0 {
-			s, next = s[:i], s[i+1:]
-		}
-		if s == optionName {
-			return true
-		}
-		s = next
-	}
-	return false
-}
diff --git a/vendor/github.com/invopop/yaml/yaml.go b/vendor/github.com/invopop/yaml/yaml.go
deleted file mode 100644
index 805d515d..00000000
--- a/vendor/github.com/invopop/yaml/yaml.go
+++ /dev/null
@@ -1,314 +0,0 @@
-// Package yaml provides a wrapper around go-yaml designed to enable a better
-// way of handling YAML when marshaling to and from structs.
-//
-// In short, this package first converts YAML to JSON using go-yaml and then
-// uses json.Marshal and json.Unmarshal to convert to or from the struct. This
-// means that it effectively reuses the JSON struct tags as well as the custom
-// JSON methods MarshalJSON and UnmarshalJSON unlike go-yaml.
-//
-package yaml // import "github.com/invopop/yaml"
-
-import (
-	"bytes"
-	"encoding/json"
-	"errors"
-	"fmt"
-	"io"
-	"reflect"
-	"strconv"
-
-	"gopkg.in/yaml.v3"
-)
-
-// Marshal the object into JSON then converts JSON to YAML and returns the
-// YAML.
-func Marshal(o interface{}) ([]byte, error) {
-	j, err := json.Marshal(o)
-	if err != nil {
-		return nil, fmt.Errorf("error marshaling into JSON: %v", err)
-	}
-
-	y, err := JSONToYAML(j)
-	if err != nil {
-		return nil, fmt.Errorf("error converting JSON to YAML: %v", err)
-	}
-
-	return y, nil
-}
-
-// JSONOpt is a decoding option for decoding from JSON format.
-type JSONOpt func(*json.Decoder) *json.Decoder
-
-// Unmarshal converts YAML to JSON then uses JSON to unmarshal into an object,
-// optionally configuring the behavior of the JSON unmarshal.
-func Unmarshal(y []byte, o interface{}, opts ...JSONOpt) error {
-	dec := yaml.NewDecoder(bytes.NewReader(y))
-	return unmarshal(dec, o, opts)
-}
-
-func unmarshal(dec *yaml.Decoder, o interface{}, opts []JSONOpt) error {
-	vo := reflect.ValueOf(o)
-	j, err := yamlToJSON(dec, &vo)
-	if err != nil {
-		return fmt.Errorf("error converting YAML to JSON: %v", err)
-	}
-
-	err = jsonUnmarshal(bytes.NewReader(j), o, opts...)
-	if err != nil {
-		return fmt.Errorf("error unmarshaling JSON: %v", err)
-	}
-
-	return nil
-}
-
-// jsonUnmarshal unmarshals the JSON byte stream from the given reader into the
-// object, optionally applying decoder options prior to decoding.  We are not
-// using json.Unmarshal directly as we want the chance to pass in non-default
-// options.
-func jsonUnmarshal(r io.Reader, o interface{}, opts ...JSONOpt) error {
-	d := json.NewDecoder(r)
-	for _, opt := range opts {
-		d = opt(d)
-	}
-	if err := d.Decode(&o); err != nil {
-		return fmt.Errorf("while decoding JSON: %v", err)
-	}
-	return nil
-}
-
-// JSONToYAML converts JSON to YAML.
-func JSONToYAML(j []byte) ([]byte, error) {
-	// Convert the JSON to an object.
-	var jsonObj interface{}
-	// We are using yaml.Unmarshal here (instead of json.Unmarshal) because the
-	// Go JSON library doesn't try to pick the right number type (int, float,
-	// etc.) when unmarshalling to interface{}, it just picks float64
-	// universally. go-yaml does go through the effort of picking the right
-	// number type, so we can preserve number type throughout this process.
-	err := yaml.Unmarshal(j, &jsonObj)
-	if err != nil {
-		return nil, err
-	}
-
-	// Marshal this object into YAML.
-	return yaml.Marshal(jsonObj)
-}
-
-// YAMLToJSON converts YAML to JSON. Since JSON is a subset of YAML,
-// passing JSON through this method should be a no-op.
-//
-// Things YAML can do that are not supported by JSON:
-// * In YAML you can have binary and null keys in your maps. These are invalid
-//   in JSON. (int and float keys are converted to strings.)
-// * Binary data in YAML with the !!binary tag is not supported. If you want to
-//   use binary data with this library, encode the data as base64 as usual but do
-//   not use the !!binary tag in your YAML. This will ensure the original base64
-//   encoded data makes it all the way through to the JSON.
-//
-func YAMLToJSON(y []byte) ([]byte, error) { //nolint:revive
-	dec := yaml.NewDecoder(bytes.NewReader(y))
-	return yamlToJSON(dec, nil)
-}
-
-func yamlToJSON(dec *yaml.Decoder, jsonTarget *reflect.Value) ([]byte, error) {
-	// Convert the YAML to an object.
-	var yamlObj interface{}
-	if err := dec.Decode(&yamlObj); err != nil {
-		// Functionality changed in v3 which means we need to ignore EOF error.
-		// See https://github.com/go-yaml/yaml/issues/639
-		if !errors.Is(err, io.EOF) {
-			return nil, err
-		}
-	}
-
-	// YAML objects are not completely compatible with JSON objects (e.g. you
-	// can have non-string keys in YAML). So, convert the YAML-compatible object
-	// to a JSON-compatible object, failing with an error if irrecoverable
-	// incompatibilities happen along the way.
-	jsonObj, err := convertToJSONableObject(yamlObj, jsonTarget)
-	if err != nil {
-		return nil, err
-	}
-
-	// Convert this object to JSON and return the data.
-	return json.Marshal(jsonObj)
-}
-
-func convertToJSONableObject(yamlObj interface{}, jsonTarget *reflect.Value) (interface{}, error) { //nolint:gocyclo
-	var err error
-
-	// Resolve jsonTarget to a concrete value (i.e. not a pointer or an
-	// interface). We pass decodingNull as false because we're not actually
-	// decoding into the value, we're just checking if the ultimate target is a
-	// string.
-	if jsonTarget != nil {
-		ju, tu, pv := indirect(*jsonTarget, false)
-		// We have a JSON or Text Umarshaler at this level, so we can't be trying
-		// to decode into a string.
-		if ju != nil || tu != nil {
-			jsonTarget = nil
-		} else {
-			jsonTarget = &pv
-		}
-	}
-
-	// go-yaml v3 changed from v2 and now will provide map[string]interface{} by
-	// default and map[interface{}]interface{} when none of the keys strings.
-	// To get around this, we run a pre-loop to convert the map.
-	// JSON only supports strings as keys, so we must convert.
-
-	switch typedYAMLObj := yamlObj.(type) {
-	case map[interface{}]interface{}:
-		// From my reading of go-yaml v2 (specifically the resolve function),
-		// keys can only have the types string, int, int64, float64, binary
-		// (unsupported), or null (unsupported).
-		strMap := make(map[string]interface{})
-		for k, v := range typedYAMLObj {
-			// Resolve the key to a string first.
-			var keyString string
-			switch typedKey := k.(type) {
-			case string:
-				keyString = typedKey
-			case int:
-				keyString = strconv.Itoa(typedKey)
-			case int64:
-				// go-yaml will only return an int64 as a key if the system
-				// architecture is 32-bit and the key's value is between 32-bit
-				// and 64-bit. Otherwise the key type will simply be int.
-				keyString = strconv.FormatInt(typedKey, 10)
-			case float64:
-				// Float64 is now supported in keys
-				keyString = strconv.FormatFloat(typedKey, 'g', -1, 64)
-			case bool:
-				if typedKey {
-					keyString = "true"
-				} else {
-					keyString = "false"
-				}
-			default:
-				return nil, fmt.Errorf("unsupported map key of type: %s, key: %+#v, value: %+#v",
-					reflect.TypeOf(k), k, v)
-			}
-			strMap[keyString] = v
-		}
-		// replace yamlObj with our new string map
-		yamlObj = strMap
-	}
-
-	// If yamlObj is a number or a boolean, check if jsonTarget is a string -
-	// if so, coerce.  Else return normal.
-	// If yamlObj is a map or array, find the field that each key is
-	// unmarshaling to, and when you recurse pass the reflect.Value for that
-	// field back into this function.
-	switch typedYAMLObj := yamlObj.(type) {
-	case map[string]interface{}:
-		for k, v := range typedYAMLObj {
-
-			// jsonTarget should be a struct or a map. If it's a struct, find
-			// the field it's going to map to and pass its reflect.Value. If
-			// it's a map, find the element type of the map and pass the
-			// reflect.Value created from that type. If it's neither, just pass
-			// nil - JSON conversion will error for us if it's a real issue.
-			if jsonTarget != nil {
-				t := *jsonTarget
-				if t.Kind() == reflect.Struct {
-					keyBytes := []byte(k)
-					// Find the field that the JSON library would use.
-					var f *field
-					fields := cachedTypeFields(t.Type())
-					for i := range fields {
-						ff := &fields[i]
-						if bytes.Equal(ff.nameBytes, keyBytes) {
-							f = ff
-							break
-						}
-						// Do case-insensitive comparison.
-						if f == nil && ff.equalFold(ff.nameBytes, keyBytes) {
-							f = ff
-						}
-					}
-					if f != nil {
-						// Find the reflect.Value of the most preferential
-						// struct field.
-						jtf := t.Field(f.index[0])
-						typedYAMLObj[k], err = convertToJSONableObject(v, &jtf)
-						if err != nil {
-							return nil, err
-						}
-						continue
-					}
-				} else if t.Kind() == reflect.Map {
-					// Create a zero value of the map's element type to use as
-					// the JSON target.
-					jtv := reflect.Zero(t.Type().Elem())
-					typedYAMLObj[k], err = convertToJSONableObject(v, &jtv)
-					if err != nil {
-						return nil, err
-					}
-					continue
-				}
-			}
-			typedYAMLObj[k], err = convertToJSONableObject(v, nil)
-			if err != nil {
-				return nil, err
-			}
-		}
-		return typedYAMLObj, nil
-	case []interface{}:
-		// We need to recurse into arrays in case there are any
-		// map[interface{}]interface{}'s inside and to convert any
-		// numbers to strings.
-
-		// If jsonTarget is a slice (which it really should be), find the
-		// thing it's going to map to. If it's not a slice, just pass nil
-		// - JSON conversion will error for us if it's a real issue.
-		var jsonSliceElemValue *reflect.Value
-		if jsonTarget != nil {
-			t := *jsonTarget
-			if t.Kind() == reflect.Slice {
-				// By default slices point to nil, but we need a reflect.Value
-				// pointing to a value of the slice type, so we create one here.
-				ev := reflect.Indirect(reflect.New(t.Type().Elem()))
-				jsonSliceElemValue = &ev
-			}
-		}
-
-		// Make and use a new array.
-		arr := make([]interface{}, len(typedYAMLObj))
-		for i, v := range typedYAMLObj {
-			arr[i], err = convertToJSONableObject(v, jsonSliceElemValue)
-			if err != nil {
-				return nil, err
-			}
-		}
-		return arr, nil
-	default:
-		// If the target type is a string and the YAML type is a number,
-		// convert the YAML type to a string.
-		if jsonTarget != nil && (*jsonTarget).Kind() == reflect.String {
-			// Based on my reading of go-yaml, it may return int, int64,
-			// float64, or uint64.
-			var s string
-			switch typedVal := typedYAMLObj.(type) {
-			case int:
-				s = strconv.FormatInt(int64(typedVal), 10)
-			case int64:
-				s = strconv.FormatInt(typedVal, 10)
-			case float64:
-				s = strconv.FormatFloat(typedVal, 'g', -1, 64)
-			case uint64:
-				s = strconv.FormatUint(typedVal, 10)
-			case bool:
-				if typedVal {
-					s = "true"
-				} else {
-					s = "false"
-				}
-			}
-			if len(s) > 0 {
-				yamlObj = interface{}(s)
-			}
-		}
-		return yamlObj, nil
-	}
-}
diff --git a/vendor/github.com/mohae/deepcopy/.gitignore b/vendor/github.com/mohae/deepcopy/.gitignore
deleted file mode 100644
index 5846dd15..00000000
--- a/vendor/github.com/mohae/deepcopy/.gitignore
+++ /dev/null
@@ -1,26 +0,0 @@
-# Compiled Object files, Static and Dynamic libs (Shared Objects)
-*.o
-*.a
-*.so
-
-# Folders
-_obj
-_test
-
-# Architecture specific extensions/prefixes
-*.[568vq]
-[568vq].out
-
-*.cgo1.go
-*.cgo2.c
-_cgo_defun.c
-_cgo_gotypes.go
-_cgo_export.*
-
-_testmain.go
-
-*.exe
-*.test
-*~
-*.out
-*.log
diff --git a/vendor/github.com/mohae/deepcopy/.travis.yml b/vendor/github.com/mohae/deepcopy/.travis.yml
deleted file mode 100644
index fd47a8cf..00000000
--- a/vendor/github.com/mohae/deepcopy/.travis.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-language: go
-
-go:
-  - tip
-
-matrix:
-  allow_failures:
-    - go: tip
-
-script:
-  - go test ./...
diff --git a/vendor/github.com/mohae/deepcopy/LICENSE b/vendor/github.com/mohae/deepcopy/LICENSE
deleted file mode 100644
index 419673f0..00000000
--- a/vendor/github.com/mohae/deepcopy/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2014 Joel
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/vendor/github.com/mohae/deepcopy/README.md b/vendor/github.com/mohae/deepcopy/README.md
deleted file mode 100644
index f8184188..00000000
--- a/vendor/github.com/mohae/deepcopy/README.md
+++ /dev/null
@@ -1,8 +0,0 @@
-deepCopy
-========
-[![GoDoc](https://godoc.org/github.com/mohae/deepcopy?status.svg)](https://godoc.org/github.com/mohae/deepcopy)[![Build Status](https://travis-ci.org/mohae/deepcopy.png)](https://travis-ci.org/mohae/deepcopy)
-
-DeepCopy makes deep copies of things: unexported field values are not copied.
-
-## Usage
-    cpy := deepcopy.Copy(orig)
diff --git a/vendor/github.com/mohae/deepcopy/deepcopy.go b/vendor/github.com/mohae/deepcopy/deepcopy.go
deleted file mode 100644
index ba763ad0..00000000
--- a/vendor/github.com/mohae/deepcopy/deepcopy.go
+++ /dev/null
@@ -1,125 +0,0 @@
-// deepcopy makes deep copies of things. A standard copy will copy the
-// pointers: deep copy copies the values pointed to.  Unexported field
-// values are not copied.
-//
-// Copyright (c)2014-2016, Joel Scoble (github.com/mohae), all rights reserved.
-// License: MIT, for more details check the included LICENSE file.
-package deepcopy
-
-import (
-	"reflect"
-	"time"
-)
-
-// Interface for delegating copy process to type
-type Interface interface {
-	DeepCopy() interface{}
-}
-
-// Iface is an alias to Copy; this exists for backwards compatibility reasons.
-func Iface(iface interface{}) interface{} {
-	return Copy(iface)
-}
-
-// Copy creates a deep copy of whatever is passed to it and returns the copy
-// in an interface{}.  The returned value will need to be asserted to the
-// correct type.
-func Copy(src interface{}) interface{} {
-	if src == nil {
-		return nil
-	}
-
-	// Make the interface a reflect.Value
-	original := reflect.ValueOf(src)
-
-	// Make a copy of the same type as the original.
-	cpy := reflect.New(original.Type()).Elem()
-
-	// Recursively copy the original.
-	copyRecursive(original, cpy)
-
-	// Return the copy as an interface.
-	return cpy.Interface()
-}
-
-// copyRecursive does the actual copying of the interface. It currently has
-// limited support for what it can handle. Add as needed.
-func copyRecursive(original, cpy reflect.Value) {
-	// check for implement deepcopy.Interface
-	if original.CanInterface() {
-		if copier, ok := original.Interface().(Interface); ok {
-			cpy.Set(reflect.ValueOf(copier.DeepCopy()))
-			return
-		}
-	}
-
-	// handle according to original's Kind
-	switch original.Kind() {
-	case reflect.Ptr:
-		// Get the actual value being pointed to.
-		originalValue := original.Elem()
-
-		// if  it isn't valid, return.
-		if !originalValue.IsValid() {
-			return
-		}
-		cpy.Set(reflect.New(originalValue.Type()))
-		copyRecursive(originalValue, cpy.Elem())
-
-	case reflect.Interface:
-		// If this is a nil, don't do anything
-		if original.IsNil() {
-			return
-		}
-		// Get the value for the interface, not the pointer.
-		originalValue := original.Elem()
-
-		// Get the value by calling Elem().
-		copyValue := reflect.New(originalValue.Type()).Elem()
-		copyRecursive(originalValue, copyValue)
-		cpy.Set(copyValue)
-
-	case reflect.Struct:
-		t, ok := original.Interface().(time.Time)
-		if ok {
-			cpy.Set(reflect.ValueOf(t))
-			return
-		}
-		// Go through each field of the struct and copy it.
-		for i := 0; i < original.NumField(); i++ {
-			// The Type's StructField for a given field is checked to see if StructField.PkgPath
-			// is set to determine if the field is exported or not because CanSet() returns false
-			// for settable fields.  I'm not sure why.  -mohae
-			if original.Type().Field(i).PkgPath != "" {
-				continue
-			}
-			copyRecursive(original.Field(i), cpy.Field(i))
-		}
-
-	case reflect.Slice:
-		if original.IsNil() {
-			return
-		}
-		// Make a new slice and copy each element.
-		cpy.Set(reflect.MakeSlice(original.Type(), original.Len(), original.Cap()))
-		for i := 0; i < original.Len(); i++ {
-			copyRecursive(original.Index(i), cpy.Index(i))
-		}
-
-	case reflect.Map:
-		if original.IsNil() {
-			return
-		}
-		cpy.Set(reflect.MakeMap(original.Type()))
-		for _, key := range original.MapKeys() {
-			originalValue := original.MapIndex(key)
-			copyValue := reflect.New(originalValue.Type()).Elem()
-			copyRecursive(originalValue, copyValue)
-			copyKey := Copy(key.Interface())
-			cpy.SetMapIndex(reflect.ValueOf(copyKey), copyValue)
-		}
-
-	default:
-		cpy.Set(original)
-	}
-}
diff --git a/vendor/github.com/perimeterx/marshmallow/.gitignore b/vendor/github.com/perimeterx/marshmallow/.gitignore
deleted file mode 100644
index cf53c0a1..00000000
--- a/vendor/github.com/perimeterx/marshmallow/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-/.idea
-
-coverage.out
-profile.out
diff --git a/vendor/github.com/perimeterx/marshmallow/CHANGELOG.md b/vendor/github.com/perimeterx/marshmallow/CHANGELOG.md
deleted file mode 100644
index 92937d05..00000000
--- a/vendor/github.com/perimeterx/marshmallow/CHANGELOG.md
+++ /dev/null
@@ -1,49 +0,0 @@
-# Changelog
-
-All notable changes to this project will be documented in this file.
-
-The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
-and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
-
-## [[1.1.5](https://github.com/PerimeterX/marshmallow/compare/v1.1.4...v1.1.5)] - 2023-07-03
-
-### Added
-
-- Support for reporting errors from `HandleJSONData` - [info](https://github.com/PerimeterX/marshmallow/issues/27).
-
-## [[1.1.4](https://github.com/PerimeterX/marshmallow/compare/v1.1.3...v1.1.4)] - 2022-11-10
-
-### Fixed
-
-- Fixed problem with nested object implementing JSONDataHandler with skipPopulateStruct - [info](https://github.com/PerimeterX/marshmallow/issues/18).
-- Fixed problem with nested object implementing JSONDataHandler with skipPopulateStruct in ModeFailOverToOriginalValue - [info](https://github.com/PerimeterX/marshmallow/issues/19).
-
-## [[1.1.3](https://github.com/PerimeterX/marshmallow/compare/v1.1.2...v1.1.3)] - 2022-08-31
-
-### Added
-
-- Support for excluding known fields from the result map - [info](https://github.com/PerimeterX/marshmallow/issues/16).
-
-## [[1.1.2](https://github.com/PerimeterX/marshmallow/compare/v1.1.1...v1.1.2)] - 2022-08-23
-
-### Added
-
-- Support capturing nested unknown fields - [info](https://github.com/PerimeterX/marshmallow/issues/15).
-
-## [[1.1.1](https://github.com/PerimeterX/marshmallow/compare/v1.1.0...v1.1.1)] - 2022-08-21
-
-### Fixed
-
-- Fix parsing bug for unknown nested fields - [info](https://github.com/PerimeterX/marshmallow/issues/12).
-
-## [[1.1.0](https://github.com/PerimeterX/marshmallow/compare/v0.0.1...v1.1.0)] - 2022-07-10
-
-### Fixed
-
-- Fixed an issue with embedded fields - [info](https://github.com/PerimeterX/marshmallow/issues/9).
-
-## [[0.0.1](https://github.com/PerimeterX/marshmallow/tree/v0.0.1)] - 2022-04-21
-
-### Added
-
-- All functionality from our internal repository, after it has been stabilized on production for several months - [info](https://www.perimeterx.com/tech-blog/2022/boosting-up-json-performance-of-unstructured-structs-in-go/).
diff --git a/vendor/github.com/perimeterx/marshmallow/CODE_OF_CONDUCT.md b/vendor/github.com/perimeterx/marshmallow/CODE_OF_CONDUCT.md
deleted file mode 100644
index 0f6c45e7..00000000
--- a/vendor/github.com/perimeterx/marshmallow/CODE_OF_CONDUCT.md
+++ /dev/null
@@ -1,133 +0,0 @@
-
-# Contributor Covenant Code of Conduct
-
-## Our Pledge
-
-We as members, contributors, and leaders pledge to make participation in our
-community a harassment-free experience for everyone, regardless of age, body
-size, visible or invisible disability, ethnicity, sex characteristics, gender
-identity and expression, level of experience, education, socio-economic status,
-nationality, personal appearance, race, caste, color, religion, or sexual
-identity and orientation.
-
-We pledge to act and interact in ways that contribute to an open, welcoming,
-diverse, inclusive, and healthy community.
-
-## Our Standards
-
-Examples of behavior that contributes to a positive environment for our
-community include:
-
-* Demonstrating empathy and kindness toward other people
-* Being respectful of differing opinions, viewpoints, and experiences
-* Giving and gracefully accepting constructive feedback
-* Accepting responsibility and apologizing to those affected by our mistakes,
-  and learning from the experience
-* Focusing on what is best not just for us as individuals, but for the overall
-  community
-
-Examples of unacceptable behavior include:
-
-* The use of sexualized language or imagery, and sexual attention or advances of
-  any kind
-* Trolling, insulting or derogatory comments, and personal or political attacks
-* Public or private harassment
-* Publishing others' private information, such as a physical or email address,
-  without their explicit permission
-* Other conduct which could reasonably be considered inappropriate in a
-  professional setting
-
-## Enforcement Responsibilities
-
-Community leaders are responsible for clarifying and enforcing our standards of
-acceptable behavior and will take appropriate and fair corrective action in
-response to any behavior that they deem inappropriate, threatening, offensive,
-or harmful.
-
-Community leaders have the right and responsibility to remove, edit, or reject
-comments, commits, code, wiki edits, issues, and other contributions that are
-not aligned to this Code of Conduct, and will communicate reasons for moderation
-decisions when appropriate.
-
-## Scope
-
-This Code of Conduct applies within all community spaces, and also applies when
-an individual is officially representing the community in public spaces.
-Examples of representing our community include using an official e-mail address,
-posting via an official social media account, or acting as an appointed
-representative at an online or offline event.
-
-## Enforcement
-
-Instances of abusive, harassing, or otherwise unacceptable behavior may be
-reported to the community leaders responsible for enforcement at
-[opensource-conduct@humansecurity.com](mailto:opensource-conduct@humansecurity.com).
-All complaints will be reviewed and investigated promptly and fairly.
-
-All community leaders are obligated to respect the privacy and security of the
-reporter of any incident.
-
-## Enforcement Guidelines
-
-Community leaders will follow these Community Impact Guidelines in determining
-the consequences for any action they deem in violation of this Code of Conduct:
-
-### 1. Correction
-
-**Community Impact**: Use of inappropriate language or other behavior deemed
-unprofessional or unwelcome in the community.
-
-**Consequence**: A private, written warning from community leaders, providing
-clarity around the nature of the violation and an explanation of why the
-behavior was inappropriate. A public apology may be requested.
-
-### 2. Warning
-
-**Community Impact**: A violation through a single incident or series of
-actions.
-
-**Consequence**: A warning with consequences for continued behavior. No
-interaction with the people involved, including unsolicited interaction with
-those enforcing the Code of Conduct, for a specified period of time. This
-includes avoiding interactions in community spaces as well as external channels
-like social media. Violating these terms may lead to a temporary or permanent
-ban.
-
-### 3. Temporary Ban
-
-**Community Impact**: A serious violation of community standards, including
-sustained inappropriate behavior.
-
-**Consequence**: A temporary ban from any sort of interaction or public
-communication with the community for a specified period of time. No public or
-private interaction with the people involved, including unsolicited interaction
-with those enforcing the Code of Conduct, is allowed during this period.
-Violating these terms may lead to a permanent ban.
-
-### 4. Permanent Ban
-
-**Community Impact**: Demonstrating a pattern of violation of community
-standards, including sustained inappropriate behavior, harassment of an
-individual, or aggression toward or disparagement of classes of individuals.
-
-**Consequence**: A permanent ban from any sort of public interaction within the
-community.
-
-## Attribution
-
-This Code of Conduct is adapted from the [Contributor Covenant][homepage],
-version 2.1, available at
-[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
-
-Community Impact Guidelines were inspired by
-[Mozilla's code of conduct enforcement ladder][Mozilla CoC].
-
-For answers to common questions about this code of conduct, see the FAQ at
-[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at
-[https://www.contributor-covenant.org/translations][translations].
-
-[homepage]: https://www.contributor-covenant.org
-[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
-[Mozilla CoC]: https://github.com/mozilla/diversity
-[FAQ]: https://www.contributor-covenant.org/faq
-[translations]: https://www.contributor-covenant.org/translations
diff --git a/vendor/github.com/perimeterx/marshmallow/CONTRIBUTING.md b/vendor/github.com/perimeterx/marshmallow/CONTRIBUTING.md
deleted file mode 100644
index a265c9ab..00000000
--- a/vendor/github.com/perimeterx/marshmallow/CONTRIBUTING.md
+++ /dev/null
@@ -1,47 +0,0 @@
-# How To Contribute
-
-We'd love to accept your patches and contributions to this project. There are just a few guidelines you need to follow which are described in detail below.
-
-## 1. Fork this repo
-
-You should create a fork of this project in your account and work from there. You can create a fork by clicking the fork button in GitHub.
-
-## 2. One feature, one branch
-
-Work for each new feature/issue should occur in its own branch. To create a new branch from the command line:
-```shell
-git checkout -b my-new-feature
-```
-where "my-new-feature" describes what you're working on.
-
-## 3. Add unit tests
-If your contribution modifies existing or adds new code please add corresponding unit tests for this.
-
-## 4. Ensure that the build passes
-
-Run
-```shell
-go test -v
-```
-and check that there are no errors.
-
-## 5. Add documentation for new or updated functionality
-
-Please review the [README.md](README.md) file in this project to see if they are impacted by your change and update them accordingly.
-
-## 6. Add to CHANGELOG.md
-
-Any notable changes should be recorded in the CHANGELOG.md following the [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) conventions.
-
-## 7. Submit a pull request and describe the change
-
-Push your changes to your branch and open a pull request against the parent repo on GitHub. The project administrators will review your pull request and respond with feedback.
-
-# How your contribution gets merged
-
-Upon pull request submission, your code will be reviewed by the maintainers. They will confirm at least the following:
-
-- Tests run successfully (unit, coverage, style).
-- Contribution policy has been followed.
-
-A (human) reviewer will need to sign off on your pull request before it can be merged.
diff --git a/vendor/github.com/perimeterx/marshmallow/LICENSE b/vendor/github.com/perimeterx/marshmallow/LICENSE
deleted file mode 100644
index 8ffe8691..00000000
--- a/vendor/github.com/perimeterx/marshmallow/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2022 PerimeterX
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/vendor/github.com/perimeterx/marshmallow/README.md b/vendor/github.com/perimeterx/marshmallow/README.md
deleted file mode 100644
index bfa90363..00000000
--- a/vendor/github.com/perimeterx/marshmallow/README.md
+++ /dev/null
@@ -1,205 +0,0 @@
-# Marshmallow
-
-![Marshmallow Campfire](https://raw.githubusercontent.com/PerimeterX/marshmallow/assets/campfire.png)
-
-[![CodeQL Status](https://img.shields.io/github/actions/workflow/status/perimeterx/marshmallow/codeql.yml?branch=main&logo=github&label=CodeQL)](https://github.com/PerimeterX/marshmallow/actions/workflows/codeql.yml?query=branch%3Amain++)
-[![Run Tests](https://img.shields.io/github/actions/workflow/status/perimeterx/marshmallow/go.yml?branch=main&logo=github&label=Run%20Tests)](https://github.com/PerimeterX/marshmallow/actions/workflows/go.yml?query=branch%3Amain)
-[![Dependency Review](https://img.shields.io/github/actions/workflow/status/perimeterx/marshmallow/dependency-review.yml?logo=github&label=Dependency%20Review)](https://github.com/PerimeterX/marshmallow/actions/workflows/dependency-review.yml?query=branch%3Amain)
-[![Go Report Card](https://goreportcard.com/badge/github.com/perimeterx/marshmallow)](https://goreportcard.com/report/github.com/perimeterx/marshmallow)
-![Manual Code Coverage](https://img.shields.io/badge/coverage-92.6%25-green)
-[![Go Reference](https://pkg.go.dev/badge/github.com/perimeterx/marshmallow.svg)](https://pkg.go.dev/github.com/perimeterx/marshmallow)
-[![Licence](https://img.shields.io/github/license/perimeterx/marshmallow)](LICENSE)
-[![Latest Release](https://img.shields.io/github/v/release/perimeterx/marshmallow)](https://github.com/PerimeterX/marshmallow/releases)
-![Top Languages](https://img.shields.io/github/languages/top/perimeterx/marshmallow)
-[![Issues](https://img.shields.io/github/issues-closed/perimeterx/marshmallow?color=%238250df&logo=github)](https://github.com/PerimeterX/marshmallow/issues)
-[![Pull Requests](https://img.shields.io/github/issues-pr-closed-raw/perimeterx/marshmallow?color=%238250df&label=merged%20pull%20requests&logo=github)](https://github.com/PerimeterX/marshmallow/pulls)
-[![Commits](https://img.shields.io/github/last-commit/perimeterx/marshmallow)](https://github.com/PerimeterX/marshmallow/commits/main)
-[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)](CODE_OF_CONDUCT.md)
-
-<img align="right" width="200" alt="marshmallow-gopher" src="https://raw.githubusercontent.com/PerimeterX/marshmallow/assets/sticker7.png">
-
-Marshmallow package provides a simple API to perform flexible and performant JSON unmarshalling in Go.
-
-Marshmallow specializes in dealing with **unstructured struct** - when some fields are known and some aren't,
-with zero performance overhead nor extra coding needed.
-While unmarshalling, marshmallow allows fully retaining the original data and access
-it via a typed struct and a dynamic map.
-
-## Contents
-
-- [Install](#install)
-- [Usage](#usage)
-- [Performance Benchmark And Alternatives](#performance-benchmark-and-alternatives)
-- [When Should I Use Marshmallow](#when-should-i-use-marshmallow)
-- [API](#api)
-
-## Install
-
-```sh
-go get -u github.com/perimeterx/marshmallow
-```
-
-## Usage
-
-```go
-package main
-
-import (
-	"fmt"
-	"github.com/perimeterx/marshmallow"
-)
-
-func main() {
-	v := struct {
-		Foo string `json:"foo"`
-		Boo []int  `json:"boo"`
-	}{}
-	result, err := marshmallow.Unmarshal([]byte(`{"foo":"bar","boo":[1,2,3],"goo":12.6}`), &v)
-	fmt.Printf("v=%+v, result=%+v, err=%v", v, result, err)
-	// Output: v={Foo:bar Boo:[1 2 3]}, result=map[boo:[1 2 3] foo:bar goo:12.6], err=<nil>
-}
-```
-
-**Examples can be found [here](example_test.go)**
-
-## Performance Benchmark And Alternatives
-
-Marshmallow performs best when dealing with mixed data - when some fields are known and some are unknown.
-More info [below](#when-should-i-use-marshmallow).
-Other solutions are available for this kind of use case, each solution is explained and documented in the link below.
-The full benchmark test can be found
-[here](https://github.com/PerimeterX/marshmallow/blob/8c5bba9e6dc0033f4324eca554737089a99f6e5e/benchmark_test.go).
-
-|Benchmark|Iterations|Time/Iteration|Bytes Allocated|Allocations|
-|--|--|--|--|--|
-|[unmarshall twice](https://github.com/PerimeterX/marshmallow/blob/8c5bba9e6dc0033f4324eca554737089a99f6e5e/benchmark_test.go#L40)|228693|5164 ns/op|1640 B/op|51 allocs/op|
-|[raw map](https://github.com/PerimeterX/marshmallow/blob/8c5bba9e6dc0033f4324eca554737089a99f6e5e/benchmark_test.go#L66)|232236|5116 ns/op|2296 B/op|53 allocs/op|
-|[go codec](https://github.com/PerimeterX/marshmallow/blob/8c5bba9e6dc0033f4324eca554737089a99f6e5e/benchmark_test.go#L121)|388442|3077 ns/op|2512 B/op|37 allocs/op|
-|[marshmallow](https://github.com/PerimeterX/marshmallow/blob/8c5bba9e6dc0033f4324eca554737089a99f6e5e/benchmark_test.go#L16)|626168|1853 ns/op|608 B/op|18 allocs/op|
-|[marshmallow without populating struct](https://github.com/PerimeterX/marshmallow/blob/8c5bba9e6dc0033f4324eca554737089a99f6e5e/benchmark_test.go#L162)|678616|1751 ns/op|608 B/op|18 allocs/op|
-
-![marshmallow performance comparison](https://raw.githubusercontent.com/PerimeterX/marshmallow/e45088ca20d4ea5be4143d418d12da63a68d6dfd/performance-chart.svg)
-
-**Marshmallow provides the best performance (up to X3 faster) while not requiring any extra coding.**
-In fact, marshmallow performs as fast as normal `json.Unmarshal` call, however, such a call causes loss of data for all
-the fields that did not match the given struct. With marshmallow you never lose any data.
-
-|Benchmark|Iterations|Time/Iteration|Bytes Allocated|Allocations|
-|--|--|--|--|--|
-|[marshmallow](https://github.com/PerimeterX/marshmallow/blob/8c5bba9e6dc0033f4324eca554737089a99f6e5e/benchmark_test.go#L16)|626168|1853 ns/op|608 B/op|18 allocs/op|
-|[native library](https://github.com/PerimeterX/marshmallow/blob/8c5bba9e6dc0033f4324eca554737089a99f6e5e/benchmark_test.go#L143)|652106|1845 ns/op|304 B/op|11 allocs/op|
-|[marshmallow without populating struct](https://github.com/PerimeterX/marshmallow/blob/8c5bba9e6dc0033f4324eca554737089a99f6e5e/benchmark_test.go#L162)|678616|1751 ns/op|608 B/op|18 allocs/op|
-
-## When Should I Use Marshmallow
-
-Marshmallow is best suited for use cases where you are interested in all the input data, but you have predetermined
-information only about a subset of it. For instance, if you plan to reference two specific fields from the data, then
-iterate all the data and apply some generic logic. How does it look with the native library:
-
-```go
-func isAllowedToDrive(data []byte) (bool, error) {
-	result := make(map[string]interface{})
-	err := json.Unmarshal(data, &result)
-	if err != nil {
-		return false, err
-	}
-
-	age, ok := result["age"]
-	if !ok {
-		return false, nil
-	}
-	a, ok := age.(float64)
-	if !ok {
-		return false, nil
-	}
-	if a < 17 {
-		return false, nil
-	}
-
-	hasDriversLicense, ok := result["has_drivers_license"]
-	if !ok {
-		return false, nil
-	}
-	h, ok := hasDriversLicense.(bool)
-	if !ok {
-		return false, nil
-	}
-	if !h {
-		return false, nil
-	}
-
-	for key := range result {
-		if strings.Contains(key, "prior_conviction") {
-			return false, nil
-		}
-	}
-
-	return true, nil
-}
-```
-
-And with marshmallow:
-
-```go
-func isAllowedToDrive(data []byte) (bool, error) {
-	v := struct {
-		Age               int  `json:"age"`
-		HasDriversLicense bool `json:"has_drivers_license"`
-	}{}
-	result, err := marshmallow.Unmarshal(data, &v)
-	if err != nil {
-		return false, err
-	}
-
-	if v.Age < 17 || !v.HasDriversLicense {
-		return false, nil
-	}
-
-	for key := range result {
-		if strings.Contains(key, "prior_conviction") {
-			return false, nil
-		}
-	}
-
-	return true, nil
-}
-```
-
-## API
-
-Marshmallow exposes two main API functions -
-[Unmarshal](https://github.com/PerimeterX/marshmallow/blob/0e0218ab860be8a4b5f57f5ff239f281c250c5da/unmarshal.go#L27)
-and
-[UnmarshalFromJSONMap](https://github.com/PerimeterX/marshmallow/blob/0e0218ab860be8a4b5f57f5ff239f281c250c5da/unmarshal_from_json_map.go#L37).
-While unmarshalling, marshmallow supports the following optional options:
-
-* Setting the mode for handling invalid data using the [WithMode](https://github.com/PerimeterX/marshmallow/blob/0e0218ab860be8a4b5f57f5ff239f281c250c5da/options.go#L30) function.
-* Excluding known fields from the result map using the [WithExcludeKnownFieldsFromMap](https://github.com/PerimeterX/marshmallow/blob/457669ae9973895584f2636eabfc104140d3b700/options.go#L50) function. 
-* Skipping struct population to boost performance using the [WithSkipPopulateStruct](https://github.com/PerimeterX/marshmallow/blob/0e0218ab860be8a4b5f57f5ff239f281c250c5da/options.go#L41) function.
-
-In order to capture unknown nested fields, structs must implement [JSONDataErrorHandler](https://github.com/PerimeterX/marshmallow/blob/195c994aa6e3e0852601ad9cf65bcddef0dd7479/options.go#L76).
-More info [here](https://github.com/PerimeterX/marshmallow/issues/15). 
-
-Marshmallow also supports caching of refection information using 
-[EnableCache](https://github.com/PerimeterX/marshmallow/blob/d3500aa5b0f330942b178b155da933c035dd3906/cache.go#L40)
-and
-[EnableCustomCache](https://github.com/PerimeterX/marshmallow/blob/d3500aa5b0f330942b178b155da933c035dd3906/cache.go#L35).
-
-## Contact and Contribute
-
-Reporting issues and requesting features may be done in our [GitHub issues page](https://github.com/PerimeterX/marshmallow/issues).
-Discussions may be conducted in our [GitHub discussions page](https://github.com/PerimeterX/marshmallow/discussions).
-For any further questions or comments you can reach us out at [open-source@humansecurity.com](mailto:open-source@humansecurity.com).
-
-Any type of contribution is warmly welcome and appreciated ❤️
-Please read our [contribution](CONTRIBUTING.md) guide for more info.
-
-If you're looking for something to get started with, tou can always follow our [issues page](https://github.com/PerimeterX/marshmallow/issues) and look for
-[good first issue](https://github.com/PerimeterX/marshmallow/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) and
-[help wanted](https://github.com/PerimeterX/marshmallow/issues?q=is%3Aissue+label%3A%22help+wanted%22+is%3Aopen) labels.
-
-## Marshmallow Logo
-
-Marshmallow logo and assets by [Adva Rom](https://www.linkedin.com/in/adva-rom-7a6738127/) are licensed under a <a rel="license" href="http://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International License</a>.<br />
-
-![Marshmallow Logo](https://raw.githubusercontent.com/PerimeterX/marshmallow/assets/marshmallow.png)
diff --git a/vendor/github.com/perimeterx/marshmallow/cache.go b/vendor/github.com/perimeterx/marshmallow/cache.go
deleted file mode 100644
index a67cea6d..00000000
--- a/vendor/github.com/perimeterx/marshmallow/cache.go
+++ /dev/null
@@ -1,63 +0,0 @@
-// Copyright 2022 PerimeterX. All rights reserved.
-// Use of this source code is governed by a MIT style
-// license that can be found in the LICENSE file.
-
-package marshmallow
-
-import (
-	"reflect"
-	"sync"
-)
-
-// Cache allows unmarshalling to use a cached version of refection information about types.
-// Cache interface follows the implementation of sync.Map, but you may wrap any cache implementation
-// to match it. This allows you to control max cache size, eviction policies and any other caching aspect.
-type Cache interface {
-	// Load returns the value stored in the map for a key, or nil if no value is present.
-	// The ok result indicates whether value was found in the map.
-	Load(key interface{}) (interface{}, bool)
-	// Store sets the value for a key.
-	Store(key, value interface{})
-}
-
-// EnableCustomCache enables unmarshalling cache. It allows reuse of refection information about types needed
-// to perform the unmarshalling. A use of such cache can boost up unmarshalling by x1.4.
-// Check out benchmark_test.go for an example.
-//
-// EnableCustomCache is not thread safe! Do not use it while performing unmarshalling, or it will
-// cause an unsafe race condition. Typically, EnableCustomCache should be called once when the process boots.
-//
-// Caching is disabled by default. The use of this function allows enabling it and controlling the
-// behavior of the cache. Typically, the use of sync.Map should be good enough. The caching mechanism
-// stores a single map per struct type. If you plan to unmarshal a huge amount of distinct
-// struct it may get to consume a lot of resources, in which case you have the control to choose
-// the caching implementation you like and its setup.
-func EnableCustomCache(c Cache) {
-	cache = c
-}
-
-// EnableCache enables unmarshalling cache with default implementation. More info at EnableCustomCache.
-func EnableCache() {
-	EnableCustomCache(&sync.Map{})
-}
-
-var cache Cache
-
-func cacheLookup(t reflect.Type) map[string]reflectionInfo {
-	if cache == nil {
-		return nil
-	}
-	value, exists := cache.Load(t)
-	if !exists {
-		return nil
-	}
-	result, _ := value.(map[string]reflectionInfo)
-	return result
-}
-
-func cacheStore(t reflect.Type, fields map[string]reflectionInfo) {
-	if cache == nil {
-		return
-	}
-	cache.Store(t, fields)
-}
diff --git a/vendor/github.com/perimeterx/marshmallow/doc.go b/vendor/github.com/perimeterx/marshmallow/doc.go
deleted file mode 100644
index c179e657..00000000
--- a/vendor/github.com/perimeterx/marshmallow/doc.go
+++ /dev/null
@@ -1,10 +0,0 @@
-/*
-Package marshmallow provides a simple API to perform flexible and performant JSON unmarshalling.
-Unlike other packages, marshmallow supports unmarshalling of some known and some unknown fields
-with zero performance overhead nor extra coding needed. While unmarshalling,
-marshmallow allows fully retaining the original data and access it via a typed struct and a
-dynamic map.
-
-https://github.com/perimeterx/marshmallow
-*/
-package marshmallow
diff --git a/vendor/github.com/perimeterx/marshmallow/errors.go b/vendor/github.com/perimeterx/marshmallow/errors.go
deleted file mode 100644
index c4d341cc..00000000
--- a/vendor/github.com/perimeterx/marshmallow/errors.go
+++ /dev/null
@@ -1,101 +0,0 @@
-// Copyright 2022 PerimeterX. All rights reserved.
-// Use of this source code is governed by a MIT style
-// license that can be found in the LICENSE file.
-
-package marshmallow
-
-import (
-	"errors"
-	"fmt"
-	"github.com/mailru/easyjson/jlexer"
-	"reflect"
-	"strings"
-)
-
-var (
-	// ErrInvalidInput indicates the input JSON is invalid
-	ErrInvalidInput = errors.New("invalid JSON input")
-
-	// ErrInvalidValue indicates the target struct has invalid type
-	ErrInvalidValue = errors.New("unexpected non struct value")
-)
-
-// MultipleLexerError indicates one or more unmarshalling errors during JSON bytes decode
-type MultipleLexerError struct {
-	Errors []*jlexer.LexerError
-}
-
-func (m *MultipleLexerError) Error() string {
-	errs := make([]string, len(m.Errors))
-	for i, lexerError := range m.Errors {
-		errs[i] = lexerError.Error()
-	}
-	return strings.Join(errs, ", ")
-}
-
-// MultipleError indicates one or more unmarshalling errors during JSON map decode
-type MultipleError struct {
-	Errors []error
-}
-
-func (m *MultipleError) Error() string {
-	errs := make([]string, len(m.Errors))
-	for i, lexerError := range m.Errors {
-		errs[i] = lexerError.Error()
-	}
-	return strings.Join(errs, ", ")
-}
-
-// ParseError indicates a JSON map decode error
-type ParseError struct {
-	Reason string
-	Path   string
-}
-
-func (p *ParseError) Error() string {
-	return fmt.Sprintf("parse error: %s in %s", p.Reason, p.Path)
-}
-
-func newUnexpectedTypeParseError(expectedType reflect.Type, path []string) *ParseError {
-	return &ParseError{
-		Reason: fmt.Sprintf("expected type %s", externalTypeName(expectedType)),
-		Path:   strings.Join(path, "."),
-	}
-}
-
-func newUnsupportedTypeParseError(unsupportedType reflect.Type, path []string) *ParseError {
-	return &ParseError{
-		Reason: fmt.Sprintf("unsupported type %s", externalTypeName(unsupportedType)),
-		Path:   strings.Join(path, "."),
-	}
-}
-
-func addUnexpectedTypeLexerError(lexer *jlexer.Lexer, expectedType reflect.Type) {
-	lexer.AddNonFatalError(fmt.Errorf("expected type %s", externalTypeName(expectedType)))
-}
-
-func addUnsupportedTypeLexerError(lexer *jlexer.Lexer, unsupportedType reflect.Type) {
-	lexer.AddNonFatalError(fmt.Errorf("unsupported type %s", externalTypeName(unsupportedType)))
-}
-
-func externalTypeName(t reflect.Type) string {
-	switch t.Kind() {
-	case reflect.String:
-		return "string"
-	case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Uint,
-		reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr, reflect.Float32,
-		reflect.Float64, reflect.Complex64, reflect.Complex128:
-		return "number"
-	case reflect.Bool:
-		return "boolean"
-	case reflect.Array, reflect.Slice:
-		return "array"
-	case reflect.Interface:
-		return "any"
-	case reflect.Map, reflect.Struct:
-		return "object"
-	case reflect.Ptr:
-		return externalTypeName(t.Elem())
-	}
-	return "invalid"
-}
diff --git a/vendor/github.com/perimeterx/marshmallow/options.go b/vendor/github.com/perimeterx/marshmallow/options.go
deleted file mode 100644
index ff97d336..00000000
--- a/vendor/github.com/perimeterx/marshmallow/options.go
+++ /dev/null
@@ -1,96 +0,0 @@
-// Copyright 2022 PerimeterX. All rights reserved.
-// Use of this source code is governed by a MIT style
-// license that can be found in the LICENSE file.
-
-package marshmallow
-
-// Mode dictates the unmarshalling mode.
-// Each mode is self documented below.
-type Mode uint8
-
-const (
-	// ModeFailOnFirstError is the default mode. It makes unmarshalling terminate
-	// immediately on any kind of error. This error will then be returned.
-	ModeFailOnFirstError Mode = iota
-
-	// ModeAllowMultipleErrors mode makes unmarshalling keep decoding even if
-	// errors are encountered. In case of such error, the erroneous value will be omitted from the result.
-	// Eventually, all errors will all be returned, alongside the partial result.
-	ModeAllowMultipleErrors
-
-	// ModeFailOverToOriginalValue mode makes unmarshalling keep decoding even if
-	// errors are encountered. In case of such error, the original external value be placed in the
-	// result data, even though it does not meet the schematic requirements.
-	// Eventually, all errors will be returned, alongside the full result. Note that the result map
-	// will contain values that do not match the struct schema.
-	ModeFailOverToOriginalValue
-)
-
-// WithMode is an UnmarshalOption function to set the unmarshalling mode.
-func WithMode(mode Mode) UnmarshalOption {
-	return func(options *unmarshalOptions) {
-		options.mode = mode
-	}
-}
-
-// WithSkipPopulateStruct is an UnmarshalOption function to set the skipPopulateStruct option.
-// Skipping populate struct is set to false by default.
-// If you do not intend to use the struct value once unmarshalling is finished, set this
-// option to true to boost performance. This would mean the struct fields will not be set
-// with values, but rather it will only be used as the target schema when populating the result map.
-func WithSkipPopulateStruct(skipPopulateStruct bool) UnmarshalOption {
-	return func(options *unmarshalOptions) {
-		options.skipPopulateStruct = skipPopulateStruct
-	}
-}
-
-// WithExcludeKnownFieldsFromMap is an UnmarshalOption function to set the excludeKnownFieldsFromMap option.
-// Exclude known fields flag is set to false by default.
-// When the flag is set to true, fields specified in the input struct (known fields) will be excluded from the result map
-func WithExcludeKnownFieldsFromMap(excludeKnownFields bool) UnmarshalOption {
-	return func(options *unmarshalOptions) {
-		options.excludeKnownFieldsFromMap = excludeKnownFields
-	}
-}
-
-type UnmarshalOption func(*unmarshalOptions)
-
-type unmarshalOptions struct {
-	mode                      Mode
-	skipPopulateStruct        bool
-	excludeKnownFieldsFromMap bool
-}
-
-func buildUnmarshalOptions(options []UnmarshalOption) *unmarshalOptions {
-	result := &unmarshalOptions{}
-	for _, option := range options {
-		option(result)
-	}
-	return result
-}
-
-// JSONDataErrorHandler allow types to handle JSON data as maps.
-// Types should implement this interface if they wish to act on the map representation of parsed JSON input.
-// This is mainly used to allow nested objects to capture unknown fields and leverage marshmallow's abilities.
-// If HandleJSONData returns an error, it will be propagated as an unmarshal error
-type JSONDataErrorHandler interface {
-	HandleJSONData(data map[string]interface{}) error
-}
-
-// Deprecated: use JSONDataErrorHandler instead
-type JSONDataHandler interface {
-	HandleJSONData(data map[string]interface{})
-}
-
-func asJSONDataHandler(value interface{}) (func(map[string]interface{}) error, bool) {
-	if handler, ok := value.(JSONDataErrorHandler); ok {
-		return handler.HandleJSONData, true
-	}
-	if handler, ok := value.(JSONDataHandler); ok {
-		return func(m map[string]interface{}) error {
-			handler.HandleJSONData(m)
-			return nil
-		}, true
-	}
-	return nil, false
-}
diff --git a/vendor/github.com/perimeterx/marshmallow/reflection.go b/vendor/github.com/perimeterx/marshmallow/reflection.go
deleted file mode 100644
index 9b7d88ce..00000000
--- a/vendor/github.com/perimeterx/marshmallow/reflection.go
+++ /dev/null
@@ -1,197 +0,0 @@
-// Copyright 2022 PerimeterX. All rights reserved.
-// Use of this source code is governed by a MIT style
-// license that can be found in the LICENSE file.
-
-package marshmallow
-
-import (
-	"encoding/json"
-	"reflect"
-	"strings"
-)
-
-var unmarshalerType = reflect.TypeOf((*json.Unmarshaler)(nil)).Elem()
-
-type reflectionInfo struct {
-	path []int
-	t    reflect.Type
-}
-
-func (r reflectionInfo) field(target reflect.Value) reflect.Value {
-	current := target
-	for _, i := range r.path {
-		current = current.Field(i)
-	}
-	return current
-}
-
-func mapStructFields(target interface{}) map[string]reflectionInfo {
-	t := reflectStructType(target)
-	result := cacheLookup(t)
-	if result != nil {
-		return result
-	}
-	result = make(map[string]reflectionInfo, t.NumField())
-	mapTypeFields(t, result, nil)
-	cacheStore(t, result)
-	return result
-}
-
-func mapTypeFields(t reflect.Type, result map[string]reflectionInfo, path []int) {
-	num := t.NumField()
-	for i := 0; i < num; i++ {
-		field := t.Field(i)
-		fieldPath := append(path, i)
-		if field.Anonymous && field.Type.Kind() == reflect.Struct {
-			mapTypeFields(field.Type, result, fieldPath)
-			continue
-		}
-		name := field.Tag.Get("json")
-		if name == "" || name == "-" {
-			continue
-		}
-		if index := strings.Index(name, ","); index > -1 {
-			name = name[:index]
-		}
-		result[name] = reflectionInfo{
-			path: fieldPath,
-			t:    field.Type,
-		}
-	}
-}
-
-func reflectStructValue(target interface{}) reflect.Value {
-	v := reflect.ValueOf(target)
-	for v.Kind() == reflect.Ptr {
-		v = v.Elem()
-	}
-	return v
-}
-
-func reflectStructType(target interface{}) reflect.Type {
-	t := reflect.TypeOf(target)
-	for t.Kind() == reflect.Ptr {
-		t = t.Elem()
-	}
-	return t
-}
-
-var primitiveConverters = map[reflect.Kind]func(v interface{}) (interface{}, bool){
-	reflect.Bool: func(v interface{}) (interface{}, bool) {
-		res, ok := v.(bool)
-		return res, ok
-	},
-	reflect.Int: func(v interface{}) (interface{}, bool) {
-		res, ok := v.(float64)
-		if ok {
-			return int(res), true
-		}
-		return v, false
-	},
-	reflect.Int8: func(v interface{}) (interface{}, bool) {
-		res, ok := v.(float64)
-		if ok {
-			return int8(res), true
-		}
-		return v, false
-	},
-	reflect.Int16: func(v interface{}) (interface{}, bool) {
-		res, ok := v.(float64)
-		if ok {
-			return int16(res), true
-		}
-		return v, false
-	},
-	reflect.Int32: func(v interface{}) (interface{}, bool) {
-		res, ok := v.(float64)
-		if ok {
-			return int32(res), true
-		}
-		return v, false
-	},
-	reflect.Int64: func(v interface{}) (interface{}, bool) {
-		res, ok := v.(float64)
-		if ok {
-			return int64(res), true
-		}
-		return v, false
-	},
-	reflect.Uint: func(v interface{}) (interface{}, bool) {
-		res, ok := v.(float64)
-		if ok {
-			return uint(res), true
-		}
-		return v, false
-	},
-	reflect.Uint8: func(v interface{}) (interface{}, bool) {
-		res, ok := v.(float64)
-		if ok {
-			return uint8(res), true
-		}
-		return v, false
-	},
-	reflect.Uint16: func(v interface{}) (interface{}, bool) {
-		res, ok := v.(float64)
-		if ok {
-			return uint16(res), true
-		}
-		return v, false
-	},
-	reflect.Uint32: func(v interface{}) (interface{}, bool) {
-		res, ok := v.(float64)
-		if ok {
-			return uint32(res), true
-		}
-		return v, false
-	},
-	reflect.Uint64: func(v interface{}) (interface{}, bool) {
-		res, ok := v.(float64)
-		if ok {
-			return uint64(res), true
-		}
-		return v, false
-	},
-	reflect.Float32: func(v interface{}) (interface{}, bool) {
-		res, ok := v.(float64)
-		if ok {
-			return float32(res), true
-		}
-		return v, false
-	},
-	reflect.Float64: func(v interface{}) (interface{}, bool) {
-		res, ok := v.(float64)
-		if ok {
-			return res, true
-		}
-		return v, false
-	},
-	reflect.Interface: func(v interface{}) (interface{}, bool) {
-		return v, true
-	},
-	reflect.String: func(v interface{}) (interface{}, bool) {
-		res, ok := v.(string)
-		return res, ok
-	},
-}
-
-func assignValue(field reflect.Value, value interface{}) {
-	if value == nil {
-		return
-	}
-	reflectValue := reflect.ValueOf(value)
-	if reflectValue.Type().AssignableTo(field.Type()) {
-		field.Set(reflectValue)
-	}
-}
-
-func isValidValue(v interface{}) bool {
-	value := reflect.ValueOf(v)
-	return value.Kind() == reflect.Ptr && value.Elem().Kind() == reflect.Struct && !value.IsNil()
-}
-
-func safeReflectValue(t reflect.Type, v interface{}) reflect.Value {
-	if v == nil {
-		return reflect.Zero(t)
-	}
-	return reflect.ValueOf(v)
-}
diff --git a/vendor/github.com/perimeterx/marshmallow/unmarshal.go b/vendor/github.com/perimeterx/marshmallow/unmarshal.go
deleted file mode 100644
index 160ea30c..00000000
--- a/vendor/github.com/perimeterx/marshmallow/unmarshal.go
+++ /dev/null
@@ -1,383 +0,0 @@
-// Copyright 2022 PerimeterX. All rights reserved.
-// Use of this source code is governed by a MIT style
-// license that can be found in the LICENSE file.
-
-package marshmallow
-
-import (
-	"encoding/json"
-	"github.com/mailru/easyjson/jlexer"
-	"reflect"
-)
-
-// Unmarshal parses the JSON-encoded object in data and stores the values
-// in the struct pointed to by v and in the returned map.
-// If v is nil or not a pointer to a struct, Unmarshal returns an ErrInvalidValue.
-// If data is not a valid JSON or not a JSON object Unmarshal returns an ErrInvalidInput.
-//
-// Unmarshal follows the rules of json.Unmarshal with the following exceptions:
-// - All input fields are stored in the resulting map, including fields that do not exist in the
-// struct pointed by v.
-// - Unmarshal only operates on JSON object inputs. It will reject all other types of input
-// by returning ErrInvalidInput.
-// - Unmarshal only operates on struct values. It will reject all other types of v by
-// returning ErrInvalidValue.
-// - Unmarshal supports three types of Mode values. Each mode is self documented and affects
-// how Unmarshal behaves.
-func Unmarshal(data []byte, v interface{}, options ...UnmarshalOption) (map[string]interface{}, error) {
-	if !isValidValue(v) {
-		return nil, ErrInvalidValue
-	}
-	opts := buildUnmarshalOptions(options)
-	useMultipleErrors := opts.mode == ModeAllowMultipleErrors || opts.mode == ModeFailOverToOriginalValue
-	d := &decoder{options: opts, lexer: &jlexer.Lexer{Data: data, UseMultipleErrors: useMultipleErrors}}
-	result := make(map[string]interface{})
-	if d.lexer.IsNull() {
-		d.lexer.Skip()
-	} else if !d.lexer.IsDelim('{') {
-		return nil, ErrInvalidInput
-	} else {
-		d.populateStruct(false, v, result)
-	}
-	d.lexer.Consumed()
-	if useMultipleErrors {
-		errors := d.lexer.GetNonFatalErrors()
-		if len(errors) == 0 {
-			return result, nil
-		}
-		return result, &MultipleLexerError{Errors: errors}
-	}
-	err := d.lexer.Error()
-	if err != nil {
-		return nil, err
-	}
-	return result, nil
-}
-
-type decoder struct {
-	options *unmarshalOptions
-	lexer   *jlexer.Lexer
-}
-
-func (d *decoder) populateStruct(forcePopulate bool, structInstance interface{}, result map[string]interface{}) (interface{}, bool) {
-	doPopulate := !d.options.skipPopulateStruct || forcePopulate
-	var structValue reflect.Value
-	if doPopulate {
-		structValue = reflectStructValue(structInstance)
-	}
-	fields := mapStructFields(structInstance)
-	var clone map[string]interface{}
-	if d.options.mode == ModeFailOverToOriginalValue {
-		clone = make(map[string]interface{}, len(fields))
-	}
-	d.lexer.Delim('{')
-	for !d.lexer.IsDelim('}') {
-		key := d.lexer.UnsafeFieldName(false)
-		d.lexer.WantColon()
-		refInfo, exists := fields[key]
-		if exists {
-			value, isValidType := d.valueByReflectType(refInfo.t)
-			if isValidType {
-				if value != nil && doPopulate {
-					field := refInfo.field(structValue)
-					assignValue(field, value)
-				}
-				if !d.options.excludeKnownFieldsFromMap {
-					if result != nil {
-						result[key] = value
-					}
-					if clone != nil {
-						clone[key] = value
-					}
-				}
-			} else {
-				switch d.options.mode {
-				case ModeFailOnFirstError:
-					return nil, false
-				case ModeFailOverToOriginalValue:
-					if !forcePopulate {
-						result[key] = value
-					} else {
-						clone[key] = value
-						d.lexer.WantComma()
-						d.drainLexerMap(clone)
-						return clone, false
-					}
-				}
-			}
-		} else {
-			value := d.lexer.Interface()
-			if result != nil {
-				result[key] = value
-			}
-			if clone != nil {
-				clone[key] = value
-			}
-		}
-		d.lexer.WantComma()
-	}
-	d.lexer.Delim('}')
-	return structInstance, true
-}
-
-func (d *decoder) valueByReflectType(t reflect.Type) (interface{}, bool) {
-	if t.Implements(unmarshalerType) {
-		result := reflect.New(t.Elem()).Interface()
-		d.valueFromCustomUnmarshaler(result.(json.Unmarshaler))
-		return result, true
-	}
-	if reflect.PtrTo(t).Implements(unmarshalerType) {
-		value := reflect.New(t)
-		d.valueFromCustomUnmarshaler(value.Interface().(json.Unmarshaler))
-		return value.Elem().Interface(), true
-	}
-	kind := t.Kind()
-	if converter := primitiveConverters[kind]; converter != nil {
-		v := d.lexer.Interface()
-		if v == nil {
-			return nil, true
-		}
-		converted, ok := converter(v)
-		if !ok {
-			addUnexpectedTypeLexerError(d.lexer, t)
-			return v, false
-		}
-		return converted, true
-	}
-	switch kind {
-	case reflect.Slice:
-		return d.buildSlice(t)
-	case reflect.Array:
-		return d.buildArray(t)
-	case reflect.Map:
-		return d.buildMap(t)
-	case reflect.Struct:
-		value, valid := d.buildStruct(t)
-		if value == nil {
-			return nil, valid
-		}
-		if !valid {
-			return value, false
-		}
-		return reflect.ValueOf(value).Elem().Interface(), valid
-	case reflect.Ptr:
-		if t.Elem().Kind() == reflect.Struct {
-			return d.buildStruct(t.Elem())
-		}
-		value, valid := d.valueByReflectType(t.Elem())
-		if value == nil {
-			return nil, valid
-		}
-		if !valid {
-			return value, false
-		}
-		result := reflect.New(reflect.TypeOf(value))
-		result.Elem().Set(reflect.ValueOf(value))
-		return result.Interface(), valid
-	}
-	addUnsupportedTypeLexerError(d.lexer, t)
-	return nil, false
-}
-
-func (d *decoder) buildSlice(sliceType reflect.Type) (interface{}, bool) {
-	if d.lexer.IsNull() {
-		d.lexer.Skip()
-		return nil, true
-	}
-	if !d.lexer.IsDelim('[') {
-		addUnexpectedTypeLexerError(d.lexer, sliceType)
-		return d.lexer.Interface(), false
-	}
-	elemType := sliceType.Elem()
-	d.lexer.Delim('[')
-	var sliceValue reflect.Value
-	if !d.lexer.IsDelim(']') {
-		sliceValue = reflect.MakeSlice(sliceType, 0, 4)
-	} else {
-		sliceValue = reflect.MakeSlice(sliceType, 0, 0)
-	}
-	for !d.lexer.IsDelim(']') {
-		current, valid := d.valueByReflectType(elemType)
-		if !valid {
-			if d.options.mode != ModeFailOverToOriginalValue {
-				d.drainLexerArray(nil)
-				return nil, true
-			}
-			result := d.cloneReflectArray(sliceValue, -1)
-			result = append(result, current)
-			return d.drainLexerArray(result), true
-		}
-		sliceValue = reflect.Append(sliceValue, safeReflectValue(elemType, current))
-		d.lexer.WantComma()
-	}
-	d.lexer.Delim(']')
-	return sliceValue.Interface(), true
-}
-
-func (d *decoder) buildArray(arrayType reflect.Type) (interface{}, bool) {
-	if d.lexer.IsNull() {
-		d.lexer.Skip()
-		return nil, true
-	}
-	if !d.lexer.IsDelim('[') {
-		addUnexpectedTypeLexerError(d.lexer, arrayType)
-		return d.lexer.Interface(), false
-	}
-	elemType := arrayType.Elem()
-	arrayValue := reflect.New(arrayType).Elem()
-	d.lexer.Delim('[')
-	for i := 0; !d.lexer.IsDelim(']'); i++ {
-		current, valid := d.valueByReflectType(elemType)
-		if !valid {
-			if d.options.mode != ModeFailOverToOriginalValue {
-				d.drainLexerArray(nil)
-				return nil, true
-			}
-			result := d.cloneReflectArray(arrayValue, i)
-			result = append(result, current)
-			return d.drainLexerArray(result), true
-		}
-		if current != nil {
-			arrayValue.Index(i).Set(reflect.ValueOf(current))
-		}
-		d.lexer.WantComma()
-	}
-	d.lexer.Delim(']')
-	return arrayValue.Interface(), true
-}
-
-func (d *decoder) buildMap(mapType reflect.Type) (interface{}, bool) {
-	if d.lexer.IsNull() {
-		d.lexer.Skip()
-		return nil, true
-	}
-	if !d.lexer.IsDelim('{') {
-		addUnexpectedTypeLexerError(d.lexer, mapType)
-		return d.lexer.Interface(), false
-	}
-	d.lexer.Delim('{')
-	keyType := mapType.Key()
-	valueType := mapType.Elem()
-	mapValue := reflect.MakeMap(mapType)
-	for !d.lexer.IsDelim('}') {
-		key, valid := d.valueByReflectType(keyType)
-		if !valid {
-			if d.options.mode != ModeFailOverToOriginalValue {
-				d.lexer.WantColon()
-				d.lexer.Interface()
-				d.lexer.WantComma()
-				d.drainLexerMap(make(map[string]interface{}))
-				return nil, true
-			}
-			strKey, _ := key.(string)
-			d.lexer.WantColon()
-			value := d.lexer.Interface()
-			result := d.cloneReflectMap(mapValue)
-			result[strKey] = value
-			d.lexer.WantComma()
-			d.drainLexerMap(result)
-			return result, true
-		}
-		d.lexer.WantColon()
-		value, valid := d.valueByReflectType(valueType)
-		if !valid {
-			if d.options.mode != ModeFailOverToOriginalValue {
-				d.lexer.WantComma()
-				d.drainLexerMap(make(map[string]interface{}))
-				return nil, true
-			}
-			strKey, _ := key.(string)
-			result := d.cloneReflectMap(mapValue)
-			result[strKey] = value
-			d.lexer.WantComma()
-			d.drainLexerMap(result)
-			return result, true
-		}
-		mapValue.SetMapIndex(safeReflectValue(keyType, key), safeReflectValue(valueType, value))
-		d.lexer.WantComma()
-	}
-	d.lexer.Delim('}')
-	return mapValue.Interface(), true
-}
-
-func (d *decoder) buildStruct(structType reflect.Type) (interface{}, bool) {
-	if d.lexer.IsNull() {
-		d.lexer.Skip()
-		return nil, true
-	}
-	if !d.lexer.IsDelim('{') {
-		addUnexpectedTypeLexerError(d.lexer, structType)
-		return d.lexer.Interface(), false
-	}
-	value := reflect.New(structType).Interface()
-	handler, ok := asJSONDataHandler(value)
-	if !ok {
-		return d.populateStruct(true, value, nil)
-	}
-	data := make(map[string]interface{})
-	result, valid := d.populateStruct(true, value, data)
-	if !valid {
-		return result, false
-	}
-	err := handler(data)
-	if err != nil {
-		d.lexer.AddNonFatalError(err)
-		return result, false
-	}
-	return result, true
-}
-
-func (d *decoder) valueFromCustomUnmarshaler(unmarshaler json.Unmarshaler) {
-	data := d.lexer.Raw()
-	if !d.lexer.Ok() {
-		return
-	}
-	err := unmarshaler.UnmarshalJSON(data)
-	if err != nil {
-		d.lexer.AddNonFatalError(err)
-	}
-}
-
-func (d *decoder) cloneReflectArray(value reflect.Value, length int) []interface{} {
-	if length == -1 {
-		length = value.Len()
-	}
-	result := make([]interface{}, length)
-	for i := 0; i < length; i++ {
-		result[i] = value.Index(i).Interface()
-	}
-	return result
-}
-
-func (d *decoder) cloneReflectMap(mapValue reflect.Value) map[string]interface{} {
-	l := mapValue.Len()
-	result := make(map[string]interface{}, l)
-	for _, key := range mapValue.MapKeys() {
-		value := mapValue.MapIndex(key)
-		strKey, _ := key.Interface().(string)
-		result[strKey] = value.Interface()
-	}
-	return result
-}
-
-func (d *decoder) drainLexerArray(target []interface{}) interface{} {
-	d.lexer.WantComma()
-	for !d.lexer.IsDelim(']') {
-		current := d.lexer.Interface()
-		target = append(target, current)
-		d.lexer.WantComma()
-	}
-	d.lexer.Delim(']')
-	return target
-}
-
-func (d *decoder) drainLexerMap(target map[string]interface{}) {
-	for !d.lexer.IsDelim('}') {
-		key := d.lexer.String()
-		d.lexer.WantColon()
-		value := d.lexer.Interface()
-		target[key] = value
-		d.lexer.WantComma()
-	}
-	d.lexer.Delim('}')
-}
diff --git a/vendor/github.com/perimeterx/marshmallow/unmarshal_from_json_map.go b/vendor/github.com/perimeterx/marshmallow/unmarshal_from_json_map.go
deleted file mode 100644
index 0907f8f8..00000000
--- a/vendor/github.com/perimeterx/marshmallow/unmarshal_from_json_map.go
+++ /dev/null
@@ -1,295 +0,0 @@
-// Copyright 2022 PerimeterX. All rights reserved.
-// Use of this source code is governed by a MIT style
-// license that can be found in the LICENSE file.
-
-package marshmallow
-
-import (
-	"reflect"
-)
-
-// UnmarshalerFromJSONMap is the interface implemented by types
-// that can unmarshal a JSON description of themselves.
-// In case you want to implement custom unmarshalling, json.Unmarshaler only supports
-// receiving the data as []byte. However, while unmarshalling from JSON map,
-// the data is not available as a raw []byte and converting to it will significantly
-// hurt performance. Thus, if you wish to implement a custom unmarshalling on a type
-// that is being unmarshalled from a JSON map, you need to implement
-// UnmarshalerFromJSONMap interface.
-type UnmarshalerFromJSONMap interface {
-	UnmarshalJSONFromMap(data interface{}) error
-}
-
-// UnmarshalFromJSONMap parses the JSON map data and stores the values
-// in the struct pointed to by v and in the returned map.
-// If v is nil or not a pointer to a struct, UnmarshalFromJSONMap returns an ErrInvalidValue.
-//
-// UnmarshalFromJSONMap follows the rules of json.Unmarshal with the following exceptions:
-// - All input fields are stored in the resulting map, including fields that do not exist in the
-// struct pointed by v.
-// - UnmarshalFromJSONMap receive a JSON map instead of raw bytes. The given input map is assumed
-// to be a JSON map, meaning it should only contain the following types: bool, string, float64,
-// []interface, and map[string]interface{}. Other types will cause decoding to return unexpected results.
-// - UnmarshalFromJSONMap only operates on struct values. It will reject all other types of v by
-// returning ErrInvalidValue.
-// - UnmarshalFromJSONMap supports three types of Mode values. Each mode is self documented and affects
-// how UnmarshalFromJSONMap behaves.
-func UnmarshalFromJSONMap(data map[string]interface{}, v interface{}, options ...UnmarshalOption) (map[string]interface{}, error) {
-	if !isValidValue(v) {
-		return nil, ErrInvalidValue
-	}
-	opts := buildUnmarshalOptions(options)
-	d := &mapDecoder{options: opts}
-	result := make(map[string]interface{})
-	if data != nil {
-		d.populateStruct(false, nil, data, v, result)
-	}
-	if opts.mode == ModeAllowMultipleErrors || opts.mode == ModeFailOverToOriginalValue {
-		if len(d.errs) == 0 {
-			return result, nil
-		}
-		return result, &MultipleError{Errors: d.errs}
-	}
-	if d.err != nil {
-		return nil, d.err
-	}
-	return result, nil
-}
-
-var unmarshalerFromJSONMapType = reflect.TypeOf((*UnmarshalerFromJSONMap)(nil)).Elem()
-
-type mapDecoder struct {
-	options *unmarshalOptions
-	err     error
-	errs    []error
-}
-
-func (m *mapDecoder) populateStruct(forcePopulate bool, path []string, data map[string]interface{}, structInstance interface{}, result map[string]interface{}) (interface{}, bool) {
-	doPopulate := !m.options.skipPopulateStruct || forcePopulate
-	var structValue reflect.Value
-	if doPopulate {
-		structValue = reflectStructValue(structInstance)
-	}
-	fields := mapStructFields(structInstance)
-	for key, inputValue := range data {
-		refInfo, exists := fields[key]
-		if exists {
-			value, isValidType := m.valueByReflectType(append(path, key), inputValue, refInfo.t)
-			if isValidType {
-				if value != nil && doPopulate {
-					field := refInfo.field(structValue)
-					assignValue(field, value)
-				}
-				if !m.options.excludeKnownFieldsFromMap {
-					if result != nil {
-						result[key] = value
-					}
-				}
-			} else {
-				switch m.options.mode {
-				case ModeFailOnFirstError:
-					return nil, false
-				case ModeFailOverToOriginalValue:
-					if !forcePopulate {
-						result[key] = value
-					} else {
-						return data, false
-					}
-				}
-			}
-		} else {
-			if result != nil {
-				result[key] = inputValue
-			}
-		}
-	}
-	return structInstance, true
-}
-
-func (m *mapDecoder) valueByReflectType(path []string, v interface{}, t reflect.Type) (interface{}, bool) {
-	if t.Implements(unmarshalerFromJSONMapType) {
-		result := reflect.New(t.Elem()).Interface()
-		m.valueFromCustomUnmarshaler(v, result.(UnmarshalerFromJSONMap))
-		return result, true
-	}
-	if reflect.PtrTo(t).Implements(unmarshalerFromJSONMapType) {
-		value := reflect.New(t)
-		m.valueFromCustomUnmarshaler(v, value.Interface().(UnmarshalerFromJSONMap))
-		return value.Elem().Interface(), true
-	}
-	kind := t.Kind()
-	if converter := primitiveConverters[kind]; converter != nil {
-		if v == nil {
-			return nil, true
-		}
-		converted, ok := converter(v)
-		if !ok {
-			m.addError(newUnexpectedTypeParseError(t, path))
-			return v, false
-		}
-		return converted, true
-	}
-	switch kind {
-	case reflect.Slice:
-		return m.buildSlice(path, v, t)
-	case reflect.Array:
-		return m.buildArray(path, v, t)
-	case reflect.Map:
-		return m.buildMap(path, v, t)
-	case reflect.Struct:
-		value, valid := m.buildStruct(path, v, t)
-		if value == nil {
-			return nil, valid
-		}
-		if !valid {
-			return value, false
-		}
-		return reflect.ValueOf(value).Elem().Interface(), valid
-	case reflect.Ptr:
-		if t.Elem().Kind() == reflect.Struct {
-			return m.buildStruct(path, v, t.Elem())
-		}
-		value, valid := m.valueByReflectType(path, v, t.Elem())
-		if value == nil {
-			return nil, valid
-		}
-		if !valid {
-			return value, false
-		}
-		result := reflect.New(reflect.TypeOf(value))
-		result.Elem().Set(reflect.ValueOf(value))
-		return result.Interface(), valid
-	}
-	m.addError(newUnsupportedTypeParseError(t, path))
-	return nil, false
-}
-
-func (m *mapDecoder) buildSlice(path []string, v interface{}, sliceType reflect.Type) (interface{}, bool) {
-	if v == nil {
-		return nil, true
-	}
-	arr, ok := v.([]interface{})
-	if !ok {
-		m.addError(newUnexpectedTypeParseError(sliceType, path))
-		return v, false
-	}
-	elemType := sliceType.Elem()
-	var sliceValue reflect.Value
-	if len(arr) > 0 {
-		sliceValue = reflect.MakeSlice(sliceType, 0, 4)
-	} else {
-		sliceValue = reflect.MakeSlice(sliceType, 0, 0)
-	}
-	for _, element := range arr {
-		current, valid := m.valueByReflectType(path, element, elemType)
-		if !valid {
-			if m.options.mode != ModeFailOverToOriginalValue {
-				return nil, true
-			}
-			return v, true
-		}
-		sliceValue = reflect.Append(sliceValue, safeReflectValue(elemType, current))
-	}
-	return sliceValue.Interface(), true
-}
-
-func (m *mapDecoder) buildArray(path []string, v interface{}, arrayType reflect.Type) (interface{}, bool) {
-	if v == nil {
-		return nil, true
-	}
-	arr, ok := v.([]interface{})
-	if !ok {
-		m.addError(newUnexpectedTypeParseError(arrayType, path))
-		return v, false
-	}
-	elemType := arrayType.Elem()
-	arrayValue := reflect.New(arrayType).Elem()
-	for i, element := range arr {
-		current, valid := m.valueByReflectType(path, element, elemType)
-		if !valid {
-			if m.options.mode != ModeFailOverToOriginalValue {
-				return nil, true
-			}
-			return v, true
-		}
-		if current != nil {
-			arrayValue.Index(i).Set(reflect.ValueOf(current))
-		}
-	}
-	return arrayValue.Interface(), true
-}
-
-func (m *mapDecoder) buildMap(path []string, v interface{}, mapType reflect.Type) (interface{}, bool) {
-	if v == nil {
-		return nil, true
-	}
-	mp, ok := v.(map[string]interface{})
-	if !ok {
-		m.addError(newUnexpectedTypeParseError(mapType, path))
-		return v, false
-	}
-	keyType := mapType.Key()
-	valueType := mapType.Elem()
-	mapValue := reflect.MakeMap(mapType)
-	for inputKey, inputValue := range mp {
-		keyPath := append(path, inputKey)
-		key, valid := m.valueByReflectType(keyPath, inputKey, keyType)
-		if !valid {
-			if m.options.mode != ModeFailOverToOriginalValue {
-				return nil, true
-			}
-			return v, true
-		}
-		value, valid := m.valueByReflectType(keyPath, inputValue, valueType)
-		if !valid {
-			if m.options.mode != ModeFailOverToOriginalValue {
-				return nil, true
-			}
-			return v, true
-		}
-		mapValue.SetMapIndex(safeReflectValue(keyType, key), safeReflectValue(valueType, value))
-	}
-	return mapValue.Interface(), true
-}
-
-func (m *mapDecoder) buildStruct(path []string, v interface{}, structType reflect.Type) (interface{}, bool) {
-	if v == nil {
-		return nil, true
-	}
-	mp, ok := v.(map[string]interface{})
-	if !ok {
-		m.addError(newUnexpectedTypeParseError(structType, path))
-		return v, false
-	}
-	value := reflect.New(structType).Interface()
-	handler, ok := asJSONDataHandler(value)
-	if !ok {
-		return m.populateStruct(true, path, mp, value, nil)
-	}
-	data := make(map[string]interface{})
-	result, valid := m.populateStruct(true, path, mp, value, data)
-	if !valid {
-		return result, false
-	}
-	err := handler(data)
-	if err != nil {
-		m.addError(err)
-		return result, false
-	}
-	return result, true
-}
-
-func (m *mapDecoder) valueFromCustomUnmarshaler(data interface{}, unmarshaler UnmarshalerFromJSONMap) {
-	err := unmarshaler.UnmarshalJSONFromMap(data)
-	if err != nil {
-		m.addError(err)
-	}
-}
-
-func (m *mapDecoder) addError(err error) {
-	if m.options.mode == ModeFailOnFirstError {
-		m.err = err
-	} else {
-		m.errs = append(m.errs, err)
-	}
-}
diff --git a/vendor/github.com/posener/complete/readme.md b/vendor/github.com/posener/complete/README.md
similarity index 100%
rename from vendor/github.com/posener/complete/readme.md
rename to vendor/github.com/posener/complete/README.md
diff --git a/vendor/modules.txt b/vendor/modules.txt
index 7610cf05..e2176731 100644
--- a/vendor/modules.txt
+++ b/vendor/modules.txt
@@ -81,9 +81,6 @@ github.com/cloudflare/circl/sign/ed448
 # github.com/fatih/color v1.16.0
 ## explicit; go 1.17
 github.com/fatih/color
-# github.com/getkin/kin-openapi v0.123.0
-## explicit; go 1.20
-github.com/getkin/kin-openapi/openapi3
 # github.com/go-openapi/analysis v0.22.2
 ## explicit; go 1.19
 github.com/go-openapi/analysis
@@ -118,6 +115,8 @@ github.com/go-openapi/swag
 # github.com/go-openapi/validate v0.23.0
 ## explicit; go 1.19
 github.com/go-openapi/validate
+# github.com/go-test/deep v1.0.8
+## explicit; go 1.16
 # github.com/golang/protobuf v1.5.3
 ## explicit; go 1.9
 github.com/golang/protobuf/proto
@@ -275,9 +274,6 @@ github.com/huandu/xstrings
 # github.com/imdario/mergo v0.3.16
 ## explicit; go 1.13
 github.com/imdario/mergo
-# github.com/invopop/yaml v0.2.0
-## explicit; go 1.14
-github.com/invopop/yaml
 # github.com/josharian/intern v1.0.0
 ## explicit; go 1.5
 github.com/josharian/intern
@@ -310,18 +306,12 @@ github.com/mitchellh/mapstructure
 # github.com/mitchellh/reflectwalk v1.0.2
 ## explicit
 github.com/mitchellh/reflectwalk
-# github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826
-## explicit
-github.com/mohae/deepcopy
 # github.com/oklog/run v1.1.0
 ## explicit; go 1.13
 github.com/oklog/run
 # github.com/oklog/ulid v1.3.1
 ## explicit
 github.com/oklog/ulid
-# github.com/perimeterx/marshmallow v1.1.5
-## explicit; go 1.17
-github.com/perimeterx/marshmallow
 # github.com/posener/complete v1.2.3
 ## explicit; go 1.13
 github.com/posener/complete